基于MVS的三维重建算法学习笔记(三)— 立体匹配概述

这篇具有很好参考价值的文章主要介绍了基于MVS的三维重建算法学习笔记(三)— 立体匹配概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

声明

本人书写本系列博客目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。

立体匹配

在之前的博客中简单介绍过立体匹配,它是MVS稠密重建中的重要环节,而在这篇博客中,将详细的介绍立体匹配的相关概念,其中详细的过程和原理参考教程:70. 三维重建5-立体匹配1,立体匹配算法总体理解,该作者对意大利Bologna大学的Stefano Mattoccia教授在2012年编写的"Stereo vision: algorithms and applications"做了详细且透彻的解读。

立体视觉系统概述

基于MVS的三维重建算法学习笔记(三)— 立体匹配概述
在上一文中介绍了许多立体视觉相关的基础知识,将每一部分进行整合运用,就能够建立起完整的立体视觉系统,其中包括相机标定、极线矫正、立体匹配、三角测量,最终得到场景或者物体的深度信息:

1. 相机标定

基于MVS的三维重建算法学习笔记(三)— 立体匹配概述

相机标定的目的是获得两个相机的内参(焦距、图像中心、畸变参数等)以及外参(世界坐标系与相机坐标系之间的变换矩阵R和T),之后对图像进行校准,处理并获取图像的立体点对;

2. 极线矫正

基于MVS的三维重建算法学习笔记(三)— 立体匹配概述
接下来,利用校准得到的图像点对信息进行极线矫正,目的是消除镜头畸变,并且将立体点对转华为标准形式。(对应点对依据对极约束理论被限制两图像极线所形成的平面上,并且通过极线矫正进而将对应点的二维搜索空间缩小到了一维)
基于MVS的三维重建算法学习笔记(三)— 立体匹配概述
当做到这一点后,就可以很方便的在水平方向搜索一个图像上的一点在另外一个图像上的对应点。如上图所示,左图上的一点p在右图上的对应点是p’,视差 d = x R − x T d=x_R-x_T d=xRxT,而b是两个相机光心的距离, f是焦距。

3. 立体匹配

旨在寻找目标图像在原图相中的对应点,而找到对应点后,求取空间点和相机之间距离的关键就变成了求取其投影点视差了。而整个图像上所有点的视差构成了一幅图像,这个图像叫做视差图;而通过校正后的一对图像获取到视差图的过程,叫做立体匹配;立体匹配属于立体视觉以及MVS稠密重建的重要部分,将在下面详细讨论;

4. 三角测量

如上图所示,根据相似三角形的计算,很容易可以得到物体距离相机观测点的距离(或深度): b Z = ( b + x T ) − x R Z − f → Z = b ⋅ f x R − x T = b ⋅ f d \frac{b}{Z}=\frac{(b+x_T)-x_R}{Z-f} \rightarrow Z=\frac{b·f}{x_R-x_T}=\frac{b·f}{d} Zb=Zf(b+xT)xRZ=xRxTbf=dbf
而给定视差图(立体匹配得到)、基线和焦距(校准后),三角测量就可以计算三维空间中点对应的位置,从而得到深度图。
基于MVS的三维重建算法学习笔记(三)— 立体匹配概述

立体匹配基本流程

若想要求得两个已校正的图像间的视差图,即转换为给定源图像上一点,在目标图像中的同一行约束范围 d m a x d_{max} dmax内搜索与源图像匹配的对应点,如下图1所示;设匹配代价为 ∣ I R ( x , y ) − I T ( x + d , y ) ∣ |I_R(x,y)-I_T(x+d,y)| IR(x,y)IT(x+d,y),那么目标图像中所有待定像素的匹配代价如下图2所示;WTA(Winner Takes All,赢者通吃)是一种搜索策略,即从所有候选像素中挑选匹配代价最低的最为对应点;
基于MVS的三维重建算法学习笔记(三)— 立体匹配概述
基于MVS的三维重建算法学习笔记(三)— 立体匹配概述
但是由于噪声和距离等因素的影响,通过最基础的方法并不能得到理想的视差结果,这就引出了立体匹配优化视差结果的基本思路——图像预处理、匹配代价计算、代价聚合、视差优化、视察细化;
基于MVS的三维重建算法学习笔记(三)— 立体匹配概述

基本思路

该部分@Wang Hawk也对"Stereo vision: algorithms and applications"进行了详细的解读,具体分为以下几个模块:
71. 三维重建6-立体匹配2,立体匹配中的代价聚合
72. 三维重建7-立体匹配3,立体匹配算法中的视差优化
73. 三维重建8-立体匹配4,利用视差后处理完善结果

  1. 图像预处理(Pro-processing):若两幅图像的亮度、噪声不一致,一般会先对图像做预处理,使得两幅图像的整体质量区域一致;
  2. 匹配代价计算(Cost Computation):衡量待匹配像素与候选像素之间的相关性。两个像素无论是否为同名点,都可以通过匹配代价函数计算匹配代价,代价越小则说明相关性越大,是同名点的概率也越大。
  3. 局部代价聚合(Cost aggregation):通过对代价立方体中同一视差的代价进行某种程度的聚合,来减少或消除错误代价的影响;
  4. 全局视差优化(Disparity optimization):通过最优化某个能量函数 E ( d ) = E d a t a ( d ) + E s m o o t h ( d ) E(d)=E_{data}(d)+E_{smooth}(d) E(d)=Edata(d)+Esmooth(d),寻找到每个像素的最优视差结果,使得全局的、整体的匹配代价最小;
  5. 视差细化/后处理(Disparity refinement):根据前面的步骤最终将输出一张视差图,然而即便是在上面那些受约束的场景,得到的视差图依然不是完美的,还是有很多错误。因此,还需要一个细化的步骤,来消除其中的错误,得到更准确的视差图;

方法分类

关于立体匹配的策略,一般存在几种不同(不是互相排斥)的类别:

  1. 局部匹配算法:1+2+WTA(Winner Takes All,赢家通吃)——使用简单的WTA视差选择策略,并且通过在支持窗口(support window)上聚合匹配代价来减少模糊(ambiguity);
  2. 全局匹配算法:1+(可选2)+3——使用基于像素的匹配代价,通过最优化某个能量函数 E ( d ) = E d a t a ( d ) + E s m o o t h ( d ) E(d)=E_{data}(d)+E_{smooth}(d) E(d)=Edata(d)+Esmooth(d),寻找到每个像素的最优视差结果;
  3. 半全局匹配算法:1+2+3,例如SGM;

参考文献和资料

[1]70. 三维重建5-立体匹配1,立体匹配算法总体理解
[2]“Stereo vision: algorithms and applications”文章来源地址https://www.toymoban.com/news/detail-500522.html

到了这里,关于基于MVS的三维重建算法学习笔记(三)— 立体匹配概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Nerf的三维重建算法Neus初探

    目录 介绍 安装 训练开源数据 训练自己的数据 作者提出了一种新的神经表面重建方法,称为NeuS,用于从2D图像输入中以高保真度重建对象和场景。在NeuS中,我们建议将曲面表示为有符号距离函数(SDF)的零级集,并开发一种新的体绘制方法来训练神经SDF表示。我们观察到,

    2024年02月09日
    浏览(36)
  • Qt designer设计UI实例:双视图立体匹配与重建的可视化UI

    PyQt5和Qt designer的详细安装教程 :https://blog.csdn.net/qq_43811536/article/details/135185233?spm=1001.2014.3001.5501 Qt designer界面和所有组件功能的详细介绍 :https://blog.csdn.net/qq_43811536/article/details/135186862?spm=1001.2014.3001.5501 输入 :一对左右眼视图的图像。 任务 :对输入的一对带相机参数的左

    2024年02月04日
    浏览(30)
  • 【项目实战】三维重建:基于RGB-D数据集的TSDF算法

    主要流程: 计算每个体素在深度图像中的TSDF值,然后基于前一个体素的TSDF值更新后一个(加权平均),最后得到所有体素的结果,拼接为3D模型。 TSDF需要非常大的显存空间,GPU需要大概 2KB 存储单个体素的所有信息。因此, 只适用于小场景下的三维重建(如室内环境)。

    2024年02月12日
    浏览(30)
  • 双目立体视觉之立体匹配算法

    双目立体视觉是指使用两个摄像机从不同的角度获取同一个场景的左右视图,然后使用双目立体匹配算法来寻找左右视图中的匹配像素点对,最后利用三角测量原理来还原三维空间物理点过程。其中双目立体匹配算法是最为核心的。 立体匹配是一种根据平面图像来恢复真实场

    2024年02月04日
    浏览(33)
  • 【三维重建】【深度学习】【数据集】基于COLMAP制作自己的NeRF(LLFF格式)数据集

    提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 LLFF格式是NeRF网络模型训练使用的数据集格式之一,本文基于COLMAP软件展示从LLFF格式数据集的制作到开始模型训练的完整流程。NeRF(神经辐射场)通过输入同一场景不同视角下

    2024年02月10日
    浏览(34)
  • 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等

    【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、

    2024年02月16日
    浏览(40)
  • 双目立体匹配算法SGM步骤拆解

            立体匹配是立体视觉研究中的关键部分,其目标是在两个或多个视点中匹配相应像素点,计算视差。双目摄像头类似人眼的工作原理,对同一目标可以形成视差,用来感知三维世界,由于成本远低于激光雷达,因此在自动驾驶领域被广泛研究。         SGM(

    2024年02月07日
    浏览(28)
  • 三维重建SfM算法

    三维重建的 SfM (Structure from Motion) 算法是通过多张二维图片来重建三维场景的算法。 特征点提取 在这个步骤中,需要对每张图片提取出一些特征点,并计算它们的描述子。在特征点提取的过程中,可以使用 SIFT,SURF 等算法。一般来说,一个好的特征点需要具备旋转不变性、

    2024年02月02日
    浏览(27)
  • 三维重建——商汤NeuralRecon算法详解与论文解读

    论文地址:https://arxiv.org/abs/2104.00681 代码链接见文末 代码详解: https://blog.csdn.net/qq_52053775/article/details/128880856         三维重建,就是将2D的图片信息重建为3D的信息。应用领域广泛。可以应用于原型设计、虚拟现实等。 (1) 相机成像         相机成像一般是小孔成像的原

    2024年02月13日
    浏览(25)
  • 【CloudCompare教程】008:基于点云的三维模型重建(泊松重建)

    本文讲述基于点云的三维模型重建方法,PoissonRecon是“Poisson Surface Reconstruction”的缩写,它是由约翰霍普金斯大学的Misha Kazhdan47提出的三角形网格生成算法的简单接口。 加载兔子点云,如下图所示: 在三维模型构建之前,应先计算法向量,否则会有以下提示:点云必须具有

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包