79985

РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА ПОДДЕРЖКИ ИНТЕРАКТИВНЫХ АРТ-ИНСТАЛЛЯЦИЙ

Дипломная

Информатика, кибернетика и программирование

В результате проделанной работы, мной была получена версия программного комплекса для поддержки арт-инсталляций с применением сенсора Kinect. Была реализована возможность создания собственных элементов управления, адаптированных для бесконтактного использования.

Русский

2015-02-15

6.93 MB

5 чел.

МИНОБРНАУКИ РОССИИ
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ 
Факультет информатики
Кафедра теоретических основ информатики

УДК 681.03

ДОПУСТИТЬ К ЗАЩИТЕ В ГАК
Зав.кафедрой, доцент, к.т.н
____________ А.Л.Фукс 
«_____»__________2013 г.

БАКАЛАВРСКАЯ РАБОТА

РАЗРАБОТКА ПРОГРАММНОГО КОМПЛЕКСА ПОДДЕРЖКИ ИНТЕРАКТИВНЫХ АРТ-ИНСТАЛЛЯЦИЙ

по основной образовательной программе подготовки бакалавров
010400 – Информационные технологии 

Беденко Евгений Олегович

Руководитель ВКР,

зав.кафедрой, доцент, к.т.н

____________ А.Л.Фукс

«_____»___________ 2013 г.

Автор работы

студент группы № 1493
___________ Е.О.Беденко


Электронная версия бакалаврской работы
помещена в электронную библиотеку.

Администратор электронной  библиотеки факультета
___________ Е.Н.Якунина

Томск 2013


Реферат

Бакалаврская работа 33 с., 16 рис., 8 ист.

KINECT, WPF, БЕСКОНТАКТНОЕ ВЗАИМОДЕЙСТВИЕ, ИНТЕРАКТИВНОЕ ВЗАИМОДЕЙСТВИЕЕ, ПОЛЬЗОВАТЕЛЬСКИЙ ЭЛЕМЕНТ УПРАВЛЕНИЯ, АРТ-ИНСТАЛЛЯЦИЯ.

Объекты исследования: приложение для поддержки арт-инсталляции, бесконтактное человеко-машинное взаимодействие, возможности сенсора Kinect.

Цель работы: Изучение применимости сенсора Kinect для поддержки создания арт-инсталляций, создание версии программного комплекса на базе технологии WPF  для  поддержки интерактивных арт-инсталляций с использованием сенсора Kinect.

Методы исследования: теоретическое исследование и практическая реализация.

Результат работы: В результате проделанной работы, мной была получена версия программного комплекса для поддержки арт-инсталляций с применением сенсора Kinect. Была реализована возможность создания собственных элементов управления, адаптированных для бесконтактного использования.


Оглавление

[1]
Реферат

[2]
Оглавление

[3] Введение

[4]
1. Технические и программные средства поддержки арт-инсталляции

[5] 2. Арт-инсталляция

[6]
3. Пользовательские элементы управления

[7]
4.Руководство пользователя

[8]
5. Руководство программиста

[9]
Заключение

[10]
Литература


Введение

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

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

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

В настоящее время существует достаточно широкий набор инструментов для реализации таргетированного донесения информации до потребителей. Арт-инсталляция – это новый инструмент. Основная её идея заключается в вовлечении потребителя в создание некого информационного продукта, повышения интереса.

Для создания арт-инсталляций могут использоваться различные технологии. Наиболее современными и эффектными сейчас являются технологии дополненной реальности с бесконтактными человеко-машинными интерфейсами. Эти технологии требуют специального технического оборудования и программного обеспечения, которого, в силу новизны, на рынке нет.

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

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

Настоящая работа посвящена исследованию возможности использования сенсоров и реализации программного обеспечения, с применением возможности дополненной реальности и бесконтактного интерфейса, для создания арт-инсталляций.


1. Технические и программные средства поддержки арт-инсталляции

Начиная описание средств, мы должны чётко определить понятие арт-инсталляции.

Термин инсталляция произошел от английского глагола "to install" (устанавливать), что до некоторой степени описывает технические аспекты изготовления инсталляции: ее не "рисуют", не "пишут", а именно что устанавливают, составляют, формируют из отдельных разрозненных частей. Искусство инсталляции - пространственная композиция, созданная художником из различных элементов - бытовых предметов, промышленных изделий и материалов, природных объектов, текстовой или визуальной информации [1].

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

