介紹
匹配不同圖片的特征是計算機視覺常見的問題. 當所有要匹配的圖片很相似的時候(大小,方位),簡單的角點檢測算子就可以匹配,但是,當你的圖片大小,方位不同的時候,你就要用到尺度不變特征變換(scale invariant feature transform).
為什么是SIFT?
SIFT算子不僅僅具有尺度不變特性,你可以改變以下的內容,還可以得到很好的結果:
- scale尺度
- rotation旋轉
- Illumination亮度
- Viewpoint視角
下面是一個例子:
我們要查找這些內容:
我們在下面這張圖片中查找以上目標
這是結果:
可以看出上面的圖片匹配非常魯棒。大長方形圈出了匹配對象; 小正方形是這些區域內的特征. 注意看大長方形的形狀,它和你要匹配的目標在場景圖片中的方向和視角是一致的.
SIFT是一個非常復雜的算法. 它涉及到很多處理過程,也很容易讓人糊塗. 因此我將整個算法分為以下幾個部分, 下面是SIFT算法的主要部分:
- 構建尺度空間
- LOG近似
- 角點匹配
- 去除低質量角點
- 給角點加上方位
- 生成SIFT特征
我可以用SIFT算子做什么?
當你實現了整個算法之后,你就可以得到你圖片的SIFT特征. 一旦你有了這些,你可以做任何你想做的:
圖片查找,目標檢測/識別, 或者你想到的任何東西,這些我們后面會談到.
但是問題是這個算法是有專利的!
因此,對於學術目的而言,SIFT還是很好的. 如果你在找一些能應用到商業的算法,還是換個方法吧!
這個系列接下來的內容
- 1. 介紹
- 2. 尺度空間
- 3. LOG 近似
- 4. 角點匹配
- 5. 去除低分辨率角點
- 6. 角點的方向
- 7. 生成特征
原文地址:http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/ 作者:Utkarsh Sinha
實現地址:https://github.com/kassol/SIFT/tree/master/src
參考資料:http://www.inf.fu-berlin.de/lehre/SS09/CV/uebungen/uebung09/SIFT.pdf
http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_1.pdf
http://www.cs.ubc.ca/~lowe/papers/iccv99.pdf
https://stackoverflow.com/questions/19815732/what-is-gradient-orientation-and-gradient-magnitude