采用双目十字激光的立体视觉检测与三维重建
2018-01-11梁明辉王得伟陈嘉卿何宇鹤喜
梁明辉+王得伟+陈嘉卿+何宇+鹤喜
摘要:本文采用十字激光作为标识,应用图像处理技术和双目测距原理,实现了三维物体表面坐标的视觉检测,并利用测量的坐标点云,采用OpenGL的Delaunay三角法进行了三维重建。该方法的突出优点是它不需要复杂的视觉匹配计算,仅根据左右图像中的十字激光标识而快速确定同名点,从而实现了三维表面的快速检测与重建,是一种成本低效率高的三维物体扫描重建方法。
关键词:激光标识;图像处理;双目测距;三维重建
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2017)11-0069-04
立体视觉是计算机视觉领域中的一个重要研究课题[1],它的开创性工作始于上个世纪的六十年代中期,主要研究重构场景三维几何信息的获取。立体视觉仿照人眼采用双目摄像头,通过将同一空间物理坐标点在不同摄像机画面上的映射点对应起来,进而获得获取到场景中每个位置的深度。一般处理过程如图1所示。
其中难点是左右图像中同名点的匹配,常用的有基于区域特征的和基于全局约束的相似准则[2],但都比较耗时,效率低,一种变通的方法是在物体表面人为的打上标记便于识别,这就是基于激光的结构光测量方法[3],大多采用线状激光扫描,将匹配点缩减到一条直线上,还是要匹配计算,本文采用十字激光标识,利用激光交叉点的唯一性,一次完成匹配点确定,不需要任何匹配计算,效率高。但在激光图像进行预处理时也存在伪交叉的奇异点干扰,要进行坐标点的统计分析,去除奇异点,然后再通过OpenGL对坐标点云数据进行重建。
1 双目立体视觉模型
双目立体视觉统通过采用两台位置相对固定的摄像机,从不同的角度去拍摄同一物体或者环境,通过计算两个摄像机成像画面中的对应点的视差,进而得到物体或者环境的三维信息。双目立体视觉模型如图2所示。
当左右两个摄像机的光轴平行且处于同一水平面的时候,空间目标点P(X,Y,Z)在左右两台摄像机上形成的图像坐标分别为(ul,vl)与(ur,vr),横坐标ul与ur存在明显的位差(即视差)。通过三角形相似,可以得到如下关系:
2 图像的预处理和十字中心的定位
激光投射到物体表面,可以采用自动或手动扫描,对于左右摄像机采集到的图像,需要进行图像的预处理。图像的预处理对于十字激光中心点的检测以及双目测距的准确性都有很大的影响,图像预处理得不好,将直接导致误差点的引入,从而引发三维重建模型的错误。本文对图像的预处理过程包括图像的二值化、图像的闭运算(先膨胀后腐蚀)、图像的细化处理等部分。对于预处理后的图像,还要进行十字中心的定位。这一过程包括图像的线性滤波、图像的轮廓检测等。
2.1 图像的二值化处理
图像的二值化是为了去除图像中大多数干扰部分,只保留十字激光照射物体所留下的十字交叉图像。在本文中采用的是红色十字激光进行定位坐标,因此,在RGB三通道图像中,十字激光照射部分中R通道将会是高亮显示。传统方法中,通过设定某个固定阈值,当R通道中的值大于此阈值时,将相应像素点值置1,反之置0。然而在实际试验中发现,此方法受环境亮度影响较大,不能很好地适应实际环境的变化。本文提出一种改进方法,引入一个比例因子r,将原始图像中的像素点按R通道值大小进行排序,取前r%的像素点值置1,其余置0。实验表明,当r取值0.5时效果最好。原图像和二值化后的图像分别如图3和图4所示。
2.2 图像的闭运算处理
从摄像机上获取到的图像可能会因为激光、环境亮度、二值化算法、物体的反光度等因素,造成二值化后的图像线段呈现锯齿状,有些线段的内部还存在着孔洞。而这些问题,将会影响后续的处理过程。因此,需要对图像进行闭运算处理,即先膨胀后腐蚀。
膨胀,是图像与任意形状的内核进行卷积[4],当内核在图像中移动的时候,图像中的点将会取内核所覆盖区域的最大像素值,这一操作,将会导致图像中高亮的区域扩张;而腐蚀,则与膨胀正好相反,当内核在图像中移动的时候,图像中的点将会取内核所覆盖区域的最小像素值,因此,这将导致图像中高亮的区域收缩。
在对二值化图像膨胀时,能将二值化图像中的孔洞进行填充,以及遇到当图像因为光照等因素导致线段不连续的时候,能将断开的图像重新连接上。但膨胀并不是只对孔洞等位置有影响,对图像成像较好的位置同样会照成影响。因此,在膨胀后,还需要对图像进行腐蚀操作,使得图像整体变回膨胀前的大小。
在本文中,闭运算采用的是尺寸为5*5,值全为1的矩阵。闭运算处理前后的图像分别如图5与图6所示。
2.3 图像的细化处理
图像的细化,又称为骨架提取,它指的是将原本臃肿的像素块简化为单个像素相连接的二值图像,这里采用文献[5]中所提到的细化二值区域的算法[5]。设围绕处理点p1的周围像素点为p2-p9,分布如下:
p9 p2 p3
p8 p1 p4
p7 p6 p5
该算法由两个基本的操作组成:
(1)对于满足下列a、b、c、d四个条件的边界点作标记,待遍历完图像后,进行删除。
(a)2≤N(p1)≤6 (b)S(p1)==1
(c)p2*p4*p6==0 (d)p4*p6*p8==0
其中N(p1)=p2+p3+p4+…+p9,点p1领域中1的个数
S(p1)是按p2,p3,…p9,p2的顺序,0-1转换的个数。
(2)与(1)中的操作基本相同,只是条件(c)、(d)改为:
(c)p2*p4*p8==0 (d)p2*p6*p8==0。
让图像循环做上述的操作(即输出图像作为输入图像),直到不存在可以删除的点,即可以结束循环。细化處理前和细化处理后的图像分别如图7图8所示。endprint
2.4 十字中心的定位
从前面的预处理后的图像可以看出,当十字激光照射的物体为一个平面时,十字中心的交点即为两条直线的交点。从这一点出发,可以很直观地想到利用霍夫直线检测,计算出两条相交直线的方程,进而得到十字中心的坐标。然而,当照射物体的平面变得不规则,比如曲面的时候,此时摄像机获取到的图像中,十字中心点则变成了两条曲线段的交点,若采用多项式曲线拟合,不仅难度较大,而且还面临精度不高等问题。
为此,本文提出一种新型的十字中心定位算法,该算法主要分成两个步骤:第一步,使用特殊设计的滤波算子对预处理后的图像进行线性滤波处理,初步确定十字中心的坐标;第二步,在前一步初步确定的坐标上使用轮廓检测,确定十字中心的准确坐标。以下做详细介绍。
线性滤波可以说是图像处理中最基本的方法,通过设计不同的滤波器矩阵,可以得到很多不同的效果。例如Sobel算子的边缘检测,中值滤波等。而在本文中,为了初步确定十字中心的交点,设计的滤波算子s如图9(a)所示。
图9(a)是一个尺寸为5*5,中心值为-24,其余全为1的滤波算子。使用此算子对图像进行滤波处理,图像中大于预期阈值且小于0像素点的坐标,就是可能存在十字中心的坐标。而此阈值的大小,则是与滤波算子紧密相关。
在观察预处理后的图像可以发现,十字激光在图像中对应的交叉结构,应该是类似于图9(b)结构(即一个节点有4个分支)。但是,考虑到细化后的图像,图像交点部分可能穿在部分变形,如图9(c)的情形。
虽然我们不可能穷尽所有情形,但可以假设,当结构内具有三个或三个以上分支的时候,则判断可能为十字交点。根据上文的滤波算子,可以计算出相应的阈值为s[2][2]+s.size/2*3,即为-24+5/2*3=-18,同时,像素点的值之所以小于0,这是因为滤波算子s的中心设置为1-s.size * s.size,即-24,通过这种设定,使得当像素点为高亮的时候,滤波后的图像相应点为负值。
经过线性滤波后的图像可能存在多个符合条件的坐标点,但是这并不意味着已经找到十字中心的坐标。这些符合条件的坐标点中可能存在一个或不存在十字中心的坐标,需要进一步的处理。将符合条件的坐标点的值按从大到小进行排序,排序的目的在于,坐标点的值越大,说明其周围的分支较多,越有可能是所找的十字中心。按照排序过后的顺序,一一判断是否是十字中心的坐标,直至找到或找不到。判断的依据主要依靠图像的轮廓检测。
根据图像中的十字交点,可以很容易看出,当在某个边长为b的矩形区域中存在4个空白区域的时候,則十字交点的坐标就在这个矩形中。根据上文,线性滤波后的图像中符合条件的坐标点很有可能就是十字中心,因此,以此坐标为中心周围边长为b的矩形区域即是感兴趣区域(ROI,region of interest)。但因为图像细化后,形状会有少许变形,因此本文中使用的是闭运算处理后的图像设置ROI。在此矩形区域内,寻找轮廓,若找不到4个空白区域的轮廓,抛弃该点,并进行下一个可能的坐标点的判断,直到找到一个符合条件的矩形区域,执行下一步操作。
在得到4个空白区域的轮廓点集后,可以得出四个轮廓的相对位置,分别计算对角区域之间的最短距离,取得最短距离的两个点,求出两点的中点,把该点坐标看作十字中心的坐标。
3 实验结果与分析
物体的形状可由三维点云通过delaunay三角算法进行拼接来表示[6]。本文以一个长方形纸箱作为实验目标,利用图像处理库OpenCV和OpenGL编写软件对文中提出的三维重建系统与算法进行验证。使用的物理设备为用三脚架固定的小型双目摄像头,输出帧率为15帧/秒,单摄像头分辨率为640*480,如图10所示。
由人手持十字激光发射器对实验物体从上到下,从左到右进行照射扫描,摄像机采集到的图像经由USB串口传输到上位机,由上位机程序进行分析。由图11可以看到,程序窗口上方显示的是原图像,下方显示的图像为原图经过了二值化处理、闭运算之后的结果。当程序成功检测到十字激光交点时,程序会在检测出坐标的位置作矩形,以方便比较。程序会将检测出的十字中心坐标转换为世界坐标系的三维坐标,并进行记录。在采集到足够数量的三维点云信息后,利用OpenGL进行三维重建,图12和图13显示了三维重建后的结果。
由图片可以看出,激光扫描的实验物体的轮廓已经能够较为准确地获取,并且能够反映纸箱两个侧面与棱缘的细微变化,取得较好的重建效果,精度较高。
4 结语
本文提出一种基于十字激光立体视觉检测的三维重建方案,能够较为准确地采集到目标物体表面的点云并拼接合成以完成三维重建过程。其中,针对图像二值化处理受环境光照影响较大的问题提出了一种按比例进行划分的方法。对于图像十字中心的定位问题提出了一种新的算法,通过线性滤波、轮廓检测等操作,能够很有效率地完成十字中心的检测,保证了匹配精度,获得了较好的重建效果。
参考文献
[1]周星,高志军.立体视觉技术的应用与发展[J].工程图学学报,2010,31(4):50-55.
[2]肖艳青,刘党辉,孙朋.图像立体匹配研究进展[J].测控技术,2009,28(8):1-5.
[3]韩建栋,吕乃光,董明利,等.线结构光传感系统的快速标定方法.光学精密工程,2009,17(5):958-962.
[4]姚敏.数字图像处理[M].机械工业出版社2012.
[5]何斌,马天予,王运坚,等.Visual C++数字图像处理[M].机械工业出版社,2002.
[6]余杰,吕品,郑昌文.Delaunay三角网构建方法比较研究.中国图象图形学报,2010,15(8):1158-1164.
Abstract:In this paper, image processing technology and binocular ranging principle are used to realize the visual detection of 3D object surface coordinates using cross laser marking. The 3D reconstruction of the coordinate point cloud is carried out by OpenGL's Delaunay triangulation. The advantage of this method is quickly to determine the corresponding point in left and right images based only on cross laser marking without complex visual matching calculation, so as to realize the rapid detection and reconstruction of 3D surface, it is a scanning and reconstructing method of 3D object with high efficiency and low cost.
Key Words:laser marking; image processing; binocular ranging; 3D reconstructionendprint