APP下载

改进格雷码结构光双目视觉工件3D测量

2019-03-19

计算机测量与控制 2019年3期
关键词:视差双目投影仪

(西南科技大学 信息工程学院,四川 绵阳 621000)

0 引言

随着我国智能制造2025计划的制定和实施,以机器人为平台的喷涂、焊接、打磨等自动加工方法逐渐得到应用和普及。这种新型制造方式通常需要获取工件的3D几何形状信息,以实现路径自动规划和作业。传统三坐标测量仪和位移传感器等3D测量方法存在速度慢和自动化程度低等缺点,无法满足中小企业小批量、柔性、快速切换制造需求。

光学测量技术作为一种非接触式检测方法,具有安全系数高、测量速度快等优点,因而在工业制造领域得到广泛应用[1]。目前基于光电传感器与图像处理技术的光学3D测量方法,主要分为两类,一类是无附加外部激励的被动式测量方法,如双(多)目视觉;另一类是添加特定光源或激励信号的主动式测量方法,如飞行时间测距法(Time of Flight,ToF)[2]、激光三角法[3]、结构光法、相位法等。其中,双目视觉方法(如ZED立体相机)对环境光干扰等因素要求较低,具有硬件配置简单、标定方便等优点,但对无纹理或弱纹理特征的物体测量重建效果不佳。ToF扫描仪以Kinect2为代表,是基于光速和往返时间确定距离,有成像速度快、可避免阴影遮挡等优点,但其测量精度相对较低。单目线结构光的激光三角测距法根据激光照射物体表面成像时会出现在不同位置,基于三角测量而获取物体的深度信息。它在测量时需要对相机投影仪的位姿进行标定,一旦相机和投影仪的相对位置改变则需要重复标定,过程繁琐[4-5]。

针对传统方法的不足,本文结合被动式双目视觉和主动式结构光成像的优点,选择数字光处理(DLP)投影仪和双目视觉相结合的新型成像方式,充分利用结构光精度高和双目视觉快速、简洁的特点,在结构光投影编码、立体匹配和视差图像滤波方法等方面进行改进,形成一套操作简单便捷的高精度工件3D测量系统。

1 双目结构光系统测量原理

本文采用的双目结构光视觉系统框图如图1所示:投影仪位于中间用于投射光条纹,一般选择基于TI公司DLP技术的LED机型;两侧相机配置普通高清镜头,符合小孔成像模型。相机标定采用Matlab工具箱自带的标定工具[6],标定过程主要借助已知几何尺寸棋盘格参考点识别来实现相机内部和外部参数计算。相机内参数主要实现图像像素和物理空间坐标间的变换,包含主点、焦距、畸变和缩放因子等。相机外参数共有6个参数,可以用3×3旋转矩阵R和3×1平移向量T来表示。设左相机中心为原点,R和T表示右相机空间坐标系统相对左相机的映射关系。

图1 双目结构光测量系统框图

在建立左右相机映射关系后,可以利用三角成像原理获得物体表面的距离测量,即深度图像。根据极坐标几何,图1所示成像系统可以简化为图2: 用OT和OR表示左右相机,P为被测点。P的深度Z可计算为:

(1)

式中,b为基线长度,f为焦距,为左右相机图像视差。因为基线和焦距可以事先标定获得,视差图像计算是双目视觉成像中最重要的环节。

结构光成像基本原理是通过人为编码光斑条纹位置信息,建立左右相机图像像素间对应关系,克服无纹理或弱纹理条件下双目相机成像的不足,从而有效提高三维重建算法速度和稳定性。本文提出的格雷码结构光双目视觉成像系统工作流程包括:

1)双目视觉系统标定。

获取相机内外参数; 以左相机为世界坐标原点,建立世界坐标与相机图像间、左右相机间映射关系。

2)条纹编码与解码。

根据投影仪分辨率,确定结构光条纹编码数。然后,依次编码条纹光斑并时序投影。两相机同步采集图像,进行解码以获得像素对应条纹位置信息。

3)立体匹配。

根据上述步骤获得的相机内外参数,完成左右相机图像校正,结合条纹编码识别结果,建立两相机图像像素间对应关系;依据三角成像原理计算视差图像。

4)视差图像滤波和点云生成。

实际成像过程可能出现噪声和遮挡等干扰,在点云图像生成前对2D视差图像滤波,可望有效消除成像误差。滤波后对视差图可以通过公式(1)计算出最终的深度图。

图2 双目视觉成像

