【数字图像处理】傅里叶变换在图像处理中的应用

from:https://www.cnblogs.com/tenderwx/p/5245859.html

1.理解二维傅里叶变换的定义

1.1二维傅里叶变换

二维Fourier变换:

逆变换:

1.2二维离散傅里叶变换

一个图像尺寸为M×N的 函数的离散傅里叶变换由以下等式给出:


其中 和。其中变量u和v用于确定它们的频率,频域系统是由所张成的坐标系,其中和用做(频率)变量。空间域是由f(x,y)所张成的坐标系。可以得到频谱系统在频谱图四角处沿和方向的频谱分量均为0。

离散傅里叶逆变换由下式给出:

令R和I分别表示F的实部和需部,则傅里叶频谱,相位角,功率谱(幅度)定义如下:


1.3用FFT计算二维离散傅里叶变换

二维离散傅里叶变换的定义为:

    

二维离散傅里叶变换可通过两次一维离散傅里叶变换来实现:

1)作一维N点DFT(对每个m做一次,共M次)

2)作M点的DFT(对每个k做一次,共N次)


这两次离散傅里叶变换都可以用快速算法求得,若M和N都是2的幂,则可使用基二FFT算法,所需要乘法次数为                                    

 

而直接计算二维离散傅里叶变换所需的乘法次数为(M+N)MN,当M和N比较大时用用FFT运算,可节约很多运算量。

1.3图像傅里叶变换的物理意义

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

傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数傅里叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,通常用一个二维矩阵表示空间上各点,记为z=f(x,y)。又因空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就必须由梯度来表示,这样我们才能通过观察图像得知物体在三维空间中的对应关系。

傅里叶频谱图上我们看到的明暗不一的亮点,其意义是指图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅里叶变换后的频谱图,也叫功率图,我们就可以直观地看出图像的能量分布:如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小);反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的、边界分明且边界两边像素差异较大的。

对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰。一幅频谱图如果带有正弦干扰,移频到原点上就可以看出,除了中心以外还存在以另一点为中心、对称分布的亮点集合,这个集合就是干扰噪音产生的。这时可以很直观的通过在该位置放置带阻滤波器消除干扰。

2.二维傅里叶变换有哪些性质?

2.1二维离散傅里叶变换的性质

1)分离性

二维离散傅里叶变换具有分离性

  

分离性质的主要优点是可借助一系列一维傅里叶变换分两步求得。第1步,沿着的每一行取变换,将其结果乘以1/N,取得二维函数;第2步,沿着的每一列取变换,再将结果乘以1/N,就得到了。这种方法是先行后列。如果采用先列后行的顺序,其结果相同。

如图:


 

对逆变换f(x,y)也可以类似地分两步进行。

2)平移性

傅里叶变换和逆变换对的位移性质是指:

 

由乘以指数项并取其乘积的傅立叶变换,使频率平面的原点位移至。同样地,以指数项乘以并取其反变换,将空间域平面的原点位移至当N/2时,指数项为:

即为

这样,用(x+y)乘以就可以将的傅里叶变换原点移动到N*N频率方阵的中心,这样才能看到整个谱图。另外,对的平移不影响其傅里叶变换的幅值。

此外,与连续二维傅里叶变换一样,二维离散傅里叶变换也具有周期性共轭对称性、线性、旋转性、相关定理、卷积定理、比例性等性质。这些性质在分析及处理图像时有重要意义。

2.2二维离散傅里叶变换图像性质

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

2、图像灰度变化缓慢的区域,对应它变换后的低频分量部分;图像灰度呈阶跃变化的区域,对应变换后的高频分量部分。除颗粒噪音外,图像细节的边缘、轮廓处都是灰度变化突变区域,它们都具有变换后的高频分量特征。

 

3.任给一幅图像,对其进行二维傅里叶变换和逆变换

原图

二维傅里叶变换

逆变换

频谱图

原图

加入高斯躁声

加入椒盐躁声

 

对高斯躁声中值滤波

对椒盐躁声中值滤波

 

对高斯躁声算术均值滤波

对椒盐躁声算术均值滤波

 

4.附录

4.1matlab代码

1)程序一

复制代码

 1 [i,lcmp]=imread('F:/123.jpg');%=======读取图像 显示图像2 3 subplot(2,2,1),imshow(i,lcmp);4 5 title('original');6 7 ii=im2double(i); %=====将图像矩阵类型转换为double(图像计算很多是不能用整型的),没有这个会报错!! ,如果不用这个就必须转化为灰度图!8 9 i1 = fft2(ii); %======傅里叶变换
