KR102227229B1 - 추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법 - Google Patents

추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법 Download PDF

Info

Publication number
KR102227229B1
KR102227229B1 KR1020167013950A KR20167013950A KR102227229B1 KR 102227229 B1 KR102227229 B1 KR 102227229B1 KR 1020167013950 A KR1020167013950 A KR 1020167013950A KR 20167013950 A KR20167013950 A KR 20167013950A KR 102227229 B1 KR102227229 B1 KR 102227229B1
Authority
KR
South Korea
Prior art keywords
physical space
volume
volumes
nodes
pose
Prior art date
Application number
KR1020167013950A
Other languages
English (en)
Other versions
KR20160091337A (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 KR20160091337A publication Critical patent/KR20160091337A/ko
Application granted granted Critical
Publication of KR102227229B1 publication Critical patent/KR102227229B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • H04N7/183Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast for receiving images from a single remote source
    • 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/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/08Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation
    • 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/10016Video; Image sequence
    • 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/10028Range image; Depth image; 3D point clouds
    • 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/20072Graph-based image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Abstract

리그, 가령, 로봇 또는 사용자가 착용한 두부 장착형 디스플레이 디바이스에 장착된 심도 센서를 이용하여 물리 공간의 심도 맵이 획득된다. 가시광 이미지가 또한 획득된다. 이미지 및 배향 판독치가 사용되어 링크에 의해 연결된 노드들을 포함하는 포즈 그래프를 생성할 수 있다. 노드들은 리그의 서로 다른 포즈 및 대응하는 이미지와 연관된다. 노드들 간 링크는 이미지들 간 대응관계 및 노드 좌표계들 간 변환관계를 나타낸다. 새 이미지가 캡처되고 포즈 그래프가 업데이트되어 오차 누적을 감소시킬 수 있다. 또한 물리 공간 내 표면이 포즈 그래프의 현재 상태에 따라 임의의 때에 재구성될 수 있다. 표면 재구성 프로세스에서 사용되는 볼륨이 노드에 고정되어, 포즈 그래프가 업데이트될 때 볼륨의 위치가 조정된다.

Description

추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법{LARGE-SCALE SURFACE RECONSTRUCTION THAT IS ROBUST AGAINST TRACKING AND MAPPING ERRORS}
표면 재구성(SR)(surface reconstruction)은 물리 공간 내 물체의 표면을 식별하는 것을 포함한다. 예를 들어, 표면은 벽, 바닥, 천장, 방안의 가구 또는 그 밖의 다른 물체를 나타낼 수 있다. 표면은 물리 환경의 모델을 제공한다. 이러한 모델은 다양한 응용 분야에 사용될 수 있다. 일례로는 물리 공간을 통해 로봇을 안내하는 것을 들 수 있다. 또 다른 예로는, 가령, 두부 장착형 디스플레이 디바이스를 이용함으로써, 가상 물체를 사용자에게 디스플레이하는 것을 들 수 있다.
본 명세서에 기재된 기법은 물리 공간 내 표면을 재구성하기 위한 다양한 실시예를 제공한다.
심도 센서를 이용하여 물리 공간의 심도 맵이 획득된다. 심도 맵은 심도 센서로부터 물리 공간 내 표면까지의 거리를 나타내는 심도 값을 포함한다. 상기 심도 맵은 물리 공간 내 볼륨과 관련되어 정의되고 상기 볼륨의 위치는 좌표계와 관련하여 정의된다. 예를 들어, 좌표계는 심도 센서가 장착된 리그(rig)의 포즈(가령, 위치(position) 및 배향(orientation))에 따라 정의될 수 있다.
그러나 추가 심도 맵이 획득되고 추가 볼륨이 형성될수록 볼륨의 위치의 오차가 누적될 수 있다. 오차의 누적을 감소시키기 위해, 물리 공간의 가시광 이미지가 획득되고 포즈 그래프를 형성하도록 사용된다. 상기 포즈 그래프는 리그의 상이한 포즈 및 대응하는 이미지와 연관된 노드를 포함한다. 노드들 간 링크는 이미지들 간 대응관계 및 노드 좌표계들 간 변환관계를 나타낸다. 때때로 새 이미지가 캡처될 때, 포즈 그래프가 업데이트된다. 예를 들어, 노드와 연관된 좌표계를 업데이트함으로써 상기 노드가 업데이트될 수 있다.
볼륨을 포즈 그래프의 노드에 고정(anchor)함으로써, 표면 재구성 프로세스에 있어 좌표계의 업데이트로 인해 정확도가 증가되는 이점이 있다. 따라서 볼륨 및 표면이 더 정확히 배치될 수 있다. 표면은 포즈 그래프의 현재 상태에 따라 어느 때라도 재구성될 수 있다.
이 개요는 이하의 상세한 설명에서 추가 기재될 개념들의 모음을 단순화된 형태로 소개하기 위해 제공된 것이다. 이 개요는 청구되는 발명의 핵심 특징 또는 본질적 특징을 식별하려는 것이 아니며, 청구되는 발명의 범위를 결정하는 데 보조하도록 사용된 것도 아니다.
도면에서, 유사한 도면부호들은 서로 대응한다.
도 1은 리그, 서브, 및 허브 컴퓨팅 시스템을 포함하는 표면 재구성 시스템(5)의 블록도이다.
도 2는 두부 장착형 디스플레이(HMD) 디바이스(150)로서의 도 1의 리그(20)의 구현예의 평면도이다.
도 3은 도 2의 HMD 디바이스(150)의 다양한 구성요소를 도시하는 블록도이다.
도 4는 도 2의 처리 유닛(105)의 다양한 구성요소를 기술하는 블록도이다.
도 5는 도 1의 허브 컴퓨팅 시스템(50)의 하나의 실시예의 블록도이다.
도 6a은 포즈 그래프를 이용한 물리 공간 내 표면 재구성 프로세스를 도시한다.
도 6b는 도 6a의 단계(603)의 추가 상세사항을 도시한다.
도 6c는 도 6a의 단계(604)의 추가 상세사항을 도시한다.
도 6d는 도 6a의 단계(605)의 추가 상세사항을 도시한다.
도 6e는 도 6a의 단계(606)의 추가 상세사항을 도시한다.
도 7은 도 6a의 프로세스를 수행하기 위한 표면 재구성 파이프라인을 도시한다.
도 8a는 도 7의 3D 융합 서브시스템(734)과 관련하여 언급되는 부호형 거리 함수(SDF)의 하나의 예시를 도시한다.
도 8b는 도 7의 3D 융합 서브시스템(734)과 관련하여 언급되는 복셀로 투사되는 심도 맵의 하나의 예시를 도시한다.
도 9a는 볼륨(900-904)의 세트 및 심도 센서의 절두체(920)를 도시한다.
도 9b는 초기 배치되는 볼륨(905) 및 재위치설정된 볼륨(906)에 의해 나타나는 도 9a의 볼륨(900-904)의 세트에 추가되는 새 볼륨을 도시한다.
도 10a는 초기 겹침 분량을 갖는 볼륨을 도시한다.
도 10b는 포즈 그래프의 조정에 기초하여 위치가 조정되어 감소된 겹침 분량을 도출한 후의 도 10a의 볼륨을 도시한다.
도 11a는 과도한 겹침으로 인한 볼륨 내 블록의 잘라내기(clipping)의 예시를 도시한다.
도 11b는 과도한 겹침으로 인한 볼륨 내 블록의 잘라내기의 또 다른 예시를 도시한다.
도 12a는 물리 공간 내 리그의 포즈를 나타내는 포즈 그래프의 예시를 나타낸다.
도 12b는 카메라가 캡처한 이미지에 대한 예시적 데이터 레코드를 도시한다.
도 12c는 심도 센서가 캡처한 예시적 데이터 레코드를 도시한다.
도 12d는 포즈 그래프의 예시적 데이터 레코드를 도시한다.
도 13a는 물리 공간의 한 예시를 도시하며, 심도 센서의 절두체를 보여준다.
도 13b는 도 13a와 일치하는 심도 맵을 도시한다.
도 13c는 도 13b의 심도 맵의 거리 값을 도시한다.
도 14a는 도 13a의 예시적 물리 공간을 도시하며, 가시광 카메라의 시계를 보여준다.
도 14b는 도 14a의 가시광 카메라에 의해 획득된 이미지를 도시한다.
도 14c는 HMD 디바이스의 포즈가 변함에 따른 가시광 카메라의 또 다른 시계를 보여주는 도 13a의 물리 공간을 도시한다.
도 14d는 도 14c의 가시광 카메라에 의해 획득되는 이미지를 도시한다.
도 15a는 도 13a의 물리 공간에서의 볼륨의 초기 배치를 도시한다.
도 15b는 도 15a의 볼륨의 조정된 배치를 도시한다.
도 16은 도 13a의 물리 공간 내에 가상 물체가 배치되는 예시적 적용예를 도시한다.
표면 재구성은 가상 물체 배치하기, 플레이 공간 정의하기, 길 찾기, 충돌 검출 또는 가상 물체를 물리 공간에 포함시키기를 포함하는 많은 응용분야에 사용될 수 있다.
대규모 표면 재구성은 추적 및 맵핑 오차에 대한 강건성(robustness)을 요구한다. 예를 들어, 대규모 물리 공간은 가정, 사무실 또는 박물관 내 방 또는 야외 공간일 수 있다. 표면 재구성 프로세스에서, 리그 상에 실리는 심도 센서(depth sensor)에 의해 획득된 복수의 심도 맵(depth map)을 이용하여 표면이 획득된다. 표면들은, 누적 부정확성을 갖기 쉬운 컴퓨터 비전 추적 및 맵핑 기법을 이용하여 서로에 대해 위치 파악된다. 덧붙여, 환경에 대한 더 많은 정보가 이용 가능해짐에 따라 리그의 포즈 추정치(pose estimate)가 시간에 따라 변한다.
일부 SR 솔루션은 소규모로 동작하거나 추적 오차를 무시한다. 그러나 이는 일관적이지 않은 SR 데이터를 야기한다. 본 명세서에서 제공되는 기법은 이러한 문제와 그 밖의 다른 문제를 해결한다. 하나의 접근법에서, SR 프로세스는 재구성될 복수의 개별 SR 볼륨을 만드는 것을 포함한다. 각각의 볼륨은 추적 및 맵핑 포즈 그래프에서의 한 노드(가령, 키 프레임)에 고정(anchor)(가령, 연관)된다. 가령, 광속 조정(bundle adjustment) 또는 재배치(relocalization)로 인해 포즈 그래프가 업데이트될 때, 볼륨은 자동으로 자신의 포즈를 조정한다.
추가 양태에서, 볼륨들은 초기 배치될 때 다소 서로 겹칠 수 있는데, 이는 다른 경우라면, 포즈 그래프의 업데이트에 기초하여 볼륨의 위치가 조정될 때 발생할 갭(gap)을 피하기 위해서이다. 새 볼륨이 생성되거나 기존 볼륨의 크기가 확장되어, 물리 공간의 커버리지 내 발생할 수 있는 임의의 갭을 제거할 수 있다. 덧붙여, SR 볼륨이 과도하게 겹칠 때, 과잉 볼륨이 삭제될 수 있다. 경우에 따라 볼륨은 때때로 가장 가까운 노드에 재고정(re-anchor)될 수 있다.
도 1-5는 표면 재구성을 위해 사용될 수 있는 다양한 시스템을 기술한다. 도 6 및 그 이후의 도면들은 표면 재구성 기법 및 시나리오를 기술한다.
도 1은 리그(rig), 서버 및 허브 컴퓨팅 시스템을 포함하는 표면 재구성을 위한 시스템(5)의 블록도이다. 상기 리그, 서버 및 허브 컴퓨팅 시스템은 하드웨어 컴퓨팅 디바이스의 예시이다. 리그(20)는 물리 공간 내를 이동하는 디바이스를 나타낼 수 있다. 상기 디바이스는 자율 모바일 로봇에 장착되거나, 예를 들어, 사용자, 가령, 사람에 의해, 가령, 두부 장착형 디스플레이 디바이스 상에 운반 또는 착용될 수 있다. 상기 리그는 이동할 때 여러 다른 포즈를 가진다. 추적 및 맵핑 알고리즘의 맥락에서, 포즈는 공간 내 한 점 및 위치벡터를 나타낸다. 즉, 위치(position)와 배향(orientation)의 조합이다. 상기 리그는 가령, 네트워크(30)를 통해 서버(10)와 통신하기 위한 통신 인터페이스(21)를 포함한다. 표면 재구성이 수행되는 물리 공간에 증강 현실 이미지(가령, 가상 물체)를 디스플레이하도록 증강 현실 투사 시스템(22)이 사용될 수 있다. 제어 회로(23)가 리그의 다양한 구성요소를 제어하도록 사용된다. 가시광 카메라(24)가 고정 속도로, 가령, 초당 몇 번으로, 또는 특정한 때에, 물리 공간의 이미지를 획득한다.
심도 센서(25)가 물리 공간의 심도 맵을 획득한다. 일반적으로, 상기 심도 맵은 카메라 이미지보다 덜 빈번하게 획득된다. 상기 심도 센서는 예를 들어, 타임-오브-플라이트 카메라(time-of-flight camera) 또는 스테레오 카메라(stereoscopic camera)일 수 있다. 리그가 두부 장착형 디스플레이 디바이스인 경우에 시선 검출 시스템(gaze detection system)(26)이 사용자의 시선을 결정하는데 사용될 수 있다. 예를 들어, 이는 물리 공간에 가상 물체를 위치시키는 데 유용할 수 있다. 배향 센서(27)가 리그의 배향과 관련된 판독치를 획득한다. 예를 들어, 배향 판독치는 각각의 이미지 및 심도 맵과 연관될 수 있다. 이들은 예를 들어, 이하에서 더 언급될 관성 센서(inertial sensor)일 수 있다. 메모리(28)는 제어 회로에 의해 실행되어 본 명세서에 기재된 기능을 제공하는 실행 코드를 저장할 수 있고, 또한 가시광 카메라(24), 심도 센서(25), 시선 검출 시스템(26) 및 배향 센서(27)에 의해 획득되는 정보를 저장할 수 있다.
선택적으로, 리그가 서버(10)와 통신한다. 예를 들어, 리그는 정보의 일부를 업로드하고, 정보, 가령, 실행 코드, 증강 현실 투사 시스템을 위한 데이터, 또는 그 밖의 다른 콘텐츠를 수집하거나 다운로드할 수 있다. 하나의 접근법에서, 서버가 리그의 원격지에 위치한다. 또 다른 방식에서, 리그는 가령, 사용자의 가정에서, 로컬 허브 컴퓨팅 시스템(50)과 통신한다. 상기 허브 컴퓨팅 시스템은 예를 들어 다양한 게임 및 비-게임 애플리케이션을 실행하는 게임용 콘솔일 수 있다. 도 5를 또한 참조할 수 있다.
하나의 접근법에서, 네트워크(30)는 무선 네트워크, 가령, WI-FI®, BLUETOOTH®, 적외선(가령, IrDA®) 또는 셀방식(가령, GSM) 네트워크이다. 선택적으로, 복수의 리그가 공통 물리 공간 내에서 서로 통신할 수 있다.
이들 시스템의 추가 상세사항이 다음의 도면을 참조하여 제공된다.
일반적으로, 통신 인터페이스에 의해 컴퓨팅 디바이스들 간 통신이 가능해진다. 제어 회로는 각자의 컴퓨팅 디바이스의 하드웨어 및/또는 소프트웨어의 제어를 제공한다. 예를 들어, 제어 회로는 프로세서로 하여금 본 명세서에 기재된 프로세서 또는 컴퓨터로 구현되는 방법을 수행하게 하도록 하나 이상의 유형의(tangible), 비일시적(non-transitory), 프로세서 판독형 저장 디바이스 상에 저장되는 명령어를 실행시키는 하나 이상의 프로세서를 포함할 수 있다. 상기 메모리는 명령어를 코드로서 저장할 수 있고 프로세서 판독형 저장 디바이스를 제공할 수 있다. 상기 메모리는 본 명세서에 기재된 기법을 수행하도록 액세스되는 데이터의 데이터베이스, 데이터 저장소 또는 그 밖의 다른 소스를 제공할 수 있다. 상기 메모리는 하드웨어 메모리 디바이스일 수 있다.
도 2는 도 1의 리그(20)의 두부 장착형 디스플레이(HMD) 디바이스(150)로서의 구현의 평면도이다. HMD 디바이스의 우측부가 상세히 도시된다. 상기 HMD 디바이스는 일반적으로 안경 프레임의 형태를 가질 수 있는 두부 장착형 프레임(101), 다리(temple)(102 및 103), 및 코 다리(nose bridge)(104)를 포함하는 전방 렌즈 프레임을 포함한다. 소리, 가령, 음성 사용자 명령어를 녹음하고 대응하는 오디오 데이터를 처리 유닛(105)으로 전송하기 위한 마이크로폰(110)이 코 다리(104)에 내장된다. 렌즈(116 및 119)는 시스루(see-through)형, 가령, 시스루형 근안(near-to-the-eye) HMD 디바이스이다. 몰입형 HMD 디바이스가 대안적으로 사용될 수 있다.
상기 HMD 디바이스는 사용자의 두부에 착용되어, 사용자가 디스플레이를 투과해서 볼 수 있고 따라서 HMD 디바이스에 의해 생성되지 않는 이미지를 포함하는 실세계 장면을 볼 수 있다. HMD 디바이스는 자립형(self-contained)이어서, HMD 디바이스의 모든 구성요소가 프레임에 장착될 수 있다. 선택적으로, HMD 디바이스의 하나 이상의 구성요소가 프레임에 장착되지 않는다. 예를 들어, 프레임에 장착되지 않는 하나 이상의 구성요소는 유선으로 상기 프레임에 장착된 구성요소로 물리적으로 연결될 수 있다.
또한, 프레임에 장착되지 않는 하나 이상의 구성요소는, 유선으로 또는 그 밖의 다른 방식으로 프레임에 장착된 구성요소에 물리적으로 연결되지 않고, 상기 프레임에 장착된 구성요소와 무선 통신할 수 있다. 프레임에 실리지 않는 하나 이상의 구성요소는 사용자가 지닐 수 있는데, 하나의 접근예에서, 가령, 손목 상에 지닐 수 있다. 예를 들어, 처리 유닛(105)은 유선으로 또는 무선 링크를 통해 프레임 내 구성요소에 연결될 수 있다. 용어 "HMD 디바이스"는 프레임 내 구성요소 및 이와 연관된 프레임 밖 구성요소를 모두 포함할 수 있다.
상기 처리 유닛(105)은 HMD 디바이스를 동작시키기 위해 사용되는 컴퓨팅 파워 중 많은 파워를 포함한다. 프로세서는 본 명세서에 기재된 프로세스를 수행하기 위해 프로세서 판독형 저장 디바이스 상에 저장된 명령어를 실행시킬 수 있다. 하나의 실시예에서, 처리 유닛은 하나 이상의 서버, 허브 컴퓨팅 시스템, 그 밖의 다른 HMD 또는 그 밖의 다른 컴퓨팅 디바이스와 무선 통신한다. 제어 회로(136)는 HMD 디바이스의 그 밖의 다른 구성요소를 지원하는 다양한 전자소자를 제공한다.
HMD 디바이스의 정면에 하나 이상의 전방 또는 방 주시 가시광 카메라(113)가 있다. 상기 카메라는 비디오 및 정지 이미지를 캡처하고 이미지를 처리 유닛으로 전송할 수 있는 적어도 하나의 가시광 비디오 카메라를 포함할 수 있다. 상기 카메라는 물리 공간 내 특징부, 가령, 색상, 패턴, 형태, 선 등을 식별하도록 사용될 수 있다. 심도 센서는 적외선 발광체(115) 및 적외선 센서/검출기(117)의 조합에 의해 형성될 수 있다. 상기 가시광 카메라가 또한 심도 센서의 일부일 수 있다. 상기 가시광 카메라(113)는 외부를 주시하며 사용자의 시점과 유사한 시점을 가진다.
HMD 디바이스의 프레임의 일부분이 하나 이상의 렌즈를 포함하는 디스플레이를 둘러싼다. 상기 디스플레이는 도광 광학 요소(light guide optical element)(112), 불투명도 필터(opacity filter)(114), 전면 우측 시스루 렌즈(116) 및 후면 우측 시스루 렌즈(118)를 포함한다. 하나의 실시예에서, 불투명도 필터(114)가 시스루 렌즈(116)와 뒤에서 정렬되며, 도광 광학 요소(112)가 불투명도 필터(114)와 뒤에서 정렬되고, 시스루 렌즈(118)는 도광 광학 요소(112)와 뒤에서 정렬된다. 불투명도 필터(114)는 (픽셀 단위로 또는 균일하게) 자연광을 필터링-제거하여, 증강 현실 이미지의 콘트라스트를 높일 수 있다. 도광 광학 요소(112)는 인공광을 눈으로 보낸다. 마찬가지로, HMD의 좌측부가 전면 좌측 시스루 렌즈(119) 및 후면 좌측 시스루 렌즈(121)를 포함한다.
(하나의 실시예에서) 증강 현실 이미지를 투사하기 위한 마이크로디스플레이(microdisplay)(120) 및 상기 마이크로디스플레이로부터의 이미지를 도광 광학 요소(112)로 지향시키기 위한 렌즈(122)를 포함하는 이미지 소스(image source)가 다리(102)에, 또는 다리 내부에 장착된다. 하나의 실시예에서, 렌즈(122)는 시준 렌즈(collimating lens)이다. 증강 현실 발산기(emitter)가 마이크로디스플레이, 하나 이상의 광학 구성요소, 예컨대, 렌즈(122) 및 도광 광학 요소(112), 및 연관된 전자소자, 가령, 드라이버를 포함할 수 있다. 이러한 증강 현실 발산기는 HMD 디바이스와 연관되고 사용자의 눈으로 광을 발산시키며, 여기서, 광은 증강 현실 정지 이미지 또는 비디오 이미지를 표현한다. 이는 물리 공간에 가상 물체를 디스플레이하도록 사용될 수 있다.
제어 회로(136)는 도 3과 관련하여 더 언급되겠지만, HMD 디바이스의 그 밖의 다른 구성요소를 지원하는 다양한 전자소자를 제공한다. 이어폰(130) 및 관성 센서(132)(가령, 도 1의 배향 센서(27))가 다리(102) 내부에 또는 다리에 장착된다. 하나의 실시예에서, 관성 센서(132)는 3축 자력계(magnetometer)(132A), 3축 자이로스코프(gyroscope)(132B) 및 3축 가속도계(132C)를 포함한다(도 3 참조). 관성 센서는 HMD 디바이스의 위치, 배향, 급가속을 감지하기 위한 것이다. 예를 들어, 관성 센서는 사용자의 두부에 착용되는 HMD의 배향 및 위치를 결정하도록 사용되는 하나 이상의 센서일 수 있다.
마이크로디스플레이는 렌즈(122)를 통해 이미지를 투사한다. 도광 광학 요소(112)는 화살표(142)로 나타낸 바와 같이, HMD 디바이스 앞에서의 광이 도광 광학 요소를 통해 눈(140)으로 전송되게 하면서, 마이크로디스플레이로부터의 광을 사용자의 눈(140)으로 전송함으로써, 사용자는 마이크로디스플레이로부터 증강 현실 이미지를 수신하는 것에 추가로, HMD 디바이스 앞의 공간의 실제로 직시할 수 있다. 따라서 도광 광학 요소의 벽은 시스루이다. 도광 광학 요소는 제1 반사 표면(124)(가령, 거울 또는 그 밖의 다른 표면)을 포함한다. 마이크로디스플레이로부터의 광이 렌즈(122)를 통해 반사 표면(124) 상에 입사하며, 상기 반사 표면은 내부 반사에 의해 광이 도광 광학 요소를 포함하는 평면 기판 내부에 포집되도록 입사된 광을 반사시킨다. 기판의 표면으로부터의 몇 번의 반사 후, 포집된 광 파가 예시적 표면(126)을 포함하는 선택적 반사 표면의 어레이에 도달한다.
반사 표면(126)은 기판으로부터의 입사 광파를 사용자의 눈(140)으로 연결한다. 상이한 광선이 상이한 각도로 다양한 반사 표면(126)에 충돌할 때, 상기 상이한 광선은 상이한 각도로 기판의 내부로부터 이동 및 산란될 것이다. 따라서, 반사 표면들 중 서로 다른 반사 표면에 의해 상이한 광선들이 기판으로부터 반사될 것이다. 표면(126)의 적절한 각도를 선택함으로써, 어느 표면(126)에 의해 어느 광선이 기판으로부터 반사될지에 대한 선택이 가공(engineer)된다. 하나의 실시예에서, 각각의 눈이 각자의 도광 광학 요소를 가질 것이다. HMD 디바이스가 2개의 도광 광학 요소를 가질 때, 각각의 눈은 두 눈 모두에 동일한 이미지 또는 두 눈에 상이한 이미지를 디스플레이할 수 있는 각자의 마이크로디스플레이를 가질 수 있다. 또 다른 실시예에서, 두 눈으로 광을 반사시키는 하나의 도광 광학 요소가 존재할 수 있다.
도 3은 도 2의 HMD 디바이스(150)의 다양한 구성요소를 도시하는 블록도이다. HMD 디바이스 구성요소는 다양한 상태를 추적하는 여러 센서를 포함한다. 예시적 구현예에서, HMD 디바이스는 도 4에 도시된 바와 같이 처리 유닛(105)으로부터 증강 현실 이미지에 대한 정보를 수신하고 상기 처리 유닛에 센서 정보를 다시 제공할 수 있다. 선택적으로, 처리 유닛은 센서 및 허브 컴퓨팅 디바이스로부터 센서 정보를 더 수신한다. 상기 정보 및/또는 그 밖의 다른 기준에 기초하여, 처리 유닛은 증강 현실 이미지를 사용자에게 제공할 때와 위치를 결정할 수 있고 이에 따라 HMD 디바이스로 명령어를 전송할 수 있다.
구성요소들(가령, 안구 추적 카메라(eye tracking camera)(134B), 마이크로디스플레이(120), 불투명도 필터(114), 안구 추적 조명(eye tracking illumination)(134A) 및 이어폰(130)) 중 일부는, 이들 디바이스 각각이 2개씩, 즉, 하나는 HMD 디바이스의 좌측부용으로 하나는 우측부용으로 존재함을 나타내기 위해 어둡게 도시되어 있다. 마찬가지로, 심도 센서(313)는 가령, 적외선 발광체(115) 및 적외선 센서/검출기(117)를 포함할 수 있다. 또 다른 접근법에서, 이들 사이에 알려진 간격을 갖는 둘 이상의 카메라가 심도 카메라(depth camera)로서 사용되어 방 안의 물체에 대해, 상기 카메라/HMD 디바이스에서 상기 물체까지의 거리를 가리키는 심도 데이터를 획득할 수 있다. 선택적으로, 하나의 가시광 카메라(113)가 사용된다. 상기 안구 추적 카메라(134B) 및 안구 추적 조명(134A)이 안구 추적 구성요소(134)의 일부이다.
전방 주시 카메라로부터의 이미지가 사용자의 시야 내에서 사람, 손 제스처, 및 그 밖의 다른 물체를 식별하기 위해 사용될 수 있다. 예를 들어, 사용자가 물체를 가리키는 것과 같은 손 제스처를 만들었을 때가 결정될 수 있다. 실세계 물체는 식별되고 데이터 스트림과 연관되거나 이전에 연관된 데이터 스트림을 디스플레이하기 위한 위치로서 사용될 수 있다.
제어 회로(300)는 전력 관리 회로(302)와 통신한다. 제어 회로(300)는 프로세서(310), 메모리(344)(가령, DRAM)와 통신하는 메모리 제어기(312), 카메라 인터페이스(316), 카메라 버퍼(318), 디스플레이 드라이버(320), 디스플레이 포맷터(display formatter)(322), 타이밍 생성기(326), 디스플레이 출력 인터페이스(328) 및 디스플레이 입력 인터페이스(330)를 포함한다. GPS 회로(317)는 HMD 디바이스의 위치를 식별하기 위해 사용될 수 있다.
하나의 실시예에서, 제어 회로(300)의 모든 구성요소가 전용 라인 또는 하나 이상의 버스를 통해 서로 통신한다. 또 다른 실시예에서, 제어 회로(300)의 각각의 구성요소는 프로세서(310)와 통신한다. 카메라 인터페이스/버퍼(316)가 가시광 카메라로의 인터페이스를 제공하고 상기 가시광 카메라로부터 이미지를 저장한다. 심도 센서 인터페이스/버퍼(318)는 심도 센서로 인터페이스를 제공하고 상기 심도 센서로부터 이미지를 저장한다.
디스플레이 드라이버(320)는 마이크로디스플레이를 구동한다. 디스플레이 포맷터(322)는 상기 마이크로디스플레이 상에 디스플레이되는 증강 현실에 대한 정보를 불투명도 제어 회로(324)로 제공하며, 상기 불투명도 제어 회로는 불투명도 필터(114)를 제어한다. 타이밍 생성기(326)는 시스템에 대한 타이밍 데이터를 제공하도록 사용된다. 디스플레이 출력 인터페이스(328)는 전방 주시 카메라(113)로부터 이미지를 처리 유닛(105)으로 제공하기 위한 버퍼이다. 디스플레이 입력 인터페이스(330)는 이미지, 가령, 마이크로디스플레이 상에 디스플레이될 증강 현실 이미지를 수신하기 위한 버퍼이다.
디스플레이 출력 인터페이스(328) 및 디스플레이 입력 인터페이스(330)는, 처리 유닛이 HMD 디바이스의 프레임에 유선으로 부착될 때 또는 무선 링크에 의해 통신할 때 처리 유닛으로의 인터페이스이며, 사용자 손목 상에서 손목 밴드 상에 착용되는 밴드 인터페이스(band interface)(332)와 통신한다. 이 방식은 HMD 디바이스의 프레임에 장착된 구성요소의 중량을 감소시킨다. 또 다른 방식에서, 앞서 언급된 바와 같이, 처리 유닛은 프레임에 실릴 수 있고 밴드 인터페이스는 사용되지 않는다.
전력 관리 회로(302)는 전압 조정기(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)(420), 그래픽 처리 유닛(GPU)(422), 캐시(424), RAM(426), 메모리(430)(가령, DRAM)과 통신하는 메모리 제어부(428), 플래시 메모리(또는 그 밖의 다른 유형의 비휘발성 저장부)(434)와 통신하는 플래시 메모리 제어부(432), 밴드 인터페이스(402) 및 밴드 인터페이스(332)(사용될 때)를 통해 HMD 디바이스와 통신하는 디스플레이 출력 버퍼(436), 밴드 인터페이스(402) 및 밴드 인터페이스(332)(사용될 때)를 통해 HMD 디바이스와 통신하는 디스플레이 입력 버퍼(438), 마이크로폰에 연결되기 위한 외부 마이크로폰 커넥터(442)와 통신하는 마이크로폰 인터페이스(440), 무선 통신 구성요소(446)로 연결하기 위한 주변장치 구성요소 인터커넥트(PCI) 익스프레스 인터페이스(444), 및 USB 포트(448)를 포함한다.
하나의 실시예에서, 무선 통신 구성요소(446)는 Wi-Fi® 활성화 통신 디바이스, BLUETOOTH® 통신 디바이스, 또는 적외선 통신 디바이스를 포함할 수 있다. 무선 통신 구성요소(446)는, 하나의 구현예에서, HMD 디바이스에 의해 디스플레이되는 콘텐츠와 동기화되어 데이터를 수신하는 무선 통신 인터페이스이다. 또한, 수신된 데이터에 응답하여 증강 현실 이미지가 디스플레이될 수 있다. 하나의 접근법에서, 이러한 데이터는 서버, 허브 컴퓨팅 시스템, 로컬 Wi-Fi® 네트워크 또는 WLAN, 셀 폰 네트워크, 로컬 저장 디바이스 또는 그 밖의 다른 소스로부터 수신된다.
USB 포트가 사용되어, 처리 유닛을 허브 컴퓨팅 시스템(50)으로 도킹하여 데이터 또는 소프트웨어를 처리 유닛으로 로딩하고 처리 유닛을 충전할 수 있다. 하나의 실시예에서, CPU(420) 및 GPU(422)는 사용자의 시야로 증강 현실 이미지를 삽입할 곳, 때, 및 방식을 결정하기 위한 핵심 구성요소이다.
전력 관리 회로(406)는 클록 생성기(460), 아날로그-디지털 변환기(462), 배터리 충전기(464), 전압 조정기(466) 및 HMD 전력 소스(476)를 포함한다. 아날로그-디지털 변환기(462)는 충전 잭(charging jack)(470)으로 연결되어 AC 공급분을 수신하고 시스템을 위한 DC 공급분을 생성할 수 있다. 전압 조정기(466)는 시스템에 전력을 공급하기 위해 배터리(468)와 통신한다. 배터리 충전기(464)는 충전 잭(470)으로부터 전력을 수신하면 (전압 조정기(466)를 통해) 배터리(468)를 충전하기 위해 사용된다. HMD 전력 소스(476)는 HMD 디바이스로 전력을 제공한다.
증강 현실 이미지를 삽입할 위치, 방식, 및 때를 결정하는 계산이 HMD 디바이스에 의해, 및/또는 상기 HMD 디바이스와 통신하는 컴퓨팅 디바이스에 의해 수행될 수 있다.
하나의 예시적 실시예에서, 상기 HMD 디바이스는 사용자가 위치하는 환경의 모델을 생성하고, HMD 디바이스의 시계(field of view)에 기초하여 상기 환경 내 다양한 물체를 추적할 것이다. 상기 모델 및 추적 정보는 처리 유닛으로 제공된다. HMD 디바이스가 획득한 센서 정보가 상기 처리 유닛으로 전송된다. 처리 유닛은 사용자의 시계(field of view)를 정제(refine)하고 증강 현실 이미지를 삽입할 방식, 위치, 및 때에 대해 HDM 디바이스에게 명령어를 제공한다.
도 5는 도 1의 허브 컴퓨팅 시스템(50)의 하나의 실시예의 블록도이다. 이 실시예에서, 컴퓨팅 시스템은 멀티미디어 콘솔(500), 가령, 게임 콘솔이다. 상기 멀티미디어 콘솔은 CPU(501), 및 다양한 유형의 메모리, 가령, 플래시 리드 온리 메모리(ROM)(503), 랜덤 액세스 메모리(RAM)(506), 하드 디스크 드라이브(508), 및 휴대용 미디어 드라이브(505)로의 프로세서 액세스를 촉진시키는 메모리 제어기(502)를 가진다. 하나의 구현예에서, CPU는 레벨 1 캐시(510) 및 레벨 2 캐시(512)를 포함하여, 데이터를 임시 저장할 수 있고 따라서 하드 드라이브(508)로의 메모리 액세스 사이클의 횟수를 감소시킴으로써, 프로세싱 속도 및 처리율을 개선할 수 있다.
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-528)가 모듈 상에 장착된다.
모듈(514)은 USB 호스트 제어기(531) 및 네트워크 인터페이스(532)를 포함한다. USB 호스트 제어기는 버스(가령, PCI 버스)를 통해 CPU 및 메모리 제어기와 통신하는 것으로 도시되고 주변장치 제어기(504(1)-504(4)) 호스트로서 기능한다. 네트워크 인터페이스는 네트워크(가령, 인터넷, 홈 네트워크 등)로의 액세스를 제공하며 다양한 유선 또는 무선 인터페이스 구성요소 중 임의의 것일 수 있다.
도시된 구현예에서, 콘솔은 4개의 주변장치 제어기(peripheral controller)를 지원하기 위한 제어기 지원 서브어셈블리(controller support subassembly)(540)를 포함한다. 상기 제어기 지원 서브어셈블리는 외부 제어 디바이스, 가령, 미디어 및 게임 제어기에 의한 유선 및 무선 동작을 지원하도록 요구되는 임의의 하드웨어 및 소프트웨어 구성요소를 포함한다. 전방 패널 I/O 서브어셈블리(542)가 전원 버튼(512), 꺼냄 버튼(541), 및 임의의 LED(발광 다이오드) 또는 콘솔의 외부 표면 상에 노출되는 그 밖의 다른 지시자의 복수의 기능을 지원한다. 서브어셈블리는 하나 이상의 케이블 어셈블리(544)를 통해 모듈과 통신한다. 또 다른 구현예에서, 콘솔은 추가 제어기 서브어셈블리를 포함할 수 있다. 광학 I/O 인터페이스(535)는 모듈(514)로 전달될 수 있는 신호를 전송 및 수신한다. 상기 인터페이스는 원격 제어부(590)에 응답할 수 있다.
메모리 유닛(MU)(540(1) 및 540(2))은 MU 포트 "A" 530(1) 및 "B" 530(2) 각각으로 연결 가능하다. 추가 MU(가령, MU540(3)-540(6))가 주변장치 제어기(504(1) 및 504(3))로 연결 가능한 것으로, 즉, 각각의 제어기마다 MU가 2개씩으로 도시되어 있다. 제어기(504(2) 및 504(4))가 또한 MU를 수신하도록 구성될 수 있다(도시되지 않음). 각각의 MU가 게임, 게임 파라미터, 및 그 밖의 다른 데이터가 저장될 수 있는 추가 저장소를 제공한다. 일부 구현예에서, 그 밖의 다른 데이터가 디지털 게임 구성요소, 실행형 게임 애플리케이션, 게임 애플리케이션을 확장시키기 위한 명령어 세트, 및 미디어 파일 중 임의의 것을 포함할 수 있다. 콘솔 또는 제어기로 삽입될 때, MU는 메모리 제어기에 의해 액세스될 수 있다. 시스템 전력 공급 모듈(550)은 콘솔의 구성요소로 전력을 제공한다. 팬(552)이 콘솔 내 회로를 냉각시킨다. 마이크로제어기 유닛(554)이 또한 제공된다.
머신 명령어를 포함하는 애플리케이션(560)이 하드 디스크 드라이브 상에 저장된다. 콘솔의 전원이 켜질 때, 애플리케이션의 다양한 부분들이 RAM 및/또는 캐시로 로딩되어, CPU 상에서 실행되게 할 수 있으며, 여기서 애플리케이션은 한 가지 이러한 예시이다. 다양한 애플리케이션이 CPU 상에서 실행되도록 하드 디스크 드라이브 상에 저장될 수 있다.
콘솔은 시스템을 단순히 모니터, 텔레비전, 비디오 프로젝터, 또는 그 밖의 다른 디스플레이 디바이스로 연결함으로써, 자립형 시스템으로서 동작할 수 있다. 이러한 자립형 모드에서, 콘솔에 의해 하나 이상의 플레이어가 게임을 할 수 있고, 가령, 영화를 보거나 음악을 들음으로써 디지털 미디어를 즐길 수 있다. 그러나 네트워크 인터페이스를 통해 이용 가능해지는 광대역 연결성의 통합에 의해, 콘솔은 더 큰 네트워크 게임 커뮤니티의 참가자로서도 동작할 수 있다.
도 6a는 포즈 그래프(pose graph)를 이용하여 물리 공간 내 표면을 재구성하기 위한 프로세스를 도시한다. 단계(600)는 리그(rig)가 물리 공간 내에서 상이한 포즈로 이동함을 나타낸다. 단계(601)는 리그 상의 가시광 카메라로부터 물리 공간의 이미지를 획득하는 것과 관련된다. 단계(602)는 리그 상의 배향 센서로부터 배향 판독치를 획득하는 것과 관련된다. 단계(603)는 이미지 및 배향 판독치를 처리하여 포즈 그래프를 제공 및 업데이트하는 것과 관련된다. 단계(604)는 리그 상의 심도 센서로부터 물리 공간의 볼륨의 배향 심도 맵을 획득하는 것과 관련된다. 단계(605)는 볼륨을 포즈 그래프의 노드에 고정(anchor)하는 것과 관련된다. 단계(606)는 포즈 그래프의 상태에 기초하여 물리 공간 내 표면을 재구성하는 것과 관련된다. 단계들 중 일부가 동시에 또는 상이한 순서로 수행될 수 있다. 일반적으로, 이미지의 획득 및 포즈 그래프의 업데이트는 심도 맵의 획득 및 표면의 재구성과 별도로 발생할 수 있다. 마찬가지로 심도 맵의 획득은 이미지의 획득 및 포즈 그래프의 업데이트와 별도로 발생할 수 있다. 리그가 계속 이동함에 따라, 추가 이미지 및 심도 맵이 캡처 및 처리될 수 있다. 프로세스와 관련된 추가 상세사항은 이하에서 제공된다.
도 6b는 도 6a의 단계(603)의 추가 상세사항을 도시한다. 단계(603)는 이미지 및 배향 판독치를 처리하여 포즈 그래프를 제공 및 업데이트하는 것과 관련됐다. 단계(610)는 리그의 배향 판독치 및 포즈의 이미지를 입력하고, 이미지 특징부(image feature)를 결정하는 것과 관련된다. 일반적으로 이미지는 이를 컴팩트한 방식으로 표현하도록 처리되어, 요구되는 데이터 저장 공간을 감소시키고, 특징부 기반 이미지 매칭을 촉진시킬 수 있다. 이미지는 특징부, 가령, 색상, 패턴, 형태, 라인 등을 포함할 수 있고, 두 이미지 간 공통 특징부가 식별될 수 있다. 이미지를 나타내는 한 가지 방식이 특징부 검출기 및 디스크립터(descriptor)를 이용하는 것이다. 유명한 디스크립터로는, SIFT(Scale Invariant Feature Transform), 및 SURF(Speeded Up Robust Features)가 있다. 이들은 비율조정, 회전, 및 조명 변화에 강건하다고 알려져 있다.
예를 들어, SIFT 기법에서, 기준 이미지의 세트로부터 물리 공간 내 물체의 키포인트가 우선 추출되고 데이터베이스에 저장된다. 새 이미지로부터의 각각의 특징부를 이 데이터베이스에 개별적으로 비교하고 이들의 특징 벡터의 유클리드 거리(Euclidean distance)에 기초하여 매칭되는 특징부의 후보를 찾음으로써, 새 이미지에서 물체가 인식된다. 매칭의 전체 세트로부터, 새 이미지에서 물체 및 이의 위치, 비율, 및 배향에 일치되는 키포인트들의 서브세트가 식별되어 우수한 매칭을 필터링할 수 있다. 일반 허프 변환(generalized Hough transform)의 효율적인 해시 테이블 구현을 이용함으로써, 일관된 클러스터의 결정이 신속하게 수행된다. 그 후 물체 및 이의 포즈가 일치하는 셋 이상의 특징부들의 클러스터 각각이 추가 상세한 모델 검증의 대상이 되고, 그 후 이상치(outlier)가 폐기된다. 마지막으로, 수식의 정확도 및 확률적 오류 매치의 수가 주어질 때, 특정 특징부 세트가 물체의 존재를 가리킬 확률이 계산된다. 이들 모든 테스트를 통과한 물체 매칭이 높은 신뢰도를 갖는 올바른 매칭이라고 식별될 수 있다.
결정 단계(611)는 포즈가 새로운 것인지 여부를 결정한다. 하나의 접근법에서, 포즈가 이전 포즈 또는 또 다른 포즈와 충분히 상이하지 않은 경우, 이는 새로운 것으로 간주되지 않을 수 있으며, 이 경우, 흐름은 단계(610)로 복귀한다. 예를 들어, 배향이 다른 노드에서와 상당히 상이한 경우 포즈는 새로운 것일 수 있다. 또는, 이미지의 특징부가 다른 노드에서와 충분히 상이한 경우, 또는, 마지막 새 포즈로부터 특정 시간이 경과한 경우, 포즈는 새로운 것일 수 있다. 하나의 접근법에서, 카메라가 비디오 이미지의 시퀀스를 제공하고 선택된 이미지가 노드를 정의할 때 사용되기에 적합하다.
포즈가 새로운 것인 경우, 단계(612)가 새 노드를 포즈 그래프에 추가한다. 단계(613)가 포즈의 배향과 연관된 좌표계를 결정한다. 또는 좌표계는 이미 결정되었을 수 있다. 단계(614)가 이미지를 포즈와 연관시키며(가령, 리그/카메라가 상기 포즈를 취했을 때 상기 리그 상의 카메라에 의해 캡처된 상기 이미지) 좌표계를 새 노드와 연관시킨다. 예를 들어, 이는 정보를 데이터베이스에 저장하는 것과 관련될 수 있으며, 이는 이하에서 더 설명된다. 이미지는 임의의 형태, 가령, 픽셀 데이터 및/또는 추출된 특징부 데이터로 표현 및 저장될 수 있다. 단계(615)는 새 노드와 연관된 이미지와 포즈 그래프의 하나 이상의 다른 노드의 이미지 간 대응관계(correspondence)를 결정한다. 예를 들어, 이는 새 노드의 이미지의 특징부를 포즈 그래프에서 상기 새 노드와 가까운 하나 이상의 다른 노드의 이미지의 특징부에 비교하는 것과 관련될 수 있다. 두 이미지들 내 특징부가 비교적 유사한 경우, 두 이미지들 간 대응관계는 비교적 높다. 예를 들어, 대응관계는 SIFT 기법을 이용하여 결정될 수 있다.
단계(616)가 새 노드의 좌표계와 하나 이상의 다른 노드의 좌표계 간 변환관계(transform)를 결정한다. 단계(617)가 변환관계 및 대응관계를 새 노드와 하나 이상의 다른 노드 간 하나 이상의 링크와 연관시킨다. 단계(618)가 적절하게 포즈 그래프 내 다른 노드 및 링크를 업데이트한다. 예를 들어, 포즈 그래프의 상태를 업데이트하는 것은, 좌표계 및 변환관계가 조정되는 광속 조정(bundle adjustment)을 수행하는 것 또는 대응관계 중 하나 이상을 업데이트하는 것, 또는 포즈 그래프의 토폴로지의 변화가 존재하는 재배치(relocalization)를 수행하는 것을 포함할 수 있다. 예를 들어, 재배치는 포즈 그래프에서 노드의 폐쇄된 루프가 형성되는 루프 폐쇄(루프 폐쇄)를 포함할 수 있다.
도 6c는 도 6a의 단계(604)의 추가 상세사항을 도시한다. 단계(604)는 리그 상의 심도 센서로부터 물리 공간의 볼륨의 심도 맵을 획득하는 것과 관련됐다. 단계(620)는 심도 맵을 획득하기로 결정하는 것과 관련된다. 예를 들어, 이는, 리그가 심도 데이터가 아직 회득되지 않은 물리 공간의 한 영역을 조준할 때 발생할 수 있다. 단계(621)는 물리 공간을 하나 이상의 볼륨으로 분할하고, 경우에 따라 새 볼륨을 만드는 것과 관련된다. 볼륨은 물리 공간 내 균일한 형태의 공간, 가령, 입방체일 수 있다. 하나의 방식에서, 볼륨은 블록(block)으로 일컬어지는 서브-볼륨으로 분할되며, 이때 볼륨당 N×N×N개의 블록이 존재하며, N은 1 이상의 정수이다. 또한, 각각의 블록은 8×8×8개의 복셀(voxel)로 분할될 수 있다. 단계(622)는 볼륨들을 서로 겹치도록 위치설정하는 것과 관련된다. 예를 들어, 볼륨이 초기에 위치설정될 때 겹치는 분량이 최소 임계치를 초과하지만, 최대 임계치를 초과하지 않도록 설정될 수 있다. 추가 상세사항을 위해 도 10a 및 10b를 참조할 수 있다. 볼륨의 위치는 볼륨이 초기에 위치설정된 후에 조정될 수 있어서, 겹치는 분량이 변경될 수 있다. 그러나 겹침의 초기 사용은 볼륨의 위치가 조정될 때 갭이 형성되지 않게 하는 경향을 가진다. 단계(623)는 과도하게 겹치는 분량, 가령, 최대 임계치보다 큰 겹치는 분량을 갖는 볼륨을 잘라내는 것(clipping)과 관련된다. 도 11a 및 11b를 참조할 수 있다.
도 6d는 도 6a의 단계(605)의 추가 상세사항을 도시한다. 단계(605)는 볼륨을 포즈 그래프의 노드에 고정(anchor)하는 것과 관련됐다. 단계(630)는 포즈 그래프에서, 심도 맵과 연관된 포즈와 유사한 포즈를 갖는 노드를 식별하는 것과 관련된다. 즉, 포즈 그래프에 노드를 만들기 위해 사용됐던 리그의 포즈가 심도 맵이 캡처됐을 때 리그의 포즈와 유사 또는 동일하다. 하나의 접근법에서, 포즈들은 동일하고 동시에 발생한다. 또 다른 접근법에서, 포즈들은 동일하거나 유사하며 상이한 때에 발생한다. 단계(631)는 가령, 데이터베이스에서 볼륨을 식별된 노드에 고정(anchor)하는 것과 관련되며, 이는 이하에서 더 설명된다. 따라서 볼륨은 노드와 연관되어, 볼륨이 노드의 좌표계에 기초하여 물리 공간에 위치설정된다. 노드의 좌표계가 조정될 때, 물리 공간 내 볼륨의 위치가 또한 조정된다. 일반적으로 한 볼륨은 하나의 노드에 계속 고정(anchor)되지만, 가령, 포즈 그래프의 업데이트로 인해, 다른 노드의 포즈가 한 볼륨을 획득하는 데 사용된 포즈에 더 가까워 진 경우, 상기 한 볼륨이 상기 다른 노드에 재고정(re-anchor)되는 것이 가능하다. 또한 볼륨은 일대일로 또는 다대일로 노드에 고정(anchor)될 수 있다.
도 6e는 도 6a의 단계(606)의 추가 상세사항을 도시한다. 단계(606)는 포즈 그래프의 상태에 기초하여 물리 공간에서 표면을 재구성하는 것과 관련된다. 단계(640)는 표면 재구성을 위해 하나 이상의 볼륨 및 이와 연관된 심도 맵을 식별하는 것과 관련된다. 예를 들어, 이들 볼륨은 사용자의 시계 내 물리 공간의 일부분에 대응할 수 있다. 사용자가 자신의 머리를 돌려 물리 공간의 다른 부분을 볼 때, 표면 재구성에 관련된 볼륨이 또한 변할 수 있다. 단계(641)가 하나 이상의 볼륨이 고정(anchor)되는 하나 이상의 노드를 결정하는 것과 관련된다. 이는 데이터베이스에서 볼륨과 상호 참조되는 노드를 검색함으로써 이뤄질 수 있다. 단계(642)가 하나 이상의 노드의 좌표계를 결정하는 것과 관련된다. 이는 데이터베이스에서 노드와 상호 참조되는 좌표계를 검색함으로써 이뤄질 수 있다. 단계(643)가 하나 이상의 좌표계에 기초하여 하나 이상의 볼륨을 하나 이상의 심도 맵으로 투사시키는 것과 관련된다. 본질적으로, 심도 맵의 김도 값이 좌표계에 기초하여 볼륨의 부분들과 연관되도록 심도 맵은 좌표계와 관련하여 형성된다.
도 7은 도 6a의 프로세스를 수행하기 위한 표면 재구성 파이프라인을 도시한다. 이 예시적 구현에서, SR 파이프라인이 ASIC(Application-Specific Integrated Circuit)(700)과 SoC(System-on-a-Chip)(740) 모두에 걸쳐 실행된다. ASIC 및 SoC 각각은 복수의 디바이스 및 서브시스템을 호스팅한다. 화살표가 데이터 흐름 방향을 가리킨다. 센서(710)가 ASIC으로 연결된다. 센서가 리그, 가령, HMD 디바이스 또는 로봇 상에 장착된다. 이들 센서는 배향 센서(711), 가령, 회전 및 직선 가속도를 감지하는 관성 측정 유닛(IMU)(inertial measurement unit)을 포함한다. 가시광 카메라(712)가 물리 공간의 가시광 이미지를 획득하고 심도 센서(713)가 물리 공간의 심도 맵을 획득한다. 예시적 구현은 타임 오브 플라이트 카메라(time of flight camera)를 심도 센서로서 사용한다. 이 센서는 카메라로부터 보내지고, 물리 공간 내 표면으로부터 산란되어 센서로 복귀되는 광의 왕복 시간을 측정한다. 총 왕복 시간은 수 십 나노초 정도이다. 심도 센서의 또 다른 구현은 가시광 카메라의 스테레오 쌍이지만, 이 방식은 더 낮은 품질의 심도 맵을 야기할 수 있다.
추적 서브시스템(720)은 센서 데이터를 포즈 및 상호연결된 좌표계의 맵으로 변환한다. 예를 들어, 이는 HMD 디바이스의 경우, 두부(head) 추적 서브시스템일 수 있다. 상기 추적 서브시스템(720)은 맵 서비스 서브시스템(741)에 응답하고 추적 및 맵핑 프로세스(721)를 포함한다. 추적 서브시스템(720) 및 맵 서비스 서브시스템(741)은 함께 추적 및 맵핑 서브시스템(742)을 형성한다.
SR 융합 및 추출 커넬(SRFEK)(SR Fusion and Extraction Kernel)이 심도 맵 및 포즈를 표면 데이터로 변환한다. 상기 SRFEK는 ASIC 상에서 실행되며 ASIC 및 SoC 모두 내 다른 프로세스와 통신한다. 상기 SRFEK는 두 가지 입력 데이터, 즉, 심도 맵과 포즈를 취한다. 원시-심도 서브시스템(raw to depth subsystem)(731)이 심도 센서로부터 원시 적외선 이미지를 캡처하고 이들을 심도 맵의 심도 값으로 변환한다. 심도 값은 심도 센서로부터 물리 공간 내 하나 이상의 표면까지의 거리를 나타낸다. 이들 심도 맵은 렌즈 왜곡을 가진다. 이를 해결하기 위해, 왜곡제거 서브시스템(undistortion subsystem)(732)이 심도 이미지에서 카메라의 렌즈로 인한 왜곡의 영향을 제거하여, 왜곡제거된 심도 맵을 제공할 수 있다. 이는 교정을 통해 측정되는 파라미터를 갖는 렌즈 왜곡의 모델을 적용하여, 평평한 왜곡제거 이미지(flat undistorted image)를 생성하는 것과 관련될 수 있다. 실행 중에, 이는 왜곡제거 맵(룩업 테이블)을 생성하고 이를 각각의 심도 맵 픽셀에 적용하는 것과 관련될 수 있다.
3D 융합 서브시스템(734)은 왜곡제거된 심도 맵을 포즈와 결합시켜, 이를 3D 볼륨으로 융합시킬 수 있다. 융합은 심도 맵(2D 이미지)을 볼륨(3D)으로 투사시키는 것과 관련된다. 예를 들어, 심도 센서에서 물체의 표면까지의 거리를 나타내는 부호형 거리 함수(SDF)(signed distance function)가 사용될 수 있다. 추가 상세사항에 대해 도 8a 및 8b를 참조할 수 있다.
추출 알고리즘(733)이 볼륨 데이터로부터 다각형 메쉬(polygon mesh)를 만든다. 모든 적용예가 다각형 메쉬를 요구하는 것은 아니지만, 다각형 메쉬는 렌더링 및 충돌을 위해 메쉬를 이용하는 게임 엔진 같은 적용예에서 종종 유용하다. SDF 볼륨을 채운 후 메쉬를 추출하기 위한 한 가지 방식이 마칭 큐브(Marching Cube)라고 불리는 알고리즘을 이용하는 것이다. 마칭 큐브의 기본 아이디어는 볼륨 데이터의 각각의 박스를 다각형의 세트로 변환하는 것과 관련되며, 여기서 이들 다각형의 정점이 박스의 변 상에 놓인다.
3D 융합 서브시스템(734) 및 추출 알고리즘(733)의 출력이 SRFEK 캐시(735)에 저장될 수 있다. 이 출력은 물리 공간의 지오메트리를 나타내는 재구성된 표면을 포함한다.
SR 서비스(750)가 SRFEK를 제어하는 더 상위 프로세스로서, 상기 SRFEK로 많은 데이터 및 상기 데이터를 처리하기 위한 명령어를 제공한다. 상기 SR 서비스는 또한 표면 재구성으로부터 획득된 표면 데이터(surface data)를 애플리케이션으로 공급한다. 상기 서비스는 필요한 곳 및 때에 기초하여 심도 맵의 획득을 트리거할 때를 결정하는 심도 맵 획득 서브시스템(751)을 포함한다. 볼륨 배치 서브시스템(752)은 물리 공간을 볼륨으로 분할하는 방식, 가령, 생성할 볼륨의 수 및 볼륨을 배치할 위치를 결정한다. 볼륨을 배치할 위치를 결정하는 것이 초기 문제이다. 우리는 이전에 정의된 SR 볼륨의 세트로 시작할 수 있다. 추가 상세사항을 위해 도 9a 및 9b를 참조할 수 있다.
SR 데이터는 많은 메모리를 차지하기 때문에 서비스는 캐시 방출 및 보충 서브시스템(753)을 이용하여, 어느 데이터가 메모리, 가령, SR 서비스 캐시(754)에서 유지될지, 또는 어느 데이터가 차후 사용을 위해 보조기억장치(755)에 저장될지를 결정한다. 상기 SR 서비스는 어떤 SR 데이터가 방출(evict) 및 보충(replenish)될지를 결정하고, 데이터를 언제 방출 및 보충할지를 결정하며, 애플리케이션에 SR 데이터를 공급한다. 상기 SR 서비스는 물리 공간의 크기 및 생성되는 데이터의 품질 모두의 측면에서 비율조정(scale) 관리 시 유용하다. 시스템은, 가령 수 미터의 물리 공간 내에서, 예컨대, 사무실 건물 내에서, 사용자의 바로 인근 너머까지 뻗어 있는 물리적 비율조정을 조작해야 한다. 크지 않은 영역조차 수백 또는 수천 개의 SR 볼륨을 이용하고 각각의 SR 볼륨이 수 메가바이트를 이용할 수 있기 때문에 무차별 대입 솔루션은 효과가 없을 것이다. 상기 SR 시스템은 공간을 볼륨들로 분할하고 이들 볼륨을 메모리와 디스크 간에 페이징(paging)(가령 전달)함으로써 비율조정할 수 있다.
SR 서비스는 캐시 방출 및 보충 서브시스템에 의해 영속성(persistence)과 데이터 확장성(data scalability) 모두를 이룰 수 있다. 예를 들어, 이 서브시스템은 최대 개수의 볼륨을 확립할 수 있다. 이는 SR 서비스가 소비하는 SoC 메인 메모리의 양에의 제한(cap)을 제공한다. 더 많은 데이터 또는 더 많은 SR 볼륨을 추가함으로써 상한이 초과될 때, 다른 일부 볼륨이 방출될 수 있다. 이는 SR 서비스가 가장 먼 볼륨, 예컨대, 리그로부터 가장 먼 볼륨을 방출할 수 있다는 점을 제외하고, 최소 최근 사용(LRU)(least-recently-used) 방출 정책과 유사하다. 덧붙여, 리그가 자신이 이전에 SR 데이터를 캡처했던 영역을 다시 입력할 때, 캐시는 상기 데이터로 보충될 수 있다. 따라서 리그와 가장 가까운 볼륨을 로딩함으로써 보조 기억장치로부터 캐시를 간헐적으로 보충할 수 있다. 여전히 새 볼륨은 추가되어 이들이 또한 캐시 채움에 기여하도록 할 수 있다.
많은 애플리케이션이 SR 데이터를 유사한 방식으로 소비할 수 있다. SR 확장 및 유틸리티 서브시스템(760)이 애플리케이션 개발자들에게 공통 기능을 제공한다. 확장 및 유틸리티는 실세계 지오메트리를 가리는 홀로그램을 위한 가림 렌더링(occlusion rendering)(761), 유용한 보조 정보를 추가하기 위한 메쉬 사후-프로세싱(메쉬 post-processing)(762), 및 실제 물체와 가상 물체 간 충돌 검출(763), 플레이 공간 정의(764) 및 홀로그램 배치를 보조하는 부정 공간 할당(765)을 포함할 수 있다. SR 메쉬 사후-프로세싱 루틴의 예시로는 정점 붙이기(welding vertices), 메쉬 지퍼링(메쉬 zippering), 표면 법선 계산, 겹치는 메쉬에서 삼각형 잘라내기, 메쉬 평활화, 및 다각형의 수를 감소시키기 위한 메쉬 단순화가 있다.
홀로그램 배치와 관련하여, 메쉬는 특정 유형의 홀로그램 배치 로직에 대해 지나치게 미세하고 복잡할 수 있다. 대신, 애플리케이션 개발자는 추상화, 가령, 벽, 천장 및 바닥을 다루는 것이 더 용이함을 발견할 수 있다. 한 가지 솔루션은 평평한 삼각형을 찾고, 연결된 평평한 영역을 식별하며, 그 후 이들 영역에 평면을 끼워 맞추는 것이다. 낮은 곡률의 연접한 영역들을 찾기 위해, 복수의 개별 메쉬가 우선 하나의 단일 연접 메쉬로 결합될 수 있다. 이는 붙이기 및 지퍼링이 유용한 경우이다.
표면 법선 계산하기와 관련하여, 평평한 영역을 찾기 위해, 표면 곡률을 계산하는 것이 유용하다. SR 파이프라인이 (유한 차이(finite difference)를 이용하여) SDF로부터 또는 (표면별 법선을 이용하여) 메쉬로부터 정점별 법선을 생성할 수 있다.
SR 메쉬 사후-프로세싱의 또 다른 예시가 카메라로부터 캡처될 때 질감(texture)을 적용하는 것이다.
도 8a는 도 7의 3D 융합 서브시스템(734)과 관련하여 설명된 부호형 거리 함수(SDF)의 하나의 예를 도시한다. 수평축은 물리 공간에서 심도 센서로부터 물체(800)까지의 거리를 나타낸다. 수직축은 SDF의 값을 나타낸다. 물체는 전면(front surface)(801)과 후면(back surface)(802)을 가진다. 선(805)이 SDF를 나타낸다. 물체 외부의 영역은 양의 거리를 가지며, 물체 내부의 영역은 음의 거리를 갖고 물체의 표면 상의 영역은 0의 값을 가진다. 일부 경우, 물체의 후면이 아닌 물체의 전면이 검출된다. 융합은 복셀의 볼륨을 복셀을 심도 맵으로 투사시키는 것으로부터 추론된 SDF 값으로 채우는 것과 관련된다. 우리는 SDF 볼륨으로 시작하며, 그 후 해당 볼륨에 대한 심도 맵 및 이의 포즈를 획득한다. 융합 알고리즘이 포즈 심도 맵을 다음과 같이 주입한다. 각각의 복셀에 대해, 복셀을 심도 맵으로 투사하고 표면으로부터의 거리에 대한 복셀의 거리에 따라 SDF 값을 업데이트한다. 표면이 음의 SDF 값과 양의 SDF 값 사이의 경계 상에 놓이며, 여기서 함수는 0이며, 이른바 0 레벨 세트(zero level set)라고 불린다. 이 절차가 각각의 심도 맵에 대해 반복된다.
도 8b는 복셀로 투사된 심도 맵의 예시를 도시한다. 각각의 사각형이 복셀을 나타낸다. 나타난 복셀은 하나 이상의 블록의 일부일 수 있다. 실선(810)이 물체의 표면을 나타낸다. 점선(811)은 검출되지 않지만 감지될 수 있는 최대 심도를 지나 센서로부터 멀리 있다고 추정되는 표면을 나타낸다. 이 표면에 대한 심도 값이 디폴트 심도로 설정될 수 있다. 이들 선이 가로지르는 복셀이 SDF=0을 가지며 대각선 패턴으로 나타내어지며, 예를 들어, 복셀(813)이 있다. 물체 내에 있다고 간주되는 복셀은 SDF<0을 가지며 점선 패턴으로 나타내어지는데, 예를 들면 복셀(812)이 있다. 물체의 외부에 있다고 간주되는 복셀은 SDF>0을 가지며 비패턴 박스로 나타내어지며, 예를 들어 복셀(814)이 있다. 선(815)이 심도 센서의 시야 절두체(view frustum)의 경계를 나타낸다. 도시된 시야는 방의 오버헤드 시야일 수 있으며, 여기서 선(810)은 벽 및 상기 벽의 프레임을 나타낸다.
도 9a는 볼륨(900-904)의 세트 및 심도 센서의 절두체(920)를 도시한다. 볼륨들 간에 약간의 겹침이 나타난다. 볼륨들 중 일부가 점선 패턴으로 도시되어, 볼륨들을 서로 명확하게 구별할 수 있다. SR 서비스가 심도 맵을 획득하기로 결정할 때, 상기 심도 센서가 활성화된다. 절두체는 심도 센서의 시계, 가령, 심도 판독치가 획득될 수 있는 물리 공간의 일부분을 나타낸다. 그 후 SR 서비스는 심도 맵 절두체를 SR 볼륨의 세트와 비교한다. 심도 맵 절두체 중 어느 부분도 어떠한 SR 볼륨에 의해 커버되지 않는 경우, 서비스는 새 볼륨을 생성할 수 있다. 그러나 새 볼륨의 배치는, 다른 볼륨에 대한 상기 새 볼륨의 배향까지 포함하여, 문제가 된다. 상기 새 볼륨은 우선, 절두체가 어떠한 기존 볼륨에 의해서도 커버되지 않는 임의의 곳에 배치될 수 있다. 그 후, 새 볼륨이 기존 볼륨과 정렬되도록 재위치설정된다. 상기 재위치설정은 새 볼륨의 위치를 정제하는 물리 공간 내에서의 병진이동 및/또는 회전이동을 포함할 수 있다. 이는 하나 이상의 기존 볼륨에 대한 새 볼륨의 원하는 겹침 분량을 제공하는 것을 포함할 수 있다.
도 9b는 초기 배치된 볼륨(905) 및 재위치 설정된 볼륨(906)에 의해 나타나는 바와 같이, 도 9a의 볼륨(900-904)의 세트에 추가되는 새 볼륨을 도시한다.
도 10a는 초기 겹침 분량을 갖는 볼륨을 도시한다. 예시적 볼륨(1000-1008)이 단순예로서 2차원으로 도시된다. 각각의 볼륨은 3차원 공간을 포함한다. 볼륨(1005 및 1008)은 겹침 영역(1009)에서 서로 겹친다. 겹침 정도가 볼륨의 폭의 분수(가령, 퍼센티지)로서 표현될 수 있다. 덧붙여, 최소 겹침 임계치가 볼륨의 폭의 특정된 분수로서 설정될 수 있다. 폭은 겹침 방향에서의 볼륨의 상대 치수이다. 이 경우, 겹침은 최소 임계치를 초과한다. 이는 새 볼륨(가령, 볼륨(1005))이 이웃 볼륨(가령, 볼륨(1008))에 대해 배치될 때 발생할 수 있다.
도 10b는 도 10a의 볼륨의 위치가 포즈 그래프의 조정에 기초하여 조정되어 감소된 겹침 분량을 도출한 후를 도시한다. 이 경우, 물리 공간 내 볼륨의 위치의 조정으로 인해, 겹침 영역(1010)은 도 10a의 겹침 영역보다 작다. 예를 들어, 조정으로 인해 볼륨(1008)은 볼륨(1005)에서 더 멀리 이동할 수 있다. 갭이 전혀 없어서, 이들 볼륨에서의 재구성된 표면에 갭이 없도록 하는 것이 바람직할 것이다.
반대로, 초기에 갭이나 겹침 없이 SR 볼륨들을 서로 완벽하게 정렬되도록 배치했다고 가정할 수 있다. 그 후 포즈 조정 후, SR 볼륨들 사이에 갭이 존재할 수 있다. 따라서 우리는 우선 SR 볼륨들을 일부 적절한 겹침을 갖도록 배치한다. 이러한 방식으로, SR 볼륨들이 포즈 조정으로 인해 이동할 때, SR 볼륨들 사이에 갭이 있을 확률이 더 낮아질 수 있다. 일반적으로 갭은 재구성된 표면에서 불연속성을 초래하기 때문에 바람직하지 않다.
도 11a는 과도한 겹침으로 인해 볼륨 내에서 블록 자르기(clipping)의 예시를 도시한다. 이 예시에서 볼륨(1100)은 7×7개의 블록을 포함한다. 각각의 블록은 작은 사각형으로 나타내어진다. 볼륨(1110)과의 겹침 분량이 최대 겹침 임계치를 초과하고, 이는 블록 자르기가 바람직함을 나타낸다. 잘라진 블록 행, 가령, 예시적 잘라진 블록들(1111)이 도시된다. 각각의 잘라진 블록은 빗금 패턴을 가진다. 블록(1112)은 볼륨(1100) 내에서, 겹침 영역(1101)에 있는 잘라지지 않은 예시적 블록이다. 블록(1113)은 볼륨(1100) 내에서 겹침 영역(1101)에 있지 않은 예시적 블록이다. 잘라진 블록은 프로세싱 및 저장 요건을 감소시키기 위해 표면 재구성 동안 무시되는 비활성 블록이다.
도 11b는 과도한 겹침으로 인한 볼륨 내 블록 자르기에 대한 또 다른 예시를 도시한다. 여기서, 볼륨(1120)은 볼륨(1130)과 비스듬히 위치하여, 겹침 영역(1121)이 일반적으로 삼각형일 수 있다. 4개의 잘라진 블록, 가령, 예시적 잘라진 블록(1131)이 존재하도록 자름 평면(clip plane)이 설정된다. 각각의 잘라진 블록은 빗금 패턴을 가진다. 블록(1132)은 볼륨(1120) 내에서, 겹침 영역(1121) 내에 있고 잘라지지 않은 예시적 블록이다. 블록(11330은 볼륨(1120) 내에서, 겹침 영역(1121) 내에 있지 않은 예시적 블록이다.
볼륨 내에서 블록을 자르는 것은 볼륨들 간에 겹침을 제공하는 것에 대응하여 유용할 수 있다. 앞서 언급된 바와 같이, 포즈 조정에 의해, SR 볼륨이 서로 이동할 수 있다. 갭을 미리 피하기 위해, SR 서비스가 볼륨들을 약간씩 겹치게 배치한다. 그러나 겹침은 기껏해야 중복이고 최악의 경우 서로 충돌한다. SR 서비스는 완전히 중복인 블록을 삭제하지만, 이들 블록에 단지 부분적으로만 겹치는 관련 없는 삼각형 또는 그 밖의 다른 형상의 영역을 여전히 남겨둘 수 있다. 애플리케이션은 종종 겹침 영역을 생략하기를 원한다. 따라서 SR 유틸리티는 겹치는 삼각형들을 제거하기 위해 빠르고 효율적인 메쉬 자르기 절차를 포함할 수 있다. 자르기 루틴은 작은 겹침 또는 작은 갭을 허용하는 옵션을 제공할 수 있다. 둘 모두 유용하다. 예를 들어, 작은 겹침은 갭이 없는 것으로 보이는 메쉬를 생성하는 손쉽고 빠른 방식을 제공한다. 이는 가림 렌더링(occlusion rendering)의 경우 유용하다. 다른 한편으로, 작은 갭은 복수의 개별 메쉬들을 추가 메쉬 처리를 촉진하는 하나의 단일 연속 메쉬로 지퍼링하는 것을 촉진시킨다.
도 12a는 물리 공간 내 리그의 포즈를 나타내는 포즈 그래프(1200)의 하나의 예시를 도시한다. 포즈 그래프는 링크에 의해 연결되는 노드들을 포함한다. 노드는 가시광 카메라에 의해 캡처되는 물리 공간의 이미지 및 이와 연관된 좌표계를 포함한다. 두 노드들 간 링크(가령, 에지)는 상기 두 노드들의 이미지 간 대응관계와 두 노드들의 좌표계 간 변환관계를 포함한다. 포즈 그래프는 리그(rig)의 경로 사이클(path cycle)을 나타낸다. 화살표(1210)가 리그의 경로를 도시한다. 예시적 노드가 N1-N9이다. 예시적 링크가 노드 N1과 노드 N2 사이의 링크 L(N1, N2)와 노드 N1과 노드 N3 사이의 링크 L(N1,N3)이다.
특히, 리그의 포즈 그래프는 표면 재구성을 위한 물리 공간 내 볼륨의 배치를 최적화하도록 사용될 수 있다. 공간 분할의 문제가 SR에 특정된 것이 아니며 많은 공간 분할 스킴이 존재한다. 본 명세서에 기재된 기법이 SR에 대해 효과가 있는 이유를 이해하기 위해, 우선 리그 추적이 동작하는 방식에 대한 다양한 양태를 고려할 수 있다. 리그의 추적 및 맵핑 서브시스템(742)(도 7)이 리그의 카메라에 의해 캡처되는 이미지(가령, 사진)를 분석함으로써 공간 및 시간을 통한 리그의 궤적을 추적한다. 리그가 최초로 켜지고 카메라가 이미지를 캡처하는 것이 상상될 수 있다. 추적 및 맵핑 서브시스템이 이미지로부터 특징부(feature)를 추출하고 이미지에서 특징부의 위치를 추정하며 상기 특징부를 저장한다. 상기 추적 및 맵핑 서브시스템은 또한 자신이 위치 및 배향을 측정하기 위해 사용할 좌표계(가령, 좌표 프레임)를 생성한다. 이미지와 좌표계 모두 맵에 노드와 함께 저장된다. 그 후 리그가 이동한다. 추적 및 맵핑 서브시스템이 사진을 더 찍고 맵이 또 다른 노드와 함께 연관시키는 또 다른 좌표계를 만든다. 맵 서비스 서브시스템(741)이 제1 이미지 및 제2 이미지가 일부 공통 특징부를 가짐을 인식한다. 맵퍼(mapper)가 컴퓨터 시각 알고리즘 및 IMU 데이터를 이용하여 이들 두 노드 간 상대적 포즈를 추정할 수 있다.
노드들 간 링크는 두 가지를 나타낸다: 이미지들 간 대응관계(correspondence) 및 두 노드들의 좌표계들 간 변환관계(transform). 그러나 맵퍼가 노드들 간 변환관계에 대한 복수의 추정치를 획득할 수 있을 때, 이들 변환관계가 서로 불일치할 수 있다. 추적 및 맵핑 시스템은 좌표 변환 및 특징부 위치를 조정함으로써 일치를 최소화한다. 이는 광속 조정(Bundle Adjustment)이라고 일컬어진다. 리그가 이러 저리 이동함에 따라, 맵퍼는 노드 및 링크를 계속 추가하고, 이는 추가 포즈 조정을 야기한다. 따라서 물리 공간의 맵이 시간의 흐름에 따라 변한다. 즉, 특징부 위치 이동의 추정치 및 포즈 그래프가 정제(refine)된다. 예를 들어, 포즈 그래프의 링크가 거리 또는 배향을 변경할 수 있다. SR은 포즈 조정에 대해 강건해야 한다.
이 문제가 얼마나 심각할 수 있는지 그리고 이미지 내 특징부가 얼마나 멀리 이동하는 것으로 나타날 수 있는지를 이해하기 위해, 루프 폐쇄(loop closure) - 포즈 그래프 조정의 계단식 형태 - 를 고려한다. 루프 폐쇄는 재배치(relocalization)의 한 형태이다. 예를 들어, 리그가 개별 공간을, 이들 공간을 연결하는 영역을 방문하지 않고, 방문하는 것을 상상할 수 있다. 맵퍼는 각각의 공간에 대해 개별적인 맵 구성요소를 가질 것이다. 그 후 리그가 공간들 사이의 영역을 방문하는 것을 상상할 수 있다. 추적 및 맵핑 서브시스템이 상기 영역들이 연결되어 있음을 인식할 것이며 포즈 그래프에 링크를 추가할 것이다. 재배치는 포즈 그래프의 임의의 토포그래피 변화를 일컫는다.
리그가 공간 내 이미 방문한 적 있는 한 포인트에서 끝나고 추적 및 맵핑 서브시스템은 이러한 사실을 관측할 때 루프 폐쇄의 하나의 형태가 발생한다. 예를 들어, HMD 디바이스를 착용한 사용자가 시작 위치에서 시작하여, 방, 가령, 아트 갤러리 내에서 걷고 있으며 항상 사용자에게 가장 가까운 벽을 바라본다고 가정할 수 있다. 사용자는 방을 가로질러 바라보거나 사용자 뒤를 바라보지 않는다. 그 후 사용자는 차례대로 각각의 벽을 바라보면서 방을 순회하며, 이때 추적 및 맵핑 서브시스템이 새 노드를 만든다. 사용자가 시작 위치로 복귀하기 직전에, 상기 추적 및 맵핑 서브시스템은 다시 시작 점임을 아직 인식하지 않는다. 그러나 결국, 추적 및 맵핑 서브시스템은 사용자가 시작 점에 있는 동안 캡처된 특징부를 인식할 것이고 상기 시작 부분에서 얻은 이미지와 이 루프의 끝에서 얻은 이미지 간 대응관계를 식별할 것이다. 따라서 포즈 그래프에 새 링크를 생성할 것이며, 따라서 폐쇄된 루프(closed loop)가 형성될 수 있다. 루프 폐쇄 직전에, 루프의 시작점과 종료점 간 변환은 많은 홉(hop)을 수반한다. 루프 폐쇄 직후에, 루프의 시작점과 종료점 간 변환은 단지 하나의 홉만 수반한다. 각각의 홉은 일부 오차를 가지며, 오차는 누적된다. 누적된 오차의 크기가 루프 폐쇄 직후 더 작다. 따라서 루프 폐쇄 직전과 직후, 노드들 간 변환관계가 급격하게 변할 것이다. 본 명세서에 제공된 기법에 의해, SR 프로세스가 볼륨을 포즈 그래프의 노드 및 이들의 좌표계에 고정(anchor)함에 의한 포즈 그래프의 조정으로부터 이익을 얻을 수 있다. 볼륨은 자신이 고정된 포즈 그래프 노드를 따르기 때문에, 포즈 그래프가 변할 때, SR 볼륨도 변한다.
도 12b는 카메라에 의해 캡처된 이미지에 대한 예시적 데이터 레코드를 도시한다. 각각의 이미지 또는 이미지 세트, 가령, 비디오가 데이터 레코드에, 가령, Image 1로서 저장된다. 리그의 배향 판독치(orientation readings), 가령, OR1이 상기 이미지와 연관될 수 있다.
도 12c는 심도 센서에 의해 캡처되는 심도 맵에 대한 예시적 데이터 레코드를 도시한다. 각각의 심도 맵이 데이터 레코드에, 가령, DM1로서 저장될 수 있다. 리그의 배향 판독치, 가령, OR1이 심도 맵과 연관될 수 있다.
도 12d는 포즈 그래프의 예시적 데이터 레코드를 도시한다. 노드에 대한 레코드가 노드 식별자, 가령, N1, 카메라 이미지, 가령, Image 1, 및 좌표계, 가령, 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)을 포함할 수 있다. 변환관계는 하나의 좌표계 행렬을 다른 하나의 좌표계 행렬과 관련시키는 행렬일 수 있다.
도 13a는 예시적 물리 공간을 도시하며, 이는 심도 센서의 절두체를 보여준다. 물리 공간(1300)은 방, 가령, 리그(rig)의 하나의 예시인 HMD 디바이스(1302)를 착용하는 사용자(1301)의 가정의 하나의 방이다. HMD 디바이스 상의 심도 센서는 뒷평면(1304)과 방의 벽(1306)에 있는 앞평면(1305) 사이에 뻗어 있는 절두체(1303)로 나타내어지는 시계(field of view)를 가진다. 상기 벽은 출입구(1307)와 장식 그림(1308)을 포함한다. 그림은 벽(1306)에 부착되어 있고 인지할만한 심도를 가진다. 선(1309)은 심도 센서의 시계의 중앙축, 가령, 심도 센서(그리고 사용자 및 HMD 디바이스)가 바라보는 방향을 나타낸다. 직교하는 축들 xr, yr 및 zr를 갖는 카테시안 좌표계(1310)가 HMD 디바이스의 예시적 좌표계이다(r은 리그(rig)를 나타냄). 예를 들어, xr 축은 (선(1309)과 일치하는) 리그의 배향을 나타내는 벡터와 동일한 방향을 가질 수 있다. yr 축은 지면에 평행하게 뻗어 있도록 정의될 수 있다. 그 후 zr 축은 xr 및 yr 축에 직교한다. 직교하는 축들 x, y 및 z을 갖는 물리 공간의 카테시안 좌표계(1311)가 또한 도시된다. 심도 센서가 상기 좌표계의 원점에 위치한다.
도 13b는 도 13a와 일치하는 심도 맵(1315)을 도시한다. 심도 맵은 벽(1306)에 대한 영역(1320), 그림(1308)에 대한 영역(1321), 및 출입문(1307)에 대한 영역(1322)을 포함한다.
도 13c는 도 13b의 심도 맵의 거리 값을 도시한다. 수평축은 심도 센서의 중앙선(1309), 가령, yr 축의 방향에 직교하는 방향을 도시한다. 수직축은 심도 센서로부터의 물체의 거리, 가령, xr 축을 따르는 거리를 나타낸다. 선(1330)은 심도를 나타낸다. 벽의 심도에 대응하는 선의 일부분은 Dwall의 심도 값을 가진다. 그림의 심도에 대응하는 선의 일부분은 Dpainting의 심도 값을 가진다. 출입문의 심도에 대응하는 선의 일부분을 Dmax의 심도 값, 즉, 심도 센서에 의해 검출될 수 있는 최대 심도를 가진다. 이 경우, 심도 센서가 출입문을 통해 검출 범위를 초과하는 표면까지 보기 때문에, 심도 값이 최댓값으로 설정될 수 있다. Dmin은 심도 센서에 의해 검출될 수 있는 최소 시도를 나타낸다.
도 14a는 도 13a의 예시적 물리 공간을 도시하며, 가시광 카메라의 시계를 보여준다. 일반적으로 카메라의 시계(1340)는 심도 센서의 시계와 상이할 수 있지만, 이들은 동일한 방향, 가령, HMD 디바이스의 방향을 바라볼 수 있고 실질적으로 겹칠 수 있다. 이 예시에서, 카메라의 시계(1340)는 심도 센서의 시계보다 다소 좁고 길다. HMD 디바이스의 좌표계(1310)는, 하나의 예시로서, 도 13a에서의 것과 동일하지만 반드시 그럴 필요는 없다. 축이 심도 센서의 중앙선(1309)와 동일한 카메라의 중앙선과 일치할 수 있다.
도 14b는 도 14a의 가시광 카메라에 의해 획득된 이미지를 도시한다. 이미지(1400)는 벽을 나타내는 일부분(1410), 그림을 나타내는 일부분(1402), 및 출입문을 나타내는 일부분(1403)을 포함한다.
도 14c는 도 13a의 예시적 물리 공간을 도시하며, HMD 디바이스의 포즈가 변함에 따른 가시광 카메라의 또 다른 시계를 보여준다. 이 경우, 사용자가 이동하여, HMD 디바이스가 물리 공간의 상이한 이미지를 캡처할 수 있다. 예를 들어 사용자는 자신의 머리를 회전 및/또는 방 안에서 걸었을 수 있다. 시계(1420)는 도 14a의 좌표계(1310)와 상이한 좌표계(1430)에 비교되어 정의된다. 하나의 방식에서, xr 축은 카메라의 중앙선(1421)과 일치한다.
도 14d는 도 14c의 가시광 카메라에 의해 획득되는 이미지를 도시한다. 이미지(1440)는 벽(1306) 및 인접 벽(1415)을 나타내는 일부분(1441), 및 그림을 나타내는 일부분(1442)을 포함한다. 도시된 바와 같이, 이미지(1400)와 이미지(1440)는 대응하는 특징부, 가령, 그림의 액자의 수평선(1444), 그림의 액자의 수직선(1443), 및 그림 내 꽃 및 화병의 색상 및 형태를 가질 것이다.
도 15a는 도 13a의 물리 공간 내 볼륨의 초기 배치를 도시한다. 시야 절두체(1303)가 좌표계(1310)에 대해 형성되고 시야 절두체를 포함하도록 배치된 8개의 볼륨(예시적 볼륨(1500))과 함께 도시된다.
도 15b는 도 15a의 볼륨의 조정된 배치를 도시한다. 이 단순화된 예시에서, 볼륨들은 서로 유사하게 조정된다. 그러나 실제로, 각각이 볼륨들은 독립적으로 조정될 수 있다. 예시적 볼륨(1500)이 조정되어 예시적 볼륨(1501)을 제공할 수 있다. 덧붙여, 볼륨(1500)은 하나의 (가령, 초기) 좌표계(1310)(축 xr, yr 및 zr을 포함)와 관련하여 형성되고, 볼륨(1501)은 업데이트된 좌표계(1510)(축 xr', yr' 및 zr' 포함)와 관련하여 형성된다.
도 16은 도 13a의 물리 공간 내 가상 물체기 배치되는 예시적 적용예를 도시한다. 가상 물체(1610)가 HMD 디바이스(1302)의 증강 현실 이미지로서 사용자(1301)에게 보이는 사람이다. 시계(1600)가 HMD 디바이스의 증강 현실 투사 시스템과 연관된다. 방의 표면이 알려져 있기 때문에, 가상 물체가 물리 공간(1300) 내 적절한 위치로 배치될 수 있다. 예를 들어, 가상 물체가 벽(1306) 앞에 특정 거리에서 출입문(1306)의 옆에 배치될 수 있다. 덧붙여 가상 물체 뒤에 있는 실세계 물체, 가령, 그림(1308)이 가려져서 더 우수한 현실감을 제공할 수 있다. 상이한 또는 공통 시계가 심도 센서, 카메라, 및 증강 현실 투사 시스템과 연관될 수 있다. 또한, HMD 디바이스와 관련된 예시적 구현이 기재되었지만, 본 명세서의 기법은 그 밖의 다른 많은 시나리오, 예컨대, 로봇 및 그 밖의 다른 유형의 리그와 관련된 구현에 적용 가능하다.
청구 대상이 구조의 특징부 및/또는 방법의 동작에 특정된 언어로 기재되었지만, 이하의 특허청구범위에서 정의되는 청구 대상은 앞서 기재된 특정 특징부 또는 동작에 반드시 한정되는 것은 아님이 이해될 것이다. 오히려 앞서 기재된 특정 특징부 및 동작은 청구항을 구현하는 예시적 형태로서 개시된 것이다.

Claims (20)

  1. 물리 공간을 재구성하기 위한 방법으로서,
    리그(rig)가 복수의 포즈(pose)를 통해 상기 물리 공간 내에서 이동하는 동안 상기 리그에 장착된 카메라를 이용하여 상기 물리 공간의 복수의 이미지를 획득하는 단계,
    각각의 포즈의 배향(orientation) 및 좌표계(coordinate system)를 결정하는 단계,
    상기 물리 공간을 복수의 볼륨(volume)으로 분할하는 단계,
    상기 복수의 볼륨의 각각의 볼륨에 대해, 상기 리그에 장착된 심도 센서를 이용하여 상기 물리 공간의 심도 맵을 획득하는 단계,
    복수의 노드 및 상기 복수의 노드 간의 링크들을 포함하는 포즈 그래프를 제공하는 단계 - 각각의 노드는 상기 복수의 포즈 중 하나의 포즈와 연관되고, 상기 복수의 이미지 중 하나의 이미지는 상기 복수의 포즈 중 상기 하나의 포즈와 연관되며, 상기 좌표계들 중 하나의 좌표계는 상기 복수의 포즈 중 상기 하나의 포즈와 연관되고, 상기 링크들은 상기 복수의 이미지 간의 대응관계들(correspondence) 및 상기 좌표계들 간의 변환관계들(transform)을 정의함 - ,
    각각의 볼륨에 대해, 상기 복수의 노드 중 하나의 노드에 상기 볼륨을 고정(anchor)하는 단계,
    상기 복수의 이미지가 획득됨에 따라 상기 포즈 그래프의 상태를 업데이트하는 단계 - 상기 업데이트하는 단계는 상기 복수의 노드 중 하나 이상의 노드 및 상기 링크들 중 하나 이상의 링크를 업데이트하는 단계를 포함함 - , 및
    상기 포즈 그래프의 상태에 따라 상기 복수의 볼륨 중 하나 이상의 볼륨에서 표면을 재구성하는 단계를 포함하는
    물리 공간을 재구성하기 위한 방법.
  2. 제1항에 있어서,
    상기 포즈 그래프의 상태의 업데이트에 기초하여, 상기 복수의 볼륨 중 하나의 볼륨을 상기 복수의 노드 중 다른 하나의 노드에 재고정(re-anchor)하는 단계를 더 포함하는
    물리 공간을 재구성하기 위한 방법.
  3. 제1항에 있어서,
    상기 포즈 그래프의 상태를 업데이트하는 단계는 상기 좌표계들 중 하나 이상의 좌표계를 업데이트하여 하나 이상의 업데이트된 좌표계를 제공하는 단계를 포함하고,
    상기 재구성하는 단계는 상기 하나 이상의 업데이트된 좌표계를 이용하여 상기 복수의 볼륨 중 상기 하나 이상의 볼륨을 상기 심도 맵들 중 하나 이상의 심도 맵으로 투사하는 단계를 포함하는
    물리 공간을 재구성하기 위한 방법.
  4. 제1항에 있어서,
    상기 복수의 볼륨 중 상기 하나 이상의 볼륨의 각각을 복수의 블록으로 분할하는 단계, 및
    상기 복수의 블록 중 어느 블록이 상기 심도 센서의 시야 절두체(view frustum) 내에 있는지 및 상기 복수의 블록 중 어느 블록이 상기 심도 센서의 상기 시야 절두체 내에 없는지를 결정하는 단계 - 상기 재구성하는 단계는 상기 시야 절두체 내에 없는 블록이 아닌 상기 시야 절두체 내에 있는 블록만 상기 심도 맵들 중 하나 이상의 심도 맵으로 투사하는 단계를 포함함 - 를 더 포함하는
    물리 공간을 재구성하기 위한 방법.
  5. 제1항에 있어서,
    상기 포즈 그래프의 상태를 업데이트하는 단계는 상기 좌표계들 및 상기 변환관계들이 조정되는 광속 조정(bundle adjustment)을 수행하는 단계를 포함하는
    물리 공간을 재구성하기 위한 방법.
  6. 제1항에 있어서,
    상기 포즈 그래프의 상태를 업데이트하는 단계는 상기 대응관계들 중 하나 이상의 대응관계를 업데이트하는 단계를 포함하는
    물리 공간을 재구성하기 위한 방법.
  7. 제1항에 있어서,
    상기 포즈 그래프의 상태를 업데이트하는 단계는 상기 포즈 그래프에서 토폴로지의 변화가 있는 재배치(relocalization)를 수행하는 단계를 포함하는
    물리 공간을 재구성하기 위한 방법.
  8. 제7항에 있어서,
    상기 재배치는 상기 포즈 그래프에서 상기 복수의 노드의 폐쇄된 루프가 형성되는 루프 폐쇄(loop closure)를 포함하는
    물리 공간을 재구성하기 위한 방법.
  9. 제1항에 있어서,
    상기 복수의 볼륨은 상기 복수의 볼륨 중 이웃하는 볼륨들 간에 최소 임계치 이상의 겹침 분량(amount of overlap)을 제공하도록 정의되는
    물리 공간을 재구성하기 위한 방법.
  10. 제9항에 있어서,
    상기 포즈 그래프의 상태를 업데이트하는 단계가, 상기 복수의 볼륨 중 적어도 하나의 볼륨에 대해, 상기 겹침 분량을 최대 임계치보다 증가시켰는지 결정하는 단계, 및
    상기 복수의 볼륨 중 상기 적어도 하나의 볼륨을 잘라냄(clipping)으로써 상기 겹침 분량을 감소시키는 단계를 더 포함하는
    물리 공간을 재구성하기 위한 방법.
  11. 제1항에 있어서,
    상기 표면은 상기 물리 공간 내에서, 가상 객체를 배치하는 것, 플레이 공간을 정의하는 것, 경로를 탐색하는 것, 가상 물체의 충돌을 검출하거나 상기 가상 물체를 가리는 것(occlusion) 중 적어도 하나를 수행하는데 사용되는
    물리 공간을 재구성하기 위한 방법.
  12. 물리 공간을 재구성하기 위한 장치로서,
    배향 센서,
    심도 센서,
    카메라, 및
    상기 배향 센서, 상기 심도 센서 및 상기 카메라와 통신하는 프로세서
    를 포함하며, 상기 프로세서는,
    상기 카메라로부터 상기 물리 공간의 복수의 이미지를 획득하고,
    상기 배향 센서에 기초하여 각각의 이미지에 포즈 및 좌표계를 연관시키며,
    상기 물리 공간을 복수의 볼륨으로 분할하고,
    상기 복수의 볼륨의 각각의 볼륨에 대해, 상기 심도 센서로부터 상기 물리 공간의 심도 맵을 획득하며,
    복수의 노드 및 상기 복수의 노드 간 링크들을 포함하는 포즈 그래프를 제공하고 - 각각의 노드는 상기 포즈들 중 하나의 포즈와 연관되며, 상기 복수의 이미지 중 하나의 이미지는 상기 포즈들 중 상기 하나의 포즈와 연관되며, 상기 좌표계들 중 하나의 좌표계는 상기 포즈들 중 상기 하나의 포즈와 연관되고, 상기 링크들은 상기 복수의 이미지 간의 대응관계들 및 상기 좌표계들 간의 변환관계들을 정의함 - ,
    각각의 볼륨에 대해, 상기 복수의 노드 중 하나의 노드에 상기 볼륨을 고정하며,
    상기 복수의 이미지가 획득됨에 따라 상기 포즈 그래프의 상태를 업데이트하고,
    상기 포즈 그래프의 상태에 따라 상기 복수의 볼륨 중 하나 이상의 볼륨에서 표면을 재구성하는
    물리 공간을 재구성하기 위한 장치.
  13. 제12항에 있어서,
    상기 배향 센서, 상기 심도 센서, 상기 카메라 및 상기 프로세서는 두부 장착형 디스플레이 디바이스 또는 모바일 로봇 상에 장착된
    물리 공간을 재구성하기 위한 장치.
  14. 제12항에 있어서,
    상기 프로세서는,
    상기 포즈 그래프의 상태를 업데이트하기 위해, 상기 좌표계들 중 하나 이상의 좌표계를 업데이트하여 하나 이상의 업데이트된 좌표계를 제공하고,
    상기 표면을 재구성하기 위해, 상기 하나 이상의 업데이트된 좌표계를 이용하여, 상기 복수의 볼륨 중 상기 하나 이상의 볼륨을 상기 심도 맵들 중 하나 이상의 심도 맵으로 투사하는
    물리 공간을 재구성하기 위한 장치.
  15. 제12항에 있어서,
    상기 복수의 볼륨은 상기 복수의 볼륨 중 이웃하는 볼륨들 간에 최소 임계치 이상의 겹침 분량을 제공하도록 정의되고,
    상기 포즈 그래프의 상태를 업데이트하는 것은 상기 복수의 볼륨 중 적어도 하나의 볼륨에 대해, 상기 겹침 분량을 감소시키는
    물리 공간을 재구성하기 위한 장치.
  16. 물리 공간을 재구성하기 위한 방법을 수행하도록 프로세서를 프로그래밍하는 프로세서 판독가능 소프트웨어를 저장한 프로세서 판독가능 저장 장치로서,
    상기 방법은
    리그(rig)가 상기 물리 공간 내에서 이동하는 동안 상기 리그에 장착된 카메라를 이용하여 상기 물리 공간의 복수의 이미지를 획득하는 단계,
    상기 리그의 포즈들을 결정하는 단계- 각각의 포즈는 배향(orientation) 및 좌표계(coordinate system)와 연관됨 -,
    상기 포즈들 및 상기 복수의 이미지에 기초하여 포즈 그래프를 제공하는 단계- 상기 포즈 그래프는 복수의 노드 및 상기 복수의 노드 간의 링크들을 포함함 -,
    상기 리그에 장착된 심도 센서를 이용하여 상기 물리 공간 내의 볼륨의 심도 맵을 획득하는 단계,
    상기 볼륨을 상기 복수의 노드 중 하나의 노드에 고정하는 단계,
    상기 복수의 이미지가 획득됨에 따라 상기 포즈 그래프의 상태를 업데이트하는 단계 - 상기 업데이트하는 단계는 상기 복수의 노드 중 상기 하나의 노드와 연관된, 상기 좌표계들 중 하나의 좌표계를 업데이트하는 단계를 포함함 - , 및
    상기 포즈 그래프의 상태에 따라 상기 볼륨에서 표면을 재구성하는 단계를 포함하는
    프로세서 판독가능 저장 장치.
  17. 제16항에 있어서,
    상기 포즈 그래프에서, 각각의 노드는 상기 포즈들 중 하나의 포즈와 연관되고, 상기 복수의 이미지 중 하나의 이미지는 상기 포즈들 중 상기 하나의 포즈와 연관되며, 상기 좌표계들 중 하나의 좌표계는 상기 포즈들 중 상기 하나의 포즈와 연관되고, 상기 링크들은 상기 복수의 이미지 간의 대응관계들 및 상기 좌표계들 간의 변환관계들을 정의하고,
    상기 업데이트하는 단계는 상기 복수의 노드 중 하나 이상의 노드와 상기 링크들 중 하나 이상 링크를 업데이트하는 단계를 포함하는
    프로세서 판독가능 저장 장치.
  18. 제16항에 있어서,
    상기 재구성하는 단계는 상기 물리 공간에서의 상기 볼륨의 위치에 기초하고,
    상기 물리 공간에서의 상기 볼륨의 위치는 상기 좌표계들 중 상기 하나의 좌표계와 관련하여 정의되고,
    상기 물리 공간에서의 상기 볼륨의 위치는 상기 좌표계들 중 상기 하나의 좌표계가 업데이트되는 경우 변경되는
    프로세서 판독가능 저장 장치.
  19. 제18항에 있어서,
    상기 물리 공간에서의 상기 볼륨의 위치는 상기 좌표계들 중 상기 하나의 좌표계 내에서 상기 카메라의 시야 절두체(view frustum)에 기초하는
    프로세서 판독가능 저장 장치.
  20. 제16항에 있어서,
    상기 재구성하는 단계는 상기 좌표계들 중 상기 하나의 좌표계가 업데이트되기 전에 상기 좌표계들 중 상기 하나의 좌표계를 이용하여 상기 볼륨을 상기 심도 맵으로 투사하고, 이어서 상기 좌표계들 중 상기 하나의 좌표계가 업데이트된 후 상기 좌표계들 중 상기 하나의 좌표계를 이용하여 상기 볼륨을 상기 심도 맵으로 투사하는 단계를 포함하는
    프로세서 판독가능 저장 장치.
KR1020167013950A 2013-11-26 2014-11-20 추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법 KR102227229B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/091,262 US9432636B2 (en) 2013-11-26 2013-11-26 Large-scale surface reconstruction that is robust against tracking and mapping errors
US14/091,262 2013-11-26
PCT/US2014/066485 WO2015080922A1 (en) 2013-11-26 2014-11-20 Large-scale surface reconstruction that is robust against tracking and mapping errors

Publications (2)

Publication Number Publication Date
KR20160091337A KR20160091337A (ko) 2016-08-02
KR102227229B1 true KR102227229B1 (ko) 2021-03-11

Family

ID=52101590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167013950A KR102227229B1 (ko) 2013-11-26 2014-11-20 추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법

Country Status (5)

Country Link
US (1) US9432636B2 (ko)
EP (1) EP3074955B1 (ko)
KR (1) KR102227229B1 (ko)
CN (1) CN105765631B (ko)
WO (1) WO2015080922A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262462B2 (en) 2014-04-18 2019-04-16 Magic Leap, Inc. Systems and methods for augmented and virtual reality
US10408613B2 (en) 2013-07-12 2019-09-10 Magic Leap, Inc. Method and system for rendering virtual content
US10298898B2 (en) 2013-08-31 2019-05-21 Ml Netherlands C.V. User feedback for real-time checking and improving quality of scanned image
EP3089102B1 (en) 2013-12-03 2019-02-20 ML Netherlands C.V. User feedback for real-time checking and improving quality of scanned image
EP3092603B1 (en) 2014-01-07 2022-05-11 ML Netherlands C.V. Dynamic updating of composite images
WO2015104236A1 (en) 2014-01-07 2015-07-16 Dacuda Ag Adaptive camera control for reducing motion blur during real-time image capture
US9380224B2 (en) * 2014-02-28 2016-06-28 Microsoft Technology Licensing, Llc Depth sensing using an infrared camera
WO2015173173A1 (en) * 2014-05-12 2015-11-19 Dacuda Ag Method and apparatus for scanning and printing a 3d object
US9483879B2 (en) * 2014-09-18 2016-11-01 Microsoft Technology Licensing, Llc Using free-form deformations in surface reconstruction
US9905052B2 (en) * 2015-01-05 2018-02-27 Worcester Polytechnic Institute System and method for controlling immersiveness of head-worn displays
US9659411B2 (en) * 2015-01-14 2017-05-23 Oculus Vr, Llc Passive locators for a virtual reality headset
WO2017007166A1 (ko) * 2015-07-08 2017-01-12 고려대학교 산학협력단 투영 이미지 생성 방법 및 그 장치, 이미지 픽셀과 깊이값간의 매핑 방법
KR101835434B1 (ko) 2015-07-08 2018-03-09 고려대학교 산학협력단 투영 이미지 생성 방법 및 그 장치, 이미지 픽셀과 깊이값간의 매핑 방법
US10169917B2 (en) * 2015-08-20 2019-01-01 Microsoft Technology Licensing, Llc Augmented reality
US10235808B2 (en) 2015-08-20 2019-03-19 Microsoft Technology Licensing, Llc Communication system
JP6657859B2 (ja) * 2015-11-30 2020-03-04 株式会社デンソーウェーブ ロボット安全システム
US9858707B2 (en) * 2015-12-30 2018-01-02 Daqri, Llc 3D video reconstruction system
US10509469B2 (en) 2016-04-21 2019-12-17 Finch Technologies Ltd. Devices for controlling computers based on motions and positions of hands
CA3032812A1 (en) 2016-08-04 2018-02-08 Reification Inc. Methods for simultaneous localization and mapping (slam) and related apparatus and systems
US10891029B2 (en) * 2016-10-14 2021-01-12 Here Global B.V. Reporting locations being associated with a problem
US10271033B2 (en) 2016-10-31 2019-04-23 Verizon Patent And Licensing Inc. Methods and systems for generating depth data by converging independently-captured depth maps
CN106504313A (zh) * 2016-11-22 2017-03-15 山东省科学院海洋仪器仪表研究所 一种Volume重建范围的扩展方法及系统
US10535156B2 (en) 2017-02-03 2020-01-14 Microsoft Technology Licensing, Llc Scene reconstruction from bursts of image data
US10762718B2 (en) * 2017-02-17 2020-09-01 Fca Us Llc System and method for determining minimal negative distance between two objects
TWI659393B (zh) * 2017-02-23 2019-05-11 National Central University 多鏡頭影像深度之3d空間繪製系統
EP3594906B1 (en) * 2017-03-06 2022-10-19 LINE Corporation Method and device for providing augmented reality, and computer program
WO2018185972A1 (ja) * 2017-04-03 2018-10-11 三菱電機株式会社 マップデータ生成装置および方法
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
US10705113B2 (en) 2017-04-28 2020-07-07 Finch Technologies Ltd. Calibration of inertial measurement units attached to arms of a user to generate inputs for computer systems
US10540006B2 (en) 2017-05-16 2020-01-21 Finch Technologies Ltd. Tracking torso orientation to generate inputs for computer systems
US10379613B2 (en) 2017-05-16 2019-08-13 Finch Technologies Ltd. Tracking arm movements to generate inputs for computer systems
US20190012835A1 (en) 2017-07-07 2019-01-10 Microsoft Technology Licensing, Llc Driving an Image Capture System to Serve Plural Image-Consuming Processes
US10992916B2 (en) * 2017-07-26 2021-04-27 Google Llc Depth data adjustment based on non-visual pose data
US10573089B2 (en) * 2017-11-09 2020-02-25 The Boeing Company Systems, methods, and tools for spatially-registering virtual content with physical environment in augmented reality platforms
US10558260B2 (en) 2017-12-15 2020-02-11 Microsoft Technology Licensing, Llc Detecting the pose of an out-of-range controller
US10521011B2 (en) * 2017-12-19 2019-12-31 Finch Technologies Ltd. Calibration of inertial measurement units attached to arms of a user and to a head mounted device
US10713840B2 (en) * 2017-12-22 2020-07-14 Sony Interactive Entertainment Inc. Space capture, modeling, and texture reconstruction through dynamic camera positioning and lighting using a mobile robot
US10509464B2 (en) 2018-01-08 2019-12-17 Finch Technologies Ltd. Tracking torso leaning to generate inputs for computer systems
US11016116B2 (en) 2018-01-11 2021-05-25 Finch Technologies Ltd. Correction of accumulated errors in inertial measurement units attached to a user
US11474593B2 (en) 2018-05-07 2022-10-18 Finch Technologies Ltd. Tracking user movements to control a skeleton model in a computer system
US10416755B1 (en) 2018-06-01 2019-09-17 Finch Technologies Ltd. Motion predictions of overlapping kinematic chains of a skeleton model used to control a computer system
US10916031B2 (en) * 2018-07-06 2021-02-09 Facebook Technologies, Llc Systems and methods for offloading image-based tracking operations from a general processing unit to a hardware accelerator unit
US11009941B2 (en) 2018-07-25 2021-05-18 Finch Technologies Ltd. Calibration of measurement units in alignment with a skeleton model to control a computer system
US10809797B1 (en) 2019-08-07 2020-10-20 Finch Technologies Ltd. Calibration of multiple sensor modules related to an orientation of a user of the sensor modules
EP4049243A1 (en) 2019-10-25 2022-08-31 Pictometry International Corp. System using image connectivity to reduce bundle size for bundle adjustment
CN111223073A (zh) * 2019-12-24 2020-06-02 乐软科技(北京)有限责任公司 一种虚拟探测系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710876A (en) 1985-06-05 1987-12-01 General Electric Company System and method for the display of surface structures contained within the interior region of a solid body
US6711293B1 (en) 1999-03-08 2004-03-23 The University Of British Columbia Method and apparatus for identifying scale invariant features in an image and use of same for locating an object in an image
US7983487B2 (en) * 2007-11-07 2011-07-19 Mitsubishi Electric Research Laboratories, Inc. Method and system for locating and picking objects using active illumination
US8711206B2 (en) * 2011-01-31 2014-04-29 Microsoft Corporation Mobile camera localization using depth maps
EP2706503A3 (en) * 2012-09-11 2017-08-30 Thomson Licensing Method and apparatus for bilayer image segmentation
CN103135765A (zh) * 2013-02-20 2013-06-05 兰州交通大学 一种基于微机械传感器的人体动作信息捕捉系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
비특허1(2013 IEEE International Conference on Robotics and Automation)
비특허2
비특허3

Also Published As

Publication number Publication date
CN105765631A (zh) 2016-07-13
WO2015080922A1 (en) 2015-06-04
EP3074955A1 (en) 2016-10-05
US9432636B2 (en) 2016-08-30
KR20160091337A (ko) 2016-08-02
US20150145985A1 (en) 2015-05-28
CN105765631B (zh) 2018-12-18
EP3074955B1 (en) 2018-08-01

Similar Documents

Publication Publication Date Title
KR102227229B1 (ko) 추적 및 맵핑 오차에 강한 대규모 표면 재구성 기법
CN106716497B (zh) 在表面重构中使用自由形式变形
US11398081B2 (en) Method of occlusion rendering using raycast and live depth
US11238659B2 (en) Caching and updating of dense 3D reconstruction data
US20230016490A1 (en) Systems and methods for virtual and augmented reality
CN115151947B (zh) 具有基于wifi/gps的地图合并的交叉现实系统
JP2024009071A (ja) クロスリアリティシステム
EP3014581B1 (en) Space carving based on human physical data
JP2023524446A (ja) 大規模環境のためのクロスリアリティシステム
JP2022551734A (ja) 複数のデバイスタイプをサポートするクロスリアリティシステム
US11302081B2 (en) Caching and updating of dense 3D reconstruction data
CN109791442A (zh) 表面建模系统和方法
US20120206452A1 (en) Realistic occlusion for a head mounted augmented reality display
KR20160021126A (ko) 공유된 홀로그램 객체 및 사적 홀로그램 객체
WO2013155217A1 (en) Realistic occlusion for a head mounted augmented reality display
WO2018113759A1 (zh) 基于定位系统和ar/mr的探测系统及探测方法
US20230147759A1 (en) Viewpoint dependent brick selection for fast volumetric reconstruction
EP4150519A1 (en) Computationally efficient method for computing a composite representation of a 3d environment

Legal Events

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