【信号与系统】如何得到原始图片的频谱图?(Matlab)

这篇具有很好参考价值的文章主要介绍了【信号与系统】如何得到原始图片的频谱图?(Matlab)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        图像处理是指对图像进行分析、加工、和处理,使其满足视觉、心理或其他要求的技术。图像处理是信号处理在图像领域上的一个应用。目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外, 基于光学理论的处理方法依然占有重要的地位。 图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。傅立叶变换是图像处理的核心步骤,通过本门课程中对傅立叶变换的讲授,可以通过 MATLAB 工具对图像进行简单的处理。 数字图像中的频谱,频率对于图像来说就是指图像颜色值的梯度,即灰度 级的变化速度;幅度可以简单的理解为是频率的权,即该频率所占的比例。对 图像而言,图像的边缘部分是突变部分,变化较快,因此反应在频域上是高频分量;图像的噪声大部分情况下是高频部分;图像平缓变化部分则为低频分量。也就是说,傅立叶变换提供另外一个角度来观察图像,可以将图像从灰度分布转化到频率分布上来观察图像的特征。

        今天我们就用 MATLAB 来进行仿真,看看如何得到原始图片的频谱图?傅立叶变换在其中起到了什么作用?图片在频域有什么特征?

1、如何得到原始图片的频谱图?

首先,使用imread()函数来读取一幅图像,并以image变量存储。

image=imread('image.png');

读出后紧接着用subplot和imshow联合建立一张坐标域并显示原图。

subplot(2,3,1);imshow(image);title('原图');

在计算频谱时,彩色图像中的每个像素颜色由R、G、B三个分量来决定,而每个分量的取值范围都在0-255之间,这样对计算机来说,彩色图像的一个像素点就会有256*256*256=16777216种颜色的变化范围。而灰度图像是R、G、B分量相同的一种特殊彩色图像,对计算机来说,一个像素点的变化范围只有0-255这256种。彩色图片的信息含量过大,如果此时直接进行傅里叶变换,则频谱图会显示为一片空白或者是密密麻麻的。进行图片识别时,为了提高运算速度,在对RGB图像进行傅里叶变换前要进行类型转换,可以使用im2double将其转换为双精度型,或者使用rgb2gray将其转换为灰度图像。使用不同的函数其变换效果也是不一样的。如使用im2double,进行傅里叶变换后其频谱图呈白色基调,使用rgb2gray其频谱图呈灰色基调,具体情况对比如图1-1、1-2所示。

image_gray=rgb2gray(image);

接下来先对刚刚得到得灰度化的图像进行傅里叶变换。

image_fft=fft2(image_gray); %傅里叶变换

如果图像进行傅里叶转换后立即用imshow函数显示,则在命令行可能会显示:Warning: Displaying real part of complex input(警告: 显示复数输入项的实部)。这是因为经过傅里叶变换后的图像矩阵大多是复数矩阵,包含实部和虚部。此时如要显示图像则需要先用abs取复数矩阵的模,再进行显示。

取模后图像矩阵的数值一般会很大,直接用imshow函数是无法显示的,此时可以用log函数取其对数,如log(abs(image_fft)+1),这样就可以对频谱进行缩放。至于为什么用log(abs(image_fft)+1),是因为对于(0,1)之间的x值经过取对数后会变成负值,而log(x+1)则将所有的x值映射到正数范围内。

​image_AM_1=log(abs(image_fft)+1); %取模并进行缩放

之后将image_AM_1图像用imshow显示出来。

subplot(2,3,2);imshow(image_AM_1,[]);title('傅里叶变换幅度谱');

但是以上得到的幅度谱我们会发现其幅度谱的中心是位于四角,而非最中央,解决办法非常简单,进行频域变换即可,我们就可以求得频谱中心在图中央的幅度谱了,后续操作与前面相同。

image_fft_shift=fftshift(image_fft);

image_fft_shift=fftshift(image_fft);

image_AM_2=log(abs(image_fft_shift)+1);

subplot(2,3,4);imshow(image_AM_2,[]);title('频移后的幅度谱');

对于相位谱我们做同样的处理。

image_Phase_1=log(angle(image_fft)*180/pi); %取相位并进行缩放

subplot(2,3,3);imshow(image_Phase_1,[]);title('傅里叶变换相位谱');

image_Phase_2=log(angle(image_fft_shift)*180/pi);%取相位并进行缩放

subplot(2,3,5);imshow(image_Phase_2,[]);title('频移后的相位谱');

最后一个式子进行逆变换,如果开头调用rgb2gray,需将逆转换得到的矩阵先转换为灰度图像(mat2gray将矩阵转换为灰度图像),再将图像类型转换为uint8(im2uint8将图像转换为 8 位无符号整数)。

image_fft_ifft=ifft2(image_fft); %频率域反变换到空间域

image_restore=im2uint8(mat2gray(image_fft_ifft));%更改图像类型

subplot(2,3,6);imshow(image_restore);title('逆傅里叶变换');

【信号与系统】如何得到原始图片的频谱图?(Matlab)

​图1-1 使用rgb2gray得到的频谱图

【信号与系统】如何得到原始图片的频谱图?(Matlab)

图1-2 使用im2double得到的频谱图

2、傅立叶变换在其中起到了什么作用?

