- PVSM.RU - https://www.pvsm.ru -

Kinect for Window SDK. Часть 1. Сенсор

Три части обзорной статьи можно считать вводными к двум другим: «Играем в кубики с Kinect» и «Программа, апорт!». Хотя хронологически они идут последними. Более того, за время их написания Microsoft успел выпустить новую версию SDK – 1.5. Какой удар со стороны корпорации!

Как вам должно быть известно, Kinect – это бесконтактный контроллер, т.е. скажем в играх, вместо того, чтобы яростно стучать по клавиатуре или терзать gamepad, вы размахиваете руками и ногами и время от времени голосом даете какие-то команды. Самое время спрятать дорогие китайские вазы X века подальше!

Начинать знакомство с Kinect лучше со знакомства с самим сенсором. Это небольшая черная коробочка с тремя камерами, длиной чуть более 20 см и высотой около 5 см (не считая ножки). Один нюанс – в Kinect две камеры. И это изображение (взято из MSDN [3]) тому подтверждение.

image

  • IR Emitter – Инфракрасный излучатель. Да, это не камера. Его назначение испускать инфракрасные лучи, которые, отражаясь от предметов, попадают назад в сенсор, где их принимает:
  • IR Depth Sensor – Инфракрасный приёмник. Собирает отраженные лучи, преобразуя их в расстояние от сенсора до объекта(ов). И таким образом строится, можно сказать, матрица расстояний — целый кадр. Максимальное разрешение 640x480 (30 fps). Если говорить о переводе мне кажется, «ИК приёмник» лучше отражает суть, чем дословный «ИК датчик глубины».
  • Color Sensor – Цветная камера. Захват видео с максимальным разрешением 1280x960 (12fps). Угол обзора камеры: 43° по вертикали и 57° по горизонтали (угол обзора дальномера идентичный). Можно выбрать формат картинки: RGB [4] или YUV [5].
  • Microphone Array – набор микрофонов. 4 встроенных микрофона позволяют определить местоположение источника звука и направление звуковых волн. Встроенный обработчик звукового сигнала включает подавление эха и уменьшение шума.
  • Tilt Motor – Коррекция наклона. Позволяет программно настраивать наклон сенсора в диапазоне ±27° по вертикали.

Сенсор подключается к компьютеру через USB, хотя, строго говоря, USB устройством не является, т.к. имеет несколько отличную прошивку, нежели стандартное USB устройство. Найти какие-либо комментарии по этому поводу не получилось, но можно предположить, что сделано это исключительно в целях повышения производительности. Вы можете подключить до четырех сенсоров [6] одновременно.

Другой важный аспект аппаратной части – диапазон «рабочих» расстояний, т.е. на каком расстоянии сенсор способен видеть объекты (данные дальномера). И снова картинка помогает продемонстрировать возможности Kinect.

image

Режим Default Range доступен как для Kinect for Windows, так и для Kinect for XBox, но Near Range доступен только для сенсора Kinect for Windows. Простой пример: для всех объектов в кадре находящихся в пределах Normal Values сенсор вернёт измеренное расстояние, но для объектов, выходящих за этот диапазон, сенсор вернёт либо ноль, либо определенную для каждого диапазона константу [7] (зависит от заданных вами настроек). Одно из существенных отличий SDK 1.5 от 1.0 в том, что теперь в режиме Near Range можно получить информацию о сидящем человеке, это так называемый трекинг сидящей фигуры (seated skeletal tracking). Kinect отслеживает 10 точек: голову, шею и руки. Но об этом чуть позже.

Хочется обратить внимание на различия [8] двух Kinect (XBox и Windows). Первый разрабатывался и тестировался с одним устройством – XBox. Второй же, напротив, должен работать с широким диапазоном устройств (компьютеров), поэтому его кабель короче, а специальное устройство призвано не позволить Kinect подраться с остальной USB периферией. Лицензионное соглашение позволяет использовать Kinect for Windows в коммерческих целях, а Kinect for XBox нет.

Перейдем теперь к установке SDK. В версии 1.5 Microsoft разделил SDK на два пакета. Скачать их можно с официальной страницы [9]:

  • Kinect for Windows SDK. Включает APIs и драйверы сенсора.
  • Kinect for Windows Developer Toolkit. Включает Kinect Studio (полезный для отладки инструмент), Face Tracking SDK, примеры кода и документация.

Не будем останавливаться на установке SDK, в этом нет ничего сложного или интересного. А вот что действительно интересно так это то, что же разработчик может получить от Kinect? Взглянем на следующие возможности:

  • Skeletal Tracking (трекинг человеческой фигуры)
  • Face Tracking (трекинг лица)
  • Speech Recognition (распознавание речи)

Обзор этих функций вы найдете в следующих частях статьи.

Полезные ссылки:

  • Kinect for Windows SDK [9]
  • Руководство разработчика [10]. Можно найти примеры на C# (managed code) и на C/C++ (unmanaged code)
  • Kinect for Windows Quickstart Series [11]. Серия видео-уроков о возможностях Kinect (весьма полезная для знакомства с устройством).
  • Near Mode: What it is (and isn’t) [12]. Статья о near mode, хотя написана в преддверии SDK 1.0, но полезна в плане разоблачения некоторых мифов.
  • Форумы [13] Kinect for Windows SDK. Здесь можно обратиться за советом к экспертам.

Автор: Lardite


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/14568

Ссылки в тексте:

[1] Играем в кубики с Kinect: http://habrahabr.ru/post/142236/

[2] Программа, апорт!: http://habrahabr.ru/post/142677/

[3] MSDN: http://msdn.microsoft.com/en-us/library/jj131033

[4] RGB: http://ru.wikipedia.org/wiki/RGB

[5] YUV: http://ru.wikipedia.org/wiki/YUV

[6] четырех сенсоров: http://www.microsoft.com/en-us/kinectforwindows/develop/release-notes.aspx#_3._Changes_in

[7] константу: http://social.msdn.microsoft.com/Forums/hu-HU/kinectsdknuiapi/thread/7a745515-3799-434e-9c84-6157a3180739

[8] различия: http://www.microsoft.com/en-us/kinectforwindows/news/faq.aspx

[9] страницы: http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx

[10] Руководство разработчика: http://msdn.microsoft.com/en-us/library/hh855348

[11] Quickstart Series: http://channel9.msdn.com/Series/KinectQuickstart

[12] Near Mode: What it is (and isn’t): http://blogs.msdn.com/b/kinectforwindows/archive/2012/01/20/near-mode-what-it-is-and-isn-t.aspx

[13] Форумы: http://social.msdn.microsoft.com/Forums/en-US/category/kinectsdk