• Opencv学习笔记(六)SURF学习笔记


    原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345

    本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正。


         看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习。

         SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高。它和SIFT的主要差别是图像多尺度空间的构建方法不同。

        在计算视觉领域,尺度空间被象征性的表述为一个图像金字塔,向下降採样一般用高斯金字塔。当中,输入图像函数重复与高斯函数的核卷积并重复对其进行二次抽样,这样的方法主要用于SIFT算法的实现,但每层图像依赖于原图像(当前尺度可能和原图象尺度相差非常大,这时候再那原图像卷积确实有点二了),而且图像须要重设尺寸,因此,这样的计算方法运算量较大。SURF算法对积分图像进行操作,卷积仅仅和前一幅图像有关,其降採样的方法是申请添加图像核的尺寸,这也是SIFT算法与SURF算法在使用金字塔原理方面的不同。SURF算法同意尺度空间多层图像同一时候被处理,不需对图像进行二次抽样,从而提高算法性能。

        其他方面的差别,以我菜鸟级的认识,差不大多。


        附上两篇SIFT相关的博文,讲得还是比較透彻的,两篇结合起来看基本能明确其原理。

        两篇讲的东西有点出入,只是对比着看还是能找出问题的,当然啃论文最easy找出问题了。

    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


  • 相关阅读:
    观点 | 为什么说云主机比物理机故障率更低?
    7 天玩转 ASP.NET MVC — 第 7 天
    浅谈 OneAPM 在 express 项目中的实践
    Swift 2.0 到底「新」在哪?
    DevOps:怎么实现源代码注释和系统文档的自动化更新?
    JavaScript学习之路-为什么要学习JavaScript语法
    Android精通之OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架
    Android精通之OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架
    Android精通之OrmLite数据库框架,Picasso框架,Okio框架,OKHttp框架
    AndroidStudio制作登录和注册功能的实现,界面的布局介绍
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4080486.html
Copyright © 2020-2023  润新知