Escolar Documentos
Profissional Documentos
Cultura Documentos
Processamento de Imagens
I) Apresentação do Código:
Atividade Prática de Processamento de Imagens 1 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:
Atividade Prática de Processamento de Imagens 2 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:
robson_img1= imread('cameraman.tif'); robson_img1_eq =
imhistequal(robson_img1)[qtd1,nvs1=imhist(robson_img1);[qtd1eq,nvs1eq]=imhist(robson_img1
_eq);subplot(221)
imshow(robson_img1)subplot(222)
plot2d3(qtd1,nvs1)
subplot(223)
imshow(robson_img1_eq)
subplot(224)plot2d3(qtd1eq,nvs1eq)
Ao realizar a equalização
das imagens notamos que o
contraste diminui deixando-a
mais uniforme, revelando alguns
detalhes que não eram vistos
Atividade Prática de Processamento de Imagens 3 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:
robson_img1 = imread('jetplane.tif');
robson_img2 = imread('walkbridge.tif');
robson_img1_real = double(robson_img1);
robson_img2_real = double(robson_img2);
mascara = [1,1,1;1,-8,1;1,1,1]
mascara =
1. 1. 1.
1. -8. 1.
1. 1. 1.
result_img1=conv2(robson_img1_real,mascara);result_img2=conv2(robson_img2_re
al,mascara);
subplot(221)
imshow(robson_img1)
subplot(222)imshow(result_img1)
subplot(223)imshow(robson_img2)
subplot(224)imshow(result_img2
Atividade Prática de Processamento de Imagens 4 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:
robson_img1 = imread('jetplane.tif');
robson_img2 = imread('walkbridge.tif');
robson_img1_real = double(robson_img1);
robson_img2_real = double(robson_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,robson_img1_real);
res_45_img1=conv2(mask_45,robson_img1_real);
res_ver_img1=conv2(mask_ver,robson_img1_real);
res_45neg_img1=conv2(mask_45neg,robson_img1_real);
res_hor_img2=conv2(mask_hor,robson_img2_real);
res_45_img2=conv2(mask_45,robson_img2_real);
res_ver_img2=conv2(mask_ver,robson_img2_real);
res_45neg_img2=conv2(mask_45neg,robson_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)
Atividade Prática de Processamento de Imagens 5 Prof. Charles Way Hun Fung, MSc
Nas imagens abaixo vemos o resultado
da aplicação dos filtros para a detecção de
linhas.
Na primeira linha trazemos o trabalho
feito na imagem do avião. Podemos
perceber na primeira imagem leves linhas
horizontais, pois a imagem contém muitos
pontos brancos. Nas outras três imagens
referente ao avião, notamos apenas na
última imagem da primeira linha leves traços
da calda do avião, pois esta tem linhas em 45º
negativos.
Na segunda linha temos os mesmos
filtros aplicados a imagem da ponte. Nota-se
que apenas a filtragem horizontal traz
alguma lembrança do que é a imagem da
ponte, devido os traços horizontais que
existem nela. Já as outras imagens é difícil de
distinguir qualquer traço.
Atividade Prática de Processamento de Imagens 6 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:
robson_img1 = imread('jetplane.tif');
robson_img2 = imread('walkbridge.tif');
robson_img1_real = double(robson_img1);
robson_img2_real = double(robson_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,robson_img1_real);
res_prewitt2_img1=conv2(mask_prewitt2,robson_img1_real);
res_sobel1_img1=conv2(mask_sobel1,robson_img1_real);
res_roberts1_img2=conv2(mask_roberts1,robson_img2_real);
res_prewitt2_img2=conv2(mask_prewitt2,robson_img2_real);
res_sobel1_img2=conv2(mask_sobel1,robson_img2_real);
subplot(241)
imshow(rodrigo_img1)
subplot(242)
imshow(res_roberts1_img1)
subplot(243)
imshow(res_prewitt2_img1)
subplot(244)
imshow(res_sobel1_img1)
subplot(245)
imshow(rodrigo_img2)
subplot(246)
imshow(res_roberts1_img2)
subplot(247)
imshow(res_prewitt2_img2)
subplot(248)
imshow(res_sobel1_img2)
Atividade Prática de Processamento de Imagens 7 Prof. Charles Way Hun Fung, MSc
II) Apresentação das Imagens Resultantes: III) Explicação:
Como vimos, os
operadores de Roberts são
baseados na
implementação de
diferenças nas diagonais.
As máscaras 2×2 são
simples, e não são tão
úteis para cálculos de
direção da borda. Por isso
conseguimos detectar
poucas linhas, tanto na
imagem do avião, onde
vemos no primeiro f iltro as
linhas que são as bordas
da neve na montanha, e
na imagem da ponte
vemos as linhas q ue
indicam as laterais da ponte.
As máscaras 3x3
consideram a natureza dos
dados nas laterais opostas
ao ponto central e, por
isso, carregam mais
informações em relação a
direção de uma borda. O
filtro de Prewitt aplicado no
exercício realça os pontos
das linhas horizontais das
imagens. Como as
máscaras de Sobel
apresentarem melhor
suavização de ruído, faz
com que sejam preferíveis,
pois a supressão do ruído
é algo importante quando
lidamos com derivadas.
Como todos coeficientes
somam zero, temos a
resposta nula nos locais
de intensidade constante.
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 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:
robson_img1 = imread('jetplane.tif');
robson_img2 = imread('walkbridge.tif');
robson_img1_real = double(robson_img1);
robson_img2_real = double(robson_img2);
mask_laplaciano=[0 1 0 ; 1 -4 1 ; 0 1 0];
res_laplaciano_img1=conv2(mask_laplaciano,robson_img1_real);
res_laplaciano_img2=conv2(mask_laplaciano,robson_img2_real);
subplot(221)
imshow(robson_img1)
subplot(222)
imshow(res_laplaciano_img1)
subplot(223)
imshow(rodrigo_img2)
subplot(224)
imshow(res_laplaciano_img2)
Aplicamos uma
máscara Laplaciano
nas
imagens. Ele é um
operador isotrópico, ou
seja, não diferencia
direções. Como os
demais ele é fácil de
implementar pois basta
uma máscara. Porem
ele
não dá informação
sobre
a direção da borda. E
como vimos em
algumas
literaturas ele é mais
sensível ao ruído pois
deriva duas vezes.
Atividade Prática de Processamento de Imagens 9 Prof. Charles Way Hun Fung, MSc
I) Apresentação do Código:
robson_img = imread('baboo_colorido.tif');
size (robson_img);
red = robson_img(:,:,1);
green = robson_img(:,:,2);
blue = robson_img(:,:,3);
subplot(221)
imshow(robson_img)
subplot(222)
imshow(red)
subplot(223)
imshow(green)
subplot(224)
imshow(blue)
Atividade Prática de Processamento de Imagens 10 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 11 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:
robson_img = imread('lena_colorida.tif');
size (robson_img);
CMY=imcomplement(robson_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
Atividade Prática de Processamento de Imagens 12 Prof. Charles Way Hun Fung, MSc
II) Apresentação das Imagens Resultantes: III) Explicação:
Vemos claramente a
separação dos pigmentos ciano,
que remete ao azul e o
amarelo. Já não notamos quase
a pigmentação magenta, por não
conter tantos pontos deste na
imagem.
Atividade Prática de Processamento de Imagens 13 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:
robson_img = imread('jupiter.tif');
size (robson_img);
HSI=rgb2hsv(robson_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
Atividade Prática de Processamento de Imagens 14 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 15 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 16 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:
robson_img = imread('baboo_colorido.tif');
size (robson_img);
robson_img_R = robson_img;
robson_img_R(:,:,[2 3])=0;
subplot(211)
imshow(robson_img)
subplot(212)
imshow(robson_img_R)
No exercício 8 temos a
representação da imagem
separada em tonalidades de
cinza. Aqui temos a
representação do filtro vermelho
com a real pigmentação, em
vermelho, na imagem. No que
as regiões em vermelho na
imagem original se destaca com
tons claros na imagem com
filtro.
Atividade Prática de Processamento de Imagens 17 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:
robson = imread('baboo.tif');
size(robson);
robson_2 = imresize(rodrigo,2);
rodrigores_05 = imresize(rodrigo,0.5);
plot2d3(221)
imshow(rodrigores_2)
plot2d3(222)
imshow(rodrigores_05)
Atividade Prática de Processamento de Imagens 18 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:
rodrigo = imread('pimentas.tif');
size(rodrigo);
rodrigores105 = imresize(rodrigo,0.5);
rodrigores205 = imresize(rodrigores105,0. 5);
rodrigores305 = imresize(rodrigores205,0. 5);
subplot(221)
imshow(rodrigo)
subplot(222)
imshow(rodrigores105)
subplot(223)
imshow(rodrigores205)
subplot(224)
imshow(rodrigores305)
Como existe a
redução da escala
pela
metade de forma
exponencial negativa,
notamos nas
imagens abaixo que
existe a
redução da
qualidade da imagem.
Atividade Prática de Processamento de Imagens 19 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:
robson = imread('pimentas.tif');
robson45 = imrotate(robson,45);
robson60 = imrotate(robson,60);
robson120 = imrotate(robson120);
robson270 = imrotate(robson,270);
subplot(221)
imshow(robson45)
subplot(222)
imshow(robson0)
subplot(223)
imshow(robson120)
subplot(224)
imshow(robson270)
Rotações da imagem
“pimenta.tif”.Nota-se que a
base da rotação é a lateral
direita da imagem.
Atividade Prática de Processamento de Imagens 20 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 21 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:
robson = imread('baboo.tif');
imagemA = imcrop(robson,[10,20,200,300]);
imagemB = imcropm(robson);
subplot(121)
imshow(imagemA)
subplot(122)
imshow(imagemB)
Atividade Prática de Processamento de Imagens 22 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:
imagemAHor = imagemA(:,$:-1:1);
imagemBVer = imagemB($:-1:1,:);
subplot(121)
imshow(imagemAHor)
subplot(122)
imshow(imagemBVer)
Resultado do espelhamento
das imagens resultadas do exercício
15.
Atividade Prática de Processamento de Imagens 23 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 24 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:
robson = imread('retangulo.tif');
robson(4:7,4:7)=1;
ES=imcreatese('rect',100,100);
corroido=imerode(robson,ES);
dilatado=imdilate(corroido,ES );
imshow(dilatado)
Atividade Prática de Processamento de Imagens 25 Prof. Charles Way Hun Fung, MSc
Atividade Prática de Processamento de Imagens 26 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:
robson= imread('texto.tif');
bson(4:7,4:7)=1;
ES = imcreatese('rect',3,3);
dilatado = imdilate(robson,ES);
corroido = imerode(dilatado,ES);
imshow(corroido)
Atividade Prática de Processamento de Imagens 27 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:
robon = imread('U.tif');
ES = imcreatese('rect',5,5);
dila = imdilate(robson,ES);
resp = dila - robson;
imshow(resp)
As bordas são
facilmente identificadas,
nota-se também que o
código é de fácil escrita.
Atividade Prática de Processamento de Imagens 28 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:
robson = imread('retangulo.tif');
robson(4:7,4:7)=1;
ES = imcreatese('rect',2,2);
eros = imerode(robson,ES);
dil = imdilate(eros,ES);
imshow(dil)
Atividade Prática de Processamento de Imagens 29 Prof. Charles Way Hun Fung, MSc