Программно-аппаратные средства ввода зрительных данных в память персонального компьютера

(Hardware and software for video capture purposes in PC-based vision systems
Preprint, Inst. Appl. Math., the Russian Academy of Science)

Богуславский А.А., Соколов С.М.
(A.A.Boguslavsky, S.M.Sokolov)

ИПМ им. М.В.Келдыша РАН

Москва, 2002
Работа выполнена при частичной финансовой поддержке Российского фонда фундаментальных исследований (проекты №№ 99-07-187, 99-01-00981, 02-01-00671, 02-07-90425)

Аннотация

В работе рассматриваются аппаратные средства для ввода зрительных данных в память персонального компьютера, которые могут быть использованы в системах технического зрения (СТЗ), построенных на базе IBM-совместимых персональных компьютеров (ПК). Среди этих устройств выделяются устройства, работающие с видеосигналом телевизионного стандарта (фреймграбберы) и устройства, генерирующие цифровые изображения для передачи с помощью последовательных шин USB и IEEE-1394. Для обращения к устройствам ввода зрительных данных (УВЗД) из программного обеспечения СТЗ необходимы программные компоненты поддержки УВЗД. В работе рассмотрены различные способы обращения к УВЗД из программного обеспечения (ПрО) СТЗ. В последние годы становятся доступными программные средства, которые могут быть использованы в процессе разработки ПрО СТЗ – библиотеки алгоритмов обработки изображений, интерактивные пакеты для обработки изображений. В некоторых библиотеках обработки изображений также есть группы подпрограмм для обращения к УВЗД. В данной работе описывается ряд программных средств данной категории и отмечаются возможности их применения для разработки СТЗ реального времени.

Ключевые слова: система технического зрения, система реального времени, фреймграббер, обработка изображений.

Abstract

The hardware for video capture purposes in PC-based vision systems are considered in this paper. Discussed devices working with television video signal (framegrabber) and the digital devices for serial bus USB and IEEE-1394. The software components are necessary for the interface with devices from the vision systems software. The various software development kit (SDK) types are considered In this paper. Now there are accessible software, which can be used during vision systems software development. There are libraries of image processing algorithms, interactive image processing applications. In some libraries of image processing algorithms there are groups of the subroutines for the framegrabber control. In the given paper a number of the given category software is described and the opportunities of their application for real time vision systems software development are discussed.

Keywords: vision system, real-time system, framegrabber, image processing.



Содержание

1. Введение

2. Программные средства для ввода и обработки зрительных данных

2.1 SDK для ввода зрительных данных

2.2 Библиотеки алгоритмов обработки изображений

2.3 Программные пакеты для ввода и обработки зрительных данных в интерактивном режиме      

3. Аппаратное обеспечение ввода зрительных данных

3.1 Фреймграббер VP-3MF

3.2 Фреймграббер MegaFrame-4

3.3 Фреймграббер для мультимедиа-приложений FlyVideo EZ

3.4 Фреймграббер Matrox Meteor II

3.5 Фреймграбберы The Imaging Source DFG/LC1 и DFG/LC216

3.6 Web-камера Logitech QuickCam Pro17

3.7 Устройство The Imaging Source DFG 1394 18

4. Методика тестирования программно-аппаратных средств для СТЗ

5. Заключение

Литература

 


1. Введение

При разработке систем реального времени для обработки зрительных данных (систем технического зрения, СТЗ), одной из основных задач является обеспечение ввода зрительных данных в память компьютера – формирование цифровых изображений. В процессе ввода совместно функционируют аппаратные и программные средства СТЗ. Основным аппаратным устройством для решения задачи ввода служат специализированные аналого-цифровые преобразователи (АЦП) – устройства ввода зрительных данных (УВЗД, фреймграбберы), к которым подключаются источники зрительных данных, генерирующие видеосигнал телевизионного стандарта (телевизионные камеры, видеомагнитофоны и др.). В последнее время наблюдается распространение УВЗД, обеспечивающих формирование цифровых изображений без использования АЦП как самостоятельного устройства. Примерами являются видеокамеры для цифровых шин USB [20] и FireWire [17].

Управление УВЗД обычно осуществляется с помощью программных компонент СТЗ – драйверов, вызываемых из основного цикла обработки СТЗ. В рассматриваемых СТЗ цикл обработки реального времени состоит из этапов "ввод изображения", "обработка изображения", "использование результатов обработки". Из этих трех этапов наиболее зависимым от аппаратных особенностей и операционной системы является первый этап – "ввод изображения".

В данной работе содержится анализ программно-аппаратных средств, которые могут быть использованы для разработки научных и прикладных СТЗ реального времени на базе IBM-совместимых ПК в среде операционных систем (ОС) Windows и QNX [12]. Рассматривалась возможность формирования программно-аппаратной конфигурации стоимостью 500-1000$, позволяющей организовать ввод зрительных данных без потерь изображений, c обеспечением унификации программных средств для реализации СТЗ на базе различных УВЗД и ОС.

В УВЗД для оцифровки видеосигнала телевизионного стандарта можно выделить два свойства, которые желательны для построения СТЗ реального времени:

1)      передача цифровых изображений из буфера УВЗД в оперативную память с минимальной загрузкой процессора с использованием режима работы системной шины PCI Bus Master;

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

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

До недавнего времени в среде распространенных ОС не было стандартных программных компонент для ввода зрительных данных в реальном времени [6, 21]. При отсутствии стандарта промышленные УВЗД комплектовались специфическими инструментальными средствами разработки ПрО (SDK) [23]. В последнее время на платформе Windows распространяется подсистема DirectX, обеспечивающая непосредственный доступ к аппаратному обеспечению ПК из мультимедиа-приложений. В этой подсистеме есть компонента DirectShow, которую можно рассматривать как попытку стандартизации программной поддержки ввода зрительных данных в среде ОС Windows [8].

