点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

激光雷达成本高,用廉价的立体视觉替代它可行吗?

作者:Jeremy Cohen

编译:McGL

转载自:PyVision

深度学习和计算机视觉在自主系统中已经疯狂地流行起来,现在到处都在使用。计算机视觉领域在过去的十年中发展迅速,尤其是障碍物检测。

像 YOLO 或 RetinaNet 这样的障碍物检测算法提供了2D的边界框,边界框给出了障碍物在图像中的位置。今天,大多数的目标检测算法都是基于单目 RGB 摄像头,不能返回每个障碍物的距离。

为了返回每个障碍物的距离,工程师们将摄像头与激光雷达(LiDAR)传感器融合,激光雷达可以返回深度信息。利用传感器融合技术将计算机视觉和激光雷达的输出信息进行融合。

这种方法的问题是激光雷达很贵。工程师们使用的一个有用的技巧是对齐两个摄像头,并使用几何学来确定每个障碍物的距离: 我们称之为伪激光雷达(Pseudo-LiDAR)。

单目视觉 vs 立体视觉

伪激光雷达利用几何构建了一个深度图,并将其与目标检测图结合起来得到3D距离。

如何利用立体视觉实现距离估计?

为了得到距离,下面是5步伪代码:

1. 校准两个摄像头(内部和外部校准)

2. 创建极线模式(epipolar scheme)

3. 建立一个视差图(disparity map),然后一个深度图

然后将深度图与障碍物检测算法相结合,我们将估计边界框像素的深度。关于这一点的更多信息,请见文章末尾。

我们开始吧!

1. 内部和外部校准

每个摄像头都需要校准。校准意味着将一个具有[X,Y,Z] 坐标的(现实世界)3D点转换为具有[ X, Y]坐标的2D像素。

摄像头模型

今天的摄像头使用的是小孔成像模型。

这个想法是使用一个针孔,让少量的光线通过摄像头,从而得到一个清晰的图像。

如果图像中间没有这个屏障,每一道光线都会通过,图像就会变得模糊。它还允许我们确定焦距 f 用于缩放和更好的清晰度。

为了校准摄像头,我们需要将世界坐标通过摄像头坐标转换为像素坐标。

摄像头校准过程
  • 从世界坐标到摄像头坐标的转换称为外部校准。外部参数称为 R(旋转矩阵)和 T(平移矩阵)。

  • 从摄像头坐标到像素坐标的转换称为内部校准。它要求摄像头的内部值,如焦距,光学中心,...... 内参数是一个矩阵,我们称为 K。

校准

通过摄像头校准得到矩阵 K。

通常,我们使用跳棋盘和自动算法来执行它。当我们这样做时,我们告诉算法棋盘中的一个点(如:0,0,0)对应于图像中的一个像素(如: 545,343)。

校准示例

为此,我们必须用摄像头拍摄棋盘的图像,比较一些图像和一些点之后,校准算法将通过最小化最小平方损失来确定摄像头的校准矩阵。

一般来说,校准是必要的,以消除畸变。针孔摄像头模型包括一个失真:“ GoPro 效应”。为了得到一个矫正图像,校准是必要的。畸变可以是径向的,也可以是切向的。校准有助于消除图像失真。

图像校准

下面是摄像头校准返回的矩阵:

  • f 是焦距ー(u0,v0)是光学中心: 这些是内参数。

每个计算机视觉工程师必须了解和掌握摄像头的校准。这是最基本、最重要的要求。我们已经习惯了在线处理图像,从来不碰硬件,这是一个错误。

——尝试使用 OpenCV 进行摄影头校正。

齐次坐标(Homogeneous Coordinates)

在摄像头校准过程中,我们有两个公式来得到从世界到像素空间的一个点 O:

  • 世界到摄像头的转换

外部校准公式
  • 摄像头到图像的转换

内部校准公式

通过计算,你得到了这个等式:

  • 从世界到图像的转换

完整的方程式

如果你看一下矩阵的大小,它们并不匹配。

因此,我们需要将 O_world 从[X Y Z]修改为[X Y Z 1] 。这个“1”叫做齐次坐标。


2. 对极几何学(Epipolar Geometry)——立体视觉

立体视觉是基于两幅图像寻找深度。

我们的眼睛类似于两个摄像头。由于他们从不同的角度看一幅图像,他们可以计算出两个视点之间的差异,并建立一个距离估计。

这里有一个双目立体摄像头设置的例子。你可以在大多数无人驾驶汽车中找到类似的东西。

立体相机如何估计深度?

假设你有两个摄像头,一个左,一个右。这两台摄像头在同一个 Y 轴和 Z 轴上对齐。基本上,唯一的区别就是它们的 X 值。

现在,看看下面的计划。

双目立体设置

我们的目标是估计 O 点(表示图像中的任意像素)的 Z 值,即距离。

  • X 是对齐轴

  • Y 是高度

  • Z 代表深度

  • 两个蓝色的平面对应着每个相机拍摄的图像

现在从鸟瞰的角度来考虑这个问题。

立体设置的鸟瞰图
  • xL 对应左摄像头图像中的点,类似的xR 对应右摄像头。

  • b 是基线,是两个摄像头之间的距离。

如果你运用泰勒斯定理,你会发现我们可以得到两个等式:

  • 对于左边的摄像头:

左摄像头等式

???? 我们得到 Z = X*f / xL

  • 对于右边的摄像头:

右摄像头等式

???? 我们得到 Z = (X - b)*f/xR. 综合起来,我们可以找到正确的视差 d = xL - xR 和一个物体的正确 XYZ 位置。


3. 视差和深度图

什么是视差?

视差是同一个三维点从两个不同的摄像头角度拍摄的图像位置的差异。

立体视觉方程式

???? 由于立体视觉,我们可以估计任何物体的深度(假设我们已经做了正确的矩阵校准)。

它甚至可以计算一个深度图或视差图

为什么是“对极几何” ?

为了计算视差,我们必须找到左侧图像中的每个像素,并将其与右侧图像中的每个像素匹配。这就是所谓的立体对应问题(Stereo Correspondance Problem)。

为了解决这个问题——

  • 取左图中的一个像素

  • 现在,要在右边的图像中找到这个像素,只需在极线上搜索它。没有必要进行二维搜索,点应该位于这条线上,搜索范围缩小到一维

极线

这是因为摄像头是沿着同一轴线排列的。以下是极线搜索的工作原理:

极线搜索

应用: 构建伪激光雷达(Pseudo-LiDAR)

现在,是时候把这些应用到现实世界的场景中,看看我们如何使用立体视觉来估计物体的深度。

如下两张图片——

立体视觉

这些图像中的每一个都有外部参数 R 和 t,事先由校准确定(步骤1)。

视差

对于每个图像,我们可以计算出相对于其他图像的视差图。我们将:

1. 确定两幅图像之间的视差

2. 将投影矩阵分解为相机内部矩阵 K,外部参数 R,t

3. 使用我们在前两个步骤中收集到的信息来估计深度

我们将得到左侧和右侧图像的视差图。为了帮助你更好地理解视差的含义,我找到了这个 Stack Overflow 解释:

视差图是指一对立体图像之间的视像素差或运动。

要体验这种感觉,试着闭上一只眼睛。迅速闭上一个眼睛同时睁开另一只。距离你很近的物体会跳得很远,而距离更远的物体几乎不会移动。这个动作就是视差。

在一对由立体摄像头拍摄的图像中,你可以测量每一个点的视运动,并根据测量结果生成亮度图像。

从视差到深度图

???? 我们有两个视差图,它告诉我们两张图像之间像素的位移。

对于每个摄像头,我们有一个投影矩阵—— P_left 和 P_right。

为了估计深度,我们需要估计 K,R 和 t。

每个摄像头用OpenCV 函数 cv2.decomposeProjectionMatrix () 可以从 P 中得到 K、 R 和 t

深度图

现在是生成深度图的时候了。

利用另一张图像和视差图,深度图可以告诉我们图像中每个像素的距离。整个过程如下:

  • 从 K 矩阵得到焦距 f

  • 使用平移向量 t 中的对应值计算基线 b

  • 使用之前的公式和计算出的视差图 d 计算图像的深度图:

立体视觉公式

我们对每个像素进行计算。

估计障碍物的深度

每个摄像头我们都有了一个深度图!现在,假设我们把这个和一个障碍物检测算法结合起来,比如 YOLO。对于每个障碍物,这样的算法将返回一个包含4个数字的边界框: [x1; y1; x2; y2]。这些数字表示框的左上角和右下角的坐标。

例如,我们可以在左边的图像上运行这个算法,然后使用左边的深度图。

现在,在那个边界框里,我们可以得到最近的点。我们知道它,因为我们知道图像中每一个点的距离,这要归功于深度图。边界框的第一点将是我们到障碍的距离。

Wow! 我们刚刚建立了一个伪激光雷达!

由于立体视觉,我们不仅知道图像中的障碍物,还知道它们与我们的距离!这个障碍物离我们有28.927米远!

立体视觉是使用简单的几何学和一个额外的摄像头将二维障碍物检测转化为三维障碍物检测的方法。今天,大多数新兴的“边缘”平台支持立体视觉,如新的OpenCV AI Kit或树莓派和英伟达Jetson。

在成本方面,与使用激光雷达相比,它相对便宜,并且仍然提供了很好的性能。我们称之为“伪激光雷达” ,因为它可以取代激光雷达的功能: 检测障碍物,对障碍物进行分类,并对障碍物进行三维定位。

References:

  • Course Visual Perception for Self-Driving Cars by University of Toronto

原文:https://medium.com/think-autonomous/pseudo-lidar-stereo-vision-for-self-driving-cars-41fa1ac42fc9

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

伪激光雷达:无人驾驶的立体视觉相关推荐

  1. 残缺棋盘的伪代码_伪激光雷达:无人驾驶的立体视觉

    激光雷达成本高,用廉价的立体视觉替代它可行吗? 作者:Jeremy Cohen 编译:McGL 公众号:PyVision(欢迎关注,专注CV,偶尔CS) Pseudo-LiDAR - Stereo V ...

  2. ICCV2021|单目3D目标检测真的需要伪激光雷达吗?

    作者丨agent@知乎 来源丨https://zhuanlan.zhihu.com/p/406918022 编辑丨3D视觉工坊 Paper: arxiv.org/pdf/2108.0641 Code: ...

  3. 端到端基于图像的伪激光雷达3D目标检测

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:End-to-End Pseudo-LiDAR for Image-Based 3D Objec ...

  4. 【论文速读】基于图像的伪激光雷达三维目标检测

    点云PCL免费知识星球,点云论文速读. 标题:End-to-End Pseudo-LiDAR for Image-Based 3D Object Detection 作者:Rui Qian, Divy ...

  5. 激光雷达—无人驾驶汽车的眼睛

    致谢小虾! 链接:激光雷达-无人驾驶汽车的眼睛 原创 2017-08-14 小虾  头图借用了特斯拉(故意的),我们都知道,特斯拉的无人驾驶技术并未使用激光雷达,而且出过几次事故,当然不全是因为没有使 ...

  6. 单摄像头+深度学习实现伪激光雷达,代码已开源

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 上次介绍了双目摄像头如何估计深度的方案.老板表示两个摄像头还是有点贵呀,只用一个能不能做?嗯,没问题! ...

  7. 如果特斯拉制造相机的梦想像激光雷达一样真正实现,它可能会帮助到更多同行...

           这张来自伪激光雷达论文的图片显示了旧的黄色实点云 作者 |  Brad Templeton 译者 | 天道酬勤,责编 | Carol 特斯拉 CEO 埃隆·马斯克(Elon Musk)对 ...

  8. 端到端伪激光图像3D目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文由博主:流浪机器人 授权转载,二次转载请联系原作者 原文地址: ...

  9. 马斯克刚骂了激光雷达,这篇用纯视觉代替激光雷达的名校论文「力挺」了他...

    昨天,第 N 次在公开场合 diss 激光雷达的马斯克,再一次让自动驾驶圈对无人车不同的传感器应用方案展开了热议. 实际上,如果站在马斯克的角度,我们其实不难理解他对激光雷达的「痛恨心理」. 毕竟特斯 ...

最新文章

  1. Atitit.软件兼容性原理与实践 v3 q326.docx
  2. 在Win10下解压linux压缩包,Win10如何解压缩文件?win10使用命令行来解压缩文件的方法...
  3. 武汉网络推广浅析当网站停止收录时该检查哪些问题?
  4. 移动端省际联动插件mobiscroll
  5. linux g命令,【Linux】常用命令大全
  6. java保留二位小数_java使double保留两位小数的多方法 java保留两位小数
  7. 基本的SVG样式属性
  8. IOT---(4)物联网平台架构设计
  9. EurekaServer高可用的注册中心集群搭建
  10. 删除苹果自带软件后果_使用adb命令删除手机软件(包括系统自带)
  11. nginx——ngx_http_gzip_module
  12. 由嫦娥四号的中继卫星鹊桥,谈谈拉格朗日点
  13. Mysql rpm包安装
  14. python函数调用位置_Python基础手册23——函数的调用
  15. 如何打开mo文件并修改 PoEdit
  16. SpringBoot @EnableAutoConfiguration exclude属性失效
  17. 第三章 国外信托公司业务
  18. HTML网页设计制作大作业(div+css)--(四大名著 5页 )
  19. ssm基于JavaEE的电脑销售管理系统设计与实现 毕业设计-附源码021143
  20. python对数据集处理,绘制世界地图

热门文章

  1. 小菜学设计模式——高内聚、低耦合
  2. awk 控制语句(if for do while)
  3. Android Service的思考(3)
  4. SQL Servr 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
  5. Java-----applet小程序简介
  6. 【Nginx】面试官:给我讲讲Nginx如何实现四层负载均衡?
  7. tomcat 默认150连接数怎么支持几万大并发的?集群?
  8. Leangoo敏捷项目管理软件 6.3.2卡片关联支持链接
  9. ROS Master IP
  10. 控制~线性二次型最优控制