Если рассматривать арт-инсталляции абстрактно, то можно выделить три составляющие:

  1.  Пользователь, взаимодействующий с системой
  2.  Сенсор, являющийся источником ввода пользовательской информации
  3.  Программное обеспечение, реализующее интерфейс взаимодействия, бизнес логику системы

1.1. Обзор устройств для распознавания человека в пространстве

В настоящее время на рынке доступно несколько сенсоров для распознавания и отслеживания положения тела человека в пространстве. Наиболее широкоиспользуемыми являются следующие устройства:

  1.  Creative Interactive Gesture Camera (Intel)

Сенсор (рис. 1, предоставлен компанией Intel), выпускаемый для компании Intel. Имеет следующие возможности[2]:

  •  Распознавание жестов, положения рук, пальцев, уровень открытости ладони,
  •  отслеживание положения лица, определение контрольных точек (губы, нос, глаза), идентификация лица,
  •  отслеживание положение 2-х и 3-х мерных объектов,
  •  распознавание голоса.

Рисунок . Creative Interactive Gesture Camera

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

Средняя цена данного устройства составляет 120$.

  1.  The Leap.

The Leap – небольшое устройство, выполненное в форме прямоугольника (рис. 2, представлен компанией Leap Motion). Сенсор с очень высокой точностью может распознавать[3]:

  •  Положение рук, отдельных пальцев,
  •  жесты.

Рисунок . The Leap

The Leap работает в мнимом кубе со стороной 60 см.

На данный момент сенсор доступен для предзаказа по цене 80$.

  1.  Kinect.

Сенсор Kinect выпускается компанией Microsoft (рис. 3, представлен компанией Microsoft). Сенсор имеет следующие возможности[4]:

  •  Детальное распознавание положения человека в пространстве в режиме реального времени,
  •  распознавание мимики человека,
  •  распознавание голоса.

Рисунок . Kinect

Для работы сенсора требуется большое пространство. Вместе с сенсором поставляется SDK.

Средняя цена сенсора на рынке составляет 150$.

В зависимости от идеи арт-инсталляции к сенсору могут предъявляться различные требования. Так, для создания интерактивной информационной панели, необходимо точное распознавание положения рук, пальцев и мелких жестов. С такой задачей отлично справится сенсор The Leap. Если же требуется распознавать тело человека в полный рост, то можно использовать сенсор  Kinect. Для выполнения данной работы был использован сенсор Kinect. Выбор был обусловлен:

  •  Наибольшей универсальностью сенсора,
  •  высокой доступностью на рынке.

1.2. Подробное описание сенсора Kinect

Сенсор Kinect  (рис.4)– устройство, которое содержит массив микрофонов, RGB и инфракрасную камеру и акселерометр. Для пользователя Kinect представляет программный конвейер для обработки различной информации: аудио поток, карты глубины, RGB карты.

Рисунок . Устройство сенсора Kinect

1.2.1. Техническое устройство сенсора Kinect

Внутри сенсора Kinect можно найти следующие компоненты:

  1.  RGB камера (Color Sensor). Отвечает за захват цветных кадров с разрешением до 1280х960 пикселей,
  2.  инфракрасная камера и излучатель (IR Depth Sensor and IR Emitter). Излучатель проецирует в пространство сетку лучей. Инфракрасная камера улавливает отраженные от предметов лучи. Яркость отраженных лучей конвертируется в информацию о расстоянии от предмета до камеры,
  3.  массив микрофонов (Microphone Array), состоящий из 4 микрофонов. Благодаря этому возможны запись звука, определение местоположения и направления звуковых волн,
  4.  3-осевой акселерометр. Даёт возможность определить текущую ориентацию сенсора в пространстве.

1.2.2. Описание Kinect SDK

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

1.2.2.1. Потоки данных

С помощью Kinect SDK приложение может получить доступ к следующим потокам данных:

  •  Поток аудио данных (audio stream),
  •  цветные карты сцены (color stream),
  •  карты глубины сцены (depth stream).

В Kinect SDK имеется программный конвейер, который позволяет обрабатывать вышеперечисленные потоки и извлекать из них полезную информацию:

  •  Конвейер способен распознавать и отслеживать человеческое тело в пространстве (skeleton tracking). Для обеспечения этой функциональности используется карта глубины сцены.
  •  Распознавание мимики лица. Для получения этой информации сенсор должен быть сконфигурирован для работы в ближнем режиме (near mode).
  •  Распознавание речи и определение угла источника звуковых волн.

