射影矩阵 M M M
内参部分,图像平面到像素平面
在有
θ
\theta
θ的情况下:
其他的参数还是那样的,此时:
内
参
相
关
公
式
内参相关公式
内参相关公式
M
=
(
K
0
)
M = (K\ 0)
M=(K 0)
外参部分,世界坐标系到像素坐标系
C
P
^CP
CP是相机坐标系的点,就是和内参相关的公式的右边的
P
P
P
W
P
^WP
WP是世界坐标系的点
此时:
外
参
相
关
公
式
外参相关公式
外参相关公式
关于
Z
Z
Z,是一个很重要的信息,而且是和
M
M
M、
P
P
P相关的,现在假定
m
1
T
,
m
2
T
,
m
3
T
m_1^T, m_2^T,m_3^T
m1T,m2T,m3T是
M
M
M的三行,那么:
Z
=
m
3
⋅
P
Z= m_3 \cdot P
Z=m3⋅P
m 3 m_3 m3是列啊,怎么能和P点乘,还是说这里不是矩阵运算,而是对位相乘? M M M的第三行
这里应该就是点乘的意思
外参相关公式也常写成下面这种形式,这种形式有利于求
M
M
M:
再假定
r
1
T
,
r
2
T
,
r
3
T
r_1^T ,r_2^T ,r_3^T
r1T,r2T,r3T是
R
R
R矩阵的行,
t
1
,
t
2
,
t
3
t_1,t_2,t_3
t1,t2,t3是
t
t
t向量的元素,此时
M
M
M矩阵可以写成:
将
11
个
参
数
明
确
显
示
的
M
矩
阵
将11个参数明确显示的M矩阵
将11个参数明确显示的M矩阵
解决的问题
从场景的特定位置估计相机的内外参,通过校正可以让实际的位置和理论上的位置之间的误差最小化。
校
准
装
置
,
由
三
个
画
在
正
交
平
面
的
网
格
构
成
校准装置,由三个画在正交平面的网格构成
校准装置,由三个画在正交平面的网格构成
假设
P
i
(
i
=
1
,
.
.
.
,
n
)
P_i(i=1,...,n)
Pi(i=1,...,n)是一直的齐次坐标向量
P
i
P_i
Pi的基准点,位置是
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)。
在没有建模和测量误差的情况下,校正就相当于寻找一个内外参的参数
ξ
\xi
ξ:
公
式
1
公式1
公式1
m
i
T
(
ξ
)
m_i^T(\xi)
miT(ξ)表示射影矩阵
M
M
M的
i
t
h
i^{th}
ith行,
M
M
M:
一般,测量出来的值的数量要大于未知数的数量(比如11个参数需要6个点,但是现实中采集的数据一般都是有噪声的,所以会使用很多点),上面的式子解不出精确的结果,还是要看最小二乘法的解。
左
:
491
个
3
D
点
在
校
准
装
置
上
右
:
对
应
的
图
像
点
左:491个3D点在校准装置上\ 右:对应的图像点
左:491个3D点在校准装置上 右:对应的图像点
校准装置也就是个坐标系,通过对这个坐标系中的点进行投影,得到图像点的信息,就能看出校准程度,也能用来校准
线性方法
校准问题分为两步:
- 与摄像机相关的透视投影矩阵 M M M的计算
- 利用该矩阵估计相机的内外参数
M M M里面不是已经包含内外参了吗?
估计投影矩阵
首先假定是nonzero skew,投影矩阵 M M M不是奇异的,而是任意的
只有行数和列数相同才有奇异非奇异概念,显然 M M M是 3 × 4 3\times 4 3×4矩阵
奇异矩阵就是不可逆矩阵
对 公式 1 做去分母操作,然后移项让右边为0 ( ξ \xi ξ省略没写):
公
式
2
公式2
公式2
其中的
x
,
y
x,y
x,y就是像素平民啊这两个式子包含了
M
M
M的所有参数,然后联立所有的
n
n
n个基准点,就能得到
2
n
2n
2n个等式,约束所有的等式,得到方程:
如上所说,11个参数,至少要12个信息,就是
n
>
6
n>6
n>6。
解法:
齐次线性最小二乘可以用最小化
∣
∣
p
m
∣
∣
2
||pm||^2
∣∣pm∣∣2 来计算单位向量m的值,其中
m
m
m服从于
∣
∣
m
∣
∣
2
=
1
||m||^2=1
∣∣m∣∣2=1,求出来的值
12
×
12
12\times 12
12×12矩阵
p
T
p
p^Tp
pTp的和最小的特征值相关的特征向量
最小二乘计算的条件就是等式和误差值,这两个都有了
也可以用上节课学到的方法,直接计算P的SVD,其中V的列,也就是 V T V^T VT的行就是 p T p p^Tp pTp的特征向量, V V V的最小一列就是最小特征值对应的解,就是想要的 m m m
但是这个 m m m是有比例因子在其中的,就是下文的 ρ \rho ρ
Degenerate Point Configurations
这块没看懂,就是说这个方法有失效的时候,比如说所有的点都在一个平面的时候,就无法求解
估计内外参
现在把估计出来的 M M M写成 M = ( A b ) M=(A\ b) M=(A b),用 a 1 T , a 2 T , a 3 T a_1^T,a_2^T,a_3^T a1T,a2T,a3T来表示 A A A的行。
就跟第一节课的约束一样,将 M M M拆分开,其中 A A A部分与 R R R相关,与 t t t无关。
不过为什么约束只拿 A A A做文章呢?
公
式
3
公式3
公式3
这里的
ρ
\rho
ρ是一个未知的比例因子,复原出来的单位矩阵
M
M
M具有 unit Frobeius 形式:
∣
∣
M
∣
∣
F
=
∣
∣
m
∣
∣
=
1
||M||_F = ||m|| = 1
∣∣M∣∣F=∣∣m∣∣=1
这个约束有什么用呢?
利用旋转矩阵的每一行都有单位长度并且互相垂直,可以得出:
其中
ε
=
∓
1
\varepsilon = \mp 1
ε=∓1
这里, r 3 r_3 r3是旋转矩阵的行,而 a 3 a_3 a3是未经缩放的 M M M的 A A A的行,由 公式 3 得出的,这里应该是为了让 M M M满足上面那个约束把,所以才需要一个缩放。
答:不是为了满足约束,而是本来就存在一个缩放因子
所以之前求出来的 M M M,就是未缩放的,也就是生成 A A A的 M M M,所以 r 3 r_3 r3才是我们需要求的
而 r 3 r_3 r3只是单位向量,能表示某一轴的旋转即可
之后, θ \theta θ的大小是 π 2 \frac{\pi}{2} 2π附近,这个数值范围内的 s i n e sine sine是正的,用如下公式可得 θ α β \theta \ \alpha \ \beta θ α β:
并没有手动算,应该就是利用了不同的 r r r之间相互垂直的属性,简化成了右式
剩下的
r
1
,
r
2
r_1,r_2
r1,r2求法公式:
位移
t
t
t可以由公式
K
t
=
ρ
b
Kt = \rho b
Kt=ρb得出:
t
=
ρ
K
−
1
b
t = \rho K^{-1}b
t=ρK−1b
由于之前使用的
ε
\varepsilon
ε有两个解,所以求出的
R
,
t
R,t
R,t的解也有两个,这时候,一般
t
3
t_3
t3的正负是已知的,这样就能锁定一个解
t 3 t_3 t3的正负就是物体在摄像头的前面或后面,一般都是已知的
至此,相机的内外参数就已经全部求出来了