Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小白系列(5)| 计算机视觉:3D立体视觉

小白系列(5)| 计算机视觉:3D立体视觉

作者头像
一点人工一点智能
发布于 2023-09-08 03:28:04
发布于 2023-09-08 03:28:04
4700
举报

作者:DrMax

编辑:东岸因为@一点人工一点智能

01 介绍

本文中,我们将讨论立体视觉,这是一种使用两个或多个摄像机来生成全视场三维测量的机器视觉技术。

02 什么是立体(3D)视觉?

计算机立体视觉是从二维图像中提取三维信息的过程,例如由CCD相机产生的图像。它结合每个视角中物体的相对位置,来融合多个视角的数据。因此,我们在高级驾驶辅助系统和机器人导航等应用中使用立体视觉。

这类似于人类视觉的工作原理。我们大脑同时整合来自两只眼睛的图像,从而产生三维视觉:

尽管每只眼睛只产生二维图像,但人脑可以通过结合两个视角并识别它们之间的差异来感知深度。我们称这种能力为立体视觉。

03 感知深度

假设有左右两个摄像机,它们都产生了场景的二维图像。设

为场景中一个真实世界(三维)物体上的一个点:

为了确定生成的三维图像中

的深度,我们首先在左右两个二维图像中找到与其对应的两个像素点

。我们可以假设我们知道两个摄像机的相对位置。计算系统使用相机之间的相对距离的先验知识,通过三角测量来估计深度

人脑的工作方式也是如此。它感知深度和三维形状的能力被称为立体视觉。

04 计算机系统如何实现立体视觉

我们需要估计每个点的深度,从而从二维图像中生成三维图像。从那里,我们可以确定点的相对深度并得到深度图:

深度图是一种包含了从一个视点分离场景物体表面的数据的图像(或图像通道)。这是在3D计算机图形和计算机视觉中表示场景深度的常见方式。我们可以在上述图像的左下角看到深度图的一个示例。

05 立体视觉的几何基础

对极几何是立体视觉的几何学基础。3D点与它们在2D图像上的投影之间存在多种几何关系。这些关系是基于针孔相机模型开发的。我们假设可以使用这些关系来表示法线。

当一个3D物体在图像中被捕捉(投影)时,它被投影到一个2D(平面)投影空间中。这种所谓的“平面投影”会导致深度的丢失。

两个立体图像之间的视差是物体的表观运动。如果我们闭上一只眼睛,然后迅速睁开,同时保持另一只眼睛闭着,我们会观察到靠近我们的物体移动得很多,而距离我们较远的物体几乎不动。我们将这种现象称为“视差”。

5.1 方向向量

在对极几何中,方向向量是从图像中的一个像素点发出的一个三维向量:

方向向量,顾名思义,是光线从哪个方向到达像素传感器的方向。因此,这条线携带了所有可能成为图像中2D像素候选源的3D点。在上图中,方向向量

起源于点

,它是与场景中的3D点

对应的“左侧”2D像素。

5.2 方向向量的交点

场景中一个3D点的方向向量会在从不同视角拍摄的图像中投射出相应的2D点。因此,一对立体图像将会有从表示3D场景中共同的3D点的2D像素发出的方向向量。方向向量上的所有点都是候选源。由于两个向量只能在一个唯一的点上相交,我们将交点视为源点。

在上图中,左图和右图的方向向量(分别为

)在单个源点

处相交。这个场景中的3D源点是光线从中投射出左图像的像素

和右图像的像素

的点。

5.3 深度计算

我们假设我们知道相机之间的距离,并且相对于物体和相机之间的距离来说,这个距离非常小。在这个假设下,我们可以通过三角测量确定空间中的3D点的位置。深度是在连接两个相机的线上的垂直投影:

上面的图像显示了从连接两个相机的线上的点的实际深度

。让我们注意到线段

和线段

之间的角度并不完全是90度。然而,在现实中,线段

相对于

来说非常小。这导致线段

和线段

之间的角度近似为90度。由于我们通过三角测量确定了

的位置,并且我们知道相对距离

,我们可以使用勾股定理计算深度

由于

相对于

来说非常大,角度

接近于

。长度

几乎相等(用

表示)。同样,长度

也几乎相等(用

表示)。应用勾股定理,我们得到

。解出点

的深度,我们得到:

由于

相对于

来说非常大,深度

接近于

06 计算机立体视觉的数学实现的关键概念

三角测量和视差图是计算机立体视觉所需的工具。在像素级别上,我们使用三角测量从一对立体图像的左右像素点中确定一个3D空间中的点。对于具有数百万像素点的大图像,我们使用视差图。

6.1 计算机视觉中的三角测量

计算机视觉中的三角测量是从其在两个或多个图像上的投影中确定一个3D空间中的点的过程。相机矩阵表示相机从3D场景到2D图像空间的投影函数的参数。三角测量方法的输入是检测到的图像点(

)的齐次坐标以及左右相机的相机矩阵。

