【论文阅读】Modeling the world from internet photo collections

1、摘要

互联网上有大量的图片,构成了最大和最多样的照片集合。计算机视觉研究者们该如何利用这些图片进行研究呢?本文从3维场景建模和可视化的角度探索这个问题。我们展示了一个structure-from-motion and image-based rendering 的算法,这个算法可以对由关键词搜索得到的图片进行操作。我们叫这个方法为 Photo Tourism,此方法已经促进了许多世界著名遗址景点的重构工作。这篇文章展示的算法和结果是对拥有良好照片(来自互联网)的世界遗址、城市、风景等进行三维场景重建的第一步。最后,我们还讨论了研究团队遇到的困难和关键开放性问题。

2、介绍

网络图像由于其无序、未校准、变化多、亮度不受控制、分辨率和质量等问题,而 很难被传统计算机视觉所应用。将这些图片应用在计算机视觉领域的一个主要挑战是:两张图片对应3D坐标的匹配问题。

本文的行文思路:首先回顾最新技术,然后介绍解决此问题的一些步骤,以及我们称之为Photo Tourism的可视化前端。然后,我们为本领域提出了一组开放的研究问题,包括为超大图像数据集创建更有效的对应和重建技术。本文的研究是在2006年文章的基础上发展而来的,发展了新的算法,更多详细内容详见:http://phototour.cs.washington.edu.

3、先前技术(历史介绍)

  • 特征匹配
  • SFM
  • 基于图像的重建
  • 基于图像的渲染
  • 图像浏览、图像标签的标注和传递

4、重建过程

4.1 关键点的检测和匹配

  1. 特征点检测:用SIFT提取每张图片的特征点,SIFT对每张图中每个特征点产生一个128维特征向量。SIFT提取特征的原理见SIFT原理
    在这里插入图片描述
    图中每个 f e a t u r e feature feature都是128维的向量

  2. 特征点的匹配:目的是需要让图片间,对应的特征点之间赋予权值。举例:如图,对imge1、imge2、imge3、imge4中,玩偶眼睛部位对应特征点互相建立权值,而不与其他部位相匹配。
    在这里插入图片描述

  3. 为了达到这个效果,需衡量特征点之间距离,由上一步sift特征提取过程,每个特征点由一个128维的向量描述,所以特征点之间的距离问题就是高维向量间的距离问题
    kd-tree可以将高维向量按二叉树分类,将不同大小的特征点分类至kd-tree上不同的叶子节点
    在这里插入图片描述

  4. 衡量匹配点间的距离: 将图片 i m a g e i image_i imagei中每个特征点 f e a t u r e i , m feature_{i,m} featurei,m,用ANN(近似最近邻搜索算法)搜索 i m a g e j image_j imagej的kd树中与 f e a t u r e i , m feature_{i,m} featurei,m最近的特征点,在不多于200次搜索中确定出2个最近邻点;
    如果两个最近邻 f e a t u r e j , p feature_{j,p} featurej,p f e a t u r e j , q feature_{j,q} featurej,q,与 f e a t u r e i , m feature_{i,m} featurei,m距离分别为d1,d2。且 d   1   d   2   \frac{d~1~}{d~2~} d 2 d 1 <0.6,则接受 f e a t u r e j , p feature_{j,p} featurej,p 认为 f e a t u r e i , m feature_{i,m} featurei,m与其匹配

  5. 为了保证图像两两之间的特征点匹配是1对1的,将 i m a g e i image_i imagei中所有特征点都匹配完最近邻后,只能保证两图特征点之间是1对1 或 n对1,若是n对1,则将相关的n对匹配删除

  6. 由上面步骤,可以得出图片间哪些特征点是匹配的。也就是二维像素平面上特征点的关系,匹配点对应世界坐标系(三维)下同一点,如下图,x与x’ 是一对匹配的特征点,他们都是三维空间的X点的投影
    在这里插入图片描述

  7. 估计基础矩阵F,用8点算法建立8维的线性方程组,和一个约束 d e t ( F ) = 0 det(F)=0 det(F)=0
    { p 1 F p 1 ′ = 0 p 2 F p 2 ′ = 0 . . . . p 8 F p 8 ′ = 0 d e t ( F ) = 0 \begin{cases} p_1Fp_1' = 0 \\ p_2Fp_2' = 0 \\ .... \\ p_8Fp_8' = 0 \\ det(F)= 0 \end{cases} p1Fp1=0p2Fp2=0....p8Fp8=0det(F)=0
    将线性方程组求解问题转为优化最小值问题,用RANSAC+LM算法迭代找到最小值进而求出基础矩阵,RANSAC是一种拟合方法
    RANSAC求基础矩阵的过程:
    1. 自动提取两幅图像的特征点集并建立初始“匹配对集” ;
    2. RANSAC 去除错误匹配对
    –2.1计算当前抽样所确定的基本矩阵 F,和它的一致点集 S(F);
    –2.2如果当前的一致集大于原先的一致集,则保持当前的一致集S(F)和相应的基本矩阵F, 并删去原先的一致集和相应的基本矩阵;
    –2.3由自适应算法终止抽样过程,获得最大一致集,最大一致集中的匹配对(内点)是正确 匹配对
    3.由最大一致集(即正确匹配对)重新估计基本矩阵。

  8. 以图片为节点,所有匹配的特征点按权重相连为线,组成一个图,论文中图示为在这里插入图片描述

4.2 SFM重构

  1. 估计每张图片的参数(平移旋转焦距)
    为了防止优化收敛到局部最小,需再估计合适的初始图片集,对应两种情况使用两种方式初始化
    方式一:
    ----当图片不能被单应性模型很好的描述时,从一对儿匹配特征点数量最多的两张图开始
    方式二:
    ----a)用RANSAC计算所有图像的单应性矩阵,并记录下来
    这里单应性应理解为:用相机从不同位置拍摄同一物体的图像之间存在单应性,可以用投影变换表示
    ----b)为了防止退化(选取图片过于相似,导致泛化性不够),在剩余图片中选一对单应性最low(匹配程度最小)的图,但最少不得小于100个匹配
    ----c)对此初始化的两张图,用5点算法建立方程组,RANSAC迭代估计参数,再执行两次bundle adjustment

  2. 初始化后,再用RANSAC迭代估计内外部参数,在RANSAC每个迭代中中,添加另一个观察到轨迹最多的摄像机,区别于初始化使用的5点算法,这里用DLT技术初始化这个相机的外部参数,返回一个上三角矩阵作为内部参数的估计

  3. 最后把观测到的点,经过内外部参数转换为世界坐标后,把此相机观测到的所有点加入最小化投影误差的优化中

  4. 重投影误差的最小化使用bundle adjustment算法,选出使重投影误差最小的观测点(二维)

  5. 步骤2-4过程图示如下
    在这里插入图片描述

  6. 得到观测点后,依次将点加入BA优化模型中,假设世界坐标系下P点在各个摄象机成像平面观测点为:p1p2p3p4…对应光线为:l1l2l3l4…。
    假设某次优化加入点p1,就在l2l3l4…中寻找与l1夹角最大的,如果最大夹角>2则可三角化,否则视为特殊情况(平行摄象机)

  7. sfm改进部分:
    1、丢弃包含离群点的轨迹,只将剩余的轨迹点加入优化中
    2、每次加入多个摄像机图片,每次按照图片之间匹配为0.75M为阈值添加
    3、估计径向畸变的参数

