OpenCV: обнаружение мигающих огней в видеопотоке

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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