对图像进行DFT变换,并置其不同区域内的系数为零,进行IDFT。
clear;% 清除变量
close all;% 关闭生成的画图窗
= imread('testjpg';% 读取彩色图像
subplot(2,2,1);imshow(l); title(原图像):% 显示原始图像
= rgb2gray(l);% 转换为灰度图像
fft = fft2(); % 进行二维DFT变换
fft shift = fftshift(l fft); % 进行频谱移动
subplot(2,2,2); imshow(log(abs(l ft shift)+1),); title(频谱图像);% 显示频谱图像
% 频谱中心
cx = size(l fft shift,2)/2;
cy = size(l fft shift,1)/2;
% 保留频谱中心周围32个点,其他全部置零
mask = zeros(size(l fft shift));
mask(cy-16:cy+16,CX-16:cx+16) = 1;
fft shift masked = I fft shift .* mask;
fft masked = ifftshift(l fft shift masked); % 进逆频谱移动
masked = ifft2(l fft masked):;% 进行逆DFT变换
subplot(2,2,3); imshow(log(abs(l ft shift masked)+1), ); title(频普图像-保留中心区域); % 显示保留中心区域后的频普图像
subplot(2,2,4); imshowuint8(abs(l masked)): title(去掉低频区域的图像);
% 显示去掉低频区域的图像