4.3 影像配准

  1. 目的:将sfm得出的点云与卫星地图、数字高程地图等对齐
  2. 问题:上述过程都基于相对坐标
  3. 方法:
    a)先估计出世界坐标系的Z轴方向(重力向量)
    b)三维对齐问题变为二维对齐问题,可以人工手动配准

5、图片渲染

  1. 应用界面的介绍:省略
  2. 图像平滑切换中的渲染:图像切换的两种情况
    1、 从一张图切换到另一张图
    2、 从一张图切换到手选的部分
    这里主要论述了切换过程中视角的方向需要合理的选择,切换过程中也需要合理的图像插值
  3. 两种插值方式:triangulating the point cloud 和 planar impostors
    文中用的是第二种方法,因为他的稳定性更高
    两种方法的原理
  4. 注意有两种不需要渲染的情形:
    1、两张图片几乎没有共同特征点,直接通过淡入淡出来显示
    2、当 c o m o n p l a n e ( C j , C k ) comonplane(C_j,C_k) comonplane(Cj,Ck) C j 、 C k C_j、C_k CjCk方向的均值垂直时

6、用户导航

  1. 软件使用方法:省略
  2. 自动传递用户标定的注释
    方法:(记某注释为a)
    1 、首先遍历所有图像,判断是否(a占满了图像)或者(a在图像中很小很小)
    2 、假如a至少有一个像素点在 i m a g e j image_j imagej中,图j的特征点集合为 P o i n t s ( C j ) Points(C_j) PointsCj,计算,当 0.05 < s i z e ( S a n n , C j ) < 0.8 0.05<size(S_{ann},C_j)<0.8 0.05<size(SannCj)<0.8时,就将这个注释传递到 i m a g e j image_j imagej

7、术语解释

SIFT

  • 论文中作用:提取图像的特征点,并以向量描述每个特征点
  • 定义:在不同的尺度空间上查找关键点,并计算出关键点的方向。
  • 原理:
    1、提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
    i. 用不同 σ \sigma σ的DOG来滤波 (DOG相当于LOG的离散化,先高斯平滑再差分求导,从而得出特征点的位置)图片
    在这里插入图片描述

ii. 上图中,每一层有多个特征图,层内和层间的关系如下:
每一层是一个octave
在octave内部:是对应不同 σ \sigma σ的高斯模糊图( σ \sigma σ, k σ k\sigma kσ, k 2 σ k^2\sigma k2σ,… k n σ k^n\sigma knσ
在这里插入图片描述
相减代表差分的过程
G ( x , y , k σ ) − G ( x , y , σ ) k σ − σ = ∂ G σ \frac{G(x,y,k\sigma)-G(x,y,\sigma)}{k\sigma-\sigma}=\frac{\partial G}{\sigma} kσσG(x,y,kσ)G(x,y,σ)=σG

在octave之间:上层的第一张是下层倒数第三章降采样生成
在这里插入图片描述
iii. 寻找特征点,差分后金子塔每一层中:

  1. 极值点=关键点
  2. 圆心=极值点坐标
  3. 半径=取极值时 σ \sigma σ 的大小
    如图,大圆圈来自金字塔顶部的特征点,小圆圈来自底部的特征点
    在这里插入图片描述

2、定位关键点并确定特征方向
在每个关键点的尺度 σ \sigma σ内计算梯度直方图(以特征点为中心, 3 ∗ 1.5 σ 3*1.5\sigma 31.5σ为半径)
在这里插入图片描述
梯度直方图横轴代表八个方向,对应纵坐标最大的两个方向,设置为主方向和辅方向

3、将图像按主方向旋转,旋转后重新将像素点网格化,然后计算每个特征点的向量描述
在这里插入图片描述

ANN(近似最近邻)

  • 论文中作用:有向量a、向量集合B,寻找B中与a距离大约最近的k个向量
  • 定义:Approximate Nearest Neighbor,给定一个向量X=[x1,x2,x3…xn],需要从海量的向量库中找到最相似的前K个向量。通常这些向量的维度很高,对于在线服务,用传统的方法查找是非常耗时的,容易使得时延上成为瓶颈,因此业界通用的方式就是将最相似的查找转换成Ann问题。
  • 原理:
    (1)将查询数据Q从根结点开始,按照Q与各个结点的比较结果向下访问Kd-Tree,直至达到叶子结点。
    其中Q与结点的比较指的是将Q对应于结点中的k维度上的值与m进行比较,若Q(k) < m,则访问左子树,否则访问右子树。达到叶子结点时,计算Q与叶子结点上保存的数据之间的距离,记录下最小距离对应的数据点,记为当前“最近邻点”Pcur和最小距离Dcur。
    (2)进行回溯(Backtracking)操作,该操作是为了找到离Q更近的“最近邻点”。即判断未被访问过的分支里是否还有离Q更近的点,它们之间的距离小于Dcur。
    如果Q与其父结点下的未被访问过的分支之间的距离小于Dcur,则认为该分支中存在离P更近的数据,进入该结点,进行(1)步骤一样的查找过程,如果找到更近的数据点,则更新为当前的“最近邻点”Pcur,并更新Dcur。
    如果Q与其父结点下的未被访问过的分支之间的距离大于Dcur,则说明该分支内不存在与Q更近的点。
    回溯的判断过程是从下往上进行的,直到回溯到根结点时已经不存在与P更近的分支为止。
    参考:基于kd-tree的近似最近邻查找过程

kd-tree

  • 论文中作用:为高维向量(每个特征点)之间界定距离
  • 定义:Kd-Tree,即K-dimensional tree,是一种高维索引树形数据结构,常用于在大规模的高维数据空间进行最近邻查找(Nearest Neighbor)和近似最近邻查找(Approximate Nearest Neighbor)
  • 原理:将二叉查找树(BST)推广到高维,以最大方差法来衡量高维向量大小,以中值法来界定划分区间;
    每个非叶节点将一个向量集合划分为两个向量集合,最终Kd-tree将一个高维向量集合划分为多个高维向量集合
    假设某节点将向量集合A划分为A1A2
    • 最大方差法: 对A中每个向量,kd树第 i 层按向量第 i 维的大小划分左右子树
    • 中值法:为了让A1A2集合大小尽量相同,把A中所有向量第 i 维的大小的中值作为划分的依据,低于中值归为左子树,高于中值归为右子树

单应性矩阵

  • 论文中作用:用于衡量两张图片的匹配程度

  • 定义:单应性被定义为图像的两个平面投影之间的映射关系,两个摄像机像素平面之间的变换矩阵

  • 原理:
    首先两个像素平面间的点满足关系
    [ x ′ y ′ 1 ] = ( h 11 , h 12 , h 13 h 21 , h 22 , h 23 h 13 , h 32 , h 33 ) . [ x y 1 ] \begin{bmatrix} x' \\ y'\\ 1\\ \end{bmatrix} = \begin{pmatrix} h_{11},h_{12},h_{13}\\ h_{21},h_{22},h_{23}\\ h_{13},h_{32},h_{33}\\ \end{pmatrix}. \begin{bmatrix} x\\ y\\ 1\\ \end{bmatrix} xy1=h11,h12,h13h21,h22,h23h13,h32,h33.xy1

  • 由上面方程推出:一对已知点可以对应两个关于H矩阵的方程
    x ′ = h 11 x + h 12 x + h 13 h 31 x + h 32 x + h 33 x'=\frac{h_{11}x+h_{12}x+h_{13}}{h_{31}x+h_{32}x+h_{33}} x=h31x+h32x+h33h11x+h12x+h13
    y ′ = h 11 y + h 12 y + h 13 h 31 y + h 32 y + h 33 y'=\frac{h_{11}y+h_{12}y+h_{13}}{h_{31}y+h_{32}y+h_{33}} y=h31y+h32y+h33h11y+h12y+h13

  • 4个已知点建立线性方程组为(N=4)
    在这里插入图片描述
    在这里插入图片描述

建立线性方程组之后,转为优化问题,再用RANSAC求解

bundle adjustment

  • 论文中作用:在RANSAC估计好内外参数的情况下,再估计一个世界坐标系下的三维点,从而最小化重投影误差
  • 定义:BA的本质是一个优化模型,其目的是最小化重投影误差
  • 原理:有待研究
  • 参考1参考2

8点算法

项目含义
O1、O2相机1、相机2
I、I’相机1成像平面、相机2成像平面
K、K’相机1内参数矩阵、相机2内参数矩阵
P世界坐标系下的点
p、p’P点在相机1、2成像平面上的投影点(成像点)坐标
R、TO2相对O1的旋转、平移矩阵

极几何理论推导得,p与p’满足关系: p ′ T F p = 0 p^{\prime T} F p=0 pTFp=0
其中F为基础矩阵。
p ′ T F p = 0 p^{\prime T} F p=0 pTFp=0可写为:
在这里插入图片描述
最终建立8维线性方程组,然后结合约束 d e t ( F ) = 0 det(F)=0 det(F)=0将方程组求解问题转为优化问题,最后用RANSAC迭代的方式求出F

RANSAC

  • 论文中作用
    在论文中有两个作用
    1、与LM结合,估计基础矩阵F
    2、与BA结合,做优化问题
  • 定义:一种拟合方式
  • 原理:
    一. RANSAC估计基本矩阵的步骤如下:
    1. 自动提取两幅图像的特征点集并建立初始“匹配对集” ;
    2. RANSAC 去除错误匹配对:
    2.1计算当前抽样所确定的基本矩阵 F,和它的一致点集 S(F);
    2.2如果当前的一致集大于原先的一致集,则保持当前的一致集S(F)和相应的基本矩阵F, 并删去原先的一致集和相应的基本矩阵
    2.3由自适应算法终止抽样过程,获得最大一致集,最大一致集中的匹配对(内点)是正确 匹配对。
    3.由最大一致集(即正确匹配对)重新估计基本矩阵
    参考:《计算机视觉中的数学方法》p408

二. RANSAC优化模型的过程如下:
①考虑一个最小抽样集的势为n的模型(n为初始化模型参数所需的最小样本数)和一个样本集P,集合P的样本数#§>n,从P中随机抽取包含n个样本的P的子集S初始化模型M;
②余集SC=P\S中与模型M的误差小于某一设定阈值t的样本集以及S构成S*。S*认为是内点集,它们构成S的一致集(Consensus Set)
③若 ( S*)≥N,认为得到正确的模型参数,并利用集S*(内点inliers)采用最小二乘等方法重新计算新的模型M*;重新随机抽取新的S,重复以上过程。
④在完成一定的抽样次数后,若未找到一致集则算法失败,否则选取抽样后得到的最大一致集判断内外点,算法结束。
参考:《计算机视觉中的数学方法》p408

DLT

  • 论文中作用:标定摄象机的内外参数
  • 定义:直接线性变换(DLT)是建立像点坐标仪和相应物点物方空间坐标之间直接的线性关系的算法。特点:不需要内外参数初值;适合于非量测相机;满足中、低精度的测量任务
  • 原理:待研究

极几何理论

  • 世界坐标、摄象机坐标、像素坐标
  • 摄象机内、外参数
  • 三角化
  • 本质矩阵
  • 基础矩阵
  • 影消点影消线

极几何学习笔记

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值