Baixe o app para aproveitar ainda mais
Prévia do material em texto
Processamento de Imagens CADERNO DE RESOLUÇÃO DA ATIVIDADE PRÁTICA LUCAS BOTELHO FERREIRA 2023 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: lucas_imagem3 = imread('lena_color_256.tif'); lucas_imagem3_cinza = rgb2gray(lucas_imagem3); [qtd3,niveis] = imhist(lucas_imagem3_cinza); subplot(211) imshow(lucas_imagem3_cinza) subplot(212) plot2d3(niveis,qtd3) II) Apresentação das Imagens Resultantes: Figura 1: Histograma e imagem em tons de cinza. III) Explicação: Nesta análise, estamos examinando o histograma de uma imagem denominada "lena_color_256.tif," que foi converteda em escala de cinza através do comando "rgb2gray." A representação visual da imagem mostra uma predominância de tons de cinza mais sombrios, com a maioria dos pixels agrupados na faixa de valores compreendida entre 30 e 150. Observa-se também uma presença menos significativa de pixels na faixa de 150 a 220, correspondendo à região mais clara da imagem. 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: lucas_imagem1 = imread('cameraman.tif'); lucas_imagem2 = imread('house.tif'); lucas_imagem3 = imread('lena_color_256.tif'); lucas_imagem3_cinza = rgb2gray(lucas_imagem3); [qtd1,niveis] = imhist(lucas_imagem1); [qtd2,niveis] = imhist(lucas_imagem2); [qtd3,niveis] = imhist(lucas_imagem3_cinza); subplot(321) imshow(lucas_imagem1) subplot(322) plot2d3(niveis,qtd1) subplot(323) imshow(lucas_imagem2) subplot(324) plot2d3(niveis,qtd2) subplot(325) imshow(lucas_imagem3_cinza) subplot(326) plot2d3(niveis,qtd3) II) Apresentação das Imagens Resultantes: Figura 2: Histograma das imagens. III) Explicação: Neste conjunto de representações, estamos exibindo três imagens juntamente com seus respectivos histogramas em um subplot. Na primeira imagem, notamos uma notável concentração de mais de 6000 pixels em tons extremamente sombrios, quase alcançando o preto. Além disso, observamos outra concentração na faixa de tons de cinza entre 100 e 200, com um pico significativo com mais de 5000 pixels em torno do valor 170. A maioria da imagem é predominantemente composta por pixels nessa faixa de tons de cinza. Na segunda imagem, destaca-se um pico de mais de 70000 pixels na faixa de tons de cinza mais claros, aproximadamente no valor de 210, com uma presença mínima de tons de cinza mais escuros na faixa de valores entre 50 e 120. Quanto à terceira imagem, observa-se uma quantidade considerável de pixels em tons de cinza mais escuros, com picos entre os valores de 30 e 150, havendo uma quantidade menor na faixa de 150 a 220, que corresponde à parte mais clara da imagem. 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: lucas_imagem1 = imread('cameraman.tif'); lucas_imagem1_eq = imhistequal(lucas_imagem1); [qtd1_eq,niveis1_eq] = imhist(lucas_imagem1_eq); subplot(221) imshow(lucas_imagem1_eq) subplot(222) plot2d3(niveis1_eq,qtd1_eq) subplot(223) imshow(lucas_imagem1) subplot(224) plot2d3(niveis,qtd1) II) Apresentação das Imagens Resultantes: Figura 3: Equalização de imagem. III) Explicação: Neste exercício, implementamos a equalização de histogramas na imagem "cameraman.tif." Como resultado, a imagem sofreu uma melhoria na luminosidade, e a análise do histograma demonstrou uma distribuição mais equitativa dos tons de cinza. Agora, encontramos uma ampliação no número de pixels na faixa de valores entre 150 e 250, ao passo que na imagem original, a concentração de pixels nesta faixa se limitava a aproximadamente 200. 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: mascara_ponto = [1 1 1; 1 -8 1; 1 1 1] lucas_imagem1 = imread('jetplane.tif'); lucas_imagem2 = imread('walkbridge.tif'); lucas_imagem1_real = double(lucas_imagem1); lucas_imagem2_real = double(lucas_imagem2); resultado1_ponto = conv2(lucas_imagem1_real,mascara_ponto); resultado2_ponto = conv2(lucas_imagem2_real,mascara_ponto); subplot(221) imshow(lucas_imagem1) subplot(222) imshow(resultado1_ponto) subplot(223) imshow(lucas_imagem2) subplot(224) imshow(resultado2_ponto) II) Apresentação das Imagens Resultantes: Figura 4: Filtro de detecção de pontos isolados. III) Explicação: O emprego de um filtro para destacar pontos simplifica a percepção das formas curvas na imagem, criando um contraste com a imagem original, que é predominantemente composta por linhas. Essa aplicação do filtro facilita a identificação de bordas e segmentos retos nas imagens, tornando o processo de análise mais eficiente. 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: 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]; lucas_imagem1 = imread('jetplane.tif'); lucas_imagem2 = imread('walkbridge.tif'); lucas_imagem1_real = double(lucas_imagem1); lucas_imagem2_real = double(lucas_imagem2); res1_hor = conv2(lucas_imagem1_real,mask_hor); res1_45 = conv2(lucas_imagem1_real,mask_45); res1_ver = conv2(lucas_imagem1_real, mask_ver); res1_45neg = conv2(lucas_imagem1_real,mask_45neg); res2_hor = conv2(lucas_imagem2_real,mask_hor); res2_45 = conv2(lucas_imagem2_real,mask_45); res2_ver = conv2(lucas_imagem2_real, mask_ver); res2_45neg = conv2(lucas_imagem2_real,mask_45neg); subplot (221) imshow(res1_hor) title('Horizontal') subplot(222) imshow(res1_ver) title('Vertical') subplot(223) imshow(res1_45) title('45º') subplot(224) imshow(res1_45neg) title('-45º') subplot (221) imshow(res2_hor) title('Horizontal') subplot(222) imshow(res2_ver) title('Vertical') subplot(223) imshow(res2_45) title('45º') subplot(224) imshow(res2_45neg) title('-45º') Atividade Prática de Processamento de Imagens 6 Prof. Charles Way Hun Fung, MSc II) Apresentação das Imagens Resultantes: Figura 5: Filtros de detecção de linha. Figura 6: F iltros de detecção de linha. III) Explicação: A habilidade de detectar linhas é altamente especializada, tornando-se altamente orientada em relação à direção das linhas. Isso implica que a identificação não se limita apenas a linhas horizontais e verticais, mas também abrange linhas diagonais, incluindo aquelas com inclinações de 45 graus e -45 graus. Esse aspecto amplia consideravelmente a variedade de linhas que podem ser reconhecidas. Atividade Prática de Processamento de Imagens 8 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 resultadoe explique o que aconteceu com a imagem. I) Apresentação do Código: mascara_Roberts = [-1 0; 0 1] mascara_Prewitt = [-1 -1 -1; 0 0 0; 1 1 1] mascara_Sobel = [-1 -2 -1; 0 0 0; 1 2 1] lucas_imagem1 = imread('jetplane.tif'); lucas_imagem2 = imread('walkbridge.tif');lucas_imagem1_real = double(lucas_imagem1); lucas_imagem2_real = double(lucas_imagem2); resultado1_Sobel = conv2(lucas_imagem1_real,mascara_Sobel); resultado1_Prewitt = conv2(lucas_imagem1_real,mascara_Prewitt); resultado1_Roberts = conv2(lucas_imagem1_real,mascara_Roberts); resultado2_Prewitt = conv2(lucas_imagem2_real,mascara_Prewitt); resultado2_Sobel = conv2(lucas_imagem2_real,mascara_Sobel); resultado2_Roberts = conv2(lucas_imagem2_real,mascara_Roberts); subplot(231) imshow(resultado1_Prewitt) title('Prewitt') subplot(232) imshow(resultado1_Roberts) title('Roberts') subplot(233) imshow(resultado1_Sobel) title('Sobel') subplot(234) imshow(resultado2_Prewitt) title('Prewitt') subplot(235) imshow(resultado2_Roberts) title('Roberts') subplot(236) imshow(resultado2_Sobel) title('Sobel') Atividade Prática de Processamento de Imagens 8 Prof. Charles Way Hun Fung, MSc II) Apresentação das Imagens Resultantes: Figura 7: Filtros de detecção de bordas. III) Explicação: Neste exercício, procedemos com a operação de convolução bidimensional nas imagens "jetplane.tif" e "walkbridge.tif" usando as máscaras dos detectores de borda Roberts, Prewitt e Sobel. Como resultado, as imagens processadas destacam de maneira mais acentuada as linhas e pontos presentes nas imagens originais, intensificando, assim, as características das bordas. Isso contribui para tornar as bordas mais visíveis e claramente distinguíveis nas imagens. Atividade Prática de Processamento de Imagens 9 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 sua máscara e explique seu funcionamento, características e a apresente a bibliografia da qual foi retiradoeste método. I) Apresentação do Código: mascara_Laplaciano = [0 -1 0; -1 4 -1; 0-1 0] lucas_imagem1 = imread('jetplane.tif'); lucas_imagem2 = imread('walkbridge.tif'); lucas_imagem1_real = double(lucas_imagem1); lucas_imagem2_real = double(lucas_imagem2); res1_Laplaciano = conv2(lucas_imagem1_real, mascara_Laplaciano); res2_Laplaciano = conv2(lucas_imagem2_real, mascara_Laplaciano); subplot(221) imshow(lucas_imagem1) subplot(222) imshow(res1_Laplaciano) subplot(223) imshow(lucas_imagem2) subplot(224) imshow(res2_Laplaciano) II) Apresentação das Imagens Resultantes: Figura 8: Filtro Laplaciano. III) Explicação: O filtro Laplaciano representa uma ferramenta de aprimoramento de imagens que se vale de derivadas de segunda ordem com o objetivo de proporcionar uma resposta mais nítida e destacar detalhes refinados, como pontos isolados e linhas. Além disso, desempenha um papel fundamental na detecção de bordas em imagens, consolidando -se como uma contribuição relevante para o domínio do processamento de imagens e visão computacional. No entanto, é crucial estar atento ao fato de que o filtro Laplaciano tem a capacidade de acentuar ruídos indesejados na imagem, potencialmente gerando uma textura mais granulada. Portanto, é de suma importância que os parâmetros do filtro sejam ajustados com precisão, visando alcançar os melhores resultados possíveis. Em resumo, o filtro Laplaciano é uma ferramenta robusta para realçar detalhes sutis e identificar bordas em imagens, mas seu uso demanda habilidade e conhecimento a fim de evitar possíveis artefatos indesejados na imagem final. Atividade Prática de Processamento de Imagens 10 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: lucas_imagem1 = imread('baboo_colorido.tif'); R = lucas_imagem1(:,:,1); G = lucas_imagem1(:,:,2); B = lucas_imagem1(:,:,3); subplot(221) imshow(lucas_imagem1) title('Original') subplot(222) imshow(R) title('Red') subplot(223) imshow(G) title('Green') subplot(224) imshow(B) title('Blue') II) Apresentação das Imagens Resultantes: Figura 9: Separação de cores. III) Explicação: As imagens vizinhas ilustram as componentes da imagem "baboo_colorido.tif". Em regiões de brilho elevado, notamos que essa componente inclui pixels com valores aproximados de 255, denotando tons mais claros, ao passo que nas áreas mais escuras, detectamos regiões onde os valores dos pixels tendem a ser mais baixos, aproximando-se de zero, resultando em tons mais escuros na imagem. Estas discrepâncias nas tonalidades desempenham um papel fundamental na interpretação das características da imagem. Atividade Prática de Processamento de Imagens 11 Prof. Charles Way Hun Fung, MSc 9. Convertaa imagem lena_colorida.tif para o modelo CMY, separe suas componentes (C, M e Y). I) Apresentação do Código: lucas_imagem3 = imread('lena_colorida.tif'); CMY = imcomplement(lucas_imagem3); C = CMY (:,:,1); M = CMY (:,:,2); Y = CMY (:,:,3); subplot(221) imshow(CMY) title('CMY') subplot(222) imshow(C) title('C') subplot(223) imshow(M) title('M') subplot(224) imshow(Y) title('Y') II) Apresentação das Imagens Resultantes: Figura 10: Conversão para o modelo CMY. III) Explicação: Quando a imagem "Lena_colorida.tif" é convertida para o modelo de cores CMY (ciano, magenta e amarelo), é evidente a notável distinção entre os pigmentos ciano e amarelo. No entanto, a presença do pigmento magenta é quase imperceptível, devido à escassez de pontos na imagem que o representam. Essa transformação ressalta claramente a predominância das cores ciano e amarelo na imagem, enquanto o magenta desempenha um papel bastante discreto. Atividade Prática de Processamento de Imagens 12 Prof. Charles Way Hun Fung, MSc 10. Converta a imagemjupiter.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: lucas_imagem2 = imread('jupiter.tif'); HSI = rgb2hsv(lucas_imagem2); hue = HSI (:,:,1); sat = HSI (:,:,2); value = HSI (:,:,3); subplot (221) imshow(HSI) title(‘HSI’) subplot(222) imshow(hue) title('Hue') subplot(223) imshow(sat) title('Sat') subplot(224) imshow(value) title('Value') II) Apresentação das Imagens Resultantes: Figura 11: Conversão para HSI. III) Explicação: Os componentes de Matiz, Saturação e Intensidade foram representados. A Intensidade, também chamada de brilho, representa a percepção subjetiva da luminosidade, isolada da influência da cor. A Saturação expressa o grau de pureza de uma cor, ou seja, quão vívida ou suavizada a cor aparece quando combinada com a luz branca. Por fim, a Matiz descreve a cor em sua forma mais elementar e pura, independente do brilho ou da saturação. Esses atributos desempenham um papel fundamental na compreensão das características cromáticas nas imagens. Atividade Prática de Processamento de Imagens 13 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 processamentoe aquele realizado no exercício 8? I) Apresentação do Código: lucas_imagem1 = imread('baboo_colorido.tif'); baboo_vermelho = lucas_imagem1; baboo_vermelho(:,:,[2 3])=0; imshow(baboo_vermelho) II) Apresentação das Imagens Resultantes: Figura 12: Separação para a cor vermelha. III) Explicação: Neste contexto, as informações contidas nas componentes verde e azul da imagem foram excluídas, diferentemente do exercício anterior (Exercício 8) no qual cada componente foi analisada separadamente e representada como uma matriz em tons de cinza. A supressão das componentes verde e azul leva à representação da imagem baseada exclusivamente na componente vermelha, o que causa uma alteração significativa na aparência e nas características cromáticas da imagem original. Atividade Prática de Processamento de Imagens 14 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: lucas_imagem1=imread('Baboo.tif'); size(lucas_imagem1); res1_2=imresize(lucas_imagem1,2); res2_05=imresize(lucas_imagem1,0.5); res3_01=imresize(lucas_imagem1,0.1); subplot(221) imshow(lucas_imagem1) title('original') subplot(222) imshow(res1_2) title('2') subplot(223) imshow(res2_05) title('0.5') subplot(224) imshow(res3_01) title('0.1') II) Apresentação das Imagens Resultantes: Figura 13: Mudanças de escala. III) Explicação: Ao observar a segunda representação, fica evidente a notável distinção entre a imagem ampliada em duas vezes em relação à original, destacando um aumento no tamanho e na nitidez dos detalhes. Já na última figura, é perceptível a redução da imagem para apenas 10% de seu tamanho original, o que resulta em uma imagem consideravelmente menor e com uma notável perda de detalhes e resolução. A função "imresize" emerge como uma ferramenta inestimável para controlar as dimensões das imagens de acordo com as necessidades de visualização ou processamento. Atividade Prática de Processamento de Imagens 15 Prof. Charles Way Hun Fung, MSc 13. Reduza pela metade a escala da imagem pimentas.tif (fator de escala = 0.5) pelo menostrês vezes. A qualidade da imagem continua a mesma? I) Apresentação do Código: lucas_imagem2=imread('Pimentas.tif'); size(lucas_imagem2); resultado1=imresize(lucas_imagem2,0.5); resultado2=imresize(resultado1,0.5); resultado3=imresize(resultado2,0.5); subplot(221) imshow(lucas_imagem2) subplot(222) imshow(resultado1) subplot(223) imshow(resultado2) subplot(224) imshow(resultado3) II) Apresentação das Imagens Resultantes: Figura 14: Escala reduzida. III) Explicação: Quando reduzimos pela metade a escala da imagem usando uma progressão exponencial negativa, é notável a deterioração na qualidade visual das imagens resultantes. Isso implica que à medida que diminuímos as dimensões da imagem, ocorre uma perda de detalhes e uma diminuição na nitidez das informações visuais. Essa diminuição na qualidade é uma consequência inerente da redução de escala e deve ser levada em conta ao ajustar o tamanho das imagens, a fim de assegurar que os resultados atendam às necessidades específicas. Atividade Prática de Processamento de Imagens 16 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: lucas_imagem2=imread('Pimentas.tif'); res30=imrotate(lucas_imagem2,30); res30neg=imrotate(lucas_imagem2,-30); res125=imrotate(lucas_imagem2,125); res130neg=imrotate(lucas_imagem2,-130); subplot(221) imshow(res30) subplot(222) imshow(res30neg) subplot(223) imshow(res125) subplot(224) imshow(res130neg) II) Apresentação das Imagens Resultantes: Figura 15: Imagem rotacionada. III) Explicação: É possível efetuar uma rotação no sentido horário da imagem por meio da utilização do comando "imrotate," com a capacidade de aplicar valores tanto positivos quanto negativos. Isso implica que temos a capacidade de ajustar a orientação da imagem, rodando-a no sentido horário, e, além disso, podemos definir os ângulos de rotação de acordo com as necessidades específicas de orientação. O comando "imrotate" revela-se como uma ferramenta versátil e eficaz para a manipulação flexível da orientação das imagens. Atividade Prática de Processamento de Imagens 18 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: lucas_imagem = imread('baboo.tif'); imagemA = imcrop(lucas_imagem,[10,20,200,300]); teste_img=imread('baboo.tif'); imagemB=imcropm(teste_img); subplot(211) imshow(imagemA) title('imcrop') subplot(212) imshow(imagemB) title('imcropm') II) Apresentação das Imagens Resultantes: Figura 16: Função de corte. III) Explicação: O processo de recorte de uma imagem é executado com o auxílio do comando "imcrop," no qual você especifica as seguintes coordenadas para delimitar a área a ser recortada. x1=10 y1=20 x2=200 y2=300 Além disso, a definição de uma área de recorte precisa é facilmente realizada através do comando "imcropm," conferindo flexibilidade na seleção de uma região específica na imagem e permitindo ajustes precisos de corte. Ambos os comandos se revelam valiosos para a tarefa de recortar áreas específicas de uma imagem de acordo com as necessidades individuais. Atividade Prática de Processamento de Imagens 18 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: lucas_imagem = imread('baboo.tif'); imagemA = imcrop(lucas_imagem,[10,20,200,300]); teste_img=imread('baboo.tif'); imagemB=imcropm(teste_img); imagemAHor = imagemA(:,$:-1:1); imagemBVer = imagemB($:-1:1,:); subplot(211) imshow(imagemAHor) subplot(212) imshow(imagemBVer) II) Apresentação das Imagens Resultantes: Figura 17: Espelhamento da imagem. III) Explicação: O código em questão tem como objetivo realizar um espelhamento horizontal na imagem "imagemA" e um espelhamento vertical na imagem "imagemB". Começa-se carregando a imagem original "baboo.tif" em "lucas_imagem". Em seguida, define-se a região de interesse de "imagemA" usando "imcrop," especificando as coordenadas de recorte como [10,20,200,300]. Isso resulta em "imagemA" representando uma parte da imagem original. Para "imagemB," utiliza-se uma abordagem diferente, aplicando "imcropm" na imagem de teste "teste_img" e definindo "imagemB" como uma região de interesse na imagem original. Os comandos "imagemAHor = imagemA(:,end:-1:1);" e "imagemBVer = imagemB(end:-1:1,:);" realizam o espelhamento horizontal em "imagemA" e o espelhamento vertical em "imagemB," respectivamente. As duas imagens espelhadas resultantes são exibidas em um subplot, demonstrando o efeito do espelhamento. Consequentemente, "imagemAHor" representa a imagem "imagemA" com espelhamento horizontal, e "imagemBVer" é a imagem "imagemB" com espelhamento vertical. O resultado são imagens em orientações opostas, criando versões refletidas das imagens originais, tanto horizontal quanto verticalmente, proporcionando uma visão inversa das mesmas. Atividade Prática de Processamento de Imagens 19 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 resolvereste problema. I) Apresentação do Código: lucas_imagem2 = imread('retangulo.tif'); lucas_imagem2 = zeros(10,10); lucas_imagem2(4:7,4:7)=1; imshow(lucas_imagem2) II) Apresentação das Imagens Resultantes: Figura 18: Matriz obtida. III) Explicação: O processo resulta na imagem desejada, minimizando as interferências tanto internas quanto externas, de acordo com o enunciado. O código começa carregando a imagem "retangulo.tif" na variável "lucas_imagem2" e, em seguida, substitui a imagem original por uma matriz preta de 10x10 pixels. A seguir, a matriz é preenchida com um retângulo branco de 4x4 pixels no centro, onde os valores são definidos como 1 na região de (4,4) a (7,7). Isso gera uma representação visual de um retângulo branco em um fundo preto. Por fim, a função "imshow(lucas_imagem2)" exibe essa matriz como uma imagem, criando o retângulo branco no centro da imagem preta, atendendo à solicitação de mínimas interferências internas e externas. Atividade Prática de Processamento de Imagens 20 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: lucas_imagem=imread('texto.tif'); lucas_imagem(4:7,4:7)=1; ES=imcreatese('rect',3,3); dilatado=imdilate(lucas_imagem,ES);corroido=imerode(dilatado,ES); subplot(211) imshow(lucas_imagem) subplot(212) imshow(corroido) II) Apresentação das Imagens Resultantes: Figura 19: Dilatação e erosão aplicadas. III) Explicação: Graças ao processo de ampliação e aprimoramento, a imagem adquiriu uma notável clareza, resultando em uma representação visual mais aguçada e facilmente legível. Essa melhoria promove uma nitidez acentuada e realça os detalhes, proporcionando uma experiência visual mais cristalina e definida ao observador. A ampliação e o refinamento surgem como técnicas valiosas para elevar a qualidade e a legibilidade das imagens. Atividade Prática de Processamento de Imagens 21 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: lucas_imagem=imread('U.tif'); ES=imcreatese('rect',5,5); dilatado=imdilate(lucas_imagem,ES); res=dilatado-lucas_imagem; subplot(211) imshow(lucas_imagem) subplot(212) imshow(res) II) Apresentação das Imagens Resultantes: Figura 20: Resultado das operações morfológicas. III) Explicação: A identificação clara das margens na imagem é notável, isso se deve ao uso das operações morfológicas. Essas operações desempenham um papel fundamental no processamento de imagens, permitindo realçar bordas, segmentar objetos e destacar características de interesse, resultando na tornando o conteúdo mais compreensível e facilitando a detecção de elementos-chave. Em particular, elas desempenham um papel significativo na melhoria da legibilidade e interpretação de imagens, especialmente em contextos como análise de documentos e reconhecimento de padrões. Atividade Prática de Processamento de Imagens 22 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ídoe realçar os traços da digital nesta imagem. I) Apresentação do Código: lucas_imagem(4:7,4:7)=1; dilatado=imdilate(corroer,ES); corroer=imerode(lucas_imagem,ES); ES=imcreatese('rect',2,2); lucas_imagem=imread('digital.tif'); subplot(211) imshow(lucas_imagem) subplot(212) imshow(dilatado) II) Apresentação das Imagens Resultantes: Figura 21: Resultado das operações morfológicas. III) Explicação: Após conduzir uma série de experimentos com vários elementos estruturais, ficou evidente que o elemento 2x2 mostrou o desempenho mais eficiente. Esse achado enfatiza a importância da escolha criteriosa do elemento estrutural nas operações morfológicas. O elemento estrutural, exemplificado pelo 2x2, desempenha um papel fundamental na maneira como as operações morfológicas impactam a imagem, influenciando diretamente a detecção de características, a segmentação e o realce de elementos específicos. Assim, a seleção adequada do elemento estrutural é uma etapa fundamental para alcançar os resultados desejados na análise e no processamento de imagens.
Compartilhar