KR20210102482A - 비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치 - Google Patents

비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210102482A
KR20210102482A KR1020217025197A KR20217025197A KR20210102482A KR 20210102482 A KR20210102482 A KR 20210102482A KR 1020217025197 A KR1020217025197 A KR 1020217025197A KR 20217025197 A KR20217025197 A KR 20217025197A KR 20210102482 A KR20210102482 A KR 20210102482A
Authority
KR
South Korea
Prior art keywords
frame
point cloud
smoothing
pixels
property
Prior art date
Application number
KR1020217025197A
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 KR20210102482A publication Critical patent/KR20210102482A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/001Image restoration
    • G06T5/002Denoising; Smoothing
    • G06T5/70
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
    • 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/20024Filtering details

Abstract

포인트 클라우드 인코딩을 위한 인코딩 장치 및 방법이 개시된다. 상기 방법은, 3D 포인트 클라우드를 위한, 픽셀들을 포함하는 속성 프레임 및 상기 속성 프레임 내의 상기 픽셀들 중에서 어느 것이 상기 3D 포인트 클라우드의 포인트들을 나타내는지를 식별하는 점유 맵 프레임을 생성하는 과정을 포함한다. 상기 방법은, 또한 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기가 될 때까지, 복수의 순차적인 단계(sequential step)들에 걸쳐 상기 속성 프레임의 해상도(resolution) 및 상기 점유 맵 프레임의 해상도를 감소시키는 과정을 포함한다. 상기 방법은, 또한 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들 중에서 적어도 일부를 수정하기 위해 패딩을 추가하는 동안, 상기 속성 프레임의 해상도 및 상기 점유 맵 프레임의 해상도를 상기 순차적인 단계들에 걸쳐 증가시키는 과정을 포함한다. 상기 방법은, 또한 상기 속성 프레임의 해상도가 점진적으로 증가되는 동안, 싱기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대해 스무딩(smooth)을 수행하는 과정을 포함한다. 상기 방법은, 또한 비트스트림을 생성하기 위하여 상기 속성 프레임 및 상기 점유 맵 프레임을 인코딩하는 과정 및 그 후 상기 비트스트림을 전송하는 과정을 포함한다.

Description

