Professional Documents
Culture Documents
Rafael Santos
Instituto Nacional de Pesquisas Espaciais www.lac.inpe.br/rafael.santos
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Tpicos
1 2 3 4 5 6 7
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Objetivos e Pr-Requisitos
Objetivos do Tutorial
Entender mais sobre processamento de imagens digitais. Entender melhor que tarefas de processamento de imagens podem ser feitas com Java. Entender um pouco da Java Advanced Imaging API. Ver cdigo que funciona!
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Objetivos e Pr-Requisitos
Assumimos que...
Todos tem ao menos uma idia do que uma imagem digital. Todos conhecem Java (J2SE), em especial:
Encapsulamento. Herana. Swing e Threads (desejvel).
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Hello World
Por qu em Java?
Preciso comentar sobre popularidade e exibilidade de Java? Temos APIs para representao, visualizao e I/O simples de imagens como parte do J2SE. Temos a API Java Advanced Imaging para operaes muito mais complexas! E a questo da performance?
Melhor do que esperado! No estou preocupado com real time. Mais valor clareza e simplicidade de cdigo.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Por qu em Java?
Hello World
Vantagens e Desvantagens
Hello World
1 2 3 4 5 6 7 8
public static void main(String[] args) throws IOException { BufferedImage image = ImageIO.read(new File(args[0])); String imageInfo = "Dimensions: "+image.getWidth()+"x"+ image.getHeight()+" Bands: "+ image.getRaster().getNumBands(); ImageIcon icon = new ImageIcon(image); JLabel imageLabel = new JLabel(icon);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Por qu em Java?
Hello World
Vantagens e Desvantagens
Hello World
9 10 11 12 13 14 15 16 17 18 19 20
JFrame frame = new JFrame(); frame.setTitle("Display Image: "+args[0]); Container contentPane = frame.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JScrollPane(imageLabel), BorderLayout.CENTER); contentPane.add(new JLabel(imageInfo), BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,400); frame.setVisible(true); }
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Por qu em Java?
Hello World
Vantagens e Desvantagens
Hello World
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Hello World
Por qu em Java?
Vantagens e Desvantagens
Vantagens e Desvantagens
Vantagens Linguagem j conhecida. Baixo custo. Performance adequada. Elegncia e clareza de cdigo. API extensiva e exvel. J2SE e J2EE.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Imagem = Matriz de pixels. Pixel = medida ou conjunto de medidas ou ndice para tabela. Podemos ter metadados.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
No somos limitados a imagens como as de cmeras digitais e scanners! Pixels podem ter mais que trs valores associados a eles. Pixels podem ter valores fora do tradicional intervalo [0, 255]. Pixels no precisam representar valores inteiros ou positivos! Exemplos: Imagens multispectrais e hiperspectrais. Imagens de modelos de terreno, mdicas (Raio-X), etc.
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Modelos de cores
Direto: cada pixel corresponde a um array de valores.
9 9 1 3 4 6
0 2 2 2 2 6
9 5 9 8 4 7
6 6 6 4 7 5
9 2 5 5 2 10 8 7 6 7 2 6
Index Red Green Blue 0 0 0 0 1 64 64 64 2 128 128 128 3 192 192 192 4 255 255 255 5 255 0 0 6 0 255 0 7 0 0 255 8 255 255 0 9 255 0 255 10 0 255 255
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Outros conceitos
uma cor ou regio da imagem pode ser renderizada como transparente (isto , no ser renderizada). Translucncia: cada pixel pode ter um percentual de transparncia.
Transparncia:
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Antes de comear...
Como imagens podem ser de vrios tipos e estruturas, precisamos entender sua representao.
Awt permite representao rpida de imagens simples (visuais). JAI permite representao de imagens complexas. Modelo de representao bastante similar.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Modelo de representao -
BufferedImage
BufferedImage
ColorModel
ColorSpace
Raster
SampleModel DataBuffer
Mais simples, imagens padro do awt. Podem ser criadas com construtor de BufferedImage. Pixels podem ser acessados com BufferedImage.getRaster().
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Algoritmo bsico: Abrir imagem. Obter dimenses a partir da imagem. Obter raster a partir da imagem. Alocar memria para pixels. Obter pixels a partir do raster. Manipular pixels.
1 2 3 4 5 6
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
public static void main(String[] args) throws IOException { BufferedImage image = ImageIO.read(new File(args[0])); int width = image.getWidth(); int height = image.getHeight(); int nbands = image.getSampleModel().getNumBands(); Raster inputRaster = image.getData(); int[] pixels = new int[nbands*width*height]; inputRaster.getPixels(0,0,width,height,pixels);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
for(int h=0;h<height;h++) for(int w=0;w<width;w++) { int offset = h*width*nbands+w*nbands; System.out.print("at ("+w+","+h+"): "); for(int band=0;band<nbands;band++) System.out.print(pixels[offset+band]+" "); } }
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Acesso pode ser randmico. Gasto de memria para grandes imagens (java.lang.OutOfMemoryError): No execute o cdigo como mostrado com grandes imagens. OK, podemos paginar manualmente.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
public static void main(String[] args) throws IOException { BufferedImage image = ImageIO.read(new File(args[0])); int width = image.getWidth(); int height = image.getHeight(); int nbands = image.getSampleModel().getNumBands(); Raster inputRaster = image.getData(); int[] pixels = new int[nbands*width*height]; inputRaster.getPixels(0,0,width,height,pixels);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
for(int h=0;h<height;h++) for(int w=0;w<width;w++) { int rgb = image.getRGB(w,h); int r = (int)((rgb&0x00FF0000)>>>16); // Red level int g = (int)((rgb&0x0000FF00)>>>8); // Green level int b = (int) (rgb&0x000000FF); // Blue level System.out.print("at ("+w+","+h+"): "); System.out.println(r+","+g+","+b); } }
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Mapeamento (x , y ) pixel direto! Podemos usar alpha ou transparncia/translucncia. Funciona para imagens indexadas ou no. Ainda problemas/limitaes com memria.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Algoritmo bsico: Criar imagem. Obter raster a partir da imagem. Modicar amostras (samples) ou pixels da imagem. Gravar imagem em disco ou visualizar.
1 2 3 4
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
public static void main(String[] args) throws IOException { int width = 256; int height = 256; BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_USHORT_GRAY); WritableRaster raster = image.getRaster(); for(int h=0;h<height;h++) for(int w=0;w<width;w++) raster.setSample(w,h,0,h*w); ImageIO.write(image,"PNG",new File("scale.png")); }
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
public static void main(String[] args) throws IOException { int width = 256; // Dimensions of the image int height = 256; int[] imageData = new int[4]; // ARGB! BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB); WritableRaster raster = image.getRaster();
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
for(int w=0;w<width;w++) for(int h=0;h<height;h++) { imageData[0] = 0; // R imageData[1] = w; // G imageData[2] = h; // B imageData[3] = 100; // A raster.setPixel(w,h,imageData); } ImageIO.write(image,"PNG",new File("argbpattern.png")); }
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo AWT para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens
Armazenando: Usar ImageIO.write(imagem,formato,File) com formato compatvel com a imagem. Visualizando: Criar ImageIcon com a imagem e JLabel com o ImageIcon. Modicar escala com getScaledInstance(novoW,novoH,hints).
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Antes de comear...
JAI tem suporte para imagens de grande porte (tiling). Flexibilidade complexidade.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Modelo de representao -
PlanarImage
PlanarImage
ColorModel
ColorSpace
Raster
SampleModel DataBuffer
Igual ao de BufferedImage. Classe PlanarImage pode ter layouts diferentes. Classe TiledImage representa tiles, herda de PlanarImage.
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Tiles e TiledImage
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Algoritmo bsico: Abrir imagem. Obter dimenses a partir da imagem. Obter um iterador a partir da imagem. Obter pixels a partir do iterador. Manipular pixels.
1 2 3 4 5
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Abrir imagem. Obter dimenses a partir da imagem. Obter um iterador a partir da imagem.
1 2 3 4 5 6 7 8 9 10
public static void main (String[] args) { PlanarImage pi = JAI.create("fileload", args[0]); int width = pi.getWidth(); int height = pi.getHeight(); SampleModel sm = pi.getSampleModel(); int nbands = sm.getNumBands(); int[] pixel = new int[nbands]; RandomIter iterator = RandomIterFactory.create(pi, null);
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
11 12 13 14 15 16 17 18 19 20
for(int h=0;h<height;h++) for(int w=0;w<width;w++) { iterator.getPixel(w,h,pixel); System.out.print("at ("+w+","+h+"): "); for(int band=0;band<nbands;band++) System.out.print(pixel[band]+","); System.out.println(); } }
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Mapeamento (x , y ) pixel direto! Qualquer nmero de bandas, qualquer tipo de pixel. Qualquer tamanho de imagem! No funciona para imagens indexadas. Podemos tambm usar RectIterator: Lemos pixel com RectIterator.getPixel(pixel); Avanamos leitor com RectIterator.nextPixel();
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Algoritmo bsico: Criar array (unidimensional) da imagem. Criar DataBuffer a partir do array. Criar SampleModel a partir do DataBuffer. Criar ColorModel a partir do DataBuffer. Criar Raster a partir do SampleModel e DataBuffer. Criar TiledImage a partir do SampleModel e ColorModel. Colocar Raster na TiledImage.
1 2 3 4 5 6 7 Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
1 2 3 4 5 6 7 8 9
public static void main(String[] args) throws IOException { int width = 256; // Dimensions of the image int height = 256; int[] imageDataSingleArray = new int[width*height]; int count = 0; for(int h=0;h<height;h++) for(int w=0;w<width;w++) imageDataSingleArray[count++] = h*w*4;
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Criar DataBuffer a partir do array. Criar SampleModel a partir do DataBuffer. Criar ColorModel a partir do DataBuffer.
10 11 12 13 14 15 16 17
DataBufferInt dbuffer = new DataBufferInt(imageDataSingleArray, width*height); SampleModel sampleModel = RasterFactory.createBandedSampleModel( DataBuffer.TYPE_INT,width,height,1); ColorModel colorModel = PlanarImage.createColorModel(sampleModel);
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Criar Raster a partir do SampleModel e DataBuffer. Criar TiledImage a partir do SampleModel e ColorModel. Colocar Raster na TiledImage.
18 19 20 21 22 23 24 25
Raster raster = RasterFactory.createWritableRaster(sampleModel,dbuffer, new Point(0,0)); TiledImage tiledImage = new TiledImage(0,0,width,height,0,0, sampleModel,colorModel); tiledImage.setData(raster); }
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Armazenando imagens
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Visualizando imagens
Converter para BufferedImage, usar ImageIcon/JLabel e correr risco de excesso de uso de memria. Usar DisplayJAI.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
O Modelo JAI para Representao de Imagens Lendo Imagens e Obtendo Pixels Criando Imagens na Memria Armazenando e Visualizando Imagens Comentrios sobre JAI
Vantagens de usar
JAI
Flexibilidade total na estrutura das imagens. Suporte a tiling. Possibilidade de usar execuo no-imediata. Mais complicado! possvel misturar PlanarImage/TiledImage e BufferedImage:
PlanarImage.getAsBufferedImage() JAI.create("AWTImage",imagem)
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operadores de
JAI
JAI.create("fileload","a.tif") retorna uma PlanarImage. JAI.create("filestore",image,"a.tif","TIFF") grava uma PlanarImage. JAI.create("AWTImage",imagem) cria uma PlanarImage a partir de uma BufferedImage.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operadores de
JAI
Muitos outros operadores implementados. Muitos usam ParameterBlocks para informao de parmetros adicionais. Algoritmo bsico:
1 2 3 4 5
Criar uma instncia de PlanarImage. Criar uma instncia de ParameterBlock. Usar ParameterBlock.addSource(image). Usar ParameterBlock.add() para adicionar parmetros. Criar uma nova PlanarImage com JAI.create("operator",ParameterBlock).
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
invert
PlanarImage input = JAI.create("fileload", args[0]); PlanarImage output = JAI.create("invert", input); JFrame frame = new JFrame(); frame.setTitle("Invert image "+args[0]); frame.getContentPane().add(new DisplayJAI(output)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
invert
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
binarize
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
binarize
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
bandselect
Parmetros: image original, nmero da(s) banda(s) a ser extrada(s), pode ser usado sem ParameterBlock.
1 2 3 4 5
PlanarImage input = JAI.create("fileload", args[0]); int index = Integer.parseInt(args[1]); PlanarImage output = JAI.create("bandselect",input,new int[] {index}); JAI.create("filestore",output,args[2],"TIFF");
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
colorquantizer
Parmetros: imagem original, mtodo de quantizao, nmero de cores, limite, ROI ou rea de interesse/processamento, perodo de amostragem X e Y .
1 2 3 4 5 6 7 8 9
ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(ColorQuantizerDescriptor.MEDIANCUT); pb.add(64); pb.add(32768); // para ColorQuantizerDescriptor.MEDIANCUT pb.add(null); // ROI pb.add(1); pb.add(1); PlanarImage quantizedImage = JAI.create("colorquantizer",pb);
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
colorquantizer
Mtodos de quantizao
Para ColorQuantizerDescriptor.MEDIANCUT limite 32768. Para ColorQuantizerDescriptor.NEUQUANT limite 100. Para ColorQuantizerDescriptor.OCTTREE limite 65536.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
colorquantizer
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
scale
ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(scale); pb.add(scale); pb.add(0.0F); pb.add(0.0F); pb.add(new InterpolationNearest()); PlanarImage scaledImage = JAI.create("scale", pb);
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
scale
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
rotate
ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(centerX); pb.add(centerY); pb.add(angle); pb.add(new InterpolationBilinear()); PlanarImage rotatedImage = JAI.create("rotate", pb);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
rotate
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
translate
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
crop
ParameterBlock pb = new ParameterBlock(); pb.addSource(input); pb.add(x); pb.add(y); pb.add(width); pb.add(height); PlanarImage output = JAI.create("crop",pb,null);
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
shear
Parmetros: imagem original, tangente do ngulo de inclinao, direo, translaes X e Y , mtodo de interpolao.
1 2 3 4 5 6 7
ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(shearing); pb.add(ShearDescriptor.SHEAR_VERTICAL); pb.add(0.0F); pb.add(0.0F); pb.add(new InterpolationNearest()); PlanarImage shearedImage = JAI.create("shear", pb);
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
shear
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
border
Parmetros: imagem original, largura da borda (esquerda, direita, superior e inferior), instncia de BorderExtender.
1 2 3 4 5 6 7
ParameterBlock pb = new ParameterBlock(); pb.addSource(image); pb.add(new Integer(left)); pb.add(new Integer(right)); pb.add(new Integer(top)); pb.add(new Integer(bottom)); pb.add(BorderExtender.createInstance( BorderExtender.BORDER_ZERO)); PlanarImage borderImage = JAI.create("border",pb);
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
border
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
convolve
Convoluo usada para suavizar, achar bordas, achar elementos simples, etc. Usa um kernel ou mscara que ser aplicado sobre a imagem. Algoritmo bsico:
1 2 3 4
Criar um kernel ou mscara. Criar uma instncia de KernelJAI. Criar uma instncia de PlanarImage. Criar uma nova PlanarImage com JAI.create("convolve",imagem,kernel).
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Suavizao
Kernel com todos os valores constantes, de forma que a soma dos valores seja igual a 1.
1 2 3 4 5 6 7 8 9
int kernelSize = 5; // 5x5 float[] kernelMatrix = new float[kernelSize*kernelSize]; for(int k=0;k<kernelMatrix.length;k++) kernelMatrix[k] = 1.0f/(kernelSize*kernelSize); PlanarImage input = JAI.create("fileload", args[0]); KernelJAI kernel = new KernelJAI(kernelSize,kernelSize,kernelMatrix); PlanarImage output = JAI.create("convolve", input, kernel);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Suavizao
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Deteo de bordas
float[] kernelMatrix = { -1, -2, -1, 0, 0, 0, 1, 2, 1 }; PlanarImage input = JAI.create("fileload", args[0]); KernelJAI kernel = new KernelJAI(3,3,kernelMatrix); PlanarImage output = JAI.create("convolve", input, kernel);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Deteco de bordas
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
extrema
Parmetros: somente imagem original. Cria como sada uma instncia de RenderedOp com vrias propriedades.
1 2 3 4 5 6 7 8
PlanarImage image = JAI.create("fileload", args[0]); ParameterBlock pbMaxMin = new ParameterBlock(); pbMaxMin.addSource(image); RenderedOp extremaOp = JAI.create("extrema", pbMaxMin); double[] allMins = (double[])extremaOp.getProperty("minimum"); double[] allMaxs = (double[])extremaOp.getProperty("maximum");
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
histogram
Parmetros: imagem original, ROI ou rea de interesse/processamento, perodo de amostragem X e Y , nmero de elementos no histograma, faixa de valores.
1 2 3 4 5 6 7 8 9
ParameterBlock pb1 = new ParameterBlock(); pb1.addSource(image); pb1.add(null); // ROI pb1.add(1); pb1.add(1); pb1.add(new int[]{256}); // Elementos do histograma pb1.add(new double[]{0}); pb1.add(new double[]{256}); PlanarImage histoOp = JAI.create("histogram", pb1); Histogram histo1 = (Histogram)histoOp.getProperty("histogram");
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Operador
histogram
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Visualizao em
JAI
Classe DisplayJAI (no parte ocial da API!) Pacote com.sun.media.jai.widget. Herda de JPanel, implementa MouseListener e MouseMotionListener. Suporta tiling visualizao de grandes imagens! Pode ser extendida!
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Visualizao em
JAI
Criar imagens substitutas no construtor visualizao de imagens de ponto utuante ou fora da faixa [0 255] ou com nmero de bandas > 3. Sobreescrever mtodo mouseMoved para obter informaes sobre pixels sob o ponteiro do mouse. Sobreescrever mtodo paint para desenhar informaes adicionais sobre a imagem. Criar imagens em outras escalas no construtor para visualizao de cones/thumbnails. Outras idias?
Rafael Santos Processamento de Imagens em Java
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Visualizao em
JAI
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Usando Operadores da API JAI Exemplo de Operadores: Operadores Espectrais Exemplo de Operadores: Operadores Geomtricos Exemplo de Operadores: Operador convolve Exemplo de Operadores: Operadores Estatsticos Repensando Visualizao em JAI
Visualizao em
JAI
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Concluses
Processamento de imagens bsico: leitura de formatos comuns, acesso a pixels individuais, visualizao bsica, gravao de formatos comuns AWT/Swing. Processamento de imagens avanado: leitura de formatos menos comuns, imagens de grande porte, operaes complexas, acesso a pixels individuais, visualizaes complexas, gravao de formatos menos comuns JAI.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
ImageIO.read()/ImageIO.write()
Exceo javax.imageio.IIOException se arquivo no existir. Pior: java.lang.NullPointerException se arquivo no estiver em formato conhecido! Nem todas as distribuies tem todos os codecs! Nem todos os codecs esto presentes para leitura e gravao!
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Codecs em ImageIO
1 2 3 4 5 6
String[] rtypes = ImageIO.getReaderMIMETypes(); for(String rtype:rtypes) System.out.println(rtype); String[] wtypes = ImageIO.getWriterMIMETypes(); for(String wtype:wtypes) System.out.println(wtype);
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Codecs em ImageIO
JDK1.5.0_04, Linux: Codecs para leitura: image/png image/jpeg image/x-png image/vnd.wap.wbmp image/bmp image/gif
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Outros probleminhas
Valores (r , g , b) de pixels de imagens no formato jpeg podem ser ligeiramente diferentes dependendo do mtodo! Instalao de JAI ainda manual.
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
JAI:
JAI Stu:
Rafael Santos
Introduo Processamento de Imagens em Java Conceitos Bsicos de Processamento de Imagens Criando, Armazenando e Visualizando Imagens (AWT) Criando, Armazenando e Visualizando Imagens (JAI) Operaes Simples com a API JAI Finalizando...
Propaganda:
http://www.sjcjug.org
Rafael Santos