KR20210038659A - 2차원 이미지를 외삽하기 위해 깊이 정보를 사용하는 시스템 및 방법 - Google Patents

2차원 이미지를 외삽하기 위해 깊이 정보를 사용하는 시스템 및 방법 Download PDF

Info

Publication number
KR20210038659A
KR20210038659A KR1020217006142A KR20217006142A KR20210038659A KR 20210038659 A KR20210038659 A KR 20210038659A KR 1020217006142 A KR1020217006142 A KR 1020217006142A KR 20217006142 A KR20217006142 A KR 20217006142A KR 20210038659 A KR20210038659 A KR 20210038659A
Authority
KR
South Korea
Prior art keywords
frame
dimensional
motion vectors
depth information
composite
Prior art date
Application number
KR1020217006142A
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 KR20210038659A publication Critical patent/KR20210038659A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/139Format conversion, e.g. of frame-rate or size
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/366Image reproducers using viewer tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N2013/0074Stereoscopic image analysis
    • H04N2013/0085Motion estimation from stereoscopic image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2213/00Details of stereoscopic systems
    • H04N2213/003Aspects relating to the "2D+depth" image format

Abstract

개시된 컴퓨터 구현 방법은, (1) 진화하는 3D 장면 및 상기 진화하는 3D 장면 내의 요소들을 묘사하는 제1의 2D 프레임을 수신하는 단계, (2) 상기 진화하는 3D 장면 및 상기 요소들을 묘사하는 제2의 2D 프레임을 수신하는 단계, (3) 상기 제1의 2D 프레임 내의 요소의 좌표들로부터 상기 제2의 2D 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 각각 포함하는 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 2D 동작 벡터들을 유도하는 단계, (4) 상기 진화하는 3D 장면에 대한 깊이 정보를 수신하는 단계, (5) 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 단계, 및 (6) 상기 합성 2D 프레임을 사용자에게 디스플레이하는 단계를 포함할 수 있다. 다양한 다른 방법들, 시스템들, 및 컴퓨터 판독 가능 매체가 또한 개시된다.

Description

