2014-01-26 5 views
0

Мне интересно, какой параметр для детектора функции орбиты. Я использую его как средство выделения ключей и дескриптор. В качестве помощника я использую BFMatcher.OpenCV: Параметры Orb

В настоящее время я использую это так:

ORB orb(25, 1.0f, 2, 10, 0, 2, 0, 10); 

Потому что я смотрю на маленьких изображений и высокую скорость работы, я уменьшил количество функций до 25. Что, кажется, до сих пор отлично работает с моим приложением. И проблема начинается со второго параметра. Его значение по умолчанию равно 1.2. Я установил его на некоторое время назад, но обнаружил, что он намного быстрее с более высоким значением. Дело в том, я начинаю эту проблему:

OpenCV Error: Assertion failed ((type == CV8U && dtype == CV_32S) ||dtype == CV_32F) in cv_batchDistance, file..........stat.cpp, line 2480

Тогда до следующего является параметром для уровней пирамиды. По умолчанию 8. Я установил его на 2, что дало мне еще одно отличное улучшение производительности. Но если я установил его равным 1, он будет вызывать ту же ошибку, что и выше.

Поскольку я работаю с маленькими фотографиями, я попытался установить его на меньшее значение. Но это ничего не меняет. То же самое относится к последнему параметру (patchSize). Он утверждает, что эти параметры должны примерно совпадать.

Меня не интересуют остальные параметры.

Как я уже объяснил в других вопросах, я пытаюсь отслеживать объект в видео. Для этого я извлекаю для каждой ограничивающей рамки свои функции и стараюсь сопоставить ее с ограничивающей рамкой из следующей функции. Делая это, я пытаюсь построить отношения между кадрами. И пока это хорошо работает. Но мне нужно быть быстрее. Если есть более чем несколько ограничивающих прямоугольников, это занимает слишком много времени, так как я хочу иметь его в реальном времени @ 30FPS.

Если бы кто-нибудь мог помочь мне с этими параметрами, я был бы признателен.

+0

Документация говорит, scaleFactor> 1. 'слишком близко к 1 масштабному коэффициенту будет означать, что для охвата определенного диапазона шкалы вам потребуется больше уровней пирамиды, и поэтому скорость будет страдать. 'Поэтому ставьте его больше 1 и снова проверяйте. –

+0

Ну, значения, превышающие один, могут иногда давать мне ошибку выше. Может быть, вы знаете, что это за ошибка? – user2175762

+0

Я не сталкивался. Он говорит, что определенные изображения, используемые в строке, вызывающей ошибку, должны иметь тип uint8, int32 или float32. Может быть, вы можете добавить здесь минимальный фрагмент кода для воспроизведения ошибки. –

ответ

0

В соответствии с документацией значения параметров 4 и 8 показывают, насколько далеко от границы должны быть ключевые точки. Поскольку вы используете небольшие изображения, 10 пикселей могут быть хорошим выбором, но если вы хотите, чтобы более сосредоточенные ключевые точки занимали большее значение. Второй параметр должен быть больше 1, я не знаю, какое значение вы выбрали, но вы можете попробовать 2. Вам не нужен параметр номер 7, но вы можете установить его в 1 вместо 0, потому что 1 соответствует FAST_SCORE который быстрее вычисляется, чем HARRIS_SCORE. Если вы добавите свой код, кто-то может помочь вам с ошибкой.

Смежные вопросы