【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

温故而知新,可以为师矣!

一、参考资料

《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman.

二、针孔模型相关介绍

1. 重要概念

1.1 投影中心/摄像机中心/光心

投影中心称为摄像机中心,也称为光心。投影中心位于一个欧式坐标系的原点。

1.2 图像平面/聚焦平面

平面 Z = f Z=f Z=f 被称为图像平面或聚焦平面。

1.3 主轴/主射线

摄像机中心到图像平面的垂线称为摄像机的主轴或主射线。

1.4 主点

主轴与图像平面的交点称为主点。

1.5 主平面(摄像机)

过摄像机中心平行于图像平面的平面称为摄像机的主平面。

2. 基本针孔模型

在针孔摄像机模型下,3维空间坐标为 X = ( X , Y , Z ) T X=(X, Y, Z)^T X=(X,Y,Z)T 的点 X X X 被投影到图像平面上的一点,该点是连接点 X X X 与投影中心的直线与图像平面的交点。根据相似三角形,可以很快地算出点 ( X , Y , Z ) T (X, Y , Z)^T (X,Y,Z)T 被映射到图像平面上点 ( f X / Z , f Y / Z , f ) T (fX/Z, fY/Z, f)^T (fX/Z,fY/Z,f)T 。略去最后一个图像坐标之后,从世界坐标到图像坐标的中心投影是:
( X , Y , Z ) T ↦ ( f X / Z , f Y / Z ) T ( 1 ) (X,Y,Z)^{T}\mapsto(fX/Z,fY/Z)^{T}\quad(1) (X,Y,Z)T↦(fX/Z,fY/Z)T(1)

这是从3维欧式空间 IR 3 \text{IR}^3 IR3 到 2维欧式空间 IR 2 \text{IR}^2 IR2 的一个映射。

3. 投影矩阵

齐次坐标的概念:齐次坐标就是用N+1维去描述一个N维的坐标。

如果用齐次矢量表示世界和图像点,那么中心投影可以简单地表示成齐次坐标之间的线性映射。具体地说, 公式 ( 1 ) 公式(1) 公式(1) 可以写成如下矩阵乘积形式:

X Y Z 1 \] ↦ \[ f x f y z \] = \[ f 0 f 0 1 0 \] \[ X Y Z 1 \] ( 2 ) \\left.\\left\[\\begin{array}{c}\\mathbf{X}\\\\\\mathbf{Y}\\\\\\mathbf{Z}\\\\\\mathbf{1}\\end{array}\\right.\\right\]\\mapsto\\left\[\\begin{array}{c}f\\mathbf{x}\\\\f\\mathbf{y}\\\\\\mathbf{z}\\end{array}\\right\]=\\left\[\\begin{array}{cc}f\&\&\&0\\\\\&f\&\&0\\\\\&\&1\&0\\end{array}\\right\]\\left\[\\begin{array}{c}\\mathbf{X}\\\\\\mathbf{Y}\\\\\\mathbf{Z}\\\\\\mathbf{1}\\end{array}\\right\]\\quad(2) XYZ1 ↦ fxfyz = ff1000 XYZ1 (2) 其中 \[ f 0 f 0 1 0 \] \\left\[\\begin{array}{cc}f\&\&\&0\\\\\&f\&\&0\\\\\&\&1\&0\\end{array}\\right\] ff1000 表示 3 ∗ 4 3\*4 3∗4 齐次摄像机投影矩阵,记作 P P P。 P P P 可以写成 d i a g ( f , f , 1 ) \[ I ∣ 0 \] diag(f,f,1)\[I\|0\] diag(f,f,1)\[I∣0\],其中 d i a g ( f , f , 1 ) diag(f,f,1) diag(f,f,1)是**对角矩阵** ,而 \[ I ∣ 0 \] \[I\|0\] \[I∣0\]表示矩阵分块成一个 3 ∗ 3 3\*3 3∗3​ **恒等矩阵** 加上一个**零列矢量** 。那么,中心投影的针孔模型的摄像机投影矩阵可以表示为: P = d i a g ( f , f , 1 ) \[ I ∣ 0 \] P=diag(f,f,1)\[I\|0\] P=diag(f,f,1)\[I∣0

恒等矩阵的概念:恒等矩阵,又称为单位矩阵 ,是一个方阵 ,其对角线上的元素为1,其余元素均为0,记作 I I I或者 E E E。恒等矩阵的大小由其维度决定,例如3阶恒等矩阵是一个3x3的矩阵。

恒等矩阵在线性代数中具有很多重要的性质。例如,对于任意矩阵A,恒等矩阵1与A的乘积等于A本身。这是因为恒等矩阵的每个元素与A的对应元素相乘,并将其相加,得到的结果就是A本身。这个性质在矩阵的转置、逆运算等方面都有着重要的应用。

恒等矩阵在深度学习中也具有重要的作用。在神经网络中,恒等矩阵常被用作初始化权重矩阵。初始化权重矩阵时,将其设置为恒等矩阵可以使得神经网络的初始状态更稳定。这是因为恒等矩阵具有一定的对称性和平衡性,可以避免梯度消失或梯度爆炸等问题,有助于提高模型的训练效果

恒等矩阵还可以用于矩阵的相似性度量。在图像处理和模式识别中,我们经常需要比较两个矩阵的相似性。通过计算两个矩阵之间的差异,可以得到它们的相似性度量。而恒等矩阵作为一个特殊的矩阵,与其他矩阵相比具有明显的差异,可以用于度量矩阵之间的相似性。

我们现在引入如下记号:世界点 X X X 用4维齐次矢量 ( X , Y , Z , 1 ) (X,Y,Z,1) (X,Y,Z,1)表示;图像点 x x x 被表示成3维齐次矢量的形式。则 公式 ( 2 ) 公式(2) 公式(2) 可以紧凑地写为:
x = P X x=PX x=PX

4. 主点偏置

公式 ( 1 ) 公式(1) 公式(1) 假定图像平面的坐标原点在主点上。实际情况可能不是这样,如下图所示:

摄像机坐标系 ( x c a m , y c a m ) T (x_{cam},y_{cam})^T (xcam,ycam)T的坐标原点为摄像机中心,该原点在图像平面的投影是主点p。图像坐标系 ( x , y ) T (x,y)^T (x,y)T 的坐标原点为图像的左下角。

因此一般情形的映射为:
( X , Y , Z ) T ↦ ( f X / Z + p x , f Y / Z + p y ) T (X,Y,Z)^{T}\mapsto(fX/Z+p_x,fY/Z+p_y)^{T} \\ (X,Y,Z)T↦(fX/Z+px,fY/Z+py)T

其中 ( p x , p y ) T (p_x,p_y)^T (px,py)T 是主点的坐标。该方程用齐次坐标可以表示为:

X Y Z 1 \] ↦ \[ f x + Z p x f y + Z p y z \] = \[ f p x 0 f p x 0 1 0 \] \[ X Y Z 1 \] ( 3 ) \\left.\\left\[\\begin{array}{c}\\mathbf{X}\\\\\\mathbf{Y}\\\\\\mathbf{Z}\\\\\\mathbf{1}\\end{array}\\right.\\right\]\\mapsto\\left\[\\begin{array}{c}f\\mathbf{x+Zp_x}\\\\f\\mathbf{y+Zp_y}\\\\\\mathbf{z}\\end{array}\\right\]=\\left\[\\begin{array}{cc}f\&\&p_x\&0\\\\\&f\&p_x\&0\\\\\&\&1\&0\\end{array}\\right\]\\left\[\\begin{array}{c}\\mathbf{X}\\\\\\mathbf{Y}\\\\\\mathbf{Z}\\\\\\mathbf{1}\\end{array}\\right\]\\quad(3) XYZ1 ↦ fx+Zpxfy+Zpyz = ffpxpx1000 XYZ1 (3) 若记 K = \[ f p x f p x 1 \] ( 4 ) K=\\left\[\\begin{array}{cc}f\&\&p_x\\\\\&f\&p_x\\\\\&\&1\\end{array}\\right\]\\quad(4) K= ffpxpx1 (4) 则 公式 ( 3 ) 公式(3) 公式(3) 有一个简洁的形式: x = K \[ I ∣ 0 \] X c a m ( 5 ) x=K\[I\|0\]X_{cam}\\quad(5) x=K\[I∣0\]Xcam(5) 矩阵 K K K 称为摄像机标定矩阵,在 公式 ( 5 ) 公式(5) 公式(5) 中我们记 ( X , Y , Z , 1 ) T (X,Y,Z,1)\^T (X,Y,Z,1)T 为 X c a m X_{cam} Xcam 是为了强调摄像机被设定在一个欧式坐标系的原点且主轴沿着 z z z 轴的指向,而点 X c a m X_{cam} Xcam 按此坐标系表示。这样的坐标系可以称为摄像机坐标系。 > 摄像机坐标系的原点为**摄像机中心** , z z z轴方向指向**主轴**。 ### 5. 摄像机旋转与位移 一般,3维空间点采用不同的欧式坐标系表示,称为**世界坐标系** 。摄像机坐标系与世界坐标系通过**旋转** 和**平移**相联系。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1738778141238759426/029e33141f593fa244f332c6159095e7.webp) 世界坐标系和摄像机坐标系之间的欧式转换 如果 X \~ \\widetilde{X} X 是一个3维非齐次矢量,表示**世界坐标系** 中一点的坐标,而 X \~ c a m \\widetilde{X}_{cam} X cam 是以**摄像机坐标系** 来表示的同一点,那么我们可以记 X \~ c a m = R ( X \~ − C \~ ) \\widetilde{X}_{cam}=R\\left(\\widetilde{X}-\\widetilde{C}\\right) X cam=R(X −C ) ,其中 C \~ \\widetilde{C} C 表示摄像机中心在世界坐标系中的坐标, R R R 是一个 3 ∗ 3 3\*3 3∗3 的旋转矩阵,表示摄像机坐标系的方位。这个方程在齐次坐标系下可以写成: X c a m = \[ R − R C \~ 0 T 1 \] \[ X Y Z 1 \] = \[ R − R C \~ 0 T 1 \] X ( 6 ) X_{cam}=\\begin{bmatrix}R\&-R\\widetilde{C}\\\\0\^{T}\&1\\end{bmatrix}\\begin{bmatrix}X\\\\Y\\\\Z\\\\1\\end{bmatrix}=\\begin{bmatrix}R\&-R\\widetilde{C}\\\\0\^{T}\&1\\end{bmatrix}\\mathbf{X}\\quad(6) Xcam=\[R0T−RC 1\] XYZ1 =\[R0T−RC 1\]X(6) 把它与 公式 ( 5 ) 公式(5) 公式(5) 结合起来形成公式: x = K R \[ I ∣ − C \~ \] X ( 7 ) x=KR\\left\[I\|-\\widetilde{C}\\right\]X\\quad(7) x=KR\[I∣−C \]X(7) 其中 X X X 用世界坐标系表示。这是由一个针孔模型给出的一般映射。 ### 6. 摄像机内部参数与外部参数 由 公式 ( 7 ) 公式(7) 公式(7) 可以看出,一般的针孔摄像机 P = K R \[ I ∣ − C \~ \] P=KR\\left\[I\|-\\widetilde{C}\\right\] P=KR\[I∣−C \] 有9个自由度:3个来自 K (元素 f , p x , p y ) K(元素 f,p_x, p_y) K(元素f,px,py),3个来自 R R R,3个来自 C \~ \\widetilde{C} C 。包含在 K K K 中的参数称为摄像机内部参数或摄像机的内部校准。包含在 R R R 和 C \~ \\widetilde{C} C 中的参数与摄像机在世界坐标系中的方位和位置有关,并称为外部参数或外部校准。 为方便起见,通常摄像机中心不明显标出,而把世界坐标系到图像坐标系的变换表示成 X \~ c a m = R X \~ + t \\widetilde{X}_{cam}=R\\widetilde{X}+t X cam=RX +t。在次情形时摄像机矩阵简化成: P = k \[ R ∣ t \] ( 8 ) P=k\[R\|t\]\\quad(8) P=k\[R∣t\](8) 其中根据 公式 ( 7 ) 公式(7) 公式(7) , t = − R C \~ t=-R\\widetilde{C} t=−RC 。 ### 7. CCD摄像机 对于基本针孔模型,假定图像坐标在两个轴向上有等尺度的欧式坐标。但CCD摄像机的像素可能不是正方形。**如果图像坐标以像素来测量,那么需要在每个方向上引入非等量尺度因子** 。具体地说,如果在 x x x 和 y y y 方向上图像坐标单位距离的像素数分别是 m x m_x mx 和 m y m_y my,那么由世界坐标到像素坐标的变换由 公式 ( 4 ) 公式(4) 公式(4) 左乘一个附加的因子 d i a g ( m x , m y , 1 ) diag(m_x,m_y,1) diag(mx,my,1) 而得到。因此一个CCD摄像机标定矩阵的一般形式是: K = \[ a x x 0 a y y 0 1 \] ( 9 ) K=\\left\[\\begin{array}{cc}a_x\&\&x_0\\\\\&a_y\&y_0\\\\\&\&1\\end{array}\\right\]\\quad(9) K= axayx0y01 (9) 其中 a x = f m x a_x=fm_x ax=fmx 和 a y = f m y a_y=fm_y ay=fmy 分别把摄像机的焦距换算成 x x x 和 y y y 方向的像素量纲。同理, x \~ 0 = ( x 0 , y 0 ) T \\widetilde{x}_0=(x_0,y_0)\^T x 0=(x0,y0)T 是用像素量纲表示的主点,它的坐标是 x 0 = m x p x x_0=m_xp_x x0=mxpx 和 y 0 = m y p y y_0=m_yp_y y0=mypy。因此,一个CCD摄像机有10个自由度。

