KR20230101880A - 실시간 멀티뷰 동영상 변환 방법 및 시스템 - Google Patents

실시간 멀티뷰 동영상 변환 방법 및 시스템 Download PDF

Info

Publication number
KR20230101880A
KR20230101880A KR1020237018931A KR20237018931A KR20230101880A KR 20230101880 A KR20230101880 A KR 20230101880A KR 1020237018931 A KR1020237018931 A KR 1020237018931A KR 20237018931 A KR20237018931 A KR 20237018931A KR 20230101880 A KR20230101880 A KR 20230101880A
Authority
KR
South Korea
Prior art keywords
view
video
frames
memory
frame
Prior art date
Application number
KR1020237018931A
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 KR20230101880A publication Critical patent/KR20230101880A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/349Multi-view displays for displaying three or more geometrical viewpoints without viewer tracking
    • H04N13/351Multi-view displays for displaying three or more geometrical viewpoints without viewer tracking for displaying simultaneously
    • 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/158Switching image signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • 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/111Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
    • 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/161Encoding, multiplexing or demultiplexing different image signal components
    • 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/167Synchronising or controlling image signals
    • 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/189Recording image signals; Reproducing recorded image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/261Image signal generators with monoscopic-to-stereoscopic image conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21805Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42653Internal components of the client ; Characteristics thereof for processing graphics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content
    • 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/20212Image combination
    • G06T2207/20221Image fusion; Image merging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/261Image signal generators with monoscopic-to-stereoscopic image conversion
    • H04N13/264Image signal generators with monoscopic-to-stereoscopic image conversion using the relative movement of objects in two video frames or fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Graphics (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

시스템들 및 방법들은 실시간 멀티뷰 동영상 변환에 관한 것이다. 이러한 변환은 2차원(2D) 프레임들을 포함하는 동영상 스트림을 수신하는 것을 포함할 수 있으며, 여기서 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응된다. 또한, 카메라 기준선 및 중심 시점이 식별된다. 이러한 파라미터들은 사용자-지정되거나 미리 결정될 수 있다. 카메라 기준선 및 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프가 결정될 수 있다. 이 뷰는 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 생성된다. 멀티뷰 동영상이 디스플레이를 위해 렌더링되고, 멀티뷰 동영상은 멀티뷰 프레임의 뷰를 포함한다.

Description

실시간 멀티뷰 동영상 변환 방법 및 시스템
관련 출원에 대한 상호 참조
본 출원은, 그 전체가 본 명세서에 참조로서 통합되는, 2020년 12월 07일에 출원된 미국 가특허 출원 제 63/122,419호의 우선권 이익을 주장한다.
연방 후원 연구 또는 개발에 관한 진술
N/A
동영상 스트림은 일련의 프레임들을 포함하며, 각각의 프레임은 2차원(2D) 이미지로 구성될 수 있다. 동영상 스트림들은 동영상 코딩 사양에 따라 압축될 수 있어 동영상 파일 크기가 감소되고 그에 따라 네트워크 대역폭이 경감될 수 있다. 동영상 스트림은 컴퓨팅 장치에 의해 다양한 소스로부터 수신될 수 있다. 동영상 스트림들은 디스플레이를 위해 그래픽스 파이프라인에 의해 디코딩되고 렌더링될 수 있다. 이러한 프레임들을 특정 프레임 속도로 렌더링하면 동영상이 디스플레이된다.
홀로그래픽 디스플레이, 3차원(3D) 디스플레이, 체적형 디스플레이, 라이트필드 디스플레이 및 기타 유사한 디스플레이와 같은 새로운 디스플레이 기술들은 종래의 2D 동영상보다 더욱 몰입감 있는 시청 경험을 제공할 수 있다. 2D 동영상을 다른 형식으로 변환하는 기술은 동영상이 렌더링될 수 있기 이전에 상당한 전처리 노력을 필요로 할 수 있다.
본 명세서에 설명된 원리들에 따른 예들 및 실시 예들의 다양한 특징들은 동일한 도면 부호가 동일한 구조적 요소를 나타내는 첨부된 도면과 관련하여 취해진 다음의 상세한 설명을 참조하여 보다 용이하게 이해될 수 있다.
도 1은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2차원(2D) 동영상 스트림을 멀티뷰 동영상으로 변환하기 위한 프로세스의 개요를 제공한다.
도 2는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 수신하고 2D 프레임들을 버퍼에 로딩하는 것을 도시한다.
도 3은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 프레임들의 서브세트로부터 멀티뷰 동영상 프레임의 뷰를 생성하는 일 예를 도시한다.
도 4는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 파라미터들을 수신하기 위한 사용자 인터페이스의 일 예를 도시한다.
도 5는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 일 예를 도시한다.
도 6은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 입력으로서 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 실시간 변환 및 렌더링하는 일 예를 도시한다.
도 7a는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 뷰를 생성하기 위해 시간-인접 2D 프레임들의 시간 차이들에 비례하는 가중 블렌드를 수행하는 일 예를 도시한다.
도 7b는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 뷰를 생성하기 위해 시간-인접 2D 프레임들의 모션-기반 블렌드를 수행하는 일 예를 도시한다.
도 8은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 실시간으로 멀티뷰 동영상으로 변환하기 위한 아키텍처의 일 예를 도시한다.
도 9는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 실시간 멀티뷰 동영상 변환을 수행하는 시스템 및 방법의 흐름도를 도시한다.
도 10은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 실시간 멀티뷰 동영상 변환을 수행하는 컴퓨팅 장치의 일 예를 묘사하는 개략적인 블록도이다.
일부 예들 및 실시 예들은 전술한 도면들에 도시된 특징들에 부가되거나 그 대신에 포함되는 다른 특징들을 갖는다. 이들 및 다른 특징들은 전술한 도면을 참조하여 이하에서 설명된다.
본 명세서에 설명된 원리들에 따른 예들 및 실시 예들은 2차원(2D) 동영상 스트림(video stream)을 실시간으로 멀티뷰 동영상(multiview video)으로 변환하는 기술들을 제공한다. 특히, 실시 예들은 2D 동영상 스트림을 수신하고 2D 동영상 스트림의 2D 프레임들을 변환을 위해 버퍼에 덤핑(dumping)하는 것에 관한 것이다. 2D 동영상 스트림은 카메라 뷰가 장면에 대해 선형 또는 궤도 방향을 따라 이동하는 곳에서 캡처된 장면을 나타낼 수 있다. 이는 특정 방향을 따라 패닝(panning)하거나 또는 객체 주위를 원을 그리며 도는(circling) 것을 포함할 수 있다. 실시 예들은 2D 프레임들의 샘플링된 서브세트로부터 멀티뷰 프레임의 상이한 뷰들을 계산하는 것에 관한 것이다. 예를 들어 카메라 기준선(camera baseline) 또는 중심 시점(center viewpoint)과 같은 다양한 멀티뷰 파라미터들이 멀티뷰 프레임의 각각의 뷰(view)에 대한 타겟 타임스탬프들(target timestamps)을 정의하는데 이용된다. 타겟 타임스탬프들을 이용하여, 시간-인접 2D 프레임들이 식별(예를 들어, 샘플링)되고 멀티뷰 프레임의 각각의 뷰를 생성하기 위해 블렌딩(blending)된다. 멀티뷰 프레임들은 입력되는 2D 동영상 스트림으로부터 실시간으로 생성되어 멀티뷰 동영상의 실시간 변환(conversion) 및 렌더링(rendering)을 허용할 수 있다.
실시 예들에 따르면, 타임스탬프들을 기반으로 2D 프레임들을 샘플링함으로써, 멀티뷰 프레임들이 실시간으로 동적으로 생성될 수 있다. 또한, 사용자 인터페이스는 멀티뷰 파라미터들에 대한 변경이 즉석에서 이루어지도록 허용할 수 있고, 이에 의해 실시간 렌더링된 출력이 동적으로 조절될 수 있다.
도 1은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2차원(2D) 동영상 스트림을 멀티뷰 동영상으로 변환하기 위한 프로세스의 개요를 제공한다. 동영상 캡처 프로세스(103)는 장면(105)의 동영상을 캡처하는 것을 포함한다. 장면(105)은 관찰자가 관심을 갖는 객체들의 물리적인 배치일 수 있다. 동영상 캡처 프로세스(103)는 스튜디오 또는 임의의 기타의 물리적 환경에서 이루어질 수 있다. 목표는 카메라(107)를 이용하여 장면(105)을 시각적으로 캡처하는 것이다. 카메라(107)는 동영상을 캡처할 수 있고, 여기서 동영상은 일련의 시간-순서 이미지들(프레임들로 지칭됨)로 구성된다. 카메라는 장면에 대해 특정 방향(109)을 따라 이동하여 장면(105)의 상이한 각도들을 촬영할 수 있다. 방향(109)은 장면의 상이한 시야각들을 획득하기 위해 주로 선형 또는 궤도일 수 있다.
카메라(107)는 장면(105)에 대해 이동하는 이동 수단에 부착될 수 있다. 이동 수단은 드론 또는 기타의 무인항공기(unmanned aerial vehicle; UAV)일 수 있다. 일부 예들에서, 장면(105)은 고정 카메라(107)에 대해 회전하는 턴테이블 상에 설정된 하나 이상의 객체들을 포함할 수 있다. 동영상 캡처 프로세스(103)는 궁극적으로 물리적 공간을 점유하는 장면의 시각적 세부 사항들을 2D 동영상 스트림(112)으로 변환한다. 2D 동영상 스트림은 일련의 시간-순서 2D 프레임들(115)로 구성될 수 있다. 각각의 2D 프레임(115)은 특정 시간 지점에서 장면의 단일 뷰를 나타낸다. 시간은 대응하는 2D 프레임에 특정한 타임스탬프로서 기록될 수 있다. 타겟 프레임 속도로 2D 프레임들을 순차적으로 렌더링하면 시청자에 의해 지각되는 2D 동영상이 생성된다.
2D 동영상 스트림(112)은 물리적 장면의 동영상으로서 설명되지만, 2D 동영상 스트림(112)은 3D 모델에 대해 가상 카메라를 이동시킴으로써 생성될 수 있다는 것을 이해하여야 한다. 예를 들어, 게임 엔진 및 기타의 3D 모델 생성기는 3D 모델(예를 들어, 포인트 클라우드, 표면 메쉬, 텍스처 맵 등의 측면에서 정의된 장면의 체적형 모델)에 가상 카메라(위치 및 방향의 측면에서 정의됨)를 적용함으로써 2D 동영상의 생성을 허용할 수 있다.
카메라(107)는 네트워크를 통해 2D 동영상 스트림을 저장 공간으로 전송하거나 또는 다른 방식으로 업로드할 수 있다. 저장 공간은 메모리 저장소, 서버, 클라우드 기반 저장소, 또는 동영상 파일을 수신하고 저장하도록 구성된 기타의 컴퓨팅 시스템을 포함할 수 있다. 네트워크는 인터넷, 인트라넷, 무선 네트워크, 유선 네트워크, 또는 데이터의 흐름을 용이하게 하는 임의의 다른 네트워크를 포함할 수 있다. 2D 동영상 스트림(112)은 특정 코딩 형식에 따라 코딩될 수 있다. 코딩은 네트워크 대역폭을 수용하도록 파일 크기를 감소시키기 위해 손실 또는 무손실 압축을 적용하는 것을 포함한다. 동영상 코딩 형식은, 예를 들어 H.264 형식, H.265 형식, 엠팩(Moving Picture Experts Group; MPEG)에서 규정한 임의의 형식 등일 수 있다. 또한, 2D 동영상 스트림(112)은 IP(Internet Protocol) 네트워크를 통한 전송을 위해 패킷화될 수 있다.
멀티뷰 변환 프로세스(119)를 이용하여 2D 동영상 스트림(112)으로부터 멀티뷰 동영상(118)이 생성될 수 있다. 멀티뷰 변환 프로세스(119)는 2D 동영상 스트림을 디스플레이를 위해 렌더링될 수 있는 멀티뷰 동영상(118)으로 변환하는 컴퓨터-구현 프로세스이다. 멀티뷰 변환 프로세스(119)는 프로세서에 의해 실행 가능한 소프트웨어 프로그램, 루틴 또는 모듈로서 구현될 수 있다. 멀티뷰 변환 프로세스(119)는 압축되고 패킷화된 데이터 스트림으로서 2D 동영상 스트림(112)을 수신할 수 있다. 예를 들어, 멀티뷰 변환 프로세스(119)는 저장 공간으로부터 2D 동영상 스트림(112)을 검색하기 위해 API(Application Programming Interface) 또는 기타의 함수 호출을 이용할 수 있다. 2D 동영상 스트림은 라이브 동영상일 수 있는데, 여기서 동영상 캡처 프로세스(103)는 장면(105)의 동영상을 캡처하면서 2D 동영상 스트림을 전송하고, 2D 동영상은 멀티뷰 변환 프로세스를 구현하는 컴퓨팅 시스템으로 스트리밍된다. 일부 실시 예들에서, 2D 동영상 스트림(112)은 요청 시에 컴퓨팅 장치로 스트리밍되도록 구성된 사전 녹화된(라이브가 아닌) 동영상을 포함한다.
멀티뷰 동영상(118)은 하나 이상의 컴퓨터 파일 또는 기타의 데이터 형식으로 메모리에 저장될 수 있다. 멀티뷰 동영상(118)은 멀티뷰 프레임 A 내지 멀티뷰 프레임 N으로 묘사된 일련의 멀티뷰 프레임들(121)을 포함한다. 멀티뷰 프레임들(121)은 지정된 프레임 속도(초당 프레임 속도(frame rate per second; FPS)로 나타냄)로 시간 순서로 디스플레이된다. 따라서, 멀티뷰 프레임(121)은 멀티뷰 이미지이다. 각각의 멀티뷰 프레임(121)은 복수의 뷰들(124)로 구성된다. 예를 들어, 멀티뷰 프레임 A는 뷰 1 내지 뷰 n을 갖는 것으로 묘사되는데, 이는 멀티뷰 동영상(118) 내의 각각의 멀티뷰 프레임(121)에 적용될 수 있다. 일부 실시 예들에서, 멀티뷰 디스플레이 상에 렌더링되는 경우, 멀티뷰 프레임(121)의 각각의 뷰(124)는 멀티뷰 디스플레이에 대해 수직인 표면에서의 각각의 주 각도 방향에 대응된다. 결과적으로, 복수의 상이한 뷰들(124)이 시청자에 의해 동시에 지각될 수 있다. 그 결과 3차원(3D) 또는 라이트필드 이미지 컨텐츠가 생성된다.
실시 예들은 2D 동영상 스트림을 실시간으로 즉석에서 멀티뷰 동영상으로 변환할 수 있는 멀티뷰 변환 프로세스(119)에 관한 것이다. 또한, 멀티뷰 변환 프로세스(119)는 2D 동영상 스트림이 수신됨에 따라 실시간 렌더링 및 디스플레이를 허용한다. 본 명세서에서, '2차원 디스플레이' 또는 '2D 디스플레이'는 이미지가 보여지는 방향에 관계 없이 (즉, 2D 디스플레이의 미리 정의된 시야각 또는 시야 범위 내에서) 실질적으로 동일한 이미지의 뷰를 제공하도록 구성된 디스플레이로서 정의된다. 많은 스마트 폰들 및 컴퓨터 모니터들에서 찾아볼 수 있는 통상적인 액정 디스플레이(LCD)가 2D 디스플레이들의 예들이다. 대조적으로, 본 명세서에서, '멀티뷰 디스플레이(multiview display)'는 사용자의 관점으로부터, 동시에 상이한 뷰 방향들로 또는 상이한 뷰 방향들로부터 멀티뷰 이미지의 상이한 뷰들을 제공하도록 구성된 전자 디스플레이 또는 디스플레이 시스템으로서 정의된다. 특히, 상이한 뷰들은 멀티뷰 프레임의 상이한 관점 뷰들(perspective views)을 나타낼 수 있다.
멀티뷰 디스플레이는 상이한 이미지 뷰들이 동시에 지각되도록 상이한 이미지 뷰들의 표현을 수용하는 다양한 기술들을 이용하여 구현될 수 있다. 멀티뷰 디스플레이의 일 예는 상이한 뷰들의 주 각도 방향들을 제어하기 위해 회절 격자들을 채용하는 것이다. 일부 실시 예들에 따르면, 멀티뷰 디스플레이는, 상이한 뷰들에 대응되는 상이한 방향들 및 상이한 색상들의 복수의 광빔들을 표현하는 라이트필드(lightfield) 디스플레이일 수 있다. 일부 예들에서, 라이트필드 디스플레이는, 깊이를 지각하기 위한 특별한 아이웨어(eye wear)의 필요 없이, 회절 격자들을 이용하여 멀티뷰 이미지들의 오토스테레오스코픽(autostereoscopic) 표현들을 제공할 수 있는 소위 '안경 불필요' 3 차원(3D) 디스플레이이다. 일부 실시 예들에서, 멀티뷰 디스플레이는 어떤 뷰들이 사용자의 각각의 눈에 의해 지각되는지를 제어하기 위해 안경 또는 기타의 아이웨어를 필요로 할 수 있다.
본 명세서에서 사용되는 바와 같이, '시차(disparity)'는 대응하는 위치들에서의 멀티뷰 이미지의 적어도 2개의 뷰들 사이의 차이로서 정의된다. 예를 들어, 입체시의 맥락에서, 좌안과 우안은 동일한 객체를 볼 수 있지만, 안구 간 시야각의 차이로 인해 약간 상이한 위치들에서 동일한 객체를 볼 수 있다. 이 차이는 시차로서 정량화될 수 있다. 멀티뷰 이미지에 걸친 시차의 변화는 깊이감을 전달한다.
본 명세서에서 사용되는 바와 같이, '기준선(baseline)' 또는 '카메라 기준선'은 장면의 대응하는 뷰들을 캡처하는 2개의 카메라들(또는 상이한 시간 지점들에 있는 단일 카메라) 사이의 거리로서 정의된다. 예를 들어, 입체시의 맥락에서, 기준선은 좌안과 우안 사이의 거리이다. 기준선이 길어지면 시차가 증가하고 멀티뷰 이미지의 3D 효과가 향상될 수 있다.
본 명세서에서 사용되는 바와 같이, '수렴 오프셋(convergence offset)'은 수렴 평면을 따르는 지점과 카메라 사이의 거리를 지칭한다. 수렴 오프셋을 수정하면 수렴 평면의 위치가 변경되어 다른 깊이의 새로운 객체들에 멀티뷰 이미지의 초점이 다시 맞춰진다.
또한, 본 명세서에서 사용되는 바와 같이, 단수 표현은 특허 분야에서의 통상적인 의미, 즉 '하나 이상'의 의미를 갖는 것으로 의도된다. 예를 들어, 본 명세서에서 '프로세서'는 그 자체로서 하나 이상의 프로세서를 의미하고, '메모리'는 '하나 이상의 메모리 컴포넌트들'을 의미한다.
실시 예들은 실시간 멀티뷰 동영상 변환의 컴퓨터-구현 방법에 관한 것이다. 보다 상세히 후술되는 도 10은 실시간 멀티뷰 동영상 변환 방법을 구현하도록 구성된 컴퓨팅 장치의 일 예를 제공한다. 도 1과 관련하여 전술한 멀티뷰 변환 프로세스(119)는 실시간 멀티뷰 변환을 수행하도록 구성될 수 있다. 실시간 멀티뷰 변환은 2차원(2D) 프레임들을 포함하는 동영상 스트림을 수신하는 것을 포함할 수 있으며, 여기서 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응된다. 실시간 멀티뷰 변환은 카메라 기준선 및 중심 시점을 식별하는 것을 포함할 수 있다. 실시간 멀티뷰 변환은 카메라 기준선 및 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하는 것을 더 포함할 수 있다. 실시간 멀티뷰 변환은 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 뷰를 생성하는 것을 더 포함할 수 있다. 실시간 멀티뷰 변환은 멀티뷰 프레임의 뷰를 포함하는 멀티뷰 동영상을 디스플레이를 위해 렌더링하는 것을 더 포함할 수 있다.
일부 실시 예들에서, 실시간 멀티뷰 변환은 그래픽스 처리 유닛(graphics processing unit; GPU) 메모리에서 2D 프레임들을 추출하기 위해 동영상 스트림을 디코딩하는 것을 포함할 수 있다. 일부 실시 예들에서, 실시간 멀티뷰 변환은 뷰를 생성하기 위해 GPU 메모리로부터 중앙 처리 유닛(central processing unit; CPU) 메모리로 2D 프레임들을 로딩하는 것을 포함할 수 있다. 일부 실시 예들에서, 실시간 멀티뷰 변환은 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 것을 포함할 수 있다.
일부 실시 예들은, 사용자-지정 파라미터들을 획득하고 멀티뷰 동영상 변환 동안 즉석에서 이러한 사용자-지정 파라미터들을 적용하는 사용자 인터페이스에 관한 것이다. 예를 들어, 실시간 멀티뷰 변환은 사용자 인터페이스를 통해 사용자 입력을 수신하는 것을 포함할 수 있으며, 사용자 입력은 카메라 기준선 또는 중심 시점 중 적어도 하나를 포함한다. 일부 실시 예들에서, 실시간 멀티뷰 변환은 멀티뷰 동영상을 렌더링하는 동안 카메라 기준선 및 중심 시점을 동적으로 업데이트하는 것을 포함할 수 있다.
일부 실시 예들에서, 뷰는 2D 프레임들의 세트를 블렌딩함으로써 생성된다. 일부 실시 예들에서, 실시간 변환 프로세스는 타겟 타임스탬프와 타겟 타임스탬프에 인접한 2D 동영상 시간 사이의 시간 차이들(time differences)을 결정하는 것을 포함하고; 뷰를 생성하기 위해 시간 차이들에 비례하는 가중 블렌드(weighted blend)를 수행하는 것을 더 포함할 수 있다. 일부 실시 예들에서, 2D 프레임들의 블렌딩은 모션-기반 블렌딩을 이용하여 수행될 수 있다.
도 2는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 수신하고 2D 프레임들을 버퍼에 로딩하는 것을 도시한다. 이와 관련하여, 도 2는 실시간 멀티뷰 동영상 변환의 적어도 일부를 도시한다. 예를 들어, 도 2는 2차원(2D) 프레임들을 포함하는 2D 동영상 스트림(112)을 수신하는 것을 묘사하며, 각각의 2D 프레임(예를 들어, 2D 프레임들(115))은 각각의 2D 동영상 타임스탬프에 대응된다. 타임스탬프는 임의의 시간의 단위(예를 들어, 초, 날짜/시간 등)로 상대 시간 또는 절대 시간을 반영하는 값일 수 있다. 각각의 2D 프레임은 프레임들을 시계열적으로 구성하기 위한 타임스탬프를 포함할 수 있다.
2D 동영상 스트림(112)은 컴퓨팅 장치에 의해 동영상 소스(127)로부터 수신될 수 있다. 동영상 소스(127)는 컴퓨팅 장치에 대해 원격에 위치되고 무선 또는 유선 네트워크 연결을 통해 컴퓨팅 장치에 연결될 수 있다. 네트워크 연결은 인터넷 연결, 인트라넷 연결, 피어-투-피어 연결, 또는 임의의 다른 네트워크 연결일 수 있다. 이러한 점에서, 2D 동영상 스트림(112)은 네트워크를 통해 원격 컴퓨팅 시스템으로부터 다운로드될 수 있다(예를 들어, 실시간 스트리밍). 동영상 소스(127)는 또한 컴퓨팅 장치에 대해 로컬일 수 있다. 예를 들어, 동영상 소스(127)는 컴퓨팅 장치와 통신하는 로컬 카메라에 의해 캡처된 동영상을 수신하는 카메라 어플리케이션을 포함할 수 있다. 카메라 어플리케이션은 로컬 카메라로부터의 동영상 피드(video feed)를 2D 동영상 스트림(112)으로 변환할 수 있다. 일부 경우들에서, 2D 동영상 스트림(112)은, 코딩되지 않도록 또는 다른 방식으로 압축되지 않도록, 네이티브(native) 형식으로 포맷될 수 있다. 다양한 실시 예들에서, 2D 동영상 소스는 실시간으로 동영상 캡처 프로세스(103)로부터 획득된 라이브 동영상을 나타낸다.
2D 동영상 스트림(112)의 일부인 2D 프레임들(115)이 추출되어 버퍼(128)에 로딩될 수 있다. 버퍼(128)는 중앙 처리 유닛(central processing unit; CPU) 메모리(130)의 일부인 어드레스 공간으로서 정의될 수 있으며, 여기서 CPU 메모리는 CPU(132)에 의해 이용된다. CPU(132)는, 명령어들을 실행하고, 운영 체제를 지원하며, 어플리케이션들(예를 들어, 사용자 수준 어플리케이션들)을 제공하는 범용 프로세서일 수 있다. CPU 메모리(130)는 컴퓨팅 장치 상에서 실행되는 운영 체제 또는 어플리케이션에 접근 가능한 시스템 메모리일 수 있다. 컴퓨팅 장치는 2D 동영상 스트림을 수신하는 그래픽스 파이프라인(134)을 포함할 수 있다. 본 명세서에서 사용되는 '그래픽스 파이프라인(graphics pipeline)'은 디스플레이를 위해 이미지 데이터를 렌더링하는 컴퓨터-구현 환경으로서 정의된다. 그래픽스 파이프라인(134)은 하나 이상의 그래픽스 처리 유닛(graphics processing unit; GPU)(137), 또는 이미지 컨텐츠를 스크린에 렌더링하는 데 최적화된 기타의 특화된 프로세싱 회로를 포함할 수 있다. 예를 들어, GPU(137)는 데이터의 어레이를 연산하기 위한 명령어 세트를 병렬로 실행하는 벡터 프로세서들을 포함할 수 있다. 그래픽스 파이프라인(134)은 그래픽스 카드, 그래픽스 드라이버, 또는 그래픽스를 렌더링하는 데 이용되는 기타의 하드웨어 및 소프트웨어를 포함할 수 있다. 그래픽스 파이프라인(137)은 멀티뷰 디스플레이 상에 이미지들을 렌더링하도록 구성될 수 있다. 그래픽스 파이프라인(133)은 픽셀들을 디스플레이의 대응하는 위치들에 맵핑하고, 렌더링된 이미지를 디스플레이하기 위해 광을 방출하도록 디스플레이를 제어할 수 있다. 그래픽스 파이프라인(134)은 GPU 메모리(140)를 포함할 수도 있다. GPU 메모리(140)는 그래픽스 파이프라인(134)에 의해 이용되는 하나 이상의 메모리 장치를 포함할 수 있다.
일부 실시 예들에서, 그래픽스 파이프라인(134)은 CPU(132)와는 별개인 서브시스템이다. 예를 들어, 그래픽스 파이프라인(134)은 CPU(132)와는 별개인 GPU(137)를 포함할 수 있다. 일부 실시 예들에서, 그래픽스 파이프라인(134)은 순전히 CPU(132)에 의해 소프트웨어로서 구현된다. 예를 들어, CPU(132)는 특화된 그래픽스 하드웨어 없이 그래픽스 파이프라인(134)으로서 동작하는 소프트웨어 모듈들을 실행할 수 있다. 일부 실시 예들에서, 그래픽스 파이프라인(134)의 일 부분들은 특화된 하드웨어로 구현되고, 다른 부분들은 CPU(132)에 의해 소프트웨어 모듈들로서 구현된다.
그래픽스 파이프라인(134)은 GPU 메모리(140)에서 2D 프레임을 추출하기 위해 동영상 스트림을 디코딩하는 데 이용될 수 있다. 예를 들어, 그래픽스 파이프라인(134)은 2D 동영상 스트림(112)을 디코딩하여 코딩 형식에 따라 2D 프레임들을 식별할 수 있다. 예를 들어, MPEG 코딩 형식에서 프레임들은 I-프레임, P-프레임, B-프레임 등으로 포맷될 수 있다. 그래픽스 파이프라인(134)은 디코딩된 2D 프레임들을 GPU 메모리(140)에 저장할 수 있다. 디코딩된 2D 프레임들은 이후 프레임 덤핑 프로세스를 이용하여 버퍼(128)에 로딩될 수 있다.
도 2는 디코딩 및 프레임 추출을 수행하는 그래픽스 파이프라인(134)을 도시하지만, 2D 동영상 스트림(112)을 디코딩한 이후 2D 프레임들(115)을 버퍼(128)에 로딩하는 데 전용 하드웨어 또는 소프트웨어 디코더가 이용될 수 있다는 것을 이해하여야 한다. 2D 프레임들(115)이 2D 동영상 스트림(112)으로부터 추출되어 버퍼(128)에 로딩되면, 실시간 멀티뷰 동영상 변환은 이후 보다 상세히 후술되는 바와 같이 버퍼링된 2D 프레임들에 대해 연산한다.
도 3은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 프레임들의 서브세트로부터 멀티뷰 동영상 프레임의 뷰를 생성하는 일 예를 도시한다. 도 3의 예에 도시된 바와 같이, 2D 프레임들은 2D 동영상 스트림(112)의 일부이다. 각각의 2D 프레임은 장면의 스냅샷을 나타내며, 장면은 다양한 깊이들의 객체들(예를 들어, 원, 삼각형, 오각형으로 묘사됨)로 구성된다. 또한, 2D 동영상 스트림(112)은 카메라가 관찰자에 대해 수평 방향으로 패닝함에 따른 장면을 나타낸다.
도 3은 변환 프로세스로의 입력으로서 버퍼(128)에 로딩될 수 있는 2D 프레임들(115)을 이용하는 실시간 멀티뷰 동영상 변환을 묘사한다. 이 예는 프레임 A 내지 프레임 E로 묘사된 일련의 2D 프레임들(115)을 보여준다. 각각의 2D 프레임(115)은 각각의 2D 동영상 타임스탬프(일반적인 시간 단위로 나타냄)에 대응된다. 예를 들어, 프레임 A는 0.0의 타임스탬프를 갖고, 프레임 B는 9.0의 타임스탬프를 갖고, 프레임 C는 18.0의 타임스탬프를 갖고, 프레임 D는 27.0의 타임스탬프를 가지며, 프레임 E는 36.0의 타임스탬프를 갖는다. 따라서, 인접 프레임들 간의 시간 간격은 9.0 시간 단위이다. 각각의 프레임에 대한 타임스탬프는 메타데이터로서 저장될 수 있다.
실시간 멀티뷰 동영상 변환의 컴퓨터-구현 방법은 각각의 2D 프레임에 대한 타임스탬프를 이용하여 2D 동영상 스트림(112) 내의 2D 프레임들로부터 멀티뷰 동영상(118)을 생성하는 것을 포함한다. 구체적으로, 이는 일련의 멀티뷰 프레임들(121)을 생성하는 것을 포함하며, 여기서 각각의 멀티뷰 프레임은 상이한 뷰들의 세트를 포함한다. 도 3의 예는 각각의 멀티뷰 프레임(121)을 정의하기 위해 4개의 뷰들(124), 뷰 1, 뷰 2, 뷰 3 및 뷰 4를 이용한다. 멀티뷰 프레임(121)을 정의하기 위해 임의의 개수의 상이한 뷰들이 이용될 수 있다는 것을 이해하여야 한다.
각각의 뷰(예를 들어, 뷰 1 내지 뷰 4(124))를 생성하기 위해, 실시간 멀티뷰 동영상 변환 프로세스는 카메라 기준선(145) 및 중심 시점(148)을 식별하는 것을 포함할 수 있다. 카메라 기준선(145) 및 중심 시점(148)은 멀티뷰 프레임(121)의 상이한 뷰들을 생성하기 위해 2D 프레임들을 샘플링할 위치를 제어하는 멀티뷰 파라미터들이다. 카메라 기준선(145)은 대응하는 뷰들과 연관된 카메라 위치들(예를 들어, 가상 또는 물리적 카메라) 사이의 거리를 정량화한다. 긴 카메라 기준선(145)은 장면의 2개의 뷰들이 멀리 떨어져 있는 지점들로부터 취해진다는 것을 의미한다. 이러한 점에서, 카메라 기준선(145)이 증가함에 따라 뷰들 사이의 전체적인 시차가 더 커진다. 카메라 기준선(145)은 2개의 시점들 사이의 공간의 관점에서 거리로서 특징지어질 수 있지만, 카메라 기준선(145)은 멀티뷰 동영상 변환의 목적을 위해 시간 차이로서 표현될 수도 있다. 예를 들어, 공간적 거리로 표현되는 카메라 기준선(145)은 카메라의 선형 또는 궤도 운동을 기반으로 하는 시간적 거리로 표현될 수도 있다. 이 예에서, 카메라 기준선(145)은 8.0 시간 단위이다.
중심 시점(148)은 멀티뷰 프레임(121)의 뷰들의 범위 사이의 중간점을 특정한다. 예를 들어, 중심 시점(148)은 최-좌측 뷰 및 최-우측 뷰와 등거리(equidistant)일 수 있는 위치이다. 중심 시점(148)은 멀티뷰 프레임(121)을 구성하는 시간의 지점을 기반으로 하는 시간적 거리 또는 멀티뷰 프레임(121)의 시점들 간의 공간적 거리로서 표현되는 위치일 수 있다. 일부 실시 예들에서, 카메라 기준선(145) 및/또는 중심 시점(148)은 하드 코딩된 또는 메모리에 저장된 미리 결정된 파라미터들일 수 있다. 카메라 기준선(145) 및 중심 시점(148)은, 카메라 기준선(145) 및 중심 시점(148)을 나타내는 값들을 결정하기 위해 룩업 또는 기타의 판독 커맨드를 수행함으로써 식별될 수 있다. 다른 실시 예들에서, 카메라 기준선(145) 및/또는 중심 시점(148)은 사용자-지정될 수 있다. 또한, 카메라 기준선(145) 및/또는 중심 시점(148)은 실시간 멀티뷰 동영상 변환 동안 사용자 입력에 응답하여 동적으로 변경될 수 있다.
실시간 멀티뷰 동영상 변환은 또한 카메라 기준선(145) 및 중심 시점(148)을 기반으로 멀티뷰 프레임(121)의 뷰에 대한 타겟 타임스탬프를 결정하는 것을 포함할 수 있다. 카메라 기준선(145) 및 중심 시점(148)은 뷰가 생성되기 이전에 각각의 뷰에 대한 타겟 타임스탬프를 계산하는 데 이용될 수 있다. 예를 들어, 중심 시점(148)은 멀티뷰 프레임(121)에 대해 시간의 중심 지점을 특정할 수 있고, 카메라 기준선(145)은 각각의 뷰가 시간의 중심 지점 주위에 위치함에 따라 각각의 뷰 사이의 시간 간격을 정의할 수 있다.
예를 들어, 도 3은 2D 프레임들(115)(예를 들어, 프레임 A 내지 프레임 E)을 샘플링함으로써 특정 멀티뷰 프레임(121)의 4개의 뷰들(124)(예를 들어, 뷰 1 내지 뷰 4)을 생성하는 것을 묘사한다. 타겟 타임스탬프들은, 멀티뷰 프레임(121)에 대해 7.0 시간 단위의 카메라 기준선(145) 및 17.0 시간 단위의 중심 시점(148)으로부터 계산된다. 이 카메라 기준선(145) 및 중심 시점(148)을 이용하면, 뷰 1은 7.0 시간 단위의 타겟 타임스탬프를 갖고, 뷰 2는 15.0 시간 단위의 타겟 타임스탬프를 갖고, 뷰 3은 23.0 시간 단위의 타겟 타임스탬프를 가지며, 뷰 4는 31.0 시간 단위의 타겟 타임스탬프를 갖는다. 각각의 뷰(124)는 시간의 단위(예를 들어, 8.0 시간 단위)로 표현되는 카메라 기준선(145)에 의해 분리된다. 또한, 중간 뷰들(124)(예를 들어, 뷰 2 및 뷰 3)은 중심 시점(148)의 양 측(예를 들어, 시간 등거리)에 위치된다. 따라서, 멀티뷰 프레임(121)을 구성하기 위해, 이의 뷰들 각각에 대해 타겟 타임스탬프가 결정된다. 결과적으로, 타겟 타임스탬프들의 세트가 각각의 멀티뷰 프레임(121)에 대해 결정된다.
실시간 멀티뷰 동영상 변환은 또한 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 서브세트로부터 뷰를 생성하는 것을 포함할 수 있다. 예를 들어, 타겟 타임스탬프가 결정되면 2D 프레임들의 서브세트로부터 멀티뷰 프레임(121)의 각각의 뷰가 생성된다. 2D 프레임들(115)의 서브세트는 타겟 타임스탬프에 타임스탬프-인접한 적어도 한 쌍의 2D 프레임들(115)일 수 있다. 예를 들어, 뷰 1을 생성하려는 경우, 타겟 타임스탬프는 7.0 시간 단위이다. 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 서브세트는 프레임 A 및 프레임 B이다. 뷰 2를 생성하려는 경우, 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 세트는 프레임 B 및 프레임 C이다. 뷰 3를 생성하려는 경우, 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 세트는 프레임 C 및 프레임 D이다. 그리고, 뷰 4를 생성하려는 경우, 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 세트는 프레임 D 및 프레임 E이다. 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)은 적어도 시간 측면에서 타겟 타임스탬프에 가장 가까운 2개의 2D 프레임들(115)을 포함할 수 있다.
특정 뷰에 대해 이 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들(115)의 서브세트가 식별되면, 2D 프레임들(115)의 서브세트를 조합함으로써 뷰(124)가 생성된다. 예를 들어, 2D 프레임들의 서브세트를 블렌딩함으로써 뷰가 생성된다. 일부 실시 예들에서, 블렌딩은 선형 블렌딩일 수 있다. 다른 실시 예들에서, 블렌딩은 모션-기반 블렌딩일 수 있다. 블렌딩은 픽셀 단위의 블렌딩 연산일 수 있다. 블렌딩 연산을 이용하여 샘플링된 2D 프레임들(115)의 서브세트로부터 뷰(124)를 생성하는 예들이 도 7a 및 도 7b와 관련하여 보다 상세히 설명된다.
실시간 멀티뷰 동영상 변환은 또한 디스플레이를 위해 멀티뷰 동영상(118)을 렌더링하는 것을 포함할 수 있고, 멀티뷰 동영상(118)은 멀티뷰 프레임(121)의 뷰를 포함한다. 예를 들어, 각각의 멀티뷰 프레임(121)의 각각의 뷰가 생성되면, 멀티뷰 프레임들은 미리 정의된 동영상 형식의 멀티뷰 동영상(118)으로 포맷될 수 있다. 또한, 실시간 멀티뷰 동영상 변환은 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상(118)을 렌더링하는 것을 포함할 수 있다. 이는 2D 동영상이 수신됨에 따라 즉석에서 멀티뷰 형식으로 동영상이 제공되는 것을 허용한다. 이는 도 5와 관련하여 보다 상세히 설명된다.
다시 도 2를 참조하면, 실시간 멀티뷰 변환은 GPU 메모리(140)에서 2D 프레임들을 추출하기 위해 동영상 스트림을 디코딩하는 것을 포함할 수 있다. 2D 동영상 스트림(112)은 미리 정의된 코딩 형식에 따라 초기에 코딩될 수 있다. 2D 프레임들(115)(예를 들어, 프레임 A 내지 프레임 E)은 2D 동영상 스트림의 파일 크기를 감소시키기 위해 초기에 코딩되거나 그렇지 않으면 압축될 수 있다. 2D 프레임들을 GPU 메모리(140)에 디코딩한 이후, 실시간 멀티뷰 변환은 뷰(124)(예를 들어, 뷰 1 내지 뷰 4)를 생성하기 위해 GPU 메모리(140)로부터 CPU 메모리(130)로 2D 프레임들을 로딩하는 것을 포함할 수 있다. 구체적으로, 실시간 멀티뷰 변환은 디코딩 시에 2D 프레임들(115)을 버퍼(128)에 실시간 덤핑할 수 있다.
도 4는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 파라미터들을 수신하기 위한 사용자 인터페이스의 일 예를 도시한다. 실시간 멀티뷰 동영상 변환은 사용자 입력을 수신하기 위한 사용자 인터페이스(150)를 생성하는 어플리케이션에 의해 구현될 수 있다. 예를 들어, 실시간 멀티뷰 동영상 변환은 사용자 인터페이스(150)를 통해 사용자 입력을 수신하는 것을 포함할 수 있으며, 사용자 입력은 카메라 기준선(145) 또는 중심 시점(148) 중 적어도 하나를 포함한다. 또한, 실시간 멀티뷰 동영상 변환은 멀티뷰 동영상(118)을 렌더링하는 동안 카메라 기준선(145) 및 중심 시점(148)을 동적으로 업데이트하는 것을 포함할 수 있다. 결과적으로, 사용자는 2D 동영상 스트림이 멀티뷰 동영상(118)으로 변환됨에 따라 즉석에서 다양한 멀티뷰 파라미터들을 동적으로 변경하여 멀티뷰 동영상의 멀티뷰 속성들을 동적으로 변경할 수 있다.
사용자 인터페이스(150)는 렌더링된 멀티뷰 동영상(118)을 디스플레이하는 제 1 영역(153)을 포함할 수 있다. 사용자 인터페이스(250)는 다양한 사용자 인터페이스 요소들을 포함하는 제 2 영역(156)을 포함할 수 있다. 사용자 인터페이스 요소들은, 예를 들어 슬라이더, 체크 박스, 텍스트 필드, 버튼, 스위치 등일 수 있다. 제 2 영역(156)은 제 1 영역(153)에 중첩되거나 제 2 영역(156)의 옆에 위치할 수 있다. 사용자는 커서, 마우스, 키보드 또는 터치 스크린 인터페이스를 이용하여 다양한 사용자 인터페이스 요소들과 상호 작용할 수 있다.
사용자 인터페이스(150)는 카메라 기준선(145), 패닝 설정, 줌 설정, 수렴 오프셋, 시계 방향/반시계 방향 선택, 2D/멀티뷰 선택, 또는 임의의 기타의 동영상 설정에 대한 사용자 선택을 수신할 수 있다. 카메라 기준선(145)은 실시간으로 동적으로 생성될 수 있는 멀티뷰 프레임의 뷰들의 타겟 타임스탬프들을 제어한다. 예를 들어, 패닝 설정은 시야(field of view)를 시프트시켜 중심 시점(148)을 지정할 수 있다. 좌측 또는 우측으로 패닝하면 중심 시점(148)이 그에 비례하여 시프트될 수 있다. 줌 설정은 각각의 멀티뷰 프레임(121)에 적용되는 자르기 영역을 조절할 수 있다. 예를 들어, 사용자는 핀치-투-줌(pinch-to-zoom)하거나 또는 줌 슬라이더를 조작하여 줌-인 또는 줌-아웃할 렌더링된 멀티뷰 동영상의 영역을 지정할 수 있다. 2D 프레임들(115) 또는 멀티뷰 프레임들(121)은 사용자-지정 동영상 설정 사항들에 응답하여 동적으로 처리될 수 있다.
사용자는 수렴 오프셋을 지정할 수 있다. 수렴 오프셋은 멀티뷰 동영상이 렌더링됨에 따라 수렴 평면의 위치를 변경하기 위해 멀티뷰 프레임들(121)에 적용될 수 있다. 수렴 평면의 위치는 시청자에 더 가깝게 또는 시청자로부터 멀리 이동하도록 수정될 수 있다. 수평 시차의 경우(예를 들어, 장면이 카메라에 대해 수평 방향으로 이동함에 따라 캡처되는 경우)를 가정하면, 수렴 오프셋은 하나 이상의 뷰에 대해 수평 픽셀 시프트 연산을 수행함으로써 수정될 수 있다. 수평 픽셀 시프트 연산은 뷰를 효과적으로 수평으로 시프트시키기 위해 각각의 뷰의 좌측 또는 우측 에지를 자르는 것을 포함할 수 있다. 결과적으로, 중심 시점(148)의 좌측의 뷰들은 더 좌측으로 시프트될 수 있고, 중심 시점(148)의 우측의 뷰들은 더 우측으로 시프트될 수 있다. 대안적으로, 중심 시점(148)의 좌측의 뷰들은 더 우측으로 시프트될 수 있고, 중심 시점(148)의 우측의 뷰들은 더 좌측으로 시프트될 수 있다. 수평 시프팅의 양 및/또는 시프팅의 방향은 수렴 오프셋에 대응된다.
사용자는 시계 방향 또는 반시계 방향 선택기를 선택하여 뷰 순서를 지정할 수도 있다. 예를 들어, 도 3은 시계 방향을 묘사하는데, 여기서 뷰 1은 최-좌측 뷰로서 위치되고, 뷰 4는 최-우측 뷰로서 배치된다. 뷰 순서는 반시계 방향으로 수정될 수 있는데, 이 때 뷰 4는 최-좌측 뷰로서 위치되고, 뷰 3은 중앙-좌측 뷰로서 위치되고, 뷰 2는 중앙-우측 뷰로서 위치되고, 뷰 1은 최-우측 뷰로서 위치된다. 사용자는 장면의 전체적인 움직임의 방향(예를 들어, 좌측으로의 패닝, 우측으로의 패닝 등)에 따라 뷰 순서(예를 들어, 시계 방향 또는 반시계 방향)를 수정하는 것이 바람직할 수 있다.
사용자 인터페이스(150)는 멀티뷰 동영상의 최종 렌더링을 조절하는 다양한 기타의 이미지 처리 연산들을 포함할 수 있다. 실시간 멀티뷰 동영상 변환 동안 사용자-지정 파라미터들이 실시간으로 즉석에서 제공될 수 있다.
일부 실시 예들에서, 사용자 인터페이스(150)는 2D 동영상 스트림을 원래의 2D 형식으로 렌더링하거나 2D 동영상 스트림을 멀티뷰 동영상으로 렌더링하는 것 중에서 선택하는 선택기를 포함한다. 시청자는 컴퓨팅 장치로 하여금, 사용자 인터페이스를 통해 수신된 사용자 입력에 응답하여 멀티뷰 동영상을 렌더링하는 것과 2D 동영상 스트림을 렌더링하는 것 사이에서 전환하게끔 할 수 있다. 2D 형식을 선택하면 멀티뷰 동영상 변환이 바이패스(bypass)될 수 있다.
도 5는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 일 예를 도시한다. 예를 들어, 도 5는 디스플레이를 위해 멀티뷰 동영상(118)을 렌더링하는 일 예를 묘사하며, 멀티뷰 동영상은 멀티뷰 프레임들(121)을 포함하고, 각각의 멀티뷰 프레임은 상이한 뷰들(124)(예를 들어, 뷰 1 내지 뷰 4)의 각각의 세트를 포함한다. 전술한 바와 같이, 어플리케이션은 2D 동영상 스트림으로부터 멀티뷰 프레임들(121)을 포함하는 멀티뷰 동영상을 생성하는 실시간 멀티뷰 동영상 변환을 제공할 수 있다. 멀티뷰 동영상 생성 시에, 어플리케이션은 그래픽스 파이프라인(134)과 인터페이스하여 멀티뷰 디스플레이(160) 상에 멀티뷰 프레임들(121)을 포함하는 멀티뷰 동영상을 렌더링할 수 있다. 그래픽스 파이프라인(134)은 각각의 멀티뷰 프레임(121)의 각각의 뷰(124)를 멀티뷰 디스플레이(160) 상의 대응하는 픽셀 위치에 맵핑할 수 있다. 그 결과, 각각의 뷰(124)는 각각의 주 각도 방향(161)에 대응될 수 있다. 도 5는 멀티뷰 디스플레이(160)의 일 예를 제공하며, 멀티뷰 이미지들을 디스플레이하기 위해 다른 구현 예들이 이용될 수 있다. 예를 들어, 일부 구현 예들은 상이한 뷰들을 지각하기 위해 특별한 안경들을 필요로 할 수 있다.
도 6은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 입력으로서 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 실시간 변환 및 렌더링하는 일 예를 도시한다. 도 6에 도시된 바와 같이, 실시 예들은 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 것을 허용하는 실시간 멀티뷰 동영상 변환에 관한 것이다. 도 6은 병렬 처리를 달성하기 위해 파이프라인화될 수 있는 다양한 컴퓨팅 프로세스들을 묘사한다.
실시간 멀티뷰 변환은 2D 동영상 스트림(165)을 수신함으로써 시작될 수 있다. 2D 동영상 스트림은 동영상 코딩 형식에 따라 코딩된 2D 프레임들(168)로 포맷된 일련의 2D 프레임들(115)을 포함할 수 있다. 구체적으로 도시된 것은 2D 동영상 스트림 내에 포함된 코딩된 2D 프레임(168)이다.
2차원 동영상 스트림이 수신됨에 따라, 실시간 멀티뷰 동영상 변환은 디코딩(171)을 수행할 수 있다. 디코딩은 2D 동영상 스트림으로부터 2D 프레임들을 압축 해제하거나 또는 추출하는 것을 포함할 수 있다. 그래픽스 파이프라인(134), 소프트웨어 디코더 또는 하드웨어 디코더가 디코딩(171)을 수행할 수 있다. 코딩된 2D 프레임(168)은 디코딩된 2D 프레임(174)으로 디코딩된다. 다음으로, 2D 프레임들이 디코딩됨에 따라, 실시간 멀티뷰 동영상 변환은 프레임 덤핑(177)을 수행할 수 있다. 프레임 덤핑(177)은 디코딩된 2D 프레임들(174)이 디코딩됨에 따라, 디코딩된 2D 프레임들(174)로 버퍼(128)를 채우는 것을 포함할 수 있다. 이와 관련하여, 버퍼(128)는 최근에 디코딩된 2D 프레임들(174)을 포함하는 CPU 메모리 또는 기타의 시스템 메모리의 어드레스 공간일 수 있다. 일부 실시 예들에서, 버퍼(128)는 오래된 디코딩된 2D 프레임들을 새롭게 디코딩된 2D 프레임들로 대체하는 순환 버퍼이다.
다음으로, 버퍼(128)에 최근에 디코딩된 2D 프레임들(174)이 로링됨에 따라, 실시간 멀티뷰 동영상 변환은 뷰 생성(180)을 수행하여 각각의 멀티뷰 프레임의 뷰들을 생성한다. 구체적으로 도 6에 도시된 것은 버퍼(128)로부터 샘플링된 복수의 디코딩된 2D 프레임들(174)로부터 특정한 멀티뷰 프레임(186)이 생성되는 방식이다. 예를 들어, 이는 뷰의 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 각각의 뷰를 생성하는 것을 포함할 수 있다. 뷰들을 생성하는 동안, 멀티뷰 파라미터들(183)이 식별될 수 있다. 멀티뷰 파라미터들(183)은, 예를 들어 카메라 기준선(145), 중심 시점(148), 수렴 오프셋을 나타내는 데이터, 또는 멀티뷰 프레임의 뷰들이 생성되는 방식을 제어하고 뷰들을 생성할 때 어떤 2D 프레임들을 샘플링할지를 제어하는 기타의 파라미터들을 포함할 수 있다. 멀티뷰 파라미터들(183)은 메모리로부터 멀티뷰 파라미터들(183)을 판독함으로써 식별될 수 있다. 멀티뷰 파라미터들(183)은 사용자 인터페이스를 통해 사용자-지정될 수 있다. 결과적으로, 뷰 생성(180)은 뷰 생성을 위해 2D 프레임들이 샘플링되는 방식을 변경하기 위한 사용자 입력을 제공하는 사용자에 의해 실시간으로 제어될 수 있다.
다음으로, 실시간 멀티뷰 동영상 변환은 디스플레이(189)하는 것을 포함할 수 있다. 디스플레이(189)하는 것은 2D 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 것을 포함할 수 있다. 멀티뷰 동영상은 렌더링된 멀티뷰 동영상(192)의 일부를 형성하는 시계열의 멀티뷰 프레임들(186)로 구성된다. 그래픽스 파이프라인은 사용자에게 멀티뷰 동영상을 제공하기 위해 상이한 뷰들의 픽셀들을 멀티뷰 디스플레이의 대응하는 위치들에 맵핑할 수 있다.
도 7a 및 도 7b는 2D 프레임들의 서브세트를 블렌딩함으로써 생성되는 뷰의 예들을 제공한다. 특히, 도 7a는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 뷰를 생성하기 위해 시간-인접 2D 프레임들의 시간 차이들에 비례하는 가중 블렌드를 수행하는 일 예를 도시한다. 여기서, '가중 블렌드(weighted blend)'는 2개의 변수들(예를 들어, 픽셀 값들)의 합 또는 기타의 조합으로서 정의되며, 여기서 각각의 변수는 각각의 계수(예를 들어, 가중치)에 따라 가중된다. 예를 들어, 뷰 1을 생성하려는 경우, 뷰 1에 대해 타겟 타임스탬프가 계산되며, 이는 7.0 시간 단위이다. 타겟 타임스탬프를 기반으로 시간-인접 2D 프레임들의 서브세트인 프레임 A 및 프레임 B가 식별된다. 가중 블렌드는 시간 인접 프레임들(예를 들어, 프레임 A 및 프레임 B) 사이의 시간 차이들에 비례하는 가중 블렌드일 수 있다. 가중 블렌드의 계수는 이 시간 차이에 대응된다. 예를 들어, 블렌딩 연산은 타겟 타임스탬프와 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하는 것을 포함할 수 있다. 예를 들어, 뷰 1은 프레임 A에 대한 7.0 시간 단위의 시간 차이(195a) 및 프레임 B에 대한 2.0 시간 단위의 시간 차이(195b)를 가질 수 있다. 따라서, 뷰 1은 프레임 A보다 프레임 B에 정량적으로 더 가깝다. 이러한 시간 차이들(195a, 195b)이 결정되면, 뷰(124)를 생성하기 위해 시간 차이들에 비례하는 가중 블렌드를 수행함으로써 뷰1이 생성될 수 있다. 이는 이러한 시간 차이들에 따라 가중되는 선형 픽셀 블렌딩을 수행하는 것을 포함할 수 있다. 결과적으로, 뷰 1은 프레임 A보다 프레임 B에 더 유사하게 나타난다.
도 7b는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 뷰를 생성하기 위해 시간-인접 2D 프레임들의 모션-기반 블렌드를 수행하는 일 예를 도시한다. 예를 들어, 모션 추정 기법들을 이용하여, 시간-인접 2D 프레임들 간의 광학적 흐름(optical flow)이 결정될 수 있다. 광학적 흐름은 초기 프레임으로부터 후속 프레임으로 특징부들이 어떻게 이동했는지를 표현하는 벡터들을 포함하는 데이터 세트이다. 이와 관련하여, 광학적 흐름은 한 프레임으로부터 다음 프레임으로의 상이한 객체들 또는 픽셀 그룹의 속도들을 포함한다. 광학적 흐름은 벡터들의 매트릭스로서 포맷될 수 있다. 도 7b는 프레임 A에 대한 다양한 객체들의 속도들을 보여주는 오버레이된 광학적 흐름 데이터가 있는 프레임 B를 보여준다. 프레임 A와 프레임 B 사이의 광학적 흐름이 결정되면, 뷰 1은 광학적 흐름을 이용하여 이들 시간-인접 프레임들을 블렌딩하는 것을 기반으로 생성될 수 있다.
실시간 멀티뷰 동영상 변환은, 예를 들어 컴퓨팅 장치와 같은, 프로세서 기반 시스템에서 구현될 수 있다. 이와 관련하여, 실시 예들은 실시간 멀티뷰 동영상 변환을 수행하도록 구성된 시스템에 관한 것이며, 시스템은 중앙 처리 유닛(CPU) 및 복수의 명령어들을 저장하는 메모리를 포함하고, 복수의 명령어들은 실행되는 경우 CPU로 하여금 실시간 멀티뷰 동영상 변환을 수행하는 다양한 연산들을 수행하게끔 한다. 이 시스템의 예가 도 10과 관련하여 후술된다.
복수의 명령어들은, 실행되는 경우, CPU로 하여금, 각각의 2D 프레임이 각각의 2D 동영상 타임스탬프에 대응되는 일련의 2차원(2D) 프레임들을 메모리 버퍼에 로딩하게 하고; 카메라 기준선 및 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하고; 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 뷰를 생성하게끔 할 수 있다. 또한, 멀티뷰 프레임의 뷰는 멀티뷰 디스플레이 상에 렌더링되도록 구성된 멀티뷰 동영상의 일부이다.
도 8은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 2D 동영상 스트림을 실시간으로 멀티뷰 동영상으로 변환하기 위한 아키텍처의 일 예를 도시한다. 도 8은 실시간 멀티뷰 동영상 변환을 수행하기 위한 명령어들을 실행하는 프로세서 기반 시스템을 도시한다. 구체적으로, 도 8은 각각의 2D 프레임이 각각의 2D 동영상 타임스탬프에 대응되는 일련의 2D 프레임들을 포함하는 2D 동영상을 스트리밍하는 동영상 소스(203)를 묘사한다. 동영상 소스(203)는 도 2와 관련하여 전술한 동영상 소스(127)와 유사할 수 있다.
프로세서 기반 시스템은, 메모리에 저장되고 프로세서(예를 들어, CPU)에 의해 실행 가능한 명령어들의 세트에 의해 구현되는 에코버퍼 모듈(echobuffer module; 206)을 포함할 수 있다. 에코버퍼 모듈(206)은, 2D 동영상 스트림을 수신하고, 2D 프레임들을 멀티뷰 프레임들로 변환하고, 멀티뷰 동영상 출력을 실시간으로 렌더링하기 위한 다양한 어플리케이션 프로그래밍 인터페이스(application programming interface; API)들, 함수 호출들 또는 커맨드들을 구현할 수 있다. 에코버퍼 모듈(206)은 동영상 컨텐츠(예를 들어, 프레임들)의 로딩 및 검색을 위해 다양한 메모리 장치들과 인터페이스할 수 있다. 에코버퍼 모듈(206)은 프레임 덤퍼(frame dumper; 209)를 포함할 수 있다. 프레임 덤퍼(209)는 일련의 2차원(2D) 프레임들을 메모리 버퍼에 로딩하도록 구성된다. 메모리 버퍼는 프레임들(212)의 순환 버퍼일 수 있다.
일부 실시 예들에서, 프레임 덤퍼(209)는 일련의 2D 프레임들을 포함하는 동영상 스트림을 디코딩하도록 구성된 그래픽스 처리 유닛(GPU)을 갖는 그래픽스 파이프라인과 인터페이스한다. GPU는 2D 프레임들을 디코딩된 2D 프레임들로서 GPU 메모리에 로딩하도록 구성될 수 있다. 이후, 프레임 덤퍼(209)는 GPU 메모리로부터 메모리 버퍼(예를 들어, 프레임들(212)의 순환 버퍼)에 일련의 2D 프레임들을 로딩할 수 있다. 따라서, 일련의 2D 프레임들은 GPU 메모리로부터 메모리 버퍼에 로딩되도록 구성된다. 도 8에 도시된 바와 같이, 메모리 버퍼는 프레임 A 내지 프레임 N을 포함하는 2D 프레임들(215)을 저장한다.
에코버퍼 모듈(206)은 카메라 기준선 및 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정할 수 있다. 이는, 특정 뷰의 타겟 타임스탬프를 결정하는 데 이용되는 카메라 기준선(145) 및 중심 시점(148)를 보여주는 도 4의 예와 유사할 수 있다. 에코버퍼 모듈(206)은, 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 뷰를 생성하도록 구성된 출력 렌더러(output renderer; 217)를 포함할 수 있다. 예를 들어, 도 7a 또는 도 7b와 관련하여 전술한 블렌딩 연산들이 시간-인접 2D 프레임들을 기반으로 뷰들을 생성하는 데 이용될 수 있다. 예를 들어, CPU는, 도 7a와 관련하여 전술한 바와 같이, 타겟 타임스탬프와 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하고, 뷰를 생성하기 위해 시간 차이들에 비례하는 가중 블렌드를 수행하도록 구성될 수 있다. CPU는 또한, 도 7b와 관련하여 전술한 바와 같이, 시간-인접 2D 프레임들의 모션-기반 블렌드를 수행하도록 구성될 수 있다.
출력 렌더러(217)는 멀티뷰 프레임들의 멀티뷰 동영상(220)을 생성할 수 있다. 각각의 멀티뷰 프레임은 상이한 뷰들의 세트로 구성된다. 뷰들은 샘플링된 시간-인접 2D 프레임들을 함께 블렌딩함으로써 생성될 수 있다. 멀티뷰 동영상(220)은 적절한 동영상 파일 형식으로 포맷되어 메모리에 저장될 수 있다. 멀티뷰 동영상(220)은 멀티뷰 디스플레이 상에 렌더링되도록 구성될 수 있다. 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 일 예가 도 5와 관련하여 전술되었다. 멀티뷰 동영상은, 도 6과 관련하여 전술한 바와 같이, 동영상 스트림이 디코딩되는 동안 멀티뷰 디스플레이 상에 렌더링되도록 구성될 수 있다.
에코버퍼 모듈(206)은 사용자 인터페이스를 제공하기 위해 CPU에 의해 실행되는 어플리케이션의 일부일 수도 있고 이 어플리케이션과 함께 동작할 수도 있다. 사용자 인터페이스는 도 4와 관련하여 전술한 사용자 인터페이스와 유사할 수 있다. 어플리케이션은, CPU로 하여금 멀티뷰 디스플레이 상에 디스플레이되도록 구성된 사용자 인터페이스를 생성하게끔 하도록, CPU에 의해 실행 가능한 복수의 명령어들로서 구현될 수 있다. 또한, CPU는 사용자 인터페이스를 통해 사용자 입력을 수신할 수 있으며, 사용자 입력은 카메라 기준선 또는 중심 시점 중 적어도 하나를 포함한다. CPU는 멀티뷰 동영상이 렌더링되는 동안 카메라 기준 시점 또는 중심 시점 중 적어도 하나를 동적으로 업데이트할 수 있다. CPU는 또한 사용자 인터페이스를 통해 수신되는 사용자 입력에 응답하여 멀티뷰 동영상을 렌더링하는 것과 2D 동영상 스트림을 렌더링하는 것 사이에서 전환할 수 있다. 예를 들어, 2D 동영상 형식을 선택하면 에코버퍼 모듈(206)을 바이패스할 수 있고, 수신된 2D 동영상을 실시간 멀티뷰 동영상 변환 없이 렌더링하기 위해 그래픽스 파이프라인으로 직접 라우팅할 수 있다.
도 9는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 실시간 멀티뷰 동영상 변환을 수행하는 시스템 및 방법의 흐름도를 도시한다. 도 9의 흐름도는 명령어 세트를 실행하는 컴퓨팅 장치에 의해 구현되는 상이한 유형의 기능의 일 예를 제공한다. 도 9의 흐름도는 하나 이상의 실시 예에 따른 컴퓨터-구현 방법의 요소들의 일 예를 묘사하는 것으로 볼 수도 있다. 도 9의 흐름도는 컴퓨터 시스템의 프로세서에 의해 실행되는 경우 멀티뷰 동영상 변환 연산을 실시간으로 수행하는 실행 가능한 명령어들을 저장하는 비-일시적인 컴퓨터-판독 가능한 저장 매체의 동작을 묘사하는 것으로 볼 수도 있다.
항목(304)에서, 동작들은 일련의 2차원(2D) 프레임들을 포함하는 동영상 스트림을 수신하는 것을 포함하며, 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응된다. 2D 프레임들은 도 3과 관련하여 설명한 2D 프레임들(115)과 유사할 수 있다.
항목(307)에서, 동작들은 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하는 것을 포함한다. 도 3과 관련하여 전술한 바와 같이, 타겟 타임스탬프는 2D 프레임들의 세트에 대응되는 2D 동영상 타임스탬프들의 세트에 인접할 수 있다. 일부 실시 예들에서, 동작들은 사용자-지정 카메라 기준선 또는 사용자-지정 중심 시점 중 적어도 하나를 기반으로 타겟 타임스탬프를 결정하는 것을 포함한다. 예를 들어, 도 4와 관련하여 전술한 것과 유사한 사용자 입력을 획득하기 위한 사용자 인터페이스가 이용될 수 있다.
항목(310)에서, 동작들은 뷰를 생성하기 위해 2D 프레임들의 세트를 블렌딩하는 것을 포함한다. 예를 들어, 도 7a와 관련하여 전술한 바와 같이, 블렌딩은, 타겟 타임스탬프와 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하고; 뷰를 생성하기 위해 시간 차이들에 비례하는 가중 블렌드를 수행하는 것을 포함할 수 있다. 블렌딩은 또한 도 7b와 관련하여 전술한 바와 같이 모션-기반 블렌딩일 수 있다.
항목(313)에서, 동작들은 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 것을 포함하며, 멀티뷰 동영상은 멀티뷰 프레임의 뷰를 포함한다. 예를 들어, 도 5는 멀티뷰 동영상을 렌더링하는 멀티뷰 디스플레이를 묘사하며, 이는 2D 동영상이 수신되어 멀티뷰 형식으로 변환됨에 따라 실시간으로 수행될 수 있다. 멀티뷰 동영상이 실시간으로 변환되고 렌더링되는 동안, 동작들은 사용자 인터페이스를 통해 수신되는 사용자 입력에 응답하여 멀티뷰 동영상의 렌더링으로부터 2D 동영상 스트림의 렌더링으로 전환하는 것을 포함할 수 있다.
전술한 도 9의 흐름도는 메모리에 저장되고 프로세서에 의해 실행될 수 있는 명령어 세트로서 구현된 실시간 멀티뷰 동영상 변환 시스템 또는 방법을 예시할 수 있다. 소프트웨어로 구현되는 경우, 각각의 박스는 지정된 논리 함수(들)를 구현하기 위한 명령어들을 포함하는 코드의 부분, 세그먼트 또는 모듈을 나타낼 수 있다. 명령어들은 프로그래밍 언어로 작성된 사람이 읽을 수 있는 명령문을 포함하는 소스 코드, 소스 코드로부터 컴파일된 객체 코드, 또는 컴퓨팅 장치의 프로세서와 같은 적절한 실행 시스템에 의해 지각될 수 있는 숫자 명령어들을 포함하는 기계어 코드의 형태로 구현될 수 있다. 기계어 코드는 소스 코드 등으로부터 변환될 수 있다. 하드웨어로 구현되는 경우, 각각의 블록은 지정된 논리 함수(들)를 구현하기 위한 회로 또는 복수의 상호 연결된 회로들을 나타낼 수 있다.
도 9의 흐름도는 특정한 실행 순서를 나타내고 있지만, 실행 순서는 묘사된 순서와는 상이할 수 있음을 이해하여야 한다. 예를 들어, 2개 이상의 박스들의 실행 순서는 도시된 순서에 대해 뒤섞일 수 있다. 또한, 도시된 2개 이상의 박스들은 동시에 또는 부분적으로 동시에 실행될 수 있다. 또한, 일부 실시 예들에서, 박스들 중 하나 이상은 스킵(skip)되거나 생략되거나 동시에 수행될 수 있다.
도 10은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 실시간 멀티뷰 동영상 변환을 수행하는 컴퓨팅 장치의 일 예를 묘사하는 개략적인 블록도이다. 컴퓨팅 장치(1000)는 컴퓨팅 장치(1000)의 사용자를 위해 다양한 컴퓨팅 동작들을 수행하는 컴포넌트(component)들의 시스템을 포함할 수 있다. 컴퓨팅 장치(1000)는 랩톱, 태블릿, 스마트 폰, 터치 스크린 시스템, 지능형 디스플레이 시스템, 기타의 클라이언트 장치, 서버, 또는 기타의 컴퓨팅 장치일 수 있다. 컴퓨팅 장치(1000)는, 예를 들어 프로세서(들)(1003), 메모리(1006), 입출력(input/output; I/O) 컴포넌트(들)(1009), 디스플레이(1012) 및 잠재적인 기타의 컴포넌트들과 같은 다양한 컴포넌트들을 포함할 수 있다. 이러한 컴포넌트들은, 컴퓨팅 장치(1000)의 컴포넌트들이 서로 통신할 수 있도록 로컬 인터페이스로서의 역할을 하는 버스(1015)에 결합될 수 있다. 컴퓨팅 장치(1000)의 컴포넌트들이 컴퓨팅 장치(1000) 내에 포함되는 것으로 도시되지만, 컴포넌트들 중 적어도 일부는 외부 연결을 통해 컴퓨팅 장치(1000)에 결합될 수도 있음을 이해하여야 한다. 예를 들어, 컴포넌트들은 외부 포트들, 소켓들, 플러그들, 커넥터들, 또는 무선 링크들을 통해 컴퓨팅 장치(1000)에 외부적으로 연결되거나 또는 다른 방식으로 연결될 수 있다.
프로세서(1003)는 중앙 처리 유닛(central processing unit; CPU), 그래픽스 처리 유닛(graphics processing unit; GPU), 컴퓨팅 처리 동작들을 수행하는 임의의 다른 집적 회로, 또는 이들의 임의의 조합을 포함할 수 있다. 프로세서(들)(1003)는 하나 이상의 프로세싱 코어들을 포함할 수 있다. 프로세서(들)(1003)는 명령어들을 실행하는 회로를 포함한다. 예를 들어, 명령어들은, 명령어들에 구현된 컴퓨팅 기능을 수행하기 위해 프로세서(들)(1003)에 의해 수신되고 실행되는 컴퓨터 코드, 프로그램들, 로직 또는 기타의 기계 판독가능 명령어들을 포함한다. 프로세서(들)(1003)는 데이터에 대해 연산하도록 또는 데이터를 생성하도록 명령어들을 실행할 수 있다. 예를 들어, 프로세서(들)(1003)는 입력 데이터(예를 들어, 이미지)를 수신하고, 명령어 세트에 따라 입력 데이터를 처리하고, 출력 데이터(예를 들어, 처리된 이미지)를 생성할 수 있다. 다른 예로서, 프로세서(들)(1003)는 명령어들을 수신하고 후속 실행을 위한 새로운 명령어들을 생성할 수 있다. 프로세서(1003)는 어플리케이션들에 의해 생성된 동영상, 이미지들 또는 프레임들을 렌더링하기 위해 그래픽스 파이프라인(예를 들어, 도 2의 그래픽스 파이프라인(134))을 구현하는 하드웨어를 포함할 수 있다. 예를 들어, 프로세서(들)(1003)는 하나 이상의 GPU 코어들, 벡터 프로세서들, 스케일러 프로세스들, 디코더들, 또는 하드웨어 가속기들을 포함할 수 있다.
메모리(1006)는 하나 이상의 메모리 컴포넌트들을 포함할 수 있다. 본 명세서에서, 메모리(1006)는 휘발성 메모리 및 비휘발성 메모리 중 하나 또는 둘 다를 포함하는 것으로 정의된다. 휘발성 메모리 컴포넌트들은 전력 손실 시 정보를 보유하지 않는 컴포넌트들이다. 예를 들어, 휘발성 메모리는 랜덤 액세스 메모리(random access memory; RAM), 정적(static) 랜덤 액세스 메모리(SRAM), 동적(dynamic) 랜덤 액세스 메모리(DRAM), 자기(magnetic) 랜덤 액세스 메모리(MRAM), 또는 기타의 휘발성 메모리 구조를 포함할 수 있다. 시스템 메모리(예를 들어, 메인 메모리, 캐시 등)는 휘발성 메모리를 이용하여 구현될 수 있다. 시스템 메모리는 프로세서(들)(1003)를 보조하기 위해 고속 읽기 및 쓰기 액세스를 위한 데이터 또는 명령어들을 일시적으로 저장할 수 있는 고속 메모리를 지칭한다. 이미지들(예를 들어, 정지 이미지들, 동영상 프레임들)은 후속 액세스를 위해 메모리(1006)에 저장되거나 로딩될 수 있다.
비휘발성 메모리 컴포넌트들은 전력 손실 시 정보를 유지하는 컴포넌트들이다. 비휘발성 메모리는 읽기 전용 메모리(read-only memory; ROM), 하드 디스크 드라이브, 고체 상태 드라이브, USB 플래시 드라이브, 메모리 카드 판독기를 통해 액세스되는 메모리 카드, 관련 플로피 디스크 드라이브를 통해 액세스되는 플로피 디스크, 광학 디스크 드라이브를 통해 액세스되는 광학 디스크, 적절한 테이프 드라이브를 통해 액세스되는 자기 테이프를 포함한다. 예를 들어, ROM은 프로그램 가능한(programmable) 읽기 전용 메모리(PROM), 소거 가능 프로그램 가능한(erasable programmable) 읽기 전용 메모리(EPROM), 전기적 소거 가능 프로그램 가능한(electrically erasable programmable) 읽기 전용 메모리(EEPROM), 또는 기타의 유사한 메모리 장치를 포함할 수 있다. 스토리지(storage) 메모리는 데이터 및 명령어들의 지속적인 유지를 제공하기 위해 비휘발성 메모리를 이용하여 구현될 수 있다.
메모리(1006)는 명령어들뿐만 아니라 데이터를 저장하기 위해 사용되는 휘발성 메모리 및 비휘발성 메모리의 조합을 의미할 수 있다. 예를 들어, 데이터 및 명령어들은 비휘발성 메모리에 저장될 수 있으며, 프로세서(들)(1003)에 의한 처리를 위해 휘발성 메모리에 로딩될 수 있다. 예를 들어, 명령어들의 실행은, 비휘발성 메모리로부터 휘발성 메모리에 로딩된 이후 프로세서(1003)에 의해 실행될 수 있는 될 수 있는 형식의 기계 코드로 변환된 컴파일된 프로그램, 프로세서(1003)에 의한 실행을 위해 휘발성 메모리에 로딩될 수 있는 객체 코드와 같은 적절한 형식으로 변환된 소스 코드, 또는 휘발성 메모리에서 명령어들을 생성하기 위해 다른 실행 가능한 프로그램에 의해 해석되고 프로세서(1003)에 의해 실행되는 소스 코드 등을 포함할 수 있다. 명령어들은, 예를 들어 RAM, ROM, 시스템 메모리, 스토리지, 또는 이들의 임의의 조합을 포함하는 메모리(1006)의 임의의 부분 또는 컴포넌트에 저장되거나 로딩될 수 있다.
메모리(1006)가 컴퓨팅 장치(1000)의 다른 컴포넌트들과는 별개인 것으로 도시되지만, 메모리(1006)는 적어도 부분적으로 하나 이상의 컴포넌트들에 탑재되거나 다른 방식으로 집적될 수 있음을 이해하여야 한다. 예를 들어, 프로세서(들)(1003)는 처리 동작들을 수행하기 위해 온보드(onboard) 메모리 레지스터들 또는 캐시를 포함할 수 있다.
예를 들어, I/O 컴포넌트(들)(1009)는 터치 스크린, 스피커, 마이크로폰, 버튼, 스위치, 다이얼, 카메라, 센서, 가속도계, 또는 사용자 입력을 수신하거나 사용자에게 지시되는 출력을 생성하는 기타의 컴포넌트들을 포함한다. I/O 컴포넌트(들)(1009)는 사용자 입력을 수신하여 메모리(1006)에의 저장 또는 프로세서(들)(1003)에 의한 처리를 위한 데이터로 변환할 수 있다. I/O 컴포넌트(들)(1009)는 메모리(1006) 또는 프로세서(들)(1003)에 의해 출력되는 데이터를 수신하고 이를 사용자에 의해 지각되는 형식(예를 들어, 소리, 촉각 반응, 시각 정보 등)으로 변환할 수 있다.
I/O 컴포넌트(1009)의 한 유형은 디스플레이(1012)이다. 디스플레이(1012)는 멀티뷰 디스플레이(예를 들어, 멀티뷰 디스플레이(160)), 2D 디스플레이와 결합된 멀티뷰 디스플레이, 또는 그래픽 컨텐츠를 나타내는 임의의 기타의 디스플레이를 포함할 수 있다. I/O 컴포넌트(1009)로서 기능하는 용량성 터치 스크린 계층은, 사용자가 입력을 제공함과 동시에 시각적 출력을 지각할 수 있도록, 디스플레이 내에 계층화될 수 있다. 프로세서(들)(1003)는 디스플레이(1012) 상의 표현을 위한 이미지 또는 프레임으로서 포맷된 데이터를 생성할 수 있다. 프로세서(들)(1003)는 사용자를 위해 디스플레이(1012) 상에 이미지 또는 프레임을 렌더링하기 위한 명령어들을 실행할 수 있다. 멀티뷰 동영상으로 변환될 수 있는 동영상을 캡처하는 동영상 캡처 프로세스를 위해 카메라 I/O 컴포넌트(1009)가 이용될 수 있다.
버스(1015)는 프로세서(들)(1003), 메모리(1006), I/O 컴포넌트(들)(1009), 디스플레이(1012) 및 컴퓨팅 장치(1000)의 임의의 다른 컴포넌트들 사이의 명령어들 및 데이터의 통신을 용이하게 한다. 버스(1015)는 데이터 및 명령어들의 통신을 허용하기 위해 어드레스 변환기들, 어드레스 디코더들, 패브릭, 전도성 트레이스들, 전도성 와이어들, 포트들, 플러그들, 소켓들 및 기타의 커넥터들을 포함할 수 있다.
메모리(1006) 내의 명령어들은 소프트웨어 스택의 적어도 일부를 구현하는 방식으로 다양한 형태로 구현될 수 있다. 예를 들어, 명령어들은 운영 체제(1031), 어플리케이션(들)(1034), 장치 드라이버(예를 들어, 디스플레이 드라이버(1037)), 펌웨어(예를 들어, 디스플레이 펌웨어(1040)), 또는 기타의 소프트웨어 컴포넌트들로서 구현될 수 있다. 운영 체제(1031)는 연산 스케줄링, I/O 컴포넌트들(1009) 제어, 하드웨어 리소스에 대한 액세스 제공, 전력 관리, 및 어플리케이션(1034) 지원과 같은, 컴퓨팅 장치(1000)의 기본 기능을 지원하는 소프트웨어 플랫폼이다.
어플리케이션(들)(1034)은 운영 체제(1031) 상에서 실행되고 운영 체제(1031)를 통해 컴퓨팅 장치(1000)의 하드웨어 리소스들에 액세스할 수 있다. 이와 관련하여, 어플리케이션(들)(1034)의 실행은 적어도 부분적으로 운영 체제(1031)에 의해 제어된다. 어플리케이션(들)(1034)은 사용자에게 높은 수준의 기능, 서비스 및 기타의 기능을 제공하는 사용자 수준의 소프트웨어 프로그램일 수 있다. 일부 실시 예들에서, 어플리케이션(1034)은 컴퓨팅 장치(1000) 상에서 사용자가 다운로드 가능하거나 액세스 가능한 전용 '앱(app)'일 수 있다. 사용자는 운영 체제(1031)에 의해 제공되는 사용자 인터페이스를 통해 어플리케이션(들)(1034)을 실행할 수 있다. 어플리케이션(들)(1034)은 개발자들에 의해 개발되고 다양한 소스 코드 형식들로 정의될 수 있다. 어플리케이션들(1034)은, 예를 들어, C, C++, C#, Objective C, Java®, Swift, JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Go, 또는 기타의 프로그래밍 언어들과 같은, 많은 프로그래밍 또는 스크립팅 언어들을 이용하여 개발될 수 있다. 어플리케이션(들)(1034)은 컴파일러에 의해 객체 코드로 컴파일되거나 프로세서(들)(1003)에 의한 실행을 위해 해석기에 의해 해석될 수 있다. 본 명세서에서 논의되는 다양한 실시 예들은 적어도 어플리케이션(1034)의 적어도 일부로서 구현될 수 있다.
예를 들어 디스플레이 드라이버(1037)와 같은 장치 드라이버들은, 운영 체제(1031)가 다양한 I/O 컴포넌트들(1009)과 통신할 수 있도록 하는, 명령어들을 포함한다. 각각의 I/O 컴포넌트(1009)는 자신의 장치 드라이버를 가질 수 있다. 장치 드라이버들은, 스토리지에 저장되고 시스템 메모리에 로딩되도록, 설치될 수 있다. 예를 들어, 설치 시에, 디스플레이 드라이버(1037)는 운영 체제(1031)로부터 수신된 높은 수준의 디스플레이 명령어를 디스플레이(1012)에 의해 구현되는 낮은 수준의 명령어들로 변환하여 이미지를 디스플레이한다.
예를 들어 디스플레이 펌웨어(1040)와 같은, 펌웨어는 I/O 컴포넌트(1009) 또는 디스플레이(1012)가 낮은 수준의 연산들을 수행할 수 있게끔 하는 기계 코드 또는 어셈블리 코드를 포함할 수 있다. 펌웨어는 특정 컴포넌트의 전기적 신호들을 더 높은 수준의 명령어들 또는 데이터로 변환할 수 있다. 예를 들어, 디스플레이 펌웨어(1040)는 전압 또는 전류 신호를 조절함으로써 디스플레이(1012)가 낮은 수준에서 개별 픽셀들을 활성화하는 방식을 제어할 수 있다. 펌웨어는 비휘발성 메모리에 저장되고, 비휘발성 메모리로부터 직접 실행될 수 있다. 예를 들어, 디스플레이 펌웨어(1040)는, ROM 칩이 컴퓨팅 장치(1000)의 다른 스토리지 및 시스템 메모리로부터 분리되도록 디스플레이(1012)에 연결된, ROM 칩에 구현될 수 있다. 디스플레이(1012)는 디스플레이 펌웨어(1040)를 실행하기 위한 프로세싱 회로를 포함할 수 있다.
운영 체제(1031), 어플리케이션(들)(1034), 드라이버들(예를 들어, 디스플레이 드라이버(1037)), 펌웨어(예를 들어, 디스플레이 펌웨어(1040)), 및 가능한 다른 명령어 세트들은, 각각, 전술한 기능 및 연산들을 수행하기 위해 프로세서(들)(1003) 또는 컴퓨팅 장치(1000)의 다른 프로세싱 회로에 의해 실행 가능한 명령어들을 포함한다. 비록 본 명세서에 설명된 명령어들은 전술한 바와 같이 프로세서(들)(1003)에 의해 실행되는 소프트웨어 또는 코드로 구현될 수 있지만, 대안적으로, 명령어들은 전용 하드웨어 또는 소프트웨어와 전용 하드웨어의 조합으로 구현될 수도 있다. 예를 들어, 전술한 명령어들에 의해 수행되는 기능 및 연산들은 여러 기법들 중 어느 하나 또는 이들의 조합을 채용하는 회로 또는 상태 머신으로서 구현될 수 있다. 이러한 기법들은, 하나 이상의 데이터 신호의 인가 시 다양한 로직 기능들을 구현하기 위한 로직 게이트들을 갖는 개별 로직 회로들, 적절한 로직 게이트들을 갖는 어플리케이션 특정 집적 회로(application specific integrated circuit; ASIC)들, 필드 프로그래머블 게이트 어레이(field-programmable gate array; FPGA)들, 또는 기타의 컴포넌트들 등을 포함할 수 있지만, 이에 제한되지는 않는다.
일부 실시 예들에서, 전술한 기능 및 연산들을 수행하는 명령어들은 비-일시적인 컴퓨터-판독 가능한 저장 매체에 구현될 수 있다. 컴퓨터-판독 가능한 저장 매체는 컴퓨팅 장치(1000)의 일부일 수도 있고 아닐 수도 있다. 예를 들어, 명령어들은 컴퓨터-판독 가능한 매체로부터 페치되고 프로세싱 회로(예를 들어, 프로세서(들)(1003))에 의해 실행될 수 있는 명령문들, 코드, 또는 선언들을 포함할 수 있다. 본 개시 내용의 맥락에서, "컴퓨터-판독 가능한 매체(computer-readable medium)"는, 예를 들어 컴퓨팅 장치(1000)와 같은 명령어 실행 시스템에 의해 또는 이와 함께 사용하기 위해 본 명세서에 설명된 명령어들을 포함, 저장 또는 유지할 수 있는 임의의 매체일 수 있다.
컴퓨터-판독 가능한 매체는, 예를 들어 자기, 광학 또는 반도체 매체와 같은 많은 물리적 매체들 중 임의의 것을 포함할 수 있다. 적절한 컴퓨터-판독 가능한 매체의 보다 구체적인 예들에는 자기 테이프, 자기 플로피 디스켓, 자기 하드 드라이브, 메모리 카드, 고체 상태 드라이브, USB 플래시 드라이브 또는 광학 디스크가 있지만, 있지만 이에 제한되지는 않는다. 또한, 컴퓨터-판독 가능한 매체는, 예를 들어 정적 랜덤 액세스 메모리(SRAM) 및 동적 랜덤 액세스 메모리(DRAM), 또는 자기 랜덤 액세스 메모리(MRAM)를 포함하는, 랜덤 액세스 메모리(RAM)일 수 있다. 또한, 컴퓨터-판독 가능한 매체는 읽기 전용 메모리(ROM), 프로그램 가능한 읽기 전용 메모리(PROM), 소거 가능 프로그램 가능한 판독 전용 메모리(EPROM), 전기적 소거 가능 프로그램 가능한 판독 전용 메모리(EEPROM), 또는 기타 유형의 메모리 장치일 수 있다.
컴퓨팅 장치(1000)는 이러한 동작들 중 임의의 것을 수행하거나, 전술한 기능을 구현할 수 있다. 예를 들어, 전술한 흐름도 및 프로세스 흐름들은 명령어들을 실행하고 데이터를 처리하는 컴퓨팅 장치(1000)에 의해 수행될 수 있다. 컴퓨팅 장치(1000)가 단일 장치로서 도시되어 있지만, 실시 예들이 이에 제한되는 것은 아니다. 일부 실시 예들에서, 컴퓨팅 장치(1000)는 분산 방식으로 명령어들의 처리를 오프로드(offload)할 수 있고, 복수의 컴퓨팅 장치들(1000)은 컴퓨팅 컴포넌트들의 분산 배열에 저장 또는 로딩될 수 있는 명령어들을 실행하기 위해 함께 동작할 수 있다. 예를 들어, 적어도 일부 명령어들 또는 데이터는 컴퓨팅 장치(1000)와 연동하여 동작하는 클라우드 기반 시스템에서 저장, 로딩 또는 실행될 수 있다.
이상에서는, 실시간 멀티뷰 동영상 변환의 예들 및 실시 예들이 설명되었다. 이는 2D 동영상 스트림이 수신됨에 따라 실시간일 수 있다. 각각의 멀티뷰 프레임의 뷰들은, 타겟 타임스탬프를 결정하고, 타겟 타임스탬프를 기반으로 시간-인접 2D 동영상 프레임들을 식별하고, 각각의 뷰를 생성하기 위해 시간-인접 2D 동영상 프레임들을 블렌딩함으로써 생성된다. 타겟 타임스탬프는 카메라 기준선 및/또는 중심 시점을 기반으로 결정될 수 있다. 전술한 예들은 단지 본 명세서에 설명된 원리들을 나타내는 많은 구체적인 예들 중 일부를 예시하는 것임을 이해하여야 한다. 명백히, 당업자는 다음의 청구 범위에 의해 정의되는 범위를 벗어나지 않고 수 많은 다른 구성들을 쉽게 고안할 수 있다.

Claims (20)

  1. 컴퓨터로 구현되는, 실시간 멀티뷰 동영상 변환 방법으로서,
    컴퓨팅 장치에 의해, 2차원(2D) 프레임들을 포함하는 동영상 스트림을 수신하는 단계 - 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응됨 -;
    상기 컴퓨팅 장치에 의해, 카메라 기준선 및 중심 시점을 식별하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 카메라 기준선 및 상기 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하는 단계;
    상기 컴퓨팅 장치에 의해, 상기 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 상기 뷰를 생성하는 단계; 및
    상기 컴퓨팅 장치에 의해, 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 단계 - 상기 멀티뷰 동영상은 상기 멀티뷰 프레임의 뷰를 포함함 -;
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 컴퓨팅 장치의 그래픽스 처리 유닛 메모리에서 상기 2D 프레임들을 추출하기 위해 상기 동영상 스트림을 디코딩하는 단계;
    를 더 포함하는, 방법.
  3. 제 2 항에 있어서,
    상기 뷰를 생성하기 위해, 상기 그래픽스 처리 유닛 메모리로부터 상기 컴퓨팅 장치의 중앙 처리 유닛 메모리로 상기 2D 프레임들을 로딩하는 단계;
    를 더 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 컴퓨팅 장치에 의해, 상기 동영상 스트림을 수신하는 동안 디스플레이를 위해 상기 멀티뷰 동영상을 렌더링하는 단계;
    를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 컴퓨팅 장치에 의해, 사용자 인터페이스를 통해 사용자 입력을 수신하는 단계를 더 포함하고,
    상기 사용자 입력은 상기 카메라 기준선 또는 상기 중심 시점 중 적어도 하나를 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 컴퓨팅 장치에 의해, 상기 멀티뷰 동영상을 렌더링하는 동안 상기 카메라 기준선 또는 상기 중심 시점 중 적어도 하나를 동적으로 업데이트하는 단계;
    를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 뷰는 상기 2D 프레임들의 서브세트를 블렌딩함으로써 생성되는,
    방법.
  8. 제 1 항에 있어서,
    상기 컴퓨팅 장치에 의해, 상기 타겟 타임스탬프와 상기 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하는 단계; 및
    상기 컴퓨팅 장치에 의해, 상기 뷰를 생성하기 위해 상기 시간 차이들에 비례하는 가중 블렌드(weighted blend)를 수행하는 단계;
    를 더 포함하는, 방법.
  9. 실시간 멀티뷰 동영상 변환을 수행하도록 구성된 시스템으로서,
    중앙 처리 유닛; 및
    복수의 명령어들을 저장하는 메모리;
    를 포함하되,
    상기 명령어들은, 실행되는 경우, 상기 중앙 처리 유닛으로 하여금:
    일련의 2차원(2D) 프레임들을 메모리 버퍼에 로딩하고 - 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응됨 -;
    카메라 기준선 및 중심 시점을 기반으로 멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하고;
    상기 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들을 갖는 2D 프레임들의 서브세트로부터 상기 뷰를 생성; 하게끔 하고,
    상기 멀티뷰 프레임의 뷰는 멀티뷰 디스플레이 상에 렌더링되도록 구성된 멀티뷰 동영상의 일부인,
    시스템.
  10. 제 9 항에 있어서,
    상기 일련의 2D 프레임들을 포함하는 동영상 스트림을 디코딩하고, 상기 2D 프레임들을 그래픽스 처리 유닛 메모리에 로딩하도록 구성된 그래픽스 처리 유닛; 을 더 포함하고,
    상기 일련의 2D 프레임들은 상기 그래픽스 처리 유닛 메모리로부터 상기 메모리 버퍼에 로딩되도록 구성되는,
    시스템.
  11. 제 9 항에 있어서,
    상기 멀티뷰 동영상은 상기 동영상 스트림을 디코딩하는 동안 상기 멀티뷰 디스플레이 상에 렌더링되도록 구성되는,
    시스템.
  12. 제 9 항에 있어서,
    상기 메모리는,
    실행되는 경우 추가적으로 상기 중앙 처리 유닛으로 하여금:
    상기 멀티뷰 디스플레이 상에 디스플레이되도록 구성된 사용자 인터페이스를 생성하고;
    상기 사용자 인터페이스를 통해 사용자 입력을 수신 - 상기 사용자 입력은 상기 카메라 기준선 또는 상기 중심 시점 중 적어도 하나를 포함함-; 하게끔 하는,
    복수의 명령어들을 저장하는,
    시스템.
  13. 제 12 항에 있어서,
    상기 메모리는,
    실행되는 경우 추가적으로 상기 중앙 처리 유닛으로 하여금:
    상기 멀티뷰 동영상이 렌더링되는 동안 상기 카메라 기준선 또는 중심 시점 중 적어도 하나를 동적으로 업데이트; 하게끔 하는,
    복수의 명령어들을 저장하는,
    시스템.
  14. 제 9 항에 있어서,
    상기 메모리는,
    실행되는 경우 추가적으로 상기 중앙 처리 유닛으로 하여금:
    상기 상기 멀티뷰 디스플레이 상에 디스플레이되도록 구성된 사용자 인터페이스를 생성하고;
    상기 사용자 인터페이스를 통해 수신되는 사용자 입력에 응답하여, 상기 멀티뷰 동영상의 렌더링과 상기 2D 동영상 스트림의 렌더링 사이에서 전환; 하게끔 하는,
    복수의 명령어들을 저장하는,
    시스템.
  15. 제 9 항에 있어서,
    상기 뷰는 상기 2D 프레임들의 서브세트를 블렌딩함으로써 생성되는,
    시스템.
  16. 제 9 항에 있어서,
    상기 메모리는,
    실행되는 경우 추가적으로 상기 중앙 처리 유닛으로 하여금:
    상기 타겟 타임스탬프와 상기 타겟 타임스탬프에 인접한 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하고;
    상기 뷰를 생성하기 위해 상기 시간 차이들에 비례하는 가중 블렌드를 수행; 하게끔 하는,
    복수의 명령어들을 저장하는,
    시스템.
  17. 컴퓨터 시스템의 프로세서에 의해 실행되는 경우 실시간으로 멀티뷰 동영상 변환 동작들을 수행하는 실행 가능한 명령어들을 저장하는 비-일시적인 컴퓨터-판독 가능한 저장 매체로서,
    상기 동작들은,
    일련의 2차원(2D) 프레임들을 포함하는 동영상 스트림을 수신하고 - 각각의 2D 프레임은 각각의 2D 동영상 타임스탬프에 대응됨 -;
    멀티뷰 프레임의 뷰에 대한 타겟 타임스탬프를 결정하고 - 상기 타겟 타임스탬프는 2D 프레임들의 세트에 대응되는 2D 동영상 타임스탬프들의 세트에 인접함 -;
    상기 뷰를 생성하기 위해 상기 2D 프레임들의 세트를 블렌딩하고;
    상기 동영상 스트림을 수신하는 동안 디스플레이를 위해 멀티뷰 동영상을 렌더링하는 것 - 상기 멀티뷰 동영상은 상기 멀티뷰 프레임의 뷰를 포함함 -;
    을 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  18. 제 17 항에 있어서,
    상기 동작들은:
    사용자-지정 카메라 기준선 또는 사용자-지정 중심 시점 중 적어도 하나를 기반으로 상기 타겟 타임스탬프를 결정하는 것;
    을 더 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  19. 제 17 항에 있어서,
    상기 동작들은:
    상기 타겟 타임스탬프와 상기 타겟 타임스탬프에 인접한 상기 2D 동영상 타임스탬프들 사이의 시간 차이들을 결정하고;
    상기 뷰를 생성하기 위해 상기 시간 차이들에 비례하는 가중 블렌드를 수행하는 것;
    을 더 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  20. 제 17 항에 있어서,
    상기 동작들은:
    사용자 인터페이스를 통해 수신되는 사용자 입력에 응답하여, 상기 멀티뷰 동영상의 렌더링과 상기 2D 동영상 스트림의 렌더링 사이에서 전환하는 것;
    을 더 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
