Выбор доступного инструментария для решения задач цифровой обработки потока видеоданных на персональном компьютере
Савицкий Е.Н. (
15.10.2002)Введение
В наших исследованиях мы все чаще прибегаем к помощи огромных вычислительных мощностей персонального компьютера (ПК), однако для решения реальных задач нам недостаточно одного только моделирования – создаваемые нами модели должны быть экспериментально проверены в тех условиях, для которых они создаются. На смену оптико-электронным системам пришли цифровые видеокамеры, которые теперь применяются практически везде - от бытовой фото и видеоаппаратуры до гиганских космических телескопов. Все эти достижения посредством дешевых ПК открывают перед нами огромное число новых методов и способов обработки результатов, структурной их организации, а также способов распространения и обмена результатами. В общем, такого класса системы будем называть цифровыми оптико-электронными системами (ЦОЭС) и сделаем попытку описать их некоторым набором функциональных характеристик: цифровая камера, регистрирующая излучение объекта, блок сопряжения цифровой камеры и персонального компьютера, драйвер, передающий изображение с блока сопряжения в программное обеспечение (ПО) и собственно ПО, реализующее тот или иной способ обработки сигнала и пользовательский интерфейс взаимодействия с ЦОЭС. Переданное в ПК видеоизображение, с помощью драйвера передается в программное ядро ЦОЭС, которое координирует ее работу, объединяет модули расширения и предоставляет им кадры видеоизображения с цифровой камеры, позволяя сохранять их в базе данных и передавать через Internet. Модуль расширения реализует все необходимые алгоритмы обработки видеоизображения для конкретной задачи. Пользователь посредством графической оболочки управляет работой как локальными, так и удаленными модулями ЦОЭС. Подобную систему значительно проще модернизировать, совершенствуя соответствующее программное обеспечение, без замены дорогостоящего оборудования. Более того, используя Интернет-технологии, становится гараздо проще проводить необходимую диагностику оборудования, что существенно упрощает и удешевляет его сопровождение.
Выбор цифровой видеокамеры
Видеокамера является первым и основным звеном в цепочке преобразовтелей поля яркости пространства предметов в цифровое изображение. Таким образом, для каждой задачи необходимо детально выбирать видеокамеру по большому числу критериев: динамическому диапазону, разрешающей способности, спектральным характеристикам и др. В настоящее время большое число фирм производителей электронных компонентов предлагают недорогие решения в области цифровой обработки изображений и систем технического зрения. На рынке представлены как законченные варианты цифровых видеокамер, так и комплектующие для их реализации. ПЗС-матрицы как правило, строятся по общей схеме: матрица фотоэлементов, система сканирования и аналого-цифровой преобразователь (АЦП) телевизионного сигнала в цифровой RGB/YUV. Первые два компонента в большинстве случаев интегрированы в одном корпусе и позволяют получать телевизионный сигнал, например, в системе PAL. АЦП, как правило, поставляется отдельно. К более высокому уровню интеграции производители не стремятся по следующей причине – требуемое качество изображения сильно зависит от конкретной прикладной задачи, а его повышение влечет за собой применение АЦП с большей разрядностью и соответственно более высокой стоимостью. Одними из лучших считаются ПЗС-матрицы фирм Sony, Philips, Sharp и Texas Instruments. Этот сектор рынка развивается столь стремительно, что самые перспективные разработки по повышению плотности фоточувтсвительных элементов на единице поверхности ПЗС-матрицы дешевеют с каждым днем. Создается ситуация, при которой видеокамера позволяет оцифровывать изображение предметной области с очень высоким качеством и скоростью, но передать весь этот поток видеоданных в персональный компьютер представляется некоторой проблемой. Рассмотрим самые популярные интерфейсы для передачи данных.
Выбор интерфейса передачи данных
Критериями выбора интерфейса для канала передачи видеоданных в ПК служат: высокое качество и скорость передачи видеоизображения, максимальная длина соединительного кабеля, наличие высокоразвитого протокола обмена данными и доступность элементной базы для реализации интерфейса. Часто, для получения максимальной информации об объекте невозможно применять сжатие видеоизображения. В таблице 1 приведены сравнительные характеристики применимости наиболее распространенных интерфейсов, при передаче несжатого потока видеоданных.
Интерфейс |
Скорость |
Видеоизображение |
Применение |
LPT (ECP/EPP) |
24 Мбит/с |
320x2 00, 8 бит, 15 кадр/с640x480, 8 бит, 2 кадр/с |
Передача управляющих сигналов или статического изображения. |
BlueTooth |
1 Мбит/с |
--- |
Передача управляющих сигналов. |
RS-485 |
10 Мбит/с |
--- |
Передача управляющих сигналов. |
Ethernet |
100 Мбит/с 1000 Мбит/с |
640x480, 8 бит, 30 кадр/с 800x600, 8 бит, 15 кадр/с |
Передача качественного изображения для многих потребителей. |
IEEE 1394 (FireWire) |
400 Мбит/с |
Все |
Передача видеоданных в ПК. |
USB 1.0 |
12 Мбит/с |
320x200, 8 бит, 15 кадр/с 640x480, 16 бит, 2 кадр/с 800x600, 8 бит, 2 кадр/с |
Передача среднего качества видеоизображения в ПК. |
USB 2.0 |
480 Мбит/с |
все |
Передача видеоданных в ПК. |
Табл. 1. Сравнительные характеристики популярных интерфейсов связи с внешними устройствами.
Всем требованиям полностью удовлетворяют интерфейсы
USB 2.0 и IEEE1394, которые наконец-то объединили современные цифровые устройства в способе обмена данными между собой. Из-за использования USB в качестве стандарта для ПК и сравнительной дешевизны элементной базы он получил преимущественное распространение по сравнению с IEEE1394 (FireWire), который, однако, в некоторых деталях превосходит USB. Стандартными скоростями для IEEE1394 являются: 100 Мб/с, 200 Мб/с, 400 Мб/с и 800 Мб/с, в то время как USB 1.0 (самый распространенный на сегодняшний день) поддерживает только 1.5 Мб/с и 12 Мб/с. Но для использования связи по этому интерфейсу требуется дополнительная плата расширения ПК. Оба интерфейса с одной стороны являются конкурентами, а с другой – среди разработчиков цифровой техники не наблюдается явного предпочтения одного другому. Именно из-за повсеместного использования USB в ПК и Web-камерах остановимся на нем. С помощью обоих интерфейсов можно строить целые сети из цифровых устройств. Известно, что длина интерфейсных кабелей для них ограничена 5 - 6 метрами. Однако сторонними фирмами предлагаются различного рода удлинители: USB-повторители, оптические удлинители фирмы Gefen. USB обеспечивает горячее подключение (без необходимости выключения ПК) цифровых устройств и удовлетворяет спецификации “Plug&Play”, по которой операционная система автоматически определяет какое устройство подключено в настоящий момент и конфигурирует программное обеспечение соответствующим образом. И что немаловажно, цифровое устройство может не иметь собственного источника питания, его будет заменять персональный компьютер, так как питающее электронную схему напряжение передается по соединительному кабелю.Для реализации интерфейса USB в собственных системах цифровой обработки изображений, фирмы производители электронных компонентов предоставляют довольно богатый набор микросхем, так называемых
USB-контроллеров. Для специальных задач, в которых необходима предварительная обработка видеосигнала (сжатие, фильтрация, гамма-коррекция и т.п.) обязательно применение микроконтроллеров или специализированных цифровых сигнальных процессоров (DSP). Следовательно, необходимы дополнительные схемные решения для передачи обработанных данных по последовательной шине USB. Высокая сложность в разработке такого типа устройства очевидна. Однако некоторые фирмы предлагают специализированные чипы, интегрирующие на одном кристалле сигнальный процессор и USB-контроллер – на вход подается цифровое изображение в формате YUV, на выходе получаем готовое для передачи по USB-кабелю видеоизображение формата VGA. Так, например, фирма Zoran, продвигает на рынок технологию “USBVision” – серию микросхем специализирующихся на передаче видеоизображения, полученного с помощью ПЗС-матрицы, и аудио-сигнала по интерфейсу USB. Структурная схема одной из микросхем этого семейства представлена на рисунке 1.Рис. 1. Структурная схема
ZR36504.Цифровое видеоизображение с камеры (
Digital Camera) в формате YUV передается в блоки масштабирования и компрессии (DVS, DVC). Посредством блока доступа к памяти (MAU) все операции над изображением производятся во внешней памяти типа DRAM, которое затем через контроллер шины USB (USBI) передается по USB-кабелю в ПК. Вся информация о типе и разработчике устройства, регламентируемая спецификацией USB, может храниться либо внутри микросхемы постоянно, либо во внешней перепрограммируемой микросхеме EEPROM. Фактически требуется лишь согласовать уровни напряжений цифровой камеры и микросхемы ZR36504.Разработка драйвера
USB-устройстваДля использования нового устройства подключенного к
USB-шине ПК, необходимо разработать драйвер – специализированный программный слой между аппаратным уровнем ПК и операционной системой (ОС). В последних ОС фирмы Microsoft реализована Windows Driver Model (WDM) – модель призванная упростить разработку новых драйверов и сделать их универсальными при использовании в новых ОС. Суть модели заключается в организации так называемого стека драйверов. На примере USB стек состоит из следующих слоев: на самом нижнем уровне – драйвер контроллера USB (uhcd.sys), который зависит от разработчика микросхемы контроллера, затем располагается драйвер шины USB (usbd.sys), через который производятся все операции, и на самом верхнем уровне – драйвер конкретного типа USB-устройства (пользовательский драйвер). При подключении устройства к USB-порту ПК, аппаратура USB передает управление драйверу шины USB, который, используя файл настроек INF, с помощью операционной системы определяет какой пользовательский драйвер загрузить и выполняет эту операцию. В файле настроек хранится идентифицирующая конкретное устройство информация: идентификатор производителя, класс устройства и т.п. После загрузки драйвера, вызывается его функция “DriverEntry”, в которой производится инициализация и установка необходимых функций обратного вызова (callback functions), которые будут выполняться драйвером шины USB в моменты приема данных. В установившемся режиме, драйвер обрабатывает запросы пользователя, генерируемые посредством вызова стандартных функций ввода/вывода Win32 API, таких как “ReadFile”, “WriteFile”, “DeviceIOControl”. Естественно, при использовании недорогого решения в виде Web-камеры, разработка драйвера не нужна, фирма производитель предлагает свои собственные драйвера.Выбор инструмента для программной обработки видеопотока
Если кто разрабатывал или пытался разрабатывать программы для обработки видеоданных лет 5-7 назад, могут вспомнить с какими сложностями приходилось сталкиваться: наличие большого разнообразия несовместимых видеорежимов для различных видеоадаптеров, постраничная адресация видеопамяти, отсутствие единообразного интерфейса для обращения к видеоадаптерам и т.д. В мире персональных компьютеров (совместимых
с IBM PC) для разработчиков программ видеообработки постепенно ситуация стала улучшаться с появлением стандарта VESA. Поддержка видеоадаптером этого режима обеспечивала разработчиков линейным адресным видеопространством и множеством других полезных инструментов. Однако написание простейшего приложения для фильтрации видеопотока требовало довольно высокой квалификации разработчика как в области программирования на ассемблере, так и знаний технической организации взаимодействия устройств в персональном компьютере (ПК). Несомненно это очень интересно, захватывающе и полезно, но существенно отвлекает от главной академической цели – направить все усилия главным образом на исследование, а также разработку алгоритмов видеообработки и видеокорреции потока видеоданных в режиме реального времени. Надо отдать должное разработчикам электронных устройств, ровно как и разработчикам операционных систем, за огромную проделанную работу в плане подготовки фундамента для этих инструментов. Все сложности технического взаимодействия электронных компонентов, а также многослойная архитектура программного обеспечения системного уровня скрыты от пользователя ПК и позволяют ему посредством единого интерфейса использовать множество различных видеокамер и видеоадаптеров. Стандартизация и аткивное внедрение высокоскоростных интерфейсов передачи данных, таких как USB и IEEE1394, позволяют посредством дешевых мультимедиа-видеокамер передавать огромные потоки видеоданных со скоростями адекватными человеческому восприятию.Для соответствующей скорости передачи кадров видеоизображения необходимы и быстрые программные средства их обработки. В настоящее время разработано множество библиотек с алгоритмами быстрой обработки изображений. Разработчиком одной их таких библиотек является корпорация
Intel, которая бесплатно распространяет библиотеку Image Processing Library (IPL), реализующую следующие популярные функции:Развитие программного инструментария для мультимедийных задач существенно упрощает применение различной сложности алгоритмов видеокоррекции. Все самые последние достижения в области программирования
Plug’n’Play устройств и создания универсальных драйеров вошли в последнюю разработку Microsoft – набор библиотек для разработки мультимедиа приложений DirectX 8. Этот инструмент формирует высокоуровневый абстрактный слой над аппаратным обеспечением видеообработки и моделью драйверов Windows, тем самым освобождая разработчика от реализации механизмов получения видеоданных и вывода их на монитор. Разработчик получает доступ непосредственно к линейной области памяти, в которой хранится текущий кадр видеоизображения, все что необходимо сделать - наложить на этот кадр разработанный IPL-фильтр, обо всем остальном позаботится DirectX.Все операции по обработке потоков видео и аудиоданных реализует библиотека DirectShow, подмножество DirectX, которая раньше носила название технологии Microsoft ActiveMovie. Физически DirectShow представляет собой библиотеки COM-компонентов, для использования которых, а также расширения путем создания собственных фильтров, необходимы минимальные знания о технологии COM (Component Object Model) и умение программировать на C++ или Visual Basic.
Основным кирпичиком приложения, использующего
DirectShow, является так называемый фильтр, который производит единственную операцию над мультимедиа потоком, например, фильтр чтения из файла, фильтр видеозахвата с видеокамеры, фильтры декодирования (MPEG), фильтры вывода на видео или звуковую карту. Все эти фильтры контролирует менеджер (Filter Graph Manager) – высокоуровневый компонент, который управляет потоком данных между фильтрами. Фильтры стыкуются в графы (узлы), обеспечивая таким образом каналы для потоков видеоданных от видеокамеры до монитора вашего ПК. Фильтры разделяются на следующие категории: фильтры-источники (source), фильтры-преобразователи (transform) и фильтры воспроизведения (renderer). Фильтры первой и последней категории стандартны и для большинства задач можно использовать уже готовые фильтры из DirectShow.Рис.2. Модель фильтров
DirectShow.В библиотеке реализоан специальный объект для захвата видеоданных (
Capture Graph Builder). Он автоматически формирует граф с использованием вашего преобразующего фильтра и выбирает подходящие фильтры для захвата видеоизображения и вывода его на экран монитора. С помощью функций этого объекта можно параметризовать фильтр захвата видеоданных новыми размерами кадра, глубиной цвета, частотой смены кадров, а также размерами вырезаемой области изображения, то есть фактически без потери производительности можно фильтровать произвольную область изображения.Рис. 3. Дерево фильтров, построенное
Capture Graph Builder.Можно построить произвольной структуры дерево фильтров, например для одновременного вывода обработанного видеоизображения на экран монитора и сохранения в файл.
Для нас же особенный интерес представляют фильтры-преобразователи, с помощью которых можно обрабатывать кадры видеоизображения. В данной версии DirectX разработка собственных фильтров сопряжена с некоторыми проблемами за-за завышенных требований к знаниям разработчика алгоритма фильтрации. Во-первых, родным для DirectShow является С++, который сам по себе является сложным языком программирования, особенно при обучении. Во-вторых, для более глубокого понимания происходящих процессов, необходимы начальные знания в разработке COM-объектов и самой технологии OLE. Все эти проблемы могли бы исчезнуть, если создавать собственные фильтры и воспроизводить видеопоток в Visual Basic. Но пока эта возможность реализована только для проигрования видеофайлов.Выводы
На основе проделанного анализа доступных на сегодняшний день решений, можно заключить, что проводить исследования в области цифровой обработки потока видеоданных не просто возможно, а довольон дешево и доступно практически любому желающему, у которого есть персональный комптьютер. Для самых общих задач можно использовать недорогие Web-камеры, подключаемые к ПК посредством USB. Для постановки более точных экмпериментов, можно использовать интергированные решения, например, от Zoran, с использованием собственной оптики и ПЗС-матриц с выским разрешением. Для разработки высокотехнологичных систем обработки видеоизображений можно использовать специализированные видеокамеры, но главное – все эти аппаратные устройства будут одинаковым образом подключаться к персональному компьютеру и использовать одно и то же программное обеспечение, результат измерений будет зависеть только от точности и, следовательно, стоимости используемых видеокамер.
Источники