我需要以儘可能高的準確度檢測灰度圖像上的角點。目前我正在使用OpenCV函數:cvFindCornerSubPix()。Opencv FindCornerSubPix precision
予製備的簡單的測試:得到了一個圖像與黑/白邊的一個角:
,然後一系列相同的對象的,移動的每個1/16pixel。我沒有手動檢查像素值,測試圖像很好。
檢測結果令人失望: 即使在TermCrit中將條件設置爲100次迭代或0.005閾值,檢測誤差也會高達0.08像素。
該圖顯示了誤差作爲像素內位置的函數。看起來不隨意。值得注意的另一件事:對於角落的其他角位(當邊緣不是水平/垂直時)結果更好,但仍不完美。
任何想法,如何使這個功能正常工作,爲什麼不這樣做,或者改爲使用什麼?
我將不勝感激任何建議除了像素的10%以下
當你移動1/16像素時,你確定它不是縮小的效果嗎? –
@Martin是的,我是。後續圖像邊緣的像素值如下所示:(0,255),(16,239),(32,223)等 – Pietro
您對翻譯圖像使用什麼插值方法?嘗試使用雙線性和雙三次。你可能會這樣引入一些偏見。也可以嘗試使用不是兩個反向冪的轉換值。您可以在翻譯圖像上手動驗證(通過灰度值的線性插值)邊緣處於理論上正確的位置。此外,嘗試使用理論(真實)角落位置初始化後運行迭代,並查看它是否保持穩定。 –