当前位置: 首页 > news >正文

车辆单目测距识别 yolov5单目测距 相机标定流程 单目测距RKNN部署

相机模型、相机标定及基于YOLOv5的单目测距实现

1. 前言

注意 此方法不需要预先知道物体尺寸,不需要参照物体!!!!

在摄像头成像的过程中,物体反射的光线通过摄像头的凸透镜聚焦到成像器件上,形成一张二维图像。这一过程将三维世界中的物体转换为二维图像,导致深度信息丢失,因此单目摄像头难以直接进行距离测量。然而,借助某些假设条件(例如假设物体位于地面上),我们可以通过特定方法估算物体的距离。

本文将详细介绍相机模型及其相关参数的标定过程,并探讨如何结合YOLOv5实现单目测距功能。这不仅涉及到理论上的理解,还包括实际应用中的一些挑战和解决方案。

2. 相机模型及单目测距原理
2.1 相机模型

相机模型可以简化为一个凸透镜成像系统,如图所示,其中(X_cY_cZ_c)代表相机坐标系,其原点(O)即为光心,也就是相机凸透镜的中心点;而(x-o_1-y)则构成了图像坐标系。当车辆等物体出现在视场内时,其底部接触地面的点(Q)会映射到图像平面上的一个对应点(Q’)。

在这个场景下,如果已知相机的高度(H)以及相机光轴与水平线之间的夹角(\alpha),并且假设物体位于水平地面上,则可以通过简单的几何关系计算出物体到相机的距离。具体来说,就是利用(Q’)点相对于图像中心的位置来推算角度,进而求解深度(OD)。但是需要注意的是,这种基于假设的方法对于动态环境或不平坦地面的有效性有限。

3. 相机参数标定

为了确保单目测距的准确性,首先需要精确获取相机的内部和外部参数。

3.1 内参矩阵

相机内参指的是相机内部的固有属性,包括焦距(f_x)和(f_y)(沿x轴和y轴方向)、主点偏移量(c_x)和(c_y)(图像中心)。这些参数定义了从相机坐标系到图像坐标系的转换关系:


其中,(u)和(v)表示图像坐标系中的像素位置,而(Z_c)是物体在相机坐标系下的深度。

3.2 内参标定

通常使用张正友提出的棋盘格标定法来进行内参标定。该方法要求拍摄一系列不同角度下的棋盘格图像,并通过MATLAB等工具自动计算出内参矩阵。步骤如下:

打印即可用@@@

  1. 准备一组约20张不同视角下的棋盘格照片。
  2. 使用MATLAB中的Camera Calibration应用程序导入图片并完成标定。
  3. 导出得到的内参矩阵用于后续处理。
3.3 外参矩阵

外参矩阵描述了相机坐标系与世界坐标系之间的相对位置和姿态。它由旋转矩阵(R)和平移向量(T)组成,共同决定了两者间的转换关系:

其中,(R)表示旋转矩阵,(T)表示平移向量。确定这两个矩阵的关键在于明确两个坐标系之间的旋转顺序和平移矢量。

4. 基于YOLOv5的单目测距实现

在实际应用中,我们开发了一个名为estimate_distance.py的Python脚本作为核心程序,其中包含了DistanceEstimation类,实现了目标检测后的距离估计功能。以下是主要的工作流程:

  • 目标检测:利用预训练好的YOLOv5模型对输入视频流或静态图片进行实时检测,识别出感兴趣的物体。
  • 特征提取:对于每个检测到的目标框,提取底部中点作为参考点(Q’),类似于前面提到的测距原理。
  • 距离计算:根据相机内参和外参信息,结合上述几何关系公式,计算出物体的实际距离。

通过这种方式,即使是在单目条件下,也能够较为准确地估计物体的距离,为诸如自动驾驶等领域提供了有力支持。当然,在实际部署过程中还需要考虑更多因素,比如光照变化、物体遮挡等问题,以保证系统的稳定性和可靠性。

代码

def distance(self, k xw=5, yw=0.1): print('\n','=' * 50) print('开始测距') fig = go.Figure() #p外参矩阵, k内参矩阵 p, k = self.camera_parameters(self.excel_path) if len(kuang): obj_position = [] u, v, w, h = k1] * self.W, k[2] * self.H, k[3] * self.W, k4] * self.H # u,v中心点坐标 w,h框宽和框高 print('中心点', u, v) print('框宽/高', w, h) d1 = self.object_point_world_position(u, v, w, h, p, k) distance = 0 print('距离', d1) if d1[0] <= 0: d1[:] = 0 else: distance = math.sqrt(math.pow(d1[0], 2) + math.pow(d1[1], 2))

车辆单目测距识别 yolov5单目测距 相机标定流程 单目测距RKNN部署

http://www.rkmt.cn/news/1414591.html

相关文章:

  • 金蝶云星空与店小秘对接:常见数据筛选类型与过滤逻辑详解
  • 5个实用技巧:打造专业级Canvas签名插件
  • Unity Playable API实战:用Animation Job实现高性能动画混合(含避坑指南)
  • 埃科光电2.5D成像系统,破解精密制造微缺陷检测难题
  • 饲料颗粒机公司
  • 终极Windows硬件指纹伪装指南:EASY-HWID-SPOOFER完全解析
  • 解密音乐枷锁:ncmdumpGUI让网易云音乐NCM文件重获自由
  • 超详细 C/C++ 学习路线分析:学好 C/C++,走遍天下都不怕
  • 革命性三维热力图解决方案:CesiumHeatmap深度整合指南
  • 计算机网络(期末把这个题全练会就过了!)
  • 为什么创业者更需要出书?
  • OpenBoard:保护隐私的终极开源Android输入法实战指南
  • 从零到一:如何用新蜂商城快速构建你的电商帝国
  • 2026支付宝立减金回收操作指南:折扣、渠道、流程全解析 - 可可收公众号
  • LOIC:网络压力测试工具的技术架构与设计哲学深度解析
  • 空中威胁识别 yolo数据集 无人机数据集 多旋翼无人机识别
  • 避坑指南:MariaDB密码插件simple_password_check配置的那些‘坑’与最佳实践
  • 2026北京搬家公司怎么选?政府央企高校都在用的标准化选型指南 - 年度推荐企业名录
  • 如何快速提升GitHub下载速度:国内开发者的终极加速解决方案
  • 打卡信奥刷题(3331)用C++实现信奥题 P9345 夕阳西下几时回
  • 视频PPT智能提取:告别手动截图,3分钟自动化你的课件整理工作
  • 2026年北京搬家公司怎么选?资质齐全、口碑权威的一站式搬迁方案深度对比指南 - 年度推荐企业名录
  • QuickRecorder:3分钟解决macOS录屏难题的轻量级神器
  • [MAF预定义ChatClient中间件-05]动态修改对话配置的两种解决方案
  • 3个技巧:如何用SillyTavern打造你的专属AI伙伴?
  • 从‘形态学’到‘TIN加密’:一文讲透LiDAR点云地面滤波的演进与选型指南
  • 鸿蒙 HarmonyOS 6 | Pura X Max 鸿蒙原生适配 14:大屏弹窗改成侧边面板
  • 新买的SSD移动硬盘到手别急着用!先搞懂exFAT和NTFS怎么选(附T7实测)
  • 企业级AGI商业价值评估与选型白皮书
  • 2026年北京搬家公司完全指南:从居民搬迁到企业运营的全链条对标评测 - 年度推荐企业名录