비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치
본 개시는 일반적으로 멀티미디어 데이터를 압축(compressing) 및 압축 해제(decompressing)를 하는 것에 관한 것이다. 보다 구체적으로, 본 개시는 포인트 클라우드를 나타내는 프레임들 내에 패딩을 포함하기 위한 장치 및 방법에 관한 것이다.
스마트폰과 같은 강력한 핸드헬드 장치의 출시로 인해 360도(360°) 비디오가 몰입형 비디오를 경험하는 새로운 방법으로 떠오르고(emerging) 있다. 360° 비디오는 세계(world)의 360° 보기를 캡처하여 소비자를 위한 몰입형(immersive) "실 생활(real life)", "거기에 있는(being there)" 경험을 가능하게 한다. 사용자는 대화식(interactively)으로 관점(viewpoint)을 변경하고 캡처된 장면 또는 원하는 개체의 모든 부분을 동적으로 볼 수 있다. 디스플레이 및 내비게이션 센서들은 사용자가 보고 싶은 360° 비디오 영역을 결정하기 위하여 사용자의 머리 움직임을 실시간으로 추적할 수 있다. 본질적으로 3차원(three-dimensional, 3D)인 멀티미디어 데이터(예를 들어, 포인트 클라우드들)는 몰입형 환경에서 사용될 수 있다.
포인트 클라우드들은 객체의 표면을 나타내는 3D 포인트들의 세트이다. 포인트 클라우드들은 다양한 애플리케이션들(예를 들어, 게임, 3D 지도들, 시각화, 의료 애플리케이션들, 증강 현실, 가상 현실, 자율 주행, 멀티 뷰(multi-view) 재생, 6DoF 몰입형 미디어)에서 일반적이다. 압축되지 않은(uncompressed) 포인트 클라우드들은 일반적으로 전송을 위해 많은 양의 대역폭이 요구된다. 큰 비트 전송률(bitrate) 요구 사항으로 인해, 포인트 클라우드들은 전송 전에 압축(compress)되는 경우가 종종 있다. 3D 개체(예를 들어, 포인트 클라우드)를 압축하려면 특수(specialized) 하드웨어가 요구되는 경우가 많다. 3D 포인트 클라우드를 압축하는 특수 하드웨어를 피하기 위해, 3D 포인트 클라우드는 기존의 2차원(two-dimensional, 2D) 프레임으로 조작(manipulate)할 수 있으며 압축된 프레임들이 특수 하드웨어 없이 다른 장치(another)로 전송될 수 있도록 압축될 수 있다.
본 개시는 비디오 기반(video-based) 포인트 클라우드(point-cloud) 압축 코덱에서 이미지 패딩을 제공한다.
일 실시 예에 따르면, 포인트 클라우드 인코딩을 위한 인코더가 제공될 수 있다. 인코더는 프로세서 및 통신 인터페이스를 포함한다. 상기 프로세서는, 3차원(three-dimensional, 3D) 포인트 클라우드를 위한, 속성 프레임 및 점유 맵 프레임을 생성하도록 구성된다. 상기 속성 프레임은 상기 3D 포인트 클라우드의 속성을 나타내는 픽셀들을 포함하고 상기 점유 맵 프레임은 상기 속성 프레임 내의 상기 픽셀들 중에서 3D 포인트 클라우드의 포인트들을 나타내는 픽셀들을 식별한다. 상기 프로세서는, 또한 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기(예를 들어, 미리 결정된 해상도)가 될 때 까지, 복수의 순차적인 단계(sequential step)들에 걸쳐 상기 속성 프레임의 해상도(resolution) 및 상기 점유 맵 프레임의 해상도를 감소시키도록 구성된다. 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 상기 프로세서는, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들 중에서 적어도 일부를 수정하기 위해 패딩을 추가하는 동안, 상기 속성 프레임의 해상도 및 상기 점유 맵 프레임의 해상도를 상기 순차적인 단계들에 걸쳐 증가시키도록 구성된다. 상기 속성 프레임의 해상도가 점진적으로 증가되는 동안, 상기 프로세서는, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대해 스무딩(smooth)을 수행하도록 구성된다. 상기 프로세서는, 비트스트림을 생성하기 위하여 상기 속성 프레임 및 상기 점유 맵 프레임을 인코딩하도록 추가적으로 구성된다. 상기 프로세서에 작동적으로(operably) 연결된 상기 통신 인터페이스는, 상기 비트스트림을 전송하도록 구성된다.
다른 실시 예에 따르면, 포인트 클라운드 디코딩을 위한 방법이 제공된다. 상기 방법은, 3차원(three-dimensional, 3D) 포인트 클라우드를 위한, 속성 프레임 및 점유 맵 프레임을 생성하는 과정을 포함한다. 상기 속성 프레임은 상기 3D 포인트 클라우드의 속성을 나타내는 픽셀들을 포함하고 상기 점유 맵 프레임은 상기 속성 프레임 내의 상기 픽셀들 중에서 3D 포인트 클라우드의 포인트들을 나타내는 픽셀들을 식별한다. 상기 방법은, 또한 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기(예를 들어, 미리 결정된 해상도)가 될 때 까지, 복수의 순차적인 단계(sequential step)들에 걸쳐 상기 속성 프레임의 해상도(resolution) 및 상기 점유 맵 프레임의 해상도를 감소시키는 과정을 포함한다. 상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 상기 방법은, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들 중에서 적어도 일부를 수정하기 위해 패딩을 추가하는 동안, 상기 속성 프레임의 해상도 및 상기 점유 맵 프레임의 해상도를 상기 순차적인 단계들에 걸쳐 증가시키는 과정을 포함한다. 상기 속성 프레임의 해상도가 점진적으로 증가되는 동안, 상기 방법은, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대해 스무딩(smooth)을 수행하는 과정을 포함한다. 상기 방법은, 비트스트림을 생성하기 위하여 상기 속성 프레임 및 상기 점유 맵 프레임을 인코딩하는 과정을 더 포함한다. 상기 방법은, 상기 비트스트림을 전송하는 과정을 더 포함한다.
다른 기술적 특징들은 하기 도면, 설명들, 및 청구범위로부터 당업자에게 용이하고 명백할 수 있다.
본 개시는 비디오 기반(video-based) 포인트 클라우드(point-cloud) 압축 코덱에서 이미지 패딩을 제공한다.
도 1은 본 개시의 일 실시 예에 따른 예시적인 통신 시스템을 도시한다.
도 2 및 도 3은 본 개시의 일 실시 예에 따른 예시적인 전자 장치를 도시한다.
도 4a는 본 개시의 일 실시 예에 따른 예시적인 3D 포인트 클라우드를 도시한다.
도 4b 및 4c는 본 개시의 일 실시 예에 따른 3D 포인트 클라우드를 나타내는 2D 프레임들을 도시한다.
도 4d는 본 개시의 일 실시 예에 따른 패딩을 포함하고 3D 포인트 클라우드를 나타내는 예시적인 2D 프레임을 도시한다.
도 5a는 본 개시의 일 실시 예에 따른 예시적인 환경 아키텍처(environment-architecture)의 블록도를 도시한다.
도 5b는 본 개시의 일 실시 예에 따른 인코더의 예시적인 블록도를 도시한다.
도 5c는 본 개시의 일 실시 예에 따른 디코더의 예시적인 블록도를 도시한다.
도 6a 및 6b는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링 및 업 샘플링함으로써 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하기 위한 과정을 묘사하는 예시적인 다이어그램들 600 및 610을 도시한다.
도 6c는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링 및 업 샘플링함으로써 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하기 위한 예시적인 방법을 도시한다.
도 6d 및 6e는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링하기 위한 예시적인 흐름도 및 예시적인 프로세스를 도시한다.
도 6f 및 6g는 본 개시의 일 실시 예에 따른 2D 프레임을 업 샘플링하여 2D 프레임에 패딩을 추가하기 위한 예시적인 흐름도 및 예시적인 프로세스를 도시한다.
도 7a, 7b, 7c, 7e, 및 7f는 본 개시의 일 실시 예에 따른 서로 다른 세부적인 레벨(level of detail)들에서 2D 프레임을 스무딩하기 위한 예시적인 필터들을 도시한다.
도 8은 본 개시의 일 실시 예에 따른 포인트 클라우드를 인코딩하기 위한 예시적인 방법을 도시한다.
아래의 구체적인 내용을 설명하기 전에, 본 특허 문서 전체에서 사용되는 특정 단어 및 어구들의 정의를 기재하는 것이 유리할 수 있다. 용어 "결합하다(couple)" 및 그 파생어들은 이들 요소가 서로 물리적으로 접촉하고 있든지 그렇지 않든지, 둘 또는 그 이상의 요소들 사이의 직접 또는 간접적인 통신을 의미한다. 용어 "송신하다(transmit)", "수신하다(receive)" 및 "소통하다(communicate)", 뿐만 아니라 이들의 파생어들은 직접 및 간접 통신을 모두 포함한다. 용어 "포함하다(include)", "구성하다(comprise)"뿐만 아니라 이들의 파생어들은 제한 없이 포함함을 의미한다. 용어 "또는"은 포괄적 의미 및/또는 이다. 구문 "~와 관련된(associated with)", 뿐만 아니라 이의 파생어들은 포함하다(include), ~내에 포함되다(be included within), ~와 내적 연결하다(interconnect with), 포함하다(contain), ~내에 포함되다(be contained within), ~에 또는 ~와 연결하다(connect to or with), ~에 또는 ~와 결합하다(couple to or with), ~와 통신할 수 있는(be communicable with), ~와 협력하다(cooperate with), 끼우다(interleave), 나란히 놓다(juxtapose), ~에 인접하다(be proximate to), ~에 또는 ~와 인접되다(be bound to or with), 가지다(have), ~의 속성을 갖다(have a property of), ~에 또는 ~와 관계가 있다(have a relationship to or with) 등을 의미한다. 용어 "제어기(controller)"는 적어도 하나의 동작을 제어하는 임의의 장치, 시스템 또는 이들의 부분을 의미한다. 이러한 제어기는 하드웨어, 및 하드웨어와 소프트웨어 및/또는 펌웨어(firmware)의 조합으로 구현될 수 있다. 임의의 특정 제어기와 관련된 기능은 국부적이든 원격적이든 관계없이 집중화되거나 분산될 수 있다. "~중 적어도 하나(at least one of)"라는 구문은, 열거되는 항목들이 사용되는 경우, 사용될 수 있는 열거된 항목 중 하나 또는 그 이상의 서로 다른 조합, 및 요구되는 열거된 항목 중 하나의 항목을 의미한다. 예를 들어, "A, B 및 C 중 적어도 하나"는 다음의 조합, A, B, C, A와 B, A와 C, B와 C, 및 A와 B와 C 중 어느 하나를 포함한다.
또한, 후술되는 다양한 기능들은 하나 이상의 컴퓨터 프로그램에 의해 구현되거나 지원될 수 있고, 각각은 컴퓨터 판독가능 프로그램 코드로부터 형성되거나 및 컴퓨터 판독가능 매체로 실시된다. 용어 "애플리케이션(application)"과 "프로그램(program)"은 하나 이상의 컴퓨터 프로그램, 소프트웨어의 구성, 지시사항들의 세트(sets), 절차, 기능, 객체, 클래스, 사례들, 관련된 자료, 또는 적절한 컴퓨터 판독가능 프로그램 코드를 구현하는 것에 적합한 이들의 부분을 지칭한다. 어구 "컴퓨터 판독가능 프로그램 코드(computer readable program code)"는 소스 코드(source code), 오브젝트 코드(object code), 및 실행 가능한 코드를 포함하는 컴퓨터 코드의 임의의 유형을 포함한다. 어구 "컴퓨터 판독가능 매체(computer readable medium)"는 판독 전용 메모리(read only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 하드 디스크 드라이브, 컴팩트 디스크(compact disc, CD), 디지털 비디오 디스크(digital video disc, DVD), 또는 임의의 다른 메모리의 유형과 같은 컴퓨터에 의해 액세스 될 수 있는 임의의 유형의 매체를 포함한다. "비 일시적" 컴퓨터 판독가능 매체(non-transitory computer readable medium)는 유선, 무선, 광학 또는 일시적으로 전기적 또는 다른 신호를 송신하는 다른 통신 링크를 제외한다. 비 일시적 컴퓨터 판독가능 매체는 데이터가 영구적으로 저장될 수 있는 미디어와 재기록 가능한 광 디스크 또는 지울 수 있는 메모리 장치와 같이, 데이터가 저장될 수도 있고 나중에는 덮어쓰기도 할 수 있는 미디어를 포함한다.
다른 특정 단어 및 구문들의 정의가 본 특허 문서 전반에 걸쳐서 제공된다. 당업자는 대부분의 경우에, 이러한 정의들이 정의된 단어들 및 구문들로 미래뿐 아니라 이전의 사용들에도 적용될 수 있음을 이해하여야 한다.
후술되는 도 1 내지 8, 및 본 특허 문서에서 본 개시의 원리를 설명하기 위해 사용되는 특정(certain) 실시 예들은 단지 예시를 위한 것일 뿐, 어떠한 방식으로든 본 개시의 범위를 한정하는 의미로 해석되어서는 안 된다. 당업자들은 본 개시의 원리들이 임의의 적절하게 배치된 시스템 또는 장치에서 구현될 수 있음을 이해할 것이다.
증강 현실(augmented reality, AR)은 실제 세계(world) 환경에 있는 개체들이 가상 개체들, 가상 정보, 또는 둘 다로 증강되는 실제 세계 환경의 대화형(interactive) 경험이다. 가상 현실(virtual reality, VR)은 가상 장면의 렌더링(render)된 버전이고, 가상 장면은 전체 장면이 컴퓨터에서 생성되는 곳이다. 특정 실시 예들에서, AR 및 VR은 시각 및 청각 경험 모두를 포함한다. 렌더링은 시각적 자극을 모방하도록 설계되며, 관찰자 또는 사용자에게 가능한 한 자연스럽게 현실 세계의 음성적 감각 자극이 가능한 경우, 개인은 애플리케이션 또는 AR 또는 VR 장면에 의해 정의된 한계 내에서 이동한다. 예를 들어, VR은 머리 움직임과 상호 작용하는 몰입형 세계(immersive world)에 사용자를 배치한다. 비디오 레벨에서, VR은 렌더링된 비디오의 시야각을 머리 움직임과 동기화하는 것과 함께, 가능한 한 많은 관측 시야(field of view, FOV)를 커버하는 비디오 경험을 제공함으로써 달성된다.
다양한(many different) 유형들의 장치들이 AR 또는 VR과 관련된 몰입형 경험을 제공할 수 있다. 하나의 예시적인 장치는 머리에 착용하는 디스플레이(head-mounted display, HMD)이다. HMD는 사용자가 VR 장면을 보고 사용자의 머리 움직임에 따라 표시되는 콘텐츠를 조정할 수 있도록 하는 장치이다. HMD는 사용자에게 AR 및 VR 경험을 제공하는 여러 유형들의 장치 중에서 하나를 나타낸다. 일반적으로, HMD는 장치에 통합되고 외부 컴퓨터들(테더링 됨) 또는 HMD에 삽입된 스마트 폰과 같은 장치(테더링 되지 않음)로 실행되는 전용 화면에 의존한다. 제1 접근 방식은 경량(lightweight) 스크린들을 활용하고 높은 컴퓨팅 용량으로부터 이익을 얻는다. 반면, 스마트폰 기반 시스템들은 높은 이동성을 활용하고 생산 비용을 감소시킬 수 있다. 두 가지 예들 모두에서, 생성된 비디오 경험은 동일하다. 본 명세서에서 사용되는, "사용자(user)"는 인간(human) 또는 전자 장치를 이용하는 다른 장치(예를 들어, 인공 지능 전자 장치)를 나타낼 수 있음에 유의하여야 한다.
포인트 클라우드는 3차원 내 객체의 가상 표현이다. 예를 들어, 포인트 클라우드는 3D 공간 내의 포인트들의 모음이며, 포인트 각각은 3D 공간 내의 특정 위치에 위치되며 하나 이상의 속성(예를 들어, 색)을 포함한다. 포인트 클라우드는 VR 또는 AR 환경 내의 가상 객체와 유사할 수 있다. 포인트 메쉬는 VR 또는 AR 환경 내에서 객체의 가상 표현의 다른(another) 유형이다. 포인트 클라우드 또는 포인트 메쉬는 객체, 복수의(multiple) 객체들, 가상 장면(복수의 객체들을 포함) 등일 수 있다. 포인트 클라우드는 일반적으로 게임, 3D 매핑, 시각화, 의학, AR, VR, 자율 주행, 멀티 뷰 재생, 6 자유도(degrees of freedom) 몰입형 미디어를 비롯한 다양한 애플리케이션에서 사용된다.
포인트 클라우드들은 체적(volumetric) 시각적 데이터를 나타낸다. 포인트 클라우드는 3D 공간에 위치한 복수의 3D 포인트들로 구성된다. 3D 포인트 클라우드의 포인트 각각은 속성(예를 들어, 3-튜플(3-tuple) (X,Y,Z) 좌표(coordinate) 값들로 표현되는 기하 구조 위치)을 포함한다. 포인트 각각이 세 개의 좌표들로 식별되면, 3D 환경 또는 공간 내의 정확한 위치가 식별된다. 3D 환경 또는 포인트 각각의 공간에서의 위치는 원점(origin), 포인트 클라우드의 다른 클라우드들 또는 이들의 조합과 관계가 있을 수 있다. 원점은 X, Y, 및 Z 축이 교차(intersect)하는 위치이다. 특정 실시 예들에서, 포인트들은 객체의 외부 표면에 위치된다. 특정 실시 예들에서, 포인트들은 물체의 내부 구조 및 외부 표면들 전체에 걸쳐 위치된다. 기하 구조(geometric) 구성 요소(component) 외에도 포인트 클라우드의 포인트 각각은 하나 이상의 속성(예를 들어, 색상, 텍스처(texture), 반사율, 강도, 표면 법선(surface normal))을 포함할 수도 있다. 일부 실시 예들에서, 3D 포인트 클라우드의 단일(single) 포인트는 복수의 속성들을 가질 수 있다. 예를 들어, 단일 포인트는 포인트의 다양한 측면들을 지정(specify)하는 하나 이상의 속성(예를 들어, 포인트의 색상이나 텍스처, 포인트의 반사도, 포인트의 강도, 포인트의의 표면 법선 등) 뿐만 아니라, 기하 구조 위치(예를 들어, 3D 공간 내의 포인트의 위치)를 포함할 수 있다. 일부 어플리케이션들에서는, 포인트 클라우드들은 포인트 각각에 복수의 뷰 종속(view-dependent) 색상 정보(R, G, B 삼중선(triplet)들)가 포함된 라이트 필드 데이터를 근사화하는 데 사용될 수 있다.
단일 포인트 클라우드는 수십억 개(billions)의 포인트들을 포함할 수 있으며, 포인트 각각은 기하 구조 위치 및 하나 이상의 속성과 관련된다. 기하 구조 위치 및 포인트와 관련된 각각의 추가적인 속성은 특정 비트 수를 점유(occupy)한다. 예를 들어, 단일 포인트의 기하 구조 위치 각각이 X 값, Y 값, 및 Z 값으로 정의되면, 좌표 (X, Y, 및 Z) 각각은 10비트를 사용(consume)하여, 총 30비트가 된다. 유사하게, 단일 포인트의 색상을 지정하는 속성은 24비트를 사용할 수 있다. 예를 들어, 단일 포인트의 색상 구성 요소가 빨강(red) 값, 초록(green) 값, 및 파랑(blue) 값을 기반으로 정의되면, 색상 구성 요소(빨강, 초록, 파랑) 각각은 8비트를 사용하여, 총 24비트가 된다. 결과적으로 좌표당 10비트 기하 구조 속성 데이터 및 색상 값당 8비트 색상 속성 데이터가 있는 단일 포인트는 54비트를 점유한다. 추가적인 속성 각각은 단일 포인트에 필요한 비트를 증가시킨다. 프레임에 100만 포인트들이 포함된 경우, 프레임당 비트 수는 5400만 비트(포인트당 54비트 곱하기 프레임당 100만 포인트)이다. 프레임 레이트(frame rate)가 초당 30프레임이고 압축(compression)을 거치지 않는 경우, 제2 장치가 포인트 클라우드를 표시(display)하기 위해 한 전자 장치에서 다른 전자 장치로, 초당 1.62 기가바이트(프레임 당 5400만 비트 곱하기 초당 30 프레임)가 전송된다. 따라서, 하나(one)의 전자 장치로부터 다른(another) 전자 장치로 압축되지 않은 포인트 클라우드를 전송하는 것은 단일 포인트 클라우드와 관련된 데이터의 크기와 복잡성으로 인해 상당한 대역폭을 사용한다. 결과적으로 포인트 클라우드는 전송 전에 압축된다.
본 개시의 실시 예들은 포인트 클라우드를 전송하는 데 필요한 대역폭으로 인해 하나(one)의 장치(예를 들어, 소스 장치)에서 다른(another) 장치(예를 들어, 디스플레이 장치)로의 포인트 클라우드 전송을 촉진(expedite)하고 개선(improve)하려면 포인트 클라우드를 압축해야 한다는 것을 고려(take into consideration)한다. 특정(certain) 전용(dedicated) 하드웨어 구성 요소들은 실시간 요구 사항을 충족하거나 3D 포인트 클라우드의 전송 및 렌더링의 지연(delay) 또는 지연(lag)을 줄이기 위하여 사용될 수 있다; 그러나 그러한 하드웨어 구성 요소들은 종종 고가이다. 또한, 많은 비디오 코덱들은 3D 비디오 콘텐츠(예를 들어, 포인트 클라우드)를 인코딩 및 디코딩할 수 없다. 기존 2D 비디오 코덱들을 활용하여 포인트 클라우드를 압축 및 압축 해제(decompressing)하는 것은, 신규(new) 또는 특수(specialized) 하드웨어 없이 포인트 클라우드의 인코딩 및 디코딩을 널리 사용할 수 있도록 할 수 있다. 본 개시의 실시 예들에 따르면, 포인트 클라우드가 3D 상태에서 2D 상태로 변환될 때, 기존 비디오 코덱들이 포인트 클라우드를 압축 및 재구성(reconstruct)하기 위하여 사용될 수 있다. 특정 실시 예들에서, 포인트 클라우드의 변환은 포인트 클라우드를 나타내는 패치들을 생성함으로써 3D 포인트 클라우드의 포인트들의 클러스터들을 2D 프레임으로 투영(project)하는 것을 포함한다. 이후 비디오 코덱(예를 들어, HEVC, AVC, VP9, VP8, VVC 등)을 사용하여 2D 비디오와 유사한 3D 포인트 클라우드를 나타내는 2D 프레임을 압축할 수 있다.
포인트 클라우드를 변환하는 것은, 복수의 패치를 생성하기 위한 포인트 클라우드의 투영 및 패치를 하나 이상의 2D 프레임에 패킹(packing)하여, 프레임들이 압축될 수 있고, 그 후 디스플레이 장치로 전송될 수 있다. 프레임들은 포인트 클라우드의 다른 레이어들에서의 투영들을 나타낼 수 있다. 프레임들은 또한 포인트 클라우드의 다른 속성(예를 들어, 하나(one)의 프레임은 포인트들의 기하 구조 위치들을 나타내는 값들을 포함하고, 다른(another) 프레임은 포인트들 각각과 관련된 색상 정보를 나타내는 값들을 포함한다.)을 나타낼 수 있다. 디코더는 2D 프레임들 내의 패치들을 3D 포인트 클라우드로 재구성하여, 포인트 클라우드는 렌더링될 수 있고, 표시될 수 있고, 그 다음 사용자에 의해 보여질 수 있도록 한다. 포인트 클라우드가 복수의 2D 프레임들에 맞도록 분해(deconstruct)되고 압축되면, 프레임들이 원래(original) 포인트 클라우드를 전송하는 데 사용되는 것보다 적은 대역폭을 사용하여 전송될 수 있다. 아래에서 더 상세히 설명되는, 도 4a 내지 도 4c는 포인트 클라우드 및 2개의 속성들의 패치들을 생성함으로써 2D 프레임들 상에 투영되는 3D 포인트 클라우드를 도시한다.
본 개시의 실시 예들은 포인트 클라우드를, 전송될 수 있고 그 후 재구성될 수 있는 2차원 상태로 변환하는 시스템 및 방법을 제공한다. 특정 실시 예들에서, 포인트 클라우드는 복수의 패치들로 분해되고, 패치들을 포함하는 복수의 프레임들이 생성된다. 특정 실시 예들에서, 프레임은 동일한 속성들의 패치들을 포함한다. 하나의 프레임 내에서 하나의 패치로 표현되는 3D 포인트 클라우드의 포인트들은 제2 프레임 내에서 다른 패치로 표현되는 동일한 포인트들에 대응한다. 다른 실시 예들에서, 하나의 프레임 상의 패치들은 포인트 클라우드의 포인트와 관련된 복수의 속성들을 나타낸다(예를 들어, 3D 공간 및 색상 내에서 포인트들의 기하 구조 위치).
인코더는 3D 포인트 클라우드를 복수의 2D 프레임들에 투영하고 비트스트림을 생성한다. 인코더 또는 다른(another) 장치는 비트스트림을 서로 다른(different) 장치(들)로 전송한다. 다양한 비디오 압축 코덱들, 이미지 압축 코덱들, 또는 둘 다를 활용하여 프레임들이 압축될 수 있다. 디코더는 비트스트림을 수신하고, 비트스트림을 프레임들로 압축 해제하고, 프레임들 내의 정보에 기반하여 포인트 클라우드를 재구성한다. 포인트 클라우드가 재구성된 후, 사용자가 관찰할 수 있도록 3D 포인트 클라우드가 렌더링되고 표시될 수 있다. 특정 실시 예들에서 서로 다른 속성들(포인트들의 기하 구조 위치들을 포함하는)을 나타내는 프레임들은 별도로(separately) 인코딩 및 디코딩된다. 다른 실시 예들에서, 서로 다른 속성들(포인트의 기하 구조 위치를 포함하는) 나타내는 프레임들이 함께(together) 인코딩 및 디코딩된다.
투영하는 동안, 인코더는 포인트들을 클러스터링하여 포인트 클라우드를 패치들의 세트로 분해(decompose)한다. 이러한 패치들의 기하 구조(geometry) 및 속성 정보는, 기하 구조 비디오 프레임들 및 속성 비디오 프레임들 각각에 패킹된다. 기하 구조 비디오 프레임은 기하 구조 정보를 인코딩하는 데 사용되며, 대응하는 속성 비디오 프레임들은 포인트 클라우드의 다양한 속성들(예를 들어, 색상, 텍스처, 반사율 등)을 인코딩하는 데 사용된다. 기하 구조 비디오 프레임 내의 패치 내의 픽셀 각각은 3D 공간의 하나의 포인트에 대응된다. 3D 포인트의 두 개의 가로(transverse) 좌표들(투영 평면에 대한)은, 기하 구조 비디오 프레임(u, v) 내의 열 및 행 인덱스에, 비디오 프레임 내에서 전체 패치의 위치를 결정하는 가로 오프셋(transverse-offset)을 더한 것에 대응한다. 3D 포인트의 깊이(depth)는 비디오 프레임의 픽셀 값에, 패치의 깊이 오프셋(depth-offset)을 더한 값으로 인코딩된다. 3D 포인트 클라우드의 깊이는 3D 포인트 클라우드의 투영이 XY, YZ, 또는 XZ 좌표에서 수행되는지 여부에 달렸다.
아래에서 매우 상세하게(great detail) 논의되는 바와 같이, 프레임이 생성될 때 점유 맵도 생성된다. 일반적으로, 점유 맵은, 프레임 내의 픽셀 각각에 대해, 픽셀이 유효한(valid) 픽셀인지 또는 유효하지 않은(invalid) 픽셀인지를 나타낸다. 예를 들어, 좌표 (u, v)에 있는 점유 맵의 픽셀이 유효한 경우, 좌표 (u, v)에 있는 기하 구조 프레임 또는 속성 프레임 내의 대응되는 픽셀이 유효하다. 좌표 (u, v)에서 점유 맵의 픽셀이 유효하지 않은 경우, 디코더는 좌표 (u, v)에서 기하 구조 프레임 또는 속성 프레임 내의 대응되는 픽셀을 건너뛴다. 특정 실시 예들에서, 위치 (u, v)에서의 점유 맵은 0 또는 1일 수 있다. 점유 맵의 위치(position) (u, v)에 있는 픽셀의 값이 1일 때, 속성 프레임 및 기하 구조 프레임의 (u, v)에 있는 픽셀이 유효함을 나타낸다. 이에 반해, 점유도의 위치 (u, v)에 있는 픽셀 값이 0일 때, 속성 프레임 및 기하 구조 프레임의 위치 (u, v)에 있는 픽셀이 유효하지 않음을 나타낸다.
본 개시의 실시 예들은 비트 전송률(bitrate)을 감소시킴으로써 포인트 클라우드의 압축을 개선하기 위한 시스템 및 방법을 제공한다. 비트 전송률을 줄이는 것은 포인트 클라우드 압축 코덱의 전반적인(overall) 성능이 개선될 수 있다. 본 개시의 실시 예들에 따르면, 3D 포인트 클라우드를 나타내는 프레임 내에 패딩을 포함하기 위한 아키텍처 및 방법이 제공된다. 3D 포인트 클라우드의 투영된 패치들 사이의 영역(area)들은 투영된 비디오 프레임의 날카로운(sharp) 모서리들의 수를 줄이기 위하여 패딩 메커니즘을 사용하여 채워진다. 투영된 비디오 프레임의 날카로운 모서리들의 수를 줄이는 것은 압축 비트 전송률을 줄인다.
도 1은 본 개시의 일 실시 예에 따른 예시적인 통신 시스템 100을 도시한다. 도 1에 도시된 통신 시스템 100의 실시예는 단지 예시를 위한 것이다. 본 개시의 범위에서 벗어나지 않고 통신 시스템 100의 다른 실시예들이 사용될 수 있다.
통신 시스템 100은 통신 시스템 100에 포함된 다양한 구성 요소들 간의 통신을 가능하게 하는 네트워크 102를 포함한다. 예를 들어, 네트워크 102는 인터넷 프로토콜(internet protocol, IP) 패킷, 프레임 중계 프레임들, 비동기식 송신 모드(asynchronous transfer mode, ATM) 셀, 또는 다른 네트워크 주소들(addresses) 간 정보를 통신할 수 있다. 네트워크 102는 하나 이상의 근거리 네트워크(local area networks, LANs), 대도시 네트워크(metropolitan area networks, MANs), 광역 네트워크(wide area networks, WANs), 인터넷과 같은 글로벌 네트워크의 전부 또는 일부, 또는 한 곳 이상의 위치에 있는 모든 다른 통신 시스템 또는 시스템들을 포함할 수 있다.
예를 들어, 네트워크 102는 서버 104와 다양한 클라이언트 장치들 106 내지 116 간의 통신을 용이하게 한다. 예를 들어, 클라이언트 장치들 106 내지 116은 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 퍼스널 컴퓨터, 착용형(wearable) 장치, 또는 머리에 착용하는 디스플레이(head-mounted display, HMD)일 수 있다. 서버 104는 하나 이상의 서버를 나타낼 수 있다. 서버 각각인 104는 하나 이상의 클라이언트 장치를 위해 컴퓨팅(computing) 서비스를 제공하는 임의의 적절한 컴퓨팅 또는 처리 장치들을 포함할 수 있다(예를 들어, 클라이언트 장치들 106 내지 116). 예를 들어, 서버 각각인 104는 하나 이상의 처리 장치, 지시사항들 및 데이터를 저장하는 하나 이상의 메모리, 및 네트워크 102를 통해 통신을 용이하게 하도록 구성된 하나 이상의 네트워크 인터페이스를 포함할 수 있다. 보다 상세히 후술되는 바와 같이, 서버 104는 클라이언트 장치들 106 내지 116과 같은 하나 이상의 디스플레이 장치에게 포인트 클라우드를 송신할 수 있다. 특정 실시 예들에서, 서버 각각인 104는 인코더를 포함할 수 있다.
클라이언트 장치 각각인 106 내지 116은 네트워크 102를 통해 적어도 하나의 서버(예를 들어, 서버 104) 또는 다른 컴퓨팅 장치(들)과 상호 작용하는 임의의 적절한 컴퓨팅 또는 처리 장치를 나타낸다. 클라이언트 장치들 106 내지 116은 데스크톱 컴퓨터 106, 휴대 전화 또는 휴대 장치 108(예를 들어, 스마트폰), 개인 휴대 정보 단말기(personal digital assistant, PDA) 110, 랩톱 컴퓨터 112, 태블릿 컴퓨터 114 및 HMD 116을 포함한다. 스마트폰은 음성, 단문 메시지 서비스(short message service, SMS) 및 인터넷 데이터 통신을 위한 모바일 운영 체제 및 통합된 모바일 광대역(broadband) 셀룰러 네트워크 연결을 갖는 핸드헬드 장치인 모바일 장치 108의 클래스를 나타낸다. HMD 116은 하나 이상의 3D 포인트 클라우드를 포함하는 360° 장면을 표시할 수 있다. 그러나, 임의의 다른 장치 혹은 추가적인 클라이언트 장치들이 통신 시스템 100에서 사용될 수 있다. 특정 실시 예들에서, 클라이언트 장치 각각인 106 내지 116은 인코더, 디코더, 또는 둘 다를 포함할 수 있다. 예를 들어, 모바일 장치 108은 비디오를 녹화한 다음 비디오를 인코딩하여 비디오가 클라이언트 장치들 106 내지 116 중에서 하나로 전송되도록 할 수 있다. 다른 예를 들어, 랩톱 컴퓨터 112는 가상 3D 포인트 클라우드를 생성하는 데 사용될 수 있으며, 이는 그 다음 인코딩되어 클라이언트 장치들 106 내지 116 중에서 하나로 전송된다.
예를 들어, 일부 클라이언트 장치들 108 내지 116은 네트워크 102와 간접적으로 통신하도록 구성될 수 있다. 예를 들어, 휴대 장치 108 및 PDA 110은 셀룰러(cellular) 기지국들 또는 eNodeB(eNB)들과 같은 하나 이상의 기지국 118을 통해 통신하도록 구성될 수 있다. 또한, 랩톱 컴퓨터 112, 태블릿 컴퓨터 114, 및 HMD 116은 하나 이상의 무선 액세스 포인트 120, 예를 들어 IEEE 802.11 무선 액세스 포인트를 통해 통신한다. 이것은 단지 설명을 위한 것이며, 각각의 클라이언트 장치들 106 내지 116이 네트워크 102와 직접 통신하거나 임의의 적절한 중간 장치(들) 또는 네트워크(들)를 통해 네트워크 102와 간접적으로 통신할 수 있다는 것을 의미한다. 특정 실시 에들에서, 서버 104 또는 임의의 클라이언트 장치들 106 내지 116은 포인트 클라우드를 압축하고, 포인트 클라우드를 나타내는 비트스트림을 생성하고, 다른 클라이언트 장치(예를 들어, 임의의 클라이언트 장치들 106 내지 116)로 비트스트림을 전송하는 데 사용될 수 있다.
특정 실시 예들에서, 임의의 다른 클라이언트 장치들 106 내지 116은, 예를 들어, 서버 104와 같은 다른 장치에게 정보를 안전하고(securely) 효율적으로(efficiently) 송신할 수 있다. 또한, 클라이언트 장치들 106 내지 116 중에서 임의의 클라이언트 장치는 자신과 서버 104 사이의 정보 송신을 트리거할 수 있다. 임의의 다른 클라이언트 장치들 106 내지 116은 브래킷(bracket)들을 통해 헤드셋에 부착되는 경우에 VR 디스플레이로서 기능할 수 있으며, HMD 116과 유사하게 기능할 수 있다. 예를 들어, 휴대 장치 108은 브래킷 시스템에 부착되고 사용자의 눈 위에 착용될 때 HMD 116과 유사하게 기능할 수 있다. 휴대 장치 108 (또는 임의의 다른 클라이언트 장치 106 내지 116)은 자신과 서버 104 간의 정보 송신을 트리거(trigger) 할 수 있다.
특정 실시 예들에서, 임의의 다른 클라이언트 장치 106 내지 116 또는 서버 104는 3D 포인트 클라우드를 생성할 수 있고, 3D 포인트 클라우드 압축할 수 있고, 3D 포인트 클라우드를 전송할 수 있고, 3D 포인트 클라우드 수신할 수 있고, 3D 포인트 클라우드를 렌더링할 수 있고, 또는 이들의 조합(combination thereof)을 할 수 있다. 예를 들어, 서버 104는 3D 포인트 클라우드를 수신하고, 3D 포인트 클라우드를 2D 프레임들에 맞게 분해하고, 저장 장치(예를 들어, 정보 저장소(information repository)) 또는 클라이언트 장치 106 내지 116 중 하나 이상으로 전송될 수 있는 비트스트림을 생성하기 위해 프레임들을 압축할 수 있다. 다른 예를 들어, 클라이언트 장치들 106 내지 116 중에서 하나는, 저장 장치(예를 들어, 정보 저장소), 클라이언트 장치들 106 내지 116 중에서 다른 하나, 또는 서버 104로 전송될 수 있는 비트스트림을 생성하기 위해, 3D 포인트 클라우드를 수신할 수 있고, 3D 포인트 클라우드를 2D 프레임에 맞게 분해할 수 있고, 프레임들을 압축할 수 있다.
도 1은 통신 시스템 100의 일 예를 도시하고 있으나, 다양한 변경들이 도 1에서 이루어질 수 있다. 예를 들어, 통신 시스템 100은 임의의 적절한 배치로 임의의 수의 구성 요소 각각을 포함할 수 있다. 일반적으로, 컴퓨팅 및 통신 시스템은 다양하게 구성될 수 있고, 도 1은 임의의 특정 구성으로 본 개시의 범위를 제한하지 않는다. 도 1은 본 특허 문헌에 개시된 다양한 특징들이 이용될 수 있는 하나의 운영 환경을 도시하고 있지만, 이러한 특징들은 임의의 다른 적절한 시스템에서 이용될 수 있다.
도 2 및 도 3은 본 개시의 일 실시 예에 따른 예시적인 전자 장치를 도시한다. 특히, 도 2는 예시적인 서버 200을 도시하고, 서버 200은 도 1의 서버 104를 나타낼 수 있다. 서버 200은 원활한 리소스들, 클라우드 기반 서버 등의 단일 풀 역할을 하는 하나 이상의 인코더, 디코더, 로컬 서버, 원격 서버, 클러스터형 컴퓨터 및 구성요소를 나타낼(represent) 수 있다. 서버 200은 도 1의 클라이언트 장치들 106 내지 116 중 하나 이상 또는 다른 서버에 의해 액세스될 수 있다.
서버 200은 하나 이상의 로컬 서버, 하나 이상의 압축 서버, 또는 하나 이상의 인코딩 서버, 예를 들어 인코더를 나타낼 수 있다. 특정 실시 예들에서, 인코더는 디코딩을 수행할 수 있다. 도 2에 도시된 바와 같이, 서버 200은 버스 시스템(bus system) 205를 포함하고, 이는 적어도 하나의 프로세싱 장치(예를 들어, 프로세서 210), 적어도 하나의 저장 장치(들) 215, 적어도 하나의 통신 인터페이스 220, 및 적어도 하나의 입/출력(input/output, I/O)부 225 간의 통신을 지원하도록 구성된다.
프로세서 210은 메모리 230에 저장될 수 있는 명령어들을 실행한다. 프로세서 210은 임의의 적절한 수(들) 및 유형(들)의 프로세서들 또는 임의의 적절한 배열의 다른 장치들을 포함할 수 있다. 프로세서 210의 예시적인 유형들은 마이크로프로세서(microprocessor)들, 마이크로컨트롤러(microcontroller)들, 디지털 신호 프로세서(digital signal processor)들, 필드 프로그램 가능한 게이트 어레이(field programmable gate array)들, 주문형 집적 회로(application specific integrated circuit)들, 및 이산 회로(discrete circuitry)를 포함한다. 특정 실시 예들에서, 프로세서 210은 저장 장치들 215 내에 저장된 3D 포인트 클라우드를 인코딩할 수 있다. 특정 실시 예들에서, 3D 포인트 클라우드를 인코딩하는 것은 또한, 포인트 클라우드가 디코더에서 재구성될 때, 재구성된 3D 포인트 클라우드가 원래 3D 포인트 클라우드와 일치하는 것을 보장하기 위하여, 3D 포인트 클라우드를 디코딩한다.
메모리 230 및 영구 저장 장치 235는 정보(예를 들어, 데이터, 프로그램 코드, 또는 임시 또는 영구 기반의 다른 적절한 정보)를 저장하고 검색을 용이하게 할 수 있는 임의의 구조(들)를 나타내는 저장 장치들 215의 예들이다. 메모리 230은 랜덤 액세스 메모리 또는 임의의 다른 적절한 휘발성(volatile) 또는 비 휘발성(non-volatile) 저장 장치(들)를 나타낼 수 있다. 예를 들어, 메모리 230에 저장된 명령어들은, 비트스트림을 생성하기 위해 특정 순서로 2D 프레임들을 인코딩하기 위한 명령들 뿐만 아니라, 포인트 클라우드를 패치들로 분해하기 위한 명령어들, 2D 프레임들에 패치들을 패킹하기 위한 명령어들, 2D 프레임들을 압축하기 위한 명령어들을 포함할 수 있다. 메모리 230에 저장된 명령들은 또한, VR 헤드셋(예를 들어, 도 1의 HMD 116)을 통해 볼 때, 360° 장면을 렌더링하기 위한 명령들을 포함할 수 있다. 영구 저장 장치 235는 데이터의 장기 저장(longer-term)을 지원하는 하나 이상의 구성 요소 또는 장치를 포함할 수 있다(예를 들어, 읽기 전용 메모리, 하드 드라이브, 플래시 메모리, 또는 광 디스크).
통신 인터페이스 220은 다른 시스템 또는 장치들과의 통신을 지원한다. 예를 들어, 통신 인터페이스 220은 도 1의 네트워크 102를 통한 통신을 용이하게 하는 네트워크 인터페이스 카드 또는 무선 트랜시버를 포함할 수 있다. 통신 인터페이스 220은 임의의 적절한 물리적 또는 무선 통신 링크(들)를 통한 통신을 지원할 수 있다. 예를 들어, 통신 인터페이스 220은 3D 포인트 클라우드를 포함하는 비트스트림을 다른 장치(예를 들어, 클라이언트 장치들 106 내지 116 중에서 하나)로 전송할 수 있다.
입/출력부 225는 데이터의 입력 및 출력을 허용한다. 예를 들어, 입/출력부 225는 키보드, 마우스, 키패드, 터치스크린, 또는 다른 적절한 입력 장치를 통한 사용자 입력을 위한 연결을 제공할 수 있다. 입/출력부 225는 또한 출력을 디스플레이, 프린터, 또는 다른 적절한 출력 장치로 보낼 수 있다. 그러나, 입/출력부 225는 네트워크 연결을 통해 생략될 수 있다는 점에 유의(note)해야 한다(예를 들어, 서버 200과의 입/출력 상호작용이 발생하는 경우).
특정 실시 예들에서, 서버 200은 통신 인터페이스 220을 통해 3D 포인트 클라우드를 수신하거나 저장 장치들 215 중에서 하나에 저장된 3D 포인트 클라우드에 액세스할 수 있다. 서버 200은 또한 3D 포인트 클라우드를 나타내는 비트스트림을 생성할 수 있다. 미디어 콘텐츠(예를 들어, 포인트 클라우드)를 인코딩할 때, 서버 200은 포인트 클라우드를 복수의 패치들로 투영할 수 있다. 예를 들어, 포인트 클라우드의 포인트 클러스터들은 패치를 생성하기 위해 함께 그룹화될 수 있다. 패치는 포인트 클라우드의 단일 속성(예를 들어, 기하 구조, 색상 등)을 나타낼 수 있다. 동일한 속성을 나타내는 패치들은 각각 개별 2D 프레임들로 패킹될 수 있다. 아래에서 더 상세히 설명되는, 도 4a 내지 도 4c는 다른 프레임들의 패치들로 표현되는 3D 포인트 클라우드를 도시한다.
예를 들어, 기하 구조 좌표들은 패치들로 분할되고 2D 프레임들로 패킹된다. 2D 프레임들은 비디오 프레임들일 수 있다. 투영된 패치들 사이의 영역들은 투영된 프레임들 내의 날카로운 모서리들의 수를 줄이는 패딩으로 채워진다. 그런 다음 기하 구조 비디오는 2D 비디오 코덱(예를 들어, HEVC)을 사용하여 압축된다. 색상 속성을 인코딩하기 위해, 3D 좌표들이 재구성되도록 기하 구조를 나타내는 프레임들이 디코딩된다. 이후, 재구성된 기하 구조 좌표들이 스무딩(smooth)되고, 입력 좌표들의 색상 값들로 부터 대응하는 색상 값들이 보간(interpolate)된다. 생성된 색상들은 2D 프레임들로 패킹되고 인코딩된다. 2D 프레임들에서 투영된 포인트들의 위치도 또한 생성되고 인코딩됨을 나타내기 위하여 이진(binary) 점유 맵이 생성된다. 압축된 프레임들 및 점유 맵은 출력 비트스트림을 만들기 위해 패치 생성에 사용되는 보조 정보(auxiliary information)와 함께 다중화된다. 예를 들어, 인코딩 프로세스 동안 추가적인 콘텐츠(예를 들어, 메타데이터, 플래그들, 점유 맵들 등)가 보조 정보로서 비트스트림에 포함될 수 있다.
도 2가 도 1의 서버 104를 나타내는 것으로 설명되어 있지만, 동일하거나 유사한 구조가 다양한 클라이언트 장치들 106 내지 116 중 하나 이상에서 사용될 수 있음에 유의해야 한다. 예를 들어, 데스크탑 컴퓨터 106 또는 랩톱 컴퓨터 112는 도 2에 도시된 것과 동일하거나 유사한 구조를 가질 수 있다.
도 3은 예시적인 전자 장치 300을 도시하고, 전자 장치 300은 도 1의 클라이언트 장치들 106 내지 116 중에서 하나 이상을 나타낼 수 있다. 전자 장치 300은 이동 통신 장치(예를 들어, 이동 국(mobile station), 가입자 국(subscriber station), 무선 단말, 데스크톱 컴퓨터(도 1의 데스크톱 컴퓨터 106과 유사함), 휴대용 전자 장치(예를 들어, 도 1의 휴대 장치 108, PDA 110, 랩톱 컴퓨터 112, 태블릿 컴퓨터 114, 또는 HMD 116 등)를 나타낼 수 있다. 특정 실시 예들에서, 도 1의 클라이언트 장치들 106 내지 116 중에서 하나 이상은 전자 장치 300과 동일하거나 유사한 구성을 포함할 수 있다. 특정 실시 예들에서, 전자 장치 300은 인코더, 디코더, 또는 둘 다이다. 예를 들어, 전자 장치 300은 데이터 전송, 이미지 또는 비디오 압축, 이미지 또는 비디오 압축 해제, 인코딩, 디코딩, 및 미디어 렌더링 애플리케이션들과 함께 사용 가능하다.
도 3에 도시된 바와 같이, 전자 장치 300은 안테나 305, 무선 주파수(radio-frequency, RF) 송수신기 310, 송신(transmit, TX) 처리 회로 315, 마이크로폰 320, 및 수신(receive, RX) 처리 회로 325를 포함한다. 예를 들어, RF 송수신기 310은, RF 송수신기, 블루투스 송수신기, 와이파이(Wi-Fi) 송수신기, 직비(ZIGBEE) 송수신기, 적외선 송수신기, 및 기타 다양한 무선 통신 신호들를 포함할 수 있다. 전자 장치 300은 또한 스피커 330, 프로세서 340, 입/출력(입/출력(input/output, I/O) 인터페이스(IF) 345, 입력 350, 디스플레이 355, 메모리 360, 및 센서(들) 365를 포함한다. 메모리 360은 운영 체제(operating system, OS) 361, 및 하나 이상의 애플리케이션 362를 포함한다.
RF 송수신기 310은, 안테나 305로부터, 액세스 포인트(예를 들어, 기지국, 와이파이 라우터, 또는 BLUETOOTH 장치) 또는 네트워크 102의 다른 장치(예를 들어, 와이파이, 블루투스, 셀룰러, 5G, LTE, LTE-A, WiMAX, 또는 임의의 다른 유형의 무선 네트워크)에서 전송되는 들어오는(incoming) RF 신호를 수신한다. RF 송수신기 310은 들어오는 RF 신호를 하향 변환(down-convert)하여 중간 주파수(intermediate frequency) 또는 기저대역(baseband) 신호를 생성한다. 중간 주파수 또는 기저대역 신호는, 기저대역 또는 중간 주파수 신호를 필터링, 디코딩, 및/또는 디지털화함으로써 처리된 기저대역 신호를 생성하는 RX 처리 회로 325로 전송된다. RX 처리 회로 325는 처리된 기저대역 신호를 스피커 330(예를 들어, 음성 데이터용) 또는 추가적인 처리(예를 들어, 웹 브라우징 데이터용)를 위해 프로세서 340로 전송한다.
TX 처리 회로 315는 마이크로폰 320으로부터 아날로그 또는 디지털 음성 데이터를 수신하거나 프로세서 340으로부터 다른 나가는(outgoing) 기저대역 데이터를 수신한다. 나가는 기저대역 데이터에는 웹 데이터, 이메일, 또는 대화형(interactive) 비디오 게임 데이터가 포함될 수 있다. TX 처리 회로 315는 처리된 기저대역 또는 중간 주파수 신호를 생성하기 위해 나가는 기저대역 데이터를 인코딩, 다중화, 및/또는 디지털화한다. RF 송수신기 310은 TX 처리 회로 315로부터 송신 처리된 기저대역 또는 중간 주파수 신호를 수신하고, 기저대역 또는 중간 주파수 신호를 안테나 305를 통해 전송되는 RF 신호로 상향 변환(up-convert)한다.
프로세서 340은 하나 이상의 프로세서 또는 다른 처리 장치들을 포함할 수 있다. 프로세서 340은 전자 장치 300의 전반적인 동작을 제어하기 위해 OS 361와 같이 메모리 360에 저장된 명령들을 실행할 수 있다. 예를 들어, 프로세서 340은, 잘 알려진 원리에 따라 RF 트랜시버 310, RX 처리 회로 325, 및 TX 처리 회로 315에 의한 순방향(forward) 채널 신호들의 수신 및 역방향(reverse) 채널 신호들의 송신을 제어(control)할 수 있다. 프로세서 340은 임의의 적절한 배열의 프로세서들 또는 다른 장치들의 임의의 적절한 수(들) 및 유형(들)을 포함할 수 있다. 예를 들어, 특정 실시 예들에서, 프로세서 340은 적어도 하나의 마이크로프로세서 또는 마이크로컨트롤러를 포함한다. 프로세서 340의 예시적인 유형들은 마이크로프로세서(microprocessor)들, 마이크로컨트롤러(microcontroller)들, 디지털 신호 프로세서(digital signal processor)들, 필드 프로그램 가능한 게이트 어레이(field programmable gate array)들, 주문형 집적 회로(application specific integrated circuit)들, 및 이산 회로(discrete circuitry)를 포함한다.
프로세서 340은 또한 메모리 360에 상주하는 다른 프로세스 및 프로그램을 실행할 수 있다(예를 들어, 데이터를 수신하고 저장하는 동작). 프로세서 340은 실행 프로세스에 의해 요구되는 대로 데이터를 메모리 360 안 또는 밖으로 이동할 수 있다. 특정 실시 예들에서, 프로세서 340은 OS 361에 기반하여 또는 외부 소스(들) 또는 오퍼레이터로부터 수신된 신호들에 응답하여 하나 이상의 애플리케이션 362를 실행하도록 구성된다. 예를 들어, 애플리케이션 362는 인코더, 디코더, VR 또는 AR 애플리케이션, 카메라 애플리케이션(정지(still) 이미지들 및 비디오들용), 화상 통화(video phone call) 애플리케이션, 이메일 클라이언트, 소셜 미디어 클라이언트, SMS 메시징 클라이언트, 가상 어시스턴트(virtual assistant) 등을 포함할 수 있다. 특정 실시 예들에서, 프로세서 340은 미디어 콘텐츠를 수신 및 전송하도록 구성된다.
프로세서 340은 또한 전자 장치 300에 클라이언트 장치들 106 내지 114와 같은 다른 장치들에 연결하는 능력을 제공하는 입/출력 인터페이스 345에 결합(couple)된다. 입/출력 인터페이스 345는 이러한 액세서리들과 프로세서 340 사이의 통신 경로이다.
프로세서 340은 또한 입력 350 및 디스플레이 355에 결합된다. 전자 장치 300의 오퍼레이터는 입력 350을 이용하여 전자 장치 300에 데이터 또는 입력(input)들을 입력(enter)할 수 있다. 입력 350은 키보드, 터치스크린, 마우스, 트랙 볼, 음성 입력, 또는 사용자가 전자 장치 300과 상호 작용(interact)할 수 있도록 하는 사용자 인터페이스로서 작용할 수 있는 다른 장치일 수 있다. 예를 들어, 입력 350은 음성 인식 처리를 포함하여, 사용자가 음성 명령을 입력할 수 있도록 할 수 있다. 다른 예를 들어, 입력 350은 터치 패널, (디지털) 펜 센서, 키, 또는 초음파 입력 장치를 포함할 수 있다. 예를 들어, 터치 패널은 적어도 하나의 방식(예를 들어, 정전 용량(capacitive) 방식, 감압(pressure sensitive) 방식, 적외선 방식, 또는 초음파 방식 등)으로 터치 입력을 인식할 수 있다. 입력 350은 프로세서 340에 추가적인 입력을 제공함으로써 센서(들) 365 및/또는 카메라와 관련(associate)될 수 있다. 특정 실시 예들에서, 센서 365는 하나 이상의 관성 측정 유닛(inertial measurement unit, IMU)(예를 들어, 가속도계, 자이로스코프, 및 자력계)들, 모션 센서들, 광학 센서들, 카메라들, 압력 센서들, 심박수 센서들, 고도계 등을 포함한다. 입력 350은 또한 제어 회로를 포함할 수 있다. 정전 용량 방식에서, 입력 350은 터치 또는 근접(proximity)을 인식할 수 있다.
디스플레이 355는 액정 디스플레이(liquid crystal display, LCD), 발광 다이오드(light-emitting diode, LED) 디스플레이, 유기 발광 다이오드(organic LED, OLED), 능동형 유기 발광 다이오드(active matrix OLED, AMOLED), 또는 텍스트 및/또는 그래픽들을 렌더링할 수 있는 다른 디스플레이(예를 들어, 웹사이트들, 비디오들, 게임들, 이미지들 등)일 수 있다. 디스플레이 355는 HMD 에 적합하도록 크기가 결정될 수 있다. 디스플레이 355는 단일 디스플레이 스크린 또는 입체 디스플레이를 생성할 수 있는 복수의 디스플레이 스크린들일 수 있다. 특정 실시 예들에서, 디스플레이 355는 헤드 업 디스플레이(heads-up display, HUD)이다. 디스플레이 355는 3D 객체들(예를 들어, 3D 포인트 클라우드)을 디스플레이할 수 있다.
메모리 360은 프로세서 340에 결합(couple)된다. 메모리 360의 일부(part)는 RAM을 포함할 수 있고, 메모리 360의 다른 일부는 플래시 메모리 또는 다른 ROM을 포함할 수 있다. 메모리 360은 정보(예를 들어, 데이터, 프로그램 코드, 및/또는 다른 적절한 정보)를 저장하고 검색을 용이하게 할 수 있는 임의의 구조(들)를 나타내는 영구 저장 장치(미도시)를 포함할 수 있다. 메모리 360은 데이터의 장기 저장(longer-term)을 지원하는 하나 이상의 구성 요소 또는 장치를 포함할 수 있다(예를 들어, 읽기 전용 메모리, 하드 드라이브, 플래시 메모리 또는 광 디스크). 메모리 360은 또한 미디어 콘텐츠를 포함할 수 있다. 미디어 컨텐츠는 다양한 유형의 미디어(예를 들어, 이미지, 동영상, 3차원 컨텐츠, VR 컨텐츠, AR 컨텐츠, 3D 포인트 클라우드 등)를 포함할 수 있다.
전자 장치 300은 물리적인 양을 계량(meter)하거나 또는 전자 장치 300의 활성 상태를 검출하고 계량된 또는 검출된 정보를 전기적인 신호로 변환하는 하나 이상의 센서 365를 더 포함할 수 있다. 예를 들어, 센서 365는 터치 입력을 위한 하나 이상의 버튼, 카메라, 동작(gesture) 센서, IMU 센서(예를 들어, 자이로스코프 또는 자이로 센서, 가속도계(accelerometer)), 안구 추적 센서(eye tracking sensor), 기압(air pressure) 센서, 자기(magnetic) 센서 또는 자력계(magnetometer), 그립 센서, 근접 센서, 색상 센서(color sensor), 생체 센서, 온도/습도 센서, 조도 센서, 자외선(ultraviolet, UV) 센서, 근전도(electromyography, EMG) 센서, 뇌파(electroencephalogram, EEG) 센서, 심전도(electrocardiogram, ECG) 센서, 적외선 센서, 초음파 센서, 홍채 센서, 지문 센서, 색상 센서(예를 들어, 적녹청(red-green-blue, RGB) 센서) 등을 포함할 수 있다. 센서 365는 내부에 포함된 센서들 중 적어도 하나를 제어하기 위한 제어 회로를 더 포함할 수 있다.
이하에서 더 상세히 설명되는 바와 같이, 이들 센서(들) 365 중 하나 이상은, 사용자 인터페이스(user interface, UI)를 제어하고, UI 입력들을 검출하고, 방향을 결정하고, 3차원 컨텐츠 디스플레이 식별을 위해 사용자의 방향에 대향(facing)하는 것에 이용될 수 있다. 이들 센서(들) 365 중 임의의 센서는 전자 장치 300의 내부, 전자 장치 300과 동작적으로 연결된 보조 장치 내부, 전자 장치 300을 유지하도록 구성된 헤드셋 내부, 또는 전자 장치 300이 헤드셋을 포함하는 단일 장치 내에 위치될 수 있다.
전자 장치 300은 미디어 콘텐츠(예를 들어, 3D 포인트 클라우드 생성 또는 카메라를 통한 콘텐츠 캡쳐(또는 녹화))를 생성할 수 있다. 전자 장치 300은 비트스트림이 다른 전자 장치에 직접적으로 또는 간접적(예를 들어, 도 1의 네트워크 102를 통해)으로 전송될 수 있도록 비트스트림(위에서 설명된 서버 200과 유사)을 생성하기 위해 미디어 콘텐츠를 인코딩할 수 있다. 전자 장치 300은 다른 전자 장치로부터 직접적으로 또는 간접적(예를 들어, 도 1의 네트워크 102를 통해)으로 비트스트림을 수신할 수 있다.
예를 들어, 전자 장치 300은 미디어 콘텐츠(예를 들어, 포인트 클라우드)를 인코딩할 때, 포인트 클라우드를 복수의 패치들로 투영할 수 있다. 예를 들어, 포인트 클라우드의 포인트들의 클러스터는 패치를 생성하기 위해 함께 그룹화될 수 있다. 패치는 포인트 클라우드의 단일 속성(예를 들어, 기하 구조, 색상 등)을 나타낼 수 있다. 동일한 속성을 나타내는 패치들은 각각 개별 2D 프레임으로 패킹될 수 있다. 아래에서 더 상세히 설명되는, 도 4a 내지 도 4c는 다른 프레임들의 패치들로 표현되는 3D 포인트 클라우드를 도시한다.
전자 장치 300은 3D 포인트 클라우드를 나타내는 비트스트림에 포함된 미디어 컨텐츠를 디코딩할 때, 수신된 비트스트림을 프레임들로 디코딩할 수 있다. 예를 들어, 전자 장치 300은 수신된 비트스트림을 복수의 비디오 비트스트림들, 점유 맵 비트스트림, 및 보조 정보로 역다중화할 수 있다. 비디오 비트스트림은 2D 프레임들을 나타낸다. 비디오 및 점유 맵 비트스트림들은 출력 포인트 클라우드를 재구성하기 위하여 디코딩되고 보조 정보와 결합된다. 예를 들어, 디코딩된 비디오 스트림은 기하 구조 프레임들 및 색상 프레임들을 포함할 수 있다. 기하 구조 프레임들은 3D 공간에서 포인트 클라우드의 포인트들의 지리적(geographic) 좌표들을 나타내는 픽셀들을 포함하고, 색상 프레임들은 3D 공간 내에서 기하 구조 포인트 각각의 RGB 색상을 나타내는 픽셀들을 포함한다. 보조 정보는 하나 이상의 플래그, 양자화 매개변수(parameter) 크기, 또는 이들의 임의의 조합을 포함할 수 있다. 3D 포인트 클라우드를 재구성한 후, 전자 장치 300은 디스플레이 355를 통해 3D 포인트 클라우드를 3차원으로 렌더링할 수 있다.
도 2 및 3은 전자 장치의 예들을 도시하지만, 도 2 및 3에 다양한 변경들이 이루어질 수 있다. 예를 들어, 도 2 및 3의 다양한 구성 요소들이 결합되거나, 추가적으로 세분화(subdivide)되거나, 생략(omit)될 수 있으며, 특정 요구들에 따라 추가적인 구성 요소들이 추가될 수 있다. 특정 예로서, 프로세서 340는 하나 이상의 중앙 처리 장치(central processing unit, CPU) 및 하나 이상의 그래픽 처리 장치(one or more graphics processing unit, GPU)와 같은 복수의 프로세서들로 분할될 수 있다. 또한, 컴퓨팅 및 통신에서와 같이, 전자 장치들 및 서버들은 매우 다양한 구성들로 제공될 수 있으며, 도 2 및 3은 본 개시를 임의의 특정 전자 장치 또는 서버로 제한하지 않는다. 또 다른 예를 들어, 3D 포인트 클라우드의 인코딩 및 디코딩은 서버 200, 전자 장치 300, 또는 서버 200과 전자 장치 300 모두에 의해 수행될 수 있다.
도 4a, 4b, 4c, 및 4d는 본 개시의 일 실시 예에 따른 예시적인 3D 포인트 클라우드 및 3D 포인트 클라우드를 나타내는 2D 프레임들을 도시한다. 특히, 도 4a는 3D 포인트 클라우드 400을 도시하고, 도 4b 및 4c는 각각 3D 포인트 클라우드 400을 나타내는 패치들을 포함하는 2D 프레임을 도시한다. 도 4b는 3D 포인트 클라우드 400의 포인트들의 기하 구조 위치를 나타내는 예시적인 2D 프레임 410을 도시한다. 도 4c는 3D 포인트 클라우드 400의 포인트들과 관련(associate)된 속성(예를 들어, 색상)을 나타내는 예시적인 2D 프레임 420을 도시한다. 도 4d는 패딩을 포함하고 3D 포인트 클라우드 400의 포인트들과 관련된 색상 속성을 나타내는 예시적인 2D 프레임 430을 도시한다. 도 4c 및 4d는 둘 다 포인트들의 색상을 묘사(depict)하는 속성 프레임을 예시하기 때문에 유사하지만, 도 4d는 도 4c와 비교하여 패딩을 포함한다는 점에 유의해야 한다. 도 4a, 4b, 4c, 및 4d의 실시 예는 단지 예시를 위한 것이며 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
3D 포인트 클라우드 400은 3D 공간에 있는 데이터 포인트들의 세트이다. 3D 포인트 클라우드 400의 포인트 각각은 3D 포인트 클라우드의 구조를 제공하는 기하 구조(geometric) 위치(position)와 포인트 각각에 대한 정보(예를 들어, 색상, 반사도, 텍스처 등)를 제공하는 하나 이상의 속성을 포함한다.
일반적으로, 3D 포인트 클라우드 400의 속성들은 클러스터링되고 서로 다른(different) 평면들에 투영(project)된다. 3D 포인트 클라우드 400의 속성들은 미리 정의된 기준(예를 들어, 법선 방향(normal direction), 투영된 프레임들까지의 거리, 인접성 등)을 사용하여 투영된다. 서로 다른 평면들은 XY 평면, YZ 평면 또는 XZ 평면이 될 수 있다. 클러스터들 각각은 평면에 투영될 때 패치에 대응(correspond)된다.
프레임 410은 3D 포인트 클라우드 400의 포인트들의 기하 구조를 나타내는 복수의(multiple) 패치들을(예를 들어, 패치 412) 묘사(depict)한다. 특히, 프레임 410 내의 패치들은 서로 다른 투영 평면들로부터의 3D 포인트 클라우드 400의 깊이(depth) 값들을 묘사한다. 특정 실시 예들에서, 프레임 410의 픽셀 각각의 조명의 레벨은 표현된 포인트와 투영 평면으로부터의 거리를 나타낸다.
프레임 420은, 3D 포인트 클라우드 400의 색상 속성을 나타내는 복수의 패치들을(예를 들어, 패치 422) 묘사한다. 예를 들어, 프레임 420의 픽셀 각각은 3D 포인트 클라우드 400의 포인트들 각각의 색상을 나타내는 색상 값들을 포함한다. 즉, 픽셀은 빨간색 값, 녹색 값, 및 파란색 값을 포함할 수 있다.
패치(예를 들어, 패치들 412 및 422))들은 서로 다른 2D 프레임으로 분류되고 패킹된다. 예를 들어, 패치 412(3D 포인트 클라우드 400의 포인트들의 클러스터의 기하 구조 위치들을 나타냄)는 프레임 410에 패킹된다. 유사하게, 패치 422(3D 포인트 클라우드 400의 포인트들의 클러스터의 색상 구성 요소를 나타냄)는 프레임 420에 패킹된다.
프레임 420의 픽셀 각각은 프레임 410 내의 동일한 위치(location)에 있는 픽셀에 대응한다. 예를 들어, 프레임 410과 프레임 420의 각 픽셀 사이에 매핑이 생성된다. 2D 프레임들 410 및 420 내의 패치들의 위치(location)는 3D 포인트 클라우드의 단일 위치(position)에 대해 유사할 수 있다. 유사하게, 프레임 410 내의 픽셀의 좌표 (u, v)는 프레임 420 내의 동일한 좌표 (u, v)에 있는 유사한 픽셀에 대응한다. 3D 포인트 클라우드 400이 변경됨에 따라, 3D 포인트 클라우드의 새로운 위치에 기반하여 서로 다른 패치들로 새로운 프레임들이 생성될 수 있다.
프레임 430은, 두 프레임들 모두 3D 포인트 클라우드 400의 색상 속성을 나타내므로, 프레임 420과 유사하다. 예를 들어, 유사한 매핑은 프레임 430의 픽셀들을 프레임 410 내의 대응하는 픽셀들에 관련(relate)시킨다. 다른 예를 들어, 프레임 430은 프레임 420의 패치 422와 유사하고 프레임 410의 패치 412에 대응하는 패치 432를 포함한다. 즉, 패치 432는 패치 412에 표현된 포인트들에 대한 색상 속성을 나타낸다.
프레임 420과 프레임 430의 차이점은 패딩에 관한 것이다. 예시된 바와 같이, 프레임 420은 패딩 424을 포함하지 않는 반면 프레임 430은 패딩 434를 포함한다. 본 개시의 실시 예들은, 패치 간(inter-patch) 공간으로 지칭되는, 패치들 사이의 영역(area)을 채운다. 패딩 434는 압축된 비디오들의 비트 전송률(bitrate)을 감소시킨다. 예를 들어, 투영된 프레임 430의 패치들 사이의 날카로운(sharp) 모서리들의 수는 투영된 프레임 420의 패치들 사이의 날카로운 모서리들의 수보다 적다. 패딩 434은 패치들 중에서 하나의 경계로부터 프레임 내의 빈 공간으로의 급격한 전환(sharp transition)을 감소시킨다. 패치들 중에서 하나의 경계로부터 포인트 클라우드의 포인트들을 나타내지 않는 프레임 영역으로의 급격한 전환을 줄이면 인코더의 압축 성능이 개선된다. 패딩 434를 추가하는 프로세스는 아래의 도 5b 및 도 6a-g에서 더 상세히 설명된다.
그 다음, 프레임 410 및 프레임 430과 같은 프레임들은 비디오 코덱(예를 들어, HEVC, AVC, VP9, VP8, VVC, AVC 등)으로 인코딩된다. 디코더는 프레임 410 및 430을 수신하고, 프레임 410으로부터 3D 포인트 클라우드의 기하 구조를 재구성하고, 재구성된 포인트 클라우드를 생성하기 위해 프레임 430에 기반하여 포인트 클라우드의 기하 구조 구조를 채색(color)할 수 있다.
도 4a, 4b, 4c 및 4d가 예시적인 포인트 클라우드 및 포인트 클라우드를 나타내는 2D 프레임들을 도시하지만, 도 4a, 4b, 4c 및 4d에는 다양한 변경들이 이루어질 수 있다. 예를 들어, 포인트 클라우드 또는 메쉬는 단일 객체를 나타낼 수 있는 반면, 다른 실시 예들에서, 포인트 클라우드 또는 메쉬는 복수의 객체들, 풍경(scenery)(예를 들어 풍경(landscape)), AR 내의 가상 객체 등을 나타낼 수 있다. 다른 예를 들어, 2D 프레임들에 포함된 패치들은 다른 속성들(예를 들어, 휘도(luminance), 재료(material) 등)을 나타낼 수 있다. 도 4a, 4b, 4c, 및 4d는 본 개시를 임의의 특정 3D 객체(들) 및 3D 객체(들)를 나타내는 2D 프레임들로 제한하지 않는다.
도 5a, 5b, 및 5c는 본 개시의 일 실시 예에 따른 블록도를 도시한다. 특히, 도 5a는 본 개시의 일 실시 예에 따른 예시적인 환경 아키텍처 500의 블록도를 도시한다. 도 5b는 본 개시의 일 실시 예에 따른 도 5a의 인코더 510의 예시적인 블록도를 도시한다. 도 5c는 본 개시의 일 실시 예에 따른 도 5a의 디코더 550의 예시적인 블록도를 도시한다. 도 5a, 5b, 및 5c의 실시 예들은 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
도 5a에 도시된 바와 같이, 예시적인 환경 아키텍처 500은 네트워크 502를 통해 통신하는 인코더 510 및 디코더 550을 포함한다. 네트워크 502는 도 1의 네트워크 102와 동일하거나 유사할 수 있다. 특정 실시예에서, 네트워크 502는 하나 이상의 네트워크에 의해 상호 연결된(interconnected) 컴퓨터의 "클라우드"를 나타내며, 상기 네트워크는 액세스될 때 원활한(seamless) 리소스들의 단일 풀로서 작용(act)하는 클러스터링된 컴퓨터들 및 구성 요소들을 활용하는 컴퓨팅 시스템이다. 또한, 특정 실시 예들에서, 네트워크 502는 하나 이상의 서버(예를 들어, 도 1의 서버 104, 서버 200), 하나 이상의 전자 장치(예를 들어, 도 1의 클라이언트 장치들 106 내지 116, 전자 장치 300), 인코더 510, 디코더 550과 연결된다. 또한, 특정 실시 예들에서, 네트워크 502는 인코더 510에 의해 인코딩되거나, 디코더 550에 의해 디코딩되거나, 전자 장치 상에 렌더링 및 표시(display)될 수 있는 VR 및 AR 미디어 콘텐츠를 포함하는 정보 저장소(repository, 미도시)에 연결될 수 있다.
특정 실시 예들에서, 인코더 510 및 디코더 550은 서버 104, 도 1의 클라이언트 장치들 106 내지 116 중에서 하나, 도 2의 서버 200, 도 3의 전자 장치300, 또는 다른 적절한 장치를 나타낼 수 있다. 특정 실시 예들에서, 인코더 510 및 디코더 550은 하나 이상의 네트워크에 의해 상호 연결된 컴퓨터들의 "클라우드"일 수 있으며, 여기서 각각은 네트워크 502를 통해 액세스될 때 원활한 리소스들의 단일 풀로서 작용하기 위해 클러스터링된 컴퓨터들 및 구성 요소들을 활용하는 컴퓨팅 시스템이다. 일부 실시 예들에서, 인코더 510 또는 디코더 550에 포함된 구성 요소들의 일부(portion)는 서로 다른(different) 장치들(예를 들어, 복수의(multiple) 서버들 104 또는 200, 복수의 클라이언트 장치들 106 내지 116, 또는 서로 다른 장치들의 다른 조합)에 포함될 수 있다. 특정 실시 예들에서, 인코더 510은 전자 장치 또는 서버에 동작 가능하도록(operably) 연결되고 디코더 550은 전자 장치에 동작 가능하도록 연결된다. 특정 실시 예들에서, 인코더 510 및 디코더 550은 동일한 장치이거나 동일한 장치에 작동 가능하도록 연결된다.
인코더 510은 아래의 도 5b에서 더 설명된다. 일반적으로, 인코더 510은 3D 미디어 콘텐츠(예를 들어, 포인트 클라우드)를, 장치로부터(예를 들어, 서버(도 1의 서버 104, 도 2의 서버 200과 유사), 정보 저장소(예를 들어, 데이터베이스), 또는 클라이언트 장치들 106 내지 116 중에서 하나) 수신한다. 특정 실시 예들에서, 인코더 510은 복수의 카메라로부터 미디어 콘텐츠를 수신하고 콘텐츠를 함께 스티칭하여 하나 이상의 포인트 클라우드를 포함하는 3D 장면을 생성할 수 있다.
특정 실시 예들에서, 인코더 510은 투영(project)을 나타내는 패치들을 생성하는 2차원으로 포인트 클라우드를 투영한다. 인코더 510은 포인트 클라우드의 포인트들을 XY 평면, YZ 평면, 및 XZ 평면과 같은 서로 다른 평면들에 투영되는 그룹들로 클러스터링한다. 포인트들의 클러스터 각각은 평면에 투영될 때 패치로 나타난다. 인코더 510은 포인트 클라우드를 2차원으로 투영할 수 있다. 3D 포인트 클라우드의 포인트는 (X,Y,Z) 좌표값에 기반하여 3D 공간에 위치한다는 점에 유의해야 한다. 포인트가 2D 프레임에 투영될 때, 투영된 점을 나타내는 픽셀은, 좌표 (u, v)로 나타난 프레임의 열(column) 및 행(row) 인덱스로 나타나게 된다. 또한, 'u' 및 'v'의 범위는 각각 0에서부터 깊이(depth) 이미지 내의 행들 또는 열들의 수까지이다.
인코더 510은 포인트 클라우드를 나타내는 패치들을 2D 비디오 프레임들에 패킹한다. 2D 비디오 프레임들 각각은 특정 속성(예를 들어, 하나의 프레임들의 세트는 기하 구조를 나타내고 다른 프레임들의 세트는 속성을 나타낼 수 있음)을 나타낸다. 추가적인 프레임들은 추가적으로 정의된 속성 각각 뿐만 아니라, 더 많은 레이어들에 기반하여 생성될 수 있음에 유의해야 한다.
인코더 510은 패치 간(inter-patch) 공간 내에 추가적인 픽셀들을 추가하여 하나의 패치의 경계로부터 두 패치들의 사이의 비어 있고(empty) 채워지지 않은(unfilled) 영역(area)으로의 급격한 전환(sharp transition)을 감소시킨다. 예를 들어, 색상을 나타내는 프레임에서, 추가적인 픽셀들이 패치 간 공간 내에 추가되고, 여기서 추가적인 픽셀들의 색상은 하나의 패치에서 인접한 패치로 혼합(blend)되어, 패치들 간에 매끄러운(smooth) 전환을 만든다. 색을 표현하는 프레임에 추가적인 픽셀들이 추가되더라도, 점유 맵을 이용하는, 디코더 550은, 추가된 픽셀들이, 3D 포인트 클라우드의 포인트들에 대응하지 않기 때문에, 포인트 클라우드를 재구성(reconstruct)할 때 추가적으로(additionally) 추가(add)된 픽셀들을 무시(disregard)한다.
인코더 510은 포인트 클라우드를 나타내는 프레임들을 압축된 비트스트림으로 전송한다. 비트스트림은 네트워크 502를 통해 정보 저장소(예를 들어, 데이터베이스), 디코더(예를 들어, 디코더 550)를 포함하는 전자 장치, 또는 디코더 550 자체로 전송될 수 있다. 인코더 510은 아래의 도 5b에서 더 상세히 설명된다.
디코더 550은 미디어 콘텐츠(예를 들어, 포인트 클라우드)를 나타내는 비트스트림을 수신할 수 있다. 비트스트림들은 3D 포인트 클라우드를 나타내는 데이터를 포함할 수 있다. 특정 실시 예들에서, 디코더 550은 비트스트림을 디코딩하고 복수의 프레임들(예를 들어, 기하 구조 및 속성)을 생성할 수 있다. 디코더 550은 복수의 프레임들로부터 포인트 클라우드를 재구성한다. 디코더 550은 아래의 도 5c에서 더 설명된다.
도 5b는 3D 포인트 클라우드 512를 수신하고 비트스트림 530을 생성하는 인코더 510을 도시한다. 비트스트림 530은 수신된 3D 포인트 클라우드 512를 나타내는 데이터를 포함한다. 비트스트림 530은 복수의 비트스트림들을 포함할 수 있고 도 5a의 네트워크 502를 통해 다른 장치(예를 들어, 디코더 550 또는 정보 저장소)로 전송될 수 있다. 인코더 510은 패치 생성기 514, 프레임 패킹 516, 다양한 프레임들(예를 들어, 하나 이상의 기하 구조 프레임 518, 하나 이상의 속성 프레임 520, 및 하나 이상의 점유 맵 프레임 522), 패딩 엔진 524, 하나 이상의 인코딩 엔진 526, 및 멀티플렉서 528을 포함할 수 있다.
3D 포인트 클라우드 512는 메모리(미도시)에 저장되거나 다른 전자 장치(미도시)로부터 수신될 수 있다. 3D 포인트 클라우드 512는 단일 3D 객체 또는 3D 객체들의 그룹화일 수 있다. 3D 포인트 클라우드 512는 정지된 객체 또는 움직이는 객체일 수 있다.
패치 생성기 514는 3D 포인트 클라우드 512의 투영을 취함으로써 패치들를 생성한다. 특정 실시 예들에서, 패치 생성기 514는 기하 구조 속성 및 3D 포인트 클라우드 512의 각각의 포인트의 각각의 속성을 분할한다. 패치 생성기 514는 둘 이상의 투영 평면들을 사용하여, 패치들을 생성하기 위하여 3D 포인트 클라우드 512의 포인트들을 클러스터링할 수 있다. 기하 구조 속성 및 각각의 속성은 최종적으로, 프레임 패킹 516에 의해, 각각의 기하 구조 프레임들 518 또는 속성 프레임들 520으로 패킹된다.
입력 포인트 클라우드(예를 들어, 3D 포인트 클라우드 512) 각각에 대해, 기하 구조 속성 및 하나 이상의 속성(예를 들어, 색상)은 하나 이상의 기준(criteria)을 사용하여 클러스터링된다. 기준은 법선 방향(normal direction), 투사된 프레임들까지의 거리, 인접성(contiguity) 등을 포함한다. 포인트가 클러스터링된 후, 기하 구조 속성 및 포인트 각각에 대하여 대응하는 속성은 평면들(예를 들어, XY 평면, YZ 평면, 또는 XZ 평면)에 투영된다.
투영될 때, 3D 포인트 클라우드 512의 포인트들의 클러스터 각각은 패치로 나타닌다. 패치 각각 (일반(regular) 패치라고도 함)은 포인트 클라우드의 특정 속성을 나타낸다. 예를 들어, 포인트들의 단일 클러스터는 복수의 프레임들 상에서 패치로 나타날 수 있으며, 여기서 패치 각각은 서로 다른 속성을 나타낸다. 포인트들의 동일한 클러스터의 서로 다른 속성들을 나타내는 패치들은 대응 또는 매핑을 포함하며, 이러한 하나의 패치의 픽셀은 다른 패치의 동일한 픽셀에 대응함에 유의해야 한다.
특정 실시 예들에서, 둘 이상의 투영 평면들을 사용하는 동일한 3D 포인트 클라우드의 복수의 프레임들이 생성될 수 있다. 특정 실시 예들에서, 패치 생성기 514는 3D 포인트 클라우드 512의 포인트 각각의 기하 구조 측면(aspect)들과 3D 포인트 클라우드 512의 포인트 각각의 색상 구성 요소(component)들을 분할하며, 이는 색상에 대응하는 기하 구조 프레임 518 및 속성 프레임 520 각각에 배치(place)된다.
프레임 패킹 516은 패치들(기하 구조 및 색상 패치 모두)를 기하 구조 프레임들 518 및 속성 프레임들 520과 같은 각각의 프레임들로 분류하고 패킹한다. 도 4b 및 도 4c에 도시된 바와 같이, 프레임 패킹 516은 속성들을 구성(organize)하고 대응하는 프레임들 내에 패치들을 배치한다(예를 들어, 기하 구조를 나타내는 패치 412가 프레임 410에 포함되고 속성(예를 들어, 색상)을 나타내는 패치 422가 프레임 420에 포함된다). 프레임 패킹 516은 또한 기하 구조 프레임들 518 및 속성 프레임들 520 내의 패치들의 배치에 기반하여 하나 이상의 점유 맵 프레임 522를 생성한다.
기하 구조 프레임들 518은 3D 포인트 클라우드 512의 기하 구조 값들을 나타내는 픽셀들을 포함한다. 기하 구조 프레임들 518은 3D 포인트 클라우드 512의 포인트 각각의 지리적(geographic) 위치를 나타낸다. 속성 프레임들 520은 특정 속성(예를 들어, 3D 포인트 클라우드 512의 색상)의 값들을 나타내는 픽셀들을 포함한다. 색상은 3D 포인트 클라우드 512의 포인트 각각의 단일 측면을 나타낸다. 예를 들어, 기하 구조 프레임 518이 3D 포인트 클라우드 512의 포인트 각각의 3D 공간 내에 있는 위치를 나타내는 경우, 대응하는 속성 프레임 520는 대응하는 포인트 각각의 색상을 나타낸다. 다른 속성들을 나타내는 추가적인 프레임들을 만들 수 있다. 예를 들어, 프레임들의 다른 세트(예를 들어, 반사율 프레임들(미도시)) 생성되는 경우, 대응하는 반사율 프레임은 기하 구조 프레임 518에 의해 표현되는 대응하는 포인트 각각의 반사율의 레벨을 나타낸다. 특정 실시 예들에서, 기하 구조 프레임 518 각각은 적어도 하나의 대응하는 속성 프레임 520을 갖는다.
점유 맵 프레임 522는 프레임들(예를 들어, 기하 구조 프레임들 518 및 속성 프레임들 520)에서 유효한 픽셀들을 나타내는 점유 맵들을 나타낸다. 예를 들어, 점유 맵 프레임들 522는 프레임의 포인트 각각이 유효한 픽셀인지 또는 유효하지 않은(invalid) 픽셀인지를 나타낸다. 유효한 픽셀들은 3D 포인트 클라우드 512의 포인트들을 나타내는 픽셀들에 대응한다. 유효하지 않은 픽셀들은 3D 포인트 클라우드 512의 포인트를 나타내지 않고 패치 간 공간들에 대응하는 프레임 내의 픽셀들이다. 특정 실시 예들에서, 점유 맵 프레임들 522 중에서 하나는 기하 구조 프레임 518 및 속성 프레임 520 모두에 대응할 수 있다.
예를 들어, 프레임 패킹 516이 점유 맵 프레임들 522를 생성할 때, 점유 맵 프레임들은 픽셀 각각에 대해, 미리 정의된 값들(예를 들어, 0 또는 1)을 포함한다. 위치(position) (u, v)에 있는 점유 맵의 픽셀 값이 0인 경우, 기하 구조 프레임 518의 (u, v)의 픽셀과 속성 프레임 520의 (u, v) 픽셀은 유효하지 않다. 위치 (u, v)에 있는 점유 맵의 픽셀 값이 1인 경우, 기하 구조 프레임 518의 (u, v) 픽셀과 속성 프레임 520의 (u, v) 픽셀은 유효하다.
패딩 엔진 524는 속성 프레임들 520의 패치 간 공간들을 픽셀들로 채운다. 도시되지 않은 다른 패딩 엔진(또는 패딩 엔진 524)은 기하 구조 프레임들 518의 패치 간 공간들을 픽셀들로 채울 수 있다. 패딩 엔진 524는 대응하는 점유 맵 프레임 522를 사용하여 속성 프레임 520의 패치 간 공간들을 채운다.
패딩을 추가하기 위해, 패딩 엔진 524은 속성 프레임 520 및 점유 맵 프레임 522 모두의 해상도(resolution)를 점진적으로 다운 샘플링한다. 즉, 패딩 엔진 524는 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 점진적으로 감소시키기 위해 상향식(bottom-up) 순회(traversal)를 수행한다. 예를 들어, 패딩 엔진 524는 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 점진적으로 감소시킨다. 속성 프레임 520 및 점유 맵 프레임 522의 해상도가 감소되는 단계 각각은 새로운 세부적인 레벨(level of detail, LoD)들에 대응한다. 특정 실시 예들에서, 프레임의 해상도가 감소되는 각각의 증분 단계에서, 패딩 엔진 524는 다운 샘플링의 결과들을 스무딩(smooth)하기 위해 필터를 적용할 수 있다. 속성 프레임 520 및 점유 맵 프레임 522의 해상도는 두 프레임들이 미리 결정된 크기가 될 때까지 복수의 횟수만큼 감소된다. 특정 실시 예들에서, 미리 결정된 크기는 4x4 해상도이다. 도 6d 및 6e는, 복수의 순차적인 단계(sequential step)들에 걸쳐 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 감소시키는 프로세스를 도시한다.
각각의 점진적인 단계 동안, 속성 프레임 520 및 점유 맵 프레임 522의 해상도가 감소된다. 일반적으로 블록은 자체 내의 픽셀들을 결합하여 다음 LoD를 생성한다. 블록 내의 픽셀들은 단일 픽셀을 생성하도록 수정된다. 예를 들어, 블록은 2x2일 수 있으며, 여기서 2x2 블록 내의 픽셀들은 단일 픽셀을 생성하도록 수정된다. 다른 예들에서, 블록은 임의의 크기(예를 들어, 3x3, 2x4, 4x4 등, 정사각형 또는 직사각형)일 수 있다. 특정 실시 예들에서, 블록의 크기는 후속(subsequent) 단계(새로운 LoD 생성) 각각에서 변경된다. 예를 들어, 다운 샘플링의 첫 번째 반복은 첫 번째 블록 크기를 사용할 수 있는 반면, 다운 샘플링의 두 번째 반복은 두 번째 블록 크기를 사용할 수 있다. 블록의 크기는 프레임들의 크기보다 작다.
특정 실시 예들에서, 패딩 엔진 524는 속성 프레임 520 및 점유 맵 프레임 522의 해상도가 프레임 크기를 감소시키기 위해 미리 결정된 수의 단계들에 기반하여 감소되는 블록의 크기를 설정한다. 예를 들어, 패딩 엔진 524는 해상도가 미리 결정된 크기에 대응할 때까지 프레임이 미리 결정된 횟수들만큼 점진적으로 다운 샘플링되도록 블록 크기를 설정한다. 특정 실시 예들에서, 블록의 크기는 (i) 프레임들의 해상도, (ii) 프레임들의 가장 작은 크기의 미리 결정된 해상도, 및 (iii) 프레임들을 줄이기 위한 미리 결정된 수의 단계들에 기반한다. 특정 실시 예들에서, 블록의 크기는 (i) 현재 LoD에서의 프레임의 해상도 및 (ii) 다음 LoD의 미리 결정된 해상도에 기반한다.
속성 프레임 520 및 점유 맵 프레임 522의 해상도가 미리 결정된 크기에 도달하면, 패딩 엔진 524는 속성 프레임 520 및 점유 맵 프레임 522 모두를 업 샘플링한다. 즉, 패딩 엔진 524는 패치 간 공간을 채우면서 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 반복적으로 증가시키기 위해 하향식(top-down) 순회를 수행한다. 패딩 엔진 524는 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 원래(original) 크기로 점진적으로 증가시킨다. 예를 들어, 패딩 엔진 524는 속성 프레임 520 및 복수의 LoD들을 생성하는 점유 맵 프레임 522의 해상도를 점진적으로 증가시킨다.
속성 프레임 520 및 점유 맵 프레임 522의 해상도가 증가되는 각각의 점진적인 단계 동안, 패딩 엔진 524는 속성 프레임 520의 패치 간 영역을 채운다. 예를 들어, 속성 프레임 520 및 점유 맵 프레임 522의 해상도가 증가하는 각각의 점진적인 단계 후에, 패딩 엔진 524는 속성 프레임 520 내의 픽셀들에 대하여, 복수의 반복 스무딩을 수행한다. 패딩 엔진 524는 동일한 LoD의 점유 맵 프레임 522에 기반하여 스무딩하기 위해, LoD 각각에서 속성 프레임 520의 픽셀들을 식별한다. 도 6f 및 도 6g는, 패치 간 영역을 채우고 복수의 반복에 걸쳐 채워진 패치 간 영역을 스무딩하면서, 복수의 순차적인 단계들에 걸쳐 속성 프레임 520 및 점유 맵 프레임 522의 해상도를 증가시키는 프로세스를 도시한다.
속성 프레임 520 및 점유 맵 프레임 522의 해상도가 증가하는 단계 각각은 특정 LoD에 대응한다. 각각의 점진적인 단계 동안, 속성 프레임 520 및 점유 맵 프레임 522의 해상도가 증가된다. 특정 실시 예들에서, 속성 프레임 520 및 점유 맵 프레임 522의 크기는 LoD들 사이의 동일한 비율로 증가된다. 예를 들어, 2x2의 블록 크기가 제1 LoD에서 제2 LoD로 프레임들을 다운 샘플링하는 데 사용된 경우, 동일한 블록 크기(2x2)가 제2 LoD에서 제1 LoD로 프레임들을 업 샘플링하는 데 사용된다. 따라서 다운 샘플링에 사용되는 동일한 수의 단계들이 또한 프레임들을 업 샘플링하는 데 사용된다.
속성 프레임 520 및 점유 맵 프레임 522의 해상도가 증가되는 단계 각각에서, 패딩 엔진 524는 속성 프레임 520을 스무딩한다. 즉, LoD 각각에서 패딩 엔진 524는 속성 프레임 520을 스무딩한다. 특정 실시 예들에서, LoD 각각에서 패딩 엔진 524는 복수의 반복 스무딩을 수행한다. 예를 들어, 주어진 LoD에서 스무딩의 첫 번째 반복은 속성 프레임 520의 픽셀들의 값들을 기반으로 한다. 스무딩의 후속 반복은 스무딩의 이전 반복 이후에 속성 프레임 520의 픽셀들의 값들에 기반한다. 예를 들어, 스무딩의 3회 반복에 대해, 첫 번째 반복은 해상도가 증가된 후 속성 프레임 520 내의 픽셀들의 값들에 기반한다. 스무딩의 두 번째 반복은 스무딩의 첫 번째 반복 이후에 속성 프레임 520의 픽셀들의 값들에 기반한다. 세 번째의 스무딩 반복은 두 번째의 스무딩 반복 이후에 속성 프레임 520의 픽셀들의 값들에 기반한다. 그 후, 패딩 엔진 524는 스무딩의 세 번째 반복에 기반하여 속성 프레임 520을 업 샘플링한다.
특정 실시 예들에서, 패딩 엔진 524이 스무딩을 수행하는 반복 횟수는 후속 LoD 각각에서 증가한다. 예를 들어, 패딩 엔진 524는 속성 프레임 520이 미리 결정된 크기(가장 작은 크기)일 때 스무딩을 4회 수행한다. 더 큰(larger) LoD 각각에서 패딩 엔진 524는 스무딩이 수행되는 반복 횟수를 증가시킨다. 특정 실시 예들에서, 패딩 엔진 524는 16개의 서로 다른 간격(interval)들에 걸쳐 스무딩을 수행하지 않는다.
특정 실시 예들에서, 패딩 엔진 524가 스무딩을 수행하는 반복 횟수는 잔여(residual) 오류에 기반한다. 예를 들어, 스무딩을 반복 수행한 후, 패딩 엔진 524는 스무딩의 반복 이전의 속성 프레임 520과 스무딩의 반복이 수행된 후의 속성 프레임 520 사이의 잔여 오류를 식별한다. 패딩 엔진 524는 잔여 오류를 임계 값과 비교한다. 비교에 기반하여, 패딩 엔진 524는 스무딩의 다른 반복을 수행하거나 업 샘플링에 의해 속성 프레임 520의 해상도를 증가시키기로 결정한다. 예를 들어, 단일 LoD에서 텍스처 프레임에 대해 더 많은 스무딩 반복이 수행될수록, 이전 스무딩의 반복과 현재 스무딩의 반복 간의 차이가 감소한다. 이전 스무딩의 반복과 현재 스무딩의 반복의 차이가 특정(certain) 레벨로 감소하면, 잔여 오류를 임계 값과 비교하여 지시되는 것처럼, 스무딩의 추가적인 반복에도 패딩 양이 증가하지 않는다.
패딩 엔진 524는 필터를 이용하여 스무딩을 수행한다. 예를 들어, 패딩 엔진 524는 3x3 필터를 사용하여 속성 프레임 520 내의 픽셀들을 스무딩한다. 특정 실시 예들에서, 패딩 엔진 524는 또한 후속 LoD 각각에서 필터 변경에 할당된 가중치(weight)를 변경할 수 있다. 특정 실시 예들에서, 패딩 엔진 524는 스무딩을 위해 8-탭(8-tap) 필터를 사용한다. 도 7b는 예시적인 8-탭 필터를 도시한다.
LoD 각각에서 복수로 반복하여 스무딩을 수행하는 것 외에도, 패딩 엔진 524는 스무딩을 수행하는 필터의 크기를 변경할 수도 있다. 특정 실시 예들에서, 필터 크기는 후속(더 큰) LoD 각각에서 증가한다. 예를 들어, 3x3 필터는 미리 결정된 크기로 사용되며 필터 크기는 더 큰 LoD 각각이 커질수록 점진적으로 증가한다.
패딩 엔진 524이 속성 프레임 520의 해상도를 원래 크기로 증가시킨 후, 속성 프레임 520, 기하 구조 프레임들 518, 및 점유 맵 프레임 522는 인코딩 엔진 526을 사용하여 인코딩된다. 특정 실시 예들에서, 패딩 엔진 524는 또한, 대응하는 점유 맵 프레임들을 사용하여, 기하 구조 프레임들 518에서 패딩을 생성한다.
인코딩 엔진 526은 기하 구조 프레임들 518, 속성 프레임들 520, 및 점유 맵 프레임들 522를 인코딩한다. 특정 실시 예들에서, 프레임(예를 들어, 기하 구조 프레임들 518, 속성 프레임들 520, 및 점유 맵 프레임들 522)은 독립적인 인코더에 의해 인코딩된다. 예를 들어, 하나의 인코딩 엔진 526은 기하 구조 프레임들 518을 인코딩할 수 있고, 다른 인코딩 엔진 526은 속성 프레임들 520을 인코딩할 수 있으며, 또 다른 인코딩 엔진 526은 점유 맵 프레임들 522를 인코딩할 수 있다. 특정 실시 예들에서, 인코딩 엔진 526은 데이터의 8비트, 10비트, 12비트, 14비트, 또는 16비트 정밀도(precision)를 지원하도록 구성될 수 있다. 인코딩 엔진 526은 3D 포인트 클라우드를 나타내는 2D 프레임을 압축하기 위한 비디오 또는 이미지 코덱일 수 있다(예를 들어, HEVC, AVC, VP9, VP8, VVC).
멀티플렉서 528은 비트스트림 530을 생성하기 위해 인코딩된 복수의 프레임들(예를 들어, 기하 구조 프레임들 518, 속성 프레임들 520, 및 점유 맵 프레임들 522)을 결합한다.
도 5c는 디멀티플렉서 552, 하나 이상의 디코딩 엔진 560, 및 재구성 엔진 562을 포함하는 디코더 550을 도시한다. 디코더 550은 비트스트림 530(예를 들어, 인코더 510에 의해 생성된 비트스트림)을 수신한다. 디멀티플렉서 552는 비트스트림 530을 서로 다른 프레임들을 나타내는 하나 이상의 비트스트림으로 분리한다. 예를 들어, 디멀티플렉서 552는 다양한 데이터 스트림들을 분리한다(예를 들어, 기하 구조 프레임 정보 554(원래 도 5b의 기하 구조 프레임들 518)), 속성 프레임 정보 556(원래 도 5b의 속성 프레임들 520), 및 점유 맵 정보 558(원래 도 5B의 점유 맵 프레임들 522)).
디코딩 엔진 560은 기하 구조 프레임들을 생성하기 위하여 기하 구조 프레임 정보 554를 디코딩한다. 디코딩 엔진 560은 속성 프레임들을 생성하기 위하여 속성 프레임 정보 556를 디코딩한다. 유사하게, 디코딩 엔진 560은 점유 맵 프레임들을 생성하기 위하여 점유 맵 정보 558을 디코딩한다. 특정 실시 예들에서, 단일 디코딩 엔진 560은 기하 구조 프레임 정보 554, 속성 프레임 정보 556, 및 점유 맵 정보 558을 디코딩한다.
기하 구조 프레임 정보 554 이후, 속성 프레임 정보 556 및 점유 맵 정보 558이 디코딩되고, 재구성 엔진 562는 디코딩된 기하 구조 프레임 정보 554, 디코딩된 속성 프레임 정보 556, 및 디코딩된 점유 맵 정보 558을 재구성함으로써 재구성된 포인트 클라우드 564를 생성한다. 재구성된 포인트 클라우드 564는 3D 포인트 클라우드 512와 유사하다.
도 5a-5c가 포인트 클라우드를 전송하는 일 예를 도시하지만, 도 5a-5c에 다양한 변경들이 이루어질 수 있다. 예를 들어, 인코더 510 및 디코더 550에 추가적인 구성 요소들이 포함될 수 있다.
도 6a 내지 도 6f는 포인트 클라우드 512의 색상(또는 텍스처(texture))에 대응하는 도 5b의 속성 프레임들 520에 패딩을 추가하는 프로세스를 도시한다. 예를 들어, 도 6a 및 6b는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링 및 업 샘플링함으로써 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하기 위한 예시적인 다이어그램들 600 및 610을 도시한다. 도 6c는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링 및 업 샘플링함으로써 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하기 위한 예시적인 흐름도 630a을 도시한다. 도 6d는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링하기 위한 예시적인 흐름도 630b을 도시한다. 도 6e는 본 개시의 일 실시 예에 따른 2D 프레임을 다운 샘플링하기 위한 예시적인 프로세스 651를 도시한다. 도 6f는 본 개시의 일 실시 예에 따른 2D 프레임을 업 샘플링함으로써 2D 프레임에 패딩을 추가하기 위한 예시적인 흐름도 630c를 도시한다. 도 6g는 본 개시의 일 실시 예에 따른 2D 프레임을 업 샘플링함으로써 2D 프레임에 패딩을 추가하기 위한 예시적인 프로세스 671을 도시한다. 도 6a 내지 도 6g의 실시 예는 단지 예시를 위한 것이며 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
다이어그램 600은 순차적인 단계(sequential step)들의 수에 대응하는 복수의 LoD들을 도시한다. 다운 샘플링 602 하는 동안, 원래 LoD의 해상도(resolution)는 미리 결정된 크기에 도달할 때까지 점진적으로 감소된다. 해상도가 미리 결정된 크기에 도달한 후, 도 5b의 패딩 엔진 524는 원래 크기에 도달할 때까지 프레임을 점진적으로 샘플링 604를 한다. 특정 실시 예들에서, 프레임들은 다운 샘플링 602 및 업 샘플링 604를 하는 동안 LoD 각각에서 동일한 해상도를 통과한다.
다이어그램 610은 미리 결정된 크기에 도달할 때까지 복수의 단계들에 걸쳐 색상 속성을 포함하는 프레임을 다운 샘플링하는 도 5b의 패딩 엔진 524를 도시한다. 미리 결정된 크기에 도달한 후, 패딩 엔진 524는 프레임을 업 샘플링하고 속성 프레임 내의 일부 픽셀들을 수정하기 위해 패딩을 추가한다. 예를 들어, 프레임 612은 도 4c의 프레임 420과 유사하고 프레임 626은 도 4d의 프레임 430과 유사하다.
프레임 612는 도 5b의 속성 프레임들 520(포인트 클라우드의 포인트들의 색상을 지정함) 및 패딩 424를 포함하지 않는 도 4c의 프레임 420 중에서 하나를 나타낸다. 패딩 엔진 524는 복수의 순차적 단계에 걸쳐 프레임 612의 해상도를 감소시킨다. 다이어그램 610에 도시된 바와 같이, 패딩 엔진 524는 프레임 612의 해상도를 다운 샘플링하기 위해 3개의 순차적인 단계들을 사용한다. 첫 번째 단계 동안, 패딩 엔진 524는 프레임 614를 생성하기 위해 프레임 612를 다운 샘플링한다. 두 번째 단계 동안, 패딩 엔진 524는 프레임 616을 생성하기 위해 프레임 614를 다운 샘플링한다. 세 번째 단계 동안, 패딩 엔진 524는 프레임 620을 생성하기 위해 프레임 616을 다운 샘플링한다. 프레임 620은 미리 결정된 크기이다. 특정 실시 예들에서, 프레임 620은 높이가 4 픽셀들이고 너비가 4 픽셀들 이하인 해상도를 갖는다.
패딩 엔진 524이 프레임 612의 해상도를 미리 결정된 크기로 점진적으로 감소시킨 후, 패딩 엔진 524는 원래(original)의 해상도가 얻어질 때까지 복수의 순차적인 단계들에 걸쳐 프레임 620을 증가시킨다. 특정 실시 예들에서, 패딩 엔진 524는 프레임 612를 다운 샘플링하는 데 사용된 동일한 수의 순차적인 단계들에 걸쳐 프레임 620을 증가시킨다.
첫 번째 단계 동안, 패딩 엔진 524는 프레임 622을 생성하기 위하여 프레임 620을 업 샘플링하고 프레임 622의 패치 간(inter-patch) 공간에 픽셀들(패딩)을 추가한다. 스무딩(복수의 필터링의 반복)이 추가된 픽셀들에 적용된다. 추가된 픽셀들은 동일한 LoD에서, 점유 맵 프레임 522에 의해 지시된 바와 같이, 3D 포인트 클라우드의 포인트들을 나타내지 않는다. 두 번째 단계 동안, 패딩 엔진 524는 프레임 624를 생성하기 위하여 프레임 622를 업 샘플링하고 프레임 624의 패치 간 공간 내에 픽셀들(패딩)을 추가한다. 패딩 엔진 524가 업 샘플링의 두 번째 반복을 수행한 후, 패딩 엔진 524는 프레임 624 내에서 추가된 픽셀들(유효하지 않은)에 스무딩(복수의 필터링의 반복)을 수행한다. 스무딩은 동일한 LoD에서, 점유 맵 프레임 522에 의해 나타난 바와 같이, 3D 포인트 클라우드의 포인트들을 나타내지 않는 픽셀들에 적용된다. 세 번째 단계 동안, 패딩 엔진 524는 프레임 626을 생성하기 위하여 프레임 624를 업 샘플링하고, 프레임 626의 패치 간 공간 내에 픽셀(패딩)을 추가한다. 패딩 엔진 524가 업 샘플링의 세 번째 반복을 수행한 후, 패딩 엔진 524는 프레임 626 내의 픽셀들(유효하지 않은)에 스무딩(복수의 필터링의 반복)를 수행한다. 스무딩은, 동일한 LoD에서, 점유 맵 프레임 522에 의해 나타난 바와 같이, 3D 포인트 클라우드의 포인트들을 나타내지 않는 픽셀들에 적용된다. 업 샘플링, 패딩 추가, 및 3D 포인트 클라우드의 포인트들을 나타내지 않는 픽셀들을 스무딩하는 프로세스는 프레임 626의 패치 간 공간에 매끄러운(smooth) 패딩을 생성한다.
도 6c는 예시적인 흐름도 630a을 도시한다. 흐름도 630a는 2D 프레임을 다운 샘플링한 다음 업 샘플링함으로써 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하는 전반적인(overall) 과정이다. 도 6d의 흐름도 630b는 2D를 다운 샘플링하는 프로세스를 도시하는 반면, 도 6f의 흐름도 630c는 2D 프레임을 업 샘플링하여 2D 프레임에 패딩을 추가하는 프로세스를 도시한다. 2D 프레임을 다운 샘플링하기 위한 흐름도 630b는 도 6e의 프로세스 651에서 더 자세히 설명된다. 유사하게, 2D 프레임을 업 샘플링함으로써 2D 프레임에 패딩을 추가하기 위한 흐름도 630c은 도 6g의 프로세스 671에서 더 자세히 설명된다.
흐름도 630a 내지 630c 및 프로세스 651 및 671은 서버 104 또는 도 1의 클라이언트 장치들 106 내지 116 중에서 임의의 것, 도 2의 서버 200, 도 3의 전자 장치 300, 도 5a 및 5b의 인코더 510, 또는 임이의 다른 적절한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 편의를 위해, 흐름도 630a 내지 630c 및 프로세스 651 및 671)는 도 5a 및 5b의 인코더 510에 의해 수행되는 것으로 설명된다.
흐름도 630a는 3D 포인트 클라우드를 나타내는 2D 프레임에 패딩을 추가하는 전반적인 과정을 설명한다. 단계 640에서, 인코더 510은 텍스처(또는 색상) 프레임 및 대응하는 점유 맵 프레임을 수신한다. 특정 실시 예들에서, 인코더 510은 텍스처 프레임 및 대응하는 점유 맵 프레임을 선택한다. 텍스처 프레임은 도 5b의 임의의 속성 프레임들 520(예를 들어, 기하 구조 포인트의 색상을 지정하는 속성 프레임)일 수 있고 점유 맵 프레임은 도 5b의 임의의 점유 맵 프레임들 522와 유사할 수 있다. 수신된 텍스처 프레임 및 대응하는 점유 맵 프레임은 도 5b의 프레임 패킹 516에 의해 생성된 원래 프레임들을 나타낸다.
단계 650에서 패딩 엔진 524는 복수의 순차적인 단계들에 걸쳐 텍스처 프레임 및 대응하는 점유 맵 프레임을 다운 샘플링한다. 패딩 엔진 524는 다운 샘플링을 점진적으로 수행한다. 예를 들어, 패딩 엔진 524는 높이 및 폭 모두에서 원본 텍스처 프레임 및 대응하는 점유 맵 프레임에 대한 다운 샘플링을 수행한다. 첫 번째 다운 샘플링 단계 후에, 패딩 엔진 524는 이전 다운 샘플링된 프레임들을 다운 샘플링한다. 패딩 엔진 524는 프레임들이 미리 결정된 크기가 될 때까지 텍스처 프레임 및 대응하는 점유 맵 프레임 모두를 계속해서 점진적으로 다운 샘플링한다. 특정 실시 예들에서, 패딩 엔진 524는 프레임의 1차원이 4 픽셀들(높이 또는 너비) 또는 미만이 될 때까지 텍스처 프레임 및 대응하는 점유 맵 프레임 모두를 계속해서 점진적으로 다운 샘플링한다.
특정 실시 예들에서, 텍스처 프레임의 i번째(ith) LoD 내에서 미리 정의된 크기의 블록 내의 픽셀들은 (i+1) LoD에서 하나의 픽셀을 생성하기 위해 함께 평균화(average)된다. 유사하게, 텍스처 프레임과 동일한 LoD의 점유 맵 내에서, 모든 블록(i번째 LoD의 텍스처 프레임의 블록과 동일한 크기)에 대해 패딩 엔진 524는 적어도 하나의 픽셀이 3D 포인트 클라우드의 유효한 픽셀에 대응하는지 여부를 식별한다. 블록 내의 적어도 하나의 픽셀이 유효한 픽셀이면, (i+1) LoD에 대해 유효한 픽셀이 생성된다. 블록 내의 픽셀이 유효한 픽셀이 아닌 경우, (i+1) LoD에 대해 유효하지 않은 픽셀이 생성된다.
예를 들어, 텍스처 프레임의 i번째 LoD에서, 패딩 엔진 524는 2x2 블록 내의 픽셀들을 평균화하고 (i+1) LoD에 대한 단일 픽셀을 생성한다. 유사하게, 점유 맵 프레임의 i번째 LoD에서, 패딩 엔진 524는 2x2 블록 내의 임의의 픽셀이 유효할 때 (i+1) LoD 내에서 유효 픽셀을 생성하거나, 2x2 블록 내의 픽셀들이 유효하지 않을 때 (i+1) LoD 내에서 유효하지 않은 픽셀을 생성한다.
블록 크기는 2x2, 3x2, 3x3, 3x4, 4x4, 5x5 등과 같은 임의의 크기일 수 있다는 점에 유의해야 한다. 특정 실시 예들에서, 필요한 블록은 정사각형이 아니다. 블록은 텍스처 프레임 및 대응하는 점유 맵 프레임의 크기보다 작다. 특정 실시 예들에서, 블록은 서로 다른 LoD들에서 서로 다른 크기일 수 있다.
단계 670에서, 패딩 엔진 524은 텍스처 이미지를 점진적으로 업 샘플링한다. 각각의 업 샘플링 단계 후에, 패딩 엔진 524는 결과들을 필터링한다. 예를 들어, i번째 LoD 이미지는 i-1 LoD 점유 맵을 사용하여 i-1 LoD 이미지의 패치 간 공간을 채우는 데 사용된다. i-1 LoD 이미지의 패치 간 공간을 채운 후, 패딩 엔진 524는 패치 간 공간을 하나 이상의 반복으로 필터링한다. LoD 및 점유 맵 이미지를 사용하여, 필터링은 첫 번째 LoD(원래 투영 이미지)에서 이미지의 패치 간 공간을 채운다.
텍스처 프레임이 미리 결정된 크기에 도달한 후, 패딩 엔진 524는 텍스처 프레임을 업 샘플링한다. 텍스처 프레임이 단일 단계로 업 샘플링될 때, 패딩 엔진 524는 업 샘플링된 텍스처 프레임을 필터링한다. 패딩 엔진 524는 필터링의 단일 인스턴스를 수행하거나 복수의 필터링의 반복을 수행한다. 예를 들어, 필터링 프로세스의 단일 반복은 전체 패치 간 공간을 완전하고 효과적으로 채우는 데 충분하지 않을 수 있다. 이와 같이 패치 간 공간의 필터링은 복수의 횟수로 반복된다. 필터링이 수행된 후, 패딩 엔진 524는 텍스처 프레임을 다른 단계로 업 샘플링한 다음 결과적인 텍스처 프레임을 필터링한다. 단일 단계를 업 샘플링한 후, 하나 이상의 반복을 필터링하는 프로세스는, 텍스처 프레임이 원래 크기로 돌아갈 만큼 충분히 업 샘플링될 때까지 반복된다.
특정 실시 예들에서, 필터링은 LoD 각각에 대해 고정된 수의 반복을 사용하여 반복된다. 예를 들어, LoD 각각이 업 샘플링된 후, 패딩 엔진 524는 새로 생성된 LoD를 미리 정의된 횟수만큼 필터링한다. 특정 실시 예들에서, 필터링을 위한 반복 횟수는 LoD 각각에서 증가한다.
특정 실시 예들에서, 패딩 엔진 524는 LoD 각각에서 필터링 반복 횟수를 제어한다. 예를 들어, 패딩 엔진 524는 모든 LoD들에 대해 반복 횟수를 8로 설정할 수 있다. 다른 예를 들어, 패딩 엔진 524는 가장 낮은 LoD에서 반복 횟수를 4로 설정하고 미리 결정된 반복 횟수가 수행될 때까지 후속 LoD 각각에서 반복 횟수를 하나씩 증가시킨다(예를 들어, 최고 높은 LoD에서 8회 반복, 16회 반복 등).
특정 실시 예들에서, 패딩 엔진 524는 또한 필터 크기를 변경할 수 있다. 예를 들어, 패딩 엔진 524는 더 큰 LoD 각각에서 필터 크기를 증가시킬 수 있다.
특정 실시 예들에서, 패딩 엔진 524는 특정 LoD에서 잔여 오류에 기반하여 필터링을 위한 반복 횟수를 결정한다. 예를 들어, 패딩 엔진 524는 현재 및 이전 반복의 이미지들 사이의 잔여 오류를 식별한다. 그 다음 패딩 엔진 524는 식별된 잔여 오류를 임계 값과 비교한다. 패딩 엔진 524는 잔여 오류가 임계 값보다 작아지면 추가 반복을 수행하지 않는다. 예를 들어, 잔여 오류가 임계 값보다 커질 때, 패딩 엔진 524는 필터링의 다른 반복을 수행한 다음 잔여 오류를 재 식별한다.
도 6d는 텍스처 이미지 및 점유 맵 프레임을 다운 샘플링하기 위한 흐름도 630b를 도시한다. 상술한 바와 같이, 인코더 510은, 단계 640에서, 텍스처 프레임 및 대응하는 점유 맵 프레임을 수신한다. 텍스처 프레임은 도 5b의 임의의 속성 프레임들 520(예를 들어, 색상을 지정하는 프레임)과 유사할 수 있고, 점유 맵 프레임은 도 5b의 임의의 점유 맵 프레임들 522와 유사할 수 있다. 수신된 텍스처 프레임 및 대응하는 점유 맵 프레임은 도 5b의 프레임 패킹 516에 의해 생성된 원래 프레임들을 나타낸다.
단계 650에서, 패딩 엔진 524은 "이미지"로 표시된 수신된 텍스처 프레임 및 "occMap"으로 표시된 대응하는 점유 맵 프레임을 점진적으로 다운 샘플링한다. 특정 실시 예들에서, 패딩 엔진 524는 "iniNumbIters", "incNumIters" 및 "maxNumIters"와 같은 다양한 매개 변수들을 생성한다. 단계 652에서, 패딩 엔진 524는 이미지를 ImageVec[0]으로, occMap을 occMapVec[0]으로 설정하고 변수 "n"을 0으로 설정한다. 변수 "n"은 수신된 텍스처 프레임 및 대응하는 점유 맵 프레임을 미리 결정된 크기로 다운 샘플링하는 데 사용되는 단계들의 수(생성된 LoD들의 수)를 나타낸다.
단계 654에서, 패딩 엔진 524는 높이 및 폭 모두에서 ImageVec[n]의 크기를 검사하고 텍스처 프레임이 미리 결정된 크기보다 작거나 같은지를 결정한다. 예를 들어, 패딩 엔진 524는 imageVec[n]의 너비를 미리 결정된 크기와 비교하고 imageVec[n]의 높이를 미리 결정된 크기와 비교한다. 도시된 바와 같이, 미리 결정된 크기는 4로 설정되지만, 다른 크기가 사용될 수 있다. 특정 실시 예들에서, 미리 결정된 크기는 폭과 다른 높이일 수 있다. 예를 들어, 미리 결정된 크기는 원본 텍스처 프레임의 가로 세로 비(aspect ratio)에 기반하여 할 수 있다.
패딩 엔진 524이 텍스처 프레임이 미리 결정된 크기보다 크다고 결정할 때, 단계 656에서 변수 "n"이 1만큼 증가하고 imageVec[n] 및 occMapVec[n]이 더 높은 LoD의 텍스처 프레임 및 점유 맵 프레임을 사용하여 다운 샘플링된다.
텍스처 프레임 및 점유 맵 프레임을 다운 샘플링한 후, 패딩 엔진 524는, 단계 654에서 텍스처 프레임이, 높이 및 너비 모두에서, 미리 결정된 크기보다 작거나 같은지를 다시 결정한다. 단계 654 및 656의 이 프로세스는 텍스처 프레임의 크기가 미리 결정된 크기에 대응할 때까지 복수의 순차적인 단계들에 걸쳐 텍스처 프레임 및 점유 맵 프레임의 해상도를 감소시키는 것에 대응한다.
텍스처 프레임 및 대응하는 점유 맵 프레임이 미리 결정된 크기와 같거나 미만의 높이 및 너비로 판단한 후, 패딩 엔진 524는 텍스처 프레임 및 대응하는 점유 맵 프레임이 단계 670에서 패치 간 공간을 채우기 위해 업 샘플링될 수 있다고 결정한다. 특정 실시 예들에서, 텍스처 프레임 및 대응하는 점유 맵 프레임의 높이 또는 너비가 미리 결정된 크기와 같거나 미만인 것으로 결정한 후, 패딩 엔진 524은 단계 670에서 텍스처 프레임 및 대응하는 점유 맵 프레임이 패치 간 공간들을 채우기 위해 업 샘플링될 수 있다고 결정한다. 아래의 도 6f는 패치 간 공간들을 업 샘플링하고 채우는 흐름도 630c를 도시한다.
도 6e는 도 6c 및 도 6d의 단계 650을 설명하는 프로세스 651을 도시한다. 프로세스 651은 도 5b의 패딩 엔진 524에 의해 수행될 수 있다. 다운 샘플링을 위해 텍스처 이미지 660a 및 대응하는 점유 맵 660b이 선택된다. 텍스처 이미지 660a은 원래의 너비와 높이를 갖는 LoD-0과 같은 원래의 LoD를 나타낸다. 유사하게, 점유 맵 660b는 원래의 폭 및 높이를 갖는 LoD-0과 같은 원래의 LoD를 나타낸다.
단계 661a에서, 패딩 엔진 524는 텍스처 이미지 662a를 생성하기 위해 텍스처 이미지 660a을 다운 샘플링한다. 텍스처 이미지 662a는 텍스처 이미지 660a의 해상도가 감소되는 단일 단계를 나타낸다. 텍스처 이미지 662a의 LoD는 LoD-1이며 텍스처 이미지 660a의 절반인 너비와 높이를 갖는다. 텍스처 이미지 662a의 폭 및 높이는 텍스처 이미지 660a의 해상도를 다운 샘플링하고 감소시키는 블록의 크기에 기반한다는 점에 유의해야 한다. 패딩 엔진 524이 단계 661a에서 텍스처 이미지 660a을 다운 샘플링할 때, 패딩 엔진 524은 점유 맵 660b를 사용한다.
유사하게, 단계 661b에서, 패딩 엔진 524는 점유 맵 662b를 생성하기 위해 점유 맵 660b를 다운 샘플링한다. 점유 맵 662b는 점유 지도 660b의 해상도가 감소되는 단일 단계를 나타낸다. 예를 들어, 점유 맵 662b의 LoD는 LoD-1이고 점유 맵 660b의 절반인 폭 및 높이를 갖는다. 점유 맵 662b의 폭 및 높이는 텍스처 이미지 660a의 해상도를 다운 샘플링하고 감소시키는 블록의 크기에 기반한다는 점에 유의해야 한다. 도시된 바와 같이, 단계 661a 및 661b의 각각의 다운 샘플링 후에, 텍스처 이미지 662a 및 점유 맵 662b의 크기 및 폭은 동일하다.
단계 663a에서, 패딩 엔진 524는 더 작은 텍스처 이미지를 생성하기 위해 텍스처 이미지 662a를 다운 샘플링한다. 유사하게, 단계 663b에서, 패딩 엔진 524는 더 작은 점유 맵을 생성하기 위해 점유 맵 662b를 다운 샘플링한다. 이 프로세스는 패딩 엔진 524가 텍스처 이미지 664a 및 점유 맵 664b를 각각 생성하기 위해 텍스처 이미지 및 점유 맵의 해상도를 다운 샘플링하고 감소시킬 때까지 복수의 단계들에 걸쳐 계속된다.
텍스처 이미지 664a는 복수의 순차적인 단계들의 인스턴스(multiple sequential steps instance)에 걸쳐 감소된 텍스처 이미지 660a를 나타낸다. 예를 들어, 텍스처 이미지 664a의 LoD는 도시된 바와 같이 8x8인 해상도에 대응하는 LoD(n-2)이다. 유사하게, 점유 맵 664b는 복수의 순차적인 단계들의 인스턴스에 대한 감소된 점유 맵 660b을 나타낸다. 예를 들어, 점유 맵 664b의 LoD는, 도시된 바와 같이 8x8인 해상도에 대응하는 LoD(n-2)이다.
단계 665a에서, 패딩 엔진 524는 텍스처 이미지 666a를 생성하기 위해 텍스처 이미지 664a를 다운 샘플링한다. 텍스처 이미지 666a는 텍스처 이미지 660a의 해상도가 감소되는 복수의 단계들을 나타낸다. 예를 들어, 텍스처 이미지 666a의 LoD는 LoD(n-1)이며 4 픽셀들에 대응하는 너비와 높이를 갖는다. 패딩 엔진 524가 단계 665a에서 텍스처 이미지 664a를 다운 샘플링할 때, 패딩 엔진 524는 점유 맵 664b을 사용한다.
유사하게, 단계 665b에서, 패딩 엔진 524는 점유 맵 666b을 생성하기 위해 점유 맵 664b를 다운 샘플링한다. 점유 맵 666b는 점유 맵 660b의 해상도가 감소되는 복수의 단계들을 나타낸다. 예를 들어, 점유 맵 666b의 LoD는 LoD(n-1)이고 4 픽셀들에 대응하는 너비와 높이를 갖는다. 도시된 바와 같이, 단계 661a 및 661b의 각각의 다운 샘플링 이후, 텍스처 이미지 666a 및 점유 맵 666b의 크기 및 폭은 동일하다. 텍스처 이미지 666a 및 점유 맵 666b의 크기는 미리 결정된 크기를 나타낸다.
도 6f는 텍스처 프레임 및 대응하는 점유 맵을 업 샘플링하고 단계 670에서 패치 간 공간들을 픽셀로 채우는 흐름도 630c을 도시한다. 즉, 패딩 엔진 524이 단계 650에서 텍스처 프레임 및 대응하는 점유 맵 프레임 모두의 해상도를 미리 결정된 크기로 감소시킨 후, 단계 670에서 패딩 엔진 524는 텍스처 프레임 및 대응하는 점유 맵 모두를 복수의 단계들에 걸쳐 업 샘플링함으로써 해상도를 증가시킨다. 또한, 단계 670에서 패딩 엔진 524은 각각의 증분 업 샘플링 후에 결과들을 필터링한다.
단계 672에서, 패딩 엔진 524은 표현 "numIters"를 "minNumIters"로 설정한다. "numIters" 표현식이 "minNumIters"로 설정되면 표현식 "numIters"가 가장 작은 LoD에서 필터링이 수행되는 최소 간격들의 수로 설정된다.
단계 673에서, 패딩 엔진 524는 "n"이 0보다 큰 지 여부를 결정한다. 예를 들어, 도 6d의 단계 656 동안, 변수 "n"이 점진적으로 증가하는데, 이는 텍스처 프레임 및 대응하는 점유 맵이 다운 샘플링되는 단계들의 수를 나타낸다. "n"이 0보다 크면 텍스처 프레임 및 대응하는 점유 맵이 원래 크기가 아님을 나타낸다.
텍스처 프레임 및 대응하는 점유 맵이 ("n"의 값에 기반하여) 원래 크기가 아니라고 결정한 후, 패딩 엔진 524는 "n"의 값을 1만큼 감소시키고 텍스처 이미지 및 대응하는 점유 맵을 업 샘플링한다. 예를 들어 imageVec[n]은 imageVec[n+1] 및 occMapVec[n]에 기반하여 업 샘플링된다. 즉, 현재 LoD의 점유 맵에 기반하여 이전 LoD의 텍스처 이미지를 업 샘플링한다.
단계 675에서, 패딩 엔진 524는 업 샘플링된 LoD에 대해 하나 이상의 필터링 반복을 수행한다. 예를 들어, imageVec[n](단계 674에서 생성됨)은 복수의 반복에 걸쳐 필터링된다. 텍스처 이미지의 필터링은 점유 맵에 따라 다르다.
필터링이 수행되는 반복 횟수는 "numIters" 표현식을 기반으로 한다. "numIters" 표현식으로 지시된 필터링 반복 횟수를 수행한 후, 패딩 엔진 524는 반복 횟수가 "maxNumIters"로 표시된 이전에 미리 정의된 것보다 적은지 여부를 결정한다. "maxNumIters"라는 표현은 최대 반복 횟수에 대응한다. 특정 실시 예들에서, "maxNumIters"는 16이다.
단계 676에서, 패딩 엔진 524는 표현 "numIters"의 값이 표현 "maxNumIters"의 값보다 작은지 여부를 결정한다. 표현 "numIters"의 값이 표현 "maxNumIters"의 값보다 작거나 같을 때, 단계 677에서 패딩 엔진 524는 표현 "numIters"를 증가시킨다. 그 후 흐름도 630c는 단계 673으로 돌아간다. 대안적으로, 반복 횟수가 최대 반복 횟수보다 클 때, 흐름도 630c는 단계 673으로 돌아간다(단계 677 건너뛰기). 단계 673으로 돌아간 후 패딩 엔진 524는 "n"이 0보다 큰지 여부를 결정한다. 변수 "n"이 단계 674에서 감소함에 따라, 패딩 엔진 524는 단계 678에서 패딩이 추가된 텍스처 프레임을 출력할 지 아니면 현재 LoD를 계속해서 샘플링하고 추가적인 패딩을 추가할지 여부를 결정한다.
도 6g는 도 6c 및 도 6f의 단계 670을 설명하는 프로세스 671을 도시한다. 프로세스 671은 도 5b의 패딩 엔진 524에 의해 수행될 수 있다. 패딩 엔진 524는 텍스처 프레임의 해상도가 원래 해상도가 될 때까지, 텍스처 프레임보다 높은 LoD에 대응하는 점유 맵을 사용하여 텍스처 프레임을 업 샘플링한다.
텍스처 이미지 680a는 도 6e의 텍스처 이미지 666a과 유사하다. 예를 들어, 텍스처 이미지 680a과 텍스처 이미지 666a은 모두 동일한 LoD, 즉 LoD(n-1)에 대응하며 너비와 높이가 4x4로 비슷하다. 즉, 텍스처 이미지 680a과 텍스처 이미지 666a는 미리 결정된 크기에 대응한다.
텍스처 이미지 680a을 업 샘플링하기 위해, 패딩 엔진 524는 점유 맵 680b을 사용한다. 점유 지도 680b는 점유 지도 664b와 유사하다. 점유 맵 680b 및 점유 맵 664b는 모두 동일한 LoD, 즉 LoD(n-2)에 대응하고 유사한 너비 및 높이, 8x8을 갖는다.
단계 681에서, 패딩 엔진 524는 텍스처 이미지 680a를 업 샘플링하고 필터링한다. 특정 실시 예들에서, 필터링은 4-탭 필터이다. 단계 682에서, 패딩 엔진 524는 반복 필터링을 수행한다. 텍스처 이미지 680a를 업 샘플링한 후, 패딩 엔진 524는 텍스처 이미지 680a에서 유효하지 않은 픽셀들을 필터링하기 위하여 점유 맵 680b를 사용한다. 유효하지 않은 픽셀들은 패치 간 공간의 픽셀들에 대응한다. 패딩 엔진 524는 텍스처 이미지 680a의 유효하지 않은 픽셀들을 스무딩하기 위해 복수의 필터링의 반복을 수행한다.
필터링의 마지막 반복이 완료된 후, 텍스처 이미지 683a이 생성된다. 텍스처 이미지 683a는 도 6e의 텍스처 이미지 664a와 유사하다. 예를 들어, 텍스처 이미지 683a와 텍스처 이미지 664a는 모두 동일한 LoD, 즉 LoD(n-2)에 대응하며 유사한 너비와 높이 8x8을 갖는다.
텍스처 이미지 683a를 업 샘플링하기 위해, 패딩 엔진 524는 점유 맵 683b를 사용한다. 텍스처 이미지 683a보다 높은 LoD에 대응하는 점유 맵 683b. 특히, 점유 맵 683b의 LoD는 (n-3)이고, 업 샘플링될 텍스처 프레임의 LoD는 (n-2)이다.
단계 684에서, 패딩 엔진 524는 점유 맵 683b을 사용하여 텍스처 이미지 683a의 샘플링 및 필터링을 업 샘플링한다. 특정 실시양태에서, 필터링은 4-탭 필터이다. 단계 685에서, 패딩 엔진 524은 반복적인 필터링을 수행한다. 텍스처 이미지 683a를 업 샘플링한 후, 패딩 엔진 524는 점유 맵 683b을 사용하여 텍스처 이미지 683a에서 유효하지 않은 픽셀들을 필터링한다. 유효하지 않은 픽셀들은 패치 간 공간의 픽셀들에 대응한다. 패딩 엔진 524는 텍스처 이미지 680a의 유효하지 않은 픽셀들을 스무딩하기 위해 복수의 필터링의 반복을 수행한다.
프로세스는 텍스처 이미지 686a이 생성될 때까지 계속된다. 텍스처 이미지 686a은 도 6e의 텍스처 이미지 662a와 유사하다. 예를 들어, 텍스처 이미지 686a와 텍스처 이미지 662a는 LoD-1과 동일한 LoD에 대응하며, 너비와 높이가 비슷하다.
텍스처 이미지 686a를 업 샘플링하기 위해, 패딩 엔진 524는 텍스처 이미지 686a보다 높은 LoD에 대응하는 점유 맵 686b를 사용한다. 특히, 점유 맵 686b의 LoD는 원본 LoD이고, 업 샘플링될 텍스처 프레임의 LoD는 LoD-1이다. 점유 맵 686b은 도 6e의 점유 맵 660b과 유사하다. 점유 맵 686b와 점유 지도 660b는 모두 동일한 LoD, 즉 원래 LoD의 LoD에 대응하며 유사한 너비와 높이를 갖는다.
단계 687에서, 패딩 엔진 524는 점유 맵 686b를 사용하여 텍스처 이미지 687a를 업 샘플링하고 필터링한다. 특정 실시 예들에서, 필터링은 4-탭 필터이다. 단계 688에서, 패딩 엔진 524는 반복적인 필터링을 수행한다. 텍스처 이미지 686a를 업 샘플링한 후, 패딩 엔진 524는 텍스처 이미지 686a에서 유효하지 않은 픽셀들을 필터링하기 위하여 점유 맵 686b를 사용한다. 유효하지 않은 픽셀들은 패치 간 공간의 픽셀들에 대응한다. 패딩 엔진 524는 텍스처 이미지 680a의 유효하지 않은 픽셀들을 스무딩하기 위해 복수의 필터링의 반복을 수행한다.
필터링의 마지막 반복이 완료된 후, 텍스처 이미지 690이 생성된다. 텍스처 이미지 690은 도 6e의 텍스처 이미지 660a과 유사한 해상도를 갖지만, 패치 간 공간에 패딩을 포함한다. 텍스처 이미지 683a와 텍스처 이미지 664a는 모두 동일한 LoD에 대응하며 너비와 높이가 8x8 비슷하다.
도 6c-6g가 프레임에 패딩을 추가하는 포인트의 일 예를 도시하지만, 도 6c-6g에 다양한 변경들이 이루어질 수 있다. 예를 들어, 일련의 단계들로 나타났지만, 도 6c-6g의 다양한 단계는 중첩되거나, 병렬로 발생하거나, 복수 횟수로 발생할 수 있다.
도 7a, 7b, 7c, 7e, 및 7f는 본 개시의 일 실시 예에 따른 서로 다른 세부적인 레벨들에서 2D 프레임을 스무딩하기 위한 예시적인 필터들을 도시한다. 특히, 도 7a는 8-탭 필터 700을 도시한다. 도 7b는 8-탭 필터 710을 도시한다. 도 7c는 4-탭 필터 720을 도시한다. 도 7d, 7e, 및 7f는 각각 다양한 9개의 탭 필터들 730, 740, 750를 도시한다. 예를 들어, 필터들 710-750은 다른 크기 및 가중치를 갖는 필터이며 또한 구현될 수 있다.
식 (1)은 인코더 510이 필터 700 및 710과 유사한, 8-탭 필터를 적용하는 방법을 설명한다. 예를 들어, 수학식 1은 (x,y) 위치에서 패치 간 공간에 위치한 픽셀의 c번째 색상 채널에 대해 반복 각각에서 필터 710을 적용하는 것을 설명한다.
Equation (1)
Figure pct00001
아래의 구문 (1)은 식 (1)에 설명된 샘플 8-탭 필터를 사용하는 과정을 설명한다. 구문 (1)에서 "imageLowerLod"라는 용어는 하위 LoD의 이미지에 대응한다. "occupancyMapLod"라는 용어는 현재 LoD의 점유 맵에 대응한다. "numItersLod"라는 용어는 현재 LoD의 반복 횟수에 대응한다. "smoothingFilterLod"라는 용어는 현재 LoD에 사용되는 스무딩 필터에 대응한다. "imageLod"라는 용어는 현재 LoD의 이미지에 대응한다.
Syntax (1)
imageLod = pullPushFill( imageLowerLod, occupancyMapLod, numItersLod)
{
// Apply upsampling and filtering.
imageLod = upsample(imageLowerLod, occupancyMapLod);
// Apply the iterative filtering operation
tempImage = imageLod; // temporary image buffer
for (n = 1 to numItersLod) {
for (y = 0 to height-1) {
for (x = 0 to width-1) {
if (occupancyMapLod(x,y) == 0) {
for (c = 1 to 3) { // assuming 3 color channels
tempImage(x,y,c) = ( imageLod(x-1,y-1,c) +
imageLod(x+1,y-1,c) +
imageLod(x-1,y+1,c) +
imageLod(x+1,y+1,c) +
imageLod(x,y-1,c) +
imageLod(x,y+1,c) +
imageLod(x-1,y,c) +
imageLod(x+1,y,c) + 4 ) >> 3;
}
}
}
}
imageLod = tempImage;
}
}
아래의 구문 (2)는 제안된 필터링 프로세스의 반복 횟수가 LoD 각각에 대해 결정되는 방법의 예를 설명한다. 예를 들어, Syntax (2)에서 설명한 것처럼 가장 낮은 LoD에서 4번의 필터링 반복이 구현되고, 높은 LoD에서 1씩 반복 횟수가 증가하여 가장 높은 LoD에서 최대 16번의 필터링 반복이 수행된다. Syntax (2)와 같이 n-1은 가장 낮은 LoD의 인덱스이고 0은 가장 높은 LoD의 인덱스이다.
Syntax (2)
numIters = 4;
for (i = n-1 to 1) {
image[i-1] = pushPullFill(image[i], occupancyMap[i-1], numIters);
numIters = min(numIters + 1, 16);
}
본 발명의 실시예는 필터 700, 710에 한하지 않는다. 예를 들어, 다양한 크기와 가중치의 필터들을 사용할 수 있다. 필터는 대칭 또는 비대칭일 수 있다. 필터들 720, 730, 740, 750는 3x3 필터들의 예를 도시한다.
도 7a, 7b, 7c, 7e 및 7f는 다양한 필터들을 도시하지만, 도 7a, 7b, 7c, 7e 및 7f에 다양한 변경들이 이루어질 수 있다. 예를 들어 필터의 크기와 가중치는 다를 수 있다.
도 8은 본 개시의 일 실시 예에 따른 포인트 클라우드를 인코딩하기 위한 예시적인 방법 800을 도시한다. 방법 800은 서버 104 또는 도 1의 클라이언트 장치들 106 내지 116 중에서 임의의 것, 도 2의 서버 200, 도 3의 전자 장치 300, 도 5a 및 5b의 인코더 510, 또는 임의의 다른 적절한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 용이함을 위해, 방법 800은 도 5a 및 5b의 인코더 510에 의해 수행되는 것으로 설명된다.
단계 802에서, 인코더 510은 3D 포인트 클라우드에 대해 속성 프레임 및 점유 맵 프레임을 생성한다. 속성 프레임에는 3D 포인트 클라우드의 포인트들과 관련된 텍스처를 나타내는 픽셀들이 포함된다. 특정 실시 예들에서, 텍스처는 색상이다. 점유 맵은 3D 포인트 클라우드의 포인트들을 나타내는 속성 프레임의 픽셀들을 나타낸다. 인코더는 추가적인 프레임들(예를 들어, 기하 구조 프레임 또는 추가적인 텍스처 프레임들)을 생성할 수도 있다.
단계 804에서, 인코더 510은 속성 프레임 및 점유 맵 프레임의 해상도를 감소시킨다. 속성 프레임 및 점유 맵 프레임의 해상도는 복수의 순차적 단계들에 걸쳐 감소된다. 속성 프레임 및 점유 맵 프레임은 미리 결정된 크기가 될 때까지 축소된다. 즉, 속성 프레임과 점유 맵 프레임은 높이와 너비 모두에서 다운 샘플링된다. 특정 실시 예들에서, 속성 프레임 및 점유 맵 프레임은 속성 프레임 및 점유 맵 프레임이 4 픽셀들이 되거나 그 미만이 될 때까지 감소된다.
속성 프레임을 다운 샘플링하기 위해, 인코더 510은 특정 블록 크기 내의 픽셀들을 평균화하여 색상 값을 나타내는 픽셀을 생성한다. 특정 실시 예들에서, 속성 프레임을 다운 샘플링하기 위해, 인코더 510은 특정 블록 크기 내의 임의의 픽셀이 유효한지 여부를 결정한다. 블록 크기의 픽셀이 유효하면, 다운 샘플링된 이미지에서 생성된 픽셀이 유효하다. 블록의 픽셀이 유효하지 않으면, 다운 샘플링된 이미지에서 생성된 픽셀이 유효하지 않다. 특정 실시 예들에서, 속성 프레임을 다운 샘플링하기 위해, 인코더 510은 유효하거나 유효하지 않은 픽셀을 나타내는 픽셀을 생성하기 위하여 특정 블록 크기 내의 픽셀들을 평균화한다.
특정 LoD에서, 인코더 510은 특정 LoD의 블록 내의 픽셀들을 나타내는 단일 픽셀을 생성한다. 그 단일 픽셀은 후속 LoD에 배치된다. 그런 다음 블록은 특정 LoD의 인접 픽셀들(현재 LoD에서 아직 평균화되지 않은 픽셀들)로 이동하고, 픽셀들에 기반하여, 다른 단일 픽셀을 생성하고, 그 픽셀을 후속 LoD에 배치한다. 이 프로세스는 특정 LoD의 픽셀 각각이 유사하게 다운 샘플링될 때까지 계속된다.
특정 실시 예들에서, 블록은 2x2이다. 속성 프레임에서, 현재 LoD(i LoD)의 2x2 블록 내의 모든 픽셀은 단일 픽셀을 생성하기 위해 평균화된다. 생성된 픽셀은 더 작은 LoD(i+1 LoD)에 배치된다. 특히, 현재 LoD(i LoD)의 2x2 블록은 속성 프레임 내의 색상 값에 대응하는 단일 픽셀들을 평균화하고 생성한다. 점유 맵 프레임에서, 인코더 510은 임의의 픽셀이 2x2 블록 내에서 유효한지 여부를 결정한다. 2x2 블록 내에서 유효한 픽셀이 있으면, 유효한 픽셀을 나타내는 단일 픽셀이 생성된다. 2x2 블록 내에 유효한 픽셀들이 없으면, 유효하지 않은 픽셀을 나타내는 단일 픽셀이 생성된다. 그런 다음 2x2 블록은 현재 LoD(i LoD)에서 인접한 4개의 픽셀들로 이동하고 다른 단일 픽셀을 생성한다. 2x2 블록은 현재 LoD(i LoD)의 모든 픽셀이 단일 픽셀을 생성하는 데 사용될 때까지 계속 이동한다. 생성된 픽셀 각각은 더 작은 LoD의 대응하는 위치에 저장된다. 이 프로세스는 속성 프레임 및 점유 맵 프레임의 적어도 하나의 차원(높이 또는 너비)이 미리 결정된 크기(예를 들어, 4 픽셀들)가 될 때까지 점점 더 작은 LoD를 계속 생성한다.
특정 실시 예들에서, 블록의 크기는 LoD 각각으로부터 변경될 수 있다. 예를 들어, 블록의 크기는 후속 (작은) LoD 각각에서 감소한다. 다른 예를 들어, 블록의 크기는 후속 (작은) LoD 각각에서 증가한다. 블록의 크기에 기반하여, 속성 프레임 및 점유 맵 프레임을 미리 결정된 크기로 줄이는 데 필요한 단계들의 수가 변경됨에 유의해야 한다. 유사하게 블록의 크기는 다운 샘플링 각각과 관련된 품질에 영향을 준다.
속성 프레임 및 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 단계 806에서, 인코더 510은 패딩을 추가하면서 속성 프레임 및 점유 맵의 해상도를 증가시킨다. 속성 프레임 및 점유 맵 프레임의 해상도는 복수의 순차적 단계들에 걸쳐 증가한다. 속성 프레임 및 점유 맵 프레임은 원래 크기가 될 때까지 증가된다. 속성 프레임에서 샘플 픽셀들을 업 샘플링하기 위해, 인코더 510은 i-1 LoD 점유 맵을 사용하여 i-1 LoD 이미지의 패치 간 공간을 채우기 위해 i번째 LoD 이미지를 사용한다.
LoD 이미지 각각이 생성된 후, 단계 808에서, 인코더 510은 패치 간 공간에서 색상, 강도, 또는 둘 다를 가능한 한 매끄럽게 만들기 위해, 적응적이고(adaptive) 반복적인 필터링 프로세스를 수행한다. 즉, 반복적인 필터링 프로세스는 점유 맵 프레임에 의해 유효하지 않은 픽셀들로 식별된 속성 프레임의 픽셀들에 적용된다. 스무딩은 속성 프레임의 패치 간 공간에 위치한 픽셀들에 대한 패딩을 증가시킨다. 특정 LoD에서 필터링의 반복 횟수가 완료되면, 인코더 510은 그 LoD(i-LoD)를 (i+1 LoD)로 업 샘플링한다.
모든 LoD에서, 스무딩의 첫 번째 반복은 속성 프레임의 해상도가 증가한 후 속성 프레임의 픽셀들의 값들에 기반한다. 후속 필터링 반복 각각은 이전 필터링 반복의 픽셀들의 값들에 기반한다.
또한, 필터링이 적용되는 반복 횟수는 후속 LoD 각각에서 고정되거나 변경될 수 있다. 특정 실시 예들에서, 반복 횟수는 모든 LoD에 대해 8로 설정된다. 특정 실시 예들에서, 반복 횟수는 가장 낮은 LoD에서 4로 설정되고 가장 높은 LoD에서 미리 설정된 반복 횟수로 점진적으로 증가한다. 예를 들어, 반복 횟수는 가장 높은 LoD에서 8개로 증가할 수 있다. 예를 들어, 반복 횟수는 가장 높은 LoD에서 16회로 증가할 수 있다. 다른 예를 들어, 반복 횟수는 가장 높은 LoD에서 미리 정의된 다른 반복 횟수로 증가할 수 있다.
특정 실시 예들에서, 필터링을 위한 반복 횟수는 필터링의 현재 반복의 속성 프레임과 필터링의 이전 반복 사이의 잔여 오류에 기반하여 LoD 각각에서 적응적으로 결정될 수 있다. 인코더 510은 식별된 잔여 오류를 임계 값과 비교한다. 잔여 오류가 임계 값보다 작으면 필터링이 중지된다.
필터의 크기는 서로 다른 LoD들 간에 변경되거나 모든 LoD에 대해 일정하게 유지될 수 있다. 특정 실시 예들에서, 필터의 크기는 LoD 각각에 대한 3x3 필터이다. 특정 실시 예들에서, 필터의 크기는 후속 LoD 각각에서 증가한다. 또한, 필터에 적용된 가중치는 서로 다른 LoD들에서 변경되거나 LoD 각각에 대해 일정하게 유지될 수 있다.
단계 810에서, 인코더 510은 속성 프레임, 점유 맵 프레임, 및 3D 포인트 클라우드를 나타내는 임의의 다른 생성된 프레임들을 인코딩한다. 3D 포인트 클라우드를 나타내는 프레임이 인코딩된 후, 인코더 510은 프레임들을 비트스트림으로 다중화할 수 있다. 단계 812에서, 인코더 510은 비트스트림을 전송한다. 비트스트림은 궁극적으로 디코더(예를 들어, 디코더 550)로 전송될 수 있다.
도 8은 포인트 클라우드 인코딩을 위한 방법 800의 일 예를 도시하지만, 도 8에 다양한 변경들이 이루어질 수 있다. 예를 들어, 일련의 단계들로 도시되지만, 도 8의 다양한 단계들은 겹치거나, 병렬로 발생하거나, 복수 횟수로 발생할 수 있다.
도면은 사용자 장비(user equipment)의 서로 다른 예를 도시하지만, 도면에 다양한 변경들이 이루어질 수 있다. 예를 들어, 사용자 장비는 임의의 적절한 배열로 임의의 수의 구성 요소 각각을 포함할 수 있다. 일반적으로, 도면은 본 개시의 범위를 임의의 특정 구성(들)로 제한하지 않는다. 더욱이, 도면은 이 특허 문서에 개시된 다양한 사용자 장비 특징이 사용될 수 있는 작동 환경을 도시하지만, 이러한 특징들은 임의의 다른 적합한 시스템에서 사용될 수 있다.
본 출원의 어떠한 설명도 특정 요소, 단계, 또는 기능이 청구범위에 포함되어야 하는 필수 요소임을 암시하는 것으로 해석되어서는 안 된다. 특허 대상의 범위는 청구범위에 의해서만 정의된다.
본 발명은 예시적인 실시 예로 설명되었지만, 다양한 변경들 및 수정들이 당업자에게 제안될 수 있다. 본 개시는 첨부된 청구범위 내에 속하는 그러한 변경들 및 수정들을 포함하도록 의도된다.

