Кто-нибудь может подсказать, пожалуйста, как сделать дескриптор фиксированного размера? потому что мы можем получить различное количество дескрипторов из разных изображений
For example
Если у меня есть изображение 450 * 550, и я применяю функцию серфинга на нем, тогда серфинг извлекает из него ключевые точки и чем он извлекает дескрипторы из него, например, Он извлекает 10 descriptors
ключевых точек из 450*550 image
чем он снова читает изображение и его размер 750 * 880, так что серфинг извлекает из него ключевые точки и дескрипторы, например, на этот раз он извлекает 20 descriptors
Теперь я хочу, чтобы независимо от размера изображения размер дескрипторов был одинаковым, как будто для обоих изображений должно быть 10 дескрипторов, поэтому в случае множества изображений следует выбрать минимальный размер дескриптора и извлечение только тех дескрипторов из всех изображений и оставление других, либо я определяю размер и игнорирую изображения, дескрипторы которых ниже или выше этого размера
extractor.compute( tmplate_img, keypoints, descriptors);
my_img=descriptors.reshape(1,1);
Я хочу сделать одинаковый размер дескрипторов для всех изображений, когда я запускаю его через цикл, и какой размер дескриптора лучше для получения лучшего результата, дескрипторы — MAT.
Спасибо
Вы можете использовать следующий код, чтобы сохранить верхние 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());
}
Других решений пока нет …