Несоответствие EMGU OpenCV только на определенных пикселях

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


person ez.schwartz    schedule 05.03.2012    source источник


Ответы (1)


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

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

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

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

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

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

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

person Bart    schedule 19.03.2012