2 改进格雷码结构光双目视觉成像

2.1 格雷码结构光和投影

编码技术是决定结构光3D测量精度、分辨率和可靠性的关键因素。为识别图像中的像素,结构光条纹经时间或空间编码被投射到物体表面,确保每个像素或图像块获得唯一到标号[7]。

格雷码作为最具代表性和被广泛使用的两种灰度编码方法之一,以稳定和高精度而著称。它仅包含黑白(1或0)两种像素值,一般需要log2(n)幅条纹图才能实现n个不同位置编码。本文采用典型的二进制格雷码(Binary Gray Code)。根据定义,在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码,另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。其特点包括:(1)格雷码属于可靠性编码,是一种错误最小化的编码方式。它在相邻位间转换时,只有一位产生变化。因而大大地减少了由一个状态到下一个状态时逻辑的混淆。当相邻DLP投影条纹变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。(2)典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。这样既有利于消除投影过程突变误差,也方便后续求反算法。(3)格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同,这样有助于解码前的校错和纠错。

这里以分辨率为854×480的投影仪为例。理论上图像中的480个点可以用480个格雷码来标记。但是,成像噪声和被测物体表面反射特性点的差异可能造成单像素宽度条纹边界提取错误,影响后续解码运算和对应关系查找。综合考虑,最终选择7位格雷码方案。7位格雷码可以生成128个编码,投影仪的480列像素可以分成128个条纹,每4个像素共享同样的编码。类似地,投影仪854行分成间隔7个像素的128个条纹。图3(a)分别给出列和行方向的格雷码编码示例,(b)为左相机采集的工件条纹反射图。 通过时序叠加上述条纹图片,所采集的图像最终可以分解为多个4×4大小的区块,每个区块有唯一的行列总编号。

虽然格雷码本身是一种可靠性编码,具有一定的防错、纠错能力,但仍然可能因为场景交互作用导致采集图像噪声和解码错误。本文采用一种对原格雷码取反,再投影对照方式。该方法可望消除投影仪内“雾化”效果,减少黑白分界处的反射率误差。最终的投影过程是:先进行列条纹正码投影,然后进行反码投影,接着投射正码行条纹,最终是反码行条纹。依靠正反条纹的交替投射精确定位区块边界,实现像素点准确标识和解码。

2.2 立体匹配

两个相机采集的重叠区域内,需要找到实际坐标在两幅图案中的对应点坐标。通过计算这些对应点在左右两幅图片中的坐标的差值计算这些对应点的视差,最终描述物体的三维特征。立体匹配算法主要是通过建立一个能量代价函数,通过此能量代价函数最小化来估计像素点视差值,其实质就是一个最优化求解问题,通过建立合理的能量函数,增加一些约束,采用最优化理论的方法进行方程求解,这也是所有的病态问题求解方法。构建一个完整的立体匹配算法的4个步骤:1)广义匹配基元与特征参数选择;2)匹配方法及策略;3)匹配代价优化标准;4)视差细化方式。

本文采用基于区域的立体匹配算法,是对匹配图中区域的每一个特征基元,进行视差搜索范围内的特征基元计算相似性,并从中选择最优的匹配基元。在前文中,已经通过结构光编码使图像中每个搜索区域具有唯一标志。为实现快速且准确的像素误差平方和(SSD)匹配,这里提出一种高效的区域块搜索策略。它分为粗匹配和精匹配两个步骤:

1)粗匹配。

依据极线约束,将二维图像的特征搜索降为一维线性搜索。因为,最小条纹单位以像素块为单位,所以,在极线矫正和结构光对像素块编码标识的基础上,采用一维的区域搜索方式,获得待匹配点区域,如图4所示。以左相机采集的图片为参考图,在对应的右相机图像中进行搜索配对。为保证算法的通用性,将图片的分辨率设定为H×W,x,y方向上的搜索步长分别为dx,dy,以像素为单位。在格雷码方案确定时,最小像素块大小为4×7个像素。通过对矫正后的图相对进行粗匹配的流程图如图3所示。过程如下:

(1)首先构造一个小窗口,用此窗口将左边的图像覆盖,选出覆盖区域内的像素;

(2)同样用窗口将右边的图像覆盖,选出覆盖区域的像素;

图3 投影序列和左摄像机的编码工件图像

(3)比较左右覆盖区域的格雷码解码值;

(4)以搜索步长分别从y向和x向移动右边图像的窗口,重复第3步,直至解码值相等或超出搜索范围时跳出;