三角测量方法的输出是一个以齐次表示的3D点。三角测量方法只是以抽象形式表示计算;在现实中,计算可能相当复杂。一些三角测量技术需要分解为一系列计算阶段,例如奇异值分解或确定多项式的根。闭合形式的连续函数是另一组三角测量技术。

另一类三角测量技术使用迭代参数估计。这意味着各种方法在计算时间和过程复杂性方面可能有所不同。中点法、直接线性变换和本质矩阵是我们用于三角测量的常见数学工具。

6.2 视差图

视差是左右图像之间一个点的投影的水平位移。相反,深度是位于真实3D世界中的点的深度坐标。

要从一对立体图像创建视差图,我们首先必须将左图像中的每个像素与右图像中的相应像素进行匹配。我们计算每对匹配像素之间的距离。我们使用这些距离数据生成一幅称为视差图的强度图像。

要计算视差图,我们必须解决所谓的对应问题。这个任务旨在识别立体图像中的像素对,它们是空间中同一个实际物理点的投影。立体图像的校正可以大大简化这个问题。通过这种转换,匹配点将位于同一水平线上,将2D立体对应问题转化为1D问题。这就是我们打破“维度诅咒”的方式。

块匹配算法是识别相关像素的基本方法。该算法的基础是在第一幅图像中围绕一个点的一个小窗口与第二幅图像中沿着单条水平线排列的几个小块之间的比较。用于窗口匹配的两个主要相似度度量是绝对差值之和(SAD)和平方差之和(SSD)。

视差与深度呈反比关系。我们通过使用相机的几何配置作为输入,将视差图进行三角测量,将其转换为深度图。

07 结论

