单目测距(yolo目标检测+标定+测距代码)上

简介: 单目测距(yolo目标检测+标定+测距代码)

目录


单目测距(目标检测+标定+测距)**

5.1 单目视觉测距与双目视觉测距对比**

5.2 相机成像模型**

5.3 坐标系转换

5.4 相机内外参数与畸变系数

5.4.1相机内外参数

5.4.2相机畸变系数

5.5 相机标定流程

5.6 单目测距模型

5.6.1目标点的选取

测量结果

代码


正文


单目测距(目标检测+标定+测距)**


   实时感知本车周围物体的距离对高级驾驶辅助系统具有重要意义,当判定物体与本车距离小于安全距离时便采取主动刹车等安全辅助功能,这将进一步提升汽车的安全性能并减少碰撞的发生。上一章本文完成了目标检测任务,接下来需要对检测出来的物体进行距离测量。首先描述并分析了相机成像模型,推导了图像的像素坐标系与世界坐标系之间的关系。其次,利用软件标定来获取相机内外参数并改进了测距目标点的选取。最后利用测距模型完成距离的测量并对采集到的图像进行仿真分析和方法验证。


5.1 单目视觉测距与双目视觉测距对比**


测距在智能驾驶的应用中发挥着重要作用。测距方法主要包含两类:主动测距与被动测距,主动测距是当前研究的热点内容之一。主动测距方法包括采用传感器、摄像机、激光雷达等车载设备进行测距。摄像头由于价格相对低廉且性能稳定应用较为广泛,本文采用摄像头进行距离测量。

单目测距主要运用测距模型结合目标矩形框来进行测距任务,通过目标在图像中的大小位置信息去估算距离。单目测距算法具有计算量小、成本低廉的优点,并且测距误差也可以通过后续的调校来消除,很多算法都在采用基于单目视觉传感器来开发产品。因此相对其他测距方法,单目视觉有更成熟的算法,本文亦采用单目视觉测距。

利用双目视觉可以获取同一物体在成像平面上的像素偏移量。然后可以使用相机焦距、像素偏移以及两个相机之间的实际距离从数学上得出对象之间的距离。与单目测距相比,双目测距虽然更加精确,不需要数据集,但计算量大,速度相对较慢,而且由于使用了两个摄像头,成本也变得更高。


5.2 相机成像模型**


想要得到距离信息需要获得三维真实世界里的点,而由于处理的对像是摄像头捕捉后的二维平面图像,因此如何将二维图像上的某个点转换为三维世界里的点是值得考虑的问题。进一步的,把图像上的点转换到真实世界的点,就需要进行像素坐标系、图像坐标系、相机坐标系以及世界坐标系之间的相互转换。四种坐标系之间的相互关系如图5-1所示。坐标系描述如下:

e4c00540d6dc22c4e75ce1748632f291_ab82aa6fd5ee47d0b76fb7c9b2d66939.png

(1)像素坐标系。数字图像一般是三维图像并且由众多像素点组合而成的,像素坐标系的原点为O2,以宽度方向为u轴,以高度方向为v轴。


(2)图像坐标系。图像坐标原点为O1,并且像素坐标系和图像坐标系是平行的,以图像宽度方向为x轴,以高度方向为y轴,长度单位为mm。


(3)相机坐标系。相机坐标系原点Oc,Xc轴、Yc轴分别是与图像坐标系下的x轴、y轴相互平行,相机Zc轴和摄像头光轴重合。


(4)世界坐标系。我们所处的环境即是在世界坐标系之下,也就是图5-1中Xw-Yw-Zw平面。Pw通过真实世界上的一点至图像上的P点,完成从世界坐标到图像上坐标的转换。


5.3 坐标系转换


(1)像素坐标系转换到图像坐标系


像素坐标系是以像素来表示各个像素位置信息的,但是它不能够表达出图像中物体的物理大小,因此需要进行坐标系之间的转换。

e9161724cafa1d2907e29c43db7104f0_60a2fec51c464e3187fbfaa52069e55a.png

                图5-2 图像坐标系

在图5-2中,图像坐标系的坐标(x,y)与像素坐标系的坐标(u,v)之间的关系可以表示为:

0058c91c62733e83fc534af4f918ba67_d3e73ddbee514089bff0441266742401.png

(5.1)

式(5.1)中,(u0,v0)是图像中心的像素坐标,dx、dy分别是横向和纵向像素在感光板上的单位物理长度。

写成齐次坐标矩阵的形式为:

b879cc7e071f9844336f2860c212ee95_21f5fe615f414020adb44d2c9dbd9b1b.png

  (5.2)


# (2)图像坐标系变换到相机坐标系


a2ef1d531199f7a340a3de3cc3d41fad_8ff9a415994b4716b81605c08ee3f6b0.png

                       **图5-3 相机坐标系**

在图5-3中,OcO1之间的距离为焦距f。图5-4表示了物体成像到图像坐标系的过程,P点、 P'点分别为相机坐标系和图像坐标系下的坐标。

e1498be4004f1b23c00d06ad73464073_9868e7cc6cf942fdae530e4a3eb7959f.png

图5-4 相似三角形模型

由上图易知,三角形OcO1B和三角形OcCA相似,三角形OcBP'和三角形OcAP相似,根据相似三角形原理有:

3db2d1f181908063465e1d798ea5c9e1_d869fbdc8e9d4e7487ecc643ac72d7b4.png

  (5.3)

并且OcO1的距离为焦距f,结合P(Xc,Yc,Zc),P'(x,y)点坐标,上式可写为:

cf04ae55f22a0405d67891cd88921613_e13f5d9d4f444c79ad8e74fa582e18b0.png

  (5.4)

进一步推倒可得:

dca33c13590bb3aef1bc7a8f6d5cfedb_27f8253c24e24ea4b5f916d4cd3e4507.png

将其写成齐次坐标矩阵的形式为:

5ee5f872435eaad362d4e8fcb47f6203_d3afc9a128a945be9ce993e83934cd59.png

  (5.5)


(3)相机坐标系变换到世界坐标系


8d3829b254ad88d8e4cdc836334562f8_0645852a0ec14d36b26b55182f6bc6f0.png

                **图5-5相机坐标系到世界坐标系的转换**

相机坐标系变换到世界坐标系可以描述为一个旋转平移的过程,分别将旋转和平移的分量加起来就是整个坐标系转换的全过程了。对于旋转过程,假设相机坐标系的Z轴与世界坐标系重合,那么有:

f548b990c9cc03033aaedb21a256a1c6_f555ce9df7bf4ed9a66b1cbcbd545eb3.png

  (5.6)

同理,绕X轴旋转会得到如下关系:

7a48040c6e9942a38e6cf3479164a3a5_eb63bd993b6c4b068484f53ab1999ab5.png

  (5.7)

绕Y轴旋转会得到如下关系:

5b861fc4487abf864679d0cb57359773_e3bd3bd0ebe94f748bd9dd50be78d9be.png

  (5.8)

对于平移分量来说,可以表达为:

4dd1bb691e2358d6163d72e0fcb64d0b_5e001353a4c14675ae1d149c5b0f2e2f.png

  (5.9)

得到平移向量和旋转矩阵后,从相机坐标系变换到世界坐标系的公式可以完整的写为:

c30d94f019dc6f871b1faeca29874ba4_2fc9e104911b41fb857941135e385d8b.png

  (5.10)

其中旋转矩阵R为:

2cb26051090657af4e21fb514bcf6163_a8daa2c73a9e44d4ba958eed7ee7378f.png

,平移矩阵T表示为:。结合式(5.2),式(5.5),式(5.10),就完成了从像素坐标系到世界坐标系的转换,整合起来为:

9cc83ee839f0e34d43f85e1171cfb092_0738536f34f34a869b3feadf7b4e6451.png

  (5.11)

这样针对图像上的一个点,就可以利用上述公式结合相机内外参数求解出具体的距离值。

相关文章
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
|
算法 计算机视觉
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
|
计算机视觉 Python
Yolov5双目测距-双目相机计数及测距教程(附代码)
Yolov5双目测距-双目相机计数及测距教程(附代码)
|
机器学习/深度学习 编解码 监控
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1
|
传感器 机器学习/深度学习 编解码
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
目相机使用来自单个视点的图像数据作为输入来估计对象深度,相比之下,立体视觉是基于视差和匹配不同视图的特征点,深度学习的应用也进一步提高了准确性。此外,SLAM可以建立道路环境模型,从而帮助车辆感知周围环境并完成任务。本文介绍并比较了各种目标检测和识别方法,然后解释了深度估计的发展,并比较了基于单目、立体和RGB-D传感器的各种方法,接下来回顾并比较了SLAM的各种方法。最后总结了当前存在的问题,并提出了视觉技术的未来发展趋势。
最新综述!基于视觉的自动驾驶环境感知(单目、双目和RGB-D)
|
编解码 前端开发 算法
基于OpenCV的双目摄像头测距(误差小)
首先进行双目摄像头定标,获取双目摄像头内部的参数后,进行测距;本文的双目视觉测距是基于BM算法。注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小)。
12374 3
基于OpenCV的双目摄像头测距(误差小)
|
10月前
|
机器学习/深度学习 数据可视化 算法
YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
1754 7
YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
22214 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
机器学习/深度学习 人工智能 算法
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
X-AnyLabeling是一款集成了多种深度学习算法的图像标注工具,支持图像和视频的多样化标注样式,适用于多种AI训练场景。本文将详细介绍X-AnyLabeling的功能、技术原理以及如何运行该工具。
3101 2
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
|
人工智能 自然语言处理 自动驾驶
Qwen-Agent:基于Qwen 2.5模型的智能Agent构建与应用
Qwen-Agent:基于Qwen 2.5模型的智能Agent构建与应用
3232 20