Multiple View Geometry(多视图几何)学习笔记(21)—计算摄像机矩阵P

本文详细介绍摄像机矩阵PPP的计算方法,包括最小配置解、超定解及退化配置等情形。此外还介绍了如何利用代数误差和几何误差进行优化,以及在存在径向失真情况下的矫正方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

              计算摄像机矩阵P

1.基本方程

(0T−wiXiTyiXiTwiXiT0T−xiXiT)(P1P2P3)=0\begin{pmatrix} 0^T & -w_iX_i^T &y_iX_i^T \\ w_iX_i^T & 0^T & -x_iX_i^T \end{pmatrix}\begin{pmatrix} P^1\\ P^2\\ P^3 \end{pmatrix}=0(0TwiXiTwiXiT0TyiXiTxiXiT)P1P2P3=0

最小配置解

  矩阵PPP有12 个元素和(忽略缩放因子)11个自由度,所以解PPP需要11个方程。给定这个最小数目的对应时,解是精确的,即空间的点准确地投影到它们被测量的图像上。

超定解

  如果由于点坐标的噪声导致数据不精确并且给定n≥6n\geq 6n6组点对应, 那么Ap=0Ap=0Ap=0将不存在精确解。PPP的解可以通过最小化一个代数或几何误差来获得。求∥Ap∥\left \| Ap \right \|Ap的最小值,可能的约束是:

  1. ∥p∥=1\left \| p \right \|=1p=1
  2. ∥p^3∥=1\left \| \hat{p}^3 \right \|=1p^3=1,其中p^3\hat{p}^3p^3是由PPP最后一行的前三个元素组成的矢量(p31,p32,p33)T(p_{31},p_{32},p_{33})^T(p31,p32,p33)T

退化配置

  1. 摄像机中心和点都在一条三次绕线上。
  2. 这些点都在一张平面和包含摄像机中心的一条直线的并集上。

数据归一化

  当点到摄像机的深度变化相对比较小时,采用同样类型的归一化。 因此, 把点的形心平移到原点,并对它们的坐标进行缩放使它们到原点的RMS(均方根)距离等于3\sqrt{3}3。适用于点紧致分布的情形。

直线对应

  3D 中的直线可以用它通过的两点X0X_0X0X1X_1X1来表示。由图像直线lll反向投影得到的平面为PTlP^TlPTl。那么点XjX_jXj在该平面上的条件是:
lTPXj=0,其中0,1l^TPX_j=0,其中0,1lTPXj=0,0,1

2.几何误差

  图像中的几何误差是:
∑id(xi,x^i)2\sum _id(x_i,\hat{x}_i)^2id(xi,x^i)2
  其中xix_ixi是被测量的点,x^i\hat{x}_ix^i是点PXiPX_iPXi,即XiX_iXi在$P $作用下的精确的图像点.如果测盘误差满足高斯分布,那么
min⁡P∑id(xi,PXi)2\min _P\sum _id(x_i,PX_i)^2Pminid(xi,PXi)2

  解是PPP的最大似然估计。

世界点有误差

  3D3D3D几何误差定义为:
∑id(Xi,X^i)2\sum _id(X_i,\hat{X}_i)^2id(Xi,X^i)2

  如果世界和图像点的误差都考虑:
∑i=1dMah(xi,PX^i)2+dMah(Xi,X^i)2\sum _{i=1}d_{Mah}(x_i,P\hat{X}_i)^2+d_{Mah}(X_i,\hat{X}_i)^2i=1dMah(xi,PX^i)2+dMah(Xi,X^i)2
  dMahd_{Mah}dMah表示误差协方差矩阵的Mahalanobis 距离。

代数误差的几何解释

  假定所有的点XiX_iXiDLTDLTDLT算法中已经归一化,DLTDLTDLT算法要最小化的量是:
∑i(w^id(xi,x^i))2{\sum }_{i}(\hat{w}_id(x_i,\hat{x}_i))^2i(w^id(xi,x^i))2

  其中w^i(x^i,y^i,1)T=PXi\hat{w}_i(\hat{x}_i,\hat{y}_i,1)^T=PX_iw^i(x^i,y^i,1)T=PXiw^i\hat{w}_iw^i可以解将成点XiX_iXi沿主轴方向到摄像机的深度,要最小化的代数误差等于f∑id(Xi,Xi′)2f{\sum }_{i}d(X_i,X'_i)^2fid(Xi,Xi)2

变换不变性
  在约束∥p^3∥=1\left \| \hat{p} ^3\right \|=1p^3=1,下最小化∥Ap∥\left \| Ap\right \|Ap可以解释成最小化3D3D3D几何距离。这样既不受3D3D3D空间也不受图像空间的相似变换的影响。

仿射摄像机的估计

  上面有关射影摄像机推导的方法可以直接用于仿射摄像机。仿射摄像机定义为射影矩阵的最后一行是(0,0,0,1)(0 , 0 , 0 ,1)(0001)的摄像机。.仿射摄像机的DLTDLTDLT估计是在PPP的最后一行满足上述条件下最小化∥Ap∥\left \| Ap\right \|Ap

3.受限摄像机估计

  在关于摄像机参数的限制条件下寻求一个最适配的摄像机矩阵PPP 。 通常的限制是:

  • 扭曲sss为零
  • 像素是正方形:αx=αy\alpha _x=\alpha _yαx=αy
  • 主点(x0,y0)2(x_0,y_0)^2(x0,y0)2已知
  • 整个摄像机标定矩阵KKK已知

最小化几何误差

  假定我们强调约束s=0s =0s=0αx=αy\alpha _x=\alpha _yαx=αy,用余下的9 个参数来参数化摄像机矩阵。几何误差可以用迭代最小化方法相对于这组参数来最小化。

最小化代数误差

  考虑把参数集qqq映射到摄像机矩阵PPP的参数化映射ggg,最小化所有点匹配的代数误差等价于最小化∥Ag(q)∥\left \| Ag(q) \right \|Ag(q)

简化的测量矩阵
  一般,2n×122n \times 122n×12的矩阵AAA可能有很多行。但可用一个12×121 2 \times 1212×12的矩阵A^\hat{A}A^代替A,使得对任何矢量ppp∥Ap∥=pTATAp=∥A^p∥\left \| Ap\right \|=p^TA^TAp=\left \| \hat{A}p\right \|Ap=pTATAp=A^p

初始化

  求摄像机初始参数的一种途径是:

  1. 用诸如DLTDLTDLT的线性算法求出一个初始的摄像机矩阵
  2. 把固定参数强制到所希望的取值范围
  3. 把摄像机矩阵分解所获得的初始值赋给参数变量

外部校准
  为了计算外部校准,需对世界坐标位置准确已知的一个配置进行影像。之后求摄像机的姿态。在机器人系统的手眼标定中求摄像机位置就是这样的情形;还有在采用配准技术的基于模型的识别中,需要知到物体相对摄像机的位置。

协方差估计

  假定所有的误差仅发生在图像测量中, ML 残差期望值等于:
εres=δ(1−d/2n)1/2\varepsilon _{res}=\delta (1-d/2n)^{1/2}εres=δ(1d/2n)1/2

  其中ddd主要拟合的摄像机参数数目(对完整的针孔摄像机模型是11) 。给定一个残差, 该公式也可以用来估计点测量的准确性。

4.径向失真

  用(x~,y~)T(\tilde{x},\tilde{y})^Tx~,y~T标记在理想(非失真)针孔投影下点以焦距为测量单位的坐标。对一点XXX有:
(x~,y~,1)T=[I∣0]Xcam(\tilde{x},\tilde{y},1)^T=[I|0]X_{cam}^{}x~,y~,1T=[I0]Xcam

  其中XcamX_{cam}Xcam是摄像机坐标下的3D3D3D点,实际的投影点通过一个径向位移与理想点关联。因此,径向(透镜)失真的模型是:
(xdyd)=L(r~)(x~y~)\begin{pmatrix} x_d\\ y_d \end{pmatrix}=L(\tilde{r})\begin{pmatrix} \tilde{x}\\ \tilde{y} \end{pmatrix}(xdyd)=L(r~)(x~y~)
  其中:

  • (x~,y~)T(\tilde{x},\tilde{y})^Tx~,y~T是理想图像位置(遵循线性投影)
  • (xd,yd)(x_d,y_d)(xd,yd)经径向失真后的实际图像的位置
  • r~\tilde{r}r~为到径向失真中心的径向距离x~2+y~2\sqrt{\tilde{x}^2+\tilde{y}^2}x~2+y~2
  • L(r~)L(\tilde{r})L(r~)是一个失真因子,它仅仅是半径 r~\tilde{r}r~的函数

失真矫正

  在像素坐标中,失真矫正记为:
x^=xc+L(r)(x−xc),y^=yc+L(r)(y−yc)\hat{x}=x_c+L(r)(x-x_c),\hat{y}=y_c+L(r)(y-y_c)x^=xc+L(r)(xxc),y^=yc+L(r)(yyc)

  • (x,y)T(x,y)^T(x,y)T是测量的坐标
  • (x^,y^)T(\hat{x},\hat{y})^T(x^,y^)T是矫正后的坐标
  • (xc,yc)T(x_c,y_c)^T(xc,yc)T是径向失真的中心且r2=(x−xc)2+(y−yc)2r^2=(x-x_c)^2+(y-y_c)^2r2=(xxc)2+(yyc)2注意如果长宽比不是1 ,那么在计算$r $时必须对它进行矫正。

失真函数和中心的选择

  函数L(r)L( r)L(r)仅当rrr为正值时有定义并且L(0)=1L(0) = 1L(0)=1。一个任意函数
L(r)L( r)L(r)的逼近可以由泰勒展开式L(r)=1+κ1r+κ2r2+κ3r3+...L(r)=1+\kappa _1r+\kappa _2r^2+\kappa _3r^3+...L(r)=1+κ1r+κ2r2+κ3r3+...{κ1,κ2,κ3,..,xc,yc}\left \{ \kappa _1,\kappa _2,\kappa _3,..,x_c,y_c\right \}{κ1,κ2,κ3,..,xc,yc}是径向矫正的系数。主点经常被用作径向失真的中心,虽然它们未必完全重合。

计算失真函数

  函数L(r)L( r)L(r)可以通过最小化一个基于映射的线性偏差的代价函数来计算。失真函数可以作为影像过程的一部分, 把参数κi\kappa _iκiPPP 一起在几何误差的最小化迭代中计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不放弃的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值