ВИЗУАЛЬНОЕ ОТСЛЕЖИВАНИЕ ЦЕЛИ
TARGET VISUAL TRACKING

Уровень техники
Многие компьютерные игры и другие компьютерные видеопрограммы используют сложные управляющие действия, чтобы дать возможность пользователям управлять игровыми персонажами или другими аспектами прикладной программы. Такие управляющие действия могут быть сложными для изучения и тем самым создают барьер для доступа ко многим играм и другим прикладным программам. Кроме того, такие управляющие действия могут сильно отличаться от фактических игровых действий или других действий прикладной программы, для которых они используются. Например, игровое управляющее действие, которое заставляет игрового персонажа размахнуться бейсбольной битой, может быть не похоже на фактическое движение размаха бейсбольной битой.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Это описание сущности изобретения предоставлено для того, чтобы в упрощенной форме представить подборку концепций, которые далее описаны в подробном описании. Это описание сущности изобретения не предназначено для выявления ключевых признаков или основных признаков заявленного изобретения, а также не предназначено для использования в качестве ограничения объема заявленного изобретения. Кроме того, заявленное изобретение не ограничено реализациями, которые устраняют какие-либо или все из недостатков, отмеченных в любой части этого раскрытия.
В данном документе рассматриваются различные варианты воплощения, относящиеся к визуальному отслеживанию цели. Один раскрытый вариант воплощения включает в себя отслеживание цели посредством приема от источника наблюдаемого изображения цели с глубиной и получения находящейся в позе модели цели. Находящаяся в позе модель растеризуется в синтезированное изображение с глубиной. Затем поза модели корректируется, по меньшей мере частично, на основе различий между наблюдаемым изображением с глубиной и синтезированным изображением с глубиной.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1А показывает вариант воплощения иллюстративной системы распознавания, анализа и отслеживания цели, отслеживающей игрока, играющего в игру с имитацией бокса.
Фиг.1В показывает игрока, показанного на фиг.1А, наносящего удар, который отслеживается и интерпретируется как игровое управляющее действие, которое заставляет видеообраз проигрывателя нанести удар в игровом пространстве.
Фиг.2 схематично показывает вычислительную систему в соответствии с вариантом воплощения настоящего раскрытия.
Фиг.3 показывает иллюстративную модель тела, используемую для представления цели-человека.
Фиг.4 показывает в значительной степени вид спереди иллюстративной скелетной модели, используемой для представления цели-человека.
Фиг.5 показывает вид под углом иллюстративной скелетной модели, используемой для представления цели-человека.
Фиг.6 показывает иллюстративную сеточную модель, используемую для представления цели-человека.
Фиг.7 показывает блок-схему последовательности операций иллюстративного способа визуального отслеживания цели.
Фиг.8 показывает иллюстративное наблюдаемое изображение с глубиной.
Фиг.9 показывает иллюстративное синтезированное изображение с глубиной.
Фиг.10 схематично показывает некоторые из пикселей, составляющих синтезированное изображение с глубиной.
Фиг.11А схематично показывает приложение силы к месту приема силы модели.
Фиг.11В схематично показывает результат приложения силы к месту приема силы модели, показанной на фиг.11А.
Фиг.12А показывает видеообраз игрока, реализованный из модели на фиг.11А.
Фиг.12В показывает видеообраз игрока, реализованный из модели на фиг.11В.
ПОДРОБНОЕ ОПИСАНИЕ
Настоящее раскрытие направлено на распознавание, анализ и отслеживание цели. В частности, раскрыто использование камеры глубины или другого источника для получения информации глубины для одной или более целей. Такая информация глубины затем может быть использована для эффективного и точного моделирования и отслеживания одной или более целей, как описано подробно ниже. Описанные в данном документе распознавание, анализ и отслеживание цели обеспечивают устойчивую платформу, в которой одна или более целей могут быть согласованно отслежены при относительно высокой частоте кадров, даже когда цель (цели) принимает позы, которые считаются трудными для анализа с использованием других подходов (например, когда две или более целей частично накладываются и/или закрывают друг друга; когда часть цели закрывает другую часть той же самой цели, когда цель изменяет свою топологию (например, человек, касающийся своей головы) и т.д.).
Фиг.1А показывает неограничивающий пример системы 10 распознавания, анализа и отслеживания цели. В частности, фиг.1А показывает игровую компьютерную систему 12, которая может использоваться для игры во множество различных игр, воспроизведения одного или более различных видов носителей информации и/или управления или манипулирования не игровыми прикладными программами. Фиг.1А также показывает дисплей 14 в виде телевизора 16 с высоким разрешением или HDTV, который может использоваться для представления игрокам, таким как игрок 18, визуальной информации игры. Кроме того, фиг.1А показывает устройство захвата в виде камеры 20 глубины, которое может использоваться для визуального отслеживания одного или более игроков, таких как игрок 18. Пример, показанный на фиг.1А, является не ограничивающим. Как описано ниже со ссылкой на фиг.2, множество систем распознавания, анализа и отслеживания цели различных типов может использоваться без отступления от объема этого раскрытия.
Система распознавания, анализа и отслеживания цели может использоваться для распознавания, анализа и/или отслеживания одной или более целей, таких как игрок 18. Фиг.1А показывает сценарий, в котором игрок 18 отслеживается с использованием камеры 20 глубины таким образом, что движения игрока 18 могут быть интерпретированы игровой системой 12 как управляющие действия, которые могут использоваться для воздействия на игру, исполняемую игровой системой 12. Другими словами, игрок 18 может использовать свои движения для управления игрой. Движения игрока 18 могут быть интерпретированы в качестве игрового управляющего действия фактически любого типа.
Иллюстративный сценарий, изображенный на фиг.1А, показывает игрока 18, играющего в игру с имитацией бокса, которая исполняется игровой системой 12. Игровая система использует телевизор 16 HDTV для визуального представления боксирующего противника 22 игроку 18. Кроме того, игровая система использует телевизор 16 HDTV для визуального представления видеообраза 24 игрока, которым игрок 18 управляет с помощью своих движений. Как показано на фиг.1В, игрок 18 может нанести удар в физическом пространстве в качестве команды, чтобы видеообраз 24 игрока нанес удар в игровом пространстве. Игровая система 12 и камера 20 глубины могут использоваться для распознавания и анализа удара игрока 18 в физическом пространстве таким образом, чтобы удар мог быть интерпретирован как игровое управляющее движение, которое заставляет видеообраз 24 игрока нанести удар в игровом пространстве. Например, фиг.1В показывает телевизор 16 HDTV, визуально представляющий видеообраз 24 игрока, наносящий удар, который попадает в боксирующего противника 22, в ответ на нанесение удара игроком 18 в физическом пространстве.
Другие движения игрока 18 могут быть интерпретированы как другие управляющие действия, такие как управляющие действия для подскока, покачивания, уклона, блока, удара по корпусу или нанесения различных по мощности ударов. Кроме того, некоторые движения могут быть интерпретированы как управляющие действия, которые служат целям, отличающимся от управления видеообразом 24 игрока. Например, игрок может использовать движения для завершения, приостановки или сохранения игры, выбора уровня, просмотра таблицы рекордов, общения с другом и т.д.
В некоторых вариантах воплощения цель может включать в себя человека и объект. В таких вариантах воплощения, например, игрок в электронную игру может держать объект, таким образом, движения игрока и объекта могут использоваться для корректировки и/или управления параметрами электронной игры. Например, движение игрока, держащего ракетку, может быть отслежено и использовано для управления экранной ракеткой в электронной спортивной игре. В другом примере движение игрока, держащего объект, может быть отслежено и использовано для управления экранным оружием в электронной боевой игре.
Системы распознавания, анализа и отслеживания цели могут использоваться для интерпретации движений цели в качестве управляющих действий операционной системы и/или прикладной программы, которые находятся вне области игр. Фактически любым управляемым аспектом операционной системы и/или прикладной программы, такой как игра с имитацией бокса, показанная на фиг.1А и 1В, можно управлять посредством движения цели, такой как игрок 18. Проиллюстрированный сценарий с имитацией бокса предоставлен в качестве примера, но не предназначен для какого-либо ограничения. Напротив, проиллюстрированный сценарий предназначен для демонстрации общей концепции, которая может быть применена ко множеству различных прикладных программ без отступления от контекста этого раскрытия.
Описанные в данном документе способы и процессы могут быть привязаны к множеству вычислительных систем различных типов. Фиг.1А и 1В показывают не ограничивающий пример в виде игровой системы 12, телевизора 16 HDTV и камеры 20 глубины. В качестве другого, более общего примера фиг.2 схематично показывает вычислительную систему 40, которая может выполнять один или более описанных в данном документе способов и процессов распознавания, отслеживания и анализа цели. Вычислительная система 40 может принимать множество различных видов, в том числе среди других систем, но без ограничения, игровых консолей, игровых систем на основе персонального компьютера, военных систем отслеживания и/или наведения на цель и систем опознавания персонажей с “зеленым экраном” или захватом движения.
Вычислительная система 40 может включать в себя логическую подсистему 42, подсистему 44 хранения данных, подсистему 46 отображения и/или устройство 48 захвата. Вычислительная система может факультативно включать в себя компоненты, которые не показаны на фиг.2, и/или некоторые компоненты, которые показаны на фиг.2, могут являться периферийными компонентами, которые не интегрированы в вычислительную систему.
Логическая подсистема 42 может включать в себя одно или более физических устройств, выполненных с возможностью исполнять одну или более команд. Например, логическая подсистема может быть выполнена с возможностью исполнять одну или более команд, которые являются частью одной или более программ, подпрограмм, объектов, компонентов, структур данных или других логических конструкций. Такие команды могут быть реализованы для выполнения задачи, реализации типа данных, преобразования состояния одного или более устройств или иного достижения желаемого результата. Логическая подсистема может включать в себя один или более процессоров, которые выполнены с возможностью исполнять программные команды. Дополнительно или в качестве альтернативы логическая подсистема может включать в себя одну или более аппаратных или программно-аппаратных логических машин, выполненных с возможностью исполнять аппаратные или программно-аппаратные команды. Логическая подсистема может факультативно включать в себя индивидуальные компоненты, которые распределены по двум или более устройствам, которые в некоторых вариантах воплощения могут быть расположены удаленно.
Подсистема 44 хранения данных может включать в себя одно или более физических устройств, выполненных с возможностью хранить данные и/или команды, исполнимые посредством логической подсистемы, для реализации описанных в данном документе способов и процессов. Когда такие способы и процессы реализуются, состояние подсистемы 44 хранения данных может быть преобразовано (например, для хранения разных данных). Подсистема 44 хранения данных может включать в себя сменные носители и/или встроенные устройства. Подсистема 44 хранения данных может включать в себя среди других оптические запоминающие устройства, полупроводниковые запоминающие устройства (например, оперативное запоминающее устройство (RAM; ОЗУ), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM; ЭСППЗУ), перепрограммируемое устройство и т.д.) и/или магнитные запоминающие устройства. Подсистема 44 хранения данных может включать в себя устройства с одной или более из следующих характеристик: энергозависимые, энергонезависимые, динамические, статические, для чтения/записи, только для чтения, с произвольным доступом, с последовательным доступом, с адресацией по местоположению, с файловой адресацией и ассоциативные. В некоторых вариантах воплощения логическая подсистема 42 и подсистема 44 хранения данных могут быть интегрированы в одно или более общих устройств, таких как специализированная интегральная схема или система на микросхеме.
Фиг.2 также показывает аспект подсистемы хранения данных в виде машиночитаемых сменных носителей 50, которые могут использоваться для хранения и/или передачи данных и/или исполняемых команд для реализации описанных в данном документе способов и процессов.
Подсистема 46 отображения может использоваться для визуального представления данных, хранимых подсистемой 44 хранения данных. По мере того как описанные в данном документе способы и процессы изменяют данные, хранимые подсистемой хранения данных, и тем самым преобразовывают состояние подсистемы хранения данных, состояние подсистемы 46 отображения может быть аналогичным образом преобразовано для визуального представления изменений в лежащих в основе данных. В качестве не ограничивающего примера описанные в данном документе распознавание, отслеживание и анализ могут быть отражены через подсистему 46 отображения в виде игрового персонажа, который изменяет позы в игровом пространстве в ответ на движения игрока в физическом пространстве. Подсистема 46 отображения может включать в себя одно или более устройств отображения, использующих технологию практически любого типа. Такие устройства отображения могут быть объединены с логической подсистемой 42 и/или подсистемой 44 хранения данных в совместно используемом корпусе, или такие устройства отображения могут являться периферийными устройствами отображения, как показано на фиг.1А и 1В.
Вычислительная система 40 дополнительно включает в себя устройство 48 захвата, выполненное с возможностью получать изображения с глубиной для одной или более целей. Устройство 48 захвата может быть выполнено с возможностью захватывать видеоинформацию с информацией глубины через любую подходящую методику (например, время прохождения, структурированное освещение, стереоскопическое изображение и т.д.). Таким образом, устройство 48 захвата может включать в себя камеру глубины, видеокамеру, стереоскопические камеры и/или другие подходящие устройства захвата.
Например, при анализе по методике времени прохождения устройство 48 захвата может испускать инфракрасный свет к цели и затем может использовать датчики для обнаружения света, отраженного от поверхности цели. В некоторых случаях может использоваться импульсный инфракрасный свет, причем время между исходящим световым импульсом и соответствующим входящим световым импульсом может быть измерено и использовано для определения физического расстояния от устройства захвата до конкретного местоположения на цели. В некоторых случаях фаза исходящей световой волны может быть сравнена с фазой входящей световой волны для определения сдвига фазы, и сдвиг фазы может быть использован для определения физического расстояния от устройства захвата до конкретного местоположения на цели.
В другом примере анализ по методике времени прохождения может использоваться для косвенного определения физического расстояния от устройства захвата до конкретного местоположения на цели посредством анализа интенсивности отраженного луча света в течение времени посредством таких методик, как формирование изображений с помощью прерывистых световых импульсов.
В другом примере для захвата информации глубины устройством 48 захвата может быть использован анализ с помощью структурированного освещения. При таком анализе структурированный свет (то есть свет, отображаемый с известным рисунком, таким как сетчатый рисунок или рисунок в полоску) может быть спроецирован на цель. После столкновения с поверхностью цели рисунок в ответ может стать деформированным, и эта деформация рисунка может быть изучена для определения физического расстояния от устройства захвата до конкретного местоположения на цели.
В другом примере устройство захвата может включать в себя две или более физически разделенные камеры, которые обозревают цель с различных углов для получения стереоскопических визуальных данных. В таких случаях стереоскопические визуальные данные могут быть проанализированы для формирования информации глубины.
В других вариантах воплощения устройство 48 захвата может использовать другие технологии для измерения и/или вычисления значений глубины. Дополнительно устройство 48 захвата может организовать вычисленную информацию глубины в “уровни по оси Z”, то есть уровни, перпендикулярные по отношению к оси Z, простирающейся от камеры глубины вдоль ее луча обзора к наблюдателю.
В некоторых вариантах воплощения две или более разные камеры могут быть включены в интегрированное устройство захвата. Например, камера глубины и видеокамера (например, видеокамера RGB) могут быть включены в общее устройство захвата. В некоторых вариантах воплощения могут совместно использоваться два или более отдельных устройства захвата. Например, могут использоваться камера глубины и отдельная видеокамера. Когда используется видеокамера, она может использоваться для обеспечения данных отслеживания цели, данных подтверждения для коррекции ошибок отслеживания цели, захвата изображения, распознавания лица, отслеживания движения пальцев рук (или других малых признаков) с высокой точностью, светового обнаружения и/или других функций.
Следует понимать, что по меньшей мере некоторые операции анализа и отслеживания цели могут быть выполнены посредством логической машины одного или более устройств захвата. Устройство захвата может включать в себя один или более встроенных блоков обработки, выполненных с возможностью выполнять одну или более функций анализа и/или отслеживания цели. Устройство захвата может включать в себя встроенное программное обеспечение для обеспечения возможности обновления такой встроенной логической схемы обработки.
Вычислительная система 40 может факультативно включать в себя одно или более устройств ввода данных, таких как контроллер 52 и контроллер 54. Устройства ввода данных могут использоваться для управления работой вычислительной системы. В контексте игры устройства ввода данных, такие как контроллер 52 и/или контроллер 54, могут использоваться для управления аспектами игры, не управляемыми через описанные в данном документе способы и процедуры распознавания, отслеживания и анализа цели. В некоторых вариантах воплощения устройства ввода данных, такие как контроллер 52 и/или контроллер 54, могут включать в себя один или больше акселерометров, гироскопов, систем обнаружения цели с помощью инфракрасного излучения и т.д., которые могут использоваться для измерения движения контроллеров в физическом пространстве. В некоторых вариантах воплощения вычислительная система может факультативно включать в себя и/или использовать перчатки для ввода, клавиатуры, мышь, сенсорные планшеты, шаровые указатели, сенсорные экраны, кнопки, переключатели, круговые шкалы и/или другие устройства ввода данных. Будет понятно, что распознавание, отслеживание и анализ цели могут использоваться для управления или дополнения аспектов игр или других прикладных программ, которыми традиционно управляет устройство ввода данных, такое как игровой контроллер. В некоторых вариантах воплощения описанное в данном документе отслеживание цели может быть использовано как полная замена других видов пользовательского ввода, в то время как в других вариантах воплощения такое отслеживание цели может использоваться в дополнение к одному или более другим видам пользовательского ввода.
Вычислительная система 40 может быть выполнена с возможностью выполнять описанные в данном документе способы отслеживания цели. Однако следует понимать, что вычислительная система 40 предоставлена как неограничивающий пример устройства, которое может выполнять такое отслеживание цели. Другие устройства находятся в объеме этого раскрытия.
Вычислительная система 40 или другое подходящее устройство может быть выполнено с возможностью представлять каждую цель с помощью модели. Как описано более подробно ниже, информация, полученная из такой модели, может быть сравнена с информацией, полученной из устройства захвата, такого как камера глубины, с тем чтобы фундаментальные пропорции или форма модели, а также ее текущая поза, могли быть скорректированы для более точного представления смоделированной цели. Модель может быть представлена одной или более полигональными сетками, множеством математических примитивов и/или через другие подходящие машинные представления смоделированной цели.
Фиг.3 показывает не ограничивающее визуальное представление иллюстративной модели 70 тела. Модель 70 тела представляет собой машинное представление смоделированной цели (например, игрока 18 с фиг.1А и 1В). Модель тела может включать в себя одну илиболее структур данных, которые включают в себя множество переменных, которые совместно определяют смоделированную цель на языке игры или другой прикладной программы/операционной системы.
Модель цели может быть сконфигурирована по-разному без отступления от контекста этого раскрытия. В некоторых примерах модель может включать в себя одну или более структур данных, которые представляют цель как трехмерную модель, содержащую жесткие и/или деформируемые формы или части тела. Каждая часть тела может быть охарактеризована как математический примитив, примеры которого включают в себя, но без ограничения, сферы, анизотропически масштабированные сферы, цилиндры, анизотропные цилиндры, гладкие цилиндры, параллелепипеды, скошенные параллелепипеды, призмы и т.п.
Например, модель 70 тела на фиг.3 включает в себя части bp1-bp14 тела, каждая из которых представляет отдельную часть смоделированной цели. Каждая часть тела представляет собой трехмерную форму. Например, часть bp3 является прямоугольной призмой, которая представляет левую руку смоделированной цели, и часть bp5 является восьмиугольной призмой, которая представляет левое плечо смоделированной цели. Модель 70 тела является иллюстративной в этом смысле, что модель тела может содержать любое количество частей тела, каждая из которых может являться любым понимаемым машиной представлением соответствующей части смоделированной цели.
Модель, включающая в себя две или более частей тела, также может включать в себя один или более суставов. Каждый сустав может дать возможность одной или более частям тела двигаться относительно одной или более других частей тела. Например, модель, представляющая цель-человека, может включать в себя множество жестких и/или деформируемых частей тела, причем некоторые части тела могут представлять соответствующую анатомическую часть тела цели-человека. Кроме того, каждая часть тела модели может содержать один или более структурных элементов (то есть “костей”), и суставы расположены на пересечении смежных костей. Следует понимать, что некоторые кости могут соответствовать анатомическим костям в цели-человека и/или некоторые кости могут не иметь соответствующих анатомических костей в цели-человека.
Кости и суставы могут совместно составлять скелетную модель, которая может являться составным элементом модели. Скелетная модель может включать в себя один или более скелетных элементов для каждой части тела и сустав между смежными скелетными элементами. Иллюстративная скелетная модель 80 и иллюстративная скелетная модель 82 показаны на фиг.4 и 5 соответственно. Фиг.4 показывает скелетную модель 80, рассматриваемую спереди, с суставами j1-j33. Фиг.5 показывает скелетную модель 82, рассматриваемую под углом, также с суставами j1-j33. Скелетная модель 82 дополнительно включает в себя поворотные суставы j34-j47, где каждый поворотный сустав может использоваться для отслеживания углов осевого поворота. Например, угол осевого поворота может использоваться для определения угловой ориентации элемента относительно его родительского элемента и/или туловища. Например, если скелетная модель иллюстрирует осевое вращение руки, поворотный сустав j40 может использоваться для указания направления, в котором указывает соответствующее запястье (например, ладонь обращена вверх). Таким образом, тогда как суставы могут принимать силы (приложения сил) и корректировать скелетную модель, как описано ниже, поворотные суставы вместо этого могут быть созданы и использованы для отслеживания углов осевого поворота. В более общих словах, посредством исследования ориентации элемента относительно его родительского элемента и/или туловища может быть определен угол осевого поворота. Например, при исследовании голени может быть исследована ориентация голени относительно соответствующего бедра и бедренных суставов для определения угла осевого поворота.
Как описано выше, некоторые модели могут включать в себя скелет и/или части тела, которые служат в качестве машинного представления смоделированной цели. В некоторых вариантах воплощения модель может в качестве альтернативы или дополнительно включать в себя каркасную сетку, которая может включать в себя иерархии жестких полигональных сеток, одну или более деформируемых сеток или любую их комбинацию. В качестве не ограничивающего примера фиг.6 показывает модель 90, включающую в себя множество треугольников (например, треугольник 92), расположенных в сетке, которая задает форму модели тела. Такая сетка может включать в себя пределы сгибов на каждом краю многоугольника. Когда используется сетка, количество треугольников и/или других многоугольников, которые совместно составляют сетку, может быть выбрано для достижения желаемого равновесия между качеством и вычислительными затратами. Большее количество треугольников может обеспечить более высококачественные и/или более точные модели, в то время как меньшее количество треугольников может являться менее требовательным в вычислительном отношении. Модель тела, включающая в себя полигональную сетку не обязательно должна включать в себя скелет, хотя может в некоторых вариантах воплощения.
Описанные выше модели частей тела, скелетные модели и полигональные сетки представляют собой не ограничивающие иллюстративные типы моделей, которые могут использоваться в качестве машинных представлений смоделированной цели. Другие модели также находятся в объеме этого раскрытия. Например, некоторые модели могут включать в себя вставки, неоднородные рациональные В-сплайны, поверхности раздела или другие поверхности высшего порядка. Модель также может включать в себя поверхностные текстуры и/или другую информацию для более точного представления одежды, волос и/или других аспектов смоделированной цели. Модель может факультативно включать в себя информацию, имеющую отношение к текущей позе, одной или более прошлым позам и/или физике модели. Следует понимать, что любая модель, которая может быть помещена в позу и затем растеризована (или иным образом реализована или выражена) в синтезированное изображение с глубиной, является совместимой с описанными в данном документе распознаванием, анализом и отслеживанием цели.
Как упомянуто выше, модель служит представлением цели, такой как игрок 18 на фиг.1А и 1В. По мере движения цели в физическом пространстве информация от устройства захвата, такого как камера 20 глубины на фиг.1А и 1В, может использоваться для корректировки позы и/или фундаментального размера/формы модели, чтобы более точно представить цель. В частности, одна или более сил могут быть приложены к одному или более аспектам приема силы модели для приведения модели в позу, которая более близко соответствует позе цели в физическом пространстве. В зависимости от типа модели, которая используется, сила может быть приложена к суставу, средней точке части тела, вершине треугольника или любому другому подходящему аспекту приема силы модели. Кроме того, в некоторых вариантах воплощения могут использоваться два или более различных вычисления. Как описано более подробно ниже, различия между наблюдаемым изображением цели, извлеченным посредством устройства захвата, и растеризованным (то есть синтезированным) изображением модели может использоваться для определения сил, которые приложены к модели, чтобы привести тело в другую позу.
Фиг.7 показывает блок-схему последовательности операций иллюстративного способа 100 отслеживания цели с использованием модели (например, модели 70 тела на фиг.3). В некоторых вариантах воплощения цель может представлять собой человека, и человек может представлять собой одну из двух или более отслеживаемых целей. Таким образом, в некоторых вариантах воплощения способ 100 может быть исполнен вычислительной системой (например, игровой системой 12, показанной на фиг.1, и/или вычислительной системой 40, показанной на фиг.2) для отслеживания одного или более игроков, взаимодействующих с электронной игрой, воспроизводимой на вычислительной системе. Как представлено выше, отслеживание игроков позволяет физическим движениям этих игроков действовать в качестве пользовательского интерфейса в реальном времени, который корректирует и/или управляет параметрами электронной игры. Например, отслеженные движения игрока могут использоваться для перемещения экранного персонажа или видеообраза в ролевой электронной игре. В другом примере отслеженные движения игрока могут использоваться для управления экранным транспортным средством в электронной игре с имитацией гонок. В еще одном примере отслеженные движения игрока могут использоваться для управления созданием или организацией объектов в виртуальной среде.
На этапе 102 способ 100 содержит прием наблюдаемого изображения с глубиной цели от источника. В некоторых вариантах воплощения источник может являться камерой глубины, выполненной с возможностью получать информацию глубины о цели через подходящую методику, такую как анализ времени прохождения, анализ с применением структурированного освещения, анализ со стереоскопическим зрением или другие подходящие методики. Наблюдаемое изображение с глубиной может включать в себя множество наблюдаемых пикселей, причем каждый наблюдаемый пиксель имеет наблюдаемое значение глубины. Наблюдаемое значение глубины включает в себя информацию глубины цели, наблюдаемой из источника. Фиг.8 показывает визуальное представление иллюстративного наблюдаемого изображения 140 с глубиной. Как показано, наблюдаемое изображение 140 с глубиной захватывает иллюстративную наблюдаемую позу человека (например, игрока 18), стоящего с поднятыми руками.
Как показано на этапе 104 на фиг.1, после приема наблюдаемого изображения с глубиной способ 100 может факультативно содержать дискретизацию с понижением по частоте наблюдаемого изображения с глубиной до более низкой разрешающей способности. Дискретизация с понижением по частоте до более низкой разрешающей способности может позволить легче использовать и быстрее обрабатывать наблюдаемое изображение с глубиной с меньшими вычислительными накладными расходами.
Как показано на этапе 106, после приема наблюдаемого изображения с глубиной способ 100 может факультативно включать в себя удаление фоновых элементов, не имеющих отношения к игроку, из наблюдаемого изображения с глубиной. Удаление таких фоновых элементов может включать в себя разделение различных областей наблюдаемого изображения с глубиной на фоновые области и области, занятые изображением цели. Фоновые области могут быть удалены из изображения или идентифицированы таким образом, чтобы они могли быть проигнорированы во время одного или более последующих этапов обработки. Может использоваться практически любая методика удаления, и факультативно может использоваться информация из отслеживания (и из предыдущего кадра) для помощи и улучшения качества удаления фона.
Как показано на этапе 108, после приема наблюдаемого изображения с глубиной способ 100 может факультативно включать в себя удаление и/или сглаживание одного или более значений глубины с высокой дисперсией и/или шумами в наблюдаемом изображении с глубиной. Такие значения глубины с высокой дисперсией и/или шумами в наблюдаемом изображении с глубиной могут происходить из многих различных источников, таких как случайные и/или систематические ошибки, происходящие во время процесса захвата изображения, дефекты и/или аберрации, происходящие от устройства захвата и т.д. Поскольку такие значения глубины с высокой дисперсией и/или шумами могут представлять собой артефакты процесса захвата изображения, включение этих значений в какой-либо будущий анализ изображения может исказить результаты и/или замедлить вычисления. Таким образом, удаление таких значений может обеспечить улучшенную целостность данных для будущих вычислений.
Другие значения глубины также могут быть отфильтрованы. Например, точность операций наращивания, описанных ниже со ссылкой на этап 118, может быть улучшена посредством выборочного удаления пикселей, удовлетворяющих одному или более критериям удаления. Например, если значение глубины находится на полпути между рукой и туловищем, которое закрывает рука, удаление этого пикселя может препятствовать тому, чтобы операции наращивания перешли из одной части тела на другую во время последующих этапов обработки.
Как показано на этапе 110, способ 100 может факультативно включать в себя заполнение и/или восстановление частей недостающей и/или удаленной информации глубины. Такое заполнение может быть достигнуто посредством усреднения ближайших соседей, фильтрации и/или любого другого подходящего способа.
Как показано на этапе 112 на фиг.7, способ 100 может включать в себя получение модели (например, модели 70 тела на фиг.3). Как описано выше, модель может включать в себя одну или более полигональных сеток, один или более математических примитивов, одну или более поверхностей высшего порядка и/или другие признаки, используемые для обеспечения машинного представления цели. Кроме того, модель может существовать как экземпляр одной или более структур данных, существующих в вычислительной системе.
В некоторых вариантах воплощения способа 100 модель может представлять собой имеющую позу модель, полученную из предыдущего по времени шага. Например, если способ 100 выполняется непрерывно, может быть получена имеющая позу модель, полученная в результате предыдущей итерации способа 100, соответствующей предыдущему по времени шагу.
В некоторых вариантах воплощения поза может быть определена посредством одного или более алгоритмов, которые могут проанализировать изображение с глубиной и идентифицировать на грубом уровне, где расположена интересующая цель (цели) (например, человек (люди)), и/или позу такой цели (целей). Алгоритмы могут использоваться для выбора позы во время начальной итерации или всякий раз, когда полагается, что алгоритм может выбрать позу, более точную, чем поза, вычисленная во время предыдущего по времени шага.
В некоторых вариантах воплощения модель может быть получена из базы данных и/или другой программы. Например, модель может быть не доступна во время первой итерации способа 100, и в этом случае модель может быть получена из базы данных, содержащей одну или более моделей. В таком случае модель из базы данных может быть выбрана с использованием алгоритма поиска, разработанного для выбора модели, показывающей позу, подобную позе цели. Даже если доступна модель из предыдущего по времени шага, может использоваться модель из базы данных. Например, модель из базы данных может использоваться после определенного количества кадров, если цель изменяла позы более предопределенного порога, и/или согласно другим критериям.
В других вариантах воплощения может быть синтезирована модель или ее части. Например, если ядро тела цели (туловище, средняя часть и бедра) представлены посредством деформируемой полигональной модели, эта модель может быть первоначально создана с использованием информационного содержания наблюдаемого изображения с глубиной, где контур цели в изображении (то есть силуэт) может использоваться для формирования сетки в размерностях Х и Y. Дополнительно при таком подходе наблюдаемое значение (значения) глубины в этой области наблюдаемого изображения с глубиной может использоваться для “лепки” сетки в направлении XY, а также в направлении Z модели для более благоприятного представления формы тела цели.
Способ 100 может дополнительно содержать представление какой-либо одежды, имеющейся на цели, с использованием соответствующего подхода. Такой соответствующий подход может включать в себя добавление к вспомогательной геометрии модели в виде примитивов или полигональных сетей и факультативную корректировку вспомогательной геометрии на основе поз для отражения силы тяжести, моделирования ткани одежды и т.д. Такой подход может облегчить “лепку” моделей для более реалистического представления целей.
Как показано на этапе 114, способ 100 может факультативно содержать применение алгоритма механического момента к модели. Поскольку механический момент различных частей цели может предсказать изменение последовательности изображений, такой алгоритм может помочь при получении позы модели. Алгоритм механического момента может использовать траекторию каждого из суставов или вершин модели в фиксированном количестве предыдущих кадров, чтобы помочь при получении модели.
В некоторых вариантах воплощения информация о том, что различные части цели могут переместиться на ограниченное расстояние за временной кадр (например, 1/30 или 1/60 секунды), может использоваться в качестве ограничения при получении модели. Такое ограничение может использоваться для исключения некоторых поз, когда известен предыдущий кадр.
На этапе 116 на фиг.7 способ 100 может также включать в себя растеризацию модели в синтезированное изображение с глубиной. Растеризация позволяет преобразовать модель, описанную посредством математических примитивов, полигональных сеток или других объектов, в синтезированное изображение с глубиной, описанное посредством множества пикселей.
Растеризация может быть выполнена с использованием одной или более различных методик и/или алгоритмов. Например, растеризация модели может включать в себя проецирование представления модели на двухмерную плоскость. В случае модели, включающей в себя множество форм частей тела (например, модели 70 тела на фиг.3), растеризация может включать в себя проецирование и растеризацию коллекции форм частей тела на двухмерную плоскость. Для каждого пикселя на двухмерной плоскости, на которую проецируется модель, может быть сохранена информация различных типов.
Фиг.9 показывает визуальное представление 150 иллюстративного синтезированного изображения с глубиной, соответствующего модели 70 тела на фиг.3. Фиг.10 показывает матрицу 160 пикселей части того же самого синтезированного изображения с глубиной. Как указано номером 170, каждый синтезированный пиксель в синтезированном изображении с глубиной может включать в себя синтезированное значение глубины. Синтезированное значение глубины для заданного синтезированного пикселя может представлять собой значение глубины из соответствующей части модели, которая представлена этим синтезированным пикселем, определенное во время растеризации. Другими словами, если часть предплечья (например, часть bp4 тела, соответствующая предплечью, на фиг.3) спроецирована на двухмерную плоскость, соответствующему синтезированному пикселю (например, синтезированному пикселю 162 на фиг.10) может быть задано синтезированное значение глубины (например, синтезированное значение 164 глубины на фиг.10), равное значению глубины этой части тела предплечья. В проиллюстрированном примере синтезированный пиксель 162 имеет синтезированное значение глубины 382 см. Аналогичным образом, если соседняя часть тела кисти руки (например, часть bp3 тела, соответствующая кисти руки, на фиг.3) спроецирована на двухмерную плоскость, соответствующему синтезированному пикселю (например, синтезированному пикселю 166 на фиг.10) может быть задано синтезированное значение глубины (например, синтезированное значение 168 глубины на фиг.10), равное значению глубины этой части тела кисти руки. В проиллюстрированном примере синтезированный пиксель 166 имеет синтезированное значение глубины 383 см. Следует понимать, что изложенное выше предоставлено в качестве примера. Синтезированные значения глубины могут быть сохранены в любых единицах измерения или как безразмерное число.
Как обозначено номером 170, каждый синтезированный пиксель в синтезированном изображении с глубиной может включать в себя первоначальный индекс части тела, определенный во время растеризации. Такой первоначальный индекс части тела может указывать, какой из частей тела модели соответствует этот пиксель. В проиллюстрированном примере на фиг.10 синтезированный пиксель 162 имеет первоначальный индекс части тела bp4, и синтезированный пиксель 166 имеет первоначальный индекс части тела bp3. В некоторых вариантах воплощения первоначальный индекс части тела синтезированного пикселя может быть равным нулю, если синтезированный пиксель не соответствует части тела цели (например, если синтезированный пиксель представляет собой фоновый пиксель). В некоторых вариантах воплощения синтезированным пикселям, которые не соответствуют части тела, могут быть заданы индексы разных типов.
Как обозначено номером 170, каждый синтезированный пиксель в синтезированном изображении с глубиной может включать в себя первоначальный индекс игрока, определенный во время растеризации, первоначальный индекс игрока соответствует цели. Например, если имеется две цели, то синтезированные пиксели, соответствующие первой цели, будут иметь первый индекс игрока, и синтезированные пиксели, соответствующие второй цели, будут иметь второй индекс игрока. В проиллюстрированном примере матрица 160 пикселей соответствует только одной цели, поэтому синтезированный пиксель 162 имеет первоначальный индекс игрока P1 и синтезированный пиксель 166 имеет первоначальный индекс игрока P1. Могут использоваться системы индексации других типов без отступления от объема этого раскрытия.
Как обозначено номером 170, каждый синтезированный пиксель в синтезированном изображении с глубиной может включать в себя адрес пикселя. Адрес пикселя может задавать позицию пикселя относительно других пикселей. В проиллюстрированном примере синтезированный пиксель 162 имеет адрес пикселя [5, 7] и синтезированный пиксель 166 имеет адрес пикселя [4, 8]. Следует понимать, что могут использоваться другие схемы адресации без отступления от объема этого раскрытия.
Как обозначено номером 170, каждый синтезированный пиксель может факультативно включать в себя элементы информации других типов, некоторые из которых могут быть получены после растеризации. Например, каждый синтезированный пиксель может включать в себя обновленный индекс части тела, который может быть определен как часть операции привязки, выполненной во время растеризации, как описано ниже. Каждый синтезированный пиксель может включать в себя обновленный индекс игрока, который может быть определен как часть операции привязки, выполненной во время растеризации. Каждый синтезированный пиксель может включать в себя обновленный индекс части тела, который может быть получен как часть операции наращивания/фиксирования, как описано ниже. Каждый синтезированный пиксель может включать в себя обновленный индекс игрока, который может быть получен как часть операции наращивания/фиксирования, как описано выше.
Представленные выше иллюстративные типы информации пикселей не являются ограничивающими. Различные другие типы информации могут быть сохранены как часть каждого пикселя. Такая информация может храниться как часть общей структуры данных, или разные типы информации могут быть сохранены в разных структурах данных, которые могут быть отображены на конкретные местоположения пикселей (например, через адрес пикселя). В качестве примера индексы игроков и/или индексы частей тела, полученные как часть операции привязки во время растеризации, могут быть сохранены в карте растеризации и/или карте привязки, в то время как индексы игроков и/или индексы частей тела, полученные как часть операции наращивания/фиксирования после растеризации, могут быть сохранены в карте наращивания, как описано ниже. Не ограничивающие примеры других типов информации пикселей, которая может быть присвоена каждому пикселю, включают в себя, но без ограничения, индексы суставов, индексы костей, индексы вершин, индексы треугольников, индексы средних частей и т.п.
На этапе 118 способ 100, показанный на фиг.7, может факультативно включать в себя привязку и/или наращивание индексов частей тела и/или индексов игроков. Другими словами, синтезированное изображение с глубиной может быть дополнено таким образом, чтобы индекс части тела и/или индекс игрока некоторых пикселей был изменен в попытке более близкого соответствия смоделированной цели.
При выполнении описанной выше растеризации могут быть созданы один или более Z-буферов и/или карт индексов частей тела/игроков. В качестве не ограничивающего примера первая версия такого буфера/карты может быть создана посредством выполнения Z-теста, в котором выбирается самая близкая к наблюдателю (например, к камере глубины) поверхность, и индекс части тела и/или индекс игрока, соответствующий этой поверхности, записывается в соответствующий пиксель. Эта карта может называться картой растеризации или первоначальной синтезированной картой глубины. Вторая версия такого буфера/карты может быть создана посредством выполнения Z-теста, в котором выбирается поверхность, которая является самой близкой к наблюдаемому значению глубины в этом пикселе, и индекс части тела и/или индекс игрока, соответствующий этой поверхности, записывается в соответствующий пиксель. Эта карта может называться картой привязки. Такие тесты могут быть ограничены таким образом, чтобы отклонять расстояние по оси Z между синтезированным значением глубины и наблюдаемым значением глубины, которое находится вне предопределенного порога. В некоторых вариантах воплощения могут поддерживаться два или более Z-буферов и/или две или более карт индексов частей тела/игроков, что позволяет тем самым выполнять два или более из описанных выше тестов.
Третья версия буфера/карты может быть создана посредством наращивания и/или коррекции карты индексов частей тела/игроков. Эта карта может называться картой наращивания. Начиная с копии описанной выше карты привязки, значения могут наращиваться по любым “неизвестным” значениям в пределах предопределенного расстояния по оси Z таким образом, чтобы пространство, занимаемое целью, но еще не занятое моделью тела, могло быть заполнено надлежащими индексами частей тела/игрока. Такой подход может дополнительно включать в себя перехват известного значения, если идентифицировано более благоприятное соответствие.
Карта наращивания может начаться с прохода по синтезированным пикселям карты привязки для обнаружения пикселей, имеющих соседние пиксели с другим индексом части тела/игрока. Они могут рассматриваться как “краевые” пиксели, то есть границы, вдоль которых значения могут быть факультативно распространены. Как представлено выше, наращивание значения пикселя может включать в себя наращивание либо в “неизвестные”, либо в “известные” пиксели. Для “неизвестных” пикселей значение индекса части тела/игрока в одном сценарии, например, могло быть до этого равным нулю, но теперь может иметь соседний пиксель, отличный от нуля. В таком случае четыре непосредственно соседних пикселя могут быть исследованы, и соседний пиксель, имеющий наблюдаемое значение глубины, более похожее на значение интересующего пикселя, может быть выбран и присвоен интересующему пикселю. В случае “известных” пикселей может оказаться возможным, что пиксель с известным отличным от нуля значением индекса части тела/игрока может быть перехвачен, если один из его соседних пикселей имеет значение глубины, записанное во время растеризации, которая более близко соответствует наблюдаемому значению глубины интересующего пикселя, чем синтезированное значение глубины для этого пикселя.
Дополнительно для эффективности обновление значения индекса части тела/игрока синтезированного пикселя может включать в себя добавление его соседних четырех пикселей в очередь пикселей, которые будут повторно рассмотрены при последующем проходе. Таким образом, значения могут продолжить распространяться вдоль границ без выполнения целого прохода по всем пикселям. В качестве другой оптимизации могут быть отслежены разные блоки пикселей размера N N (например, блоки пикселей размера 16 16), занятые интересующей целью, с тем чтобы могли быть проигнорированы другие блоки, которые не заняты интересующей целью. Такая оптимизация может быть применена в любой момент во время анализа цели после растеризации в различных видах.
Однако следует отметить, что операции наращивания могут принимать множество других форм. Например, сначала могут быть выполнены различные заливки для идентификации областей со сходными значениями, и затем может быть принято решение, какие области какой части тела принадлежат. Кроме того, количество пикселей, которые может нарастить какой-либо объект с индексом части тела/игрока (например, часть bp4 тела левого предплечья на фиг.3), может быть ограничено на основе того, сколько пикселей такой объект, как ожидается, занимает (например, с учетом его формы, расстояния и угла), в противоположность тому, сколько пикселей в карте привязки присвоено этому индексу части тела/игрока. Дополнительно упомянутые выше подходы могут включать в себя добавление преимуществ или недостатков для некоторых поз для смещения наращивания для некоторых частей тела таким образом, чтобы наращивание могло быть правильным.
Последовательные корректировки привязки могут быть выполнены для карты привязки, если определено, что распределение пикселей из части тела сгруппировано на одной глубине, и другое распределение пикселей из той же самой части тела сгруппировано на другой глубине таким образом, что существует разрыв между этими двумя распределениями. Например, рука, размахивающая перед туловищем и вблизи этого туловища, может “вливаться” в туловище. Такой случай может привести к группе пикселей туловища с индексом части тела, указывающим, что они являются пикселями руки, когда фактически они должны быть пикселями туловища. Посредством исследования распределения синтезированных значений глубины в нижней части руки может быть определено, что некоторые из пикселей руки могут быть сгруппированы на одной глубине, а остальные могут быть сгруппированы на другой глубине. Разрыв между этими двумя группами значений глубины указывает на переход между пикселями руки и тем, что должно быть пикселями туловища. Таким образом, в ответ на идентификацию такого разрыва переход за край может быть исправлен посредством присвоения индексов части тела туловища пикселям перехода за край. В качестве другого примера последовательные корректировки привязки могут быть полезны в случае, когда рука находится поверх фонового объекта. В этом случае может быть использована гистограмма для идентификации разрыва в наблюдаемой глубине интересующих пикселей (то есть пикселей, предположительно принадлежащих руке). На основе такого разрыва одна или более групп пикселей могут быть идентифицированы как должным образом принадлежащие руке, и/или другая группа (группы) могут быть отклонены как фоновые пиксели. Гистограмма может быть основана на множестве показателей, таких как абсолютная глубина, ошибка глубины (синтезируемая глубина - наблюдаемая глубина) и т.д. Последовательные корректировки привязки могут быть выполнены во время растеризации перед какими-либо операциями наращивания.
На этапе 120 способ 100 на фиг.7 может факультативно включать в себя создание карты высоты из наблюдаемого изображения с глубиной, синтезированного изображения с глубиной и карт индексов частей тела/игрока на трех описанных выше стадиях обработки. Градиент такой карты высоты и/или размытая версия такой карты высоты могут быть использованы при определении направления корректировок, которые должны быть внесены в модель, как описано далее. Карта высоты представляет собой лишь оптимизацию, однако в качестве альтернативы или дополнительно может быть выполнен поиск во всех направлениях для идентификации самых близких суставов, в которых корректировки могут быть применены, и/или направлениях, в котором должны быть сделаны такие корректировки. Когда используется карта высоты, она может быть создана до, после или параллельно с определениями класса пикселя, описанными ниже. При использовании карта высоты выполняется с возможностью установить фактическое тело игрока на низком возвышении и фоновые элементы на высоком возвышении. Затем может быть использована методика “водораздела” для отслеживания пути “под гору” на карте высоты, чтобы найти точку на игроке, ближайшую к фону, или наоборот (то есть производить поиск “в гору” на карте высоты, чтобы найти фоновый пиксель, ближайший к заданному пикселю игрока).
Синтезированное изображение с глубиной и наблюдаемое изображение с глубиной могут не являться идентичными, и, таким образом, синтезированное изображение с глубиной может использовать корректировки и/или модификации, с тем чтобы оно более близко соответствовало наблюдаемому изображению с глубиной и могло, таким образом, более точно представлять цель. Следует понимать, что корректировки могут быть выполнены над синтезированным изображением с глубиной сначала посредством внесения изменений в модель (например, изменения позы модели) и затем посредством синтеза скорректированной модели в новую версию синтезированного изображения с глубиной.
Несколько разных подходов могут быть применены для модификации синтезированного изображения с глубиной. В одном подходе две или более разных модели могут быть получены и растеризованы для получения двух или более синтезированных изображений с глубиной. Каждое синтезированное изображение с глубиной затем может быть сравнено с наблюдаемым изображением с глубиной посредством предопределенного множества показателей сравнения. Синтезированное изображение с глубиной, демонстрирующее самое близкое соответствие к наблюдаемому изображению с глубиной, может быть выбрано, и этот процесс может быть факультативно повторен для улучшения модели. При использовании этот процесс может быть особенно полезен для усовершенствования модели тела для соответствия типу и/или размерам тела игрока.
В другом подходе два или более синтезированных изображения с глубиной могут быть смешаны через интерполяцию или экстраполяцию для получения смешанного синтезированного изображения с глубиной. В еще одном подходе два или более синтезированных изображения с глубиной могут быть смешаны таким образом, что методики и параметры смешения изменяются по смешанному синтезированному изображению с глубиной. Например, если первое синтезированное изображение с глубиной благоприятно согласуется с наблюдаемым изображением с глубиной в одной области и второе синтезированное изображение с глубиной благоприятно согласуется во второй области, поза, выбранная в смешанном синтезированном изображении с глубиной, может представлять собой сочетание, похожее на позу, использованную для создания первого синтезированного изображения с глубиной в первой области, и позу, использованную для создания второго синтезированного изображения с глубиной во второй области.
В еще одном подходе и как обозначено номером 122 на фиг.7, синтезированное изображение с глубиной может быть сравнено с наблюдаемым изображением с глубиной. Каждый синтезированный пиксель синтезированного изображения с глубиной может быть классифицирован на основе результата сравнения. Такая классификация может называться определением класса пикселя для каждого пикселя. Модель, используемая для создания синтезированного изображения с глубиной (например, модель 70 тела на фиг.3), может быть систематически скорректирована в соответствии с определенными классами пикселей. В частности, в каждом пикселе может быть вычислен вектор силы (величина и направление) на основе определенного класса пикселя, и в зависимости от типа модели вычисленный вектор силы может быть применен к самому близкому суставу, средней точке части тела, точке на части тела, вершине треугольника или другому предопределенному месту приема силы модели, используемой для формирования синтезированного изображения с глубиной. В некоторых вариантах воплощения сила, приписанная данному пикселю, может быть распределена между двумя или более местами приема силы на модели.
Один или более классов пикселей могут быть выбраны для каждого синтезированного пикселя на основе одного или более факторов, которые включают в себя, но без ограничения, разность между наблюдаемым значением глубины и синтезированным значением глубины для этого синтезированного пикселя; разность между первоначальным индексом части тела, (привязанным) индексом части тела, и/или (наращенным) индексом части тела для этого синтезированного пикселя; и/или разность между первоначальным индексом игрока, (привязанным) индексом игрока, и/или (наращенным) индексом игрока для этого синтезированного пикселя.
Как обозначено номером 124 на фиг.7, определение класса пикселя может включать в себя выбор класса пикселя для уточнения по оси Z. Класс пикселя для уточнения по оси Z может быть выбран, когда наблюдаемое значение глубины наблюдаемого пикселя (или в области наблюдаемых пикселей) наблюдаемого изображения с глубиной не соответствует синтезированному значению (значениям) глубины в синтезированном изображении с глубиной, но является достаточно близким, чтобы вероятно принадлежать одному и тому же объекту в обоих изображениях, и индексы частей тела совпадают (или, в некоторых случаях, соответствуют соседним частям тела или областям). Класс пикселя для уточнения по оси Z может быть выбран для синтезированного пикселя, если разность между наблюдаемым значением глубины и синтезированным значением глубины для этого синтезированного пикселя находится в пределах предопределенного диапазона, и факультативно, если (наращенный) индекс части тела этого синтезированного пикселя соответствует части тела, которая не была назначена для приема силы магнетизма. Класс пикселя для уточнения по оси Z соответствует вычисленному вектору силы, который может применить силу к модели для перемещения модели в правильную позицию. Вычисленный вектор силы может быть приложен вдоль оси Z, перпендикулярной по отношению к плоскости изображения, вдоль вектора, нормального по отношению к аспекту модели (например, поверхности соответствующей части тела), и/или вдоль вектора, нормального по отношению к соседним наблюдаемым пикселям. Величина вектора силы основана на различиях наблюдаемых и синтезированных значений глубины, чем больше различия, тем больше силы. Место приема силы, к которому приложена сила, может быть выбрано как ближайшее к интересующему пикселю подходящее место приема силы (например, ближайший сустав туловища), или сила может быть распределена по нагруженному весовыми коэффициентами сочетанию ближайших мест приема силы. Однако ближайшее место приема силы может быть выбрано, в некоторых случаях может быть полезным применение смещений. Например, если пиксель находится на половину длины вниз по верхней части ноги и было установлено, что бедренный сустав менее мобилен (или подвижен), чем колено, может быть полезно сместить действие сил сустава для пикселей средней части ноги с бедренного сустава на колено.
Определение того, какое место приема силы является ближайшим к интересующему пикселю, может быть сделано посредством поиска с прямым перебором с помощью упомянутых выше смещений или без них. Для ускорения поиска множество мест приема силы, среди которых проводится поиск, может быть ограничено только теми местами, которые находятся на или около части тела, которая относится к индексу части тела этого пикселя. Также для ускорения этих поисков могут настраиваться двоичные деревья распределения пространства (BSP) каждый раз, когда поза изменяется. Каждой области на теле или каждой части тела, соответствующей индексу части тела, может быть задано свое собственное двоичное дерево распределения пространства. При этом смещения могут применяться по-разному для каждой части тела, что дополнительно дает возможность разумного выбора надлежащих мест приема силы.
Как обозначено номером 126 на фиг.7, определение класса пикселя может включать в себя выбор класса пикселя магнетизма. Класс пикселя магнетизма может быть использован, когда синтезированный исследуемый пиксель в карте наращивания соответствует предопределенному подмножеству частей тела (например, руки или bp3, bp4, bp5, bp7, bp8 и bp9 на фиг.3). Хотя в качестве примера представлены руки, другие части тела, такие как ноги или все тело, могут факультативно относиться к классу пикселя магнетизма в некоторых сценариях. Аналогичным образом, в некоторых сценариях руки могут не относиться к классу пикселя магнетизма.
Пиксели, отмеченные для класса магнетизма, могут быть сгруппированы в области, каждая область относится к конкретной части тела (такой как в этом примере верхняя часть левой руки, нижняя часть левой руки, левая кисть руки и так далее). К какой области принадлежит пиксель, может быть определено из его индекса части тела, или может быть выполнен более точный тест (для уменьшения ошибки, потенциально внесенной при операции наращивания) посредством сравнения позиции пикселя с различными точками в или на модели тела (но без ограничения частью тела, указанной индексом части тела пикселя). Например, для пикселя где-нибудь на левой руке могут использоваться различные показатели, чтобы определить, какому сегменту кости (от плеча до локтя, от локтя до запястья или от запястья до конца кисти руки) пиксель наиболее вероятно принадлежит. Каждый из этих сегментов кости может рассматриваться как “область”.
2
Для каждой из этих областей магнетизма могут быть вычислены средние точки пикселей, принадлежащих области. Эти средние точки могут быть либо традиционными (все вносящие вклад пиксели нагружены одинаковыми весовыми коэффициентами), либо смещенными, когда некоторые пиксели несут больший весовой коэффициент, чем другие. Например, для верхней части руки могут отслеживаться три средние точки: 1) несмещенная средняя точка, 2) “ближняя” средняя точка, вносящие вклад пиксели которой нагружаются более высокими весовыми коэффициентами, когда они расположены ближе к плечу; и 3) “дальняя” средняя точка, вносящие вклад пиксели которой нагружаются более высокими весовыми коэффициентами, когда они расположены ближе к локтю. Эти весовые коэффициенты могут быть линейными (например, 2Х), нелинейными (например, x) или соответствовать любой кривой.
Когда эти средние точки вычислены, доступны (и могут быть динамически выбраны) множество вариантов для вычисления позиции и ориентации интересующей части тела, даже если некоторые из них частично закрыты. Например, при попытке определить новую позицию для локтя, если средняя точка в этой области достаточно видима (если сумма весовых коэффициентов вносящих вклад пикселей превышает предопределенный порог), то сама средняя точка отмечает локоть (оценка #1). Однако, если область локтя не видима (возможно потому, что она закрыта некоторой другой частью объекта или тела), местоположение локтя часто все же может быть определено, как описано в следующем не ограничивающем примере. Если дальняя средняя точка верхней части руки является видимой, то может быть сделана проекция от плеча через эту среднюю точку на длину верхней части руки для получения вероятной позиции для локтя (оценка #2). Если ближняя средняя точка нижней части руки является видимой, то может быть сделана проекция от запястья через эту среднюю точку на длину нижней части руки для получения вероятной позиции для локтя (оценка #3).
Может быть сделан выбор одной из трех потенциальных оценок или может быть сделано сочетание между тремя потенциальными оценками с заданием приоритета (или более высокого весового коэффициента) тем оценкам, которые имеют более высокую видимость, достоверность, количество пикселей или любое количество других показателей. Наконец, в этом примере к модели может быть применен один вектор силы в местоположении локтя; однако он может быть нагружен более высоким весовым коэффициентом (при суммировании с векторами силы пикселей, получающимися из других классов пикселя, но действующими на это же самое место приема силы) для представления того факта, что для его создания использовалось много пикселей. При применении вычисленный вектор силы может переместить модель таким образом, чтобы соответствующая модель более благоприятно соответствовала цели, показанной на наблюдаемом изображении. Преимущество класса пикселя магнетизма заключается в его способности хорошо работать с очень подвижными частями тела, такими как руки.
В некоторых вариантах воплощения модель без заданных суставов или частей тела может быть скорректирована только с использованием класса пикселя магнетизма.
Как обозначено номерами 128 и 130 на фиг.7, определение класса пикселя может включать в себя выбор класса пикселя для вытягивания и/или класса пикселя для выталкивания. Эти классы пикселей могут быть применены на силуэте, когда синтезированные и наблюдаемые значения глубины могут резко не совпадать в одном и том же адресе пикселя. Следует отметить, что класс пикселя для вытягивания и класс пикселя для выталкивания также могут использоваться, когда первоначальный индекс игрока не соответствует (наращенному) индексу игрока. Выбор между выталкиванием и вытягиванием состоит в следующем. Если синтезированное изображение с глубиной содержит значение глубины, которое больше (дальше) значения глубины в наблюдаемом изображении с глубиной в том же самом адресе пикселя, то модель может быть вытянута до истинного силуэта, наблюдаемого в наращенном изображении. Наоборот, если первоначальное синтезированное изображение содержит значение глубины, которое меньше (ближе) значения глубины в наблюдаемом изображении с глубиной, тогда модель может быть вытолкнута из пространства, которое игрок больше не занимает (и по направлению к реальному силуэту в наращенном изображении). В любом случае для каждого из этих пикселей или областей пикселей двух- или трехмерный вычисленный вектор силы может быть приложен к модели для исправления несовпадений силуэта, который либо выталкивает, либо вытягивает части модели тела в позицию, которая более точно соответствует позиции цели в наблюдаемом изображении с глубиной. Направление такого выталкивания и/или вытягивания преобладающе часто находится в плоскости XY, хотя в некоторых сценариях к силе может быть добавлен компонент Z.
Чтобы получить надлежащий вектор силы для класса вытягивания или выталкивания, сначала может быть найдена ближайшая точка либо на силуэте игрока в синтезированном изображении с глубиной (для класса вытягивания), либо на силуэте игрока в наблюдаемом изображении с глубиной (для класса выталкивания). Эта точка может быть найдена для каждого исходного пикселя (или для каждой группы исходных пикселей) посредством прямого перебора, полного двухмерного поиска самой близкой точки (на желаемом силуэте), которая удовлетворяет следующим критериям. Для класса пикселя для вытягивания отыскивается ближайший пиксель с индексом игрока в первоначальной карте (в позиции поиска), который соответствует индексу игрока в наращенной карте (в исходном пикселе или области). Для класса пикселя для выталкивания отыскивается ближайший пиксель с индексом игрока в наращенной карте (в позиции поиска), который соответствует индексу игрока в первоначальной карте (в исходном пикселе или области).
Однако поиск с прямым перебором может быть очень затратным в вычислительном отношении, и может использоваться оптимизация для уменьшения вычислительных затрат. Одна не ограничивающая иллюстративная оптимизация для более эффективного поиска этой точки заключается в следовании за градиентом описанной выше карты высоты или ее размытой версии и исследовании только пикселей на прямой линии в направлении градиента. В этой карте высоты значения высоты являются низкими, когда индекс игрока является одинаковым и в первоначальных, и в наращенных картах индексов игроков, и значения высоты являются высокими, когда индекс игрока (в обеих картах) равен нулю. Градиент может быть определен как вектор в любом заданном пикселе, указывающий “под гору” на этой карте высоты. И пиксели для вытягивания, и пиксели для выталкивания затем могут выполнять поиск вдоль этого градиента (под гору), пока они не достигнут своего соответствующего условия остановки, как описано выше. Другая базовая оптимизация для этой операции поиска включает в себя пропуск пикселей с использованием деления интервала пополам или с использованием основанного на наклоне подхода; повторную дискретизацию градиента с интервалами по мере продвижения поиска; а также проверку поблизости на предмет более хороших/близких соответствий (не прямо вдоль градиента), как только выполнен критерий остановки.
2
Независимо от того, какая методика используется для поиска ближайшей точки на интересующем силуэте, пройденное расстояние D1 (расстояние между исходным пикселем и пикселем силуэта) может использоваться для вычисления величины (длины) D2 вектора силы, который выполнит вытягивание или выталкивание модели. В некоторых вариантах воплощения величина D2 может быть линейно или нелинейно связана с расстоянием D1 (например, D2=2*D1 или D2=D1). В качестве одного не ограничивающего примера может использоваться следующая формула: D2=(D1-0,5 пикселя)*2. Например, если имеется разрыв в 5 пикселей между силуэтом в двух изображениях глубины, каждый пиксель в этом промежутке может выполнить малый “поиск” и получить вектор силы. Пиксели около реального силуэта могут выполнить поиск только на 1 пиксель для достижения силуэта, таким образом, величина силы в этих пикселях будет равна (1-0,5)*2=1. Пиксели, далекие от реального силуэта, могут выполнить поиск на 5 пикселей, таким образом величина силы будет равна (5-0,5)*2=9. В общем случае, при перемещении от пикселей, ближайших к реальному силуэту, к самым дальним пикселям расстояния поиска будут равны D1={1, 2, 3, 4, 5}, и полученные величины силы будут равны D2={1, 3, 5, 7, 9}. Среднее значение для D2 в этом случае равно 5, как желательно - средние величины получающихся в результате векторов силы эквивалентны расстоянию между силуэтами (около каждого места приема силы), которое является расстоянием, на которое модель может быть перемещена для размещения модели в надлежащее место.
Затем может быть создан окончательный вектор силы для каждого исходного пикселя с направлением и величиной (то есть длиной). Для пикселей для вытягивания направление определяется вектором от пикселя силуэта до исходного пикселя; для пикселей для выталкивания это обратный вектор. Длина этого вектора силы равна D2. Затем в каждом пикселе может быть применена сила для наилучшего подходящего (например, ближайшего) места приема силы (или распределена между несколькими местами), и эти силы могут быть усреднены в каждом месте приема силы для получения надлежащих локальных движений модели тела.
Как обозначено номерами 132 и 134 на фиг.7, определение класса пикселя может включать в себя выбор класса пикселя для вытягивания и/или выталкивания с самоперекрытием. Тогда как в упомянутых выше классах пикселей для вытягивания и выталкивания часть тела может перемещаться на переднем плане относительно фона или другой цели, классы пикселей вытягивания и/или выталкивания с самоперекрытием рассматривают сценарии, когда часть тела находится перед другой частью тела той же самой цели (например, одна нога спереди другой, рука спереди туловища и т.д.). Эти классы могут быть идентифицированы, когда (привязанный) индекс игрока пикселя совпадает с его соответствующим (наращенным) индексом игрока, но когда (привязанный) индекс части тела не совпадает со своим соответствующим (наращенным) индексом части тела. В таких случаях направление поиска (чтобы найти силуэт) может быть получено несколькими способами. В качестве неограничивающего примера может быть выполнен двухмерный поиск с прямым перебором; второе множество карт высоты “преграды” может быть приспособлено для этого случая, с тем чтобы градиент мог направлять одномерный поиск; или направление может устанавливаться к ближайшей точке на ближайшем скелетном элементе. Подробные сведения для этих двух классов аналогичны стандартным классам вытягивания и выталкивания.
Классы пикселей для выталкивания, для вытягивания, для выталкивания с самоперекрытием и для втягивания с самоперекрытием могут быть выбраны для синтезированного пикселя, если (наращенный) индекс части тела этого синтезированного пикселя соответствует части тела, которая не была назначена для приема сил магнетизма.
Следует понимать, что в некоторых сценариях единственный пиксель может являться ответственным за один или более классов пикселя. В качестве не ограничивающего примера пиксель может быть ответственным и за силу для выталкивания с самоперекрытием, и за силу для уточнения по оси Z, причем сила для выталкивания с самоперекрытием прилагается к месту приема силы на закрывающей части тела, и сила для уточнения по оси Z прилагается к месту приема силы на закрываемой части тела.
Как обозначено номером 136 на фиг.7, определение класса пикселя может включать в себя выбор отсутствия класса пикселя для синтезированного пикселя. Часто вектор силы не требуется вычислять для всех синтезированных пикселей синтезированного изображения с глубиной. Например, синтезированные пиксели, которые являются более далекими от модели тела, показанной на синтезированном изображении с глубиной, и наблюдаемые пиксели, которые являются более далекими от цели, которая показана на наблюдаемом изображении с глубиной (то есть фоновые пиксели), могут не влиять на какие-либо места приема силы или части тела. Для таких пикселей не требуется определять класс пикселя, хотя в некоторых сценариях он может определяться. В качестве другого примера разность между наблюдаемым значением глубины и синтезированным значением глубины для этого синтезированного пикселя может быть ниже предопределенного порогового значения (например, модель уже соответствует наблюдаемому изображению). Таким образом, для таких пикселей не требуется определять класс пикселя, хотя в некоторых сценариях он может определяться.
Представленная ниже таблица дает подробные сведения для иллюстративных отношений между описанными выше классами пикселей и суставами, проиллюстрированными в скелетной модели 82 на фиг.5. Классы 1-7 пикселей сокращены в таблице следующим образом: 1 - вытягивание (регулярное), 2 - вытягивание (с перекрытием), 3 - выталкивание (регулярное), 4 - выталкивание (с перекрытием), 5 - уточнение по оси Z, 6 - магнитное вытягивание и 7 - перекрытие (без действия). “Да” в столбце “Принимает силы?” указывает, что сустав из той строки может принимать силы от вектора силы. “X” в столбце классов пикселей обозначает, что сустав в этой строке может принимать силу от вектора силы, соответствующего классу пикселя этого столбца. Следует понимать, что следующая таблица представлена в качестве примера. Она не должна рассматриваться как ограничивающая. Другие отношения между моделями и классами пикселей могут быть установлены без отступления от объема этого раскрытия.
Классы пикселей
Сустав
Принимает силы?
1
2
3
4
5
6
7
j1
Да
Х
Х
Х
Х
Х
Х
j2
Да
Х
Х
Х
Х
Х
Х
j3
Да
Х
Х
Х
Х
Х
Х
j4
Да
Х
Х
Х
Х
Х
Х
j5
Да
Х
Х
Х
Х
Х
Х
j6
Да
Х
Х
Х
Х
Х
Х
j7
Да
Х
Х
Х
Х
Х
Х
j8
Да
Х
Х
Х
Х
Х
Х
j9
Да
Х
Х
Х
Х
Х
Х
j10
Да
Х
Х
Х
Х
Х
Х
j11
Да
Х
Х
Х
Х
Х
Х
j12
Да
Х
Х
Х
Х
Х
Х
Классы пикселей
Сустав
Принимает силы?
1
2
3
4
5
6
7
j13
Да
Х
Х
Х
Х
Х
Х
j14
Да
Х
Х
Х
Х
Х
Х
j15
Да
Х
Х
Х
Х
Х
Х
j16
Да
Х
Х
Х
Х
Х
Х
j17
Да
Х
Х
j18
Да
Х
Х
j19
Да
Х
Х
j20
Да
Х
Х
j21
Да
Х
Х
j22
Да
Х
Х
j23
Да
Х
Х
Х
Х
Х
Х
j24
Да
Х
Х
Х
Х
Х
Х
j25
Да
Х
Х
Х
Х
Х
Х
j26
Да
Х
Х
Х
Х
Х
Х
j27
Да
Х
Х
Х
Х
Х
Х
j28
Да
Х
Х
Х
Х
Х
Х
j29
Нет
-
-
-
-
-
-
-
j30
Нет
-
-
-
-
-
-
-
j31
Нет
-
-
-
-
-
-
-
j32
Да
Х
Х
Х
Х
Х
Х
j33
Да
Х
Х
Х
Х
Х
Х
j34
Нет
-
-
-
-
-
-
-
j35
Нет
-
-
-
-
-
-
-
j36
Нет
-
-
-
-
-
-
-
j37
Нет
-
-
-
-
-
-
-
j38
Нет
-
-
-
-
-
-
-
j39
Нет
-
-
-
-
-
-
-
j40
Нет
-
-
-
-
-
-
-
j41
Нет
-
-
-
-
-
-
-
j42
Нет
-
-
-
-
-
-
-
j43
Нет
-
-
-
-
-
-
-
j44
Нет
-
-
-
-
-
-
-
j45
Нет
-
-
-
-
-
-
-
j46
Нет
-
-
-
-
-
-
-
j47
Нет
-
-
-
-
-
-
-
На этапе 140 способ 100 на фиг.7 включает в себя для каждого синтезированного пикселя, для которого был определен класс пикселя, вычисление вектора силы на основе класса пикселя, выбранного для этого синтезированного пикселя. Как описано выше, каждый класс пикселя соответствует отдельному алгоритму и/или методологии для выбора величины, направления и/или места приема вектора силы. Векторы силы могут быть вычислены и/или суммированы в любом координатном пространстве, таком как мировое пространство, пространство экрана (до разделения на уровни по оси Z), пространство проекции (после разделения на уровни по оси Z), пространство модели и т.п.
На этапе 142 способ 100 включает в себя отображение каждого вычисленного вектора силы на одно или более мест приема силы модели. Отображение может включать в себя отображение вычисленного вектора силы на “наиболее соответствующее” место приема силы. Выбор наиболее соответствующего места приема силы модели зависит от класса пикселя, выбранного для соответствующего пикселя. Наиболее соответствующее место приема силы может являться, например, ближайшим суставом, вершиной или средней точкой. В некоторых вариантах воплощения к модели могут быть применены моменты (то есть вращательные силы).
В общем случае в результате сил с аналогичными направлениями, действующими на места приема силы модели, могут получаться трансляции, и в результате сил с разными направлениями, действующими на места приема силы модели, могут получаться вращения. Для деформируемых объектов некоторые из компонентов векторов силы могут использоваться для деформации модели в ее пределах деформации, и остальные компоненты векторов силы могут использоваться для трансляции и/или вращения модели.
В некоторых вариантах воплощения векторы силы могут быть отображены на наиболее соответствующий жесткий или деформируемый объект, подобъект и/или множество многоугольников объекта. В соответствии с этим, некоторые из векторов силы могут использоваться для деформации модели, и остальные компоненты векторов силы могут использоваться для выполнения жесткой трансляции модели. Такая методика может привести к “сломанной” модели (например, рука может быть отсоединена от тела). Как описано более подробно ниже, тогда может быть использован этап исправления для преобразования трансляции во вращение и/или применения ограничений, чтобы обратно присоединить части тела пути с низкой затратой энергии.
Фиг.11А и 11В показывают очень упрощенный пример приложения векторов силы к модели - в проиллюстрированном примере скелетной модели 180. Ради простоты в проиллюстрированном примере показаны только два вектора силы. Каждый такой вектор силы может представлять собой результат суммирования двух или более разных векторов силы, полученных в результате определения класса пикселя и вычисления вектора силы двух или более разных пикселей. Часто модель будет корректироваться посредством многих разных векторов силы, каждый из которых является суммой нескольких разных векторов силы, полученных в результате определений классов пикселя и вычислений векторов силы нескольких различных пикселей.
Фиг.11А показывает скелетную модель 180, в которой вектор 182 силы должен быть применен к суставу jl8 (то есть к локтю), и вектор 184 силы должен быть применен к суставу j20 (то есть к запястью) с целью выпрямления одной руки скелетной модели 180 для более близкого соответствия наблюдаемому изображению с глубиной. Фиг.11В показывает скелетную модель 180 после того, как силы применены. Фиг.11В иллюстрирует, как приложенные силы корректируют позу модели. Как показано на фиг.11В, длины скелетных элементов могут быть сохранены. Как показано дополнительно, позиция сустава j2 остается в плече скелетной модели, как ожидается в случае человека, выпрямляющего свою руку. Другими словами, скелетная модель остается неповрежденной после применения сил. Поддержание целостности скелетной модели при применении силы получается в результате одного или более применяемых ограничений, как описано более подробно ниже. Множество разных ограничений может быть учтено для поддержания целостности моделей различных возможных типов.
На этапе 144 способ 100 на фиг.7 факультативно включает в себя приведение модели в позу, удовлетворяющую одному или более ограничениям. Как описано выше, после сбора и отображения вычисленных векторов силы на места приема силы модели вычисленные векторы силы могут быть приложены к модели. При выполнении без ограничения это может “сломать” модель, непропорционально ее растягивая и/или перемещая части тела в недопустимые для фактического тела цели конфигурации. Тогда могут использоваться итерации различных функций, чтобы “расслабить” новую позицию модели до “ближней” допустимой конфигурации. Во время каждой итерации исправления модели ограничения могут мягко и/или постепенно применяться к позе, чтобы ограничить множество поз такими позами, которые могут быть физически выражены одним или более фактическими телами одной или более целей. В других вариантах воплощения такой этап исправления может быть сделан не итерационным образом.
В некоторых вариантах воплощения ограничения могут включать в себя одно или более из следующих ограничений: ограничения по длине скелетных элементов, угловые ограничения в суставах, угловые ограничения на краях многоугольника и тесты на коллизии, как описано далее.
В качестве примера, в котором используется скелетная модель, могут быть применены ограничения по длине скелетных элементов (то есть костей). Векторы силы, которые могут быть обнаружены (то есть векторы силы в местоположениях, где суставы и/или части тела являются видимыми и не закрытыми), могут быть распространены вдоль сети скелетных элементов скелетной модели. Посредством применения ограничений на длину скелетных элементов распространенные силы могут быть “локализованы”, как только все скелетные элементы имеют приемлемые длины. В некоторых вариантах воплощения одному или более скелетным элементам разрешено иметь переменную длину в пределах предопределенного диапазона. Например, длина скелетных элементов, составляющих стороны туловища, может быть переменной для имитации деформируемого среднего сечения. В качестве другого примера, длина скелетных элементов, составляющих верхнюю часть руки, может быть переменной для имитации сложного разъема плеча.
Скелетная модель дополнительно или в качестве альтернативы может быть ограничена посредством вычисления длины каждого скелетного элемента на основе цели таким образом, чтобы эти длины могли использоваться в качестве ограничений во время исправления. Например, желательные длины костей известны из модели тела; и может быть оценена разность между текущими длинами костей (то есть расстояния между новыми позициями суставов) и желательными длинами кости. Модель может быть скорректирована для уменьшения какой-либо ошибки между желательными длинами и текущими длинами. Некоторым суставам и/или костям, которые считаются более важными, а также суставам и частям тела, которые в настоящее время более видимы, чем другие, может быть дан приоритет. Кроме того, изменениям с высокой величиной может быть дан приоритет относительно изменений с низкой величиной.
Видимость и/или достоверность суставов могут быть отдельно отслежены в размерностях X, Y и Z, чтобы дать возможность более точного применения ограничений по длине кости. Например, если кость соединяет грудь с левым плечом, и позиция Z сустава груди имеет высокую достоверность (то есть суставу соответствуют много пикселей класса для уточнения по оси Z), и позиция Y плеча имеет высокую достоверность (суставу соответствуют много пикселей класса для выталкивания/вытягивания), то какая-либо ошибка длины кости может быть исправлена при частичном или полном ограничении движения плеча в направлении Y или груди в направлении Z.
В некоторых вариантах воплощения позиции суставов до исправления могут быть сравнены с позициями суставов после исправления. Если определено, что в каждом кадре делается непротиворечивое множество корректировок для скелетной модели, способ 100 может использовать эту информацию для выполнения “последовательного уточнения” над скелетной моделью и/или моделью тела. Например, посредством сравнения позиций суставов до и после исправления можно определить, что в каждом кадре плечи растягиваются шире во время исправления. Такая непротиворечивая корректировка предполагает, что плечи скелетной модели меньше, чем у представляемой цели, и, следовательно, для исправления этого ширина плеч корректируется в каждом кадре во время исправления. В таком случае последовательное уточнение, такое как увеличение ширины плеч скелетной модели, может быть сделано для исправления скелетной модели и/или модели тела для лучшего соответствия цели.
Что касается угловых ограничений суставов, некоторые конечности и части тела могут быть ограничены в диапазоне их движения относительно смежной части тела. Кроме того этот диапазон движения может изменяться на основе ориентации смежных частей тела. Таким образом, применение угловых ограничений суставов может позволить ограничить сегменты конечностей возможными конфигурациями с учетом ориентации родительских конечностей и/или частей тела. Например, нижняя часть ноги может сгибаться назад (в колене), но не вперед. Если обнаружены недопустимые углы, нарушающая часть (части) тела и/или ее родители (или, в случае сеточной модели, нарушающие треугольники и их соседей) корректируются для сохранения позы в пределах диапазона предопределенных возможностей, и тем самым оказывается помощь в предотвращении случая, когда модель принимает позу, которая считается недопустимой. В некоторых случаях критических нарушений углов поза может быть распознана задом наперед, то есть то, что отслеживается как грудь, на самом деле является спиной игрока; левая рука на самом деле является правой рукой; и так далее. Когда такой невозможный угол ясно видим (и представляет собой достаточно грубое нарушение), это можно интерпретировать так, что поза была отображена на тело игрока задом наперед, и поза может быть зеркально отражена для точного моделирования цели.
Тесты на коллизии могут быть применены для предотвращения того, чтобы модель проникла сама в себя. Например, тесты на коллизии могут предотвратить, чтобы какая-либо часть предплечий/кистей рук проникла через туловище, или предотвратить, чтобы предплечья/кисти рук проникли друг в друга. В других примерах тесты на коллизии могут предотвращать, чтобы нога проникла в другую ногу. В некоторых вариантах воплощения тесты на коллизии могут быть применены к моделям двух или более игроков для предотвращения возникновения подобных сценариев между моделями. В некоторых вариантах воплощения тесты на коллизии могут быть применены к модели тела и/или скелетной модели. В некоторых вариантах воплощения тесты на коллизии могут быть применены к некоторым многоугольникам сеточной модели.
Тесты на коллизии могут быть применены любым подходящим образом. Один подход исследует коллизии одного “объемного линейного сегмента” против другого, причем объемный линейный сегмент может являться линейным сегментом с радиусом, который простирается в трехмерном пространстве. Пример такого теста на коллизии может исследовать предплечье против другого предплечья. В некоторых вариантах воплощения объемный линейный сегмент может иметь разный радиус на каждом конце сегмента.
Другой подход исследует коллизии объемного линейного сегмента против имеющего позу многоугольного объекта. Пример такого теста на коллизии может исследовать предплечье против туловища. В некоторых вариантах воплощения имеющий позу многоугольный объект может являться деформированным многоугольным объектом.
В некоторых вариантах воплощения информация о том, что разные части цели могут перемещаться на ограниченное расстояние за период времени (например, 1/30 или 1/60 секунды), может использоваться в качестве ограничения. Такое ограничение может использоваться для исключения некоторых поз, получающихся в результате приложения сил к местам приема силы модели.
Как обозначено номером 145, после того как модель была скорректирована и факультативно подвергнута ограничениям, процесс может вернуться обратно, чтобы начать новую растеризацию модели в новое синтезированное изображение с глубиной, которое затем может быть сравнено с наблюдаемым изображением с глубиной, с тем чтобы могли быть сделаны дополнительные корректировки модели. Таким образом, модель может быть последовательно скорректирована, чтобы более близко представлять смоделированную цель. Фактически любое число итераций может быть выполнено для каждого кадра. Большее количество итераций может достигнуть более точных результатов, но большее количество итераций также может потребовать большего количества вычислительных накладных расходов. Предполагается, что две или три итерации на кадр являются приемлемыми во многих сценариях, хотя в некоторых вариантах воплощения может быть достаточно одной итерации.
На этапе 146 способ 100 на фиг.7 факультативно включает в себя изменение визуального представления экранного персонажа (например, видеообраза 190 игрока на фиг.12А) в ответ на изменения модели, такие как изменения, показанные на фиг.11В. Например, пользователь, играющий в электронную игру на игровой консоли (например, на игровой системе 12 на фиг.1А и 1В), может быть отслежен посредством игровой консоли, как описано в данном документе. В частности, модель тела (например, модель 70 тела на фиг.3), включающая в себя скелетную модель (например, скелетную модель 180 на фиг.11А) может использоваться для моделирования целевого игрока, и модель тела может использоваться для реализации экранного видеообраза игрока. По мере того как игрок выпрямляет одну руку, игровая консоль может отследить это движение, затем в ответ на отслеженное движение скорректировать модель 180, как изображено на фиг.11В. Игровая консоль такжеможет применить одно или более ограничений, как описано выше. После выполнения таких корректировок и применения таких ограничений игровая консоль может отобразить скорректированный образ 192 игрока, как показано на фиг.12В. Это также показано в качестве примера на фиг.1А, на котором показано, как видеообраз 24 игрока наносит удар боксирующему противнику 22 в ответ на нанесения удара игроком 18 в реальном пространстве.
Как описано выше, визуальное распознавание цели может быть выполнено в целях, отличных от изменения визуального представления экранного персонажа или видеообраза. Таким образом, визуальное представление экранного персонажа или видеообраза не должно быть изменено во всех вариантах воплощения. Как описано выше, отслеживание цели может использоваться фактически для безгранично различных целей, многие из которых не приводят к изменению экранного персонажа. Отслеживание цели и/или скорректированной позы модели могут использоваться в качестве параметра для воздействия практически на любой элемент прикладной программы, такой как игра.
Как обозначено номером 147, описанный выше процесс может быть повторен для последующих кадров.
Следует понимать, что описанные в данном документе конфигурации и/или подходы являются иллюстративными по природе и что эти конкретные варианты воплощения или примеры нельзя рассматривать в ограничивающем смысле, поскольку возможны многочисленные вариации. Конкретные описанные в данном документе процедуры или способы могут представлять одну или более стратегий обработки. Таким образом, различные проиллюстрированные действия могут быть совершены в проиллюстрированной последовательности, в других последовательностях, параллельно или в некоторых случаях опущены. Аналогичным образом, порядок описанных выше процессов может быть изменен.
Предмет настоящего раскрытия включает в себя все новые и неочевидные комбинации и подкомбинации различных процессов, систем и конфигураций и других признаков, функций, действий и/или свойств, раскрытых в данном документе, а также любые и все их эквиваленты.