讲怎么求平面射影变换H
直接线性变换(DLT)算法
利用 x′i×Hxi=0 x i ′ × H x i = 0 , hiT h i T 是 H H 的第行。一般选择前2行
⎡⎣⎢⎢0Tw′ixTi−y′ixTi−w′ixTi0Tx′ixTiy′ixTi−x′ixTi0T⎤⎦⎥⎥⎡⎣⎢h1h2h3⎤⎦⎥=0 [ 0 T − w i ′ x i T y i ′ x i T w i ′ x i T 0 T − x i ′ x i T − y i ′ x i T x i ′ x i T 0 T ] [ h 1 h 2 h 3 ] = 0求解 H H ,解是A的最小奇异值的单位奇异矢量
不同的代价函数
代数距离,DLT的解在次代价函数下取得最优解
dalg(x′i,Hxi)2=||εi||2=||[0Tw′ixTi−w′ixTi0Ty′ixTi−x′ixTi]h||2 d a l g ( x i ′ , H x i ) 2 = | | ε i | | 2 = | | [ 0 T − w i ′ x i T y i ′ x i T w i ′ x i T 0 T − x i ′ x i T ] h | | 2几何距离
单图像误差:∑id(x′i,Hx¯i)2 单 图 像 误 差 : ∑ i d ( x i ′ , H x ¯ i ) 2
对称转移误差:∑id(xi,H−1x′i)2+d(x′i,Hxi)2 对 称 转 移 误 差 : ∑ i d ( x i , H − 1 x i ′ ) 2 + d ( x i ′ , H x i ) 2重投影误差
∑id(xi,x^i)2+d(x′i,x^′i)2 s.t x^′i=H^x^i ∑ i d ( x i , x ^ i ) 2 + d ( x i ′ , x ^ i ′ ) 2 s . t x ^ i ′ = H ^ x ^ i几何距离和代数距离的比较,考虑单图像误差
(x^′i,y^′i,z^′i)=Hx¯ ( x ^ i ′ , y ^ i ′ , z ^ i ′ ) = H x ¯
Aih=εi=(y′iw^′i−w′iy^′iw′ix^′i−x′iw^′i) A i h = ε i = ( y i ′ w ^ i ′ − w i ′ y ^ i ′ w i ′ x ^ i ′ − x i ′ w ^ i ′ )
dalg(x′i,x^′i)=(y′iw^′i−w′iy^′i)2+(w′ix^′i−x′iw^′i)2 d a l g ( x i ′ , x ^ i ′ ) = ( y i ′ w ^ i ′ − w i ′ y ^ i ′ ) 2 + ( w i ′ x ^ i ′ − x i ′ w ^ i ′ ) 2
d(x′i,x^′i)=dalg(x′i,x^′i)/w^′iw′i d ( x i ′ , x ^ i ′ ) = d a l g ( x i ′ , x ^ i ′ ) / w ^ i ′ w i ′重投影的几何解释, νH ν H 是满足 (x′,y′,1)=H(x,y,1) ( x ′ , y ′ , 1 ) = H ( x , y , 1 ) 的4维空间的代数簇
||Xi−X^i||2=(xi−x^i)2+(yi−y^i)2+(x′i−x^′i)2+(y′i−y^′i)2=d(xi,x^i)2+d(x′i,x^′i)2 | | X i − X ^ i | | 2 = ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 + ( x i ′ − x ^ i ′ ) 2 + ( y i ′ − y ^ i ′ ) 2 = d ( x i , x ^ i ) 2 + d ( x i ′ , x ^ i ′ ) 2
通过一系列点 (xi.yi,x′i,y′i) ( x i . y i , x i ′ , y i ′ ) ,拟合出代数簇Sampson误差,在 νH ν H 上的点 X X 满足,记为 ζH(X)=(0,0)T ζ H ( X ) = ( 0 , 0 ) T
ζH(X+δx)=ζH(X)+δζHδXδx ζ H ( X + δ x ) = ζ H ( X ) + δ ζ H δ X δ x
求在满足 Jδx=−ε J δ x = − ε 条件下使 ||δx|| | | δ x | | 取最小值的矢量 δx δ x ,最小化δTxδx−2λT(Jδx+ε) δ x T δ x − 2 λ T ( J δ x + ε )
2δx−2λTJ=0T↦δx=JTλ 2 δ x − 2 λ T J = 0 T ↦ δ x = J T λ
JJTλ=−ε↦λ=−(JJT)−1ε↦δx=−JT(JJT)−1ε J J T λ = − ε ↦ λ = − ( J J T ) − 1 ε ↦ δ x = − J T ( J J T ) − 1 ε
X^=X+δx, ||δx||2=εT(JJT)−1ε X ^ = X + δ x , | | δ x | | 2 = ε T ( J J T ) − 1 ε
最小化目标函数: ∑iεTi(JJT)−1εi 最 小 化 目 标 函 数 : ∑ i ε i T ( J J T ) − 1 ε i
这里有2处近似:1. J J ,点并未在簇上。2. 泰勒一阶展开
变换不变性
DLT算法的非不变性, xi↔x′i x i ↔ x i ′ 由DLT算法得到 H H 。相似变换下,由DLT算法会得到 H~=T′HT−1 H ~ = T ′ H T − 1 吗?
回答是:不一定能,所以DLT算法不具有不变性,会因为坐标选择而出现映射的不同几何误差具有相似不变性
归一化变换,数据的归一化在一些算法中是必须得,特别是对一些不太良定的问题,例如:基本矩阵的计算以及三焦张量的DLT算法。
1.对点进行平移,让这些点的图心(Centroid)移到原点
2.进行尺度缩放,让这些点的到原点的平均距离为 2–√ 2
T=s⎡⎣⎢100010−u¯−v¯1/s⎤⎦⎥ ,s=2–√n∑i[(xi−u¯)2+(yi−v¯)2]1/2 T = s [ 1 0 − u ¯ 0 1 − v ¯ 0 0 1 / s ] , s = 2 n ∑ i [ ( x i − u ¯ ) 2 + ( y i − v ¯ ) 2 ] 1 / 2
迭代最小化方法
- 有牛顿迭代和LM迭代
鲁棒估计
- 距离阈值:根据概率来选择,利用 χ2 χ 2 分布
- 采样多少次: ε=1−w ε = 1 − w 是野值比率,,选择 s s 个点,是采样点中没有野值的概率, (1−ws)N=1−p ( 1 − w s ) N = 1 − p
- 算法步骤
(1)角点检测
(2)角点匹配
(3)RANSAC鲁棒估计
(4)最优估计:由划分为内点的对应点重新估计H,利用LM迭代
(5)引导匹配:
(6)最后2步可以重复进行直到对应的数目稳定