KR20230024901A - 저전력 시각 추적 시스템들 - Google Patents

저전력 시각 추적 시스템들 Download PDF

Info

Publication number
KR20230024901A
KR20230024901A KR1020227043491A KR20227043491A KR20230024901A KR 20230024901 A KR20230024901 A KR 20230024901A KR 1020227043491 A KR1020227043491 A KR 1020227043491A KR 20227043491 A KR20227043491 A KR 20227043491A KR 20230024901 A KR20230024901 A KR 20230024901A
Authority
KR
South Korea
Prior art keywords
patterns
pose
relative
pattern
image sensor
Prior art date
Application number
KR1020227043491A
Other languages
English (en)
Inventor
라비샨카르 시발린감
도널드 윌리엄 키드웰
러셀 그룰케
에드윈 종우 박
쿠르시드 사이드 알람
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20230024901A publication Critical patent/KR20230024901A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/90Arrangement of cameras or camera modules, e.g. multiple cameras in TV studios or sports stadiums
    • 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/10048Infrared 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/20084Artificial neural networks [ANN]
    • 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/30204Marker
    • 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

저-전력 시각 추적 시스템들에 대한 시스템들, 방법들, 및 비-일시적 매체들이 제공된다. 예시적인 방법은 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 각각의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하는 단계 ― 하나 이상의 이미지들은 제2 디바이스 상의 한 세트의 패턴들을 캡처하며, 제1 디바이스는 제2 디바이스보다 낮은 전력 요건들을 가지며, 한 세트의 패턴들은 제2 디바이스 상의 미리 결정된 구성을 가짐 ―; 각각의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계; 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 각각의 패턴의 공간의 로케이션(location) 및 상대적인 포즈(relative pose)를 결정하는 단계; 및 각각의 패턴의 로케이션 및 상대적인 포즈에 기반하여, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계를 포함할 수 있다.

Description