Claims (15)

  1. 포인트 클라우드 인코딩을 위한 인코딩 장치에 있어서,
    프로세서는,
    3차원(three-dimensional, 3D) 포인트 클라우드를 위한, 픽셀들을 포함하는 속성 프레임 및 상기 속성 프레임 내의 상기 픽셀들 중에서 어느 것이 상기 3D 포인트 클라우드의 포인트들을 나타내는지를 식별하는 점유 맵 프레임을 생성하고,
    상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기가 될 때까지, 복수의 순차적인 단계(sequential step)들에 걸쳐 상기 속성 프레임의 해상도(resolution) 및 상기 점유 맵 프레임의 해상도를 감소시키고,
    상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들 중에서 적어도 일부를 수정하기 위해 패딩을 추가하는 동안, 상기 속성 프레임의 해상도 및 상기 점유 맵 프레임의 해상도를 상기 순차적인 단계들에 걸쳐 증가시키고,
    상기 속성 프레임의 해상도가 점진적으로 증가되는 동안, 싱기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대해 스무딩(smooth)을 수행하고,
    비트스트림을 생성하기 위하여 상기 속성 프레임 및 상기 점유 맵 프레임을 인코딩하도록 구성되고,
    상기 프로세서에 작동적으로(operably) 연결된 통신 인터페이스는, 상기 비트스트림을 전송하도록 구성된 인코딩 장치.
  2. 제1항에 있어서, 상기 프로세서는,
    상기 순차적인 단계들 각각은, 상기 속성 프레임과 동일한 단계에서 상기 점유 맵 프레임에 기반하여 상기 속성 프레임 내에서 스무딩할 상기 픽셀들을 식별하도록 추가적으로 구성되고,
    상기 스무딩은 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대한 상기 패딩을 증가시키는 인코딩 장치.
  3. 제1항에 있어서,
    상기 프로세서는, 상기 순차적인 단계들 각각에서 상기 스무딩을 복수로 반복하여 수행하도록 추가적으로 구성되고,
    상기 스무딩의 첫 번째 반복은, 상기 순차적인 단계 각각에서, 상기 속성 프레임의 해상도가 증가한 후, 상기 속성 프레임 내의 상기 픽셀들의 값들에 기반하고,
    스무딩의 후속(subsequent) 반복 각각은, 현재(current) 단계에서 상기 첫 번째 반복 후, 스무딩의 하나의 이전 반복에 대응하는 상기 픽셀 값들에 기반하는 인코딩 장치.
  4. 제3항에 있어서, 상기 스무딩의 반복을 수행한 후, 상기 프로세서는,
    상기 스무딩의 반복을 수행하기 전의 상기 속성 프레임 및 상기 스무딩의 반복 후의 상기 속성 프레임 사이의 잔여(residual) 오류를 식별하도록 구성되고,
    상기 잔여 오류와 임계 값과의 비교에 기반하여, 상기 속성 프레임 내의 상기 픽셀들에 대한 스무딩의 추가적인 반복을 수행하도록 결정하고, 상기 스무딩의 반복 횟수는 상기 잔여 오류에 기반하는 인코딩 장치.
  5. 제3항에 있어서, 상기 프로세서는,
    상기 순차적인 단계들의 후속 단계 각각에서 상기 스무딩이 점진적으로 수행되는 반복 횟수를 늘리도록 추가적으로 구성되는 인코딩 장치.
  6. 제5항에 있어서,
    상기 속성 프레임이 미리 결정된 크기일 때, 상기 순차적인 단계들 중 하나 동안에 4회 반복으로 스무딩이 수행되고,
    상기 프로세서는 상기 순차적인 단계들의 후속 단계 각각에서 상기 스무딩이 점진적으로 수행되는 반복 횟수를 최대 16회 반복까지 늘리도록 구성되는 인코딩 장치.
  7. 제1항에 있어서,
    상기 스무딩은 필터를 사용하여 수행되고,
    상기 프로세서는 상기 순차적 단계들의 후속 단계 각각에서 상기 필터의 크기를 증가시키도록 구성되는 인코딩 장치.
  8. 제7항에 있어서,
    상기 필터는 상기 순차적 단계들의 후속 단계 각각에서 상기3x3 필터인 인코딩 장치.
  9. 제1항에 있어서, 상기 프로세서는 8-탭(8-tap) 필터를 사용하여 상기 스무딩을 수행하도록 구성되고, 상기 8-탭 필터는 다음과 같이 정의되는 인코딩 장치.
    Figure pct00002

  10. 제9항에 있어서,
    상기 스무딩은 필터를 사용하여 수행되고,
    상기 프로세서는 상기 순차적 단계들의 후속 단계 각각에서 상기 필터의 가중치(weight)를 변경하도록 구성되는 인코딩 장치.
  11. 포인트 클라우드 인코딩을 위한 방법에 있어서,
    3차원(three-dimensional, 3D) 포인트 클라우드를 위한, 픽셀들을 포함하는 속성 프레임 및 상기 속성 프레임 내의 상기 픽셀들 중에서 어느 것이 상기 3D 포인트 클라우드의 포인트들을 나타내는지를 식별하는 점유 맵 프레임을 생성하는 과정과,
    상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기가 될 때까지, 복수의 순차적인 단계(sequential step)들에 걸쳐 상기 속성 프레임의 해상도(resolution) 및 상기 점유 맵 프레임의 해상도를 감소시키는 과정과,
    상기 속성 프레임 및 상기 점유 맵 프레임이 미리 결정된 크기로 축소된 후, 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들 중에서 적어도 일부를 수정하기 위해 패딩을 추가하는 동안, 상기 속성 프레임의 해상도 및 상기 점유 맵 프레임의 해상도를 상기 순차적인 단계들에 걸쳐 증가시키는 과정과,
    상기 속성 프레임의 해상도가 점진적으로 증가되는 동안, 싱기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대해 스무딩(smooth)을 수행하는 과정과,
    비트스트림을 생성하기 위하여 상기 속성 프레임 및 상기 점유 맵 프레임을 인코딩하는 과정과,
    상기 비트스트림을 전송하는 과정을 포함하는 방법.
  12. 제11항에 있어서,
    상기 순차적인 단계들 각각은, 상기 속성 프레임과 동일한 단계에서 상기 점유 맵 프레임에 기반하여 상기 속성 프레임 내에서 스무딩할 상기 픽셀들을 식별하는 과정을 더 포함하고,
    상기 스무딩은 상기 3D 포인트 클라우드의 포인트들을 나타내지 않는 상기 속성 프레임 내의 상기 픽셀들에 대한 상기 패딩을 증가시키는 방법.
  13. 제11항에 있어서,
    상기 순차적인 단계들 각각에서 상기 스무딩을 복수로 반복하여 수행하는 과정을 더 포함하고,
    상기 스무딩의 첫 번째 반복은, 상기 순차적인 단계 각각에서, 상기 속성 프레임의 해상도가 증가한 후, 상기 속성 프레임 내의 상기 픽셀들의 값들에 기반하고,
    스무딩의 후속(subsequent) 반복 각각은, 현재(current) 단계에서 상기 첫 번째 반복 후, 스무딩의 하나의 이전 반복에 대응하는 상기 픽셀 값들에 기반하는 방법.
  14. 제13항에 있어서,
    상기 스무딩의 반복을 수행한 후, 상기 스무딩의 반복을 수행하기 전의 상기 속성 프레임 및 상기 스무딩의 반복 후의 상기 속성 프레임 사이의 잔여(residual) 오류를 식별하는 과정과,
    상기 잔여 오류와 임계 값과의 비교에 기반하여, 상기 속성 프레임 내의 상기 픽셀들에 대한 스무딩의 추가적인 반복을 수행는 과정을 더 포함하고, 상기 스무딩의 반복 횟수는 상기 잔여 오류에 기반하는 방법.
  15. 제13항에 있어서,
    상기 순차적인 단계들의 후속 단계 각각에서 상기 스무딩이 점진적으로 수행되는 반복 횟수를 늘리는 과정을 더 포함하는 방법.
