Matrizes e Imagens
Estruturas de DadosProf. Vilson Heck Junior
Apresentação
• Matrizes:
– Conceitos;
– Criando e manipulando matrizes;
• Imagens:
– Classe para imagens;
– Iterando sobre uma imagem;
• Atividade Prática.
CONCEITOS DE MATRIZESMatrizes e Imagens
Matrizes
• Matrizes bidimensionais sãosemelhantes aos vetores (arrays) com adiferença que podem possuir 2 ou maislinhas:
– Matriz bidimensional 6x5:
Matrizes• Matrizes tridimensionais são
semelhantes às matrizes bidimensionais,porém podem possuir 2 ou mais níveisde profundidade:
– Matriz tridimensional 4x6x5:
Matrizes
• Matrizes podem ainda sermultidimensionais, podendo possuirqualquer número de dimensionalidade,sendo estas mais abstratas:
– Matriz multidimensional: 3x4x3x2
... ...
Matrizes
• Mas como representar uma estruturacom 2, 3 ou mais dimensões namemória, sendo que ela possuí apenas 1dimensão?
• Existem 2 formas:
– Criando intervalos entre cada dimensão; ou
– Criando um array de arrays.
MATRIZES EM JAVAMatrizes e Imagens
Matrizes Regulares
• Criação em Java:int largura = 4;
int altura = 4;
int[][] matriz = new int[altura][largura];
• Tridimensional:int prof = 5;
int[][][] matriz3D = new int[altura][largura][prof];
Matrizes Regulares
• Acesso/Atribuição:
– Bidimensional:
matriz[linha][coluna] = valor;
retorno = matriz[linha][coluna];
– Tridimensional:
matriz3D[linha][coluna][camada] = valor;
retorno = matriz3D[linha][coluna][camada];
Matrizes Regulares
• Prática:int largura = 4;
int altura = 4;
int[][] matriz = new int[altura][largura];
for (int linha = 0; linha < altura; linha++) {
for (int coluna = 0; coluna < largura; coluna++) {
matriz[linha][coluna] = (linha + 1) * (coluna + 1);
System.out.print("\t" + matriz[linha][coluna]);
}
System.out.println("");
}
IMAGENSMatrizes e Imagens
Imagens
• Uma imagem digital é o emprego maiscomum de uma matriz em umcomputador;
• Cada elemento da matriz em umaimagem é denominado pixel; (pictureelement)
• Cada pixel descreve, de alguma formaapropriada, uma cor para aquele pontoda imagem.
Imagens
• O pixel format (formato do pixel) maiscomum usado em imagens é o RGB –Red (vermelho), Green (verde) e Blue(azul);
• A combinação destas cores devepossibilitar a geração quaisquer outrascores;
Imagens
• Cores em RGB:
Imagens
• Cubo RGB:
Imagens
• Apesar de imagens serem manipuladasna memória através de matrizes,geralmente são gravadas em arquivos;
• Para facilitar nossa vida, o Java já possuiuma classe pronta para fazer a aberturade um arquivo de imagem, bem comomanipular esta imagem:
– java.awt.image.BufferedImage;
IMAGENS - PRÁTICA
Matrizes e Imagens
Imagens - Prática
1. Crie um novo Projeto:
1. Java - Console;
2. Nome: Imagens;
2. Salve este projeto em uma pasta de sua preferência.
Imagens - Prática
3. Abra o Microsoft Paint;
4. Crie uma nova imagem com:1. 256x256 pixels;
2. Fundo branco;
5. Desenhe algumas formas em preto;
6. Salve este arquivo com o nome “teste.bmp”;
1. Dentro da pasta “C:\Temp”;1. Crie a pasta, se necessário;
2. Com o tipo de arquivo: “Bitmap de 24 bits”;
Imagens - Prática
• Exemplo de imagem gerada:
Imagens - Prática
7. Volte ao seu projeto no Netbeans e:
1. Importe os seguintes packages:
1. import javax.imageio.*;
2. import java.awt.image.*;
3. import java.awt.*;
4. import java.io.*;
2. Implemente o código main do próximo slide.
BufferedImage img = null;try {
img = ImageIO.read(new File("c:\\Temp\\teste.bmp"));for (int x = 0; x < img.getWidth(); x++) {
for (int y = 0; y < img.getHeight(); y++) {Color cor, novacor;cor = new Color (img.getRGB(x, y));int r = cor.getRed();int g = cor.getGreen();int b = cor.getBlue();if (r == 0 && g == 0 && b == 0) {
novacor = new Color(255, 0, 0);} else {
novacor = new Color(r, g, b);}img.setRGB(x, y, novacor.getRGB());
}}File outputfile = new File("C:\\Temp\\saida.bmp");ImageIO.write(img, "bmp", outputfile);
} catch (Exception e) {System.out.println(e.getMessage());
}
Exercícios
1. Pesquise e faça seu programa converter umaimagem colorida para tons de cinza;
2. Pesquise e faça seu programa inverter ascores de uma imagem colorida;
3. Pesquise e faça seu programa converter umaimagem colorida para sépia;