matlab的傅里叶变换

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013   

图像变换:    

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013

     在 MATLAB 中,一般用二元函数 f(x, y) 作为图像的数学表示。  f( x, y) 表示在特定点f( x, y) 处的函数值,表示图像在该点相应的颜色强度或者灰度。所谓图像变换就是指把图像转换为另一种数学表示方式的操作。

        在图像处理技术中,图像的正交变换技术有着广泛的应用,是图像处理的重要工具。通过变换图像,改变图像的表示域及表示数据,可以给后继工作带来极大的方便。例如,傅立叶变换可使处理分析在频域中进行,使运算简单;而离散余弦变换(DCT)可使能量集中在少数数据上,从而实现数据压缩,便于图像传输和存储。

         1.傅立叶变换的基本概念

       假设  f (m,n) 是一个包含两个离散空间变量 m 和 n 的函数,则该函数的二维傅立叶变换的定义如下:

                                                            

       式中, ω 1 和 ω 2 为频域变量,其单位为弧度/采样单元。通常函数 F( ω 1 ,  ω 2 )称为函数 f (m, n)的频域表示。F( ω 1 ,  ω 2 )是复变函数,其变量 ω 1 和 ω 2 的周期均为 2π。因为这种周期性的存在,所以通常在图像显示时,这两个变量的取值范围为-pi<=ω 1,ω 2<=pi.

   傅立叶反变换定义如下:

            

        简单地说,该方程说明 f (m, n)可以表示为无限多项不同频率的复指函数之和。而不同的频率点( ω 1 ,  ω 2 )所做的贡献由幅度 F( ω 1 ,  ω 2 )决定。

   

      例如,考察下面的矩形函数 f (m, n)。该函数在一个矩形的区域中的函数值为 1,其他区域都为 0,如图 所示。
      在 MATLAB 中,变量 m、n 和函数 f (m, n)均采用离散表示,所以要想真实地逼近连续函数,只能通过提高取样率。因此,f (m, n)函数的傅立叶变换可由以下程序段获得,傅立叶变换的幅值即|F( ω 1 ,  ω 2 )|,如图 (b)所示。其中 x 轴和 y 轴分别为水平分量和垂直分量

例:  

N=100;
f=zeros(50,50);
f(15:35,23:28)=1;
figure(1);
imshow(f,'InitialMagnification','fit');title('矩形连续函数')
%图片自动适应窗口大小输出

F=fft2(f,N,N);
% F = fft2(f,N,N)是由用户设定变换区域的大小NxN。当然,如果用户设定的区域大小不是 2 的整数次方,FFT 还会有默认的补零操作

F2=fftshift(abs(F));
%fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
%因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来

figure(2);
x=1:N;y=1:N;
mesh(x,y,F2(x,y)),title('傅立叶变换幅值');%三维网格图
colormap(gray);%输出灰色系曲面图
colorbar;%添加颜色条





2.离散傅立叶变换

      在用计算机处理傅立叶变换通常采用离散傅立叶变换(Discrete Fourier Transform,DFT)。采用离散傅立叶变换主要有以下两个原因:

    (1)因为 DFT 的输入/输出均为离散值,非常适用于计算机的运算操作。
   (2)采用离散傅立叶变换,就可以用一种快速算法,即快速傅立叶变换(Fast FourierTransform,FFT)。
     FFT 的设计思想是将原函数分为奇数项和偶数项,通过不断将一个奇数项和一个偶数项相加(减),得到需要的结果。

   也就是说 FFT 是将复杂的乘法运算变成两个数相加(减)的简单运算的重复,即通过计算两个单点的 DFT,来计算两个双点的 DFT;通过计算两个双点的 DFT,来计算四个  点的DFT⋯⋯依此类推。

    对于任何 N=2 m 的 DFT 的计算,通过计算两个 N/2 点的 DFT,来计算 N 个点的 DFT。
    数学定义:

   

      在 MATLAB 中,可分别用函数 fft、fft2 和 fftn 来计算一维、二维和 n 维的 FFT,而其反变换依次为 ifft、ifft2 和 ifftn。

例:

 f = zeros(30,30);
f(5:24,13:17) = 1;
imshow(f,'InitialMagnification','fit');title('矩形连续函数');
%图片自动适应窗口大小输出
F = fft2(f);
F2 = log(abs(F));%输出幅度值的另一种方法
figure
imshow(F2,[-1 5],'InitialMagnification','fit'); colormap(jet); colorbar;title('傅里叶变换幅值');
%matlab colormap(jet)中数值大为红色,数值小为蓝色

    在计算离散傅立叶变换时,可以通过下面的语句对被变换函数(或图像区域)进行补零操作来提高分辨率,具体调用方式如下:
    F = fft2(f,M,N);M×N 表示进行补零操作后被变换区域的大小,与原区域不相重叠的区域补零。


3.利用傅立叶变换进行图像特征识别

