2009-09-01 10 views
10

У меня есть видеоролик. Этот видеопоток содержит несколько индикаторов, мигающих с разной скоростью. Все огни одного цвета (все инфракрасные светодиоды). Как определить положение и частоту этих мигающих огней?OpenCV: обнаружение мигающих огней в видеопотоке

Отказ от ответственности: Я чрезвычайно новый для OpenCV. У меня есть копия Learning OpenCV, но я нахожу ее немного подавляющей. Если бы кто-нибудь мог объяснить решение в терминологии OpenCV, было бы весьма признательно. Я не ожидаю, что код будет написан для меня.

ответ

8

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

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

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

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

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

+0

Благодарим вас за советы! Это, безусловно, поможет! –

1

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

Надеюсь, эта проблема все еще несколько актуальна и что мое решение имеет смысл.

+1

Не то, чтобы ваш ответ был неправильным, но чтобы найти частоту мигания, я думаю, что преобразование Фурье может быть излишним. Простое подсчет количества кадров «выключено» и количество кадров «включено» должно дать достаточно хороший результат, я думаю, хотя это зависит от того, как «чистый» сигнал. –