cs131 lecture 5 Features And Fitting-RANSAC
線段檢測的難題 會有雜訊干擾 如何找到一條局部斷裂的線 由 noise 干擾導致檢測方向偏移 回顧投票法 蠻力投票法,時間複雜度$ O(N^2) $ 投票法可以讓所有模型通用 循環所有參數,取得投票結果 選出高票參數結果 雜訊所產生的線段也會被納入投票的參數中,但通常結果會與我們想要的預期不符 RANSAC RANdom SAmple Consensus,隨機抽樣一致 將資料分成 inliers(正常數據), outliers(異常數據) RANSAC 目標:濾除異常數據,使用正常的數據進行檢測 直覺來看,在線段檢測中,若選擇的 edge 是 outliers 進行擬合時,其他點應該不會在所擬合的線段上 隨機選取兩點得到直線後,藍色點為靠近線段的 inliers,紫色點為遠離線段的 outliers RANSAC 流程 循環 k 次迭代: 在一組資料集中(ex:edge 點座標)隨機選擇要執行模型評估的最小數據集(ex:直線偵測下是兩個點) 代入選擇的數據集來計算數據模型 尋找此模型內的 inliers 數量 比較當前模型結果與目前最佳模型結果數量,紀錄最大 inliers 數量與對應模型結果 重新估算迭代次數 k 如何設定參數 k 參數符號定義: 假設$n$是建立模型所需的點數量(已知,ex:直線擬合需要兩點) $w$ 是 inliers 的數量/數據集的總數量(未知) $w^n$是所有$n$個點均為是 inliers 的機率 $1-w^n$是所有$n$個點有一個是 outliers 的機率 迭代$k$次都沒辦法找到所有點是 inliers 的機率$(1-w^n)^k$ 迭代$k$次所有點是 inliers 的機率$1-(1-w^n)^k$ 選擇較高的迭代次數$k$來讓找到 inliers 的機率提高 ...