双目视觉中的角点检测算法研究

时间:2022-06-29 12:36:42

双目视觉中的角点检测算法研究

摘 要:为了实现双目视觉中的特征提取与立体匹配,在研究现有角点检测算法的基础上,提出一种改进的Harris角点检测算法。该算法首先采用图像分块和邻近角点剔除的策略,实现了阈值的自适应调节,并保证角点分布的均匀和避免角点聚簇的产生。结合Forstner检测算法,将精度提高到亚像素级。编程计算结果验证了该方法的准确性和稳定性。

关键词:双目视觉; 特征点提取; 角点检测; 自适应调节

中图分类号:TP391 文献标识码:A

文章编号:1004-373X(2010)12-0097-02

Research on Corner Detection Algorithm for Stereo Vision

SHI Hong-guang, ZHANG Feng-sheng, ZHENG Chun-lan

(College of Mechanical & Electrical Engineering, Qingdao University, Qingdao 266071,China)

Abstract: An improved Harris corner detection method based on the study on the existing corner detection methods is presented for the realization of feature extraction and stereo matching in stereo vision.By the image segmentation and neighboring point eliminating methods, the self-adaptive adjustment of threshold was achieved, the uniform distribution of the corner points was guaranteed, and the gathering of too many corners was avoided effectively. The algorithm also promoted the accuracy of the corner detection to the order of sub-pixels in combination with Forstner detection algorithm. The programming calculation results verify its accuracy and stability.

Keywords: stereo vision; feature point extraction; corner detection; self-adaptive adjustment

虽然角点没有明确的数学定义,但人们普遍认为角点是二维图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点[1]。目前,角点检测方法主要分为基于图像边缘的方法[2]和基于图像灰度的方法[3]2类。前者在很大程度上依赖于图像的分割和边缘的提取,算法复杂,计算量大;后者主要通过计算点的曲率及梯度来检测角点,算法简单,计算量小。Harris角点检测方法是一种直接基于灰度图像的角点提取算法,具有较高的鲁棒性,能够在图像旋转、灰度变化以及噪声干扰等情况下准确提取出角点,应用广泛[4]。但该方法需要人为设定一个阈值,且精度只能达到像素级。为此,本文提出┮恢知改进的Harris角点检测方法,实现了阈值自动设定,并把精度提高到亚像素级。

1 Harris角点检测算法

Harris角点检测算法的基本思想是[5]:在图像中设计一个局部检测窗口,当该窗口沿各个方向做微小移动时,考察窗口的平均能量变化。当该能量变化超过设定的阈值时,就将窗口中的中心像素点提取为角点。

对于一幅图像I,假设 X , Y Х直鹞其行向量和列向量的一阶差分。定义:

h(x,y)=12πe-x2+y22 (1)

为一阶高斯平滑函数,令:

I2u(x,y)= X 2*h(x,y), I2v(x,y)= Y 2*h(x,y)

Iuv(x,y)= XY *h(x,y) (2)

进而可得:

M (x,y)=I2u(x,y)Iuv(x,y)

Iuv(x,y)I2v(x,y) (3)

那么,窗口能量变化可以由下面的公式求出:

R=det( M )-k•tr2( M ) (4)

式中:R是窗口能量的变化值;det( M )是矩阵 M 的行列式;tr( M )是矩阵 M 的轨迹;k为与检测灵敏度有关的经验值,k越小,则检测越灵敏,一般k取0~0.04。Harris角点从R的局部极大值点中产生,至于R取多大才能作为角点,这就需要人为设定一个阈值T,而TУ娜≈狄览涤谕枷竦氖粜浴L乇鹗茄丈深浅不同,难以确定,使得用户在设定具体阈值时比较盲目,只能多次设定比较后才能获得相对理想的角点[6]。另外,往往特征值较大的点只集中在某些区域,这样可能导致检测出的角点分布不均匀;如果降低T,尽管角点分布总体上趋于均匀和合理,但将导致角点紧挨在一起,产生角点聚簇的现象。这些都将影响后续的分析和处理。

2 改进的Harris角点检测算法

本文算法首先采用图像分块和邻近角点剔除的策略[7],避免阈值的设置,并保证角点分布的均匀和避免角点聚簇的产生。然后,结合Forstner检测算法将精度提高到亚像素级。

2.1 自动设定阀值

在角点筛选前,先对图像进行分块,这样能保证角点分布均匀。在图像分块时,为避免存在大面积越界分块,同时保证对较大图像进行处理时,有同样的效果,采用固定块数的分块法,而非固定单位边长的方法。对于图像块中被检测出的角点,将其按R值的大小排序,保留R值相对较大的角点。至此,在图像各个区域征明显的角点均已被检测出,实现了角点分布的均匀性。但此时,可能在一个角点很邻近的周围还存在其他角点,即在局部的区域可能会出现角点聚簇的现象,这可能导致在特征点匹配处理时误匹配几率显著增加。因此,必须采用一定的策略减弱或消除这种现象。在实现角点的均匀分布之后,再加入邻近点剔除策略,具体方法是:选用一个模板(如3×3)对整幅图像进行处理,若在该模板下存在不止一个角点,则只保留其R值最大的角点,以达到剔除邻近点的目的。实例计算表明,该策略能较好地抑制角点聚簇现象的产生。至此,完成了对整幅图像的角点检测。

