Skip to content

Instantly share code, notes, and snippets.

@johnnyferreiradev
Created April 25, 2019 00:07
Show Gist options
  • Save johnnyferreiradev/5e333e95053eab20220b2d4448f76f38 to your computer and use it in GitHub Desktop.
Save johnnyferreiradev/5e333e95053eab20220b2d4448f76f38 to your computer and use it in GitHub Desktop.
Transformada de Fourier com filtro passa-altas
close all,
clear all,
clc
%Leitura da Imagem
imgg = imread ('lenna.png');
%Transformar a imagem de RGB para a escala de cinza
img = rgb2gray(imgg);
%Transforma a imagem em double
img = im2double (img);
%Mostra a imagem
figure (1), imshow(img);
title('Imagem Original')
%Calcula a transformada de Fourier da Imagem
img_f = fft2(img);
%Reordena as frequencias (centraliza as frequencias baixas)
img_f_ord = fftshift(img_f);
%Parte real da Transformada de Fourier
real_img_f_ord = real (img_f_ord);
%Magnitude da Transformada de Fourier
abs_img_f_ord = abs(img_f_ord);
figure(2), imshow(real_img_f_ord);
title ('Espectro da Imagem')
figure(3), imshow(log(real_img_f_ord +1), []);
title('Espectro da imagem - Escala logaritmica')
%Transformada inversa de Fourier
img_if = ifft2(img_f);
figure(4), imshow(img_if);
title('Transformada inversa de Fourier')
%Filtro passa-baixas ideal
raio = 40;
i = 1:220;
j = 1:220;
close all,
clear all,
clc
%Leitura da Imagem
imgg = imread ('lenna.png');
%Transformar a imagem de RGB para a escala de cinza
img = rgb2gray(imgg);
%Transforma a imagem em double
img = im2double (img);
%Mostra a imagem
figure (1), imshow(img);
title('Imagem Original')
%Calcula a transformada de Fourier da Imagem
img_f = fft2(img);
%Reordena as frequencias (centraliza as frequencias baixas)
img_f_ord = fftshift(img_f);
%Parte real da Transformada de Fourier
real_img_f_ord = real (img_f_ord);
%Magnitude da Transformada de Fourier
abs_img_f_ord = abs(img_f_ord);
figure(2), imshow(real_img_f_ord);
title ('Espectro da Imagem')
figure(3), imshow(log(real_img_f_ord +1), []);
title('Espectro da imagem - Escala logaritmica')
%Transformada inversa de Fourier
img_if = ifft2(img_f);
figure(4), imshow(img_if);
title('Transformada inversa de Fourier')
%Filtro passa-baixas ideal
raio = 40;
i = 1:220;
j = 1:220;
for i = 1:220,
for j = 1:220,
w = i - 220/2;
k = j - 220/2;
filtroPB(i,j) = 1;
if (sqrt(w*w + k*k) < raio),
filtroPB(i,j) = 0;
end
end
end
figure(5), imshow(filtroPB);
title('Filtro passa-baixas');
%Multiplicação ponto a ponto da função de trsnferencia da ...
%filtro
img_F_PB = filtroPB.*img_f_ord;
%mostra o filtro utilizado
figure(6), imshow(real(img_F_PB));
title('Filtro passa-baixas com espectro');
%imagem filtrada passa baixas
img_if_PB = ifft2(img_F_PB);
figure(7), imshow(real(img_if_PB));
title('Imagem Filtrada - Passa baixas')
%filtro
figure(8), surf(filtroPB);
title('Filtro');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment