[译]Multi-View Stereo: A Tutorial(1)

摘要:

该教程是MVS领域专注于实用算法的实践手册,MVS算法只依赖于图像,基于一些合理的假设(比如?)重建出真实精确的3d模型. 最重要的是场景固定.该教程将mvs问题转化成图像/几何约束优化问题.详细来说主要在两方面: 1.鲁棒实现图像一致性检测;2.有效的优化算法.
主要讲了这两因素在应用程序和工业中如何应用.本教程还描述了高级方法涉及到领域专业知识如:结构优化,以及接下来的挑战和未来的研究方向.

1简介

1.1 图像获取
有序无序

1.2 相机投影模型
如简介所述,为了使重建效果更好,MVS算法需要额外的信息,尤其是每个图片对应的相机模型-它描述了如何将3D点投影到对应的2D空间,MVS算法常采用针孔相机模型,它的相机投影矩阵是3X4的矩阵[88],按比例定义的.这是通常用于拍摄静态照片的现成数码相机的模型。任何一个3X4的矩阵都可以分解成3x3的上三角矩阵K和3X4姿态矩阵的乘积[R|T].

K --- 相机内参矩阵
(fx, fy): 垂直/水平焦距
(cx, cy): 主点
s : 扭曲畸变

[R|T] --- 外参矩阵
R : 旋转参数
T : 平移参数

矩阵K是相机的内参矩阵,它是由相机的内参组成,垂直、水平焦点(光心)长度(fx, fy),主点(cx, cy),畸变参数s。[R|T]矩阵为外参矩阵,R是相机的旋转矩阵,T是相机的平移矩阵。由于相机传感器的质量问题,人们很少估计相机投影矩阵的11个参数,一般假设 没有畸变即s = 0,传感器为方形即fx = fy,图像没被裁剪时主点在相机中心,因此普通针孔相机的相机参数由 焦距f,旋转矩阵R和平移矩阵T中7个参数组成;

对于附加镜头成像效果不好或者广角相机(如图1.4左所示),单纯的针孔相机模型不足以表示相机模型,通常要加上一个径向畸变.尤其是对高分辨率图像径向畸变是很重要的,因为微小的偏离将会涉及到边界的多个像素值.
径向畸变通常在进入MVS算法流程之前消除,如果径向畸变参数已经估算出来,可以通过重新采样对图像反畸变处理消除畸变,就像是通过理想镜头获取的无畸变图像(图1.4左下)。消除图像畸变可以简化MVS算法,计算时间更短。一些相机如手机相机或者专用硬件在图像获取之后进行去畸变处理.注意修正的广角图像需要重新采样及视野裁剪,为了避免这些问题mvs算法需要支持径向畸变及更复杂的相机模型,这增加额外的复杂度。
最后,滚动快门是特别复杂模型的另一原因,对视频处理应用很重要(见图1.4右)。 带有滚动快门的数字传感器暴光出每一排图像的时间略有不同。 这与全局快门形成鲜明对比,全局快门是将整个图像同时曝光。 滚动快门通常以更高的更高的传感器吞吐量,其相机模型更加复杂。 因此,在捕获图像时如果相机或场景在移动,图像的每一行捕获的场景略微不同。 如果相机或场景运动缓慢。w.r.t. 快门速度很快,滚动快门效果小到足以被忽略。 否则,相机投影模型需要融合快门效果[63]。

1.3 Structure from Motion
有许多关于 Structure from Motion 算法的文章,本章的目的也不是详细介绍该算发,接下来我们会讨论一些SFM算法的关键点以及它与MVS算法的关系。
SFM算法输入一系列图像,输出每张图像的相机参数和图像中3D点,通常被称为迹点, 迹点通常是重建3D点的空间坐标以及其在对应图像上的2D坐标.当下SFM算法的基本流程如图1.5所示:

计算每张图像的2D特征点
图像间2D特征点匹配
从匹配关系构建2D tracks
从2D tracks 解sfm 模型
bundle adjustment优化sfm模型

SfM的初步工作主要集中在刚性场景的假设下二视图和三视图下的几何特征的构建上[88]。 Carlo Tomasi的视觉重建算法[182]是早期工作的雏形。 SfM的关键发展之一是在嘈杂的匹配中使用RANSAC [61]鲁棒的估计二视图和三视图之间的极线几何。

然后,成果集中在SfM算法的两个关键部分:1)从多个相机计算欧几里德重建(缩放),即估计摄像机参数和迹点的3D位置;2)构建更长的2D迹点, 20世纪末,SfM算法能够从大型结构化图像集稳健地获取计算模型,例如从图像序列或视频序列[62,152]。第一批SfM工业解决方案开始商业化应用,例如在电影编辑和特效领域[4]。

最初这些系统主要是为结构化图像集而设计的,即图像顺序非常重要,例如视频序列。 虽然一些MVS应用程序可以实现结构化顺序,例如,Google StreetView [81]或微软 Streetside [143],许多最近的MVS应用程序也使用在不同时间、不同硬件获取的、无序的图像集,例如,航拍图像的3D地图[108,144,30]。 随着质量高速度快的特征检测器[87,135,57]和描述子[135,36,159,130,26]的发展,使SfM能够应用于非结构化数据集。 高质量的描述子使从不同拍摄姿态和照明构建更长质量更高的迹点成为可能。

解决大型非结构化照片SfM的最终要素是改善匹配阶段。 对于非结构化照片集,人们没有任何关于候选图像附近应该匹配的先验知识。 因此,每个图像必须与其他图像一一匹配,即计算上非常昂贵。 有效的索引[146]结合高质量的描述子允许数百万的有效成对匹配的图像。 简化连通图的迹点[172]和并行化[25,64]进一步导致业界使用的t state-of the-art 的SfM流程,例如,微软的photosynth [16]和谷歌的photo tours[15](见图1.6)。

1.4 Bundle Adjustment

算法: RANSAC 从有噪声的匹配中计算极线几何
1> 多相机的欧几里得重建---估算相机参数和tracks 3D点
2> 构建longer tracks

尽管BA算法不是SFM算法的一部分,优化SFM算法的初始模型是常见步骤,给一系列相机参数{Pi}和迹点s{Mj,{mji}}, Mj代表轨迹点的3D坐标,mij代表在第i个摄像机的投影2d图像坐标。BA算法最小化以下非线性最小二乘误差

式中: v(j):是点Mj可见的摄像机索引列表
pi(mj):表示相机中3D点Mj在相机i及相机参数Pi的2D投影坐标,
E(P,M):通常以平方像素测量,但更常见度量是使用均方根误差或RMSE来表达估计精度,以像素为单位测量,定义如下:

其中N是(1.2)中剩余项数的和。BA算法之前的典型RMSE值大约为几个像素,而BA优化之后的值通常是亚像素。
BA框架支持将多个传感器与SfM目标相结合。 SfM融合GPS和IMU数据的一种方法是简单地添加单独项到式(1.2),惩罚偏差来自GPS和IMU信号的预测与相机模型Pi。

MVS算法对相机模型估计的准确性非常敏感。 原因是,出于效率目的,他们使用由相机模型定义的极线几何将2D问题匹配成一维匹配问题(更多细节参见第1.5节)。 如果重投影错误很大,则像素可能永远不会与其真实匹配相比,显着降低了MVS性能。 MVS对相机重投影误差的鲁棒性取决于主要是关于如何容忍匹配标准(即第2章中提出的照片一致性措施)是否错位。 通常,照片一致性度量的域Ω越大(参见式2.1),测量越稳健。 不幸的是,很大域也倾向于产生过度平滑的几何,所以有一个准确性和稳健性之间的妥协。

由于MVS对重投影错误非常敏感,因此BA算法通常是MVS的要求,目标是子像素重投影错误。 请注意,因为重投影错误是以像素为单位测量的,可以对输入图像进行下采样并重新缩放相机参数,直到重投影误差降至某个阈值以下。 这个只要下采样图像仍然包含,方法就会起作用足够的纹理和细节让MVS发挥作用[72]。

1.5 Multi-View Stereo
多视图立体视觉的起源可以追溯到人类立体视觉,并且是第一次尝试解决立体匹配问题,通过把它作为一个计算问题[139]。 直到今天,双视图立体算法一直是一个非常活跃非常成熟的研究领域[162]。多视图立体几何起源于对双视图立体几何的自然改进。 多视图立体几何不是从两个不同的视点捕获两张照片,而是在视点中间捕获更多的照片以增加稳健性,例如图像噪声或表面纹理[184,147],最初是一种改进双视立体声的方法,如今演变成一种不同类型的问题。

虽然MVS与这种经典立体声具有相同的算法原理,MVS算法旨在处理图像更多变化的视点,例如围绕物体的图像集,并且还处理非常大量的图像,即使在数百万的订单。 MVS问题性质的差异最终会产生与经典不同的算法立体声对应物 作为一个例子,3D绘图的工业应用[108,144,30],处理数百万张照片一次千米,有效地重建大都市区,国家,最终整个世界。

匹配图像中的像素是一个具有挑战性的问题独特的立体声或多视角立体声。 事实上,光流是另一回事计算机视觉领域非常活跃,解决了图像密集对应的问题[33]。 与MVS的主要区别在于光流通常是两个图像问题(类似于两个视图立体声),相机未校准,其主要应用是图像插值而不是3D重建。请注意,在MVS的情况下,摄像机参数是已知,求解场景的3D几何形状完全相同解决输入图像中的对应问题。 查看为什么,考虑属于3D场景几何的3D点(参见图1.7左)。 将3D点投影到可见摄像机组中建立投影坐标之间的唯一对应关系在每个图像上。给定图像中的像素,在其他像素中找到相应的像素图像需要两个成分:
在其他方面生成可能的像素候选的有效方法图片。
?衡量某个候选人是否正确的可能性的衡量标准比赛。

如果不知道相机的几何形状,通常情况就是如此在光流中,图像中的每个像素可以匹配另一图像中的任何其他像素。也就是说,对于每个像素,必须在另一个像素中进行2D搜索图片。但是,当相机参数已知时(和场景是刚性的),图像匹配问题从2D搜索简化进行一维搜索(见右图1.7)。图像中的像素生成a3D光线穿过像素和相机中心图片。另一个图像上的相应像素只能位于其上将光线投射到第二幅图像中。不同的多个摄像机看到的几何约束来自不同视点的相同3D场景被称为极线几何[88]。至于判断候选人匹配的可能性的措施,有一个关于如何建立所谓的照片一致性措施的大量文献估计两个像素(或像素组)的可能性在通信中。 MVS背景下的照片一致性测量在第2章中有更详细的介绍。

原文地址:https://www.cnblogs.com/baozhilin/p/11415698.html

时间: 2024-10-29 12:31:18

[译]Multi-View Stereo: A Tutorial(1)的相关文章

[译]Multi-View Stereo: A Tutorial(3)

chapter 3 基于图像一致性的三维重建 基于第二章的图像一致性算法,本章将会详细介绍最近几年流行的多视角立体几何算法.区分MVS算法有许多因素,例如图像一致性函数,场景表达,可视化计算和初始化条件.因此提出一个单独的分类并不容易.本文将会依据输出的场景表示方法作为主要分类方式.因为它决定了应用的场景,有兴趣的读者可以参考[165]查看mvs算法的分类方法. Fig3.1 表示4种常用的表示方法:深度图.点云.体素场.mesh面片,本章将会介绍每种重建算法的state-of-the-art

[译]Android view 测量布局和绘制的流程

原文链接 创造优秀的用户体验是我们开发者的主要目标之一.为此, 我们首先要了解系统是如何工作的, 这样我们才可以更好的与系统配合, 从它的优点中获益, 规避它的缺陷. 之前关于Android渲染过程的文章 这次我们主要关注Measure/Layout(测量和布局)的阶段, 这些阶段决定了视图的大小和位置, 以便于我们能够绘制它. Step 1: Measure 测量 目标: 确定是图的大小 视图的大小包含其子视图的大小, 且必须符合其父视图的要求 视图的大小由2个方面决定: 测量宽度与测量高度

[摘抄] SFM 和 Visual SLAM

SFM和vSLAM基本讨论的是同一问题,不过SFM是vision方向的叫法,而vSLAM是robotics方向的叫法, vSLAM所谓的mapping,我们vision方向叫structure,vSLAM所谓的location,我们vision方向叫camera pose. 但是从出发点考虑的话,SFM主要是要完成3D reconstuction,而vSLAM主要是要完成localization. 从方法论的角度上考虑的话,传统的SFM是不要求prediction的,但是对于vSLAM而言pre

Enhancing Android UI with Custom Views 通过自定义view来让你的UI更屌!

Enhancing Android UI with Custom Views (通过自定义view来让你的UI更屌) Table of Contents: Custom View View Measurement View Drawing Custom Attributes Custom ViewGroup ViewGroup Measurement Layout ViewGroup Drawing More Custom Attributes There are many great adva

Dynamic Table View Cell Height and Auto Layout(转)

11/23/2014: Updated to be compatible with iOS 7, iOS 8, and Xcode 6.1. If you wanted to create a customized table view complete with dynamic table view cell height in the past, you had to write a lot of sizing code. You had to calculate the height of

Android 中常见控件的介绍和使用

1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.lang.Object   ? android.view.View   ? android.widget.TextView 直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 间接子类: AutoCompleteTextV

Visual 3D Modeling from Images

Acknowledgments Notations Contents Introduction 3D from images Overview Projective geometry Projective geometry The projective plane Projective 3-space Transformations Conics and quadrics The stratification of 3D geometry Projective stratum Affine st

String,CString,TCHAR,char之间区别和联系

char是类型TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是char还是w_char; TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符 #ifdef UNICODE   typedef wchar_t TCHAR;   #else   typedef char TCHAR;   #endif 所以用MBCS来build时,TCHAR是char,使用UN

Struts2 简介

回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记录下创建过程,方便查阅. 1.下载Struts2的jar包 下载地址:http://archive.apache.org/dist/struts/binaries/ 我用的是struts-2.3.14-all.zip这个版本 2.创建一个web project项目 下面给出所有文件均创建完成后的工程师图. 3.导入Struts2所需jar包 因为只是示例程序,只需要导入Struts 2支持最小的包就可以了,网上很多教程中添加的