立体视觉几何(一)

1.什么是立体视觉几何

在这里插入图片描述

立体视觉=对应+重建:
• 对应:给定一幅图像中的点pl,找到另一幅图像中的对应点pr。
• 重建:给定对应关系(pl, pr),计算空间中相应点的3D 坐标P。

立体视觉:从图像中的投影恢复场景中点的三维位置的过程

类型:基于窗口/局部的算法和全局算法

三角测量:给定pl,我们知道点P位于连接pl和左光心Cl的直线Ll上。**假设我们确切地知道相机的参数,我们可以显式计算 Ll 和 Lr 的参数。**因此,我们可以计算两条直线的交点,即点 P

本地立体算法步骤

◇ 匹配代价计算:SSD、SAD、MSE、MAD
◇ 代价聚合
◇ 视差计算和优化
◇ 视差细化

指用于从一对立体图像(或称为双目图像)中计算深度信息的一系列步骤。在计算机视觉领域,这些算法通过比较同一场景的两个稍有不同视角的图像来估计物体的距离。

  1. 匹配成本计算:这是立体匹配的第一步。目标是确定立体图像对中的两个像素有多匹配。常见的匹配成本计算方法包括:

    • SSD(平方差之和):测量对应图像区块中像素强度的平方差。
    • SAD(绝对差之和):类似于SSD,但使用绝对差值。
    • MSE(均方误差):区域内平方差的平均值。
    • MAD(平均绝对差):区域内绝对差的平均值。

    这些方法用于计算每个像素可能视差的成本。成本越低,表示匹配越好。

  2. 成本聚合:在计算了初步匹配成本之后,通常会在邻域内聚合这些成本,以提高对噪声和无纹理区域的鲁棒性。聚合步骤有助于引入上下文信息,减少初步匹配中不正确匹配的影响。

  3. 视差计算和优化:这一步涉及为每个像素选择最小化聚合成本的视差值(即在两幅图像中匹配像素之间的水平位移)。可以应用优化方法,如动态规划、图割或半全局匹配,以找到整个图像中最一致的视差值。

  4. 视差细化:从前一步获得的初步视差图可能存在不准确之处,特别是在物体边界或遮挡区域附近。因此,会采用中值滤波、左右一致性检查(用于识别和纠正遮挡或匹配错误)和亚像素增强等细化步骤,来提高视差图的质量。

通过遵循这些步骤,本地立体声算法可以生成代表场景深度信息的视差图。这个图在3D重建、自主导航和虚拟现实等多种应用中非常关键。

寻找对应

稀疏和密集对应
在这里插入图片描述

解决对应问题(correspondence problem)是立体视觉中的一个核心问题,特别是在处理双目(或多目)立体图像时。在这个上下文中,对应问题指的是确定一幅图像中的像素点在另一幅图像中的匹配点。理解这一问题的关键在于了解“极线约束”(epipolar constraints)。

  1. 二维搜索域的问题: 如果没有任何约束,为了在一幅图像中找到另一幅图像的每个像素点的对应点,理论上需要在整个图像平面上进行搜索。这称为二维搜索域,它导致计算量非常大,且容易产生错误匹配。

  2. 极线约束(Epipolar Constraints): 幸运的是,在立体视觉中,我们可以利用极线约束来显著减少搜索的复杂度,缩小特征点匹配时的搜索范围。极线约束基于这样一个事实:对于第一幅图像中的任何一个点,其在第二幅图像中的对应点必定位于一条特定的线上,这条线称为极线。

    • 极线是由摄像机的几何配置决定的。具体来说,给定第一个摄像机拍摄的一个点,第二个摄像机拍摄的对应点必须位于连接这个点和两个摄像机中心的线与第二个摄像机成像平面的交线上。
    • 这意味着,对于第一幅图像中的任何点,我们不需要在第二幅图像的整个平面上搜索其对应点,而只需要在一条线上进行搜索。
  3. 如何应用极线约束:

    • 在实际应用中,首先要确定两个摄像机之间的几何关系,包括它们的位置和方向。这通常通过称为**的过程完成。
    • 一旦摄像机被标定,就可以计算出极线,并将搜索对应点的问题从一个二维问题简化为一个一维问题。
    • 这样,匹配过程变得更加高效,并且匹配错误的可能性也大大减少。

