OpenCV3之——如何理解傅里叶变换和数字图像处理的二维傅里叶变换

我们先不提快速傅里叶变换,因为快速傅里叶变换只是根据单位复根的性质进行了分治策略的计算,并且将递归改为从

底部直接向上递推,大大加快了运算速度。

我们按照从离散到连续这个逻辑来讲,先讲讲啥是个离散傅里叶变换

然后我们好像依赖了一些其他知识点,比如卷积,频域,时域

(卷积我们可以理解为两个多项式相乘后的值,即逐项相乘,相乘之后再把他们全部相加,(能合并的合并))

(对于时域我的理解是,f(t)的图像,横坐标是时间t,纵坐标是f(t)的值,而这里我们可以把纵坐标理解为振幅?)

(对于频域我的理解是,f(t)=A[0]+A[1]*sin(wt)+A[2]*sin(2wt)+A[3]*sin(3wt)+......+A[oo]*sin(oo),横坐标是频率,纵坐标是振幅,这个式子仍然是

时域表达式)

(非周期信号各个分量的频率是连续的)

(直流分量的概念:在频域,0频率也被称为直流分量)

(但是对于这个(应该是傅里叶级数)来说,它仍然是时域表达式)

顺带一提,角速度是w,而频率frequency=w/2pi,

这个图横轴是w,如果横轴变成f的话,我们只需要把横坐标都除以2pi就好了,纵坐标表示的振幅不用做改动

(这里横轴表示的频率有时是角频率有时是频率frequency)

上面这个频谱图就表示了各个频率的波的振幅,而且上图很明显是离散的,其中要注意一个显然的事实,振幅可不一定是整数,这点一定要注意

而且我们注意到,如果最低的频率是w[0](离散可取),那么以后的w[n]可以都用w[0]乘以某个系数来表示,

而且我们还注意到如果角频率为0,cos(0t)=1是一条直线,然后呢这个就算是一个直流分量,他可以有任意的振幅,那我们显然可以知道

直流分量只能上下移动时域图像,而不能改变图像的形状

但是从时域函数转换到频域函数,振幅,频率 ,相位都不知道啊。。

具体的从数学角度,怎么样去根据已有的傅里叶变换的公式去计算这三个参数呢

以及后来我们为什么要用复指数的方式去表达傅里叶变换,

并且我明白了傅里叶变换就是f(t)与F(w)的相互转换,

https://www.zhihu.com/question/23175691

上面的连接里有详细的数学叙述和推导,要耐心再耐心地去看,会很有收获

其中有一个显然的用得到的事实,那就是趋于零也就意味着不等于零

从上到下一点一点看,一定要耐心,因为人的思维是渐进的,不是跳跃式的

并且,这里只是注明了三个参数的计算方法,公式,但是实际上为什么这么算,怎么证明,怎么想到

它的计算方法这个问题仍然没有解决,但是很重要的一点,我认为计算方法是从傅里叶变换的公式推导得到,

并且它的频率,如果算的是离散傅里叶变换,那么我们可以轻松枚举w,2*w,3*w等等,如果是连续傅里叶变换

则是将有周期函数的周期T无限延拓,此时最小频率趋于无穷小,然后我们的其他频率也变得连续,如果要计算机

计算的话,我认为计算机只能设置精度模拟计算,暴力枚举很小的w,然后每次加上一个很小的eps(看你的精度了)

然后算法导轮上给的公式就是eps=w,就是离散的,因为一般来说eps都是小于1的。所以现在明白了算法导论

对于离散傅里叶变换的叙述方式,那就是直接套上公式,然后用矩阵表示相乘,直接告诉你,我这个东西就叫

离散傅里叶变换,你不用管我这个东西咋来的,算就是了,我告诉你这是对的。目前我是这么理解算法导论的。。

所以说大数相乘相当于什么呢,相当于是从时域变换到频域,因为大数相当于f(t)=t^0+a[1]*t^1+a[2]*t^2+...+a[n]*t^n

而离散傅里叶变换得到的是F(w)=f(t0)*(关于w的表达式,w的大小与t0大小有关,还有辐角、相位变量)+f(t1)*(关于w1的表达式,w1的大小与t1大小有关,还有辐角、相位变量+......;你得到的这个和式实际上就是频域函数

那么大数相乘其实就相当于是从时域变换到频域然后再变换到时域

然后我们看下面的文字应该就能明白了

我们常常看到的那个中间十字亮度的图,是什么意思

这里我先简单口胡一下,首先我们研究的是灰度图,那么这个图的意思是说,f(x,y)=灰度值

然后灰度值我们肉眼可见,那么傅里叶变换后的频谱图是在说什么呢,傅里叶变换后的频谱图是在说f(x,y)=频率值,说到这里好像又不太懂了

后来我想了一下,我觉得这里是f(w(x,y))=振幅(亮度),如果横纵轴的参数能用来表示w(频率)的话,那么感觉能和一维的理解对上。。

不过描述一维傅里叶变换,我们可以使用线段上的点来定位索引,然后用y轴的高度来表示其振幅,

然后我猜啊,我们看到的那个图,用平面上的点来定位索引,然后用垂直屏幕的轴,用亮度来表示其振幅,(与周围点比较求导得出的变化率是频率?这个频率的单位是啥?)

第一后面说点与点不是一一对应的

第二一个点的频率是啥子意思

第三梯度到底是啥

2、图像傅立叶变换的物理意义

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

傅立叶变换以 前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来 表示。由于空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就由梯度来表示,这样我们可以通过观察图像得知物体在三维空间中的对应关系。 为什么要提梯度?因为实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在 不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这 么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅立叶变换后的频谱图,也叫功率 图,我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果 频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称 分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移 频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻 滤波器消除干扰

另外我还想 说明以下几点:

1、图像经过二维傅立叶变换后,其变换系数矩阵表明:

若变换矩阵Fn原点设在中心,其频谱能量集中分布在变换系数短阵的中心附近(图中阴影区)。若所用的二维傅立叶变换矩阵Fn的原点设在左上角,那么图像信号能量将集中在系数矩阵的四个角上。这是由 二维傅立叶变换本身性质决定的。同时也表明一股图像能量集中低频区域。
2 、变换之后的图像在原点平移之前四角是低频,最亮,平移之后中间部分是 低频,最亮,亮度大说明低频的能量大(幅角比较大)

图像傅里叶变换及相位谱的反变换

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
https://www.cnblogs.com/linkzijun/p/6063142.html

      这几天在做数字图像处理的作业,一个挺简单的题目:将一幅图像变换成傅里叶变换,显示幅度谱和相位谱,再利用相位谱进行反变换。

      正变换倒是挺快的,无非就是fft2,fftshift,显示的时候也好办,运用了im2uint8(mat2gray(log(1+double(f_magnitude1)))),这是为显示而采用的对数变换,mat2gray将值限定在范围[0,1]内,im2uint8将值限定在范围[0,255]内。基本完工。

      但是反变换一时把我给难到了,忘记研究公式了,于是直接把 angle()后的值拿来ifft2,结果可想而知了,与变换前一相的黑白相间的块。呜呜……把书拿来死命研究了下,才发现自己好笨哦。只要这样:

      f_phase=angle(image_fft_shift);%相位谱

      f_phase2=i*f_phase;

      f_phase4=1.*(exp(f_phase2));

      image_ifft=real(ifft2(ifftshift(f_phase4)));

      OK了,完全按公式,看来太久没写程序了。利用相位谱得到的图像就是原图像的结构纹理图呢。

猜你喜欢

转载自blog.csdn.net/qq_35294564/article/details/81119008