downloading - Trac 0.11.4 - Томский государственный

advertisement
Министерство образования и науки Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ
УДК 004.75
№ госрегистрации
Инв.№
УТВЕРЖДАЮ
Проректор по научной работе
д.т.н., профессор
______________ А.А. Шелупанов
«___»_________ ______ г.
ОТЧЕТ
О НАУЧНО-ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЕ
В рамках федеральной целевой программы «Научные и научно-педагогические кадры
инновационной России» на 2009-2013 годы
по теме:
МЕТОДЫ И ТЕХНОЛОГИИ РАЗРАБОТКИ СЕРВИСОРИЕНТИРОВАННЫХ СИСТЕМ АНАЛИЗА И ИДЕНТИФИКАЦИИ
ИЗОБРАЖЕНИЙ
(промежуточный, этап № 1)
Наименование этапа: «Выбор, исследование и оценка параметров и структуры
информационно-вычислительной системы»
Руководитель НИР, д.т.н., проф.
_________________
подпись, дата
Томск 2010
А. М. Кориков
СПИСОК ИСПОЛНИТЕЛЕЙ
Руководитель темы,
д.т.н.
А. М. Кориков (введение, заключение)
_________________
подпись, дата
Исполнители темы:
профессор, д.т.н.
В. Т. Калайда (разделы 1.2, 4.4, 5)
_________________
подпись, дата
докторант, доцент, к.т.н.
И. В. Бойченко (разделы 2.2, 4.5
_________________ заключение)
подпись, дата
доцент, к.т.н.
В. В. Романенко (раздел 3.1)
_________________
подпись, дата
доцент, к.т.н.
Е.А. Кузьмина (раздел 3.2)
_________________
подпись, дата
доцент, к.т.н.
А.И. Елизаров (раздел 1.2)
_________________
подпись, дата
аспирант, м.н.с.
О.А. Кривцов (раздел 1.1, 4.1-4.3, 6)
_________________
подпись, дата
м.н.с.
А.А. Григорьев (раздел 6.1)
_________________
подпись, дата
с.н.с., к.т.н.
С.Г. Катаев (раздел 6.2)
_________________
подпись, дата
студент, техник
И.Е. Скворцов (раздел 6.3)
_________________
подпись, дата
студент, техник
М.А. Иценко (раздел 6.1)
_________________
подпись, дата
студент, техник
Е.В. Гальченко (раздел 6.4)
_________________
подпись, дата
студент, техник
Е.В. Бортников (раздел 4.4.1)
_________________
2
подпись, дата
студент, техник
М.А. Садовников (раздел 4.4.1)
_________________
подпись, дата
студент, техник
Д.Е. Шерстобоев (раздел 4.4.1)
_________________
подпись, дата
студент, техник
Д.С. Дорофеев (раздел 4.4.1)
_________________
подпись, дата
студент, техник
Д.Д Новак (раздел 4.4.2)
_________________
подпись, дата
студент, техник
А.А. Петров (раздел 4.4.2)
_________________
подпись, дата
студент, техник
Т.Е. Дорофеева (раздел 4.4.2)
_________________
подпись, дата
студент, техник
А.Д. Чирков (раздел 4.4.2)
_________________
подпись, дата
студент, техник
А.А. Немеров (раздел 4.4.2)
_________________
подпись, дата
студент, техник
А. В. Лежанкин (раздел 4.4.2)
_________________
подпись, дата
студент, техник
В.В. Симонов (раздел 4.4.2)
_________________
подпись, дата
студент, техник
А.П. Бойко (раздел 4.4.2)
_________________
подпись, дата
студент, техник
С.В. Корытников (раздел 4.4.2)
_________________
подпись, дата
Нормоконтролер
И. И. Чмеленко
_________________
подпись, дата
3
Реферат
Отчет 100 с., 100 рис., 100 табл., 100 источников.
РАСПРЕДЕЛЕННЫЕ
СИСТЕМЫ,
ОТСЛЕЖИВАНИЕ
(ТРЕКИНГ)
ОБЪЕКТА,
ИДЕНТИФИКАЦИЯ ИЗОБРАЖЕНИЙ, АРХИТЕКТУРА ПРОГРАММНЫХ СИСТЕМ,
БАЛАНСИРОВКА НАГРУЗКИ, ОБЛАЧНЫЕ ВЫЧИСЛЕНИЯ
Объектом исследования является новый класс распределенных информационновычислительных систем, развиваемых на основе парадигмы «облачных вычислений»
Цель работы – разработка методов и технологий построения программного обеспечения
сервис-ориентированных систем анализа и идентификации изображений
В процессе работы сервис-ориентированная архитектура рассматривается как один из
наиболее развитых подходов к построению «вычислительных облаков», то есть
распределенных вычислительных систем обладающих масштабируемостью на всех
уровнях. В качестве задачи, в которой востребовано такое свойство систем,
рассматривается задача распознавания изображений в целях идентификации личности
человека.
В результате работ, проведенных на этапе, определены текущее положение дел в
предметных областях, выбраны направления дальнейших исследований.
Степень внедрения  передан Заказчику аналитический обзор методов и технологий
автоматизированного распознавания личности по фотоизображениям лица, обзор
технологий распределенных систем, а также технологий «облачных вычислений»,
рассматриваемых
как
новый
виток
развития
вычислительных систем.
4
распределенных
информационно-
Содержание
Введение .........................................................................................................................................6
1 Анализ научно-технической литературы, нормативно-технической документации и
других материалов, по теме проекта ...........................................................................................6
1.1 Методы отслеживания положения головы человека на видеокадрах: состояние
проблемы и пути решения ........................................................................................................8
1.1.1
Применение методов отслеживания головы человека на видеокадрах ............8
1.1.2
Развитие методов отслеживания головы человека на видеокадрах ................14
1.1.3
Факторы, усложняющие трекинг головы человека ..........................................18
1.1.4
Классификация методов отслеживания головы человека ................................20
1.1.5
Методы трекинга головы, основанные на ее детектировании .........................23
1.1.6
Методы трекинга головы, основанные на цветовой информации ..................25
1.1.7
Методы трекинга головы, основанные на отслеживании «особых» точек
лица
25
1.1.8
Методы трекинга головы, основанные на построении ее геометрических
текстурных моделей ............................................................................................................26
1.1.9
Экспериментальное оценивание систем отслеживания головы ......................30
1.1.10 Обоснование выбора метода трекинга головы ..................................................35
1.1.11 Выводы ..................................................................................................................37
1.2 Методы распознавания цифровых изображений человека .......................................38
1.2.1
Поиск фотопортретов заданного человека в базе данных ...............................39
1.2.2
Подходы к распознаванию по фотопортретам ..................................................40
1.2.3
Антропометрический метод распознавания ......................................................41
1.2.4
Метод главных компонент ..................................................................................43
1.2.5
Статистическое распознавание изображений ...................................................45
1.2.6
Сопоставление изображения с эталоном ...........................................................47
1.2.7
Распознавание с помощью нейронных сетей ....................................................47
1.2.8
Анализ оптических потоков изображений ........................................................57
1.2.9
Распознавание путём эластичного сопоставления графов...............................58
1.2.10 Применение фильтров Габора для распознавания............................................59
1.2.11 Классификация на основе значений признаков ................................................61
1.2.12 Распознавание на основе соответствий..............................................................63
2 Выбор и обоснование принятого направления исследований и способов решения
поставленных задач .....................................................................................................................65
2.1 Технологии построения распределенных систем.......................................................65
2.1.1
1.3.1. RPC ..............................................................................................................66
2.1.2
1.3.2. Java RMI ......................................................................................................68
2.1.3
1.3.3. COM .............................................................................................................70
2.1.4
1.3.4. CORBA ........................................................................................................73
2.2 «Облачные вычисления» как новая парадигма построения распределенных ИВС 75
2.2.1
Облачные вычисления и сервис-ориентированная архитектура .....................77
2.2.2
Проблема управления ресурсами в сервис-ориентированных системах ........78
2.2.3
Иерархическое представление ресурсов и сервисов ........................................79
2.2.4
Стеки продуктов для построения «частных вычислительных облаков» .......82
3 Проведение патентных исследований по ГОСТ Р 15.011-96 ..........................................85
3.1 Результаты поиска патентов в области балансировки нагрузки ...............................85
3.2 Результаты поиска патентов в области распознавания изображений ......................95
4 Выбор математического аппарата и формализация задач синтеза архитектур сервисориентированных информационно-вычислительных систем ...............................................100
4.1 Термины компьютерной графики и их роль при разработке методов трекинга
головы .....................................................................................................................................100
4.2 Моделирование головы человека...............................................................................112
5
4.3 Метод отслеживания головы человека ......................................................................118
4.3.1
Инициализация модели головы ........................................................................118
4.3.2
Инверсно-композиционный алгоритм регистрации изображений................125
4.3.3
Модель движения твердого тела c шестью степенями свободы и
использованием перспективной проекции......................................................................138
4.3.4
Построение карт уверенности ...........................................................................141
4.3.5
Алгоритмы трекинга головы .............................................................................145
4.4 Имитационное моделирование распределенных систем обработки изображения
148
4.4.1
Модели конфликтных ситуаций при распределении нагрузки .....................152
4.4.2
Моделирование алгоритма подстройки интенсивностей потоков данных ..155
4.5 Выводы .........................................................................................................................159
5 Формулировка требований к программному продукту .................................................160
6 Выбор средств реализации ...............................................................................................162
6.1.1
Термины, используемые при описании программной архитектуры .............162
6.1.2
Заинтересованные лица, миссия, окружение и качества программной
системы 165
6.1.3
Идентификация точек зрения на архитектуру системы .................................167
6.1.4
Логический вид ..................................................................................................168
6.1.5
Вид процесса .......................................................................................................181
6.1.6
Вид разработки ...................................................................................................182
Заключение.................................................................................................................................183
Список использованных источников.......................................................................................184
К разделу 1.1, 4.1-4.3 и 6 ...........................................................................................................184
К разделу 1.2 ..............................................................................................................................196
К разделу 2.1 ..............................................................................................................................199
К разделу 2.2 ..............................................................................................................................201
Кразделу 4.4 ...............................................................................................................................201
Введение
В настоящее время наблюдается стремительное развитие исследований по
заявленной теме. Эта тенденция поддерживается развитием технологий вычислительных
сетей, разработкой технологий и программных средств для обеспечения доступа к
разнородным информационно-вычислительным ресурсам и их виртуализации. Для
достижения
высокой
производительности
современные
вычислительные
средства
строятся на принципах параллельной обработки информации на всех уровнях
архитектуры:
от
микропроцессорных
функциональных
блоков
микропроцессоров
устройств,
матричных
процессоров
до
и
многоядерных
многомашинных
вычислительных комплексов. В тоже время методологическая база распределенных и
параллельных
вычислений
не
позволяет
в
полной
мере
использовать
высокопроизводительные системы для решения наукоемких задач. Примером подобной
наукоемкой задачи является создание крупномасштабных систем обработки изображений
для видеонаблюдения и идентификации личности. электронных обучающих систем и
систем электронной коммерции.
6
На данном этапе выполнения проекта основные усилия исполнителей были
направлены
на анализ научно-технической литературы, нормативно-технической
документации и других материалов, по теме НИР. В разделе 1, посвященном этому
анализу, рассмотрено состояние проблемы отслеживания головы человека (англ. head
tracking, трекинг головы) как решения последовательности задач определения положения
головы на видеокадрах, независимо от того, движется голова или камера. Трекинг головы
на видеокадрах применяется или обладает потенциалом применения при создании систем
трехмерной компьютерной анимации, разработке интерфейсов взаимодействия человеккомпьютер, проведении видеоконференций в сети Интернет, стабилизации изображения
лица с целью облегчения распознавания эмоций либо персональной идентификации и др.
В этом же разделе рассмотрены пути решения проблемы трекинга головы человека.
Вторая часть раздела 1 посвящена анализу методов распознавания цифровых изображений
человека. Заметим, что многие направления науки, техники и производства в
значительной степени ориентируются на развитие систем, в которых информация носит
характер поля (изображения и, в частности, цифровых изображений лица человека ). При
обработке такой информации возникает ряд сложных научных, технических и
технологических проблем.
Из-за
рассредоточенного
ориентированных
зарождения
исходной
информационно-вычислительных
информации
системах
в
(ИВС)
сервисобработки
изображений неизбежно возникают проблемы доставки данных к месту обработки,
проведения
различных
стадий
обработки,
включая
высокоуровневые
методы
тематического анализа изображений и распознавания образов, с последующей выдачей
управляющих воздействий (если система находится в контуре управления) и\или сигналов
для операторов. При решении подобных задач, в зависимости от совокупности
характеристик вычислительной и коммуникационной компонент создаваемых систем,
следует
использовать
различные
алгоритмы
обработки
и
методы
организации
вычислительных процессов. Выбору и обоснованию принятого направления исследований
и способов решения названных выше задач посвящен 2-й раздел настоящего отчета. В
данном разделе рассмотрены технологии построения распределенных систем и
обосновано использование и развитие «облачных вычислений» как новой парадигма
построения распределенных ИВС.
В последних разделах отчета рассмотрены последовательно результаты проведения
патентных исследований по ГОСТ Р 15.011-96 (раздел 3), выбор математического
аппарата
и
формализация
задач
синтеза
7
архитектур
сервис-ориентированных
информационно-вычислительных систем (4-й раздел), формулировка требований к
программному продукту (раздел 5) и выбор средств реализации (раздел 6).
1
Анализ научно-технической литературы, нормативно-технической
документации и других материалов, по теме проекта
1.1
Методы отслеживания положения головы человека на видеокадрах: состояние
проблемы и пути решения
В данной главе систематизируются результаты предыдущих исследований по
решению проблемы отслеживания головы человека на видеокадрах. Представлены
основные области применения. Изложена история развития методов трекинга головы.
Перечислены основные трудности, возникающие перед исследователем при разработке
алгоритмов и ПС для решения задачи отслеживания головы. Даны рекомендации по
выбору метода трекинга головы с целью его реализации в ПС. Сформулированы задачи
исследования диссертационной работы. Основные результаты, полученные в первой
главе, опубликованы в [16; 18; 19].
1.1.1 Применение методов отслеживания головы человека на видеокадрах
Видеоизображение головы человека, а особенно его лица, содержит важную
информацию о человеке, сферах его бытия и деятельности. В этой связи изображение
лица (головы) человека является интересным объектом анализа на видеокадрах.
Отслеживание головы человека на видеокадрах привлекает внимание многих
исследователей в течение последних тридцати лет. Несмотря на обилие публикаций по
данной теме, проблема устойчивого отслеживания головы сохраняет свою актуальность
из-за серьезных трудностей, таких как сложность формы головы и ее движения,
неравномерность освещения и т.п.
Отслеживание объекта на видеокадрах – это решение задачи последовательного
определения положения объекта, независимо от того, движется объект или камера [87, p.
3]. Целью отслеживания головы человека является последовательное определение
положения головы по ее изображению на видеопоследовательности [70, p. 306].
Рассмотрим кратко области, в которых возникают подобные задачи.
Телекоммуникации.
распространенными
В
настоящее
видеоконференции.
время
Чтобы
в
сети
Интернет
реализовать
становятся
автоматическое
распознавание событий, связанных с формальными и неформальными встречами людей,
необходимо понимать, где находятся участники беседы, и извлекать информацию об их
поведении [130, p. 1]. При анализе визуальных сигналов используются алгоритмы
8
компьютерного зрения, в том числе трекинга головы. Кодирование движений головы и
выражения лица осуществляется по известным стандартам, таким как MPEG-41, и
позволяет получать для телекоммуникаций и телеконференций потоки данных,
нетребовательные к пропускной способности сети [49, p. 776].
Компьютерная графика. Трекинг головы может применяться для управления
аватаром [118, p. 1039]. Аватар – анимированное изображение, используемое для
персонализации пользователя, и обычно не являющееся его настоящей фотографией. В
качестве примера (рис. 1.1, а) можно привести приложение Logitech Video Effects
компании Logitech2 или приложение ManyCam3, в которых пользователь управляет своим
аватаром движением головы.
Отслеживание головы человека может использоваться для построения трехмерных
моделей путем склейки фрагментов изображений, полученных от стереокамеры [97, p. 11].
Трекинг положения головы играет роль первого шага в процессе построения трехмерной
модели путем регистрации (сопоставления) и определения положения отснятых частей
модели друг относительно друга.
Системы видеонаблюдения. Отслеживание головы человека может применяться
для определения подозрительных действий или нежелательных событий [41, p. 262; 132, p.
2]. Видеонаблюдение за индивидуумом или группой людей на расстоянии с помощью
электронного оборудования применяется правительственными и другими организациями
с целью поддержания социального контроля, предотвращения и расследования
криминальной активности.
The MPEG Home Page [Электронный ресурс] – Электрон. дан. – Режим доступа:
http://www.chiariglione.org/mpeg/, свободный – Загл. с экрана. – Текст на экране англ.
2
My Webcam [Электронный ресурс] – Электрон. дан. – 2006. – Режим доступа:
http://www.youtube.com/watch?v=o32oHGTOzTE, свободный – Загл. с экрана. – Текст на экране англ.
3
ManyCam [Электронный ресурс] – Электрон. дан. – 2006. – Режим доступа: http://manycam.com, свободный
– Загл. с экрана. – Текст на экране англ.
1
9
Рисунок 1.1 – а) Аватар в приложении Logitech Video Effects. б) Система с тремя
LCD мониторами, используемая в [39]. в) Стабилизированное изображение лица в [54]. г)
Отслеживание лица водителя для задачи его ассистирования в [108]
Распознавание речи. Отслеживание «особых» точек (англ. feature points) лица
человека играет существенную роль при создании алгоритмов распознавания речи путем
анализа движений губ [49, p. 776].
Устройства фото- и видеосъемки. Трекинг находит применение в фокусировке и
стабилизации устройств съемки [111, p. 335], таких как фотокамера. Цифровая
стабилизация изображения – это технология, применяемая в видеосъемочной аппаратуре,
позволяющая (помимо компенсации движения камеры) полностью или частично
компенсировать движение одного из объектов в кадре и улучшить качество изображения.
Автоматическая фокусировка – технология, позволяющая удерживать объект в поле
зрения камеры при их взаимном перемещении. Например, в веб-камере Logitech
QuickCam Fusion4 реализована возможность автоматического наведения фокуса на лицо
человека и подстройки фокуса при перемещении головы.
Робототехника. Отслеживание головы человека применяется для обеспечения
взаимодействия робота с окружающими людьми [87, p. 1; 91], при создании ассистентов
роботов и их автономной навигации [36, p. 1].
Logitech [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа: http://logitech.com/, свободный –
Загл. с экрана. – Текст на экране англ.
4
10
Поиск информации. В системах поиска информации отслеживание головы
применяется для выборки из базы мультимедиа данных [132, p. 2]. Видеоданные в отличие
от текстовой информации сложно автоматически индексировать по содержимому, и
трекинг может способствовать тому, что компьютер самостоятельно примет решение о
характере действий человека на видеокадрах.
Медицина. Трекинг головы имеет потенциал использования в медицине для
получения панорамных изображений [73, p. 1025], для психологического анализа
выражения лица [35].
«Направление головы человека может рассказать о его намерениях, что может
использоваться для анализа действий человека. Если робот-ассистент или инвалидная
коляска сможет управляться движениями головы, это будет способствовать снижению
стресса пациента» [79, p. 79].
Человеко-машинное взаимодействие (ЧМВ). Одним из наиболее перспективных
областей применения трекинга головы является создание новых способов ввода
информации
в
компьютер.
Перцептуальные
(англ.
perception,
восприятие)
пользовательские интерфейсы обеспечат компьютер аналогами человеческих чувств,
например, воспроизведением звуков и речи, восприятием прикосновений, а в нашем
случае способностью видеть [50, p. 15].
Программы, в которых управление основано на компьютерном зрении, пока
встречаются сравнительно редко, несмотря на возможности: «хэндс фри» управление
курсором мыши, управление в компьютерных играх и навигация в трехмерных мирах [71,
p. 931]. «В настоящее время с ростом уровня использования компьютеров во всех сферах
человеческой деятельности все более остро встает задача построения как можно более
удобных интерфейсов человек-компьютер. Одним из основных направлений в этой
области является создание естественного человеко-машинного интерфейса, позволяющего
пользователю вводить информацию в компьютер наиболее привычными и естественными
для него способами: с помощью речи, жестов, мимики и т. п.» [5, с. 455].
Многие исследователи предложили управлять курсором и осуществлять клики
мышью путем движений головы, глаз, лица. Такие системы требуют надежной и быстрой
стратегии трекинга лица. Некоторые из существующих решений еще не достигли
необходимого уровня устойчивости и точности [69, p. 30].
Одним из подходов является распознавание направления взгляда пользователя для
указания положения курсора на экране. Однако, согласно ряду исследований,
существенная часть движений глаз совершается человеком неосознанно, что делает
привязку курсора к направлению взгляда нецелесообразной [5, с. 455]. Другой подход
11
основан на том, что, в отличие от глаз, движения головы лучше поддаются сознательному
контролю со стороны пользователя, что позволяет опираться на них при управлении
компьютером [5, с. 455]. В качестве примера такой системы приведем программу hMouse
[69], которая использует отслеживание углов наклона головы для позиционирования
курсора на экране.
Портативные
компьютеры,
например
ноутбуки,
зачастую
страдают
от
недостаточно удобных возможностей позиционирования курсора мыши. Управление
программами на основе трекинга может стать заменой неудобному трекболу, который
сейчас используется во многих ноутбуках [71, p. 931].
Среди пользователей компьютера есть люди с нарушением опорно-двигательного
аппарата, пожилые люди, неспособные справиться с клавиатурой и мышью [5, p. 455; 69,
p. 30]. Перцептуальные интерфейсы могут помочь таким пользователям управлять
курсором движением головы [71, p. 931].
С удешевлением LCD мониторов появляется все большее число пользователей,
имеющих несколько мониторов на одном компьютере (рис. 1.1, б). Это доставляет
определенные неудобства в работе, так как требует приложения больших усилий для
перемещения курсора мыши, перетаскивания объектов с одного монитора на другой.
Актуальным представляется автоматическое отслеживание головы пользователя и
перемещение курсора мыши с одного монитора на другой после определения направления
взгляда пользователя, как например это реализовано в программе MagicPointing [39, p.
1188].
В интерактивных средах, таких как автоматизированные точки продажи или
приборная панель управления самолетом, отслеживание направления взгляда может
использоваться для прямого указания, когда руки и/или ноги реализуют другое действие,
либо как дополнительная информация, когда действие требует многих параметров ввода
[97, p. 11].
Стабилизация изображения лица. Для стабилизации изображения лица человека
(рис. 1.1, в) могут применяться, например, методы трекинга головы, основанные на
трехмерных геометрических моделях головы. Такие методы теоретически способны
генерировать стабилизированное изображение лица, инвариантное к поворотам головы
[56, p. 508]. Это может способствовать более устойчивой работе алгоритмов анализа
эмоций человека [103] и идентификации человека по изображению лица [66].
Методы распознавания эмоций могут классифицировать изображения лица
человека как принадлежащие к одной из категорий обычных эмоций, таких как радость,
грусть, злость и т.д. Некоторые из них способны выражать жесты лица в виде единиц
12
действия системы FACS [55, p. 175] – описания движений мускулов лица и языка,
основанного на анализе анатомического строения лица.
К ограничениям практически всех методов автоматического распознавания эмоций
относится то, что они предназначены для специальных условий съемки, которые
устраняют факторы, усложняющие анализ. Автоматическое распознавание эмоций
человека по изображению лица в динамической обстановке является сложной проблемой,
обусловленной «жестким» движением головы (движением головы в целом как твердого
тела), нефронтальным положением головы по отношению к камере, перекрыванием
частей лица из-за движения головы, ношения очков, разговора, невыразительной мимики
лица [40, p. 78].
В качестве примера (рис. 1.1, г) приведем задачу анализа мимики лица водителя
автомобиля для оценки его эмоционального состояния с целью создания на этой основе
интеллектуального транспортного средства [108]. Нежесткое движение головы водителя
(движения рта, глаз-бровей, щек) может многое сказать о его ментальном состоянии,
например, является ли водитель агрессивным, усталым или расслабленным.
Современные системы идентификации человека по изображению его лица в базе
данных [66] все еще зависят от ориентации лица по отношению к камере. Например,
система Visionics может распознавать людей при углах наклона не более 20 градусов [53,
p. 998]. Полученное на выходе трекера головы «стабилизированное» фронтальное
изображение лица может помочь в улучшении такой системы. Также трекинг головы
можно применить для определения видеокадра, на котором лицо выглядит наиболее
фронтально, а затем этот кадр подавать на вход системы идентификации лица [64, p. 322].
Компьютерная анимация. Трекинг головы может использоваться для создания
входного модуля для системы анимации лица [53, p. 998]. В настоящее время интерес к
исследованиям в области анимации лица подогревается появлением огромного числа
виртуальных персонажей в фильмах [61, p. 1]. При создании компьютерных эффектов для
художественных фильмов применяется методика, позволяющая оживлять анимационные
персонажи путем движения людей-актеров в реальном масштабе времени. Эта методика
имеет название (дословно) «анимация, движимая действиями», action-driven animation. В
данном подходе на некоторые части тела актера (лицо, руки) прикрепляются датчики, с
помощью которых определяется и отслеживается положение в пространстве неких
контрольных точек [35]. Процесс создания анимации лица требует интенсивного
вмешательства человека и кропотливой настройки параметров. Актуальной проблемой в
данной области является внедрение неинвазивных методов отслеживания головы актера,
13
то есть без прикрепления датчиков, а лишь путем анализа видеокадров, поступающих с
видеокамеры.
1.1.2 Развитие методов отслеживания головы человека на видеокадрах
Важным событием в истории развития методов визуального трекинга стало
создание в 1981 г. Брюсом Д. Лукасом и Такео Канаде алгоритма сопоставления (или
регистрации) двух изображений [89]. Этот алгоритм по классификации, предложенной
Саймоном Бэкером и Иэном Мэтьюзом [45], также можно назвать прямо-аддитивным
алгоритмом (англ. forwards-additive algorithm). В данном методе используется градиент
интенсивности пикселей изображения, а параметры наилучшего совпадения изображений
определяются алгоритмом Ньютона. На каждой итерации алгоритма регистрации первое
из изображений деформируется с использованием параметров, найденных на предыдущей
итерации, и вычисляется значение оптимизационного критерия как взвешенная сумма
квадратов разностей соответствующих пикселей изображений.
Метод [89] на момент его создания являлся наиболее быстродействующим, что
объяснялось анализом гораздо меньшего числа потенциальных вариантов, чем в
существовавших на тот момент аналогах. Лукас и Канаде показали, каким образом можно
обобщить его на случаи перемещения, вращения, масштабирования и других моделей
движения. Алгоритм [89] стал фактическим стандартом для использования во многих
задачах компьютерного зрения, в том числе и в задаче отслеживания лица и головы
человека [109]. Его варианты используются практически во всех схемах сжатия
изображений с компенсацией движения, таких как MPEG или H.263 [119, p. 1]. В
последующие годы появились многочисленные модификации алгоритма [45; 80; 105; 120]
и аналогичные ему методы [73; 116]. Основные направления разработок были связаны с
улучшением устойчивости [45] и вычислительной производительности алгоритма,
например за счет улучшения скорости деформации изображений. В качестве интересного
примера можно привести попытку реализовать итеративный процесс регистрации
изображений с помощью генетического алгоритма [120].
Ранние подходы к отслеживанию головы человека упрощенно предполагали, что
голова не может испытывать сильных отклонений вне плоскости видеокадра, поэтому их
можно назвать двумерными (2D) методами. Такие методы опирались на задание и
отслеживание характерных точек лица [59; 131], устойчивых градиентных краев, контуров
[78] или на информацию о цвете изображения [47]. Они были вычислительно эффективны
и сравнительно просты в реализации.
14
Одним из ранних подходов явилось детектирование устойчивых градиентных краев
(англ. edges). Отслеживание краев является естественно стабильным к изменениям
освещенности, даже для отсвечивающих материалов, что не всегда верно для методов,
использующих внутренние пиксели проекции объекта [87].
Информация о статистическом распределении цветовой информации изображения
также нашла применение в алгоритмах трекинга лиц. Так в 1998 г. Гарри Брадски создал
алгоритм CAMSHIFT [50], который на основе цветовой информации был способен
отслеживать лица с четырьмя степенями свободы движения.
Направление, основанное на построении геометрических текстурных моделей
головы человека, также постепенно эволюционировало [58] от двухмерных подходов
(например, двумерный эллипс [47], прямоугольная плоская модель [73]) до полностью
трехмерных методов (например, эллипсоидальная модель головы [46; 49; 130]).
Приемлемую точность обеспечивает цилиндрическая модель головы [56],
предложенная Марко Ла Каскиа и другими исследователями в 1998 г. Развивает данную
идею работа [54], где моделируется изменение условий освещенности. Заслугой этих
исследователей является также то, что они подготовили базу данных видеоизображений5,
которые можно применять в экспериментальных исследованиях по отслеживанию головы
человека.
Наиболее распространенной моделью головы в проанализированных работах
является трехмерная цилиндрическая модель головы (рис. 1.2, а), что можно объяснить
сравнительной простотой реализации данного подхода и обеспечиваемой им хорошей
точности. Идею использования в качестве модели головы цилиндра, покрытого текстурой,
развивают работы [53; 65; 94; 103; 109].
Разработка методов реалистичной анимации лица [61] человека берет свое начало
еще с основополагающей работы Ф. Парка [101] в 1972 г. С развитием ЭВМ
осуществляются попытки создания модели лица, пригодной для анимации. К таким
моделям относится трехмерная сеточная модель Candide, которая была создана М.
Ридфалком в 1987 г. [115]. Эта работа была вдохновлена попыткой кодировать
видеоизображение лица человека путем отслеживания лица на видеокадре и его анимации
[37]. Впоследствии модель Candide несколько раз модифицировалась, для достижения
более реалистичного результата. Последняя версия этой модели называется Candide-3
[34]. Она состоит из трехмерной проволочной сетки из 113 вершин и 184 треугольников.
Модель Candide и ее модификации широко распространены из-за своей простоты.
Head Tracking Video [Электронный ресурс] – Электрон. дан. – Image and Video Computing Group, 1999. –
Режим доступа: http://www.cs.bu.edu/groups/ivc/HeadTracking, свободный. – Загл. с экрана. – Текст на экране
англ.
5
15
Рисунок 1.2 – а) Трекинг с использованием цилиндрической модели головы [109]. б)
Простые «характеристики» Хаара в детекторе Виола-Джонса [124]. в) Иллюстрация
разбиения задачи распознавания головы на ряд более простых подзадач в зависимости от
вида [112]
В 1998 г. Дж. Эдвардсом предложена деформируемая модель лица [62] под
названием Active Appearance Model (AAM), позволяющая отслеживать мимику лица
пользователя и пригодная для ее анимации. Например, модель AAM успешно
используется в работе [108] для анализа мимики лица водителя автомобиля. Развитию
методов трекинга, основанных на этой модели послужили работы [92; 93; 104; 107].
Развивается также и направление трекинга лица и головы человека с
использованием методов распознавания образов. Ранние подходы использовали метод
главных компонент (англ. Principal Component Analysis, PCA) для создания моделей
визуальных объектов, основанных на собственных пространствах (англ. eigenspaces) [48;
96] или метод опорных векторов (англ. Support Vector Machines, SVM) [42; 127].
Использовались и различные топологии нейронных сетей, такие как сети вейвлетов
Габора [85; 86; 110; 128] или ассоциативная память [75]. Сети вейвлетов – многослойные
нейронные сети, в которых вейвлеты играют роль активационных функций, впервые были
предложены Зангом и Бенвенистом в 1992 г. [135].
Развитие группы методов трекинга головы человека, основанных на распознавании
образов, базируется на алгоритме [124], разработанном в 2000 г. П. Виолой и М. Джонсом.
Этот алгоритм основан на представлении изображения в специальном «интегральном
виде» и построении каскада из «слабых» классификаторов (рис. 1.2, б), так называемых
характеристик Хаара (англ. Haar-like features). Данная система предлагала значительный
16
прирост производительности по отношению к лучшим аналогам, что позволило создать
реализацию, способную обрабатывать видеокадры в реальном времени на среднем
компьютере и даже на мобильных устройствах. Возможна тренировка каскада на
распознавание объекта с незначительной вариацией углов обзора, однако этот алгоритм в
большой степени является двумерным алгоритмом.
Предложенный Виолой и Джонсом детектор лица [124] стимулировал большой
интерес к разработке более общих систем [68] и подтолкнул разработку детекторов
головы независимо от направления съемки (мультивидовых детекторов, multi-view face
detectors [67; 76; 112; 113]). В алгоритмах этого направления классификаторы
формируются в древовидную структуру таким образом, чтобы одновременно проводить
классификацию (объект/не объект), и определять ориентацию объекта в пространстве
(рис. 1.2, в).
На практике бывает сложно реализовать устойчиво работающий алгоритм
отслеживания головы, использующий только один подход к этой проблеме. Часто
алгоритмы комплексируются и объединяются в один более устойчивый алгоритм [42].
Так, недостатком методов трекинга с помощью геометрических моделей головы
является их неспособность инициализировать себя; для их использования нужно задать
первоначальное положение модели головы. В ранних работах инициализация системы
производилась в основном вручную. С развитием алгоритмов распознавания образов для
инициализации моделей головы начинают применяться алгоритмы детектирования лица
на видеокадре. Например, в системе hMouse [69] детектирование применяется только для
инициализации модели головы, а затем производится отслеживание головы с помощью
метода [50].
С
другой
стороны,
алгоритмы
детектирования
лица
(головы)
обладают
сравнительно низкой точностью отслеживания, тогда как методы, использующие
геометрические модели, обеспечивают высокую точность. Комбинирование данных от
различных алгоритмов на основе методов теории вероятностей и математической
статистики, таких как рекурсивный оптимальный фильтр Калмана или particle filter
(последовательный метод Монте-Карло) часто позволяет добиться как более высокой
точности, так и лучшей устойчивости метода.
С момента появления первых прототипов веб-камер в 1991 г. прошло не так много
времени, но они уже превратились во вполне сформировавшийся, отдельный класс
устройств. В настоящее время распространены как дешевые камеры, подключаемые через
интерфейс USB и устанавливаемые на мониторе, так и веб-камеры, встраиваемые в
мониторы и ноутбуки. Это подтолкнуло разработку алгоритмов человеко-машинного
17
взаимодействия, позволяющих управлять компьютером путем анализа видеоизображения
пользователя. Так, активно исследуется проблема управления курсором мыши путем
отслеживания носа пользователя [71], либо его головы [5; 69]. М. Эшдаун [39] обратил
внимание на сложности в управлении приложениями при наличии нескольких мониторов
и предложил использовать трекинг головы человека для переключения между
мониторами.
Во многих работах, посвященных отслеживанию головы человека, встречаются
общие, низкоуровневые, базовые моменты, без реализации которых невозможна
программная реализация алгоритма визуального трекинга. К таким элементам относится
манипулирование
изображениями,
организация
структур
памяти,
захват
видеоизображения с камеры. В результате многие исследователи вынуждены были
выполнять одни и те же типовые работы. Однако, как и в любой другой области знания, в
компьютерном зрении со временем появляются свои стандарты. Так, де-факто стандартом
стала выпущенная в 2006 г. открытая библиотека Intel OpenCV 1.06. Ее значимый вклад
заключается в наличии множества функций и алгоритмов, которые можно использовать
как базу для создания новых алгоритмов. В библиотеку OpenCV включены некоторые
алгоритмы отслеживания объектов, успешно зарекомендовавшие себя. К таким
алгоритмам относится CAMSHIFT [50] и детектор Виола-Джонса [124]. В настоящее
время библиотека OpenCV уже не имеет отношения к компании Intel, свой вклад в ее
разработку внесли исследователи из многих стран мира.
1.1.3 Факторы, усложняющие трекинг головы человека
Отслеживание
головы
человека
является
нетривиальной
задачей.
Кратко
рассмотрим факторы, усложняющие решение данной задачи.
Качество видео. В настоящее время популярны дешевые веб-камеры, которые
обеспечивают видеоизображение сравнительно низкого разрешения и низкого качества, с
наличием шума, волнообразного изменения освещенности, наличием квантизации [70].
Неравномерная или низкая частота кадров, поступающих с камеры, также является
фактором, усложняющим отслеживание головы (изображение головы может претерпевать
значительные изменения между кадрами).
Сложность отделения визуального объекта от фона. На практике сложно точно
определить
границы
визуального
объекта
(проекции
головы
на
видеокадре)
автоматически. Поэтому часто наряду с пикселями проекции головы анализу подвергается
и часть окружающих пикселей фона, что вносит дополнительную ошибку в расчеты.
OpenCV [Электронный ресурс] – Электрон. дан. – Режим доступа: http://opencv.willowgarage.com,
свободный. – Загл. с экрана. – Текст на экране англ.
6
18
Потеря информации при проецировании. Так как голова человека является
объемным трехмерным телом сложной формы, при проецировании ее на плоскость
видеокадра часть информации неизбежно оказывается утерянной [36]. Например, при
повороте головы нос может скрыть часть щеки (англ. self occlusion, «самоперекрытие»).
По этой причине в алгоритмах, основанных на построении модели головы, учитывают
видимость частей головы в данный момент времени (например, для этих целей
используется буфер глубины в библиотеке компьютерной графики OpenGL7). Также
вводят
специальное
изображение-карту
уверенности
(англ.
confidence
map),
интенсивность (цвет) фрагментов которой указывает степень информативности для
каждого спроецированного фрагмента головы [109].
Сложность формы и движения объекта. Голова как твердое тело способна
перемещаться в трехмерном пространстве с шестью степенями свободы движения, и
может поворачиваться как в плоскости изображения, так и вне плоскости изображения.
Также возможно, что камера перемещается относительно головы, то есть меняется точка
наблюдения [125].
В общем же случае, голова является деформируемым телом. Деформации
возникают за счет изменения мимики лица, движений челюсти. Поэтому существует два
вида моделей головы: жесткие [46; 54; 109] и деформируемые [57; 60; 117].
Соответственно
и движение разделяют на жесткое (англ. rigid motion), связанное с
перемещением и вращением в пространстве тела целиком, и нежесткое (англ. non-rigid
motion), обусловленное смещением деформируемых частей лица. Сложность формы
головы приводит к усложнению ее моделей, а иногда и к персонализации модели, т. е.
необходимости подгонки ее геометрической формы под определенного пользователя.
Выбросы. Алгоритмы компьютерного зрения, и в частности алгоритмы трекинга
головы, чувствительны к ошибкам. Когда эти ошибки характеризуются хорошо известным
распределением, можно применить
методы математической
статистики
для их
компенсации. Однако иногда возникают выбросы (англ. outliers). Выбросы могут
возникать из-за неверных предположений, численных ошибок, недостатков эвристических
закономерностей. Известно, что даже небольшое число выбросов может существенно
ухудшить результат работы алгоритма [100; 114].
Изменение освещенности. Освещенность сцены и объекта нестационарна во
времени и в пространстве. При наличии одного источника освещения, голова будет
неминуемо освещена лучше с одной стороны и хуже с другой. Поэтому в ряде подходов к
OpenGL [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа: http://opengl.org, свободный. –
Загл. с экрана. – Текст на экране англ.
7
19
трекингу головы вводятся дополнительные методики для учета освещенности [73].
Например, в [109] используют цилиндрическую модель головы, покрытую текстурой, и
при определении положения головы на каждом кадре осуществляют обновление текстуры,
что делает метод более устойчивым, так как изменениями освещенности между двумя
последовательными кадрами можно пренебречь. Еще одной возможной мерой является
ввод условий освещенности в выражение для поиска параметров перемещения модели
головы [54].
Требования к производительности. Очевидно, что учет всего многообразия
условий съемки может привести к значительному росту необходимых вычислительных
ресурсов компьютера [132]. Многие же задачи требуют работы в реальном масштабе
времени (не менее 10 кадров/с) и умеренного (около 20-30%) потребления ресурсов
центрального процессора (ЦП), так как компьютер должен выполнять и другие задачи.
Например, для интерфейса ЧМВ, управляющего курсором мыши в компьютерной игре
важно, чтобы ресурсов ЦП хватило и для работы игровой программы.
Итак,
для
успешного
отслеживания
головы
человека
существует
много
препятствий. На практике пока не создан общий метод, который бы успешно преодолевал
все
из
перечисленных
факторов.
Поэтому
исследователям
приходится
делать
определенные предположения о характере допущений, при которых предлагаемый метод
способен работать устойчиво. Отметим, что устойчивость – необходимое условие
работоспособности любого метода (системы). Однако для обозначенных выше областей
применения
важно
дополнительное
свойство
робастности.
Говорят,
что
метод
отслеживания головы человека является робастным, если он способен работать заданный
(требуемый) период времени без сбоев, справляясь с возможными вариациями, иногда
непредсказуемыми, внешних условий с минимальной потерей функциональности8, т. е.
оценивая параметры перемещения головы человека с заданной точностью в заданный
период времени.
1.1.4 Классификация методов отслеживания головы человека
Классификацию методов отслеживания головы человека на видеокадрах проведем
по следующим признакам.
По типу необходимого вмешательства извне выделим [79; 87] методы, требующие
нанесения определенных маркеров на голову человека и методы, не требующие наличия
маркеров.
Robustness [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа:
http://en.wikipedia.org/wiki/Robust, свободный. – Загл. с экрана. – Текст на экране англ.
8
20
В качестве маркеров могут выступать инфракрасные сенсоры, при этом для съемки
используется инфракрасная камера. Известно, что таким образом отслеживать голову
можно c помощью устройства Wii Remote от приставки видеоигр Nintendo Wii9. В целом
подобные методы надежны и точны, однако использование маркеров неудобно и
ограничивает движения.
Методы, не использующие маркеры, могут обходиться обычной бытовой камерой,
и также не приводят к наличию дополнительного стресса, так как пользователь всего
лишь сидит перед камерой в естественном положении.
По типу используемой камеры выделим методы, работающие с камерой
инфракрасного диапазона (IR-камера) [35] и методы, работающие с камерой видимого
диапазона. Использование инфракрасной камеры в настоящее время не находит широкого
применения.
По количеству используемых камер можно выделить (рис. 1.3) методы
отслеживания головы, работающие: с одной (монокулярные), с двумя (стерео) [77; 79; 9597], с несколькими камерами (поликулярные) [34; 39; 53, 88; 126].
Рисунок 1.3 – Монокулярная веб-камера Webcam Bright Cam 100K, стереокамера
Bumblebee и поликулярная система камер из работы [52]
Монокулярные
методы
более
популярны,
что
обусловлено
широким
распространением недорогих веб-камер. Однако для конкретной камеры при её
практическом
применении,
как
правило,
неизвестны
калибровочные
параметры
Head Tracking for Desktop VR Displays using the Wii Remote [Электронный ресурс] – Электрон. дан. – 2010.
– Режим доступа: http://johnnylee.net/projects/wii/, свободный. – Загл. с экрана. – Текст на экране англ.
9
21
(например, фокальная длина объектива, матрица проецирования и пр.), поэтому
приходится определять их в процессе специальной процедуры калибровки камеры.
Стереокамеры гораздо менее распространены, чем монокулярные и применяются
главным образом в специализированных методах, не предназначенных для широкого
круга пользователей.
Поликулярные системы обычно являются громоздкими, их устанавливают в
специальном помещении (термин smart room, умная комната [126]) таким образом, чтобы
охватывать наблюдаемый объект со всех сторон. Эти системы предоставляют наиболее
широкие возможности по реализации алгоритмов отслеживания.
По скорости обработки видеокадров выделим два класса методов: работающие в
реальном времени (онлайн) и работающие в режиме постобработки (оффлайн). Наиболее
востребованными очевидно являются методы, работающие в реальном масштабе времени
(свыше 10 кадров/сек).
По
количеству
потоков
вычисления
выделим
методы:
последовательные
(однопоточные) и параллельные (многопоточные).
Например, для реализации системы отслеживания головы человека [94] и ее
параллельного исполнения на многоядерном процессоре используется библиотека
OpenMP10. Еще одна возможность для распараллеливания алгоритмов трекинга
предоставляется многоядерными графическими ускорителями, такими как nVidia GeForce
8. В настоящее время компания nVidia предлагает платформу параллельных вычислений
под названием CUDA11. Эта платформа позволяет программистам реализовывать на
упрощенном языке программирования Си алгоритмы, выполнимые на процессорах
графических ускорителей.
По типу используемой информации о видеоизображении (рис. 1.4) можно выделить
следующие группы методов отслеживания головы человека:
1) основанные на детектировании головы (дословно, трекинг путем детекции,
tracking by detection);
2) использующие цветовую статистику (англ. color blob, color histogram);
3) основанные на отслеживании «особых» точек лица (англ. features);
4) основанные на построении текстурных геометрических моделей головы и
отслеживании ее путем попиксельной регистрации изображений (англ. image registration).
Рассмотрим подробнее перечисленные группы методов.
OpenMP [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа:
http://ru.wikipedia.org/wiki/OpenMP, свободный. – Загл. с экрана. – Текст на экране англ.
11
CUDA [Электронный ресурс] : Wikipedia – Электрон. дан. – 2010. – Режим доступа:
http://ru.wikipedia.org/wiki/CUDA, свободный. – Загл. с экрана. – Текст на экране рус.
10
22
Рисунок 1.4 – Классификация методов трекинга головы по
типу используемой видеоинформации
1.1.5 Методы трекинга головы, основанные на ее детектировании
Данные методы используют изображение лица или головы целиком, т.е. как некую
сущность,
и
рассматривают
проблему трекинга
головы
как
общую
проблему
распознавания образов [67]. Для обучения таких методов может потребоваться большая
база данных изображений лиц/не лиц. Однако они не требуют инициализации, что
является их преимуществом по сравнению с другими группами методов трекинга головы.
Для работы методы данного класса могут использовать нейронные сети [75; 126],
метод главных компонент (Principal Component Analysis, PCA) [64], метод опорных
векторов (Support Vector Machine, SVM) [65; 127], древовидные каскады классификаторов
(tree boosted classifiers) [124].
В [48; 97] для трекинга положения головы применяются пространства собственных
векторов (англ. eigenspace). Собственное пространство – термин линейной алгебры,
означающий
множество
всевозможных
собственных
векторов,
соответствующих
собственному значению матрицы. Имея набор изображений, такие подходы конструируют
небольшой набор базисных изображений, комбинация которых может быть использована
23
для аппроксимации всего тренировочного набора изображений. Пример реализации
такого подхода – библиотека WATSON12.
В последнее десятилетие возникло новое научное направление, связанное с так
называемыми вейвлетами (от французского слова ondelette, небольшие волны, следующие
друг за другом). Вейвлеты широко применяются для распознавания образов. Сети
вейвлетов – многослойные нейронные сети, в которых вейвлеты играют роль
активационных функций. Нейронные сети вейвлетов Габора используются для трекинга
головы человека в работах [85; 86; 110; 128].
Широкую популярность методов трекинга головы человека, основанных на
распознавании образов, обеспечил алгоритм [124], предложенный П. Виолой и М.
Джонсом. Это алгоритм детектирования лица, способный обрабатывать изображения в
реальном времени, достигая высокой степени распознавания. Результат обеспечивается,
во-первых,
за
счет
использования
специального
представления
изображения
в
«интегральном» виде, во-вторых, за счет использования простого и эффективного
классификатора (так называемой характеристики Хаара), построенного с помощью
алгоритма AdaBoost13. Алгоритм AdaBoost выбирает из большого набора «особенностей»
несколько
наиболее
позволяющий
важных.
быстро
Слабые
отбросить
классификаторы
фоновые
регионы
объединяются
изображения,
в
каскад,
сосредоточив
вычислительные ресурсы на частях изображения, с большой вероятностью содержащих
лицо [41].
Детекция лица с использованием классификаторов характеристик Хаара обладает
высокой скоростью, не требовательна к качеству видео, но неустойчива к углам поворота
головы [69]. Стремление создать алгоритмы, более устойчивые к отклонениям лица от
фронтального
положения
послужило
усовершенствованию
этого
алгоритма
с
использованием нескольких каскадов, объединенных в сложную древовидную структуру.
Этот
класс
алгоритмов
Мультивидовые
получил
детекторы
название
объектов
«мультивидовые
используются
для
детекторы»
распознавания
[123].
лиц
со
значительными углами поворота в плоскости изображения и вне плоскости изображения
[68]. Лица людей разделяются на несколько категорий в зависимости от их вида при
различных
точках
классификаторы
зрения.
Для
характеристик
каждой
Хаара.
видовой
категории
Алгоритм
AdaBoost
строятся
слабые
организует
эти
классификаторы во вложенное дерево. Древовидная структура детектора позволяет
WATSON [Электронный ресурс] – Электрон. дан. – Режим доступа:
http://groups.csail.mit.edu/vision/vip/watson/, свободный. – Загл. с экрана. – Текст на экране англ.
13
AdaBoost [Электронный ресурс] : Wikipedia– Электрон. дан. – 2010. – Режим доступа:
http://ru.wikipedia.org/wiki/AdaBoost, свободный. – Загл. с экрана. – Текст на экране рус.
12
24
разделить сложную задачу на несколько подзадач. Такая методика имеет название «от
грубого к точному» (англ. coarse-to-fine) [76].
Достоинства методов детектирования головы: 1) используют для классификации
изображение лица (головы) целиком,
не опираясь на характерные точки; 2) могут
работать с видео низкого разрешения, в том числе с видео, полученным с веб-камеры; 3)
не предъявляют жестких требований к частоте поступления видеокадров; 4) не требуют
инициализации; 5) работают при резких перемещениях головы и изменении масштаба; 6)
работают в реальном масштабе времени.
Данные методы по сравнению с методами из других групп имеют следующие
недостатки: 1) низкая точность определения положения лица (головы); 2) высокая
вероятность ложных распознаваний (ошибок первого рода, англ. false positives).
1.1.6 Методы трекинга головы, основанные на цветовой информации
Методы данной группы используют статистическое распределение вероятности
цветовой информации в целевой области изображения. В качестве примера приведем
алгоритм CAMSHIFT [50], относящийся к разряду двумерных алгоритмов. Данный
алгоритм позволяет отслеживать положение лица с четырьмя степенями свободы (три
степени свободы перемещения и одна степень свободы вращения в плоскости
изображения).
Достоинства методов данной группы: 1) обладают сравнительно высокой
производительностью; 2) способны отслеживать вращение головы в плоскости
изображения; 3) менее чувствительны к изменениям освещенности (по сравнению с
методами из остальных трех групп).
Недостатки: 1) цветовое распределение должно быть инициализировано на первом
кадре; 2) не отслеживаются повороты головы вне плоскости изображения; 3) обладают
меньшей точностью по сравнению с методами, основанными на геометрических моделях
головы.
1.1.7 Методы трекинга головы, основанные на отслеживании «особых» точек лица
Методы данной группы используют взаимное расположение ряда уникальных
характерных точек лица человека (англ. features), таких как глаза или рот, или опираются
на отслеживание локальных регионов интереса, краев (edges), контуров (snakes) [78],
скорости окрестности определенного пикселя (оптический поток, англ. optical flow) [134],
информации о глубине. Зная положение этих особенных точек либо регионов, становится
возможным построить модель головы и вычислить текущее положение и ориентацию
головы с хорошей точностью.
25
Данные методы критически зависят от точности распознавания характерных точек.
Видеокадры должны иметь высокое качество и достаточно высокое разрешение. Эти
алгоритмы неустойчивы к поворотам головы и смене масштаба [69]. Изменения в
освещенности или перекрытие части головы другим объектом является препятствиями для
нормального определения положения головы. Для инициализации такие методы могут
требовать задания первоначальных позиций «особых» точек лица [39; 131].
Многие работы [74], основанные на отслеживании особых точек, используют
процедуру фильтрации для комбинирования информации от различных измерений в
единое целое [67], такую как фильтр Калмана для унимодальных распределений, метод
Монте-Карло (particle filter) для негауссовых распределений, и сети Байеса (англ. Bayesian
networks) [106].
Достоинства методов данной группы: 1) нечувствительность к малым изменениям
масштаба лица и выражения лица; 2) потенциально высокая точность.
Недостатки: 1) отслеживание множества характерных точек может оказаться
вычислительно сложной задачей; 2) невозможность использования видео низкого
разрешения (чувствительность к шуму,
высокие требования к точности определения
особенных точек); 3) необходимость инициализации положения особенных точек или
локальных регионов на первом кадре.
1.1.8 Методы трекинга головы, основанные на построении ее геометрических
текстурных моделей
В случае видео низкого качества, когда установить точное соответствие между
особенными точками лица не представляется возможным, отслеживание всей области
головы с использованием трехмерной геометрической модели головы является более
надежным [109].
Методы данной группы используют методы регистрации (сопоставления)
изображений с попиксельной точностью. Если класс отслеживаемых объектов ограничен
(например, лицами), то априорное знание свойств объекта может быть использовано для
улучшения точности трекинга и разрешения неоднозначностей при определении
положения головы [38].
Задача отслеживания положения головы может быть сформулирована как задача
определения параметров движения модели головы (перемещение и вращение) с целью
совпадения проекции 3D модели головы на видеокадр с реальным изображением головы
на этом кадре [90]. Один из классов алгоритмов отслеживания перемещения модели
между кадрами – параметрические алгоритмы регистрации изображений, например
26
алгоритм [89] или его модификации [45]. Такие алгоритмы сводят задачу трекинга к
задаче сопоставления (регистрации) двух последовательных видеокадров. Например, если
область изображения может быть смоделирована в виде плоскости, то для отслеживания
ее перемещения можно применить модель аффинного движения с небольшим числом
свобод [51]. Параметрические алгоритмы чувствительны к наличию локальных
минимумов в процессе регистрации изображений, но бывают ситуации, когда несколько
локальных минимумов являются приемлемыми решениями [99].
Проблемой при использовании методов отслеживания головы, основанных на
геометрических моделях, является необходимость инициализации модели головы.
Инициализация обычно осуществляется для первого видеокадра, а затем в те моменты
времени, когда трекер потерял целевой объект на видеокадре. При инициализации модели
необходимо задать ее положение и ориентацию в трехмерном пространстве. Перечислим
способы, которыми пользуются для инициализации модели.
1. Простейший способ инициализации модели – задание положения вручную [134].
В некоторых системах пользователь должен поместить голову в центр экрана
[50], пометить вручную глаза или нос. А в [46] используется специальный
графический редактор, который позволяет перемещать модель головы и
определять ее первоначальное положение на видеокадре.
2. В некоторых системах [53; 56] от пользователя требуется посмотреть прямо в
камеру, при этом положение лица определяется грубо путем детектирования. Для
детектирования лица чаще всего требуется фронтальное положение головы; при
значительных же углах наклона головы алгоритм детектирования может не
работать [74; 59].
3. Использование мультивидового детектора лица [113] пригодно для полностью
автоматического детектирования положения и ориентации головы человека, даже
при ее наклонах вне плоскости изображения.
4. В работе [72] предлагается интересный способ инициализации модели. Для
грубого определения области лица используется алгоритм детектирования [124].
В верхней части полученной прямоугольной области производится поиск глаз с
помощью определения областей круговой симметрии (преобразование Хафа,
англ. Hough transform). Аналогичная стратегия используется для детектирования
кончика носа. Ввиду его положения, нос обычно выглядит как светлое пятно на
темном фоне.
Для повышения устойчивости к поворотам головы некоторые модельные методы
используют набор ключевых кадров (англ. key frames), заготовленных в оффлайн режиме.
27
Во время трекинга кадры из данного набора сопоставляются с текущим кадром, что
позволяет осуществить коррекцию при накоплении ошибки [38; 121; 122].
Одной из серьезных проблем, возникающих в методах этой группы, является
проблема учета освещенности [56; 58; 73; 116].
По размерности моделей головы выделим [77; 92] двумерные (2D) и трехмерные
(3D) методы трекинга. 2D трекинг обычно означает следование за проекцией трехмерного
объекта или части объекта, когда движение этой части может быть смоделировано как 2D
трансформация. С другой стороны, 3D трекинг нацелен на определение всех шести
степеней свободы движения. Очевидно, что двумерная модель не может хорошо
аппроксимировать голову как трехмерное тело. Поэтому, двумерные модели применяют
тогда, когда голова не может значительно отклоняться от плоскости кадра. Трехмерные
модели позволяют (теоретически) отслеживать голову даже при значительных поворотах
вне плоскости изображения.
В зависимости от персонализации модели выделим [103]: общие для любого
пользователя модели и специфические модели.
Специфические модели требуют подгонки геометрической формы модели под
каждого пользователя, что требует дополнительных затрат времени и вмешательства
человека [49]. При точной инициализации такие модели характеризуются минимальной
ошибкой
и
хорошей
производительностью.
Автоматическая
инициализация
специфической модели практически затруднена. Когда инициализация модели не
слишком точна, ошибка модели значительно увеличивается, и качество трекинга
ухудшается [109].
Персонально независимые модели, однако, не могут отражать различия формы
лица от человека к человеку и не способны к передаче эмоций лица без потери точности.
Выделим два типа движения, возможного при моделировании головы человека
[108]: жесткое (англ. rigid motion) – это движение с шестью степенями свободы, и
нежесткое (англ. non-rigid motion), т.е. движение деформации (движение глаз, щек,
бровей, которое в общем случае отслеживается независимо от движения головы).
При использовании жесткой модели в процессе трекинга геометрическая форма
модели головы остается статичной, внося значительную ошибку аппроксимации [38].
Нежесткое отслеживание – более общая и гораздо более сложная проблема, чем жесткий
трекинг.
В зависимости от того, считается ли голова деформируемым телом, выделим
следующие группы методов: методы с жесткими моделями головы (рис. 1.5), такие как:
плоский прямоугольник [48; 73], цилиндр [53; 54; 56; 65; 109], двумерный эллипс [47],
28
эллипсоид [46; 49; 130], сложные полигональные модели [90]; методы, использующие
деформируемые модели головы, например Active Appearance Models [92; 104; 107; 108],
Candide-3 [34; 134; 58; 60], 3D Morphable Models [102; 129], Active model [57].
Плоская прямоугольная модель. Простые геометрические модели головы часто
являются гораздо более эффективными и робастными по отношению к ошибкам
инициализации. Были предложены различные методы, основанные на плоских моделях
[73]. Они моделируют лицо (не всю голову целиком) как плоскость. Аппроксимация лица
плоской моделью привносит незначительную ошибку. В те моменты, когда ориентация
головы незначительно отличается от фронтальной, плоские модели показывают хороший
результат.
Рисунок 1.5 – Геометрические модели лица и головы. Слева направо: AAM,
Candide-3, 3D цилиндр, 3D эллипсоид, плоский прямоугольник
Цилиндрическая модель. Для того чтобы представить геометрию всей головы
целиком, необходима более полная трехмерная модель. В работах [54; 56] хороший
результат обеспечивается 3D трекером головы, в котором модель головы представляет
собой цилиндр. Относительная ошибка между цилиндрической моделью и реальной
геометрией головы мала и инвариантна к ошибке инициализации модели, связанной с
неверным определением ориентации головы [109].
Модель Candide – это маска лица, специально разработанная для модельного
кодирования лица человека. Она состоит из порядка ста многоугольников (полигонов),
что позволяет реконструировать форму лица с малыми вычислительными затратами [37].
Модель Candide была впоследствии доработана и получила название Candide-3 [34].
Параметризованная модель лица Candide-3 состоит из трехмерной проволочной сетки из
113 вершин и 184 треугольников.
Active Appearance Model (AAM), 3D Morphable Model (3DMM). Модель ААМ близко
связана с моделью 3DMM. Двумерная форма ААМ модели задается положением вершин
двумерной триангуляционной сетки. Трехмерная форма 3DMM задается трехмерной
триангуляционной сеткой [92]. Наложение модели на изображение представляет собой
29
минимизацию разности между входным изображением и ближайшим экземпляром
модели, то есть является нелинейной задачей оптимизации [93].
ААМ позволяет очень точно аппроксимировать форму лица. Однако трекинг лица с
использование ААМ требует тренировки достаточно общей модели (используется метод
главных компонент, PCA) чтобы она отражала достаточно большой класс возможных
пользователей [95].
Достоинства методов данной группы: 1) простота в реализации; 2) возможность
использования видео низкого качества; 3) способность работы в реальном времени; 4)
потенциал для очень точного трекинга головы; 5) использование простой модели головы
обеспечивает преимущество при автоматической инициализации, при сохранении
приемлемой точности; 6) более высокая производительность по сравнению с методами
детектирования.
Недостатки: 1) требуется точная инициализация, что практически трудно реализовать в
автоматических системах; 2) может потребоваться большой набор тренировочных
данных; 3) повышенные требования к освещенности сцены; 4) чувствительность к
наличию локальных минимумов в процессе оптимизации.
1.1.9 Экспериментальное оценивание систем отслеживания головы
Для оценки производительности, точности и устойчивости алгоритмов трекинга
головы требуется их экспериментальное исследование. Обычно алгоритмы отслеживания
головы оцениваются количественно на конечном наборе тестовых (эталонных)
видеоизображений [43].
Наиболее контролируемый подход к подготовке экспериментальных тестовых
видеоданных – использование компьютерной графики для создания синтетической
видеопоследовательности (рис. 1.6, а). Например, искусственно генерируемый видеоряд
используется в работе [109]. На таком видеоряде изображение движущейся головы
человека можно получить с использованием стандартной библиотеки компьютерной
графики, такой как OpenGL или Direct 3D. Облегчен контроль над параметрами
освещения и характером движения головы: для каждого кадра можно легко определить
положение и ориентацию головы в пространстве.
30
Рисунок 1.6 – а) Синтетический видеоряд, используемый в [109] для испытания
цилиндрической модели головы. б) Кадр из набора видеоданных [43]. в) Кадр из набора
видеоданных [56]. На голове расположено устройство «Flock of Birds», измеряющее
эталонную оценку положения головы на видеокадре
Хотя синтетически созданные видеоданные могут быть успешно применены для
моделирования неких идеальных условий съемки и испытания ПС в таких условиях,
использование видеоизображений из реальной жизни все же является необходимым путем
оценки работы системы на требуемой вариации субъектов и движений головы. Приведем
несколько примеров таких видеонаборов.
В работе [81] представлена сложная база данных (БД) видеоизображений лиц,
предназначенная для сравнения алгоритмов анализа эмоций. Она содержит 1917
видеоизображений 182 субъектов. При съемке создавалось
равномерное освещение,
обеспечиваемое использованием специальных отражающих зонтиков. Для получения этой
БД с целью использования в собственной системе необходимо связаться с создателями
базы по почте, что может быть неудобно для исследователя.
В работе [43] предлагается БД видеоизображений суммарной длиной более двух
часов видео (рис. 1.6, б). На этих изображениях сняты люди, занятые офисной работой
31
либо участвующие в беседе. База данных доступна по адресу14, но копию можно получить
лишь на DVD из-за большого объема данных.
Исследователи из университета Бостона, США [56] подготовили базу данных
видеоизображений15 девяти субъектов, снятых в офисных условиях. Данные разбиты на
две группы – с равномерной освещенностью и с плавно меняющейся глобальной
освещенностью. К каждому видеоклипу прилагается текстовый файл, содержащий
информацию о положении головы на каждом кадре, измеренным устройством «Flock of
Birds» (рис. 1.6, в). Существует возможность загрузки каждого клипа по отдельности.
Однако видеоклипы представлены в несжатом виде, что делает их скачивание несколько
затруднительным из-за значительного размера.
Итак, на практике используют лишь конечный набор видеопоследовательностей,
каждая из которых также имеет конечную длину.
Для обеспечения надежности выводов, получаемых в ходе экспериментального
исследования системы, нужно решить два вопроса [27]: 1) какое число единиц частичной
совокупности (выборки) достаточно велико, чтобы по ней можно было делать надежные
выводы об изучаемом явлении? 2) из каких именно единиц надо составить частичную
совокупность, чтобы можно было рассматривать ее в качестве представительного
(репрезентативного) образца изучаемой общей совокупности?
Ответ на первый вопрос можно получить, обратившись к закону больших чисел
Чебышева, на основании которого построена таблица больших чисел. Задавшись
степенью уверенности (обычно ее берут равной 0,95 либо 0,99), можно по таблице
больших чисел определить число опытов, необходимых для того, чтобы с заданной
уверенностью можно было судить о надежности выводов, сделанных в результате этих
опытов.
Ответ на второй вопрос можно получить, используя таблицу случайных чисел. Из
математической статистики известно, что в силу закона больших чисел выборка будет
репрезентативной, если ее осуществлять случайно: каждый объект выборки отобран
случайно из генеральной совокупности и если все объекты имеют одинаковую
вероятность попасть в выборку [6, с. 189].
Для того чтобы дать ответ на вопрос, репрезентативна ли выборка, необходимо
также четко определиться, что считать генеральной совокупностью (ГС). Если считать ГС
все население Земли, то довольно сложно организовать такую видеосъемку, чтобы
IDIAP Head Pose Database [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа:
http://www.idiap.ch/HeadPoseDatabase, свободный. – Загл. с экрана. – Текст на экране англ.
15
Head Tracking [Электронный ресурс] – Электрон. дан. – 1999. – Режим доступа:
http://www.cs.bu.edu/groups/ivc/HeadTracking/, свободный. – Загл. с экрана. – Текст на экране англ.
14
32
соблюсти возрастные, национальные и иные пропорции ГС. Если же считать ГС всех
мужчин, работающих в пределах университета, то репрезентативной будет небольшая
(объем которой рассчитан с учетом таблицы больших чисел) выборка сотрудников
университета, полученная простым безвозвратным методом отбора.
Большой объем выборки на практике труднодостижим, так как обычно «под
рукой» у исследователя имеется небольшое количество людей, которые согласны
предоставить свое видеоизображение для эксперимента. Очевидно, что без постановки
крупномасштабного эксперимента не получится провести съемку большого количества
людей разных национальностей, возрастов и имеющих широкую вариацию иных
параметров внешности. В известных работах объем выборки составляет 5-10 человек (за
исключением [81]), а длительность каждого видеоклипа невелика (менее минуты).
Важный аспект при подготовке БД видеоизображений – это ее область применения.
В зависимости от данного фактора условия видеосъемки могут варьироваться. Так, если
областью применения является сравнительный анализ алгоритмов распознавания мимики
лица, то площадь области изображения головы на кадре обычно составляет 30-50% от
площади кадра, чтобы все черты лица были хорошо различимы. Если же на основе
выборки планируется исследовать поведение алгоритма трекинга головы в условиях
беседы двух человек, то в кадре необходимо присутствие двух человек, а область лица
может составлять 10-30% от площади кадра.
Еще один аспект, на котором стоит заострить внимание – параметры
освещенности. В большинстве известных работ создаются условия съемки, когда все
части головы освещены одинаково и освещенность не меняется со временем. Такие
контролируемые условия съемки, конечно, облегчают работу алгоритмов трекинга
головы, однако трудно достижимы в реальной жизни. В [56] предусмотрели плавно
изменяющуюся освещенность, однако в реальной жизни обычно имеются блики, резкий
контраст яркости между различными частями головы (например, когда человек сидит
около окна).
В известных примерах скорость движения головы и характер движений головы
подбирают таким образом, чтобы облегчить трекинг головы. Движения обычно плавные,
редко встречающиеся в реальной жизни. В кадре обычно присутствует один (реже два
человека), который совершает поступательные либо вращательные движения головы,
приближая ее к камере или удаляя от камеры. Снимаемый субъект может участвовать в
беседе либо демонстрировать жестикуляцию мимическими мышцами лица.
Сравнение алгоритмов трекинга головы. Актуальна проблема сравнения ПС
трекинга головы человека, разработанных разными исследователями, зачастую в
33
различное время. Для того чтобы сравнить две ПС, необходимо, чтобы они удовлетворяли
неким требованиям, например, чтобы они получали данные на входе в одном и том же
формате, и на выходе выдавали данные в определенном стандартном формате.
Приведение различных ПС к подобным требованиям – задача трудоемкая, а на практике в
подавляющем большинстве случаев невыполнимая, так как различные исследователи по
ряду причин не могут или не желают этого делать. Наличие в публичном доступе
видеоданных, которые легко загрузить, для которых четко регламентированы условия
съемки, освещенности, а также известна эталонная оценка параметров движения головы
для каждого кадра – это первый шаг к осуществлению задачи сравнения различных
алгоритмов трекинга головы.
Можно сформулировать ряд рекомендаций при подготовке набора видеоданных:
1) данные должны быть доступны для загрузки по сети Интернет;
2) каждый видеоклип из набора должен быть доступен для индивидуального
скачивания без необходимости скачивать всю базу данных;
3) каждый клип должен иметь размер, подходящий для скачивания, т.е. видео
должно быть сжатым с помощью видеокодека;
4) необходимы эталонные данные, описывающие положение головы человека на
каждом видеокадре.
Важно, чтобы для каждого видеокадра было известно положение головы. Это
обычно достигается путем прикрепления на голову специальных датчиков, например,
электромагнитных
либо
инфракрасной
подсветки.
Положение
головы
обычно
записывается в текстовый файл, каждая строка которого содержит координаты точки
отсчета системы координат объекта, и ее ориентацию относительно системы координат
наблюдателя. Отметим, что часто не указываются параметры камеры (фокальная длина
объектива
или
матрица
проецирования),
характеристики
используемой
системы
координат (правая или левая), используемые стандарты декомпозиции вращения (правый
или левый буравчик, последовательность вращения вокруг трех осей). Отсутствие
указанных данных затрудняет или делает невозможной корректную настройку параметров
алгоритма трекинга, и, следовательно, сравнение ПС может быть затруднено либо
невозможно.
Известные программы трекинга головы. В заключение перечислим несколько
программ, предназначенных для трекинга головы, и доступных для скачивания по сети
Интернет:
34
1. WATSON (автор – Луис-Филипп Моренси), доступна для скачивания по адресу16
для исследовательских целей. Из описания, приведенного на сайте программы: «WATSON
способен отслеживать жесткие объекты с шестью степенями свободы, используя Adaptive
View-Based Appearance Model. Библиотека может оценивать положение объекта в течение
продолжительного периода времени с ограниченным дрейфом. Основное применение –
оценка положения головы и распознавание мимики лица». Программа предназначена для
платформы Windows.
2. Track! Camera Mouse17. «Использует сложные алгоритмы для детектирования
головы в реальном масштабе времени. Анализирует лицо и определяет характерные
точки, которые могут использоваться для трекинга с пиксельной точностью». Программа
предназначена для платформы Windows.
3. Head Tracking18. «Целью данной работы является разработка нового метода 3D
трекинга головы при наличии значительных отклонений головы и изменения выражения
лица». Программа разрабатывалась в университете Бостона. Предназначена для
платформы SGI IRIX 6.5 (в наше время эта платформа является устаревшей).
1.1.10 Обоснование выбора метода трекинга головы
Итак, среди методов отслеживания головы, основанных на детектировании головы
в разных ракурсах, использовании цветовой информации, отслеживании «особых» точек,
и геометрических текстурных моделях головы,
наилучшую
точность трекинга
показывают последние. Методы, основанные на геометрических моделях головы лучше
других (не считая методы детектирования) подходят для случая веб-камеры, так как они
приемлемы в случае видео низкого качества, когда отслеживание всей видимой области
головы дает более надежный результат, чем трекинг «особых точек».
Вычислительная сложность методов трекинга, основанных на геометрических
моделях, как правило, ниже по сравнению с методами трекинга, основанными на
детектировании. Следовательно, первые обладают более высокой скоростью и более
пригодны для работы в реальном масштабе времени.
Выбор геометрической формы модели головы человека является довольно сложной
задачей. Каждый человек имеет свою специфическую форму головы, поэтому логично
WATSON. Real-time Head Tracking and Gesture Recognition [Электронный ресурс] – Электрон. дан. –
Режим доступа: http://groups.csail.mit.edu/vision/vip/watson/index.htm, свободный. – Загл. с экрана. – Текст на
экране англ.
17
Track! Camera Mouse [Электронный ресурс] – Электрон. дан. – Режим доступа:
http://www.oatsoft.org/Forge/project-pages/track-camera-mouse, свободный. – Загл. с экрана. – Текст на экране
англ.
18
Head Tracking [Электронный ресурс] – Электрон. дан. – 1999. – Режим доступа:
http://www.cs.bu.edu/groups/ivc/HeadTracking/, свободный. – Загл. с экрана. – Текст на экране англ.
16
35
было бы подбирать форму модели под форму головы человека. Но этот подход трудоемок,
и мало подходит для автоматической работы. Поэтому при невозможности точной
инициализации модели выгоднее использовать простые недеформируемые модели
головы. Хотя голова человека по своей природе не является абсолютно твердым телом
(может двигаться челюсть, изменяться выражение лица), но при незначительных
движениях рта и небольших изменениях выражения лица можно упрощенно считать, что
голова – твердое недеформируемое тело. Твердое тело может иметь шесть степеней
свободы движения в трехмерном пространстве, которые складываются из трех степеней
свободы перемещения тела и трех степеней свободы вращения тела.
Целесообразно использовать при проведении исследования несколько жестких
моделей головы, чтобы на их основе провести сравнительный анализ и сделать вывод о
том, какую модель головы выгоднее использовать на практике. Среди предложенных в
различных работах моделей головы, выделим и рассмотрим четыре модели головы:
плоский прямоугольник, цилиндр, эллипсоид и модель Candide-3. Заметим, что модель
лица Candide-3 в оригинале является деформируемой; более того, она предназначена для
анимации лица. В данной работе модель недеформируемая, что достигается фиксацией ее
параметров. Модель Candide-3 имеет форму, более близкую к форме головы, чем
эллипсоид и цилиндр, что делает ее интересной для сравнительного анализа. Выбранные
модели головы почерпнуты из работ: цилиндрическая модель – Цзин Сяо [109], М. Ла
Каскиа [54; 56]; эллипсоидальная модель – А. Боттино [49]; модель Candide-3 – Й. Алберг
[37], плоская модель – Г.Д. Хэгер [73].
Известно,
что
недостатком
модельных
методов
является
необходимость
инициализации модели. Как показано в первой главе, для инициализации модели головы
обычно пользуются заданием параметров вручную, приближенным определением области
головы с помощью 2D детектора лица или определением приближенного положения
головы с помощью мультивидового детектора. Точная автоматическая инициализация
модели головы на практике затруднена, так как методы детектирования головы не
обладают высокой точностью. Для инициализации модели необходимо знать размер
головы пользователя, дистанцию от головы до камеры и параметры камеры, такие как
матрицу проецирования (либо фокальную длину объектива камеры). Однако для каждого
человека размер головы индивидуален. При использовании монокулярной веб-камеры
автоматическое определение размера головы невозможно. Для определения параметров
камеры в идеале необходима процедура калибровки камеры, которая требует времени и
усилий от пользователя. В то же время, желательно осуществить процедуру
инициализации автоматически, избежать сложного взаимодействия с пользователем.
36
Поэтому необходим приближенный алгоритм инициализации модели головы, который
пригоден при использовании веб-камеры и не требует каких-либо измерений со стороны
пользователя.
Задача отслеживания положения геометрической модели головы может быть
сформулирована как
задача определения
параметров
движения модели
головы
(перемещение и вращение) с целью совмещения проекции 3D модели головы на
видеокадре с реальным изображением головы на этом кадре. Для ее решения можно
воспользоваться алгоритмом регистрации пары изображений. Регистрация изображений
заключается в деформировании первого изображения (шаблона) для совмещения его со
вторым изображением с целью определении соответствия между этими изображениями
[45]. В данной работе будем использовать инверсно-композиционный (ИК) алгоритм
регистрации [44]. Как показано в [45], инверсно композиционный алгоритм является
более вычислительно эффективным, чем его аналоги.
Отметим труды других авторов, на которых в первую очередь базируется данная
работа. Во-первых, это замечательная работа Цзин Сяо и др. [109], в которой для поиска
параметров 3D движения модели между последовательными кадрами используется прямокомпозиционный алгоритм регистрации изображений, адаптированный к случаю
движения в трехмерном пространстве с шестью степенями свободы. Также полезными
при написании работы использовались следующие труды: Б. Д. Лукаса и Т. Канаде [89],
где приводится интуитивный вывод одноименного алгоритма регистрации, легко
доступный для начинающего исследователя; труд С. Бэкера, И. Мэтьюза и их коллег [45],
в котором приводится классификация методов регистрации изображений и описывается
эффективный инверсно-композиционный алгоритм регистрации изображений; Р. Зелиски
[119], которая содержит обобщенный взгляд на методы регистрации; К. Бреглера и Дж.
Малика [51], где описывается применение твист-преобразования; М. Ла Каскиа [54; 56],
которая показывает основы применения системы компьютерной графики OpenGL к задаче
трекинга головы. Ценность работы [54] также состоит в том, что в ней предложен очень
удобный набор видеоданных, используемый в последней третьей главе данной работы.
1.1.11 Выводы
Из проведенного анализа литературы следует, что многие задачи практики могут
успешно решаться методами трекинга головы человека, основанными на построении
геометрической модели головы, на которую накладывается текстурное изображение. Это
обусловлено тем, что данный подход в отличие от других обеспечивает более высокую
точность и сравнительно малую вычислительную сложность, а задача отслеживания
37
положения головы может быть сформулирована как задача определения параметров
модели (перемещение, вращение) с целью совмещения проекции 3D модели головы на
видеокадре с реальным изображением головы на этом кадре. Однако данный подход
обладает такими недостатками, как необходимость выбора геометрической формы модели
и ее первоначального пространственного позиционирования.
Выявленные
особенности
(хорошая
точность,
приемлемая
вычислительная
сложность, способность работать с видео низкого качества и при наличии ошибки
инициализации модели), дают основание для выбора методов трекинга головы,
основанных на недеформируемых геометрических моделях.
Выбор метода трекинга, основанного на применении геометрической модели
головы, определяет необходимость проведения следующих исследований:
1. Выполнить формализацию задачи инициализации модели головы и получить ее
решение
для
первоначального
позиционирования
модели
головы
при
использовании некалиброванной монокулярной веб-камеры;
2. Рассмотреть принципы моделирования головы для задачи ее отслеживания на
видеокадрах;
3. Построить алгоритм трекинга головы, основанный на геометрической модели
головы и ее отслеживании с помощью алгоритма регистрации изображений;
4. Выделить основные сущности бизнес-логики, проведя декомпозицию задачи
трекинга головы; реализовать алгоритм, основанный на построении модели
головы, в составе ПС;
5. Провести
экспериментальный
анализ
производительности
и
точности
разработанной системы;
6. Вывести критерии для сравнения моделей головы и провести сравнительный
анализ различных моделей головы на основе ПС отслеживания головы;
7. Использовать полученные алгоритмы и методы в продукте ManyCam.
1.2 Методы распознавания цифровых изображений человека
Понятие «автоматическое распознавание человека по изображению лица» может
быть рассмотрено с позиции трёх наиболее актуальных на данный момент задач:
 Автоматический контроль удостоверений личности/верификация человека по
предъявляемому удостоверению личности.
 Автоматический контроль доступа.
38
 Идентификация человека по фотографии - поиск в базе данных изображений людей,
похожих на заданного человека.
В современных условиях всё чаще возникает необходимость ограничения доступа
к различным помещениям, компьютерам, системам. Это предполагает разделение людей
на две группы: тех, кто имеет право доступа к ресурсу, и тех, кто не имеет. Как правило,
первая группа, а это 1-5-10-50 человек, намного меньше второй. Без изменения специфики
задачи возможна и обратная ситуация, когда класс тех, кому доступ воспрещен, в
несколько раз меньше другого класса. Например, проверка человека на его присутствие в
некотором «чёрном» списке. Чаще всего, настраивая систему, автоматически решающую
данную задачу, можно контролировать условия получения изображений, которые будут
храниться в базе, и добиться их соответствия тем условиям, в которых будет
производиться идентификация человека. Под понятием «условия» в данном случае можно
подразумевать как освещённость человека при съёмке, так и его положение перед камерой
(ракурс, расстояние до объектива), мимика и пр. Для уменьшения вероятности
неправильной идентификации, при создании классификатора можно предусмотреть
использование нескольких изображений, принадлежащих одному человеку (с вариациями
в ракурсе, мимике, освещённости), вплоть до сравнения видеопоследовательностей
некоторых определённых движений головы и мимических мышц лица. Кроме того, при
решении задачи такого рода не возникает проблема учета возрастных изменений (поиска
и выбора, инвариантных во времени признаков). Как правило, у разработчика системы
имеется возможность предусмотреть обновление базы изображений в случае повышения
количества ложных отказов в доступе. Основное ограничение на выбор алгоритма это
необходимость функционирования системы в режиме реального времени, а также тот
факт, что допустимы ошибки только I-го рода – «ложно не идентифицирован», а II-го рода
– «ложно разрешён доступ» - должны быть сведены к нулю [1, 2].
1.2.1 Поиск фотопортретов заданного человека в базе данных
Данную задачу можно сформулировать следующим образом: имеется база данных,
содержащая N фотопортретов (от нескольких тысяч и больше), требуется найти в ней n
изображений,
наиболее
похожих
на
искомое.
Выбор
окончательного
решения
предоставляется эксперту (оператору). Следует отметить, что по статистике в реальной базе
данных, содержащей 100 000 портретов, 417 человек будут иметь двойников [3]. Так как
базы могут содержать сотни тысяч, миллионы изображений, то существующие системы
работать в режиме реального времени не в состоянии. Их цель – решение задачи за
разумное время.
39
Существует разновидность данной задачи - поиск изображений в базе данных по
словесному описанию, т. е. на вход системы подаётся не изображение, а некоторый набор
ключевых слов, описывающих внешность. Например: «мужчина», «европеец», «25—
35 лет», «крупный нос», «открытый лоб» и т. д. Данная разновидность задачи не
рассматривается в настоящей работе, так как её решение сводится к построению
классификатора
на
основе
двоичного
дерева
и
соответствующей
индексации
изображений, хранящихся в базе. Она может являться дополнительной опцией к системе
автоматического поиска изображений заданного человека.
Портреты, хранящиеся в базе данных, могут быть получены как в одинаковых
условиях (например, база данных ГАИ), так и в отличающихся (если база формировалась
из разных источников).
Спецификой решения данной задачи является критичность выбора значимых
признаков с тем, чтобы портреты похожих друг на друга людей были близки в
признаковом пространстве. Трудность заключается в том, что сам человек не может
однозначно определить степень похожести (или непохожести) двух различных людей, а
также сказать, какие именно черты лица играют решающую роль в идентификации одного
человека другим человеком. Насколько нам известно, исследования по определению
степени важности для идентификации одной черты лица по отношению к другой ни
криминалистами, ни кем-то другими не проводились. Известно лишь предположение, что
значимость черт для идентификации уменьшается с верха лица вниз, т. е. такие признаки,
как волосы и глаза важнее для распознавания, чем подбородок или губы [4].
1.2.2 Подходы к распознаванию по фотопортретам
Существует около десятка принципиально разных методов применяющихся для
решения рассматриваемой проблемы (рис. 1). Основными критериями при оценке
приведённых
ниже
методов
являлись
вычислительная
построенных на их основе, и достоверность распознавания.
40
стоимость
алгоритмов,
Рис. 1. Основные подходы, применяемые при построении систем идентификации
личности.
1.2.3 Антропометрический метод распознавания
Люди существенно различаются своей внешностью, и в частности чертами лица
(например, расположение глаз и их мельчайшие характеристики различаются даже у
близнецов). Поэтому не удивительно, что исторически первый подход к решению проблемы
автоматической идентификации человека по изображению его лица был основан на
выделении и сравнении некоторых антропометрических характеристик лица. Этот подход
давно используется в практической криминалистике, однако замеры и сравнение
выполнялись и выполняются вручную.
Главная проблема, которая возникает перед разработчиками систем распознавания
основанных на данном подходе - выбор совокупности характерных точек, наилучшим
образом описывающих человеческое лицо, и способов надёжного нахождения таких точек.
При этом необходимо учитывать следующие требования: точки на лице или черты лица, на
которых основывается идентификация, не должны закрываться причёской, бородой, маской
и т.п. Для обеспечения независимости процесса распознавания от масштаба изображения
целесообразно описывать систему идентификационных признаков в относительных
единицах; выбранная система точек должна обеспечивать достаточную устойчивость
процесса распознавания при незначительном изменении как ракурса съёмки (легкий
41
поворот головы, наклон), так и мимики (улыбка, сосредоточенное выражение лица и т.д.);
количество характерных точек системы, удовлетворяющей вышеизложенным требованиям,
должно быть минимальным, так как вычислительная стоимость алгоритмов обычно
пропорциональна количеству вычисляемых признаков.
К настоящему времени имеется много работ, посвященных распознаванию с помощью
различных совокупностей характерных точек и анализу эффективности работы систем,
построенных на их основе [5, 6, 7, 8, 9, 10, 11, 12, 13, 14].
Следует отметить, что использование лишних параметров может не только
затормозить работу алгоритма, но иногда и снизить точность распознавания. Так, в одной
из первых работ по автоматизированной идентификации человека [10] при использовании
набора из 16 параметров лица, среди которых были соотношения между расстояниями,
площадями и даже определялись углы между выбранными комбинациями точек,
коэффициент распознавания колебался от 45 до 75% в зависимости от набора параметров.
Причем
лучшие
результаты
были
получены,
когда
некоторые
признаки
не
использовались.
Брунелли и Поджио в своей работе [7] использовали 35 автоматически выделяемых
геометрических характеристик, среди которых:
 толщина бровей над центрами зрачков;
 приблизительное описание арки брови над левым глазом;
 вертикальная координата кончика носа и его ширина;
 вертикальная координата местоположения рта, ширина и высота верхней и нижней
губ;
 одиннадцать радиусов, описывающих форму подбородка;
 ширина лица на уровне кончика носа;
 ширина лица посередине между линией глаз и кончиком носа.
Применяя к описанным подобным образом лицам классификатор Байеса [15],
авторы добились 90%-ного распознавания на базе данных 47 человек. Следует отметить,
что метод сравнения с эталоном на той же самой базе изображений дал 100%-ую точность
распознавания [7].
Кокс и другие в [8] предложили применять «смешанные расстояния» (различные
арифметические комбинации расстояний), которые позволили получить точность
распознавания 95% при поиске 95 изображений в базе, содержащей портреты 685 человек.
Однако при экспериментах информативные точки для определения 30 «смешанных
расстояний» выделялись на изображениях вручную. Таким образом, остаётся открытым
вопрос об эффективности использования набора признаков в автоматических системах.
42
1.2.4 Метод главных компонент
Одним из наиболее проработанных и популярных является метод главных
компонент (иногда его называют методом «собственных векторов» либо «собственных
лиц»), основанный на преобразовании Карунена-Лоэва [2, 16, 17, 18]. Он является
примером того, как статистические методы, успешно применявшиеся в других областях,
оказались эффективно адаптированными к идентификации человека по портрету.
Простейший вариант представления любого цифрового изображения в виде
вектора в пространстве признаков предусматривает учёт значения каждого пикселя как
координаты отдельной оси. Так, если изображение описывается матрицей пикселей
m  n , то размерность такого пространства будет равна произведению m на n . Однако в
связи с тем, что все человеческие лица схожи между собой (овальная форма с носом, ртом,
глазами и т.д.), все векторы, описывающие изображения лиц, будут размещаться в узко
ограниченной
области
указанного
пространства.
Поэтому при
решении
задачи
идентификации человека по фотопортрету описание и хранение всего векторного
пространства избыточно.
Таким образом, возникает задача построения пространства меньшей размерности, в
котором описываются только изображения человеческих лиц. Одним из вариантов является
пространство, базисными векторами которого служат главные компоненты всех
содержащихся в нем изображений лиц. Размерность такого оптимального пространства
заранее определить невозможно, но она намного меньше размерности исходного
пространства всех изображений. Из вышесказанного вытекает, что главной целью метода
главных компонент является значительное уменьшение размерности пространства
признаков таким образом, чтобы оно как можно лучше описывало «типичные» образы,
принадлежащие множеству портретов. В случае применения данного метода для
идентификации лиц образами будут служить фотопортреты из обучающей выборки.
Иными словами, при помощи анализа главных компонент удаётся выявить
различные изменчивости в обучающем наборе изображений лиц и описать эту
изменчивость при помощи нескольких переменных. Эти переменные представляют собой
m  n - размерные векторы, которые называются собственными. Если преобразовать
подобные векторы в изображения, то получаемые картинки будут отражать главные
компоненты представленного обучающего множества (также называемые «собственные
лица»).
Таким образом, за счёт снижения размерности пространства базисных векторов, в
котором находятся изображения, добиваются хороших
распознавания изображений, близких к обучающей выборке.
43
показателей
в скорости
Полученный один раз на основе представительной обучающей выборки набор
собственных векторов (рис. 2) используется для кодирования всех остальных
изображений, которые представляются взвешенной комбинацией этих собственных
векторов (рис. 3, 4). Иными словами, используя ограниченное количество собственных
векторов, можно получить улучшенную аппроксимацию к входному изображению,
которая затем хранится в базе данных в виде вектора коэффициентов, служащего
одновременно ключом поиска.
Рис. 2. Формирование k векторов для последующего определения главных компонент
обучающего набора.
Рис. 3. Девять первых главных компонент лица человека.
Рис. 4. Портрет, представленный в базисе главных компонент
Тюрк и Пентланд [19] провели комплексное исследование данного метода на базе
изображений 16 человек, 2500 фотографий которых были получены при различных
условиях освещения, при съёмке с различных расстояний, при разных поворотах головы.
Однако полученные изображения были одинаковы по таким критериям, как выражение
лица, элементы внешности (борода, очки и т.д.). При изменении освещения, ракурса
съёмки и масштаба коэффициент распознавания составил 95, 85 и 64% соответственно.
Для уменьшения влияния на результат идентификации изменений причёски и фона
44
обрабатывалась только центральная часть лица. Скорость работы системы, реализованной
авторами на рабочей станции SUN 3/160, приближалась к режиму реального времени.
На основе вышесказанного можно отметить, что хотя алгоритм распознавания
изображений,
представленных
комбинацией
собственных
векторов,
и
является
относительно быстрым, простым и практичным, при его работе с большими базами
данных могут появиться проблемы с точностью.
Один из способов преодоления последних - повышение степени соответствия
между интенсивностями пикселей изображений из тренировочного набора и из базы.
Подобные шаги, в свою очередь, требуют больших усилий по предобработке и
нормализации.
Вследствие несовершенности современных методов распознавания изображений в
настоящее время применяются в основном способы извлечения из образов простейшей
информации. Для ограниченного класса областей применения обработки изображений
этой информации может быть достаточно. Примерами могут служить контроль наличия
или отсутствия объекта, измерение площади, определение параметров положения объекта.
Во всех этих случаях точно известно, что именно присутствует в наблюдаемой сцене.
Системы технического зрения (СТЗ) способны функционировать и в среде с
меньшими ограничениями, если выработана определенная стратегия интерпретации того,
что видит система. К задачам, требующим такого режима, относятся обнаружение
объектов в произвольном положении и ориентации, разделение множественных объектов
(в том числе перекрывающихся).
Для распознавания конкретного заданного объекта можно придумать много
специфических способов. Но целесообразнее пользоваться универсальными методами,
применимыми к широкому классу объектов. Одним из таких методов является обучение
показом, при котором распознающая система получает знания об объектах по их
реальным образцам. Такие методы предполагают соответствующую структуру данных, в
которой предусмотрены представления эталонов (или прототипов) и процедура
согласования, с помощью которой осуществляется сравнение хранящегося в памяти
эталона и анализируемого объекта.
1.2.5 Статистическое распознавание изображений
Подобно предыдущему методу в вероятностных моделях также используется
обучающий набор. При этом формируются два класса из всех вариантов представления
объектов: внутриобъектной и внешней изменчивости, т.е. отбираются признаки, по
которым все портреты делятся на два класса: 1) портрет данного человека, 2) все другие
45
портреты. Функции плотности вероятности для каждого класса оцениваются при помощи
упомянутого выше обучающего множества и впоследствии используются для вычисления
меры схожести, которая таким образом основывается на полученных опытным путём
вероятностях. Кроме того, для получения более точных результатов иногда используется
вероятностная модель некоторого физического процесса, при помощи которой и
формируется окончательная мера схожести двух изображений.
Одними из первых исследователями данного подхода являются Б. Могхаддам,
C. Настар и A. Пентланд. При идентификации по фотопортрету [20, 21] авторы
определяют два класса возможных изменений изображений лиц: внутриобъектный I
(различные выражения лица одного человека) и внеобъектный  E (разница во внешности
двух различных индивидуумов). Тогда мера схожести в терминах теории вероятности
может быть выражена следующим образом:
S  I1, I 2   P  d  I1, I 2  I   P  I | d  I1, I 2   ,


где P I | d  I1, I 2  является вероятностью, полученной по правилу Байеса [22] на основе
опытов с применением оценки подобия
P  d  I1, I 2  | I  и P  d  I1, I 2  | E  ,
вычисленных из обучающих данных с использованием эффективного метода оценки
плотности многомерных данных. Кроме того, авторы используют новое представление для
различий
в
сравниваемых
пространственными
 X ,Y  ,
изображениях
d  I1 , I 2  , которое сочетается как с
так и с яркостными
 I  компонентами
в унифицированной
XYI структуре (непохожей на предыдущие подходы, которые по существу обрабатывали
форму и структуру независимо). В частности, I1 моделируется трёхмерной физической
поверхностью в
XYI — пространстве, которое деформируется в соответствии с
привлекаемыми «физическими силами», заданными с помощью множества I 2 . Динамика
подобных систем эффективно вычисляется при использовании «аналитических методов
вибрации», при которых получают трёхмерное поле соответствия для искривления I1 в I 2 .
Дополнительно авторы используют параметрическое представление d  I1 , I 2   U , где U это спектр модальных амплитуд окончательной деформации. Это множество методов
подгонки для соответствия изображений может рассматриваться в более общей
формулировке, которая, в отличие от оптического потока, не требует постоянной оценки
яркости.
46
Обучающий набор состоял из 38 пар изображений (по две фотографии на одного
человека), тестовый набор - из 76 пар. Авторы добились хороших показателей в скорости
(сравнимых с «собственными лицами») и точности распознавания - 92% (70 из 76).
К статистическому подходу можно также отнести опыт применения скрытых
Марковских моделей для идентификации человека. В некоторых работах [23] говорится о
достижении 100% -ной точности распознавания с помощью системы, построенной на их
основе.
1.2.6 Сопоставление изображения с эталоном
В данном подходе процесс идентификации разбивается на этапы, соответствующие
анализу отдельных черт лица [24]. Каждая фотография, поступающая на вход
распознающей системы, должна представлять собой фронтальное изображение лица
человека
с
определённым
для
конкретной
базы
данных
количеством
масок,
представляющих основные для идентификации регионы лица (например, глаза, нос, рот и
нижняя часть лица). Кроме того, расположения данных масок должны быть одинаково
нормализованы (например, относительно положения глаз) для всех изображений в базе
данных. Во время процесса распознавания, когда части входного изображения по очереди
сравниваются с частями изображения, хранящегося в базе, вычисляется оценка,
отражающая результат сравнения в баллах (один балл за каждую совпавшую черту лица),
на основе нормализованной взаимной корреляции (впрочем, методы сравнения могут
быть разными).
После этого входное изображение классифицируется в соответствии с максимально
набранными баллами. Имеются также некоторые разновидности данного подхода,
например, с изменяющимися в процессе сравнения эталонами [7].
1.2.7 Распознавание с помощью нейронных сетей
В последнее время наблюдается бурное развитие нейросетевых методов,
используемых при распознавании изображений. Нейросетевые методы – это методы,
базирующиеся на применении различных типов нейронных сетей. Нейронные сети [53, 54,
55] давно и успешно применяются для решения многих задач распознавания. Основная
идея лежащая в основе нейронных сетей - это последовательное преобразование сигнала,
параллельно работающими элементарными функциональными элементами. Несмотря на
существенные различия, отдельные типы нейронных сетей обладают несколькими
общими чертами.
47
Во-первых, основу каждой нейронной сети составляют относительно простые, в
большинстве случаев – однотипные, элементы (ячейки), имитирующие работу нейронов
мозга.
Рис 5.- Структура формального нейрона
Каждый нейрон характеризуется своим текущим состоянием по аналогии с
нервными клетками головного мозга, которые могут быть возбуждены или заторможены.
Он обладает группой синапсов – однонаправленных входных связей, соединенных с
выходами других нейронов, а также имеет аксон – выходную связь данного нейрона, с
которой сигнал (возбуждения или торможения) поступает на синапсы следующих
нейронов. Общий вид нейрона приведен на рисунке 5. Каждый синапс характеризуется
величиной синаптической связи или ее весом wi.
Текущее состояние нейрона определяется, как взвешенная сумма его входов:
n
s   xi  wi
i 1
Выход нейрона есть функция его состояния:
y  f (s)
Нелинейная функция f называется активационной и может иметь различный вид.
Одной из наиболее распространенных является нелинейная функция с насыщением, так
называемая логистическая функция или сигмоид (т.е. функция S-образного вида)
f ( x) 
1
1  e  x
Второй общей чертой присущей нейронным сетям является принцип параллельной
обработки сигналов, который достигается путем объединения большого числа нейронов в
так называемые слои и соединения определенным образом нейронов различных слоев, а
также, в некоторых конфигурациях, и нейронов одного слоя между собой, причем
обработка взаимодействия всех нейронов ведется послойно.
48
Рис. 6- Структура связей однослойной нейронной сети
Теоретически число слоев и число нейронов в каждом слое может быть
произвольным, однако фактически оно ограничено ресурсами компьютера или
специализированной микросхемы, на которых обычно реализуется нейронная сеть. Чем
сложнее нейронная сеть, тем масштабнее задачи, подвластные ей.
Процесс функционирования нейронной сети зависит от величин синаптических
связей, поэтому, задавшись определенной структурой нейронной сети, отвечающей какойлибо задаче, необходимо найти оптимальные значения всех переменных весовых
коэффициентов (некоторые синаптические связи могут быть постоянными). Этот этап
называется обучением нейронной сети, и от того, насколько качественно он будет
выполнен, зависит способность сети решать поставленные перед ней проблемы во время
эксплуатации. Обучение нейронной сети может вестись с учителем или без него. В первом
случае сети предъявляются значения как входных, так и желательных выходных сигналов,
и она по некоторому внутреннему алгоритму подстраивает веса своих синаптических
связей. Во втором случае выходы нейронной сети формируются самостоятельно, а веса
изменяются по алгоритму, учитывающему только входные и производные от них сигналы.
В основе всех алгоритмов обучения положен единый принцип — минимизация
эмпирической ошибки. Функция ошибки, оценивающая данную конфигурацию сети,
задается извне — в зависимости от того, какую цель преследует обучение. Но далее сеть
начинает постепенно модифицировать свою конфигурацию — состояние всех своих
синаптических весов — таким образом, чтобы минимизировать эту ошибку. В итоге, в
процессе обучения сеть все лучше справляется с возложенной на нее задачей.
Базовой идеей всех алгоритмов обучения является учет локального градиента в
пространстве конфигураций для выбора траектории быстрейшего спуска по функции
ошибки. Функция ошибки, однако, может иметь множество локальных минимумов,
представляющих субоптимальные решения. Поэтому градиентные методы обычно
49
дополняются элементами стохастической оптимизации, чтобы предотвратить застревание
конфигурации сети в таких локальных минимумах.
Достоинством использования нейросетей для решения задачи обнаружения лица
является возможность получения классификатора, хорошо моделирующего сложную
функцию распределения изображений лиц
p( x | face) . Недостатком же является
необходимость в тщательной и кропотливой настройке нейросети для получения
удовлетворительного результата классификации.
Основные преимущества, которыми обладают нейронные сети следующие.
Настройка нейронной сети для решения определённой задачи производиться в
процессе обучения на наборе тренировочных примеров. Таким образом, не требуется
вручную определять параметры модели (выбирать ключевые признаки, учитывать их
взаимоотношение и т.п.) – нейронная сеть извлекает параметры модели автоматически
наилучшим образом в процессе обучения. Остаётся только построить тренировочную
выборку. В задачах классификации при этом происходит неявное выделение ключевых
признаков внутри сети, определение их значимости и системы взаимоотношений между
признаками. В настоящее время разработаны мощные, гибкие и универсальные
механизмы обучения различных типов нейронных сетей. Кроме того, архитектура
нейронной сети и процедуры обучения позволяет гибкую настройку на конкретную
решаемую задачу. Для большинства нейронных сетей процедура обучения является
эвристическим алгоритмом, что с одной стороны обеспечивает приемлемость получаемых
решений, а с другой стороны не требует непомерных вычислительных ресурсов.
Нейронные сети обладают хорошей обобщающей способностью. Это значит, что
опыт, полученный в процессе обучения на конечном наборе образов, нейронная сеть
может успешно применять на всё множество образов. Кроме интерполяционных
обобщающих способностей, нейронные сети (многослойные персептроны, например),
могут хорошо экстраполировать, т.е. применять свой опыт на качественно иные образы,
чем те, которые встречались в обобщающей выборке.
Нейронные сети не требуют ни наложения каких-либо ограничений на
тренировочную выборку, ни полагаются на то, что она обладает какими-либо априорными
свойствами, в отличие, например, от статистических методов. Не требуется никакого
предварительного изучения характера данных. Нейронная сеть принимает тренировочный
набор «как есть» и учится производить правдоподобное решение, не претендуя на
абсолютную истину. То есть строится наилучшая нефизическая модель, которая не
является максимально точным соответствием реального процесса, но даёт приемлемую
его аппроксимацию. Имеется ряд примеров, когда нейронные сети показывали себя лучше
50
статистических методов. Кроме того, в статистике не имеется аналогов некоторых
нейросетевых методов, таких, например как карты Кохонена, машина Больцмана, и, что
важно для распознавания изображений, когнитроны.
Но, несмотря на все достоинства, применение нейронных сетей к изображениям
требует специальных усилий. Это связано в первую очередь со сложным характером
изображений, особенно изображений трёхмерных объектов реального мира, какими и
являются лица людей.
Существует около десятка основных разновидностей нейронных сетей. Принципы
функционирования
систем,
построенных
на
автоассоциативной
памяти
(АП),
заключаются в том, чтобы в ответ на некоторую входящую совокупность данных,
называемую «ключом», выдать на выход хранящуюся в сети и наиболее близкую к
входной по значениям совокупность такой же размерности [17, 25]. В случае
идентификации по фотопортрету ключом служит изображение лица человека [17, 26, 27,
28, 29, 30].
Одним из самых широко используемых вариантов являться сеть, построенная на
многослойном персептроне, которая позволяет классифицировать поданное на вход
изображение/сигнал в соответствии с предварительной настройкой/тренировкой сети.
Порядок
работы
нейронных
сетей
на
основе
автоассоциативной
памяти
следующий: первый шаг - изображение оцифровывается и кодируется в виде вектора;
второй шаг - каждая координата вектора располагается в отдельной ячейке, связанной со
всеми остальными ячейками (обучение или настройка системы происходит путём
изменения весов связей между ячейками); третий шаг - векторы обрабатываются
нейросетью, при этом на её выходе формируется ближайшее к входному хранящееся в АП
изображение.
Линейная автоассоциативная память представляет собой один слой нейронной
сети. Каждый нейрон этого слоя ассоциируется с одним компонентом, получившимся из
разложения изображения лица вектора (аналогично методу «собственных лиц»). Таким
образом, при размере изображения m n пикселей каждый слой данной сети будет
содержать m  n нейронов. Кроме того, каждый нейрон связан со всеми остальными и
линейная АП строится при вычислении m  n весов связей этой нейронной сети. Данные
веса определяются на этапе обучения, при котором несколько обучающих изображений,
представленных линейно АП, запоминаются в ней [28].
51
1.2.7.1 Многослойные персептроны
Наиболее популярный класс многослойных сетей прямого распространения образуют
многослойные персептроны [53, 55], в которых каждый вычислительный элемент использует
пороговую или сигмоидальную функцию активации.
Рис 7-Структура многослойного персептрона с пятью входами, тремя нейронами в
скрытом слое, и одним нейроном выходного слоя.
Персептрон представляет собой сеть, состоящую из нескольких последовательно
соединенных слоев формальных нейронов. На низшем уровне иерархии находится
входной слой, состоящий из сенсорных элементов, задачей которого является только
прием и распространение по сети входной информации. Далее имеются один или, реже,
несколько скрытых слоев. Каждый нейрон на скрытом слое имеет несколько входов,
соединенных с выходами нейронов предыдущего слоя или непосредственно с входными
сенсорами X 1... X , и один выход. Нейрон характеризуется уникальным вектором весовых
коэффициентов w. Выходы нейронов последнего, выходного, слоя описывают результат
классификации Y  Y  X  . Особенности работы персептрона состоят в следующем.
Каждый нейрон суммирует поступающие к нему сигналы от нейронов предыдущего
уровня иерархии с весами, определяемыми состояниями синапсов, и формирует ответный
сигнал (переходит в возбужденное состояние), если полученная сумма выше порогового
значения. Персептрон переводит входной образ, определяющий степени возбуждения
нейронов самого нижнего уровня иерархии, в выходной образ, определяемый нейронами
самого верхнего уровня. Число последних, обычно, сравнительно невелико. Состояние
возбуждения нейрона на верхнем уровне говорит о принадлежности входного образа к той
или иной категории.
52
Данный вид нейронных сетей обучается с помощью алгоритма обратного
распространения ошибки [53, 56]. Основная идея обратного распространения состоит в
том, как получить оценку ошибки для нейронов скрытых слоев, известные ошибки,
делаемые нейронами выходного слоя, возникают вследствие неизвестных пока ошибок
нейронов скрытых слоев. Чем больше значение синаптической связи между нейроном
скрытого слоя и выходным нейроном, тем сильнее ошибка первого влияет на ошибку
второго. Следовательно, оценку ошибки элементов скрытых слоев можно получить, как
взвешенную
сумму
ошибок
последующих
слоев.
При
обучении
информация
распространяется от низших слоев иерархии к высшим, а оценки ошибок, делаемые сетью
- в обратном направлении, что и отражено в названии метода.
Данный вид нейронных сетей применялся для локализации лица человека на
изображениях в работах [57, 58, 59, 60, 61].
1.2.7.2 Радиально-базисные нейронные сети
Радиально-базисные нейронные сети [62] состоят из двух слоёв, рис. 8. Первый слой
имеет радиально-базисную
активационную
функцию:
 S 2 
y  exp  2  , где 
 2 
–
среднеквадратичное отклонение, характеризующее ширину функции (размер кластера), S
определяется
как
расстояние
между
входным
и
весовым
вектором:
S 2  X  W    xi  wi  . Таким образом, скрытый слой представляет собой набор
2
2
i
кластеров в пространстве образов и выполняет первый этап кластеризации входного образа –
значение активационной функции каждого нейрона быстро уменьшается с удалением от
центра кластера. Второй слой нейронов имеет линейную активационную функцию, и
выполняет второй этап кластеризации – распределяет кластеры по классам.
53
Рис. 8 - Структура радиально-базисной нейронной сети
Обучается такая сеть в два этапа. Первый этап осуществляется без учителя, на нём
первый слой выделяет компактно расположенные группы кластеров. При этом
корректируются центры кластеров. Второй этап обучения осуществляется с учителем, на
нем второй слой учится распределять входные образы, пропущенные через первый слой,
по классам. Это выполняется или матричными методами, или алгоритмом обратного
распространения ошибки.
В работах [63,65,66,67] радиально-базисные сети использовались для распознавания
человека. В работе [67] данный вид нейронных сетей использовался для детектирования
лица человека. В работе [64] РБНС совместно с оптическим потоком использовалась для
анализа эмоционального выражения лица.
1.2.7.3 Самоорганизующиеся карты Кохонена.
Алгоритм функционирования самообучающихся карт [68, 35] представляет собой
один из вариантов кластеризации многомерных векторов. Обычно нейроны располагаются
в узлах двумерной сетки с прямоугольными или шестиугольными ячейками. При этом,
как было сказано выше, нейроны также взаимодействуют друг с другом. Величина этого
взаимодействия определяется расстоянием между нейронами на карте.
Рис. 9 - Карты Кохонена
Сигнал в такую нейросеть поступает сразу на все нейроны, а веса соответствующих
синапсов интерпретируются как координаты положения узла и выходной сигнал
формируется по принципу «победитель забирает все» — то есть ненулевой выходной
сигнал имеет нейрон, ближайший (в смысле весов синапсов) к подаваемому на вход
объекту.
Самоорганизующиеся карты Кохонена используют алгоритм обучения без учителя.
Обучение состоит из последовательности коррекций векторов, представляющих собой
нейроны. На каждом шаге обучения из исходного набора данным случайно выбирается
один из векторов, а затем производится поиск наиболее похожего на него вектора
коэффициентов нейронов. После того, как найден нейрон - победитель производится
54
корректировка весов нейросети. При этом вектор, описывающий нейрон-победитель и
вектора, описывающие его соседей в сетке перемещаются в направлении входного
вектора. В работе [67] самоорганизующаяся карта кохонена применялась для
распознавания человека по изображению лица. В работе [69] самоорганизующаяся карта
Кохонена использовалась для локализации лица человека, в работе [25] для
детектирования человеческих глаз.
Основной недостаток рассмотренных выше нейронных сетей - то, что изображение
представлено в виде n-мерного вектора, не учитывающего ни двумерную локальную
организацию пикселей, ни возможностей деформации. То есть данные виды нейронных
сетей не обладают инвариантностью к изменению масштаба и повороту. Описываемые
далее типы нейронных сетей позволяют учесть топологию пространства изображения.
Принципы работы таких сетей основываются на разбиении изображения на маленькие
участки и иерархическом сопоставлении как взаимного их расположения, так и
содержания.
1.2.7.4 Неокогнитрон.
В основу структуры неокогнитрона [53,70] положена организация зрительной
системы человека. Главная особенность неокогнитрона – это двумерная организация
локальных участков и плоскостная иерархическая структура.
Рис. 10 - Структура неокогнитрона
Каждый слой состоит из плоскостей простых и сложных клеток. Каждый нейрон
простой плоскости связан с локальным двумерным участком плоскостей предыдущего
слоя, веса всех нейронов в пределах одной плоскости одинаковы, и таким образом
плоскость реагирует на определённый образ, находящийся в участке изображения.
Положение активированного таким образом нейрона в простой плоскости отмечает
участок, в котором найден этот образ, независимо от искажения этого образа. Нейрон
сложной плоскости связан с участком своей простой плоскости, и обнаруживает
активность нейронов на этом участке, уменьшая таким образом чувствительность к
позиции образа.
55
Обучение неокогнитрона осуществляется по методу «обучение без учителя».
Механизм обучения использует тип конкурентоспособного обучения. В основе его лежит
выделение наиболее сильно возбужденного нейрона в области конкуренции и
дальнейшего увеличения его весовых коэффициентов.
1.2.7.5 Сверточные нейронные сети
Архитектура свёрточной нейронной сети [71, 72] основывается на принципах
архитектуры неокогнитрона, упрощённого и дополненного обучением алгоритмом
обратного распространения ошибки.
В основе сверточной нейронной сети лежат идеи предложенные Ле Куном и
Бенджио:
 локальные рецепторные поля (обеспечивают локальную двумерную связность
нейронов);
 общие веса (обеспечивают детектирование некоторых черт в любом месте
изображения и уменьшают общее число весовых коэффициентов);
 иерархическая организация с пространственными подвыборками
Свёрточная нейронная сеть обеспечивает частичную устойчивость к изменениям
масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.
Рис.11. Архитектура сверточной нейронной сети
Архитектура сверточной нейронной сети, состоит из многих слоёв. Слои бывают
двух типов: свёрточные и подвыборочные, свёрточные и подвыборочные слои чередуются
друг с другом.
В каждом слое имеется набор из нескольких плоскостей, причём нейроны одной
плоскости имеют одинаковые веса, ведущие ко всем локальным участкам предыдущего слоя
(как в зрительной коре человека), изображение предыдущего слоя как бы сканируется
небольшим окном и пропускается сквозь набор весов, а результат отображается на
соответствующий нейрон текущего слоя. Таким образом набор плоскостей представляет собой
карты характеристик и каждая плоскость находит «свои» участки изображения в любом месте
предыдущего слоя.
56
Следующий за свёрточным слоем подвыборочный слой уменьшает масштаб
плоскостей путём локального усреднения значений выходов нейронов.
Таким образом, достигается иерархическая организация. Последующие слои
извлекают более общие характеристики, меньше зависящие от искажений изображения.
Для обучения сверточных нейронных сетей может применяться как стандартный
метод обратного распространения ошибки, так и его различные модификации.
Сверточные нейронные сети применяются для распознавания человека по
изображению лица[13] детектирования лица на изображении[73,74,75].
Несмотря на то, что точно оценить вычислительную сложность алгоритмов,
основанных на нейронных сетях, затруднительно, сообщается о достаточно эффективном
использовании нейронных сетей в области анализа изображений лиц по трем направлениям:
классификация
людей
по
полу,
непосредственно
идентификация
и
определение
эмоциональных выражений лиц [7, 13, 28, 31, 32, 33, 34, 35, 36].
1.2.8 Анализ оптических потоков изображений
Применение этого метода в целях идентификации человека признано довольно
эффективным, но дорогим с вычислительной точки зрения и в практических приложениях
почти не используется. Суть метода в следующем: сравниваемые фотопортреты A и B
i
i
превращаются в многослойные пирамиды - A и B . В основе пирамид лежит исходное
изображение A или B , значения четырёх соседних пикселей которого формируют
1
1
значение одного пикселя изображения следующего уровня A или B . После применения
i
i
рекурсии, i раз будут получены A и B .
После завершения данного процесса на соответствующих слоях двух разных
пирамид производят поиск подходящих между собой наилучшим образом групп пикселей.
i
Для каждого блока изображения A определяется вектор смещения. Этот вектор уточняет
i
i
смещение между центрами блока из A и наиболее близким к нему блоком из B .
i
Аналогично строятся векторы и для изображения B . Анализируя получившиеся системы
векторов, можно сделать вывод о степени схожести сравниваемых изображений.
Несмотря на относительную простоту метода, исследований его применения для
распознавания лиц мало. Среди опубликованных результатов работы [37] системы
идентификации, основанной на данном подходе, точность распознавания составила 92,7%.
Эксперименты проводились на базе данных из 78 изображений 38 персон. Учитывая тот факт,
что на сравнение одной пары уходило около 1 мин машинного времени на ЭВМ с
параллельной структурой СМ-5, можно предположить, что для проверки присутствия одного
57
изображения в такой малой, по практическим меркам, базе требовалось около 1 ч или больше.
Таким образом, хотя поведение системы полностью предсказуемо при увеличении базы
данных её производительность неудовлетворительна с практической точки зрения, так как
при 6000 изображений время поиска составит порядка 25 дней.
1.2.9 Распознавание путём эластичного сопоставления графов
В ряде работ [9, 28, 38, 39, 40, 41, 42] описаны исследования применения метода
сравнения фотопортретов путём эластичного сопоставления описывающих их графов.
Сравниваемые объекты - изображения лиц, описываются в виде графов с взвешенными
вершинами и рёбрами. При последующем сопоставлении один из графов – эталон,
остаётся неизменным, в то время как другой деформируется с целью наилучшей подгонки
к первому. Эталонный граф может представлять собой как прямоугольную решётку [40],
так и структуру, образованную характерными точками лица [30, 43]. Веса вершин
соответствуют
значениям
признаков,
характеризующих
близлежащие
пиксели
изображения, в то время как веса рёбер - расстояниям между смежными вершинами.
Различие между двумя графами
вычисляется при помощи некоторой функции,
учитывающей как значения признаков - веса вершин, так и степень деформации рёбер
графа.
Деформация графа происходит путём смещения каждой из его вершин на
некоторое расстояние в определённых направлениях относительно её исходного
местоположения и выбора такой её позиции, при которой разница в весе вершины Q i
деформируемого графа и соответствующей ей вершине R i эталона будет минимальной.
Данная операция выполняется поочерёдно для всех вершин графа до тех пор, пока не
будет достигнуто наименьшее (для данной пары графов) значение d  Q, R  .
Дюк и др. [40] предполагали, что веса вершин и веса рёбер независимы и
расстояние между графами вычисляется по формуле:
N
Ne
i 1
j 1
d  Q,R    d  Q i , R i     d e  Qej , Rej  ,
где Q i . значение i — ой вершины графа Q ; Rej - значение длины j - го рёбра графа R ;
N , N e - количество вершин и рёбер графа соответственно и  - коэффициент,


характеризующий жёсткость графа. Функции d  Q i , R i  и d e Qej , Rej отражают
разницу весов i - х вершин графов Q , R и j - х рёбер соответственно. Самый пластичный
58
граф будет иметь место при
при больших значениях
  0 , в то время как жёсткие графы могут быть получены
.
Чаще всего [27, 28, 32, 43, 42] в качестве весов вершин графа используются
комплексные значения фильтров Габора или их упорядоченных наборов - Габоровских
вейвлет [9, 44], которые вычисляются локально путём свёртки значений яркости в разных
окрестностях вершин графа. Также в некоторых работах [41] предлагается формировать
признаки, описывающие вершины, с помощью операций математической морфологии расширения и эрозии.
Следует заметить, что в «чистом» виде подход эластичного сопоставления графов
практически не используется. Так, существуют системы [28, 38], основываются на
архитектуре динамических связей (Dynamic Link Architecture - DLA), реализованной в виде
нейросети. Для представления изображений используется граф в виде прямоугольной
решётки.
Распознавание
нового
изображения
(эталона)
происходит
при
его
преобразовании в граф и сравнении с графами, хранящимися в сети. Качество сравнения
оценивается при помощи ценовой функции деформации. Размер решётки деформируемого
графа может изменяться, но её центр зафиксирован, если общая цена сопоставления графа
с эталоном снижается, то принимается новый размер. Этот процесс повторяется до тех
пор, пока не будет найдена наименьшая цена подгона хранящегося графа к эталону.
Распознавание производится после определения полной цены для большинства из
представленных изображений каждого класса. Таким образом, система идентифицирует
человеческое лицо путём сопоставления выделенного из него графа с набором
хранящихся графов [39].
Однако вычислительная стоимость подобной системы очень высока. Так, при
экспериментах с базой данных, состоящей из 87 человек, добились 95% -го коэффициента
распознавания притом, что изображения лица имели различные выражения и повороты до
15 . Но на сравнение одного изображения с 87 тратилось приблизительно 25 с при работе
системы на параллельной ЭВМ с 23 транспьютерами.
Вискотт с коллегами использовал усовершенствованную версию подхода [42] и
сравнивал 300 изображений лиц с другими 300 изображениями тех же людей,
полученными из базы данных FERET. Авторы получили точность распознавания 97,3%,
однако временные характеристики системы не указали.
1.2.10 Применение фильтров Габора для распознавания
В 1946 г. Д. Габор [45] предложил подход, описывающий некоторую временную
функцию, с одновременным учётом частоты сигнала, который впоследствии стал носить
59
его имя. На основе этого подхода Дагманн [46] в 1988 году сформулировал двумерное
преобразование Габора [47], которое применил для идентификации человека по
изображению радужной оболочки глаза.
За последние 5-10 лет фильтры Габора - компактная форма упомянутого
преобразования, стали широко используемым инструментом разработчиков систем
обработки изображений. Так, например, они применяются для оценки симметричности
текстур и их классификации, обнаружения движения на видеопоследовательностях [48,
49]. Упорядоченная группа таких фильтров, используемых с разными параметрами, часто
называется Габоровскими вейвлетами [44].
Окрестность, окружающая пиксель a (i, j ) может быть описана значениями
фильтров Габора, которые в совокупности формируют вектор-признак, характеризующий
эту окрестность.
Общий вид фильтра может быть представлен как:
h0  x, y   g0  x, y  expi  x cos0  y sin 0  ,
  x cos 0  y sin  0 2  x cos 0  y sin  0 2 
exp 

где g0  x, y  

2
2

2 y 2
 x y
x


1
g0  x, y  является двумерным гауссианом со стандартными отклонениями  x y ,
повернутым на угол 0 .
Из анализа данных выражений следует, что фильтр характеризуется следующими
параметрами - радиусами эллипса
 x и  y , углом ориентации  . В зависимости от
периода cos и sin у фильтров может быть различное количество пиков (локальных
максимумов). Результатом свёртки фильтра с изображением в некоторой точке
 x, y 
является комплексное число.
В настоящее время, судя по количеству появляющихся публикаций, фильтры
Габора являются одним из наиболее исследуемых и обещающих подходов в области
распознавания образов и обработки изображений. В ряде случаев они применялись и для
идентификации человека по фотопортрету [27, 28, 42, 43]. Однако все возможности
применения данного инструмента пока не раскрыты из-за большого количества
возможных вариантов фильтров, а также их упорядоченных и произвольных наборов.
Основными недостатками практически всех
упомянутых методов является
чувствительность к вариациям условий съёмки распознаваемых/сравниваемых людей,
возрастным изменениям, а также высокая вычислительная стоимость алгоритмов. Однако,
60
если последний недостаток является всё более слабеющим на фоне постоянно
повышающейся мощности ЭВМ фактором, то первые два сильно сдерживают широкое
применение уже имеющихся систем и наработок. Так, Вискотт со своими коллегами
заявляет: «Эластичное сопоставление графов хорошо работает, если изображение
распознаваемого лица похоже по параметрам (ракурс, освещение) на какие-то из
имеющихся в базе и уже описанных в виде графа, но метод сбоит, если лица выглядят
достаточно разными».
Метод «собственных лиц» и анализ локальных признаков хотя и являются на
сегодняшний день наиболее исследованными и применяемыми практически, но они не
позволяют получать компактных векторов признаков, по которым можно производить
поиск, либо требуют постоянной дополнительной настройки и тренировки, что в ряде
случаев не представляется возможным.
1.2.11 Классификация на основе значений признаков
Наиболее простые методы распознавания основаны на использовании численных
значений признаков [50, 51], инвариантных относительно параметров положения объекта.
Площадь и периметр неизвестного объекта сравниваются с соответствующими параметрами
нескольких эталонов, и выбирается тот эталон, отклонение от которого оказалось
наименьшим. Понятие наименьшего отклонения можно проиллюстрировать условным
размещением распознаваемого объекта и всех эталонов в виде точек в некотором
пространстве, координатами в котором являются периметр и площадь. Используя так
называемое правило ближайшего соседа, выбирают в этом пространстве эталон, который
ближе других находится к объекту. Размерность пространства равна числу рассматриваемых
признаков. Пусть имеется m эталонов и для каждого из них измерено n признаков
fij ; i  1, , m; j  1, , n . Предположим также, что распознаваемый объект имеет
признаки fij ; j  1,
, n . Тогда ненормированное расстояние в пространстве признаков от
объекта до эталона i будет определяться следующей формулой:
Di    f j  fij 
n
2
j 1
При этом ближайшим соседом будет эталон i , для которого Di минимально.
Приведенная формула применима в том случае, когда все измеряемые признаки
имеют сравнимые диапазоны значений. Если же признаки существенно различны, тогда
разница в больших параметрах признаков поглотит разницу в малых параметрах. Во
избежание этого вводят нормирующие множители. Тогда в приведенном примере
61
необходимо n нормирующих множителей N j ; j  1,
, n , т.е. по одному на каждый
признак. В этом случае нормированное расстояние в пространстве признаков определится как
 f  fij
Di    j
 N
j 1 
j
n



2
(1)
Коэффициенты N j определяются исходя из ожидаемого диапазона изменений
значений признаков у каждого эталона, т. е. учитывают возможные значения признаков,
которые могут появиться при большом количестве измерений. Если отсутствуют какиелибо иные данные, то в качестве нормирующего коэффициента можно взять «типичное»
значение параметра признака.
Диапазон изменений значений признаков может быть определен в процессе
обучения. Предположим, имеется pi экземпляров эталона i , на которых осуществлялось
обучение.
В
результате
признаков fijk ; j  1,
измерений
, n; k  1,
получен
ряд
данных
о
параметрах
, pi . Тогда среднее значение признаков fij может быть
вычислено по формуле:
f ij 
1 pi
 fijk
p k 1
Традиционно оценка дисперсии выражается следующей формулой:
2
1 pi
1  pi
2
2
 ij 
fijk  fij  


  fijk  pi fij 
pi  1 k 1
pi  1  k 1

(2)
Однако в рассматриваемом случае предпочтительное выражение:
 ij 
1
pi
pi
pi
2

1
2
2


f

f



 0ij  fijk  pi fij 
ij  
 0ij   ijk
k 1
k 1

 pi 

в котором используется априорная оценка дисперсии v0ij . Эта форма записи позволяет
избежать деления на 0, если число используемых эталонов равно 1. Кроме того, она
облегчает задачу, когда число экземпляров мало, а значительная недооценка дисперсии,
даваемая формулой (2) и приводящая к занижению значений соответствующих признаков,
может вызвать назначение неоправданно завышенной нижней границы диапазона
допустимых значений признака. В отсутствие более точных данных приемлемым значением
априорной оценки может служить квадрат одного процента от «типового» значения
признака.
62
Нормирующие коэффициенты N j , используемые в уравнении (1), определяются
как взвешенные средние дисперсий измерений:
m
Ni 
 p
i 1
m
i ij
p
i 1
i
Если можно предположить, что разные эталоны дадут разные значения дисперсий,
тогда можно пойти на шаг дальше и использовать эти частные значения дисперсий в
качестве индивидуальных нормирующих коэффициентов для каждого эталона и каждого
признака.
Если распознающей системе будет предъявлен объект, не имеющий прототипа в
заданном
наборе
эталонов,
следует
ожидать,
что
в
пространстве
признаков
нормированные расстояния от него до всех имеющихся эталонов будут достаточно
большими. В этом случае система должна идентифицировать его как не принадлежащий
заданному набору. Таким образом, найдем приемлемое значение порога Di , которое
следует выбрать в качестве критерия для обоснованного отклонения гипотезы о наличии
объекта.
В любой системе, использующей пороговые решения, могут возникать два типа
ошибок: ошибка пропуска объекта, которая возникает, если ошибочно отклонить гипотезу
о наличии объекта, который на самом деле принадлежит заданному набору, и ошибка
ложной тревоги, возникающая, если ошибочно отождествить с заданным посторонний
объект. Если завысить пороговое значение расстояния Di , то вероятность пропусков
уменьшится, но возрастет вероятность ложной тревоги, и, наоборот, если усилить
критерий для лучшего устранения посторонних объектов, число пропусков может
оказаться значительным.
1.2.12 Распознавание на основе соответствий
Методы, использующие соответствия, основаны на так называемых локальных
признаках [52], т. е. на таких небольших частях сцены, которые чем-либо характерны. Для
нахождения локальных признаков имеется большое разнообразие способов. Эталонная
модель
представляет
собой
список
определений
локальных
признаков
и
их
пространственных соотношений, которые предстоит обнаружить в процессе анализа
исследуемого объекта. Распознавание и последующая оценка местоположения (т. е.
определение расположения и ориентации объекта) предполагают поиск некоторого набора
или группы локальных признаков, которые соответствуют набору определений эталона.
63
Процедура нахождения соответствий учитывает только те части образа, которые
действительно соответствуют определениям эталонной модели, так что отсутствие какихлибо данных или наличие мешающей информации может быть легко учтено (конечно, при
условии, что имеется достаточное количество достоверной информации). После того, как
произведена пробная идентификация с целью повышения достоверности, можно провести
проверку оставшейся информации, не участвовавшей в анализе.
Ниже приведен примерный список особенностей объектов, которые могут
использоваться в качестве локальных признаков.
 Небольшие пятна в двоичных образах. Они особенно полезны, когда СТЗ имеет дело с
деталями, в которых просверлено или проштамповано множество отверстий.
 Периметр пятна, который после аппроксимации линейными отрезками может быть
использован для сопоставления как самих отрезков, так и углов.
 Границы в полутоновых образах.
 Конфигурации, выделяемые корреляционно-поисковыми методами.
Некоторые особые параметры, рассмотренные в специальной литературе, такие,
например, как оператор важности или гистограмма направлений градиента при
ограничениях на размеры пятна.
Локальные признаки всегда могут быть охарактеризованы их положением,
например, в виде координат по осям x и y . Кроме того, их могут характеризовать и
некоторые другие параметры (такие, как размеры и ориентация).
Для решения частных задач используется множество специальных методов.
Например, можно обнаружить один или несколько ключевых признаков, являющихся
уникальными для этого образа, а следовательно, отличительными. После этого следует
провести поиск других локальных признаков, которые находятся в ожидаемом
соотношении с ключевым признаком. В этом смысле полезным параметром является
расстояние между двумя признаками. Однако распространение этих методов ограничивает
необходимость
составления
специальных
программ.
Приходится
индивидуально
разрабатывать программы для каждой новой детали. При этом сложность программ
многократно увеличивается, как только в рассмотрение вводится несколько локальных
признаков.
64
2
Выбор и обоснование принятого направления исследований и
способов решения поставленных задач
2.1 Технологии построения распределенных систем
В различных источниках встречаются разные определения распределенной системы,
причем зачастую они не согласуются друг с другом. Определение распределенной
системы, данной в [33] звучит как: распределенная система – это набор независимых
компьютеров, представляющихся их пользователям единой объединенной системой.
Для того чтобы поддержать представление различных компьютеров и сетей в виде
единой системы, организация распределенных систем включает в себя дополнительный
уровень программного обеспечения, находящийся между верхним уровнем, на котором
находятся пользователи и приложения и нижним уровнем, состоящим из средств
операционных систем и аппаратного обеспечения (см. рис. 1.7). Этот уровень
распределенной системы называется системой промежуточного уровня (middleware).
Рис. 1.7. – Распределенная системы организованная на базе службы промежуточного
уровня
Важнейшим преимуществом распределенной системы является то, что она
упрощают интеграцию различных приложений, работающих на разных компьютерах в
единую систему. Платой за все преимущества часто является очень сложное программное
обеспечение, падение производительности и особенно проблемы с безопасностью.
Существуют
различные
типы
распределенных
систем.
Распределенные
операционные системы используются для управления аппаратным обеспечением
взаимосвязанных компьютерных систем, к которым относятся мультипроцессорные и
65
гомогенные мультикомпьютерные системы. Эти распределенные системы на самом деле
не состоят из автономных компьютеров, но успешно воспринимаются в виде единой
системы. Сетевые операционные системы, с другой стороны, с успехом объединяют
различные компьютеры, работающие под управлением своих операционных систем, так
что пользователи с легкостью могут получать доступ к локальным службам каждого из
узлов. Однако сетевые операционные системы не создают ощущения работы с единой
системой, которое характерно для распределенных операционных систем[33,34].
Для каждой распределенной системы важна схема ее внутренней организации.
Широко применяется модель, в которой процессы клиента запрашивают службы у
процессов сервера. Эта модель тесно связана с традиционным программированием, в
котором службы реализуются в виде процедур в отдельных модулях. Дальнейшее
подразделение обычно состоит в делении на уровень пользовательского интерфейса,
уровень обработки и уровень данных. Сервер обычно отвечает за уровень данных, а
уровень пользовательского интерфейса полностью лежит на клиенте. Уровень обработки
может быть реализован на клиенте, на сервере или может быть поделен между ними.
Широкое применение в распределенных системах получила архитектура клиентсервер. Редко бывает так, чтобы взаимодействующие в сети компьютеры были
совершенно равноправными. Как правило, один компьютер в сети располагает
информационно-вычислительными ресурсами, такими как процессоры, файловая система,
почтовая служба, служба печати, база данных. Другие же компьютеры пользуются ими.
Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого
ресурса, а компьютер, желающий им воспользоваться - клиентом. Конкретный сервер
характеризуется видом ресурса, которым он владеет. Так, если ресурсом являются базы
данных, то речь идет о сервере баз данных, назначение которого - обслуживать запросы
клиентов, связанные с обработкой баз данных [35].
В
настоящее
время
создано
множество
средств
организации
удаленного
взаимодействия. Все они естественно содержат и средства для локального взаимодействия
и скрывают от взаимодействующих компонентов, какой именно тип взаимодействия
имеет место в настоящий момент. Несмотря на большой ассортимент таких средств к
настоящему времени появилось несколько лидеров, к использованию которых склоняется
большинство специалистов, занимающихся проблемами распределенных систем.
2.1.1 1.3.1. RPC
Технология RPC (Remote Procedure Call) является частью проекта OSF/DCE (Open
Software Foundation’s Distributed Computing Environment). Это стандартный механизм, при
66
помощи которого клиентский код может обращаться к функциям на стороне сервера, не
имея при этом представления о сетевой подсистеме и способах передачи данных через
сеть.
На рисунке 1.8. показан пример взаимодействия при помощи механизма вызова
удаленных процедур (RPC). В соответствии с этим процессом клиент сначала обращается
к процедуре, посылающей запрос на сервер. По прибытии пакета с запросом сервер
вызывает процедуру его вскрытия, выполняет запрашиваемую услугу, посылает ответ, и
управление возвращается клиенту.
Рис. 1.8. – Сетевое взаимодействие посредством RPC
RPC-протокол не накладывает каких-либо требований на дополнительные связи
между процессами и не требует синхронности выполняемых функций, т. е. вызовы могут
быть асинхронными и взаимонезависимыми, так что клиент во время ожидания ответа
может выполнять другие процедуры. Сервер RPC может выделять для каждой функции
отдельный процесс или виртуальную машину, поэтому, не дожидаясь окончания работы
предыдущих запросов, сразу же может принимать следующие.
Протокол RPC может использовать несколько различных транспортных протоколов.
В обязанности RPC-протокола входит только обеспечение стандартов и интерпретация
передачи сообщений. Достоверность и надежность передачи сообщений целиком
обеспечивается транспортным уровнем.
По своей функциональности система RPC занимает промежуточное место между
уровнем приложения и транспортным уровнем. В соответствии с моделью OSI этому
положению соответствуют уровни представления и сеанса. Таким образом, RPC
67
теоретически независим от реализации сети, в частности, от сетевых протоколов
транспортного уровня.
Основным недостатком данной технологии является то, что она является не
объектно-ориентированной. Кроме того, не смотря на широкое распространение,
существующие API, не достаточно развиты, что приводит к тому, что программист
вынужден переписывать одни и те же участки кода от программы к программе [36,37].
2.1.2 1.3.2. Java RMI
Вызов Удаленных Методов Remote Method Invocation (RMI) является реализацией
идей взаимодействия объектов из CORBA для языка программирования Java[38].
RMI - продукт компании JavaSoft, разработанный для Java и интегрированный в JDK
1.1 и выше. RMI реализует распределенную модель вычислений и обеспечивает средства
коммуникации
между
Java-программами
(виртуальными
Java-машинами),
выполняющимися на одном или нескольких удаленных компьютерах. RMI позволяет
клиентским и серверным приложениям через сеть вызывать методы клиентов/серверов,
выполняющихся
на
виртуальных
Java-машинах.
Основное
преимущество
RMI
заключается в том, что он предоставляет программисту программируемый интерфейс
более высокого уровня, который позволяет передавать ссылку на удаленный объект в
качестве аргумента или возвращать ее в качестве результата. RMI требует, чтобы на обоих
концах соединения выполнялись Java-программы. Сетевое соединение достигается с
использованием TCP/IP-протокола[39].
Объект, доступный для удаленных приложений, виден через опубликованный Javaинтерфейс, содержащий некоторое множество методов. Один Java-объект может иметь
несколько интерфейсов, каждый из которых характеризует определенное поведение этого
объекта. Клиент взаимодействует с объектом через ссылку на один из интерфейсов,
реализованных объектом. Обращение к удаленному объекту происходит аналогично
обычному
локальному
вызову
метода,
т.е.
прозрачно
для
разработчика.
RMI
поддерживает также передачу объектов из одного адресного пространства в другое, для
чего
используется
технология
сериализации
объекта.
Технология
сериализации
разработана специально для языка Java и обеспечивает распределение объектов по сети в
реальном смысле этого слова[40].
Интерфейс, доступный для удаленного взаимодействия, описывается на языке Java.
Клиент взаимодействует с сервером посредством вызова методов, описанных в
интерфейсе. Реализация же объекта скрыта от клиента. На уровне реализаций объектов в
68
RMI множественное наследование классов не поддерживается, однако, объект может
реализовать несколько интерфейсов.
Архитектура RMI основана на одном важном принципе: определение поведения и
реализация этого поведения считаются разными понятиями. RMI дает возможность
разделить и выполнить на разных JVM код, определяющий поведение, и код,
реализующий поведение.
Это соответствует требованиям распределенных систем, в которых клиенты знают
об определениях служб, а серверы предоставляют эти службы. Реализация удаленной
службы кодируется в классе. Таким образом, ключ к пониманию RMI - помнить, что
интерфейсы определяют поведение, а классы определяют реализацию.
Интерфейсы Java не содержат исполняемого кода. RMI поддерживает два класса,
реализующих один и тот же интерфейс. Первый класс является реализацией поведения и
исполняется на сервере. Второй класс работает как промежуточный интерфейс для
удаленной службы и исполняется на клиентской машине.
Клиентская программа вызывает методы прокси-объекта, RMI передает запрос на
удаленную JVM и направляет его в реализацию объекта. Любые возвращаемые из
реализации значения передаются назад в прокси-объект и затем в клиентскую программу.
Реализация RMI, по существу, состоит из трех абстрактных уровней. Первый - это
уровень заглушки и скелета, расположенный непосредственно перед разработчиком. Этот
уровень перехватывает вызовы методов, произведенные клиентом при помощи
переменной-ссылки на интерфейс, и переадресует их в удаленную службу RMI.
Транспортный уровень основан на соединениях TCP/IP между сетевыми машинами.
Он обеспечивает основные возможности соединения и некоторые стратегии защиты от
несанкционированного доступа. При использовании уровневой архитектуры каждый из
уровней может быть изменен или заменен без воздействия на остальную систему.
Например, транспортный уровень может быть заменен протоколом UDP/IP без изменения
остальных уровней.
Клиенты находят удаленные службы, используя службу имен или каталогов. Служба
имен или каталогов исполняется на хорошо известном хосте и имеет известный номер
порта[41].
Удаленный вызов процедур, не смотря на то, что это часть спецификации CORBA,
реализован только для Java, что исключает использование его программистами,
использующими другие средства разработки. При проектировании больших систем со
временем возникнет ситуация, в которой придется взаимодействовать с программами,
написанными другим способом, нежели на Java.
69
2.1.3 1.3.3. COM
Модель компонентного объекта (COM) фирмы Microsoft является, как следует из её
названия, моделью для проектирования и создания компонентных объектов. Модель
определяет множество технических приемов, которые могут быть использованы
разработчиком при создании независимых от языка программных модулей, в которых
соблюдается определенный двоичный стандарт. Корпорация Microsoft обеспечивает
реализацию модели СОМ во всех своих Windows-средах. В других операционных средах,
таких как Macintosh и UNIX, технология СОМ также поддерживается, но не обязательно
средствами фирмы Microsoft.
О технологии COM написано множество книг [42,43,44], поэтому говорить о ней
можно долго. В этом разделе будут изложены самые общие моменты, касающиеся этой
технологии, а так же ее расширения для работы в сети, так же кратко будет рассказано о
библиотеке Active Template Library (ATL), позволяющей с легкостью составлять
программные компоненты, удовлетворяющие спецификации COM/
COM расшифровывается как Component Object Model и является платформнонезависимой, объектно-ориентированной технологией, позволяющей создавать бинарные
компоненты. Эти компоненты можно использовать как локально, так и в распределенном
сетевом окружении. COM служит основой для: OLE, ActiveX, DCOM, COM+.
DCOM (Distributed COM) – это расширение COM, делающее эту модель
распределенной, то есть позволяющей вызывать COM-объекты, находящиеся на другом
компьютере в сети.
COM – это технология, позволяющая объектам взаимодействовать, несмотря на
границы процесса или машины, так же легко, как и объектам внутри одного процесса.
COM обеспечивает такое взаимодействие, определяя, что единственный путь управления
данными, ассоциированными с объектом, лежит через интерфейс объекта. Термин
«интерфейс» означает реализацию в коде COM-совместимого двоичного интерфейса,
ассоциированного с объектом.
В COM существует несколько очень важных понятий, без понимания смысла
которых невозможно понять сущность технологии. Одним из таких понятий является
понятие COM-объекта. COM-объект можно сравнить с объектом в понимании С++ или
VB. Объект СОМ – это некоторая сущность, имеющая состояние и методы доступа,
позволяющие изменять это состояние. СОМ-объекты можно создавать прямым вызовом
специальных функций, но напрямую уничтожить его невозможно. Вместо прямого
уничтожения используется механизм самоуничтожения, основанный на подсчете ссылок.
70
Так, в COM присутствует понятие класса. Класс в COM носит название CoClass.
CoClass – это класс, поддерживающий набор методов и свойств (один или более), с
помощью которых можно взаимодействовать с объектами этого класса. Такой набор
методов и свойств называется интерфейсом (Interface).
Каждый CoClass имеет два идентификатора – один из них, текстовый, называется
ProgID и предназначен для человека, а второй, бинарный, называется CLSID.
CLSID является глобально уникальным идентификатором (GUID). GUID имеет
размер 128 бит и уникален в пространстве и времени. Его уникальность достигается путем
внедрения в него информации об уникальных частях компьютера, на котором он был
создан, таких, как номер сетевой карты, и времени создания с точностью до миллисекунд.
Эта технология, как и большинство других базовых концепций в СОМ, позаимствована из
OSF/DCE/RPC. С помощью CLSID можно точно указать, какой именно объект требуется.
Тип данных GUID применяется и для идентификации COM-интерфейсов. В этом случае
он называется IID. Сгенерировать новое значение типа GUID можно с помощью APIфункции Win32 CoCreateGuid. На практике использовать эту функцию приходится не
часто, так как современные средства разработки полностью автоматизируют эту задачу, а
VB вообще скрывает от программиста такие тонкости, как работу с CLSID и IID.
Для создания экземпляра объекта используется CLSID. Если имеется только ProgID
CoClass’а
или
CLSID
в
строковом
виде
("{XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX} «, где X – шестнадцатеричная цифра), то CLSID можно получить,
вызвав функцию CLSIDFromString. Для случая с ProgID информация о CoClass’е должна
содержаться в реестре машины, на которой производится вызов функции. В реестр
информация заносится автоматически при регистрации объекта (во время процедуры
инсталляции или при компиляции).
Программист никогда не взаимодействует с объектом и его данными напрямую. Для
этого используются интерфейсы объектов.
COM проводит фундаментальное различие между определением интерфейса и его
реализацией. В понимании СОМ интерфейс – это контракт, состоящий из списка
связанных прототипов функций, чье назначение определено, а реализация – нет. Эти
прототипы функций эквивалентны абстрактным базовым классам С++, то есть класс сам,
имеющим только виртуальные методы, описания без реализации. Определение
интерфейса описывает функции-члены интерфейса, называемые методами, типы их
возвращаемого значения, число и типы их параметров, а также описывает, что они,
собственно, должны делать. Напрямую с интерфейсом не ассоциировано никакой
реализации.
71
Реализация интерфейса (interface implementation) – это код, который программист
создает для выполнения действий, оговоренных в определении интерфейса. Реализации
интерфейсов, помещенные в COM-библиотеки или exe-модули, могут использоваться при
создании
объектно-ориентированных
приложений.
Интерфейсы
ассоциируются
с
CoClass’ами. Чтобы воспользоваться реализацией функциональности интерфейса, нужно
создать экземпляр объекта соответствующего класса, и запросить у этого объекта ссылку
на соответствующий интерфейс.
Простые объекты могут поддерживать только один интерфейс. Более сложные
объекты, как правило, поддерживают несколько интерфейсов. Это свойство позволяет
реализовать полиморфизм на уровне компонентной модели.
Сейчас, пожалуй, уже не встретишь приложения, которое не использовало бы такой
классный механизм как многопоточность. В COM для совместного использования
компонентов несколькими потоками одного и того же приложения вводится понятие
апартаментов или контекстов исполнения.
Апартаменты бывают двух типов STA (Single Threaded Apartament) и MTA
(Multithreaded Apartament).
В случае первого типа апартаментов исполнять код компонента в один и тот же
момент может только один поток. При попытке обращения к компоненту не из потока
вызвавшего загрузку и инициализацию компонента возникнет исключение.
В случае многопоточных апартаментов в компонент может войти любое количество
потоков.
Для входа в апартаменты поток должен вызвать функцию CoInitiaslize или
CoInitializeEx. Для выхода CoUninitialize.
Для работы в сети, то есть на случай если программные компоненты распределены
по нескольким машинам в локальной сети или Интернете, Microsoft разработала DCOM
(Distributed COM). С точки зрения программиста работа с удаленными компонентами
остается, в принципе такой же, что и при работе на одной машине. Работа DCOM
основывается на технологии RPC (Remote Procedure Calling), соответственно при работе с
такими компонентами необходимо знать и соблюдать правила безопасности RPC. Иначе
приложению будет отказано в доступе к удаленному компоненту.
Основным недостатком технологии COM является ее сильная интеграция в
операционную систему, по сути, она стала неотъемлемой частью Windows. Это в
значительной степени затрудняет реализацию данной спецификации на других
операционных системах. Кроме того, многие механизмы COM (например, модель
72
апартаментов и маршалинг) используют внутренние механизмы операционной системы
Windows.
2.1.4 1.3.4. CORBA
В 1989 г. несколько компаний, поставщиков и потребителей компьютерных
технологий, образовали OMG (Object Management Group). Цель новой некоммерческой
организации заключалась в объединении путем создания средств интеграции приложений,
мир прикладных программ, с их комплексами и системами, прежде всего в области
автоматизации различных отраслей промышленности[45].
Сегодня в OMG входят более 800 компаний, среди которых: Acer, Cisco, HP,
American Airlines, Hitachi, IBM, Siemens, Microsoft, Sun, Sybase, Boeing, EDS, Ericsson,
Netscape, Nokia, Ford Motor, Oracle, Microsoft и ряд других. Большинство крупных
компаний, имеющих отношение к информационным технологиям, входят в OMG. Так же
разработаны специальные средства, которые позволяют приложениям, написанным с
использованием COM, взаимодействовать с приложениями CORBA и наоборот.
Технически многоплатформенность компонентов, представляемых объектами,
решена введением базовой объектной модели, унифицированного языка спецификации
интерфейсов объектов (IDL - Interface Definition Language - язык определения
интерфейсов), отделением реализаций компонентов от спецификаций интерфейсов,
введением общего механизма поддержки интероперабельности объектов (ORB – Object
Request Broker – брокер объектных заявок). Тем самым достигается однородность
представления объектов и их взаимодействия.
Запрос посылается от клиента к серверу. Клиент – это приложение, или нечто
другое, выполняющее операцию над объектом, а реализация объекта - это код и данные,
которые на самом деле выполняют эту операцию. ORB способен выполнить все действия,
необходимые для нахождения реализация указанного объекта, подготовке этой
реализации к обработке запроса и передаче данных, относящихся к запросу.
CORBA ORB - это промежуточное ПО, которое устанавливает клиент-серверные
отношения между объектами в распределенной компьютерной среде. Роли клиента и
сервера не постоянно приписаны компонентам, а устанавливаются только на один запрос.
Клиент, объект-отправитель, вызывает операцию (метод) на адресате, идентифицируемом
ссылкой, и передает запрос ORB. Посредник по ссылке находит сервер, содержащий
объект-адресат
(в
терминологии
CORBA
этот
сервер
иногда
называют
object
implementation - реализация объекта); активизирует его, если надо (например, запускает
73
демон-процесс или подгружает библиотеку); доставляет запрос к объекту-адресату;
передает ему параметры и вызывает соответствующий метод, после чего возвращает
результат клиенту. Возможны ситуации, когда в одном запросе указано несколько
адресатов, которые могут располагаться как на одном сервере, так и на разных. ORB и в
этом случае исправно выполняет свою работу.
Одна из задач OMG – IDL идеализация всех клиент-серверных приложений, что даст
им возможность свободно взаимодействовать через ORB, который поддерживает
динамические и статические интерфейсы. Первый определяется на стадии разработки
приложения и компилируется вместе с ним, второй конструируется "на лету", на
работающем приложении.
Рассмотрим понятие Stub (Client IDL Stub – заглушка). Заглушка связывает
клиентские приложения с ORB. Написанные на IDL сервисы после компиляции на родной
язык программирования клиентского приложения и компоновки с ним, становятся
абсолютно прозрачны для объекта-клиента и выполняют роль proxy к удаленному
объекту-серверу. Эта заглушка осуществляет передачу запроса и обычно оптимизирована
для выполнения под управлением конкретного ORB. Если доступно более одного ORB, то
у них может быть различное внутреннее представление заглушек.
Аналогично Client IDL Stub ORB и серверные приложения связывает Skeleton (Server
IDL Stub или Static Skeleton - основа). Она создается после компиляции IDL. Dynamic
Invocation Interface, интерфейс динамического вызова, позволяет объекту создавать запрос
в реальном времени. Структура запроса, его параметры и атрибуты и даже сама ссылка на
объект-адресат генерируются в DII (Dynamic Invocation Interface) либо на основе данных,
полученных из Interface Repository, либо на основе пробного, не детализированного
запроса к объекту и анализу отклика.
Implementation Repository - собрание информации о серверах и способах их
активизации. Статический интерфейс полностью определяется на стадии разработки
приложения, компилируется вместе с ним и, поэтому, является жесткой, статической
структурой CORBA. Использование статических интерфейсов экономит время и силы
разработчика, уменьшает вероятность ошибки - интерфейс проходит проверку на стадии
компиляции,
экономит
ресурсы
системы.
Динамический
интерфейс
позволяет
конструировать вызов к IDL - операциям, которые, вполне вероятно, даже не были
известны разработчику приложения. Можно было бы использовать для таких случаев
свойство наследования, адресоваться к родительскому объекту, однако в этом случае
доступ к специфическим, не наследованным, операциям и атрибутам потомка
невозможен. Динамический интерфейс намного сложнее, чем статический, его разработка
74
требует значительных затрат. Но в некоторых случаях без динамического интерфейса не
обойтись (например, браузеры, управляющие утилиты).
Недостатком CORBA является то, что это только спецификация, ее реализации
предоставляются разными поставщиками и часто являются платными. Кроме того, многие
реализации требуют очень больших вычислительных ресурсов, что при создании системы
обработки информации в не жестком реальном времени приводит к нежелательным
затратам времени на взаимодействие компонентов, при этом ограничивая время
обработки самой информации[45,50].
2.2 «Облачные вычисления» как новая парадигма построения
распределенных ИВС
Приведем два определения «облачные вычисления».
1. Облачные вычисления — это окружение вычислительной среды, включающее
множество заинтересованных сторон и предоставляющее измеряемый с различной
степенью гранулярности информационный сервис на заданном уровне качества [1].
2. Облачная обработка данных (облачные вычисления) — это парадигма, в рамках
которой информация постоянно хранится на серверах сети Интернет и временно
кэшируется на клиентской стороне, например, на персональных компьютерах, игровых
приставках, ноутбуках, смартфонах и т.д. [2].
Еще несколько лет назад понятие облачных вычислений было слишком размыто, этот
термин часто подменялся другими: GRID, сервис-ориентированная архитектура (СОА) и
д.р. В настоящее время многие понятия, связанные с распределенными вычислениями
обретают четкие контуры.
В первую очередь облачные вычисления (ОВ) — это концепция, охватывающая как
организационные, так и технологические аспекты распределенных вычислений. Цель —
предоставлять ресурсы для проведения вычислений (на любом уровне) в виде публичного
сервиса, оплачиваемого потребителями в зависимости от затраченных времени и
ресурсов.
ОВ — это парадигма, призванная освободить пользователя или предприятие от
необходимости поддерживать полномасштабную IT-инфраструктуру, позволяя решать
любые информационно-вычислительные задачи посредством сервисов, доступных в
глобальной сети. Такая возможность позволяет снизить непрямые затраты на продукцию
и услуги. Стоимость аренды сервисов в долгосрочной перспективе существенно меньше,
чем стоимость владения собственной IT-инфраструктурой.
75
С
другой
стороны,
за
счет
консолидации
вычислительных
мощностей,
предоставляемых множеству потребителей, поставщик услуг ОВ имеет существенные
ресурсные резервы и возможность динамического перераспределения этих ресурсов в
зависимости от текущих потребностей каждого отдельного пользователя.
Поставщики услуг ОВ должны гарантировать определенный уровень сервиса,
например: обеспечивать минимальное время отклика, предоставлять определенный объем
вычислительных мощностей за фиксированное время, предоставлять определенную
функциональность и\или инфраструктуру, обеспечивать возможность надежного хранения
данных, гарантировать заданную пропускную способность при обработке транзакций и
т.д. При этом, в любой момент, потребителю
могут потребоваться дополнительные
ресурсы, которые со временем будут возвращены в общий пул. Такая бизнес-модель
реализуется, в частности, компанией Amazon в виде сервиса EC2 (Elastic Computing).
“Эластичность” этого сервиса как раз и заключается в том, что пользователь может
«растягивать» свою задачу на любое количество вычислительных ресурсов, освобождая
их по мере уменьшения нагрузки. За последние 10 лет подобные виды сервисов
интенсивно развиваются множеством компаний, начиная от малоизвестных, и, заканчивая
грандами отрасли информационных технологий: Microsoft (сервис Azure), IBM (линейка
сервисных продуктов IBM Cloud на базе мэйнфреймов), Yahoo (технология и сервис
Hadoop), Hewlett Packard (сервисы Cloud Discovery Workshop, Cloud Roadmap Service) и
др. Также следует отметить, что некоторые крупные компании, кому это по силам, ведут
разработки в рамках парадигмы ОВ для своих внутренних нужд. Такова, например,
система хранения и поиска изображений издательского холдинга New York Times.
Мировое научное сообщество давно осознало, что облачные вычисления становятся
новой парадигмой обработки данных. Университетскими центрами в сотрудничестве с ITкомпаниями организованы исследовательские программы по развитию технологической
платформы облачных вычислений. Так, в программе OpenCirrus (http://opencirrus.org/),
организованной изначально компаниями Yahoo, Intel и HP, принимают участие
Университет Иллинойса в Урбана-Шампейн (США), Технологический институт Карлсруэ
(ФРГ), Институт системного программирования РАН (г.Москва) и др. В Евросоюзе (ЕС)
предпринимаются объединенные усилия на межгосударственном уровне в рамках шестой
и седьмой рамочных программ Еврокомиссии по Информационно-коммуникационным
технологиям (FP6-ICT, FP7-ICT). Под эгидой ЕС создана экспертная группа по облачным
вычислениям, опубликовавшая аналитический отчет о проблемах и перспективах развития
технологий ОВ[1].
76
В нашей стране с 2008 года действует программа «Университетский кластер», целью
которой
является
развитие
и
распространение
технологий
ОВ
(http://www.ispras.ru/ru/unicluster/). Программа "Университетский кластер" появилась, как
совместная инициатива компании Hewlett-Packard, национального оператора связи ЗАО
"Синтерра" и учреждений Российской академии наук (ИСП РАН, МСЦ РАН).
Участниками программы в настоящее время являются порядка 50 научных и научнообразовательных учреждений РФ, в том числе и Томский университет систем управления
и радиоэлектроники.
2.2.1 Облачные вычисления и сервис-ориентированная архитектура
В целом сервис-ориентированную архитектуру (СОА) можно охарактеризовать как
подход к разработке программного обеспечения, основанный на использовании служб
(сервисов), со стандартизированными интерфейсами[3]. Интерфейс сервиса описывыется
с помощью формального платформонезависимого языка, например WSDL (Web Service
Definition Language). Такой подход позволяет достаточно просто интегрировать логику и
ресурсы ранее созданных информационных систем для решения новых задач. Отправной
точкой в развитии СОА стали веб-сервисы, как расширения, позволяющие строить
распределенные
приложения
на
базе
стека
технологий
Интернет.
Веб-сервисы
предоставили возможность считывать информацию с сайтов не только людям с помощью
браузеров, но и специализированным приложениям. Практически сразу, после появления
первых стабильных реализаций (SOAP, XML-RPC) стало понятно, что этот инструмент
подходит для интеграции произвольных приложений, а не только сайтов.
По сравнению с СОА облачные вычисления ставят более глобальную задачу —
предоставить сервис вычислений любого уровня, не только на уровне приложений, но и
на уровне операционных систем, специализированных вычислительных ресурсов и т.д.
Кроме того ОВ вводят дополнительные (не функциональные) требования к сервису. Так, в
[1] отмечается, что системы ОВ должны обладать эластичностью, то есть возможностью
задействовать новые физические ресурсы при увеличении, и освобождать ресурсы, при
уменьшении количества пользовательских запросов. Концепция ОВ охватывает больший
круг вопросов, связанных с надежностью, адаптивностью, уровнем качества сервиса и
многих других, имеющих отношение к построению и эксплуатации реально действующих
систем, по сравнению с СОА, описывающей только схему построения приложений из
компонентов.
77
В настоящее время сложилось три модели использования сервисов облачных
вычислений:
1. Infrastructure as a Service (IaaS) – инфраструктура как сервис. IaaS предлагает
доступ к низкоуровневым ресурсам: хранилищам данных, вычислительным
устройствам и памяти. Естественно, доступ к таким ресурсам не может
осуществляться напрямую. Здесь развиваются технологии виртуализации,
использующие специальный управляющий процесс — гипервизор, который
обеспечивает выполнение приложений (и даже операционных систем)
пользователя в прозрачном режиме. Примеры: (хранилища) Amazon S3, SQL
Azure, (вычисления) Amazon EC2, Zimory, Elastichosts.
2. Platform as a Service (PaaS) – платформа как сервис. Платформа — это
прикладной
программный
интерфейс,
обеспечивающий
приложению
возможность работы в условиях «облаков». Приложение, фактически, работает
под
управлением
специализированной
операционной
системы,
предоставляемой поставщиком ОВ. Между PaaS и IaaS отличие в масштабе
ответственности программного слоя. IaaS может только гарантировать
определенное количество процессоров или объем памяти, а все остальное
должно делать размещаемое пользователем приложение. PaaS — ситуация,
когда поставщик фактически заявляет, что приложение пользователя будет
работать
эффективно,
так
как
операционная
система
(платформа)
оптимизирована для работы в «облаке». Примеры: Force.com, Google App
Engine, Windows Azure (Platform).
3. Software as a Service (SaaS) – приложение как сервис. Поставщик реализует
всю бизнесс-логику в рамках определенного приложения. Примеры: Google
Docs, Salesforce CRM, SAP Business by Design.
Нельзя утверждать, что ОВ являются надстройкой для СОА, или наоборот, СОА для
ОВ. Интуитивно ощущается, что СОА предлагает удобный способ решения задач,
стоящих перед облачными вычислениями. СОА для ОВ — это инструмент построения,
важный но не единственный.
2.2.2 Проблема управления ресурсами в сервис-ориентированных системах
Парадигма
облачных
вычислений
подразумевает
объединение
в
единое
информационно-вычислительное пространство произвольного множества гетерогенных и
пространственно-распределенных вычислительных узлов, находящихся в различных
78
административных доменах, со своей локальной политикой безопасности. Управление
ресурсами такого объединения совершенно не тривиальная задача.
Выделим особенности управления ресурсами, в зависимости от выделенных моделей
использования (п.1). Модели IaaS и PaaS предполагают, что динамические характеристики
выполняемых приложений заведомо случайны, так как пользователь может решать
произвольные задачи, примерно так, как это происходит в операционных системах общего
назначения. Модель SaaS отличается от моделей IaaS и PaaS тем, что здесь поставщик
контролирует весь жизненный цикл приложения, и может знать заранее статические и
динамические требования к ресурсам.
Задача управления ресурсами осложняется еще и требованиями к качеству сервиса:
время гарантированного отклика, уровень пропускной способности, доступность,
отказоустойчивость, время восстановления после сбоя и т.д. Поэтому универсального
решения задачи оптимального управления ресурсами в моделях IaaS и PaaS нет даже
теоретически. В основном здесь ведутся исследования в области виртуализации элементов
вычислительных систем. Современные достижения в этом направлении отражены в
работах [4,5].
Модель SaaS предоставляет больше возможностей по управлению ресурсами.
Основная идея — зная характеристики задачи более точно определять, когда и какие
ресурсы должна получить задача с учетом текущего состояния ресурсов распределенной
вычислительной системы.
В работе [6] предложено рассматривать 4 типа ресурсов (процессор, оперативная
память, устройства ввода/вывода и устройства передачи данных), и принимать решение о
балансировке исходя из учета потребностей выполняемой задачи именно в рамках этих
четырех типов ресурсов. В этой же работе была предложена модель промежуточного
программного обеспечения для балансировки нагрузки устройств ввода/вывода и сети в
виде единой шины.
2.2.3 Иерархическое представление ресурсов и сервисов
Известно, что состав аппаратного обеспечения современных вычислительных систем
становится все более разнообразным. Появляются специальные аппаратные ускорители
счета,
процессоры
на
базе
программируемых
высокопроизводительные подсистемы хранения.
79
интегральных
логических
схем,
Любой новый ресурс в системе может быть отнесен к одному из классов по
соответствующим признакам. Так, например, ресурс «графический процессор» будет
отнесен к классу «вычислительный процессор».
Центральный
процессор
ОЗУ
Накопители
информации
Сетевые
телекоммуника
ции
Графический
процессор
ОЗУ
видеокарты
?
?
Класс
«вычислительный
процессор»
Класс
«оперативная
память»
Класс
«хранилище
данных»
Класс
«сетевое
соединение»
Рис. 1. Классификация вычислительных ресурсов
Такая организация позволяет применять один и тот же алгоритм балансировки,
используемый в системе, ко всем ресурсам одного класса.
Также появилась
необходимость выделить группы однотипных сервисов и
представить их в виде иерархии. По нашему мнению, удачным является сравнение
сервиса в СОА с понятием объекта (класса) в концепции объектно-ориентированного
программирования, где существуют механизмы наследования. Если обратиться к основам
построения информационно-вычислительных систем, то, например, операционная система
предоставляет сервисы (набор API) приложениям для работы с файловой системой,
сетевым окружением и т.д. Далее прикладные программы и программы ОС так же могут
предоставлять более высокоуровневые сервисы, либо пользователю напрямую, либо
другим приложениям. Такой взгляд позволяет неограниченно расширять наборы сервисов,
базирующихся на других низкоуровневых сервисах и предоставляющих новую
функциональность, не меняя при этом алгоритмы диспетчеризации.
Общая схема СОА выделяет три роли (рис. 2): реестр сервисов, поставщик сервиса,
потребитель сервиса.
80
Реестр сервисов
Регистрация сервиса
Поставщик
сервиса
Запрос к реестру
Потребитель
сервиса
Взаимодействие
Рис. 2. Общая схема СОА
Мы предлагаем расширить функциональность реестра сервисов таким образом, чтобы
внутри четко описывалась вертикальная иерархия сервисов (рис. 3). Например, сервис 5
наследует функциональность сервисов 1 и 2, а сервис 6 – функциональность сервиса 3.
Сервис 1
Сервис 2
Сервис 3
Сервис 5
Сервис 4
Сервис 6
Сервис 7
Рис. 3. Пример иерархии вычислительных сервисов
На реестр сервисов ложится дополнительная функциональность о своевременном
предоставлении потребителю сервиса всех необходимых базовых сервисов, от которых
унаследован дочерний сервис.
При
управлении
ресурсами
менеджер
ресурсов
решает
какие
устройства
задействовать для наиболее эффективного выполнения вычислений, заложенных в
функциональности сервиса.
Ресурсы
Р1
Р2
Р3
Рn
...
Менеджер
ресурсов
Очередь заявок
1
Реестр Сервисов
С1
С2
С3
..
Сn
81
2
3
..
N
Рис. 4. Менеджер ресурсов в системе с СОА
Обратим внимание, что достаточно сложно предположить насколько интенсивно
сервисом будет использоваться тот или иной вычислительный ресурс, для этого принято
решение снабжать сервис метаданными, характеризующими статические и динамические
потребности в ресурсах.
2.2.4 Стеки продуктов для построения «частных вычислительных облаков»
Продукты позволяющие реализовать сервис IaaS (фактически виртуализация
операционных систем):
1. Xen Cloud Platform (Open Source) - http://www.xen.org/products/cloudxen.html
2. Eucalyptus (Open Source). Аналог сервиса Amazone EC2 - http://open.eucalyptus.com/
3. OpenNebula
(Open
Source).
Аналог
сервиса
Amazone
EC2
-
Vmware)
-
http://www.opennebula.org/
4. vSphere
(коммерческий,
уровня
предприятия,
производитель
http://www.vmware.com/ru/products/vsphere/
5. Ряд коммерческих решений уровня предприятия от компаний BMC, CA, EMC, HP
(HP предлагает кроме того еще и оптимизированные серверные решения
специально для организации вычислительных «облаков»)
Продукты обеспечивающие сервис PaaS в «частных облаках» (интерфейс и
библиотеки для построения и развертывания облачных приложений):
1. AppScale (Open Source). Открытый аналог Google App Engine (распространяется
под BSD) - http://code.google.com/p/appscale/
Наиболее развитый продукт и совместимый со внешними облаками Google.
Совместимость позволяет строить гибридные облака. AppScale разворачивается
поверх Xen, KVM, Eucalyptus. Для программирования на AppScale нужно знание
API и языков программирования Java и Python
2. Microsoft Azure (коммерческое от MicroSoft) – на данный момент не понятно
будет ли Azure продаваться как продукт или будет использован MS для
создания собственного глобального сервиса (платформы). Azure предназначен
и адаптирован под использование .Net
Продукты типа SaaS в основном предлагаются во «внешних облаках», но есть
мелкие компании, предлагающие уже готовые решения для различных областей (растут
как грибы, в основном ориентируются на написание приложений для Google App Engine).
82
Основная проблема с PaaS – это отсутствие единых стандартов на API. Для защиты
от изменчивости API для облаков некоторые компании используют так называемое
промежуточное ПО — брокеры.
Можно выделить три типа брокеров. Первый – программные продукты,
использующиеся в качестве компонента своего приложения. Сюда, например, относится
известная
библиотека
с
открытым
исходным
кодом
libcloud
(http://incubator.apache.org/libcloud/). Второй – это компании, предоставляющие продукт
такого рода как
услугу. Как правило, такие компании также предоставляют
дополнительные сервисы – упрощенное управление конфигурацией облака, расширенную
модель безопасности и т.д. Сюда можно отнести RightScale (http://www.rightscale.com/) и
enStratus
(http://www.enstratus.com/).
И
третий
тип
–
компании-брокеры,
не
предоставляющие абстракции на уровне технической реализации, но предоставляющие ее
на уровне бизнеса. Привлекая такого брокера компания или организация может быть
уверена, что при переходе на техническом уровне на другое «облако», бизнесс-процессы
будут адаптированы.
Наиболее развитой и интересной является связка AppScale + Xen Cloud Platform или
AppScale + Eucalyptus. Этот стек продуктов покрывает основные виды сервисов для
ЦОДМН.
Облачные приложения AppScale расширяют известную трех-уровневую модель
корпоративных информационных систем (КИС): верхний уровень — клиенты, средний
уровень — сервис приложений, нижний уровень сервис баз данных. К этим уровням
добавляется уровень виртуализации инфраструктуры, а все уровни КИС в облачных
приложениях адаптированы для масштабирования и выполнения на кластерах ЭВМ.
Типичная схема «облака» на AppScale представлена на рисунке 5:
83
Рисунок 5 Типовая схема развертывания AppScale
AppLoadBalancer – принимает запросы клиентов и передает их серверу приложений
AppServer. А приложение взаимодействует с уровнем СУБД. Уровень СУБД может иметь
свои
горизонтальные
связи
между
экземплярами
для
поддержки
целостности
распределенных БД. В частности AppScale ориентирован на использование специальных
распределенных хранилищ данных (не обязательно реляционных):
1. HBase - Version 0.20.3
2. Hypertable - Version 0.9.2.7
3. MySQL Cluster - Version 5.1.30
4. Cassandra - Version 0.6.1
5. Voldemort - Version 0.80
6. MongoDB - Version 1.2.2-1ubuntu1
7. MemcacheDB - Version 1.2.0-6
8. Scalaris - Version 0.2.3-1
Наиболее развитым, из которых, в настоящее время является Hbase.
84
3
Проведение патентных исследований по ГОСТ Р 15.011-96
Поиск проведен в соответствии с заданием заведующего каф. АСУ Корикова А.М.
Этап работы 1
Начало поиска 4 октября 2010г. Окончание поиска 18 октября 2010г.
3.1 Результаты поиска патентов в области балансировки нагрузки
Таблица 1
Патенты США в области балансировки нагрузки
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
A load balancing server for
balancing real servers in an
asymmetric web farm
2
U.S. Classification
709/238; 709/227
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Alexander Tormasov
Patent number: 7475157
Filing date: Sep 13, 2002
Issue date: Jan 6, 2009
Application number:
10/242,810
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Server load balancing
system
5
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
Network interconnection in
cross-platform systems
2
U.S. Classification
370/399; 370/389
International
Classification
H04L 1228; H04L
1256
U.S. Classification
709/226; 709/105;
709/201
International
Classification
G06F 1338; G06F
1517
U.S. Classification
709/225; 709/224;
709/226; 709/227;
709/235; 709/229;
713/152; 713/153;
713/154; 713/200;
713/201
International
Classification
G06F 15173
Network load-balancing by
relocating client application
from original server to
another
System and method for
network load balancing
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Sajit Bhaskaran
Patent number: 6266335
Filing date: Dec 19, 1997
Issue date: Jul 24, 2001
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Cross-platform server
clustering using a network
flow switch
5
Действует
Juergen Brendel
Patent number: 6182139
Filing date: Jun 23, 1998
Issue date: Jan 30, 2001
Client-side resource-based
load-balancing with
delayed-resource-binding
using TCP state migration
to WWW server farm
Действует
Partha P. Dutta, Nino
Vidovic, Dalibor F.
Vrsalovic
Patent number: 6546423
Filing date: Oct 22, 1999
Issue date: Apr 8, 2003
Application number:
9/422,950
System and method for
network load balancing
Действует
86
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
Load balancing in a
multiunit system
2
U.S. Classification
364/200; 364/300
International
Classification
G06F 1500
Distributed load-balancing
U.S. Classification
709/105; 709/223;
709/228; 709/203;
370/312
International
Classification
G06F 15173
A system, method and
media for a service oriented
architecture
U.S. Classification
709206000
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Michael H. Hartung, Arthur
H. Nolta, David G. Reed,
Gerald E. Tayler
Patent number: 4633387
Filing date: Feb 25, 1983
Issue date: Dec 30, 1986
David B. Logan, Shirish
Sathaye
Patent number: 6578066
Filing date: Sep 17, 1999
Issue date: Jun 10, 2003
Application number:
9/398,248
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Load balancing in a
multiunit system
5
Действует
Distributed load-balancing
internet servers
Действует
Paul B. Patrick, Ashok
Aletty, Jayaram Kasi, Chet
Kapoor, Tolga Urhan,
Matthew Mihic
Application number:
11/133,022
Publication number: US
2006/0031354 A1
Filing date: May 19, 2005
Service oriented
architecture
Действует
87
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
A system, method and
media for a service oriented
architecture
2
U.S. Classification
370216000;
709239000
International
Classification
H04L012/26
A system, method and
media for a service oriented
architecture
U.S. Classification
709206000
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Paul B. Patrick, Ashok
Aletty, Jayaram Kasi, Chet
Kapoor, Tolga Urhan,
Matthew Mihic
Application number:
11/132,566
Publication number: US
2005/0270970 A1
Filing date: May 19, 2005
Paul B. Patrick, Ashok
Aletty, Jayaram Kasi, Chet
Kapoor, Tolga Urhan,
Matthew Mihic
Application number:
11/133,406
Publication number: US
2006/0031355 A1
Filing date: May 19, 2005
88
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Failsafe service oriented
architecture
5
Действует
Programmable service
oriented architecture
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
A system, method and
media for a service oriented
architecture
2
U.S. Classification
726014000
A dynamic access method
for a service oriented
architecture
U.S. Classification
709/223
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Paul B. Patrick, Ashok
Aletty, Jayaram Kasi, Chet
Kapoor, Tolga Urhan,
Matthew Mihic
Application number:
11/133,117
Publication number: US
2006/0031930 A1
Filing date: May 19, 2005
Robert F. Cromp, James A.
Wren
Application number:
12/126,580
Publication number: US
2009/0292797 A1
Filing date: May 23, 2008
Issued patent: 7783782
(Issue date Aug 24, 2010)
89
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Dynamically configurable
service oriented
architecture
5
Действует
Dynamic Runtime Service
Oriented Architecture
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
A computer-implemented
method: capturing service
properties, receiving a
request for service,
interrogating the request
and possible services
2
U.S. Classification
709204000;
709205000
International
Classification
G06F015/16
A system, method and
media for a service oriented
architecture
U.S. Classification
370352000
Load Balancing Algorithm
U.S. Classification
718105000
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Donna Kay Hodges, Barrett
M. Kreiner, Jai P. Menon,
Tommy W. Walton, Thomas
W. Rehkopf, Steven Neil
Tischer
Application number:
10/446,569
Publication number: US
2004/0093381 A1
Filing date: May 28, 2003
Paul B. Patrick, Ashok
Aletty, Jayaram Kasi, Chet
Kapoor, Tolga Urhan,
Matthew Mihic
Application number:
11/132,575
Publication number: US
2006/0007918 A1
Filing date: May 19, 2005
Abhishek Khanna
Application number:
11/772,126
Publication number: US
2008/0052723 A1
Filing date: Jun 30, 2007
90
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Service-oriented
architecture systems and
methods
5
Действует
Scaleable service oriented
architecture
Действует
Load Balancing Algorithm
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
Load Balancing Algorithm
2
U.S. Classification
709223000;
709224000
Load Balancing Algorithm
U.S. Classification
718/105; 718/104;
709/223; 709/224;
709/225; 709/226;
709/249
Load Balancing Algorithms
and Methods
U.S. Classification
709225000
International
Classification
G06F015/173
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Galin Galchev, Christian
Fleischer, Oliver Luik
Application number:
11/322,399
Publication number: US
2007/0156869 A1
Filing date: Dec 30, 2005
Jason D. Forrester
Patent number: 7389510
Filing date: Nov 6, 2003
Issue date: Jun 17, 2008
Application number:
10/703,900
Nayeem Islam, Shahid
Shoaib
Application number:
10/300,979
Publication number: US
2004/0103194 A1
Filing date: Nov 21, 2002
91
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Load balancing algorithm
for servicing client
requests
5
Действует
Load balancing of servers
in a cluster
Действует
Method and system for
server load balancing
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
I/O resources load
balancing
2
U.S. Classification
395/275
International
Classification
G06F 1502
Script-driven solution for
parallelizing applications
U.S. Classification
707/3; 707/6;
709/217; 717/115
Load Balancing Algorithm
U.S. Classification
709/223; 718/105
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Robert H. Tickner, Philip A.
Murphy, Jr., Wayne A.
Genetti
Patent number: 5313584
Filing date: Nov 25, 1991
Issue date: May 17, 1994
Martin Serrano
Patent number: 7047232
Filing date: Jan 13, 1999
Issue date: May 16, 2006
Application number:
9/229,849
Eric Sven-Johan Swildens,
Richard David Day, Ajit K.
Gupta
Patent number: 7346676
Filing date: Dec 21, 2006
Issue date: Mar 18, 2008
Application number:
11/644,108
92
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Multiple I/O processor
system
5
Действует
Parallelizing applications
of script-driven tools
Действует
Load balancing service
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
Load Balancing Algorithms
and Methods
2
U.S. Classification
709/226
Load-balancing framework
U.S. Classification
718/105; 709/224;
719/328
Dynamic load balancing
U.S. Classification
709225000;
709105000
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Naoki IKAWA, Tetsuya
Hashimoto, Kosuke Shindo
Application number:
11/622,628
Publication number: US
2007/0198721 A1
Filing date: Jan 12, 2007
Servesh Pratap Singh
Patent number: 7757236
Filing date: Jun 28, 2004
Issue date: Jul 13, 2010
Application number:
10/878,894
David Bonnell, Mark Sterin
Application number:
10/152,509
Publication number: US
2002/0178262 A1
Filing date: May 21, 2002
93
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Load balancing method
and system
5
Действует
Load-balancing framework
for a cluster
Действует
System and method for
dynamic load balancing
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид
и номер охранного
документа.
Классификационный
индекс
1
Dynamic load balancing
2
U.S. Classification
395/675; 395/800;
364/281; 364/281.6;
364/281.4; 364DIG1
International
Classification
G06F 1500
U.S. Classification
709/105; 709/103
International
Classification
G06F 900
U.S. Classification
709238000
Load Balancing Algorithm
based on priority usage
Dynamic load balancing in
multi agents systems
Заявитель
(патентообладатель),
страна. Номер заявки, дата
приоритета,
конвенционный
приоритет, дата
публикации
3
Stephen R. Wheat
Patent number: 5630129
Filing date: Dec 1, 1993
Issue date: May 13, 1997
Название изобретения
(полной модели, образца)
Сведения о действии
охранного
документа или
причина его
аннулирования
4
Dynamic load balancing of
applications
5
Действует
Antonio Juan Ransom,
Dennis James Wiest
Patent number: 6148324
Filing date: Jan 5, 1998
Issue date: Nov 14, 2000
Sasa Desic, Darko Huljenic,
Ignac Lovrek
Application number:
10/519,289
Publication number: US
2006/0031569 A1
Filing date: Jul 3, 2002
Prioritized load balancing
among non-communicating
processes in a time-sharing
system
Действует
Load balancing system
using mobile agents
Действует
94
3.2 Результаты поиска патентов в области распознавания изображений
Таблица 2
Патенты США в области распознавания изображений
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид и
номер охранного
документа.
Классификационный
индекс
1
2
Заявитель
(патентообладатель),
страна. Номер заявки, дата
Название изобретения
приоритета,
(полной модели, образца)
конвенционный
приоритет, дата
публикации
3
Сведения о действии
охранного документа или
причина его
аннулирования
4
5
Methods for image
processing and analisys
US 7480332
H04N 7/12
G06K 9/36
Samsung Electronics Co KR Bit rate control method and
10/667,970 23.01.2003 10- apparatus for MPEG-4 video Действует
2003-0004508 20.12.2009
coding
Methods for image
processing and analisys
US 7003061
H04N 9/47
G06K 9/36
H04N 7/18
Image extraction from
Adobe Systems Incorporated complex scenes in digital
CA 09/747,945 21.02.2006 video
Действует
Methods for image
processing and analisys
US 7170548
A47G 23/02
G06K 9/46
Denso Corporation JP
10/302,956 26.11.2001
2001-359412 30.01.2007
Obstacle monitoring device
using one-dimensional
signal
Действует
Methods for image
processing and analisys
US 7106348
G09G 5/00
G06K 9/00
G06K 9/20
Sanyo Electric Co., Ltd JP
09/994,829 12.08.1997 9217550 12.09.2006
Texture information
assignment method, object
extraction method, threedimensional model
generating method, and
Действует
95
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид и
номер охранного
документа.
Классификационный
индекс
1
2
Заявитель
(патентообладатель),
страна. Номер заявки, дата
Название изобретения
приоритета,
(полной модели, образца)
конвенционный
приоритет, дата
публикации
3
Сведения о действии
охранного документа или
причина его
аннулирования
4
5
apparatus thereof
Methods for image
processing and analisys
US 7599773
G06K 9/32
G08G 1/14
Aisin Seiki Kabushiki
Kaisha JP 10/928,256
29.08.2003 2003-209745
2003-209745 6.10.2009
Parking assist device
Methods for image
processing and analisys
US 7218354
H04N 7/01
G06K 9/32
G06K 9/40
H04N 11/20
Sony Corporation JP
10/492,696 19.08.2002
2002-238005 15.05.2007
Image processing device and
method, video display
device, and recorded
Действует
information reproduction
device
Methods for image
processing and analisys
US 7002604
G09G 5/00
G06K 9/32
G06T 1/60
G09G 5/36
SavaJe Technologies, Inc
MA 10/287,871 21.02.2006
Screen rotation
Methods for image
processing and analisys
US 6985636
G06K 9/40
Semenchenko, Michail
Grigorievich RU 09/786,477
Image processing method
3.09.1998 98116546
10.01.2006
Methods for image
processing and analisys
US 6208713
H04M 1/274
H04M 1/27
Nortel Networks Limited
CA 08/760,966 27.03.2001
96
Действует
Действует
Действует
Method and apparatus for
locating a desired record in a Действует
plurality of records in an
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид и
номер охранного
документа.
Классификационный
индекс
1
2
Заявитель
(патентообладатель),
страна. Номер заявки, дата
Название изобретения
приоритета,
(полной модели, образца)
конвенционный
приоритет, дата
публикации
3
G06K 9/22
H04M 1/56
H04M 1/2745
H04M 3/42
H04M 3/493
H04M 3/487
H04M 1/57
H04M 001/64
Сведения о действии
охранного документа или
причина его
аннулирования
4
5
input recognizing telephone
directory
Methods for image
processing and analisys
US 6751353
G06K 9/00
G06K 9/74
Grigorievich; Yakhno
Vladimir RU, Ivanovich;
Khil'ko Alexander RU,
Vladimirovna; Nuidel Irene
RU
Alexandrovich; Telnykh
Alexander RU, Nikolaevich;
Bondarenko Boris RU,
Alexandrovich; Sborshikov
Vladimir RU 09/786,662
08.07.1999 99115239
15.06.2004
Methods for image
processing and analisys
US 7822233
G06K 9/00
Fujifilm Corporation JP
10/734,259 26.10 2010
97
Method for adaptive
recognition of information
images and system of
implementation thereof
Действует
Method and apparatus for
organizing digital media
based on face recognition
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид и
номер охранного
документа.
Классификационный
индекс
1
2
Заявитель
(патентообладатель),
страна. Номер заявки, дата
Название изобретения
приоритета,
(полной модели, образца)
конвенционный
приоритет, дата
публикации
3
Сведения о действии
охранного документа или
причина его
аннулирования
4
5
Methods for image
processing and analisys
US 6157742
G06T 9/00
G06K 009/36
G06K 009/46
Sanyo Electric Co., Ltd JP
09/096,493 13.06.1997 9157160 5.12.2000
Method for expanding data
Действует
Methods for image
processing and analisys
US 5600733
G06T 7/00
G06K 009/00
Kulicke and Soffa
Investments, Inc. DE
08/144,002 4.02.1997
Method for locating eye
points on objects subject to
size variations
Действует
Methods for image
processing and analisys
US 5852685
G06K 9/03
G06K 009/03
G06K 009/62
Cognitronics Imaging
Systems, Inc. CA
08/558,830 22.12.1998
Enhanced batched character
Действует
image processing
Methods for image
processing and analisys
US 6865300
G06K 9/03
G06K 9/36
G06K 9/40
G06K 009/36
G06K 009/03
Nik Multimedia, Inc. CA
10/824,664 8.03.2005
User definable image
reference points
Methods for image
processing and analisys
US 7831104
G06K 9/36
G06K 9/46
General Electric Company
NY 11/741,388 9.11.2010
Using geometric wavelets
based on active contours for Действует
signal processing
Methods for image
US 7831103
Tata Consultancy Services
Digital images
98
Действует
Действует
Предмет поиска (объект
исследования, его
составные части)
Страна выдачи, вид и
номер охранного
документа.
Классификационный
индекс
1
2
Заявитель
(патентообладатель),
страна. Номер заявки, дата
Название изобретения
приоритета,
(полной модели, образца)
конвенционный
приоритет, дата
публикации
3
Сведения о действии
охранного документа или
причина его
аннулирования
4
5
processing and analisys
G06K 9/36
G06K 9/46
Methods for image
processing and analisys
US 7831102
G06K 9/36
LG Electronics Inc. KR
11/622,591 9.11.2006 102006-01100338 9.11.2010
Processing multiview video
Действует
Methods for image
processing and analisys
US 7,831,101
G06K 9/36
Scalado AB SE 12/314,673
27.11.2003 0303204
9.11.2010
Method for processing a
digital image and image
representation format
Действует
Sony Corporation JP
10/560,865 16.06.2003
P2003-170724 2.11.2010
Image processing device,
image processing method,
information processing
device, information
processing method,
information recording
device, information
recording method,
information reproduction
device, information
reproduction method,
recording medium and
program
Дествует
Methods for image
processing and analisys
US 7,826,669
G06K 9/36
H04B 1/66
Limited IN 11/716,781
17.03.2006 382/MUM/2006
9.11.2010
99
4
Выбор математического аппарата и формализация задач синтеза
архитектур сервис-ориентированных информационно-вычислительных
систем
4.1 Термины компьютерной графики и их роль при разработке методов
трекинга головы
В диссертационной работе используется терминология компьютерной графики.
Используемые термины общеизвестны, но из-за наличия различных толкований у разных
авторов необходимо привести их краткое описание.
Векторная и растровая графика. Векторная графика оперирует понятием
векторов. Например, линию можно задать парой векторов – координат ее начальной и
конечной точек. Векторные изображения легко модифицировать (перемещать, вращать,
масштабировать и т.д.), применяя к векторам преобразования. Если вектор принадлежит
трехмерному пространству, то говорят о трехмерной (3D) графике, если двумерному – о
2D графике.
В растровой графике изображение является двумерным массивом, состоящим из
дискретных элементов (точек) также называемых пикселями. Растровое изображение
может содержать различный набор цветов, например, 256 градаций серого цвета либо
палитру, содержащую несколько миллионов цветов.
Если изображение содержит оттенки серого (англ. grayscale), то значение пикселя
такого изображения называется его интенсивностью. Интенсивность пикселя – скалярная
величина, принимающая целые значения в диапазоне от 0 до 255.
Для изображений, содержащих богатую цветовую палитру, говорят не об
интенсивности, а о значении цвета пикселя. Цвет принято задавать набором из трех
компонентов RGB (англ. Red, Green, Blue – красный, зеленый, синий). Каждый компонент
цвета – это скаляр, принимающий целые значения в интервале от 0 до 255. Можно
преобразовать цветное RGB изображение в grayscale-изображение, однако обратное
преобразование (grayscale в RGB) невозможно.
Векторное изображение можно перевести в растровое, такой процесс называется
растеризацией.
Библиотеки OpenCV и OpenGL. В процессе многолетней работы различных
исследователей в области компьютерной графики был выработан стандарт, называемый
спецификацией OpenGL19. Стандартная библиотека компьютерной графики OpenGL
(англ. Open Graphics Library) – это программный интерфейс к графическим аппаратным
средствам, позволяющий задавать объекты и операции, вовлеченные в выработку
высококачественной графики. OpenGL нацелен на работу с векторной 3D и 2D графикой,
которая после растеризации может быть отображена на дисплее пользователя.
Подчеркнем, что OpenGL – это лишь спецификация, набор правил, которым
должна следовать реализация. Например, различные реализации OpenGL могут
использовать различные алгоритмы для растеризации примитивов и отличаться в других
аспектах. Спецификация OpenGL четко обозначает набор свойств, инвариантных для
любой реализации.
В области компьютерного зрения также постепенно возник свой стандарт –
библиотека компьютерного зрения OpenCV (англ. Open Computer Vision Library). Это
коллекция функций, написанных на языке C, реализующих многие популярные
алгоритмы обработки изображений и алгоритмы компьютерного зрения. OpenCV больше
нацелен на работу с растровой графикой, хотя имеет средства и для работы с векторами.
Использование OpenGL в контексте данной работы в большинстве случаев
позволяет избавиться от необходимости самостоятельной программной реализации
сложных алгоритмов построения проекции объекта, проверки его фрагментов на
видимость, построения растра для каждого видимого фрагмента, интерполяции, а также
позволяет использовать преимущества аппаратного ускорения для выполнения функций
цифровой обработки изображений.
Использование OpenCV в контексте данной работы предоставляет средства для
работы с растровыми изображениями IplImage, числовыми матрицами CvMat
(инвертирование матрицы cvInvert() и другие операции), для вычисления градиента
изображения cvSobel(), преобразования цветного RGB изображения в grayscaleизображение cvCvtColor(), детекции лица человека cvHaarDetectObjects().
Трехмерная модель объекта. Голову человека, как трехмерный объект (рис. 2.1,
а), в компьютерной 3D графике можно представить в виде модели, задающей
геометрическую форму объекта и текстуру (рис. 2.1, б, в).
Геометрическая форма модели объекта может быть аппроксимирована набором
примитивных геометрических фигур. OpenGL позволяет использовать различные
примитивные
фигуры
(рис.
2.1,
г),
такие
как
треугольники
(англ.
triangles),
последовательности треугольников (англ. triangle strips), плоские четырехугольники (англ.
OpenGL [Электронный ресурс] – Электрон. дан. – 1997. – Режим доступа: http://opengl.org, свободный. –
Загл. с экрана. – Текст на экране англ.
19
101
quads), плоские многоугольники (англ. polygons, полигоны). Для удобства создания
моделей головы будем использовать треугольники, хотя использование других
примитивных фигур не ограничено.
Каждая примитивная фигура задается координатами составляющих ее вершин.
Вершина (англ. vertex) задается командой glVertex3d(). Вершине присваиваются
трехмерные координаты, задающие ее положение в трехмерном пространстве. Как уже
было упомянуто ранее, значение цвета вершины определяется тремя компонентами RGB.
Рисунок 2.1 – Моделирование головы. а) Трехмерный объект – голова.
б) Модель объекта и связанная с ним система координат объекта (СКО). в) Текстура,
накладываемая на поверхность модели объекта, и система координат текстуры. г)
Примитивные фигуры. Стрелками показано направление обхода вершин по часовой
стрелке
Важна последовательность задания вершин примитива (направление их обхода),
так как от нее напрямую зависит видимость примитивной фигуры. Считается, что если
при проецировании вершин на плоскость кадра порядок обхода вершин по часовой
стрелке, то примитив видим, в противном случае – невидим.
102
Вершине фигуры также можно назначить двумерные текстурные координаты
( s; t )T , которые определяют соответствующую вершине точку на двумерной текстуре.
Для задания текстурных координат вершины используется команда glTexCoord2d().
Текстуры. Сложный визуальный облик модели объекта задается текстурой (англ.
texture) – двумерным растровым изображением, накладываемым на геометрическую
поверхность модели объекта (рис. 2.1, в). Размер текстуры (ширина или высота растра)
обычно принимает значение, кратное степени двойки (128, 256, 512, …). Чтобы избежать
сложностей с обработкой текстур разных размеров, вводятся нормализованные
текстурные координаты. Точка текстуры задается нормализованными координатами
( s; t )T , где s  [0;1] , t  [0;1] . Начало текстуры (англ. origin) всегда расположено в ее
нижнем левом углу.
Списки отображения. Список отображения OpenGL (англ. display list) – это
последовательность команд OpenGL и их аргументов, прошедшая предобработку
(компиляцию) и сохраненная для последующего выполнения. Сохранив команды в списке
отображения, можем выполнить их неоднократно из разных мест программы командой
glCallList(). При этом экономится время на предобработку команд, что улучшает
общую производительность процедуры рисования. Списки отображения рекомендуется
использовать для задания моделей недеформируемых объектов (для деформируемых
объектов ими пользоваться нецелесообразно).
Буфер кадра. Под буфером кадра (англ. framebuffer) в OpenGL понимается
совокупность всех буферов, задействованных в рисовании. Сюда входят буфер цвета
(англ. color buffer), буфер глубины (англ. depth buffer) и другие. Буфер цвета представляет
собой растровое изображение, в которое идет рисование. Буфер глубины – это
вспомогательный буфер, содержащий нормализованную глубину для каждого пикселя, и
применяемый в алгоритме отсечения невидимых фрагментов. Остальные буферы также
используются внутри OpenGL, но в данной работе не применяются.
Режим рисования. В режиме рисования (англ. rendering mode), команды OpenGL
приводят к рисованию примитивных фигур, составляющих модель объекта в буфер кадра.
Происходит растеризация – процесс, при котором примитивы преобразуются из
векторного формата в растровый. Растеризация состоит из двух этапов: 1) определяются
пиксели растра, в которые проецируется примитив; 2) каждому пикселю растра
назначается соответствующая глубина и один или несколько компонентов цвета.
Режим
отклика.
OpenGL
переводится
в
режим
отклика
командой
glRender(GL_FEEDBACK). В режиме отклика (англ. feedback mode) рисование в буфер
103
кадра не производится. Вместо этого, информация о примитивах, которые были бы
отображены в буфер кадра, выдается пользователю в виде буфера отклика. Буфер отклика
содержит цепочку значений типа float, кодирующих каждый отображенный примитив
(его тип, координаты вершин, цвета вершин, текстурные координаты вершин и т. д.). Эта
информация может быть использована для того, чтобы узнать в какие пиксели кадра
проецируется каждая видимая примитивная фигура.
Системы координат. Спецификацией OpenGL определены следующие системы
координат (рис. 2.2).
Система нормализованных текстурных координат жестко связана с текстурным
изображением, накладываемым на поверхность модели объекта.
Система координат объекта (СКО) жестко связана с моделью объекта. Например,
если модель объекта является телом вращения, то центр СКО (точка O на рис. 2.2, а)
может совпадать с центроидом тела вращения, а одна из ее осей – с осью вращения тела.
Система координат наблюдателя (СКН) жестко связана с наблюдателем
(камерой). Центр СКН совпадает с объективом камеры (точка E на рис. 2.2, а). Ось Z e
всегда направлена на наблюдателя. Положение СКО измеряется относительно СКН. В
качестве единицы измерения в СКО и СКН используем метр.
Системы СКО и СКН будем называть правыми системами координат.
Определение. Если большой палец правой руки принять за направление X,
указательный за направление Y, а отогнутый средний за направление Z, то образуется
правая система координат.
Рисунок 2.2 – Системы координат. а) Проецирование модели объекта на экран.
Система координат объекта и система координат наблюдателя. б) Растровое
изображение – буфер кадра и связанные с ним нормализованная экранная система
координат и система координат окна
104
Система нормализованных экранных координат жестко связана с плоскостью
кадра. Ось X d всегда направлена вправо, а ось Yd – вверх. Точка отсчета экранной
системы координат совпадает с центром экрана (o x , o y ) . Координаты могут принимать
(безразмерные) значения в интервале  1;1 .
Система координат окна жестко связана с окном вывода (буфером кадра). Так как
буфер кадра является растровым изображением, единицы измерения в системе координат
окна – пиксели. Обозначим координаты пикселя изображения через X w  ( xw ; y w ; z w )T
(третья координата z w задает нормализованную глубину (удаленность) проецируемой в
данный пиксель точки модели). В тех случаях, когда z w не используется, будем
упрощенно обозначать координаты пикселя через x  ( x; y)T .
Оконные координаты могут быть дробными, тогда говорят о субпиксельной
точности. Диапазон значений оконных координат:
x w  [0; p x  1] ;
y w  [0; p y  1] ;
z w  [0;1] . Здесь p x и p y – соответственно ширина и высота окна. Точка отсчета оконной
системы координат всегда связана с левым нижним пикселем экрана (точка B на рис. 2.2,
б).
Чтобы избежать неоднозначности, оговоримся, что термины «экран», «окно»,
«область вывода», «плоскость кадра» и «буфер кадра» обозначают одну и ту же сущность
– растровое изображение, в котором реализуется процедура рисования.
3D координаты точки. В компьютерной графике трехмерные (3D) координаты
точки принято задавать четырехмерным вектором X  ( x, y, z, w)T . Такие координаты
называются однородными (англ. homogeneous coordinates). Введение однородных
координат упрощает вычисления при использовании проекций.
Особенность однородных координат заключается в том, что координаты точки X
при умножении на скаляр а не меняются: X  aX , при том, что X  aX . Компонента w
обычно равна единице (за исключением операции проецирования, когда w может быть не
равна единице).
Матричные
преобразования.
В
компьютерной
графике
преобразование
координат осуществляется умножением некой матрицы преобразования G (в случае
однородных координат она обычно имеет размер 4 4 ) слева на вектор координат X
точки: Y  GX , где Y – результат преобразования, также является вектором координат.
Отметим, что операция перемножения матриц не ассоциативна, то есть результат
умножения зависит от порядка следования аргументов.
105
В спецификации OpenGL определяются следующие операции и матрицы
преобразования координат, которые позволяют моделировать движение твердого тела в
трехмерном пространстве. При движении твердого тела расстояние  между любыми
двумя точками A и B тела остается неизменным:  ( A, B)  const .
Параллельный перенос – это перемещение каждой точки модели объекта на
некоторое расстояние в заданном направлении. Когда мы говорим о перемещении модели
объекта, то подразумеваем перемещение СКО, которая жестко связана с моделью объекта.
Матрица параллельного переноса T (англ. translation matrix) задается следующей
формулой:
1 0 0 tx 


0 1 0 ty 
T
,
0 0 1 tz 


0 0 0 1 


где компоненты t x , t y и t z задают вектор перемещения.
(2.1)
Вращение – это движение каждой точки модели объекта по окружности вокруг
некой оси вращения. Матрица вращения R размера 4  4 (англ. rotation matrix) в общем
случае имеет вид
 r11 r12

r
r
R   21 22
r
r
 31 32
0 0

Параметризовать вращение можно
0

0
.
(2.2)
0

0 1 
несколькими способами [119, p. 11]. Один из
r13
r23
r33
наиболее распространенных – использование углов Эйлера, т.е. декомпозиция вращения
на вращение вокруг трех различных осей. Так, например, матрицу R можно представить
как произведение трех матриц R y , R z , R x :
R ( ,  , )  R y ( )R z ( )R x ( ) ,
(2.3)
где углы  ,  ,  называют углами Эйлера, а матрицы R y , R z и R x соответственно
задают последовательное вращение вокруг осей Ye , Z e и X e , и определяются по
формулам
 cos( )

 0
R y    
 sin(  )

 0

106
0 sin(  ) 0 

1
0
0
,
0 cos( ) 0 

0
0
1 
 cos( )  sin(  )

 sin(  ) cos( )
R z    
0
0

 0
0

0 0

0 0
,
1 0

0 1 
0
0
1

 0 cos( )  sin(  )
R x    
0 sin(  ) cos( )

0
0
0

0

0
.
0

1 
Вращение с использованием каждой из матриц R y , R z и R x согласуется с
правилом правого буравчика.
Определение. Правым буравчиком называется вращение, когда большой палец
правой руки совпадает с положительным направлением оси вращения, а полусогнутые
остальные пальцы указывают в направлении вращения.
Будем различать вращение в плоскости изображения (англ. in-plane rotation), т.е.
вокруг оси Z e СКН, и вращение вне плоскости изображения (англ. out-of-plane rotation),
т.е. вращение вокруг осей X e и Ye СКН.
На практике удобно объединить операции перемещения (2.1) и вращения (2.2) в
одной матрице M (размера 4  4 ):
где T' (t x ,t y , t z )T
 R' T' 
 ,
M  TR  
(2.4)
 01x 3 1 
– вектор параллельного переноса из формулы (2.1), определяющий
 r11 r12

смещение СКО относительно точки отсчета СКН; R '   r21 r22
r
 31 r32
r13 

r23  – подматрица
r33 
размера 3 3 из формулы (2.2), 013 – вектор-строка, состоящая из нулей.
Отметим, последовательность преобразований в формуле (2.4): сначала к точке
объекта применяется операция вращения, а затем операция параллельного переноса.
Матрица (2.4) в компьютерной графике имеет название матрица модель-вид M
(англ. model-view matrix). В дальнейшем будем использовать данный термин.
Вектор параметров, от которых зависит матрица модель-вид (2.4), будем называть
вектором конфигурации:
c  ( , , , t x , t y , t z )T ,
(2.5)
где  ,  ,  – углы Эйлера, задающие вращение модели; t x , t y , t z – параметры
параллельного переноса.
107
Имея вектор конфигурации, можем задать матрицу модель-вид M.
Обратное преобразование. Важна и обратная задача: по имеющейся матрице
модель-вид получить вектор конфигурации. Не составляет сложности выделить из
матрицы M компоненты вектора параллельного переноса T' (t x ,t y , t z )T . Выделение углов
Эйлера из подматрицы вращения R ' несколько сложнее. Воспользуемся способом,
описанным по адресу20. Распишем произведение матриц R y , R z и R x :
R 
 cos( ) cos( )  cos( ) sin( ) cos( )  sin( ) sin( ) cos( ) sin( ) sin( )  sin( ) cos( ) 


sin( )
cos( ) cos( )
 cos( ) sin( )

 . (2.6)
  sin( ) cos( ) sin( ) sin( ) cos( )  cos( ) sin( )  sin( ) sin( ) sin( )  cos( ) cos( ) 
Из матрицы (2.6) видно, что
  arctan( r31 / r11 ) ,   arcsin( r21) и
  arctan( r23 / r 22 ) ,
за
исключением
случая
  90 ,
когда
имеем
точки
неопределенности.
При   90  , имеем cos( )  0 , sin(  )  1 :
R 
 0 cos( ) cos( )  sin( ) sin( )  cos( ) sin( )  sin( ) cos( ) 


0
0
  1
 .
 0  sin( ) cos( )  cos( ) sin( ) sin( ) sin( )  cos( ) cos( ) 
Из тригонометрии известно, что
 cos( ) sin(  )  sin(  ) cos( )  sin(    ) ,
sin(  ) sin(  )  cos( ) cos( )  cos(   ) ,
отсюда    arctan( r31 / r33 ) . Положим   0 , тогда   arctan( r31 / r33 ) .
По аналогии для случая   90  получаем   arctan( r31 / r33 ) ,   0 . В таблице 2.1
приведен псевдокод, кратко описывающий суть алгоритма.
Таблица 2.1 – Псевдокод, иллюстрирующий извлечение параметров вращения из
матрицы модель-вид
Если r21  1 , то {
  arctan( r31 / r33 )
   / 2
 0
}
Иначе если r21  1 , то {
  arctan( r31 / r11 )
  /2
 0
}
Иначе {
EuclideanSpace - building a 3D world [Электронный ресурс] / автор M. Baker – Электрон. дан. – 1998. –
Режим доступа: http://www.euclideanspace.com, свободный. – Загл. с экрана. – Текст на экране англ.
20
108
  arctan( r31 / r11 )
  arcsin( r21 )
  arctan( r23 / r22 )
}
Твист-преобразование. Рассмотрим еще один способ параметризации вращения
твердого тела. Вращение точки вокруг вектора v  v x , v y , v z  единичной длины ( v  1 ) на
угол  можно задать формулой Родригеса [98, p. 27]:
R( v, )  vv T  cos( )(E  vv T )  sin vˆ ,
 0

где E – единичная матрица; vˆ   v z
 v
 y
 vz
0
vx
(2.7)
vy 

 v x  – осесимметричная матрица.
0 
При малых углах  можно приближенно считать R ( v, )  E  vˆ , что делает эту
формулу вычислительно привлекательной для параметризации малых вращений.
Для малых углов  (и для малых компонентов параллельного переноса) введем
матрицу трансформации, содержащую в себе (2.1) и (2.7), и которую будем называть
твист-преобразованием ξ̂ (англ. twist, винтовое движение):
 z  y tx 
 1



1


t


z
x
y
ξˆ  
,
(2.8)
  y x
1
tz 


 0
0
0
1 

где  x  v x ,  y  v y , z  vz . Вектор параметров, от которых зависит (2.8) обозначим
ξ  x ,  y , z , t x , t y , t z  ; компоненты  x ,  y ,  z задают параметры вращения, t x , t y , t z –
T
перемещения.
Известно, что недостатком матрицы вращения (2.3) при использовании ее в
аналитическом задании выражений для поиска параметров движения модели объекта
является то, что она подвержена вырожденности, и не способствует упрощению
аналитических выражений. Твист-преобразование (2.8) предлагает более элегантное
решение и позволяет записать модель движения модели головы сравнительно просто и
элегантно. Матрица (2.8) успешно применяется в работах [51; 109].
Точечная модель камеры. Точечная модель камеры (англ. pinhole camera) для
проецирования 3D точек на плоскость кадра использует матрицу перспективного
проецирования (также см. функцию OpenGL glFrustum()):
109
r l
 2n

0
0 

r l
r l

2
n
t
b
 0
0 
,
P
(2.9)
t b
t b

f  n  2 fn 
0

 0

f n f n

0
1
0 
 0
где l, r, b, t, n, f – координаты соответственно левой, правой, нижней, верхней, ближней и
дальней плоскостей отсечения (англ. clipping planes).
Координаты ближней и дальней плоскостей отсечения всегда выбирают
произвольно, рекомендуется лишь, чтобы ближняя плоскость отсечения n не была очень
близка к нулю (это влияет на производительность буфера глубины). Более подробно
плоскости отсечения описаны в спецификации OpenGL.
В случае, когда l  r и b  t , говорят о симметричной перспективной проекции.
Для задания матрицы симметричной перспективной проекции удобно пользоваться
следующей формулой (также см. функцию gluPerspective()):
 fL

 aspect
 0
P
 0

 0
0
0
fL
0
f n

f n
1
0
0



0 
,
2 fn 


f n
0 
0
(2.10)
 fovy 
где f L  ctg 
 – фокальная длина объектива, ctg – тригонометрическая операция
 2 
котангенс; fovy – угол обзора по вертикали (англ. field of view), выраженный в градусах;
aspect 
px
; p x и p y – соответственно ширина и высота кадра в пикселях.
py
Отметим, что реальные камеры также могут вносить дополнительные искажения
линзы (англ. lens distortion), которые для простоты считаем пренебрежимо малыми и не
учитываем.
Преобразования координат в процедуре растеризации. В процессе отображения
модели объекта в буфер кадра векторные примитивы проходят процедуру растеризации –
перевода из векторного формата в растровый, используя следующую последовательность
преобразований координат: объектные координаты

координаты относительно
наблюдателя  координаты отсечения  нормализованные экранные координаты 
оконные координаты. Рассмотрим эту последовательность подробнее.
Координаты точки модели объекта относительно СКО задаются в виде вектора
объектных координат X o  ( xo ; y o ; z o ; wo ) T (англ. object coordinates).
110
Объектные координаты X o умножаются на матрицу модель-вид M , при этом они
преобразуются в координаты относительно наблюдателя (СКН) X e  ( xe ; ye ; ze ; we )T (англ.
eye coordinates):
Xe  MXo .
(2.11)
Умножая матрицу проецирования P на вектор Xe , получим вектор координат
отсечения X c  ( xc ; yc ; zc ; wc )T (англ. clip coordinates):
X c  PX e .
Разделив компоненты вектора X c на
(2.12)
wc , получим вектор нормализованных
экранных координат X d  ( xd ; yd ; z d )T (англ. термин perspective division):
x y
X d  PerspDiv X c    c ; c
 wc wc
Нормализованные экранные координаты
T
z 
; c  .
(2.13)
wc 
(2.13) могут принимать значения в
интервале [1;1] . Отметим, что в работе [119, p. 2] предлагается использовать несколько
иной интересный способ нормализации экранных координат, который аргументируется
упрощением вычислений. В данной же работе стандартность принятых в компьютерной
графике
преобразований
имеет
приоритетное
значение,
поскольку используется
стандартная библиотека OpenGL.
Преобразование нормализованных экранных координат (2.13) в
оконные
координаты имеет вид:
 xw 
 ( p x / 2) xd  o x 
 


 y w   WndTfmX d    ( p y / 2) y d o y  ,
z 
 0,5 z  0,5 
d
 w


(2.14)
где p x , p y – соответственно ширина и высота окна (в пикселях); (ox , oy )T – координаты
центра окна (в пикселях).
Обратное преобразование. Имея оконные координаты X w для вершины, можно
вычислить ее координаты относительно наблюдателя Xe путем применения к оконным
координатам X w обратного оконного преобразования и умножения на обращенную
матрицу проекции:
T


(2.15)
xe ; y e ; z e ; we   WndTfm ( X w )  P  2 x w  1; 2 y w  1;2 z w  1;1 ,
p
p
x
y


T
где P – матрица проекции (2.9); ( xw ; y w ; z w ) – оконные координаты точки; p x и p y –
T
1
1
ширина и высота окна соответственно. Отметим, что таким образом работает функция
OpenGL gluUnproject().
111
4.2
Моделирование головы человека
Далее целесообразно рассмотреть
принципы,
согласно
которым
строится
геометрическая форма модели головы и задается текстурное изображение для этой
поверхности.
Задание геометрической поверхности модели головы. Пространственное
положение жесткой (недеформируемой) модели головы на i-м видеокадре можно задать
набором из шести параметров – вектором конфигурации c i (2.5). В формуле (2.5)
компоненты t x  x eO , t y  yeO и t z  z eO – координаты центра системы координат объекта
(точка О на рис. 2.2, а) относительно СКН;  ,  и  – углы Эйлера, задающие поворот
СКО относительно СКН. Известно, что задание вектора конфигурации c i эквивалентно
заданию матрицы модель-вид M (2.4).
Для задания геометрической формы цилиндрической, эллипсоидальной и плоской
моделей головы будем пользоваться аналитическим выражением вида [54, p. 324]:
X o  f ( s, t ) ,
(2.16)
где Xo  xo , yo , zo ,1 – вектор объектных координат точки поверхности модели; f(.) T
выражение, задающее соответствие между точкой двумерной текстуры ( s, t )T и точкой X o
трехмерной поверхности модели; s и t – нормализованные координаты точки текстуры
( s  [0;1] , t  [0;1] ).
Поверхность модели головы будем аппроксимировать простыми геометрическими
фигурами, например треугольниками. Псевдокод, демонстрирующий данную процедуру
приведен в табл. 2.2.
Таблица 2.2 – Аппроксимация поверхности модели треугольными примитивами
float s, t;
float s = 1/nxstacks;
float t = 1/nystacks;
for(s=0; s<=1- s ; s+= s )
{
for(t=0; t<=1- t ; t+= t )
{
// Вычисляем координаты вершин для двух треугольных
примитивов
v11  f (s, t );
v12  f (s  s, t );
v 21  f (s, t  t ); v 22  f (s  s, t  t );
// Задаем координаты вершин и текстурные координаты
двух треугольников
// Порядок обхода вершин по часовой стрелке
glBegin(GL_TRIANGLE);
112
glVertex3d( v11 ); glTexCoord2d(s,t);
glVertex3d( v12 ); glTexCoord2d( s  s ,t);
glVertex3d( v 22 ); glTexCoord2d( s  s, t  t );
glEnd();
glBegin(GL_TRIANGLE);
glVertex3d( v11 ); glTexCoord2d(s,t);
glVertex3d( v 22 ); glTexCoord2d( s  s, t  t );
glVertex3d( v 21 ); glTexCoord2d( s, t  t );
glEnd();
}
}
Так как геометрическая форма модели головы не может деформироваться, будем
хранить информацию о вершинах модели в списке отображения OpenGL. Это позволяет
ускорить производительность рисования.
Далее
приведем
выражения
для
задания
поверхности
цилиндрической,
эллипсоидальной, плоской модели и модели Candide-3.
Плоская модель головы (рис. 2.3, а) представляет собой плоский прямоугольник,
параметрами которого являются ширина sizex и высота sizey, число фрагментов по
горизонтали nxstacks и по вертикали nystacks. Выражение для задания точек поверхности
плоской модели головы имеет вид
T

1

 1 
X o   sizex  s  ; sizey  t  ;0;1 .
2

 2 

Плоская модель моделирует форму лица, а не всей головы целиком. При
значительных поворотах головы вне плоскости изображения проекция этой модели на
плоскость кадра вырождается в отрезок линии. Поэтому пользоваться данной моделью
целесообразно лишь тогда, когда пользователь незначительно отклоняет голову вне
плоскости кадра.
Эллипсоидальная модель головы (рис. 2.3, б) задается тремя радиусами RX , RY и
RZ (соответственно вдоль осей X o , Yo и Z o СКО), числом делений по горизонтали nslices
и по вертикали nstacks. Выражение для задания поверхности будет иметь вид
Xo   RX sin t cos2s ;RY cost ; RZ sin( t ) sin 2s ;1 .
T
113
а)
б)
в)
г)
Рисунок 2.3 – Модели головы и накладываемые на них текстуры: а) плоская
модель; б) эллипсоид; в) цилиндр; г) модель Candide-3
Эллипсоид, в отличие от плоской модели, моделирует поверхность всей головы, а
не только лица, поэтому эллипсоидальную модель можно использовать в случаях, когда
пользователь отклоняет голову вне плоскости изображения. В каждый момент времени к
камере повернута лишь часть эллипсоида (видна лишь часть его текстуры). Поэтому при
поворотах головы вне плоскости изображения необходимо «достраивать» текстуру
модели [49].
Цилиндрическая модель головы представляет собой трехмерную цилиндрическую
поверхность, причем нас интересует только боковая поверхность цилиндра, повернутая к
наблюдателю (рис. 2.3, в). Параметрами модели являются радиус цилиндра R и его высота
h, число делений по горизонтали nslices и по вертикали nstacks. Выражение для задания
его поверхности имеет вид
T


 1
Xo    R cos( 2s); h t  ; R sin( 2s);1 .
 2


Цилиндр, также как и эллипсоид, моделирует поверхность всей головы, а не только
лица, поэтому его можно использовать в случаях, когда пользователь отклоняет голову
вне плоскости изображения. При поворотах головы вне плоскости изображения также
требуется «достраивать» текстуру модели, так как в каждый момент времени видна лишь
часть головы.
Геометрическую форму модели Candide-3 (рис. 2.3, г) невозможно описать простой
аналитической зависимостью вида (2.16). Для задания поверхности этой модели
114
воспользуемся числовыми данными, приведенными в работе [37]. Данные21, представляют
собой два массива: массив 3D координат 113 вершин, и массив, задающий ребра между
вершинами из первого массива, что позволяет построить 184 треугольника, составляющих
модель Candide-3.
Соответствие между вершинами и точками текстуры модели задается следующим
образом. Пусть X o  ( xo , yo , zo ,1)T – объектные координаты вершины из первого массива,
тогда нормализованные координаты текстуры для этой вершины задаются как
s  xo sizex  0,5 , t  yo sizey  0,5 , где sizex и sizey – соответственно ширина и высота
модели.
Модель Candide-3 – это маска лица. Как и плоская модель, она не отражает форму
всей головы. Поэтому ее не целесообразно использовать при значительных поворотах
головы вне плоскости изображения.
Итак, мы знаем, как задать положение модели головы в пространстве и ее
геометрическую поверхность, далее рассмотрим процедуру получения текстурного
изображения для поверхности модели головы.
Задание текстуры для поверхности модели головы. Имея полученный с вебкамеры видеокадр, на котором отображена проекция головы пользователя (проекция
реального объемного тела), построим текстуру для модели головы. Для этого необходимо
задать соответствие, обратное (2.16): ( s; t )T  f 1 ( X o ) . Аналитическое задание сложно,
поэтому поступим следующим образом.
Пусть модель состоит из простых геометрических фигур, причем каждой вершине
фигуры соответствует пара текстурных координат. Отобразим модель в режиме отклика
OpenGL. Для кодирования информации о координатах текстуры для каждой вершины
треугольника используем RGB значение цвета этой вершины (положим R=s, G=t; B не
используется). Соответствующий фрагмент кода представлен в таблице 2.3.
Таблица 2.3 – Фрагмент кода С++, отвечающий за задание вершины
/* Фрагмент
фигуры */
кода,
отвечающий
за
задание
вершины
простейшей
// 1. Сохраняем текущие текстурные координаты в виде RGB цвета
вершины,
// чтобы потом достать их из буфера отклика
glColor3d(s, t, 1); // R = s; G = t; B – не используется
// 2. Задаем текстурные координаты вершины
glTexCoord2d(s, t);
CANDIDE - a parameterized face [Электронный ресурс] / автор J. Ahlberg – Электрон. дан. – 2010. – Режим
доступа: http://www.icg.isy.liu.se/candide, свободный. – Загл. с экрана. – Текст на экране англ.
21
115
// 3. Задаем объектные 3D координаты вершины
glVertex3d(x, y, z);
При этом необходимо установить режим сглаживания цвета путем вызова функции
glShadeModel() с параметром GL_SMOOTH. Если при растеризации часть фигуры
выходит за границы кадра, реализация OpenGL может разбить фигуру на несколько
частей, но за счет сглаживания цвета каждая из этих частей будет иметь корректные
текстурные координаты.
Получив данные о том, в какие координаты окна X w проецируется каждая вершина
X o (и соответствующая ей точка текстуры ( s; t )T ), можно перевести соответствующие
фрагменты экрана во фрагменты текстуры с помощью функций OpenGL (рис. 2.4).
Рисунок 2.4 – Построение текстурного изображения для поверхности модели
головы. а) Исходное изображение, содержащее проекцию головы. Сеткой обозначены
области кадра, куда проецируется каждый треугольный фрагмент модели головы. б)
Полученная текстура поверхности модели obj_tex. Сеткой показано соответствие
частей текстуры и треугольных фрагментов модели
Приведем алгоритм построения текстуры для модели головы:
1. Определить ограничивающий прямоугольник  для проекции модели головы на
текущем кадре (процедура определения  описана ниже).
2. Создать текстуру OpenGL (обозначим ее через proj_tex) и скопировать в нее
область кадра  . Заметим, что процедура копирования из клиентской памяти в
память видеокарты – сравнительно медленная операция.
3. Отобразить модель в режиме отклика, для того, чтобы узнать, в какие оконные
координаты проецируется каждый видимый фрагмент модели.
116
4. В режиме рисования установить текстуру proj_tex в качестве текущей;
установить ортографическую проекцию. Проходя по буферу отклика, достать из
него оконные координаты вершин и соответствующие им текстурные координаты
и отобразить каждый из фрагментов в буфер кадра. При этом роль текстурных и
оконных координат меняется.
5. Сохранить полученную в буфере кадра текстуру obj_tex поверхности нашей
модели.
Построение изображения-проекции модели головы. Задав положение модели,
ее геометрическую поверхность и текстуру, можем построить проекцию модели на
плоскость кадра. В результате получим растровое изображение, которое также будем
называть шаблоном.
Для построения шаблона, произведем в режиме рисования OpenGL отображение
модели головы (рис. 2.5) в буфер кадра. OpenGL производит проверку на видимость для
каждого
примитива,
поэтому
невидимые
примитивные
фигуры
автоматически
отбрасываются. Далее скопируем полученное изображение из памяти видеокарты в
клиентскую память. Процедура копирования – сравнительно медленная операция на
некоторых видеокартах, и это является узким местом системы.
Рисунок 2.5 – Построение проекции модели головы. Прямоугольником обозначена область
проекции 
Определение
ограничивающего
прямоугольника
проекции
модели.
В
изображении-шаблоне определим наименьшую прямоугольную область  , в которую
целиком помещается проекция модели головы (показана прямоугольником на рис. 2.5).
Область  будем называть также ограничивающим прямоугольником (англ. bounding
box). Определение координат ограничивающего прямоугольника дает нам целевую
область на изображении, пиксели же вне этой области можно игнорировать, что улучшает
производительность.
117
Координаты области  можно вычислить путем отображения модели головы в
режиме отклика OpenGL. Отобразив модель в режиме отклика, находим минимальные и
максимальные оконные координаты вершин, проецируемых в буфер кадра. Определив их,
определим координаты вершин прямоугольника  .
4.3
Метод отслеживания головы человека
Пусть на каждом кадре видеопоследовательности отображена проекция головы
пользователя, имеющей некую пространственную конфигурацию c i , где i – номер кадра.
Необходимо: 1) инициализировать модель головы для первого кадра последовательности;
2) для каждого кадра, начиная со второго, определить параметры межкадрового движения
модели головы и оценить ее новую конфигурацию.
4.3.1 Инициализация модели головы
На первом кадре требуется задать параметры модели головы, такие как ее размеры
и конфигурацию в пространстве, а также параметры камеры (матрицу проецирования).
На пути реализации автоматического алгоритма инициализации модели головы
существуют следующие трудности:
1.
Для
автоматического
определения
приближенного
первоначального
положения головы можно воспользоваться 2D детектором лица или
мультивидовым детектором. Но точная автоматическая инициализация
модели головы на практике затруднена, так как методы детектирования
головы не обладают высокой точностью определения положения головы.
2.
Инициализация модели головы требует знания параметров камеры. В идеале
необходима процедура калибровки камеры (рис. 2.6), которая требует
определенных усилий от пользователя.
3.
Для каждого пользователя размер головы индивидуален, а автоматическое
определение размера головы при использовании монокулярной камеры
невозможно без вмешательства человека или наличия дополнительных
устройств.
4.
Для задания пространственной конфигурации модели головы нужно знать
дистанцию
от
головы
до
объектива
камеры,
что
также
затруднительным без дополнительного вмешательства человека.
118
является
Рисунок 2.6 – Процедура калибровки камеры. Пользователь держит перед камерой
изображение «шахматной доски». Компоненты матрицы проецирования определяются
автоматически путем анализа видеоизображения шахматной доски в нескольких
ракурсах
При человеко-машинном взаимодействии характерна ситуация, когда пользователь
компьютера сидит перед монитором ПК, ориентируя голову напротив камеры,
установленной на мониторе, в положении удобном для чтения (смотрит прямо в камеру).
Далее предложен приближенный алгоритм, ориентированный на этот частный случай, и
позволяющий инициализировать модель головы автоматически без необходимости
калибровки камеры и сложного взаимодействия с пользователем.
Алгоритм инициализации модели головы. Будем определять параметры
монокулярной камеры, конфигурацию и размер головы, исходя из упрощенного
предположения, а именно: при выбранных неким образом параметрах камеры, размере и
положении модели головы, проекция модели головы должна совпадать с изображением
головы на первом видеокадре.
Начнем с автоматического определения области лица на видеокадре (рис. 2.7). Для
определения приближенной прямоугольной области кадра, содержащей лицо, выгоднее
всего было бы воспользоваться одним из мультивидовых детекторов, но автору не
известно ни одной реализации таких алгоритмов, находящейся в свободном доступе и
обладающей
приемлемыми
характеристиками
производительности
и
точности
распознавания. Поэтому довольствуемся готовым алгоритмом распознавания образов,
предложенным П. Виолой и М. Джонсом [124], а именно его реализацией в библиотеке
OpenCV (см. функцию cvHaarDetectObjects()).
119
Рисунок 2.7 – Иллюстрация к алгоритму инициализации модели головы. а) Область
лица, определенная детектором Виола-Джонса. б) Схема проецирования цилиндрической
модели головы на плоскость кадра
Отметим особенность данного алгоритма: для обнаружения лица необходимо
смотреть прямо в камеру, при отклонении от плоскости кадра более 10  лицо
обнаруживается с трудом. С одной стороны это достоинство, так как фронтальное
изображение лица будет детектировано, а изображение лица со значительным
отклонением от плоскости кадра – нет. Но с другой стороны это и недостаток: при
небольшом отклонении от фронтального положения лицо также будет детектировано, что
внесет ошибку инициализации, так как мы предполагаем фронтальное положение лица.
Кроме того, алгоритм не очень точно определяет границы лица, поэтому можно говорить
лишь о приближенном определении прямоугольной области лица.
Итак, пусть пользователь расположил голову фронтально к камере (рис. 2.7, а).
Получим с помощью детектора координаты прямоугольной области F  x; y; w; h, в
которой предположительно находится лицо. Если в кадре обнаружено несколько
прямоугольников с лицами (например, если в кадре два собеседника либо еще одно лицо
определено ошибочно в том месте, где его на самом деле нет), то для простоты выберем
из них прямоугольник с максимальной площадью, а остальные отбросим.
Таблица 2.4 – Параметры камер Trust WB-1400T, Trek 310 и Pico iImage Webcam,
определенные в процессе калибровки утилитой calibrate из библиотеки OpenCV
Веб-камера
Размер
fovy, градусы
кадра, пикселей
Trust WB-1400T
352×288
Матрица
проецирования
27,1
120
 0,05
 3,39 0

4,15 0,47
 0
 0
0
...

 0
0
1

0

0
... 

0 
Trek 310
320×240
34,2
0,12 0 
 2,43 0


3,25 0,17 0 
 0
 0
0
... ...


 0
0
 1 0 

39,4
 0,04
 2,1 0

 0 2,79  0,08
0
0
...

0
0
1

Pico iMage
Webcam
640×480
PIKCU03W
0

0
...

0 
Второй проблемой, которую нужно решить, является определение параметров
камеры, т.е. компонентов матрицы проецирования P (2.9-2.10). Эта процедура аналогична
выбору линзы для объектива камеры. Каждая реальная камера обладает своей уникальной
матрицей проецирования, которая зависит от текущего масштаба объектива и
соотношения сторон кадра. Например, в таблице 2.4 приведены матрицы проецирования,
определенные в процессе калибровки, для веб-камер Trust WB-1400T, Trek 310 и Pico
iMage Webcam. Элементы матриц в третьем ряду заменены троеточиями, так как в
процессе калибровки они не определяются.
Но так как мы хотим избежать калибровки камеры, придется выбирать параметры
камеры произвольно. Будем использовать симметричную перспективную проекцию, хотя
из таблицы 2.4 видно, что у реальных веб-камер матрица проекции, не всегда
симметрична. Но использование симметричной перспективной проекции позволяет
упростить выражения для модели сопоставления пикселей в алгоритме регистрации
изображений.
Выберем параметр fovy для задания матрицы проецирования по формуле (2.10). Из
таблицы 2.4 можно заключить, что у анализируемых веб-камер этот параметр принимает
значения в диапазоне от 27 до 40 градусов. Положим fovy  35 , так как это значение
близко к среднему.
Координаты ближней и дальней плоскостей отсечения всегда выбирают
произвольно, рекомендуется лишь, чтобы ближняя плоскость отсечения n не была очень
близка к нулю. Установим соответственно n = 0,1 м и f = 10 м.
Теперь выберем размер и положение трехмерного объекта таким образом, чтобы
область проекции модели на видеокадре приближенно соответствовала области F.
Покажем это на примере цилиндрической модели головы.
121
Пусть высота H цилиндра примерно соответствует вертикальному размеру области
лица, заключенной между линией подбородка и линией волос. Считаем, что соотношение
ширины и высоты области F примерно соответствует соотношению диаметра и высоты
цилиндра:
H
h
 ,
2R w
откуда можно вычислить радиус цилиндра как
R
Hw
(м).
2h
Примем в качестве вертикального размера головы субъективную оценку H = 0,15
м. Хотя размер лица каждого человека индивидуален, но он варьируется от человека к
человеку не настолько сильно, как например, дистанция от головы до камеры.
Так как направления координатных осей Z o и Z е совпадают, то углы поворота
цилиндра  ,  и  вокруг осей координат СКН равны нулю.
Определим координаты ( xeO , y eO и z eO ) центра O цилиндра относительно СКН.
Сначала найдем расстояние d   z e от ближайшей к камере точки головы до наблюдателя
(рис. 2.7, б). Если расписать последовательность преобразований координат (2.11-2.14), то
будет верно выражение
p x 

 o x  o x 11 e 
 xw  
 ze 
 
,
(2.17)
x  
p
y

22
e
y
  oy  oy
 z e 

где o x и o y – координаты центра экрана; p11 и p22 – соответствующие элементы матрицы
проецирования.
Подставим в формулу (2.17) вместо y w оконную координату y нижней точки
прямоугольника F, и координату y  h верхней точки прямоугольника F. Получим
следующие соотношения:

p 22 y e(1)
y

o

o

y
y
 ze

p 22 y e( 2 )

,
y  h  oy  oy
 ze


y e( 2)  y e1  H


(2.18)
где H – высота цилиндра.
Из соотношений (2.18) можно определить z e  
122
Ho y p 22
h
.
Учитывая, что центр цилиндра отстоит от ближайшей к наблюдателю точки
цилиндра на расстояние R, можем определить
z eO  
Ho y p 22
(2.19)
 R (м).
h
T
Подставим в (2.17) вместо x w и y w оконные координаты центра x  w / 2, y  h / 2
прямоугольника F, то можно вычислить xeO и y eO по следующим формулам:
 z e x  w / 2  o x   R
(м),
(2.20)
o x p11
 z e y  h / 2  o y   H / 2
y eO  
(м),
(2.21)
o y p 22
где x, y, w, h – соответственно координаты нижнего левого угла, ширина и высота области
xeO  
F; o x , o y - координаты центра окна, p11 , p22 - соответствующие элементы найденной
ранее матрицы проецирования.
Итак, определены все компоненты вектора конфигурации с i . Подставив их в (2.4),
получим матрицу модель-вид M.
Осталось еще задать параметры nslices и nstacks для цилиндра, определяющие
точность аппроксимации геометрической формы цилиндра примитивными фигурами
(треугольниками). Я использую значения nslices=25 и nstacks=10. Эти значения
позволяют достаточно точно аппроксимировать форму цилиндра, и в то же время не
сильно ухудшают производительность рисования.
Задание параметров (размера и положения) для каждой из остальных моделей
головы (плоской, эллипсоидальной и Candide-3) выполняется аналогично. Формулы для
этих моделей сведены в таблицу 2.5. На рис. 2.8 показан результат работы алгоритма
инициализации модели головы.
В конце следует отметить, что данный приближенный алгоритм инициализации
модели головы оперирует субъективными оценками, и ориентирован на случай, когда
человек-пользователь ПК ориентирует голову напротив монитора, дистанцируя ее на
удобное для чтения расстояние.
Таблица 2.5 – Формулы для инициализации плоской модели, эллипсоидальной
модели и модели Candide-3
Модель головы
Формулы инициализации модели головы
Rx  1,1R ; R y  0,7 R ; Rz  R ;
Эллипсоидальная
Координаты центра z eO , xeO и y eO эллипсоида определяются по
формулам (2.19-2.21);
123
  0;   0 ;   0 ;
nslices=25; nstacks=8.
sizex=2R; sizey=H;
z eO   d ; координаты xeO и y eO центра эллипсоида определяются
Плоская
по формулам (2.20-2.21);
  0;   0 ;   0 ;
nxstacks=2; nystacks=2.
sizex=2R; sizey=H;
Candide-3
z eO   d ; координаты xeO и y eO центра эллипсоида определяются
по формулам (2.20-2.21);
  0;   0 ;   0 .
Все же, как показывает практическое применение данного алгоритма, он дает
возможность инициализации модели головы без необходимости сложного взаимодействия
с пользователем, в чем и состоит его основное достоинство.
Инициализировав модель головы для первого кадра, будем искать параметры ее
движения между первым и вторым кадрами, вторым и третьим кадрами, …, i-м и (i+1)-м
кадрами. Эту задачу можно решить, используя инверсно-композиционный алгоритм
регистрации (сопоставления) изображений.
124
Рисунок 2.8 – Результат работы алгоритма инициализации модели головы
4.3.2 Инверсно-композиционный алгоритм регистрации изображений
Регистрация (англ. image registration, сопоставление, наложение)
двух
изображений – это процедура поиска наилучшего в некотором смысле соответствия
между пикселями данных изображений. Чтобы регистрация была успешной, изображения
должны быть подобными, то есть, в результате преобразования первого изображения (или
какой-либо его части) может быть получено второе изображение (либо его часть). Кроме
того необходимо, чтобы изображения уже сами по себе находились в приближенном
соответствии, то есть должно быть задано начальное приближение, от которого будет
производиться поиск оптимальных параметров соответствия изображений.
Одним из подходов к решению задачи регистрации изображений является метод
[89], предложенный Брюсом Д. Лукасом и Такео Канаде. В данном методе регистрация
пары изображений сводится к задаче нелинейной оптимизации, а для поиска параметров
наилучшего совпадения изображений используется градиентный метод Ньютона.
В работе [44] Саймоном Бэкером, Фрэнком Деллаертом и Иэном Мэтьюзом
предложена
модификация
метода
Лукаса-Канаде,
которая
называется
инверсно-
композиционным (англ. inverse-compositional) алгоритмом наложения изображений. В
соответствии с такой терминологией оригинальный метод Лукаса-Канаде называют
прямо-аддитивным (англ. forwards-additive) алгоритмом. Инверсно-композиционный (ИК)
метод регистрации является более эффективным в вычислительном плане, чем прямоаддитивный метод [45].
Описание алгоритмов регистрации изображений сложно найти на русском языке и
в форме, понятной для начинающего исследователя, чтобы иметь возможность в целом
представить себе, о чем идет речь без отсылки к внешним источникам. Поэтому далее
приводится интуитивный вывод математических формул для алгоритма регистрации.
Подчеркнем, что выводимые закономерности были впервые получены Лукасом-Канаде
[89], Бэкером-Деллаертом-Мэтьюзом [44; 45] и др., а далее приводится лишь авторское
понимание этих закономерностей.
Постановка задачи. Пусть имеются два растровых изображения (рис. 2.9), первое
из которых (либо его часть) может быть переведено во второе изображение (либо в часть
второго изображения) посредством заданного преобразования W, зависящего от набора
параметров.
Необходимо, задавшись начальным приближением параметров, определить такие
параметры данного преобразования W, при которых устанавливается наилучшее (в
смысле, определяемом далее) соответствие между двумя изображениями.
125
Частный
случай:
модель
параллельного
переноса
пикселей.
Начнем
рассуждения с простой модели сопоставления пикселей – параллельного переноса. Пусть
имеем два grayscale-изображения I1 и I2 (см. рис. 2.9). Интенсивность любого пикселя
x=(x,y)T изображения I1 обозначим за I1(x), а интенсивность любого пикселя изображения
I2 обозначим за I2(x).
Рисунок 2.9 – Два изображения, между которыми можно установить
соответствие (в данном случае соответствие устанавливается между областями,
содержащими проекцию игрушечной машинки). Иллюстрация взята из работы [133]
Пусть известно, что некому конкретному пикселю xn=(xn,yn)T
изображения I1
семантически (по смыслу) соответствует пиксель x′n=(xn+Δx,yn+Δy)T
изображения I2,
причем интенсивности этих пикселей равны между собой (графически будем обозначать
соответствие пикселей через xn→x′n):
I1 ( xn , y n )  I 2 ( xn  x, y n  y) .
(2.22)
Если бы удалось решить уравнение (2.22) относительно неизвестных Δx и Δy, то
было бы определено и соответствие между изображениями I1 и I2.
Возникает первая проблема – уравнение (2.22) является нелинейным относительно
неизвестных Δx и Δy. Это обусловлено тем, что интенсивность пикселя изображения в
общем случае нелинейно зависит от аргумента x. Работать с нелинейным уравнением
неудобно, так как выражения получаются громоздкими. Чтобы решить данную проблему,
удобно линеаризовать выражение (2.22).
Как известно из курса математического анализа [4, с. 157], для приближенного
вычисления значений функции применим ее дифференциал – главная линейная часть
приращения функции, отличающаяся от соответствующего приращения на бесконечно
малую величину более высокого порядка, чем приращение независимого аргумента.
Итак, если приращение аргумента мало, то правая часть выражения (2.22) может
быть аппроксимирована путем замены приращения функции на ее полный дифференциал:
I 2 ( x n  x, y n  y )  I 2 ( x n , y n ) 
I 2 ( x n , y n )
I ( x , y )
x  2 n n y .
x
y
126
(2.23)
Изображение можно представить в виде функции от двух переменных – x и y.
Поэтому дифференцировать его можно точно так же как и обычную функцию от двух
переменных.
В некоторых работах [44; 45; 133] вместо замены приращения функции на полный
дифференциал используется разложение в ряд Тейлора [10, с. 107] и отбрасывание членов
ряда высших порядков малости. На мой взгляд, использование полного дифференциала
более удобно (и просто), поскольку разложение в ряд Тейлора требует дополнительного
доказательства того, что сумма ряда в заданной окрестности действительно сходится к
конечному числу, и что это число является значением функции.
Заменяя правую часть в уравнении (2.22) на (2.23), получим приближенное
равенство
I 2 ( x n , y n )
I ( x , y )
x  2 n n y  0 .
(2.24)
x
y
Выражение (2.24) зависит от неизвестных линейно. Но имея два неизвестных в
I 2 ( xn , y n )  I1 ( xn , y n ) 
одном
уравнении,
невозможно
найти
единственное
решение.
Чтобы
получить
единственное решение, придется рассматривать не один пиксель, а группу из N пикселей,
и для них решать систему, состоящую из N уравнений (2.24). Об этом далее, а сейчас
обобщим рассуждения на случай любой модели сопоставления пикселей.
Обобщенная модель сопоставления пикселей. Известно, что существует много
параметрических моделей сопоставления пикселей [119]. К их числу, помимо
параллельного переноса, можно также отнести операции вращения, масштабирования,
аффинное преобразование, проецирование, искажение линзы (англ. lens distortion), и так
далее. Поэтому целесообразно ввести обобщенную модель сопоставления пикселей (англ.
pixel mapping model):
 Wx (x, p) 
,
x  W (x, p)  
(2.25)

W
(
x
,

p
)
y


где W (x, p) – некая вектор-функция, ставящая в соответствие пикселю x=(x,y)T на
изображении I1 пиксель x′=(x′,y′)T на изображении I2; p  (p1 , p 2 ,..., p m ) T – m-мерный
вектор приращений параметров.
Введем требование, чтобы при равенстве вектора
приращений параметров p нулю функция (2.25) переводила пиксель в самого себя:
W (x n ,0)  x n . При введенном условии приращение параметров p отмеряется от точки 0.
Функция W (x, p) может зависеть от p как линейно (например, аффинное
преобразование), так и нелинейно (например, перспективная проекция).
127
Отметим, что в различных источниках, в зависимости от постановки задачи,
функцию (2.25) также называют моделью движения, motion model [109], либо функцией
деформации, warp function [45].
В частности, для рассмотренного выше случая 2D параллельного переноса,
функция (2.25) будет иметь вид W (x, p)  ( x  x, y  y) T , а p  (x, y) T .
Используя введенное понятие обобщенной модели сопоставления пикселей
W (x, p) , равенство (2.22) можем переписать в следующем виде:
I 1 (x n )  I 2 (W (x n , p)) .
(2.26)
Выражение (2.26) будем называть прямым (англ. forwards) соответствием.
Недостатком этого выражения является то, что формулы, получаемые на его основе (здесь
их приводить не будем), являются не самыми эффективными в плане вычислений.
Инверсная формула соответствия пикселей. В своем алгоритме [44] Саймон
Бэкер, Фрэнк Деллаерт и Иэн Мэтьюз предложили записать выражение (2.26) в
«инверсном» виде (отсюда первая часть названия алгоритма – «инверсный»):
I 1 (W (x n , p))  I 2 (x n ) .
(2.27)
В выражении (2.27) условимся, что хотя вид функции W (x, p) и не изменится, но
она будет переводить пиксели от изображения I2 к изображению I1. То есть, если функция
(2.25) задавала соответствие xn→x′n, то W (x, p) в выражении (2.27) будет задавать
соответствие между пикселями в обратном направлении x′n→xn. Не будем обозначать
функцию W в (2.27) каким-то другим значком (потому что на это нет оснований), просто
еще раз подчеркнем, что факт «инверсности» должен быть учтен позже, когда нужно
будет построить композицию моделей сопоставления пикселей.
Левая часть выражения (2.27) может быть аппроксимирована путем замены
приращения функции на ее полный дифференциал (при написании формулы также
используем свойство инвариантности первой формы дифференциала [8, с. 220]):
I 1 (W (x n , p))  I 1 (W (x n ,0)) 

I 1 (x n )  Wx (x n ,0)
Wx (x n ,0)

p1  ... 
p m  
x 
p1
p m

W y (x n ,0)

I (x )  W y (x n ,0)
 1 n 
p1  ... 
p m .
y 
p1
p m

Выражение
(2.28)
накладывает
на
функцию
W (x, p)
(2.28)
требование
дифференцируемости в точке (x n ,0) , а, следовательно, эта функция должна быть и
непрерывной в данной точке.
Подставим (2.28) в (2.27), заменяя знак приближенного равенства, и учитывая, что
I1 (W (x n ,0))  I1 (x n ) :
128
I1 (x n )  I 2 (x n )  I1 (x n )J W (x n ,0)p  0,
(2.29)
 I (x ) I (x ) 
где I 1 (x n )   1 n , 1 n  – градиент изображения I1, вычисленный в точке x n ;
y 
 x
J W (x n ,0) – матрица первых частных производных (матрица Якоби) функции W (x, p) ,
вычисленная в точке (x n ,0) :
 W x (x n ,0)

p1
J W (x n ,0)  
 W y (x n ,0)

p1

W x (x n ,0)
W x (x n ,0) 
...

p 2
p m
.
W y (x n ,0)
W y (x n ,0) 
...

p 2
p m

Уравнение (2.29) является линейным относительно компонентов вектора p .
Однако решить данное уравнение не представляется возможным, так как число
неизвестных m больше числа уравнений (m>1). Поэтому далее перейдем к составлению
системы уравнений для группы пикселей изображения.
Сопоставление
всех
пикселей
в
некоторой
области
изображения.
В
изображении I1 можно выделить целевую область Ω, содержащую в себе N пикселей.
Например, это может быть область, содержащая все пиксели проекции головы человека,
за исключением пикселей фона. Если предположить, что все N пикселей можно
сопоставить со вторым изображением, применяя функцию W (x, p) , то можно записать
систему из N линейных неоднородных уравнений:

(2.30)
 I 1 (x n )  I 2 (x n )  I 1 (x n )J W (x n ,0)p  0, n  1,2,..., N .

В силу отсутствия точного решения переопределенных систем (в которых число
уравнений больше числа неизвестных), на практике принято вместо него отыскивать
вектор,
наилучшим
образом
удовлетворяющий
всем
уравнениям,
то
есть
минимизирующий норму невязки системы в какой-нибудь степени. Данная проблема
изучается в разделе математической статистики под названием регрессионный анализ.
Обычно минимизируют квадрат отклонений от оцениваемого решения, для чего
применяют метод наименьших квадратов (МНК) [32, с. 160].
Для поиска решения системы (2.30) по МНК, составим функционал
N
 (p)   w(x n )I 1 (x n )  I 2 (x n )  I 1 (x n )J W (x n ,0)p  ,
2
(2.31)
n 1
где w(x n ) – скалярный вес n-го пикселя.
Очевидно, что значение p , при котором реализуется минимум функционала
(2.31), будет наиболее близким к решению системы (2.30).
129
Известно, что полученные таким способом значения параметров, составляющих
вектор p , являются оптимальными (несмещенными, состоятельными, эффективными
оценками), если результаты измерений являются независимыми, т.е. интенсивность
пикселя не зависит от интенсивности других пикселей изображения, и распределение
погрешности (разности между соответствующими пикселями изображений) является
нормальным и центрированным [30].
Вес w(x n ) не равен нулю, если пиксель принадлежит области Ω, в противном
случае вес равен нулю. Например, удобно присвоить пикселю вес 255, если он
принадлежит области Ω, в противном случае присвоить пикселю нулевой вес. В
зависимости от решаемой задачи, значения весов пикселей могут варьироваться.
Веса пикселей w(x n ) удобно хранить в виде отдельного изображения C (см. рис.
2.10). Это изображение будем называть картой уверенности (англ. confidence map).
Термин «уверенность» здесь характеризует уверенность исследователя в том, что
конкретный пиксель с большим весом должен дать больший вклад в сумму (2.31).
Рисунок 2.10 – Карта уверенности. Белый прямоугольник – область Ω
Внутренний итерационный цикл минимизации. Для минимизации функционала
(2.31) можно применить градиентный метод Ньютона [28, с. 45]. Итерационная схема
метода Ньютона представляет собой выражение

p k 1  p k  H  (p k )
где p
k 1
и p
k
 (p ) , k  0,1,..., k
1
k
T
max
 1;
(2.32)
– соответственно текущее и предыдущее приближения вектора p ; k и
kmax – соответственно текущий номер (начиная с нуля) итерации и максимально
возможное число итераций; (p k ) – градиент (вектор порядка m первых частных
производных) функционала (2.31), вычисляемый по формуле:


(p k )  2 w(x n )I 1 (x n )  I 2 (x n )  I 1 (x n )J W (x n ,0)p k I 1 (x n )J W (x n ,0)  ,
N
(2.33)
n 1
H  (p k ) – матрица (порядка m×m) вторых частных производных (матрица Гессе),
которая для функционала (2.31) находится по формуле
130
N


H  (p k )  2 w(x n )I 1 (x n )J W (x n ,0)  I 1 (x n )J W (x n ,0)  .
n 1
T
(2.34)
Несмотря на сложный вид выражений (2.33) и (2.34), данные выражения легко
вывести самостоятельно, применяя формулы дифференцирования элементарных функций
и сложной функции [10, с. 197] и перенося их на случай функции многих переменных.
Заметим, что в данной задаче матрица Гессе (2.34) фактически не зависит от
вектора p k , поэтому далее будем опускать аргумент p k и писать просто H  .
Достаточно вычислить H  однократно на фазе предварительных вычислений, что
привлекательно в плане вычислительной эффективности.
В качестве начального приближения вектора p 0 принимаем нулевой вектор 0. То
есть вначале функция (2.25) будет переводить пиксель в самого себя. Поэтому выше
упоминалось, что для успешного решения задачи регистрации, изображения уже должны
быть в примерном соответствии.
В качестве основного критерия останова итераций примем
p k 1  p k   ,
(2.35)
где значок . обозначает норму вектора; в качестве нормы берется максимальный по
модулю компонент вектора;  – заданная точность (в данном эксперименте   10 3 ).
Смысл критерия (2.35) заключается в том, чтобы прекратить поиск, когда отличие нового
приближения p k 1 от предыдущего p k пренебрежимо мало.
На случай, если процесс расходящийся введем ограничение на максимальное число
итераций kmax (к вопросу о выборе максимального числа итераций вернемся позже в
приложении В).
Наконец, приведем полную схему алгоритма минимизации функционала (2.31).
Фаза предварительных вычислений.
1.
Вычислить градиент I 1 (x n ) x n   , после чего вычислить и сохранить
произведение градиента на матрицу Якоби:
I 1 (x n )J w (x n ,0)
x n   .
Заметим, что полученные значения вектора I 1 (x n )J w (x n ,0) x n   удобно
хранить в виде набора изображений, которые будем называть изображениями
наискорейшего спуска (англ. steepest descent images).
2.
Вычислить матрицу Гессе H  по формуле (2.34). Вычислить обращенную
матрицу H   .
1
Фаза итераций.
131
1.
Задать начальное приближение p 0  0 ; задать максимально возможное число
итераций kmax; задать требуемую точность ε; положить k=0.
2.
Вычислить разность интенсивностей I 1 (x n )  I 2 (x n ) x n   .
3.
Проверить k≥kmax (превышение максимального числа итераций). Если условие
выполняется, то на шаг 8, нет – шаг 4.
4.
Вычислить градиент целевой функции (p k ) по формуле (2.33).
5.
Вычислить новое приближение вектора p k 1 по формуле (2.32).
6.
Проверить выполняется ли критерий останова (2.35). Если да, то на шаг 8; если
нет, то на шаг 7.
7.
Увеличить номер итерации: k:=k+1. Перейти на шаг 3.
8.
В качестве наилучшего приближения вектора p принять p k 1 ; выход из
цикла.
Приведенную
выше
схему
минимизации
будем
называть
внутренним
итерационным циклом (далее приведено объяснение такого названия).
Внешний итерационный цикл. Так как в формуле (2.29) мы упрощенно
использовали лишь линейную часть приращения функции, то найденное на выходе
внутреннего цикла итераций решение p является всего лишь приближенным. Чтобы
улучшить точность поступают следующим образом. Имея приближение p , можно с
помощью функции W (x, p) деформировать одно из изображений (I1 или I2), таким
образом «сближая» его со вторым изображением. Если для пары изображений мы
вычислим в этот момент значение функционала (2.31), то оно окажется меньше, чем было
в начале, то есть изображения станут лучше «соответствовать» друг другу.
Затем снова ищем вектор p , подавая на вход внутреннего цикла уже не исходное,
а деформированное изображение. Этот внешний итерационный цикл (рис. 2.11) будем
продолжать до тех пор, пока не выполнится критерий останова, либо пока не будет
превышено максимально возможное число итераций.
132
Рисунок 2.11 – Иллюстрация к внешнему итерационному циклу. Слева показано
изображение I1. Изображение I2 получено путем сдвига и вращения первого изображения.
Справа показан ряд сближающих деформаций изображения I 2
(0)
– I2
(7)
, полученных на
итерациях 0-7
В теории не важно, какое из изображений (I1 или I2) деформировать, так как они
равноправны.
Но
с
точки
зрения
вычислительной
эффективности
выгоднее
деформировать I2. Если будем деформировать изображение I1, то затем придется вновь
вычислять градиент изображения I 1 , а следовательно и матрицу Гессе H  . Кроме того
придется деформировать и карту уверенности C. Если же будем деформировать
изображение I2, то градиент I 1 , матрица H  и карта уверенности C остаются
неизменными. Поэтому деформируют именно изображение I2.
Ранее договорились, что в формуле (2.27) модель сопоставления пикселей
осуществляет преобразование x  W (x, p) , где x – пиксель изображения I1, а x′ –
пиксель изображения I2. Поэтому переведем пиксели изображения I2 в направлении
сближения с изображением I1, положив I 2 (W (x, p)) : I 2 (x) x n   . В [44] эта
процедура называется «warping backwards onto the coordinate frame of the template»
(«деформацией назад в координатную систему шаблона»), где под шаблоном
подразумевается изображение I1.
Рассмотрим
подробнее,
как
именно
реализуется
алгоритм
деформации
изображения I2 на практике. Пусть необходимо получить деформированное изображение
I2(0), имея исходное изображение I2. Неудобно выполнять операцию присваивания
пикселю I 2 (W (x, p)) , так как координаты W (x, p) могут быть дробными. Поэтому
133
поступают наоборот. В цикле для каждого пикселя x  ( x, y) T x  
изображения I2,
вычисляются координаты x  ( x, y ) T по формуле
( x, y ) T  W 1 (x, p) ,
где W 1 (x, p) – функция, обратная к функции (2.25). Следовательно, функция (2.25)
должна (помимо дифференцируемости) обладать свойством инвертируемости.
После этого пикселю изображения I2(0) с координатами ( x, y ) T присваивается
интенсивность I2(x′,y′). Подчеркнем, что координаты ( x, y ) T всегда принимают целые
значения, а координаты ( x , y ) T в силу непрерывности функции W (x, p) могут быть
дробными (термин субпиксельная точность, subpixel accuracy). Для того чтобы вычислить
значение интенсивности пикселя I2(x′,y′) с субпиксельной точностью (рис. 2.12),
применяем формулу билинейной интерполяции22:
I 2 ( x) 
I 2 (x11)
I 2 (x 21)
( x2  x)( y2  y ) 
( x  x1 )( y2  y ) 
( x2  x1 )( y2  y1 )
( x2  x1 )( y2  y1 )
,
(2.36)
I 2 (x12 )
I 2 (x 22 )

( x2  x)( y  y1 ) 
( x  x1 )( y  y1 ).
( x2  x1 )( y2  y1 )
( x2  x1 )( y2  y1 )
Легко заметить, что если деформировать изображение I2, затем деформировать
результат деформации I2(0), и т.д., то из-за дискретности пикселей через несколько
итераций возникнет эффект размытия и потери качества изображения I2(l), где l-номер
итерации. Для того чтобы сохранить приемлемое качество результата деформации, можно
всегда деформировать исходное изображение I2, но для его деформации использовать
композицию W (l ) (x)  W 1 (...W 1 (W 1 (x, p 0 ), p1 ),..., p l ) . Отсюда вторая часть названия
алгоритма –
«композиционный». Композиция и будет представлять собой результат
работы алгоритма регистрации изображений.
Рисунок 2.12 – Иллюстрация к методу билинейной интерполяции. Показан
фрагмент растрового изображения. Точками обозначены центры пикселей.
Bilinear interpolation [Электронный ресурс] : Wikipedia / автор J. Ahlberg – Электрон. дан. – 2010. – Режим
доступа: http://en.wikipedia.org/wiki/Bilinear_interpolation, свободный. – Загл. с экрана. – Текст на экране
англ.
22
134
Интерполируемый пиксель, расположенный «между» соседними пикселями, обозначен
пунктиром
Теперь снова вернемся к критерию останова для внешнего цикла итераций. В
качестве критерия останова итераций примем условие
p l   ,
где l – номер итерации; γ – заданная точность (в данном эксперименте γ=10-3). Данный
критерий имеет следующий смысл: при достижении достаточно малого p можно
считать, что разница между изображениями I1 и I2 пренебрежимо мала. На случай, если
процесс расходящийся, стоит ввести ограничение на максимальное число итераций lmax (в
моем эксперименте lmax=100).
При осуществлении поиска p l с помощью деформированного изображения I2(l)
иногда может обнаружиться, что значение целевой функции (p l ) оказалось даже
больше, чем было достигнуто на предыдущем внутреннем цикле поиска (p l 1 ) . Т.е.
могут наблюдаться осцилляции (колебания), хотя в целом процесс регистрации сходится
на последующих итерациях (а может и не сходиться). Данный факт можно объяснить тем,
что приближенное решение может отличаться от точного как с избытком, так и с
недостатком. Поэтому
введем еще один критерий останова: выйти из цикла, если в
течении q итераций подряд (в работе используется q=5) значение целевой функции
(p l ) не становится меньше минимально достигнутого ранее значения  min .
Схема внешнего итерационного цикла:
1. Задать максимально возможное число итераций lmax; задать точность γ.
Положить l=0.
2. Деформировать изображение I2, положив
I 2 (W (l ) (x)) : I 2 (x) x n   , и
используя описанный ранее алгоритм деформации. Получить I2(l).
3. Выполнить внутренний цикл итераций (вычислить p l по схеме алгоритма
Ньютона).
4. Проверить выполняется ли условие l≥lmax. Да – на шаг 8; нет – шаг 5.
5. Проверить, выполняется ли условие p l   . Да – шаг 8; нет – шаг 6.
6. Проверить, выполняется ли условие осцилляций (в течении q итераций подряд
значение целевой функции (p l )
не становится меньше минимально
достигнутого ранее значения  min ). Да – шаг 8, нет – шаг 7.
135
7. Подставить найденный вектор p l в выражение для модели сопоставления


пикселей и вычислить композицию W (l ) (x)  W 1 W (l 1) x, p l . Положить
l:=l+1. Перейти на шаг 2.
8. В качестве результата принять композицию W (l ) (x) . Выход из цикла.
Результат работы алгоритма регистрации. Итак, на выходе получается
композиция моделей сопоставления пикселей. По определению композиция W (l ) (x)
позволяет по заданному пикселю x изображения I1 определить соответствующий ему
пиксель x′ изображения I2.
На практике функция (2.25) представляет собой матричное преобразование.
Поэтому композицию обычно можно хранить как простую матрицу.
Обычно бывает удобнее работать с набором чисел (параметров), а не с матрицей,
так как параметры количественно характеризуют состояние системы. Способы извлечения
параметров из матрицы-композиции существуют, но эти способы зависят от конкретного
вида функции (2.25). Далее будет показано, как можно извлечь параметры из композиции,
используемой для трекинга головы.
То, что на выходе у инверсно-композиционного алгоритма получается именно
композиция, можно отнести к его недостаткам. Для сравнения, оригинальный алгоритм
Лукаса-Канаде позволяет получать на выходе именно набор параметров (но зато метод
Лукаса-Канаде менее вычислительно эффективен).
Численные алгоритмы инвертирования матрицы и нахождения градиента.
Дадим пояснения, каким образом можно вычислить используемые в алгоритме
регистрации обращенную матрицу и градиент изображения.
В формуле (2.32) требуется вычислить обращенную матрицу H  
1
порядка m.
Для решения этой задачи можно воспользоваться функцией cvInvert() из библиотеки
OpenCV. Данная функция сводит проблему обращения матрицы к последовательному
приведению матрицы к треугольному виду и решению системы линейных уравнений
методом исключения Гаусса [11, с. 128].
 I (x ) I (x ) 
Для вычисления градиента I 1 (x n )   1 n , 1 n  можно воспользоваться
y 
 x
одним из методов численного дифференцирования, так как I1 (x) – дискретная функция,
заданная на равномерной сетке. Простейший из таких алгоритмов – двухточечная
«конечная разность вперед» [28, с. 60]:
I1 (x n ) I1 ( xn  x, y n )  I1 ( xn , y n ) I 1 (x n ) I 1 ( x n , y n  y )  I 1 ( x n , y n )

;
,

y
y
x
x
136
(2.37)
где в качестве x и y можно взять единицу (вычисляем разность между соседними
пикселями).
Недостатком формулы (2.37) является ее чувствительность к погрешностям данных
(шуму), преимуществом – вычислительная простота.
Более сложный метод аппроксимации градиента функции двух переменных –
использование оператора Собеля [63, p. 112]:
  1 0  1
 1  2  1
I 1 (x n )
I 1 (x n )


 k   2 0  2  I 1 ( x n ) ;
 k  0
0
0   I (x n ) ,
(2.38)
x
y
  1 0  1
 1  2  1
где через  обозначена операция 2D свертки, а в квадратных скобках приведена матрицаядро свертки размерности 3 3 , k  1 / 8 – скалярный нормализующий коэффициент.
Ядра свертки (2.38) применяются к каждому пикселю изображения: он помещается
в центр ядра, и значения интенсивности в соседних точках умножаются на
соответствующие коэффициенты ядра, после чего полученные значения суммируются. Хоператор Собеля, примененный к 3×3 матрице исходного изображения, дает величину
горизонтальной составляющей градиента интенсивности в центральной точке этой
матрицы, а Y-оператор Собеля дает величину вертикальной составляющей градиента.
Коэффициенты ядра выбраны так, чтобы при его применении одновременно выполнялось
сглаживание в одном направлении и вычисление пространственной производной – в
другом, так что результат более или менее нечувствителен к шуму.
В библиотеке OpenCV операция вычисления пространственного градиента
изображения выполняется с использованием функции cvSobel(). Эта операция берет на
вход исходное изображение, а на выходе получается изображение, каждый пиксель
которого содержит частную производную в соответствующей точке исходного
 I (x ) I (x ) 
изображения. Таким образом, чтобы вычислить градиент I 1 (x n )   1 n , 1 n  ,
y 
 x
необходимо получить два изображения, первое из которых содержит
I 1 (x n )
, а второе –
x
I 1 ( x n )
. Для вычисления градиента только внутри прямоугольной области  , можно
y
воспользоваться функцией cvSetImageROI().
Отметим, что функция cvSobel() не производит умножение на нормализующий
коэффициент k формулы (2.38). Это обусловлено, тем, что, во-первых, для основного
применения оператора Собеля – детекции углов – это не важно, во-вторых, из-за
стремления избежать потери точности при округлении (если в качестве элемента
137
изображения используется тип integer). Поэтому необходимо нормализовать результат
операции самостоятельно, умножив каждый элемент полученных изображений на
коэффициент 1/8.
4.3.3 Модель движения твердого тела c шестью степенями свободы и
использованием перспективной проекции.
Определим теперь, как будет выглядеть модель движения W (x, p) , переводящая
координаты пикселя x в x непосредственно для случая движения 3D тела с шестью
степенями
свободы,
при
использовании
симметричной
перспективной
матрицы
проецирования P (2.10).
Пусть точка поверхности модели головы (см. рис. 2.13) с координатами
X e  ( xe ; ye ; z e ;1)T
проецируется
в
пиксель
кадра
с
оконными
координатами
X w  ( xw ; yw ; z w )T . Пусть за счет движения головы точка Xe перемещается в положение


T
Xe  ξ(p)Xe , где ξ p  – матрица твист-преобразования (2.8); p   x ,  y , z , t x , t y , t z  –
приращение вектора параметров движения. Координаты точки окна, в которую
проецируется точка модели X e , обозначим через Xw .
а)
б)
в)
Рисунок 2.13 – Движение пикселя x n проекции головы человека от видеокадра к
видеокадру. Пунктирной линией показан ограничивающий прямоугольник  проекции
головы
Используя формулы (2.11–2.14), можем установить соответствие между X w и Xw :
T

 

  
2 yw


1  2 x w
Xw  WndTfm PerspDiv  Pξ (p)P
 1;
 1;2 z w  1;1   .
(2.39)
 p
 
p

x
y





Выражение (2.39) задает искомую модель движения W (x, p) . Распишем это
выражение подробнее:
138

 ox 
 x w  
   
 y w   o 
 y

где
p x p11 xe   z y e   y z e  t x we   p13   y xe   x y e  z e  t z we  

2
 y xe   x y e  z e  t z we

,
p y p 22  z xe  y e   x z e  t y we   p 23   y xe   x y e  z e  t z we  


2
 y xe   x y e  z e  t z we

X e  xe ; y e ; z e ; we 
T
 2x

2y
 P  w  1; w  1;2 z w  1;1
 p

py
 x

1
(2.40)
T
– вектор координат точки
относительно наблюдателя; p x и p y – соответственно ширина и высота окна; o x и o y –
координаты центра экрана; через pij обозначены соответствующие элементы матрицы
проецирования P. В формуле (2.40) компонента глубины z w опущена за ненадобностью.
Можем найти компоненты матрицы Якоби
J W ( X w ,0) , вычисляя частные
производные от (2.40) по компонентам вектора p :
Wx ( X w ,0) p x 0  p13 y e  z e    y e  p11 xe  p13 z e  p x p11 xe y e


;
2
2
 x
2
2
ze
ze


Wx ( X w ,0) p x  p11 z e  p13  xe  z e   xe  p11 xe  p13 z e  p x p11  xe  z e
;


2
2
 y
2
2
ze
ze
2
2
Wx ( X w ,0) p x  p11  y e   p13 0 z e   0 p x p11 y e z e


;
2
2
 z
2
2
ze
ze
Wx ( X w ,0) p x  p11we  p13 0 z e   0 p x p11  we z e 


;
2
2
t x
2
2
ze
ze
Wx ( X w ,0) p x 0 z e   0

 0;
2
t y
2
ze
Wx ( X w ,0) p x  p11 0  p13 we  z e    we  p11 xe  p13 z e  p x p11we xe


;
2
2
t z
2
2
ze
ze
W y ( X w ,0)
 x
W y ( X w ,0)
 y
W y ( X w ,0)
 z
W y ( X w ,0)
t x
W y ( X w ,0)
t y



p y  p22  z e   p23 ye  z e    ye  p22 ye  p23 z e  p y p22 ye 2  z e 2
;

2
2
2
2
ze
ze

p y 0  p 23  xe  z e   xe  p 22 y e  p 23 z e  p y p 22  xe y e 

;
2
2
2
2
ze
ze

p y  p 22 xe  0 z e   0 p y p 22  xe z e 

;
2
2
2
2
ze
ze

p y 0 z e   0
 0;
2
2
ze

p y  p 22 we  p 23  z e   0 p y p 22  we z e 

;
2
2
2
2
ze
ze
139
W y ( X w ,0)
t z

p y  p 23 we  z e    we  p 22 y e  p 23 z e  p y p 22 we y e

.
2
2
2
2
ze
ze
Таким образом, матрица Якоби J W ( X w ,0) примет вид
  1 xe y e
 1 ( xe 2  z e 2 )  1 y e z e
 1 ( we z e )
0
 1 we xe 

J W ( X w ,0)  
, (2.41)
2
2
 2 ( xe y e )
 2 ( xe z e )
0
 2 ( we z e )  2 we y e 
 2 ( y e  z e )
p y p 22
p p
где  1  x 112 ,  2 
.
2 ze 2
2 ze
Для вычисления значений модели сопоставления пикселей (2.39) и матрицы Якоби
(2.41) необходимо знать координату глубины z w для каждой точки проекции модели
головы.
Для
получения
glReadPixels()
с
этой
информации
параметром
можно
воспользоваться
функцией
которая
позволяет
GL_DEPTH_COMPONENT,
скопировать значения из буфера глубины OpenGL.
Наконец, рассмотрим, каким образом строится композиция моделей сопоставления
пикселей. Первоначально, модель сопоставления пикселей переводит пиксель в самого
себя: W X w ,0  X w . Подробная рекурсивная схема задания композиции на каждой
итерации внешнего цикла приведена в табл. 2.6.
Таблица 2.6 – Композиция моделей сопоставления пикселей
Итерация
Формулы для вычисления композиции
0
Так как p 0  0 ,



W ( 0) ( X w )  W ( X w , p 0 )  WndTfm PerspDiv PEP 1WndTfm 1 ( X w ) 
 W ( X w ,0)  X w ,
где E – единичная матрица.
1
W (1) ( X w )  W 1 (W ( X w , p 0 ), p1 ) 

 WndTfm PerspDiv Pξ 1 (p1 )P 1WndTfm 1 (WndTfm PEP 1WndTfm 1 ( X w ) 

 WndTfm PerspDiv Pξ 1 (p1 )EP 1WndTfm 1 X w  .







...
...
l
W (l ) ( X w )  W 1 (...W 1 (W ( X w , p 0 ), p1 ..., p l ) 


 WndTfm PerspDiv Pξ 1 (p1 )ξ 1 ...(p1 )EP 1WndTfm 1 X w  .



Таким образом, чтобы хранить в памяти композицию, достаточно хранить матрицу




(2.42)
W   ξ 1 (p l )...ξ 1 (p 2 )ξ 1 (p1 )ξ 1 (p 0 ) .
Она же будет являться результатом работы алгоритма регистрации изображений.
140
Матрицу (2.42) следует умножить слева на матрицу-модель вид объекта, чтобы
привести модель головы в соответствие с текущим видеокадром:
(2.43)
M : WM .
Чтобы извлечь вектор конфигурации с из матрицы (2.43), будем пользоваться
алгоритмом, приведенным в табл. 2.1.
Стоит привести одно замечание. Так как в формуле (2.42) используется
произведение твист-матриц (2.8), которые в свою очередь используют приближенную
аппроксимацию матрицы вращения, то в (2.43) может со временем накапливаться ошибка,
могущая привести к искажению геометрической формы модели головы. Поэтому, чтобы
избавиться от накопления искажений, рекомендуется извлечь вектор конфигурации с из
матрицы W (2.42), снова преобразовать с
в W по формуле (2.4), которую затем
подставить в формулу (2.43) .
4.3.4 Построение карт уверенности
Алгоритм регистрации изображений требует наличия карты уверенности. Далее
рассмотрим методы построения карт уверенности.
Построение карты уверенности для текстуры. Карта уверенности для текстуры
показывает степень доверия к каждой части текстуры. При проецировании трехмерного
объекта на плоскость (проекция из ( s, t )T в ( x, y)T ) часть информации оказывается
утерянной, о чем упоминалось в первой главе. При построении текстуры по проекции
объекта (при проецировании из ( x, y)T в ( s, t )T ) также происходит потеря информации.
Поэтому целесообразно ввести специальное изображение – карту уверенности,
интенсивность пикселя которой будет пропорциональна уверенности исследователя в том,
что данный пиксель содержит больше ценной информации, чем другие пиксели. Будем
называть интенсивность пикселя x карты уверенности его весом w(x ) . Для задания весов
карты уверенности нужно оценить степень потери информации при проецировании из
( x, y)T в ( s, t )T . Но сначала целесообразно рассмотреть, какие способы предлагаются для
обратного случая – проецирования из ( s, t )T в ( x, y)T .
На рис. 2.14, а для случая проецирования из ( s, t )T в ( x, y)T схематически
иллюстрируется, что при проецировании плотность (количество на единицу площади)
информации оказывается неодинаковой [109, p. 6]. Информация о фрагментах,
«повернутых фронтально к камере» сохраняется при проецировании в большей степени,
чем о фрагментах «повернутых в сторону от камеры». Пиксель, имеющий большую
плотность проецирования, должен иметь меньшую интенсивность, так как он содержит
меньше значимой информации.
141
а)
б)
Рисунок 2.14 – Иллюстрация к выбору весов пикселей для цилиндрической модели
головы (вид сверху). а) Неравномерность плотности проецируемых точек модели головы
(для наглядности используется ортогональная проекция); б) Вес пикселя х обратно
пропорционален углу 
В работе [109, p. 6] для цилиндрической модели головы и случая проецирования из
( s, t )T в ( x, y)T предлагается следующий способ вычисления весов w(x ) . Вводится
 2

w(x)  cd 1  min(  (x), )   , где
2 

2
квадратичная функция
cd
– некий скалярный
множитель;  (x) – угол между нормалью, восстановленной из точки поверхности
цилиндра Xe , проецируемой в пиксель x , и вектором, направленным из Xe к точке
отсчета СКН. Вес w(x ) пикселя x выбирается таким образом, чтобы он был обратно
пропорционален
значению
угла
между
перпендикуляром
N1
(рис.
2.14,
б),
восстановленным из точки поверхности модели головы Xe , проецируемой в точку окна x,
и вектором N 2 , задающим направление к наблюдателю (к точке отсчета СКН). Как видно
из рис. 2.14, б, вес пикселя x будет больше, чем веса пикселей x и x  так как        .
Использование квадратичной функции аргументируется тем, что в качестве модели
головы используется цилиндр – квадратичная поверхность.
В работе [54, p. 324] для цилиндрической модели и случая проецирования из ( s, t )T
в ( x, y)T предлагается следующий способ. Так как площади треугольников, составляющих
текстуру одинаковы (для цилиндра), а площади соответствующих им треугольников,
проецируемых на экран, различны, то вес пикселей проекции треугольника предлагается
задавать как отношение площади проекции треугольника к его площади на текстуре:
142

Sp
St

( xb  xa )( yc  ya )  ( yb  ya )( xc  xa )
( sb  sa )(tc  t a )  (tb  t a )( sc  sa )
,
где
( xa , y a )T ,
( xb , y b ) T ,
( xc , y c ) T
–
координаты вершин треугольника проекции; ( s a , t a )T , ( sb , t b )T , ( sc , t c ) T – координаты
вершин
соответствующего
треугольника
текстуры.
Таким
образом,
пиксели,
принадлежащие одному треугольнику, будут иметь один и тот же вес.
Очевидно, что необратимый процесс потери информации связан с тем фактом, что
текстура и буфер кадра дискретны, а значит, могут содержать ограниченное количество
(число байт) информации. Если бы эти изображения были непрерывными, то мы могли бы
восстановить текстуру спроецированной фигуры со сколь угодной точностью. Поэтому в
качестве веса пикселей треугольника возьмем отношение площадей исходного и
конечного треугольников.
Тогда для операции проецирования из ( x, y)T в ( s, t )T формула примет вид:
w( s, t ) 
St
,
Sp
(2.44)
где ( s, t )T – координаты пикселя треугольника текстуры; S t – площадь треугольника
текстуры; S p – площадь исходного треугольника на плоскости кадра. Все пиксели,
принадлежащие одному и тому же треугольнику, будут иметь один и тот же вес.
Таким образом, пошаговый алгоритм определения весов карты уверенности для
текстуры будет следующим:
1. Создать
изображение-карту
уверенности,
по
размеру
равное
текстуре.
Инициализировать все пиксели карты уверенности нулями.
2. Для каждого треугольника (из буфера отклика) определить текстурные координаты
s, t его вершин.
3. Определить площади S t и S p .
4. Вычислить вес для пикселей треугольника текстуры по формуле (2.44). Все
пиксели треугольника будут иметь одинаковый вес.
5. Заполнить пиксели треугольника текстуры вычисленным значением веса,
используя алгоритм растеризации треугольника.
Заметим, что если бы простейшие фигуры, составляющие модель, представляли
собой не треугольники, а полигоны, мы могли бы разбить их на треугольники, и каждый
из треугольников обрабатывали бы отдельно.
Обновление текстуры и ее карты уверенности. В общем случае периодически
приходится обновлять текстуру модели головы и ее карту уверенности. Во-первых, для
цилиндрической и эллипсоидальной моделей головы в определенный момент времени
143
видна только часть текстуры, и необходимо «дополнять» текстуру модели головы (и карту
уверенности) при поворотах головы (англ. термин mosaicing). Во-вторых, текстуру модели
головы (и карту уверенности) нужно обновлять, даже если голова не испытывает
поворотов, так как изменение освещенности и мимики лица приводит к тому, что текстура
модели головы перестает соответствовать действительности.
Можно привести две стратегии обновления текстуры и весов карты уверенности
текстуры:
1) обновлять только те части текстуры, в которых пиксели карты уверенности
установлены в нуль;
2) обновлять те пиксели текстуры, для которых вес пикселей карты уверенности
меньше, чем вновь вычисленный.
Кроме того, можно с течением времени уменьшать все веса для пикселей текстуры,
тогда все ее части будут регулярно обновляться [54].
Построение карты уверенности для проекции модели головы. Также как и при
построении текстуры для поверхности модели, при построении шаблона требуется иметь
изображение (рис. 2.15, б), которое будем называть картой уверенности шаблона,
отражающее потерю информации при проецировании трехмерного объекта на плоскость.
Рисунок 2.15 – Построение а) шаблона и б) карты уверенности для шаблона.
Прямоугольником обозначена область проекции 
Тот факт, что пиксели текстуры уже имеют разный вес, необходимо учитывать при
построении карты уверенности шаблона.
Вес пикселя x карты уверенности шаблона вычисляем по формуле
w(x)  w( s, t )
Sp
St
144
,
(2.45)
где w(x ) – вес пикселя треугольника карты уверенности шаблона; S p – площадь
треугольника на шаблоне; S t – площадь треугольника текстуры.
Заметим, что если пиксель x шаблона не принадлежит проекции модели головы, то
его вес, а значит и интенсивность пикселя x карты уверенности равна нулю (обратное
утверждение может быть не верно).
Пошаговый алгоритм построения карты уверенности шаблона:
1. Создать
изображение-карту
уверенности,
по
размеру
равное
шаблону.
Инициализировать все пиксели карты уверенности нулями.
2. Для каждого спроецированного треугольника (из буфера отклика) определить
текстурные текстуры s, t его вершин.
3. Вычислить веса для каждого пикселя треугольника шаблона по формуле (2.45), и
заполнить пиксели треугольника шаблона вычисленными значениями весов.
4.3.5 Алгоритмы трекинга головы
Сводя воедино сказанное выше, приведем схему алгоритма трекинга головы
человека, включающую в себя как алгоритм инициализации модели головы для первого
видеокадра, так и алгоритм определения параметров движения модели головы между
парами последовательных видеокадров.
Алгоритм трекинга головы с динамически обновляемым шаблоном.
1. Выбрать необходимую модель головы (прямоугольную, цилиндр, эллипсоид либо
Candide-3).
2. Получить с камеры видеокадр.
3. Определить детектором прямоугольник, где на кадре находится лицо (либо
несколько прямоугольников, если на кадре несколько лиц). Если лицо(а) не
найдено(ы), то переходим на шаг 2.
4. Выбрать
из
найденных
прямоугольников
имеющий
наибольшую
площадь.
Инициализировать модель камеры и выбранную модель головы, используя
найденный прямоугольник лица. Построить текстуру и карту уверенности для
текстуры модели головы, используя текущий видеокадр.
5. Получить с камеры следующий видеокадр.
6. Построить карту уверенности для проекции модели головы.
7. Оценить конфигурацию головы на текущем видеокадре, используя ИК алгоритм
регистрации предыдущего и текущего видеокадров. Если успешно, то перейти на
шаг 8. Если ошибка, то перейти на шаг 3.
8. Обновить текстуру модели головы и карту уверенности для текстуры.
145
9. Отобразить графически для пользователя текущее положение модели головы на
экране
10. Проверить, нажата ли клавиша «Выход». Если да – конец, если нет – перейти на шаг
5.
В описанном выше алгоритме (схематически показан на рис. 2.16) для каждого
кадра находится новое положение модели головы, на основе регистрации предыдущего и
текущего видеокадров. Этот алгоритм будем называть алгоритмом с динамическим
обновлением шаблона. Недостатком этой стратегии, очевидно, является постепенное
накопление ошибки, фактически модель головы постепенно начнет «дрейфовать» с
головы пользователя.
Рисунок 2.16 – Схема определения параметров движения модели головы между
двумя последовательными кадрами с динамически обновляемым шаблоном
С другой стороны, у этого алгоритма есть и преимущество – он менее чувствителен
к изменению условий освещенности [109, p. 7]. Так как изменение освещенности между
двумя последовательными видеокадрами незначительно, использование динамически
обновляемого шаблона позволяет легко адаптироваться изменениям освещенности.
Алгоритм трекинга головы со статической текстурой головы.
Еще одной альтернативой является стратегия, которую будем называть алгоритмом
трекинга со статической текстурой головы (схематически показан на рис. 2.17). Этот
алгоритм будет отличаться от прежнего лишь начиная с шага номер 6:
6. Спроецировать модель головы на предыдущий видеокадр.
7. Построить карту уверенности для проекции модели головы.
146
8. Оценить конфигурацию головы на текущем видеокадре, используя алгоритм
регистрации предыдущего и текущего видеокадров. Если успешно, то перейти на
шаг 9. Если ошибка, то перейти на шаг 3.
9. Отобразить графически для пользователя текущее положение модели головы на
экране.
10. Проверить, нажата ли клавиша «Выход». Если да – конец, если нет – перейти на
шаг 5.
Рисунок 2.17 – Схема определения параметров движения модели головы
между двумя последовательными кадрами со статической текстурой модели
Как видим, в алгоритме со статически обновляемым шаблоном, текстура модели
головы, задаваемая на этапе инициализации модели, служит на этапе трекинга для
построения шаблона. И на вход алгоритму регистрации подается не предыдущий
видеокадр в чистом виде, а проекция модели головы в той конфигурации, которую она
имела на предыдущем кадре (в этом состоит отличие рис. 2.17 от рис. 2.16).
Очевидным
недостатком
такой
стратегии
является
то,
что
стоит
лишь
(значительно) измениться освещенности или мимике лица, и ИК алгоритм регистрации
может дать сбой (равенство (2.27) перестанет выполняться). Но с другой стороны, данная
стратегия не страдает от постепенного накопления ошибки трекинга и «дрейфа» модели
головы.
Интересно было бы рассмотреть комбинацию данных стратегий в одну, например,
с использованием фильтра Калмана, но такое исследование не входит в задачи данной
работы.
В
дальнейших
исследованиях
ограничимся
алгоритмом
со
статически
обновляемым шаблоном, так как у него не недостатка постепенного накопления ошибки.
147
4.4 Имитационное моделирование распределенных систем обработки
изображения
Важнейшей
задачей,
при
выборе
рациональной
конфигурации
конкретной
прикладной системы является оценка пропускной способности и допустимых нагрузок на
локальные системы и на сеть, в которой она функционирует. Для решения этой задачи
целесообразно
прибегнуть
к
технологии
имитационного
моделирования.
Была
разработана архитектура распределенной информационно-вычислительной системы
«Базис», предназначенной для анализа и идентификации изображений.
Для этого был создана модель и реализована программа моделирования в среде
GPSS World[70]. При моделировании учитывались такие параметры как:
 среднее время генерации пакета данных;
 дисперсия времени генерации;
 длина генерируемых пакетов, которая сказывается на скорости передачи пакетов
по сети;
 оценка количества машинных операций, требуемых для генерации одного пакета
установленного типа;
 среднее время обработки пакета объектом-приемником;
 дисперсия времени обработки;
 оценка количества машинных операций, требуемая для обработки пакета
заданного типа;
 пропускная способность сети;
 производительность компьютеров, задействованных в работе системы.
Среднее время обработки или генерации на прямую зависит от количества
машинных операций, но использование обоих параметров необходимо учитывать по тому,
что в процессе генерации могут происходить задержки не влияющие на загруженность
системы, то есть время этих задержек процессор не используется. Это может быть связано
с ожиданием данных от устройства. При моделировании были взяты параметры
характерные для функционирования системы в наихудших условиях. В модели
учитывались пять типов сигналов, характерных для систем видеонаблюдения и контроля
доступом:
 1 - изображение, с размером пакета 230454 байт;
 2 - текстовое сообщение, с размером пакета 255 байт;
 3 - ключевые данные считывателей типа клавиатура, с пакетом длиной 100 байт;
 4 - звуковой сигнал, с размером пакета 64 байта;
148
 5 - неформализованные пакеты данных длиной не более 1024 байт.
Среди четырех компьютеров были размещены шестнадцать генераторов различных
типов сигналов и десять приемников соответствующих сигналов. Приемники принимали и
обрабатывали сигналы соответствующего им типа от всех генераторов данного сигнала.
То есть каждый генератор соединялся со всеми приемниками сигнала заданного типа.
Оценка количества операций для генерации пакета происходила следующим
образом. Программа генерировала сигналы с заданной частотой в течение пяти минут, при
этом в журнал производительности записывался коэффициент утилизации процессора
процессом программы-генератора каждые 500 миллисекунд. В результате рассчитывалось
время, в течение которого процессор занимала программа-генератор из пяти отведенных
ей минут и с использованием показателя производительности компьютера (количество
операций в секунду) подсчитывалось примерное количество операций, требуемых для
генерации данного типа сигнала. Оценка количества операция для обработки сигнала
происходила аналогичным методом.
Для моделирования производительность компьютеров была принята равной 1 млрд.
операций в секунду, а пропускная способность сети – 100 Мбит.
Для
моделирования
создается
16
генераторов
сигналов
различного
типа,
информация о которых задается в матрице Sources. Информация о размещении
генераторов находится в матрице Topol, единственный столбец которой содержит номер
компьютера. Содержание матрицы при моделировании, расшифровка столбцов и
положение приведены в таблице 2.3.
Таблица 2.3 – Список генераторов
Номер
Среднее
время
генерации,
мс
Разброс
времени
генерации,
мс
Тип
генерируемого
сигнала
1
2
3
4
5
6
7
8
9
10
11
12
13
14
100
1000
5000
200
500
66
1000
5000
200
500
100
1000
5000
200
10
100
1000
10
100
10
100
1000
10
100
10
100
1000
10
1
2
3
4
5
1
2
3
4
5
1
2
3
4
149
Оценка
количества
операций на
обработку,
тыс
70000
10000
10000
45000
50000
80000
10000
10000
45000
50000
70000
10000
10000
45000
Размещение
Компьютер 1
Компьютер 1
Компьютер 1
Компьютер 1
Компьютер 2
Компьютер 2
Компьютер 2
Компьютер 2
Компьютер 3
Компьютер 3
Компьютер 3
Компьютер 3
Компьютер 4
Компьютер 4
15
16
500
100
100
10
5
1
Компьютер 4
Компьютер 4
50000
70000
Информация о приемниках находится в матрице с именем Dests. Состояние матрицы
при моделировании показано в таблице 2.4.
Таблица 2.4 – Список приемников
Номер
Среднее
обработки
генерации, мс
Разброс
времени
обработки, мс
1
2
3
4
5
6
7
8
9
10
100
50
100
10
100
100
100
100
100
100
10
10
10
10
10
10
10
10
10
10
Оценка
количества
операций
на
обработку, тыс
70000
10000
10000
45000
50000
80000
10000
10000
45000
12000
Размещение
Компьютер 1
Компьютер 1
Компьютер 2
Компьютер 2
Компьютер 3
Компьютер 3
Компьютер 4
Компьютер 4
Компьютер 4
Компьютер 4
Соединение генераторов и приемников между собой представлено в матрице
инцидентности Conn, состояние которой показано в табл.2.5.
Таблица 2.5 – Матрица инцидентности
генератор/ 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
приемник
1
1
2
1
1
3
1
1
4
7
8
9
10
1
1
1
1
5
6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Процессоры компьютеров представлены соответственно хранилищами Bus1, Bus2,
Bus3 и Bus4 с емкостями соответствующими их производительности. Сеть представлена
хранилищем PhysicBus с емкостью соответствующей 100Мбит.
150
В функции TransTime таблицей задана оценка времени в миллисекундах,
необходимого для передачи пакета каждого типа от генератора приемнику. В функции
RealSiz – размер каждого пакета данных каждого типа. Все пакеты генерируются одним
блоком GENERATE. Номер генератора определяется функцией GetSource, заданной в
виде равномерно возрастающей ступенчатой функцией с 16 уровнями, входом которой
является случайное число, распределенное по равномерному закону, а выходом – номер
источника.
Происходило моделирование системы в течение одного часа работы, и одних суток
со временем генерации пакетов в блоке GENERATE в 100 и 30 миллисекунд
последовательно, с разбросом в 10 миллисекунд. В таблице 2.6 приведены результаты
моделирования.
Таблица 2.6
Результаты имитационного моделирования
Параметр
Мод.время – 1 Мод.время – Мод.время – 1 Мод.время –
ч.
24 ч.
ч.
24 ч.
Сред.
время Сред.
время Сред.
время Сред.
время
ген – 100 мс
ген – 100 мс
ген – 30 мс
ген – 30 мс
Общее
число 59765
1417640
129444
1965540
сгенерированных
пакетов
Изображений
17436
421592
80037
477979
Текстовых
10875
254840
7734
368718
сообщений
Ключевых данных
9934
230064
8064
388822
Звук
11813
283788
7758
365651
Неформализованных 9639
227356
25841
364354
пакетов
Средняя
загрузка
компьютеров
составила
Процессор 1
19%
19%
30%
30%
Процессор 2
14%
14%
26%
26%
Процессор 3
42%
42%
100%
100%
Процессор 4
99%
99%
99%
99%
Загрузка сети
3%
3%
3%
3%
На момент окончания моделирования в очередях необработанными остались:
Изображения
2
0
1
4
Текст
4
0
2
2
Ключевые данные
2
0
1
0
Звуковые пакеты
3
0
4
3
Неформализованные 5
0
2
7
данные
151
Результаты моделирования показали, что данная схема, даже с сознательно
ухудшенными
параметрами,
обеспечивает
необходимую
производительность,
что
свидетельствует об ее эффективности и правильности решений, заложенных в
архитектуру конкретной распределенной системы анализа и идентификации. Но в то же
время в системе остались необработанные данные. Для устранения таких ситуация
необходимо предусмотреть в архитектуре механизм, позволяющий перераспределять
нагрузку, как на локальную систему, так и на сеть передачи данных.
4.4.1 Модели конфликтных ситуаций при распределении нагрузки
Построенная с помощью комплекса «Базис», система может содержать достаточно
сложные структуры связей элементов внутри себя, в том числе прямые и опосредованные
обратные связи. Большое количество данных, циркулирующих в системе, приводит к
большим нагрузкам как на локальную систему каждой из шин объектов, так и на сеть, в
которой «Базис» функционирует. В этой связи возникает проблема управления
интенсивностью потоков данных[69]. У каждого поставщика данных «Базис», которыми
являются объекты-генераторы, может
быть несколько приемников. Каждый из
приемников может работать на разных скоростях приема. Таким образом, задача, стоящая
перед «Базис» разбивается на две подзадачи: не допустить перегрузки локальной системы,
на которой работает очень медленный и тяжеловесный, с точки зрения использования
ресурсов прикладной объект и синхронизировать частоту генерации данных с частотой
приема этих данных самого требовательного приемника.
Задача управления скоростью так же усложняется вследствие того, что скорости
генерации не могут принимать любые значения. Это обусловлено внутренним
устройством каждого генератора. Например, объект-генератор, работающий с камерой и
поставляющий в информационную среду изображения, может поставлять данные только с
частотой 5, 15, 25 или 30 кадров в секунду, что зависит от устройства, с которым объект
работает[71,72].
Наличие в системе обратных связей может привести процесс настройки скоростей к
бесконечному. На рисунке 2.10 показаны две наиболее распространенных разновидности
связей, которые могут привести к «зависанию» процесса настройки. На схеме показаны
упрощенные варианты этих связей, но в действительности они могут оказаться не столь
очевидными.
152
Рис. 2.10 – Варианты обратной связи при настройке скоростей потоков
В первом варианте (рис 2.10.а), два выхода объекта-генератора подключаются к
двум входам объекта-приемника. При изменении частоты генерации первого потока
данных, изменяется состояние первого входа приемника, что может повлечь за собой
изменение состояния второго входа, потому, что связь их состояний может быть
обусловлена внутренним устройством приемника. Изменение второго входа приемника
влечет за собой изменение состояния второго выхода генератора, потому, что поток с
прежними параметрами может не удовлетворять требованиям нового состояния второго
входа. А это в свою очередь может повлечь изменение первого выхода генератора, и так
далее до бесконечности.
Во избежание описанного конфликта введем ряд ограничений:
 инициация изменения состояние выхода одного из объектов может исходить от
системы, пользователя или объекта, чей вход принимает данные рассматриваемого
объекта;
 изменение состояния входа объекта может инициироваться только тем объектом,
которому данный вход принадлежит;
 любой объект может изменить только состояние выхода, объекта подключенного
к его входу.
Применим механизм ограничения трафика, называемый «Корзиной»[73]. Корзина
располагается на входе объекта-приемника и ограничивает входящий трафик. Если объект
тратит много ресурсов системы на обработку входящих данных, а поток данных слишком
большой, то «корзина» передает данные на вход с той частотой, с которой приемник
может их обрабатывать, не приводя систему к перегрузкам. При этом часть пакетов
данных может теряться.
153
Ситуации, возникающие во втором случае (рис. 2.10.б), можно проиллюстрировать
двумя примерами. Пусть прикладной объект, расположенный слева на рисунке 2.10.б
может генерировать данные с частотами 1,3 и 5 пакетов в секунду, а объект,
расположенный справа – 2,4 и 6 пакетов в секунду. Обозначим состояние выхода левого
объекта LO(x) , где x – частота генерации данных на его выходе, его вход обозначим
LI (i 0, i1) , где i0 – частота входящих в корзину пакетов, i1 – частота, пакетов,
пропущенных корзиной на вход. Соответственно состояния входа и выхода правого
объекта – RO (x ) и RI (i 0, i1) . Пусть в начальный момент времени мы имеем набор
состояний {LI (4,5), LO(5), RI (5,4), RO (4)} , так было задано в момент установки данных
компонентов, несмотря на то, что выход правого объекта не удовлетворяет потребности
входа левого, такая ситуация вполне возможна. Положим, по одной из причин приходит
запрос изменить состояние выхода правого объекта на RO ( 2) . Тогда:
RO (2) 
 RI (5,2) ,
RO (2) 
 LI (2,5) ,
RI (5,2) 
 LO(3) ,
LO(3) 
 RI (3,2) ,
LO(3) 
 LI (2,3) ,
LI (2,3) 
 RO (4) ,
RO (4) 
 RI (3,4) ,
RO (4) 
 LI (4,3) и т.д.
Сперва, мы устанавливаем состояние выхода в требуемое и изменяем состояние
нашего входа, затем изменяем состояние входа потребителя. Изменение состояния входа
влечет за собой изменение состояния выхода левого объекта в LO(3) , так как он может
принимать значения только LO (1) , LO(3) или LO(5) . Продолжая эту цепочку, мы
прейдем к тому, что состояние выхода правого объекта снова изменилось на 4, а если
продолжить
цепочку,
то
процесс
остановится
при
состоянии
системы
{LI (6,5), LO(5), RI (5,6), RO (6)} . Этот пример показывает, что в результате прохождения
петли мы не только не получили желаемого результата, но настройка привела так же к
неожиданным изменениям всей системы.
Второй пример заключается в том, что возможные частоты генерации для левого
объекта лежат в области всех положительных четных чисел, а у правого – положительных
нечетных. В этом случае процесс ни когда не остановится.
154
4.4.2 Моделирование алгоритма подстройки интенсивностей потоков
данных
Для моделирования опишем процесс настройки скоростей потоков в терминах
теории взаимодействующих последовательных процессов[74]. Процесс настройки состоит
из следующих событий:

z p - активизация настройки скоростей для объекта p;

a op - изменение скорости выхода o объекта p ;

bop - передача параметров выхода o объекта p всем его потребителям;

c ip - запуск процесса настройки скорости выхода, подключенного к входу i
объекта p ;

d ip - изменение скорости i -го входа p ;

eip - изменить настройки корзины i -го входа объекта p .
И состоит из следующих процессов:

O p - основной процесс объекта p ;

A p - процесс настройки скорости выхода объекта p ;

Dip - процесс настройки скорости входа i объекта p ;

E op - процесс изменения параметров корзин всех входов, подключенных к
выходу o объекта p .
Описание процесса настройки скоростей потоков данных объекта p выглядит
следующим образом:
O p  (z p  A p ) ,
A p  (aop  E op d ip  Dip eip  A p ) ,
E op  (bop  A p ) ,
Dip  (eip  A p ) .
Для устранения перечисленных выше возможных конфликтов, а так же исключения
параллельных запросов на настройку скоростей других объектов, протекание которых
может привести к непредвиденным последствием вводим понятие сеанса настройки. В
рамках одного сеанса настройки происходят изменения, которые повлеклись начальным
запросом, все остальные запросы в это время ставятся в очередь, а по окончанию
текущего сеанса настройки, из очереди выбирается следующий запрос и для него
создается новый сеанс. Все объекты, измененные во время сеанса настройки, помещаются
155
в список и при попытке изменения объекта из списка, происходит отказ. Таким образом
«Базис» гарантирует, что инициированное пользователем или системой изменение
вступит в силу и не приведет к зацикливанию.
На рисунке 2.11 показана сеть Петри[75] иллюстрирующая модель алгоритма
подстройки скоростей потоков, реализованного в «Базис»[18]. Событиями для этого
алгоритма являются:
 инициализация системы;
 приход запроса на изменение скорости какого-либо выхода;
 определение того, что запрос не принадлежит текущему сеансу;
 создание нового сеанса;
 время ожидания запросов для текущего сеанса истекло;
 сеанс завершен;
 определение того, что запрос принадлежит текущему сеансу;
 новое значение скорости генерации потока максимально среди скоростей приема
этого потока;
 новое значение скорости генерации потока не максимально среди скоростей
приема этого потока;
 состояние входа изменялось во время текущего сеанса;
 состояние входа не изменялось во время текущего сеанса;
 новое значение скорости генерации передано объекту-генератору.
156
Рис. 2.11 – Сеть Петри, описывающая алгоритм подстройки скоростей потоков
Условиями для алгоритма являются:
 проверка принадлежности изменения текущему сеансу;
 создание нового сеанса;
 ожидание запроса для текущего сеанса;
 завершение сеанса;
 отсутствие текущего сеанса;
 проверка того, изменялось ли состояние входа во время текущего сеанса;
 проверка максимальности запрошенного значения скорости среди скоростей
приема для каждого приемника и внесение выхода в список изменений независимо от того
является ли требуемое значение максимальным;
 передача запрошенного значения скорости объекту-генератору для принятия.
Фишки представляют собой запросы на изменение скорости. В начальный момент
времени функционирования происходит инициализация системы, которая не повторяется
больше ни когда. Эта операция помещает одну фишку в позицию «нет текущего сеанса»,
что разрешает системе создать новый сеанс при приходе первого запроса. Затем фишки
появляются только в результате прихода нового запроса и уничтожаются в начале
обработки запроса. Анализ модели приведенной на рисунке 2.11 показывает, что данная
схема лишена перечисленных недостатков и не допускает возникновения перечисленных
выше конфликтов.
Очевидно, что все позиции, кроме позиций «проверка сеанса» и «создание нового
сеанса» являются безопасными, это предотвращает конфликт, когда параметры двух
разных выходов изменяются одновременно, что могло бы повлечь непредсказуемый
результат настройки. А две первые неограниченные позиции представляют собой
постановку запроса в очередь и ожидание обработки.
Теперь перейдем к рассмотрению спецификации описанного алгоритма[76].
Интерфейс IObjectsControl01, реализуемый шиной объектов и менеджером конфигураций,
имеет метод ChangeOutSpeed, который служит для изменения скорости генерации данных.
Метод
принимает
идентификатор
сеанса
настройки,
имя
объекта-значения,
представляющего выход объекта и значение скорости генерации, которое вызывающий
приемник желает иметь на входе. В момент запуска менеджера конфигураций, создается
два новых рабочих потока, которые занимаются обработкой запросов на изменение
скорости. Первый поток, обозначим его ZeroThread, предназначен для обработки запросов
157
с идентификатором запроса 0, что говорит о том, что для обработки запроса требуется
создать новый сеанс. Второй, условно обозначаемый как KnownThread, занимается
обработкой запросов с идентификатором текущего сеанса. Диаграмма изменения
состояний потоков показана на рисунке 2.12.
Оба потока находятся в состоянии «тревожного ожидания». То есть они находятся в
состоянии сна, но выходят из него, если APC очередь потока не пуста. APC очередь
потока, это очередь запросов на выполнение асинхронных вызовов процедур в контексте
данного потока. Запрос не будет выполнен до тех пор, пока поток не будет находиться в
состоянии сна, а соответствующий ему объект ядра не будет находиться в свободном
состоянии. В момент прихода запроса с нулевым идентификатором сеанса, поток
ZeroThread, пытается войти в критическую секцию. Если критическая секция свободна, то
он отчищает список изменений, генерирует идентификатор для нового потока, ставит
запрос в APC очередь потока KnownThread и снова входит в состояние тревожного
ожидания.
Рис. 2.12 – Диаграмма изменения состояний потока ZeroThread
158
Так как APC очередь потока KnownThread теперь не пуста, он извлекает из нее
запрос, проверяет правильность идентификатора, затем проверяет устанавливаемое
значение частоты на максимальность среди частот приема. Проверяет, не изменялся ли
этот выход в течение данного сеанса настройки, и если нет, то заносит изменение в
список изменений и производит вызов метода ChangeOutSpeed шины, на которой
находится объект-генератор, при этом в качестве идентификатора сеанса передает
идентификатор текущего сеанса. После этого поток впадает в состояние тревожного
ожидания на 2 секунды. В это время шина находит нужный генератор и направляет запрос
ChangeOutSpeed ему. Объект пытается изменить выходную частоту. Если значение было
принято объектом, то у него может возникнуть потребность в изменении выходных частот
генераторов, от которых он сам получает данные. В этом случае, он вызывает метод
ChangeConf интерфейса ILockCounter02 шины, передавая в качестве параметров
идентификатор сеанса и свое имя. Шина анализирует изменения в конфигурации объекта,
находит объекты-значения, частоты генерации которых не устраивают объект и для
каждого
из
них
делает
вызов
ChangeOutSpeed
менеджера
конфигураций
с
идентификатором текущего сеанса. Это влечет за собой постановку запроса на изменение
APC очередь потока KnownThread. Текущий сеанс перестает существовать в случае, если
настройка приходит к зацикливанию, то есть, нет запросов на изменение скорости,
информации о котором не было бы в списке изменений. Или в случае отсутствия в APC
очереди потока KnownThread новых запросов в течение 2 секунд. По истечении 2 секунд
ожидания, поток KnownThread освобождает критическую секцию, которая была занята
потоком ZeroThread, и впадает в тревожное ожидание. Тем самым он дает возможность
потоку ZeroThread создать в случае необходимости новый сеанс настройки скоростей.
4.5
Выводы
В данном разделе приведены теоретические основы используемого метода
трекинга головы, базирующегося на построении геометрической модели головы, на
которую накладывается текстурное изображение, и поиске параметров ее движения между
парами последовательных видеокадров. Задача отслеживания положения геометрической
модели головы формулируется как задача определения параметров модели (перемещение
и вращение) так, чтобы проекция 3D модели головы на видеокадр совпадала с реальным
изображением головы на этом кадре. Для решения этой задачи используется эффективный
ИК алгоритм регистрации изображений. Рассмотрено применение полученных выражений
на случай движения головы как трехмерного тела с шестью степенями свободы и
применения перспективной проекции.
159
Рассмотрены принципы задания геометрической формы и построения текстуры для
четырех недеформируемых моделей головы: двумерного прямоугольника, цилиндра,
эллипсоида и модели Candide-3. Рассмотрение четырех моделей головы позволяет
провести их сравнительный анализ.
Предложен способ и на этой основе разработан приближенный алгоритм
инициализации модели головы при использовании некалиброванной монокулярной
камеры. Данный алгоритм основан на детектировании лица и предположении, что при
выбранных параметрах камеры, размере и положении модели головы, проекция модели
головы должна совпадать с изображением головы на первом видеокадре. Алгоритм для
позиционирования модели головы позволяют инициализировать процесс отслеживания
головы в автоматическом режиме без необходимости ручной разметки области лица на
первом кадре.
Приведено архитектурное описание программной реализации метода трекинга
головы на основе системы компьютерной графики OpenGL и библиотеки компьютерного
зрения OpenCV. Описаны основные сущности, выделенные при декомпозиции задачи
трекинга головы, составляющие компоненты ПС «Head Tracking Demo». Разработанная
ПС отличается от известных аналогов реализованным в ней способом записи информации
о положении головы человека на каждом видеокадре. Практическая ценность
реализованной
ПС
состоит
в
возможности
ее
использования
для
получения
экспериментальных данных о положении головы человека на видеокадрах, что делает
возможным сравнение с данными, полученными другими исследователями, например при
сравнении точности различных методов трекинга.
Алгоритмы отслеживания головы обычно оцениваются
количественно на
конечном наборе тестовых (эталонных) видеоизображений. Поэтому в требуется
экспериментальное
исследования
некоторых
образцов
программ
для
оценки
производительности и точности предлагаемого алгоритма трекинга головы. Дано также
краткое резюме по внедрению полученных результатов и перспективы их использования в
компьютерных учебных программах.
5
Формулировка требований к программному продукту
1. модели объектов должны быть универсальными, и не накладывать ни каких
требований к внутренней реализации самого объекта и используемым в нем
технологиям;
2. должна обеспечиваться прозрачность управления объектами как локальными, так
удаленными объектами;
160
3. способ связи и взаимодействия объектов, должен обеспечивать независимость от
взаимного расположения взаимодействующих объектов и совокупности объектов,
вовлеченных во взаимодействие;
4. должно обеспечиваться управление конфигурацией всей системы в целом, так и
отдельных подсистем;
5. комплекс должна предоставлять возможность управления скоростью потоков
данных для ограничения нагрузки на локальную систему и сеть;
6. необходимо ведение журнала производительности системы, для выработки
рекомендаций по улучшению структуры распределения объектов в сети;
7. так же, должно обеспечиваться ведение журнала событий системы для нештатных
ситуаций и ошибок при функционировании;
8. необходима модель поставки и развертывания объектов и подсистем при внесении
новых функциональных возможностей;
9. должна быть защита от ошибочных действий прикладных объектов или
пользователя и вредителей;
10. необходимо обеспечить возможности тестирования оборудования системы вновь
устанавливаемыми объектами для определения возможной конфигурации системы
после установки объекта в той или иной части системы.
11. методология и программный комплекс должны предоставлять разработчику
возможность решать прикладные проблемы, не отвлекаясь на задачи низкого
уровня
161
6
Выбор средств реализации
6.1.1 Термины, используемые при описании программной архитектуры
Согласно [9], в настоящее время нет единого общепризнанного определения
термина «программная архитектура». Поэтому будем использовать определение согласно
стандарту IEEE 1471 «Рекомендуемые методы описания преимущественно-программных
систем»23, в котором утверждается, что архитектура приемущественно-программной
системы (т.е. такой системы, в которой
программное обеспечение (ПО) оказывает
значительное влияние на проект, конструкцию, развертывание и развитие всей системы) –
это базовая организация системы, воплощенная в ее компонентах, их отношениях между
собой и с окружением, а также принципы, определяющие проектирование и развитие
системы.
Архитектура определяет не все в структуре и не все в поведении системы. Она
концентрируется только на значимых, стратегических элементах, и в этом состоит ее
отличие от детального проектирования, которое можно представить себе как набор
тактических
решений.
Значимые
элементы
–
это
элементы,
которые
имеют
продолжительное и устойчивое действие, например, главные структурные элементы,
элементы, связанные с основным поведением и элементы, которые определяют значимые
свойства, такие как надежность и масштабируемость. Не существует общих правил,
позволяющих провести грань между архитектурой и детальным проектированием, в
каждом конкретном случае эту грань находит архитектор.
Целесообразно
рассмотреть
определения
терминов,
связанных
с
данным
определением программной архитектуры:
Система – это набор компонентов, объединенных для выполнения определенной
функции или набора функций. Система существует для выполнения одной или более
миссий в своем окружении.
Компонент. Хотя в определении системы используется термин компонент,
стандарт IEEE 1471 намеренно не дает определения этому термину, чтобы его можно
было свободно толковать исходя из конкретной предметной области. Примем
определение термина компонент, данное в спецификации UML 2.024.
IEEE 1471 [Электронный ресурс] : Wikipedia – Электрон. дан. – 2010. – Режим доступа:
http://en.wikipedia.org/wiki/IEEE_1471, свободный. – Загл. с экрана. – Текст на экране англ.
24
Object Management Group - UML [Электронный ресурс] – Электрон. дан. – 2010. – Режим доступа:
http://www.uml.org/, свободный. – Загл. с экрана. – Текст на экране англ.
23
Компонент – это модульная часть системы, которая инкапсулирует ее содержимое.
Под компонентом в этом определении имеется в виду достаточно произвольный
структурный
элемент
ПО,
который
можно
выделить,
определив
интерфейс
взаимодействия между этим компонентом и всем, что его окружает.
Окружение
(англ.
context,
контекст)
определяет
ход
и
обстоятельства
экономических, эксплуатационных, политических и других влияний на систему. Оно
может включать в себя другие системы, взаимодействующие с данной системой.
Окружение определяет границы, в которых должна работать система, а это, в свою
очередь, влияет на архитектуру. Факторы окружения, оказывающие влияние на
архитектуру – это миссия бизнеса, которую будет поддерживать архитектура,
заинтересованные в системе лица, внутренние технические ограничения (например,
требование соответствовать стандартам организации) и внешние технические ограничения
(такие как необходимость взаимодействовать с внешней системой или соответствовать
внешним регулятивным нормам).
К окружению относится и коллектив разработчиков. По причинам чисто
прагматичным, реальная структура коллектива и доступные навыки представляют весьма
ощутимое ограничение на осознанный или неосознанный выбор архитектуры [9].
ПС не может работать без аппаратного обеспечения, поэтому некоторые
характеристики, такие как надежность или производительность, достигаются сочетанием
программного и аппаратного обеспечения.
Миссия – это применение или действие, для которого одно или несколько
заинтересованных лиц планируют использовать систему в соответствии с некоторым
набором условий.
Заинтересованное лицо (англ. stakeholder) – это физическое лицо, группа или
организация (или ее категории), которые заинтересованы в системе или имеют связанные
с ней задачи. Примеры заинтересованных лиц: заказчик, клиент, менеджер проекта,
системный архитектор, конечный пользователь, разработчик, дизайнер, обслуживающий
персонал и т.д. Интересы заинтересованных лиц накладывают ряд нефункциональных
требований (ограничений) на ключевые характеристики системы, которые также
называют
качествами
системы.
Примеры
качеств:
производительность,
отказоустойчивость, стоимость и т.д.
Архитектурное описание. Набор средств, с помощью которых архитектура
фиксируется на бумаге, называется архитектурным описанием (англ. architecture
description, AD). Документированные архитектуры имеют тенденцию быть более
продуманными – а, следовательно, более эффективными – чем недокументированные,
163
поскольку процесс записи архитектуры естественным образом ведет к всестороннему
обдумыванию. Описание позволяет выразить систему и ее развитие, взаимодействие
между заинтересованными лицами, испытывать и сравнивать различные архитектуры в
упорядоченной манере; планировать, управлять и выполнять действия по разработке
системы, осуществлять проверку реализации системы на соответствие описанию.
В определении архитектуры упоминается набор структур, а не одна структура. Это
означает, что в качестве различных аспектов архитектуры, различных точек зрения на нее
выделяются различные структуры, соответствующие разным аспектам взаимодействия
компонентов.
Структура
является
важнейшей
характеристикой
архитектуры.
Структурный элемент может быть подсистемой, процессом, библиотекой, базой данных,
вычислительным узлом, системой в традиционном смысле, готовым продуктом и так
далее.
Точки зрения и виды. Описание программной архитектуры организуется в
несколько видов (англ. view), согласно точке зрения (англ. view point) каждого
заинтересованного лица (или групп заинтересованных лиц) на то, как должна работать
система. Точка зрения задает язык (нотацию, модель), которые используются для
описания видов, а также методы моделирования и анализа, применимые к этим видам.
Виды обычно состоят из модулей, например из набора диаграмм UML и их описания.
Точка зрения обладают свойством не зависеть от конкретной системы (в отличие от
конкретных видов и заинтересованных лиц), поэтому их выделяют в отдельные
фреймворки, например фреймворк «4+1», предложенный Филиппом Крачтеном [84].
Шаблон – это общее решение общей проблемы в данном контексте.
Стиль архитектуры направляет организацию системы – элементы и их
интерфейсы, взаимодействия и компоновку. Стиль можно рассматривать как особый вид
шаблона, хотя этот шаблон часто является сложным и составным (когда одновременно
применяются несколько шаблонов). Как и шаблон, архитектурный стиль представляет
собой кодификацию опыта, и разработчики архитектур могут использовать этот опыт
повторно.
Логическое обоснование. Важный аспект архитектуры – это не только конечный
результат, то есть сама архитектура, но и ее логическое обоснование. Важно обеспечить
документирование решений, которые привели к созданию этой архитектуры, и логические
обоснования таких решений. Например, эта информация используется при пересмотре
архитектуры, когда разработчику нужно объяснить принятые ранее решения.
Итак, архитектура связана со структурой и поведением, а также только со
значимыми решениями, может соответствовать некоторому архитектурному стилю, на
164
нее влияют заинтересованные в ней лица и ее окружение, она воплощает решения на
основе логического обоснования.
Совместимость архитектурного описания со стандартом IEEE 1471.
Для соответствия стандарту IEEE 1471 описание программной архитектуры
должно соответствовать набору нормативных требований. Описание архитектуры должно:

иметь название, версию и обзорную информацию;

четко выявить заинтересованные стороны и их интересы по отношению к
архитектуре программы;

содержать описание каждой точки зрения (view point), которая была выбрана
для организации представления архитектуры и обоснование для такого выбора;

содержать один или более архитектурных видов (view);

содержать перечисление всех известных несоответствий между требуемыми
частями архитектурного описания;

давать обоснование, почему выбрана именно такая архитектура.
6.1.2 Заинтересованные лица, миссия, окружение и качества программной системы
Далее приведем архитектурное описание системы «Head Tracking Demo» в
соответствии со стандартом IEEE 1471.
Архитектурное описание системы «Head Tracking Demo», версия 1.0.
Как можно понять из названия «Head Tracking Demo», основная миссия
разрабатываемой ПС состоит в том, чтобы продемонстрировать работоспособность
применяемых в ней алгоритмов и методов, а также получить экспериментальные данные о
работе используемых алгоритмов и методов.
Заинтересованные лица:
1. Разработчик (автор) ПС заинтересован в том, чтобы проверить практическую
работоспособность полученных методов и алгоритмов трекинга головы и
получить экспериментальные данные об их производительности и точности.
2. Конечные пользователи ПС «Head Tracking Demo» заинтересованы в
интуитивно
понятном
интерфейсе
и
корректном
поведении,
производительности, надежности и удобстве использования ПС.
3. Компания ТомскСофт заинтересована в обладании программным модулем для
отслеживания
головы
на
видеокадрах,
поступающих
с
монокулярной
некалиброванной веб-камеры, с целью автоматического отслеживания головы
пользователя ПК и наложения видеоэффектов в режиме реального времени.
165
Пожелания заинтересованных лиц накладывают на ПС ряд ограничений, формируя
нефункциональные требования к системе (качества, которыми должна обладать
система). Разрабатываемая ПС должна:
1) работать в реальном масштабе времени (свыше 10 кадров/сек);
2) затрачивать
число
ресурсов
компьютера,
приемлемое
для
конечного
пользователя;
3) работать автоматически (как минимум без сложного взаимодействия с
пользователем);
4) обеспечивать отслеживание головы одного пользователя на видеокадрах;
5) работать с видео, полученным с веб-камеры;
6) обеспечивать заданную точность отслеживания головы в течение заданного
времени (качество робастности);
7) обеспечивать
сохранение
результатов
отслеживания
головы
для
их
последующего анализа;
8) быть совместимой с операционной системой Windows;
9) работать
на
компьютерах,
обладающих
как
минимум
средними
характеристиками аппаратного обеспечения;
10) обеспечивать возможность переноса алгоритмической части на другие
операционные системы с минимальными изменениями;
11) избегать зависимостей от технологий и компонентов, препятствующих
переносу алгоритмической части на другие платформы;
12) иметь
модульную
структуру,
обеспечивая
возможность
повторного
использования модулей;
13) обладать удобным и интуитивно понятным графическим интерфейсом
(качество юзабилити);
14) быть документированной;
15) обладать совокупностью автоматических тестов для проверки корректности
работы программных компонентов (качество тестируемости);
16) обеспечивать
легкость
внесения
требуемых
изменений
(качество
модифицируемости);
17) обладать непротиворечивой структурой.
Окружение ПС «Head Tracking Demo» включает в себя операционную систему,
аппаратное обеспечение, а также среду разработки, язык и парадигм программирования.
Целевой операционной системой (ОС), в которой должна функционировать ПС,
является Windows. ОС Windows является самой распространенной в мире, поэтому
166
разрабатываемая под нее программа будет иметь наибольшую аудиторию (по сравнению с
другими ОС).
В
качестве
парадигма
программирования
стоит
выбрать
объектно-
ориентированный подход. Объекты позволяют создавать модульные программы с
непротиворечивой
структурой,
позволяя
применить
принципы
инкапсуляции
и
наследования.
В качестве языка программирования, применяемого для разработки, выберем язык
С++. Он выбран по той причине, что он позволяет писать быстродействующий код, а
быстродействие является критическим фактором для многих приложений. Кроме того
язык C++ очень популярен.
В качестве средства разработки выберем MS Visual Studio. Эта среда является
доминирующей для разработки на языке C++ платформы Windows. Это коммерческий
продукт, но существуют и бесплатная его версия Visual Studio Express.
6.1.3 Идентификация точек зрения на архитектуру системы
Для идентификации точек зрения на архитектуру
ПС
целесообразно
воспользоваться уже готовым фреймворком, так как он воплощает в себе опыт других
разработчиков программных архитектур. Для преимущественно-программных систем
удобно пользоваться фреймворком «4+1», описанным Ф. Крачтеном [84], который
включает в себя пять (4+1) точек зрения на архитектуру системы (англ. view points):
1. Логический вид (англ. logical view) задает объектную модель проектирования. В
основном данный вид акцентирует внимание на функциональных требованиях –
что система должна делать и какие услуги оказывать пользователям. Средства
описания
–
диаграммы
классов.
Архитектурный
стиль
–
объектно-
ориентированный. Этот вид воплощает точку зрения конечных пользователей и
заказчиков.
2. Вид процесса (англ. concurrency view) рассматривает аспекты параллельного
выполнения и синхронизации. Позволяет судить о некоторых нефункциональных
требованиях,
таких
как
производительность
и
доступность
системы.
Архитектурные стили – клиент-сервер и т.д. Данный вид воплощает точку зрения
системных инженеров.
3. Вид разработки (англ. development view) охватывает статическую структуру
программных модулей системы в окружении среды разработки. Архитектурный
стиль – уровневый (англ. layered style). Данный вид воплощает видение системы
менеджерами проекта, персоналом настройки системы.
167
4. Физический вид (англ. physical view) рассматривает соответствие ПО и
аппаратного обеспечения и аспект размещения (англ. distribution). Позволяет
судить
о
некоторых
нефункциональных
требованиях,
таких
как
производительность и масштабируемость системы. Данный вид воплощает точку
зрения системных инженеров.
Описание архитектуры может группироваться в эти четыре вида, а затем
иллюстрироваться несколькими сценариями использования (англ. use cases), которые
становятся пятым видом.
Наличие всех пяти видов в архитектурном описании не является обязательным.
Например, если система работает на одном процессоре, то можно исключить физический
вид, а если система представляет собой единственный процесс – то вид процесса не
обязателен. Для маленькой системы логический вид и вид разработки могут быть
настолько похожи, что имеет смысл объединить их. Сценарии же полезны в любых
обстоятельствах.
Далее приведем описание архитектуры ПС «Head Tracking Demo», группируя его с
использованием вышеописанных видов. Исключим физический вид из рассмотрения, так
как ПС работает всего на одном компьютере, и процедура развертывания системы не
сложна.
6.1.4 Логический вид
Схема использования ПС «Head Tracking Demo» с точки зрения конечного
пользователя состоит в следующем (рис. 2.18). Основным режимом использования
является «трекинг головы».
Пользователь должен установить свою веб-камеру на монитор (за исключением
случая, когда веб-камера уже встроена в монитор), запустить программу и расположить
голову напротив камеры в обычном положении, в котором он сидит перед компьютером.
ПС обнаружит лицо пользователя на видеокадре и обозначит область кадра, на которой
находится лицо, с помощью рамки. Это является сигналом для пользователя, что можно
начинать процедуру отслеживания головы, и он должен нажать кнопку «Старт». Для
каждого последующего кадра ПС затем определяет конфигурацию головы пользователя в
пространстве и визуально отображает положение головы на каждом кадре с помощью
сеточной модели.
168
Рисунок 2.18 – Варианты использования системы
Пользователь может осуществлять поступательные и вращательные движения
головой, наблюдая, как сетка на экране следует за движениями его головы. Для
прекращения цикла отслеживания головы пользователь нажимает кнопку «Стоп».
Графически эта последовательность иллюстрируется рис. 2.19.
Рисунок 2.19 – Диаграмма последовательности взаимодействия
пользователя и системы
По умолчанию для трекинга используется цилиндрическая модель головы, но
пользователь может выбрать любую из трех остальных моделей: эллипсоидальной,
плоской и модели Candide-3. Этой процедуре соответствует вариант использования
«Выбор модели головы» на рис. 2.18.
169
Запись результатов трекинга. Как отмечалось в первой главе, проблема
сравнения ПС трекинга головы сохраняет свою актуальность. Для того чтобы иметь
возможность сравнить ПС «Head Tracking Demo» с другими подобными системами,
необходимо реализовать возможность сохранения информации о конфигурации головы на
каждом видеокадре и дополнительной информации (времени инициализации модели
головы, времени определения параметров движения между парой кадров и суммарного
времени обработки кадра). Для сохранения информации о событиях, происходящих в
процессе трекинга, и о текущей конфигурации модели головы пользователь может
использовать «запись результатов в лог» на рис. 2.18. При включении режима
отслеживания головы, информация начинает записываться в лог. Лог представляет собой
текстовый файл, пригодный для чтения в текстовом редакторе. Предлагаемый формат
файла описан в приложении Г.
Макет графического интерфейса программы, демонстрирующий процесс трекинга
головы, представлен на рис. 2.20. Окно программы имеет меню, где перечислены
основные функции, доступные пользователю. Результат работы ПС отображается в окне
«Output». Окна «Template», «Confidence Map» и «Object Texture» содержат изображения
соответственно шаблона, карты уверенности и текстуру модели головы, т.е. позволяют
увидеть внутреннее состояние ПС.
Рисунок 2.20 – Макет пользовательского интерфейса
170
Первым шагом при анализе программной системы является декомпозиция бизнеслогики, то есть выделение основных сущностей (или объектов) модели, а для каждого
объекта – его свойств и поведения. В терминах языка программирования C++ сущности
реализуются как классы, свойства – как переменные-члены класса, а поведение объекта
задается методами класса.
С точки зрения логической организации системы, в ней можно выделить три
крупных компонента (рис. 2.21): компонент, реализующий интерфейс с пользователем
(HeadTrackingDemo), компонент, инкапсулирующий в себе методы и алгоритмы трекинга
головы (Testable), и компонент, реализующий автоматические тесты (Tests).
Рисунок 2.21 – Высокоуровневые компоненты системы: интерфейс с
пользователем, тестируемая функциональность и набор тестов
Разбиение на такие компоненты обусловлено следующими причинами:
1. Следует разделять интерфейс пользователя (UI), логику и данные: UI является
отображением данных, а не хранилищем; логика связывает UI и данные.
Например, в главном окне никаких данных нет, все настройки хранятся в файле
настроек, а окно их только отображает.
2. Алгоритмы и методы трекинга головы должны быть повторно используемы,
поэтому логично выделить их в отдельный компонент, взаимодействующий с
внешней средой посредством интерфейса.
171
3. Алгоритмы и методы трекинга головы должны быть переносимы на другие
операционные системы, поэтому в компоненте «Testable» стоит использовать
только переносимые технологии и избегать платформо-зависимых решений.
4. Алгоритмы и методы трекинга должны быть покрыты автоматическими
тестами, что обеспечивает качество тестируемости системы. Это также
облегчает внесение изменений в систему (можно легко проверить, не сломалось
ли что-нибудь при добавлении новой функции).
Рассмотрим структуру компонентов на рис. 2.21 подробнее.
Компонент «HeadTrackingDemo», в свою очередь, состоит из двух компонентов:
«User Interface», который реализует функции графического интерфейса с пользователем,
такие как управление окнами, и «Core» (дословно «ядро»), который реализует логику
приложения.
Компонент «User Interface» зависит от библиотеки WTL и функций WinAPI,
поэтому он работает только в ОС Windows. WTL является легковесной оберткой над
функциями WinAPI и позволяет эффективно управлять окнами приложения. Библиотека
WTL выбрана по причине ее маленького размера (в отличие от библиотеки MFC), а также
потому, что она имеет понятную структуру и широко распространена. Компонент «UI
classes» содержит реализацию классов для работы с окнами, и является «тонким
интерфейсом» (англ. thin interface), т.е. не содержит бизнес-логики (логика сосредоточена
внутри компонента «Core»).
Компонент «Core» (см. рис. 2.22) содержит логику приложения («AppModel»),
такую как доступ к настройкам программы, захват видеокадров с веб-камеры («Video
Capture»). Компонент «Video Capture» для захвата видеокадров с веб-камеры использует
библиотеку DirectShow, которая также работает только в ОС Windows. DirectShow
используется, так как это стандартное средство захвата видео в ОС Windows и
предоставляет гораздо больше возможностей, чем, например, платформонезависимая
библиотека HighGUI, входящая в состав OpenCV.
Класс CGraphManager инкапсулирует в себе функциональность для работы с
графом DirectShow. DirectShow-граф состоит из фильтров, соединенных посредством
COM-интерфейсов. Примеры фильтров: фильтр для захвата видео (video capture filter),
декомпрессор (decompressor), компрессор (compressor), фильтр, позволяющий извлечь
кадры из видеопоследовательности (sample grabber). Класс СSampleGrabber передает
извлеченные видеокадры классу СSampleGrabberCB, и далее кадры поступают в
CVideoProcessor, который использует алгоритм трекинга головы для их обработки.
172
Рисунок 2.22 – Структура компонента «HeadTrackingDemo»
Более глубокое рассмотрение компонента «Head Tracking Demo» не является
значимым с точки зрения архитектуры, гораздо важнее рассмотреть структуру компонента
«HeadTracking», который инкапсулирует в себе реализацию методов и алгоритмов
трекинга головы (рис. 2.23). Этот компонент базируется на функциональности библиотек
OpenGL и OpenCV, которые являются стандартными и платформонезависимыми.
Пакет Matrix. В пакет «Функциональность для манипулирования матрицами» на
рис. 2.23 (в С++ реализуется как namespace) вынесены общеупотребимые функции для
манипуляции с матрицами: инициализация матрицы параллельного переноса, матрицы
вращения, модель-вид, твист-матрицы, процедура преобразования оконных координат в
координаты наблюдателя, извлечение параметров из матрицы модель-вид и др.
173
Рисунок 2.23 – Структура компонента «HeadTracking»
Классы для задания модели камеры. Параметры камеры задаются матрицей
проецирования, которая содержится в базовом классе CBaseCameraModel (рис. 2.24).
Перспективная модель камеры CPerspectiveCameraModel наследует свойства и
поведение CBaseCameraModel, но ограничивает значения матрицы P с помощью
метода SetFrustum() либо SetPerspective()
представляли собой перспективное преобразование.
174
таким образом, чтобы они
Рисунок 2.24 – Классы моделей камеры
Классы для задания моделей головы. Постараемся абстрагироваться по
возможности от использования термина «голова», и использовать более общий термин
«трехмерный объект». Термином трехмерный объект будем обозначать любое тело,
которое можно описать жесткой моделью. В тех случаях, когда сущность либо действие
относится именно к голове (либо к лицу), и его нельзя обобщить на всевозможные
недеформируемые объекты, будем специально это указывать в названиях классов и в
тексте описания. На рис. 2.25 приведены классы, используемые для задания моделей.
Абстрактный класс CBaseObjectModel – это базовый класс, задающий
поведение модели твердого недеформируемого объекта. Модель объекта содержит
методы для манипуляции матрицей модель-вид, для проецирования модели объекта на
плоскость кадра (данный метод строит шаблон, карту уверенности и буфер глубины), и
для построения текстуры объекта по видеокадру (обратная операция по отношению к
проецированию). Базовый класс не задает определенной геометрической формы модели
объекта, это должны сделать производные от него классы.
175
Рисунок 2.25 – Отношения наследования между классами геометрических
текстурных моделей головы
Рисование моделей головы можно осуществлять с помощью разных средств,
например, вручную либо с использованием библиотеки OpenGL. Рисование вручную
реализовано
в
виде
класса
CSelfRenderedCylinder.
Этот
класс
задает
цилиндрическую форму модели объекта, которая рисуется с помощью проецирования
точек вручную, что не является эффективным в плане скорости рисования. Поэтому
данный класс используется только для тестирования.
Абстрактный базовый класс CBaseOpenGLRenderedModel (рис. 2.26) наследует
классу
СBaseObjectModel,
и
добавляет
функциональность
для
рисования
(проецирование/построение текстуры) модели средствами библиотеки OpenGL. Класс
COpenGLRenderedModel
находится
в
отношении
ассоциации
с
классом
COpenGLWindow, который инкапсулирует в себе контекст OpenGL.
Класс
COpenGLRenderedModel
содержит
чисто
виртуальный
метод
DrawObject(), который должны реализовать все порождаемые классы, и с помощью
этого метода порождаемые классы задают геометрическую форму модели объекта. Чисто
виртуальный метод OnVisualize() необходим, чтобы дать дочернему классу
возможность визуально обозначить текущее положение модели поверх текущего
видеокадра. Например, это можно сделать, нарисовав положение модели с помощью
проволочной сетки.
176
Рисунок 2.26 – Абстрактные базовые классы, от которых наследуются классы
геометрических текстурных моделей объектов
Всеми производными моделями объектов (рис. 2.27), реализующими конкретную
геометрическую
модель
головы
(цилиндр
CCylinderObjectModel,
эллипсоид
CEllipsoidObjectModel, прямоугольник CRectangleObjectModel, и модель
Candide-3
СCandide3FaceModel)
наследуется
свойства
и
поведение
класса
CBaseOpenGLRenderedModel.
Рисунок 2.27 – Дочерние классы геометрических текстурных моделей объектов:
Candide-3, цилиндра, эллипсоида и плоской модели
Классы для инициализации модели головы. Класс CFaceDetector (рис. 2.28)
– это обертка над алгоритмом детектирования объектов Виола-Джонса из библиотеки
OpenCV.
Используемый
алгоритм применим
лишь
к
распознаванию
лиц;
его
использование с другими классами визуальных объектов требует тренировки каскада
классификаторов на изображениях объектов этих классов.
177
Рисунок 2.28 – Детектор лица
Класс CHeadModelInitializer (рис. 2.29) отвечает за инициализацию модели
головы, используя описанный в данной работе алгоритм инициализации модели головы.
Получая прямоугольник лица от детектора CFaceDetector, данный класс задает
параметры камеры, размер и положение модели головы таким образом, чтобы ее проекция
приближенно совпадала с прямоугольником лица на кадре.
Рисунок 2.29 – Класс, реализующий алгоритм инициализации модели головы
Классы
моделей
CPixelMappingModel
сопоставления
(рис.
2.30)
пикселей.
задает
Абстрактный
поведение
для
базовый
конкретной
класс
модели
сопоставления пикселей. Метод GetParamCount() служит для того, чтобы узнать
количество параметров, от которых зависит модель, так как число параметров может быть
различным для каждой модели.
Метод MapPixel() вычисляет координаты пикселя x′, которому соответствует
пиксель x. То, как модель осуществляет преобразование координат пикселя, зависит от ее
текущего состояния. Сразу после создания модели, она будет переводить пиксель в самого
себя. Состояние модели можно обновить методом Update(), который на вход берет
вектор Δp. Для сброса модели в исходное состояние предназначен метод Reset(). Метод
CalcJacobianMat() служит для того чтобы вычислить матрицу Якоби для функции
W(x,Δp) в заданной точке (xn,0).
178
Рисунок 2.30 – Иерархия моделей сопоставления пикселей
Для тестирования алгоритма регистрации используются модели сопоставления
пикселей с тремя и с четырьмя параметрами, которые реализованы соответственно в виде
классов
CPixelMappingModel3DOF
и
CPixelMappingModel4DOF.
Класс
CPixelMappingModel6DOF реализует модель движения твердого тела в трехмерном
пространстве с шестью степенями свободы, и используется в алгоритме трекинга головы.
Реализация ИК алгоритма. ИК алгоритм регистрации изображений (рис. 2.31)
реализован в виде класса CInvCompRegistrationAlgorithm. Для детального
ознакомления с реализацией данного класса рекомендуется обратиться к статье [14].
Рисунок 2.31 – Класс, реализующий инверсно-композиционный алгоритм
регистрации изображений
179
С точки зрения клиента в этом классе можно выделить две группы методов:
высокого уровня и низкого уровня. Если нужно просто провести регистрацию
изображений, причем не требуется доступа к низкоуровневым настройкам, то можно
воспользоваться методом RegisterImages().Но иногда простого вызова метода
RegisterImages() может быть недостаточно. Например, в случае, когда надо
контролировать какие-то внутренние параметры. В таком случае стоит рассмотреть
низкоуровневые методы (AllocResources(), FreeResources(), Precompute(),
ApproximateParameterIncrement(), IsReady(), IsInnerLoopReady()).
Выделение ресурсов происходит в методе AllocResources(). Высвобождение
ресурсов происходит в методе FreeResources(), который обычно вызывается в
деструкторе. Метод Precompute() реализует фазу предварительных вычислений из
внутреннего итерационного цикла. Метод ApproximateParameterIncrement()
позволяет произвести одну итерацию внутреннего цикла минимизации. Чтобы узнать,
когда
можно
завершить
внутренний
итерационный
цикл,
служит
метод
IsInnerLoopReady(). Этот метод проверяет, выполняется ли критерий останова, и не
превышено ли максимально возможное число итераций. Во внешнем итерационном цикле
происходит деформация изображения с помощью найденного на внутреннем цикле
приближения вектора Δp, которое в предварительно было инкорпорировано в модель
сопоставления пикселей вызовом CPixelMappingModel::Update(). Деформация
производится
с
помощью
метода
WarpImageI2().
Алгоритм
билинейной
интерполяции для вычисления интенсивности пикселя с дробными координатами
(субпиксельная точность) реализован в виде метода InterpolatePixelIntensity().
И наконец, для внешнего итерационного цикла также есть свой метод для проверки
критериев останова под названием IsReady().
Классы, реализующие алгоритм трекинга головы. Алгоритм трекинга головы
(рис. 2.32), включающий в себя процедуру инициализации модели головы и определения
ее межкадрового движения с помощью алгоритма регистрации, реализуется в виде класса
CHeadTrackingAlgorithm. Основной метод в данном классе – ProcessFrame() –
предназначен для обработки поступающего с камеры видеокадра. Этот метод возвращает
объект HeadTrackingInfo, который содержит информацию о текущем положении
модели головы и другие параметры (такие как характеристики производительности).
Класс CHeadTrackingAlgorithm согласно своему внутреннему состоянию
выполняет
либо
межкадрового
инициализацию
движения
модели
модели
головы,
головы.
Если
180
либо
модель
определяет
головы
еще
параметры
не
была
инициализирована, то на видеокадре детектором лица Виола-Джонса определяется
прямоугольная область, на которой находится лицо. По полученным от детектора данным
инициализируется модель головы человека (задается ее первоначальная конфигурация,
размер, текстура и параметры камеры).
Далее, для каждой последующей пары видеокадров находятся параметры
межкадрового движения модели головы, и положение модели обновляется так, чтобы
наилучшим образом соответствовать текущему видеокадру. В случае если невозможно
определить межкадровое движение головы, на текущем кадре производится поиск области
лица, и инициализация модели головы повторяется заново.
Рисунок 2.32 – Класс, реализующий алгоритм трекинга головы
6.1.5 Вид процесса
ПС «Head Tracking Demo» функционирует в рамках одного процесса. В этом
процессе существуют как минимум два потока исполнения – главный поток и рабочий
поток (рис. 2.33). Поэтому, если на компьютере имеется два процессора, то разбиение на
два потока позволит выгоднее использовать вычислительные ресурсы.
В главном потоке происходит обработка оконных сообщений, как это делает любое
GUI приложение Windows. Главный поток циклически извлекает оконные сообщения из
очереди сообщений потока. Обработка завершается, когда пользователь закрывает
главное окно приложения и потоку приходит сообщение WM_QUIT. Классы из компонента
«User Interface» на рис. 2.18 работают в главном потоке выполнения. Рабочий поток
создается внутри класса CGraphManager (рис. 2.21), который является реализацией
фильтр-графа DirectShow.
181
Рисунок 2.33 – Схема работы главного и рабочего потоков
Так как обработка видеокадров является протяженной по времени вычислительной
работой, ее обычно выносят в другой поток, называемый рабочим потоком. Это позволяет
избавиться от «торможения» графического интерфейса.
Видеокадры поступают с такой частотой, которую задает выбранный источник
видео (веб-камера или видеофайл). Классы из пакета «HeadTracking» работают в рабочем
потоке выполнения. Рабочий поток выполнения может завершиться в момент, когда
источник видео посылает сигнал об окончании видеопоследовательности. Взаимодействие
между главным и рабочим потоками происходит через разделяемую память и через
асинхронные оконные сообщения.
6.1.6 Вид разработки
Данный вид фокусируется на реальной организации системы в форме модулей
сборки – программных библиотек и подсистем среды разработки. Подсистемы
организуются в слои (рис. 2.34), каждый слой предоставляет четкий интерфейс по
отношению к слою выше его.
182
Конкретная подсистема может иметь зависимости только от подсистемы,
расположенной в том же уровне, что и она или в уровне ниже. Это позволяет избежать
сложных зависимостей между модулями и облегчить помодульный выпуск (релиз) ПО.
Рисунок 2.34 – Компоненты сборки ПС и их зависимости, организованные в виде уровней
Заключение
Основные результаты исследований состоят в следующем:
1. Проведен
анализ
научно-технической
литературы,
нормативно-технической
документации и других материалов по теме проекта. Детально рассмотрены методы и
алгоритмы отслеживания (трекинга) головы человека на видеокадрах, а также методы
распознавания образов. Результаты аналитического обзора будут использованы на
последующих этапах НИР как основа для создания прикладного программного
обеспечения на базе сервис-ориентированной архитектуры.
2. Выбраны и обоснованы направления дальнейших исследований и способов
решения поставленных задач. Рассмотрены «классические» технологии распределенных
вычислений: RPC, Java RMI, COM, CORBA, а также технологии соответствующие новой
парадигме
распределенных
вычислений,
а
именно
«облачные
вычисления».
Сформулирована основная проблема ОВ – управление динамически изменяющимися
ресурсами (балансировка нагрузки).
183
3. Проведены патентные исследования в области существующих методов и систем
обработки и анализа изображений, а также методов балансировки нагрузки. Показано,
что сервис-ориентированная архитектура (СОА), как основа для развития концепции
«облачных вычислений», позволяет применить новые подходы к управлению ресурсами
вычислительных систем. Предлагается рассматривать сервис как вычислительную
задачу, предъявляющую конкретные требования к совокупности из 4-х типов ресурсов
вычислительных систем (ВС): процессору, оперативной памяти, подсистеме вводавывода, коммуникационным каналам. Диспетчеризация, основанная на априорно
известных характеристиках задач (сервисов), позволит более эффективно управлять
ресурсами ВС и точнее удовлетворять требования к качеству сервиса, с точки зрения
известных критериев.
4. Выбран математический аппарат формализации задач синтеза архитектур сервисориентированных информационно-вычислительных систем. В качестве базиса выбран
аппарат сетей Петри, проведено моделирование вычислительных процессов и потоков
данных, возникающих в распределенной системе идентификации изображений «Базис»,
выбранной в качестве примера реально существующей ИВС.
5. Сформулированы требования к информационно-вычислительной системе с точки
зрения программной архитектуры.
6. Выбраны
средства
реализации
эталонной
информационно-вычислительной
системы, описан процесс реализации.
Список использованных источников
К разделу 1.1, 4.1-4.3 и 6
1.
Абакумов В.Г. Современные средства взаимодействия человека с компьютером /
В.Г. Абакумов, В.В Васильева, Е.Ю. Ломакина // Электроника и связь.
Тематический выпуск «Электроника и нанотехнологии» – №5 – 2010. – C. 128–
131.
2.
Автоматизация разработки компьютерных учебных программ / А.А. Мицель,
В.В. Романенко, М.В. Веретенников, А.И. Щербаков – Томск: Изд-во НТЛ, 2005.
– 384 с.
184
3.
Афанасьев В.В. Анализ показателей эффективности применения обучающих
программ // В.В. Афанасьев, О.Б. Тыщенко, И.В. Афанасьева // Труды I
Всероссийской научно-техн. конф. «Компьютерные технологии в науке,
проектировании и производстве» – Нижний Новгород, 1999. – Ч. V. – С. 43.
4.
Бермант А.Ф. Краткий курс математического анализа. Для ВТУЗов / При
редакционном участии И.Г. Арамановича – Издание третье, стереотипное. – М.:
Изд-во «Наука», 1965. – 656 с.
5.
Вежневец В. Система управления курсором «мыши» при помощи движений
головы пользователя / В. Вежневец, Р. Шоргин, А. Вежневец // Труды конф. по
компьютер. графике и машинному зрению Graphicon-2006. – Новосибирск, 2006.
– С. 455–458.
6.
Гмурман В.Е. Теория вероятностей и математическая статистика: Учеб. пособие
для вузов. – 8-е изд., стер. – М.: Высш. шк., 2002. – 479 с.: ил.
7.
Дубровский Д.И. Новая реальность: человек и компьютер // Полигнозис – М:
Журнал «Полигнозис», 2003. – № 3 (23) – С. 20–32.
8.
Ерохина А.П. Высшая математика. Часть 1. Линейная алгебра, аналитическая
геометрия, введение в математический анализ, дифференциальное исчисление:
Учебное пособие. / А.П. Ерохина, Л.Н. Байбакова – Томск, 2004. – 257 с.
9.
Илес П. Что такое архитектура программного обеспечения? [Электронный
ресурс]
–
Электрон.
дан.
–
IBM,
2006.
–
Режим
доступа:
http://www.ibm.com/developerworks/ru/library/eeles/, свободный – Загл. с экрана. –
Текст на экране рус.
10.
Ильин В.А. Математический анализ. Продолжение курса. / В.А. Ильин, В.А.
Садовничий, Бл.Х. Сендов. Под. ред. академика А.Н. Тихонова. – М., Изд-во
МГУ, 1987. – 358 с.
11.
Калиткин Н.Н. Численные методы: Учебное пособие для вузов / Н.Н. Калиткин;
ред. А.А. Самарский. – М.: Наука, 1978. – 512 с.: ил., табл. – Библиогр.: с. 505–
508. – Предм. указ.: с. 509–512. – (в пер.) : Б. ц.
12.
Кориков А.М. Развитие систем человек-компьютер на основе методов трекинга
головы человека / А.М. Кориков, О.А. Кривцов // Материалы докладов 16-й
Международной научно-техн. конф. «Природные и интеллектуальные ресурсы
Сибири (СИБРЕСУРС-16-2010)» – Томск: САН ВШ; В-Спектр, 2010. – С. 14–18.
13.
Кориков А.М. Развитие технологий электронного образования с позиций
информатики как науки об инфокоммуникациях / А.М. Кориков, А.А. Мицель,
В.В. Романенко // Информатика и образование, 2010 – С. 1–10.
185
14.
Кривцов О.А. Инверсно-композиционный алгоритм регистрации изображений.
Программная реализация алгоритма регистрации средствами языка C++ и
библиотеки OpenCV / О.А. Кривцов, А.М. Кориков // RSDN Magazine – М.: Издво К-Пресс. – ISSN 0234-6621 – 2010. – № 1 – С. 59–72.
15.
Кривцов О.А. Исследование применимости
метода Ньютона и
метода
Левенберга-Марквардта к задаче регистрации изображений // Материалы
докладов Всероссийской науч.-техн. конф. студентов, аспирантов и молодых
ученых «Научная сессия ТУСУР-2010» – Томск: Изд-во В-Спектр, 2010 – Ч. 4. –
С. 231–234.
16.
Кривцов О.А. Методы трекинга головы человека на видео // Материалы докладов
Всероссийской науч.-техн. конф. студентов, аспирантов и молодых ученых
«Научная сессия ТУСУР-2010» – Томск: Изд-во В-Спектр, 2010 – Ч. 1 – С. 149–
152.
17.
Кривцов О.А. Моделирование головы человека для задачи отслеживания ее
положения на видеокадрах // Доклады Томского государственного университета
систем управления и радиоэлектроники – Томск: Издательство ТУСУР, 2009. – №
1(19), Ч. 1. – С. 109–115.
18.
Кривцов О.А. Отслеживание головы человека на видеокадрах: классификация и
выбор / О.А. Кривцов, А.М. Кориков // Журнал «Информационные технологии» –
М.: Изд-во «Новые технологии», 2010. – № 9 – С. 13–19.
19.
Кривцов О.А. Отслеживание головы человека на видеокадрах: состояние
проблемы / О.А. Кривцов, А.М. Кориков // Журнал «Информационные
технологии» – М.: Изд-во «Новые технологии», 2010. – № 7. – С. 2–9.
20.
Кривцов О.А. Отслеживание жестких объектов на видеокадрах с помощью
текстурных моделей // Материалы докладов VII Всероссийской научнопрактической конф. студентов, аспирантов и молодых ученых «Молодежь и
современные информационные технологии» – Томск: СПБ Графикс, 2009 – Ч.1 –
С. 149–150.
21.
Кривцов О.А. Отслеживание положения головы человека в пространстве на
основе анализа видеокадров / О.А. Кривцов, А.М. Кориков // Доклады Томского
государственного университета систем управления и радиоэлектроники – Томск:
Издательство ТУСУР, 2008. – № 2(18), часть 2. – С. 32–39.
22.
Кривцов О.А. Программа отслеживания перемещения головы на видео. Труды
XIV международной науч.-практ. конф. «Современная техника и технологии» –
Томск: ТПУ, 2008 – Т. 2. – С. 320–321.
186
23.
Кривцов О.А. Система отслеживания перемещения головы на видео кадрах.
Труды конф. «Научная сессия ТУСУР-2008» – Томск: Изд-во «В-Спектр», 2008. –
Т. 1. – С. 144.
24.
Кривцов О.А. Сравнительный анализ жестких моделей головы человека
применительно к задаче отслеживания головы на видеокадрах / О.А. Кривцов,
А.М. Кориков // Материалы докладов Всероссийской науч.-техн. конф.
студентов, аспирантов и молодых ученых «Научная сессия ТУСУР-2009» –
Томск: Изд-во В-Спектр, 2009 – Ч. 4. – С. 218–221.
25.
Кривцов О.А. Тестовое видео для трекинга головы человека // Материалы XLVIII
Международной научной студенческой конф. «Студент и научно-технический
прогресс» : Информационные технологии – Новосиб. гос. ун-т. Новосибирск,
2010. – С. 15.
26.
Кривцов О.А. Управление курсором мыши путем отслеживания наклона головы
пользователя // Материалы докладов молодежной пятой науч.-практ. конф.
«Электронные средства и системы управления: итоги реализации программы
развития электроники и IT-технологий в томской области» – Томск: В-Спектр,
2008. – С. 190–195.
27.
Митропольский А.К. Техника статистических вычислений – 2-е изд. – М.: Наука,
1971. – 576 с.
28.
Мицель А.А. Методы оптимизации. Часть I : Учебное пособие. / А.А. Мицель,
А.А. Шелестов – Томск: Томский межвузовский центр дистанц. образования,
2002. – 192 с.
29.
Отчет о научно-исследовательской работе «Исследование методов и алгоритмов
анализа изображений для задач идентификации личности» (заключительный) /
Научный руководитель Кориков А.М. Коллектив авторов. – Томск, 2009 – 126 с.
30.
Слободянюк А.И. Метод наименьших квадратов в школьном физическом
эксперименте // Фiзiка: праблемы выкладання.– 1995. – Вып. 1. – С. 88–99.
31.
Тыщенко О.Б. Диалоговое взаимодействие в системе «человек – компьютер» //
Компьютерная хроника – 1999. – № 9. – С. 33–36.
32.
Tэйлор Дж. Введение в теорию ошибок / Пер. с англ. Л.Г. Деденко – М: Мир,
1985. – 272 с.
33.
Шапкин С.А. Компьютерная игра: новая область психологических исследований
// Психологический журнал, 1999 – Т. 20, № 1. – С. 86–102.
34.
3D Expressive Face Model-Based Tracking Algorithm / M. Anisetti, V. Bellandi, E.
Damiani, F. Beverina // Proc. 24th IASTED Intl. Conf. on Signal Processing, Pattern
187
Recognition, and Applications. – Anaheim, CA, USA: ACTA Press, 2006. – P. 111–
116.
35.
A Real Time Face Tracking and Animation System / X. Wei, Z. Zhu, L. Yin, Q. Ji //
Comp. Vision and Pattern Recognition Workshop – Los Alamitos, CA: IEEE Computer
Society, 2004. – Vol. 5. – P. 71.
36.
Ablavsky V. Layered Graphical Models for Tracking Partially Occluded Objects / V.
Ablavsky, A. Thangaly, S. Sclaroff // Proc. IEEE Conf. on Comp. Vision and Pattern
Recognition – Anchorage, AK., 2008. – P. 1–8.
37.
Ahlberg J. Candide 3 – An Updated Parameterized Face // Report No. LiTHISY-R2326, Dept. of Electrical Engineering, Linköping University, Sweden, 2001. – 16 p.
38.
An Investigation of Model Bias in 3D Face Tracking / D. Fidaleo, G. Medioni, P. Fua,
V. Lepetit // Analysis and Modeling of Faces and Gestures – B: Springer
Berlin/Heidelberg, 2005. – Vol. 3723/2005. – P. 125–139.
39.
Ashdown M. Combining Head Tracking and Mouse Input for a GUI on Multiple
Monitors / M. Ashdown, K. Oka, Y. Sato // Proc. of Conf. on Human Factors in
Computing Systems. – Portland, OR, 2005. – P. 1188–1191.
40.
Automatic Recognition of Eye Blinking in Spontaneously Occurring Behavior / T.
Moriyama, T. Kanade, J. F. Cohn, J. Xiao, Z. Ambadar, J. Gao, H. Imamura // Proc.
16th Intl. Conf. on Pattern Recognition – Washington, DC: IEEE Computer Society,
2002. – Vol. 4. – P. 78–81.
41.
Avidan S. Ensemble Tracking // IEEE Tran. Pattern Analysis and Machine Intelligence
– N.Y.: IEEE Computer Society, 2007. – Vol. 29, No. 2. – P. 261–271.
42.
Avidan S. Support Vector Tracking // IEEE Trans. on Patt. Analysis and Mach. Intell. –
N.Y.: IEEE Computer Society, 2004. – Vol. 26, No. 8. – P. 1064–1072.
43.
Ba S. Evaluation of Multiple Cue Head Pose Estimation Algorithms in Natural
Environments / S. O. Ba, J. Odobez // In Proceedings of the Intnl. Conf. on Multimedia
and Exposition (ICME) – Amsterdam, July 2005. – P. 1330–1333.
44.
Baker S. Aligning Images Incrementally Backwards / S. Baker, F. Dellaert, I. Matthews
// Tech. report CMU-RI-TR-01-03 – 2001. – 20 p.
45.
Baker S. Lucas-Kanade 20 Years On: A Unifying Framework: Part 1 / S. Baker, I.
Matthews // Tech. report CMU-RI-TR-02-16, Robotics Institute, Carnegie Mellon
University. Pittsburg, 2002. – 47 p.
46.
Basu S. Motion Regularization for Model-Based Head Tracking / S. Basu, I. Essa, A.
Pentland // Proc. IEEE Intnl. Conf. on Pattern Recognition, Vienna, Austria, 1996. –
Vol. 3. – P. 611–616.
188
47.
Birchfield S. Elliptical Head Tracking Using Intensity Gradients and Color Histograms
// Proc. IEEE Conf. on Comp. Vision and Pattern Recognition. – Santa Barbara,
California, 1998. – P. 232–237.
48.
Black M. EigenTracking: Robust Matching and Tracking of Articulated Objects Using
a View Based Representation / M. Black, A. Jepson // Intnl. Journal Comp. Vision –
Springer Netherlands, 1998. – Vol. 26, No. 1. – P. 63–84.
49.
Bottino A. Real Time Head and Facial Features Tracking from Uncalibrated Monocular
Views // Proc. 5th Asian Conf. on Comp. Vision. – Melbourne: Asian Federation of
Comp. Vision Societies, 2002. – Vol. 2. – P. 776–781.
50.
Bradski G. Computer Vision Face Tracking for Use in Perceptual User Interface // Intel
Technology Journal. – Intel, 1998. – Vol. Q2. – P. 15.
51.
Bregler C. Tracking People with Twists and Exponential Maps / C. Bregler, J. Malik //
Proc. IEEE Comp. Society Conf. on Comp. Vision and Patt. Recogn. – Santa Barbara,
CA: IEEE Computer Society, 1998. – P. 8–15.
52.
Breitenstein M. Pose Estimation for Face Recognition using Stereo Cameras. Master
Thesis // Swiss Federal Institute of Technology Zurich, 2006. – 83 p.
53.
Brown L. 3D Head Tracking Using Motion Adaptive Texture-Mapping // IEEE Comp.
Society Conference on Comp. Vision and Pattern Recognition – IEEE Computer
Society, 2001. – Vol. 1. – P. 998.
54.
Cascia M. Fast, Reliable Head Tracking under Varying Illumination: An Approach
Based on Registration of Texture-Mapped 3D Models / M. La Cascia, S. Sclaroff, V.
Athitsos // IEEE Trans. on Pattern Analysis and Machine Intelligence. – Washington,
DC: IEEE Computer Society, 2000. – Vol. 22, No. 4. – P. 322–336.
55.
Cascia M. Fully Automatic, Real-Time Detection of Facial Gestures from Generic
Video / M. La Cascia, L. Valenti, S. Sclaroff // Proc. IEEE 6th Workshop on
Multimedia Signal Processing. – Siena, Italy, 2004. – P. 175–178.
56.
Cascia M. Head Tracking via Robust Registration in Texture Map Images / M. La
Cascia, J. Isidoro, S. Sclaroff // In Proc. IEEE Conf. on Comp. Vision and Pattern
Recognition – Los Alamitos, CA: IEEE Computer Society, 1998. – P. 508–514.
57.
Chaumont M. 3D-Face Model Tracking Based on a Multi-Resolution Active Search /
M. Chaumont, W. Puech // Visual Communications and Image Processing, Part of
IST/SPIE 19th Annual Symposium on Electronic Imaging – San Jose, CA, 2007. – Vol.
6508. – P. 65081U.
189
58.
Chen Y. Simultaneous Tracking of Rigid Head Motion and Non-rigid Facial Animation
by Analyzing Local Features Statistically / Y. Chen, F. Davoine // Proc. British
Machine Vision Conf. – Edinburgh, 2006. – Vol. 2. – P. 609.
59.
Colmenarez A. 3D Model-Based Head Tracking / A. Colmenarez, R. Lopez, T. Huang
// Proc. Intl. Conference VSIP – SPIE Press, 1997 – P. 426–434.
60.
Davoine F. Head and Facial Animation Tracking using Appearance Adaptive Models
and Particle Filters / F. Davoine, F. Dornaika // Comp. Vision and Pattern Recognition
Workshop – Los Alamitos, CA: IEEE Computer Society, 2004. – Vol. 10 – P. 153.
61.
Deng Z. Data Driven 3D Facial Animation / Z. Deng, U. Newman – Springer, 2008. –
296 p.
62.
Edwards G. Interpreting face images using active appearance models / G. J. Edwards,
C. J. Taylor, T. F. Cootes // Proc. Intnl. Conf. on Automatic Face and Gesture
Recognition – 1998. – P. 300–305.
63.
Engel K. Real-Time Volume Graphics – 2006. – P. 112–114.
64.
Face Pose Estimation and its Application in Video Shot Selection / Z. Yang, H. Ai, B.
Wu, S. Lao, L. Cai // Proc. 17th Intnl. Conf. on Patt. Recogn. – IEEE Computer
Society, 2004. – Vol. 1. – P. 322–325.
65.
Face Pose Estimation System by Combining ICA-SVM Learning and 3D Modeling / K.
Seo, I. Cohen, S. You, U. Neumann. // Proc. Asian Conf. on Comp. Vision – Jeju,
Korea, 2004. – P. 105.
66.
Face Recognition by Elastic Bunch Graph Matching / L. Wiskott, J. M. Fellous, N.
Krüeger, C. Malsburg // IEEE Trans. Pattern Anal. Mach. Intell. – Washington, DC:
IEEE Computer Society, 1997. – Vol. 19, No. 7 – P. 775–779.
67.
Fast Multiview Face Tracking with Pose Estimation / J. Meynet, T. Arsan, J. C. Mota,
J. Tiran // Tech. report TR-ITS.2007.01. Ecole Polytechnique Federale de Lausanne,
Signal Processing Institute, 2007. – 12 p.
68.
Fast Rotation Invariant Multi-View Face Detection Based on Real Adaboost / B. Wu,
H. Ai, C. Huang, S. Lao // Proc. 6th IEEE Intnl. Conf. on Automatic Face and Gesture
Recogn. – 2004. – P. 79–84.
69.
Fu Y. hMouse: Head Tracking Driven Virtual Computer Mouse / Y. Fu, T. Huang //
IEEE Workshop on Applications of Comp. Vision. – Washington, DC: IEEE Computer
Society, 2007. – P. 30.
70.
Gangaputra S. A Unified Stochastic Model for Detecting and Tracking Faces / S.
Gangaputra, D. Geman // Comp. and Robot Vision, Canadian Conf. – Los Alamitos,
CA: IEEE Computer Society, 2005. – P. 306–313.
190
71.
Gorodnichy D. Nouse 'Use Your Nose as Mouse' – A New Technology for Hands Free
Games and Interfaces / D. Gorodnichy, S. Malik, G. Roth // Image and Vision
Computing. – 2004. – Vol. 22, No. 12. – P. 931–942.
72.
Gruendig M. 3D Head Pose Estimation with Symmetry based Illumination Model in
Low Resolution Video / M. Gruendig, O. Hellwitch. // Pattern Recognition. – B:
Springer Berlin/Heidelberg, 2004. – Vol. 3175/2004 – P. 45–53.
73.
Hager G. Efficient Region Tracking With Parametric Models of Geometry and
Illumination / G. Hager, P. Belhumeur // IEEE Tran. Pattern Analysis and Machine
Intelligence. – Washington, DC: IEEE Computer Society, 1998. – Vol. 20. – P. 1025–
1039.
74.
Hannuksela J. A Real-Time Facial Feature Based Head Tracker. / J. Hannuksela, J.
Heikkila, M. Pietikainen // Proc. Advanced Concepts for Intelligent Vision Systems –
Brussels, 2004. – P. 267–272.
75.
Head Pose Estimation on Low Resolution Images / N. Gourier, J. Maisonnasse, D.
Hall, J. Crowley // Multimodal Technol. for Percept. Humans. – B: Springer, 2007. –
Vol. 4122/2007. – P. 270–280.
76.
Huang C. High-Performance Rotation Invariant Multiview Face Detection / C. Huang,
H. Ai, Y. Li, S. Lao. // IEEE Trans. on Patt. Anal. and Mach. Intel. – 2007. – Vol.
29, No. 4. – P. 671–686.
77.
Huang Y. Facial Tracking with Head Pose Estimation in Stereo Vision / Y. Huang, T.
Huang // Proc. Intnl. Conf. Image Processing, 2002. – Vol. 3. – P. 833–836.
78.
Isard M. Condensation. Conditional Density Propagation for Visual Tracking / M.
Isard, A. Blake // Intnl. Journal on Comp. Vision – Netherlands: Kluwer Academic
Publishers, 1998. – Vol. 29(1). – P. 5–28.
79.
Ishii S. Real-Time Head Pose Estimation with Stereo Vision / S. Ishii, D. Arita,
R. Taniguchi. // Proc. 9th Korea-Japan Joint Workshop on Frontiers of Comp. Vision. –
2003. – P. 79–83.
80.
Junghans M. Lucas-Kanade Algorithm with GNC / M. Junghans, A. Leich, H. Jentschel
// Proc. 7th Intl. Conf. on Signal Processing – Beijing, 2004. – Vol. 2. – P. 1088–1091.
81.
Kanade T. Comprehensive Database for Facial Expression Analysis / T. Kanade, J.
Cohn, Y. Tian // Proc. of the 4th IEEE Intnl. Conf. on Automatic Face and Gesture
Recogn. (FG'00) – 2000. – P. 46– 53.
82.
Krivtsov O. An Analysis of Performance and Accuracy of a Video Head Tracking
System / O. Krivtsov, A. Korikov // Proc. 15th Intnl. Conf. «Modern Technique and
Technologies» – Tomsk: TPU Press, 2009. – P. 113–115.
191
83.
Krivtsov О. Applying Inverse-Compositional Image Registration Algorithm to Head
Tracking with 6 DOF // Proc. 16th Intnl. Conf. «Modern Technique and Technologies»
– Tomsk: TPU Press, 2010. – P. 91–93.
84.
Kruchten P. Architectural Blueprints. The 4+1 View Model of Software Architecture //
IEEE Software – No. 12(6) – 1995. – P.42–50.
85.
Krüeger V. Efficient Head Pose Estimation with Gabor Wavelet Networks / V.
Krüeger, S. Bruns, G. Sommer // Proc. BMVC – 2000. – P. 12–14.
86.
Krüeger V. Gabor Wavelet Networks for Efficient Head Pose Estimation / V. Krüeger,
G. Sommer. // Image and Vision Computing – Amsterdam: Elsevier, 2002. – Vol. 20,
No. 9. – P. 665–672.
87.
Lepetit V. Monocular Model-Based 3D Tracking of Rigid Objects: A Survey / V.
Lepetit, P. Fua. // Foundations and Trends in Comp. Graphics and Vision. – 2005. –
Vol. 1, No. 1. – P. 1–89.
88.
Li Y. A Relaxation Algorithm for Real-Time Multiple View 3D-Tracking / Y. Li, A.
Hilton, J. Illingworth // Image and Vision Computing – Amsterdam: Elsevier, 2002. –
Vol. 20. – P. 200–202.
89.
Lucas B. An Iterative Image Registration Technique with an Application to Stereo
Vision / B.D. Lucas, T. Kanade // Proc. 7th Intnl. Joint Conf. on Artificial Intelligence.
– Vancouver, British Columbia, 1981. – P. 674–679.
90.
Malciu M. A Robust Model-Based Approach for 3D Head Tracking in Video
Sequences / M. Malciu, F. Preteux // Proc. 4th IEEE Intnl. Conf. on Automatic Face
and Gesture Recognition – Washington, DC: IEEE Computer Society, 2000. – P. 169.
91.
Malis E. Survey of vision-based robot control // European Naval Ship Design, Captain
Comp. IV Forum, ENSIETA – Brest, France, 2002. – 16 p.
92.
Matthews I. 2D vs. 3D Deformable Face Models: Representational Power,
Construction and Real-Time Fitting / I. Matthew, J. Xiao, S. Baker // Intnl. Journal of
Comp. Vision – Springer, 2007. – Vol. 75, No. 1. – P. 93–113.
93.
Matthews I. Active Appearance Models Revisited / I. Matthews, S. Baker // Intnl.
Journal of Computer Vision – Hingham, MA: Kluwer Academic Publishers. – 2004. –
Vol. 60, No. 2. – P. 135–164.
94.
Model-Based OpenMP Implementation of a 3D Facial Pose Tracking System / S. Saha,
C. Shen, C. Hsu, G. Aggarwal, A. Veeraraghavan, A. Sussman, S.S. Bhattacharyya //
Intl. Conf. Parallel Processing Workshops – Los Alamitos, CA: IEEE Computer
Society, 2006. – P. 66–73.
192
95.
Morency L. From Conversational Tooltips to Grounded Discourse: Head Pose Tracking
in Interactive Dialog Systems / L. Morency, T. Darrel // Proc. 6th Intnl. Conf. on
Multimodal Interfaces. – N.Y.: ACM, 2004. – P. 32–37.
96.
Morency L. Pose Estimation Using 3D View-Based Eigenspaces / L. Morency, P.
Sunberg, T. Darrel // IEEE Intnl. Workshop on Analysis and Modeling of Faces and
Gestures – Cambridge, MA, 2003. – P. 45–52.
97.
Morency L. Stereo Based Head Pose Tracking Using Interactive Closest Point and
Normal Flow Constraint // AI Tech. Report 2003-006, 2003. – 60 p.
98.
Murray R. A Mathematical Introduction to Robotic Manipulation / R. Murray, Z. Li, S.
Sastri – CRC Press, 1994. – 488 p.
99.
Nguen M. Local Minima Free Parameterized Appearance Models / M. Nguen, F. De La
Torre // IEEE Conf. on Comp. Vision and Pattern Recogn. – Los Alamitos, CA: IEEE
Computer Society, 2008. – P. 1–8.
100. Outlier Rejection in Deformable Model Tracking / S. Goldenstein, C. Vogler, J. Stolff,
V. Pavlovic, D. Metaxas // Comp. Vision and Patt. Recogn. Workshop – Los Alamitos,
CA: IEEE Computer Society, 2004. – Vol. 1. – P. 19.
101. Parke F. Computer Generated Animation of Faces // Proc. of ACM Annual Conf. –
Boston, MA, 1972. – Vol. 1. – P. 451–457.
102. Paterson J. 3D head tracking using non-linear optimization. / J. Paterson, A. Fitzgibbon.
// Proc. of BMVC. – 2003. – Vol. 2. – P. 609–618.
103. Pose-Invariant Facial Expression Recognition Using Variable Intensity Templates / S.
Kumano, K. Otsuka, J. Yamato, E. Maeda, Y. Sato // Proc. Asian Conf. on Comp.
Vision. Part I, LNCS 4843. – 2007. – P. 424–434.
104. Ramnath K. On the Multi-View Fitting and Construction of Dense Deformable Face
Models // Master's thesis, tech. report CMU-RI-TR-07-10, Robotics Institute, Carnegie
Mellon University, 2007. – 79 p.
105. Rav-Acha A. Lucas-Kanade without Iterative Warping / A. Rav-Acha, S. Peleg // Proc.
IEEE Intl. Conf. on Image Processing. – Atlanta, GA, 2006. – P. 1097–1100.
106. Real-Time Bayesian 3-D Pose Tracking / Q. Wang, W. Zhang, X. Tang, H. Shum //
IEEE Trans. on Circuits and Systems for Video Technology – N.Y.: IEEE, 2006. –
Vol. 16, No. 12 – P. 1533–1541.
107. Real-Time Combined 2D+3D Active Appearance Models. // J. Xiao, S. Baker, I.
Matthews, T. Kanade // Proc. IEEE Conf. on Comp. Vision and Pattern Recognition. –
2004. – Vol. 2. – P. 535–542.
193
108. Real-time Non-rigid Driver Head Tracking For Driver Mental State Estimation / S.
Baker, I. Matthews, J. Xiao, R. Gross, T. Kanade // Tech. Report CMU-RI-TR-04.
Pittsburgh, Robotics Institute, 2004. – 12 p.
109. Robust Full-Motion Recovery of Head by Dynamic Templates and Reregistration
Techniques / J. Xiao, T. Moriyama, T. Kanade, J. Cohn // Intnl. Journal of Imaging
Systems and Technology – N.Y.: Wiley. 2003. – Vol. 13. – P. 85–94.
110. Robust Head Pose Estimation Using LGBP / B. Ma, W. Zhang, S. Shan, X. Chen, W.
Gao // 18th Intnl. Conf. on Pattern Recognition – Hong Kong, 2006. – Vol. 2. – P. 512–
515.
111. Robust Head Tracking Based on a Multi State Particle Filter / Y. Li, H. Ai, C. Huang,
S. Lao // Proc. 7th Intnl. Conf. on Automatic Face and Gesture Recognition –
Southampton: IEEE Computer Society. – 2006. – P. 335–340.
112. Robust Head Tracking with Particles Based on Multiple Cues Fusion / Y. Li, H. Ai, C.
Huang, S. Lao // Proc. of CVHCI06. – B: Springer-Verlag, 2006. – P. 29–39.
113. Robust Multi-view Face Tracking / K. An, D. Yoo, S. Jung, M. Chung // IEEE/RSJ
Intnl. Conf. on Intelligent Robots and Systems. – Alberta, Canada, 2005. – P. 1905–
1910.
114. Rousseeuw P. Robust Regression and Outlier Detection / P.J. Rousseeuw and A.M.
Leroy – New York: John Wiley & Sons, 1987. – 352 p.
115. Rydfalk M. CANDIDE, a Parameterized Face // Report No. LiTH-ISY-I-866, Dept. of
Electrical Engineering, Linkoping University, Sweden, 1987.
116. Sepp W. Real-Time Texture-Based 3D Tracking / W. Sepp, G. Hirzinger // Patt.
Recogn. – B: Springer, 2003. – Vol. 2781/2003. – P. 330–337.
117. Simultaneous Registration and Modeling of Deformable Shapes / J. Xiao,
B. Georgescu, X. Zhou, D. Comaniciu, T. Kanade // In Proc. IEEE Comp. Society
Conf. on Comp. Vision and Pattern Recognition – N.Y., 2006. – Vol. 2. – P. 2429–
2436.
118. Ström J. Model-Based Real-Time Head Tracking // EURASIP Journal on Applied
Signal Processing – N.Y.: Hindawi Publishing Corp, 2002. – Vol. 2002, No. 1. – P.
1039–1052.
119. Szeliski R. Image Alignment and Stitching: A tutorial // Foundations and Trends in
Comp. Graphics and Comp. Vision – Hanover, MA: Now Publishers Inc, 2006. – Vol.
2, No. 1. – P. 1–104.
194
120. Tagliassachi M. A Genetic Algorithm for Optical Flow Estimation // Image and Vision
Computing – Newton, MA: Butterworth-Heinemann, 2007. – Vol. 25, No. 7. – P. 141–
147.
121. Vaccetti L. Fusing Online and Offline Information for Stable 3D Tracking in Real Time
// Proc. IEEE Comp. Society Conf. on Comp. Vision and Patt. Recogn. – 2003. – Vol.
2. – P. 241.
122. Vaccetti L. Stable Real-Time 3D Tracking using Online and Offline Information / L.
Vaccetti, V. Lepetit, P. Fua // IEEE Trans. on Patt. Anal. and Mach. Intel. – 2004. –
Vol. 26, No. 10 – P. 1385–1391.
123. Vector Boosting for Rotation Invariant Multi-View Face Detection / C. Huang, H. Ai,
Y. Li, S. Lao. // IEEE Intnl. Conf. on Comp. Vision. – 2005. – Vol. 1. – P. 446–453.
124. Viola P. Robust Real-Time Face Detection / P. Viola, M. J. Jones // Intnl. Journal of
Comp. Vision – Kluwer Academic Publishers: Netherlands, 2004. – Vol. 57, No. 2. – P.
137–154.
125. Visual Tracking Using Learned Linear Subspaces / J. Ho, K. Lee, M. Yang, D.
Kriegman // IEEE Comp. Society Conf. on Comp. Vision and Patt. Recogn. – Los
Alamitos: IEEE Comp. Society, 2004. – Vol. 1. – P. 782–789.
126. Voit M. Multi-view Head Pose Estimation using Neural Networks / M. Voit, K. Nickel,
R. Steifelhagen // IEEE Canadian Conference Comp. and Robot Vision. – Los
Alamitos, CA: Computer Society, 2005. – P. 347–352.
127. Wang P. Multi-View Face Detection under Complex Scene based on Combined SVMs
/ P. Wang, Q. Ji // 17th Intnl. Conf. on Pattern Recogn. – Washington, DC: IEEE
Computer Society, 2004. – Vol. 4. – P. 179–182.
128. Wei Y. Head Pose Estimation Using Gabor Eigenspace Modeling / Y. Wei, L. Fradet,
T. Tan // Proc. of Intnl. Conf. on Image Processing. – 2002. – Vol. 1. – P. 281–284.
129. Xiao J. Reconstruction, Registration and Modeling of Deformable Model Shapes //
Doctoral dissertation, tech. report CMU-RI-TR-05-22, Pittsburgh, PA : Carnegie
Mellon University, 2005. – 137 p.
130. Xiong Y. Head Tracking with 3D Texture Map Model in Planning Meeting Analysis /
Y. Xiong, F. Quek. // Proc. Intnl. Workshop on Multimodal Multiparty Meeting
Processing – Trento, Italy, 2005. – P. 1–8.
131. Yao P. Face Tracking and Pose Estimation Using Affine Motion Parameters / P. Yao,
G. Evans, A. Calway // Proc. 12th Scandinavian Conf. on Image Analysis – Bergen,
Norway, 2001. – P. 531–536.
195
132. Yilmaz A. Object Tracking: A Survey / A. Yilmaz, O. Javed, M. Shah // ACM
Computing Surveys – N.Y.: ACM, 2006. – Vol. 38, No. 4. – Article No. 13.
133. Zenik-Manor L. Optical Flow Field. Caltech, Oct. 2004. – 47 p.
134. Zepeda J. A Linear Estimation Method for 3D Pose and Facial Animation Tracking / D.
Zepeda, F. Davoine, M. Charbit // IEEE Conf. on Comp. Vision and Pattern
Recognition – Minneapolis, MN, 2007. – P. 1–7.
135. Zhang Q. Wavelet networks / Q. Zhang, A. Benveniste // IEEE Trans. Neural Networks
– 1992. – Vol. 3 – P. 889–898.
К разделу 1.2
1. Верхаген К., Дёйн Р., Грун Ф. Распознавание образов: состояние и перспективы. — М.:
Радио и Связь, 1985. 104 с.
2. Ту Дж., Гонсалес Р. Принципы распознавания образов. — М.: Мир, 1978. 411 c.
3. Daugman J. G. Phenotypic versus genotypic approaches to face recognition// NATO ASI on
Face Recognition, Stirling, UK. 1997. P.269—283.
4. Samal A. and Iyengar P. A. Automatic recognition and analysys of human faces and facial
expressions: a survey// Pattern Recognition. 1992. Vol. 25. № 1. P. 65—77.
5. Средства контроля доступа// Иностранная печать о техническом оснащении полиции
капиталистических государств. М.: ВИНИТИ. 1992. № 4. С. 12-27.
6. Abay E., Akarum L. and Alpaydyn E. A comparative analysis of different feature sets for
face recognition// Proceedings of Int. Symp. On Computer and Information Sciences..
Antalya. 1997. P. 220-227.
7. Brunelli R. and Poggio T. Face recognition: features versus templates// IEEE Trans. on
Pattern Analysis and Machine Intel. 1993. Vol. 15. № 10. P. 1042-1052.
8. Cox I. J., Ghosn J. and Yianilos P. N. Feature-based face recognition using mixture distance//
NEC Research Institute, Technical Report № 95-09, 1995. P. 158.
9. Kalocsai P., von der Malsburg C. and Horn J. Face recognition by statistical analysis of
feature detectors// Image and Vision Computing. 2000. Vol. 18. P. 273-278.
10. Kanade T. Picture processing by computer complex and recognition of human faces// PhD
thesis, Kyoto University, 1973. P. 178.
196
11. Kuo C., Huang R. and Ling T. Synthesizing lateral face from frontal facial image using
anthropometric estimation// Proceedings of Int. Conf. on Image Proc. 1997. Vol. 1. P. 133136.
12. Lam K. M., Yan H. An analytic-to-holistic approach for face recognition based on a single
frontal view// IEEE Trans. on Pattern Analysis and Machine Intel.1998. Vol. 20. № .7. P.
673-686.
13. Lawrence S., Giles C. L., Tsoi A. C. and Back A. D. Face recognition: a convolutional neural
network approach// IEEE Trans. on Neural Networks. Special Issue on Neural Networks and
Pattern Recognition. 1997. P. 97-113.
14. Yin L. and Basu A. MPEG4 Face Modeling Using Fiducial Points// Proceedings of Int. Conf.
on Image Proc. 1997. P. 109-112.
15. Горелик А. Л., Скрипкин В. А. Методы распознавания. — М.: Высшая школа, 1984.
208 с.
16. Кухарев Г. А. Биометрические системы: Методы и средства идентификации личности
человека. — СПб.: Политехника, 2001. 240 с.
17. Golomb L. A., Lawrence D. T. and Sejnowski T. J. SexNet: A neural network identifies sex
from human faces// Advances in Neural Information Processing Systems, Morgan Kaufmann
Publishers. San Mateo. USA. 1991. P. 77-83.
18. Romdhani S. Face recognition using principal components analysis// MSc thesis. University
of Glasgow. 1997. P. 183.
19. Turk M. and Pentland A. Eigenfaces for recognition// Journal of Cognitive Neuroscience.
1991. № 3. P. 71-86.
20. Moghaddam B., Nastar C. and Pentland A. A Baesian similarity measure for direct image
matching// Pattern recognition and Signal Analysis. 1996. P. 350-358.
21. Nastar С. and Moghaddam B. Generalized Matching for recognition and retrieval in an
image database// Proceedings of Int. Conf. on Communicating by Image and Multimedia.
France. 1996. P. 366-374.
22. Дуда Р., Харт П. Распознавание образов и анализ сцен. — М.: Мир, 1976. 511 c.
23. Eickeler S., Müller S. and Rigoll G. Improved Face Recognition Using Pseudo-2D Hidden
Markov Models// Proceedings of Workshop on Advances in Facial Image Analysis and
Recognition Technology in conjunction with 5th European Conference on Computer Vision.
— Germany. 1998. P. 125-134.
24. Saco H., Whitehouse M., Smith A. and Sutherland A. Real-time facial feature tracking based
on matching techniques and its application// Proceedings of IAPR. 1994. Vol. 2. P. 320-324.
197
25. Takas B. and Wechsler H. Locating features using SOFM// Proceedings of IAPR. 1994. Vol.
2. P. 55-60.
26. Feraud R., Bernier O. J., Viallet J-E., Collobert M A fast and accurate face detector based on
neural networks// IEEE Trans. on Pattern Analysis and Machine Intel. 2001. Vol. 23. № .1.
P.42-52.
27. Krüger N. An algorithm for the learning of weights in discrimination functions using a priori
constrains// IEEE Trans. on Pattern Analysis and Machine Intel. 1997. Vol. 19. № .7. P.764768.
28. Lades M., Vorbruggen J., Buhmann J., Lange J., Masburg C. and Wurtz R. Distortion invariant
object recognition in the dynamic link architecture// IEEE Trans. on Computers. — 1993. Vol. 42.
P. 300-311.
29. Valentin D. and Abdi H. Can linear autoassociator recognize faces from new orientations?//
Journal Opt. Soc. Am. A.. 1996. Vol. 13. P. 522-530.
30. Wiskott L. Phantom faces for analysis// Pattern Recognition. 1997. Vol. 30. № .6. P. 837846.
31. Burton A. M., Bruce V., Dench N. What. s the difference between men and women? Evidence
from facial measurements// Perception. 1993. № .22. P. 153-176.
32. DeMers D. and Cottrell G. W. Non-linear dimensionality reduction// Advances in Neural
Information Processing Systems, Morgan Kaufmann Publishers. San Mateo. USA. 1993.
33. Gutta S. and Wechsler H. Face recognition using hybrid classifiers// Pattern Recognition,
1997. Vol. 30. № 4. P. 539-553.
34. Intrator N.,
Reisfeld D.
and
Yeshurum
Y. Face
recognition
using
hybrid
supervised/unsupervised neural network // Proceedings of IAPR. 1994. Vol. 2. P. 50-54.
35. Kohonen T. Self-organization and associative memory// Springer-Verlag. Berlin. 1988. P.
364.
36. Valentin D., Abdi H., O. Toole A. J. and Cottrell G. W. Connectionist models of face
processing: a survey// Pattern Recognition. 1994. Vol. 27. P. 1209-1230.
37. Kruizinga P. and Petkov N. Optical flow applied to person identification// Proceedings of
Conf. on Massively Parallel Processing Applications and Development. Netherlands. 1994.
P. 871-878.
38. Buhmann J., Lades M. and Malsburg C. Size and distirtion invariant object recognition by
hierarchial graph matching// Proceedings of Int. Joint Conf. on Neural Networks. 1990. P.
411-416.
39. Chellapa R., Wilson C. L., Sirohey S. and Barnes C. S., Human and machine recognition of faces:
a survey// Proceedings of IEEE. — 1995. Vol. 83. № 5. P. 705-739.
198
40. Duc B., Fischer S., Bigün J. Face authentication with Gabor information on deformable
graphs// IEEE Trans. on Pattern Analysis and Machine Intel. 1999. Vol. 8. № 4. P. 504-516
41. Kotropoulos C., Tefas A., Pitas I. Frontal face authentication using morphological elastic
graph matching// IEEE Trans. on Image Processing. 2000. Vol. 9. № 4. P. 555-560.
42. Wiskott L., Fellous J. M., Krüger N., von der Malsburg C. Face recognition by elastic bunch
graph matching// IEEE Trans. on Pattern Analysis and Machine Intel. 1997. Vol. 19. № 7. P.
775-779.
43. Wiskott L. Phantom faces for analysis// Proceedings of Int. Conf. on Computer Analysis of
Images and Patterns.. Germany. 1997. Vol. 1256. P. 480-487.
44. Lee T. S. Image representation using 2D Gabor wavelets// IEEE Trans. on Pattern Analysis
and Machine Intel. 1996. Vol. 18. № 10. P. 959-971.
45. Gabor D. Theory of communication// Journal of Institute of Electric Engineers (London).
1946. Vol. 93. № 3. P. 429-457.
46. Daugmann J. G. High confidence visual recognition of persons by a test of statistical
independence// IEEE Trans. on Pattern Analysis and Machine Intel. 1993. Vol. 15. № 11. P.
1148-1161.
47. Quan Sh. and Chen D. Discrete Gabor transform// IEEE Trans. on Signal Processing. 1993.
Vol. 41. № 7. P. 2429-2438.
48. Smeraldi F., Carmona O. and Bigun J. Saccadic search with Gabor features applied to eye
detection and real-time head tracking// Image and Vision Computing. 2000. № 18. P. 323329.
49. Jain A. K., Ratha N. K. and Lakshmanan S. Object detection using Gabor filters// Pattern
recognition. 1997. Vol.30. № 2. P. 295-309.
50. Описание и распознавание объектов в системах искусственного интеллекта. // Под ред.
В. С. Гурфинкель, В. С. Файн. — М.: Наука,1980.
51. Юрков Е. Ф., Нагорнов В. С. Описание и
распознавание объектов
в системах
искусственного интеллекта. — М.: Наука, 1980.
52. Васильев В. И. Распознающие системы: Справочник. — Киев: Наукова Думка,
1983.
К разделу 2.1
33. Таненбаум Э., Ван Стен М., Распределенные системы. Принципы и парадигмы. Спб.:
Питер, 2003. – 877 с.
199
34. Джонс Э., Оланд Дж. Программирование в сетях Microsoft Windows. Мастер-класс.
Спб.: Питер; М.: Издательско-торговый дом «Русская редакция», 2002. – 608 с.
35. Ладыженский Д., Технология "клиент-сервер" и мониторы транзакций, // Open Systems
Magazine №3-94.
36. Birrel A., Nelson B. Implementing Remote Procedure Calls. ACM Trans. // Comp. Syst., vol.
2б № 1, pp. 39-59.
37. Netman Publishing. Learning Microsoft Transaction Server Development Using C++ 6.0.
Natl Book Network. 1999. 573 pp.
38. Цимбал А.А., Аншина М. Л., Технологии создания распределенных систем. Для
профессионалов. Спб.: Питер, 2003 – 576 с.
39. Электронный журнал Soft&Script [Электронный ресурс]: Удаленный вызов процедур
(RPC) и вызов удаленных методов (RMI). Тульчинский А. – Режим доступа:
http://nrd.pnpi.spb.ru/UseSoft/Journals/Soft&Script/Soft-&Script57/comprice-java.html.
40. Пуха Ю. CORBA/IIOP и Java RMI. Основные возможности в сравнении. // Журнал
“Системы управления базами данных” №4-97, стр. 24-36.
41. Sun Microsystems [Электронный ресурс]: The Java Tutorial. RMI. 2002. – Режим
доступа: http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/rmi-/TOC.html.
42. Рофэйл Э., Шохауд Я., COM и COM+,. Полное руководство. К.: ВЕК+, К.: НТИ, М.:
Энтроп, 2000 – 560 с.
43. Роджерсон Д., Основы СОМ. М.: Рус.Ред., 1997.-376 с.
44. Shepherd G., King B. Inside ATL. Microsoft Press, 1999. – 728 p.
45. Internet & Software Company [Электронный ресурс]: Сравнительный анализ технологий
CORBA
и
COM.
Цимбал
А.
–
Режим
доступа:
http://www.interface.ru/
fset.asp?Url=/borland/corbacom.htm.
46. Соловьев Б.А. Служба поддержки распределенных систем «Базис». // Тезисы докладов
одиннадцатой всероссийской научной конференции студентов-физиков, Екатеринбург,
2005 г.
47. Булсенко Н.П., Калашников К.В., Коваленко И.Н. Лекции по теории сложных систем.
М.: Изд-во «Советское радио», 1973. – 440 с.
48. Соловьев Б.А. Проектирование распределенных программно-технических систем. //
Тезисы всероссийской научно-технической конференции студентов и молодых ученых
“Научная сессия ТУСУР-2005” ,ТУСУР, г. Томск.
49. Allen R., Lowe-Norris A. G. Active Directory. O’Reily. 2003. pp. 686.
50. OMG. CORBA Version 2.4.2. 2001.
200
К разделу 2.2
1. Jefferey K. The future of cloud computing / Jefferey K., Neidecker-Lutz B. // Cloud
Computing Expert Group Report 2009 [Электронный документ]. – Режим доступа:
http://cordis.europa.eu/fp7/ict/ssai/docs/cloud-report-final.pdf, свободный (дата обращения:
15.04.2010)
2. Hewitt С., ORGs for Scalable, Robust, Privacy-Friendly Client Cloud Computing
[Электронный ресурс]. – Режим доступа:
//http://www.computer.org/portal/web/csdl/doi/10.1109/MIC.2008.107, для
зарегистрированных пользователей (дата обращения: 15.04.2010)
3. Сервис-ориентированная архитектура. // Википедия — свободная энциклопедия
[Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Сервисориентированная_архитектура, свободный
4. M. Harchol-Balter. Exploiting Process Lifetime Distributions for Dynamic Load Balancing /
M. Harchol-Balter, A.B. Downey // ACM Trans. Computer Systems, vol. 15, no. 3, 1997 – P.
253-285
5. X.-D. Zhang. Improving Distributed Workload Performance by Sharing Both CPU and
Memory Resources / X.-D. Zhang, L. Xiao, Y.-X. Qu // Proc. 20th Int’l Conf. Distributed
Computing Systems (ICDCS ’00), 2000 – P. 233-241
6. X. Qin. Communication-Aware Load Balancing for Parallel Applications on Clusters / X.
Qin, H. Jiang, A.Manzanares, X.Ruan, S.Yin // IEEE Transactions on computers, vol. 59, no. 1,
2010 – P. 42-52
Кразделу 4.4
51. Microsoft. The Component Object Model Specification Version 0.9. 1995.
52. Рихтер Дж., Кларк Дж. Д. Программирование серверных приложений для
Microsoft Windows 2000. Мастер-класс. СПб.: Питер; М.: Издательско-торговый дом
«Русская редакция». 2001. – 592 стр.
53. Вильямс А. Системное программирование в Windows 2000 для профессионалов.
СПб.: Питер, 2001. – 624 с.
54. Рихтер Дж. Создание эффективных Win32-приложений с учетом специфики 64разрядной версии Windows. СПб.: Питер; М.: Издательско-торговый дом «Русская
редакция». 2001. – 752 с.
201
55. Якубайтис Э. А. Информационно-вычеслительные сети. М.: Финансы и
статистика, 1984. – 232 с.
56. Чистяков В. Ю. COM – потоки и контексты. // Журнал «Технология Клиентсервер», №2000-4.
57. Intel Corporation. Методика разработки меогопоточных приложений: принципы и
практическая реализация. // RSDN Magazine №3-2004.
58. Ширшов А. Эффективная многопоточность. Организация пула потоков. // RSDN
Magazine №2003-2.
59. Carter G. LDAP System Administration. O’Reily. 2003. – 308 p.
60. Timmerman M., Van Beneden B., Uhres L. RTOS Evalutions. // Real-time magazine
№98-3. pp. 3-10.
61. Холодилов С. Счетчики производительности. Часть 1 – Создание. // RSDN
Magazine №2003-4.
62. Холодилов С. Счетчики производительности. Часть 2 – Чтение. // RSDN
Magazine №2003-4.
63. Козлов В. Создание Microsoft installation package. // RSDN Magazine №2004-5.
64. Алифанов А. Технология Windows Installer. Часть 1 – Обзор возможностей. //
RSDN Magazine №2003-3.
65. Алифанов А. Технология Windows Installer. Часть 2 – процесс установки. // RSDN
Magazine №2004-1.
66. Шнайдер Б. Секреты и ложь. Безопасность данных в цифровом мире. СПб.:
Питер; М.: Издательско-торговый дом «Русская редакция». 2003. – 368 с.
67. Журнал «ИнфоБизнес» [Электронный ресурс]: По маленькому. Сакун Ю. 2002. –
Режим доступа: http://www.ibusiness.ru/project/CRM/21211/.
68. Чичтяков В. Защита в DCOM/COM+. // RSDM Magazine №0. 2000.
69. Ху Т. Целочисленное программирование и потоки в сетях. М.: Изд-во «Мир».
1974. – 520 с.
70.
Соловьев
видеонаблюдения.
//
Б.А.
Моделирование
Доклады
Томского
работы
распределенной
государственного
университета
системы
систем
управления и радиоэлектроники. Автоматизированные системы обработки информации,
управления и проектирования, 2005 г.
71. Baker A., Lozano J. The Windows 2000 device driver book, a guide for programmers.
Prentice Hall PTR. 2000. pp. 480.
72. Oney W. Programming the Microsoft Windows Driver Model. Microsoft Press. 1999.
– 745 p.
202
73. Partridge C. A proposed flow specification. // RFC 1363, 1992.
74. Вышняков В.А. Организация взаимодействия процессов. Минск: Высшая школа.
1988. – 473 с.
75. Петерсон Дж. Теория сетей Петри и моделирование систем. М.: Мир, 1984. – 264
с.
76. Соловьев Б.А. Подсистема контроля нагрузки в распределенной системе. //
Тезисы докладов на XLIII международной научной студенческой конференции “Студент и
научно-технический прогресс”, НГУ, г. Новосибирск. 2005 г.
77. Фаулер М. Архитектура корпоративных программных приложений. М.:
Издательский дом «Вильямс», 2004 – 544 с.
78. Мешков А. В., Тихомиров Ю. В. Visual C++ и MFC. Спб.: БХВ-Петербург, 2003.
– 1040 с.
79. Оутей М., Конте П. Эффективная работа: SQL Server 2000. СПб.: Питер-пресс.
2002. – 992 с.
80. Сибилев В.Д. Модели и проектирование баз данных. / Методическое пособие.
каф. АСУ, ТУСУР, г. Томск, 1999. – 136 с.
81. Спирли Э. Корпоративные хранилища данных. Планирование, разработка,
реализация. Том 1. – М: Издательский дом «Вильямс», 2001. – 400с.
82. Burl M. C., Weber M., Leung T. K. Perona P. From segmentation to interpretation and
black: Mathematical methods in Computer Vision. // Recognition of visual object classes. 1996.
pp. 54-87.
83. Yang M. H., Kriegman D., Ahuaja N. Detecting face in images: A survey. // IEEE T.
PAMI. 2001. – Vol. 24(1). pp. 34-58.
84. Прэтт У. Цифровая обработка изображений. Т. 1-2. М.: Изд-во Мир, 1982.
85. Пытьев Ю. П. Морфологический анализ изображений. // Докл. АН СССР 1983. Т.
269, № 5. с. 1061-1064.
86. Пытьев Ю. П., Куличков А. И. ЭВМ анализирует форму изображений. М.:
Знание, сер. Математика, Кибернетика. 1988. -47с.
87. Ковалев Ф.В. Золотое сечение в живописи. К.: Высшая школа, 1989.
88. Elizarov A. I., Kalaida V. T., Esipova E. A., Klimkin V. M. Introducing numerical
criteria for watermark comparison degrees. // Rev. PT, March 17, 2002.
89. Елизаров А. И. Выделение существенных переменных в системе идентификации
полутоновых изображений. // Студент и научно-техническийпрогресс. Тез. Докл XL
Международной научно конференции. Новосибирск. 2002.
203
90. Горбанев М. А. Калайда В. Т. Елизаров А. И. Применение морфологического
анализа для идентификации полутоновых изображений. // Сборник научных трудов
ТУСУР, Томск. 2001.
91. Direct Show [Электронный ресурс]: MSDN Library, Jan 2002. 3 электрон. опт. диск
(CD-ROM).
92. Яншин В. В., Калинин Г. А. Обработка изображений на языке СИ для IBM PC:
Алгоритмы и программы. М.: Мир, 1994. – 240 с.
93. Корн Г., Корн Д. Справочник по математике для научных работников и
инженеров. М.: Издательство «Наука», 1968 г., - 720 стр.
204
Download