-
matlab图像傅里叶变换代码,MATLAB图像处理_傅里叶变换
2021-04-20 01:53:40使用matlab中自带的fft等相关的函数进行操作。代码如下:clear;clc;img=imread('test.jpg');... %傅里叶变换f=fftshift(f); %使图像对称r=real(f); %求图像频域实部i=imag(f); %求图像频域虚部margin=log...使用matlab中自带的fft等相关的函数进行操作。
代码如下:
clear;
clc;
img=imread('test.jpg');
img=rgb2gray(img);
f=fft2(img); %傅里叶变换
f=fftshift(f); %使图像对称
r=real(f); %求图像频域实部
i=imag(f); %求图像频域虚部
margin=log(abs(f)); %图像幅度谱,加log便于显示
phase=log(angle(f)*180/pi); %图像相位谱
l=log(f);
subplot(2,2,1),imshow(img),title('源图像');
subplot(2,2,2),imshow(l,[]),title('频谱');
subplot(2,2,3),imshow(margin,[]),title('幅度谱');
subplot(2,2,4),imshow(phase,[]),title('相位谱');
-
基于MATLAB的图像傅里叶变换
2018-04-02 08:10:22基于MATLAB的图像傅里叶变换 -
MATLAB 图像的傅里叶变换
2015-08-01 16:32:51clc; 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=logclc; 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(angle(f)*180/pi); %了图像的相位 pinpu=log(f); %图像频谱 subplot(2,2,1) imshow(img); subplot(2,2,2) imshow(pinpu,[]) subplot(2,2,3) imshow(fudu,[]) subplot(2,2,4) imshow(xiangwei,[])
-
Matlab图像快速傅里叶变换简单实现
2010-04-17 20:18:15用逐步增加算法,简单实现二维的傅里叶变换 -
Matlab对图像进行傅里叶变换实例
2019-04-10 22:15:55使用matlab对peppers.png图像进行二维傅里叶快速变换及逆变换,从简单的实例中发现问题一、实验目的
1、了解图像变换的意义和手段;
2、熟悉傅里叶变换的基本性质;
3、熟练掌握FFT的方法与应用;
4、通过实验了解二维频谱的分布特点;
5、通过本实验掌握利用MATLAB编程,实现数字图像的傅里叶变换。二、实验仪器
1、计算机;
2、MATLAB程序;
3、移动式存储器(软盘、U盘等);
4、记录用的笔、纸。三、实验原理
1、应用傅里叶变换进行图像处理
傅里叶变换是线性系统分析的一个有力工具,它能够定量地分析诸如数字化系统、采样点、电子放大器、卷积滤波器、噪音和显示点等的作用。通过实验培养这项技能,将有助于解决大多数图像处理问题。对任何想在工作中有效应用数字图像技术的人来说,把时间用在学习和掌握傅里叶变换上是很有必要的。
2、傅里叶(Fourier)变换的定义
对于二维信号,二维Fourier变换定义为:
逆变换:
二维离散傅里叶变换为:
逆变换:
图像的傅里叶变换与一维信号的傅里叶变换一样,有快速算法,具体参见参考书目,有关傅里叶变换的快速算法的程序不难找到。实际上,现在有实现傅里叶变换的芯片,可以实时实现傅里叶变换。
3、利用MATLAB软件实现数字图像傅里叶变换、DCT变换的程序。四、实验步骤
1、打开计算机,安装和启动MATLAB程序;程序组中“work”文件夹中应有待处理的图像文件;
2、利用MATLAB工具箱中的函数绘制FFT频谱显示的函数;
3、a)调入、显示图像;
b)对这图像做FFT、DCT并利用自编的函数显示其频谱;
c)讨论不同的图像内容与FFT、DCT频谱之间的对应关系。
4、记录和整理实验报告。五、实验内容
MATLAB源程序如下:
clear clc img=imread('peppers.png'); subplot(2,2,1);imshow(img);title('原图'); f=rgb2gray(img); %对于RGB图像必须做的一步,也可以用im2double函数 F=fft2(f); %傅里叶变换 F1=log(abs(F)+1); %取模并进行缩放 subplot(2,2,2);imshow(F1,[]);title('傅里叶变换频谱图'); Fs=fftshift(F); %将频谱图中零频率成分移动至频谱图中心 S=log(abs(Fs)+1); %取模并进行缩放 subplot(2,2,3);imshow(S,[]);title('频移后的频谱图'); fr=real(ifft2(ifftshift(Fs))); %频率域反变换到空间域,并取实部 ret=im2uint8(mat2gray(fr)); %更改图像类型 subplot(2,2,4);imshow(ret),title('逆傅里叶变换');
六、实验结果
在MATLAB中运行后,实验结果如图:
在Figure1中,左上角显示的是读入MATLAB程序的原图片,右上角显示的是经过二维傅里叶快速变换后的频谱图像,左下角显示的是将频谱中零频率成分移至矩阵的中心后的频谱图像。右下角显示的是二维傅里叶逆变换后的图像。
图1 MATLAB程序运行后结果七、实验中遇到的问题及对实验过程的思考
1、关于imshow函数:
使用imshow函数显示图像时要注意图像矩阵类型,当图像是double类型时要使用imshow(I,[])来根据数据矩阵的数值范围自动设置灰度图像显示范围。
详细可参考matlab官网参考文档:显示图像-MATLAB imshow-MathWorks中国2、关于运行时可能出现的警告:
如果图像进行傅里叶转换后立即用imshow函数显示,则在命令行可能会显示:Warning: Displaying real part of complex input(警告: 显示复数输入项的实部)。这是因为经过傅里叶变换后的图像矩阵大多是复数矩阵,包含实部和虚部。此时如要显示图像则需要先用abs取复数矩阵的模,再进行显示。
取模后图像矩阵的数值一般会很大,直接用imshow函数是无法显示的,此时可以用log函数取其对数,如log(abs(F)+1),这样就可以对频谱进行缩放。至于为什么用log(F+1),如下图所示,对于(0,1)之间的x值经过取对数后会变成负值,而log(x+1)则将所有的x值映射到正数范围内。
图2 log3、关于开头im2double和rgb2gray函数的使用:
对于RGB真彩图像来说,读入后是以三维矩阵形式存储的,如果此时直接进行傅里叶变换,则频谱图会显示为一片空白或者是密密麻麻的。所以在对RGB图像进行傅里叶变换前要进行类型转换,可以使用im2double将其转换为双精度型(图像运算很少有整型的,所以保守起见不管什么图像都先用这个函数进行转换),或者使用rgb2gray将其转换为灰度图像。
使用不同的函数其变换效果也是不一样的。如使用im2double,进行傅里叶变换后其频谱图呈白色基调,使用rgb2gray其频谱图呈灰色基调。4、关于最后使用im2uint8转换图像类型:
这一步是为了将逆转换得到的矩阵先转换为灰度图像(mat2gray),再将图像类型转换为uint8。其实这一步的调用与否与开头两个类型转换函数的使用有关,如果在开头就已经将RGB图像转为灰度图像,则此步骤可省去,直接显示经逆转换的图像。如果开头调用im2double,此步省略后可显示出彩色图像。当然此步骤在不同方面发挥着不同作用,取的灰度图像可以为后续操作提供基础。更多函数信息可参考matlab官网 MATLAB-函数
如有错漏之处敬请指正
-
matlab 图像傅里叶变换 (源代码)
2011-12-08 22:20:55matlab 图像傅里叶变换 (源代码) -
MATLAB对图像傅里叶变换
2018-04-10 15:34:42代码:I=imread('1.jpg');I=rgb2gray(I);I=im2double(I);F=fft2(I);F=fftshift(F);F=abs(F);T=log(F+1);figure;imshow(T,[]);代码:
I=imread('1.jpg');
I=rgb2gray(I);
I=im2double(I);
F=fft2(I);
F=fftshift(F);
F=abs(F);
T=log(F+1);
figure;
imshow(T,[]);
-
matlab 离散傅里叶变换_MATLAB--数字图像处理 傅里叶变换实现图像压缩
2020-11-23 12:23:37傅里叶变换实现图像压缩题目首先将图像分割为8x8的子图像,对每个子图像进行FFT.对每个子图像中的64个系数,排序后,舍去小的变换系数,只保留靠前的16个系数,实现4: I的图像压缩。代码t=imread('a6.jpg'); t=rgb2... -
matlab对图像进行傅里叶变换_傅里叶变换的图像应用学好了用处大~
2020-11-24 10:08:57一个有趣的灵魂W傅里叶变换,一个听起来高大上的名词。初学之时也是云里雾里,一旦学成,应用及其广泛,图像、信号、声波、深度学习等各领域都存在它的身影,包括在地学中,它也能有很大的用处~至于哪些方面?不展开... -
使用matlab对图像进行傅里叶变换
2019-08-30 22:36:09使用matlab对图像进行傅里叶变换原图:(0)代码:I=imread('1.jpg');I=rgb2gray(I);I=im2double(I);F=fft2(I);F=fftshift(F);F=abs(F);T=log(F+1);figure;imshow(T,[]);傅里叶变换:(1)分析代码:1. ... -
matlab 灰度图像的傅里叶变换.pdf
2020-10-11 23:04:16一 实验题目 书上P274页找两张图求其一的二维傅里叶变换的图像模 相位模*0相位1*相位第一张的相位*第二张的模 二 算法说明 利用matlab对图像进行fft2,fftshift,abs,angle, Ifftshift,iff2t)等一系列函数变换得到想要... -
matlab灰度图像的傅里叶变换.pdf
2020-05-09 13:17:14一 实验题目 书上 P274 页找两张图求其一的二维傅里叶变换的图像模 相位模 *0 相位 1*相位第一张的相位 * 第二张的模 二 算法说明 利用 matlab 对图像进行 fft2,fftshift,abs,angle, Ifftshift,iff2t) 等一系列函数... -
Matlab对图像做傅里叶变换
2020-11-02 12:02:21傅里叶变换应用在各个领域当中,傅里叶变换的方式也有很多种,通常在图像处理的这一方面,利用了二维的傅里叶变换。为了更好的去观察一幅图像,它通常将图像从空间域变换到频域。利用这个变换更加利于观察到图像的... -
matlab对图像进行傅里叶变换_傅里叶变换的图像应用--学好了用处大
2020-11-20 05:39:54傅里叶变换,一个听起来高大上的名词。初学之时也是云里雾里,一旦学成,应用及其广泛,图像、信号、声波、深度学习等各领域都存在它的身影,包括在地学中,它也能有很大的用处~至于哪些方面?不展开啦。其中傅里叶... -
matlab对图像进行傅里叶变换_Python绘制傅里叶变换、反变换与带通滤波图像
2020-11-28 10:43:07==============功能描述:给定信号,对其进行傅里叶变换然后再进行反变换,绘制原始信号、傅里叶变换、傅里叶反变换的结果图像。给定信号,滤除其中某个频率范围的信号,绘制图像。参考代码:运行结果:温馨提示关注... -
matlab图像压缩_MATLAB--数字图像处理 傅里叶变换实现图像压缩
2021-01-22 20:32:47傅里叶变换实现图像压缩题目首先将图像分割为8x8的子图像,对每个子图像进行FFT.对每个子图像中的64个系数,排序后,舍去小的变换系数,只保留靠前的16个系数,实现4: I的图像压缩。代码t=imread('a6.jpg'); t=rgb2... -
matlab进行图像傅里叶变换去噪(fft2、fftshift、ifft2、ifftshift)
2020-03-23 21:15:35在数字图像处理中,去噪是一个经常进行的操作。 除了在空域上进行去噪,比如使用均值滤波、中值滤波等等滤波器外,利用傅里叶变换...因此,通过将空间图像进行傅里叶变换后,转化到频域上,我们可以得到这个图像每个... -
Matlab对图像的傅里叶变换初探
2018-06-25 10:54:12原图像: clc; clear; I=imread('1.jpg'); % 读取图像 I=rgb2gray(I); % RGB图像转换为灰度图 - (可试试去掉然后做对比) I=im2double(I); % 图像转换为double,此时图像的数值范围由原来的【0,255】... -
MATLAB 傅里叶变换 图像锐化 代码
2014-04-24 20:47:40在matlab中,利用傅里叶变换对图像进行处理,实现图像锐化功能。代码 -
Matlab对图像进行傅里叶变换相关操作(注释)
2021-03-28 06:57:08Matlab对图像进行傅里叶变换的相关操作,注释记录了学习中遇到的问题与学到的知识。 close all clear %% 1 %The signal in MATLAB is a discrete signal, and the sinusoidal signal is a continuous signal, so it... -
Matlab数字图像的傅里叶变换(FFT)
2018-09-07 00:26:01图像的傅立叶变换 1.启动MATLAB程序,读入一幅图像;对图像做FFT。使用’subplot’命令,同时显示原始图像其频谱图; 1.1实验过程: 首先读取一幅图像,然后将这幅图像归一化到0~1之间,然后对图像做... -
matlab对图像进行傅里叶变换_数字图像处理(一)—— 傅里叶变换
2020-11-22 19:00:52离散非周期信号的傅里叶变换 设 为离散非周期信号,其基信号为 ,则Fourier变换为 ,因 , 的傅里叶逆变换为 。 7. 小结 7.1 连续信号 周期信号,基信号 ;非周期信号,基信号 。 7.2 离散信号 周期信号,基信号 ;... -
matlab图片快速傅里叶变换,图像傅里叶变换(快速傅里叶变换FFT) | 学步园
2021-04-22 03:26:18#include "Image_FFT.h"/*中心化,根据傅里叶性质的平移性质*/void FFT_Shift(double * src,int size_w,int size_h){for(int j=0;jfor(int i=0;...}}/*图像快速傅里叶变换,图像大小为2的N次幂*/void ImageF... -
MATLAB图像处理_傅里叶变换
2014-12-30 08:35:47代码如下: clear; clc; img=imread('test.jpg'); img=rgb2gray(img); ... %傅里叶变换 f=fftshift(f); %使图像对称 r=real(f); %求图像频域实部 i=imag(f); %求图像频域虚部 margin=log(abs(f)); -
图像傅里叶变换的MATLAB实现
2021-01-17 18:23:09本文基于《MATLAB图像处理实例详解》[杨丹,赵海滨,龙哲]2013年版 文章目录图像傅里叶变换的MATLAB实现图像的二维离散傅里叶变换傅里叶变换后平移变亮后进行傅里叶变换旋转后进行傅里叶变换添加高斯噪声傅里叶反...