Структура DirectShow предполагает программирование ввода и обработки зрительных данных в логике систем, управляемых потоками данных [1, 22]. Необходимо отметить, что в СТЗ со сложной логической обработкой не всегда удается построить цикл обработки в терминах потоков данных, поэтому использование стандарта DirectShow применительно к СТЗ несколько ограничено. Представляется, что использование абстракции УВЗД, сформированной применительно к СТЗ со структурой "ввод/обработка/использование результатов", обеспечит лучшую переносимость СТЗ в среду встроенных ОС и ОС реального времени, по сравнению с привязкой СТЗ к структуре подсистемы DirectX. Поэтому в данной работе предпочтение отдано программной поддержке УВЗД на основе библиотек функций, обеспечивающей выполнение настроек УВЗД и получение изображений без необходимости формирования программных компонент на основе каркасов компонент DirectX/DirectShow.

Несмотря на сложности применения готовых программных средств при реализации СТЗ, можно отметить возможность их использования при макетировании процесса обработки изображений. В качестве таких программных продуктов выделяются библиотеки с реализацией известных алгоритмов обработки изображений (например, Matrox Imaging Library [16], LeadTek LeadTools [13], HALCON [10], Intel OpenCV [18]) и интерактивные среды обработки изображений (Matrox Inspector [14], AdOculos [4], Pisoft Image Framework [19], ActivVision Tools [2]).

 

 

2. Программные средства для ввода и обработки зрительных данных

Программные средства для ввода и обработки зрительных данных можно разделить на три группы: инструментальные средства для обращения к аппаратным средствам из приложений (SDK); библиотеки с реализацией алгоритмов обработки изображений и программные пакеты для ввода и обработки зрительных данных в интерактивном режиме. В случае, если функции SDK перенаправляют вызовы приложений операционной системе, можно говорить об интерфейсе прикладного программирования (API), предоставляемом конкретной операционной системой.

 

2.1 SDK для ввода зрительных данных

Инструментальные средства разработки (SDK) для ввода зрительных данных – это программные средства, предоставляющие приложениям доступ к устройствам ввода зрительных данных (фреймграбберам) и источникам зрительных данных (камерам). Во многих случаях (преимущественно при работе с источниками видеосигнала телевизионного стандарта) непосредственного доступа к камерам не предусмотрено, и управление свойствами получаемых в ПК зрительных данных осуществляется только с помощью фреймграббера.

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

Для ОС Windows в 1992 г. был разработан интерфейс прикладного программирования (API) Video for Windows (VFW). В основном он был предназначен для захвата и сохранения видеоданных на диске (типичная задача в приложениях нелинейного видеомонтажа [3]). VFW успешно обеспечивает захват больших объемов данных (сейчас скорость захвата может превышать 20 Мб/с), и этот API используется в большом количестве приложений [22]. Однако у архитектуры VFW есть ряд недостатков, затрудняющих использование этого интерфейса в системах технического зрения: невозможность программного управления аппаратным обеспечением, отсутствие доступа к отдельным полукадрам, избыточное копирование буферов изображений.

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

·        промышленные фреймграбберы нельзя использовать в мультимедиа-приложениях общего назначения;

·        приложения технического зрения жестко привязаны к конкретной модели фреймграббера;

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

Перечисленные недостатки интерфейса VFW оказались также существенными для приложений видеоконференций и технологий интеграции персонального компьютера с телевидением. Поэтому для ОС Windows была разработана новая программная технология ввода зрительных данных (видеозахвата – video capture) на базе 32-разрядной архитектуры драйверов для ОС WindowsWDM (Windows Driver Model) [23, 21].

В результате в настоящее время можно выделить 6 разновидностей SDK для ввода зрительных данных [6].

1. SDK на основе DLL

SDK на базе DLL поставляются с документированным API и примерами приложений, обычно на языке Си или Си++. Для ОС, отличных от Windows, аналогом описываемых SDK являются статические библиотеки и драйверы, управляемые из приложений (например, через механизм DeviceIoCtl). Подобные SDK обычно рассчитаны на взаимодействие с фреймграбберами определенных моделей.

Преимущества: возможность полного контроля над аппаратными ресурсами, предоставляемого разработчиками драйверов, входящих в комплект SDK. Нет ограничений, налагаемых стандартными общесистемными механизмами.

Недостатки: у разработчиков ПрО необходимы навыки программирования на Си, приложения получаются непереносимыми на другую аппаратную базу, привязанными к данной модели фреймграббера и SDK.

2. SDK на основе объектов ActiveX

Элементы управления (объекты) ActiveX являются средством обеспечения модульности программных компонент на уровне исполняемых файлов в среде Windows [26]. Достаточно легко могут быть встроены в прикладную программу с помощью современных сред программирования Visual Studio, Borland Delphi, C++ Builder и т.п.

Преимущества: легко использовать в средах быстрой разработки приложений Visual Basic, Borland Delphi и т.п. Для написания достаточно сложных приложений требуется небольшое количество исходного текста.

Недостатки: большие накладные расходы на вызовы методов, связанные с использованием variant-совместимых типов данных в рамках технологии Windows COM.

3. Драйверы VFW

С помощью API Video for Windows приложения могут использовать для получения изображений драйвер VFW.

Преимущества: широкое использование в существующих мультимедиа-приложениях и недорогих устройствах ввода (например, в Web-камерах).

Недостатки: ограниченные возможности управления аппаратурой, прекращение развития интерфейса VFW компанией Microsoft.

4. Драйверы WDM

Современная модель драйверов для 32-битных PCI-устройств, устройств FireWire вроде цифровых видеокамер, устройств USB и др. Модель видеозахвата WDM была разработана для преодоления проблем, изначально присущих VFW. Главными преимуществами видеозахвата с использованием WDM являются:

·        обеспечивается поддержка 32-разрядных драйверов для устройств с 32-разрядной архитектурой, таких, как платы PCI, устройства USB, камеры FireWire (IEEE 1394) и др;

·        интеграция с DirectShow API (интерфейс программирования и макетирования ввода и программной обработки изображений);

·        предусмотрена поддержка Plug and Play, управление питанием и высокопроизводительный потоковый видеозахват;

·        допускается несколько потоков данных (аудио, видео и др.);

·        обеспечивается ввод и отображение полукадров и отслеживание интервала обратного хода луча кадровой развертки;

