Carla仿真系列:9_Carla 单目障碍物测距,四种方法原理与实测

第8期做了点云和图像融合,这期聚焦一个经典问题------单目相机怎么测距。只有一路相机(没有激光雷达、没有双目),怎么知道前方障碍物有多远?

1 为什么单目测距难

复制代码
双目:两个相机视差 → 三角测量 → 距离
激光雷达:直接测距
单目:只有一张图 → 没有深度信息 → 只能靠"推断"

单目测距的核心:从一张2D图像里"推理"出3D距离,有四种主流方法。

2 四种测距方法

2.1 地平面假设方法

假设地面是平面,已知相机高度和姿态,图像每个像素投影到地平面(Z=0)算出距离。

要素 说明
前提 地面是平面、相机高度和姿态已知
优点 计算简单、实时性好(纯几何)
缺点 坡道就错;目标底部被遮挡时误差大

适用: 平直道路、前方车辆测距(利用车底着地点)。

2.2 迭代投影方法

不假设地面平,迭代搜索最优深度:把物体3D假设投影回图像,与检测框比对,调整深度直到匹配。

要素 说明
前提 知道物体真实3D尺寸(车辆宽1.8m等)
原理 投影-比对-迭代收敛
优点 不需地面假设,坡道鲁棒
缺点 依赖先验尺寸;迭代耗时

适用: 已知尺寸的物体(车辆、行人、路牌)。

2.3 点云融合图像方法

单目图像 + 稀疏点云(激光雷达/双目视差)融合:点云提供精确深度,图像提供语义。

要素 说明
前提 相机与雷达标定好、时间同步
核心 点云投影到图像,取深度
优点 距离准确,不受光照影响
缺点 依赖标定;远处点云稀疏

适用: 主流的"相机+激光雷达"融合方案(第8期做过)。

2.4 单目深度估计方法

用深度学习模型,从单张图像回归每个像素的深度------网络学会从透视、遮挡、纹理推断距离。

要素 说明
核心 网络学习深度先验
优点 稠密深度、无需其他传感器、成本低
缺点 泛化依赖数据
代表 Depth Anything

3 实测

代码里实现了两种可跑的方案(mode 1 和 mode 3):

bash 复制代码
cd /opt/carla_ws/sim_workspace/image_detect
python image_detect_nms_distance.py --mode 1   # 地平面假设
python image_detect_nms_distance.py --mode 3   # 迭代测距
  • mode 1(地平面假设) :计算快,平直路面效果好

  • mode 3(迭代测距) :对已知尺寸物体更准,坡道更鲁棒

    mode1:左侧车辆是13.2m

    mode3:左侧车辆是8.25m

    结论: 在平直的地面的场景,mode1的结果是更准确的,因为他的影响因数就只有接地点的值,但是从目标检测框看是接地点识别是比较准确的。mode3的影响因数就比较多(物体尺寸、迭代阈值设置、物体朝向等),所以误差是很大的。

9_实现单目障碍物测距

4 往期回顾

如果本文对你有帮助,欢迎点赞、关注、收藏

遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。

开源项目地址放在个人主页简介中,欢迎前往查看。

相关推荐
Microvision维视智造1 小时前
产品尺寸一年一换,视觉系统能跟几次?
人工智能·计算机视觉·机器人·视觉检测·机器视觉
计算机编程-吉哥1 小时前
脑肿瘤MRI智能识别系统:基于深度学习的像素级脑肿瘤语义分割平台【计算机毕业设计选题推荐】
人工智能·python·深度学习·算法·毕业设计·课程设计·大数据毕业设计选题推荐
小木_.1 小时前
Python 离线识别滑块缺口距离,项目推荐
开发语言·python·滑块识别·人机验证·滑块缺口·缺口识别
Cenxi1 小时前
Python字符串方法练习手册
人工智能·python
liliangcsdn1 小时前
因子权重矩阵处理-因子权重收缩Shrinkage算法的探索
开发语言·python·机器学习
用户8356290780511 小时前
使用 Python 在 Excel 中添加和编辑形状
后端·python
2601_962300472 小时前
python在运维上可以干什么,请举几个具体的例子
运维·python·系统管理·网络监控·自动化脚本
小刘在重生~2 小时前
Java 异常体系完整笔记
java·笔记·python
用户8356290780512 小时前
使用 Python 为 PDF 添加和管理超链接
后端·python
千千寰宇2 小时前
[Python/测试] pytest:简洁、可扩展的 Python 测试框架
python·软件质量保障与测试