Hole target detection and location of complex workpiece based on binocular vision
-
摘要:
针对金属3D打印件孔洞部位支撑残留后处理问题,提出了一种双目视觉检测定位方法。测量系统基于弧段椭圆识别算法进行工件孔位检测,通过计算待加工孔位在双目模组主相机光心坐标系中的位姿、并将该位姿转换到加工现场机械臂基坐标系,为离线编程和自动加工提供坐标信息。首先标定双目相机并检验硬件系统对标定角点的测量精度;然后对复杂工件的待加工位置椭圆特征进行提取,基于极线校正后图像对左右图椭圆进行同行像素点采集和双目匹配;最终根据多视图原理进行匹配点对的坐标计算,进而输出带有坐标信息的空间圆环。对双目相机模组进行了标定靶球测量验证实验,结果显示尺寸测量误差小于0.20 mm。对实际工件进行了测量定位实验,结果表明,该系统测量圆孔尺寸的最大误差小于0.84%,圆心空间位置误差小于0.50 mm,圆环姿态最大误差小于0.5°。
Abstract:A binocular vision detection and positioning method was proposed to solve the problem of post-processing of hole support residue in metal 3D printing parts. The hole position of the workpiece was detected by the measuring system based on the arc ellipse recognition algorithm. By calculating the pose of the hole position to be machined in the optical center coordinate system of the main camera in binocular module, and converting the pose to the base coordinate system of the robot arm on machining site, the coordinate information was provided for off-line programming and automatic machining. Firstly, the binocular camera was calibrated and the measurement accuracy of the hardware system was checked. Then, the position ellipse features of the complex workpiece to be processed were extracted, and the parallel pixel acquisition and binocular matching were carried out for left and right image ellipses based on the pole-corrected images. Finally, the coordinates of matching point pairs were calculated according to the multi-view principle, and the spatial ring with coordinate information was output. A calibration target ball measurement verification experiment was carried out for binocular camera module. The results show that the measurement error is less than 0.20 mm. The measurement and positioning experiment of the actual workpiece was carried out. The results show that the maximum error of the system is less than 0.84%, the error of the center space is less than 0.50 mm, and the maximum error of the attitude of the ring is less than 0.5°.
-
引言
金属增材制造作为一种先进的制造技术,已经取得了显著的发展和广泛的应用。通过逐层堆积金属材料,可以实现复杂形状和结构的制造,为制造业带来了许多新的可能性。与传统的金属加工方法相比,增材制造生产的零件在孔位装配表面存在支撑残留,针对此类残留的打磨后处理至关重要,是优化增材制造工艺的关键环节。对打印件待加工位置进行精确测量是自动化打磨的前提之一[1]。
机器视觉检测和定位对象的几何特征是机器视觉领域的重要研究课题之一。朱福康等人[2]对3D相机采集的彩色图像进行霍夫变换检测轴承孔,引入基于图像深度信息集的方法。罗哉等人[3]使用线激光扫描仪和工业机械臂进行基准孔检测与定位,采用双向梯度约束算法、基于角度判断的细化算法和基于平面拟合的压缩算法实现了边缘特征点的精细化提取和空间圆参数化。姜春英等人[4]通过基于灰度直方图的全局阈值分割和形心法进行飞机蒙皮铆接孔的粗定位;建立遍历圆并构造能量方程求解铆接孔的精定位位置。张太恒等人[5]提出一种纹理边界引导的圆孔检测方法,使用内嵌圆参数统计机制的随机圆检测算法完成对多个圆孔目标的检测。HO C C等人[6]使用一台相机检测具有不同位置和大小的圆孔的法线矢量,通过计算相机坐标系内两个圆孔的平面法向量并进行交叉积运算,从而计算两个圆孔之间的角度。LI D H等人[7]提出一种基于随机霍夫变换(random Hough transformation, RHT)的圆检测方法,该方法能够准确检测边缘图像,定位弧段位置,检测复杂条件下的圆。CHEN S L等人[8]提出一种结合霍夫变换(Hough transformation, HT)方法的优点和边缘跟随方法的优点的椭圆检测方法,能够检测零散椭圆,计算效率和内存效率较高。CAKIR H I等人[9]提出了一种将基于模型与基于计算相结合的方法,在不影响准确性的情况下加速椭圆检测过程。HASAN S F等人[10]使用累加器阵列大大降低了存储需求和时间复杂度,使用圆的直径、相机镜头的焦距、镜头和胶片之间的距离计算出物体的确切尺寸和与相机位置的距离。
总体而言,机器视觉检测方法的研究现状涵盖了传统图像处理方法、深度学习方法以及多传感器融合等不同的技术途径。传统方法理论基础较为稳定、实现工作相对简单、对设备算力要求不高、可解释性强;深度学习方法可用场景多、扩展性强,但依赖数据集和计算资源;多传感器融合方法可以提高检测的准确性,但也增加了系统的复杂度。在工业现场和学术研究中大量应用的点阵激光、线激光扫描仪等设备精度高、数据处理效率高、方法成熟,但造价高昂,功能较为单一、可扩展性较弱。综合考虑,本文针对特定工程需求,基于传统方法适用于数据量较小的数据分析和处理场景的特点,在双目视觉平台上,改进弧支撑算法[11],使之适应复杂工件弱灰度差边缘的识别。本文方法可实现金属3D打印的复杂工件待加工孔位测量,输出轮廓尺寸和空间位姿信息的孔位圆,通过手-眼坐标变换将该孔位圆的空间位姿统一到机械臂的工作空间中。
1 相机标定与系统误差估计
金属增材制造件的特点是多型号小批次,重复示教冗余工作量较大。基于此,针对该类工件的机械臂磨削系统适合采用离线编程的方式,而其前提条件是确定机械臂相对于工件/工具的位姿和待加工部位的精确尺寸。本文在双目相机体系下,通过对相机-机械臂系统的手眼标定和基于双目视觉的孔位检测,完成了对在机械臂磨削平台下对金属增材制造件后处理的测量和定位工作,实验对象及其主要特征如图1所示。
1.1 双目相机标定
本文提出的视觉测量系统的设计目标是能够为机械臂布置eye to hand系统,无需拆卸工件和刀具即可实现加工工件的快速、准确测量。本文中实验系统包括两台大恒MER2-U3M相机,相机安装状态如图2(a)所示。
双目相机标定是测量过程中的重要环节,获取相机的内部参数和外部参数是准确地将双目图像转化为三维空间中的坐标的前提。其中,内部参数包括相机的焦距和畸变系数等,外部参数则包括相机之间的平移和旋转矩阵。在不同位置和角度下拍摄一组标定板,然后通过图像处理和几何计算的方法,利用这些已知的世界坐标和对应坐标来估计相机的内部和外部参数。标定过程需要充分考虑相机的姿态变化,覆盖不同的角度和距离范围,以获得全面的标定结果。此外,标定过程还需要注意相机的同步性,以确保准确性和可重复性。在不同位置和姿态下,将标定板置于相机视野中,确保标定板的全部角点在图像中能够明显可见。本文实验使用12 W×9 H 10 mm铝合金无反光标定板(安装位置如图2(b)所示),标称精度0.01 mm;将其固定在机械臂末端,通过移动末端,采集20对标定板图像后(如图2(c)所示),使用Matlab的相机标定工具(stereo camera calibrator)进行内参和外参的估计。标定中勾选针孔相机模型,并提供标定板的已知尺寸,自动检测标定板角点,计算出相机参数,如表1所示。
表 1 双目相机系统标定参数Table 1. Calibration parameters of binocular camera system参数 左相机 右相机 焦距 $ (2\text{ }413.39,\; 2\text{ }408.07) $ $ (2\text{ 447}\text{.07},\;2\text{ }448.61) $ 径向畸变 $( - 0.125{\text{ }}7,0.214{\text{ }}6,0.009{\text{ }}1)$ $( - 0.098{\text{ }}2{\text{ }},0.144{\text{ 8}}, - 0.043{\text{ 3}})$ 切向畸变 $(0.003{\text{ 2}},0.000{\text{ 7}})$ $( - 0.001{\text{ 5}},0.000{\text{ 9}})$ 旋转矩阵 $\left[ {\begin{array}{*{20}{r}} {0.999\;7}&{0.021\;5}&{ - 0.013\;7} \\ { - 0.021\;3}&{0.999\;7}&{0.015\;6} \\ {0.014\;1}&{ - 0.015\;3}&{0.999\;8} \end{array}} \right]$ 平移向量 $ \left[-51.535\text{ 9},-0.027\text{ 3},-0.758\text{ 3}\right] $ 1.2 棋盘格标定板角点三维坐标计算结果
本文应用背景下,双目视觉的输出是左相机光心坐标系下的三维坐标。以下对3个坐标分量进行精度分析和验证。
根据双目视觉基本原理[12],有$ Z = \dfrac{{bf}}{d} $、$ X = \dfrac{{Zx}}{f} $、$ Y = \dfrac{{Zy}}{f} $;其中$ b $为双目模组基线长度,$ f $为焦距,$ x、y $为像平面坐标,$ X、Y、Z $为相机坐标系坐标,$ d $为视差。已知硬件参数$ b、f $固定,记空间坐标$ X、Y、Z $的精度为$ {s}_{X}、{s}_{Y}、{s}_{Z} $,像点$ x、y $的精度为$ {s}_{x}、{s}_{y} $ ,视差$ d $的精度为$ {s_d} $。为简化计算,一般假设$ x、y $精度相同,即$ {s_x} = {s_y} = s $;视差精度用式$ {s_d} = \dfrac{{{s_x}}}{{\sqrt 2 }} $估计。将$ Z $对$ d $求偏导,即$ \dfrac{{\partial Z}}{{\partial d}} = - \dfrac{{bf}}{{{d^2}}} = - \dfrac{{{Z^2}}}{{bf}} $,进一步得$Z$方向精度$ {s_Z} = \dfrac{{{Z^2}}}{{bf}}{s_d} = \dfrac{{{Z^2}}}{{\sqrt 2 bf}}s $。对于$X$和$Y$,其自变量分别为$ Z,x $和$ Z,y $,将$ X、Y $分别对其自变量求偏导,进一步推导可得$ {s_X} = \sqrt {1 + {{(\dfrac{X}{{\sqrt 2 b}})}^2}} \dfrac{{Zs}}{f} $,$ {s_Y} = \sqrt {1 + {{(\dfrac{Y}{{\sqrt 2 b}})}^2}} \dfrac{{Zs}}{f} $。
本文实验使用相机的像点精度为$s = 10{\text{ μm}}$ ,焦距$f = 2\;410{\text{ mm}}$,基线长度$ b = 51{\text{ mm}} $;在$ X = Y = 100{\text{ mm }}$基础之上计算并绘制$ Z $和$ X $方向($ X $方向和$ Y $方向等尺度,趋势一致)的精度曲线,如图3(a)所示。曲线交点$ Z $坐标$221.6{\text{ mm}}$,这表明在$ Z $方向上$221.6{\text{ mm}}$处附近,双目相机三维成像效果在个方向上精度均衡,且误差数值较小。基于此,测量验证实验以及实际测量工作,均以此距离为参照。
本文测量验证实验使用$\phi 19.988{\text{ mm}}$哑光标准球,将其置于机械臂末端法兰,如图3(b)所示,控制机械臂将标准球分别摆放在图示位置(中心位置$ Z $距离约$220{\text{ mm}}$,向3个坐标轴的正负方向偏移$50{\text{ mm}}$),在各位置上测量标准球外廓线尺寸,与该标准球直径真值进行比较;由于本文测量方案间接计算获得尺寸值,测量验证阶段的测量值有效数字采用与真值相同的值。每个位置上重复进行3次拍摄和测量,3次结果的平均值记为该位置测量值,实验结果如表2所示。
表 2 标准球测量结果Table 2. Measurement results of criterion sphere位置序号/参数项 测量结果/mm 偏差(绝对值)/mm 0 20.008 0.020 1 20.151 0.162 2 19.869 0.119 3 20.171 0.183 4 20.116 0.128 5 19.943 0.045 6 20.013 0.025 真值 19.988 mm 最大误差 0.183 mm 均方根误差 0.106 mm 测量验证实验结果说明,本文双目系统在设计的工作空间中的尺寸测量误差小于${\text{0}}{\text{.20 mm}}$,打磨系统配合一维气动恒力机构,在初定位后进行恒力打磨;结合加工所用机械臂的整体系统要求误差满足${\text{ < 1 mm}}$,双目系统测量精度满足机械臂打磨系统精度要求。
2 基于弧段的椭圆检测
在双目相机拍摄照片中,经矫正后的圆孔特征依然会因为姿态原因呈现椭圆特征,因此本文进行椭圆检测识别圆孔。本文测量系统的输入数据是由双目相机模组拍摄的图片组,图片组中包含若干图片对,每对图片由左、右相机同时触发快门拍摄获取。
测量基础是提取图像的灰度梯度边缘,预处理工作是对原始图像进行高斯滤波。图像中的噪声通常表现为一系列引起较强视觉干扰的孤立像素点或像素块,概率密度函数服从高斯分布(即正态分布)的一类噪声即为高斯噪声。高斯滤波器是根据高斯函数的形状来选择权值的线性平滑滤波器。理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际操作中,仅需要取均值周围3倍标准差内的值,以外部分直接去掉即可,滤波效果如图4所示。
为剔除图片中的无关特征,利用Open CV库中的Grub Cut算法[13],将原始图像进行前景后景分离,只保留工件部分的像素灰度值,效果如图5所示。
2.1 弧支撑LS
本文利用弧支撑线段结构LS(arc-support line segment)进行椭圆检测。弧支撑组由具有相似几何性质的连续弧支撑LS进行连接形成。一般情况下,LS主要来源于两种特征区域,如图6所示。其中,一类LS源自于支撑区域的特征,支撑区域内的点水平线夹角基本一致,且整体位于一条直线上;另一类LS来源于弧形特征区域,将从弧支撑区域近似得到的LS称为“弧支撑线段结构LS”。图6(a)表示通过将图片局部的梯度方向顺时针旋转,获得水平线角度;图6(c)是由图6(b)的灰度图像生成的直线型和弧支撑结构LS。弧支撑LS是在线性线段检测器(line segment detection, LS)的基础上构建的,其效率和精度能力较优。在弧支撑LS的帮助下,可以在保持弧线几何的情况下剔除直线LS。
弧支撑LS主要有两个特性:
1) 弧形支撑方向:弧支撑LS由于来源于弧段区域,其具有凸性,将椭圆弧的椭圆中心方向定义为弧支撑方向。图7(a)局部灰度区域整体梯度方向与弧支撑方向相同,对应的水平线3个主角逆时针变化;图7(b)为图7(a)的反例。
记支撑区域外接矩形的顶点为$A$和$B$,支撑区域形状质心处于点$C$,则可以定义该支撑区域的主角$\angle {\boldsymbol{AB}} $为
$$ \angle {\boldsymbol{AB}} = \arctan \left(\frac{{\displaystyle\sum\nolimits_{{p_i} \in {R_{AB}}} {\sin ({{{\mathrm{alpha}}_l}}({p_i}{\text{)}})} }}{{\displaystyle\sum\nolimits_{{p_i} \in {R_{AB}}} {\cos({{{\mathrm{alpha}}_l}}({p_i}{\text{)}})} }}\right) $$ (1) 根据式(1),$\angle {\boldsymbol{AC}} $和$\angle {\boldsymbol{CB}} $这两个子区域的主角也可以进一步获得。如果在$\{ \angle {{\boldsymbol{A}}{\boldsymbol{C}}} ,\angle {{\boldsymbol{AB}}} \} $和$\{ \angle {{\boldsymbol{AB}}} ,\angle {{\boldsymbol{CB}}} \} $上至少有一个角度间隔${T_{ai}}$,且在$\angle {{\boldsymbol{AC}}} $、$\angle {{\boldsymbol{AB}}} $和$\angle {{\boldsymbol{CB}}} $在逆时针(或顺时针)方向上变化,则弧形支撑的方向可以通过逆时针(或顺时针)旋转$\angle {{\boldsymbol{AB}}} $按$90^\circ $设置。
2) 弧支撑线段的极性:在引入弧支撑线段的椭圆检测灰度图像中,亮度变化的趋势可以有局部梯度来表征。椭圆形弧的整体梯度方向与弧支撑方向之间的关系存在两种情况,这两种情况可以定义一个弧支撑LS的极性,即${P_L}$:如果梯度方向与弧支撑方向相同,则${P_L} = + 1$,否则${P_L} = - 1$。在实际应用中,可以根据主角$\angle {{\boldsymbol{AC}}} $、$\angle {{\boldsymbol{AB}}} $和$\angle {{\boldsymbol{CB}}} $的方向给出弧支撑LS的极性,如图7(a)和图7(b)所示。
2.2 椭圆拟合
拟合的质量直接决定椭圆检测结果的精度。本文使用基于最小二乘的椭圆拟合方法,该方法着眼于将点与椭圆之间的残差控制到最小。设集合${\varGamma _{\text{1}}}{\text{ = \{ }}{p_1},{p_2},...,{p_n}{\text{\} }}$有$n$个数据点,其中$ {p_i} = \{ {x_i},{y_i}\} $。第一步,计算${\varGamma _{\text{1}}}$的散布矩阵${\boldsymbol{S}} = {{\boldsymbol{D}}^{\mathrm{T}}}{\boldsymbol{D}}$,记${\boldsymbol{D}}$为
$$ {\boldsymbol{D}} = {\left[ {\begin{array}{*{20}{c}} {x_1^2}&{{x_1}{y_1}}&{y_1^2}&{{x_1}}&{{y_1}}&1 \\ {x_2^2}&{{x_2}{y_2}}&{y_2^2}&{{x_2}}&{{y_2}}&1 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ {x_n^2}&{{x_n}{y_n}}&{y_n^2}&{{x_n}}&{{y_n}}&1 \end{array}} \right]_{n\times 6}} $$ (2) 继续求解广义特征系统${{\boldsymbol{S}}^{ - 1}}{\boldsymbol{C}}$,其中${\boldsymbol{C}}$为常数约束矩阵:
$$ {\boldsymbol{C}} = {\left[ {\begin{array}{*{20}{c}} 0&0&1& \cdots &0 \\ 0&2&0&{}&{} \\ { - 1}&0&0&{}& \vdots \\ \vdots &{}&{}& \ddots &{} \\ 0&{}& \cdots &{}&0 \end{array}} \right]_{6\times 6}} $$ (3) 期望的拟合椭圆${\varGamma _{\text{1}}}$与计算得到的正特征值特征矢量相对应。
在具体的椭圆特征检测任务中,为了获得最契合的拟合对象,一般情况下须进行数量巨大的点集组合拟合测试。这些点集用${\varGamma _{\text{1}}}$,${\varGamma _2}$,…,${\varGamma _k}$表示。记${\varGamma _i}$的设计矩阵和散布矩阵分别为${\boldsymbol{D}}(i)$和${\boldsymbol{S}}(i)$。则$k$个点集${\varGamma _{\text{1}}}$,${\varGamma _2}$,…,${\varGamma _k}$的组合设计矩阵${{\boldsymbol{D}}_c}$可写为
$$ {{\boldsymbol{D}}_c} = \left[ {\begin{array}{*{20}{c}} {{\boldsymbol{D}}({\varGamma _{\text{1}}})} \\ {{\boldsymbol{D}}({\varGamma _2})} \\ \vdots \\ {{\boldsymbol{D}}({\varGamma _k})} \end{array}} \right] $$ (4) 相应的散布矩阵$ {{\boldsymbol{S}}_c} $为
$$ \begin{split} {{\boldsymbol{S}}_c} = &{\boldsymbol{D}}_c^{\mathrm{T}}{{\boldsymbol{D}}_c} = {\boldsymbol{D}}{({\varGamma _{\text{1}}})^{\mathrm{T}}}{\boldsymbol{D}}({\varGamma _{\text{1}}}) + \cdots + {\boldsymbol{D}}{({\varGamma _k})^{\mathrm{T}}}{\boldsymbol{D}}({\varGamma _k}) =\\ &{\boldsymbol{S}}({\varGamma _{\text{1}}}) + {\boldsymbol{S}}({\varGamma _2}) + \cdots + {\boldsymbol{S}}({\varGamma _k}) \end{split} $$ (5) 式(5)表明任意组合点集的散布矩阵等于各点集散布矩阵的总和,这说明只需计算一次各组散布矩阵的可行性。上述叠加特性可以减少将一个或多个集合拟合为椭圆的计算时间。
2.3 椭圆检测
基于弧支撑LS的椭圆检测整体流程包括:1) 弧支撑群组建立;2) 候选椭圆集生成;3) 候选集验证筛选。
弧支撑组采集归属于同一曲线的连续弧支撑,这种方式可以减少这个过程中直线LS的可能造成的干扰。一般情况下,一条椭圆曲线可能由多个弧支撑LS组成,因此可以将识别出的弧支撑LS链接起来,形成弧支撑群组。被链接的任意两个连续的弧支撑LS应满足连续性和凸性条件。一对弧支撑的连续性条件指,其中一段弧支撑LS的头部与另一个弧支撑LS的尾部之间的距离足够小,凸性条件指,所连接的LS应同向变化(顺时针或逆时针)。一个支撑像素的水平线角度,应该与支撑区域的主角度在容差$\alpha $内,因此,连续两个弧支撑LS之间的角度偏差应该小于$2\alpha $。
为了避免在噪声存在的情况下出现错误的LS链接,统计当前LS(第$k$个LS的支撑点个数表示为$\Sigma p_i^{{L_k}}$)终端附近的局部统计区域内每一个LS的支撑点数量,并计算主因子直方图,选择支持数最大的LS与当前LS进行链接,如图8所示。经过迭代,将结果中具有与$\{ \theta _1^i,\theta _2^i, \cdots ,\theta _{n - 1}^i\} $相似几何性质的相连弧支撑LS称为“弧支撑LS结构群”。
每个弧支撑组中,均包含若干个弧支撑LS,弧支撑组的本质是曲线的多边形近似。若第$i$个弧支撑组包含$n$个弧支撑LS,则每两个连续的弧支撑LS存在$1$个角度,共计$n - 1$个。在第$i$组的角度间隔序列中,第$i$组的跨越角为$\Sigma _{j = 1}^{n - 1}\theta _j^i$。一个弧支撑群组的张成角越大,那么这个群组对应一个椭圆的概率越大。因此,有${S^i} \propto (\Sigma _{j = 1}^{n - 1}\theta _j^i)/360^\circ $,其中${S^i}$为第$i$组的显著性评价。方便起见,将比例系数设为$1$,则${S^i}$的取值范围为$[0,1]$。
需要考虑如下两者特点来计算初始集:弧支撑构件组在拟合过程中,可能仅包含一条单独的弧支撑LS,也可能包含一条曲线上的所有弧支撑LS。较有效的途径是根据阈值${T_{{\text{ss}}}}$将弧支撑LS组单独拟合为一个椭圆,使其更加显著;例如,能够优先挑选出跨越角接近$360^\circ $的椭圆。还应该在全局范围内搜索所有有效的弧支撑组对,重建图像上的潜在椭圆。
因为两组来自不同的椭圆或曲线的概率很高,大多数弧支撑组并不有助于建立有效的弧组对。如图9所示,弧段组$\{ {g_1},{g_3}\} $和$\{ {g_1},{g_4}\} $为错误匹配,因为${g_3}$组不在${g_1}$的作用区域之内,尽管其与${g_1}$中每个弧支撑LS的弧支撑方向一致。因此,只有同处于相互有效的区域,两个弧支撑群组才可以进行匹配。在图9中,记群体${g_i}$的起点为$ \boldsymbol{P}_s^{g_i} $,终点为$ \boldsymbol{P}_e^{g_i} $;起始圆弧形支架构件LS为$ L_s^{{g_i}} $,结束圆弧形支架构件LS为$ L_e^{{g_i}} $;$ \boldsymbol{P}_s^{g_i} $和$ \boldsymbol{P}_e^{g_i} $的中点为$ \boldsymbol{M}_i $,则有:
$$ \left\{\begin{gathered}\boldsymbol{ARC}_{L_s^{g_i}}\times\boldsymbol{P}_s^{g_i}\boldsymbol{P}_e^{g_j} > \rho_d \\ \boldsymbol{ARC}_{L_e^{g_i}}\times\boldsymbol{P}_e^{g_i}\boldsymbol{P}_s^{g_j} > \rho_d \\ (-Pol)\times Dir_{\bot}(\boldsymbol{P}_s^{g_i}\boldsymbol{P_e^{g_j}})\times\boldsymbol{M_i}\boldsymbol{M}_j > \rho_d \\ \end{gathered}\right. $$ (6) 式中:$ \boldsymbol{\boldsymbol{ARC}}_L $为$L$的归一化圆弧形支架构件方向矢量;$ Dir_{\bot}(\boldsymbol{v}) $表示$ \boldsymbol{v} $顺时针旋转$ 90^\circ $得到的归一化矢量;当弧段组$\{ {g_1},{g_3}\} $的极性为正时,$Pol$=$ + 1$,否则为$ - 1$;$ {\rho _d} $为距离阈值;$(i,j)$取值$(1,2)$、$(2,1)$。
对于通过极性约束和区域限制验证的对$\{ {g_1},{g_2}\} $,立即对该弧段组中圆弧形支架构件LSs的端点进行椭圆拟合。假设拟合的椭圆为$e$,边缘点$P$到$e$的法向量为$\nabla e(P)$(其方向指向椭圆的外部,若同时满足距离容差和法向容差$\alpha $,则定义边缘点为到$e$的支撑内点,即${P_i}$到$e$的Rosin距离应该小于$e$,且$\partial e({P_i})$与$ -Pol_e\times Grad(P_i) $的绝对角度差小于$\alpha $,其中$Po{l_e}$为$e$的极性,$Grad({P_i})$为${P_i}$的图像梯度)。从几何的角度,可以通过边缘像素的数量来近似弧长。因此,成对$\{ {g_1},{g_2}\} $中每个圆弧形支架构件LS构成的支撑内点数应大于对应LS的长度,即:
$$ \# \{ {p_i}:{p_i} \in SI({L_j})\} > L_{({L_j})} $$ (7) 式中:$SI({L_j})$表示${L_j}$对应的圆弧形支架构件,$j = 1, 2, \cdots ,{N_{g1}} + {N_{g2}}$的支持内点集;${N_{g1}}$和${N_{g2}}$分别为${g_1}$和${g_2}$中圆弧形支架构件LS的个数。在该步骤中,LS的长度是对应支持内点的自适应阈值。如果一个椭圆$e$满足自适应内点准则,将拟合支持内点来产生一个初始椭圆。最终将所有有效的圆弧形支架构件组对转化为初始椭圆集。整体流程如算法1。
2.4 椭圆候选验证
上节得到的候选集基本包含了图像中存在的所有潜在的椭圆。本文检测目的对本节工作的要求是识别出最精确的椭圆特征,因而需要进行候选验证。验证方法主要包括基于内点数的良度指标计算的和基于几何属性的再拟合。
研究表明,椭圆上的支持内点数与椭圆的周长B正相关。椭圆周长尚未有基于初等函数的精确计算公式,本文在实际中计算中,对椭圆周长的估计偏差容忍度较高,更多考虑范围内的内点数量,因此,计算过程的椭圆周长可以用${ B} \approx {\text{π }}[{{3(a + b)} \mathord{\left/ {\vphantom {{3(a + b)} 2}} \right. } 2} - \sqrt {ab} ]$来近似,其中$a$和$b$分别是半长轴和半短轴。支撑内点的椭圆连通分支的角度覆盖度$C$越大,椭圆候选的表现越显著。基于这些事实,对支持内点的数量和角度覆盖率进行评估,其支撑内点应满足距离容差${e \mathord{\left/ {\vphantom {e 2}} \right. } 2}$和法向容差$\alpha $。因此,描述椭圆质量的“良度”可以表述为
$$ G(e) = \sqrt {\frac{{\# \{ {p_i}:{p_i} \in {{SI}}(e)\} }}{{ B}} \times \frac{C}{{360^\circ }}} $$ (8) 式中$ {{SI}}(e) $表示椭圆$e$的支撑内点。
本文检测椭圆实验的输入图像如图10(a)所示;图10(b)~图10(d)为实验中对应前文所述的初始检测结果、点集候选验证结果和椭圆筛选结果。
算法1 弧支持组形成过程伪代码 输入:弧支撑线段集${T_l}$;生成线段的圆弧支撑区域${T_r}$;包容角度$\alpha $;线段使用状态参数$S$ 1: 初始化:$G = \emptyset $; 2: 循环: 3: || 从${T_l}$中选择${l_i}$,选择条件:$S({l_i}) \ne used$;设定:${g_{head}} = \emptyset $,${g_{tail}} = \emptyset $,${l_i} \Rightarrow $线段${l_s}$的晶核; 4: || 循环: 5: || | 在${l_s}$的头端搜索连续的弧支撑线段; 6: || | 从搜索结果中排除:$S = used$,到${l_s}$的角度偏差超过$2\alpha $; 7: || | 计算${l_s}$头端的统计面积,使用${T_r}$获得票数最高的线段${l_k}$; 8: || | 刷新:${g_{head}} = {g_{head}} \cup {L_k}$,$S({l_k}) = used$,${l_s} = {l_k}$; 9: || 直到:${l_s} = \emptyset $; 10: || 设定:${l_i} \Rightarrow $线段${l_s}$的生长核;在${l_s}$的尾部重复上述搜索过程即可得到${g_{tail}}$; 11: || ${g_{head}} = \{ {L_{h1}}, \cdots ,{L_{hn}}\} $,${g_{tail}} = \{ {L_{t1}}, \cdots ,{L_{tn}}\} $$ \Rightarrow g = \{ {L_{tn}}, \cdots ,{L_{t1}},{L_i},{L_{h1}}, \cdots ,{L_{hn}}\} $ 12: || 刷新:$G = G \cup g$,$S({l_i}) = used$; 13: 直到:遍历所有弧支撑线段; 14: 返回:$G$; 输出:弧支撑群$G$ 3 左右图像校正与采样匹配
通过计算相机之间的外参和内参,建立两个相机之间的极线几何关系,然后对图像进行极线校正[14]。经过校正,左极线上的所有像素和右极线上的像素满足同一约束,即一个极平面可以在两个视图上找到一对极线。所有极线对可以涵盖图像上的所有像素点,实现将平面点稠密匹配转化为同行像素查找匹配点。通过对两个相机进行姿态变换,从而重新定义像平面,使极线对共线且平行于像平面的水平轴,同时建立了新的立体像对。校正完成后,同一匹配点对,位于两个视图的同一行中。将左右视图检测到的目标椭圆在列方向上均匀画出水平线,对应水平线的交点即为左右视图中椭圆轮廓一一匹配的采样点,效果如图11所示。
4 测量结果计算与分析
4.1 点集的坐标计算与圆拟合
特征点对所描述的物理点的三维坐标可以通过多视图几何中的三角关系获得。对于空间物体表面任意一点,如果在左右两个摄像机同时观察点$P$,并能确定在左摄像机图像上的点${P_1}$与右摄像机图像上的点${P_r}$是空间同一点$P$的图像点,则可根据三角化恢复3D点,即计算出空间点的三维坐标:已知两个视图下匹配点的图像坐标${P_1}$和${P_2}$,两个相机的相对位姿$T$,相机内参矩阵$K$,求对应的三维点坐标$P$;本文使用SVD方法完成计算。所有特征点对由像素坐标系到主相机坐标系的三维坐标值组成测量点集。整体流程如图12所示。
根据文献[15]的方法,对输出的点集进行圆拟合,结果如图13(a)所示。
拟合结果中,拟合圆半径$r = 19.99{\text{ mm}}$,圆心坐标为$[22.56, - 33.32,216.68]$。根据游标卡尺测量结果,该孔位真实尺寸为${\text{20}}{\text{.16 mm}}$,尺寸测量相对误差为$0.84\% $,绝对误差为$0.17{\text{ mm}}$。椭圆检测结果输出的圆心坐标为$[22.60, - 33.25,216.62]$,测量值与拟合值圆心距离偏差$0.08{\text{ mm }}$。常见的双目匹配法和圆特征检测法对实验对象的效果对比如图14所示。
4.2 孔位定位与误差分析
为了验证文中方法的可靠性,本文将待测工件安置于机械臂末端夹具,用固定机位的双目相机通过控制机械臂末端运动的方式进行多位姿测量实验。将机械臂第6轴分别顺、逆时针旋转$30^\circ $,然后分别向世界坐标系的上、下、左、右4个方向平移$20.00{\text{ mm}}$;从上述7个视角拍摄待测工件;将中间位置的正视工件的位姿测量结果作为初值,通过对比:
1) 由机器人末端运动的位姿变换矩阵得到待检测孔位在机械臂基坐标系下的位姿,经双目相机与机器人的手眼标定矩阵换算得到相机坐标系下的孔位理论计算位姿(共6组),如图13(b)所示。
本文系统中,参与手眼标定的各坐标系如图15所示;标定算法使用Tsai–Lenz,标定结果评价表明,本文实验的变换矩阵作用下,平移变换平均误差$2.20{\text{ mm}}$,旋转变换平均误差$0.005{\text{ 1 rad}}$。平移误差较大,本文实验过程中,引入末端力传感器接触校正,消除平移变换平均误差中的有复现规律的偏差;校正后,平移变换平均误差小于$0.70{\text{ mm}}$。
2) 文中方法计算出的直接测量位姿。
通过对上述两者比较分析,得到测量值与理论计算值的偏差,其中孔位在相机坐标系下的位姿初值如表3所示。
表 3 工件位姿初值Table 3. Initial values of workpiece pose圆心坐标/mm 法向量夹角/($^\circ $) X轴 Y轴 Z轴 $[22.60, - 33.25,216.62]$ $88.13$ $88.50$ $2.40$ 工件位姿变换后的全部7个空间点集及其拟合圆(由机器人运动推导的理论位姿)如图13(b)所示,直接测量的全部7个空间点集及其拟合圆如图13(c)所示。
由误差计算结果绘制圆心坐标与法向量偏移误差折线图如图16所示。
由图16可知,在不同位姿下的6次测试中,实验组与理论组圆心空间距离的平均值为${\text{0}}{\text{.16 mm}}$,最大误差为$0.47{\text{ mm}}$;实验组与理论组圆的法向量与坐标系$x$、$y$、${\textit{z}}$轴夹角的平均误差为$0.29^\circ $,$0.34^\circ $,$0.18^\circ $,最大误差为$0.50^\circ $。综上所述,文中所用的位姿检测方法具有较高的精确度与可信度,实现了对圆孔的高精度定位。
5 结论
本文研究了双目视觉系统下基于弧支撑椭圆检测算法的复杂零件孔位测量及定位的方法及流程,建立了一套适用于机械臂加工平台下对金属增材制造件进行打磨等处理任务的测量系统;该系统采用特征检测、采样匹配的两步骤,有效提高双目相机在工程领域的测量精度,显著降低高精度视觉测量任务的工程成本。实验表明,本文搭建的测量系统能够实现尺寸绝对误差小于${\text{0}}{\text{.50 mm}}$,尺寸相对误差小于$1\% $的孔位尺寸测量;同时该系统输出的孔位位姿,其圆心定位误差小于${\text{0}}{\text{.50 mm}}$,姿态偏差不超过$0.50^\circ $。以上结果证实,本文方法及测量系统能够为机械臂自主规划路径加工提供精确的尺寸、坐标和位姿信息。然而,受限于双目相机的标定精度、标定过程的算法复杂程度等,本文建立的系统在应用中仍需补充校正工作。同时,本文系统服务的工作对象几何特征相对单一和简单,后续可以结合其他几何特征的检测、点云采集等工作,提高该系统的应用价值。
-
表 1 双目相机系统标定参数
Table 1 Calibration parameters of binocular camera system
参数 左相机 右相机 焦距 $ (2\text{ }413.39,\; 2\text{ }408.07) $ $ (2\text{ 447}\text{.07},\;2\text{ }448.61) $ 径向畸变 $( - 0.125{\text{ }}7,0.214{\text{ }}6,0.009{\text{ }}1)$ $( - 0.098{\text{ }}2{\text{ }},0.144{\text{ 8}}, - 0.043{\text{ 3}})$ 切向畸变 $(0.003{\text{ 2}},0.000{\text{ 7}})$ $( - 0.001{\text{ 5}},0.000{\text{ 9}})$ 旋转矩阵 $\left[ {\begin{array}{*{20}{r}} {0.999\;7}&{0.021\;5}&{ - 0.013\;7} \\ { - 0.021\;3}&{0.999\;7}&{0.015\;6} \\ {0.014\;1}&{ - 0.015\;3}&{0.999\;8} \end{array}} \right]$ 平移向量 $ \left[-51.535\text{ 9},-0.027\text{ 3},-0.758\text{ 3}\right] $ 表 2 标准球测量结果
Table 2 Measurement results of criterion sphere
位置序号/参数项 测量结果/mm 偏差(绝对值)/mm 0 20.008 0.020 1 20.151 0.162 2 19.869 0.119 3 20.171 0.183 4 20.116 0.128 5 19.943 0.045 6 20.013 0.025 真值 19.988 mm 最大误差 0.183 mm 均方根误差 0.106 mm 算法1 弧支持组形成过程伪代码 输入:弧支撑线段集${T_l}$;生成线段的圆弧支撑区域${T_r}$;包容角度$\alpha $;线段使用状态参数$S$ 1: 初始化:$G = \emptyset $; 2: 循环: 3: || 从${T_l}$中选择${l_i}$,选择条件:$S({l_i}) \ne used$;设定:${g_{head}} = \emptyset $,${g_{tail}} = \emptyset $,${l_i} \Rightarrow $线段${l_s}$的晶核; 4: || 循环: 5: || | 在${l_s}$的头端搜索连续的弧支撑线段; 6: || | 从搜索结果中排除:$S = used$,到${l_s}$的角度偏差超过$2\alpha $; 7: || | 计算${l_s}$头端的统计面积,使用${T_r}$获得票数最高的线段${l_k}$; 8: || | 刷新:${g_{head}} = {g_{head}} \cup {L_k}$,$S({l_k}) = used$,${l_s} = {l_k}$; 9: || 直到:${l_s} = \emptyset $; 10: || 设定:${l_i} \Rightarrow $线段${l_s}$的生长核;在${l_s}$的尾部重复上述搜索过程即可得到${g_{tail}}$; 11: || ${g_{head}} = \{ {L_{h1}}, \cdots ,{L_{hn}}\} $,${g_{tail}} = \{ {L_{t1}}, \cdots ,{L_{tn}}\} $$ \Rightarrow g = \{ {L_{tn}}, \cdots ,{L_{t1}},{L_i},{L_{h1}}, \cdots ,{L_{hn}}\} $ 12: || 刷新:$G = G \cup g$,$S({l_i}) = used$; 13: 直到:遍历所有弧支撑线段; 14: 返回:$G$; 输出:弧支撑群$G$ 表 3 工件位姿初值
Table 3 Initial values of workpiece pose
圆心坐标/mm 法向量夹角/($^\circ $) X轴 Y轴 Z轴 $[22.60, - 33.25,216.62]$ $88.13$ $88.50$ $2.40$ -
[1] 杨鑫, 王婉琳, 范亚卓, 等. 3D打印金属零件后处理研究现状[J]. 功能材料, 2020, 51(5): 5043-5052 YANG Xin, WANG Wanlin, FAN Yazhuo, et al. Research status of post-processing of 3D printing metal parts[J]. Journal of Functional Materials, 2020, 51(5): 5043-5052.
[2] 朱福康, 刘毅, 孟凡杰, 等. 基于图像深度信息集的Hough圆检测方法[J]. 组合机床与自动化加工技术, 2018(5): 85-88. ZHU Fukang, LIU Yi, MENG Fanjie, et al. Hough circles detection based on depth information set of image[J]. Modular Machine Tool & Automatic Manufacturing Technique, 2018(5): 85-88.
[3] 罗哉, 赵洪楠, 江文松, 等. 基于线激光扫描的基准孔检测与定位方法[J]. 仪器仪表学报, 2021, 42(12): 184-190. LUO Zai, ZHAO Hongnan, JIANG Wensong, et al. A detection and positioning method for the base hole based on line laser scanning[J]. Chinese Journal of Scientific Instrument, 2021, 42(12): 184-190.
[4] 姜春英, 闫子龙, 牛祥鑫, 等. 基于局部主动轮廓模型的飞机壁板铆接孔定位方法研究[J]. 航空制造技术, 2019, 62(10): 58-63. JIANG Chunying, YAN Zilong, NIU Xiangxin, et al. Research on positioning method of aircraft panel riveting hole based on local active contour model[J]. Aeronautical Manufacturing Technology, 2019, 62(10): 58-63.
[5] 张太恒, 梅标, 乔磊, 等. 纹理边界引导的复合材料圆孔检测方法[J]. 浙江大学学报 (工学版), 2020, 54(12): 2294-2300. ZHANG Taiheng, MEI Biao, QIAO Lei, et al. Detection method for composite hole guided by texture boundary[J]. Journal of Zhejiang University (Engineering Science), 2020, 54(12): 2294-2300.
[6] HO C C, ZHANG R H. Machine vision-based relative-angle measurement system between circular holes[J]. Measurement and Control, 2021, 54(5/6): 647-657.
[7] LI D H, NAN F, XUE T, et al. Circle detection of short arc based on randomized Hough transform[C]//2017 IEEE International Conference on Mechatronics and Automation (ICMA). Takamatsu: IEEE, 2017: 258-263.
[8] CHEN S L, XIA R B, ZHAO J B, et al. A hybrid method for ellipse detection in industrial images[J]. Pattern Recognition, 2017, 68: 82-98. doi: 10.1016/j.patcog.2017.03.007
[9] CAKIR H I, BENLIGIRAY B, TOPAL C. Combining feature-based and model-based approaches for robust ellipse detection[C]//2016 24th European Signal Processing Conference (EUSIPCO). Budapest: IEEE, 2016: 2430-2434.
[10] HASAN S F, SADAT R M N, RAHMAN M A, et al. A precise and low complexity distance and size measurement of circular objects from camera position using still images[C]//2006 International Conference on Electrical and Computer Engineering. Dhaka: IEEE, 2006: 439-442.
[11] LU C S, XIA S Y, SHAO M, et al. Arc-support line segments revisited: an efficient high-quality ellipse detection[J]. IEEE Transactions on Image Processing, 2020, 29: 768-781. doi: 10.1109/TIP.2019.2934352
[12] MEI X, SUN X, ZHOU M C, et al. On building an accurate stereo matching system on graphics hardware[C]//2011 IEEE International Conference on Computer Vision Workshops (ICCV Workshops). Barcelona: IEEE, 2011: 467-474.
[13] ROTHER C, KOLMOGOROV V, BLAKE A. GrabCut: interactive foreground extraction using iterated graph cuts[M]//Seminal graphics papers: pushing the boundaries: Volume 2. New York: ACM, 2023: 593-598.
[14] 理查德·哈特利, 安德鲁·西塞曼. 计算机视觉中的多视图几何[M]. 韦穗, 杨尚骏, 章权兵, 等, 译. 2版. 合肥: 机械工业出版社, 2019: 211-214. RICHARD H, ANDREW Z. Multiple view geometry in computer vision[M]. WEI S, YANG S J, ZHANG Q B, et al, Transl. 2nd ed. Hefei: Machinery Industry Press, 2019: 211-214.
[15] 李英硕, 杨帆, 袁兆奎. 空间圆形拟合检测新方法[J]. 测绘科学, 2013, 38(6): 147-148. LI Yingshuo, YANG Fan, YUAN Zhaokui. A detection method for 3D circle fitting[J]. Science of Surveying and Mapping, 2013, 38(6): 147-148.