10 
11 i2 =fftshift(i1); %======将变换的频率图像四角移动到中心(原来良的部分在四角 现在移动中心,便于后面的处理)
12 
13 i3=log(abs(i2)); %=====显示中心低频部分,加对数是为了更好的显示
14 
15 subplot(2,2,2),imshow(i3,[]);
16 
17 title('Fourier');
18 
19 map=colormap(lcmp); %===取色谱
20 
21 imwrite(i3,map,'f:/ffttank.bmp'); %===将上面i3输入到ffttank文件中
22 
23 i5 = real(ifft2(ifftshift(i2))); %===频域的图反变换到空域 并取实部
24 
25 i6 = im2uint8(mat2gray(i5)); %===取其灰度图
26 
27 imwrite(i6,map,'f:/tank2.bmp','bmp'); %===利用灰度图和原来取得颜色模板 还原图像
28 
29 subplot(2,2,3),imshow(i6);
30 
31 title('anti-Fourier');
32 
33 i7=rgb2gray(i);
34 
35 i8=fft2(i7);%===对灰色图才能归一化。因为那是2维矩阵,彩色图是3维矩阵,需要转化为2维灰图
36 
37 m=fftshift(i8); %直流分量移到频谱中心
38 
39 %RR=real(m); %取傅立叶变换的实部
40 
41 %II=imag(m); %取傅立叶变换的虚部
42 
43 A=abs(m);%计算频谱幅值
44 
45 %A=sqrt(RR.^2+II.^2);
46 
47 A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225; %归一化
48 
49 subplot(2,2,4),imshow(A); %显示原图像
50 
51 colorbar; %显示图像的颜色条
52 
53 title('FFT spectrum'); %图像命名
54 
55  

复制代码

 

 

2)程序二

复制代码

 1 m=imread('F:/123.jpg');2 3 M=rgb2gray(m); %==滤波函数都是对二维灰度图,Tif可直接滤波4 5 subplot(3,3,1)6 7 imshow(M);%显示原始图像8 9 title('original')
10 
11 P1=imnoise(M,'gaussian',0.02); %加入高斯躁声
12 
13 subplot(3,3,2)
14 
15 imshow(P1) %加入高斯躁声后显示图像
16 
17 title('gaussian noise');
18 
19 P2=imnoise(M,'salt & pepper',0.02); %=加入椒盐躁声
20 
21 subplot(3,3,3)
22 
23 imshow(P2) %%加入椒盐躁声后显示图像
24 
25 title('salt & pepper noise');
26 
27 g=medfilt2(P1); %对高斯躁声中值滤波
28 
29 subplot(3,3,5)
30 
31 imshow(g)
32 
33 title('medfilter gaussian')
34 
35 h=medfilt2(P2); %对椒盐躁声中值滤波
36 
37 subplot(3,3,6)
38 
39 imshow(h)
40 
41 title('medfilter salt & pepper noise')
42 
43 l=[1 1 1 %对高斯躁声算术均值滤波
44 
45 1 1 1
46 
47 1 1 1];
48 
49 l=l/9;
50 
51 k=conv2(P1,l);
52 
53 subplot(3,3,8)
54 
55 imshow(k,[])
56 
57 title('arithmeticfilter gaussian')
58 
59 %对椒盐躁声算术均值滤波
60 
61 d=conv2(P2,l);
62 
63 subplot(3,3,9)
64 
65 imshow(d,[])
66 
67 title('arithmeticfilter salt & pepper noise')
68 
69  

复制代码

 

4.2参考文献

[1]孟凡文, 吴禄慎.基于FTP的二维傅里叶变换的研究.激光与红外. 第38卷第9期 2008年9月       

[2] 董健,邓国辉,李金武. 基于二维傅里叶变换实现图像变换的研究. 福建电脑. 2015年第 9期

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

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

相关文章

最好的云备份选项

能够实现数据备份的方式有很多。在虚拟化技术最为兴盛的时期,首选方式是使用数据保护软件,在hypervisor层进行备份或者复制整台虚拟机,比如Veeam Backup以及Zerto提供的同步软件。 对于使用VMware云的IT部门来说,这种方式现在仍然…

求二叉树中两个节点的最远距离

问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节…

halcon学习(算子汇总)

