APP下载

基于单应性矩阵的棋盘格角点检测研究

2012-09-26叶玉堂宋昀岑

电子设计工程 2012年6期
关键词:角点棋盘标定

刘 嵩,叶玉堂,孙 强,宋昀岑

(电子科技大学 光电信息学院,四川 成都 610054)

现代光电测控仪器经常需要对工业相机进行标定[1],尤其是需要对物体三维信息和表面几何形状重建的机器视觉仪器。相机标定是确定三维空间立体坐标与相机CCD二维图像坐标系之间坐标变换的过程,也是机器视觉领域里的基本问题[2],而相机标定的精度在很大程度上取决于标定模式特征点的图像定位精度。在相机标定算法中,基于棋盘格的相机标定由于标定模板制作简单,并且标定精度可以满足要求,因此得到了广泛的应用。

在使用棋盘格进行标定的过程中,对棋盘格角点的检测是至关重要的一步,现在也有很多角点检测方法。但是,由于棋盘格背景复杂,为了提高在复杂背景环境下对棋盘格角点检测的精度,采用参考文献[3]中的算法思想,将单应性矩阵应用在棋盘格角点的检测中,提高了角点的检测精度。单应性矩阵在视频图像分析、视觉测量和视觉伺服中都得到广泛的应用[4-5]。

1 角点综合检测方法

在已知初始化角点坐标的前提下,文中采用了一种简单有效的角点检测方法[3-4,6],该算法采用由粗到精的多层策略,综合运用了内插值法、Harris算子、Forstner算子、SVD方法。

1.1 检测方法介绍

1)设定角点所在的窗口大小为winx和winy,已知待检测的一个角点的初始图像坐标为(ui,vi),这里一般初始坐标不是整数。首先使用内插值法将包含初始角点的矩形窗口图像矩阵变换成以亚像素角点位置为中心的图像矩阵。这里,采用双线性插值对一个目标像素设置坐标,通过反向变换得到浮点坐标为(u+Δu,v+Δv),其中 u,v 均为非负整数,Δu,Δv为[0,1)区间的浮点数,则这个像素的灰度值为:

2)对得到的以角点浮点坐标(ui,vi)为中心的窗口浮点图像矩阵 S,根据 Harris角点检测算子原理,可以求得以(ui,vi)为中心进行展开的自相关函数E(ui,vi)所对应的 Hessian矩阵[7-8]。

3) 使用 Forstner算子对初始角(ui,vi)点进行更新

Forstner算子[6,9]是摄影测量学中著名的点定位算子。基本思想是:对于角点,将窗口内通过每个像素的边缘直线(垂直于梯度方向)进行加权平均化,得到角点定位坐标。

其中,u′,v′表示更新后角点的定位坐标,a~f的定义如式(4)表达。

其中,ui,vi表示更新前的角点坐标。

经过上述方法检测后得到的角点可能存在误检、多检的情况,需要采用SVD方法去除奇异角点[3]。因为Hessian矩阵M包含窗口方向梯度信息,所以对矩阵M进行奇异值分解:

其中Sλ为相应特征值组成的对角矩阵,U、V为特征向量组成的酉矩阵。若M只是包含独立角点或者边缘,则ΣSu2、SuSv、ΣSv2的值,要么相差很大,要么相差很小,在这两种情况下进行奇异值分解后,Sλ的两个特征值λ1,λ2相差很大,当满足|λ1/λ2|≥θ时,则该角点为误检或多检。这里取阈值 θ=50[3,6],通过该方法可以有效的去除非角点。

1.2 检测算法流程

为了达到更高的角点检测精度,这里使用迭代方法。

算法1

Step1: 初始化待测角点坐标(ui,vi),处理窗口大小 winx,winy,得到此窗口图像矩阵Si。设迭代距离误差为EPS,迭代次数为N,并令更新后的角点和上一次角点的二范数距离dist=EPS+1,执行 Step2。

Step2:如果dist大于EPS并且此时迭代次数n小于N,对Si进行双线性插值,得到以(ui,vi)为中心的浮点窗口矩阵S,否则跳转到 Step5。

Step3:计算(ui,vi)对应的 Hessian 矩阵 M。

Step4:根据式(3)计算更新后的角点坐标 ui,vi。 如果 M的特征值满足|λ1/λ2|≥θ,则该点为歧义角点,跳转到 Step2,令n=n+1并更新dist的值。

Step5:输出最终的角点(u′,v′)。

2 单应性矩阵H的计算

2.1 直接线性变换(DLT)算法

记标定板上标定点的图像齐次坐标为 Xf=(u,v,1),对应的齐次世界坐标为 Xw=(xw,yw,1)(zw=0)。 寻找单应性矩阵就是找到图像2D平面上点Xf和2D标定板上标定点的世界坐标Xw的对应关系。这种变换关系[10]可以表示为:

由于式(6)包含齐次坐标,这样三维向量Xf和HXw不相等,它们有相同的方向但模之间有不为零的比例因子。因此可将方程改写为向量差乘的形式:

这样,式(7)可以通过简单的线性求解出H。

现记H的第j行为hjT,那么可以得到:

设 Xf=(u,v,w)T,那么式(7)中的差乘可以写成:

式(10)即为 Aih=0。其中 Ai是 3×9 的矩阵,h 是 1×9 矩阵并组成H。

hi为h的第i个元素。

Aih=0为h的线性方程,其中Ai是给定角点的二次型。尽管式(10)有3个方程,但是第3个方程可以通过第1个方程的ui倍和第2个方程的vi倍再乘以一个比例因子得到,因此只有2个方程线性相关。这样每个角点可以得到关于H的2个方程,在求解时通常忽略第3个方程。

式(10)可以等价地写成如下形式:

又可写成Aih=0,其中 Ai为一个 2×9的矩阵。 式(12)对任意的齐次坐标 Xi=(ui,vi,wi)T都适用。 在这里我们取 wi=1,表示(ui,vi)为图像上点的坐标。

在Ai中,有些元素是1,有些元素的单位是像素,有些元素的单位是毫米,还有些元素的单位是像素和毫米的混合体。这样使得Ai的数值条件很差,需要将图像坐标数据和世界坐标数据进行归一化变换。

2.2 归一化变换

在使用直接线性变换之前必须对数据进行归一化变换,包括图像坐标和世界坐标的平移和尺度缩放,进行归一化变换后再对结果进行适当的校正就能得到原坐标系的单应性矩阵。

数据归一化可以提高结果的精度,还对任何尺度缩放和坐标原点具有选择不变性,通过归一化可以为测量数据选择有效的标准坐标系,预先消除了坐标变换的影响。因此,由于代数最小化在一个固定的标准坐标系中进行,因而使DLT算法实际上关于相似变换不变。

2.3 各向同性缩放

1)对点进行平移使其形心位于原点;

3)对图像坐标和世界坐标上的数据对立进行上述变换。

2.4 数据归一化的DLT算法

算法2

3 半自动角点检测步骤

由于采集到的棋盘格背景可能极为复杂,为了准确可靠地检测到棋盘格上的角点。参考Jean-Yves Bouguet提供的Camera Calibration Toolbox[3]中角点检测的思想进行棋盘格标定板的角点检测。首先导入包含棋盘格的待测图像,然后输入棋盘格世界坐标两个方向上的格子数目。

具体步骤如下:

1)将待测角点包含在由手动选择的4个角点连成的4边形内,并将这4个角点的初始图像坐标作为算法1的输入,通过迭代得到4个更精确的角点图像坐标。

2)将迭代处理后的4个角点的图像坐标和其对应的世界坐标代入算法2得到单应性矩阵H。

3)利用单应性矩阵H对四边形包含的角点的世界坐标进行反变换,得到所有角点的初始化图像坐标。

4)将上一步得到的角点图像坐标代入算法1,最终得到所有角点的图像坐标。

4 实验与结果分析

文中采用Matlab GUI进行界面编程,相机选用德国Basler公司的scA-1400-gm相机,相机分辨率为1 392×1 040,CCD尺寸为2/3″。镜头选用日本VS Technology公司的SVM3520镜头。棋盘格标定板中一个格子的边长设计为4 mm。

图1 角点检测结果Fig.1 Corner detection results

