Маркировка OpenCv Blob/Contour

Привет, я работаю над этим какое-то время и пока не нашел хорошего решения.

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

Предполагая, что программа остается простой, может быть только 2 человека.

Эти объекты и движутся таким образом, что они могут перекрываться, поворачивать и удаляться с определенным интервалом.

Как я могу правильно обозначить этих людей x 2.

cvFindContour может возвращать границу случайным образом. для Frame1,Frame2,Frame3....FrameN

Сначала я могу сравнить прямоугольный граничный центроид, чтобы правильно обозначить человека. Как только человек перекроется и отойдет, этот подход потерпит неудачу.

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

Я рассматривал возможность использования статистики изображений, например:

CountNonZero(), SumPixels() Mean() Mean_StdDev () MinMaxLoc () Norm ()

чтобы однозначно различать два объекта. Я считаю, что это был бы лучший подход.


person user43076    schedule 20.12.2008    source источник


Ответы (3)


Это сложная проблема, и любое решение не будет идеальным. Компьютерное зрение в шутку называют дисциплиной, «завершенной искусственным интеллектом»: если вы решаете компьютерное зрение и решаете весь искусственный интеллект.

Вычитание фона может быть хорошим способом обнаружения объектов. Если вам нужно улучшить результаты вычитания фона, вы можете рассмотреть возможность использования MRF. Предположительно, вы можете сказать, когда есть один объект и когда два больших двоичных объекта слились, исходя из размера большого двоичного объекта. Если траектории не меняются быстро во время объединения больших двоичных объектов, вы можете сделать отслеживание Калмана и использовать некоторые эвристики для устранения неоднозначности капель впоследствии.

Несмотря на то, что цвета этих двух объектов похожи, вы можете попытаться использовать средство отслеживания смен. Возможно, вам потребуется выполнить некоторую фильтрацию частиц, чтобы отслеживать многочисленные гипотезы о том, кто кто.

Есть также несколько более сложных методов, называемых многоуровневое отслеживание. Есть более свежая работа Джойика и Фрея. , автор Винн, автор Чжоу и Тао и другими. Большинство этих методов исходят из очень сильных предположений и/или требуют большой работы для правильной реализации.

Если вас интересует эта тема в целом, я настоятельно рекомендую пройти курс компьютерного зрения и/или прочитать учебник, такой как Понсе и Форсайт.

person Mr Fooz    schedule 20.12.2008
comment
@2vision2: Спасибо, что указали на неработающие ссылки. Я обновил их. - person Mr Fooz; 04.07.2013

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

  • Если обе капли в какой-то момент пересекутся, неизвестно, каков будет результат.
  • Если обе капли движутся слишком быстро, это также может привести к нежелательным результатам.
person Stefan Schmidt    schedule 20.12.2008

Звучит сложно, особенно если в видео много шума.

Возможно, определение различных случаев, в которых два человека будут взаимодействовать. Некоторые примеры:

  1. Два человека встречаются, затем либо меняют курс, либо продолжают двигаться своим курсом.
  2. Два человека встречаются, затем только один человек меняет курс или продолжает двигаться своим курсом.
  3. Два человека встречаются, затем один человек остается, а другой движется в направлении, «нормальном» к обзору камеры, то есть в сторону или к камере.

Учебники по компьютерному зрению могут помочь в определении других случаев.

Подумайте об измерении всех перечисленных вами функций для каждого кадра видео, а затем нарисуйте их результаты. Исходя из этого, определите, есть ли способ сопоставить что-то вроде стандартного отклонения цвета пикселя в ограничивающей рамке, к которой относится человек после того, как его пути пересекутся.

person Community    schedule 20.12.2008