2014-04-01 105 views
2

我試圖計算給定一組對應關係和基本矩陣F的Homography矩陣H從基礎矩陣中找到Homography矩陣

從極幾何原理我知道這可以通過epiline的交叉產品和FEpipole Geometry

[e_ij] x F_ij = H_ij

Epipolar image

做我使用OpenCV從尋找基本矩陣F使用cv::findFundamentalMat()設置兩個視圖之間的匹配。

我的問題是,我如何找到e_ij以及如何使用它來計算H。在OpenCV中有一個函數cv::computeCorrespondEpilines(),它可以找到對每個給定點的核心反應。

值得一提的是,我並不是對計算H直接從匹配集計算,而是僅從計算基本矩陣計算。

感謝

+0

其實這是一個數學問題; –

+0

理論上,基本矩陣應該是2級,它的內核(左右兩邊)就是對極。所以如果你的公式爲'H'是正確的,那麼問題歸結爲找到'F'的內核。 當然,由於矩陣可能是根據一些真實世界的測量值計算出來的,因此秩將始終爲3,所以您應該使用類似於** SVD **分解的方法來查找與最小特徵值對應的特徵向量(最接近零),你很好走。 –

+0

你的epiline符號令人困惑,因爲'e'通常表示epipole。你應該使用'l'作爲epiline。 – AldurDisciple

回答

0

首先,請您從鏈接中提到的公式(C29)採用的是直線l具有相同的座標爲e IJ,這是在圖像J核點。因此,L = E IJ不是epiline,因爲點(E IJ,電子 IJ)==規範(E IJ)2 == 1!= 0

如果我堅持到鏈接中給出的符號,可以計算作爲F ij的左空向量的對極e ij。您可以通過F_ij的轉置調用cv::SVD::solveZ來獲得它。然後,在您的鏈接,所述單對應性ħ IJ(其從圖像映射點i到影像j)可以被計算以H IJ = [E IJ] X˚F IJ,其中如所提到符號[e ij] x涉及3x3斜對稱運算符。該符號的定義可以在Wikipedia article on cross-product中找到。

然而,要知道,這樣的單應性ħ IJ通過使用具有相同座標的線爲e IJ從圖像J背投影平面限定從圖像i到影像j的映射。一般來說,這會給出與cv::findHomography返回的結果非常不同的結果,其中得到的單應性是通過觀察場景中的主平面從圖像i到圖像j的映射。因此,您將能夠使用cv::findHomography返回的單應性態近似登記這兩個圖像,但通常情況下,使用上述方法獲得的單應性情況並非如此。

+0

感謝您的回覆。這個符號現在對我來說很清楚。問題是這種方法對於發現'H'是否合理?使用'F'而不是直接計算'H'的原因是我想在一定程度上放鬆非平面性。我知道可以從'F'中檢索'H',但到目前爲止我找不到實現。 –

+0

@HamidBazargani不幸的是,當從一幅圖像映射到另一幅圖像時(除非它們是從同一個光學中心獲取的),您不能放鬆對單應性的非平面性。你可以爲任何你喜歡的飛機推導單應性,但總是有一個,即使不容易看到哪一個。如果你想更準確地註冊兩幅圖像,你應該看看光流和/或密集的立體匹配技術。 – AldurDisciple