2차원 이미지를 외삽하기 위해 깊이 정보를 사용하는 시스템 및 방법
본 발명은 2차원(2D) 이미지들을 외삽하기 위해 깊이 정보를 사용하기 위한 시스템들 및 방법들에 관한 것이다.
가상 현실(VR) 및 증강 현실(AR) 헤드셋은 점점 더 많은 활동에 사용하기 위해 인기를 얻고 있다. 이러한 헤드셋은 시각적 정보를 사용자의 시야(field of view)에 통합하여 이들이 몰입형 3차원(3D) 가상 환경으로 들어갈 수 있도록 그들의 주변 환경을 강화한다. VR 및 AR 헤드셋은 종종 게임 및 기타 엔터테인먼트 목적으로 사용되지만, 이들은 또한 일반적으로 레크리에이션 이외의 목적으로도 이용될 수 있다: 예를 들어, 정부는 군사 훈련 시뮬레이션에 이들을 사용할 수 있고, 의사는 수술 연습에 이들을 사용할 수 있으며, 엔지니어는 시각화 도구로 이들을 사용할 수 있습니다. VR 및 AR 시스템은 또한 다양한 상황에서 개인들 간의 대인 상호 작용을 촉진하는 데 있어 그들의 유용성이 점차 인식되고 있다.
존재감을 일이키기에 충분히 빠른 속도로 납득할만하고 실제와 같은 VR 또는 AR 환경을 렌더링하는 것은 하드웨어 자원을 필요할 수 있다. 일반적으로, VR 및 AR 하드웨어는 콤팩트하고 전력 효율적이어야 하지만, 동시에 성능이 매우 우수해야 한다. VR 또는 AR 애플리케이션의 경우, 프레임(또는 정지 이미지)은 일반적으로 사용자의 움직임에 따라 생성되며, 느린 프레임 속도는 끊김(stutter)이나 깜박임(flicker)으로 인식될 수 있다. 그 결과, 많은 VR 또는 AR 애플리케이션들은 끊김이 없고 깜박임이 없는 비주얼을 생성하도록 높은 프레임 속도(예를 들어, 초당 90 프레임보다 많게)로 이상적으로 보여지게 된다. 이러한 이유로, VR 및 AR 애플리케이션들은 종종 VR 또는 AR 애플리케이션들을 이상적으로 보기 위해 제안될 수 있는 권장 하드웨어 사양들의 세트와 함께 제공된다. 안타깝게도 이러한 권장 하드웨어 사양들을 충족하고 높은 프레임 속도를 지원하는 현재의 VR 및 AR 시스템들은 많은 사람들 및/또는 조직들에게 접근 가능하지 않거나 가격 등에 있어 적절하지 않을 수 있다.
따라서, 본 개시는 높은 프레임 속도로 이상적으로 보여지는 VR 또는 AR 애플리케이션들이 더 낮은 프레임 속도로 보여지게 될 수 있도록 하는 시스템들 및 방법들에 대한 필요성을 파악하여 해결하며, 이는 사용자들로 하여금 가격 등에 더욱 적합한 최소 사양 하드웨어 및 시스템들에서 이들 애플리케이션들을 볼 수 있게 한다.
아래에서 더 상세히 설명되는 바와 같이, 본 개시는 2차원(2D) 이미지들을 외삽하기 위해 깊이 정보를 사용하기 위한 시스템들 및 방법들을 설명한다. 일례에서, 2D 이미지들을 외삽하기 위해 깊이 정보를 사용하는 컴퓨터 구현 방법은, (1) 진화하는 3D 장면(evolving 3D scene) 및 상기 진화하는 3D 장면 내의 요소들을 묘사하는 제1의 2D 프레임을 수신하는 단계, (2) 상기 진화하는 3D 장면 및 상기 요소들을 묘사하는 제2의 2D 프레임을 수신하는 단계, (3) 상기 제1의 2D 프레임 내의 요소의 좌표들로부터 상기 제2의 2D 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 각각 포함하는 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 2D 동작 벡터들(2D motion vectors)을 유도하는 단계, (4) 상기 진화하는 3D 장면에 대한 깊이 정보를 수신하는 단계, (5) 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 단계, 및 (6) 상기 합성 2D 프레임을 사용자에게 디스플레이하는 단계를 포함할 수 있다.
일부 예들에서, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 원하는 프레임 속도의 절반으로 상기 진화하는 3D 장면으로부터 순차적으로 렌더링될 수 있고, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 상기 원하는 프레임 속도의 절반으로 사용자에게 순차적으로 디스플레이될 수 있으며, 상기 합성 2D 프레임을 디스플레이하는 단계는 상기 원하는 프레임 속도로 상기 합성 2D 프레임을 디스플레이하는 단계를 포함할 수 있다. 다른 예들에서, 상기 제1의 2D 프레임, 상기 제2의 2D 프레임, 및 제3의 2D 프레임은 상기 진화하는 3D 장면으로부터 순차적으로 렌더링될 수 있으며; 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 원하는 프레임 속도로 사용자에게 순차적으로 디스플레이될 수 있고; 상기 합성 2D 프레임을 디스플레이하는 단계는 (1) 상기 제3의 2D 프레임이 상기 사용자에게 상기 원하는 프레임 속도로 디스플레이되도록 제시간에 렌더링하는 데 실패한 것으로 결정하는 단계, 및 (2) 상기 제3의 2D 프레임 대신 상기 합성 2D 프레임을 상기 원하는 프레임 속도로 디스플레이하는 단계를 포함할 수 있다.
일부 예들에서, 상기 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는, 상기 2D 동작 벡터들에 가중 필터(weighted filter)를 적용함으로써 상기 2D 동작 벡터들로부터 노이즈를 제거하는 단계를 포함할 수 있고, 상기 깊이 정보는 상기 가중 필터의 가중치들을 유도하는 데 사용될 수 있다. 적어도 하나의 예에서, 상기 가중 필터는 중앙-가중 중간값 필터(center-weighted median filter)일 수 있다. 일부 예들에서, 상기 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는, (1) 상기 2D 동작 벡터들을 3D 동작 벡터들로 변환하기 위해 상기 깊이 정보를 사용하는 단계, 및 (2) 상기 합성 2D 프레임을 외삽하기 위해 상기 3D 동작 벡터들을 사용하는 단계를 포함할 수 있다.
일부 예들에서, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 상기 2D 동작 벡터들을 유도하는 단계는, (1) 하드웨어 동작 추정기(hardware motion estimator)에 대한 입력으로서 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임을 전송하는 단계, 및 (2) 상기 하드웨어 동작 추정기로부터의 출력으로서 상기 2D 동작 벡터들을 수신하는 단계를 포함할 수 있다. 일부 예들에서, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 VR 애플리케이션 또는 AR 애플리케이션으로부터 수신될 수 있다. 일부 예들에서, 상기 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는, 상기 2D 동작 벡터들 및 상기 깊이 정보에 적어도 부분적으로 기초하여 상기 제2의 2D 프레임을 워핑(warping)함으로써 상기 제2의 2D 프레임으로부터 상기 합성 2D 프레임을 유도하는 단계를 포함할 수 있다. 일부 예들에서, 상기 컴퓨터 구현 방법은, 물리적 세계에서 사용자의 병진 동작(translational motion)을 추적하는 단계 및 상기 사용자의 병진 동작을 설명하기 위해 복수의 2차원 동작 벡터들을 유도하기 전에 상기 제2의 2차원 프레임의 픽셀 요소들을 재투영하도록 상기 깊이 정보를 사용하는 단계를 더 포함할 수 있다.
또한, 2D 이미지들을 외삽하기 위해 깊이 정보를 사용하는 대응하는 시스템은 메모리에 저장된 여러 모듈들을 포함할 수 있으며, 상기 모듈들은, (1) (a) 진화하는 3D 장면을 묘사하는 제1의 2D 프레임 및 (b) 상기 진화하는 3D 장면을 묘사하는 제2의 2D 프레임을 수신하는 프레임 수신 모듈, (2) 상기 제1의 2D 프레임 내의 요소의 좌표들로부터 상기 제2의 2D 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 각각 포함하는 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 2D 동작 벡터들을 유도하는 유도 모듈(deriving module), (3) 상기 진화하는 3D 장면에 대한 깊이 정보를 수신하는 깊이 정보 수신 모듈, (4) 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하는 외삽 모듈, 및 (5) 상기 합성 2D 프레임을 사용자에게 디스플레이하는 디스플레이 모듈을 포함한다. 상기 시스템은 상기 프레임 수신 모듈, 상기 유도 모듈, 상기 깊이 정보 수신 모듈, 상기 외삽 모듈, 및 상기 디스플레이 모듈을 실행하는 적어도 하나의 프로세서를 더 포함할 수 있다.
일부 예들에서, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 원하는 프레임 속도의 절반으로 상기 진화하는 3D 장면으로부터 순차적으로 렌더링될 수 있고, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 상기 원하는 프레임 속도의 절반으로 사용자에게 순차적으로 디스플레이될 수 있으며, 상기 디스플레이 모듈은 상기 원하는 프레임 속도로 상기 합성 2D 프레임을 디스플레이할 수 있다. 다른 예들에서, 상기 제1의 2D 프레임, 상기 제2의 2D 프레임, 및 제3의 2D 프레임은 상기 진화하는 3D 장면으로부터 순차적으로 렌더링될 수 있으며; 상기 디스플레이 모듈은 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임을 원하는 프레임 속도로 사용자에게 순차적으로 디스플레이할 수 있고; 상기 디스플레이 모듈은, (1) 상기 제3의 2D 프레임이 상기 사용자에게 상기 원하는 프레임 속도로 디스플레이되도록 제시간에 렌더링하는 데 실패한 것으로 결정하고, (2) 상기 제3의 2D 프레임 대신 상기 합성 2D 프레임을 상기 원하는 프레임 속도로 디스플레이하는 것에 의해, 상기 합성 2D 프레임을 디스플레이할 수 있다.
일부 예들에서, 상기 외삽 모듈은 상기 2D 동작 벡터들에 가중 필터를 적용하여 상기 2D 동작 벡터들로부터 노이즈를 제거함으로써 상기 합성 2D 프레임을 외삽하도록 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용할 수 있고, 상기 깊이 정보는 상기 가중 필터의 가중치들을 유도하는 데 사용될 수 있다. 적어도 하나의 예에서, 상기 가중 필터는 중앙-가중 중간값 필터일 수 있다. 일부 예들에서, 상기 외삽 모듈은 (1) 상기 2D 동작 벡터들을 3D 동작 벡터들로 변환하기 위해 상기 깊이 정보를 사용하고, (2) 상기 3D 동작 벡터들을 사용하여 상기 합성 2D 프레임을 외삽함으로써, 상기 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용할 수 있다.
일부 예들에서, 상기 유도 모듈은 (1) 하드웨어 동작 추정기에 대한 입력으로서 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임을 전송하고, (2) 상기 하드웨어 동작 추정기로부터의 출력으로서 상기 2D 동작 벡터들을 수신함으로써, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 상기 2D 동작 벡터들을 유도할 수 있다. 일부 예들에서, 상기 프레임 수신 모듈은 VR 애플리케이션 또는 AR 애플리케이션으로부터 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임을 수신할 수 있다. 일부 예들에서, 상기 외삽 모듈은 상기 2D 동작 벡터들 및 상기 깊이 정보에 적어도 부분적으로 기초하여 상기 제2의 2D 프레임을 워핑함으로써, 상기 제2의 2D 프레임으로부터 상기 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용할 수 있다.
일부 예들에서, 전술한 방법은 컴퓨터 판독 가능 매체 상의 컴퓨터 판독 가능 명령들로서 인코딩될 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 하나 이상의 컴퓨터 실행 가능 명령들을 포함할 수 있으며, 상기 하나 이상의 컴퓨터 실행 가능 명령들은, 컴퓨팅 장치의 적어도 하나의 프로세서에 의해 실행될 때 상기 컴퓨팅 장치로 하여금, (1) 진화하는 3D 장면 및 상기 진화하는 3D 장면 내의 요소들을 묘사하는 제1의 2D 프레임을 수신하게 하고, (2) 상기 진화하는 3D 장면 및 상기 요소들을 묘사하는 제2의 2D 프레임을 수신하게 하고, (3) 상기 제1의 2D 프레임 내의 요소의 좌표들로부터 상기 제2의 2D 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 각각 포함하는 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임으로부터 2D 동작 벡터들을 유도하게 하고, (4) 상기 진화하는 3D 장면에 대한 깊이 정보를 수신하게 하고, (5) 합성 2D 프레임을 외삽하기 위해 상기 2D 동작 벡터들 및 상기 깊이 정보를 사용하게 하고, (6) 상기 합성 2D 프레임을 사용자에게 디스플레이하게 할 수 있다. 일부 예들에서, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 원하는 프레임 속도의 절반으로 상기 진화하는 3D 장면으로부터 순차적으로 렌더링될 수 있고, 상기 제1의 2D 프레임 및 상기 제2의 2D 프레임은 상기 원하는 프레임 속도의 절반으로 사용자에게 순차적으로 디스플레이될 수 있으며, 상기 컴퓨터 실행 가능 명령들은 또한 상기 컴퓨팅 장치로 하여금 상기 원하는 프레임 속도로 상기 합성 2D 프레임을 디스플레이하게 할 수 있다.
전술한 임의의 실시예들로부터의 특징들은 여기에서 설명된 일반적인 원리들에 따라 서로 조합하여 사용될 수 있다. 이들 및 다른 실시예들, 특징들, 및 이점들은 첨부된 도면 및 청구 범위와 함께 다음의 상세한 설명을 읽으면 더욱 완전하게 이해될 것이다.
첨부된 도면들은 다수의 예시적인 실시예들을 도시하며 본 명세서의 일부이다. 다음의 설명과 함께, 이들 도면들은 본 개시의 다양한 원리들을 입증하고 설명한다.
도 1은 일부 실시예들에 따른 예시적인 디스플레이 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 예시적인 3D 장면의 평면도이다.
도 3은 일부 실시예들에 따른 도 2에 예시된 예시적인 3D 장면의 정면도이다.
도 4는 일부 실시예들에 따른 도 2에 예시된 예시적인 3D 장면의 또 다른 평면도이다.
도 5는 일부 실시예들에 따른 도 2에 예시된 예시적인 3D 장면의 또 다른 정면도이다.
도 6은 일부 실시예들에 따른 예시적인 프레임 속도들을 도시하는 타이밍도이다.
도 7은 일부 실시예들에 따른 예시적인 프레임 속도들을 나타내는 타이밍도이다.
도 8은 일부 실시예들에 따라 도 2 및 도 3에 예시된 예시적인 3D 장면을 묘사하는 예시적인 2D 프레임의 블록도이다.
도 9는 일부 실시예들에 따라 도 4 및 도 5에 예시된 예시적인 3D 장면을 묘사하는 예시적인 2D 프레임의 블록도이다.
도 10은 일부 실시예들에 따른 예시적인 깊이 정보의 블록도이다.
도 11은 2D 프레임들을 외삽하기 위해 깊이 정보를 사용하는 예시적인 방법의 흐름도이다.
도 12는 일부 실시예들에 따른 예시적인 2D 동작 벡터들의 블록도이다.
도 13은 일부 실시예들에 따라 렌더링된 2D 프레임들을 위치적으로 재투영하기 위해 깊이 정보를 사용하기 위한 예시적인 데이터 흐름의 흐름도이다.
도 14는 일부 실시예들에 따른 예시적인 3D 동작 벡터들의 블록도이다.
도 15는 일부 실시예들에 따른 예시적인 2D 합성 프레임의 블록도이다.
도면들 전체에서 동일한 참조 문자들 및 설명들은 유사하지만 반드시 동일하지는 않은 요소들을 나타낸다. 본 명세서에 설명된 예시적인 실시예들은 다양한 변형들 및 대안적인 형태들이 가능하지만, 그 특정 실시예들이 도면들에 예로서 도시되어 있고 여기에서 상세히 설명될 것이다. 그러나, 본 명세서에 설명된 예시적인 실시예들은 개시된 특정 형태들로 제한되도록 의도되지 않는다. 오히려, 본 개시는 첨부된 청구항의 범위 내에 있는 모든 수정들, 등가물들, 및 대안들을 포함한다.
본 개시는 일반적으로 렌더링된 2D 프레임들의 시퀀스로부터 합성 2D 프레임들을 외삽하기 위해 깊이 정보를 사용하는 프레임 속도 평활화 기술(frame-rate smoothing technique)에 관한 것이다. 아래에서 더 상세히 설명되는 바와 같이, 본 개시의 실시예들은 진화하는 3D 장면으로부터의 깊이 정보 및 3D 장면으로부터 렌더링된 2D 프레임들로부터의 동작 추정치들을 사용하여 보완적인 합성 2D 프레임들(supplemental synthetic 2D frames)을 외삽할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들 및 방법들은 VR 또는 AR 애플리케이션이 디스플레이의 원하는 또는 최적의 프레임 속도보다 낮은 프레임 속도로 3D 장면을 렌더링할 때는 언제든지 이러한 보완적인 합성 2D 프레임들을 디스플레이할 수 있으며, 이는 사용자들에게 매끄럽고 즐거운 VR 또는 AR 경험들을 보장한다. 추가적으로 또는 대안적으로, 여기에서 설명된 시스템들 및 방법들은 디스플레이의 원하는 또는 최적의 프레임 속도로 2D 프레임들을 렌더링할 수 없는 하드웨어에서 구동하는 VR 또는 AR 애플리케이션에 대해 보완적인 합성 2D 프레임들을 디스플레이할 수 있으며, 이는 이전에는 즐거운 VR 또는 AR 경험들을 제공할 수 없었던 낮은 성능의 하드웨어 상에서의 VR 또는 AR 경험들을 개선할 수 있다. 적어도 하나의 예에서, VR 또는 AR 애플리케이션에 의해 렌더링된 모든 2D 프레임에 대해 합성 2D 프레임을 디스플레이함으로써, 여기에서 설명된 시스템들 및 방법들은 VR 또는 AR 애플리케이션이 디스플레이의 원하는 또는 최적의 프레임 속도의 절반으로 2D 프레임들을 렌더링하게 할 수 있으며, 이는 3D 장면으로부터 2D 프레임들을 생성하는 데 필요한 중앙 처리 장치(CPU) 및/또는 그래픽 처리 장치(GPU) 시간을 절반으로 줄일 수 있다.
다음은 도 1을 참조하여 깊이 정보를 사용하여 2D 프레임들을 외삽하기 위한 예시적인 시스템의 상세한 설명들을 제공할 것이다. 예시적인 진화하는 3D 장면의 자세한 설명들은 도 2 내지 도 5와 관련하여 제공될 것이다. 도 6 및 도 7은 2D 프레임들을 디스플레이하기 위한 예시적인 프레임 속도들의 상세한 설명을 제공할 것이다. 추가로, 예시적인 2D 프레임들, 깊이 정보, 및 동작 벡터들에 대한 자세한 설명들은 도 8 내지 도 10 및 도 12 내지 도 15와 관련하여 제공될 것이다. 또한, 2D 프레임들을 외삽하기 위해 깊이 정보를 사용하는 방법에 대한 자세한 설명들은 도 11과 관련하여 제공될 것이다.
도 1은 진화하는 3D 장면을 묘사하는 일련의 2D 프레임들을 사용자에게 디스플레이하기 위한 예시적인 시스템(100)의 블록도이다. 이 도면에 예시된 바와 같이, 시스템(100)은 진화하는 3D 장면(104)을 관리하는 애플리케이션(102)을 포함할 수 있다. 일부 예들에서, 애플리케이션(102)은 머리 장착형 디스플레이 시스템을 통해 사용자가 보게 되는 진화하는 인터랙티브 3D 환경(evolving interactive 3D environment)을 관리하는 VR 애플리케이션 또는 AR 애플리케이션을 나타낼 수 있다. 일부 예들에서, 애플리케이션(102)은 3D 장면(104)을 관리하거나 렌더링하기 위해 CPU 및/또는 GPU를 사용할 수 있다. 디스플레이(108)는 액정 디스플레이(LCD) 스크린, 유기 발광 다이오드(OLED) 스크린(예를 들어, 능동 매트릭스 OLED 스크린), 플라즈마 스크린, 및/또는 임의의 다른 적절한 디스플레이 스크린과 같은 임의의 적절한 디스플레이 스크린 또는 디스플레이 스크린들의 조합을 나타낼 수 있다. 일부 예들에서(예를 들어, 머리 장착형 디스플레이 시스템에 통합될 때), 디스플레이(108)는 사용자의 좌안(user's left eye)에 보이는 좌측 및 사용자의 우안(user's right eye)에 보이는 우측을 포함할 수 있다. 일부 예들에서, 디스플레이(108)의 좌측 및 우측은 3D 장면(104)의 좌안 및 우안 뷰들(views)을 단일 3D 이미지로서 묘사하는, 개별 이미지들의 스테레오스코픽 쌍(stereoscopic pair)을 디스플레이하는 데 사용될 수 있다.
일부 실시예들에서, "3차원 장면"이라는 용어는 계산을 수행하고/하거나 2D 이미지들을 렌더링하는 데 사용될 수 있는 기하학적 데이터의 임의의 3D 표현 또는 모델을 지칭할 수 있다. 일부 예들에서, "3차원 장면"이라는 용어는 VR 또는 AR 인터랙티브 환경의 3D 표현 또는 모델을 지칭할 수 있다. 일부 예들에서, 3차원 장면은 3D 공간 내에 위치할 수 있는 3D 물체들 또는 요소들을 포함할 수 있다. 3D 장면은 3D 장면 내의 3D 물체들 또는 요소들이 서로 및/또는 사용자 또는 카메라 원근투시(camera perspective)에 대해 상대적으로 이동하도록 시간이 지남에 따라 진화할 수 있다.
도 2 내지 도 5는 예시적인 3D 장면(104)을 도시한다. 이들 도면들에 도시된 바와 같이, 3D 장면(104)은 전경 물체(foreground object)(202), 중경 물체(middle-ground object)(204) 및 배경 물체(background object)(206)를 포함할 수 있다. 이 예에서, 전경 물체(202)는 원근투시(perspective)(208)에 대해 우측에서 좌측으로(즉, 음의 X 방향으로) 이동할 수 있고, 중경 물체(204)는 원근투시(208)에 대해 좌측에서 우측으로(즉, 양의 X 방향으로) 이동할 수 있고, 배경 물체(206)는 원근투시(208)에 대해 고정될 수 있다. 도 2 및 도 3은 원근투시(208)로부터 전경 물체(202)와 중경 물체(204)가 배경 물체(206)와는 겹치지만 서로는 겹치지 않는 처음 시간에 3D 장면(104)의 평면도 및 정면도를 각각 도시한다. 도 4 및 도 5는 원근투시(208)로부터 전경 물체(202) 및 중경 물체(204)가 배경 물체(206)와 겹치고 전경 물체(202)가 중경 물체(204)와 겹치는 후속 시간에 3D 장면(104)의 평면도 및 정면도를 각각 도시한다.
도 1로 돌아가서, 애플리케이션(102)은 디스플레이(108)를 통해 사용자에게 디스플레이하기 위해 3D 장면(104)을 2D 프레임들(106(1)-(N))의 시퀀스로 렌더링할 수 있다. 애플리케이션(102)이 VR 또는 AR 애플리케이션인 예들에서, 애플리케이션(102)은 3D 장면(104)을 두 번, 한 번은 좌안 원근투시(left-eye perspective)로, 한 번은 우안 원근투시로 렌더링할 필요가 있다. 이러한 예들에서, 2D 프레임들(106(1)-(N))은 좌안 원근투시 또는 우안 원근투시를 위해 렌더링된 2D 프레임들을 나타낼 수 있다.
일부 예들에서, 애플리케이션(102)은 원하는 프레임 속도 미만(예를 들어, 디스플레이(108)의 최적 프레임 속도 미만 또는 VR 또는 AR 환경을 보기 위한 최적 프레임 속도 미만)으로 3D 장면(104)을 2D 프레임들로 순차적으로 렌더링할 수 있다. 일부 상황들에서, 애플리케이션(102)은 적절한 하드웨어 자원의 부족으로 인해 원하는 또는 최적의 프레임 속도로 3D 장면(104)을 2D 프레임들(106(1)-(N))로 순차적으로 렌더링하지 못할 수 있다. 이러한 상황들에서, 아래에서 설명되는 바와 같이, 여기에서 설명된 시스템은 원하는 또는 최적의 프레임 속도로 디스플레이(108)를 통해 2D 프레임들(즉, 렌더링 및 합성 2D 프레임들)을 디스플레이하기 위해 합성 2D 프레임들(122(1)-(N))로 2D 프레임들(106(1)-(N))을 보완할 수 있다.
도 6은 애플리케이션(102)이 3D 장면(104)으로부터 2D 프레임들(106(1)-(N))을 렌더링할 수 있게 하는 예시적인 프레임 속도(즉, 초당 45 프레임)를 예시하는 예시적인 타이밍 다이어그램(600)을 도시한다. 이 예에서, 디스플레이(108)는 초당 90 프레임(즉, 11 밀리 초(ms)마다 한 번)으로 2D 프레임들을 디스플레이할 수 있지만, 디스플레이(108)는 2D 프레임들(106(1)-(N))을 초당 45 프레임(즉, 애플리케이션(102)에 의해 렌더링되는 속도)으로만 디스플레이할 수 있다. 이 예에 도시된 바와 같이, 디스플레이(108)는 2D 프레임들(106(1)-(N)) 사이에서 합성 2D 프레임들(122(1)-(N))을 디스플레이할 수 있어, 2D 프레임들(106(1)-(N))과 합성 2D 프레임들(122(1)-(N))이 함께 초당 90 프레임으로 디스플레이되도록 한다.
일부 예들에서, 애플리케이션(102)은 원하는 또는 최적의 프레임 속도로 3D 장면(104)을 2D 프레임들(106(1)-(N))로 순차적으로 렌더링하려고 시도할 수 있다. 일부 예들에서, 애플리케이션(102)은 일반적으로 원하는 또는 최적의 프레임 속도로 3D 장면(104)을 2D 프레임들(106(1)-(N))로 렌더링할 수 있지만, 2D 프레임들(106(1)-(N) 중 일부에 대해서는 원하는 또는 최적의 프레임 속도로 유지하기에는 너무 느리게 주기적으로 렌더링할 수 있다. 이러한 예들에서, 여기에서 설명된 시스템들은 애플리케이션(102)이 합성 프레임들(122(1)-(N))로 렌더링할 수 있는 2D 프레임들을 보완할 수 있다.
도 7은 애플리케이션(102)이 3D 장면(104)으로부터 2D 프레임들(106(1)-(N))을 렌더링하는 것을 시도할 수 있게 하는 예시적인 프레임 속도(즉, 초당 90 프레임)를 예시하는 예시적인 타이밍 다이어그램(700)을 도시한다. 이 예에서, 디스플레이(108)는 초당 90 프레임으로 2D 프레임들을 디스플레이할 수 있다. 도 7에 도시된 바와 같이, 애플리케이션(102)은 초당 90 프레임으로 디스플레이될 만큼 충분히 빠르게 2D 프레임(106(3))을 렌더링하지 못할 수 있다. 그러나, 이 예에 도시된 바와 같이, 디스플레이(108)는 2D 프레임들(106(2) 및 106(4)) 사이에서 합성 2D 프레임들(122(1) 및 122(2))을 디스플레이할 수 있으므로, 2D 프레임들(106)과 합성 2D 프레임들(122)이 함께 초당 90 프레임으로 디스플레이될 수 있다.
도 8 및 도 9는 3D 장면(104)으로부터 렌더링된 예시적인 2D 프레임들을 도시한다. 일부 예들에서, 애플리케이션(102)은 도 2 및 도 3에 도시된 바와 같이 원근투시(208)로부터 도 8에 도시된 2D 프레임(106(1))으로 3D 장면(104)을 렌더링할 수 있다. 이 예에서, 2D 프레임(106(1))은 픽셀 요소들(예를 들어, 픽셀들, 블록들, 또는 매크로 블록들)의 열들(columns)(800) 및 픽셀 요소들의 행들(rows)(802)을 포함할 수 있다. 도 8에 도시된 바와 같이, 2D 프레임(106(1))은 전경 물체(202) 및 중경 물체(204)가 배경 물체(206)와 겹치지만 서로 간에는 겹치지 않는다. 나중에, 애플리케이션(102)은 도 4 및 도 5에 도시된 바와 같이 원근투시(208)로부터 도 9에 도시된 바와 같은 2D 프레임(106(2))으로 3D 장면(104)을 렌더링할 수 있다. 이 예에서, 2D 프레임(106(2))은 픽셀 요소들의 열들(900) 및 픽셀 요소들의 행들(902)을 포함할 수 있다. 도 9에 도시된 바와 같이, 2D 프레임(106(2))은 전경 물체(202) 및 중경 물체(204)가 배경 물체(206)와 겹치고 전경 물체(202)가 중경 물체(204)와 겹치는 것을 묘사한다.
3D 장면(104)으로부터 2D 프레임들을 렌더링하는 것에 추가하여, 애플리케이션(102)은 또한 3D 장면(104)으로부터 렌더링된 각각의 2D 프레임에 대한 깊이 정보를 생성하도록 구성될 수 있다. 예를 들어, 애플리케이션(102)은 2D 프레임들(106(1)-(N))에 각각 대응하는 깊이 정보(110(1)-(N))를 생성할 수 있다. 일부 실시예들에서, "깊이 정보"라는 용어는 요소를 묘사하는 2D 프레임 내의 픽셀 요소들에 매핑되는 3D 장면 내의 요소의 깊이의 임의의 측정치를 지칭할 수 있다. 깊이 정보는 적절한 형식을 사용하여 표현될 수 있다. 일부 예들에서, 깊이 정보는 적절한 선형 포맷 또는 적절한 비선형 포맷을 사용하여 표현될 수 있다. 도 10은 3D 장면(104)으로부터 유도된 예시적인 깊이 정보를 도시한다. 이 예에서, 깊이 정보(110(1))는 2D 프레임(106(1))에 대응할 수 있다. 도시된 바와 같이, 깊이 정보(110(1))는 각각이 열들(800) 중 하나에 대응하는 요소들의 열들(1000) 및 각각이 행들(802) 중 하나에 대응하는 요소들의 행들(1002)을 포함할 수 있다. 이 예에서, 요소들(1004 및 1008)은 배경 물체(206)의 깊이 측정치들을 나타낼 수 있고, 요소들(1006)은 중경 물체(204)의 깊이 측정치들을 나타낼 수 있으며, 요소들(1010)은 전경 물체(202)의 깊이 측정치들 나타낼 수 있다. 도 10에 포함된 깊이 측정들은 주로 설명을 위한 것이며, 포괄적인 것이거나 또는 도시된 정확한 형태로 제한되는 것은 아니다.
도 1에 도시된 바와 같이, 예시적인 시스템(100)은 디스플레이(108)를 통해 2D 프레임들을 디스플레이하기 위한 하나 이상의 모듈들을 포함할 수 있다. 아래에서 더 자세히 설명되는 바와 같이, 시스템(100)은 (1) 3D 장면(104)을 묘사하는 2D 프레임들(106(1)-(N))을 수신하는 프레임 수신 모듈(112), (2) 2D 프레임들(106(1)-(N))로부터 2D 동작 벡터들(116(1)-(N))을 유도하는 유도 모듈(114), (3) 진화하는 3D 장면(104)에 대한 깊이 정보(110(1)-(N))를 수신하는 깊이 정보 수신 모듈(118), (4) 합성 2D 프레임들(122(1)-(N))을 외삽하기 위해 2D 프레임들(106(1)-(N)), 2D 동작 벡터들(116(1)-(N)), 및 깊이 정보(110(1)-(N))를 사용하는 외삽 모듈(120), 및 (5) 디스플레이(108)를 통해 사용자에게 2D 프레임들(106(1)-(N)) 및/또는 합성 2D 프레임들(122(1)-(N))을 디스플레이하는 디스플레이 모듈(124)을 포함할 수 있다. 별도의 요소들로 설명되었지만, 도 1에서 묘사된 모듈들 중 하나 이상은 단일 모듈 또는 애플리케이션의 부분들을 나타낼 수 있다.
도 11은 2D 이미지들을 외삽하기 위해 깊이 정보를 사용하기 위한 예시적인 컴퓨터 구현 방법(1100)의 흐름도이다. 도 11에 도시된 단계들은 도 1에 도시된 시스템을 포함하여 임의의 적합한 컴퓨터 실행 가능 코드 및/또는 컴퓨팅 시스템에 의해 수행될 수 있다. 일례에서,도 1에 도시된 각 단계는 그 구조가 다수의 하위 단계들을 포함하고/하거나 그에 의해 표현되는 알고리즘을 나타낼 수 있으며, 그 예들이 아래에서 더 상세히 제공될 것이다.
도 11에 예시된 바와 같이, 단계 1102에서, 여기에서 설명된 시스템들 중 하나 이상은 진화하는 3D 장면을 묘사하는 2D 프레임들을 수신할 수 있다. 예를 들어, 프레임 수신 모듈(112)은 애플리케이션(102)으로부터 3D 장면(104)을 묘사하는 2D 프레임들(106(1)-(N))을 수신할 수 있다. 일반적으로, 여기에서 설명된 시스템들은 디스플레이의 원하는 또는 최적의 프레임 속도 또는 그 이하에서 애플리케이션(102)으로부터 3D 장면(104)을 묘사하는 2D 프레임들(106(1)-(N))을 수신할 수 있다.
단계 1104에서, 여기에서 설명된 시스템들 중 하나 이상은 2D 프레임들로부터 2D 동작 벡터들을 유도할 수 있다. 예를 들어, 유도 모듈(114)은 연속적인 2D 프레임들(106(1)-(N))로부터 2D 동작 벡터들(116(1)-(N))을 유도할 수 있다. 일부 실시예들에서, "2차원 동작 벡터"라는 용어는 동작 시퀀스에서 2 개의 연속적인 2D 프레임들의 요소들 사이의 동작 추정치를 지칭할 수 있다. 일부 예들에서, "2차원 동작 벡터"라는 용어는 두 프레임들의 픽셀들 또는 매크로 블록들 사이의 동작의 픽셀 레벨 또는 매크로 블록 레벨 추정을 지칭할 수 있다. 일부 실시예들에서, "2차원 동작 벡터"라는 용어는 동작 시퀀스에서 2 개의 연속적인 프레임들에서 발견되는 물체들 또는 피처들 사이의 동작의 물체 레벨 또는 피처 레벨 추정을 지칭할 수 있다.
도 12는 도 8 및 도 9에 도시된 바와 같은 2D 프레임들(106(1) 및 106(2))로부터 유도된 예시적인 2D 동작 벡터들(116(1))을 도시한다. 2D 프레임(106(1)) 및 2D 프레임(106(2))로 묘사된 바와 같이, 전경 물체(202)는 우측에서 좌측으로 이동하고, 중경 물체(204)는 좌측에서 우측으로 이동하는 것으로 도시되고, 배경 물체(206)는 정지 상태로 도시된다. 2D 동작 벡터들(116(1))은 2D 프레임들(106(1) 및 106(2))의 각 픽셀 요소에 대한 동작 추정치들 또는 측정치들을 포함할 수 있다. 도 12에 도시된 바와 같이, 2D 동작 벡터들(116(1))은 각각이 열들(800) 또는 열들(900) 중 하나에 대응하는 요소들의 열들(1200) 및 각각이 행들(802) 또는 행들(902) 중 하나에 대응하는 요소들의 행들(1202)을 포함할 수 있다. 이 예에서, 요소들(1204 및 1208) 각각은 배경 물체(206)에 대한 추정된 동작 벡터를 포함할 수 있고, 요소들(1206) 각각은 중경 물체(204)의 추정된 동작 벡터를 포함할 수 있으며, 요소들(1210) 각각은 전경 물체(202)의 추정된 동작 벡터를 포함할 수 있다. 도 12에 포함된 동작 추정치들은 주로 설명을 위한 것이며, 포괄적인 것이거나 또는 도시된 정확한 형태로 제한되는 것은 아니다.
여기에서 설명된 시스템들은 다양한 방식으로 2D 프레임들로부터 2D 동작 벡터들을 유도할 수 있다. 일례에서, 유도 모듈(114)은 2D 프레임들로부터 2D 동작 벡터들을 유도하기 위해 하드웨어 동작 추정기(예를 들어, 두 프레임들 사이의 동작을 추정할 수 있는 GPU)를 사용할 수 있다. 예를 들어, 유도 모듈(114)은 2D 프레임들(106(1)-(N))의 연속적인 쌍들을 하드웨어 동작 추정기(126)에 전달할 수 있고, 2D 프레임들(106(1)-(N))의 연속적인 쌍들 사이에 동작 추정치들을 포함하는 2D 동작 벡터들(116(1)-(N)) 중 대응하는 하나를 수신할 수 있다. 일반적으로, 여기에서 설명된 시스템들은 2D 프레임들을 디스플레이하면서 2D 프레임들로부터 동작 벡터들을 비동기적으로 유도할 수 있다.
일부 상황들에서, 진화하는 3D 장면으로부터 렌더링된 연속적인 2D 프레임들 사이에서 발생하는 일부 동작(예를 들어, 시차 동작(parallax motion))은 물리적 세계에서 사용자의 병진 동작(user's translational motion)에 의해 유발될 수 있다. 일반적으로, 사용자가 물리적 세계에서 병진 이동하는 경우, 사용자의 시점(user's point of view)을 나타내는 카메라의 위치는 사용자의 병진 이동들을 반영하기 위해 3D 장면에 대해 업데이트될 수 있다. 따라서, 3D 장면 내의 물체들은 약간 다른 시점들에서 카메라에 의해 렌더링될 수 있으며, 이로 인해 물체들이 3D 장면에 대해 상대적으로 움직이지 않더라도 연속적인 2D 프레임에서 물체의 위치들이 다르게 될 수 있다. 일부 예들에서, 연속적인 2D 프레임들로부터 유도된 2D 동작 벡터들은 사용자의 병진 동작에 의해 전체적으로 또는 부분적으로 유발된 동작의 추정치들을 캡처하거나 나타낼 수 있다. 이러한 예들에서, 사용자의 병진 동작은 이들 2D 동작 벡터들 및 하나 이상의 연속적인 2D 프레임들이 합성 2D 프레임을 외삽하는 데 사용될 때 설명될 수 있다(아래에 기술됨).
일부 예들에서, 본 명세서에 설명된 시스템들은 물리적 세계에서 사용자의 병진 동작을 정확하게 측정하기 위해 다양한 하드웨어 센서들(예를 들어, 고정된 룸 센서들 및/또는 신체 부착 센서들)을 사용할 수 있다. 추정된 2D 동작 벡터들이 2D 프레임들을 외삽할 때 사용자의 병진 동작의 효과들을 설명하는 데 사용될 수 있지만, 사용자의 병진 동작에 대한 센서의 측정치들에 기초하여 2D 프레임들을 외삽하는 것이 이러한 동작을 설명하는 더 정확한 방법일 수 있다. 이와 같이, 여기에서 설명된 시스템들은 이러한 동작을 설명하기 위해 렌더링된 2D 프레임들의 픽셀 요소들을 위치적으로 재투영(예를 들어, 위치적으로 워핑(positionally warping))하기 위해 사용자의 병진 동작에 대한 센서의 측정치들을 사용할 수 있는데, 이는 다른 동작을 설명하는 2D 동작 벡터들을 유도하기 위해 위치적으로 재투영된 2D 프레임들들을 사용하기 전에 상기 사용자의 병진 동작에 대한 센서의 측정치들을 사용한다. 일부 예들에서, 사용자의 병진 동작을 설명하기 위해 2D 프레임의 픽셀 요소들을 위치적으로 재투영함으로써, 여기에서 설명된 시스템들은 2D 프레임으로부터 사용자의 병진 동작의 동작 효과들을 효과적으로 필터링할 수 있다.
일례에서, 여기에서 설명된 시스템들은 먼저 깊이 정보를 사용하여 2D 프레임의 픽셀 요소들을 3D 공간에 위치적으로 투영함으로써(예를 들어, 화면 공간에서 카메라 공간 또는 실제 세계 공간으로 2D 프레임의 픽셀 요소들을 투영함으로써) 사용자의 병진 동작을 설명하기 위해 2D 프레임의 픽셀 요소들을 재투영할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들은 2D 프레임의 픽셀 요소들을 3D 공간에 위치적으로 투영하기 위해 역투영 행렬(inverse projection matrix) 또는 하이트 맵(heightmap(을 사용할 수 있다. 다음으로, 여기에서 설명된 시스템들은 (예를 들어, 사용자의 병진 동작을 반영하기 위해 카메라 공간에서 3D 투영의 포인트들을 이동시킴으로써) 사용자의 병진 동작을 설명하기 위해 3D 투영을 조정할 수 있다. 마지막으로, 여기에서 설명된 시스템들은 (예를 들어, 투영 행렬(projection matrix)을 사용하여) 조정된 3D 투영을 2D 프레임으로 다시 투영할 수 있다.
도 13은 동작 센서(motion sensor)(1304)에 의해 추적된 사용자의 물리적 세계 병진 동작(1302)에 기초하여 렌더링된 2D 프레임(106(1))을 위치적으로 재투영하기 위해 깊이 정보(110(1))를 사용하기 위한 예시적인 데이터 흐름(1300)을 도시한다. 이 예에서, 여기서 설명된 시스템들은 3D 투영(1308)으로서 렌더링된 2D 프레임(106(1))의 픽셀 요소들을 카메라 공간에 위치적으로 투영하기 위해 역투영 행렬(1306) 및 깊이 정보(110(1))를 사용할 수 있다. 여기서 설명된 시스템들은 다음으로 (예를 들어, 동작(1302)을 반영하기 위해 카메라 공간에서 3D 투영(1308)의 포인트들을 변환함으로써) 동작(1302)을 설명하기 위해 3D 투영(1308)을 조정할 수 있다. 일부 예들에서, 3D 투영(1308)의 조정은 새로운 깊이 정보(1310)를 초래할 수 있다. 마지막으로, 여기에서 설명된 시스템들은 투영 행렬(1312)을 사용하여 3D 투영(1308)을 2D 프레임(1314)으로 다시 재투영할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들 및 방법들은 렌더링된 2D 프레임(106(1)) 대신 2D 프레임(1314)을 사용할 수 있고/있거나 깊이 정보(110(1)) 대신에 깊이 정보(1310)를 사용할 수 있다.
단계 1106에서, 여기에서 설명된 시스템들 중 하나 이상은 진화하는 3D 장면에 대한 깊이 정보를 수신할 수 있다. 예를 들어, 깊이 정보 수신 모듈(118)은 애플리케이션(102)으로부터 3D 장면(104)에 대한 깊이 정보(110(1)-(N))를 수신할 수 있다.
단계 1108에서, 여기에서 설명된 시스템들 중 하나 이상은 합성 2D 프레임을 외삽하기 위해 2D 동작 벡터들 및 깊이 정보를 사용할 수 있다. 예를 들어, 외삽 모듈(120)은 합성 프레임들(122(1)-(N))을 외삽하기 위해 2D 동작 벡터들(116(1)-(N)) 및 깊이 정보(110(1)-(N))를 사용할 수 있다. 일반적으로, 여기에서 설명된 시스템들은 렌더링된 2D 프레임들을 수신하고 디스플레이하는 동안 합성 2D 프레임들을 비동기적으로 외삽할 수 있다.
여기에서 설명된 시스템들은 다양한 방식으로 합성 2D 프레임을 외삽하기 위해 2D 동작 벡터들 및 깊이 정보를 사용할 수 있다. 일반적으로, 외삽 모듈(120)은, 관련 동작 벡터들에 따라 렌더링된 2D 프레임의 픽셀 요소들을 워핑(예를 들어, 왜곡, 변환, 또는 리매핑)함으로써, 렌더링된 2D 프레임으로부터 합성 2D 프레임을 외삽하도록 2D 또는 3D 동작 벡터들을 사용할 수 있다. 이전 시간에 3D 장면으로부터 렌더링된 2D 프레임의 픽셀 요소와 관련된 동작 벡터들이 픽셀 요소가 후속 시간에 있을 것으로 예상되는 곳을 예측할 수 있으므로, 여기에서 설명하는 시스템들은 픽셀 요소들이 후속 시간에 있을 것으로 예상되는 곳을 예측하기 위해 2D 프레임의 픽셀 요소들과 관련된 동작 벡터들을 사용할 수 있으며, 따라서 새로운 합성 2D 프레임을 외삽하기 위해 2D 프레임의 픽셀 요소들을 리매핑할 수 있다.
도 9, 도 12, 및 도 15를 예로서 이용하면, 외삽 모듈(120)은 도 9의 2D 프레임(106(2))으로부터 도 15의 합성 2D 프레임(122(1))을 외삽할 수 있는데, 이는 그들의 관련 동작 벡터들에 따라 2D 프레임(106(2))의 픽셀 요소들을 워핑함으로써 상기와 같이 외삽할 수 있다. 도 15에 도시된 바와 같이, 합성 2D 프레임(122(1))은 각각이 열들(900) 중 하나에 대응하는 픽셀 요소들의 열들(1500) 및 각각이 행들(902) 중 하나에 대응하는 픽셀 요소들의 행들(1502)을 포함할 수 있다. 이 예에서, 동작 벡터들(1204 및 1208)은 배경 물체(206)에 대응하는 2D 프레임(106(2)) 내의 픽셀 요소들이 고정되어 있어야 하고 워핑되거나 리매핑되지 않아야 함을 나타낼 수 있으며, 동작 벡터들(1206)은 중경 물체(204)에 대응하는 2D 프레임(106(2)) 내의 픽셀 요소들이 우측으로 리매핑되거나 워핑되어야 함을 나타낼 수 있으며, 동작 벡터들(1210)은 전경 물체(202)에 대응하는 2D 프레임(106(2))의 픽셀 요소들이 좌측으로 리매핑되거나 워핑되어야 함을 나타낼 수 있다.
일 예에서, 추정된 2D 동작 벡터들은 원하지 않는 노이즈를 포함할 수 있고, 외삽 모듈(120)은 2D 프레임을 워핑하기 위해 2D 동작 벡터들을 사용하기 전에 추정된 2D 동작 벡터들로부터 노이즈를 제거하기 위해 노이즈 감소 필터(121)(예를 들어, 중간값 필터 또는 중앙 가중 중간값 필터)를 사용할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들은 요소의 필터링된 값이 동일하거나 유사한 깊이에 있는 이웃 요소들에 의해 더 많이 영향을 받고 동일하거나 유사한 깊이에 있지 않은 이웃 요소들에 의해 덜 영향을 받도록 필터 가중치들을 유도하기 위해 깊이 정보를 사용할 수 있다. 노이즈 감소 필터를 가중하기 위해 깊이 정보를 사용하는 것은 동일한 깊이의 동작 벡터들이 동일한 3D 물체와 연관될 가능성이 높고 동일한 깊이에 있지 않은 동작 벡터들이 동일한 3D 물체와 연관될 가능성이 없기 때문에 필터링된 동작 벡터들의 정확도를 향상시킬 수 있다.
일부 예들에서, 여기에서 설명된 시스템들은 2D 동작 벡터들을 3D 동작 벡터들로 변환한 다음 3D 동작 벡터들을 사용하여 합성 2D 프레임을 외삽하기 위해 깊이 정보를 사용할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들은 동작 추정치에 대한 깊이 성분을 결정하기 위해 2D 동작 벡터들에 유도됐던 2 개의 2D 프레임들과 관련된 깊이 정보를 비교할 수 있다. 이러한 깊이 성분들은 2D 동작 벡터들과 결합되어 합성 2D 프레임들을 외삽하는 데 사용될 수 있는 3D 동작 벡터들을 생성할 수 있다. 도 14는 깊이 정보(110(1) 및 110(2)) 및 2D 동작 벡터들(116(1))로부터 유도된 예시적인 3D 동작 벡터들(117(1))을 도시한다. 3D 동작 벡터들(117(1))은 2D 프레임들(106(1) 및 106(2))의 각 픽셀 요소에 대한 동작 추정치들 또는 측정치들을 포함할 수 있다. 도 14에 도시된 바와 같이, 3D 동작 벡터들(117(1))은 각각이 열들(800) 또는 열들(900) 중 하나에 대응하는 요소들의 열들(1400) 및 각각이 행들(802) 또는 행들(902) 중 하나에 대응하는 요소들의 행들(1402)을 포함할 수 있다. 이 예에서, 요소들(1404 및 1408) 각각은 배경 물체(206)에 대한 추정된 3D 모션 벡터를 포함할 수 있고, 요소들(1406) 각각은 중경 물체(204)의 추정된 3D 모션 벡터를 포함할 수 있으며, 요소들(1410) 각각은 전경 물체(202)의 추정된 3D 모션 벡터를 포함할 수 있다. 도 14에 포함된 동작 추정치들은 주로 설명을 위한 것이며, 포괄적인 것이거나 또는 도시된 정확한 형태로 제한되는 것은 아니다.
일부 예들에서, 여기에서 설명된 시스템들은 (1) 3D 동작 벡터들을 2D 동작 벡터들로 투영하고 (2) 합성 2D 프레임을 외삽하기 위해 투영된 2D 동작 벡터들을 사용함으로써(예를 들어, 위에서 설명한 방법 사용), 합성 2D 프레임들을 외삽하기 위해 3D 동작 벡터들을 사용할 수 있다. 3D 동작 벡터들을 2D 동작 벡터들에 투영하기 전에, 여기에서 설명된 시스템들은 3D 동작 벡터들에 대해 하나 이상의 연산을 수행할 수 있다. 예를 들어, 3D 동작 벡터들을 2D 동작 벡터들에 투영하기 전에, 여기에서 설명된 시스템들은 (예를 들어, 복수의 3D 동작 벡터들에 적절한 가중 필터를 적용함으로써) 3D 동작 벡터들로부터 노이즈를 제거할 수 있다.
도 11에 예시된 바와 같이, 단계 1110에서, 여기에서 설명된 시스템들 중 하나 이상은 합성 2D 프레임을 사용자에게 디스플레이할 수 있다. 예를 들어, 디스플레이 모듈(124)은 디스플레이(108)를 통해 합성 프레임들(122(1)-(N))의 일부 또는 전부를 사용자에게 디스플레이할 수 있다.
여기에서 설명된 시스템들은 다양한 방식으로 단계 1110을 수행할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들 및 방법들은 애플리케이션이 디스플레이의 원하는 또는 최적의 프레임 속도보다 낮은 프레임 속도로 3D 장면을 렌더링할 때는 언제든지 합성 2D 프레임들을 디스플레이할 수 있다. 예를 들어, 도 6에 도시된 바와 같이, 애플리케이션(102)은 초당 45 프레임으로 2D 프레임들(106(1)-(N))을 렌더링할 수 있고, 디스플레이(108)는 2D 프레임들(106(1)-(N)) 사이에서 합성 2D 프레임들(122(1)-(N))을 디스플레이할 수 있으므로, 2D 프레임들(106(1)-(N)) 및 합성 2D 프레임들(122(1)-(N))이 함께 초당 90 프레임으로 디스플레이되도록 한다. 다른 예에서, 도 7에 도시된 바와 같이, 애플리케이션(102)은 초당 90 프레임으로 디스플레이될 만큼 충분히 빠르게 2D 프레임(106(3))을 렌더링하지 못할 수 있다. 그러나, 이 예에 도시된 바와 같이, 디스플레이(108)는 2D 프레임들(106(2) 및 106(4)) 사이에서 합성 2D 프레임들(122(1) 및 122(2))을 디스플레이할 수 있으므로, 2D 프레임들(106)과 합성 2D 프레임들(122)이 함께 초당 90 프레임으로 디스플레이될 수 있다. 일부 예들에서, 애플리케이션이 원하는 또는 최적의 프레임 속도로 프레임들을 제공하지 못하는 경우, 여기에서 설명된 시스템들은 그 렌더링 프레임 속도를 감소하도록 애플리케이션에 지시하거나 또는 애플리케이션으로 하여금 그 렌더링 프레임 속도를 감소하게 할 수 있으며(예를 들어, 원하는 또는 최적의 프레임 속도의 절반으로), 외삽 합성 2D 프레임들을 사용하여 중간 프레임들(intermediate frames)을 제공할 수 있다.
상기 설명된 바와 같이, 본 개시의 실시예들은 진화하는 3D 장면으로부터의 깊이 정보 및 3D 장면으로부터 렌더링된 2D 프레임들로부터의 동작 추정들을 사용하여 보완적인 합성 2D 프레임들을 외삽할 수 있다. 일부 예들에서, 여기에서 설명된 시스템들 및 방법들은 VR 또는 AR 애플리케이션이 디스플레이의 원하는 또는 최적의 프레임 속도보다 낮은 프레임 속도로 3D 장면을 렌더링할 때는 언제든지 이러한 보완적인 합성 2D 프레임들을 디스플레이할 수 있으며, 이는 사용자들에게 매끄럽고 즐거운 VR 또는 AR 경험들을 보장한다. 추가적으로 또는 대안적으로, 여기에서 설명된 시스템들 및 방법들은 디스플레이의 원하는 또는 최적의 프레임 속도로 2D 프레임들을 렌더링할 수 없는 하드웨어에서 구동하는 VR 또는 AR 애플리케이션에 대해 보완적인 합성 2D 프레임들을 디스플레이할 수 있으며, 이는 이전에는 즐거운 VR 또는 AR 경험들을 제공할 수 없었던 낮은 성능의 하드웨어 상에서의 VR 또는 AR 경험들을 개선할 수 있다. 적어도 하나의 예에서, VR 또는 AR 애플리케이션에 의해 렌더링된 모든 2D 프레임에 대해 합성 2D 프레임을 디스플레이함으로써, 여기에서 설명된 시스템들 및 방법들은 VR 또는 AR 애플리케이션이 디스플레이의 원하는 또는 최적의 프레임 속도의 절반으로 2D 프레임들을 렌더링하게 할 수 있으며, 이는 3D 장면으로부터 동일한 수의 2D 프레임들을 생성하는 데 필요한 중앙 처리 장치(CPU) 및/또는 그래픽 처리 장치(GPU) 시간을 절반으로 줄일 수 있다.
일부 예들에서, 본 명세서에 설명된 시스템들 및 방법들은 후속 2D 프레임을 예측하기 위해 애니메이션, 카메라 병진 동작(camera translations), 머리 병진 동작(head translations) 등에 대한 2 개의 이전 2D 프레임들을 조사할 수 있다. 여기에서 설명된 시스템들 및 방법들은 애니메이션, 카메라 병진 운동, 머리 병진 운동 등을 2D 동작 벡터들로 나타낼 수 있으며, 이는 일부 상황들에서 노이즈가 될 수 있다. 외삽된 2D 프레임들을 생성하기 위해 2D 동작 벡터들을 사용하기 전에, 여기에서 설명된 시스템들 및 방법들은 가중치가 깊이 정보로부터 유도되는 가중 필터를 2D 동작 벡터들에 적용할 수 있고, 이는 2D 동작 벡터들에서 발견되는 노이즈를 감소할 수 있으며, 그에 따라 2D 동작 벡터들로부터 생성된 외삽된 2D 프레임들의 품질을 향상시킬 수 있다. 일부 예들에서, 시스템들 및 방법들은 깊이 정보를 사용하여 2D 동작 벡터들을 3D 동작 벡터들로 변환할 수 있으며, 이는 외삽된 2D 프레임들을 생성하기 위해 2D 동작 벡터들 대신에 사용될 수 있다.
상기 설명된 바와 같이, 여기에 설명 및/또는 예시된 컴퓨팅 장치들 및 시스템들은 여기에서 설명된 모듈들 내에 포함된 것들과 같은 컴퓨터 판독 가능 명령들을 실행할 수 있는 임의의 유형 또는 형태의 컴퓨팅 장치 또는 시스템을 광범위하게 나타낸다. 가장 기본적인 구성에서, 이러한 컴퓨팅 장치(들)는 각각 적어도 하나의 메모리 장치 및 적어도 하나의 물리적 프로세서를 포함할 수 있다.
일부 예들에서, "메모리 장치"라는 용어는 일반적으로 데이터 및/또는 컴퓨터 판독 가능 명령어들을 저장할 수 있는 임의의 유형 또는 형태의 휘발성 또는 비 휘발성 저장 장치 또는 매체를 지칭한다. 일례에서, 메모리 장치는 여기에서 설명된 모듈들 중 하나 이상을 저장, 로딩 및/또는 유지할 수 있다. 메모리 장치들의 예들은 RAM(Random Access Memory), ROM(Read Only Memory), 플래시 메모리, 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 광 디스크 드라이브, 캐시, 상기 동일한 것들의 하나 이상의 변형 또는 조합, 또는 임의의 다른 적절한 저장 메모리를 포함하며, 제한은 없다.
일부 예들에서, "물리적 프로세서"라는 용어는 일반적으로 컴퓨터 판독 가능 명령들을 해석 및/또는 실행할 수 있는 하드웨어 구현 프로세싱 유닛의 임의의 유형 또는 형태를 지칭한다. 일례에서, 물리적 프로세서는 상기 설명된 메모리 장치에 저장된 하나 이상의 모듈들을 액세스 및/또는 수정할 수 있다. 물리적 프로세서들의 예들은 마이크로 프로세서, 마이크로 컨트롤러, 중앙 처리 장치(CPU), 소프트 코어 프로세서를 구현하는 FPGA(Field-Programmable Gate Array), ASIC(Application-Specific Integrated Circuit), 상기 동일한 것들의 하나 이상의 부분들, 상기 동일한 것들의 하나 이상의 변형 또는 조합, 또는 임의의 다른 적절한 물리적 프로세서를 포함하며, 제한은 없다.
별도의 요소들로 예시되었지만, 여기에서 설명 및/또는 예시된 모듈들은 단일 모듈 또는 애플리케이션의 일부들을 나타낼 수 있다. 또한, 특정 실시예들에서, 이러한 모듈들 중 하나 이상은 컴퓨팅 장치에 의해 실행될 때 컴퓨팅 장치로 하여금 하나 이상의 작업들을 수행하게 할 수 있는 하나 이상의 소프트웨어 애플리케이션들 또는 프로그램들을 나타낼 수 있다. 예를 들어, 여기에서 설명 및/또는 예시된 하나 이상의 모듈들은 여기에서 설명 및/또는 예시된 하나 이상의 컴퓨팅 장치들 또는 시스템들에서 구동하도록 저장 및 구성된 모듈들을 나타낼 수 있다. 이러한 모듈들 중 하나 이상은 또한 하나 이상의 작업들을 수행하도록 구성된 하나 이상의 특수 목적 컴퓨터들의 전부 또는 일부를 나타낼 수 있다.
또한, 여기에서 설명된 하나 이상의 모듈들은 데이터, 물리적 장치들 및/또는 물리적 장치들의 표현들을 한 형태에서 다른 형태로 변환할 수 있다. 예를 들어, 여기에서 언급된 모듈들 중 하나 이상은 진화하는 3D 장면으로부터 렌더링된 2 개의 2D 프레임들 및 3D 장면에 대한 깊이 정보를 수신하고, 2 개의 2D 프레임들을 2D 동작 벡터들로 변환하고, 변환 결과를 2D 프레임들, 2D 동작 벡터들, 및 3D 장면에 대한 깊이 정보로부터 합성 2D 프레임을 외삽하는 시스템으로 출력하고, 변환 결과를 사용하여 2D 프레임들, 2D 동작 벡터들, 및 3D 장면에 대한 깊이 정보로부터 합성 2D 프레임을 외삽하고, 합성 2D 프레임을 사용자에게 디스플레이할 수 있다. 추가적으로 또는 대안적으로, 여기에서 언급된 모듈들 중 하나 이상은 컴퓨팅 장치에서 실행하고 컴퓨팅 장치에 데이터를 저장하고, 및/또는 그렇지 않으면 컴퓨팅 장치와 상호 작용함으로써, 프로세서, 휘발성 메모리, 비 휘발성 메모리, 및/또는 물리적 컴퓨팅 장치의 임의의 다른 부분을 한 형태에서 다른 형태로 변환할 수 있다.
일부 실시예들에서, "컴퓨터 판독 가능 매체"라는 용어는 일반적으로 컴퓨터 판독 가능 명령들을 저장하거나 전달할 수 있는 임의의 형태의 장치, 캐리어, 또는 매체를 지칭한다. 컴퓨터 판독 가능 매체의 예들은 반송파와 같은 전송 유형 매체와, 자기 저장 매체(예를 들어, 하드 디스크 드라이브, 테이프 드라이브, 및 플로피 디스크), 광학 저장 매체(예를 들어, 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD), 및 BLU-RAY 디스크), 전자 저장 매체(예를 들어, 솔리드 스테이트 드라이브 및 플래시 매체), 및 기타 배포 시스템들과 같은 비 일시적 유형 매체를 포함하며, 제한은 없다.
본 개시의 실시예들은 인공 현실 시스템을 포함하거나 이와 함께 구현될 수 있다. 인공 현실은 사용자에게 제공 전에 일부 방식으로 조정된 현실의 형태이고, 이는 예를 들어 가상 현실(VR), 증강 현실(AR), 혼합 현실(MR), 하이브리드 현실, 또는 이들의 일부 조합 및/또는 유도물을 포함할 수 있다. 인공 현실 컨텐츠는 완전하게 생성된 컨텐츠 또는 캡처된(예를 들어, 실제-세상(real-world)) 컨텐츠와 결합되는 생성된 컨텐츠를 포함할 수 있다. 인공 현실 컨텐츠는 비디오, 오디오, 햅틱 피드백 또는 이들의 일부 조합을 포함할 수 있으며, 이들 중 임의의 것은 단일 채널 또는 다중 채널(예를 들어, 시청자에게 3차원 효과를 생성하는 입체 비디오)로 제공될 수 있다. 추가적으로, 일부 실시예들에서, 인공 현실은 또한 예를 들어 인공 현실에서 컨텐츠를 생성하고/하거나 인공 현실에서 달리 사용되는(예를 들어, 활동들을 수행하는), 애플리케이션들, 제품들, 액세서리들, 서비스들 또는 이들의 일부 조합과 관련될 수 있다. 인공 현실 컨텐츠를 제공하는 인공 현실 시스템은 호스트 컴퓨터 시스템에 연결된 헤드-마운티드 디스플레이(HMD), 독립형 HMD, 모바일 디바이스 또는 컴퓨팅 시스템, 또는 인공 현실 컨텐츠를 하나 이상의 시청자들에게 제공할 수 있는 임의의 다른 하드웨어 플랫폼를 포함하여 다양한 플랫폼에서 구현될 수 있다.
여기에서 설명 및/또는 예시된 프로세스 파라미터들 및 단계들의 순서는 단지 예로서 제공되며 원하는 대로 변경될 수 있다. 예를 들어, 여기에서 예시 및/또는 설명된 단계들이 특정 순서로 도시되거나 논의될 수 있지만, 이들 단계들은 반드시 예시되거나 논의된 순서로 수행될 필요는 없다. 여기에서 설명 및/또는 예시된 다양한 예시적인 방법들은 또한 여기에서 설명되거나 예시된 단계들 중 하나 이상을 생략하거나, 개시된 것들에 추가하여 추가 단계들을 포함할 수 있다.
전술한 설명은 당업자가 본 명세서에 개시된 예시적인 실시예의 다양한 측면들을 가장 잘 활용할 수 있도록 제공되었다. 이러한 예시적인 설명은 포괄적이거나 개시된 임의의 정확한 형태로 제한되도록 의도되지 않는다. 본 개시의 사상 및 범위를 벗어나지 않고서 많은 수정들과 변경들이 가능하다. 따라서, 여기에 개시된 실시예들은 모든 면에서 예시적이고 제한적이지 않은 것으로 고려되어야 한다. 본 개시의 범위를 결정함에 있어 첨부된 청구 범위 및 그 등가물을 참조해야 한다.
달리 언급되지 않는 한, 명세서 및 청구 범위에서 사용되는 "연결된" 및 "결합된” (및 그 파생어)이라는 용어들은 직접 및 간접(즉, 다른 요소들 또는 구성 요소들을 통한) 연결을 허용하는 것으로 해석되어야 한다. 또한, 명세서 및 청구 범위에서 사용되는 단수 표현("a” 또는 "an”)의 용어들은 적어도 하나를 의미하는 것으로 해석되어야 한다. 마지막으로, 사용의 용이성을 위해, 명세서 및 청구 범위에서 사용되는 "포함하는" 및 "갖는” (및 그 파생어들)이라는 용어들은 "구비하는"이라는 용어와 상호 교환 가능하고 동일한 의미를 갖는다.

Claims (20)

  1. 컴퓨터 구현 방법에 있어서:
    진화하는 3차원 장면(evolving three-dimensional scene)을 묘사하는 제1의 2차원 프레임을 수신하는 단계로서, 상기 제1의 2차원 프레임은 상기 진화하는 3차원 장면 내의 복수의 요소들을 묘사하는, 상기 제1의 2차원 프레임을 수신하는 단계;
    상기 진화하는 3차원 장면을 묘사하는 제2의 2차원 프레임을 수신하는 단계로서, 상기 제2의 2차원 프레임은 상기 복수의 요소들을 묘사하는, 상기 제2의 2차원 프레임을 수신하는 단계;
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임으로부터 복수의 2차원 동작 벡터들(two-dimensional motion vectors)을 유도하는 단계로서, 상기 복수의 2차원 동작 벡터들 각각은 상기 제1의 2차원 프레임 내의 요소의 좌표들로부터 상기 제2의 2차원 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 포함하는, 상기 복수의 2차원 동작 벡터들을 유도하는 단계;
    상기 진화하는 3차원 장면에 대한 깊이 정보를 수신하는 단계;
    합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는 단계; 및
    상기 합성 2차원 프레임을 사용자에게 디스플레이하는 단계를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 원하는 프레임 속도의 절반으로 상기 진화하는 3차원 장면으로부터 순차적으로 렌더링되고;
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 상기 원하는 프레임 속도의 절반으로 상기 사용자에게 순차적으로 디스플레이되고;
    상기 합성 2차원 프레임을 디스플레이하는 단계는 상기 원하는 프레임 속도로 상기 합성 2차원 프레임을 디스플레이하는 단계를 포함하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 제1의 2차원 프레임, 상기 제2의 2차원 프레임, 및 제3의 2차원 프레임은 상기 진화하는 3차원 장면으로부터 순차적으로 렌더링되고;
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 원하는 프레임 속도로 상기 사용자에게 순차적으로 디스플레이되고;
    상기 합성 2차원 프레임을 디스플레이하는 단계는:
    상기 제3의 2차원 프레임이 상기 사용자에게 상기 원하는 프레임 속도로 디스플레이되도록 제시간에 렌더링하는 데 실패한 것으로 결정하는 단계; 및
    상기 제3의 2차원 프레임 대신 상기 합성 2차원 프레임을 상기 원하는 프레임 속도로 디스플레이하는 단계를 포함하는, 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는 상기 복수의 2차원 동작 벡터들에 가중 필터(weighted filter)를 적용함으로써 상기 복수의 2차원 동작 벡터들로부터 노이즈를 제거하는 단계를 포함하고;
    상기 깊이 정보는 상기 가중 필터의 가중치들을 유도하는 데 사용되는, 컴퓨터 구현 방법.
  5. 제4항에 있어서, 상기 가중 필터는 중앙-가중 중간값 필터(center-weighted median filter)인, 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는:
    상기 복수의 2차원 동작 벡터들을 복수의 3차원 동작 벡터들로 변환하기 위해 상기 깊이 정보를 사용하는 단계; 및
    상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 3차원 동작 벡터들을 사용하는 단계를 포함하는, 컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임으로부터 상기 복수의 2차원 동작 벡터들을 유도하는 단계는:
    하드웨어 동작 추정기(hardware motion estimator)에 대한 입력으로서 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임을 전송하는 단계; 및
    상기 하드웨어 동작 추정기로부터의 출력으로서 상기 복수의 2차원 동작 벡터들을 수신하는 단계를 포함하는, 컴퓨터 구현 방법.
  8. 제1항에 있어서, 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 가상 현실 애플리케이션 또는 증강 현실 애플리케이션으로부터 수신되는, 컴퓨터 구현 방법.
  9. 제1항에 있어서, 상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는 단계는, 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보에 적어도 부분적으로 기초하여 상기 제2의 2차원 프레임을 워핑(warping)함으로써 상기 제2의 2차원 프레임으로부터 상기 합성 2차원 프레임을 유도하는 단계를 포함하는, 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    물리적 세계에서 사용자의 병진 동작(translational motion)을 추적하는 단계; 및
    상기 사용자의 병진 동작을 설명하기 위해 상기 복수의 2차원 동작 벡터들을 유도하기 전에 상기 제2의 2차원 프레임의 픽셀 요소들을 재투영하도록 상기 깊이 정보를 사용하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  11. 시스템으로서:
    메모리에 저장된 프레임 수신 모듈로서,
    진화하는 3차원 장면을 묘사하는 제1의 2차원 프레임으로서, 상기 진화하는 3차원 장면 내의 복수의 요소들을 묘사하는 상기 제1의 2차원 프레임, 및
    상기 진화하는 3차원 장면을 묘사하는 제2의 2차원 프레임으로서, 상기 복수의 요소들을 묘사하는 상기 제2의 2차원 프레임을 수신하는, 상기 프레임 수신 모듈;
    메모리에 저장된 유도 모듈로서, 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임으로부터 복수의 2차원 동작 벡터들을 유도하고, 상기 복수의 2차원 동작 벡터들 각각은 상기 제1의 2차원 프레임 내의 요소의 좌표들로부터 상기 제2의 2차원 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 포함하는, 상기 유도 모듈;
    메모리에 저장된 깊이 정보 수신 모듈로서, 상기 진화하는 3차원 장면에 대한 깊이 정보를 수신하는, 상기 깊이 정보 수신 모듈;
    메모리에 저장된 외삽 모듈로서, 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는 상기 외삽 모듈; 및
    메모리에 저장된 디스플레이 모듈로서, 상기 합성 2차원 프레임을 사용자에게 디스플레이하는 상기 디스플레이 모듈; 및
    상기 프레임 수신 모듈, 상기 유도 모듈, 상기 깊이 정보 수신 모듈, 상기 외삽 모듈, 및 상기 디스플레이 모듈을 실행하는 적어도 하나의 프로세서를 포함하는, 시스템.
  12. 제11항에 있어서,
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 원하는 프레임 속도의 절반으로 상기 진화하는 3차원 장면으로부터 순차적으로 렌더링되고;
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임은 상기 원하는 프레임 속도의 절반으로 상기 사용자에게 순차적으로 디스플레이되고;
    상기 디스플레이 모듈은 상기 원하는 프레임 속도로 상기 합성 2차원 프레임을 디스플레이하는, 시스템.
  13. 제11항에 있어서,
    상기 제1의 2차원 프레임, 상기 제2의 2차원 프레임, 및 제3의 2차원 프레임이 상기 진화하는 3차원 장면으로부터 순차적으로 렌더링되고;
    상기 디스플레이 모듈은 또한 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임을 원하는 프레임 속도로 상기 사용자에게 순차적으로 디스플레이하고;
    상기 디스플레이 모듈은:
    상기 제3의 2차원 프레임이 상기 사용자에게 상기 원하는 프레임 속도로 디스플레이되도록 제시간에 렌더링하는 데 실패한 것으로 결정하고;
    상기 제3의 2차원 프레임 대신 상기 합성 2차원 프레임을 상기 원하는 프레임 속도로 디스플레이하는 것에 의해,
    상기 합성 2차원 프레임을 디스플레이하는, 시스템.
  14. 제11항에 있어서,
    상기 외삽 모듈은 상기 복수의 2차원 동작 벡터들에 가중 필터를 적용하여 상기 복수의 2차원 동작 벡터들로부터 노이즈를 제거함으로써 상기 합성 2차원 프레임을 외삽하도록 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하고;
    상기 깊이 정보는 상기 가중 필터의 가중치들을 유도하는 데 사용되는, 시스템.
  15. 제14항에 있어서, 상기 가중 필터는 중앙-가중 중간값 필터인, 시스템.
  16. 제 11 항에 있어서,
    상기 외삽 모듈은 상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하고, 상기 외삽은:
    상기 복수의 2차원 동작 벡터들을 복수의 3차원 동작 벡터들로 변환하기 위해 상기 깊이 정보를 사용하고;
    상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 3차원 동작 벡터들을 사용하여 행해지는, 시스템.
  17. 제11항에 있어서,
    상기 유도 모듈은 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임으로부터 상기 복수의 2차원 동작 벡터들을 유도하고, 상기 유도는:
    하드웨어 동작 추정기에 대한 입력으로서 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임을 전송하고;
    상기 하드웨어 동작 추정기로부터의 출력으로서 상기 복수의 2차원 동작 벡터들을 수신하여 행해지는, 시스템.
  18. 제11항에 있어서, 상기 프레임 수신 모듈은 가상 현실 애플리케이션 또는 증강 현실 애플리케이션으로부터 상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임을 수신하는, 시스템.
  19. 제11항에 있어서, 상기 외삽 모듈은 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보에 적어도 부분적으로 기초하여 상기 제2의 2차원 프레임을 워핑함으로써 상기 제2의 2차원 프레임으로부터 상기 합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하는, 시스템.
  20. 컴퓨터 실행 가능 명령들을 포함하는 컴퓨터 판독 가능 매체로서, 상기 컴퓨터 실행 가능 명령들은 컴퓨팅 장치의 적어도 하나의 프로세서에 의해 실행될 때 상기 컴퓨팅 장치로 하여금:
    진화하는 3차원 장면을 묘사하는 제1의 2차원 프레임으로서, 상기 진화하는 3차원 장면 내의 복수의 요소들을 묘사하는 상기 제1의 2차원 프레임을 수신하게 하고;
    상기 진화하는 3차원 장면을 묘사하는 제2의 2차원 프레임으로서, 상기 복수의 요소들을 묘사하는 상기 제2의 2차원 프레임을 수신하게 하고;
    상기 제1의 2차원 프레임 및 상기 제2의 2차원 프레임으로부터 복수의 2차원 동작 벡터들을 유도하게 하고-상기 복수의 2차원 동작 벡터들 각각은 상기 제1의 2차원 프레임 내의 요소의 좌표들로부터 상기 제2의 2차원 프레임 내의 요소의 좌표들까지의 추정된 오프셋을 포함함-;
    상기 진화하는 3차원 장면에 대한 깊이 정보를 수신하게 하고;
    합성 2차원 프레임을 외삽하기 위해 상기 복수의 2차원 동작 벡터들 및 상기 깊이 정보를 사용하게 하고;
    상기 합성 2차원 프레임을 사용자에게 디스플레이하게 하는, 컴퓨터 판독 가능 매체.
KR1020217006142A 2018-08-02 2019-08-01 2차원 이미지를 외삽하기 위해 깊이 정보를 사용하는 시스템 및 방법 KR20210038659A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/053,741 US10595000B1 (en) 2018-08-02 2018-08-02 Systems and methods for using depth information to extrapolate two-dimentional images
US16/053,741 2018-08-02
PCT/US2019/044708 WO2020028690A1 (en) 2018-08-02 2019-08-01 Systems and methods for using depth information to extrapolate two-dimentional images

Publications (1)

Publication Number Publication Date
KR20210038659A true KR20210038659A (ko) 2021-04-07

Family

ID=67659992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006142A KR20210038659A (ko) 2018-08-02 2019-08-01 2차원 이미지를 외삽하기 위해 깊이 정보를 사용하는 시스템 및 방법

Country Status (6)

Country Link
US (2) US10595000B1 (ko)
EP (1) EP3830795A1 (ko)
JP (1) JP2021533646A (ko)
KR (1) KR20210038659A (ko)
CN (1) CN112789660A (ko)
WO (1) WO2020028690A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180275837A1 (en) * 2017-03-23 2018-09-27 RideOn Ltd. Graphical user interface (gui) controls
US10595000B1 (en) 2018-08-02 2020-03-17 Facebook Technologies, Llc Systems and methods for using depth information to extrapolate two-dimentional images
US20220230327A1 (en) * 2019-06-25 2022-07-21 Arm Limited Graphics processing systems
US11783533B2 (en) * 2021-10-11 2023-10-10 Meta Platforms Technologies, Llc Frame extrapolation with application generated motion vector and depth

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101183000B1 (ko) * 2004-07-30 2012-09-18 익스트림 리얼리티 엘티디. 이미지 프로세싱을 기반으로 한 3d 공간 차원용 시스템 및방법
US8600189B2 (en) * 2007-11-12 2013-12-03 Qualcomm Incorporated Block-based image stabilization
US10491916B2 (en) * 2013-10-01 2019-11-26 Advanced Micro Devices, Inc. Exploiting camera depth information for video encoding
US9940541B2 (en) * 2015-07-15 2018-04-10 Fyusion, Inc. Artificially rendering images using interpolation of tracked control points
US10887621B2 (en) * 2016-07-08 2021-01-05 Vid Scale, Inc. 360-degree video coding using geometry projection
KR102452314B1 (ko) * 2016-09-08 2022-10-07 삼성전자주식회사 컨텐츠 재생 방법 및 이를 지원하는 전자 장치
US10762691B2 (en) * 2017-09-08 2020-09-01 Microsoft Technology Licensing, Llc Techniques for compensating variable display device latency in image display
US10595000B1 (en) 2018-08-02 2020-03-17 Facebook Technologies, Llc Systems and methods for using depth information to extrapolate two-dimentional images

Also Published As

Publication number Publication date
CN112789660A (zh) 2021-05-11
US10595000B1 (en) 2020-03-17
JP2021533646A (ja) 2021-12-02
EP3830795A1 (en) 2021-06-09
WO2020028690A1 (en) 2020-02-06
US10979690B1 (en) 2021-04-13

Similar Documents

Publication Publication Date Title
Attal et al. MatryODShka: Real-time 6DoF video view synthesis using multi-sphere images
US10979690B1 (en) Systems and methods for using depth information to extrapolate two-dimensional images
CN109087346B (zh) 单目深度模型的训练方法、训练装置和电子设备
US20130321396A1 (en) Multi-input free viewpoint video processing pipeline
US20130127988A1 (en) Modifying the viewpoint of a digital image
US8611642B2 (en) Forming a steroscopic image using range map
CN108965847B (zh) 一种全景视频数据的处理方法及装置
US9342861B2 (en) Alternate viewpoint rendering
US20130129192A1 (en) Range map determination for a video frame
GB2480422A (en) Generation of candidate motion vectors based on orientation and position of a camera or viewer
Li et al. Depth-aware stereo video retargeting
KR20100040593A (ko) 영상처리 장치 및 방법
TWI813098B (zh) 用於新穎視圖合成之神經混合
KR20180099703A (ko) 적응형 초점면을 갖는 가상 현실을 렌더링하기 위한 구성
JP4892113B2 (ja) 画像処理方法及び装置
US20130329985A1 (en) Generating a three-dimensional image
JP2019534511A (ja) 自由動作fvvアプリケーションのためのマルチレイヤuvマップに基づくテクスチャレンダリング
WO2022263923A1 (en) Techniques for generating light field data by combining multiple synthesized viewpoints
Kellnhofer et al. Optimizing disparity for motion in depth
US20170103562A1 (en) Systems and methods for arranging scenes of animated content to stimulate three-dimensionality
US11748918B1 (en) Synthesized camera arrays for rendering novel viewpoints
De Sorbier et al. Augmented reality for 3D TV using depth camera input
KR20170033293A (ko) 입체 비디오 생성
US11954786B2 (en) Reprojection for high field rate displays
Geng et al. Flat3d: browsing stereo images on a conventional screen

Legal Events

Date Code Title Description
E902 Notification of reason for refusal