БЕСКОНТАКТНЫЙ ВВОД
NON-CONTACT INPUT

Уровень техники
[0001] Технологии ввода касанием на основе пальца позволяют пользователю непосредственно взаимодействовать с объектами пользовательского интерфейса, отображаемыми воспринимающим касание экраном. Однако эффективная реализация таких технологий ввода касанием обеспечивает несколько проблем. Например, палец может визуально закрывать аспекты пользовательского интерфейса. В качестве другого примера подушечка пальца обладает относительно большой поверхностью и может быть сложно сопоставить эту поверхность с одной точкой.
Сущность изобретения
[0002] Эта сущность изобретения обеспечивается для введения подборки понятий в упрощенной форме, которые дополнительно описываются ниже по тексту в подробном описании. Эта сущность изобретения не предназначена для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения, а также не предназначена для использования для ограничения объема заявленного объекта изобретения. Кроме того, заявленный объект изобретения не ограничивается реализациями, которые решают любые или все недостатки, отмеченные в любой части этого раскрытия.
[0003] Ряд карт глубин формирует изображение сцены. Каждая карта глубин включает в себя множество пикселей, где каждый пиксель задает глубину поверхности, изображение которой формируется посредством этого пикселя. Идентифицируется набор нестатичных пикселей, имеющих самую малую глубину, в пределах ряда карт глубин. Позиция этого набора нестатичных пикселей отображается на позицию курсора.
Краткое описание чертежей
[0004] ФИГ. 1А и 1B показывают примерную систему бесконтактного ввода, формирующую изображение части человека, в соответствии с вариантом осуществления настоящего раскрытия.
[0005] ФИГ. 2 схематично показывает неограничивающий пример конвейера отслеживания скелета в соответствии с вариантом осуществления настоящего раскрытия.
[0006] ФИГ. 3 показывает способ приема бесконтактного ввода в соответствии с вариантом осуществления настоящего раскрытия.
[0007] ФИГ. 4 схематично показывает визуальное представление карты глубин в соответствии с вариантом осуществления настоящего раскрытия.
[0008] ФИГ. 5 показывает различные стратегии отображения на курсор в соответствии с вариантами осуществления настоящего раскрытия.
[0009] ФИГ. 6 схематично показывает другое визуальное представление карты глубин в соответствии с вариантом осуществления настоящего раскрытия.
[0010] ФИГ. 7 схематично показывает еще одно визуальное представление карты глубин в соответствии с вариантом осуществления настоящего раскрытия.
[0011] ФИГ. 8A и 8B показывают различные стратегии отображения на курсор в соответствии с вариантами осуществления настоящего раскрытия.
[0012] ФИГ. 9 показывает другой способ приема бесконтактного ввода в соответствии с вариантом осуществления настоящего раскрытия.
[0013] ФИГ. 10 показывает способ моделирования пальцев в соответствии с вариантом осуществления настоящего раскрытия.
[0014] ФИГ. 11 показывает другой способ приема бесконтактного ввода в соответствии с вариантом осуществления настоящего раскрытия.
[0015] ФИГ. 12 показывает вычислительное устройство в соответствии с вариантом осуществления настоящего раскрытия.
Подробное описание
[0016] Настоящее раскрытие направлено на визуальное обнаружение бесконтактного ввода. Как описано более подробно ниже по тексту, система отслеживания, включающая в себя камеру глубины и/или другой источник, используется для приема одной или более карт глубин, формирующих изображение сцены, включающей в себя одного человека или более. Пиксели в одной или более карт глубин анализируются для идентификации нестатичных пикселей, имеющих самую малую глубину. Позиция нестатичного пикселя(ей) затем отображается на позицию курсора. Таким образом, позиция пальца, которым осуществляется указание, может быть использована для управления позицией курсора на устройстве отображения. Бесконтактный ввод также может быть принят и интерпретирован для управления операциями курсора и жестами с мультикасанием (множественным касанием).
[0017] ФИГ. 1A и 1B показывают неограничивающий пример системы 100 бесконтактного ввода. В частности, ФИГ. 1A и 1B показывают вычислительное устройство 102, которое может быть использовано для приема бесконтактного ввода от пользователя 104. Как используется в этом документе, "бесконтактный ввод" является вводом (например, указанием пальцем), который не требует физического контакта с экраном.
[0018] Вычислительное устройство 102 включает в себя интегрированный экран 106 отображения, который может быть использован для представления визуальных элементов, соответствующих вычислительной функциональности, предлагаемой вычислительным устройством. В других вариантах осуществления экран отображения может быть периферийным относительно вычислительного устройства. Вычислительное устройство может быть сконфигурировано по-разному для обеспечения фактически любой вычислительной функциональности без отклонения от объема этого раскрытия. Кроме того, в то время как вычислительное устройство 102 иллюстрируется в форме планшетного вычислительного устройства, следует понимать, что бесконтактный ввод может быть реализован фактически на любом типе вычислительного устройства вне зависимости от формы.
[0019] В некоторых вариантах осуществления бесконтактный ввод может быть принят системой 108 отслеживания. В проиллюстрированном примере система 108 отслеживания включает в себя камеру 110 глубины и камеру 112 видимого излучения. Система 108 отслеживания показана, будучи размещенной в вычислительном устройстве 102, хотя она может быть обеспечена внешним образом в качестве периферийного устройства в других вариантах осуществления. Система 108 отслеживания может быть использована для того, чтобы визуально контролировать и/или отслеживать пользователя 104.
[0020] Система бесконтактного ввода может быть использована для распознавания, анализа и/или отслеживания одного или более пользователей-людей (например, пользователя 104) и/или физических объектов (например, пера для ввода данных). ФИГ 1A и 1B показывают сценарий, в котором система 108 отслеживания отслеживает руку пользователя 104, так что движения, сделанные рукой, могут быть интерпретированы вычислительным устройством 102. В частности, движения пользователя 104 интерпретируются в качестве управляющих воздействий, которые могут быть использованы для воздействия на вычислительное устройство 102.
[0021] Примерный сценарий, проиллюстрированный на ФИГ. 1A и 1B, показывает пользователя 104, осуществляющего переход по графическому пользовательскому интерфейсу (GUI 114), который отображается на экране 106 отображения. В частности, ФИГ. 1A показывает вычислительное устройство 102, отслеживающее позицию пользователя 104 в физическом пространстве через систему 108 отслеживания. Вычислительное устройство 102 отображает позицию физического пространства пальца на позицию курсора 116 в GUI. ФИГ. 1B показывает, что пользователь 104 может перемещать курсор 116 к папке 118 движением пальца, поскольку вычислительное устройство 102 непрерывно отслеживает позицию пальца.
[0022] Другие движения, выполняемые пользователем 104, могут быть интерпретированы как другие управляющие воздействия. В качестве неограничивающих примеров пользователь 104 может осуществлять множество операций курсора, включающих в себя операции щелчка (выбора) и перетаскивания. Дополнительно, пользователь 104 может осуществлять другие операции, не связанные с курсором, включающие в себя жесты с мультикасанием, такие как масштабирование и панорамирование. В то время как GUI 114 обеспечивается в качестве примера, следует понимать, что фактически любой GUI и/или другой аспект вычислительного устройства может управляться бесконтактным вводом, описанным в этом документе.
Объекты, отличные от человека, могут быть смоделированы и/или отслежены. Такие объекты могут быть смоделированы и отслежены независимо от людей. Например, может быть отслежено движение пользователя, держащего перо, и/или движение самого пера.
[0023] ФИГ. 2 графически показывает упрощенный конвейер 200 отслеживания, с помощью которого вычислительное устройство может принимать бесконтактный ввод. Для простоты пояснения конвейер 200 описывается со ссылкой на систему 100 бесконтактного ввода с ФИГ. 1A и 1B. Однако, конвейер 200 может быть реализован на любом подходящем вычислительном устройстве без отклонения от объема этого раскрытия. Например, конвейер 200 может быть реализован на вычислительном устройстве 1200 с ФИГ. 12. Кроме того, способы или конвейеры для приема бесконтактного ввода, которые отличаются от конвейера 200, могут быть использованы без отклонения от объема этого раскрытия.
[0024] С помощью ссылочной позиции 202 ФИГ. 2 показывает пользователя 104 с позиции системы 108 отслеживания. Система отслеживания, такая как система 108 отслеживания, может включать в себя один или более датчиков, которые сконфигурированы с возможностью наблюдения за человеком, таким как пользователь 104.
[0025] С помощью ссылочной позиции 204 ФИГ. 2 показывает схематическое представление 206 данных наблюдения, собранных системой отслеживания, такой как система 108 отслеживания. Типы собранных данных наблюдения будут меняться в зависимости от числа и типов датчиков, включенных в систему отслеживания. В проиллюстрированном примере система отслеживания включает в себя камеру глубины и камеру видимого излучения (например, цветную).
[0026] Камера глубины может определять, для каждого пикселя камеры глубины, глубину поверхности в наблюдаемой сцене относительно камеры глубины. ФИГ. 2 схематично показывает трехмерные x/y/z координаты 208, наблюдаемые для DPixel[v,h] камеры глубины вычислительного устройства 102. Аналогичные трехмерные x/y/z координаты могут быть записаны для каждого пикселя камеры глубины. Трехмерные x/y/z координаты для всех пикселей совместно составляют карту глубин. Трехмерные x/y/z координаты могут быть определены любым подходящим образом без отклонения от объема этого раскрытия. Примерные подходы нахождения глубины рассматриваются более подробно со ссылкой на ФИГ. 12.
[0027] Когда включена в состав, камера видимого излучения может определять, для каждого пикселя камеры видимого излучения, относительную интенсивность света поверхности в наблюдаемой сцене для одного или более каналов света (например, красного, зеленого, синего, серого и так далее). ФИГ. 2 схематично показывает значения 210 красного/зеленого/синего цвета, наблюдаемые для V-LPixel[v,h] камеры видимого излучения системы 108 отслеживания. Аналогичные значения красного/зеленого/синего цвета могут быть записаны для каждого пикселя камеры видимого излучения. Значения красного/зеленого/синего цвета для всех пикселей совместно составляют цифровое цветное изображение. Значения красного/зеленого/синего цвета могут быть определены любым подходящим образом без отклонения от объема этого раскрытия. Примерные технологии формирования цветных изображений рассматриваются более подробно со ссылкой на ФИГ. 12.
[0028] Камера глубины и камера видимого излучения могут иметь одинаковые разрешения, хотя это не является необходимым. Вне зависимости от того, имеют ли камеры одинаковые или различные разрешения, пиксели камеры видимого излучения могут быть совмещены с пикселями камеры глубины. Таким образом, информация и о цвете и о глубине может быть определена для каждой части наблюдаемой сцены, учитывая совмещенные пиксели из камеры видимого излучения и камеры глубины (например, V-LPixel[v,h] и DPixel[v,h]).
[0029] Собранные данные могут принимать форму фактически любой подходящей структуры (структур) данных, включающей в себя, но без ограничения упомянутым, одну или более матриц, которые включают в себя трехмерную x/y/z координату для каждого пикселя, изображение которого формируется камерой глубины, и/или значения красного/зеленого/синего цвета для каждого пикселя, изображение которого формируется камерой видимого излучения. В то время как ФИГ. 2 изображает один кадр, следует понимать, что человек может непрерывно наблюдаться и моделироваться (например, с частотой 30 кадров в секунду). Соответственно, данные могут быть собраны для каждого такого наблюдаемого кадра. Собранные данные могут быть доступны посредством одного или более интерфейсов прикладного программирования (API) и/или дополнительно проанализированы, как описано ниже по тексту.
[0030] Система отслеживания и/или взаимодействующее вычислительное устройство необязательно могут анализировать карту глубин для того, чтобы отличать людей и/или другие цели, которые должны быть отслежены, от элементов, не являющихся целями, в наблюдаемой карте глубин. Каждому пикселю карты глубин может быть назначен индекс 214 объекта, который идентифицирует этот пиксель как формирующий изображение некоторой конкретной цели или элемента, не являющегося целью. В качестве примера, пикселям, соответствующим первому объекту, может быть назначен индекс объекта, равный единице, пикселям, соответствующим второму объекту, может быть назначен индекс объекта, равный двум, и пикселям, которые не соответствуют целевому объекту, может быть назначен индекс объекта, равный нулю. Такие индексы объектов могут быть определены, назначены и сохранены любым подходящим образом без отклонения от объема этого раскрытия.
[0031] Система отслеживания и/или взаимодействующее вычислительное устройство необязательно могут дополнительно анализировать пиксели карты глубин человека для того, чтобы определять, изображение какой части тела этого субъекта каждый такой пиксель вероятней всего формирует. Разнообразие различных технологий определения частей тела может быть использовано для оценки, изображение какой части тела этого субъекта некоторый конкретный пиксель вероятней всего формирует. Каждому пикселю карты глубин с надлежащим индексом объекта может быть назначен индекс 216 части тела. Индекс части тела может включать в себя дискретный идентификатор, значение достоверности и/или распределение вероятностей частей тела, указывающее часть или части тела, для которых вероятнее всего данный пиксель формирует изображение. Индексы частей тела могут быть определены, назначены и сохранены любым подходящим образом без отклонения от объема этого раскрытия.
[0032] В качестве одного неограничивающего примера машинное обучение может быть использовано для назначения каждому пикселю индекса части тела и/или распределения вероятностей частей тела. Подход машинного обучения анализирует человека с использованием информации, полученной из ранее выученной совокупности известных поз. Другими словами, во время контролируемой тренировочной фазы, множество различных людей наблюдаются во множестве различных поз, и выполняющие обучение люди обеспечивают примечания с контрольными данными, помечающие различные классификаторы машинного обучения в наблюдаемых данных. Наблюдаемые данные и примечания используются для генерирования одного или более алгоритмов машинного обучения, которые отображают входные данные (например, данные наблюдения из системы отслеживания) на желаемые выходные данные (например, индексы частей тела для подходящих пикселей).
[0033] С помощью ссылочной позиции 218 ФИГ. 2 показывает схематическое представление виртуального скелета 220, который служит в качестве машиночитаемого представления пользователя 104. Виртуальный скелет 220 включает в себя двадцать виртуальных узлов (суставов) - {головы, центра плеча, позвоночника, центра бедра, правого плеча, правого локтя, правого запястья, правой руки, левого плеча, левого локтя, левого запястья, левой руки, правого бедра, правого колена, правой лодыжки, правой ступни, левого бедра, левого колена, левой лодыжки и левой ступни}. Этот виртуальный скелет из двадцати суставов обеспечивается в качестве неограничивающего примера. Виртуальные скелеты в соответствии с настоящим раскрытием могут иметь фактически любое число узлов (суставов). В частности, как описано ниже по тексту, виртуальный скелет может включать в себя один или более узлов пальцев.
[0034] Различные узлы скелета могут соответствовать реальным суставам человека, центрам тяжести частей тела человека, концам конечностей человека и/или точкам без непосредственной анатомической связи с человеком. Каждый узел имеет по меньшей мере три степени свободы (например, x/y/z абсолютного пространства). Как таковой, каждый узел виртуального скелета задается трехмерной позицией. Например, виртуальный узел 222 левого плеча задается координатой 223 по x, координатой 224 по y и координатой 225 по z. Координата 225 по z может кодировать глубину виртуального узла 222 левого плеча. Позиция узлов может быть задана относительно любого подходящего начала координат. В качестве одного примера, система отслеживания может служить в качестве начала координат, и все позиции узлов задаются относительно системы отслеживания. Узлы могут быть заданы трехмерной позицией любым подходящим образом без отклонения от объема этого раскрытия.
[0035] Разнообразие технологий может быть использовано для определения трехмерной позиции каждого узла. Технологии подбора скелета могут использовать информацию о глубине, информацию о цвете, информацию о частях тела и/или ранее выученную анатомическую и кинетическую информацию для выведения одного или более скелета(ов), которые близко моделируют человека. В качестве одного неограничивающего примера, описанные выше по тексту индексы частей тела могут быть использованы для нахождения трехмерной позиции каждого узла скелета.
[0036] Позиции узлов и/или другая информация может быть закодирована в любой подходящей структуре(ах) данных. Кроме того, позиция и/или другие параметры, ассоциированные с любым конкретным узлом, могут быть доступны посредством одного или более API.
[0037] ФИГ. 3 показывает способ 300 для приема бесконтактного ввода. Способ 300 может быть осуществлен, например, системой 100 бесконтактного ввода. На этапе 302 принимается ряд карт глубин, которые формируют изображение сцены. Сцена может включать в себя одного или более пользователей-людей и/или физических объектов. Как описано выше по тексту со ссылкой на ФИГ. 2, каждая карта глубин в ряде карт глубин включает в себя множество пикселей, причем каждый задает глубину поверхности, изображение которой формируется этим пикселем.
[0038] На этапе 304 идентифицируется набор нестатичных пикселей, имеющих самую малую глубину, в пределах ряда карт глубин. Другими словами, способ 300 идентифицирует один или более пикселей, которые по существу изменяются по всему ряду карт глубин, и дополнительно идентифицирует набор из одного или более нестатичных пикселей, которые являются ближайшими к опорной точке, такой как устройство отображения или система отслеживания.
[0039] ФИГ. 4 схематично показывает карту 400 глубин. Карта глубин формирует изображение сцены, которая в этом примере включает в себя руку пользователя 104. Карта глубин включает в себя множество пикселей, например пиксель 408. Пиксель 408 формирует изображение поверхности указательного пальца пользователя 104 и задает глубину этой поверхности. ФИГ. 4 также схематично показывает трехмерные x/y/z координаты 410, закодированные для пикселя 408. В то время как ФИГ. 4 показывает одну карту глубин, следует понимать, что карта 400 глубин может быть одной в ряде карт глубин.
[0040] Нестатичный пиксель в карте глубин может быть задан многими способами без отклонения от объема настоящего раскрытия. В одном примере пиксель идентифицируется как нестатичный пиксель, если его глубина (например, координата по z в x/y/z координатах) изменяется на по меньшей мере пороговую величину (с учетом шума и/или других ошибок от камеры глубины). Например, значения разности глубин могут быть заданы для пикселей в последовательных картах глубин вычитанием глубины пикселя во второй карте глубин из глубины того же самого пикселя в первой карте глубин. Порог может быть установлен так, что, если значение разности для этого пикселя ниже порога, пиксель идентифицируется как статичный пиксель. С другой стороны, если значение разности для пикселя равно порогу или превышает его, пиксель идентифицируется как нестатичный пиксель. Таким образом, система 100 бесконтактного ввода может идентифицировать нестатичные пиксели, соответствующие движущимся частям человека или движущемуся объекту (например, перу для ввода данных).
[0041] Другие способы для идентификации нестатичных пикселей могут быть использованы без отклонения от объема этого раскрытия. Например, в некоторых вариантах осуществления значения цветов также могут быть оценены для определения пикселей, которые изменяют цвет более чем на пороговую величину.
[0042] Система 100 бесконтактного ввода может дополнительно идентифицировать набор нестатичных пикселей, имеющих самую малую глубину, в ряде карт глубин. Другими словами, могут быть идентифицированы нестатичные пиксели, которые являются самыми близкими к устройству отображения или некоторой другой опорной точке. Система 100 бесконтактного ввода может сначала идентифицировать нестатичные пиксели и затем идентифицировать те, которые имеют самую малую глубину. В качестве альтернативы, система может сначала идентифицировать пиксели, имеющие самую малую глубину, и затем идентифицировать те, которые являются нестатичными.
[0043] Нестатичные пиксели могут быть идентифицированы как имеющие самую малую глубину на основе некоторого числа критериев. В одном примере идентифицируется нестатичный пиксель с самой малой глубиной в ряде карт глубин, при условии, что не имеется двух или более нестатичных пикселей, которые совместно используют одну самую малую глубину. В таком случае набор нестатичных пикселей включает в себя один единственный пиксель. В качестве альтернативы, один или более нестатичных пикселей могут быть идентифицированы как набор нестатичных пикселей, имеющих самую малую глубину. В этом примере пиксель, имеющий наименьшую глубину (то есть пиксель, который является ближайшим к устройству отображения или другой опорной точке) идентифицируется и порог устанавливается на основе его глубины. Смежные нестатичные пиксели, имеющие глубины в пределах порога этой глубины, также могут быть назначены набору нестатичных пикселей, имеющих самую малую глубину. Еще в одном варианте осуществления идентифицируется пиксель, имеющий самую малую глубину, и один или более соседних пикселей могут быть добавлены в набор нестатичных пикселей, имеющих самую малую глубину. В этом примере набор нестатичных пикселей включает в себя множество смежных пикселей. Такой сценарий проиллюстрирован на ФИГ. 4, где пиксель 408 идентифицируется как имеющий самую малую глубину. Три соседних пикселя также включаются в набор нестатичных пикселей, имеющих самую малую глубину, и вместе упомянутые четыре пикселя формируют непрерывный набор 412 нестатичных пикселей.
[0044] В некоторых вариантах осуществления набор нестатичных пикселей, формирующих изображение некоторого конкретного объекта (например, пальца), может быть отслежен по всему последовательному числу карт глубин. Конкретные пиксели, которые отслеживают объект, могут изменяться от одного кадра к другому, но эвристика может быть использована для определения, какой набор пикселей формирует изображение объекта в каждом кадре. В некоторых вариантах осуществления набор нестатичных пикселей, формирующих изображение объекта, будет идентифицирован только как набор нестатичных пикселей, имеющих самую малую глубину, если те пиксели поддерживают самую малую глубину для порогового последовательного числа карт глубин в ряде карт глубин. Таким образом, можно избежать обусловленных шумом неточностей.
[0045] Набор нестатичных пикселей может непрерывно отслеживаться по всему ряду карт глубин, даже если идентифицируется новый набор нестатичных пикселей, имеющих самую малую глубину. Таким образом, более чем один палец и/или другой объект можно отследить и проанализировать (например, для интерпретации жестов с мультикасанием).
[0046] Возвращаясь к ФИГ. 3, на этапе 306 способ 300 включает в себя отображение позиции идентифицированного набора нестатичных пикселей на позицию курсора. Способ 300, например, может отображать позицию физического пространства пальца пользователя на позицию курсора 116. Таким образом, позиция пальца, выполняющего указание, может быть использована для управления позицией курсора на устройстве отображения.
[0047] В некоторых вариантах осуществления позиция одного нестатичного пикселя, имеющего самую малую глубину, отображается на позицию курсора. В качестве альтернативы, среднее позиций нескольких пикселей может быть отображено на позицию курсора.
[0048] В проиллюстрированных вариантах осуществления палец и рука пользователя, как предполагается, размещаются в относительной близости к системе отслеживания. Если система отслеживания и устройство отображения размещены вместе в вычислительном устройстве, поверхность, изображение которой формируется набором нестатичных пикселей, является пальцем вблизи устройства отображения, отображающего курсор в позиции курсора. В качестве одного неограничивающего примера, палец может рассматриваться как находящийся вблизи устройства отображения, если устройство отображения находится в пределах досягаемости пользователя.
[0049] В некоторых стратегиях, где палец пользователя находится вблизи устройства отображения, курсор может быть отображен на позицию курсора, которая находится настолько близко к реальной позиции пальца, насколько это возможно.
[0050] ФИГ. 5 иллюстрирует такой сценарий. Рука пользователя 104 показана пунктирными линиями наряду с курсором 502. Однако курсор 502 закрывается с позиции пользователя.
[0051] Закрытие курсоров и других элементов пользовательского интерфейса может быть устранено сдвигом позиции курсора в сторону от пальца. ФИГ. 5 показывает сдвинутый курсор 504, позиция которого сдвинута в сторону от позиции пальца пользователя 104 в физическом пространстве.
[0052] Набор нестатичных пикселей также может формировать изображение поверхности пальца, который не находится вблизи устройства отображения, отображающего курсор в позиции курсора. В качестве одного неограничивающего примера палец может не рассматриваться как находящийся вблизи устройства отображения, если устройство отображения не находится в пределах досягаемости пользователя. Изображения поверхностей, не находящихся вблизи устройства отображения, могут быть сформированы внешней, периферийной системой отслеживания, например, которая может иметь место, если система отслеживания не размещена в вычислительном устройстве.
[0053] Отображение позиции набора нестатичных пикселей на позицию курсора может управляться функцией отображения. Функция отображения может включать в себя атрибут масштаба, который управляет, как перемещение пальца и/или устройства ввода отображается на позицию курсора. В случае, где палец используется для обеспечения ввода, атрибут масштаба, например, может быть атрибутом чувствительности, управляющим скоростью перемещения курсора, по мере того как палец перемещается в физическом пространстве.
[0054] Один вариант осуществления функции отображения представлен на ФИГ. 6. Схематично показана карта 600 глубин, которая формирует изображение сцены, включающей в себя первую руку 602 и вторую руку 604. Глубина 210, соответствующая нестатичному пикселю, формирующему изображение первой руки 602, используется для установления масштаба функции отображения. Первая рука 602 находится относительно близко к системе отслеживания, таким образом, масштаб функции отображения соответственно может быть установлен высоким. Высокий масштаб может побуждать курсор к перемещению с относительно высокой скоростью, по мере того как палец перемещается в физическом пространстве. С другой стороны, вторая рука 604 находится дальше от системы отслеживания, чем первая рука 602 и имеет ассоциированный нестатичный пиксель с глубиной, которая соответственно выше. Этот нестатичный пиксель может устанавливать масштаб низким, побуждая курсор к перемещению с относительно более медленной скоростью, по мере того как палец перемещается в физическом пространстве. В других вариантах осуществления масштаб может быть установлен для того, чтобы палец, который находится дальше, перемещал курсор быстрее, чем палец, который находится относительно ближе. Глубина одного или более пикселей может быть использована для установки масштаба с линейной или нелинейной функцией.
[0055] ФИГ. 7 иллюстрирует, как масштаб функции отображения может быть установлен на основе размера набора нестатичных пикселей. В проиллюстрированном примере схематично показана карта 700 глубин, формирующая изображение первой руки 602 и второй руки 604. Набор нестатичных пикселей, соответствующих первой руке 602, содержит четыре пикселя, в то время как набор нестатичных пикселей, соответствующих второй руке 604, содержит два пикселя. Функция отображения может таким образом иметь масштаб, который изменяется как функция размера набора нестатичных пикселей. Размер набора нестатичных пикселей может быть определен фактически любым образом без отклонения от объема этого раскрытия. В качестве одного неограничивающего примера, размер может быть определен вычислением общего числа нестатичных пикселей. В качестве альтернативы, размер может быть определен посредством подбора круглого отверстия (например, отверстий 702 и 704) вокруг периметра набора нестатичных пикселей и вычислением его диаметра.
[0056] В другом варианте осуществления масштаб функции отображения может быть определен на основе того, какой палец руки пользователя идентифицируется как соответствующий набору нестатичных пикселей, имеющих самую малую глубину. Например, система 100 бесконтактного ввода может идентифицировать два или более пальцев пользователя и устанавливать различные масштабы каждому пальцу. Таким образом, пользователь может динамично и легко управлять чувствительностью и перемещением курсора переменным использованием пальцев.
[0057] ФИГ. 8А и 8B дополнительно иллюстрируют, как масштаб функции отображения может изменяться, вызывая соответствующее изменение в чувствительности курсора, управляемого пользователем. На ФИГ. 8А пользователь 104 размещает руку относительно далеко от вычислительного устройства 102. Масштаб функции отображения соответственно устанавливается низким, делая перемещение курсора медленным и точным. Этот низкий масштаб представлен отверстием 802, которое имеет относительно небольшой диаметр. На ФИГ. 8B пользователь 104 переместил руку относительно близко к вычислительному устройству 102. Масштаб функции отображения соответственно устанавливается высоким, делая перемещение курсора быстрым. Этот высокий масштаб представлен отверстием 804, которое имеет относительно большой диаметр. Таким образом, пользователи могут осуществлять беспрепятственное перемещение в сплошной среде чувствительностей курсора. В то время как примерное масштабирование обеспечивается в качестве примера, следует понимать, что фактически любая функция масштабирования может быть использована без отклонения от объема этого раскрытия. Например, может быть использована функция масштабирования, которая побуждает курсор перемещаться быстрее, когда палец находится дальше.
[0058] Система 100 бесконтактного ввода может управлять вычислительными аспектами, отличными от позиции курсора и чувствительности. Посредством отслеживания набора нестатичных пикселей по всему последовательному числу карт глубин, как описано выше по тексту, один или более параметров (например, глубина), ассоциированных с отслеживаемым набором пикселей, могут быть оценены и отображены на фактически любую операцию курсора. Параметры могут включать в себя трехмерный путь (например, x/y/z координаты) отслеживаемого набора пикселей. Операции курсора могут включать в себя операцию щелчка, операцию двойного щелчка, операцию тройного щелчка, операцию выбора, операцию выделения, операцию прокрутки и операцию перетаскивания. Однако эти операции представлены лишь как иллюстративные примеры и не предназначены для того, чтобы быть ограничивающими каким-либо образом. Фактически любая операция курсора может быть интерпретирована и осуществлена со способами, описанными в этом документе.
[0059] ФИГ. 9 показывает способ 900 для приема бесконтактного ввода. Способ 900 может быть осуществлен, например, системой 100 бесконтактного ввода. На этапе 902 ряд карт глубин принимается из камеры глубины, как описано выше по тексту со ссылкой на ФИГ. 2. Ряд карт глубин формирует изображение сцены, включающей в себя человека.
[0060] На этапе 904 человек моделируется с помощью виртуального скелета, который включает в себя множество виртуальных узлов пальцев в соответствии с вариантами осуществления, описанными выше по тексту, конкретно со ссылкой на ФИГ. 2.
[0061] В некоторых вариантах осуществления виртуальные узлы пальцев могут быть смоделированы с ранее обученным алгоритмом машинного обучения. В качестве альтернативы, способ 1000, показанный на ФИГ. 10, может быть использован для моделирования виртуальных узлов пальцев. На этапе 1002 камера глубины, обеспеченная внутренне или внешне к вычислительному устройству, используется для идентификации рук пользователя. Руки могут быть идентифицированы с использованием любого подходящего способа, включающего в себя конвейер 200, без отклонения от объема этого раскрытия. На этапе 1004 вычислительное устройство вычисляет глубину между системой отслеживания и обеими идентифицированными руками, выбирая ближайшую руку для ввода. На этапе 1006 вычислительное устройство идентифицирует каждый кончик пальца идентифицированной руки и необязательно представляет представления идентифицированных пальцев пользователю через экран отображения. На этапе 1008 вычислительное устройство принимает выбор от пользователя, указывающего какой палец должен управлять вводом. На этапе 1010 вычислительное устройство отслеживает палец в трехмерном пространстве и интерпретирует его перемещение в качестве жестов.
[0062] Пальцы также могут быть смоделированы посредством подбора по существу линейного профиля для пикселей, соответствующих одному или более пальцам. Другими словами, пальцы могут быть выражены приближенно палочкообразной геометрией. Угол пальцев между кончиками пальцев и системой отслеживания затем может быть вычислен на основе подобранных линейных профилей. Таким образом, и длина, и кончик пальцев может быть точно смоделирован и отслежен.
[0063] В вариантах осуществления, в которых камера глубины имеет достаточное разрешение, отпечатки пальцев человека могут быть идентифицированы и сопоставлены с пользователем. Таким образом, пользователь может быть идентифицирован и управление курсором или другие вычислительные атрибуты могут быть установлены на предпочтения, ассоциированные с идентифицированным пользователем.
[0064] Возвращаясь к ФИГ. 9, на этапе 906 трехмерное поведение одного или более виртуальных узлов пальцев, смоделированных из одной или более карт глубин, интерпретируется как жест пальцем. Интерпретация трехмерного поведения может включать в себя оценку x/y/z координат одного или более виртуальных узлов пальцев. Интерпретация может дополнительно включать в себя отслеживание виртуального узла пальца во всем последовательном числе карт глубин, как описано выше по тексту.
[0065] Фактически любой палец или жест с мультикасанием может быть интерпретирован без отклонения от объема этого раскрытия. В то время как "мультикасание" используется в этом документе для описания жестов пальцами, которые используют более одного пальца, следует понимать, что настоящее раскрытие обеспечивает возможность выполнения таких жестов бесконтактным методом. Примеры таких бесконтактных жестов с мультикасанием включают в себя жест легкого удара, жест двойного легкого удара, жест нажатия, жест прокрутки, жест панорамирования, жест проведения, жест легкого удара двумя пальцами, жест прокрутки двумя пальцами, жест сжатия, жест расширения и жест поворота. Однако следует понимать, что эти примеры являются лишь иллюстративными и не предназначены для того, чтобы быть ограничивающими каким-либо образом.
[0066] Жесты пальцем могут дополнительно быть интерпретированы на основе выбора, заранее сделанного человеком. Человек, например, может инструктировать систему 100 бесконтактного ввода игнорировать ввод безымянным пальцем и мизинцем, ограничивая интерпретацию жестов пальцем указательным и средним пальцами.
[0067] ФИГ. 11 показывает другой способ 1100 для приема бесконтактного ввода. Способ 1100 может быть осуществлен, например, системой 100 бесконтактного ввода. На этапе 1102 ряд карт глубин принимается из камеры глубины, как описано выше по тексту со ссылкой на ФИГ. 2.
[0068] На этапе 1104 человек моделируется с помощью виртуального скелета, включающего в себя виртуальный узел руки, как описано выше по тексту конкретно со ссылкой на ФИГ. 2.
[0069] На этапе 1106 позиция виртуального узла руки отображается на соответствующую часть одной или более карт глубин в ряде карт глубин. Соответствующая часть формирует изображение руки человека, рука также моделируется виртуальным узлом руки.
[0070] На этапе 1108 моделируется один или более пальцев человека. В частности, как только часть карты глубин, которая формирует изображение руки, идентифицируется за счет виртуального узла руки виртуального скелета, эта часть карты глубин может быть проанализирована, чтобы более точно смоделировать руку и пальцы, изображение которых формируется. Любые подходящие технологии могут быть использованы для моделирования руки и пальцев таким образом. В качестве неограничивающего примера ранее обученный алгоритм машинного обучения может моделировать руку в машиночитаемой форме, из которой могут быть отслежены жесты пальцем. В качестве другого примера может быть использован способ 1000 с ФИГ. 10.
[0071] На этапе 1110 интерпретируются жесты пальцем, выполняемые одним или более пальцами. Интерпретация может быть осуществлена так, как описано выше по тексту. В некоторых вариантах осуществления "жест пальцем" может относиться к жесту, выполняемому физическим объектом, который удерживается или иначе связан с одним или более из моделируемых пальцев. Как таковая интерпретация жеста пальцем, как описано в этом документе, может включать в себя интерпретацию жеста физическим объектом, который удерживается или иначе связан с одним или более из моделируемых пальцев.
[0072] Способ 1100 может обеспечивать увеличение реактивности моделирования пальцев, поскольку, после идентификации виртуального узла руки, отсутствует необходимость в обработке и анализе других частей карты глубин, не соответствующих виртуальному узлу руки.
[0073] Следует понимать, что вышеуказанные способы не предназначены для того, чтобы быть ограничивающими. Бесконтактный ввод может быть принят и интерпретирован с помощью ряда различных способов без отклонения от объема этого раскрытия.
[0074] В некоторых вариантах осуществления способы и процессы, описанные выше по тексту, могут быть связаны с вычислительным устройством из одного или более вычислительных устройств. В частности, такие способы и процессы могут быть реализованы в качестве программы или службы компьютерного приложения, интерфейса прикладного программирования (API), библиотеки и/или другого компьютерного программного продукта.
[0075] ФИГ. 12 схематично показывает неограничивающий вариант осуществления вычислительного устройства 1200, которое может осуществлять один или более из способов и процессов, описанных выше по тексту. Вычислительное устройство 1200 показано в упрощенной форме. Следует понимать, что фактически любая архитектура компьютера может быть использована без отклонения от объема этого раскрытия. В различных вариантах осуществления вычислительное устройство 1200 может принимать форму большой ЭВМ, серверного компьютера, настольного компьютера, переносного компьютера, планшетного компьютера, компьютера домашних развлечений, сетевого вычислительного устройства, игрового устройства, мобильного вычислительного устройства, мобильного устройства связи (например, смартфона) и так далее.
[0076] Вычислительное устройство 1200 включает в себя логическую подсистему 1202 и подсистему 1204 хранения. Вычислительное устройство 1200 может необязательно включать в себя подсистему 1206 ввода, подсистему 1208 отображения, подсистему 1210 связи и/или другие компоненты, не показанные на ФИГ. 12.
[0077] Логическая подсистема 1202 включает в себя одно или более физических устройств, сконфигурированных с возможностью исполнения инструкций. Например, логическая подсистема может быть сконфигурирована с возможностью исполнения инструкций, которые являются частью одного или более приложений, служб, программ, процедур, библиотек, объектов, компонентов, структур данных или других логических конструкций. Такие инструкции могут быть реализованы для выполнения задачи, реализации типа данных, преобразования состояния одного или более компонентов или иного способа достижения желаемого результата.
[0078] Логическая подсистема может включать в себя один или более процессоров, сконфигурированных с возможностью исполнения инструкций программного обеспечения. Дополнительно или в качестве альтернативы, логическая подсистема может включать в себя одну или более аппаратных или программно-аппаратных логических машин, сконфигурированных с возможностью исполнения инструкций аппаратного обеспечения или программно-аппаратного обеспечения. Процессоры логической подсистемы могут быть одноядерными или многоядерными, и программы, исполняемые на них, могут быть сконфигурированы для последовательной, параллельной или распределенной обработки. Логическая подсистема может необязательно включать в себя индивидуальные компоненты, которые распределяются между двумя или более устройствами, которые могут быть удаленно расположены и/или сконфигурированы для координированной обработки. Аспекты логической подсистемы могут быть виртуализированы и исполнены удаленно доступными, сетевыми вычислительными устройствами, сконфигурированными в конфигурации облачных вычислений.
[0079] Подсистема 1204 хранения включает в себя одно или более физических, невременных устройств, сконфигурированных с возможностью хранения данных и/или инструкций, исполняемых логической подсистемой для реализации способов и процессов, описанных в этом документе. Когда такие способы и процессы реализуются, состояние подсистемы 1204 хранения может быть преобразовано - например, для сохранения различных данных.
[0080] Подсистема 1204 хранения может включать в себя съемные носители и/или встроенные устройства. Подсистема 1204 хранения может включать в себя оптические запоминающие устройства (например, CD, DVD, HD-DVD, Диск Blu-Ray и так далее), полупроводниковые запоминающие устройства (например, RAM, EPROM, EEPROM и так далее) и/или магнитные запоминающие устройства (например, жесткий диск, гибкий диск, лентопротяжное устройство, MRAM и так далее), среди прочего. Подсистема 1204 хранения может включать в себя энергозависимые, энергонезависимые, динамические, статические, считывающие/записывающие, только считывающие, произвольного доступа, последовательного доступа, местоположение-адресуемые, файл-адресуемые и/или контент-адресуемые устройства.
[0081] Следует понимать, что подсистема 1204 хранения включает в себя одно или более физических, невременных устройств. Однако в некоторых вариантах осуществления аспекты инструкций, описанных в этом документе, могут быть распространены во временном виде чистым сигналом (например, электромагнитным сигналом, оптическим сигналом и так далее), который не удерживается физическим устройством на ограниченную продолжительность. Кроме того, данные и/или другие формы информации, принадлежащие к настоящему раскрытию, могут быть распространены посредством чистого сигнала.
[0082] В некоторых вариантах осуществления аспекты логической подсистемы 1202 и подсистемы 1204 хранения могут быть интегрированы вместе в один или более логических компонентов аппаратного обеспечения, через которые может быть введена в действие функциональность, описанная в этом документе. Такие логические компоненты аппаратного обеспечения могут включать в себя, например, программируемые пользователем вентильные матрицы (FPGA), интегральный схемы прикладной и программной ориентации (PASIC / ASIC), стандартные изделия прикладной и программной ориентации(PSSP/ASSP), системы "система на кристалле" (SOC) и сложные программируемые логические устройства (CPLD).
[0083] Термины "модуль", "программа" и "ядро" (механизм) могут быть использованы для описания аспекта вычислительного устройства 1200, реализованного для выполнения конкретной функции. В некоторых случаях экземпляр модуля, программы или ядра может быть создан посредством логической подсистемы 1202, исполняющей инструкции, хранимые подсистемой 1204 хранения. Следует понимать, что экземпляры различных модулей, программ и/или ядер могут быть созданы из одного и того же приложения, службы, блока кода, объекта, библиотеки, процедуры, API, функции и так далее. Аналогичным образом экземпляры аналогичных модуля, программы и/или ядра могут быть созданы различными приложениями, службами, блоками кода, объектами, процедурами, API, функциями и так далее. Термины "модуль", "программа" и "ядро" могут охватывать индивидуальные или группы исполняемых файлов, файлов данных, библиотек, драйверов, сценариев, записей баз данных и так далее.
[0084] Следует понимать, что "служба", как используется в этом документе, является прикладной программой, исполняемой в нескольких сеансах пользователя. Служба может быть доступна одному или более системным компонентам, программам и/или другим службам. В некоторых реализациях служба может выполняться на одном или более вычислительных устройствах сервера.
[0085] Когда включена в состав, подсистема 1208 отображения может быть использована для представления визуального представления данных, хранимых подсистемой 1204 хранения. Визуальное представление может принимать форму графического пользовательского интерфейса (GUI). Так как описанные в этом документе способы и процессы изменяют данные, хранимые подсистемой хранения, и таким образом преобразуют состояние подсистемы хранения, состояние подсистемы 1208 отображения может аналогично быть преобразовано для визуального представления изменений в базовых данных. Подсистема 1208 отображения может включать в себя одно или более устройств отображения, использующих фактически любой тип технологии. Такие устройства отображения могут быть объединены с логической подсистемой 1202 и/или подсистемой 1204 хранения в одном корпусе или такие устройства отображения могут быть периферийными устройствами отображения.
[0086] Когда включена в состав, подсистема 1206 ввода может содержать или взаимодействовать с одним или более пользовательскими устройствами ввода, такими как клавиатура, мышь, воспринимающий касание (сенсорный) экран или игровой контроллер. В некоторых вариантах осуществления подсистема ввода может содержать или взаимодействовать с выбранными элементами естественного пользовательского ввода (NUI) (например, системой 108 отслеживания). Такие элементы могут быть интегрированными или периферийными и преобразование и/или обработка действий ввода может быть проведена на или вне платы. Примерные элементы NUI могут включать в себя микрофон для распознавания речи и/или голоса; инфракрасную, цветную, стереоскопическую и/или камеру глубины для машинного зрения и/или распознавания жеста; датчик головы, датчик глаз, акселерометр и/или гироскоп для обнаружения движения и/или распознавания намерения; а также элементы восприятия электрического поля для оценки активности мозга.
[0087] В некоторых вариантах осуществления подсистема 1206 ввода может содержать или взаимодействовать с камерой глубины "структурированного света", которая может быть сконфигурирована для проецирования структурированного инфракрасного освещения, содержащего многочисленные, отдельные особенности (например, линии или точки). Камера может быть сконфигурирована для формирования изображения структурированного освещения, отражаемого от сцены. На основании интервалов между соседними особенностями в различных областях сцены, изображение которой формируется, может быть построена карта глубин сцены.
[0088] Подсистема 1206 ввода может содержать или взаимодействовать с камерой глубины "времени прохождения", которая может включать в себя источник света, сконфигурированный с возможностью проецирования импульсного инфракрасного освещения на сцену. Две камеры могут быть сконфигурированы с возможностью обнаружения импульсного освещения, отражаемого от сцены. Камеры могут включать в себя электронный затвор, синхронизированный с импульсным освещением, но времена интеграции для камер могут отличаться, так что сопоставленное пикселю время прохождения импульсного освещения, от источника света к сцене и затем к камерам, явно отличается от относительного количества света, принимаемого в соответствующих пикселях двух камер.
[0089] Когда включена в состав, подсистема 1210 связи может быть сконфигурирована с возможностью функционально соединять вычислительное устройство 1200 с одним или более другими вычислительными устройствами. Подсистема 1210 связи может включать в себя проводные и/или беспроводные устройства связи, совместимые с одним или более различными протоколами связи. В качестве неограничивающих примеров подсистема связи может быть сконфигурирована для связи через беспроводную телефонную сеть или проводную или беспроводную локальную или глобальную сеть. В некоторых вариантах осуществления подсистема связи может позволять вычислительному устройству 1200 отправлять и/или принимать сообщения к и/или от других устройств через сеть, такую как Интернет.
[0090] Следует понимать, что конфигурации и/или подходы, описанные в этом документе, являются примерными по характеру, и что эти специфические варианты осуществления или примеры не следует рассматривать в ограничительном смысле, поскольку возможны многочисленные вариации. Специфические процедуры или способы, описанные в этом документе, могут представлять одну или более из любого числа стратегий обработки. Как таковые, различные действия, проиллюстрированные и/или описанные, могут быть выполнены в последовательности, проиллюстрированной и/или описанной, в других последовательностях, параллельно или пропущены. Аналогичным образом, порядок описанных выше по тексту процессов может быть изменен.
[0091] Объект изобретения настоящего раскрытия включает в себя все новые и неочевидные комбинации и подкомбинации различных процессов, систем и конфигураций и другие признаки, функции, действия и/или свойства, раскрытые в этом документе, так же как любые и все эквиваленты этого.