KR20240027813A - 깊이 맵을 이용한 뷰 합성 시스템 및 방법 - Google Patents

깊이 맵을 이용한 뷰 합성 시스템 및 방법 Download PDF

Info

Publication number
KR20240027813A
KR20240027813A KR1020247003743A KR20247003743A KR20240027813A KR 20240027813 A KR20240027813 A KR 20240027813A KR 1020247003743 A KR1020247003743 A KR 1020247003743A KR 20247003743 A KR20247003743 A KR 20247003743A KR 20240027813 A KR20240027813 A KR 20240027813A
Authority
KR
South Korea
Prior art keywords
location
temporary
ray
view image
view
Prior art date
Application number
KR1020247003743A
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 KR20240027813A publication Critical patent/KR20240027813A/ko

Links

Classifications

    • 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/268Image signal generators with monoscopic-to-stereoscopic image conversion based on depth image-based rendering [DIBR]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • 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/156Mixing 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/204Image signal generators using stereoscopic image cameras
    • H04N13/254Image signal generators using stereoscopic image cameras in combination with electromagnetic radiation sources for illuminating objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/257Colour aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/271Image signal generators wherein the generated image signals comprise depth maps or disparity maps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/282Image signal generators for generating image signals corresponding to three or more geometrical viewpoints, e.g. multi-view systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Electromagnetism (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

멀티뷰 이미지 생성 및 디스플레이 시에, 컴퓨팅 장치는 컬러 이미지 및 깊이 맵으로부터 장면의 멀티뷰 이미지의 뷰 이미지들을 합성할 수 있다. 각각의 뷰 이미지는 각각의 픽셀 위치들에서의 색상 값들을 포함할 수 있다. 컴퓨팅 장치는 멀티뷰 디스플레이 상에 멀티뷰 이미지의 뷰 이미지들을 렌더링할 수 있다. 뷰 이미지를 합성하는 것은, 뷰 이미지 내의 픽셀 위치에 대해, 다음의 동작들을 포함할 수 있다. 컴퓨팅 장치는 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 향해 광선을 투사할 수 있다. 컴퓨팅 장치는 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정할 수 있다. 컴퓨팅 장치는 광선 교차 위치에서의 컬러 이미지의 색상에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정할 수 있다.

Description

깊이 맵을 이용한 뷰 합성 시스템 및 방법
관련 출원에 대한 상호 참조
본 출원은, 그 전체가 본 명세서에 참조로서 통합되는, 2021년 08월 03일에 출원된 미국 가특허 출원 제 63/229,054호의 우선권 이익을 주장한다.
연방 후원 연구 또는 개발에 관한 진술
N/A
3차원(3D) 공간의 장면은 시야각에 따라 여러 관점(perspective)들에서 보일 수 있다. 또한, 사용자가 볼 때, 장면의 상이한 관점들을 나타내는 여러 뷰(view)들이 동시에 지각될 수 있어, 사용자가 지각할 수 있는 깊이감이 효과적으로 생성될 수 있다. 멀티뷰 디스플레이는 복수의 뷰들이 동시에 지각될 수 있도록 멀티뷰 이미지를 렌더링하고 디스플레이할 수 있다. 일부 컨텐츠는 기본적으로 멀티뷰 이미지(multiview image) 또는 멀티뷰 동영상(multiview video)으로서 캡처될 수 있지만, 멀티뷰 이미지 또는 멀티뷰 동영상은 다양한 다른 소스로부터 생성될 수 있다.
본 명세서에 설명된 원리들에 따른 예들 및 실시 예들의 다양한 특징들은 동일한 도면 부호가 동일한 구조적 요소를 나타내는 첨부된 도면과 관련하여 취해진 다음의 상세한 설명을 참조하여 보다 용이하게 이해될 수 있다.
도 1은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 일 예로서 멀티뷰 디스플레이의 사시도를 도시한다.
도 2는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 일 예로서 멀티뷰 디스플레이의 뷰 방향에 대응되는 특정 주 각도 방향을 갖는 광빔의 각도 성분들의 그래픽 표현을 도시한다.
도 3은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 이미지 생성 및 디스플레이를 수행할 수 있는 시스템의 일 예의 블록도를 도시한다.
도 4는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작의 단순화된 일 예의 그래픽 표현을 도시한다.
도 5는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 이미지 생성 및 디스플레이를 수행하는 방법의 일 예의 흐름도를 도시한다.
도 6은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 이미지 생성 및 디스플레이를 수행할 수 있는 컴퓨팅 장치의 일 예를 묘사하는 개략적인 블록도이다.
일부 예들 및 실시 예들은 전술한 도면들에 도시된 특징들에 부가되거나 그 대신에 포함되는 다른 특징들을 갖는다. 이들 및 다른 특징들은 전술한 도면을 참조하여 이하에서 설명된다.
본 명세서에 설명된 원리들에 따른 예들 및 실시 예들은 실시간 렌더링 파이프라인(rendering pipeline)에서 단일 뷰 이미지(view image) 및 깊이 맵(depth map)으로부터 멀티뷰 이미지(multiview image)를 생성하는 기법들을 제공한다. 이를 통해, 시각적 컨텐츠(예를 들어, 이미지 또는 동영상)가 즉석으로(on the fly) 멀티뷰 형식으로 변환되어 사용자에게 제공될 수 있다. 후술되는 바와 같이, 실시 예들은 컬러 이미지 및 깊이 입력들을 이용하는 실시간 뷰 합성을 포함한다.
실시 예들에 따르면, 셰이더(shader) 프로그램은 각각의 합성된 뷰에 대한 픽셀 값들을 계산하기 위해 서브루틴(subroutine)을 구현한다. 서브루틴은 하나의 컬러(또는 회색조) 이미지 및 깊이 맵으로부터 뷰들을 합성하기 위해 광선 투사(raycasting)를 이용할 수 있다. 합성된 뷰 내의 각각의 픽셀은, 뷰 위치에 대응되는 각도로 깊이 맵 상에 개별 광선(ray)을 투사(casting)함으로써 결정될 수 있다. 특정 뷰의 경우, 뷰의 모든 광선들은 이 광선들이 평행하도록 동일한 방향을 갖는다. 각각의 광선은 합성된 뷰의 일부로서 렌더링될 픽셀에 대응될 수 있다. 각각의 광선에 대해, 서브루틴은 광선을 따른 지점들을 통해 스텝핑(stepping)하여 깊이 맵으로부터 깊이 값들을 판독함으로써 광선이 가상 표면과 교차하는 위치를 결정한다. 광선을 따른 각각의 스텝에서, 수평 위치(horizontal position)는 미리 결정된 원래 간격만큼 증가되고, 깊이 위치(depth position)는 미리 결정된 깊이 간격(depth interval)만큼 증가된다. 일부 실시 예들에서, 수직 위치(vertical position)는 일정하게 유지될 수 있다. 광선이 가상 표면과 교차하는 위치는 뷰의 픽셀에 대응되는 컬러 맵으로부터 색상을 판독하는데 이용되는 좌표의 위치를 지정하며, 여기서 픽셀 위치는 광선의 원점(origin)에 해당된다. 일부 실시 예들에서, 특정 픽셀에 대한 광선이 임계량만큼 가상 표면 아래로 떨어지는 경우, 픽셀은 색상을 나타내는 대신 홀(hole)로서 설정될 수 있다.
셰이더 프로그램은 그래픽스 처리 유닛(graphics processing unit; GPU)에 의해 실행되는 프로그램일 수 있다. GPU는 여러 서브루틴들을 병렬로 수행하기 위한 명령어 세트를 실행하는 하나 이상의 벡터 프로세서들을 포함할 수 있다. 이와 관련하여, 뷰 이미지가 합성되는 동안 뷰 이미지의 소정의 픽셀의 개별 픽셀 값을 계산하도록 단일 서브루틴이 구성될 수 있다. 뷰의 모든 픽셀들의 픽셀 값들을 계산하기 위해 서브루틴의 여려 인스턴스(instance)들이 병렬로 실행될 수 있다.
실시 예들은 뷰 이미지를 합성하는 것에 관한 것이며, 이는 뷰 이미지를 합성하기 위해 컬러 이미지 및 대응하는 깊이 맵에 액세스하는 것을 포함할 수 있으며, 깊이 맵은 가상 표면을 정의한다. 뷰 이미지를 합성하는 것은, 광선을 따른 복수의 지점들 중 소정의 지점이 가상 표면에 위치하는 것으로 식별될 때까지, 미리 결정된 수평 간격(horizontal interval), 미리 결정된 깊이 간격 및 일정한 수직 값으로 광선을 따른 복수의 지점들을 통해 스텝핑하는 것을 더 포함할 수 있으며, 여기서 광선은 광선 원점 및 광선 방향을 포함하고, 광선 원점은 렌더링될 뷰 이미지의 픽셀의 픽셀 위치를 정의하며, 광선 방향은 뷰 이미지의 뷰 위치에 대응된다. 뷰 이미지를 합성하는 것은 또한 히트 지점(hit point)에서 컬러 이미지의 색상 값을 샘플링함으로써 뷰 이미지의 픽셀을 렌더링하는 것을 포함할 수 있다.
더 상세히 설명하면, 컬러 이미지는 RGB 이미지일 수 있으며, 여기서 컬러 이미지는 각각의 좌표를 갖는 상이한 픽셀들에 대한 픽셀 값들을 지정한다. 픽셀 값은 적색의 양을 나타내는 값, 녹색의 양을 나타내는 값, 청색의 양을 나타내는 값, 또는 이들의 임의의 조합일 수 있다. 깊이 맵은 컬러 이미지와 유사한 형식을 가질 수 있지만, 색상을 지정하는 대신, 각각의 좌표를 갖는 상이한 픽셀들에 대한 깊이 값들을 지정한다. 따라서, 깊이 맵은 수평 위치 및 수직 위치의 함수로서 깊이 축을 따라 변화하는 가상 표면을 정의할 수 있다. 즉, 하향식 배향(top-down orientation)에서, 깊이는 깊이 축을 따라 (예를 들어, 스크린 내로 또는 스크린 외부로) 변화할 수 있고, 위치는 수평으로(예를 들어, 좌측으로 또는 우측으로) 또는 수직으로(예를 들어, 위로 또는 아래로) 변화할 수 있다.
컬러 이미지 및 깊이 맵으로부터 하나 이상의 뷰 이미지가 합성될 수 있다. 뷰 이미지는 다른 뷰 이미지들의 각각의 관점들과는 상이한 특정 관점에 대응된다. 뷰 이미지들의 세트는 멀티뷰 이미지를 형성하며, 멀티뷰 이미지는 상이한 관점들을 포함하는 장면 또는 객체를 나타낸다. 멀티뷰 이미지의 각각의 뷰 이미지는 각각의 뷰 위치에 대응된다. 예를 들어, 멀티뷰 이미지가 4개의 뷰들을 포함하는 경우, 뷰 위치들은 최-좌측 뷰, 중앙-좌측 뷰, 중앙-우측 뷰 및 최-우측 뷰를 포함하도록 좌측에서 우측으로 배열될 수 있다. 각각의 뷰 사이의 거리는 게인(gain) 또는 기준선(baseline)으로 지칭될 수 있다.
뷰 이미지가 합성되고 렌더링될 때 뷰 이미지 내의 각각의 픽셀에 대해 픽셀 값(예를 들어, RGB 색상)을 계산하기 위해 서브루틴이 실행될 수 있다. 서브루틴은 미리 결정된 수평 간격으로 광선을 따른 복수의 지점들을 통해 스텝핑하는 것을 포함할 수 있다. 이와 관련하여, 서브루틴은 특정 광선 방향으로 광선 원점으로부터 투사되는 광선을 따라 이동하며, 여기서 광선은 가상 표면을 향해 투사된다. 광선은 특정 방향을 가리키는 좌표로 정의되는 공간 내의 라인(line)으로서 정의될 수 있다. 특정 뷰 이미지를 합성하는 경우, 합성 중인 뷰 이미지에 대한 깊이 정보를 검출하기 위해 다양한 원점으로부터 깊이 맵의 가상 표면을 향해 평행한 광선들이 투사된다. 원점으로부터 장면의 바닥까지 광선 경로를 따라 가능한 모든 깊이 값을 판독하는 대신에, 실시 예들은 미리 결정된 수평 간격, 미리 결정된 깊이 간격 및 일정한 수직 값으로 정의되는 지점들에서 광선을 따라 스텝핑하는 것에 관한 것이다. 또한, 서브루틴이 가상 표면에 위치하는 광선 상의 지점(예를 들어, 광선이 가상 표면과 교차하는 히트 지점)을 식별하는 경우, 서브루틴은 자동적으로 종료(terminate)되거나 중단(interrupt)된다. 즉, 서브루틴은 히트 지점인 가상 표면과 교차하거나 이에 닿을 때까지 미리 결정된 간격들로 광선을 따라 스텝핑한다. 이와 관련하여, 히트 지점인 소정의 지점에서의 깊이는 가상 표면의 대응하는 깊이와 동일하다. 히트 지점은 가상 표면보다 약간 더 깊거나 가상 표면 근처의 깊이 허용 오차 내에 있을 수 있다. 미리 결정된 깊이 간격들을 이용하는 경우, 양자화된 깊이 판독들은 광선과 가상 표면의 교차점의 위치를 근사화할 수 있다.
이 히트 지점이 식별되면, 좌표 측면에서 위치가 기록된다. 픽셀을 렌더링하기 위해, 히트 지점의 기록된 위치를 이용하여 컬러 이미지로부터 색상이 샘플링된다. 따라서, 서브루틴은 히트 지점 좌표에서 컬러 이미지의 색상 값을 샘플링함으로써 뷰 이미지의 픽셀을 렌더링한다.
일부 실시 예들에서, 히트 지점의 깊이 값 판독 값을 임계 깊이와 비교함으로써, 히트 지점이 가상 표면에 위치하는 것으로 식별된다. 예를 들어, 서브루틴이 원점으로부터 멀리 광선 상의 다음 지점으로 이동함에 따라, 서브루틴은 특정 지점에서 깊이를 판독하여 깊이 값 판독 값을 얻는다. 히트 지점은 깊이 값 판독 값을 임계 깊이와 비교함으로써 결정된다. 일부 실시 예들에서, 임계 깊이는 각각의 스텝에서 미리 결정된 깊이 간격만큼 감소된다. 이와 관련하여, 임계 깊이는 대응하는 지점의 깊이 좌표와 동일하거나 이로부터 도출될 수 있다.
일부 실시 예들에서, 뷰 이미지를 합성하는 것은 복수의 광선들 중 또 다른 광선이 미리 결정된 깊이 레벨만큼 가상 표면 아래로 떨어지는 것을 검출하는 것을 더 포함한다. 일부 광선들은 가상 표면과 교차하지만, 다른 광선들은 가파른 임계 값에 따라 "홀(hole)"로 간주될 수 있는 가상 표면의 수직 에지에 닿을 수 있다. 일부 실시 예들에서, 히트 지점이 가파른(steep) 표면 상에 있을 때, 서브루틴은 그 위치에 대응하는 픽셀을 홀로 지정할 수 있다. 컬러 이미지가 동영상 스트림의 프레임인 경우, 이러한 홀들은 시간-인접 동영상 프레임들로부터의 픽셀 정보를 이용하여 채워질 수 있다. 정지 이미지(still image)의 경우, 홀 채우기에 주변 색상들이 이용될 수 있다.
일부 실시 예들에서, 프래그먼트 셰이더(fragment shader)는 광선을 따른 복수의 지점들을 통해 스텝핑하도록 구성된다. 프래그먼트 셰이더는 뷰 이미지를 적어도 하나의 다른 뷰 이미지와 인터레이싱(interlacing)하도록 구성될 수 있다. 인터레이싱은 멀티뷰 디스플레이의 인터레이싱된 멀티뷰 형식을 따르도록 상이한 뷰들의 픽셀들을 공간 다중화하는 것을 포함한다. 프래그먼트 셰이더는 특정 색상을 출력 픽셀 좌표로 렌더링하는 프로세서에 의해 실행될 수 있다. 색상은 깊이 맵을 처리하여 결정된 위치들에서 컬러 이미지를 샘플링함으로써 결정될 수 있다.
일부 실시 예들에서, 미리 결정된 수평 간격은 하나의 픽셀이고, 미리 결정된 깊이 간격은 복수의 합성된 뷰들의 기준선의 함수이다. 다른 실시 예들에서, 미리 결정된 수평 간격은 복수의 합성된 뷰들의 기준선의 함수이다. 기준선을 이용하여 광선을 따라 분석되는 스텝들의 세분성(granularity)을 제어함으로써, 뷰 이미지들을 합성할 때 최소 수준의 이미지 품질을 유지하면서 깊이 판독 횟수를 줄이도록 서브루틴이 최적화될 수 있다.
일부 실시 예들에서, 서브루틴은 깊이 맵의 깊이 텍스처로부터 깊이 값들을 판독할 수 있다. 서브루틴은 광선 원점의 출력 픽셀 좌표의 위치(또는 수렴 입력 파라미터에 의해 지정될 수 있는, 이 위치로부터 미리 결정된 오프셋)로부터 시작할 수 있다. 서브루틴은 뷰 위치에 따라, 소정 방향(예를 들어, 좌측에서 우측으로) 또는 반대 방향(예를 들어, 우측에서 좌측으로)으로 깊이 값들을 지점 단위로 판독할 수 있다.
광선을 따른 각각의 지점에서, 추출된 깊이 값은, 1에서 시작하여 각각의 스텝에서 0으로 향하는 임계 깊이와 비교된다. 히트 지점에 대한 이 검색은, 깊이 값 판독 값이 임계 깊이와 같거나 임계 깊이를 초과할 때 종료된다. 검색이 종료된 좌표는 컬러 이미지에서 색상을 샘플링하여 서브루틴의 결과로서 반환하는 데 이용된다. 프래그먼트 셰이더는 이 샘플링된 색상을 이용하여, 합성된 뷰의 픽셀을 렌더링한다.
기준선 입력 파라미터에 의해 수평 스텝들의 최대 개수(예를 들어, 미리 결정된 수평 간격)가 수정되거나 제어될 수 있다. 스텝들이 더 많을수록, 생성된 뷰가 입력 컬러 이미지로부터 더 많이 달라진다. 임계 깊이 감소 스텝은 1을 수평 스텝들의 개수로 나눈 값과 같을 수 있다.
추가적으로, 에지 상의 에일리어싱(aliasing)을 개선하기 위해, 미리 결정된 수평 간격은, 예를 들어 수평 간격과 같은 미리 결정된 간격이 서브 간격들로 분할되도록 수정되어, 색상 샘플링을 위한 좌표가 보다 정밀해질 수 있다. 선형 보간과 함께 이용되는 인접 깊이 값 판독 값은 비교 중에 이용될 수 있다. 미리 결정된 깊이 간격은 서브 간격들로 구분될 수 있다. 결과적인 히트 지점의 좌표(예를 들어, 깊이 값 판독 값이 깊이 임계 값과 같거나 이를 초과하는 경우)는 내장된 색상 보간을 지원하는 셰이더 텍스처 판독 함수로 전달될 수 있다.
추가적으로, (렌더링에서 분리된 객체가 독립적으로 이동되는 것처럼 보이도록) 콘트라스트 에지들 상에 홀이 생성될 필요가 있다면, 깊이 값 판독 값과 깊이 임계 값 사이의 차이가 비교될 수 있고, 만약 그 차이가 미리 결정된 깊이 수준보다 더 크다면, 이후의 인페인팅(inpainting)을 위해 홀이 생성될 수 있다.
일 예에서, 컴퓨팅 장치는 장면의 컬러 이미지 및 장면의 깊이 맵을 수신할 수 있다. 컴퓨팅 장치는 컬러 이미지 및 깊이 맵으로부터 장면의 멀티뷰 이미지의 뷰 이미지들을 합성할 수 있다. 뷰 이미지들은 상이한 뷰 방향들로부터 장면을 나타낼 수 있다. 각각의 뷰 이미지는 픽셀 위치들 및 픽셀 위치들에서의 각각의 색상 값들을 포함할 수 있다. 예를 들어, 뷰 이미지는 각각의 픽셀이 이미지 내의 소정의 위치를 갖는 픽셀들의 2차원(2D) 그리드를 가질 수 있다. 컴퓨팅 장치는 컴퓨팅 장치의 멀티뷰 디스플레이 상에 멀티뷰 이미지의 뷰 이미지들을 렌더링할 수 있다. 멀티뷰 이미지의 뷰 이미지를 합성하는 것은, 뷰 이미지 내의 소정의 픽셀 위치에 대해, 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 향해 광선을 투사하는 것; 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하는 것; 및 광선 교차 위치에서의 컬러 이미지의 색상에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정하는 것을 포함할 수 있다.
본 명세서에서, '2차원 디스플레이' 또는 '2D 디스플레이'는 이미지가 보여지는 방향에 관계 없이 (즉, 2D 디스플레이의 미리 정의된 시야각 또는 시야 범위 내에서) 실질적으로 동일한 이미지의 뷰를 제공하도록 구성된 디스플레이로서 정의된다. 많은 스마트 폰들 및 컴퓨터 모니터들에서 찾아볼 수 있는 통상적인 액정 디스플레이(LCD)가 2D 디스플레이들의 예들이다. 대조적으로, 본 명세서에서, '멀티뷰 디스플레이(multiview display)'는 상이한 뷰 방향들로 또는 상이한 뷰 방향들로부터 멀티뷰 이미지의 상이한 뷰들을 제공하도록 구성된 전자 디스플레이 또는 디스플레이 시스템으로서 정의된다. 특히, 상이한 뷰들은 멀티뷰 이미지의 객체 또는 장면의 상이한 관점 뷰들(perspective views)을 나타낼 수 있다. 본 명세서에 설명된 일방성(unilateral) 백라이팅 및 일방성 멀티뷰 디스플레이의 용도는 이동식 전화기(예를 들어, 스마트 폰), 시계, 태블릿 컴퓨터, 이동식 컴퓨터(예를 들어, 랩톱 컴퓨터), 개인용 컴퓨터 및 컴퓨터 모니터, 차량용 디스플레이 콘솔, 카메라, 디스플레이, 및 다양한 기타의 이동식 및 실질적으로 비-이동식 디스플레이 응용 및 장치를 포함하지만, 이에 국한되지는 않는다.
도 1은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 일 예로서 멀티뷰 디스플레이(10)의 사시도를 도시한다. 도 1에 도시된 바와 같이, 멀티뷰 디스플레이(10)는 보여질 멀티뷰 이미지를 디스플레이하기 위한 스크린(12)을 포함한다. 예를 들어, 스크린(12)은 전화기(예를 들어, 이동식 전화기, 스마트 폰 등), 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터의 컴퓨터 모니터, 카메라 디스플레이, 또는 실질적으로 임의의 기타 기기의 전자 디스플레이의 디스플레이 스크린일 수 있다.
멀티뷰 디스플레이(10)는 멀티뷰 이미지의 상이한 뷰들(14)을 스크린(12)에 대해 상이한 뷰 방향들(16)로 제공한다. 뷰 방향들(16)은 스크린(12)으로부터 여러 상이한 주 각도 방향들로 연장되는 화살표들로서 도시되었고, 상이한 뷰들(14)은 화살표들(즉, 뷰 방향들(16)을 묘사함)의 말단에 음영 표시된 다각형 박스들로서 도시되었으며, 제한이 아닌 예로서 단지 4개의 뷰들(14) 및 4개의 뷰 방향들(16)이 도시되었다. 도 1에는 상이한 뷰들(14)이 스크린 위에 있는 것으로 도시되었으나, 멀티뷰 이미지가 멀티뷰 디스플레이(10) 상에 디스플레이되는 경우 뷰들(14)은 실제로 스크린(12) 상에 또는 스크린(12)의 부근에 나타날 수 있다는 것에 유의한다. 뷰들(14)을 스크린(12) 위에 묘사한 것은 단지 도시의 단순화를 위한 것이며, 특정 뷰(14)에 대응되는 각각의 뷰 방향들(16)로부터 멀티뷰 디스플레이(10)를 보는 것을 나타내기 위함이다. 2D 디스플레이는, 2D 디스플레이가 일반적으로 멀티뷰 디스플레이(10)에 의해 제공되는 멀티뷰 이미지의 상이한 뷰들(14)과 대조적으로 디스플레이되는 이미지의 단일 뷰(예를 들어, 뷰(14)와 유사한 하나의 뷰)를 제공하도록 구성된다는 점을 제외하고는, 멀티뷰 디스플레이(10)와 실질적으로 유사할 수 있다.
본 명세서의 정의에 의하면, 뷰 방향 또는 대등하게는 멀티뷰 디스플레이의 뷰 방향에 대응되는 방향을 갖는 광빔은 일반적으로 각도 성분들(angular components) {θ, φ}로 주어지는 주 각도 방향을 갖는다. 본 명세서에서, 각도 성분(θ)은 광빔의 '고도 성분(elevation component)' 또는 '고도각(elevation angle)'으로 언급된다. 각도 성분(φ)은 광빔의 '방위 성분(azimuth component)' 또는 '방위각(azimuth angle)'으로 언급된다. 정의에 의하면, 고도각(θ)은 (예를 들어, 멀티뷰 디스플레이 스크린의 평면에 수직인) 수직 평면에서의 각도이고, 방위각(φ)은 (예를 들어, 멀티뷰 디스플레이 스크린의 평면에 평행인) 수평 평면에서의 각도이다.
도 2는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 일 예로서 멀티뷰 디스플레이의 뷰 방향(예를 들어, 도 1의 뷰 방향(16))에 대응되는 특정 주 각도 방향을 갖는 광빔(20)의 각도 성분들 {θ, φ}의 그래픽 표현을 도시한다. 또한, 본 명세서의 정의에 의하면, 광빔(20)은 특정 지점으로부터 방출되거나 발산된다. 즉, 정의에 의하면, 광빔(20)은 멀티뷰 디스플레이 내의 특정 원점(point of origin)과 관련된 중심 광선(central light ray)을 갖는다. 또한, 도 2는 광빔(또는 뷰 방향)의 원점(O)을 도시한다.
또한, 본 명세서에서 사용된 바와 같이, 단수 표현은 특허 분야에서의 통상적인 의미, 즉 '하나 이상'의 의미를 갖는 것으로 의도된다. 예를 들어, 본 명세서에서, '컴퓨팅 장치(computing device)'는 하나 이상의 컴퓨팅 장치를 의미하며, 따라서 '상기 컴퓨팅 장치'는 '컴퓨팅 장치(들)'을 의미한다. 또한, 본 명세서에서 '상단', '하단', '상부', '하부', '상', '하', '전', '후', '제 1', '제 2', '좌' 또는 '우'에 대한 언급은 본 명세서에서 제한적인 것으로 의도되지 않는다. 본 명세서에서, 달리 명시적으로 특정되지 않는 한, 수치 값에 적용되는 경우의 '약'이라는 용어는 일반적으로 수치 값을 생성하기 위해 이용되는 장비의 허용 오차 범위 내를 의미하거나, ±10%, 또는 ±5%, 또는 ±1%를 의미할 수 있다. 또한, 본 명세서에서 사용된 바와 같은 '실질적으로'라는 용어는 대부분, 또는 거의 전부, 또는 전부, 또는 약 51% 내지 약 100% 범위 내의 양을 의미한다. 또한, 본 명세서의 예들은 단지 예시적인 것으로 의도된 것이며, 제한이 아닌 논의의 목적으로 제시된다.
도 3은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 이미지 생성 및 디스플레이를 수행할 수 있는 시스템(100)의 일 예의 블록도를 도시한다. 시스템(100)은 스마트 폰, 태블릿, 랩톱 컴퓨터 등과 같은 컴퓨팅 장치(102)를 포함할 수 있다. 도 6 및 이와 관련된 아래의 설명은 컴퓨팅 장치(102)의 일 예를 상세히 설명한다. 컴퓨팅 장치(102)는 본 명세서에 설명된 바와 같이 멀티뷰 이미지를 생성하고 디스플레이하기 위한, 컴퓨터로 구현되는 방법을 실행하도록 구성될 수 있다.
다양한 실시 예들에 따르면, 컴퓨팅 장치(102)에 의해 실행되는 경우 멀티뷰 이미지를 생성하기 위한 컴퓨터로 구현되는 방법은 장면(106)의 컬러 이미지(104) 및 장면(106)의 깊이 맵(108)을 수신하는 단계를 포함한다. 도 3에서, 장면(106)은 고양이로 묘사되지만, 다른 적절한 장면들도 이용될 수 있다. 컬러 이미지(104)는 장면(106)의 외관을 나타내는 강도 및 색상 데이터를 포함할 수 있다. 컬러 이미지 데이터는 선택적으로 위치의 직사각형 어레이, 예를 들어 픽셀들에 대응되도록 배열될 수 있다. 일부 실시 예들에서, 강도 및 색상 데이터는 적색광에 대한 강도를 나타내는 제 1 값, 녹색광에 대한 강도를 나타내는 제 2 값, 및 청색광에 대한 강도를 나타내는 제 3 값을 포함할 수 있다. 단색인 장면들과 같은 일부 예들에서, 강도 및 색상 데이터는 강도를 나타내는 값을 포함할 수 있다(예를 들어, 강도 정보를 포함하지만 색상 정보가 결여됨). 깊이 맵(108)은 장면(106) 내의 위치들과 컴퓨팅 장치(102) 사이의 상대적인 거리들을 설명할 수 있다. 장면(106) 내의 고양이의 예의 경우, 장면(106)에 대응되는 깊이 맵(108)은 고양이의 꼬리의 끝이 고양이의 오른쪽 뒷발보다 컴퓨팅 장치(102)로부터 더 멀리 떨어져 있을 수 있음을 지정할 수 있다. 일부 예들에서, 컬러 이미지(104) 및 깊이 맵(108)은 유선 또는 무선 연결에 의해 서버 또는 저장 장치로부터 수신될 수 있다. 일부 예들에서, 컬러 이미지(104) 및 깊이 맵(108)은 컴퓨팅 장치(102)에 포함된 카메라 및 깊이 맵 생성기에 의해 생성될 수 있다. 일부 예들에서, 깊이 맵 생성기는 컴퓨팅 장치(102)로부터 멀어지는 전파 방향들의 범위에 대해 컴퓨팅 장치(102)로부터의 거리들을 맵핑하기 위해 상이한 방향들로의 비행 시간 반사들(time-of-flight reflections)을 이용할 수 있다.
다양한 실시 예들에서, 컴퓨팅 장치(102)에 의해 실행되는 경우 멀티뷰 이미지를 생성하기 위한 컴퓨터로 구현되는 방법은 컬러 이미지(104) 및 깊이 맵(108)으로부터 장면(106)의 멀티뷰 이미지의 뷰 이미지들(110A, 110B, 110C, 110D)(집합적으로 뷰 이미지들(110)로 지칭됨)을 합성하는 단계를 더 포함한다. 뷰 이미지들(110)은 상이한 뷰 방향들로부터 장면(106)을 나타낼 수 있다. 장면(106) 내의 고양이의 예의 경우, 뷰 이미지들(110)은 뷰 이미지들(110)에 대응되는 뷰 방향들로부터 볼 때 고양이가 어떻게 보이는지를 나타낼 수 있다. 각각의 뷰 이미지(110)는 픽셀 위치들 및 픽셀 위치들에서의 각각의 색상 값들을 포함할 수 있다. 도 3의 예에는, 4개의 뷰 이미지들(110)이 있다. 다른 예들에서, 4개 초과 또는 4개 미만의 뷰 이미지들(110)이 이용될 수 있다. 도 4 및 이와 관련된 아래의 설명은 뷰 이미지들(110)을 합성하는 방법에 관한 추가적인 상세 내용들을 제공한다.
다양한 실시 예들에 따라 컴퓨팅 장치(102)에 의해 실행되는 경우 멀티뷰 이미지를 생성하기 위한 컴퓨터로 구현되는 방법은 컴퓨팅 장치(102)의 멀티뷰 디스플레이(112) 상에 멀티뷰 이미지의 뷰 이미지들(110)을 렌더링하는 단계를 더 포함한다. 뷰 이미지들(110A, 110B, 110C, 110D)은 각각의 뷰 방향들(114A, 114B, 114C, 114D)로부터 각각 바라본 것이다. 예를 들어, 컴퓨팅 장치(102)는 스마트 폰으로서 구성될 수 있고, 스마트 폰의 디스플레이는 멀티뷰 디스플레이(112)로서 구성될 수 있다. 일부 예들에서, 멀티뷰 이미지는 동영상의 프레임으로서 포함될 수 있고, 따라서 컴퓨팅 장치(102)는 뷰 이미지들(110)을 합성하고, 적절한 동영상 프레임 속도로, 예를 들어 초당 60 프레임, 초당 30 프레임 등으로, 뷰 이미지들(110)을 렌더링할 수 있다.
본 명세서에서 셰이더로 언급된 것과 같은 컴퓨터로 구현되는 명령들의 세트는 멀티뷰 이미지의 뷰 이미지들을 합성할 수 있다. 셰이더에 대한 자세한 설명은 후술되며, 셰이더에 대한 요약은 다음과 같다. 셰이더는 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 향해 광선을 투사할 수 있다. 셰이더는 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하도록 구성된다. 셰이더는 추가적으로 광선 교차 위치에서의 컬러 이미지의 색상에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정하도록 구성된다.
일부 예들에서, 광선 교차 위치를 결정하는 것은 편의상 제 1 내지 제 5 동작들로 명명된 다음의 동작들을 포함할 수 있다. 제 1 동작에서, 셰이더는 가상 표면이 픽셀 위치와 지정된 평면 사이에 놓이도록 픽셀 위치와 지정된 평면 사이에서 광선을 따른 순차적인 임시 위치들을 결정할 수 있다. 제 2 동작에서, 셰이더는 광선을 따른 임시 위치들 중 특정 임시 위치를 식별할 수 있다. 제 3 동작에서, 셰이더는 반복적으로, 식별된 특정 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정할 수 있고; 셰이더는 식별된 특정 임시 위치를 광선을 따라 다음 임시 위치로 전진시킬 수 있다. 제 4 동작에서, 셰이더는 지정된 평면이 픽셀 위치와 식별된 특정 임시 위치 사이에 있는 것으로 결정할 수 있다. 제 5 동작에서, 셰이더는 식별된 특정 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이(식별된 특정 임시 위치 및 이에 인접한 이전에 식별된 임시 위치를 포함함)의 위치에 대응되도록 광선 교차 위치를 설정할 수 있다.
전술한 예들 중 일부에서, 광선 교차 위치를 결정하는 것은 편의상 제 6 내지 제 10 동작들로 명명된 다음의 동작들을 포함할 수 있다. 제 6 내지 제 10 동작들은 제 1 내지 제 5 동작들을 효과적으로 반복할 수 있지만, 상이한(예를 들어, 보다 미세한) 분해능을 갖는다. 제 6 동작에서, 셰이더는 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 광선을 따라 순차적인 제 2 임시 위치들을 결정할 수 있다. 제 7 동작에서, 셰이더는 광선을 따른 제 2 임시 위치들 중 제 2 임시 위치를 식별할 수 있다. 제 8 동작에서, 셰이더는 반복적으로, 식별된 제 2 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정할 수 있고; 식별된 제 2 임시 위치를 광선을 따라 다음 제 2 임시 위치로 전진시킬 수 있다. 제 9 동작에서, 셰이더는 지정된 평면이 픽셀 위치와 식별된 제 2 임시 위치 사이에 있는 것으로 결정할 수 있다. 제 10 동작에서, 셰이더는 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이(식별된 제 2 임시 위치 및 이에 인접한 이전에 식별된 제 2 임시 위치를 포함함)의 위치에 대응되도록 광선 교차 위치를 설정할 수 있다.
일부 예들에서, 임시 위치들은 광선을 따라 동일하게 이격될 수 있다. 일부 예들에서, 뷰 이미지는 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향과, 뷰 이미지의 평면에 있고 수평 방향에 직교하는 수직 방향과, 수평 및 수직 방향들에 직교하는 깊이를 정의할 수 있다. 일부 예들에서, 임시 위치들은, 인접한 임시 위치들 간의 간격의 수평 성분이 지정된 값에 대응되도록, 이격될 수 있다. 일부 예들에서, 지정된 값은 뷰 이미지 내의 인접한 픽셀들 간의 수평 간격에 대응될 수 있다.
일부 예들에서, 상이한 뷰 방향들은 뷰 이미지들의 상단 및 하단 에지들을 포함하는 수평 평면에 놓일 수 있다. 일부 예들에서, 제 1 내지 제 5 동작들 및 제 1 내지 제 10 동작들 중 하나 또는 둘 다는 실행 가능한 결과를 생성하지 않을 수 있다. 광선 투사만으로는 픽셀 위치에 대한 적합한 색상 값을 얻지 못할 수 있기 때문에, 셰이더는 적합한 색상 값을 얻기 위해 추가 동작들을 수행할 수 있다. 이러한 추가 동작들은 제 11 내지 제 15 동작들로 명명되며 상세히 후술된다.
제 11 동작에서, 셰이더는 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 나타내는 깊이 맵을 향해 광선을 투사할 수 있다. 제 12 동작에서, 셰이더는 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하지 않는 것으로 결정할 수 있다. 제 13 동작에서, 셰이더는 검색된 색상 정보에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정할 수 있다. 제 14 동작에서, 셰이더는, 광선이 임계 거리를 초과하는 거리만큼 픽셀 위치로부터 멀어지게 전파된 것으로 결정함으로써, 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하지 않는 것으로 결정할 수 있다.
일부 예들에서, 뷰 이미지들은 동영상 신호의 순차적 이미지들에 대응될 수 있다. 일부 예들에서, 색상 정보는 동영상 신호의 적어도 하나의 시간-인접 동영상 프레임의 픽셀 위치로부터 검색될 수 있다. 다음 설명은 뷰 이미지를 생성하고 렌더링할 수 있는, 셰이더를 포함하거나 이용하는 것과 같은, 컴퓨터로 구현되는 동작의 세부 사항들에 관한 것이다. 컴퓨터로 구현되는 동작의 의도된 용도는 복수의 뷰들, 예를 들어 4개 이상의 뷰들이 있는 이미지를 생성하는 것이다. 복수의 뷰들은 2x2 패턴 또는 1x4 패턴 및 3x3 패턴과 같은 다양한 패턴들의 타일들로서 배열될 수 있지만 이에 국한되지는 않는다. 컴퓨터로 구현되는 동작은 컬러 이미지 및 그에 수반되는 깊이 맵으로부터 복수의 뷰들을 합성할 수 있다. 깊이 맵은, 밝기 또는 강도가 관찰자 또는 카메라에 대한 근접성을 나타낼 수 있는 회색조 이미지로서 형성될 수 있다.
컴퓨터로 구현되는 동작은, 인간이 한 쌍의 뷰들을 볼 때 인간이 스테레오 효과를 지각할 수 있도록, 복수의 뷰들을 합성할 수 있다. 인간은 일반적으로 수평 방향으로 분리된 안구들을 가지고 있기 때문에, 컴퓨터로 구현되는 동작은 수평 방향으로 분리된 상이한 위치들로부터 볼 수 있는 복수의 뷰들을 합성할 수 있다. 컴퓨터로 구현되는 동작은 형상의 에지 상의 아티팩트(artifact) 또는 이미지의 에지 상의 아티팩트를 감소시키거나 제거할 수 있다. 이러한 아티팩트는 스테레오 효과를 방해할 수 있다.
합성된 이미지들은 동영상 이미지에 포함될 수 있기 때문에, 컴퓨터로 구현되는 동작은 복수의 뷰들을 비교적 빠르게 합성할 수 있다. 또한, 컴퓨터로 구현되는 동작은 OpenGL 렌더링 파이프라인과 같은 렌더링 파이프라인과 호환되도록 복수의 뷰들을 합성할 수 있다. 또한, 컴퓨터로 구현되는 동작은 모바일 장치에 부담이 되고/되거나 모바일 장치의 온도 스로틀링(temperature throttling)을 야기할 수 있는 과도한 연산들을 수행하지 않고도 복수의 뷰들을 합성할 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 직교투영(orthographic) 카메라 및 카메라의 매트릭스에 대한 수평 치우침(skew)들을 이용하는 포인트-클라우드 렌더링(point-cloud rendering) 또는 "순방향 맵핑(forward mapping)"이라 불리는 다른 접근법보다 더 효율적이고 더 강력할 수 있다. 순방향 맵핑에서, 색상이 지정된 지점들의 2차원 그리드의 색상들을 대응하는 깊이 값에 따라 좌측 및 우측 중 하나 또는 둘 다로 이동시켜 각각의 뷰를 만든다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 순방향 맵핑에 의해 생성되는 뷰들의 좌측 및 우측 에지들 중 하나 또는 둘 다에서 홀들, 분리된 지점들(detached points), 및 빈 영역들을 방지할 수 있다. 또한, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 디스플레이 장치 상에 존재하는 것보다 더 많은 지점들을 할당할 필요가 없다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 지점의 깊이에 따라 지점의 색상 값이 어떤 이웃 지점의 색상 값으로 대체되는 "역방향 맵핑(backward mapping)"이라 불리는 다른 접근법보다 더 효율적이고 더 강력할 수 있다. 역방향 맵핑은 깊이의 착시현상을 생성할 수 있지만 형상의 에지를 정확하게 묘사하지는 않는다. 예를 들어, 형상의 에지 상의 전경 부분이 예기치 않게 배경으로 덮일 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 3차원 메쉬를 이용하는 유사한 접근법보다 더 효율적이고 더 강력할 수 있다. 이러한 메쉬는 연산이 까다롭기 때문에 복수의 뷰들의 실시간 생성에 적합하지 않을 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 변형된 형태의 광선 투사를 이용할 수 있다. 광선 투사는 가상 스크린의 각각의 지점을 통해 어떤 중심 지점으로부터 3D 공간에 광선을 투사할 수 있으며, 표면에서의 히트 지점을 결정하여 스크린 상의 대응하는 지점의 색상을 설정할 수 있다. 뷰 합성을 위해, 컴퓨터로 구현되는 동작은 추가적인 광선 추적(raytracing)을 수행하지 않고도 히트 지점의 색상을 결정할 수 있다. 또한, 메모리에 복셀(voxel) 데이터를 배치하지 않고도, 텍스처는 표면을 결정할 수 있다. 광선 투사는 관점 뷰를 렌더링하는 능력과 정확성을 제공할 수 있다. 본 명세서에서 논의되는 변형들이 없으면, 광선 투사는 특히 고품질 이미지의 경우 계산 집약적일 수 있다. 그러나, 이는 특히 고품질 이미지의 경우 전력 소모가 많은 동작이다. 본 명세서에서 논의되는 변형들이 없으면, 광선 투사는 광선 경로를 수백 개의 스텝들로 나누고 각각의 스텝을 검사할 수 있다. 본 명세서에서 논의되는 하나 이상의 변형을 이용하면, 광선 투사는 소위 안전 영역들(예를 들어, 기하학적 구조를 갖지 않는 영역들)을 표시하기 위한 구조들을 이용하여 광선 이동을 가속시킬 수 있다.
일부 예들에서, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 비교적 간단한 프래그먼트 (픽셀) 셰이더를 이용하여 단일 전체 스크린 쿼드 렌더링(full screen quad rendering)으로 광선 투사를 수행할 수 있다. 일부 예들에서, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 실시간 성능을 달성할 수 있고 동영상-멀티뷰 워크플로우(video-to-multiview workflow)의 렌더링 체인(rendering chain)에 삽입될 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 프래그먼트 셰이더를 이용할 수 있다. 프래그먼트 셰이더는, 단일 픽셀에 대한 색상을 결정하고 결정된 색상 정보를 출력 버퍼에 저장하는 프로그램일 수 있다. 프래그먼트 셰이더는 모든 출력 픽셀의 색상을 결정하기 위해 출력 버퍼의 대응하는 엔트리들과 함께 모든 픽셀에 대해 병렬로 여러 번 실행될 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작을 수행할 수 있는 의사코드의 일 예는 다음과 같다:
x, y = output_coord
view_id = pick one from [-1.5, -0.5, +0.5, +1.5]
direction = if (view_id < 0) -1 else +1
total_steps = abs(view_id * gain_px)
x = x - convergence * view_id * gain_px
z = 1
for _ in total_steps:
if (read_depth(x, y) <= z) return read_color(x, y)
x += direction
z -= 1.0 / total_steps
return read_color(x, y)
도 4는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작의 단순화된 일 예의 그래픽 표현(400)을 도시한다. 도 4의 단순화된 예는 광선이 단일 평면에서 (뷰 방향에 대응되는) 전파 각도로 전파되는 1차원 예를 도시한다는 것이 이해될 것이다. 실제로, 깊이 맵은 2차원으로 확장될 수 있고, 전파 방향들은 3차원(예를 들어, 2차원 + 깊이) 등의 성분을 가질 수 있다.
도 4의 단순화된 예에서, 시청자로부터 멀어지는 깊이는 최-하단 수평 라인(402) 위의 높이로서 표현된다. 최-하단 수평 라인(402)은 깊이 맵의 전경 경계를 나타낸다. 최-하단 수평 라인(402) 아래에는 출력 버퍼(404)가 도시되어 있다. 최-상단 수평 라인(406)은 깊이 맵의 후방, 배경 평면 또는 경계를 나타낸다.
도 4의 단순화된 예에서, 깊이 맵은 일련의 픽셀들에 걸쳐 연장되는 것으로 도시된다. 깊이 맵은 수평 픽셀 당 하나의 값을 갖는 일련의 높이 값들로 표시된다. 도 4의 단순화된 예에서, 깊이 맵은 0과 1 사이(0 및 1을 포함함)의 11개의 가능한 값들 중 하나를 갖도록 양자화된다. 실제로, 실제 깊이 맵 값들은 전경 경계와 배경 경계 사이에 비교적 많은 수의 가능한 값들(예를 들어, 256)을 가질 수 있다. 도 4의 구체적인 예에서, 뷰 이미지의 최-좌측 에지에서 최-우측 에지까지, 깊이는 0.1에서 0.4로 증가한 이후, 0.0으로 감소하고, 이후 0.8로 증가한 이후, 뷰 이미지의 최-우측 에지에서 0.6으로 감소한다.
도 4의 단순화된 예에서, 좌표 x는 수평 방향을 따른다. 좌표 x는 출력 버퍼 픽셀을 나타낼 수 있다. 셰이더는 각각의 픽셀에 대해 한 번 실행될 수 있으며, 선택적으로 다른 픽셀들에 대응되는 다른 셰이더 실행들과 병렬로 실행될 수 있다. 셰이더는 좌표 x에 셰이더의 출력(예를 들어, 색상 값)을 기록할 수 있다. 일부 예들에서, 셰이더 출력(색상 값)은 셰이더가 실행되는 좌표 x에 기록된다. 다른 예들에서, 좌표 x는 수렴 값에 의해 결정되는 초기 시프트(initial shift)에 의해 선택적으로 시프팅(양으로 또는 음으로)되는 변수일 수 있다.
도 4의 단순화된 예에서, 변수 z는 그리드 상의 깊이 값들에 대해 상대적으로 배치된 각각의 반복(iteration)에 대한 변수이다. 도 4의 단순화된 예에서, 6개의 픽셀들에 대응되는 총 6개의 스텝들(408)이 있다. 6의 값은 뷰 시프트에 게인을 곱하여 계산될 수 있다. 변수 z의 초기 값은 1.0이다. 좌표 x의 초기 값은 7이다(예를 들어, 셀 번호 7, 여기서 셀들은 0에서 시작하여 순차적으로 번호가 매겨짐).
반복 번호 1에서, 좌표 x = 7에서, 셰이더는 (깊이 맵의) 깊이를 0.0으로 판독한다. 셰이더는 z의 값(1.0의 초기 값)을 좌표 x = 7에서의 깊이(0.0의 값)와 비교한다. z 값이 깊이보다 작거나 같지 않기 때문에, 셰이더는 z 값을 총 스텝 수의 역수와 동일한 양만큼 감소시킨다. 총 6스텝의 경우, z의 감소된 값은 0.833이 된다. 좌표 x는 한 픽셀씩 증가하여 x는 8이 된다.
반복 번호 2에서, 좌표 x = 8에서, 셰이더는 (깊이 맵의) 깊이를 0.0으로 판독한다. 셰이더는 z의 값(0.833)을 좌표 x = 8에서의 깊이(0.0의 값)와 비교한다. z 값이 깊이보다 작거나 같지 않기 때문에, 셰이더는 z 값을 총 스텝 수의 역수와 동일한 양만큼 감소시킨다. 총 6스텝의 경우, z의 감소된 값은 0.667이 된다. 좌표 x는 한 픽셀씩 증가하여 x는 9가 된다.
반복 번호 3에서, 좌표 x = 9에서, 셰이더는 (깊이 맵의) 깊이를 0.3으로 판독한다. 셰이더는 z의 값(0.667)을 좌표 x = 9에서의 깊이(0.3의 값)와 비교한다. z 값이 깊이보다 작거나 같지 않기 때문에, 셰이더는 z 값을 총 스텝 수의 역수와 동일한 양만큼 감소시킨다. 총 6스텝의 경우, z의 감소된 값은 0.5가 된다. 좌표 x는 한 픽셀씩 증가하여 x는 10이 된다.
반복 번호 4에서, 좌표 x = 10에서, 셰이더는 (깊이 맵의) 깊이를 0.4로 판독한다. 셰이더는 z의 값(0.5)을 좌표 x = 10에서의 깊이(0.4의 값)와 비교한다. z 값이 깊이보다 작거나 같지 않기 때문에, 셰이더는 z 값을 총 스텝 수의 역수와 동일한 양만큼 감소시킨다. 총 6스텝의 경우, z의 감소된 값은 0.333이 된다. 좌표 x는 한 픽셀씩 증가하여 x는 11이 된다.
반복 번호 5에서, 좌표 x = 11에서, 셰이더는 (깊이 맵의) 깊이를 0.5로 판독한다. 셰이더는 z의 값(0.333)을 좌표 x = 11에서의 깊이(0.5의 값)와 비교한다. z 값이 깊이보다 작거나 같기 때문에, 셰이더는 x = 11의 x 좌표로부터 색상을 판독한다. 셰이더는 x = 11의 색상 값을 출력 버퍼의 셀 번호 7에 할당한다. 즉, 이전의 동작들은 뷰 이미지의 픽셀(셀 번호 7에 위치됨)에 대한 색상 값(예를 들어, x = 11로부터의)을 결정하였다. 도 4의 단순화된 예에서 반복 번호 6은 없다.
셰이더는 선택적으로 인접한 판독 깊이 값들을 보간함으로써 추가적인 비교들을 수행할 수 있다. 이러한 추가적인 비교들은 x 좌표들의 인접 픽셀들 사이의 위치들에서 이루어질 수 있다. 셰이더는 색상 텍스처, 깊이 텍스처, 출력 픽셀의 x 및 y 좌표들, 게인(단일 스칼라 값) 및 수렴(또 다른 단일 스칼라 값)과 같은 수치들을 입력으로 이용할 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 단일 출력 버퍼 내에 복수의 뷰들을 생성할 수 있다. 예를 들어, 컴퓨터로 구현되는 동작이 4 개의 뷰 이미지들을 생성하는 구성의 경우, 출력 버퍼는, 예를 들어 수평 라인 및 수직 라인으로, 2x2 타일들에 해당하는 4 개의 영역들로 나뉠 수 있다. 특정 예에서, 뷰 0은 좌측 상단 타일에 할당되고, 뷰 1은 우측 상단 타일에 할당되고, 뷰 2는 좌측 하단 타일에 할당되고, 뷰 3은 우측 하단 타일에 할당된다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 하나의 수평 행에 배열된 상이한 뷰 각도들에 대한 뷰들 0 내지 3을 제공할 수 있다. 일부 예들에서, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 뷰의 폭에 대한 원본 뷰 이미지의 각각의 특징에 대한 최대 오프셋 거리를 사용자에게 편안할 수 있는 지정된 값으로 설정할 수 있다. 예를 들어, 지정된 값은 10개의 픽셀들과 20개의 픽셀들 사이(10개의 픽셀들 및 20개의 픽셀들을 포함함)일 수 있다. 일부 예들에서, 주변 뷰들(예를 들어, 뷰 0 및 뷰 3)은 최대 오프셋을 수신할 수 있으며, 여기서 x 및 y 좌표들은 선택된 뷰의 사분면을 덮도록 랩핑(wrapping)될 수 있다.
뷰 식별자 또는 뷰 id(예를 들어, 0, 1, 2 또는 3)가 알려진 경우, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 미리 정의된 시프트 값들의 어레이로부터, 예를 들어 어레이 [-1.5, -0.5, +0.5, +1.5] 로부터, 뷰 시프트 값을 선택할 수 있다. 사용자 또는 컴퓨터로 구현되는 다른 루틴은 수렴 값을 제공할 수 있다. 수렴 값은 픽셀 시프트를 0으로 줄임으로써 깊이 평면을 제 자리에 고정시키는 데 도움이 될 수 있다. 예를 들어, 애니메이션에서와 같이 뷰 이미지들을 순차적으로 표시하려는 경우, 0의 수렴 값은 배경이 제 자리에 고정된 것처럼 나타나 전경이 좌측에서 우측으로 이동하게끔 할 수 있다. 유사하게, 1의 수렴 값은 전경이 제 자리에 고정된 것처럼 나타나 배경이 좌측에서 우측으로 이동할 수 있게 한다. 0.5의 수렴 값은 중앙 평면을 제 자리에 고정시켜 배경과 전경이 반대 방향으로 움직이도록 할 수 있다. 배경과 전경 사이에 있지 않은 깊이에서 평면을 고정시킬 수 있는 다른 값도 이용될 수 있다.
사용자 또는 컴퓨터로 구현되는 다른 루틴은 게인 값을 제공할 수 있다. 게인 값은 전술한 바와 같이 배경과 전경 사이의 상대적인 움직임을 증가시키거나 감소시킬 수 있다. 수치적으로, 픽셀 단위로, 게인 구현의 일 예는 view_shift_px = shift_value_array [ view_id ] * gain_px 일 수 있다.
게인 값은 양수 또는 음수일 수 있다. 게인의 절대 값은 셰이더가 반복을 수행하기 위해 얼마나 많은 깊이들을 이용할 수 있는지를 결정할 수 있다. 예를 들어, 셰이더는 다음과 같은 총 스텝 수를 이용할 수 있다: total_steps = abs ( view_shift_px ). 수렴을 적용하기 위해, 셰이더는 x = x - convergence * view_shift_px 에 따라 x 좌표를 수정할 수 있다. 셰이더는 변수 z를 1.0의 값으로 초기화할 수 있다. 셰이더는 변수 Nx를 뷰 사분면 내에 이미 랩핑되었을 수 있는 x 좌표의 값으로 초기화할 수 있다. 각각의 스텝에서, 셰이더는 Nx, y를 이용하여 깊이 텍스처로부터 깊이 값을 판독할 수 있다. 각각의 스텝에서, 셰이더는 변수 Nx를 (view_shift_px의 부호에 따라) 1만큼 증가시키거나 감소시킬 수 있다. 각각의 스텝에서, 셰이더는 z 변수를 1.0을 total_steps로 나눈 값만큼 감소시킬 수 있다. z 변수가 판독 깊이 값보다 작거나 같아지는 스텝에서, 셰이더는 반복들을 중단하고 Nx, y에서의 색상 텍스처로부터 판독되는 색상 값을 반환한다.
이러한 방식으로, 셰이더는 출력 버퍼에 순방향 맵핑된 뷰들을 생성할 수 있다. 순방향 맵핑된 뷰들은 전경과 배경이 겹치는(background-over-foreground) 결함이 없을 수 있고, 홀이나 분리된 픽셀이 없을 수 있으며, 빈 측면이 없을 수 있다. 셰이더는 생성되는 뷰들에서 비어 있지 않은 텍스처 미러링 파라미터 측면을 허용할 수 있기 때문에, 셰이더는 텍스처 경계로부터 샘플링할 수 있으며 뷰의 측면의 문제를 해결할 수 있다.
깊이 텍스처는 0 이외의 값들을 포함할 수 있기 때문에(예를 들어, 평평하지 않음), 셰이더는 total_steps의 값보다 더 일찍 반복들을 중단할 수 있다. 또한, total_steps의 값은 편안한 제한(예를 들어, 10개의 픽셀들과 20개의 픽셀들 사이(10개의 픽셀들 및 20개의 픽셀들을 포함함))으로 지정될 수 있기 때문에, 셰이더는 각각의 픽셀에 대해 비교적 적은 반복들을 수행할 수 있다. 셰이더는 각각의 픽셀에 대해 비교적 적은 반복들을 수행할 수 있기 때문에, 셰이더는 상대적으로 적은 수의 연산을 이용하여 뷰 이미지들 내의 픽셀들에 대한 색상 값들을 얻을 수 있고, 따라서 실시간 성능에 필요한 연산 부하가 감소될 수 있다. 일반적으로, 뷰들의 개수를 증가시키면, 출력 버퍼의 크기가 증가될 수 있고, 실시간 성능에 필요한 연산 부하가 증가될 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은, 예를 들어 깊이 값이 비교적 빠른 변화를 갖는 영역들에서, 객체들의 에지들에서 발생하는 아티팩트들을 감소시키거나 제거할 수 있다. 예를 들어, 셰이더는 지정된 오버샘플링 계수(예를 들어, 4)만큼 스텝들의 수를 증가시켜 추가적인 중간 반복들을 수행할 수 있다. 예를 들어, 반복들은 선형 보간을 위해 이전에 판독된 깊이 값을 이용하여, 매 네 번째 스텝에서 깊이를 추출할 수 있다. 이러한 중간 반복들은, 깊이 텍스처로부터의 추가적인 판독을 필요로 하지 않고, 보다 높은 품질의 뷰 이미지들을 생성할 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 선택적으로 전술한 사분면에 직접적으로 대응될 필요는 없는 각각의 출력 픽셀에 대한 뷰 id를 선택할 수 있다. 이러한 방식으로 뷰 id를 선택하면, 예를 들어 멀티뷰 디스플레이 장치와 호환 가능한 패턴으로 픽셀을 재배치하는 것과 같은 버퍼의 다운 스트림 처리를 제거하는 데 도움이 될 수 있다. 예를 들어, 디스플레이를 덮는 렌티큘러 렌즈 어레이는 각각의 렌즈 아래에서 상이한 뷰들의 얇은 줄무늬(stripe)들의 세트들을 수신할 수 있다. 비교 read_depth(x, y) <= z를 임계 값을 이용한 검사와 같은 고급 차이 검사로 변경하면, 셰이더는, 예를 들어 인페인팅이 가능하고 늘어난 예지들보다 선호되는 경우, 추가 인페인팅을 위해 홀들을 남길 수 있다.
일반적으로, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 상대적으로 낮은 게인 값들 및 상대적으로 높은 콘트라스트(contrast) 값들을 이용하여 개선된 성능을 달성할 수 있다. 일반적으로, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 정규화되거나 또는 적어도 어둡게 처리되지 않은(not darkened) 깊이 맵들에 대해 개선된 성능을 달성할 수 있다. 일반적으로, 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 시프팅이 한 방향으로만, 예를 들어 수평으로 또는 수직으로 제공되는 경우 개선된 성능을 달성할 수 있다.
본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 실시간으로 동작할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 OpenGL-기반 렌더링 파이프라인(셰이더)의 일부로서 동작할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 서로에 대해 수평 방향으로 시프팅되는 상대적으로 높은 품질의 많은 순방향 맵핑된 뷰들을 생성할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 컬러 이미지 및 대응하는 깊이 맵의 입력들을 이용할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 게인 파라미터 및 수렴 파라미터를 이용할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 광선 투사의 한 형태와 관련될 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 프래그먼트(픽셀) 셰이더를 이용하여 순방향-맵핑 방식으로 (예를 들어, 입체시(stereoscopic vision) 응용에서 뷰들을 사용하려는 의도로) 상이한 뷰들을 합성하는 것과 관련될 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 이미지 품질과 연산 속도 사이에서 균형을 맞출 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은, 전처리 없이 그리고 3D 메쉬를 할당함이 없이, 단일 셰이더 경로를 이용하여, 실시간으로, 컬러 이미지 및 깊이 맵으로부터 임의의 개수의 직교투영적으로 수평 방향으로 치우친 뷰들을 생성할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 모바일 장치 상에서 실행될 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 비교적 적은 반복들 및 비교적 적은 텍스처 판독들을 이용하여 비교적 적은 연산 부하로 동작할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 홀들 또는 분리된 픽셀들이 없는 뷰 이미지들을 생성할 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 광선 투사를 통해 통상적인 렌더링보다 단순한 내부 워크플로우를 가질 수 있다. 본 명세서에서 논의되는 컴퓨터로 구현되는 동작은 개별 지점 시프팅을 기반으로 하는 단순한 순방향 맵핑보다 더 나은 성능을 가질 수 있다.
도 5는 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따른 멀티뷰 이미지 생성 및 디스플레이를 수행하는 방법(500)의 일 예의 흐름도를 도시한다. 방법(500)은 시스템(100), 또는 멀티뷰 이미지 생성 및 디스플레이를 수행할 수 있는 임의의 다른 적절한 시스템 상에서 실행될 수 있다.
동작(502)에서, 시스템은 장면의 컬러 이미지 및 장면의 깊이 맵을 수신할 수 있다. 동작(504)에서, 시스템은 컬러 이미지 및 깊이 맵으로부터 장면의 멀티뷰 이미지의 뷰 이미지들을 합성할 수 있다. 뷰 이미지들은 상이한 뷰 방향들로부터 장면을 나타낼 수 있다. 각각의 뷰 이미지는 픽셀 위치들 및 픽셀 위치들에서의 각각의 색상 값들을 포함할 수 있다. 동작(506)에서, 시스템은 멀티뷰 디스플레이 상에 멀티뷰 이미지의 뷰 이미지들을 렌더링할 수 있다.
멀티뷰 이미지의 뷰 이미지를 합성하는 것은 뷰 이미지 내의 소정의 픽셀 위치에 대해 다음의 동작들을 포함할 수 있다. 시스템은 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 향해 광선을 투사할 수 있다. 시스템은 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정할 수 있다. 시스템은 광선 교차 위치에서의 컬러 이미지의 색상에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정할 수 있다.
일부 예들에서, 가상 표면이 픽셀 위치와 지정된 평면 사이에 놓이도록 픽셀 위치와 지정된 평면 사이에서 광선을 따른 순차적인 임시 위치들을 결정하는 것은 다음의 동작들을 포함할 수 있다. 시스템은 광선을 따른 임시 위치들 중 소정의 임시 위치를 식별할 수 있다. 시스템은 반복적으로, 식별된 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정하고 식별된 임시 위치를 광선을 따른 다음 임시 위치로 전진시킬 수 있다. 시스템은 지정된 평면이 픽셀 위치와 식별된 임시 위치 사이에 있는 것으로 결정할 수 있다. 시스템은 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이(식별된 임시 위치 및 이에 인접한 이전에 식별된 임시 위치를 포함함)의 위치에 대응되도록 광선 교차 위치를 설정할 수 있다.
일부 예들에서, 광선 교차 위치를 결정하는 것은 다음의 동작들을 더 포함할 수 있다. 시스템은 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 광선을 따른 순차적인 제 2 임시 위치들을 결정할 수 있다. 시스템은 광선을 따른 제 2 임시 위치들 중 소정의 제 2 임시 위치를 식별할 수 있다. 시스템은 반복적으로, 식별된 제 2 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정하고; 식별된 제 2 임시 위치를 광선을 따라 다음 제 2 임시 위치로 전진시킬 수 있다. 시스템은 지정된 평면이 픽셀 위치와 식별된 제 2 임시 위치 사이에 있는 것으로 결정할 수 있다. 시스템은 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이(식별된 제 2 임시 위치 및 이에 인접한 이전에 식별된 제 2 임시 위치를 포함함)의 위치에 대응되도록 광선 교차 위치를 설정할 수 있다.
일부 예들에서, 임시 위치들은 광선을 따라 동일하게 이격될 수 있다. 일부 예들에서, 뷰 이미지는 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향과, 뷰 이미지의 평면에 있고 수평 방향에 직교하는 수직 방향과, 수평 및 수직 방향들에 직교하는 깊이를 정의할 수 있다. 일부 예들에서, 임시 위치들은, 인접한 임시 위치들 사이의 간격의 수평 성분이 뷰 이미지 내의 인접한 픽셀들 사이의 수평 간격에 대응되도록, 이격될 수 있다.
도 6은 본 명세서에 설명된 원리들에 일치되는 일 실시 예에 따라 멀티뷰 이미지 생성 및 디스플레이를 수행할 수 있는 컴퓨팅 장치의 일 예를 묘사하는 개략적인 블록도이다. 컴퓨팅 장치(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)는 어플리케이션들에 의해 생성된 동영상, 이미지들 또는 프레임들을 렌더링하기 위해 그래픽스 파이프라인(예를 들어, 도 3에 개략적으로 도시된 그래픽스 파이프라인)을 구현하는 하드웨어를 포함할 수 있다. 예를 들어, 프로세서(들)(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)는 멀티뷰 디스플레이(예를 들어, 멀티뷰 디스플레이(112)), 2D 디스플레이와 결합된 멀티뷰 디스플레이, 또는 그래픽 컨텐츠를 나타내는 임의의 기타의 디스플레이를 포함할 수 있다. I/O 컴포넌트(1009)로서 기능하는 용량성 터치 스크린 계층은, 사용자가 입력을 제공함과 동시에 시각적 출력을 지각할 수 있도록, 디스플레이 내에 계층화될 수 있다. 프로세서(들)(1003)는 디스플레이(1012) 상의 표현을 위한 이미지 또는 프레임으로서 포맷된 데이터를 생성할 수 있다. 프로세서(들)(1003)는 사용자를 위해 디스플레이 상에 이미지 또는 프레임을 렌더링하기 위한 명령어들을 실행할 수 있다. 카메라 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)와 연동하여 동작하는 클라우드 기반 시스템에서 저장, 로딩 또는 실행될 수 있다.
특히, 비-일시적인 컴퓨터-판독 가능한 저장 매체는, 컴퓨터 시스템의 프로세서에 의해 실행되는 경우 멀티뷰 이미지를 생성하고 디스플레이하는 동작들을 수행하는 실행 가능한 명령어들을 저장할 수 있다. 다양한 실시 예들에 따르면, 동작들은 장면의 컬러 이미지 및 장면의 깊이 맵을 수신하는 것을 포함할 수 있다. 동작들은 컬러 이미지 및 깊이 맵으로부터 장면의 멀티뷰 이미지의 뷰 이미지들을 합성하는 것을 더 포함할 수 있다. 다양한 실시 예들에서, 뷰 이미지들은 상이한 뷰 방향들로부터 장면을 나타낼 수 있고, 각각의 뷰 이미지는 픽셀 위치들 및 픽셀 위치들에서의 각각의 색상 값들을 포함할 수 있다. 또한, 동작들은 멀티뷰 디스플레이 상에 멀티뷰 이미지의 뷰 이미지들을 렌더링하는 것을 포함할 수 있다.
다양한 실시 예들에 따르면, 멀티뷰 이미지의 뷰 이미지를 합성하는 것은, 뷰 이미지 내의 소정의 픽셀 위치에 대해, 뷰 이미지의 뷰 방향에 대응되는 방향으로 픽셀 위치로부터 장면을 향해 광선을 투사하는 것을 포함한다. 뷰 이미지를 합성하는 것은, 광선이 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하고, 광선 교차 위치에서의 컬러 이미지의 색상에 대응되도록 픽셀 위치에서의 뷰 이미지의 색상 값을 설정하는 것을 더 포함한다.
일부 실시 예들에서, 광선 교차 위치를 결정하는 것은, 가상 표면이 픽셀 위치와 지정된 평면 사이에 놓이도록, 픽셀 위치와 지정된 평면 사이에서 광선을 따른 순차적인 임시 위치들을 결정하는 것을 포함할 수 있다. 광선 교차 위치를 결정하는 것은 광선을 따른 임시 위치들 중 소정의 임시 위치를 식별하는 것을 더 포함할 수 있다. 특히, 임시 위치를 식별하는 것은 반복적으로, 식별된 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정하고 식별된 임시 위치를 광선을 따라 다음 임시 위치로 전진시키는 것을 포함할 수 있다.
이러한 실시 예들에 따르면, 광선 교차 위치를 결정하는 것은, 지정된 평면이 픽셀 위치와 식별된 임시 위치 사이에 있는 것으로 결정하는 것을 더 포함할 수 있다. 또한, 광선 교차 위치를 결정하는 것은, 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이의 위치에 대응되도록, 광선 교차 위치를 설정하는 것을 포함할 수 있다.
일부 실시 예들에 따르면, 광선 교차 위치를 결정하는 것은, 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 광선을 따른 순차적인 제 2 임시 위치들을 결정하는 것, 및 광선을 따른 제 2 임시 위치들 중 소정의 제 2 임시 위치를 식별하는 것을 더 포함한다. 특히, 제 2 임시 위치를 식별하는 것은 반복적으로, 식별된 제 2 임시 위치가 픽셀 위치와 지정된 평면 사이에 있는 것으로 결정하고, 식별된 제 2 임시 위치를 광선을 따라 다음 제 2 임시 위치로 전진시키는 것을 포함할 수 있다.
이들 실시 예들 중 일부에서, 광선 교차 위치를 결정하는 것은, 지정된 평면이 픽셀 위치와 식별된 제 2 임시 위치 사이에 있는 것으로 결정하는 것을 더 포함한다. 또한, 광선 교차 위치를 결정하는 것은, 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이의 위치에 대응되도록, 광선 교차 위치를 설정하는 것을 포함할 수 있다.
일부 실시 예들에서, 임시 위치들은 광선을 따라 동일하게 이격된다. 일부 실시 예들에서, 뷰 이미지는 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향을 정의할 수 있다. 여기서, 수직 방향은 뷰 이미지의 평면에 있을 수 있고 수평 방향과 직교할 수 있으며, 깊이는 수평 및 수직 방향들과 직교할 수 있다. 일부 실시 예들에서, 임시 위치들은, 인접한 임시 위치들 사이의 간격의 수평 성분이 뷰 이미지 내의 인접한 픽셀들 사이의 수평 간격에 대응되도록, 이격된다.
이상에서는, 예를 들어 멀티뷰 동영상 렌더링을 위해, 멀티뷰 동영상 캐시를 생성하고 이용하는 예들 및 실시 예들이 설명되었다. 캐시는 타겟 타임스탬프에 대응되는 적어도 한 쌍의 캐시 데이터 엔트리들을 포함할 수 있고, 한 쌍의 캐시 데이터 엔트리들 중 제 1 및 제 2 캐시 데이터 엔트리들은 각각의 제 1 및 제 2 이미지 프레임 그룹들을 포함할 수 있다. 제 1 이미지 프레임 그룹은 타겟 타임스탬프에 선행하는 제 1 멀티뷰 프레임에 대응될 수 있고, 제 2 이미지 프레임 그룹은 타겟 타임스탬프에 후속하는 제 2 멀티뷰 프레임에 대응될 수 있다. 타겟 타임스탬프에 대응되는 특정 멀티뷰 프레임의 뷰들은, 캐시로부터의 제 1 및 제 2 이미지 프레임 그룹들로부터의 정보를 이용하여 생성될 수 있다. 전술한 예들은 단지 본 명세서에 설명된 원리들을 나타내는 많은 구체적인 예들 중 일부를 예시하는 것임을 이해하여야 한다. 명백히, 당업자는 다음의 청구 범위에 의하여 정의되는 범위를 벗어나지 않고 수 많은 다른 구성들을 쉽게 고안할 수 있다.

