Advertisement

图像处理--傅里叶图像及傅里叶变换

阅读量:
复制代码
    二维离散傅里叶变换的旋转性
    源码如下:
    >> clear
    >> %构造原始图像
     I=zeros(256,256);
    I(28:228,108:148)=1;
    subplot(2,2,1),imshow(I);
     
     
    %求原始图像的傅里叶频谱
    J=fft2(I);
    F=abs(J);
    J1=fftshift(F);
    subplot(2,2,2),imshow(J1,[5,50]);
     
     
     %对原始图像进行旋转
     K=imrotate(I,315,'bilinear','crop');
    subplot(2,2,3),imshow(K);
     
     
     %求旋转后图像的傅里叶频谱
    K1=fft2(K);
    F=abs(K1);
    K2=fftshift(F);
    subplot(2,2,4),imshow(K2,[5,50]);
     
     
    %加标题,可以加在subplot之后。
    subplot(2,2,1),title('原始图像');
    subplot(2,2,2),title('原图像的傅里叶频谱');
    subplot(2,2,3),title('旋转后的图像');
    subplot(2,2,4),title('旋转后图像的傅里叶频谱');
    代码结果图像:
复制代码
    >> clear;
    >> I=imread('C:\Users\hling\Desktop\1410575439.png');
    >> figure(1)
    >> imshow(real(I));
    >> I=I(:,:,3);
    >> fftI=fft2(I);
    >> sfftI=fftshift(fftI);
    >> RRfdp=real(sfftI);
    >> IIfdp=imag(sfftI);%取其实部和虚部
    >> a=sqrt(RRfdp.^2+IIfdp.^2);
    >> a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225;%归一化
    >> subplot(2,2,1),imshow(real(a));
    >> b=angle(fftI);
    >> subplot(2,2,2),imshow(real(b));
    >> theta=30;
    >> RR1=a*cos(theta);
    >> II1=a*sin(theta);
    >> fft
    Error using fft
    Not enough input arguments.
     
    >> fftI1=RR1+i.*II1;
    >> C=ifft2(fftI1)*255;
    >> subplot(2,2,3),imshow(real(C));
    >> 
    >> mm=150;
    >> RR2=mm*cos(angle(fftI));
    >> II2=mm*sin(angle(fftI));
    >> fftI2=RR2+i.*II2;
    >> D=ifft2(fftI2);
    >> subplot(2,2,4),imshow(real(D));
    >> subplot(2,2,1),title('幅值谱');
    >> subplot(2,2,2),title('相位谱');
    >> subplot(2,2,3),title('幅值谱重构图像');
    >> subplot(2,2,4),title('相位谱重构图像');

全部评论 (0)

还没有任何评论哟~