仿射对极几何
仿射摄像机非常有用并且是许多实际情形的很好的近似,其最大优点在于:由于它的线性特征,许多最优算法可以用线性代数实现,而针对摄影摄像机的解法或者涉及到高阶多项式或者仅能用数值最小化才能实现
仿射对极几何
- 对极线:考虑第一幅视图中的两点 x 1 , x 2 \pmb x_1,\pmb x_2 x1,x2,这些点反投影为 3 D 3D 3D空间中的平行射线,因为所有投影射线是平行的,在第二幅视图中的对极线是反投影的射线的图像。这两条射线在第二幅视图中的图像也是平行的,因为一个仿射摄像机把平行场景直线映射到平行图像直线。因此,所有对极线平行,对极平面也是如此
- 对极点:因为对极线相交于对极点,并且所有对极线是平行的,所以对极点在无穷远处
仿射基本矩阵
-
F A F_A FA是秩为 2 2 2且自由度为 4 4 4的其次矩阵,它的形式为
F A = [ 0 0 a 0 0 b c d e ] F_A= \begin{bmatrix} 0 & 0 & a \\ 0 & 0& b \\ c &d & e \end{bmatrix} FA= 00c00dabe -
点对应:如果 x , x ′ x,x^\prime x,x′是仿射摄像机下的对应图像点,那么 x ′ T F A x = 0 \pmb x^{\prime T}F_A \pmb x = 0 x′TFAx=0,对于有限点
a x ′ + b y ′ + c x + d y + e = 0 ax^\prime +b y^\prime +cx+dy+e=0 ax′+by′+cx+dy+e=0 -
对极线
- I ′ = F A x = ( a , b , c x + d y + e ) T \pmb I^\prime = F_A\pmb x = (a,b,cx+dy+e)^T I′=FAx=(a,b,cx+dy+e)T是对应于 x \pmb x x的对极线
- I = F A x ′ = ( c , d , a x + b y + e ) T \pmb I=F_A \pmb x^\prime = (c,d,ax+by+e)^T I=FAx′=(c,d,ax+by+e)T是对应于 x ′ \pmb x^\prime x′的对极线
-
对极点
- 由 F A e = 0 F_A\pmb e = 0 FAe=0得 e = ( − d , c , 0 ) T \pmb e=(-d,c,0)^T e=(−d,c,0)T
- 由 F A T e ′ = 0 F_A^T \pmb e^\prime =0 FATe′=0得 e ′ = ( − b , a , 0 ) T \pmb e^\prime =(-b,a,0)^T e′=(−b,a,0)T
-
由摄像机矩阵 P A , P A ′ P_A,P_A^\prime PA,PA′计算
-
一般摄像机
F A = [ e ′ ] × P A ′ P A + F_A=[e^\prime]_\times P_A^\prime P_A^+ FA=[e′]×PA′PA+,其中 e ′ \pmb e^\prime e′是$e\prime=P_A\prime C $所确定的对极点
-
规范摄像机
P A = [ 1 0 0 0 0 1 0 0 0 0 0 1 ] , P A ′ = [ M 2 × 3 t 0 0 0 1 ] a = m 23 , b = − m 13 , c = m 13 m 21 − m 11 m 23 d = m 13 m 22 − m 12 m 23 , e = m 13 t 2 − m 23 t 1 P_A = \begin{bmatrix} 1 & 0 & 0& 0 \\ 0 & 1 & 0 & 0\\ 0 & 0& 0& 1 \end{bmatrix} \text{ , } P_A^\prime = \begin{bmatrix} &M_{2 \times 3} & & \pmb t \\ 0 & 0& 0 & 1 \end{bmatrix} \\ a=m_{23},b=-m_{13},c=m_{13}m_{21}-m_{11}m_{23} \\ d=m_{13}m_{22}-m_{12}m_{23},e=m_{13}t_2 - m_{23}t_1 PA= 100010000001 , PA′=[0M2×300t1]a=m23,b=−m13,c=m13m21−m11m23d=m13m22−m12m23,e=m13t2−m23t1
-
由图像点对应估计 F A F_A FA
由匹配点 x ↔ x ′ \pmb x \leftrightarrow \pmb x^\prime x↔x′的方程 x ′ T F A x = 0 \pmb x^{\prime T}F_A \pmb x = 0 x′TFAx=0定义,给定足够多的点就可以计算出 F A F_A FA。
线性算法
由 A f = 0 A\pmb f = 0 Af=0可以算出。由点对应计算两视图关系等价于在 I R 4 IR^4 IR4中由点 x , y , x ′ , y ′ x,y,x^\prime ,y^\prime x,y,x′,y′拟合一个曲面,对于方程为 x ′ T F A x = 0 x^{\prime T}F_Ax=0 x′TFAx=0的情形,该关系关于坐标是线性的,因此由仿射基本矩阵定义的族 V F A \mathcal V_{F_A} VFA是一个超平面。
由此得到两个简化
- 求 F A F_A FA的最优估计可以形式化为平面拟合问题
- S a m p s o n Sampson Sampson误差等于几何误差,而对一般基本矩阵的情形,它只是一个一阶近似,Sampson近似的切平面等于该曲面
黄金标准算法
在仿射变换下,最小化几何距离
min
∑
i
d
(
x
i
,
x
^
i
)
2
+
d
(
x
i
′
,
x
^
i
′
)
2
\min \sum_i d(x_i,\hat x_i)^2+d(x_i^\prime,\hat x_i^\prime)^2
min∑id(xi,x^i)2+d(xi′,x^i′)2等价于求一个超平面问题,即用一张超平面拟合
I
R
4
IR^4
IR4中的一组点
X
i
=
(
x
i
′
,
y
i
′
,
x
i
,
y
i
)
T
\pmb X_i=(x_i^\prime,y_i^\prime,x_i,y_i)^T
Xi=(xi′,yi′,xi,yi)T,估计点
X
i
^
=
(
x
^
i
′
,
y
^
i
′
,
x
^
i
,
y
^
i
)
\hat {\pmb X_i} = (\hat x_i^\prime,\hat y_i^\prime,\hat x_i,\hat y_i)
Xi^=(x^i′,y^i′,x^i,y^i)满足方程
x
^
i
′
F
A
x
^
i
=
0
\hat x_i^\prime F_A \hat x_i=0
x^i′FAx^i=0,等价于
(
X
^
i
,
1
)
f
=
0
(\hat {\pmb X}_i,1)\pmb f=0
(X^i,1)f=0,其中
f
=
(
a
,
b
,
c
,
d
,
e
)
T
\pmb f=(a,b,c,d,e)^T
f=(a,b,c,d,e)T表示超平面,最小化问题就变成了求平面
f
f
f最小化测量点和估计点之间距离的平方,即
C
=
∑
i
d
⊥
(
X
i
,
f
)
2
=
1
a
2
+
b
2
+
c
2
+
d
2
∑
i
(
a
x
i
′
+
b
y
i
′
+
c
x
i
+
d
y
i
+
e
)
2
\mathcal C = \sum_i d_\perp(\pmb X_i,\pmb f)^2 = \frac{1}{a^2+b^2+c^2+d^2} \sum_i(ax_i^\prime+by_i^\prime+cx_i+dy_i+e)^2
C=i∑d⊥(Xi,f)2=a2+b2+c2+d21i∑(axi′+byi′+cxi+dyi+e)2
把超平面的法向量记为
N
=
(
a
,
b
,
c
,
d
)
T
N=(a,b,c,d)^T
N=(a,b,c,d)T,则
C
=
1
∥
N
∥
2
∑
i
(
N
T
X
i
+
e
)
2
\mathcal C = \frac 1 {\parallel N \parallel ^2} \sum_i(N^TX_i+e)^2
C=∥N∥21i∑(NTXi+e)2
等价于经典的平面正交回归问题,算法步骤如下
- 关于参数
e
e
e最小化
C
\mathcal C
C,求得
∂
C
∂
e
=
0
\cfrac{\partial \mathcal C}{\partial e}=0
∂e∂C=0,得到此时
e
e
e的值代入
C
\mathcal C
C得
C = 1 ∥ N ∥ 2 ∑ i ( N T Δ X i ) 2 , Δ X i = X i − X ‾ \mathcal C = \frac{1}{\parallel N \parallel ^2}\sum_i(N^T\Delta X_i)^2,\Delta X_i = X_i-\overline X C=∥N∥21i∑(NTΔXi)2,ΔXi=Xi−X - 最小化这个关于
N
N
N的简化的代价函数,令
A
A
A表示行向量为
Δ
X
i
T
\Delta X_i^T
ΔXiT的矩阵,有
= ∥ A N ∥ 2 / ∥ N ∥ 2 \mathcal = \parallel AN \parallel ^2 / \parallel N \parallel^2 =∥AN∥2/∥N∥2
目标
给定 n ≥ 4 n \geq 4 n≥4组图像点对应 { x i ↔ x i ′ } \{\pmb x_i \leftrightarrow \pmb x_i^\prime\} {xi↔xi′},确定仿射基本矩阵的最大似然估计 F A F_A FA
算法
把对应表示为 X i = ( x i ′ , y i ′ , x i , y i ) T \pmb X_i=(x_i^\prime,y_i^\prime,x_i,y_i)^T Xi=(xi′,yi′,xi,yi)T
- 计算形心 X ‾ = 1 n ∑ i X i \overline X= \frac 1n\sum_iX_i X=n1∑iXi,并中心化各向量 Δ X i = X i − X ‾ i \Delta X_i = X_i -\overline X_i ΔXi=Xi−Xi
- 计算行向量为 Δ X i T \Delta X_i^T ΔXiT的 n × 4 n \times 4 n×4矩阵 A A A
- N = ( a , b , c , d ) T N=(a,b,c,d)^T N=(a,b,c,d)T是 A A A的对应最小奇异值的奇异向量,而 e = − N T X ‾ e=-N^T\overline X e=−NTX
最小配置
目标
给定 4 4 4组图像点对应 { x i ↔ x i ′ } \{\pmb x_i \leftrightarrow \pmb x_i^\prime\} {xi↔xi′},确定仿射基本矩阵
算法
前 3 3 3个 3 D 3D 3D点 X i X_i Xi定义一张平面 π \pi π
- 计算仿射变换矩阵 H A H_A HA,使得 x i ′ = H A x i , i = 1 , 2 , 3 x_i^\prime =H_Ax_i,i=1,2,3 xi′=HAxi,i=1,2,3
- 根据 I ′ = ( H A x 4 ) × x 4 ′ I^\prime = (H_Ax_4) \times x_4^\prime I′=(HAx4)×x4′确定第二幅视图中的对极线,由此得对极点 e ′ = ( − l 2 ′ , l 1 ′ , 0 ) T e^\prime=(-l^\prime_2,l_1^\prime,0)^T e′=(−l2′,l1′,0)T
- 任意点 x x x在第二幅视图中的对极线是 e ′ × ( H A x ) = F A x e^\prime \times (H_A x) = F_A x e′×(HAx)=FAx,因此 F A = [ ( − l 2 ′ , l 1 ′ , 0 ) T ] × H A F_A=[(-l_2^\prime,l_1^\prime,0)^T]_\times H_A FA=[(−l2′,l1′,0)T]×HA
其中第 4 4 4个点与另外三个点不能共面
三角测量
X ^ = X − d ⊥ N ∥ N ∥ \hat X = X- d_\perp \frac{N}{\parallel N \parallel } X^=X−d⊥∥N∥N
仿射重构
假设有 n ≥ 4 n \geq 4 n≥4组图像点对应,并假设没有噪声,那么可以计算 3 D 3D 3D点和摄像机的重构。在摄影摄像机的情形下重构是射影的,对于仿射情形,重构是仿射的【存疑】
Necker反转和浅浮雕多义性
- Necker反转:在平行投影下,一个物体旋转 ρ \rho ρ和镜像旋转 − ρ -\rho −ρ产生同样的图像。因此结构只能恢复到与前置平面相差一个反射。这种多义性在透视情况下不存在,因为点在这两种解释下有不同的深度,不会投影到同一点
- 浅浮雕多义性:深度参数 Δ Z \Delta Z ΔZ和旋转参数 sin ρ \sin \rho sinρ混淆在一起,并不能被分别确定——只能计算它们的乘积。因此一个浅的物体经历了一个大的转动和一个深度物体经历了一个小的转动产生同样的图像
计算运动
对两个弱透视摄像机给出
F
A
F_A
FA计算摄像机运动的表达式
P
=
[
α
x
α
y
1
]
[
1
0
0
0
0
1
0
0
0
0
0
1
]
,
P
′
=
[
α
x
′
α
y
′
1
]
[
r
1
T
t
1
r
2
T
t
2
0
T
1
]
P= \begin{bmatrix} \alpha_x & & \\ & \alpha_y & \\ &&1 \end{bmatrix} \begin{bmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0 &0&0&1 \end{bmatrix} \text{ , } P^\prime = \begin{bmatrix} \alpha_x^\prime & & \\ & \alpha_y^\prime & \\ &&1 \end{bmatrix} \begin{bmatrix} \pmb r^{1T} & t_1 \\ \pmb r^{2T} & t_2 \\ \pmb 0^T & 1 \\ \end{bmatrix}
P=
αxαy1
100010000001
, P′=
αx′αy′1
r1Tr2T0Tt1t21
其中
r
1
,
r
2
r^1,r^2
r1,r2是视图之间的旋转
R
R
R的第一行和第二行。假设两个摄像机的高宽比
α
x
/
α
y
\alpha_x/\alpha_y
αx/αy已知,但其相对尺度位置
s
=
α
x
/
α
x
′
s=\alpha_x/\alpha_x^\prime
s=αx/αx′未知。由两幅弱视图不能完全计算出旋转
R
R
R,因为存在浅浮雕多义性,但其余的运动参数可以由
F
A
F_A
FA计算得到。
为此,采用另一种旋转表示,可以将浅浮雕多义性的参数
ρ
\rho
ρ分离出来。将旋转分解为
R
=
R
ρ
R
θ
R= R_\rho R_\theta
R=RρRθ
首先,在图像平面上有一个角度为
θ
\theta
θ的轮式旋转
R
θ
R_\theta
Rθ,接着是绕轴
Φ
\Phi
Φ,角度为
ρ
\rho
ρ的旋转
R
ρ
R_\rho
Rρ,
Φ
\Phi
Φ的方向平行于图像平面并且与正
X
X
X轴的夹角为
ϕ
\phi
ϕ,即一个转出图像平面的纯旋转
tan
ϕ
=
b
a
,
tan
(
ϕ
−
θ
)
=
d
c
,
s
2
=
c
2
+
d
2
a
2
+
b
2
\tan \phi = \frac ba ,\tan(\phi-\theta) = \frac dc,s^2 = \frac{c^2+d^2}{a^2+b^2}
tanϕ=ab,tan(ϕ−θ)=cd,s2=a2+b2c2+d2