Claims (20)

  1. 멀티뷰 이미지를 생성하고 디스플레이하기 위한, 컴퓨터로 구현되는 방법으로서,
    컴퓨팅 장치를 이용하여, 장면의 컬러 이미지 및 상기 장면의 깊이 맵을 수신하는 단계;
    상기 컴퓨팅 장치를 이용하여, 상기 컬러 이미지 및 상기 깊이 맵으로부터 상기 장면의 멀티뷰 이미지의 뷰 이미지들을 합성하는 단계 - 상기 뷰 이미지들은 상이한 뷰 방향들로부터 상기 장면을 나타내고, 각각의 뷰 이미지는 픽셀 위치들 및 상기 픽셀 위치들에서의 각각의 색상 값들을 포함함 -; 및
    상기 컴퓨팅 장치의 멀티뷰 디스플레이 상에 상기 멀티뷰 이미지의 뷰 이미지들을 렌더링하는 단계;
    를 포함하되,
    상기 멀티뷰 이미지의 뷰 이미지를 합성하는 단계는, 상기 뷰 이미지 내의 픽셀 위치에 대해:
    상기 뷰 이미지의 뷰 방향에 대응되는 방향으로 상기 픽셀 위치로부터 상기 장면을 향해 광선(ray)을 투사(casting)하는 단계;
    상기 광선이 상기 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하는 단계; 및
    상기 광선 교차 위치에서의 상기 컬러 이미지의 색상에 대응되도록, 상기 픽셀 위치에서의 상기 뷰 이미지의 색상 값을 설정하는 단계;
    를 포함하는,
    컴퓨터로 구현되는 방법.
  2. 제 1 항에 있어서,
    상기 광선 교차 위치를 결정하는 단계는:
    상기 가상 표면이 상기 픽셀 위치와 지정된 평면 사이에 놓이도록, 상기 픽셀 위치와 상기 지정된 평면 사이에서 상기 광선을 따라 순차적인 임시 위치들을 결정하는 단계;
    상기 광선을 따른 임시 위치들 중 임시 위치를 식별하는 단계 - 상기 임시 위치를 식별하는 단계는, 상기 식별된 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 단계, 및 상기 식별된 임시 위치를 상기 광선을 따라 다음 임시 위치로 전진시키는 단계를 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 임시 위치 사이에 있는 것으로 결정하는 단계; 및
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이(상기 식별된 임시 위치 및 이에 인접한 이전에 식별된 임시 위치를 포함함)의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 단계;
    를 포함하는,
    컴퓨터로 구현되는 방법.
  3. 제 2 항에 있어서,
    상기 광선 교차 위치를 결정하는 단계는:
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 상기 광선을 따라 순차적인 제 2 임시 위치들을 결정하는 단계;
    상기 광선을 따른 제 2 임시 위치들 중 제 2 임시 위치를 식별하는 단계 - 상기 제 2 임시 위치를 식별하는 단계는, 상기 식별된 제 2 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 단계, 및 상기 식별된 제 2 임시 위치를 상기 광선을 따라 다음 제 2 임시 위치로 전진시키는 단계를 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 제 2 임시 위치 사이에 있는 것으로 결정하는 단계; 및
    상기 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이(상기 식별된 제 2 임시 위치 및 이에 인접한 이전에 식별된 제 2 임시 위치를 포함함)의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 단계;
    를 더 포함하는,
    컴퓨터로 구현되는 방법.
  4. 제 2 항에 있어서,
    상기 임시 위치들은 상기 광선을 따라 동일하게 이격되는,
    컴퓨터로 구현되는 방법.
  5. 제 4 항에 있어서,
    상기 뷰 이미지는 상기 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향과, 상기 뷰 이미지의 평면에 있고 상기 수평 방향에 직교하는 수직 방향과, 상기 수평 및 수직 방향들에 직교하는 깊이를 정의하고;
    상기 임시 위치들은, 인접한 임시 위치들 사이의 간격의 수평 성분이 지정된 값에 대응되도록, 이격되는,
    컴퓨터로 구현되는 방법.
  6. 제 5 항에 있어서,
    상기 지정된 값은 상기 뷰 이미지 내의 인접한 픽셀들 사이의 수평 간격에 대응되는,
    컴퓨터로 구현되는 방법.
  7. 제 1 항에 있어서,
    상기 멀티뷰 이미지의 뷰 이미지를 합성하는 단계는, 상기 뷰 이미지 내의 픽셀 위치에 대해:
    상기 뷰 이미지의 뷰 방향에 대응되는 방향으로 상기 픽셀 위치로부터 상기 장면을 향해 광선을 투사하는 단계;
    상기 광선이 상기 깊이 맵에 의해 지정된 가상 표면과 교차하지 않는 것으로 결정하는 단계;
    상기 멀티뷰 이미지의 뷰 이미지들의 적어도 하나의 시간-인접 동영상 프레임으로부터 색상 정보를 검색하는 단계; 및
    상기 검색된 색상 정보에 대응되도록, 상기 픽셀 위치에서의 상기 뷰 이미지의 색상 값을 설정하는 단계;
    를 포함하는,
    컴퓨터로 구현되는 방법.
  8. 제 7 항에 있어서,
    상기 광선이 상기 깊이 맵에 의해 지정된 가상 표면과 교차하지 않는 것으로 결정하는 단계는, 상기 광선이 임계 거리를 초과하는 거리만큼 상기 픽셀 위치로부터 멀어지게 전파된 것으로 결정하는 단계를 포함하는,
    컴퓨터로 구현되는 방법.
  9. 제 7 항에 있어서,
    상기 뷰 이미지들은 동영상 신호의 순차적인 이미지들에 대응되고;
    상기 색상 정보는 상기 동영상 신호의 적어도 하나의 시간-인접 동영상 프레임의 픽셀 위치로부터 검색되는,
    컴퓨터로 구현되는 방법.
  10. 제 1 항에 있어서,
    상기 상이한 뷰 방향들은, 상기 뷰 이미지들의 상단 및 하단 에지들을 포함하는 수평 평면에 있는,
    컴퓨터로 구현되는 방법.
  11. 멀티뷰 이미지를 생성하고 디스플레이하도록 구성된 시스템으로서,
    멀티뷰 디스플레이;
    중앙 처리 유닛; 및;
    실행되는 경우, 상기 중앙 처리 유닛으로 하여금 동작들을 수행하게끔 하는 복수의 명령어들을 저장하는 메모리;
    를 포함하되,
    상기 동작들은:
    장면의 컬러 이미지 및 상기 장면의 깊이 맵을 수신하는 것;
    상기 컬러 이미지 및 상기 깊이 맵으로부터 상기 장면의 멀티뷰 이미지의 뷰 이미지들을 합성하는 것 - 상기 뷰 이미지들은 상이한 뷰 방향들로부터 상기 장면을 나타내고, 각각의 뷰 이미지는 픽셀 위치들 및 상기 픽셀 위치들에서의 각각의 색상 값들을 포함함 -;
    상기 멀티뷰 디스플레이 상에 상기 멀티뷰 이미지의 뷰 이미지들을 렌더링하는 것;
    을 포함하고,
    상기 멀티뷰 이미지의 뷰 이미지를 합성하는 것은, 상기 뷰 이미지 내의 픽셀 위치에 대해:
    상기 뷰 이미지의 뷰 방향에 대응되는 방향으로 상기 픽셀 위치로부터 상기 장면을 향해 광선을 투사하는 것;
    상기 광선이 상기 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하는 것; 및
    상기 광선 교차 위치에서의 상기 컬러 이미지의 색상에 대응되도록, 상기 픽셀 위치에서의 상기 뷰 이미지의 색상 값을 설정하는 것;
    을 포함하는,
    시스템.
  12. 제 11 항에 있어서,
    상기 광선 교차 위치를 결정하는 것은:
    상기 가상 표면이 상기 픽셀 위치와 지정된 평면 사이에 놓이도록, 상기 픽셀 위치와 상기 지정된 평면 사이에서 상기 광선을 따라 순차적인 임시 위치들을 결정하는 것;
    상기 광선을 따른 임시 위치들 중 임시 위치를 식별하는 것 - 상기 임시 위치를 식별하는 것은, 상기 식별된 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 것, 및 상기 식별된 임시 위치를 상기 광선을 따라 다음 임시 위치로 전진시키는 것을 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 임시 위치 사이에 있는 것으로 결정하는 것; 및
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이(상기 식별된 임시 위치 및 이에 인접한 이전에 식별된 임시 위치를 포함함)의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 것;
    을 포함하는,
    시스템.
  13. 제 12 항에 있어서,
    상기 광선 교차 위치를 결정하는 것은:
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 상기 광선을 따라 순차적인 제 2 임시 위치들을 결정하는 것;
    상기 광선을 따른 제 2 임시 위치들 중 제 2 임시 위치를 식별하는 것 - 상기 제 2 임시 위치를 식별하는 것은, 상기 식별된 제 2 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 것, 및 상기 식별된 제 2 임시 위치를 상기 광선을 따라 다음 제 2 임시 위치로 전진시키는 것을 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 제 2 임시 위치 사이에 있는 것으로 결정하는 것; 및
    상기 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이(상기 식별된 제 2 임시 위치 및 이에 인접한 이전에 식별된 제 2 임시 위치를 포함함)의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 것;
    을 더 포함하는,
    시스템.
  14. 제 12 항에 있어서,
    상기 임시 위치들은 상기 광선을 따라 동일하게 이격되는,
    시스템.
  15. 제 14 항에 있어서,
    상기 뷰 이미지는 상기 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향과, 상기 뷰 이미지의 평면에 있고 상기 수평 방향에 직교하는 수직 방향과, 상기 수평 및 수직 방향들에 직교하는 깊이를 정의하고;
    상기 임시 위치들은, 인접한 임시 위치들 사이의 간격의 수평 성분이 상기 뷰 이미지 내의 인접한 픽셀들 사이의 수평 간격에 대응되도록, 이격되는,
    시스템.
  16. 제 11 항에 있어서,
    상기 상이한 뷰 방향들은, 상기 뷰 이미지들의 상단 및 하단 에지들을 포함하는 수평 평면에 있는,
    시스템.
  17. 컴퓨터 시스템의 프로세서에 의해 실행되는 경우 멀티뷰 이미지를 생성하고 디스플레이하는 동작들을 수행하는 실행 가능한 명령어들을 저장하는 비-일시적인 컴퓨터-판독 가능한 저장 매체로서,
    상기 동작들은:
    장면의 컬러 이미지 및 상기 장면의 깊이 맵을 수신하는 것;
    상기 컬러 이미지 및 상기 깊이 맵으로부터 상기 장면의 멀티뷰 이미지의 뷰 이미지들을 합성하는 것 - 상기 뷰 이미지들은 상이한 뷰 방향들로부터 상기 장면을 나타내고, 각각의 뷰 이미지는 픽셀 위치들 및 상기 픽셀 위치들에서의 각각의 색상 값들을 포함함 -;
    멀티뷰 디스플레이 상에 상기 멀티뷰 이미지의 뷰 이미지들을 렌더링하는 것;
    을 포함하고,
    상기 멀티뷰 이미지의 뷰 이미지를 합성하는 것은, 상기 뷰 이미지 내의 픽셀 위치에 대해:
    상기 뷰 이미지의 뷰 방향에 대응되는 방향으로 상기 픽셀 위치로부터 상기 장면을 향해 광선을 투사하는 것;
    상기 광선이 상기 깊이 맵에 의해 지정된 가상 표면과 교차하는 광선 교차 위치를 결정하는 것; 및
    상기 광선 교차 위치에서의 상기 컬러 이미지의 색상에 대응되도록, 상기 픽셀 위치에서의 상기 뷰 이미지의 색상 값을 설정하는 것;
    을 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  18. 제 17 항에 있어서,
    상기 광선 교차 위치를 결정하는 것은:
    상기 가상 표면이 상기 픽셀 위치와 지정된 평면 사이에 놓이도록, 상기 픽셀 위치와 상기 지정된 평면 사이에서 상기 광선을 따라 순차적인 임시 위치들을 결정하는 것;
    상기 광선을 따른 임시 위치들 중 임시 위치를 식별하는 것 - 상기 임시 위치를 식별하는 것은, 상기 식별된 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 것과 상기 식별된 임시 위치를 상기 광선을 따라 다음 임시 위치로 전진시키는 것을 반복하는 것을 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 임시 위치 사이에 있는 것으로 결정하는 것; 및
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 것;
    을 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  19. 제 18 항에 있어서,
    상기 광선 교차 위치를 결정하는 것은:
    상기 식별된 임시 위치와 이에 인접한 이전에 식별된 임시 위치 사이에서 상기 광선을 따라 순차적인 제 2 임시 위치들을 결정하는 것;
    상기 광선을 따른 제 2 임시 위치들 중 제 2 임시 위치를 식별하는 것 - 상기 제 2 임시 위치를 식별하는 것은, 상기 식별된 제 2 임시 위치가 상기 픽셀 위치와 상기 지정된 평면 사이에 있는 것으로 결정하는 것과 상기 식별된 제 2 임시 위치를 상기 광선을 따라 다음 제 2 임시 위치로 전진시키는 것을 반복하는 것을 포함함 -;
    상기 지정된 평면이 상기 픽셀 위치와 상기 식별된 제 2 임시 위치 사이에 있는 것으로 결정하는 것; 및
    상기 식별된 제 2 임시 위치와 이에 인접한 이전에 식별된 제 2 임시 위치 사이(상기 식별된 제 2 임시 위치 및 이에 인접한 이전에 식별된 제 2 임시 위치를 포함함)의 위치에 대응되도록, 상기 광선 교차 위치를 설정하는 것;
    을 더 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
  20. 제 18 항에 있어서,
    상기 임시 위치들은 상기 광선을 따라 동일하게 이격되고;
    상기 뷰 이미지는 상기 뷰 이미지의 상단 및 하단 에지들에 평행한 수평 방향과, 상기 뷰 이미지의 평면에 있고 상기 수평 방향에 직교하는 수직 방향과, 상기 수평 및 수직 방향들에 직교하는 깊이를 정의하고;
    상기 임시 위치들은, 인접한 임시 위치들 사이의 간격의 수평 성분이 상기 뷰 이미지 내의 인접한 픽셀들 사이의 수평 간격에 대응되도록, 이격되는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
