Baixe o app para aproveitar ainda mais
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
Compartilhar