You are on page 1of 19

Universidade de Braslia (UnB) Faculdade de Tecnologia (FT) Departamento de Engenharia Eltrica (ENE) Nome: Miguel Eduardo Gutierrez Paredes

Terceira lista de exerccios. Link para baixar os programas: http://adf.ly/lHXM4

QUESTES TERICAS Problema 1.1: Uma maneira de obtermos uma derivada discreta 2-D (aproximada) e calculando as diferenas f (x + 1, y) f (x, y) e f (x, y + 1) f (x, y). a) Ache o filtro equivalente no domnio da frequncia (H (u, v)). Usando a tabela (por inspeo), o (, ) das diferenas f (x + 1, y) f (x, y) e f (x, y + 1) f (x, y) :

(, ) =
Testando o filtro para:

2 +

b) Mostre que o resultado um filtro passa-altas.

Test
1 2 3 Temos para Test1:

0 2

0 2

freq
Baixas Baixas Altas

(0,0) = 1 2 + 1 = 0
Temos para Test2:

(0,0) = 1 2 + 1 = 0
Temos para Test3:

(0,0) = 1 2 + (1) = 4
Assim, pode-se observar que o filtro s deixa passar frequncias altas, eliminando as frequncias baixas. Problema 1.2: Considere as imagens abaixo. A imagem direita foi obtida: (1) filtrando a imagem da esquerda com um filtro passa-baixas Gaussiano e (2) filtrando o resultado com um filtro passa-altas Gaussiano. As imagens tm dimenso 420 344. Ambos os filtros tem parmetro D0 = 25. a) Explique porque a parte central do anel na figura tem aparncia brilhante slida, considerando que as caractersticas dominantes da imagem filtrada consiste das linhas

nas bordas externas dos objetos (e.g. dedos, ossos, etc.) com uma rea mais escura entre estas linhas. Em outras palavras, voc esperaria que o passa-altas produzisse uma rea constante dentro do anel, uma vez que o passa-altas elimina o termo dc? O anel na imagem filtrada contem informao muito marcada do um extremo mais claro da escala de cinza, portanto ao aplicar os filtros passa-baixas e passa-altas s tendem a deixar os nveis de cinza dos pixels que compem o anel com as mesmas caratersticas, mas a notvel que a borda externa do anel sem afetada pelos filtros. Tambm, a mistura destes dois filtros pode ser catalogada como um filtro passa banda. b) Se invertermos a ordem dos filtros, o resultado permaneceria o mesmo? Pensaria que ocorre o mesmo efeito no anel, mas na prtica acontece que a imagem sofre ligeiras variaes nos nveis de cinza. Problema 1.3: As barras brancas na imagem da Figura possuem 7 pixels de largura e 210 pixels de altura. A separao entre as barras possui 17 pixels. Como se pareceria esta imagem se aplicssemos: Para resolver as questes a seguir, considerasse que a imagem original possui rudo gaussiano, pois visvel realizando uma inspeo visual. a) Um filtro da mdia aritmtica de tamanhos 3 3 e 7 7;

Figura 1. Aplicao Filtro media aritmtica Se apreciaria nas bordas das linhas um leve desfoque para o filtro 3x3 e um pouco mais acentuado para o de 7x7. b) Um filtro da mdia geomtrica de tamanhos 3 3 e 7 7;

Figura 2. Aplicao Filtro da mdia geomtrica

Se apreciaria que a imagem possui um pouco de rudo gaussiano, portanto, aplicando o filtro 3x3 na imagem, as bordas das linhas perdem informao e ficam mordidas. J, usando o filtro 7x7, a perda de informao visual das linhas mais forte. c) Um filtro contra-harmnico (CH) com Q = 1 e Q = 1, de tamanhos 3 3 e 7 7;

Figura 3. Aplicao Filtro CH com Q = 1 As anteriores imagens mostram: (de esquerda para a direita) a imagem original o filtro CH de 3x3 e 7x7 com Q=1. Como pode-se observar, depois de aplicar o filtro ocorre que as barras adquirem uma maior quantidade de pixel brancos resultando em barras com uma espessura maior. Tambm, o rudo gaussiano presente na imagem original desapareceu.

Figura 4. Aplicao Filtro CH com Q = -1 Nas anteriores imagem aplicado o mesmo filtro CH mas com Q=-1 e o resultado visvel o contrrio do que foi explicado quando Q=1. d) Um filtro da mediana de tamanhos 3 3 e 7 7.

Figura 5. Aplicao Filtro da mediana