저전력 시각 추적 시스템들
[0001] 본 개시내용은 일반적으로 확장 현실(extended reality) 및 다른 애플리케이션들을 위한 시각 추적 시스템들에 관한 것이다.
[0002] 포즈 추정(pose estimation)은 타깃, 이를테면 장면, 사람, 다른 객체 및/또는 다른 디바이스에 대한 객체 및/또는 디바이스의 포지션(position) 및/또는 배향(orientation)을 결정하기 위해 다양한 애플리케이션들, 이를테면 확장 현실(예컨대, 가상 현실, 증강 현실, 혼합 현실 등), 컴퓨터 비전(computer vision) 및 로봇 공학에서 사용될 수 있다. 포즈 정보는 객체/디바이스와 장면, 사람, 다른 객체 및/또는 다른 디바이스 간의 상호 작용들을 관리하는 데 사용될 수 있다. 예컨대, 로봇의 포즈(예컨대, 포지션 및 배향)는 로봇이 객체를 조작하거나, 또는 장면 주위를 이동할 때 객체와의 충돌을 방지할 수 있게 하기 위해 사용될 수 있다. 다른 예로서, 디바이스 컨트롤러 및 사용자에 의해 착용된 디바이스의 상대적인 포즈는 디바이스 컨트롤러의 포즈 및 이동들이 추적되어 사용자에 의해 착용된 디바이스 상에 렌더링되는 확장 현실 경험을 사용자에게 제공하는 데 사용될 수 있다. 그러나, 포즈 추정 시스템들의 계산 복잡성은 상당한 전력 및 자원 요구들을 부과할 수 있으며, 다양한 애플리케이션들에서 제한 요인일 수 있다. 포즈 추정의 계산 복잡성은 또한 포즈 정보에 의존하는 추적 및 로컬리제이션(localization) 애플리케이션들의 성능과 확장성을 제한할 수 있다.
[0003] 확장 현실 및 다른 애플리케이션들을 위한 저-전력 시각 추적을 위한 시스템들, 방법들 및 컴퓨터-판독 가능 매체들이 개시된다. 적어도 하나의 예에 따르면, 확장 현실 및 다른 애플리케이션들을 위한 저-전력 시각 추적을 위한 방법이 제공된다. 방법은 제1 디바이스 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처(capture)된 하나 이상의 이미지들을 수신하는 단계 ― 하나 이상의 이미지들은 제2 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 제1 디바이스는 제2 디바이스보다 낮은 전력 요건들을 가짐 ―; 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계; 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션(location) 및 상대적인 포즈(relative pose)를 결정하는 단계; 및 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계를 포함할 수 있다.
[0004] 적어도 하나의 예에 따르면, 확장 현실 및 다른 애플리케이션들을 위한 저-전력 시각 추적을 위한 장치가 제공된다. 장치는 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함할 수 있으며, 하나 이상의 프로세서들은 장치 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하며 ― 하나 이상의 이미지들은 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 장치는 디바이스보다 낮은 전력 요건들을 가짐 ―; 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하며; 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하며; 그리고 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 디바이스에 대한 장치의 포즈를 결정하도록 구성된다.
[0005] 적어도 하나의 예에 따르면, 확장 현실 및 다른 애플리케이션들을 위한 저-전력 시각 추적을 위한 비-일시적인 컴퓨터-판독 가능 저장 매체가 제공된다. 비-일시적인 컴퓨터-판독 가능 저장 매체에는 명령들이 저장될 수 있으며, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 제1 디바이스 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하게 하며 ― 하나 이상의 이미지들은 제2 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 제1 디바이스는 제2 디바이스보다 낮은 전력 요건들을 가짐 ―; 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하게 하며; 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하게 하며; 그리고 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하게 하게 한다.
[0006] 적어도 하나의 예에 따르면, 확장 현실 및 다른 애플리케이션들을 위한 저-전력 시각 추적을 위한 장치가 제공된다. 장치는 제1 디바이스 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하기 위한 수단 ― 하나 이상의 이미지들은 제2 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 제1 디바이스는 제2 디바이스보다 낮은 전력 요건들을 가짐 ―; 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하기 위한 수단; 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하기 위한 수단; 및 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하기 위한 수단을 포함할 수 있다.
[0007] 일부 예들에서, 앞서 설명된 방법, 장치들 및 비-일시적 컴퓨터-판독 가능 매체에서, 적어도 하나의 이미지 센서 시스템은 한 세트의 이미지 센서 시스템들을 포함하고, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 것 (또는, 디바이스에 대한 장치의 포즈를 결정하는 것)은 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들에 추가로 기반한다.
[0008] 일부 양상들에서, 앞서 설명된 방법, 장치들 및 비-일시적 컴퓨터-판독 가능 매체는 한 세트의 이미지 센서 시스템들에 의해 캡처된 장면과 연관된, 공간의 하나 이상의 지점들의 3차원(3D) 좌표들을 결정하는 것; 및 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들 및 공간의 하나 이상의 지점들의 3D 좌표들에 기반하여, 제1 디바이스 (또는 장치) 상의 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들을 결정하는 것을 포함할 수 있으며, 제2 디바이스에 대한 제1 디바이스 (또는 장치)의 포즈는 제1 디바이스 (또는 장치) 상의 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들에 추가로 기반한다.
[0009] 일부 예들에서, 제2 디바이스에 대한 제1 디바이스 (또는 장치)의 포즈는 6DoF(six degrees of freedom) 포즈를 포함하고, 한 세트의 패턴들의 미리 결정된 구성은 제2 디바이스 상의 각각의 패턴의 상대적인 로케이션, 제2 디바이스 상의 각각의 패턴의 상대적인 배향, 각각의 패턴의 형상, 각각의 패턴의 크기, 각각의 패턴의 특성, 및/또는 한 세트의 패턴들의 배열을 포함한다.
[0010] 일부 경우들에서, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 회전시킴으로써 한 세트의 패턴들의 3D 배향들을 결정하는 것 ― 3D 좌표들은 기준 3D 좌표들에 대해 회전됨 ―; 및 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 평행 이동(translate)시킴으로써 한 세트의 패턴들의 3D 로케이션들을 결정하는 것을 포함하며, 3D 좌표들은 기준 3D 좌표들에 대해 평행 이동된다. 일부 예들에서, 각각의 패턴의 상대적인 포즈는 한 세트의 패턴들의 3D 배향들 및 한 세트의 패턴들의 3D 로케이션들에 기반할 수 있으며, 각각의 패턴의 로케이션은 한 세트의 패턴들의 3D 로케이션들의 개개의 3D 로케이션을 포함할 수 있다.
[0011] 일부 양상들에서, 제2 디바이스에 대한 제1 디바이스 (또는 장치)의 포즈를 결정하는 것은 제1 디바이스 (또는 장치)에 대한 제2 디바이스의 포즈를 결정하는 것을 더 포함하고, 제1 디바이스 (또는 장치)의 포즈는 제1 6DoF 포즈를 포함하고, 제2 디바이스의 포즈는 제2 6DoF 포즈를 포함한다.
[0012] 일부 예들에서, 제1 디바이스 (또는 장치)는 핸드 컨트롤러 디바이스를 포함할 수 있으며, 제2 디바이스는 헤드-장착 디스플레이 디바이스를 포함할 수 있다.
[0013] 일부 예들에서, 적어도 하나의 이미지 센서 시스템은 저-전력 이미지 센서 시스템을 포함하며, 한 세트의 패턴들의 각각의 패턴은 적외선 스펙트럼 및/또는 가시광선 스펙트럼 중 적어도 하나에서 가시적(visible)이다.
[0014] 일부 양상들에서, 한 세트의 패턴들 중 적어도 하나의 패턴은 인코딩된 머신-판독 가능 정보를 포함하고, 인코딩된 머신-판독 가능 정보는 적어도 하나의 패턴과 연관된 로케이션 정보, 적어도 하나의 패턴과 연관된 식별자, 고유 코드, 세팅(setting), 및 제1 디바이스 (또는 장치) 및/또는 제2 디바이스 상에서 호스팅되는 확장 현실 애플리케이션과 연관된 사용자 계정에 대한 정보를 포함한다.
[0015] 일부 양상들에서, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 것은 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 것; 및 한 세트의 패턴들의 각각의 패턴에서 하나 이상의 지점들을 식별하는 것을 포함하며, 하나 이상의 지점들은 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며, 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은 각각의 패턴의 하나 이상의 지점들에 기반한다.
[0016] 일부 양상들에서, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 것은 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 것; 각각의 패턴에 대해, 더 작은 내부 패턴을 검출하는 것; 및 각각의 더 작은 내부 패턴에서 하나 이상의 지점들을 식별하는 것을 포함할 수 있으며, 하나 이상의 지점들은 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며, 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은 각각의 더 작은 내부 패턴의 하나 이상의 지점들에 기반한다.
[0017] 일부 예들에서, 제2 디바이스에 대한 제1 디바이스(또는 장치)의 포즈를 결정하는 것은 제2 디바이스에 대한 제1 디바이스 (또는 장치)의 6DoF 포즈 및 제1 디바이스 (또는 장치)에 대한 제2 디바이스의 6DoF 포즈를 결정하는 것을 포함한다. 일부 양상들에서, 앞서 설명된 방법, 장치들 및 비-일시적 컴퓨터-판독 가능 매체는 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 추가 이미지들에 기반하여, 하나 이상의 추가 이미지들에 캡처된 객체 상의 하나 이상의 추가 패턴들을 검출하는 것; 객체 상의 하나 이상의 추가 패턴들에 대응하는 하나 이상의 픽셀들을 하나 이상의 추가 이미지들에서 결정하는 것; 및 하나 이상의 픽셀들에 기반하여, 제1 디바이스 (또는 장치)의 6DoF 포즈 및 제2 디바이스의 6DoF 포즈 중 적어도 하나에 대한 객체의 추가 6DoF 포즈를 결정하는 것을 포함할 수 있다. 일부 예들에서, 객체는 벽, 디스플레이 디바이스, 비디오 게임 콘솔, 가구, 기기 또는 가정 용품을 포함할 수 있다.
[0018] 일부 양상들에서, 앞서 설명된 장치들은 하나 이상의 센서들을 포함할 수 있다. 일부 양상들에서, 앞서 설명된 장치들은 모바일 디바이스를 포함할 수 있다. 일부 예들에서, 앞서 설명된 장치들은 핸드 컨트롤러, 모바일 폰, 웨어러블 디바이스, 디스플레이 디바이스, 모바일 컴퓨터, 헤드-장착 디바이스, 및/또는 카메라를 포함할 수 있다.
[0019] 본 요약은 청구된 청구대상의 핵심적인 또는 필수적인 특징들을 식별하도록 의도되지 않으며, 청구된 청구대상의 범위를 결정하기 위해 별개로 사용되도록 의도되지 않는다. 청구대상은 본 특허의 전체 명세서의 적절한 부분들, 임의의 또는 모든 도면들 및 각각의 청구항을 참조하여 이해되어야 한다.
[0020] 전술한 내용은, 다른 특징들 및 실시예들과 함께, 이하의 상세한 설명, 청구항들 및 첨부 도면들을 참조할 때 더 명백해 질 것이다.
[0021] 본 개시내용의 다양한 장점들 및 특징이 획득될 수 있는 방식을 설명하기 위해, 앞서 설명된 원리들의 보다 구체적인 설명은 원리들의 특정 실시예들을 참조하여 제시될 것이며, 이들 특정 실시예들은 첨부 도면들에 예시된다. 이러한 도면들이 오직 본 개시내용의 예시적인 실시예들만을 도시하고 본 개시내용의 범위를 제한하는 것으로 간주되지 않아야 한다는 것을 이해하면서, 본원의 원리들은 도면들을 사용하여 추가적인 특이성 및 세부사항과 함께 기술되고 설명된다.
[0022] 도 1은 본 개시내용의 일부 예들에 따른 저-전력 시각 추적을 위한 예시적 환경을 예시하는 단순화된 블록도이다.
[0023] 도 2는 본 개시내용의 일부 예들에 따른, 메인 프로세싱 시스템에 대한 보조 시스템의 포즈를 검출하기 위해 보조 시스템 상의 이미지 센서 시스템들을 사용하는 예시적인 사용 사례에서 보조 시스템 및 메인 프로세싱 시스템의 예시적인 뷰를 예시한다.
[0024] 도 3a는 본 개시내용의 일부 예들에 따른, 보조 시스템 및/또는 메인 프로세싱 시스템의 6DoF(six degree-of-freedom) 포즈를 추적하기 위한 예시적인 사용 사례를 예시하는 다이어그램이다.
[0025] 도 3b는 본 개시내용의 일부 예들에 따른, 보조 시스템(150) 및/또는 메인 프로세싱 시스템에 대한 포즈 정보를 추적하기 위한 다른 예시적인 사용 사례를 예시하는 다이어그램이다.
[0026] 도 3c는 본 개시내용의 일부 예들에 따른, 보조 시스템 및/또는 메인 프로세싱 시스템의 6DoF 포즈를 추적하기 위한 예시적인 사용 사례를 예시하는 다이어그램이다.
[0027] 도 3d는 본 개시내용의 일부 예들에 따른, 기점 마커들에 기반하여 태깅된 객체들을 추적하기 위한 예시적인 사용 사례를 예시하는 다이어그램이다.
[0028] 도 4a-4c는 본 개시내용의 일부 예들에 따른, 기점 마커들의 예시적인 구성들을 예시한다.
[0029] 도 5는 본 개시내용의 일부 예들에 따른, 기점 마커들 사이에 투사되고 기준 패턴과 관찰된 패턴 간의 포즈 변환에 사용되는 예시 기준 라인을 예시한다.
[0030] 도 6은 본 개시내용의 일부 예들에 따른, 기준 패턴들과 관찰된 패턴들 간의 예시적인 포즈 변환을 예시하는 다이어그램이다.
[0031] 도 7은 본 개시내용의 일부 예들에 따른, 보조 시스템 및 메인 프로세싱 시스템의 상대적인 포즈를 추정하기 위한 예시적인 방법을 예시하는 흐름도이다.
[0032] 도 8은 본 개시내용의 일부 예들에 따른 예시적인 컴퓨팅 디바이스 아키텍처를 예시한다.
[0033] 본 개시내용의 특정 양상들 및 실시예들이 아래에 제공된다. 당업자에게 명백한 바와 같이, 이들 양상들 및 실시예들 중 일부는 독립적으로 적용될 수 있고 이들 중 일부는 조합되어 적용될 수 있다. 이하의 설명에서, 설명의 목적들을 위해, 특정 세부사항들은 본 출원의 실시예들의 철저한 이해를 제공하기 위해 제시된다. 그러나, 다양한 실시예들이 이들 특정 세부사항들 없이도 실시될 수 있다는 것은 명백할 것이다. 도면들 및 상세한 설명은 제한적인 것으로 의도되지 않는다.
[0034] 이하의 설명은 단지 예시적인 실시예들을 제공하며, 본 개시내용의 범위, 적용가능성 또는 구성을 제한하는 것으로 의도되지 않는다. 오히려, 예시적인 실시예들의 이하의 설명은 예시적인 실시예를 구현하기 위한 실시 가능한 설명을 당업자에게 제공할 것이다. 첨부된 청구항들에 제시된 바와 같은 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 어레인지먼트에 대해 다양한 변형들이 이루어질 수 있다는 것이 이해되어야 한다.
[0035] 이전에 언급된 바와 같이, 포즈 추정 시스템들의 계산 복잡성은 상당한 전력 및 자원 요구들을 부과할 수 있으며, 다양한 애플리케이션들에서 제한 요인일 수 있다. 포즈 추정의 계산 복잡성은 또한 포즈 정보에 의존하는 추적 및 로컬리제이션 애플리케이션들의 성능과 확장성을 제한할 수 있다. 예컨대, 시각 및 관성 추적, 로컬리제이션 및 포즈 추정 알고리즘들의 계산 복잡성은 추적, 로컬리제이션 및 포즈 추정을 수반하는 애플리케이션들에서, 이를테면 확장 현실(예컨대, 가상 현실, 증강 현실, 혼합 현실 등), 게이밍 및 로봇 공학에서 사용되는 디바이스들에 대해 큰 전력 및 자원 요구들을 부과할 수 있다. 이러한 전력 및 자원 요구들은 모바일 및 웨어러블 디바이스들에서 이러한 기술들을 구현하고 이러한 디바이스들을 더 작고 더 가볍고 (예컨대, 디바이스에 의해 방출되는 열을 감소시킴으로써) 장기간 동안 착용하기에 더 편안하게 만드는 최근 경향들로 인해 악화된다.
[0036] 예시하자면, 확장 현실(XR) 디바이스들, 이를테면 헤드셋들(예컨대, 헤드-장착 디스플레이(HMD)들, 스마트 글라스 등)은 일반적으로 다른 아이템들(예컨대, 다른 디바이스들, 객체들, 사람들, 장애물들 등)에 대한 자신들의 포즈(예컨대 자신들의 상대적인 3차원(3D) 포지션 및 배향)를 추적하기 위해 고-전력 컴포넌트들에 의존한다. 이러한 추적은 6DoF(6 degree-of-freedom) 추적을 포함할 수 있으며 ― 이는 x, y 및 z 축들을 따르는 평행 이동(예컨대, 전진/후진 또는 서지(surge), 위쪽/아래쪽 또는 히브(heave), 및 왼쪽/오른쪽 또는 스웨이(sway)) 및 회전 이동(예컨대, 피치(pitch), 요(yaw) 및 롤(roll))을 추적하는 것을 수반함 ―, 그리고 계산 집약적일 수 있다. 더욱이, 6DoF 추적에 사용되는 고-전력 컴포넌트들은 예컨대 고해상도 카메라들, 고-전력 프로세서들, 가시광선 및/또는 적외선(IR) 스펙트럼에서의 밝은 발광 다이오드(LED) 조명기들을 포함할 수 있다.
[0037] 6DoF 추적의 고-전력 소비 및 계산 강도는 6DoF 추적 애플리케이션들에서 사용되는 디바이스들의 배터리 수명을 제한할 수 있다. 더욱이, 헤드셋들과 같은 XR 디바이스들을 포함하여 6DoF 애플리케이션들에 사용되는 고-전력 소비 디바이스들은 일반적으로 보조 디바이스들, 이를테면 고-전력 소비 디바이스들과 함께 사용되는 핸드 컨트롤러들보다 더 많은 전력을 소비한다. 이는 적어도 부분적으로 고-전력 소비 디바이스들에 의해 전형적으로 수행되는 디스플레이 및 그래픽 계산들 때문이다. 결과적으로, 고-전력 소비 디바이스들의 배터리는 종종 고-전력 소비 디바이스들의 보조 디바이스들의 배터리보다 빨리 소모된다.
[0038] 본 개시내용은 XR 및 다른 애플리케이션들에서 저-전력 시각 추적을 위한 시스템들, 방법들 및 컴퓨터-판독 가능 매체들을 설명한다. 본원의 저-전력 시각 추적 기술들은 배터리 소비를 감소시키며, XR 디바이스들과 같이 6DoF 추적 애플리케이션들에서 사용되는 디바이스들의 배터리 수명을 증가시킬 수 있다. 일부 예들에서, 본원의 기술들은 고-전력 소비 디바이스들에 의해 전형적으로 수행되는 6DoF 추적 태스크들의 일부 또는 전부를 고-전력 소비 디바이스들과 함께 사용되는 보조 디바이스들에 오프로드할 수 있다. 보조 디바이스들은 저-전력 소비 레이트로 6DoF 추적 태스크들을 수행하기 위해 저-전력 비전/카메라 및 프로세싱 컴포넌트들을 레버리지(leverage)하여, 일반적으로 보조 디바이스들의 배터리 수명보다 훨씬 빠르게 소모되는, 고-전력 소비 디바이스들의 배터리 수명을 증가시킬 수 있다.
[0039] 예컨대, 일부 경우들에서, 보조 디바이스에 대해 고-전력 LED 컴포넌트를 사용하고 고-전력 소비 디바이스에 대해 고-해상도 카메라들을 사용하여 보조 디바이스 및 고-전력 소비 디바이스의 상대적인 포즈를 계산하는 것 대신에, 보조 디바이스는 저-전력 카메라들을 구현하여 6DoF 추적을 수행하고 고-전력 소비 디바이스로부터 연관된 전력 소비를 오프로드할 수 있다. 고-전력 소비 디바이스는 디바이스 상에 인쇄된 고유 패턴들을 구현할 수 있으며, 보조 디바이스 상의 저-전력 카메라들은 보조 디바이스 및 고-전력 소비 디바이스의 상대적인 포즈를 식별하는 데 사용할 수 있다. 보조 디바이스는 고-전력 소비 디바이스 상에 인쇄된 고유 패턴들을 검출하기 위해 저-전력 카메라들의 저-전력 능력들 및 하드웨어 가속 객체 검출 프레임워크들을 레버리지할 수 있다.
[0040] 보조 디바이스는 6DoF 추적을 위한 기점 마커들로서 고-전력 소비 디바이스 상의 고유 패턴들을 사용할 수 있다. 예컨대, 보조 디바이스 상의 저-전력 카메라들은 보조 디바이스 및 고-전력 소비 디바이스의 상대적인 포즈를 식별하기 위한 기점 마커들로서 검출된 패턴들을 사용할 수 있다. 일부 경우들에서, 보조 디바이스는 고-전력 소비 디바이스의 고유 패턴들로부터 검출된 희소 세트의 기점 지점들에 대해 3D 삼각 측량을 수행하여, 보조 디바이스 및 고-전력 소비 디바이스의 상대적인 포즈를 식별할 수 있다. 이에 따라, 보조 디바이스는 저-전력 소비 레이트로 보조 디바이스 및 고-전력 소비 디바이스의 상대적인 포즈를 식별하여, 고-전력 소비 디바이스의 전력 사용량을 감소시킬 수 있다. 일부 예들에서, 6DoF 추적은 보조 디바이스에서 전체적으로 (또는 거의 전체적으로) 수행되어, 보조 디바이스 및 고-전력 소비 디바이스 사이에서 송신되는 정보량을 제한하고 이에 따라 송신 비용들 및 대역폭 요건들을 감소시킬 수 있다.
[0041] 본원의 저-전력 시각 추적 기술들은 다양한 사용 사례들 및 애플리케이션들에서 구현될 수 있다. 예컨대, 저-전력 시각 추적 기술들은 XR 애플리케이션들, 로봇 애플리케이션들, 자율 시스템 애플리케이션들, 게이밍 애플리케이션들 등에서 구현될 수 있다. 예시하자면, 일부 예들에서, 저-전력 시각 추적 기술들은 상대적인 포즈 계산들에 기반하여 경로 계획 및 로컬리제이션을 수행하기 위한 자율 로봇 진공 청소기들; 실시간으로 (또는 거의 실시간으로) 더 높은 추적, 매핑 및 계획 성능을 달성하기 위한 자율 차량들; 텔레비전-기반 콘솔들에 연결된 게임 컨트롤러들; 헤드-장착 디스플레이(HMD)들에 연결된 핸드 컨트롤러들 등에 의해 구현될 수 있다.
[0042] 하나의 비-제한적인 예시적 예에서, 저-전력 시각 추적 기술들은 6DoF 또는 3DoF XR 애플리케이션들에서 구현될 수 있다. 확장 현실(XR)이라는 용어는 증강 현실(AR), 가상 현실(VR), 혼합 현실(MR) 등을 포함할 수 있다. 이러한 형태들의 XR의 각각은 사용자들이 몰입형 가상 환경들 또는 콘텐츠를 경험하거나 이들과 상호 작용할 수 있게 한다. 사실적인 XR 경험들을 제공하기 위해, XR 기술들은 일반적으로 물질적인 세계와 가상 콘텐츠를 통합하는 것을 목표로 하며, 종종 객체들 및 디바이스들의 상대적인 포즈 및 이동을 매칭시키는 것을 수반한다. 이는 디바이스들, 객체들 및/또는 실세계 환경의 상대적인 포지션 및 이동을 매칭시키고 확실한 방식으로 실세계 환경에 콘텐츠를 앵커링하기 위해 실세계 환경의 디바이스들, 객체들 및/또는 지도들의 상대적인 포즈를 계산하는 것을 수반할 수 있다. 상대적인 포즈 정보는 디바이스들, 객체들 및 실세계 환경의 시공간적 상태 및 사용자 인지 모션과 가상 콘텐츠를 매칭시키기 위해 사용될 수 있다.
[0043] 이하와 같이, 본원의 저-전력 시각 추적 기술들은 XR의 맥락에서 설명될 것이다. 그러나, 이전에 설명된 바와 같이, 본원의 저-전력 시각 추적 기술들이 예컨대 로봇 애플리케이션들, 자율 주행 또는 내비게이션 애플리케이션들, 게이밍 시스템들 및 컨트롤러들 등과 같은 매우 다양한 다른 애플리케이션들에서 구현될 수 있다는 점에 유의해야 한다. 따라서, XR은 본원의 저-전력 시각 추적 기술들의 비-제한적인 예시적 애플리케이션으로서 설명 목적들로 모든 점에서 제공된다.
[0044] 본 기술들은 다음과 같이 이하의 개시내용에서 설명될 것이다. 논의는 도 1 내지 도 6에 예시된 바와같이 저-전력 시각 추적 및 포즈 추정을 제공하기 위한 예시적인 시스템들 및 기술들의 설명과 함께 시작한다. 이후, 도 7에 예시된 바와 같은, 저-전력 시각 추적 및 포즈 추정을 제공하기 위한 예시적인 방법에 대한 설명이 후속될 것이다. 논의는 도 8에 예시된 바와 같이 저-전력 시각 추적 및 연관된 동작들을 수행하는 데 적합한 예시적인 하드웨어 컴포넌트들을 포함하는 예시적인 컴퓨팅 디바이스 아키텍처의 설명으로 마무리 짓는다. 본 개시내용은 이제 도 1을 참조한다.
[0045] 도 1은 저-전력 시각 추적을 위한 예시적인 환경을 예시하는 다이어그램이다. 이러한 예에서, 환경은 메인 프로세싱 시스템(100) 및 보조 시스템(150)을 포함할 수 있다. 일부 경우들에서, 메인 프로세싱 시스템(100)은 고-전력 컴포넌트들을 포함하고 그리고/또는 고-전력 및/또는 복잡성 동작들을 구현하는 고-전력 소비 시스템을 포함할 수 있고, 보조 시스템(150)은 저-전력 소비 시스템을 포함할 수 있으며, 저-전력 소비 시스템은 저-전력 컴포넌트들을 포함하고 그리고/또는 저-전력 및/또는 복잡성 동작들을 구현한다.
[0046] 일부 경우들에서, 메인 프로세싱 시스템(100) 및 보조 시스템(150)은 시각 추적 애플리케이션(들) 또는 사용 사례(들)를 위한 상대적인 포즈 정보(예컨대, 메인 프로세싱 시스템(100) 및 보조 시스템(150)의 서로에 대한 포지션들 및 배향들)를 통합하는 데 사용되는 별개의 디바이스들을 포함할 수 있다. 예컨대, 메인 프로세싱 시스템(100) 및 보조 시스템(150)은 메인 프로세싱 시스템(100) 및 보조 시스템(150)의 상대적인 포즈들을 레버리지하는 하나 이상의 기능들을 제공하기 위해 시각 추적 애플리케이션에서 조합하여 사용되는 별개의 디바이스들을 포함할 수 있다. 시각 추적 애플리케이션은, 예컨대 그리고 제한 없이, XR 애플리케이션, 로봇 애플리케이션, 자율 주행 또는 내비게이션 애플리케이션, 게이밍 애플리케이션 등을 포함할 수 있다.
[0047] 일부 예들에서, 메인 프로세싱 시스템(100)은 하나 이상의 기능들, XR 기능들, 이를테면 게이밍 기능들, 자율 주행 또는 내비게이션 기능들, 컴퓨터 비전 기능들, 로봇 기능들 등을 제공하기 위해 메인 프로세싱 시스템(100) 및 보조 시스템(150)의 상대적인 포즈에 대한 정보를 사용하도록 구성된 전자 디바이스를 포함할 수 있다. 예컨대, 일부 경우들에서, 메인 프로세싱 시스템(100)은 XR 디바이스(예컨대, 헤드-장착 디스플레이, 헤드-업 디스플레이 디바이스, 스마트 글라스, 스마트 텔레비전 시스템 등) 및/또는 게이밍 콘솔일 수 있으며, 보조 시스템(150)은 메인 프로세싱 시스템(100)에 의해 제공되는 콘텐츠 및/또는 메인 프로세싱 시스템(100)과 상호작용하는 데 사용되는 컨트롤러(예컨대, 핸드 컨트롤러, 리모콘 컨트롤러, 입력 디바이스, 외부 제어 디바이스 등)일 수 있다.
[0048] 다른 예로서, 일부 경우들에서, 메인 프로세싱 시스템(100)은 로봇 디바이스(예컨대, 로봇, 자율 시스템, 로봇 도구 또는 컴포넌트 등)일 수 있고, 보조 시스템(150)은 메인 프로세싱 시스템(100)에 의해 구현되는 시각 추적 정보를 생성하는 데 사용되는 외부 디바이스 (예컨대, 컨트롤러, 추적 노드 등)일 수 있다. 예시 및 설명의 목적들을 위해, 메인 프로세싱 시스템(100) 및 보조 시스템(150)은 각각 XR 디바이스 및 핸드 컨트롤러로서 이하의 개시내용에서 설명될 것이다. 그러나, 앞서 논의된 바와같이, 다른 예들에서, 메인 프로세싱 시스템(100) 및 보조 시스템(150)은 다른 타입들의 디바이스들을 포함할 수 있다.
[0049] 도 1에 도시된 예시적인 예에서, 메인 프로세싱 시스템(100)은 하나 이상의 컴퓨팅 컴포넌트(110), 기점 마커들(120A-N)(총괄적으로 "120"), 이미지 센서(125), 확장 현실 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132), 이미지 프로세싱 엔진(134) 및 렌더링 엔진(136)을 포함할 수 있다. 일부 예들에서, 메인 프로세싱 시스템(100)은 또한 다른 센서들 및/또는 컴포넌트들, 이를테면, 예컨대 그리고 제한 없이, 자이로스코프, 가속도계, 관성 측정 디바이스(IMU), 레이더, LIDAR(light detection and ranging) 센서, 오디오 센서, 발광 다이오드(LED) 디바이스, 저장 디바이스, 캐시, 통신 인터페이스, 디스플레이, 메모리 디바이스 등을 포함할 수 있다.
[0050] 더욱이, 도 1에 도시된 예시적인 예에서, 보조 시스템(150)은 이미지 센서 시스템들(152), 가속도계(154), 자이로스코프, 추적 엔진들(158) 및 네트워크들(160)을 포함할 수 있다. 일부 예들에서, 보조 시스템(150)은 또한 다른 센서들 및/또는 컴포넌트들, 이를테면, 예컨대 그리고 제한 없이, IMU, 레이더, LIDAR, 오디오 센서, LED 디바이스, 저장 디바이스, 캐시, 통신 인터페이스, 메모리 디바이스 등을 포함할 수 있다. 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150)에 의해 구현될 수 있는 예시적인 아키텍처 및 예시적인 하드웨어 컴포넌트들은 도 8과 관련하여 아래에서 추가로 설명된다. 메인 프로세싱 시스템(100) 및 보조 시스템(150)과 관련하여 도 1에 도시된 컴포넌트들은 설명 목적들을 위해 제공된 단지 예시적인 예들이며, 다른 예들에서 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150)은 도 1에 도시된 것들보다 더 많거나 더 적은 컴포넌트들을 포함할 수 있다는 것에 유의해야 한다.
[0051] 메인 프로세싱 시스템(100)은 단일 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스들의 일부이거나 이들에 의해 구현될 수 있다. 일부 예에서, 메인 프로세싱 시스템(100)은 카메라 시스템(예컨대, 디지털 카메라, IP 카메라, 비디오 카메라, 보안 카메라 등), 전화 시스템(예컨대, 스마트폰, 셀룰러 전화, 화상회의 시스템 등), 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋-톱 박스, 스마트 텔레비전, 디스플레이 디바이스, 게이밍 콘솔, XR 디바이스, 이를테면 HMD, 드론, 차량 내의 컴퓨터, IoT(Internet-of-Things) 디바이스, 스마트 웨어러블 디바이스 또는 임의의 다른 적절한 전자 디바이스(들)와 같은 전자 디바이스(또는 디바이스들)의 일부일 수 있다. 일부 구현들에서, 하나 이상의 컴퓨팅 컴포넌트들(110), 기점 마커들(120), 이미지 센서(125), 확장 현실 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132), 이미지 프로세싱 엔진(134) 및 렌더링 엔진(136)은 동일한 컴퓨팅 디바이스의 일부일 수 있다.
[0052] 예컨대, 일부 경우들에서, 하나 이상의 컴퓨팅 컴포넌트들(110), 기점 마커들(120), 이미지 센서(125), 확장 현실 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132), 이미지 프로세싱 엔진(134) 및 렌더링 엔진(136)은 카메라 시스템, 스마트폰, 랩톱, 태블릿 컴퓨터, 스마트 웨어러블 디바이스, XR 디바이스, 이를테면 HMD, IoT 디바이스, 게이밍 시스템 및/또는 임의의 다른 컴퓨팅 디바이스에 통합될 수 있다. 그러나, 일부 구현들에서, 컴퓨팅 컴포넌트들(110), 기점 마커들(120), 이미지 센서(125), 확장 현실 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132), 이미지 프로세싱 엔진(134) 및/또는 렌더링 엔진(136) 중 하나 이상은 2개 이상의 별개의 컴퓨팅 디바이스들의 일부이거나 또는 이에 의해 구현될 수 있다.
[0053] 유사하게, 보조 시스템(150)은 단일 컴퓨팅 디바이스 또는 다수의 컴퓨팅 디바이스들의 일부이거나 이들에 의해 구현될 수 있다. 일부 예들에서, 보조 시스템(150)은 스마트폰, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 컨트롤러(예컨대, 핸드 컨트롤러, 리모트 컨트롤러, 외부 제어 디바이스, 입력 디바이스 등), IoT 디바이스, 스마트 웨어러블 디바이스 또는 임의의 다른 적절한 전자 디바이스(들)와 같은 전자 디바이스(또는 디바이스들)의 일부일 수 있다. 일부 구현들에서, 이미지 센서 시스템들(152), 가속도계(154), 자이로스코프(156), 추적 엔진들(158) 및 컴퓨터 비전 모델들(160)은 동일한 컴퓨팅 디바이스의 일부일 수 있다.
[0054] 예컨대, 일부 경우들에서, 이미지 센서 시스템들(152), 가속도계(154), 자이로스코프(156), 추적 엔진들(158) 및 컴퓨터 비전 모델들(160)은 컨트롤러, 스마트폰, 랩톱, 태블릿 컴퓨터, 스마트 웨어러블 디바이스, IoT 디바이스 및/또는 임의의 다른 컴퓨팅 디바이스에 통합될 수 있다. 그러나, 일부 구현들에서, 이미지 센서 시스템들(152), 가속도계(154), 자이로스코프, 추적 엔진들(158) 및/또는 하나 이상의 컴퓨터 비전 모델들(160) 중 하나 이상은 2개 이상의 별개의 디바이스들의 일부이거나 또는 이에 의해 구현될 수 있다.
[0055] 메인 프로세싱 시스템(100)의 하나 이상의 컴퓨팅 컴포넌트들(110)은, 예컨대 그리고 제한 없이, CPU(central processing unit)(112), GPU(graphics processing unit)(114), DSP(digital signal processor)(116) 및 /또는 이미지 신호 프로세서(ISP)(118)를 포함할 수 있다. 메인 프로세싱 시스템(100)은 하나 이상의 컴퓨팅 컴포넌트들(110)을 사용하여, 다양한 컴퓨팅 동작들, 이를테면 예컨대 확장 현실 동작들(예컨대, 추적, 로컬리제이션, 포즈 추정, 매핑, 콘텐츠 앵커링, 콘텐츠 렌더링 등), 이미지/비디오 프로세싱, 그래픽 렌더링, 머신 러닝, 데이터 프로세싱, 모델링, 계산들 및/또는 임의의 다른 동작들을 수행할 수 있다. 도 1에 도시된 예에서, 하나 이상의 컴퓨팅 컴포넌트(110)는 확장 현실(XR) 엔진(130), 이미지 프로세싱 엔진(134) 및 렌더링 엔진(136)을 구현한다. 다른 예들에서, 하나 이상의 컴퓨팅 컴포넌트(110)는 또한 하나 이상의 다른 프로세싱 엔진들을 구현할 수 있다. 더욱이, XR 엔진(130)은 XR 동작들, 이를테면 추적, 로컬리제이션, 포즈 추정, 매핑, 콘텐츠 앵커링 등을 수행하도록 구성된 하나 이상의 컴퓨터 비전 모델들(132)을 구현할 수 있다.
[0056] XR 엔진(130), 하나 이상의 컴퓨터 비전 모델(132), 이미지 프로세싱 엔진(134) 및 렌더링 엔진(136)(및 임의의 다른 프로세싱 엔진들)의 동작들은 하나 이상의 컴퓨팅 컴포넌트들(110)의 컴퓨팅 컴포넌트들 중 임의의 컴퓨팅 컴포넌트에 의해 구현될 수 있다. 하나의 예시적인 예에서, 렌더링 엔진(136)의 동작들은 GPU(114)에 의해 구현될 수 있고, XR 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132), 이미지 프로세싱 엔진(134) 및/또는 하나 이상의 다른 프로세싱 엔진들의 동작들은 CPU(112), DSP(116) 및/또는 ISP(118)에 의해 구현될 수 있다. 일부 예들에서, XR 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132) 및 이미지 프로세싱 엔진(134)의 동작들은 ISP(118)에 의해 구현될 수 있다. 다른 예들에서, XR 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132) 및/또는 이미지 프로세싱 엔진(134)의 동작들은 CPU(112), DSP(116), ISP(118) 및/또는 CPU(112), DSP(116) 및 ISP(118)의 조합에 의해 구현될 수 있다.
[0057] 일부 경우들에서, 하나 이상의 컴퓨팅 컴포넌트들(110)은 다른 전자 회로들 또는 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하여 본원에서 설명된 다양한 동작들 중 임의의 동작을 수행할 수 있다. 더욱이, 일부 예들에서, 하나 이상의 컴퓨팅 컴포넌트들(110)은 도 1에 도시된 것들보다 더 많거나 또는 더 적은 컴퓨팅 컴포넌트들을 포함할 수 있다. 실제로, CPU(112), GPU(114), DSP(116) 및 ISP(118)는 단지 설명 목적들을 위해 제공되는 예시적인 예들일 뿐이다.
[0058] 메인 프로세싱 시스템(100)은 메인 프로세싱 시스템(100)의 외부/외측에 인쇄, 디스플레이, 에칭, 구성, 부착 및/또는 제공되는 기점 마커들(120A 내지 120N)(총괄적으로 "120")을 포함할 수 있다. 일부 경우들에서, 기점 마커들(120)은 서로에 대한 특정한 알려진 로케이션들 및/또는 거리들에서 메인 프로세싱 시스템(100) 상에 포지셔닝될 수 있다. 일부 경우들에서, 기점 마커들(120)은 동일하거나 상이한 미리 결정된 크기들, 형상들 및/또는 구성들 중 하나 이상을 가질 수 있다. 기점 마커들(120)의 수, 상대적인 로케이션들, 상대적인 거리들, 크기들, 형상들 및/또는 구성들은 이하에서 추가로 설명되는 바와 같이 상이한 예들에서 다를 수 있다. 더욱이, 기점 마커들(120)은 이하에서 추가로 설명되는 바와 같이 포즈 정보를 식별하기 위해 보조 시스템(150) 상의 이미지 센서들(152)에 의해 검출되고 분석될 수 있는 패턴들, 코드들, 인코딩된 데이터, 및/또는 객체들을 포함할 수 있다. 일부 경우들에서, 기점 마커들(120)은 가시광선 스펙트럼 및/또는 적외선 스펙트럼에서 가시적일 수 있다.
[0059] 기점 마커들(120)은 메인 프로세싱 시스템(100) 바로 위의 특정 패턴들 또는 메인 프로세싱 시스템(100) 상의 (예컨대, 메인 프로세싱 시스템(100)상에 부착되고, 풀로 붙여지고, 제공되는 등의) 객체 또는 재료상의 특정 패턴들을 포함할 수 있다. 예컨대, 일부 경우들에서, 기점 마커들(120)은 패턴들을 갖는 스티커들(또는 스티킹 엘리먼트들 또는 재료들)을 포함할 수 있다. 다른 예로서, 기점 마커들(120)은 메인 프로세싱 시스템(100) 상에 에칭, 설계, 오버레이 또는 인쇄된 패턴들을 포함할 수 있다. 다른 예로서, 기점 마커들(120)은 패턴들을 갖는 필름들, 객체들, 오버레이들 또는 재료들을 포함할 수 있다.
[0060] 이미지 센서(125)는 임의의 이미지 및/또는 비디오 센서 또는 캡처 디바이스, 이를테면 디지털 카메라 센서, 비디오 카메라 센서, 스마트폰 카메라 센서, 텔레비전 또는 컴퓨터와 같은 전자 장치 상의 이미지/비디오 캡처 디바이스, 카메라 등을 포함할 수 있다. 일부 경우들에서, 이미지 센서(125)는 카메라 또는 컴퓨팅 디바이스, 이를테면 디지털 카메라, 비디오 카메라, IP 카메라, 스마트폰, 스마트 텔레비전, 게임 시스템 등의 부분일 수 있다. 더욱이, 일부 경우들에서, 이미지 센서(125)는 다수의 이미지 센서들, 이를테면 후방 및 전방 센서 디바이스들을 포함할 수 있으며, 듀얼 카메라 또는 다른 멀티-카메라 어셈블리(예컨대, 2개의 카메라들, 3개의 카메라들, 4개의 카메라들 또는 다른 수의 카메라들을 포함함)의 일부일 수 있다.
[0061] 일부 예들에서, 이미지 센서(125)는 보조 시스템(150)과 관련하여 아래에서 설명되는 이미지 센서 시스템들(152)과 같은 하나 이상의 저-전력 이미지 센서 시스템들을 나타내거나 또는 이들을 포함할 수 있다. 이미지 센서(125)는 이미지 센서(125), 하나 이상의 컴퓨팅 컴포넌트들(110) 및/또는 하나 이상의 다른 컴포넌트들에 의해 프로세싱될 수 있는 이미지 및/또는 비디오 데이터(예컨대, 원시 이미지 및/또는 비디오 데이터)를 캡처할 수 있다. 일부 경우들에서, 이미지 센서(125)는 보조 시스템(150) 상의 이미지 센서 시스템들(152)과 관련하여 아래에서 추가로 설명되는 바와 같이 객체들에서 패턴들 또는 인코딩된 정보를 검출하거나 또는 인식할 수 있다.
[0062] 일부 예들에서, 이미지 센서(125)는 이미지 데이터를 캡처하고 이미지 데이터에 기반하여 프레임들을 생성하고 그리고/또는 이미지 데이터 또는 프레임들을 프로세싱을 위해 XR 엔진(130), 이미지 프로세싱 엔진(134) 및/또는 렌더링 엔진(136)에 제공할 수 있다. 프레임은 스틸 이미지 또는 비디오 시퀀스의 비디오 프레임을 포함할 수 있다. 프레임은 장면을 나타내는 픽셀 어레이를 포함할 수 있다. 예컨대, 프레임은 픽셀당 적색, 녹색 및 청색 컬러 컴포넌트들을 갖는 RGB(red-green-blue) 프레임; 픽셀당 루마 컴포넌트 및 2개의 크로마 (컬러) 컴포넌트들(크로마-적색 및 크로마-청색)을 갖는 루마, 크로마-적색, 크로마-청색(YCbCr) 프레임; 또는 임의의 다른 적절한 타입의 컬러 또는 흑백 사진일 수 있다.
[0063] 일부 예들에서, XR 엔진(130) 및/또는 하나 이상의 컴퓨터 비전 모델(132)은 이미지 센서(125), 이미지 센서 시스템들(152), 가속도계(154), 자이로스코프(156), 추적 엔진들(158), 및/또는 메인 프로세싱 시스템(100) 상의 하나 이상의 센서들, 이를테면 하나 이상의 IMU들, 가속도계들, 자이로스코프들 등으로부터의 데이터에 기반하여 XR 프로세싱 동작들을 수행할 수 있다. 예컨대, 일부 경우들에서, XR 엔진(130) 및/또는 하나 이상의 컴퓨터 비전 모델들(132)은 추적, 로컬리제이션, 포즈 추정, 매핑 및/또는 콘텐츠 앵커링 동작들을 수행할 수 있다.
[0064] 일부 예들에서, 이미지 프로세싱 엔진(134)은 이미지 센서(125) 및/또는 이미지 센서 시스템들(152)로부터의 데이터에 기반하여 이미지 프로세싱 동작들을 수행할 수 있다. 일부 경우들에서, 이미지 프로세싱 엔진(134)은 이미지 프로세싱 동작들, 이를테면 예컨대 필터링, 디모자이킹, 스케일링, 컬러 보정, 컬러 변환, 세그먼트화, 잡음 감소 필터링, 공간 필터링, 아티팩트 보정 등을 수행할 수 있다. 렌더링 엔진(136)은 컴퓨팅 컴포넌트들(110), 이미지 센서(125), XR 엔진(130), 하나 이상의 컴퓨터 비전 모델들(132) 및/또는 이미지 프로세싱 엔진(134)에 의해 생성 및/또는 프로세싱된 이미지 데이터를 획득하고, 디스플레이 디바이스상에서 제시하기 위한 비디오 및/또는 이미지 프레임들을 렌더링할 수 있다.
[0065] 일부 경우들에서, 보조 시스템(150) 상의 이미지 센서 시스템들(152)은 저-전력 이미징 시스템들 또는 올웨이즈온(always-on) 컴퓨터 비전 카메라 시스템들을 포함할 수 있다. 예컨대, 각각의 이미지 센서 시스템들은 이미지 센서와 이미지 센서에 의해 캡처된 이미지 데이터를 프로세싱하기 위한 하나 이상의 저-전력 프로세서들을 포함할 수 있다. 일부 경우들에서, 각각의 이미지 센서 시스템은 하나 이상의 이미지 프로세싱, 컴퓨터 비전 및/또는 다른 프로세싱 알고리즘들을 포함할 수 있다. 예컨대, 일부 경우들에서, 이미지 센서 시스템들(152)은 추적 엔진들(158) 및/또는 컴퓨터 비전 모델들(160)을 포함하거나 구현하고, 본원에서 추가로 설명되는 바와같은 포즈 추정을 수행할 수 있다. 본원에서 추가로 설명되는 바와 같이, 일부 예들에서, 이미지 센서 시스템들(152)은 메인 프로세싱 시스템(100) 상의 기점 마커들(120)을 검출하고, 검출된 기점 마커들(120)에 기반하여 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 포즈를 추정할 수 있다.
[0066] 추적 엔진들(158)은 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 포즈를 추적하고 추정하기 위한 하나 이상의 알고리즘들을 구현할 수 있다. 일부 예들에서, 추적 엔진들(158)은 이미지 센서 시스템들(152)에 의해 캡처된 이미지 데이터를 수신하고, 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 포즈를 계산하기 위해 수신된 이미지 데이터에 기반하여 포즈 추정을 수행할 수 있다. 일부 경우들에서, 추적 엔진들(158)은 컴퓨터 비전 모델들(160)을 구현하여 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 포즈를 계산할 수 있다. 일부 예들에서, 추적 엔진들(158) 및/또는 컴퓨터 비전 모델들(160)은 이미지 센서 시스템들(152)에 의해 구현될 수 있다. 예컨대, 각각의 이미지 센서 시스템은 본원에서 설명된 바와같이 포즈 추정을 수행하기 위한 추적 엔진 및 컴퓨터 비전 모델을 구현할 수 있다. 다른 예들에서, 추적 엔진들(158) 및/또는 컴퓨터 비전 모델들(160)은 이미지 센서 시스템들(152)과 별개로 보조 시스템(150)에 의해 구현될 수 있다.
[0067] 가속도계(154)는 보조 시스템(150)에 의해 가속도를 검출하고 검출된 가속도에 기반하여 가속도 측정치들을 생성할 수 있다. 자이로스코프(156)는 보조 시스템(150)의 배향 및 각속도를 검출하고 측정할 수 있다. 예컨대, 자이로스코프(156)는 보조 시스템(150)의 피치, 롤 및 요를 측정하는 데 사용될 수 있다. 일부 예들에서, 본원에서 추가로 설명되는 바와같이, 이미지 센서 시스템들(152) 및/또는 추적 엔진들(158)은 가속도계(154) 및 자이로스코프(156)에 의해 획득된 측정치들을 사용하여 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 포즈를 계산할 수 있다. 예컨대, 이미지 센서 시스템들(152)은 기점 마커들(120) 및 메인 프로세싱 시스템(100)의 포지션을 검출할 수 있고, 이미지 센서 시스템들(152) 및/또는 추적 엔진들(158)은 기점 마커들(120)의 검출된 포지션들 및 가속도계(154) 및 자이로스코프(156)로부터의 측정치들을 사용하여 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 포즈를 계산할 수 있다.
[0068] 메인 프로세싱 시스템(100) 및 보조 시스템(150)이 특정 컴포넌트들을 포함하는 것으로 도시되어 있지만, 당업자는 메인 프로세싱 시스템(100) 및 보조 시스템(150)이 도 1에 도시된 것들보다 더 많거나 더 적은 컴포넌트들을 포함할 수 있다는 것을 인식할 것이다. 예컨대, 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150)은, 일부 경우들에서, 하나 이상의 다른 메모리 디바이스들(예컨대, RAM, ROM, 캐시 등), 하나 이상의 네트워킹 인터페이스들(예컨대, 유선 및/또는 무선 통신 인터페이스들 등), 하나 이상의 디스플레이 디바이스들, 캐시들, 저장 디바이스들, 및/또는 도 1에 도시되지 않은 다른 하드웨어 또는 프로세싱 디바이스들을 또한 포함할 수 있다. 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150)에 의해 구현될 수 있는 컴퓨팅 디바이스 및 하드웨어 컴포넌트들의 예시적인 예는 도 8과 관련하여 아래에서 설명된다.
[0069] 도 2는 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 포즈를 검출하기 위해 보조 시스템(150) 상의 이미지 센서 시스템들(152)을 사용하는 예시적인 사용 사례에서 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 예시적인 뷰(200)를 도시한다. 이러한 예에서, 보조 시스템(150)은 XR 경험들을 제공하기 위해 메인 프로세싱 시스템(100)과 함께 사용되는 핸드 컨트롤러, 이를테면 링 컨트롤러를 나타낸다. 더욱이, 이러한 예에서, 메인 프로세싱 시스템(100)은 HMD와 같은 웨어러블 XR 디바이스를 나타낸다. 그러나, 핸드 컨트롤러 및 웨어러블 디바이스는 설명 목적들로 사용되는 예시적인 예들로서 본원에서 사용되며, 다른 예들에서 보조 시스템(150) 및/또는 메인 프로세싱 시스템(100)은 다른 디바이스들, 이를테면 예컨대 다른 타입들의 컨트롤러들, 게이밍 시스템, 스마트 웨어러블 디바이스, IoT 디바이스, 센서 시스템, 스마트 텔레비전 등을 포함하거나 또는 이를 나타낼 수 있다는 것에 유의해야 한다.
[0070] 유사하게, 예시 및 설명 목적들을 위해, 도 3a 내지 도 7과 관련하여 본원에서 설명된 보조 시스템(150) 및 메인 프로세싱 시스템(100)은 예시적인 핸드 컨트롤러 및 예시적인 웨어러블 XR 디바이스(예컨대, HMD)를 각각 포함하거나 또는 이를 나타내는 것으로서 이하의 개시내용에서 설명될 것이다. 그러나, 핸드 컨트롤러 및 웨어러블 XR 디바이스는 단지 설명 목적들로 사용되는 예시적인 예들이며, 다른 예들에서 도 3a 내지 도 7과 관련하여 본원에서 설명된 보조 시스템(150) 및/또는 메인 프로세싱 시스템(100)은 다른 디바이스들, 이를테면 예컨대 다른 타입들의 컨트롤러들, 게이밍 시스템, 스마트 웨어러블 디바이스, IoT 디바이스, 센서 시스템, 스마트 텔레비전 등을 포함하거나 또는 이를 나타낼 수 있다는 것에 유의해야 한다.
[0071] 예시된 바와 같이, 보조 시스템(150)은 이미지 센서 시스템들(152A-152N)(총괄적으로 "152")을 포함할 수 있으며, 이들은 기점 마커들이 이미지 센서 시스템들(152)의 FoV(field-of-view) 내에 있을 때 메인 프로세싱 시스템(100) 상의 기점 마커들(예컨대, 120)을 검출하는 데 사용될 수 있다. 보조 시스템(150)은 이미지 센서 시스템들(152A-152N)을 사용하여 기점 마커들을 검출하고, 기점 마커들 중 하나 이상의 기점 마커들의 상대적인 포지션들을 식별하며, 이러한 정보를 사용하여 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 포즈를 추정할 수 있다.
[0072] 예컨대, 기점 마커가 적어도 하나의 이미지 센서 시스템(예컨대, 이미지 센서 시스템들(152A, 152B, 152C, 152D, 152E, 152F, 152G, 내지 152N))의 FoV 내에 있을 때, 적어도 하나의 이미지 센서 시스템은 기점 마커의 이미지를 캡처하고, 캡처된 이미지를 사용하여 하나 이상의 기점 마커의 로케이션/포지션을 검출할 수 있다. 유사하게, 다수의 기점 마커들이 하나 이상의 이미지 센서 시스템들(예컨대, 이미지 센서 시스템들(152A, 152B, 152C, 152D, 152E, 152F, 152G, 내지 152N))의 FoV 내에 있을 때, 하나 이상의 이미지 센서 시스템들은 다수의 기점 마커들의 이미지들을 캡처하고, 캡처된 이미지들을 사용하여 다수의 기점 마커들의 상대적인 로케이션/포지션을 검출할 수 있다.
[0073] 일부 예들에서, 이미지 센서 시스템들(152) 및/또는 보조 시스템(150)은 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 포즈를 계산하기 위해 메인 프로세싱 시스템(100)에 대해 검출된 기점 마커들의 상대적인 로케이션/포지션을 사용할 수 있다. 예컨대, 메인 프로세싱 시스템(100) 상의 기점 마커들이 보조 시스템(150) 상의 이미지 센서 시스템들(예컨대, 이미지 센서 시스템들(152A, 152B, 152C, 152D, 152E, 152F, 152G, 내지 152N))의 FoV 내에 있을 때, 이러한 이미지 센서 시스템들은 기점 마커들의 이미지들을 캡처할 수 있다. 보조 시스템(150) 및/또는 이미지 센서 시스템들은 캡처된 이미지들을 사용하여 기점 마커들을 검출하고 3D 공간에서의 기점 마커들의 상대적인 로케이션/포지션을 결정할 수 있다. 이미지 센서 시스템들 및/또는 보조 시스템(150)은 기점 마커들의 상대적인 로케이션/포지션을 사용하여 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 포즈를 계산할 수 있다.
[0074] 일부 예들에서, 기점 마커들이 다수의 이미지 센서 시스템들의 FoV 내에 있을 때, 보조 시스템(150)은 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 6DoF 상태를 추적할 수 있다. 일부 경우들에서, 기점 마커들이 단지 하나의 이미지 센서 시스템의 FoV 내에 있을 때, 보조 시스템(150)은 메인 프로세싱 시스템(100)에 대해 보조 시스템(150)의 6DoF 상태의 서브세트를 추적할 수 있다. 일부 경우들에서, 기점 마커들이 임의의 이미지 센서 시스템의 FoV 내에 있지 않을 때, 보조 시스템(150)은 가속도계(154) 및 자이로스코프(156)를 사용하여 보조 시스템(150)의 관성 측정치를 획득하고 관성 측정치를 사용하여 보조 시스템(150)의 상태를 추적할 수 있다.
[0075] 메인 프로세싱 시스템(100)에 대해 고-전력 컴포넌트들을 사용하는 것과 대조적으로, 메인 프로세싱 시스템(100) 상의 기점 마커들에 기반하여 보조 시스템(150)의 포즈를 추적하기 위해 저-전력 소비를 가질 수 있는 보조 시스템(150) 상의 이미지 센서 시스템들(152)을 사용함으로써, 보조 시스템(150)의 포즈는 저-전력 소비로 추적될 수 있다. 따라서, 그러한 전략들은 일반적으로 고-전력 컴포넌트들을 가지며 이에 따라 고-전력 요구들 및/또는 더 제한된 배터리 수명을 갖는 메인 프로세싱 시스템(100)의 전력을 보존할 수 있다.
[0076] 예시적인 뷰(200)가 단일 보조 시스템(150)을 예시하는 반면에, 다른 예들이 다수의 보조 시스템들을 포함할 수 있다는 것에 유의해야 한다. 예컨대, 일부 경우들에서, (예컨대, 보조 시스템(150) 및 다른 보조 시스템을 포함하는) 2개의 보조 시스템들, 이를테면 2개의 핸드 컨트롤러들은 메인 프로세싱 시스템(100)과 조합하여 사용되어 메인 프로세싱 시스템(100)에 대한 각각의 보조 시스템의 상대적인 포즈를 추적할 수 있다. 단일 보조 시스템(150)은 설명 목적들을 위한 단지 예시적인 예로서 본원에 제공된다.
[0077] 도 3a는 보조 시스템(150) 및/또는 메인 프로세싱 시스템(100)의 6DoF 포즈를 추적하기 위한 예시적인 사용 사례(300)를 예시하는 다이어그램이다. 이러한 예에서, 메인 프로세싱 시스템(100) 상의 기점 마커들(320A 및 320B)은 이미지 센서 시스템들(152A, 152B, 내지 152N)(여기서, N은 0 이상의 값임)의 FoV 내에 있으며, 이미지 센서 시스템들(152A, 152B, 내지 152N)은 메인 프로세싱 시스템(100) 상의 기점 마커들(320A 및 320B)의 이미지 데이터(예컨대, 하나 이상의 이미지들 또는 프레임들)를 캡처할 수 있다. 이미지 센서 시스템들(152A, 152B, 내지 152N) 및/또는 보조 시스템(150)은 이미지 센서 시스템들(152A, 152B, 내지 152N)의 FoV 내의 기점 마커들(320A, 320B)을 검출하기 위해 객체 검출을 실행할 수 있다.
[0078] 기점 마커들(320A 및 320B)의 각각은 이미지 센서 시스템들(152A, 152B, 내지 152N)에 의해 검출될 수 있는 특정 패턴(들)을 포함할 수 있다. 기점 마커들(320A 및 320B)의 검출된 패턴(들)은 기점 마커들(320A 및 320B)의 포지션을 식별하는 데 사용될 수 있다. 이미지 센서 시스템들(152A, 152B, 내지 152N) 모두가 동일한 패턴들(예컨대, 기점 마커들(320A 및 320B))을 검출할 때, 보조 시스템(150)은 기점 마커들(320A 및 320B)의 3차원(3D) 로케이션을 삼각 측량할 수 있다. 보조 시스템(150)은 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 6DoF 포즈를 식별하기 위해 기점 마커들(120A 내지 120N)의 3D 로케이션 및 기점 마커들(320A 및 320B)의 상대적인 포즈를 사용할 수 있다. 일부 예들에서, 보조 시스템(150)은 보조 시스템(150)에 대한 메인 프로세싱 시스템(100)의 6DoF 포즈를 식별하기 위해 기점 마커들(320A 및 320B)의 3D 로케이션 및 기점 마커들(320A 및 320B)의 상대적인 포즈를 사용할 수 있다.
[0079] 더욱이, 일부 예들에서, 계산된 포즈 정보는 더 많은 기점 마커들이 검출됨에 따라 그리고/또는 더 많은 이미지 센서 시스템들이 동일한 기점 마커(들)를 검출함에 따라 더 정확하고 강력할 수 있다. 예컨대, 추가 이미지 센서 시스템들이 또한 기점 마커들(320A 및 320B) 중 하나 이상을 검출하였을 수 있는 경우에 그리고/또는 이미지 센서 시스템들(152A, 152B, 내지 152N)(및/또는 추가 이미지 센서 시스템들)이 추가 기점 마커들을 검출하였을 수 있는 경우에, 보조 시스템(150)은 추가 기점 마커 데이터를 사용하여 계산된 포즈 정보의 정확도를 증가시킬 수 있다.
[0080] 도 3a에서, 기점 마커들(320A 및 320B)은 메인 프로세싱 시스템(100)의 전면 상에 인쇄되고 특정 원형 구성을 갖는 것으로 도시된다. 그러나, 다른 예들이 기점 마커들의 상이한 수, 배열, 형상, 크기, 구조, 디자인 및/또는 구성을 구현할 수 있다는 것에 유의해야 한다. 예컨대, 일부 경우들에서, 메인 프로세싱 시스템(100)은 메인 프로세싱 시스템(100)의 전면, 최상부 및/또는 측면들 상에 인쇄된 더 많거나 또는 더 적은 기점 마커들을 가질 수 있으며, 기점 마커들은 동일하거나 상이한 형상, 크기, 패턴, 구조, 디자인 및/또는 구성을 가질 수 있다. 일부 경우들에서, 메인 프로세싱 시스템(100) 상에 인쇄된 기점 마커들은 보조 시스템(150) 또는 메인 프로세싱 시스템(100)이 거꾸로 비틀리거나 또는 그렇지 않고 회전되는 경우에 좌측 및 우측 포지션들을 명확하게 하는 것을 가능하게 하는 특정 구성들로 배향될 수 있다.
[0081] 도 3b는 보조 시스템(150) 및/또는 메인 프로세싱 시스템(100)에 대한 포즈 정보를 추적하기 위한 다른 예시적인 사용 사례(320)를 예시하는 다이어그램이다. 이러한 예에서, 기점 마커들(320A 및 320B)은 이미지 센서 시스템(152A)의 FoV 내에만 있다. 이미지 센서 시스템(152A)은 기점 마커들(320A 및 320B)의 이미지 데이터(예컨대, 하나 이상의 이미지들 또는 프레임들)를 캡처할 수 있고, 보조 시스템(150) 및/또는 이미지 센서 시스템(152A)은 이미지 센서 시스템(152A)의 FoV 내의 기점 마커들(320A 및 320B)을 검출하기 위해 객체 검출을 실행할 수 있다.
[0082] 이전에 언급된 바와 같이, 기점 마커들(320A 및 320B)의 각각은 이미지 센서 시스템들(152A)에 의해 검출될 수 있는 특정 패턴을 포함할 수 있다. 이미지 센서 시스템(152A)이 기점 마커들(320A 및 320B)을 검출할 때, 보조 시스템(150)(또는 이미지 센서 시스템(152A))은 기점 마커들(320A 및 320B)의 3D 로케이션을 삼각 측량할 수 있다. 이후, 보조 시스템(150)(또는 이미지 센서 시스템(152A))은 기점 마커들(320A 및 320B)의 3D 로케이션 및 기점 마커들(320A 및 320B)의 상대적인 포즈를 사용하여 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 6DoF 상태의 적어도 일부 또는 서브세트를 식별할 수 있다. 일부 예들에서, 보조 시스템(150)(또는 이미지 센서 시스템(152A))은 기점 마커들(320A 및 320B)의 3D 로케이션 및 기점 마커들(320A 및 320B)의 상대적인 포즈를 유사하게 사용하여 보조 시스템(150)에 대한 메인 프로세싱 시스템(100)의 6DoF 상태의 적어도 일부 또는 서브세트를 식별할 수 있다.
[0083] 도 3c는 보조 시스템(150) 및/또는 메인 프로세싱 시스템(100)의 6DoF 포즈를 추적하기 위한 예시적인 사용 사례(340)를 예시하는 다이어그램이다. 이러한 예에서, (기점 마커들(320C, 320D, 320E 및 320F)로서 도 3c에 도시된) 기점 마커들(320C 내지 320F)은 보조 시스템(150) 상에 구현되고, 이미지 센서 시스템들(152A 및 152N)은 메인 프로세싱 시스템(100) 상에 구현된다. 더욱이, 기점 마커들(320C 내지 320F)은 메인 프로세싱 시스템(100) 상의 이미지 센서 시스템들(152A, 152B, 내지 152N)의 FoV 내에 있다. 이미지 센서 시스템들(152A, 152B, 내지 152N)은 기점 마커들(320C 내지 320F)의 이미지 데이터(예컨대, 하나 이상의 이미지들 또는 프레임들)를 캡처할 수 있으며, 메인 프로세싱 시스템(100) 및/또는 이미지 센서 시스템들(152A 및/또는 152B)은 이미지 센서 시스템들(152A, 152B, 내지 152N)의 FoV 내의 기점 마커들(320C 내지 320F)을 검출하기 위해 객체 검출을 실행할 수 있다.
[0084] 이미지 센서 시스템들(152A, 152B, 내지 152N)은 기점 마커들(320C 내지 320F)의 상대적인 로케이션들/포지션들을 식별하기 위해 기점 마커들(320C 내지 320F)에 묘사된 특정 패턴들을 검출할 수 있다. 이미지 센서 시스템들(152A, 152B, 내지 152N) 모두가 동일한 패턴들(예컨대, 기점 마커들(320C 내지 320F))을 검출할 때, 메인 프로세싱 시스템(100)은 기점 마커들(320C 내지 320F)의 3D 로케이션을 삼각 측량할 수 있다. 이후, 메인 프로세싱(100)은 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 6DoF 포즈를 식별하기 위해 기점 마커들(320C 내지 320F)의 3D 로케이션 및 기점 마커들(320C 내지 320F)의 상대적인 포즈를 사용할 수 있다. 일부 예들에서, 메인 프로세싱 시스템(100)은 또한 메인 프로세싱 시스템(100)에 대한 보조 시스템(150)의 6DoF 포즈를 식별하기 위해 기점 마커들(320C 내지 320F)의 3D 로케이션 및 기점 마커들(320C 내지 320F)의 상대적인 포즈를 사용할 수 있다.
[0085] 일부 경우들에서, 보조 시스템(150) 상의 기점 마커들의 수 및 동일한 기점 마커(들)를 검출하는, 메인 프로세싱 시스템(100) 상의 이미지 센서 시스템(100)의 수는 메인 프로세싱 시스템(100)에 의해 계산된 포즈 정보의 정확성 및 견고성에 영향을 미칠 수 있는데, 왜냐하면 이는 포즈 정보를 계산하는 데 사용되는 기점 데이터 지점들의 양 및/또는 포즈 정보를 계산하는 데 상관되는 데이터 지점들의 양을 증가시키거나 또는 감소시킬 수 있기 때문이다. 더욱이, 일부 경우들에서, 보조 시스템(150) 상에 인쇄된 기점 마커들은 보조 시스템(150) 또는 메인 프로세싱 시스템(100)이 거꾸로 비틀리거나 또는 그렇지 않고 회전되는 경우에 좌측 및 우측 포지션들을 명확하게 하는 것을 가능하게 하는 특정 구성들로 배향될 수 있다.
[0086] 도 3d는 기점 마커들(320G 및 320N)에 기반하여 태깅된 객체들을 추적하기 위한 예시적인 사용 사례(360)를 예시하는 다이어그램이다. 이러한 예에서, 기점 마커들(320G 및 320N)은 XR 경험, 게임 또는 다른 추적-기반 애플리케이션 동안 타깃(362)을 인식하고 추적하는 데 사용하기 위해 타깃(362) 상에 인쇄된다. 일부 경우들에서, 사용자는 타깃(362) 상에 기점 마커들(320G 및 320N)을 배치하거나 또는 인쇄할 수 있다. 다른 경우들에서, 타깃(362)은 기점 마커들(320G 및 320N)로 설계되거나 또는 기점 마커들(320G 및 320N)을 구현될 수 있다. 예컨대, 기점 마커들(320G 및 320N)은 타깃(362)이 구성되거나 제조될 때 타깃(362) 상에 에칭, 인쇄 또는 구성될 수 있다.
[0087] 타깃(362)은 추적될 임의의 객체 또는 아이템을 포함할 수 있다. 예컨대, 타깃(362)은 게이밍 콘솔, 텔레비전, 환경 객체, 가구, 벽, 문, 컴퓨터, 장비, 디바이스, 기구, 도구 등을 포함할 수 있다. 또한, 타깃(362)은 임의의 수, 크기, 형상, 배열, 구조, 디자인 및/또는 구성의 기점 마커들을 포함할 수 있다.
[0088] 타깃(362) 상의 기점 마커들(320G 및 320N)은 메인 프로세싱 시스템(100) 상의 이미지 센서 시스템들(152A, 152B, 내지 152N)의 FoV 내에 도시된다. 이미지 센서 시스템들(152A, 152B, 내지 152N)은 기점 마커들(320G 내지 320N)의 이미지 데이터(예컨대, 하나 이상의 이미지들 또는 프레임들)를 캡처할 수 있으며, 메인 프로세싱 시스템(100) 및/또는 이미지 센서 시스템들(152A 및/또는 152B)은 이미지 센서 시스템들(152A, 152B, 내지 152N)의 FoV 내의 기점 마커들(320G 내지 320N)을 검출하기 위해 객체 검출을 실행할 수 있다.
[0089] 이미지 센서 시스템들(152A, 152B, 내지 152N)은 기점 마커들(320G 및 내지 320N)의 포지션을 식별하기 위해 기점 마커들(320G 및 320N) 상의 특정 패턴들을 검출할 수 있다. 이미지 센서 시스템들(152A, 152B, 내지 152N) 모두가 동일한 패턴들(예컨대, 기점 마커들(320G 내지 320N))을 검출할 때, 메인 프로세싱 시스템(100)은 기점 마커들(320G 내지 320N)의 3D 로케이션을 삼각 측량할 수 있다. 이후, 메인 프로세싱 시스템(100)은 메인 프로세싱 시스템(100)에 대한 타깃(362)의 6DoF 포즈를 식별하기 위해 기점 마커들(320G 및 320N)의 3D 로케이션 및 기점 마커들(320G 및 320N)의 상대적인 포즈를 사용할 수 있다. 일부 예들에서, 메인 프로세싱 시스템(100)은 또한 타깃(362)에 대한 메인 프로세싱 시스템(100)의 6DoF 포즈를 식별하기 위해 기점 마커들(320G 및 320N)의 3D 로케이션 및 기점 마커들(320G 및 320N)의 상대적인 포즈를 사용할 수 있다.
[0090] 도 4a는 기점 마커들의 예시적인 구성(400)을 예시한다. 이러한 예들에서, 기점 마커들(420A 및 420B)은 패턴들을 갖는 원들로서 형상화된다. 그러나, 다른 예들에서 기점 마커들(420A 및 420B)은 예컨대 정사각형들, 삼각형들, 직사각형들, 팔각형들 등과 같은 임의의 다른 형상들을 가질 수 있다는 것에 유의해야 한다.
[0091] 원들 안의 패턴들은 임의의 형상, 구성, 배열, 특성 및/또는 디자인을 가질 수 있다. 더욱이, 기점 마커들(420A 및 420B) (예컨대, 원들) 내의 패턴들은 IR 및/또는 가시광선 스펙트럼에서 가시적일 수 있는 임의의 특징, 엘리먼트, 특성 또는 아이템에 기반할 수 있다. 예컨대, 패턴들은 컬러들, 라인들, 문자들, 심볼들, 코드들, 텍스처들, 에칭들, 비균질성들, 물질들, 이미지들, (예컨대, 가시광선 또는 IR 스펙트럼에서의) 라이팅(lighting), (예컨대, 가시광선 또는 IR 스펙트럼에서의) 백-라이팅, 외부 또는 주변 소스로부터의 라이팅(예컨대, 환경의 IR 플러드라이트(floodlight)) 등을 포함할 수 있다.
[0092] 이미지 센서 시스템들(152)은 기점 마커들(420A 및 420B)을 캡처한 이미지 데이터를 분석하고, 기점 마커들(420A 및 420B)의 패턴들(및/또는 패턴들의 하나 이상의 지점들)에 기반하여 이미지 데이터 내에서 기점 마커들(420A 및 420B)을 검출할 수 있다. 일부 예들에서, 이미지 센서 시스템들(152)의 객체 검출은 기점 마커들(420A 및 420B) 주위에 바운딩 박스들(402A 및 402B)을 제공할 수 있다. 바운딩 박스들(402A 및 402B)은 기점 마커들(420A 및 420B)의 상대적인 포지션들을 나타낼 수 있고 그리고/또는 기점 마커들(420A 및 420B)의 상대적인 포지션들을 식별하기 위해 사용될 수 있다.
[0093] 도 4b는 기점 마커들의 다른 예시적인 구성(410)을 예시한다. 이러한 예에서, 기점 마커들(420C 내지 420G)은 정사각형 패턴들(412, 414, 및 416)을 갖는 머신-판독 가능 바코드들, 이를테면 QR(Quick Response) 코드들이다. 머신-판독 가능 바코드들의 각각은 로케이션 정보, 포지션 정보(예컨대, 좌측 대 우측 등), 식별자, 추적기, 사용자 정보, 디바이스 정보, 게임 정보, XR 정보, 애플리케이션 정보, 메타데이터, 텍스트, 비디오 게임 정보(예컨대, 플레이어 정보, 게임 플레이 엘리먼트들 등), 세팅 정보 및/또는 임의의 다른 타입의 정보와 같은 정보를 인코딩할 수 있다. 예컨대, 머신-판독 가능 바코드들은 멀티-플레이어 게임 세팅에서 각각의 플레이어에 대한 고유 코드를 인코딩할 수 있다.
[0094] 보조 시스템(예컨대, 150) 상의 이미지 센서 시스템들(예컨대, 152)은 자신들의 상대적인 포지션들을 검출하기 위해 기점 마커들을 검출할 수 있다. 일부 예들에서, 보조 시스템 상의 이미지 센서 시스템들은 기점 마커들(420C 내지 420G)에서 머신-판독 가능 바코드들을 판독하여 머신-판독 가능 바코드들에 인코딩된 정보를 검출함으로써 인코딩된 정보로부터 기점 마커들의 포지션 및/또는 임의의 다른 데이터를 결정할 수 있다. 일부 예들에서, 이미지 센서 시스템들은 이미지 센서 시스템들로 하여금 머신-판독 가능 바코드들을 판독할 수 없을지라도 기점 마커들의 포지션을 계산하고 그리고/또는 기점 마커들과 연관된 정보를 계산할 수 있게 하기 위해 머신-판독 가능 바코드들보다 더 먼 거리로부터 기점 마커들(420C 내지 420G)에서 정사각형 패턴들(412, 414 및 416)을 검출할 수 있다.
[0095] 도 4c는 기점 마커(420N)의 다른 예시적인 구성을 예시한다. 이러한 예에서, 기점 마커(420N)는 외부 패턴(430) 및 내부 패턴(432)을 포함한다. 이러한 예들에서 외부 패턴(430)은 원이고, 내부 패턴(432)은 내부 원이다. 그러나, 다른 예들에서 외부 패턴(430) 및/또는 내부 패턴(432)이 예컨대 정사각형, 삼각형, 직사각형, 팔각형 등과 같은 임의의 다른 형상을 가질 수 있다는 것에 유의해야 한다.
[0096] 일부 예들에서, 외부 패턴(430) 및/또는 내부 패턴(432)은 임의의 형상, 구성, 배열, 특성 및/또는 디자인을 가질 수 있다. 더욱이, 외부 패턴(430) 및/또는 내부 패턴(432)은 IR 및/또는 가시광선 스펙트럼에서 가시적일 수 있는 임의의 특징, 엘리먼트 또는 아이템에 기반할 수 있다. 예컨대, 외부 패턴(430) 및/또는 내부 패턴(432)은 컬러들, 라인들, 문자들, 심볼들, 코드들, 텍스처들, 에칭들, 비균질성들, 물질들, 이미지들, (예컨대, 가시광선 또는 IR 스펙트럼에서의) 라이팅, (예컨대, 가시광선 또는 IR 스펙트럼에서의) 백-라이팅 등을 포함할 수 있다.
[0097] 일부 경우들에서, 내부 패턴(432)은 기점 마커(420N)의 보다 정확한 로컬리제이션을 제공하기 위해 사용될 수 있다. 예컨대, 내부 패턴(432)은 기점 마커(420N) 상의 특정 지점(들)의 위치를 반복적으로 및/또는 정확하게 알아내기 위한 랜드마크(landmark)로서 사용될 수 있다. 일부 경우들에서, 기점 마커(420N)를 검출하는 데 사용되는 이미지 센서 시스템들(예컨대, 152)은 자신의 효율성을 증가시키기 위해 적응 스트라이딩(adaptive striding)을 구현할 수 있다. 결과적으로, 이미지 센서 시스템들에 의해 검출된 기점 마커(420N) 주위의 바운딩 박스는 기점 마커(420N)에 항상 정밀하거나 또는 정확하게 중심을 두는 것은 아닐 수 있으며, 이는 삼각 측량 정확도에 영향을 미칠 수 있다. 예컨대, 기점 마커(420N) 주위의 바운딩 박스는 픽셀들의 수 만큼 오프(off) 또는 오프셋될 수 있으며, 이는 삼각 측량 정확도에 영향을 미칠 수 있다.
[0098] 일부 예들에서, 기점 마커 내의 키 포인트(key point) 로컬리제이션의 정밀도를 개선하기 위해, 이미지 센서 시스템(예컨대, 152)은 전체 패턴(예컨대, 외부 패턴(430))에 대해 빠르고 개략적인 객체 검출을 실행할 수 있다. 빠르고 개략적인 객체 검출에 기반하여 외부 패턴(430)을 검출한 후에, 이미지 센서 시스템은 외부 패턴(430)과 연관된 검출 윈도우 내에서 내부 패턴(432)의 세밀 탐색(fine-grained search)을 실행할 수 있다. 이는 또한 이미지 센서 시스템에 대한 내부 패턴(432)의 더 큰 배향들에서 로컬리제이션 정확도를 개선시킬 수 있다. 일부 예들에서, 이러한 2-스테이지 로컬리제이션 알고리즘(two-stage localization algorithm)은 더 큰 배향들에 대한 강력한 트레이닝에 의해 지원될 수 있다. 일부 경우들에서, 이러한 2-스테이지 로컬리제이션 알고리즘은 또한 이미지 센서 시스템에 의한 멀티-객체 검출을 위한 실패 시 분기 메커니즘(branch-on-fail mechanism)(예컨대, 머신 러닝 객체 검출에서의 조건부 분기)을 레버리지할 수 있다.
[0099] 도 5는 기점 마커들(520A 및 520B) 사이에 투사되고 기준 패턴과 관찰된 패턴 사이의 포즈 변환에 사용되는 예시적인 기준 라인(502)을 예시한다. 기준 라인(502)은 기점 마커들(520A 및 520B) 상의 2개 이상의 지점들을 연결할 수 있다 (그리고/또는 2개 이상의 지점들을 가로질러 투사될 수 있다). 이러한 예에서, 기준 라인(502)은 기점 마커들(520A 및 520B)의 중심들을 연결한다. 기준 라인(502)의 기준 로케이션은 3D 공간의 기준 좌표 시스템(예컨대, X, Y, Z 좌표 시스템), 이를테면 세계 또는 동차 좌표 시스템에 기반하여 계산될 수 있다. 더욱이, 기준 라인(502)의 관찰된 로케이션은 이미지 센서 시스템들(152)에 의해 캡처된 이미지들에 기반하여 결정될 수 있다. 관찰된 로케이션은 이미지 좌표 시스템(예컨대, 이미지 센서 시스템들(152)에 의해 캡처된 이미지들과 연관된 좌표 시스템)에 대해 결정될 수 있다.
[0100] 일부 예들에서, 기준 라인(502)의 기준 로케이션 및 기준 라인(502)의 관찰된 로케이션은 기점 마커들(520A 및 520B)의 포즈를 계산하고 그리고/또는 기점 마커들(520A 및 520B)의 포즈를 계산할 때 포즈 추정 정확도를 개선하기 위해 비교될 수 있다. 일부 예들에서, 도 6과 관련하여 이하에서 추가로 설명되는 바와같이, 기준 라인(502)의 기준 로케이션 및 기준 라인(502)의 관찰된 로케이션은 기점 마커들(520A 및 520B)의 기준 포즈에 대해 기점 마커들(520A 및 520B)의 관찰된 포즈를 변환하기 위해 사용될 수 있다. 일부 예들에서, 기준 라인(502)의 기준 로케이션 및 기준 라인(502)의 관찰된 로케이션으로부터 그리고/또는 이들 사이에 투사된 좌표 평면들(예컨대, X, Y, Z 좌표 평면들) 간의 상대적인 거리 및/또는 각도들은 기준 라인(502)의 기준 포즈에 대해 기준 라인(502)의 관찰된 포즈를 평행 이동시키는 데 사용될 수 있다. 기준 라인(502)의 평행 이동된 포즈는 기준 라인(502)과 연관된 패턴들의 상대적인 포즈들을 결정하는 데 사용될 수 있다.
[0101] 도 6은 기준 패턴들(예컨대, 기준 기점 마커들(520A 및 520B))과 관찰된 패턴들(예컨대, 관찰된 기점 마커들(520A 및 520B)) 사이의 예시적인 포즈 변환(600)을 예시하는 다이어그램이다. 일부 경우들에서, 관찰된 패턴들은 이미지 센서 시스템들(152)을 통해 캡처된 이미지들에서 검출된 패턴을 포함할 수 있고, 기준 패턴들은 기준 좌표 시스템(예컨대, 세계 좌표 또는 동차 좌표 시스템)에 대해 결정된 패턴들을 포함할 수 있다.
[0102] 도 6에 도시된 예에서, 평행 이동 변환(translation transformation)(602)은 기준 라인의 실제, 절대 및/또는 추정 포지션을 결정하기 위해 기준 라인(예컨대, 기준 라인(502))의 관찰된 로케이션(606)과 기준 라인의 기준 로케이션(604) 사이에서 계산된다. 평행 이동 변환(602)은 기준 라인의 기준 로케이션(604) 및 기준 라인의 관찰된 로케이션(606)에 기반하여 계산될 수 있다. 일부 경우들에서, 평행 이동 변환(602)은 X축, Y축 및 Z축을 따르는, 기준 라인의 기준 로케이션(604) 및 기준 라인의 관찰된 로케이션(606)으로부터의 투사들에 기반할 수 있다. 일부 예들에서, 투사들은 기준 라인의 기준 로케이션(604) 및 관찰된 로케이션(606)의 차이를 반영할 수 있다.
[0103] 예컨대, X축, Y축 및 Z축을 따라 기준 로케이션(604)(또는 기준 로케이션(604)의 하나 이상의 지점들) 및 관찰된 로케이션(606)(또는 관찰된 로케이션(606)의 하나 이상의 지점들)로부터의 투사들은 기준 라인의 로케이션을 평행 이동하거나 또는 복구하기 위해 비교될 수 있다. 일부 경우들에서, 투사들은 X축, Y축 및 Z축을 따라 기준 라인의 기준 로케이션(604) 및 기준 라인의 관찰된 로케이션(606) 간에 이동 변환(602)를 수행하기 위해 사용될 수 있다.
[0104] 일부 예들에서, 기준 라인의 기준 로케이션(604)은 기준 라인의 알려지거나 또는 계산된 로케이션(및/또는 기준 라인의 하나 이상의 지점들)일 수 있다. 일부 경우들에서, (X 축을 따라 묘사된) 기준 라인의 기준 로케이션(604)은 기준 프레임 및/또는 좌표 시스템으로부터 기준 라인의 하나 이상의 지점들을 삼각 측량함으로써 계산될 수 있다. 일부 경우들에서, 그러한 삼각 측량은 기준 패턴 및 관찰된 패턴(예컨대, 기점 마커들(520A 및 520B))과 같은, 기준 라인과 연관된 패턴들의 상대적인 구성 및/또는 로케이션에 대해 알려진 정보를 레버리지할 수 있다. 일부 예들에서, 기준 라인의 관찰된 로케이션(606)은 기준 라인을 캡처한 (예컨대, 하나 이상의 이미지 센서 시스템들(152)을 통해 획득된) 이미지(들)로부터 관찰 및/또는 계산된 기준 라인의 로케이션(및/또는 기준 라인의 하나 이상의 지점들)일 수 있다.
[0105] 게다가, (Y축, X축 및 Z축을 따라 다양하게 묘사된) 기준 라인의 기준 배향(612)과 기준 라인의 관찰된 배향 간의 회전 변환(610)은 X 축, Y 축 및 Z 축을 따라 기준 라인에 대한 회전 각도들(620, 622, 624)을 복구하거나 또는 추정함으로써 계산될 수 있다. 회전 각도들(620, 622, 624)은 X축, Y축 및 Z축을 따라 기준 라인의 관찰된 배향 및/또는 기준 라인의 기준 배향(612)에 대해 생성된 투사들(614, 616 및 618)에 기반하여 계산될 수 있다. 예컨대, X축을 따르는 기준 라인의 회전 각도(620)는 X축을 따르는 기준 배향(612)으로부터의 투사(614)에 기반하여 계산될 수 있다. 유사하게, Y축을 따르는 기준 라인의 회전 각도(622)는 Y축을 따르는 기준 배향(612)으로부터의 투사(616)에 기반하여 계산될 수 있다. 마지막으로, Z축을 따르는 기준 라인의 회전 각도(624)는 Z축을 따르는 기준 배향(612)으로부터의 투사(618)에 기반하여 계산될 수 있다.
[0106] 일부 예들에서, 회전 각도들(620, 622 및 624)은 기준 라인의 배향을 추정하거나 또는 복구하기 위해 사용될 수 있다. 더욱이, 일부 예들에서, X축, Y축 및 Z축을 따르는 투사들(614, 616 및 618)을 연결하는 지점(들)은 기준 라인의 회전 각도들(620, 622 및 624) 및/또는 기준 라인의 배향을 계산하는 데 사용될 수 있다.
[0107] 평행 이동 변환(602) 및 회전 변환(610)은 기준 라인과 연관된 기준 패턴의 포즈와 기준 라인과 연관된 관찰된 패턴의 관찰된 포즈 간의 포즈 변환(600)을 수행하는 데 사용될 수 있다. 일부 예들에서, 포즈 변환(600)은 기준 라인과 연관된 기준 패턴(예컨대, 기준 기점 마커들(520A 및 520B))의 상대적인 포즈 및 기준 라인과 연관된 관찰된 패턴의 관찰된 포즈(예컨대, 기점 마커들(520A 및 520B)의 관찰된 포즈)를 추정하는 데 사용될 수 있으며, 이는 기준 패턴 및 관찰된 패턴(예컨대, 기점 마커들(520A 및 520B))의 상대적인 로케이션 및 배향을 반영할 수 있다. 일부 예들에서, 보조 시스템(150)과 메인 프로세싱 시스템(100)의 상대적인 6DoF 포즈는 기준 패턴 및 관찰된 패턴의 상대적인 포즈에 기반하여 계산될 수 있다.
[0108] 일부 예들에서, 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 6DoF 포즈는 이미지 센서 시스템들(152)에 의해 관찰된 패턴들(예컨대, 기점 마커들(520A 및 520B))의 그룹의 3D 로케이션, 그 패턴들의 그룹의 상대적인 포즈, 및 이미지 센서 시스템들(152)의 교정된 상대적인 로케이션을 삼각 측량함으로써 계산될 수 있다. 일부 경우들에서, 보조 시스템(150) 상의 이미지 센서 시스템들(152)은 기준 라인의 이미지들 또는 프레임들 (및/또는 연관된 패턴들 및/또는 이의 지점들)을 캡처할 수 있으며, 이미지들 또는 프레임들은 보조 시스템(150)의 포즈와 메인 프로세싱 시스템(100)의 포즈(및/또는 패턴들 또는 기점 마커들(520A, 520B)) 간의 상대적인 변환을 계산함으로써 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 6DoF 포즈 및/또는 모션을 추정하기 위해 사용될 수 있다. 일부 예들에서, 메인 프로세싱 시스템(100)의 포즈는 이전에 설명된 바와 같이 포즈 변환(600)에 기반하여 계산될 수 있다.
[0109] 일부 예들에서, 보조 시스템(150) 상의 2개 이상의 이미지 센서 시스템들(152)은 메인 프로세싱 시스템(100) 상의 기점 마커들(예컨대, 기점 마커들 중 2개 이상의 마커들)의 이미지들 또는 프레임들을 캡처할 수 있으며, 이미지들 또는 프레임들에 캡처된 기점 마커들의 지점들에 대응하는 이미지들 또는 프레임들의 픽셀 로케이션들은 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 6DoF 포즈를 계산하는 데 사용될 수 있다. 예컨대, 2개 이상의 이미지 센서 시스템들(152)의 6DoF 포즈는 서로에 대해 교정될 수 있다. 2개 이상의 이미지 센서 시스템들(152)은 메인 프로세싱 시스템(100) 상의 동일한 세트의 기점 마커들(예컨대, 520A 및 520B)의 이미지들 또는 프레임들을 캡처할 수 있고, 이미지들 또는 프레임들에 캡처된 기점 마커들의 지점들에 대응하는 픽셀들을 검출할 수 있다. 기점 마커들의 지점들의 로케이션은 기점 마커들의 지점들에 대응하는 픽셀들에 기반하여 삼각 측량될 수 있다. 픽셀들에 대응하는 지점들의 삼각 측량된 로케이션은 기점 마커들의 3D 로케이션 및 상대적인 포즈를 계산하는 데 사용할 수 있다. 기점 마커들의 3D 로케이션 및 상대적인 포즈는 기점 마커들과 연관된 메인 프로세싱 시스템(100)의 3D 로케이션 및 포즈를 반영할 수 있다. 따라서, 기점 마커들의 3D 로케이션 및 상대적인 포즈는 보조 시스템(150) 및 메인 프로세싱 시스템(100)의 상대적인 6DoF 포즈를 추정하기 위해 2개 이상의 이미지 센서 시스템들(152)의 상대적인 포즈와 함께 사용될 수 있다.
[0110] 예시적인 시스템들, 컴포넌트들 및 개념들을 개시하면서, 본 개시내용은 이제 도 7에 도시된 바와 같이 보조 시스템(예컨대, 150) 및 메인 프로세싱 시스템(예컨대, 100)의 상대적인 포즈를 추정하기 위한 예시적인 방법(700)을 참조한다. 본원에서 약술된 단계들은 예시 목적들로 제공된 비-제한적인 예들이며, 특정 단계들을 제외하거나, 추가하거나 또는 수정한 조합들을 포함하여 이들의 임의의 조합으로 구현될 수 있다.
[0111] 블록(702)에서, 방법(700)은 제1 디바이스(예컨대, 보조 시스템(150)) 상의 한 세트의 이미지 센서 시스템들(예컨대, 152)로부터 각각의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하는 단계를 포함할 수 있다. 하나 이상의 이미지들은 제2 디바이스 (예컨대, 메인 프로세싱 시스템(100)) 상의 한 세트의 패턴들(예컨대, 120A 내지 120N)을 캡처할 수 있다. 일부 예들에서, 한 세트의 패턴들은 하나 이상의 패턴들을 포함하는 기점 마커들일 수 있다. 더욱이, 한 세트의 패턴들은 적외선 스펙트럼 또는 가시광선 스펙트럼에서 가시적일 수 있다.
[0112] 한 세트의 패턴들은 제2 디바이스 상에서 미리 결정된 구성을 가질 수 있다. 한 세트의 패턴들의 미리 결정된 구성은, 예컨대 그리고 제한 없이, 제2 디바이스 상의 각각의 패턴의 상대적인 로케이션, 제2 디바이스 상의 각각의 패턴의 상대적인 배향, 각각의 패턴의 형상, 각각의 패턴의 크기, 각각의 패턴의 특성 및/또는 한 세트의 패턴들의 배열을 포함할 수 있다. 일부 예들에서, 한 세트의 패턴들의 하나 이상의 패턴들은 도 4b에 도시된 바와 같이 인코딩된 머신-판독 가능 정보를 포함할 수 있다. 패턴으로 인코딩된 인코딩된 머신-판독 가능 정보는 패턴과 연관된 로케이션 정보, 패턴과 연관된 식별자, 고유 코드, 세팅, 제2 디바이스 상에서 호스팅되는 XR 애플리케이션과 연관된 사용자 계정(예컨대, 게임 플레이어, 사용자 프로필 등)에 대한 정보를 포함할 수 있다.
[0113] 일부 경우들에서, 제1 디바이스는 제2 디바이스보다 낮은 전력 요건들을 가질 수 있다. 예컨대, 제1 디바이스는 제2 디바이스보다 더 적은 전력을 소비하고 그리고/또는 제2 디바이스보다 낮은 전력 컴포넌트들을 가질 수 있다. 일부 예들에서, 제1 디바이스는 핸드 컨트롤러 디바이스일 수 있고, 제2 디바이스는 헤드-장착 디스플레이(HMD)일 수 있다. 다른 예들에서, 제1 디바이스는 임의의 다른 타입의 컨트롤러, 보조 디바이스 또는 저-전력 디바이스일 수 있고, 제2 디바이스는 임의의 다른 타입의 고-전력 디바이스, 웨어러블 XR 디바이스 등일 수 있다. 더욱이, 일부 경우들에서, 한 세트의 이미지 센서 시스템들의 각각의 이미지 센서 시스템은 이전에 설명된 바와 같이 저-전력 이미지 센서 시스템일 수 있다.
[0114] 일부 경우들에서, 각각의 이미지 센서 시스템은 적어도 하나의 패턴의 적어도 하나의 이미지를 캡처할 수 있다. 일부 경우들에서, 2개 이상의 이미지 센서 시스템들은 각각 동일한 패턴들 중 하나 이상의 패턴들의 이미지를 캡처할 수 있다. 일부 예들에서, 한 세트의 이미지 센서 시스템들은 제1 디바이스 상의 모든 이미지 센서 시스템들을 나타낼 수 있다. 다른 예들에서, 한 세트의 이미지 센서 시스템들은 제1 디바이스 상의 모든 이미지 센서 시스템들의 서브세트를 나타낼 수 있다. 예컨대, 한 세트의 이미지 센서 시스템들은 자신들의 특정 포즈들 및/또는 관점들에서 한 세트의 패턴들의 하나 이상의 패턴들의 이미지들을 캡처할 수 있는 이미지 센서 시스템들의 서브세트를 나타낼 수 있다. 다시 말해서, 한 세트의 이미지 센서 시스템들은 하나 이상의 이미지들을 캡처할 때 자신들의 FoV 내의 하나 이상의 패턴들을 갖은 제1 디바이스 상의 이미지 센서 시스템들의 서브세트를 나타낼 수 있다.
[0115] 일부 경우들에서, 하나 이상의 패턴들의 이미지를 캡처한 이미지 센서 시스템들의 수는 이미지 센서 시스템들의 상대적인 포즈들 및 제2 디바이스 상의 한 세트의 패턴들이 변화함에 따라 달라질 수 있는데, 왜냐하면 상대적인 포즈들의 이러한 변화들은 이미지 센서 시스템의 FoV로부터의 하나 이상의 패턴들을 추가하거나 또는 제거할 수 있기 때문이다. 실제로, 제2 디바이스 상의 한 세트의 패턴들의 하나 이상의 패턴들은 때때로 제1 디바이스 상의 모든 이미지 센서 시스템들의 FoV 내에 있을 수 있으며 ― 이는 제1 디바이스 상의 모든 이미지 센서 시스템들이 하나 이상의 패턴들의 이미지를 캡처할 수 있게 할 것임 ―, 다른 시간들에서, 한 세트의 패턴들의 일부 또는 모두는 제1 디바이스 상의 이미지 센서 시스템들의 단지 1개, 2개 또는 그 초과의 이미지 센서 시스템의 FoV 내에 있거나 또는 전혀 없을 수 있다. 일부 경우들에서, 한 세트의 패턴들 중 어느 것도 제1 디바이스 상의 임의의 이미지 센서 시스템의 FoV 내에 있지 않으면, 보조 디바이스 및/또는 메인 프로세싱 시스템은 개개의 센서들(예컨대, IMU, 자이로스코프, 가속도계 등)로부터의 관성 측정치들을 사용하여 포즈 정보를 계산하거나 추적할 수 있다.
[0116] 블록(704)에서, 방법(700)은, 각각의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계를 포함할 수 있다. 예컨대, 이미지 센서 시스템에 의해 캡처된 각각의 이미지는 하나 이상의 패턴들을 캡처할 수 있다. 따라서, 이미지는 하나 이상의 패턴들의 하나 이상의 지점들에 대응하는 픽셀들을 포함할 수 있다. 이미지 센서 시스템은 하나 이상의 패턴들 및 하나 이상의 패턴들의 하나 이상의 지점들을 검출할 수 있다. 이후, 이미지 센서 시스템은 하나 이상의 패턴들의 하나 이상의 지점들에 대응하는 (예컨대, 하나 이상의 패턴들의 하나 이상의 지점들을 표현하고, 캡처하며, 묘사한 등의) 이미지의 하나 이상의 픽셀들(및 이미지 내의 픽셀 로케이션)을 식별할 수 있다. 이미지의 하나 이상의 픽셀들(및 픽셀 로케이션)은 본원에서 추가로 설명되는 바와 같이 픽셀들에 대응하는 하나 이상의 지점들과 연관된 하나 이상의 패턴들의 로케이션 및/또는 포즈를 추정하는 데 사용될 수 있다.
[0117] 블록(706)에서, 방법(700)은 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 한 세트의 패턴들의 각각의 패턴의 공간(예컨대, 3D 공간)의 로케이션 및 상대적인 포즈를 결정하는 단계를 포함할 수 있다. 예컨대, 이전에 설명된 바와같이, 이미지 센서 시스템에 의해 캡처된 각각의 이미지는 하나 이상의 패턴들을 캡처할 수 있다. 하나 이상의 패턴들의 하나 이상의 지점들에 대응하는 이미지의 픽셀들이 식별되고 하나 이상의 패턴들의 로케이션 및/또는 포즈를 추정하는 데 사용될 수 있다. 일부 경우들에서, 이미지 내의 픽셀의 로케이션은 이미지에 의해 캡처되고 픽셀에 대응하는 패턴의 지점을 삼각 측량하기 위해 사용될 수 있다. 또 다른 예로서, 한 세트의 이미지 센서 시스템들에 의해 캡처되고 한 세트의 패턴들의 지점들에 대응하는 이미지들 내의 픽셀들의 로케이션은 한 세트의 패턴들의 각각의 패턴의 3D 로케이션 및 배향을 추정하기 위해 비교되고, 삼각 측량되며 그리고/또는 사용될 수 있다. 각각의 패턴의 3D 로케이션 및 배향은 또한 각각의 패턴의 상대적인 6DoF 포즈를 계산하는 데 사용될 수 있다.
[0118] 일부 예들에서, 패턴의 지점에 대응하는 각각의 픽셀의 로케이션(예컨대, 픽셀과 연관된 좌표 및/또는 지점)는 하나 이상의 평면들을 따라 (예컨대, 이미지 좌표 시스템의 하나 이상의 축들을 따라) 패턴의 지점에 투사되고, 패턴의 지점의 3D 포지션을 결정하기 위해 기준 좌표 시스템(예컨대, 세계 또는 동차 좌표 시스템)으로부터의 패턴의 지점의 투사와 비교될 수 있다. 일부 경우들에서, 이미지 내의 패턴 (및/또는 이미지 좌표 시스템)의 지점의 로케이션은 패턴의 지점의 3D 로케이션을 결정하기 위해 기준 좌표 시스템의 지점의 로케이션에 대해 평행 이동될 수 있다.
[0119] 더욱이, 일부 경우들에서, 이미지 내의 패턴 (및/또는 이미지 좌표 시스템)의 지점의 배향은 패턴의 지점의 3D 배향을 결정하기 위해 기준 좌표 시스템의 지점의 배향에 대해 회전될 수 있다. 패턴의 지점의 3D 로케이션 및 배향은 패턴의 6DoF 포즈를 추정하는 데 사용될 수 있다. 더욱이, 한 세트의 패턴들의 지점들의 3D 로케이션 및 배향은 한 세트의 패턴들의 상대적인 6DoF 포즈를 추정하는 데 사용될 수 있다. 본원에서 추가로 설명되는 바와 같이, 한 세트의 패턴들의 상대적인 6DoF 포즈는 또한 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150)의 6DoF 포즈를 결정하는 데 사용될 수 있다.
[0120] 일부 경우들에서, 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 단계는 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들(예컨대, X 좌표들, Y 좌표들, Z 좌표들)을 회전시킴으로써 한 세트의 패턴들의 3D 배향들을 결정하는 단계 및 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 평행 이동시킴으로써 한 세트의 패턴들의 3D 로케이션들을 결정하는 단계를 포함할 수 있다. 일부 예들에서, 3D 좌표들은 기준 3D 좌표들에 대해 회전될 수 있고, 3D 좌표들은 기준 3D 좌표들에 대해 평행 이동될 수 있다. 더욱이, 일부 예들에서, 각각의 패턴의 상대적인 포즈는 한 세트의 패턴들의 3D 배향들 및 한 세트의 패턴들의 3D 로케이션들에 기반할 수 있다. 또한, 각각의 패턴의 로케이션은 예컨대 한 세트의 패턴들의 3D 로케이션들의 개개의 3D 로케이션을 포함할 수 있다.
[0121] 일부 양상들에서, 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계는, 각각의 이미지 센서에 의해 캡처된 하나 이상의 이미지들에 기반하여, 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 단계, 및 한 세트의 패턴들의 각각의 패턴에서 하나 이상의 지점들을 식별하는 단계를 포함할 수 있다. 각각의 패턴에서 식별된 하나 이상의 지점들은 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응할 수 있다. 더욱이, 이전에 논의된 바와같이, 각각의 패턴의 공간의 로케이션 및 상대적인 포즈는 각각의 패턴의 하나 이상의 지점들에 기반하여 결정될 수 있다.
[0122] 다른 양상들에서, 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계는, 각각의 이미지 센서에 의해 캡처된 하나 이상의 이미지들에 기반하여, 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 단계, 각각의 내부 패턴에 대해, 더 작은 내부 패턴을 검출하는 단계, 및 각각의 더 작은 내부 패턴에서 하나 이상의 지점들을 식별하는 단계를 포함할 수 있다. 하나 이상의 지점들은 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응할 수 있으며, 각각의 패턴의 공간의 로케이션 및 상대적인 포즈는 각각의 더 작은 내부 패턴의 하나 이상의 지점들에 기반할 수 있다.
[0123] 블록(708)에서, 방법(700)은 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계를 포함할 수 있다. 예컨대, 각각의 패턴의 6DoF 포즈는 제2 디바이스(예컨대, 메인 프로세싱 시스템(100))의 6DoF 포즈 및/또는 제1 디바이스(예컨대, 보조 시스템(150))의 상대적인 6DoF 포즈를 결정하는 데 사용될 수 있다. 일부 경우들에서, 제2 디바이스(예컨대, 메인 프로세싱 시스템(100)) 및 제1 디바이스(예컨대, 보조 시스템(150))의 6DoF 포즈는 제1 및 제2 디바이스들의 상대적인 6DoF 포즈들을 획득하기 위해 서로에 대해 계산될 수 있다. 일부 예들에서, 제1 및 제2 디바이스들의 상대적인 6DoF 포즈들은 XR 경험, 이를테면 제2 디바이스 상에서 실행되는 XR 게임, 제2 디바이스 상에서 실행되는 XR 쇼핑 애플리케이션, 제2 디바이스 상에서 실행되는 XR 모델링 애플리케이션, 제2 디바이스 상에서 실행되는 XR 의료 애플리케이션 등에서 제1 및 제2 디바이스들의 이동들, 포즈들, 상호작용들, 표현들 등을 조정하고 그리고/또는 관련시키는 데 사용될 수 있다. 일부 예들에서, 제1 및 제2 디바이스들의 상대적인 6DoF 포즈들은 다양한 추적 및 로컬리제이션 기반 동작들, 이를테면 예컨대 충돌 회피, 내비게이션, 매핑, 실세계 객체들과의 상호작용들, 자율 디바이스 동작들 또는 태스크(task)들 등을 수행하는 데 사용될 수 있다.
[0124] 일부 경우들에서, 제2 디바이스에 대한 제1 디바이스의 포즈는 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들에 추가로 기반하여 결정될 수 있다. 예컨대, 제1 디바이스 상의 이미지 센서 시스템들은 특정 거리들, 배향들, 로케이션들, 분리 각도 등으로 제1 디바이스 상에 구성될 수 있다. 이러한 정보는 알려져 있어서, 제1 디바이스에서 상대적인 포즈들을 결정하는 데 사용될 수 있다. 제1 디바이스 상의 이미지 센서 시스템들의 상대적인 포즈들은 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈 및/또는 제2 디바이스에 대한 제1 디바이스의 포즈를 계산하기 위한 추가 파라미터들로서 사용될 수 있다.
[0125] 일부 예들에서, 방법(700)은 한 세트의 이미지 센서 시스템에 의해 캡처된 장면(예컨대, 하나 이상의 이미지들의 장면)과 연관된 공간의 하나 이상의 지점들의 3D 좌표들을 결정하는 단계, 및 공간의 하나 이상의 지점들의 3D 좌표들 및 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들에 기반하여, 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들을 결정하는 단계를 포함할 수 있다. 일부 예들에서, 제2 디바이스에 대한 제1 디바이스의 포즈는 제1 디바이스 상의 한 세트의 이미지 센서들의 상대적인 3D 포즈들에 추가로 기반할 수 있다. 더욱이, 일부 경우들에서, 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들은 예컨대 3D 공간에서의 상대적인 6DoF 포즈들일 수 있다.
[0126] 일부 양상들에서, 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계는 제1 디바이스에 대한 제2 디바이스의 포즈를 결정하는 단계를 포함할 수 있다. 제1 디바이스의 포즈 및 제2 디바이스의 포즈는 예컨대 상대적인 6DoF 포즈들일 수 있다.
[0127] 일부 양상들에서, 방법(700)은, 한 세트의 이미지 센서 시스템들의 하나 이상의 이미지 센서 시스템들에 의해 캡처된 하나 이상의 추가 이미지들에 기반하여, 하나 이상의 추가 이미지들에 캡처된 객체 상의 하나 이상의 추가 패턴들을 검출하는 단계, 객체 상의 하나 이상의 추가 패턴들에 대응하는 하나 이상의 픽셀들을 하나 이상의 추가 이미지들에서 결정하는 단계, 및 하나 이상의 픽셀들에 기반하여, 제1 디바이스의 6DoF 포즈 및/또는 제2 디바이스의 6DoF 포즈에 대한 객체의 추가 6DoF 포즈를 결정하는 단계를 포함할 수 있다. 일부 경우들에서, 객체는 예컨대 벽, 디스플레이 디바이스, 비디오 게임 콘솔, 가구, 기기, 가정 용품 등일 수 있다.
[0128] 일부 예들에서, 방법(700)은 하나 이상의 컴퓨팅 디바이스들 또는 장치들에 의해 수행될 수 있다. 하나의 예시적인 예에서, 방법(700)은 도 1에 도시된 메인 프로세싱 시스템(100) 및/또는 보조 시스템(150) 및/또는 도 8에 도시된 컴퓨팅 디바이스 아키텍처(800)를 갖는 하나 이상의 컴퓨팅 디바이스들에 의해 수행될 수 있다. 일부 경우들에서, 그러한 컴퓨팅 디바이스 또는 장치는 프로세서, 마이크로프로세서, 마이크로컴퓨터, 또는 방법(700)의 단계들을 수행하도록 구성된 디바이스의 다른 컴포넌트를 포함할 수 있다. 일부 예들에서, 이러한 컴퓨팅 디바이스 또는 장치는 이미지 데이터를 캡처하도록 구성된 하나 이상의 센서들을 포함할 수 있다. 예컨대, 컴퓨팅 디바이스는 스마트폰, 헤드-장착 디스플레이, 모바일 디바이스 또는 다른 적절한 디바이스를 포함할 수 있다. 일부 예들에서, 이러한 컴퓨팅 디바이스 또는 장치는 하나 이상의 이미지들 또는 비디오들을 캡처하도록 구성된 카메라를 포함할 수 있다. 일부 경우들에서, 이러한 컴퓨팅 디바이스는 이미지들을 디스플레이하기 위한 디스플레이를 포함할 수 있다. 일부 예들에서, 하나 이상의 센서들 및/또는 카메라는 컴퓨팅 디바이스와 분리되어 있으며, 이 경우에 컴퓨팅 디바이스는 감지된 데이터를 수신한다. 이러한 컴퓨팅 디바이스는 데이터를 통신하도록 구성된 네트워크 인터페이스를 더 포함할 수 있다.
[0129] 컴퓨팅 디바이스의 컴포넌트들은 회로부로 구현될 수 있다. 예컨대, 본원에서 설명된 다양한 동작들을 수행하기 위해, 컴포넌트들은 전자 회로들 또는 다른 전자 하드웨어 ― 이들은 하나 이상의 프로그램 가능 전자 회로들(예컨대, 마이크로프로세서들, GPU(graphics processing unit)들, DSP(digital signal processor)들, CPU(central processing unit)들 및/또는 다른 적절한 전자 회로들)을 포함할 수 있음 ―을 포함하고 그리고/또는 이들에 의해 구현될 수 있으며, 그리고/또는 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고 그리고/또는 이들에 의해 구현될 수 있다. 컴퓨팅 디바이스는 (출력 디바이스의 예로서 또는 출력 디바이스에 부가하여) 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 더 포함할 수 있다. 네트워크 인터페이스는 인터넷 프로토콜(IP) 기반 데이터 또는 다른 타입의 데이터를 통신 및/또는 수신하도록 구성될 수 있다.
[0130] 방법(700)은 논리 흐름도로서 예시되며, 이의 동작들은 하드웨어, 컴퓨터 명령들 또는 이들의 조합으로 구현될 수 있는 일련의 동작을 나타낸다. 컴퓨터 명령들의 맥락에서, 동작들은 하나 이상의 프로세서들에 의해 실행될 때 인용된 동작들을 수행하는, 하나 이상의 컴퓨터-판독 가능 저장 매체들 상에 저장된 컴퓨터-실행 가능 명령들을 나타낸다. 일반적으로, 컴퓨터-실행가능 명령들은 특정 기능들을 수행하거나 또는 특정 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 설명된 동작들 중 임의의 수의 동작들은 프로세스들을 구현하도록 임의의 순서로 그리고/또는 병렬로 조합될 수 있다.
[0131] 추가로, 방법(700)은 실행 가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있고, 하나 이상의 프로세서들 상에서 집합적으로 실행되는 코드(예컨대, 실행 가능한 명령들, 하나 이상의 컴퓨터 프로그램들 또는 하나 이상의 애플리케이션들)로서, 하드웨어에 의해 또는 이들의 조합들에 의해 구현될 수 있다. 앞서 논의된 바와같이, 코드는 예컨대 하나 이상의 프로세서들에 의해 실행 가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터-판독 가능 또는 머신-판독 가능 저장 매체 상에 저장될 수 있다. 컴퓨터-판독 가능 또는 머신-판독 가능 저장 매체는 비-일시적일 수 있다.
[0132] 도 8은 본원에서 설명된 다양한 기법들을 구현할 수 있는 예시적인 컴퓨팅 디바이스의 예시적인 컴퓨팅 디바이스 아키텍처(800)를 예시한다. 예컨대, 컴퓨팅 디바이스 아키텍처(800)는 도 1에 도시된 메인 프로세싱 시스템(100)의 적어도 일부 부분들을 구현할 수 있으며, 본원에서 설명된 바와같이 ToF 신호 프로세싱 동작들을 수행할 수 있다. 컴퓨팅 디바이스 아키텍처(800)의 컴포넌트들은 버스와 같은 연결부(805)를 사용하여 서로 전기 통신하는 것으로 도시되어 있다. 예시적인 컴퓨팅 디바이스 아키텍처(800)는 프로세싱 유닛(CPU 또는 프로세서)(810) 및 컴퓨팅 디바이스 연결부(805)를 포함하며, 컴퓨팅 디바이스 연결부(805)는 컴퓨팅 디바이스 메모리(815), 이를테면 ROM(read only memory)(820) 및 RAM(random access memory)(825)을 포함하는 다양한 컴퓨팅 디바이스 컴포넌트들을 프로세서(810)에 커플링한다.
[0133] 컴퓨팅 디바이스 아키텍처(800)는 프로세서(810)와 직접 연결되거나, 프로세서(810)에 매우 근접하거나 또는 프로세서(810)의 일부로서 통합된 고속 메모리의 캐시를 포함할 수 있다. 컴퓨팅 디바이스 아키텍처(800)는 프로세서(810)에 의한 빠른 액세스를 위해 메모리(815) 및/또는 저장 디바이스(830)로부터의 데이터를 캐시(812)에 복사할 수 있다. 이러한 방식으로, 캐시는 데이터를 기다리는 동안 프로세서(810)의 지연들을 방지하는 성능 부스트(performance boost)를 제공할 수 있다. 이러한 모듈들 및 다른 모듈들은 다양한 액션들을 수행하도록 프로세서(810)를 제어하거나 프로세서(810)를 제어하도록 구성될 수 있다. 다른 컴퓨팅 디바이스 메모리(815)가 또한 사용에 이용 가능할 수 있다. 메모리(815)는 상이한 성능 특성들을 갖는 다수의 상이한 타입들의 메모리를 포함할 수 있다. 프로세서(810)는 임의의 범용 프로세서 및 저장 디바이스(830)에 저장되고 프로세서(810)를 제어하도록 구성된 하드웨어 또는 소프트웨어 서비스뿐만 아니라 소프트웨어 명령이 프로세서 디자인에 통합되는 특수-목적 프로세서를 포함할 수 있다. 프로세서(810)는 다수의 코어들 또는 프로세서들, 버스, 메모리 컨트롤러, 캐시 등을 포함하는 독립형(self-contained) 시스템일 수 있다. 멀티-코어 프로세서는 대칭적 또는 비대칭적일 수 있다.
[0134] 컴퓨팅 디바이스 아키텍처(800)와의 사용자 상호 작용을 가능하게 하기 위해, 입력 디바이스(845)는 임의의 수의 입력 메커니즘들, 이를테면 음성용 마이크로폰, 제스처 또는 그래픽 입력용 터치-감지 스크린, 키보드, 마우스, 모션 입력, 음성 등을 나타낼 수 있다. 출력 디바이스(835)는 또한 당업자에게 알려진 다수의 출력 메커니즘들, 이를테면 디스플레이, 프로젝터, 텔레비전, 스피커 디바이스 중 하나 이상일 수 있다. 일부 사례들에서, 멀티모달(multimodal) 컴퓨팅 디바이스들은 사용자가 컴퓨팅 디바이스 아키텍처(800)와 통신하기 위해 다수의 타입들의 입력을 제공하는 것을 가능하게 할 수 있다. 통신 인터페이스(840)는 일반적으로 사용자 입력 및 컴퓨팅 디바이스 출력을 통제하고 관리할 수 있다. 임의의 특정 하드웨어 어레인지먼트 상에서 동작하는 데 있어서 제약이 존재하지 않으며, 이에 따라 여기에서의 기본적인 특징들은 그들이 개발됨에 따라 개선된 하드웨어 또는 펌웨어 어레인지먼트를 위해 용이하게 대체될 수 있다.
[0135] 저장 디바이스(830)는 비-휘발성 메모리이며, 하드 디스크, 또는 컴퓨터가 액세스할 수 있는 데이터를 저장할 수 있는 다른 타입들의 컴퓨터 판독 가능 매체들, 이를테면 자기 카세트들, 플래시 메모리 카드들, 고체 상태 메모리 디바이스들, DVD(digital versatile disk)들, 카트리지들, RAM(random access memory)들(825), ROM(read only memory)(820) 및 이들의 하이브리드들일 수 있다. 저장 디바이스(830)는 프로세서(810)를 제어하기 위한 소프트웨어, 코드, 펌웨어 등을 포함할 수 있다. 다른 하드웨어 또는 소프트웨어 모듈들이 고려된다. 저장 디바이스(830)는 컴퓨팅 디바이스 연결부(805)에 연결될 수 있다. 일 양상에서, 특정 기능을 수행하는 하드웨어 모듈은 기능을 수행하는데 필요한 하드웨어 컴포넌트들, 이를테면 프로세서(810), 연결부(805), 출력 디바이스(835) 등과 관련하여 컴퓨터-판독 가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다.
[0136] “컴퓨터-판독 가능 매체”라는 용어는 휴대용 또는 비-휴대용 저장 디바이스들, 광 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 반송할 수 있는 다양한 다른 매체들을 포함하지만, 이에 제한되지는 않는다. 컴퓨터-판독 가능 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결부들을 통해 전파되는 반송파들 및/또는 일시적 전자 신호들을 포함하지 않는 비-일시적 매체를 포함할 수 있다. 비-일시적 매체의 예들은 자기 디스크 또는 테이프, 광 저장 매체들, 이를테면 CD(Compact Disk) 또는 DVD(Digital Versatile Disk), 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만 이에 제한되지 않는다. 컴퓨터-판독 가능 매체는 코드 및/또는 머신-실행 가능 명령들을 저장할 수 있으며, 이들은 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트(statement)들의 임의의 조합을 나타낼 수 있다. 코드 세그먼트는, 정보, 데이터, 독립변수(argument)들, 파라미터들, 또는 메모리 콘텐츠들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 독립변수들, 파라미터들, 데이터 등은, 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩, 또는 송신될 수 있다.
[0137] 일부 실시예들에서, 컴퓨터-판독 가능 저장 디바이스들, 매체들 및 메모리들은 비트 스트림 등을 포함하는 케이블 또는 무선 신호를 포함할 수 있다. 그러나, 언급될 때, 비-일시적 컴퓨터-판독 가능 저장 매체는 에너지, 캐리어 신호들, 전자기파들 및 신호 자체와 같은 매체들을 명시적으로 배제한다.
[0138] 특정한 세부사항들은 본원에서 제공된 실시예들 및 예들의 완전한 이해를 제공하기 위해 앞의 설명에서 제공된다. 그러나, 실시예들이 이러한 특정 세부사항들 없이도 실시될 수 있음이 당업자들에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 사례들에서, 본 기술은 소프트웨어 또는 하드웨어와 소프트웨어의 조합들로 구현된 방법에서 디바이스들, 디바이스 컴포넌트들, 단계들 또는 루틴들을 포함하는 개별 기능 블록들을 포함하는 것으로 제시될 수 있다. 도면들에 도시되고 그리고/또는 본원에서 설명된 것들과 다른 추가 컴포넌트들이 사용될 수 있다. 예컨대, 회로들, 시스템들, 네트워크들, 프로세스들 및 다른 컴포넌트들은 불필요한 세부사항으로 실시예들을 모호하게 하지 않도록 하기 위해 블록도 형태의 컴포넌트들로서 도시될 수 있다. 다른 사례들에서, 잘-알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기법들은 실시예들을 불명료하게 하는 것을 회피하기 위해 불필요한 세부사항 없이 도시될 수 있다.
[0139] 개별 실시예들은 순서도, 흐름도, 데이터 흐름도, 구조도 또는 블록도로서 묘사되는 프로세스 또는 방법으로서 앞서 설명될 수 있다. 흐름도가 순차적인 프로세스로서 동작들을 설명할 수 있지만, 동작들의 대부분은 병렬로 또는 동시에 수행될 수 있다. 더욱이, 동작들의 순서는 재배열될 수 있다. 프로세스는 그의 동작들이 완료되면 종료되지만, 도면에 포함되지 않은 추가 단계들을 가질 수 있다. 프로세스는, 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 때, 프로세스의 종료는 그 함수의 호출(calling) 함수 또는 메인 함수로의 리턴에 대응할 수 있다.
[0140] 앞서 설명된 예들에 따른 프로세스들 및 방법들은 컴퓨터-판독 가능 매체들에 저장되거나 또는 그렇지 않으면 이로부터 이용 가능한 컴퓨터-실행 가능 명령들을 사용하여 구현될 수 있다. 이러한 명령들은 예컨대 범용 컴퓨터, 특수-목적 컴퓨터 또는 프로세싱 디바이스가 특정 기능 또는 기능들의 그룹을 수행하게 하거나 또는 그렇지 않으면 특정 기능 또는 기능들의 그룹을 수행하도록 범용 컴퓨터, 특수-목적 컴퓨터 또는 프로세싱 디바이스를 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 자원들의 부분들은 네트워크를 통해 액세스 가능할 수 있다. 컴퓨터 실행 가능 명령들은 예컨대 바이너리들, 중간 포맷 명령들, 이를테면 어셈블리 언어, 펌웨어, 소스 코드일 수 있다. 명령들, 사용된 정보, 및/또는 설명된 예들에 따른 방법들 동안 생성된 정보를 저장하는 데 사용될 수 있는 컴퓨터-판독 가능 매체들의 예들은 자기 또는 광 디스크들, 플래시 메모리, 비-휘발성 메모리를 구비하는 USB 디바이스들, 네트워킹된 저장 디바이스들 등을 포함한다.
[0141] 이러한 개시내용들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 폼 팩터를 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예컨대, 컴퓨터-프로그램 제품)은 컴퓨터-판독 가능 또는 머신-판독 가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 태스크들을 수행할 수 있다. 폼 팩터들의 전형적인 예들은 랩톱들, 스마트폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 퍼스널 컴퓨터들, PDA(personal digital assistant)들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본원에서 설명된 기능은 또한 주변 디바이스들 또는 애드-인 카드(add-in card)들에 구현될 수 있다. 이러한 기능은 또한 추가 예로서 단일 디바이스에서 실행되는 상이한 칩들 또는 상이한 프로세스들 사이에서 회로 기판 상에서 구현될 수 있다.
[0142] 명령들, 이러한 명령들을 전달하기 위한 매체들, 이러한 명령들을 실행하기 위한 컴퓨팅 자원들 및 이러한 컴퓨팅 자원들을 지원하기 위한 다른 구조들은 본 개시내용에 설명된 기능들을 제공하기 위한 예시적인 수단이다.
[0143] 전술한 설명에서, 본 출원의 양상들은 이의 특정 실시예들을 참조하여 설명되지만, 당업자는 본 출원이 이에 제한되지 않음을 인식할 것이다. 따라서, 본 출원의 예시적인 실시예들이 본원에서 상세히 설명되었지만, 본 발명의 개념들은 달리 다양하게 구현되고 이용될 수 있으며, 첨부된 청구항들이 종래의 기술에 의해 제한되는 것을 제외하고 이러한 변형들을 포함하는 것으로 해석되도록 의도된다는 것이 이해되어야 한다. 앞서 설명된 출원의 다양한 특징들 및 양상들은 개별적으로 또는 공동으로 사용될 수 있다. 게다가, 실시예들은 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않고 본원에서 설명된 것들 이외의 임의의 수의 환경들 및 애플리케이션들에서 활용될 수 있다. 따라서, 본 명세서 및 도면들은 제한적이기 보다는 예시적인 것으로 간주되어야 한다. 예시의 목적들을 위해, 방법들은 특정 순서로 설명되었다. 대안적인 실시예들에서, 방법들은 설명된 순서와 상이한 순서로 수행될 수 있다는 것이 인식되어야 한다.
[0144] 당업자는 본원에서 사용되는 미만(“<”) 및 초과(“>”)의 심볼들 또는 용어가 각각 본 설명의 범위를 벗어나지 않고 이하(“≤”) 및 이상(“≥”)의 심볼들로 대체될 수 있다는 것을 인식할 것이다.
[0145] 컴포넌트들이 특정 동작들을 수행하도록 "구성"된 것으로 설명되는 경우에, 이러한 구성은 예컨대 동작을 수행하도록 전자 회로들 또는 다른 하드웨어를 설계하거나, 동작을 수행하도록 프로그램 가능 전자 회로들(예컨대, 마이크로프로세서들 또는 다른 적절한 전자 회로들)를 프로그래밍하거나 또는 이들의 임의의 조합을 수행함으로써 달성될 수 있다.
[0146] "~에 커플링된"이라는 문구는 직접적으로 또는 간접적으로 다른 컴포넌트에 물리적으로 연결된 임의의 컴포넌트, 및/또는 직접적으로 또는 간접적으로 다른 컴포넌트와 통신하는 (예컨대, 유선 또는 무선 연결을 통해 및/또는 다른 적절한 통신 인터페이스를 통해 다른 컴포넌트에 연결된) 임의의 컴포넌트를 지칭한다.
[0147] 세트 중 "적어도 하나" 및/또는 세트 중 "하나 이상"을 인용하는 청구항 언어 또는 다른 언어는 세트 중 하나의 멤버 또는 세트 중 (임의의 조합의) 다수의 멤버들이 그 청구항을 만족함을 표시한다. 예컨대, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 인용하는 청구항 언어는 A, B 또는 A와 B를 의미한다. 또 다른 예에서, "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나"를 인용하는 청구항 언어는 A, B, C, 또는 A와 B, 또는 A와 C, 또는 B와 C, 또는 A와 B와 C를 의미한다. 세트 "중 적어도 하나" 및/또는 세트 중 "하나 이상"이라는 언어는 세트를 세트에 나열된 아이템들로 제한하지 않는다. 예컨대, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 인용하는 청구항 언어는 A, B 또는 A와 B를 의미할 수 있으며, A 및 B의 세트에 나열되지 않은 아이템들을 추가로 포함할 수 있다.
[0148] 본원에 개시된 예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이 둘의 조합들로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호 호환성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능적 관점에서 앞서 설명되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 대해 부과된 디자인 제약들에 의존한다. 당업자는 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 출원의 범위를 벗어나는 것으로 해석되어서는 안 된다.
[0149] 본원에 설명된 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 이러한 기법들은 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들, 또는 무선 통신 디바이스 핸드셋들 및 다른 디바이스들의 애플리케이션을 포함하여 다수의 용도들을 갖는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 특징들은 집적된 로직 디바이스에서 함께 구현되거나 또는 별개이지만 상호운용가능한 로직 디바이스들로서 별도로 구현될 수 있다. 소프트웨어로 구현되면, 기법들은 실행될 때 앞서 설명된 방법들, 알고리즘들 및/또는 동작들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터-판독 가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수 있다. 컴퓨터-판독 가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터-판독 가능 매체는 메모리 또는 데이터 저장 매체들, 이를테면 RAM(random access memory), 이를테면 SDRAM(synchronous dynamic random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리, 자기 또는 광 데이터 저장 매체들 등을 포함할 수 있다. 부가적으로 또는 대안적으로, 기법들은 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 반송하거나 또는 통신하고, 전파된 신호들 또는 파들과 같이 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독 가능 통신 매체에 의해 적어도 부분적으로 실현될 수 있다.
[0150] 프로그램 코드는 하나 이상의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 또는 다른 균등한 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수 있는 프로세서에 의해 실행될 수 있다. 그러한 프로세서는 본 개시내용에 설명된 기법들 중 임의의 기법을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안으로 프로세서는 임의의 종래의 프로세서, 컨트롤러, 마이크로컨트롤러 또는 상태 머신일 수 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예컨대 DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 따라서, 본원에서 사용되는 “프로세서”라는 용어는 전술한 구조 중 임의의 구조, 전술한 구조의 임의의 조합, 또는 본원에서 설명된 기법들의 구현에 적절한 임의의 다른 구조 또는 장치를 지칭할 수 있다.

Claims (30)

  1. 제1 디바이스 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처(capture)된 하나 이상의 이미지들을 수신하는 단계 ― 상기 하나 이상의 이미지들은 제2 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 상기 제1 디바이스는 상기 제2 디바이스보다 낮은 전력 요건들을 가짐 ―;
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계;
    상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션(location) 및 상대적인 포즈(relative pose)를 결정하는 단계; 및
    상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈에 기반하여, 상기 제2 디바이스에 대한 상기 제1 디바이스의 포즈를 결정하는 단계를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 적어도 하나의 이미지 센서 시스템은 한 세트의 이미지 센서 시스템들을 포함하고, 상기 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계는 상기 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향(orientation)들에 추가로 기반하는, 방법.
  3. 제2 항에 있어서,
    상기 한 세트의 이미지 센서 시스템들에 의해 캡처된 장면과 연관된, 공간의 하나 이상의 지점들의 3차원(3D) 좌표들을 결정하는 단계; 및
    상기 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들 및 상기 공간의 하나 이상의 지점들의 3D 좌표들에 기반하여, 상기 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들을 결정하는 단계를 더 포함하며, 상기 제2 디바이스에 대한 상기 제1 디바이스의 포즈는 상기 제1 디바이스 상의 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들에 추가로 기반하는, 방법.
  4. 제1 항에 있어서,
    상기 제2 디바이스에 대한 상기 제1 디바이스의 포즈는 6DoF(six degrees of freedom) 포즈를 포함하고, 상기 한 세트의 패턴들의 미리 결정된 구성은 상기 제2 디바이스 상의 각각의 패턴의 상대적인 로케이션, 상기 제2 디바이스 상의 각각의 패턴의 상대적인 배향, 각각의 패턴의 형상, 각각의 패턴의 크기, 각각의 패턴의 특성, 및 상기 한 세트의 패턴들의 배열 중 적어도 하나를 포함하는, 방법.
  5. 제1 항에 있어서,
    상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 단계는,
    상기 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 회전시킴으로써 상기 한 세트의 패턴들의 3D 배향들을 결정하는 단계 ― 상기 3D 좌표들은 기준 3D 좌표들에 대해 회전됨 ―; 및
    상기 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 상기 공간의 3D 좌표들을 평행 이동(translate)시킴으로써 상기 한 세트의 패턴들의 3D 로케이션들을 결정하는 단계를 포함하며, 상기 3D 좌표들은 상기 기준 3D 좌표들에 대해 평행 이동되는, 방법.
  6. 제5 항에 있어서,
    상기 각각의 패턴의 상대적인 포즈는 상기 한 세트의 패턴들의 3D 배향들 및 상기 한 세트의 패턴들의 3D 로케이션들에 기반하며, 상기 각각의 패턴의 로케이션은 상기 한 세트의 패턴들의 3D 로케이션들의 개개의 3D 로케이션을 포함하는, 방법.
  7. 제1 항에 있어서,
    상기 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계는 상기 제1 디바이스에 대한 상기 제2 디바이스의 포즈를 결정하는 단계를 더 포함하고, 상기 제1 디바이스의 포즈는 제1 6DoF 포즈를 포함하고, 상기 제2 디바이스의 포즈는 제2 6DoF 포즈를 포함하는, 방법.
  8. 제1 항에 있어서,
    상기 제1 디바이스는 핸드 컨트롤러 디바이스를 포함하고, 상기 제2 디바이스는 헤드-장착 디스플레이 디바이스를 포함하는, 방법.
  9. 제1 항에 있어서,
    상기 적어도 하나의 이미지 센서 시스템은 저-전력 이미지 센서 시스템을 포함하며, 상기 한 세트의 패턴들의 각각의 패턴은 적외선 스펙트럼 및 가시광선 스펙트럼 중 적어도 하나에서 가시적인(visible), 방법.
  10. 제1 항에 있어서,
    상기 한 세트의 패턴들 중 적어도 하나의 패턴은 인코딩된 머신-판독 가능 정보를 포함하고, 상기 인코딩된 머신-판독 가능 정보는 상기 적어도 하나의 패턴과 연관된 로케이션 정보, 상기 적어도 하나의 패턴과 연관된 식별자, 고유 코드, 세팅(setting), 및 상기 제1 디바이스 및 상기 제2 디바이스 중 적어도 하나 상에서 호스팅되는 확장 현실 애플리케이션(extended reality application)과 연관된 사용자 계정에 대한 정보 중 적어도 하나를 포함하는, 방법.
  11. 제1 항에 있어서,
    상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계는,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 상기 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 단계; 및
    상기 한 세트의 패턴들의 각각의 패턴에서 하나 이상의 지점들을 식별하는 단계를 포함하며, 상기 하나 이상의 지점들은 상기 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며,
    상기 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 단계는 각각의 패턴의 상기 하나 이상의 지점들에 기반하는, 방법.
  12. 제1 항에 있어서,
    상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 단계는,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 상기 제2 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 단계;
    각각의 패턴에 대해, 더 작은 내부 패턴을 검출하는 단계; 및
    각각의 더 작은 내부 패턴에서 하나 이상의 지점들을 식별하는 단계를 포함하며, 상기 하나 이상의 지점들은 상기 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며,
    상기 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 단계는 각각의 더 작은 내부 패턴의 상기 하나 이상의 지점들에 기반하는, 방법.
  13. 제1 항에 있어서,
    상기 제2 디바이스에 대한 제1 디바이스의 포즈를 결정하는 단계는 상기 제2 디바이스에 대한 상기 제1 디바이스의 6DoF 포즈 및 상기 제1 디바이스에 대한 상기 제2 디바이스의 6DoF 포즈를 결정하는 단계를 포함하고,
    상기 방법은,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 추가 이미지들에 기반하여, 상기 하나 이상의 추가 이미지들에 캡처된 객체 상의 하나 이상의 추가 패턴들을 검출하는 단계;
    상기 객체 상의 하나 이상의 추가 패턴들에 대응하는 하나 이상의 픽셀들을 상기 하나 이상의 추가 이미지들에서 결정하는 단계; 및
    상기 하나 이상의 픽셀들에 기반하여, 상기 제1 디바이스의 6DoF 포즈 및 상기 제2 디바이스의 6DoF 포즈 중 적어도 하나에 대한 상기 객체의 추가 6DoF 포즈를 결정하는 단계를 더 포함하는, 방법.
  14. 제13 항에 있어서,
    상기 객체는 벽, 디스플레이 디바이스, 비디오 게임 콘솔, 가구, 기기 또는 가정 용품을 포함하는, 방법.
  15. 장치로서,
    메모리; 및
    상기 메모리에 커플링된 하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    상기 장치 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하며 ― 상기 하나 이상의 이미지들은 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 상기 장치는 상기 디바이스보다 낮은 전력 요건들을 가짐 ―;
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 상기 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하며;
    상기 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하며; 그리고
    상기 한 세트의 패턴들의 각각의 패턴의 공간의 상기 로케이션 및 상대적인 포즈에 기반하여, 상기 디바이스에 대한 상기 장치의 포즈를 결정하도록 구성되는, 장치.
  16. 제15 항에 있어서,
    상기 적어도 하나의 이미지 센서 시스템은 한 세트의 이미지 센서 시스템들을 포함하고, 상기 디바이스에 대한 장치의 포즈를 결정하는 것은 상기 장치 상의 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들에 추가로 기반하는, 장치.
  17. 제16 항에 있어서,
    상기 하나 이상의 프로세서들은,
    상기 한 세트의 이미지 센서 시스템들에 의해 캡처된 장면과 연관된, 공간의 하나 이상의 지점들의 3차원(3D) 좌표들을 결정하며; 그리고
    상기 한 세트의 이미지 센서 시스템들의 미리 결정된 상대적인 로케이션들 및 배향들 및 상기 공간의 하나 이상의 지점들의 3D 좌표들에 기반하여, 상기 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들을 결정하도록 구성되며, 상기 디바이스에 대한 상기 장치의 포즈는 상기 한 세트의 이미지 센서 시스템들의 상대적인 3D 포즈들에 추가로 기반하는, 장치.
  18. 제15 항에 있어서,
    상기 디바이스에 대한 상기 장치의 포즈는 6DoF(six degrees of freedom) 포즈를 포함하고, 상기 한 세트의 패턴들의 미리 결정된 구성은 상기 디바이스 상의 각각의 패턴의 상대적인 로케이션, 상기 디바이스 상의 각각의 패턴의 상대적인 배향, 각각의 패턴의 형상, 각각의 패턴의 크기, 각각의 패턴의 특성, 및 상기 한 세트의 패턴들의 배열 중 적어도 하나를 포함하는, 장치.
  19. 제15 항에 있어서,
    상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은,
    상기 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 회전시킴으로써 상기 한 세트의 패턴들의 3D 배향들을 결정하는 것 ― 상기 3D 좌표들은 기준 3D 좌표들에 대해 회전됨 ―; 및
    상기 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 대응하는 공간의 3D 좌표들을 평행 이동시킴으로써 상기 한 세트의 패턴들의 3D 로케이션들을 결정하는 것을 포함하며, 상기 3D 좌표들은 상기 기준 3D 좌표들에 대해 평행 이동되는, 장치.
  20. 제19 항에 있어서,
    상기 각각의 패턴의 상대적인 포즈는 상기 한 세트의 패턴들의 3D 배향들 및 상기 한 세트의 패턴들의 3D 로케이션들에 기반하며, 상기 각각의 패턴의 로케이션은 상기 한 세트의 패턴들의 3D 로케이션들의 개개의 3D 로케이션을 포함하는, 장치.
  21. 제15 항에 있어서,
    상기 디바이스에 대한 장치의 포즈를 결정하는 것은 상기 장치에 대한 상기 디바이스의 포즈를 결정하는 것을 더 포함하고, 상기 장치의 포즈는 제1 6DoF 포즈를 포함하고, 상기 디바이스의 포즈는 제2 6DoF 포즈를 포함하는, 장치.
  22. 제15 항에 있어서,
    상기 장치는 핸드 컨트롤러 디바이스이고, 상기 디바이스는 헤드-장착 디스플레이 디바이스를 포함하는, 장치.
  23. 제15 항에 있어서,
    상기 적어도 하나의 이미지 센서 시스템은 저-전력 이미지 센서 시스템을 포함하며, 상기 한 세트의 패턴들의 각각의 패턴은 적외선 스펙트럼 및 가시광선 스펙트럼 중 적어도 하나에서 가시적인, 장치.
  24. 제15 항에 있어서,
    상기 한 세트의 패턴들 중 적어도 하나의 패턴은 인코딩된 머신-판독 가능 정보를 포함하고, 상기 인코딩된 머신-판독 가능 정보는 상기 적어도 하나의 패턴과 연관된 로케이션 정보, 상기 적어도 하나의 패턴과 연관된 식별자, 고유 코드, 세팅, 및 상기 장치 및 상기 디바이스 중 적어도 하나 상에서 호스팅되는 확장 현실 애플리케이션과 연관된 사용자 계정에 대한 정보 중 적어도 하나를 포함하는, 장치.
  25. 제15 항에 있어서,
    상기 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 것은,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 상기 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 것; 및
    상기 한 세트의 패턴들의 각각의 패턴에서 하나 이상의 지점들을 식별하는 것을 포함하며, 상기 하나 이상의 지점들은 상기 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며,
    상기 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은 각각의 패턴의 상기 하나 이상의 지점들에 기반하는, 장치.
  26. 제15 항에 있어서,
    상기 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하는 것은,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들에 기반하여, 상기 디바이스 상의 한 세트의 패턴들로부터 각각의 패턴을 검출하는 것;
    각각의 패턴에 대해, 더 작은 내부 패턴을 검출하는 것; 및
    각각의 더 작은 내부 패턴에서 하나 이상의 지점들을 식별하는 것을 포함하며, 상기 하나 이상의 지점들은 상기 한 세트의 픽셀들의 하나 이상의 픽셀들에 대응하며,
    상기 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하는 것은 각각의 더 작은 내부 패턴의 하나 이상의 지점들에 기반하는, 장치.
  27. 제15 항에 있어서,
    상기 디바이스에 대한 장치의 포즈를 결정하는 것은 상기 디바이스에 대한 상기 장치의 6DoF 포즈 및 상기 장치에 대한 상기 디바이스의 6DoF 포즈를 결정하는 것을 포함하며,
    상기 하나 이상의 프로세서들은,
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 추가 이미지들에 기반하여, 상기 하나 이상의 추가 이미지들에 캡처된 객체 상의 하나 이상의 추가 패턴들을 검출하며;
    상기 객체 상의 하나 이상의 추가 패턴들에 대응하는 하나 이상의 픽셀들을 상기 하나 이상의 추가 이미지들에서 결정하며; 그리고
    상기 하나 이상의 픽셀들에 기반하여, 상기 장치의 6DoF 포즈 및 상기 디바이스의 6DoF 포즈 중 적어도 하나에 대한 상기 객체의 추가 6DoF 포즈를 결정하도록 구성되는, 장치.
  28. 제27 항에 있어서,
    상기 객체는 벽, 디스플레이 디바이스, 비디오 게임 콘솔, 가구, 기기 또는 가정 용품을 포함하는, 장치.
  29. 제15 항에 있어서,
    상기 장치는 모바일 디바이스인, 장치.
  30. 명령들이 저장된 비-일시적인 컴퓨터-판독 가능 저장 매체로서,
    상기 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    제1 디바이스 상의 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들을 수신하게 하며 ― 상기 하나 이상의 이미지들은 제2 디바이스 상의 미리 결정된 구성을 갖는 한 세트의 패턴들을 캡처하며, 상기 제1 디바이스는 상기 제2 디바이스보다 낮은 전력 요건들을 가짐 ―;
    상기 적어도 하나의 이미지 센서 시스템에 의해 캡처된 하나 이상의 이미지들로부터, 상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들을 결정하게 하며;
    상기 제2 디바이스 상의 한 세트의 패턴들에 대응하는 한 세트의 픽셀들에 기반하여, 상기 한 세트의 패턴들의 각각의 패턴의 공간의 로케이션 및 상대적인 포즈를 결정하게 하며; 그리고
    상기 한 세트의 패턴들의 각각의 패턴의 공간의 상기 로케이션 및 상대적인 포즈에 기반하여, 상기 제2 디바이스에 대한 상기 제1 디바이스의 포즈를 결정하게 하게 하는, 비-일시적인 컴퓨터-판독 가능 저장 매체.

KR1020227043491A 2020-06-17 2021-04-26 저전력 시각 추적 시스템들 KR20230024901A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/904,466 2020-06-17
US16/904,466 US20210398314A1 (en) 2020-06-17 2020-06-17 Low power visual tracking systems
PCT/US2021/029231 WO2021257186A1 (en) 2020-06-17 2021-04-26 Low power visual tracking systems

Publications (1)

Publication Number Publication Date
KR20230024901A true KR20230024901A (ko) 2023-02-21

Family

ID=75919449

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227043491A KR20230024901A (ko) 2020-06-17 2021-04-26 저전력 시각 추적 시스템들

Country Status (6)

Country Link
US (1) US20210398314A1 (ko)
EP (1) EP4168988A1 (ko)
KR (1) KR20230024901A (ko)
CN (1) CN115769261A (ko)
BR (1) BR112022024803A2 (ko)
WO (1) WO2021257186A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11522945B2 (en) * 2020-10-20 2022-12-06 Iris Tech Inc. System for providing synchronized sharing of augmented reality content in real time across multiple devices

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2513912B (en) * 2013-05-10 2018-01-24 Dyson Technology Ltd Apparatus for guiding an autonomous vehicle towards a docking station
EP3146729A4 (en) * 2014-05-21 2018-04-11 Millennium Three Technologies Inc. Fiducial marker patterns, their automatic detection in images, and applications thereof
EP3136392A1 (en) * 2015-08-25 2017-03-01 Thomson Licensing Method and system for embedding and retrieving information through marker transformation
US10996742B2 (en) * 2017-10-17 2021-05-04 Logitech Europe S.A. Input device for AR/VR applications
CN110494792B (zh) * 2018-03-07 2021-07-09 奇跃公司 外围设备的视觉跟踪
US11893789B2 (en) * 2018-11-15 2024-02-06 Magic Leap, Inc. Deep neural network pose estimation system
US20200364521A1 (en) * 2019-05-15 2020-11-19 Matterport, Inc. Trained network for fiducial detection

Also Published As

Publication number Publication date
US20210398314A1 (en) 2021-12-23
WO2021257186A1 (en) 2021-12-23
EP4168988A1 (en) 2023-04-26
CN115769261A (zh) 2023-03-07
BR112022024803A2 (pt) 2022-12-27

Similar Documents

Publication Publication Date Title
TW202201178A (zh) 低功率視覺追蹤系統
US11481923B2 (en) Relocalization method and apparatus in camera pose tracking process, device, and storage medium
US10614605B2 (en) Information processing apparatus, information processing method, and program for displaying a virtual object on a display
AU2018292610B2 (en) Method and system for performing simultaneous localization and mapping using convolutional image transformation
US10007349B2 (en) Multiple sensor gesture recognition
US20220358663A1 (en) Localization and Tracking Method and Platform, Head-Mounted Display System, and Computer-Readable Storage Medium
US11748913B2 (en) Modeling objects from monocular camera outputs
WO2015093130A1 (ja) 情報処理装置、情報処理方法およびプログラム
KR20220106063A (ko) 타겟 평면 검출 및 공간 추정을 위한 장치 및 방법
US20240045515A1 (en) Electronic device for tracking objects
US11514658B2 (en) Enhancing three-dimensional models using multi-view refinement
KR20230024901A (ko) 저전력 시각 추적 시스템들
US20220375110A1 (en) Augmented reality guided depth estimation
WO2022226432A1 (en) Hand gesture detection methods and systems with hand prediction
US11769258B2 (en) Feature processing in extended reality systems
US20230267691A1 (en) Scene change detection with novel view synthesis
US20230035360A1 (en) Mapping networked devices
US20240161418A1 (en) Augmented reality enhanced media
US20240153245A1 (en) Hybrid system for feature detection and descriptor generation
CN115880348B (zh) 一种人脸深度的确定方法、电子设备及存储介质
WO2022158834A1 (ko) 타겟 평면 검출 및 공간 추정을 위한 장치 및 방법
CN118043762A (en) Electronic device for tracking an object
CN117940956A (zh) 关键点检测和特征描述符计算
EP4341786A1 (en) Augmented reality guided depth estimation
WO2024097469A1 (en) Hybrid system for feature detection and descriptor generation

Legal Events

Date Code Title Description
A201 Request for examination