APP下载

基于双目视觉的障碍物识别研究

2021-04-20冀将孟立凡

电子设计工程 2021年6期
关键词:双目角点障碍物

冀将,孟立凡

(中北大学仪器与电子学院,山西太原 030051)

在移动式机器人、无人小车及无人机等诸多应用场景下避障技术都至关重要,而障碍物识别是避障技术的前提。目前针对障碍物探测采用的主要方法有激光雷达探测、超声波探测以及基于单目摄像头的视觉识别等。传统方法中的激光雷达具有精度高、采集速度快等优点,但其费用较高难以应用于小型开发;超声波测距需要对行进方向上不同高度的障碍物信息分别进行采集,且测量范围小;而基于单目相机的视觉识别易受环境光照影响,且需大量数据集以完成计算,这些因素使得传统探测方法在越加广泛的实际应用领域难以施展拳脚。与此同时,将计算机视觉应用于障碍物识别具有实时性高、成本较低且不易受外界干扰的优点,故更适应于当下应用[1-2]。

双目立体视觉利用左右摄像头分别以各自角度出发对同一场景进行采集得到场景图像对,其后在图像对对应点之间位置差异的基础上通过数学推导得到场景中物体的三维信息[3]。随着双目立体视觉理论的成熟,该技术已广泛应用于工业生活中的各个领域。文中基于双目立体视觉原理,利用双目相机对目标场景成像以获取其立体图像对,并通过算法匹配出相应像点,随后利用对应像点间的视差信息计算得到目标场景对应的深度信息,并最终实现障碍物的识别。

1 双目相机标定

双目相机的标定是指得到和确定相机自身各类内外参数的过程,双目相机的内参是指各种与相机本身特性相关的参数,如焦距、投影中心、倾斜系数、畸变系数等;双目相机的外参是指诸如左右摄像头相对位置及相机平移、旋转向量等转换参数[4-5]。通过标定得到内外参数后,便可将被测物体从空间三维坐标系中“转移到”相机成像平面的像素坐标系上。

文中在对各类标定方法进行对比实验后选用张正友标定法对双目相机进行标定,该方法选用标准棋盘格作为参考物,在利用世界坐标系位置的自由度获取各角点空间坐标,并基于像素坐标系获取各角点对应像素坐标,便可以计算得到相机内参,并求解出相机各类转换矩阵的值[3]。综合考虑,文中选用CMOS 型OV9714 摄像头模组建立双目系统如图1所示。

图1 双目相机

标定工作分为单目标定与双目标定两个阶段,首先,分别进行左右单目标定,为提高标定精确度,利用左右摄像头从不同位置角度对棋盘格进行拍摄得到14 张标定图像,然后,利用Matlab 对这些图像进行全部读取,读取结果如图2 所示。

图像读取结束后,通过逐个点击定位棋盘格图像的4 个边界角点(角点处于相邻4 个方格的交点)获取棋盘格边界,然后,根据实际尺寸及角点横纵排列可实现图像中所有角点的定位。

图2 棋盘格图片读取

摄像机拍照功能的实现是通过透镜将实物投影到成像平面上,但是在透镜的制造和组装过程中由于精度等技术上的偏差会引入畸变,最终在投影时引起图像的失真[6]。为避免畸变带来的影响,文中通过输入预估畸变系数对图像角点进行二次定位,标定工具箱会根据输入的预估畸变系数调节定位位置,所有图像角点提取完成后即完成单目标定。分别完成左右摄像头单目标定获得内参文件并利用内参实现相机的双目标定。

其中左摄像头内参如表1 所示,相机外参如表2所示。

表1 左摄像头内参数

表2 双目相机外参数

2 图像预处理

在图像处理过程的诸多环节(如输入、采集、处理等)中会引入各类噪声(主要体现为椒盐噪声及高斯噪声),这些因素会极大得影响到后续图像匹配的精度[7]。

文中利用中值滤波和高斯滤波对图像进行去噪操作。其中,中值滤波的主要原理是以图像目标区域内灰度值的中值代替该区域中心点处的灰度值,对椒盐噪声去除效果较为明显[8-9]。该方法通过创建一个包含目标区域所有像素的滤波模板并进行排序处理,最终在序列中找到灰度中值完成替代工作。此二维序列中值滤波输出为:

其中,f(x,y)和g(x,y)分别是原图像和处理后的图像;k∈w,w为输入的二维模板。

高斯滤波的主要原理是以图像目标区域内灰度值加权平均处理后的结果代替中心点灰度值[8-9],其中一维高斯分布以及二维高斯分布分别表示为:

文中选用σ=1.5 时的5*5 高斯模板对图像进行了处理,较为完整地去除了图像中存在的高斯噪声。

由于双目摄像头两个镜头之间内部参数的差异以及拍摄时由于位置差异导致的接受光照强度的不同,会使得左右两张图像之间存在像素灰度差异,即产生了亮度差。文中使用直方图均衡化方法进行亮度差消除。在实际情况下,首先,需要将获取的彩色图像转换为灰度图,一般情况下图像的灰度级范围为0~255,通过以下线性变换可将图像灰度压缩到区间[0,1][9]。

得到和灰度图后,计算图中每个灰度值所含的像素个数占图像总像素的比例并对其进行累加,随后根据概率值对图像各灰度值所包含像素进行重新分配得到新图像。累加值计算公式如式(5)所示,其中k表示灰度级数。

改变图像中某一个特征的同时很有可能会引起图像其他特征的变化,在对图像进行去噪及去除亮度差处理等平均或积分运算后,会造成图像某些信息的丢失。图像的锐化处理正是以上运算的逆处理过程,其目的是加强图像边缘、轮廓线等细节,因此,该文在上述处理后对图像进行了拉普拉斯锐化以恢复图像细节信息。

经以上各处理过程后,双目系统所拍摄图像的前后处理效果如图3 所示,可见此时图像噪点减少,对比度及细节度得到提升。

3 立体匹配与深度恢复

图3 图像预处理

立体匹配的基本原理是利用图像对中对应点之间的视差,结合标定过程中得到的双目相机参数实现图像三维坐标的恢复。双目相机成像的模型如图4 所示。

图4 相机成像模型

图4中P点表示被测目标空间位置,P1和P2分别为P点在左右摄像头像平面的成像位置,f表示焦距,XR和XT分别表示成像点P1和P2在像面上距离平面左边缘的距离,可见此时左右光轴处于平行状态[10-11]。由此可得视差和被测物体深度之间的关系式:

式中,Z为被测物体深度,可推导得到:

可知双目立体视觉的深度恢复建立在双目系统理想状态下,故在立体匹配之前需对系统进行立体校正以解决图像非共面行对准问题。文中在相机标定中已经通过畸变系数去除了镜头畸变带来的影响,在此基础上利用标定所得内外参数进行极线校正即可使相机达到理想状态[12-13]。极线校正结果如图5 所示。

图5 极线校正

立体匹配的目的是利用图像中某些特征实现左右图像中对应像素点的匹配,最终得到图像视差,本质上是从二维的图像对中得到三维信息。匹配过程可以看作是对图像对之间最大对应概率的求解,并寻求最小复杂度的求解算法(能量最小化)。经典的全局匹配算法通过构造一个能量函数E=Edata+Esmooth(其中,Edata表示图像匹配程度,Esmooth表示定义场景的约束)求得其最小值,以完成图像最佳匹配。对能量函数的最小化求解方法很多,包括动态规划,模拟优化算法,置信度扩展及图割等[13]。

OpenCV 中基于局部及全局匹配原理提供了3 种匹配算法,为找出适合本系统的匹配算法,分别利用BM 算法及SGBM 算法对此前处理后的图像对进行了匹配实验,实验结果显示BM 算法耗时314.132 ms,SGBM 算法耗时189.677 ms。图6(a)为BM 算法匹配结果,图6(b)为SGBM 算法匹配结果。

图6 目标场景深度图

通过图6 中的对比可见SGBM 算法所得深度图更为稠密,其包含的目标场景深度信息也更为完整。基于障碍物探测角度考虑,BM 与SGBM 算法匹配时间均在0.5 s 以内,为系统可接受范围;两种算法匹配所得三维信息都较为准确,但BM 算法所得深度图空洞较多,轮廓较为模糊,丢失了较大一部分信息,而SGBM 算法所得深度图轮廓较为清晰,图像信息保留也较为完整。BM 算法匹配完整度不足会直接影响到后续障碍物分割的效果,故文中选择SGBM 算法进行图像匹配作为后续图像分割的基础。

4 障碍物分割识别

搭载双目系统的运动载体在运动过程中会获取其行进方向上所有静态和动态物体的深度信息,故需对这些深度信息做出判断。首先,需要设定一个障碍物判定标准,通常以行进路线上物体与双目系统之间的距离关系进行定义,即根据双目系统工作范围、运动载体行进速度及运动时的躲避速度设定出一个距离阈值Sm。将运动载体与物体间距离定义为S,视S与Sm之间的关系做出判断,只有当物体与运动载体之间距离S≤Sm且处于运动载体行进路线上时,该物体才会被视作为障碍物。根据实际需求文中设定0.5 m 为障碍物距离阈值,障碍物分割识别需基于此进行判断。设立判断标准后,文中利用数据聚类算法对SGBM 算法获得的深度图进行障碍物分割[14]。

图像分割的目的是将图像区域化从而突出图像中有价值的目标,其实质是对图像像素数据集的聚类处理。K-means 算法是一种数据聚类算法,该算法会将一个大型数据集聚类成k个簇,并通过不断优化调整得到各点与所属簇中心距离平方和为最小值时的最佳簇中心分布[15-16]。但将该算法应用于图像分割时具有一些天然的缺陷,由于此算法必须提前确定聚类数量且聚类数量会直接影响到最终分割效果,通常无法预先估计并给定一个合理值,这极大地制约了算法的准确度;而在算法复杂度方面,由于该算法需要对簇中心不断地进行调整以实现新的聚类,因此,时间复杂度与空间复杂度均较高。

为提高原始K-means 算法的分割效率[17-18],文中改进了其初始中心点的选取方式,改进后算法首先在给定的数据集中随机选取一个点作为第一个簇中心,然后,计算数据集中所有点与所有簇中心之间的最短距离以挑选下一个簇中心点,重复此过程直到选出k个簇中心。此时算法避免了预估聚类数量,最终结果较原算法更为稳定,簇中心选取最坏的情况下复杂度下降,算法效率得到很大提升。利用改进后算法对SGBM 算法所得深度图的分割效果如图7所示。可见改进后算法可以较为准确的在目标场景深度图中分割识别到障碍物。

图7 障碍物分割

5 结论

文中采用双目系统对目标场景进行障碍物分割识别,实验结果表明该系统可较为快速准确的获取目标场景的深度信息,并利用聚类算法实现了最终的障碍物识别,这为系统运动载体的后续避障提供了有效信息,达到了预期的实验目标。但使用SGBM 算法图像匹配得到的深度图中仍存在少数空洞,在纹理性比较弱的场景下会导致误差增大,故在后续研究中需进一步对图像匹配算法做出改进。

猜你喜欢

双目角点障碍物
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
基于双目测距的卡尔曼滤波船舶轨迹跟踪
双目视觉运动目标跟踪定位系统的设计
基于FAST角点检测算法上对Y型与X型角点的检测
基于边缘的角点分类和描述算法
基于圆环模板的改进Harris角点检测算法
基于双目视觉图像的长度测量方法
基于Harris角点和质量评价的图像篡改检测
土钉墙在近障碍物的地下车行通道工程中的应用