- 1、傅里叶描述子介绍
- 2、归一化的傅里叶描述子
- 3、算法描述
- 4、代码示例
傅里叶描述子是一种图像特征,用来描述轮廓的特征参数。
傅里叶描述子的基本思想是:首先我们设定物体的形状轮廓是一条闭合的曲线,一个点沿边界曲线运动,假设这个点为p(l),它的复数形式的坐标为x(l)+jy(l),它的周期是这个闭合曲线的周长,这也表明属于一个周期函数。该以曲线周长作为周期的函数能够通过傅里叶级数表示。在傅里叶级数里面的多个系数z(k)与闭合边界曲线的形状有着直接关系,将其定义为傅里叶描述子。当取到足够阶次的系数项z(k)时,傅里叶描述子能够完全提取形状信息,并恢复物体的形状。 也就是说,傅里叶描述子用一个向量表示轮廓,将轮廓数字化,从而能更好的区分不同的轮廓,达到识别物体的目的。傅里叶描述子的特点是简单并且非常高效,是识别物体形状的重要方法之一。
简单来说,傅里叶描述子就是用一个向量代表一个轮廓,将轮廓数字化,从而能更好地区分不同的轮廓,进而达到识别物体的目的。
如上图所示,少数的傅里叶描述子就可以用于捕获边界的大体特征。这一性质很有用,因为这些系数携带有形状信息。
2、归一化的傅里叶描述子事物轮廓曲线的初始点、 尺寸及方向会影响傅里叶描述子的大小。 当识别事 物存在尺度改变、 旋转等运动时, 要通过归一化的方法处理描述子,进而使傅里叶描述子具有旋转、平移和尺度变换不变性的特性,这就是归一化的傅里叶描述子。
总结:傅立叶描述子可以很好地描述物体的轮廓特征,并且只需少量的描述子(即向量中的数不需要太多)即可大致代表整个轮廓。其次,对傅立叶描述子进行简单的归一化操作后,即可使描述子具有平移、旋转、尺度不变性,即不受轮廓在图像中的位置、角度及轮廓的缩放等影响,是一个鲁棒性较好的图像特征。
3、算法描述【注意】:一般情况下,我们在计算傅里叶描述子前,首先需要进行图像去噪、二值化、形态学处理等若干步骤,以尽可能减小噪声。经过一系列处理后,可以利用findContours和drawContours函数进行轮廓提取与绘制,
如上图所示, 空间域描述该轮廓:
s
(
k
)
=
[
x
(
k
)
,
y
(
k
)
]
,
k
=
0
,
1
,
2
,
.
.
.
,
K
−
1
s(k)=[x(k),y(k)], k=0,1,2,...,K-1
s(k)=[x(k),y(k)],k=0,1,2,...,K−1 如果把空间平面转换到复平面,轮廓点描述为:
s
(
k
)
=
x
(
k
)
+
j
y
(
k
)
,
k
=
0
,
1
,
2
,
.
.
.
,
K
−
1
s(k)=x(k)+jy(k), k=0,1,2,...,K-1
s(k)=x(k)+jy(k),k=0,1,2,...,K−1,也就是说x轴为复数序列的实轴,y轴为复数序列的虚轴。复数域下,二维问题简化为一维问题,但边界本质未变。
对图像轮廓点 s ( k ) = x ( k ) + j y ( k ) s(k)=x(k)+jy(k) s(k)=x(k)+jy(k),其离散傅里叶变换(DFT)为 a ( u ) = ∑ k = 0 K − 1 s ( k ) e − j 2 π u k / K , u = 0 , 1 , 2 , . . . , K − 1 a(u)=\sum_{k=0}^{K-1}s(k)e^{-j2πuk/K}, u=0,1,2,...,K-1 a(u)=∑k=0K−1s(k)e−j2πuk/K,u=0,1,2,...,K−1 其中的复系数a(u)称为边界的傅里叶描绘子。
这些系数的反傅里叶变换可恢复s(k)。也就是说, s ( k ) = 1 K ∑ u = 0 P − 1 a ( u ) e j 2 π u k / P , k = 0 , 1 , 2 , . . . , K − 1 s(k)=\frac{1}{K}\sum_{u=0}^{P-1}a(u)e^{j2πuk/P}, k=0,1,2,...,K-1 s(k)=K1∑u=0P−1a(u)ej2πuk/P,k=0,1,2,...,K−1
【注意】:图像中的细节对应高频,平缓区域由低频决定。
而轮廓全局由低频决定,轮廓细节由高频决定。物体分类用轮廓全局就可以了,即只需要s(k)的低频部分(即u的取值从0到P-1): s ^ ( k ) = 1 K ∑ u = 0 P − 1 a ( u ) e j 2 π u k / P , k = 0 , 1 , 2 , . . . , K − 1 \hat{s}(k)=\frac{1}{K}\sum_{u=0}^{P-1}a(u)e^{j2πuk/P}, k=0,1,2,...,K-1 s^(k)=K1∑u=0P−1a(u)ej2πuk/P,k=0,1,2,...,K−1
注意,其中近似恢复的轮廓点 s ^ ( k ) \hat{s}(k) s^(k)的点数和原轮廓点的数量一样都是K个。只有近似的轮廓只是对元轮廓进行大致“描绘”,且描述子只有P(P
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?