[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20140034847A - 관절로 연결된 모델의 전자동 동적 교정 기법 - Google Patents

관절로 연결된 모델의 전자동 동적 교정 기법 Download PDF

Info

Publication number
KR20140034847A
KR20140034847A KR1020137034022A KR20137034022A KR20140034847A KR 20140034847 A KR20140034847 A KR 20140034847A KR 1020137034022 A KR1020137034022 A KR 1020137034022A KR 20137034022 A KR20137034022 A KR 20137034022A KR 20140034847 A KR20140034847 A KR 20140034847A
Authority
KR
South Korea
Prior art keywords
model
depth
depth pixels
body parts
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020137034022A
Other languages
English (en)
Other versions
KR101922747B1 (ko
Inventor
경석 데이비드 리
알렉산드루 발란
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140034847A publication Critical patent/KR20140034847A/ko
Application granted granted Critical
Publication of KR101922747B1 publication Critical patent/KR101922747B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

깊이 센서는 손과 같이 사용자의 신체의 관절로 연결된 부분의 이미지를 얻는다. 관절로 연결된 신체 부위의 사전 정의된 모델이 제공된다. 이 모델은 깊이 센서로부터 얻어진 대응하는 깊이 화소들에 매칭되어, 초기 매치를 제공한다. 그리고 나서, 초기 매치는 거리 제약, 충돌 제약, 각도 제약 및 래스터화된 모델을 사용한 화소 비교를 사용하여 개선된다. 거리 제약은 손의 관절로 연결된 부분들 간의 거리에 대한 제약을 포함한다. 모델의 적어도 두 개의 인접한 손가락 세그먼트들이 특정 상대 위치에 있다고, 예를 들어, 평행하다고 결정될 때와 같이 모델이 특정 조건을 충족시킬 때, 충돌 제약이 강제될 수 있다. 래스터화된 모델은 중첩 화소들을 식별하기 위해 비교되는 모델의 깊이 화소들을 포함한다. 모델의 관절로 연결된 부분들의 치수가 개별적으로 조정된다.

Description

관절로 연결된 모델의 전자동 동적 교정 기법{FULLY AUTOMATIC DYNAMIC ARTICULATED MODEL CALIBRATION}
이미징 시스템은, 물리적 공간에서의 인간 또는 다른 대상과 같이 관절로 연결된 객체의 위치, 포즈, 및/또는 움직임에 관한 데이터를 얻어서, 컴퓨팅 시스템의 애플리케이션에 대한 입력으로 이 데이터를 사용한다. 군사, 오락, 스포츠 및 의료 목적 등 여러 애플리케이션이 가능하다. 예를 들어, 객체의 포즈 및/또는 모션은 애니메이션화된 캐릭터 또는 아바타의 제어, 게임 참여, 명령어의 온-스크린(on-screen) 메뉴의 선택 등에 사용될 수 있다. 포즈는 깊이 화소들의 프레임에서와 같이 어느 한 시점에서 객체의 구성(configuration) 또는 형상(shape)을 나타내고, 객체의 모션은 깊이 화소들의 다수의 프레임에서와 같이, 포즈의 시퀀스에 의해 표현될 수 있다. 이미지 시스템은 카메라를 사용하여 시야(field of view) 안에서 객체의 존재를 탐지하는 광학 시스템을 포함할 수 있다. 그러나, 더 높은 충실도(higher fidelity)로 객체를 이미지화하기 위해서는 추가적인 개선(refinement)이 필요하다. 특히, 손과 같이 관절로 연결된(articulated) 신체 부위를 고 충실도로 이미지화하는 것이 바람직하다.
사용자의 손과 같이 관절로 연결된 신체 부위를 개선된 충실도로 이미지화하는 프로세서로 구현된 방법(processor-implemented method), 이미징 시스템(imaging system) 및 유형의 컴퓨터 판독가능 저장 장치(tangible computer readable storage device)가 제공된다. 예를 들어, 사용자는 손 제스처를 취해서, 메뉴를 탐색하거나, 브라우징(browsing) 또는 쇼핑 경험에서 인터랙션을 하거나, 플레이할 게임을 고르거나, 친구에게 메시지를 보내는 등의 통신 기능(communication feature)에 액세스할 수 있다. 사용자는 손을 사용하여, 커서를 제어하여 온-스크린 메뉴에서 항목을 선택하거나, 또는 3D 가상 세계에서 아바타의 움직임을 제어할 수 있다. 일반적으로, 손의 위치와 포즈가 탐지되어, 이미징 시스템의 애플리케이션에 대한 제어 입력으로 사용될 수 있다.
관절로 연결된 신체 부위를 정확하게 식별하기 위한 이미징 시스템의 기능을 개선하기 위해, 관절로 연결된 신체 부위의 모델이 제공된다. 모델은, 깊이 센서로부터 얻어진 대응하는 깊이 화소들에 매칭되어 초기 매치(initial match)를 제공한다. 이후에 매칭 프로세스(matching process) 거리 제약, 충돌 제약(collision constraint), 각도 제약(angle constraint), 및 래스터화된 모델(rasterized model)을 사용한 화소 비교를 이용하여 개선된다.
일 실시예에서, 객체(사용자/사람, 동물, 로봇 등)의 관절로 연결된 신체 부위들의 포즈를 모델링하는 방법을 실행하도록 적어도 하나의 프로세서를 프로그래밍하기 위해 컴퓨터 판독가능 소프트웨어가 구현되어 있는 컴퓨터 판독가능 저장 장치가 제공된다. 상기 방법은 관절로 연결된 신체부위들의 깊이 화소들을 얻는 단계를 포함한다. 깊이 화소들은 예를 들어, 하나 이상의 프레임에서, 깊이 센서를 사용하여 얻어질 수 있다. 깊이 화소들은 센서 데이터이다. 상기 방법은 하나 이상의 프레임의 깊이 화소들을 처리하여 관절로 연결된 신체 부위들을 식별하는 단계를 더 포함한다. 상기 방법은 모델에 액세스하는 단계를 포함하고, 모델은 객체의 관절로 연결된 신체 부위들에 대응하는 관절로 연결된 신체 부분들을 포함한다. 모델의 관절로 연결된 신체 부위들을 객체의 식별된 관절로 연결된 신체 부분들에 매칭하여 초기 매치를 제공한다. 하나의 가능한 접근 방법으로, 이런 매칭 프로세스는 모델의 각각의 관절로 연결된 신체 부위의 대표 유인점을 하나 이상의 프레임의 깊이 화소들의 대표 중심점에 매치한다.
상기 방법은 초기 매치에서 모델의 관절로 연결된 신체 부위들에 의해 위반된 거리 제약의 정도를 평가하는 단계를 포함하고, 여기서 거리 제약은 모델의 관절로 연결된 신체 부위들 간의 거리에 대한 제약을 포함한다. 모델은 거리 제약을 충족시키기 위해 조정되고, 거리 제약이 위반된 정도에 기반하여 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 길이를 조정하는 단계를 포함한다. 예를 들어, 관절로 연결된 신체 부위들의 길이가 증가하거나 감소할 수 있다.
모델이 특정 조건을 충족할 때, 예를 들어, 모델의 적어도 두 개의 인접한 손가락 세그먼트들이 특정 상대 위치에 있다고, 예컨대, 서로 평행하다고, 결정될 때 충돌 제약이 강제될 수 있다. 충돌 제약을 충족시키기 위해, 예를 들어, 모델의 적어도 두 개의 인접한 손가락 세그먼트들의 폭을 줄임으로써, 모델이 조정될 수 있다.
화소 비교는, 손의 관절로 연결된 부분들 중 적어도 하나의 깊이 화소들을 하나 이상의 프레임의 깊이 화소들과 비교하여, 손의 관절로 연결된 부분들 중 적어도 한 부분의 비-중첩 깊이 화소들은 물론 하나 이상의 프레임의 비-중첩 깊이 화소들을 식별하는 단계를 포함한다. 예를 들어, 모델의 관절로 연결된 부분들의 적어도 한 부분의 치수를 줄이거나 및/또는 늘림으로써, 이 모델이 하나 이상의 프레임의 깊이 화소들에 더욱 가깝게 매칭되도록, 비교 단계에 기반하여 모델이 조정될 수 있다.
본 요약은 이하의 설명에 상세히 기술되는 개념들의 선택을 간략한 형태로 소개하기 위한 것이다. 본 요약은 특허청구된 대상의 주요 특징이나 필수적인 특징을 확인하기 위한 것이 아니며, 특허청구된 대상의 범위를 한정하는 데 사용되도록 의도된 것도 아니다.
도면에서, 동일한 부호의 구성요소는 서로 일치한다.
도 1은 이미징 시스템의 예시적인 실시예를 도시한다.
도 2는 도 1의 이미징 시스템의 예시적인 블록도를 도시한다.
도 3은 도 1의 이미징 시스템에서 사용될 수 있는 컴퓨팅 환경의 예시적인 블록도를 도시한다.
도 4는 도 1의 이미징 시스템에서 사용될 수 있는 컴퓨팅 환경의 다른 예시적인 블록도를 도시한다.
도 5는 관절 및 유인점(attract point)을 포함하는, 사용자의 손 모델을 도시한다.
도 6은 이미징 시스템에서 관절로 연결된 신체 부위의 포즈를 개선된 충실도로 탐지하는 방법을 도시한다.
도 7a는 도 6의 단계들(700, 720 및 750)의 추가 세부 사항을 도시한다.
도 7b는 도 6의 단계(760)의 추가 세부 사항을 도시한다.
도 8a는 사용자 손의 깊이 화소들을 포함하는, 깊이 화소들의 프레임을 도시한다.
도 8b는 배경 화소들이 제거된, 도 8a의 사용자 손의 깊이 화소들을 도시한다.
도 9a는 도 8b의 사용자의 손의 깊이 화소들의 먼(distal) 손가락 세그먼트와 먼 엄지 손가락 세그먼트에 대한 도 7a의 예시적인 단계(712)로부터의 확률값을 도시한다.
도 9b는 도 8b의 사용자의 손의 깊이 화소들의 중간 손가락 세그먼트 및 가까운(proximal) 엄지 손가락 세그먼트에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 9c는 도 8b의 사용자의 손의 깊이 화소들의 가까운 손가락 세그먼트에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 9d는 도 8b의 사용자의 손의 깊이 화소들의 손바닥에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 9e는 도 8b의 사용자의 손의 깊이 화소들의 손목에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 10은 사용자의 손의 테스트 데이터로부터 도 7a의 단계(721)에서 생성된 중심들을 도시한다.
도 11은 중심-대-유인점 매칭(centroid-to attract point matching)에 관한 도 7a의 단계(734)의 세부 사항을 도시한다.
도 12a는 유인점의 중심으로의 강체 변환(rigid transformation)에 관한 도 7a의 단계(736)의 세부 사항을 도시한다.
도 12b는 유인점을 중심에 더 가깝게 이동시키기 위한 도 7a의 단계(752)의 세부 사항을 도시한다.
도 12c는 모델을 래스터화하여 모델의 깊이 화소들을 제공하기 위한 도 7b의 단계(764)의 세부 사항을 도시한다.
도 12d는 엄지 손가락 부분에서, 모델의 깊이 화소들과 센서의 깊이 화소들을 비교하기 위한 도 7b의 단계들(766-772)의 세부 사항을 도시한다.
도 12e는 도 12d와 일관되게, 화소-기반 조정 벡터(adjustment vector)에 기반하여 모델 관절의 조정을 보여주는 도 7b의 단계(778)의 세부 사항을 도시한다.
도 12f는 도 12e에서 사용된 화소-기반 조정 벡터를 도시한다.
도 12(g)는 도 12e와 일관되게, 모델의 업데이트를 보여주는 도 7b의 단계(792)의 세부 사항을 도시한다.
도 13a는 모델의 깊이 화소들과 센서의 깊이 화소들을 비교하기 위한 도 7b의 단계(768, 770 및 772)의 추가적인 세부 사항을 도시하며, 여기서 비교 평면은 깊이 센서의 깊이 축을 횡단한다(traverse).
도 13b는 도 13a의 비교 평면(1310)의 추가적인 세부 사항을 도시한다.
도 14는 거리 제약, 충돌 제약, 및 화소 비교를 이용하여, 이미징 시스템에서 관절로 연결된 신체 부위들의 포즈를 개선된 충실도로 탐지하는 방법을 도시한다.
도 15는 도 14의 방법에 사용할 사용자의 손의 깊이 화소들의 일례를 도시한다.
도 16(a1)은 도 5의 모델의 도 15의 깊이 화소들에 대한 매칭을 도시하고, 여기서 거리 제약이 강제되지는 않고, 모델은 바라던 것보다는 작다.
도 16(a2)는 도 16(a1)의 대안이며, 여기서 부모 및 자식 관절(parent and child joint)이 도시된다.
도 16(b1)은 검지 손가락에 대한 도 16(a1)의 이미지의 세부 사항을 도시한다.
도 16(b2)는 도 16(b1)의 대안이며, 여기서 부모 및 자식 관절이 도시된다.
도 16c는 거리 제약을 강제한 이후의 도 16(b1)의 모델의 조정을 도시한다.
도 16d는 래스터화 이후의 도 16c의 모델, 및 깊이 센서의 깊이 화소와의 비교를 도시한다.
도 16e는 화소 비교에 기반하는 도 16d의 모델에 대한 조정을 도시한다.
도 17a는 도 5의 모델의 도 15의 깊이 화소들에 대한 매칭의 다른 예를 도시하고, 여기서 거리 제약이 강제되지는 않고, 모델은 바라던 것보다는 크다.
도 17b는 도 17a의 대안이며, 여기서 부모 및 자식 관절이 도시된다.
도 18a는 충돌을 보여주는 도 5의 모델의 인접한 두 손가락들을 도시한다.
도 18b는 충돌 제약이 강제된 후의 도 18a의 인접한 두 손가락들을 도시한다.
본원에 제공된 기법은 높은 자유도(freedom)를 갖는 관절로 연결된 객체의 상태(포즈 및/또는 형상)의 추정치를 확률 정보 및 제약을 통해 실시간으로 제공하여, 다양한 인간-컴퓨터 인터랙션 작업을 위한 입력 소스로서 사용될 수 있는 제안을 생성한다. 관절로 연결된 객체는 주로 6의 자유도를 갖는 많은 관절이 있는 공지된 3D 형상 객체일 수 있다. 상태란, 관절로 연결된 공지된 객체의 모든 부위의 위치 이동(translation), 방향(orientation), 스케일(scale) 및 기타 형상 설명 정보이다.
팔다리 및 머리와 같은 신체의 피처(feature)를 식별하는 것으로 충분한, 전신 트래킹과 같이 더욱 제한된 경우에 대한 이런 문제점의 해결 방안은, 더 높은 정밀도를 원하는 때에는 일반적으로 충분하지 않다. 예를 들어, 사용자의 손을 탐지할 때, 화소 공간에서 손을 빠르게 움직이는 사용자의 능력 때문에 프레임 간 일관성(frame to frame coherency)의 정도가 낮을 수 있다. 이는, 사용자가 깊이 센서 가까이에 있는 경우처럼 사용자의 손이 시야의 많은 부분을 채울 때 특히 그렇다. 또한, 전신 트래킹과 비교해서, 손은 일반적으로 손 자체의 가려짐에 의해 더욱 애매모호해지고, 유사하게 보이는 많은 부분들, 예를 들어, 손가락들을 갖고 있다. 한편, 본원에서 제공된 해결 방안은 전신 트래킹 및 포즈 추정에도 적합하다.
어떤 경우에, 고정된 토폴로지(topology)를 갖는 관절로 연결된 모델이 사용된다. 그러나, 모델의 관절로 연결된 각각의 부분에서 다양한 치수(dimension)을 갖는 것이 유리할 수 있다. 이 경우에, 모델 피팅(fitting)과 같은 작업에서 모델의 모든 부분들의 치수를 동적으로 잘 추정하고 치수를 조정하여 실시간으로 에러를 정정하는 것이 유용하다. 관절로 연결된 포즈 추정 방법은, 모델 크기 파라미터가 직접적인 측정을 통해서 또는 사용자가 특정 사전-정의된 교정(calibration) 포즈를 이용하는 전처리 단계에서 계산되거나 해서 미리 알려져 있다고 가정할 수 있다. 하지만, 사용자가 불편할 수 있으므로, 이런 교정 프로세스를 피하는 것이 바람직하다. 본원에 제공된 해결 방안에서는 관절로 연결된 모델의 모든 부위의 치수를 동적으로 교정하고 실시간으로 조정한다. 이는, 관절로 연결된 모델의 각각의 부위의 치수에 관련된 다수의 정보원을 결합하고 가중함으로써(weighing) 실행된다. 제안된 해결 방안은 사용자 입력, 사전-교정 단계, 또는 사용자가 채택한 단순한 포즈를 요구하지 않는다.
지속적인 얼마 간의 시간 동안 다른 소스들로부터 얻은 정보를 가중하고 결합함으로써, 관절로 연결된 공지된 모델이 그 정확한 치수들로 동적으로 조정될 수 있다. 이는 정적인 초기화 단계(static initialization step)로써 또는 진행중인 조정 단계(ongoing adjustment step)로써 실행되어, 더욱 유연한 관절로 연결된 객체들을 수용하거나 또는 동일한 공지된 종류의 다른 관절로 연결된 객체들의 모델링 간에서 전환될 수 있다.
해결 방안을 특징은 (1) 거리 제약 위반량(violation amount)을 사용하여, 관절로 연결된 부분들의 길이 측정, (2) 충돌 제약 위반량을 사용하여, 관절로 연결된 부분들의 폭의 추정치 찾기, (3) 모델 피팅으로부터의 화소 분류를 사용하여, 관절로 연결된 부분들의 폭 추정, 및 (4) 강체 3D 포인트 클라우드 변환(rigid 3D point cloud transformation)을 사용하여, 1D - 3D 스케일을 사용하는 관절로 연결된 모델의 전체적인 크기 추정을 포함한다.
도 1은 사용자(8)가 애플리케이션과 인터랙션하는 이미징 시스템(10)의 예시적인 실시예를 도시한다. 이는, 사용자의 집에서와 같이, 이미징 시스템의 현실 세계 배치를 도시한다. 이미징 시스템(10)은 디스플레이(196), 깊이 카메라 시스템(20), 및 컴퓨팅 환경 또는 장치(12)를 포함한다. 깊이 카메라 시스템(20)은 적외선(IR) 발광기(light emitter)(24), 적외선 카메라(26) 및 적녹청(RGB) 카메라(28)를 갖고 있는 이미지 카메라 컴포넌트(22), 또는 깊이 센서를 포함할 수 있다. 사람 또는 플레이어라고도 하는 사용자(8)는 깊이 센서의 시야(6) 내에 서 있다. 선들(2 및 4)은 시야(6)의 경계선을 나타낸다. 본 예시에서, 깊이 카메라 시스템(20) 및 컴퓨팅 환경(12)은 디스플레이(196) 상의 아바타(197)가 사용자(8)의 움직임을 트래킹하는 애플리케이션을 제공한다. 예를 들어, 사용자가 팔을 들어올릴 때 아바타가 팔을 들어올릴 수 있다. 사용자는 애플리케이션에 제어 입력을 제공하기 위해 손으로 제스처를 취할 수도 있다. 아바타(197)는 3D 가상 세계에서 길(198)에 서 있다. 깊이 카메라 시스템의 초점 거리를 따라, 예컨대, 수평으로 연장되는 z-축, 수직으로 연장되는 y-축, 및 측면으로(z-축을 가로지름) 그리고 수평으로 연장되는 x-축을 포함하는 직교 좌표계 시스템이 정의될 수 있다. 도면의 시각(perspective)은 간략하게 수정된 것으로, 디스플레이(196)는 y-축에서 수직으로 연장되고, z-축은, y-축 및 x-축과 수직으로 그리고 사용자(8)가 서 있는 지표면과 수평으로, 깊이 카메라 시스템으로부터 연장된다는 점을 알 것이다.
일반적으로, 이미징 시스템(10)은 인간 타겟을 인식, 분석 및/또는 추적하는 데 사용된다. 컴퓨팅 환경(12)은 컴퓨터, 게임 시스템 또는 콘솔 등은 물론, 애플리케이션들을 실행하기 위한 하드웨어 컴포넌트 및/또는 소프트웨어 컴포넌트를 포함할 수 있다.
깊이 카메라 시스템(20)은 예컨대, 사람(8)과 같은 한 명 이상의 사람들을 시각적으로 모니터링하는데 사용될 수 있는 카메라를 포함할 수 있으므로, 아바타나 온-스크린 캐릭터를 애니메이션화하거나 또는 사용자 인터페이스(UI)에서 메뉴 항목을 선택하는 것과 같이 어떤 애플리케이션 안에서 하나 이상의 컨트롤이나 액션을 수행하기 위해, 한 손 또는 양손의 포즈, 제스처 및/또는 움직임을 포함하는, 사람들에 의해 행해진 포즈, 제스처 및/또는 움직임들이 캡쳐, 분석, 및 추적될 수 있다. 손 포즈는 깊이 화소들의 프레임에서와 같이, 어느 한 시점에서 객체의 구성 또는 형상을 나타내고, 제스처는 깊이 화소들의 다수의 프레임에서와 같이, 포즈의 시퀀스를 나타낸다. 다수의 사용자들이 유사하게 모니터링될 수 있다.
이미징 시스템(10)은 예를 들어, 텔레비전, 모니터, 고선명도 텔레비전(HDTV) 또는 벽이나 다른 표면에 프로젝션 등 사용자에게 시청각적 출력을 제공하는 디스플레이(196)과 같은 시청각 장치에 연결될 수 있다. 오디오 출력은 별개의 장치를 통해 제공될 수도 있다. 디스플레이를 구동하기 위해, 컴퓨팅 환경(12)은 애플리케이션과 관련된 시청각 신호들을 제공하는 그래픽 카드 같은 비디오 어댑터 및/또는 사운드 카드 같은 오디오 어댑터를 포함할 수 있다. 디스플레이(196)는 가령 S-비디오 케이블, 동축 케이블, HDMI 케이블, DVI 케이블, VGA 케이블 등을 통해 컴퓨팅 환경(12)에 연결될 수 있다.
사용자(8)의 포즈, 제스처 및/또는 움직임이 캡쳐되어, 아바타나 온 스크린 캐릭터를 애니메이션화하는데 사용되고/거나 컴퓨터 환경(12)에 의해 실행되고 있는 애플리케이션에 대한 입력 컨트롤들로서 해석되도록, 깊이 카메라 시스템(20)을 사용하여 사용자가 추적될 수 있다.
사용자(8)의 일부 움직임들은 아바타를 컨트롤하는 것 이외의 액션들에 해당할 수 있는 컨트롤들로서 해석될 수 있다. 예를 들어, 일 실시예에서, 플레이어는 게임을 종료하거나 일시 정지하거나 저장하고, 레벨을 선택하고, 고득점을 확인하며, 친구와 통신하는 등의 포즈 및/또는 움직임들을 이용할 수 있다. 플레이어는 메인 사용자 인터페이스로부터 게임이나 다른 애플리케이션을 선택하기 위해서 또는 옵션 메뉴를 탐색하기 위해서, 포즈 및/또는 움직임들을 이용할 수 있다. 그에 따라, 하나 이상의 애플리케이션과 인터랙션하도록 사용자(8)의 모든 포즈 및/또는 모션이 임의의 적절한 방식으로 이용 가능하고, 사용되며 분석될 수 있다.
이미징 시스템(10)은 운영체제 및/또는 게임 영역 밖에 있는 애플리케이션 컨트롤 입력 및 오락과 레저에 의도된 다른 애플리케이션들로서 타겟 움직임들을 해석하는데 추가로 사용될 수 있다. 예를 들어, 운영체제 및/또는 애플리케이션의 가상적인 어떤 제어 가능한 양태가 사용자(8)의 포즈 및/또는 움직임에 의해 제어될 수 있다.
도 2는 도 1의 이미징 시스템(10)의 예시적인 블록도를 도시한다. 깊이 카메라 시스템(20)은 예컨대 TOF(time-of-flight), 구조화된 광(structured light), 스테레오 이미지 등을 포함하는 어떤 적절한 기법을 통해 깊이 화소 값들을 포함할 수 있는 깊이 이미지를 구비한 깊이 정보와 함께 비디오를 캡쳐하도록 구성될 수 있다. 깊이 카메라 시스템(20)은 깊이 정보를 "Z 계층들", 또는 깊이 인식 카메라로부터 그 시선을 따라 연장되는 Z축에 수직일 수 있는 계층들로 편성할 수 있다.
깊이 카메라 시스템(20)은 물리적 공간 내 어떤 장면에 대한 깊이 이미지를 캡쳐하는 깊이 카메라와 같은 이미지 카메라 컴포넌트(22)를 포함할 수 있다. 깊이 이미지는 캡쳐된 장면의 이차원(2D) 화소 영역을 포함할 수 있으며, 2D 화소 영역 내 각각의 화소는 이미지 카메라 컴포넌트(22)로부터 선형 거리를 나타내는 관련 깊이 값을 가진다.
이미지 카메라 컴포넌트(22)는 장면의 깊이 이미지를 캡쳐하는데 사용될 수 있는 적외선 발광기(IR light emitter) (24), 적외선 카메라(26), 및 적녹청(RGB) 카메라(28)를 포함할 수 있다. 3D 카메라는 적외선 발광기(24)와 적외선 카메라(26)의 조합으로 이루어진다. 예를 들어, TOF 분석 시, IR 발광기(24)는 물리적 공간 상에 적외선 광을 발산하고, 적외선 카메라(26)는 물리적 공간 내 한 개 이상의 타겟 및 객체의 표면으로부터 후방 산란된 광을 검출한다. 일부 실시예에서, 펄싱되는 적외선 광은 나가는 광 펄스와 그에 대응하여 들어오는 광 펄스 사이의 시간이 측정되어 깊이 카메라 시스템(20)으로부터 물리적 공간 내 타겟이나 객체들 상의 특정 위치까지의 물리적 거리를 판단하는데 사용될 수 있도록 이용될 수 있다. 위상 시프트를 판단하기 위해 나가는 광 파동의 위상이 들어오는 광 파동의 위상과 비교될 수 있다. 그런 다음 위상 시프트가 깊이 카메라 시스템으로부터 타겟이나 객체들 상의 특정 위치까지의 물리적 거리를 판단하는데 사용될 수 있다.
가령 셔터링되는 광 펄스 이미징(shuttered light pulse imaging)을 포함하는 다양한 기법들을 통하여 시간에 따른 광의 반사 빔 강도를 분석함으로써, TOF 분석은 깊이 카메라 시스템(20)으로부터 타겟이나 객체들 상의 특정 위치까지의 물리적 거리를 간접적으로 판단하는데 사용될 수 있다.
또 다른 예시적인 실시예에서, 깊이 카메라 시스템(20)은 깊이 정보를 캡쳐하기 위해 구조화된 광을 사용할 수 있다. 그러한 분석시, 패턴화된 광(즉, 그리드 패턴이나 스트라이프 패턴과 같이 알려진 패턴에서 디스플레이되는 광)이 가령 IR 발광기(24)를 통해 장면 위로 투사될 수 있다. 장면 내 한 개 이상의 타겟이나 객체의 표면을 칠 때, 그에 응하여 패턴이 변형될 수 있다. 그러한 패턴의 변형은 가령 적외선 카메라(26) 및/또는 RGB 카메라(28)에 의해 캡쳐될 수 있고 그런 다음 깊이 카메라 시스템으로부터 타겟이나 객체들 상의 특정 위치까지의 물리적 거리를 판단하기 위해 분석될 수 있다.
깊이 카메라 시스템(20)은 서로 다른 각도로부터 장면을 볼 수 있는 둘 이상의 물리적으로 분리된 카메라들을 포함함으로써, 깊이 정보를 산출하기 위해 결정될 수 있는 비주얼 스테레오 데이터를 얻을 수 있다.
깊이 카메라 시스템(20)은 예컨대 소리 파동을 수신하여 전기 신호로 변환하는 트랜스듀서나 센서를 포함하는 마이크로폰(30)을 더 포함할 수 있다. 또한, 마이크로폰(30)은 컴퓨팅 환경(12)에 의해 실행되는 애플리케이션을 제어하기 위해 어떤 사람에 의해 주어진 소리들과 같은 오디오 신호를 수신하는데 사용될 수 있다. 오디오 신호는 소리낸 말, 휘파람, 외침 및 기타 발성음과 같은 음성 사운드뿐 아니라 손뼉치기나 발로 쿵쿵대기와 같은 비음성 사운드를 포함할 수 있다.
깊이 카메라 시스템(20)은 이미지 카메라 컴포넌트(22)와 통신하는 프로세서(32)를 포함할 수 있다. 프로세서(32)는 예를 들어 이하에서 보다 상세히 기술되는 바와 같이, 깊이 이미지를 수신하고; 깊이 이미지에 기반하여 복셀(voxel)들의 그리드를 생성하고; 복셀들의 그리드에 포함된 배경을 제거하여 인간 타겟과 관련된 한 개 이상의 복셀들을 분리하고; 분리된 인간 타겟의 한 개 이상의 손발의 위치나 자리를 판단하고; 한 개 이상의 손발의 위치나 자리, 또는 어떤 다른 적절한 명령에 기반하여 모델을 조정하는 명령어들을 포함하는 명령어들을 실행할 수 있는 위치표준형 프로세서, 특수형 프로세서, 마이크로프로세서 등을 포함할 수 있다.
깊이 카메라 시스템(20)은 프로세서(32)에 의해 실행되는 명령어들을 저장할 뿐 아니라, 3D 카메라나 RGB 카메라에 의해 캡쳐되는 이미지들이나 이미지들의 프레임들, 또는 어떤 다른 적절한 정보, 이미지 등을 저장할 수 있는 메모리 컴포넌트(34)를 더 포함할 수 있다. 예시적인 일 실시예에 따르면, 메모리 컴포넌트(34)는 RAM(random access memory), ROM(read only memory), 캐시, 플래시 메모리, 하드 디스크, 또는 어떤 다른 적절한 유형의 컴퓨터 저장가능 저장 컴포넌트를 포함할 수 있다. 메모리 컴포넌트(34)는 버스(21)를 통해 이미지 캡쳐 컴포넌트(22) 및 프로세서(32)와 통신하는 별도의 컴포넌트일 수 있다. 또 다른 실시예에서, 메모리 컴포넌트(34)는 프로세서(32) 및/또는 이미지 캡쳐 컴포넌트(22) 안에 병합될 수 있다.
깊이 카메라 시스템(20)은 통신 링크(36)를 통해 컴퓨팅 환경(12)과 통신할 수 있다. 통신 링크(36)는 유선 및/또는 무선 접속일 수 있다. 일 실시예에 따르면, 컴퓨팅 환경(12)은 통신 링크(36)를 통해 깊이 카메라 시스템(20)으로, 깊이 카메라 시스템(20)의 시계 안에 있는 물리적 공간으로부터 언제 이미지 데이터를 캡쳐할 지를 지시하는 클록 신호를 제공할 수 있다.
또한, 깊이 카메라 시스템(20)은 가령 3D 카메라(26) 및/또는 RGB 카메라(28)에 의해 캡쳐된 깊이 정보 및 이미지들, 및/또는 이미지 카메라 시스템(20)에 의해 생성될 수 있는 골격 모델을 통신 링크(36)를 통해 컴퓨팅 환경(12)으로 제공할 수 있다. 그러면 컴퓨팅 환경(12)은 애플리케이션을 제어하기 위해 모델, 깊이 정보, 및 캡쳐된 이미지들을 이용할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 컴퓨팅 환경(12)은 제스처/포즈 필터들의 모음과 같은 제스처/포즈 라이브러리(190)를 포함할 수 있으며, 각각의 필터는 (사용자가 포즈를 취하거나 움직이면서) 모델에 의해 수행될 수 있는 제스처/포즈에 관한 정보를 가진다. 예를 들어, 다양한 손 포즈 및/또는 제스처에 대해 제스처/포즈 필터가 제공될 수 있다. 예시적인 손 포즈로는 “스탑” 포즈로 손바닥이 앞을 바라보게 손을 들고 있기, 수량을 나타내도록 한 개 이상의 손가락을 들고 있기 등을 포함한다. 예시적인 손 제스처로는 손 휘두르기(swiping) 또는 손 내밀기(flinging)를 포함한다. 탐지된 포즈 또는 모션을 각각의 필터와 비교함으로써, 어떤 사람에 의해 행해진 특정 포즈 또는 제스처가 식별될 수 있다.
사용자(골격 모델에 의해 표현됨)가 애플리케이션의 다양한 제어 입력과 관련된 하나 이상의 특정 포즈 또는 움직임을 언제 취했는지를 식별하기 위해, 깊이 카메라 시스템(20)에 의해 캡쳐된 모델 형태의 데이터가 제스처/포즈 라이브러리(190) 안의 제스처/포즈 필터들과 비교될 수 있다.
컴퓨팅 환경은 또한, 디스플레이 장치(196)로 시청각적 출력 신호를 제공하고 여기 기술된 바와 같은 다른 기능을 수행하기 위해, 메모리(194)에 저장된 명령어들을 실행하는 프로세서(192)를 포함할 수 있다.
메모리(34)는, 적어도 하나의 프로세서가 본원에 기술된 사용자의 손 또는 그 밖의 관절로 연결된 신체 부위의 포즈를 모델링하는 방법을 실행하도록 프로그래밍하는 컴퓨터 판독 가능 소프트웨어가 구현된 유형의(tangible) 컴퓨터 판독 가능 저장 장치일 수 있다. 또한, 프로세서(32)는 사용자의 포즈를 모델링하는, 프로세서로 구현된 방법을 제공하는 하나 이상의 프로세서일 수 있고, 여기서 상기 방법은 본원에 기술된 바와 같이 프로세서로 구현된 단계들을 포함한다.
도 3은 도 1의 이미징 시스템에서 사용될 수 있는 컴퓨팅 환경의 예시적인 블록도를 도시한다. 컴퓨팅 환경은 하나 이상의 제스처 또는 기타 움직임을 해석하고, 그에 따라, 디스플레이 상에서 시각적인 공간을 업데이트하는 데 사용될 수 있다. 전술한 컴퓨팅 환경(12)과 같은 컴퓨팅 환경은 게임 콘솔과 같은 멀티미디어 콘솔(100)을 포함할 수 있다. 멀티미디어 콘솔(100)은, 레벨 1 캐시(102), 레벨 2 캐시(104) 및 플래시 ROM(Read Only Memory, 106)을 포함하는 CPU(central processing unit, 101)를 갖는다. 레벨 1 캐시(102) 및 레벨 2 캐시(104)는 데이터를 임시로 저장하여 메모리 액세스 사이클의 수를 감소시킴으로써, 처리 속도와 처리율을 향상시킨다. CPU(101)에는 하나 이상의 코어, 따라서 추가적인 레벨 1 및 레벨 2 캐시(102 및 104)가 제공될 수 있다. 플래시 ROM과 같은 메모리(106)는 멀티미디어 콘솔(100)의 전원이 켜질 때 부팅 프로세스(boot process)의 초기 단계 동안 로딩되는 실행가능 코드를 저장할 수 있다.
그래픽 처리 장치(GPU)(108)와 비디오 인코더/비디오 코덱(코더/디코더, 114)은 고속 및 고해상도 그래픽 처리를 위해 비디오 처리 파이프라인을 형성한다. 데이터는 버스를 통해 그래픽 처리 장치(108)에서 비디오 인코더/비디오 코덱(114)으로 전달된다. 비디오 처리 파이프라인은 텔레비전이나 다른 디스플레이로의 전송을 위해 A/V(오디오/비디오) 포트(140)로 데이터를 출력한다. 메모리 제어기(110)는 GPU(108)에 접속되어, RAM(Random Access Memory)과 같은 다양한 종류의 메모리(112)로의 프로세서 액세스를 용이하게 한다.
멀티미디어 콘솔(100)은, 모듈(118)에서 바람직하게 구현되는 I/O 제어기(120), 시스템 관리 제어기(122), 오디오 처리 장치(123), 네트워크 인터페이스(124), 제 1 USB 호스트 제어기(126), 제 2 USB 제어기(128), 및 전면 패널 I/O 서브어셈블리(130)를 포함한다. USB 제어기들(126 및 128)은 주변 제어기들(142(1) ~ 142(2)), 무선 어댑터(148) 및 외부 메모리 장치(146, 예를 들어, 플래시 메모리, 외부 CD/DVD ROM 드라이브, 이동식 매체 등)를 위한 호스트들로서 기능한다. 네트워크 인터페이스(NW IF)(124) 및/또는 무선 어댑터(148)는 네트워크(예를 들어, 인터넷, 홈 네트워크 등)로의 액세스를 제공하고, 이더넷 카드, 모뎀, 블루투스 모듈, 케이블 모뎀 등을 포함하는 아주 다양한 유무선 어댑터 컴포넌트들 중 임의의 것일 수 있다.
시스템 메모리(143)는 부팅 프로세스 동안에 로딩되는 애플리케이션을 저장하기 위해 제공된다. 미디어 드라이브(144)가 제공되고, 이는 DVD/CD 드라이브, 하드 드라이브, 또는 다른 이동식 미디어 드라이브를 포함할 수 있다. 미디어 드라이브(144)는 멀티미디어 콘솔(100)의 내부 또는 외부에 있을 수 있다. 애플리케이션 데이터는 멀티미디어 콘솔(100)에 의한 실행, 플레이백 등을 위해 미디어 드라이브(144)를 통해 액세스될 수 있다. 미디어 드라이브(144)는, 직렬 ATA 버스 또는 기타 고속 접속과 같은 버스를 통해 I/O 제어기(120)에 접속된다.
시스템 관리 제어기(122)는 멀티미디어 콘솔(100)의 가용성의 보장과 관련된 다양한 서비스 기능들을 제공한다. 오디오 처리 장치(123)와 오디오 코덱(132)은 높은 신뢰도와 스테레오 처리를 갖는 대응하는 오디오 처리 파이프라인을 형성한다. 오디오 데이터는 통신 링크를 통해 오디오 처리 장치(123)와 오디오 코덱(132) 사이에서 전달된다. 오디오 처리 파이프라인은 오디오 기능이 있는 외부 오디오 플레이어 또는 장치에 의한 재생을 위해 A/V 포트(140)로 데이터를 출력시킨다.
전면 패널 I/O 서브어셈블리(130)는 전원 버튼(150), 배출 버튼(eject button)(152), 및 멀티미디어 콘솔(100)의 외부 표면에 노출된 임의의 LED들(light emitting diodes) 또는 기타 인디케이터들의 기능을 지원한다. 시스템 전원 모듈(136)은 멀티미디어 콘솔(100)의 컴포넌트들에 전력을 공급한다. 팬(fan, 138)은 멀티미디어 콘솔(100) 내의 회로를 냉각시킨다.
멀티미디어 콘솔(100) 내의 CPU(101), GPU(108), 메모리 제어기(110) 및 기타 다양한 컴포넌트들은 직렬 및 병렬 버스들, 메모리 버스, 주변장치 버스, 또는 다양한 버스 아키텍처들 중의 임의의 것을 사용하는 프로세서나 로컬 버스를 포함하는 하나 이상의 버스들을 통해 상호접속된다.
멀티미디어 콘솔(100)의 전원이 켜질 때, 시스템 메모리(143)로부터 애플리케이션 데이터가 메모리(112) 및/또는 캐시(102, 104)로 로딩되어, CPU(101)에서 실행될 수 있다. 애플리케이션은 멀티미디어 콘솔(100)에서 이용가능한 다른 미디어 종류들로 네비게이트할 때 일관된 사용자 경험을 제공하는 그래픽 사용자 인터페이스를 제공할 수 있다. 동작 시에는, 미디어 드라이브(144) 내에 포함된 애플리케이션들 및/또는 기타 미디어들이 미디어 드라이브(144)로부터 시작되거나 재생되어, 멀티미디어 콘솔(100)에 추가 기능들을 제공할 수 있다.
멀티미디어 콘솔(100)은 텔레비전이나 기타 디스플레이에 시스템을 단순히 접속시킴으로써 독립형 시스템으로서 동작할 수 있다. 이 독립형 모드에서, 멀티미디어 콘솔(100)은 한 명 이상의 사용자들이 시스템과 인터랙트하고, 영화를 보고, 음악을 듣게 하도록 할 수 있다. 그러나, 네트워크 인터페이스(124) 또는 무선 어댑터(148)를 통해 이용가능하게 된 통합 광대역 접속으로 인해, 멀티미디어 콘솔(100)은 보다 큰 네트워크 커뮤니티의 참가자로서 동작할 수도 있다.
멀티미디어 콘솔(100)의 전원이 켜지면, 특정량의 하드웨어 리소스들이 멀티미디어 콘솔 운영 체제에 의한 시스템 사용을 위해 예약된다. 이러한 리소스들은 메모리(예컨대, 16 MB), CPU 및 GPU 사이클(예컨대, 5 %), 네트워킹 대역폭(예컨대, 8 kbs) 등의 예약을 포함할 수 있다. 이러한 리소스들은 시스템 부팅 시간에 예약되기 때문에, 애플리케이션의 관점에서는 예약된 리소스들이 존재하지 않는다.
특히, 개시 커널(launch kernel), 동시(concurrent) 시스템 애플리케이션 및 드라이버를 포함할 수 있을 정도로 메모리 예약이 충분히 큰 것이 바람직하다. 예약된 CPU 사용량이 시스템 애플리케이션에서 사용되지 않는 경우, 휴지 쓰레드(idle thread)가 미사용 사이클들을 쓸 수 있도록 CPU 예약이 일정한 것이 바람직하다.
멀티미디어 콘솔(100)이 부팅되고 시스템 리소스가 예약된 후에, 동시 시스템 애플리케이션이 실행되어 시스템 기능들을 제공한다. 시스템 기능들은, 상기에서 설명한 예약된 시스템 리소스들 내에서 실행되는 일련의 시스템 애플리케이션에서 캡슐화되어 있다. 운영 체제 커널은 시스템 애플리케이션 쓰레드인지 게임 애플리케이션 쓰레드인지를 식별한다. 일관적인 시스템 리소스 뷰를 애플리케이션에 제공하기 위해, 시스템 애플리케이션은 사전 설정된 시간 및 간격으로 CPU(101)에서 실행되도록 스케줄링되는 것이 바람직하다. 스케줄링은 콘솔에서 실행되는 게임 애플리케이션에 대한 캐시 중단을 최소화하기 위한 것이다.
동시 시스템 애플리케이션이 오디오를 필요로 할 때, 오디오 처리는 시간에 대한 민감도로 인해 게임 애플리케이션과 비동기적으로 스케줄링된다. 시스템 애플리케이션이 활성화될 때, 멀티미디어 콘솔 애플리케이션 관리자(이하에서 설명됨)는 게임 애플리케이션 오디오 레벨(예컨대, 음소거(mute), 감쇠(attenuate))을 제어한다.
게임 애플리케이션 및 시스템 애플리케이션은 입력 장치들(예컨대, 제어기(142(1) 및 142(2)))을 공유한다. 입력 장치들은 예약된 리소스들이 아니지만, 각 시스템 애플리케이션 및 게임 애플리케이션이 입력 장치의 포커스를 갖도록 애플리케이션들 사이에서 스위칭될 것이다. 애플리케이션 관리자는 게임 애플리케이션에 대한 정보 없이 입력 스트림의 스위칭을 제어하는 것이 바람직하며, 드라이버는 포커스 스위치에 관한 상태 정보를 보유한다. 콘솔(100)은 카메라(26 및 28)를 포함하는 도 2의 깊이 카메라 시스템(20)으로부터 추가적인 입력을 수신할 수 있다.
도 4는 도 1의 이미징 시스템에서 사용될 수 있는 컴퓨팅 환경의 또 하나의 예시적인 블록도를 도시한다.
이미징 시스템에서, 컴퓨팅 환경은 하나 이상의 제스처들이나 포즈를 해석하고, 그에 대응하여 디스플레이 상의 시각적인 공간을 업데이트하는 데 사용될 수 있다. 컴퓨팅 환경(220)은 통상적으로 다양한 유형의 컴퓨터 판독가능 저장 매체 또는 장치를 포함하는 컴퓨터(241)를 구비한다. 그것은 컴퓨터(241)에 의해 액세스될 수 있는 어떤 가용 매체일 수 있으며, 휘발성 및 비휘발성 매체 양자 모두와 이동식 및 비이동식 매체를 포함한다. 시스템 메모리(222)는 ROM(read only memory)(223) 및 RAM(random access memory)(260) 같은 휘발성 및/또는 비휘발성 메모리의 형식으로 된 컴퓨터 저장 매체를 포함한다. 가령 시동 중에, 컴퓨터(241) 내 구성요소들 사이에서 정보를 전달하는 것을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(224)(BIOS)은 통상적으로 ROM(223)에 저장된다. RAM(260)은 통상적으로 즉시 액세스가능하고/하거나 프로세싱 유닛(259)에 의해 현재 운영되고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 그래픽 인터페이스(231)는 GPU(229)와 통신한다. 한정하는 것이 아닌 예로서, 도 4는 운영체제(225), 애플리케이션 프로그램(226), 기타 프로그램 모듈(227), 및 프로그램 데이터(228)를 예시한다.
컴퓨터(241)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체, 예컨대, 비이동식, 비휘발성 마그네틱 매체로부터/로 읽고/쓰기를 하는 하드 디스크 드라이브(238), 이동식, 비휘발성 마그네틱 디스크(254)로부터/로 읽고/쓰기를 하는 마그네틱 디스크 드라이브(239), 및 CD ROM 또는 다른 광 매체와 같은 이동식, 비휘발성 광 디스크(253)로부터/로 읽기/쓰기를 하는 광 디스크 드라이브(240)를 또한 포함할 수 있다. 예시적인 운영 환경에 사용될 수 있는 다른 이동식/비이동식, 휘발성/비휘발성 유형의(tangible) 컴퓨터 판독가능 저장 매체나 장치로는 마그네틱 테이프 카세트, 플래시 메모리 카드, DVD(digital versatile disks), 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등이 포함되나 그러한 것에 국한되지 않는다. 하드 디스크 드라이브(238)는 통상적으로 인터페이스(234)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(221)에 연결되고, 마그네틱 디스크 드라이브(239) 및 광 디스크 드라이브(240)는 통상적으로 인터페이스(235)와 같은 이동식 메모리 인터페이스를 통해 시스템 버스(221)에 연결된다.
앞서 논의되고 도 4에서 예시된 드라이브들 및 그 관련 컴퓨터 저장 매체는 컴퓨터(241)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 지원한다. 예를 들어, 하드 디스크 드라이브(238)는 운영체제(258), 애플리케이션 프로그램(257), 기타 프로그램 모듈(256), 및 프로그램 데이터(255)를 저장하는 것으로 묘사된다. 이 구성요소들은 운영체제(225), 애플리케이션 프로그램(226), 기타 프로그램 모듈(227), 및 프로그램 데이터(228)와 같을 수도 다를 수도 있다는 것을 알아야 한다. 운영체제(258), 애플리케이션 프로그램(257), 기타 프로그램 모듈(256), 및 프로그램 데이터(255)에는 여기서 최소한 그들이 다른 사본들임을 묘사하기 위해 다른 부호들이 주어진다. 사용자는 키보드(251) 및 일반적으로는 마우스, 트랙볼 또는 터치 패드라 일컫는 포인팅 장치(252)와 같은 입력 장치들을 통해 컴퓨터(241) 안에 명령과 정보를 입력할 수 있다. 다른 입력 장치들(도시되지 않음)에는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등이 포함될 수 있다. 이들 및 기타 입력 장치들은 흔히 시스템 버스에 연결된 사용자 입력 인터페이스(236)를 통해 프로세싱 유닛(259)에 연결되나, 병렬 포트나 게임 포트 또는 유니버설 시리얼 버스(USB) 같은 다른 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 카메라들(26 및 28)을 포함하는 도 2의 깊이 카메라 시스템(20)은 콘솔(100) 콘솔(100)에 대한 추가 입력 장치들을 규정할 수 있다. 모니터(242) 또는 다른 종류의 디스플레이 장치 역시 비디오 인터페이스(232)와 같은 인터페이스를 통해 시스템 버스(221)에 연결된다. 모니터 외에, 컴퓨터들은 출력 주변기기 인터페이스(233)를 통해 연결될 수 있는 스피커(244) 및 프린터(243)와 같은 다른 주변기기 출력 장치들을 포함할 수도 있다.
컴퓨터(241)는 원격 컴퓨터(246)와 같은 한 개 이상의 원격 컴퓨터로의 논리 접속(logical connection)을 이용하여, 네트워킹 환경 안에서 동작할 수 있다. 원격 컴퓨터(246)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 예시적인 네트워크 노드일 수 있으며, 도 4에는 메모리 저장 장치(247)만이 도시되었지만 통상적으로 컴퓨터(241)와 관련해 앞서 기술된 구성요소들 중 다수나 전부를 포함한다. 논리 접속들은 LAN(local area network)(245) 및 WAN(wide area network)(249)을 포함하지만, 다른 네트워크들 역시 포함할 수 있다. 그러한 네트워킹 환경은 사무실, 기업(enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(241)는 네트워크 인터페이스나 어댑터(237)를 통해 LAN(245)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(241)는 통상적으로, 인터넷 같은 WAN(249)을 통한 통신을 설정하기 위한 모뎀(250) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(250)이 사용자 입력 인터페이스(236)나 다른 알맞은 메커니즘을 통해 시스템 버스(221)에 연결될 수 있다. 네트워킹 환경에서, 컴퓨터(241)와 관련해 묘사된 프로그램 모듈들이나 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 한정하는 것이 아닌 예로서, 도 4는 원격 애플리케이션 프로그램(248)을 메모리 장치(247) 상에 상주하는 것으로서 묘사한다. 도시된 네트워크 접속은 예시적인 것이며 컴퓨터들 사이에 통신 링크를 설정하는 다른 수단 역시 사용될 수 있다는 것을 알 수 있을 것이다.
컴퓨팅 환경은, 적어도 하나의 프로세서가 본원에 기술된 사용자의 손 또는 그 밖의 관절로 연결된 신체 부위의 포즈를 모델링하는 방법을 실행하도록 프로그래밍하는 컴퓨터 판독 가능 소프트웨어가 구현된 유형의(tangible) 컴퓨터 판독 가능 저장 장치를 포함할 수 있다. 유형의 컴퓨터 판독가능 저장 장치는 예를 들어, 컴포넌트들(222, 234, 235, 230, 253 및 254) 중 하나 이상을 포함할 수 있다. 또한, 컴퓨팅 환경의 하나 이상의 프로세서에서 사용자의 손 또는 그 밖의 관절로 연결된 신체 부위의 포즈를 모델링하기 위한 프로세서로 구현된 방법을 제공할 수 있고, 상기 방법은 본원에서 설명되는 바와 같은 프로세서로 구현된 단계들을 포함한다. 프로세서는 예를 들어, 컴포넌트들(229 및 259) 중 한 개 이상을 포함할 수 있다.
도 5는 관절들(다이아몬드로 묘사)과 유인점들(정사각형으로 묘사)을 포함하는 사용자의 손의 모델을 도시한다. 포즈가 탐지될, 사전 결정된 관절로 연결된 신체 부위에 대해 모델이 제공될 수 있다. 하나의 접근 방법으로, 손 부분의 모델이 제공된다. 모델(500)은 팔(504), 손바닥(502), 손가락들(510, 520, 530 및 540) 및 엄지 손가락(550)을 포함할 수 있다. 손가락들은 먼(distal) 세그먼트(512, 522, 532 및 542), 중간 세그먼트(514, 524, 534 및 544) 및 가까운(proximal) 세그먼트(516, 526, 536 및 546)를 포함한다. 엄지 손가락은 먼 세그먼트(552)와 가까운 세그먼트(554)를 포함한다. 모델의 손가락과 엄지 손가락 세그먼트는 인체의 지골(phalanx skeleton)에 대응한다. 팔/손목과 손바닥 사이의 관절(503), 먼 엄지 손가락 부분과 가까운 엄지 손가락 부분 사이의 관절(560), 가까운 엄지 손가락과 손바닥 사이의 관절(564)과 같이, 인접 신체 부위들 사이에 관절이 제공된다. 일반적으로 이런 관절들은 정의된 움직임 범위를 갖는 인체의 관절들에 대응한다. 이 움직임은 주로 각으로(angular) 이루어지지만, 위치 이동일(translational) 수도 있다. 손가락 끝(먼 손가락 세그먼트와 먼 엄지 손가락 세그먼트)에서와 같은 추가적인 포인트들을 사용하여 먼 손가락 세그먼트의 위치를 정의할 수도 있다. 편의를 위해서, 이들 말단점(end point)이 인간의 골격에서의 관절에 대응하지는 않더라도 “관절”이라 할 것이다. 먼 엄지 손가락 세그먼트의 관절(556)이 일례이다. 따라서, 관절(556)과 같은 일부 관절들은 인간 골격의 관절에 대응하지 않을 수 있고, 관절(560 및 564)과 같은 일부 관절들은 인간 골격의 관절에 대응하게 된다. 신체 부위의 방향은 신체 부위 적어도 두 개의 관절의 위치에 의해 정의될 수 있다. 손가락 세그먼트와 같이 길쭉한 신체 부위에서는, 예를 들어, 관절들이 신체 부위의 반대 끝에 있을 수 있다.
또한, 각각의 신체 부위에 대해 한 개 이상의 대표(representative) 유인점이 지정될 수 있다. 예를 들어, 예시적인 대표 유인점들(531, 541, 558, 562, 501 및 505)가 손가락(530)의 먼 손가락 세그먼트, 손가락(540)의 먼 손가락 세그먼트, 먼 엄지 손가락 부분(552), 가까운 엄지 손가락 부분(554), 손바닥(502) 및 팔(504) 각각에 대해 주어진다. 예컨대, 손바닥과 같이, 상대적으로 큰 신체 부위 및/또는 상대적으로 더 복잡한 움직임 범위를 갖는 신체 부위에 대해 다수의 유인점들이 사용될 수도 있다. 손가락(540)의 중간 및 가까운 손가락 세그먼트에 대해 유인점들(543 및 545)이 각각 제공된다.
모델의 하나 이상의 신체 부위에서 유인점을 갖지 않을 수도 있다.
일반적으로, 이 도면 또는 다른 도면에서, 작은 정사각형 형태가 대표 유인점을 나타낸다. 대표 유인점은 모델의 신체 부위를 대표하는 포인트일 수 있다. “유인점”라는 용어는, 매칭 프로세스에서, 유인점이 깊이 센서 데이터 쪽으로 가까워지거나 또는 깊이 센서 데이터로 끌리는(attracted) 것을 나타낸다. 하나의 접근 방법으로, 대표 유인점은 신체 부위의 중심점(central point) 또는 중심(centroid)에 있다. 중심은 신체 부위 안에 또는 신체 부위의 표면에 있을 수 있다. 표면은, 깊이 축을 따라서 또는 깊이 카메라로의 시선(line of sight)에 따라서, 깊이 카메라를 마주하고 있다. 중심은 신체 부위의 중심점으로 간주될 수 있다.
도 7a의 단계(734)와 관련되어 아래에서 논의되는 중요축(axis of importance)(507)은 중심-대-유인점 매칭을 위해 사용될 수 있다.
모델은 다양한 신체 부위의 움직임의 허용되는 범위를 나타낼 수 있다. 각각의 신체 부위는 인접 신체 부위에 대한 움직임의 허용되는 각도(angular) 범위를 가지고 있을 수 있다. 예를 들어, 각각의 손가락의 가까운 세그먼트는 손바닥에 대한 움직임의 허용되는 각도 범위를 갖고 있고, 각각의 손가락의 중간 세그먼트는 손가락의 가까운 세그먼트에 대한 움직임의 허용되는 각도 범위를 갖고 있을 수 있다. 이는 각도 제약에 의해 정의될 수 있다. 신체 부위의 일부 상대적인 위치 이동 움직임(translational movement)도 허용될 수 있다. 다른 신체 부위들이 충돌하지 않음을, 예를 들어, 전체로든 부분으로든, 같은 시각에 같은 장소에 있지 않음을 나타내는 충돌 제약이 제공될 수 있다.
모델은, 신체 부위가 일반적으로 독립적이고 부동하도록(free floating) 정의될 수 있지만, 서로 인접해야 하는 신체 부위들이 실제로 인접하는 구성을 하도록 거리 제약이 설정될 수 있다. 인접지(adjacency)는 실질적으로 동일한 장소에 있는 인접 신체 부위의 관절들을 포함할 수 있다. 이와 같은 접근 방법에서, 각각의 신체 부위는 인접 신체 부위의 말단의 관절과 실질적으로 일치하는 말단의 관절을 가지고 있을 수 있다. 예를 들어, 먼 엄지 손가락 부분과 가까운 엄지 손가락 부분 사이의 관절(560)은 가까운 엄지 손가락 부분(554)의 원단부(distal end)에 있는 하나의 관절과 먼 엄지 손가락 부분(552)의 근단부(proximal end)에 있는 하나의 관절을 나타낼 수 있다. 먼 엄지 손가락 부분과 가까운 엄지 손가락 부분이 서로 분리되었을 때 위반된 거리 제약의 일례가 발생한다.
다른 접근 방법으로, 예를 들어, 먼 엄지 손가락 부분과 가까운 엄지 손가락 부분 사이에 하나의 관절이 있고, 이 관절과 부모 관절 간의 거리가 거리 제약이 된다. 이런 모델의 접근 방법에서, 메시(mesh)가, 자식 관절에 닿을 정도로 길지는 않지만, 자식 관절을 가리키는 부모 관절에 배치된다. 부모 또는 자식 관절은 각각 부모 또는 자식 신체 부위에 연계될 수 있다. 하나의 가능한 접근 방법으로, 자식 신체 부위는, 손바닥에서 연장된 손가락과 같이, 큰 신체 부위에서 연장된 작은 신체 부위일 수 있다. 또는, 자식 신체 부위는, 팔에서 손가락 끝으로의 방향처럼, 다른 신체 부위로부터 특정 방향으로 연장된 신체 부위일 수 있다. 예를 들어, 가까운 엄지 손가락 부분(554)은 먼 엄지 손가락 부분(552)의 부모일 수 있다.
신체 부위들의 모델은 원하는 수준의 세부 사항을 가질 수 있다. 예를 들어, 손바닥을 단일 엔티티(unitary entity)로 모델링하는 대신, 손바닥뼈(metacarpal bone)와 관절들을 모델링함으로써 더욱 상세하게 모델링될 수 있다. 모델은 직사각형, 입방체(cube), 타원체, 구 등의 개별 입체(volume)/형상을 포함할 수 있다. 이런 입체는 원하는 수준의 입상도(granularity)를 제공하도록 크기 및 형상이 조정될 수 있다. 이 대신에 또는 추가적으로, 모델은 적절하게 리깅과 스키닝된(rigged and skinned) 연속 표면을 형성하는 메시로 표현될 수 있다. 리깅과 스키닝이란 3D 메시 안에 골격을 배치하고 골격 세그먼트를 메시의 대응하는 부분에 매핑하여, 골격이 움직이면 부드럽게 변형되는 신체 부위를 만드는 것을 말한다. 모델의 복잡도는 원하는 정도의 사실주의와 이용 가능한 연산 자원과 같은 요소들에 달려 있다.
또한, 관절로 연결된 신체 부위의 일례로써 인간의 손이 논의되었지만, 이런 개념은 알려진 범위의 움직임이 있는 객체의 다른 관절로 연결된 신체 부위들로 확대될 수 있다. 객체는 인간이나 동물과 같은 생물/실물 또는 로봇이나 다른 무생물을 포함할 수 있다. 하나 이상의 이런 객체가 동시에 트래킹될 수 있다. 또한, 애플리케이션의 일부로써 깊이 센서가 사용되는 경우, 깊이 센서에서 이미지화되는 인간은 애플리케이션의 능동적인 사용자/참가자이거나 또는 수동적인 관중일 수도 있다.
도 6은 이미징 시스템에서 관절로 연결된 신체 부위의 포즈를 개선된 충실도로 탐지하는 방법을 도시한다. 단계(600)는, 이전에 언급한 깊이 카메라 시스템과 같은, 깊이 센서로부터 사용자의 깊이 화소들을 얻는 단계를 포함한다. 예를 들어, 이것은 깊이 픽셀들의 프레임일 수 있다. 단계(700)는 도 7a의 단계(702-714)와 관련하여 추가로 설명되는 바와 같이, 사전-매칭(pre-matching) 프로세싱을 실행하는 단계를 포함한다. 단계(720)는 도 7a의 단계(721-736)와 관련하여 추가로 설명되는 바와 같이, 중심들을 사용하여 매칭을 실행하는 단계를 포함한다. 단계(750)는 도 7a의 단계(752-756)와 관련하여 추가로 설명되는 바와 같이, 중심들을 사용하여 매칭을 개선하는(refining) 단계를 포함한다. 단계(760)는 도 7b와 관련하여 추가로 설명되는 바와 같이, 래스터화된 모델을 사용하여 매칭을 개선하는 단계를 포함한다. 하나의 접근 방법으로, 단계들(700, 720, 750 및 760)은 모델의 신체 부위들의 상대적인 비율을 변경하지 않는다.
도 7a는 도 6의 단계들(700, 720 및 750)의 추가 세부 사항을 도시한다. 도 7a 및 7b에서, 짧은-점선(702에서부터 704로)은 데이터의 입력을 나타내고, 긴-점선(704에서부터 706로)은 데이터의 출력을 나타내고, 실선(704에서부터 708로)은 코드 또는 소프트웨어의 흐름 또는 실행 시퀀스를 나타낸다. 단계들(702-714)은 사전-매칭 프로세싱을 실행하는 도 7a의 단계(700)에 대응한다.
배경 제거 단계(704)에서 (도 8a의 프레임(800)과 같은) 깊이 프레임 데이터(702)를 수신한다. 깊이 프레임은 깊이 센서로부터의 깊이 화소들을 포함할 수 있다. 출력은 예를 들어, (도 8b의 프레임(810)과 같이) BGR(청-녹-적 색깔 순서의 화소) 깊이 프레임(706)일 수 있다. 세그멘테이션(segmentation) 단계(708)에서는 BGR 깊이 프레임을 처리하여, 양쪽 손이 존재하는 경우에 화소들이 오른손 혹은 왼손에 속하는지를 식별하는 세그멘테이션 지도(710)를 제공한다. 이런 목적을 위해 다양한 휴리스틱법(heuristics)이 사용될 수 있다. 예시적인 단계(712)에서 기계 학습 프로세스(machine learning process)를 사용하여 BGR 깊이 프레임을 처리하여 확률 지도(714)를 제공한다. 기계 학습 프로세스는 이전에 트레이닝되어 있다. 특히, 각각의 깊이 화소에 대해서, 깊이 화소가 신체 부위들 중 어느 하나의 일부일 확률이 결정될 수 있다. 예를 들어, Pr1은 깊이 화소가 먼 엄지 손가락 부위의 일부일 확률일 수 있고, Pr2는 깊이 화소가 가까운 엄지 손가락 부위의 일부일 확률일 수 있으며, Pr3은 깊이 화소가 손바닥의 일부일 확률일 수 있다. 각각의 화소에서, 이 확률들의 합은 1이다. 따라서, 확률 지도는, 모델의 각각의 신체 부위에 대해 하나씩, 각각의 깊이 화소에 대한 확률 집합을 포함할 수 있다.
단계들(721-736)은 도 7a의 단계(720)에 대응한다. 단계(721)에서는 확률 지도에 기반하여 각각의 신체 부위에 대한 하나의 중심을 생성하여, 중심 데이터(722)를 생성한다. 중심 데이터는 각각의 신체 부위에 대해 x, y, z 좌표의 3D 위치의 형태일 수 있다. 3D 위치는 깊이 화소와 일치하거나 또는 일치하지 않을 수 있다. 각각의 신체 부위의 중심은, 모델의 신체 부위의 대표 유인점과 유사하게, 신체 부위의 대표 위치이다. 도 9a-9e 및 도 10은 예시적인 중심들을 묘사한다. 단계(724)에서는 중심 집합을 생성하고 병합하여 중심 집합 데이터(726)를 제공한다. 중심 집합은 모델링된 동일한 신체 영역의 일부인 것으로 결정되는 중심들의 모음이다. 예를 들어, 하나의 집합(728)이 어느 한쪽 손에 대한 중심들을 포함하고, 다른 집합(730)이 다른 손에 대한 중심들을 포함할 수 있다. 이 시점에서는, 중심 집합이 오른손 또는 왼손에 연계되어 있는지 아닌지를 알 수 없다. 단계(732)에서는 중심 집합들(728 및 730)을 입력으로서 사용하고 세그멘테이션 지도를 사용하여 중심 집합-대-팔의 매칭을 실행한다. 세그멘테이션 지도는 깊이 지도의 어느 부분이 왼손인지 오른손인지를 나타낸다. 이 단계는 어느 중심 집합이 어느 쪽 팔과 연계되어 있는지를 보여준다. 중심 집합이 한쪽 팔과 다른 쪽 팔로부터 얼마나 가까운지를 비롯한 다양한 팩터들이 고려될 수 있다. 한쪽 팔에 더 가까운 중심 집합이 그 팔과 연계될 가능성이 높다. 또한 이 단계는 입력으로서 이전 프레임 모델(738)(오른팔(740) 및 왼팔(742) 데이터 포함)을, 즉, 가장 최근 프레임을 포함하는 한 개 이상의 이전 프레임으로부터 결정된 대로의 모델의 상태를 사용할 수 있다.
단계(732)는 중심들과 유인점들의 매칭 종류 간의 거리를 사용하여 계산된 스코어와, 확률에 기반한 중심의 신뢰도 측정에 기반하는, 중심 집합들과 트래킹된 관절로 연결된 모델들 간의 양자간 매칭을 포함할 수 있다.
단계(734)는 중심-대-유인점 매칭을 실행한다. 도 11에서 추가적인 세부 사항이 제공된다. 중심 집합들(728 및 730)과 모델의 대표 유인점들(744)(도 5 참조)이 입력으로 제공될 수 있다. 대표 유인점이란 각각의 신체 부위에서 깊이 센서 데이터의 매칭 중심과 일치하도록 이상적으로 만들어진 관절로 연결된 모델의 포인트이다. 단계(734)는 다양한 팩터들을 이용하여 계산된 매치 스코어를 사용하여 중심 집합의 모든 중심들과 모델의 모든 유인점들 간에 하나 이상의 최적의 매치(best match)를 찾는 단계를 포함한다.
하나의 팩터로써, 매치된 각각의 중심과 유인점 간의 거리를 들 수 있고, 이 거리는 예를 들어, 중심과 유인점을 연결하는 벡터의 크기에 의해 결정될 수 있다. 적합한 매치(proper match)일 가능성이 더 높음을 뜻하는 더 높은 스코어가, 유인점으로부터 더 멀리 있는 중심보다는 유인점에 더 가까운 중심에 부여될 수 있다.
다른 팩터로는 중요축을 따른 중심의 순서 배치(ordering)를 들 수 있다. 예를 들어, 손 모델에서 중요축은 손바닥과, 손가락들의 가까운 세그먼트들 사이의 관절들을 따라 연장되어 손가락들, 예를 들어, (새끼 손가락의 아랫부분에서부터 검지 손가락의 아랫부분까지) 손가락들(510, 520, 530 및 540)의 예상 순서를 나타낼 수 있다. 도 5의 예시적인 중요축(507)을 참조한다. 중심들은 예를 들어, 축과 직교하는 방향으로 중심을 이동시켜 중심이 축을 따라 어느 곳에 오게 되는지를 결정함으로써, 이 축을 따라 투사될 수 있다. 포인트의 선(line) 상의 투사는 닫힌 형태(closed form)로 분석적으로(analytically) 계산될 수 있다. 그리고 나서, 축을 따라 중심의 순서가 결정될 수 있다. 일반적으로, 손가락들이 교차되는 경우를 제외하고 손가락들은 예상되는 순서대로이다. 적합한 매치일 가능성이 더 높음을 뜻하는 더 높은 스코어는, 중요축을 따라 예상된 순서의 중심에 부여될 수 있다. 적합한 매치일 가능성이 더 낮음을 뜻하는 더 낮은 스코어는, 중요축을 따라 예상된 순서에 있지 않는 중심에 부여될 수 있다. 중요축은 다른 방향일 수도 있고, 하나 이상의 중요축이 사용될 수도 있다.
다른 팩터로는 이웃하는 중심이나 신체 부위와의 연결성(connectivity)을 들 수 있다. 예를 들어, 손가락의 먼 세그먼트의 중심은 다른 손가락의 세그먼트의 중심이 아니라, 동일한 손가락의 중간 세그먼트의 중심과 계속 이어지는 화소 경로 내에 있을 것으로 예상된다. 적합한 매치일 가능성이 더 높음을 뜻하는 더 높은 스코어가 인접 신체 부위의 중심과 계속 이어지는 경로 내에 있는 중심에 부여될 수 있다. 적합한 매치일 가능성이 더 낮음을 뜻하는 더 낮은 스코어가 인접 신체 부위의 중심과 계속 이어지는 경로 내에 있지 않은 중심에 부여될 수 있다. 비유적으로 깊이 지도를 일직선으로 걸어서(walk) 화소 데이터에 단절(disconnection)이 있는지를 결정함으로써 이 팩터를 평가할 수 있다. 노이즈 및 기타 극단적인 경우(edge case)에 대해 더욱 강해지도록(robust) 하기 위해, 경로가 일직선에서 얼마나 벗어나는지에 대한 제약이 있는, 깊이 지도에서의 중심들 간의 경로 찾기와 같은 더욱 복잡한 방법을 사용하여 이 팩터를 평가할 수도 있다. 예를 들어, 손가락의 먼 세그먼트로부터 동일한 손가락의 중간 세그먼트로 걸어가려 할 때 화소 데이터에 차이(gap)가 탐지되면, 이는 매치가 틀릴 가능성을 나타낸다. 즉, 손가락 세그먼트의 한쪽 또는 양쪽이 잘못 식별된 것이다. 예를 들어, 각각의 손가락에 대해, 먼 손가락 중심과 중간 손가락 중심들 간의 연결을 찾음으로써 연결성을 식별할 수 있다.
다른 팩터로는 모델의 신체 부위들 간의 충돌 확인(collision check)을 들 수 있다. 적합한 매치일 가능성이 더 높다는 것을 뜻하는 더 높은 스코어가 충돌을 일으키지 않는 중심-대-유인점에 부여될 수 있고, 적합한 매치일 가능성이 더 낮음을 뜻하는 더 낮은 스코어는 다른 신체 부위들이 같은 위치에 동시에 존재하여 충돌을 일으키는 중심-대-유인점에 부여될 수 있다.
중심들과 유인점들 간의 최적의 매치는 하나 이상의 이들 또는 다른 팩터들의 임의의 조합에 기반할 수 있다. 다른 팩터들은, 예를 들어, 테스트 결과로부터 결정되는 것처럼, 그 상대적인 중요도에 기반하여 다르게 가중될 수 있다.
단계(736)는 유인점의 중심으로의 강체 변환을 실행한다. 예로써 도 12a를 참조한다. 강체 변환은 모델의 위치 이동, 회전 및 스케일링(scaling) 중 하나 이상을 포함할 수 있다. 이 단계는 유인점의 최적의 3D 포인트 클라우드 변환의 위치 이동, 회전 및 스케일링을 계산하고, 모든 유인점들에 이 변환을 적용하는 단계를 포함할 수 있다. 위치 이동은 프레임 또는 좌표 시스템에 따라 모델을 이동시키는 것을 포함할 수 있다. 좌표 시스템은 직교 x, y 및 z 축(도 1)과 같은 임의의 축들을 포함할 수 있다. 오일러 각(euler angle)을 사용하여 변환을 표현할 수 있다. 회전은 하나 이상의 축에 대해 모델을 회전하는 것을 포함한다. 스케일링은 신체 부위의 상대적인 방향(orientation)이나 비율(proportion)의 변경 없이 모델의 전체적인 크기를 바꾼다. 하나의 접근 방법으로, 전체적인 강체 변환은 신체 부위의 상대적인 방향을 바꾸지 않는다. 신체 부위의 상대적인 방향은 자식 신체 부위와 그 부모 신체 부위 사이의 국부 변환(local transformation)으로써 정의될 수 있다. 가능한 하나의 접근 방법으로, 손바닥에서 연장되는 손가락과 같이, 자식 신체 부위는 더 큰 신체 부위로부터 연장되는 더 작은 신체 부위일 수 있다. 입방체의 강체 변환의 예로, 한 위치에서 다른 위치로 3D 공간에서 이동하는 더 크거나 더 작은 입방체를 들 수 있다. 강체 변환 중에 신체 부위의 상대적인 방향을 유지하는 예로, 강체 변환 이전과 이후 모두에서 첫 번째 손가락은 세 번째 손가락의 3/4의 길이이고, 첫 번째 손가락이 세 번째 손가락에 대해 특정 각도로 연장되게 하는 것이 있다.
강체 변환의 예시적인 구현에서는 유인점들과 중심들 간의 강체 변환 추정을 사용하여 모델의 전체적인 스케일링(global scaling)을 계산한다. 대응하는 두 개의 포인트 집합들 간의 강체 신체 변환(회전, 위치 이동 및 모든 치수에서 일정한 스케일링)의 닫힌 형태의 예시적인 계산이 본원에 참조로써 통합된 Horn, B. K. P.의 "Closed-form solution of absolute orientation using unit quaternions," Journal of the Optical Society of America, 4(4), 629-642 (1987)에 기술되어 있다. Horn은 “두 좌표계의 많은 포인트들의 좌표 측정 쌍을 사용하여 양쪽 좌표계 사이의 관계를 찾는 것은 하나의 사진 측량 작업(photogrammetric task)이다. 실체 사진 측량(stereophotogrammetry) 및 로봇 공항(robotics)에서의 애플리케이션들이 있을 수 있다. 나는 여기서 세 개 이상의 포인트들에 대한 최소 제곱법(least square) 문제에 대한 닫힌-형태의 해를 제시한다. 현재 다양한 임상, 그래픽 및 수치 반복 방법(empirical, graphical and numerical iterative method)이 사용되고 있다. 해의 도출은 회전을 표현하기 위한 단위 쿼터니언(unit quarternion)의 사용으로 간단해진다. 나는 이런 문제의 해가 보유해야만 하는 대칭 속성을 강조한다. 최상의 위치 이동 오프셋(best translational offset)은 하나의 시스템에서의 좌표계들의 중심과 다른 시스템에서의 좌표계들의 회전되고 크기가 조정된 중심 사이의 차이이다. 최상의 스케일(best scale)은 두 시스템에서 각각의 중심으로부터 좌표의 제곱 평균 제곱근 편차(root-mean-square deviation)의 비율과 동일하다. 선택된 몇 개의 포인트들의 측정에 기반한 근사치 방법(approximate method)보다는 이런 정확한 결과가 선호될 것이다. 최상의 회전(best rotation)을 표현하는 단위 쿼터니언은 대칭 4x4 행렬의 가장 큰 수의 고유치(most positive eigenvalue)와 관련된 고유 벡터(eigenvector)이다. 이런 행렬의 구성 요소들은 포인트들의 대응하는 좌표의 곱의 합의 조합이다.”
강체 변환의 또 다른 예시적인 구현이 A. Balan의 "Restricted Affine Registration of 3D Point Clouds," http://priorartdatabase.com/IPCOM/000207623, June 7, 2011에 기술되어 있다. 이런 구현에서는 중심들과 유인점들 간의 강체 변환을 계산하고, 여기서 하나의 큰 특징은 모델의 x-, y-, 및 z- 축 을 따라 다른 스케일링 파라미터들을 추정하는 기능이다. 이는 센서 관찰에 대해, 회전, 위치 이동 및 다른 치수(폭, 높이, 길이)에서 독립적인 스트레치가 있는 스트레칭의 면에서, 객체의 기하학적인 모델을 나타내는(registering) 문제를 다룬다. 이런 문제는 객체 트래킹 및 크기 추정을 위한 모델 피팅에서 응용법을 갖게 된다. 모델과 센서 관찰 간에 쌍으로 매칭된 3D 표면 포인트들의 컬렉션으로써 형상들이 표현된다. 이는 센서로 측정된 대응하는 포인트들까지의 거리를 최소화하는 모델 포인트들의 제한된 아핀 변환(restricted affine transformation)을 계산하는 반복해(iterative solution)를 설명한다.
단계들(752-756)은 도 7a의 단계(750)에 대응한다. 단계들(752, 754 및 756)은 중심-대-유인점 마그네티즘(magnetism) 프로세스의 일부인 것으로 여겨질 수 있다. 단계(752)는, 유인점과 중심의 쌍을 매칭하기 위해, 유인점을 중심에 가깝게 이동시키는 단계를 포함한다. 도 12a 및 12b를 예로써 참조하면, 유인점과 중심의 매칭 쌍은 모델의 가까운 엄지 손가락 부분(554)의 유인점(562)과 깊이 센서 데이터의 중심(916), 또는 모델의 먼 엄지 손가락 부분(552)의 유인점(558)과 깊이 센서 데이터의 중심(904)을 포함할 수 있다.
단계(752)는, 단계(736)에서 얻은 변환된 대표 유인점들 중 어떤 포인트가 대응하는 중심에서 각각의 임계 거리보다 멀리 있는지를 결정하는 단계와, 대응하는 중심에서 각각의 임계 거리보다 멀리 있는 변환된 대표 유인점들을 대응하는 중심으로부터의 각각의 임계 거리보다 가까워지도록 조정하는 단계를 포함할 수 있다. 하나의 접근 방법으로, 각각의 임계 거리는 각각의 대표 유인점에 특정되도록(specified) 조율된(tuned) 거리일 수 있다. 또는, 각각의 임계 거리가 다른 대표 유인점들에게 공통일 수도 있다.
단계(754)는 유인점들의 움직임에 기반하여 모델의 관절들을 움직이는 단계를 포함한다. 유인점의 움직임이 모델의 하나 이상의 관절의 움직임과 일치하므로, 단계들(752 및 754)은 함께 실행될 수 있다. 관절의 움직임은 하나 이상의 유인점들의 움직임에 의해 영향을 받을 수 있다. 움직임의 3D 공간에서의 방향 및 그 크기(magnitude)를 정의하는 벡터 또는 힘(force)으로 관절의 움직임을 정의할 수 있다. 단계(754)의 입력은 3D 공간에서 모델의 각 관절의 위치를 정의할 수 있는 관절 데이터(746)이다. 결정 단계(756)에서, 다음 유인점들의 쌍, 예를 들어, 다음 신체 부위가 있으면, 단계들(752 및 754)이 반복된다. 결정 단계(756)가 거짓이면, 도 7b의 연속 포인트 “E”에서 프로세스가 계속된다. 모델의 연속 표면을 표현하는 메시 데이터(748)가 관절 데이터(746)에 기반하여 제공된다.
다음으로 논의되는 도 7b에서, 연속 포인트 “A”로 표시되는 바와 같이 확률 지도가 사용되고, 연속 포인트 “B”로 표시되는 바와 같이 BGR 깊이 프레임이 사용되며, 연속 포인트 “C”로 표시되는 바와 같이 관절 데이터(746)가 사용되고, 연속 포인트 “D”로 표시되는 바와 같이 메시 데이터(748)가 사용된다.
도 7b는 도 6의 단계(760)의 추가적인 세부 사항을 도시한다. 반복 절차(iterations)는 도 7a에서 이전에 실행된 중심-대-유인점 매치를 개선한다. 하나의 접근 방법으로, 반복 절차는 깊이 센서 데이터의 중심들을 사용하지 않고, 모델의 래스터화로부터 얻은 깊이 화소들을 사용한다. 모델의 깊이 화소들은 깊이 센서의 깊이 화소들과 비교되어, 모델의 관절과 같이, 모델에 적용될 조정 벡터를 결정한다. 새로운 상태의 모델이 다음 반복 절차에서 래스터화되고, 중단 조건이 충족될 때까지 절차가 반복된다.
단계(762)에서 반복이 시작된다. 단계(764)에서 입력으로서 확률 지도, BGR 깊이 프레임 및 관절 데이터를 수신하고 모델을 래스터화하여 모델의 깊이 화소들을 제공한다. 예를 들어, 모델의 메시 표면은 삼차원(3-D) 방식으로 래스터화될 수 있다. 하나의 접근 방법으로, x-y 평면에서 데이터를 제공하는 2D 버퍼 및 z-축을 따라 깊이 데이터를 제공하는 z-축 버퍼에서 모델의 깊이 화소들이 제공된다. 모델의 깊이 화소들은 3D 공간의 포인트들이다. 래스터화는 x 및 y 축을 따를 필요는 없고 깊이 센서의 깊이 화소들과 같거나 다른 임의의 방향일 수 있음을 알 것이다. 또한, 래스터화는 깊이 센서의 깊이 화소와 동일한 해상도(resolution), 또는 높거나 낮은 해상도를 가질 수 있다. 손의 모델을 래스터화함으로써 얻어지는 화소들의 일례로 도 12c의 화소들(1220)을 참조한다.
단계(766)는 모델의 깊이 화소들과 깊이 센서의 깊이 화소들을 비교 평면에서 비교한다. 하나의 접근 방법으로, 도 13a 및 13b의 예시에서, 평면은 깊이 축과 횡단/직교하는 x-y 평면이다. 다른 접근 방법으로, 평면은 깊이 센서의 국부적인 시선(local line of sight)을 횡단하고 깊이 축의 횡단에서 약간 이동해 있을 수 있다(offset). 화소들은 비교 평면을 횡단하는 방향으로 비교 평면에 투사되거나, 또는 화소들이 비교 평면에 이미 존재한다. 하나의 접근 방법으로, 비교 평면은 z>0에서 깊이 카메라에 가장 가까운 모델의 화소의 깊이 사이의 어딘가에 있을 수 있다. 세 가지 화소 카테고리가 정의될 수 있다. 카테고리들 중 두 개는 깊이 센서의 깊이 화소들에 관한 것이고(단계(768 및 770)), 카테고리들 중 한 개는 모델의 깊이 화소들에 관한 것이다(단계(772)).
특히, 단계(768)는 모델의 깊이 화소들과 중첩(overlap)하는 깊이 센서의 중첩 깊이 화소들을 식별한다. “중첩”이라는 용어는 화소들이 비교 평면에서, 적어도 부분적으로, 동일한 영역을 차지하는 것을 가리킨다. 도 12d의 화소들(1230)이 일례이다. 화소들이 중첩하고 있다고 레이블링하기에 충분한 화소들 간의 최소 중첩도(minimum degree of overlap)가 정의될 수 있다. 이는 대략, 모델이 있는 곳에 존재하는(즉, 이 깊이 센서 데이터가 있는 곳에 모델이 존재하는) 깊이 센서의 깊이 화소들이며, 모델이 이런 깊이 센서 데이터에 잘 맞고 있음(good fit)을 나타낸다.
단계(770)는 모델의 깊이 화소들과 중첩하지 않는 깊이 센서의 비-중첩(non-overlapping) 깊이 화소들을 식별한다. 도 12d의 화소들(1240)이 일례이다. 이는 대략, 모델이 있는 않은 곳에 존재하는(즉, 이 깊이 센서 데이터가 있는 곳에 모델이 존재하지 않는) 깊이 센서의 깊이 화소들이며, 이 깊이 센서 데이터에 더 잘 맞도록 모델이 조정되어야 함을 나타낸다.
단계(772)는 깊이 센서의 깊이 화소들과 중첩하지 않는 모델의 비-중첩 깊이 화소들을 식별한다. 도 12d의 화소들(1220)이 일례이다. 이는 대략, 깊이 센서 데이터가 있는 않은 곳에 존재하는(즉, 깊이 센서 데이터가 있지 않은 곳에 모델이 존재하는) 모델 깊이 화소들이며, 깊이 센서 데이터에 더 잘 맞도록 모델이 조정되어야 함을 나타낸다.
비교에 기반하여, 단계(774)에서는 데이터(776)로서 저장되는 화소-기반 조정 벡터들을 결정한다. 모델을 화소들 쪽으로 당기거나/조정하는 경향이 있는 3D 조정 벡터들이 계산될 수 있다. 조정 벡터들은 세 가지 화소 유형 각각에 기반하여 생성되고, 합계되어(sum) 관절에 대한 전체 조정 벡터를 얻을 수 있다. 화소-기반 조정 벡터들이 어느 단계(768, 770 또는 772)로부터 왔는지에 따라 다른 가중치가 화소-기반 조정 벡터들에 부여될 수 있다. 예를 들어, 깊이 센서의 특성과 애플리케이션의 필요에 따라, 어느 하나의 조정을 더 많이 가중하는 것이 바람직하다. 예를 들어, 측면 해상도(lateral resolution)가 가장 많이 우려되면, 단계(770 및/또는 772)의 조정이 더 많이 가중될 수 있다. 깊이 해상도가 가장 많이 우려되면, 단계(768)의 조정이 더 많이 가중될 수 있다.
세 가지 화소 유형 각각에 대해서, 조정 벡터는 조정할 최적의 관절로 식별된 모델의 관절을 조정할 수 있다. 이런 최적의 관절이 화소에 가장 가까운 관절일 필요는 없다. 화소로부터 관절의 거리에 기반하여 모델의 다른 관절들의 스코어를 계산함으로써 최적의 관절을 식별할 수 있다. 화소에 더 가까운 관절이 더 높은 스코어와 선택될 더 높은 확률을 갖는다. 화소로부터 더 멀리 있는 관절이 더 낮은 스코어와 선택될 더 낮은 확률을 갖는다.
하나의 접근 방법으로, 깊이 센서의 비-중첩 또는 중첩 깊이 화소들의 경우, 스코어는 확률 지도의 화소와 관련된 확률(예를 들어, 이전에 논의된 Pr1, Pr2, Pr3, …)에 기반할 수도 있다. 동일한 신체 부위와 연계되어 화소가 그 부위와 상대적으로 높은 연계 확률을 갖는 관절은, 더 높은 스코어 및 더 높은 선택될 확률을 갖는다. 연계 확률에 비례하여 스코어가 더 높아질 수 있다. 다른 신체 부위와 연계되어 화소가 그 부위와 상대적으로 높은 연계 확률을 갖는 관절은, 더 낮은 스코어 및 더 낮은 선택될 확률을 갖는다.
도 13a의 조정 벡터(1320)는 깊이 센서의 비-중첩 깊이 화소에 대한 예시적인 조정 벡터이다. 벡터는 관절(j1)로부터 깊이 센서의 비-중첩 깊이 화소(p3)의 방향으로 연장된다. 깊이 센서의 중첩 깊이 화소들의 경우, 깊이 센서의 비-중첩 깊이 화소와 동일한 방식으로 조정 벡터가 결정될 수 있다.
조정 벡터는 신체 부위의 움직임의 방향에 의해 결정되는 컴포넌트를 가질 것이다. 예를 들어, 신체 부위가 주로 z 방향으로 깊이 센서에서 멀어지게 움직이면, 조정 벡터는 z 방향에서 가장 큰 컴포넌트를 갖게 될 것이다. 신체 부위가 x-y 평면에서 주로 이동하는 경우, 조정 벡터는 x-y 평면에서 하나 이상의 가장 큰 컴포넌트를 갖게 될 것이다.
하나의 접근 방법으로, 조정 벡터는 최상의 매치 관절로부터 화소까지 연장된다. 도 13a에서 조정 벡터(1328)가 그 일례이다. 벡터는 관절(j1)에서 깊이 센서의 중첩 깊이 화소(p2)의 방향으로 연장된다. 본 예시에서는 같은 관절(j1)이 최상의 매치 관절로 간주되지만, 다른 최상의 매치 관절들이 깊이 센서의 비-중첩 깊이 화소 및 깊이 센서의 중첩 깊이 화소와 연계될 수도 있다. 또 다른 접근 방법으로, 조정 벡터가 모델의 중첩된 깊이 화소로부터 깊이 센서의 중첩 깊이 화소까지 연장된다. 예를 들어, 도 13a의 조정 벡터(1326)는 모델의 중첩 깊이 화소(p1)로부터 깊이 센서의 중첩 깊이 화소(p2)의 방향으로, 특히 기본적으로 깊이 축을 따라 연장된다. 이런 경우에, 벡터(1326)는 관절(j1)에 작용하는 벡터(1330)로 위치 이동될 수 있다.
하나의 접근 방법으로, 최상의 매칭 유인점을 위치 이동시키는 중간 단계가 있고, 여기서 유인점에 의한 영향을 받는 모든 관절들을 위치 이동시킨다. 화소의 벡터/델타(delta)가 조율된/조정된 파워를 가지고 관절들에 적용될 수 있다. 관절에 영향을 주는 많은 화소들에 의해 너무 큰 델타가 될 수 있어서, 하나의 관절에 모든 델타를 완전히 적용하면 관절이 멀리 날아가 버릴 수 있다 - 보통 델타들의 평균이 사용된다.
하나의 접근 방법으로, 벡터들(1326 및 1330)이 동일한 방향이며 동일한 크기를 갖고 있다. 하지만, 통상 화소보다 훨씬 더 적은 수의 관절이 있기 때문에 이는 드문 경우이다. 따라서, 단일 선에 나란히 있는 두 개의 중첩 화소들 및 관절들은 흔하지 않다. 예를 들어, 조정 벡터는 벡터들(1328 및 1330) 간의 보간법(interpolation)에 기반할 수도 있다.
하나의 접근 방법으로, 조정 벡터는 모델을 끌어 당기지(pull) 않는다. 그 대신에, 유인점들을 끌어 당기고, 이는 다시 영향을 받은 관절들을 당기게 된다. 그리고 나서, 관절들 위의 가장 타당한 장소에 모델이 배치된다. 예를 들어, 가까운 부위(proximal part)가 손바닥과 손가락을 연결하는 관절에 있도록, 가까운 손가락 세그먼트가 배치될 수 있고, 가까운 손가락 세그먼트는 중간 손가락 세그먼트의 관절 방향을 향해 있다.
중첩 카메라 깊이 화소와 모델 깊이 화소 사이에 있는 조정 벡터의 경우, 이 벡터를 사용하여 움직일 적절한 관절을 찾고 그 관절로의 위치 이동을 누적한 후에 평균을 낼 수 있다. 이는 오직 z 방향 조정만을 포함할 수 있다. 다른 경우에, 깊이 화소와 관절 사이에 조정 벡터가 있고, 이 또한 누적되어 평균 내어질 수 있다. 이는 x, y 및 z 방향 조정을 포함할 수 있다. 이들 조정은 필요에 따라 결합될 수 있다.
따라서, 깊이 센서의 비-중첩 깊이 화소와 모델의 비-중첩 깊이 화소들의 경우, 선택된 관절이 있어야 할 곳으로 그 관절을 움직이기 위해 화소가 기여할 필요가 있는 힘 또는 조정을 계산할 수 있다.
깊이 센서의 중첩 깊이 화소들의 경우, 깊이 센서의 비-중첩 깊이 화소와 모델의 비-중첩 깊이 화소들의 경우와 유사하게, 화소로부터 관절까지의 거리로부터 계산된 스코어에 기반하여 움직일 최적의 관절을 찾음으로써 조정 벡터를 결정할 수 있다. 모델의 비-중첩 깊이 화소들이 중첩되어 이 화소들이 다음 반복 시에 깊이 센서의 중첩 깊이 화소들이 되는 위치의 관절을 움직이는 경향이 있는 조정을 계산할 수 있다. 그러나, 이와 같은 계산은 모델의 비-중첩 깊이 화소들 전체에 걸쳐 최적화되어서, 상충하는 조정을 관절에 인가할 수 있다. 예를 들어, 모델의 팔은 센서 데이터에서 나타낸 팔 폭보다 더 넓을 수 있다. 이 경우에, 최적 해(optimal solution)는 팔 주변의 모델의 많은 비-중첩 깊이 화소들을 적어도 하나의 신체 부위로 균등화시키는 경향이 있을 수 있다.
하나의 접근 방법으로, 조정 벡터는 모델의 비-중첩 깊이 화소로부터 센서 데이터의 가장 가까운 깊이 화소까지 연장된다. 도 13a에서의 조정 벡터(1322)가 그 일례이며, 화소(p2)가 모델의 비-중첩 깊이 화소(p4)에 가장 가깝다고 가정하고 있다. 벡터는 p4에서 p2로의 방향으로 연장된다. 다른 접근 방법으로, 조정 벡터는 p4와 평면(1312) 사이의 거리에 기반한 크기를 가지고, 예를 들어, 센서 데이터의 가장 가까운 깊이 화소들의 평면(1312) 쪽으로, 깊이 축을 따라 p4로부터 연장된다. 도 13a의 조정 벡터(1324)가 일례이다. 벡터(1322 또는 1324)는 관절(j1)에 작용하는 벡터(도시되지 않음)로 위치 이동될 수 있고, 여기서 j1은 이동할 최상의 관절이라고 가정하고 있다.
도 7b에서, 단계(778)에서는 논의한 대로 관절들에 조정 벡터들을 적용한다. 이 단계의 입력은 관절 데이터(746)이다. 도 12e 및 12f는 일례를 제공한다. 그 다음으로, 이전에 논의한 바와 같이, 단계(780)의 충돌 제약, 단계(782)의 거리 제약 및 단계(784)의 각도 제약을 비롯한 하나 이상의 제약이 적용될 수 있다. 단계(786)에서는 제약-기반 조정 벡터들을 결정하여, 대응하는 제약-기반 조정 벡터 데이터(788)를 제공한다. 제약-기반 조정 벡터들을 그 종류에 따라 다른 가중치가 부여될 수 있다. 예를 들어, 충돌 제약이 더 큰 가중치를 받고, 거리 제약이 다음으로 큰 가중치를 받고, 각도 제약이 그 다음으로 큰 가중치를 받을 수 있다.
단계(790)에서는 모델의 관절들에 제약-기반 조정 벡터들을 적용한다. 이 단계의 입력은 관절 데이터(746)이다. 결정 단계(791)에서는 예를 들어, 일정 수의 통과(pass)가 실행되었거나 또는 관절 움직임이 특정 임계치 이하가 될 때 등 중단 조건이 충족되었는지를 결정한다. 결정 단계(791)가 거짓이 되면, 단계들(780-790)이 반복된다. 결정 단계(791)가 참이면, 단계(792)로 들어간다. 따라서, 단계(780-790)에서 적용된 제약들은, 모든 제약들을 동시에 제일 잘 충족시키도록 여러 번의 반복을 거칠 수 있다.
단계(792)에서 단계들(780-790)의 조정에 기반하여 모델 메시를 업데이트한다. 결정 단계(794)에서는 중단 조건이 충족되었는지를 결정한다. 예를 들어, 중단 조건은 a 실행된 반복 횟수, 최대 허용 가능 반복 횟수가 실행될 때 반복이 중단됨 b 조정 벡터의 크기에 기반하는 수렴 조건, 조정 벡터의 크기가 임계치 이하로 충분히 작을 때 반복이 중단됨 c 실행된 계산량에 기반하는 조건, 최대 허용 가능 CPU 순환 횟수가 사용될 때 반복이 중단됨 중 하나 이상에 기반할 수 있다. 단계(794)에서 중단 조건이 충족되지 않으면, 단계(796)에서 다음 반복이 실행되어 단계(762)로 진행된다. 모델이 이전 반복에서의 조정된 상태에 있으므로, 단계(764)의 래스터화가 모델에 대해 실행된다. 도 12(g)는 모델의 조정된 상태의 일례를 제공한다. 결정 단계(794)가 참이면, 반복은 단계(798)에서 종료된다. 이 때, 이전에서 논의한 바와 같이, 모델은 최적으로 조정되어 포즈 또는 제스처 추정 라이브러리와 같은 상위 단계 프로세스/애플리케이션에서 사용될 수 있다. 하나의 접근 방법으로, 모델은 깊이 데이터의 각각의 프레임에 대해 최적으로 조정되어 애플리케이션의 제어 입력으로서 제공된다.
하나 이상의 깊이 프레임이 한 번에 처리될 수 있음을 알 것이다. 일괄 처리 모드(batch processing mode)는 복수 개의 프레임의 정보가 함께 사용될 수 있도록 복수의 깊이 프레임을 한 번에 처리한다. 조정 벡터들이 각각의 프레임에 대해 초기에 결정되어, 일괄 프레임들(batch of frames)에 대해 평균 내어지거나 또는 결합되어, 평균 조정 벡터가 일괄 프레임들에 적용될 수 있다.
하나의 접근 방법으로, 도 7b에서 모델의 신체 부위들의 변환(회전 및 위치 이동)을 변경하지만, 상대적인 비율은 변경하지 않는다. 다른 접근 방법으로는, 상대적인 비율이 변경된다.
도 8a는 사용자의 손의 깊이 화소들을 포함하는 깊이 화소 프레임(800)을 도시한다. 프레임은 도 7a의 깊이 프레임 데이터(702)로서 사용될 수 있다. 프레임은 한 명의 사용자의 한 손 또는 양손이나, 복수의 사람들의 한 손 또는 양손을 포함할 수 있다. 한 명 이상의 사용자의 다른 신체 부위도 포함될 수 있다. 본질적으로, 프레임은 깊이 카메라의 시야 내의 객체들을 포함한다.
도 8b는 배경 화소들이 제거된 도 8a의 사용자의 손의 깊이 화소들(810)을 도시한다. 논의한 바와 같이, 도 7a의 배경 제거 단계(704)에서 (도 8a의 프레임(800)과 같은) 깊이 프레임 데이터(702)를 수신하고 배경 화소들을 제거한다.
도 9a는 도 8b의 사용자의 손의 깊이 화소들의 먼 손가락 세그먼트와 먼 엄지 손가락 세그먼트에 대한 도 7a의 예시적인 단계(712)로부터의 확률 값을 도시한다. 이는 확률 값의 2D의 간략한 그래픽 묘사이다. 언급한 대로, 각각의 화소는, 화소가 그 신체 부위일 가능성을 나타내는 모델의 각각의 신체 부위에 관련된 다른 확률 값(Pr1, Pr2, Pr3, …)을 갖는다. 이 도면은 다섯 개의 신체 부위들에 대한 결과를 함께 도시한다. 굵은 실선으로 윤곽이 그려진, 음영이 없는(unshaded) 화소들의 각 영역은 국부 신체 부위의 일부가 될 가장 높은 확률을 갖고 있는 화소들을 나타낸다. 점 무늬의 화소들은 국부 신체 부위의 일부가 될 더 낮은 가능성을 갖고 있고, 대각선 무늬를 갖는 화소들은 국부 신체 부위의 일부가 될 가장 낮은 확률을 갖는다. 또한, 각각의 삼각형은 신체 부위에 대한 깊이 화소들의 중심을 표현한다. 신체 부위는 첫 번째 또는 새끼 손가락(930), 두 번째 손가락(932), 세 번째 손가락(934), 네 번째 또는 검지 손가락(936) 및 엄지 손가락(938)을 포함한다.
예를 들어, 세 번째 손가락(934)에서, 영역(910)의 화소들이 먼 손가락 세그먼트에 할당되고, 관련 중심(912)이 결정된다. 네 번째 손가락(936)에서, 영역(906)의 화소들이 먼 손가락 세그먼트에 할당되고, 관련 중심(908)이 결정된다. 엄지 손가락(938)에서, 영역(902)의 화소들이 먼 손가락 세그먼트에 할당되고, 관련 중심(904)이 결정된다.
도 9a-9e에서 음영이 없는 화소들, 점 무늬의 화소들, 대각선 무늬의 화소들의 사용이 일관된다.
도 9b는 도 8b의 사용자의 손의 깊이 화소들의 중간 손가락 세그먼트 및 가까운 엄지 손가락 세그먼트에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다. 예를 들어, 엄지 손가락의 경우, 영역(914)의 화소들이 가까운 엄지 손가락 세그먼트에 할당되고, 가까운 엄지 손가락 세그먼트의 중심(916)이 결정된다.
도 9c는 도 8b의 사용자의 손의 깊이 화소들의 가까운 손가락 세그먼트들에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 9d는 도 8b의 사용자의 손의 깊이 화소들의 손바닥(940)에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 9e는 도 8b의 사용자의 손의 깊이 화소들의 팔(942)에 대해 도 7a의 단계(721)로부터 생성된 중심들을 도시한다.
도 10은 사용자의 손의 테스트 데이터로부터 도 7a의 단계(721)에서 생성된 중심들을 도시한다. 테스트 데이터는 일반적으로 노이즈를 보여준다. 각각의 이미지에서, 더 어두운 영역이 더 높은 확률에 해당한다. 또한, 정사각형이 중심을 나타낸다. 예를 들어, 이미지(1000)는 먼 손가락 및 엄지 손가락 세그먼트에 관한 것이다. 어두운 영역이 중심들의 정사각형 아이콘에 의해 부분적으로 가려져 있다. 이미지(1002)는 중간 손가락 세그먼트에 관한 것이고, 이미지(1004)는 가까운 손가락 세그먼트에 관한 것이며, 이미지(1006)는 가까운 엄지 손가락 세그먼트에 관한 것이고, 이미지(1008)는 손바닥에 관한 것이며, 이미지(1010)는 팔뚝의 하부에 관한 것이고, 이미지(1012)는 팔뚝의 상부에 관한 것이다.
도 11은 중심-대-유인점 매칭에 관한 도 7a의 단계(734)의 세부 사항을 도시한다. 언급한 대로, 각각의 삼각형은 굵은 실선으로 윤곽이 그려진 각 신체 부위의 중심을 나타낸다. 모델(500)뿐만 아니라 깊이 센서로부터의 화소 데이터(900)도 도시된다. 예를 들어, 먼 손가락 세그먼트(910)를 나타내는 화소들의 경우, 중심(912)은 모델(500)의 대응하는 먼 손가락 세그먼트(532)의 유인점(531)에 매칭된다. 마찬가지로, 먼 손가락 세그먼트(906)를 나타내는 화소들의 경우, 중심(908)은 모델(500)의 대응하는 먼 손가락 세그먼트(542)의 유인점(541)에 매칭된다. 먼 엄지 손가락 세그먼트(902)를 나타내는 화소들의 경우, 중심(904)은 모델(500)의 대응하는 먼 엄지 손가락 세그먼트(552)의 유인점(558)에 매칭된다. 가까운 엄지 손가락 세그먼트(914)를 나타내는 화소들의 경우, 중심(916)은 모델(500)의 대응하는 가까운 엄지 손가락 세그먼트(554)의 유인점(562)에 매칭된다. 팔(918)을 나타내는 화소들의 경우, 중심(920)은 모델(500)의 대응하는 팔(504)의 유인점(505)에 매칭된다.
각각의 중심이 각각의 유인점에 매칭될 수 있다. 경우에 따라서, 모든 중심들이 식별 및/또는 각각의 유인점으로 매칭될 수 있는 것은 아니며, 이 경우에 모델은 이용 가능한 정보에 기반하여 조정된다. 이용 가능한 정보가 불충분하면 모델을 조정하지 않기로 프레임마다(per-frame basis) 결정이 내려질 수 있다.
도 12a는 유인점의 중심으로의 강체 변환에 관한 도 7a의 단계(736)의 세부 사항을 도시한다. 모든 유인점에 걸쳐, 모델의 유인점들과 깊이 화소 데이터의 중심들의 최상의 매치를 제공하도록 모델(1200)이 변환된다. 본 예시에서, 모델의 화소 데이터에 대한 매치가 엄지를 제외하고는 상당히 좋다. 특히, 엄지의 가까운 세그먼트의 유인점(562)이 관련 중심(916)에서 약간 떨어져 있고, 엄지 손가락의 먼 세그먼트의 유인점(558)이 관련 중심(904)에서 훨씬 더 떨어져 있다.
도 12b는 유인점을 중심에 더 가깝게 이동시키기 위한 도 7a의 단계(752)의 세부 사항을 도시한다. 여기서, 유인점(562)이 관련 중심(916)에 더 가까이 이동하고 유인점(558)이 관련 중심(904)에 더 가까이 이동하도록 모델(1210)이 개선된다.
도 12c는 모델을 래스터화하여 모델의 깊이 화소들(1220)을 제공하기 위한 도 7b의 단계(764)의 세부 사항을 도시한다. 이 화소들은, 예컨대 비교 평면에서, 깊이 센서의 화소들(900) 위에서 보인다. 깊이 센서의 화소들(900)이 대각선 무늬를 갖고 있을 때 모델의 화소들은 음영이 없다. 가까운 엄지 손가락 세그먼트(554)에 대한 모델의 화소들의, 위보다는, 아래에 더 많은 깊이 센서의 화소들이 있기 때문에 가까운 엄지 손가락 세그먼트의 위치는 최적이 아니다. 또한, 먼 엄지 손가락 세그먼트(552)에 대한 모델의 화소들의, 아래보다는, 위에 더 많은 깊이 센서의 화소들이 있기 때문에 먼 엄지 손가락 세그먼트의 위치는 최적이 아니다. 마찬가지로, 팔과 손바닥 주변에 왼쪽보다는 오른쪽에 더 많은 깊이 센서의 화소들이 있으므로 팔(504)과 손바닥(502)의 위치는 최적이 아니다. 래스터화를 사용한 개선에서는 모델 및 깊이 센서의 화소 데이터를 비교함으로써 이들 비-최적 조건을 식별할 수 있다.
도 12d는 엄지 손가락 부분에서, 모델의 깊이 화소들과 센서의 깊이 화소들을 비교하기 위한 도 7b의 단계들(766-772)의 세부 사항을 도시한다. 세부 사항을 보여주기 위해 도 12c의 엄지 손가락 부분을 따로 떼어내었다. 그러나, 모델의 모든 신체 부위에 대해 비교가 실행될 수도 있다. 음영이 없는 화소들의 영역(1230)은 단계(768)의 깊이 센서의 중첩 깊이 화소들을 나타낸다. 대각선 무늬를 갖고 있는 화소들의 영역(1240)은 단계(770)의 깊이 센서의 비-중첩 깊이 화소들을 나타낸다. 점 무늬를 갖고 있는 화소들의 영역(1220)은 단계(772)의 모델의 비-중첩 깊이 화소들을 나타낸다.
도 12e는 도 12d와 일관되게, 화소-기반 조정(adjustment) 벡터들에 기반하여 모델의 관절의 조정을 보여주는 도 7b의 단계(778)의 세부 사항을 도시한다. 관절 위치(564, 560 및 556)는 각각 위치(1262, 1258 및 1254)로 각각 조정된다. 결과적으로, 유인점들도 마찬가지로 위치(562 및 558)에서 위치(1260 및 1256)로 각각 조정된다.
도 12f는 도 12e에서 사용된 화소-기반 조정 벡터들을 도시한다. 조정 벡터들(1278, 1274 및 1270)은 관절 위치(564, 560 및 556)를 위치(1262, 1258 및 1254)로 각각 조정하는 데 사용된다. 조정 벡터들은 3D일 수 있지만 본 예시에서는 간단하게 하기 위해 2D로 도시된다.
도 12(g)는 도 12e와 일관되게, 모델의 업데이트를 보여주는 도 7b의 단계(792)의 세부 사항을 도시한다. 도 12e에서 모델의 먼 엄지 손가락 세그먼트(552)는 세그먼트(1250)이 되도록 조정되고, 모델의 가까운 엄지 손가락 세그먼트(554)는 세그먼트(1252)가 되도록 조정된다. 이런 경우에, 엄지 손가락은 회전되는 것은 물론 손바닥에 대해 일반적으로 아래쪽으로 이동한다. 이는 깊이 센서의 깊이 화소들에 더욱 가깝게 매칭하는 모델의 새로운 상태이다.
도 13a는 모델의 깊이 화소들과 센서의 깊이 화소들을 비교하기 위한 도 7b의 단계(768, 770 및 772)의 추가적인 세부 사항을 도시하며, 여기서 비교 평면(1310)은 깊이 센서(1300)의 깊이 축(1302)을 횡단하거나 직교한다. 축들(1304, 1306 및 1308)은 또한 (“∥” 표기로 표시된 바와 같이) 깊이 축(1302)에 평행하다. 비교 평면(1310)은 래스터화된 모델의 두 개의 예시적인 화소들, p1 및 p4를 포함하고, 비교 평면(1312)은 깊이 센서로부터의 두 개의 예시적인 화소들, p2 및 p3을 포함한다. 하나의 접근 방법으로, 비교 평면들(1310 및 1312)은 x 및 y 축들과 평행하게 연장되고, 따라서 깊이 축(1302)에 횡단/직교하게 된다. 다른 접근 방법으로, 비교 평면들(1310 및 1312)은 x 및 y 축들로부터 약간 이동되고(offset), 깊이 축(1302)에 대해 α 각도로 연장되는 깊이 카메라로부터의 시야(1305)를 횡단한다.
P2는 예컨대, 축(1306)을 따라서 p1과 중첩하고 있으므로, 깊이 센서의 중첩 깊이 화소이다(도 7b, 단계(768)). P1은 모델의 대응하는 중첩 깊이 화소로 간주될 수도 있다. 모델의 예시적인 관절이 j1이다. 하나의 접근 방법으로, 조정 벡터(1328)는 최상의 매치 관절 j1에서 p2의 방향으로 연장된다. 다른 접근 방법으로, 조정 벡터(1326)는 p1에서 p2 방향으로 연장된다. 또한, 벡터(1326)는 관절(j1)에 작용하는 벡터(1330)로 위치 이동할 수 있다.
P3은 예컨대, 축(1308)을 따라서 모델의 화소와 중첩하고 있지 않기 때문에 깊이 센서의 비-중첩 깊이 화소이다(도 7b, 단계(770)). 도 7b의 단계(778)와 관련하여 이전에 논의된 바와 같이, p3에 대한 예시적인 조정 벡터(1320)는 관절(j1)에서 p3의 방향으로 연장된다.
P4는 예컨대, 축(1304)을 따라서 깊이 센서 데이터의 화소와 중첩하고 있지 않기 때문에 모델의 비-중첩 깊이 화소이다(도 7b, 단계(772)). 대응하는 조정 벡터(1322)는 p4로부터, 본 예시에서 p2라고 가정한 센서 데이터의 가장 가까운 깊이 화소로 연장된다. 다른 접근 방법으로, p4에 대한 조정 벡터(1324)는 p4로부터 깊이 축(1302/1304)을 따라, 예컨대, 센서 데이터의 가장 가까운 깊이 화소들의 평면(1312) 쪽으로 연장된다. 벡터(1322 또는 1324)는 관절(j1)에 작용하는 벡터(도시되지 않음)로 위치 이동할 수 있고, 여기서 j1은 p4에 대해 이동할 수 있는 최상의 관절이라고 가정한다.
도 13b는 도 13a의 비교 평면(1310)의 추가적인 세부 사항을 도시한다. P1 및 p2는 중첩 화소들이고, 깊이 센서의 p3는 모델의 화소와 중첩하고 있지 않으며, 모델의 p4는 깊이 센서의 화소와 중첩하고 있지 않다. ∥x 및 ∥y는 각각 x-축 및 y-축과 평행한 축들이다.
도 14는 거리 제약, 충돌 제약, 및 화소 비교를 이용하여, 이미징 시스템에서 관절로 연결된 신체 부위들의 포즈를 개선된 충실도로 탐지하는 방법을 도시한다. 도 14의 방법이 도 7a 및 7b의 방법과 함께 실행될 수 있다. 상기 방법은 일반적으로 초기 포즈 추정치를 얻은 후에, 거리 제약, 충돌 제약, 각도 제약 및 래스터화된 모델을 사용하는 화소 비교 중 하나 이상에 기반하여 포즈 추정을 개선하는 단계를 포함한다. 하나의 접근 방법으로, 초기 포즈 추정치는 도 7a의 방법에 의해 제공될 수 있다. 하나의 접근 방법으로, 래스터화된 모델을 사용한 화소 비교는 도 7b의 방법의 단계들(762-790)에서 제공될 수 있다. 포즈 추정치에 대한 개선은 순차적으로 또는 동시에, 전체적으로 또는 부분적으로 실행될 수 있다.
구별 가능한 다수의 특징점(feature point)을 갖고 있는 공지된 토폴로지를 갖는 관절로 연결된 모델의 파라미터 기하 모델(parametric geometric model)(예컨대, 메시)을 갖고 있는 것으로 가정할 수 있다. 특징 탐지기(feature detector)는 (관절 및 기타 참조와 같은) 모델의 포인트들에 대응하는 깊이 센서 데이터로부터 구별되는 특징점들을 가능한 많이 찾는다. 관절로 연결된 공지된 모델의 메시가 교정되고 동적으로 조정된다. 이런 방법은 관절로 연결된 모델의 치수들에 대한 지역적인 정보 및 전체적인 정보의 다수의 소스를 결합하고 가중치를 부여한다.
단계(1400)는 예를 들어, 도 6의 단계(600)와 유사하게, 깊이 센서로부터 사용자의 깊이 화소들을 얻는 단계를 포함한다. 단계(1402)는 예를 들어, 도 6의 단계들(700 및 720)과 유사하게, 깊이 센서의 깊이 화소들에 대한 모델의 초기 매치를 결정하는 단계를 포함한다. 도 6의 단계(750)도 포함될 수 있다. 이는, 이전에 논의한 바와 같이, 대표 유인점 대 중심 매칭의 몇 가지 유형이나 또는 기타 임의의 기법을 포함할 수 있다. 또한, 도 7a의 단계(736)와 관련하여 논의한 것과 같은 변환이 사용될 수 있다. 이는 3D 포인트 클라우드의 제한된 아핀 정합(restricted affine registration), 예컨대, 3D 스케일을 갖는 3D 포인트 클라우드의 강체 변환을 포함할 수 있다. 모델 및 깊이 센서 관찰 사이의 특징점 관련성이 주어지면, 각각의 치수(길이, 폭 및 높이)에 대한 단일 또는 개별 스케일링을 하는 최상의 강체 변환을 계산함으로써, 관절로 연결된 객체의 각각의 신체 부위에 대한 개별적인 스케일링 파라미터나, 또는 모든 신체 부위에 대한 전체적인 스케일링 파라미터를 한꺼번에(이전 프레임에서 추정된 신체 비율을 고려 가능) 계산할 수 있다.
단계(1404)에서는 거리 제약을 사용하여 모델의 초기 매치를 개선한다. 단계(1406)는 관절로 연결된 각각의 신체 부위에 대해 거리 제약이 위반되는 정도(extent)를 결정하는 단계를 포함한다. 단계들(1404 및 1406)에 관련된 예시가 도 16(a1)-16c 및 도 17a에서 제공된다.
단계(1408)는 충돌 제약을 사용하여 모델의 초기 매치를 개선한다. 단계(1410)는 충돌 제약의 강제 여부를 결정하는 단계를 포함한다. 예를 들어, 이런 결정은 모델이 충돌 제약을 강제하도록 조장하는 특정 포즈를 하고 있다고 결정될 때 내려질 수 있다. 모델의 적어도 두 개의 인접 손가락 세그먼트들이, 예를 들어, 실질적으로 서로 평행한, 특정한 상대적 위치에 있는 것으로 결정될 때가 그 일례이다. 예를 들어, 몇 도 정도인 임계각보다 작은 각으로 연장하는 두 인접 손가락 세그먼트들의 길이 축에 의해 이런 조건이 탐지될 수 있다. 단계(1412)는 관절로 연결된 각각의 신체 부위에 대해 충돌 제약이 위반되는 정도를 결정하는 단계를 포함한다. 단계들(1408-1412)에 관련된 예시들이 도 18a 및 18b에서 제공된다.
단계(1414)는 래스터화된 모델을 사용하여 매칭을 개선한다. 단계(1416)는 예를 들어, 도 7b의 단계(764)와 유사하게, 모델을 래스터화하여 모델의 깊이 화소들을 제공한다. 단계(1418)는 예를 들어, 도 7b의 단계(766)와 유사하게, 비교 평면에서 모델의 깊이 화소들을 깊이 센서의 깊이 화소들과 비교한다. 단계(1420)는 예를 들어, 도 7b의 단계(770)와 유사하게, 모델의 깊이 화소들과 중첩하고 있지 않는 깊이 센서의 비-중첩 깊이 화소들을 식별한다. 단계(1422)는 도 7b의 단계(772)와 유사하게, 깊이 센서의 깊이 화소들과 중첩하고 있지 않는 모델의 비-중첩 깊이 화소들을 식별한다. 단계들(1414 및 1422)에 관련된 예시들이 도 16d 및 16e에서 제공된다.
단계(1424)는 모델을 조정하여, 다른 제약들을 충족시키려고 시도한다. 결정 단계(1426)에서, 중단 조건이 충족되면, 프로세스는 단계(1428)에서 종료한다. 결정 단계(1426)가 거짓이면, 프로세스가 다시 반복된다. 상기 방법의 임의의 단계들은 중단 조건이 충족될 때까지 한 번 이상의 반복으로 되풀이하여 실행될 수 있다. 일반적으로, 모든 제약들이 적절히 충족되게 하기 위해 여러 번의 반복이 사용된다. 또한, 모델의 조정은 각각의 제약에 대해 이용 가능한 모든 정보에 기반할 수 있다. 단계(1426)에서의 조정은 각각의 제약의 기여도(contribution)를 결합하고 가중치를 부여할 수 있다. 또는, 모델은 예를 들어, 각각의 단계(1406, 1412, 1420 및 1422) 이후에, 각각의 제약에 기반하여 개별적으로 조정될 수 있다.
거리 제약을 충족시키기 위한 모델의 조정 단계는, 예를 들어, 손가락 또는 엄지 손가락 세그먼트 또는 손바닥이나 손목의 길이나 폭을 늘리거나 줄임으로써, 관절로 연결된 신체 부위의 적어도 하나의 치수를 조정하는 단계를 포함할 수 있다. 충돌 제약을 충족시키기 위한 모델의 조정 단계는, 예를 들어, 손가락 또는 엄지 손가락 세그먼트 또는 손바닥이나 손목의 길이나 폭을 줄임으로써, 충돌에 관련된 적어도 하나의, 관절로 연결된 신체 부위의 치수를 조정하는 단계를 포함할 수 있다. 경우에 따라서, 처리 시간이나 기타 제한 사항, 또는 다른 제약들로 인해 모든 제약들이 충분히 충족되지 않을 수 있고, 이런 경우에는 충돌 조건을 충족시키기 위해 최선을 노력을 다한다.
깊이 센서의 비-중첩 깊이 화소들에 기반한 모델의 조정 단계는 깊이 센서의 비-중첩 깊이 화소들의 방향으로 모델 부분의 치수(예컨대, 높이, 폭)를 늘리는 단계를 포함할 수 있다. 특정 방향으로의 치수 증가 정도는 예를 들어, 특정 방향의 중첩 화소들의 개수에 기반하는, 중첩 정도에 비례할 수 있다. 모델의 비-중첩 깊이 화소들에 기반한 모델의 조정 단계는 깊이 센서의 비-중첩 깊이 화소들에서 멀어지는 방향으로 모델 부분의 치수를 줄이는 단계를 포함할 수 있다. 최적 해는 모델의 비-중첩 깊이 화소들에 인접한 신체 부위 주변에서 모델의 비-중첩 깊이 화소들의 개수를 균등화시키는 경향이 있을 수 있다. 특정 방향으로의 치수 감소 정도는 예를 들어, 특정 방향의 중첩 화소들의 개수에 기반하는, 중첩 정도에 비례할 수 있다
도 15는 도 14의 방법에 사용할 사용자의 손의 깊이 화소들(1500)의 일례를 도시한다. 본 예시는 도 16(a1)-16e 및 도 17a에서 사용될 것이다.
도 16(a1)은 도 5의 모델의 도 15의 깊이 화소들에 대한 매칭을 도시하고, 여기서 거리 제약이 강제되지는 않고, 모델은 바라던 것보다는 작다. 이런 매칭은 깊이 센서 데이터의 각각의 부분에 최적으로 매칭되도록, 모델의 각각의 부분이 인접 부분에 연관되어 있지 않으면서 독립적으로 움직이도록 하는 것을 포함할 수 있다. 이전에 논의한 바와 같이, 깊이 센서 데이터의 다른 부분들은 예를 들어, 확률 지도를 사용하여 각각의 신체 부위와 연계될 수 있다(도 7a). 그 다음으로 모델의 각각의 신체 부위는 거리 제약에 상관 없이 깊이 센서 데이터의 동일한 부분에 대해 최적으로 배치된다. 하나의 가능한 접근 방법으로, 모델의 어느 한 부분의 대표 유인점이 깊이 센서 데이터의 동일한 부분의 중심에 매칭된다. 한편, 임의의 매칭 기법이 사용될 수도 있다.
거리 제약은 모델의 부분들과, 모델의 부분들의 상대적인 위치들(positioning) 사이의 거리에 관한 것이다. 예를 들어, 거리 제약은 어느 손가락 세그먼트의 한쪽 끝이 인접 손가락 세그먼트의 가장 가까운 끝(proximate end)으로부터 연장하도록 손가락 세그먼트들이 말단에서 말단으로(end to end) 정렬되는 것을 요구할 수 있다. 또한, 거리 제약은 가까운 손가락 세그먼트가 손바닥의 지정된 관절로부터 연장하도록 요구할 수 있다. 다른 거리 제약은 손바닥이 손목에서 연장하도록 요구할 수 있다. 거리 제약이 위반되었는지와 그 위반 정도를 결정하는 것은 신체 부위의 관절들의 위치에 기반할 수 있다. 예시적인 관절들이 본 도면 및 다른 도면에서 다이아몬드 형태로 표현된다. 하나의 접근 방법으로, 거리 제약은 모델의 일부분의 관절이 모델의 인접 부분의 관절과 실질적으로 일치하도록(예컨대, 임계 거리 내에서) 요구한다. 예를 들어, 모델 부분(516)의 아랫부분에 있는 관절은 손바닥의 연계된 제일 왼쪽 관절과 일치하여야 하고, 모델 부분(516)의 윗부분에 있는 관절은 신체 부위(514)의 아랫부분에 있는 관절과 일치하여야 하며, 모델 부분(514)의 윗부분에 있는 관절은 신체 부위(512)의 아랫부분에 있는 관절과 일치하여야 한다. 관절들 사이의 간격이 거리 제약의 위반을 나타낸다. 더 큰 간격이나 거리가 더 큰 위반 정도를 나타낸다.
또한 본 예시에서, 모델은 깊이 화소들(1500)의 손의 표현에 비해 일반적으로 더 작다.
거리 제약은 관절들과 같이, 모델에서 특징점들 사이의 선들로 표현될 수 있다. 각각의 선은 눌림(compression) 또는 당김(tension) 상태에 있다고 간주될 수 있다. 모델이 센서가 탐지한 것보다 더 작을 때, 서로 멀어지도록 관절들을 당기는 경향이 있는 당김이 있다. 모델이 센서가 탐지한 것보다 더 클 때, 관절들을 서로 가까워지도록 미는 경향이 있는 눌림이 있다. 관절로 연결된 모델의 각각의 부분에 관련된 개별 당김 및/또는 눌림 정보를 사용하여 모델을 조정한다.
도 16(a2)는 도 16(a1)의 대안이며, 여기서 부모 및 자식 관절이 도시된다. 다른 접근 방법으로, 예를 들어, 먼 엄지 손가락 부분과 가까운 엄지 손가락 부분 사이에 하나의 관절(560)이 있고, 이 관절(560)과 관절(564)과 같은 부모 관절 사이의 거리가 거리 제약이 된다. 관절(564)의 부모 관절이 관절(503)이 될 수 있다. 예를 들어, 관절(560)은 먼 엄지 손가락 세그먼트(552)의 근단부(proximal end)에 있고, 관절(564)은 가까운 엄지 손가락 세그먼트(554)의 근단부에 있을 수 있다. 이런 모델의 접근 방법에서, 메시(mesh)가, 자식 관절에 닿을 정도로 길지는 않지만, 자식 관절을 가리키는 부모 관절에 배치된다. 부모 또는 자식 관절은 각각 부모 또는 자식 신체 부위에 연계될 수 있다. 자식 신체 부위는, 하나의 가능한 접근 방법으로, 손바닥에서 연장된 손가락과 같이, 큰 신체 부위에서 연장된 작은 신체 부위일 수 있다. 또는, 팔에서 손가락 끝으로의 방향처럼, 자식 신체 부위는 다른 신체 부위로부터 특정 방향으로 연장된 신체 부위일 수 있다. 예를 들어, 가까운 엄지 손가락 부분(554)은 먼 엄지 손가락 부분(552)의 부모일 수 있다. 마찬가지로, 가까운 손가락 세그먼트(546)의 근단부에 있는 관절(553)은 가까운 손가락 세그먼트와 손바닥(502) 사이에 있는 골격 관절을 나타내고, 손바닥(502)의 관절(503)로부터 거리 d인 곳에 있다. 중간 손가락 세그먼트(544)의 근단부에 있는 관절(551)은 중간 손가락 세그먼트(544)와 가까운 손가락 세그먼트(546) 사이에 있는 골격 관절을 나타낸다. 먼 손가락 세그먼트(542)의 근단부에 있는 관절(549)은 먼 손가락 세그먼트(542)와 중간 손가락 세그먼트(544) 사이에 있는 골격 관절을 나타낸다.
도 16(b1)은 검지 손가락에 대한 도 16(a1)의 이미지의 세부 사항을 도시한다. 검지 손가락(540)에서는, 깊이 센서의 화소들이 굵은 실선으로 표시된 바와 같이 먼 손가락 세그먼트 화소 영역(1620), 중간 손가락 세그먼트 화소 영역(1630) 및 가까운 손가락 세그먼트 화소 영역(1640)으로 그룹 지어진다. 손가락의 먼, 중간 및 가까운 모델 부분들이 각각 542, 544 및 546이다. 모델 부분(542)은 상부 관절(top joint)(다이아몬드(547)), 하부 관절(549), (화소 영역(1620)의 중심인 삼각형(1622)에 맞춰 조정된) 대표 유인점(541), 폭 wdm(폭, 먼 부분(distal), 모델), 높이 hdm(높이, 먼 부분, 모델), 밑에 놓인(underlying) 화소 영역의 왼쪽 가장자리로부터의 간격 dl(먼 부분, 왼쪽), 및 밑에 놓인 화소 영역의 오른쪽 가장자리로부터의 간격 dr(먼 부분, 오른쪽)을 포함한다. 먼 손가락 세그먼트에 할당된 밑에 놓인 화소 영역은 폭 wd와 높이 HDP(높이, 먼 부분, 화소)를 갖고 있다.
모델 부분(544)은 상부 관절(1632), 하부 관절(551), (화소 영역(1630)의 중심인 삼각형(1634)에 맞춰 조정된) 대표 유인점(543), 폭 wmm(폭, 중간 부분(middle), 모델), 높이 hmm(높이, 중간 부분, 모델), 밑에 놓인(underlying) 화소 영역의 왼쪽 가장자리로부터의 간격 ml(중간 부분, 왼쪽), 및 밑에 놓인 화소 영역의 오른쪽 가장자리로부터의 간격 mr(중간 부분, 오른쪽)을 포함한다. 중간 손가락 세그먼트에 할당된 밑에 놓인 화소 영역은 폭 wd와 높이 HMP(높이, 중간 부분, 화소)를 갖고 있다.
모델 부분(546)은 상부 관절(1642), 하부 관절(553), (화소 영역(1640)의 중심인 삼각형(1644)에 맞춰 조정된) 대표 유인점(545), 폭 wpm(폭, 가까운 부분(proximal), 모델), 높이 hpm(높이, 가까운 부분, 모델), 밑에 놓인(underlying) 화소 영역의 왼쪽 가장자리로부터의 간격 pl(가까운 부분, 왼쪽), 및 밑에 놓인 화소 영역의 오른쪽 가장자리로부터의 간격 pr(가까운 부분, 오른쪽)을 포함한다. 가까운 손가락 세그먼트에 할당된 밑에 놓인 화소 영역은 폭 wd와 높이 HPP를 갖고 있다.
손바닥(502)은 모델 부분(546)의 근단부가 연장되기 시작하는 관절(1650)을 갖고 있다.
치수들은 모델의 전체 좌표계(global coordinate system)에서 정의될 수 있고, 또는 각각의 신체 부위가 자체 좌표계를 갖고 있을 수 있다. 높이, 폭 등의 용어는 임의의 방향으로의 치수를 나타낼 수 있다.
관절들(549 및 544) 간의 거리 md(중간에서 먼 부분까지)는 거리 제약이 0인 거리 또는 0의 허용 오차 내의 거리를 갖게 될 때 위반되게 되는 거리 제약을 나타낸다. 신체 부분들(542 및 544)이 제약을 위반한다고 할 수 있다. 관절들(551 및 1642) 간의 거리 pm(가까운 부분에서 중간까지)은 이번에는 신체 부분들(544 및 546)에 의해 위반되는 또 다른 거리 제약을 나타낸다. 관절들(553 및 1650) 간의 거리 pp(가까운 부분에서 가까운 부분까지)는 이번에는 신체 부분들(546 및 502)에 의해 위반되는 또 다른 거리 제약을 나타낸다. 관절들 간의 거리 제약은 3D 거리임을 알 것이다. 본 예시는 간단하게 하기 위해 2D로 되어 있다.
거리 dt(먼 부분에서 상부까지)는 관절(547)을 화소 영역(1620)으로부터 분리한다. 도 16d 및 16e를 참조한다.
본 예시에서는, 다음에서 논의되는 바와 같이, 손가락 방향으로 늘림으로써 모델 부분들을 조정하여야 한다.
도 16(b2)는 도 16(b1)의 대안이며, 여기서 부모 및 자식 관절이 도시된다. 이 경우에는 거리 제약은 a hdm, b hmm+md, c hpm+pm 및 d d로 표현될 수 있다. 이 경우에, 관절들(1632, 1642 및 1650)은 사용되지 않는다. 거리 d는 다른 거리들과 함께 스케일링되지 않으므로, 파선으로 도시된다. 각도 제약과 같은 다른 제약들도 예를 들어, 관절들(503 및 553) 사이의 선에 적용될 수 있다.
도 16c는 거리 제약을 강제한 이후의 도 16(b1)의 모델의 조정을 도시한다. 거리 제약을 강제하기 위해 각각의 손가락 세그먼트의 길이가 늘려져, 손가락 세그먼트들이 전체 길이 HDP+HMP+HPP를 갖게 된다. 이 길이는 3D로 일직선이거나 곡선인 축을 따라 있을 수 있다. 거리 제약의 강제 결과, 관절들(549와 1632, 551과 1642, 및 553과 1650)이 (허용 오차 내에서) 실질적으로 일치하게 된다. 신체 부위(542)의 길이는 hdm에서 hdm’로 증가하고, 신체 부위(544)의 길이는 hmm에서 hmm’로 증가하며, 신체 부위(546)의 길이는 hpm에서 hpm’로 증가하게 된다. 모델 조정의 결과, 중심들과 대표 유인점들의 상대적인 위치들이 옮겨질 수 있다(shift). 하나의 접근 방법으로, 각각의 신체 부위는, 길이가 늘어나고 있는 다른 인접 신체 부위들에 관련된 자신의 길이에 기반하여 그리고 신체 부위들 사이의 거리에 기반하여, 길이가 늘어난다. 다른 예를 들면, 손가락의 전체 세그먼트들보다는 적은 수의 세그먼트들의 치수가 조정된다. 또 다른 예를 들면, 손의 다른 부분들의 그 치수가 조정된다. 또 다른 예를 들면, 모델은 손 이외의 다른 신체 부위이거나, 또는 행동이 모델링될 수 있는 관절로 연결된 다른 객체일 수 있다.
부모 및 자식 관절들이 사용되는 경우에 유사한 결과를 얻을 것이다(도 16(b2)).
도 16d는 래스터화 이후의 도 16c의 모델, 및 깊이 센서의 깊이 화소와의 비교를 도시한다. 화소 영역으로써 모델 부분들(542, 544 및 546)이 도시된다. 모델의 화소들과 중첩하지 않는 깊이 센서의 깊이 화소들이 식별될 수 있다. 특히, 영역들(1650, 1651 및 1652)의 깊이 화소들은 모델 부분(542)과는 중첩하고 있지 않고, 영역(1660 및 1662)의 깊이 화소들은 모델 부분(544)과는 중첩하고 있지 않고, 영역(1670 및 1672)의 깊이 화소들은 모델 부분(546)과는 중첩하고 있지 않다. 비-중첩 화소들은 점으로 그려진 상자 안에 원형으로 둘러져 있고 점 무늬로 도시된다. 이와 같은 비교는 모델의 손가락 세그먼트들이 너무 좁음을 나타낸다. 모델 부분(542)은 왼쪽으로 dl만큼 오른쪽으로 dr만큼 확대될 수 있다. 모델 부분(544)은 왼쪽으로 ml만큼 오른쪽으로 mr만큼 확대될 수 있다. 모델 부분(546)은 왼쪽으로 pl만큼 오른쪽으로 pr만큼 확대될 수 있다. 모델 부분(542)의 상부에서의 중첩 dt의 경우, 모델 부분(542)만의 길이를 dt만큼 늘리거나, 또는 손가락의 모델 부분 각각의 길이를 늘림으로써 처리될 수 있다. 일반적으로, 모델 조정을 위한 거리는 길이 미터법이나 화소 개수로 표현될 수 있다.
본 예시에서, 각각의 모델 부분의 오른쪽과 왼쪽에 일정한 중첩 부분이 있다. 모델 부분의 주변을 따라 중첩 부분이 달라질 때, 모델 부분이 중첩 부분에 가장 적합하도록 조정될 수 있다. 하나의 접근 방법으로, 평균 중첩 부분을 결정하여 모델 부분을 조정하는 데 사용할 수 있다.
도 16e는 화소 비교에 기반하는 도 16d의 모델에 대한 조정을 도시한다. 본 예시에서, 모델 부분(542)의 상부에서의 중첩 dt는 손가락의 모델 부분 각각의 길이를 늘림으로써 처리된다. 신체 부위(542)의 길이는 hdm’에서 hdm”로 증가하고, 신체 부위(544)의 길이는 hmm’에서 hmm’’으로 증가하며, 신체 부위(546)의 길이는 hpm’에서 hpm’’로 증가한다. 마찬가지로, 모델 부분에 인접한, 좌우 방향으로(laterally) 중첩하고 있지 않은 화소들로 인해, 신체 부위(542)의 폭은 wdm에서 wdm’로 증가하고, 신체 부위의(544)의 폭은 wmm에서 wmm’로 증가하며, 신체 부위(546)의 폭은 wpm에서 wpm’로 증가한다.
부모 및 자식 관절들이 사용되는 경우에 유사한 결과를 얻게 될 것이다(예컨대, 도 16(b2)).
도 17a는 도 5의 모델의 도 15의 깊이 화소들에 대한 매칭의 다른 예를 도시하고, 여기서 거리 제약이 강제되지는 않고, 모델은 바라던 것보다는 크다. 명확성을 위해 모델의 화소들은 도시되지 않는다.
깊이 센서의 화소들과 중첩하지 않는 모델의 깊이 화소들이 식별될 수 있다. 특히, 영역(1750 및 1752)의 깊이 화소들은 모델 부분(542)과는 중첩하고 있지 않고, 영역(1760 및 1762)의 깊이 화소들은 모델 부분(544)과는 중첩하고 있지 않고, 영역(1770 및 1772)의 깊이 화소들은 모델 부분(546)과는 중첩하고 있지 않다. 비-중첩 화소들은 점으로 그려진 상자 안에 원형으로 둘러져 있고 점 무늬로 도시된다. 이와 같은 비교는 손가락 세그먼트들이 너무 넓음을 나타낸다. 모델 부분(542)은 왼쪽으로 dl만큼 오른쪽으로 dr만큼 좁혀질 수 있다. 모델 부분(544)은 왼쪽으로 ml만큼 오른쪽으로 mr만큼 좁혀질 수 있다. 모델 부분(546)은 왼쪽으로 pl만큼 오른쪽으로 pr만큼 좁혀질 수 있다.
본 예시에서, 각각의 모델 부분의 오른쪽과 왼쪽에 실질적으로 일정하거나 균일한 중첩 부분이 있다. 모델 부분의 주변을 따라 중첩 부분이 달라질 때, 모델 부분이 중첩 부분에 가장 적합하도록 조정될 수 있다. 하나의 접근 방법으로, 평균 중첩 부분을 결정하여 모델 부분을 조정하는 데 사용할 수 있다.
특정 모델 부분은 한 개 이상의 프레임에서 상반되는 조정을 받을 수 있음을 알 것이다. 마찬가지로, 인접 모델 부분도 한 개 이상의 프레임에서 상반되는 조정을 받을 수 있다. 예를 들어, 어느 한 프레임에서는, 손가락 세그먼트가 넓혀지고, 다른 프레임에서는 좁혀질 수 있다. 이는, 예를 들어, 조정의 반복성(iterative nature), 노이즈, 깊이 센서의 해상도, 사용자의 움직임, 계산 한계 및 그 밖의 팩터들에 의해서 일어날 수 있다. 모델 부분은, 예를 들어, 상반되거나 상충하는 거리 제약 조정, 충돌 제약 조정 및/또는 화소 비교 조정으로 인해, 어느 한 프레임에서 상반되거나 상충하는 조정을 받을 수도 있다.
거리 제약은 a md, b pm, c pp’에 의해 표현될 수 있다.
도 17b는 도 17a의 대안이며, 여기서 부모 및 자식 관절이 도시된다. 이 경우에, 거리 제약은 a hdm, b hmm-md, c hpm-pm-pp’ 및 d d’로 표현될 수 있다. 이런 경우에, 관절들(1632, 1642 및 1650)은 사용되지 않는다. 거리 d’는 다른 거리들과 함께 스케일링되지 않으므로, 파선으로 도시된다.
도 18a는 충돌을 보여주는 도 5의 모델의 인접한 두 손가락들을 도시한다. 충돌 제약은 모델의 다른 부분들이 같은 위치에 동시에 존재하게 되는 것을 피하기 위한 것이다. 예를 들어, 본 예시에서는 모델의 인접 손가락들(530 및 540)을 도시하고, 여기서 손가락들의 음영진 부분들(1820)이 공존한다(co-located). 간략화된 본 예시에서, 손가락(530)의 모델 부분들(532, 534 및 536)은 폭 wdm1을 갖고 있고, 손가락(540)의 모델 부분들(542, 544 및 546)은 폭 wdm2를 갖고 있다. 거리 pd(투과 깊이(penetration depth))는 충돌 정도, 예를 들어, 충돌 제약의 위반 정도를 나타낸다. 중앙의 세로축은 각각의 모델 부분으로, 예를 들어, 축(1800, 1802 및 1804)은 모델 부분(532, 534 및 536)으로, 축(1810, 1812 및 1814)은 모델 부분(542, 544 및 546)으로 연장된다.
축(1830)은, 손가락(540)의 주변을 따라 연장되는 손가락(530)의 투과축(penetration axis)으로 간주될 수 있고, 축(1832)은, 손가락(530)의 주변을 따라 연장되는 손가락(540)의 투과축으로 간주될 수 있다. 이런 경우에, pd는 투과축들(1830 및 1832) 사이의 거리이다.
도 18b는 충돌 제약이 강제된 후의 도 18a의 인접한 두 손가락들을 도시한다. 충돌 제약을 충족시키기 위해, 손가락들(530 및 540) 어느 한쪽 또는 양쪽 모두가 조정된다. 생각할 수 있는 바로, 하나의 해결 방안은 손가락들을 더 멀리 떨어지게 이동시키는 것이다. 그러나, 거리 제약은 손가락들이 손바닥의 특정 관절들로부터 연장되는 것을 요구하는 것으로, 이런 해결 방안은 선호되지 않는다. 다른 해결 방안은 손가락들 중 단지 한 손가락만의 폭을 줄이는 것이지만, 이는 최적일 수가 없을 것이다. 통상적으로 최적의 해결 방안은 충돌하는 손가락들이나 다른 신체 부위들의 양쪽 모두의 폭을 줄이는 것이다. 하나의 접근 방법으로, 손가락들(530 및 540)은 충돌을 막기에 충분하게 동일한 비율로, 예를 들어, 동일한 백분율로 폭이 줄어들 수 있다. 이런 경우에, 손가락(530)의 폭은 wdm1에서 wdm1’로 줄어들고, 손가락(540)의 폭은 wdm2에서 wdm2’로 줄어든다.
모델이 충돌 제약 강제에 특히 적합한 포즈에 있다고 결정될 때, 충돌 제약을 강제하는 결정이 내려질 수 있다. 따라서, 충돌 제약은 포즈가 적합한지 여부에 따라 프레임에 대해 강제될 수 있다. 하나의 가능한 접근 방법으로, 포즈가 적합하지 않으면, 충돌 제약은 그 프레임에 대해 강제되지 않는다.
하나의 접근 방법으로, 초기 모델의 개선은 거리 제약을 충족하기 위해 모델을 조정한 후, 충돌 제약의 강제 여부를 결정하는 단계를 포함한다. 충돌 제약의 강제 여부 결정에 대응하여, 모델의 손가락 세그먼트들과 같이 적어도 두 개의 인접한 모델 부분들에 의해 충돌 제약이 초기 매치에서 위반된 정도에 관한 평가가 내려질 수 있다. 모델의 적어도 두 개의 인접한 손가락 세그먼트들에 의해 충돌 제약이 위반된 정도에 기반하여, 모델의 적어도 두 개의 인접한 손가락 세그먼트들의 폭을 줄임으로써 충돌 제약을 충족하기 위해 모델이 조정될 수 있다. 충돌 제약의 강제 여부에 관한 결정은 모델의 적어도 두 개의 인접한 손가락 세그먼트들이 특정 상대 위치에 있는지에 관한 결정을 포함할 수 있다. 하나의 접근 방법으로, 모델의 적어도 두 개의 인접한 손가락 세그먼트들의 각각의 세로 축들이, 도 18a에 도시된 바와 같이, 특정 각도 임계값 내에서 실질적으로 평행할 때, 모델의 적어도 두 개의 인접한 손가락 세그먼트들은 특정한 상대 위치에 있게 된다. 예를 들어, 이런 각도 임계값은 축들(1830 및 1832) 사이의 각도일 수 있다. 모델의 적어도 두 개의 인접한 손가락 세그먼트들에 의해 위반된 충돌 제약의 정도는 각각의 세로 축들 간의 거리에 기반할 수 있다.
본 예시에서, 두 개의 인접한 손가락들 또는 손가락 세그먼트들이 실질적으로 평행하여 크게 충돌하는 경우, 이는 손가락 폭이 너무 굵어서 줄여야 함을 나타낸다. 하나의 접근 방법으로, 각각의 손가락 세그먼트는 원기둥으로 모델링되고, 이런 경우에 원기둥 길이 축들이 평행한지를 결정할 수 있다.
본원의 기술에 대한 상기 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 포괄적이도록 의도되거나, 개시된 정확한 형태로 기술을 제한하고자 의도된 것은 아니다. 상기 교시에 비추어 많은 수정 및 변경이 가능하다. 상기 기술된 실시예들은 기술의 원리와 그의 실용적 응용을 가장 잘 설명하도록 선택되어, 그에 의해 당업자가 고려된 특정 용도에 적합한 다양한 실시예에서 그리고 다양한 변형을 이용하여 그 기술을 가장 잘 활용하도록 해준다. 기술의 범위는 본원에 첨부된 청구범위에 의해 정의되도록 의도된다.

Claims (10)

  1. 객체의 관절로 연결된 신체 부위들의 포즈를 모델링하는 방법을 실행하도록 적어도 하나의 프로세서를 프로그래밍하는 컴퓨터 판독가능 소프트웨어가 구현되어 있는 컴퓨터 판독가능 저장 장치에 있어서,
    상기 방법은
    한 개 이상의 프레임에서 상기 관절로 연결된 신체 부위들의 깊이 화소들을 얻는 단계,
    상기 한 개 이상의 프레임의 깊이 화소들을 처리하여 상기 객체의 관절로 연결된 신체 부위들을 식별하는 단계,
    모델에 액세스 하는 단계 - 상기 모델은 상기 객체의 관절로 연결된 신체 부위들에 대응하는 관절로 연결된 신체 부분들을 포함함 -,
    상기 모델의 관절로 연결된 신체 부위들을 상기 객체의 식별된 관절로 연결된 신체 부분들에 매칭하여 초기 매치를 제공하는 단계,
    상기 초기 매치에서 상기 모델의 관절로 연결된 신체 부위들에 의해 위반된 거리 제약의 정도를 평가하는 단계 - 상기 거리 제약은 상기 모델의 관절로 연결된 신체 부위들 간의 거리에 대한 제약을 포함함 -, 및
    상기 거리 제약을 충족시키기 위해 상기 모델을 조정하는 단계 - 상기 거리 제약이 위반된 정도에 기반하여 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 길이를 조정하는 단계를 포함함 - 를 포함하는 컴퓨터 판독가능 저장 장치.
  2. 제 1 항에 있어서,
    상기 거리 제약은 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위가 말단에서 말단으로(arranged end to end) 배열되도록 제한하고,
    상기 평가 단계는 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위가 초기 매치에서 말단에서 말단까지보다 더 멀리, 또는 초기 매치에서의 말단에서 말단까지보다 더 가까이 배열되는 정도를 평가하는 단계를 포함하고,
    상기 길이 조정 단계는 (i) 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위가 초기 매치에서 말단에서 말단까지보다 더 멀게 배열되는 정도에 따라 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위를 늘리는 단계, 및 (ii) 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위가 초기 매치에서 말단에서 말단까지보다 더 가깝게 배열되는 정도에 따라 상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위를 줄이는 단계 중 적어도 하나를 포함하고,
    상기 관절로 연결된 신체 부위들은 손가락 세그먼트를 포함하는, 손의 손바닥과 손가락들을 포함하고,
    상기 모델의 관절로 연결된 신체 부위들 중 적어도 두 부위는 상기 손가락들 중 하나의 손가락 세그먼트들을 포함하는 컴퓨터 판독가능 저장 장치.
  3. 제 1 항에 있어서,
    상기 신체 부위들은 손의 손바닥과 손가락들을 포함하고,
    상기 거리 제약은 상기 모델의 손가락들이 상기 손바닥의 사전 정의된 관절들에서 상기 모델의 손바닥으로부터 연장하도록 제약하고,
    상기 평가 단계는 상기 모델의 손가락들이 상기 손바닥의 사전 정의된 관절들로부터 연장하지 않는 정도를 평가하는 단계를 포함하고,
    상기 모델 조정 단계는 상기 모델의 손가락들이 상기 손바닥의 사전 정의된 관절들로부터 연장하지 않는 정도에 따라 상기 손바닥의 사전 정의된 관절들로부터 연장하도록 상기 모델의 손가락들을 이동시키는 단계를 포함하는 컴퓨터 판독가능 저장 장치.
  4. 제 1 항에 있어서,
    상기 관절로 연결된 신체 부위는 손의 손바닥과 손가락들을 포함하고,
    상기 길이 평가 및 조정 단계는 상기 손가락들 각각에 대해 개별적으로 실행되는 컴퓨터 판독가능 저장 장치.
  5. 제 1 항에 있어서,
    상기 거리 제약은 상기 모델의 관절로 연결된 신체 부위들의 관절들 간의 거리에 대한 제약을 포함하는 컴퓨터 판독가능 저장 장치.
  6. 제 1 항에 있어서,
    상기 실행 방법은
    상기 모델을 래스터화하여 상기 모델의 깊이 화소들을 제공하는 단계,
    상기 모델의 깊이 화소들과 상기 하나 이상의 프레임의 깊이 화소들을 비교하여, 상기 하나 이상의 프레임의 깊이 화소들로부터, 상기 모델의 깊이 화소들과 적어도 하나의 비교 평면에서 중첩하고 있지 않는 상기 하나 이상의 프레임의 비-중첩 깊이 화소들을 식별하는 단계, 및
    상기 비교 단계에 기반하여 상기 모델을 조정하여, 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 치수를 조정함으로써 상기 모델이 상기 하나 이상의 프레임의 비-중첩 깊이 화소들과 더욱 가깝게 매칭되도록 하는 단계를 포함하고,
    상기 비교 단계에 기반한 상기 모델 조정 단계는, 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위에 인접하고 그 옆에 있는 상기 하나 이상의 프레임의 비-중첩 깊이 화소들의 개수에 따라 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 폭을 늘리는 단계를 더 포함하는 컴퓨터 판독가능 저장 장치.
  7. 제 1 항에 있어서,
    상기 관절로 연결된 신체 부위들은 손의 손바닥과 손가락들을 포함하고,
    상기 실행 방법은
    상기 모델에서 상기 모델의 적어도 두 개의 인접한 손가락들에 의해 위반된 충돌 제약의 정도를 평가하는 단계,
    상기 거리 제약을 충족시키기 위해 상기 모델을 조정하는 단계 - 상기 모델의 적어도 두 개의 인접한 손가락들에 의해 위반된 상기 충돌 제약의 정도에 기반하여 상기 모델의 인접한 두 손가락들 중 적어도 하나의 치수를 조정하는 단계를 포함함 - 를 포함하고,
    상기 충돌 제약을 충족시키기 위해 상기 모델을 조정하는 단계는, 상기 모델의 적어도 두 개의 인접한 손가락들에 의해 위반된 상기 충돌 제약의 정도에 기반하여 상기 모델의 인접한 두 손가락들 중 적어도 하나의 폭을 줄이는 단계를 더 포함하는 컴퓨터 판독가능 저장 장치.
  8. 제 1 항에 있어서,
    상기 실행 방법은
    상기 모델을 래스터화하여 상기 모델의 깊이 화소들을 제공하는 단계,
    상기 모델의 깊이 화소들과 상기 하나 이상의 프레임의 깊이 화소들을 비교하여, 상기 하나 이상의 프레임의 깊이 화소들로부터, 상기 하나 이상의 프레임의 깊이 화소들과 적어도 하나의 비교 평면에서 중첩하고 있지 않는 상기 모델의 비-중첩 깊이 화소들을 식별하는 단계, 및
    상기 비교 단계에 기반하여 상기 모델을 조정하여, 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 치수를 조정함으로써 상기 모델이 상기 하나 이상의 프레임의 비-중첩 깊이 화소들과 더욱 가깝게 매칭되도록 하는 단계를 포함하고,
    상기 비교 단계에 기반한 상기 모델 조정 단계는, 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위에 인접하고 그 옆에 있는 상기 모델의 비-중첩 깊이 화소들의 개수에 따라 상기 모델의 관절로 연결된 신체 부위들 중 적어도 한 부위의 폭을 줄이는 단계를 더 포함하는 컴퓨터 판독가능 저장 장치.
  9. 사용자의 손의 포즈를 모델링하는, 프로세서로 구현된 방법에 있어서,
    상기 방법은
    한 개 이상의 프레임에서 상기 손의 깊이 화소들을 얻고,
    상기 한 개 이상의 프레임의 깊이 화소들을 처리하여 상기 손의 관절로 연결된 신체 부위들을 식별하고,
    상기 손의 관절로 연결된 부분들의 모델에 액세스 하고-상기 모델의 손의 관절로 연결된 부분들은 손가락 세그먼트들을 포함하는, 손바닥과 손가락들을 포함함 -,
    상기 모델의 손의 관절로 연결된 신체 부위들을 상기 하나 이상의 프레임의 깊이 화소들의 손의 식별된 관절로 연결된 부분들에 매칭하여 초기 매치를 제공하고,
    상기 초기 매치에서 상기 적어도 한 개의 손가락에 의해 위반된 거리 제약의 정도를 평가하며 - 상기 거리 제약은 상기 적어도 한 개의 손가락의 손가락 세그먼트들 간의 거리에 대한 제약을 포함함 -,
    상기 모델을 래스터화하여 상기 모델의 깊이 화소들을 제공하고,
    상기 적어도 한 개의 손가락의 깊이 화소들과 상기 하나 이상의 프레임의 깊이 화소들을 비교하여, 상기 하나 이상의 프레임의 깊이 화소들로부터, 상기 모델의 적어도 한 개의 손가락의 깊이 화소들과 적어도 하나의 비교 평면에서 중첩하고 있지 않는 상기 하나 이상의 프레임의 비-중첩 깊이 화소들을 식별하고,
    a 상기 거리 제약을 충족시키기 위해, 상기 적어도 한 개의 손가락에 의해 위반된 상기 거리 제약의 정도에 기반하여, 상기 모델의 적어도 한 개의 손가락의 적어도 한 개의 손가락 세그먼트의 길이의 조정을 포함하고, b 상기 비교 단계에 기반하여, 상기 모델의 적어도 한 개의 손가락의 적어도 한 개의 손가락 세그먼트의 폭을 늘림으로써 상기 모델이 상기 하나 이상의 프레임의 비-중첩 깊이 화소들과 더욱 가깝게 매칭되도록 상기 모델을 조정하는
    프로세서로 구현되는 단계들을 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 방법은
    상기 적어도 하나의 손가락 이외에, 상기 손의 관절로 연결된 부분들 중에서 적어도 한 부분의 깊이 화소들을 상기 하나 이상의 프레임의 깊이 화소들과 비교하여, 상기 하나 이상의 프레임의 깊이 화소들 중에서, 상기 하나 이상의 프레임의 깊이 화소들과 적어도 하나의 비교 평면에서 중첩하고 있지 않는 상기 모델의 손의 관절로 연결된 부분들 중에서 적어도 한 부분의 비-중첩 깊이 화소들을 식별하는 단계, 및
    상기 폭을 줄임으로써, 상기 모델이 상기 하나 이상의 프레임의 깊이 화소들과 더욱 가깝게 매칭되도록 상기 비교 단계에 기반하여 상기 모델을 조정하는 단계를 더 포함하는 방법.
KR1020137034022A 2011-06-22 2012-06-19 관절로 연결된 모델의 전자동 동적 교정 기법 Expired - Fee Related KR101922747B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
AU2011203028 2011-06-22
AU2011203028A AU2011203028B1 (en) 2011-06-22 2011-06-22 Fully automatic dynamic articulated model calibration
US13/172,255 US8610723B2 (en) 2011-06-22 2011-06-29 Fully automatic dynamic articulated model calibration
US13/172,255 2011-06-29
PCT/US2012/043154 WO2012177643A2 (en) 2011-06-22 2012-06-19 Fully automatic dynamic articulated model calibration

Publications (2)

Publication Number Publication Date
KR20140034847A true KR20140034847A (ko) 2014-03-20
KR101922747B1 KR101922747B1 (ko) 2018-11-27

Family

ID=45812609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034022A Expired - Fee Related KR101922747B1 (ko) 2011-06-22 2012-06-19 관절로 연결된 모델의 전자동 동적 교정 기법

Country Status (9)

Country Link
US (1) US8610723B2 (ko)
EP (1) EP2724318B1 (ko)
JP (1) JP5981990B2 (ko)
KR (1) KR101922747B1 (ko)
CN (1) CN103608844B (ko)
AR (1) AR086735A1 (ko)
AU (1) AU2011203028B1 (ko)
TW (1) TWI549022B (ko)
WO (1) WO2012177643A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170068829A (ko) * 2015-12-10 2017-06-20 현대모비스 주식회사 제스쳐 인식 시 손가락 포인트 보정 방법 및 그 장치
WO2022114506A1 (ko) * 2020-11-30 2022-06-02 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
WO2022107088A3 (en) * 2020-11-20 2022-08-25 Soul Machines Limited Autonomous animation in embodied agents

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9628843B2 (en) * 2011-11-21 2017-04-18 Microsoft Technology Licensing, Llc Methods for controlling electronic devices using gestures
US20140063314A1 (en) * 2012-02-28 2014-03-06 Aswin C Sankaranarayanan System And Method Of Video Compressive Sensing For Spatial-Multiplexing Cameras
TWI466062B (zh) * 2012-10-04 2014-12-21 Ind Tech Res Inst 重建三維模型的方法與三維模型重建裝置
US20140185945A1 (en) * 2012-12-31 2014-07-03 Caterpillar Inc. Modified dp search for 2d/3d map compression
US20140185944A1 (en) * 2012-12-31 2014-07-03 Caterpillar Inc. Gradient Search For 2D/3D Map Compression
US8994652B2 (en) * 2013-02-15 2015-03-31 Intel Corporation Model-based multi-hypothesis target tracker
WO2015047223A1 (en) 2013-09-24 2015-04-02 Hewlett-Packard Development Company, L.P. Identifying a target touch region of a touch-sensitive surface based on an image
CN105723300B (zh) * 2013-09-24 2020-10-27 惠普发展公司,有限责任合伙企业 基于表示对象的图像确定分割边界
DE102013017425A1 (de) * 2013-10-19 2015-05-07 Drägerwerk AG & Co. KGaA Verfahren für die Erkennung von Gesten eines menschlichen Körpers
KR102097016B1 (ko) * 2015-02-09 2020-04-06 한국전자통신연구원 동작 분석 장치 및 방법
KR101597940B1 (ko) * 2015-07-09 2016-02-26 중앙대학교 산학협력단 아바타 동작 생성 방법 및 이를 수행하기 위한 컴퓨팅 디바이스
JP6569452B2 (ja) * 2015-10-08 2019-09-04 富士通株式会社 画像生成システム、画像生成プログラム及び画像生成方法
US10037624B2 (en) * 2015-12-29 2018-07-31 Microsoft Technology Licensing, Llc Calibrating object shape
US20170185156A1 (en) * 2015-12-29 2017-06-29 Microsoft Technology Licensing, Llc Hand tracking for user interface operation at-a-distance
US10565791B2 (en) 2015-12-29 2020-02-18 Microsoft Technology Licensing, Llc Tracking rigged polygon-mesh models of articulated objects
US10186081B2 (en) 2015-12-29 2019-01-22 Microsoft Technology Licensing, Llc Tracking rigged smooth-surface models of articulated objects
US20170185141A1 (en) * 2015-12-29 2017-06-29 Microsoft Technology Licensing, Llc Hand tracking for interaction feedback
JP6724582B2 (ja) * 2016-06-15 2020-07-15 富士通株式会社 画像生成装置、画像生成プログラム及び画像生成方法
WO2018087933A1 (ja) * 2016-11-14 2018-05-17 富士通株式会社 情報処理装置、情報処理方法、およびプログラム
CN106582012B (zh) * 2016-12-07 2018-12-11 腾讯科技(深圳)有限公司 一种vr场景下的攀爬操作处理方法和装置
EP3432204B1 (en) * 2017-07-20 2024-01-17 Tata Consultancy Services Limited Telepresence framework for region of interest marking using headmount devices
US10885659B2 (en) 2018-01-15 2021-01-05 Samsung Electronics Co., Ltd. Object pose estimating method and apparatus
TWI663526B (zh) * 2018-05-17 2019-06-21 晶翔機電股份有限公司 運動分析裝置及運動分析方法
US11537219B2 (en) 2018-08-07 2022-12-27 The Research Foundation For The State University Of New York Feedback input apparatus and method for use thereof
CN108960211B (zh) * 2018-08-10 2020-12-01 罗普特(厦门)科技集团有限公司 一种多目标人体姿态检测方法以及系统
DE102018124877A1 (de) * 2018-10-09 2020-04-09 Inferics GmbH Verfahren zur berührungslosen Ermittlung von Freiheitsgraden eines Körpers
JP7603006B2 (ja) 2018-10-31 2024-12-19 ソウル マシーンズ リミティド アニメーションシステムのコンピュータ実装方法、データプロセッシング装置、アニメーションシステム、コンピュータプログラム、又はコンピュータ読み取り可能な媒体
CN109410276B (zh) * 2018-11-01 2020-10-27 北京达佳互联信息技术有限公司 关键点位置确定方法、装置及电子设备
CN111460871B (zh) * 2019-01-18 2023-12-22 北京市商汤科技开发有限公司 图像处理方法及装置、存储介质
CN109710082B (zh) * 2019-02-26 2024-04-16 浙江工贸职业技术学院 一种数据手套
US11113873B1 (en) * 2019-09-27 2021-09-07 Zoox, Inc. Modeling articulated objects
CN110889905B (zh) * 2019-11-21 2023-06-06 宁波财经学院 基于裸眼3d的产品展示方法和系统
WO2021108913A1 (en) * 2019-12-04 2021-06-10 Studio Thinkwell Montréal Inc. Video system, method for calibrating the video system and method for capturing an image using the video system
CN111687838B (zh) * 2020-05-29 2023-10-13 深圳科瑞技术股份有限公司 机械手轨迹跟随误差的在线补偿方法、系统及存储介质
CN111696184B (zh) * 2020-06-10 2023-08-29 上海米哈游天命科技有限公司 骨骼蒙皮融合确定方法、装置、设备和存储介质
US12327071B1 (en) * 2020-06-18 2025-06-10 Nvidia Corporation Internal solver for articulations in simulation applications
CN113300925B (zh) * 2020-06-24 2024-05-17 盒马(中国)有限公司 直线型和移载机can总线入网单元及其相关方法
CN112541925A (zh) * 2020-12-15 2021-03-23 华南理工大学 结合视觉仿真的图像感兴趣区域截取方法、系统及存储介质
CN113158912B (zh) * 2021-04-25 2023-12-26 北京华捷艾米科技有限公司 手势识别方法及装置、存储介质及电子设备
CN114821009B (zh) * 2022-03-31 2025-04-22 北京奇艺世纪科技有限公司 一种虚拟人物穿模调整方法、装置、设备及存储介质
CN119919544A (zh) * 2023-10-30 2025-05-02 华为技术有限公司 动画的生成方法、生成装置及电子设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930379A (en) 1997-06-16 1999-07-27 Digital Equipment Corporation Method for detecting human body motion in frames of a video sequence
US7003134B1 (en) 1999-03-08 2006-02-21 Vulcan Patents Llc Three dimensional object pose estimation which employs dense depth information
US6674877B1 (en) 2000-02-03 2004-01-06 Microsoft Corporation System and method for visually tracking occluded objects in real time
JP4124649B2 (ja) * 2000-11-29 2008-07-23 株式会社フィジオン 身体組成測定方法及び身体組成測定装置
JP2006209445A (ja) * 2005-01-27 2006-08-10 Osaka Univ アニメーション生成装置およびその方法
JP4148281B2 (ja) * 2006-06-19 2008-09-10 ソニー株式会社 モーションキャプチャ装置及びモーションキャプチャ方法、並びにモーションキャプチャプログラム
JP4709723B2 (ja) 2006-10-27 2011-06-22 株式会社東芝 姿勢推定装置及びその方法
US8351646B2 (en) * 2006-12-21 2013-01-08 Honda Motor Co., Ltd. Human pose estimation and tracking using label assignment
US8005263B2 (en) * 2007-10-26 2011-08-23 Honda Motor Co., Ltd. Hand sign recognition using label assignment
US20100111374A1 (en) 2008-08-06 2010-05-06 Adrian Stoica Method for using information in human shadows and their dynamics
EP2184713A1 (en) * 2008-11-04 2010-05-12 Koninklijke Philips Electronics N.V. Method and device for generating a depth map
US8588465B2 (en) * 2009-01-30 2013-11-19 Microsoft Corporation Visual target tracking
US8267781B2 (en) * 2009-01-30 2012-09-18 Microsoft Corporation Visual target tracking
US8577085B2 (en) 2009-01-30 2013-11-05 Microsoft Corporation Visual target tracking
KR101591779B1 (ko) 2009-03-17 2016-02-05 삼성전자주식회사 모션 데이터 및 영상 데이터를 이용한 골격 모델 생성 장치및 방법
US8503720B2 (en) 2009-05-01 2013-08-06 Microsoft Corporation Human body pose estimation
US8856691B2 (en) * 2009-05-29 2014-10-07 Microsoft Corporation Gesture tool
US8334872B2 (en) 2009-05-29 2012-12-18 Two Pic Mc Llc Inverse kinematics for motion-capture characters
US8755569B2 (en) 2009-05-29 2014-06-17 University Of Central Florida Research Foundation, Inc. Methods for recognizing pose and action of articulated objects with collection of planes in motion
US8390680B2 (en) * 2009-07-09 2013-03-05 Microsoft Corporation Visual representation expression based on player expression
KR101640039B1 (ko) 2009-09-22 2016-07-18 삼성전자주식회사 영상 처리 장치 및 방법
TWI398158B (zh) * 2009-12-01 2013-06-01 Ind Tech Res Inst 產生立體影像之影像深度的方法
CN101807114B (zh) * 2010-04-02 2011-12-07 浙江大学 一种基于三维手势的自然交互方法
CN101833786B (zh) * 2010-04-06 2011-12-28 清华大学 三维模型的捕捉及重建方法和系统
US8396252B2 (en) * 2010-05-20 2013-03-12 Edge 3 Technologies Systems and related methods for three dimensional gesture recognition in vehicles
JP2011258159A (ja) * 2010-06-11 2011-12-22 Namco Bandai Games Inc プログラム、情報記憶媒体及び画像生成システム
US8488888B2 (en) * 2010-12-28 2013-07-16 Microsoft Corporation Classification of posture states

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170068829A (ko) * 2015-12-10 2017-06-20 현대모비스 주식회사 제스쳐 인식 시 손가락 포인트 보정 방법 및 그 장치
WO2022107088A3 (en) * 2020-11-20 2022-08-25 Soul Machines Limited Autonomous animation in embodied agents
WO2022114506A1 (ko) * 2020-11-30 2022-06-02 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법

Also Published As

Publication number Publication date
EP2724318B1 (en) 2017-10-25
WO2012177643A2 (en) 2012-12-27
JP5981990B2 (ja) 2016-08-31
US20120327089A1 (en) 2012-12-27
WO2012177643A3 (en) 2013-02-21
KR101922747B1 (ko) 2018-11-27
EP2724318A2 (en) 2014-04-30
TW201301081A (zh) 2013-01-01
AR086735A1 (es) 2014-01-22
JP2014522018A (ja) 2014-08-28
TWI549022B (zh) 2016-09-11
CN103608844B (zh) 2016-07-06
CN103608844A (zh) 2014-02-26
EP2724318A4 (en) 2014-12-31
US8610723B2 (en) 2013-12-17
AU2011203028B1 (en) 2012-03-08

Similar Documents

Publication Publication Date Title
KR101922747B1 (ko) 관절로 연결된 모델의 전자동 동적 교정 기법
US9344707B2 (en) Probabilistic and constraint based articulated model fitting
US8351651B2 (en) Hand-location post-process refinement in a tracking system
US8558873B2 (en) Use of wavefront coding to create a depth image
US8878906B2 (en) Invariant features for computer vision
US8602887B2 (en) Synthesis of information from multiple audiovisual sources
US8660310B2 (en) Systems and methods for tracking a model
US8638985B2 (en) Human body pose estimation
US8953844B2 (en) System for fast, probabilistic skeletal tracking
US20170287139A1 (en) Methods and systems for determining and tracking extremities of a target
US20150131862A1 (en) Human tracking system
US20120162065A1 (en) Skeletal joint recognition and tracking system
KR20120020106A (ko) 모션 캡처를 위하여 모델 추적을 적용하는 시스템 및 방법
WO2011087887A2 (en) Tracking groups of users in motion capture system
EP3209398B1 (en) Silhouette-based limb finding
US20120311503A1 (en) Gesture to trigger application-pertinent information

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20131220

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20150708

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20170517

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20180201

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20180821

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20181121

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20181121

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20220902