基于Hough变换和圆形模板的棋盘格角点检测 下载: 1114次
ing at resolving the issue of accuracy of the existing checkerboard corner detection algorithms, we propose a high-precision checkerboard corner detection algorithm based on Hough transform and circular template. First, we used the Hough transform to extract straight lines in an image, used the distribution features of the checkerboard lines to obtain the effective straight lines, and then obtained and roughly located the approximate corner points based on these lines. Second, we constructed a new circular template that is moved around the roughly located corner points to search for related points; we simultaneously obtained their image coordinates and observation distances. Finally, we solved more accurate corners, which should satisfy the minimum difference between the actual distances from related points and their observation distances. The experimental results reveal that the calibration error of the proposed method significantly reduces compared with the existing methods. When the illumination is not ideal, the proposed method can also realize accurate detection. This method provides a strong basis for the application of high-precision calibration of actual cameras.
1 引言
摄像机标定是机器视觉的关键性技术,被广泛应用于工业检测、机器人导航、地形勘探、医学诊断等领域[1-3]。通过标定获取摄像机参数,可以实现图像的三维重建。在众多标定方法中,应用最广泛的是由Zhang[4]提出的棋盘格标定法,相对于Tsai两步法和自标定方法,其优势在于操作方便,精度较高且鲁棒性较好。棋盘格标定法是将棋盘格角点的图像坐标提取出来,结合其空间坐标进行优化求解,最终计算出摄像机参数。在整个标定过程中,棋盘格角点检测尤为重要,即使是半个像素的误差也会对标定参数造成重大偏差[5]。因此,棋盘格角点的精确检测是摄像机高精度标定的关键。
在众多棋盘格角点检测方法中,应用最广泛的是一种人机交互方法[6],需要手动选取棋盘格最外围的四个角点,计算机根据其信息检测出其余角点,手动选取外围角点易出现偏差,造成角点定位不准确,且该方法难以实现自动化。棋盘格角点检测常用Hessian、Harris、SUSAN(Small Univalue Segment Assimilating Nucleus)等角点检测算子实现自动化[7-9]。洪磊等[10]利用交比不变原理求出消失点,有效地解决了Hessian算子在局部区域角点检测失败的问题,但较差的光照条件会导致候选极点过多而失败。王晓辉等[11]结合Harris算子和Hessian矩阵提出一种自适应检测算法,克服了传统方法依赖于阈值的不足,极大地提高了角点检测的适应性和稳定性,在图像背景复杂的情况下,仍会因反复循环判定保留少量的伪角点。杨幸芳等[12]提出基于两个环形模板的灰度跳变次数的算法,而刘俊杰等[13]提出基于灰度跳频阈值选择的算法,这两种算法解决了SUSAN算子的弊端,可以有效区分棋盘格边缘和角点,但在亚像素定位上稍有不足。储珺等[14]利用冗余角点的对称性与环形模板卷积,解决了曝光过度导致棋盘格角点分离的问题,有效地消除了冗余角点,但质心法在提取精度上稍有不足。屠大维等[15]利用圆形检测器进行初步提取,再利用局部对称性消除错误角点,但采用灰度强特征进行筛选,会因边缘模糊而引起角点定位的偏差。李海等[16]利用直线检测(LSD)算法,极大地提高了自动化程度,此方法在复杂背景和格子数量不足的情况下会出现误检。王海涛等[17]利用角点的对称性和区域的边缘匹配进行检测,该方法适用于由显示屏绘制的棋盘格网格,但在较差的光照条件下,其精度会降低。吴敏杨等[18]提出基于旋转不变性的角点检测方法,在模糊环境下减少了噪点干扰,提高了检测准确率。刘飞飞等[19]提出的角点检测方法融合了BW(Black-White)算子和环形模板,在原来的两种算法上作进一步改进,弱化了复杂环境的约束,大幅减少了角点的冗余检测。
现有的棋盘格角点检测算法存在以下问题:角点定位精度有待提高,角点的误检与漏检仍有可能出现,这将会导致摄像机标定精度大幅下降。为了避免角点的误检和漏检,本文结合Hough变换和棋盘格直线分布特征,剔除冗余的直线,保留有效直线用于构建棋盘格角点,实现角点的粗略定位;再使用圆形模板在粗略定位的角点周围移动,搜寻相关点,利用其图像坐标与对应的观测距离,对角点进行精确定位。
2 棋盘格成像分析
当摄像机光轴垂直于棋盘格时,在成像平面上形成的图像中,每个格子的内角依然是直角。在标定过程中,往往需要光轴与棋盘格垂直方向形成一定的角度。当摄像机光轴不再垂直于棋盘格时,图像中的棋盘格的内角会发生变化。如
根据透镜成像原理,
由于第二个过程中,只改变了向量的模,不改变向量的方向,因此对于夹角的计算,只需要考虑第一个过程。在第一个过程中,I平面垂直于光轴ZC,故平行于I的平面也会垂直于ZC,ZC垂直于这个平面的任意直线,即垂直于形成夹角β的OWXI和OWYI。当光轴
3 角点检测方法
3.1 基于Hough变换与直线分离的角点粗略定位
根据上述内容,可知棋盘格内角变化的原因是在投影的过程中,直线的方向发生了改变。因此,先利用直线检测计算出棋盘格每个内角对应的角度,同时对角点进行初步定位。直线检测方法中Hough变换[20]的应用最为广泛,其鲁棒性好,抗噪能力强。Hough变换的主要思想是,利用图像域的像素点与参数平面上离散点的映射关系,求解出对应的直线方程。直角坐标系中的参数是斜率和截距,由于垂直于横坐标系的直线斜率趋向于无穷大,其参数无法求解,故易忽略这些直线的存在。为避免这种情况发生,直线检测的过程往往转换到极坐标系中进行参数求解。极坐标系中直线方程可表示为
如
棋盘格由两组相互平行的直线形成,且每组直线的数量是已知的。因此,先将与θ值相近的直线进行归类分组,将分类后数量不足的直线组剔除;由于每组平行线是等距的,故其ρ值应近似为等差数列,进一步将不满足该条件的直线组剔除;最终剩下满足上述两个条件的直线组。将棋盘格直线从复杂背景中分离出来,如
图 4. Hough变换下棋盘格直线分离结果。(a)原图像;(b)直线分离后的图像
Fig. 4. Results of checkerboard straight line separation under Hough transform. (a) Original image; (b) image after straight line separation
最后,将两组相交直线对应的方程组进行联立求解,计算出对应的角点像素坐标,完成角点的粗略定位。同时,两组直线的θ值之差为两组直线的夹角,即棋盘格内角φ;将直线按照ρ值的大小顺序进行排序,便于后续依序检测。若此时直接对角点进行标定,其标定误差在0.5个像素以上,标定参数会出现严重偏差[5]。因此,角点还需进行精确定位,而棋盘格角点周围灰度特征变化明显,使用圆形模板利于在角点周围进行区域检测。同时,将变换中获取的直线特征进行统计与判定,粗略定位棋盘格角点,锁定棋盘格区域,可为圆形模板区域检测减小运算量。
3.2 基于圆形模板区域检测的相关点获取
首先,进行圆形模板的USAN区域判定。本文采用SUSAN算子[8]中的USAN区域判定方法,基于类似圆形的模板遍历整个图像, 其模板内部所有像素点都会与其中心像素点进行对比,即求取两个灰度差值的绝对值,若这个绝对值不超过某个特定值, 则判定该点与中心点的灰度相同,反之则灰度不相同。与中心点灰度相同的区域则称为USAN区域,其余则为非USAN区域。USAN区域判别函数可表示为
式中:w0为模板中心点,简称为模板核;w为模板内部点;t为灰度差阈值;I(w)为像素点w对应的原灰度值;c为判别后像素点的灰度值。在USAN判别过程中,已经实现二值化,USAN区域灰度取1(白色),非USAN区域灰度取0(黑色)。
SUSAN采用非极大值抑制选取USAN区域最小的点为角点,无须考虑模板大小。与之不同的是,本文方法仅利用其USAN区域判别函数,根据非USAN区域分布特征在对应的角点周围寻找适量的相关点,同时又不能影响其他的角点。为满足上述要求,需设计一个容量合适的圆形模板。如
图 5. 圆形模板USAN区域判别。(a)角点附近的圆形模板;(b)模板对应USAN区域分布
Fig. 5. Discrimination of the USAN area of the circular template. (a) Circular template near the corner point; (b) distribution of the USAN area corresponding to the template
如
3.3 角点的精确定位
当圆形模板检测的相关点位于棋盘格内角平分线上时,圆形模板内部USAN区域的像素量可以简化成一个数学模型。如
又由于圆形模板没有实际的半径,而整个圆形模板的像素量R是个定值,其对应 (3) 式中的πr2。棋盘格内角φ已在直线检测时计算出来,此处为已知值。因此,可基于S的值计算核坐标到角点坐标的观测距离d,即
直线相交形成两个互补角,而棋盘格内角φ是其中的一个角,需要根据此时圆形模板核的图像坐标(x,y)进行判定。假设两相交直线方程对应(ρ1,θ1)和(ρ2,θ2),定义判定参数j1、j2、h1和h2:
最终得到角φ的计算公式为
圆形模板在粗略定位的角点周围移动,当圆形模板中分开的两块非USAN区域像素量相等时,获取当前模板核的图像坐标(xI,yI)与非USAN区域像素量SI,再利用 (4) 式计算dI值,通过其观测距离与实际距离的差进行最小化求解,得到精确定位的角点(x,y),表达式为
如
图 7. 角点精确定位。(a)模板核坐标获取;(b)角点搜索区域;(c)最小化准则定位
Fig. 7. Corner precise positioning. (a) Template kernel coordinate extraction; (b) corner search area; (c) minimization criterion positioning
4 实验结果与分析
本文实验所采用的图像采集设备为华睿科技大华工业摄像机A513MU210,其分辨率是1280 pixel×1024 pixel,像元尺寸为4.8 μm×4.8 μm,镜头焦距为5~50 mm。摄像机通过脉冲触发线和数据传输线与工控机连接,工控机控制摄像机采集和临时存储图像,最终通过网线传输给工作站主机进行图像处理。定制2块棋盘格标定板, 其规格均为7×7,小型标定板单格尺寸为20 mm×20 mm, 大型标定板尺寸为32 mm×32 mm。对无频闪光源作稳定的亮度补偿。实验现场及设备见
4.1 精度对比实验
在摄像机标定过程中,角点检测精度至关重要,直接影响标定结果的精度。因此,需对本文方法的角点检测精度进行检验,同时与文献[ 10]、[16]和[17]中提出的三种方法的检测精度进行对比实验。
在距离摄像机约1.8 m的范围内,在合适的光照条件下,使用大型标定板以8个不同的位姿进行图像采集,其目的是进行标定。本文方法的角点检测结果如
将获取的角点图像坐标通过Zhang标定方法[4]进行标定,通过最小化重投影误差,求解摄像机标定参数。重投影误差的散点分布如
摄像机标定结果如
图 10. 重投影误差的散点分布。(a)本文方法;(b)文献[ 10]方法;(c)文献[ 16]方法;(d)文献[ 17]方法
Fig. 10. Scattered point distributions of reprojection error. (a) Method of this paper; (b) method of Ref. [10]; (c) method of Ref. [16]; (d) method of Ref. [17]
表 1. 摄像机标定结果
Table 1. Camera calibration results
|
文献[ 10]、 [16]和[17]中的三种方法的误差在0.1402 pixel以上,文献[ 18]与[19]提出了精度更高的角点检测方法,其误差分别为0.10 pixel和0.1005 pixel,而本文方法的误差为0.0726 pixel,精度得到显著提升。
4.2 光照条件实验
在棋盘格角点提取的过程中,图像的成像质量尤为重要,而影响成像质量最主要的因素就是光照。在很多复杂的测量环境中,光照往往达不到理想的条件,或者无法进行适当的调节。因此,需验证本文棋盘格角点检测方法的光照鲁棒性。
图 11. 不同光照条件下棋盘格角点检测结果。(a)偏暗光照(g=25.9);(b)中等光照(g=76.5);(c)偏亮光照(g=165.8)
Fig. 11. Results of checkerboard corner detection under different lighting conditions. (a) Dimmed light (g=25.9); (b) medium light (g=76.5); (c) bright light (g=165.8)
设置3组实验,手持小型标定板以不同的位姿进行图像采集,每组采集8幅图像。第1组实验,环境中光线偏暗,在不提供额外光源的条件下进行图像采集;第2组实验,开启光源,光源的光照强度调整到最大值的50%;第3组实验,将光源的光照强度调至最大值。应用本文方法对采集的图像进行角点检测,结果如
表 2. 不同光照条件下的角点检测误差
Table 2. Corner detection errors under different lighting conditions
|
5 结论
针对现有棋盘格角点检测算法精度仍有待提高的问题,提出一种基于Hough变换和圆形模板的棋盘格角点检测方法。首先,基于Hough变换检测棋盘格直线,利用投影成像过程中棋盘格直线分布具有平行、等距的特征,对直线进行分类,并将冗余直线进行剔除,保留有效直线,构建粗略角点,有效地避免了角点的误检和漏检;然后,构建了由497个像素组成的圆形模板,利用其非USAN区域像素面积分布特征,获取相关点,即棋盘格内角平分线上的点,基于得到的相关点提出判定角点的距离最小化准则;同时,基于区域搜索求解满足距离最小化准则的角点,并逐步缩小搜索区域与搜索步长,将角点位置精度提高至亚像素级,最终实现了棋盘格角点的高精度自动检测。本文方法具有Hough变换鲁棒性好,检测直线效率高,以及构建的圆形模板容量丰富的特点。实验结果表明,本文提出的棋盘格角点检测方法,其标定误差达到0.0726 pixel,与现有其他文献中的方法对比发现,误差明显减少,角点检测精度显著提高,同时,在不同光照条件下,本文的方法仍然能实现精确检测,误差值几乎不变。该方法为实际摄像机高精度标定提供了理论支撑。
[1] 郎威, 薛俊鹏, 李承杭, 等. 基于旋转台参数标定实现多视角点云拼接[J]. 中国激光, 2019, 46(11): 1104003.
[2] 解则晓, 余江姝, 迟书凯, 等. 非平行双目视觉系统水下标定与测量[J]. 光学学报, 2019, 39(9): 0912004.
[3] 张青哲, 王勇. 基于对极约束的双目立体视觉标定精度评价方法[J]. 激光与光电子学进展, 2019, 56(23): 231504.
[4] Zhang Z Y. A flexible new technique for camera calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11): 1330-1334.
[5] Lavest JM, VialaM, DhomeM. Do we really need an accurate calibration pattern to achieve a reliable camera calibration?[C]∥ECCV '98: Proceedings of the 5th European Conference on Computer Vision, New York: ACM, 1998: 158- 174.
[6] Bouguet J Y. Camera calibration toolbox for Matlab[EB/OL]. ( 2015-10-14)[2019-05-13]. http: ∥www.vision.caltech.edu/ bouguetj/calib_doc/index.html.
[7] HarrisC, StephensM. A combined corner and edge detector[C/OL]∥Procedings of the Alvey Vision Conference, [S. l.: s. n.], 1988: 147- 151.
[8] Smith S M, Brady J M. SUSAN: a new approach to low level image processing[J]. International Journal of Computer Vision, 1997, 23(1): 45-78.
[9] ChenD, ZhangG. A new subpixel detector for X corners in camera calibration targets[C]∥ WSCG SHORT Papers Proceedings, January 31-February 4, 2005, Plzen, Czech Republic. [S. l.: s. n.], 2005.
[10] 洪磊, 嵇保健, 凌超. 一种棋盘格靶标不完整角点识别的修正算法[J]. 计算机辅助设计与图形学学报, 2016, 28(9): 1521-1526.
Hong L, Ji B J, Ling C. A modified algorithm for incomplete corner identification of chess board target[J]. Journal of Computer-Aided Design & Computer Graphics, 2016, 28(9): 1521-1526.
[11] 王晓辉, 程健庆, 韩瑜. 摄像机标定的棋盘格角点自适应检测算法[J]. 计算机应用, 2014, 34(S1): 199-202, 231.
Wang X H, Cheng J Q, Han Y. Adaptive checkerboard corners detection algorithm based on camera calibration[J]. Journal of Computer Applications, 2014, 34(S1): 199-202, 231.
[12] 杨幸芳, 黄玉美, 李艳, 等. 基于改进的SUSAN算子的棋盘格亚像素角点检测算法[J]. 中国机械工程, 2010, 21(21): 2541-2545.
Yang X F, Huang Y M, Li Y, et al. Sub-pixel corner detection algorithm of chessboard image based on improved SUSAN operator[J]. China Mechanical Engineering, 2010, 21(21): 2541-2545.
[13] 刘俊杰, 谢春利, 王娟. 棋盘格图像角点坐标亚像素提取方法[J]. 华中科技大学学报(自然科学版), 2015, 43(S1): 170-172, 177.
Liu J J, Xie C L, Wang J. Sub-pixel corner coordinate positioning method of chessboard image[J]. Journal of Huazhong University of Science and Technology (Natural Science Edition), 2015, 43(S1): 170-172, 177.
[14] 储珺, 郭卢安政, 赵贵花. 采用环形模板的棋盘格角点检测[J]. 光学精密工程, 2013, 21(1): 189-196.
[15] 屠大维, 张翼成. 基于灰度差异的棋盘格角点自动检测[J]. 光学精密工程, 2011, 19(6): 1360-1366.
[16] 李海, 张宪民, 陈忠. 基于直线检测的棋盘格角点自动提取[J]. 光学精密工程, 2015, 23(12): 3480-3489.
[17] 王海涛, 洪亮, 谭成国. 一种用于相机检校的黑白棋盘格角点提取算法[J]. 测绘通报, 2016( 12): 33- 38.
Wang HT, HongL, Tan CG. An effective algorithm of the black and white checkerboard corner detection for the camera calibration[J]. Bulletin of Surveying and Mapping, 2016( 12): 33- 38.
[18] 吴敏杨, 季锋, 蒋明. 一种基于旋转不变性的角点检测方法研究[J]. 液晶与显示, 2018, 33(2): 150-155.
[19] 刘飞飞, 吴志刚, 任舒琪, 等. 复杂背景下改进的棋盘格内角点检测算法[J]. 计算机工程与设计, 2019, 40(12): 3474-3478.
Liu F F, Wu Z G, Ren S Q, et al. Improved checkerboard grid corner detection method under complex background[J]. Computer Engineering and Design, 2019, 40(12): 3474-3478.
[20] Wang J J, Fu P L, Gao R X. Machine vision intelligence for product defect inspection based on deep learning and Hough transform[J]. Journal of Manufacturing Systems, 2019, 51: 52-60.
Article Outline
杨炜松, 郭帅平, 李学军, 李鸿光. 基于Hough变换和圆形模板的棋盘格角点检测[J]. 激光与光电子学进展, 2020, 57(18): 181510. Weisong Yang, Shuaiping Guo, Xuejun Li, Hongguang Li. Checkerboard Corner Detection Based on Hough Transform and Circular Template[J]. Laser & Optoelectronics Progress, 2020, 57(18): 181510.