KR102580711B1 - 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법 - Google Patents

비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법 Download PDF

Info

Publication number
KR102580711B1
KR102580711B1 KR1020180137584A KR20180137584A KR102580711B1 KR 102580711 B1 KR102580711 B1 KR 102580711B1 KR 1020180137584 A KR1020180137584 A KR 1020180137584A KR 20180137584 A KR20180137584 A KR 20180137584A KR 102580711 B1 KR102580711 B1 KR 102580711B1
Authority
KR
South Korea
Prior art keywords
metadata
patch
point cloud
patches
flag
Prior art date
Application number
KR1020180137584A
Other languages
English (en)
Other versions
KR20190053129A (ko
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 삼성전자주식회사
Priority to PCT/KR2018/013668 priority Critical patent/WO2019093834A1/en
Publication of KR20190053129A publication Critical patent/KR20190053129A/ko
Application granted granted Critical
Publication of KR102580711B1 publication Critical patent/KR102580711B1/ko

Links

Classifications

    • 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
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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

Abstract

디코딩 장치, 인코딩 장치, 및 포인트 클라우드 디코딩을 위한 방법이 개시된다. 상기 방법은, 압축된 비트스트림을 수신하는 과정을 포함한다. 또한, 상기 방법은 상기 압축된 비트스트림을 3-D 포인트 클라우드를 나타내는 2-D 프레임들로 디코딩하는 과정을 포함한다. 상기 2-D 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3-D 포인트 클라우드의 포인트들의 클러스터를 포함한다. 상기 포인트들의 클러스터는 상기 3-D 포인트 클라우드와 관련된 속성에 대응한다. 상기 패치들의 세트 중 하나의 패치, 상기 패치들의 세트, 및 상기 2-D 프레임들은 상기 3-D 포인트 클라우드를 나타내는 개별 액세스 레벨들에 대응한다. 또한, 상기 방법은 제1 플래그 및 제2 플래그를 식별하는 과정을 포함한다. 상기 제1 플래그 및 제2 플래그를 식별하는 것에 응답하여, 상기 방법은 상기 압축된 비트스트림으로부터 상기 메타데이터를 판독하는 과정을 포함한다. 상기 방법은, 메타데이터에 기반하고 상기 2-D 프레임들의 세트를 이용하여, 상기 3차원 포인트 클라우드를 생성하는 과정을 더 포함한다.

Description

비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법 {APPARATUS AND METHOD FOR POINT CLOUD COMPRESSION USING NON-ORTHOGONAL PROJECTION}
본 개시는 멀티미디어 데이터의 압축 및 코딩에 관한 것이다. 보다 구체적으로, 본 개시는 포인트 클라우드의 압축 및 압축 해제를 위한 장치 및 방법에 관한 것이다.
360도(360°) 비디오는 스마트폰과 같은 강력한 소형 디바이스들의 준비된 이용 가능성 때문에 몰입형(immersive) 비디오를 경험하는 새로운 방법으로 알려지고 있다. 360° 비디오는 세상의 360°시야를 캡쳐함으로써 소비자들을 위한 몰입형 현실 경험을 가능하게 한다. 사용자들은 그들의 관점을 상호적으로 변경하고, 원하는 캡쳐된 장면 또는 물체의 어느 부분이라도 동적으로 볼 수 있다. 디스플레이 및 네비게이션 센서들은 사용자가 보기를 원하는 360° 비디오의 영역을 결정하기 위하여, 머리의 움직임을 실시간으로 추적한다. 360°비디오는 3 자유도(three degrees of freedom, 3DoF)의 몰입형 경험을 제공한다. 6 자유도(six degrees of freedom, 6DoF)는 사용자가 머리를 돌리고 가상의(virtual) 또는 확장된(augmented) 환경에서 이동할 수 있는 몰입형 경험의 다음 단계이다. 6DoF 경험을 제공하기 위해, 포인트 클라우드들과 같이 사실상 3차원의 멀티미디어 데이터가 필요하다.
포인트 클라우드들 및 메쉬들은 물체 또는 장면의 표면의 모델을 나타내는 3-D 포인트들의 세트이다. 포인트 클라우드들은 게임, 3-D 맵들, 시각화(visualizations), 의료 애플리케이션들, 증강 현실, 가상 현실, 자율 주행, 다중-뷰 재생, 6DoF 몰입형 미디어와 같은 다양한 애플리케이션에서 일반적으로 사용된다. 포인트 클라우드들이 압축되지 않는 경우, 일반적으로 송신을 위해 큰 대역폭이 요구된다. 요구되는 비트레이트가 크기 때문에, 포인트 클라우드들은 송신 전에 압축된다. 포인트 클라우드들의 압축 하드웨어 및 프로세스들은 종래의 2차원(two-dimensional, 2-D) 멀티미디어에 대한 압축 하드웨어 및 프로세스들과 상이하다.
본 개시는 비-직교 투영을 이용한 포인트 클라우드 압축을 제공한다.
본 개시의 일 실시 예에서, 포인트 클라우드 디코딩을 위한 디코딩 장치가 제공된다. 상기 디코딩 장치는 통신 인터페이스 및 상기 통신 인터페이스에 동작적으로 결합된 프로세서를 포함한다. 상기 통신 인터페이스는 압축된 비트스트림을 수신하도록 구성된다. 상기 프로세서는 상기 압축된 비트스트림을 3-D 포인트 클라우드를 나타내는 2-D 프레임들로 디코딩하도록 구성된다. 상기 2-D 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3-D 포인트 클라우드의 포인트들의 클러스터를 포함한다. 상기 포인트들의 클러스터는 상기 3-D 포인트 클라우드와 관련된 속성에 대응한다. 상기 패치들의 세트 중 하나의 패치, 상기 패치들의 세트 및 상기 2-D 프레임들은 상기 3-D 포인트 클라우드를 나타내는 개별 액세스 레벨들에 대응한다. 또한, 상기 프로세서는 상기 개별 액세스 레벨들 중 제1 액세스 레벨에 적용되는 메타데이터의 수정이 가능할 때 시그널링 하는 제1 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정되었는지 여부를 식별하도록 구성된다. 상기 프로세서는 상기 개별 액세스 레벨들 중 상기 제1 액세스 레벨의 수정과 관련된 상기 메타데이터의 존재를 지시하는 제2 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정되었는지 여부를 식별하도록 더 구성된다. 상기 제1 플래그 및 상기 제2 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정됨을 식별하는 것에 응답하여, 상기 프로세서는 상기 압축된 비트스트림으로부터 상기 메타데이터를 판독하도록 구성된다. 상기 제1 플래그 또는 상기 제2 플래그 중 적어도 하나가 상기 압축된 비트스트림에 포함되지 않고 거짓으로 설정됨을 식별하는 것에 응답하여, 상기 프로세서는 미리 결정된 파라미터를 상기 메타데이터에 할당하도록 구성된다. 또한, 상기 프로세서는 상기 메타데이터에 기반하고 상기 2-D 프레임들의 세트 및 상기 메타데이터를 이용하여, 상기 3-D 포인트 클라우드를 생성하도록 구성된다.
본 개시의 다른 실시 예에서, 포인트 클라우드 인코딩을 위한 인코딩 장치가 제공된다. 상기 인코딩 장치는 통신 인터페이스 및 상기 통신 인터페이스에 동작적으로 결합된 프로세서를 포함한다. 상기 프로세서는 3-D 포인트 클라우드를 나타내는 2-D 프레임들을 생성하도록 구성된다. 상기 2-D 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3-D 포인트 클라우드의 포인트들의 클러스터를 포함한다. 상기 포인트들의 클러스터는 상기 3-D 포인트 클라우드와 관련된 속성에 대응한다. 상기 패치들의 세트 중 하나의 패치, 상기 패치들의 세트 및 상기 2-D 프레임들은 상기 3-D 포인트 클라우드를 나타내는 개별 액세스 레벨들에 대응한다. 또한, 상기 프로세서는 상기 개별 액세스 레벨들 중 하나의 수정을 지시하는 메타데이터를 생성하도록 구성된다. 상기 프로세서는 사기 개별 액세스 레벨들 중 제1 액세스 레벨에 적용되는 상기 메타데이터의 수정이 가능할 때 시그널링 하는 제1 플래그, 및 상기 개별 액세스 레벨들 중 상기 제1 액세스 레벨의 수정과 관련된 상기 메타데이터의 존재를 지시하는 제2 플래그를 생성하도록 더 구성된다. 또한, 상기 프로세서는 압축된 비트스트림을 생성하기 위해 상기 2-D 프레임들, 상기 제1 플래그, 상기 제2 플래그, 및 메타데이터를 인코딩하도록 구성된다. 상기 통신 인터페이스는 상기 압축된 비트스트림을 송신하도록 구성된다.
본 개시의 또 다른 실시 예에서, 디코딩에 대한 방법이 제공된다. 상기 방법은 압축된 비트스트림을 수신하는 과정을 포함한다. 또한, 상기 방법은 상기 압축된 비트스트림을 3-D 포인트 클라우드를 나타내는 2-D 프레임들로 디코딩하는 과정을 포함한다. 상기 2-D 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3-D 포인트 클라우드의 포인트들의 클러스터를 포함한다. 상기 포인트들의 클러스터는 상기 3-D 포인트 클라우드와 관련된 속성에 대응한다. 상기 패치들의 세트 중 하나의 패치, 상기 패치들의 세트, 및 상기 2-D 프레임들은 상기 3-D 포인트 클라우드를 나타내는 개별 액세스 레벨들에 대응한다. 상기 방법은, 상기 개별 액세스 레벨들 중 제1 액세스 레벨에 적용되는 메타데이터의 수정이 가능할 때 시그널링 하는 제1 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정되었는지 여부를 식별하는 과정을 포함한다. 또한, 상기 방법은, 상기 개별 액세스 레벨들 중 상기 제1 액세스 레벨의 수정과 관련된 상기 메타데이터의 존재를 지시하는 제2 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정되었는지 여부를 식별하는 과정을 포함한다. 상기 제1 플래그 및 상기 제2 플래그가 상기 압축된 비트스트림에 포함되고 참으로 설정됨을 식별하는 것에 응답하여, 상기 방법은 상기 압축된 비트스트림으로부터 상기 메타데이터를 판독하는 과정을 포함한다. 상기 제1 플래그 또는 상기 제2 플래그 중 적어도 하나가 상기 압축된 비트스트림에 포함되지 않고 거짓으로 설정됨을 식별하는 것에 응답하여, 상기 방법은 미리 결정된 파라미터를 상기 메타데이터에 할당하는 과정을 포함한다. 또한, 상기 방법은, 상기 메타데이터에 기반하고 상기 2-D 프레임들의 세트 및 상기 메타데이터를 이용하여, 상기 3-D 포인트 클라우드를 생성하는 과정을 포함한다.
다른 기술적 특징들은 다음의 도면들, 설명들 및 청구항들로부터 당업자에게 쉽게 명백해질 수 있다.
본 개시 및 그의 특징들을 위한 보다 완전한 이해를 위해, 본 개시의 실시 예들은 첨부되는 도면들을 참조하여 설명될 것이다.
도 1은 본 개시의 실시 예들에 따른 예시적인 통신 시스템을 도시한다.
도 2는 본 개시의 일 실시 예에 따른 예시적인 전자 장치를 도시한다.
도 3은 본 개시의 일 실시 예에 따른 예시적인 전자 장치를 도시한다.
도 4는 본 개시의 일 실시 예에 따른 포인트 클라우드(point cloud) 및 메쉬(mesh)를 도시한다.
도 5a는 본 개시의 일 실시 예에 따른 인코더의 예시적인 블록도를 도시한다.
도 5b는 본 개시의 일 실시 예에 따른 디코더의 예시적인 블록도를 도시한다.
도 6a, 6b, 및 6c는 본 개시의 일 실시 예에 따른, 예시적인 3-D 포인트 클라우드 및 3-D 포인트 클라우드를 나타내는 2-D 프레임들을 도시한다.
도 7a는 본 개시의 일 실시 예에 따른 스케일링 된 해상도에서 패치를 수신하기 위한 예시적인 흐름도를 도시한다.
도 7b 및 7c는 본 개시의 일 실시 예에 따른 패치를 포함하는 비트스트림을 생성하고 비트스트림을 수신하는 과정을 도시한다.
도 8a는 본 개시의 일 실시 예에 따른 포인트 클라우드의 프로그레시브 비-직교 투영을 생성하기 위한 과정을 도시한다.
도 8b는 본 개시의 일 실시 예에 따른 디코더의 예시적인 블록도를 도시한다.
도 9는 본 개시의 일 실시 예에 따른 포인트 클라우드 밀도(density)의 적응적(adaptive) 영역(region)을 도시한다.
도 10은 본 개시의 일 실시 예에 따른 포인트 클라우드의 적응적 포인트 크기 및 포인트 형상을 도시한다.
도 11은 본 개시의 일 실시 예에 따른 포인트 클라우드를 디코딩하기 위한 예시적인 흐름도를 도시한다.
도 12는 본 개시의 일 실시 예에 따른 포인트 클라우드를 인코딩하기 위한 예시적인 흐름도를 도시한다.
아래의 구체적인 내용을 설명하기 전에, 본 특허 문서 전체에서 사용되는 특정 단어 및 어구들의 정의를 기재하는 것이 유리할 수 있다. 용어 "결합하다(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 내지 12, 및 본 특허 문서에서 본 개시의 원리를 설명하기 위해 사용되는 다양한 실시 예들은 단지 예시를 위한 것일 뿐, 어떠한 방식으로든 본 개시의 범위를 한정하는 의미로 해석되어서는 안 된다. 당업자들은 본 개시의 원리들이 임의의 적절하게 배치된 시스템 또는 장치에서 구현될 수 있음을 이해할 것이다.
가상 현실(virtual reality, VR)은 가상 장면의 렌더링(render)된 버전이다. 다양한 실시 예들에서, VR은 시각적 및 음성적 장면 모두의 렌더링된 버전이다. 렌더링은 시각적 자극을 모방하도록 설계되며, 관찰자 또는 사용자에게 가능한 한 자연스럽게 현실 세계의 음성적 감각 자극이 가능한 경우, 개인은 애플리케이션 또는 VR 장면에 의해 정의된 한계 내에서 이동한다. 예를 들어, VR은 머리 움직임과 상호 작용하는 몰입형 세계(immersive wolrd)에 사용자를 배치한다. 비디오 레벨에서, VR은 렌더링된 비디오의 시야각을 머리 움직임과 동기화하는 것과 함께, 가능한 한 많은 관측 시야(field of view, FOV)를 커버하는 비디오 경험을 제공함으로써 달성된다. 다른 많은 유형의 장치들이 이러한 경험을 제공할 수 있지만, 머리에 착용하는 디스플레이(head-mounted display, HMD)들은 사용자가 VR 장면을 보고 사용자의 머리 움직임에 기반하여 디스플레이된 컨텐츠를 조정할 수 있도록 하는 인기 있는 장치이다. 일반적으로, HMD는 장치에 통합되고 외부 컴퓨터들(테더링 됨) 또는 HMD에 삽입된 스마트 폰과 같은 장치(테더링 되지 않음)로 실행되는 전용 화면에 의존한다. 제1 접근 방식은 경량(lightweight) 스크린들을 활용하고 높은 컴퓨팅 용량으로부터 이익을 얻는다. 반면, 스마트폰 기반 시스템들은 높은 이동성을 활용하고 생산 비용을 감소시킬 수 있다. 두 가지 예들 모두에서, 생성된 비디오 경험은 동일하다. 본 명세서에서 사용되는, "사용자(user)"는 인간(human) 또는 전자 장치를 이용하는 다른 장치(예를 들면, 인공 지능 전자 장치)를 나타낼 수 있음에 유의하여야 한다.
포인트 클라우드(point cloud)는 VR 환경의 객체와 유사한 객체의 3-D 표현이다. 유사하게, 포인트 메쉬(mesh)는 VR 환경의 객체와 유사한 객체의 3-D 표현이다. 포인트 클라우드 또는 포인트 메쉬는 환경의 객체들의 표면과 같은 장면을 포함할 수 있다.
일반적으로, 포인트 클라우드는 좌표계에 의해 정의되는 데이터 포인트들의 집합이다. 예를 들어, 3-D 데카르트 좌표계에서, 포인트 클라우드의 각각의 포인트는 X, Y, 및 Z의 세 개의 좌표들에 의해 식별된다. 각각의 포인트가 세 개의 좌표들에 의해 식별되면, 3-D 환경 또는 공간에서의 정밀한 위치가 원점과 관련하여 식별된다. 원점은 X, Y, 및 Z 축이 교차하는 위치이다. 포인트 클라우드의 포인트들은 흔히 객체의 외부 표면을 나타낸다. 포인트 클라우드의 각각의 포인트는 세 개의 좌표 내에서에서 각각의 포인트의 기하학적 위치 및 색상, 강도, 노멀, 및 반사율 등과 같은 텍스처와 같은 속성에 의해 정의된다.
유사하게, 3-D 메쉬는 포인트 클라우드와 유사한 객체의 3-D 표현이다. 3-D 메쉬는 다각형으로 만들어진 객체의 외부 구조를 도시한다. 예를 들어, 3-D 메쉬는 객체의 형상을 정의하는 꼭짓점들, 모서리들, 및 면들의 집합이다. 다른 예에서, 메쉬(또는 포인트 클라우드)는 구 좌표계 상에 렌더링 될 수 있다. 다양한 실시 예들에서, 각각의 포인트는 구 내의 X, Y, 및 Z 좌표에 위치할 수 있다. 유사하게, 텍스처 좌표들 U 및 V는 이미지의 텍스처의 위치를 지시한다. 객체가 렌더링 되면, 메쉬의 꼭짓점들, 해당하는 텍스처 좌표들, 및 텍스처 이미지는, 메쉬를 3-D 기하학적 구조로 맵핑하는 그래픽 처리 장치에 입력된다. 사용자는 가상의 구 중심에 위치하는 FOV를 가질 수 있으며, 뷰포트(viewport)에 해당하는 360° 장면의 일부를 볼 수 있다. 다양한 실시 예들에서, 정육면체, 이십면체, 및 팔면체 등과 같이 구체 대신 다른 형상이 사용될 수 있다. 포인트 클라우드들 및 메쉬들은 도 4를 참조하여 이하에서 보다 상세히 도시되고 설명된다.
포인트 클라우드들 및 메쉬들은, 게임, 3-D 맵, 시각화(visualization), 의료 분야, 증강 현실(augmented reality, AR), VR, 자율 주행, 다중-뷰 재생, 6 자유도 몰입형 미디어와 같은 다양한 애플리케이션들에서 일반적으로 사용된다. 이하에서 사용되는 바와 같이, 용어 '포인트 클라우드'는 '3-D 포인트 클라우드' 및 '3-D 포인트 메쉬'를 의미한다.
하나의 전자 장치로부터 다른 장치에게 포인트 클라우드를 송신하는 것은 단일 포인트 클라우드와 관련된 데이터의 크기 및 복잡성(complexity)으로 인하여 흔히 상당한 대역폭을 요구한다. 포인트 클라우드의 송신은, 송신 이전에 데이터의 크기를 감소시키기 위한 특정 압축(compression) 기법을 요구한다. 예를 들면, 포인트 클라우드를 압축하는 것은 전용 하드웨어, 특정 압축 알고리즘들 또는 이들의 결합을 요구한다. 일반적으로, 포인트 클라우드에 대한 압축 알고리즘들은 이미지, 비디오, 및 VR 등과 같은 다른 멀티미디어 형식들의 압축 알고리즘들과 상이하다.
이상에서 설명한 바와 같이, 포인트 클라우드는 속성들을 가진 포인트들의 집합이며, 각각의 속성은 특정 개수의 비트들을 요구한다. 예를 들면, 10비트의 기하학적 구조 데이터를 가진 포인트 클라우드의 경우, 포인트당 30비트가 기하학적 좌표들(예를 들면, X, Y, 및 Z 좌표들)에 대해 사용될 수 있으므로, 각각의 좌표는 10비트이다. 유사하게, 8비트 색상 데이터를 가진 포인트 클라우드의 경우, 포인트당 24비트가 색상 좌표(예를 들면, 적색, 녹색, 청색 (RGB))에 대해 사용될 수 있으므로, 각각의 좌표는 8비트의 색상 좌표이다. 따라서, 10비트의 기하학적 속성 및 8비트의 색상 속성을 가진 단일 포인트는 54비트를 사용한다. 프레임이 100만 포인트들을 포함하는 경우, 프레임당 비트들의 개수는 5400만 비트(포인트당 54비트 × 프레임당 100만 포인트들)이다. 각각의 객체에 대해 초당 30개의 프레임들이 있다. 압축이 없는 시나리오 하에서, 하나의 전자 장치로부터 다른 전자 장치에게 포인트 클라우드를 송신하기 위하여, 초당 1.62 기가바이트(gigabytes)(프레임당 5400만 비트 × 초당 30프레임)가 사용된다. 따라서, 하나의 전자 장치로부터 다른 전자 장치에게 포인트 클라우드를 송신하기 위해서는 상당한 압축이 필요하다.
본 개시의 다양한 실시 예들은, 대역폭의 크기 제한으로 인하여, 소스 장치로부터 다른 장치(예를 들면, 사용자 장비(user equipment, UE))로의 포인트 클라우드 송신을 촉진 및 향상시키기 위하여 압축 포인트 클라우드가 필요하다는 것을 고려한다. 즉, 압축되지 않은 포인트 클라우드는 송신을 위해 상당한 대역폭을 사용하여 포인트 클라우드의 렌더링이 지연되는 것을 야기한다. 포인트 클라우드의 렌더링의 실시간 요구사항을 충족시키거나 지연 또는 시차를 감소시키기 위하여 특정 전용 하드웨어 구성 요소들이 사용될 수 있다. 그러나 이러한 하드웨어 구성 요소들은 비용이 많이 든다. 본 개시의 다양한 실시 예들에 따르면, 코덱을 이용하여 포인트 클라우드를 압축하는 것은 특정 유형의 하드웨어 뿐만 아니라 송신을 위한 대역폭을 감소시킨다. 예를 들면, 포인트 클라우드가 2-D 프레임에 적합(fit)하도록 조작될 때, HEVC, AVC, VP9, VP8, 및 JVNET 등과 같은 비디오 코덱들이 포인트 클라우드를 압축하기 위해 이용될 수 있다. 예를 들면, 포인트 클라우드는 원래의 3-D 형상에서 포인트 클라우드를 2-D로 나타내는 다수의 패치들로 조작된다.
따라서, 본 개시의 다양한 실시 예들은 포인트 클라우드와 같은 3-D 객체를 조작하기 위한 시스템 및 방법을 제공한다. 3-D 객체를 조작하는 것은, 3-D 객체를 2-D 프레임에 투영하여, 프레임이 압축되어 디스플레이 장치에게 송신될 수 있도록 하는 것을 포함하고, 2-D 프레임 내의 컨텐츠는 3-D 객체로 재구성되어 최종적으로 사용자가 3-D 객체를 볼 수 있도록 렌더링 될 수 있다. 다양한 2-D 압축 하드웨어 및 소프트웨어 구성 요소들은 포인트 클라우드가 다수의 2-D 비디오 프레임들에 투영된 이후 3-D 포인트 클라우드를 압축할 수 있다. 포인트 클라우드가 다수의 2-D 프레임들에 적합하도록 분해되면, 프레임들은 원래의 포인트 클라우드를 송신하는 것보다 더 적은 대역폭을 이용하여 송신될 수 있다.
3-D 객체는 인코더에 의해 조작되어 사용자가 볼 수 있도록 3-D 객체를 재구성하는 디코더에게 송신될 수 있다. 인코더는 3-D 객체를 하나 이상의 2-D 프레임들에 투영하고, 프레임들을 압축하고, 압축된 프레임들을 포함하는 압축된 비트스트림을 생성하여 송신한다. 디코더는 비트스트림을 수신하고, 프레임들을 압축 해제하고, 3-D 객체를 재구성하여 렌더링 함으로써 사용자가 디스플레이된 객체를 볼 수 있도록 한다.
본 개시의 다양한 실시 예들에 따르면, 비디오 코덱을 이용하여 포인트 클라우드 압축을 수행하기 위한 구조가 제공된다. 본 개시의 다양한 실시 예들은 비디오 코덱을 이용한 포인트 클라우드 압축을 위한 구조를 제공한다. 포인트 클라우드는 분해될 수 있으며, 포인트 클라우드의 다양한 속성들 또는 텍스처들 뿐만 아니라 포인트 클라우드의 각각의 포인트의 기하학적 구조에 대한 일정한 패치들을 포함하는 다수의 2-D 프레임들이 생성된다. 예를 들면, 포인트 클라우드는 분해되어 2-D 프레임에 맵핑 될 수 있다. 2-D 프레임은 다양한 비디오, 이미지 또는 양자 모두의 압축을 이용하여 압축될 수 있다.
본 개시의 다양한 실시 예들은 포인트 클라우드를 조작하기 위한 방법 및 시스템을 포함한다. 예를 들면, 본 개시의 다양한 실시 예들은 포인트 클라우드의 적응적 포인트 크기 렌더링 뿐만 아니라, 저밀도의 포인트 클라우드의 조작, 포인트 클라우드의 스케일링 및 포인트 클라우드의 관심 영역(region of interest, ROI) 식별을 포함한다. 본 개시의 다양한 실시 예들은 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 방법 및 시스템을 포함한다. 또한, 본 개시의 다양한 실시 예들은 스케일, 오프셋, 회전, 포인트 크기, 및 포인트 형상을 포함하는 기능들을 지원하는 메타데이터를 포함한다.
도 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) 서비스를 제공하는 임의의 적절한 컴퓨팅 또는 처리 장치들을 포함할 수 있다. 예를 들면, 각 서버 104는 하나 이상의 처리 장치들, 지시사항들 및 데이터를 저장하는 하나 이상의 메모리들, 및 네트워크 102를 통해 통신을 용이하게 하도록 구성된 하나 이상의 네트워크 인터페이스들을 포함할 수 있다. 보다 상세히 후술되는 바와 같이, 서버 104는 클라이언트 장치들 106 내지 116과 같은 하나 이상의 디스플레이 장치들에게 포인트 클라우드를 송신할 수 있다. 다양한 실시 예들에서, 각 서버 104는 인코더를 포함할 수 있다.
각 클라이언트 장치 106 내지 116은 네트워크 102를 통해 적어도 하나의 서버 또는 다른 컴퓨팅 장치(들)과 상호 작용하는 임의의 적절한 컴퓨팅 또는 처리 장치를 나타낸다. 예를 들어, 클라이언트 장치들 106 내지 116은 데스크톱 컴퓨터 106, 휴대 전화 또는 휴대 장치 108(예를 들면, 스마트폰), 개인 휴대 정보 단말기(personal digital assistant, PDA) 110, 랩톱 컴퓨터 112, 태블릿 컴퓨터 114 및 HMD 116을 포함한다. 그러나, 임의의 다른 장치 혹은 추가적인 클라이언트 장치들이 시스템 100에서 사용될 수 있다. 다양한 실시 예들에서, 각 클라이언트 장치 106 내지 116은 디코더를 포함할 수 있다.
이러한 예에서, 일부 클라이언트 장치들 108 내지 116은 네트워크 102와 간접적으로 통신하도록 구성될 수 있다. 예를 들면, 클라이언트 장치들 108 및 110(각각 휴대 장치들 108 및 PDA 110)은 셀룰러(cellular) 기지국들 또는 eNodeB(eNB)들과 같은 하나 이상의 기지국들 118을 통해 통신하도록 구성될 수 있다. 휴대 장치 108은 스마트폰들을 포함한다. 또한, 클라이언트 장치들 112, 114 및 116(각각 랩톱 컴퓨터, 태블릿 컴퓨터 및 HMD)은 IEEE 802.11 무선 액세스 포인트와 같은 하나 이상의 무선 액세스 포인트들 120을 통해 통신하도록 구성될 수 있다. 보다 상세히 후술되는 바와 같이, HMD 116은 하나 이상의 포인트 클라우드를 포함하는 360°장면을 디스플레이 할 수 있다. 이러한 직접 및 간접 통신 매체는 설명을 위한 목적으로 도시되었음을 주의하여야 한다. 이와 같이, 클라이언트 장치 106 내지 116 각각은 네트워크 102와 직접적으로 통신하도록 구성되거나 임의의 적절한 중간(intermediate) 장치(들) 또는 네트워크(들)을 통해 네트워크 102와 간접적으로 통신하도록 구성될 수 있다. 다양한 실시 예들에서, 서버 104 또는 임의의 클라이언트 장치들 106 내지 114는 포인트 클라우드를 압축하고, 임의의 클라이언트 장치들 106 내지 116과 같은 다른 클라이언트 장치들에게 데이터를 송신하기 위해 이용될 수 있다.
다양한 실시 예들에서, 휴대 장치들 108 (또는 임의의 다른 클라이언트 장치들 106 내지 116)은, 예를 들면, 서버 104와 같은 다른 장치에게 정보를 안전하고(securely) 효율적으로(efficiently) 송신할 수 있다. 휴대 장치 108 (또는 임의의 다른 클라이언트 장치들 106 내지 116)은 브래킷(bracket)들을 통해 헤드셋에 부착되는 경우에 VR 디스플레이로서 기능할 수 있으며, HMD 116과 유사하게 기능할 수 있다. 휴대 장치 108 (또는 임의의 다른 클라이언트 장치 106 내지 116)은 자신과 서버 104 간의 정보 송신을 트리거(trigger) 할 수 있다.
도 1은 시스템 100의 일 예를 도시하고 있으나, 다양한 변경들이 도 1에서 이루어질 수 있다. 예를 들면, 시스템 100은 임의의 적절한 배치로 임의의 수의 각 구성 요소를 포함할 수 있다. 일반적으로, 컴퓨팅 및 통신 시스템은 다양하게 구성될 수 있고, 도 1은 임의의 특정 구성으로 본 개시의 범위를 제한하지 않는다. 도 1은 본 특허 문헌에 개시된 다양한 특징들이 이용될 수 있는 하나의 운영 환경을 도시하고 있지만, 이러한 특징들은 임의의 다른 적절한 시스템에서 이용될 수 있다.
본 개시에서 제공되는 프로세스들 및 시스템들은 클라이언트 장치들 106 내지 116 또는 서버 104가 포인트 클라우드 또는 그들의 조합을 압축, 송신, 수신, 렌도링할 수 있도록 한다. 예를 들면, 서버 104는 클라이언트 장치들 106 내지 116에게 포인트 클라우드 데이터를 압축하여 송신할 수 있다. 다른 예로, 임의의 클라이언트 장치들 106 내지 116은 임의의 클라이언트 장치들 106 내지 116 또는 서버 104에게 포인트 클라우드 데이터를 압축하여 송신할 수 있다.
도 2 및 도 3은 본 개시의 일 실시 예에 따른 컴퓨팅 시스템에서의 예시적인 장치들을 도시한다. 특히, 도 2는 서버 200의 일 예를 도시하고, 도 3은 전자 장치 300의 일 예를 도시한다. 서버 200은 도 1의 서버 104를 나타낼 수 있고, 전자 장치 300은 도 1의 클라이언트 장치들 106 내지 116 중 하나 이상을 나타낼 수 있다.
서버 200은 하나 이상의 로컬 서버들, 하나 이상의 압축 서버들, 또는 하나 이상의 인코딩 서버들을 나타낼 수 있다. 도 2에 도시된 바와 같이, 서버 200은 버스 시스템(bus system) 205를 포함하고, 이는 적어도 하나의 프로세서(들)(processor(s)) 210, 적어도 하나의 저장 장치(들) 215, 적어도 하나의 통신 인터페이스 220, 및 적어도 하나의 입/출력(input/output, I/O)부 225 간의 통신을 지원하도록 구성된다. 다양한 실시 예들에서, 서버 200은 인코더일 수 있다.
프로세서 210은 메모리 230에 저장될 수 있는 지시사항들(instructions)을 실행하도록 구성된다. 메모리 230에 저장된 지시사항들은 포인트 클라우드를 분해하고(decompose) 포인트 클라우드를 압축하기 위한 지시사항들을 포함할 수 있다. 또한, 메모리 230에 저장된 지시사항들은 비트스트림(bitstream)을 생성하기 위하여 포인트 클라우드를 인코딩하기 위한 지시사항들을 포함할 수 있다. 또한, 메모리 230에 포함된 지시사항들은 도 1의 HMD 116과 같은 VR 헤드셋을 통해 보여지는 경우 전-방향(omnidirectional) 360°장면에서 포인트 클라우드를 렌더링하기 위한 지시사항들을 포함할 수 있다. 프로세서 210은 임의의 적절한 배치로 임의의 적절한 개수(들) 및 유형(들)의 프로세서들 또는 다른 장치들을 포함할 수 있다. 예시적인 프로세서(들)의 유형은 마이크로프로세서들, 디지털 신호 프로세서들, 필드 프로그래밍 가능한 게이트 어레이(field programmable gate arrays), 주문형 집적 회로들(application specific integrated circuits), 및 이산 회로를 포함한다.
메모리 230 및 영구 저장 장치(persistent storage) 235는 저장 장치들 215의 예시들이며, 이는 정보(예를 들면, 일시적 또는 영구적 기반의 데이터, 프로그램 코드, 또는 다른 적절한 정보)의 저장 및 검색을 용이하게 할 수 있는 임의의 구조(들)을 나타낸다. 메모리 230은 랜덤 액세스 메모리 또는 임의의 다른 적절한 휘발성 또는 비 휘발성 저장 장치(들)을 나타낼 수 있다. 영구 저장 장치 235는 읽기 전용 메모리(read- only memory), 하드 드라이브, 플래시 메모리, 또는 광 디스크와 같은 데이터의 장기간(long-term) 저장을 지원하는 하나 이상의 구성 요소들 또는 장치들을 포함할 수 있다.
통신 인터페이스 220은 다른 시스템들 또는 장치들과의 통신을 지원하도록 구성된다. 예를 들면, 통신 인터페이스 220은 네트워크 인터페이스 카드(interface card) 또는 도 1의 네트워크 102를 통한 통신을 용이하게 하는 무선 송수신기를 포함할 수 있다. 통신 인터페이스 220은 임의의 적절한 물리적 또는 무선 통신 링크(들)을 통하여 통신을 지원하도록 구성된다.
입/출력부 225는 데이터의 입력 및 출력을 허용하도록 구성된다. 예를 들면, 입/출력부 225는 키보드, 마우스, 키패드, 터치 스크린, 모션 센서들, 또는 다른 적절한 입력 장치를 통한 사용자 입력에 대한 연결을 제공하도록 구성될 수 있다. 또한, 입/출력부 225는 디스플레이, 프린터, 또는 다른 적절한 출력 장치에게 출력을 송신하도록 구성될 수 있다.
다양한 실시 예들에서, 서버 200은 이하에서 더 상세히 설명되는 바와 같이, 포인트 클라우드의 압축을 구현하도록 구성된다. 다양한 실시 예들에서, 서버 200은 포인트 클라우드의 3차원에 대응하는 다수의 2-D 프레임들을 생성하도록 구성된다. 다양한 실시 예들에서, 서버 200은 포인트 클라우드의 3차원을 2-D로 맵핑하도록 구성된다. 다양한 실시 예들에서, 서버 200은 포인트 클라우드를 나타내는 압축된 2차원 프레임들을 인코딩함으로써 압축된 비트스트림을 생성하도록 구성된다.
도 2는 도 1의 서버 104를 나타내는 것으로 설명되었으나, 이와 동일한 구조 또는 유사한 구조가 다양한 클라이언트 장치들 106 내지 116 중 하나 이상에 사용될 수 있음에 유의해야 한다. 예를 들면, 데스크톱 컴퓨터 106 또는 랩톱 컴퓨터 112는 도 2에 도시된 구조와 동일하거나 유사한 구조를 가질 수 있다.
도 3은 본 개시의 일 실시 예에 따른 전자 장치 300을 도시한다. 도 3에 도시된 전자 장치 300의 실시 예는 단지 설명을 위한 것이며, 다른 실시 예들이 본 개시의 범위를 벗어나지 않고 이용될 수 있다. 전자 장치 300은 다양한 구성을 가질 수 있으며, 도 3은 본 개시의 범위를 전자 장치의 임의의 특정한 구현으로 제한하지 않는다. 다양한 실시 예들에서, 도 1의 하나 이상의 클라이언트 장치들 106 내지 116은 전자 장치 300과 동일하거나 유사한 구성을 포함할 수 있다. 다양한 실시 예들에서, 전자 장치 300은 인코더이거나, 디코더이거나, 또는 양자 모두일 수 있다.
다양한 실시 예들에서, 전자 장치 300은 데이터 송신, 이미지 또는 비디오 압축, 이미지 또는 비디오 압축 해제, 인코딩, 디코딩, 및 미디어 렌더링 애플리케이션들과 함께 이용될 수 있다. 전자 장치 300은, 예를 들어, 무선 단말, 데스크톱 컴퓨터(도 1의 데스크톱 컴퓨터 106과 유사함), 휴대 장치(도 1의 휴대 장치 108과 유사함), PDA(도 1의 PDA 110과 유사함), 랩톱 컴퓨터(도 1의 랩톱 컴퓨터 112와 유사함), 태블릿(도 1의 태블릿 컴퓨터 114와 유사함), 머리에 착용하는 디스플레이(도 1의 HMD 116과 유사함) 등과 같은 이동 통신 장치가 될 수 있다.
도 3에 도시된 바와 같이, 전자 장치 300은 안테나 305, 무선 주파수(radio frequency, RF) 송수신기 310, 송신(transmit, TX) 처리 회로 315, 마이크로폰 320, 및 수신(receive, RX) 처리 회로 325를 포함한다. 또한, 전자 장치 300은 스피커 330, 하나 이상의 프로세서들 340, 입/출력(I/O) 인터페이스(interface, IF) 345, 입력 350, 디스플레이 355, 및 메모리 360을 포함한다. 메모리 360은 기본 운영 체제(operating system, OS) 프로그램 361 및 하나 이상의 애플리케이션들 362, 및 포인트 클라우드들 363을 포함한다.
RF 송수신기 310은 시스템의 다른 구성 요소에 의해 송신된 입력 RF 신호를 안테나 305로부터 수신하도록 구성된다. 예를 들어, RF 송수신기 310은 네트워크 102(예를 들면, WI-FI, BLUETOOTH, 셀룰러, 5G, LTE, LTE-A, WiMAX, 또는 임의의 다른 유형의 무선 네트워크들)의 액세스 포인트(예를 들면, 기지국, WI-FI 라우터, BLUETOOTH 장치)로부터, BLUETOOTH 또는 WI-FI 신호에 의해 송신된 RF 신호를 수신하도록 구성된다. RF 송수신기 310은 중간 주파수(intermediate frequency, IF) 또는 기저 대역(base band) 신호를 생성하기 위해 입력 RF 신호를 다운컨버팅(down-convert) 할 수 있다. IF 또는 기저 대역 신호는, 기저 대역 또는 IF 신호, 또는 이들의 조합을 필터링, 디코딩, 또는 디지털화하여 처리된 기저 대역 신호를 생성할 수 있는 RX 처리 회로 325에 송신된다. RX 처리 회로 325는 처리된 기저 대역 신호를 스피커 330에게 송신하거나(예를 들면, 음성 데이터 처리를 위하여), 또는 추가적인 처리를 위하여 프로세서 340에게 송신하도록 구성된다(예를 들면, 웹 브라우징 데이터).
TX 처리 회로 315는 마이크 320으로부터 아날로그 또는 디지털 음성 데이터를 수신하거나, 또는 프로세서 340으로부터 다른 출력 기저 대역 데이터를 수신하도록 구성된다. 출력 기저 대역 데이터는 웹 데이터, 이메일, 대화형 비디오(interactive video) 게임 데이터를 포함할 수 있다. TX 처리 회로 315는 처리된 기저 대역 또는 IF 신호를 생성하기 위하여, 출력 기저 대역 데이터를 인코딩, 멀티플렉싱, 디지털화, 또는 이들의 조합을 수행하도록 구성된다. RF 송수신기 310은 TX 처리 회로 315로부터 처리된 출력 기저 대역 또는 IF 신호를 수신하도록 구성되고, 기저 대역 또는 IF 신호를 안테나 305를 통해 송신되는 RF 신호로 상향 변환(up-convert)하도록 구성된다.
프로세서 340은 하나 이상의 프로세서들 또는 다른 처리 장치들을 포함할 수 있고, 전자 장치 300의 전반적인 동작을 제어하기 위하여 메모리 360에 저장된 기본 OS 프로그램 361을 실행하도록 구성될 수 있다. 예를 들면, 프로세서 340은 잘 알려진 원리에 따라, RF 송수신기 310, RX 처리 회로 325, 및 TX 처리 회로 315에 의해 순방향 채널 신호들의 수신 및 역방향 채널 신호들의 송신을 제어하도록 구성될 수 있다. 또한, 프로세서 340은 수신된 포인트 클라우드를 압축 해제 및 생성하는 것과 같이 메모리 360에 내장된 다른 애플리케이션들 362를 실행하도록 구성될 수 있다.
프로세서 340은 메모리 360에 저장된 지시사항들을 실행하도록 구성될 수 있다. 프로세서 340은 임의의 적절한 배치로 임의의 적절한 개수(들) 및 유형(들)의 프로세서들 또는 다른 장치들을 포함할 수 있다. 예를 들면, 일부 실시 예들에서, 프로세서 340은 적어도 하나의 마이크로프로세서 또는 마이크로제어기를 포함한다. 프로세서 340의 예시적인 유형들은 마이크로프로세서들, 마이크로제어기들, 디지털 신호 프로세서들, 필드 프로그래밍 가능한 게이트 어레이들, 주문형 집적 회로들 및 이산 회로를 포함한다.
또한, 프로세서 340은 이미지 캡쳐 및 처리를 제공함으로써, 수신, 저장 및 적시(timely) 지시 등의 동작과 같이, 메모리 360에 내재된 다른 프로세스들 및 프로그램들을 실행하도록 구성될 수 있다. 프로세서 340은 실행 절차에 의해 요구되는 바와 같이 메모리 360의 내부 또는 외부로 데이터를 이동하도록 구성될 수 있다. 일부 실시 예들에서, 프로세서 340은 OS 프로그램 361에 기반하여, 또는 eNB들(도 1의 기지국들 118과 유사함) 또는 운영자(operator)로부터 수신한 신호들에 응답하여 복수의 애플리케이션들 362를 실행하도록 구성된다. 또한, 프로세서 340은 전자 장치 300에게 클라이언트 장치들 106 내지 116과 같은 다른 장치들에 연결하는 능력을 제공하는 I/O IF 345에 연결될 수 있다. I/O IF 345는 이러한 보조 장치들(accessories) 및 프로세서 340 간의 통신 경로이다.
또한, 프로세서 340은 입력 350에 연결될 수 있다. 전자 장치 300의 운영자는 전자 장치 300에 데이터 또는 입력을 입력하기 위해 입력 350을 이용할 수 있다. 입력 350은 키보드, 터치 스크린, 마우스, 트랙-볼(track-ball), 음성 입력, 또는 사용자가 전자 장치 300과 상호 작용하도록 허용하는 사용자 인터페이스의 역할을 수행할 수 있는 임의의 다른 장치일 수 있다. 예를 들면, 입력 350은 음성 인식 처리를 포함할 수 있고, 이에 의하여 사용자는 마이크로폰 320을 통해 음성 명령을 입력할 수 있다. 다른 예로, 입력 350은 터치 패널, (디지털) 펜 센서, 키, 또는 초음파 입력 장치를 포함할 수 있다. 터치 패널은, 예를 들어, 정전 용량(capacitive) 방식, 감압(pressure sensitive) 방식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식으로 터치 입력을 인식하도록 구성될 수 있다. 예를 들면, 정전 용량 방식에서, 입력 350은 터치 또는 근접(proximity)을 인식할 수 있다. 또한, 입력 350은 제어 회로를 포함할 수 있다. 입력 350은 프로세서 340에 추가적인 입력을 제공함으로써, 센서(들) 365 및/또는 카메라와 연관될 수 있다. 이하에서 더 상세히 설명되는 바와 같이, 센서 365는 관성(inertial) 센서들(예를 들어, 가속도계들(accelerometers), 자이로스코프(gyroscope) 및 자력계(magnetometer)), 광 센서들, 모션 센서들, 카메라들, 압력 센서들, 심박수 센서들, 고도계들 등을 포함한다. 예를 들어, 입력 350은 센서 365와 관련된 모션 센서에 의해 검출된 움직임을 입력으로써 이용할 수 있다.
또한, 프로세서 340은 디스플레이 355에 결합된다. 디스플레이 355는 액정 디스플레이(liquid crystal display, LCD), 발광 다이오드(light-emitting diode, LED) 디스플레이, 유기 발광 다이오드(organic LED, OLED), 능동형 유기 발광 다이오드(active matrix OLED, AMOLED), 또는 웹사이트들, 비디오들, 게임들, 이미지들 등과 같은 텍스트 및/또는 그래픽들을 렌더링할 수 있는 다른 디스플레이일 수 있다. 디스플레이 355는 HMD 에 적합하도록 크기가 결정될 수 있다. 디스플레이 355는 단일 디스플레이 스크린 또는 입체 디스플레이를 생성할 수 있는 다수의 디스플레이 스크린들일 수 있다. 다양한 실시 예들에서, 디스플레이 355는 헤드-업 디스플레이(heads-up display, HUD)이다.
메모리 360은 프로세서 340에 연결된다. 메모리 360의 일부는 랜덤 액세스 메모리를 포함할 수 있고, 메모리 360의 다른 일부는 플래시 메모리 또는 다른 읽기 전용 메모리를 포함할 수 있다.
메모리 360은 정보(예를 들면, 비영구적 또는 영구적 기반의 데이터, 프로그램 코드, 및/또는 다른 적절한 정보)를 저장하고 정보의 검색을 용이하게 할 수 있는 임의의 구조(들)을 나타내는 영구 저장 장치(도시되지 않음)를 포함할 수 있다. 메모리 360은 읽기 전용 메모리, 하드 드라이브, 플래시 메모리, 또는 광 디스크와 같은 데이터의 장기간 저장을 지원하는 하나 이상의 구성 요소들 또는 장치들을 포함할 수 있다. 포인트 클라우드들 363은 다양한 3-D 포인트 클라우드들, 3-D 메쉬들(meshes), 3-D 객체들 등을 포함할 수 있다. 다양한 실시 예들에서, 포인트 클라우드들 363은 하나 이상의 2-D 프레임들에서 3-D 객체의 패치들의 투영(projection)들을 포함할 수 있다. 또한, 포인트 클라우드들 363은 디스플레이 355 상에 렌더링 될 수 있는 하나 이상의 3-D 포인트 클라우드들을 포함할 수 있다.
전자 장치 300은 물리적인 양을 계량(meter)하거나 또는 전자 장치 300의 활성 상태를 검출하고 계량된 또는 검출된 정보를 전기적인 신호로 변환하는 하나 이상의 센서들 365를 더 포함할 수 있다. 예를 들어, 센서(들) 365는 터치 입력을 위한 하나 이상의 버튼들(헤드셋 또는 전자 장치 300에 위치함), 하나 이상의 카메라들, 동작(gesture) 센서, 안구 추적 센서(eye tracking sensor), 자이로스코프 또는 자이로 센서, 기압 센서, 자기 센서(magnetic sensor) 또는 자력계(magnetometer), 가속도 센서(acceleration sensor) 또는 가속도계(accelerometer), 그립 센서, 근접 센서, 컬러 센서(color sensor)(예를 들면, 적녹청(red-green-blue, RGB) 센서), 생체 센서, 온도/습도 센서, 조도 센서, 자외선 센서, 근전도(electrocardiogram, ECG) 센서, 적외선 센서, 초음파 센서, 홍채 센서, 지문 센서 등을 포함할 수 있다. 센서(들) 365는 내부에 포함된 센서들 중 적어도 하나를 제어하기 위한 제어 회로를 더 포함할 수 있다. 이하에서 더 상세히 설명되는 바와 같이, 이들 센서(들) 365 중 하나 이상은, 사용자 인터페이스(user interface, UI)를 제어하고, UI 입력들을 검출하고, 방향을 결정하고, 3차원 컨텐츠 디스플레이 식별을 위해 사용자의 방향에 대향(facing)하는 것에 이용될 수 있다. 이들 센서(들) 365 중 임의의 센서는 전자 장치 300의 내부, 전자 장치 300과 동작적으로 연결된 보조 장치 내부, 전자 장치 300을 유지하도록 구성된 헤드셋 내부, 또는 전자 장치 300이 헤드셋을 포함하는 단일 장치 내에 위치될 수 있다.
이하에서 더 상세히 설명되는 바와 같이, 이러한 예시적인 실시 예에서, 전자 장치 300은 인코딩 되고 압축된 비트스트림을 수신한다. 전자 장치 300은 수신된 비트스트림을 다수의 2-D 프레임들로 디코딩한다. 다양한 실시 예들에서, 디코딩된 비트스트림들은 또한 점유 맵(occupancy map)을 포함할 수 있다. 또한 디코딩된 비트스트림은 특정 메타데이터가 포인트 클라우드를 수정(modify)하기 위해 적용되는지 여부를 지시하는 플래그들을 포함할 수 있다. 전자 장치 300은 다수의 3-D 프레임들을 압축 해제하도록 구성된다. 다수의 2-D 프레임들은 포인트 클라우드의 각 포인트의 지리적인 위치와 같은 좌표를 지시하는, 프레임들의 세트를 포함할 수 있다. 예를 들어, 프레임들은 2-D로 표현되는 포인트 클라우드의 각 기하학적 포인트의 하나 이상의 패치들과 같은, 하나 이상의 픽토리얼 표시(pictorial depiction)을 포함할 수 있다. 프레임들의 다른 세트는, 각 포인트의 색상과 같이, 각 포인트와 연관되는 텍스쳐를 포함할 수 있다. 전자 장치 300은 3차원으로 포인트 클라우드를 재구성 및 렌더링하도록 구성될 수 있다.
이하에서 더 상세히 설명되는 바와 같이, 이러한 예시적인 실시 예에서, 전자 장치 300은 서버 200과 유사할 수 있고, 포인트 클라우드를 인코딩하도록 구성될 수 있다. 전자 장치 300은 포인트 클라우드의 기하학적 구조 및 텍스처를 나타내는 다수의 2-D 프레임들을 생성하도록 구성될 수 있다. 포인트 클라우드는 하나 이상의 2-D 프레임들에 맵핑될 수 있다. 예를 들어, 프레임들의 하나의 세트는 패치들에 표시된(depicted) 기하학적 포인트들을 포함할 수 있다. 다른 예에서, 프레임들의 다른 세트는 포인트 클라우드의 텍스처 또는 색상 또는 양자 모두를 포함할 수 있다.
2-D 프레임들은 3-D 포인트 클라우드를 나타내는 각각의 계층적(haierarchical) 레벨들을 나타낸다. 예를 들어, 가장 낮은 레벨은 프레임 상에 위치한 단일 패치일 수 있다. 단일 패치는 3-D 포인트 클라우드의 속성(attribute)을 나타내는 포인트들의 단일 클러스터이다. 예를 들어, 패치의 포인트들의 클러스터는, 포인트 클라우드 내의 각 포인트의 지리적인 위치와 같은, 포인트들의 기하학적 구조를 나타낼 수 있다. 다른 예에서, 패치의 포인트들의 클러스터는 클러스터의 각 포인트와 관련된 색상 값을 나타낼 수 있다. 다음 레벨은 단일 2-D 프레임일 수 있다. 단일 2-D 프레임은 3-D 포인트 클라우드를 나타내는 하나 이상의 패치들을 포함한다. 다음 레벨은 2-D 프레임들의 그룹(group of 2-D frames, GOF)이다. 다음 레벨은 시퀀스이다. 시퀀스는 둘 이상의 GOF를 포함한다. 가장 큰 레벨은 둘 이상의 시퀀스들을 포함하는 비디오이다. 다양한 실시 예들에서, 더 많거나 더 적은 레벨들이 3-D 포인트 클라우드를 나타낼 수 있다. 예를 들어, 레벨들은 패치, 프레임 및 시퀀스에 의해 표현될 수 있다. 다른 예에서, 패치 및 패치들의 그룹(group of patches)으로 지칭되는 프레임 사이에 중간 레벨이 존재할 수 있다.
전자 장치 300은 프레임들 내의 메타데이터를 식별하도록 구성될 수 있다. 메타데이터는 상이한 계층적 레벨들에서 시그널링 될 수 있다. 상이한 레벨들은, 특정 메타데이터가 각 개별적인 레벨에 적용되는지 여부를 지시하기 위하여, 하나 이상의 플래그들을 할당하는 데에 이용된다. 예를 들면, 프레임에 적용되는 메타데이터는 프레임 내의 각 패치를 수정한다. 다른 예에서, GOF에 적용되는 메타데이터는 이후 GOF의 각 프레임 내의 각 패치에 적용된다. 다른 예에서, 시퀀스에 적용되는 메타데이터는 이후 특정 시퀀스 내에서 GOF의 각 프레임 내의 각 패치에 적용된다. 다른 예에서, 패치 레벨에서 적용되는 메타데이터는 특정 프레임의 특정 패치에 적용될 수 있다.
도 2 및 도 3은 컴퓨팅 시스템에서 장치들의 예들을 도시하지만, 다양한 변경들이 도 2 및 도 3에 대해 이루어질 수 있다. 예를 들면, 특정한 필요에 따라 도 2 및 도 3의 다양한 구성 요소들이 결합되거나, 더 세분화되거나, 생략될 수 있고, 추가적인 구성 요소들이 추가될 수 있다. 특정한 일 예에서, 프로세서 340은 하나 이상의 중앙 처리 장치들(central processing units, CPUs) 및 하나 이상의 그래픽 처리 장치들(graphics processing units, GPUs)와 같이 다수의 프로세서들로 분할될 수 있다. 또한, 컴퓨팅 및 통신 네트워크들과 마찬가지로, 전자 장치들 및 서버들은 다양한 구성으로 제공될 수 있으며, 도 2 및 도 3은 어떠한 특정 전자 장치 또는 서버로 본 발명을 제한하지 않는다.
도 4는 본 개시의 일 실시 예에 따른 포인트 클라우드 405 및 예시적인 메쉬 410을 도시한다. 포인트 클라우드 405는 포인트 클라우드의 일 예를 도시한다. 포인트 클라우드는 3-D 공간에서 객체를 시각적으로 정의하는 디지털화된 데이터이다. 도시된 바와 같이, 포인트 클라우드 405는 다수의 포인트들을 포함하며, 각각의 포인트는 지형적인 맵(topographical map)과 유사한, 객체의 외부 좌표를 나타낸다. 예를 들면, 각각의 포인트는 하나 이상의 속성들을 포함할 수 있다. 속성들은 지리적인 위치와 같은 기하학적 구조를 포함할 수 있다. 또한, 각각의 포인트의 속성들은 색상, 강도(intensity), 텍스처, 동작(motion), 재료 특성 등을 포함할 수 있다. 기하학적 구조 외의 속성들은, 포인트 클라우드의 각각의 포인트와 관련된 다양한 측면들 및 특성들을 나타내는 텍스처와 같은 텍스처로서 지칭될 수 있다.
유사하게, 메쉬 410은 3-D 메쉬의 일 예를 도시한다. 메쉬 410은 3-D 공간에서 객체를 시각적으로 정의하는 디지털화된 데이터이다. 메쉬 410의 픽토리얼 표시는 다양한 포인트들 간 정보의 다각형 또는 삼각형 상호 연결에 의해 정의된다. 각각의 다각형은 속성과 같은 다양한 정보를 포함할 수 있다. 속성은 기하학적 구조 및 텍스처를 포함할 수 있다. 텍스처는 색상 반사(color reflectiveness), 동작 등을 포함한다. 예를 들면, 위상 데이터(topological data)는 꼭짓점들(vertices), 가장자리들(edges), 및 면들(faces)의 인접성과 같은 꼭짓점들 간의 연결 정보(connectivity information)를 제공한다. 기하학적 정보는 3-D 공간에서 각각의 꼭짓점의 기하학적 위치를 제공한다. 속성 정보는 각각의 개별 꼭짓점에 대한 일반 정보, 색상 정보, 및 애플리케이션 종속(application dependent) 정보를 제공한다. 각각의 다각형의 꼭짓점들은 포인트 클라우드 405의 포인트들과 유사하다. 메쉬 410의 각각의 다각형은 객체의 외부 표면을 나타낸다.
포인트 클라우드들(예를 들면, 포인트 클라우드 405) 및 메쉬들(예를 들면, 메쉬 410)은 하나의 컴퓨팅 장치로부터 다른 컴퓨팅 장치에게 송신하기 위해 상당한(substantial) 대역폭을 활용(utilize)하도록 구성된다. 압축은 저장 및 대역폭 요구를 감소시키기 위하여 필요하다. 예를 들면, 손실 압축(lossy compression)은, 데이터의 크기를 감소시키면서도 허용 가능한 수준에서 왜곡을 유지하면서 포인트 클라우드 및 메쉬를 압축할 수 있다.
도 5a는 본 개시의 일 실시 예에 따른 인코더 500의 예시적인 블록도를 도시한다. 도 5b는 본 개시의 일 실시 예에 따른 디코더 550의 예시적인 블록도를 도시한다.
인코더 500은 도 1의 서버 104 및 도 1의 임의의 클라이언트 장치들 106 내지 116과 유사할 수 있고, 도 3의 전자 장치 300 뿐 아니라 도 2의 서버 200과 유사한 내부 구성 요소들을 포함할 수 있다. 디코더 550은 도 1의 임의의 클라이언트 장치들 106 내지 116과 유사할 수 있고, 도 3의 전자 장치 300과 유사한 내부 구성 요소들을 포함할 수 있다. 인코더 500은 도 1의 네트워크 102를 통해 디코더 550과 통신할 수 있다. 인코더 500 및 디코더 550의 실시 에는 단지 설명을 위한 것이다. 다른 실시 예들이 본 개시의 범위를 벗어나지 않는 범위에서 이용될 수 있다.
인코더 500은 포인트 클라우드, 메쉬, 또는 양자 모두를 인코딩된 비트스트림으로 압축, 인코딩 및 송신할 수 있다. 다양한 실시 예들에서, 인코더 500은 포인트 클라우드 또는 메쉬가 맵핑되거나 투영되는 다수의 2-D 프레임들을 생성하도록 구성된다. 예를 들면, 포인트 클라우드는 펼쳐지고(unwrapped) 다수의 2-D 프레임들에 맵핑된다. 예를 들어, 포인트 클라우드는 하나의 축(예를 들면, y축)을 따라 펼쳐질 수 있고, 이미지는 남은 축(예를 들면, x축 및 z축)을 따라 맵핑된다. 다른 예에서, 3-D 포인트 클라우드의 포인트들의 클러스터는 2-D 프레임에 투영될 수 있다. 예를 들면, 3-D 포인트 클라우드의 하나의 포인트의 기하학적 좌표 Z는 2-D 프레임의 X 좌표 및 Y 좌표에 투영될 수 있으며, 여기서 2-D 프레임의 X 좌표 및 Y 좌표는 3-D 포인트 클라우드의 포인트의 X 좌표 및 Y 좌표에 대응한다. 다양한 실시 예들에서, 인코더 500은 포인트 클라우드가 2-D 프레임에 맵핑된 경우 포인트 클라우드의 각 픽셀의 위치를 지시하는 점유 맵(예를 들면, 점유 맵 프레임들 522)을 생성하도록 구성된다. 예를 들면, 점유 맵 프레임들 522에 포함된 점유 맵은 각 프레임의 유효한(valid) 포인트들 및 유효하지 않은(invalid) 포인트들을 지시한다. 유효하지 않은 포인트들은 포인트 클라우드의 하나의 포인트에 대응하지 않는 프레임의 위치들이며, 유효 포인트는 3-D 포인트 클라우드의 하나의 포인트에 대응하는 프레임의 위치이다. 점유 맵 프레임들 522는 점유 맵을 포함하는 하나 이상의 프레임들을 나타낸다.
다양한 실시 예들에서, 인코더 500은 3-D 포인트 클라우드 502를 <수학식 1>로 나타내도록 구성될 수 있다.
<수학식 1>에서, (xn, yn, zn)은 3-D 공간에서 3-D 포인트 클라우드 502의 포인트 'n'의 X, Y, 및 Z 좌표들을 나타낸다. 또한, (rn, gn, bn)은 3-D 포인트 클라우드 502의 포인트 'n'의 색상들을 나타낸다. 유사하게, (nxn, nyn, nzn)은 3-D 공간에서 3-D 포인트 클라우드 502의 포인트 'n'의 노멀을 나타낸다. 이에 더하여, (un, vn)은 3-D 포인트 클라우드 502의 포인트 'n'의 텍스처를 나타낸다. 다양한 실시 예들에서 포인트 'n'은 <수학식 1>에서 주어진 속성들의 서브세트를 가질 수 있다. 다양한 실시 예들에서, 포인트 'n'은 재료 특성, 동작 등과 같은 추가적인 속성들을 가질 수 있다. 이러한 속성들은, 하나 이상의 기하 구조 프레임들 514 및 하나 이상의 텍스처 프레임들 518과 같은 상이한 프레임들과 연관될 수 있다. 추가적인 프레임들의 세트들은, 재료 특성, 동작 등과 같은 추가적인 속성들을 나타내기 위하여 프레임 패킹 512에 의해 생성될 수 있다.
함수 g(y, z)는 기하 구조 프레임들 514 중 하나와 같은, 기하 구조 프레임을 나타낼 수 있다. 포인트 pn과 같은 포인트의 직교 투영(orthogonal projection)은 pn=<xn, yn, zn>으로 표현될 수 있다. 예를 들어, 기하 구조 프레임 (Y, Z) 평면에 대한 포인트 'n'의 직교 투영은 g(yn, zn)=xn으로 표현된다. 다시 말해서, 특정 프레임의 위치 (yn, zn)에서, X 좌표의 값 또는 X 좌표의 양자화된 버전이 저장된다. 다양한 실시 예들에서, 2-D 프레임에서 포인트들의 실제 위치는 (yn, zn)이 아니다. (X, Z), (X, Y) 또는 임의의 평면과 같은 다른 평면들 상에서의 투영들도 유사하게 정의될 수 있음에 유의하여야 한다. 다양한 실시 예들에서, 압축되는 실제 값은 전체 패치에 대해 오프셋이 일정한 'xn'의 오프셋이다.
다양한 실시 예들에서, 인코더 500은 웹 서버, 관리 서버와 같은 서버 컴퓨터, 또는 3포인트 클라우드의 3차원을 2차원으로 맵핑하고, 프레임들을 압축하고, 송신을 위해 이미지들을 인코딩할 수 있는 임의의 다른 전자 컴퓨팅 시스템이다. 다양한 실시 예들에서, 인코더 500은 하나 이상의 네트워크들에 의해 상호 연결된 컴퓨터들의 '클라우드'일 수 있으며, 각각은 도 1의 네트워크 102를 통해 접속되는 경우에 원활한 자원들의 단일 풀로서 동작하는 클러스터된 컴퓨터들 및 구성 요소들을 이용하는 컴퓨팅 시스템이다.
디코더 550은 포인트 클라우드, 메쉬, 또는 양자 모두의 표현(representation)을 포함하는 수신된 인코딩된 비트스트림을 디코딩, 압축 해제 및 생성하도록 구성될 수 있다. 다양한 실시 예들에서, 디코더 550은 다수의 2-D 프레임들을 포함하는 수신된 비트스트림으로부터 다수의 포인트 클라우드들을 생성하도록 구성될 수 있다. 예를 들어, 포인트 클라우드의 픽셀들 각각은 2-D 프레임들에서 수신된 정보 및 수신된 점유 맵에 기반하여 맵핑될 수 있다.
인코더 500은 송신을 위해 포인트 클라우드를 인코딩 및 압축하는 전자 장치의 본 개시의 실시 예에 대한 높은 레벨의 개요(overview)를 도시한다. 다양한 실시 예들에서, 인코더 500은 비트스트림에 의해 하나 이상의 디코더들(예를 들면, 디코더 550)에게 송신하기 위한 포인트 클라우드의 표현을 패키징(package)한다. 인코더 500은 수신된 3-D 포인트 클라우드 502, 패치 생성기 504, 보조 정보 506, 프레임 패킹 512, 다양한 프레임들(예를 들면, 하나 이상의 기하 구조 프레임들 514, 하나 이상의 텍스처 프레임들 518, 및 하나 이상의 점유 맵 프레임들 522), 다양한 인코더들(예를 들면, 인코딩 엔진 516, 인코딩 엔진 520, 및 인코딩 엔진 524), 및 멀티플렉서 526을 포함한다.
3-D 포인트 클라우드 502는 인코더 500에 대한 입력을 나타낸다. 3-D 포인트 클라우드 502는 인코더 500과 관련된 메모리에 저장될 수 있다. 3-D 포인트 클라우드 502는 단일 3-D 객체 또는 3-D 객체의 움직임을 포함하는 비디오일 수 있다.
패치 생성기 504는 3-D 포인트 클라우드 502를 분해하고(decompose), 다수의 패치들을 생성하도록 구성된다. 패치들은 속성에 의해 조직화될(organized) 수 있다. 예를 들어, 속성들은 기하학적 구조, 텍스처, 반사(reflectiveness), 재료 등을 포함할 수 있다. 추가적인 프레임들의 세트들(기하 구조 프레임들 514, 텍스처 프레임들 518 및 점유 맵 프레임들 522에 더하여)은 색상, 반사, 재료, 강도, normal 등과 같은 추가적인 속성들을 나타낼 수 있다. 기하학적 구조(예를 들면, 기하 구조 프레임들 514)는 3-D 포인트 클라우드 502의 각 포인트의 지리적인 위치이다. 텍스처(예를 들면, 텍스처 프레임들 518)는 색상과 같이 3-D 포인트 클라우드 502의 각 포인트의 단일 측면을 나타낸다. 이상에서 설명한 바와 같이, 다른 속성들을 나타내는 추가적인 프레임들이 생성될 수 있다. 패치 생성기 504는 기하학적 구조 속성들 및 텍스처 속성들을 상이한 2-D 프레임들에 클러스터링 하도록 구성될 수 있다. 클러스터링은 법선 방향(normal direction), 투영된 프레임들까지의 거리, 연속성(contiguity) 등과 같은 기준을 기반으로 할 수 있다. 도 6A, 도 6B 및 도 6C와 관련하여 이하에서 설명되는 바와 같이 각각의 생성된 클러스터는 패치로서 표현된다.
다양한 실시 예들에서, 패치 생성기 504는 일대일 맵핑을 통하여, 포인트 클라우드의 포인트들을 2-D 프레임들에 투영 및 맵핑하도록 구성된다. 패치 생성기 504는, 포인트들을 상이한 평면들에 투영함으로써, 포인트 클라우드의 포인트들을 2-D 프레임들에 투영 및 맵핑하도록 구성된다. 다양한 실시 예들에서, 포인트 클라우드의 포인트들을 2-D 프레임들에 투영 및 맵핑하는 과정은 래스터 스캔 맵핑(raster scan mapping), X 기하학적 좌표에 기반한 맵핑, Y 기하학적 좌표에 기반한 맵핑, Z 기하학적 좌표에 기반한 맵핑, 색상에 기반한 맵핑, 법선 방향에 기반한 맵핑 등에 기반할 수 있다.
또한, 패치 생성기 504는 보조 정보 506을 생성하도록 구성된다. 보조 정보 506은 각각의 패치, 단일 프레임, 또는 다수의 프레임들 등과 관련된 정보이다. 다양한 실시 예들에서, 보조 정보 506은, 프레임들을 생성할 때 인코더가 수행한 수정들에 기반하여, 포인트 클라우드를 재구성하는 경우 수행되어야 하는 다양한 수정들을 디코더에게 지시하는 메타데이터이다. 예를 들면, 패치들 및 프레임들은 (i) 스케일링(scaling), (ii) 공간 위치 오프셋들 및 깊이 오프셋들과 같은 오프셋들, (iii) 회전(rotation), (iv) 각 포인트의 크기, (v) 각 포인트의 형상, (vi) 해상도, 및 (vii) 포인트 밀도 등을 포함할 수 있다.
다양한 실시 예들에서, 스케일링에 대한 메타데이터는 기하학적 좌표들, 'x', 'y'및 'z'에 기반하여 나타낼 수 있다. 예를 들면, x-좌표와 관련하여, 메타데이터는 'scale_metadata_on_axis_x'로 나타낼 수 있다. y-좌표와 관련하여, 메타데이터는 'scale_metadata_on_axis_y'로 나타낼 수 있다. 유사하게, z-좌표와 관련하여, 메타데이터는 'scale_metadata_on_axis_z'로 나타낼 수 있다. 다양한 실시 예들에서, 포인트 클라우드의 포인트들은 스케일링을 이용하여 실제의 물리적 좌표들로 변환되는 정수 좌표들을 포함한다.
다양한 실시 예들에서, 오프셋들에 대한 메타데이터는 기하학적 좌표들, 'x', 'y'및 'z'에 기반하여 나타낼 수 있다. 예를 들면, x-좌표와 관련하여, 메타데이터는 'offset_metadata_on_axis_x'로 나타낼 수 있다. y-좌표와 관련하여, 메타데이터는 'offset_metadata_on_axis_y'로 나타낼 수 있다. 유사하게, z-좌표와 관련하여, 메타데이터는 'offset_metadata_on_axis_z'로 나타낼 수 있다. 다양한 실시 예들에서, 포인트 클라우드의 포인트들은 스케일링을 이용하여 실제의 물리적 좌표들로 변환되는 정수 좌표들을 포함한다.
다양한 실시 예들에서, 회전에 대한 메타데이터는 기하학적 좌표들, 'x', 'y'및 'z'에 기반하여 나타낼 수 있다. 예를 들면, x-좌표와 관련하여, 메타데이터는 'rotation_metadata_on_axis_x'로 나타낼 수 있다. y-좌표와 관련하여, 메타데이터는 'rotation_metadata_on_axis_y'로 나타낼 수 있다. 유사하게, z-좌표와 관련하여, 메타데이터는 'rotation_metadata_on_axis_z'로 나타낼 수 있다. 다양한 실시 예들에서, 포인트 클라우드의 포인트들은 스케일링을 이용하여 실제의 물리적 좌표들로 변환되는 정수 좌표들을 포함한다. 다양한 실시 예들에서, 포인트 클라우드의 포인트들이 스케일, 오프셋 및 회전을 이용하여 실제 물리적 좌표들로 변환되는 정수 좌표들을 포함하는 것에 유의하여야 한다.
다양한 실시 예들에서, 디코딩된 포인트 클라우드에서 렌더링되는 포인트들의 크기에 대한 메타데이터는 'point_size_metadata'로 나타낼 수 있다. 포인트 크기 메타데이터는, 디코더 550에 의해 3-D 포인트 클라우드 502가 재구성될 때 포인트 클라우드 502의 포인트 또는 픽셀의 크기를 조절한다. 작은 포인트 크기가 사용되는 경우, 재구성된 포인트 클라우드는 구멍들을 포함할 수 있다. 반대로, 포인트 크기가 지나치게 클 경우, 재구성된 포인트 클라우드는 흐릿하게(blurry) 나타날 수 있다. 따라서, 재구성된 포인트 클라우드(예를 들면, 디코더 550에 의해 재구성된 이후의 3-D 포인트 클라우드 502)에 포함된 포인트들은 포인트 클라우드가 구멍들을 포함하지 않고 흐릿하게 나타나지 않도록 하는 최적의(optimal) 크기를 가진다. 포인트 크기 메타데이터는 미리 정의될 수 있다. 예를 들면, 3-D 포인트 클라우드 502의 생성자(creator)는 디코더 550에 의한 사용을 위해 메타데이터에서 최적의 포인트 크기를 시그널링 할 수 있다.
포인트 크기와 유사하게, 디코딩된 포인트 클라우드에서 렌더링되는 포인트들의 형상에 대한 메타데이터는 'point_shape_metadata'로 나타낼 수 있다. 포인트 형상은 포인트 클라우드의 시각적 품질을 제어한다. 각 포인트의 크기와 유사하게, 각 포인트의 형상은 재구성된 3-D 포인트 클라우드가 흐릿하게 나타나지 않거나 구멍을 포함하지 않도록 할 수 있다. 아래에 도시된 <표 1> 은 각 포인트의 상이한 형상들을 지시할 수 있는 예시적인 메타데이터 값들을 포함한다. 추가적인 형상들이 3-D 포인트 클라우드 502의 포인트들을 위해 이용될 수 있음에 유의하여야 한다. 추가적인 'Point_Shape' 정수 값들은 추가적인 포인트 형상들을 지시할 수 있음에 유의하여야 한다.
Point_Shape 포인트들의 형상
1
2 사각형
3 다이아몬드형
보조 정보 506은 디코더 550과 같은 디코더에 의해, 포인트 클라우드를 재구성하기 위하여 이용된다. 인코더 500이 2-D 프레임들을 생성하는 동안 3-D 포인트 클라우드를 수정하는 경우, 보조 정보(예를 들면, 메타데이터)가 생성된다. 예를 들면, 3-D 포인트 클라우드에 포함된 포인트들 또는 픽셀들의 수를 서브샘플링 함으로써 3-D 포인트 클라우드가 더 작은 크기로 스케일링 되는 경우, 스케일링 파라미터는 메타데이터로서 나타낼 수 있고, 보조 정보 506에 포함될 수 있다. 해상도를 낮추기 위하여 3-D 포인트 클라우드를 서브샘플링 하는 과정은 각각의 2-D 프레임에 포함된 포인트들의 수를 감소시키며, 이는 인코딩된 비트스트림 528로써 프레임들을 송신할 때 비트레이트를 감소시킬 수 있다. 그 다음, 디코더는 포인트 클라우드를 재구성하고 스케일링 파라미터에 기반하여 프레임들을 업-샘플링(up-sampling)할 수 있으며, 더 높은 해상도에서 3-D 포인트 클라우드를 재구성할 수 있다.
또한, 보조 정보 506은 3-D 포인트 클라우드 502의 ROI를 지시할 수 있다. ROI는 3-D 포인트 클라우드 502의 나머지 부분과 다르게 수정되는 포인트 클라우드의 부분을 지시할 수 있다. ROI는 제1 파라미터로 스케일링 될 수 있고, 3-D 포인트 클라우드의 나머지 부분은 다른 파라미터로 스케일링 될 수 있다. ROI는 3-D 포인트 클라우드 502의 생성자에 의해 식별될 수 있다. 예를 들면, 얼굴은 중요 부분이고 3-D 포인트 클라우드 502의 나머지 부분과 비교할 때 스케일링 파라미터를 통해 가장 최소로 압축되어야 하기 때문에, 3-D 포인트 클라우드 502의 생성자는 휴머노이드의 얼굴을 ROI로서 식별할 수 있다. 이하의 도 9는 3-D 포인트 클라우드 502의 ROI에 대해 더 설명한다.
또한, 보조 정보 506은 플래그 508을 포함할 수 있다. 플래그 508은 보조 정보가 특정 패치, 패치들의 세트, 단일 프레임, 프레임들의 그룹, 시퀀스, 또는 비디오 등에 적용되는 시점을 지시한다. 액세스 레벨은 패치, 프레임, 프레임들의 그룹, 시퀀스, 및 비디오 등과 같은 3-D 포인트 클라우드의 2-D 표현을 구성하는 다양한 요소들의 계층 또는 레벨을 나타낸다. 액세스 레벨은 하나 이상의 패치들 또는 프레임들의 그룹핑들이다. 예를 들어, 프레임의 단일 패치는 하나의 액세스 레벨이 될 수 있다. 다른 액세스 레벨은 많은 패치들을 포함하는 단일 2-D 프레임일 수 있다. 다른 액세스 레벨은 둘 이상의 프레임들(각 프레임은 패치들을 포함함)을 포함하는, 프레임들의 그룹(GOF)일 수 있다. 다른 액세스 레벨은 시퀀스일 수 있다. 시퀀스는 3-D 포인트 클라우드가 움직이는 비디오의 일부를 나타낸다. 예를 들어, 포인트 클라우드가 길을 걷는 경우, 바닥에서 어떠한 것을 들어올리고 있는 경우, 및 계단을 오르고 있는 경우 등이다. 시퀀스는 하나 이상의 GOF를 포함한다. 비디오는 다수의 시퀀스들을 포함할 수 있다. 액세스 레벨들은 3-D 포인트 클라우드 502의 다양한 계층적 카테고리들을 제공하기 때문에, 단일 포인트 클라우드가 더 많거나 더 적은 액세스 레벨들에 의해 표현될 수 있음에 유의하여야 한다. 예를 들어, 액세스 레벨들은 패치, 프레임 및 시퀀스에 의해 표현될 수 있다. 다른 예에서, 패치 및 패치들의 그룹으로 지칭되는 프레임 간에 중간 레벨이 존재할 수 있다. 추가적으로 또는 대안적인 액세스 레벨들이 정의될 수 있다.
이상에서 설명된 메타데이터의 유형들에 더하여, 메타데이터는 포인트 클라우드의 특정 액세스 레벨들에 적용될 수 있다. 예를 들면, 스케일링에 대한 메타데이터는 특정 레벨에서 특정 패치에 적용될 수 있다. 패치를 나타내는 액세스 레벨에서 x, y, 및 z 좌표들에 대한 스케일을 조절하는 예시적인 메타데이터는 각각 ‘patch_scale_metadata_on_axis_x', 'patch_scale_metadata_on_axis_y' 및 'patch_scale_metadata_on_axis_z'로 표현될 수 있다. 오프셋들 및 회전 등에 대한 메타데이터가 유사하게 표현될 수 있다. 또한, 상이한 액세스 레벨들을 나타내는 메타데이터가 프레임들, GOF, 시퀀스 및 비디오 등에 대해 유사한 방식으로 표현될 수 있다.
스케일, 해상도, 포인트 밀도, 오프셋, 회전, 포인트 크기 및 포인트 형상 등과 같은 메타데이터는 파라미터로서 나타낼 수 있고, 상이한 액세스 레벨들에 적용될 수 있다. 예를 들면, 패치 파라미터 세트(patch parameter set, PPS)는 3-D 포인트 클라우드의 일부를 나타내는 단일 프레임 내의 단일 패치에 대한 메타데이터의 유형을 포함한다. 기하학적 구조를 나타내는 프레임 상의 패치는, 텍스처, 색상 및 재료 등과 같은 다른 속성들을 나타내는 프레임 상에서 대응하는 대응물을 가지는 것에 유의하여야 한다. 다른 예에서, 프레임 파라미터 세트(frame parameter set, FPS)는 각 프레임과 관련된 메타데이터의 유형을 포함하여, 프레임 내의 모든 패치들이 동일한 프레임-레벨 파라미터들을 가지도록 한다. 유사하게, GOF 파라미터 세트(GOF parameter set, GofPS)는 GOF에 포함된 모든 프레임들에 대해 동일한 GOF-레벨 메타데이터를 정의한다. 마찬가지로, 마찬가지로, 시퀀스 파라미터 세트(sequence parameter set, SPS)는, 모든 2-D 프레임들에 대해 동일한, 시퀀스 레벨의 메타데이터를 포함하고, 프레임들은 시퀀스에 포함된 패치들에 대응한다. 또한, 비디오 파라미터 세트(video parameter set, VPS)는, 비트스트림이 상이한 해상도의 다수의 시퀀스들을 포함하는 경우와 같이, 모든 포인트 클라우드 시퀀스들에 대해 동일한 메타데이터를 포함한다. 다양한 실시 예들에서, 우선 순위의 순서는 (i) PPS, (ii) FPS, (iii) GofPS, (iv) SPS, 및 (v) VPS이다. 파라미터 세트들(예를 들면, PPS, FPS, GofPS, SPS 및 VPS)의 일부 또는 액세스 레벨들이 포인트 클라우드에 대해 반드시 정의되지 않을 수도 있다는 것에 유의하여야 한다. 또한, 추가적인 파라미터 세트들 또는 액세스 레벨들이 포인트 클라우드에 대해 정의될 수 있다.
예를 들면, 패치-레벨의 스케일 메타데이터 파라미터가 패치에 대해 시그널링 되는 경우, 메타데이터는 그 패치에 대한 스케일링 값으로써 고려된다. 반대로, 패치-레벨의 스케일 메타데이터 파라미터가 패치에 대해 시그널링 되지 않지만 프레임-레벨의 스케일 파라미터가 패치를 포함하는 프레임에 대해 시그널링 되는 경우, 프레임-레벨의 스케일 메타데이터 파라미터는 그 패치의 스케일 파라미터에 할당된다.
보조 정보 506은 비-직교 송신 파라미터들을 포함할 수 있다. 예를 들어, 패치 생성기 504가 패치들을 생성할 때, 패치 생성기 504는 직교 투영 대신 비-직교 투영을 이용할 수 있다. 비-직교 송신 파라미터들은, 디코더(예를 들면, 디코더 550)에서 식별될 때, 3-D 포인트 클라우드를 재구성하기 위해 이용된다.
플래그 508은, 3-D 포인트 클라우드를 재구성하기 위해 보조 정보 506이 2-D 프레임들에 적용될 때 디코더에게 지시하는 하나 이상의 제어 플래그들을 포함할 수 있다. 플래그 508은 보조 정보 506에 포함된 정보(예를 들면, 메타데이터)가 각각의 개별 액세스 레벨에 적용될 때 시그널링 할 수 있다. 다양한 실시 예들에서, 플래그 508은 보조 정보 506으로부터 분리되고, 멀티플렉서 526을 통해 인코딩된 비트스트림 528로 다중화 된다. 다양한 실시 예들에서, 플래그 508은 생략된다.
각각의 액세스 레벨은 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 제어하는 하나 이상의 플래그들 508을 가질 수 있다. 다양한 플래그들 508은 특정 메타데이터가 특정 액세스 레벨들에 적용될 수 있을 때 시그널링할 수 있다. 이상에서 설명한 바와 같이, 메타데이터는 (i) 스케일링, (ii) 오프셋들, (iii) 회전, (iv) 각 포인트의 크기, 및 (v) 각 포인트의 형상 등을 제어하는 메타데이터를 포함할 수 있다. 다양한 실시 예들에서, 플래그 508은 (i) 이전에 시그널링된 메타데이터를 재사용함으로써 절대 시그널링에 의한 단일 제어 이진(binary) 플래그, (ii) 이전에 시그널링된 메타데이터를 재사용함으로써 조건부 시그널링에 의한 단일 제어 이진 플래그, 및 (iii) 기준 식별을 사용함으로써 단일 제어 이진 플래그일 수 있다. 두 개의 제어 이진 플래그들을 이용하는 절대 시그널링은 이하에서 구문 1, 2, 3 및 4와 관련하여 설명된다. 단일 제어 이진 플래그를 이용하는 절대 시그널링은 이하에서 구문 6 및 7과 관련하여 설명된다. 이전에 시그널링된 메타데이터를 재사용하는 절대 시그널링은 이하에서 구문 8과 관련하여 설명된다. 이전에 시그널링된 메타데이터를 재사용하는 조건부 시그널링은 이하에서 구문 9와 관련하여 설명된다. 메타데이터를 시그널링하기 위한 기준 식별은 이하에서 구문 10과 관련하여 설명된다.
다양한 실시 예들에서, 두 개의 제어 이진 플래그들 508은 메타데이터를 시그널링하기 위해 이용될 수 있다. 두 개의 플래그들 508은 (i) 활성(enabling) 플래그 및 (ii) 각각의 지정된 액세스 레벨에서 메타데이터의 각각의 유형과 관련된 현재의 플래그를 포함할 수 있다. 액세스 레벨은 패치 레벨, 프레임 레벨, GOF 레벨, 시퀀스 레벨 및 비디오 레벨 등을 포함할 수 있다. 3-D 포인트 클라우드 502와 같은 포인트 클라우드와 관련된 액세스 레벨들의 수 또는 설명(description)은 미리 정의되거나 미리 결정될 수 있다. 다양한 실시 예들에서, 두 개의 액세스 레벨들은 패치 및 프레임과 같이 정의된다. 다양한 실시 예들에서, 패치 레벨, 프레임 레벨, GOF 레벨, 시퀀스 레벨 및 비디오 레벨의 것 이상으로 다수의 액세스 레벨들이 정의된다.
플래그 508이 활성 플래그 및 현재 플래그와 같이 두 개의 제어 플래그들을 포함하는 경우, 활성 플래그는 현재 플래그보다 하나의 액세스 레벨 더 높게 시그널링 된다. 활성 플래그가 참(true)인 경우, 현재 플래그는 동일한 액세스 레벨에서 시그널링 된다.
구문 1:

// In the frame level
if (frame_metadata_enabled_flag) {
read frame_metadata_present_flag;
if (frame_metadata_present_flag) {
frame_parameter_set_metadata();

// Read enabling flags for one level lower.
read patch_metadata_enabled_flag;
if (patch_metadata_enabled_flag) {
read patch_scale_metadata_enabled_flag;
read patch_offset_metadata_enabled_flag;
read patch_rotation_metadata_enabled_flag;
read patch_point_size_metadata_enabled_flag;
read patch_point_shape_metadata_enabled_flag;
}
}
표 2의 구문 1은 프레임 레벨에서 활성 플래그가 참인 경우, 디코더 550이 프레임 레벨에서 프레임 레벨 현재 플래그를 판독하는 것을 도시한다. 그 후, 프레임 레벨에서 현재 플래그가 참인 경우, 디코더 550은 프레임 레벨 메타데이터 파라미터 세트를 판독한다. 그 후, 패치 레벨에서 활성 플래그가 참인 경우, 디코더 550은 스케일, 오프셋, 회전, 포인트 크기 및 포인트 형상과 같은 다양한 유형의 패치 레벨 메타데이터 각각에 대한 활성 플래그를 판독한다.
예를 들면, 구문 요소 'patch_metadata_enabled_flag'가 프레임 레벨(프레임과 관련된 액세스 레벨)에서 시그널링 되는 경우, 구문 요소는 패치 파라미터 세트가 시그널링 되는 프레임 내에 적어도 하나의 패치가 존재하는지 여부를 식별한다. 이 플래그가 참인 경우, 구문 요소 'patch_metadata_present_flag'는 패치 레벨에서 시그널링 되고, 패치 파라미터 세트가 시그널링 되는 패치들을 식별한다. 스케일 메타데이터에 대한 샘플 구문이 이하에 도시된다. 플래그가 시그널링 되지 않는 경우, 플래그는 디코더 550에 의해 거짓(false)으로 추론된다.
구문 2:

gof_parameter_set_matadata()
{
if (gof_scale_enabled_flag) {
read gof_scale_on_axis_x;
read gof_scale_on_axis_y;
read gof_scale_on_axis_z;
}
else {
gof_scale_on_axis_x = <default_value>;
gof_scale_on_axis_y = <default_value>;
gof_scale_on_axis_z = <default_value>;
}

if (gof_offset_enabled_flag) {
read gof_offset_on_axis_x;
read gof_offset_on_axis_y;
read gof_offset_on_axis_z;
}
else {
gof_offset_on_axis_x = <default_value>;
gof_offset_on_axis_y = <default_value>;
gof_offset_on_axis_z = <default_value>;
}

if (gof_rotation_enabled_flag) {
read gof_rotation_on_axis_x;
read gof_rotation_on_axis_y;
read gof_rotation_on_axis_z;
}
else {
gof_rotation_on_axis_x = <default_value>;
gof_rotation_on_axis_y = <default_value>;
gof_rotation_on_axis_z = <default_value>;
}

if (gof_point_size_enabled_flag) {
read gof_point_size;
}
else {
gof_point_size = <default_value>;
}

if (gof_point_shape_enabled_flag) {
read gof_point_shape;
}
else {
gof_point_shape = <default_value>;
}
}

frame_parameter_set_matadata()
{
if (fps_scale_enabled_flag) {
read fps_scale_on_axis_x;
read fps_scale_on_axis_y;
read fps_scale_on_axis_z;
}
else {
fps_scale_on_axis_x = gof_scale_on_axis_x;
fps_scale_on_axis_y = gof_scale_on_axis_y;
fps_scale_on_axis_z = gof_scale_on_axis_z;
}

if (fps_offset_enabled_flag) {
read fps_offset_on_axis_x;
read fps_offset_on_axis_y;
read fps_offset_on_axis_z;
}
else {
fps_offset_on_axis_x = gof_offset_on_axis_x;
fps_offset_on_axis_y = gof_offset_on_axis_y;
fps_offset_on_axis_z = gof_offset_on_axis_z;
}

if (fps_rotation_enabled_flag) {
read fps_rotation_on_axis_x;
read fps_rotation_on_axis_y;
read fps_rotation_on_axis_z;
}
else {
fps_rotation_on_axis_x = gof_rotation_on_axis_x;
fps_rotation_on_axis_y = gof_rotation_on_axis_y;
fps_rotation_on_axis_z = gof_rotation_on_axis_z;
}

if (fps_point_size_enabled_flag) {
read fps_point_size;
}
else {
fps_point_size = gof_point_size;
}

if (fps_point_shape_enabled_flag) {
read fps_point_shape;
}
else {
fps_point_shape = gof_point_shape;
}
}

patch_parameter_set_matadata_matadata()
{
if (pps_scale_enabled_flag) {
read pps_scale_on_axis_x;
read pps_scale_on_axis_y;
read pps_scale_on_axis_z;
}
else {
pps_scale_on_axis_x = fps_scale_on_axis_x;
pps_scale_on_axis_y = fps_scale_on_axis_y;
pps_scale_on_axis_z = fps_scale_on_axis_z;
}

if (pps_offset_enabled_flag) {
read pps_offset_on_axis_x;
read pps_offset_on_axis_y;
read pps_offset_on_axis_z;
}
else {
pps_offset_on_axis_x = fps_offset_on_axis_x;
pps_offset_on_axis_y = fps_offset_on_axis_y;
pps_offset_on_axis_z = fps_offset_on_axis_z;
}

if (pps_rotation_enabled_flag) {
read pps_rotation_on_axis_x;
read pps_rotation_on_axis_y;
read pps_rotation_on_axis_z;
}
else {
pps_rotation_on_axis_x = fps_rotation_on_axis_x;
pps_rotation_on_axis_y = fps_rotation_on_axis_y;
pps_rotation_on_axis_z = fps_rotation_on_axis_z;
}

if (pps_point_size_enabled_flag) {
read pps_point_size;
}
else {
pps_point_size = fps_point_size;
}

if (pps_point_shape_enabled_flag) {
read pps_point_shape;
}
else {
pps_point_shape = fps_point_shape;
}
}
또한, 두 개의 플래그들 508과 관련하여, 가장 높은 액세스 레벨에서의 메타데이터는, 활성 플래그가 거짓(false)이거나 또는 현재 플래그가 거짓인 경우, 디폴트 값(default value)으로 설정된다. 가장 높은 액세스 레벨보다 낮은 하나의 액세스 레벨에서의 메타데이터는, 시그널링 되지 않는 경우 상위 액세스 레벨의 해당 메타데이터로 설정된다. 활성 플래그가 거짓이거나 또는 현재 플래그가 거짓인 경우, 메타데이터는 시그널링 되지 않을 수 있다.
구문 3:

frame_parameter_set_matadata() {
if (frame_scale_metadata_enabled_flag) {
read frame_scale_metadata_present_flag;
if (frame_scale_metadata_present_flag) {
read frame_scale_metadata_on_axis_x;
read frame_scale_metadata_on_axis_y;
read frame_scale_metadata_on_axis_z;
}
else {
frame_metadata_on_axis_x = gof_metadata_on_axis_x;
frame_metadata_on_axis_y = gof_metadata_on_axis_y;
frame_metadata_on_axis_z = gof_metadata_on_axis_z;
}
}
// Other frame-level metadata
...
}
이상의 표 4의 구문 3은, GOF 파라미터 세트(구문 요소 'GofPS'), 프레임 파라미터 세트(구문 요소 'FPS'), 및 패치 파라미터 세트(구문 요소 'PPS')와 같이 상이한 액세스 레벨들에서의 다양한 메타데이터 파라미터들을 도시한다. 각각의 파라미터 세트는 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 지시하는 플래그(예를 들면, 플래그 508)을 포함한다. 각각의 파라미터 세트 내에서, 각각의 메타데이터는 메타데이터가 파라미터 세트에서 시그널링 되는지 여부를 제어하는 플래그를 가진다. 예를 들면, GofPS 내의 메타데이터 파라미터들은 디폴트 값들로 초기화된다. FPS 내의 메타데이터 파라미터들은 GofPS 내의 대응하는 파라미터들로 초기화된다. 그 후 PPS 내의 메타데이터 파라미터들은 FPS 내의 대응하는 파라미터들로 초기화된다. 또한, 표 3의 구문 2는 스케일, 오프셋, 회전, 포인트 크기 및 포인트 형상에 대한 메타데이터를 도시한다.
표 4의 구문 3은 활성 플래그가 프레임 레벨에서 존재하는 경우, 디코더 550이 두 가지 동작 중 하나를 수행하는 것을 설명한다. 프레임 레벨에서 현재 플래그가 존재하는 경우, 디코더 550은 스케일 메타데이터를 판독하여 x, y 및 y 좌표들 각각에 적용한다. 프레임 레벨에서 활성 플래그가 존재하지 않는 경우, 디코더 550은 프레임 액세스 레벨보다 한 단계 높은 액세스 레벨로부터의 x, y 및 z 메타데이터에 대한 메타데이터를 이용한다. 다양한 실시 예들에서, 한 단계 높은 액세스 레벨은 GOF 액세스 레벨일 수 있다.
이하 표 5의 구문 4는 메타데이터가 특정 액세스 레벨에 적용되는지 여부를 시그널링 하는 두 개의 제어 플래그들, 즉 활성 플래그 및 현재 플래그(플래그 508로 표시됨)를 적용하는 것을 설명한다.
구문 4:

Line Syntax
1 bitstream_header( ) {
2 pcc_category2_container_magic_number
3 pcc_category2_container_version
4 bitstream_size_in_bytes
5 gof_metadata_enabled_flag
6 if (gof_metadata_enabled_flag) {
7 gof_scale_metadata_enabled_flag
8 gof_offset_metadata_enabled_flag
9 gof_rotation_metadata_enabled_flag
10 gof_point_size_metadata_enabled_flag
11 gof_point_shape_metadata_enabled_flag
12 }
13 }
14 group_of_frames_header( ) {
15 group_of_frames_size
16 frame_width
17 frame_height
18 occupancy_resolution
19 radius_to_smoothing
20 neighbor_count_smoothing
21 radius2_boundary_detection
22 threshold_smoothing
23 lossless_geometry
24 lossless_texture
25 no_attributes
26 lossless_geometry_444
27 absolute_d1_coding
28 binary_arithmetic_coding`
29 ByteCount += 16
30 if (gof_metadata_enabled_flag) {
31 gof_metadata_present_flag
32 ByteCount += 1
33 if (gof_metadata_present_flag)
34 gof_parameter_set_metadata()
35 frame_metadata_enabled_flag
36 ByteCount += 1
37 if (frame_metadata_enabled_flag) {
38 frame_scale_metadata_enabled_flag
39 frame_offset_metadata_enabled_flag
40 frame_rotation_metadata_enabled_flag
41 frame_point_size_metadata_enabled_flag
42 frame_point_shape_metadata_enabled_flag
43 ByteCount += 5
44 }
45 }
46 }
47 gof_parameter_set_matadata( ) {
48 if (gof_scale_metadata_enabled_flag) {
49 gof_scale_metadata_present_flag
50 ByteCount += 1
51 if (gof_scale_metadata_present_flag) {
52 gof_scale_metadata_on_axis_x
53 gof_scale_metadata_on_axis_y
54 gof_scale_metadata_on_axis_z
55 ByteCount += 12
56 }
57 }
58 if (gof_offset_metadata_enabled_flag) {
59 gof_offset_metadata_present_flag
60 ByteCount += 1
61 if (gof_offset_metadata_present_flag) {
62 gof_offset_metadata_on_axis_x
63 gof_offset_metadata_on_axis_y
64 gof_offset_metadata_on_axis_z
65 ByteCount += 12
66 }
67 }
68 if (gof_rotation_metadata_enabled_flag) {
69 gof_rotation_metadata_present_flag
70 ByteCount += 1
71 if (gof_rotation_metadata_present_flag) {
72 gof_rotation_metadata_on_axis_x
73 gof_rotation_metadata_on_axis_y
74 gof_rotation_metadata_on_axis_z
75 ByteCount += 12
76 }
77 }
78 if (gof_point_size_metadata_enabled_flag) {
79 gof_point_size_metadata_present_flag
80 ByteCount += 1
81 if (gof_point_size_metadata_present_flag) {
82 gof_point_size_metadata
83 ByteCount += 2
84 }
85 }
86 if (gof_point_shape_metadata_enabled_flag) {
87 gof_point_shape_metadata_present_flag
88 ByteCount += 1
89 if (gof_point_shape_metadata_present_flag) {
90 gof_point_shape_metadata
91 ByteCount += 1
92 }
93 }
94 }
95 frame_auxiliary_information( ) {
96 patch_count
97 occupancy_precision
98 max_candidate_count
99 bit_count_u0
100 bit_count_v0
101 bit_count_u1
102 bit_count_v1
103 bit_count_d1
104 occupancy_aux_stream_size
105 if (frame_metadata_enabled_flag) {
106 frame_metadata_present_flag
107 ByteCount += 1
108 if (frame_metadata_present_flag)
109 frame_parameter_set_metadata()
110 patch_metadata_enabled_flag
111 ByteCount += 1
112 if (patch_metadata_enabled_flag) {
113 patch_scale_metadata_enabled_flag
114 patch_offset_metadata_enabled_flag
115 patch_rotation_metadata_enabled_flag
116 patch_point_size_metadata_enabled_flag
117 patch_point_shape_metadata_enabled_flag
118 ByteCount += 5
119 }
120 }
121 ByteCount += 15
122 for( i = 0; i < patch_count; i++ ) {
123 patchList[i].patch_u0
124 patchList[i].patch_v0
125 patchList[i].patch_u1
126 patchList[i].patch_v1
127 patchList[i].patch_d1
128 patchList[i].delta_size_u0
129 patchList[i].delta_size_v0
130 patchList[i].normal_axis
131 if (patch_metadata_enabled_flag) {
132 patch_metadata_present_flag
133 ByteCount += 1
134 if (patch_metadata_present_flag)
135 patch_parameter_set_metadata()
136 }
137 }
138 for( i = 0; i < blockCount; i++ ) {
139 if( candidatePatches[i].size( ) == 1 )
140 blockToPatch[i] = candidatePatches[i][0]
141 else {
142 candidate_index
143 if( candidate_index == max_candidate_count )
144 blockToPatch[i] = patch_index
145 else
146 blockToPatch[i] = candidatePatches[i][candidate_index]
147 }
148 }
149 ByteCount += occupancy_auxilary_stream_size
150 }
151 frame_parameter_set_matadata( ) {
152 if (frame_scale_metadata_enabled_flag) {
153 frame_scale_metadata_present_flag
154 ByteCount += 1
155 if (frame_scale_metadata_present_flag) {
156 frame_scale_metadata_on_axis_x
157 frame_scale_metadata_on_axis_y
158 frame_scale_metadata_on_axis_z
159 ByteCount += 12
160 }
161 }
162 if (frame_offset_metadata_enabled_flag) {
163 frame_offset_metadata_present_flag
164 ByteCount += 1
165 if (frame_offset_metadata_present_flag) {
166 frame_offset_metadata_on_axis_x
167 frame_offset_metadata_on_axis_y
168 frame_offset_metadata_on_axis_z
169 ByteCount += 12
170 }
171 }
172 if (frame_rotation_metadata_enabled_flag) {
173 frame_rotation_metadata_present_flag
174 ByteCount += 1
175 if (frame_rotation_metadata_present_flag) {
176 frame_rotation_metadata_on_axis_x
177 frame_rotation_metadata_on_axis_y
178 frame_rotation_metadata_on_axis_z
179 ByteCount += 12
180 }
181 }
182 if (frame_point_size_metadata_enabled_flag) {
183 frame_point_size_metadata_present_flag
184 ByteCount += 1
185 if (frame_point_size_metadata_present_flag) {
186 frame_point_size_metadata
187 ByteCount += 2
188 }
189 }
190 if (frame_point_shape_metadata_enabled_flag) {
191 frame_point_shape_metadata_present_flag
192 ByteCount += 1
193 if (frame_point_shape_metadata_present_flag) {
194 frame_point_shape_metadata
195 ByteCount += 1
196 }
197 }
198 }
199 patch_parameter_set_matadata( ) {
200 if (patch_scale_metadata_enabled_flag) {
201 patch_scale_metadata_present_flag
202 ByteCount += 1
203 if (patch_scale_metadata_present_flag) {
204 patch_scale_metadata_on_axis_x
205 patch_scale_metadata_on_axis_y
206 patch_scale_metadata_on_axis_z
207 ByteCount += 12
208 }
209 }
210 if (patch_offset_metadata_enabled_flag) {
211 patch_offset_metadata_present_flag
212 ByteCount += 1
213 if (patch_offset_metadata_present_flag) {
214 patch_offset_metadata_on_axis_x
215 patch_offset_metadata_on_axis_y
216 patch_offset_metadata_on_axis_z
217 ByteCount += 12
218 }
219 }
220 if (patch_rotation_metadata_enabled_flag) {
221 patch_rotation_metadata_present_flag
222 ByteCount += 1
223 if (patch_rotation_metadata_present_flag) {
224 patch_rotation_metadata_on_axis_x
225 patch_rotation_metadata_on_axis_y
226 patch_rotation_metadata_on_axis_z
227 ByteCount += 12
228 }
229 }
230 if (patch_point_size_metadata_enabled_flag) {
231 patch_point_size_metadata_present_flag
232 ByteCount += 1
233 if (patch_point_size_metadata_present_flag) {
234 patch_point_size_metadata
235 ByteCount += 2
236 }
237 }
238 if (patch_point_shape_metadata_enabled_flag) {
239 patch_point_shape_metadata_present_flag
240 ByteCount += 1
241 if (patch_point_shape_metadata_present_flag) {
242 patch_point_shape_metadata
243 ByteCount += 1
244 }
245 }
246 }
표 5의 구문 4는 메타데이터가 상이한 액세스 레벨들에 적용 가능할 때 시그널링 하는 플래그들 508을 나타낸다. 디코더 550은 인코딩된 비트스트림 528을 수신하도록 구성될 수 있다. 인코딩된 비트스트림 528은 플래그들 508 및 메타데이터를 모두 포함하는 보조 정보 506을 포함할 수 있다. 구문 4의 1행 내지 13행은 예시적인 비트스트림 헤더를 나타낸다. 구문 4의 14행부터 GOF 헤더가 설명된다. GOF 구문 헤더는 GOF의 액세스 레벨에 대응한다. 47행부터 GOF 메타데이터 구문이 설명된다. GOF 메타데이터 구문은 GOF 파라미터 세트로서 표현된다. 95행부터, 프레임 보조 정보가 설명된다. 151행부터, 프레임-레벨 메타데이터 구문이 설명된다. 프레임 메타데이터 구문은 프레임 파라미터 세트로서 표현된다. 프레임 레벨은 프레임들의 액세스 레벨에 대응한다. 또한, 199행부터, 패치 레벨 메타데이터 구문이 설명된다. 패치 메타데이터 구문은 패치 파라미터 세트로서 표현된다. 패치 레벨은 패치들의 액세스 레벨에 대응한다. 디폴트 값이 특정 액세스 레벨의 메타데이터에 할당될 때, 디폴트 값은 미리 결정될 수 있거나 또는 다음의 가장 높은 액세스 레벨로부터의 값으로 할당될 수 있다. 다양한 실시 예들에서, 미리 결정된 값은 가장 높은 액세스 레벨에만 할당되며, 더 낮은 액세스 레벨들에는 다음의 가장 높은 액세스 레벨로부터의 값들이 할당된다. 플래그가 상호교환적으로(interchangeably) 0 또는 거짓으로 설정될 수 있음에 유의하여야 한다. 또한, 플래그가 상호교환적으로 1 또는 참으로 설정될 수 있음에 유의하여야 한다.
이상 표 5의 구문 4를 참조하면, 구문 요소들 'gof_metadata_enabled_flag', 'gof_scale_metadata_enabled_flag', 'gof_offset_metadata_enabled_flag', 'gof_rotation_metadata_enabled_flag', 'gof_point_size_metadata_enabled_flag'및 'gof_point_shape_metadata_enabled_flag'은 비트스트림 헤더 시맨틱스에 포함된다. 구문 4의 5행 및 6행의 구문 요소 'gof_metadata_enabled_flag'는 GOF-레벨 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_metadata_enabled_flag'가 1(또는 참)인 경우, 일부 GOF에 대해 GOF-레벨 메타데이터 파라미터 세트가 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'gof_metadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 메타데이터 파라미터 세트가 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 메타데이터 파라미터 세트가 시그널링 되지 않는 경우, GOF 레벨 내의 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다.
구문 4의 7행 및 48행의 구문 요소 'gof_scale_matadata_enabled_flag'는 GOF-레벨 스케일 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_scale_matadata_enabled_flag'가 1(또는 참)인 경우, GOF-레벨 스케일 메타데이터 파라미터들이 일부 GOF들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또한, 'gof_scale_matadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 스케일 메타데이터 파라미터들이 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 스케일 메타데이터 파라미터들이 시그널링 되지 않는 경우, GOF 내의 스케일 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_scale_matadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
유사하게, 구문 4의 8행 및 58행의 구문 요소 'gof_offset_metadata_enabled_flag'는 GOF-레벨 오프셋 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_offset_metadata_enabled_flag'가 1(또는 참)인 경우, GOF-레벨 오프셋 메타데이터 파라미터들이 일부 GOF들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또한, 'gof_offset_metadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않는 경우, GOF 레벨 내의 오프셋 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_offset_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
또한, 구문 4의 9행 및 68행의 구문 요소 'gof_rotation_metadata_enabled_flag'는 GOF-레벨 회전 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_rotation_metadata_enabled_flag'가 1(또는 참)인 경우, GOF-레벨 회전 메타데이터 파라미터들이 일부 GOF들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또한, 'gof_rotation_metadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않는 경우, GOF 레벨 내의 회전 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_rotation_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
또한, 구문 4의 10행 및 78행의 구문 요소 'gof_point_size_metadata_enabled_flag'는 GOF-레벨 포인트 크기 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_point_size_metadata_enabled_flag'가 1(또는 참)인 경우, GOF-레벨 포인트 크기 메타데이터 파라미터들이 일부 GOF들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또한, 'gof_point_size_metadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 포인트 크기 메타데이터 파라미터들이 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 포인트 크기 메타데이터 파라미터들이 시그널링 되지 않는 경우, GOF 레벨 내의 포인트 크기 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_point_size_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
또한, 구문 4의 11행 및 86행의 구문 요소 'gof_point_shape_metadata_enabled_flag'는 GOF-레벨 포인트 형상 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'gof_point_shape_metadata_enabled_flag'가 1(또는 참)인 경우, GOF-레벨 포인트 형상 메타데이터 파라미터들이 일부 GOF들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또한, 'gof_point_shape_metadata_enabled_flag'가 0(또는 거짓)인 경우, GOF-레벨 포인트 형상 메타데이터 파라미터들이 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 포인트 형상 메타데이터 파라미터들이 시그널링 되지 않는 경우, GOF 레벨 내의 포인트 형상 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_point_shape_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
이상 표 5의 구문 4를 참조하면, 구문 요소들 'gof_metadata_present_flag', 'gof_scale_metadata_present_flag', 'gof_offset_metadata_enabled_flag', 'gof_rotation_metadata_enabled_flag', 'gof_point_size_metadata_present_flag' 'gof_point_shape_metadata_present_flag', 'frame_metadata_enabled_flag', 'frame_scale_metadata_enabled_flag', 'frame_offset_metadata_enabled_flag', 'frame_rotation_metadata_enabled_flag', 'frame_point_size_metadata_enabled_flag'및 'frame_point_shape_metadata_enabled_flag'들은 프레임들의 그룹 헤더 시맨틱스에 포함된다.
구문 4의 31행 및 33행의 구문 요소 'gof_metadata_present_flag'는 gof-레벨 메타데이터 파라미터 세트가 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 'gof_metadata_present_flag'가 1(또는 참)인 경우, 현재 GOF에 대해 gof-레벨 메타데이터 파라미터 세트가 시그널링 됨을 디코더 550에게 지시한다. 또는, 'gof_metadata_present_flag'가 0(또는 거짓)인 경우, gof-레벨 메타데이터 파라미터 세트가 현재 GOF에 대해 시그널링 되지 않음을 디코더 550에게 지시한다. gof-레벨 메타데이터 파라미터 세트가 현재 GOF에 대해 시그널링 되지 않는 경우, 현재 GOF 내의 스케일 메타데이터 파라미터들은 디폴트 값들로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 0으로 가정되는 것에 유의하여야 한다.
유사하게, 구문 4의 49행 및 51행의 구문 요소 'gof_scale_metadata_present_flag'는 GOF-레벨 스케일 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 'gof_scale_metadata_present_flag'가 1(또는 참)인 경우, x, y 및 z축들을 따라 GOF-레벨 스케일 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 됨을 디코더 550에게 지시한다. 구문 요소들 'gof_scale_metadata_on_axis_x', 'gof_scale_metadata_on_axis_y'및 'gof_scale_metadata_on_axis_z'는 각각 현재 GOF에 대해 x축, y축 및 z축들을 따라서 GOF-레벨 스케일의 값을 지시한다. 'gof_scale_metadata_present_flag'가 0(또는 거짓)인 경우, GOF-레벨 스케일 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 스케일 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않는 경우, 구문 요소들 'gof_scale_metadata_on_axis_x', 'gof_scale_metadata_on_axis_y'및 'gof_scale_metadata_on_axis_z'는 디폴트 값(예를 들면, 1)으로 할당된다. 'gof_scale_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 58행의 구문 요소 'gof_offset_metadata_enabled_flag'는 GOF-레벨 오프셋 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 'gof_offset_metadata_present_flag'가 1(또는 참)인 경우, x, y 및 z축들을 따라 GOF-레벨 오프셋 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 됨을 디코더 550에게 지시한다. 예를 들어, 구문 요소들 'gof_offset_metadata_on_axis_x', 'gof_offset_metadata_on_axis_y'및 'gof_offset_metadata_on_axis_z'는 각각 현재 GOF에 대해 x축, y축 및 z축들을 따라서 GOF-레벨 오프셋의 값을 지시한다. 또는, 'gof_offset_metadata_present_flag'가 0(또는 거짓)인 경우, GOF-레벨 오프셋 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 오프셋 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않는 경우, 구문 요소들 'gof_offset_metadata_on_axis_x', 'gof_offset_metadata_on_axis_y'및 'gof_offset_metadata_on_axis_z'는 0과 같은 디폴트 값으로 할당된다. 예를 들어, 디폴트 값들은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값들은 미리 정의된 값일 수 있다. 'gof_offset_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 68행의 구문 요소 'gof_rotation_metadata_enabled_flag'는 GOF-레벨 회전 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 'gof_rotation_metadata_present_flag'가 1(또는 참)인 경우, x, y 및 z축들을 따라 GOF-레벨 회전 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, 'gof_rotation_metadata_present_flag'가 0(또는 거짓)인 경우, GOF-레벨 회전 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않음을 디코더 550에게 지시한다. GOF-레벨 회전 메타데이터 파라미터들이 현재 GOF에 대해 시그널링 되지 않는 경우, 구문 요소들 'gof_rotation_metadata_on_axis_x', 'gof_rotation_metadata_on_axis_y'및 'gof_rotation_metadata_on_axis_z'는 0과 같은 디폴트 값으로 할당된다. 예를 들어, 디폴트 값은 다음의 가장 높은 액세스 레벨로부터의 값이 될 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. 'gof_rotation_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
회전 메타데이터를 참조하면, 구문 요소 'gof_rotation_metadata_on_axis_x'는, 2-16도의 단위로, 현재 GOF에 대한 x축을 따른 GOF 레벨 회전 각의 값을 지시한다. 'gof_rotation_metadata_on_axis_x'의 값의 범위는 -180*216에서 180*216-1까지이다. 유사하게, 구문 요소 'gof_rotation_metadata_on_axis_y'는 2-16도의 단위로, 현재 GOF에 대한 y축을 따른 GOF 레벨 회전 각의 값을 지시한다. 'gof_rotation_metadata_on_axis_y'의 값의 범위는 -180*216에서 180*216-1까지이다. 또한, 구문 요소 'gof_rotation_metadata_on_axis_z'는, 2-16도의 단위로, 현재 GOF에 대한 z축을 따른 GOF 레벨 회전 각의 값을 지시한다. 'gof_rotation_metadata_on_axis_z'의 값의 범위는 -180*216에서 180*216-1까지이다. 다양한 실시 예들에서, 2-8과 같은 낮은 정밀도로 회전 각을 송신하는 것이 가능하다.
구문 4의 79행 및 81행의 구문 요소 'gof_point_size_metadata_present_flag'는 GOF-레벨 포인트 크기 메타데이터 파라미터가 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 만약 'gof_point_size_metadata_present_flag'가 1(또는 참)인 경우, GOF-레벨 포인트 크기 메타데이터 파라미터가 현재 GOF에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, 'gof_point_size_metadata_present_flag'가 0(또는 거짓)인 경우, GOF-레벨 포인트 크기 메타데이터 파라미터가 현재 GOF에 대해 시그널링 되지 않음을 지시한다. GOF-레벨 포인트 크기 메타데이터 파라미터가 시그널링 되지 않으면, gof_point_size_metadata는 1과 같은 디폴트 값으로 설정된다. 'gof_point_size_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 또한, 용어 'gof_point_size_metadata'는 현재 GOF에 대한 GOF-레벨 포인트 크기의 값을 지시한다.
유사하게, 구문 4의 87행의 구문 요소 'gof_point_shape_metadata_present_flag'는 GOF-레벨 포인트 형상 메타데이터 파라미터가 현재 GOF에 대해 시그널링 되는지 여부를 지시한다. 'gof_point_shape_metadata_present_flag'가 1(또는 참)인 경우, GOF-레벨 포인트 형상 메타데이터 파라미터가 현재 GOF에 대해 시그널링 됨을 지시한다. 또는, 'gof_point_size_metadata_present_flag'가 0(또는 거짓)인 경우, GOF-레벨 포인트 형상 메타데이터 파라미터가 현재 GOF에 대해 시그널링 되지 않음을 지시한다. GOF-레벨 포인트 형상 메타데이터 파라미터가 시그널링 되지 않으면, gof_point_shape_metadata는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, GOF 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. 'gof_point_shape_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 또한, 구문 요소 'gof_point_shape_metadata'는 현재 GOF에 대한 GOF-레벨 포인트 형상의 값을 지시한다. 현재 GOF에 대한 GOF-레벨 포인트 형상의 값은 상기 표 1과 유사하게 식별될 수 있다.
표 4의 구문 3의 105행의 구문 요소 'frame_metadata_enabled_flag'는 프레임-레벨 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 메타데이터 파라미터 세트가 일부 프레임들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'frame_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 메타데이터 파라미터 세트가 시그널링 되지 않음을 지시하고, 따라서 프레임 레벨의 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다.
구문 4의 38행 및 152행의 구문 요소 'frame_scale_metadata_enabled_flag'는 프레임-레벨 스케일 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_scale_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 스케일 메타데이터 파라미터들이 일부 프레임들에 대해 시그널링 될 수 있음을 지시한다. 또는, 'frame_scale_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 스케일 메타데이터 파라미터들이 시그널링 되지 않음을 지시하고, 프레임 레벨의 스케일 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다. 'frame_scale_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
유사하게, 구문 4의 39행 및 162행의 구문 요소 'frame_offset_metadata_enabled_flag'는 프레임-레벨 오프셋 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_offset_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 오프셋 메타데이터 파라미터들이 일부 프레임들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'frame_offset_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 프레임-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않는 경우, 프레임-레벨의 오프셋 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다. 'frame_offset_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
유사하게, 구문 4의 40행 및 172행의 구문 요소 'frame_rotation_metadata_enabled_flag'는 프레임-레벨 회전 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_rotation_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 회전 메타데이터 파라미터들이 일부 프레임들에 대해 시그널링 될 수 있음을 지시한다. 또는, 'frame_rotation_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 프레임-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않는 경우, 프레임-레벨의 회전 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다. 'frame_rotation_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
또한, 구문 3의 41행 및 182행의 구문 요소 'frame_point_size_metadata_enabled_flag'는 프레임-레벨 포인트 크기 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_point_size_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 포인트 크기 메타데이터 파라미터들이 일부 프레임들에 대해 시그널링 될 수 있음을 지시한다. 또는, 'frame_point_size_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 포인트 크기 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 프레임-레벨 포인트 크기 메타데이터 파라미터가 시그널링 되지 않는 경우, 프레임-레벨의 포인트 크기 메타데이터 파라미터는 GOF 레벨의 대응하는 값으로 할당된다. 'frame_point_size_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
또한, 구문 요소 'frame_point_shape_metadata_enabled_flag'는 프레임-레벨 포인트 형상 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'frame_point_shape_metadata_enabled_flag'가 1(또는 참)인 경우, 프레임-레벨 포인트 형상 메타데이터 파라미터들이 일부 프레임들에 대해 시그널링 될 수 있음을 디코더 550에 지시한다. 또는, 'frame_point_shape_metadata_enabled_flag'가 0(또는 거짓)인 경우, 프레임-레벨 포인트 형상 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 프레임-레벨 포인트 형상 메타데이터 파라미터가 시그널링 되지 않는 경우, 프레임-레벨의 포인트 형상 메타데이터 파라미터는 GOF 레벨의 대응하는 값으로 할당된다. 'frame_point_shape_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
표 5의 구문 4를 참조하면, 구문 요소들 ‘frame_metadata_present_flag,' 'frame_scale_metadata_present_flag,' 'frame_offset_metadata_enabled_flag,' 'frame_rotation_metadata_enabled_flag,' 'frame_point_size_metadata_present_flag,' 'frame_point_shape_metadata_present_flag,' 'patch_metadata_enabled_flag,' 'patch_scale_metadata_enabled_flag,' 'patch_offset_metadata_enabled_flag,' 'patch_rotation_metadata_enabled_flag,' 'patch_point_size_metadata_enabled_flag,' 및 'patch_point_shape_metadata_enabled_flag'는 프레임들의 그룹 보조 정보 시맨틱스에 포함된다. 이러한 요소들은 프레임들의 그룹당 하나씩 명시된다.
예를 들면, 구문 4의 106행 및 108행의 구문 요소 ‘frame_metadata_present_flag'는 프레임-레벨 메타데이터 파라미터 세트가 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. ‘frame_metadata_present_flag'가 1(또는 참)인 경우, 프레임-레벨 메타데이터 파라미터 세트가 현재 프레임에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘frame_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 메타데이터 파라미터 세트가 현재 프레임에 대해 시그널링 되지 않음을 지시한다. 프레임-레벨 메타데이터 파라미터 세트가 현재 프레임에 대해 시그널링 되지 않는 경우, 현재 프레임의 스케일 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다. ‘frame_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
유사하게, 구문 4의 153행 및 155행의 구문 요소 ‘frame_scale_metadata_present_flag'는 프레임-레벨 스케일 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. ‘frame_scale_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 프레임-레벨 스케일 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 됨을 디코더 550에게 지시한다. 예를 들면, 구문 요소들 'frame_scale_metadata_on_axis_x,' 'frame_scale_metadata_on_axis_y' 및 'frame_scale_metadata_on_axis_z'는 각각 현재 프레임에 대해 x축, y축 및 z축에 따른 프레임 레벨 스케일의 값을 지시한다. 또는, ‘frame_scale_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 스케일 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되지 않고, 'frame_scale_metadata_on_axis_x,' 'frame_scale_metadata_on_axis_y' 및 'frame_scale_metadata_on_axis_z'는 1과 같은 디폴트 값으로 설정된다. ‘frame_scale_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 162행 및 171행의 구문 요소 ‘frame_offset_metadata_present_flag'는 프레임-레벨 오프셋 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. 구문 요소들 'frame_offset_metadata_on_axis_x,' 'frame_offset_metadata_on_axis_y' 및 'frame_offset_metadata_on_axis_z'는 현재 프레임에 대해 x축, y축 및 z축에 따른 프레임 레벨 오프셋의 값을 지시한다. ‘frame_offset_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 프레임-레벨 오프셋 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘frame_offset_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 오프셋 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되지 않음을 지시한다. 프레임-레벨 오프셋 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되지 않는 경우, 'frame_offset_metadata_on_axis_x,' 'frame_offset_metadata_on_axis_y' 및 'frame_offset_metadata_on_axis_z'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 GOF 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 프레임 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. ‘‘frame_offset_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 172행의 구문 요소 ‘frame_rotation_metadata_present_flag'는 프레임-레벨 회전 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. ‘frame_rotation_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 프레임-레벨 회전 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 됨을 지시한다. 또는, ‘frame_rotation_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 회전 메타데이터 파라미터들이 현재 프레임에 대해 시그널링 되지 않음을 지시한다. 프레임-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않는 경우, 'frame_rotation_metadata_on_axis_x,' 'frame_rotation_metadata_on_axis_y' 및 'frame_rotation_metadata_on_axis_z'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 GOF 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 프레임 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. ‘frame_rotation_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
프레임 회전 메타데이터를 참조하면, 구문 요소 'frame_rotation_metadata_on_axis_x'는, 2-16도의 단위로, 현재 프레임에 대한 x축을 따른 프레임 레벨 회전 각의 값을 지시한다. 유사하게, 구문 요소 'frame_rotation_metadata_on_axis_y'는 2-16도의 단위로, 현재 프레임에 대한 y축을 따른 프레임 레벨 회전 각의 값을 지시한다. 또한, 구문 요소 'frame_rotation_metadata_on_axis_z'는, 2-16도의 단위로, 현재 프레임에 대한 z축을 따른 GOF 레벨 회전 각의 값을 지시한다. 'frame_rotation_metadata_on_axis_x,' 'frame_rotation_metadata_on_axis_y,' 및 'frame_rotation_metadata_on_axis_z'의 값의 범위는 -180*216에서 180*216-1까지이다.
구문 4의 183행의 구문 요소 'frame_point_size_metadata_present_flag'는 프레임-레벨 포인트 크기 메타데이터 파라미터가 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. 'frame_point_size_metadata_present_flag'가 1(또는 참)인 경우, 프레임-레벨 포인트 크기 메타데이터 파라미터가 현재 프레임에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, 'frame_point_size_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 포인트 크기 메타데이터 파라미터가 현재 프레임에 대해 시그널링 되지 않음을 지시한다. 프레임-레벨 포인트 크기 메타데이터 파라미터가 현재 프레임에 대해 시그널링 되지 않으면, frame_point_size_metadata는 1과 같은 디폴트 값으로 설정된다. 'frame_point_size_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 또한, 구문 4의 186행의 'frame_point_size_metadata'는 현재 프레임에 대한 프레임-레벨 포인트 크기의 값을 지시한다.
또한, 구문 4의 191행의 구문 요소 'frame_point_shape_metadata_present_flag'는 프레임-레벨 포인트 형상 메타데이터 파라미터가 현재 프레임에 대해 시그널링 되는지 여부를 지시한다. 'frame_point_shape_metadata_present_flag'가 1(또는 참)인 경우, 프레임-레벨 포인트 형상 메타데이터 파라미터가 현재 프레임에 대하여 시그널링 됨을 디코더 550에게 지시한다. 또는, 'frame_point_shape_metadata_present_flag'가 0(또는 거짓)인 경우, 프레임-레벨 포인트 형상 메타데이터 파라미터가 현재 프레임에 대하여 시그널링 되지 않음을 지시한다. 프레임-레벨 포인트 형상 메타데이터 파라미터가 현재 프레임에 대해 시그널링 되지 않으면, 구문 요소 'frame_point_shape_metadata'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 GOF 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 프레임 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. 'frame_point_shape_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정됨에 유의하여야 한다. 또한, 구문 요소 'frame_point_shape_metadata'는 현재 프레임에 대한 프레임-레벨 포인트 형상의 값을 지시한다. 현재 프레임에 대한 프레임-레벨 포인트 형상의 값은 상기 표 1과 유사하게 식별될 수 있다.
구문 4의 110행 및 112행의 구문 요소 'patch_metadata_enabled_flag'는 패치-레벨 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 메타데이터 파라미터 세트가 일부 패치들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'patch_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 메타데이터 파라미터 세트가 시그널링 되지 않음을 지시한다. 패치-레벨 메타데이터 파라미터 세트가 시그널링 되지 않으면, 패치-레벨의 메타데이터 파라미터들은 프레임 레벨의 대응하는 값들로 할당된다.
또한, 구문 4의 113행 및 200행의 구문 요소 'patch_scale_metadata_enabled_flag'는 패치-레벨 스케일 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_scale_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 스케일 메타데이터 파라미터들이 일부 패치들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'patch_scale_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 스케일 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 패치-레벨 스케일 메타데이터 파라미터들이 시그널링 되지 않으면, 패치-레벨의 스케일 메타데이터 파라미터들은 GOF 레벨의 대응하는 값들로 할당된다. 'patch_scale_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 114행 및 210행의 구문 요소 'patch_offset_metadata_enabled_flag'는 패치-레벨 오프셋 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_offset_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 오프셋 메타데이터 파라미터들이일부패치들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'patch_offset_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 패치-레벨 오프셋 메타데이터 파라미터들이 시그널링 되지 않으면, 패치-레벨의 오프셋 메타데이터 파라미터들은 프레임 레벨의 대응하는 값들로 할당된다. 'patch_offset_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
유사하게, 구문 4의 115행 및 220행의 구문 요소 'patch_rotation_metadata_enabled_flag'는 패치-레벨 회전 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_rotation_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 회전 메타데이터 파라미터들이 일부 패치들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'patch_rotation_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 패치-레벨 회전 메타데이터 파라미터들이 시그널링 되지 않으면, 패치-레벨의 회전 메타데이터 파라미터들은 프레임 레벨의 대응하는 값들로 할당된다. 'patch_rotation_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
구문 4의 116행 및 230행의 구문 요소 'patch_point_size_metadata_enabled_flag'는 패치-레벨 포인트 크기 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_point_size_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 포인트 크기 메타데이터 파라미터들이 일부 패치들에 대해 시그널링 될 수 있음을 지시한다. 또는, 'patch_point_size_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 포인트 크기 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 패치-레벨 포인트 크기 메타데이터 파라미터가 시그널링 되지 않으면, 패치-레벨의 포인트 크기 메타데이터 파라미터는 프레임 레벨의 대응하는 값으로 할당된다. 'patch_point_size_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
또한, 구문 4의 117행 및 238행의 구문 요소 'patch_point_shape_metadata_enabled_flag'는 패치-레벨 포인트 형상 메타데이터 파라미터들이 비트스트림에서 시그널링 되는지 여부를 지시한다. 'patch_point_shape_metadata_enabled_flag'가 1(또는 참)인 경우, 패치-레벨 포인트 형상 메타데이터 파라미터들이 일부 패치들에 대해 시그널링 될 수 있음을 디코더 550에게 지시한다. 또는, 'patch_point_shape_metadata_enabled_flag'가 0(또는 거짓)인 경우, 패치-레벨 포인트 형상 메타데이터 파라미터들이 시그널링 되지 않음을 지시한다. 패치-레벨 포인트 형상 메타데이터 파라미터가 시그널링 되지 않으면, 패치-레벨의 포인트 형상 메타데이터 파라미터는 프레임 레벨의 대응하는 값으로 할당된다. 'patch_point_shape_metadata_enabled_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
상기 구문 4를 참조하면, 구문 요소들 'patch_metadata_present_flag,' 'patch_scale_metadata_present_flag,' 'patch_offset_metadata_enabled_flag,' 'patch_rotation_metadata_enabled_flag,' 'patch_point_size_metadata_present_flag,' 및 'patch_point_shape_metadata_present_flag'는 패치 당 한번씩 명시된다.
예를 들면, 구문 4의 132행 및 134행의 구문 요소 ‘patch_metadata_present_flag'는 패치-레벨 메타데이터 파라미터 세트가 현재 패치에 대해 시그널링 되는지 여부를 지시한다. ‘patch_metadata_present_flag'가 1(또는 참)이면, 패치-레벨 메타데이터 파라미터 세트가 현재 패치에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘patch_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 메타데이터 파라미터 세트가 현재 패치에 대해 시그널링 되지 않음을 지시한다. 패치-레벨 메타데이터 파라미터 세트가 현재 패치에 대해 시그널링 되지 않으면, 현재 패치의 스케일 메타데이터 파라미터들은 프레임 레벨의 대응하는 값들로 할당된다. ‘patch_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
예를 들면, 구문 4의 구문 요소 ‘patch_scale_metadata_present_flag'는 패치-레벨 스케일 메타데이터 파라미터들이 현재 패치에 대해 시그널링 되는지 여부를 지시한다. ‘patch_scale_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 패치-레벨 스케일 메타데이터 파라미터들이 현재 패치에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘patch_scale_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 스케일 메타데이터 파라미터들은 현재 패치에 대해 시그널링 되지 않고, 'patch_scale_metadata_on_axis_x,' 'patch_scale_metadata_on_axis_y' 및 'patch_scale_metadata_on_axis_z'는 1과 같은 디폴트 값으로 설정된다. ‘patch_scale_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 또한, 구문 요소들 'patch_scale_metadata_on_axis_x,' 'patch_scale_metadata_on_axis_y' 및 'patch_scale_metadata_on_axis_z'는 각각 현재 패치에 대해 x축, y축 및 z축에 따른 패치-레벨 스케일의 값을 지시한다.
또한, 구문 4의 114행 및 210행의 구문 요소 ‘patch_offset_metadata_present_flag'는 패치-레벨 오프셋 메타데이터 파라미터들이 현재 패치에 대해 시그널링 되는지 여부를 지시한다. 구문 요소들 'patch_offset_metadata_on_axis_x,' 'patch_offset_metadata_on_axis_y' 및 'patch_offset_metadata_on_axis_z'는 현재 패치에 대해 x축, y축 및 z축에 따른 패치-레벨 오프셋의 값을 지시한다. ‘patch_offset_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 패치-레벨 오프셋 메타데이터 파라미터들이 현재 패치에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘patch_offset_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 오프셋 메타데이터 파라미터들은 현재 패치에 대해 시그널링 되지 않고, 'patch_offset_metadata_on_axis_x,' 'patch_offset_metadata_on_axis_y' 및 'patch_offset_metadata_on_axis_z'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 프레임 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 패치 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. ‘patch_offset_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 구문 요소들 'patch_offset_metadata_on_axis_x,' 'patch_ offset_metadata_on_axis_y' 및 'patch_ offset_metadata_on_axis_z'는 각각 현재 패치에 대해 x축, y축 및 z축에 따른 패치-레벨 오프셋의 값을 지시한다.
또한, 구문 4의 115행 및 220행의 구문 요소 ‘patch_rotation_metadata_present_flag'는 패치-레벨 회전 메타데이터 파라미터들이 현재 패치에 대해 시그널링 되는지 여부를 지시한다. ‘patch_rotation_metadata_present_flag'가 1(또는 참)인 경우, x, y, 및 z 축들을 따른 패치-레벨 회전 메타데이터 파라미터들이 현재 패치에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, ‘patch_rotation_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 회전 메타데이터 파라미터들은 현재 패치에 대해 시그널링 되지 않음을 지시한다. 패치-레벨 회전 메타데이터 파라미터들이 현재 패치에 대해 시그널링 되지 않으면, 'patch_rotation_metadata_on_axis_x,' 'patch_rotation_metadata_on_axis_y' 및 'patch_rotation_metadata_on_axis_z'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 프레임 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 패치 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. ‘patch_rotation_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다.
회전 메타데이터를 참조하면, 구문 요소 'patch_rotation_metadata_on_axis_x'는, 2-16도의 단위로, 현재 패치에 대한 x축을 따른 패치-레벨 회전 각의 값을 지시한다. 유사하게, 구문 요소 'patch_rotation_metadata_on_axis_y'는 2-16도의 단위로, 현재 패치에 대한 y축을 따른 패치-레벨 회전 각의 값을 지시한다. 또한, 구문 요소 'patch_rotation_metadata_on_axis_z'는, 2-16도의 단위로, 현재 패치에 대한 z축을 따른 패치-레벨 회전 각의 값을 지시한다. 'patch_rotation_metadata_on_axis_x,' 'patch_rotation_metadata_on_axis_y,' 및 'patch_rotation_metadata_on_axis_z'의 값의 범위는 -180*216에서 180*216-1까지이다.
구문 4의 231행 및 233행의 구문 요소 'patch_point_size_metadata_present_flag'는 패치-레벨 포인트 크기 메타데이터 파라미터가 현재 패치에 대해 시그널링 되는지 여부를 지시한다. 예를 들면, 'patch_point_size_metadata_present_flag'가 1(또는 참)인 경우, 패치-레벨 포인트 크기 메타데이터 파라미터가 현재 패치에 대해 시그널링 됨을 디코더 550에게 지시한다. 또는, 'patch_point_size_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 포인트 크기 메타데이터 파라미터가 현재 패치에 대해 시그널링 되지 않음을 지시한다. 패치-레벨 포인트 크기 메타데이터 파라미터가 현재 패치에 대해 시그널링 되지 않으면, patch_point_size_metadata는 1과 같은 디폴트 값으로 설정된다. 'patch_point_size_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 구문 요소 'patch_point_size_metadata'는 현재 패치에 대한 패치 레벨 포인트 크기의 값을 지시한다.
마지막으로, 구문 4의 239행 및 241행의 구문 요소 'patch_point_shape_metadata_present_flag'는 패치-레벨 포인트 형상 메타데이터 파라미터가 현재 패치에 대해 시그널링 되는지 여부를 지시한다. 예를 들면, 'patch_point_shape_metadata_present_flag'가 1(또는 참)인 경우, 패치-레벨 포인트 형상 메타데이터 파라미터가 현재 패치에 대하여 시그널링 됨을 디코더 550에 지시한다. 또는, 'patch_point_shape_metadata_present_flag'가 0(또는 거짓)인 경우, 패치-레벨 포인트 형상 메타데이터 파라미터가 현재 패치에 대하여 시그널링 되지 않음을 지시한다. 패치-레벨 포인트 형상 메타데이터 파라미터가 현재 패치에 대해 시그널링 되지 않으면, 구문 요소 'patch_point_shape_metadata'는 0과 같은 디폴트 값으로 설정된다. 예를 들어, 디폴트 값은 프레임 액세스 레벨과 같이 다음의 가장 높은 액세스 레벨로부터의 값일 수 있다. 다른 예에서, 패치 액세스 레벨이 가장 높게 정의된 액세스 레벨인 경우, 디폴트 값은 미리 정의된 값일 수 있다. 'patch_point_shape_metadata_present_flag'가 구문 4에 존재하지 않는 경우, 이는 0으로 가정된다. 또한, 구문 요소 'patch_point_shape_metadata'는 현재 패치에 대한 패치-레벨 포인트 형상의 값을 지시한다. 현재 패치에 대한 패치-레벨 포인트 형상의 값은 상기 표 1과 유사하게 식별될 수 있다.
다양한 실시 예들에 따르면, 가장 높은 액세스 레벨에서, 오직 현재 플래그만 시그널링 되고 활성 플래그는 시그널링 되지 않는다. 다양한 실시 예들에 따르면, 가장 높은 액세스 레벨에서, 활성 플래그는 1(또는 참)로 가정된다.
스케일, 오프셋, 회전, 포인트 크기, 및 포인트 형상과 같은 메타데이터 유형들은 디코더 550이 3차원 포인트 클라우드를 재구성하는 방법을 수정할 수 있다. 특히, 디코더 550가 포인트 클라우드를 재구성할 때, 메타 데이터는(i) 저밀도 포인트 클라우드를 변경할 수 있고, (ii) 프로그레시브 스케일링(progressive scaling)을 수행할 수 있고, ROI를 표시할 수 있고, 포인트 클라우드의 나머지 부분과 다르게 표시된 ROI로서 포인트 클라우드의 일부를 수정할 수 있고, 또한, (iii) 포인트 클라우드에 있는 구멍을 제거하거나 줄이기 위한 적응적 포인트 크기 및 형상 렌더링(rendering)을 수행할 수 있다.
다양한 실시 예들에서, 포인트 클라우드의 포인트들을 2차원 프레임으로 투영 및 맵핑한 후에 포인트들은 2차원 프레임으로 정렬 및 패킹(packing)될 수 있다. 프레임 패킹 512는 하나의 패치 내의 포인트들을 정렬하고 패킹한다.
프레임 패킹 512는 패치들을 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518로 정렬하고 패킹한다. 특정 실시예들에서, 패치 생성기는 하나 또는 그 이상의 점유 맵들을 생성하고 프레임 패킹 512는 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518에 대응하는 하나 또는 그 이상의 점유 맵 프레임들 522로 점유 맵들을 패킹한다. 패치 생성기 504에 의해 생성된 패치들에 대응하는 기하 구조 및 텍스처 정보는 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 같은 개별 비디오 프레임들로 패킹된다. 특정 실시예들에서, 프레임 패킹 512는 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518을 생성한다. 프레임 패킹 512는 패치들이 하나의 프레임으로 배열되고 패킹되는 방식에 기반하여 프레임들의 높이 및 폭을 결정할 수 있다. 특정 실시예들에서, 단일 프레임에 포함된 패치들은 프레임에서 최소 공간을 차지하도록 배치된다. 즉, 프레임의 크기는 프레임 내에서 각 패치의 위치에 따라 결정된다. 따라서, 적어도 각각의 GOF에 대해 프레임 크기는 일정하다는 제약 하에서, 패치들이 프레임 내에서 배향되고 위치되는 방법에 기반하여 프레임은 가능한 최소 크기이다. 특정 실시예들에서, 프레임 크기는 또한 각 비디오 시퀀스에 대해 일정하다.
점유 맵 프레임들 522는 각 프레임에 투영되거나 맵핑되는 포인트 클라우드의 유효 포인트들을 포함하는 (하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 같은) 프레임들 내의 픽셀 위치를 나타내는 점유 맵을 나타낸다. 예를 들면, 점유 맵 프레임들 522는 (하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 같은) 각 프레임상의 각 픽셀이 유효한 픽셀인지 또는 블랭크(blank)인지 여부를 나타낸다. 점유 맵 상의 유효한 픽셀은 포인트 클라우드 내의 3차원 포인트에 대응하는 2차원 프레임 상의 픽셀을 나타낸다. 특정 실시예들에서, 점유 맵 프레임들 522에 포함된 점유 맵은 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 유사한 각 프레임에 대해 동일할 수 있다. 특정 실시예들에서, 점유 맵 프레임들 522는 다수의 점유 맵을 나타내며, 각 점유 맵은 (하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 같은) 단일 프레임에 대응한다. 특정 실시예들에서, 점유 맵 프레임들 522는 별도의 비트 스트림의 메타 데이터로서 송신될 수 있다.
하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518은 각각 인코딩 엔진 516 및 인코딩 엔진 520을 통해 인코딩된다. 인코딩 엔진 524 또한 점유 맵 프레임들 522를 인코딩한다. 특정 실시예들에서, 보조 정보 506은 다른 인코딩 엔진에 의해 인코딩된다. 인코딩 엔진들 516, 520 및 524는 별개의 인코딩 엔진들이거나 또는 동일한 인코딩 엔진일 수 있다. 예를 들어, 인코딩 엔진들 516, 520 및 524는 동일한 구성 요소이며, 하나 또는 그 이상의 기하 구조 프레임들 514, 하나 또는 그 이상의 텍스처 프레임들 518 및 하나 또는 그 이상의 점유 맵 프레임들이 동일한 인코딩 엔진에 의해 인코딩 된다. 특정 실시예들에서, 인코딩 엔진 516, 520 및 524는 8비트, 10비트, 12비트, 14 비트 또는 16비트의 데이터 정밀도를 지원하도록 구성될 수 있다. 인코딩 엔진들 516, 520 및 524는 HEVC, AVC, VP9, VP8, JVNET 등과 같은 비디오 또는 이미지 코덱일 수 있으며, 3차원 포인트 클라우드를 나타내는 2차원 프레임들을 압축하는 데 사용될 수 있다.
보조 정보 506, 인코딩된 하나 또는 그 이상의 기하 구조 프레임들 514, 인코딩된 하나 또는 그 이상의 텍스처 프레임들 518 및 인코딩된 하나 또는 그 이상의 점유 맵 프레임들 522는 멀티플렉서 526을 통해 다중화 된다. 멀티플렉서 526은 단일의 인코딩된 비트스트림 528을 생성하기 위해 보조 정보 506, 인코딩된 하나 또는 그 이상의 기하 구조 프레임들 514, 인코딩된 하나 또는 그 이상의 텍스처 프레임들 518 및 인코딩된 하나 또는 그 이상의 점유 맵 프레임들 522를 결합한다. 특정 실시예들에서, 인코딩 엔진 516, 인코딩 엔진 520 및 인코딩 엔진 524는 단일 인코딩 엔진이다.
인코딩 엔진들 516, 520 및 522는 손실 있는 포인트 클라우드 압축 또는 무손실 포인트 클라우드 압축을 포함할 수 있다. 만약 손실 있는 포인트 클라우드가 사용되면, 점유 맵 프레임들 522는 비트 스트림에 포함되고, 디코더(예: 디코더 550)에 송신된다. 디코더 550은 점유 맵 프레임들 522를 사용하여 하나 또는 그 이상의 기하 구조 프레임들 514 및 하나 또는 그 이상의 텍스처 프레임들 518과 같은 각 프레임의 유효 포인트들을 식별한다. 만약 무손실 압축이 (하나 또는 그 이상의 기하 구조 프레임들 514과 같은) 프레임들을 압축하기 위해 사용되면, 디코더 550은 하나 또는 그 이상의 기하 구조 프레임들 514로부터 유효 포인트들을 직접 도출할 수 있다. 예를 들면, 디코더 550은 점유 맵 프레임들 522에 포함된 점유 맵과 유사한 방식으로 하나 또는 그 이상의 기하 구조 프레임들 514를 사용할 수 있다. 결과적으로, 점유 맵 프레임들 522는 압축률을 향상시키기 위해 비트 스트림으로부터 생략될 수 있다. 예를 들면, 패치 생성기 504 및 프레임 패킹 512는 점유 맵 프레임들 522를 생성하지 않고, 그 결과로, 멀티플렉서 526은 (인코딩 엔진 516으로부터의) 인코딩된 하나 또는 그 이상의 기하 구조 프레임들 514, (인코딩 엔진 520으로부터의) 인코딩된 하나 이상의 텍스처 프레임들 518 및 보조 정보 506과 함께 점유 맵 프레임들 522를 다중화 하지 않는다.
상기 수학식 1은 직교 투영을 설명한다. 특정 실시예들에서, 3차원 포인트 클라우드 502는 밀도가 희박(sparse)하여, 포인트 클라우드 내에 구멍들이 존재한다. 저밀도 포인트 클라우드는 포인트들 또는 픽셀들이 포인트 클라우드 내에 밀집되어 있지 않은 경우에 발생한다. 포인트 클라우드의 구멍들은 인코딩 엔진들 516, 520 및 524의 압축 성능을 악화시킬 수 있다. 스케일링을 갖는 비-직교 투영은 포인트 클라우드를 효과적으로 서브 샘플링하여 포인트 클라우드 자체를 응축시킬 수 있다. 예를 들면, g(y, z)는 (기하 구조 프레임들 514 중 하나와 같은) 기하 구조 프레임이다. 기하 구조 프레임 (y, z) 평면상의 포인트 pn = <xn, yn, zn>의 비-직교 투영의 예는 다음의 <수학식 2>에 의해 주어진다.
<수학식 2>에서, 'scale_fractor_y', 'scale_fractor_z' 및 'scale_fractor_x'는 (기하 구조 프레임들 514와 같은) 2차원 프레임들로 3차원 포인트 클라우드 502의 투영에서 기하학적 좌표를 스케일링하는데 사용되는 스케일링 인자들을 나타낸다. 'offset_y', 'offset_z' 및 'offset_x'는 투영 패치가 저장되는 이미지에서의 위치를 나타낸다. (X, Z), (X, Y) 또는 임의의 평면과 같은 다른 평면들로의 투영들도 유사하게 정의될 수 있다. 특정 실시예들에서, 특정 오프셋 값이 수학식 또는 메타데이터에서 식별되지 않는 한, 프레임 내의 패치 위치들의 오프셋은 0이다. 스케일링 또는 오프셋을 나타내는 수학식들 및 메타데이터는 보조 정보 506에 포함될 수 있다. 특정 실시예들에서, 스케일 인자가 '2'로 설정되면, 3차원 포인트 클라우드는 8의 인수로 서브 샘플링 된다. 예를 들면, 원래의 포인트 클라우드가 1024, 1024, 1024 보셀 큐브로 나타내어 지고, 4의 인수로 서브 샘플링되면 서브 샘플링된 포인트 클라우드는 512, 512, 512 보셀 큐브로 나타난다.
특정 실시예들에서, 스케일 인자들은 메타데이터로서 인코딩되고 (디코더 550과 같은) 디코더를 포함하는 수신기로 전송된다. 하나 또는 그 이상의 스케일 인자들은 일반성(generality)을 잃지 않으면서 디코더로 전송될 수 있다. 특정 실시예들에서, 스케일 인자들은 모든 좌표에 대해 동일한 값을 가질 수 있다. 예를 들면, x 좌표의 스케일 인자는 y 좌표에 대한 스케일 인자와 동일하고, z 좌표에 대한 스케일 인자와도 동일하다. 특정 실시예들에서, 스케일 인자들은 각 좌표에 대해 상이한 값을 가질 수 있다. 예를 들면, x 좌표에 대한 스케일 인자는 y 좌표에 대한 스케일 인자와 상이하고, z 좌표의 스케일 인자와도 상이하다. 스케일 인자 메타데이터를 설명하기위한 구문 예제가 아래에 제공된다.
구문 5:

if(flag_single_scale_factor)
float scale_factor;
else
float scale_factor_x;
float scale_factor_y;
float scale_factor_z;
end
표 6의 구문 5는 3차원 포인트 클라우드 502의 포인트들에 스케일 인자를 적용하는 것을 설명한다. 용어 'single_scale_factor'는 동일한 스케일 인자가 모든 기하학적 좌표들에 사용되는지 여부를 지시하는 플래그이다. 용어 'scale_factor'는 모든 기하학적 좌표들에 사용되는 공통 스케일 인자를 나타낸다. 용어 'scale_factor_x'는 'x' 기하학 좌표의 일반적인 스케일 인자이다. 유사하게, 용어 'scale_factor_y'는 'y' 기하학 좌표의 공통 스케일 인자이다. 또한, 용어 'scale_factor_z'는 'z' 기하학 좌표의 공통 스케일 인자이다. 특정 실시예들에서, 스케일 인자들은 포인트 클라우드 당 한번, (기하 구조 프레임들 514 중의 하나와 같은) 2차원 프레임 당 한번, (기하 구조 프레임들 514 중의 하나와 같은) 2차원 프레임의 영역 당 한번, 또는 (기하학적 프레임들 514 중의 하나에 포함되는) 패치 당 한번 전송될 수 있다.
특정 실시예들에서, 포인트 클라우드 내의 포인트 밀도는 포인트 클라우드의 특정 영역들에서 또는 특정 상이한 패치들에서 스케일 인자를 제어함으로써 변경될 수 있다. 예를 들면, 휴머노이드(humanoid) 포인트 클라우드의 얼굴이나 손은 더 높은 포인트 클라우드 밀도(예: 해상도)로 코딩될 수 있고, (팔이나 다리와 같은) 다른 신체 부위는 더 낮은 포인트 클라우드 밀도(예: 해상도)로 코딩될 수 있다.
스케일링 인자에 의해 3차원 포인트 클라우드의 일부를 스케일링하기 위해, 인코더 500은 압축된 비트스트림에 스케일 인자들의 목록을 포함할 수 있다. 예를 들면, 스케일 인자들의 목록은 보조 정보 506에 포함될 수 있다. 다른 예에서, 스케일 인자들의 목록은 멀티플렉서 526에 의해 인코딩된 비트스트림 528에 포함될 수 있다. 모든 패치에 대해, 스케일 인자들의 목록의 인덱스가 사용될 수 있다. 인덱스는 패치의 포인트들을 사용하기 위하여 스케일 인자들을 신호하는데 사용할 수 있다. 아래의 <수학식 3>은 3차원 포인트 클라우드의 일부를 스케일링하기위한 비-직교 변환을 도시한다.
위의 <수학식 3>은 비-직교 변환에서 스케일링 인자를 적용하는 예시적인 행렬을 도시한다. 좌표 (xn, yn, zn)에 의해 식별되는 포인트는 3차원 공간에서의 3차원 포인트 클라우드 502의 점 'n'의 X, Y 및 Z 좌표를 나타낸다. 대응하는 투영된 값은 (x'n, y'n, z'n)으로 나타낸다. 따라서, x'n = g (y'n, z'n)은 기하 구조 프레임들 514와 같은 프레임에서 인코딩된 기하학적 좌표 정보를 나타낸다. z'n = g(x'n, y'n) 또는 y'n = g(x'n, z'n)와 같은 다른 평면상의 투영도 있다. (후술될 디코더 550과 같은) 디코더는 3차원 공간에서 포인트의 좌표 (xn, yn, zn)을 획득하기 위해 비디오 프레임으로부터 추출한다. 특정 실시예들에서, <수학식 3>의 행렬과 유사한 행렬이 포인트 클라우드의 특정 부분에 메타데이터를 적용하기 위해 사용될 수 있다. 예를 들면, 스케일링 메타데이터는 포인트 클라우드의 한 부분에 적용될 수 있지만 포인트 클라우드 전체에는 적용되지 않는다.
특정 실시예들에서, 포인트 속성 정보는 병합 위치(co-located location)에 저장된다. 병합 위치는 다른 비디오 프레임에 있는 기하학적 좌표의 투영 위치에 해당한다. 예를 들면, 포인트 (xn, yn, zn)에 해당하는 색상 좌표는 x'n = g(y'n, z'n) 일 때 프레임 f에 저장될 수 있다. 예를 들어, 포인트 클라우드에 있는 포인트의 빨간색 구성 요소는 f(y'n, z'n, 1)로 나타낼 수 있다. 유사하게, 포인트 클라우드에 있는 포인트의 청색 구성 요소는 f(y'n, z'n, 2)로 나타낼 수 있고, 포인트 클라우드에 있는 포인트의 녹색 구성 요소는 f(y'n, z'n, 3)에 의해 나타낼 수 있다. 특정 실시예들에서, 포인트 속성 정보는 기하 구조 프레임들 514 중 하나와 같은 동일한 프레임 내에 공간 오프셋을 가지고 저장된다.
비-직교 투영들은 3차원 포인트 클라우드 502와 같은 3차원 포인트 클라우드의 일부를 스케일링 할 수 있다. 예를 들면, ROI 코딩, 프로그레시브 또는 스케일링 코딩, 저밀도 포인트 클라우드 코딩 등은 비-직교 투영들을 사용할 수 있다. 관심 영역 코딩은 도 9와 관련하여 아래에서 보다 상세히 설명된다. 프로그레시브 또는 스케일링 코딩은 도 8과 관련하여 아래에서 보다 상세하게 설명된다. 저밀도 포인트 클라우드 코딩은 도 7B 및 7C와 관련하여 아래에서 보다 상세히 설명된다.
디코더 550은 렌더링을 위해 포인트 클라우드를 디코딩하고 재구성하는 본 개시의 전자 장치의 실시 예의 상위 개요를 도시한다. 특정 실시예들에서, 디코더는 인코딩된 비트스트림 528에서 압축된 기하 구조 및 속성들을 추출한다. 특정 실시예들에서, 디코더 550은 3차원 포인트 클라우드 502를 생성하기 위하여 기하 구조 및 속성을 맵핑한다. 디코더 550은 디멀티플렉서(demultiplexer) 552, 디코딩 엔진 554, 디코딩된 기하 구조 프레임들 556, 디코딩된 텍스처 프레임들 558, 디코딩된 점유 맵 프레임들 560, 보조 정보 562, 및 재구성 엔진 554를 포함한다. 특정 실시예들에서, 디코더 650은 둘 또는 그 이상의 디코딩 엔진들 554를 포함한다. 인코더 500의 하나 또는 그 이상의 기하 구조 프레임들 514는 디코더 550의 디코딩된 기하 구조 프레임들 556이다. 유사하게, 인코더 550의 하나 또는 그 이상의 텍스처 프레임들 518은 디코더 550의 디코딩된 텍스처 프레임들 558이다. 또한, 인코더 500의 하나 또는 그 이상의 점유 맵 프레임들 522은 디코더 550의 디코딩된 점유 맵 프레임들 560이다. 인코더 500의 보조 정보(506)는 디코더 550의 보조 정보 562이다.
디코더 550는 (하나 또는 그 이상의 기하 구조 프레임들 514, 하나 또는 그 이상의 텍스처 프레임들 518, 하나 또는 그 이상의 점유 맵 프레임들 522과 같은) 다양한 프레임들의 패치들 내의 정보 및 보조 정보 506를 3차원 포인트 클라우드를 재구성하기 위해 사용한다. 디코더 550는 인코더 500로부터 유래된 인코딩된 비트스트림 528을 수신한다. 인코딩된 비트스트림 528을 수신하면, 디멀티플렉서 552는 인코딩된 비트스트림 528으로부터 다양한 데이터 스트림들을 분리한다. 예를 들면, 디멀티플렉서 552는 기하 구조 프레임 정보, 텍스처 프레임 정보, 점유 맵 정보 및 보조 정보 562와 같은 다양한 데이터 스트림들을 분리한다. 디코딩 엔진 554은 디코딩된 기하 구조 프레임들 556을 생성하기 위해 기하 구조 프레임 정보를 디코딩한다. 유사하게, 디코딩 엔진 554은 디코딩된 텍스처 프레임들 558을 생성하기 위해 텍스처 프레임 정보를 디코딩한다. 특정 실시예들에서, 인코딩된 비트스트림 528에 포함된 정보의 각 세트에 대한 개별적인 디코딩 엔진이 있다. 예를 들면, 디코딩 엔진 554과 유사한 별도의 병렬 디코딩 엔진들이 각각의 수신된 스트림을 처리할 수 있다. 디코딩 엔진 554은 다양한 데이터 스트림들을 압축 해제한다. 특정 실시예들에서, 디코딩 엔진 554은 무손실이거나 또는 손실이 있을 수 있다. 특정 실시예들에서, 디코딩 엔진 554은 손실이 있게 또는 무손실로 인코딩된 비트스트림 528으로부터 신호를 재구성할 수 있다.
보조 정보 562는 (i) 스케일, (ii) 오프셋, (iii) 회전, (iv) 포인트 크기, (v) 포인트 형상 등과 같은 메타데이터를 포함한다. 보조 정보 562는 또한 3차원 포인트 클라우드를 재구성하는 것과 관련하여 메타데이터가 적용되어야 하는 곳을 나타내는 하나 또는 그 이상의 플래그들(예: 플래그들 508)을 포함할 수 있다. 특정 실시예들에서, 보조 정보 562는 메타데이터 및 메타데이터를 적용할 때를 시그널링 하기 위한 기술을 포함할 수 있다. 예를 들면, 메타데이터는 (i) 단일 제어 플래그(예: 플래그 508), (ii) 활성 플래그(enabling flag) 및 현재 플래그(present flag)와 같은 두 개의 플래그들(예: 플래그 508), (iii) 이전에 시그널링 된 메타데이터의 재사용에 의한 절대 시그널링 (iv) 이전에 시그널링 된 메타데이터의 재사용에 의한 조건부 시그널링, 및 (v) 이전에 시그널링 된 메타 데이터를 참조 식별과 함께 재사용을 사용하여 시그널링 될 수 있다.
재구성 엔진 564은 다양한 프레임들(기하 구조 프레임들 556, 텍스쳐 프레임들 558, 점유 맵 프레임들 560) 및 보조 정보로부터 수신한 데이터에 기초하여 3차원 포인트 클라우드를 재구성한다. 3차원 포인트 클라우드 502의 포인트들은 기하 구조 프레임들 556 및 텍스처 프레임들 558의 패치들에 포함된 포인트들로부터 재구성된다. 디코딩된 보조 패치 정보 670로부터 각 프레임(기하 구조 프레임들 556 및 텍스처 프레임들 558)에 포함된 패치들은 보조 정보 562에 포함된 메타데이터에 기초하여 수정될 수 있다. 재구성 엔진 564은 플래그에 기초하여 각 유형의 메타 데이터를 적용할 곳을 결정한다. 예를 들면, 플래그는 패치들 또는 프레임들의 특정 부분에 어떤 메타데이터가 언제 적용되는 지를 신호할 수 있다.
플래그 508와 관련하여 전술한 바와 같이, 플래그는 각 유형의 메타 데이터와 연관된 활성 플래그 및 현재 플래그의 2 개의 플래그를 포함할 수 있다. 플래그들은 메타데이터 파라미터가 시그널링 되는지 또는 시그널링 되지 않는지를 제어한다. 플래그들은 패치 레벨, 프레임 레벨, GOF 레벨, 시퀀스(sequence) 레벨, 비디오 레벨 등과 같은 다양한 액세스 레벨들과 연관될 수 있다. 계층적 구조에서, 플래그들은 연관된 액세스 레벨에 따라 메타데이터가 해당 특정 액세스 레벨 및 해당 액세스 레벨에 포함된 모든 데이터에 적용되는지 여부를 나타낸다. 예를 들면, 메타데이터가 패치 레벨에서 시그널링 되면, 그 특정 패치는 메타데이터에 의해 수정된다. 이 예에서 메타데이터는 다른 패치들이나 다른 프레임들에 적용되지 않을 수 있다. 다른 예에서, 메타데이터가 (예를 들어, 기하 구조 프레임들 556의 한 프레임에서와 같이) 프레임 레벨에서 시그널링 되면, 메타데이터는 그 프레임 내의 하나 또는 그 이상의 패치들에 적용된다. 이 예에서 메타데이터는 다른 프레임의 패치들에는 적용되지 않을 수 있다. 다른 예에서, 메타 데이터가 GOF 레벨에서 시그널링 되는 경우, 메타데이터는 하나 또는 그 이상의 프레임들 및 이 프레임들에 포함된 다양한 패치들에 적용된다. 이 예에서 메타데이터는 다른 GOF의 패치들에 적용되지 않을 수 있다.
도 5A의 플래그 508와 관련하여 전술한 바와 같이, 플래그 508는 메타데이터가 도 5B의 디코더 550와 같은 디코더에 적용될 때를 신호할 수 있다. 2 개의 이진 제어 플래그들(구문 1, 2, 3 및 4와 관련하여 위에서 설명된 활성 플래그 및 현재 플래그)을 사용하는 절대 시그널링에 부가하여, 보조 정보 506는 메타데이터가 포인트 클라우드를 수정하기 위해 적용되는 때를 나타내는 부가 시그널링 기술들을 포함할 수 있다. 특정 실시예들에서, 메타데이터는 (i) 단일 제어 바이너리 플래그를 사용하는 절대 시그널링, (ii) 이전에 시그널링 된 메타 데이터의 재사용에 의한 절대 시그널링, (iii) 이전에 시그널링 된 메타데이터의 재사용에 의한 조건부 시그널링, 및 (iv) 참조 식별에 의해 시그널링 될 수 있다.
예를 들면, 인코더 500는 디코더가 포인트 클라우드에 메타데이터를 적용해야만 하는 때를 단일 제어 바이너리 플래그를 통해 표시할 수 있다. 각각의 파라미터 세트는 해당 메타데이터 파라미터 세트가 비트스트림에서 시그널링 되는지 여부를 제어하는 활성 플래그를 갖는다.
구문 6:

read video_metadata_present_flag;
if (video_metadata_present_flag) {
video_parameter_set_matadata();
}

...

read seq_metadata_ present _flag;
if (seq_metadata_present_flag) { seq_parameter_set_matadata();
}

...

}

...

read gof_metadata_ present _flag;
if (gof_metadata_present_flag) {
gof_parameter_set_matadata();
}

...

}

...

read frame_metadata_present_flag;
if (frame_metadata_present_flag) {
frame_parameter_set_matadata();
}

...

}

...

read patch_metadata_present_flag;
if (patch_metadata_present_flag) {
patch_parameter_set_matadata();
}
표 7의 구문 6은 최상위 파라미터 세트 내의 메타데이터 파라미터들이, 시그널링 되면, 비트스트림으로부터 먼저 판독되고, 그렇지 않으면 파라미터 세트가 몇몇 디폴트 값으로 설정되는 것을 도시한다. 다음으로, 하나의 하위 레벨 파라미터 세트 내의 메타데이터 파라미터들이, 시그널링 되면, 비트 스트림으로부터 판독된다. 그렇지 않은 경우, 파라미터 세트는 한 레벨 위의 해당 파라미터들의 값으로 설정된다. 이 프로세스는 최하위 레벨 파라미터 세트 내의 메타데이터 파라미터들이 비트스트림으로부터 판독되거나 한 레벨 위의 해당 파라미터로부터 설정될 때까지 계속됩니다. 아래 표 8의 구문 7은 스케일링을 위한 메타데이터 파라미터 세트를 도시한다.
구문 7:

// Read video-level metadata.
video_parameter_set_matadata()
{
// Read video-level present flags.
read video_metadata_present_flag;
if (video_metadata_present_flag) {
read video_scale_metadata_present_flag;
// read other video-level metadata present flags.
...
}
else {
video_scale_metadata_present_flag = false;
...
}

// Read video-level scale metadata.
if (video_scale_metadata_present_flag) {
read video_scale_metadata_on_axis_x;
read video_scale_metadata_on_axis_y;
read video_scale_metadata_on_axis_z;
}
else {
video_scale_metadata_on_axis_x = <default_value>;
video_scale_metadata_on_axis_y = <default_value>;
video_scale_metadata_on_axis_z = <default_value>;
}

// Read other video-level metadata.
...
}

// Read sequence-level metadata.
seq_parameter_set_matadata()
{
// Read sequence-level present flags.
read seq_metadata_present_flag;
if (seq_metadata_present_flag) {
read seq_scale_metadata_present_flag;
// Read other sequence-level metadata present flags.
...
}

// Read sequence-level scale metadata.
if (seq_scale_metadata_present_flag) {
read seq_scale_metadata_on_axis_x;
read seq_scale_metadata_on_axis_y;
read seq_scale_metadata_on_axis_z;
}
else {
seq_scale_metadata_on_axis_x = video_scale_metadata_on_axis_x;
seq_scale_metadata_on_axis_y = video_scale_metadata_on_axis_y;
seq_scale_metadata_on_axis_z = video_scale_metadata_on_axis_z;
}

// Read other sequence-level metadata.
...
}

// Read frame-level metadata.
frame_parameter_set_matadata()
{
...
}

// Read patch-level metadata.
patch_parameter_set_matadata()
{
...
}
표 8의 구문 7은 스케일링 파라미터 세트가 특정 레벨에 존재하지 않을 때, 그 값이 그 다음 상위 레벨의 파라미터 값인 것으로 추론되는 것을 도시한다. 예를 들면, 구문 요소 'patch_resolution_metadata'가 존재하지 않으면, 'patch_resolution_metadata'의 값은 한 단계 높은 액세스 레벨인 'frame_resolution_metadata'에서 추론된다. (해당 파라미터 집합에 대한 현재 플래그 값이 거짓인 경우와 같이) 파라미터 집합이 존재하지 않으면 해당 파라미터 집합의 모든 메타데이터 파라미터들의 값들이 다음 상위 레벨의 값들에서 유추된다. (특정 실시예들에서 비디오 파라미터 세트와 같은) 가장 높은 액세스 레벨에서, 특정 파라미터가 존재하지 않으면 그 값은 디폴트 값인 것으로 유추된다. 결과적으로, 각 레벨에서, 각 파라미터는 유추 또는 비트스트림의 명시적 시그널링을 통해 유효한 값으로 할당된다.
다른 예에서, 포인트 클라우드에 메타데이터를 적용할 때를 디코더 550에 지시하기 위하여, 인코더 500는 이전에 시그널링 된 메타데이터의 재사용에 의한 절대 시그널링을 통해 표시할 수 있다. 예를 들면, (도 5의 플래그 508과 같은) 플래그는 파라미터 세트 메타데이터가 이전 세트와 동일한 지 여부를 나타낸다. 단일 플래그 또는 상이한 플래그들이 각 파라미터 세트 내에서 상이한 메타데이터 파라미터들을 나타낼 수 있다. 유사하게, 하나의 단일 플래그 또는 상이한 플래그들이 상이한 파라미터 세트들을 나타낼 수 있다. 아래 표 9의 구문 8은 현재 플래그가 재사용 플래그 이전에 검사되는 스케일 메타 데이터 파라미터를 도시한다. 플래그가 시그널링 되지 않으면 거짓으로 유추된다.
구문 8:

// In the video level
...
read video_scale_metadata_reuse_flag;
if (video_scale_metadata_reuse_flag) {
video_scale_metadata_on_axis_x = previous_video_scale_metadata_on_axis_x;
video_scale_metadata_on_axis_y = previous_video_metadata_scale_on_axis_y;
video_scale_metadata_on_axis_z = previous_video_metadata_scale_on_axis_z;
} else {
read video_scale_metadata_present_flag;
if (video_scale_metadata_present_flag) {
read video_scale_metadata_on_axis_x;
read video_scale_metadata_on_axis_y;
read video_scale_metadata_on_axis_z;
}
}
if (!video_scale_metadata_reuse_flag && !video_scale_metadata_present_flag) {
video_scale_metadata_on_axis_x = <default_value>;
video_scale_metadata_on_axis_y = <default_value>;
video_scale_metadata_on_axis_z = <default_value>;
}
...
*표 9의 구문 8에서, 유사한 구문 요소들이 시퀀스 액세스 레벨, GOF 액세스 레벨, 프레임 액세스 레벨 및 패치 액세스 레벨에서 표현될 수 있다. 다른 예에서, 메타데이터 파라미터가 비트스트림으로부터 판독되는지 또는 이전에 시그널링 된 것으로 할당되는지 여부를 결정하기 위해 하나의 이진 플래그가 시그널링 된다.
다른 예에서, 포인트 클라우드에 메타데이터를 적용할 때를 디코더 550에 지시하기 위하여, 인코더 500는 이전에 시그널링 된 메타데이터의 재사용에 의한 조건부 시그널링을 통해 표시할 수 있다. 예를 들면, 2 개의 이진 플래그 (또는 1 개의 정수 플래그)는 파라미터 세트가 이전 세트로부터 할당될 것인지 또는 예측될 것인지 여부를 나타낼 수 있다.
구문 9:

// In the video level
read video_scale_metadata_reuse_flag;
if (video_scale_metadata_reuse_flag) {
video_scale_metadata_on_axis_x = previous_video_scale_metadata_on_axis_x;
video_scale_metadata_on_axis_y = previous_video_scale_metadata_on_axis_y;
video_scale_metadata_on_axis_z = previous_video_scale_metadata_on_axis_z;
} else
read video_scale_metadata_predict_flag;
if (video_scale_metadata_predict_flag) {
read video_scale_metadata_on_axis_x;
read video_scale_metadata_on_axis_y;
read video_scale_metadata_on_axis_z;
video_scale_metadata_on_axis_x += previous_video_scale_metadata_on_axis_x;
video_scale_metadata_on_axis_y += previous_video_scale_metadata_on_axis_y;
video_scale_metadata_on_axis_z += previous_video_scale_metadata_on_axis_z;
}
}
if (!video_scale_metadata_reuse_flag && !video_scale_metadata_predict_flag) {
video_scale_metadata_on_axis_x = <default_value>;
video_scale_metadata_on_axis_y = <default_value>;
video_scale_metadata_on_axis_z = <default_value>;
}
...
*표 10의 구문 9에서, 유사한 구문 요소들이 시퀀스 액세스 레벨, GOF 액세스 레벨, 프레임 액세스 레벨 및 패치 액세스 레벨에서 표현될 수 있다. 구문 9는 이전 세트의 할당이 이전 세트로부터의 예측보다 우선 순위가 있음을 도시한다. 예측은 상이한 순서로 시그널링 될 수 있다.
다른 예에서, 포인트 클라우드에 메타데이터를 적용할 때를 디코더 550에 지시하기 위하여, 인코더 500는 참조 식별을 통해 표시할 수 있다. 즉, 목록이 상이한 액세스 레벨에서 이전에 명시적으로 시그널링 된 다수의 메타데이터 파라미터 세트를 유지하기 위해 사용된다. 이후, 각 파라미터 세트는 참조 또는 식별 파라미터를 사용하여 목록의 파라미터 세트 중 하나를 참조한다.
구문 10:

read reference_id;
if (reference_id equal 0)
read_parameter_set_metadata();
else
// Assign a previous parameter set according to reference_id.
assign_parameter_set_metadata(reference_id);
표 11의 구문 10에서, 파라미터 세트의 고정 크기 버퍼는 목록을 채우기 위한 세트 규칙과 함께 사용된다: 예를 들면, 시퀀스 액세스 레벨 및 GOF 액세스 레벨에서의 모든 파라미터 세트가 포함된다. 나머지 목록은 이전에 시그널링 된 파라미터 세트를 사용하여 채워진다.
도 6a, 도 6b 및 도 6c는 본 개시의 일 실시예에 따른 3 차원 포인트 클라우드를 나타내는 3차원 포인트 클라우드 및 2차원 프레임들의 예를 도시한다. 특히, 도 6A는 3차원 포인트 클라우드 610를 도시하고, 도 6B, 6C는 정규 패치들을 포함하는 2차원 프레임들을 도시한다. 도 6A, 도 6B 및 도 6c는 단지 설명을 위한 것이며, 다른 실시들이 본 개시의 범위를 벗어나지 않고 사용될 수 있다.
3차원 포인트 클라우드 610는 도 4의 포인트 클라우드 405, 도 4의 메쉬(mesh, 410), 도 5A 및 5B의 3차원 포인트 클라우드 502와 유사하다. 3차원 포인트 클라우드 610는 3차원 공간에서의 데이터 포인트들의 세트이다. 3차원 포인트 클라우드의 각 포인트는 (i) 3 차원 포인트 클라우드의 구조를 제공하는 기하학적 위치 및 (ii) 색상, 반사도, 재질 등과 같은 각 포인트에 대한 정보를 제공하는 하나 또는 그 이상의 텍스처를 포함한다.
도 6B 및 6C는 2차원 프레임들(각각 620 및 630)을 도시한다. 프레임들 620은 3 차원 포인트 클라우드 610의 텍스처를 나타내는 (패치 622와 같은) 정규 패치들을 도시한다. 프레임 630은 3 차원 포인트 클라우드 610의 깊이(depth) 값을 나타내는 (패치 632와 같은) 정규 패치들을 도시한다. 프레임들 620, 630은 도 5A의 하나 또는 그 이상의 텍스처 프레임들 518 및 하나 또는 그 이상의 기하 구조 프레임들 514와 유사할 수 있다.
후술할 도 7A 내지 도 10B는 스케일, 오프셋, 회전, 포인트 크기 및 포인트 형상과 같은 메타데이터를 사용하여 3차원 포인트 클라우드를 수정하는 것을 도시한다. 비-직교 투영은 ROI, 프로그레시브 코딩 및 저밀도 포인트 클라우드 조작을 나타내기 위해 3차원 포인트 클라우드의 스케일을 조정할 수 있다. 예를 들면, 스케일 및 오프셋은 (도 4의 포인트 클라우드 405, 도 4의 메쉬 410, 도 5A 및 5B의 3차원 포인트 클라우드 502 및 도 6a의 3차원 포인트 클라우드(610)와 유사한) 3차원 포인트 클라우드를 복셀화된 그리드(voxelized grid)에 정규화할 수 있다. 압축된 비트스트림을 수신한 후에, 도 5B의 디코더 550와 같은 디코더는 수신된 비트스트림을 압축 해제한다. 전역 스케일 및 오프셋 메타데이터가 디코더에서 사용 가능하게 되면 포인트 클라우드는 원래 좌표로 다시 스케일될 수 있다.
적응적 스트리밍은 상이한 비트레이트 및 해상도로 동일한 3차원 포인트 클라우드의 스트리밍이다. 예를 들면, 상이한 비트레이트 및 해상도의 3차원 포인트 클라우드들이 생성될 수 있고, 데이터베이스 또는 서버와 같은 정보 저장소에 저장될 수 있다. 렌더링 클라이언트는 네트워크 대역폭에 따라 특정 비트레이트/해상도를 요청한다. 수신된 포인트 클라우드의 해상도가 장치의 디스플레이 해상도와 상이하다면, 장치는 포인트 클라우드를 적절하게 스케일링한다. 상이한 해상도 포인트 클라우드들은 (i) 원래 복셀 그리드 해상도의 포인트 클라우드를 서브 샘플링하거나, 또는 (ii) 복셀 그리드를 줄일 수 있다. 포인트 클라우드를 서브 샘플링하면 저밀도 포인트 클라우드로 이어질 수 있다. 대조적으로, 복셀 그리드를 줄이는 것은 기하학적 좌표들을 스케일링 함으로써 치밀한 포인트 클라우드로 이어질 수 있다. 스케일 메타데이터에 포함된 스케일 인자는 인코더에서 복셀 그리드를 변경하고 디코더에서 메타데이터는 포인트 클라우드를 원래 좌표계로 돌아가기 위해 사용된다.
비-직교 투영을 통한 포인트 클라우드 스케일링은 저밀도 포인트 클라우드를 해결할 수 있다. 예를 들면, x, y 및 z는 저밀도 포인트 클라우드의 좌표이고, xs, ys 및 zs는 도 5의 인코더 500와 같은 인코더에 입력된 스케일링된 포인트 클라우드의 좌표이다. x 좌표에서 스케일링된 포인트 클라우드는 xs=(x+offset_x)*scale_factor_x로 표현된다. y 좌표에서 스케일링된 포인트 클라우드는 ys=(y+offset_y)*scale_factor_y로 표현된다. z 좌표에서 스케일링된 포인트 클라우드는 zs=(z+offset_z)*scale_factor_z로 표현된다. xr, yr 및 zr이 도 5B의 디코더 550와 같은 디코더의 출력에서 재구성된 포인트 클라우드에서의 좌표라면, xo, yo 및 zo는 최종 스케일링된 포인트 클라우드의 포인트의 좌표이고, 각 포인트의 출력은 아래의 <수학식 4>에 의해 표현된다.
회전 메타데이터는 투영 평면을 제어하는 데 사용된다. 예를 들면, 도 5A의 패치 생성기 504는 포인트 클라우드의 패치들을 생성한다. 패치 경계 아티팩트(patch boundary artifacts)는 패치 경계 아티팩트를 피하기 위해 디코더에서 패치가 포인트 클라우드로 재구성될 때 패치의 경계선에서 발생하며 포인트 클라우드는 회전할 수 있으며, 그에 따라 포인트 클라우드의 특정 부분에서 패치가 생성되지 않는다. 예를 들면, 휴머노이드 포인트 클라우드의 얼굴 위에 패치가 생성되는 경우 인코더는 포인트 클라우드를 회전시켜 두 개 또는 그 이상의 패치로 포인트 클라우드의 얼굴이 나뉘지 않도록 할 수 있다. 포인트 클라우드를 회전하면 얼굴이 단일 패치로 나타날 수 있다. 회전의 크기는 디코더가 포인트 클라우드를 재구성할 수 있도록 회전 메타데이터로 저장된다. 회전 메타데이터는 압축 해제된 포인트 클라우드를 원래 좌표로 역 회전하는데 기초가 된다.
도 7A 및 7B는 패치들로부터 포인트 클라우드를 재구성하는 프로세스를 도시한다. 특히, 도 7A는 본 개시의 일 실시예에 따른 스케일 된 해상도로 패치를 수신하는 흐름도 700의 일 예를 도시한다. 도 7B 및 7C는 패치를 포함하는 비트스트림을 생성하는 프로세스 760 및 본 개시의 일 실시예에 따른 비티스트림을 수신하는 프로세서 780을 도시한다. 도 7A, 7B 및 7C의 실시예는 단지 설명을 위한 것이며, 다른 실시예들이 본 개시의 범위에 벗어남이 없이 사용될 수 있다.
흐름도 700은 도 1의 클라이언트 장치들 106 내지 114 중의 어느 하나 및 도 5B의 디코더 550에 의해 구현될 수 있고, 도 2의 서버 200 및 도 3의 전자 장치 300의 구성요소와 유사한 내부 구성요소들을 포함한다. 프로세스는 디코더 550가 기하 구조 프레임들 556 및 텍스쳐 프레임들 558과 같은 압축 해제된 프레임들 내의 패치들을 감지 단계 710으로 시작한다. 단계 720에서 패치가 정상인지 결정된다. 즉, 디코더 550는 패치가 도 5A의 인코더 500와 유사한 인코더에 의해 밀도, 해상도 또는 스케일 변화를 겪었는지 여부를 결정한다.
패치가 수정되지 않은 경우, 단계 740에서 디코더 550는 패치를 3차원 포인트 클라우드로 재구성한다. 패치가 인코더에 의해 밀도, 해상도 또는 스케일 변화를 겪은 경우, 단계 730에서 패치 데이터는 패치를 패치의 원래 형태로 되돌리기 위해 수정된다. 패치가 원래 형태로 되돌려진 후에, 단계 740에서 디코더 550는 패치를 3차원 포인트 클라우드로 재구성한다. 디코더가 패치를 재구성한 후에, 단계 750에서 디코더는 재구성된 3차원 포인트 클라우드를 출력한다. 재구성된 3차원 포인트 클라우드는 사용자가 볼 수 있도록 디스플레이(예: 도 3의 디스플레이 355)에 디스플레이 될 수 있다.
도 7B는 3차원 포인트 클라우드 762a의 비트스트림을 생성하는 프로세스 760을 도시한다. 3차원 포인트 클라우드 762a는 도 5A의 인코더 500와 유사한 인코더에 의해 패치들로 표현된다. 단계 764에서 인코더는 포인트 클라우드를 정규화된 3차원 포인트 클라우드 762b로 스케일링하고 오프셋을 추가한다. 압축 엔진 768은 정규화된 3차원 포인트 클라우드 762b를 인코딩된 비트스트림 770으로 압축한다. 오프셋 메타데이터 766의 스케일은 인코딩된 비트스트림 770으로 다중화된다.
도 7C는 도 5B의 디코더 550와 같은 디코더의 인코딩된 비트스트림 770을 수신하는 프로세스 780을 도시한다. 인코딩된 비트스트림 770은 스케일링 되고 오프셋된 메타데이터 772 및 압축된 정규화된 3차원 포인트 클라우드 762b로 역다중화한다. 특정 실시예들에서 스케일링 되고 오프셋된 메타데이터 776 및 스케일링 되고 오프셋된 메타데이터 772는 동일하게 스케일 되고, 오프셋된 메타데이터 766은 인코더 500과 같은 인코더에 의해 생성되고, 인코딩된 비트스트림 770에 포함되고, 디코더 550와 같은 디코더에 의해 2차원 포인트 클라우드 762a로 재구성되기 위해 사용된다. 압축 해제 엔진 774는 압축된 정규화 된 3차원 포인트 클라우드 762b를 압축 해제한다. 그러면, 디코더는 원래의 3차원 포인트 클라우드 762a를 생성하기 위해 스케일링 되고 오프셋 된 메타데이터 772의 역변환을 수행한다.
도 8a는 본 개시의 실시 예에 따라 포인트 클라우드의 점진적인 비-직교 투영을 생성하는 프로세스 800을 도시한다. 도 8b는 본 개시의 실시 예에 따라 스케일링 된 포인트 클라우드를 수신하는 디코더의 예시적인 블록도를 도시한다. 도 8a는 도 5a의 인코더 500와 유사하다. 유사하게, 도 8b는 도 5b의 디코더 550와 유사하다. 도 8a 및 도 8b의 실시 예는 단지 설명을 위한 것이며 본 개시의 범위를 벗어나지 않고 다른 실시 예가 사용될 수 있다.
도 1의 서버 104와 같은 소스 디바이스로부터 임의의 클라이언트 디바이스 106-116와 같은 클라이언트 디바이스로의 3차원 포인트 클라우드의 점진적이고 적응성 있는 비트레이트 송신은 다양한 네트워크 조건 및 디바이스 (예를 들어, 디코더 550 또는 클라이언트 디바이스 106-116) 개별 능력을 허용한다. 예를 들어, 디코더는 네트워크 대역폭, 디코더의 처리 능력, 3차원 포인트 클라우드를 렌더링하는 디바이스 처리 능력 또는 이들의 조합이 더 낮을 때 낮은 수준의 세부 정보(lower level of detail, LLOD)를 포함하는 압축된 비트스트림을 수신할 수 있다. 대조적으로, 디코더는 네트워크 대역폭 또는 디바이스 처리 능력이 높을 때 높은 수준의 세부 정보(high level of detail, HLOD)를 포함하는 압축된 비트스트림을 수신할 수 있다. LLOD는 위의 <수학식 2> 및 <수학식 3>과 유사하게 3차원 포인트 클라우드의 2차원 프레임으로의 비-직교 투영을 수행함으로써 생성될 수 있다.
프로세스 800은 도 5a의 인코더 500와 유사하며, 포인트 클라우드가 프레임상에 투영되고 압축된 비트스트림으로 다중화된다. 3차원 포인트 클라우드들 802a, 802b은 도 7b 및 도 7c의 3차원 포인트 클라우드 762a, 도 6a의 3차원 포인트 클라우드 610, 도 5a 및 도 5b의 3차원 포인트 클라우드 502, 도 4의 포인트 클라우드 405 및 포인트 메쉬 410과 유사하다. 3차원 포인트 클라우드 802a은 HLOD이고, 3차원 포인트 클라우드 802b은 LLOD이다. 특정 실시예에서, 3차원 포인트 클라우드 802b는, 스케일 변환 또는 프레임 806과 같은 더 작은 비디오 프레임상에 비-직교 투영으로 인한, 3차원 포인트 클라우드 802a의 소형 버전이다.
3차원 포인트 클라우드 802a은 직교 투영 통해 프레임 804 상에 투영될 수 있다. 3차원 포인트 클라우드 802b는 비-직교 투영을 통해 프레임 806 상에 투영될 수 있다. 프레임 804, 806은 도 5a의 기하 구조 프레임 514, 텍스처 프레임 518 및 점유 맵 프레임 522과 유사할 수 있다. 프레임 806 (비-직교 투영)은 프레임 804 (직교 투영)보다 작다는 것을 유의해야한다. 프레임 804, 806은 각각 3차원 포인트 클라우드 802a, 802b을 나타내는 다양한 속성(예를 들어 기하 구조, 텍스처, 점유 맵 등)의 프레임을 나타낸다. 프레임 806은 프레임 804보다 작고, 따라서 프레임들 806이 디코더에 송신될 때 더 작은 대역폭을 사용한다.
업 샘플 모듈 808은 프레임이 프레임 804과 동일하거나 유사한 차원이 되도록 프레임 806을 업 샘플링한다. 특정 실시 예에서, 업 샘플 모듈 808이 프레임 806을 업 샘플링하는 양은 미리 결정된다. 특정 실시 예에서, 업 샘플 모듈 808은 프레임 804의 차원을 식별하고, 프레임 804의 차원 및 프레임 806의 차원이 동일하도록 프레임 806을 상응하는 양으로 업 샘플링한다.
비교 엔진 810은 프레임 804을 업 샘플링 된 프레임 806과 비교하고, 프레임들 간 잔여 차이를 추출한다. 예를 들어, 비교 엔진 810은 3차원 포인트 클라우드 802a, 및 3차원 포인트 클라우드 802b를 나타내는 각각의 기하 구조 프레임, 각각의 텍스처 프레임 간 잔여 차이를 추출한다. 즉, 비교 엔진 810은 프레임 804의 각각의 프레임과 프레임 806의 각각의 프레임 간의 차이를 추출한다. 프레임 804의 각각의 프레임과 프레임 806의 각각의 프레임 간 차이는 3차원 포인트 클라우드 802a의 HLOD와 3차원 포인트 클라우드 802b의 LLOD 간 해상도의 차이를 나타낸다.
인코딩 엔진 812 및 인코딩 엔진 814은 도 5a의 인코딩 엔진 516, 520 및 524과 유사하다. 특정 실시 예에서, 인코딩 엔진 812 및 814은 기하 구조 프레임, 텍스처 프레임, 점유 맵 프레임 등과 같은 상이한 유형의 프레임을 인코딩하는 다수의 인코딩 엔진을 나타낸다. 인코딩 엔진 814은 LLOD 프레임 806을 인코딩한다. 그 다음, 인코딩 엔진 814은 LLOD 포인트 클라우드 802b의 인코딩된 비트스트림 822을 생성한다. 인코딩 엔진 812은 LLOD 프레임 806과 HLOD 프레임 804 사이의 추출된 차이를 인코딩한다. 그 다음, 인코딩 엔진 812은 HLOD 포인트 클라우드 802a의 인코딩된 비트스트림 820을 생성한다.
특정 실시 예에서, 인코딩된 비트스트림 820 및 인코딩된 비트스트림 822은 개별적으로 디코더에 송신된다. 인코딩된 비트스트림 822은 기초 레이어이고 인코딩된 비트스트림 820은 향상된 레이어이다. 향상된 레이어 및 기초 레이어는 디코더에 송신될 수 있고, 디코더는 기본 레이어만 디코딩할지 또는 기초 레이어 및 향상된 레이어 모두를 디코딩할지를 결정한다.
특정 실시 예에서, 인코딩된 비트스트림 820 및 인코딩된 비트스트림 822은 멀티플렉서 818에 의해 함께 다중화되고 단일 압축된 비트스트림 824으로서 디코더에 송신된다. 멀티플렉서 818는 도 5a의 멀티플렉서 526와 유사하다.
도 8b는 디코더 850를 도시한다. 디코더 850는 렌더링을 위해 포인트 클라우드를 디코딩하고 재구성하는 전자 디바이스에 대한 본 개시 실시 예의 높은 수준의 개요를 도시한다. 디코더 850는 도 5b의 디코더 550와 유사하다. 디코더 850는 2개의 서브 디코더, 즉 디코더 850a 및 디코더 850b를 포함한다. 디코더 850a는 HLOD를 디코딩하고, 디코더 850b는 LLOD를 디코딩한다. 디코더 850는 도 8a로부터 압축된 비트스트림 824을 수신한다. 디코더 850는 디멀티플렉서 852, 보조 정보 업스케일링 854, 텍스쳐 업스케일링 856, 기하 구조 업스케일링 858 및 점유 맵 업스케일링 859을 포함한다.
보조 정보 업스케일링 854, 텍스쳐 업스케일링 856, 기하 구조 업스케일링 858 및 점유 맵 업스케일링 859은, 비트 스트림 822a을 통해, 디코더 850b로부터 디코딩된 콘텐츠를 업 샘플링하는 메타 데이터를 나타낸다. 디코더 850b로부터의 스케일링된 콘텐츠는 디코더 850a의 정보(비트스트림 820a)를 증가시킨다. 예를 들어, 디코더 850b는 3차원 포인트 클라우드 802b를 나타내는 LLOD 프레임(도 8a의 프레임 806)을 디코딩하고, 디코더 850a는 3차원 포인트 클라우드 802a의 HLOD와 3차원 포인트 클라우드 802b의 LLOD 간 추출된 차이를 디코딩한다. 디코더 850a가 수신하는 콘텐츠는 콘텐츠가 3차원 포인트 클라우드 802a의 HLOD와 3차원 포인트 클라우드 802b의 LLOD 간 차이이므로 3차원 포인트 클라우드 802a을 재구성하기에 불충분하다. 따라서, 업스케일링 메타 데이터 (보조 정보 업스케일링 854, 텍스쳐 업스케일링 856, 기하 구조 업스케일링 858 및 점유 맵 업스케일링 859)은 디코더 850b의 다양한 데이터 요소에 적용되고, 디코더 850b는 대응하는 디코더 850a의 콘텐츠를 증가시킨다. 따라서, 디코더 850a를 허용함으로써 3차원 포인트 클라우드 802a의 HLOD를 재구성할 수 있다.
멀티플렉서 852는 도 5b의 디멀티플렉서 552와 유사하다.  디코더 850는 디코더 550와 유사한 디코더 850a 및 디코더 850b의 2개의 개별 디코더를 포함한다. 디코더 850a는 (1) 디멀티플렉서 860, (2) 기하 구조 프레임들 864, 텍스쳐 프레임들 866 및 점유 맵 프레임들 868을 디코딩 하는 디코딩 엔진 862, (3) 보조 정보 870 및 (4) 재구성 엔진 872을 포함한다. 디코더 850a의 구성요소는 도 5b의 디코더 550의 각 구성요소와 유사하다. 예를 들어, 디멀티플렉서 860는 디멀티플렉서 552와 유사하고, 디코딩 엔진 862은 디코딩 엔진 554과 유사하며, 재구성 엔진 872은 재구성 엔진 564과 유사하다. 유사하게, 디코더 850b는 (1) 디멀티플렉서 880, (2) 기하 구조 프레임들 884, 텍스처 프레임들 886 및 점유 프레임들 888을 디코딩 하는 디코딩 엔진 882, (3) 보조 정보 890 및 (4) 재구성 엔진을 포함한다. 디코더 850b의 구성요소는 도 5b의 디코더 550의 각 구성요소와 유사하다. 예를 들어, 디멀티플렉서 880는 디멀티플렉서 552와 유사하고, 디코딩 엔진 882은 디코딩 엔진 554과 유사하며, 재구성 엔진 892은 재구성 엔진 564과 유사하다.
디멀티플렉서 852는 비트스트림 824과 같은 단일 비트스트림이 수신되면, 수신된 비트스트림을 도 8a의 향상된 레이어 비트스트림 820과 유사한 향상된 레이어 비트스트림 820a과 도 8a의 기초 레이어 비트스트림 822과 유사한 기초 레이어 비트 스트림 822a로 분할한다. 향상된 레이어 비트스트림 820a은 이어서 디멀티플렉서 860에 의해 역다중화된다. 기초 레이어 비트 스트림 822a은 이어서 디멀티플렉서 880에 의해 역다중화된다.
특정 실시 예에서, 도시되지는 않았지만, 디코더 850는, 단일 비트스트림 824가 아닌, 도 8a의 향상된 비트스트림 824와 유사한 향상된 레이어 비트스트림 820a 및 도 8a의 기초 레이어 비트스트림 822와 유사한 기초 레이어 비트스트림 822a의 2개의 개별 비트스트림을 수신할 수 있다. 비트스트림은 각각의 디코더 850a, 850b로 보내지고 디멀티플렉서 852를 우회한다. 도 8a의 향상된 레이어 비트스트림 820은 디멀티플렉서 860에 의해 역다중화된다. 도 8a의 기초 레이어 비트스트림 822은 디멀티플렉서 880에 의해 역다중화된다.
각각의 3차원 포인트 클라우드 802a, 802b을 재구성하는 프로세스는 전술한 도 5b의 디코더 550의 프로세스와 유사하다. 각각의 3차원 포인트 클라우드 802a을 재구성하는 프로세스는, 비트스트림 822a에 포함된 콘텐츠에 적용된 업스케일링 메타 데이터로, 수신된 비트 스트림 820a의 콘텐츠를 보강한다. 기하 구조 업스케일링 858은 디코딩된 LLOD 기하 구조 프레임 884을 업 샘플링한다. LLOD 기하 구조 프레임 884은 도 8a의 프레임 806으로부터 디코딩된 기하 구조 프레임이다. LLOD 기하 구조 프레임 884의 업 샘플링은 공간 및 깊이 값 모두의 업 샘플링을 포함한다.
예를 들어, LLOD 기하 구조 프레임 884의 업 샘플링은 2개의 기하학적 좌표를 공간적으로 스케일링 하는 반면, LLOD 기하 구조 프레임 884의 깊이 값을 업 샘플링하는 것은 포인트 클라우드의 제3 기하 구조 좌표를 스케일링한다. 그 다음, 스케일링된 기하 구조 좌표가 디코딩된 기하 구조 프레임 864에 포함된다. 디코딩된 기하 구조 프레임 864은 업 스케일된 기하 구조 프레임 884뿐만 아니라, 업 샘플링 된 LLOD 프레임 806과 HLOD 프레임 804 간 추출된 차이 모두를 나타낸다.
텍스처 업스케일링 856은 디코딩된 LLOD 텍스처 프레임 886을 업 샘플링한다. LLOD 텍스처 프레임 886은 도 8a의 프레임 806의 디코딩된 텍스처 프레임이다. 그 다음, 스케일링된 텍스처 프레임은 디코딩된 텍스처 프레임 866에 포함된다. 디코딩된 텍스처 프레임 866은 업 스켈인된 텍스처 프레임 886뿐만 아니라, 업 샘플링된 LLOD 프레임 806 및 HLOD 프레임 804 간 추출된 차이 모두를 나타낸다.
보조 정보 업스케일링 854은 각각 디코딩된 LLOD 기하 구조 및 텍스처 프레임 884, 886과 연관된 임의의 보조 정보 890를 업 샘플링한다. 그 후, 업 샘플링된 보조 정보 890는 보조 정보 870에 적용된다.
점유 맵 프레임 888에 포함된 점유 맵은 이진(binary) 맵이다. 따라서 점유 맵 업스케일링 859는 가장 가까이 이웃하는 것의 해석을 사용하여 점유 맵 프레임 888을 업 샘플링한다. 업 샘플링된 점유 맵 프레임 888은 점유 맵 프레임 868에 적용될 수 있다.
비트스트림 822a에 나타난 기초 레이어와 비트스트림 820a에 나타난 향상된 레이어 간의 패치 정보는 LLOD 프레임과 HLOD 프레임 사이의 연관성을 보장하기 위해 동기화된다는 것을 유의한다. 특정 실시 예에서, 인코더는 각각의 비트스트림을 동기화한다.
도 9는 본 개시의 실시 예에 따른 포인트 클라우드 밀도의 적응적 영역을 도시한다. 도 9에 따른 ROI를 수정하는 실시 예는 단지 설명을 위한 것이며 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
ROI 코딩은 ROI에 더 높은 품질을 할당하고 ROI에 포함되지 않은 3차원 포인트 클라우드의 영역에 낮은 품질을 할당할 수 있다. 예를 들어, 포인트 클라우드의 밀도를 높이고 ROI의 기하 구조 및 색상 속성의 양자화 오차를 줄임으로써 ROI에 보다 높은 품질을 할당할 수 있다. 예를 들어 휴머노이드 포인트 클라우드의 얼굴 측에 ROI가 할당된 경우 포인트 클라우드의 얼굴 측이 나머지 포인트 클라우드와 다르게 코딩될 수 있다.
도 9는 3차원 포인트 클라우드 902 및 2개의 프레임, 즉 프레임 910 및 프레임 920을 포함한다. 3차원 포인트 클라우드 902은 도 8a 및 도 8b의 3차원 포인트 클라우드 802a, 802b, 도 7b 및 도 7c의 3차원 포인트 클라우드 762a, 도 6a의 3차원 포인트 클라우드 610, 도 5a 및 도 5b의 3차원 포인트 클라우드 502, 도 4의 포인트 클라우드 405 및 포인트 메쉬 410와 유사하다. 프레임 910 및 프레임 920은 3차원 포인트 클라우드 902의 패치를 나타낸다. 프레임 910은 모든 패치의 균일한 포인트 밀도를 가지지만, 프레임 920은 ROI에 기반한 적응적인 포인트 밀도의 영역을 나타낸다.
프레임 910은 패치 914와 같은 다수의 패치를 포함한다. 패치 914는 3차원 포인트 클라우드 902의 얼굴을 묘사한다. 패치 914는 프레임에 포함된 다른 패치들과 동일한 포인트 밀도로 인코딩 된다. 프레임 920은 패치 924와 같은 다수의 패치를 포함한다. 패치 924는 3차원 포인트 클라우드 902의 얼굴을 묘사한다. 패치 924는 프레임 920에 포함된 다른 패치보다 높은 포인트 밀도로 투영된다. 패치 924는 패치 924를 상이한 스케일링 인자로 스케일링 함으로써 더 높은 포인트 밀도를 갖는다. 상이한 스케일링 인자는 도 5a의 인코더 500의 보조 정보 506의 메타 데이터에 포함될 수 있다. 인코더 500의 플래그들 508은 3차원 포인트 클라우드 902를 재구성할 때 디코더 550가 패치 단위로 스케일 인자를 적용해야 함을 알리는데 사용된다. 얼굴이 ROI로 지정될 때, 패치 924에 의해 표시된 바와 같이, 포인트 클라우드의 나머지 부분과 비교하여 더 높은 포인트 밀도를 갖는 포인트 클라우드의 얼굴을 인코딩하는 것은, 3차원 포인트 클라우드 902의 얼굴이 3차원 포인트 클라우드 902의 몸체와 비교하여 더 높은 품질을 가지게 한다. 특정 실시 예에서, ROI가 지시되는 경우, 프레임 910은 압축된 비트스트림으로 송신되지 않지만 프레임 920은 압축된 비트스트림으로 송신된다. 특정 실시 예에서, ROI를 변경시키는 스케일 인자는 패치 단위 기준으로 포인트 밀도, 해상도, 스케일 등을 수정할 수 있다.
비-직교 투영은 패치 레벨에서 포인트 클라우드의 ROI를 나타내는 데 사용될 수 있다. 예를 들어, x, y 및 z는 포인트 클라우드의 패치의 포인트의 좌표이고, xs, ys 및 zs는, 도 5a의 인코더 500와 같은, 인코더에 입력된 스케일링된 포인트 클라우드 패치의 좌표이다. 스케일링된 포인트 클라우드는 x 좌표에 'xs = (x + offset_x) * scale_factor_x'로 표현된다. 스케일링된 포인트 클라우드는 y 좌표에 'ys = (y + offset_y) * scale_factor_y'로 표현된다. 스케일링된 포인트 클라우드는 z 좌표에 'zs = (z + offset_z) * scale_factor_z'로 표현된다. xr, yr 및 zr이, 도 5b의 디코더 550와 같은, 디코더의 출력에서 포인트 클라우드의 재구성된 패치에서의 좌표이고, xo, yo 및 zo이 패치에서의 최종적으로 스케일링된 출력의 포인트의 좌표이면, 각 포인트의 출력은 아래의 <수학식 5>와 같이 표현된다.
특정 실시 예에서, 포인트 클라우드의 비인접 부분은 2차원 프레임상의 인접 패치로서 위치될 수 있다. 예를 들어, 도 5a의 프레임 패킹 512은 프레임의 크기를 최소화하는 위치에서 프레임 상에 다양한 패치를 조직하고 배치한다. 결과적으로, 종종 포인트 클라우드의 인접하지 않은 부분이 2차원 프레임의 인접 패치로 위치할 수 있다. 인접하지 않은 패치가 2차원 프레임에서 서로 인접한 경우, 패치가 포인트 클라우드로 재구성되면 다른 패치와 경계를 이루는 하나의 패치의 픽셀이 경계 패치와 혼합되어 아티팩트가 생성될 수 있다. 아티팩트는 디코더가 포인트 클라우드를 재구성할 때 발생하는 포인트 클라우드의 가시적인 변형이다.
도 10은 본 개시의 실시 예에 따른 포인트 클라우드의 적응적인 포인트 크기 및 형상을 도시한다. 도 10에 따른 포인트 클라우드의 포인트의 형상 및 크기를 적용하는 실시 예는 단지 설명을 위한 것이며 본 개시의 범위를 벗어나지 않고 다른 실시 예들이 사용될 수 있다.
도 10은 재구성된 포인트 클라우드 1002a 및 재구성된 포인트 클라우드 1002b를 포함한다. 재구성된 포인트 클라우드 1002a는 아티펙트 1004를 포함한다. 재구성된 포인트 클라우드 1002b는 아티펙트 1004를 제거하기 위해 포인트의 형상, 포인트의 크기 또는 이들의 조합을 조정한 후에 재구성된 포인트 클라우드 1002a이다.
특정 실시 예에서, 포인트 클라우드를 재구성할 때, 디코더는 보이는 아티팩트를 최소화하기 위해 패치들의 경계선들에서 평활화 단계를 수행할 수 있다. 특정 실시 예에서, 디코더는 보이는 아티팩트를 최소화하기 위해 패치의 경계를 따라 포인트의 크기를 조정할 수 있다. 특정 실시 예에서, 디코더는 보이는 아티팩트를 최소화하기 위해 패치의 경계를 따라 점들의 형상을 조정할 수 있다.
도 5b의 디코더 550와 같은, 디코더는 다수의 2차원 프레임들로부터 3차원 포인트 클라우드를 재구성할 수 있다. 3차원 포인트 클라우드를 재구성할 때, 재구성된 포인트 클라우드의 각 포인트는 도 3의 전자 디바이스 300의 디스플레이 355와 같은 디스플레이 디바이스 상에 단일 픽셀로서 디스플레이된다. 예를 들어, 디스플레이상의 픽셀에 대한 포인트 크기의 비율은 패치의 경계에서 아티펙트를 제거하도록 조정될 수 있다. 단일 포인트를 늘리면 표시되는 포인트 클라우드의 해상도를 줄일 수 있다.
패치 경계에서 포인트 크기를 조정하기 위해, 디코더는 재구성된 포인트 클라우드의 경계 부근에 있는 포인트를 식별한다. 그런 다음, 디코더는 인접한 포인트와는 다른 포인트를 제외할 수 있다. 예를 들어, 디코더는 색상, 텍스쳐, 기하 구조 위치 등에 기반하여, 인접하는 포인트와 유사하지 않은 포인트를 식별할 수 있다. 디코더는 임계 레벨을 초과하여 다른, 임의의 포인트들을 식별하기 위해 포인트들을 비교할 수 있다. 포인트들이 제외되면, 디코더는 재구성된 포인트 클라우드에 임의의 구멍의 존재를 줄이기 위해 패치 경계 근처의 포인트 크기를 늘릴 수 있다. 인코더는 포인트 클라우드를 렌더링할 때 디코더가 사용해야하는 평균 포인트 크기를 알리는 메타 데이터를 포함할 수 있다. 특정 실시 예에서, 디코더는 재구성된 포인트 클라우드의 임의의 구멍의 존재를 줄이기 위해 패치 경계 부근의 포인트의 형상을 변경할 수 있다. 인코더는 하나 이상의 점의 모양을 나타내기 위해 표 1의 것과 유사한 메타 데이터를 포함할 수 있다. 또한, 수신된 메타 데이터 및 시그널링을 기반으로 패치, ROI 또는 포인트 클라우드의 영역에서 포인트 크기가 변경될 수 있다.
도 11은 본 개시의 실시 예에 따라 포인트 클라우드를 디코딩하기 위한 예시적인 흐름도를 도시한다. 도 11은 포인트 클라우드 디코딩을 위한 흐름도 1100를 도시한다. 예를 들어, 도 11에 도시된 프로세스는 도 1의 클라이언트 장치들 106-114 중 어느 하나, 도 5b의 디코더 550, 도 8b의 디코더에 의해 구현되는 것으로 설명되고, 도 2의 서버 200, 도 3의 전자 장치 300의 것들과 유사한 내부 구성 요소들을 포함한다. 흐름도 1100의 실시 예는 단지 설명을 위한 것이며 다른 실시 예가 본 개시의 범위를 벗어나지 않고 사용될 수 있다.
단계 1102에서, 프로세스는, 디코더 550와 같은, 디코더로 압축된 비트 스트림을 수신하면서 시작한다. 수신된 비트스트림은 복수의 2차원 프레임 상에 매핑되고, 압축된 다음, 송신되어 궁극적으로는 디코더에 의해 수신되는 인코딩된 포인트 클라우드를 포함할 수 있다.
단계 1104에서, 프로세스는 압축된 비트스트림을 디코딩한다. 디코더 550는 압축된 비트스트림을 3차원 포인트 클라우드를 나타내는 2개의 2차원 프레임으로 디코딩한다. 각 2차원 프레임은 패치들의 세트를 포함한다. 패치 세트의 각 패치는 3차원 포인트 클라우드의 포인트들의 집합을 포함한다. 포인트들의 집합은, 기하 구조 및 텍스처와 같은, 3차원 포인트 클라우드와 연관된 속성에 대응한다. 패치 세트 중 하나의 패치, 패치 세트 및 2차원 프레임은 3차원 포인트 클라우드를 나타내는 각각의 액세스 레벨에 대응한다.
단계 1106에서, 프로세스는 각각의 액세스 레벨들 중 하나의 수정을 나타내는 메타 데이터를 식별한다. 메타 데이터는 3차원 포인트 클라우드를 나타내는 각각의 액세스 레벨의 스케일, 해상도, 포인트 밀도, 오프셋, 회전, 포인트 크기 및 포인트 형상 중 적어도 하나의 수정을 나타낼 수 있다.
단계 1108에서, 프로세스는 또한 제1 플래그 및 제2 플래그를 식별할 수 있다. 제1 플래그는 메타데이터가 개별 액세스 레벨들 중 제1 액세스 레벨에 적용될 때 시그널링 한다. 제1 플래그는 활성 플래그로서 지칭될 수 있다. 제2 플래그는 제1 액세스 레벨의 수정과 관련된 메타데이터를 지시한다. 제2 플래그는 현재 플래그로서 지칭될 수 있다. 제1 플래그가 제1 액세스 레벨 이상의 하나의 액세스 레벨에 포함될 수 있는 경우, 제1 플래그는 제1 액세스 레벨의 일부가 수정되는지 여부를 지시한다. 제2 플래그는 메타 데이터에 의해 수정된 제1 액세스 레벨의 부분을 나타내기 위해 제1 액세스 레벨에 포함된다.
제1 액세스 레벨이 하나의 2차원 프레임 내에 포함된 패치들의 세트에 대응할 때, 제1 플래그는 하나의 2차원 프레임에서 시그널링 된다. 유사하게, 제1 액세스 레벨이 하나의 2차원 프레임 내에 포함된 패치들의 세트에 대응할 때, 제2 플래그는 제1 액세스 레벨에서 시그널링 되고, 제2 플래그는 메타 데이터에 의해 수정되는 특정 패치를 지시한다.
제1 액세스 레벨이 하나의 2차원 프레임에 대응할 때, 제1 플래그는 2차원 프레임에서 시그널링 된다. 유사하게, 제1 액세스 레벨이 하나의 2차원 프레임에 대응할 때, 제2 플래그는 제1 액세스 레벨에서 시그널링 되고, 제2 플래그는 하나의 2차원 프레임에 포함된 패치들의 세트가 메타 데이터에 의해 수정된 것을 지시한다.
제1 액세스 레벨이 2차원 프레임들에 대응할 때, 제1 플래그는 프레임들의 시퀀스에서 시그널링 된다. 유사하게, 제1 액세스 레벨이 2차원 프레임들에 대응할 때, 제2 플래그는 제1 액세스 레벨에서 시그널링 되고, 제2 플래그는 프레임들의 시퀀스에 포함된 2차원 프레임들 각각이 메타 데이터에 의해 수정된 것을 지시한다.
또한, 단계 1108에서 프로세스는 제1 플래그 및 제2 플래그 모두를 식별하는 것에 응답하여, 비트스트림으로부터 메타데이터를 판독할 수 있다. 비트스트림은 하나의 액세스 레벨의 수정을 지시하는 메타데이터를 포함한다. 예를 들어, 디코더가 두 플래그들 모두를 식별하면, 비트스트림 내에 3-D 포인트 클라우드를 생성할 때 2-D 프레임들 내의 컨텐츠를 수정하는 데 사용되는 메타데이터가 존재함을 디코더에게 지시한다.
또한, 단계 1110에서, 프로세스는 제1 플래그 또는 제2 플래그를 식별하는 것에 응답하여, 메타데이터에 미리 결정된 파라미터를 할당할 수 있다. 즉, 디코더가 두 플래그들 중 하나만을 식별하는 경우, 미리 결정된 파라미터가 메타데이터에 할당된다. 미리 결정된 파라미터는 메타데이터가 적용되는 액세스 레벨이 최상위 레벨일 경우의 디폴트 값이다. 예를 들면, 액세스 레벨들이 (i) 패치, (ii) 프레임, (iii) GOF, (iv) 시퀀스, 및 (v) 비디오를 포함하는 경우, 최상위 레벨은 비디오 레벨이다. 미리 결정된 파라미터는 현재 액세스 레벨보다 한 단계 더 높은 액세스 레벨의 메타데이터일 수 있다. 예를 들어, 프레임 레벨에 적용되는 메타데이터는 GOF 레벨에 적용되는 메타데이터일 수 있다.
단계 1112에서, 프로세스는 메타 데이터와 2차원 프레임들의 세트들을 사용하여 3차원 포인트 클라우드를 생성한다. 디코더는 3차원 포인트 클라우드를 재구성할 때 패치들에 수신된 임의의 메타 데이터를 적용할 수 있다. 특정 실시 예에서, 메타 데이터가 패치로 식별되면, 디코더 550는 메타 데이터가 스케일링 인자인지를 식별한다. 디코더 550는 메타 데이터가 스케일링 인자임을 식별하는 것에 응답하여, 디코더 550는 2차원 프레임 세트의 해상도를 증가시키기 위해 3차원 포인트 클라우드의 각 포인트에 스케일링 인자의 역을 적용한다.
디코더는 또한 생성된 점유 맵에 기반하여 각 패치의 경계에 위치된 패치들의 세트에 포함된 포인트를 식별할 수 있다. 그 후, 디코더 550는 메타 데이터에 기반하여 각 패치의 경계에 위치하는 포인트들의 크기 및 각 패치의 경계에 위치한 포인트들의 형상 중 적어도 하나를 조정할 수 있다.
도 12는 본 개시의 실시 예에 따라 포인트 클라우드를 인코딩하기 위한 예시적인 흐름도를 도시한다. 도 12는 포인트 클라우드 인코딩을 위한 흐름도 1200를 나타낸다. 예를 들어, 도 12에 도시된 프로세스는 도 1의 서버 104, 도 1의 클라이언트 장치들 106-114 중 임의의 하나, 도 5a의 인코더 500에 의해 구현되는 것으로 설명되고, 도 2의 서버 200, 도 3의 전자 디바이스 300와 유사한 내부 구성요소를 포함한다. 흐름도 1200의 실시 예는 단지 설명을 위한 것이며, 다른 실시 예들이 본 개시의 범위를 벗어나지 않고 사용될 수 있다.
단계 1202에서, 프로세스는 도 5a의 인코더 500와 같은 인코더를 사용하여 3차원 포인트 클라우드를 나타내는 2차원 프레임을 생성한다. 각 2차원 프레임은 패치들의 세트를 포함한다. 패치들의 세트의 각 패치는 3차원 포인트 클라우드의 포인트 들의 집합을 포함한다. 포인트들의 세트는 3차원 포인트 클라우드와 관련된 속성에 대응한다. 패치들의 세트 중 하나의 패치, 패치 세트 및 2차원 프레임은 3차원 포인트 클라우드를 나타내는 각각의 액세스 레벨에 대응한다.
특정 실시 예에서, 2차원 프레임은 2차원 프레임들의 제1 세트 및 2차원 프레임들의 제2 세트를 포함한다. 2차원 프레임들의 제2 세트가 생성될 때, 인코더 500는 2차원 프레임들의 제1 세트와 비교하여 2차원 프레임들의 제2 세트의 해상도를 감소시키기 위해 3차원 포인트 클라우드의 각 포인트에 스케일링을 적용한다. 인코더 500는 2차원 프레임들의 제1 세트의 차원 크기와 일치시키기 위해, 2차원 프레임들의 제2 세트를 업 샘플링한다. 그런 다음, 인코더는 2차원 프레임들의 제1세트를 업 샘플링된 2차원 프레임들의 제2 세트와 비교한다. 2차원 프레임들의 제1 세트를 업 샘플링 된 2차원 프레임들의 제2 세트와 비교한 후, 인코더 500는 2차원 프레임들의 제1 세트와 업 샘플링된 2차원 프레임들의 제2 세트 간 포인트의 차이를 추출한다.
특정 실시 예에서, 인코더 500가 2차원 프레임을 생성할 때, 인코더 500는 생성된 점유 맵에 기반하여 각 패치의 경계에 위치된 패치들의 세트에 포함된 포인트를 식별한다. 그 후, 인코더 500는 각 패치의 경계에 위치하는 포인트들의 크기 및 각 패치의 경계에 위치한 포인트들의 형상 중 적어도 하나를 조정하기 위해 메타 데이터를 생성한다.
단계 1204에서, 프로세스는 각각의 액세스 레벨 중 하나의 수정을 나타내는 메타 데이터를 생성한다. 메타 데이터는 3차원 포인트 클라우드를 나타내는 각각의 액세스 레벨의 스케일, 해상도, 포인트 밀도, 오프셋, 회전, 포인트 크기 및 포인트 형상 중 적어도 하나의 수정을 나타낸다.
단계 1206에서, 프로세스는 메타 데이터가 각각의 액세스 레벨의 제1 액세스 레벨에 적용될 때 신호하기 위한 플래그를 생성한다. 특정 실시 예에서, 플래그는 제1 플래그 및 제2 플래그를 포함한다. 예를 들어, 제1 플래그는 활성 플래그이고, 제2 플래그는 현재 플래그이다. 제1 플래그는 메타데이터가 제1 액세스 레벨에 적용될 때 시그널링 할 수 있고, 제2 플래그는 제1 액세스 레벨의 수정과 관련된 메타데이터를 지시한다. 메타 데이터가 제1 액세스 레벨에 적용될 때 시그널링 하기 위해, 인코더 500는 제1 플래그를 제1 액세스 레벨 이상의 하나의 액세스 레벨로 포함하고, 제1 플래그는 제1 액세스 레벨의 일부가 수정되는지 여부를 지시한다. 디코더는 또한 메타 데이터에 의해 수정된 제1 액세스 레벨의 부분을 지시하기 위해 제1 액세스 레벨에 제2 플래그를 포함한다.
제1 액세스 레벨이 하나의 2차원 프레임 내에 포함된 패치들의 세트에 대응할 때, 제1 플래그는 하나의 2차원 프레임에서 시그널링 된다. 유사하게, 제1 액세스 레벨은 하나의 2차원 프레임 내에 포함된 패치들의 세트에 대응하고, 제2 플래그는 제1 액세스 레벨에서 시그널링 되고, 제2 플래그는 메타 데이터에 의해 수정되는 특정 패치를 지시한다.
제1 액세스 레벨이 하나의 2차원 프레임에 대응할 때, 제1 플래그는 2차원 프레임들에서 시그널링 되고, 제2 플래그는 제1 액세스 레벨에서 시그널링 된다. 유사하게, 제1 액세스 레벨이 하나의 2차원 프레임에 대응할 때, 제1 플래그는 2차원 프레임들에서 시그널링 되고, 제2 플래그는 하나의 2차원 프레임에 포함된 패치들의 세트가 메타 데이터에 의해 수정되는 것을 나타낸다.
제1 액세스 레벨이 2차원 프레임들에 대응할 때, 제1 플래그는 프레임들의 시퀀스에서 시그널링 된다. 유사하게, 제1 액세스 레벨이 2차원 프레임들에 대응할 때, 제2 플래그는 제1 액세스 레벨에서 시그널링 되고, 제2 플래그는 프레임들의 시퀀스에 포함된 2차원 프레임들 각각이 메타 데이터에 의해 수정되는 것을 나타낸다.
단계 1208에서, 프로세스는 압축된 비트 스트림을 생성하기 위해 2차원 프레임, 플래그들 및 메타 데이터를 인코딩한다. 1210에서, 프로세스는 압축된 비트 스트림을 전송한다. 압축된 비트 스트림은 궁극적으로 디코더 550와 같은 디코더에게 전송될 수 있다.
비록 도면들이 사용자 디바이스의 다른 예들을 설명하고 있지만, 다양한 변경들이 도면들에 가해질 수 있다. 예를 들어, 사용자 디바이스는 임의의 적절한 배치로 임의의 수의 구성 요소를 포함할 수 있다. 일반적으로, 도면들은 이 개시의 범위를 임의의 특정 구성으로 제한하지 않는다. 또한, 도면들은 이 특허 문헌에 개시된 다양한 사용자 디바이스 특징들이 사용될 수 있는 동작 환경들을 도시하지만, 이들 특징들은 임의의 다른 적합한 시스템에서 사용될 수 있다.

Claims (30)

  1. 포인트 클라우드(point cloud) 디코딩을 위한 디코딩 장치에 의해 수행되는 방법에 있어서,
    3차원 포인트 클라우드에 대한 압축된(compressed) 비트스트림(bitstream)을 수신하는 과정과,
    상기 3차원 포인트 클라우드를 처리하기 위한 스케일링 정보를 수신하는 과정과,
    상기 압축된 비트스트림을, 상기 3차원 포인트 클라우드를 표현하는 2차원 프레임들로 디코딩하는 과정과, 상기 2차원 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3차원 포인트 클라우드에 의해 표현되는 객체의 포인트들을 포함하고, 상기 포인트들의 각각의 포인트는 좌표계의 좌표들로 표현되고,
    상기 패치들의 세트 중에서 하나 이상의 패치의 각각의 패치에 대한 적어도 하나의 스케일링 인자를 나타내는 상기 스케일링 정보를 식별하기 위해 상기 스케일링 정보를 디코딩하는 과정과, 상기 적어도 하나의 스케일링 인자 각각은 포인트의 좌표에 적용되고,
    상기 스케일링 정보에 기반하여 상기 하나 이상의 패치의 각각의 패치에 대한 상기 적어도 하나의 스케일링 인자를 식별하는 과정과,
    상기 식별된 적어도 하나의 스케일링 인자에 기반하여 상기 객체를 포함하는 상기 3차원 포인트 클라우드를 렌더링하는 과정을 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 스케일링 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 스케일링 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 스케일링 인자를 포함하는 방법.
  3. 청구항 1에 있어서,
    상기 하나 이상의 패치의 각각에 대한 적어도 하나의 오프셋을 포함하는 상기 하나 이상의 패치에 대한 오프셋 정보를 수신하는 과정을 더 포함하고,
    상기 3차원 포인트 클라우드를 렌더링하는 과정은, 상기 오프셋 정보에 기반하여 상기 3차원 포인트 클라우드를 렌더링할 때 상기 하나 이상의 패치 내의 포인트들의 위치를 이동시키는 과정을 포함하는 방법.
  4. 청구항 3에 있어서,
    상기 하나 이상의 패치에 대한 오프셋 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 오프셋 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 오프셋 인자를 포함하는 방법.
  5. 청구항 4에 있어서,
    상기 하나 이상의 패치의 각각에 대한 메타데이터를 수신하는 과정을 더 포함하고,
    상기 메타데이터는, 상기 3차원 포인트 클라우드를 표현하는 해상도, 포인트 밀도, 회전, 포인트 크기, 또는 포인트 형상 중 적어도 하나의 수정을 지시하는 방법.
  6. 포인트 클라우드(point cloud) 인코딩을 위한 인코딩 장치에 의해 수행되는 방법에 있어서,
    3차원 포인트 클라우드를 표현하는 2차원 프레임들을 포함하는 압축된(compressed) 비트스트림(bitstream)을 생성하는 과정과, 상기 2차원 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3차원 포인트 클라우드에 의해 표현되는 객체의 포인트들을 포함하고, 상기 포인트들의 각각의 포인트는 좌표계의 좌표들로 표현되고,
    상기 3차원 포인트 클라우드를 처리하기 위한 스케일링 정보를 생성하는 과정과, 상기 스케일링 정보는 상기 패치들의 세트 중에서 하나 이상의 패치의 각각의 패치에 대한 적어도 하나의 스케일링 인자를 나타내고, 상기 적어도 하나의 스케일링 인자 각각은 포인트의 좌표에 적용되고,
    상기 압축된 비트스트림과 상기 스케일링 정보를 전송하는 과정을 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 스케일링 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 스케일링 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 스케일링 인자를 포함하는 방법.
  8. 청구항 6에 있어서,
    상기 하나 이상의 패치의 각각에 대한 적어도 하나의 오프셋을 포함하는 상기 하나 이상의 패치에 대한 오프셋 정보를 전송하는 과정을 더 포함하고,
    상기 오프셋 정보는 상기 하나 이상의 패치 내의 포인트들의 위치의 이동에 관한 정보를 포함하는 방법.
  9. 청구항 8에 있어서,
    상기 하나 이상의 패치에 대한 오프셋 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 오프셋 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 오프셋 인자를 포함하는 방법.
  10. 청구항 9에 있어서,
    상기 하나 이상의 패치의 각각에 대한 메타데이터를 전송하는 과정을 더 포함하고,
    상기 메타데이터는, 상기 3차원 포인트 클라우드를 표현하는 해상도, 포인트 밀도, 회전, 포인트 크기, 또는 포인트 형상 중 적어도 하나의 수정을 지시하는 방법.
  11. 포인트 클라우드(point cloud) 디코딩을 위한 디코딩 장치에 있어서,
    송수신기; 및
    상기 송수신기와 연결되는 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    3차원 포인트 클라우드에 대한 압축된(compressed) 비트스트림(bitstream)을 수신하고,
    상기 3차원 포인트 클라우드를 처리하기 위한 스케일링 정보를 수신하고,
    상기 압축된 비트스트림을, 상기 3차원 포인트 클라우드를 표현하는 2차원 프레임들로 디코딩하고, 상기 2차원 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3차원 포인트 클라우드에 의해 표현되는 객체의 포인트들을 포함하고, 상기 포인트들의 각각의 포인트는 좌표계의 좌표들로 표현되고,
    상기 패치들의 세트 중에서 하나 이상의 패치의 각각의 패치에 대한 적어도 하나의 스케일링 인자를 나타내는 상기 스케일링 정보를 식별하기 위해 상기 스케일링 정보를 디코딩하고, 상기 적어도 하나의 스케일링 인자 각각은 포인트의 좌표에 적용되고,
    상기 스케일링 정보에 기반하여 상기 하나 이상의 패치의 각각의 패치에 대한 상기 적어도 하나의 스케일링 인자를 식별하고,
    상기 식별된 적어도 하나의 스케일링 인자에 기반하여 상기 객체를 포함하는 상기 3차원 포인트 클라우드를 렌더링하도록 설정되는 장치.
  12. 청구항 11에 있어서,
    상기 스케일링 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 스케일링 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 스케일링 인자를 포함하는 장치.
  13. 청구항 11에 있어서,
    상기 적어도 하나의 프로세서는, 상기 하나 이상의 패치의 각각에 대한 적어도 하나의 오프셋을 포함하는 상기 하나 이상의 패치에 대한 오프셋 정보를 수신하도록 더 설정되고,
    상기 적어도 하나의 프로세서는, 상기 3차원 포인트 클라우드를 렌더링하기 위하여, 상기 오프셋 정보에 기반하여 상기 3차원 포인트 클라우드를 렌더링할 때 상기 하나 이상의 패치 내의 포인트들의 위치를 이동시키도록 설정되는 장치.
  14. 청구항 13에 있어서,
    상기 하나 이상의 패치에 대한 오프셋 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 오프셋 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 오프셋 인자를 포함하는 장치.
  15. 청구항 14에 있어서, 상기 적어도 하나의 프로세서는,
    상기 하나 이상의 패치의 각각에 대한 메타데이터를 수신하도록 더 설정되고,
    상기 메타데이터는, 상기 3차원 포인트 클라우드를 표현하는 해상도, 포인트 밀도, 회전, 포인트 크기, 또는 포인트 형상 중 적어도 하나의 수정을 지시하는 장치.
  16. 포인트 클라우드(point cloud) 인코딩을 위한 인코딩 장치에 있어서,
    송수신기; 및
    상기 송수신기와 연결되는 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    3차원 포인트 클라우드를 표현하는 2차원 프레임들을 포함하는 압축된(compressed) 비트스트림(bitstream)을 생성하고, 상기 2차원 프레임들 각각은 패치들의 세트를 포함하고, 상기 패치들의 세트의 각각의 패치는 상기 3차원 포인트 클라우드에 의해 표현되는 객체의 포인트들을 포함하고, 상기 포인트들의 각각의 포인트는 좌표계의 좌표들로 표현되고,
    상기 3차원 포인트 클라우드를 처리하기 위한 스케일링 정보를 생성하고, 상기 스케일링 정보는 상기 패치들의 세트 중에서 하나 이상의 패치의 각각의 패치에 대한 적어도 하나의 스케일링 인자를 나타내고, 상기 적어도 하나의 스케일링 인자 각각은 포인트의 좌표에 적용되고,
    상기 압축된 비트스트림과 상기 스케일링 정보를 전송하도록 설정되는 장치.
  17. 청구항 16에 있어서,
    상기 스케일링 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 스케일링 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 스케일링 인자를 포함하는 장치.
  18. 청구항 16에 있어서, 상기 적어도 하나의 프로세서는,
    상기 하나 이상의 패치의 각각에 대한 적어도 하나의 오프셋을 포함하는 상기 하나 이상의 패치에 대한 오프셋 정보를 전송하도록 더 설정되고,
    상기 오프셋 정보는 상기 하나 이상의 패치 내의 포인트들의 위치의 이동에 관한 정보를 포함히는 장치.
  19. 청구항 18에 있어서,
    상기 하나 이상의 패치에 대한 오프셋 정보는 상기 하나 이상의 패치 중에서 1차원의 패치에 대한 제1 오프셋 인자 및 상기 하나 이상의 패치 중에서 2 차원의 패치에 대한 제2 오프셋 인자를 포함하는 장치.
  20. 청구항 19에 있어서, 상기 적어도 하나의 프로세서는,
    상기 하나 이상의 패치의 각각에 대한 메타데이터를 전송하도록 더 설정되고,
    상기 메타데이터는, 상기 3차원 포인트 클라우드를 표현하는 해상도, 포인트 밀도, 회전, 포인트 크기, 또는 포인트 형상 중 적어도 하나의 수정을 지시하는 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020180137584A 2017-11-09 2018-11-09 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법 KR102580711B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/KR2018/013668 WO2019093834A1 (en) 2017-11-09 2018-11-09 Point cloud compression using non-orthogonal projection

Applications Claiming Priority (22)

Application Number Priority Date Filing Date Title
US201762583795P 2017-11-09 2017-11-09
US62/583,795 2017-11-09
US201862618226P 2018-01-17 2018-01-17
US62/618,226 2018-01-17
US201862653248P 2018-04-05 2018-04-05
US62/653,248 2018-04-05
US201862653918P 2018-04-06 2018-04-06
US62/653,918 2018-04-06
US201862656171P 2018-04-11 2018-04-11
US201862656182P 2018-04-11 2018-04-11
US62/656,182 2018-04-11
US62/656,171 2018-04-11
US201862688173P 2018-06-21 2018-06-21
US62/688,173 2018-06-21
US201862688835P 2018-06-22 2018-06-22
US62/688,835 2018-06-22
US201862697842P 2018-07-13 2018-07-13
US62/697,842 2018-07-13
US201862711955P 2018-07-30 2018-07-30
US62/711,955 2018-07-30
US16/182,465 2018-11-06
US16/182,465 US10535161B2 (en) 2017-11-09 2018-11-06 Point cloud compression using non-orthogonal projection

Publications (2)

Publication Number Publication Date
KR20190053129A KR20190053129A (ko) 2019-05-17
KR102580711B1 true KR102580711B1 (ko) 2023-09-20

Family

ID=66327446

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180137584A KR102580711B1 (ko) 2017-11-09 2018-11-09 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법

Country Status (4)

Country Link
US (2) US10535161B2 (ko)
EP (1) EP3695386A4 (ko)
KR (1) KR102580711B1 (ko)
CN (1) CN111316331A (ko)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3349182A1 (en) * 2017-01-13 2018-07-18 Thomson Licensing Method, apparatus and stream for immersive video format
US10462495B2 (en) 2017-08-09 2019-10-29 Vital Images, Inc. Progressive lossless compression of image data
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
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
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
US10699444B2 (en) 2017-11-22 2020-06-30 Apple Inc Point cloud occupancy map compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10529086B2 (en) * 2017-11-22 2020-01-07 Futurewei Technologies, Inc. Three-dimensional (3D) reconstructions of dynamic scenes using a reconfigurable hybrid imaging system
EP3496388A1 (en) * 2017-12-05 2019-06-12 Thomson Licensing A method and apparatus for encoding a point cloud representing three-dimensional objects
CN111566703B (zh) * 2018-01-17 2023-10-20 索尼公司 图像处理装置和方法
CN110049323B (zh) * 2018-01-17 2021-09-07 华为技术有限公司 编码方法、解码方法和装置
EP3515067A1 (en) * 2018-01-19 2019-07-24 Thomson Licensing A method and apparatus for encoding and decoding three-dimensional scenes in and from a data stream
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud 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
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
BR112020026567A2 (pt) * 2018-06-25 2021-03-23 Huawei Technologies Co., Ltd. Aparelho e método para obtenção de códigos geométricos híbridos de nuvens de pontos
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
US11138762B2 (en) * 2018-07-11 2021-10-05 Samsung Electronics Co., Ltd. Visual quality of video based point cloud compression using one or more additional patches
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
EP3595319A1 (en) * 2018-07-12 2020-01-15 InterDigital VC Holdings, Inc. Methods and apparatus for volumetric video transport
JP7100523B2 (ja) * 2018-07-27 2022-07-13 京セラ株式会社 表示装置、表示システムおよび移動体
WO2020036389A1 (en) * 2018-08-13 2020-02-20 Lg Electronics Inc. Method for transmitting video, apparatus for transmitting video, method for receiving video, and apparatus for receiving video
CN109146938B (zh) * 2018-08-30 2020-09-15 百度在线网络技术(北京)有限公司 动态障碍物的位置校准方法、装置、设备及存储介质
US11386524B2 (en) 2018-09-28 2022-07-12 Apple Inc. Point cloud compression image padding
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US11430155B2 (en) 2018-10-05 2022-08-30 Apple Inc. Quantized depths for projection point cloud compression
CN110163863B (zh) * 2018-11-06 2022-11-04 腾讯科技(深圳)有限公司 三维物体分割方法、设备和介质
JP2020088694A (ja) * 2018-11-28 2020-06-04 キヤノン株式会社 画像処理装置、画像処理方法
US20220028119A1 (en) * 2018-12-13 2022-01-27 Samsung Electronics Co., Ltd. Method, device, and computer-readable recording medium for compressing 3d mesh content
US11039115B2 (en) * 2018-12-21 2021-06-15 Samsung Electronics Co., Ltd. Low complexity color smoothing of reconstructed point clouds
US11956478B2 (en) * 2019-01-09 2024-04-09 Tencent America LLC Method and apparatus for point cloud chunking for improved patch packing and coding efficiency
JPWO2020166612A1 (ja) * 2019-02-12 2021-12-16 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 三次元データ多重化方法、三次元データ逆多重化方法、三次元データ多重化装置、及び三次元データ逆多重化装置
US11457231B2 (en) * 2019-03-15 2022-09-27 Mediatek Singapore Pte. Ltd. Methods and apparatus for signaling spatial relationships for point cloud multimedia data tracks
US20220159310A1 (en) * 2019-03-22 2022-05-19 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
JP7477528B2 (ja) * 2019-03-22 2024-05-01 インターディジタル・シーイー・パテント・ホールディングス・ソシエテ・パ・アクシオンス・シンプリフィエ 点群の処理
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
JPWO2020230710A1 (ko) * 2019-05-10 2020-11-19
US11210812B2 (en) * 2019-05-15 2021-12-28 Samsung Electronics Co., Ltd. Single-pass boundary detection in video-based point cloud compression
WO2020235979A1 (ko) * 2019-05-23 2020-11-26 삼성전자 주식회사 포인트 클라우드 기반 데이터를 렌더링하는 방법 및 장치
US20220239946A1 (en) * 2019-06-04 2022-07-28 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2020256244A1 (ko) * 2019-06-21 2020-12-24 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US20220417557A1 (en) * 2019-06-21 2022-12-29 Lg Electronics Inc. Device and method for processing point cloud data
CN115514972A (zh) * 2019-06-28 2022-12-23 腾讯美国有限责任公司 视频编解码的方法、装置、电子设备及存储介质
WO2021025392A1 (ko) * 2019-08-02 2021-02-11 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법
US11803986B2 (en) 2019-08-08 2023-10-31 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2021053270A1 (en) * 2019-09-19 2021-03-25 Nokia Technologies Oy Video-based point cloud compression model to world signalling information
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US20220329923A1 (en) * 2019-09-27 2022-10-13 Vid Scale, Inc. Video-based point cloud streams
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
WO2021066445A1 (en) * 2019-10-01 2021-04-08 Samsung Electronics Co., Ltd. Method, apparatus and computer-readable recording medium for transmitting or receiving vpcc data
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11461933B2 (en) 2019-10-02 2022-10-04 Samsung Electronics Co., Ltd. Decision-making rules for attribute smoothing
JP7328447B2 (ja) * 2019-10-03 2023-08-16 エルジー エレクトロニクス インコーポレイティド ポイントクラウドデータ送信装置、ポイントクラウドデータ送信方法、ポイントクラウドデータ受信装置及びポイントクラウドデータ受信方法
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
WO2021022265A2 (en) * 2019-10-07 2021-02-04 Futurewei Technologies, Inc. Video-based point cloud compression (v-pcc) component synchronization
WO2021022266A2 (en) * 2019-10-07 2021-02-04 Futurewei Technologies, Inc. Video-based point cloud compression (v-pcc) timing information
WO2021071257A1 (ko) * 2019-10-07 2021-04-15 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US20220303578A1 (en) * 2019-11-13 2022-09-22 Sony Group Corporation Image processing apparatus and method
EP4072135A4 (en) * 2019-12-02 2023-06-21 Guangdong Oppo Mobile Telecommunications Corp., Ltd. METHOD FOR PREDICTING ATTRIBUTE INFORMATION, ENCODER, DECODER AND STORAGE MEDIA
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US20210211723A1 (en) * 2020-01-08 2021-07-08 Mediatek Singapore Pte. Ltd. Methods and apparatus for signaling 2d and 3d regions in immersive media
EP4075797A4 (en) * 2020-01-08 2023-05-31 LG Electronics Inc. POINT CLOUD DATA TRANSMITTING DEVICE, POINT CLOUD DATA TRANSMITTING METHOD, POINT CLOUD DATA RECEIVING DEVICE AND POINT CLOUD DATA RECEIVING METHOD
US11475605B2 (en) 2020-01-09 2022-10-18 Apple Inc. Geometry encoding of duplicate points
KR102373833B1 (ko) * 2020-01-09 2022-03-14 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN115004230A (zh) * 2020-01-14 2022-09-02 华为技术有限公司 用于v-pcc的缩放参数
US11315329B1 (en) * 2020-02-25 2022-04-26 Facebook Technologies, Llc. Scene reconstruction from sparse data
CN115280780A (zh) * 2020-03-16 2022-11-01 Lg电子株式会社 点云数据发送装置、发送方法、处理装置和处理方法
US11373339B2 (en) 2020-03-18 2022-06-28 Sony Group Corporation Projection-based mesh compression
JPWO2021193087A1 (ko) * 2020-03-25 2021-09-30
US20230179797A1 (en) * 2020-03-25 2023-06-08 Sony Group Corporation Image processing apparatus and method
EP4135319A4 (en) * 2020-04-11 2023-05-03 Lg Electronics Inc. POINT CLOUD DATA TRANSMITTING DEVICE, POINT CLOUD DATA TRANSMITTING METHOD, POINT CLOUD DATA RECEIVING DEVICE AND POINT CLOUD DATA RECEIVING METHOD
CN115398926B (zh) 2020-04-14 2023-09-19 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
EP4171036A1 (en) * 2020-06-18 2023-04-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
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
KR102417959B1 (ko) * 2020-07-28 2022-07-06 주식회사 엘지유플러스 3차원 입체 콘텐츠 제공 장치 및 그 방법
US11706450B2 (en) * 2020-09-18 2023-07-18 Samsung Electronics Co., Ltd. Partial decoding and reconstruction of a video-based point cloud compression bitstream
WO2022074286A1 (en) * 2020-10-05 2022-04-14 Nokia Technologies Oy A method, an apparatus and a computer program product for video encoding and video decoding
KR20220046796A (ko) * 2020-10-08 2022-04-15 삼성전자주식회사 전자 장치 및 그 제어 방법
KR102451419B1 (ko) * 2020-10-30 2022-10-06 주식회사 이엠솔루션 포인트 클라우드를 이용한 게임 리플레이 시스템
US20220164994A1 (en) * 2020-11-24 2022-05-26 Samsung Electronics Co., Ltd. Overlapped patches for mesh coding for video based point cloud compression
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
CN115243053B (zh) * 2021-04-22 2024-04-16 腾讯科技(深圳)有限公司 点云编解码方法及相关设备
CN113284248B (zh) * 2021-06-10 2022-11-15 上海交通大学 一种点云有损压缩的编解码方法、装置和系统
CN113327328B (zh) * 2021-08-02 2021-10-29 苏州鼎纳自动化技术有限公司 一种三维点云数据精简方法
US20230156222A1 (en) * 2021-11-15 2023-05-18 Tencent America LLC Grid-based patch generation for video-based point cloud coding
KR102506751B1 (ko) * 2021-12-10 2023-03-08 주식회사 이안에스아이티 3차원 객체 시각화 방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3195010A4 (en) * 2014-08-15 2018-04-11 Aeye, Inc. Methods and systems for ladar transmission
US9734595B2 (en) 2014-09-24 2017-08-15 University of Maribor Method and apparatus for near-lossless compression and decompression of 3D meshes and point clouds
US10223810B2 (en) * 2016-05-28 2019-03-05 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression
US10694210B2 (en) * 2016-05-28 2020-06-23 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CELINE GUEDE ET AL: "Technicolor Point Cloud Renderer", 118. MPEG MEETING*
KHALED MAMMOU ET AL: "Point Cloud Compression: Test Model Category 2 version 0.0", 120. MPEG MEETING*
MADHUKAR BUDAGAVI ET AL: "Samsung’s response to CfP for Point Cloud Compression (Category 2)", 120. MPEG MEETING*
SCHWARZ SEBASTIAN ET AL: "Nokia's response to CfP for Point Cloud Compression (Category 2)", 120. MPEG MEETING*

Also Published As

Publication number Publication date
US10535161B2 (en) 2020-01-14
EP3695386A1 (en) 2020-08-19
US20200151913A1 (en) 2020-05-14
EP3695386A4 (en) 2020-08-19
CN111316331A (zh) 2020-06-19
KR20190053129A (ko) 2019-05-17
US10853974B2 (en) 2020-12-01
US20190139266A1 (en) 2019-05-09

Similar Documents

Publication Publication Date Title
KR102580711B1 (ko) 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법
US11373338B2 (en) Image padding in video-based point-cloud compression CODEC
US11288843B2 (en) Lossy compression of point cloud occupancy maps
US10916041B2 (en) Method for depth image di coding
US10424083B2 (en) Point cloud compression using hybrid transforms
CN110892453B (zh) 使用图像/视频编解码器的点云和网格压缩
US11122279B2 (en) Point cloud compression using continuous surface codes
US11393132B2 (en) Mesh compression
US11514613B2 (en) Point cloud and mesh compression using image/video codecs
US20220164994A1 (en) Overlapped patches for mesh coding for video based point cloud compression
US20200020132A1 (en) Visual quality of video based point cloud compression using one or more additional patches
US11665372B2 (en) Fast projection method in video-based point cloud compression codecs
US20200364904A1 (en) Single-pass boundary detection in video-based point cloud compression
US11803987B2 (en) Attribute transfer in V-PCC
US11922663B2 (en) Decision-making rules for attribute smoothing
US20230308684A1 (en) Tiling for video based point cloud compression
KR20210095224A (ko) 포인트 클라우드를 압축 및 압축 해제하기 위한 장치 및 방법
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
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right