·        выполняется прямое взаимодействие с драйверами WDM режима ядра ОС;

·        предусмотрена работа с коммутатором входных потоков данных.

Преимущества: 32-битный интерфейс для мультимедиа-приложений, естественная интеграция с концепцией графа фильтров Microsoft, доступность из приложений распространенных сред программирования семейства MS Visual Studio.

Недостатки: пока не для всех фреймграбберов есть соответствующие драйверы. Аппаратная независимость в данной модели драйверов означает сильную зависимость от архитектуры ОС Windows, что затрудняет перенос ПрО на другие программные платформы.

5. Фильтры видеозахвата

Фильтры видеозахвата используются, например, вместе с редактором графа фильтров фирмы Microsoft для получения изображений с помощью WDM-драйверов.

Преимущества: быстрое макетирование процесса ввода и, возможно, обработки изображений с помощью редактора графа фильтров, доступность из Visual Basic и Visual C++.

Недостатки: необходимость разработки приложений в терминах потоков данных. Это не слишком удобно для СТЗ со сложной логикой обработки зрительных данных и взаимодействием.

6. Кодеки потоковых видеоданных

Видеокодеки являются программными компрессорами/декомпрессорами реального времени для обработки потока видеоданных. Предназначены для преобразования видеопотока в AVI-формат или данных из AVI-формата в видеопоток. Кодеки регистрируются в системном реестре MS Windows и могут быть использованы в любом приложении, которое написано для DirectShow или VFW.

Преимущества: кодеки совместимы с приложениями наподобие Media Player, Media Studio и т.д., с редактором графа фильтров. К ним можно обращаться из Visual Basic и Visual C.

Недостатки: в СТЗ не всегда удается обойтись воспроизведением видеоданных без программной обработки: кроме вывода видеоданных, на них приходится накладывать образы различных объектов, представляющих результаты обработки изображений.

 

Рассматривая перечисленные варианты реализации SDK применительно к задаче разработки СТЗ реального времени, в качестве наиболее подходящего варианта можно выбрать "SDK на основе DLL (или статической библиотеки)". В данном SDK должны быть функции настройки параметров фреймграббера (например, яркость, контрастность, номер входного канала, четность снимаемого полукадра) и функции для запуска фреймграббера на ввод изображения. После завершения ввода изображения фреймграббер должен сгенерировать прерывание, которое с помощью какого-либо объекта синхронизации потоков в базовой ОС должно быть передано на уровень приложения. В данной модели, несмотря на использование аппаратно-зависимых компонент ПрО, возможно обеспечение относительной аппаратной независимости СТЗ за счет реализации собственного уровня абстракции аппаратного обеспечения для ввода зрительных данных.

 

 

2.2 Библиотеки алгоритмов обработки изображений

В настоящее время широкую известность получили ряд библиотек, предлагаемых в качестве инструментальных средств для решения задач машинного и технического зрения. Большинство таких библиотек являются коммерческими продуктами, поставляемыми без исходных текстов. Тем не менее, они могут представлять интерес для разработки прототипов систем технического зрения.

 

Библиотека Matrox Imaging Library (MIL) предназначена для использования в среде MS-DOS и MS Windows. Эта библиотека содержит функции для ввода зрительных данных с помощью фреймграбберов фирмы Matrox и функции для обработки изображений. Подмножество функций ввода зрительных данных распространяется фирмой Matrox в виде самостоятельного продукта – библиотеки MIL Lite [16].

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

·        доступ к УВЗД (в MIL это только фреймграбберы фирмы Matrox);

·        управление буферами изображений (выделение, копирование, доступ и т.п.);

·        вывод графических примитивов в буфера изображений;

·        вывод изображений на экран;

·        функции для работы со связными компонентами бинарных изображений;

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

·        функции для выполнения двумерных измерений (поиск маркеров – краев и линий, вычисление расстояний между найденными маркерами);

·        корреляционный поиск шаблонов на полутоновых изображениях;

·        распознавание символов на основе сравнения с эталонным шрифтом.

Среди характерных особенностей MIL можно отметить эффективную реализацию алгоритмов для корреляционного поиска полутоновых шаблонов. Функции библиотеки оптимизированы для процессоров фирмы Intel. Библиотека MIL рассчитана на компиляторы Visual C++, Borland C++, Watcom C++. Распространяется в виде DLL для Windows и статических библиотек для MS-DOS.

 

Библиотека LeadTek LeadTools [13] в основном предназначена для хранения и доступа к изображениям в различных файловых форматах. Поддерживаются полутоновые, цветные и бинарные файловые форматы (порядка 50). Предоставляется доступ к AVI-файлам, интерфейсу TWAIN для сканирования изображений. Функции обработки представлены в относительно небольшом количестве и они предназначены, в основном, для решения задач визуализации изображений:

·        геометрические преобразования;

·        комбинирование нескольких изображений;

·        коррекция яркости и контраста;

·        фильтрация для повышения визуального качества изображений;

·        детектирование перепадов яркости.

В LeadTools реализован механизм аннотирования изображений – поверх изображения накладываются векторные примитивы (например, отрезки, прямоугольники и текст), которые можно сохранить в отдельном файле или в файле с изображением.

Библиотека LeadTools имеет модульную структуру, и предусмотрены различные варианты комплектации. Необязательными модулями являются:

·        распознавание штрих-кодов;

·        работа с файлами формата DICOM;

·        распознавание символов;

·        захват содержимого экрана в среде Windows;

·        доступ к мультимедиа-данным и ввод видео- и аудио- данных посредством интерфейса VFW.

LeadTools поставляется в виде набора в DLL, в виде библиотек классов и в виде элементов управления ActiveX. Предназначена для  использования в Visual Studio и в средах программирования Borland Delphi/C++ Builder.

 

Библиотека HALCON [10] – это коммерческий вариант системы обработки изображений HORUS, разрабатывавшейся с 1988 по 1996 г. для UNIX в рамках исследований в области интерактивной обработки изображений в Мюнхенском техническом университете.

