СТАНДАРТНЫЕ ЖЕСТЫ
STANDARD GESTURES

УРОВЕНЬ ТЕХНИКИ
Многие компьютерные прикладные программы, такие как компьютерные игры, мультимедийные приложения, офисные прикладные программы и т.п., используют управляющие действия, чтобы дать возможность пользователям управлять игровыми персонажами или другими аспектами прикладной программы. Обычно такие управляющие действия представляют собой ввод с использованием, например, контроллеров, пультов дистанционного управления, клавиатуры, мыши и т.п. К сожалению, такие управляющие действия могут быть сложными для изучения и тем самым создают барьер между пользователем и такими играми и прикладными программами. Кроме того, такие управляющие действия могут отличаться от фактических игровых действий или других действий прикладной программы, для которых используются управляющие действия. Например, игровое управляющее действие, которое заставляет игрового персонажа размахнуться бейсбольной битой, может не соответствовать фактическому движению размаха бейсбольной битой.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Здесь раскрыты системы и способы для приема данных, отражающих скелетное движение пользователя, и определения на основе этих данных, выполнил ли пользователь один или более жестов. Раскрыты пакеты стандартных жестов, из которых разработчики приложений могут встраивать распознавание жестов в свои прикладные программы.
В иллюстративном варианте воплощения библиотека жестов содержит множество жестов. Когда эти жесты являются комплементарными друг с другом, они могут быть сгруппированы в пакеты жестов. Затем эти пакеты жестов обеспечиваются прикладным программам для использования посредством механизма распознавания жестов. Прикладная программа может использовать один или более пакетов жестов.
Прикладная программа может присвоить значение первому параметру жеста, например минимальный порог скорости движения руки, который должен быть достигнут для распознавания жеста броска футбольного мяча. Механизм распознавания устанавливает первый параметр равным значению, а также устанавливает значение любых других параметров этого жеста или любых других жестов в пакете жестов, которые зависят от значения первого жеста. Например, когда пакет жестов представляет собой пакет жестов спортивных игр, который включает в себя жест броска футбольного мяча, пакет также может включать в себя жест кервбол в бейсболе и жест фастбол в бейсболе, которые взаимосвязаны с жестом броска футбольного мяча. Когда было определено, что жест кервбол в бейсболе должен иметь минимальный порог скорости движения руки 80% и жест фастбол в бейсболе должен иметь минимальный порог скорости движения руки 90% от жеста броска футбольного мяча, тогда эти параметры могут быть установлены равными 80% и 90% от значения соответственно.
Специалисты в области техники могут понять, что один или более различных аспектов раскрытия могут включать в себя, но без ограничения, схемы и/или программы для осуществления приведенных здесь аспектов настоящего раскрытия; схемы и/или программы могут представлять собой практически любую комбинацию аппаратных средств, программного обеспечения и/или встроенного программного обеспечения, выполненную с возможностью осуществлять приведенные здесь аспекты в зависимости от выбора конфигурации разработчика системы.
Предшествующее описание представляет собой описание сущности изобретения и, таким образом, по необходимости содержит упрощения, обобщения и опускание подробностей. Специалисты в области техники поймут, что описание сущности изобретения является лишь иллюстративным и не предназначено для каких-либо ограничений.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Системы, способы и машиночитаемые носители для пакетов жестов комплементарных жестов в соответствии с этой спецификацией описаны далее со ссылкой на сопроводительные чертежи.
Фиг. 1A и 1B показывают иллюстративный вариант воплощения системы распознавания, анализа и отслеживания цели с пользователем, играющим в игру.
Фиг. 2 показывает иллюстративный вариант воплощения устройства захвата, которое может использоваться в системе распознавания, анализа и отслеживания цели.
Фиг. 3A показывает иллюстративный вариант воплощения вычислительной среды, которая может использоваться для интерпретации одного или более жестов в системе распознавания, анализа и отслеживания цели.
Фиг. 3B показывает другой иллюстративный вариант воплощения вычислительной среды, которая может использоваться для интерпретации одного или более жестов в системе распознавания, анализа и отслеживания цели.
Фиг. 4A иллюстрирует скелетное отображение пользователя, которое было формировано из системы распознавания, анализа и отслеживания цели, показанной на фиг. 2.
Фиг. 4B иллюстрирует дополнительные подробные сведения архитектуры устройства распознавания жестов, показанной на фиг. 2.
Фиг. 5A и 5B иллюстрируют, как фильтры жестов могут быть расположены в стеке для создания более сложных фильтров жестов.
Фиг. 6A, 6B, 6C, 6D и 6E показывают иллюстративный жест, который пользователь 502 может сделать для сообщения о приеме "fair catch" в футбольной видеоигре.
Фиг. 7A, 7B, 7C, 7D и 7E показывают иллюстративный жест "fair catch", показанный на фиг. 6A-E, когда каждый кадр данных изображения был интерпретирован для получения скелетного отображения пользователя.
Фиг. 8 иллюстрирует, как универсальные жесты из библиотеки жестов группируются в пакеты жанров комплементарных жестов для конкретной задачи.
Фиг. 9 показывает иллюстративные операционные процедуры для настройки комплементарных жестов в пакете жестов, когда прикладная программа обеспечивает значение для одного параметра одного жеста.
ПОДРОБНОЕ ОПИСАНИЕ ИЛЛЮСТРАТИВНЫХ ВАРИАНТОВ ВОПЛОЩЕНИЯ
Как будет здесь описано, пользователь может управлять прикладной программой, исполняющейся в вычислительной среде, такой как игровая консоль, компьютер и т.п., посредством выполнения одного или более жестов. В соответствии с одним вариантом воплощения жесты могут быть приняты, например, посредством устройства захвата. Например, устройство захвата может захватывать изображение глубины сцены. В одном варианте воплощения устройство захвата может определять, соответствует ли одна или более целей или объектов в сцене человеческой цели, такой как пользователь. Чтобы определить, соответствует ли цель или объект в сцене человеческой цели, каждая из целей может быть заполнено сплошной заливкой и сравнено с образцом модели человеческого тела. Каждая цель или объект, которые совпадают с моделью человеческого тела, затем могут быть просканированы для формирования относящейся к ним скелетной модели. Затем скелетная модель может быть предоставлена вычислительной среде, с тем чтобы вычислительная среда могла отслеживать скелетную модель, воспроизводить видеообраз, связанный со скелетной моделью, и могла определять, какие управляющие действия следует выполнять в прикладной программе, исполняющейся в вычислительной среде, например, на основе жестов пользователя, которые были распознаны из скелетной модели. Механизм устройства распознавания жестов, архитектура которого описана более полно ниже, используется для определения, когда пользователем был сделан конкретный жест.
Фиг. 1A и 1B показывают иллюстративный вариант воплощения конфигурации системы 10 распознавания, анализа и отслеживания цели с пользователем 18, играющим в игру, имитирующую бокс. В иллюстративном варианте воплощения система 10 распознавания, анализа и отслеживания цели может использоваться для распознавания, анализа и/или отслеживания человеческой цели, такой как пользователь 18.
Как показано на фиг. 1A, система 10 распознавания, анализа и отслеживания цели может включать в себя вычислительную среду 12. Вычислительная среда 12 может представлять собой компьютер, игровую систему или консоль и т.п. В соответствии с иллюстративным вариантом воплощения вычислительная среда 12 может включать в себя аппаратные компоненты и/или программные компоненты, с тем чтобы вычислительная среда 12 могла использоваться для исполнения прикладных программ, таких как игровые прикладные программы, неигровые прикладные программы и т.п.
Как показано на фиг. 1A, система 10 распознавания, анализа и отслеживания цели также может включать в себя устройство 20 захвата. Устройство 20 захвата может представлять собой, например, камеру, которая может использоваться для визуального слежения за одним или более пользователями, такими как пользователь 18, таким образом, чтобы жесты, выполненные одним или более пользователями, могли быть захвачены, проанализированы и отслежены для выполнения одного или более управляющих действий в пределах прикладной программы, как будет описано более подробно ниже.
В соответствии с одним вариантом воплощения система 10 распознавания, анализа и отслеживания цели может быть соединена с аудиовизуальным устройством 16, таким как телевизор, монитор, телевизор с высоким разрешением (HDTV) и т.п., которое может обеспечить визуальную и звуковую информацию игры или прикладной программы пользователю, такому как пользователь 18. Например, вычислительная среда 12 может включать в себя видеоадаптер, такой как видеокарта и/или звуковой адаптер, такой как звуковая карта, которые могут обеспечить аудиовизуальные сигналы, относящиеся к игровой прикладной программе, неигровой прикладной программе и т.п. Аудиовизуальное устройство 16 может принимать аудиовизуальные сигналы от вычислительной среды 12 и затем может выводить визуальную и/или звуковую информацию игры или прикладной программы, относящуюся к аудиовизуальным сигналам, пользователю 18. В соответствии с одним вариантом воплощения аудиовизуальное устройство 16 может быть соединено с вычислительной средой 12, например, через кабель S-Video, коаксиальный кабель, кабель HDMI, кабель DVI, кабель VGA и т.п.
Как показано на фиг. 1A И 1B, система 10 распознавания, анализа и отслеживания цели может использоваться для распознавания, анализа и/или отслеживания человеческой цели, такой как пользователь 18. Например, пользователь 18 может быть отслежен с использованием устройства 20 захвата таким образом, что движения пользователя 18 могут быть интерпретированы как управляющие действия, которые могут использоваться для воздействия на прикладную программу, исполняемую компьютерной средой 12. Таким образом, в соответствии с одним вариантом воплощения пользователь 18 может совершать движения своим телом для управления прикладной программой.
Как показано на фиг. 1A и 1B, в иллюстративном варианте воплощения прикладная программа, исполняющаяся в вычислительной среде 12, может представлять собой игру, имитирующую бокс, в которую может играть пользователь 18. Например, вычислительная среда 12 может использовать аудиовизуальное устройство 16 для обеспечения визуального представления боксирующего противника 22 пользователю 18. Вычислительная среда 12 также может использовать аудиовизуальное устройство 16 для обеспечения визуального представления видеообраза 24 игрока, которым пользователь 18 может управлять с помощью своих движений. Например, как показано на фиг. 1B, пользователь 18 может нанести удар в физическом пространстве, чтобы заставить видеообраз 24 игрока нанести удар в игровом пространстве. Таким образом, в соответствии с иллюстративным вариантом воплощения компьютерная среда 12 и устройство 20 захвата системы 10 распознавания, анализа и отслеживания цели могут использоваться для распознавания и анализа удара пользователя 18 в физическом пространстве таким образом, чтобы удар мог быть интерпретирован как игровое управляющее действие видеообраза 24 игрока в игровом пространстве.
Другие движения пользователя 18 также могут быть интерпретированы как другие управляющие действия, такие как управляющие действия для подскока, покачивания, уклона, удара по корпусу или нанесения различных по мощности ударов. Кроме того, некоторые движения могут быть интерпретированы как управляющие действия, которые могут соответствовать действиям, отличающимся от управления видеообразом 24 игрока. Например, игрок может использовать движения для завершения, приостановки или сохранения игры, выбора уровня, просмотра таблицы рекордов, общения с другом и т.д.
В иллюстративных вариантах воплощения человеческая цель, такая как пользователь 18, может иметь объект. В таких вариантах воплощения пользователь электронной игры может держать объект, таким образом, движения игрока и объекта могут использоваться для корректировки и/или управления параметрами игры. Например, движение игрока, держащего ракетку, может быть отслежено и использовано для управления экранной ракеткой в электронной спортивной игре. В другом иллюстративном варианте воплощения движение игрока, держащего объект, может быть отслежено и использовано для управления экранным оружием в электронной боевой игре.
В соответствии с другими иллюстративными вариантами воплощения система 10 распознавания, анализа и отслеживания цели также может использоваться для интерпретации движений цели в качестве управляющих действий операционной системы и/или прикладной программы, которые находятся вне области игр. Например, фактически любым управляемым аспектом операционной системы и/или прикладной программы можно управлять посредством движений цели, такой как пользователь 18.
Фиг. 2 показывает иллюстративный вариант воплощения устройства 20 захвата, которое может использоваться в системе 10 распознавания, анализа и отслеживания цели. В соответствии с иллюстративным вариантом воплощения устройство 20 захвата может быть выполнено с возможностью захватывать видеоинформацию с информацией глубины, включающую в себя изображение глубины, которое может включать в себя значения глубины посредством любой подходящей методики, в том числе, например, времени прохождения, структурированного освещения, стереоскопического изображения и т.п. В соответствии с одним вариантом воплощения устройство 20 захвата может организовать вычисленную информацию глубины в "уровни по оси Z", или уровни, которые могут быть перпендикулярны по отношению к оси Z, простирающейся от камеры вдоль ее луча обзора.
Как показано на фиг. 2, устройство 20 захвата может включать в себя компонент 22 камеры изображения. В соответствии с иллюстративным вариантом воплощения компонент 22 камеры изображения может представлять собой камеру глубины, которая может захватывать изображение глубины сцены. Изображение глубины может включать в себя двухмерную (2D) область пикселей захваченной сцены, где каждый пиксель в двухмерной области пикселей может представлять длину, например, в сантиметрах, миллиметрах и т.п. от камеры до объекта в захваченной сцене.
Как показано на фиг. 2, в соответствии с иллюстративным вариантом воплощения компонент 22 камеры изображения может включать в себя компонент 24 инфракрасного (IR) освещения, трехмерную (3D) камеру 26 и RGB-камеру 28, которые могут использоваться для захвата изображения глубины сцены. Например, при анализе по методике времени прохождения компонент 24 инфракрасного освещения устройства 20 захвата может испускать на сцену инфракрасный свет и затем может использовать датчики (не показаны) для обнаружения отраженного света от поверхности одной или более целей и объектов в сцене с использованием, например, трехмерной камеры 26 и/или RGB-камеры 28. В некоторых вариантах воплощения может использоваться импульсный инфракрасный свет, с тем чтобы время между импульсом уходящим исходящего света и соответствующим импульсом входящего света могло быть измерено и использовано для определения физического расстояния от устройства 20 захвата до конкретного местоположения на целях или объектах в сцене. Кроме того, в других иллюстративных вариантах воплощения фаза исходящей световой волны может быть сравнена с фазой входящей световой волны для определения сдвига фазы. Сдвиг фазы может затем использоваться для определения физического расстояния от устройства захвата до конкретного местоположения на целях или объектах.
В соответствии с другим иллюстративным вариантом воплощения анализ по методике времени прохождения может использоваться для косвенного определения физического расстояния от устройства 20 захвата до конкретного местоположения на целях или объектах посредством анализа интенсивности отраженного луча света в течение времени посредством различных методик, в том числе, например, формирования изображений с помощью прерывистых световых импульсов.
В другом иллюстративном варианте воплощения устройство 20 захвата может использовать структурированный свет для захвата информацию глубины. При таком анализе структурированный свет (то есть, свет, отображаемый с известным рисунком, таким как сетчатый рисунок или рисунок в полоску) может быть спроецирован на сцену, например, через компонент 24 инфракрасного освещения. После столкновения с поверхностью одной или более целей или объектов в сцене рисунок может в ответ стать деформированным. Такая деформация рисунка может быть захвачена, например, трехмерной камерой 26 и/или RGB-камерой 28 и затем может быть проанализирована для определения физического расстояния от устройства захвата до конкретного местоположения на целях или объектах.
В соответствии с другим вариантом воплощения устройство 20 захвата может включать в себя две или более физически разнесенных камеры, которые могут обозревать сцену с разных углов, для получения визуальные стереоскопических данных, которые могут быть проанализированы для формирования информации глубины.
Устройство 20 захвата может также включать в себя микрофон 30. Микрофон 30 может включать в себя преобразователь или датчик, который может принимать и преобразовывать звук в электрический сигнал. В соответствии с одним вариантом воплощения микрофон 30 может использоваться для уменьшения обратной связи между устройством 20 захвата и вычислительной средой 12 в системе 10 распознавания, анализа и отслеживания цели. Кроме того, микрофон 30 может использоваться для приема аудиосигналов, которые также могут быть выданы пользователем для управления прикладными программами, такими как игровые прикладные программы, неигровые прикладные программы и т.п., которые могут исполняться вычислительной средой 12.
В иллюстративном варианте воплощения устройство 20 захвата может также включать в себя процессор 32, который может быть связан с возможностью взаимодействия с компонентом 22 камеры изображения. Процессор 32 может включать в себя стандартизированный процессор, специализированный процессор, микропроцессор и т.п., которые могут исполнять команды, которые могут включать в себя команды для приема изображения глубины, определения, может ли подходящая цель быть включена в изображение глубины, преобразования подходящей цели в скелетное представление или модель цели или любую другую подходящую команду.
Устройство 20 захвата может также включать в себя компонент 34 памяти, который может хранить команды, которые могут быть исполнены процессором 32, изображения или кадры изображений, захваченных трехмерной камерой или RGB-камерой, или любую другую подходящую информацию, изображения и т.п. В соответствии с иллюстративным вариантом воплощения компонент 34 памяти может включать в себя оперативное запоминающее устройство (ОЗУ; RAM), постоянное запоминающее устройство (ПЗУ; ROM), кэш-память, флэш-память, жесткий диск или любой другой подходящий компонент памяти. Как показано на фиг. 2, в одном варианте воплощения компонент 34 памяти может представлять собой отдельный компонент, соединенный с компонентом 22 захвата изображения и процессором 32. В соответствии с другим вариантом воплощения компонент 34 памяти может быть интегрирован в процессор 32 и/или компонент 22 захвата изображения.
Как показано на фиг. 2, устройство 20 захвата может взаимодействовать с вычислительной средой 12 через линию 36 связи. Линия 36 связи может представлять собой проводное соединение, в том числе, например, соединение USB, соединение шины FireWire, кабельным соединением Ethernet и т.п. и/или беспроводным соединением, таким как беспроводное соединение стандартов 802.11b, g, a или n. В соответствии с одним вариантом воплощения вычислительная среда 12 может обеспечить отсчет времени устройству 20 захвата, которое может использоваться для определения, когда следует выполнять захват, например, сцены через линию 36 связи.
Кроме того, устройство 20 захвата может предоставлять информацию глубины и изображения, захваченные, например, посредством трехмерной камеры 26 и/или RGB-камеры 28, и скелетную модель, которая может быть сформирована устройством 20 захвата, вычислительной среде 12 через линию 36 связи. Вычислительная среда 12 затем может использовать скелетную модель, информацию глубины и захваченные изображения, например, для распознавания жестов пользователя и ответного управления прикладной программой, такой как игра или текстовой процессор. Например, как показано на фиг. 2, вычислительная среда 12 может включать в себя механизм 290 распознавания жестов. Механизм 190 распознавания жестов может включать в себя коллекцию фильтров жестов, каждый из которых содержит информацию относительно жеста, который может быть выполнен посредством скелетной модели (по мере движения пользователя). Данные, захваченные камерами 26, 28 и устройством 20, в виде скелетной модели и относящиеся к ней движения могут быть сравнены с фильтрами жестов в механизме 190 распознавания жестов, чтобы идентифицировать, когда пользователь (представленный скелетной моделью) выполнил один или более жестов. Эти жесты могут относиться к различным управляющим действиям прикладной программы. Таким образом, вычислительная среда 12 может использовать механизм 190 распознавания жестов для интерпретации движений скелетной модели и управления прикладной программой на основе движений.
Фиг. 3A показывает иллюстративный вариант воплощения вычислительной среды, которая может использоваться для интерпретации одного или более жестов в системе распознавания, анализа и отслеживания цели. Вычислительная среда, такая как вычислительная среда 12, описанная выше со ссылкой на фиг. 1A-2, может представлять собой мультимедийную консоль 100, такую как игровая консоль. Как показано на фиг. 3A, мультимедийная консоль 100 имеет центральный процессор (CPU) 101, имеющий кэш 102 уровня 1, кэш 104 уровня 2 и перепрограммируемое постоянное запоминающее устройство (ROM) 106. Кэш 102 уровня 1 и кэш 104 уровня 2 временно хранят данные и поэтому сокращают количество циклов доступа к памяти, тем самым увеличивая скорость и пропускную способность обработки. Может быть обеспечен центральный процессор 101, имеющий более одного ядра и, таким образом, дополнительные кэши 102 и 104 уровня 1 и уровня 2. Перепрограммируемое запоминающее устройство 106 может сохранить исполняемый код, который загружается во время начальной фазы процесса загрузки, когда мультимедийная консоль 100 включается.
Графический процессор (GPU) 108 и видео-кодер / видео-кодек (кодер/декодер) 114 образуют конвейер обработки видеоинформации для высокоскоростной обработки графики с высоким разрешением. Данные переносятся от графического процессора 108 на видео-кодер / видео-кодек (кодер/декодер) 114 через шину. Конвейер обработки видеоинформации выдает данные на аудио/видео (A/V) порт 140 для передачи на телевизор или другой дисплей. Контроллер 110 памяти соединен с графическим процессором 108 для обеспечения доступа процессора к памяти 112 различных типов, такой как, но без ограничения, оперативное запоминающее устройство (ОЗУ; RAM).
Мультимедийная консоль 100 включает в себя контроллер 120 ввода-вывода (I/O), контроллер 122 управления системой, блок 123 обработки аудиоинформации, контроллер 124 сетевого интерфейса, первый ведущий контроллер 126 USB, второй контроллер 128 USB и подсистему 130 ввода-вывода передней панели, которые предпочтительно реализованы на модуле 118. Контроллеры 126 и 128 USB служат хостами для контроллеров 142(1)-142(2) ввода-вывода, адаптера 148 беспроводной связи и внешнего устройства 146 памяти (например, флэш-памяти, внешнего диска CD/DVD ROM, сменного носителя и т.д.). Сетевой интерфейс 124 и/или адаптер 148 беспроводной связи обеспечивает доступ к сети (например, сети Интернет, домашней сети и т.д.) и может представлять собой любой из широкого разнообразия компонентов различных проводных или беспроводных адаптеров, в том числе карту Ethernet, модем, модуль технологии Bluetooth, кабельный модем и т.п.
Системная память 143 обеспечена для хранения данных прикладных программ, которые загружаются во время процесса загрузки. Обеспечен дисковод 144, который может содержать дисковод DVD/CD дисков, накопитель на жестком диске или другой дисковод для сменных носителей и т.д. Дисковод 144 может быть внутренним или внешним по отношению к мультимедийной консоли 100. Посредством мультимедийной консоли 100 через дисковод 144 можно получить доступ к данным прикладной программы для исполнения, воспроизведения и т.д. Дисковод 144 соединен с контроллером 120 ввода-вывода через шину, такую как шина интерфейса Serial ATA или другое высокоскоростное соединение (например, соединение стандарта IEEE 1394).
Контроллер 122 управления системой обеспечивает множество служебных функций, связанных с гарантией доступности мультимедийной консоли 100. Блок 123 обработки аудиоинформации и аудио-кодек 132 образуют соответствующий конвейер обработки аудиоинформации с высокой точностью и обработкой стерео. Звуковые данные переносятся между блоком 123 обработки аудиоинформации и аудиокодеком 132 через линию связи. Конвейер обработки аудиоинформации выдает данные на порту 140 A/V для воспроизведения посредством внешнего аудиопроигрывателя или устройства, имеющего возможности воспроизведения звука.
Подсистема 130 ввода-вывода передней панели поддерживает функциональные возможности кнопки 150 включения питания и кнопки 152 выброса, а также любые светодиоды (LED) или другие индикаторы, представленные на внешней поверхности мультимедийной консоли 100. Системный модуль 136 источника питания обеспечивает электропитание компонентам мультимедийной консоли 100. Вентилятор 138 охлаждает схемы в пределах мультимедийной консоли 100.
Центральный процессор 101, графический процессор 108, контроллер 110 памяти и различные другие компоненты в пределах мультимедийной консоли 100 связаны между собой через одну или более шин, в том числе последовательные и параллельные шины, шину памяти, шину периферийных устройств и процессорную или локальную шину с использованием любой из множества шинных архитектур. В качестве примера такая архитектура может включать в себя шину соединения периферийных устройств (стандарт PCI), шину стандарта PCI-Express и т.д.
Когда мультимедийная консоль 100 включается, данные прикладной программы могут быть загружены из системной памяти 143 в память 112 и/или кэши 102, 104 и исполнены на центральном процессоре 101. Прикладная программа может предоставить графический пользовательский интерфейс, который обеспечивает единообразный пользовательский интерфейс при навигации по информационному содержанию различных видов, доступному на мультимедийной консоли 100. При работе прикладные программы и/или другое информационное содержание, содержащиеся в дисководе 144, могут быть запущены или воспроизведены с дисковода 144 для обеспечения дополнительных функциональных возможностей мультимедийной консоли 100.
Мультимедийную консоль 100 можно использовать как автономную систему посредством простого соединения системы с телевизором или другим дисплеем. В этом автономном режиме мультимедийная консоль 100 позволяет одному или более пользователям взаимодействовать с системой, смотреть кино или слушать музыку. Однако при интеграции широкополосной связи, доступной через сетевой интерфейс 124 или адаптер 148 беспроводной связи, мультимедийную консоль 100 также можно использовать в качестве компонента большего сетевого сообщества.
Когда мультимедийная консоль 100 включается, установленное количество аппаратных ресурсов резервируется для системного использования операционной системой мультимедийной консоли. Эти ресурсы могут включать в себя резервирование памяти (например, 16 МБ), циклы центрального процессора и графического процессора (например, 5 %), ширину сетевой полосы пропускания (например, 8 КБ) и т.д. Поскольку эти ресурсы резервируются во время загрузки системы, зарезервированные ресурсы не существуют с точки зрения прикладной программы.
В частности, резервирование памяти предпочтительно является достаточно большим, чтобы содержать ядро запуска, параллельные системные прикладные программы и драйверы. Резервирование центрального процессора является предпочтительно постоянным, поэтому если зарезервированная загрузка центрального процессора не используется системными прикладными программами, неактивный поток будет потреблять любые неиспользованные циклы.
Что касается резервирования графического процессора, простые сообщения, сформированные системными прикладными программами (например, всплывающие окна), отображаются посредством использования прерывания графического процессора, чтобы запланировать код для реализации всплывающего окна в оверлей. Объем памяти, требуемый для оверлея, зависит от размера области оверлея, и оверлей предпочтительно масштабируется в зависимости от разрешающей способности экрана. Когда параллельной системной прикладной программой используется полный пользовательский интерфейс, предпочтительно использовать разрешающую способность, независимую от разрешающей способности прикладной программы. Делитель частоты может использоваться для установления этой разрешающей способности таким образом, чтобы избавиться от необходимости изменять частоту и вызывать ресинхронизацию телевизионного сигнала.
После того как мультимедийная консоль 100 загружена и системные ресурсы зарезервированы, исполняются параллельные системные прикладные программы для обеспечения системных функциональных возможностей. Системные функциональные возможности инкапсулированы во множестве системных прикладных программ, которые исполняются в зарезервированных системных ресурсах, описанных выше. Ядро операционной системы идентифицирует потоки, которые представляют собой системные потоки прикладных программ и потоки игровых прикладных программ. Системные прикладные программы предпочтительно планируются для выполнения на центральном процессоре 101 в предопределенные моменты времени и интервалы для обеспечения согласованного отображения системных ресурсов прикладной программе. Планирование должно минимизировать разрушение кэша для игровой прикладной программы, работающей на консоли.
Когда параллельной системной прикладной программе требуется аудиоинформация, обработка аудиоинформации планируется асинхронно с игровой прикладной программой из-за чувствительности по времени. Менеджер прикладных программ мультимедийной консоли (описанный ниже) управляет уровнем аудиоинформации игровой прикладной программы (например, заглушает, ослабляет), когда системные прикладные программы являются активными.
Устройства ввода данных (например, контроллеры 142(1) и 142(2)) совместно используются игровыми прикладными программами и системными прикладными программами. Устройства ввода данных не являются зарезервированными ресурсами, но должны переключаться между системными прикладными программами и игровой прикладной программой таким образом, чтобы каждая из них имела фокус ввода устройства. Менеджер прикладных программ предпочтительно управляет переключением входного потока, не зная о том, какой информацией располагает игровая прикладная программа, и драйвер поддерживает информацию состояния относительно переключения фокуса ввода. Камеры 26, 28 и устройство 20 захвата могут определять дополнительные устройства ввода данных для консоли 100.
Фиг. 3B иллюстрирует другой иллюстративный вариант воплощения вычислительной среды 220, которая может представлять собой вычислительную среду 12, показанную на фиг. 1A-2, используемую для интерпретации одного или более жестов в системе распознавания, анализа и отслеживания цели. Среда 220 вычислительной системы является только одним примером подходящей вычислительной среды и не предназначена для введения какого-либо ограничения относительно объема или функциональных возможностей раскрываемой сущности изобретения. Никто не должен интерпретировать вычислительную среду 220 как имеющую какую-либо зависимость или требования, относящиеся к любому одному компоненту или комбинации компонентов, показанных в иллюстративной среде 220. В некоторых вариантах воплощения различные изображенные вычислительные элементы могут включать в себя схему, выполненную в возможностью реализовывать конкретные аспекты настоящего раскрытия. Например, термин "схема", используемый в раскрытии, может включать в себя специализированные аппаратные компоненты, выполненные с возможностью выполнять функцию (функции) посредством встроенного программного обеспечения или переключателей. В других приведенных в качестве примера вариантах воплощения термин "схема" может включать в себя процессор общего назначения, память и т.д., выполненные посредством программных команд, которые воплощают логическую схему, действующую для выполнения функции (функций). В иллюстративных вариантах воплощения, когда схема включает в себя комбинацию аппаратных средств и программного обеспечения, разработчик может написать исходный код, воплощающий логическую схему, и исходный код может быть скомпилирован в машиночитаемый код, который может быть обработан посредством процессора общего назначения. Поскольку специалист может понять, что область техники развилась до такого состояния, когда имеется мало различий между аппаратными средствами, программным обеспечением или комбинацией аппаратных средств/программного обеспечения, выбор между аппаратными средствами и программным обеспечением для совершения заданных функций представляет собой выбор конфигурации, оставленный разработчику. Более определенно, специалист в области техники может понять, что программный процесс может быть преобразован в эквивалентную аппаратную структуру и аппаратная структура сама может быть преобразована в эквивалентный программный процесс. Таким образом, выбор между аппаратной реализацией и программной реализацией представляет собой выбор конфигурации и оставлен конструктору.
На фиг. 3B вычислительная среда 220 содержит компьютер 241, который обычно содержит разные машиночитаемые носители. Машиночитаемые носители могут представлять собой любые имеющиеся носители, к которым можно получить доступ с помощью компьютера 241, и включают в себя как энергозависимые, так и энергонезависимые носители, сменные и несменные носители. Системная память 222 включает в себя компьютерные носители данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ROM; ПЗУ) 223 и оперативное запоминающее устройство (RAM; ОЗУ) 260. Базовая система 224 ввода-вывода (BIOS), содержащая базовые подпрограммы, которые помогают перемещать информацию между элементами в компьютере 241, например, во время запуска, обычно хранится в постоянном запоминающем устройстве (ROM; ПЗУ) 223. Оперативное запоминающее устройство (RAM; ОЗУ) 260 обычно содержит данные и/или программные модули, которые являются моментально доступными для процессора 259 и/или которые в данный момент обрабатываются процессором 259. В качестве примера, но не ограничения, фиг. 3B иллюстрирует операционную систему 225, прикладные программы 226, другие программные модули 227 и программные данные 228.
Компьютер 241 также может включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Только в качестве примера фиг. 3B иллюстрирует накопитель 238 на жестких дисках, который считывает или записывает на несменный энергонезависимый магнитный носитель, магнитный дисковод 239, который считывает или записывает на сменный энергонезависимый магнитный диск 254, и оптический дисковод 240, который считывает или записывает на сменный энергонезависимый оптический диск 253, такой как постоянное запоминающее устройство на компакт-диске (CD ROM) или другой оптический носитель. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в иллюстративной операционной среде, включают в себя, но без ограничения, кассеты магнитной ленты, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.п. Накопитель 238 на жестких дисках обычно соединен с системной шиной 221 через интерфейс несменной памяти, такой как интерфейс 234, и магнитный дисковод 239 и оптический дисковод 240 обычно соединены с системной шиной 221 посредством интерфейса сменной памяти, такого как интерфейс 235.
Дисковые накопители и связанные с ними компьютерные носители данных, описанные выше и проиллюстрированные на фиг. 3B, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 241. На фиг. 3B, например, накопитель 238 на жестких дисках проиллюстрирован как содержащий операционную систему 258, прикладные программы 257, другие программные модули 256 и программные данные 255. Следует отметить, что эти компоненты могут быть либо теми же самыми, либо отличными от операционной системы 225, прикладных программ 226, других программных модулей 227 и программных данных 228. Операционной системе 258, прикладным программам 257, другим программным модулям 256 и программным данным 255 здесь даны другие номера, чтобы проиллюстрировать, что они как минимум являются другими копиями. Пользователь может вводить команды и информацию в компьютер 241 через устройства ввода данных, такие как клавиатура 251 и координатно-указательное устройство 252, обычно называемые мышью, шаровым манипулятором или сенсорной клавиатурой. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода данных часто соединены с процессором 259 через интерфейс 236 пользовательского ввода, который присоединен к системной шине, но могут быть соединены другими интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Камеры 26, 28 и устройство 20 захвата могут определить дополнительные устройства ввода данных для консоли 100. Монитор 242 или устройство отображения другого типа также соединены с системной шиной 221 через интерфейс, такой как видеоинтерфейс 232. В дополнение к монитору компьютеры также могут включать в себя другие периферийные устройства вывода, такие как динамики 244 и принтер 243, который может быть соединен через интерфейс 233 периферийного устройства вывода.
Компьютер 241 может работать в сетевом окружении, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 246. Удаленный компьютер 246 может являться персональным компьютером, сервером, маршрутизатором, сетевым персональным компьютером, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше относительно компьютера 241, хотя на фиг. 3B было проиллюстрировано только устройство 247 памяти. Логические соединения, изображенные на фиг. 3B, включают в себя локальную сеть (LAN) 245 и глобальную сеть (WAN) 173, но также могут включать в себя другие сети. Такие сетевые среды являются обычным явлением в офисах, в компьютерных сетях масштаба предприятия, в интрасетях и в Интернете.
При использовании в среде локальной сети компьютер 241 соединен с локальной сетью 245 через сетевой интерфейс или адаптер 237. При использовании в среде глобальной сети компьютер 241 обычно включает в себя модем 250 или другое средство для установления связи по глобальной сети 249, такой как Интернет. Модем 250, который может быть внутренним или внешним, может быть соединен с системной шиной 221 через интерфейс 236 пользовательского ввода или другой соответствующий механизм. В сетевом окружении программные модули, изображенные относящимися к компьютеру 241, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, фиг. 3B иллюстрирует удаленные прикладные программы 248 как находящиеся в запоминающем устройстве 247. Следует понимать, что показанные сетевые соединения являются иллюстративными и могут быть использованы другие средства установления линии связи между компьютерами.
Фиг. 4A изображает иллюстративное скелетное отображение пользователя, которое может быть формировано из устройства 20 захвата. В этом варианте воплощения идентифицировано множество суставов и костей: каждая кисть 302 руки, каждое предплечье 304, каждый локоть 306, каждый бицепс 308, каждое плечо 310, каждый бедренный сустав 312, каждое бедро 314, каждое колено 316, каждая голень 318, каждая ступня 320, голова 322, туловище 324, верх 326 и низ 328 позвоночника и талия 330. Когда отслеживается больше точек, могут быть идентифицированы дополнительные признаки, такие как кости и суставы пальцев рук или ног или отдельные признаки лица, такие как нос и глаза.
Выполняя движения своим телом, пользователь может создать жесты. Жест содержит движение или позу пользователя, которые могут быть захвачены в качестве данные изображения и проанализированы на значение. Жест может быть динамическим, содержащим движение, например имитация броска мяча. Жест может представлять собой статическую позу, например, удерживание скрещенных предплечий 304 перед туловищем 324. Жест также может включать в себя реквизит, например взмах бутафорским мечом. Жест может содержать более одной части тела, например хлопанье в ладоши кистями 302 рук вместе, или более тонкое движение, например поджимание губ.
Жесты могут использоваться для ввода в общем контексте вычислительных устройств. Например, различные движения кистей 302 рук или других частей тела могут соответствовать задачам общесистемного уровня, например перемещению вверх или вниз в иерархическом списке, открытию файла, закрытию файла и сохранению файла. Жесты также могут использоваться в контексте, специфическом для видеоигр, в зависимости от игры. Например, в игре с имитацией вождения различные движения кистей 302 рук и ступней 320 могут соответствовать рулевому управлению транспортным средством в том или ином направлении, переключению сцепления, ускорению и торможению.
Пользователь может сформировать жест, который соответствует ходьбе или бегу посредством собственной ходьбы или бега на месте. Пользователь может поочередно поднимать и опускать каждую ногу 312-320, чтобы подражать ходьбе без перемещения. Система может интерпретировать этот жест, анализируя каждый бедренный сустав 312 и каждое бедро 314. Шаг может быть распознан, когда один угол бедра в бедренном суставе (измеренный относительно вертикальной линии, причем стоящая нога имеет угол бедра 0° и вытянутая горизонтально вперед нога имеет угол бедра 90°) превышает некоторый порог относительно другого бедра. Ходьба или бег могут быть распознаны после некоторого количества последовательных шагов ногами попеременно. Время между двумя самыми последними шагами может рассматриваться как период. После того, как прошло некоторое количество периодов, когда пороговый угол не достигался, система, может решить, что ходьба или бег прекратились.
При жесте "ходьба или бег" прикладная программа может установить значения для определенных прикладной программой параметров, связанных с этим жестом. Эти параметры могут включать в себя упомянутый выше пороговый угол, количество шагов, требуемое для инициализации жеста "ходьба или бег", количество периодов, в течение которых не происходит шагов, для окончания жеста, и пороговый период, который определяет, является ли жест ходьбой или бегом. Быстрый период может соответствовать бегу, поскольку пользователь будет перемещать свои ноги быстро, и более медленный период может соответствовать ходьбе.
Жест может быть сначала связан с множеством заданных по умолчанию параметров, которым прикладная программа может переназначить свои собственные параметры. В этом сценарии прикладная программа не обязана обеспечивать параметры, а может вместо этого использовать множество заданных по умолчанию параметров, которые позволяют распознавать жест в отсутствии заданных прикладной программой параметров.
Имеется множество элементов выходной информации, которые могут быть связаны с жестом. Может существовать пороговая линия "да или нет" относительно того, происходит ли жест. Также может существовать доверительный уровень, который соответствует вероятности, что отслеженное движение пользователя соответствует жесту. Он может представлять собой линейную шкалу, диапазон которой представляют собой числа с плавающей запятой между 0 и 1 включительно. Причем прикладная программа, принимающая эту информацию жеста, не может принимать ошибочные положительные срабатывания в качестве входной информации, она может использовать только те распознанные жесты, которые имеют высокий доверительный уровень, такой как по меньшей мере 0,95. Когда прикладная программа должна распознавать каждый случай жеста, даже за счет ложных положительных срабатываний, она может использовать жесты, которые имеют по меньшей мере намного более низкий доверительный уровень, такой как 0,2. Жест может иметь выходную информацию для времени между двумя самыми последними шагами, и когда был зарегистрирован только первый шаг, она может быть установлена равной зарезервированному значению, например, -1 (поскольку время между любыми двумя шагами должно быть положительным). Жест также может иметь выходную информацию для наибольшего угла бедра, достигнутого во время последнего шага.
Другой иллюстративный жест представляет собой "прыжок с отрывом пяток". При этом пользователь может создать жест, поднимая свои пятки от земли, но оставляя пальцы ног на опоре. В качестве альтернативы пользователь может подпрыгнуть в воздух, при этом его ступни 320 полностью отрываются от земли. Система может интерпретировать скелет для этого жеста посредством анализа углового отношения плеч 310, бедренных суставов 312 и коленей 316, чтобы увидеть, находятся ли они в позиции выравнивания, эквивалентного прямой стойке. Тогда эти точки и верх 326 и низ 328 позвоночника могут быть отслежены на какое-либо ускорение вверх. Достаточная комбинация ускорения может инициировать жест прыжка.
При этом жесте "прыжок с отрывом пяток" прикладная программа может установить значения для заданных прикладной программой параметров, связанных с этим жестом. Параметры могут включать в себя упомянутый выше порог ускорения, который определяет, насколько быстро некоторая комбинация плеч 310, бедренных суставов 312 и коленей 316 должна двигаться вверх, чтобы инициировать жест, а также максимальный угол выравнивания между плечами 310, бедренными суставами 312 и коленями 316, при котором еще может быть инициирован прыжок.
Элементы выходной информации могут содержать доверительный уровень, а также угол тела пользователя во время прыжка.
Установка параметров для жеста на основе конкретных особенностей прикладной программы, которая будет принимать жест, важна при точной идентификации жестов. Должная идентификация жестов и намерения пользователя очень помогает при создании положительного восприятия пользователя. Когда система распознавания жестов слишком чувствительна и даже небольшое движение кисти 302 руки вперед интерпретируется как бросок, пользователь может испытывать разочарование, поскольку жесты распознаются тогда, когда у него нет намерения сделать жест, и, таким образом, он испытывает недостаток контроля над системой. Когда система распознавания жестов не достаточно чувствительна, система может не распознать сознательные попытки пользователя сделать жест броска, разочаровывая его аналогичным образом. С каждой стороны спектра чувствительности пользователь испытывает разочарование, поскольку он не может должным образом обеспечить ввод в систему.
Другой параметр для жеста может представлять собой пройденное расстояние. Когда жесты пользователя управляют действиями видеообраза в виртуальной среде, этот видеообраз может представлять собой длину руки от мяча. Если пользователь желает взаимодействовать с мячом и схватить его, это может потребовать, чтобы пользователь вытянул свою руку 302-310 на всю длину, делая жест захвата. В этой ситуации подобный жест захвата, когда пользователь лишь частично вытягивает свою руку 302-310, может не достичь результата взаимодействия с мячом.
Жест или его часть могут иметь в качестве параметра объем пространства, в котором он должен произойти. Этот объем пространства обычно может быть выражен относительно тела, причем жест содержит движение тела. Например, жест броска футбольного мяча для пользователя-правши может быть распознан только в объеме пространства не ниже чем правое плечо 310a и на той же стороне от головы 322, где находится бросающая рука 302a-310a. Может быть необязательно задавать все границы объема, как, например, при жесте броска, когда внешняя граница от тела остается неопределенной, и объем простирается неопределенно или до края сцены, которая отслеживается.
Фиг. 4B обеспечивает дополнительные подробные сведения одного иллюстративного варианта воплощения механизма 190 распознавания жестов, показанного на фиг. 2. Как показано, механизм 190 распознавания жестов может содержать по меньшей мере один фильтр 418 для определения жеста или жестов. Фильтр 418 включает в себя информацию, определяющую жест 426 (в дальнейшем называемую "жест"), и также может содержать параметры 428 или метаданные для этого жеста. Например, бросок, который содержит движение одной из кистей рук от задней стороны тела к передней стороне тела, может быть осуществлен как жест 426, содержащий информацию, представляющую движение одной из рук пользователя от задней стороны тела к передней стороне тела, по мере того, как движение будет захвачено камерой глубины. Затем для этого жеста 426 могут быть установлены параметры 428. Когда жест 426 представляет собой бросок, параметр 428 может являться пороговой скоростью, которую рука должна достигнуть, расстоянием, которое рука должна пройти (либо абсолютное, либо относительно размера пользователя в целом), и оценкой уверенности для механизма распознавания, что жест произошел. Эти параметры 428 для жеста 426 могут изменяться между прикладными программами, между контекстами одной прикладной программы или в пределах одного контекста одной прикладной программы в течение времени.
Фильтры могут быть модульными или взаимозаменяемыми. В варианте воплощения фильтр имеет несколько входов, каждый из которых имеет тип, и несколько выходов, каждый из которых имеет тип. В этой ситуации первый фильтр может быть заменен вторым фильтром, который имеет то же самое количество и те же самые типы входов и выходов, как первый фильтр, без изменения какого-либо другого аспекта архитектуры механизма распознавания. Например, может иметься первый фильтр для вождения, который берет в качестве входной информации скелетные данные и выдает уверенность, что жест, связанный с фильтром, происходит, и угол рулевого управления. Когда кто-либо желает заменить этот первый фильтр вождения на второй фильтр вождения, возможно, потому что второй фильтр вождения более эффективен и требует меньшего количества ресурсов обработки, это можно сделать, просто заменяя первый фильтр вторым фильтром, если второй фильтр имеет те же самые входы и выходы - один вход скелетного типа данных и два выхода с типом уверенности и угловым типом.
Фильтр не обязательно должен иметь параметр. Например, фильтр "рост пользователя", который возвращает рост пользователя, может не допускать каких-либо параметров, которые могут быть настроены. Альтернативный фильтр "рост пользователя" может иметь настраиваемые параметры - например, следует ли учитывать обувь, прическу, головной убор и позу пользователя при определении роста пользователя.
Входы в фильтр могут содержать данные суставов о позиции суставов пользователя, подобные углы, образованные костями, которые соединяются в суставах, данные цвета RGB из сцены и частоту изменений аспекта пользователя. Выходы из фильтра могут содержать уверенность, что заданный жест сделан, скорость, на которой сделано движение, и время, в течение которого сделано движение жеста.
Контекст может представлять собой культурный контекст, и он может являться контекстом среды. Культурный контекст относится к культуре пользователя, использующего систему. Разные культуры могут использовать похожие жесты, чтобы передать заметно разные значения. Например, американский пользователь, который желает сказать другому пользователю "смотри" или "используй свои глаза", может поместить свой указательный палец на голове вблизи от боковой стороны глаза. Однако для итальянского пользователя этот жест может быть интерпретирован как ссылка на мафию.
Аналогичным образом, могут иметься различные контексты среди различных сред одной прикладной программы. Возьмем игру с имитацией стрельбы от первого лица, которая включает в себя управление автомашиной. Когда пользователь идет пешком, сложение руки в кулак с направленными к земле пальцами и вытягивание кулака вперед и далеко от тела может представлять жест удара кулаком. Когда пользователь находится в контексте вождения, то же самое движение может представлять жест "переключение сцепления". Также могут иметься одна или более сред меню, в которых пользователь может сохранить свою игру, сделать выбор оснащения персонажа или выполнить подобные действия, которые не содержат прямого игрового действия. В такой среде тот же самый жест может иметь третье значение, например, выбрать что-либо или перейти к другому экрану.
Механизм 190 распознавания жестов может иметь основной механизм 416 распознавания, который обеспечивает функциональные возможности для фильтра 418 жестов. В варианте воплощения функциональные возможности, которые реализует механизм 416 распознавания, включают в себя введенный в течение времени архив, который отслеживает распознанные жесты и другую входную информацию, реализацию скрытой Марковской модели (в которой предполагается, что смоделированная система является Марковским процессом - таким, в котором текущее состояние инкапсулирует информацию о любом прошлом состоянии, необходимую для определения будущего состояния, таким образом никакая другая информация о прошлом состоянии не должна поддерживаться с этой целью - с неизвестными параметрами, и скрытые параметры, определяются из наблюдаемых данных), а также другие функциональные возможности, требуемые для решения конкретных случаев распознавания жестов.
Фильтры 418 загружаются и реализуются поверх основного механизма 416 распознавания и могут использовать службы, предоставляемые механизмом 416 для всех фильтров 418. В варианте воплощения основной механизм 416 распознавания обрабатывает принятые данные, чтобы определить, отвечают ли они требованиям какого-либо фильтра 418. Поскольку эти предоставленные службы, такие как интерпретация ввода, предоставляются один раз основным механизмом 416 распознавания, а не каждым фильтром 418, такой службе обработка нужна только один раз за период времени, а не один раз для каждого фильтра 418 в течение этого периода, таким образом, обработка, требуемая для определения жестов, уменьшается.
Прикладная программа может использовать фильтры 418, предоставленные механизмом 190 распознавания, или она может обеспечить свой собственный фильтр 418, который подключается к основному механизму 416 распознавания. В варианте воплощения все фильтры 418 имеют общий интерфейс, чтобы дать возможность этой характерной особенности подключения. Кроме того, все фильтры 418 могут использовать параметры 428, таким образом, единый инструмент жестов, описанный ниже, может использоваться для отладки и настройки всей системы 418 фильтра.
Эти параметры 428 могут быть настроены для прикладной программы или контекста прикладной программы посредством инструмента 420 жестов. В варианте воплощения инструмент 420 жестов содержит множество подвижных шкал 422, каждая подвижная шкала 422 соответствует параметру 428, а также представление тела 424. По мере того как параметр 428 регулируется с помощью соответствующей подвижной шкалы 422, тело 424 может демонстрировать как действия, которые были бы распознаны в качестве жеста с этими параметрами 428, так и действия, которые не будут распознаны в качестве жеста с этими параметрами 428, идентифицированными таким образом. Эта визуализация параметров 428 жестов обеспечивает эффективное средство как для отладки, так и для тонкой настройки жеста.
Фиг. 5 изображает более сложные жесты или фильтры 418, созданные из сложенных в стек жестов или фильтров 418. Жесты могут быть расположены в стеке друг над другом, и тогда сложенные в стек фильтры могут восприниматься как фильтр, содержащий множество других фильтров. Таким образом, в одно время пользователем может быть выражено более одного жеста. Например, вместо того чтобы отвергать любую входную информацию, кроме броска, когда выполняется жест броска, или требовать, чтобы пользователь оставался неподвижным за исключением компонентов жеста (например, неподвижно стоял, делая жест броска, который включает в себя только действие одной руки). Когда жесты расположены в стеке, пользователь может сделать жест прыжка и жест броска одновременно, и оба этих жеста будут распознаны механизмом жестов.
Фиг. 5A изображает простой фильтр 418 жеста в соответствии с парадигмой сложения в стек. Фильтр 502 IFilter представляет собой базовый фильтр 418, который может использоваться в каждом фильтре жеста. Фильтр 502 IFilter берет данные 504 позиции пользователя и выдает доверительный уровень 506, что жест произошел. Он также подает эти данные 504 позиции в фильтр 508 SteeringWheel, который берет их в качестве ввода и выдает угол 510, на который пользователь поворачивает рулевое управление (например, 40 градусов направо от текущего положения пользователя).
Фиг. 5B изображает более сложный жест, который располагает в стеке фильтры 418 на фильтр жеста, показанный на фиг. 5A. В дополнение к фильтру 502 IFilter и фильтру 508 SteeringWheel имеется фильтр 512 ITracking, который принимает данные 504 позиции от фильтра 502 IFilter и выдает величину продвижения, которые пользователь сделал посредством жеста 514. Фильтр 512 ITracking также подает данные 504 позиции в фильтр 514 GreaseLightning и фильтр 516 EBrake, которые представляют собой фильтры 418 относительно других жестов, которые могут быть сделаны при управлении транспортным средством, например использование экстренного торможения.
Существуют другие варианты воплощения для расположения жестов в стеке. В варианте воплощения данные 504 позиции передаются непосредственно всем фильтрам расположенного в стеке жеста, а не через фильтр 502 IFilter, и компонент механизма распознавания определяет, каким образом каждый фильтр взаимодействует. Например, для фильтра прыжка и фильтра броска каждый из них может быть распознан независимо, когда не происходит других действий пользователя, но этот компонент распознал бы, что прыжок и некоторый пользовательский ввод, который может представлять собой бросок, происходят одновременно, на основе соответствующей выходной информации из каждого фильтра. Этот компонент затем может интерпретировать фильтр броска менее строго (например, посредством расширения приемлемого диапазона значений, чтобы удовлетворить параметру), и на основе этого "некоторый ввод, который может представлять собой бросок", может быть распознан как бросок.
Фиг. 6 изображает иллюстративный жест, который пользователь 602 может сделать, чтобы сообщить о приеме "fair catch" в футбольной видеоигре. Эти фигуры изображают пользователя в моменты времени, где фиг. 6A представляет первый момент времени, и фиг. 6E представляет последний момент времени. Каждая из этих фигур может соответствовать снимку экрана или кадру данных изображения, захваченных камерой 402 глубины, хотя не обязательно последовательные кадры данных изображения, поскольку камера 402 глубины может иметь возможность захватывать кадры быстрее, чем пользователь может покрыть расстояние. Например, этот жест может произойти в течение 3 секунд, и когда камера глубины захватывает данные со скоростью 40 кадров в секунду, она захватила бы 60 кадров данных изображения, пока пользователь 602 делал этот жест "fair catch".
На фиг. 6A пользователь 602 начинает жест, и его руки 604 опущены вниз по сторонам. Затем он поднимает их вверх и выше плеч, как изображено на фиг. 6B, и затем еще вверх приблизительному до уровня своей головы, как изображено на фиг. 6C. Из этого положения он опускает свои руки 604 до уровня плеч, как изображено на фиг. 6D, и затем снова поднимает их вверх приблизительно до уровня головы, как изображено на фиг. 6E. Когда система захватывает эти положения пользователя 602 без какого-либо промежуточного положения, которое может сообщить о том, что жест отменен или выполняется другой жест, она может распознать, что пользователь 602 сделал жест "fair catch".
Фиг. 7 изображает иллюстративный жест "fair catch", показанный на фиг. 5, когда каждый кадр данных изображения был интерпретирован для получения скелетного отображения пользователя. Система, получив скелетное отображение из изображения глубины для пользователя, теперь может определить, как тело пользователя двигалось во времени, и на основе этого интерпретировать жест.
На фиг. 7A плечи 310 пользователя находятся выше его локтей 306, которые в свою очередь находятся выше его кистей 302 рук. Плечи 310, локти 306 и кисти 302 рук затем находятся на одном уровне на фиг. 7B. Затем система обнаруживает на фиг. 7C, что кисти 302 рук находятся выше локтей, которые находятся выше плеч 310. На фиг. 7D пользователь возвращается в положение, показанное на фиг. 7B, в котором плечи 310, локти 306 и кисти 302 рук находятся на одном уровне. В конечном положении жеста, которое показано на фиг. 7E, пользователь возвращается в положение, показанное на фиг. 7C, в котором кисти 302 рук находятся выше локтей, которые находятся выше плеч 310.
Хотя камера 402 глубины захватывает последовательность неподвижных изображений, так что на любом изображении пользователь кажется неподвижным, пользователь двигается в ходе выполнения этого жеста (в противоположность стационарному жесту, рассмотренному выше). Система может взять эту последовательность поз в каждом неподвижном изображении и на ее основе определить жест в движении, который делает пользователь.
При выполнении жеста пользователь вряд ли сможет создать угол, образуемый его правым плечом 310a, правым локтем 306a и правой кистью 302a руки, например, между 140° и 145°. Поэтому прикладная программа, использующая фильтр 418 для жеста 428 "fair catch", может настроить соответствующие параметры 426, чтобы они наилучшим образом служили особенностям прикладной программы. Например, положения на фиг. 7C и 7E могут распознаваться каждый раз, когда у пользователя кисти 302 рук находятся выше его плеч 310, безотносительно положения локтей 306. Множество более строгих параметров может потребовать, чтобы кисти 302 рук находились выше головы 310 и локти 306 находились выше плеч 310 и между головой 322 и кистями 302 рук. Кроме того, параметры 426 для жеста 428 "fair catch" могут потребовать, чтобы пользователь перемещался из положения на фиг. 7A в положение на фиг. 7E в пределах указанного периода времени, например, за 1,5 секунды, и если пользователь тратит более 1,5 секунд на перемещение через эти положения, жест не будет распознан как жест 418 "fair catch".
Фиг. 8 изображает, как универсальные фильтры 806 жестов из библиотеки 802 фильтров жестов сгруппированы в пакеты 804 жанров из комплементарных фильтров жестов для конкретной задачи. Библиотека 802 фильтров жестов объединяет все фильтры 806 жестов, обеспеченные системой. В варианте воплощения прикладная программа может обеспечить дополнительные фильтры жестов для использования этой прикладной программой. Универсальные фильтры жестов содержат такие жесты, как "бросок рукой" 806a и "приседание вниз" 806b. Эти фильтры жестов затем группируются вместе в пакеты 804 жанров.
Пакет 804 жанра может включать в себя те жесты, которые обычно используются в пределах жанра. Например, пакет 804a жанра игр с имитацией стрельбы ("шутеров") от первого лица (FPS) может иметь фильтры жестов для стрельбы из оружия 812c, бросания снаряда 812d, нанесения удара 812e кулаком, открывания двери 812f, приседания 812g, прыжка 812h, бега 812i и поворота 812j. Можно считать, что этот пакет 804a жанра FPS обеспечивает универсальный пакета 808a жанра FPS с такими настроенными или установленными параметрами фильтров жестов, чтобы они вероятно приемлемо работали с большим количеством прикладных программ FPS.
Пакет жанра не ограничен группами комплементарных фильтров жестов, которые работают для известных жанров или прикладных программ. Пакет жанра может содержать фильтры жестов, которые содержат подмножество этих фильтров, используемых прикладной программой или жанром, или фильтры, которые являются комплементарными, хотя соответствующий жанр для них еще должен быть идентифицирован.
Прикладная программа затем может настроить эти универсальные пакеты жанров, чтобы удовлетворить конкретным особенностям этой прикладной программы. Прикладная программа может настроить универсальный пакет жанра посредством установки значений для параметров фильтров в пакете жанра. Например, создатели Игры A 810a могут решить, что их игра функционирует наилучшим образом, когда требуется демонстративное движение для регистрации фильтра 812f жеста открывания двери, поскольку в ином случае оно слишком похоже на фильтр жеста удара 812e кулаком. Однако создатели Игры B могут решить, что в этом нет проблемы, и потребовать лишь более сдержанного движения для регистрации фильтра 812fB жеста открывания двери.
В варианте воплощения, в котором пакет жанра содержит машиночитаемые команды, пакет жанра может быть предоставлен как эти команды в виде исходного кода или в виде, отражающем некоторое количество компиляции этих команд.
Фиг. 9 показывает иллюстративные операционные процедуры для настройки комплементарных фильтров жестов в пакете фильтров, когда прикладная программа обеспечивает значение для одного параметра одного фильтра.
Операция 902 изображает обеспечение пакета, содержащего множество фильтров, каждый фильтр содержит информацию о жесте и, по меньшей мере, один параметр, каждый фильтр является комплементарным, по меньшей мере, с одним другим фильтром в пакете. Пакет может представлять фильтры жестов для конкретного жанра. Например, пакеты жанров для видеоигр могут включать в себя такие жанры, как игры с имитацией стрельбы ("шутер") от первого лица, игры в стиле "action", игры с имитацией вождения и спортивные игры.
Используемая здесь и, по меньшей мере, в одном варианте воплощения фраза "обеспечение пакета" может относиться к разрешению доступа к файлу библиотеки языка программирования, который соответствует фильтрам в пакете, или разрешению доступа к интерфейсу прикладного программирования (API) для прикладной программы. Разработчик прикладной программы может загрузить файл библиотеки и затем выполнить вызовы необходимых методов. Например, для пакета спортивных игр может иметься соответствующий файл библиотеки пакета спортивных игр.
При включении в прикладную программу прикладная программа может затем делать вызовы, которые используют пакет спортивных игр в соответствии с заданным интерфейсом API. Такие вызовы API могут включать в себя возвращение значения параметра для фильтра, установку значения параметра для фильтра и идентификацию корреляции фильтра с инициированием некоторой части прикладной программы, например, чтобы заставить управляемого пользователем игрока в теннис взмахнуть теннисной ракеткой, когда пользователь делает соответствующий жест взмаха теннисной ракеткой.
Как описано выше, жест может содержать широкий спектр движений и поз. Он может, например, представлять собой приседание, прыжок, наклон, бросок рукой, метание, взмах, уклонение, пинок или блок. Аналогичным образом жест может соответствовать навигации пользовательского интерфейса. Например, пользователь может держать кисть своей руки с пальцами вверх и ладонью, обращенной к трехмерной камере. Он может затем прижать свои пальцы к ладони, чтобы сжать кулак, и это могло бы служить жестом, который указывает, что находящееся в фокусе ввода окно в вычислительной среде с оконным пользовательским интерфейсом должно быть закрыто.
Поскольку жесты могут использоваться для указания чего угодно от указания того, что видеообраз в прикладной программе должен нанести удар, до указания того, что окно в прикладной программе должно быть закрыто, жесты могут использоваться в широком спектре прикладных программ, от видеоигр до редакторов текста.
Комплементарные фильтры жестов - либо комплементарные в том смысле, что обычно используются вместе, либо комплементарные в том смысле, что изменение параметра у одного изменит параметр у другого, - могут группироваться вместе в пакеты жанров, которые вероятно будут использоваться прикладной программой в этом жанре. Эти пакеты могут быть доступными или идентифицированы для прикладной программы, которая может выбрать, по меньшей мере, один из них. Прикладная программа может настроить или изменить параметр(ы) фильтра в выбранном пакете для наилучшего соответствия индивидуальным аспектам прикладной программы. Когда этот параметр настраивается, второй комплементарный параметр (во взаимозависимом смысле) либо этого фильтра, либо второго фильтра также может быть настроен таким образом, что параметры остаются комплементарными.
Определенный прикладной программой параметр может изменяться на основе контекста, в котором находится прикладная программа. В этой связи прикладная программа может присвоить множество значений определенному прикладной программой параметру для фильтра, при этом каждое значение соответствует отдельному контексту. Как описано выше, этот контекст может представлять собой культурный контекст или контекст среды.
Операция 904 изображает прием показания о присваивании значения параметру первого фильтра. Определенный прикладной программой параметр может содержать любую характеристику из широкого спектра характеристик фильтра, таких как часть тела, объем пространства, скорость, направление движения, угол и место, где происходит движение.
В варианте воплощения значение определенного прикладной программой параметра определяется конечным пользователем прикладной программы через создание жеста. Например, прикладная программа может позволить пользователю обучать себя, с тем чтобы пользователь мог задавать, какие движения, как он полагает, должен содержать жест. Это может быть выгодно, чтобы дать возможность пользователю, не имеющему хороших двигательных навыков, привязать те движения, которые он может выполнять, к соответствующим жестам. Если бы это не было доступно, пользователь может испытать разочарование, поскольку он не способен выполнить движение телом так, как требует прикладная программа для получения жеста.
В варианте воплощения, в котором существуют комплементарные фильтры - множество фильтров, которые имеют взаимосвязанные параметры - прием от прикладной программы значения для определенного прикладной программой параметра первого фильтра может включать в себя как установку значения определенного прикладной программой параметра первого фильтра, так и установку комплементарного определенного прикладной программой параметра второго, комплементарного фильтра на основе значения параметра первого фильтра. Например, можно решить, что пользователь, который бросает футбольный мяч некоторым образом, вероятно также бросит бейсбольный мяч некоторым образом. Поэтому, когда определено, что некоторый определенный прикладной программой параметр одного фильтра, такого как параметр скорости на фильтре для жеста броска футбольного мяча, должны быть установлен конкретным образом, другие комплементарные определенные прикладной программой параметры, такие как параметр скорости на жесте броска бейсбольного мяча, могут быть установлены на основании того, как установлен тот первый определенный прикладной программой параметр.
Это не обязательно должно быть то же самое значение для заданного определенного прикладной программой параметра или даже тот же самый тип определенного прикладной программой параметра между фильтрами. Например, может случиться так, что когда бросок футбольного мяча должен быть сделан со скоростью X м/с рукой вперед, затем захват футбольного мяча должен быть сделан кистями рук по меньшей мере на расстоянии Y м от туловища.
Значение может представлять собой порог, например скорость руки больше X. Оно может быть абсолютным, например скорость руки равна X. Может иметься допуск ошибки, например скорость руки находится в пределах Y от X. Оно также может содержать диапазон, например скорость руки больше или равна X, но меньше Z.
Операция 906 изображает присваивание значения параметру первого фильтра. Когда привязка между параметрами и их значениями сохраняется в базе данных, это может включать в себя сохранение значения в базе данных наряду с привязкой к параметру.
Операция 908 изображает присваивание второго значения второму параметру второго фильтра, второе значение определено с использованием значения, присвоенного параметру первого фильтра. Как описано выше, второе значение может иметь отношение к первому значению различными способами. Когда эти два параметра включают в себя нечто в значительной степени сходное, например пороговую высоту прыжка, второе значение может быть равным первому значению. Второе значение и первое значение могут иметь множество других отношений, таких как пропорциональное отношение, обратно пропорциональное отношение, линейное отношение, экспоненциальное отношение и функция, которая принимает значение в качестве аргумента.
В варианте воплощения, в котором фильтры могут наследовать характеристики друг от друга, например, в объектно-ориентированной реализации, второй фильтр может содержать потомок первого фильтра, и первый фильтр аналогично является родителем для второго фильтра. Возьмем, например, фильтр "шлепок рукой". Этот фильтр может служить родителем для вариаций шлепков рукой, таких как "дай пять" "дай пять - двумя руками" и "дай пять - с ладонью снизу". Если "шлепок рукой" имеет параметр "порог расстояния движения кисти руки", когда этому параметру устанавливается значение, параметр "порог расстояния движения кисти руки" для всех дочерних фильтров может быть установлен равным этому же значению.
Аналогичным образом, взаимодополняющая природа двух параметров может возникнуть из-за того, что один фильтр расположен в стеке, чтобы быть встроенным в другой фильтр. Один фильтр может представлять собой фильтр рулевого управления и быть расположенным в стеке с другими фильтрами, такими как переключение передач, ускорение и торможение, для создания фильтра вождения. При изменении параметра "минимальный порог угла рулевого управления" направляющего фильтра соответствующий параметр "минимальный порог угла рулевого управления" фильтра вождения также может быть изменен.
Операция 910 изображает факультативную операцию приема данных, содержащих изображение человека, и при интерпретации фильтров для определения, соответствуют ли данные конкретному фильтру (и, таким образом, указывают конкретный жест), интерпретацию данных для каждого фильтра в выбранном пакете перед интерпретацией данных для фильтра, не находящегося не в пакете. Когда прикладная программа выбирает пакет фильтров для использования, например, посредством включения файла библиотеки для этого пакета фильтров, она вероятно делает это потому, что эти фильтры должны часто использоваться пользователем прикладной программы. Кроме того, фильтры в пакете фильтров могут использоваться в тесной последовательности, например фильтры бега, прыжка, обстрела, приседания и разряжения оружия в пакете игр с имитацией стрельбы от первого лица. В этой связи, когда пакет фильтров идентифицирован как используемый прикладной программой, фильтры системной обработки, такие как описанный выше базовый механизм фильтров, могут, вероятно, сократить ресурсы обработки, требуемые для обработки данных изображения, соответствующих пользовательскому вводу, посредством первоочередной обработки данных для тех фильтров, которые содержатся в выбранном пакете фильтров.
Операция 912 изображает факультативную операцию приема показания о присваивании третьего значения второму параметру и присваивания третьего значения второму параметру. Отношения между двумя параметрами не должны быть двусторонними. Может случиться так, что изменение значения затрагивает второе значение, но изменение второго значения не затрагивает первое значение.
Операция 914 изображает необязательную операцию присваивания четвертого значения параметру, четвертое значение определяется с использованием третьего значения. Может также случиться так, что отношение между этими двумя параметрами являются двусторонними. В этом варианте воплощения изменение значения второго параметра приводит к изменению значения первого параметра, как определено с использованием нового значения второго параметра.
Операция 916 изображает факультативную операцию приема данных, содержащих изображение человека; определение, что данные соответствуют первому фильтру пакета; и интерпретацию данных для каждого другого фильтра в пакете, которые могут быть обозначены пользователем одновременно с первым фильтром, прежде чем интерпретировать данные для фильтра, который не может быть обозначен пользователем одновременно с фильтром. В варианте воплощения фильтры в пакете фильтров могут использоваться одновременно, например, одновременно фильтр бега и фильтр разряжения оружия в пакете игры с имитацией стрельбы от первого лица. В этой связи, когда пакет фильтров идентифицирован как используемый прикладной программой, фильтры системной обработки, такие как описанный выше базовый механизм фильтров, могут вероятно сократить ресурсы обработки, требуемые для обработки данных изображения, соответствующих пользовательскому вводу, посредством первоочередной обработки данных для тех фильтров, которые содержатся в пакете фильтров.
Заключение
Хотя настоящее раскрытие было описано в связи с предпочтительными аспектами изобретения, проиллюстрированными на различных фигурах, следует понимать, что могут использоваться другие подобные аспекты или могут быть сделаны модификации и добавления к описанным аспектам для выполнения той же самой функции настоящего раскрытия без отклонения от него. Таким образом, настоящее раскрытие не должно быть ограничено каким-либо единственным аспектом, а должно рассматриваться в широте и объеме в соответствии с приложенной формулой изобретения. Например, различные описанные здесь процедуры могут быть осуществлены с помощью аппаратных средств или программного обеспечения или их комбинации. Таким образом, способы и устройство раскрытых вариантов воплощения или некоторые аспекты изобретения или их часть могут принять форму программного кода (то есть, команд), воплощенных в материальных носителях, таких как гибкие дискеты, компакт-диски (CD-ROM), накопители на жестких дисках или любой другой машиночитаемый носитель данных. Когда программный код загружается и исполняется машиной, такой как компьютер, машина становится устройством, выполненным для осуществления раскрытых вариантов воплощения. В дополнение к конкретным реализациям, явно изложенным здесь, другие аспекты и реализации будут очевидны для специалистов в области техники на основе рассмотрения раскрытой здесь спецификации. Подразумевается, что спецификация и проиллюстрированные реализации будут рассматриваться только в качестве примеров.