Детекторы ORB и FAST

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

На рисунке ниже показаны результаты разделения изображения на 10 строк и 10 столбцов и максимальное количество ключевых точек 1000. Слева — результат для FAST (894 ключевых точки), а справа — результат для детектора сфер (142 ключевых точки).

Может кто-нибудь объяснить мне, почему я получаю разные результаты? Потому что я думал, что ORB основан на функциях FAST. И есть ли способ получить то же количество ключевых точек, что и FAST, при использовании ORB?

Обнаружение FAST и ORB


person user6099747    schedule 05.07.2018    source источник
comment
ORB будет фильтровать ключевые точки, возвращенные FAST, чтобы возвращались лучшие ключевые точки. Вы можете попробовать изменить fastThreshold, чтобы он соответствовал детектору FAST, и, возможно, scoreType на ORB::FAST_SCORE. Не могу сказать конкретно, на что установить fastThreshold, вам нужно прочитать исходный код.   -  person EdChum    schedule 05.07.2018
comment
Проблема в том, как показано на рисунке: хотя я установил один и тот же fastThreshold для обоих детекторов, я получил намного меньше ключевых точек с детектором ORB.   -  person user6099747    schedule 05.07.2018
comment
Он по-прежнему будет выполнять дополнительную фильтрацию, цель шара отличается от быстрого. Я не понимаю, почему вы хотите, чтобы шар вел себя так же.   -  person EdChum    schedule 05.07.2018
comment
Моя цель — заставить orb обнаруживать по всему изображению, поэтому я делю его на ячейки и пытаюсь обнаружить в каждой ячейке. Проблема в том, что я не получаю достаточно ключевых точек в каждой ячейке.   -  person user6099747    schedule 05.07.2018
comment
Я думаю, вам нужно переосмыслить свой подход. Орб будет обнаруживать особенности для данной апертуры, поэтому он находит наиболее отличительные особенности, которые не зависят от масштаба и вращения, если вы просто хотите найти функции, тогда вы можете просто использовать быстро как есть, я не понимаю о том, что вы действительно хотите посоветовать, используя этот подход. Существует также официальный форум opencv, где вы можете опубликовать свою проблему answers.opencv.org/questions, где вы может повезет больше   -  person EdChum    schedule 05.07.2018
comment
возможно, вы могли бы адаптировать исходный код, чтобы принудительно извлекать N лучших функций в изображении/частичном изображении, даже если они плохие.   -  person Micka    schedule 05.07.2018


Ответы (1)


Несмотря на то, что ORB использует детектор ключевых точек FAST, это не то же самое, что мы должны получить одинаковое количество ключевых точек при использовании FAST и ORB.

ORB просто построен на детекторе ключевых точек FAST, а детектор FAST модифицирован в ORB, и он не совсем такой же (оригинальный). В официальном документе ORB говорится о дополнительных вкладах в детектор FAST в ORB, и, пожалуйста, ознакомьтесь с ним.

"FAST does not produce a measure of cornerness, and we have found that it has large 
responses along edges. We employ a Harris corner measure [11] to order the FAST keypoints. 
For a target number N of keypoints, we first set the threshold low enough to get 
more than N keypoints, then order them according to the Harris measure,
and pick the top N points. "

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

person John    schedule 21.08.2018