(1)快速卷积

         傅立叶变换的另一个重要特性是能够实现快速卷积。由线性系统理论可知,两个函数的卷积的傅立叶变换等于两个函数的傅立叶变换的乘积。该特性与快速傅立叶变换一
起,可以快速计算函数的卷积

fft(f1*f2)=fft(f1)x fft(f2)

f1*f2=ifft(fft(f1)xfft(f2));

(2)图像特征识别

     傅立叶变换可以用于与卷积密切相关的相关运算(correlation)。在数字图像处理中的相关运算通常用于匹配模板,可以用于对某些模板对应的特征进行定位。例如,假如我们希望在图像 text.tif 中定位字母“a”,如图所示,可以采用下面的方法定位。

    将包含字母“a”的图像与图像 text.png 进行相关运算,也就是对字母“a”的图像和图像 text.png 进行傅立叶变换,然后利用快速卷积的方法,计算字母“a”和图像 text.png 的卷积,提取卷积运算的峰值,即得到在图像 text.png 中对应字母“a”的定位结果。

例:

bw=imread('text.png');
>> a=bw(32:45,88:98);
>> figure,imshow(bw),title('原图,在这幅图中找出字母a的位置');
>> figure,imshow(a),title('字母a');
>>
>> C = real(ifft2(fft2(bw) .* fft2(rot90(a,2),256,256)));
figure, imshow(C,[]),title('C');
>> max(C(:))

ans =

   68.0000

>> thresh=60;
>> figure,imshow(C>thresh);
>> %卷积运算的值大于60的输出为白色,小于的为黑色,卷积值反映了相似程度,越大表示越相近,当大于阈值的时候就任务是字母'a'了,


更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记一 Redis基础

在cmd 命令中运行redis 运行redis命令 &#xff1a;redis-cli Reids数据结构初探 数据结构有五种 string(字符串)、 list(列表)、set&#xff08;集合&#xff09;、hash&#xff08;散列&#xff09;、zset(有序集合) redis各类型的简单介绍 和最基础的命令 1.string&a…

matlab的四维图像数据可视化

1.颜色来表示第四维 前面已经学了三维图形可视化&#xff0c;所谓三维就是指x轴&#xff0c;y轴&#xff0c;z轴组成了我们的三维&#xff0c;那么第四维用什么来表示呢&#xff0c;我们这里要用颜色来表示第四维&#xff0c;所谓四维图形可视化就是在三维图形可视化的基础上&…

Mybatis 入门之resultMap与resultType讲解实例

resultMap&#xff1a;适合使用返回值是自定义实体类的情况 resultType&#xff1a;适合使用返回值得数据类型是非自定义的&#xff0c;即jdk的提供的类型 resultMap &#xff1a; type&#xff1a;映射实体类的数据类型 id&#xff1a;resultMap的唯一标识 column:库表的字段…

全球半导体产业60年兴衰启示录!

本文来自华泰证券&#xff0c;研究员张馨元、钱海、陈莉敏&#xff0c;感谢分享&#xff01;科技是当前行业配置不能忽视的主线&#xff0c;我们在今年 5 月 10 日发布的中期策略报告《无科技不牛市&#xff0c;以时间换空间》中提出&#xff0c;5G 时代物联网技术革命带来的是…

手机上python编程工具3和3h有区别吗_Python3.5内置模块之time与datetime模块用法实例分析...

本文实例讲述了Python3.5内置模块之time与datetime模块用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 1、模块的分类 a、标准库&#xff08;Python自带&#xff09;&#xff1a;sys、os模块 b、开源模块&#xff08;第三方模块&#xff09; c、自定义模块 2、内…

华为加码布局 VR/AR趁势启航

来源&#xff1a;VR每日必看乘5G东风&#xff0c;VR/AR空间打开。随着5G的到来&#xff0c;5G高速和超低时延的特性将完美应对VR/AR发展的短板&#xff0c;商用牌照的发放将带领5G逐渐进入放量阶段&#xff0c;内外巨头均已开始大力布局。分析人士认为&#xff1a;第一阶段场景…

linux系列之常用运维命令整理笔录

本博客记录工作中需要的linux运维命令&#xff0c;大学时候开始接触linux&#xff0c;会一些基本操作&#xff0c;可是都没有整理起来&#xff0c;加上是做开发&#xff0c;不做运维&#xff0c;有些命令忘记了&#xff0c;所以现在整理成博客&#xff0c;当然vi&#xff0c;文…

Android高德地图自定义Markers的例子

下文为各位重点介绍关于Android高德地图自定义Markers的例子&#xff0c;希望这篇文章能够让各位理解到Android高德地图自定义Markers的方法。 之前的博客里说了地图的嵌入和定位&#xff0c;今天就说说在地图上显示一些我们想要的。在地图中有自带的Markers&#xff08;标记&a…

javaweb教务管理系统_基于Java web的教务管理系统

