CS231A:Camera Calibration

射影矩阵MM

内参部分,图像平面到像素平面

CS231A:Camera	Calibration
在有θ\theta的情况下:
CS231A:Camera	Calibration
其他的参数还是那样的,此时:
CS231A:Camera	Calibration
内参相关公式
M=(K 0)M = (K\ 0)

外参部分,世界坐标系到像素坐标系

CS231A:Camera	Calibration
CP^CP是相机坐标系的点,就是和内参相关的公式的右边的PP
WP^WP是世界坐标系的点
此时:
CS231A:Camera	Calibration
外参相关公式
关于ZZ,是一个很重要的信息,而且是和MMPP相关的,现在假定m1T,m2T,m3Tm_1^T, m_2^T,m_3^TMM的三行,那么:
Z=m3PZ= m_3 \cdot P

m3m_3是列啊,怎么能和P点乘,还是说这里不是矩阵运算,而是对位相乘?MM的第三行
这里应该就是点乘的意思

外参相关公式也常写成下面这种形式,这种形式有利于求MM
CS231A:Camera	Calibration
再假定r1T,r2T,r3Tr_1^T ,r_2^T ,r_3^TRR矩阵的行,t1,t2,t3t_1,t_2,t_3tt向量的元素,此时MM矩阵可以写成:

CS231A:Camera	Calibration
11M将11个参数明确显示的M矩阵

解决的问题

从场景的特定位置估计相机的内外参,通过校正可以让实际的位置理论上的位置之间的误差最小化。

CS231A:Camera	Calibration
校准装置,由三个画在正交平面的网格构成
假设Pi(i=1,...,n)P_i(i=1,...,n)是一直的齐次坐标向量PiP_i的基准点,位置是(xi,yi)(x_i,y_i)

在没有建模和测量误差的情况下,校正就相当于寻找一个内外参的参数ξ\xi:
CS231A:Camera	Calibration
1公式1
miT(ξ)m_i^T(\xi)表示射影矩阵MMithi^{th}行,MM:
CS231A:Camera	Calibration
一般,测量出来的值的数量要大于未知数的数量(比如11个参数需要6个点,但是现实中采集的数据一般都是有噪声的,所以会使用很多点),上面的式子解不出精确的结果,还是要看最小二乘法的解。

CS231A:Camera	Calibration
4913D 左:491个3D点在校准装置上\ 右:对应的图像点

校准装置也就是个坐标系,通过对这个坐标系中的点进行投影,得到图像点的信息,就能看出校准程度,也能用来校准

线性方法

校准问题分为两步:

  1. 与摄像机相关的透视投影矩阵MM的计算
  2. 利用该矩阵估计相机的内外参数

MM里面不是已经包含内外参了吗?

估计投影矩阵

首先假定是nonzero skew,投影矩阵MM不是奇异的,而是任意的

只有行数和列数相同才有奇异非奇异概念,显然MM3×43\times 4矩阵
奇异矩阵就是不可逆矩阵

公式 1 做去分母操作,然后移项让右边为0 (ξ\xi省略没写):

CS231A:Camera	Calibration
2公式2
其中的x,yx,y就是像素平民啊这两个式子包含了MM的所有参数,然后联立所有的nn个基准点,就能得到2n2n个等式,约束所有的等式,得到方程:
CS231A:Camera	Calibration
CS231A:Camera	Calibration
如上所说,11个参数,至少要12个信息,就是n>6n>6

解法
齐次线性最小二乘可以用最小化pm2||pm||^2 来计算单位向量m的值,其中mm服从于m2=1||m||^2=1,求出来的值12×1212\times 12矩阵pTpp^Tp和最小的特征值相关的特征向量

最小二乘计算的条件就是等式和误差值,这两个都有了
也可以用上节课学到的方法,直接计算P的SVD,其中V的列,也就是VTV^T的行就是pTpp^Tp的特征向量,VV的最小一列就是最小特征值对应的解,就是想要的mm

但是这个mm是有比例因子在其中的,就是下文的ρ\rho

Degenerate Point Configurations

这块没看懂,就是说这个方法有失效的时候,比如说所有的点都在一个平面的时候,就无法求解

估计内外参

现在把估计出来的MM写成M=(A b)M=(A\ b),用a1T,a2T,a3Ta_1^T,a_2^T,a_3^T来表示AA的行。

就跟第一节课的约束一样,将MM拆分开,其中AA部分与RR相关,与tt无关。
不过为什么约束只拿AA做文章呢?

CS231A:Camera	Calibration

CS231A:Camera	Calibration
3公式3
这里的ρ\rho是一个未知的比例因子,复原出来的单位矩阵MM具有 unit Frobeius 形式:
MF=m=1||M||_F = ||m|| = 1

这个约束有什么用呢?

利用旋转矩阵的每一行都有单位长度并且互相垂直,可以得出:
CS231A:Camera	Calibration
其中ε=1\varepsilon = \mp 1

这里,r3r_3是旋转矩阵的行,而a3a_3未经缩放MMAA的行,由 公式 3 得出的,这里应该是为了让MM满足上面那个约束把,所以才需要一个缩放。
答:不是为了满足约束,而是本来就存在一个缩放因子
所以之前求出来的MM,就是未缩放的,也就是生成 AAMM,所以r3r_3才是我们需要求的
r3r_3只是单位向量,能表示某一轴的旋转即可

之后,θ\theta的大小是π2\frac{\pi}{2}附近,这个数值范围内的sinesine是正的,用如下公式可得θ α β\theta \ \alpha \ \beta:

CS231A:Camera	Calibration

并没有手动算,应该就是利用了不同的rr之间相互垂直的属性,简化成了右式

剩下的r1,r2r_1,r_2求法公式:
CS231A:Camera	Calibration
位移tt可以由公式 Kt=ρbKt = \rho b得出:
t=ρK1bt = \rho K^{-1}b
由于之前使用的ε\varepsilon有两个解,所以求出的R,tR,t的解也有两个,这时候,一般t3t_3的正负是已知的,这样就能锁定一个解

t3t_3的正负就是物体在摄像头的前面或后面,一般都是已知的

至此,相机的内外参数就已经全部求出来了