OPENCV SURF 特征描述符强度

标签 opencv surf

有什么方法可以将 OPENCV SURF 中的关键点数量限制为 100 个? 获取到的关键点会按照强度排序吗? 如何获取描述符的强度? 我正在使用 cpp 程序在 LINUX 系统中处理 OPENCV。

问候, 希克沙

我的代码是: int main( int argc, char** argv ) {

         Mat img_1 = imread( argv[1], CV_LOAD_IMAGE_GRAYSCALE );
         Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );



          //-- Step 1: Detect the keypoints using SURF Detector
         int minHessian = 500;

         SurfFeatureDetector detector( minHessian,1,2,false,true );

         std::vector<KeyPoint> keypoints_1p;

         std::vector<KeyPoint> keypoints_2p;



         detector.detect( img_1, keypoints_1p );
         detector.detect( img_2, keypoints_2p);


          // computing descriptors
          SurfDescriptorExtractor extractor(minHessian,1,1,1,0);
          Mat descriptors1, descriptors2;

          extractor.compute(img_1, keypoints_1p, descriptors1);
          extractor.compute(img_2, keypoints_2p, descriptors2);

最佳答案

您最多可以获得 100 个。我可以想象没有 SIFT 描述符的图像(例如恒定图像)。有很多方法可以将关键点限制为 100。您的问题有简单的解决方案和困难的解决方案。您最多可以获得 100 个,从您获得的尽可能多的关键点中随机选择 100 个关键点。

没有关键点强度之类的东西。您将必须定义自己的力量概念。

原始的 Lowe 论文中有各种各样的参数可以过滤关键点(其中之一是它们与图像边缘不匹配,Lowe 论文的第 4.1 节)。还有 2 或 3 个其他参数。您需要以这样一种方式系统地调整参数,即您只能得到 100。如果您得到的值少于 100,您将过滤得更少;如果您得到的值大于 100,您将过滤得更多。

关于OPENCV SURF 特征描述符强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705303/

相关文章:

opencv - 使用 SIFT、SURF 或 ORB 对金属物体进行特征匹配

OpenCV 图像加载问题

opencv - OpenCV 中的伪彩色滤镜

c++ - 从 QT 资源加载 openCV Haar Cascade

python - 对 openCV 中的某些特定点应用过滤器

c++ - 调试断言失败表达式 : _pFirstBlock == pHead using OpenCV and C++ trying to call SurfFeatureDetector

python - 如何使用 SURF 功能(Python OpenCV)匹配和对齐两个图像?

opencv - 计算描述符和关键点时出现SURF_CUDA错误

python - OpenCV Python : Occasionally get segmentation fault when using FlannBasedMatcher

opencv - 使用opencv提取更少的关键点