Buscar

ap processamento digital de imagens

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1. Mostre o histograma de uma destas imagens, explique o formato do histograma, a respeito de níveis de cinza, quantidade de pixels e contraste.
	I) Apresentação do Código:
bruno_img1 = imread(‘cameraman.tif’); [qtd,nvs] = imhist(bruno_img1);
subplot (211)
imshow(bruno_img1)
subplot (212)
plot2d3(qtd,nvs)
	II) Apresentação das Imagens Resultantes:
Figura 1: Cameraman
	III) Explicação:
Com base no histograma podemos ver equilíbrio nos níveis de cinza da imagem, analisando o mesmo podemos perceber as áreas que concentram mais traços escuros aponta para uma grande quantidade de pixels claros na imagem sendo observada como um todo. Onde está localizado o tripé e o sobretudo esta indicado pela parte mais clara do histograma.
	2. Faça a plotagem das imagens com seus respectivos histogramas usando subplot, use 3 linhas e 2 colunas. Explique a diferença entre os histogramas.
	I) Apresentação do Código:
bruno_img1 = imread('cameraman.tif'); bruno_img2 = imread('house.tif'); bruno_img3 = imread('lena_color_256.tif'); bruno_img3_gray = rgb2gray(bruno_img3); [qtd1,nvs1] = imhist(bruno_img1);
[qtd2,nvs2] = imhist(bruno_img2);
[qtd3,nvs3] = imhist(bruno_img3_gray); subplot(321)
imshow(bruno_img1)
subplot(322)
plot2d3(qtd1,nvs1)
subplot(323)
imshow(bruno_img2)
subplot(324)
plot2d3(qtd2,nvs2)
subplot(325)
imshow(bruno_img3_gray)
subplot(326)
plot2d3(qtd3,nvs3)
	II) Apresentação das Imagens Resultantes:
Figura 2: 3 Imagens
	III) Explicação:
Como podemos observar o histograma a imagem do Cameraman possui uma maior quantidade de barras pretas no início do gráfico, o que indica concentração de pixels claros sob o cameraman. Na imagem da casa temos muitos pixels claros no final do gráfico. Já a imagem 3 teve que ser convertida primeiramente para níveis de cinza, para se realizar o histograma.
	3. Realize a equalização na imagem cameraman.tif, faça uma comparação entre a imagem original e a equalizada. Mostre diferenças dos histogramas (original e equalizado) e explique o processamento realizado pela equalização.
	I) Apresentação do Código:
bruno_img1 = imread('cameraman.tif'); bruno_img1_eq = imhistequal(bruno_img1); [qtd1,nvs1] = imhist(bruno_img1); [qtd1eq,nvs1eq] = imhist(bruno_img1_eq); subplot(221)
imshow(bruno_img1)
subplot(222)
plot2d3(qtd1,nvs1)
subplot(223)
imshow(bruno_img1_eq)
subplot(224)
plot2d3(qtd1eq,nvs1eq)
	II) Apresentação das Imagens Resultantes:
Figura 3: Histogramas
	III) Explicação:
Ao realizar a equalização das imagens notamos que o contraste diminui deixando-a mais uniforme, revelando alguns detalhes que não eram vistos.
	4. Em ambas imagens aplique um filtro para detecção de pontos isolados. Para isto procure uma máscara e utilize conv2 para aplicar o filtro na imagem. Explique o que aconteceu com a imagem resultante, quais detalhes foram enfatizados com este processamento?
	I) Apresentação do Código:
bruno_img1 = imread('jetplane.tif'); 
bruno_img2 = imread('walkbridge.tif'); 
bruno_img1_real = double(bruno_img1); 
bruno_img2_real = double(bruno_img2); 
mascara = [1,1,1;1,-8,1;1,1,1]
mascara =
 
 1. 1. 1. 
 1. -8. 1.
 1. 1. 1.
result_img1=conv2(bruno_img1_real,mascara); result_img2=conv2(bruno_img2_real,mascara); subplot(221)
imshow(bruno_img1)
subplot(222)
imshow(result_img1)
subplot(223)
imshow(bruno_img2)
subplot(224)
imshow(result_img2)
	II) Apresentação das Imagens Resultantes:
Figura 4: Imagens Resultantes
	III) Explicação:
Nessa filtragem foi usada uma matriz 3x3 também conhecida como laplaciana, que permite a detecção de pontos isolados.
	5. Em ambas imagens aplique os filtros para detecção de linha: horizontal, vertical, 45° e -45°. Para isto procure uma máscara para cada filtro (tabela anterior) e utilize conv2 para aplicar o filtro na imagem. Plote o resultado e explique o que aconteceu com a imagem.
	I) Apresentação do Código:
bruno_img1 = imread('jetplane.tif');
bruno_img2 = imread('walkbridge.tif');
bruno_img1_real = double(bruno_img1);
bruno_img2_real = double(bruno_img2);
mask_hor=[-1 -1 -1 ; 2 2 2 ; -1 -1 -1];
mask_45=[2 -1 -1 ; -1 2 -1 ; -1 -1 2];
mask_ver=[-1 2 -1 ; -1 2 -1 ; -1 2 -1];
mask_45neg=[-1 -1 2 ; -1 2 -1 ; 2 -1 -1]; 
res_hor_img1=conv2(mask_hor,bruno_img1_real); 
res_45_img1=conv2(mask_45,bruno_img1_real); 
res_ver_img1=conv2(mask_ver,bruno_img1_real); 
res_45neg_img1=conv2(mask_45neg,bruno_img1_real); 
res_hor_img2=conv2(mask_hor,bruno_img2_real); 
res_45_img2=conv2(mask_45,bruno_img2_real); 
res_ver_img2=conv2(mask_ver,bruno_img2_real); 
res_45neg_img2=conv2(mask_45neg,bruno_img2_real); 
subplot(241)
imshow(res_hor_img1)
subplot(242)
imshow(res_45_img1)
subplot(243)
imshow(res_ver_img1)
subplot(244)
imshow(res_45neg_img1)
subplot(245)
imshow(res_hor_img2)
subplot(246)
imshow(res_45_img2)
subplot(247)
imshow(res_ver_img2)
subplot(248)
imshow(res_45neg_img2)
	II) Apresentação das Imagens Resultantes:
Figura 5: Linhas
	III) Explicação:
Ao lado aplicação dos filtros para detecção de linhas. Na primeira o avião, na segunda a imagem da ponte. Ambas bem difícil de destinguir o que tem na imagem após aplicação dos filtros.
	6. Em ambas imagens aplique os filtros para detecção de borda: Roberts, Prewitt, Sobel. Para isto procure uma máscara para cada filtro e utilize conv2 para aplicar o filtro na imagem. Plote o resultado e explique o que aconteceu com a imagem.
	I) Apresentação do Código:
bruno_img1 = imread('jetplane.tif');
bruno_img2 = imread('walkbridge.tif');
 bruno_img1_real = double(bruno_img1); 
 bruno_img2_real = double(bruno_img2); 
 mask_roberts1=[-1 0 ; 0 1];
 mask_prewitt2=[-1 0 -1 ; -1 0 1 ; -1 0 1];
 mask_sobel1=[-1 -2 -1 ; 0 0 0 ; 1 2 1]; res_roberts1_img1=conv2(mask_roberts1,bruno_img1_real); res_prewitt2_img1=conv2(mask_prewitt2,bruno_img1_real); res_sobel1_img1=conv2(mask_sobel1,bruno_img1_real); res_roberts1_img2=conv2(mask_roberts1,bruno_img2_real); res_prewitt2_img2=conv2(mask_prewitt2,bruno_img2_real); res_sobel1_img2=conv2(mask_sobel1,bruno_img2_real); subplot(241)
imshow(bruno_img1)
subplot(242)
imshow(res_roberts1_img1)
subplot(243)
imshow(res_prewitt2_img1)
subplot(244)
imshow(res_sobel1_img1)
subplot(245)
imshow(bruno_img2)
subplot(246)
imshow(res_roberts1_img2)
subplot(247)
imshow(res_prewitt2_img2)
subplot(248)
imshow(res_sobel1_img2)
	II) Apresentação das Imagens Resultantes:
	III) Explicação:
Os operadores de Roberts aplicados as imagens são baseados na implementação de diferenças diagonais. Já o filtro de Prewitt relaça os pontos das linhas horizontais das imagens.
	7. Procure na literatura por outro filtro de borda que não foi apresentado no material da disciplina, apresente sua máscara e explique seu funcionamento, características e a apresente a bibliografia da qual foi retirado este método.
	I) Apresentação do Código:
bruno_img1 = imread('jetplane.tif');
bruno_img2 = imread('walkbridge.tif');
 bruno_img1_real = double(bruno_img1);
 bruno_img2_real = double(bruno_img2);
 mask_laplaciano=[0 1 0 ; 1 -4 1 ; 0 1 0]; 
 res_laplaciano_img1=conv2(mask_laplaciano,bruno_img1_real); 
 res_laplaciano_img2=conv2(mask_laplaciano,bruno_img2_real); subplot(221)
imshow(bruno_img1)
subplot(222)
imshow(res_laplaciano_img1)
subplot(223)
imshow(bruno_img2)
subplot(224)
imshow(res_laplaciano_img2)
	II) Apresentação das Imagens Resultantes:
Figura 6: Filtro Laplaciano
	III) Explicação:
A mascara do tipo Laplaciano aplicada as imagens é um operador isotrópico, ela não diferencia direções. Outro ponto é que ele é mais sensível devido a dupla derivação.
	8. Separe as componentes de cor R, G e B da imagem baboo_colorido.tif. Explique o que significa regiões mais claras nestas imagens.
	I) Apresentação do Código:
bruno_img = imread('baboo_colorido.tif');
 size (bruno_img);
 red = bruno_img(:,:,1);
 green = bruno_img(:,:,2);
 blue = bruno_img(:,:,3);
subplot(221)
imshow(bruno_img)
subplot(222)
imshow(red)
subplot(223)
imshow(green)
subplot(224)
imshow(blue)
	II) Apresentação das Imagens Resultantes:
Figura 7: Baboo ColoridoIII) Explicação:
Nas imagens ao lado temos destaques de partes claras perto do nariz do Baboo, os serem separados os pixels, foram levados 2 deles a níveis de cinza, e o pigmento que foi escolhido, levado a 1.
	9. Converta a imagem lena_colorida.tif para o modelo CMY, separe suas componentes (C, M e Y).
	I) Apresentação do Código:
bruno_img = imread('lena_colorida.tif');
 size (bruno_img);
 CMY=imcomplement(bruno_img);
 cia = CMY (:,:,1);
 mag = CMY (:,:,2);
 yel = CMY (:,:,3);
subplot(221)
imshow(CMY)
subplot(222)
imshow(cia)
subplot(223)
imshow(mag)
subplot(224)
imshow(yel)
	II) Apresentação das Imagens Resultantes:
Figura 8: Imagem CMY
	III) Explicação:
Notável na imagem a cor ciano separada, que tende ao azul e ao amarelo. A magenta quase não aparece por não ter tantos pontos na imagem.
	10. Converta a imagem jupiter.tif para HSI, usando o comando rgb2hsv. Veja cada uma das componentes deste modelo: 1: Intensidade, 2: Saturação, 3: Matiz. O que cada uma destas componentes significa e qual o benefício de utilizar este modelo de cor?
	I) Apresentação do Código:
bruno_img = imread('jupiter.tif');
 size (bruno_img);
 HSI=rgb2hsv(bruno_img);
 hue = HSI(:,:,1);
 sat = HSI(:,:,2);
 inte = HSI(:,:,3);
subplot(221)
imshow(HSI)
subplot(222)
imshow(hue)
subplot(223)
imshow(sat)
subplot(224)
imshow(inte)
	II) Apresentação das Imagens Resultantes:
Figura 9: Imagens HSI
	III) Explicação:
Ao lado aplicação do sistema de cores HSI, que usa três parâmetros para definir o seu espaço de cor, a matriz, a saturação e intensidade.
	11. Separe inteiramente a componente de cor vermelha da imagem baboo_colorido.tif. Qual a diferença entre este processamento e aquele realizado no exercício 8?
	I) Apresentação do Código:
bruno_img = imread('baboo_colorido.tif'); 
 size (bruno_img);
 bruno_img_R = bruno_img; 
 bruno_img_R(:,:,[2 3])=0;
subplot(211)
imshow(bruno_img)
subplot(212)
imshow(bruno_img_R)
	II) Apresentação das Imagens Resultantes:
Figura 10: Baboo Vermelho
	III) Explicação:
Ao lado filtro vermelho apresentado com a pigmentação real em vermelho. Podendo se observar que as aréas vermelhas da imagem se destacam com tons claros devido ao filtro
	12. Realize três mudanças de escala na imagem baboo.tif, usando imresize, com as imagens: 2, 0.5 e 0.1. Mostre as imagens resultantes, utilizando o comando size explique a diferença entre estas imagens.
	I) Apresentação do Código:
bruno = imread('baboo.tif'); 
size(bruno);
brunores_2 = imresize(bruno,2); 
brunores_05 = imresize(bruno,0.5); 
plot2d3(221)
imshow(brunores_2)
plot2d3(222)
imshow(brunores_05)
	II) Apresentação das Imagens Resultantes:
Figura 11: Baboo 3
	III) Explicação:
Ao lado função imresize, a qual define a escala da imagem. 
	13. Reduza pela metade a escala da imagem pimentas.tif (fator de escala = 0.5) pelo menos três vezes. A qualidade da imagem continua a mesma?
	I) Apresentação do Código:
bruno = imread('pimentas.tif');
size(bruno);
brunores105 = imresize(bruno,0.5);
brunores205 = imresize(brunores105,0.5);
brunores305 = imresize(brunores205,0.5);
subplot(221)
imshow(bruno)
subplot(222)
imshow(brunores105)
subplot(223)
imshow(brunores205)
subplot(224)
imshow(brunores305)
	II) Apresentação das Imagens Resultantes:
	III) Explicação:
Foi feita a redução da escala pela metade, de forma exponencial negativa. Percebe-se claramente a redução da qualidade da imagem.
	14. Use a imagem pimentas.tif para usar a função imrotate, a rotação em sentido horário acontece com valores positivos ou negativos, mostre exemplos desta rotação (Pelo menos 4 ângulos diferentes).
	I) Apresentação do Código:
bruno = imread('pimentas.tif'); bruno45 = imrotate(bruno,45); bruno60 = imrotate(bruno,60); bruno120 = imrotate(bruno,120); bruno270 = imrotate(bruno,270); subplot(221)
imshow(bruno45)
subplot(222)
imshow(bruno60)
subplot(223)
imshow(bruno120)
subplot(224)
imshow(bruno270)
	II) Apresentação das Imagens Resultantes:
Figura 12:Imagens Rotacionadas
	III) Explicação:
Imagens rotacionadas ao lado onde a base da rotação é a lateral direita.
	15. Aplique as duas funções de corte em uma imagem a sua escolha. A imagem resultante da função imcrop será chamada de imagemA e a imagem resultante da função imcropm será chamada de imagemB.
	I) Apresentação do Código:
bruno = imread('baboo.tif');
imagemA = imcrop(bruno,[10,20,200,300]); imagemB = imcropm(bruno);
subplot(121)
imshow(imagemA)
subplot(122)
imshow(imagemB)
	II) Apresentação das Imagens Resultantes:
Figura 13: Amplificação
	III) Explicação:
Imagem ampliada com imcrop nas posições:
X1=10
Y1=20
X2=200
Y2=300
E ampliação imcropm nos olhos.
	16. Realize um espelhamento horizontal na imagemA e um espelhamento vertical na imagemB.
	I) Apresentação do Código:
imagemAHor = imagemA(:,$:-1:1); 
imagemBVer = imagemB($:-1:1,:);
subplot(121)
imshow(imagemAHor)
subplot(122)
imshow(imagemBVer
	II) Apresentação das Imagens Resultantes:
Figura 14: Imagens Espelhadas
	III) Explicação:
Espelhamento das imagens do exercício anterior.
	17. A imagem retangulo.tif deve resultar no mais próximo possível de um retângulo branco sem nenhum artefato dentro ou fora do mesmo. Utilize apenas operações para resolver este problema.
	I) Apresentação do Código:
bruno = imread('retangulo.tif'); 
bruno(4:7,4:7)=1; 
ES=imcreatese('rect',100,100); 
corroido=imerode(bruno,ES); 
dilatado=imdilate(corroido,ES); 
imshow(dilatado)
	II) Apresentação das Imagens Resultantes:
Figura 15: Limpeza de imagem
	III) Explicação:
Ao lado imagem com menor interferência, foi usado elemento estruturante 100x100, dilatação e corrosão.
	18. Na imagem texto.tif deve-se obter o texto nítido. Para isto, utilize operações de dilatação e erosão. O critério para verificar a nitidez do texto é quando as falhas nas letras deixarem de existir.
	I) Apresentação do Código:
bruno = imread('texto.tif');
bruno(4:7,4:7)=1;
ES = imcreatese('rect',3,3);
dilatado = imdilate(bruno,ES);
corroido = imerode(dilatado,ES);
imshow(corroido)
	II) Apresentação das Imagens Resultantes:
Figura 16: Melhoria de texto
	III) Explicação:
Com a melhoria da imagem com dilatação e erosão, é possível ler o texto perfeitamente. 
	19. Encontre as bordas da imagem U.tif utilizando apenas operações morfológicas.
	I) Apresentação do Código:
bruno = imread('U.tif');
ES = imcreatese('rect',5,5);
dila = imdilate(bruno,ES);
resp = dila - bruno;
imshow(resp)
	II) Apresentação das Imagens Resultantes:
Figura 17: Morfologia matemática
	III) Explicação:
Usando a morfologia matemática as bordas são facilmente identificadas.
	20. A imagem digital.tif é de uma impressão digital com ruído, realize operações morfológicas para retirar o ruído e realçar os traços da digital nesta imagem.
	I) Apresentação do Código:
bruno = imread('retangulo.tif'); bruno(4:7,4:7)=1;
ES = imcreatese('rect',2,2); 
 eros = imerode(bruno,ES);
 dil = imdilate(eros,ES); imshow(dil)
	II) Apresentação das Imagens Resultantes:
Figura 18: Digital Morfologia matemática
	III) Explicação:
Ao lado digital com melhoramento de morfologia matemática, elemento 2x2, o que apresentou melhor resultado.
Atividade Prática de Processamento de Imagens	8	 Prof. Charles Way Hun Fung, MSc

Continue navegando