SURF描述符上的色带

时间:2016-12-28 16:01:34

标签: opencv computer-vision sift surf

我正在阅读this论文,以获得更好的VLAD描述符。主要区别在于使用了所谓的 CSURF (引用文章):

  

为了提取CSURF,图像   首先转换为灰度和   兴趣点是使用。计算的   标准SURF算法。然后,相反   计算SURF描述符的   关于强度的每个兴趣点   通道,CSURF计算三个SURF   描述符,每个颜色带上一个。

我怎样才能在OpenCV中实现这一点?到目前为止我所见过的所有描述符(SIFT,SURF,ETC)都是在灰度上计算的,我如何使用SURF来描述基于一个色带(红色,绿色或蓝色)的关键点?

更新:这个解决方案是否正确?

Mat img = imread( src, CV_LOAD_IMAGE_COLOR );
Mat grey;
cvtColor(img,gray,CV_BGR2GRAY);

int minHessian = 400;
Ptr<SURF> detector = SURF::create( minHessian );
std::vector<KeyPoint> keypoints;

detector->detect( grey, keypoints );

vector<Mat> spl;
Mat blueDesc, greenDesc, redDesc;
split(img,spl);
detector->detectAndCompute( spl[0], Mat(), keypoints, blueDesc, true);
detector->detectAndCompute( spl[1], Mat(), keypoints, greenDesc, true);
detector->detectAndCompute( spl[2], Mat(), keypoints, redDesc, true);

0 个答案:

没有答案