Я только начинаю с OpenCV, и это потрясающий фреймворк. Для моего текущего проекта мне нужно определить состояние устройства, посмотрев на его светодиоды состояния. На данный момент я немного ошеломлен всеми этими модулями и возможностями, и, конечно, всегда есть несколько способов сделать что-то. Я надеюсь, что кто-то с большим опытом может показать мне стратегию решения этой проблемы.
Но давайте начнем, это то, о чем я говорю. Типичный кадр, взятый из видеопотока:
Как видите, камера обычно сидит в темноте и смотрит на эту панель. Я отметил важную часть зеленым прямоугольником. Из того, что я понимаю до сих пор, я думаю, что это может быть первым подходом. Пожалуйста, исправьте меня, если есть неправильное представление:
В конце концов, у меня не одно устройство, а несколько тысяч, и есть 4 или 5 различных типов устройств. Каждый тип устройства имеет типичное фиксированное расположение светодиодов, как на рисунке выше. Так сказать, фиксированная подпись, но каждый светодиод может находиться в разных состояниях.
Поскольку положение и угол камеры могут варьироваться, я думаю, что было бы лучше не просто определять пиксели, которые относятся к каждому светодиоду. Я думаю об этой цепочке:
- Определите тип устройства на основе расположения светодиодов на панели
- Обрежьте и открутите изображение в интересующей области
- Найдите каждый светодиод как отдельное свойство (каждый тип устройства имеет фиксированный набор свойств (светодиоды))
- Переберите каждое свойство и определите его состояние (например, выкл. / Темно, красный, зеленый, желтый, белый )
Итак, другими словами, я считаю необходимым классифицировать объект, а затем проанализировать его свойства (особенности?) И сопоставить их с точками данных с дискретными состояниями. Распознавание или классификация должны работать с перекошенной перспективой, поэтому, вероятно, будет необходимо преобразовать изображение в нормализованную форму и, возможно, одновременно обрезать его, чтобы вы выбросили все, что находится за пределами зеленого прямоугольника.
Некоторые светодиоды могут быть выключены, так что камера их не увидит. Как бы я позаботился об этом, когда дело доходит до распознавания объектов?
Так же, как sidenote: изображение выше было взято из видео, которое я снял на своем смартфоне, что, конечно, не идеально, как автомат c включается экспозиция, и светодиоды выглядят яркими и дают ореолы. В конце я хочу использовать малиновую камеру (v2) с фиксированной экспозицией, чтобы избежать этого. Я надеюсь, что этот пример все еще помогает донести идею.
Моя общая идея в порядке или есть лучший подход? Какие методы и модули подходят для каждого из этапов? Заранее благодарим за ваши идеи и комментарии.
Обновление : Вот нетронутая версия примера изображения выше