KR1020237018931A 2020-12-07 2021-02-28 실시간 멀티뷰 동영상 변환 방법 및 시스템 KR20230101880A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063122419P 2020-12-07 2020-12-07
US63/122,419 2020-12-07
PCT/US2021/020166 WO2022125128A1 (en) 2020-12-07 2021-02-28 Real-time multiview video conversion method and system

Publications (1)

Publication Number Publication Date
KR20230101880A true KR20230101880A (ko) 2023-07-06

Family

ID=81973886

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237018931A KR20230101880A (ko) 2020-12-07 2021-02-28 실시간 멀티뷰 동영상 변환 방법 및 시스템

Country Status (8)

Country Link
US (1) US20230328222A1 (ko)
EP (1) EP4256782A1 (ko)
JP (1) JP2023551991A (ko)
KR (1) KR20230101880A (ko)
CN (1) CN116601943A (ko)
CA (1) CA3201940A1 (ko)
TW (1) TWI817273B (ko)
WO (1) WO2022125128A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2765774A1 (en) * 2013-02-06 2014-08-13 Koninklijke Philips N.V. System for generating an intermediate view image
US10003786B2 (en) * 2015-09-25 2018-06-19 Intel Corporation Method and system of 3D image capture with dynamic cameras
US10460509B2 (en) * 2017-11-07 2019-10-29 Dolby Laboratories Licensing Corporation Parameterizing 3D scenes for volumetric viewing
US10659686B2 (en) * 2018-03-23 2020-05-19 Fyusion, Inc. Conversion of an interactive multi-view image data set into a video
US10867220B2 (en) * 2019-05-16 2020-12-15 Rpx Corporation Systems and methods for generating composite sets of data from different sensors

