在OPENCV SURF中,我们有什么方法可以将关键点的数量限制为100? 获得的关键点是否会根据其强度进行排序? 如何获得描述符的强度? 我正在使用cpp程序在LINUX系统中处理OPENCV。
的问候, shiksha
我的代码是: 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);
答案 0 :(得分:1)
你最多可以获得100.我可以想象没有SIFT描述符的图像(例如一个常量图像)。有许多方法可以将关键点限制为100.有一些简单的解决方案和难以解决的问题。通过从所获得的关键点中随机选择100个关键点,您最多可以获得100个。
没有关键点的力量。你必须定义自己的力量概念。
原始Lowe论文中有各种各样的参数可以过滤关键点(其中一个是它们与图像边缘不匹配,Lowe's论文的第4.1节)。有2或3个其他参数。您需要系统地调整参数,使得您只能得到100.如果您得到的数量少于100,则过滤得越少,如果超过100,则过滤得越多。
答案 1 :(得分:1)
请参阅question here。并在那里看到我的答案如何限制关键点的数量。