当前位置:首页 期刊杂志

基于双目立体视觉的工件尺寸测量研究

时间:2024-05-18

房家军,郁汉琪,花慧敏

(南京工程学院,江苏 南京 211167)

1 引言

在科学技术不断发展的背景下,很多制造行业的新技术被研发出来,并且在行业发展中起到非常重要的作用。制造工业的发展带动了工件生产数量的增长,在这样的情况下,工厂对工件尺寸测量有了更高的要求。在需要重复性工作的情况下,人工视觉在长时间工作中保持集中状态变得困难,这导致诸如测量效率差,精度低和损坏工作面等问题,这些问题如果不能够及时得到解决,那么就会影响到最终工件生产的质量和使用寿命。如果使用手工测量的方式,不仅需要消耗大量的时间、人力,而且测量精度也无法得到保障。利用双目立体相机能够快速有效的捕捉到测量对象的特征参数,完成非接触式工件尺寸的高效测量,因此得到了大多数制造公司的欢迎,在国内外工件制造业中得到很好的推广和应用。

本文在研究的过程中,主要采用的是Halcon提出的双目视觉测量方法,完成了对工件尺寸的无接触识别、定位和测量,在此基础上搭建转换模型,通过几何方法来达到精准测量的目的。在具体操作落实的过程中,可以利用双目相机来对需要处理的图像进行最初处理,在此过程中可以获得图形的三维坐标,通过这些坐标来进行几何计算,进而实现无接触高效率的工件尺寸测量。

2 双目视觉测量系统工作原理介绍

双目视觉测量系统的工作原理就是要从两个不同位置的空间点观察同一物体,来获得在不同视角下的图像,进而由三角几何方法来获取图像像素间的视差,求得物体的空间信息。

三维空间的基础组成部分是空间点,其三维立体结构先由点组成线,然后由线组成面,最后再由面组成。因此,空间点的坐标测量是双目立体视觉研究的最基本内容[1]。

图1主要反映的是双目视觉测量模型构成情况,在等待测量的目标两侧放置两台不同的摄像机,通过两台摄像机来对相同的目标进行拍摄,这样来完成对目标的识别、定位和测量。首先就是要在空间中随意选择一点,设置为P(X,Y,Z),在此左右侧找到相应的投影坐标为Pl(ul,vl)、Pr(ur,vr)。图中的Ol、Or、f指代的是摄像机焦距,而相机光轴方向则为n。而P和对应的投影坐标联系起来,就能够获取P点的三维空间坐标参数值。

图1 双目立体视觉测量模型构成

在双目立体视觉测量模型中,被测目标会直接影响到摄像机位置的摆放,所以,需要借助世界坐标系来完成摄像机定位。想要实现世界坐标系和摄像机坐标系间的转换,可以把R和T两大矩阵结合起来,其中R是旋转矩阵,而T则是平移矩阵。

在明确两个坐标系之间存在的转换关系之后,就可以对图像、摄像机以及世界三大坐标系间的关系进行确定。并且在此基础上,能够进一步计算得出图像坐标系中P所对应的世界坐标系参数值。而在整个过程中,涉及到的计算公式如下。

=M1M2XM=MXM

(1)

在式(1)中,u与v主要指代的是数字图像中的像素坐标,接着就是要通过坐标系之间的转换关系,把等待测量的XM,YM,ZM三个点通过旋转和平移后,计算得出相机坐标系中的参数值。因为相机成像原理主要是投影成像原理,因此,可以借助相机内部参数来获取图像坐标系。M1主要指代的是相机内部参数矩阵,而M2主要指代的是外参矩阵。

因为在P两侧对应的有两个投影点,分别用M1和M2表示左右摄像机的投影矩阵[2]。则有如下两个公式:

(2)

(3)

其中,(ul,vl,1)和(ur,vr,1)分别表示左右两侧投影点Pl、Pr在投影平面上的齐次坐标。(XM,YM,ZM,1)主要指代的是空间P世界坐标系中所对应的齐次坐标。通过上述公式的整合运算,那么就可以把Zcl和Zcr两项去掉,就可以计算得出相应的线性方程,方程主要对应的3个不同的坐标值,分别是XM,YM,ZM,具体方程为:

(4)

(5)

联立以上两个方程组便可得到待测点P在世界坐标系的坐标(XM,YM,ZM)。 双目视觉测量系统主要过程如图2所示。

3 双目系统标定及立体校正

3.1 摄像机标定介绍

相机标定主要指代的是相机图像自身的像素坐标和空间三维坐标存在的关系,因为需要在测量目标的两侧放置两个不同的摄像机,所以可以利用左右摄像机模型,以此来标定特征点图像坐标,并且计算得出相机内外参数。摄像机内部参数涉及到畸变系数、焦距等,而旋转和平移参数能够反映出相机的外参数。

