一种纹理与结构光叠加的立体视觉改进算法

2022-06-09 04:53:48刘博存常思杰林浩田
激光与红外 2022年5期
关键词:立体匹配视差纹理

刘博存,常思杰,林浩田,江 静

(北京联合大学,北京 100020)

1 引 言

结构光测量(SLI)技术作为一种主动光学三维测量技术[1],广泛应用于缺陷检测等领域。随着国内外各种双目立体视觉与结构光方案在制造业的普及,针对结构和纹理越来越复杂对象的三维重建精度与完整性需求也逐渐变高,学者们开始运用双目结构光技术进行研究。陶俊[2]提出一种全自动三维曲面重建及绘制其纹理的方法,利用投影设备人为给三维曲面加上纹理特征,摄取带有纹理特征的序列影像和不带有投影纹理的曲面真实纹理;赵磊[3]提出一种基于格雷码的立体匹配方法,通过向被测物投射格雷码增加其表面特征,提高特征提取的精度。鉴于此类,本文提出一种纹理与空间编码结构光叠加情况下的立体视觉改进算法,以解决叠加导致双目立体视觉无法计算出真实视差的问题。该算法对比引入结构光前后两次拍照视差结果,根据纹理复杂区域进行视差优选,用加入结构光之前视差替换加入结构光后坏点视差,来实时提高双目立体视觉算法视差重建完整性。利用改进算法对单一平面、电木工件进行三维重建,观察视差和平面深度结果衡量改进算法对OPENCV中SGBM算法[4]、BM算法[5]、HALCON中NCC算法[6]的效果。

2 结构光三维重建

2.1 立体匹配算法

立体匹配算法基本原理如图1所示:首先以左视图中某个像素点为中心,选取一个母窗口。取能量代价函数E(d)(如式(1)所示)的最小值,在对应右视图中的扫描路径(如图1中箭头)上寻找最相似的窗口。其中,匹配代价C(p,d)反映了母窗口p在滑动距离d时与匹配窗口的相似程度,平滑束缚P(dq-dp)反映了在距离d内母窗口p和相邻窗口q之间的像素差异与梯度,一些局部匹配算法取消了平滑束缚。

图1 立体匹配算法基本原理Fig.1 Basic principle of stereo matching algorithm

(1)

式中,根据E(d)最小值求出的左右视图中母窗口与最佳匹配窗口间的距离d,即母窗口中心坐标视差。重复以上过程生成以左图坐标为准的视差图,得到深度信息。学者们对不同预处理方法、代价函数和扫描路径等研究,形成了目前各种立体匹配算法。

2.2 引入空间编码结构光

立体匹配算法通过对比匹配窗口滑动过程中的匹配代价,确定匹配的最佳窗口。一旦当匹配窗口所在的图像区域像素纹理特征匮乏(图2中的白色框)或者相同纹理重复出现(图2中的黑色框)时,会导致匹配算法中能量代价函数E(d)最小值失去唯一性,继而无法找出匹配窗口[7]。出于视差唯一化[8]的要求,这些窗口的核心视差会被置0。在视差值被归一到灰度0~255之后,会在视差图中直观体现为多个“洞”,文中将其认定为视差坏点。主动立体视觉借助向该区域投射结构光以丰富纹理,帮助匹配算法求出视差,图3为结构光立体视觉示意图。

图2 纹理特征匮乏对立体匹配的影响:视差图(a)与实际图像(b)Fig.2 The influence of texture feature deficiency on stereo matching:parallax image (a) and actual image (b)

图3 结构光立体视觉示意图Fig.3 Schematic diagram of structure light stereovision

2.3 结构光编码设计

在纹理特征匮乏区域的滑动窗口匹配过程中,为保证不同滑动窗口间的差异尽可能地大,就要求结构光本身在不同位置的像素特征尽可能的不同[9],且互异性越大越好。为了提高结构光的内部互异性引入两个指标:汉明距离HD(如公式(2)所示)(即结构光序列中所有滑动窗口间像素不同个数)[10],结构光序列中汉明距离最小值MHD(如公式(3)所示)[11]。

(2)

MHD=Min(HD1,HD2…)

(3)

HD(2)式中x、y表示任意两个窗口中例如图4的070、702、025。R表示窗口内所有像素的位置,x[i]和y[i]表示两个滑动窗口中i位置像素值。MHD中HD1,HD2……是序列中所有窗口间的汉明距离。

图4 3×3窗口结构光的滑动窗口Fig.4 The matching window of 3×3 window structure light

确定结构光生成所需的性能指标MHD后,将其作为约束条件来控制结构光的内部互异性,为得到所需性能结构光序列,本文提出一种随机递归的结构光序列生成算法,流程如图5所示。

图5 结构光序列生成过程Fig.5 Structure light sequence generation process

利用MHD生成的4种结构光序列,从上到下纵向重复投影生成最终结构光的序列见图6。

图6 四种序列的结构光Fig.6 Four sequences of structure light

3 三维重建改进算法

3.1 改进目的

通过实验发现,在视场中加入空间编码结构光确实提升了纹理特征不明显区域的匹配效果,但同时也影响了某些纹理丰富区域的匹配结果。因为视场本身的纹理与结构光两者叠加使得同一扫描线上视差搜索范围内出现多个像素相同的窗口(见图7)降低了部分窗口的唯一性。观察发现加入结构光后,本来纹理丰富区域(框体)反而出现了比无纹理区域更多的视差坏点,见图8。

图7 纹理与结构光重叠后出现多个像素相同的窗口Fig.7 When the texture and structure lights overlap, multiple windows of the same pixel appear

图8 结构光对纹理复杂区域的效果Fig.8 The effect of structure light on complex textured areas

为了验证该现象是否具有普遍性,本文用Jongwoo Lim[12]、Federico Tombari[13]、T.Molinier[14]和Kurt Konolige[15]四位学着的空间编码结构光(见图9),配合SGBM、BM、NCC三种立体匹配算法。利用实验设备(图10(a)),对单一平面(图10(b))、电木压模工件(图10(c))进行视差重建。并对有纹理和没有纹理两种情况下的平面和工件进行对照实验,观察两种情况视差图来推断叠加是否对四种结构光下立体匹配有影响。实验结果分两组,图11~14是对测试平面的测试结果、图15~18是对工件的测试结果。图中,“…”框是结构光下纹理丰富情况的实验结果;虚线框是结构光下纹理匮乏情况的实验结果;实线框体内为结构光与纹理叠加的区域。

图9 四个研究团队的结构光Fig.9 The structure light of four research teams

图10 实验设备和素材Fig.10 Experimental equipment and materials

图11 Jongwoo Lim结构光下测试平面的结果Fig.11 Test results under Jongwoo Lim structure light

图12 Federico Tombari结构光下测试平面的结果Fig.12 Test results under Federico Tombari structure light

图13 T.Molinier结构光下测试平面的结果Fig.13 Test results under T.Molinier structure light

图14 Kurt Konolige结构光下测试平面的结果Fig.14 Test results under Kurt Konolige structure light

图15 Jongwoo Lim结构光下工件的结果Fig.15 Test results of workpiece under Jongwoo Lim structure light

图16 Federico Tombari结构光下工件的结果Fig.16 Test results of workpiece under Federico Tombari structure light

图17 T.Molinier结构光下工件的结果Fig.17 Test results of workpiece under T.Molinier structure light

图18 Kurt Konolige结构光下工件的结果Fig.18 Test results of workpiece under Kurt Konolige structure light

两组实验结果直接表明,纹理与结构光叠加对立体匹配算法的影响并非个例,无论是单一平面还是工件在四种结构光下生成的视差图都会受纹理和结构光叠加的影响。这至少说明以图像特征为匹配索引的BM算法、SGBM算法、NCC算法在结构光下对纹理的适应性都有着不同程度的不足,以不足为出发点,本文着手于针对纹理与空间编码结构光叠加情况下的立体视觉改进算法。

3.2 改进算法思路

加入结构光后会造成纹理与结构光的叠加,若不加入结构光又会让纹理匮乏区域视差效果陡降。改进思路为在加入结构光之前就计算一次视差,然后用这些视差替换加入结构光后纹理复杂区域内的坏点。这样既保证了纹理匮乏区域视差,还优化了丰富区域视差。改进算法总体流程如图19。

图19 改进算法的思路Fig.19 The overall flow of the improved algorithm

3.3 实施步骤

改进算法的实施步骤:

第1步:两次拍摄,一次加结构光和一次不加结构光,生成对应的立体校正图像作为测试图像。

第2步:对没有加入结构光的校正图片求出纹理丰富区域,并求出该区域的视差,其过程为:首先对校正过的左右图像(图21(a)、图21(b))进行锐化和二值化得到如图21(c)、图21(d)后,进行匹配得出纹理丰富区域(例如图21(e)、(f)、(g))。定义滑动窗口与母窗口间匹配代价为bz(如公式(4)所示)。bz中w1为母窗口,w2为滑动窗口,HD(w1,w2)为窗口w1与w2的汉明距离,L为窗口的像素边长。定义滑动过程中所有窗口bz最大值定义为max1,第二大值为max2。在匹配过程(图20)中求出的纹理复杂窗口必须满足约束条件:max1≥窗口像素总数L×L的60%且max1×85%≥max2。

图20 计算纹理丰富区域的匹配过程Fig.20 Calculates the matching process for texture-rich regions

图21 纹理丰富区域Fig.21 Image texture rich area

bz(w1,w2)=L×L-HD(w1,w2)

(4)

第3步:根据加入结构光的图片生成视差图,在纹理丰富区域内与第2步的视差结果进行优选。视差优选是用加入结构光之前视差替换加入结构光后坏点视差,算法返回优选后的值加入结构光视差图,以达到实时提高双目立体视觉算法视差重建完整性的目的。优选的过程本质是只要在纹理丰富区域内加入结构光的视差不在匹配算法的设定范围内,且未加入结构光的视差在匹配算法的设定范围内,就用未加入结构光的视差进行替换。

为了论证纹理明显区域约束条件的合理性,在同一叠加区域内使用不同约束条件来观察优选点个数和纹理丰富窗口个数来(表1)衡量不同约束条件的性能。结果表示max1≥L×L×60%且max1×85%≥max2优选点数足够多且纹理丰富区域足够少,从而同时提高视差重建完整度和视差唯一性。

表1 在不同约束条件下的优选点数和纹理丰富窗口数Tab.1 Improvement points and texture rich windows under different constraints

3.4 算法的视差效果

改进算法把在视场中加入结构光的视差图(图22(e))在纹理丰富区域(图22(b))内坏点的视差替换为未加入结构光的视差(图22(c)),得到最终的视差图(图22(d))。以上视差图都与左图像(图22(a))坐标相互对应。进行对比发现通过改进算法得到的视差图(图22(d))相比没有进行改进而生成的视差图(图22(e))在纹理丰富区域的视差效果有着显著的改善。

图22 改进算法的视差效果Fig.22 Improved parallax effect of the scheme

4 实验过程与结果分析

4.2 改进效果与分析

在不同距离上对纹理复杂平面与纹理匮乏平面投射3×3MHD=2的结构光进行深度检测。计算出改进前后的深度图像。对划定区域(图23中框体)求出检测距离的平均值(如公式(5)所示),判断改进算法对深度检测的有效性。通过SGBM、BM、NCC算法计算的距离平均值结果如表2~4所示。

图23 划定区域分布Fig.23 Distribution of designated area

表2 BM算法在不同情况下的距离计算结果Tab.2 Distance calculation results of BM algorithm under different conditions

表3 SGBM算法在不同情况下的距离计算结果Tab.3 Distance calculation results of SGBM algorithm under different conditions

表4 NCC算法在不同情况下的距离计算结果Tab.4 Distance calculation results of NCC algorithm under different conditions

(5)

式中,D(x,y)为坐标(x,y)处的深度,n、n0和m、m0分别为划定区域内坐标y和x的上下限。

结合3组距离计算结果,发现纹理匮乏平面在结构光投射下的结果比纹理复杂的结果更接近实际距离,说明纹理和结构光的叠加对深度检测确有影响。我们进一步对比纹理复杂平面在改进前后的深度检测结果与实际距离间的差(图24),发现算法提升了平面区域平均深度检测精度的1%、同时随着实际距离的线性增加改进结果增加趋势也更显著,这证明该算法普遍有效。

为了验证改进算法对立体工件的3D检测、建模、点云重建是否有提升效果,本文选取一个电木压模工件,在4种结构光下完成立体匹配算法改进前后的视差重建(如图25所示)。

图25 改进前后的视差结果Fig.25 Parallax results before and after improvement

通过对比工件改进前后的视差结果,发现改进算法对不同结构光下立体工件的三维重建确有效果,而且通过对比不同MHD结构光结果发现视差效果会随着结构光的MHD增大而提升。为判断改进算法是否会对工件的深度结果造成失真,将算法改进前后的深度结果分别进行点云重建,在重建时会对优选过的点进行染色,观察染色点(图26)是否出现塌陷、凸出等噪音。观察发现3组点云均未出现失真现象。

图26 染色后的点云Fig.26 The point cloud after staining

5 结 论

为应对制造业中经过打码、喷漆、贴标、刻蚀等添加特定纹理的三维检测对象,在2D视觉无法满足的分拣、定位、逆向工程、缺陷检测等工业环节中的三维检测。本文以电木压模工件为实验对象,针对立体匹配算法在结构光下对纹理丰富区域的适应性问题,提出了一种针对纹理与空间编码结构光重叠情况下的立体视觉改进算法。该算法通过算出图像纹理复杂区域,并在这些区域通过加入结构光前后的两种视差进行优选来提高深度检测精度。实验结果表明,算法实现了在结构光下对纹理复杂区域深度检测精度1%的提高和对工件点云重建完整性的提高。该算法只需要在投射结构光前多进行一次拍照无需添加其他设备,可实施性高。但算法也有缺点:耗费了更多的内存,在未来的应用中应根据平台性能优化。

猜你喜欢
立体匹配视差纹理
基于自适应窗的立体相机视差图优化方法研究
基于BM3D的复杂纹理区域图像去噪
软件(2020年3期)2020-04-20 01:45:18
使用纹理叠加添加艺术画特效
基于梯度域引导滤波的视差精炼迭代算法
影像立体匹配中的凸优化理论研究
TEXTURE ON TEXTURE质地上的纹理
Coco薇(2017年8期)2017-08-03 15:23:38
基于互补不变特征的倾斜影像高精度立体匹配
基于分割树的视差图修复算法研究
现代计算机(2016年3期)2016-09-23 05:52:13
改进导向滤波器立体匹配算法
消除凹凸纹理有妙招!
Coco薇(2015年5期)2016-03-29 23:22:15