面向水下目标的双目视觉测距方法*

2022-04-19 10:49王震尧
电子技术应用 2022年4期
关键词:立体匹配视差双目

杨 戈 ,王震尧

(1.北京师范大学珠海分校 智能多媒体技术重点实验室,广东 珠海 519087;2.北京师范大学 智能工程与教育应用研究中心,广东 珠海 519087)

0 引言

本文对水下双目摄像机获取的图像进行了预处理,为了在具备各种复杂条件的水体中获取目标物体的精确深度信息,着重研究对目标物体图像的校准、图像匹配以及深度信息转换的关键算法。

文献[1]针对水下图像的处理方法将其主要分为水下图像增强与水下图像复原两大类,并对两类方法的研究现状进行分析与归纳,对各类增强和复原算法进行各个维度的深入比较。

在摄像机标定技术中,以张氏标定为代表的传统标定方法中,需要使用特定的、已知大小的标定物。此结合水下场景要求精度高、实时性强的条件需要,本文选择采用传统标定方法中的张氏标定法进行实验。

文献[2]在张正友标定算法的基础上,添加了切向畸变参数,丰富了校准模型,提出了一种非线性代价的函数方法,通过使用全局优化学习算法来求解摄像机的三维模型参数,有效解决了由于水体环境恶劣而造成的线性误差和误差累计的问题。最后采用OpenCV 的“rePojectImageTo3D”对矩阵视差图像进行计算,得到目标物的三维坐标,实验表明测量精度误差也在5%以下。

双目视觉中的立体匹配算法在基于深度学习匹配算法中,深度学习技术可以获取更多的图像特征用于计算,通过训练大量的数据集可以得到更高精度的立体匹配视差图。本文选择了改进的SGBM 算法进行双目图像立体匹配。

1 双目视觉测距

在双目视觉测距系统中,基本分为5 个步骤[3-4],分别为图像获取、相机标定、特征提取、立体匹配和测距[5]。本文将特征提取技术与立体匹配进行融合,为了更好地展示目标物体的三维信息,增加了点云可视化技术模块。

其中,X1-X2是由立体匹配过程得到的;B、f 由标定过程确定。因此,将上述值带入到表达式中可以得出被测物体的深度信息。

2 双目视觉测距检测方法

双目视觉测距检测方法如图1 所示,具体如下:

图1 双目测距流程

(1)首先是水下被测物体图像的增强技术,水中获取的图像质量比陆上图像质量低、对比度差,难以进行后续实验,因此需要对获取的左、右目图像进行图像增强操作。

(2)通过使用两个二维图像获得三维参数进行相机的标定和校准。由于在水中环境复杂,且在摆放相机时可能出现径向畸变和切向畸变误差,导致左右目相机难以精确地共面和行对准,因此需要对左右图像进行校正实验。

(3)立体匹配。通过两个相机同时获取同一场景的立体图像,寻找左右目图像的对应关系,匹配对应的点。在图像立体匹配前,进行特征提取操作,目的是确定具有强鲁棒性的特征点,增强图像对比度,加强特征效果。

(4)目标测距。通过已经求得的视差,根据双目立体视觉测距原理可计算出目标物体的深度信息值。

(5)三维点云可视化,将获取的含有三维信息的目标物体坐标点根据视差图映射为三维点云图,实现对目标物体的三维构建。

2.1 CLAHE 图像增强技术

本文在获取左、右目图像的基础上进行了CLAHE算法操作,大大提高了图像的对比度。通过设置对比度阈值,对图像块的直方图可以进行切割和重分布,然后采取直方图均衡化处理如图2、图3 所示,与原始图像相比,阴影区域2 的色彩信息明显增强。

图2 海底景物原图

图3 海底景物增强图

2.2 MATLAB 相机标定与矫正技术

