原創文章,轉載請註明出處:http://blog.csdn.net/crzy_sparrow/article/details/7392345
本人挺菜的,肯定有很多錯誤紕漏之處 ,希望大家不吝指正。
看了harris角點檢測之後,開始研究SURF角點檢測,發現挺複雜的,一時也只瞭解了大概,把了解的東西總結下,以便下次深入學習。
SURF角點檢測算法是對SIFT的一種改進,主要體現在速度上,效率更高。它和SIFT的主要區別是圖像多尺度空間的構建方法不同。
在計算視覺領域,尺度空間被象徵性的表述爲一個圖像金字塔,向下降採樣一般用高斯金字塔。其中,輸入圖像函數反覆與高斯函數的核卷積並反覆對其進行二次抽樣,這種方法主要用於SIFT算法的實現,但每層圖像依賴於原圖像(當前尺度可能和原圖象尺度相差很大,這時候再那原圖像卷積確實有點二了),並且圖像需要重設尺寸,因此,這種計算方法運算量較大。SURF算法對積分圖像進行操作,卷積只和前一幅圖像有關,其降採樣的方法是申請增加圖像核的尺寸,這也是SIFT算法與SURF算法在使用金字塔原理方面的不同。SURF算法允許尺度空間多層圖像同時被處理,不需對圖像進行二次抽樣,從而提高算法性能。
其它方面的區別,以我菜鳥級的認識,差不大多。
附上兩篇SIFT相關的博文,講得還是比較透徹的,兩篇結合起來看基本能明白其原理。
兩篇講的東西有點出入,不過對照着看還是能找出問題的,當然啃論文最容易找出問題了。
SIFT簡介:http://www.360doc.com/content/11/1230/23/3054335_176200661.shtml
SIFT算法心得:http://www.360doc.com/content/11/1207/17/3054335_170430459.shtml
其他博文:
SIFT/SURF算法的深入剖析——談SIFT的精妙與不足:http://hi.baidu.com/xiaoduo170/blog/item/a22bcc1c2349708286d6b636.html
SIFT/SURF系列:http://www.yongblog.com/archives/tag/surf%E7%AE%97%E6%B3%95
SURF論文和源碼(論文講得很詳細,代碼c++實現):
http://download.csdn.net/detail/crzy_sparrow/4171374
opencv小試SURF算法:
#include "opencv2/opencv.hpp"
int main(){
cv::Mat image, image1 = cv::imread ("test.jpg");
//灰度變換
cv::cvtColor (image1,image,CV_BGR2GRAY);
std::vector<cv::KeyPoint> keypoints;
cv::SurfFeatureDetector surf(2500);
surf.detect (image,keypoints);
cv::drawKeypoints (image,keypoints,image,cv::Scalar::all (255),cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
cv::namedWindow ("surf");
cv::imshow ("surf",image);
cv::waitKey (0);
return 0;
}
測試結果:
標記圈的半徑長短和特徵點所在尺度有關,那條半徑是特徵點的方向。
SIFT算法的教程、源碼及應用軟件
1、ubc:DAVID LOWE---SIFT算法的創始人,兩篇巨經典
http://www.cs.ubc.ca/~lowe/
2、cmu:YanKe---PCASIFT,總結的SIFT方面的文章
http://www.andrew.cmu.edu/user/yke/
3、ubc:M.BROWN---SIFT算法用於圖像拼接的經典應用autopano-sift,包括一個SIFTLIB庫
http://www.cs.ubc.ca/~mbrown/autostitch/autostitch.html
http://www.cs.ubc.ca/~mbrown/panorama/panorama.html
4、toronto:Jepson---Matlab SIFT tutorial, 超級超級超級經典~
http://www.cs.toronto.edu/~jepson/csc2503/
5、ucla:Vedaldi---加州大學一個博士生編的Matlab SIFT tutorial
http://www.cs.ucla.edu/~vedaldi/
6.http://en.wikipedia.org/wiki/Scale-inva ... _transform
7. 大牛整理的計算機視覺分類
http://www.cs.ubc.ca/~lowe/vision.html
8. http://note.sonots.com/SciSoftware/SIFT.html
9.提到了計算變換矩陣的RANSAC法
http://web.engr.oregonstate.edu/~hess/index.html
10. 仿射不變特徵點檢測,提到了性能評價的方法
http://www.robots.ox.ac.uk/~vgg/research/affine/
11. 一個日本人,挺牛的
http://note.sonots.com/
12. PCA-SIFT
http://www.cs.cmu.edu/~yke/pcasift/
13 opencv sift
http://web.engr.oregonstate.edu/~hess/index.html
14 matlab sift
http://www.vlfeat.org/~vedaldi/code/sift.html
http://www.vlfeat.org/overview/sift.html
15 Improve Scale Invariant Feature Transform (SIFT) 斯坦福
http://robots.stanford.edu/cs223b04/project9.html
16 Known implementations of SIFT mit
http://people.csail.mit.edu/albert/ladypack/wiki/index.php/Known_implementations_of_SIFT