杨慧闻 张嘉琪
1(中核地矿科技集团有限公司 北京 100013) 2(天津理工大学环境科学与安全工程学院 天津 300384)
当前,车辆驾驶技术已经由L2辅助驾驶技术(包括碰撞预警、车道偏离预警、行车记录、倒车雷达等)向L3受条件约束的自动驾驶技术(主动干预、主动刹车、行人识别、车距检测)方向发展。统计资料显示,若在公路交通事故发生前的1.5 s给驾驶员发出预警,则可避免90%的人类车辆事故[1]。
为使车辆主动安全预警系统发出有效预警信息,对于行车障碍物的准确识别及距离检测则显得尤为重要。在距离检测的研究中,有利用脉冲飞行时间原理的激光雷达测距,有利用单孔成像原理的单目测距,也有利用雷达、超声波等传感器通过监测车辆的自身状态预测汽车碰撞情况,进行辅助驾驶。初期的辅助技术以被动式预警为主,当监测到车辆遇到潜在危险时,会发出报警声提醒驾驶者注意车辆周边状况,但是当前的ADAS(高级辅助驾驶技术)[2]为了实现车辆的主动式安全,即识别障碍物使车辆进行主动刹车,采用较多的是基于双目视觉技术的测距系统,相较于人眼只能取得主观的判断,该技术可以利用计算机读出精确的数据,更加客观地反映三维世界中的距离;对比于早年提出的单目系统,双目立体视觉所需的对比样本数据更少,只需要通过两幅图像就能读取出视差信息,从而测量物体的远近,精度高、实时性强因而泛用性也更强;相较于传统的测距工具(如雷达、激光),双目测距系统从安装到标定再到投入使用所需要的工序少,更少的环节变相提高了系统的使用精度(人为操作的误差率降低),而且双目测距系统的养护频率低,从而避免了人力物力的浪费。因此,本文设计一种基于LabVIEW的双目测距系统,并在软件平台编写图像的立体匹配程序,获取图像深度信息,并对多组数据分析误差率,验证了可以在特征明显的ROI区域测距误差率保持在2%左右,证明了所设计的基于LabVIEW的双目测距系统的可靠性。
双目视觉测距基于相似三角形原理,即在理论成像模型中空间一点P在左右相机的像面上成像关系如图1所示,右成像点Pr经过对称在另一个成像面上的成像点为Pr1,则Pl到左像面左侧距离Xl与Pr到右像面左侧距离Xr的差值(Xl-Xr)即为视差d,两相机光心为Ol、Or,利用两个三角形(△PPlPr和△POlOr)相似,设Pl到Pr的距离为dis,可以得出所求深度(即距离)Z的公式如下:
图1 空间点p在成像面的成像点
dis=T-(Xl-Xr)
(1)
d=Xl-Xr
(2)
(3)
(4)
式中:d为视差,单位为像素尺寸pixel,在计算时需要乘以pixelsize(像素尺寸),要求得像素尺寸,则需要建立像素坐标与图像坐标系的关系;f为相机焦距;T为两台相机光心距离。
在世界坐标系与相机坐标系的转换中属于刚体转换,涉及到的转换为旋转和平移,可以用旋转转矩R和平移矩阵T来描述,设转换前空间一点P的坐标为P(Xw,Yw,Zw),转换后的P点坐标为P(Xc,Yc,Zc),转换公式如下:
(5)
转换为矩阵式为:
(6)
式中:旋转矩阵R为3×3矩阵;平移矩阵T为3×1矩阵。
像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样,两个坐标系间的关系如图2所示[3]。
图2 像素坐标系与图像坐标系
相机的光心在成像面上的投影点为图像坐标系的原点,如图2中的O-XY坐标系,而像素坐标系的原点为成像面的左上角边缘点,即O-UV坐标系,单位分别为mm和pixel,前者为物理单位,后者为像素单位。图2中p为空间任一点,其在坐标系中为p(x,y)。两个坐标系间的转换关系如下:设dx和dy分别表示每个像素点的行和列代表的实际尺寸为多少mm,即1pixel=dxmm。假设像素点坐标(u0,v0)为图像坐标中心,可以列出方程组:
(7)
(8)
从相机坐标系到图像坐标系,属于透视投影关系,从3D坐标系转换到2D坐标系。如图3所示,利用△ABOc与△OCOc相似和△PBOc与△pCOc相似可以得到:
图3 相机坐标系与图像坐标系
(9)
(10)
(11)
通过以上四个坐标系的转换就可以得到一个点从世界坐标系与像素坐标系的转换关系如下:
(12)
式中:第一个矩阵内为像素坐标系与图像坐标系间关系,为相机内参,第二个矩阵内为世界坐标系与相机和图像坐标间的关系,为相机外参,相机内外参通过相机标定即可得到。由式(12)可求出空间一点P的理论三维坐标及深度Z计算公式如下[4]:
(13)
式中:x、y、z即为空间一点P的理论三维信息,通过图像匹配获取视差d和双目相机的内参矩阵和外参矩阵,从而计算出x、y、z的值。
在LabVIEW平台编写软件用到的图像匹配算法为灰度值金字塔算法[5],该算法使用归一化相关度作为核心特征。图像匹配过程分为学习和匹配两个阶段。在学习阶段,算法会从模板图像中获取该图像的灰度值和边缘梯度信息,将学习到的信息进行暂时存储[6]。在匹配阶段,灰度值图像匹配算法会从被匹配图像中获取该图像的灰度值,通过在检测图像中定位归一化相关度最高的区域来开始匹配。
基于灰度值的归一化相关度算法[7](Normalized Cross Correlation,NCC)是在图像中寻找匹配模板的最常用方法,利用子图与模板图的灰度,通过归一化的相关性度量公式来计算二者之间的匹配程度。为了提高匹配过程的速度,需要减小图像的大小并限制匹配的图像区域,采用金字塔匹配算法是提高匹配速度的一种常用方法。当图像中的图案没有缩放或旋转时,归一化相关度法可以检测到相同大小的图案甚至最大旋转角度为5°到10°的图案[8],当匹配图像方式旋转之后,图像匹配会变得更加复杂,此时如果可以从图像中提取有关图像旋转的参数,则可以简单地旋转模板再进行相关匹配会简单很多,在软件设计时,增加图片旋转操作,以保证在匹配的开始,两幅图像在理论上没有旋转角度,降低匹配时间。设S为k×l的实时图,T为m×n的模板图,模板T在图像S上遍历,将在(i,j)位置覆盖的子图记作Si,j,则子图Si,j与模板T之间的归一化相关度RN(i,j)计算式如下:
RN(i,j)=
(14)
式中:E(Si,j)、E(T)分别表示(i,j)处子图、模板的平均灰度值;Si,j(m,n)和T(m,n)分别为搜索子图和模板在位置(m,n)处的灰度值。在对实时图按一定顺序遍历搜索后,计算每一个子图位置的相关度,具有最大相关值的子图位置即为最佳匹配位置。
金字塔搜索算法是通过减小图像和模板的大小,以提高ROI(手动框选的图像匹配区域)图像匹配的时间[9]。该算法使用了高斯金字塔的方法将图像和模板取样到较小的空间分辨率,这种方法每隔一个像素采样一次,因此图像和模板在每个连续的金字塔级别上都可以减小到其原始大小的四分之一,如图4所示。
图4 金字塔算法将图像缩小到原先1/4的效果图
在金字塔算法的学习阶段,该算法自动计算给定模板的最大金字塔级别,并储存表示模板所需的数据及其在所有金字塔级别上的版本。该算法会试图找到一个最佳的金字塔层次(基于对模板数据的分析),这将提供最快和最准确的匹配,同时可以使用灰度值(基于像素强度)作为特征。该方法利用归一化像素灰度值作为特征,这样做可以确保不遗漏任何信息,这在模板不包含结构化信息,但具有复杂纹理或密集边缘时非常有用。
金字塔算法在匹配阶段使用从粗到细的方法[10],以尽可能低的分辨率(最高的金字塔级别)开始搜索,即从实时图Sk和模板图Tk开始进行匹配,在Sk所有的搜索位置上与Tk进行相关运算,得到粗匹配位置(xk,yk)。由于在该分辨率下,搜索的图像和模板的大小已经显著减小,因此计算速度很快且可以执行基于穷举的相关性搜索,相对而言从粗到细的匹配已经消除大量的冗余计算。但此时相关度值较低,可能会产生多个粗匹配位置,然后将具有较高分辨率即较低一层金字塔层的图像Sk-1和Tk-1进行进一步匹配,即只需在粗匹配位置进行相关运算即可,确定相对精确的匹配位置(xk-1,yk-1)。以此类推,直到在最高分辨率的实时图S0和模板T0上找到精确匹配位置为止[11]。这种方法将所有后续搜索限制在最佳匹配候选对象周围的小的局部区域,从而显著提高了速度。
为使金字塔算法匹配中获得最佳性能,通常可以进行以下调整。
(1) 搜索旋转模式时,使用“角度范围”设置将搜索限制为最小角度范围,以提高性能并减少内存消耗。例如,如果已知匹配仅从基准位置略微旋转,则-10°到10°的角度范围就足够了。
(2) 该算法会根据请求的匹配次数和最小匹配分数自动处理从粗到细的匹配。配置以获得程序速度和准确性的最佳组合。
(3) 最小对比度设置指定一个区域必须显示的最小对比度值,才能被视为候选区域。在图像背景中存在显著的低对比度或零对比度区域(均匀区域)时,使用此功能可提高速度。
基于灰度值金字塔算法的双目测距系统的软件设计[12]是利用NI公司的LabVIEW工程可视化编程软件。软件程序包括图像旋转、图像查找、图像提取、图像匹配[13]、像素坐标系、相似度值、立体视觉工作台(即步进电机控制程序)、图像ROI拾取及ROI区域像素值、x和y像素差等功能。软件中的匹配参数包含有相似度阈值(即低于此相似度时,认为图像匹配未成功)[14]、图像匹配的相似度值(从0~1 000,0为不匹配,1 000为完美匹配);同时程序右下角单独显示有手动选取的图像ROI,也有图像ROI的匹配簇[15](以像素坐标表示,位置对应图像的左上角的角点坐标为初始零点坐标),ROI图像匹配的x、y坐标的像素差(此像素差和像素坐标即为双目测距计算深度信息的数据),图像匹配采用屏幕ROI拾取方式,基于以上功能设计的LabVIEW测距软件的程序前后面板如图5-图9所示[16]。
图5 双目视觉测距系统软件程序前面板(操作界面)
图6 步进电机驱动程序前面板(操作界面)
图7 LabVIEW软件编写图像匹配及测距程序框图
图8 LabVIEW程序for循环中的for结构截图
图9 LabVIEW软件编写步进电机驱动程序框图
双目测距系统硬件由步进电机、两台海康威视Smart265 4K相机、行程开关、USB转R485转换器、笔记本电脑(Windows 10操作系统、i55处理器、8 GB内存)构成。相机平移控制程序由LabVIEW中编写的立体视觉平台子VI控制,将左目相机固定右目相机由步进电机控制移动,可以操纵步进电机在任意位置停止进行拍摄,实物搭建图如图10所示。
图10 双目测距系统实物搭建图
仿真实验在实验室进行,为避免实验偶然性,均采用实验室普通常见物件作为双目测距的标志物,所选用的标志物有笔筒、3D耗材盒子、工控机盒子、自制标定板、502胶水瓶2个、小蓝盒子及收纳盒,均为随机选取进行测距实验。取左目相机一台固定于滑轨一侧上,使用步进电机进行驱动,保证右目相机在同一水平线上平移,且两台相机同一型号保证相机内参相同,滑轨经过标定后测得,步进电机每驱动1 000个单位,相机平移8 cm,取5幅连续照片(第一幅为右目拍摄照片,第二至第五幅照片为右目每平移8 cm所拍摄的图像)进行双目测距仿真实验并进行数据分析,软件运行及图像匹配时程序如图11所示,通过式(5)进行计算,汇总结果如图12-图15所示。
图11 仿真实验右目相机连续平移4次,每次8 cm拍摄的标识物图像
图12 双目测距系统软件运行时的实时系统界面截图
图13 理论测距实验数据及与实际距离对比图
图14 测距系统测距误差率汇总
图15 测距系统左右目图像匹配相似度图
针对双目视觉测距系统的软件设计,通过仿真实验对测得五组数据进行统计分析,实验结果表明:
(1) 在图像相似度值上,本文匹配结果与蔡秀梅等[17]关于匹配方法研究中的结果相比较,其中鲁棒精确匹配算法匹配值达到982.4,其他鲁棒LBP算法、改进的harris算法、harris算法匹配值分别为902.7、888.7和638.2,本文的相似度匹配值在特征清晰、纹理复杂的标志物时均能达到950以上,在其他较弱纹理区域匹配值在900左右,表明本文系统基于灰度值金字塔双目图像匹配结果可以用来计算视差值。
(2) 在软件测试中通过进行自身对照,图像匹配相似度数据显示,程序设计存在系统误差,系统像素误差为0.5 pixel,可以在计算过程中进行提前消去以避免影响结果。此外,出现一组匹配相似度结果为614的偶然误差,可能是选择ROI区域时选择不当,属于操作失误,在考虑误差率时可以不考虑该组数据。
(3) 由图13-图15实验数据可得出,从右目平移8 cm到32 cm的4组数据中,随着相机间距离T的增加,像素差ΔX也在增加,符合式(3)的正相关情况。在焦距不变情况下,随着相机间光心距T增加,误差率也随之增加,误差率与光心距符合正相关关系。
(4) 由图15可知,相似度值与特征点选取有关,本次实验随机选取的8样常见标志物各自区域灰度值纹理复杂度相差较为明显,其中墙面为无纹理或弱纹理区域接近纯白,灰度值接近255(灰度等级0~255,0为黑色,白色为255),匹配难度最大,相似度值均在900以下,匹配误差率明显最大。其次小蓝盒子由于数量较多及灰度值相差并不明显,故匹配误差率仅次于白色墙面。此外标定板和502盒子灰度值最小,特征最为明显,匹配相似度值最高,误差率最小。由此可知,在双目测距选取测量标志物时,选择接近于标定板这样纹理明显且复杂度较高的物体时图像匹配相似值较高,误差较低。
(5) 本次仿真实验虽然每组数据选择标志物的ROI区域不完全相同(右目相机移动图像识别区域产生遮挡和每次所选区域不能100%相同),但是误差率均能达到5%以下,甚至对于特征点明显的标志物测距误差率低至了2%左右,且保证图像匹配的相似度值均达到了900以上,充分检验了灰度值金字塔算法在图像匹配ROI处理时的可靠性,且验证了基于LabVIEW的双目视觉测距系统设计达到预期效果,未来在更多场景的测试后有可能实现车载系统的应用,用来解决行车障碍物及车距的精确测量。
本文通过设计双目视觉测距系统及进行仿真实验,论证基于灰度值金字塔算法的图像匹配程序的可靠性,未来在更多场景的测试后有可能实现车载系统的应用,用来解决行车障碍物及车距的精确测量问题,为未来车辆L3级自动驾驶的主动安全系统提供一种解决方案。