2016-01-18 46 views
3

我試圖將新的RHO單應算法與perspectiveTransform結合使用,但似乎RHO計算的單應性矩陣的大小錯誤,因此它與此不兼容方法。OpenCV RHO單應性方法不能與perspectiveTransform一起工作

見下面的代碼:

H = findHomography(obj_points, scn_points, RHO, 1.0); 
perspectiveTransform(obj_corners, scene_corners, H); 

以下斷言失敗:

error: (-215) scn + 1 == m.cols in function perspectiveTransform 

任何線索?它與RANSAC完美配合。

+0

我不知道RHO方法。但它可能是閾值問題..嘗試將1.0更改爲最靈活的可能值(我的意思是接受最簡單的單應性的閾值) –

+0

那麼,在他們的示例中,他們使用1.0作爲閾值:http://www.cvrobot.net /wp-content/uploads/2015/06/OpenCV3_CVPR_2015_Modules.pptx。我也嘗試過使用其他閾值而沒有運氣。 – Pablo

+0

Unfortnatnyl我沒有OpenCV 3.1現在就試用它。然而,你的問題似乎很奇怪,你可以把RANSAC和一切工作正常!唯一出現在我腦海裏的是這個算法在某些極端情況下可能無法找到單應性(這是不合邏輯的,因爲任何4個非共線點都可以產生單應性),但我不能認爲有任何其他可能性。祝你好運! –

回答

1

我已經找到了解決辦法:

隨着RHO,我要檢查單應矩陣,以確保它不是空的。使用此方法給4個或更多點找到Homography並不足以獲得單應性矩陣。

雖然給它大約50個匹配來計算,但它只能檢索一個非空矩陣的40-50%的時間。

+0

(其中之一)RHO的作者在這裏發言。我很想看到你的測試用例,例如一個Pastebin!你在同一列或行上有很多點嗎?另外,您是否事先對輸入點執行任何標準化?我相信,當點以這種方式預處理時,我們的算法實際上確實會發生_worse_。爲什麼我還不清楚;我們針對純速度進行了優化(基於廉價但數量較少的穩定算法編寫我們自己的數值求解器),並認識到我們可能會失去準確性。 –

+1

@IwillnotexistIdonotexist當然。這裏你有我的檢測方法的代碼:http://pastebin.com/mK2jZ83Q – Pablo

相關問題