仓库三维重建系统中改进双目匹配SAD算法研究
2023-08-10刘学君常梦洁孔祥旻李柏灿龚泓博
刘学君 常梦洁 孔祥旻 晏 涌 李柏灿 龚泓博
(北京石油化工学院信息工程学院 北京 102617)
0 引 言
危险化学品生产和使用数量的不断增加对危化品仓储安全的监管提出了更高的要求[1-2]。对危化品仓库进行三维重建,能够实时、准确地获取危化品周围的环境信息,实现危化品仓库环境的可视化,确保监测预警的实时性和安全性[3]。双目视觉技术基于视差原理对目标进行三维重建[4],与TOF相机、结构光、激光雷达等获取场景深度信息的方式相比,双目视觉技术不受限于物体表面的材质,可获取均匀密集的场景三维信息,对硬件和成本的要求较低,在危化品库内安全监测方面一定的具有应用前景。
三维重建的效果和精度由匹配算法直接决定[5],其关键步骤是寻找两幅图像中的同名点,即进行立体匹配。绝对误差和(Sum of Absolute Differences,SAD)算法是一种经典的块匹配算法,作为实时系统的典型算法,该算法的复杂度低、速度快、实时性好,得到的稠密视差图可以用于密集型的三维重建[6-7]。但在较为复杂的场景应用传统SAD算法,直接将两个像素块对应数值之差的绝对值求和会产生一定的误差,得到的结果精确度不足,且因匹配窗口内视差发生变化而导致视差图出现空洞,影响重建后的三维模型[8-10]。本文对传统SAD算法进行改进,经过计算得到初始视差图,然后对初始视差图进行优化,得到最终视差图。利用标准数据集及仓库模型进行实验验证,证明本文算法的有效性。
1 双目立体视觉原理
双目立体视觉成像模型一般为两个平行放置的相机,如图1所示,两相机光心Ol和Or之间的距离为基线距离b,空间中一点p在左右相机的坐标分别为pl(xl,yl)和pr(xr,yr),视差d定义为某一点在两成像平面中相应点的位置差:d=xl-xr[11-14]。
图1 双目视觉模型
由双目视觉模型可知,△pOlOr∽△pplpr,根据三角相似原理可得:
式中:Zc表示p点的深度,f表示相机的焦距。由式(1)可知视差值d与深度值Zc成反比,当视差值d越小,深度值Zc越大,表示该点距离相机越远;反之,表示该点距离相机越近。实际情况下两相机无法做到严格并排放置,需要通过外极线校正使得yl=yr,这样搜索维度会从二维降为一维,降低匹配的复杂程度,提高匹配效率[15-16]。
2 改进SAD算法
SAD是图像立体匹配中基于灰度的块匹配算法[17]。其原理求取模板图像块与搜索图像块内像素值差的绝对值的和,进而度量两个图像块是否匹配,其定义表示如下[18]:
PR(i+h,j+k+d)|
(2)
式中:d为视差值,PL(i,j)表示模板图像块内像素的灰度值,PR(i,j)表示搜索图像块内像素的灰度值。利用式(2)计算得到的SAD矩阵值越小,两个图像块越相似。
对于复杂场景来说,利用两个像素块中像素点差值的相似程度来匹配图像块,一旦场景内连续图像块的像素点出现相似像素值,匹配必然产生误差。为提高两个图像块的匹配精度,针对SAD目标函数,引入均值为零的二维高斯分布的加权系数ω(i,j)[19]:
式中:σ2为方差,取σ2=0.5n,n为块半径。
二维高斯分布是一维正态分布向二维的推广。如图2所示,均值为零的二维高斯分布在XOZ面和YOZ面上的投影都是一个标准正态分布,在XOY面上的投影是一个椭圆。
图2 二维高斯分布图
将式(3)和式(2)结合,可得改进的SAD算法如式(5)所示。
|PL(i+h,j+k)-PR(i+h,j+k+d)|
(5)
引入高斯分布后的改进SAD更偏重于图像块中心像素的匹配精度,符合客观实际,可以有效提高整体匹配精度。
3 视差图优化
利用加权后的SAD算法得到初始视差图后,发现当匹配块内像素点的视差变化时,会导致视差图出现空洞。为了对空洞进行填充,引入灰度共生矩阵(Gray-level Co-occurrence Matrix,GLCM)对空洞周围纹理区域进行度量,然后选用合适的窗口大小求取视差均值进行空洞填充。
GLCM通过研究灰度的空间相关特性来描述图像的纹理。GLCM用G(i,j)(i,j=0,1,2,…,L-1)表示,其中L表示图像的灰度级,i和j表示像素的灰度,d表示两个像素的间距,n表示窗口大小。θ为GLCM的生成方向,通常取0°、45°、90°和135°[20-21]。
图3为θ=0°,d=1的灰度矩阵的生成过程。
图3 生成灰度共生矩阵
在基于GLCM的14个纹理特征中,选用角二阶矩(Angular Second Moment,ASM)、熵(Entropy,ENT)、对比度(Contrast,CON)和相关性(Correlation,COR)组成一个四维特征向量综合描述图像中区域的纹理属性[22]。
如式(6)所示,利用欧氏距离(Euclidean distance,ED)来描述两个相邻纹理区域特征向量(ASM1、ENT1、CON1、COR1)和(ASM2、ENT2、CON2、COR2)的相似度[24]:
两个相邻区域纹理特征向量的ED越大,说明两个区域的纹理属性差别越大,那么这两个区域不属于同一物体的概率越大,不能直接求取视差均值赋给空洞位置;若两个相邻区域纹理特征向量的ED越接近于0,说明两个区域属于同一物体的概率越大,其平均视差可以赋值给空洞位置。根据图像纹理信息进行视差填充窗口的自适应调节,可以正确、有效地进行视差填充,获取良好的视差图。
4 实验与分析
4.1 算法流程
本文算法的总体流程如图4所示。利用改进的加权SAD算法求出初始视差图,然后对视差图中因视差发生变化造成的空洞进行筛选,确定空洞位置后,以空洞为中心,通过变化窗口的半径,分别求取ASM、ENT、CON、COR值,进而求得ED。在得到的所有ED值中找到最小值,得到其对应的最小窗口,将窗口内视差求均值赋给空洞位置,重复操作直到所有空洞填充为止。
图4 本文算法流程
4.2 标准数据集测试
Middlebury和KITTI提供了立体匹配算法的评估测试数据集。Middlebury大学立体视觉网站是计算机视觉行业公认的评估和数据集存储库,在最新的V3数据集中,提供了更加复杂的场景和更加精确的视差估计。KITTI数据集填充了Middlebury数据集仅对室内场景进行采集的不足,由行驶中的车辆对室外环境进行拍摄采集。
本文采用Middlebury V3数据集和KITTI 2015数据集对匹配算法进行测试。测试实验以MATLAB R2020a为算法仿真软件,在Intel(R) Xeon(R) CPU E5-2650 v4 @2.20 GHz、128 GB内参的电脑上运行。Middlebury V3数据集测试结果
4.2.1MiddleburyV3数据集测试结果
将本文算法与传统SAD算法及差值平方和(Sum of Squared Differences,SSD)算法[24]、半全局匹配(Semi-Global Matching,SGM)算法[25]做比较,设置匹配块半径n=7,Middlebury V3训练集视差最值分别为(290,256,640,280,280,260,260,300,330,290,290,260,240,256,760),视差图空洞填充窗口半径ng=1,2,3。
四种算法在Middlebury V3数据集中Adirondack场景下的视差图如图5所示,可以看到,通过本文算法得到的视差图边界清晰,能较好地保留原图中的细节特点,有利于后期三维重建对场景的完整恢复。
(a) 原始左图 (b) 标准视差图
表1给出了四种算法在Middlebury V3数据集的测试结果,主要从视差误匹配百分比、运行时间、视差空值个数等3方面进行实验数据评估分析。结果显示,本文算法的误差百分比较传统SAD算法和SSD算法降低了21.31%和21.32%,较SGM算法增加了0.12%;算法运行时间较SAD算法和SSD算法增加38.36%和38.98%,较SGM算法降低了77.81%;视差空洞个数较SAD算法和SSD算法降低了83.18%和96.83%,较SGM算法增加了13.69%。
表1 四种算法在Middlebury v.3数据集上测试结果对比
4.2.2KITTI2015数据集测试结果
设置KITTI 2015数据集视差范围为(0,228),其余参数与MiddleburyV3数据集参数保持一致。四种算法在KITTI 2015数据集中000000_10场景下的视差图如图6所示,可以看出本文算法在室外场景下得到的视差图整体分布较为均匀,仍具有较好的适用性。
(a) 原图左图 (b) 标准视差图
从表2可以看出,随着KITTI 2015数据集中图片分辨率的增大,四种算法的运行时间均有所增加,且室外环境较为复杂,导致平均误匹配百分比都处于较高的结果,但本文算法的平均误匹配百分比较SAD算法和SSD算法降低了11.07%和11.00%,较SGM算法增加了0.38%;平均运行时间较SAD算法和SSD算法增加292.15%和200.81%,较SGM算法降低了18.24%;平均视差空值个数较SAD算法和SSD算法降低了24.40%和22.88%,较SGM算法降低了38.20%。
表2 四种算法在KITTI 2015数据集上测试结果对比
4.3 危化品仓库模型测试
为验证本文算法在真实危化品仓库中的效果,在实验室内搭建了危化品仓库模型,利用木块及铁桶模拟实际仓库堆垛码放状态,在仓库顶部的顶角位置放置双目相机,图7(a)、(b)分别为双目相机采集到的左右视角图片,已经过极线校正处理。
(a) 左视角 (b) 右视角图7 危化品仓库模型内双目相机采集到的图片
图8至图12分别为当匹配块半径n等于1、5、10、15、20时SAD算法及本文算法对仓库图片的处理效果对比。分析图8至图12可得,受仓库内光照不均、地面反光、堆垛、地面、墙面纹理较少影响,本文算法和SAD算法均出现不同面积的空洞问题,反映到视差图中为黑色区域。随着匹配块半径的增大,相较于SAD算法,本文算法引入的高斯权重能在视差平滑化过程中保持较好的匹配结果,且本文算法利用纹理信息对空洞进行填补,能较好地将空洞区域缩小,结果优于传统SAD算法,具有较好的实用性。
(a) SAD算法处理结果(b) 本文算法处理结果图8 匹配块半径n=1
(a) SAD算法处理结果(b) 本文算法处理结果图9 匹配块半径n=5
(a) SAD算法处理结果(b) 本文算法处理结果图11 匹配块半径n=15
(a) SAD算法处理结果(b) 本文算法处理结果图12 匹配块半径n=20
5 结 语
本文通过引进二维高斯分布系数对SAD匹配算法进行加权,得到初始视差图后,针对视差图中存在空洞的像素点,利用GLCM度量的纹理信息选定窗口进行空洞填充。相较于SAD算法,本文算法得到的视差图更精确,能够为后期场景的三维重建做准备。在今后的研究中,将针对本算法应用于复杂场景的图像匹配做进一步的优化,完成危化品仓库三维重建的监测预警工作。