EMGU OpenCV несоответствие только на определенных пикселях - PullRequest
0 голосов
/ 06 марта 2012

Я использую оболочку EMGU OpenCV для c #.У меня красиво создана карта диспаратности.Однако для моего конкретного приложения мне нужны только значения несоответствия в несколько пикселей, и они нужны мне в режиме реального времени.Теперь вычисление занимает около 100 мс, и я думаю, что если получить несоответствие для сотен значений пикселей, а не для тысяч вещей, это значительно ускорит процесс.Я не знаю много о том, что происходит "под капотом" кода решателя стерео, есть ли способ ускорить процесс, только рассчитав диспаратность для пикселей, которые мне нужны?

1 Ответ

0 голосов
/ 19 марта 2012

Прежде всего, вы не упоминаете, что вы действительно пытаетесь достичь, и, более того, какой алгоритм вы используете.Например, StereoGC действительно медленный (т.е. не в режиме реального времени), но обычно гораздо более точный) по сравнению как с StereoSGBM, так и с StereoBM.Последние два можно использовать в режиме реального времени, при условии соблюдения нескольких условий:

  • Размер входных изображений достаточно мал;
  • Вы не используете экстравагантный наборпараметры (например, большее значение для numberOfDisparities увеличит время вычислений).

Не ожидайте чудес, когда дело доходит до точности.

Помимо этого, естьэто проблема "всего несколько пикселей".Насколько я понимаю, алгоритмы, реализованные в OpenCV, обычно используют информацию из более чем 1 пикселя для определения значения диспаратности.Например, ему требуется соседство, чтобы определить, какой пиксель из изображения A соответствует какой пиксель в изображении B. В результате, как правило, невозможно просто отбросить каждый второй пиксель изображения (кстати, если вы уже знаете местоположенияв обоих изображениях вам не понадобятся стерео методы вообще).Поэтому, если вы не можете отбросить большую границу входных изображений, для которых вы знаете, что там никогда не найдутся интересующие вас пиксели, я бы сказал, что ответом на эту часть вашего вопроса будет «нет».

Если вам известно, что интересующие вас пиксели всегда будут находиться в пределах определенного прямоугольника входных изображений, вы можете указать области интереса (области интереса) входного изображения для этого прямоугольника.Предполагая, что в OpenCV здесь нет ошибки, это должно немного ускорить вычисления.

Немного прибегнув к поиску, вы сможете найти примеры поиска стерео соответствий в реальном времени с помощью EmguCV (или обычного OpenCV) с помощью графического процессора наYouTube.Возможно, это могло бы помочь вам.

Отказ от ответственности: возможно, это был бы более полный ответ, если ваш вопрос содержал больше деталей.

...