图2 软件算法流程

在具体进行双目系统标定的过程中,需要使用到标定板,本文在实验中主要采用的标定板的长和宽各为30 mm,平面标定模板的图像阵列是横纵各七位,详情如图3(a)。在具体操作的过程中,需要借助到先进的处理软件Halcon,在此软件中,可以使用gen_caltab()功能来转换为标定描述文件,同时完成两个摄像机初始内参数的设置。接着就是要打开摄像机来获取拍摄目标的位置图片,在此步骤开展的过程中,需要注意确保标定板都能够在拍摄图像范围内。之后就是要通过软件的find_caltab()功能来确定标定板实际所处区域,借助find_marks_and_pose()功能来进一步处理标定板,详情如图3(b)、(c)。通过算子来对获取标定板的具体图像坐标,并且明确标定板和摄像机两者间的位置关系。最后就是要借助binocular_calibration()函数来完成双目标定,进而获取相机内外参数,找到两个摄像机的位置[3]。

3.2 立体校正分析

通过双目标定能够大致确定两个摄像机之间存在的位置关系,并且能够计算得出相机的内参数,完成之后就需要借助软件中的gen_binocular_rectification_map功能来对两个摄像机内外参数进行校正,在校正的过程中,会有相应的校正映射图,通过图形的对比计算来获取校正后的内外参数。最后就是要借助map_image()函数来把收集到的隐射图像转换为几何结构,表1主要反映的是校正前后内外参数的变化情况。

通过立体校正后可以发现,前后两幅图像的主点列坐标是保持一致的,意味着从水平向上看,外极限处于水平状态。通过表1中的参数数据可以得知,校正后右图像的X轴方向有一定的移动,意味着右图像和左图像之间有4.06542 cm的距离差,而其他方向并没有发生旋转和平移。由此可以得知,标定所得到的结果和摄像机实际所摆放位置没有差别,也意味着标定得出的参数值有较高的精确度。

图3 标定板构成

表1 校正前后摄像机内外参数统计

4 图像采集和处理

4.1 图像获取介绍

本文涉及到的测量系统中,选择测量对象的基本特征:工件为金属材料,表面涂有漆且光滑,在光照情况下有少许反光,工件结构为对称结构。

测量方法是实时采集,把摄像机和计算机连接起来,设置好符合要求的参数值。使用图像采集助手(Image Acquisition)检测到相机后,再使用专业性的软件Halcon来进一步的进行处理,得到的采集图像详情为图4(a)。

4.2 图像预处理分析

通过左右两侧的摄像机来采集目标的左右不同方向的图像,但是在具体操作的过程中受到各种不同因素的影响,从而使得相机拍摄的图像质量也受到影响,导致无法精确的把边缘和轮廓区分开来。所以,想要得到精准的处理结果,那么就需要对原始图像进行预处理,这个步骤非常重要,会直接影响到最终的处理结果。

在具体落实图像预处理步骤的过程中,需要把图像校正成为标准几何结构,接着就是要对图像进行灰度化处理,借助软件中的median_image()算子来完成降噪操作,确保图像的边缘细节能够得到有效保留,这对于后续图像特征信息的提取非常有利。下图4(b)主要反映的是图像校正结果。接着就是要对工件等待测量的区域进行识别并确定,利用connection()算子来进行连通域化处理,这对于单个区域操作比较有利[4]。最后调用select_shape()算子进行形状选择,打开特征直方图,由面积、行、列等特征,提取出目标物体的区域,结果如图4(c)所示。

5 特征点提取分析

获取到目标左右拍摄图像后,需要对两个图像特征进行提取,接着就是要利用立体匹配来获取物体的三维信息。需要明确的是,如果特征提取精确度不高,那么就会对最终工件尺寸的测量结果造成不利影响。边缘锐角和轮廓是测量工件尺寸必不可少的信息,如果少了这些重要信息,那么最终测量结果的精确度就会大大降低[5]。

5.1 边缘检测分析

本文在提取边缘轮廓的过程中,主要利用canny算子和亚像素边缘检测方式相结合的方法来进行操作。使用canny算子的优势在于能够对一些不符合实情的伪边缘信息进行剔除,尽可能多的保留真实的边缘特征信息,这对于目标定位非常有利。

图4 预处理后的图像

亚像素是一种物理量,主要存在两个单位像素间,此像素计算量不大,并且能够在一定程度上提高精度,可以通过计算亚像素来完成精确度较高的在线检测工作。首先就是要利用canny算子来获取边缘点位置和轮廓信息,完成粗定位,接着就是要进一步确定边缘点,明确主要的梯度方向,在获取亚像素精度边缘的过程中,可以使用双线性插值来辅助操作。最后,就是要对边缘进行细化处理[6]。canny亚像素边缘检测如图5(a)所示。

