基于梯度的方法是通过计算边缘的曲率来判断角点的存在性,角点计算数值的大小不仅与边缘强度有关,而且与边缘方向的变化率有关,该方法对噪声比基于模板的角点检测方法对噪声更为敏感。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函数与信号的卷积相当于两个高斯函数与信号的卷积结果之差,因此抗噪声的能力较强。
除了直接对灰度图像的像素操作以外,罗斌等人[14]采用了变换的方法,用电磁场理论中矢势的鞍点检测来代替角点的检测,是一种综合了模板角点检测和灰度曲率角点检测的方法。通过高斯模板和图像的卷积获得Canny边缘映射图,再计算梯度和边缘矢量就得到了矢势。对于矢势计算高斯曲率和平均曲率来判定是否是鞍点,对应的应该是图像的角点。因为涉及到了曲率的计算,也有人将该方法归到边缘曲线的角点检测。