Как стать автором
Обновить

USB3Vision и GenICam. Взгляд изнутри. I

Время на прочтение4 мин
Количество просмотров5.2K

Введение


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

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

До 2006 года не существовало стандарта создания таких систем. Это привело к тому, что на рынке обосновалось большое кол-во устройств от разных производителей, которые были разработаны по внутренним закрытым стандартам компаний. Потребителям приходилось придерживаться одного производителя камер, так как переход к другому производителю требовал перехода и на другое программное обеспечение для новых камер. Все это выливалось в необходимость заново подготавливать производство для работы. Требовалась универсальность как самих камер, так и программного обеспечения для них. В 2003 году Европейская Ассоциация Машинного Зрения (EMVA) и ведущие производители в этой области объединились для создания общего, исчерпывающего стандарта управления камерами машинного зрения. Спустя некоторое время появился интерфейс GenICam.

Интерфейс расшифровывается как Generic Interface Camera, но, логичнее, называть его протоколом или стандартом, т.к. он накладывается поверх интерфейсов передачи данных. GenICam задает единый для всех камер API, при помощи которого происходит управление устройством. Также, он определяет структуру прошивки управляющего контроллера камеры, что немаловажно. Благодаря всему этому, появилась возможность в использовании разных камер машинного зрения с разным управляющим ПО. Причем универсальность не ограничивается заменой камеры на другую с аналогичным физическим интерфейсом, например USB3.
GenICam задал направление развития камер машинного зрения, которому отрасль следует и, вероятнее всего, будет следовать еще долго.

Цель GenICam


Цель стандарта заключается в предоставлении основного интерфейса программирования для различных камер. На рынке представлено большое количество камер машинного зрения которые основаны на этом стандарте. У них могут быть разные физические интерфейсы передачи данных, но так как камеры поддерживают GenICam, то они все являются взаимозаменяемыми. То же самое можно сказать и про программное обеспечение для камер машинного зрения, если ПО поддерживает GenICam, то его, при необходимости, можно заменить на решение от другого разработчика.



Рис. 1 — принцип GenICam

Составляющие модули


Стандарт поделен на взаимосвязанные модули. Далее, будет кратко дано пояснение к каждому модулю.

GenApi


Расшифровывается как Generic API. Необходим для конфигурирования камеры. Современные камеры являются не просто устройствами, которые выдают некую картинку. Напротив, они могут выполнять широкий спектр задач, например, банальное усиление сигнала от светочувствительного датчика. Усиление сигнала является возможностью и ей нужно управлять. Помимо усиления используются и другие опции если это позволяет электроника. GenApi необходим для описания функционала камеры и ее параметров, например, ширины и высоты кадра в пикселях.

GenTL


Generic Transfer Layer. Необходим для определения устройства системой и коммуникации с одним устройством или с несколькими. Помимо этого, предоставляет средства для передачи потоковых данных от камеры к хосту. Модуль в большей степени относится к управляющему ПО хоста, т.к. камера, в подавляющем большинстве случаев, является ведомым устройством. Обеспечив рабочую связку из GenApi и GenTL можно гарантированно получить программный проект начального уровня для работы с камерой.

GenCP


Передача управляющих данных через GenTL осуществляется в соответствии с протоколом GenCP. Generic Control Protocol определяет вид посылок от хоста к устройству и формат ответного сообщения от устройства к хосту. Данный протокол ориентирован на пакетную передачу данных и работает по принципу — отправка команды, ожидание подтверждения с отслеживанием времени ожидания.

SFNC


Standard Features Naming Convention. У камер, как было сказано выше, может быть много возможностей. В пример приводилось усиление сигнала с датчика изображения. Разные производители могли бы называть эту функцию по разному, но тогда бы, из-за различий в названии, камеры стали бы не взаимозаменяемы. Поэтому была разработана конвенция именования — SFNC. Она определяет основной список возможностей, их имена и принцип действия.

CLProtocol


Предоставляет API для взаимодействия GenApi и интерфейса CameraLink. Подробнее разбирать этот модуль мы не будем, т.к. в дальнейших частях речь пойдет об интерфейсе USB3.

Заключение


Стандарт довольно объемный в части документации, но вполне понятный и логичный. Во введении была вскользь затронута история и причины его создания, а описание состава представляет из себя очень краткое объяснение значения модулей GenICam. Этого достаточно, чтобы понять основной смысл и назначение стандарта, которое заключается в объединении и описании основных принципов управления камерами с последующим созданием, на их базе, взаимозаменяемых систем машинного зрения.

Статью следует разбить на несколько частей для лучшего восприятия материала. Следующая часть будет посвящена GenApi и конфигурации камеры.
Теги:
Хабы:
+4
Комментарии17

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн