一 前言
對於上一篇文章——一分鐘詳解「本質矩陣」推導過程中,如何穩健地估計本質矩陣或者基本矩陣呢?正是這篇文章重點介紹的內容。
基本矩陣求解方法主要有:
- 直接線性變換法
- 8點法
- 最小二乘法
- 基於RANSAC的魯棒方法。
先簡單介紹一下直接線性變換法:
注: 三個紅線標註的三個等式等價。在上述分析過程中,如果n>=8時,最小二乘法求解是否是最優估計呢?
接下來,我們重點探討一下這個問題。
二 穩健估計
2.1 穩健的定義
穩健(robust):對資料噪聲的敏感性。
對於上述取樣,如果出現外點(距離正確值較遠),將會影響實際估計效果。
2.2 RANSAC——隨機一致性取樣
RANSAC主要解決樣本中的外點問題,最多可處理50%的外點情況。
基本思想: RANSAC通過反覆選擇資料中的一組隨機子集來達成目標。被選取的子集被假設為局內點,並用下述方法進行驗證:
- 有一個模型適用於假設的局內點,即所有的未知引數都能從假設的局內點計算得出。
- 用1中得到的模型去測試所有的其它資料,如果某個點適用於估計的模型,認為它也是局內點。
- 如果有足夠多的點被歸類為假設的局內點,那麼估計的模型就足夠合理。
- 然後,用所有假設的局內點去重新估計模型,因為它僅僅被初始的假設局內點估計過。
- 最後,通過估計局內點與模型的錯誤率來評估模型。
這個過程被重複執行固定的次數,每次產生的模型要麼因為局內點太少而被捨棄,要麼因為它比現有的模型更好而被選用。
對上述步驟,進行簡單總結如下:
舉個例子:使用RANSAC——擬合直線
2.3 關於OpenCV中使用到RANSAC的相關函式
- solvePnPRansac
- findFundamentalMat