from:https://www.cnblogs.com/hanzhaoxin/archive/2013/01/09/2852213.html dev_clear_obj(Objects : : : ) 删除一个iconic对象 dev_error_var( : : ErrorVar, Mode : ) 定义或取消定义一个错误变量 dev_get_exception_data( : : Exception, Name : Value) 获取异常数据…

Bing Speech Recognition 标记

Bing Speech Services Bing Bing Speech Services provide speech capabilities for Windows and Windows Phone https://msdn.microsoft.com/en-us/library/dn303461.aspx 已失效。 转载于:https://www.cnblogs.com/zangdalei/p/5312440.html

Source Insight 4.0 最简单的破解安装

from:https://blog.csdn.net/biubiuibiu/article/details/78044232 三步完成Source Insight 4.0 破解安装 下载地址有更新,之前有朋友因潜在的版权问题封禁没下到,现在更新后可正常使用了。 文末有完全清除上次安装残留的方法,…

【原】Spark中Master源码分析(一)

Master作为集群的Manager,对于集群的健壮运行发挥着十分重要的作用。下面,我们一起了解一下Master是听从Client(Leader)的号召,如何管理好Worker的吧。 1.家当(静态属性) 1.设置一个守护单线程的…

XML——XML介绍和基本语法

from:https://blog.csdn.net/gavin_john/article/details/51511180 1.XML历史 gml(1969)->sgml(1985)->html(1993)->xml(1998) 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范1985 sgml(标准通用标记语言)1993 htm…

Tomcat7.0安装配置

很久没有通过博客对学习所得进行记录了。 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘。如果有朋友看到,也请不吝赐教。 首先,我个人使用的是apache-tomcat-7.0.27你可以下载使用,前提条件你需要安装JDK1.6或者1.7都…

TIFF图像文件格式详解

from:https://www.cnblogs.com/gywei/p/3393816.html 1 什么是TIFF? TIFF是Tagged Image File Format的缩写。在现在的标准中,只有TIFF存在, 其他的提法已经舍弃不用了。做为一种标记语言,TIFF与其他文件格式最大的不…

java 抽象工厂模式简单实例

抽象工厂模式:提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的时间分别在子类工厂中产生。 类似于工厂模式:隔离了具体类的生产实现,使得替换具体的工厂实现类很容易。包含有以下模块…

图像处理之积分图应用三(基于NCC快速相似度匹配算法)

from:https://blog.csdn.net/jia20003/article/details/53021614 图像处理之积分图应用三(基于NCC快速相似度匹配算法) 基于Normalized cross correlation(NCC)用来比较两幅图像的相似程度已经是一个常见的图像处理手段。在工业生产环节检测…

深入浅出地理解机器人手眼标定

from:https://blog.csdn.net/qq_16481211/article/details/79764730 所谓手眼系统,就是人眼镜看到一个东西的时候要让手去抓取,就需要大脑知道眼镜和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的…

centos 6.5 安装 mongodb

官方给出的链接地址:https://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ 安装后重要的日志 win10 上使用mongochef连接不上数据库 解决方案: 修改 /etc/mongod.conf 将bindIP 改为0.0.0.0 监听外网转载于:https://www.cnblogs.com/l…

scala学习资料

1. scala-sbt 构建工具: http://www.scala-sbt.org/0.13/docs/zh-cn/Directories.html 2. 资料: http://www.ibm.com/developerworks/cn/java/j-lo-funinscala2/ https://www.zhihu.com/question/34548588?sortcreated http://nerd-is.in/2013-09/scala…

opencv3/C++ 机器学习-SVM应用实例:药品(胶囊)识别与分类

from:https://blog.csdn.net/akadiao/article/details/79278072 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/akadiao/article/details/79278072 问题描述: 现对6种不同颜色药品(胶囊…

Elasticsearch 搜索不到数据问题(_mapping 设置)

需求 由于 kibana3 中,不支持直接在请求的 url 中设置搜索的 type (是不是我不知道???)。 为了支持特定 type 的搜索,所以我设置了个下每个 panel 的查询语句,让它增加一个&#xff…

SVM之交叉验证【转】

交叉验证(CrossValidation)方法思想简介 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进…

linux命令学习-1-less

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less …

python问题汇总

问题1:如何解决python3中numpy报错No module named numpy 打开terminal pip3 install numpy 问题2:ModuleNotFoundError No module named matplotlib 打开terminal pip3 install matplotlib

jspspy database help

.转载于:https://www.cnblogs.com/outline/p/5316051.html