操作界面如图1所示,根据半自动角点检测步骤,选定棋盘格角点外接矩形中两个方向的格子数分别为6和5,将算法1中迭代次数N设定为100,误差EPS[3]为0.005。图1为采集到的棋盘格图像角点的检测结果。可以看出,检测结果非常接近实际角点位置。

图2 检测的角点局部放大图Fig.2 Partial enlargement figure of detected corners

图2为9号和29号角点局部放大图,其中圆圈内十字交点位置为根据4个单应性矩阵定位的初始角点位置,非圆圈内十字交点位置为经过算法1迭代优化后的最终角点位置。可以看出,优化后的结果更接近实际角点的位置。

图3 单应性矩阵反变换和迭代优化后的角点变化Fig.3 Homography inverse transform and corner changes after iterative optimization

将外接四边形包含的角点经过单应性矩阵逆变换后得到的坐标信息和经过算法1迭代优化后的角点坐标进行对比,得到的位置变化如图3所示。可以看出,42个角点经过优化后的坐标与优化前的坐标变化不超过一个像素,说明通过单应性矩阵映射得到的角点位置非常接近实际角点位置,对棋盘格标定板的角点位置检测精度较高。

5 结 论

文中使用半自动角点检测方法,手动框选角点范围,应用单应性矩阵映射的方法将所有角点的初始位置进行定位,再利用算法1对角点位置进行迭代优化,最终得到优化后的角点位置。实验表明,将单应性矩阵应用在棋盘格角点检测中,对棋盘格标定板上的角点位置得到比较好的检测效果,检测精度较高,满足实际应用的需求。

[1]YANG Xing-fang,HUANG Yu-mei,GAO Feng.A simple camera calibration method based on sub-pixelcorner extraction of the chessboard image[C]//IEEE International Conference,2010(3):688-692.

[2]邹凤娇,苏显渝,李美菊.基于共面点的摄像机线性标定法[J].光电工程,2005(14):70-74.

ZOU Feng-jiao,SU Xian-yu,LiMei-ju.Camera linear calibration method with a coplanar target[J].Opto-Electronic Engineering,2005(14):70-74.

[3]Jean-Yves Bouguet.Camera Calibration Toolbox for Matlab[EB/OL].(2010-07-09) [2011-12-20].http://www.vision.caltech.edu/bouguetj/calib_doc/

[4]孙凤梅,胡占义.平面单应性矩阵对摄像机内外参数约束的一些性质[J].计算机辅助设计与图形学学报,2007,19(5):647-650.

SUN Feng-mei,HU Zhan-yi.Some properties about the constraints on the camera’s intrinsic parameters from a homography[J].Journal of Computer-Aided Design&Computer Graphics,2007,19(5):647-650.

[5]Arrospide J,Salgado L,Nieto M,Vehicle detection and tracking using homography-based plane rectification and particle filtering[R].San Diego:Intelligent Vehicles Symposium(IV),2010:150-155.

[6]黄宣达.摄像机标定中亚像素级角点检测算法[J].计算机与数字工程,2008,36(4):137-139.

HUANG Xuan-da.Sub-pixel corner detection algorithm in camera calibration[J].Computer&Digital Engineering,2008,36(4):137-139.

[7]Harris C,Stephens M.A combined corner and edge detector[C]//Manchester:Pro Fourth Alvey Vision Conference,1988.

[8]张广军.视觉测量[M].北京:科学出版社,2008.

[9]Forsrner W A.Feature extraction in digital photogrammetry[J].The Photogrammetric Record,1993,82(14):595-611.

[10]Hartley R,Zisserman A.计算机视觉中的多视图几何[M].韦穗,杨尚骏,章权兵,等译.安徽:安徽大学出版社,2002.

猜你喜欢

角点棋盘标定
使用朗仁H6 Pro标定北汽绅宝转向角传感器
基于FAST角点检测算法上对Y型与X型角点的检测
基于匀速率26位置法的iIMU-FSAS光纤陀螺仪标定
基于边缘的角点分类和描述算法
船载高精度星敏感器安装角的标定
基于圆环模板的改进Harris角点检测算法
棋盘人生
基于Harris-张正友平面标定法的摄像机标定算法
棋盘里的天文数字
基于Harris角点和质量评价的图像篡改检测