Canny边缘检测器是高斯函数的一阶导数,是对信噪比与定位之乘积的最优化逼近算子[1]。Canny认为好的边缘检测具有3个特点:(1)低概率的错标非边缘点和低概率不标真实边缘点;(2)检测出来的边缘点应该尽可能的靠近真实边缘中心;(3)边缘响应是单值的。
设 表示两维高斯函数, 表示图像;Canny边缘检测算子为 式中: 是边缘曲线的法向量,由于事先不知道边缘的方向,所以取 。那么边缘点是方程 的解,即 然后通过双阈值去掉伪边缘,Canny算子检测到的是边缘点是高斯函数平滑后的图像拐点。
Canny算法的实现步骤:
Step1:用高斯滤波器平滑图像,去除图像噪声。一般选择方差为1.4的高斯函数模板和图像进行卷积运算。
Step2:用一阶偏导的有限差分来计算梯度的幅值和方向。使用 的梯度算子计算x和y方向的偏导数 和 ,方向角 ,梯度幅值 。
Step3:对梯度幅值应用非极大值抑制。幅值M越大,其对应的图像梯度值也越大,但这还不足以确定边缘,因为这里仅把图像快速变化的问题转化成求幅值局部最大值问题,为确定边缘,必须细化幅值图像中的屋脊带,只保留幅值局部变化最大的点,生成细化的边缘。
Step4:用双阈值算法检测并且连接边缘。双阈值法使Canny算子提取的边缘点更具有鲁棒性,高低阈值分别表示为Hth和Lth,对于高阈值Hth的选折,基于计算出的图像梯度值对应的直方图进行选取。在一幅图像中,非边缘点数目在总图像像素点数目中占的比例表示为Hratio,根据图像梯度值对应的直方图累加,累加数目达到总像素数目的Hratio时,对应的图像梯度值设置为Hth,在文中设定Hratio为0.7。低阈值Lth的选择通过Lth=Lratio*Hth得到,文中Lratio设定为0.4。最后通过对边缘点的标记和领域关系进行连接得到最后的边缘检测图。
3亚像素级Zernike矩算子精确定位边缘
Zernike矩算子的基本思想是通过计算每个像素点的4个参数来判断该点是否为边缘点。像素点的4个参数为:k—灰度阶跃高度,h—背景灰度,l—中心点到边缘的距离, —中心点到边缘垂线与x轴的夹角,各参数物理意义参考图1[2]。
图 1 平面亚像素边缘阶跃模型
离散图像中的一点 的Zernike正交矩定义为:
(1)
(1)式表明,为了计算出一点的 ,需要将该点领域的点映射到单位圆的内部,复数多项式 的极坐标形式可以表示为:
(2)
Zernike矩算子实现步骤:
Step1:根据模板计算矩 和 ,表1,表2,表3为推导的模板。
Step2:计算旋转角度 (3)
Step3:计算 (4)
Step4:计算 (5)
Step5:根据亚像素坐标 与像素坐标 关系计算 (6)
表 1模板 实部
0 0.015 0.019 0 -0.019 -0.015 0
0.022 0.047 0.023 0 -0.023 -0.047 -0.022
0.057 0.047 0.023 0 -0.023 -0.047 -0.057
0.07 0.047 0.023 0 -0.023 -0.047 -0.07
0.057 0.047 0.023 0 -0.023 -0.047 -0.057
0.022 0.047 0.023 0 -0.023 -0.047 -0.022
0 0.015 0.019 0 -0.019 -0.015 0
表 2模板 虚部
0 -0.022 -0.057 -0.07 -0.057 -0.022 0
-0.015 -0.047 -0.047 -0.047 -0.047 -0.047 -0.015
-0.019 -0.023 -0.023 -0.023 -0.023 -0.023 -0.019
0 0 0 0 0 0 0
0.019 0.023 0.023 0.023 0.023 0.023 0.019
0.015 0.047 0.047 0.047 0.047 0.047 0.015
0 0.022 0.057 0.07 0.057 0.022 0
表 3模板
0 0.023 0.039 0.041 0.039 0.023 0
0.023 0.027 -0.013 -0.026 -0.013 0.027 0.023
0.039 -0.023 -0.053 -0.066 -0.053 -0.013 0.039
0.041 -0.026 -0.066 -0.081 -0.066 -0.026 0.041
0.039 -0.013 -0.053 -0.066 -0.053 -0.013 0.039
0.023 0.027 -0.013 -0.026 -0.013 0.027 0.023
0 0.023 0.039 0.041 0.039 0.023 0
4最小二乘椭圆拟合
摄像机标定过程中靶标上圆形标志经透镜采集后为平面椭圆,需要对所提取的椭圆边缘点进行最小二乘拟合,确定标志中心的像素位置。先对采集的靶标图像进行Canny边缘检测,通过计算圆形度确定每个圆的区域,在对边缘检测的图像进行亚像素检测,最后将每个圆区域的亚像素数据进行最小二乘拟合。椭圆的平面方程为[3]:
(7)
拟合求得椭圆方程5个参数B,C,D,E,F。椭圆中心坐标计算公式为:
(8)
5实验
为了验证算法的精度和可靠性,首先通过计算机仿真圆和椭圆,对理想的边缘加入不同比例的高斯噪声进行模拟计算,与已知值进行比较。再对标定过程中采集到的靶标上的圆形标志图像进行计算,分析摄像机标定精度。
计算机生成理想的圆和椭圆,并仿真出不同比例的高斯噪声,将计算结果和理想值进行比较。圆的半径为25个像素,理论圆心坐标(50.5,50.5);椭圆的长半轴为30个像素,短半轴为27个像素,理想中心坐标为(80.5,100.5),加入不同比例的高斯噪声模拟实际情况下噪声是未知的,来验证算法的精确性和稳定性。
表 4加入不同噪声计算的中心坐标
高斯噪声比例/% 圆形/像素 椭圆/像素
x y x y
2.5 50.511 50.513 80.524 100.535
5 50.487 50.472 80.533 100.544
10 50.547 50.542 80.455 100.438
20 50.685 50.668 80.699 100.676
表4中可以看出在加入不同比例高斯噪声提取标志中心时,对理想圆形标志x坐标提取平均误差为0.066个像素,y坐标提取平均误差为0.070个像素;对理想椭圆标志x坐标提取平均误差为0.076个像素,y坐标提取平均误差为0.079个像素。由表4数据可以看出椭圆受噪声影响较圆形大。在图像噪声小于10%的时候,中心标志定位精度小于0.06个像素。
在摄像机的实际标定过程中进行标志中心提取,摄像机采用大恒公司生产的COMS摄像机,分辨率为1280*1024,焦距为12mm的镜头,工作距离约700mm处。标定板为圆形特征标志的靶标,圆的个数为11*9,相邻两圆的圆心距离为25mm 0.0015mm,如图2所示。
图 2右摄像机采集的标定板靶标 图 3 Canny检测的标定板边缘图
图4 亚像素检测后拟合的圆心标记图 图 5 双目匹配后标定板点云图
图2为右摄像机采集到的标定板图,经过Canny算子检测后得到像素级的边缘图(见图3),记录下圆形标志的区域;再经Zernike矩进行亚像素检测得到亚像素级边缘;然后通过最小二乘拟合,得到这些标志中心的精确坐标(表5为图中大圆中心坐标);最后进行标定计算,得到摄像机的内外参数,将该算法和质心法得到的标定数据进行比较,采用质心法后左摄像机的u,v轴偏差均值分别为0.32和0.26个像素,右摄像机为0.23和0.17个像素;采用本算法左摄像机的u,v轴偏差均值分别为0.27和0.21个像素,右摄像机的u,v轴偏差均值分别为0.22和0.16个像素[4]。可见,相比质心法采用亚像素拟合得到的标定数据精度较高。通过对左右图片以及圆心坐标进行匹配,得到标定板的点云(见图5)和标定板圆心的世界坐标,计算两相邻圆心之间的绝对距离,最大误差为0.3mm,平均误差为0.02mm。
表5右摄像机图提取大圆中心像素坐标比较
像素边缘拟合坐标 本算法拟合坐标
大圆标号 x坐标 y坐标 x坐标 y坐标
1 578.1233 296.011 578.2496 296.059
2 3.5 297.216 3.6749 297.1766
3 446.5921 426.6635 446.7241 426.4394
4 838.849 439.7023 838.744 439.5055
5 634.6113 568.304 634.6221 568.2936
6结论
摄像机标定过程中,对圆形标志采用边缘分割,亚像素检测,最小二乘拟合的方法进行中心位置精确定位。实验结果表明:此方法在标定过程中对圆形标志提取精确且稳定,对图像噪声较大的情况也有明显的优越性,实验中对中心定位精度优于0.1个像素,该算法计算后得到的标定数据精度较高,平均误差小于0.02mm,满足视觉检测的精度。