Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 23.10.2013 | Доступ: свободный | Студентов: 1773 / 624 | Длительность: 09:26:00
Специальности: Программист
Лекция 3:

Высокоуровневые средства распознавания жестов в пакете Intel Perceptual Computing SDK

Универсальные жесты

В Intel Perceptual Computing SDK существует ряд жестов, действия на которые уже предопределены. В свою очередь, когда в вашем приложении происходят некоторые действия, они могут быть выполнены с использованием этих жестов.

"Захват" и "Сброс"

Для начала рассмотрим жест захвата объекта с экрана. Перед началом выполнения этого жеста пользователь должен принять позу, в которой его большой палец и другие пальцы разъединены, как показано на рисунке 4а, следующим жестом все пальцы соединяются вместе в позу захвата (рисунок 4б). Обратные действия - разъединение пальцев отпускают объект. Жесты захвата и сброса могут быть реализованы через параметр "открытости" ладони (значения от 0 до 100 указывают уровень открытости ладони) и нахождение кончиков пальцев (например, LABEL_FINGER_THUMB, LABEL_FINGER_INDEX). Для более точного определения, могут быть также найдены вершина, середина и низ руки (например, LABEL_HAND_MIDDLE).

Поза захвата (4а - подготовка к захвата, все пальцы разъединены; 4б - поза захвата, все пальцы вместе)

Рис. 4.4. Поза захвата (4а - подготовка к захвата, все пальцы разъединены; 4б - поза захвата, все пальцы вместе)

Движение

После захвата объекта пользователь передвигает руку для перемещения объекта.

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

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

Функция перемещения может быть реализована через отслеживание руки со значением открытости, указывающее на ее закрытость ( рис. 4.5).

Пользователь перемещает объект

Рис. 4.5. Пользователь перемещает объект

Панорамирование

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

Панорамирование

Рис. 4.6. Панорамирование

Масштабирование

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

Масштабирование

Рис. 4.7. Масштабирование

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

Помахивание

При этом жесте, пользователь быстро машет рукой ( рис. 4.8). Жест может применяться для сброса, выхода из режима, либо для передвижения вверх по иерархии меню. Другими словами, что бы описать главную цель жеста, его можно назвать как жест "Забери меня отсюда". В SDK его можно найти по атрибуту LABEL_HAND_WAVE.

Жест волна

Рис. 4.8. Жест волна

Круг

Жест круг LABEL_HAND_CIRCLE выполняется следующим образом, пользователь соединяет все пальцы и двигает рукой по кругу ( рис. 4.9). Жест может быть использован для выбора или сброса, например.

Жест круг

Рис. 4.9. Жест круг

Скольжение

Скольжение является основным жестом навигации. Тем не менее, технически сложно точно распознать жест скольжения. Различают скольжение как слева направо, так и справа налево. Также выделяют скольжение снизу вверх и сверху вниз. В SDK их можно найти, как LABEL_NAV_SWIPE_LEFT, LABEL_NAV_SWIPE_RIGHT, LABEL_NAV_SWIPE_UP и LABEL_NAV_SWIPE_DOWN, соответственно.

Чтобы избежать путаницы, пользователь должен выполнить жест скольжения следующим образом:

Представим, что существует виртуальная плоскость на расстоянии около 12 см. от камеры. Скольжение должно осуществляться по плоскости, а затем необходимо покинуть плоскость.

Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко