Baixe o app para aproveitar ainda mais
Prévia do material em texto
Processamento de Imagens 2021 CADERNO DE RESOLUÇÃO DA ATIVIDADE PRÁTICA DIOGO ANDRADE CORDEIRO SILVA Atividade Prática de Processamento de Imagens 1 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('cameraman.tif'); --> imshow(im1) --> [qtd,nvl] = imhist(im1); --> plot2d3(nvl,qtd) --> subplot(121) --> imshow(im1) --> subplot(122) --> plot2d3(nvl,qtd) II) Apresentação das Imagens Resultantes: Figura 1: Imagem Cameraman e seu respectivo histograma. III) Explicação: Existe uma concentração de pixels no range de 100 a 190. Vale pontuar que, no nível 160 existem aproximadamente 5000 pixels. Por outro lado, é notável que a região mais escura tenha uma concentração que ultrapasse os 6000 pixels. Atividade Prática de Processamento de Imagens 2 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('jetplane.tif'); --> [qtd,nvl] = imhist(im1); --> subplot(321) --> imshow(im1) --> subplot(322) --> plot2d3(nvl,qtd) --> im2 = imread('house.tif'); --> [QTD,NVL] = imhist(im2); --> subplot(323) --> imshow(im2) --> subplot(324) --> plot2d3(NVL,QTD) --> im3 = imread('cameraman.tif'); --> [quant,niv] = imhist(im3); --> subplot(325) --> imshow(im3) --> subplot(326) --> plot2d3(niv,quant) II) Apresentação das Imagens Resultantes: Figura 2: Imagens com seus respectivos histogramas. III) Explicação: Na primeira figura no nível 200 existe uma quantidade considerável de 8000 pixels aproximadamente. Na segunda figura pode-se perceber que há uma grande quantidade de pontos com valor igual e próximo ao nível 200, isto indica que existem muitos pixels claros. Em contrapartida, é notável que não possua um grande contraste na imagem, porque há outra concentração de pixels pela região de nível 100. Já na última figura existe uma concentração de pixels no range de 100 a 190. Vale pontuar que, no nível 160 existem aproximadamente 5000 pixels. Por outro lado, é notável que a região mais escura tenha uma concentração que ultrapasse os 6000 pixels. Atividade Prática de Processamento de Imagens 3 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('cameraman.tif'); --> imEq = imhistequal(im1); --> subplot(221) --> imshow(im1) --> subplot(222) --> [qtd,nvl] = imhist(im1); --> plot2d3(nvl,qtd) --> subplot(223) --> imshow(imEq) --> [qtd2,nvl2] = imhist(imEq); --> subplot(224) --> plot2d3(nvl2,qtd2) II) Apresentação das Imagens Resultantes: Figura 3: Equalização Cameraman. III) Explicação: A imagem está mais clara, pois as quantidades de pixels estão mais distribuídas no histograma. Como observado nos intervalos de 0 a 40 e 150 a 250. Atividade Prática de Processamento de Imagens 4 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('jetplane.tif'); --> im2 = imread('walkbridge.tif'); --> mask = [1,1,1;1,-8,1;1,1,1] mask = 1. 1. 1. 1. -8. 1. 1. 1. 1. --> subplot(221) --> imshow(im1) --> subplot(223) --> imshow(im2) --> im1 = double(im1); --> im2 = double(im2); --> res = conv2(im1,mask); --> res2 = conv2(im2,mask); --> subplot(222) --> imshow(res) --> subplot(224) --> imshow(res2) II) Apresentação das Imagens Resultantes: Figura 4: Filtro detecção de pontos isolados. III) Explicação: É fácil perceber as curvas nas imagens tratadas. Já que, as imagens originais são linhas. Ou seja, o filtro facilita a detecção dos contornos e das retas das imagens. Atividade Prática de Processamento de Imagens 5 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('jetplane.tif'); --> im2 = imread('walkbridge.tif'); --> mask_hor = [-1 -1 -1;2 2 2; -1 -1 -1] mask_hor = -1. -1. -1. 2. 2. 2. -1. -1. -1. --> mask_ver = [-1 2 -1; -1 2 -1; -1 2 -1] mask_ver = -1. 2. -1. -1. 2. -1. -1. 2. -1. --> mask_45 = [2 -1 -1; -1 2 -1; -1 -1 2] mask_45 = 2. -1. -1. -1. 2. -1. -1. -1. 2. --> mask_45neg = [-1 -1 2; -1 2 -1; 2 -1 -1] mask_45neg = -1. -1. 2. -1. 2. -1. 2. -1. -1. --> im1 = double(im1); --> im2 = double(im2); --> res_hor1 = conv2(mask_hor,im1); --> res_ver1 = conv2(mask_ver,im1); --> res_45 = conv2(mask_45,im1); --> res_45neg = conv2(mask_45neg,im1); --> res_hor2 = conv2(mask_hor,im2); --> res_ver2 = conv2(mask_ver,im2); --> res_45_2 = conv2(mask_45,im2); --> res_45neg_2 = conv2(mask_45neg,im2); --> subplot(431) --> imshow(res_hor1) --> subplot(421) --> imshow(res_hor1) --> subplot(422) --> imshow(res_hor2) --> subplot(423) --> imshow(res_ver1) --> subplot(424) --> imshow(res_ver2) --> subplot(425) --> imshow(res_45) --> subplot(426) --> imshow(res_45_2) --> subplot(427) --> imshow(res_45neg) Atividade Prática de Processamento de Imagens 6 Prof. Charles Way Hun Fung, MSc --> subplot(428) --> imshow(res_45neg_2) II) Apresentação das Imagens Resultantes: Figura 5: Filtros detecção de linha (horizontal, vertical, 45° e -45°). III) Explicação: A detecção das linhas fica nítida para a direção da linha (horizontal, vertical, 45° e -45°). Atividade Prática de Processamento de Imagens 7 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('jetplane.tif'); --> im2 = imread('walkbridge.tif'); --> mask_rob = [-1 0; 0 1]; --> mask_prew = [-1 -1 -1; 0 0 0; 1 1 1]; --> mask_sob = [-1 -2 -1; 0 0 0; 1 2 1]; --> im1 = double(im1); --> im2 = double(im2); --> res_rob1 = conv2(mask_rob,im1); --> res_prew1 = conv2(mask_prew,im1); --> res_sob1 = conv2(mask_sob,im1); --> res_rob2 = conv2(mask_rob,im2); --> res_prew2 = conv2(mask_prew,im2); --> res_sob2 = conv2(mask_sob,im2); --> subplot(321) --> imshow(res_rob1) --> subplot(322) --> imshow(res_rob2) --> subplot(323) --> imshow(res_prew1) --> subplot(324) --> imshow(res_prew2) --> subplot(325) --> imshow(res_sob1) --> subplot(326) --> imshow(res_sob2) II) Apresentação das Imagens Resultantes: Figura 6: Filtros para detecção de bordas (Roberts, Prewitt e Sobel). III) Explicação: Esses filtros realçam as bordas independentes do tipo das máscaras. Ou seja, elas ficam mais visíveis em função dos contornos das imagens serem mais marcantes nas aplicações dos filtros. Atividade Prática de Processamento de Imagens 8 Prof. Charles Way Hun Fung, MSc 7. Procure na literatura por outro filtro de borda que não foi apresentado no material da disciplina, apresente suamá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: II) Apresentação das Imagens Resultantes: Figura 7: III) Explicação: Atividade Prática de Processamento de Imagens 9 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('baboo_colorido.tif'); --> R = im1(:,:,1); --> G = im1(:,:,2); --> B = im1(:,:,3); --> subplot(141) --> imshow(im1) --> subplot(142) --> imshow(R) --> subplot(143) --> imshow(G) --> subplot(144) --> imshow(B) II) Apresentação das Imagens Resultantes: Figura 8: Separação das componentes R, G e B (esquerda para direita). III) Explicação: Foram separadas as componentes (R, G e B) da imagem original, visto que cada compoente mostra regiões mais claras onde a própria componente possui valores altos, tal como que valores baixos são retratados com pixels escuros. Atividade Prática de Processamento de Imagens 10 Prof. Charles Way Hun Fung, MSc 9. Converta a imagem lena_colorida.tif para o modelo CMY, separe suas componentes (C, M e Y). I) Apresentação do Código: --> im1 = imread('lena_colorida.tif'); --> cmy = imcomplement(im1); --> C = cmy(:,:,1); --> M = cmy(:,:,2); --> y = cmy(:,:,3); --> subplot(141) --> imshow(im1) --> subplot(142) --> imshow(C) --> subplot(143) --> imshow(M) --> subplot(144) --> imshow(y) II) Apresentação das Imagens Resultantes: Figura 9: Conversão para o modelo CMY e separação das componentes C, M e Y (esq. p/ dir). III) Explicação: Conversão do modelo RGB para o modelo CMY que consiste um sistema de cores de pigmentos primários: ciano, magenta e amarelo. Vale ressaltar, que após separação de componentes, a tonalidade branca representa intensidade total, e a tonalidade preta representa ausência de intensidade. Atividade Prática de Processamento de Imagens 11 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('jupiter.tif'); --> HSV = rgb2hsv(im1); --> hue = HSV(:,:,1); --> sat = HSV(:,:,2); --> value = HSV(:,:,3); --> subplot(141) --> imshow(im1) --> subplot(142) --> imshow(hue) --> subplot(143) --> imshow(sat) --> subplot(144) --> imshow(value) II) Apresentação das Imagens Resultantes: Figura 10: Conversão para HSI (esq. P/ dir.). III) Explicação: A noção de Intensidade luminosa de radiação é representada pelo brilho. Já a Saturação se refere à pureza do matiz ou ao grau de mistura do matiz com a luz branca e o Matiz representa a cor dominante percebida pelo observador. Atividade Prática de Processamento de Imagens 12 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('baboo_colorido.tif'); --> baboo_vermelho = im1; --> baboo_vermelho(:,:,[2 3]) = 0; --> imshow(baboo_vermelho) II) Apresentação das Imagens Resultantes: Figura 11: Separação da componente de cor vermelha. III) Explicação: Na figura 14 as matrizes das componentes foram zeradas das componentes verde e azul. De forma que, a imagem colorida resultante só possui a componente vermelha. Por outro lado, a imagem do tópico oito simplesmente houve a separação das componentes (R, G e B) da imagem original. Atividade Prática de Processamento de Imagens 13 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('baboo_colorido.tif'); --> f_esc2 = imresize(im1,2); --> f_esc05 = imresize(im1,0.5); --> f_esc01 = imresize(im1,0.1); --> subplot(141) --> imshow(im1) --> subplot(142) --> imshow(f_esc2) --> subplot(143) --> imshow(f_esc05) --> subplot(144) --> imshow(f_esc01) II) Apresentação das Imagens Resultantes: Figura 12: Aplicação do comando imresize (esq. p/ direita - imagem original, fator 2, fator 0.5 e fator 0.1). III) Explicação: É nítido que, quanto menor fator de escala, menor resolução da imagem. Diminuindo assim, a qualidade da mesma. Atividade Prática de Processamento de Imagens 14 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('peppers_color.tif'); --> f_esc05_1 = imresize(im1,0.5); --> f_esc05_2 = imresize(f_esc05_1,0.5); --> f_esc05_3 = imresize(f_esc05_2,0.5); --> subplot(141) --> imshow(im1) --> subplot(142) --> imshow(f_esc05_1) --> subplot(143) --> imshow(f_esc05_2) --> subplot(144) --> imshow(f_esc05_3) II) Apresentação das Imagens Resultantes: Figura 13: Redução de três vezes da escala com fator de meio (esq. p/ dir - imagem original, primeira redução, segunda e terceira). III) Explicação: Na última imagem (esq. p/ dir.) fica notório que houve perda significativa da qualidade. Atividade Prática de Processamento de Imagens 15 Prof. Charles Way Hun Fung, MSc 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: --> im1 = imread('peppers_color.tif'); --> imout1 = imrotate(im1,30); --> imout2 = imrotate(im1,60); --> imout3 = imrotate(im1,90); --> imout4 = imrotate(im1,120); --> subplot(151) --> imshow(im1) --> subplot(152) --> imshow(imout1) --> subplot(153) --> imshow(imout2) --> subplot(154) --> imshow(imout3) --> subplot(155) --> imshow(imout4) II) Apresentação das Imagens Resultantes: Figura 14: Aplicação da função imrotate com os ângulos de 30°, 60°, 90° e 120°. III) Explicação: É visível no código e imagem, que quando é aplicado ângulos de valores positivos, a figura rotacionará em sentido anti-horário. Assim, a rotação em sentido horário acontecerá com valores negativos. Atividade Prática de Processamento de Imagens 16 Prof. Charles Way Hun Fung, MSc 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: --> im = imread('blackpanter.jpg'); --> imagemA = imcrop(im, [20, 30, 300, 400]); --> imagemB = imcropm(im); --> subplot(131) --> imshow(im) --> subplot(132) --> imshow(imagemA) --> subplot(133) --> imshow(imagemB) II) Apresentação das Imagens Resultantes: Figura 15: Aplicação das funções imcrop e imcropm (esq. p/ dir. - imagem original, função imcrop e função imcropm). III) Explicação: Foi aplicada a função imcrop na segunda figura (esq. p/ dir.) onde o corte é determinado por sistemas de coordenadas. Por outro lado, na terceira figura, foi aplicada a função imcropm, na qual o próprio usuário determina o tamanho do corte. Atividade Prática de Processamento de Imagens 17 Prof.Charles Way Hun Fung, MSc 16. Realize um espelhamento horizontal na imagemA e um espelhamento vertical na imagemB. I) Apresentação do Código: --> im = imread('blackpanter.jpg'); --> imagemA = imcrop(im, [20, 30, 300, 400]); --> imagemB = imcropm(im); --> imhoriz = imagemA(:,$:-1:1); --> imvert = imagemB($:-1:1,:); --> subplot(141) --> imshow(imagemA) --> subplot(142) --> imshow(imhoriz) --> subplot(143) --> imshow(imagemB) --> subplot(144) --> imshow(imvert) II) Apresentação das Imagens Resultantes: Figura 16: Operação de espelhamento. III) Explicação: Espelhamento horizontal imagemA (segunda imagem - esq. p/ dir.) e espelhamento vertical imagemB (quarta imagem - esq p/ dir.). Atividade Prática de Processamento de Imagens 18 Prof. Charles Way Hun Fung, MSc 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: II) Apresentação das Imagens Resultantes: Figura 17: III) Explicação: Atividade Prática de Processamento de Imagens 19 Prof. Charles Way Hun Fung, MSc 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: --> ES = imcreatese('rect',3,3); --> im = imread('texto.tif'); --> dilat = imdilate(im, ES); --> corro = imerode(dilat, ES); --> subplot(131) --> imshow(im) --> subplot(132) --> imshow(dilat) --> subplot(133) --> imshow(corro) II) Apresentação das Imagens Resultantes: Figura 18: Operações dilatação e erosão. III) Explicação: Foi aplicada na Figura 29 (primeira figura - esq. p/ dir.) a operação de dilatação seguida da erosão. Ou seja, segunda figura (dilatação) e terceira figura (dilatação mais erosão). Atividade Prática de Processamento de Imagens 20 Prof. Charles Way Hun Fung, MSc 19. Encontre as bordas da imagem U.tif utilizando apenas operações morfológicas. I) Apresentação do Código: II) Apresentação das Imagens Resultantes: Figura 19: III) Explicação: Atividade Prática de Processamento de Imagens 21 Prof. Charles Way Hun Fung, MSc 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: --> im = imread('digital.tif'); --> imagemBin = im2bw(im,0.5); --> ES = imcreatese('rect',3,3); --> dilat = imdilate(imagemBin,ES); --> imshow(dilat) --> erod = imerode(dilat,ES); --> imshow(erod) --> subplot(131) --> imshow(imagemBin) --> subplot(132) --> imshow(dilat) --> subplot(133) --> imshow(erod) II) Apresentação das Imagens Resultantes: Figura 20: Remoção de ruído. III) Explicação: Na figura 31 foi utilizado o processo de binariazação, dilatação, em seguida para restaurar os dados uma erosão e para aumentar a região de pontos escuros.
Compartilhar