Buscar

Tarefa Filtro Ideal Frequência

Prévia do material em texto

FILTRO IDEAL FREQUÊNCIA
IMAGENS MÉDICAS 2
Profª. Ana Claudia Patrocínio
Maria Vitória Garcia - 11821EBI013
Uberlândia, 09 de Maio de 2023
http://www.feelt.ufu.br/pessoas/docentes/eduardo-lazaro-martins-naves
Código Imagem 1
Passa baixa - fc = 30
clear all;
clc;
pkg load image;
im_in = imread('mamografia 7_2.jpg');
im_in_double = im2double(im_in);
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 30; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
1
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropbi); title('Filtro ideal');
2
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
Passa baixa - fc = 170
clear all;
clc;
pkg load image;
im_in = imread('mamografia 7_2.jpg');
im_in_double = im2double(im_in);
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 170; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
3
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
4
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropbi); title('Filtro ideal');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
Passa alta - fc = 30
clear all;
clc;
pkg load image;
im_in = imread('mamografia 7_2.jpg');
im_in_double = im2double(im_in);
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 30; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
5
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
filtropai= 1-filtropbi;
GC2 = filtropai .* DFTC; %multiplicação do filto pelo espectro centralizado
G2 = ifftshift( GC2 ); %descentralização do espectro
6
im_filtrada =uint8( real ( ifft2 ( G2 ) )); % transformada inversa do espectro resultante
descentralizado
plot(im_in, DFTC, filtropai, im_filtrada);
% Inversão do filtro ideal
filtropai = 1 - filtropbi;
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro inverso pelo espectro centralizado
GC2 = filtropai .* DFTC;
% Descentralização do espectro resultante da operação acima
G2 = ifftshift(GC2);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G2)));
% Plotagem dos resultados
7
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
% Plotagem dos gráficos
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
sgtitle('Gráficos');
Passa alta - fc = 170
clear all;
clc;
pkg load image;
im_in = imread('mamografia 7_2.jpg');
im_in_double = im2double(im_in);
8
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 170; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
9
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
filtropai= 1-filtropbi;
GC2 = filtropai .* DFTC; %multiplicação do filto pelo espectro centralizado
G2 = ifftshift( GC2 ); %descentralização do espectro
im_filtrada =uint8( real ( ifft2 ( G2 ) )); % transformada inversa do espectro resultante
descentralizado
plot(im_in, DFTC, filtropai, im_filtrada);
% Inversão do filtro ideal
filtropai = 1 - filtropbi;
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
10
DFTC = fftshift(DFT);
% Multiplicação do filtro inverso pelo espectro centralizado
GC2 = filtropai .* DFTC;
% Descentralização do espectro resultante da operação acima
G2 = ifftshift(GC2);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G2)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
% Plotagem dos gráficos
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
11
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
sgtitle('Gráficos');
Resultados
Fig. 1 - Passa baixa - fc = 30
Fig. 2 - Passa baixa - fc = 170
12
Fig. 3 - Passa alta - fc = 30
13
Fig. 4 - Passa alta - fc = 170
Código Imagem 2
Passa baixa - fc = 30
clear all;
clc;
pkg load image;
im_in = imread('mamografia 9_2.tif');
im_in_double = im2double(im_in);
% Construção do filtro ideal
14
[M,N] = size(im_in_double);
fcorte = 30; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
15
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropbi); title('Filtro ideal');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
Passa baixa - fc = 170
clear all;
clc;
pkg load image;
im_in = imread('mamografia 9_2.tif');
im_in_double = im2double(im_in);
16
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 170; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
17
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
filtropai= 1-filtropbi;
GC2 = filtropai .* DFTC; %multiplicação do filto pelo espectro centralizado
G2 = ifftshift( GC2 ); %descentralização do espectro
im_filtrada =uint8( real ( ifft2 ( G2 ) )); % transformada inversa do espectro resultante
descentralizado
plot(im_in, DFTC, filtropai, im_filtrada);
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropbi); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
Passa alta - fc = 30
clear all;
18
clc;
pkg load image;
im_in = imread('mamografia 9_2.tif');
im_in_double = im2double(im_in);
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 30; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
end
% Transformada de Fourier - espectro de frequencias
19
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
filtropai= 1-filtropbi;
GC2 = filtropai .* DFTC; %multiplicação do filto pelo espectro centralizado
G2 = ifftshift( GC2 ); %descentralização do espectro
im_filtrada =uint8( real ( ifft2 ( G2 ) )); % transformada inversa do espectro resultante
descentralizado
plot(im_in, DFTC, filtropai, im_filtrada);
% Inversão do filtro ideal
filtropai = 1 - filtropbi;
20
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro inverso pelo espectro centralizado
GC2 = filtropai .* DFTC;
% Descentralização do espectro resultante da operação acima
G2 = ifftshift(GC2);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G2)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
21
% Plotagem dos gráficos
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
sgtitle('Gráficos');
Passa alta - fc = 170
clear all;
clc;
pkg load image;
im_in = imread('mamografia 9_2.tif');
im_in_double = im2double(im_in);
% Construção do filtro ideal
[M,N] = size(im_in_double);
fcorte = 170; % Mudança na frequência de corte
filtropbi = zeros(M,N);
cx = floor(M/2)+1;
22
cy = floor(N/2)+1;
for x = 1:M
for y = 1:N
D = sqrt((x-cx)^2 + (y-cy)^2);
if D < fcorte
filtropbi(x,y) = 1;
end
end
end
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro pelo espectro centralizado
GC = filtropbi .* DFTC;
% Descentralização do espectro resultante da operação acima
G = ifftshift(GC);
23
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G)));
filtropai= 1-filtropbi;
GC2 = filtropai .* DFTC; %multiplicação do filto pelo espectro centralizado
G2 = ifftshift( GC2 ); %descentralização do espectro
im_filtrada =uint8( real ( ifft2 ( G2 ) )); % transformada inversa do espectro resultante
descentralizado
plot(im_in, DFTC, filtropai, im_filtrada);
% Inversão do filtro ideal
filtropai = 1 - filtropbi;
% Transformada de Fourier - espectro de frequencias
DFT = fft2(im_in_double);
% Centralização do espectro de frequência
DFTC = fftshift(DFT);
% Multiplicação do filtro inverso pelo espectro centralizado
GC2 = filtropai .* DFTC;
% Descentralização do espectro resultante da operação acima
24
G2 = ifftshift(GC2);
% Transformada inversa do espectro resultante descentralizado
im_filtrada = uint8(real(ifft2(G2)));
% Plotagem dos resultados
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
% Plotagem dos gráficos
figure;
subplot(2,2,1); imshow(im_in); title('Imagem original');
subplot(2,2,2); imshow(log(1+abs(DFTC)),[]); title('Espectro de frequências');
subplot(2,2,3); imshow(filtropai); title('Filtro inverso');
subplot(2,2,4); imshow(im_filtrada); title('Imagem filtrada');
sgtitle('Gráficos');
Resultados
Fig. 5 - Passa baixa - fc = 30
25
Fig. 6 - Passa baixa - fc = 170
26
Fig. 7 - Passa alta - fc = 30
27
Fig. 8 Passa alta - fc = 170
● O espectro de Fourier foi muito diferente das 2 imagens que você
escolheu? Comente.
Nas imagens que escolhi não teve tanta diferença assim, analisando
visualmente, talvez não seja a melhor técnica aplicada para imagens
de mamografia.
● O que o aumento/diminuição da frequência de corte promove nas
imagens?
Nas imagens escolhidas não foi possível identificar diferenciação pois
o resultado final ficou apenas tons escuros tentando ao preto, isso em
todas as frequências e tanto no aumento quanto na diminuição.
● Foi possível observar o efeito de ringing (ondulações) em alguma
das suas imagens tanto com passa baixa quanto com passa alta?
Não foi possível observar.
● Explique em quais situações seria útil, por exemplo, fazer uma
filtragem no domínio da frequência, em vez de uma filtragem no
28
domínio espacial?
Poderia ser útil em uma filtragem de ruído específico, sendo assim no
domínio da frequência seria mais certeiro a eliminação do mesmo.
Filtros de alta ordem, no qual ao ser aplicado no domínio da frequência
implica em menos perdas de detalhes da imagem. Detecção de bordas
pois a filtragem no domínio da frequência faz com que as bordas
aparecem como mudanças abruptas, sendo mais fácil de identificar.
29

Continue navegando