Opencv學習筆記(六)SURF學習筆記

原創文章,轉載請註明出處: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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章