2017-02-10 62 views
2

錯誤我有一個homgraphy矩陣最小化在單應性矩陣

[h1 h2 h3 
    h4 h5 h6 
    h7 h8 h9] 

我已使用上述單應性矩陣變換的點 p1 to P1。 同樣

p2 to P2 
    p3 to P3 
    p4 to P4 

我知道

P1-P2 = D1 
P2-P3 = D2 
P3-P4 = D3 

之間的diffence由於單應性誤差有在D1,D2,D3小的誤差。 (我知道實際差異值) 設誤差爲E1, E2, E3(已知值)。

(E1 = D1 - Actual_Difference_between_P1_andP2) 

類似地計算E2,E3和E4。

現在我需要修改我的單應矩陣,使我的E1,E2,E3,E4最小化。

回答

2

簡介:

單應可以從4對以100%的準確度(真實0重投影誤差)的點來獲得。但是,當對點數大於4時,您可能無法獲得0錯誤的單應性。這是因爲這些點可能不在一臺3D打印機中。因此,首先你必須處理這樣一個事實,即在實際應用中,可能不會有100%準確的單應性(由於匹配錯誤),但有一個最優(最小重投影誤差矩陣)。

配方:

關於你的問題,看來你有兩個設定點對的。一個用來獲取Homography的人,另一個是基於它驗證你的模型,然後你想用它來增強你的模型。

如何增強單應性?

首先,使用兩個集合來獲得使用一些魯棒估計方法(例如RANSAC)的單應性。您可能會發現更多信息here。其次,遍歷你的設置並計算你所描述的每個點的重投影誤差。然後,消除重投影誤差超過某個閾值的所有點。第三,應用微調優化技術只是在內部,直到你在內部錯誤之間的錯誤總和方面良好的單應性。

如何做第三步?

你有8個參數來優化:

h11 h12 h13 
h21 h22 h23 
h31 h32  1 

優化功能:

enter image description here

,並且您已經計算出的單應使用RANSAC。所以,你有一個非常好的估計,即附近的全球最佳。這意味着非線性局部優化技術對於這種情況已經足夠了。很多算法都存在。選擇一個,並開始(一些建議:Hill ClimbingSimulated Annealing


編輯後OP的評論,只有距離愨第二組被稱爲:

優化功能應該是: enter image description here

其中AD_ij是Pi和Pj之間的實際距離。

您可能會嘗試降低複雜性,例如使用歐氏距離的兩邊參考值和查詢值。

+0

對於一些(第二組)點,我不知道轉換後的確切位置。但是轉化後的那些點我知道它們之間的確切歐氏距離。我想用這些信息來改進單應性矩陣。 – Deepak

+0

@ user_12編輯關於您的筆記 –

+0

謝謝。如何在Matlab或Octave或C++中實現此工具 – Deepak