图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。灰度变化缓慢的区域,对应的频率值很低;灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。

3、图片在频域的特征?

(1)图像经过二维傅立叶变换后,其变换系数矩阵表明:若变换矩阵Fn原点设在中心,其频谱能量集中分布在变换系数矩阵的中心附近(图中阴影区)。若所用的二维傅立叶变换矩阵Fn的原点设在左上角,那么图像信号能量将集中在系数矩阵的四个角上。这是由二维傅立叶变换本身性质决定的。同时也表明一股图像能量集中低频区域。

(2)变换之后的幅度谱图像在原点平移之前四角是低频,最亮,平移之后中间部分是低频,最亮,亮度大说明低频的能量大(幅角比较大)。

(3)通过观察傅立叶变换后的频谱图,我们可以看出图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。


很高兴您能看到这里,文中提到的一些函数如果有不懂可以留言也可以在matlab支持(支持 - MATLAB & Simulink (mathworks.cn))里去查询。希望本文对您学习有所帮助!文章来源地址https://www.toymoban.com/news/detail-444370.html

到了这里,关于【信号与系统】如何得到原始图片的频谱图?(Matlab)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【matlab算法原理详解】离散非周期信号频谱分析的MATLAB算法实现

    1 引言 介绍四种不同类型信号的频谱变化规律中的一种,即离散非周期信号。在从理论上掌握其频谱变化规律的基础上,着重讨论如何应用离散傅里叶变换DFT对其频谱进行分析,针对具体实例,通过MATLAB编程采用FFT算法实现对其频谱的计算,并和理论值比较,作了相应的误差

    2023年04月13日
    浏览(26)
  • 通过将信号频谱与噪声频谱进行比较,自动检测适当的带通滤波器转折频率研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 corner

    2024年02月12日
    浏览(31)
  • 滑动奇异频谱分析:数据驱动的非平稳信号分解工具(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 奇异频

    2024年02月14日
    浏览(31)
  • 【MATLAB】全网唯一的13种信号分解+FFT傅里叶频谱变换联合算法全家桶

    有意向获取代码,请转文末观看代码获取方式~ 大家吃一顿火锅的价格便可以拥有13种信号分解+FFT傅里叶频谱变换联合算法,绝对不亏,知识付费是现今时代的趋势,而且都是我精心制作的教程,有问题可随时反馈~也可单独获取某一算法的代码(见每一算法介绍后文)~ EMD 是

    2024年02月05日
    浏览(39)
  • AT32F421C8T7利用SPI读取ICM42670原始数据并得到姿态角

    网上其他型号代码借鉴编写来的,如果有错误,请多担待,并请指出错误,谢谢指导。 AT32A单片机的准备,我是keil,下载的keil5包  利用的j-link烧录。 下面是程序 icm42670.c icm42670.h  姿态角代码 icmupdate.c  mian.c 串口显示  完整代码连接 AT32ICM42zitai-单片机文档类资源-CSDN文库

    2024年02月12日
    浏览(24)
  • 污染信号频谱分析模块程序

    [y,fs,nbits]=wavread(\\\'OriSound.wav\\\'); % 语音信号采集 sound(y,fs,nbits); % 回放语音信号便于比较效果 n = length (y) ; % 计算语音信号长度 Noise=0.2*randn(n,1); % 产生随机噪声信号 Noise s=y+Noise; % 将 Noise 添加到原始信号,得到污 染信号 s sound(s); % 回放污染信号 s figure; subplot(2,1,1); % 绘制加噪信号

    2024年02月09日
    浏览(26)
  • 音频信号的频谱分析实例

    在前面的文章 信号频谱分析与功率谱密度 中,我们初步探讨了信号频谱分析的概念,并介绍了其数学工具。本篇文章将结合实例,进一步探讨频谱分析在音频信号处理中的应用。 音频信号的频谱分析是一种将时域中的音频信号转换为频域表示的过程,从而可以观察信号在不

    2024年04月16日
    浏览(32)
  • 实时频谱-2.2数字信号处理

    数字信号处理 (digital signal processing),是以数字运算方法实现信号变换、滤波、检测、估值、调制解调以及快速算法等处理的一门学科。数字信号处理具有高精度、高可靠性、可程序控制、可时分复用、便于集成化等优点。其应用领域十分广泛。 图 2-3 显示了泰克 RSA 系列中使

    2024年02月06日
    浏览(46)
  • matlab求取语音的基音频率、共振峰信息并将其标注在语谱图上

    绘图展示结果: 用到的以下函数 VAD.m Formant_ext2.m frame2time.m enframe.m 绘制共振峰F1,F2,F3 共振峰展示展示 绘图展示: 绘制结果: 实验中 pitch 函数和 spectrogram 函数为matlab自带的,如果实验者电脑无法找到这俩函数,可以在网上搜索找到该函数并复制到该文件路径下,作者的mat

    2024年02月08日
    浏览(35)
  • 使用频谱仪测试信号抗干扰实验

    本例程测试测试在输入设备中心频率在2.9G~3.4G时候,接收设备信号强度为-80db时候,干信比为-20db时候,传输链路的通信质量,和测试的方法步骤,测试原理如图所示。 一,频谱仪最常用按钮的功能解释 1,freq:设置频谱仪显示要采集的中心频率范围,先观察明白要测的是哪

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包