前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >68. 三维重建3-两视图几何

68. 三维重建3-两视图几何

作者头像
HawkWang
发布2022-03-29 16:12:34
8950
发布2022-03-29 16:12:34
举报
文章被收录于专栏:计算摄影学

我在文章66. 三维重建1——相机几何模型和投影矩阵和67. 三维重建2——相机几何参数标定中介绍了相机的透视几何模型,以及如何求取这个模型中的各项参数

现在我们来思考一个问题:如果已知某个图像中的点的坐标,如何能够求得它在三维空间中的物点的位置?

由这个问题开始,我今天会讲到几个内容,希望这些内容能给你启发

  • 三角测量法
  • 对极几何
  • 本质矩阵
  • 基础矩阵

一. 三角测量

1.1 基本模型

很显然,由于上图中红色射线上任何一个点X都可以映射到图像上的点x,因此单从这个模型我们是如法确定三维点的确切位置的。要想确定物点的位置,最基础的方案就是对同一个物点用两个相机分别成像,并利用一个叫做“三角测量(Triangulation)”的技术,来进行定位。

三角测量法首先要求我们已知两个相机的相机矩阵P和P',以及一对匹配的图像点x和x',所需要求取的是这对图像点对应的真实物点的坐标。

它的基本思想可以用下图总结出来。

实际上,由于噪声的存在,上面图中两条光线很可能不相交,因此实际求解过程又要用到最优化的技术,下面进行具体的数学分析

1.2 数学分析

首先,我们还是回到基本的模型

这里面,坐标都是齐次坐标,因此尺度是不确定的。关于这一点,你齐次坐标的知识,你可以再看看我在66. 三维重建1——相机几何模型和投影矩阵中的介绍。我们加入这个不确定的尺度,于是有

观察上述等式,我们有x和PX都是3维向量,它们方向一致,只相差一个未知的尺度\alpha。这里,我又提到了“向量”这个也许你已经不再记得很清晰的数学名词了,因此我在下一小节再啰嗦一下向量的一些关键知识,以便于进行后面的推导。

1.2.1 复习向量的知识

首先,在数学中,向量是具有长度和方向的量。在本文的范畴中,向量可用于表示空间中两个点的方向和距离。

如果我们将向量的长度归一化为1,就会得到单位向量

向量和向量之间是可以进行运算的,我们下面特别介绍向量和向量的点积和叉积:

向量的点积

向量的点积结果是一个数,通常用于确定向量之间的夹角。

由于有了这个定义,确定夹角的余弦只需要做简单的计算即可:

同时,也可以很方便的计算一个向量在另外一个向量上的投影:

根据向量的定义,我们很容易发现,当两个向量的夹角为90度(即两个向量正交)时,两个向量的点积为0,请你记住这一点,待会我们还会用到这个知识。

向量的叉积

上面我们看到,向量的点积结果是一个数。而向量的叉积结果却是一个向量。既然是向量,那么就有长度和方向,下图展示了向量叉积结果的长度和方向。

根据上面的定义,我们知道了最重要的两点:

  • 两个向量叉积结果是一个向量,且这个新向量和原始的两个向量都正交,
  • 如果两个向量的方向一致,那么它们叉积结果向量的长度为0

叉积结果的数学表达略微复杂,但还是可以理解的:

虽然关于向量还有很多知识可以讲,但对今天这篇文章来说,上面这些信息已经足够你理解后面的内容了。我再小结一下:

  • 向量是具有长度和方向的量,我们这里向量可用于表示空间中两个点的方向和距离。
  • 两个向量叉积结果是一个向量,且这个新向量和原始的两个向量都正交
  • 如果两个向量的方向一致,那么它们叉积结果向量的长度为0
  • 两个向量点积的结果是一个数。如果两个向量正交,那么它们点积的结果为0

1.2.2 求解X

回到基础的模型

这里,虽然等号左右两边都是表示的点,但从数学上讲我们也可以把任何一个点看做是一个向量。于是,我们看到x和PX是同方向的向量,只是尺度不一样。因为两个方向一致的向量叉积结果是一个长度为0的向量,那么就有:

现在展开基础模型,有

把P的每一行简写,有:

之前讲过叉积的表达式是:

把上面的结论代入到叉积表达式,有:

注意上面式子的第三行其实可以用第1、2行线性组合而成,所以我们可以简写为:

现在结论就很明显了:一对点X->x,提供了两个方程。现在我们有两幅图像,因此我们有四个方程:

由于X中只有3个未知的坐标分量,现在有4个约束方程,所以我们必然可以用最小二乘的方式求得X。而且,在文章67. 三维重建2——相机几何参数标定中,我已经介绍过这种形式的式子的解法了,就是用SVD分解可以直接得到解,在此就不再赘述了。总之,只要知道一对匹配点x和x',已知两个相机的相机矩阵P和P',就能够根据上述方法求得物点X。