总之,极线约束是解决立体视觉中对应问题的关键,它通过将复杂的二维搜索问题简化为一维搜索,使得深度估计变得更加可行和精确。

图像校正

图像校正(Rectification)是立体视觉系统中的一项重要技术,它在搜索图像对应点之前通常会被执行,以简化搜索过程。让我们分析一下校正的动机、实现方法和一种简单的解决方案:

动机

  • 简化对应点搜索: 在没有校正的情况下,对应点可能位于图像的任何位置,这导致在二维空间中进行搜索。图像校正的主要目的是将这种二维搜索简化为一维搜索,使问题更易于处理。
  • 将极线对齐到水平扫描线: 校正后的图像具有这样一个属性,即任一点在另一图像中的对应点位于同一水平扫描线上。这大大降低了匹配算法的复杂度。

实现

  • 输入图像校正: 校正过程涉及对输入图像进行变换,以使得对应的水平扫描线成为极线。这意味着,如果在一个图像中找到了一个特征点,那么在另一个图像中的对应点将位于相同的水平位置。
  • 独立匹配水平扫描线: 校正后,每一对水平扫描线可以独立匹配,计算匹配分数。这极大简化了算法的复杂度,因为算法只需要在一维空间内(即同一扫描线内)搜索对应点。

简单解决方案:旋转摄像机

  • 摄像机旋转: 一种实现图像校正的简单方法是物理地或通过软件旋转两台摄像机,使它们垂直于连接摄像机中心的线(c0 和 c1)。这样做的结果是,摄像机拍摄的图像中的极线会自然地与水平扫描线对齐。
  • 对齐效果: 通过这种方式,极线被对齐到水平方向,从而使得在双目立体视觉系统中匹配对应点变得更加简单和直接。

总结

图像校正在立体视觉中扮演着关键角色,它通过简化对应点的搜索过程来提高了系统的效率和匹配的准确性。通过物理或软件方法校正摄像机,可以使得极线对齐到水平扫描线,从而将原本的二维搜索问题转化为一维搜索问题。这不仅简化了计算过程,还提高了匹配的精度和系统的整体性能。

  1. 同态变换(Homography)的概念:

    • 在计算机视觉中,同态变换是一种变换,它可以将一个平面内的点映射到另一个平面内的点。
    • 在双目立体视觉系统中,这种变换可以用来调整两个摄像头拍摄的图像,使得它们在一个共同的平面(P)上对齐。
  2. 映射到共同平面 P:

    • 假设有一个平面 P 在空间中,以及两个同态变换 Hl 和 Hr 分别对应于左图像和右图像。
    • 这两个变换的作用是将两个图像映射到平面 P 上,同时保证平面 P 平行于连接两个摄像头中心点(Cl 和 Cr)的线。
    • 通过这样的映射,两个图像在新的平面 P 上具有相同的视角和几何关系。
  3. 极线的平行性:

    • 当两个图像映射到这样的平面 P 上时,极线(即那些在一个图像中的点可能在另一个图像中找到匹配点的线)会变得平行。
    • 这是因为平面 P 被设定为平行于 Cl 和 Cr 连线,所以在校正后的图像中,所有极线都是平行的。
  4. 极线与图像行的平行性:

    • 通过适当选择坐标系,可以确保这些平行的极线与图像的行平行。
    • 这意味着,在校正后的图像中,任何一个点的可能匹配点都将位于另一图像的同一行上。

这个过程的关键是通过同态变换将两个图像映射到一个共同的平面上,并调整它们的视角使得极线平行于该平面。通过这种方式,极线也就与图像的行平行,从而将匹配点的搜索简化为在水平行上的一维搜索,大大简化了计算过程,并提高了效率和准确性。这种方法在双目立体视觉系统中广泛应用,特别是在需要高精度和高效率的应用场景中。
在这里插入图片描述
则校正算法为:
• 选择与 CrCl 平行的平面 P
• 定义 P 上的左右图像坐标系
• 根据 P 和虚拟图像的坐标系构造校正矩阵 Hl 和 Hr。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/419017.html

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

