快到期末了最简单的概念都没有搞明白
3D homography和Camera matrixP原来不是一个东西
3D homography是从3D点X’转到3D点X的矩阵,是4*4的矩阵,
Camera matrix也就是projection matrix是从3D点X’转到图像点x’的矩阵,是3*4的矩阵.
那么如何得到一个3D homography呢
第一步依旧是conditioning(归一化), 这里主要说一下对于放缩系数s, 可以各同向性缩放到原点的平均距离为
3
\sqrt{3}
3.也可以按照坐标轴来缩放,每个坐标都缩放到各自到0的平均距离为1.
公式如下:
T
=
[
1
s
x
0
0
−
t
x
s
x
0
1
s
y
0
−
t
y
s
y
0
0
1
s
z
−
t
z
s
z
0
0
0
1
]
T=\left[\begin{array}{cccc} {\frac{1}{s_{x}}} & {0} & {0} & {\frac{-t_{x}}{s_{x}}} \\ {0} & {\frac{1}{s_{y}}} & {0} & {\frac{-t_{y}}{s_{y}}} \\ {0} & {0} & {\frac{1}{s_{z}}} & {\frac{-t_{z}}{s_{z}}} \\ {0} & {0} & {0} & {1} \end{array}\right]
T=⎣⎢⎢⎡sx10000sy10000sz10sx−txsy−tysz−tz1⎦⎥⎥⎤
证明如下:
[
U
′
V
′
W
′
T
′
]
=
[
−
h
1
⊤
−
−
h
2
⊤
−
−
h
3
⊤
−
−
h
4
⊤
−
]
[
∣
X
∣
]
\left[\begin{array}{c} {U^{\prime}} \\ {V^{\prime}} \\ {W^{\prime}} \\ {T^{\prime}} \end{array}\right]=\left[\begin{array}{l} {-h_{1}^{\top}-} \\ {-h_{2}^{\top}-} \\ {-h_{3}^{\top}-} \\ {-h_{4}^{\top}-} \end{array}\right]\left[\begin{array}{l} {|} \\ {X} \\ {|} \end{array}\right]
⎣⎢⎢⎡U′V′W′T′⎦⎥⎥⎤=⎣⎢⎢⎡−h1⊤−−h2⊤−−h3⊤−−h4⊤−⎦⎥⎥⎤⎣⎡∣X∣⎦⎤
−
h
i
⊤
−
{-h_{i}^{\top}-}
−hi⊤−代表H的第i行,每行有4个系数;
X
=
[
U
V
W
T
]
⊤
X=\left[\begin{array}{llll} {U} & {V} & {W} & {T} \end{array}\right]^{\top}
X=[UVWT]⊤
U
′
=
h
1
T
X
V
′
=
h
2
T
X
W
′
=
h
3
T
X
T
′
=
h
4
T
X
U^{\prime}=h_{1}^{T} X\\ V^{\prime}=h_{2}^{T} X\\ W^{\prime}=h_{3}^{T} X\\ T^{\prime}=h_{4}^{T} X
U′=h1TXV′=h2TXW′=h3TXT′=h4TX
用欧几里得分布/齐次分部
U
′
T
′
=
h
1
⊤
X
h
4
⊤
X
V
′
T
′
=
h
2
⊤
X
h
4
T
X
W
′
T
′
=
h
3
⊤
X
h
4
T
X
\begin{aligned} &\frac{U^{\prime}}{T^{\prime}}=\frac{h_{1}^{\top} X}{h_{4}^{\top} X}\\ &\frac{V^{\prime}}{T^{\prime}}=\frac{h_{2}^{\top} X}{h_{4}^{T} X}\\ &\frac{W^{\prime}}{T^{\prime}}=\frac{h_{3}^{\top} X}{h_{4}^{T} X} \end{aligned}
T′U′=h4⊤Xh1⊤XT′V′=h4TXh2⊤XT′W′=h4TXh3⊤X
化为线性
U
′
⋅
h
4
⊤
X
−
T
′
h
1
⊤
X
=
0
V
′
⋅
h
4
⊤
X
−
T
′
h
2
⊤
X
=
0
W
′
⋅
h
4
⊤
X
−
T
′
h
3
⊤
X
=
0
\begin{array}{l} {U^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{1}^{\top} X=0}\\ {V^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{2}^{\top} X=0} \\ {W^{\prime} \cdot h_{4}^{\top} X-T^{\prime} h_{3}^{\top} X=0} \end{array}
U′⋅h4⊤X−T′h1⊤X=0V′⋅h4⊤X−T′h2⊤X=0W′⋅h4⊤X−T′h3⊤X=0
化为矩阵形式
[
−
T
′
X
⊤
0
0
U
′
X
⊤
0
−
T
′
X
⊤
0
V
′
X
⊤
0
0
−
T
′
X
⊤
W
’
X
⊤
]
[
h
1
h
2
h
3
h
4
]
\left[\begin{array}{cccc} {-T^{\prime} X^{\top}} & \pmb{0} & \pmb{0} & {U^{\prime} X^{\top}} \\ \pmb{0} & {-T^{\prime} X^{\top}} & \pmb{0} & {V^{\prime} X^{\top}} \\ \pmb{0} & \pmb{0} & {-T^{\prime} X^{\top}} & W’{X^{\top}} \end{array}\right]\left[\begin{array}{l} {h_{1}} \\ {h_{2}} \\ {h_{3}} \\ {h_{4}} \end{array}\right]
⎣⎡−T′X⊤000000000−T′X⊤000000000−T′X⊤U′X⊤V′X⊤W’X⊤⎦⎤⎣⎢⎢⎡h1h2h3h4⎦⎥⎥⎤
注意,这里的
0
=
[
0
0
0
0
]
\pmb{0} =\left[\begin{array}{llll} {0} & {0} & {0} & {0} \end{array}\right]
000=[0000]
然后用SVD解
A
h
=
0
\mathbf{A h}=\mathbf{0}
Ah=0
最后把
h
=
(
h
1
,
…
,
h
16
)
T
\mathbf{h}=\left(h_{1}, \dots, h_{16}\right)^{T}
h=(h1,…,h16)T变成4*4的
H
~
\tilde{\mathbf{H}}
H~,为什么上面加一个波浪线呢,因为这个
H
~
\tilde{\mathbf{H}}
H~是用归一化后的点
X
~
\tilde{\mathbf{X}}
X~和
X
′
~
\tilde{\mathbf{X'}}
X′~算出来的.
所以最后一步,解除归一化,得到H.
H
=
T
−
1
H
~
T
\mathbf{H}=\mathbf{T}^{-1} \tilde{\mathbf{H}} \mathbf{T}
H=T−1H~T