既然我们在这一节已经看到了两个相机的作用,接下来我们就进一步分析两个相机成像时,还有哪些几何约束。

二. 对极几何

当一个三维点通过两个相邻的相机成像时,满足下面的对极几何关系,这里面有几个关键的概念:

  • 两个光心o和o',即相机中心
  • 光心的连线,叫做基线
  • 基线穿过两个图像平面形成的交点,叫做极点。也可以认为光心在图像平面上的投影叫做极点
  • 物点p和两个光心构成的平面叫做极平面
  • 极平面和两个图像平面的交线称为极线

这时候,如果物点在图像1的投影点为x,那么在另外一幅图像2中的投影点一定位于极线l'上,如下图所示:

我们又可以进一步得到这个模型中更多的几何性质:

  • 一幅图中的像点总是对应着另一幅图中的极线
  • 一幅图中的极线总是映射为另一幅图中的像点
  • 极线总是通过极点,不同的物点对应着不同的极线,但一幅图像中所有的极线总是相较于极点

注意上面最后一个性质,极点不一定总是在图像上,比如下面这个场景,极点就在图像之外(依然在图像平面上)。

当两个相机平行时,极点甚至可以位于无穷远处

当我们已知一个图像点,想要搜索它在另外一个图像的对应点时,就可以利用上面讲的对极约束,只在第二幅图像的极线上进行搜索,从而加快搜索速度

这个性质对我之后要讲解的立体匹配非常重要,此处暂且按下不表。但我们不禁要问一个问题:如何才能求得极线?这就引出了我下面要讲解的本质矩阵的概念。

三. 本质矩阵

3.1 本质矩阵及性质

回到我们的基本投影模型,可以看到点X投影到像平面上为x

如果已知x点在像平面上的坐标,根据对极约束,可以通过左乘本质矩阵E来求得右图的极线,如下图所示。注意这里依然用齐次坐标来表达,所以E是一个3x3的矩阵,而l'则用一个3x1的向量来表达。

我们知道,二维空间中的一条直线可以表达为下面的形式:

所以极线可以表示为

现在我们知道图像点x是位于极线l上的,那么很容易得到下面这个结论:

结合上面两点,我们很容易得到另外一个关于本质矩阵的性质:

你在之前可能听说过单应矩阵,我在上一篇文章67. 三维重建2——相机几何参数标定中也提到过单应矩阵。使用单应矩阵能将一个平面图像上的点映射到另外一个平面上,它跟现在讲的本质矩阵的异同我用下图总结:

3.2 本质矩阵的数学几何解释

现在我们来解释一下本质矩阵的由来。由下图可见,我们很容易通过一些简单的变换从点x得到点x'

  • 假设两个光心之间的向量为t,x和x'分别是以o和o'为原点的相机坐标系中的点
  • 先把点x平移到x-t,可以认为x-t是以o'为原点了
  • 然后,绕原点o'旋转x-t点,旋转矩阵为R,这样就得到了x'点

很容易知道x, t, x'这3个向量是共面的(记住,点同时也代表从坐标原点指向它的向量)

记住我们之前学过的关于向量的几个性质:

  • 两个向量叉积结果是一个向量,且这个新向量和原始的两个向量都正交
  • 如果两个向量的方向一致,那么它们叉积结果向量的长度为0
  • 两个向量点积的结果是一个数。如果两个向量正交,那么它们点积的结果为0

那么就有:

把上面的几点整合起来,就有:

之前讲过,向量的叉积可以用“矩阵乘以向量”来表示,因此就有了

本质矩阵是英国科学家Longuet-Higgins在1981年提出的,以上这个等式我们也称作Longuet-Higgins等式。

3.3 本质矩阵的性质

总结一下本质矩阵的性质

本质矩阵的上述性质的数学公式里面,2D点都是位于相机坐标系的,现在我们再回头看看相机矩阵的各个组成部分,可以看到当我们使用本质矩阵时,默认内参矩阵为单位矩阵,坐标原点位于主点,坐标单位为毫米这样的长度单位。但实际上,我们通常得到的像点都是位于图像像素坐标系的,其左边原点位于图像左上角,坐标单位为像素。这时应该怎么办呢?这就引出了下一节所要介绍的基础矩阵的概念

四. 基础矩阵

4.1 基本性质

现在我们把相机坐标系中的坐标转换为像素坐标系中的坐标,这需要用到相机的内参矩阵K,如下图所示。注意这里用了^符号来标明相机坐标系中的坐标:

很容易通过Longuet-Higgins等式得到下面的式子,这就是基础矩阵F的由来:

所有本质矩阵E的性质,基础矩阵都继承了,只不过应用时2D点的坐标位于图像的像素坐标系:

除了上述性质之外,基础矩阵还有一个重要性质,就是它是一个奇异矩阵,其秩为2。这一点很重要,稍后我们会用到这个性质。

因为有

所以基础矩阵里面同时包含了相机的内参数矩阵K和外参矩阵R/t,那么已知像素坐标x和x',我们如何来求基础矩阵呢?

4.2 8点法求基础矩阵

根据基础矩阵的定义,我们会看到每一对匹配点都满足下面的约束关系:

很自然的,我们会想是不是也能像之前一样,把上面这个约束转换为AX=0的线性形式,从而采用SVD来求取结果。所以接下来,我们需要展开上式来观察每一对匹配点,到底提供了什么样的约束。

强行展开上式有:

暴力采用矩阵乘法的定义,我们会看到一对匹配点提供了1个约束等式,注意等号左右两边都是标量:

由于F中有9个元素,最后一个元素和前面8个元素有线性约束关系,所以我们一共需要求解8个未知数,于是我们至少需要8对匹配点,构建8个方程:

这个式子又是我们熟悉的AX=0的形式,再加上约束项,就变为下面这个最优化问题,这样就可以用SVD来求解了,神奇吧~

4.3 8点法求基础矩阵的完整过程

正如我在文章67. 三维重建2——相机几何参数标定中所描述的,我们现在采用的方法是一种DLT方法,而这种方法在实际使用时需要首先对数据进行归一化。那么实际求解F的过程就变成了(我们假设两个图像的匹配点已经求出):

正如我在上一篇文章中所说,8点法这样的DLT方法只是最优化了代数距离,它的结果是不够好的,一般来说是用于设定非线性迭代式优化方法的初始值。由于篇幅原因,我这里就不再介绍通过非线性方法求解基础矩阵的完整过程了,但其基本原理和上一篇文章67. 三维重建2——相机几何参数标定中介绍的相机标定时的核心思想是一致的。另外计算的结果很容易收到匹配点的误差的影响,因此实际计算时需要通过RANSAC这类方法去除掉外点。读者可以阅读《计算机视觉中的多视角几何》一书的11.4节至11.6节了解详情。

4.4 示例

下面我们看到了同一个场景用两个相机成像的结果,你可以看到它们的视角差异很大

你可以尝试用上述的方法来求取基础矩阵。如果我们知道了基础矩阵,很容易求得其对应的极线。下面给出具体的数据:

将对应的极线可视化,我们有:

按照这种方法,找出两幅图像上很多极线,并可视化如下:

你可以看出,第1幅图的很多极线相交于图像外的某处——也就是说它的极点位于图像外。定位极点也很容易,因为Fe=0, 所以只需要对F进行SVD分解就可以得到e,你可以试试。

五. 总结

在上一篇文章67. 三维重建2——相机几何参数标定中,我们已经求得了相机矩阵P,并分解得到了内、外参。今天延续上一篇文章,我讲解了下面几部分内容:

  • 三角测量:已知一对投影点,和相机矩阵,如何反求空间中的物点
  • 对角几何:对同一场景用两个相机成像时的几何约束关系
  • 本质矩阵:在相机坐标系中的对极几何约束的数学关系
  • 基础矩阵:在图像像素坐标系中的对极几何约束的数学关系,以及如何用8点法来求基础矩阵

因为篇幅原因,我省掉了如何通过非线性最小二乘法自动的求解基础矩阵的过程。总而言之,有了基础矩阵,就可以求取对极几何约束中的一些关键信息了,这也就为我之后讲解图像的立体校正和立体匹配打下了基础,敬请期待我的下一篇文章!

六. 参考资料

  1. CMU 2021 Fall Computational Photography Course 15-463, Lecture 17
  2. Richard Szeliski, Computer Vision: Algorithms and Application.
  3. Richard Hartley and Andrew Zisserman, Multiple View Geometry in Computer Vision, 2nd Edition
  4. 闫令琪, GAMES101:现代计算机图形学入门
  5. 67. 三维重建2——相机几何参数标定
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算摄影学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 三角测量
    • 1.1 基本模型
      • 1.2 数学分析
        • 1.2.1 复习向量的知识
          • 1.2.2 求解X
          • 二. 对极几何
          • 三. 本质矩阵
            • 3.1 本质矩阵及性质
              • 3.2 本质矩阵的数学几何解释
                • 3.3 本质矩阵的性质
                • 四. 基础矩阵
                  • 4.1 基本性质
                    • 4.2 8点法求基础矩阵
                      • 4.3 8点法求基础矩阵的完整过程
                        • 4.4 示例
                        • 五. 总结
                        • 六. 参考资料
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档