1.2.2.2. Распознавание людей

Используя инфракрасную камеру, Kinect может распознать до 6 человек, которые находятся в его поле зрения. Из них только два человека будут распознаны подробно, для них будет возможно получить трёхмерные координаты основных 20 точек тела (рис. 5), для остальных будут распознаны только точки, соответствующие серединам скелетов (Spine Point). Kinect способен отслеживать положение движущегося человека с частотой до 30 кадров в секунду. Частота зависит от выбранного разрешения камеры.

Рисунок . Распознавание людей

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

Пример кода для распознавания положения скелета  человека находится в Приложении А.

1.2.2.3. Режимы работы

Kinect может работать в двух режимах: стандартном (default) и ближнем (near). Эти режимы различаются расстоянием необходимым для работы. В стандартном режиме Kinect имеет рабочую дистанцию от 0.8 до 4 метров, для полного обзора дистанция должна быть в диапазоне 1.2-3.5 м. В ближнем режиме рабочая дистанция – 0.4-3.0 м.

Для некоторых задач необходимо использовать несколько сенсоров Kinect. Стоит отметить, что это может привести к потере точности распознавания и отслеживания положения тела человека в пространстве. Этот эффект связан с тем, что для распознавания объектов Kinect проецирует в пространство инфракрасную сетку, и при использовании двух и более сенсоров эти сетки могут интерферировать, тем самым внося искажения.

1.2.2.4. Особенности работы

Каждый момент Kinect возвращает приложению кадры (frames). В зависимости от типа кадра, они содержат различную информацию. Кадр скелета (SkeletonFrame) содержит информацию обо всех скелетах, которые сенсор смог определить. Каждый скелет может иметь одно из двух состояний «только позиция» (position only) и «захваченный» (tracked). Скелет со статусом «tracked» содержит детальную информацию о 20 основных точка скелета человека (рис. 6, представлен компанией Microsoft).

Рисунок . Скелет человека

Если скелет человека имеет статус «position only», то приложению доступна только информация о точке скелета «Spine».

У каждого точки скелета «joint» есть состояние:

  •  Tracked – точка хороша видна сенсору
  •  NotTracked – точка находится вне поля зрения сенсора, например, ноги человека, когда человек сидит.
  •  Inferred – точка находится вне поля зрения, но сенсор по косвенным признакам смог восстановить положение точки.

Когда пользователь частично выходит из поля зрения сенсора, Kinect предупреждает об этом приложение, выставляя в свойстве ClippedEdges флаги Bottom, Top, Left или Right из перечисления FrameEdges.

В точке скелета хранится информация об её ориентации в пространстве. На основании этой информации автоматически находится ориентация костей скелета, которые соединяются этими точками. Эти данные могут быть получены в двух формах:

  •  Иерархия поворотов.
  •  Абсолютная ориентация.

Информация может быть представлена сенсором, как в виде матрицы поворота, так и в виде кватернионов.

У сенсора есть собственная иерархия костей. В этой иерархии корнем является точка Hip Center. Полная модель иерархии представлена на рис. 7.

Рисунок . Иерархия костей

Каждая кость (bone) скелета представляется двумя точками (joint) – родитель и ребёнок. В иерархической модели положение каждой кости рассчитывается относительно предка согласно иерархии. Для получения абсолютных координат положения кости необходимо перемножить матрицы поворотов от корневого элемента до искомого.

Абсолютная ориентация предоставляет данные относительно трехмерной системы координат, где центром является Kinect.

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

  •  Сглаживание (Smoothing) – диапазон значений [0..1.0]. Значение 0 приводит к возвращению исходных данных. Увеличение значения приводит к более высокому сглаживанию положения скелета, но повышает задержку – время между изменением положения скелета и реакцией системы.
  •  Коррекция (Correction) – диапазон значений [0..1.0].
  •  Предсказание (Prediction) – диапазон значений [0..M]. Параметр, указывает кол-во кадров, которое используется для предсказания перемещения.
  •  Радиус дрожания (JitterRadius) – радиус в метрах, используется для подавления дребезжания.
  •  Радиус максимального отклонения (MaxDeviationRadius) – максимальный радиус в метрах. Значения, которые больше этого радиуса фильтруются.