源码编号&#xff1a;B-E00033 点击查看(分类规则)项目类型&#xff1a;Java EE项目(非开源)项目名称&#xff1a;基于Java web的教务管理系统(TeachingSystem)当前版本&#xff1a;V1.0.1版本难度等级&#xff1a;✩✩复杂程度&#xff1a;✩✩ 点击查看难度等级用户类型&…

Science揭秘:为什么“好记性不如烂笔头”?

来源&#xff1a;中国生物技术网你还能记起你小学班长的名字吗&#xff1f;但我相信你肯定能记得同桌的名字&#xff0c;和与其共同经历的种种。但要再问你昨天新来同事的名字&#xff0c;你是否可以不假思索的回答出来&#xff1f;是不是有点儿困难&#xff1f;那为什么你能脱…

中国机器人产业发展报告(2019)正式发布!

来源&#xff1a;世界机器人大会2019年8月25日&#xff0c;《中国机器人产业发展报告&#xff08;2019&#xff09;》于2019世界机器人大会闭幕式上正式发布&#xff0c;该报告为工业和信息化部2019-2021年财政专项《我国机器人产业发展水平评估体系构建与智能机器人产业链增长…

matlab/ansys协同的一个例子

前段时间找了点Matlab与ANSYS协同工作的资料&#xff0c;在我看来所谓协同是ANSYS将结果写到文件然后Matlab读&#xff0c;或者Matlab写数据到文件ANSYS读&#xff0c;协同是通过读写文件实现的。我找了个瞬态分析的例子&#xff0c;写了APDL&#xff0c;将网上找到的ANSYS结果…

security center拒绝访问_Steam被曝出0day提权漏洞,但厂商拒绝修复

近期&#xff0c;全球流行的Steam游戏客户端被曝出0day提权漏洞&#xff0c;影响全球一亿多Steam用户。该漏洞可让机器上的低权限用户以SYSTEM权限运行程序。这意味着恶意软件很可能利用这个漏洞对受害者的机器进行深度破坏。考虑到Steam是一款总用户1.2亿&#xff0c;日常在线…

人工智能第一股“旷视科技”赴港递交IPO材料 半年亏损52亿估值280亿

来源&#xff1a; 人工智能和大数据8月25日&#xff0c;人工智能领域“独角兽”旷视科技正式向港交所递交IPO材料。招股书显示&#xff0c;旷视拟采用“同股不同权”方式上市&#xff0c;“同股不同权”股东为创始人兼CEO印奇以及两位联合创始人唐文斌、杨沐&#xff0c;三人占…

python可以代替plc吗_PLC可以代替安全控制器吗?电气工程师告诉你

导读 国内的企业越来越重视设备的安全防护&#xff0c;可事故却频频发生&#xff0c;这是为什么呢&#xff1f;主要还是源自于大家对于安全防护知识上存在的诸多误区&#xff0c;比如很多人认为&#xff0c;稳定性高、性能强的PLC即可替代安全控制器的作用&#xff0c;其实这就…

Nature展示迄今为止最详细的“人脑零部件清单”

来源&#xff1a;中国生物技术网近日&#xff0c;美国艾伦脑科学研究所的一项新研究为我们展示了迄今为止最详细的“人脑零部件清单”&#xff0c;阐明了人类大脑皮层的细胞结构&#xff0c;它对于理解我们的认知能力和对疾病的易感性至关重要。该研究近日已发表在《Nature》上…

beautifulsoup网页爬虫解析_爬虫第三天——初识Xpath

解析神器Xpath&#xff1a;1. 什么是XpathXPath即为XML路径语言&#xff08;XML Path Language&#xff09;&#xff0c;它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构&#xff0c;提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一…

机器人4.0时代来临!四大核心技术助推大规模商用部署

来源&#xff1a;北京物联网智能技术应用协会当前&#xff0c;全球机器人市场规模持续扩大&#xff0c;工业机器人市场增速稳定&#xff0c;服务机器人增速突出。2018 年&#xff0c;全球机器人市场规模达 298.2 亿美元&#xff0c; 2013-2018 年的平均增长率约为 15.1%。 在装…

Chapter2 MSP430硬件结构

1、总架构 MSP430单片机采用冯诺依曼结构&#xff0c;包含16位RISC CPU、存储器、片内外设、时钟系统、仿真系统以及数据总线和地址总线。 2、MSP430X CPU(CPUX) DB    AB          ALU位数 MSP430F1XX 16位  16位(最大寻址64KB) …

Matlab给Ansys助攻

大家好&#xff0c;今天二狗准备介绍一下如何利用matlab写一些简单的脚本去解决一些复杂的事情&#xff0c;比如为大型有限元软件Ansys服务&#xff08;类比&#xff09;包括数值模拟的前处理和后处理&#xff0c;都大有作为。用过Ansys&#xff08;没有Ctrlz&#xff09;的童鞋…