KR102399399B1 - 표면 재구성에서의 자유 형태 변형의 사용 - Google Patents

표면 재구성에서의 자유 형태 변형의 사용 Download PDF

Info

Publication number
KR102399399B1
KR102399399B1 KR1020177010376A KR20177010376A KR102399399B1 KR 102399399 B1 KR102399399 B1 KR 102399399B1 KR 1020177010376 A KR1020177010376 A KR 1020177010376A KR 20177010376 A KR20177010376 A KR 20177010376A KR 102399399 B1 KR102399399 B1 KR 102399399B1
Authority
KR
South Korea
Prior art keywords
volumes
volume
nodes
graph
vertices
Prior art date
Application number
KR1020177010376A
Other languages
English (en)
Other versions
KR20170056672A (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 KR20170056672A publication Critical patent/KR20170056672A/ko
Application granted granted Critical
Publication of KR102399399B1 publication Critical patent/KR102399399B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • 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
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/557Depth or shape recovery from multiple images from light fields, e.g. from plenoptic cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • G06T7/596Depth or shape recovery from multiple images from stereo images from three or more stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20228Disparity calculation for image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2021Shape modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Processing Or Creating Images (AREA)

Abstract

3D 물리적 공간의 체적들이 표면 재구성 프로세스에서 사용되고, 여기서 인접한 체적들은, 체적들 사이의 갭들 또는 중복들이 존재하지 않도록, 정점들을 공유한다. 그 결과, 표면 재구성 프로세스에서 연속적인 표현이 획득된다. 자세 그래프가 업데이트될 때 정점들의 위치들이 조절되도록, 정점들이 자세 그래프 내의 노드들에 앵커링된다. 그 결과, 체적들의 변형이 가능하게 된다. 체적의 변형에 기초하여, 물리적 공간의 깊이 맵의 영역이 그에 대응하여 변형된다. 각각의 정점이 자세 그래프의 최근접 노드에, 또는 노드들의 조합에 기초하는 지점에 앵커링될 수 있다. 하나의 접근법에서, 지점은 최근접 노드 및 최근접 노드로부터 정의된 반경 내의 다른 노드들에 기초하여 정의된다.

Description

표면 재구성에서의 자유 형태 변형의 사용{USING FREE-FORM DEFORMATIONS IN SURFACE RECONSTRUCTION}
표면 재구성(surface reconstruction)(SR)은 물리적 공간에 있는 물체들의 표면들을 식별하는 것을 포함한다. 예를 들어, 표면들은 벽, 바닥, 천장, 가구 또는 방에 있는 다른 물체들을 표현할 수 있다. 표면들은 물리적 환경의 모델을 제공한다. 이러한 모델은 광범위한 응용분야들에서 사용될 수 있다. 하나의 예는 물리적 공간을 통해 로봇을 안내하는 것이다. 다른 예는, 헤드 마운티드 디스플레이 디바이스(head mounted display device)를 사용하는 것 등에 의해, 가상 객체를 사용자에게 디스플레이하는 것이다.
본원에서 설명되는 기술은 물리적 공간에 있는 표면들을 재구성하는 것에 대한 다양한 실시예들을 제공한다.
물리적 공간의 깊이 맵들은 깊이 센서를 사용하여 획득된다. 깊이 맵은 깊이 센서로부터 물리적 공간에 있는 표면들까지의 거리를 나타내는 깊이 값들을 포함한다. 물리적 공간에 있는 체적들과 관련하여 깊이 맵들이 정의되고, 좌표계와 관련하여 체적들의 위치가 정의된다. 예를 들어, 좌표계는 깊이 센서가 장착(carry)되어 있는 리그(rig)의 자세(pose)(예컨대, 위치 및 배향)에 따라 정의될 수 있다.
그렇지만, 부가의 깊이 맵들이 획득되고 부가의 체적들이 정의됨에 따라 체적들의 위치의 오차들이 축적될 수 있다. 오차들의 축적을 감소시키기 위해, 물리적 공간의 가시 광 영상들이 획득되고 자세 그래프(pose graph)를 형성하는 데 사용된다. 자세 그래프는 리그의 상이한 자세들과 연관되어 있는 노드들 및 대응하는 영상들을 포함한다. 노드들 사이의 링크들은 영상들 사이의 대응관계들, 및 노드들의 좌표계들 사이의 변환들을 나타낸다. 때때로, 새로운 영상들이 포착될 때, 자세 그래프가 업데이트된다. 예를 들어, 노드와 연관된 좌표계를 업데이트하는 것에 의해 노드가 업데이트될 수 있다.
그에 부가하여, 체적들의 정점들(vertices), 예컨대, 코너들이 자세 그래프의 상이한 노드들, 또는 노드들의 조합에 앵커링되거나 그와 연관된다. 상세하게는, 체적들 사이에 갭(gap) 또는 중복(overlap)이 없도록, 인접한 체적들은 공유 면(shared face)들 상에 공유 정점(shared vertex)들을 가질 수 있다. 자세 그래프가 업데이트되고 노드들의 좌표계들이 변할 때, 공유 면들의 정점들이 동일한 노드들, 또는 노드들의 조합에 계속하여 앵커링되도록, 체적들이 형상이 변형될 수 있다. 그렇지만, 정점들이, 적절하다면, 새로운 노드 또는 노드들의 조합에 주기적으로 재앵커링(re-anchor)될 수 있다.
표면 재구성 프로세스가 수행될 때 인접한 체적들 사이의 갭들 및 중복들이 회피되기 때문에, 상이한 체적들에 있는 표면들이 체적들에 걸쳐 매끄럽게 결합(join)될 것이다. 표면들이 자세 그래프의 현재 상태에 따라 언제라도 재구성될 수 있다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징들 또는 필수적인 특징들을 확인하는 것으로 의도되어 있지도 않고, 청구된 발명 요지의 범주를 정하는 데 보조 수단으로 사용되는 것으로 의도되어 있지도 않다.
도면들에서, 유사한 번호가 부기된 요소들은 서로 대응한다.
도 1은 리그, 서버 및 허브 컴퓨팅 시스템을 포함하는 표면 재구성을 위한 시스템(5)의 블록도.
도 2는 도 1의 리그(20)를 헤드 마운티드 디스플레이(HMD) 디바이스(150)로서 구현한 것의 평면도.
도 3은 도 2의 HMD 디바이스(150)의 다양한 컴포넌트들을 나타낸 블록도.
도 4는 도 2의 처리 유닛(105)의 다양한 컴포넌트들을 설명하는 블록도.
도 5는 도 1의 허브 컴퓨팅 시스템(50)의 일 실시예의 블록도.
도 6a는 자세 그래프를 사용하여 물리적 공간에 있는 표면들을 재구성하는 프로세스를 나타낸 도면.
도 6b는 도 6a의 단계(603)의 추가 상세들을 나타낸 도면.
도 6c는 도 6a의 단계(606)의 추가 상세들을 나타낸 도면.
도 6d는 도 6a의 단계(607)의 추가 상세들을 나타낸 도면.
도 7은 도 6a의 프로세스를 수행하기 위한 표면 재구성 파이프라인을 나타낸 도면.
도 8a는 도 7의 3D 융합 서브시스템(734)과 관련하여 논의된 바와 같은 부호있는 거리 함수(signed distance function)(SDF)의 일 예를 나타낸 도면.
도 8b는 도 7의 3D 융합 서브시스템(734)과 관련하여 논의된 바와 같은 복셀(voxel)들에 투사된 깊이 맵의 일 예를 나타낸 도면.
도 9a는 체적들(900 내지 905)의 세트 및 깊이 센서의 절두체(frustum)(920)를 나타낸 도면.
도 9b는, 처음에 위치된 체적(907) 및 위치 변경된 체적(906)에 의해 표현되어 있는 바와 같이, 도 9a의 체적들(900 내지 905)의 세트에 추가되는 새로운 체적을 나타낸 도면.
도 10은 물리적 공간에 있는 리그의 자세들을 표현하는 자세 그래프의 일 예를 나타낸 도면.
도 11a는 카메라에 의해 포착된 영상에 대한 예시적인 데이터 레코드(data record)를 나타낸 도면.
도 11b는 깊이 센서에 의해 포착된 깊이 맵에 대한 예시적인 데이터 레코드를 나타낸 도면.
도 12a는 자세 그래프의 예시적인 데이터 레코드를 나타낸 도면.
도 12b는 체적의 각각의 정점이 상이한 노드에 앵커링되는 제1 체적의 예시적인 데이터 레코드를 나타낸 도면.
도 12c는 제1 체적에 인접해 있고, 체적의 각각의 정점이 상이한 노드에 앵커링되는 제2 체적의 예시적인 데이터 레코드를 나타낸 도면.
도 12d는 체적의 하나의 정점이 노드들의 조합에 앵커링되는 제1 체적의 예시적인 데이터 레코드를 나타낸 도면.
도 12e는 체적의 하나의 정점이 노드들의 조합에 앵커링되는 제2 체적의 예시적인 데이터 레코드를 나타낸 도면.
도 13a는 깊이 센서의 절두체를 보여주는, 예시적인 물리적 공간을 나타낸 도면.
도 13b는 도 13a에 따른 깊이 맵을 나타낸 도면.
도 13c는 도 13b의 깊이 맵의 거리 값들을 나타낸 도면.
도 14a는 가시광 카메라의 시야를 보여주는, 도 13a의 예시적인 물리적 공간을 나타낸 도면.
도 14b는 도 14a의 자세에서 가시광 카메라에 의해 획득되는 영상을 나타낸 도면.
도 14c는 HMD 디바이스의 자세가 변경될 때 가시광 카메라의 다른 시야를 보여주는, 도 13a의 예시적인 물리적 공간을 나타낸 도면.
도 14d는 도 14c의 자세에서 가시광 카메라에 의해 획득되는 영상을 나타낸 도면.
도 15는 도 13a의 물리적 공간에 있는 체적들의 초기 배치를 나타낸 도면.
도 16a는 도 12b 및 도 12c의 데이터 레코드들에 따른, 체적의 각각의 정점이 상이한 노드에 링크되어 있는, 도 15의 체적들 Vol1 및 Vol2를 수반하는 도 6a의 단계(606)의 일 예를 나타낸 도면.
도 16b는 도 12d 및 도 12e의 데이터 레코드들에 따른, 체적의 정점이 노드들의 조합에 링크되어 있는, 도 15의 체적들 Vol1 및 Vol2를 수반하는 도 6a의 단계(606)의 일 예를 나타낸 도면.
도 16c1은 v6에 최근접 노드 N6와 노드 N5 사이의 거리 d5 및 노드 N6와 노드 N11 사이의 거리 d11을 나타낸 도면.
도 16c2는 도 16b의 결합된 좌표계(1660)의 x-축을 나타낸 도면.
도 16d는 체적들 Vol1 및 Vol2가 왜곡되지 않을 때 이 체적들 내의 왜곡되지 않은 객체(object)들의 깊이 맵들을 나타낸 도면. 도 16e는 체적들 Vol1 및 Vol2가 왜곡될 때 이 체적들 내의 왜곡된 객체들의 깊이 맵들을 나타낸 도면.
도 17은 가상 객체가 도 13a의 물리적 공간에 위치되어 있는 예시적인 응용분야를 나타낸 도면.
표면 재구성은, 물리적 공간에서 가상 객체를 위치시키는 것, 플레이 공간을 정의하는 것, 경로 찾기, 충돌 검출 또는 가상 객체들의 폐색을 비롯한, 많은 응용분야들에서 사용될 수 있다.
대규모에 걸친 표면 재구성은 추적 및 매핑 오차들에 대한 강건성을 필요로 한다. 예를 들어, 큰 규모를 가지는 물리적 공간은 집, 사무실 또는 박물관에 있는 방, 또는 실외 공간일 수 있다. 표면 재구성 프로세스에서, 리그 상에 장착된 깊이 센서에 의해 취득되는 다수의 깊이 맵들을 사용하여 표면들이 취득된다. 표면들은 부정확성이 누적되는 경향이 있는 컴퓨터 비전 추적 및 매핑 기법들을 사용하여 서로에 대해 국소화(localize)된다. 게다가, 환경에 관한 추가 정보가 이용 가능하게 됨에 따라 리그의 자세 추정치들이 시간에 따라 변한다.
일부 SR 해결책들은 소규모로 동작하거나 추적 오차들을 무시한다. 그렇지만, 이 결과, 자체 일관성이 없는 SR 데이터가 얻어진다. 더욱이, 일부 SR 해결책들은 체적들 사이의 갭 또는 중복을 허용한다. 갭은 표면 데이터의 결여를 가져오고, 이는 재구성된 표면에서 명확히 눈에 띄게 될 것이다. 중복은 중복적인 또는 충돌하는 데이터를 가져온다. 중복적인 데이터는 메모리, 계산 시간 및 전력과 같은 자원들을 소비한다. 충돌하는 데이터는 가시 아티팩트들을 야기할 수 있다.
본원에서 제공되는 기법들은 상기한 문제들 및 다른 문제들을 해결한다. 하나의 접근법에서, SR 프로세스는 재구성할 다수의 개별적인 SR 체적들을 생성하는 것을 포함한다. 체적의 각각의 정점은 추적 및 매핑 자세 그래프에서 노드(예컨대, 키 프레임(key frame)), 또는 노드들의 조합에 앵커링(예컨대, 그와 연관)될 수 있다. 또한, 인접한 체적들은, 공유 면들을 갖도록, 정점들을 공유할 수 있다. 이 경우에, 각각의 정점의 위치는, 정점이 앵커링되는 각자의 노드의 좌표계 및 자세에 기초하여, 정의될 수 있다. 단일의 체적의 정점들의 위치들은 따라서 상이한 노드들의 좌표계들 및 자세들에 기초하여 정의될 수 있다. 번들 조정(bundle adjustment) 또는 재국소화(re-localization) 등으로 인해, 자세 그래프가 업데이트될 때, 정점들이 그 각자의 노들에 앵커링된 채로 있다. 그 결과, 체적들이 그들의 형상을 변형 및 변화시킬 수 있으며, 체적들 사이의 갭들 및 중복들이 계속하여 회피된다. 실제로는, SR이 수행될 때 이 형상 변화들은, 보통 보이지 않도록, 비교적 작다.
부가의 깊이 맵들이 획득될 때 물리적 공간이 커버되도록 보장하기 위해 새로운 체적들이 생성될 수 있다. 체적들의 정점들이 적절하면 때때로 재앵커링될 수 있다.
도 1 내지 도 5는 표면 재구성을 위해 사용될 수 있는 다양한 시스템들을 기술한다. 도 6 및 이후의 도면들은 표면 재구성 기법들 및 시나리오들을 나타내고 있다.
도 1은 리그(rig), 서버 및 허브 컴퓨팅 시스템을 포함하는 표면 재구성을 위한 시스템(5)의 블록도이다. 리그, 서버 및 허브 컴퓨팅 시스템은 하드웨어 컴퓨팅 디바이스들의 예들이다. 리그(20)는 물리적 공간에서 여기저기로 움직이는 디바이스를 나타낼 수 있다. 디바이스는, 예를 들어, 헤드 마운티드 디스플레이 디바이스 상과 같은, 예를 들어, 사용자, 예컨대, 사람에 의해 휴대되거나 착용되는, 자율 이동 로봇(autonomous mobile robot)에 탑재될 수 있다. 리그는, 여기저기로 움직일 때, 상이한 자세들을 갖는다. 추적 및 매핑 알고리즘들과 관련하여, 자세는 공간 내의 지점 및 방향을 나타낸다. 즉, 자세는 위치와 배향의 조합이다. 리그는, 예컨대, 네트워크(30)를 통해 서버(10)와 통신하기 위한, 통신 인터페이스(21)를 포함한다. 증강 현실 투사 시스템(22)은 표면 재구성이 수행되는 물리적 공간에 증강 현실 영상들(예컨대, 가상 객체들)을 디스플레이하는 데 사용될 수 있다. 제어 회로들(23)은 리그의 다양한 컴포넌트들을 제어하는 데 사용된다. 가시 광 카메라(24)는, 예컨대, 초당 몇 번과 같은 고정된 레이트로, 또는 명시된 때에, 물리적 공간의 영상들을 획득한다.
깊이 센서(25)는 물리적 공간의 깊이 맵을 획득한다. 전형적으로, 깊이 맵들은 카메라 영상들보다 더 적은 빈도수로 획득된다. 깊이 센서는, 예를 들어, TOF(time-of-flight) 카메라 또는 입체 카메라일 수 있다. 시선 검출 시스템(26)은 리그가 헤드 마운티드 디스플레이 디바이스인 경우에 사용자의 시선을 결정하는 데 사용될 수 있다. 예를 들어, 이것은 가상 객체들을 물리적 공간에 위치시키는 데 유용할 수 있다. 배향 센서(27)는 리그의 배향에 관한 수치(reading)들을 획득한다. 예를 들어, 배향 수치(orientation reading)는 각각의 영상 및 깊이 맵과 연관될 수 있다. 이들은, 예를 들어, 이하에서 추가로 논의되는, 관성 센서들일 수 있다. 메모리(28)는 본원에 기술되는 기능을 제공하기 위해 제어 회로들에 의해 실행되는 실행가능 코드를 저장하는 것은 물론, 가시 광 카메라(24), 깊이 센서(25), 시선 검출 시스템(26) 및 배향 센서(27)에 의해 획득되는 정보를 저장할 수 있다.
임의로, 리그는 서버(10)와 통신한다. 예를 들어, 리그는 그가 수집하는 정보의 일부를 업로드하거나, 실행가능 코드, 증강 현실 투사 시스템에 대한 데이터, 또는 다른 콘텐츠와 같은 정보를 다운로드할 수 있을 것이다. 하나의 접근법에서, 서버는 리그로부터 원격지에 있다. 다른 접근법에서, 리그는, 사용자의 집에 있는 것과 같은, 로컬 허브 컴퓨팅 시스템(50)과 통신한다. 허브 컴퓨팅 시스템은, 예를 들어, 다양한 게임 및 비게임 애플리케이션들을 실행하는 게임 콘솔일 수 있을 것이다. 또한 도 5를 참조하기 바란다.
하나의 접근법에서, 네트워크(30)는 WI-FI®, 블루투스®, 적외선(예컨대, IrDA®) 또는 셀룰러(예컨대, GSM)와 같은 무선 네트워크이다. 임의로, 다수의 리그들이 공통의 물리적 공간 내에서 서로 통신할 수 있다.
일반적으로, 통신 인터페이스들은 컴퓨팅 디바이스들 사이의 통신을 가능하게 한다. 제어 회로들은 각자의 컴퓨팅 디바이스들의 하드웨어 및/또는 소프트웨어의 제어를 제공한다. 예를 들어, 제어 회로들은 명령어들을 실행하는 하나 이상의 프로세서들을 포함할 수 있고, 본원에 기술되는 바와 같은 프로세서 또는 컴퓨터 구현 방법들을 수행하도록 프로세서를 프로그래밍하기 위한 프로세서 판독가능 소프트웨어를 포함(embody)하고 있는, 하나 이상의 유형적, 비일시적 프로세서 판독가능 저장 디바이스들, 예컨대, 메모리들에 저장된, 명령어들을 실행하도록 구성된다. 메모리들은 명령어들을 코드로서 저장할 수 있고, 프로세서 판독가능 저장 디바이스들을 제공할 수 있다. 메모리들은 본원에 기술되는 기법들을 수행하기 위해 액세스되는 데이터베이스들, 데이터 저장소들 또는 다른 데이터 소스들을 제공할 수 있다. 메모리들은 하드웨어 메모리 디바이스들일 수 있다.
대안적으로 또는 그에 부가하여, 본원에 기술되는 기능들은, 적어도 부분적으로, 하나 이상의 하드웨어 논리 컴포넌트들에 의해 수행될 수 있다. 제한이 아닌 예로서, 사용될 수 있는 예시적인 유형들의 하드웨어 논리 컴포넌트들은 FPGA(Field-programmable Gate Array)들, ASIC(Program-specific Integrated Circuit)들, ASSP(Program-specific Standard Product)들, SOC(System-on-a-chip system)들, CPLD(Complex Programmable Logic Device)들 등을 포함한다.
이 시스템들의 추가 상세들은 하기의 도면들과 관련하여 제공된다.
도 2는 도 1의 리그(20)를 헤드 마운티드 디스플레이(HMD) 디바이스(150)로서 구현한 것의 평면도이다. HMD 디바이스의 우측만이 상세히 도시되어 있다. HMD 디바이스는 일반적으로 안경테의 형상으로 되어 있을 수 있는 헤드 마운티드 프레임(head-mounted frame)(101), 안경다리들(102 및 103), 및 코 받침(104)을 포함하는 전방 렌즈 프레임(front lens frame)을 포함한다. 구두 사용자 명령들을 비롯한 소리들을 녹음하고 대응하는 오디오 데이터를 처리 유닛(105)으로 전송하기 위한 마이크로폰(110)이 코 받침(104) 내에 내장되어 있다. 투시형 접안 HMD 디바이스(see-through near-to-the-eye HMD device)의 예에서, 렌즈들(116 및 119)은 투시형(see-through)이다. 대안적으로, 몰입형 HMD 디바이스가 사용될 수 있다.
사용자가 디스플레이를 통해 볼 수 있고 그에 의해 HMD 디바이스에 의해 발생되지 않은 영상을 포함하는 현실 세계 장면을 볼 수 있도록, HMD 디바이스가 사용자의 머리에 착용될 수 있다. HMD 디바이스는 그의 컴포넌트들 모두가 프레임에 들어 있도록 자체 완비(self-contained)된 것일 수 있다. 임의로, HMD 디바이스의 하나 이상의 컴포넌트들이 프레임에 들어 있지 않다. 예를 들어, 프레임에 들어 있지 않는 하나 이상의 컴포넌트들은 프레임에 들어 있는 컴포넌트에 전선에 의해 물리적으로 접속될 수 있다.
게다가, 프레임에 들어 있지 않은 하나 이상의 컴포넌트들은 프레임에 들어 있는 컴포넌트와 무선 통신을 할 수 있고, 프레임에 들어 있는 컴포넌트에 전선에 의해 또는 다른 방식으로 물리적으로 접속되지 않을 수 있다. 프레임에 들어 있지 않은 하나 이상의 컴포넌트들은 사용자에 의해, 하나의 접근법에서, 손목 등에 휴대될 수 있다. 예를 들어, 처리 유닛(105)은 전선을 통해 또는 무선 링크를 통해 프레임 내의 컴포넌트에 연결될 수 있을 것이다. 용어 "HMD 디바이스"는 프레임에 있는 컴포넌트(on-frame component)들 및 연관된 프레임에 없는 컴포넌트(off-frame component)들 둘 다를 포괄할 수 있다.
처리 유닛(105)은 HMD 디바이스를 작동시키는 데 사용되는 컴퓨팅 능력의 상당 부분을 포함한다. 프로세서는 본원에 기술되는 프로세스들을 수행하기 위한, 프로세서 판독가능 저장 디바이스에 저장된, 명령어들을 실행할 수 있다. 일 실시예에서, 처리 유닛은 하나 이상의 서버들, 허브 컴퓨팅 시스템들, 다른 HMD들 또는 다른 컴퓨팅 디바이스들과 무선으로 통신한다. 제어 회로들(136)은 HMD 디바이스의 다른 컴포넌트들을 지원하는 다양한 전자 요소들을 제공한다.
HMD 디바이스의 전방에는 하나 이상의 전방(forward-facing) 또는 방을 향해 있는(room-facing) 가시 광 카메라들(113)이 있다. 카메라들은 비디오 및 정지 영상들을 포착하고 영상들을 처리 유닛(4)으로 전송할 수 있는 적어도 하나의 가시 광 비디오 카메라를 포함할 수 있다. 카메라는, 색상들, 패턴들, 형상들, 라인들 등과 같은, 물리적 공간에 있는 특징들을 식별하는 데 사용될 수 있다. 깊이 센서가 적외선 방출기(115) 및 적외선 센서/검출기(117)의 조합에 의해 형성될 수 있다. 가시 광 카메라가 또한 깊이 센서의 일부일 수 있다. 가시 광 카메라(113)는 바깥쪽으로 향해 있고, 사용자의 시점(viewpoint)과 유사한 시점을 가진다.
HMD 디바이스의 프레임의 일부분은 하나 이상의 렌즈들을 포함하는 디스플레이를 둘러싸고 있다. 디스플레이는 도광체 광학 요소(light-guide optical element)(112), 불투명도 필터(opacity filter)(114), 전방 우측 투시형 렌즈(see-through lens)(116) 및 후방 우측 투시형 렌즈(118)를 포함한다. 일 실시예에서, 불투명도 필터(114)는 투시형 렌즈(116)의 후방에 있고 그와 정렬되어 있으며, 도광체 광학 요소(112)는 불투명도 필터(114)의 후방에 있고 그와 정렬되어 있으며, 투시형 렌즈(118)는 도광체 광학 요소(112)의 후방에서 그와 정렬되어 있다. 불투명도 필터(114)는 증강 현실 영상들의 콘트라스트(contrast)를 향상시키기 위해 (픽셀별로 또는 균일하게) 자연 광을 필터링 제거한다. 도광체 광학 요소(112)는 인공 광(artificial light)을 눈으로 향하게 한다(channel). 이와 유사하게, HMD의 좌측은 전방 좌측 투시형 렌즈(119) 및 후방 좌측 투시형 렌즈(121)를 포함한다.
(일 실시예에서) 증강 현실 영상을 투사하기 위한 마이크로디스플레이(microdisplay)(120) 및 마이크로디스플레이(120)로부터의 영상들을 도광체 광학 요소(112) 내로 지향시키기 위한 렌즈(122)를 포함하는, 영상 소스가 안경다리(102)에 또는 그의 내부에 탑재되어 있다. 일 실시예에서, 렌즈(122)는 평행화 렌즈(collimating lens)이다. 증강 현실 방출기(augmented reality emitter)는 마이크로디스플레이, 렌즈(122) 및 도광체 광학 요소(112)와 같은 하나 이상의 광학 컴포넌트들, 및 구동기와 같은 연관된 전자 요소들을 포함할 수 있다. 이러한 증강 현실 방출기는 HMD 디바이스와 연관되어 있고, 광을 사용자의 눈 쪽으로 방출하며, 여기서 광은 증강 현실 정지 또는 비디오 영상들을 나타낸다. 이것은 가상 객체를 물리적 공간에 디스플레이하는 데 사용될 수 있다.
도 3과 관련하여 추가로 논의되는 제어 회로들(136)은 HMD 디바이스의 다른 컴포넌트들을 지원하는 다양한 전자 요소들을 제공한다. 이어폰(130) 및 관성 센서들(132)(예컨대, 도 1의 배향 센서(27)의 일 예)이 안경다리(102)에 또는 그의 내부에 탑재되어 있다. 일 실시예에서, 관성 센서들(132)은 3축 자력계(132A), 3축 자이로(132B), 및 3축 가속도계(132C)(도 3을 참조)를 포함한다. 관성 센서들은 HMD 디바이스의 위치, 배향, 급가속을 감지하기 위한 것이다. 예를 들어, 관성 센서들은 사용자의 머리에 착용된 HMD의 배향 및 위치를 결정하는 데 사용되는 하나 이상의 센서들일 수 있다.
마이크로디스플레이는 영상을 렌즈(122)를 통해 투사한다. 도광체 광학 요소(112)는, 화살표(142)로 나타낸 바와 같이, HMD 디바이스의 전방으로부터의 광이 도광체 광학 요소를 통해 눈(140) 쪽으로 투과될 수 있게 하면서 마이크로디스플레이로부터의 광을 눈(140) 쪽으로 투과하여, 마이크로디스플레이로부터 증강 현실 영상을 수신하는 것에 부가하여, 사용자가 HMD 디바이스의 전방에 있는 공간을 실제로 직접 볼 수 있게 한다. 이와 같이, 도광체 광학 요소의 벽들은 투시형이다. 도광체 광학 요소는 제1 반사면(124)(예컨대, 거울 또는 다른 표면)을 포함한다. 마이크로디스플레이로부터의 광은 렌즈(122)를 통과하여 반사면(124)에 입사하며, 반사면(124)은 입사광을 반사시킴으로써 광이 내부 반사에 의해 도광체 광학 요소를 포함하는 평면 기판 내부에 포획되게 한다. 기판의 표면들로부터의 몇 번의 반사 후에, 포획된 광파들은, 예시적인 반사면(126)을 비롯한, 선택적으로 반사하는 표면들의 어레이에 도달한다.
반사면들(126)은 기판으로부터의 입사 광파들을 사용자의 눈(140)에 결합시킨다. 상이한 광선들은 진행하면서 기판의 내부로부터 상이한 각도들로 튀어나올(bounce) 것인데, 그 이유는 광선들이 다양한 반사면들(126)에 상이한 각도들로 부딪치기 때문이다. 따라서, 상이한 광선들이 반사면들 중 상이한 반사면들에 의해 기판으로부터 반사될 것이다. 어느 광선들이 어느 반사면(126)에 의해 기판으로부터 반사될 것인지의 선택은 반사면들(126)의 적절한 각도를 선택하는 것에 의해 이루어진다. 일 실시예에서, 각각의 눈은 그 자신의 도광체 광학 요소를 가질 것이다. HMD 디바이스가 2개의 도광체 광학 요소들을 가질 때, 각각의 눈은 양쪽 눈에 동일한 영상을 디스플레이하거나 2개의 눈에 상이한 영상들을 디스플레이할 수 있는 그 자신의 마이크로디스플레이를 가질 수 있다. 다른 실시예에서, 광을 양쪽 눈 안으로 반사시키는 하나의 도광체 광학 요소가 있을 수 있다.
도 3은 도 2의 HMD 디바이스(150)의 다양한 컴포넌트들을 나타낸 블록도이다. HMD 디바이스 컴포넌트들은 다양한 조건들을 추적하는 많은 센서들을 포함한다. 예시적인 구현에서, HMD 디바이스는 처리 유닛(105)으로부터 증강 현실 영상에 관한 명령어들을 수신할 수 있고 센서 정보를 다시, 도 4에 도시된, 처리 유닛에 제공할 수 있다. 임의로, 처리 유닛은 또한 서버 또는 허브 컴퓨팅 디바이스로부터 감각 정보를 수신한다. 그 정보 및/또는 다른 기준에 기초하여, 처리 유닛은 증강 현실 영상을 언제 어디서 사용자에게 제공할지를 결정할 수 있고 그에 따라 명령어들을 HMD 디바이스로 송신할 수 있다.
유의할 점은 그 디바이스들 각각이 2개씩(HMD 디바이스의 좌측에 하나 그리고 우측에 하나) 있다는 것을 나타내기 위해, 컴포넌트들 중 일부(예컨대, 눈 추적 카메라(134B), 마이크로디스플레이(120), 불투명도 필터(114), 눈 추적 조명(134A) 및 이어폰(130))가 음영 처리되어(in shadow) 나타내어져 있다는 것이다. 이와 유사하게, 깊이 센서(313)는, 예를 들어, 적외선 방출기(115) 및 적외선 센서/검출기(117)를 포함할 수 있다. 다른 접근법에서, 서로 간에 기지의 간격을 갖는 2개 이상의 카메라들이, 카메라들/HMD 디바이스로부터 객체(object)까지의 거리를 나타내는, 방에 있는 객체들에 대한 깊이 데이터를 획득하기 위해 깊이 카메라로서 사용된다. 임의로, 하나의 가시 광 카메라(113)가 사용된다. 눈 추적 카메라(134B) 및 눈 추적 조명(134A)은 눈 추적 컴포넌트(134)의 일부이다.
전방 카메라들로부터의 영상들은 사용자의 시야에 있는 사람들, 손 제스처들 및 다른 객체들을 식별하는 데 사용될 수 있다. 예를 들어, 사용자가 객체를 가리키는 것과 같은 손 제스처를 행하는 때가 결정될 수 있다. 현실 세계 객체가 식별되고 데이터 스트림과 연관될 수 있거나, 이전에 연관된 데이터 스트림을 디스플레이할 위치로서 사용될 수 있다.
제어 회로(300)는 전력 관리 회로(302)와 통신한다. 제어 회로(300)는 프로세서(310), 메모리(344)(예컨대, DRAM)와 통신하는 메모리 제어기(312), 카메라 인터페이스(316), 카메라 버퍼(318), 디스플레이 구동기(display driver)(320), 디스플레이 포맷터(display formatter)(322), 타이밍 발생기(326), 디스플레이 출력 인터페이스(display out interface)(328), 및 디스플레이 입력 인터페이스(display in interface)(330)를 포함한다. GPS 회로(317)는 HMD 디바이스의 위치를 식별하는 데 사용될 수 있다.
일 실시예에서, 제어 회로(300)의 컴포넌트들 모두는 전용 라인(dedicated line)들 또는 하나 이상의 버스들을 통해 서로 통신한다. 다른 실시예에서, 제어 회로(300)의 컴포넌트들 각각은 프로세서(310)와 통신한다. 카메라 인터페이스/버퍼(316)는 가시 광 카메라에의 인터페이스를 제공하고 가시 광 카메라로부터의 영상들을 저장한다. 깊이 센서 인터페이스/버퍼(318)는 깊이 센서에의 인터페이스를 제공하고 깊이 센서로부터의 영상들을 저장한다.
디스플레이 구동기(320)는 마이크로디스플레이를 구동한다. 디스플레이 포맷터(322)는 마이크로디스플레이 상에 디스플레이되는 증강 현실 영상에 관한 정보를, 불투명도 필터(114)를 제어하는 불투명도 제어 회로(324)에 제공한다. 타이밍 발생기(326)는 시스템에 대한 타이밍 데이터를 제공하기 위해 사용된다. 디스플레이 출력 인터페이스(328)는 전방 카메라들(113)로부터의 영상들을 처리 유닛(105)에 제공하기 위한 버퍼이다. 디스플레이 입력 인터페이스(330)는 마이크로디스플레이 상에 디스플레이될 증강 현실 영상과 같은 영상들을 수신하기 위한 버퍼이다.
디스플레이 출력 인터페이스(328) 및 디스플레이 입력 인터페이스(330)는, 처리 유닛이 전선에 의해 HMD 디바이스의 프레임에 접속되거나 무선 링크에 의해 통신하고 사용자의 손목에 있는 손목 밴드에 착용될 때, 처리 유닛에의 인터페이스인 밴드 인터페이스(332)와 통신한다. 이 접근법은 HMD 디바이스의 프레임에 들어 있는 구성요소들의 중량을 감소시킨다. 다른 접근법들에서, 언급된 바와 같이, 처리 유닛이 프레임에 들어 있을 수 있고 밴드 인터페이스가 사용되지 않는다.
전력 관리 회로(302)는 전압 조정기(voltage regulator)(334), 눈 추적 조명 구동기(337), 오디오 DAC 및 증폭기(338), 마이크로폰 전치 증폭기 및 오디오 ADC(340) 그리고 클럭 발생기(345)를 포함한다. 전압 조정기(334)는 처리 유닛으로부터 밴드 인터페이스(332)를 통해 전력을 받고 그 전력을 HMD 디바이스의 다른 컴포넌트들에 제공한다. 눈 추적 조명 구동기는, 앞서 기술된 바와 같이, 눈 추적 조명(134A)을 위한 적외선(IR) 광원을 제공한다. 오디오 DAC 및 증폭기(338)는 이어폰(130)으로부터 오디오 정보를 수신한다. 마이크로폰 전치 증폭기 및 오디오 ADC(340)는 마이크로폰(110)에 대한 인터페이스를 제공한다. 전력 관리 유닛(302)은 또한, 배향 센서의 일부인, 3축 자력계(132A), 3축 자이로스코프(132B) 및 3축 가속도계(132C)에 전력을 제공하고 그로부터 다시 데이터를 수신한다.
도 4는 도 2의 처리 유닛(105)의 다양한 컴포넌트들을 설명하는 블록도이다. 제어 회로(404)는 전력 관리 회로(406)와 통신한다. 제어 회로(404)는 CPU(central processing unit)(420), GPU(graphics processing unit)(422), 캐시(424), RAM(426), 메모리(430)(예컨대, DRAM)와 통신하는 메모리 제어기(428), 플래시 메모리(434)(또는 다른 유형의 비휘발성 저장소)와 통신하는 플래시 메모리 제어기(432), 밴드 인터페이스(402) 및 밴드 인터페이스(332)(사용될 때)를 통해 HMD 디바이스와 통신하는 디스플레이 출력 버퍼(436), 밴드 인터페이스(402) 및 밴드 인터페이스(332)(사용될 때)를 통해 HMD 디바이스와 통신하는 디스플레이 입력 버퍼(438), 마이크로폰에 연결하기 위해 외부 마이크로폰 커넥터(442)와 통신하는 마이크로폰 인터페이스(440), 무선 통신 컴포넌트(446)에 연결하기 위한 PCI(Peripheral Component Interconnects) 익스프레스 인터페이스(444), 및 USB 포트(들)(448)를 포함한다.
일 실시예에서, 무선 통신 컴포넌트(446)는 Wi-Fi® 지원 통신 디바이스, 블루투스® 통신 디바이스, 적외선 통신 디바이스를 포함할 수 있다. 무선 통신 컴포넌트(446)는, 하나의 구현에서, HMD 디바이스에 의해 디스플레이되는 콘텐츠와 동기하여 데이터를 수신하는 무선 통신 인터페이스이다. 게다가, 수신된 데이터에 응답하여 증강 현실 영상들이 디스플레이될 수 있다. 하나의 접근법에서, 이러한 데이터는 서버, 허브 컴퓨팅 시스템, 로컬 Wi-Fi® 네트워크 또는 WLAN, 휴대폰 네트워크, 로컬 저장 디바이스 또는 다른 소스로부터 수신된다.
USB 포트는, 데이터 또는 소프트웨어를 처리 유닛에 로딩하는 것은 물론, 처리 유닛을 충전시키기 위해, 처리 유닛을 허브 컴퓨팅 디바이스(50)에 도킹시키는 데 사용될 수 있다. 일 실시예에서, CPU(420) 및 GPU(422)는 증강 현실 영상들을 어디서, 언제 그리고 어떻게 사용자의 뷰에 삽입해야 하는지를 결정하기 위한 주된 수단들이다.
전력 관리 회로(406)는 클럭 발생기(460), 아날로그-디지털 변환기(462), 배터리 충전기(464), 전압 조정기(466) 및 HMD 전원(476)을 포함한다. 아날로그-디지털 변환기(462)는 AC 전원을 받아서 시스템에 대한 DC 전원을 생성하기 위한 충전 잭(470)에 연결되어 있다. 전압 조정기(466)는 시스템에 전력을 공급하기 위해 배터리(468)와 통신한다. 배터리 충전기(464)는 충전 잭(470)으로부터 전력을 받을 때 (전압 조정기(466)를 통해) 배터리(468)를 충전시키는 데 사용된다. HMD 전원(476)은 전력을 HMD 디바이스에 제공한다.
어디서, 어떻게 그리고 언제 증강 현실 영상을 삽입해야 하는지를 결정하는 계산들은 HMD 디바이스에 의해 그리고/또는 HMD 디바이스와 통신하는 컴퓨팅 디바이스에 의해 수행될 수 있다.
하나의 예시적인 실시예에서, HMD 디바이스는, HMD 디바이스의 시야에 기초하여, 사용자가 있는 환경의 모델을 생성하고 그 환경에 있는 다양한 객체들을 추적할 것이다. 모델 및 추적 정보가 처리 유닛에 제공된다. HMD 디바이스에 의해 획득된 센서 정보가 처리 유닛으로 전송된다. 처리 유닛은 사용자의 시야를 미세 조정(refine)하고 어떻게, 어디서 그리고 언제 증강 현실 영상들을 삽입할지에 관한 명령어들을 HMD 디바이스에 제공한다.
도 5는 도 1의 허브 컴퓨팅 시스템(50)의 일 실시예의 블록도이다. 이 실시예에서, 컴퓨팅 시스템은 게임 콘솔과 같은 멀티미디어 콘솔(500)이다. 멀티미디어 콘솔은 CPU(501), 및 플래시 ROM(Read Only Memory)(503), RAM(Random Access Memory)(506), 하드 디스크 드라이브(508), 및 휴대용 매체 드라이브(505)를 비롯한, 다양한 유형들의 메모리에의 프로세서 액세스를 용이하게 하는 메모리 제어기(502)를 가진다. 일 구현에서, CPU는 데이터를 일시적으로 저장하기 위한 레벨 1 캐시(510) 및 레벨 2 캐시(512)를 포함하고, 따라서 하드 드라이브(508)에 대해 행해지는 메모리 액세스 사이클들의 수를 감소시킴으로써 처리 속도 및 처리율(throughput)을 향상시킨다.
CPU, 메모리 제어기, 및 다양한 메모리 디바이스들은 하나 이상의 버스들(도시되지 않음)을 통해 상호 연결된다.
일 구현에서, CPU, 메모리 제어기, ROM, 및 RAM은 공통의 모듈(514) 상에 통합된다. 이 구현에서, ROM은 PCI 버스 및 ROM 버스(이들 중 어느 것도 도시되지 않음)를 통해 메모리 제어기에 연결되어 있는 플래시 ROM으로서 구성된다. RAM은 개별적인 버스들(도시되지 않음)을 통해 메모리 제어기에 의해 독립적으로 제어되는 다수의 DDR SDRAM(Double Data Rate Synchronous Dynamic RAM) 모듈들로서 구성된다. 하드 디스크 드라이브 및 휴대용 매체 드라이브는 PCI 버스 및 ATA(AT Attachment) 버스(516)를 통해 메모리 제어기에 연결되는 것으로 도시되어 있다.
GPU(520) 및 비디오 인코더(522)는 고속 및 고해상도 그래픽 처리를 위한 비디오 처리 파이프라인을 형성한다.
오디오 처리 유닛(524) 및 오디오 코덱(코더/디코더)(526)은 다양한 디지털 오디오 포맷들의 다채널 오디오 처리를 위한 대응하는 오디오 처리 파이프라인을 형성한다. 오디오 데이터는 통신 링크(도시되지 않음)를 통해 오디오 처리 유닛과 오디오 코덱 사이에서 전달된다. 비디오 및 오디오 처리 파이프라인들은 텔레비전 또는 다른 디스플레이로 전송하기 위해 데이터를 A/V(오디오/비디오) 포트(528)로 출력한다. 예시된 구현에서, 비디오 및 오디오 처리 컴포넌트들(520, 522, 524, 526 및 528)은 모듈 상에 탑재된다.
모듈(514)은 USB 호스트 제어기(531) 및 네트워크 인터페이스(532)를 포함한다. USB 호스트 제어기는 버스(예컨대, PCI 버스)를 통해 CPU 및 메모리 제어기와 통신하는 것으로 도시되어 있고, 주변기기 컨트롤러들(504(1) 내지 504(4))에 대한 호스트로서 역할을 한다. 네트워크 인터페이스는 네트워크(예컨대, 인터넷, 홈 네트워크 등)에의 액세스를 제공하고, 광범위한 각종의 유선 또는 무선 인터페이스 컴포넌트들 중 임의의 것일 수 있다.
도시된 구현에서, 콘솔은 4개의 주변기기 컨트롤러들을 지원하기 위한 컨트롤러 지원 서브어셈블리(540)를 포함한다. 컨트롤러 지원 서브어셈블리는, 예를 들어, 매체 및 게임 컨트롤러와 같은, 외부 컨트롤 디바이스와의 유선 및 무선 동작을 지원하는 데 필요한 임의의 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 전면 패널 I/O 서브어셈블리(542)는 전원 버튼(512) 및 꺼내기 버튼(541)의 다수의 기능들은 물론, 콘솔의 외측 표면 상에 노출되어 있는 임의의 LED(light emitting diode)들 또는 다른 표시기(indicator)들을 지원한다. 서브어셈블리들은 하나 이상의 케이블 어셈블리들(544)을 통해 모듈과 통신한다. 다른 구현들에서, 콘솔은 부가의 컨트롤러 서브어셈블리들을 포함할 수 있다. 광학 I/O 인터페이스(535)는 모듈(514)로 전달될 수 있는 신호들을 송신하고 수신한다. 인터페이스는 리모콘(590)에 응답할 수 있다.
메모리 유닛(MU)(540(1))과 메모리 유닛(MU)(540(2))은, 각각, MU 포트 "A"(530(1))와 MU 포트 "B"(530(2))에 연결 가능하다. 부가의 MU들(예컨대, MU들(540(3) 내지 540(6))은 주변기기 컨트롤러들(504(1) 및 504(3))(즉, 각각의 컨트롤러에 대해 2개의 MU들)에 연결 가능한 것으로 예시되어 있다. 컨트롤러들(504(2) 및 504(4))는 또한 MU들(도시되지 않음)을 수납하도록 구성될 수 있다. 각각의 MU는 게임들, 게임 파라미터들, 및 다른 데이터가 저장될 수 있는 부가의 저장소를 제공한다. 일부 구현들에서, 다른 데이터는 디지털 게임 컴포넌트, 실행가능 게임 애플리케이션, 게임 애플리케이션을 확장시키기 위한 명령어 세트, 및 미디어 파일 중 임의의 것을 포함할 수 있다. 콘솔 또는 컨트롤러에 삽입될 때, MU는 메모리 제어기에 의해 액세스될 수 있다. 시스템 전원 모듈(550)은 콘솔의 컴포넌트들에 전력을 제공한다. 팬(552)은 콘솔 내의 회로부를 냉각시킨다. 마이크로컨트롤러 유닛(554)이 또한 제공된다.
머신 명령어들을 포함하는 애플리케이션(560)은 하드 디스크 드라이브에 저장된다. 콘솔이 전원이 켜질 때, 애플리케이션의 다양한 부분들이, CPU 상에서의 실행을 위해, RAM 및/또는 캐시들 내로 로딩되고, 여기서 애플리케이션은 하나의 이러한 예이다. 다양한 애플리케이션들이 CPU 상에서의 실행을 위해 하드 디스크 드라이브 상에 저장될 수 있다.
콘솔은 그 시스템을 모니터, 텔레비전, 비디오 프로젝터, 또는 다른 디스플레이 디바이스에 단순히 연결시키는 것에 의해 독립형 시스템으로서 작동될 수 있다. 이 독립형 모드에서, 콘솔은 한 명 이상의 플레이어들이 게임들을 플레이하거나, 예컨대, 영화를 보거나 음악을 듣는 것에 의해, 디지털 미디어를 즐길 수 있게 한다. 그렇지만, 광대역 연결의 통합이 무선 인터페이스를 통해 이용 가능하게 되는 경우, 콘솔은 또한 보다 큰 네트워크 게임 커뮤니티에의 참가자로서 작동될 수 있다.
도 6a는 자세 그래프를 사용하여 물리적 공간에 있는 표면들을 재구성하는 프로세스를 나타내고 있다. 대규모 표면 재구성은 다수의 소스 위치들로부터의 범위(깊이) 데이터를 위치 맞춤(register)하는 것을 포함한다. 그 소스 위치들이 멀리 떨어질수록, 소스 위치들을 상호 위치 맞춤(co-register)하는 데 있어서의 오차들이 커진다. ICP(iterative closest point)와 같은 상호 위치 맞춤(co-registration) 기법들은 소규모에서는 문제점을 해결하지만, 대규모에 걸쳐서는, 드리프트(drift) 또는 뒤틀림(twist)과 같은, 바람직하지 않은 아티팩트들을 야기한다. 하나의 접근법은 체적들을 자세 그래프 내의 노드들에 앵커링하는 것 및, 갭들을 회피하기 위해, 인접한 체적들 사이의 중복을 허용하는 것을 수반한다. 그 해결책은 누적된 전역 추적 오차(accumulated global tracking error) - 항상 이용 가능하거나 정확한 것은 아님 - 를 아는 것으로부터 이득을 본다. 게다가, 이는 개별적인 체적들 모두로부터의 표면들을 결합시키기 위해 메시 지퍼링(mesh zippering)을 사용한다.
SLAM(Simultaneous Localization and Mapping) 또는 PTAM(Parallel Tracking and Mapping)과 같은, 추적 및 매핑 해결책은 세상에 있는 "특징들"의 좌표들의 추정치들에 대응하는 노드들을 갖고 그 노드들 사이의 변환들에 대응하는 링크들을 갖는 자세 그래프를 산출한다. 이들은, 물리적 환경에서의 리그의 위치를 동시에 추적하면서, 미지의 환경의 맵을 구성하는(또는 기지의 환경 내의 맵을 업데이트하는) 기법들이다.
노드들 및 링크들 둘 다는 자세 그래프가, 예컨대, 부가의 측정들을 추가로 처리하거나 포함시키는 것으로 인해, 미세 조정될 때 시간에 따라 변하는 오차들을 포함한다. 각각의 깊이 맵(범위 데이터 영상)은 자세 그래프 내의 노드에 대한 자세(위치 및 배향)를 할당받는다. 또한 융합 체적(fusion volume)들 - 그 각각은 자세 그래프 내의 노드 또는 노드들에 앵커링됨 - 의 집합체가 있다. 자세 그래프가 시간에 따라 진화할 때, 체적들이 이동(migrate)하고, 일반적으로, 개별적으로 이동한다. 이 문제를 해결하기 위해, 각각의 체적에 대해 단일의 앵커를 사용하는 대신에, 하나의 접근법에서, 각각의 융합 체적의 각각의 정점이 상이한 자세 그래프 노드에 앵커링될 수 있다. 예를 들어, 정육면체 융합 체적은 8개의 정점들 그리고 따라서 적어도 8개의 앵커들을 갖는다. 게다가, 인접한 체적들이 공유 정점들을 갖는 공유 면을 갖도록, 각각의 융합 체적은 그의 이웃들과 완벽하게 정렬되게 그리고 그의 이웃들에 인접하여 위치된다. 정점들이 이동할 때, 정점들이 일제히 이동하며, 이는 모든 체적들이 완벽하게 평면으로 이어진(flush) - 갭들 또는 중복들이 없음 - 채로 있다는 것을 의미한다. 이것은 각각의 체적에 자유 형태 변형을 적용하는 것과 동등하다. 더욱이, 변형이 융합 이전 또는 융합 이후 중 어느 하나에서, 또는 융합 이전과 융합 이후 둘 다에서 적용될 수 있어, 자세 그래프 미세 조정으로부터 이득을 보는 대규모 재구성을 달성한다.
단계(600)는 리그가 물리적 공간에서 상이한 자세들로 움직이는 것을 나타낸다. 예를 들어, 리그는, 물리적 공간의 영상들을 연속적으로 포착하면서, 물리적 공간 여기저기로 움직이는 로봇 또는 사용자에 의해 착용된 HMD 디바이스일 수 있다. 단계(601)는 리그 상의 가시 광 카메라로부터 물리적 공간의 영상들을 획득하는 것을 포함한다. 단계(602)는 리그 상의 배향 센서로부터 배향 수치들을 획득하는 것을 포함한다. 단계(603)는 자세 그래프를 제공하고 업데이트하기 위해 영상들 및 배향 수치들을 처리하는 것을 포함한다. 예를 들어, 자세 그래프가 제1 상태로부터 제2 상태로 업데이트될 수 있다. 단계(604)는 리그 상의 깊이 센서로부터 물리적 공간의 체적들의 배향 깊이 맵들을 획득하는 것을 포함한다. 깊이 맵은 센서로부터 물리적 공간에 있는 객체까지의 거리, 및 센서와 객체 사이의 배향을 나타낸다. 깊이 맵은, 리그가 깊이 데이터가 획득되지 않은 물리적 공간의 영역 쪽으로 겨냥되어 있을 때와 같이, 상이한 때에 획득될 수 있다.
단계(605)는 물리적 공간을 체적들로 파티셔닝하고, 적절한 경우, 새로운 체적을 생성하는 것을 포함한다. 체적은 물리적 공간에 있는 정육면체(cube), 직평행육면체(cuboid) 또는 다른 육면체(hexahedron)와 같은 균일한 형상의 공간일 수 있다. 다른 다면체 형상들도 사용될 수 있을 것이다. 하나의 접근법에서, 체적이 블록들이라고 지칭되는 서브체적(sub-volume)들로 분할되고, 여기서 체적당 NxNxN 개의 블록들이 있고, N은 1 이상의 정수이다. 게다가, 각각의 블록이 8x8x8 개의 복셀들로 분할될 수 있다.
단계(606)는 체적들의 정점들을 자세 그래프 내의 지점들에 앵커링하는 것을 포함한다. 자세 그래프 내의 각각의 지점은, 예를 들어, 노드 또는 노드들의 조합일 수 있다. 일반적으로, 체적의 정점들은 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링된다.
정점을 자세 그래프 내의 지점에 앵커링한다는 것은 물리적 공간에서의 정점의 위치가 그 지점의 좌표계에 기초하여 정의된다는 것을 의미한다. 좌표계는 노드의 좌표계, 또는 다수의 노드들의 좌표계들의 선형 결합으로서 획득된 좌표계일 수 있다. 추가 상세들에 대해서는 도 6c를 참조하기 바란다.
단계(607)는 물리적 공간에 있는 표면들을 자세 그래프의 상태에 기초하여 재구성하는 것을 포함한다. 유의할 점은, 단계들 중 일부가 동시에 또는 상이한 순서들로 수행될 수 있다는 것이다. 일반적으로, 영상들을 획득하는 것 및 자세 그래프를 업데이트하는 것이 깊이 맵들을 획득하는 것 및 표면들을 재구성하는 것과 분리하여 일어날 수 있다. 이와 유사하게, 깊이 맵들을 획득하는 것이 영상들을 획득하는 것 및 자세 그래프를 업데이트하는 것과 분리하여 일어날 수 있다. 리그가 계속하여 움직일 때, 부가의 영상들 및 깊이 맵들이 포착되고 처리될 수 있다. 프로세스에 관한 추가 상세들은 이하에서 제공된다.
도 6b는 도 6a의 단계(603)의 추가 상세들을 나타내고 있다. 단계(603)는 자세 그래프를 제공하고 업데이트하기 위해 영상들 및 배향 수치들을 처리하는 것을 포함하였다. 단계(610)는 배향 수치 및 리그의 자세의 영상을 입력하는 것, 및 영상 특징들을 결정하는 것을 포함한다. 일반적으로, 영상을 축소된(compact) 방식으로 표현하기 위해, 데이터 저장 요구사항들을 감소시키기 위해 그리고 특징 기반 영상 정합(feature-based image matching)을 용이하게 하기 위해 영상이 처리될 수 있다. 영상은 색상들, 패턴들, 형상들, 라인들 등과 같은 특징들을 포함할 수 있고, 2개의 영상들에 공통인 특징들이 식별될 수 있다. 영상들을 표현하는 하나의 방식은 특징 검출자(detector) 및 기술자(descriptor)를 사용하는 것이다. 흔히 사용되는 기술자들은 SIFT(Scale Invariant Feature Transform) 및 SURF(Speeded Up Robust Features)를 포함한다. 이들은 스케일, 회전 및 조명 변화들에 강건한 것으로 알려져 있다.
예를 들어, SIFT 기법에서, 물리적 공간에 있는 객체들의 특징점(keypoint)들이 먼저 참조 영상들의 세트로부터 추출되고 데이터베이스에 저장된다. 새로운 영상으로부터의 각각의 특징을 이 데이터베이스와 개별적으로 비교하고, 그들의 특징 벡터들의 유클리드 거리(Euclidean distance)에 기초하여, 후보 정합 특징들을 찾아내는 것에 의해 새로운 영상에서 객체가 인식된다. 정합(match)들의 전체 세트로부터, 양호한 정합들을 필터링 제거하기 위해 새로운 영상 내의 객체 및 그의 위치, 스케일, 및 배향에 관해 일치하는 특징점들의 서브셋들이 식별된다. 일반화된 허프 변환(Hough transform)의 효율적인 해시 테이블 구현을 사용함으로써 일관된 클러스터들의 결정이 신속하게 수행된다. 객체 및 그의 자세에 관해 일치하는 3개 이상의 특징들의 각각의 클러스터는 이어서 추가적인 상세한 모델 검증을 거치고, 그 후에, 이상치(outlier)들이 폐기된다. 마지막으로, 적합 정확도(accuracy of fit) 및 틀릴 가능성이 있는 정합(probable false match)들의 수가 주어지면, 특정의 특징 세트가 객체의 존재를 나타낼 확률이 계산된다. 이 테스트들 모두를 통과하는 객체 정합들은 높은 신뢰도로 올바른 것으로 식별될 수 있다.
결정 단계(611)는 자세가 새로운 것인지를 결정한다. 하나의 접근법에서, 자세가 이전의 자세 또는 다른 자세와 충분히 상이하지 않으면, 자세가 새로운 것이 아닌 것으로 간주될 수 있고, 이 경우에 흐름은 단계(610)로 되돌아간다. 예를 들어, 배향이 다른 노드들에서와 상당히 상이하다면, 자세가 새로운 것일 수 있다. 또는, 영상의 특징들이 다른 노드들에서와 상당히 상이하다면 또는 마지막 새로운 자세 이후로 명시된 양의 시간이 경과했다면 자세가 새로운 것일 수 있다. 하나의 접근법에서, 카메라는 비디오 영상들 및 노드를 정의하는 데 사용하기에 적당한 선택된 영상들의 시퀀스를 제공한다.
자세가 새로운 것이면, 단계(612)는 새로운 노드를 자세 그래프에 추가한다. 단계(613)는 자세의 배향과 연관된 좌표계를 결정한다. 또는, 좌표계가 이미 결정되어 있을 수 있다. 단계(614)는 자세를 취하고 촬영된 영상(예컨대, 리그/카메라가 자세를 취했을 때 리그 상의 카메라에 의해 포착된 영상)과 새로운 노드를 갖는 좌표계를 연관시킨다. 예를 들어, 이것은, 이하에서 추가로 논의되는 바와 같이, 정보를 데이터베이스에 저장하는 것을 포함할 수 있다. 영상이, 픽셀 데이터 및/또는 추출된 특징 데이터를 비롯한, 임의의 형태로 표현되고 저장될 수 있다. 단계(615)는 새로운 노드와 연관된 영상과 자세 그래프 내의 하나 이상의 다른 노드들의 영상들 사이의 대응관계를 결정한다. 예를 들어, 이것은 새로운 노드의 영상의 특징들을 자세 그래프 내의 새로운 노드에 가까운 하나 이상의 다른 노드들의 영상들의 특징들과 비교하는 것을 포함할 수 있다. 2개의 영상들에 있는 특징들이 비교적 유사할 때, 2개의 영상들 사이의 대응관계가 비교적 높다. 예를 들어, 대응관계의 정도는 SIFT 기법을 사용하여 결정될 수 있다.
단계(616)는 새로운 노드의 좌표계와 하나 이상의 다른 노드들의 좌표계들 사이의 변환을 결정한다. 단계(617)는 변환 및 대응관계를 새로운 노드와 하나 이상의 다른 노드들 사이의 하나 이상의 링크들과 연관시킨다. 단계(618)는, 적절한 경우, 자세 그래프 내의 다른 노드들 및 링크들을 업데이트한다. 예를 들어, 자세 그래프의 상태를 업데이트하는 것은 좌표계들 및 변환들이 조정되는 번들 조정을 수행하는 것, 또는 대응관계들 중 하나 이상을 업데이트하는 것, 또는 자세 그래프에서 토폴로지(topology)의 변화가 있는 재국소화를 수행하는 것을 포함할 수 있다. 예를 들어, 재국소화는, 자세 그래프에서 노드들의 폐루프가 형성되는, 루프 폐쇄(loop closure)를 포함할 수 있다.
도 6c는 도 6a의 단계(606)의 추가 상세들을 나타내고 있다. 단계(606)는 체적들의 정점들을 자세 그래프 내의 지점들에 앵커링하는 것을 포함하였다. 단계(620)는 체적의 정점을 선택하는 것을 포함한다. 체적에 대해, 정점이 어떤 지점에 앵커링될 것인지에 관한 결정이 각각의 정점에 대해 개별적으로 행해질 수 있다. 단계(621)는 최근접 노드를 결정한다. 하나의 접근법은 정점을 최근접 노드에 앵커링하는 것이다. 예를 들어, 정점과 각각의 노드 간의 거리가 결정될 수 있고, 여기서 가장 작은 거리를 갖는 노드가 선택된다. 정점과 노드 사이의 거리는 정점과 노드의 좌표계의 원점 사이의 거리로서 정의될 수 있다. 추가의 상세들에 대해서는, 예컨대, 도 16a를 참조하기 바란다.
하나의 옵션에서, 단계(622)는 정점을 최근접 노드에 앵커링한다. 결정 단계(623)에서, 앵커링할 체적 내의 다음 정점이 없으면, 프로세스는 단계(624)에서 종료된다. 앵커링할 다음 정점이 있으면, 다음 정점을 선택하는 것에 의해 단계(620)가 반복된다. 제2 옵션에서, 단계(625)는 최근접 노드로부터 반경 내에 있는 하나 이상의 다른 노드들을 식별한다. 단계(626)는 최근접 노드와 하나 이상의 다른 노드들의 조합인 지점을 결정한다. 예를 들어, 지점은 최근접 노드의 좌표계들의 원점들과 하나 이상의 다른 노드들 사이의 중앙 지점일 수 있다.
예를 들어, 도 16b를 참조하기 바란다. 단계(627)는 정점을 지점에 앵커링한다. 이 접근법은 정점을, 최근접 노드로부터 명시된 거리 내에 있는 모든 노드들의 조합과 같은, 노드들의 조합에 기초하는 지점에 앵커링할 수 있다. 추가의 상세들에 대해서는, 예컨대, 도 16b를 참조하기 바란다. 최근접 노드가 결정되면, 최근접 노드로부터 명시된 반경 내에 있는 노드들이 식별될 수 있다. 예를 들어, 이것은 그들의 좌표계의 원점이 최근접 노드의 좌표계의 원점으로부터 반경 내에 있는 노드들일 수 있다. 반경은 다른 노드들이 위치해 있는 구를 정의한다. 하나의 접근법에서, 반경이 고정되어 있다. 다른 접근법에서, 반경이 최근접 노드와 정점 사이의 거리의 명시된 퍼센트이다. 체적이 비교적 더 클 때 반경이 비교적 더 크도록, 반경 또는 다른 거리가 또한 체적의 크기의 함수일 수 있을 것이다.
정점을 노드들의 조합에 기초하는 지점에 앵커링하는 것은 표면 재구성이 수행될 때 평활화 효과(smoothing effect)를 제공할 수 있다.
최근접 노드에 비교적 가까운 노드들을 식별하기 위해 구 이외의 형상들을 사용하는 것이 가능하다.
노드 또는 노드들의 조합이 식별되면, 정점이, 이하에서 추가로 논의되는 바와 같이, 예컨대, 데이터베이스 내의 레코드를 업데이트하는 것에 의해, 식별된 노드 또는 노드들의 조합에 앵커링된다. 이와 같이, 체적의 정점이, 정점이 노드의 좌표계에 기초하여 물리적 공간에 위치되도록, 노드와 연관된다. 노드의 좌표계가 조정될 때, 물리적 공간에서의 체적의 정점의 위치가 또한 조정된다. 전형적으로, 체적의 정점이 하나의 노드에 계속하여 앵커링되지만, 자세 그래프를 업데이트하는 것으로 인해, 상이한 노드의 자세가 체적을 획득하는 데 사용된 자세에 보다 가깝게 되는 경우와 같이, 체적의 정점이 상이한 노드에 재앵커링되는 것이 가능하다. 또한, 하나의 정점 대 하나의 노드 방식으로 또는 다수의 정점들 대 하나의 노드 방식으로, 정점들이 노드들에 앵커링될 수 있다. 이와 유사하게, 하나의 정점 대 하나의 지점 방식으로 또는 다수의 정점들 대 하나의 지점 방식으로, 정점들이 자세 그래프 내의 지점들에 앵커링될 수 있다.
어떤 경우에, 자세 그래프가 시작될 때와 같이, 정점들보다 더 적은 노드들이 있을 수 있다. 처음에, 하나의 노드만이 있을 수 있고, 이 경우에 모든 정점들이 그 노드 앵커링될 것이다. 새로운 노드들이 추가될 때, 정점들이 새로운 노드들에 재앵커링될 수 있다. 자세 그래프를 업데이트하는 것은 하나 이상의 노드들을 자세 그래프에 추가하는 것을 포함할 수 있고, 여기서, 하나 이상의 체적들에 대해, 하나 이상의 노드들을 자세 그래프에 추가하는 동안 체적의 정점들이 앵커링되는 자세 그래프 내의 지점들의 수가 증가한다.
도 6d는 도 6a의 단계(607)의 추가 상세들을 나타내고 있다. 단계(607)는 물리적 공간에 있는 표면들을 자세 그래프의 상태에 기초하여 재구성하는 것을 포함하였다. 단계(630)는 표면 재구성을 위한 하나 이상의 체적들 및 연관된 깊이 맵들을 식별하는 것을 포함한다. 예를 들어, 이 체적들은 사용자의 시야에 있는 물리적 공간의 일부분에 대응할 수 있다. 사용자가 그의 머리를 돌려 물리적 공간의 상이한 부분들을 쳐다볼 때, 표면 재구성에 관여된 체적들이 그에 따라 변할 수 있다. 단계(631)는 하나 이상의 체적들이 앵커링되는 하나 이상의 노드들을 결정하는 것을 포함한다. 이것은 데이터베이스에서 체적에 교차 참조되는 노드를 탐색하는 것에 의해 행해질 수 있다. 단계(632)는 하나 이상의 노드들의 좌표계들을 결정하는 것을 포함한다. 이것은 데이터베이스에서 노드에 교차 참조되는 좌표계를 탐색하는 것에 의해 행해질 수 있다. 단계(633)는 하나 이상의 좌표계들에 기초하여 하나 이상의 체적들을 하나 이상의 깊이 맵들에 투사하는 것을 포함한다. 기본적으로, 깊이 맵의 깊이 값들이 좌표계에 기초하여 체적의 부분들과 연관되도록, 깊이 맵은 좌표계에 대해 정의된다.
도 7은 도 6a의 프로세스를 수행하기 위한 표면 재구성 파이프라인을 나타내고 있다. 이 예시적인 구현에서, SR 파이프라인은 ASIC(Application-Specific Integrated Circuit)(700) 및 SoC(System-on-a-Chip)(740) 둘 다에 걸쳐 실행된다. ASIC 및 SoC 각각은 다수의 디바이스들 및 서브시스템들을 호스팅한다. 화살표들은 데이터 흐름 방향을 나타낸다. 센서들(710)은 ASIC에 연결된다. 센서가 HMD 디바이스 또는 로봇과 같은 리그 상에 장착된다. 이 센서들은 회전 및 선가속도(linear acceleration)를 감지하는 관성 측정 유닛(inertial measurement unit)(IMU)과 같은 배향 센서(711)를 포함한다. 가시 광 카메라(712)는 물리적 공간의 가시 광 영상들을 획득하고, 깊이 센서(713)는 물리적 공간의 깊이 맵을 획득한다. 예시적인 구현은 TOF(time of flight) 카메라를 깊이 센서로서 사용한다. 이 센서는 카메라로부터 비춰지고, 물리적 공간에 있는 표면들에서 튀어나오며, 센서로 되돌아가는 광의 RTT(round-trip time)를 측정한다. 총 RTT(round-trip time)는 수십 나노초가 걸린다. 깊이 센서의 다른 구현은 가시 광 카메라들의 스테레오 쌍(stereo pair)이지만, 이 접근법은 보다 낮은 품질의 깊이 맵을 가져올 수 있다.
추적 서브시스템(720)은 센서 데이터를 자세들 및 상호 연결된 좌표 프레임(coordinate frame)들의 맵으로 변환한다. 예를 들어, 이것은 HMD 디바이스의 예시적인 경우에 머리 추적 서브시스템일 수 있다. 추적 서브시스템(720)은 맵 서비스 서브시스템(741)에 응답하고, 추적 및 매핑 프로세스(721)를 포함한다. 추적 서브시스템(720)과 맵 서비스 서브시스템(741)은 함께 추적 및 매핑 서브시스템(742)을 포함한다.
SR 융합 및 추출 커널(SR Fusion and Extraction Kernel)(SRFEK)(730)은 깊이 맵들 및 자세들을 표면 데이터로 변환한다. SRFEK는 ASIC 상에서 실행하고, ASIC 및 SoC 둘 다 내의 다른 프로세스들과 통신한다. SRFEK는 2개의 입력 데이터, 깊이 맵들 및 자세들을 받아들인다. 원시 대 깊이 서브시스템(raw to depth subsystem)(731)은 깊이 센서로부터 원시 적외선 영상들을 포착하고 그들을 깊이 맵들에서의 깊이 값들로 변환한다. 깊이 값들은 물리적 공간에 있는 하나 이상의 표면들과 깊이 센서 사이의 거리를 나타낸다. 이 깊이 맵들은 렌즈 왜곡(lens distortion)을 갖는다. 이것을 해결하기 위해, 무왜곡 서브시스템(undistortion subsystem)(732)은, 왜곡되지 않은 깊이 맵을 제공하기 위해, 카메라의 렌즈로부터의 왜곡의 효과들을 깊이 영상들로부터 제거한다. 이것은 편평한 왜곡되지 않은 영상을 생성하기 위해 렌즈 왜곡의 모델 - 그의 파라미터들은 교정(calibration)을 통해 측정됨 - 을 적용하는 것을 포함할 수 있다. 런타임 시에, 이것은 무왜곡 맵(undistortion map)(룩업 테이블)을 생성하는 것 및 그것을 각각의 깊이 맵 픽셀에 적용하는 것을 포함할 수 있다.
3D 융합 서브시스템(734)은 왜곡되지 않은 깊이 맵을 3D 체적에 융합시키기 위해 왜곡되지 않은 깊이 맵을 자세와 결합시킨다. 융합은 (2D 영상들인) 깊이 맵들을 (3D인) 체적에 투사하는 것을 포함한다. 예를 들어, 깊이 센서로부터 객체의 표면까지의 거리를 나타내는 부호있는 거리 함수(SDF)가 사용될 수 있다. 추가의 상세들에 대해서는 도 8a 및 도 8b를 참조하기 바란다.
추출 알고리즘(733)은 그 체적 데이터로부터 폴리곤 메시(polygon mesh)를 생성한다. 모든 애플리케이션들이 폴리곤 메시를 필요로 하는 것은 아니지만, 그들은 렌더링 및 충돌에 대해 메시들을 사용하는 게임 엔진들과 같은 애플리케이션들에서 종종 유용하다. SDF 체적을 채운(populate) 후에 메시를 추출하는 하나의 방식은 마칭 큐브(Marching Cubes)라고 불리우는 알고리즘을 사용한다. 마칭 큐브를 뒷받침하는 착상은 체적 데이터의 각각의 상자를 폴리곤들의 세트로 변환하는 것을 포함하고, 여기서 그 폴리곤들의 정점들은 상자들의 에지들 상에 있다.
3D 융합 서브시스템(734) 및 추출 알고리즘(733)의 출력들은 SRFEK 캐시(735)에 저장될 수 있다. 이 출력은 물리적 공간의 지오메트리(geometry)를 나타내는 재구성된 표면들을 포함한다.
SR 서비스(750)는 SRFEK를 제어하는 상위 레벨 프로세스이며, SRFEK에 데이터 청크들 및 그 데이터를 처리할 명령들을 제공한다. SR 서비스는 또한 표면 재구성으로부터 획득되는 표면 데이터를 애플리케이션들에 피드한다. 이 서비스는, 깊이 맵들이 어디서 언제 필요한지에 기초하여, 깊이 맵의 취득을 언제 트리거링할지를 결정하는 깊이 맵 취득 서브시스템(751)을 포함한다. 체적 배치 서브시스템(752)은 물리적 공간을 체적들로 어떻게 파티셔닝할지, 예컨대, 몇 개의 체적들을 생성할지와 그들을 어디에 위치시킬지를 결정한다. 체적들을 어디에 위치시킬지를 결정하는 것은 초기 문제이다. 이전에 정의된 SR 체적들의 세트로 시작할 수 있다. 추가의 상세들에 대해서는 도 9a 및 도 9b를 참조하기 바란다.
SR 데이터는 많은 메모리를 차지할 수 있고, 따라서 이 서비스는, 캐시 축출 및 보충 서브시스템(cache eviction and replenishment subsystem)(753)을 사용하여, 어느 데이터를 메모리, 예컨대, SR 서비스 캐시(754)에 보관할지와 어느 것을 나중에 사용하기 위해, 예컨대, 백업 저장소(backing store)(755)에 저장할지를 결정한다. SR 서비스는 어떤 SR 데이터를 축출하고 보충할지, 데이터를 언제 축출하고 보충할지를 결정하고, 애플리케이션들에 SR 데이터를 공급한다. SR 서비스는, 물리적 공간의 크기 및 발생되는 데이터의 양 둘 다의 면에서, 스케일을 관리하는 데 유용하다. 본 시스템은 사용자의 바로 근처를 넘어 연장되는 물리적 스케일들에 대해, 예컨대, 사무실 건물에서와 같이 몇 미터의 물리적 공간들에서 작동해야만 한다. 무차별적 해결책들은 작동하지 않을 것인데, 그 이유는 보통 크기의 영역들조차도 수백 또는 수천 개의 SR 체적들을 사용하고 각각의 SR 체적이 몇 메가바이트를 사용할 수 있기 때문이다. SR 시스템은 공간을 체적들로 파티셔닝하는 것 및 그 체적들을 메모리와 디스크 사이에서 페이징(전송)하는 것에 의해 스케일링할 수 있다.
SR 서비스는 캐시 축출 및 보충 서브시스템으로 지속성(persistence) 및 데이터 확장성(data scalability) 둘 다를 달성할 수 있다. 예를 들어, 이 서브시스템은 체적들의 최대 수를 설정할 수 있다. 이것은 SR 서비스가 소비하는 SoC 메인 메모리의 양에 대한 상한을 제공한다. 더 많은 데이터, 또는 더 많은 SR 체적들을 추가하는 것에 의해 그 상한이 초과될 때, 어떤 다른 체적들을 축출시킬 수 있다. 이것은, SR 서비스가 가장 멀리 있는, 예컨대, 리그로부터 가장 멀리 있는 체적들을 축출할 수 있다는 것을 제외하고는, LRU(least-recently-used) 축출 정책과 유사하다. 더욱이, 리그가 이전에 SR 데이터를 포착하였던 영역에 다시 들어갈 때, 캐시가 그 데이터로 보충될 수 있다. 이와 같이, 가장 가까운 체적들을 리그에 로딩하는 것에 의해 백업 저장소로부터 캐시를 간헐적으로 보충할 수 있다. 유의할 점은, 새로운 체적들이 또한 캐시 채우기(cache population)에 기여하도록 새로운 체적들이 여전히 추가될 수 있다는 것이다.
많은 애플리케이션들이 SR 데이터를 유사한 방식들로 소비할 수 있다. SR 확장들 및 유틸리티들 서브시스템(SR extensions and utilities subsystem)(760)은 애플리케이션 개발자들을 위한 공통 기능들을 제공한다. 확장들 및 유틸리티들은 홀로그램들을 현실 세계 지오메트리로 폐색하기 위한 폐색 렌더링(occlusion rendering)(761), 유용한 보조 정보를 추가하기 위한 메시 후처리(mesh post-processing)(762), 실제 객체와 가상 객체 사이의 충돌 검출(collision detection)(763), 플레이 공간 정의(play space definition)(764) 및 홀로그램 배치에 도움을 주는 네거티브 공간 할당(negative space allocation)(765)을 포함할 수 있다. SR 메시 후처리 루틴들의 예들은 정점들을 접합(weld)시키는 것, 메시들을 지퍼링하는 것, 표면 법선(surface normal)들을 계산하는 것, 중복하는 메시들로부터 삼각형들을 클리핑하는 것, 메시들을 평활화(smooth)하는 것, 및 폴리곤들의 수를 감소시키기 위해 메시들을 단순화하는 것을 포함한다.
홀로그램 배치와 관련하여, 특정 종류들의 홀로그램 배치 로직(hologram placement logic)에 대해 메시들이 너무 미세하고 복잡할 수 있다. 그 대신에, 애플리케이션 개발자들은 벽, 천장 및 바닥과 같은 추상적 개념(abstraction)들을 다루는 것이 더 쉽다는 것을 알 수 있다. 하나의 해결책은 편평한 삼각형들을 찾아내고, 연결된 편평한 영역들을 식별하며, 이어서 평면들을 그 영역들에 끼워맞추는 것이다. 낮은 곡률의 인접한 영역들을 찾아내기 위해, 다수의 개별적인 메시들이 먼저 단일의 인접한 메시로 결합된다. 이것은 접합 및 지퍼링이 유용한 경우이다.
표면 법선들을 계산하는 것과 관련하여, 편평한 영역들을 찾아내기 위해, 표면 곡률을 계산하는 것이 유용하다. SR 파이프라인은, (유한 차분(finite difference)들을 사용하여) SDF로부터 또는 (면별 법선(per-face normal)들을 사용하여) 메시로부터, 정점별 법선(per-vertex normal)들을 발생시킬 수 있다.
SR 메시 후처리의 다른 예는 카메라로부터 포착되는 바와 같은 텍스처를 적용하는 것이다.
도 8a는 도 7의 3D 융합 서브시스템(734)과 관련하여 논의된 바와 같은 부호있는 거리 함수(SDF)의 일 예를 나타내고 있다. 수평축은 깊이 센서로부터 물리적 공간에 있는 객체(800)까지의 거리를 나타낸다. 수직축은 SDF의 값을 나타낸다. 객체는 전면(801) 및 배면(802)을 갖는다. 라인(805)은 SDF를 나타낸다. 객체 외부에 있는 영역들은 플러스 거리를 갖고, 객체 내부에 있는 영역들은 마이너스 거리를 가지며, 객체의 표면에 있는 영역들은 0의 값을 갖는다. 어떤 경우에, 객체의 전면은 검출되지만 배면을 검출되지 않는다. 융합은 복셀들의 체적을 복셀들을 깊이 맵들에 투사하는 것으로부터 추론되는 SDF 값들로 채우는 것을 포함한다. SDF 체적으로 시작하고, 이어서 깊이 맵 및 그 체적에 대한 깊이 맵의 자세를 취득한다. 융합 알고리즘은 자세를 갖는 깊이 맵(posed depth map)을 다음과 같이 도입한다. 각각의 복셀에 대해, 복셀을 깊이 맵에 투사하고, 표면으로부터의 거리에 대한 복셀의 거리에 따라 SDF 값을 업데이트한다. 표면들은 마이너스 SDF 값과 플러스 SDF 값 사이의 경계에 있고, 여기서 함수는 0 - 소위 영 레벨 세트(zero level set) - 이다. 각각의 깊이 맵에 대해 이 절차가 반복된다.
도 8b는 복셀들에 투사된 깊이 맵의 일 예를 나타내고 있다. 각각의 정사각형은 복셀을 나타낸다. 도시된 복셀들은 하나 이상의 블록들의 일부일 수 있다. 실선(810)은 객체의 표면을 나타낸다. 파선(811)은 검출되지는 않지만, 감지될 수 있는 최대 깊이를 넘어서, 센서로부터 멀리 떨어져 있는 것으로 가정되는 표면을 나타낸다. 이 표면에 대한 깊이 값들은 기본 깊이(default depth)로 설정될 수 있다. 이 라인들이 통과하는 복셀들은 SDF=0을 가지며, 복셀(813)에서와 같이, 대각선이 그려진 패턴으로 나타내어져 있다. 객체 내부에 있는 것으로 간주되는 복셀들은 SDF<0을 가지며, 복셀(812)에서와 같이, 점이 찍힌 패턴으로 나타내어져 있다. 객체 외부에 있는 것으로 간주되는 복셀들은 SDF>0을 가지며, 복셀(814)에서와 같이, 패턴이 없는 상자들로 나타내어져 있다. 라인(815)은 깊이 센서의 시야 절두체(view frustum)의 경계를 나타낸다. 도시된 시야는 방의 오버헤드 시야(overhead view)일 수 있고, 여기서 라인(810)은 벽과 벽에 있는 액자를 나타낸다.
도 9a는 체적들(900 내지 905)의 세트 및 깊이 센서의 절두체(920)를 나타내고 있다. 유의할 점은 체적들 사이의 어떤 중복이 나타내어져 있다는 것이다. 체적들 중 일부는 체적들을 서로 명확히 구별하기 위해 파선 패턴들로 나타내어져 있다. SR 서비스가 깊이 맵를 취득하기로 결정할 때, 깊이 센서가 활성화된다. 절두체는 깊이 센서의 시야, 예컨대, 깊이 수치(depth reading)들이 획득될 수 있는 물리적 공간의 일부분을 나타낸다. SR 서비스는 이어서 깊이 맵 절두체를 SR 체적들의 세트와 비교한다. 깊이 맵 절두체의 임의의 부분이 어떤 SR 체적에 의해서도 커버되지 않으면, 서비스는 새로운 체적을 생성할 수 있다. 그렇지만, 새로운 체적의 배치는, 다른 체적들에 대한 그의 배향을 비롯하여, 문제가 된다. 새로운 체적은 처음에 절두체가 어떤 기존의 체적에 의해서도 커버되지 않는 어딘가에 위치될 수 있다. 이어서, 새로운 체적은 기존의 체적들과 정렬하고 그들과 정점들을 공유하도록 위치 변경된다. 위치 변경은 새로운 체적의 위치를 미세 조정하는 물리적 공간에서의 평행 이동 및/또는 회전을 포함할 수 있다.
도 9b는, 처음에 위치된 체적(907) 및 위치 변경된 체적(906)에 의해 표현되어 있는 바와 같이, 도 9a의 체적들(900 내지 905)의 세트에 추가되는 새로운 체적을 나타내고 있다.
도 10은 물리적 공간에 있는 리그의 자세들을 표현하는 자세 그래프(1000)의 일 예를 나타내고 있다. 자세 그래프는 링크들에 의해 연결된 노드들을 포함한다. 노드는 가시 광 카메라에 의해 포착된 바와 같은 물리적 공간의 영상, 및 연관된 좌표계를 포함한다. 2개의 노드들 사이의 링크(예컨대, 연결선(edge))는 2개의 노드들의 영상들 사이의 대응관계 및 2개의 노드들의 좌표 프레임들 사이의 변환들을 포함한다. 자세 그래프는 리그의 경로 사이클(path cycle)을 나타낸다. 화살표(1210)는 리그의 경로를 나타낸다. 예시적인 노드들은 N1 내지 N9이다. 예시적인 링크들은 노드 N1과 노드 N2 사이에 있는 링크 L(N1,N2) 및 노드 N1과 노드 N3 사이에 있는 링크 L(N1,N3)이다.
상세하게는, 리그의 자세 그래프는 표면 재구성을 위해 물리적 공간에 있는 체적들의 정점들의 배치를 최적화하는 데 사용될 수 있다. 공간 파티셔닝의 문제는 SR에 특정되지 않고, 많은 공간 파티셔닝 방식들이 있다. 본원에 기술되는 기법들이 SR에 대해 잘 동작하는 이유를 이해하기 위해, 먼저 리그 추적이 어떻게 동작하는지의 다양한 양태들을 살펴본다. 리그의 추적 및 매핑 서브시스템(742)(도 7)은 리그의 카메라에 의해 포착되는 영상들(예컨대, 사진들)을 분석하는 것에 의해 공간 및 시간을 통한 리그의 궤적을 추적한다. 리그가 처음으로 전원이 켜지고 카메라가 영상들을 포착하는 것을 상상해보자. 추적 및 매핑 서브시스템은 영상들로부터 특징들을 추출하고, 영상들에서의 특징들의 위치들을 추정하며, 특징들을 저장한다. 추적 및 매핑 서브시스템은 또한 위치들 및 배향들을 측정하기 위해 사용할 좌표계(예컨대, 좌표 프레임)를 생성한다. 영상들 및 좌표계 둘 다는 노드와 함께 맵에 저장된다. 이어서 리그가 움직인다. 추적 및 매핑 서브시스템은 더 많은 사진들을 촬영하고 맵이 다른 노드와 연관시키는 다른 좌표 프레임을 생성한다. 맵 서비스 서브시스템(741)은 제1 및 제2 영상들이 어떤 공통 특징들을 갖는다는 것을 인식한다. 매퍼(mapper)는 그 2개의 노드들 사이의 상대 자세(relative pose)들을 추정하기 위해 컴퓨터 비전 알고리즘들 및 IMU 데이터를 사용한다.
노드들 사이의 링크는 영상들 사이의 대응관계들 및 2개의 노드들의 좌표계들 사이의 변환을 나타낸다. 그렇지만, 매퍼가 노드들 사이의 변환에 대한 다수의 추정치들을 획득할 수 있을 때, 그 변환들은 일관성이 없을 수 있다. 추적 및 매핑 시스템은 좌표 변환들 및 특징 위치들을 조정하는 것에 의해 일관성 없음을 최소화한다. 이것은 번들 조정이라고 불리운다. 리그가 여기저기로 움직일 때, 매퍼는 노드들 및 링크들을 계속하여 추가하고, 이는 부가의 자세 조정들을 가져온다. 그 결과, 물리적 공간의 맵이 시간에 따라 변한다. 즉, 특징 위치들의 추정치들이 움직이고 자세 그래프가 미세 조정된다. 예를 들어, 자세 그래프 내의 링크들이 거리 또는 배향을 변경할 수 있다. SR은 자세 조정들에 대해 강건해야만 한다.
이 문제가 얼마나 심각할 수 있는지와 영상 내의 특징이 얼마나 멀리 움직이는 것처럼 보일 수 있는지를 이해하기 위해, 루프 폐쇄 - 갑작스런 형태의 자세 그래프 조정 - 를 살펴본다. 루프 폐쇄는 재국소화의 한 형태이다. 예를 들어, 리그가 개별적인 공간들을 연결시키는 영역들을 방문하는 일 없이 개별적인 공간들을 방문하는 것을 상상해보자. 매퍼는 각각의 공간에 대한 개별적인 맵 성분(map component)들을 가질 것이다. 이어서, 리그가 공간들 사이의 영역들을 방문하는 것을 상상해보자. 추적 및 매핑 서브시스템은 영역들이 연결되어 있다고 인식할 것이고, 링크들을 자세 그래프에 추가할 것이다. 재국소화는 자세 그래프에 대한 임의의 토폴로지적 변경을 지칭한다.
리그들이 이미 방문했던 공간 내의 어떤 지점에서 끝날 때 하나의 형태의 루프 폐쇄가 일어나고, 추적 및 매핑 서브시스템은 그 사실을 관찰한다. 예를 들어, HMD 디바이스를 착용하고 있는 사용자가 미술관에서와 같은 전시실 내로 걸어가고, 출발 위치에서 시작하여, 사용자에 가장 가까운 벽과 항상 마주한다고 상상해보자. 사용자는 전시실 건너편이나 사용자의 후방을 보지 않는다. 추적 및 매핑 서브시스템이 새로운 노드들을 생성할 때, 사용자는 이어서, 각각의 벽을 차례로 보면서, 전시실을 일주한다. 사용자가 출발 위치로 되돌아오기 직전에, 추적 및 매핑 서브시스템은 다시 출발 지점에 있다는 것을 아직 인식하지 않는다. 그러나, 궁극적으로, 추적 및 매핑 서브시스템은 사용자가 출발 지점에 있던 동안 포착된 특징들을 인식할 것이고, 이 루프의 시작과 끝에서 촬영된 영상들 사이의 대응관계들을 식별할 것이다. 추적 및 매핑 서브시스템은 따라서 자세 그래프에 새로운 링크를 생성함으로써, 폐루프를 형성할 것이다. 루프 폐쇄 직전에, 루프의 시작과 끝 사이의 변환은 다수의 홉들을 필요로 한다. 루프 폐쇄 직후에, 루프의 시작과 끝 사이의 변환은 단일의 홉만을 필요로 한다. 각각의 홉은 어떤 오차를 가지며, 오차들은 누적된다. 누적된 오차들의 양은 루프 폐쇄 직후에 더 작다. 따라서, 루프 폐쇄 직전과 직후에, 노드들 사이의 변환들이 갑자기 변할 것이다. 본원에서 제공되는 기법들은 SR 프로세스가 체적들을 노드들 및 자세 그래프에서의 노드들의 좌표계들에 앵커링하는 것에 의해 자세 그래프에 대한 조정들로부터 이득을 볼 수 있게 한다. 자세 그래프가 변할 때, 체적들의 정점들이 그들이 앵커링되어 있는 자세 그래프 노드를 따라가기 때문에 SR 체적들이 합류한다.
도 11a는 카메라에 의해 포착된 영상에 대한 예시적인 데이터 레코드를 나타내고 있다. 각각의 영상, 또는 비디오에서와 같은 영상들의 세트가 데이터 레코드, 예컨대, Image 1에 저장될 수 있다. 리그의 배향 수치, 예컨대, OR1이 영상과 연관될 수 있다.
도 11b는 깊이 센서에 의해 포착된 깊이 맵에 대한 예시적인 데이터 레코드를 나타내고 있다. 각각의 깊이 맵은 데이터 레코드, 예컨대, DM1에 저장될 수 있다. 리그의 배향 수치, 예컨대, OR1이 깊이 맵과 연관될 수 있다.
도 12a는 자세 그래프의 예시적인 데이터 레코드를 나타내고 있다. 노드에 대한 레코드는 노드 식별자, 예컨대, N1, 카메라 영상, 예컨대, Image1 및 좌표계, 예컨대, CS1을 포함할 수 있다. 링크 L(N1,N2)에 대한 레코드는 링크 식별자, 예컨대, L(N1,N2), 영상 대응관계 데이터, 예컨대, C(N1,N2), 및 좌표계들 사이의 변환, 예컨대, T(N1,N2)를 포함할 수 있다. 링크 L(N1,N3)에 대한 레코드는 링크 식별자, 예컨대, L(N1,N3), 영상 대응관계 데이터, 예컨대, C(N1,N3), 및 좌표계들 사이의 변환, 예컨대, T(N1,N3)을 포함할 수 있다. 변환은 행렬인 하나의 좌표계를 행렬인 다른 좌표계에 관련시키는 행렬일 수 있다.
도 12b는 체적의 각각의 정점이 상이한 노드에 앵커링되는 제1 체적의 예시적인 데이터 레코드를 나타내고 있다. 예를 들어, 이것은, 도 15 및 도 16a 내지 도 16e와 관련하여 역시 논의되는, Vol1일 수 있다. 레코드는 체적 식별자, 예컨대, Vol1, 및 체적의 각각의 정점에 대한 엔트리를 포함한다. 각각의 엔트리는 정점 식별자 및 정점이 앵커링되는 지점의 식별자를 포함한다. 예를 들어, 정점들 v1, v2, v3, v4, v5, v6, v7 및 v8은, 각각, 노드들 N1, N2, N3, N4, N5, N6, N7 및 N8에 앵커링된다.
도 12c는 제1 체적에 인접해 있고, 체적의 각각의 정점이 상이한 노드에 앵커링되는 제2 체적의 예시적인 데이터 레코드를 나타내고 있다. 예를 들어, 이 제2 체적은, 도 15 및 도 16a 내지 도 16e와 관련하여 역시 논의되는, Vol2일 수 있다. 예를 들어, 정점들 v2, v4, v6, v8, v9, v10, v11 및 v12는, 각각, 노드들 N2, N4, N6, N8, N9, N10, N11 및 N12에 앵커링된다. 보는 바와 같이, Vol1과 Vol2는 공통 노드들 v2, v4, v6 및 v8을 갖는다. 이 공통 노드들은 이 2개의 인접한 체적들의 공통 면(common face)을 정의한다.
도 12d는 체적의 하나의 정점이 노드들의 조합에 앵커링되는 제1 체적의 예시적인 데이터 레코드를 나타내고 있다. 여기서, v6은 N5, N6 및 N11의 조합에 앵커링된다.
도 12e는 체적의 하나의 정점이 노드들의 조합에 앵커링되는 제2 체적의 예시적인 데이터 레코드를 나타내고 있다. 도 12d에 따라, v6은 노드들 N10, N11 및 N12의 조합에 앵커링된다.
도 13a는 깊이 센서의 절두체를 보여주는, 예시적인 물리적 공간을 나타내고 있다. 물리적 공간(1300)은 리그의 일 예로서 HMD 디바이스(1302)를 착용하고 있는 사용자(1301)의 집에서와 같은 방이다. HMD 디바이스 상의 깊이 센서는 후방 평면(1304)과 방의 벽(1306)에 있는 전방 평면(1305) 사이에 연장되는 절두체(1303)에 의해 표현되는 시야를 갖는다. 벽은 출입구(1307) 및 장식용 그림(1308)을 포함한다. 그림은 벽(1306)에 부착되어 있고, 눈에 띄는 깊이를 갖는다. 라인(1309)은 깊이 센서의 시야의 중심축, 예컨대, 깊이 센서(및 사용자 및 HMD 디바이스)가 보고 있는 방향을 나타낸다. xr, yr 및 zr의 직교축들을 갖는 직교 좌표계(1310)는 HMD 디바이스의 예시적인 좌표계이다(r은 리그를 나타냄). 예를 들어, xr 축은 리그의 배향을 나타내는 (라인(1309)과 일치하는) 벡터와 동일한 방향을 가질 수 있다. yr 축은 지면에 평행하게 연장되는 것으로 정의될 수 있다. zr 축은 이어서 xr 축과 yr 축에 직교이다. x, y 및 z의 직교축들을 갖는 물리적 공간의 직교 좌표계(1311)가 또한 도시되어 있다. 깊이 센서는 좌표계의 원점에 있다.
도 13b는 도 13a에 따른 깊이 맵(1315)을 나타내고 있다. 깊이 맵은 벽(1306)에 대한 영역(1320), 그림(1308)에 대한 영역(1321), 및 출입구(1307)에 대한 영역(1322)을 포함한다.
도 13c는 도 13b의 깊이 맵의 거리 값들을 나타내고 있다. 수평축은, yr 축의 방향과 같은, 깊이 센서의 중앙 라인(1309)에 직교인 방향을 나타낸다. 수직축은, xr 축을 따른 거리와 같은, 객체와 깊이 센서 사이의 거리를 나타낸다. 라인(1330)은 깊이를 나타낸다. 벽의 깊이에 대응하는 라인의 부분들은 Dwall의 깊이 값을 갖는다. 그림의 깊이에 대응하는 라인의 부분은 Dpainting의 깊이 값을 갖는다. 출입구의 깊이에 대응하는 라인의 부분은, 깊이 센서에 의해 검출될 수 있는 최대 깊이인, Dmax의 깊이 값을 갖는다. 이 경우에, 깊이 센서가 출입구를 통해 검출 범위를 벗어나 있는 표면까지 보기 때문에, 깊이 값이 최댓값으로 설정될 수 있다. Dmin은 깊이 센서에 의해 검출될 수 있는 최소 깊이를 나타낸다.
도 14a는 가시광 카메라의 시야를 보여주는, 도 13a의 예시적인 물리적 공간을 나타내고 있다. 일반적으로, 카메라의 시야(1340)가 깊이 센서의 시야와 상이할 수 있지만, 그들이 동일한 방향, 예컨대, HMD 디바이스의 방향을 볼 수 있고, 그들이 실질적으로 중복해 있을 수 있다. 이 예에서, 카메라의 시야(1340)는 깊이 센서의 시야보다 약간 더 좁고 더 길다. HMD 디바이스의 좌표계(1310)는 일 예로서 도 13a에서와 동일하지만, 꼭 이럴 필요는 없다. 축은 깊이 센서의 중앙 라인(1309)과 동일한 카메라의 중앙 라인과 일치할 수 있다.
도 14b는 도 14a의 자세에서 가시광 카메라에 의해 획득되는 영상을 나타내고 있다. 영상(1400)은 벽을 나타내는 부분(1401), 그림을 나타내는 부분(1402), 및 출입구를 나타내는 부분(1403)을 포함한다.
도 14c는 HMD 디바이스의 자세가 변경될 때 가시광 카메라의 다른 시야를 보여주는, 도 13a의 예시적인 물리적 공간을 나타내고 있다. 이 경우에, 사용자는 HMD 디바이스 상의 카메라가 물리적 공간의 상이한 영상을 포착하도록 움직였다. 예를 들어, 사용자는 머리를 회전했을 수 있고 그리고/또는 방에서 여기저기로 걸었을 수 있다. 시야(1420)는 도 14a의 좌표계(1310)와 상이한 좌표계(1430)에 대해 정의된다. 하나의 접근법에서, xr 축은 카메라의 중앙 라인(1421)과 일치한다.
도 14d는 도 14c의 자세에서 가시광 카메라에 의해 획득되는 영상을 나타내고 있다. 영상(1440)은 벽(1306) 및 인접한 벽(1415)을 나타내는 부분(1441) 및 그림을 나타내는 부분(1442)을 포함한다. 알 수 있는 바와 같이, 영상들(1400 및 1440)은 그림의 프레임의 수평 라인들(1444), 그림의 프레임의 수직 라인들(1443), 및 그림에 있는 꽃 및 꽃병의 색상들 및 형상들과 같은 대응하는 특징들을 가질 것이다.
도 15는 도 13a의 물리적 공간에 있는 체적들의 초기 배치를 나타내고 있다. 시야 절두체(1303)는 시야 절두체를 둘러싸도록 위치되어 있는 8개의 체적들(도 12b의 예시적인 체적 Vol1 및 도 12c의 Vol2를 포함함)과 함께 나타내어져 있다. 체적들은 처음에 그들 사이에 갭들 또는 중복들이 없도록 서로에 인접하여 위치된다. 체적들의 정점들은, 논의되는 바와 같이, 하나 이상의 노드들 또는 노드들의 조합에 대해 정의된다. 체적들은, 이 예에서, 정육면체들이고, 처음에 하부 표면이 지면에 평행한 채로 위치된다.
도 16a는 도 12b 및 도 12c의 데이터 레코드들에 따른, 체적의 각각의 정점이 상이한 노드에 링크되어 있는, 도 15의 체적들 Vol1 및 Vol2를 수반하는 도 6a의 단계(606)의 일 예를 나타내고 있다. Vol1은 v1 내지 v8로 라벨링된 정점들을 포함한다. Vol2는 v2, v4, v6 및 v8 (Vol1와 공유됨) 그리고 v9, v10, v11 및 v12로서 라벨링된 정점들을 포함한다. 이 예에서, 간단함을 위해 2개의 체적들만이 있지만, 다른 것들도 사용될 수 있을 것이다. 정점들 중 일부 정점들의 앵커링이 일 예로서 나타내어져 있다. 예를 들어, v5는 노드 N5 및, 원점 O5와 축들 x5, y5 및 z5를 갖는, 그의 좌표계(1610)에 앵커링되어 있다. 각각의 축은 물리적 공간에서 방향을 가지는 벡터인 것으로 간주될 수 있다. v6은 노드 N6 및, 원점 O6과 축들 x6, y6 및 z6을 갖는, 그의 좌표계(1620)에 앵커링되어 있다. v11은 노드 N11 및, 원점 O11과 축들 x11, y11 및 z11을 갖는, 그의 좌표계(1630)에 앵커링되어 있다. v9는 노드 N9 및, 원점 O9와 축들 x9, y9 및 z9를 갖는, 그의 좌표계(1640)에 앵커링되어 있다. 일반적으로, 상이한 좌표계의 z 축들은 서로 평행할 수 있고, 높이를 나타낼 수 있다. x 축과 y 축이 좌표계들 간에 상이할 수 있다.
도 16b는 도 12d 및 도 12e의 데이터 레코드들에 따른, 체적의 정점이 노드들의 조합에 링크되어 있는, 도 15의 체적들 Vol1 및 Vol2를 수반하는 도 6a의 단계(606)의 일 예를 나타내고 있다. v5, v11 및 v9는 도 16a에서와 같이 N5, N11 및 N9에 앵커링되어 있다. 그렇지만, v6은, 정사각형으로 나타낸 바와 같이, 지점(1650)에 앵커링되어 있다. 그 지점은 축들 xc, yc 및 zc을 포함하는 좌표계(1660)의 원점 Oc이다. 명확함을 위해 좌표계가 개별적으로 도시되어 있다. 이 예에서, N6이 먼저 v6에 가장 가까운, 자세 그래프 내의 모든 기존의 노드들 중의 노드로서 식별된다. 그 후에, N5 및 N11이 N6으로부터 반경 R(명시된 거리) 내에 있는 노드들로서 식별된다. 예를 들어, 원점 Oc는 O5, O6 및 O11 사이의 중앙 지점으로서 정의되어, 각각의 원점/노드에 똑같은 가중치를 부여할 수 있다. 이 접근법은 반경 내에 있는 지점들 모드에 대해 똑같은 가중치를 제공한다.
도 16c1은 v6에 최근접 노드 N6와 노드 N5 사이의 거리 d5 및 노드 N6와 노드 N11 사이의 거리 d11을 나타내고 있다. 다른 접근법은 반경 내의 상이한 노드들에 상이한 가중치들을 할당하는 것에 의해 중앙 지점을 획득하는 것이다. 예를 들어, 최근접 노드의 지점(예컨대, N6의 O6)은 반경 내의 다른 지점들보다 더 높은 가중치를 부여받을 수 있다. 반경 내의 다른 지점들이 똑같이 가중되거나 최근접 노드의 지점으로부터 증가하는 거리에 비례하여 감소하는 가중치를 부여받을 수 있다. 다른 접근법에서, 최근접 노드들 및 반경 내의 다른 노드들은 그들과 정점 간의 거리에 반비례하여 가중된다.
지점(1650)은, 각각의 노드 또는 원점에 똑같은 가중치를 부여하는, 노드들 N5, N6 및 N11(각각, 원점들 O5, O6 및 O11을 가짐) 사이의 중앙 지점을 나타낸다. 다른 접근법에서, 지점(1651)은, v6에의 최근접 노드(N6)에 N5 및 N11보다 더 높은 가중치를 부여하는, 노드들 N5, N6 및 N11(각각, 원점들 O5, O6 및 O11을 가짐) 사이의 중앙 지점을 나타낸다.
도 16c2는 도 16b의 결합된 좌표계(1660)의 x-축을 나타내고 있다. 좌표계(1660)는 N5, N6 및 N11의 좌표계들의 선형 결합으로서 획득된다. 예를 들어, 모든 노드들이 똑같이 가중되는 경우에, x-축 xc는 x-축들 x5, x6 및 x11의 벡터 합(vector addition)에 의해 획득될 수 있다. 이와 유사하게, y-축 yc는 y-축들 y5, y6 및 y11의 벡터 합에 의해 획득될 수 있고, z-축 zc는 z-축들 z5, z6 및 z11의 벡터 합에 의해 획득될 수 있다. 또는, 모든 z-축들이 수직인 것으로 정의되면, zc를 획득하기 위해 벡터 합이 필요하지 않다. 노드들이 똑같지 않게 가중되는 경우에, 좌표계(1620)의 축들이 축들을 벡터 합에서 그에 따라 가중하는 것에 의해 획득될 수 있다.
도 16d는 체적들 Vol1 및 Vol2가 왜곡되지 않을 때 이 체적들 내의 왜곡되지 않은 객체들의 깊이 맵들을 나타내고 있다. 깊이 맵은, 도 13b에서와 같이, 벽에 대한 영역(1320), 그림에 대한 영역(1321), 및 출입구에 대한 영역(1322)을 포함한다. 영역들은 체적들 Vol1 및 Vol2 내에 제공된다. Vol1은 높이 h2와 폭 w2를 갖는다. Vol2도 이 높이와 폭을 갖는다. 그림의 영역(1321)은 높이 h1과 폭 w1을 갖는다.
도 16e는 체적들 Vol1 및 Vol2가 왜곡될 때 이 체적들 내의 왜곡된 객체들의 깊이 맵들을 나타내고 있다. 이 예에서, v2가 앵커링되어 있는 노드에 대해 조정이 행해지고, 그 결과 v2의 위치가 위치(1661)로부터 위치(1662)로 변화된다. 이것은 dh2의 높이의 변화 및 dw2의 폭의 변화를 나타낸다. 이와 같이, Vol1 및 Vol2는 형상의 변화, 또는 왜곡을 겪는다. 체적들 내의 깊이 맵들의 영역들도 체적들의 왜곡에 대응하여 왜곡된다. 예를 들어, 왜곡되지 않은 벽 영역(1320)이 왜곡된 벽 영역(1320d)으로 되고, 왜곡되지 않은 그림 영역(1321)이 왜곡된 그림 영역(1321d)으로 되며, 왜곡되지 않은 출입구 영역(1322)이 왜곡된 출입구 영역(1322d)으로 된다. 예를 들어, 그림의 우측 상부 코너가 지점(1665)으로부터 지점(1666)으로 변할 수 있다. 우측 상부 코너가 h1xdh2/h2에 비례하는 거리 dh1만큼 더 높이 그리고 w1xdw2/w2에 비례하는 거리 dw1만큼 오른쪽으로 움직일 수 있다. 이들은 체적의 왜곡에 기초하여 체적 내의 3D 객체를 왜곡시키는 것의 일반 개념을 나타내는 근사치들이다. 하나의 접근법에서, 객체의 왜곡된 형상을 결정하기 위해, 체적 내부의 임의의 지점에 대해 이중 선형 보간(bilinear interpolation)이 수행될 수 있다.
도 17은 가상 객체가 도 13a의 물리적 공간에 위치되어 있는 예시적인 응용분야를 나타내고 있다. 언급된 바와 같이, 표면 재구성은, 물리적 공간에서 가상 객체를 위치시키는 것, 플레이 공간을 정의하는 것, 경로 찾기, 충돌 검출 또는 가상 객체들의 폐색을 비롯한, 많은 응용분야들에서 사용될 수 있다. 이 예에서, 가상 객체(1710)는 HMD 디바이스(1302)의 증강 현실 영상으로서 사용자(1301)에게 보이는 사람이다. 시야(1700)는 HMD 디바이스의 증강 현실 투사 시스템과 연관되어 있다. 방에 있는 표면들이 알려져 있기 때문에, 가상 객체가 물리적 공간에서의 적절한 위치에 위치될 수 있다. 예를 들어, 가상 객체가 벽(1306)의 전방으로 명시된 거리에 그리고 출입구(1307)의 측면에 위치될 수 있다. 더욱이, 더 큰 현실감을 제공하기 위해 그림(1308)과 같은 가상 객체의 후방에 있는 현실 세계 객체들이 폐색될 수 있다. 유의할 점은, 상이한 또는 공통의 시야들이 깊이 센서, 카메라 및 증강 현실 투사 시스템과 연관될 수 있다는 것이다. 게다가, HMD 디바이스를 포함하는 예시적인 구현들이 기술되었지만, 본원에서 제공되는 기법들이, 로봇들 및 다른 유형들의 리그들을 포함하는 것을 비롯하여, 많은 다른 시나리오들에 적용가능하다.
그에 따라, 일 양태에서, 물리적 공간을 재구성하는 방법이 리그가 복수의 자세들을 통해 물리적 공간에서 움직이는 동안 리그에 장착된 카메라를 사용하여 물리적 공간의 복수의 영상들을 획득하는 단계; 각각의 자세의 배향 및 좌표계를 결정하는 단계; 물리적 공간을 복수의 체적들 - 복수의 체적들의 각각의 체적은 정점들을 포함함 - 로 파티셔닝하는 단계; 복수의 체적들의 각각의 체적에 대해, 리그에 장착된 깊이 센서를 사용하여 물리적 공간의 깊이 맵을 획득하는 단계; 제1 상태에 있는 자세 그래프 - 제1 상태에 있는 자세 그래프는 복수의 노드들 및 복수의 노드들의 노드들 사이의 링크들을 포함함 - 를 제공하는 단계 - 복수의 노드들의 각각의 노드는 자세들 중 하나의 자세, 자세들 중 하나의 자세와 연관된 영상들 중 하나의 영상 및 자세들 중 하나의 자세와 연관된 좌표계들 중 하나의 좌표계와 연관되어 있으며, 링크들은 영상들 사이의 대응관계들 및 좌표계들 사이의 변환들을 정의함 -; 복수의 체적들의 각각의 체적에 대해, 체적의 정점들을 제1 상태에 있는 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계 - 체적의 정점들은 공유 정점들을 포함하고, 자세 그래프가 제1 상태에 있을 때 공유 정점들은 복수의 체적들의 인접한 체적과 공유됨 -; 자세 그래프를 제2 상태로 업데이트하는 단계 - 업데이트하는 단계는 노드들의 하나 이상의 노드들 및 링크들의 하나 이상의 링크들을 업데이트하는 단계를 포함함 -; 및 복수의 체적들의 각각의 체적에 대해, 자세 그래프가 제2 상태에 있을 때 공유 정점들을 유지하는 단계 - 공유 정점들을 유지하는 것의 결과로서, 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시킴 - 를 포함한다는 것을 알 수 있다.
본 방법은 자세 그래프의 제2 상태에 따라 복수의 체적들 중 적어도 하나의 체적에 있는 표면을 재구성하는 단계; 및 재구성하는 동안, 복수의 체적들 중 적어도 하나의 체적에 대해, 복수의 체적들 중 적어도 하나의 체적의 형상에 기초하여 물리적 공간의 깊이 맵을 왜곡시키는 단계를 추가로 포함한다.
복수의 노드들의 각각의 노드는 물리적 공간에서의 리그의 위치와 연관될 수 있고; 복수의 체적들의 하나 이상의 체적들에 대해, 체적의 정점들을 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는 체적의 하나의 정점을 하나의 정점에 가장 가까운 위치에 있는 자세 그래프 내의 노드들 중 하나의 노드에 앵커링하는 단계를 포함할 수 있다.
복수의 노드들의 각각의 노드는 물리적 공간에서의 리그의 위치와 연관될 수 있고; 복수의 체적들의 하나 이상의 체적들에 대해, 체적의 정점들을 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는 체적의 하나의 정점을 자세 그래프 내의 노드들의 조합에 앵커링하는 단계를 포함할 수 있고, 노드들의 조합은 하나의 정점에 가장 가까운 위치에 있는 자세 그래프 내의 노드들 중 하나의 노드를 포함할 수 있다.
노드들의 조합은 하나의 정점에 가장 가까운 위치에 있는 자세 그래프 내의 노드들 중 하나의 노드로부터 명시된 거리 내에 있는 하나 이상의 노드들을 포함할 수 있다.
노드들의 조합에서, 명시된 거리 내에 있는 하나 이상의 노드들의 각각의 노드는 이 노드와 하나의 정점에 가장 가까운 위치에 있는 자세 그래프 내의 노드들 중 하나의 노드 사이의 거리에 따라 가중될 수 있다.
복수의 체적들의 하나 이상의 체적들에 대해, 체적의 정점들을 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는 체적의 하나의 정점을 자세 그래프 내의 하나의 노드에 앵커링하고 체적의 다른 정점을 자세 그래프 내의 다른 노드에 앵커링하는 단계를 포함할 수 있다.
본 방법은, 복수의 체적들의 하나 이상의 체적들에 대해, 체적의 각각의 정점을 자세 그래프 내의 상이한 지점에 앵커링하는 단계를 추가로 포함한다.
자세 그래프를 업데이트하는 단계는 하나 이상의 노드들을 자세 그래프에 추가하는 단계를 포함할 수 있고; 복수의 체적들의 하나 이상의 체적들에 대해, 하나 이상의 노드들을 자세 그래프에 추가하는 동안 체적의 정점들이 앵커링되는 자세 그래프 내의 지점들의 수가 증가한다.
복수의 체적들은 서로 중복하지 않을 수 있고 체적들 사이에 갭들이 존재하지 않는다.
다른 양태에서, 물리적 공간을 재구성하는 장치는 배향 센서; 깊이 센서; 카메라; 및 배향 센서, 깊이 센서 및 카메라와 통신하는 프로세서를 포함한다. 프로세서는 카메라로부터 물리적 공간의 복수의 영상들을 획득하고, 배향 센서에 기초하여 자세 및 좌표계를 각각의 영상과 연관시키며, 물리적 공간을 복수의 체적들 - 복수의 체적들의 각각의 체적은 정점들을 포함함 - 로 파티셔닝하고, 복수의 체적들의 각각의 체적에 대해, 깊이 센서로부터 물리적 공간의 깊이 맵을 획득하며, 복수의 노드들 및 노드들 사이의 링크들을 포함하는 제1 상태에 있는 자세 그래프를 제공하고 - 복수의 노드들의 각각의 노드는 자세들 중 하나의 자세, 자세들 중 하나의 자세와 연관된 영상들 중 하나의 영상 및 자세들 중 하나의 자세와 연관된 좌표계들 중 하나의 좌표계와 연관되어 있으며, 링크들은 영상들 사이의 대응관계들 및 좌표계들 사이의 변환들을 정의함 -, 복수의 체적들의 각각의 체적에 대해, 체적의 정점들을 제1 상태에 있는 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하며 - 체적의 정점들은 공유 정점들을 포함하고, 자세 그래프가 제1 상태에 있을 때 공유 정점들은 복수의 체적들의 인접한 체적과 공유됨 -, 노드들의 하나 이상의 노드들 및 링크들의 하나 이상의 링크들의 업데이트를 사용하여 자세 그래프를 제2 상태로 업데이트하고, 복수의 체적들의 각각의 체적에 대해, 자세 그래프가 제2 상태에 있을 때 공유 정점들을 유지하기 위해, 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시키며, 자세 그래프의 제2 상태에 따라 체적들 중 하나 이상의 체적들에 있는 표면을 재구성하도록 구성되어 있다.
다른 양태에서, 프로세서 판독가능 메모리는 물리적 공간을 재구성하는 방법을 수행하도록 프로세서를 프로그래밍하기 위한 그 위에 구현된 프로세서 판독가능 소프트웨어를 포함하고, 본 방법은 물리적 공간을 복수의 체적들 - 복수의 체적들의 각각의 체적은 정점들을 포함함 - 로 파티셔닝하는 단계; 복수의 체적들의 각각의 체적에 대해, 물리적 공간의 깊이 맵을 획득하는 단계; 제1 상태에 있는 자세 그래프 - 제1 상태에 있는 자세 그래프는 복수의 노드들 및 복수의 노드들의 노드들 사이의 링크들을 포함함 - 를 제공하는 단계; 복수의 체적들의 각각의 체적에 대해, 체적의 정점들을 제1 상태에 있는 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계 - 체적의 정점들은 공유 정점들을 포함하고, 자세 그래프가 제1 상태에 있을 때 공유 정점들은 복수의 체적들의 인접한 체적과 공유됨 -; 및 자세 그래프를 제2 상태로 업데이트하는 단계 - 업데이트하는 단계는 노드들의 하나 이상의 노드들 및 링크들의 하나 이상의 링크들을 업데이트하는 단계를 포함함 -; 및 복수의 체적들의 각각의 체적에 대해, 자세 그래프가 제2 상태에 있을 때 공유 정점들을 유지하는 단계 - 공유 정점들을 유지하는 것의 결과로서, 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시킴 - 를 포함한다.
발명 요지가 구조적 특징들 및/또는 방법 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에 한정된 발명 요지가 앞서 기술된 구체적인 특징들 또는 동작들로 꼭 제한되는 것은 아님을 잘 알 것이다. 오히려, 앞서 기술된 구체적인 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태들로서 개시되어 있다.

Claims (20)

  1. 물리적 공간을 재구성하는 방법에 있어서,
    리그(rig)가 복수의 자세(pose)들을 통해 물리적 공간 내에서 움직이는 동안 상기 리그에 의해 장착된(carried) 카메라를 사용하여 상기 물리적 공간의 복수의 영상(image)들을 획득하는 단계;
    각각의 자세의 배향 및 좌표계를 결정하는 단계;
    상기 물리적 공간을 복수의 체적들(volumes) - 상기 복수의 체적들의 각각의 체적은 정점들(vertices)을 포함함 - 로 파티셔닝(partitioning)하는 단계;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 리그에 의해 장착된 깊이 센서를 사용하여 상기 물리적 공간의 깊이 맵을 획득하는 단계;
    제1 상태에 있는 자세 그래프를 제공하는 단계 - 상기 제1 상태에 있는 자세 그래프는 복수의 노드들 및 상기 복수의 노드들의 노드들 사이의 링크들을 포함하고, 상기 복수의 노드들의 각각의 노드는, 상기 자세들 중 하나의 자세, 상기 자세들 중 상기 하나의 자세와 연관된 상기 복수의 영상들 중 하나의 영상, 및 상기 자세들 중 상기 하나의 자세와 연관된 좌표계들 중 하나의 좌표계와 연관되어 있으며, 상기 링크들은 상기 복수의 영상들 사이의 대응관계들 및 상기 좌표계들 사이의 변환들을 정의함 - ;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 체적의 상기 정점들을 상기 제1 상태에 있는 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링(anchor)하는 단계 - 상기 체적의 상기 정점들은 공유 정점들을 포함하고, 상기 자세 그래프가 상기 제1 상태에 있을 때 상기 공유 정점들은 상기 복수의 체적들의 인접한 체적과 공유됨 - ;
    상기 자세 그래프를 제2 상태로 업데이트하는 단계 - 상기 업데이트는 상기 노드들 중 하나 이상의 노드 및 상기 링크들 중 하나 이상의 링크의 업데이트를 포함함 - ; 및
    상기 복수의 체적들의 각각의 체적에 대해, 상기 자세 그래프가 상기 제2 상태에 있을 때 상기 공유 정점들을 유지하는(maintaining) 단계 - 상기 공유 정점들을 유지하는 것은, 결과적으로 상기 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시키게 됨 -
    를 포함하는, 물리적 공간을 재구성하는 방법.
  2. 제1항에 있어서,
    상기 자세 그래프의 상기 제2 상태에 따라 상기 복수의 체적들 중 상기 적어도 하나의 체적에서의 표면을 재구성하는 단계; 및
    상기 재구성하는 동안, 상기 복수의 체적들 중 상기 적어도 하나의 체적에 대해, 상기 복수의 체적들 중 상기 적어도 하나의 체적의 상기 형상에 기초하여 상기 물리적 공간의 깊이 맵을 왜곡시키는 단계
    를 더 포함하는, 물리적 공간을 재구성하는 방법.
  3. 제1항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 상기 리그의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는, 상기 체적의 하나의 정점을, 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드에 앵커링하는 단계를 포함하는 것인, 물리적 공간을 재구성하는 방법.
  4. 제1항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 상기 리그의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는, 상기 체적의 하나의 정점을 상기 자세 그래프 내의 노드들의 조합에 앵커링하는 단계를 포함하며, 상기 노드들의 조합은 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드를 포함하는 것인, 물리적 공간을 재구성하는 방법.
  5. 제4항에 있어서,
    상기 노드들의 조합은, 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 상기 하나의 노드의 지정된 거리 내의 하나 이상의 노드를 포함하는 것인, 물리적 공간을 재구성하는 방법.
  6. 제5항에 있어서,
    상기 노드들의 조합에서, 상기 지정된 거리 내의 상기 하나 이상의 노드의 각각의 노드는, 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 상기 하나의 노드까지의 상기 노드의 거리에 따라 가중되는 것인, 물리적 공간을 재구성하는 방법.
  7. 제1항에 있어서,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 단계는, 상기 체적의 하나의 정점을 상기 자세 그래프 내의 하나의 노드에 앵커링하는 단계 및 상기 체적의 다른 정점을 상기 자세 그래프 내의 다른 노드에 앵커링하는 단계를 포함하는 것인, 물리적 공간을 재구성하는 방법.
  8. 제1항에 있어서,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 각각의 정점을 상기 자세 그래프 내의 상이한 지점에 앵커링하는 단계를 더 포함하는, 물리적 공간을 재구성하는 방법.
  9. 제1항에 있어서,
    상기 자세 그래프를 업데이트하는 단계는, 하나 이상의 노드를 상기 자세 그래프에 추가하는 단계를 포함하고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 하나 이상의 노드를 상기 자세 그래프에 추가하는 동안 상기 체적의 상기 정점들이 앵커링되는 상기 자세 그래프 내의 지점들의 수가 증가하는 것인, 물리적 공간을 재구성하는 방법.
  10. 제1항에 있어서,
    상기 복수의 체적들은 서로 중복하지 않고, 상기 체적들 사이에 갭이 존재하지 않는 것인, 물리적 공간을 재구성하는 방법.
  11. 물리적 공간을 재구성하는 장치에 있어서,
    배향 센서;
    깊이 센서;
    카메라; 및
    상기 배향 센서, 상기 깊이 센서, 및 상기 카메라와 통신하는 프로세서
    를 포함하고, 상기 프로세서는,
    상기 카메라로부터 상기 물리적 공간의 복수의 영상들을 획득하고;
    상기 배향 센서에 기초하여 자세 및 좌표계를 각각의 영상과 연관시키고;
    상기 물리적 공간을 복수의 체적들 - 상기 복수의 체적들의 각각의 체적은 정점들을 포함함 - 로 파티셔닝하고;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 깊이 센서로부터 상기 물리적 공간의 깊이 맵을 획득하고;
    복수의 노드들 및 상기 노드들 사이의 링크들을 포함하는 제1 상태에 있는 자세 그래프를 제공하고 - 상기 복수의 노드들의 각각의 노드는, 자세들 중 하나의 자세, 상기 자세들 중 상기 하나의 자세와 연관된 상기 복수의 영상들 중 하나의 영상, 및 상기 자세들 중 상기 하나의 자세와 연관된 좌표계들 중 하나의 좌표계와 연관되어 있으며, 상기 링크들은 상기 복수의 영상들 사이의 대응관계들 및 상기 좌표계들 사이의 변환들을 정의함 - ;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 체적의 상기 정점들을 상기 제1 상태에 있는 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하고 - 상기 체적의 상기 정점들은 공유 정점들을 포함하고, 상기 자세 그래프가 상기 제1 상태에 있을 때 상기 공유 정점들은 상기 복수의 체적들의 인접한 체적과 공유됨 - ;
    상기 노드들 중 하나 이상의 노드 및 상기 링크들 중 하나 이상의 링크의 업데이트를 사용하여 상기 자세 그래프를 제2 상태로 업데이트하고;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 자세 그래프가 상기 제2 상태에 있을 때 상기 공유 정점들을 유지하기 위해, 상기 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시키며;
    상기 자세 그래프의 상기 제2 상태에 따라 상기 체적들 중 하나 이상의 체적에서의 표면을 재구성하도록
    구성되어 있는 것인, 물리적 공간을 재구성하는 장치.
  12. 제11항에 있어서, 상기 프로세서는,
    상기 표면을 재구성하는 동안, 상기 복수의 체적들 중 상기 적어도 하나의 체적에 대해, 상기 복수의 체적들 중 상기 적어도 하나의 체적의 상기 형상에 기초하여 상기 물리적 공간의 깊이 맵을 왜곡시키도록 구성되어 있는 것인, 물리적 공간을 재구성하는 장치.
  13. 제11항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 것은, 상기 체적의 하나의 정점을, 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드에 앵커링하는 것을 포함하는, 물리적 공간을 재구성하는 장치.
  14. 제11항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하는 것은, 상기 체적의 하나의 정점을 상기 자세 그래프 내의 노드들의 조합에 앵커링하는 것을 포함하며, 상기 노드들의 조합은 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드를 포함하는 것인, 물리적 공간을 재구성하는 장치.
  15. 제11항에 있어서,
    상기 복수의 체적들은 서로 중복하지 않고, 상기 체적들 사이에 갭이 존재하지 않는 것인, 물리적 공간을 재구성하는 장치.
  16. 장치에 있어서,
    코드를 포함하는 저장 디바이스; 및
    프로세서를 포함하고,
    상기 프로세서는,
    물리적 공간을 복수의 체적들 - 상기 복수의 체적들의 각각의 체적은 정점들을 포함함 - 로 파티셔닝하고;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 물리적 공간의 깊이 맵을 획득하고;
    제1 상태에 있는 자세 그래프를 제공하고 - 상기 제1 상태에 있는 자세 그래프는, 복수의 노드들 및 상기 복수의 노드들의 노드들 사이의 링크들을 포함함 - ;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 체적의 상기 정점들을 상기 제1 상태에 있는 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하고 - 상기 체적의 상기 정점들은 공유 정점들을 포함하고, 상기 자세 그래프가 상기 제1 상태에 있을 때 상기 공유 정점들은 상기 복수의 체적들의 인접한 체적과 공유됨 - ;
    상기 자세 그래프를 제2 상태로 업데이트하고 - 상기 업데이트는 상기 노드들 중 하나 이상의 노드 및 상기 링크들 중 하나 이상의 링크의 업데이트를 포함함 - ;
    상기 복수의 체적들의 각각의 체적에 대해, 상기 자세 그래프가 상기 제2 상태에 있을 때 상기 공유 정점들을 유지하도록 - 상기 공유 정점들을 유지하는 것은, 결과적으로 상기 복수의 체적들 중 적어도 하나의 체적의 형상을 변화시키게 됨 -
    상기 코드를 실행하도록 구성되는 것인, 장치.
  17. 제16항에 있어서,
    상기 복수의 체적들은 서로 중복하지 않고, 상기 체적들 사이에 갭이 존재하지 않는 것인, 장치.
  18. 제16항에 있어서,
    상기 프로세서는,
    상기 자세 그래프의 상기 제2 상태에 따라 상기 복수의 체적들 중 상기 적어도 하나의 체적에서의 표면을 재구성하고;
    상기 재구성하는 동안, 상기 복수의 체적들 중 상기 적어도 하나의 체적에 대해, 상기 복수의 체적들 중 상기 적어도 하나의 체적의 상기 형상에 기초하여 상기 물리적 공간의 깊이 맵을 왜곡시키도록,
    상기 코드를 실행하도록 구성되는 것인, 장치.
  19. 제16항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하기 위해, 상기 프로세서는, 상기 체적의 하나의 정점을 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드에 앵커링하도록, 상기 코드를 실행하도록 구성되는 것인, 장치.
  20. 제16항에 있어서,
    상기 복수의 노드들의 각각의 노드는 상기 물리적 공간에서의 위치와 연관되어 있고,
    상기 복수의 체적들 중 하나 이상의 체적에 대해, 상기 체적의 상기 정점들을 상기 자세 그래프 내의 적어도 2개의 상이한 지점들에 앵커링하기 위해, 상기 프로세서는, 상기 체적의 하나의 정점을 상기 자세 그래프 내의 노드들의 조합에 앵커링하도록, 상기 코드를 실행하도록 구성되며, 상기 노드들의 조합은 상기 하나의 정점에 가장 가까운 위치에 있는 상기 자세 그래프 내의 상기 노드들 중 하나의 노드를 포함하는 것인, 장치.
KR1020177010376A 2014-09-18 2015-09-10 표면 재구성에서의 자유 형태 변형의 사용 KR102399399B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/489,802 US9483879B2 (en) 2014-09-18 2014-09-18 Using free-form deformations in surface reconstruction
US14/489,802 2014-09-18
PCT/US2015/049274 WO2016044037A1 (en) 2014-09-18 2015-09-10 Using free-form deformations in surface reconstruction

Publications (2)

Publication Number Publication Date
KR20170056672A KR20170056672A (ko) 2017-05-23
KR102399399B1 true KR102399399B1 (ko) 2022-05-17

Family

ID=54197073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177010376A KR102399399B1 (ko) 2014-09-18 2015-09-10 표면 재구성에서의 자유 형태 변형의 사용

Country Status (5)

Country Link
US (1) US9483879B2 (ko)
EP (1) EP3195270B1 (ko)
KR (1) KR102399399B1 (ko)
CN (1) CN106716497B (ko)
WO (1) WO2016044037A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10168699B1 (en) * 2015-01-30 2019-01-01 Vecna Technologies, Inc. Interactions between a vehicle and a being encountered by the vehicle
US9940542B2 (en) * 2015-08-11 2018-04-10 Google Llc Managing feature data for environment mapping on an electronic device
US10802147B2 (en) 2016-05-18 2020-10-13 Google Llc System and method for concurrent odometry and mapping
US11017610B2 (en) * 2016-05-18 2021-05-25 Google Llc System and method for fault detection and recovery for concurrent odometry and mapping
US10890600B2 (en) 2016-05-18 2021-01-12 Google Llc Real-time visual-inertial motion tracking fault detection
EP3494447B1 (en) 2016-08-04 2021-05-19 Reification Inc. Methods for simultaneous localization and mapping (slam) and related apparatus and systems
JP7320352B2 (ja) * 2016-12-28 2023-08-03 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元モデル送信方法、三次元モデル受信方法、三次元モデル送信装置及び三次元モデル受信装置
US10242458B2 (en) * 2017-04-21 2019-03-26 Qualcomm Incorporated Registration of range images using virtual gimbal information
US10977856B2 (en) * 2018-03-29 2021-04-13 Microsoft Technology Licensing, Llc Using a low-detail representation of surfaces to influence a high-detail representation of the surfaces
GB2574795B (en) * 2018-05-04 2022-10-05 Signaturize Holdings Ltd Generating virtual representations
KR102206314B1 (ko) * 2019-10-08 2021-01-22 전남대학교산학협력단 처리 장치 및 처리 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068465B1 (ko) 2009-11-09 2011-09-28 한국과학기술원 삼차원 물체 인식 시스템 및 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030047933A (ko) * 2003-05-02 2003-06-18 예병수 체적 화소를 이용한 다 시점 영상제작 방법
EP1638459A2 (en) * 2003-06-11 2006-03-29 Case Western Reserve University Computer-aided-design of skeletal implants
EP1876411A4 (en) * 2005-04-25 2011-06-29 Geo Technical Lab Co Ltd METHOD FOR ANALYZING THE PICTURE POSITION
US7286127B2 (en) * 2005-06-22 2007-10-23 Microsoft Corporation Large mesh deformation using the volumetric graph Laplacian
US8364615B2 (en) * 2009-02-06 2013-01-29 Microsoft Corporation Local graph partitioning using evolving sets
US8587583B2 (en) * 2011-01-31 2013-11-19 Microsoft Corporation Three-dimensional environment reconstruction
US8913055B2 (en) 2011-05-31 2014-12-16 Honda Motor Co., Ltd. Online environment mapping
US20150178988A1 (en) * 2012-05-22 2015-06-25 Telefonica, S.A. Method and a system for generating a realistic 3d reconstruction model for an object or being
US9432636B2 (en) * 2013-11-26 2016-08-30 Microsoft Technology Licensing, Llc Large-scale surface reconstruction that is robust against tracking and mapping errors

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068465B1 (ko) 2009-11-09 2011-09-28 한국과학기술원 삼차원 물체 인식 시스템 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Frank Steinbrucker et al., Large-Scale Multi-Resolution Surface Reconstruction from RGB-D Sequences, IEEE INTERNATIONAL CONFERENCE ON COMPUTER VISION(2013.12.08.)

Also Published As

Publication number Publication date
EP3195270A1 (en) 2017-07-26
CN106716497B (zh) 2020-05-05
WO2016044037A1 (en) 2016-03-24
US9483879B2 (en) 2016-11-01
CN106716497A (zh) 2017-05-24
EP3195270B1 (en) 2018-10-24
US20160086385A1 (en) 2016-03-24
KR20170056672A (ko) 2017-05-23

Similar Documents

Publication Publication Date Title
EP3074955B1 (en) Large-scale surface reconstruction that is robust against tracking and mapping errors
KR102399399B1 (ko) 표면 재구성에서의 자유 형태 변형의 사용
US11978159B2 (en) Cross reality system
US11398081B2 (en) Method of occlusion rendering using raycast and live depth
US11238659B2 (en) Caching and updating of dense 3D reconstruction data
US11790619B2 (en) Cross reality system with accurate shared maps
US10896497B2 (en) Inconsistency detecting system, mixed-reality system, program, and inconsistency detecting method
JP2023524446A (ja) 大規模環境のためのクロスリアリティシステム
JP2023514206A (ja) 大規模環境のためのクロスリアリティシステム
CN108335353A (zh) 动态场景的三维重建方法、装置和系统、服务器、介质
US20080024523A1 (en) Generating images combining real and virtual images
CN105190703A (zh) 使用光度立体来进行3d环境建模
JP2022533207A (ja) 稠密3d再構築データのキャッシュおよび更新
WO2018113759A1 (zh) 基于定位系统和ar/mr的探测系统及探测方法
US20240029301A1 (en) Efficient localization based on multiple feature types
JP2023133394A (ja) マッピングのためのシステムおよび方法
US20210358173A1 (en) Computationally efficient method for computing a composite representation of a 3d environment

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant