230 likes | 403 Views
DEV211. Эксперт по разработке информационных систем. Microsoft. Создание приложений, управляемых жестами и голосом, для Windows с использованием Kinect. Андреев Дмитрий. Содержание. Сенсор Kinect Использование Камеры Данные глубины Отслеживание скелета Аудио. 3D Сенсор глубины.
E N D
DEV211 Эксперт по разработке информационных систем Microsoft Создание приложений, управляемых жестами и голосом, для Windows с использованием Kinect Андреев Дмитрий
Содержание • Сенсор Kinect • Использование Камеры • Данные глубины • Отслеживание скелета • Аудио
3D Сенсор глубины RGB Камера Моторизованная платформа Мультимикрофон
Демонстрация Отображение данных видео, датчика глубиныи управление вертикальной позицией
Данные датчика глубины • Дистанция от Kinectдля каждого пикселя • Опционально включается информация о Игроке
Как устроены данные глубины • ImageFrame.ImageBits • Массив байтов public byte [] Bits; • Массив • Начинается с верхнего левого угла • С лева на право, с верху в низ • Отображает дистацию до пикселя
Вычисление дистанции • Два байта на пиксель (16 бит) • Depth – дистанция до пикселя • Ротируем второй байт на 8 • Distance (0,0) = (int)(Bits[0] | Bits[1] << 8); • DepthAndPlayer Index – включает номер Игрока • Ротируем 3 первых байта (индекс игрока), 5 следующий байт • Distance (0,0) =(int)(Bits[0] >> 3 | Bits[1] << 5);
Глубина: как измерять • Границы дистанции: от 850мм до 4000мм • Значение 0: Unknow • Тень, низкая освещенность, высокий уровень отражений,… • Индекс игрока • 0: нет игрока • 1: скелет 1 • 2: скелет 2 • 3: игрок 3 • 4:…
Демонстрация Работа с данными глубины
Сочленения (Joints) • Отслеживается максимум два игрока одновременно • Каждый игрок является набором <x,y,z> сочленений, измерение в метрах • Каждое сочленение имеет состояние Tracked, NotTracked, Inferred • Inferred – закрыто, не наблюдается, низкая уверенность в предсказании • Not Tracked состояние бывает редко но вы все равно должны проверять его в коде
Сглаживаниеданных оскелете • Используйте чтобы снизить «дрожание» данных о скелете (jitter) • Высокочастотный шум в небольших границах • Время от времени бывают случайные всплески • nui.SkeletonEngine.TransformSmooth = true; • Тонкая настройка с помощьюTransformSmoothParameters • Correction, JitterRadius, MaxDeviationRadius, Prediction, Smoothing
Демонстрация Работа с данными о скелете
Аудио • Kinectкак микрофон • Kinectи распознавание голоса
Мульти-модальная обратная связь • Модель Взаимодействия • Индикатор микрофона для меню с голосом • Ожидаемое ключевое слово • Обратная связьи подтверждение
Распознавание голоса • Набор грамматик доступен для загрузки • Грамматика – то что мы ожидаем услышать • Код – GrammarBuilder, Choises • Спецификация (Speech Recognition Grammar Specification, SRGS) • C:\Program Files (x86)\Microsoft Speech Platform SDK\Samples\Sample Grammars\
Грамматика <!-- Confirmation_YesNo._value: string ["Yes", "No"] --> <ruleid="Confirmation_YesNo"scope="public"> <example> yes </example> <example> no </example> <one-of> <item> <rulerefuri="#Confirmation_Yes"/> </item> <item> <rulerefuri="#Confirmation_No"/> </item> </one-of> <tag> out = rules.latest() </tag> </rule> </rule> <!-- Confirmation_Yes._value: string ["Yes"] --> <ruleid="Confirmation_Yes"scope="public"> <example> yes </example> <example> yes please </example> <one-of> <item> yes </item> <item> yeah </item> <item> yep </item> <item> ok </item> </one-of> <itemrepeat="0-1"> please </item> <tag>out._value = "Yes";</tag>
Демонстрация Аудио
Ресурсы • Загрузка • http://research.microsoft.com/kinectsdk • Примеры • http://research.microsoft.com/kinectsdk/ • Coding4Fun Kinect Toolkit • http://c4fkinect.codeplex.com • Быстрй старт с Kinect SDK • http://channel9.msdn.com/series/KinectSDKQuickstarts
Обратная связь Уважаемые участники! Ваше мнение очень важно для нас! В блокноте, который находится в инфопаке участника, вы найдете анкету для оценки докладов Пожалуйста, оцените доклад и сдайте анкету при выходе из зала модератору Для участия в конкурсе заполненных анкет, отметьте в анкете номер, который указан на вашем бейдже Спасибо!
Вопросы • DEV211 • Дмитрий Андреев • Эксперт по разработке информационных систем • dmitryan@microsoft.com • Twitter: @dmandreev • http://blogs.msdn.com/dmandreev • Вы сможете задать вопросы докладчику в зоне Microsoft в зале №17 в течение часа после завершения этой сессии