Пример кода, задающий параметры фильтрации и сглаживания, находится в Приложении А.

Из описания возможностей сенсора Kinect становится понятно, что данный сенсор подходит для реализации идей арт-инсталляций, в которых необходимо отслеживать положение человека. Стоит отметить, что программное обеспечение сенсора Kinect не содержит готовых компонент для организации человеко-машинного интерфейса, адаптированного для бесконтактного использования. Их создание ложится на плечи программиста-разработчика систем.

2. Арт-инсталляция

Данная работа посвящена созданию концепции и программной реализации арт-инсталляции. Идея данной инсталляции заключается в вовлечении людей в создание персонального интерактивного изображения.

Типичный ход событий представлялся следующим образом:

  1.  Когда нет активных пользователей, на экране показывается привлекательный ролик.
  2.  Заинтересовавшиеся люди подходят ближе к экрану.
  3.  На экране появляется курсор, ассоциированный с рукой пользователя.
  4.  Пользователь делает жест рукой и попадает в главное меню.
  5.  В главном меню пользователь выбирает объект-тему.
  6.  На экране показывается цветное изображение с камеры. На определённые участки тела человека накладываются изображения, соответствующие выбранной теме.
  7.  При необходимости, пользователь может нажать копку для смены темы картинок.
  8.  Пользователь наводит курсор на кнопку «Сделать снимок».
  9.  Снимок сохраняется на носителе информации.
  10.  Пользователю показывается экран с благодарностью.
  11.  Переход к пункту 1.

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

2.1. Внутреннее представление тем

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

Для хранения данных была разработана специальная структура в формате XML [5]. Пример структуры приведен в листинге:

<?xml version="1.0" encoding="utf-8"?>

<stories>

<category>

<title>bestlove</title>

<image>heart.jpg</image>

<item>

<title>crown</title>

<joint>Head</joint>

<dx>0</dx>

<dy>100</dy>

<gender>0</gender>

<side>0</side>

<image>crown.jpg</image>

</item>

<item>

<title>shield</title>

<joint>HandRight</joint>

<dx>0</dx>

<dy>0</dy>

<gender>1</gender>

<side>1</side>

<image>shield.jpg</image>

</item>

<item>

<title>helmet</title>

<joint>Head</joint>

<dx>0</dx>

<dy>0</dy>

<gender>1</gender>

<side>0</side>

<image>helmet.jpg</image>

</item>

</category>

<category>

</category>

</stories>

В листинге показана часть XML файла, в котором хранится описание всех тем арт-инсталляции. Каждая тема арт-инсталляции соответствует паре тегов <category>…</category>. В этих тегах содержится полное описание темы:

  •  Имя темы, в тегах  <title>Имя темы</title>
  •  Иконка темы, в тегах <image> Имя иконки </image>
  •  Описание каждого элемента темы, в тегах  <item>…</item>

Как уже было сказано выше, каждая картинка темы описывается в теге <item>. В описании хранится следующая информация:

  •  Имя элемента, в тегах  <title>Имя</title>
  •  Сустав привязки картинки, в тегах  <joint>Сустав</joint>
  •  Смещение картинки dx, в тегах  <dx>dx</dx>
  •  Смещение картинки dy, в тегах  <dy>dy</dy>
  •  Целевой пол, в тегах  <gender>Пол</gender>
  •  Сторона привязки, в тегах  <sider>Сторона</side>
  •  Изображение элемента, в тегах <image> Имя изображения </image>

Во время запуска приложения происходит автоматическая загрузка тем из XML файла описания.

Для хранения данных разработаны следующие классы: ModelItem, CategoryImage, ContentItemImage. Диаграмма основных классов представлена на рис. 8.

Рисунок . Диаграмма классов модели данных

Одной из важнейших операций является LoadStories() из класса ModelItem. Операция отвечает за загрузку тем арт-инсталляции. Её код приведен в листинге:

private void LoadStories()

       {

           XDocument doc = XDocument.Load("Content\\StoriesImages.xml");

           foreach (XElement ele in doc.Descendants("category"))

           {

               CategoryImage category = new CategoryImage();

               category.Title=ele.Element("title").Value;

          

               foreach (XElement it in ele.Descendants("item"))

               {

                   ContentItemImage item = new ContentItemImage();

                   item.Title = it.Element("title").Value;

                   item.Joint = (Microsoft.Kinect.JointType)Enum.Parse(typeof(Microsoft.Kinect.JointType), it.Element("joint").Value);

                   item.dx = Convert.ToInt32(it.Element("dx").Value);

                   item.dy = Convert.ToInt32(it.Element("dy").Value);

                   item.gender = Convert.ToInt32(it.Element("gender").Value);

                   item.side = Convert.ToInt32(it.Element("side").Value);

                   item.ContentImage = string.IsNullOrEmpty(it.Element("image").Value)

                                                 ? null : new BitmapImage(new Uri("pack://siteoforigin:,,,/Content/Images/" + it.Element("image").Value));

                   category.AddContent(item);

               }

               categories.Add(category);

           }

       }

Метод открывает документ с писанием тем. После этого происходит поиск открывающегося тега <category>. Для каждой найденной категории инстанцируется объект класса CategoryImage, в котором находится два списка:

readonly List<ContentItemImage> MaleContent;

readonly List<ContentItemImage> FemaleContent;

В  них будут храниться картинки, предназначенные для мужчин и женщин. Для это используется операция AddContent(ContentItemImage newContent), которая автоматически помещает объект newContent в соответствующий список. Далее в методе находится цикл foreach. С его помощью операция находит все теги <item>. Для каждого найденного элемента создаётся объект класса ContentItemImage, куда записывается вся информация об элементе. После этих действий ссылка на объект помещается в соответствующий список категории.

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

2.2. Реализация пользовательского представления арт-инсталляции

Для реализации пользовательского представления [6] были разработаны соответствующие классы. Частичная диаграмма классов приведена на рис.9.

Рисунок . Диаграмма классов пользовательского представления

Наибольший интерес представляет класс HeartPreview, ответственный за отрисовку изображений на видео. Рассмотрим некоторые важные операции класса:

UpdateSceletons(Microsoft.Kinect.Skeleton[] skeletons)

Этот метод вызывается каждый раз, когда Kinect SDK возвращает новый кадр скелета (Skeleton frame), который передаётся через входные аргументы в метод [7]. Любой скелет в массиве skeletons имеет уникальный идентификатор TrackingId. Этот идентификатор ассоциируется с человеком, которого распознал Kinect. Между идентификатором и человеком имеется полнофункциональное отображение. Благодаря этому становится возможным отслеживать и распознавать перемещение нескольких человек в одном кадре. В случае арт-инсталляции мы связываем идентификатор с набором MaleContent (FemaleContent). Зная эту связь, мы вызываем операцию Draw(), которая обновляет на канвасе все изображения. Также операция обрабатывает ситуации, когда человек уходит из кадра либо появляется в кадре.

Резюмируя поведение метода UpdateSceletons, можно сказать, что основная задача метода поддерживать отображение TrackingId - MaleContent (FemaleContent) в актуальном состоянии.

Draw(Skeleton sk, List<ContentItemImage> list, List<Image> images)

Метод Draw выполняет операцию перерисовки набора изображений в соответствии с изменившимся положением скелета. В методе используется информация об изображения, которая была прочитана из XML файла, точка привязки (joint), сторона (side), сдвиги dx и dy.

Стоит отметить, что люди могут стоять как ближе оптимального расстояния, так и дальше его, поэтому в методе Draw() реализована функция масштабирования изображения в зависимости от расстояния между человеком и сенсором, которое берется из кадра глубины (Depth frame).

  1.  Для вывода изображения с камеры на экран используется связывание  данных (Binding)[6]. Для атрибута ImageBrush объекта Canvas (целевой объект привязки) устанавливается связывание с объектом источником – атрибутом RGBframe из класса KinectController. После связывания при модификации источника, изменения передадутся целевому объекту привязки. Таким образом, при получении нового цветного кадра с сенсора будет происходить обновление фона объекта Canvas. Код разметки страницы XAML, иллюстрирующий применение связывания, приведён в листинге:

<Canvas.Background>

               <ImageBrush ImageSource="{Binding Path=Controller.RGBframe, Source={x:Static Application.Current}}"/>

</Canvas.Background>


3. Пользовательские элементы управления

Вместе с сенсором Kinect компания Microsoft поставляет Kinect SDK, содержащий набор инструментов для облегчения работы. Основные возможности SDK были описаны в разделе 1.2.2. Следует подчеркнуть тот факт, что с Kinect SDK компоненты для организации интерфейса человеко-машинного взаимодействия не поставляются.