相关文章

一台手机用4年多,国产手机从态度傲慢到跪求消费者换机

分析机构trendforce公布的数据指出,中国消费者的换机周期已延长到51个月,面对消费者对国产手机用脚投票,如今国产手机企业开始采取多方举措,祈求消费者买手机,市场的变化促使国产手机不得不改变态度。 2010年国产手机刚…

VM使用教程--SDK取图 视频笔记

本笔记均由海康机器人官网的V学院视频中记录所得,属于省流大师了[doge] 图像采集 图像采集包括1图像源,2多图采集,3输出图像,4缓存图像,5光源 1图像源 图像源包括本地图像,相机采图,SDK 本…

二维旋转公式推导+旋转椭圆的公式推导

二维旋转公式推导+旋转椭圆的公式推导 二维旋转公式推导旋转椭圆的公式推导二维旋转公式推导 x , y x,y x,y表示二维坐标系中原坐标点, x ′ , y ′ x,y x′,y′表示逆时针旋转 β \beta β之后的坐标点: x ′ = x cos ⁡ ( β ) − y sin ⁡ ( β ) y ′ = y cos ⁡ ( β )…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于混合博弈的配电网与多综合能源微网优化运行》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及到配电网和多综合能源微网的优化运行,而优化的方法基于混合博弈理论。让我们逐步解读这个标题的关键部分: 基于混合…

QT+opencv源码编译

时间记录:2024/1/20 一、版本介绍 QT5.12.7cmake3.22.0opencv4.5.4 二、编译步骤 (1)下载opencv源码,然后安装,opencv的安装即对源码的解压过程,解压后的文件目录如下 (2)openc…

【C++】vector容器接口要点的补充

接口缩容 在VS编译器的模式下&#xff0c;类似于erase和insert接口的函数通常会进行缩容&#xff0c;因此&#xff0c;insert和erase行参中的迭代器可能会失效。下图中以erase为例&#xff1a; 代码如下&#xff1a; #include <iostream> #include <vector> #inclu…

Leetcode2829. k-avoiding 数组的最小总和

Every day a Leetcode 题目来源&#xff1a;2829. k-avoiding 数组的最小总和 解法1&#xff1a;贪心 哈希 从 1 开始枚举数 x&#xff0c;如果 k - x 不在哈希表里&#xff0c;说明可以插入 k-avoiding 数组&#xff0c;sum 加上 x&#xff0c;向哈希表插入 x。 当哈希表…

131. 分割回文串 - 力扣(LeetCode)

问题描述 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 输入示例 s "aab"输出示例 [["a","a","b"],["…

分布式锁的产生以及使用

日常开发中&#xff0c;针对一些需要锁定资源的操作&#xff0c;例如商城的订单超卖问题、订单重复提交问题等。 都是为了解决在资源有限的情况限制客户端的访问&#xff0c;对应的是限流。 单节点锁问题 目前针对这种锁资源的情况采取的往往是互斥锁&#xff0c;例如 java 里…

高性能跨平台网络通信框架 HP-Socket v5.9.5

项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4478351216.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v5.9.5 更新 一、主要更新 问题修复&#xff1a;由于 v5.9.4 版本升级了 KCP 导致 UDP AR…

C语言中的变量与scanf介绍(干货)

目录 前言 一、变量 1. 变量的创建 2. 变量的分类 3. 强制类型转换 二、scanf介绍 1. scanf的基本用法 2. scanf的返回值 3. scanf的占位符 4. 赋值忽略符 结语&#xff1a; 前言 我们在前面的文章中介绍了数据类型&#xff0c;以及printf函数的使用。 C语言中的数…

为什么使用物理、数学等工具不能实现对人类智能的模拟

物理和数学是研究自然界和抽象概念的工具&#xff0c;它们为我们提供了理论和方法来解决问题。在实现类人的智能方面&#xff0c;物理和数学可以应用于以下几个方面&#xff1a; 1、计算机科学和算法 数学中的逻辑、统计学和优化理论等可以用于开发智能算法和机器学习模型。这些…