在本文中,我们了解了当代计算机如何实现立体视觉。我们从立体图像对中得到视差图。然后,我们计算视差图中每对匹配像素之间的距离。知道两个相机的精确位置可以计算深度图。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点人工一点智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一篇文章认识《双目立体视觉》
双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,获取物体长度、宽度信息,和深度的信息;单目视觉获取二维的物体信息,即长度、宽度。
一颗小树x
2021/05/15
10.3K1
一篇文章认识《双目立体视觉》
伪激光雷达:无人驾驶的立体视觉
激光雷达成本高,用廉价的立体视觉替代它可行吗? 作者:Jeremy Cohen 编译:McGL
McGL
2020/09/21
1.4K0
伪激光雷达:无人驾驶的立体视觉
【深度相机系列三】深度相机原理揭秘--双目立体视觉
用户1150922
2018/01/08
5.9K0
【深度相机系列三】深度相机原理揭秘--双目立体视觉
深度相机原理揭秘--双目立体视觉
基于双目立体视觉的深度相机类似人类的双眼,和基于TOF、结构光原理的深度相机不同,它不对外主动投射光源,完全依靠拍摄的两张图片(彩色RGB或者灰度图)来计算深度,因此有时候也被称为被动双目深度相机。比较知名的产品有STEROLABS 推出的 ZED 2K Stereo Camera和Point Grey 公司推出的 BumbleBee。
小白学视觉
2019/10/24
3.4K0
自动驾驶汽车的伪激光雷达-双目立体视觉
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
点云PCL博主
2022/02/10
1.4K0
自动驾驶汽车的伪激光雷达-双目立体视觉
DCF:立体视觉的视差计算系统
视差图是立体视觉系统的重要组成部分,因为它们会对两个或多个图像的位移进行编码。不过,以前的工作只提供了一些实现细节,处理步骤上不太好定义,并且很少讨论软件设计。与之相反,DCF是对立体视觉系统的主要组件进行标准化,并进行了集成,以促进视差图的构建。因此,DCF算法可以被参数化或使用先前定义的配置来执行。因此,DCF输出可以定向到不同的应用,例如基准测试方案、计算机和机器人应用、三角测量和3D重建。
一点人工一点智能
2023/03/22
8440
DCF:立体视觉的视差计算系统
3D视觉技术在机器人抓取作业中的应用实例
摘要:近年来,机器人自动化领域越来越多地应用3D视觉技术对目标物体进行定位。本文主要研究3D视觉技术在机器人抓取作业中的应用,总结了3D视觉技术在识别、定位物体时面临的挑战,给出了抓取作业机器人3D视觉系统的设计方法,归纳了现有的3D表面成像方法和视觉处理算法,最后给出一个结合3D视觉技术对白色抽屉纸盒进行抓取分拣的实际应用案例。
小白学视觉
2019/11/14
3.3K0
3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息
这里要介绍的是真正的3D成像,得到物体三维的图形,是立体的图像。而不是利用人眼视觉差异的特点,错误感知到的假三维信息。
3D视觉工坊
2021/05/18
4.7K0
3D成像方法 汇总(原理解析)— 双目视觉、激光三角、结构光、ToF、光场、全息
深度解析机器视觉四大光学成像方法
工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。
一点人工一点智能
2023/03/17
1.1K0
深度解析机器视觉四大光学成像方法
从单幅图像到双目立体视觉的3D目标检测算法(长文)
经典的计算机视觉问题是通过数学模型或者统计学习识别图像中的物体、场景,继而实现视频时序序列上的运动识别、物体轨迹追踪、行为识别等等。然而,由于图像是三维空间在光学系统的投影,仅仅实现图像层次的识别是不够的,这在无人驾驶系统、增强现实技术等领域表现的尤为突出,计算机视觉的更高层次必然是准确的获得物体在三维空间中的形状、位置、姿态,通过三维重建技术实现物体在三维空间的检测、识别、追踪以及交互。近年来,借助于二维图像层面的目标检测和识别的性能提升,针对如何恢复三维空间中物体的形态和空间位置,研究者们提出了很多有效的方法和策略。
小白学视觉
2019/08/09
3.9K0
从单幅图像到双目立体视觉的3D目标检测算法(长文)
从单幅图像到双目立体视觉的3D目标检测算法
经典的计算机视觉问题是通过数学模型或者统计学习识别图像中的物体、场景,继而实现视频时序序列上的运动识别、物体轨迹追踪、行为识别等等。然而,由于图像是三维空间在光学系统的投影,仅仅实现图像层次的识别是不够的,这在无人驾驶系统、增强现实技术等领域表现的尤为突出,计算机视觉的更高层次必然是准确的获得物体在三维空间中的形状、位置、姿态,通过三维重建技术实现物体在三维空间的检测、识别、追踪以及交互。近年来,借助于二维图像层面的目标检测和识别的性能提升,针对如何恢复三维空间中物体的形态和空间位置,研究者们提出了很多有效的方法和策略。
SIGAI学习与实践平台
2019/08/01
1.9K0
立体视觉的物距测量
在现代工业自动化生产过程中,计算机视觉正成为提高生产效率和检查产品质量的关键技术之一,例如机器零件的自动检测,智能机器人控制,生产线的自动监控等。
小白学视觉
2022/02/14
6150
立体视觉的物距测量
如何使用3D立体视觉检查焊接线?
3D立体成像技术通常用于焊线(bonding wire)检查,但存在许多挑战。其中挑战之一是难以使用块匹配算法来解决对应问题,因为某些焊线可能具有无纹理的水平结构。对于这样的对象,对应搜索可能失败或执行低效,因为算法的图像内容对于水平方向上的多个块是相同的。
小白学视觉
2019/05/30
1.6K0
一文详解双目立体视觉系统的精度提升方法!
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法1。
3D视觉工坊
2021/07/01
3.1K0
一文详解双目立体视觉系统的精度提升方法!
三维重建技术综述
来源丨https://blog.csdn.net/qq_30815237/article/details/91897736
3D视觉工坊
2021/01/13
2.7K0
三维重建技术综述
关于双目立体视觉的三大基本算法及发展现状的总结
双目立体视觉一直是机器视觉研究领域的发展热点和难点,“热”是因为双目立体视觉有着及其广阔的应用前景,且随着光学、计算机科学等学科的不断发展,双目立体技术将不断进步直到应用到人类生活的方方面面。“难”则是因为受到摄像机、镜头等硬件设备及一些相关算法的限制,双目立体视觉的研究及如何更好的应用到生产实际中仍有待在座的各位去进行突破。
AIWalker
2020/08/02
4.2K0
梳理 | 立体视觉相机的优势
进入21世纪的第三个十年,我们完全可以确定相机已经深入到我们的日常生活。包括摄影师和电影制作人使用的专业相机,其他人用来捕捉日常时刻的手机相机,用来保护人身和财产安全的安全相机和跟踪相机,以及望远镜和显微镜相机……
一点人工一点智能
2023/03/21
5030
梳理 | 立体视觉相机的优势
三维重建基础
三维重建技术通过深度数据获取、预处理、点云配准与融合、生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型。这种模型可以对如文物保护、游戏开发、建筑设计、临床医学等研究起到辅助的作用。
流川疯
2022/05/10
7690
三维重建基础
视觉三维建模
  既能准确计算进出人数,又能有效过滤掉干扰物体(如推车、行李箱、人员徘徊、拥挤及躯体重叠、人员经过未进入等,另外用户也需要有特殊应用,比如身高低于1.2米的儿童进出不计数等),使得客流统计准确率号称可以达到97%以上。   
JNingWei
2018/09/28
1.5K0
视觉三维建模
3D相机的数据处理方式
在上一篇中,我们介绍了什么是3D相机。但是对于初次接触3D相机的同学,可能首先面临的问题是如何处理3D相机得到的数据。3D相机的数据分为两种方式:三维点云数据方式,二维数据方式。其中,三维数据保存的格式有csv,txt,ply,stl等。二维数据通常以二维图像的形式存在,其中保存Z方向的二维图像被称为深度图像。本篇主要介绍一下深度图像的生成与处理。
3D视觉工坊
2021/01/13
5190
3D相机的数据处理方式
相关推荐
一篇文章认识《双目立体视觉》
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档