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

  • 相关阅读:
    SublimeText3激活
    Mysql数据备份
    supervisor介绍与使用
    spark-submit介绍
    Spark之spark.sql
    MarkDown编写方法
    Nginx配置多级代理后获取用户真实IP
    Hive之UDF解释
    Hive之分组取前几条记录
    Hive之Map和Reduce的优化
  • 原文地址:https://www.cnblogs.com/lightice/p/14088105.html
Copyright © 2011-2022 走看看