2012-04-07 164 views

回答

8

更新

我不知道它是否是一個新增加的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估計單應性(技術文檔稱爲正常值)的積分不能直接提取。它們是在內部計算的,但隨後列表被刪除。

提取它們的方法是修改find​​Homography函數(和相應的RANSAC函數)。但這很醜陋。

另外,清潔的方法是要考什麼點對輸入比賽日單應:

使用projectPoints(points1, homography, points1_dest)(我希望這是函數名)申請單應於points1。 使用cv::distance(points1_dest, points2)來查看他們中的哪一個在點2中足夠接近它們的對。距離應該小於或等於min_distance^2。在你的情況下,0.5*0.5 = 0.25

+0

這是一個很好的解決方法! – 2012-04-08 17:07:53

+0

如果直接修改RANSAC代碼,那麼這裏就是保存所使用點的地方。如果(goodCount> MAX(maxGoodCount,modelPoints-1)){} ???是否在循環內 ? 因此,此時存儲ms1和ms2的值? – 2012-04-24 10:15:31