欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【matlab】Frequency Fusion

程序员文章站 2022-07-14 16:50:12
...

【matlab】Frequency Fusion

图中可以看出,高频(Fourier变换后的四周)对应着图片边缘(细节)信息,低频(Fourier变换后的中心)对应着图片平坦区域。

【matlab】Frequency Fusion

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');