前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >66. 三维重建——相机几何模型和投影矩阵

66. 三维重建——相机几何模型和投影矩阵

作者头像
HawkWang
发布2022-01-19 16:20:21
1.7K0
发布2022-01-19 16:20:21
举报
文章被收录于专栏:计算摄影学计算摄影学

在文章29. 小孔相机中,我介绍了小孔相机的成像模型。如果你看了这篇文章,你应该至少有了一个重要印象,即相机是一个将三维物体投影为二维图像的设备。

虽然在这篇文章中,我已经介绍了小孔相机和薄透镜相机成像时的基本模型,但也留下了很多没有讲清楚的地方。例如,成像过程中的相机矩阵的几何解释,如何求得相机矩阵,还有各种不同的投影方式的相机矩阵的区别等等。

考虑到这个专栏的后续好几篇文章都会涉及到三维重建,因此今天这篇文章将回顾基本的成像模型,分析各种成像形式下的相机矩阵。为下一篇文章讲述相机的几何参数标定打下基础。

一. 基本的投影模型

正如上面所说,相机是一个将三维物体投影为二维图像的设备。

对于小孔相机,或者薄透镜相机来说,基础投影的数学模型可以表达为

我们把这个过程表达在笛卡尔坐标系中,是这样的:

对这个模型,有几个点需要注意:

第1, 为了数学计算的方便,将像平面移到了相机之前,如下图所示

第2,薄透镜成像模型中,假设了对焦距离和对应小孔相机的焦距一致

你在文献里面可能经常会看到focal length, focus distance等等概念,有时候会比较让人混淆。这里需要说明薄透镜成像模型的一些假设:

  • 薄透镜成像时,通常只考虑了接近光轴的光线
  • 薄透镜成像时,假设像距和对应的小孔相机的焦距一致
  • 我们上图中的f,是指对焦距离,即清晰成像的像距(传感器到镜头间的距离)。而并非透镜的焦距。

第3,这里采用了齐次坐标

现在我们来谈谈点的坐标变换,以及齐次坐标,稍微补充一下这些知识,更有助于理解后面的内容。

二. 变换和齐次坐标

2.1 二维变换和齐次坐标表达

先来看看二维空间中的点,我们通常用一个二维向量来表示这个一个普通二维点p,一幅图像会由很多个二维点构成,如下图所示。

我们很容易用二维矩阵和点的乘法来表示对点(进而对图像)的缩放、旋转、错切等操作,如下图所示

不幸的是,用二维矩阵与点的乘法无法表达二维点的平移操作。你可以自己演算下,看看下图中是否能够找到合理的二维矩阵和点的乘法来表达平移。

现在让我们引入齐次坐标。当我们用齐次坐标表达一个点时,我们只需要加入一个不为0的第三个坐标,就很容易用1个三维矩阵来表达平移了。要注意的是,加入任何不为0的w后,以齐次坐标的规则按下图进行坐标的等比例变化,都表示的是同一个点。

采用齐次坐标,我们很容易将各种二维变换统一到一起,用矩阵来表达这种变换:

2.2 三维变换和齐次坐标表达

在讨论相机成像时,我们需要处理三维空间中的点。因此我们来看看三维点的齐次坐标和相关的变换。

三维点的齐次表达是二维点的齐次表达的自然衍生,依然是加入1个不为0的新维度

一些基本变换用齐次坐标的表达的形式也非常相似,这里面唯一不同的是3D旋转

三维空间中的旋转有可能是绕着任何一个旋转轴进行的,形式比较复杂。我们可以先看看绕着基本的坐标轴旋转的情况:

这样,绕着任何一个旋转轴的旋转,可以用上面这些基础旋转组合而成(绝大多数情况下是)

由于上面这些基础旋转都可以用4x4的变换矩阵表达,因此合并的旋转矩阵也就是1个4x4的矩阵。

最终,采用了齐次坐标,我们就可以把各种三维变换也用矩阵和点的乘法来表达了:

2.3 旋转矩阵的特别之处

看看下面这张图,我们把原图进行旋转θ度,再把结果旋转-θ度。

很容易得到下面两个结论,这说明旋转矩阵是单位正交矩阵,这个性质对之后我们理解相机矩阵是很有用的。

基本上,理解投影和相机矩阵的基础数学知识就回顾到这里,差不多够了。下一节我们继续来看看投影和相机矩阵。

三. 投影及相机矩阵

3.1 基础小孔相机投影矩阵

回到我们的小孔成像模型,如下图所示。我们的问题是空间点X和虚拟像平面上的点x之间的投影矩阵是什么?

很明显这里可以利用相似三角形来求解这个关系

我们用齐次坐标来表达这个过程,注意点的二维齐次坐标的特性是任意等比例变换后,表示的是同一个点。

稍微思考一下,就可以用矩阵和点的乘法来表达,这里转换矩阵就是P

这个转换矩阵还可以进一步拆分成下面的样子:

这里面的归一化投影变换,可以按下图来理解,即将三维空间点投影到了一个对焦距离为1的标准像平面上。

3.2 从投影图像到像素坐标

当点X投影到虚拟像平面成为点x时,从三维上讲,依然是在和三维点X同一个坐标系中,原点位于光心,点x的Z值为对焦距离f。而从二维上讲,我们可以认为原点位于主点,如下图所示

这里面就牵涉出两个问题。

问题一:坐标原点问题

一般来说,实际图像的坐标系原点并不是在主点。常见的设定是将原点放置于左上角或左下角,就像下图所示

这意味着我们按照3.1节所示进行投影,得到的坐标值需要按照新老原点的相对位置进行偏移。

这样,我们的投影矩阵需要加入偏移量:

问题二:坐标单位问题

当我们投影到虚拟像平面时,所有的单位都是不变的。例如我们采用毫米来描述三维点相对相机光心(原点)的位置时,虚拟像平面上的像点的坐标就依然用毫米来描述。然而,真正转换成最终的图像时,我们习惯于用像素来描述相关的坐标。这意味着我们按照3.1节所示投影得到的坐标值,里面相关元素都需要按照毫米到像素的比例进行等比例的变化。

那么,投影矩阵进一步变为:

3.3 从世界坐标到相机坐标

我们当前在表达小孔相机的投影模型时,认为三维空间点X的坐标是位于相机坐标系的,如下图所示:

然而,在实际的投影时,我们有时很难用相对于光心的位置来表达坐标。比如在拍摄下面这个美女时,除非经过精确的相机于她的脸部的空间关系的测量,否则我们很难表达她的右眼角相对于相机光心的物理坐标。而且就算能够测量出来,但实际表达时也会很不自然。但如果把坐标原点定位于她的鼻尖,我们就能较为自然的表达出她脸上的任何一点的坐标了。

我们把这种方式表达的坐标叫做世界坐标,而原来相对于相机光心表达的则是相机坐标。如果你知道了一个点X的世界坐标,想知道它投影到图像上的像素坐标,你是不能直接采用上面描述的相机投影矩阵来计算的。而是需要先把世界坐标转换为相机坐标值。比如,上面鼻尖的世界坐标值(非齐次表达)是[0, 0, 0](单位mm),而它相对于光心的坐标值可能是[50, 50, 500](单位mm)。

因此,为了构成一个从世界坐标系到图像像素坐标系的完整投影矩阵,还需要考虑到上面这种坐标系的转换。

从世界坐标系到相机坐标系的变化包括两步:

- 坐标原点平移到光心

- 各个世界坐标轴经3维旋转到和相机坐标轴对齐

所以这是一个先平移,再旋转的操作,用非齐次坐标表示时,是这样的:

而如果用齐次坐标表达,则是:

现在我们整合前面所有的变换分量,可以把从世界坐标系到图像坐标系的变换表达如下:

所以投影矩阵就是一个3x4的矩阵,而这个式子还可以简洁的表示为:

其中我们把K称为内参,P的其余部分是外参:

3.4 错切的影响

现在的传感器工艺已经非常好了,很少出现长宽不等的像素。但某些时候,我们依然要考虑这种情况,这样K就需要另外一个元素来描述,表示如下:

既然传感器工艺已经不再有不方正的像素了,那么什么情况下s不为0?其中一种情况就是当我们拍摄一个已经拍摄好的照片时,比如拍一个杂志封面,如果相机和杂志间不是平行的,那么整体的投影矩阵会出现不为0的s。

总之,考虑到这个情况,整个3x4的投影矩阵的自由度就变成了11个,其中包括了5个内参数,3个旋转分量,3个平移分量。

3.5 透视现象

前面我们已经看到,当物体投影的虚拟像平面时,坐标会等比例的变化,形成“近大远小”的现象

我在文章手机中的计算摄影4-超广角畸变校正中已经为你展示了透视现象的特点,现在引用其中内容如下:

人们很早就学会了利用透视效应来拍摄有趣的摄影作品:

透视投影还会使得三维空间中的平行线在画面中相交,其交点称作为消失点。