В арт-инсталляциях обычно предполагается, что человек находится на большом расстоянии от экрана, порядка 3-5 метров. На таком расстоянии стандартные элементы управления (курсор, кнопки и другие) становятся плохоразличимыми. Работа с ними для пользователя представляет некоторую сложность. Стоит заметить, что Kinect не обладает абсолютной точностью в определении координат человека, часто появляются шумы и «дребезг». Учитывая особенности оборудования и цели арт-инсталляции, понадобилось создать новые компоненты для организации удобного взаимодействия. Для цели организации взаимодействия базового уровня потребовалось создать курсор и кнопку.

В силу того, что человек находится на большом расстоянии от экрана, курсор должен большого размера. При использовании обычной мыши человек применяет стандартные способы взаимодействия, например, для получения события «клик кнопки мыши» человек должен нажать и отпустить кнопку мыши. Возникает вопрос: как смоделировать событие «клик мыши» для бесконтактного взаимодействия. Одним из возможных вариантов – реализовать особое поведение курсора[8].

При наведении курсора на кнопку, вокруг курсора появляется кольцо, которое будет заполняться заливкой, тем самым пользователь будет чётко понимать, что когда кольцо полностью заполнится, произойдёт событие «клик». Пример курсора показан на рис.10

              Рисунок . Курсор

Для получения курсора с требуемым поведением были созданы следующие классы:

HandPosition, HandVisualizer, HandInputIventArgs, HandHoverTimer.

В экземпляре класса HandPosition хранится вся необходимая информация о текущем состоянии курсора: координаты, идентификатор игрока и другие. Реализуется масштабирование координат указателя до размера рабочей области.

За отображение курсора отвечает инстанс класса HandVisualizer. В нём находится логика для отрисовки анимации при наведении курсора на элемент управления.

Экземпляр класса HandHoverTimer содержит поведение для организации таймеров курсора при взаимодействии с элементами управления.

С диаграммой классов можно ознакомиться на рис. 11.

Для создания кнопки, поддерживающей поведение курсора, был написан класс HoverButton. В этом классе находятся обработчики событий типа «курсор переместился на элемент» и «курсор покинул элемент». Обрабатывая эти события, кнопка формирует своё поведение: запускает таймер, проверяет его, вызывает обработчик события «клик» и другие.

Рисунок . Диаграмма классов элементов пользовательского взаимодействия

Для работы с сенсором Kinect используется класс KinectConroller. В этом классе происходит:

  •  Конфигурирование сенсора и его запуск
  •  Обработка информации поступающей с сенсора
  •  Создание сообщений и отправка их в систему


4.Руководство пользователя

Для установки арт-инсталляции необходимо выполнить следующие шаги:

  1.  Установите сенсор на плоскую поверхность.
  •  Не ставьте сенсор перед динамиками, на вибрирующие поверхности или около источников шума.
  •  Не ставьте сенсор под прямые солнечные лучи.
  •  Не наклоняйте сенсор вручную. Это может привести к поломке механизма. Используйте соответствующее свойство в экземпляре класса KinectSensor.
  1.  Установка необходимого ПО.
    •  Установите Kinect SDK (версии 1.6.0) и Kinect Developer Toolkit / пакет Kinect Runtime Setup  с сайта www.microsoft.com /
    •  Установите экземпляр программы арт-инсталляции

  1.  Подключение сенсора.
  •  Включите штепсельную вилку сенсора в сеть.
  •  Вставьте кабель сенсора в свободный USB порт компьютера.
  •  Операционная система автоматически установит все драйвера.

    D.   Запустите исполняемый файл арт-инсталляции.  

Теперь Ваша арт-инсталляция готова к работе. На экране поваляется заставка рис.12.

Рисунок . Заставка

Подойдите к сенсору Kinect. На экране появится курсор, ассоциированный с рукой (рис.13).

Рисунок . Главное меню

С этого момента Вы сможете управлять арт-инсталляцией с помощью руки.

На экране показывается главное меню, на котором Вы выбираете объект-тему. Для выбора нужного объекта наведите на него курсор. Вокруг курсора появится кольцо, которое будет заполняться цветом. Когда кольцо полностью заполнится, объект-тема будет выбрана.

