机器视觉基础—双目相机

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

双目相机概念与测量原理

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

在这里插入图片描述

双目相机是模拟人观看世界的方式,来对深度的距离进行估算。
人之所以能够感受到立体视觉,是因为人的左右眼之间有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.mzph.cn/bicheng/59978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++继承(图文非常详细)

继承的概念 1.什么是继承 1.简单定义 我们来看一下下面这串代码注意其中的两个类father 和 son using namespace std; #include<iostream> class father { public:void definity(){cout << "father" << endl;} protected:int tall 180;int age …

【机器学习】均方误差根(RMSE:Root Mean Squared Error)

均方误差根&#xff08;Root Mean Squared Error&#xff0c;RMSE&#xff09;是机器学习和统计学中常用的误差度量指标&#xff0c;用于评估预测值与真实值之间的差异。它通常用于回归模型的评价&#xff0c;以衡量模型的预测精度。 RMSE的定义与公式 给定预测值 和实际值 …

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数&#xff1a;返回值&#xff1a;示例代码&#xff1a; isnull不会检查空字符串 数据准备 有一组数据信息如下&#xff0c;其中主要将TotalCharges、MonthlyC…

混沌工程遇上AI:智能化系统韧性测试的前沿实践

#作者&#xff1a;曹付江 文章目录 1、什么是AI驱动的混沌工程&#xff1f;2、AI与混沌工程结合的价值3、技术实现3.1 AI模型开发3.1.1模型选择与构建3.1.2模型训练3.1.3 模型验证与调参3.1.4 模型测试3.1.5 知识库建设与持续学习 4、混沌工程与AI实践结合4.1 利用AI从运维专家…

《深度学习神经网络:颠覆生活的魔法科技与未来发展新航向》

深度学习神经网络对我们生活的影响 一、医疗领域 深度学习神经网络在医疗领域的应用可谓意义重大。在疾病诊断方面&#xff0c;它能够精准分析医疗影像&#xff0c;如通过对大量的 CT、MRI 图像进行深度学习&#xff0c;快速准确地识别出微小的肿瘤病变&#xff0c;为医生提供…

YOLOv11融合特征细化前馈网络 FRFN[CVPR2024]及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 一、 模块介绍 论文链接&#xff1a;Adapt or Rerish 代码链接&#xff1a;https://github.com/joshyZhou/AST 论文速览&#xff1a;基于 transformer 的方法在图像恢复任务中取得了有希望的性能&#xff0c;因为…

K8S简单部署,以及UI界面配置

准备两台服务器K8Smaster和K8Sminion 分别在两台服务器上执行以下代码 #添加hosts解析&#xff1b; cat >/etc/hosts<<EOF 127.0.0.1 localhost localhost.localdomain 192.168.45.133 master1 192.168.45.135 node2 EOF #临时关闭selinux和防火墙&#xff1b; sed …

爬虫 - 二手交易电商平台数据采集 (一)

背景: 近期有一个需求需要采集某电商网站平台的商品数据进行分析。因此&#xff0c;我计划先用Python实现一个简单的版本&#xff0c;以快速测试技术的实现可能性&#xff0c;再用PHP实现一个更完整的版本。文章中涉及的技术仅为学习和测试用途&#xff0c;请勿用于商业或非法用…

Chrome与傲游浏览器性能与功能的深度对比

在当今数字化时代&#xff0c;浏览器作为我们日常上网冲浪、工作学习的重要工具&#xff0c;其性能与功能直接影响着我们的使用体验。本文将对Chrome和傲游两款主流浏览器进行深度对比&#xff0c;帮助用户更好地了解它们的差异&#xff0c;以便做出更合适的选择。&#xff08;…

大华乐橙设备私有平台EasyCVR视频设备轨迹回放平台支持哪些摄像机?摄像机如何选型?

在现代安全监控系统中&#xff0c;视频监控设备扮演着至关重要的角色。视频设备轨迹回放平台EasyCVR以其卓越的兼容性和灵活性&#xff0c;支持接入多种品牌和类型的摄像机。这不仅为用户提供了广泛的选择空间&#xff0c;也使得视频监控系统的构建和管理变得更加高效和便捷。本…

数据结构 栈和队列

目录 1. 栈1.1 栈的概念及结构1.2 栈的实现 2. 队列2.1 队列的概念及结构2.2 队列的实现 正文开始 1. 栈 1.1 栈的概念及结构 栈是线性表的一种&#xff0c;这种数据结构只允许在固定的一端进行插入和删除元素的操作&#xff0c;进行数据插入和删除的一端称为栈顶&#xff0c…

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

代码地址 https://github.com/junjie18/CMT 1. 引言 在本文中&#xff0c;我们提出了Cross-Modal Transformer&#xff08;CMT&#xff09;&#xff0c;这是一种简单而有效的端到端管道&#xff0c;用于鲁棒的3D对象检测&#xff08;见图1&#xff08;c&#xff09;&#xf…

深度学习鲁棒性、公平性和泛化性的联系

深度学习鲁棒性、公平性和泛化性的联系 前言1 鲁棒性、公平性、泛化性本质2 对抗攻击是混杂效应3 因果推理角度3.1 稳定学习 VS 公平性3.2 后门攻击 前言 读研好不容易从边缘智能&#xff0c;费好大劲被允许转到联邦学习赛道&#xff0c;再费了好大劲和机缘巧合被允许转到可信A…

【Vue】简易博客项目跟做

项目框架搭建 1.使用vue create快速搭建vue项目 2.使用VC Code打开新生成的项目 端口号简单配置 修改vue.config.js文件&#xff0c;内容修改如下 所需库安装 npm install vue-resource --save --no-fund npm install vue-router3 --save --no-fund npm install axios --save …

python爬虫指南——初学者避坑篇

目录 Python爬虫初学者学习指南一、学习方向二、Python爬虫知识点总结三、具体知识点详解和实现步骤1. HTTP请求和HTML解析2. 正则表达式提取数据3. 动态内容爬取4. 数据存储5. 反爬虫应对措施 四、完整案例&#xff1a;爬取京东商品信息1. 导入库和设置基本信息2. 获取网页内容…

一文学习Android中的Treeview

在Android开发中&#xff0c;TreeView是一种用于显示层次结构的组件&#xff0c;可以让用户展开和折叠子项&#xff0c;以方便查看数据的不同层次。TreeView在文件系统、组织架构、目录结构等场景中非常有用&#xff0c;尽管Android并未提供内置的TreeView控件&#xff0c;但可…

如何快速搭建一个spring boot项目

一、准备工作 1.1 安装JDK&#xff1a;确保计算机上已安装Java Development Kit (JDK) 8或更高版本、并配置了环境变量 1.2 安装Maven&#xff1a;下载并安装Maven构建工具&#xff0c;这是Spring Boot官方推荐的构建工具。 1.3 安装代码编辑器&#xff1a;这里推荐使用Inte…

SLM401A系列42V商业照明线性恒流芯片 线性照明调光在LED模组及灯带智能球泡灯上应用

SLM401A系列型号选型&#xff1a; SLM401A10ED-7G:QFN1010-4 SLM401A15aa-7G:SOT23-3 SLM401A20aa-7G:SOT23-3 SLM401A20ED-7G:QFN1010-4 SLM401A25aa-7G:SOT23-3 SLM401A30aa-7G:SOT23-3 SLM401A40aa-7G:SOT23-3 SLM401A50aa-7G:SOT23-3 SLM401A6…

HTB:GreenHorn[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 再次使用nmap对这三个端口进行脚本、服务扫描 尝试先通过curl访问靶机80端口 将靶机IP与该域名写入hosts使DNS本地解析 使用浏览器访问greenhorn.htb 使用Wappalyzer插件查看该页面技术栈 尝试在sea…

HarmonyOS-消息推送

一. 服务简述 Push Kit&#xff08;推送服务&#xff09;是华为提供的消息推送平台&#xff0c;建立了从云端到终端的消息推送通道。所有HarmonyOS 应用可通过集成 Push Kit&#xff0c;实现向应用实时推送消息&#xff0c;使消息易见&#xff0c;构筑良好的用户关系&#xff0…