更新
我不知道它是否是一個新增加的OpenCV還是我剛剛錯過了它,但findHomography()函數實際上可以給你的正常值(OpenCV的2.4.2)。最後一個參數mask
(默認爲空)將由RANSAC在inctors的索引處填充1(或255)。
Mat findHomography(InputArray srcPoints, InputArray dstPoints,
int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray())
// ^
// |
老答案
使用RANSAC估計單應性(技術文檔稱爲正常值)的積分不能直接提取。它們是在內部計算的,但隨後列表被刪除。
提取它們的方法是修改findHomography函數(和相應的RANSAC函數)。但這很醜陋。
另外,清潔的方法是要考什麼點對輸入比賽日單應:
使用projectPoints(points1, homography, points1_dest)
(我希望這是函數名)申請單應於points1。 使用cv::distance(points1_dest, points2)
來查看他們中的哪一個在點2中足夠接近它們的對。距離應該小於或等於min_distance^2
。在你的情況下,0.5*0.5 = 0.25
。
來源
2012-04-08 07:58:16
Sam
這是一個很好的解決方法! – 2012-04-08 17:07:53
如果直接修改RANSAC代碼,那麼這裏就是保存所使用點的地方。如果(goodCount> MAX(maxGoodCount,modelPoints-1)){} ???是否在循環內 ? 因此,此時存儲ms1和ms2的值? – 2012-04-24 10:15:31