CS231A:Camera Calibration

射影矩阵 M M

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

在这里插入图片描述
在有 θ \theta 的情况下:
在这里插入图片描述
其他的参数还是那样的,此时:
在这里插入图片描述
内参相关公式
M = ( K   0 ) M = (K\ 0)

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

在这里插入图片描述
C P ^CP 是相机坐标系的点,就是和内参相关的公式的右边的 P P
W P ^WP 是世界坐标系的点
此时:

外参相关公式
关于 Z Z ,是一个很重要的信息,而且是和 M M P P 相关的,现在假定 m 1 T , m 2 T , m 3 T m_1^T, m_2^T,m_3^T M M 的三行,那么:
Z = m 3 P Z= m_3 \cdot P

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

外参相关公式也常写成下面这种形式,这种形式有利于求 M M
在这里插入图片描述
再假定 r 1 T , r 2 T , r 3 T r_1^T ,r_2^T ,r_3^T R R 矩阵的行, t 1 , t 2 , t 3 t_1,t_2,t_3 t t 向量的元素,此时 M M 矩阵可以写成:

在这里插入图片描述
11 M 将11个参数明确显示的M矩阵

解决的问题

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

在这里插入图片描述
校准装置,由三个画在正交平面的网格构成
假设 P i ( i = 1 , . . . , n ) P_i(i=1,...,n) 是一直的齐次坐标向量 P i P_i 的基准点,位置是 ( x i , y i ) (x_i,y_i)

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

在这里插入图片描述
491 3 D   左:491个3D点在校准装置上\ 右:对应的图像点

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

线性方法

校准问题分为两步:

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

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

估计投影矩阵

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

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

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

在这里插入图片描述
2 公式2
其中的 x , y x,y 就是像素平民啊这两个式子包含了 M M 的所有参数,然后联立所有的 n n 个基准点,就能得到 2 n 2n 个等式,约束所有的等式,得到方程:
在这里插入图片描述
在这里插入图片描述
如上所说,11个参数,至少要12个信息,就是 n > 6 n>6

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

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

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

Degenerate Point Configurations

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

估计内外参

现在把估计出来的 M M 写成 M = ( A   b ) M=(A\ b) ,用 a 1 T , a 2 T , a 3 T a_1^T,a_2^T,a_3^T 来表示 A A 的行。

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

在这里插入图片描述

在这里插入图片描述
3 公式3
这里的 ρ \rho 是一个未知的比例因子,复原出来的单位矩阵 M M 具有 unit Frobeius 形式:
M F = m = 1 ||M||_F = ||m|| = 1

这个约束有什么用呢?

利用旋转矩阵的每一行都有单位长度并且互相垂直,可以得出:
在这里插入图片描述
其中 ε = 1 \varepsilon = \mp 1

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

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

在这里插入图片描述

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

剩下的 r 1 , r 2 r_1,r_2 求法公式:
在这里插入图片描述
位移 t t 可以由公式 K t = ρ b Kt = \rho b 得出:
t = ρ K 1 b t = \rho K^{-1}b
由于之前使用的 ε \varepsilon 有两个解,所以求出的 R , t R,t 的解也有两个,这时候,一般 t 3 t_3 的正负是已知的,这样就能锁定一个解

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

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

发布了32 篇原创文章 · 获赞 1 · 访问量 2796

猜你喜欢

转载自blog.csdn.net/McEason/article/details/104084310