Você está na página 1de 30

2023

Processamento de Imagens

CADERNO DE RESOLUÇÃO DA ATIVIDADE PRÁTICA


ROBSON MONTEIRO FELISBERTO
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:

robson_img1 = imread(‘cameraman.tif’); [qtd,nvs] = imhist(robson_img1);


subplot (211)
imshow(robon_img1)subplot (212)
plot2d3(qtd,nvs)

II) Apresentação das Imagens Resultantes: 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
depixels claros na imagem sendo
observada como um todo. Onde
está localizado o tripé e o sobretudo
esta indicado pela parte mais clara
do histograma.

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:

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)

II) Apresentação das Imagens Resultantes: 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.

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)

II) Apresentação das Imagens Resultantes: 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

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

II) Apresentação das Imagens Resultantes: III) Explicação:

Nessa filtragem foi usada uma


matriz3x3 também conhecida como
laplaciana, que permite a detecção de
pontos isolados

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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.

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.

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

Nas imagens que


temos os destaques nas
partes mais claras como o
nariz e a região azul em
torno do nariz, mostra que
o Scilab, ao separar os
pixels, levou dois deles a
níveis de cinza e o
pigmento escolhido foi
levado a 1, como por
exemplo na primeira
imagem preto e branca ao
lado da imagem colorida,
referente a cor vermelha
(red), vemos onde existia
a cor vermelha toda
branca.

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

II) Apresentação das Imagens Resultantes: III) Explicação:

O sistema de cores HSV, ou


HSI, define o espaço de cor
utilizando seus três
parâmetros, a começar por
matiz (tonalidade) como
vemos na segunda imagem
ao lado. Este verifica o tipo
de
cor, tendo todas as
tonalidades do espectro,
desde o vermelho até
o violeta junto com
o magenta.
A saturação vemos na
primeira imagem da segunda
linha, conhecida como
"pureza", vemos que quanto
menor esse valor, maior será
o tom de cinza da imagem,
ou
seja, quanto maior seu valor,
mais "pura" é a imagem.
Já a intensidade define o
valor
do brilho da cor.

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

Como mencionado nas instruções de


execução da atividade pratica, a função
“imresize” define a escala da imagem.
Na primeira figura notamos as diferenças
de escala da imagem aumentada 2 vezes
e a imagem reduzida meia vez. Nas
planilhas abaixo das imagens temos a
escala das figuras, a original tendo um
tamanho de 512x512, a segunda,
aumentada 2x sendo 1024x1024 e a
terceira com redução da metade com
256x256. A redução 0,1 não foi possível
realizar devido a erro de execução do
Scilab.

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

Ampliação da imagem com “imcrop”


apresentando as posições:
x1=10
y1=20
x2=200
y2=300

E temos a ampliação da imagem com


imcropm, focando nos olhos

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

A imagem com o menor


número de interferências
internas e externas foi esta,
usando um elemento
estruturante 100x100, corrosão e
dilatação.

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

Vemos que é possível ler


o texto perfeitamente.

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

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)

II) Apresentação das Imagens Resultantes: III) Explicação:

Após realizar testes com


alguns elementos estruturantes,
definiu-se um elemento 2x2 pois
este é o que apresenta o melhor
resultado.

Atividade Prática de Processamento de Imagens 29 Prof. Charles Way Hun Fung, MSc

Você também pode gostar