角点检测的灰度图像

如题所述

基于梯度的方法是通过计算边缘的曲率来判断角点的存在性,角点计算数值的大小不仅与边缘强度有关,而且与边缘方向的变化率有关,该方法对噪声比基于模板的角点检测方法对噪声更为敏感。L.Kchen和A.Rosedfeld给出了具体的角点检测算子K,通过检测K在图像某一领域的极大值来达到提取角点的目的。该算子为K=tp?2 rq?2-2spqp?2 q?2,它表现为水平面截线上某点(x,y)的曲率与该点的最大梯度的乘积。但田原和梁德群等人指出K(x,y)在最大梯度方向上并不是极大值点,而是呈现单调变化的,所以在某一个邻域内曲率和该点的最大梯度乘积的极大值并不会出现在角点上。因此通过计算基于梯度的算法来确定的角点是不合理的。
考虑到角点作为一种重要的信号特征,属于图像的细节,按照Witkin尺度空间理论,该角点应该在较大的尺度空间存在。基于小波多尺度分析的角点检测,通过提出不同尺度上角点的对应关系准则由大尺度跟踪到小尺度上精确的角点位置。设定提取角点的最大尺度2?k、梯度阈值Thg和曲率值Th?c,对图像进行小波变换,得到各个尺度上的小波分量W?x??2??j(x,y)和W?y??2??j(x,y);利用各个尺度上的小波分量在相应的尺度上提取角点,记录这些角点的位置;从最大的尺度k开始,按照前面所确定的原则寻找较小尺度上的对应角点,直到最小的尺度为止;清除最小尺度上与上一尺度不对应的点,得到最终角点结果。针对文献的错误,就对某一尺度上的角点检测算法,文献指出角点不仅是水平面截线上的曲率极值点,也是该点在最大梯度方向上其最大梯度的模达到极大值,是满足两个条件的点集的交集。 基于模板的方法主要考虑像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。
较早的直接基于灰度图像角点检测是文献提出的Kitchen?Rosenfeld算法,通过模板窗口局部梯度幅值和梯度方向的变换率来计算角点度量值C=I?xyI?2?y I?yyI?2?x-2I?xyI?xI?yI?2?x I?2?y,根据C与给定的阈值大小关系来判定该点是否是角点。
Harris等人检测方法考虑的是用一个高斯窗或矩形窗在图像上移动,由模板窗口取得原图像衍生出2×2的局部结构矩阵,M=∑x,yw(x,y)I?2xI?xI?y I?xI?yI?2?y,w(x,y)为窗口函数。对该模板矩阵求取特征值λ?1和λ?2,建立度量函数R=detM-k(traceM)?2,detM=λ?1λ?2,traceM=λ?1 λ?2,根据R是否大于0即可判断该点是否是角点。值得注意的是该方法具有旋转不变性,但检测的角点有较大的冗余,需要根据实际经验来确定R的阈值。
被大多数人所熟悉的KLT角点检测算法[6,7]也是对基于一个计算窗口模板D×D下的图像计算局部结构矩阵,计算其特征值λ?1和λ?2,根据给定阈值λ按照式子min(λ?1,λ?2)>λ来判定其是否为角点。这里的关键是阈值λ和窗口D的大小的确定,D的大小一般为2~10,太大的窗口会引起角点移动,窗口太小则会丢失相距较近的角点。
USAN或SUSAN角点检测算法得到越来越多的关注,最小亮度变化算法(MIC)[8]、同值分割吸收核(Univalue Segment Assimilating Nucleus,USAN)算法[9]都是基于像素邻域半径为k的圆形模板。该算法基于角点响应函数(CRF),对每个像素基于其模板邻域的图像灰度计算CRF值,如果大于某一阈值且为局部极大值,则认为该点为角点,一般k取1或2。
由算法的实现和相关结果可以看出,KLT算法比Harris算法检测角点的质量高,但KLT算法适用于角点数目不多且光源简单的情况,Harris适用于角点数目较多且光源复杂的情况。除了对单幅图像能进行角点检测以外,KLT算法和Harris算法对图像序列的角点检测效果更好。Kitchen?Rosenfeld算法和USAN算法一般来说不适合序列图像的角点跟踪,对于单幅图像的角点检测,USAN算法要比Kitchen?Rosenfeld算法好得多。但Harris算法的实现公式中有平滑部分,因此具有较强的鲁棒且对噪声也不太敏感。但在实际计算过程中,圆形模板需要离散化,这就带来了较大的量化误差,容易导致边缘点和角点的判断混乱。对于边缘模糊的图像,使用小模板会丢失角点,这就需要动态地判断究竟用哪种模板最优。文献[10]针对此问题提出模糊度的概念,对每一个像素在计算其CRF值之前首先测定其模糊度。若达到模糊的标准,就使用大的模板来计算;若清晰,则选用小的模板来计算。这使得判定的准确性得到很大的提高,减少了虚报概率。
费旭东等人[11]采用基于知识的查表技术来进行角点的快速提取,其特点是便于用硬件来实现,但必须先得到图像的边界链码表示,原则上属于模板匹配。
一般来说,各种角点检测算子要与图像进行卷积运算,所以也应该属于模板类的方法。
文献[12]采用高斯—拉普拉斯二阶微分算子来检测角点。高斯二阶微分函数与离散信号的卷积相当于高斯函数与信号的卷积再求二阶差分,因此对噪声的敏感度较大。文献[13]基于神经细胞(Gauglion Cell,GC)感受野数学模型提出双高斯差(Difference Of Gaussian,DOG)模型来检测角点,指出高斯二阶微分函数是DOG函数在其两个高斯函数相互逼近时的一个极端形式特例。DOG函数与信号的卷积相当于两个高斯函数与信号的卷积结果之差,因此抗噪声的能力较强。 早在1975年,Rosenfeld A等人[16]和Freeman H等人[17]就提出通过计算角点强度k来提取角点,不过这种方法虽然简单,但容易受噪声干扰,效果不是很理想。为了将干扰去除,减少边缘毛刺干扰,Asada等人[18]提出首先对边缘采用高斯平滑,即减少了将局部弯曲度突然增大而误判为角点的概率。但角点强度k是预先确定还是根据曲线的弯曲度自适应调节,对于检测的结果影响很大。文献[19]指出自适应的弯曲度测定实际上是要自适应地确定曲线段支持区域的大小,支持区域的选择应该能够根据曲线的弯曲程度自适应地调整,在此支持区域上求取的曲线弯曲度才能较为准确地反映平面对象边界曲线的平滑和弯曲程度。文献[20]提出采用自适应弯曲度求取算法计算曲线上任意点所在位置的曲线弯曲度,将曲线边界点集中满足限定条件的点组成候选角点集合,增加平滑参数开始新的循环,直到达到预先设定的最大平滑因子为止,最后将所有候选角点集合中出现次数满足一定门限的边界点定义为角点。
文献[21]认为数字化曲线是离散的,是基于像素基础的,这样隐含的一个假设就是数字化曲线上相邻两个像素之间的距离是一个常数,但在实际中该假设并不成立,因此质疑早先对角点的估计方法是否可拟合稳定。基于这个发现,文章提出了基于曲线累加弦长的角点检测方法,主要是在确定支持域时充分考虑相邻像素点之间的实际距离,即相邻的距离应该是1和2,并由此出发提出隐式精化数字化曲线的策略,推导出了一种新的角点强度计算公式。利用该公式可以对如尖角和圆角进行区别,检测结果具有旋转不变性。该方法被认为是在数字化图像处理中引入了纳米技术。 对于曲线曲率的计算,一种是直接对离散的曲线进行计算,另一种是用某类函数对原始曲线分段拟合,然后根据拟合后的曲线分段方程,计算曲线曲率极值得到角点的位置。
文献[22]使用了三次多项式来拟合离散的数据点,文献[23]提出了B样条来拟合曲线,由于要事先实现计算曲线的拟合方程,其运算量比较大。文献[21]提出算法根据曲线上任意点的弯曲度,结合模糊识别的方法来检测对象边界曲线的角点。而文献[24]认为既然角点是曲线上曲率较大的点,角点检测的关键是估计当前轮廓点前后曲线的方向,该方向的度量采用定义的一个方向差角d?θ=180°-min{|θ?1-θ?2|,360°-|θ?1-θ?2|},差角越大,表示曲率越大。其中基于距离误差的直线拟合可以自适应地调整拟合窗口,很好地减少了边缘噪声的干扰。在文献[25]中除了像文献[24]对角点两侧的点构成向量的夹角继续关注以外,还对曲线角点的特征进行了多方位的考虑,同时引用模糊集合的概念,采用隶属度对点领域的四个特征进行描述。这四个特征分别为角点前后点组成的向量与角点的距离特征、角点前后向量夹角特征、角点的前向直线特征、角点的后向直线特征。采用隶属度描述后,对真实角点的相邻点有很强的抑制作用,检出的角点符合人类视觉感知规律。但该算法仅考虑了角点的局部特性,没有考虑全局特征,因此存在一定的漏检现象。在关注角点细节特征的同时,如何能有效地考虑全局整体特征,应该是该算法需要完善的地方。 滤波器的尺度选择并不是一件容易的事情,要求在滤掉噪声的同时保持边界曲线的基本形状特征。同时曲线上各角点均有着不同尺度的支撑域,无法事先定义出一个最优的分辨率来进行角点检测。在使用多尺度分析后求取不同尺度的空间时,轮廓曲线已经被不同的小波函数所平滑,所以能最大限度地减少边缘毛刺噪声。
Witkin[20]和Koenderink[26]提出基于尺度空间的图像分析理论后,多尺度曲线分析成为解决该问题的主要方法,在曲线尺度空间中,随着曲线尺度由小变大,一直保持较高弯曲度的点必定是所要求取的角点。基于此,文献[27]提出基于尺度空间的角点检测思想,文献[28]对采用二阶导数零交叉边缘检测算子和围线跟踪算法得到的边缘曲线,使用一组自相似二进Gabor小波变换的滤波器将整个频域从高频到低频分为多个子带,对两个不同尺度下的滤波器输出求差并取模,根据结果即可判定该点是否是角点。
在上面的多尺度检测中,仅考虑了角点的位置信息,文献[29]提出在利用角点的位置信息时不能忽略有关角点的幅度信息。在选定小波为高斯函数的一阶导数后,对图像轮廓的Freeman链码C={P?i=(x?i,y?i),i=1,…,n}投影成函数φ(i)=arctg[(y?i q-y?i-q)/(x?i q-x?i-q)],对φ(i)进行小波变换,在不同的尺度上,角点的小波变换幅值始终是最大的,位置始终是不变的。如果有噪声,那么噪声的幅值只存在于有限的尺度空间上,结合幅值判据和位置判据就能够很好地确定角点,剔除伪角点,结果的准确性很高。同时结合不同的角点模型,还可以对角点是单角、双角、三角的属性作出判别。

温馨提示:答案为网友推荐,仅供参考
相似回答