相关推荐
zy_destiny11 分钟前
【工业场景】用YOLOv12实现饮料类别识别
人工智能·python·深度学习·yolo·机器学习·计算机视觉·目标跟踪
卧式纯绿1 小时前
每日文献(八)——Part one
人工智能·yolo·目标检测·计算机视觉·目标跟踪·cnn
巷9551 小时前
OpenCV图像形态学:原理、操作与应用详解
人工智能·opencv·计算机视觉
xiangzhihong82 小时前
Amodal3R ,南洋理工推出的 3D 生成模型
人工智能·深度学习·计算机视觉
阿linlin2 小时前
OpenCV--图像预处理学习01
opencv·学习·计算机视觉
程序员Linc4 小时前
边缘检测技术现状初探2:多尺度与形态学方法
计算机视觉·边缘检测·形态学
Blossom.1186 小时前
量子计算与经典计算的融合与未来
人工智能·深度学习·机器学习·计算机视觉·量子计算
硅谷秋水7 小时前
MoLe-VLA:通过混合层实现的动态跳层视觉-语言-动作模型实现高效机器人操作
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人
weixin_442424037 小时前
Opencv计算机视觉编程攻略-第七节 提取直线、轮廓和区域
人工智能·opencv·计算机视觉
HABuo7 小时前
【YOLOv8】YOLOv8改进系列(12)----替换主干网络之StarNet
人工智能·深度学习·yolo·目标检测·计算机视觉