Зависит ли ORB от разрешения изображения? - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь использовать OpenCV для обнаружения и извлечения функций ORB из изображений.

Однако изображения, которые я получаю, не нормализованы (другой размер, другое разрешение и т. Д.).

Мне было интересно, нужно ли нормализовать свои изображения перед извлечением функций ORB, чтобы иметь возможность сопоставлять их между изображениями?

Я знаю, что обнаружение функции зависит от масштаба, но я не уверен вчто это означает для разрешения изображений (например, 2 изображения одинакового размера, с одним близким объектом и далеко друг от друга, должны привести к совпадению, даже если они имеют разный масштаб на изображениях, но что, если изображения неу меня такой же размер?).

Нужно ли адаптировать patchSize из ORB в зависимости от размера изображения (например, если у меня изображение 800px, а для patchSize 20px, нужно ли мне взятьpatchSize 10px для изображения 400px?).

Спасибо.

Обновление: Я тестировал различные алгоритмы (ORB, SURF и SIFT) с высоким и низким разрешениемизображения, чтобы увидеть, как они себя ведут.На этом изображении объекты имеют одинаковый размер, но разрешение изображения различно:

enter image description here

Мы можем видеть, что SIFT довольно устойчив, хотя у него немногофункции.SURF также довольно стабилен с точки зрения ключевых точек и масштаба функций.Таким образом, я предполагаю, что функция соответствия между изображениями с низким и высоким разрешением с SIFT и SURF будет работать, но ORB имеет гораздо большую функцию с низким разрешением, поэтому дескрипторы не будут совпадать с таковыми на изображении с высоким разрешением.

(При извлечении объектов с высоким и низким разрешением использовались одни и те же параметры).

Поэтому я предполагаю, что было бы лучше выполнить SIFT или SURF, если мы хотим выполнить сопоставление между изображениями с разными разрешениями.

1 Ответ

0 голосов
/ 07 октября 2018

Согласно документации OpenCV , ORB также использует пирамиду для создания многомасштабных функций.Хотя детали на этой странице неясны.
Если мы посмотрим на саму бумагу ORB , в разделе 6.1 упоминается, что используются изображения с пятью различными масштабами.Но все же мы не уверены, нужно ли вам вручную вычислять дескрипторы для изображений с различным масштабом или это уже реализовано в OpenCV ORB.
Наконец, из исходного кода (строка 1063, пока я пишу этот ответ) мы видим, что изображения с различным разрешением вычисляются для извлечения ключевой точки / дескриптора.Если вы отслеживаете переменные, вы видите, что для класса ORB есть масштабный коэффициент, к которому вы можете обратиться с помощью метода getScaleFactor.

Короче говоря, ORB сам пытается выполнить сопоставление в разных масштабах.

...