概述
二维图像的DFT
离散傅里叶变换,图像的频域表示的是什么含义呢?又有什么用途呢?图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。图像的边缘部分是突变部分,变化较快,因此反应在频域上是高频分量;图像的噪声大部分情况下是高频部分;图像大部分平缓的灰度变化部分则为低频分量。也就是说,傅立叶变换提供另外一个角度来观察图像,可以将图像从灰度分布转化到频率分布上来观察图像的特征。
频域在图像处理中,就我所知的用途主要在两方面:图像压缩和图像去噪。关于这两点将在下面给出图片DFT的变换结果后说明。
有关DFT的更多性质请参考胡广书教授的《数字信号处理》教材。
提到图像频域变换的用途:压缩和去噪。压缩的原理就是在频域中,大部分频域的值为0(或接近0,可以进行有损压缩,如jpeg图像),只要压缩频域中的少数非0值即可达到图片压缩的目的。去噪则是通过频域的滤波实现,因为噪声大部分情况下体现为高频信号,使用低通滤波器即可滤除高频噪声(当然,也会带来损失,那就是边缘会变得模糊(之前说过,边缘也是高频信号))。
计算幅值:magnitude()函数
void cv::magnitude(InputArray x,InputArray y,OutputArray magnitude)
参数说明:
x : 实部,矢量的浮点类型
y : 虚部,矢量的浮点类型
magnitude : 目标图像
将实部和虚部转换为幅值 Transform the real and complex values to magnitude
一个复数有实部(Real - Re)和虚部 (imaginary - Im) 。DFT的结果是复数。幅值用下面公式计算:
截取并重新组合图像 Crop and rearrange
将幅度图像转换为偶数。并且重新组合图像象限,让原点(0,0)位于图像中心。
// 重新排列变换结果,让原点处于图像中心。rearrange the quadrants of Fourier image so that the origin is at the image center
// 变换结果图像中四个角到中心是低频到高频,为了符合坐标系,将其分为四份重新排列,让四个角处于中心位置
int cx = magI.cols / 2;
int cy = magI.rows / 2;
Mat q0(magI, Rect(0, 0, cx, cy)); //左上角区域 Top-Left - Create a ROI per quadrant
Mat q1(magI, Rect(cx, 0, cx, cy)); //右上角 Top-Right
Mat q2(magI, Rect(0, cy, cx, cy)); //左下角 Bottom-Left
Mat q3(magI, Rect(cx, cy, cx, cy)); //右下角 Bottom-Right
Mat tmp; // 交换左上角和右下角swap quadrants (Top-Left with Bottom-Right)
q0.copyTo(tmp);
q3.copyTo(q0);
tmp.copyTo(q3);
q1.copyTo(tmp); // 交换右上角和左下角swap quadrant (Top-Right with Bottom-Left)
q2.copyTo(q1);
tmp.copyTo(q2);
为了便于频域的滤波和频谱的分析,常在变换后进行频谱的中心化,即对掉频谱的四个象限,如下图所示:
在经过频谱居中后的频谱中,中间最亮的点是最低频率,属于直流分量,越往外,频率越高,如下所示:
频域滤波
高通滤波
图像在经过傅里叶变换后,经频谱中心化后,从中间到外面,频率上依次是从低频到高频的。那么我们假设把中间规定一小部分去掉,是不是相对于把低频信号去掉了呢?这也就是相当于进行了高通滤波。滤波模板如下图所示:
上图中高通滤波器有利于提取图像的轮廓,图像的轮廓或者边缘或者一些噪声处,灰度变化剧烈,那么在把它们经过傅里叶变换后。就会变成高频信号(高频是捕捉细节的),所以在把图像低频信号滤掉以后剩下的自然就是轮廓了。
低通滤波
构造一个低通滤波器很简单,只要把上述模板中的1改为0,0改为1即可。
从结果中可看到低通滤波后图像轮廓变模糊了,图像的大部分信息基本上都保持了。图像的主要信息都集中在低频上,所以低通滤波器的效果是这样也是能够理解的。
带通滤波器
我们把高通和低通的一部分结合在模板中就形成了带通滤波器,它容许一定频率范围信号通过, 但减弱(或减少)频率低于於下限截止频率和高于上限截止频率的信号的通过,如下图所示:
这就是带通的效果,它既能保留一部分低频,也能保留一部分高频。
带阻滤波器
带阻滤波器减弱(或减少)一定频率范围信号, 但容许频率低于於下限截止频率和高于上限截止频率的信号的通过,如下示:
带阻滤波器保持了原图像的大部分信息,图像的主要信息都集中在低频上,而边缘轮廓信息都在高频位置。带阻滤波器滤除了中频信息,保留了低频和高频信息,所以对图像的信息破坏是比较小的。
频谱中白色、亮的是低频,黑色的、暗的是高频
学习数字图像处理中傅里叶变换一节时出现了这样的疑问,为什么低频是白色的,高频是黑色的?
傅立叶变换以前,图像是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与原图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点(像素灰度值)与它的邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分梯度大的点)
- 在空间域图像中,线性的地物为高频成分,大块面状的地物为低频成分。图像经过傅立叶变换后产生频率域图像,这些空间频率信息被突出出
- 图像灰度变化缓慢的部分,对应变换后的低频分量部分,图像的细节和轮廓边缘都是灰度突变区域,它们是变换后的高频分量.
- 频域图像的每一点都来自于整个原图像
结论:傅里叶变换移频过后,低频部分到了中心位置,结合上述PPT知道,通常图像的低频占据了大部分信息,所以是白色的。
网址
最后
以上就是悦耳小懒猪为你收集整理的OpenCV DFT的全部内容,希望文章能够帮你解决OpenCV DFT所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复