-3

谁能告诉我如何使描述符的大小固定?因为我们可能会从不同的图像中获得不同数量的描述符 For example 如果我有 450*550 的图像并且我在其上应用 surf 特征,则 surf 从中提取关键点,而不是从中提取描述符,例如,它10 descriptors450*550 image,然后它再次读取图像及其大小为 750*880 ,因此 surf 从中提取关键点而不是描述符,例如这次它提取20 descriptors从这张图片中,现在我想做的是,我希望无论图片的大小如何,描述符的大小都应该相同,就像它应该从两个图像中取 10 个描述符一样,所以如果有很多图像,它应该选择描述符的最小大小并仅从所有图像中提取该描述符并保留其他描述符,或者我定义大小并忽略描述符低于或高于该大小的图像

extractor.compute( tmplate_img, keypoints, descriptors);
my_img=descriptors.reshape(1,1);

当我通过循环运行它时,我想为所有图像制作相同大小的描述符,并且描述符的哪个大小更适合获得更好的结果,描述符是 MAT。

谢谢

4

1 回答 1

1

您可以使用以下代码保留响应最大的前 M 个关键点:

bool compareFunction(KeyPoint p1, KeyPoint p2) {return p1.response>p2.response;}
//The function retains the stongest M keypoints in kp
void RetainBestKeypoints(vector<KeyPoint>  &kp, int M)
{
    vector<KeyPoint>  sortedkp;

    sort(kp.begin(),kp.end(),compareFunction);
    if (kp.size()>M)
            kp.erase(kp.begin()+M,kp.end());
}
于 2013-08-26T12:25:15.843 回答