单目相机测距-距离检测
单目相机测距-距离检测
3.距离检测
使用单目相机对车辆进行测距流程主要流程如下图所示
实现基于单目相机的距离检测系统,通过拍摄视频或照片,对场景中的车辆进行检测,并计算其与相机的距离。系统流程包括相机标定、车辆检测、数据预处理、模型训练、图像处理和距离检测等环节。
3.1计算消失点、视场角、俯仰角和偏航角
计算消失点、视场角、俯仰角和偏航角,以确定车辆与相机的相对位置。根据这些角度,计算车辆的垂直距离和水平距离。最后,根据总距离公式,计算车辆与相机的总距离。消失点、视场角、俯仰角和偏航角是单目相机测距系统中用于确定车辆与相机相对位置的关键概念。以下是这些概念的原理:
消失点(Vanishing Point):
消失点是图像中平行线在远处汇聚成的点。在二维图像中,平行线看起来会在无穷远处汇聚于一点,这个点就是消失点。在道路或铁路等场景中,车道线通常是平行的,因此可以通过检测车道线的消失点来确定相机的位置和方向。视场角(Field of View, FOV):
视场角是相机能够捕捉到的场景范围。对于单个相机来说,视场角越大,能够捕捉到的场景范围就越广。通过知道相机的视场角和图像中物体的尺寸,可以估算出物体与相机的大致距离。俯仰角(Pitch Angle):
俯仰角是指相机相对于水平面的倾斜角度。在单目相机系统中,俯仰角可以用来确定相机与地面的垂直距离。通常,俯仰角可以通过相机的姿态传感器或者通过图像处理方法(如特征匹配)来获取。偏航角(Yaw Angle):
偏航角是指相机相对于北方向的旋转角度。在单目相机系统中,偏航角可以用来确定相机与车辆的相对水平位置。偏航角也可以通过相机的姿态传感器或者图像处理方法来获取。
通过结合消失点、视场角、俯仰角和偏航角的信息,可以建立一个几何模型来计算车辆与相机之间的距离。例如,如果知道相机的高度和俯仰角,以及车辆在图像中的位置和大小,就可以使用三角测量原理来计算车辆与相机之间的垂直距离。同样,结合偏航角和消失点的信息,可以计算出车辆与相机之间的水平距离。
最终,通过将垂直距离和水平距离结合起来,可以得到车辆与相机之间的总距离。这种方法通常需要相机标定来获取相机的内参和外参,以及通过图像处理技术来提取必要的几何信息。
在相机摆放位置不同时,其旋转的偏航角(yaw)、俯仰角(pitch)和滚动(roll)会发生变化:实际的相机帧和默认相机帧之间的一般旋转可以通过以下方式描述:
首先围绕Zd轴旋转一个角度(称为滚动角度),然后旋转另一个角度(称为俯仰角度)围绕Xd轴,最后是围绕Yd轴的另一个角度(称为偏航角)。如下图所示:
我们知道,车辆行驶轨道或车道线基本上是平行的,但是,如果我们用相机拍摄轨道或道路的图像,我们会发现图像中的轨道线或车道并不平行。这些线在图像中相交的点称为消失点。
使用这种消失点方法来计算相机位姿,实际上我们只能恢复相机的偏航和俯仰,从直觉上讲,消失点方法无法恢复横滚角和平移,因为消失点不受这两种方法的影响!
默认的车辆俯仰角和偏航角横滚角的定义
不同roll角的图像可视化:
roll =20度
roll =0度
roll =-20度
消失点计算的流程如下:
线性特征提取:在场景图像中提取线性特征,如车道线。
线性拟合:对提取的线段进行拟合,得到直线方程。
消失点求交:计算这些直线在无穷远处的交点,即为消失点。
视场角计算:
视场角通常是基于相机内参和图像尺寸来计算的。如果已知相机的焦距和传感器尺寸,可以通过以下公式计算水平视场角(HFOV)和垂直视场角(VFOV):
[𝐻𝐹𝑂𝑉=2arctan(图像宽度2×焦距)]
[𝑉𝐹𝑂𝑉=2arctan(图像高度2×焦距)]
俯仰角和偏航角计算:
如果没有这些传感器,可以通过消失点的位置和相机的内参来估算。例如,消失点在图像中心上方表示相机向上倾斜(正俯仰角),在中心下方表示相机向下倾斜(负俯仰角)。偏航角可以通过消失点相对于图像中心的水平位置来估算。
3.2计算距离
使用三角测量原理计算物体与相机之间的距离涉及到几个关键步骤。以下是详细的原理和计算方法:
物体尺寸测量:
- 在图像中,测量物体(如车辆)的尺寸,这通常是通过物体的边界框或者特定特征点之间的距离来完成的。
实际尺寸与图像尺寸的比例:
- 知道物体在实际世界中的尺寸,将这些实际尺寸与图像中的测量尺寸进行比较,可以得到一个比例因子。这个比例因子表示图像中一个像素对应现实世界中的多少长度单位(如米或厘米)。
基线长度:
- 基线长度是指从相机光心到成像平面的距离,它等于相机的焦距。在单目相机中,焦距通常是通过相机标定得到的内参之一。
视野角度:
- 视野角度是指相机能够捕捉到的场景范围。在单目相机中,水平视场角(HFOV)和垂直视场角(VFOV)可以通过相机内参计算得到。
三角测量原理:
- 三角测量原理是基于相似三角形的原理。在相机和物体之间形成一个三角形,其中相机和物体的位置分别是三角形的两个顶点,而物体的成像位置是第三个顶点。
- 通过测量物体在图像中的位置(高度或宽度),以及相机的焦距和视场角,可以构建一个相似三角形,其中一个边是相机的焦距(基线长度),另一个边是物体到相机的距离(即要计算的未知距离),而图像中物体的尺寸与实际物体尺寸的比例提供了第三个边的信息。
- 使用三角形的比例关系,可以建立一个方程来计算物体到相机的距离。例如,如果物体在图像中的高度是 (ℎ′),在实际中的高度是 (𝐻),相机的焦距是 (𝑓),那么物体到相机的距离 (𝑑) 可以通过以下公式计算:
[𝑑=𝑓×𝐻ℎ′]
考虑俯仰角和偏航角:
- 如果知道相机的俯仰角和偏航角,可能需要对上述计算进行修正,因为这些角度会影响物体在图像中的位置和大小。这通常涉及到一些几何变换和坐标系的转换。
通过上述步骤,可以使用单目相机和图像处理算法来计算物体与相机之间的距离。
参考博客:
1.如何通过图像消失点计算相机的位姿?-腾讯云开发者社区-腾讯云 (tencent.com)
2.消失点(灭点、Vanishing Point)-CSDN博客
3.最简单的OPENCV实现求解单目相机位姿 - 知乎 (zhihu.com)
4.三角测量原理及计算公式介绍 - 百度文库 (baidu.com)