Also Published As

Publication number Publication date
EP4256782A1 (en) 2023-10-11
JP2023551991A (ja) 2023-12-13
WO2022125128A1 (en) 2022-06-16
TW202234882A (zh) 2022-09-01
CA3201940A1 (en) 2022-06-16
TWI817273B (zh) 2023-10-01
US20230328222A1 (en) 2023-10-12
CN116601943A (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
US11087549B2 (en) Methods and apparatuses for dynamic navigable 360 degree environments
KR102560187B1 (ko) 3차원("3d") 장면의 2차원("2d") 캡처 이미지를 기반으로 하는 가상 현실 콘텐츠를 렌더링하기 위한 방법 및 시스템
US20220060639A1 (en) Live style transfer on a mobile device
JP6410918B2 (ja) パノラマ映像コンテンツの再生に使用するシステム及び方法
CN110322542B (zh) 重建真实世界3d场景的视图
US11941748B2 (en) Lightweight view dependent rendering system for mobile devices
US20130321586A1 (en) Cloud based free viewpoint video streaming
JP2017530626A (ja) ビデオコード化のための同時ローカライゼーション及びマッピング
US11871127B2 (en) High-speed video from camera arrays
JP7320146B2 (ja) ディスオクルージョンアトラスを用いたマルチビュービデオ動作のサポート
WO2019229293A1 (en) An apparatus, a method and a computer program for volumetric video
CN114175630A (zh) 利用注视点网格渲染沉浸式视频内容的方法、系统和介质
KR20210019017A (ko) 컨텐츠의 처리 방법 및 장치
CN116982086A (zh) 先进立体渲染
KR20200005591A (ko) 몰입형 비디오 컨텐츠를 생성 및 렌더링하기 위한 방법들, 시스템들 및 매체들
JP2022051978A (ja) 画像処理装置、画像処理方法、及び、プログラム
EP3540696A1 (en) A method and an apparatus for volumetric video rendering
US20230328222A1 (en) Real-time multiview video conversion method and system
US20230022344A1 (en) System and method for dynamic images virtualisation
CN111108751B (zh) 适应于全向视频的运动矢量预测量的方法和装置
WO2023129214A1 (en) Methods and system of multiview video rendering, preparing a multiview cache, and real-time multiview video conversion
CN111448799A (zh) 全向视频切片段
US20240155095A1 (en) Systems and methods for processing volumetric images
Stone Omnidirectional Stereoscopic Projections for VR.
CN117917070A (zh) 多视图图像捕获系统和方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal