图像处理之傅里叶变换

1. 图像傅里叶变换

图像处理之傅里叶变换_第1张图片
图像处理之傅里叶变换_第2张图片

clc, clear, close all;
Image = imread('peppers.jpg');
grayI = rgb2gray(Image);
DETI1 = fft2(grayI);
ADETI1 = abs(DETI1);
top = max(ADETI1(:));
bottom = min(ADETI1(:));
ADETI1 = (ADETI1 - bottom)/(top - bottom) * 100;
ADETI2 = fftshift(ADETI1);
subplot(231), imshow(Image), title('原图');
subplot(232), imshow(ADETI1), title('原频谱图');
subplot(233), imshow(ADETI2), title('移位频谱图');

Image = imread('desert.jpg');
grayI = rgb2gray(Image);
DETI1 = fft2(grayI);
ADETI1 = abs(DETI1);
top = max(ADETI1(:));
bottom = min(ADETI1(:));
ADETI1 = (ADETI1 - bottom)/(top - bottom) * 100;
ADETI2 = fftshift(ADETI1);
subplot(234), imshow(Image), title('原图');
subplot(235), imshow(ADETI1), title('原频谱图');
subplot(236), imshow(ADETI2), title('移位频谱图');

图像处理之傅里叶变换_第3张图片

图像DFT后,四角部分对应低频成分,中央部分对应高频成分;
将频谱图进行移位后,频谱图中间部分为低频部分,越靠外边频率越高;
图像中的能量主要集中在低频区,高频能量很少或为零。

2. 基于傅里叶变换的图像滤波

图像处理之傅里叶变换_第4张图片

clc, clear, close all;
Image = imread('desert.jpg');
subplot(131), imshow(Image), title('原图');
grayIn = rgb2gray(Image);
[h, w] = size(grayIn);
DEFI = fftshift(fft2(grayIn));  % 傅里叶变换及频谱中心化
cf = 50;                        % 截止频率
HDEFI = DEFI;
HDEFI(h/2-cf:h/2+cf,w/2-cf:w/2+cf) = 0;     % 低频置0:高通滤波
grayOut = uint8(abs(ifft2(ifftshift(HDEFI))));
subplot(132), imshow(grayOut), title('高通滤波');
LDEFI = zeros(h, w);
LDEFI(h/2-cf:h/2+cf,w/2-cf:w/2+cf) = DEFI(h/2-cf:h/2+cf,w/2-cf:w/2+cf);     % 保留低频,高频置0:低通滤波
grayOut2 = uint8(abs(ifft2(ifftshift(LDEFI))));
subplot(133), imshow(grayOut2), title('低通滤波');

图像处理之傅里叶变换_第5张图片

你可能感兴趣的:(图像处理,MATLAB,图像处理,matlab)