5.2 特征点提取

在提取特征点的之前,需要首先找到亚像素的边缘,接着就以亚像素边缘处作为基点,进行等距取点,得到的就是特征点。利用intersection_11()算子获取两直线的相交点,接着就是利用distance_ps()算子来获取距离参数值,主要测量计算的是直线到感兴区域之间的距离。两线相交点在低于预设阈值的情况下,成为特征点;如果不符合要求,那么就进一步寻找,直到满足要求[7]。图5(b)主要反映的是工件特征点获取情况。

(a)canny亚像素边缘检测

(b)获取左图像特征点

图5 特征点获取示意

6 立体匹配分析

所谓的立体匹配就是要在三维空间中找到某个目标物体在不同方位位置的关系。对获取到的图像进行立体校正后,能够基于极限约束原则来降维搜索。因为存在着一定的误差,那么就需要在符合像素要求的候选点中专门性的选择3个候选匹配点。因为空间中点的视差值越小,其深度就越大,因此,需要找到空间点的视差值的最大和最小值,接着就是需要在最大最小区域内进行搜索。d∈[dmin,dmax]可由图像中产生的最大和最小距离计算出dmin和dmax。

视差搜索区域此时的长度表达式为:L=dmax-dmin+1,这种方法很大程度上缩减了搜索范围,大大减少了时间,匹配成功的可能性也有所提高[8]。图6主要反映的是搜索原理示意图。

图6 特征原理示意

首先就是要以左侧图像的特征点为中心,利用gen_rectangle1()算子来设定邻域窗口,尺寸大小是(m,n)。接着就是要借助recduce_domain()算子来对区域进行转化处理,使其转化为特征点模板图像,图7(a)中矩形框就是所谓的模板。接着就需要利用软件,在外极线上来确定匹配点的搜索区域,利用recduce_domain()算子来对这个区域进行转化,使其变成等待搜索区域,这样操作的好处就是能够把原有的搜索范围大大缩小。最后使用find_ncc_model()算子来搜索符合要求的匹配点。当NCC值的相似度大于0.95时,则该点作为匹配点。结果如图7(c)所示。

图7 立体匹配操作流程

7 双目立体测量分析

通过(4)和(5)两个公式可以得知,想要获取空间点的三维坐标数值,就需要确定空间点在左右两个图像中的坐标值,除此之外,还需要了解左右两个摄像机的内外参数。然而这些参数值要在完成相机标定和立体匹配成功后才能得到。最后采用上述方法,由disparity_to_point_3d()算子来得到特征点相应的三维坐标值,图8主要反映的是三维点云图所构成的目标整体轮廓图形[9]。

图8 三维点云

基于Halcon计算工件三维点云的外包围矩形的代码实现如下:

get_domain (X, Domain)

get_region_points (Domain, Rows, Columns)

get_grayval (X, Rows, Columns, GrayvalX)

get_grayval (Y, Rows, Columns, GrayvalY)

get_grayval (Z, Rows, Columns, GrayvalZ)

dev_clear_window ()

gen_object_model_3d_from_points (GrayvalX, GrayvalY, GrayvalZ, ObjectModel3D)

smallest_bounding_box_object_model_3d(ObjectModel3D,'oriented',Pose,Length1, Length2, Length3)

gen_box_object_model_3d (Pose, Length1, Length2, Length3, ObjectModel3D1)

dev_get_window (WindowHandle)

visualize_object_model_3d(WindowHandle,[ObjectModel3D,ObjectModel3D1],[],[],['alpha_1'], [0.5], [], [], [], PoseOut)

利用上述代码找出工件三维点云的外包围矩形,并计算工件三维尺寸。最后就是要对比测量值和实际值,详情对比结果如表2。

表2 工件尺寸测量值和实际值的对比结果统计

通过对比分析工件尺寸测量值和实际值可以得知,两者间的误差基本上都控制在合理范围内,由此可以得知,本文所使用的双目视觉系统有着较好的应用效果,测量误差基本控制在±0.3 mm之内,准确性良好。

8 结论

想要获取更高的工件尺寸测量结果,那么就需要确保测量系统的稳定性、实时性。本文在对工件尺寸进行测量的时候,主要采用的视觉软件Halcon有着非常良好的稳定性,并且测量结果的精确度也较高,能够满足大批量工件尺寸测量的需求。本次设计的系统使得工件生产效率得到一定程度的提升,并且使得劳动力成本得到合理有效的控制。整个系统节能效果非常好,使用非常简单方便,能够大范围地普及应用,体现出很大的市场价值和应用前景。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!