KR1020217025197A 2019-01-09 2020-01-09 비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치 KR20210102482A (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201962790134P 2019-01-09 2019-01-09
US62/790,134 2019-01-09
US201962822460P 2019-03-22 2019-03-22
US62/822,460 2019-03-22
US201962824007P 2019-03-26 2019-03-26
US62/824,007 2019-03-26
US16/732,159 US11373338B2 (en) 2019-01-09 2019-12-31 Image padding in video-based point-cloud compression CODEC
US16/732,159 2019-12-31
PCT/KR2020/000398 WO2020145689A1 (en) 2019-01-09 2020-01-09 Method and apparatus for improving image padding in video-based point-cloud compression codec

Publications (1)

Publication Number Publication Date
KR20210102482A true KR20210102482A (ko) 2021-08-19

Family

ID=71404370

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025197A KR20210102482A (ko) 2019-01-09 2020-01-09 비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치

Country Status (4)

Country Link
US (1) US11373338B2 (ko)
EP (1) EP3909023A4 (ko)
KR (1) KR20210102482A (ko)
WO (1) WO2020145689A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US10805646B2 (en) 2018-06-22 2020-10-13 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10699444B2 (en) 2017-11-22 2020-06-30 Apple Inc Point cloud occupancy map compression
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10867414B2 (en) 2018-04-10 2020-12-15 Apple Inc. Point cloud attribute transfer algorithm
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US11044478B2 (en) 2018-07-02 2021-06-22 Apple Inc. Compression with multi-level encoding
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US10911787B2 (en) 2018-07-10 2021-02-02 Apple Inc. Hierarchical point cloud compression
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11386524B2 (en) * 2018-09-28 2022-07-12 Apple Inc. Point cloud compression image padding
US11132818B2 (en) 2018-09-28 2021-09-28 Apple Inc. Predicting attributes for point cloud compression according to a space filling curve
CA3114322A1 (en) * 2018-10-02 2020-04-09 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US10853973B2 (en) 2018-10-03 2020-12-01 Apple Inc. Point cloud compression using fixed-point numbers
US11430155B2 (en) 2018-10-05 2022-08-30 Apple Inc. Quantized depths for projection point cloud compression
US11454710B2 (en) 2019-01-08 2022-09-27 Apple Inc. Point cloud compression using a space filling curve for level of detail generation
US11348284B2 (en) 2019-01-08 2022-05-31 Apple Inc. Auxiliary information signaling and reference management for projection-based point cloud compression
US11284091B2 (en) 2019-03-25 2022-03-22 Apple Inc. Video based point cloud compression-patch alignment and size determination in bounding box
KR20230153532A (ko) * 2019-03-21 2023-11-06 엘지전자 주식회사 포인트 클라우드 데이터 부호화 장치, 포인트 클라우드 데이터 부호화 방법, 포인트 클라우드 데이터 복호화 장치 및 포인트 클라우드 데이터 복호화 방법
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11450030B2 (en) 2019-09-24 2022-09-20 Apple Inc. Three-dimensional mesh compression using a video encoder
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11202078B2 (en) 2019-09-27 2021-12-14 Apple Inc. Dynamic point cloud compression using inter-prediction
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11409998B2 (en) 2019-10-02 2022-08-09 Apple Inc. Trimming search space for nearest neighbor determinations in point cloud compression
US11461933B2 (en) 2019-10-02 2022-10-04 Samsung Electronics Co., Ltd. Decision-making rules for attribute smoothing
US11158107B2 (en) * 2019-10-03 2021-10-26 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
CN114616827A (zh) 2019-10-03 2022-06-10 Lg电子株式会社 点云数据发送装置及方法、点云数据接收装置及方法
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11200722B2 (en) * 2019-12-20 2021-12-14 Intel Corporation Method and apparatus for viewport shifting of non-real time 3D applications
US20210211703A1 (en) * 2020-01-07 2021-07-08 Apple Inc. Geometry information signaling for occluded points in an occupancy map video
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11477483B2 (en) 2020-01-08 2022-10-18 Apple Inc. Video-based point cloud compression with variable patch scaling
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
CN115066902A (zh) * 2020-03-25 2022-09-16 索尼集团公司 图像处理装置和方法
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
KR20220078298A (ko) * 2020-12-03 2022-06-10 삼성전자주식회사 적응적 증강 현실 스트리밍 제공 방법 및 이를 수행하는 장치
US11978162B2 (en) * 2020-12-18 2024-05-07 Take-Two Interactive Software, Inc. System and method for improved rendering of computer graphic models
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
BR102021006869A2 (pt) 2021-04-09 2022-10-18 Samsung Eletrônica da Amazônia Ltda. Método de transformada hardware-friendly em codecs para nuvens de pontos plenópticos

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4875162B2 (ja) 2006-10-04 2012-02-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 画像強調
US9317965B2 (en) 2009-11-16 2016-04-19 Autodesk, Inc. Uniform point cloud decimation
US9245358B2 (en) 2014-05-30 2016-01-26 Apple Inc. Systems and methods for generating refined, high fidelity normal maps for 2D and 3D textures
US11514613B2 (en) 2017-03-16 2022-11-29 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs
US10909725B2 (en) * 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10939129B2 (en) * 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
CN116847105A (zh) * 2018-09-14 2023-10-03 华为技术有限公司 点云译码中属性支持的改进
US11259048B2 (en) * 2019-01-09 2022-02-22 Samsung Electronics Co., Ltd. Adaptive selection of occupancy map precision

Also Published As

Publication number Publication date
EP3909023A4 (en) 2022-10-26
EP3909023A1 (en) 2021-11-17
WO2020145689A1 (en) 2020-07-16
US11373338B2 (en) 2022-06-28
US20200219285A1 (en) 2020-07-09

Similar Documents

Publication Publication Date Title
KR20210102482A (ko) 비디오 기반 포인트 클라우드 압축 코덱의 이미지 패딩 개선을 위한 방법 및 장치
US11288843B2 (en) Lossy compression of point cloud occupancy maps
KR102580711B1 (ko) 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법
US11122279B2 (en) Point cloud compression using continuous surface codes
US11393132B2 (en) Mesh compression
US11348283B2 (en) Point cloud compression via color smoothing of point cloud prior to texture video generation
US11095908B2 (en) Point cloud compression using interpolation
US10984541B2 (en) 3D point cloud compression systems for delivery and access of a subset of a compressed 3D point cloud
US11665372B2 (en) Fast projection method in video-based point cloud compression codecs
US11210812B2 (en) Single-pass boundary detection in video-based point cloud compression
US11039115B2 (en) Low complexity color smoothing of reconstructed point clouds
US11803987B2 (en) Attribute transfer in V-PCC
US11922663B2 (en) Decision-making rules for attribute smoothing
US20230308684A1 (en) Tiling for video based point cloud compression
US20220058833A1 (en) Complexity reduction of video-based point cloud compression encoding using grid-based segmentation
CN116830569A (zh) 基于视觉体积视频的编码(v3c)内容的mpeg媒体传输(mmt)信令

Legal Events

Date Code Title Description
E902 Notification of reason for refusal