利用SIFt特征点和RANSAC方法进行物体识别(利用openCV和vs2010实现)
最近在學習物體識別方面的東西。在特征點的提取領域,SIFT特征點是非常經典的一個特征點提取算法。RANSAC算法,是根據一組包含異常數據的樣本數據集,計算出數據的數學模型參數,得到有效樣本數據的算法。
本文的步驟就是,先利用SIFT算法對訓練圖片和實驗圖片分別提取特征點,然后將兩次提取的特征點進行匹配,這種單純的匹配方式會產生很多錯誤的匹配。然后用RANSAC方法,求出變換矩陣,從而可以排除大部分的錯誤匹配,留下的基本上都是正確的比配,最終實現了物體的識別。
在特征點的匹配過程中,設定閾值T,比較訓練數據與實驗數據中的特征向量,為訓練數據的每一個向量都在實驗數據中選取一個距離最小的和一個次小的對應點,當最小的距離與次小的距離比值小于T時,則認為與最小的距離點為一個匹配。(該方法為sift作者Lowe在2004年的文章中采用的方法)
采用此種方法,得到的試驗結果如下(選取閾值T為0.8):
從實驗結果不難看出,確實還存在著很多的錯誤的匹配點。
于是,就該使用RANSAC來刪選一下匹配點了。
RANSAC為RANdom SAmple Consensus的縮寫,它是根據一組包含異常數據的樣本數據集,計算出數據的數學模型參數,得到有效樣本數據的算法。
一個物體,從實驗數據到訓練數據,可以看做是進行了一個仿射變換。仿射變換可以由一個3X3的矩陣表示。該矩陣是未知的,可以使用RANSAC算法,從眾多既包含正確值也包含異常值的匹配中采用多次迭代的方法計算其變換矩陣,從而也就可以篩選出正確的匹配。下圖為RANSAC算法的詳細流程。
具體的算法流程如下:
通過此方法,可以大大的提高匹配的正確率,將不正確的匹配點篩出來,最終得到大部分正確的匹配點。
實驗結果如下圖
經過以上兩步的實驗,基本上算是完成了對鞋子這個物體的識別了。
2015年3月27日 ? 西安交通大學
轉載請注明出處。
總結
以上是生活随笔為你收集整理的利用SIFt特征点和RANSAC方法进行物体识别(利用openCV和vs2010实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用openCV中的cvCanny函数检
- 下一篇: git与github区别与简介