关于特征点三角化
原文中一点不讲良心,这篇文章非常良心
https://zhuanlan.zhihu.com/p/103694374
1.点到射线距离平方和最优的方法
每个相机的射线方程(3D):
x
^
=
t
C
i
w
+
k
C
i
w
R
n
^
\hat{x}=t^w_{C_i}+k^w_{C_i}R\hat{n}
x^=tCiw+kCiwRn^
其中
n
^
=
(
u
,
v
,
1
)
/
(
u
2
+
v
2
+
1
)
\hat{n}=(u,v,1)/\sqrt{(u^2+v^2+1)}
n^=(u,v,1)/(u2+v2+1)是该相机坐标系(
C
i
C_i
Ci)下的射线的单位向量,
t
C
i
w
t^w_{C_i}
tCiw是相机在世界坐标系下的位置。世界点P到该射线的垂直距离是:
2
(
P
−
t
C
i
w
)
×
C
i
w
R
n
^
2(P-t^w_{C_i})\times ^w_{C_i}R\hat{n}
2(P−tCiw)×CiwRn^
综合各个相机的情况,目标函数是:
e
=
Σ
∣
(
P
−
t
C
i
w
)
×
C
i
w
R
n
^
∣
2
e=\Sigma |(P-t^w_{C_i})\times ^w_{C_i}R\hat{n}|^2
e=Σ∣(P−tCiw)×CiwRn^∣2
这个目标函数里面是关于X,Y,Z的二次型,可以很轻松得出e最小的时候的P的值。
e
=
Σ
(
(
P
−
t
)
×
n
^
)
2
=
∣
[
(
Y
−
t
2
)
n
3
−
(
Z
−
t
3
)
n
2
(
Z
−
t
3
)
n
1
−
(
X
−
t
1
)
n
3
(
X
−
t
1
)
n
2
−
(
Y
−
t
2
)
n
1
]
∣
2
e=\Sigma ((P-t)\times \hat{n})^2=|\begin{bmatrix}(Y-t2)n3-(Z-t3)n2\\(Z-t3)n1-(X-t1)n3\\(X-t1)n2-(Y-t2)n1\end{bmatrix}|^2
e=Σ((P−t)×n^)2=∣⎣⎡(Y−t2)n3−(Z−t3)n2(Z−t3)n1−(X−t1)n3(X−t1)n2−(Y−t2)n1⎦⎤∣2
∂
e
∂
X
=
Σ
−
(
(
Z
−
t
3
)
n
1
−
(
X
−
t
1
)
n
3
)
n
3
+
(
(
X
−
t
1
)
n
2
−
(
Y
−
t
2
)
n
1
)
n
2
\frac{\partial e}{\partial X}=\Sigma-((Z-t3)n1-(X-t1)n3)n3+((X-t1)n2-(Y-t2)n1)n2
∂X∂e=Σ−((Z−t3)n1−(X−t1)n3)n3+((X−t1)n2−(Y−t2)n1)n2
…
这是关于X,Y,Z的线性方程组,很容易求得X,Y,Z
2.《多视几何》的直接线性变换法
略