УДК 004.35+004.42+004.5
Управление компьютером с помощью сенсора Kinect
П.А. Афанасов, К.А. Дудка, А.В. Котенева, С.А. Ноздрачев
Московский государственный университет печати имени Ивана Федорова 127550, Москва, ул. Прянишникова, 2А e-mail: [email protected], [email protected]
Рассматриваются программа, позволяющая управлять компьютером с помощью сенсора Kinect для Windows. Приводятся принципы работы программы, алгоритмы распознавания жестов.
Ключевые слова: управление компьютером, Kinect, точки скелета, жесты, обработка звука, голосовые команды.
Kinect - устройство, изначально созданное для игровой консоли Xbox 360, позволяющее управлять играми без геймпадов или каких-либо других контроллеров. Kinect оснащен RGB-камерой, дальномером, состоящим из инфракрасного лазерного проектора и инфракрасного CMOS-датчика и специализированного микрофона, обеспечивающего локализацию источника звука и подавление окружающего шума. С помощью своих сенсоров Kinect составляет карту глубины, на основе которой выстраивается скелетная модель человека, находящегося в зоне видимости устройства (рис. 1). Сенсор распознает до 6 человек [4].
Основываясь на скелетных данных, моделируемых Kinect, можно обрабатывать координаты узловых точек скелета и привязывать к движениям человека определенные функции компьютера. В нашем приложении мы разработали жесты для перелистывания (swipe), масштабирования (zoom), управления курсором и осуществления щелчка
27
Рис. 1. Точки скелета
левой кнопкой мыши. Работая с библиотекой Speech Recognition, мы организовали управление компьютером с помощью голосовых команд. В их перечень вошли такие, как «click», «open», «chrome bar», «close», «exit».
Алгоритмы жестов
Общий принцип определения жеста представлен на рис. 2.
На этапе открытия приложения первым делом должна проходить проверка подключения сенсора. Если он подключен, то включается захват изображения и последующее построение скелетной модели человека и аудиопотока. В фокус камер берется пользователь, находящийся ближе всего к Kinect. В случае его успешного нахождения происходит построение скелетной модели. С помощью стандартных библиотек получается объект с данными о скелете. Одна фигура - один объект. Объект хранит данные о состоянии трекинга и положении человека[1].
Получив координаты суставов скелета, можно привязывать события на изменение их положения, например, передвижения курсора. Координаты узлов хранятся в своей координатной сетке, которая не соответствует координатной системе пикселов экрана. Из-за этого не-
28
обходимо сначала привести их к соответствующим значениям в системе координат пикселов и только потом передавать в функцию-обработчик события. В связи с тем, что человек не может постоянно находится в одном положении, возникают шумы и помехи при трекинге скелета, которые необходимо учитывать и отфильтровывать, иначе курсор мыши будет отображаться на экране с ошибками.
29
Для выравнивания движений курсора был использован алгоритм Рамера - Дугласа - Пекера. Он позволяет уменьшить количество точек на кривой путем нахождения тех точек, которые наиболее отличаются от остальной последовательности. Суть алгоритма состоит в том, чтобы по данной ломаной, аппроксимирующей кривую, построить ломаную с меньшим числом точек. Алгоритм определяет расхождение, которое вычисляется по максимальному расстоянию между исходной и упрощенной кривыми [3].
Жест, имитирующий щелчок левой кнопки мыши, реализован с помощью обработки координат узлов левой руки и головы. Событие регистрируется непосредственно при касании левой рукой головы. При реализации выяснилось, что необходимо указывать доверительный интервал расстояний между кистью и головой, при попадании в который будет происходить вызов функции-обработчика события (рис. 3).
Рис. 3. Блок-схема функции обработчика события «щелчок левой кнопкой мыши»
30
Для жеста перелистывания (swipe) нужно отслеживать положение двух узлов: локоть и кисть. Когда пользователь делает взмах рукой, он описывает некую кривую. Для регистрации нужного жеста необходимо проверить, является ли кривая дугой, если да, то вызывается функция-обработчик, если нет - жест игнорируется.
Для реализации масштабирования (zoom) отслеживаются координаты узлов левой и правой руки (рис. 4). Изначально, вводится понятие зоны действия увеличения или уменьшения объектов. С помощью встроенного в сенсор дальномера и карты глубины строятся плоскости относительно положения человека. Плоскость, в которой регистрируется жест, самая близкая к сенсору, сам человек находится в следующей по удаленности от сенсора плоскости. При попадании обеих рук в эту плоскость программа будет пытаться распознать движение точек скелета как жест «zoom» (рис. 4).
Рис. 4. Блок-схема функции-обработчика события « zoom»
31
Принцип алгоритма основан на определении направления
движения кистей (удаляются друг от друга или сближаются). Через равные промежутки времени замеряется расстояние между узлами по формуле и сравнивается с вычислениями в предыдущей итерации.
В зависимости от результата интерпретируется соответству-
ющее событие. Если полученное расстояние было больше полученного ранее, то делаем вывод, что было сделано увеличение объекта (zoom out), и наоборот. Действие компьютера прикрепляется к жесту с помощью имитации нажатия комбинации клавиш «+» + Ctrl» и «-» + Ctrl» на клавиатуре.
Голосовое управление
Последовательность действий при организации голосового управления в программе [1]:
1) выбор обработчика (engine) распознавания звука из доступных в системе для требуемого языка;
2) создание словаря команд и его передача в полученный обработчик;
3) отдача команды обработчику для начала распознавания. Обработчик распознавания речи - стандартный библиотеч-
ный объект. Для программы бы выбран следующий словарь фраз и слов:
• chrome bar - открытие хром-панели в Windows 8;
• click - щелчок левой кнопкой мыши;
• close - закрытие активного окна;
• com - вывести список всех голосовых команд;
• exit - выход из программы;
• go - активировать режим управления курсором;
• open - открытие выделенной папки или файла;
• windows - открытие меню «пуск».
Для распознавания фраз необходимо создать объект, содер-
жащий данные о словаре, грамматических и морфологических особенностях конкретного языка, который загружается в обработчик распознавания речи. Каждое сказанное пользователем слово обработчик сравнивает с шаблонами слов в переданном объекте, чтобы определить, не была ли произнесена команда. В случае, когда обработчик находит соответствие между произнесенной фразой и словарем, вызывается обработчик соответствующего события.
Таким образом, было реализовано управление компьюте-
ром без использования мыши и клавиатуры. Этот проект полезен в различных сферах деятельности, начиная от дизайна, рекламы, презентаций и заканчивая играми и обычным пользованием, а также открывает новые возможности использования Кинекта для Windows.
32
Библиографический список
1. Coding4Fun. © 2015 Microsoft [Электронный ресурс]. Режим доступа: http://channel9.msdn.com/coding4fun/
2. Developer Network. © 2015 Microsoft [Электронный ресурс]. Режим доступа: https://msdn.microsoft.com/en-us/library/dn799271. aspx
3. Алгоритм Рамера - Дугласа - Пекера. Wikipedia®. Wikimedia Foundation, Inc. [Электронный ресурс]. Режим доступа: https:/ /ru.wikipedia.org/wiki/Алгоритм_Рамера_-_Дугласа_-_Пекера
4. Кинект, Wikipedia®. Wikimedia Foundation, Inc. [Электронный ресурс]. Режим доступа: https://ru.wikipedia.org/wiki/Kinect
33