KR20130111248A - 골격 관절 인식 및 트래킹 시스템 - Google Patents

골격 관절 인식 및 트래킹 시스템 Download PDF

Info

Publication number
KR20130111248A
KR20130111248A KR1020127034151A KR20127034151A KR20130111248A KR 20130111248 A KR20130111248 A KR 20130111248A KR 1020127034151 A KR1020127034151 A KR 1020127034151A KR 20127034151 A KR20127034151 A KR 20127034151A KR 20130111248 A KR20130111248 A KR 20130111248A
Authority
KR
South Korea
Prior art keywords
body part
user
hand
gesture
candidate
Prior art date
Application number
KR1020127034151A
Other languages
English (en)
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 KR20130111248A publication Critical patent/KR20130111248A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • G06V40/23Recognition of whole body movements, e.g. for sport training
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/103Static body considered as a whole, e.g. static pedestrian or occupant recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Psychiatry (AREA)
  • Social Psychology (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

NUI 시스템으로 사용자의 골격 관절을 인식 및 트래킹하는 시스템 및 방법, 나아가, 예컨대, 사용자의 상체와 같이 일부 골격 관절만을 인식 및 트래킹하는 시스템 및 방법이 본원에 개시된다. 시스템은 장면에서 하나 이상의 사용자의 신체 부위의 위치를 평가, 식별 및 트래킹하기 위한 여러 방법을 사용할 수 있는 팔다리 식별 엔진을 포함할 수 있다. 예를 들어, 시야를 더 작은 영역으로 세그먼트화하여 한 번에 하나의 영역에 초점을 둠으로써 추가적인 처리 효율성을 얻을 수 있다. 또한, 각각의 영역은 인식되는 자체적인 사전 정의된 제스처 집합을 가지고 있을 수 있다.

Description

골격 관절 인식 및 트래킹 시스템{SKELETAL JOINT RECOGNITION AND TRACKING SYSTEM}
과거에는, 컴퓨터 게임 및 멀티미디어 애플리케이션을 비롯한 컴퓨팅 애플리케이션에서 제어기, 리모콘, 키보드, 마우스 등을 사용하여 사용자들이 게임 캐릭터나 애플리케이션의 기타 양태들을 제어할 수 있었다. 최근 들어, 컴퓨터 게임 및 멀티미디어 애플리케이션은 카메라 및 소프트웨어 제스처 인식 엔진을 이용하여 내츄럴 사용자 인터페이스("NUI")를 제공하기 시작하였다. NUI를 통해, 원 관절 데이터(raw joint data) 및 사용자 제스처가 탐지, 해석 및 사용되어 게임 캐릭터나 애플리케이션의 기타 양태들을 제어하게 된다.
NUI 애플리케이션은 통상적으로 사용자의 모든 관절에서의 모션은 물론, 전체 시야에서의 배경 객체들도 트래킹한다. 그러나, 때때로 사용자는 단지 자신의 몸의 일부만을 사용하여 NUI 애플리케이션과 인터랙션하고 있을 수도 있다. 예를 들어, 사용자는 자신의 다리를 사용하지 않고 의자 또는 휠체어에 앉아 있을 수 있다. 이런 경우에, NUI 애플리케이션은 여전히 사용자의 하체를 트래킹하게 된다.
NUI 시스템으로 사용자의 골격 관절을 인식 및 트래킹하는 시스템 및 방법, 실시예에서, 예컨대, 사용자의 상체와 같이 일부 골격 관절만을 인식 및 트래킹하는 시스템 및 방법이 본원에 개시된다. 시스템은 이미지 캡쳐 장치로부터 시야의 프레임 데이터를 수신하는 팔다리 식별 장치(limb identification engine)를 포함할 수 있다. 팔다리 식별 장치는 장면 내의 하나 이상의 사용자의 머리, 어깨 및 기타 신체 부위의 위치를 평가, 식별 및 트래킹하기 위해 본보기 및 중심 생성(Exemplar and centroid generation), 마그네티즘(magnetism) 및 각종 점수를 내는 테스트를 포함하는 다양한 방법을 사용할 수 있다.
실시예에서, 본 시스템은 시야 내의 하나 이상의 플레이어(본원에서는 사용자라고도 함)의 색상 이미지 및/또는 깊이 이미지를 캡쳐하는 캡쳐 장치를 포함한다. 한 명 이상의 플레이어가 움직이고 있는, 특정 색상 및/또는 깊이 이미지, 또는 이미지 시퀀스에 대해, 본 기술에서와 같은 사람-트래킹 시스템의 일반적인 최종 목표는 이미지(들)를 분석하고, 사람들의 신체 부위의 위치를 포함하여 사람들이 장면의 어디에 있는지를 견고하게 결정하는 것이다.
이런 문제를 해결하기 위한 시스템은, 다수의 후보 신체 부위의 위치를 식별한 후, 이들을 전체 또는 부분 골격으로 맞추는(reconcile) 두 가지 하위 문제들로 세분화될 수 있다. 팔다리 식별 엔진의 실시예로 다수의 후보 신체 부위 위치를 식별하는 신체 부위 제안 시스템(body part proposal system), 및 후보 신체 부위들을 전체 또는 부분 골격으로 맞추는 골격 분석 시스템(skeleton resolution system)을 포함한다.
신체 부위 제안 시스템은 이미지(들)를 사용하여 장면에 걸쳐 (각각의 신체 부위에 대해 가능한 많은 후보를 갖고 있는) 후보 신체 부위 위치의 집합을 생성한다. 이들 신체 부위 제안 시스템은 상태 비보존형(stateless)이거나 상태 보존형(stateful)일 수 있다. 상태 비보존형 시스템은 이전 상태(이전 프레임)와 무관하게 후보 신체 부위 위치들을 생성하는 것이다. 상태 보존형 시스템은 이전 상태, 또는 이전 프레임과 관련하여 후보 신체 부위 위치를 생성하는 것이다. 상태 비보존형 신체 부위 제안 시스템의 일례로 후보 신체 부위를 식별하기 위한 본보기 및 중심을 포함한다. 본 기술은 또한 본원에서 후보 신체 부위를 식별하기 위한 마그네티즘이라고 하는 상태 보존형 시스템을 개시한다. 신체 부위 제안 시스템은 특성상 많은 거짓 양성(false positive)들을 양산할 수 있다. 따라서, 팔다리 식별 엔진은 후보 신체 부위들을 맞추고 시야 내에서 올바르게 식별된 신체 및/또는 신체 부위로부터 거짓 양성을 구별하는 골격 분석 시스템을 포함한다.
골격 분석 시스템은 많은 거짓 양성을 포함할 수 있는, 하나 이상의 신체 부위 제안 시스템으로부터의 신체 부위 제안들을 사용하여 데이터를 견고한 전체 골격으로 맞춘다. 일 실시예에서, 골격 분석 시스템은 다양한 방식으로 신체 부위 제안들을 연결시켜 다수의 (부분 또는 전체) 골격 가설(hypothesis)을 세움으로써 동작한다. 계산의 복잡도를 줄이기 위해, (머리 및 어깨와 같은) 골격의 특정 부위들이 먼저 분석되고, (팔과 같은) 다른 부위들이 분석된다. 이들 가설은 여러 방식으로 점수가 매겨지고, 그 점수 및 기타 정보를 사용하여 가장 알맞은 가설을 선택하여 플레이어들이 실제로 어디에 있는지를 맞춘다.
가설은 많은 견고한 비용 함수(robust cost function)를 사용하여 점수가 매겨진다. 비용 함수에서 고득점을 얻은 신체 부위 제안 및 골격 가설이 올바르게 식별된 신체 부위일 가능성이 더 높다. 이들 비용 함수의 일부는 처음에 상위 레벨에서 여러 골격 가설을 제거하도록 수행될 수 있다는 점에서 상위 레벨이다. 본 시스템에 따르는 이런 테스트는 특정 골격 가설이 운동학적으로(kinematically) 유효한지(즉, 가능한지) 여부를 포함한다. 본 시스템에 따르는 다른 상위 레벨 테스트는 골격 가설에서 하나 이상의 관절의 회전이 예상 신체 부위에 대한 관절 회전 한계를 넘었는지를 테스트하는 관절 회전 테스트를 포함한다.
다른 비용 함수들은 좀 더 하위 레벨이며, 모든 골격 가설에서 골격 가설 내의 각각의 신체 부위 제안에 대해 실행된다. 본 시스템에 따르는 이런 비용 함수의 하나로 하나 이상의 신체 부위 제안 내의 추적(trace) 샘플들 및 하나 이상의 신체 부위 제안 밖의 돌출(saliency) 샘플들의 깊이 값을 검사하는 추적 및 돌출 테스트가 있다. 예상한 대로의 깊이 값을 가지고 있는 샘플들은 이런 테스트에서 더 높은 점수를 기록한다. 본 시스템에 따르는 추가적인 비용 함수로 (손과 같은) 신체 부위가 움직이고 있는지를 판단하는 테스트를 하는 화소 모션 탐지 테스트(pixel motion detection test)가 있다. 가설의 핵심 영역에서 x, y 및/또는 z 방향으로 탐지된 화소 모션은 가설의 점수를 증가시킬 수 있다.
또한, 골격 분석 시스템과 함께, 극히 견고하게 정밀한 손 위치를 생성하는 손 정밀화 기법(hand refinement technique)가 설명된다.
본 기술의 추가적인 실시예에서, 시야를 더 작은 영역으로 세그먼트화하여 한 번에 하나의 영역에 초점을 둠으로써 추가적인 처리 효율성을 얻을 수 있다. 또한, 각각의 영역은, 영역마다 인식되고 달라지는 자체적인 사전 정의된 제스처 집합을 가지고 있을 수 있다. 이로 인해 영역 내의 충돌하는 제스처들을 수신하고 처리할 가능성을 배제하여, 더욱 단순화하고 처리 속도(processing rate)를 높이게 된다.
일례로, 본 기술은 제스처 인식 방법에 관한 것으로, 이 방법은 a) 장면의 사용자로부터 위치 정보를 수신하는 단계 - 사용자는 제 1 신체 부위 및 제 2 신체 부위를 가지고 있음 -, b) 제 1 신체 부위로부터의 제스처를 인식하는 단계, c) 제 2 신체 부위에서 취하는 제스처를 무시하는 단계, 및 d) 단계 b)에서 인식된 제 1 신체 부위의 제스처와 관련된 동작을 수행하는 단계를 포함한다.
다른 예시로, 본 기술은 사용자의 신체 부위를 인식하고 트래킹하는 방법에 관한 것으로, 이 방법은 a) 장면의 사용자로부터 위치 정보를 수신하는 단계, b) 단계 a)에서 수신된 자세 정보로부터 사용자의 제 1 관절 그룹을 식별하는 단계, c) 사용자의 제 2 관절 그룹을 무시하는 단계, d) 제 1 관절 그룹의 관절들의 위치를 식별하는 단계, 및 e) 단계 d)에서 식별된 관절들의 위치에 기반하여 동작을 수행하는 단계를 포함한다.
본 기술의 다른 예시는 적어도 하나의 움직이지 못하는 신체 부위를 최소한 제한적으로 사용하는 사용자의 신체 부위를 인식 및 트래킹하는 방법을 실행하도록 프로세서를 프로그래밍할 수 있는 컴퓨터-판독가능 저장 매체에 관한 것이다. 이 방법은 a) 사용자로부터 적어도 하나의 움직이지 못하는 신체 부위의 종류(identity)에 대한 알림을 수신하는 단계, b) 사용자의 제 1 관절 그룹을 식별하는 단계 - 관절들은 적어도 하나의 움직이지 못하는 신체 부위에 포함되지 않음 -, c) 제 1 관절 그룹에서 관절들의 위치를 식별하는 단계, 및 d) 단계 c)에서 식별된 관절들의 위치에 기반하여 동작을 수행하는 단계를 포함한다.
본 요약은 아래의 상세한 설명에서 추가적으로 설명되는 일련의 컨셉을 간략화된 형태로 소개하기 위한 것이다. 본 요약은 특허청구된 대상의 핵심적인 특징 또는 필수적인 특징을 밝히기 위한 것이 아니며, 특허청구된 대상의 범위를 결정하는 데 일조하기 위해 사용되는 것도 아니다. 또한 특허청구된 대상은 본 내용에서 언급된 임의의 또는 모든 단점들을 해결하는 구현에 한정되지 않는다
도 1a는 타겟 인식, 분석 및 트래킹 시스템의 예시적인 실시예를 도시한다.
도 1b는 타겟 인식, 분석 및 트래킹 시스템의 예시적인 추가 실시예를 도시한다.
도 1c는 타겟 인식, 분석 및 트래킹 시스템의 예시적인 추가 실시예를 도시한다.
도 2는 타겟 인식, 분석 및 트래킹 시스템에서 사용될 수 있는 캡쳐 장치의 예시적인 실시예를 도시한다.
도 3은 본 기술의 실시예에 따른 내츄럴 사용자 인터페이스를 통해 상체의 관절들을 모델링하고 트래킹하는 시스템의 상위 레벨 순서도이다.
도 4a 및 4b는 본 기술의 실시예에 따른 내츄럴 사용자 인터페이스를 통해 상체의 관절들을 모델링하고 트래킹하는 시스템의 상세한 순서도이다.
도 5a 및 5b는 본 기술의 실시예에 따른 내츄럴 사용자 인터페이스를 통해 상체의 관절들을 모델링하고 트래킹하기 위해 머리 및 어깨 삼각형(triangle)을 생성하는 도 4a의 단계(308)의 순서도이다.
도 6은 도 5a 및 5b에서 생성된 머리 및 어깨 삼각형의 점수를 매기는 데 사용되는 인자들을 도시하는 도 5a의 단계(368)의 순서도이다.
도 7은 도 4a 및 4b에서 손의 위치를 평가하는 데 사용되는 점수 인자들을 도시하는 도 4a의 단계(312)의 순서도이다.
도 8은 도 4a 및 4b에서 팔꿈치의 위치를 평가하는 데 사용되는 점수 인자들을 도시하는 도 4a의 단계(318)의 순서도이다.
도 9는 본 기술의 실시예에서 생성되는 사용자 및 머리 삼각형을 도시한다.
도 10은 사용자, 및 머리와 어깨에 대한 추적 및 돌출 샘플링 포인트를 도시한다.
도 11은 사용자, 및 사용자의 위팔(upper arm), 아래팔(lower arm) 및 손에 대한 추적 및 돌출 샘플링 포인트를 도시한다.
도 12는 사용자의 머리, 어깨, 팔꿈치, 손목 및 손에 대해 본 기술에 따라 반환된 골격 관절 위치를 도시한다.
도 13a 및 13b는 본 기술의 실시예에 따른 시야 내의 샘플링 화소의 영역-기반 시스템(zone-based system)의 실시예를 도시한다.
도 14는 제스처를 인식하기 위한 제스처 인식 엔진을 도시하는 블록도이다.
도 15는 도 14의 제스처 인식 엔진의 동작에 관한 순서도이다.
도 16은 사용자의 현실 세계 손의 움직임 및 제스처를 통해 온스크린 아바타의 다리 움직임을 사용자가 제어하기 위한 방법의 순서도이다.
도 17a는 타겟 인식, 분석 및 트래킹 시스템에서 하나 이상의 제스처를 해석하는 데 사용될 수 있는 컴퓨팅 환경의 예시적인 실시예를 도시한다.
도 17b는 타겟 인식, 분석 및 트래킹 시스템에서 하나 이상의 제스처를 해석하는 데 사용될 수 있는 컴퓨팅 환경의 다른 예시적인 실시예를 도시한다.
이제 도 1a-17b를 참조하여 본 기술의 실시예들이 설명될 것이며, 이는 일반적으로 NUI 시스템으로 사용자의 골격 관절을 인식 및 트래킹하는 시스템 및 방법, 실시예에서, 예컨대, 사용자의 상체와 같이 일부 골격 관절만을 인식 및 트래킹하는 시스템 및 방법에 관한 것이다. 상기 시스템은 이미지 캡쳐 장치로부터 시야(field of view, FOV)의 프레임 데이터를 수신하는 팔다리 식별 엔진을 포함할 수 있다. 일반적으로, 팔다리 식별 엔진의 실시예는 다수의 후보 신체 부위 위치를 식별하는 신체 부위 제안 시스템, 및 후보 신체 부위들을 전체 또는 부분 골격으로 맞추는 골격 분석 시스템을 포함한다.
신체 부위 제안 시스템은 본보기 및 중심 생성 방법을 사용하여 관련 신뢰도(confidence level)로 FOV 내의 신체 부위들을 식별할 수 있다. 이 시스템은 또한, 이전 프레임에서 그 위치가 알려진 신체 부위들을 새로운 프레임에 대한 이미지 데이터의 근처 특징들로 포착함으로써 그 부위들의 새로운 위치를 추정하는 마그네티즘을 이용할 수 있다. 본보기 및 중심 생성 방법은 "Multiple Centroid Condensation of Probability Distribution Clouds"라는 발명의 명칭의 미국 특허 출원 제 12/770,394호에서 보다 상세하게 설명되어 있고, 이 출원은 그 전체가 참조로서 본원에 통합된다. 그러나, 본보기 및 중심 생성 방법은 단지 후보 신체 부위를 식별하기 위해 사용 가능한 하나의 방법에 불과함을 이해할 것이다. 본보기 및/또는 중심을 대신하여 또는 이에 추가하여, 이미지를 분석하여 (확률이 있거나 없거나) 다양한 신체 부위에 대한 각종 후보 관절 위치를 출력할 수 있는 다른 알고리즘들이 사용될 수도 있다.
본보기 및 중심 생성 기법이 사용되는 경우, 이들 기법은 후보 신체 부위 위치를 식별한다. 식별된 위치는 맞거나 틀릴 수 있다. 본 시스템의 하나의 목표는 후보 신체 부위 위치들을 사람들이 장면 안의 어디에 있는지, 그리고 그들이 어떤 자세를 취하는지를 일관된 형태로 함께 융합시키는 것이다. 실시예에서, 이런 목적을 위해 팔다리 식별 엔진은 골격 분석 시스템을 더 포함할 수 있다.
실시예에서, 골격 분석 시스템은 캡쳐된 데이터의 각각의 프레임에 대해 머리, 어깨, 팔꿈치, 손목 및 손과 같은 상체 관절을 식별할 수 있다. 이런 실시예에서, 팔다리 식별 엔진은 사용자의 어깨 및 머리에 대응하는 중심 그룹핑(grouping)을 식별하기 위해 본보기 및 각종 채점 서브루틴(scoring subroutine)을 이용할 수 있다. 이 중심 그룹핑은 본원에서 머리 삼각형이라고 한다. 마그네티즘, 본보기로부터의 중심들, 또는 기타 컴포넌트를 포함하는 그러나 이에 제한되지는 않는 각종 소스로부터의 손 제안들을 사용하여, 팔다리 식별 엔진의 골격 분석 시스템은 FOV 내에서 사용자들의 손의 가능한 손위치 또는 손 제안들을 식별할 수 있다. 이후에 골격 분석 시스템은 각각의 손 제안에 대해 여러 팔꿈치 위치를 평가할 수 있다. 이런 동작을 통해, 팔다리 식별 엔진의 골격 분석 시스템은 각각의 프레임에서 각각의 플레이어에 대한 머리, 어깨 및 팔 위치를 식별할 수 있다.
사용자 신체 관절의 일부에만 초점을 둠으로써, 본 시스템은 모든 신체 관절을 측정하는 시스템보다 더 효율적으로 이미지 데이터를 처리할 수 있다. 처리 효율성을 더욱 촉진하기 위해, 이미지 데이터를 캡쳐하는 캡쳐 장치는 시야를 작은 영역들로 세그먼트화할 수 있다. 이런 실시예에서, 캡쳐 장치는 오직 하나의 영역에만 초점을 두거나, 또는 연속되는 프레임들 안에서 그 작은 영역들을 순환할 수 있다. 선택된 관절 또는 영역에 초점을 두는 것은 처리 효율성 이외에도 다른 이점이 있을 수 있다. 또한, 특정 집합의 관절 또는 영역에 초점을 둠으로써 충돌하는 제스처를 수신하고 처리할 가능성을 배제할 수 있다.
선택된 관절들의 관절 위치가 출력되면, 이 정보는 다양한 목적으로 사용될 수 있다. (캡쳐된 신체 부위에서 취한 제스처에 관한) 제스처 인식은 물론, NUI 애플리케이션에서 프리젠테이션하는 가상 객체들과의 인터랙션을 위해 사용될 수도 있다. 사용자가 자신의 다리를 사용하지 않는 다른 실시예에서, 사용자는 사용자의 손의 움직임이 온스크린 캐릭터의 다리의 움직임을 제어하는 이미지 데이터로 해석되는 "다리 제어 모드"로 NUI 애플리케이션과 인터랙션할 수 있다. 이들 실시예는 이하에서 보다 상세하게 설명된다.
처음에 도 1a-2를 참조하면, 본 기술을 구현하기 위한 하드웨어는 사용자(18)와 같은 사람 타겟을 인식, 분석 및/또는 트래킹하는 데 사용 가능한 타겟 인식, 분석 및 트래킹 시스템(10)을 포함한다. 타겟 인식, 분석 및 트래킹 시스템(10)의 실시예로 이하에서 설명되는 바와 같은 게임 또는 기타 애플리케이션을 실행하는 컴퓨팅 환경(12)이 포함된다. 컴퓨팅 환경(12)은 게임 및/또는 비-게임 애플리케이션을 실행하는 데 사용될 수 있도록 하드웨어 컴포넌트 및/또는 소프트웨어 컴포넌트를 포함할 수 있다. 일 실시예에서, 컴퓨팅 환경(12)은 본원에 설명된 프로세스를 실행하기 위한 프로세서 판독가능 저장 장치에 저장된 인스트럭션을 실행 가능한 표준화된 프로세서, 특화된 프로세서, 마이크로 프로세서 등을 비롯한 프로세서를 포함할 수 있다.
또한 시스템(10)은 캡쳐 장치에 의해 감지된 하나 이상의 사용자 및/또는 객체에 관한 이미지 및 오디오 데이터를 캡쳐할 수 있는 캡쳐 장치(20)를 포함한다. 실시예에서, 캡쳐 장치(20)는 한 명 이상의 사용자의 부분 또는 전체 몸 움직임, 제스처 및 음성과 관련된 정보를 캡쳐하기 위해 사용될 수 있고, 이 정보는 컴퓨팅 환경에서 수신되어 게임 또는 기타 애플리케이션의 양태들을 렌더링, 인터랙션 및/또는 제어하는 데 사용된다. 컴퓨팅 환경(12) 및 캡쳐 장치(20)의 예시들이 이하에서 보다 상세하게 설명된다.
타겟 인식, 분석 및 트래킹 시스템(10)의 실시예들이 디스플레이(14)가 있는 오디오/비주얼(A/V) 장치(16)에 연결될 수 있다. 이 장치(16)는 예를 들어, 사용자에게 게임 또는 애플리케이션 비주얼 및/또는 오디오를 제공하는 텔레비전, 모니터, HDTV(high-definition television) 등일 수 있다. 예를 들어, 컴퓨팅 환경(12)은 게임 또는 기타 애플리케이션에 관련된 오디오/비주얼 신호를 제공할 수 있는 그래픽 카드 등의 비디오 어댑터 및/또는 사운드 카드 등의 오디오 어댑터를 포함할 수 있다. A/V 장치(16)는 컴퓨팅 환경(12)으로부터 오디오/비주얼 신호를 수신하여, 이 오디오/비주얼 신호와 관련된 게임 또는 애플리케이션의 비주얼 및/또는 오디오를 사용자(18)에게 제공할 수 있다. 일 실시예에 따르면, 오디오/비주얼 장치(16)는 예를 들어, S-Video 케이블, 동축 케이블, HDMI 케이블, DVI 케이블, VGA 케이블, 컴포넌트 비디오 케이블 등을 통해 컴퓨팅 환경(12)에 연결될 수 있다.
실시예에서, 컴퓨팅 환경(12), A/V 장치(16) 및 캡쳐 장치(20)는 협력하여 디스플레이(14) 상에 아바타 또는 온스크린 캐릭터(19)를 렌더링할 수 있다. 실시예에서, 사용자(18)가 디스플레이(14) 상의 아바타(19)의 움직임 및 동작들을 제어하는 움직임 및 제스처를 취할 수 있게끔 아바타(19)는 현실 세계에서의 사용자(18)의 움직임을 흉내낸다. 이하에서 설명되는 바와 같이, 본 기술의 일 양태에 따라 사용자는 온스크린 아바타(19)의 다른 팔다리, 예컨대, 다리의 움직임을 제어하기 위해, 하나의 팔다리 집합 예컨대, 팔들을 움직일 수 있다.
도 1a에서, 예컨대, 사용자(18)가 디스플레이(14) 상에 프리젠테이션되는 각종 메뉴 옵션을 갖고 있는 사용자 인터페이스(21)를 통해 스크롤링(scrolling)하고 이 사용자 인터페이스(21)를 제어하고 있는 NUI 시스템에서 캡쳐 장치(20)가 사용된다. 도 1a에서, 컴퓨팅 환경(12) 및 캡쳐 장치(20)를 사용하여 사용자의 상체의 움직임 및 제스처를 인식 및 분석할 수 있고, 이런 움직임 및 제스처는 사용자 인터페이스에 대한 제어로서 해석될 수 있다. 이와 같은 실시예에서, 이하에서 설명되는 바와 같이 오직 사용자의 상체만이 움직임에 대해 트래킹될 수 있다.
도 1b는 사용자(18)가 의자(23)에 앉아서 테니스 게임 애플리케이션을 플레이하고 있는 다른 실시예를 도시한다. 도 1b는 유사한 실시예를 도시하지만, 본 예시에서, 사용자는 장애가 있어 자신의 팔다리를 모두 사용하지는 못할 수도 있다. 도 1c에서, 사용자는 다리를 못 쓰고 휠체어에 앉아 있다. 도 1b 및 1c에서, 컴퓨팅 환경(12) 및 캡쳐 장치(20)를 사용하여 사용자의 상체의 움직임 및 제스처를 인식 및 분석할 수 있고, 이런 움직임 및 제스처는 게임 공간에서 게임 제어 또는 아바타(19)의 동작에 영향을 주는 동작으로 해석될 수 있다.
도 1a-1c의 실시예는 컴퓨팅 환경(12)에서 실행될 수 있는 많은 다른 애플리케이션들 중 두 개에 불과하며, 컴퓨팅 환경(12)에서 실행되는 애플리케이션은 여러 다른 게임 및 비게임 애플리케이션일 수 있다.
도 1a-1c는 의자나 식물과 같은 동적인 배경 객체들(23)을 포함한다. 이들은 장면(즉, 캡쳐 장치(20)에서 캡쳐된 부분) 내의 객체들이며, 프레임마다 바뀌지 않는다. 도시된 의자 및 식물에 더해, 정적 객체들은 캡쳐 장치(20)의 이미지 카메라에 의해 얻어진 임의의 객체들일 수 있다. 장면 내의 추가적인 정적 객체들로 벽, 바닥, 천장, 창문, 문, 벽 장식 등을 포함할 수 있다.
시스템(10) 및 그 컴포넌트들의 적절한 예시들은 다음의 동시 계류 중인 특허 출원들: "Environment And/Or Target Segmentation"이라는 발명의 명칭으로 2009년 5월 29일에 출원된 미국 특허 출원 제 12/475,094호, "Auto Generating a Visual Representation"이라는 발명의 명칭으로 2009년 7월 29일에 출원된 미국 특허 출원 제 12/511,850호, "Gesture Tool"이라는 발명의 명칭으로 2009년 5월 29일에 출원된 미국 특허 출원 제 12/474,655호, "Pose Tracking Pipeline"이라는 발명의 명칭으로 2009년 10월 21일에 출원된 미국 특허 출원 제 12/603,437호, "Device for Identifying and Tracking Multiple Humans Over Time"이라는 발명의 명칭으로 2009년 5월 29일에 출원된 미국 특허 출원 제 12/475,308호, "Human Tracking System"이라는 발명의 명칭으로 2009년 10월 7일에 출원된 미국 특허 출원 제 12/575,388호, "Gesture Recognizer System Architecture"라는 발명의 명칭으로 2009년 4월 13일에 출원된 미국 특허 출원 제 12/422,661호, "Standard Gestures"라는 발명의 명칭으로 2009년 2월 23일에 출원된 미국 특허 출원 제 12/391,150호, "Gesture Tool"이라는 발명의 명칭으로 2009년 5월 29일에 출원된 미국 특허 출원 제 12/474,655호에서 발견되며, 이들 모두는 특히 참조로서 본원에 통합된다.
도 2는 타겟 인식, 분석 및 트래킹 시스템(10)에서 사용 가능한 캡쳐 장치(20)의 예시적인 실시예를 도시한다. 예시적인 실시예에서, 캡쳐 장치(20)는 TOF(time-of-flight), 구조광(structured light), 스테레오 이미지 등을 포함하는 적절한 임의 기술을 통해, 깊이 값을 포함하는 깊이 이미지 등 깊이 정보가 있는 비디오를 캡쳐하도록 구성될 수 있다. 일 실시예에 따르면, 캡쳐 장치(20)는 "Z 레이어들", 또는 깊이 카메라로부터 시선을 따라 연장되는 Z 축에 수직인 레이어들로 깊이 정보를 체계화시킬 수 있다. X 및 Y 축은 Z 축에 직각인 것으로 정의될 수 있다. Y 축은 수직이고, X 축은 수평일 수 있다. 함께, X, Y 및 Z 축은 캡쳐 장치(20)에서 캡쳐되는 3-D 현실 세계 공간을 정의한다.
도 2에 도시된 바와 같이, 캡쳐 장치(20)는 이미지 카메라 컴포넌트(22)를 포함할 수 있다. 일 실시예에 따르면, 이미지 카메라 컴포넌트(22)는 장면의 깊이 이미지를 캡쳐하는 깊이 카메라일 수 있다. 깊이 이미지는 캡쳐된 장면의 2-D(two-dimensional) 화소 영역을 포함할 수 있고, 2-D 화소 영역의 각 화소는 카메라로부터 캡쳐된 장면에서 사물의 길이 또는 거리 등의 깊이 값을 센티미터, 밀리미터 등으로 나타낼 수 있다.
도 2에 도시된 바와 같이, 예시적인 실시예에 따르면, 이미지 카메라 컴포넌트(22)는 장면의 깊이 이미지를 캡쳐하기 위해 사용되는 적외선 컴포넌트(IR light component, 24), 3-D(three-dimensional) 카메라(26) 및 RGB 카메라(28)를 포함할 수 있다. 예를 들면, TOF 분석법에서는, 캡쳐 장치(20)의 적외선 컴포넌트(24)가 장면으로 적외선을 내보내고, 센서들(도시되지 않음)을 사용하여 3-D 카메라(26) 및/또는 RGB 카메라(28)를 사용한 장면의 하나 이상의 타겟 및 사물들의 표면으로부터 후방 산란되는 빛을 검출한다.
몇몇 실시예에서는, 펄스 적외선(pulsed infrared light)을 사용하여, 나가는 광 펄스와 이에 대응하여 들어오는 광 펄스 간의 시간을 측정하고, 이를 사용하여 캡쳐 장치(20)로부터 장면의 타겟 또는 사물들의 특정 지점까지의 물리적인 거리를 결정할 수 있다. 또한, 또 다른 실시예에서는, 나가는 광파의 위상과 들어오는 광파의 위상을 비교하여 위상 변위(phase shift)를 결정할 수 있다. 이후, 이 위상 변위를 사용하여 캡쳐 장치(20)로부터 타겟 또는 사물의 특정 지점까지의 물리적인 거리를 결정할 수 있다.
다른 실시예에 따르면, TOF 분석법을 사용하여 셔터 광 펄스 이미징(shuttered light pulse imaging)을 포함하는 다양한 기술을 통해 시간에 따른 반사광의 강도를 분석함으로써 캡쳐 장치(20)로부터 타겟 또는 사물의 특정 지점까지의 물리적인 거리를 간접적으로 결정할 수 있다.
또 다른 실시예에서, 캡쳐 장치(20)는 구조광을 사용하여 깊이 정보를 캡쳐할 수 있다. 이러한 분석법에서는, 패턴화된 광(즉, 그리드 패턴이나 스트라이프 패턴과 같이 공지된 패턴으로 디스플레이되는 광)이 적외선 컴포넌트(24)를 통해 장면에 투사될 수 있다. 그 장면의 하나 이상의 타겟 또는 사물의 표면에 부딪치면, 패턴이 그에 따라 변형되게 된다. 이러한 패턴의 변형이 예컨대, 3-D 카메라(26) 및/또는 RGB 카메라(28)에 의해 캡쳐된 후에 분석되어, 캡쳐 장치(20)로부터 타겟 또는 사물의 특정 지점까지의 물리적인 거리를 결정할 수 있다.
또 다른 실시예에 따르면, 캡쳐 장치(20)는, 깊이 정보의 생성을 위해 분석되는 비주얼 스테레오 데이터를 얻기 위해 각기 다른 각도에서 장면을 볼 수 있는 물리적으로 분리된 둘 이상의 카메라들을 포함할 수 있다. 또 다른 실시예에서, 캡쳐 장치(20)는 포인트 클라우드 데이터(point cloud data) 및 타겟 디지털화 기법을 사용하여 사용자의 특징들을 탐지할 수 있다.
캡쳐 장치(20)는 마이크로폰(30)을 더 포함할 수 있다. 마이크로폰(30)은 소리를 수신하여 이를 전기 신호로 변환하는 변환기(transducer) 또는 센서를 포함할 수 있다. 일 실시예에 따르면, 마이크로폰(30)은 타겟 인식, 분석 및 트래킹 시스템(10)의 캡쳐 장치(20)와 컴퓨팅 환경(12) 사이의 피드백을 감소시키기 위해 사용될 수 있다. 게다가, 컴퓨팅 환경(12)에서 실행 가능한 게임 애플리케이션, 비게임 애플리케이션 등의 애플리케이션들을 제어하기 위해 사용자로부터 제공되는 오디오 신호를 수신하기 위해 마이크로폰(30)이 사용될 수 있다.
일 실시예에서, 캡쳐 장치(20)는 이미지 카메라 컴포넌트(22)와 통신 가능한 논리 프로세서(32)를 더 포함할 수 있다. 프로세서(32)는 깊이 이미지를 수신하고, 그 깊이 이미지에 적절한 타겟의 포함 여부를 결정하고, 적절한 타겟을 타겟의 골격 형상 또는 모델로 변환하는 인스트럭션을 포함하는 인스트럭션들 또는 기타 임의의 적절한 인스트럭션을 실행하는 표준화된 프로세서, 특화된 프로세서, 마이크로 프로세서를 포함할 수 있다.
캡쳐 장치(20)는, 프로세서(32)로 실행 가능한 인스트럭션, 3-D 카메라 또는 RGB 카메라로 캡쳐된 이미지 또는 이미지 프레임, 또는 기타 임의의 적절한 정보, 이미지 등을 저장하는 메모리 컴포넌트(34)를 더 포함할 수 있다. 일 실시예에 따르면, 메모리 컴포넌트(34)는 RAM(random access memory), ROM(read only memory), 캐시(cache), 플래시 메모리, 하드 디스크 또는 기타 적절한 저장 컴포넌트를 포함한다. 도 2에 도시된 바와 같이, 일 실시예에서, 메모리 컴포넌트(34)는 이미지 카메라 컴포넌트(22) 및 프로세서(32)와 통신하는 별개의 컴포넌트일 수 있다. 또 다른 실시예에 따르면, 메모리 컴포넌트(34)가 프로세서(32) 및/또는 이미지 카메라 컴포넌트(22)에 통합될 수도 있다.
도 2에 도시된 바와 같이, 캡쳐 장치(20)는 통신 링크(36)를 통해 컴퓨팅 환경(12)과 통신할 수 있다. 통신 링크(36)는 USB 연결, 파이어와이어(Firewire) 연결, 이더넷 케이블 연결 등을 포함하는 유선 연결 및/또는 무선 802.11b, g, a 또는 n 연결 등의 무선 연결일 수 있다. 일 실시예에 따르면, 컴퓨팅 환경(12)은 장면을 언제 캡쳐할 지를 결정하는 데에 사용되는 클럭을 통신 링크(36)를 통해 캡쳐 장치(20)로 제공할 수 있다.
또한, 캡쳐 장치(20)는 예를 들어, 3-D 카메라(26) 및/또는 RGB 카메라(28)에서 캡쳐되는 깊이 정보 및 이미지들을 제공할 수 있다. 이들 장치를 사용하여, 통신 링크(26)를 통해 컴퓨팅 환경(12)에 제공된 결과 데이터로 본 기술에 따른 부분 골격 모델이 개발될 수 있다.
컴퓨팅 환경(12)은 또한 후보 신체 부위 위치를 제안하는 신체 부위 제안 시스템(194), 및 후보 신체 부위들을 전체 또는 부분 골격으로 맞추는 골격 분석 시스템(196)을 갖고 있는 팔다리 식별 엔진(192)을 포함할 수 있다. 신체 부위 제안 시스템(194) 및 골격 분석 시스템(196)을 포함하는 팔다리 식별 엔진(192)은 다른 실시예에서는 캡쳐 장치(20) 내에서 부분적으로 또는 전적으로 실행될 수 있다. 신체 부위 제안 시스템(194) 및 골격 분석 시스템(196)을 포함하는 팔다리 식별 엔진(192)의 추가적인 세부 사항은 이하에서 기술된다.
이제 도 3의 상위 레벨 순서도를 참조하여 본 기술의 실시예의 동작이 설명될 것이다. 단계(280)에서, 시스템(10)이 시작된다. 단계(282)에서, 캡쳐 장치(20)가 이미지 데이터를 캡쳐한다. 단계(286)에서, 신체 부위 제안 시스템(194)이 후보 신체 부위 위치들을 제안한다. 몇몇 가능한 실시예 중 하나로, 신체 부위 제안 시스템은 본보기를 실행하고, 중심들을 생성한다. 본보기 및 중심 생성은 이미지 내의 특정 신체 부위의 적절한 식별을 위해서 이차원 깊이 텍스처 이미지를 수신하여 확률을 생성하기 위한 공지된 기법이다. 실시예에서, 이하에서 설명되는 바와 같이 사용자의 머리, 어깨, 팔꿈치, 손목 및 손에 대한 중심이 생성된다. 그러나, 다른 실시예에서는 하체 부위 관절, 몸 전체, 또는 선택된 관절들에 대해 중심이 생성될 수 있음을 이해할 것이다. 다시 말하지만, 본보기 및 중심 생성은 단지 이미지의 신체 부위를 식별하기 위한 일례에 불과하며, 이런 목적을 위해 매우 다양한 다른 방법들이 사용될 수도 있음을 이해할 것이다. 다른 상태 비보존형 기법이 사용될 수도 있다. 다른 실시예에서, 예컨대, 마그네티즘을 포함하는 상태 보존형 기법이 이하에서 설명되는 바와 같이 추가적으로 사용될 수 있다.
신체 부위 제안 시스템 단계(286)는 캡쳐 장치(20) 또는 컴퓨팅 환경(12)의 그래픽 처리 장치(GPU)에 의해 실행될 수 있다. 다른 실시예에서, 이 단계의 일부는 컴퓨팅 환경(12)을 위해 캡쳐 장치(20)의 중앙 처리 장치(CPU)에 의해 실행되거나, 또는 전용 하드웨어에 의해 실행될 수 있다.
단계(292)에서, 골격 분석 시스템(196)은 이하에서 설명되는 바와 같이 상체의 관절들을 식별 및 트래킹할 수 있다. 단계(296)에서, 골격 분석 시스템(196)은 컴퓨팅 환경(12) 또는 컴퓨팅 환경(12)에서 실행되고 있는 애플리케이션의 제어 시에 사용하기 위해 식별된 팔다리 위치를 반환한다. 실시예에서, 팔다리 식별 엔진(192)의 골격 분석 시스템(196)은 사용자의 머리, 어깨, 팔꿈치, 손목 및 손에 대한 정보를 반환할 수 있다. 다른 실시예에서, 반환된 정보는 그 관절들의 일부, 하체 또는 몸의 왼쪽 또는 오른쪽으로부터의 관절과 같은 추가 관절들, 또는 모든 신체 관절을 포함할 수 있다.
이제 도 4a 및 4b의 순서도를 참조하여 팔다리 식별 엔진(192)의 신체 부위 제안 시스템(194) 및 골격 분석 시스템(196)의 보다 상세한 설명이 설명될 것이다. 일반적으로, 팔다리 식별 엔진(192)이 머리, 어깨, 팔다리는 물론, 다른 실시예에서는 가능한 다른 신체 부위도 식별한다. 엔진(192)은 중심들(또는 다른 신체 부위 제안 시스템으로부터의 후보 신체 부위 위치들) 및 깊이 지도 데이터(depth map data)를 사용하여, 대응되는 신뢰도와 함께 플레이어 관절 위치를 반환한다. 단계(304)에서, 캡쳐 장치(20)는 다음 프레임에 대한 FOV의 이미지 데이터를 캡쳐한다. 실시예에서, 프레임 속도는 30Hz이지만, 다른 실시예에서 프레임 속도는 이보다 더 빠르거나 느릴 수 있다. 단계(308)에서, 팔다리 식별 엔진(192)은 먼저 머리 삼각형을 찾는다. 일반적으로, 후보 머리 삼각형은 이미지 데이터로부터의 본보기에 의해 식별된 머리 및 어깨 중심들의 그룹에서 두 어깨 중심들에 연결된 하나의 머리 중심으로부터 형성될 수 있다. 도 10은 후보 중심들(502, 504 및 506)로부터 형성된 머리 삼각형(500)의 일례를 도시한다. 머리 삼각형을 찾는 단계(308)에 대한 보다 상세한 설명이 도 5(a) 및 5(b)의 순서도를 참조하여 이제 설명된다.
일반적으로, 본보기는 사용자에게 강한 머리 및 어깨 신호를 제공하고, 이 신호는 하나의 머리 및 두 개의 어깨 중심들의 패턴이 함께 발견될 때 더욱 강해진다. 머리 중심들은 예컨대, 머리 마그네티즘 및 간단한 패턴 매칭을 포함하는, 본보기/중심과는 다른 많은 소스들로부터 올 수 있다. 단계(360)에서, 팔다리 식별 엔진(192)은 가장 최근 프레임에서 새로운 머리 및 어깨 중심들을 모은다. 새로운 머리 및 어깨 중심을 사용하여 이전 프레임에서 발견된 기존 또는 "오래된(aged)" 중심들을 업데이트한다. 시야 방해(occlusion)가 존재하여 각각의 프레임에 모든 중심들이 보이지는 않을 수 있다. 오래된 중심들은 특정 영역의 이전 처리에서 후보 신체 부위 위치에 대한 지식을 넘기는 데 사용된다. 단계(364)에서, 새로운 머리 및 어깨 중심들은, 오래된 중심들 근처에서 발견된 새로운 중심들이 그 기존의 오래된 중심들에 합쳐질 수 있으므로 오래된 중심들을 업데이트하는 데 사용된다. 단계(366)에서 오래된 중심 근처에 있지 않은 임의의 새로운 중심들은 새로운 오래된 중심들로서 추가된다. 오래된 중심들 및 새로운 중심들로 인해 다수의 후보 머리 삼각형들이 생길 수 있다.
단계(368)에서, 머리 삼각형들이 구성될 수 있다. 머리 및 어깨가 보이는 경우, 머리 삼각형은 전술한 소스들 중 하나 이상의 소스로부터 구성될 수 있다. 그러나, 예컨대, 어느 플레이어가 다른 플레이어 앞에 서 있는 경우와 같이, 사용자의 하나 이상의 관절이 가려질 수 있다. 하나 이상의 머리 또는 어깨 관절이 잠시 가려질 때, 그곳에는 (새로운 깊이 지도로부터의) 새로운 중심이 없을 수 있다. 결과적으로, 그 위치를 표시했던 오래된 중심이 업데이트되지 않을 수 있다. 그 결과, 그 오래된 중심은 둘 중의 하나가 될 것이다.
첫째, 오래된 중심은 (가려진 것이 사라지기를 기다리면서) 변하지 않은 위치로 지속될 수 있다. 둘째, 오래된 중심은 새로운 근처 위치로 잘못 이동할 수 있다(예컨대, 왼쪽 어깨는 가려졌지만, 카우치의 상부 왼쪽 모서리가 어깨처럼 보여서, 상당히 가까우므로, 오래된 중심이 그곳으로 이동함). 이런 경우들을 포함하기 위해, 삼각형의 하나 이상의 정점들에 대해 오래된 중심들을 무시하는 추가 후보 삼각형들이 구성될 수 있다. 세 관절 중 어느 것이 가려져 있는지는 알지 못하므로, 이하에서 설명되는 바와 같이 많은 가능한 삼각형들이 평가를 위해 제출될 수 있다.
경우에 따라서, 하나의 관절이 가려질 수 있다. 예를 들어, 왼쪽 어깨가 가려져 있지만 머리 및 오른쪽 어깨는 보일 수 있다(다시 말하지만, 가려진 것이 왼쪽 어깨인지는 아직 알지 못한다). 머리 및 오른쪽 어깨는 또한 예컨대, 평균 3 mm 오른쪽으로 이동했다. 이런 경우, 왼쪽 어깨 역시 (원래 있던 곳으로 드래그하거나 또는 새로운 장소로 잘못 이동시키지 않고) 3 mm 오른쪽으로 이동한 추가 후보 삼각형이 구성되어, 관절 중에 어느 하나가 얼마간 보이지 않더라도, 삼각형 모양이 (특히 시간이 지나도) 보존된다.
다른 예시로, 다른 플레이어의 손에 의해 머리가 가려지지만, 양쪽 어깨는 모두 보일 수 있다. 이 경우에, 어깨가 움직이면, 새로운 어깨 위치를 사용하여, 또한 어깨의 평균 이동과 동일한 만큼 머리도 이동하여, 추가 후보 삼각형이 생성될 수 있다.
경우에 따라서, 두 개의 관절이 가려질 수도 있다. 세 개의 관절 중 오직 하나만이 보이는 경우, 다른 두 관절은 전술한 바와 같이 "드래그"될 수 있다(즉, 보이는 하나의 관절과 동일한 방향 및 크기로 이동한다).
세 개의 관절 중 아무것도 보이지 않는 경우(세 개의 관절 모두가 가려진 경우), 제자리에 그대로 있는 여분의 후보 삼각형이 생성될 수 있다. 이는 한 명의 플레이어가 다른 플레이어 앞쪽에서 걸어서 뒤에 있는 플레이어를 전체적으로 가릴 때, 뒤에 있는 플레이어의 머리 삼각형이 버려지기 전에 얼마간 제자리에 떠 있도록 할 때 유용하다. 예를 들어, 삼각형은 8 초간 제자리에 있을 수 있고, 다른 실시예에서는 삼각형은 더 오래 또는 더 짧게 유지될 수도 있다. 반면, 그 시간이 다하기 전에 가려졌던 게 드러나면, 삼각형은 올바른 자리에 있게 되어 뒤에 있는 플레이어에게 바로 돌아올 수 있다. 이는, 플레이어의 신원은 유지되기 때문에, 때때로 뒤에 있는 플레이어를 '새로운' 플레이어로 재발견하는 것보다는 바람직하다.
머리 삼각형을 평가하기 위한 머리 삼각형 추적 및 돌출이라고 하는 채점 서브루틴이 이하에서 설명된다. 이 서브루틴은 이미지의 동일한 화소(X, Y)에서 깊이 값에 대한 샘플 포인트(그 예상 깊이 값, 또는 Z 값 포함)를 테스트하고, 삼각형이 대부분(또는 전체적으로) 가려질 때조차, 제안된 삼각형들 중에서 깊이 지도에 가장 잘 맞는 삼각형을 선택하도록 설계된다. 전술한 바와 같이 추가 삼각형들을 포함함으로써, 오래된 중심이 잠시 부정확하거나 누락된 때에도 올바른 삼각형을 제안할 수 있게 한다.
단계(369)에서, 머리 삼각형은 채점 서브루틴에 의해 평가될 수 있다. 단계(368)에서 팔다리 식별 엔진의 목표는 FOV에서 한 명 이상의 사용자의 머리 및 어깨의 사실상 정확한 지표인, 오래된 중심들의 머리 삼각형을 식별하는 것이다. 팔다리 식별 엔진(192)은 오래된 머리 중심과 오래된 왼쪽 및 오른쪽 어깨 중심을 연결함으로써 많은 삼각형을 생성하는 것으로 시작할 것이다. 이들 각각은 후보 머리 삼각형을 형성한다. 이들은 특정 사용자의 머리 및 어깨일 수도 또는 아닐 수도 있다. 이후에 이들 후보 머리 삼각형 각각은 여러 가지 채점 서브루틴을 실행함으로써 평가된다.
후보 머리 삼각형에 대해 채점 서브루틴이 실행되어 최적의(즉, 최고 득점인) 머리 삼각형을 식별한다. 이제 단계(368)에서 채점 서브루틴의 추가 세부 사항이 도 6의 순서도를 참조하여 보다 상세하게 설명된다. 단계(390)에서, 첫 번째 채점 서브루틴에서 후보 삼각형의 두 어깨 중심들 간의 거리가 왼쪽 및 오른쪽 어깨 사이의 최소 이격(separation) 거리 미만인지, 또는 최대 이격 거리를 초과하는지를 측정할 수 있다. 예를 들어, 사람은 대략 80 cm의 왼쪽 및 오른쪽 어깨 사이의 최대 어깨 너비를 가지고 있다고 알려져 있다. 본 시스템은 여기에 추가 버퍼를 더할 수 있다. 두 개의 후보 어깨 중심이 그 최대 거리를 초과하면, 그 후보 삼각형은 후보에서 제외된다.
다른 채점 서브루틴에서는 단계(394)에서 머리가 어깨들 사이의 선 위에서 최소 이격 거리 미만인지, 또는 최대 이격 거리를 초과하는지를 측정할 수 있다. 다시 말하지만, 이런 치수는 공지된 최대치 및 최소치를 가지고 있을 수 있다. 본 시스템은 여기에 추가 버퍼를 더할 수 있다. 후보 머리 삼각형이 그 최대치를 초과하거나 또는 최소치 미만인 경우, 그 후보는 배제될 수 있다.
단계(390 및 394)와 유사한 채점 루틴의 다른 예시들은 다음을 포함한다. 어깨-중심에서 머리-중심 벡터 방향: 어깨-중심에서 머리-중심까지의 벡터가 (아래 방향과 같이) 적합하지 않은 방향을 가리키면, 이로 인해 삼각형 점수에 벌점이 부과되거나, (심한 경우) 그 삼각형은 버려지게 된다. 왼쪽 및 오른쪽 어깨 사이의 벡터: 왼쪽 및 오른쪽 어깨 사이의 벡터가 (예상과 반대인) 적합하지 않은 방향을 가리키면, 이로 인해 삼각형 점수에 벌점이 부과되거나, (심한 경우) 그 삼각형은 버려지게 된다. 머리로부터 왼쪽/오른쪽 어깨까지의 거리의 차이: 머리로부터 양쪽 어깨까지의 두 거리가 심하게 다르면, 이로 인해 삼각형 점수에 벌점이 부과되거나, (심한 경우) 그 삼각형은 버려지게 된다. 오래된 중심들 간의 평균 거리: 세 개의 오래된 중심들(또는 다시 말하면, 머리 삼각형 모서리 길이)의 평균 거리가 아주 작거나 아주 크면, 이로 인해 삼각형 점수에 벌점이 부과되거나, (심한 경우) 그 삼각형은 버려지게 된다. 이와 같은 또는 상기의 서브루틴에서, 후보 삼각형이 서브루틴 점수 결과 버려지는 경우, 그 후보에 대한 추가적인 서브루틴 테스트를 실행할 필요가 없다. 다른 채점 서브루틴이 사용될 수도 있다.
후보 머리 삼각형의 점수를 매기는 중요한 채점 서브루틴으로 추적 및 돌출 단계(402 및 406)가 있다. 추적 단계(402)는 세 개의 선을 따라 추적 샘플들을 취하는 것에 관련되고, 각각은 후보 머리 삼각형의 어깨 사이의 선의 중심에서 시작하여 삼각형의 세 개의 끝부분 쪽으로 나간다. 예를 들어, 도 10은 사용자(18)의 머리 샘플 추적(510)을 도시한다. 추적 샘플들(510)을 따라 화소들이 측정되며, 깊이 값이 기대한 만큼이 아니면(즉, 이미지 카메라 컴포넌트(22)로부터의 깊이 데이터에서 표시한대로 3-D 현실 세계에서 사용자의 깊이를 나타냄) 후보 머리 삼각형은 벌점을 얻는다.
추적 샘플들의 상기의 예시는 관절 사이의 선을 따라 위치한 샘플들에 관한 것이지만, 추적 샘플들은 매우 다양한 사용자들의 신체 내에 속해야 하며 내부 공간을 균등하게 차지하고 있는 임의의 샘플들일 수 있다. 실시예에서, 샘플들은 사람의 최소 윤곽(minimum silhouette)을 채울 수 있다. 실시예에서, 이들 샘플의 배치는 후보 머리 삼각형의 오리엔테이션 또는 다른 후보 특징들에 따라 크게 바뀔 수 있다.
추적 샘플에서, (그 화면 X, Y 위치에서 예상 깊이 값과 실제 깊이 값이 유사한) 적절한 Z-매치는 보상을 얻고, 부적절한 Z-매치는 벌점을 얻는다. 매치의 근사도/미스매치의 심각도(severity)는 벌점량/보상량에 영향을 줄 수 있고, 양수 또는 음수 미스매치(positive vs. negative mismatches)는 다르게 점수가 매겨질 수 있다. 매치의 경우, 근사한 매치(close match)는 약한 매치보다 높은 점수를 얻을 것이다. 뚜렷한 미스매치는 차이의 부호에 따라 다르게 취급된다. 깊이 지도 샘플이 예상보다 먼 경우, 이는 '돌출' 샘플로 심한 벌점을 초래한다. 깊이 지도 샘플이 예상보다 가까우면, 이는 '시야 방해' 샘플로 양호한 벌점을 초래한다. 일부 실시예에서, 예상 Z 값은 후보 신체 부위 위치들의 깊이 사이에 간단히 보간된다(interpolated). 다른 실시예에서, 예상 Z 값은 목과 어깨에 비해, 턱 및 얼굴의 돌출과 같은 흔한 비-선형 체형을 보상하도록 조정된다. 골격의 다른 부위로 시작하는 다른 실시예에서, 예상 Z 값들의 유사한 보간 및 조정이 행해질 수 있다.
특정 후보 머리 삼각형의 세 개의 포인트 각각의 주변에서 좀 떨어져서 여러 돌출 샘플들(도 10의 512)을 정의함으로써 단계(406)의 돌출 서브루틴이 실행된다. 일부 실시예에서, 이들 샘플은 삼각형 점들 위에 호(arc) 형태를 취할 수 있다. 사용자의 체격이 달라짐에 따라, 어깨 주위에 형성된 돌출 샘플들(512)은, 가장 큰(즉, 부피가 가장 큰) 사용자의 어깨 밖에 위치하는 것을 확실히 하기 위해, 때때로 머리 삼각형의 크기 또는 다른 후보 특징에 비해, 충분히 큰 반경으로 형성되어야 한다. 아이들의 머리가 어른들의 머리보다 비례적으로 크다는 관찰에 기초하여, 이 크기 조정은 머리 주위의 샘플들의 반경에 대해서도 덜한 정도로 적용될 수 있다. 그럼에도 불구하고, 돌출 샘플들(512)은 사용자의 가능한 가장 큰 머리 바깥에 있도록 보장하기 위해 후보 삼각형의 머리 위치 주위에 떨어져서 위치한다. 고득점 후보 머리 삼각형의 경우, 추적 샘플들(510)과는 달리, 모든 돌출 샘플들(512)의 깊이 값이 사용자(18)보다 더 깊어야 한다(즉, Z 방향으로 멀리 떨어져야 한다).
돌출 샘플에서, 적절한 Z-매치는 보상을 얻고, 부적절한 Z-매치는 벌점을 얻으며, 양수 또는 음수 미스매치는 다르게 점수가 매겨질 수 있다. 깊이 지도 값이 예상 값 근처에 있으면, 이는 벌점을 초래한다. 깊이 지도 값이 예상보다 멀면, 이는 '돌출' 샘플로서 보상을 초래한다. 또한 깊이 지도 값이 예상보다 가까우면, 이는 '시야 방해' 샘플로 양호한 벌점을 초래한다.
단계(390에서 406)의 다양한 서브루틴의 점수가 합계되어 최고 득점 머리 삼각형을 제공한다. 이 합계에서 몇몇 채점 서브루틴은 다른 서브루틴보다 중요하게 작용할 수 있으며, 예컨대, 단계(402 및 406)의 추적 및 돌출 테스트가 있다. 다른 실시예에서 상이한 채점 서브루틴이 상이한 가중치를 가질 수 있음을 이해할 것이다. 또한, 후보 머리 삼각형이 FOV의 사용자들의 머리 및 어깨를 실제로 나타내고 있는지를 평가하기 위해, 도 6에 도시된 채점 서브루틴에 추가적으로 또는 이를 대신하여 다른 채점 서브루틴들이 사용될 수도 있다.
이제 도 5(a)로 되돌아와서, 최고 득점 후보 머리 삼각형이 식별되면, 이들 삼각형은 기존의 "활성화된", "비활성된" 및 "잠재적인" 사용자들에게 매핑된다. 특히, (의자 또는 마네킹이 아니라) 사람으로 확실하게 식별된 시야 내의 사용자들은 활성화된 또는 비활성된 사용자들로 분류된다. 시스템은 시간에 걸쳐 손의 움직임을 탐지함으로써 사람으로 보일 수 있는 잠재적인 사용자 및 객체를 구분하게 된다. 실시예에서, 특정 처리 제약으로, 본 시스템은 시야 내의 두 명의 사용자들의 손의 움직임(이하에서 설명됨)만을 트래킹할 수 있다. 이런 실시예에서, 사람-같은 손의 움직임을 통해 어떤 잠재적인 플레이어가 사람으로 먼저 확인되었는지와 같은 여러 기준에 기초하여 두 명의 활성화된 플레이어가 선택될 수 있다. 또는, 맞추어진 골격 데이터의 최종 소비자와 같은, 시스템의 다른 컴포넌트에 의해 (활성화된 및 비활성화된 플레이어들 집합 중에서) 활성화된 플레이어들이 선택될 수도 있다. 남아 있는 식별된 사용자들은 비활성화된 사용자들이다. 활성화된 사용자들의 손의 움직임이 트래킹되는 반면, 비활성화된 사용자들의 손의 움직임은 트래킹되지 않는다. 다른 실시예에서, 복수의 사용자 또는 모든 사용자들이 활성화된 것으로 간주되어 그들의 손의 움직임이 트래킹될 수도 있다.
팔다리 ID 엔진에 의한 처리 결과로서 시야 내에 이전에 식별되지 않은 새로운 사람을 포함하는 것으로 보이는 이미지를 깊이 카메라가 탐지했을 수도 있다. 이 경우에 탐지된 사용자는 잠재적인 사용자라고 한다. 사람이라고 확실하게 식별될 수 있을 때까지 잠재적인 사용자들의 손의 움직임이 다수의 프레임에서 트래킹될 수 있다. 이 시점에서, 잠재적인 사용자에서 활성화된 또는 비활성화된 사용자로 상태가 바뀌게 된다.
단계(370)에서, 각각의 활성화된 플레이어에 대해, 최고 후보 삼각형이 기존의 활성화된 플레이어들에 매핑된다. 활성화된 플레이어의 이전-프레임 머리 삼각형에 기초하여 삼각형들이 시야 내의 활성화된 플레이어에 매핑될 수 있고, 이는 이전 프레임에서의 크기 또는 위치에서 크게 변하지 않았을 것이다. 단계(372)에서, 두 명의 사용자는 동일한 프레임에서 동일한 공간을 실질적으로 차지할 수 없기 때문에, 단계(370)에서 매핑된 삼각형에 너무 가까이에 있는 후보 삼각형들은 후보에서 제거된다. 단계(373)에서, 추가적인 이전 프레임의 활성화된 플레이어들이 있는 경우 이 프로세스가 반복된다.
단계(370 및 372)는 특히 다음 단계들을 포함한다. 각각의 이전-프레임 플레이어에 대해, 각각의 후보 삼각형을 테스트한다. 그 후에, 삼각형 모양이 얼마나 많이 변했는지에 비례해 벌점을 부과한다. 다음으로, 삼각형(또는 그 정점)이 얼마나 멀리 움직였는지에 비례해 벌점을 부과한다(벌점은 선형이거나 비선형일 수 있다). 포인트들의 모션 예측(운동량(momentum))도 여기서 고려될 수 있다. 그리고 나서, 최고점을 갖는 삼각형을 취한다. 점수가 임계치보다 높으면, 그 삼각형을 이전-프레임 플레이어에게 배정하고 근처의 다른 모든 후보 삼각형들을 폐기한다. 다른 이전-프레임 플레이어 각각에 대해 이상의 내용을 반복한다. 다른 실시예에서, 이전 프레임의 활성화된 플레이어들의 삼각형에 후보 삼각형을 매치하기 위해 다른 채점 기준이 사용될 수도 있다.
단계(374)에서, 각각의 비활성화된 플레이어에 대해, 최고 후보 삼각형들이 기존 비활성화된 플레이어들에게 매핑된다. 비활성화된 플레이어의 이전-프레임 머리 삼각형에 기초하여, 시야 내에서 비활성화된 플레이어에게 삼각형들이 매핑될 수 있다. 단계(376)에서, 단계(374)에서 매핑된 삼각형에 너무 가깝게 있는 임의의 후보 삼각형들은 후보에서 제거된다. 추가적인 이전 프레임 비활성 플레이어들이 있는 경우, 단계(377)에서 프로세스가 반복된다. 단계들(374 및 376)의 추가적인 세부 사항은 이전 단락에서 설명된 것과 같다. 마찬가지로, 단계(378)에서, 각각의 잠재적인 플레이어에 대해, 최고 후보 삼각형들이 식별된 잠재적인 플레이어들에게 매핑된다. 잠재적인 플레이어의 이전-프레임 머리 삼각형(식별된 경우) 또는 잠재적인 플레이어 위치를 식별하는 다른 공지된 방법에 기초하여 시야 내에서 잠재적인 플레이어에게 삼각형들이 매핑될 수 있다. 단계(380)에서, 단계(378)에서 매핑된 삼각형에 너무 가깝게 있는 임의의 후보 삼각형들은 제거된다. 추가적인 이전 프레임 잠재 플레이어들이 있는 경우, 단계(381)에서 프로세스가 반복된다. 단계들(378 및 380)의 추가적인 세부 사항은 이전 단락에서 설명된 것과 같다.
단계(382)(도 5(b))에서, 팔다리 식별 엔진(192)은 사용자에게 매핑되지 않았거나 폐기되지 않고 남아 있는 적절한 후보 삼각형이 있는지를 확인한다. 있다면, 남아 있는 이 적절한 후보 삼각형들은 시야로 들어오는 새로운 사용자에게 속한 것으로 해석될 수 있다. 이 경우에, 남아 있는 머리 삼각형들은 단계(384)에서 그 새로운 사용자에게 배정되고, 그 새로운 사용자는 잠재적인 사용자라고 불린다. 이후에 손의 움직임에 관해 전술한 바와 같이 연속되는 프레임에서 그 잠재적인 사용자의 손의 움직임이 트래킹된다.
다시 도 4a를 참조하면, 단계(308)에서 머리 삼각형을 식별한 후에, 팔다리 식별 엔진(192)은 단계(310)에서 손 제안을 찾아낸다. 이들 동작은 모든 활성화된 사용자 및 잠재적인 사용자에 대해 실행될 수 있다. 실시예에서, 비활성화된 플레이어에 대한 손 제안은 트래킹되지 않지만, 추가 실시예에서는 트래킹될 수도 있다. 머리 삼각형의 움직임은 활성화된, 비활성화된 및 잠재적인 사용자에서 트래킹될 수 있다.
실시예에서, 손 제안은 다양한 방법으로 찾을 수 있고 또한 함께 결합될 수 있다. 첫 번째 방법은 높은 확률로 손이라고 정확하게 식별되는 중심들을 사용하는 것이다. 시스템은 예컨대, 한 쪽에 일곱 개(왼손에 일곱 개의 제안 및 오른손에 일곱 개의 제안)와 같이, 많은 이런 손 제안들을 사용할 수 있다. 특정 한 쪽에서 선택된 중심 손 제안들에 더해서, 본보기는 때때로 어느 손이 어느 손인지를 혼란스럽게 할 수 있다. 따라서, 해당 어깨의 반대 쪽에서 손 중심을 위해, 예컨대 네 개 더 많은, 추가적인 후보들을 취할 수 있다. 다른 실시예에서 이들 손 제안 개수보다 더 많거나 적은 수의 제안이 사용될 수 있음을 이해할 것이다.
손 제안을 모으는 두 번째 방법은 마그네티즘이라고 하는 기법에 의한 것이다. 마그네티즘은 이전 프레임 또는 프레임들로부터 새로운 깊이 지도로 (손과 같은) 골격 특징의 위치를 "포착(snap)"하는 개념에 관한 것이다. 예를 들어, 이번 프레임에서 사용자에 대한 왼쪽 손이 식별되고, 그 손이 (아무 것도 만지지 않고) 고립된 경우, 마그네티즘은 새로운 깊이 지도를 사용하여 현재 프레임에서 그 손의 위치를 정확하게 업데이트할 수 있다. 또한, 손이 움직이는 경우, 둘 이상의 이전 프레임에서 그 손의 움직임을 트래킹함으로써 새로운 프레임에서 그 위치에 대한 적절한 추정을 제공할 수 있다. 이렇게 예측된 위치는 손 제안으로 즉각 사용될 수 있고, 추가적으로 또는 이를 대신하여, 이렇게 예측된 위치는 마그네티즘을 사용하여 현재 깊이 지도로 포착되어 현재 프레임에 더욱 잘 매치하는 다른 손 제안을 생성할 수 있다. 실시예에서, 팔다리 식별 엔진(192)은, 이하에서 설명되는 바와 같이, 각종 기점(starting point)에 기반하여 플레이어마다 양 쪽에 대해 세 개의 손 제안(각각의 플레이어의 왼손에 대해 세 개 및 각각의 플레이어의 오른손에 대해 세 개)을 마그네티즘을 통해 생성할 수 있다. 실시예에서, 중심 및 마그네티즘 중 어느 한쪽이 양쪽을 대신하여 사용될 수 있음을 이해할 것이다. 나아가, 다른 실시예에서 손 제안을 찾기 위해 다른 기법을 이용할 수도 있다.
마그네티즘으로 손 제안을 찾는 하나의 특별한 경우로 손을 향해 그 축을 따르는 팔뚝의 움직임을 확인하는 것에 관련된다. 이 경우에, 마그네티즘은 사용자의 손을 그 팔뚝 중간 부분으로 포착할 수 있는데, 이는 바람직하지 않다. 이 경우를 정확히 처리하기 위해, 시스템은 손 위치가 아래팔로부터 얼마간, 예컨대, 사용자의 팔뚝 길이의 15 % 밑으로 움직이고, 마그네티즘을 사용하여 포착되는 다른 손 제안을 생성할 수 있다. 이는, 팔뚝을 따른 축방향 모션의 경우에, 어느 하나의 손 제안이 정확하게 배치되도록 보장할 것이다.
마그네티즘은 신체 부위 제안의 위치를 깊이 지도에 '포착'함으로써 이를 정밀화한다. 이는 손, 발 및 머리와 같은 관절들을 완료하는(terminate) 데 가장 유용하다. 실시예에서, 이는 제안의 위치에 (3D로) 가장 가까운 화소에 대해 깊이 지도에서 인근 화소들을 검색하는 것에 관련된다. 이 "가장 가까운 포인트'가 찾아지면, 그 포인트는 정밀화된 손 제안으로서 사용될 수 있다. 그러나, 그 포인트는 보통 (손과 같이) 관심 있는 특징의 중심이 아닌 가장자리에 있을 것이고, 이것이 보다 바람직하다. 추가적인 실시예에서는 전술한 '가장 가까운 포인트'의 (3D로) 특정 거리 안에 있는 인근 화소들을 검색함으로써 손 제안을 더욱 정밀화 할 수 있다. 이 거리는 (손과 같은) 신체 부위의 예상 직경과 대략적으로 일치하도록 설정될 수 있다. 이후에, '가장 가까운 포인트'의 이런 거리 내의 일부 또는 모든 화소들의 위치를 평균내어 손 제안의 보다 정밀화된 위치를 생성할 수 있다. 실시예에서, '가장 가까운 화소'와 이 평균에 기여하는 화소를 연결하는 부드러운 경로(smooth path)를 찾을 수 없는 경우, 평균에 기여한 일부 화소들은 버려질 수 있으며, 이는 실시예에서 생략될 수도 있다.
단계(310)에서 각종 방법으로 손 제안들을 찾으면, 이 제안들은 단계(312)에서 평가된다. 머리 삼각형에서와 같이, 다양한 채점 서브루틴을 통해 각종 중심 및 마그네티즘 후보 손 제안을 수행함으로써 손 제안을 평가할 수 있다. 이제 도 7의 순서도와 관련하여 이들 서브루틴이 보다 상세하게 설명된다.
단계(410)에서, 손 제안 근처의 화소 모션을 검사하는 채점 서브루틴 실행될 수 있다. 이 테스트에서는 손 제안 근처에서의 화소들이 얼마나 빨리 "움직이고" 있는지를 탐지한다. 실시예에서, 이런 모션 탐지 기법을 사용하여 손은 물론, 다른 신체 부위 제안에 대한 모션도 탐지할 수 있다. 시야는, Z-축이 깊이 카메라(20)로부터 똑바로 나오고, X-Y 평면은 Z-축에 수직인 카르테시안 좌표계로 참조될 수 있다. 특정 화소 위치에서의 깊이 값이 하나의 프레임과 그 다음 프레임 사이에서 비교될 때, X-Y 평면에서의 움직임은 그 특정 화소 위치에서의 급격한/갑작스런 깊이 변화로서 나타난다. 이런 급격한 Z-변화를 겪는 (다양한 위치에서의) 화소의 양은 손 제안 근처에서 얼마나 많은 X-Y 움직임이 있는지를 나타내게 된다.
Z 방향에서의 움직임은 이들 화소 간에 앞뒤로의 순(net) 양수 또는 음수 평균 움직임으로서 나타난다. 이전 프레임 및 새로운 프레엠 모두에서, 깊이 값이 손 제안의 깊이에 가까운 (X-Y 평면에서의) 손 제안 위치 근처의 화소들만이 고려되어야 한다. 함께 평균내어져, 이들 화소 모두의 Z-이동(displacement)이 앞뒤로 움직이는 경우, 이는 Z 방향으로의 손의 일반적인, 공간적으로 일관된 모션을 나타낸다. 또한 이 경우에, 모션의 정확한 속도는 곧바로 알 수 있게 된다.
이후에 X-Y 움직임 및 Z 움직임이 결합되어, X, Y 및 Z 손 모션의 전체량을 나타낼 수 있고, 이는 손 제안의 점수(및 이런 손 제안에 의거한 임의의 팔 가설의 점수)에 감안될 수 있다. 일반적으로, 손 제안의 근처에서의 XYZ 모션은 그 손 제안이 가구와 같은 무생물 객체보다는 생물에 속하는 것을 나타내는 경향이 있으며, 이는 단계(410)에서 그 손 제안에 대해 높은 점수를 초래할 것이다. 실시예에서, 이 점수는 시스템이 사람으로서 인증하거나 비-사람으로서 폐기하려는 잠재적인 플레이어에 대해 보다 중요하게 작용될 수 있다.
단계(416)에서, 팔다리 식별 엔진(192)은 제안된 손이 그 손의 결정된 최종 이전-프레임 위치로부터 제안에서 가리키는 곳까지 얼마나 멀리 점프하였는지를 확인하는 추가 채점 서브루틴을 실행할 수 있다. 큰 점프는, 현재 후보가 손이 아니므로 그에 따라 점수를 줄여야 함을 나타내는 경향이 있다. 여기서 벌점은 선형이거나 비선형일 수 있다.
본보기에 의해 생성된 손 제안들의 경우, 팔다리 식별 엔진(192)은 단계(420)에서 특정 손 제안에 대한 중심 신뢰도(centroid confidence)를 추가적으로 사용할 수 있다. 높은 중심 신뢰도 값은 그 손 제안에 대한 점수를 증가시키는 경향이 있다.
단계(424)에서, 팔다리 식별 엔진(192)은 대응 어깨로부터 손 제안까지의 거리를 확인하는 채점 서브루틴을 실행할 수 있다. 어깨로부터의 거리가 어깨와 손 사이의 가능한 거리보다 길면, 그에 따라서 점수에 벌점이 가해진다. 어깨에서 손까지 거리의 이런 최대 범위는 머리-어깨 삼각형 또는 플레이어의 팔 길이에서 비롯될 수 있는, 추정된 플레이어 체격에 따라 조정될 수 있고, 시간이 지남에 따라 안정화된다.
단계(428)에서, 다른 채점 서브루틴에서, 단계(410)에서의 약한 화소 모션 점수와 결합하여, 손 제안이 이전 프레임에서 성공적으로 트래킹되지 않았는지를 확인할 수 있다. 이 서브루틴은, 손이 이전 프레임에서 트래킹되지 않은 경우, 모션 점수 임계치를 충족시키거나 초과하는 손 제안들만을 고려해야 한다는 사실에 기반한다. 그 이유는 (의자의 팔걸이와 같이) 팔 또는 손으로 보이는 움직이지 않는 깊이 특징들은 성공할 가능성이 적고, 손은 트래킹을 시작하기 위해 움직여야 하며(가구는 움직일 수 없음), 움직이기 시작하면, 움직임을 멈출 수도 있고 여전히 트래킹될 수도 있기 때문이다. 이하에서 설명되는 바와 같이, 머리 삼각형 매치에 의해 식별된 어깨의 알려진 특정 위치 및 특정 손 후보에 대해, 각종 가능한 팔꿈치 위치가 계산된다. 이하에서 찾을 수 있는 바와 같이, 각각의 손/팔꿈치 결합에 대해 전술한 손 채점 서브루틴 중 임의의 서브루틴이 실행될 수 있다. 그러나, 전술한 손 채점 서브루틴 중 어떤 것도 팔꿈치의 위치에 의해 좌우되지 않으므로, 각종 팔꿈치 위치를 확인하기 전에 이들 서브루틴을 실행하는 것이 처리 관점에서 볼 때 보다 효율적이다. 이하에서 설명하는 바와 같이, 도 7의 채점 서브루틴 각각으로부터의 점수가 합계되어 사용되기 위해 저장될 수 있다.
도 4a를 다시 참조하면, 단계(318)에서, 각각의 손 제안에 대해, 다수의 팔꿈치 위치가 테스트되고, 각각의 팔꿈치 위치에 대한 손, 팔꿈치 및 어깨에 점수가 매겨져 전체 팔 가설이 제공된다. 가능한 팔꿈치 위치의 개수는 달라질 수 있고, 예컨대, 10에서 100 사이에 있을 수 있으며, 이는 다른 실시예에서 이 범위보다 더 많거나 적을 수 있다. 팔꿈치 위치의 개수는 또한 동적으로 변할 수도 있다. 손 제안 및 고정된 어깨의 경우, 원하는 개수의 팔꿈치 위치들이 테스트되고 팔 가설에 점수를 매길 때까지, 팔꿈치 위치가 선택되고 그 위치에서의 팔꿈치와 함께 전체 팔 가설에 점수가 주어지고, 다음 팔꿈치 위치가 선택되며 전체 팔 가설에 점수가 매겨지는 것이 반복된다. 또는, 이용 가능한 계산 시간을 최대한으로 사용하기 위해 점수가 매겨진 팔 가설의 개수를 동적으로 결정할 수도 있다. 이는 단계(316) 이후에 남아 있는 각각의 손 제안에 대해 실행되어 각종 팔 가설에 대한 점수를 결정한다.
일반적으로, 특정 손 제안 및 알려진 어깨 위치에 대해 가능한 팔꿈치 위치는 원(circle)을 따라 배치되도록 제약된다. 이런 제약 하에서, 원은 두 포인트(어깨 및 손) 및 이전 프레임으로부터 알려진 위- 및 아래-팔 길이(또는 이 데이터를 이용할 수 없는 경우에는 추정치)를 취한 후, 팔꿈치가 놓여야만 하는 원(중심 x, y, z 및 반경)을 수학적으로 계산함으로써 정의된다. 이 문제는 잘 알려진 해를 가지고 있으며, 일반적으로, 이는 포인트 1으로부터의 거리 D1 및 포인트 2로부터의 거리 D2에 있는 모든 포인트들로 이루어진 원이다. 손과 어깨 사이의 거리가 D1 + D2보다 짧기만 하면, 유효한 원이 된다. 정의된 원에서 후보 팔꿈치 위치들이 선택될 수 있다. 그러나, 위치는 무작위적으로 교란될 수 있다. 이는, 위/아래 팔 길이가 정확하지 않거나, 어깨/손 위치가 근사하지만 완벽하지는 않을 수 있기 때문이다.
예컨대, 팔꿈치 중심을 포함하는 다른 방법으로 후보 팔꿈치 위치를 찾을 수도 있음을 이해할 것이다. 다른 실시예에서, 팔꿈치 위치에 대해 완전히 무작위적인 포인트들이 선택될 수 있고, 이전-프레임 팔꿈치 위치가 사용될 수도 있으며, 또는 운동량이 투사된 팔꿈치 위치가 사용될 수도 있다. 이들 예측 역시 교란될 수 있고(이동할 수 있고), 다른 교란들과 함께 한 번 이상 사용될 수도 있다.
도 8은 각각의 손 제안에 대한 각 팔꿈치 위치에 대해 실행될 수 있는 채점 서브루틴의 추가 세부 사항을 나타낸다. 단계(430)에서, 팔다리 식별 엔진(192)은 현재 팔꿈치 위치 및 손 제안에서 제공한 위팔 및 아래팔의 길이를 측정할 수 있다. 위팔과 아래팔의 결합된 길이가 너무 길거나 너무 짧은 경우에, 그 팔 위치 및 손 제안에 대한 점수에 벌점이 부과된다.
단계(434)에서, 전체 길이를 확인하는 대신에, 팔다리 식별 엔진(192)은, 그 팔 가설에 대해, 위아래 팔 길이의 합계에 대한 위팔 길이의 비율을 확인하는 서브루틴을 실행할 수 있다. 이 비율은 인체에서 거의 보편적으로 0.45에서 0.52 사이에 있을 것이다. 이 범위 밖의 팔꿈치 위치는 예상 범위 밖을 벗어난 정도에 비례한(그러나 반드시 선형일 필요는 없는) 벌점을 얻을 수 있다. 일반적으로, 이들 채점 함수는 물론, 본원에서 설명된 다른 채점 함수는 연속적이며 미분 가능할 수 있다.
단계(436)에서, 특정 팔 가설이 운동학적으로 유효한지를 테스트하는 채점 서브루틴이 실행될 수 있다. 즉, 주어진 사람의 위아래 팔의 모션의 알려진 범위 및 몸통에 대한 팔의 가능한 오리엔테이션에 대해, 사람이 주어진 팔 가설에서 관절 위치를 유효하게 갖는지를 알 수 있다. 그렇지 않으면, 팔 가설은 벌점을 받거나 제거될 수 있다. 실시예에서, 운동학적으로 유효한 채점 서브루틴은 3-D 현실 세계에서의 사람의 위치를 (현실 세계 공간과는 무관하게) 사람의 몸통의 참조 프레임으로 해석 및 회전함으로써 시작할 수 있다. 다른 실시예에서는 이런 서브루틴이 현실 세계 공간의 사람의 위치/오리엔테이션을 사용하여 동작할 수도 있지만, 먼저 사용자를 사람의 몸통의 참조 프레임으로 해석하는 것이 계산하기 더 쉽다.
이런 참조 프레임에서, 몸통 공간에 대한 정규 직교(ortho-normal) 기반 벡터는, +X가 왼쪽 어깨에서 오른쪽 어깨까지이고, +Y는 몸통/척추에서 위로 가며, +Z는 플레이어의 가슴을 통해 나오는 것(즉, 일반적으로 세계-공간에서의 +Z의 반대)으로 시각화될 수 있다. 다시 말하지만, 이 참조 프레임은 단지 예시에 불과하며, 다른 실시예에서는 달라질 수 있다.
그 후에, 특정 위팔 위치에 대해, 팔다리 식별 엔진(192)은 아래팔이 그 특정 위팔 위치 대한 아래팔의 가능한 위치들(방향 및 각도)을 정의하는 원뿔 내에 놓여 있는지를 확인한다. 전술한 정규-직교 기반 벡터를 사용하여, 위팔은 여섯 개의 정규-직교 벡터 위치들(위팔 앞, 위팔 뒤, 위팔 왼쪽, 위팔 오른쪽 위 및 위팔 아래)을 따라(또는 그 사이에) 놓여질 수 있다. 위팔의 이들 정규 직교 방향 각각에 대해, 아래팔의 가능한 방향들을 정의하는 대응 원뿔은 특정하기 쉽고 일반적으로 알려져 있다. (가설에서) 위팔의 방향이 이 여섯 개의 정규직교 방향 중 하나와 정확하게 정렬되는 것은 드물고, 그 대신 이들 중 몇 개 사이에 보통 놓여있기 때문에, 가장 가까운 정규직교 위팔 방향과 관련된 원뿔 정의가 서로 조합되어 위팔이 놓여 있는 특정 방향에 잘 맞는 새로운 원뿔을 생성하게 된다. 이런 조합에서, 위팔이 가장 밀접하게 정렬되는 축의 원뿔은 큰 가중치를 받을 것이며, 위팔의 반대 방향으로 놓여 있는 축의 원뿔은 가중치 0을 가질 것이다. 조합된 원뿔이 알려지면, 아래팔이 원뿔 내에 있는지를 보기 위해 테스트한다. 아래팔의 방향이 (유효한 아래팔 방향의) 조합된 원뿔에 속하지 않는 팔 가설은 벌점을 얻을 수 있고, 심한 경우, 폐기될 수도 있다. 벌점은 선형이거나 비선형일 수 있다.
운동학적으로 유효한 팔 위치를 테스트하는 다른 방법들이 있음을 이해할 것이다. 이런 방법들은 자세 사전 검색(pose dictionary lookup), 신경망(neural network), 또는 임의의 수의 다른 분류 기법들을 포함한다.
단계(438)에서, 현재 팔꿈치 위치가 마지막 프레임의 결정된 팔꿈치 위치로부터 얼마나 멀리 점프하였는가를 확인하는 채점 서브루틴이 실행될 수 있다. 큰 점프는 더 많은 벌점을 얻을 것이다. 벌점은 선형이거나 비선형일 수 있다.
단계(440 및 444)에서, 추적 및 돌출 서브루틴이 팔 가설에 대해 실행되고 점수가 매겨질 수 있다. 특히, 도 11을 참조하면, 특정 손 제안, 팔 및 알려진 어깨 위치에 대해, 추적 샘플들(516)이 위팔 및 아래팔의 중심선을 따른 반경으로 정의될 수 있다. 이 반경은 얇은 팔을 가진 사용자들의 경우에도 샘플들이 확실히 사용자의 위팔 및 아래팔 내에 있도록 하기 위해 충분히 작게 설정된다. 추적 샘플들이 정의되면, 추적 샘플들의 깊이를 검사한다. 개개의 샘플이 깊이 지도와 부적절한 z 미스매치를 갖는 경우, 그 추적 샘플은 안 좋은 점수를 얻는다. 모든 샘플로부터의 점수는 결과적인 점수를 위해 집계될 수 있다. 도 9-11의 사용자(18)가 한 손을 등 뒤에 두고 있지만, 추적 샘플은 물론, 이하에서 설명되는 돌출 샘플도 왼팔 및 오른팔 양쪽 모두에서 취할 수 있다. 또한, 사용자의 상체가 트래킹되는 본 예시에서, 도 9-11의 사용자(18)는 대신 앉아 있을 수도 있다.
마찬가지로, 돌출 샘플들(520)은 팔의 관절에서 (캡쳐 장치(20)와 수직인) X-Y 평면에서 원, 반원, 또는 부분원으로 정의된다. 돌출 샘플들은 또한, 도 11의 위팔 주변에서 볼 수 있는 바와 같이, 팔다리 세그먼트가 Z-정렬이 아닐 때, 위팔 또는 아래팔 양쪽에 평행선인 "레일(rail)"에 놓일 수도 있다(도 11에서는 명확성을 위해 아래팔 주변의 돌출 샘플들이 생략된다). 원 및 레일에서의 이들 샘플 모두는 실제 관절 또는 관절들을 연결하는 선으로부터 (XY 평면에서) 얼마간 떨어진 곳에 놓인다. 가설이 옳은 경우, 매우 덩치가 큰 플레이어에 대해서도, 샘플들이 모두 플레이어의 팔의 윤곽 바깥에 놓이도록 특정 샘플의 반경이 충분히 커야만 한다. 그러나, 최적의 결과를 얻기 위해서, 반경이 그 이상 커지지는 않아야 한다.
샘플 위치들이 XY에 배치되면, 관찰되고 예상되는 깊이 값들이 각각의 샘플 위치에서 비교될 수 있다. 이후에, 임의의 돌출 샘플들이 가설의 깊이와 유사한 깊이를 나타내는 경우, 그 샘플들은 벌점을 얻는다. 예를 들어, 도 11에서, (도면에서 채워진 정사각형으로 도시되는) 돌출 샘플들(520A)은 위팔 및 손 주변에서 벌점을 얻게 된다. 추적 및 돌출 테스트의 개개의 샘플에 대한 채점은 머리 삼각형을 고려하는 경우의 추적 및 돌출 테스트에 관해 전술한 바와 같다.
상기의 실시예는 일반적으로 추적 및 샘플 동작을 함께 논의했지만, 다른 실시예에서 이들이 개별적으로 및/또는 따로 사용될 수 있음을 알아야 한다. 예를 들어, 시스템은 추적 샘플들만을 또는 돌출 샘플들만을 사용하여 다양한 신체 부위 주변에서 가설을 점수 매길 수 있다.
추적 및 돌출 서브루틴에 의해 제공되는 점수는 도 7 및 8에 도시된 다른 서브루틴들보다 더 큰 가중치를 가질 수 있다. 도 7 및 8의 상이한 서브루틴들은 다른 실시예에서 다른 가중치가 부여될 수 있음을 이해할 것이다. 또한, 도 7 및 8에 도시된 서브루틴들은 단지 예를 든 것으로, 손 제안 및 가능한 팔꿈치 위치를 평가하기 위해 다른 실시예에서는 다른 또는 대안적인 서브루틴을 사용할 수 있다.
모든 팔 가설에 대한 점수가 결정되면, 최고점(들)을 갖는 팔 가설이 도 4a의 단계(322)에서 식별된다. 이는 그 프레임에서 손, 손목, 아래팔 및 위팔을 포함하는 사용자의 왼팔 및 오른팔의 위치의 확실한 지표를 나타낸다. 단계(326)에서, 식별된 팔꿈치 위치 부근에서 팔꿈치 위치를 움직임으로써 최고점 팔 제안에서의 팔 위치를 정밀화하려는 시도를 한다. 단계(328)에서, 팔다리 식별 엔진(192)은 정밀화된 팔꿈치 위치를 갖는 팔 가설의 결과로 더 높은 팔 위치 점수가 초래되는지를 확인한다. 그렇다면, 단계(332)에서 정밀화된 팔 가설이 이전 최고점 가설을 대체하게 된다. 단계들(326에서 332)은 선택적이며, 다른 실시예에서 생략될 수도 있다.
단계(336)에서, 사용자의 왼팔 및 오른팔의 최고점 팔 위치가 사전 정의된 임계 신뢰도 값과 비교된다. 실시예에서, 이 임계치는 손이 이전 프레임에서 신뢰도를 가지고 보고되었는지에 기초하여 또는 다른 인자들에 기초하여 바뀔 수 있다. 이제 도 4b를 참조하면, 단계(340)에서 고득점 왼팔 또는 오른팔이 임계치 밑에 있는 경우, 단계(342)에서 그 프레임에 대해, 신뢰도 보고가 되지 않으며 그 팔에 대해 어떤 팔 데이터도 반환되지 않는다.
단계(342)에서 특정 팔에 대해 어떤 신뢰도 보고도 행해지지 않는 경우, 시스템은 이 프레임에서 그 팔에 대해 어떤 신뢰도 값과 데이터도 반환하지 않을 수 있다. 이 경우에, 시스템은 단계(354)로 건너뛰어, 이하에서 설명되는 바와 같이 잠재적임 플레이어를 인증할 것인지 제거할 것인지를 살펴볼 수 있다. 한쪽 팔이 임계치를 초과하지만 한쪽 팔은 초과하지 않는 경우, 시스템은 임계치를 초과하는 팔에 대해서 데이터를 반환할 수 있다. 반면, 단계(340)에서 양쪽 팔이 임계치보다 높은 점수를 갖고 있는 경우, 단계(346)에서 머리, 어깨, 팔꿈치, 손목 및 손을 포함하는 상체의 모든 관절에 대한 위치를 반환한다. 이하에서 설명되는 바와 같이, 이들 머리, 어깨 및 팔 위치는 컴퓨팅 환경(12)에 제공되어, 제스처 인식 및 컴퓨팅 환경(12)에서 실행되는 애플리케이션에 의해 디스플레이(14)에 프리젠테이션되는 가상 객체와의 인터랙션을 포함하는 임의의 다양한 동작을 수행하게 된다.
단계(350)에서, 팔다리 식별 엔진(192)은 사용자 손의 식별된 위치를 정밀화하려는 시도를 선택적으로 할 수 있다. 단계(350)에서, 팔다리 식별 엔진(192)은 팔꿈치에서 손까지의 세계-공간 벡터를 따라 아래팔로부터 가장 먼 화소들과, 프레임 깊이 지도에서 손과도 연결되어 있는 화소들을 찾고 태그를 붙일 수 있다. 다수의 또는 모든 이 화소들을 함께 평균내어 사용자의 손 위치를 정밀화할 수 있다.
나아가, 팔꿈치에서 손까지의 벡터를 따라 이들 화소가 어디까지 놓여져 있는지에 기초하여 이들 화소들의 점수를 매길 수 있다. 이후에, 이런 집합에서 다수의 최고점을 얻은 화소들을 평균내어 부드러운 손 끝 위치를 생성하고, 이 집합에서 두 번째로 최고점을 얻는 다수의 화소들을 평균내어 부드러운 손목 위치를 생성할 수 있다. 또한, 이들 두 위치 사이의 벡터로부터 부드러운 손 방향을 얻을 수 있다. 사용된 화소의 개수는 손 제안의 깊이, 사용자의 체격 추정치 또는 기타 인자들에 기반할 수 있다.
또한, 연결된 화소들을 검색하는 동안 경계 반경(bounding radius)가 사용될 수 있고, 이 반경은 펼친 손의 최대 예상 반경에 기반하며, 플레이어의 체격 및 손의 깊이에 대해 조정된다. 이 경계 반경에 닿은 양수-득점한 화소들이 발견되면, 이는 손 끝 정밀화가 실패할 가능성이 높다는(다른 객체나 손 너머의 신체 부위로 흘러나옴) 증거가 되고, 정밀화된 손 끝이 신뢰도 없이 보고될 수 있다. 단계(350)는 사용자의 손이 다른 객체와 접촉하고 있지 않을 때 가장 잘 동작하며, 이는 보통 신뢰도 테스트를 통과할 정도로 충분한 돌출 점수를 갖고 있는 팔에 대한 경우가 된다. 단계(350)는 선택적인 것으로, 다른 실시예에서는 생략될 수 있다.
앞서 언급한 바와 같이, 활성화되거나 비활성화된 사용자와 아직 연계되지 않은 프레임에서 적절한 머리 삼각형들이 식별되는 경우, 이들 머리 삼각형은 잠재적인 플레이어라고 태그가 붙여진다. 단계(354)에서, 팔다리 식별 엔진(192)은 이 식별된 잠재적인 플레이어들이 이하에서 설명하는 바와 같이 사람 손의 움직임을 수행하였는지를 확인한다. 수행하지 않았다면, 엔진(192)은 단계(355)에서 충분한 시간이 지났는지 또는 손의 움직임을 계속 검색하기 위해 시간이 더 필요한지를 결정할 수 있다. 잠재적인 플레이어의 사람 손의 움직임을 확인하지 못하고 충분한 시간이 지났다면, 그 잠재적인 플레이어는 단계(356)에서 거짓이 됨에 따라 빠질 수 있다. 단계(355)에서 잠재적인 플레이어가 사람 손의 움직임을 취했는지를 판단하기에 충분한 시간이 지나지 않았다면, 시스템은 도 4a의 단계(304)로 되돌아가서 데이터의 다음 프레임을 얻고, 도 4a에서 8에 도시된 단계들을 반복한다.
각각의 프레임의 마지막에, 각각의 잠재적인 플레이어에 대해, 팔다리 식별 엔진(192)은 잠재적인 플레이어가 사람인지를 판단하려 한다. 먼저, 과거 15 개 정도의 프레임에 대해 머리- 및 손- 트래킹 과거 내역을 검사한다. 다른 실시예에서 프레임은 이보다 많거나 적을 수 있다. 선택된 수의 프레임에서 잠재적인 플레이어가 존재한 경우, 다음: 1) 이 모든 프레임에서 머리 삼각형이 확실히 트래킹되었는지, 2) 이 모든 프레임에서 왼손 또는 오른손 둘 중 하나가 지속적으로 트래킹되었는지, 및 3) 그 손이 이들 프레임에서 적당히-부드러운(semi-smooth) 경로를 따라 적어도 최소 순 거리만큼, 예컨대, 15 cm(다른 실시예에서는 이보다 더 많이 또는 적을 수 있음) 움직였는지를 확인할 수 있다. 만일 그렇다면, 플레이어는 "사람으로 인증된다고" 여겨지고, 활성화되거나 비활성화되도록 업그레이드된다.
플레이어가 처음 트래킹된 이래로 15 개의 프레임이 지나지 않았지만 상기 임의의 제약 사항이 일찍 위반된 경우, 다음 프레임에서 새로운 잠재적인 플레이어가 선택될 수 있도록 하기 위해 그 잠재적인 플레이어는 사람이 아닌 것으로 폐기될 수 있다. 예를 들어, 잠재적인 플레이어의 존재가 있는 다섯 번째 프레임에서 어느 쪽 손도 트래킹할 수 없는 경우, 그 잠재적인 플레이어는 즉시 폐기될 수 있다.
이런 결정 시에 특정의 다른 테스트들을 사용할 수도 있다. "최소 순 거리" 테스트는 모션이 없는 배경 객체들을 낙제시키도록 설계된다. "적당히-부드러운 경로" 테스트는 거의 모든 사람 손의 움직임을 하는 사람 손은 합격시키지만, (보통 카메라 노이즈로 인해) 무작위로 무질서한 모션의 배경 객체들을 거의 언제나 낙제시키도록 설계된다. 사람 손 모션은, (대략) 30 Hz로 관찰될 때, 사람이 가능한 빠르고 날카로운 움직임을 취하려고 할 때조차, 거의 언제나 적당히-부드럽다. 적당히-부드러운 테스트를 설계하기 위한 매우 다양한 방법이 있다.
예로서, 이런 하나의 실시예는 다음과 같이 실행된다. 손에 대한 위치 과거 내역에 관해 15 개의 프레임이 있는 경우, 중간 11 개의 프레임이 고려될 수 있다. 각각의 프레임에 대해, 대체 위치가 다음과 같이 재구성될 수 있다. 1) 간단한 선형 투영 기법(linear projection)을 사용하여 이전 두 프레임에서의 위치에만 기초하여 손의 위치를 예측하고, 2) 간단한 선형 투영 기법을 사용하여 다음 두 프레임에서의 위치에 기반하여 과거 손의 위치를 예측하며, 3) 두 예측의 평균을 내어, 4) 그 평균을 그 프레임에서 손의 관찰된 위치와 비교한다. 이것이 이 프레임에 대한 "오류"가 된다.
11 개의 프레임에 대한 "오류"가 합계된다. 11 개의 프레임에 대해, 프레임에서 프레임까지, 손에 의해 이동한 거리 역시 합계된다. 오류 합계를 이동한 순 거리로 나눈다. 결과가 특정 비율(예컨대, 0.7)보다 높으면, 결과는 실패한 것이고, 그렇지 않다면, 테스트를 통과한 것이다. 잠재적인 플레이어가 사람으로 인증되어 활성화되거나 비활성화된 플레이어로 업그레이드되는지를 결정하기 위해 다른 방법들을 사용할 수도 있음을 이해할 것이다.
전술한 바와 같이 단계(354)에서 잠재적인 플레이어가 사람으로 인증되면, 이 잠재적인 플레이어는 단계(358)에서 비활성화된 또는 활성화된 플레이어로 업그레이드된다. 단계(356 또는 358)를 실행한 후에, 시스템은 도 4a의 단계(304)로 되돌아가서 데이터의 다음 프레임을 얻고, 도 4a에서 8에 도시된 단계들을 반복한다. 이런 식으로, 본 기술은 각각의 프레임에서 캡쳐 장치(20)로부터 수신한 데이터를 평가하고, 그 프레임에서 한 명 이상의 사용자의 하나 이상의 관절의 골격 위치를 식별할 수 있다.
예를 들어, 도 12에 도시된 바와 같이, 팔다리 식별 엔진(192)은 머리(522), 양쪽 어깨(524a 및 524b), 양쪽 팔꿈치(526a 및 526b), 양쪽 손목(528a 및 528b), 및 양손(530a 및 530b)의 위치를 반환할 수 있다. 도 12에 도시된 각종 관절들의 위치는 단지 예시에 불과하며, 이들은 다른 실시예에서 가능한 임의의 사용자 위치에 따라 달라진다. 또한 사용자의 관절 일부만의 측정은 처리 효율성 이외에도 잠재적인 이점이 있음을 이해할 것이다. 특정 관절 집합에 초점을 둠으로써 충돌하는 제스처를 수신하고 처리할 가능성을 막을 수도 있다. 특정 제스처가 실행되었는지를 판단할 때, 트래킹되지 않은 관절들은 무시된다.
전술한 실시예에서, 사용자의 상체의 관절들을 식별하기 위해 팔다리 식별 엔진(192)이 사용되었다. 사용자의 하체의 관절들을 찾기 위해 동일한 기법이 사용될 수 있음을 이해할 것이다. 또한, 뇌졸증에서 회복 중인 사용자들과 같은 특정 사용자들은 신체의 왼쪽 또는 오른쪽만을 사용할 수 있다. 역시, 전술한 기법을 사용하여 사용자 신체의 왼쪽 또는 오른쪽을 트래킹할 수 있다. 일반적으로 임의의 수의 관절들이 트래킹될 수 있다. 다른 실시예에서, 전술한 본 시스템을 사용하여 사용자 신체의 모든 관절들을 트래킹할 수도 있다. 손가락 또는 발가락의 뼈 또는 관절, 또는 코와 눈과 같은 얼굴의 개별 특징을 비롯한 추가적인 특징들도 식별될 수 있다.
단지 사용자 신체 관절의 일부에만 초점을 둠으로써, 본 시스템은 모든 신체 관절들을 측정하는 시스템보다 더욱 효율적으로 이미지 데이터를 처리할 수 있다. 이 결과 더 빠른 처리 및 객체 렌더링 시에 감소된 지연 시간(latency)을 얻을 수 있다. 그 대신 및/또는 추가적으로, 이는 특정 프레임 속도(frame rate) 내에서 추가적인 처리가 실행될 수 있게 한다. 이런 추가적인 처리는 예컨대, 더 많은 채점 서브루틴 실행 시에 사용되어 각각의 프레임에서 생성되는 관절 데이터의 정확도를 추가적으로 보장할 수 있다.
처리 효율성을 더욱 개선하기 위해, 이미지 데이터를 캡쳐하는 캡쳐 장치가 시야를 더 작은 부분 또는 영역으로 세그먼트화할 수 있다. 이런 실시예는, 예를 들어, 도 13a 및 13b에 도시된다. 도 13a에서, FOV는 수직으로 배향된(vertically oriented) 영역들(532a, 532b 및 532c)로 세그먼트화된다. 사용자는 일반적으로 캡쳐 장치(20) 바로 앞에 서 있을 것이라고 가정할 수 있다. 따라서, 트래킹될 대부분의 움직임은 중심 영역(532b)에 있을 것이다. 실시예에서, 캡쳐 장치(20)는 오로지 영역(532b)와 같은 단일 영역에만 초점을 둘 수 있다. 또는, 본 예시에서 세 개의 프레임마다 한 번씩 각각의 영역에서 프레임 데이터가 판독되도록 캡쳐 장치가 연속 프레임에서 영역들을 순환할 수도 있다. 다른 실시예에서, 캡쳐 장치는 중앙 영역(532b)과 같은 단일 영역에 초점을 두지만, 주기적으로 사전 정의된 수의 프레임마다 한번씩 나머지 영역들을 스캔할 수도 있다. 각각의 영역(532a, 532b 및 532c)의 다른 스캔 시나리오도 생각할 수 있다. 또한, 세 개의 영역으로의 세그먼테이션은 단지 예시에 불과하다. 다른 실시예에서 두 개의 영역 또는 세 개보다 많은 영역이 있을 수도 있다. 영역들이 분명한 경계를 갖고 있는 것으로 도시되었지만, 다른 실시예에서 영역들은 서로 약간 겹쳐질 수도 있다.
추가적인 예로, 도 13b는 영역들(532a, 532b 및 532c)을 수평으로 도시한다. 도 13b의 여러 영역들(532a, 532b 및 532c)의 스캔은 도 13a와 관련하여 전술한 예시들 중 임의의 것을 따를 수 있다. 도 13a 및 13b는 이차원 세그먼트화를 도시하며, 이들 실시예의 어느 한쪽 또는 양쪽 모두는 X-Y에 더해서 또는 X 또는 Y를 대신하여 깊이 컴포넌트를 더 가질 수 있다. 따라서, 이 영역들은 이차원이거나 삼차원일 수 있다.
본 기술의 추가적인 양태에 따르면, 특정 영역에서는 오직 특정 제스처 또는 동작만이 허용될 수 있다. 따라서, 캡쳐 장치는 도 13b의 모든 영역들을 스캔할 수 있지만, 예를 들어, 영역(532a)에서는, 사용자의 머리 제스처 또는 움직임만이 트래킹될 수 있다. 영역(532b)에서는 사용자의 무릎의 제스처 및 움직임만이 트래킹된다. 또한 영역(532c)에서는, 오직 사용자의 다리의 제스처 및 움직임만이 트래킹된다. 이런 실시예는, 예컨대, 유럽 풋볼(미국 축구(soccer)) 게임과 같이, 컴퓨팅 환경(12)에서 실행되는 애플리케이션에 따라 유용해질 수 있다. 이상은 단지 예를 들기 위한 것이다. 여러 영역에서 다른 신체 부위가 트래킹될 수도 있다.
동작 시에, 실제 세계 영역들(532a, 532b 및 532c) 중 하나에 대응하는 머신 공간 위치로 가상 객체가 들어가는 때를 식별할 수 있다. 그 움직이는 객체가 있는 영역에 기반하여 일련의 허용된 제스처가 검색될 수 있다. 제스처 인식(이하에서 설명됨)은, 제한된 수의 허용 제스처로, 정상적으로 진행될 수 있다. 특정 영역에서 허용될 수 있는 제스처는 컴퓨팅 환경(12)에서 실행되는 애플리케이션에서 정의될 수 있거나, 또는 컴퓨팅 환경(12) 또는 캡쳐 장치(20)의 메모리에 저장될 수 있다. 정의되지 않은 다른 신체 부위에서 실행되는 제스처는 무시할 수 있는 반면, 제스처가 허용되는 신체 부위의 정의에 포함된 신체 부위에 의해 실행되는 경우, 그 동일한 제스처는 관련 동작에 영향을 미치게 된다.
본 실시예는, 특정 영역에서 실행된 제스처가 그 영역에 대해 정의가 되었는지에 따라 그 영역에서 정의된 특정 제스처만을 받아들이는 것으로 설명되었다. 본 실시예는 FOV가 영역들로 나뉘어지지 않은 경우에도 실행될 수 있다. 예를 들어, 시스템(10)은 제스처가 받아들여질 오직 특정 신체 부위의 정의를 가지고도 동작할 수 있다. 이런 시스템은 인식 프로세스를 단순화하고 제스처가 겹치는 것을 막는다.
도 14는 제스처 인식 엔진(190)의 블록도를 도시하며, 도 15는 도 14의 제스처 인식 엔진(190)의 동작에 관한 순서도를 도시한다. 제스처 인식 엔진(190)은 단계(550)에서 자세 정보(540)를 수신한다. 자세 정보는 이미지 데이터에서 탐지한 사용자의 신체 부위 및 관절들의 위치 및/또는 모션에 관련된 각종 파라미터들을 포함한다.
제스처 인식 엔진(190)은 단계(554)에서 수신된 자세 정보(540)를 분석하여, 자세 정보가 제스처 라이브러리(540)에 저장된 임의의 사전 정의된 규칙(542)과 매치하는지를 살펴본다. 저장된 규칙(542)은 자세 정보(540)가 나타내는 특정 위치 및/또는 운동 모션을 사전 정의된 제스처로서 언제 해석해야 할 것인지를 설명한다. 실시예에서, 각각의 제스처는 상이하고, 고유한 규칙 또는 일련의 규칙들(542)을 가지고 있을 수 있다. 각각의 규칙은 도 12에 도시되는 신체 부위들 중 하나 이상에 대해 여러 파라미터들(관절 위치 벡터, 최대/최소 위치, 위치의 변화 등)을 가지고 있을 수 있다. 저장된 규칙은, 각각의 파라미터 및 도 12에 도시된 각각의 신체 부위(526에서 534b)에 대해, 단일 값, 값 범위, 최대값, 최소값, 또는 그 신체 부위에 대한 파라미터가 규칙에 포함되는 제스처의 결정과는 무관하다는 표시를 정의할 수 있다. 규칙들은 게임 작가, 게임 플랫폼의 호스트 또는 사용자들에 의해 작성될 수 있다.
제스처 인식 엔진(190)은 식별된 제스처 및 사용자의 위치/움직임이 그 제스처에 해당될 가능성인 신뢰도를 출력할 수 있다. 특히, 규칙은, 제스처를 위해 필요한 파라미터들을 정의하는 것뿐만 아니라, 자세 정보(540)가 제스처로서 해석되기 전에 필요한 임계 신뢰도 역시 포함할 수 있다. 몇몇 제스처는 시스템 명령어 또는 게임 설명보다 더 큰 영향을 미칠 수 있으므로, 그런 경우에 하나의 자세가 그 제스처로 해석되기 전에 고도의 신뢰도를 요구하게 된다. 규칙에 관해 저장된 파라미터와 자세 정보의 비교로 인해 자세 정보가 제스처를 나타내는 지에 대한 누적된 신뢰도가 도출된다.
특정 자세 또는 모션이 특정 제스처 규칙을 만족하는 지에 관해 신뢰도가 결정되면, 제스처 인식 엔진(190)은 신뢰도가 고려 중인 규칙에 대해 사전 결정된 임계치를 초과하는지를 단계(556)에서 결정한다. 임계 신뢰도는 고려 중인 규칙과 관련하여 저장될 수 있다. 신뢰도가 임계치 이하이면, 아무런 제스처도 탐지되지 않고(단계(560)) 아무런 동작도 취해지지 않는다. 반면, 신뢰도가 임계치를 초과하면, 사용자의 모션이 고려 중인 제스처 규칙을 충족하는 것으로 결정되어, 제스처 인식 엔진(190)은 단계(564)의 식별된 제스처로 되돌아 간다.
상기에 기술된 실시예들은 특정 관절 트래킹 및/또는 특정 영역 트래킹에 관한 예시를 제공한다. 이런 실시예들은 매우 다양한 시나리오에서 사용될 수 있다. 도 1a에 도시된 한 시나리오에서, 사용자(18)는 사용자 인터페이스(21)와 인터랙션하고 있다. 이런 실시예에서, 시스템은 사용자의 머리 및 손만을 트래킹할 필요가 있다. 컴퓨팅 환경(12)에서 실행되는 애플리케이션은 오직 (머리 및 손과 같은) 특정 관절들로부터의 입력을 수신하도록 설정되어 있고, 따라서 어떤 관절 및 영역이 트래킹되어야 하는지를 팔다리 식별 엔진(192)에 알릴 수 있다.
다른 실시예에서, 사용자가 어떤 관절들이 트래킹되어야 하는지 및/또는 어떤 영역이 트래킹되어야 하는지를 나타낼 수 있는 경우, NUI 시스템을 갖고 있는 일부 사용자 인터페이스가 제공될 수 있다. 사용자 인터페이스를 통해 사용자는 영구적인 설정 또는 일시적인 설정을 할 수 있다. 예를 들어, 사용자가 자신의 오른팔에 부상을 입어 일정 기간 동안 움직이지 못하는 경우, 시스템은 그 기간 동안은 그 팔을 무시하도록 설정될 수 있다.
다른 실시예에서, 사용자는 도 1c에 도시된 바와 같이 휠체어에 앉아 있거나 또는 다른 식으로 장애가 있을 수 있다. 다른 예로 몸의 왼쪽 또는 오른쪽만을 사용하는 뇌졸증 환자가 있다. 일반적으로, 사용자는 자신의 몸의 특정 부위를 제한적인 사용하거나 제어할 수 있다. 이런 경우에, 본 시스템은 특정 관절 및/또는 특정 영역들로부터의 움직임을 인식하고 트래킹하도록 사용자에 의해 설정될 수 있다. 이는 제스처 또는 사용자 인터페이스와의 기타 수동적인 인터랙션에 의해 실행될 수 있다.
NUI 시스템은 보통 온스크린 아바타(19)의 움직임 및 애니메이션을 MSMD(monkey-see, monkey-do) 식으로 제어하는 사용자(18)를 포함한다. 장애가 있는 사용자가 MSMD 모드로 아바타(19)를 제어하고 있는 실시예에서, 하나 이상의 비활성화된 팔다리로부터의 입력 데이터는 무시되고, 사전-준비된 애니메이션을 대체될 수 있다. 예를 들어, 휠체어 사용자가 가상 필드에서 "걷도록" 아바타를 제어하고 있는 장면에서, 아바타의 위치와 관련된 모션은 상체 및 머리에 의해 안내될 수 있고, 아바타의 다리에 대해 걷는 애니메이션이 팔다리의 MSMD 매핑 대신에 플레이될 수 있다.
몇몇 실시예에서, 특정 동작 또는 NUI 시스템과의 인터랙션을 수행하기 위해 움직이지 못하는 팔다리의 모션이 필요할 수 있다. 이런 실시예에서, 본 시스템은 사용자가 정의한 팔다리의 리매핑(remapping)을 허용한다. 즉, 시스템은 사용자로 하여금 움직이지 않는 팔다리를 움직이는 팔다리로 대체하게 하여, 사용자의 움직이는 팔다리의 움직임이 아바타(19)의 목표로 하는 팔다리에 매핑될 수 있게 한다. 이제, 이를 수행하기 위한 하나의 이런 실시예가 도 16의 순서도를 참조하여 설명된다.
도 16에서, 온스크린 아바타의 다리를 애니메이션화하고 제어하기 위해 팔다리 식별 엔진(192)이 반환한 팔 데이터가 사용될 수 있다. 정상적인 MSMD 동작에서, 사용자의 팔 또는 양팔의 움직임의 결과 온스크린 아바타의 팔 또는 양팔의 대응 움직임이 일어나게 된다. 그러나, 사전 정의된 제스처가 취해지고 인식되었을 때, 사용자의 양팔의 움직임이 온스크린 아바타의 양쪽 다리의 움직임이 되는 다리 제어 모드로 바뀌는 사전 정의된 제스처가 정의될 수 있다. 단계(562)에서 제스처 인식 엔진(190)이 이런 제스처를 탐지하면, 단계(564)에서 다리 제어모드로 컴퓨팅 환경(12)이 실행될 수 있다. 단계(562)에서 이런 제스처가 탐지되지 않는 경우, 이하에서 설명되는 단계들(568에서 588)로 정상적인 MSMD 동작이 실행될 수 있다.
어느 경우에든, 단계(568)에서, 캡쳐 장치 및/또는 컴퓨팅 환경에서 상체 위치 정보를 수신하고, 전술한 바와 같이 팔다리 식별 엔진(192)에 의해 머리, 어깨 및 팔 위치가 단계(570)에서 계산될 수 있다. 단계(574)에서, 시스템은 다리 제어 모드로 실행되고 있는지를 확인한다. 만일 그렇다면, 컴퓨팅 환경(12)은 사용자의 오른팔 및/또는 왼팔의 팔 관절들을 사용자의 왼쪽 및/또는 오른쪽 다리의 다리 관절들의 3-D 현실 세계 위치들로 처리할 수 있다.
이는 여러 방식으로 실행될 수 있다. 일 실시예에서, 현실 공간에서 사용자의 팔의 움직임은 온스크린 아바타(19)의 다리에 매핑되거나, 또는 다리 입력 데이터로 해석될 수 있다. 예를 들어, 어깨 관절이 사전 정의된 수학 함수에 의해 특정 모션 범위에서 사용자의 둔부에 매핑될 수 있다. 사용자의 팔꿈치는 (무릎이 아래쪽 다리를 움직이는 방향과 반대로 팔꿈치가 아래팔을 움직인다는 사실을 고려하는) 사전 정의된 수학 함수에 의해 특정 모션 범위에서 사용자의 무릎에 매핑될 수 있다. 또한, 사용자의 손목은 수학 함수에 의해 특정 모션 범위에서 사용자의 발목에 매핑될 수 있다.
이런 매핑에서, 사용자의 다리가 걷거나 뛰고 있다는 인상을 만들기 위해 사용자는 예컨대, 자신의 어깨, 팔꿈치 및 손목을 일제히 움직일 수 있다. 다른 예를 들면, 휠체어 사용자는 자신의 팔을 움직임으로써 공을 차는 동작을 흉내낼 수 있다. 시스템은 아바타의 골격에 전체(gross) 레벨 모션을 매핑시키고, 애니메이션 블렌드(animation blend)를 사용하여 마치 다리 모션인 것처럼 보이도록 할 수 있다. 사용자는 이상의 단계들 없이도 또는 다른 단계들을 통해 움직이는 팔다리를 움직이지 않은 팔다리로 대신할 수 있다.
실시예에서, 다리 제어 모드에서 사용자 양팔 중 하나가 아바타의 양쪽 다리 중 하나를 제어하고, 사용자의 다른 팔이 아바타 양팔 중 하나를 제어할 수 있다. 이런 실시예에서, 사용자에 의해 제어되지 않는 아바타 다리는 단순히 제어되는 다리의 거울(mirror) 움직임을 취할 수 있다. 따라서, 사용자가 자신의 팔을 움직이고 왼발로 걸음을 내딛을 때, 아바타는 대응 오른쪽 다리 걸음으로 그 왼쪽 다리 걸음을 따라할 수 있다. 다른 실시예에서, 다리 제어 모드일 때, 사용자는 현실 세계에서 자신의 양팔 모두로 아바타의 양쪽 다리를 제어할 수 있다. 다른 실시예에서 아바타의 다리를 제어하기 위해 각종 다른 방법들을 사용하여 팔 관절부터 다리 관절까지의 위치를 처리할 수 있음을 이해할 것이다.
단계(580)에서, (단계(576)에서 다리 제어 모드로 처리되든 아니든) 관절 위치가 GPU에 의한 렌더링을 위해 컴퓨팅 환경(12)으로 제공된다. 아바타의 다리의 움직임을 제어하는 것에 더해서, 사용자는 다리 제어 모드일 때 다리 제스처로 해석될 수 있는 특정 팔 제스처를 실행할 수 있다. 단계(582)에서, 시스템은 인식된 다리 제스처를 확인한다. 이 다리 제스처는 (다리 제어 모드가 아닐 때) 현실 세계에서 사용자의 다리에 의해 실행되거나, 또는 (다리 모드일 때) 사용자의 팔에 의해 실행될 수 있다. 단계(582)에서 제스처 인식 엔진에서 이런 제스처를 인식하면, 단계(584)에서 대응하는 동작이 실행된다.
단계(582)에서 특정 다리 제스처가 인식되든 아니든, 시스템은 이후에 단계(586)에서 다리 제어 모드를 종료하도록 사전 정의된 제스처가 실행되는지를 확인한다. 실행된 경우, 시스템은 단계(588)에서 다리 제어 모드를 종료하고 프로세스를 다시 시작하기 위해 단계(562)로 되돌아간다. 반면, 단계(586)에서 다리 제어 모드를 종료하기 위한 제스처가 탐지되지 않은 경우, 단계(588)를 건너뛰고, 시스템은 단계(562)로 되돌아가 단계들을 반복한다.
도 17a는 타겟 인식, 분석 및 트래킹 시스템에서 사용자의 여러 위치 및 모션을 해석하는 데에 사용되는 컴퓨팅 환경의 일 실시예를 도시한다. 도 1a-2와 관련하여 전술한 컴퓨팅 환경(12) 등의 컴퓨팅 환경은 게임 콘솔과 같은 멀티미디어 콘솔(600)일 수 있다. 도 17a에 도시된 바와 같이, 멀티미디어 콘솔(600)은, 레벨 1 캐시(602), 레벨 2 캐시(604) 및 플래시 ROM(606)을 포함하는 CPU(central processing unit, 601)를 갖는다. 레벨 1 캐시(602) 및 레벨 2 캐시(604)는 데이터를 임시로 저장하여 메모리 액세스 사이클의 수를 감소시킴으로써, 처리 속도와 처리율을 향상시킨다. CPU(601)에는 하나 이상의 코어, 따라서 추가적인 레벨 1 및 레벨 2 캐시(602 및 604)가 제공될 수 있다. 플래시 ROM(606)은 멀티미디어 콘솔(600)의 전원이 켜질 때 부팅 프로세스(boot process)의 초기 단계 동안 로딩되는 실행가능 코드를 저장할 수 있다.
그래픽 처리 장치(GPU, 608)와 비디오 인코더/비디오 코덱(코더/디코더, 614)은 고속 및 고해상도 그래픽 처리를 위해 비디오 처리 파이프라인을 형성한다. 데이터는 버스를 통해 GPU(608)에서 비디오 인코더/비디오 코덱(614)으로 전달된다. 비디오 처리 파이프라인은 텔레비전이나 다른 디스플레이로의 전송을 위해 A/V(오디오/비디오) 포트(640)로 데이터를 출력한다. 메모리 제어기(610)는 GPU(608)에 접속되어, RAM과 같은, 하지만 이에 제한되지는 않는, 다양한 유형의 메모리(612)로의 프로세서 액세스를 용이하게 한다.
멀티미디어 콘솔(600)은, 모듈(618)에서 바람직하게 구현되는 I/O 제어기(620), 시스템 관리 제어기(622), 오디오 처리 장치(623), 네트워크 인터페이스 제어기(624), 제 1 USB 호스트 제어기(626), 제 2 USB 호스트 제어기(628), 및 전면 패널 I/O 서브어셈블리(630)를 포함한다. USB 제어기들(626 및 628)은 주변 제어기들(642(1) ~ 642(2)), 무선 어댑터(648) 및 외부 메모리 장치(646, 예를 들어, 플래시 메모리, 외부 CD/DVD ROM 드라이브, 이동식 매체 등)를 위한 호스트들로서 기능한다. 네트워크 인터페이스(624) 및/또는 무선 어댑터(648)는 네트워크(예를 들어, 인터넷, 홈 네트워크 등)로의 액세스를 제공하고, 이더넷 카드, 모뎀, 블루투스 모듈, 케이블 모뎀 등을 포함하는 아주 다양한 유무선 어댑터 컴포넌트들 중 임의의 것일 수 있다.
시스템 메모리(643)는 부팅 프로세스 동안에 로딩되는 애플리케이션을 저장하기 위해 제공된다. 미디어 드라이브(644)가 제공되고, 이는 DVD/CD 드라이브, 하드 드라이브, 또는 다른 이동식 미디어 드라이브 등을 포함할 수 있다. 미디어 드라이브(644)는 멀티미디어 콘솔(600)의 내부 또는 외부에 있을 수 있다. 애플리케이션 데이터는 멀티미디어 콘솔(600)에 의한 실행, 플레이백 등을 위해 미디어 드라이브(644)를 통해 액세스될 수 있다. 미디어 드라이브(644)는, 직렬 ATA 버스 또는 기타 고속 접속(예를 들어, IEEE 1394)과 같은 버스를 통해 I/O 제어기(620)에 접속된다.
시스템 관리 제어기(622)는 멀티미디어 콘솔(600)의 가용성의 보장과 관련된 다양한 서비스 기능들을 제공한다. 오디오 처리 장치(623)와 오디오 코덱(632)은 고신뢰성과 스테레오 처리를 갖는 대응 오디오 처리 파이프라인을 형성한다. 오디오 데이터는 통신 링크를 통해 오디오 처리 장치(623)와 오디오 코덱(632) 사이에서 전달된다. 오디오 처리 파이프라인은 오디오 기능이 있는 외부 오디오 플레이어 또는 장치에 의한 재생을 위해 A/V 포트(640)로 데이터를 출력시킨다.
전면 패널 I/O 서브어셈블리(630)는 전원 버튼(650), 배출 버튼(eject button, 652), 및 멀티미디어 콘솔(600)의 외부 표면에 노출된 임의의 LED들(light emitting diodes) 또는 기타 인디케이터들의 기능을 지원한다. 시스템 전원 모듈(636)은 멀티미디어 콘솔(600)의 컴포넌트들에 전력을 공급한다. 팬(fan, 638)은 멀티미디어 콘솔(600) 내의 회로를 냉각시킨다.
멀티미디어 콘솔(600) 내의 CPU(601), GPU(608), 메모리 제어기(610) 및 기타 다양한 컴포넌트들은 직렬 및 병렬 버스들, 메모리 버스, 주변장치 버스, 또는 다양한 버스 아키텍처들 중의 임의의 것을 사용하는 프로세서나 로컬 버스를 포함하는 하나 이상의 버스들을 통해 상호접속된다. 예를 들어, 이러한 아키텍쳐에는 PCI(Peripheral Component Interconnects) 버스, PCI 익스프레스(PCI-Express) 버스 등이 포함될 수 있다.
멀티미디어 콘솔(600)의 전원이 켜질 때, 시스템 메모리(643)로부터 애플리케이션 데이터가 메모리(612) 및/또는 캐시(602, 604)로 로딩되어, CPU(601)에서 실행될 수 있다. 애플리케이션은 멀티미디어 콘솔(600)에서 이용 가능한 다른 미디어 유형들로 네비게이트할 때 일관된 사용자 경험을 제공하는 그래픽 사용자 인터페이스를 제공할 수 있다. 동작 시에는, 미디어 드라이브(644) 내에 포함된 애플리케이션들 및/또는 기타 미디어들이 미디어 드라이브(644)로부터 시작되거나 재생되어, 멀티미디어 콘솔(600)에 추가 기능들을 제공할 수 있다.
멀티미디어 콘솔(600)은 텔레비전이나 기타 디스플레이에 시스템을 단순히 접속시킴으로써 독립형 시스템으로서 동작할 수 있다. 이 독립형 모드에서, 멀티미디어 콘솔(600)은 한 명 이상의 사용자들이 시스템과 인터랙트하고, 영화를 보고, 음악을 듣게 하도록 할 수 있다. 그러나, 네트워크 인터페이스(624) 또는 무선 어댑터(648)를 통해 이용가능하게 된 통합 광대역 접속으로 인해, 멀티미디어 콘솔(600)은 보다 큰 네트워크 커뮤니티의 참가자로서 동작할 수도 있다.
멀티미디어 콘솔(600)의 전원이 켜지면, 설정량의 하드웨어 리소스들이 멀티미디어 콘솔 운영 체제에 의한 시스템 사용을 위해 예약된다. 이러한 리소스들은 메모리(예컨대, 16 MB), CPU 및 GPU 사이클(예컨대, 5 %), 네트워킹 대역폭(예컨대, 8 kbs) 등의 예약을 포함할 수 있다. 이러한 리소스들은 시스템 부팅 시간에 예약되기 때문에, 애플리케이션의 관점에서는 예약된 리소스들이 존재하지 않는다.
특히, 개시 커널(launch kernel), 동시(concurrent) 시스템 애플리케이션 및 드라이버를 포함할 수 있을 정도로 메모리 예약이 충분히 큰 것이 바람직하다. 예약된 CPU 사용량이 시스템 애플리케이션에서 사용되지 않는 경우, 휴지 쓰레드(idle thread)가 미사용 사이클들을 쓸 수 있도록 CPU 예약이 일정한 것이 바람직하다.
GPU 예약과 관련하여, 팝업이 오버레이되도록 코드를 스케줄링하는 GPU 인터럽트를 사용하여, 시스템 애플리케이션에서 생성되는 간단한 메시지(예컨대, 팝업)가 디스플레이된다. 오버레이에 필요한 메모리량은 오버레이 영역 크기에 따르며, 오버레이는 스크린 해상도에 맞춰 스케일링되는 것이 바람직하다. 동시 시스템 애플리케이션이 풀 유저 인터페이스(full user interface)를 사용하는 경우에는, 애플리케이션 해상도와는 별개의 해상도를 사용하는 것이 바람직하다. 주파수를 변경하고 TV를 재동기화시킬 필요가 없도록 이 해상도를 설정하기 위해, 스케일러가 사용될 수 있다.
멀티미디어 콘솔(600)이 부팅되고 시스템 리소스가 예약된 후에, 동시 시스템 애플리케이션이 실행되어 시스템 기능들을 제공한다. 시스템 기능들은, 상기에서 설명한 예약된 시스템 리소스들 내에서 실행되는 일련의 시스템 애플리케이션에서 캡슐화되어 있다. 운영 체제 커널은 시스템 애플리케이션 쓰레드인지 게임 애플리케이션 쓰레드인지를 식별한다. 일관적인 시스템 리소스 뷰를 애플리케이션에 제공하기 위해, 시스템 애플리케이션은 사전 설정된 시간 및 간격으로 CPU(601)에서 실행되도록 스케줄링되는 것이 바람직하다. 스케줄링은 콘솔에서 실행되는 게임 애플리케이션에 대한 캐시 중단을 최소화하기 위한 것이다.
동시 시스템 애플리케이션이 오디오를 필요로 할 때, 오디오 처리는 시간에 대한 민감도로 인해 게임 애플리케이션과 비동기적으로 스케줄링된다. 시스템 애플리케이션이 동작할 때, 멀티미디어 콘솔 애플리케이션 관리자(이하에서 설명됨)는 게임 애플리케이션 오디오 레벨(예컨대, 음소거(mute), 감쇠(attenuate))을 제어한다.
게임 애플리케이션 및 시스템 애플리케이션은 입력 장치들(예컨대, 제어기(642(1) 및 642(2)))을 공유한다. 입력 장치들은 예약된 리소스들이 아니지만, 각 시스템 애플리케이션 및 게임 애플리케이션이 입력 장치의 포커스를 갖도록 애플리케이션들 사이에서 스위칭될 것이다. 애플리케이션 관리자는 게임 애플리케이션에 대한 정보 없이 입력 스트림의 스위칭을 제어하는 것이 바람직하며, 드라이버는 포커스 스위치에 관한 상태 정보를 보유한다. 카메라(76, 78) 및 캡쳐 장치(70)는 콘솔(600)을 위한 추가적인 입력 장치들일 수 있다.
도 17b는 타겟 인식, 분석 및 트래킹 시스템에서의 여러 위치 및 모션들의 해석, 및/또는 타겟 인식, 분석 및 트래킹 시스템에 의해 디스플레이되는 아바타, 온스크린 캐릭터, 온스크린 객체 등의 가상 캐릭터의 애니메이션화를 위해 사용되는 도 1a-2에 도시된 컴퓨팅 환경(12)의 또 다른 실시예인 컴퓨팅 환경(720)을 도시한다. 컴퓨팅 시스템 환경(720)은 적합한 컴퓨팅 환경의 일례일 뿐, 본원에 개시된 대상의 사용이나 기능의 범위를 제한하는 것은 아니다. 컴퓨팅 환경(720)은, 예시적인 운영 환경(720)에 도시된 임의의 컴포넌트 또는 컴포넌트 조합에 관한 의존성이나 요구 사항을 가지는 것으로 해석되어서는 안 된다. 몇몇 실시예에서, 도시된 다양한 컴퓨팅 구성요소들은 본 개시의 특정 양태들에 대한 예를 들어 설명하는 회로를 포함할 수 있다. 예를 들어, 본 개시에서 사용되는 회로는 펌웨어나 스위치로 기능(들)을 실행하도록 구성되는 특화된 하드웨어 컴포넌트들을 포함할 수 있다. 또 다른 실시예에서, 회로는 기능(들)을 실행하는 논리 동작을 구현하는 소프트웨어 인스트럭션으로 구성되는 범용 처리 장치(general purpose processing unit), 메모리 등을 포함할 수 있다. 하드웨어와 소프트웨어의 조합을 포함하는 회로의 실시예들에 있어서, 구현자는 논리를 구현하는 소스 코드를 작성하고, 이 소스 코드는 범용 처리 장치에서 처리될 수 있는 기계 판독가능 코드로 컴파일될 수 있다. 실시예들에서, 당업자라면 하드웨어, 소프트웨어 또는 하드웨어/소프트웨어의 조합 간에 차이가 거의 없는 방향으로 선행 기술이 발전해왔다는 점을 알 수 있으므로, 특정 기능을 구현하기 위한 하드웨어 대 소프트웨어의 선택은 구현자에게 달려 있는 설계 선택에 불과하다. 특히, 당업자라면 소프트웨어 프로세스가 동등한 하드웨어 구조로 변환가능하고, 하드웨어 구조 또한 동등한 소프트웨어 프로세스로 변환가능하다는 점을 알 수 있다. 따라서, 하드웨어 구현 대 소프트웨어 구현의 선택은 설계 선택으로, 구현자에게 달려 있다.
도 17b에서, 컴퓨팅 환경(720)은, 일반적으로 다양한 컴퓨터 판독가능 매체를 포함하는 컴퓨터(741)를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(741)가 액세스할 수 있으며, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체 모두를 포함하는 임의의 가용 매체일 수 있다. 시스템 메모리(722)는 ROM(723) 및 RAM(760)과 같은 휘발성 및/또는 비휘발성 메모리의 형태인 컴퓨터 저장 매체를 포함한다. 스타트업 동안과 같이 컴퓨터(741) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS, 724)은 일반적으로 ROM(723)에 저장된다. RAM(760)은 일반적으로 처리 장치(759)에 의해 즉시 액세스 가능 및/또는 바로 동작되는 데이터 및/또는 프로그램 모듈들을 포함한다. 예를 들어, 도 17b는 운영 체제(725), 애플리케이션 프로그램(726), 다른 프로그램 모듈(727), 및 프로그램 데이터(728)를 도시하고 있으며, 이들로서 제한되는 것은 아니다. 도 17b는 고속 및 고해상도 그래픽 처리 및 저장을 위한 관련 비디오 메모리(730)를 갖고 있는 그래픽 처리 장치(GPU, 729)도 포함한다. GPU(729)는 그래픽 인터페이스(731)를 통해 시스템 버스(721)에 접속될 수 있다.
또한, 컴퓨터(741)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 17b는 비이동식, 비휘발성 자기 매체에 판독 또는 기록하는 하드 디스크 드라이브(738), 이동식, 비휘발성 자기 디스크(754)에 판독 또는 기록하는 자기 디스크 드라이브(739), 및 CD ROM 또는 다른 광학 매체와 같은 이동식, 비휘발성 광 디스크(753)에 판독 또는 기록하는 광 디스크 드라이브(740)를 도시한다. 예시적인 운영 환경에서 사용 가능한 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체는, 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이들로서 제한되는 것은 아니다. 하드 디스크 드라이브(738)는 일반적으로 인터페이스(734)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(721)에 연결되며, 자기 디스크 드라이브(739) 및 광 디스크 드라이브(740)는 일반적으로 인터페이스(735)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(721)에 연결된다.
앞서 논의되었으며 도 17b에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(741)를 위한 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 17b에서, 예를 들어, 하드 디스크 드라이브(738)는 운영 체제(758), 애플리케이션 프로그램(757), 다른 프로그램 모듈(756) 및 프로그램 데이터(755)를 저장하는 것으로 도시되어 있다. 이러한 컴포넌트들은 운영 체제(725), 애플리케이션 프로그램(726), 다른 프로그램 모듈(727) 및 프로그램 데이터(728)와 동일할 수도 또는 다를 수도 있음을 알 것이다. 운영 체제(758), 애플리케이션 프로그램(757), 다른 프로그램 모듈(756), 및 프로그램 데이터(755)는, 최소한 이들이 상이한 카피들임을 나타내기 위해 본원에서 상이한 번호가 부여된다. 사용자는 키보드(751), 및 일반적으로 마우스, 트랙볼, 또는 터치 패드로 불리는 포인팅 장치(752)를 비롯한 입력 장치들을 통해 명령어 및 정보를 컴퓨터(741)에 입력할 수 있다. 다른 입력 장치들(도시되지 않음)은 마이크, 조이스틱, 게임 패드, 위성 접시, 스캐너, 리모콘 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 보통 시스템 버스에 연결된 사용자 입력 인터페이스(736)를 통해 처리 장치(759)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)를 비롯한 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 카메라(26, 28) 및 캡쳐 장치(20)는 콘솔(700)의 추가 입력 장치에 해당한다. 모니터(742) 또는 다른 형태의 디스플레이 장치도 비디오 인터페이스(732)와 같은 인터페이스를 통해 시스템 버스(721)에 접속된다. 모니터뿐만 아니라, 컴퓨터들은, 출력 주변 기기 인터페이스(733)를 통해 접속될 수 있는 스피커(744) 및 프린터(743)를 비롯한 다른 주변 기기 출력 장치들을 포함할 수 있다.
컴퓨터(741)는 원격 컴퓨터(746)와 같은 하나 이상의 원격 컴퓨터들에 대한 논리적인 연결들을 사용하여 네트워킹된 환경에서 동작할 수 있다. 원격 컴퓨터(746)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치(peer device) 또는 다른 공통 네트워크 노드일 수 있으며, 단지 메모리 저장 장치(747)만이 도 17b에 도시되어 있지만, 일반적으로 컴퓨터(741)와 관련하여 전술한 다수의 또는 모든 구성요소들을 포함한다. 도 4에 도시된 논리적인 연결은 LAN(local area network, 745) 및 WAN(wide area network, 749)을 포함하지만, 또한 다른 네트워크들도 포함할 수 있다. 이러한 네트워킹 환경들은 사무실, 기업(enterprise-wide) 컴퓨터 네트워크, 인트라넷 및 인터넷에 흔하다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(741)는 네트워크 인터페이스 또는 어댑터(737)를 통해서 LAN(745)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(741)는 일반적으로 모뎀(750) 또는 인터넷과 같이 WAN(749)을 통해 통신을 구축하기 위한 다른 수단을 포함한다. 내부 또는 외부에 존재할 수 있는 모뎀(750)은 사용자 입력 인터페이스(736), 또는 다른 적절한 메카니즘을 통해 시스템 버스(721)에 연결될 수 있다. 네트워킹 환경에서, 컴퓨터(741) 또는 그 일부분에 관련하여 도시된 프로그램 모듈들이 원격 메모리 저장 장치 내에 저장될 수 있다. 예를 들면, 도 17b는 메모리 장치(747) 상에 존재하는 원격 애플리케이션 프로그램들(748)을 도시하고 있다. 도시된 네트워크 연결들은 예시적인 것이며, 컴퓨터들 간에 통신 링크를 구축하는 다른 수단이 사용될 수 있음을 이해할 것이다.
실시예에서, 본 기술은 캡쳐 장치에서 캡쳐된 이미지 데이터로부터 시야 내의 사용자들을 식별하는 시스템에 관한 것이며, 본 시스템은 상태 비보존형 신체 부위 제안 시스템을 포함한다.
실시예에서, 상태 비보존형 신체 부위 제안 시스템은 신체 부위 제안 및/또는 골격 가설을 생성한다.
실시예에서, 상태 비보존형 신체 부위 제안 시스템은 머리 삼각형에 대한 신체 부위 제안, 손 제안 및/또는 팔 가설을 생성한다.
실시예에서, 상태 비보존형 신체 부위 제안 시스템은 본보기 및 중심에 의해 동작할 수 있다.
실시예에서, 본 기술은 캡쳐 장치에서 캡쳐된 이미지 데이터로부터 시야 내의 사용자들을 식별하는 시스템에 관한 것이며, 본 시스템은 상태 보존형 신체 부위 제안 시스템을 포함한다.
실시예에서, 상태 보존형 신체 부위 제안 시스템은 마그네티즘에 의해 동작할 수 있다.
실시예에서, 마그네티즘을 사용하는 상태 보존형 신체 부위 제안 시스템은 신체 부위 제안 및/또는 골격 가설을 생성한다.
실시예에서, 마그네티즘을 사용하는 상태 보존형 신체 부위 제안 시스템은 머리 삼각형에 대한 신체 부위 제안, 손 제안 및/또는 팔 가설을 생성한다.
실시예에서, 본 기술은 캡쳐 장치에서 캡쳐된 이미지 데이터로부터 시야 내의 사용자들을 식별하는 시스템에 관한 것이며, 본 시스템은 신체 부위 제안 시스템 및 신체 부위 제안 시스템에서 생성된 제안을 맞추는 골격 분석 시스템을 포함한다.
실시예에서, 골격 분석 시스템은 신체 부위 제안 시스템에서 생성되는 후보 제안들을 맞추기 위해 하나 이상의 비용 함수, 또는 견고한 채점 테스트를 이용한다.
실시예에서, 골격 분석 시스템은 다수의 신체 부위 제안 및/또는 골격 가설을 사용한다.
실시예에서, 골격 분석 시스템은 추적 및/또는 돌출 샘플들을 사용하여, 신체 부위 제안 시스템에 의해 생성된 후보 제안들 및/또는 후보 제안들의 조합을 평가한다.
실시예에서, 추적 샘플들은, 하나 이상의 후보 신체 부위 및/또는 골격 가설들이 옳은 경우 그 후보 신체 부위 및/또는 골격 가설들 내의 샘플에 대해 탐지된 깊이 값이 예상한 바와 같은지를 테스트한다.
실시예에서, 돌출 샘플들은, 하나 이상의 후보 신체 부위 및/또는 골격 가설들이 옳은 경우 그 후보 신체 부위 및/또는 골격 가설들의 아웃라인 바깥의 샘플에 대해 탐지된 깊이 값이 예상한 바와 같은지를 테스트한다.
실시예에서, 추적 및/또는 돌출 샘플들은 임의의 및 모든 신체 부위에 대한 가설, 또는 전체 골격 가설에 대한 점수를 매기는 데 사용될 수 있다.
실시예에서, 골격 분석 시스템은 신체 부위가 움직이고 있는지를 판단하는 테스트를 사용한다.
실시예에서, 손이 움직이고 있는지를 판단하는 테스트는 신체 부위의 모션에 대응하는 x, y 및/또는 z 방향의 화소 모션을 탐지한다.
실시예에서, 화소 모션 테스트는 손 제안들의 모션을 탐지한다.
실시예에서, 화소 모션 테스트는 머리, 팔, 다리 및 발의 모션을 탐지한다.
실시예에서, 골격은 화소 모션이 (손 또는 머리와 같은) 핵심 신체 부위 근처에서 탐지될 때까지 유효하지 않다.
실시예에서, 골격은 시간에 지나면서 핵심 신체 부위가 적당히-부드러운 경로를 따르는 것으로 관찰될 때까지 유효하지 않다.
실시예에서, 골격 분석 시스템은 특정 골격 가설이 운동학적으로 유효한지를 결정한다.
실시예에서, 골격 분석 시스템은 골격 가설에서 하나 이상의 관절이 예상 신체 부위에 대한 관절 회전 한계를 넘어서 회전하고 있는지를 판단한다.
실시예에서, 본 시스템은, 골격 분석 시스템과 함께, 극히 견고하게 정밀한 손 위치를 생성하는 손 정밀화 기법을 더 포함한다.
상기의 실시예에서, 골격 분석 시스템은 먼저 머리 및 어깨 관절에 기초하여 플레이어들을 식별한 후, 손 및 팔꿈치의 위치를 식별한다. 다른 실시예에서, 골격 분석 시스템은 먼저 임의의 신체 관절 서브셋에 기초하여 플레이어들을 식별한 후, 다른 신체 관절의 위치를 식별한다.
또한, 골격 분석 시스템에 의한 신체 부위의 식별 순서는 지금까지 설명한 바와 다를 수 있다. 예컨대, 몸통, 둔부, 손, 또는 다리와 같은 임의의 신체 부위가 먼저 해석되고 이전 프레임들에서의 플레이어들에게 귀속된 후, 나머지 골격이 양팔에 대해 전술한 기법을 사용하여 해석되어 다른 신체 부위에 적용될 수 있다.
또한, 골격 분석 시스템에 의한 신체 부위의 식별 순서는 동적일 수 있다. 즉, 해석될 신체 부위의 첫 번째 그룹은 동적 조건에 의해 좌우될 수 있다. 예를 들어, 플레이어가 옆으로 서 있어서 왼팔이 신체에서 가장 분명하게 보이는 부분인 경우, 골격 분석 시스템은 (머리 삼각형이 아니라) 그 팔을 사용하여 플레이어를 식별한 후 골격의 다른 부위 및/또는 골격 전체를 해석할 수 있다.
실시예에서, 본 시스템은 손 끝의 위치는 물론 손의 각도까지도 정확하게 판단하는 방법을 더 포함한다.
본 발명의 시스템의 전술된 상세한 설명은 예시 및 설명의 목적으로 제시되었다. 이는 포괄적이거나 본 발명의 시스템을 개시된 정확한 형태로 제한하기 위한 것이 아니다. 많은 수정 및 변형이 전술된 개시에 기초하여 가능하다. 설명된 실시예는 본 발명의 시스템의 원리 및 그의 실질적인 애플리케이션을 가장 잘 설명함으로써 당업자들이 고려되는 특정 사용에 적합하게 된 바와 같이, 다양한 실시예에서 그리고 다양한 수정과 함께 본 발명의 시스템을 가장 잘 이용하게 하기 위해 선택되었다. 본 발명의 시스템의 범위는 본 명세서에 첨부된 특허청구범위에 의해 제한되도록 의도된다.

Claims (10)

  1. 장면에서 위치 정보를 캡쳐하는 캡쳐 장치에 연결된 컴퓨팅 환경을 포함하는 시스템에서의 제스처 인식 방법으로서,
    a) 상기 장면의 사용자로부터 위치 정보를 수신하는 단계 - 상기 사용자는 제 1 신체 부위 및 제 2 신체 부위를 가지고 있음 -,
    b) 상기 제 1 신체 부위로부터의 제스처를 인식하는 단계,
    c) 상기 제 2 신체 부위에서 취하는 제스처를 무시하는 단계, 및
    d) 상기 단계 b)에서 인식된 상기 제 1 신체 부위의 제스처와 관련된 동작을 수행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제 2 신체 부위에서 취하는 제스처를 무시하는 상기 단계 c)는 제스처가 받아들여지는 신체 부위들의 정의를 갖는 단계를 포함하고, 상기 제 2 신체 부위는 상기 정의에 포함되지 않는 방법.
  3. 제 1 항에 있어서,
    상기 제 2 신체 부위에서 취하는 제스처를 무시하는 상기 단계 c)는 상기 제 2 신체 부위로부터의 위치 정보를 수신하지 않는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    시야를 복수의 영역으로 세그먼트화하는 단계 - 상기 제 2 신체 부위에서 취한 제스처가 무시될 때 상기 제 2 신체 부위는 상기 복수의 영역 중 제 1 영역에 있음 -, 및
    상기 복수의 영역 중 제 2 영역에서 동일한 제스처가 취해질 때 상기 제 2 신체 부위로부터의 상기 제스처를 인식하고 그에 따라 동작하는 단계를 더 포함하는 방법.
  5. 장면에서 위치 정보를 캡쳐하는 캡쳐 장치에 연결된 컴퓨팅 환경을 포함하는 시스템에서, 사용자의 신체 부위를 인식하고 트래킹하는 방법으로서,
    a) 상기 장면에서 위치 정보를 수신하는 상태 비보존형 신체 부위 제안 시스템으로부터 신체 부위 제안들을 얻는 단계,
    b) 상태 보존형 신체 부위 제안 시스템으로부터 신체 부위 제안들을 얻는 단계, 및
    c) 골격 분석 시스템으로 상기 후보 신체 부위들을 전체 또는 부분 골격들로 맞추는 단계를 포함하는 방법.
  6. 제 5 항에 있어서,
    상태 비보존형 기계-학습(machine-learning) 신체 부위 제안 시스템으로부터 신체 부위 제안들을 얻는 단계 a)는 중심(centroid) 확률에 의해 상기 사용자의 머리 및 어깨에 대한 신체 부위 제안들을 얻는 단계를 포함하는 방법.
  7. 제 5 항에 있어서,
    보존형 신체 부위 제안 시스템으로부터 신체 부위 제안들을 얻는 단계 b)는 과거 프레임으로부터의 마그네티즘 및 퍼시스턴스(persistence) 중 적어도 하나에 의해 상기 사용자의 머리 및 어깨에 대한 신체 부위 제안들을 얻는 단계를 포함하는 방법.
  8. 제 5 항에 있어서,
    상기 후보 신체 부위들을 전체 또는 부분 골격들로 맞추는 상기 단계는 가장 많은 지지를 받고 있는 가설을 식별하는 하나 이상의 채점 테스트를 실행하는 단계를 포함하는 방법.

  9. 제 8 항에 있어서,
    상기 제 1 관절 그룹을 식별하는 상기 단계 b)는
    d) 실제 플레이어들에 대응하는 후보 머리 및 어깨 제안들을 식별하는 단계,
    e) 상기 단계 d)에서 각각의 후보의 어깨 각각에 잠재적으로 속하는 손 제안들을 평가하는 단계, 및
    f) 상기 단계 e)에서의 손 제안들과 상기 단계 d)에서의 어깨 제안들을 연결하는 팔꿈치 제안들을 평가하는 단계를 더 포함하는 방법.
  10. 적어도 하나의 움직이지 못하는 신체 부위를 최소한 제한적으로 사용하는 사용자의 신체 부위를 인식 및 트래킹하는 방법을 실행하도록 프로세서를 프로그래밍할 수 있는 컴퓨터-판독가능 저장 매체에 있어서,
    상기 방법은
    a) 상기 사용자로부터 상기 적어도 하나의 움직이지 못하는 신체 부위의 종류(identity)에 대한 알림을 수신하는 단계,
    b) 상기 사용자의 제 1 관절 그룹을 식별하는 단계 - 상기 관절들은 상기 적어도 하나의 움직이지 못하는 신체 부위에 포함되지 않음 -,
    c) 상기 제 1 관절 그룹에서 관절들의 위치를 식별하는 단계, 및
    d) 상기 단계 c)에서 식별된 상기 관절들의 위치에 기반하여 동작을 수행하는 단계를 포함하는 컴퓨터-판독가능 저장 매체.
KR1020127034151A 2010-06-29 2011-06-14 골격 관절 인식 및 트래킹 시스템 KR20130111248A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/825,657 2010-06-29
US12/825,657 US20110317871A1 (en) 2010-06-29 2010-06-29 Skeletal joint recognition and tracking system
PCT/US2011/040356 WO2012005893A2 (en) 2010-06-29 2011-06-14 Skeletal joint recognition and tracking system

Publications (1)

Publication Number Publication Date
KR20130111248A true KR20130111248A (ko) 2013-10-10

Family

ID=45352594

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127034151A KR20130111248A (ko) 2010-06-29 2011-06-14 골격 관절 인식 및 트래킹 시스템

Country Status (6)

Country Link
US (2) US20110317871A1 (ko)
EP (1) EP2588941A2 (ko)
JP (1) JP2013535717A (ko)
KR (1) KR20130111248A (ko)
CN (1) CN103038727A (ko)
WO (1) WO2012005893A2 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101525011B1 (ko) * 2014-10-07 2015-06-09 동국대학교 산학협력단 Nui 기반의 실감형 가상공간 디스플레이 제어장치 및 제어방법
US9972136B2 (en) 2014-12-18 2018-05-15 Facebook, Inc. Method, system and device for navigating in a virtual reality environment
KR20200078855A (ko) * 2018-12-24 2020-07-02 전자부품연구원 두 개의 링크로 구성된 3d 객체의 리깅 보완 방법
US10713479B2 (en) 2014-08-07 2020-07-14 Starship Vending-Machine Corp. Motion recognition method and motion recognition device for recognizing motion of user received via NUI device by comparing with preset comparison target information
KR20200092215A (ko) * 2019-01-24 2020-08-03 한국전자통신연구원 다중 사용자 추적 장치 및 방법
KR102310599B1 (ko) * 2021-05-13 2021-10-13 주식회사 인피닉 3차원 모델에 따른 스켈레톤 데이터 생성 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
KR20230068043A (ko) 2021-11-10 2023-05-17 (주)모션테크놀로지 광학식 마커 방식의 인체 스켈레톤 생성을 위한 칼리브레이션 방법

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8565479B2 (en) 2009-08-13 2013-10-22 Primesense Ltd. Extraction of skeletons from 3D maps
US8639020B1 (en) 2010-06-16 2014-01-28 Intel Corporation Method and system for modeling subjects from a depth map
EP2455841A3 (en) * 2010-11-22 2015-07-15 Samsung Electronics Co., Ltd. Apparatus and method for selecting item using movement of object
KR101800182B1 (ko) * 2011-03-16 2017-11-23 삼성전자주식회사 가상 객체 제어 장치 및 방법
JP6074170B2 (ja) * 2011-06-23 2017-02-01 インテル・コーポレーション 近距離動作のトラッキングのシステムおよび方法
US11048333B2 (en) 2011-06-23 2021-06-29 Intel Corporation System and method for close-range movement tracking
US9628843B2 (en) * 2011-11-21 2017-04-18 Microsoft Technology Licensing, Llc Methods for controlling electronic devices using gestures
KR101908284B1 (ko) * 2012-01-13 2018-10-16 삼성전자주식회사 신체 연결 관계 분석 장치 및 방법
US9501152B2 (en) * 2013-01-15 2016-11-22 Leap Motion, Inc. Free-space user interface and control using virtual constructs
US11493998B2 (en) 2012-01-17 2022-11-08 Ultrahaptics IP Two Limited Systems and methods for machine control
US9477303B2 (en) 2012-04-09 2016-10-25 Intel Corporation System and method for combining three-dimensional tracking with a three-dimensional display for a user interface
US9047507B2 (en) * 2012-05-02 2015-06-02 Apple Inc. Upper-body skeleton extraction from depth maps
WO2014009561A2 (en) 2012-07-13 2014-01-16 Softkinetic Software Method and system for human-to-computer gesture based simultaneous interactions using singular points of interest on a hand
US20140045593A1 (en) * 2012-08-07 2014-02-13 Microsoft Corporation Virtual joint orientation in virtual skeleton
US20140046922A1 (en) * 2012-08-08 2014-02-13 Microsoft Corporation Search user interface using outward physical expressions
US9152243B2 (en) 2012-08-23 2015-10-06 Qualcomm Incorporated Object tracking using background and foreground models
US20140105466A1 (en) * 2012-10-16 2014-04-17 Ocean Images UK Ltd. Interactive photography system and method employing facial recognition
WO2014067058A1 (zh) * 2012-10-30 2014-05-08 华为技术有限公司 界面切换的方法和装置
US9571816B2 (en) 2012-11-16 2017-02-14 Microsoft Technology Licensing, Llc Associating an object with a subject
US20140140590A1 (en) * 2012-11-21 2014-05-22 Microsoft Corporation Trends and rules compliance with depth video
US9892655B2 (en) 2012-11-28 2018-02-13 Judy Sibille SNOW Method to provide feedback to a physical therapy patient or athlete
US9459697B2 (en) 2013-01-15 2016-10-04 Leap Motion, Inc. Dynamic, free-space user interactions for machine control
JP6171353B2 (ja) * 2013-01-18 2017-08-02 株式会社リコー 情報処理装置、システム、情報処理方法およびプログラム
US9251701B2 (en) 2013-02-14 2016-02-02 Microsoft Technology Licensing, Llc Control device with passive reflector
US8994652B2 (en) 2013-02-15 2015-03-31 Intel Corporation Model-based multi-hypothesis target tracker
US9202353B1 (en) 2013-03-14 2015-12-01 Toyota Jidosha Kabushiki Kaisha Vibration modality switching system for providing navigation guidance
US9142034B2 (en) * 2013-03-14 2015-09-22 Microsoft Technology Licensing, Llc Center of mass state vector for analyzing user motion in 3D images
US20140267611A1 (en) * 2013-03-14 2014-09-18 Microsoft Corporation Runtime engine for analyzing user motion in 3d images
US10281987B1 (en) 2013-08-09 2019-05-07 Leap Motion, Inc. Systems and methods of free-space gestural interaction
US9766855B2 (en) * 2013-09-10 2017-09-19 Avigilon Corporation Method and apparatus for controlling surveillance system with gesture and/or audio commands
US9091561B1 (en) 2013-10-28 2015-07-28 Toyota Jidosha Kabushiki Kaisha Navigation system for estimating routes for users
US9317112B2 (en) * 2013-11-19 2016-04-19 Microsoft Technology Licensing, Llc Motion control of a virtual environment
CN104460971A (zh) * 2013-11-25 2015-03-25 安徽寰智信息科技股份有限公司 一种人体运动快速捕捉方法
IN2013MU04097A (ko) 2013-12-27 2015-08-07 Tata Consultancy Services Ltd
EP2891950B1 (en) * 2014-01-07 2018-08-15 Sony Depthsensing Solutions Human-to-computer natural three-dimensional hand gesture based navigation method
WO2015105919A2 (en) * 2014-01-07 2015-07-16 Nod, Inc. Methods and apparatus recognition of start and/or stop portions of a gesture using an auxiliary sensor and for mapping of arbitrary human motion within an arbitrary space bounded by a user's range of motion
US20150220158A1 (en) 2014-01-07 2015-08-06 Nod Inc. Methods and Apparatus for Mapping of Arbitrary Human Motion Within an Arbitrary Space Bounded by a User's Range of Motion
US10338678B2 (en) * 2014-01-07 2019-07-02 Nod, Inc. Methods and apparatus for recognition of start and/or stop portions of a gesture using an auxiliary sensor
US10338685B2 (en) 2014-01-07 2019-07-02 Nod, Inc. Methods and apparatus recognition of start and/or stop portions of a gesture using relative coordinate system boundaries
US10725550B2 (en) 2014-01-07 2020-07-28 Nod, Inc. Methods and apparatus for recognition of a plurality of gestures using roll pitch yaw data
US10146318B2 (en) 2014-06-13 2018-12-04 Thomas Malzbender Techniques for using gesture recognition to effectuate character selection
US9921660B2 (en) * 2014-08-07 2018-03-20 Google Llc Radar-based gesture recognition
US9846968B2 (en) 2015-01-20 2017-12-19 Microsoft Technology Licensing, Llc Holographic bird's eye view camera
US20160210780A1 (en) 2015-01-20 2016-07-21 Jonathan Paulovich Applying real world scale to virtual content
US10156721B2 (en) 2015-03-09 2018-12-18 Microsoft Technology Licensing, Llc User-based context sensitive hologram reaction
US9613505B2 (en) 2015-03-13 2017-04-04 Toyota Jidosha Kabushiki Kaisha Object detection and localized extremity guidance
CN104808788B (zh) * 2015-03-18 2017-09-01 北京工业大学 一种非接触式手势操控用户界面的方法
US9911219B2 (en) 2015-05-13 2018-03-06 Intel Corporation Detection, tracking, and pose estimation of an articulated body
US10241990B2 (en) * 2015-08-26 2019-03-26 Microsoft Technology Licensing, Llc Gesture based annotations
MX2018004181A (es) * 2015-10-05 2018-05-17 Bayer Healthcare Llc Generacion de productos ortoticos recomendaciones.
CN105469113B (zh) * 2015-11-19 2019-03-22 广州新节奏智能科技股份有限公司 一种二维视频流中的人体骨骼点追踪方法及***
US10043279B1 (en) 2015-12-07 2018-08-07 Apple Inc. Robust detection and classification of body parts in a depth map
WO2017167813A1 (en) * 2016-03-30 2017-10-05 Koninklijke Philips N.V. An arm position tracking system and method for use during a shoulder flexion exercise
JP6688990B2 (ja) * 2016-04-28 2020-04-28 パナソニックIpマネジメント株式会社 識別装置、識別方法、識別プログラムおよび記録媒体
EP3488324A1 (en) 2016-07-20 2019-05-29 Usens, Inc. Method and system for 3d hand skeleton tracking
US10186130B2 (en) * 2016-07-28 2019-01-22 The Boeing Company Using human motion sensors to detect movement when in the vicinity of hydraulic robots
US10366278B2 (en) 2016-09-20 2019-07-30 Apple Inc. Curvature-based face detector
KR101907181B1 (ko) * 2016-12-30 2018-10-12 서울대학교산학협력단 가상 모델을 이용하는 시각 자극 생성 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
GB2560387B (en) * 2017-03-10 2022-03-09 Standard Cognition Corp Action identification using neural networks
US10249095B2 (en) 2017-04-07 2019-04-02 Microsoft Technology Licensing, Llc Context-based discovery of applications
US10489651B2 (en) 2017-04-14 2019-11-26 Microsoft Technology Licensing, Llc Identifying a position of a marker in an environment
US10692287B2 (en) 2017-04-17 2020-06-23 Microsoft Technology Licensing, Llc Multi-step placement of virtual objects
JP6922410B2 (ja) * 2017-05-19 2021-08-18 富士通株式会社 姿勢判定プログラム、姿勢判定装置及び姿勢判定方法
CN109923583A (zh) * 2017-07-07 2019-06-21 深圳市大疆创新科技有限公司 一种姿态的识别方法、设备及可移动平台
CN107358213B (zh) * 2017-07-20 2020-02-21 湖南科乐坊教育科技股份有限公司 一种儿童阅读习惯检测方法及装置
US10474988B2 (en) 2017-08-07 2019-11-12 Standard Cognition, Corp. Predicting inventory events using foreground/background processing
DE102017216000A1 (de) * 2017-09-11 2019-03-14 Conti Temic Microelectronic Gmbh Gestensteuerung zur Kommunikation mit einem autonomen Fahrzeug auf Basis einer einfachen 2D Kamera
CN107943276A (zh) * 2017-10-09 2018-04-20 广东工业大学 基于大数据平台的人体行为检测和预警
US20190213792A1 (en) 2018-01-11 2019-07-11 Microsoft Technology Licensing, Llc Providing Body-Anchored Mixed-Reality Experiences
CN108647597B (zh) * 2018-04-27 2021-02-02 京东方科技集团股份有限公司 一种手腕识别方法、手势识别方法、装置和电子设备
CN108635840A (zh) * 2018-05-17 2018-10-12 南京华捷艾米软件科技有限公司 一种基于Sikuli图像识别的***体感操控***及方法
US10607083B2 (en) 2018-07-19 2020-03-31 Microsoft Technology Licensing, Llc Selectively alerting users of real objects in a virtual environment
US10909762B2 (en) 2018-08-24 2021-02-02 Microsoft Technology Licensing, Llc Gestures for facilitating interaction with pages in a mixed reality environment
CN112930553A (zh) * 2018-09-21 2021-06-08 Mvi医疗保健公司 用于为视觉显示器生成补充数据的***和方法
CN111353347B (zh) * 2018-12-21 2023-07-04 上海史贝斯健身管理有限公司 动作识别纠错方法、电子设备、存储介质
CN114144814A (zh) * 2019-07-09 2022-03-04 贾迪安光学技术有限公司 用于测量车辆中对象的质量的***、装置和方法
US10976818B2 (en) 2019-08-21 2021-04-13 Universal City Studios Llc Interactive attraction system and method for object and user association
CN111028339B (zh) * 2019-12-06 2024-03-29 国网浙江省电力有限公司培训中心 一种行为动作建模方法、装置、电子设备和存储介质
WO2021131772A1 (ja) * 2019-12-24 2021-07-01 ソニーグループ株式会社 情報処理装置及び情報処理方法
CN112090076B (zh) * 2020-08-14 2022-02-01 深圳中清龙图网络技术有限公司 游戏角色动作控制方法、装置、设备和介质
CN112101327B (zh) * 2020-11-18 2021-01-29 北京达佳互联信息技术有限公司 动作矫正模型的训练方法、动作矫正方法及装置
KR102234995B1 (ko) * 2020-12-31 2021-04-01 주식회사 델바인 가상 객체 모델을 이용한 인지기능 재활훈련 방법, 장치 및 시스템
CN114327058B (zh) * 2021-12-24 2023-11-10 海信集团控股股份有限公司 显示设备
CN117315201A (zh) * 2022-06-20 2023-12-29 香港教育大学 用于在虚拟世界中动画化化身的***
CN117218088B (zh) * 2023-09-15 2024-03-29 中国人民解放军海军军医大学第一附属医院 一种前臂x光影像的处理方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6072494A (en) * 1997-10-15 2000-06-06 Electric Planet, Inc. Method and apparatus for real-time gesture recognition
EP1277104A1 (en) * 2000-03-30 2003-01-22 Ideogramic APS Method for gesture based modeling
US7030861B1 (en) * 2001-02-10 2006-04-18 Wayne Carl Westerman System and method for packing multi-touch gestures onto a hand
US20030001908A1 (en) * 2001-06-29 2003-01-02 Koninklijke Philips Electronics N.V. Picture-in-picture repositioning and/or resizing based on speech and gesture control
US8460103B2 (en) * 2004-06-18 2013-06-11 Igt Gesture controlled casino gaming system
US7874917B2 (en) * 2003-09-15 2011-01-25 Sony Computer Entertainment Inc. Methods and systems for enabling depth and direction detection when interfacing with a computer program
US20050212760A1 (en) * 2004-03-23 2005-09-29 Marvit David L Gesture based user interface supporting preexisting symbols
US7308112B2 (en) * 2004-05-14 2007-12-11 Honda Motor Co., Ltd. Sign based human-machine interaction
US8144118B2 (en) * 2005-01-21 2012-03-27 Qualcomm Incorporated Motion-based tracking
WO2006086508A2 (en) * 2005-02-08 2006-08-17 Oblong Industries, Inc. System and method for genture based control system
US7606392B2 (en) * 2005-08-26 2009-10-20 Sony Corporation Capturing and processing facial motion data
US8537112B2 (en) * 2006-02-08 2013-09-17 Oblong Industries, Inc. Control system for navigating a principal dimension of a data space
JP4148281B2 (ja) * 2006-06-19 2008-09-10 ソニー株式会社 モーションキャプチャ装置及びモーションキャプチャ方法、並びにモーションキャプチャプログラム
JP4267648B2 (ja) * 2006-08-25 2009-05-27 株式会社東芝 インターフェース装置及びその方法
JP4489825B2 (ja) * 2006-09-07 2010-06-23 学校法人 大阪電気通信大学 ジェスチャ入力システム、方法及びプログラム
US8726194B2 (en) * 2007-07-27 2014-05-13 Qualcomm Incorporated Item selection using enhanced control
EP2191397B1 (en) * 2007-08-20 2019-01-23 Qualcomm Incorporated Enhanced rejection of out-of-vocabulary words
US20100036269A1 (en) * 2008-08-07 2010-02-11 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Circulatory monitoring systems and methods
US9772689B2 (en) * 2008-03-04 2017-09-26 Qualcomm Incorporated Enhanced gesture-based image manipulation
WO2010011923A1 (en) * 2008-07-24 2010-01-28 Gesturetek, Inc. Enhanced detection of circular engagement gesture
CN102165396B (zh) * 2008-07-25 2014-10-29 高通股份有限公司 挥动约定姿态的增强检测
US20100295782A1 (en) * 2009-05-21 2010-11-25 Yehuda Binder System and method for control based on face ore hand gesture detection
US8693724B2 (en) * 2009-05-29 2014-04-08 Microsoft Corporation Method and system implementing user-centric gesture control
US8681124B2 (en) * 2009-09-22 2014-03-25 Microsoft Corporation Method and system for recognition of user gesture interaction with passive surface video displays
US8547327B2 (en) * 2009-10-07 2013-10-01 Qualcomm Incorporated Proximity object tracker
US20110099476A1 (en) * 2009-10-23 2011-04-28 Microsoft Corporation Decorating a display environment
US8818027B2 (en) * 2010-04-01 2014-08-26 Qualcomm Incorporated Computing device interface

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713479B2 (en) 2014-08-07 2020-07-14 Starship Vending-Machine Corp. Motion recognition method and motion recognition device for recognizing motion of user received via NUI device by comparing with preset comparison target information
KR101525011B1 (ko) * 2014-10-07 2015-06-09 동국대학교 산학협력단 Nui 기반의 실감형 가상공간 디스플레이 제어장치 및 제어방법
US9972136B2 (en) 2014-12-18 2018-05-15 Facebook, Inc. Method, system and device for navigating in a virtual reality environment
KR20180088754A (ko) * 2014-12-18 2018-08-06 페이스북, 인크. 가상 현실 환경에서의 내비게이션을 위한 방법, 시스템 및 장치
KR20200078855A (ko) * 2018-12-24 2020-07-02 전자부품연구원 두 개의 링크로 구성된 3d 객체의 리깅 보완 방법
KR20200092215A (ko) * 2019-01-24 2020-08-03 한국전자통신연구원 다중 사용자 추적 장치 및 방법
KR102310599B1 (ko) * 2021-05-13 2021-10-13 주식회사 인피닉 3차원 모델에 따른 스켈레톤 데이터 생성 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
KR20230068043A (ko) 2021-11-10 2023-05-17 (주)모션테크놀로지 광학식 마커 방식의 인체 스켈레톤 생성을 위한 칼리브레이션 방법