На экране появляется окно с готовой арт-инсталляцией. Если программа неточно определила Ваш пол, нажмите на кнопку смены пола. Когда арт-инсталляция Вас будет полностью устраивать, кнопку сделать снимок.

Рисунок . Результирующий снимок

Ваш снимок готов (рис. 14). Информация о дальнейших действиях необходимых для получения картинки будет представлена автоматически на следующем экране (рис.15).

Рисунок . Завершение сеанса


5. Руководство программиста

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

Для взаимодействия с сенсором используется класс KinectController. В нём инкапсулирована вся логика работы с сенсором: обработка сообщений, получаемых с сенсора, создание событий и отправка их в систему. Класс поддерживает интерфейс INotifyPropertyChanged для уведомления клиентов об изменении своих свойств В этом классе формируются и подготавливаются  кадры: RGB, Depth и Skeleton в операциях:

  •  ColorImageReady(object sender, ColorImageFrameReadyEventArgs e)
  •  Sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)

После чего создаётся событие OnPropertyChanged с  требуемым типом, которое будет обработано зарегистрированным клиентом в системе.

Также в этом классе находится логика создания курсора, событий вызванных курсором (HandEnterEvent, HandMoveEvent, HandLeaveEvent, HandRaisedEvent).

При необходимости сюда можно добавить модуль распознавания жестов, который будет следить за активным скелетоном, подписавшись на событие OnPropertyChanged, и будет создавать события, распознавая определенные жесты.

Также в этом классе можно создать операцию для обработки голосовых команд.

Для создания курсора используется группа классов  HandPosition, HandVisualizer, HandInputIventArgs, HandHoverTimer. Их описание было предоставлено в разделе 3.

Для создания кнопки используется класс HoverButton. HoverButton наследуется от класса ContentControl. Пример использования класса приведён на рисунке 16.  С помощью свойства HoverClick мы можем задать обработчик события «клик». Для изменения внешнего отображения требуется сконфигурировать свойство Background объектом ImageBrush.

С частичными диаграммами классов модели, представления и контроллеров можно ознакомиться на рисунках 8,9 и 11.

Рисунок . Пример использования HoverButton


Заключение

В результате выполнения данной выпускной квалификационной работы было достигнуты следующие результаты:

  •  Предложена схема реализации арт-инсталляции
  •  Разработана система поддержки арт-инсталляции
  •  Реализованы компоненты бесконтактного человеко-машинного интерфейса
  •  Автор получил опыт разработки ПО для аппаратной платформы с использованием сенсора Kinect


Литература

  1.  Interactive art [Electronic resource] / Wikipedia. - Electronic data. - URL: http://en.wikipedia.org/wiki/Interactive_art (retrieval date: 24.04.2013)
    1.  The Intel® Perceptual Computing SDK  [Electronic resource] / Intel. - Electronic data. - URL: http://software.intel.com/en-us/vcsource/tools/perceptual-computing-sdk (retrieval date: 24.02.2013)
      1.  The Leap Review [Electronic resource] / Leap Motion. - Electronic data. - URL: https://www.leapmotion.com/product (retrieval date: 24.02.2013)
      2.  Kinect for Windows SDK [Electronic resource] / Microsoft. - Electronic data. - URL: http://msdn.microsoft.com/en-us/library/hh855347.aspx (retrieval date: 24.10.2012)
      3.  XML Data [Electronic resource] / Microsoft. - Electronic data. - URL: http://msdn.microsoft.com/en-us/library/cc188996(v=vs.95).aspx (retrieval date: 10.03.2013)
      4.  Getting Started WPF [Electronic resource] / Microsoft. - Electronic data. - URL: http://msdn.microsoft.com/en-us/library/ms742119.aspx (retrieval date: 20.01.2013)
      5.  Kinect for Window SDK Quickstart Series [Electronic resource] / Microsoft Research. - Electronic data. - URL http://channel9.msdn.com/Series/KinectSDKQuickstarts (retrieval date: 24.03.2012)
      6.  Kinect for Windows Human Interface Guidelines v1.6.0 [Electronic resource] / Microsoft. - Electronic data. - URL: http://go.microsoft.com/fwlink/?LinkID=247735 (retrieval date: 24.03.2012)

PAGE  1


 

А также другие работы, которые могут Вас заинтересовать

37714. Протокол SMTP 805.5 KB
  Щоб доставити повідомлення до адресата необхідно переслати його поштовому серверу домену в якому знаходиться адресат. Сервер відповідає на кожну команду рядком що містить код відповіді і текстове повідомлення відокремлене пропуском. У результаті цього спам став практично нерозв'язною проблемою так як було неможливо визначити хто насправді є відправником повідомлення фактично можна відправити лист від імені будьякої людини. DT CRLF Вказує на початок повідомлення.
37715. Двуфакторний аналіз 51.84 KB
  Суму квадратів всіх дослідів 18 4. суму квадратів сум по стовпцях поділену на число дослідів в стовпцю 19 5. суму квадратів сум по стрічках поділену на число дослідів в стрічці 20 6. суму квадратів для стовпця SS=SS2SS4; 22 8.
37716. Оператори роботи з рядками. Обробка одновимірних масивів та рядків. Статичні одновимірні масиви 675.08 KB
  Статичні одновимірні масиви. Оператори роботи з рядками. Обробка одновимірних масивів та рядків. Мета: навчитись проводити обробку одновимірних масивів та рядків мовою програмування С.
37717. Логические элементы на МДП-транзисторах 1.39 MB
  Теоретические сведения Обратное преобразование двоичного кода в код I из N выполняют преобразователи кода называемые дешифраторами. Синтез структуры дешифратора как и любого другого преобразователя кодов начинается с записи таблицы соответствия входных и выходных кодов. если число входов m и число выходов n дешифратора связаны соотношением: n = 2m то выходы определены для всех двоичных наборов и дешифратор называется полным. Пример неполного дешифратора преобразователь двоичного кода 421 в код I из 10 согласно табл.
37718. Знакомство с принципами микропрограммой эмуляции ЭВМ с программным управлением 53 KB
  р0= 1 1ый элемент р1= 1 2ой элемент р2 Ктый элемент RCT =К2 р3 Сумма Микропрограмма выполняемого алгоритма Выборка команды Адрес МК Операция Поле Значение Функция 00 mov PC OP dd PC 2 B SRC LU DB CONST 7 4 3 1 2 PC R7 D RGB RSC0 Шина DB 01 mov PC RF mov PC RGK JMP B R DST CH F 1 4 2 RF Чтение ОП RGR РЗУ JMP Адрес МК Операция Поле Значение Функция 02 dd R3R0 M MB LU CH 1 2 3 0 Из поля R1 команды Из...
37719. Дослідження динамічних властивостей теплового об’єкта регулювання 984.5 KB
  Мета роботи: експериментальне дослідження динамічних властивостей регулювання теплового об’єкта знайомство з методами експериментального визначення перехідної характеристики об’єкта регулювання та її параметрів. Опис лабораторного макета Дослідження динамічних властивостей теплового об'єкта регулювання і релейної CP температури здійснюється на стенді схема якого подана на рис. 0 3 4 45 55 65 8 105 125 18 225 t˚С 28 29 295 30 31 32 33 34 35 36 37 Δt˚С 0 1 05 05 1 1 1 1 1 1 1 Основними параметрами перехідної...
37720. Побудова кінематичної схеми плоского механізму та його структурний аналіз 952.57 KB
  Мета роботи - набути навичок складання структурних і кінематичних схем механізмів та проведення їх структурного аналізу. Зміст роботи: на прикладі моделі плоского механізму скласти кінематичну і структурну схеми, визначити кількість ланок, у тому числі вхідних і вихідних, кількість кінематичних пар, записати структурну формулу механізму та встановити його клас і порядок.
37721. Специфікування предметної галузі проекту засобами мови uml. Кількісна оцінка діаграм 108 KB
  кількісна оцінка діаграм Мета: дослідження класів та отримання навиків у побудові діаграми класів UML для специфікування предметної галузі використання стереотипів UML та структурування моделі UML за допомогою пакетів. Опис класів. Побудова діаграми класів Діаграма класів Clss digrm призначена для відображення статичної структури ПЗ проекту що проектується. Діаграма містить класи і взаємозв’язки між ними та дозволяє описати їх структуру та типи відношень.
37722. ІМПІЧМЕНТ (АМЕРИКАНСЬКА ЗА ПОХОДЖЕННЯМ МОДЕЛЬ) 99.5 KB
  Тема даної роботи досить актуальна, адже складність процедури імпічменту зумовлює те, що в історії відбувалися лише окремі успішні випадки відсторонення посадових осіб з посад, а імпічмент главі держави вважається резонансною подією.