Faculdade de Filosofia Ciências e Letras de Cajazeiras – FAFIC
Por: Francisco Cesar • 3/12/2018 • Trabalho acadêmico • 1.319 Palavras (6 Páginas) • 402 Visualizações
Faculdade de Filosofia Ciências e Letras de Cajazeiras – FAFIC
Processamento de Imagem – PDI
Relatório – Projeto
Aluno: Francisco César da Silva Filho
Cajazeiras – Paraíba
2018
- Introdução
Neste breve relatório consta uma descrição dos métodos criados para o primeiro projeto da disciplina de Processamento de Imagem(PDI). Esta é a primeira versão do projeto onde ocorrerá evolução do sistema desenvolvido, adicionando novas funcionalidades ao decorrer da disciplina.
- Descrição dos métodos da classe MetodosImagem
- filtroRed(BufferedImage image, String caminho)
Este método retira todo o G e o B deixando a imagem avermelhada, ele possuí como retorno um BufferedImage.
- filtroBlue(BufferedImage image, String caminho)
Este método retira todo o R e o G deixando a imagem azulada, ele possuí como retorno um BufferedImage.
- filtroGreen(BufferedImage image, String caminho)
Este método retira todo o R e o B deixando a imagem esverdeada, ele possuí como retorno um BufferedImage.
- negativoRGB(BufferedImage image, String caminho)
Este método pega o máximo de cada cor e retira o atual, resultando assim o negativo RGB da imagem, ex:
Color cor = new Color(image.getRGB(i, j));
int red = 255 - cor.getRed();
Onde a variável red está recebendo o negativo da mesma.
- imagemPreta(BufferedImage imagem, String caminho)
Este método é simples, como o RGB do preto é [0, 0, 0], então apenas se percorre a imagem e “seta” esse RGB em todos os pixels tornando ela preta.
- imagemBranca(BufferedImage imagem, String caminho)
Este método também é simples, como o RGB do branco é [255, 255, 255], então apenas se percorre a imagem e “seta” este RGB para todos os pixels tornando ela branca.
- Escalas de Cinza
- Conceito:
A escala de cinza pode ser calculada de 4 maneiras, pela média, como no método escalaDeCinzaViaMedia(BufferedImage imagem, String caminho); onde este calcula a média entre o Red, Blue e Green, e com esta média ele seta novos valores no RGB, esses novos valores são essa média calculada.
Também temos o calculo da escala de cinza a partir do Red, pelo método: escalaDeCinzaViaRed(BufferedImage imagem, String caminho), o qual pega o valor do red e seta igualmente tanto para o R tanto pra o G e B, deixando assim a imagem em escala de cinza. Os métodos escalaDeCinzaViaBlue(BufferedImage imagem, String caminho) e escalaDeCinzaViaGreen(BufferedImage imagem, String caminho) seguem essa mesma linha de raciocínio mudando apenas o operador de Red para Blue ou Green.
- rgbParaYiq(BufferedImage imagem)
Este método possuí como retorno uma matriz tridimensional, a qual possuí os dados de Y, I e Q, nesse caso os pixels referente a Y, I e Q. Exemplo:
Matriz[i][j][0] (referente a Y)
Matriz[i][j][1] (referente a I)
Matriz[i][j][2] (referente a Q)
- yiqParaRgb(double[][][] matriz, String caminho)
Este método recebe a matriz do método rgbParaYiq, e com isso transforma os dados resultantes em uma BufferedImage do tipo RGB, retornando a mesma no formato RGB.
- negativoEmY(BufferedImage image, String caminho)
Para o negativo em Y nós utilizamos o método rgbParaYiq para recuperar a matriz e com ele utilizamos da seguinte forma:
matriz[i][j][0] = 255 - matriz[i][j][0];
Para realização do negativo em Y, trabalhamos apenas com a diminuição do total que é 255 pelo atual da matriz Y, que nesse caso é matriz[i][j][0]; resultando assim no negativo.
Projeto 2
- limiarizacao(BufferedImage image, int limiar, String caminho)
Este método calcula o limiar de uma imagem através da mesma em escala de cinza, ele retorna a imagem no tipo BufferedImage.
- brilhoAdd(BufferedImage imagem, int c, String caminho)
Este método aumenta o brilho conforme o usuário quer, no mínimo 0 e no máximo 255. O brilho é adicionado a partir da variável int c na qual pouco a pouco é somado no red, green e blue dos pixels.
- brilhoAddY(BufferedImage image, int c, String caminho)
Este método aumenta o brilho conforme o usuário quer, no mínimo 0 e no máximo 255. O brilho é adicionado a partir da variável int c na qual pouco a pouco é somado a partir da conversão da imagem para YIQ que nos retornará uma matriz, e com ela realizaremos a soma. Exemplo:
A cada pixel iremos somar a matriz[i][j][0] a variável int c.
- brilhoMtt(BufferedImage image, int c, String caminho)
Este método aumenta o brilho conforme o usuário quer, no mínimo 0 e no máximo 255. O brilho é adicionado a partir da variável int c na qual pouco a pouco é multiplicado no red, green e blue dos pixels.
- brilhoMttY(BufferedImage image, int c, String caminho)
Este método aumenta o brilho conforme o usuário quer, no mínimo 0 e no máximo 255. O brilho é adicionado a partir da variável int c na qual pouco a pouco é multiplicado a partir da conversão da imagem para YIQ que nos retornará uma matriz, e com ela realizaremos a multiplicação. Exemplo:
A cada pixel iremos multiplicar a matriz[i][j][0] a variável int c.
- interpolacaoImagens(BufferedImage imagem1, BufferedImage imagem2)
Este método recebe duas imagens e coloca uma dentro da outra, assim interpolando as duas.
- operacaoLocalMedia(BufferedImage imagem, String caminho)
Este método cria um filtro a partir da média dos pixels locais de uma área 3x3. Realiza uma soma de todos esses pixels dessa área e realiza a média e aplica no pixel em questão. Realiza para imagens em escala de cinza.
...