HALCON содержит более 900 функций. Библиотека предназначена для использования в Windows и в нескольких версиях UNIX (в т.ч. Linux, Solaris, IRIX). Для Windows есть вариант библиотеки с поддержкой COM-автоматизации для использования не из Си++, например, из Visual Basic. Версия Parallel HALCON автоматически использует многопроцессорные возможности в соответствующих ОС и поддерживает написание программ для параллельной обработки изображений.

Предполагаемые области использования библиотеки HALCON –производственная автоматизация, контроль качества, бесконтактные измерения, обработка аэрофотосъемок, обработка медицинских изображений. Для быстрого прототипирования систем обработки изображений поставляется программа HDevelop. Группы функций HALCON в основном такие же, как и в библиотеке MIL. Можно отметить поддержку большого количества фреймграбберов (более 30 моделей, можно добавить новую модель), возможности обработки цветных и многоканальных изображений, а также наличие функций корреляционного поиска по описанию формы образов объектов.

 

Библиотека Intel OpenCV [18] представляет попытку разработки открытого стандарта в области инструментальных средств для задач машинного и технического зрения. Библиотека поставляется с исходными текстами, но для хранения изображений и низкоуровневой обработки OpenCV использует библиотеку Intel Image Processing Library (IPL) [11], которая поставляется в двоичном виде. В OpenCV нет функций для ввода зрительных данных, но есть группы функций, предназначенных для решения конкретных прикладных задач в постановке авторов библиотеки OpenCV, например, распознавание жестов и слежение за объектами на последовательности изображений (на примере слежения за лицом оператора ПК с помощью Web-камеры). В качестве интересных особенностей OpenCV можно отметить реализацию набора алгоритмов для формирования контурных описаний бинарных изображений, алгоритм калибровки камеры и алгоритмы совмещения стереоизображений. Приведен пример реализации нескольких приложений (в т.ч. слежение) в форме фильтров для подсистемы DirectShow.

 

Функциональные возможности обработки изображений в перечисленных библиотеках довольно похожи. Коммерческие продукты (все, за исключением OpenCV, но которая тоже базируется на закрытом продукте IPL) дороги (порядка 5000-10000$) и закрыты для модификации. Основной интерес, на наш взгляд, описанные библиотеки могут представлять на этапе проектирования и разработки прототипа СТЗ реального времени, поскольку дают возможность с относительно небольшими временными затратами изучить возможности применения известных алгоритмов для решения конкретной задачи. В случае найденных удачных решений может быть целесообразно перенести сформированный прототип на собственную алгоритмическую базу.

Среди проблем, возникающих при работе с библиотеками обработки изображений, можно отметить, что почти каждая библиотека предполагает использование собственного формата хранения изображений. Также возможны сложности с версиями библиотек, на практике обнаруженные при работе с библиотекой MIL – для новой версии ОС потребовались новые драйверы УВЗД (в составе новой версии MIL-Lite), которые не сочетаются с более ранней версией библиотеки MIL.

 

 

2.3 Программные пакеты для ввода и обработки зрительных данных в интерактивном режиме

Разработка прототипов СТЗ с использованием библиотек, описанных в п.2.2, требует написания исходного текста на языке программирования, обычно на Си++. В случае, когда основной целью прототипирования СТЗ является разработка алгоритма обработки изображений, выполняемого в цикле реального времени СТЗ, могут применять интерактивные пакеты для ввода и обработки зрительных данных. Часто подобные пакеты разрабатываются на основе библиотек функций обработки изображений, например, Matrox Inspector на базе MIL [14] или HDevelop и ActivVisionTools на базе HALCON [2].

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

Matrox Inspector [14] является интерактивным программным пакетом для научных и промышленных задач технического зрения. Предназначен для ОС Windows. Рассчитан на использование фреймграбберов фирмы Matrox. Выполняет захват, обработку, анализ, отображение и сохранение зрительной информации. Фактически, является удобной оболочкой для вызова функций библиотеки MIL. Есть С-подобный встроенный язык. В Inspector версии 3.1 реализован VBA-совместимый скриптовый язык, что позволяет передавать данные во внешние приложения в рамках COM-автоматизации, например, в MS Excel. Как и базовая библиотека MIL, пакет Inspector ориентирован на анализ плоских изображений. Предусмотрены функции распознавания символов и штрих-кодов.

Программа HDevelop является интерактивной средой программирования задач технического зрения, основанную на библиотеке HALCON [10]. Это графическая среда с интерпретатором Basic-подобного языка, поддерживающим вызов функций библиотеки HALCON. HDevelop позволяет экспортировать разработанный алгоритм обработки изображений в исходный текст на Си или Си++.

Интересна структура графического интерфейса программы HDevelop: присутствует окно с текстом интерпретируемой программы, окно оператора, окно переменных и графическое окно. Программу можно выполнять по шагам. В окне оператора выводится информация о текущем операторе программы: параметры, их типы и значения. В окне переменных отображаются значения переменных, используемых в программе. Специфика данной среды в том, что есть переменные типа "изображение", например, переменная "область интереса", которые отображаются соответствующим образом. В графическом окне выводится обрабатываемое изображение. Его содержимым можно управлять из разрабатываемой программы.

Программные компоненты ActivisionTools [2] также основаны на библиотеке HALCON. Это элементы управления ActiveX, которые можно рассматривать как образцы решения типичных задач обработки изображений с помощью библиотеки HALCON. Элементы ActivisionTools можно встраивать в прикладные СТЗ, и для построения интерфейса пользователя это может быть удобно (учитывая, конечно, что они на английском языке). Доступны элементы ActivisionTools для решения следующих задач:

·        вывод изображений с наложением областей интереса;

·        получение изображений от разных УВЗД, поддерживаемых HALCON;

·        анализ связных компонент на бинарных изображениях;

·        распознавание штрих-кодов;

·        измерения между линиями и краями;

·        калибровка и настройка камеры.

