Я использую код из сайт OpenCV для обнаружения объектов. Я новичок в OpenCV и в обработке изображений и пытаюсь понять работу SURF. У меня есть несколько сомнений.
1. Я использовал цветные изображения для обнаружения, и результаты были хорошими до сих пор. Есть люди, которые рекомендуют использовать изображения в градациях серого, увеличит ли это производительность алгоритма?
2. В коде, какое значение имеет фильтрация, если только совпадения имеют расстояние менее 3 * mindist?
for( int i = 0; i < descriptors_object.rows; i++ )
{ if( matches[i].distance < 3*min_dist )
{ good_matches.push_back( matches[i]); }
}
3. Несмотря на то, что обнаружение является устойчивым на изображениях с высокой освещенностью (я использовал 900 в качестве значения гессиана), одно и то же изображение в условиях низкой освещенности не обнаруживается с одинаковым значением гессиана, есть ли способ сделать оба с одним и тем же значением гессиана и одно и то же эталонное изображение для обоих условий? Будет ли полезна функция cv :: equalizeHist ()? Если это так, может кто-нибудь предложить мне способ интеграции с кодом обнаружения SURF?
Структура 4.DMatch, которая возвращает совпадения, имеет параметр под названием расстояние, которое возвращает расстояние между дескрипторами. Что это значит? Есть ли единица для возвращенного расстояния?
5. Я также хотел бы знать, существуют ли лучшие дескрипторы, чем SURF, с точки зрения сложности времени, масштаба и инвариантности вращения для обнаружения объекта.
Заранее спасибо за ваше время и ответы.
SURF работает с изображениями в оттенках серого.
Существует много ложных случайных совпадений (так как если у вас есть 100 объектов в img1, у вас всегда будет 100 совпадений), и фильтровать их — хорошая идея. Но лучше проверить относительное расстояние — как это делается в Использовать евклидово расстояние в SURF)
Да, это можно использовать. Вы просто используете измененные изображения вместо оригинальных.
Вы обнаруживаете небольшое количество объектов из-за низкой интенсивности пикселей и низкого контраста в темных областях, что снижает отклик детектора. При применении к темному изображению выравнивание гистограммы увеличивает контраст, что увеличивает количество локальных максимумов ниже порогового значения.
cv :: Mat img1, img1histEq;
резюме :: equalizeHist (img1, img1histEq);
SURF можно рассматривать как 128-мерный вектор. Расстояние — это расстояние между двумя такими векторами в некотором пространстве, обычно евклидово — сумма квадратов разностей между соответствующими векторными элементами. Другие показатели, например L1 также может быть использован, но евклидово больше всего используется для SURF.
Других решений пока нет …