艺术家早就会使用透视技术,来突出主体了,例如下面这幅画是荷兰著名画家约翰内斯·维米尔(Johannes Vermeer)的作品钢琴课。画家利用透视效应,将主人公安排在了整个画面几条直线的消失点上,从而实现了突出主体的作用。

然而,透视效应也会导致画面的形变,我们看到拍摄同一个姑娘时,短焦镜头(广角镜头)出现了强烈的透视畸变。这是因为为了拍出同样尺寸的像,短焦镜头拍摄时物距更近,因为透视效应的近大远小法则,这种形变显得更加明显。尤其是在近距离拍摄时,人脸上鼻子相比脸侧面距离镜头更近,所以鼻子成像时放大得更大,于是人脸就显得更加诡异了。

除了上面这种因为近距离拍摄导致的形变,透视效应还会导致远离相机中心的物体被拉伸,比如下面这张用iPhone13 Mini的广角镜头拍摄的照片。相比起上面因为近距离拍摄导致的形变,这种边缘物体被拉伸的现象是我们更常见的情况。

那么问题来了,有没有相机在成像时没有透视效应呢?下一小节我们就来探讨这个问题。

四. 其他相机模型

我们知道小孔相机因为透视效应,会呈现近大远小的情况。下图你可以看到Z在像坐标的分母,这也说明了这一点。

现在想想,如果我们能不断增大Z,同时还让f也不断增大,并且f/Z始终是一个常量,那会怎么样呢?

很明显,这个时候就不再有近大远小的现象了,不管远近所成的像的大小都一样!当成像系统物距很大且像距也很大时,此时的投影关系就变成了弱透视投影,成像的几何尺寸与物距的关系就非常弱甚至没有了。《计算机视觉中的多视角几何》一书中的插图形象的说明了这一点:

比如,当我们拍摄远景时,此时的成像系统可以近似认为满足弱透视投影关系

另外如果成像系统满足如下几何关系,也能形成弱透视投影,只要物距大于Zo,那么不管远近成像的尺寸都与物距无关了,只与图中中间平面的物距Zo相关。

要构成这样的投影关系也比较容易,只需要用透镜成像+小孔成像即可。这种相机我们称为仿射相机

那么仿射相机的投影矩阵是什么呢?

仿射相机的投影矩阵的最后一行可以转换为[0 0 0 1],这是它最大的特点。

如果上图中Zo=1,会如何呢?我们看到

Zo=1,意味着S' = 2f,这时候小孔相机放大倍率为1, 于是投影关系就变成了所谓的正交投影

事实上,还有很多种投影方式,限于篇幅,我就不再详述了。大家可看《计算机视觉:算法与应用》中的下图,感受一下:

五. 总结

今天这篇文章主要回顾了小孔相机和薄透镜成像相机的几何模型,结合2D、3D齐次坐标和坐标变换的知识,讲解了相机矩阵。我们知道了相机矩阵由几个部分组成:内参矩阵K,以及外参矩阵,后者由投影矩阵、世界坐标系到相机坐标转换的矩阵组合而成。对于普通的透视成像,一共有11个自由度。它包括了5个内参,3个旋转角度,以及3个平移量

当我们知道一个点在世界坐标系的坐标,同时又知道了投影矩阵P时,可以很容易的计算出它在图像中的坐标。

现在一个有趣的问题来了,我们如何才能获得投影矩阵P的各个元素的值呢?这就是我下一篇文章的内容了,我将为你描述如何通过相机标定,求取投影的各个参数,敬请期待。

六. 参考资料

  1. CMU 2021 Fall Computational Photography Course 15-463, Lecture 16
  2. Richard Szeliski, Computer Vision: Algorithms and Application.
  3. Richard Hartley and Andrew Zisserman, Multiple View Geometry in Computer Vision, 2nd Edition
  4. 闫令琪, GAMES101:现代计算机图形学入门

再次感谢模特Sunny和Shiyan出镜

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 基本的投影模型
  • 二. 变换和齐次坐标
    • 2.1 二维变换和齐次坐标表达
      • 2.2 三维变换和齐次坐标表达
        • 2.3 旋转矩阵的特别之处
        • 三. 投影及相机矩阵
          • 3.1 基础小孔相机投影矩阵
            • 3.2 从投影图像到像素坐标
              • 3.3 从世界坐标到相机坐标
                • 3.4 错切的影响
                  • 3.5 透视现象
                  • 四. 其他相机模型
                  • 五. 总结
                  • 六. 参考资料
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档