單應性矩陣,是用來描述兩個平面之間的變換關係,是乙個3x3的齊次矩陣。
圖上的4個綠色的圈,兩兩可以對應,h可以表達第一張圖變換到第二張圖的轉換關係。具體的表示式:
aa表示尺度資訊,h1−
h9h_1-h_9
h1−h9
表示h
hh矩陣,h
hh矩陣有8個自由度,h9=
1h_9=1
h9=
1,所以只需要4對點就可以計算出。
首先展開:
然後可以前兩式比上第三式,這樣可以把係數a
aa約掉。並讓等式右邊等於0。
展開成矩陣的形式 $a_ih = 0 $的形式
把所有點對都考慮進來 ah=
求解方程組,可以利用dlt(direct linear transform 直接線性變換)
具體的求解步驟就是利用最小二乘法,通過svd 分解求的:
對a
aa進行svd分解, a的大小是2nx
92n x 9
2nx9
, n
nn 表示點對數
a =u
evta=uev^t
a=uevthh
h的值是最小的奇異值對應的v中的特徵向量,也就是v的最後一列
預設h
9h_9
h9的值不等於1,所以每個hi=
hi/h
9h_i=h_i/h_9
hi=hi
/h9
一、歸一化
一般單應性矩陣的的點對的數值,可能會相差很大,這樣會對結果的精度有影響,如果利用優化演算法求解,結果收斂不會那麼快,根據多視覺立體幾何中的計算可以先對匹配點進行歸一化操作,求出結果後,再進行乙個逆變換成最終的結果。
具體的步驟:有對應點 x
ix_i
xi 和 xi′
x_^xi
′對x
ix_i
xi 存在相似變換矩陣t
tt,t
tt只對點進行尺度和平移變換,x^i
=txi
\widehat_i = tx_i
xi=tx
i關於t,先計算x點的平均值cxcx
cx和 cycy
cy, 然後對x點去除中心,也就是平移到(0, 0),計算尺度因子sxsx
sx和s ysy
sy, 統計去除中心的x點到中心點(0, 0)的平均距離,$ stdx, stdy$, 那麼尺度 sx=
stdx
/2sx = stdx /\sqrt2
sx=std
x/2
, s y=
stdy
/2sy = stdy / \sqrt2
sy=std
y/2
, 對映的最大距離是2
\sqrt2
2.同理,對xi′
x_^xi
′求解 t′t^
t′, x ^i
=t′x
i\widehat_i = t^x_i
xi=t′
xi對x
ix_i
xi 和 xi′
x_^xi
′,進行dlt變換,得h
^\widehat
h對h^
\widehat
h進行逆變換: h=t
′−1h
^h = t^\widehat
h=t′−1
ht二、優化演算法
當有足夠多的匹配點對,最小二乘法求解的結果,並不一定最小化他們之間誤差。
d is
dis\^\}
dis關於優化演算法,這裡暫時不討論了,常用的凸優化演算法有,最小梯度下降法、高斯-牛頓演算法、lm演算法等。
實戰階段,引用了eigen庫,核心**如下:
// 歸一化
void normal ( matrixxd& p, matrix3d& t )
//dlt 計算 h矩陣
vectorxd solvehomographydlt ( matrixxd& srcnormal, matrixxd& d
stnormal )
// 主程式
void findhomography ( std::vector& srcpoints, std::v
ector& dstpoints, eigen::matrix3d& h, bool isnorma
l ){
assert ( srcpoints.size() == dstpoints.size() );
int n = srcpoints.size();
matrixxd srcnormal ( n, 3 );
matrixxd dstnormal ( n, 3 );
for ( int i=0; iopencv: basic concepts of the homography explained with code
multiple view geometry in computer vision
10.2 2d alignment - dlt (cmu.edu)
Homography單應矩陣
在計算機視覺的背景下,2d affine是2d homography的子集。從幾何意義上講,2d homography是用來計算一堆在同乙個三維平面上的點在不同的二維影象中的投影位置的,是乙個一對一的對映。2d affine是2d homography的乙個特例,它對應著的情況是這個三維平面在無窮遠...
Homography單應性矩陣程式實現
單應性矩陣重要應用在求解兩幅影象的對映關係,或者影象座標與世界座標的對映關係。這裡主要在張正有相機標定法的基礎上,求解h。具體理論為請點 相機標定法 張正有 opencv程式實現 std vector pt1 4 std vector pt2 4 pt1 0 point2f 0,0 pt1 1 po...
線性求解單應矩陣 Homography
定義 2d單應 給定影象 mathbb 中的特徵點集 mathbf i 和另一幅影象在 mathbb 中對應的特徵點集 mathbf 將 mathbf i 對映到 mathbf 的射影變換。在實際情況中,點 mathbf 和 mathbf 是兩幅影象上的點,每幅影象都視為一張射影平面 mathbb ...