KR1020247003743A 2021-08-03 2022-07-28 깊이 맵을 이용한 뷰 합성 시스템 및 방법 KR20240027813A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163229054P 2021-08-03 2021-08-03
US63/229,054 2021-08-03
PCT/US2022/038731 WO2023014576A1 (en) 2021-08-03 2022-07-28 View synthesis system and method using depth map

Publications (1)

Publication Number Publication Date
KR20240027813A true KR20240027813A (ko) 2024-03-04

Family

ID=85156357

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247003743A KR20240027813A (ko) 2021-08-03 2022-07-28 깊이 맵을 이용한 뷰 합성 시스템 및 방법

Country Status (7)

Country Link
US (1) US20240153200A1 (ko)
EP (1) EP4381735A1 (ko)
KR (1) KR20240027813A (ko)
CN (1) CN117795952A (ko)
CA (1) CA3226816A1 (ko)
TW (1) TW202325015A (ko)
WO (1) WO2023014576A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699476B2 (en) * 2015-08-06 2020-06-30 Ams Sensors Singapore Pte. Ltd. Generating a merged, fused three-dimensional point cloud based on captured images of a scene
US10623723B2 (en) * 2016-09-29 2020-04-14 Intel Corporation Hybrid stereo rendering for depth extension in dynamic light field displays
FR3080968A1 (fr) * 2018-05-03 2019-11-08 Orange Procede et dispositif de decodage d'une video multi-vue, et procede et dispositif de traitement d'images.
JP7393931B2 (ja) * 2019-12-11 2023-12-07 日本放送協会 画像符号化装置およびそのプログラム、ならびに、画像復号装置およびそのプログラム
CA3168799A1 (en) * 2020-01-21 2021-07-29 Proprio, Inc. Methods and systems for augmenting depth data from a depth sensor, such as with data from a multiview camera system

