一.项目背景
目前在研究激光雷达和相机做障碍物检测算法开发,主要应用场景为远距离下的目标障碍物检测。
二.主要实现算法
本次主要实现了三种算法,具体实现后期补充,先进行算法的梳理和记录:
1.纯点云数据处理,当测量距离比较近的时候,点云稠密度高,且点云的z轴代表了目标的距离,可以利用PCL库对点云数据进行处理,通过聚类实现目标提取和测距。
原始点云:
处理后,使用addcube加入立体检测框:
2.激光雷达和相机的联合标定,当测量距离远,点云密度开始降低,之间分析点云相对困难,可以通过目标检测算法识别目标,再通过点云投影到图像中,在目标检测框内的点云为当前目标的距离。
3.双目立体视觉,距离远,点云几乎没有时,可以通过双目视觉算法获得距离+目标检测获取障碍物的目标大小,需要进行双目视觉的标定。可通过立体匹配或者特征匹配算法进行处理
(1)特征匹配算法
特征匹配后,直接左右x相减,获得视差值。带入公式计算距离。
(2)双目视觉处理后的视差图转点云图:
视差图:
点云图:
对点云图进行点云算法处理,降采样,聚类等操作,获得目标。
三.技术路线
1.纯点云数据处理
算法步骤包括:
(1)点云限界处理
(2)点云降采样
(3)点云分割
(4)点云聚类
(5)绘制立体边界框
2.激光雷达和相机的联合标定
算法步骤包括:
(1)使用棋盘格进行标定;
(2)使用cloudcompare对点云进行处理,将棋盘格点云数据分离出来,提高联合标定的准确率和精度;
(3)使用matlab对相机进行单目标定,获得相机的内参和畸变系数;
(4)使用matlab进行激光雷达和相机联合标定,获得tform下的旋转、平移矩阵。
(5)使用(3)(4)获得的参数对点云进行投影,当在图像中获得目标位置时,查看当前目标框内是否存在点云数据,使用该区域内的点云数据z值作为距离。
3.双目立体视觉算法
算法步骤包括:
(1)采用平行式双目立体视觉方法,两个相机相互平行,相机参数相同;
(2)制作大的标定板,最好覆盖整个相机视野的一半以上,两个相机各自采集大于20张图的数据。
(2)使用matlab对两个相机的图像进行联合标定,获得相机各自的内参、畸变系数和共有的旋转、平移矩阵;
(3)使用opencv对(2)中获得的参数进行应用,对两图像进行立体校正,保证y在同一个位置
(4)立体校正完成后,使用立体匹配算法获取视差图,视差图获得到可以进行两个方向的研究:
第一个是将视差图转换为点云图,采用1中纯点云算法提取目标;
第二种是通过特征匹配ORB、SURF算法匹配YOLO目标检测后两个相机的图像目标,由于已经做过立体校正,直接计算x方向的差(即视差值)就可以直接得到距离。
四.注意事项
1.激光雷达的测量范围有限,在测量距离>100米时,采用双目处理效果更好;
2.测量距离近时,可以根据点云稠密度选择纯点云数据处理和激光雷达+相机;
3.标定板的制作和选取根据测量距离进行调整,经过前期大量的标定和实验,建议标定板制作大一些,特别是远距离测量时,我使用的标定板每一格是400 * 400mm的,大小在2米 * 5米
4.标定过程中,尽量覆盖整个相机视野位置,不同角度、倾斜、翻转标定板采集图像;
5.matlab中删除投影误差较大的图像,如果采集数量太少,会导致最后能用的图过少,标定结果不准确。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/164429.html