opencv特征匹配之SSD

来源:互联网 发布:淘宝最好的二手手机店 编辑:程序博客网 时间:2024/05/22 05:02

SSD全称Sum of Squared Differences, 


用一张图来说明过程.

第二行的意思是,  由于求的是SSD最小值,  可以吧非负数去掉.变号后求其最大值

这样就化为了求correlation最大值的问题


视频截图来源http://crcv.ucf.edu/videos/lectures/2012.php


    这是opencv 2 cookbook那本书里的一个内容, 其中用了FastFeatureDetector

 过程就是先从第一个图像找特征点,  用个矩形框出来当作模板,

然后与 第二个图像中  所有以特征点为中心的矩形框内的 图像比较是否能匹配.


    我用书上的程序出了很多错误,  这里都调试好了,  结果在下面



    版本原因, 书上下面这一条始终是使用不了,  创建方法变了,  详情见我的github

      cv::FastFeatureDetector fastDet(80);

----------------------------

QT提示     error: no matching function for call to 'cv::FastFeatureDetector::FastFeatureDetector(int)'
      cv::FastFeatureDetector fastDet(80);
                                       ^

----------------------------


---------------------------------------------------------------

出现

OpenCV Error: Assertion failed (i1 >= 0 && i1 < static_cast<int>(keypoints1.size())) in drawMatches, file /home/tau/opencv/opencv-3.1.0/modules/features2d/src/draw.cpp, line 209

    这个没有记录更改的地方,   就不说了,    照着逻辑一条一条往下扒就行了.

----------------------------------------------------------------

    还有一个地方,  就是他用了matches.erase(matches.begin()+25,matches.end());

    我用这条时编译通过,  但是运行提示Segmentation fault (core dumped)

    这个错误叫我好找阿,  一开始以为又是opencv函数内的问题,  应该是指针越界了,begin()+25这个地方

    作者可能是只想找前25个特征点来匹配

                      

--------------------------------

上效果


原图已删,  和下图相近


可以看到效果并不是太好,   我对这些参数没有研究,   最近也没什么时间来一点点试验


完整代码  我的github  传送门

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------








如果 是一样的图片那效果必须很好阿

上一样的图




难道是patch选太小了吗





patch调大后虽然有些改变,     误匹配还是太多了,     不能接受

这两天用sift, surf ,ORB 之类的试下,   

opencv虽然都有相应的函数,  但是现在都已经移到opencv_contrib 额外包上去了

 光调用函数也不是个办法,  先学学算法再说吧

                                                     ---------------------2016.04.13     21: 30

看到有说归一化的, 归一化了一下



结果是全部误匹配.

什么原因呢?

看了归一化后的patch,  全部是黑色的!!  归一化最大值是1!  SSD 方法相差的并不多



换种方式呢?    correlation   还是不怎么好




所以这些方法(SSD,cross correlation等)   效果哪个好还真不好说

感觉都不太好.  当然了,   这两个图片还是不一样的,  无论是光照,角度,尺度

                                                              --------------2016.4.13     22:27


0 0
原创粉丝点击