Also Published As

Publication number Publication date
CN103038727A (zh) 2013-04-10
EP2588941A2 (en) 2013-05-08
WO2012005893A2 (en) 2012-01-12
US20120162065A1 (en) 2012-06-28
JP2013535717A (ja) 2013-09-12
US20110317871A1 (en) 2011-12-29
WO2012005893A3 (en) 2012-04-12

Similar Documents

Publication Publication Date Title
KR20130111248A (ko) 골격 관절 인식 및 트래킹 시스템
US8452051B1 (en) Hand-location post-process refinement in a tracking system
JP6021901B2 (ja) 指認識および追跡システム
EP2486545B1 (en) Human tracking system
US7961910B2 (en) Systems and methods for tracking a model
US8633890B2 (en) Gesture detection based on joint skipping
US9344707B2 (en) Probabilistic and constraint based articulated model fitting
US8660303B2 (en) Detection of body and props
US8963829B2 (en) Methods and systems for determining and tracking extremities of a target
US8953844B2 (en) System for fast, probabilistic skeletal tracking
KR20120051659A (ko) 비주얼 형상의 자동 생성 방법
WO2010138431A2 (en) Systems and methods for tracking a model
WO2010126841A2 (en) Altering a view perspective within a display environment
US20120311503A1 (en) Gesture to trigger application-pertinent information

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid