图中可以看出,高频(Fourier变换后的四周)对应着图片边缘(细节)信息,低频(Fourier变换后的中心)对应着图片平坦区域。
i=imread('333.png');
j=imread('222.png');
ii=rgb2gray(i);
jj=rgb2gray(j);
%=======显示原图
subplot(2,3,1),imshow(ii);
title('original_i');
subplot(2,3,4),imshow(jj);
title('original_j');
%=======fft
i1 = fft2(ii);
i2 =fftshift(i1);
j1 = fft2(jj);
j2 =fftshift(j1);
%=======图大小和遮挡半径(方形)
[m,n] = size(i2);
r = 20;
%=======去掉第一张图的低频信息
for p = -r:r
for q = -r:r
i2(m/2+p,n/2+q) = 0;
end
end
%=======去掉第二张图的高频信息
for p1 = 1:m
for q1 = 1:n
if p1>=m/2-r && p1<=m/2+r && q1>=n/2-r && q1<=n/2+r
j2(p1,q1) = j2(p1,q1);
else
j2(p1,q1) = 0;
end
end
end
%=======可视化转换坐标后的傅里叶频谱图
i3=log(abs(i2));
j3=log(abs(j2));
subplot(2,3,2),imshow(i3,[]);
title('Fourier_i');
subplot(2,3,5),imshow(j3,[]);
title('Fourier_j');
%=======反FT
i5 = real(ifft2(ifftshift(i2))); %===频域的图反变换到空域 并取实部
i6 = im2uint8(mat2gray(i5)); %===取其灰度图
subplot(2,3,3),imshow(i6);
title('anti-Fourier_i');
j5 = real(ifft2(ifftshift(j2))); %===频域的图反变换到空域 并取实部
j6 = im2uint8(mat2gray(j5)); %===取其灰度图
subplot(2,3,6),imshow(j6);
title('anti-Fourier_j');
%=======低频高频结合
ij = i2+j2;
ij1 = real(ifft2(ifftshift(ij))); %===频域的图反变换到空域 并取实部
ij2 = im2uint8(mat2gray(ij1)); %===取其灰度图
figure
imshow(ij2);
title('anti-Fourier_i');