该算法的具体实施过程是对图像中的每个像素点操作,得到矩阵 M ,利用高斯滤波求出新的 M ,再计算R值。在图像分块中,对每一图像块,检测图像块中存在的角点,将检测出的角点R值存储在数组R[N]中。其中,N为数组的大小,即角点的个数。然后,对R[N]按R值的大小进行排序,假设排序(本文选择按从大到小排序)后的数组为R′[N]。选取数组R′[N]中R值相对较大的角点作为最终的角点,即在N个角点中选取λ×N( λ∈(0,1])个角点作为最终的角点。为了保证各分块中均有角点被保留,本文采用循环迭代算法对λ值进行求解:在(0,1)内取一较小的值作为λ的初始值(本文取│=0.02),用λ=λ+step进行循环迭代(本文取step=0.02),以判断λ值。若λ=1,终止迭代;否则,判断含有角点的各图像块中是否有角点被保留,如果是,则终止迭代,取此时的λ值。最后,对整幅图像进行邻近角点剔除操作。本文选用3×3 的操作模板,若模板下存在的角点数大于1,则只保留R值最大的角点。

2.2 提高角点定位精度

Harris 检测算法编程实现起来简单, 只需对图像进行一阶差分和卷积运算, 这些都是图像处理中的基础算法,但是精度只能达到像素级。Forstner 检测算法可以提高定位精度,但受图像灰度和对比度的变化影响较大。Forstner 检测算法的基本思想是[8]: 对于角点, 对最佳窗口内通过每个像元的边缘直线(垂直于梯度方向)进行加权中心化,得到角点的定位坐标;对于圆点,对最佳窗口内通过每个像元的梯度直线进行加权中心化,得到圆心的坐标。

本文将2种方法结合,以提高角点定位精度。具体方法是:首先利用改进的Harris 角点检测算法提取出一定数量的特征点, 这些特征点都是图像局部范围内最优的特征点, 每个特征点对应于一个具体的像素, 因为它的精度只能达到像素级;然后将提取的特征点作为Forstner最佳窗口的中心点, 在窗口内进行加权中心化操作, 精确定位特征点的位置, 将精度提高到亚像素级别。

3 实验结果分析

为了验证该方法的准确性、稳定性,这里采用VC++ 2005编制了计算程序。在白天和夜晚两种不同光照条件下进行角点检测实验。实验采用7×7的黑白棋盘格,对中间的36个角点进行检测。实验过程中将实验用棋盘格变换成多个不同的方位进行角点检测,┩1为实验效果图。可以看出,本文的方法在不同的光照条件下和不同的方位都能稳定准确地提取角点。

图1 角点提取效果图

为了验证角点定位的精度,选用5个坐标已知的角点进行实验。分别采用Harris方法和本文的方法进行角点定位(单位:像素),结果见表1。由表1数据可知,本文的方法能显著提高角点的定位精度。

表1 角点定位结果比较

特征角点ABCDE

理想坐标 (100.0,100.0)(200.0,200.0)(300.0,300.0)(400.0,400.0)(500.0,500.0)

Harris方法提取坐标(98,99)(200,198)(302,301)(402,399)(498,501)

本文方法提取坐标(99.3,99.8)(199.9,199.6)(301.4,300.7)(399.6,400.8)(500.2,500.1)

4 结 语

本文对Harris角点检测算法进行改进,采用图像分块和邻近角点剔除策略,避免了阈值的设置,并保证角点分布的均匀和避免角点聚簇的产生。结合Forstner检测算法,将角点检测精度提高到亚像素级。对实际图像进行了角点检测实验,结果验证了本文方法的准确性和稳定性,对双目视觉系统的研究具有较强的实用价值。

参考文献

[1]赵文彬,张艳宁.角点检测技术综述[J].计算机应用研究,2006(10):17-19.

[2]QUDDUS A, FAHMY M M. An improved wavele based corner detection technique[C]//Proceedings of IEEE Inter- national Conference on Acoustics, Speech and Signal Processing. USA: [s.n.], 1999:87-89.

[3]HARRIS CG, STEPHENS M J. A combined corner and edge detector[C]//Proceedings Fourth Alvey Vision Conference. Manchester: [ s.n.] , 2001: 147-151.

[4]王玉珠,杨丹,张小琪,等.基于B样条的改进型Harris角点检测算法[J].计算机应用研究,2007(2):192-193.

[5]HEN S, HUW C. A rotationally invariant two-phase scheme for corner detection[J]. Pattern Recognition, 2006, 29(5): 819-828.

[6]Zun Ga O A, HARALICK R. M. Corner detection using the facet model[C]//Proc. of Conf. Computer Vision and Pattern Recognition. Washington: [ s.n.] ,2003: 30-37.

[7]赵万金,龚声蓉,刘纯平.一种自适应的Harris 角点检测算法[J].计算机工程,2008,34(10):212-217.

[8]李薇薇,段智敏.一种改进型的Harris角点检测算法[J].机械工程与自动化,2009(2):21-23.

上一篇:基于Jxta的P2P即时通信软件的Java实现 下一篇:基于BP神经网络的玻璃缺陷识别技术研究