概述
目录
- 1 导论
- 2 基本直接线性变换(Basic DLT)
- 3 归一化直接线性变换(Normalized DLT)
- 4 鲁棒单应性估计(Robust Homography Estimation)
1 导论
计算机视觉系列教程1-1:透视空间与透视变换中提到,透视空间所有变换都是投影变换的特例,本节进一步研究投影变换矩阵(单应性矩阵)的估计。
透视变换的核心是单应性矩阵
H
H
H或单应性向量
h
h
h。
H
=
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
h
33
]
⇔
h
=
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
h
33
]
T
H=left[ begin{matrix} h_{11}& h_{12}& h_{13}\ h_{21}& h_{22}& h_{23}\ h_{31}& h_{32}& h_{33}\end{matrix} right] Leftrightarrow h=left[ begin{matrix} h_{11}& h_{12}& h_{13}& h_{21}& h_{22}& h_{23}& h_{31}& h_{32}& h_{33}\end{matrix} right] ^T
H=⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⇔h=[h11h12h13h21h22h23h31h32h33]T
设
p
s
r
c
=
[
x
y
1
]
T
p_{src}=left[ begin{matrix} x& y& 1\end{matrix} right] ^T
psrc=[xy1]T与
p
d
s
t
=
[
x
′
y
′
1
]
T
p_{dst}=left[ begin{matrix} x'& y'& 1\end{matrix} right] ^T
pdst=[x′y′1]T是二维透视空间
P
2
mathbb{P}^2
P2中,一次透视变换前后的对应点,因此其满足
p
d
s
t
=
H
p
s
r
c
⟺
[
x
′
y
′
1
]
=
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
h
33
]
[
x
y
1
]
p_{dst}=Hp_{src}Longleftrightarrow left[ begin{array}{c} x'\ y'\ 1\end{array} right] =left[ begin{matrix} h_{11}& h_{12}& h_{13}\ h_{21}& h_{22}& h_{23}\ h_{31}& h_{32}& h_{33}\end{matrix} right] left[ begin{array}{c} x\ y\ 1\end{array} right]
pdst=Hpsrc⟺⎣⎡x′y′1⎦⎤=⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⎣⎡xy1⎦⎤
若将单应性矩阵进行尺度缩放后作用于
p
s
r
c
p_{src}
psrc,则
k
H
p
s
r
c
=
k
[
h
11
h
12
h
13
h
21
h
22
h
23
h
31
h
32
h
33
]
[
x
y
1
]
=
k
p
d
s
t
kHp_{src}=kleft[ begin{matrix} h_{11}& h_{12}& h_{13}\ h_{21}& h_{22}& h_{23}\ h_{31}& h_{32}& h_{33}\end{matrix} right] left[ begin{array}{c} x\ y\ 1\end{array} right] =kp_{dst}
kHpsrc=k⎣⎡h11h21h31h12h22h32h13h23h33⎦⎤⎣⎡xy1⎦⎤=kpdst
而透视空间中, k p d s t kp_{dst} kpdst与 p d s t p_{dst} pdst实际上对应同一点,因此 k H kH kH与 H H H相当于同一次透视变换,故单应性矩阵 H H H仅有8个自由度,通常通过设置 h 33 = 1 h_{33}=1 h33=1或 ∥ h ∥ 2 2 = 1 lVert h rVert _{2}^{2}=1 ∥h∥22=1来约束冗余的参数。
下面详细阐述单应性矩阵估计方法。
2 基本直接线性变换(Basic DLT)
将上式改写为齐次形式
[ 0 0 0 − x − y − 1 y ′ x y ′ y y ′ x y 1 0 0 0 − x ′ x − x ′ y − x ′ − y ′ x − y ′ y − y ′ x ′ x x ′ y x ′ 0 0 0 ] [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] = [ 0 0 0 ] left[ begin{matrix} 0& 0& 0& -x& -y& -1& y'x& y'y& y'\ x& y& 1& 0& 0& 0& -x'x& -x'y& -x'\ -y'x& -y'y& -y'& x'x& x'y& x'& 0& 0& 0\end{matrix} right] left[ begin{array}{c} h_{11}\ h_{12}\ h_{13}\ h_{21}\ h_{22}\ h_{23}\ h_{31}\ h_{32}\ h_{33}\end{array} right] =left[ begin{array}{c} 0\ 0\ 0\end{array} right] ⎣⎡0x−y′x0y−y′y01−y′−x0x′x−y0x′y−10x′y′x−x′x0y′y−x′y0y′−x′0⎦⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡h11h12h13h21h22h23h31h32h33⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎡000⎦⎤
其中系数矩阵的秩为2,因此一对变换点仅能确定2个自由度。因此需要无三点共线的四对变换点才能确定单应性矩阵 H H H。
[ 0 0 0 − x 1 − y 1 − 1 y 1 ′ x 1 y 1 ′ y 1 y 1 ′ x 1 y 1 1 0 0 0 − x 1 ′ x 1 − x 1 ′ y 1 − x 1 ′ 0 0 0 − x 2 − y 2 − 1 y 2 ′ x 2 y 2 ′ y 2 y 2 ′ x 2 y 2 1 0 0 0 − x 2 ′ x 2 − x 2 ′ y 2 − x 2 ′ ⋮ ] [ h 11 h 12 h 13 h 21 h 22 h 23 h 31 h 32 h 33 ] = [ 0 0 0 ] ⇔ A h = 0 left[ begin{matrix} 0& 0& 0& -x_1& -y_1& -1& y_{1}^{'}x_1& y_{1}^{'}y_1& y_{1}^{'}\ x_1& y_1& 1& 0& 0& 0& -x_{1}^{'}x_1& -x_{1}^{'}y_1& -x_{1}^{'}\ 0& 0& 0& -x_2& -y_2& -1& y_{2}^{'}x_2& y_{2}^{'}y_2& y_{2}^{'}\ x_2& y_2& 1& 0& 0& 0& -x_{2}^{'}x_2& -x_{2}^{'}y_2& -x_{2}^{'}\ & & & & vdots& & & & \end{matrix} right] left[ begin{array}{c} h_{11}\ h_{12}\ h_{13}\ h_{21}\ h_{22}\ h_{23}\ h_{31}\ h_{32}\ h_{33}\end{array} right] =left[ begin{array}{c} 0\ 0\ 0\end{array} right] Leftrightarrow {Ah=0} ⎣⎢⎢⎢⎢⎢⎡0x10x20y10y20101−x10−x20−y10−y20⋮−10−10y1′x1−x1′x1y2′x2−x2′x2y1′y1−x1′y1y2′y2−x2′y2y1′−x1′y2′−x2′⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡h11h12h13h21h22h23h31h32h33⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=⎣⎡000⎦⎤⇔Ah=0
对于形如 A x = b Ax=b Ax=b的非齐次线性方程可以通过伪逆形式计算 x x x;对于形如 A x = 0 Ax=0 Ax=0的齐次线性方程的解则对应矩阵 A A A右奇异向量 v p v_p vp,其中 v p v_p vp对应的奇异值 σ p ≈ 0 sigma _papprox 0 σp≈0或不对应奇异值。
3 归一化直接线性变换(Normalized DLT)
基本DLT估计算法的缺陷是:
(1) 单应性估计不具有相似不变性
假设在第一次估计下有 x d s t = H x s r c x_{dst}=Hx_{src} xdst=Hxsrc。现对两张图像分别进行相似变换并重新进行单应性估计,得到 ( T d s t x d s t ) = H ′ ( T s r c x s r c ) left( T_{dst}x_{dst} right) =H'left( T_{src}x_{src} right) (Tdstxdst)=H′(Tsrcxsrc),改写为 x d s t = ( T d s t − 1 H ′ T s r c ) x s r c x_{dst}=left( T_{dst}^{-1}H'T_{src} right) x_{src} xdst=(Tdst−1H′Tsrc)xsrc,大部分情况下 H ≠ T d s t − 1 H ′ T s r c Hne T_{dst}^{-1}H'T_{src} H=Tdst−1H′Tsrc,这表明基本DLT算法无法抵抗相似变换的干扰。
(2) 估计的单应性矩阵容易产生病态条件,鲁棒性差
由于默认透视空间的尺度变换因子 w = 1 w=1 w=1,所以齐次坐标下很可能产生分量幅度差异大的情况,例如某特征点 X = [ 100 101 1 ] T X=left[ begin{matrix} 100& 101& 1\end{matrix} right] ^T X=[1001011]T。在这种情况下估计出的单应性矩阵,各个元素数值数量级可能会相差 1 0 4 10^4 104以上,导致病态条件——特征点的轻微变化都会造成单应性矩阵的剧变。
基于(1)(2)两种缺陷,需要将基本DLT算法进行优化,优化的核心就是特征点坐标的归一化。设原图像特征点集合为 ,目标图像特征点集合为 ,则具体的算法为:
① 将特征点集合 X s r c X_{src} Xsrc、 X d s t X_{dst} Xdst归一化
使用相似变换矩阵 T s r c T_{src} Tsrc、 T d s t T_{dst} Tdst将特征点集合中心移至原点,且与原点平均距离为 2 sqrt{2} 2。由于默认尺度因子为 w = 1 w=1 w=1,所以归一化到 2 sqrt{2} 2可以保持齐次坐标的三个分量有相同的幅度,例如 X = [ 100 100 1 ] T ⇒ X n o r m a l = [ 1 1 1 ] T X=left[ begin{matrix} 100& 100& 1\end{matrix} right] ^TRightarrow X^{normal}=left[ begin{matrix} 1& 1& 1\end{matrix} right] ^T X=[1001001]T⇒Xnormal=[111]T。
这里给出一种相似变换矩阵的计算方式,设
X n o r m a l = T X ⇔ [ x ~ i y ~ i 1 ] = [ s t x s t y 1 ] [ x i y i 1 ] X^{normal}=TXLeftrightarrow left[ begin{array}{c} tilde{x}_i\ tilde{y}_i\ 1\end{array} right] =left[ begin{matrix} s& & t_x\ & s& t_y\ & & 1\end{matrix} right] left[ begin{array}{c} x_i\ y_i\ 1\end{array} right] Xnormal=TX⇔⎣⎡x~iy~i1⎦⎤=⎣⎡sstxty1⎦⎤⎣⎡xiyi1⎦⎤
令
{ 1 N ∑ i = 1 N x ~ i = 1 N ∑ i = 1 N ( s x i + t x ) = 0 1 N ∑ i = 1 N y ~ i = 1 N ∑ i = 1 N ( s y i + t y ) = 0 1 N ∑ i = 1 N x ~ i 2 + y ~ i 2 = 2 begin{cases} frac{1}{N}sum_{i=1}^N{tilde{x}_i}=frac{1}{N}sum_{i=1}^N{left( sx_i+t_x right)}=0\ frac{1}{N}sum_{i=1}^N{tilde{y}_i}=frac{1}{N}sum_{i=1}^N{left( sy_i+t_y right)}=0\ frac{1}{N}sum_{i=1}^N{sqrt{tilde{x}_{i}^{2}+tilde{y}_{i}^{2}}}=sqrt{2}\end{cases} ⎩⎪⎨⎪⎧N1∑i=1Nx~i=N1∑i=1N(sxi+tx)=0N1∑i=1Ny~i=N1∑i=1N(syi+ty)=0N1∑i=1Nx~i2+y~i2=2
解得
{ t x = − s 1 N ∑ i = 1 N x i = − s x ˉ t y = − s 1 N ∑ i = 1 N y i = − s y ˉ s = 2 1 N ∑ i = 1 N x ~ i 2 + y ~ i 2 = 2 1 N ∑ i = 1 N ( x i − x ˉ ) 2 + ( y i − y ˉ ) 2 begin{cases} t_x=-sfrac{1}{N}sum_{i=1}^N{x_i}=-sbar{x}\ t_y=-sfrac{1}{N}sum_{i=1}^N{y_i=-sbar{y}}\ s=frac{sqrt{2}}{frac{1}{N}sum_{i=1}^N{sqrt{tilde{x}_{i}^{2}+tilde{y}_{i}^{2}}}}=frac{sqrt{2}}{frac{1}{N}sum_{i=1}^N{sqrt{left( x_i-bar{x} right) ^2+left( y_i-bar{y} right) ^2}}}\end{cases} ⎩⎪⎪⎨⎪⎪⎧tx=−sN1∑i=1Nxi=−sxˉty=−sN1∑i=1Nyi=−syˉs=N1∑i=1Nx~i2+y~i22=N1∑i=1N(xi−xˉ)2+(yi−yˉ)22
② 运用基本DLT算法由 与 估计单应性矩阵
③ 解归一化,映射回实际图像
4 鲁棒单应性估计(Robust Homography Estimation)
结合基本DLT算法、归一化DLT算法及计算机视觉系列教程6-2:图像匹配算法概述.的RANSAC算法进行单应性矩阵估计,具体流程如下:
(1) 设置迭代次数
K
=
∞
K=infty
K=∞,内点集
S
i
n
=
⊘
S_{in}=oslash
Sin=⊘,模型参数
H
=
H
0
H=H_0
H=H0;
(2) 随机从样本数据集
S
S
S中选取4对特征点,并通过基本DLT算法确定测试模型
H
t
e
s
t
H_{test}
Htest;
(3) 用
H
t
e
s
t
H_{test}
Htest遍历样本数据集
S
S
S,估计误差
ε
varepsilon
ε在距离阈值
t
t
t内的点加入内点集
S
i
n
S_{in}
Sin。其中阈值
t
=
5.99
σ
t=sqrt{5.99}sigma
t=5.99σ,
σ
sigma
σ为估计不确定度,估计误差
ε
varepsilon
ε主要有两种度量方式:
① 代数误差 ε i = ∥ A i h t e s t ∥ varepsilon _i=left| A_ih_{test} right| εi=∥Aihtest∥,其中
A i = [ 0 0 0 − x − y − 1 y ′ x y ′ y y ′ − y ′ x − y ′ y − y ′ x ′ x x ′ y x ′ 0 0 0 ] A_i=left[ begin{matrix} 0& 0& 0& -x& -y& -1& y'x& y'y& y'\ -y'x& -y'y& -y'& x'x& x'y& x'& 0& 0& 0\end{matrix} right] Ai=[0−y′x0−y′y0−y′−xx′x−yx′y−1x′y′x0y′y0y′0]
② 几何误差(二次投影误差) ε i = ∥ H X s r c , i , X d s t , i ∥ 2 2 + ∥ X s r c , i , H − 1 X d s t , i ∥ 2 2 varepsilon _i=left| HX_{src,i}, X_{dst, i} right| _{2}^{2}+left| X_{src,i}, H^{-1}X_{dst, i} right| _{2}^{2} εi=∥HXsrc,i,Xdst,i∥22+∥∥Xsrc,i,H−1Xdst,i∥∥22,可以视作交叉检验。
(4) 若
S
i
n
S_{in}
Sin的大小小于阈值
T
T
T,则放弃该模型,重复(2);若
S
i
n
S_{in}
Sin的大小大于阈值
t
t
t,则通过归一化DLT算法或Levenberg Marquardt等迭代优化算法,利用
S
i
n
S_{in}
Sin中的所有点重新估计模型
H
t
e
s
t
∗
H_{test}^{*}
Htest∗;
(5) 计算当前模型
H
t
e
s
t
∗
H_{test}^{*}
Htest∗下的内点率
ω
=
∣
S
i
n
∣
∣
S
∣
omega =frac{|S_{in}|}{|S|}
ω=∣S∣∣Sin∣,根据
K
=
ln
(
1
−
p
)
ln
(
1
−
ω
n
)
K=frac{ln left( 1-p right)}{ln left( 1-omega ^n right)}
K=ln(1−ωn)ln(1−p)更新迭代次数;
(6) 至此完成一次迭代,若
H
t
e
s
t
∗
H_{test}^{*}
Htest∗下内点率为最大,则更新
H
=
H
t
e
s
t
∗
H=H_{test}^{*}
H=Htest∗,重复(2) ~ (5)直至迭代次数满足要求。
???? 计算机视觉基础教程说明
章号 内容
0 色彩空间与数字成像
1 计算机几何基础
2 图像增强、滤波、金字塔
3 图像特征提取
4 图像特征描述
5 图像特征匹配
6 立体视觉
7 项目实战
???? 更多精彩专栏:
- 《ROS从入门到精通》
- 《机器人原理与技术》
- 《机器学习强基计划》
- 《计算机视觉教程》
- …
最后
以上就是微笑萝莉为你收集整理的计算机视觉教程1-2:单应性矩阵估计1 导论2 基本直接线性变换(Basic DLT)3 归一化直接线性变换(Normalized DLT)4 鲁棒单应性估计(Robust Homography Estimation)的全部内容,希望文章能够帮你解决计算机视觉教程1-2:单应性矩阵估计1 导论2 基本直接线性变换(Basic DLT)3 归一化直接线性变换(Normalized DLT)4 鲁棒单应性估计(Robust Homography Estimation)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复