机器视觉基础—双目相机

news/2024/11/14 2:39:29/

机器视觉基础—双目相机与立体视觉

双目相机概念与测量原理

我们多视几何的基础就在于是需要不同的相机拍摄的同一个物体的视场是由重合的区域的。通过下面的这种几何模型的目的是要得到估计物体的长度,或者说是离这个相机的距离。(深度信息)

在这里插入图片描述

双目相机是模拟人观看世界的方式,来对深度的距离进行估算。
人之所以能够感受到立体视觉,是因为人的左右眼之间有6到7cm的间隔,左眼与右眼看到的影像会有细微的差别,所以我们很容易判断物体的远近以及多个物体的前后关系。

在这里插入图片描述

双目立体视觉的基本原理与人眼观察世界的方式类似,双目立体视觉获取图像是通过不同位置的两台摄像机或者一台摄像机经过平移或旋转拍摄同一幅场景,来获取立体图像对

我们可以将双目相机分成两种类型

  1. 被动双目相机也是刚开始学习的双目相机模型

在这里插入图片描述

  • 我们的被动双目相机是由两个RGB的镜头组成的。
  1. 主动双目相机也称为双目结构光相机
    在这里插入图片描述
    主动相机的构成主要是有两个IR摄像头和一个结构光发射器来构成的。

我们通过主动相机估计出来的深度图结构也更加的完整,在拍摄的时候。主动相机的成像是由散斑点的

对于我们人的双目系统来说,人的左眼和右眼分别可以看见两幅有视差的图像。进而在大脑中可以形成有景深的立体图像。

在这里插入图片描述

双目立体视觉的测量原理实际上是和人眼类似的。
在这里插入图片描述对于单个相机来说如果已知图像中的一个像点。我们通过该像点与相机中心发出一条射线。那么如何才能确定发光的物体点P的位置是P1 P2还是其他的呢?

也就是单个相机是无法获得上面的那个目标的深度信息的。为了获得深度我们可以使用两个相机的两条射线来获得深度的信息。更准确的说是获得了唯一一个三维目标点的坐标信息

在这里插入图片描述

这也就是双目相机的一个测量原理,我们称之为双目交汇

公式推导

  1. 假设我们拥有一个理想的双目系统——它们是拥有相同的焦距f的
  2. 两个光学中心Ol和Or之间的距离为B。
  3. 光轴平行成像平面属于同一个平面。

这里的两个光心之间的距离我们可以称之为基线长度。

满足这几个条件的双目相机模型我们称为理想的双目系统

在这里插入图片描述

  • 空间坐标中的一个P点在左右成像平面上形成了两个像点(也就是与成像平面相交的两个点。)分别为XL 和 XR。我们将Xl - Xr = D 称之为视差。
    在这里插入图片描述
  • 根据这个模型的相似关系我们可以在数学上对其进行建模的处理。
  1. 我们和之前一样将两个光心之间的距离定义为B,同时我们将深度值定义为Z

  2. 根据三角关系有:

B Z = B − { X L − x R } Z − f Z = f B { x L − x R } Z = f B D \begin{aligned} \frac{B}{Z} & =\frac{B-\left\{X_{L}-x_{R}\right\}}{Z-f} \\ Z & =\frac{f B}{\left\{x_{L}-x_{R}\right\}} \\ Z & =\frac{f B}{D} \end{aligned} ZBZZ=ZfB{XLxR}={xLxR}fB=DfB

根据这个关系,我们可以看出在双目的系统中我只要知道了视差值D就可以根据之前的关系。得出需要估计的深度值信息了。

由此也是引出了双目立体视觉中的一个核心的问题。双目视觉中的立体匹配问题

其任务就是寻找左右图像当中的两个对应点,并建立对应的关系。从而方面的计算出视差D

在这里插入图片描述

就需要之前学过的一些特征点匹配的算法了就比如之前的SIFT算法等。但是对于之一些光照和颜色相近的一些点,例如匹配一张图像上的白墙上的两个点。也是十分的困难。

根据这个问题也就有了主动双目相机了。也就是使用了双IR相机加结构光。在单色的图像上也打出一些激光点也就能保证正常的立体图像匹配

在这里插入图片描述

双目深度估计中存在的问题是:

  1. 双目测距要求轴平行,测距精度严重依赖于平行程度。
  2. 为了计算视差d,需要匹配世界中同一点P1在左右两幅图像中的像素点p1和p1’即双目立体匹配。在复杂光照和复杂场景下,如何准确双目立体匹配本身就是很难的问题。
  3. 对于世界中越远的点P2,其在左右视图中的视差d2越小,测距结果越容易受到双目立体匹配误差影响(即双目测距精度与被测物体距离成反相关)

对极几何的概念

在这里插入图片描述

要寻找两幅图像之间的对应关系,最直接的方法就是逐点匹配,如果加以一定的约束条件(对极约束),搜索的范围可以大大减小。从2D平面搜索转为1D直线搜索,搜索速度也会提高。

对于下面的一副图来说我们的c和c’表示的是相机的光心。x是测量的三维空间中的一个点。两个白色的为两个成像平面。

在这里插入图片描述

  1. 这个灰色的平面束和我们的成像平面之间是有交线的。这个交线就是对极线
  • 对极平面(epipolarplane):任何包含基线的平面(图中的灰色面

  • 对极点(epipole):摄像机的基线与每幅图像的交点;

  • 对极线(epipolar1ine):对极平面与图像平面的交线

  1. 我们需要将x和x’进行立体的匹配。提出问题就是如何快速的找到这两个点呢?

  2. 对极约束(Epipolar Constraint) 也就是给它一个约束从2d搜寻转为在1d的线上的一个搜索过程。

这个模型有个有趣的性质。当三维点p沿着px0方向接近左相机时,我们发现其在左相机上的投影点并不会移动,但是其在右相机相平面上的投影点x1发生了变化,其移动轨迹一定是沿着极线1。

在这里插入图片描述

深度相机

上面我们学过的双目相机可以看作是一种深度相机,在继续进行学习之前。对深度相机的知识进行一些扩展

在这里插入图片描述
它在2d相机的基础上增加了对深度值得测量,每个像素经过一定的计算处理类似上面提到的双目的这种。可以得到对应的深度值。

所有像素测量得到的像素深度值的集合,就构成了一幅深度图。,深度图是一张灰度图。是一张用二维坐标表示三维的一副图。

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1546814.html

相关文章

软考之面向服务架构SOA-通信方法

面向服务架构(SOA)中的相互通信方法 面向服务架构(Service-Oriented Architecture, SOA)是一种软件架构设计理念,通过将应用程序功能模块化为独立的服务,促进服务之间的协作与交互。服务之间的通信方式在 …

【缓存策略】你知道 Write Through(直写)这个缓存策略吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

Spring Boot编程训练系统:深入设计与实现

3系统分析 3.1可行性分析 通过对本编程训练系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本编程训练系统采用SSM框架,JAVA作为开发语言&#…

AIGC赋能,微信小程序开发迎来新篇章

文章目录 一、理解AIGC技术二、明确目标用户与需求三、设计创新四、功能开发个性化推荐系统智能客服系统 五、持续优化与迭代六、案例分享《微信小程序开发解析》编辑推荐内容简介作者简介目录 随着人工智能技术的快速发展,AIGC(人工智能生成内容&#x…

Springboot 使用EasyExcel导出含图片并设置样式的Excel文件

Springboot 使用EasyExcel导出含图片并设置样式的Excel文件 Excel导出系列目录:★★★★尤其注意:引入依赖创建导出模板类逻辑处理controllerservice 导出效果总结 Excel导出系列目录: 【Springboot 使用EasyExcel导出Excel文件】 【Springb…

网页版五子棋—— WebSocket 协议

目录 前言 一、背景介绍 二、原理解析 1.连接过程(握手) 2.报文格式 三、代码示例 1.服务端代码 (1)TestAPI 类 (2)WebSocketConfig 类 2.客户端代码 3.代码演示 结尾 前言 从本篇文章开始&am…

模型减肥秘籍:模型压缩技术 CNN基础

这里是Datawhale的组队学习活动,主要介绍的是模型压缩技术。后续将以CNN网络为基础点,带领大家领略模型压缩的魅力。首先是回顾一下一些关于CNN的基础知识。 参考链接: 模型减肥秘籍:模型压缩技术-课程详情 | Datawhale datawh…

Linux驱动开发基础——Hello驱动程序(一)

目录 一、Hello驱动 一、Hello驱动 我们选用的内核都是 4.x 版本,操作都是类似的: 1.1、APP 打开的文件在内核中如何表示 open函数原型: int open(const char *pathname, int flags, mode_t mode); 仔细看函数的参数,再对比看 内…