(5)找到右图像对应的窗口,即找到了左边图像的最佳匹配的像素块。依次进行迭代,找到左边所有的像素块相对应的右边像素块。

2)精匹配。

在粗匹配成功的基础上,左右图像对像素块的位置已经确定好,此时需要对每个像素块里的像素进行一一匹配。针对滑动窗口的方式,以像素为匹配基元,在匹配点的一维方向上以SSD值为相似性原则进行计算搜索,得到最匹配的点。通过上述步骤,来进一步精准匹配的精确度。

2.3 视差图像后处理

由于物体表面复杂的纹理,会导致在有效的测量范围内,出现对局部区域无法测量的现象,这种区域又称为测量死区。在搭建硬件平台时考虑到测量的有效区域,所以本文出现的测量死角为投影仪可以投影但两个相机不能采集到的区域。

对于此现象,左相机采集的图像中匹配失败的点,将应用插值的方法来进行视差填充处理。

对于这种测量死区最精确的方法是旋转待测物件,通过在不同的角采集来消除遮挡效果。对比几种插值方法,Lanczos插值具有速度快,效果好,性价比最高的优点,为了考虑视差图像的完整性,进行图像的Lanczos插值[14]。

每个输入样本对插值的影响由插值重构核L(x)定义,称为Lanczos核。核函数由归一化的正弦函数sin(x)与sin(x/a)相乘所得,公式(2)所示。 其中参数a是正整数,通常为2或3,决定了Lanczos核的大小。

(2)

为补充视差图中空白部分如点(xs,ys)处的像素值,首先在x方向上进行插值产生4个中间值,I0,I1,I2,I3:

(3)

其中:S(xsi,ysk)为(xsi,ysk)点的像素值。然后利用公式(4)沿y轴内插中间值Ik来计算该点的像素值D(xs,ys)。

(4)

其中:ai=L(xs-xsi),bk=L(ys-ysi),L(x)为Lanczos核函数,这里使用的核函数尺寸参数a为2。

3 实验结果与分析

图4为三维测量平台实物图,测量装置由两个工业相机和一个投影仪组成:两个相机分辨率为3856×2764,以0.3-0.8 m的距离观察物体,配套镜头焦距为12 mm,基线长度约为120 mm,其中,一台DLP数字投影仪置于两相机之间,分辨率为854×480,最大光强为200流明。以压力容器为例,采用本文系统和方法进行三维测量与重建。

图4 三维测量系统实例

使用本文改进格雷码结构光双目视觉成像方法进行测量:先标定出系统的参数,再对工件进行了极线校准,格雷码结构光编码解码,块匹配,处理后获得了喷涂工件形状数据。待测工件因表面非连续且为金属,对投影的图案会产生相应的反光区域,部分区域可见性不强。采用的是面结构光,所以投影计算只针对物体的投影区域,但通过旋转工件可以分别得到不同角度的数据。现通过MeshLab软件显示出了其不同角度的渲染结果,如图5(a)所示,可以看出,此方法能基本重建出该工件形状。

为了验证此方法,对另一工件进行了实验,结果如图5(b)所示,工件形状结果与原物体大体一致,可以实现测量重建功能。因工件表面对投影图案接受较弱,相机并未采集到部分区域的信息,故三维数据有些丢失。可通过选取流明数更大的投影仪进行投影成像并计算。

图5 工件的三维数据测量结果

4 结束语

本文对格雷码双目三维测量方法进行了研究,针对传统格雷码结构光二值边界处模糊问题,采用黑白取反二次投影方式,从而获得清晰的格雷码黑白码边界;接着,采用一种快速区域块搜索策略对编码后的图像进行立体匹配得到视差图。最后,针对双目测量死角问题,采用双线性插值方法填充视差图,得到补全后的深度信息。实验结果表明,采用上述改进的格雷码双目三维测量方法能够很好快速得出工件的三维数据,算法易于实现,可为工业喷涂、焊接、打磨等提供定位和几何测量数据信息。

猜你喜欢

视差双目投影仪
采用双目视觉和自适应Kalman滤波的作物行识别与跟踪
霜 降 苏美玲
基于双目视觉的机器人定位与导航算法
基于归一化互相关的半透明遮挡视差估计
基于自适应窗的立体相机视差图优化方法研究
天空投影仪
视差边缘优化的SGM 密集深度估计算法∗
Kobe—one of the greatest basketball players
防尘投影仪支撑架
机械手的双目视觉定位抓取研究