2 基于Harris算法的角点提取
Harris算子是Harris和Stephens在1988年提出的一种基于静止图像的点特征提取算子。这种算子受信号处理中自相关函数的启发,给出与自相关函数相联系的矩阵。矩阵的特征值是自相关函数的一阶曲率,对图像中的任意一点,如果它的水平曲率和垂直曲率值都高于局部邻域中其他点,则认为该点是特征点。它计算简单有效同时非常稳定,在图像旋转、灰度、噪声影响和视点变换的条件下,与其他算子相比是最稳定的一种点特征提取算子。Harris算子定义为:
式中:其中gx为x方向的梯度,gy为y方向的梯度,G(s)为高斯模板,⊕为卷积操作,I为每点的兴趣值;det为矩阵的行列式;tr为矩阵的迹;k为经验值,一般取0.04。
Harris算子在摄像机标定图像的使用方法:首先计算图像中的每个点在横向和纵向的一阶导数以及它们的乘积。从而得到3幅新的图像。这3幅图像中的每个像素对应的属性值分别为gx,gy和gxgy。然后运用高斯滤波处理这3幅图像,接着计算原图像上对应的每个点的兴趣值。计算完各点的兴趣值后,要提取出原始图像中的所有局部兴趣值最大的点,即依次取出每个像素的8邻域中的每个像素,从这些像素中找出兴趣值最大者。特征点就是中心点像素的兴趣值为最大的点。
用公式提取特征点时,只要像素点的兴趣值大于某一阈值T的点均可被认为是特征点。但T不具有直观的物理意义,其具体值难以确定。所以在实际操作中应采取间接确定T的方法:通过确定图像中所能提取的最大可能的特征点数目N来选择兴趣值最大的若干像素点作为特征点。局部极值点的数目可能会很多,根据兴趣值进行排序后,取其前N个点为特征点。
3 精确角点坐标至亚像素级
对于棋盘格图像如图1所示,角点附近的点可分为在边缘上的点和不在边缘上的点两类。B点上的梯度方向与OB垂直,而A点处灰度梯度为零,可见在角点O附近点的灰度梯度均垂直于该点与角点的连线。
用数学式可表达如下:
式中:为灰度梯度向量,为图像原点指向O点的坐标,为图像原点指向第i点的坐标。
实际图像可能受到噪声的影响,故一般情况下式(1)不为0。设误差为θ,即:
在以角点为中心的某一邻域内,对所有点按式(2)计算,误差和为S,则有:
故求角点准确位置的问题转化为求使误差和S最小的点的问题。该问题可用迭代的方法优化求解,对式(1)两端同时乘以得:
将角点邻域内所有点分别代入式(4)。把所有结果求和,可得出:
这样就得到了角点O的迭代式,通过对初始Harris角点进行一定级数的迭代优化,可以得到其更精确的坐标位置。