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

              计算摄像机矩阵P

1.基本方程

( 0 T − w i X i T y i X i T w i X i T 0 T − x i X i T ) ( P 1 P 2 P 3 ) = 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

最小配置解

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

超定解

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

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

退化配置

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

数据归一化

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

直线对应

  3D 中的直线可以用它通过的两点 X 0 X_0 X0 X 1 X_1 X1来表示。由图像直线 l l l反向投影得到的平面为 P T l P^Tl PTl。那么点 X j X_j Xj在该平面上的条件是:
l T P X j = 0 , 其 中 0 , 1 l^TPX_j=0,其中0,1 lTPXj=0,0,1

2.几何误差

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

  解是 P P P的最大似然估计。

世界点有误差

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

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

代数误差的几何解释

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

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

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

仿射摄像机的估计

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

3.受限摄像机估计

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

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

最小化几何误差

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

最小化代数误差

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

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

初始化

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

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

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

协方差估计

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

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

4.径向失真

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

  其中 X c a m X_{cam} Xcam是摄像机坐标下的 3 D 3D 3D点,实际的投影点通过一个径向位移与理想点关联。因此,径向(透镜)失真的模型是:
( x d y d ) = 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})^T x~,y~T是理想图像位置(遵循线性投影)
  • ( x d , y d ) (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 ^ = x c + L ( r ) ( x − x c ) , y ^ = y c + L ( r ) ( y − y c ) \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是矫正后的坐标
  • ( x c , y c ) T (x_c,y_c)^T (xc,yc)T是径向失真的中心且 r 2 = ( x − x c ) 2 + ( y − y c ) 2 r^2=(x-x_c)^2+(y-y_c)^2 r2=(xxc)2+(yyc)2注意如果长宽比不是1 ,那么在计算$r $时必须对它进行矫正。

失真函数和中心的选择

  函数 L ( r ) L( r) L(r)仅当 r r r为正值时有定义并且 L ( 0 ) = 1 L(0) = 1 L(0)=1。一个任意函数
L ( r ) L( r) L(r)的逼近可以由泰勒展开式 L ( r ) = 1 + κ 1 r + κ 2 r 2 + κ 3 r 3 + . . . L(r)=1+\kappa _1r+\kappa _2r^2+\kappa _3r^3+... L(r)=1+κ1r+κ2r2+κ3r3+... { κ 1 , κ 2 , κ 3 , . . , x c , y c } \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 κi P P P 一起在几何误差的最小化迭代中计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不放弃的蜗牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值