zoukankan      html  css  js  c++  java
  • matlab实现傅里叶变换

    代码实现

    clc;clear;close all;
    
    %读取图片,展示图片
    I=imread('p3.jpg');
    figure('Name','原图','NumberTitle','off');imshow(I);
     
    I=rgb2gray(I); %I = rgb2gray(RGB) 将真彩色图像 RGB 转换为灰度图像 I。
    I=im2double(I); %I = im2double(I) 将图像 I 转换为双精度。
    figure('Name','灰度图','NumberTitle','off');imshow(I,[0,1]);%展示原灰度图像
     
    F=fft2(I); %Y = fft2(X) 使用快速傅里叶变换算法返回矩阵的二维傅里叶变换,这等同于计算 fft(fft(X).').'。如果 X 是一个多维数组,fft2 将采用高于 2 的每个维度的二维变换。输出 Y 的大小与 X 相同。
    Fm=abs(F);%得到变换后的模
    T=log(Fm+1);%求自然对数
    figure('Name','傅里叶变换频谱图','NumberTitle','off');imshow(T,[]);%展示傅里叶变换后的图
     
    Ff=fftshift(F);%快速傅里叶变换 Y = fftshift(X) 通过将零频分量移动到数组中心,重新排列傅里叶变换 X。
    Fm=abs(Ff);
    T=log(Fm+1);
    figure('Name','中心偏移后的傅里叶变换频谱图','NumberTitle','off');imshow(T,[]); 
    
    r=log(abs(real(Ff)));
    i=log(abs(imag(Ff)));
    figure('Name','中心偏移后的傅里叶变换频谱图实部','NumberTitle','off');imshow(r,[]);
    figure('Name','中心偏移后的傅里叶变换频谱图虚部','NumberTitle','off');imshow(i); 
    
    
    J=ifft2(F);%X = ifft2(Y) 使用快速傅里叶变换算法返回矩阵的二维离散傅里叶逆变换。
    figure('Name','傅里叶逆变化得到的灰度图','NumberTitle','off');imshow(J,[0,1]);
    
    open fftshift
    open ifft2
    open fft2
    
    
    

    结果:

    原图

    image-20201204222737888

    灰度图

    image-20201204222944348

    傅里叶频谱图

    image-20201204223005138

    中心偏移后的傅里叶频谱图

    image-20201204223340844

    中心偏移后频谱图的实部

    image-20201204223405703

    中心偏移后频谱图的虚部

    image-20201204223424411

    傅里叶逆变换得到的灰度图

    image-20201204223445600

  • 相关阅读:
    病毒软件测试代码
    如何将WIN安全设置重置回默认值
    今天值班非常不爽。
    FTP命令(2)
    WORD操作
    DELPHI事务
    DELPHI一些常用的技巧
    钩子学习心得
    (转 )Delphi指针如何指向使用with开域语句创建的无名组件对象
    WebBrowser 操作记要 (DELPHI)
  • 原文地址:https://www.cnblogs.com/lightice/p/14088105.html
Copyright © 2011-2022 走看看