立体系统(Stereo Systems)总结

news/2025/2/12 12:44:43/文章来源:https://www.cnblogs.com/isletfall/p/18711361

上一讲中我们介绍了对极几何的相关知识,在这一讲开头我们先回顾一下平行图像平面的对极几何。

平行图像平面的对极几何(Parallel image planes)

在这种情况下,对应点的极线是水平的,光心连线与图像平面的交点(极点)在无穷远处,并且在这种平行配置下,同一个三维点在两个图像平面上投影点的 y 坐标是相等的,这些特殊的性质对我们恢复结构很有帮助。

图像校正(Rectification)

如图所示,图像校正也就是让两幅图像平行,校正前的两幅图像,其中物体的对应关系较为复杂,极线(图中虚线)并不平行。这是从两个不同视角拍摄的同一场景,能看到物体的相对位置和角度存在差异,而校正后的图像此时极线变得平行,图像中的物体仿佛在同一平面上对齐。这通过应用单应性变换(Homogra-phy,图中用 H 表示)实现,它对图像进行了几何变换,将图像平面调整到平行状态。

这种做法也给我们带来了许多的好处:

\(\bullet\) 使对应问题变得更容易:在立体视觉中,寻找两幅图像中的对应点是关键任务,平行图像中对应点位于同一水平极线上,只需在水平方向搜索,大幅简化了匹配过程。

\(\bullet\) 使三角测量变得容易:三角测量用于从两个或多个视角的图像来计算三维点的位置,平行图像的规则几何关系让基于视差的三角测量计算更简便。

\(\bullet\) 支持图像插值方案:图像插值是根据已知像素值估计未知像素值,平行图像的规律性为设计有效的插值算法提供了便利,有助于提高图像分辨率或填补图像缺失部分等操作。

深度计算(Computing depth)

深度计算是上述方法的一个特别经典的应用。

  • P:三维空间中的一个点。

  • OO':两个相机的光心,它们之间的距离为基线(baseline),用 B 表示。

  • uu':点P在两个相机成像平面上的投影点的横坐标。

  • f:相机的焦距。

  • z:点P到相机光心的深度距离。

  • 公式 $ u - u'=\frac{B\cdot f}{z} = \text{disparity} $。其中, $ u - u' $ 表示视差(disparity),它是同一个点在两个相机图像平面上投影点的横坐标之差。

  • 视差与深度成反比,也就是说,物体离相机越远(深度 $ z $ 越大),视差越小;物体离相机越近(深度 $ z $ 越小),视差越大。

通过测量同一点在两个不同视角图像中的视差,并结合已知的相机焦距和基线长度,就可以计算出该点在三维空间中的深度。

对应问题(Correspondence problem)

本节课的重点是对应问题:给定三维空间中的一个点,找出它在左右图像中的对应观测点(也称为双目融合问题)。对应问题是立体视觉中的关键问题。其核心在于如何准确地匹配三维空间中的同一个点在不同视角(这里是左右两个相机视角)图像上的投影点。解决这个问题对于后续的深度计算、三维重建等任务至关重要,因为只有确定了对应点,才能基于视差原理计算出点的深度信息。

正如前文所述,当我们对图像进行校正后,这个问题将变得非常简单。

解决这类问题有三种方法:

  • A Cooperative Model (Marr and Poggio, 1976):合作模型(马尔和波焦,1976 年)。这是一种早期用于解决对应问题的模型,由 Marr 和 Poggio 在 1976 年提出。

  • Correlation Methods (1970--):相关方法(始于 1970 年)。这类方法通过计算图像块之间的相关性来寻找对应点,是 20 世纪 70 年代开始应用于解决对应问题的一类经典方法。

  • Multi - Scale Edge Matching (Marr, Poggio and Grimson, 1979 - 81):多尺度边缘匹配(马尔、波焦和格里姆森,1979 - 1981 年)。该方法由 Marr、Poggio 和 Grimson 在 1979 - 1981 年间提出,通过在不同尺度上匹配图像的边缘信息来解决对应问题。

本文将详细介绍第二种方法。

假设我们的每一个点都有一个特征值,为了在右图中寻找左图中的点的对应点,我们需要找到一个点使得它与左图中的点的特征值最为接近,实际上,这个问题其实是一个相关性匹配的问题。

