相机模型
针孔相机
最简单的相机类型 - 也许是你自己制作的 - 由一个防光箱组成,一侧有一个小孔,另一侧有一个屏幕或照相胶片。通过小孔的光线会在箱子的后壁上生成一个倒置的图像。这种简单的相机模型通常用于 3D 图形应用程序中。
相机轴约定
相机轴方向有很多不同的约定。在这里,我们将遵循 Blender 的约定 (见图),其中相机沿负 Z 轴指向,相机 X 轴指向左侧 (从相机看),相机 Y 轴指向上方。
针孔相机坐标变换
3D 空间中的每个点都映射到 2D 平面上的单个点。要找到 3D 和 2D 坐标之间的映射,我们首先需要知道相机的内参,对于针孔相机来说,内参是
- 焦距,和
- 主点的坐标,和, 它是图像的光学中心。该点是光轴与图像平面相交的位置。
使用这些内参,我们构建相机矩阵
为了将此应用于一个点到三维空间中的一个点,我们用相机矩阵乘以该点得到一个新的 3x1 向量. 这是一个二维的齐次向量,但最后一个分量不是 1。要找到该点在图像平面上的位置,我们必须将前两个坐标除以最后一个坐标,得到点.
虽然这是相机矩阵的教科书定义,但如果我们使用 Blender 相机约定,它会将图像左右翻转和上下翻转(因为相机前方的点将具有负 z 值)。解决此问题的 一种潜在方法是更改相机矩阵中某些元素的符号
相机变换矩阵
通常情况下,相机并不仅仅位于原点,我们需要将世界坐标系中的点变换到相对于相机的坐标系中。为此,首先将世界坐标系中的点应用到世界到相机矩阵中,然后应用相机矩阵。
更复杂的相机模型
更复杂的相机模型是可能的,它可以模拟真实镜头产生的畸变。有关此类模型的讨论,请参阅 计算机视觉中的多视图几何。
< > 在 GitHub 上更新