码迷,mamicode.com
首页 > 其他好文 > 详细

opencv3.0.1 中的SurfFeaturesFinderGpu类的问题.

时间:2016-07-31 17:49:52      阅读:519      评论:0      收藏:0      [点我收藏+]

标签:

最近需要实现一下图像配准的功能, 参考了一下opencv中的实现,发现几个问题, SurfFeaturesFinderGpu在找特征点的过程中会抛出异常,改了一下代码,可以运行了.

void SurfFeaturesFinderGpu::find(InputArray image, ImageFeatures &features)
{
    CV_Assert(image.depth() == CV_8U);
    Mat imageGray;

    /*## xie debug*/
#if 1
    ensureSizeIsEnough(image.size(), image.type(), image_);    
    image_.upload(image);
    cvtColor(image, imageGray, COLOR_BGR2GRAY);
    ensureSizeIsEnough(imageGray.size(), imageGray.type(), gray_image_);
    gray_image_.upload(imageGray);    
#else
    ensureSizeIsEnough(image.size(), image.type(), image_);
    image_.upload(image);

    ensureSizeIsEnough(image.size(), CV_8UC1, gray_image_);
    cvtColor(image_, gray_image_, COLOR_BGR2GRAY);
#endif

问题是,用这个CUDA的finder .   结果消耗的时间比不用CUDA要多出几个数量级

下面是不用CUDA的性能数据:

技术分享

使用了CUDA以后:

技术分享

寻找特征点的过程从耗时2.42秒升级到231秒.   希望OPENCV的作者可以将这个算法的性能进行改进. 

opencv3.0.1 中的SurfFeaturesFinderGpu类的问题.

标签:

原文地址:http://www.cnblogs.com/enigma19971/p/5723413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!