Некоторые интерактивные пакеты рассчитаны на разработку алгоритмов обработки изображений в модели потоков данных. Примеры таких пакетов – AdOculos [4] и Pisoft Image Framework [19]. В обоих пакетах есть встроенный набор алгоритмов обработки, визуально представляемых в виде прямоугольных блоков. Блоки можно соединять линиями, представляющими потоки данных – изображения, передаваемые на разные этапы обработки. После каждого этапа можно посмотреть содержимое изображения в специальном окне. В AdOculos предусмотрена возможность написания новых функций обработки на Си++.

Можно отметить, что все перечисленные пакеты направлены на то, чтобы дать пользователю возможность с наименьшими усилиями применить готовые библиотеки алгоритмов обработки изображений для решения собственных задач. Для работы в реальном времени эти пакеты мало пригодны, но они существенно ускоряют макетирование циклов обработки изображений. Интерактивные пакеты также удобны для ознакомления с алгоритмами обработки, которые могут присутствовать в них в довольно большом количестве. Технологии COM-автоматизации (в частности, оформление компонент обработки изображений в виде элементов управления ActiveX) направлены на то, чтобы пользователи могли обращаться к готовым библиотекам из Visual Basic и других сред-клиентов COM-автоматизации.

 

 

3. Аппаратное обеспечение ввода зрительных данных

В данном разделе будут рассмотрены ряд аппаратных устройств для ввода зрительных данных – несколько моделей фреймграбберов для оцифровки видеосигнала телевизионного стандарта, Web-камера для шины USB и устройство для преобразования телевизионного видеосигнала в цифровые данные для шины FireWire. Среди "традиционных" фреймграбберов можно выделить устройства The Imaging Source DFG/LC1 и DFG/LC2, которые по функциональным возможностям наиболее подходят для использования в недорогих прикладных СТЗ реального времени.

 

3.1 Фреймграббер VP-3MF

Устройство VP-3MF (производитель – фирма "Грайи", Россия) предназначено для ввода монохромного изображения в IBM-совместимый компьютер с источников стандартного видеосигнала PAL/CCIR: видеокамера, видеомагнитофон и др. Устройство выполнено в виде платы расширения для 8-ми битной шины ISA (рис. 1). УВЗД имеет 1 вход, выполненный в виде BNC-разъема.

 

Рис. 1. УВЗД VP-3MF

 

Основные характеристики устройства:

Время фиксации полного телевизионного кадра – 40 мс.

Максимальный формат съемки 760*590*256 (760 точки по горизонтали, 590 точек по вертикали, 256 градаций серого).

Объем буферной памяти устройства – 512 Кбайт.

Время захвата синхронизации – не более 5 мс.

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

Достоинством этого устройства применительно к СТЗ реального времени является возможность ввода заданного количества строк заданного полукадра.

В качестве недостатков данного устройства можно отметить медленную буферную память (копирование в оперативную память занимает примерно 4 мс на 1 Кб данных) и невозможность считывания из буфера изображения во время оцифровки очередного кадра. Для компенсации этого недостатка приходилось разрабатывать алгоритмы реального времени таким образом, по возможности уменьшая площади обрабатываемых фрагментов изображений. Затрудняет построение цикла реального времени также отсутствие аппаратного прерывания после завершения операции съема. Для отслеживания готовности УВЗД приходится выполнять опрос служебного регистра.

Протокол работы с данным УВЗД открыт, поэтому удалось провести эксперименты по построению СТЗ в среде ОС QNX. Была разработана СТЗ из двух процессов – процесс-драйвер и процесс обработки. Обмен данными выполнялся с помощью механизма передачи сообщений QNX. ОС QNX обеспечивает прозрачную передачу сообщений в пределах локальной сети, что позволило сформировать конфигурацию СТЗ, в которой УВЗД/драйвер и процесс обработки располагались на разных ПК. Для формирования такой конфигурации процесс-драйвер и процесс обработки были использованы без перекомпиляции программ, полностью в том же варианте, что и в конфигурации с одним ПК. При работе на одном ПК (процессор Pentium-200) удалось обеспечить ввод 25 полукадров заданной четности, при работе на двух ПК - 12 полукадров заданной четности.

 

3.2 Фреймграббер MegaFrame-4

УВЗД MegaFrame-4 (фирма MegaPixel, Россия) выполнено в виде платы для шины PCI. Построено на основе микросхемы Bt878 (Conexant). Предназначено для ввода монохромных и цветных изображений от источников видеосигнала телевизионного стандарта. УВЗД (рис. 2) имеет коммутатор на 4 входа, оформленных в виде разъемов BNC. В документации на базовую микросхему Bt878 [5] указано, что она обеспечивает захват отдельных полукадров, содержит встроенный интерфейс для шины PCI и. обладает возможностью передачи цифровых данных по шине PCI в режиме DMA.

 

Рис. 2. УВЗД MegaFrame-4.

 

SDK для данного УВЗД отсутствует, управление устройством из приложения Windows осуществляется посредством вызовов драйвера MPMFRAME.VXD с помощью системной функции DeviceIoControl. Драйвер поддерживает три основных команды: запуск съема кадра/полукадра, ожидание завершения съема и получение изображения из буфера драйвера. УВЗД обеспечивает съем четных полукадров, полукадров произвольной четности или полных кадров. При тестировании УВЗД удалось получить 25 четных полукадров в секунду в режиме ввода монохромных изображений. На передачу по шине PCI изображения размером 384х288 пикселей, 8 бит на пиксель, требуется порядка 19 мс (на ПК с процессором AMD-K6 500 МГц). Для многих СТЗ реального времени этого достаточно.

В качестве очевидных недостатков данного УВЗД можно отметить отсутствие поддержки прерываний для извещения приложения о завершении съема. Это вынуждает организовывать в приложении циклический опрос фреймграббера, что в многопоточных ОС не всегда оказывается удачным архитектурным решением. В целом, можно заключить, что недостаточная программная поддержка УВЗД не позволяет полностью использовать в приложениях возможности Bt878. Этот недостаток можно компенсировать прямым обращением к базовой микросхеме, интерфейс для взаимодействия с которой описан в технической документации [5].

 

3.3 Фреймграббер для мультимедиа-приложений FlyVideo EZ

УВЗД FlyVideo EZ [9] предназначено для мультимедиа-приложений массового распространения, например, для организации видеоконференций. Это устройство на основе микросхемы Bt848 (Conexant) выполнено в виде платы для шины PCI. Имеет 2 композитных видеовхода (разъемы RCA). Предназначено для ввода цветных изображений размером до 640х480 пикселей.

В качестве программной поддержки устройство поставляется с драйвером для подсистемы VFW для ОС Windows. Работа через этот интерфейс затрудняет использование FlyVideo EZ в СТЗ реального времени – не удается получить доступ к отдельным полукадрам, всегда формируются цветные изображения, и, кроме того, драйвер VFW может передавать приложению повторяющиеся изображения для обеспечения требуемой кадровой частоты видеопотока. При тестировании фреймграббера в потоковом режиме VFW в разрешении 384х288 передавались 25 кадров в секунду (Celeron-333, на последовательности в 300 кадров среднее время ввода 40,33 мс, с.к.о - 3,4 мс).

Для использования в СТЗ реального времени данное устройство обладает слишком ограниченными возможностями программной поддержки. Может быть использовано для формирования AVI-файлов для формирования презентационных материалов и для первоначального тестирования алгоритмов обработки.

 

3.4 Фреймграббер Matrox Meteor II

Устройство Meteor II (производитель – фирма Matrox, Канада) предназначено для ввода цветных и монохромных изображений в IBM-совместимый компьютер с источников стандартного видеосигнала PAL/CCIR/NTSC [15]. Устройство выполнено в виде платы расширения для 32-х битной шины PCI (рис. 3).

 

Рис3. УВЗД Matrox Meteor II

 

Основные характеристики устройства:

Максимальный формат съемки 768*576 пикселей в формате RGB 8:8:8 или YUV 4:2:2.

Объем буферной памяти устройства – 4 Мб.

Работает в режиме управления шиной PCI Bus Master и выполняет копирование оцифрованного изображения из буферной памяти в оперативную без участия процессора.

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

УВЗД поддерживает режим двойной буферизации, при котором возможна одновременное чтение данных из буфера платы и оцифровка очередного кадра.

Выдает прерывания по началу/концу съема кадра

Есть внешний триггерный вход для начала съема с внешней синхронизацией.

Устройство поставляется в комплекте с драйверами для операционных систем DOS защищенного режима, Windows 95/98 и Windows NT.

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

Недостатком устройства применительно к использованию в составе СТЗ является невозможность съема отдельных полукадров. Изображения отдельных полукадров можно извлекать из изображения целого кадра только после завершения съема кадра. Для этого приходится считывать из буфера кадра только четные или только нечетные строки оцифрованного изображения.

 

3.5 Фреймграбберы The Imaging Source DFG/LC1 и DFG/LC2

Устройства DFG/LC1 (рис. 4) и DFG/LC2 (рис. 5) являются 32-разрядными фреймграбберами нижнего ценового диапазона для промышленных, медицинских и мультимедиа-приложений, в которых требуется обработка полутоновых и цветных изображений [7]. УВЗД изготовлены на базе микросхемы Bt848. Источниками видеоданных могут быть любые устройства, имеющие выходы S-VHS (Y/C) и CVBS (композитный выход). У DFG/LC1 два видеовхода, у DFG/LC2 – четыре. Передача данных в оперативную память или непосредственно в видеопамять выполняется с использованием шины PCI в режиме DMA Burst Mode. Вместе с фреймграбберами поставляется описание средств программирования и SDK, предназначенный для использования в прикладных программах в среде Windows 95/NT.

Драйвер фреймграббера позволяет выполнять разделение прерываний с другими устройствами, которые это допускают (в т.ч. с другими фреймграбберами на одном ПК). В качестве программной поддержки в ОС устанавливаются драйвер фреймграббера и DLL для доступа из приложений. Для разработки программ рекомендуется среда Visual C++ (могут быть также использованы Borland C++, Delphi, Visual Basic).

 

 

Рис4. УВЗД DFG/LC1

Рис5. УВЗД DFG/LC2

 

Изображения формируются в RGB-формате (8, 15, 16, 24 и 32 бита, поэтому можно подобрать соответствие с видеорежимом для эффективной визуализации цветных изображений), цветоразностном формате YUV или полутоновом (8 бит).

При вводе можно указать размеры получаемых изображений и смещение относительно начала кадра.

Доступ к полукадрам: четный, нечетный, полный кадр, полный кадр прогрессивно (полукадры укладываются в буфер последовательно). Есть особый режима ввода – "стерео"-режим для получения изображений синхронно с двух видеовходов. Первый кадр снимается с первого входа, второй – со второго. Этот режим обеспечивает получение стереопары за 40 мс. В DLL поддержки фреймграббера предусмотрена кольцевая буферизация изображений.

Во фреймграббере есть программно опрашиваемый счетчик кадров, поступивших на видеовход.

После окончания съема фреймграббер генерирует прерывание. Прерывание перехватывается драйвером *.vxd или *.sys и этот драйвер устанавливает объект-событие в "сигнальное состояние". Пользовательский поток может находиться в приостановленном состоянии, ожидая объекта-события.

 

3.6 Web-камера Logitech QuickCam Pro

Web-камера Logitech QuickCam Pro (рис. 6, [20]) в основном предназначена для организации видеоконференций с использованием локальной сети или сети Интернет. Эта камера построена на базе цветной матрицы ПЗС с размерами 640х480 пикселей и рассчитана на подключение к ПК через интерфейс USB. Хотя пропускная способность шины USB недостаточна для использования в СТЗ реального времени, камеры рассматриваемого класса могут быть интересны как недорогое устройство для получения цветных изображений малого разрешения.

 

Рис6. Web-камера Logitech QuickCam Pro 3000

 

Шина USB имеет пропускную способность 12 Мбит/с. Поэтому для передачи зрительных данных в ПК приходится выполнять сжатие. Оно выполняется аппаратно USB-контроллером, встроенным в Web-камеру [24]. На ПК с процессором Celeron-600 МГц удается обеспечить передачу зрительных данных со скоростью 10-15 кадров/с при разрешении 640×480 и со скоростью 30 кадров/с при разрешении 320×240 пикселей. Для программного доступа к Web-камере приходится пользоваться интерфейсом VFW. Обеспечивается ввод только цветных изображений. Стабильность ввода зависит от базового процессора (рис. 7, 8): на AMD-К6-2 500 МГц практически 50% кадров теряются за счет времени, необходимого на распаковку изображений.

 

Время ввода 100 кадров с помощью Logitech QuickCam Pro

(горизонтальная ось – порядковый номер кадра, вертикальная – время ввода в мс)

Рис. 7. ПК с процессором Celeron 600 МГц.

            Среднее время ввода кадра: 32,9 мс

            С.к.о.: 7,2 мс

Рис. 8. ПК с процессором AMD K6-2 500 МГц.

            Среднее время ввода кадра: 36,2 мс

            С.к.о.: 27,8 мс

 

 

3.7 Устройство The Imaging Source DFG 1394

Стандарт IEEE-1394 (FireWire) определяет высокопроизводительную последовательную шину, позволяющую объединять аппаратные и программные средства для передачи потоков данных со скоростью до 400 Мбит/с [25]. Связь между устройствами с интерфейсом IEEE-1394 может включаться и выключаться непосредственно на время их работы без отключения питания и перезагрузки.

Пропускная способность новой версии шины USB 2.0 сравнима с IEEE-1394 – обеспечивается передача данных со скоростью до 480 Мбит/с. Стандарт IEEE-1394 по сравнению с USB 2.0 предпочтителен для задач ввода зрительных данных благодаря возможности синхронной передачи данных.

Распространение интерфейса IEEE-1394 приводит к постепенному снижению необходимости использования фреймграбберов как отдельных устройств для ввода зрительных данных, передаваемых в форме стандартного телевизионного сигнала. Использование фреймграбберов в виде плат стандарта PCMCIA в компактной компоновке СТЗ на базе ноутбуков сопровождалось рядом сложностей [17]:

·        обеспечивалась низкая кадровая частота или малое разрешение;

·        фреймграбберы PCMCIA имели ненадежные входные разъемы;

·        фреймграбберы PCMCIA снабжались специфическими программными интерфейсами.

Для преодоления указанных недостатков компанией The Imaging Source было разработано устройство DFG-1394 [17], предназначенное для преобразования стандартного телевизионного сигнала в неупакованные данные изображений для передачи через шину IEEE-1394. Это устройство (рис. 9, 10) рассчитано на шину с пропускной способностью 400 Мбит/с. DFG-1394 имеет коммутатор с тремя видеовходами (два композитных и один S-VHS).

 

 

 

Рис. 9. Устройство DFG 1394

Рис. 10. Аппаратное обеспечение СТЗ на базе ноутбука и устройства DFG 1394

 

Передача данных в полном разрешении PAL/NTSC и с кадровой частотой телевизионного сигнала реализовано в устройстве DFG-1394 аппаратно. Ввод зрительных данных выполняется по следующей схеме: аналоговый телевизионный сигнал через видеокоммутатор поступает на АЦП. Затем выполняется цветовое преобразование для формирования изображения программно заданного формата, масштабирование и преобразование в данные для шины IEEE-1394.

В качестве программного интерфейса предлагается "универсальный" элемент управления ActiveX, рассчитанный на получение изображений от фреймграбберов PCI, камер USB и FireWire-устройств.

 

 

4. Методика тестирования программно-аппаратных средств для систем технического зрения

Для тестирования УВЗД применительно к задаче построения СТЗ реального времени можно предложить три группы тестов: оценка форматов вводимых изображений; оценка стабильности ввода изображений и оценка программной поддержки.

УВЗД с цифровым выходом (USB-камеры, FireWire-устройства) в качестве форматов вводимых изображений могут поддерживать цветные (RGB- и Y/C) и полутоновые изображения различных разрешений и с различной глубиной цвета. УВЗД на основе стандартного телевизионного сигнала обычно генерируют цифровые изображения с аналогичными характеристиками, но для таких УВЗД также необходимо оценить типы изображений, которое устройство способно выделить в аналоговом телевизионном сигнале. Т.о., для оценки форматов вводимых изображений целесообразно получить следующие характеристики УВЗД:

1)     сколько видеовходов имеет УВЗД;

2)     сколько видеовходов используются для одновременного ввода изображений;

3)     если УВЗД работает с телевизионным сигналом, обеспечивается ли ввод полукадров заданной четности или только полных кадров;

4)     какие форматы цифровых изображений генерирует устройство и есть ли в перечне форматов такой, который требуется для разрабатываемой СТЗ.

 

Стабильность ввода изображений в процессе функционирования СТЗ зависит от нескольких факторов: стабильность функционирования аппаратной части УВЗД; устойчивость взаимодействия УВЗД и его драйвера в операционной системе; стабильность обработки данных от драйвера на уровне приложения (т.е. программного обеспечения СТЗ). Оценка стабильности ввода изображений может быть выполнена с помощью каркаса СТЗ, имитирующего ввод и обработку изображений с засечкой временных интервалов, требующихся для выполнения этих операций. В качестве характеристик, которые желательно получить в тестах этой группы, можно перечислить следующие:

1)     Каким образом реализовано сохранение цифрового изображения – в собственном буфере УВЗД или непосредственно в оперативной памяти ПК. Если изображение передается непосредственно в оперативную память, задействован ли при этом центральный процессор, если изображение хранится в буфере УВЗД – допускает ли устройство чтение изображения во время ввода очередного кадра/полукадра.

2)     Какой режим ввода изображений поддерживает УВЗД – синхронный или асинхронный (по отношению к программному процессу или потоку, выполняющему ввод).

3)     Сколько времени (в среднем) требуется на ввод одного изображения, и, если для этого требуется выполнить несколько обращений к драйверу УВЗД, каково среднее время на выполнение каждого обращения. Эти результаты могут быть представлены в графической форме для последовательности из 100-200 изображений с оценкой среднего времени и с.к.о. на выполнение каждой операции. Данные измерения можно проводить в двух режимах – в пустом цикле ввода изображений, а также в приложении с двумя потоками, один из которых имитирует обработку изображений, а второй выполняет асинхронный ввод изображений.

 

Программная поддержка УВЗД может быть охарактеризована по следующим параметрам:

1)     Какие базовые операционные системы поддерживаются.

2)     Есть ли документация на программный интерфейс с аппаратной частью УВЗД для реализации собственных драйверов.

3)     Если изображения буферизуются в драйвере УВЗД, не возникает ли дублирования изображений при потоковом вводе?

4)     Обеспечивается ли передача прерывания, сигнализирующего об изменении состояния УВЗД (например, о завершении или начале съема кадр/полукадра) на уровень приложения?

 

 


5. Заключение

Описанные в работе программно-аппаратные средства для ввода зрительных данных в память персонального компьютера могут быть использованы при разработке систем технического зрения реального времени на базе IBM-совместимых ПК.

Для обеспечения режима реального времени необходимо учитывать особенности программной поддержки УВЗД. В среде ОС Windows выделяются следующие типы программных компонент для интерфейса приложений с аппаратными средствами ввода зрительных данных: SDK на основе DLL, SDK на основе объектов ActiveX, драйверы VFW, драйверы WDM, фильтры видеозахвата и кодеки потоковых видеоданных. Наибольшую программно-аппаратную независимость, как правило, разработчик СТЗ может обеспечить с помощью SDK на основе DLL, но при работе с УВЗД массового распространения для мультимедиа-приложений (например, Web-камерами), этот вариант программной поддержки может быть недоступен.

При проектировании алгоритма обработки зрительных данных и разработке прототипа СТЗ могут быть использованы библиотеки алгоритмов обработки изображений и пакеты для интерактивной обработки изображений. В работе рассмотрен ряд программных продуктов обеих категорий.

В аппаратном обеспечении СТЗ основное место занимают устройства ввода зрительных данных. В настоящее время выделяется две группы УВЗД: устройства, работающие с видеосигналом телевизионного стандарта, и комбинированные устройства источник зрительных данных+АЦП для подключения к цифровым последовательным шинам USB и IEEE-1394 (FireWire). Для СТЗ реального времени применительно к УВЗД можно выделить два основных требования – возможность передачи цифровых изображений непосредственно в оперативную память без загрузки центрального процессора и генерирование прерываний для извещения приложений о завершении операций ввода. Для УВЗД, работающих со стандартным телевизионным сигналом, дополнительно предъявляется требования доступа к полукадрам заданной четности.

 


Литература

1)      About the DirectShow Filter Graph Editor. Microsoft Corp., 2000
http:\\www.microsoft.com\Developer\PRODINFO\directx\dxm\help\ds\Oview\

2)      ActivVision Tools. MVTec Software GmbH, Munich, Germany, 2001
http:\\www.activ-vision-tools.com

3)      Adobe Premiere 4.0. User Guide. Adobe Systems Inc., 1994, 321 p.

4)      AdOculos 4.0, DBS GmbH, Bremen, Germany. 1998
http:\\www.dbs-imaging.com

5)       Bt878/Bt879 Single-Chip Video and Broadcast Audio. Rockwell Semiconductor Systems, 1997, 172 pg.
http:\\www.nb.rockwell.com

6)      Capture SDKs for Grabbers. The Imaging Source Europe GmbH, 2001
http:\\www.theimagingsource.com\prod\soft\sdkcapintro_capturesdkgrab.htm

7)      DFG/LC1 & DFG/LC2 Frame Grabber. Users Manual. The Imaging Source Europe GmbH, Bremen, Germany. 2000, 97 pg.

8)      Direct Show Tutorial. The Imaging Source Europe GmbH, 2001
http:\\www.theimagingsource.com\prod\soft\fpics\fpics_tutdirectshow.htm

9)      FlyVideo TV\Video Capture Card. User's Manual, Animation Technologies Inc., 2000
http:\\www.lifeview.com

10) HALCON Version 6.0 User's Manual. MVTec Software GmbH, Munich, Germany, 2000
http:\\www.mvtec.com\halcon

11) Intel Image Processing Library. Reference Manual. Intel Corp., USA, 1999, 286 pg.
http:\\developer.intel.com

12) Kolnick F., The QNX 4 Real-time Operating System. Basis Computer Systems Inc, Canada, 1998, 936 pg.

13) LEADTOOLS 12 API, LEAD Technologies Inc., Charlotte, USA, 2000, 1558 pg.
http:\\www.leadtools.com

14) Matrox Inspector 3.1. Matrox Electronic Systems Ltd.,
http:\\www.matrox.com\imaging\products\inspector\b_inspector.pdf

15) Matrox Meteor-II. Matrox Electronic Systems Ltd.,
http:\\www.matrox.com\imaging

16) MIL-Lite version 3.1. User Guide and Command Reference. Matrox Electronic Systems Ltd., 1996

17) Mobile Imaging. The Imaging Source Europe GmbH, 2002
http:\\www.1394imaging.com\resources\articles\mobile_imaging\index.htm

18) OpenCV Library User Guide. Intel Research Lab, 2000, 420 pg.

19) Pisoft Image Framework 8.0, Институт информационных технологий, Лаборатория компьютерного зрения, Москва, 2000
http:\\www.iitvision.ru\pisoft.htm

20) QuickCam Pro 3000. Logitech Inc., USA.
http:\\www.logitech.com

21) Video Capture Technologies, Microsoft Corporation, 2001
http:\\www.microsoft.com\hwdev\tech\stream\vidcap\default.asp

22) WDM Video Capture Overview. MSDN Library, Microsoft Corporation, 1998

23) What are Capture SDKs? The Imaging Source Europe GmbH, 2001
http:\\www.theimagingsource.com\prod\soft\soft_bg_capsdk.htm

24) Пахомов С., Самохин С. Web-камеры. КомпьютерПресс, №11, 2001

25) Татарников О. Интерфейс IEEE-1394. Обзор современных плат. КомпьютерПресс, №7, 2001

26) Трельсен Э. Модель COM и применение ATL 3.0. СПб.: БХВ-Петербург, 2001, 928 с.