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 往期回顾

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

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

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

相关推荐
happylifetree8 分钟前
Python17:核心语法-数据存储与运算-输入与输出
python
AOI小白新手上路18 分钟前
深度学习模块缝合方法论 · 人物蒸馏笔记
人工智能·笔记·深度学习
梅雅达编程笔记18 分钟前
04-Python CSV数据保存与翻页抓取
开发语言·爬虫·python·pandas·数据采集·csv
估值探索者31 分钟前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口
Eric7733 分钟前
塞梅普雷斯 如是说 (第二部/11.因果)
经验分享
个 人 练 习 生34 分钟前
C++:模板初阶详解
开发语言·c++·经验分享·学习
梦帮科技42 分钟前
多任务权重流形融合:SLERP 球形线性插值、DARE 稀疏剪枝与多专家模型融合落地
人工智能·深度学习·算法·机器学习·tensorflow·聚类·剪枝
Yolanda_20221 小时前
17.卷积操作
人工智能·深度学习
`流年づ1 小时前
卷积核与反卷积知识补充
人工智能·深度学习·计算机视觉
oooost1 小时前
Jupyter Notebook 常用快捷键速查
ide·python·jupyter