Transcript
Page 1: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Matrizes e Imagens

Estruturas de DadosProf. Vilson Heck Junior

Page 2: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Apresentação

• Matrizes:

– Conceitos;

– Criando e manipulando matrizes;

• Imagens:

– Classe para imagens;

– Iterando sobre uma imagem;

• Atividade Prática.

Page 3: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

CONCEITOS DE MATRIZESMatrizes e Imagens

Page 4: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Matrizes

• Matrizes bidimensionais sãosemelhantes aos vetores (arrays) com adiferença que podem possuir 2 ou maislinhas:

– Matriz bidimensional 6x5:

Page 5: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Matrizes• Matrizes tridimensionais são

semelhantes às matrizes bidimensionais,porém podem possuir 2 ou mais níveisde profundidade:

– Matriz tridimensional 4x6x5:

Page 6: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Matrizes

• Matrizes podem ainda sermultidimensionais, podendo possuirqualquer número de dimensionalidade,sendo estas mais abstratas:

– Matriz multidimensional: 3x4x3x2

... ...

Page 7: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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.

Page 8: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

MATRIZES EM JAVAMatrizes e Imagens

Page 9: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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];

Page 10: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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];

Page 11: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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("");

}

Page 12: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

IMAGENSMatrizes e Imagens

Page 13: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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.

Page 14: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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;

Page 15: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Imagens

• Cores em RGB:

Page 16: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Imagens

• Cubo RGB:

Page 17: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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;

Page 18: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

IMAGENS - PRÁTICA

Matrizes e Imagens

Page 19: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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.

Page 20: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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”;

Page 21: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

Imagens - Prática

• Exemplo de imagem gerada:

Page 22: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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.

Page 23: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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());

}

Page 24: Matrizes e Imagens - Portal do IFSCdocente.ifsc.edu.br/vilson.junior/ed/05_Matrizes_Imagens.pdf · Matrizes •Matrizes tridimensionais são semelhantes às matrizes bidimensionais,

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;


Top Related