具体的操作步骤如图所示,图中不同颜色表示图像点具有不同的特征值,首先我们需要在图像 1 中以点 \(\bar{p}=(\bar{u}, \bar{v})\) 为中心选取一个窗口 \(W\),然后将窗口 \(W\) 内的像素信息或特征信息按一定顺序排列成向量形式。接着在图像 2 中沿 \(v = \bar{v}\) 滑动窗口 \(W'\) ,并对每个位置构建向量 \(w'\),最后对图像 2 中窗口 \(W'\) 滑动到的每个 \(u\) 位置,计算向量 \(w\)\(w'\) 的点积,保留最大值,该最大值对应的位置即为图像 1 中点 \(\bar{p}\) 在图像 2 中的可能对应点。

但是这种做法也存在一些问题,比如两幅图像由于亮度或者曝光的变化,两张图像中对应区域(窗口)的像素强度值的统计特性(均值和方差)也会发生改变,这种变化可能会对相关方法产生影响,导致匹配错误或性能下降。

为了解决该问题,人们对算法进行了改进,如图所示:

我们采用归一化互相关的方法,通过最大化归一化互相关的计算结果来寻找最佳匹配,即最大化:
\( \frac{(W - \bar{W})(W' - \bar{W}')}{\|(W - \bar{W})\|\|(W' - \bar{W}')\|} \)
其中,\(W\)\(W'\) 分别是图像 1 和图像 2 中的窗口,\(\bar{W}\)\(\bar{W}'\) 分别是它们的均值。

该公式用于计算两个窗口之间的归一化互相关值。通过最大化这个值,可以确定图像 1 中的点在图像 2 中的对应点。这种方法相比简单的相关方法,对光照变化等因素具有更强的鲁棒性,因为它对窗口内的像素值进行了归一化处理。

对于上述方法,窗口大小的选择对于结果有着很大的影响,选取小的窗口能够保留图像中的细微特征,但由于覆盖范围小,也容易受到局部噪声影响。选取大的窗口能够得到更平滑的视差图,在计算视差等任务中,大窗口能使结果更平滑,并且不易受噪声影响,对局部噪声有一定的平均抑制作用。因此窗口大小的选择是一个权衡细节和噪声的过程,需根据具体需求进行调整。

对应问题中存在的问题

  • 透视缩短效应(Fore shortening effect)

有一个倾斜的物体(用紫色椭圆表示),由于物体的倾斜角度,在两个相机成像平面上的投影会出现透视缩短现象,即物体在图像中的尺寸和形状会因视角不同而发生变化,这会给立体匹配带来困难。

  • 遮挡(Occlusions)

存在一个遮挡物(用蓝色不规则图形表示),它阻挡了部分场景在相机中的成像。对于被遮挡的区域,一个相机能看到,但另一个相机可能看不到,导致在立体匹配时难以找到对应的点。

在立体深度估计中,我们希望有较小的 B/z 比值。其中 B 通常代表两个相机光心之间的基线距离(baseline),z 代表物体到相机的深度距离。较小的 B/z 比值有利于某些深度估计任务。同时在深度估计过程中,测量的微小偏差可能会导致深度计算结果出现较大的误差。正如上图所示,可以看到,由于测量误差(成像点从 $ u' $ 变为 $ u_{e}' $ ),在估计物体(蓝色部分)的深度时会产生较大偏差(绿色点和红色点在深度位置上的差异)。这些问题反映了在立体视觉深度估计中,精确测量和合适的系统参数(如 B/z 比值)对于获得准确深度信息的重要性。

在两幅图像中存在着同质区域,具有相似的视觉特征。在匹配过程中,由于同质区域的相似性,可能会导致误匹配(mismatch)。即在进行立体匹配时,难以准确区分这些区域中的点,从而产生错误的对应关系。

如果图像中具有重复出现的纹理或结构,这些重复图案会给匹配算法带来挑战。由于图案相似,算法难以准确区分不同位置的相同图案,可能导致误匹配,即无法正确找到两幅图像中对应的点。

上述问题都是当前对应问题中难以解决的问题,解决的思路是应用非局部约束来帮助强化对应关系,可以引入非局部的约束条件,利用图像中更广泛区域的信息来辅助确定对应点,提高匹配的准确性和鲁棒性。

课件中也给出了一些比较常见的非局部约束条件:

  • Uniqueness(唯一性):对于一幅图像中的任何一个点,在另一幅图像中最多应该有一个匹配点。这一约束确保了匹配的唯一性,避免一个点对应多个点的模糊匹配情况。

  • Ordering(顺序性):对应点在两个视图中应该具有相同的顺序。例如,在左图像中从左到右的一系列点,在右图像中的对应点也应保持相同的从左到右的顺序,这有助于在匹配过程中利用点的顺序关系来验证匹配的正确性。

  • Smoothness(平滑性):视差通常是 x 的平滑函数(遮挡边界除外)。意味着在场景中,除了在遮挡边界处,相邻点的视差值变化应该是平滑的,不会出现剧烈的跳变。这一约束可以帮助在匹配过程中对相邻点的视差进行合理的推断和约束。

这些非局部约束条件常用于辅助计算机视觉算法在处理对应问题时,更准确地建立图像之间的点对应关系,提高匹配的精度和可靠性。

以上就是本节课的全部内容,如有问题,请指正。

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

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

相关文章

DeepSeek AI 满血版功能集成到WPS或Microsoft Office中

DeepSeek AI集成到 WPS或Microsoft Office中, 由于deepseek被攻击或者非常繁忙导致超时的服务器,所以可以用硅基流动部署的DeepSeek 。当然用官网的也可以。使用 OfficeAI 插件集成(wps为例): 下载并安装 OfficeAI 插件:从可靠的软件下载平台https://www.office-ai.cn/,获…

第二章:计算机的构成

复习第一章:需要一台计算机,在研究其组成的方向上进行努力TL;DR计算机由四大核心部分组成:输入设备、输出设备、存储器和运算器 计算机内部采用二进制表示所有信息,包括数字、文字和指令等等 冯诺依曼体系结构是现代计算机的基础框架正文在了解了计算机的诞生历史后,我们来…

第一课 泰坦尼克号预测

目录导入数据将训练数据与测试数据合并查看数据描述性统计查看是否有异常值查看特征与标签之间的关系查看标签是否有偏态数据预处理填充缺失值特征工程特征创造同组识别筛选子集建模 导入数据 将训练数据与测试数据合并 查看数据 描述性统计查看是否有异常值看看各个数据是否偏…

美团面试:手机扫描PC二维码登录,底层原理和完整流程是什么?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

docker官网镜像无法下载问题解决

亲测可用,这个方法是由技术爬爬虾大佬提供,简单地说就是通过github上的docker_image_pusher项目,将国外docker镜像转存到阿里云私人仓库。 此方法需要你有一个github账号,有一个阿里云账号。注册方法这里就不赘述了。 1.1. 获取阿里云相关参数 登录阿里云容器镜像服务。地…

Uptime-kuba安装与使用

Github https://github.com/louislam/uptime-kuma环境查看 系统环境# cat /etc/redhat-release Rocky Linux release 9.3 (Blue Onyx) # uname -a Linux Rocky9Uptimekume003077 5.14.0-362.18.1.el9_3.0.1.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Feb 11 13:49:23 UTC 2024 x86_6…

一文读懂本地部署DeepSeek-R1,如何选择

一文读懂本地部署DeepSeek-R1,如何选择! 想在本地服务器部署DeepSeek-R1?那可得先搞清楚不同版本的硬件需求。DeepSeek-R1是个超厉害的语言模型,有好几个版本,每个版本对计算资源和硬件的要求都不一样。这篇文章能帮你了解各版本的参数、所需硬件,以及怎么根据自身需求选…

LLaMa-Factory 本地微调 Deepseek R1 1.5B 大模型

LLaMA Factory 是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过 Web UI 界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架之一。项目提供了多个高层次抽象的调用接口,包含多阶段训练,推理测试,benchmark评测,API Server等,使开…

一文读懂本地部署DeepSeek,如何选择

一文读懂本地部署DeepSeek,如何选择! 想在本地服务器部署DeepSeek-R1?那可得先搞清楚不同版本的硬件需求。DeepSeek-R1是个超厉害的语言模型,有好几个版本,每个版本对计算资源和硬件的要求都不一样。这篇文章能帮你了解各版本的参数、所需硬件,以及怎么根据自身需求选合适…

在线客服的独立产品之路:如何将复杂的 .NET 系统打包到 Docker 镜像,使之能一键上线

我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营一款独立产品的经验。在这篇文章中,我主要讲 Docker 打包发…

raylib U1S07 - 拖动功能的实现

本来想做一个文字逃脱游戏的demo的。但是写起来之后发现——是真的不好写,要实现的功能太多了。要是在一节课或者一篇文章里把功能实现完,我吃不消学起来也难受,索性就拆开实现了。 这一篇先实现一个拖动的效果。看图:实现的功能:一个小球,可以在鼠标按下的时候跟着鼠标走…

002 Vue开发前的准备

1、安装Vue工具 Vue CLIhttp://vuejs.org 官网http://cn.vuejs.org 中文版官网     cli.vuejs.org Vue3最新版网址       Vue CLI Vue.js开发的标准工具,Vue CLI是一个基于Vue.进行快速开发的完整体系npm install -g @vue/cli 安装之后,你就可以在命令行中…