精华内容
下载资源
问答
  • 傅里叶变换 matlab

    2018-04-19 20:50:05
    傅里叶变换图像处理中常用的技术,用于图像的去噪,该算法是基于matlab语言编写,简单易懂。
  • 图像处理之傅里叶变换matlab实现附有源代码
  • 本程序是短时傅里叶变换matlab程序,短时傅里叶变换是信号分析的重要手段,在视频,图像,音频信号中有着非常重要的作用。
  • 傅里叶变换matlab代码

    2013-09-25 21:58:59
    图像进行傅里叶变换,逆傅里叶变换,观察频谱及幅度谱
  • 包含 4种 分数傅里叶变换matlab代码实现方式,可以用于图像加密,分数傅里叶变换分析
  • 图像傅里叶变换MATLAB实现

    千次阅读 2021-01-17 18:23:09
    本文基于《MATLAB图像处理实例详解》[杨丹,赵海滨,龙哲]2013年版 文章目录图像傅里叶变换的MATLAB实现图像的二维离散傅里叶变换傅里叶变换后平移变亮后进行傅里叶变换旋转后进行傅里叶变换添加高斯噪声傅里叶反...

    图像傅里叶变换的MATLAB实现

    本文基于《MATLAB图像处理实例详解》[杨丹,赵海滨,龙哲]2013年版

    图像的二维离散傅里叶变换

    图像的二维离散傅立叶变换,代码如下

    % 读入图片
    I = imread("img/test1.png");
    
    % 变换之后为 complex double类型
    J = fft2(I);
    
    % double类型
    K = abs(J/256);
    
    figure;
    subplot(121); imshow(I); % 显示图像
    subplot(122); imshow(uint8(K)); % 显示频谱图
    

    在这里插入图片描述

    为什么要除以256 ?

    首先将图片数据转化为实数类型。这一步将0-255的像素值转化为0.0-1.0范围内的实数。大多数图像处理API支持整数和实数类型的输入。如果输入是整数类型,这些API会在内部将输入转化为实数后处理,再将输出转化为整数。如果有多个处理步骤,在整数和实数之间的反复转化将导致精度损失,因此推荐在图像处理前将其转化为实数类型

    imshow(uint8(K)); 为什么要将图片转化为uint8形式?

    matlab中,常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算。

    在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。

    如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0 ~ 255范围。

    而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。

    傅里叶变换后平移

    % 读入图片
    I = imread("img/test1.png");
    % 傅里叶变换
    J = fft2(I);
    % 类型转换
    K = abs(J/255);
    % 对原图像进行平移
    K = fftshift(K); 
    figure;
    subplot(121); imshow(I); title('原图像');
    subplot(122); imshow(uint8(K)); title('傅里叶变换平移之后的图像');
    

    在这里插入图片描述

    变亮后进行傅里叶变换

    % 读取图像
    R = imread("img/test2.png");
    % 将图片变为灰度图像
    I = rgb2gray(R);
    % 将图像变亮,因为I为uint8类型,所以不用担心超出255的范围。
    I1 = I * exp(1);
    % 进行傅里叶变换
    J1 = fft2(I); % 原图
    J2 = fft2(I1); % 变亮后
    % 转换
    K1 = abs(J1/255);% 原图
    K2 = abs(J2/255);% 变亮后
    % 图像平移
    K1 = fftshift(K1); % 原图
    K2 = fftshift(K2); % 变亮后
    figure;
    subplot(221); imshow(R); title('原图像');
    subplot(222); imshow(I); title('灰度图像');
    subplot(223); imshow(uint8(K1)); title('傅里叶变换平移之后的图像');
    subplot(224); imshow(uint8(K2)); title('变亮之后的图像');
    

    在这里插入图片描述

    旋转后进行傅里叶变换

    % 读取图像
    R = imread("img/test2.png");
    % 将图片变为灰度图像
    I = rgb2gray(R);
    % 将图像逆时针45度旋转
    I1 = imrotate(I, 45, 'bilinear');
    % 进行傅里叶变换
    J1 = fft2(I); % 原图
    J2 = fft2(I1); % 平移后
    % 转换
    K1 = abs(J1/255);% 原图
    K2 = abs(J2/255);% 平移后
    % 图像平移
    K1 = fftshift(K1); % 原图
    K2 = fftshift(K2); % 平移后
    figure;
    subplot(221); imshow(R); title('原图像');
    subplot(222); imshow(I); title('灰度图像');
    subplot(223); imshow(uint8(K1)); title('傅里叶变换平移之后的图像');
    subplot(224); imshow(uint8(K2)); title('平移之后的图像');
    

    在这里插入图片描述

    添加高斯噪声

    % 读取图像
    R = imread("img/test2.png");
    P1 = R; % 原彩色图像
    % 将图片变为灰度图像
    I = rgb2gray(R);
    P3 = I;
    % 添加高斯噪声
    I1 = imnoise(I, 'gaussian', 0, 0.03);
    P2 = imnoise(R, 'gaussian', 0, 0.03);
    P4 = I1;
    % 进行傅里叶变换
    J1 = fft2(I); % 原图
    J2 = fft2(I1); % 添加后
    % 转换
    K1 = abs(J1/255);% 原图
    K2 = abs(J2/255);% 添加后
    % 图像平移
    K1 = fftshift(K1); % 原图
    K2 = fftshift(K2); % 添加后
    figure;
    subplot(321); imshow(P1); title('原图像');
    subplot(322); imshow(P2); title('高斯噪声');
    subplot(323); imshow(P3); title('原图像');
    subplot(324); imshow(P4); title('高斯噪声');
    subplot(325); imshow(uint8(K1)); title('原图像');
    subplot(326); imshow(uint8(K2)); title('高斯噪声');
    

    在这里插入图片描述

    傅里叶反变换

    % 读取图像
    R = imread("img/test2.png");
    % 将图片变为灰度图像
    I = rgb2gray(R);
    % 进行傅里叶变换
    J = fft2(I);
    % 图像平移
    L = fftshift(J);
    % 平移回来
    M = ifftshift(L);
    % 傅里叶反变换
    M = ifft2(M);
    
    figure;
    subplot(121); imshow(I); title('原图');
    subplot(122); imshow(uint8(M)); title('反变换');
    

    在这里插入图片描述

    展开全文
  • 二维离散傅里叶变换 matlab

    万次阅读 2018-10-17 23:21:23
    从数学意义上看,傅里叶变换试讲一个图像转换为一系列周期函数来处理的。从物理效果上看,傅里叶变换从空间域转换到频率域。换句话说傅里叶变换是将图像的灰度分布函数转换为图像的频率分布函数。实际上对图像进行二...

      从数学意义上看,傅里叶变换试讲一个图像转换为一系列周期函数来处理的。从物理效果上看,傅里叶变换从空间域转换到频率域。换句话说傅里叶变换是将图像的灰度分布函数转换为图像的频率分布函数。实际上对图像进行二维傅里叶变换得到频谱图,就是图像梯度的分布图,傅里叶频谱图上看到的明暗不一的亮点就是某一点与领域差异的强弱,即梯度的大小(该点的频率大小)。

    一.原理

    1、代数形式的傅里叶变换:

    2、矩阵形式的二维离散傅里叶变换:

    傅里叶变换不管是在图像处理中还是在科研中都有着很多的用处。例如在阿贝波特空间滤波实验中,就使用了透镜将图像从空间域转换到频率域进行滤波从而实现一系列的变换效果。

    二、傅里叶变换的应用

    通过傅里叶变换将图像从事于转换到频域,然后进行相应的处理,例如滤波和增强等,然后再通过傅里叶反变换将图像从频域转换到时域,就可以实现图像的处理。 在这里 介绍一种滤波器:

    用低通滤波处理图像:

    可以看到滤波器的截止频率越低,图像越模糊;截止频率越高,滤波的效果越好。

    程序:

    i=imread('F:\matlab\MATLAB上机操作\图形\data\cameraman.tif');
    i=im2double(i);
    j=fftshift(fft2(i));
    [x,y]=meshgrid(-128:127,-128:127);%产生离散数据
    z=sqrt(x.^2+y.^2);
    d1=10;d2=60;%滤波器截止频率
    n=6;%滤波器的阶数
    h1=1./(1+(z/d1).^(2*n));
    h2=1./(1+(z/d2).^(2*n));
    k1=j.*h1;
    k2=j.*h2;
    l1=ifft2(ifftshift(k1));
    l2=ifft2(ifftshift(k2));
    figure
    subplot(131);imshow(i);title('orignal')
    subplot(132);imshow(real(l1));title('10Hz')
    subplot(133);imshow(real(l2));title('60Hz')

     

    展开全文
  • 离散时间傅里叶变换Matlab实现

    万次阅读 2018-09-22 17:24:01
    %%离散时间傅里叶变换DTFT %若x(t)=cos(2*pi*t),取样时间为0.1s,得到一个32的有限序列,利用matlab计算他的DFT并画出图像; clear; ts=0.1;%取样时间 fs=1/ts;%周期 N=32;%总取样次数 n=0:N-1; xn=cos(2*pi*n*ts)...

    一、代码实现 

    
    %%离散时间傅里叶变换DTFT
    %若x(t)=cos(2*pi*t),取样时间为0.1s,得到一个32的有限序列,利用matlab计算他的DFT并画出图像;
    clear;
    ts=0.1;%取样时间
    fs=1/ts;%周期
    N=32;%总取样次数
    n=0:N-1;
    xn=cos(2*pi*n*ts);%取离散信号数据
    stem(n,xn);%绘制时域取样图
    title('时域取样图');
    k=0:N-1;
    wn=exp(-j*2*pi/N);
    nk=n'*k;
    wnnk=wn.^nk;
    xk=xn*wnnk;
    figure;
    subplot(2,1,1);
    stem(k*fs/N,abs(xk));
    xlabel('幅频特性');
    subplot(2,1,2);
    stem(k*fs/N,angle(xk));
    xlabel('相频特性');

     

    二、幅频特性

    幅频特性就是指系统频率响应的幅度随频率变化的曲线,幅度大的地方对应通带,也就是对应频率成分通过系统有较小衰减,幅度小的地方对应阻带,也就是对应频率成分通过系统有较大衰减,根据这个特性,可以用来观测比较滤波器的情况,观察其是否符合要求也就是作为滤波器的技术指标。

    三、相频特性

     

    展开全文
  • 可以使用 MATLAB傅里叶变换函数和反变换函数。 原理部分 低通滤波器指去除图像中的高频成分,而低通滤波器指去除图像中的高频成分。 考虑的有三种低通滤波器:理想滤波器、布特沃斯滤波器和高斯滤波器。 ...

    要求 

    可以使用 MATLAB 的傅里叶变换函数和反变换函数。

    原理部分

     

    • 低通滤波器指去除图像中的高频成分,而低通滤波器指去除图像中的高频成分。
    • 考虑的有三种低通滤波器:理想滤波器、布特沃斯滤波器和高斯滤波器。
    • 理想低通滤波器:以原点为圆心,D为半径的圆内, 无衰减地通过所有频率,在圆外截断所有频率。由下面函数确定:
    • 具体参见下图:

     

    Matlab函数介绍

     

     

    • Fft2:二维快速傅里叶变换
    • Fftshift:移动零频点到频谱中间
    • Ifft2: 二维快速反傅里叶变换 

     

    算法思路

    对图像进行傅里叶变换(FFT),得到频谱;用理想低通滤波器对频谱滤波;对滤波后的频谱进行反傅里叶变换(IFFT),得到滤波后图像。见下图:

     

    具体编程流程

     

    1) 原始正常的图像,加噪处理,得到img_noise;

    2) img_noise图像进行傅里叶变换,得到频谱;

    3) 对得到的频谱进行理想低通滤波;

    4) 对滤波后的频谱进行反傅里叶变换,得到滤波后图像

    源码

     

    %傅里叶变换的低通滤波
    %低通滤波选用理想低通滤波方式
    % d0 是阈值,可以修改,初步设定为50
    % 
    clear all;
    close all;
    clc;
    
    img_origin=imread('C:\Users\yytang\Desktop\lena.jpg');
    img_origin=rgb2gray(img_origin);
    d0=50;  %阈值
    img_noise=imnoise(img_origin,'salt'); % 加椒盐噪声
    %img_noise=imnoise(img_origin,'gaussian'); % 加高斯噪声
    img_f=fftshift(fft2(double(img_noise)));  %傅里叶变换得到频谱
    [m n]=size(img_f);
    m_mid=fix(m/2);  %是不是可以有其他取整方式?
    n_mid=fix(n/2);  
    img_lpf=zeros(m,n);
    for i=1:m
        for j=1:n
            d=sqrt((i-m_mid)^2+(j-n_mid)^2);   %理想低通滤波,求距离
            if d<=d0
                h(i,j)=1;
            else
                h(i,j)=0;
            end
            img_lpf(i,j)=h(i,j)*img_f(i,j);  
        end
    end
    
    img_lpf=ifftshift(img_lpf);    %反傅里叶变换
    img_lpf=uint8(real(ifft2(img_lpf)));  %取实数部分
    
    subplot(2,2,1);imshow(img_origin);title('原图');
    subplot(2,2,2);imshow(img_noise);title('噪声图');
    subplot(2,2,3);imshow(img_lpf);title('理想低通滤波');
    

     

    测试结果

     

    分别对高斯噪声和椒盐噪声处理过的图像进行低通滤波,同时对于不同的阈值进行测试,具体测试结果见下图。

     

    图1 高斯噪声阈值50结果图

     

    图2 高斯噪声阈值为30结果图

    图3 椒盐噪声阈值50的结果图

    图4 椒盐噪音阈值30的结果图

     

    思考1:可以尝试使用其他滤波方式?比如?

    思考2:rgb图像如何处理?

    展开全文
  • 傅里叶变换实现图像压缩 题目 首先将图像分割为8x8的子图像,对每个子图像进行FFT.对每个子图像中的64个系数,排序后,舍去小的变换系数,只保留靠前的16个系数,实现4: I的图像压缩。 代码 t=imread('a6.jpg'); t=...
  • matlab中,利用傅里叶变换图像进行处理,实现图像锐化功能。代码
  • 图像处理】使用一维DFT叠加实现对图片的二维傅里叶变换 MATLAB 一维DFT 将DFT转化为矩阵运算 参考文档 Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N 是...
  • 资源是本人在计算机图像处理课程的结课作业做的一个图像傅里叶变换,可以完成把图像从空间域转换为频率域
  • 三课时精通matlab傅里叶变换及逆变换和快速傅里叶变换 图像和算法等领域有...
  • 基于MATLAB图像傅里叶变换
  • matlab 图像傅里叶变换 (源代码)

    热门讨论 2011-12-08 22:20:55
    matlab 图像傅里叶变换 (源代码)
  • 快速傅里叶变换matlab手写代码UW AMATH 482 的各种项目:数据分析的计算方法 这个 repo 包含我在华盛顿大学参加的数据分析计算方法课程中的项目报告。 这是我本科生涯中最喜欢的课程,在培养我对数据科学和机器学习...
  • Matlab图像进行傅里叶变换实例

    万次阅读 多人点赞 2019-04-10 22:15:55
    使用matlab对peppers.png图像进行二维傅里叶快速变换及逆变换,从简单的实例中发现问题
  • MATLAB 图像傅里叶变换

    千次阅读 2015-08-01 16:32:51
    clc; clear all; close all; img=imread('C:/lena.jpg'); f=fft2(img); %对图像进行傅里叶变换 f=fftshift(f); %将频谱中心移到中心 r=real(f); i=imag(f); fudu=log(abs(f)); %图像得幅度 xiangwei=log
  • 图像处理 二维离散傅里叶变换DFT matlab代码图像处理领域离散傅里叶变换的作用二维离散傅里叶变换二维离散傅里叶变换公式将二维的离散傅里叶变换进行转化将系数转化为矩阵形式注意,从矩阵的乘积i形式可以看出,原来...
  • matlab快速傅里叶变换进行数字图像处理,读入一幅灰度图像并实现图像的快速傅立叶变换,求变换后的系数分布。
  • 读取MATLAB自带图像,对该图像进行直方图均衡化,显示处理前后的图像及直方图的变化,附上代码及相关说明。 clc;clear;close all; path(path,'D:\R2019a\toolbox\images\imdata'); % 读取路径图像信息 im=imread('...
  • 一 实验题目 书上 P274 页找两张图求其一的二维傅里叶变换图像模 相位模 *0 相位 1*相位第一张的相位 * 第二张的模 二 算法说明 利用 matlab图像进行 fft2,fftshift,abs,angle, Ifftshift,iff2t) 等一系列函数...
  • 一 实验题目 书上P274页找两张图求其一的二维傅里叶变换图像模 相位模*0相位1*相位第一张的相位*第二张的模 二 算法说明 利用matlab图像进行fft2,fftshift,abs,angle, Ifftshift,iff2t)等一系列函数变换得到想要...
  • 图像傅里叶变换——MATLAB

    千次阅读 2017-06-21 13:25:53
    clc; clear all;...%做付fft变换-abs(Y)可得到幅度谱,angle(Y)可得到相位谱。 ffimg=fftshift(fimg);%将零点移动到中心 simg=log(1+abs(ffimg));%对幅值做对数变换,压缩动态范围 figure; subplo
  • (很全)整理的离散傅里叶变换图像处理磁共振k空间应用ppt、word及matlab代码
  • Matlab图像快速傅里叶变换简单实现

    热门讨论 2010-04-17 20:18:15
    用逐步增加算法,简单实现二维的傅里叶变换

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 610
精华内容 244
关键字:

傅里叶变换matlab图像

matlab 订阅