Aparentemente se aprecia que este filtro no modifica muito a imagem original, no entanto, fazendo um zoom na imagem pode-se perceber que o rudo foi eliminado da imagem, resultando em uma imagem onde o preto fica mais preto e o branco mais branco, alm de que as borda das barras brancas tambm so afetadas pelo filtro. Problema 1.4: Considere um sistema de degradao de imagens linear e invariante posio com resposta impulsiva (, ) = [()
2 +()2 ]

Suponha que a entrada do sistema e uma imagem consistindo de uma linha de largura innitesimal localizada em = e modelada por (; ) = ( ), onde um impulso. Assumindo que no h rudo, qual a imagem de sada (; )? Tendo:

(, ) = (, )( , )

Dado que, (, ) = ( ), e (, ) = ( ), ento, usando a resposta ao impulso e aplicando


na equao anterior:

(, ) = ( ) [()

2

2 +()2 ]

= ( ) [() ] [() ] = ( ) [() ] [() ]



2

[()2 ]

[() ]

Aqui, considerado que 0, assim sendo, de notar que: [() ] = [() ]


1
2

Isto, a forma de uma constante multiplicada por uma densidade gaussiana com 2 = 2 ou tambm =
1 2

, dizer: [()
2]

1 = 2( ) 2

1 1 [ 2(2)

1 ()2 ( )[ ] 1 2 2

A integral de menos a mais infinito da quantidade dentro dos colchetes 1, ento: (, ) = [()
2]

A anterior equao descreve uma verso borrada da imagem original.

PARTE 2 QUESTES PRTICAS

Problema 2.1 Para as questes abaixo, baixe as duas imagens figura lista3 1.bmp e figura lista3 2.bmp da pgina do curso, utilizando-as como originais para os problemas a seguir. a) Implemente um algoritmo de equalizao utilizando uma abordagem global, ou seja, uma abordagem baseada no histograma da imagem completa. Calcule os histogramas das imagens originais. Aplique o mtodo de equalizao global de histogramas para as duas imagens originais. Imprima as imagens originais, as imagens equalizadas e os seus respectivos histogramas. Ver programa em anexo 1, o resultado :

Figura 6. Equalizao global de histograma Imagem 1

Figura 7. Equalizao global de histograma Imagem 2

b) Implemente um algoritmo de equalizao que utilize uma abordagem baseada em histogramas locais. Ou seja, ao invs de aplicar o procedimento de equalizao sobre a imagem completa, aplique-o sobre pequenas reas da imagem (subimagens). Aplique o mtodo nas duas imagens originais, considerando reas de 5x5 e 7x7 pixels. Imprima as imagens originais, as imagens equalizadas e seus respectivos histogramas. Comente os resultados obtidos, comparando-os com os resultados obtidos anteriormente.

Figura 8. Primeira Imagem Original

Figura 9. Equalizao local de histograma 5x5

Figura 10. Equalizao local de histograma 7x7 Como pode ser observado a equalizao local de histograma no funciona adequadamente para esta imagem. Embora os histogramas mostram uma normalizao nos valores de tons de cinza, no quer dizer que a imagem de sada foi melhorada, como ocorreu na equalizao global de histograma da primeira imagem no item anterior (Figura 6). Tambm, de notar que os tamanhos 5x5 e 7x7 para subimagens, no sempre concorda com a quantidade de vezes que a imagem original pode ser subdividida, por isso na Figura 10

observado uma pequena borda preta na parte direita e inferior, porem isto afeita o histograma da imagem de sada. Ver anexo 2 Segunda imagem de sada com equalizao local de histograma:

Figura 11. Segunda Imagem Original

Figura 12. Equalizao local de histograma 5x5

Figura 10. Equalizao local de histograma 7x7 Problema 2.2 a) Escreva um programa que execute a filtragem espacial de uma imagem. O seu programa deve permitir que o usurio entre com os coeficientes e o tamanho (n n, n um nmero mpar) da mscara espacial. Ver anexo 3 para ver o programa.

Imagem Original A mscara aplicada e:

Filtragem espacial da Imagem Original 1 2 3 ( ) , = 4 5 6 7 8 9

O processo feito por convolao.

b) Utilize o programa desenvolvido no item (a) para implementar a tcnica de realce utilizando um filtro Laplaciano. Teste o seu programa utilizando a figuras catedral (disponvel na homepage). Usando a mscara: 0 1 0 = [1 4 1] 0 1 0

Este o resultado de aplicar o laplaciano (esquerda imagem original direita imagem com filtragem espacial):

Apercepo da imagem mostra que no h uma mudana muito aprecivel na imagem de sada, mas se o laplaciano multiplicado 4 vezes e depois aplicado na imagem original, o resultado :

Ver programa no anexo 4.

c) Use o seu programa para implementar o filtro de high-boost. O filtro passa-baixas utilizado deve ser : 1 1 1 = [1 1 1] 1 1 1 Teste a sua tcnica utilizando a mesma figura. O resultado mostrado na imagem a seguir:

So usadas as seguintes equaes e um valor de c=0.1. Ver programa anexo 5. (, ) = ((, )) (, ) = (, ) + (, )

Problema 2.3: Baixe o arquivo no formato TAR.GZ imagensruidosas disponvel na pgina do curso. Este arquivo contm um conjunto de imagens ruidosas. Implemente 5 filtros ( sua escolha) para remoo de rudo. Utilize os filtros implementados para remover o rudo em cada um das imagens. Comente os resultados obtidos. Quando possvel, descreva o tipo de rudo presente na imagem.

Imagem JFKreg.jpg. Aparentemente a imagem original tem um pouco de rudo e o filtro da mediana, desde meu ponto de vista o melhor para realizar a imagem.

Imagem Lena.jpg. Aparentemente a imagem original tem um pouco de rudo e o filtro da contraharmnico com Q=1, desde meu ponto de vista o melhor para realizar a imagem.

Imagem Lena-sp.jpg. A imagem original tem rudo salt-pepper e o filtro da mediana, visivelmente o melhor para realizar a imagem pois elimina os pixels com valores extremos (branco/preto puros).

Ver anexo 6.

ANEXOS Anexo 1, problema 2.1a


clear all; close all; clc; I1 = imread('fig_lista3_1.bmp','BMP'); I2 = imread('fig_lista3_2.bmp','BMP'); I1h = imhist(I1); % imhist(I1); [m,n] = size(I1); [m1,n1] = size(I1h); m1 = m1-1; I1hG = zeros(m1,n1); temp=0; for i=1:m1 temp = temp + ((I1h(i,n1)/(m*n))); I1hG(i,n1)=round(m1*temp); end I1n = zeros(m,n); for i=1:m for j=1:n I1n(i,j) = I1hG(I1(i,j),n1); end end figure,imshow(uint8(I1)); figure, imhist(I1) figure,imshow(uint8(I1n)); figure, imhist(uint8(I1n));

Anexo 2, problema 2.1b


clear all; close all; clc; % I1 = imread('fig_lista3_1.bmp','BMP'); I1 = imread('fig_lista3_2.bmp','BMP'); [m,n] = size(I1); mfinal = m; nfinal = n; valmask = 7; Ilocal = zeros(valmask,valmask); In=zeros(m,n); tempM1 = m/valmask; tempM =floor(tempM1); m=tempM*valmask; tempN1 = n/valmask; tempN =floor(tempN1); n=tempN*valmask; for i=1:valmask:m for j=1:valmask:n for i2=0:valmask-1 for j2=0:valmask-1 Ilocal(i2+1,j2+1)=I1(i+i2,j+j2); end end Ilocal = HistEq(Ilocal); for i3=0:valmask-1 for j3=0:valmask-1 In(i+i3,j+j3)=Ilocal(i3+1,j3+1); end end end end figure, subplot(1,2,1),imshow(uint8(I1));title('Imagem original') subplot(1,2,2),imhist(uint8(I1));title('Histograma da Imagem original') figure, subplot(1,2,1),imshow(uint8(In));title('Imagem Filtrada') subplot(1,2,2),imhist(uint8(In));title('Histograma da Imagem Filtrada')

FUNO HISTEQ.M
function histMat = HistEq(I1) I1h = imhist(uint8(I1)); [m,n] = size(I1); [m1,n1] = size(I1h); m1 = m1-1; I1hG = zeros(m1,n1); temp=0; for i=1:m1 temp = temp + ((I1h(i,n1)/(m*n))); I1hG(i,n1)=round(m1*temp);

end I1n = zeros(m,n); for i=1:m for j=1:n temp=I1(i,j); if temp==255 temp = 254; end I1n(i,j) = I1hG(temp+1,n1); end end histMat = I1n; end

Anexo 3, problema 2.2a


clear all; close all; clc; Tmask=input('Tamanho da mascara (# impar): '); mask = zeros(Tmask,Tmask); %Imagem de exemplo im = zeros(9,9); im(5,5)=1; for i=1:Tmask for j=1:Tmask vi = int2str(i); vj = int2str(j); Coef=input(['coeficiente i' vi ' j' vj ' :']); mask(i,j) = Coef; end end % aqui envirto o filtro mask = flip(mask); mask = fliplr(mask); [m,n]=size(im); %nova imagem Nim = zeros(m,n); %aqui coloco os valores de acordo com a mscara e a imagem [m,n] tempM1 = m/Tmask; tempM =floor(tempM1); m=tempM*Tmask; tempN1 = n/Tmask; tempN =floor(tempN1); n=tempN*Tmask; TtMask =round(Tmask/2); PM = ones(Tmask,Tmask); for i=1:m-TtMask for j=1:n-TtMask for ii=1:Tmask for jj=1:Tmask PM(ii,jj)=im(i+(ii-1),j+(jj-1)); end end val = PasarMask(Tmask,mask,PM); Nim(i+(TtMask-1),j+(TtMask-1))= val; end end Nim imshow(uint8(Nim));

Funo PasarMask
function pMas = PasarMask(Tmask, Mask, PM)

pMas = 0; for i=1:Tmask for j=1:Tmask pMas = pMas + (Mask(i,j) * PM(i,j)); end end end

Anexo 4, problema 2.2b


clear all; close all; clc; Tmask=3; im =imread('catedral.png','PNG'); im = rgb2gray(im); figure,imshow(im) mask = [0 1 0; 1 -4 1; 0 1 0]; % aqui envirto o filtro mask = flip(mask); mask = fliplr(mask); [m,n]=size(im); %nova imagem Nim = zeros(m,n); %aqui coloco os valores de acordo com a mascara e a imagem [m,n] tempM1 = m/Tmask; tempM =floor(tempM1); m=tempM*Tmask; tempN1 = n/Tmask; tempN =floor(tempN1); n=tempN*Tmask; TtMask =round(Tmask/2); PM = ones(Tmask,Tmask); for i=1:m-TtMask for j=1:n-TtMask for ii=1:Tmask for jj=1:Tmask PM(ii,jj)=im(i+(ii-1),j+(jj-1)); end end val = PasarMask(Tmask,mask,PM); Nim(i+(TtMask-1),j+(TtMask-1))= val; end end % Nim Nim = im - uint8(Nim); figure, imshow(uint8(Nim));

Nota: este programa usa a mesma funo do programa anterior

Anexo 5, problema 2.2c


clear all; close all; clc; Tmask=3; im =imread('catedral.png','PNG'); im = rgb2gray(im); figure,imshow(im) %high boost mask = [1 1 1; 1 1 1; 1 1 1]; % aqui envirto o filtro mask = flip(mask); mask = fliplr(mask); [m,n]=size(im); %nova imagem Nim = zeros(m,n); %aqui coloco os valores de acordo com a mascara e a imagem [m,n] tempM1 = m/Tmask; tempM =floor(tempM1); m=tempM*Tmask; tempN1 = n/Tmask; tempN =floor(tempN1); n=tempN*Tmask; TtMask =round(Tmask/2); PM = ones(Tmask,Tmask); for i=1:m-TtMask for j=1:n-TtMask for ii=1:Tmask for jj=1:Tmask PM(ii,jj)=im(i+(ii-1),j+(jj-1)); end end val = PasarMask(Tmask,mask,PM); Nim(i+(TtMask-1),j+(TtMask-1))= val; end end c= 0.5; Nim = im + (c*(uint8(Nim))); figure, imshow(uint8(Nim));

Anexo 6, problema 2.3


clear all; close all; clc; % f = imread('JFKreg.jpg','JPG'); % f = imread('lena.png'); % f = imread('lena-sp.png'); f = imread('lena_sigma25.png'); % f = imread('JFKreg.jpg','JPG'); % f = rgb2gray(f); f = im2double(f); figure, subplot(2,3,1),imshow(f),title('Imagem MN=3; f2=spfilt(f, 'amean', MN, MN); subplot(2,3,2),imshow(f2, [0 1]),title('filtro 3x3'); f2=spfilt(f, 'gmean', MN, MN); subplot(2,3,3),imshow(f2, [0 1]),title('filtro 3x3'); f2=spfilt(f, 'chmean', MN, MN,1); subplot(2,3,4),imshow(f2, [0 1]),title('filtro Q=1'); f2=spfilt(f, 'chmean', MN, MN,-1); subplot(2,3,5),imshow(f2, [0 1]),title('filtro Q=-1'); f3=spfilt(f, 'median', MN, MN); subplot(2,3,6),imshow(f3, [0 1]),title('filtro Original'); da mdia aritmtica da mdia geomtrica da contra-harmnico 3x3 da contra-harmnico 3x3 da mediana 3x3');

Nota: So usadas as funes spfilt.m e tofloat.m

You might also like