摄影测量中的计算机视觉之Camera Calibration

相机标定:主要目的是通过相机拍摄的图像恢复出相机参数

1 图像获取
详细说明使用相机的重要参数, 比如类型,分辨率等.

2 控制点测量
选取至少6个三维点(在现实世界中选取,最好选取墙角这种自带坐标轴的点, 单位mm), 以及他们对应的二维点(在图像中选取 单位piexl).

3 计算投影矩阵.
x = PX
估计相机的外部方向
确定相机的内部方向

第一步 依旧是归一化
详情见上一篇homography.
2D : T = [1/sx 0 -tx/sx; 0 1/sy -ty/sy; 0 0 1] (matlab写法)
3D : T = [1/sx 0 0 -tx/sy; 0 1/sy 0 -ty/sy; 0 0 1/sz -tz/sz; 0 0 0 1]

第二步, 构造设计矩阵
证明传不上来

第三步 用SVD解出p
Ap = 0

第四步
p转化成4*4的P~\tilde{P}.
P~\tilde{P}转化成P.
摄影测量中的计算机视觉之Camera Calibration
4.说明投影矩阵的各个参数

摄影测量中的计算机视觉之Camera Calibration
一个矩阵乘增广矩阵是左边右边都要乘进去的.
P = K [R|t](t=-RC)
C是三维世界中摄像机投影中心, R是从世界坐标系到相机坐标系的旋转.
RQ分解将m x m的非奇异矩阵A分解为一个上三角阵R与一个正交矩阵Q之积.三角矩阵对角线上的元素必须是正数.
取P的前三列为M.
可以对M进行RQ分解.
如何分解:
首先对P进行归一化,λ\lambda为缩放因子,M的行列式是判断依据.
摄影测量中的计算机视觉之Camera Calibration
还有一个额外条件就是上三角上对角线上的元素都要>0.
如果<=0应该怎么办?
求解答
如何解出C?
1 由于C是相机在三维世界的坐标,所以PC = 0,经过投影矩阵的变换后,C转换到相机坐标系的原点,因此可以用SVD来解出C.
2 在P经过归一化后, P = [M|-MC]
也就是说P的第四列=-MC 所以-M^-1*P = C.
为什么一定要经过归一化?
求解答~~

如何解出Rotation matrix (K)和 calibration matrix®?
利用OPencv里的RQDecomp3x3.
然后如何得到内参和外参呢?
外参由旋转角和投影中心的位置共6个参数组成.C为投影中心的位置(3个)
另外三个分别为旋转角(ω\omega. ϕ\phi,κ\kappa)
ω\omega = atan(-r32/r33);
ϕ\phi = asin(r31);
κ\kappa = atan(-r21/r11)
这个要背住!

内参由K中元素决定.
principle distance [in pixel]α\alphay: k11

Skew s: k12
a factor accounting for the skew due to non-rectangular pixels
对大多数相机来说,由于图像都是长方形,所以s接近于0
用degree表示. acot(-s/α\alphax)

Principle point x0 y0: k13 , k23
非常接近图像中心, 假如图像像素是4000*6000 那么Principle point(2000,3000)

Aspect ration α\alphax /α\alphay k11, k22
长宽比