У меня есть изображение, и я хочу найти ключевые точки с помощью детектора SIFT и сгруппировать их, затем я хочу сгенерировать локальные функции для каждой ключевой точки с помощью SIFT, не могли бы вы помочь мне, как я могу это сделать? Пожалуйста, дайте мне какие-либо предложения, я очень ценю вашу помощь
Создайте локальные функции для каждой ключевой точки с помощью SIFT
Ответы (2)
Я не уверен, что понимаю, что вы имеете в виду, но если вы извлекаете функции SIFT из изображения, вы автоматически получаете дескриптор функции, который используется для сравнения функций друг с другом. Конечно, вы также получаете информацию о местоположении, размере, направлении и значении гессиана.
Хотя вы можете сгруппировать эти функции по их положению на изображении, но в настоящее время я не знаю способа сравнить эти группы, поскольку они могут быть локально связаны, но могут иметь совершенно разные дескрипторы функций.
Также я бы предложил SURF. Это быстрее и не обременено патентами.
Взгляните на примеры из OpenCV, если вам нужны конкретные инструкции по извлечению и сравнению дескрипторов.
Если вы используете opencv, вот команды для этого, иначе, если вы используете Matlab, см. ссылку СООТВЕТСТВИЕ_использованию серфинга
ИСПОЛЬЗОВАНИЕ OPENCV::
// вы можете изменить параметры по вашему требованию
double hessianThreshold=200;
int octaves=3;
int octaveLayers=4;
bool upright=false;
vector<KeyPoint>keypoints;
//Детектор обнаруживает ключевые точки на изображении, здесь изображение RGBIMAGE типа Mat
SurfFeatureDetector detector( hessianThreshold, octaves, octaveLayers, upright );
detector.detect(RGB_IMAGE, keypoints);
//Экстрактор вычисляет локальные признаки вокруг ключевых точек
SurfDescriptorExtractor extractor;
Mat descriptors;
extractor.compute( last_ref, keypoints, descriptors);
// все локальные признаки ключевых точек хранятся в строках друг за другом в матрице дескрипторов...
Надеюсь, это полезно :)