在摄像机标定技术中,现有标定算法大致分为4 类[2]:传统标定方法[6-8]、自标定方法[9]、基于主动视觉的标定方法[10]和基于神经网络的标定方法[11-12]。本文采用了张正友标定法,通过MATLAB2018b 标定工具箱计算出水下相机的内外相关矩阵模型参数,标定的棋盘规格为9×9,单个格子为18 cm 定长,如图4 所示。该算法不同于摄影标定法和自标定法,既克服了摄影标定法需要的高精度三维标定物体成像的缺点,而且优化了自标定法鲁棒性差的问题,精度高,鲁棒性好。

图4 棋盘标定板

2.3 SGBM 立体匹配技术

SGBM 算法[13]作为半全局算法的典型,既保留了速度快的优点,又克服了鲁棒性较差的缺点,具有广泛的应用性。SGBM 算法分为预处理、代价计算、动态规划和后处理4 个步骤。本文在原有SGBM 算法的基础上改进了块匹配block 的大小,增强了图像边缘的平滑度。

2.4 双目视觉测距技术

将立体匹配和相机标定得到的参数代入到双目视觉测距原理公式中可以得到目标物体的具体深度信息值,通过基于Python 的OpenCV 函数库中的cv2.reprojectImageTo3D 函数可以求解出目标物体的三维坐标信息,其中Z 坐标的数值即为目标物体的深度信息。

2.5 深度图生成点云技术

点云作为3D 物体的表现形式之一,一直被用于目标三维重建[2]。本文将立体匹配得到的视差图基于PCL库和python-pcl 库转换为点云,其过程分为个3 个步骤:压缩视差图、转换信息点和优化局部信息。

(1)压缩视差图,将得到的像素点的三维坐标以及h×w×3 的三维数组视差图依次转换为N×3 的二维数组;

(2)将立体匹配获取并压缩后的三维坐标信息与压缩后的RGB 平面图进行融合,转化为带颜色的点云数据;

(3)优化局部信息,考虑到该实验环境为一个1.8 m×1.1 m×0.63 m 的水池,因此设计一个范围为Z≤0,Z>1 800,X>1 100,X<-1 100,Y>630,Y<-630(单位:mm)的有效区域,将不满足上述区域的坐标点删除,最终得到含有三维信息坐标点的彩色点云模型。

3 实验结果与分析

3.1 实验环境

3.1.1 数据集

本文使用型号为C203 的威海至帆品牌的水下双目摄像机作为拍摄设备。在55 cm 水深的浑浊、能见度差的水体中以32.5 cm 为一组,针对正方形铁盒、圆形铁桶和不规则塑料盒3 种不同的水下物体分别拍摄了不同组别的、分辨率为2 560×960 的左右目图像共200 张,作为实验数据集。其中部分图像样例如图5 所示。

图5 左右目图像数据集

3.1.2 软硬件环境

软件环境:Python3.6,python-pcl0.3,open3d0.9,open3dpython0.7,opencv-python4.1.0.25,pcl-1.9.1,cython0.25.2,Windows 10,Spyder4.2.1。

硬件环境:Intel®CoreTMi7-7500U CPU@2.70 GHz 2.90 GHz,8 GB RAM,NVIDIA GeForce940MX。

3.2 实验结果

3.2.1 CLAHE 图像增强技术

采用CLAHE 图像增强技术分别对32.5 cm 和60.0 cm距离的3 种物体进行图像增强,实验结果如图6、图7所示。结果表明,增强后的水下双目图片色彩明显增强、对比度提高,可以有效地表现出目标物体的特征。

图6 32.5 cm 处图像增强结果对比

图7 60.0 cm 处图像增强结果对比

3.2.2 校准与标定

采用MATLAB 标定工具箱对12 幅双目图像进行标定,对误差较大的双目图像进行二次标定,直到误差接近平均水平。误差结果如图8 所示。

图8 左右目标定像素误差

通过张正友标定法获取了相机的内外参数信息(见表1),输出左右目校正图像,如图9 和图10 所示。实验表明,左右目图像的校正图结果显示正常,对应点在同一水平线上;相机标定结果比较精确,误差控制在合理的范围内。

表1 标定参数结果

图9 32.5 cm 左右目校正图像

图10 60.0 cm 左右目校正图像

3.2.3 立体匹配与测距

采用改进的SGBM 算法,实验结果如图11 和图12 所示。实验表明,32.5 cm 的组别中立体匹配的结果较好,可以很好地表达出目标物体的轮廓信息,特征点明显;在60.0 cm 组别中,随着距离的增大,目标物体呈现面积减少,立体匹配效果会变差,无法准确地表达目标物体的轮廓信息,同时也会对周围水体环境进行误匹配,增大了后续实验的误差。

图11 32.5 cm 处双目图片及对应的视差图

图12 60.0 cm 处双目图片及对应的视差图

根据式(2),将视差图中每个视差值进行矩阵运算,得到每个元素中含有深度信息值的深度图,计算出目标物体距离摄像机的深度值,如表2 所示。其中,以32.5 cm为一个距离单位,在相同距离内针对不同物体进行多次测距实验。

表2 测距结果

其中组别1、2、3 的测试对象分别为正方形铁盒、圆形铁桶和不规则塑料盒,每组分别在距离水下双目相机32.5 cm 处测距3 次,取3 次平均值为每组的实验结果,保留5 位小数。组别4、5、6 的测试对象分别为正方形铁盒、圆形铁桶和不规则塑料盒,每组分别在距离水下双目相机60.0 cm 处测距3 次,取3 次平均值为每组的实验结果,保留5 位小数。

在深度信息测量实验中,距离为32.5 cm 组别针对上述3 种不同目标物体的测距精度差别较小,平均精度为96.29%,效果比较理想;在60.0 cm 组别中,平均精度为81.2%,不同物体的测距精度存在差距,原因为当距离变大时,更多的水体环境会进入水下相机的拍摄范围内,当水体浑浊时,会影响到立体匹配的视差图效果,造成一定程度上的测距误差。

3.2.4 点云可视化

基于python-pcl 第三方库,把立体匹配得到的视差图求解出目标物体的三维信息,并将每个包含深度信息值的三维坐标点生成点云,如图13 所示。

图13 三维点云图

4 结论

本文给出了双目视觉技术在水下场景中的测距任务的设计与具体的实现方法,并提出了一种根据视差图生成三维点云的方法,可以有效表示出目标物体的三维结构信息。同时针对立体匹配部分,采用改进的SGBM算法,既保证了鲁棒性好的优点,又优化了算法执行速度。实验结果表明,该算法优化了处理时间、鲁棒性好。测距实验表明:在浑浊水体环境中的0~50 cm 的距离内,测距平均精度为96.29%,达到了较高的精度水平,由于近距离拍摄会产生不可逆的畸变误差,因此该实验结果达到了近距离水下测距的要求。目前国内外的水下测距实验距离多在1~2 m 区间内,且水体清澈,因此产生的误差较低。考虑到上述原因,在相同水体环境中,本文在0~50 cm 的测距精度较为先进。

虽然本文较为成功地实现了针对水下浑浊环境下的针对目标物体的近距离测距任务以及构建出目标物体的三维模型,但仍有许多不足的地方:在水下场景中,拍摄的图像对比度低、图像质量差,导致视差图的效果没有陆上实验效果理想,影响到了后续实验的准确性。接下来将对此进一步研究和完善。

猜你喜欢
立体匹配视差双目
霜 降 苏美玲
基于自适应窗的立体相机视差图优化方法研究
视差边缘优化的SGM 密集深度估计算法∗
Kobe—one of the greatest basketball players
基于双目测距的卡尔曼滤波船舶轨迹跟踪
双目立体视觉系统的旋转轴方位计算与特征点立体匹配
基于分割树的视差图修复算法研究
基于SIFT算法的图像匹配技术在测量系统中的应用
一种改进自适应权重稀疏区域立体匹配算法
基于双目视觉图像的长度测量方法