В этой статье речь пойдет о внутренностях видеокамеры (арт. 152522), которая входит в состав набора FISCHERTECHNIK 524328 «Набор первооткрывателя». Видеокамера используется в игрушечных роботизированных комплексах для построения действующих систем компьютерного зрения.
Кстати, про внутренности программируемого контроллера TXT из этого набора у меня уже была публикация. Теперь пришло время разобраться с устройством электронно-оптического прибора, без которого современная робототехника практически не работает.
Компьютерное зрение — это, вообще, что?
Компьютерное зрение широко используется в промышленности, медицине и в бытовых приборах для решения задач распознавания объектов, навигации, измерения геометрических размеров, определения цвета и еще многих других полезных задач.
Например, в промышленности системы компьютерного зрения применяются для управления манипуляционными роботами на сборочных участках и для контроля качества производимой продукции. В смартфонах и фотокамерах с помощью алгоритмов компьютерного зрения осуществляется автоматическая фокусировка на лицо человека, попавшего в кадр.
В приведенных выше примерах компьютерное зрение выполняет функцию интеллектуального датчика, который позволяют системе управления принимать решения на основе информации, содержащейся в изображении. Таким образом, можно сказать, что главная задача системы компьютерного зрения заключается в извлечении информации из изображения наблюдаемой сцены.
Обычно систему компьютерного зрения можно условно разделить на три составные части:
- Устройство для захвата изображения
- Вычислительное устройство (компьютер)
- Программное обеспечение
Устройство для захвата изображения преобразует оптическое изображение наблюдаемой сцены в массив цифровых значений, который передается через какой-либо интерфейс в компьютер.
Компьютер принимает данные от устройства захвата изображения и затем обрабатывает эти данные с помощью программ, предварительно загруженных в его память.
Компьютерное программное обеспечение содержит алгоритмы для анализа изображений, поступающих от устройства захвата. Состав алгоритмов зависит от задачи, решаемой в конкретном случае. После обработки изображения программное обеспечение выдает результаты с интересующей информацией. Такой информацией может быть, например, количество объектов, их координаты и размеры, цвет и т.п.
Для экспериментов с компьютерным зрением я рекомендую использовать конструктор FISCHERTECHNIK ROBOTICS TXT «Набор первооткрывателя», в котором имеются все необходимые компоненты, включая видеокамеру, программируемый контроллер и инструментальное ПО с библиотекой алгоритмов компьютерного зрения.
Конструкция камеры
Видеокамера FISCHERTECHNIK 152522 выполнена в черном пластиковом корпусе, на поверхности которого имеются стандартные монтажные элементы FISCHERTECHNIK. С их помощью камеру можно присоединять к конструкциям. Из корпуса камеры выходит гибкий кабель с разъемом USB-A. Длина кабеля 80 см.
01. Видеокамера с кабелем USB.
02. Вид на внутренности камеры без лицевой панели. На фотографии видны: объектив и печатная плата с управляющей электроникой.
Светочувствительная матрица
Для преобразования изображения в цифровой вид в видеокамере 152522 используется полупроводниковая светочувствительная матрица, выполненная по технологии ПЗС КМОП. Матрица преобразует спроецированное на её поверхность изображение в поток цифровых данных, который передается во встроенный микроконтроллер для дальнейшей обработки.
03. Здесь я полностью выкрутил объектив и теперь в центральной части печатной платы хорошо видна светочувствительная матрица.
К сожалению, на самой матрице никаких обозначений не видно. Однако, судя по надписи «+NT99140» на печатной плате, можно предположить, что в камере 152522 используется КМОП-матрица NOVATEK NT99140. В этой матрице каждый пиксель снабжён усилителем считывания, а выборка сигнала с конкретного пикселя происходит, как в микросхемах памяти, произвольно. Разрешение матрицы составляет 1280 * 720 пикселей.
Объектив
Объектив видеокамеры предназначен для формирования четкого изображения снимаемого объекта на поверхности светочувствительной матрицы. В видеокамере 152522 объектив состоит из оправы, выполненной из двух пластиковый колец, вставленных одно в другое. Между собой кольца соединяются с помощью резьбового соединения M12х0.5. Внутри вращающегося кольца установлены линзы и апертурные диафрагмы. Поворачивая внешне кольцо объектива можно изменять расстояние между задней линзой и светочувствительной матрицей и таким образом осуществлять фокусировку.
04. Два вида на объектив видеокамеры. В задней части объектива хорошо виден фильтр, блокирующий инфракрасную часть спектра.
05. Иллюстрация с разрезом объектива. Хорошо видны оптические элементы: линзы и диафрагмы.
06. Компоненты, из которых состоит объектив камеры.
07. Здесь хорошо видно группу оптических элементов, которую принято называть «хроматический дуплет». Группа состоит из двух склеенных линз, одна из которых положительная, а другая — отрицательная. Хроматический дуплет используется для исправления хроматической и сферической аберраций.
Микроконтроллер
08. Вид на обратную сторону печатной платы. В желтой рамке микроконтроллер, обеспечивающий согласование интерфейсов для передачи данных. Микроконтроллер принимает сырые данные от матрицы, обрабатывает их и затем передает результат через последовательный интерфейс USB на компьютер. В зависимости от выбранного режима микроконтроллер осуществляет сжатие изображения или оставляет его в исходном формате. Судя по обозначениям на корпусе чипа, в видеокамере используется микроконтроллер SONIX SN9C259BFG-002 USB image controller.
В ОС Linux подробную информацию об устройстве на шине USB можно получить с помощью команд lsusb и dmesg.
Вывод команды lsusb:
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 24, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 24, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 3: Dev 24, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 3: Dev 24, If 3, Class=Audio, Driver=snd-usb-audio, 480M
Вывод команды dmesg:
[1552817.385166] usb 1-1.3: new high-speed USB device number 25 using xhci_hcd
[1552817.632077] usb 1-1.3: New USB device found, idVendor=1b71, idProduct=0056, bcdDevice= 0.00
[1552817.632099] usb 1-1.3: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[1552817.632118] usb 1-1.3: Product: USB 2.0 Camera
[1552817.632135] usb 1-1.3: Manufacturer: Sonix Technology Co., Ltd.
[1552817.644232] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (1b71:0056)
[1552817.664470] input: USB 2.0 Camera: HD 720P Webcam as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input1
[1552817.674486] usb 1-1.3: 3:1: cannot get freq at ep 0x84
09. Вид на печатную плату со снятым креплением объектива. Цифрами на фото обозначены: 1 – микросхема 25L0512 (флэш память 64K x 8 с последовательным интерфейсом SPI); 2 – кварцевый резонатор; 3 — светочувствительная матрица; 4 – микрофон.
Микрофон
На предыдущей фотографии видно, что на плате имеется микрофон. Из этого следует, что видеокамеру можно использовать для захвата и оцифровки звука. Это может быть удобно при конструировании дистанционно управляемых роботов.
Характеристики видеокамеры 152522
- Матрица: CMOS 1,0 Мпикс
- Разрешение: 1280 * 720 пикселей
- Формат видеопотока: YUV (без сжатия), MJPG (со сжатием)
- Частота кадров максимальная: 60 Гц при разрешении 320х240 пикселей
- Способ фокусировки: ручной
- Встроенный микрофон: имеется
- Интерфейс: USB 2.0 (480 Мбит/с)
- Версия UVC: 1.0)
- USB VID:PID: 1b71:0056
- Длина соединительного кабеля: 80 см
- Разъем кабеля: USB-A
Пример изображения
10. Изображение тестовой картинки EIA1956, полученное с помощью приложения «Камера» в ОС Windows 10. Здесь используется максимальное доступное разрешение 1280х720 пикселей. Кликнув на картинку можно увидеть изображение в оригинальном разрешении.
Программное обеспечение
На программном уровне доступ к камере осуществляется через драйверы USB video device class (UVC 1.1), встроенные в большинство операционных систем, в том числе Linux и Windows. В частности в программируемом контроллере ROBOTICS TXT, который работает под управлением ОС Linux, для получения изображений от камеры используется программный интерфейс v4l2 (video for linux).
Программирование с использованием прямого доступа к видеокамере — достаточно сложная задача для новичков. Поэтому тем, кто только начинает свой путь в программирование и робототехнику, я рекомендую использовать инструментальное программное обеспечение ROBO Pro из конструктора TXT «Набор первооткрывателя», в котором имеется библиотека функций компьютерного зрения, которые можно использовать для решения прикладных задач. С помощью ROBO Pro можно строить серьезные системы компьютерного зрения с использованием обычных компьютеров или на базе программируемого контроллера ROBOTICS TXT.
Более подробно о программной части системы компьютерного зрения на примере ROBO Pro я расскажу в одной из следующих публикаций.
Список внешних источников
- Внутренности контроллера ROBOTICS TXT. Статья в блоге ПАКПАК.
- Exploring Converging Lenses
- OpticalRayTracer — Java-based virtual optical bench
- EIA 1956 standard test pattern
- Хорн Б. К. П. Зрение роботов: Пер. с англ. — М.: Мир, 1989. — 487 с., ил.
- Конструктор Fischertechnik Optics (520399)