自动驾驶中的立体视觉

原创 汽车ECU开发 2021-12-06 08:00
如今,自动驾驶的立体视觉变得越来越流行。计算机视觉领域在过去十年中发展迅猛,尤其是基于深度学习的障碍物检测和计算机视觉领域。
YOLO 或 RetinaNet 等障碍物检测算法提供 2D 边界框,使用边界框给出图像中障碍物的位置。今天,大多数物体检测算法都是基于单目RGB相机,无法返回每个障碍物的距离。
为了返回每个障碍物的距离,工程师们将相机与激光雷达(光探测和测距)传感器融合,利用激光返回深度信息和传感器融合技术融合计算机视觉和激光雷达的输出。
这种方法的问题是使用了昂贵的激光雷达。工程师巧妙地利用对齐两个摄像头并使用几何形状来定义每个障碍物的距离:我们称之为伪激光雷达。

图1 单眼与立体视觉

伪激光雷达利用几何图形来构建深度地图,并将其与目标检测相结合,以获得三维距离。

实现深度估计的五个步骤:

通过两个摄像头,我们可以获得物体的距离。这是三角测量的原理,也是立体视觉背后的核心几何。下面是它的工作原理:

1、立体校准-检索相机的关键参数;

2、对极几何-定义我们设置的三维几何;

3、视差图- 计算视差图;

4、深度贴图- 计算深度贴图;

5、障碍物距离估计- 在 3D 中查找对象,并与深度图匹配。

在本文中,我们将学习如何执行这 5 个步骤来构建 3D 对象检测算法,目标是对于每个对象,我们可以估计 X、Y、Z 位置。

01.

立体校准—内部和外部校准


当你在网上看任何图片时,很可能相机已经被校准过了。每个相机都需要校准。校准是指将具有[X,Y,Z]坐标的3D点转换为具有[X,Y]坐标的2D像素。

这一步的输出很简单:我们需要相机的内在参数和外在参数。这些将在稍后用于检索距离。

图像是如何产生的?

当前相机使用针孔成像原理,用一个针孔让少量的光线穿过相机,从而获得清晰的图像。

相机还可以使用镜头来变焦,获得更好的清晰度。如你所见,镜头位于距离传感器f的位置。这个距离f称为焦距。

前面提到相机校准的目标是找到合适的内部和外部参数。我还说过,校准的目的是帮助我们取一个3D Point,并将其转换为Pixel,从而创建一个图像。
因此,以下是相机校准在一张图像中的工作方式:

相机校准过程

外部校准

外部校准是从世界坐标到相机坐标的转换。我们通常说“这是一个特定坐标系中的 3D 点。如果我们从相机框架看,这个点的坐标是什么?”。世界中的一个点被旋转到相机框架,然后转换到相机位置。外部参数称为 R(旋转矩阵)和 T(平移矩阵)。

公式如下:

外部校准公式

内部校准

内部校准是从相机坐标到像素坐标的转换。一旦我们有了 3D 点,我们就会使用内在参数将这个 3D 点转换为像素,内在参数是我们称为 K 的矩阵。

这是世界坐标到图像转换的公式:

K为本征矩阵。它由f,焦距和(u,v)光学中心组成:这些都是内在参数。

最终公式:

所以,我们现在知道,给定世界上的一个点,我们可以使用外部校准将其转换为相机帧,然后使用内部校准将其转换为像素。

这是我们使用的最终公式:

你可以注意到,外部矩阵已经被修改了,这是因为矩阵乘法需要矩阵形状来匹配,因此我们转向了齐次坐标。

接下来,让我们看看它如何与 OpenCV 配合使用。

相机校准:立体视觉和 OpenCV

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


校准示例

为此,我们必须用相机拍摄棋盘,获取一些图像,校准算法通过最小化最小二乘法的损失来确定相机的校准矩阵。

通常,为了消除图像失真,需要进行校准。针孔相机模型包括一个失真,“ GoPro 效应”。为了得到校正后的图像,需要进行校准。畸变可以是径向的,也可以是切向的。校准有助于消除图像的扭曲。

图像校准

在校准过程的最后,你有两个校正图像的参数K, R,和T:

极性几何——立体视觉

02.

极性几何—立体视觉

立体视觉是基于两幅图像寻找深度信息。我们的眼睛就像两台相机。他们从不同的角度获取图像,计算两个视角之间的差异,并建立一个距离估计。

在一个立体视觉系统中的两个摄像头,一般在同一高度对齐。那么,我们如何使用设置和几何设计一个系统?

立体相机如何估计深度?

假设你有两个相机,其 Y 轴和 Z 轴坐标一致,唯一的区别就是它们的 X 值。

现在两个相机 CL (相机左)和 CR (相机右)看着一个障碍 O 。通过处理几何关系,我们可以计算障碍物的距离。

相机与障碍物的几何关系

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

  • X 是对齐轴

  • Y是高度

  • Z 是深度

  • xL 对应于左侧摄像机图像中的点。右侧图像的 xR 相同

  • b 是两个相机X轴上的距离。

根据上述参数,我们可以用相似三角形得到这张图中的两个方程。

对于左侧相机:

对于右侧相机:

当我们进行数学运算后,我们可以快速得到 Z,甚至可以推导出 X 和 Y。

03.

立体视差和映射

什么是视差?

视差是同一 3D 点在 2 个不同相机角度的图像位置差异。

具体来说,如果我取左边图像的侧视镜像素(300,175);其在右边的图像像素位置位(250,175)。

在本例中,xL=300 且 xR=250。视差为 xL-xR;或者是 50 像素。它是通过相同的算法估算出来的。

为每个像素计算视差,你会得到一个视差图!正如下图所示,近距离的物体比远距离的物体要亮,远距离的物体用深色表示。我们已经有了一种深度信息了。

立体匹配

为什么是“对极几何”?

为了计算视差,我们必须找到左侧图像中的每个像素并将其与右侧图像中的每个像素匹配。这称为立体匹配。

为了解决这个问题——

在左侧图像中取一个像素,要在右侧图像中找到对应的像素,只需在极线上搜索。而不需要进行2D搜索,点应该位于这条线上,搜索范围缩小到1D。

在上面的例子中,通过校准和校正后,左右两侧相机在相同的高度上。我们只进行一维搜索。

对级搜索可以通过许多不同的方式进行:局部方法、全球方法、半全球方法、深度学习。OpenCV 的基本功能可以解决这个问题,但不如当前的深度学习方法精确。

04.

立体视觉—从视差到深度图

我们有两个视差图,它基本上告诉我们两幅图像之间像素的移动。对于每个摄像机,我们还有一个投影矩阵:P _ left 和 P _ right 。

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

根据公式:

深度图

现在可以生成深度图了。

深度图使用另一幅图像和视差图告诉我们图像中每个像素的距离。

过程如下:

  • 从 𝐾 矩阵中获取焦距 𝑓;

  • 使自平移向量 𝑡 的相应值计算基线 𝑏;

  • 使用我们之前的公式和计算的视差map d计算图像的深度图。

对每个像素进行计算,并得到深度图:


05.

估计障碍物的深度


我们得到了每个相机的深度图,现在我们将其与诸如 YOLO 之类的障碍物检测算法相结合。对于每个障碍物,此类算法将返回一个包含 4 个数字的边界框:[x1; y1; x2; y2]。这些数字代表框的左上点和右下点的坐标。

例如,我们可以在左侧图像上运行此算法,然后使用右侧深度图。

现在,在那个边界框中,我们可以取最近的点。我们知道这一点,因为由于深度图,我们知道图像中每个点的距离。边界框中的第一个点将是我们与障碍物的距离。

好了!我们就构建了一个立体视觉!


后台回复汽车ECU开发002获取广州车展报告。

推荐阅读

如何写一份牛X的汽车软件需求

关于对汽车ECU软件测试的理解

特斯拉最新中央计算模块(CCM)解析

2021款特斯拉Model Y ECU接口梳理

详解CANoe之CAPL编程

关于CAN时间同步的理解

dbc文件的格式以及创建详解

大众ID.4 X网络架构详解

基于UDS的Bootloder详解

关于整车上下电流程的理解

一文详解CAN总线错误帧|附下载

DoIP协议介绍,资料分享!

详解车载网络 OTA系统的开发|文末附下载

一文了解汽车嵌入式AUTOSAR架构|附下载

特斯拉Autopilot系统安全研究|附dbc下载

分享不易,恳请点个【在看】
汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 70浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 144浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 164浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 158浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 61浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 92浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 108浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 204浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 124浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 223浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 117浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 66浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