Also Published As

Publication number Publication date
US20240153200A1 (en) 2024-05-09
CN117795952A (zh) 2024-03-29
CA3226816A1 (en) 2023-02-09
WO2023014576A1 (en) 2023-02-09
TW202325015A (zh) 2023-06-16
EP4381735A1 (en) 2024-06-12

Similar Documents

Publication Publication Date Title
US11748840B2 (en) Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US10438396B2 (en) Method for efficient construction of high resolution display buffers
US9406164B2 (en) Apparatus and method of multi-view rendering
US9639971B2 (en) Image processing apparatus and method for processing transparency information of drawing commands
US10217259B2 (en) Method of and apparatus for graphics processing
JP2024508457A (ja) 3dモデリングを強化するために一時的なテクスチャアプリケーションを提供する方法及びシステム
US20230290046A1 (en) Multiview display system and method employing multiview image convergence plane tilt
KR20210129685A (ko) 광 강도 이미지를 생성하기 위한 장치 및 방법
US20220108420A1 (en) Method and system of efficient image rendering for near-eye light field displays
KR20240027813A (ko) 깊이 맵을 이용한 뷰 합성 시스템 및 방법
US20210350606A9 (en) Method for efficient construction of high resolution display buffers
US10255717B2 (en) Geometry shadow maps with per-fragment atomics
Kalaiah et al. A unified graphics rendering pipeline for autostereoscopic rendering
CN116830570A (zh) 设置基线和会聚距离的光场相机系统和方法
KR20160034742A (ko) 초다시점 영상 렌더링 장치 및 방법
KR20230145421A (ko) 멀티뷰 이미지 생성 시스템 및 방법