1 深度信息提取原理在智能车辆单目视觉系统中,相机一般安装于车内后视镜或车顶横向中间位置,而这两种安装位置的投影几何模型及后续图像处理方法并没有明显区别.此外,城市化道路一般较平整,坡度不大,所以基于水平路面假设,以相机安装于车内后视镜处为例,相机安装位置及投影几何模型如图 1所示.当前可以通过测量及车辆检测、行人识别等算法得到的信息为:相机高度h、被测物体在图像上的位置(一般为矩形区域,图像平面如图 2所示,其中矩形ABCD即为被测物体位置).而被测物体在路平面上的实际成像角度α无法根据图像得到,所以也不能得到物体的距离LP(即PQ的长度).
图 1 相机安装位置及投影几何模型Fig. 1 Installation position and projection geometry model of camera |
图选项 |
如果可以建立图像平面中被测物体底部(即图 2中AB所在位置)的像素yP与投影几何模型中实际成像角度α之间的映射关系,即α=F(y),由像素信息得到角度信息,那么图 1中被测物体的距离LP就可以通过边长OQ及角度α算得:
立式标靶如图 3所示,标靶以一定高度竖直放置于地面,靶面上共有17个共线角点,其中最低角点距离地面的竖直高度为1 m,且相邻角点之间相差0.05 m.利用图 3所示的立式标靶确定纵坐标像素与实际成像角度之间的映射关系α=F(y).
图 2 图像平面Fig. 2 Image plane |
图选项 |
图 3 立式标靶Fig. 3 Vertical target |
图选项 |
图 4为基于立式标靶的测量原理图.将立式标靶放置于相机的正前方,采集标靶图像,通过角点检测算法得到各角点在图像上的坐标.由于各角点的实际高度及标靶与相机的水平距离均已知,可得到其对应的成像角度.以图 4中的角点S为例,由ΔOSG可得到其对应的成像角度αS=arctan ,其中,hS为角点S的高度,D在放置标靶时测得.据此建立图像纵坐标像素与实际成像角度之间的映射关系,再结合式(1)得到深度信息.
图 4 基于立式标靶的测量原理图Fig. 4 Measuring principle diagram based on vertical target |
图选项 |
2 立式标靶角点检测及定位由于整个测量过程均是基于利用立式标靶建立图像纵坐标像素与实际成像角度之间的映射关系,所以立式标靶的角点检测精度及定位准确性成为影响测量精度的关键问题.
2.1 立式标靶图像现有车型众多,车内后视镜位置离前保险杠的距离也各不相同,为了在方便定位的同时满足精度要求,立式标靶放置的位置在尽量靠近相机的同时,满足采集的图像中必须包含最低的角点且角点总数大于8个这一要求.由于标靶尽量放置于相机正前方,所以设置标靶角点检测的感兴趣区为图像中间1/3的区域,如图 5所示.
图 5 标靶图像Fig. 5 Target image |
图选项 |
2.2 初始角点检测由于传统的角点检测算法会得到过多的非目标角点,容易受到环境的干扰,所以很难满足标靶图像的角点检测要求.本文设计了一种满足小角度旋转的基于模板匹配的角点检测算法.
2.2.1 模板匹配图 6为4种模板匹配图像,其像素大小都是20×20(此数值可依据图像分辨率的大小适当调整),上下左右平均分为4块,白色部分像素值为255,黑色部分像素值为0.其中,模板1和2用来匹配检测标靶中目标角点的候选点,模板3和4用来匹配检测定位所需的参考点(参考点的定义将在第2.3节中介绍).
图 6 4种模板匹配图像Fig. 6 Four template images for matching |
图选项 |
首先对感兴趣区分块处理,再对每个块运用最大类间方差法进行自适应二值化处理[15],得到感兴趣区的二值图像.在该区域内以逐点匹配的方式检测候选角点,匹配步骤如下:步骤1 图像中待匹配子图与模板进行差值处理(即像素值相同取0,不同取255),得到差值图像,差值处理如图 7所示.
图 7 差值处理Fig. 7 Differential treatment |
图选项 |
步骤2 以n×n个像素作为统计单元(本文中n取7),对差值图像进行统计.判定准则为
式中,m为统计单元中像素值为255的点的个数;T为密度阈值(本文中T取0.32).如果存在满足式(2)的单元则认为此待匹配子图与模板不匹配,否则认为匹配.利用模板1和2匹配检测出角点图像,二值化后目标角点检测结果图像如图 8所示,共检测出89个点.
图 8 二值化后目标角点检测结果图像Fig. 8 Images of target corners detection after binaryzation |
图选项 |
2.2.2 候选点聚类及筛选将所有认为匹配的点作为目标角点的候选点,因为存在相邻多个点都为匹配点或标靶外的区域也存在匹配点的情况,所以为了得到较准确的初始角点,将对候选点集进行聚类及筛选的操作.聚类:遍历所有候选点,将所有点与点之间的横坐标及纵坐标之差同时小于阈值T1(本文中T1取10)的点记为同一小类,各小类的中心点坐标为
式中,∑ X和∑ Y分别为同一类中所有点的横坐标和纵坐标之和;k为此小类中点的个数.筛选:遍历所有小类,将所有中心点横坐标之差小于T1的小类记为同一个大类,然后保留包含小类数目最多的大类,剔除其他大类,并将保留下来的小类的中心点存为初始角点.例如图 8中共检测到89个点,聚类后得到了8个小类,经过筛选只存在1个大类,表 1为保留的初始角点.表 1 保留的初始角点Table 1 Preserved initial corner points
编号 | 坐标 |
I1 | (439,379) |
I2 | (438,335) |
I3 | (439,247) |
I4 | (439,203) |
I5 | (439,158) |
I6 | (439,113) |
I7 | (438,68) |
I8 | (438,23) |
表选项
2.3 角点定位角点定位是指判断检测到的各角点对应的实际高度.3个定位参考点如图 9所示.
图 9 3个定位参考点Fig. 9 Three positioning reference points |
图选项 |
由于存在光线等因素的影响,由图 9与表 1对比可以看出还有角点未检测到.所以,当定位出最低角点后即可将其余角点全部补充完整,最终实现所有角点的定位,过程如下:首先,搜索出初始角点中横坐标最大值xmax,利用图 6中的模板3,以第2.2.1 节中的匹配方法,在坐标小于xmax的感兴趣区域内从上至下、从右至左检测匹配子图,一旦匹配即停止检测,记录坐标(xa,ya),此点即为图 9中参考点①或②.计算xmax-xa,作为角点的间距参考值.然后,在点(xa-(xmax-xa)/2,ya)的左下感兴趣区内利用图 6中模板4从上至下、从右至左检测匹配的子图,一旦匹配即停止检测,点(xb,yb)即为参考点③.最后,如果yb-ya接近xmax-xa的3倍则认为(xa,ya)为参考点①,如果yb-ya与xmax-xa相差很小,则认为(xa,ya)为参考点②.如果没有检测到两个参考点,则需要重新放置标靶再次检测.目前参考点③、初始角点中的最低点及角点的间距参考值均为已知,通过计算参考点③与初始角点中的最低点在y方向上的位置差值,再与角点间距参考值进行比对,即可判断出初始角点中的最低点是否为标靶最低的角点.如果初始角点中的最低点判断为标靶最低的角点,则利用角点间距参考值将其余初始角点补充完整;如果不是最低的角点,则将点(xmax,yb-2(xmax-xa))定位为最低角点,再将其余初始角点补充完整.表 2为初始角点及补充角点的坐标及定位高度,角点C即为补充的定位角点.表 2 初始角点及补充角点的坐标及定位高度Table 2 Coordinates and positioning height of initial corner points and complementary corner point
编号 | 坐标 | 定位高度/m |
I1 | (439,379) | 1.00 |
I2 | (438,335) | 1.05 |
C | (439,291) | 1.10 |
I3 | (439,247) | 1.15 |
I4 | (439,203) | 1.20 |
I5 | (439,158) | 1.25 |
I6 | (439,113) | 1.30 |
I7 | (438,68) | 1.35 |
I8 | (438,23) | 1.40 |
表选项
2.4 亚像素级角点检测为了更精确地提取角点位置,运用openCV中的cvFindCornerSubPix()函数,以初始角点为基准将其更新为亚像素级角点,亚像素级角点检测结果如表 3所示.cvFindCornerSubPix()函数的具体用法见文献[16].表 3 亚像素级角点检测结果Table 3 Subpixel corner point detection results
编号 | 初始坐标 | 亚像素级角点坐标 |
I1 | (439,379) | (438.387 91,378.317 99) |
I2 | (438,335) | (438.592 53,334.891 36) |
C | (439,291) | (438.714 80,290.474 18) |
I3 | (439,247) | (438.826 14,246.784 79) |
I4 | (439,203) | (438.821 87,202.199 31) |
I5 | (439,158) | (438.652 92,157.331 95) |
I6 | (439,113) | (438.432 56,112.366 84) |
I7 | (438,68) | (438.042 79,67.456 29) |
I8 | (438,23) | (437.650 18,22.745 09) |
表选项
3 建立像素与成像角度的映射关系分析图 4可知,当相机和立式标靶安装或放置完毕后,距离D及高度h的值将固定不变,各角点的实际成像角度可通过计算得出.此外,各角点的像素与实际标靶上的角点也已经通过定位一一对应.所以各角点的实际成像角度值与像素值即可完全确定.例如,采集图 8时,距离D=1 500 mm,高度h=1 320 mm,计算得到像素值与实际成像角度的映射关系如图 10所示.可以看出,实际成像角度与y方向像素的映射关系可以近似为一条直线,但是为进一步提高精度,采用相邻点的分段直线来表示映射关系,从而减少拟合误差.
图 10 像素值与实际成像角度的映射关系Fig. 10 Mapping relation between image row pixel values and actual imaging angles |
图选项 |
在计算某像素点对应的成像角度时,需先判断此像素点的y值所在像素值范围,然后利用相邻两点构造的直线方程计算成像角度.例如,当y=210时,利用相邻两点建立的直线方程可求解对应的实际成像角度α为85.095 1°,然后通过式(1)即可求得距离结果.
4 实验验证为验证方法的可行性及精度,在VS2010+OpenCV2.2环境下,按照上述方法编写程序并调试后,分别进行了静态及动态实验.将CCD(Charge-coupled Device)相机安装于车内后视镜处,俯仰角为5°,距地面高度h为1 320 mm,立式标靶的靶面与相机距离D为1 800 mm.图像分辨率为752×480.
4.1 静态实验首先将标靶放置于相机前方,使立式标靶的角点在图像的感兴趣区内.运行编写好的程序,完成角点检测及定位,标靶角点检测及定位界面如图 11所示,亚像素级角点坐标及对应实际成像角度如表 4所示.然后将实验被测物体按不同的距离放置于路面,并记录其实际距离值.选取采集的被测物体图像,手动选取出物体底部位置,通过上述程序运算后得到被测物体的深度信息.部分实验图像如图 12所示,实际距离和计算距离对比如表 5所示.
图 11 标靶角点检测及定位界面Fig. 11 Target corner detection and positioning interface |
图选项 |
表 4 亚像素级角点坐标及对应实际成像角度Table 4 Coordinates and actual imaging angles of subpixel corner points
编号 | 亚像素级角点坐标 | 成像角度/(°) |
1 | (363.838 84,401.420 47) | 79.919 47 |
2 | (364.333 74,364.973 36) | 81.469 30 |
3 | (364.413 33,329.076 60) | 83.031 81 |
4 | (365.247 28,291.402 07) | 84.604 81 |
5 | (365.594 76,254.206 18) | 86.186 00 |
6 | (365.937 74,216.781 45) | 87.773 03 |
7 | (366.441 19,179.210 14) | 89.363 48 |
8 | (366.855 07,142.176 82) | 90.954 77 |
9 | (367.151 34,104.834 32) | 92.544 73 |
10 | (367.534 64,67.900 67) | 94.130 78 |
11 | (367.822 54,30.959 16) | 95.710 52 |
表选项
表 5 实际距离和计算距离对比Table 5 Comparison between actual distance and calculated distance
实际距离/m | y像素值 | 计算距离/m | 误差/% |
5.53 | 479 | 5.549 6 | 0.354 4 |
8 | 384 | 8.025 8 | 0.322 5 |
10 | 341 | 10.043 7 | 0.437 0 |
20 | 253 | 20.069 9 | 0.349 5 |
30 | 224 | 29.836 8 | 0.544 0 |
40 | 209 | 39.840 3 | 0.399 3 |
50 | 200 | 49.854 7 | 0.290 6 |
60 | 194 | 59.887 4 | 0.187 7 |
80 | 186 | 81.842 3 | 2.302 9 |
100 | 182 | 100.207 8 | 0.207 8 |
140 | 177 | 139.631 7 | 0.263 1 |
表选项
图 12 部分实验图像Fig. 12 Part of experimental images |
图选项 |
从测量结果中可以看出,该方法总体误差很小,一般小于1%.由于80 m时误差突然达到2.302 9%,所以又进行了进一步分析.将y像素值调整为187,利用表 4的映射关系,计算得到深度值为78.262 5 m.因此一个像素所占的距离为3.579 8 m,而且这个数值会随着实际距离的增加而变大.所以,距离越远对障碍物检测精度的要求越高,可能的误差也越大.但对于智能车系统,离本车越远危险系数越低,所以测量的精度要求也可以有所降低.总的来说,实验结果显示上述方法已经可以满足系统的要求.
4.2 动态实验为检验此方法的实时性及在实际行驶状态下的效果,进行了动态实验,动态实验图像如图 13所示.实验中采集图像的帧率为15帧/s.实验主要是利用上述方法结合基于机器学习的车辆识别技术实现前方车辆识别及深度信息提取.实验表明,从采集图像到处理完成共消耗不到50 ms,可以满足实时性要求.而且同时与雷达测量结果进行对比发现,两种测量值相差保持在±0.5 m以内,所以此方法也可以满足智能车单目视觉系统准确性的要求.
图 13 动态实验图像Fig. 13 Dynamic experimental images |
图选项 |
5 结 论利用单幅立式标靶图像、焦点检测与定位算法建立了实际成像角度与y方向像素的映射关系.再结合投影几何模型,实现了单目视觉图像的深度信息提取.通过分析与比较,得到以下结论:1) 所设计的依据二值化差值图像统计单元中不匹配点密度的模板匹配算法可快速检测目标角点.结合OpenCV库函数,实现了亚像素级的角点检测及定位,进一步提高了检测精度.2) 利用检测立式标靶中高度已知的角点可建立图像纵坐标像素与实际成像角度之间的映射关系,而且此关系近似于一条直线.3) 上述定位方法只需测量相机高度及相机与标靶的距离,采集一副标靶图像即可,操作简单且测量精度及实时性都可满足智能车辆单目视觉系统要求.本文暂未考虑相机抖动造成的俯仰角变化以及斜坡路面的影响,因此在不平路面及驶入或驶出斜坡之前的工况下测量精度略显不足,还有继续改进的空间.
参考文献
[1] | Xu F F, Wang B,Zhou Z Q,et al.Real-time lane detection for intelligent vehicles based on monocular vision[C]//Proceedings of the 31st Chinese Control Conference.Washington D.C.:IEEE,2012:7332-7337. |
Click to display the text | |
[2] | Sivaraman S, Trivedi M M.Combining monocular and stereo-vision for real-time vehicle ranging and tracking on multilane highways[C]//Proceedings of International IEEE Conference on Intelligent Transportation Systems.Washington D.C.:IEEE,2011:1249-1254. |
Click to display the text | |
[3] | 王浩,许志闻, 谢坤,等.基于OpenCV的双目测距系统[J].吉林大学学报,2014,32(2):188-194. Wang H,Xu Z W,Xie K,et al.Binocular measuring system based on OpenCV[J].Journal of Jilin University,2014,32(2):188-194(in Chinese). |
Cited By in Cnki (258) | |
[4] | Sun W, Chen L,Hu B,et al.Binocular vision-based position determination algorithm and system[C]//Proceedings of the 2012 International Conference on Computer Distributed Control and Intelligent Environmental Monitoring.Piscataway:IEEE Computer Society,2012:170-173. |
Click to display the text | |
[5] | 于乃功,黄灿, 林佳.基于单目视觉的机器人目标定位测距方法研究[J].计算机测量与控制,2012,20(10):2654-2660. Yu N G,Huang C,Lin J.Target location and ranging based on monocular vision robot[J].Computer Measurement & Control,2012,20(10):2654-2660(in Chinese). |
Cited By in Cnki (323) | |
[6] | 吴刚,唐振民. 单目式自主机器人视觉导航中的测距研究[J].机器人,2010,32(6):828-832. Wu G,Tang Z M.Distance measurement in visual navigation of monocular autonomous robots[J].Robot,2010,32(6):828-832(in Chinese). |
Cited By in Cnki (636) | |
[7] | 鲁威威,肖志涛, 雷美琳.基于单目视觉的前方车辆检测与测距方法研究[J].视频应用与工程,2011,35(1):125-128. Lu W W,Xiao Z T,Lei M L.Study on method of preceding vehicles detection and distance measurement based on monocular vision[J].Video Application & Project,2011,35(1):125-128(in Chinese). |
Cited By in Cnki (419) | |
[8] | 战强,吴佳. 未知环境下移动机器人单目视觉导航算法[J].北京航空航天大学学报,2008,34(6):613-617. Zhan Q,Wu J.Monocular vision-based navigation algorithm for mobile robots in unknown environments[J].Journal of Beijing University of Aeronautics and Astronautics,2008,34(6):613-617(in Chinese). |
Cited By in Cnki (863) | |
[9] | 王青. 基于机器视觉的车辆距离测量技术[D].南京:南京理工大学,2008. Wang Q.Vehicle distance measurement technology based on machine vision[D].Nanjing:Nanjing University of Science and Technology,2008(in Chinese). |
Cited By in Cnki (578) | |
[10] | Wu C F, Lin C J,Lee C Y,et al.Applying a functional neurofuzzy network to real-time lane detection and front-vehicle distance measurement[J].IEEE Transactions on Systems,Man,and Cybernetics-Part C:Applications and Reviews,2012,42(4): 577-589. |
Click to display the text | |
[11] | Wu K,Di K C, Sun X,et al.Enhanced monocular visual odometry integrated with laser distance meter for astronaut navigation[J].Sensors,2014,14(3):4981-5003. |
Click to display the text | |
[12] | 王荻,王洁,付小宁. 基于单目图像和方向的测距系统及性能分析[J].光子学报,2011,40(7):1112-1116. Wang D,Wang J,Fu X N.A passive ranging system based on image sequence from single lens and the respective imaging direction along with its performance[J].Acta Photonica Sinica,2011,40(7):1112-1116(in Chinese). |
Cited By in Cnki (239) | |
[13] | 赵信宇,朱晓蕊, 余锦全.单幅图像深度信息的提取[J].制造业自动化,2010,32(3):15-17. Zhao X Y,Zhu X R,Yu J Q.Learning depth information from monocular image[J].Manufacturing Automation,2010,32(3): 15-17(in Chinese). |
Cited By in Cnki (553) | |
[14] | 韩延祥,张志胜, 戴敏.用于目标测距的单目视觉测量方法[J].光学精密工程,2011,19(5):1110-1117. Han Y X,Zhang Z S,Dai M.Monocular vision system for distance measurement based on feature points[J].Optics and Precision Engineering,2011,19(5):1110-1117(in Chinese). |
Cited By in Cnki (1251) | |
[15] | Otsu N. A threshold selection method from gray-level histograms[J].IEEE Transactions on Systems,Man,and Cybernetics,1979,9(1):62-66. |
Click to display the text | |
[16] | 刘瑞祯,于仕琪. OpenCV教材[M].北京:北京航空航天大学出版社,2007:249-250. Liu R Z,Yu S Q.OpenCV teaching material[M].Beijing:Beihang University Press,2007:249-250(in Chinese). |