KR20230020418A - G-pcc 에서의 속성 잔차 코딩 - Google Patents

G-pcc 에서의 속성 잔차 코딩 Download PDF

Info

Publication number
KR20230020418A
KR20230020418A KR1020227042526A KR20227042526A KR20230020418A KR 20230020418 A KR20230020418 A KR 20230020418A KR 1020227042526 A KR1020227042526 A KR 1020227042526A KR 20227042526 A KR20227042526 A KR 20227042526A KR 20230020418 A KR20230020418 A KR 20230020418A
Authority
KR
South Korea
Prior art keywords
component
value
attribute
components
point cloud
Prior art date
Application number
KR1020227042526A
Other languages
English (en)
Inventor
밥파디트야 레이
더 아우베라 게르트 판
아다르쉬 크리쉬난 라마수브라모니안
루이스 조셉 케로프스키
마르타 카르체비츠
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20230020418A publication Critical patent/KR20230020418A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • 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/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

포인트 클라우드를 인코딩하는 예시적인 방법은 포인트 클라우드 내 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하는 단계; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 하나의 컴포넌트에 대한 값을 결정하는 단계; 하나의 컴포넌트의 값을 인코딩하는 단계; 및 인코딩된 값을 비트스트림으로 시그널링하는 단계를 포함한다.

Description

G-PCC 에서의 속성 잔차 코딩
이 출원은 2021년 6월 8일자로 출원된 미국 특허 출원 제 17/342,249 호 및 2020년 6월 9일자로 출원된 미국 가출원 제 63/036,878 호 및 2021년 2월 24일자로 출원된 미국 가출원 제 63/153,187 호에 대한 우선권을 주장하고, 이들 출원들의 각각의 전체 내용은 본 명세서에 참조에 의해 통합된다. 미국 출원 제 17/342,249 호는 2020 년 6 월 9 일 출원된 미국 가출원 제 63/036,878 호 및 2021 년 2 월 24 일 출원된 미국 가출원 제 63/153,187 호의 이익을 주장한다.
본 개시는 포인트 클라우드 인코딩 및 디코딩에 관한 것이다.
포인트 클라우드는 3차원 공간 내 포인트들의 집합이다. 포인트들은 3차원 공간 내의 오브젝트(objects)들 상의 포인트들에 대응할 수도 있다. 따라서, 포인트 클라우드는 3차원 공간의 물리적 콘텐츠를 표현하는데 사용될 수도 있다. 포인트 클라우드들은 다양한 상황들에서 유용성을 가질 수도 있다. 예를 들어, 포인트 클라우드들은 도로 상의 오브젝트들의 포지션들(positions)을 표현하기 위해 자율 차량들의 맥락에서 사용될 수도 있다. 다른 예에서, 포인트 클라우드들은 증강 현실(AR) 또는 혼합 현실(MR) 애플리케이션에서 가상 오브젝트들을 포지셔닝하기 위해 환경의 물리적 콘텐츠를 표현하는 맥락에서 사용될 수도 있다. 포인트 클라우드 압축은 포인트 클라우드들을 인코딩 및 디코딩하기 위한 프로세스이다. 포인트 클라우드들을 인코딩하는 것은 포인트 클라우드들의 저장 및 송신에 필요한 데이터의 양을 감소시킬 수도 있다.
일반적으로, 본 개시는 예를 들어 현재 개발되고 있는 지오메트리 포인트 클라우드 압축 (G-PCC) 표준에 대한, 속성 잔차를 코딩하기 위한 기법들을 기술한다. 그러나, 예시의 기법들은 G-PCC 표준에 제한되지 않는다. G-PCC 에서, 포인트는 복수의 속성들을 포함할 수도 있고, 각각의 속성은 하나 이상의 컴포넌트들을 포함할 수도 있다. 속성의 예는 색상 속성이고, 색상 속성은 포인트의 색상을 정의하기 위해 사용되는 3 개의 색상 컴포넌트들 (예: RGB, YCbCr) 을 포함할 수도 있다. 색상 컴포넌트들은 속성들의 일 예이고, 속성의 상이한 컴포넌트들의 예들을 포함하는 속성의 다른 예들이 가능하다 (예: 표면 법선 속성은 x, y, z 컴포넌트들을 포함한다). 포인트의 속성을 코딩하기 위해, G-PCC 인코더는 잔차 값 (예를 들어, 잔차 계수) 를 결정할 수도 있고, G-PCC 인코더는 그 잔차 값을 나타내는 정보를 시그널링할 수 있고 G-PCC 디코더는 그 포인트를 재구성하기 위해 잔차 값을 나타내는 정보를 수신할 수 있다.
일부 예들에서, 컴포넌트들 (예: 색상 컴포넌트 또는 다른 컴포넌트) 의 각각에 대한 잔차 값에 대한 크기 및 부호 정보는 독립적으로 인코딩 및 디코딩된다. 잔차 계수의 컴포넌트의 각각에 대한 잔차 값이 제로인 것이 가능할 수 있으며, 이 경우 크기 및 부호 정보의 그러한 독립적인 코딩에서 중복 (redundancy) 이 존재할 수도 있다. 본 개시는 예를 들어 G-PCC 에서 컴포넌트에 대한 잔차 값이 제로인 경우에 컴포넌트 정보를 효율적으로 코딩 (예: 인코딩 또는 디코딩) 하기 위한 예시적인 기법을 기술한다. 이러한 방식으로, 예시적인 기법은 G-PCC 에서 속성 코딩에 대한 실제적인 애플리케이션을 제공하는 기술적 문제에 대한 기술적 솔루션을 기술한다.
일 예에서, 본 개시는 포인트 클라우드를 인코딩하는 방법을 기술하며, 그 방법은 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하는 단계; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 속성의 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 하나의 컴포넌트에 대한 값을 결정하는 단계; 하나의 컴포넌트에 대한 값을 인코딩하는 단계; 및 인코딩된 값을 비트스트림에서 시그널링하는 단계를 포함한다.
다른 예에서, 본 개시는 포인트 클라우드를 디코딩하는 방법을 기술하며, 그 방법은 포인트 클라우드 내의 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 단계로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 속성의 컴포넌트에 대한 값을 디코딩하는 단계; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하는 단계; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하기 위해 속성의 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하는 단계; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하는 단계를 포함한다.
다른 예에서, 본 개시는 포인트 클라우드를 인코딩하는 디바이스를 기술하며, 그 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 프로세싱 회로를 포함하며, 프로세싱 회로는 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 속성의 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 하나의 컴포넌트에 대한 값을 결정하고; 하나의 컴포넌트에 대한 값을 인코딩하고; 및 인코딩된 값을 비트스트림에서 시그널링하도록 구성된다.
다른 예에서, 본 개시는 포인트 클라우드를 디코딩하는 디바이스를 기술하며, 그 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 프로세싱 회로를 포함하며, 프로세싱 회로는 포인트 클라우드 내의 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 속성의 컴포넌트에 대한 값을 디코딩하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하기 위해 속성의 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하도록 구성된다.
다른 예에서, 본 개시는 명령들을 저장하는 컴퓨터 판독가능 저장 매체를 기술하며, 그 명령들은 실행될 때, 포인트 클라우드를 인코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하게 하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 속성의 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 하나의 컴포넌트에 대한 값을 결정하게 하고; 하나의 컴포넌트에 대한 값을 인코딩하게 하고; 및 인코딩된 값을 비트스트림에서 시그널링하게 한다.
다른 예에서, 본 개시는 명령들을 저장하는 컴퓨터 판독가능 저장 매체를 기술하며, 그 명령들은 실행될 때, 포인트 클라우드를 디코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드 내의 포인트의 속성의 컴포넌트에 대한 값을 디코딩하게 하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 속성의 컴포넌트에 대한 값을 디코딩하게 하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다고 결정하게 하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 제로와 동일하다는 결정에 기초하여, 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하기 위해 속성의 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하게 하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하게 한다.
하나 이상의 예들의 상세가 첨부 도면 및 이하의 설명에서 진술된다. 다른 특징, 목적, 및 이점은 본 설명, 도면, 및 청구범위로부터 명백할 것이다.
도 1 은 본 개시의 기법들을 수행할 수도 있는 예시적인 인코딩 및 디코딩 시스템을 예시하는 블록 다이어그램이다.
도 2 는 예시적인 지오메트리 포인트 클라우드 압축 (G-PCC) 인코더를 예시하는 블록도이다.
도 3 은 예시적인 G-PCC 디코더를 예시하는 블록도이다.
도 4 는 G-PCC 에 대한 잔차 값들을 인코딩하는 예를 도시하는 플로우차트이다.
도 5 는 포인트 클라우드를 인코딩하는 예시의 방법을 도시하는 플로우챠트이다.
도 6 은 포인트 클라우드를 디코딩하는 예시의 방법을 도시하는 플로우챠트이다.
도 7 은 본 개시의 하나 이상의 기법들과 함께 사용될 수도 있는 예시적인 레인지-발견 (range-finding) 시스템을 예시한 개념 다이어그램이다.
도 8 은 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 차량 기반 시나리오를 도시한 개념 다이어그램이다.
도 9 는 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 확장 현실 시스템을 도시한 개념 다이어그램이다.
도 10 은 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 모바일 디바이스 시스템을 도시한 개념 다이어그램이다.
본 개시는 포인트 클라우드에서의 포인트들의 다중 컴포넌트 속성들에 대한 잔차 값의 코딩(예를 들어, 인코딩 및 디코딩)과 관련된 예시적인 기술을 설명한다. 포인트 클라우드의 각 포인트는 색상 속성, 표면 속성, 날씨 속성 등과 같은 하나 이상의 속성을 포함한다. 속성들 중 일부는 다중 컴포넌트 속성들일 수 있고 일부 다른 속성들은 단일 컴포넌트 속성일 수 있다. 예를 들어, 색상 속성은 포인트의 색상을 나타내는 3개의 컴포넌트들 (예를 들어, 하나의 루미넌스 컴포넌트과 2개의 크로미넌스 컴포넌트, 또는 적색 컴포넌트, 녹색 컴포넌트 및 청색 컴포넌트)을 포함할 수 있다. 반사율 속성은 단일 컴포넌트(예를 들어, 포인트의 반사율을 나타내는 하나의 값)을 포함할 수 있다.
지오메트리 포인트 클라우드 압축 (G-PCC) 인코더가 시그널링할 필요가 있고 G-PCC 디코더가 수신할 필요가 있는 데이터의 양을 줄이기 위해, 각 포인트의 속성의 컴포넌트의 값을 시그널링하기 보다는, G-PCC 인코더는 현재 포인트와 이전에 인코딩된 포인트의 속성 간의 잔차 값을 결정하도록 구성될 수 있다. G-PCC 인코더는 컴포넌트의 값(예를 들어, 양수 또는 음수와 같은 부호 정보 및 잔차 값의 크기)을 시그널링하는 것과 비교하여 더 적은 수의 비트를 요구하는 경향이 있는 잔차 값을 시그널링할 수 있다. G-PCC 디코더는 잔차 값을 수신하고, 잔차 값을 이전에 디코딩된 포인트에 가산하여 현재 포인트를 재구성할 수 있다.
예를 들어, G-PCC 인코더는 현재 포인트의 반사율 속성의 반사율 값과 이전 포인트의 반사율 속성의 반사율 값 사이의 차이를 결정하여 잔차 반사율 값을 결정할 수 있다. G-PCC 인코더는 결과적인 잔차 반사율 값 및 이전 포인트를 식별하는 정보를 시그널링할 수 있다. G-PCC 디코더는 잔차 반사율 값을 수신하여 이전 포인트를 식별할 수 있다. G-PCC 디코더는 이전 포인트의 반사율 값에 잔차 반사율 값을 더하여 현재 포인트의 반사율 값을 재구성할 수 있다.
경우에 따라 속성의 컴포넌트의 잔차 값이 0일 수 있다. 예를 들어 잔차 값들이 0 인 연속적인 순서의 포인트들에 대한 반사율 속성들의 스트링 (string) 이 존재할 수도 있다. 이 경우, 각각의 제로 잔차 값을 인코딩 및 시그널링하기 보다는, 잔차 값들이 0 인 순서 내의 다수의 포인트들을 나타내는 신택스 요소(예를 들어, "제로런 (제로런)" 신택스 요소)를, G-PCC 인코더는 시그널링할 수 있고 G-PCC 디코더는 수신할 수 있다.
그러나 다중 컴포넌트 속성의 경우, 일부 컴포넌트의 잔차 값은 0 이지만 다른 컴포넌트의 잔차 값은 0이 아닌 상황이 있을 수 있다. 예를 들어, 색상 속성의 경우, 색상 컴포넌트들은 루마 컴포넌트과 2개의 크로마 컴포넌트일 수 있다. 일례로서, 크로마 컴포넌트에 대한 잔차 값은 0일 수 있지만, 루마 컴포넌트에 대한 잔차 값은 0이 아닐 수 있다. 이 경우 제로런 구문 요소는 제로런이 없음을 나타낸다(즉, 속성의 적어도 하나의 컴포넌트에 대해 0이 아닌 잔차 값이 있음).
본 개시는 예를 들어 포인트 클라우드에서의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같은 (즉, 잔차 값이 0이 아닌 컴포넌트가 하나 있고 다른 모든 컴포넌트는 잔차 값이 0임) 경우에 G-PCC 인코더가 시그널링하고 G-PCC 디코더가 수신하는 데이터의 양을 감소시키는 예시의 기법들을 기술한다. 예를 들어, 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 인코더는 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋 (예를 들어, 양의 정수) 와 같은 한 컴포넌트에 대한 값을 결정할 수 있다. 잔차 값의 크기는 잔차 값의 절대값일 수 있다. 잔차 값의 크기의 전체 값을 시그널링하는 대신, G-PCC 인코더는 결정된 값(예를 들어, 잔차 값의 크기 마이너스 오프셋)을 시그널링할 수 있으며, 이는 잔차 값의 전체 크기를 시그널링하는 데 필요한 비트보다 시그널링하는데 더 적은 비트를 요구할 수 있다. G-PCC 인코더는 잔차 값의 크기에 더하여 부호 정보(예를 들어, 잔차 값이 양수인지 음수인지 여부)도 시그널링할 수 있다.
G-PCC 디코더는 포인트 클라우드의 포인트의 속성의 컴포넌트에 대한 값을 디코딩할 수 있으며, 여기서 그 값은 컴포넌트에 대한 잔차 값을 나타낸다. G-PCC 디코더는 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정할 수 있다. 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 디코더는 속성의 한 컴포넌트에 대한 값에 오프셋을 가산하여 한 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다. 이와 같이 잔차 값의 크기 마이너스 오프셋에 대해 필요한 비트 수가 잔차 값에 필요한 비트 수보다 적기 때문에 G-PCC 디코더가 수신해야 하는 데이터의 양이 줄어들 수 있다. G-PCC 디코더는 또한 잔차 값의 부호(예를 들어, 양 또는 음)를 나타내는 정보를 디코딩할 수 있고, 잔차 값의 크기 및 잔차 값의 부호에 기초하여 G-PCC 디코더는 잔차 값을 결정할 수 있다.
도 1 은 본 개시의 기법들을 수행할 수도 있는 예시적인 인코딩 및 디코딩 시스템 (100) 을 나타내는 블록도이다. 본 개시의 기법들은 포인트 클라우드 압축을 지원하기 위해 일반적으로 포인트 클라우드 데이터를 코딩 (인코딩 및/또는 디코딩) 하는 것과 관련된다. 일반적으로, 포인트 클라우드 데이터는 포인트 클라우드를 프로세싱하기 위한 임의의 데이터를 포함한다. 코딩은 포인트 클라우드 데이터를 압축 및/또는 압축해제함에 있어서 효과적일 수도 있다.
도 1 에 도시된 바와 같이, 시스템 (100) 은 소스 디바이스 (102) 및 목적지 디바이스 (116) 를 포함한다. 소스 디바이스 (102) 는 목적지 디바이스 (116) 에 의해 디코딩될 인코딩된 포인트 클라우드 데이터를 제공한다. 특히, 도 1 의 예에서, 특히, 도 1 의 예에서, 소스 디바이스 (102) 는 포인트 클라우드 데이터를, 컴퓨터 판독가능 매체 (110) 를 통해 목적지 디바이스 (116) 에 제공한다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 전화기 핸드셋들, 예를 들어 스마트폰들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스, 지상 또는 해상 비히클, 스페이스크래프트, 에어크래프트, 로봇, LIDAR 디바이스, 위성 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스(102) 및 목적지 디바이스(116)는 무선(wireless) 통신을 위해 갖추어질 수도 있다.
도 1 의 예에서, 소스 디바이스(102)는 데이터 소스(104), 메모리(106), G-PCC 인코더(200), 및 출력 인터페이스(108)를 포함한다. 목적지 디바이스 (116) 는 입력 인터페이스 (122), G-PCC 디코더 (300), 메모리 (120), 및 데이터 컨슈머 (118) 를 포함한다. 본 개시에 따르면, 소스 디바이스(102)의 G-PCC 인코더(200) 및 목적지 디바이스(116)의 G-PCC 디코더(300)는 포인트 클라우드 내의 포인트들의 속성들에 대한 잔차 값들을 코딩하는 것과 관련된 본 개시의 기법들을 적용하도록 구성될 수도 있다. 따라서, 소스 디바이스(102)는 인코딩 디바이스의 일 예를 나타내는 한편, 목적지 디바이스(116)는 디코딩 디바이스의 일 예를 나타낸다. 다른 예들에 있어서, 소스 디바이스 (102) 및 목적지 디바이스 (116) 는 다른 컴포넌트들 또는 배열들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (102) 는 내부 또는 외부 소스로부터 데이터 (예컨대, 포인트 클라우드 데이터) 를 수신할 수도 있다. 마찬가지로, 목적지 디바이스 (116) 는 동일한 디바이스에서의 데이터 소비자를 포함하는 것보다는, 외부 데이터 소비자와 인터페이싱할 수도 있다.
도 1 에 도시된 바와 같은 시스템 (100) 은 하나의 예일 뿐이다. 일반적으로, 다른 디지털 인코딩 및/또는 디코딩 디바이스들은 포인트 클라우드 내의 포인트의 속성에 대한 잔차 값을 코딩하는 것과 관련된 본 개시의 기법들을 수행할 수도 있다. 소스 디바이스 (102) 및 목적지 디바이스 (116) 는, 단지, 소스 디바이스 (102) 가 목적지 디바이스 (116) 로의 송신을 위한 코딩된 데이터를 생성하는 그러한 디바이스들의 예들일 뿐이다. 본 개시는 데이터의 코딩 (인코딩 및/또는 디코딩) 을 수행하는 디바이스로서 "코딩" 디바이스를 언급한다. 따라서, G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 는 코딩 디바이스들, 특히 각각 인코더 및 디코더의 예들을 나타낸다. 일부 예들에 있어서, 소스 디바이스 (102) 및 목적지 디바이스 (116) 는, 소스 디바이스 (102) 및 목적지 디바이스 (116) 의 각각이 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 따라서, 시스템 (100) 은, 예컨대, 스트리밍, 플레이백, 브로드캐스팅, 전화, 내비게이션, 및 다른 어플리케이션들을 위한, 소스 디바이스 (102) 와 목적지 디바이스 (116) 사이의 일방향 또는 양방향 송신을 지원할 수도 있다.
일반적으로, 데이터 소스 (104) 는 데이터의 소스 (즉, 원시, 인코딩되지 않은 포인트 클라우드 데이터) 를 나타내고, 데이터의 순차적인 일련의 "프레임들" 을, 그 프레임들에 대한 데이터를 인코딩하는 G-PCC 인코더 (200) 에 제공할 수도 있다. 소스 디바이스 (102) 의 데이터 소스 (104) 는 다양한 카메라들 또는 센서들, 예컨대, 3D 스캐너 또는 광 검출 및 레인징 (LIDAR) 디바이스, 하나 이상의 비디오 카메라들, 이전에 캡처된 데이터를 포함하는 아카이브, 및/또는 데이터 컨텐츠 제공자로부터 데이터를 수신하기 위한 데이터 피드 인터페이스 중 임의의 것과 같은 포인트 클라우드 캡처 디바이스를 포함할 수도 있다. 대안적으로 또는 추가적으로, 포인트 클라우드 데이터는 스캐너, 카메라 센서 또는 다른 데이터로부터 컴퓨터 생성될 수도 있다. 예를 들어, 데이터 소스 (104) 는 소스 데이터로서 컴퓨터 그래픽 기반 데이터를 생성할 수도 있거나 또는 라이브 데이터, 아카이브 데이터 및 컴퓨터-생성된 데이터의 조합을 생성할 수도 있다. 각각의 경우에 있어서, G-PCC 인코더 (200) 는 캡처된, 사전 캡처된, 또는 컴퓨터 생성된 비디오 데이터를 인코딩한다. G-PCC 인코더 (200) 는 프레임들을 수신된 순서 (때때로 "디스플레이 순서" 로 지칭됨) 로부터 코딩을 위한 코딩 순서로 재배열할 수도 있다. G-PCC 인코더(200)는 인코딩된 데이터를 포함하는 하나 이상의 비트스트림들을 생성할 수도 있다. 그 후, 소스 디바이스 (102) 는 예를 들어, 목적지 디바이스 (116) 의 입력 인터페이스 (122) 에 의한 수신 및/또는 취출을 위해 인코딩된 데이터를 출력 인터페이스 (108) 를 통해 컴퓨터 판독가능 매체 (110) 상으로 출력할 수도 있다.
소스 디바이스 (102) 의 메모리 (106) 및 목적지 디바이스 (116) 의 메모리 (120) 는 범용 메모리들을 나타낼 수도 있다. 일부 예들에 있어서, 메모리 (106) 및 메모리 (120) 는 원시 데이터, 예컨대, 데이터 소스 (104) 로부터의 원시 비디오 및 G-PCC 디코더 (300) 로부터의 원시의 디코딩된 데이터를 저장할 수도 있다. 부가적으로 또는 대안적으로, 메모리 (106) 및 메모리 (120) 는, 예컨대, G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 에 의해 각각 실행가능한 소프트웨어 명령들을 저장할 수도 있다. 메모리 (106) 및 메모리 (120) 가 이 예에서는 G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 와는 별도로 도시되지만, G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 는 또한 기능적으로 유사하거나 또는 균등한 목적들을 위한 내부 메모리들을 포함할 수도 있음이 이해되어야 한다. 더욱이, 메모리 (106) 및 메모리 (120) 는, 예컨대, G-PCC 인코더 (200) 로부터 출력되고 G-PCC 디코더 (300) 에 입력되는 인코딩된 데이터를 저장할 수도 있다. 일부 예들에 있어서, 메모리 (106) 및 메모리 (120) 의 부분들은, 예컨대, 원시의, 디코딩된, 및/또는 인코딩된 데이터를 저장하기 위해 하나 이상의 버퍼들로서 할당될 수도 있다. 예를 들어, 메모리 (106) 및 메모리 (120) 는 포인트 클라우드를 나타내는 데이터를 저장할 수도 있다.
컴퓨터 판독가능 매체 (110) 는 인코딩된 데이터를 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로 전송할 수 있는 임의의 타입의 매체 또는 디바이스를 나타낼 수도 있다. 하나의 예에서, 컴퓨터 판독가능 매체 (110) 는, 소스 디바이스 (102) 로 하여금, 실시간으로, 예를 들어, 라디오 주파수 네트워크 또는 컴퓨터 기반 네트워크를 통해 직접 목적지 디바이스 (116) 로 인코딩된 데이터를 송신할 수도 있게 하기 위한 통신 매체를 나타낸다. 무선 통신 프로토콜과 같은 통신 표준에 따라, 출력 인터페이스 (108) 는 인코딩된 데이터를 포함하는 송신 신호를 변조할 수도 있고, 입력 인터페이스 (122) 는 수신된 송신 신호를 복조할 수도 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (102) 로부터 목적지 디바이스 (116) 로의 통신을 가능하게 하는 데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 소스 장치 (102) 는 출력 인터페이스 (108) 로부터 저장 디바이스 (112) 로 인코딩된 데이터를 출력할 수도 있다. 유사하게, 목적지 디바이스 (116) 는 입력 인터페이스 (122) 를 통해 저장 디바이스 (112) 로부터의 인코딩된 데이터에 액세스할 수도 있다. 저장 디바이스 (112) 는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 국부적으로 액세스된 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수도 있다.
일부 예들에 있어서, 소스 디바이스 (102) 는, 소스 디바이스 (102) 에 의해 생성된 인코딩된 데이터를 저장할 수도 있는 파일 서버 (114) 또는 다른 중간 저장 디바이스로 인코딩된 데이터를 출력할 수도 있다. 목적지 디바이스 (116) 는 스트리밍 또는 다운로드를 통해 파일 서버 (114) 로부터의 저장된 데이터에 액세스할 수도 있다. 파일 서버 (114) 는 인코딩된 데이터를 저장하고 그 인코딩된 데이터를 목적지 디바이스 (116) 에 송신할 수 있는 임의의 타입의 서버 디바이스일 수도 있다. 파일 서버 (114) 는 (예컨대, 웹 사이트를 위한) 웹 서버, 파일 전송 프로토콜 (FTP) 서버, 컨텐츠 전달 네트워크 디바이스, 또는 NAS (network attached storage) 디바이스를 나타낼 수도 있다. 목적지 디바이스 (116) 는 인터넷 커넥션을 포함한, 임의의 표준 데이터 커넥션을 통해 파일 서버 (114) 로부터의 인코딩된 데이터에 액세스할 수도 있다. 이것은 파일 서버 (114) 상에 저장된 인코딩된 데이터에 액세스하기에 적합한, 무선 채널 (예컨대, Wi-Fi 커넥션), 유선 커넥션 (예컨대, 디지털 가입자 라인 (DSL), 케이블 모뎀 등), 또는 이들 양자 모두의 조합을 포함할 수도 있다. 파일 서버 (114) 및 입력 인터페이스 (122) 는 스트리밍 송신 프로토콜, 다운로드 송신 프로토콜, 또는 이들의 조합에 따라 동작하도록 구성될 수도 있다.
출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 무선 송신기들/수신기들, 모뎀들, 유선 네트워킹 컴포넌트들 (예컨대, 이더넷 카드들), 다양한 IEEE 802.11 표준들 중 임의의 것에 따라 동작하는 무선 통신 컴포넌트들, 또는 다른 물리적 컴포넌트들을 나타낼 수도 있다. 출력 인터페이스 (108) 및 입력 인터페이스 (122) 가 무선 컴포넌트들을 포함하는 예들에 있어서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 4G, 4G-LTE (롱 텀 에볼루션), LTE 어드밴스드, 5G 등과 같은 셀룰러 통신 표준에 따라, 인코딩된 데이터와 같은 데이터를 전송하도록 구성될 수도 있다. 출력 인터페이스 (108) 가 무선 송신기를 포함하는 일부 예들에 있어서, 출력 인터페이스 (108) 및 입력 인터페이스 (122) 는 IEEE 802.11 사양, IEEE 802.15 사양 (예컨대, ZigBee™), Bluetooth™ 표준 등과 같은 다른 무선 표준들에 따라, 인코딩된 데이터와 같은 데이터를 전송하도록 구성될 수도 있다. 일부 예들에 있어서, 소스 디바이스 (102) 및/또는 목적지 디바이스 (116) 는 개별 SoC (system-on-a-chip) 디바이스들을 포함할 수도 있다. 예를 들어, 소스 디바이스 (102) 는 G-PCC 인코더 (200) 및/또는 출력 인터페이스 (108) 에 기인한 기능성을 수행하기 위한 SoC 디바이스를 포함할 수도 있고, 목적지 디바이스 (116) 는 G-PCC 디코더 (300) 및/또는 입력 인터페이스 (122) 에 기인한 기능성을 수행하기 위한 SoC 디바이스를 포함할 수도 있다.
본 개시의 기법들은 자율 차량들 사이의 통신, 스캐너들, 카메라들, 센서들 및 로컬 또는 원격 서버들과 같은 프로세싱 디바이스들 사이의 통신, 지리적 맵핑, 또는 다른 어플리케이션들과 같은 다양한 어플리케이션들 중 임의의 어플리케이션의 지원에 있어서 인코딩 및 디코딩에 적용될 수도 있다.
목적지 디바이스 (116) 의 입력 인터페이스 (122) 는 컴퓨터 판독가능 매체 (110)(예를 들어, 통신 매체, 저장 디바이스 (112), 파일 서버 (114) 등) 로부터 인코딩된 비트스트림을 수신한다. 인코딩된 비트스트림은 코딩된 유닛들 (예를 들어, 슬라이스들, 픽처들, 픽처들의 그룹들, 시퀀스들 등) 의 프로세싱 및/또는 특성들을 기술하는 값들을 갖는 신택스 엘리먼트들과 같은, G-PCC 디코더 (300) 에 의해 또한 사용되는 G-PCC 인코더 (200) 에 의해 정의된 시그널링 정보를 포함할 수도 있다. 데이터 소비자 (118) 는 디코딩된 데이터를 사용한다. 예를 들어, 데이터 소비자 (118) 는 물리적 오브젝트들의 위치들을 결정하기 위해 디코딩된 데이터를 사용할 수도 있다. 일부 예들에 있어서, 데이터 소비자 (118) 는 포인트 클라우드에 기초하여 이미지를 제시하기 위한 디스플레이를 포함할 수도 있다.
G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 각각은 다양한 적합한 인코더 및/또는 디코더 회로, 이를 테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들 중 임의의 것으로서 구현될 수도 있다. 기법들이 부분적으로 소프트웨어로 구현되는 경우, 디바이스는 적합한 비일시적 컴퓨터 판독가능 매체에 소프트웨어에 대한 명령들을 저장하고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하는 하드웨어에서 그 명령들을 실행할 수도 있다. G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 이들 중 어느 하나는 각각의 디바이스에서 결합된 인코더/디코더 (CODEC) 의 부분으로서 통합될 수도 있다. G-PCC 인코더(200) 및/또는 G-PCC 디코더(300)를 포함하는 디바이스는 하나 이상의 집적 회로들, 마이크로프로세서들, 및/또는 다른 타입들의 디바이스들을 포함할 수도 있다.
G-PCC 인코더(200) 및 G-PCC 디코더(300)는 지오메트리 포인트 클라우드 압축 (G-PCC) 표준 또는 비디오 포인트 클라우드 압축 (V-PCC) 표준과 같은 코딩 표준에 따라 동작할 수도 있다. 본 개시는 일반적으로 데이터를 인코딩 또는 디코딩하는 프로세스를 포함하기 위해 픽처들의 코딩 (예를 들어, 인코딩 및 디코딩) 을 언급할 수도 있다. 인코딩된 비트스트림은 일반적으로 코딩 결정들 (예를 들어, 코딩 모드들) 을 나타내는 신택스 엘리먼트들에 대한 일련의 값들을 포함한다.
본 개시는 일반적으로 신택스 엘리먼트들과 같은, 소정 정보의 "시그널링” 을 언급할 수도 있다. 용어 "시그널링" 은 일반적으로 인코딩된 데이터를 디코딩하는데 사용된 신택스 엘리먼트들 및/또는 다른 데이터에 대한 값들의 통신을 지칭할 수도 있다. 즉, G-PCC 인코더 (200) 는 비트스트림에서 신택스 엘리먼트들에 대한 값들을 시그널링할 수도 있다. 일반적으로, 시그널링은 비트스트림에서 값을 생성하는 것을 지칭한다. 상기 언급된 바와 같이, 소스 디바이스 (102) 는 목적지 디바이스 (116) 에 의한 추후 취출을 위해 저장 디바이스 (112) 에 신택스 엘리먼트를 저장할 때 발생할 수도 있는 바와 같이, 비실시간으로 또는 실질적으로 실시간으로 비트스트림을 목적지 디바이스 (116) 로 전송할 수도 있다.
ISO/IEC MPEG (JTC 1/SC 29/WG 11) 는 현재의 접근방식의 것을 상당히 초과하는 압축 능력을 갖는 포인트 클라우드 코딩 기법의 표준화에 대한 잠재적 필요성을 연구중이고 표준을 생성하는 것을 목표로 한다. 그 그룹은 3-차원 그래픽 팀 (3DG) 으로서 알려진 공동 작업에서, 이 분야의 전문가들이 제안하는 압축 기술 설계를 평가하기 위해, 이 탐사 활동을 함께 진행하고 있다.
포인트 클라우드 압축 활동들은 2개의 상이한 접근법들로 분류된다. 제 1 접근법은 3D 오브젝트를 세그먼트하고 세그먼트들을 다수의 2D 평면들 (이는 2D 프레임에서 "패치"로서 표현된다) 에 프로젝션하는 "비디오 포인트 클라우드 압축" (V-PCC) 이고, 이는 추가로 레거시 2D 비디오 코덱 이를 테면, HEVC (High Efficiency Video Coding) (ITU-T H.265) 코덱에 의해 코딩된다. 제 2 접근법은 3D 지오메트리, 즉, 3D 공간에서 포인트들의 세트의 포지션 및 (3D 지오메트리와 연관된 각각의 포인트에 대해) 연관된 속성 값들을 직접 압축하는 "지오메트리-기반 포인트 클라우드 압축" (G-PCC) 이다. G-PCC 는 포인트 클라우드들의 압축을 양쪽 카테고리 1 (정적 포인트 클라우드들) 및 카테고리 3 (동적으로 획득된 포인트 클라우드들) 에서 어드레싱한다. G-PCC 표준의 최신 초안은 G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w19328, Alpbach, Austria, June 2020 에서 입수 가능하며, 코덱에 대한 설명은 G-PCC Codec Description v6, ISO/IEC JTC1/SC29/WG11 w19091, Brussels, Belgium, January 2020 에서 입수 가능하다.
포인트 클라우드는 3D 공간에서의 포인트들의 세트를 포함하고, 포인트와 연관된 속성들을 가질 수도 있다. 속성들은 색상 정보, 이를 테면, R, G, B 또는 Y, Cb, Cr, 또는 반사율 정보, 또는 다른 속성들일 수도 있다. 편의상, 색상 컴퍼넌트(예를 들어, RGB 또는 YCbCr)을 갖는 색상 속성에 대하여 다양한 예들이 설명되지만, 예시적인 기법은 속성 또는 속성의 컴포넌트에 일반적으로 적용가능하다. 포인트 클라우드들은 다양한 카메라들 또는 센서들, 이를 테면 LIDAR 센서들 및 3D 스캐너들에 의해 캡처될 수도 있고, 또한 컴퓨터-생성될 수도 있다. 포인트 클라우드 데이터는 건설 (모델링), 그래픽스 (시각화 및 애니메이션을 위한 3D 모델들), 자동차 산업 (내비게이션에 도움을 주기 위해 사용된 LIDAR 센서들) 을 포함하지만 이에 한정되지 않는 다양한 어플리케이션들에서, 및 모바일 폰들, 태블릿 컴퓨터들, 또는 다른 컴퓨팅 디바이스들을 채용할 수 있는 다른 어플리케이션들에서 사용된다.
포인트 클라우드 데이터에 의해 점유되는 3D 공간은 가상의 경계 박스로 인클로즈될 수도 있다. 경계 박스에서의 포인트들의 포지션은 특정 정밀도로 표현될 수도 있고; 따라서, 하나 이상의 포인트들의 포지션들은 그 정밀도에 기초하여 양자화될 수도 있다. 최소 레벨에서, 경계 박스는 단위 큐브에 의해 표현되는 공간의 최소 단위인 복셀들로 분할된다. 경계 박스 내의 복셀은 제로, 하나, 또는 하나 초과의 포인트와 연관될 수도 있다. 경계 박스는 타일들라고 불릴 수도 있는 다수의 큐브/큐보이드 영역들로 분할될 수도 있다. 각각의 타일은 하나 이상의 슬라이스들로 코딩될 수도 있다. 슬라이스들 및 타일들로의 경계 박스의 파티셔닝은 각각의 파티션에서의 포인트들의 수에 기초하거나, 또는 다른 고려사항들에 기초할 수도 있다 (예를 들어, 특정 영역은 타일들로서 코딩될 수도 있다). 슬라이스 영역들은 비디오 코덱들에서의 것들과 유사한 분할 결정들 (splitting decisions) 을 사용하여 추가로 파티셔닝될 수도 있다.
더 상세히 설명된 바와 같이, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트 클라우드에서의 포인트의 하나 이상의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하도록 구성될 수 있다. G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트의 컴포넌트들 중 하나 이상에 대한 잔차 값이 0이라는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하도록 구성될 수 있다. 예를 들어, 잔차 값을 비독립적 방식으로 코딩하는 것은 2개의 다른 컴포넌트에 대한 잔차 값이 0인 것에 기초하여 제1 방식으로 컴포넌트 중 하나에 대한 잔차 값(예를 들어, 잔차 값의 크기)을 코딩하는 것을 포함할 수 있다. 제1 방식은 0이 아닌 2개의 다른 컴포넌트에 대한 잔차 값에 기초하여 컴포넌트 중 하나에 대한 잔차 값을 코딩하는 제2 방식과 상이할 수 있다.
예를 들어, 현재 포인트는 복수의 속성을 포함할 수 있고, 각 속성은 각각 컴포넌트 값을 갖는 하나 이상의 컴포넌트를 포함할 수 있다. 속성의 각 컴포넌트에 대한 컴포넌트 값을 시그널링하는 대신, G-PCC 인코더(200)는 현재 포인트과 이전 포인트(예를 들어, 이전에 인코딩된 포인트)의 컴포넌트 값들 사이의 잔차 값(예를 들어, 차이)을 결정할 수 있다. G-PCC 인코더(200)는 잔차 값 및 이전 포인트를 식별하는 데 사용되는 정보를 시그널링하도록 구성될 수 있다.
G-PCC 디코더(300)는 G-PCC 디코더(300)의 관점에서 이전에 디코딩된 포인트인 이전 포인트를 식별하는 데 사용되는 정보 및 잔차 값을 수신할 수 있다. G-PCC 디코더(300)는 시그널링된 정보로부터 이전 포인트를 식별하고, 이전 포인트의 컴포넌트 값에 잔차 값을 가산하여 현재 포인트의 속성을 재구성할 수 있다.
예를 들어 도 4 와 관련하여 더 상세하게 설명되는 바와 같이, 일부 예에서, 속성의 컴포넌트에 대한 잔차 값은 0일 수 있고, 각각의 속성의 컴포넌트에 대한 잔차 값들이 제로인 순서대로의 복수의 포인트(예를 들어, 스캔 순서에 의해 정의된 연속적인 포인트들)가 있을 수 있다. 그러한 경우에, G-PCC 인코더(200)는 0의 값을 시그널링하기보다는 속성에 대해 0의 잔차 값을 갖는 연속 포인트의 수를 나타내는 제로런 신택스 요소를 시그널링할 수 있다. 그후, G-PCC 인코더(200)는 잔차 값이 0인 연속 포인트들에서 마지막 포인트에 후속하는 포인트의 속성의 잔차 값을 시그널링할 수도 있다. 제로런 구문 요소가 0 인 경우, 그것은 현재 포인트 속성의 잔차 값이 0이 아님을 의미한다.
속성의 모든 컴포넌트에 대한 잔차 값이 0인 경우 속성의 잔차 값은 0으로 간주될 수 있다. 속성의 컴포넌트 중 임의의 컴포넌트에 대한 잔차 값이 0이 아닌 경우, 속성에 대한 잔차 값은 0이 아닌 것으로 간주될 수 있다. 즉, 다중 컴포넌트 속성의 경우, 속성에 대한 잔차 값은 0으로 간주될 수 있으며, 모든 컴포넌트에 대한 잔차 값이 0이면 제로런 구문 요소에서 카운팅될 수 있다. 임의의 컴포넌트의 잔차 값이 0이 아닌 경우 다중 컴포넌트 속성에 대한 제로런 구문 요소는 0과 같을 수 있다.
일부 기법들에서, G-PCC 인코더(200)는 임의의 컴포넌트에 대한 잔차 값이 0이 아닌 경우 속성의 각 컴포넌트에 대한 잔차 값을 인코딩할 수 있다. 0이 아닌 컴포넌트의 크기 및 부호 정보는 별도로 코딩된다. 본 개시는 시그널링의 양을 감소시키고, 이에 의해 다중 컴포넌트 속성의 적어도 하나의 컴포넌트에 대한 잔차 값이 0이 아닌 일부 예시적인 경우에 대역폭 활용을 증진하는 예시적인 기법들을 기술한다.
예를 들어, 속성(예를 들어, 다중 컴포넌트 속성)의 한 컴포넌트에 대한 잔차 값이 0이 아니더라도 다른 컴포넌트에 대한 잔차 값이 0일 가능성이 있다. 다른 컴포넌트에 대한 잔차 값이 0인 경우, G-PCC 인코더(200)가 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋 (예를 들어, 1과 같은 양의 정수 값) 과 동일한 하나의 컴포넌트의 크기에 대한 값을 결정하는 경우, 시그널링될 필요가 있는 데이터의 양의 감소가 있을 수 있는 한편, 부호 정보의 시그널링은 변경되지 않고 남을 수 있다. G-PCC 디코더(300)의 관점에서, G-PCC 디코더(300)가 하나의 컴포넌트를 제외한 모든 컴포넌트의 값이 0이라고 결정하면, G-PCC 디코더(300)는 하나의 컴포넌트에 대한 디코딩된 값과 오프셋을 가산함으로써 하나의 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다.
일 예로서, 현재 포인트의 표면 법선 속성에 대해, x-컴포넌트, y-컴포넌트 및 z-컴포넌트의 세 가지 컴포넌트가 있을 수 있다. G-PCC 인코더(200)는 x 컴포넌트에 대한 잔차 값(예를 들어, 현재 포인트의 속성의 x 컴포넌트 마이너스 이전 포인트의 속성의 x 컴포넌트)을 결정하고, y 컴포넌트에 대한 잔차 값(예를 들어, 현재 포인트 속성의 y-컴포넌트 마이너스 이전 포인트의 속성의 y-컴포넌트)을 결정하고, z-컴포넌트에 대한 잔차 값(예를 들어, 현재 포인트 속성의 z-컴포넌트 마이너스 이전 포인트의 속성의 z-컴포넌트)을 결정할 수 있다. 이 예에서, x-컴포넌트에 대한 잔차 값은 0일 수 있고, y-컴포넌트에 대한 잔차 값은 0일 수 있으며, z-컴포넌트에 대한 잔차 값은 5일 수 있다(예를 들어, 잔차 값의 크기는 5이고 부호 정보는 양수이다).
G-PCC 인코더(200)는 포인트 클라우드 내의 포인트의 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정하도록 구성될 수 있다. 예를 들어, x 컴포넌트과 y 컴포넌트의 잔차 값은 0과 같지만 z 컴포넌트의 잔차 값은 0이 아니다. 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0이라는 결정에 기초하여, G-PCC 인코더(200)는 하나의 컴포넌트의 잔차 값의 크기(예를 들어, 5) 마이너스 오프셋과 같은 하나의 컴포넌트에 대한 값(예를 들어, z 컴포넌트의 크기에 대한 값)을 결정할 수 있다. 하나의 예로서, 오프셋은 1이고, 이 예에서 하나의 컴포넌트에 대한 값(예를 들어, z-컴포넌트의 크기에 대한 값)은 4(예를 들어, 5 마이너스 1)와 같다.
G-PCC 인코더(200)는 속성 중 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩(예를 들어, x 및 y 컴포넌트에 대해 0의 값을 인코딩)하고, 인코딩된 0 의 값을 시그널링할 수 있다. 하나의 컴포넌트(예를 들어, z-컴포넌트)에 대해, G-PCC 인코더(200)는 하나의 컴포넌트의 값(예를 들어, 4)을 인코딩하고 인코딩된 값을 비트스트림으로 시그널링할 수 있다. 하나 이상의 예들에서, 하나의 컴포넌트의 값은 하나의 컴포넌트의 크기를 지칭할 수 있다. 부호 정보는 별도로 인코딩 및 디코딩될 수 있다. 일반적으로 더 작은 값을 시그널링하는 데 더 적은 비트가 필요할 수 있고, 따라서 5 대신 4 의 값을 시그널링하는 데 더 적은 비트가 필요할 수 있다. 예를 들어, G-PCC 인코더(200)는 크기 정보에 대해 0, 0, 및 4 의 값을 인코딩 및 시그널링할 수 있다.
G-PCC 디코더(300)는 포인트 클라우드의 포인트의 속성의 컴포넌트에 대한 값을 디코딩할 수 있으며, 여기서 그 값은 컴포넌트에 대한 잔차 값을 나타낸다. 예를 들어, 위의 예를 유지하면서, G-PCC 디코더(300)는 0, 0 및 4의 값을 디코딩할 수 있다. G-PCC 디코더(300)는 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정할 수 있다. 예를 들어, G-PCC 디코더(300)는 x 컴포넌트에 대한 잔차 값이 0이고 y 컴포넌트에 대한 잔차 값이 0이라고 결정할 수 있다. 그러나 z-컴포넌트에 대해 수신된 값은 4 이다. 따라서 z 컴포넌트의 잔차 값은 0이 아니다.
이러한 예에서, 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 디코더(300)는 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 한 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다. 예를 들어, 오프셋 값은 1일 수 있고, G-PCC 디코더(300)는 z-컴포넌트에 대한 잔차 값의 크기가 5라고 결정하기 위해 z-컴포넌트에 대한 디코딩된 값(예를 들어, 4)에 1 을 더할 수 있다. G-PCC 디코더(300)는 컴포넌트들에 대한 잔차 값들에 기초하여 포인트의 속성에 대한 컴포넌트들을 재구성할 수도 있다. 예를 들어, G-PCC 디코더(300)는 이전 포인트의 속성의 컴포넌트 값에 컴포넌트에 대한 잔차 값을 더하여 포인트의 속성의 컴포넌트를 재구성할 수 있다.
위의 예에서, G-PCC 인코더(200)는 x-컴포넌트에 대한 잔차 값을 시그널링하도록 구성될 수 있으며, 그 다음에는 y-컴포넌트, 그리고 z-컴포넌트가 뒤따른다. x-컴포넌트와 y-컴포넌트의 잔차 값이 0인 경우(예를 들어, 속성의 처음 두 잔차 값이 0인 경우), z-컴포넌트의 잔차 값은 0이 아닌 값일 필요가 있을 수도 있다. 그렇지 않으면 제로런 구문 요소는 모든 컴포넌트의 잔차 값이 0임을 나타낼 수 있다. 따라서, G-PCC 디코더(300)가 처음 2개의 잔차 값을 0으로 디코딩할 때, G-PCC 디코더(300)는 다음 컴포넌트(예를 들어, z-컴포넌트)에 대한 잔차 값이 0이 아닌 값일 필요가 있다고 결정할 수 있으며, 이는 제로런 구문 요소가 속성의 잔차 값이 0과 같다는 것을 나타내지 않았기 때문이다. 다음 컴포넌트에 대한 잔차 값이 0이 아닐 필요가 있을 수도 있기 때문에, G-PCC 디코더(300)는 G-PCC 디코더(300)가 디코딩하는 다음 컴포넌트에 대한 값에 오프셋을 더하도록(예를 들어, 컴포넌트에 대한 실제 잔차 값의 크기를 결정하기 위해 G-PCC 디코더(300)가 디코딩하는 값에 1을 더하도록) 구성될 수 있다.
따라서, 속성이 N개의 컴포넌트: 컴포넌트 0 내지 컴포넌트(N-1)를 갖는 경우, 컴포넌트 0 내지 컴포넌트(N-2)의 값이 0이면 G-PCC 인코더(200)가 시그널링하고 G-PCC 디코더(300)가 수신하는 컴포넌트(N-1)에 대한 값은 컴포넌트(N-1)의 값 마이너스 오프셋일 수 있다. 예를 들어, N 차원 속성(예를 들어, N 개의 컴포넌트들을 갖는 속성)의 경우, 처음 (N-1) 개의 컴포넌트들(예를 들어, 컴포넌트들 (0 내지 N-2))에 대해, 잔차 값은 모두 0 이고(예를 들어, 값(컴포넌트 0) = 값(컴포넌트 1) = … = 값(컴포넌트 (N-2)) = 0), N 번째 컴포넌트(예를 들어, 컴포넌트 (N-1))의 경우, 크기 부분에 대해 abs(값(컴포넌트 (N-1) - 1)이 abs(값(컴포넌트 (N-1)) 대신 코딩된다.
잔차 값이 처리되는 순서대로 컴포넌트의 잔차 값을 G-PCC 인코더(200)는 시그널링하고 G-PCC 디코더(300)는 수신할 수 있다. 예를 들어, 속성의 경우 기본 컴포넌트와 보조 컴포넌트가 있을 수 있으며, 기본 컴포넌트의 정보가 보조 컴포넌트를 인코딩 또는 디코딩하는 데 사용될 수 있기 때문에 기본 컴포넌트가 보조 컴포넌트보다 먼저 처리된다.
일부 예들에서, 먼저 기본 컴포넌트에 대한 잔차 값들에 후속하여 보조 컴포넌트들에 대한 잔차 값들을, G-PCC 인코더(200)는 시그널링할 수 있고 G-PCC 디코더(300)는 수신할 수 있다. 그러나 기본 컴포넌트의 잔차 값이 0일 가능성과 비교하여 보조 컴포넌트의 잔차 값이 0일 가능성이 더 높은 경우가 있을 수 있다.
일 예로서, 색상 속성은 루마 컴포넌트 및 2 개의 크로마 컴포넌트들을 포함한다. 루마 컴포넌트는 기본 컴포넌트일 수 있고 2개의 크로마 컴포넌트는 보조 컴포넌트일 수 있다. G-PCC 인코더(200) 및 G-PCC 디코더(300)에 대한 프로세싱 순서는 루마 컴포넌트를 먼저 처리한 다음 크로마 컴포넌트를 처리하는 것일 수 있다. 그러나 크로마 컴포넌트의 잔차 값이 0일 가능성이 더 높을 수 있다.
크로마 컴포넌트에 대한 잔차 값은 0 이고, 루마 컴포넌트에 대한 잔차 값은 0 이 아니라고 가정하라. G-PCC 인코더(200)가 루마 컴포넌트에 대한 잔차 값을 먼저 시그널링한 다음 크로마 컴포넌트를 시그널링해야 한다면, G-PCC 디코더(300)는 하나의 컴포넌트를 제외한 모든 컴포넌트(예를 들어, 루마 컴포넌트는 아니고 두 크로마 컴포넌트)에 대한 잔차 값이 모든 잔차 컴포넌트 값을 디코딩한 후까지 0과 같다고 결정할 수 없을 수도 있다.
하나 이상의 예에서, 프로세싱 순서와는 상이한 코딩 순서로 속성의 컴포넌트에 대한 잔차 값을, G-PCC 인코더(200)는 시그널링하도록 구성될 수 있고 G-PCC 디코더(300)는 수신하도록 구성될 수 있다. 예를 들어, 루마 컴포넌트에 대한 잔차 값 전에 속성의 크로마 컴포넌트에 대한 잔차 값들을, G-PCC 인코더(200)는 시그널링할 수 있고 G-PCC 디코더(300)는 수신할 수 있다. 예를 들어, 인코딩 순서에서, G-PCC 인코더(200)는 크로마 컴포넌트에 대한 잔차 값 다음에 루마 컴포넌트에 대한 잔차 값을 인코딩하고 시그널링할 수 있다. 디코딩 순서에서, G-PCC 디코더(300)는 크로마 컴포넌트에 대한 잔차 값 이후에 루마 컴포넌트에 대한 잔차 값을 수신 및 디코딩(예를 들어, 파싱)할 수 있다. 상술한 바와 같이, 크로마 컴포넌트에 대한 잔차 값이 0인 경우, 루마 컴포넌트의 크기에 대해 G-PCC 인코더(200)가 시그널링하는 값과 G-PCC 디코더(300)가 디코딩하는 값은 루마 컴포넌트에 대한 잔차 값의 크기 마이너스 오프셋(예를 들어, 1 의 값)일 수 있다.
컴포넌트의 잔차 값의 크기 마이너스 오프셋인 값을 시그널링 및 디코딩하는 상기의 예는 속성의 모든 컴포넌트에 대한 잔차 값이 한 컴포넌트를 제외하고 0인 경우일 수 있다. 그러나, G-PCC 인코더(200) 또는 G-PCC 디코더(300)가 포인트 클라우드에서의 포인트의 속성의 컴포넌트들 중 적어도 두 컴포넌트들에 대한 잔차 값이 0이 아니라고 결정하면, 속성에 대한 컴포넌트에 대한 잔차 값을 G-PCC 인코더(200)는 인코딩할 수 있고 G-PCC 디코더(300)는 디코딩할 수 있다(예를 들어, 인코딩 및 디코딩된 값은 컴포넌트에 대한 실제 잔차 값일 수 있다).
또한 속성에 대한 위의 예는 표면 법선 속성과 색상 속성을 포함한다. 속성의 다른 예가 있을 수 있으며 예시적인 기법들은 위의 예에 제한되지 않는다. 속성의 예는 몇 가지 비제한적 예로서 색상, 프레임 번호, 습도, 온도, 날씨(예를 들어, 습도와 온도의 조합), 표면 법선 또는 색상과 표면 법선의 조합을 포함한다.
도 2 는 G-PCC 인코더 (200) 의 개요를 제공한다. 도 3 은 G-PCC 디코더 (300) 의 개요를 제공한다. 도시된 모듈들은 논리적이며, G-PCC 코덱의 레퍼런스 구현, 즉, ISO/IEC MPEG (JTC 1/SC 29/WG 11) 에 의해 연구된 TMC13 테스트 모델 소프트웨어에서의 구현된 코드에 반드시 일대일로 대응하는 것은 아니다.
G-PCC 인코더 (200) 및 G-PCC 디코더 (300) 양자 모두에서, 포인트 클라우드 포지션들이 먼저 코딩된다. 속성 코딩은 디코딩된 지오메트리에 의존한다. 도 2 및 도 3 에서, 그레이-셰이딩된 모듈들은 카테고리 1 데이터에 대해 통상적으로 사용되는 옵션들이다. 대각선-크로스해칭된 모듈들은 일반적으로 카테고리 3 데이터에 대해 사용되는 옵션들이다. 모든 다른 모듈들은 카테고리 1 과 카테고리 3 사이에 공통된다.
카테고리 3 데이터에 대해, 압축된 지오메트리는 통상적으로 루트로부터 개별적인 복셀들의 리프 레벨 아래까지 줄곧 옥트리로서 표현된다. 카테고리 1 데이터에 대해, 압축된 지오메트리는 프루닝된 옥트리 (즉, 루트로부터 복셀들보다 더 큰 블록들의 리프 레벨 아래로의 옥트리) 플러스 프루닝된 옥트리의 각각의 리프 내에서 표면을 근사화하는 모델로 통상적으로 표현된다. 이러한 식으로, 양쪽 카테고리 1 및 3 데이터는 옥트리 코딩 메카니즘을 공유하는 한편, 카테고리 1 데이터는 또한 표면 모델과 각각의 리프 내에서 복셀들을 근사화할 수도 있다. 사용된 표면 모델은 블록당 1-10개의 삼각형들을 포함하는 삼각측량이며, 그 결과 삼각형 스프 (triangle soup) 를 초래한다. 따라서, 카테고리 1 지오메트리 코덱은 Trisoup 지오메트리 코덱으로 알려져 있는 한편 카테고리 3 지오메트리 코덱은 Octree 지오메트리 코덱으로 알려져 있다.
옥트리의 각각의 노드에서, 점유도는 (추론되지 않을 때) 그 차일드 노드들 중 하나 이상 (최대 8 개의 노드) 에 대해 시그널링된다. (a) 현재 옥트리 노드와 페이스를 공유하는 노드들, (b) 현재 옥트리 노드와 페이스, 에지 또는 정점을 공유하는 노드들 등을 포함하는 다수의 이웃들이 특정된다. 각각의 이웃 내에서, 노드 및/또는 그것의 자식들의 점유는 현재 노드 또는 그것의 자식들의 점유를 예측하는데 사용될 수도 있다. 옥트리의 특정 노드들에 드물게 팝퓰레이팅되는 포인트들에 대해, 코덱은 또한 포인트의 3D 포지션이 직접 인코딩되는 직접 코딩 모드를 지원한다. 직접 모드가 시그널링됨을 표시하기 위해 플래그가 시그널링될 수도 있다. 최저 레벨에서, 옥트리 노드/리프 노드와 연관된 포인트들의 수가 또한 코딩될 수도 있다.
일단 지오메트리가 코딩되면, 지오메트리 포인트들에 대응하는 속성들이 코딩된다. 하나의 재구성된/디코딩된 지오메트리 포인트에 대응하는 다중의 속성 포인트들이 존재할 경우, 재구성된 포인트를 나타내는 속성 값이 도출될 수도 있다.
G-PCC 에는 세 가지 속성 코딩 방법이 있다: 지역 적응 계층적 변환 (Region Adaptive Hierarchical Transform: RAHT) 코딩, 보간-기반 계층적 최인접-이웃 예측 (예측 변환), 및 업데이트/리프팅 스텝을 갖는 보간-기반 계층적 최인접-이웃 예측 (리프팅 변환). RAHT 및 리프팅은 통상적으로 카테고리 1 데이터에 대해 사용되는 한편, 예측은 통상적으로 카테고리 3 데이터에 대해 사용된다. 그러나 두 방법 모두 임의의 데이터에 사용할 수 있으며 G-PCC의 기하학 코덱과 마찬가지로 포인트 클라우드를 코딩하는 데 사용되는 속성 코딩 방법은 비트스트림에 지정된다.
속성들의 코딩은 디테일 레벨 (level-of-detail; LOD) 에서 수행될 수도 있으며, 여기서 각 디테일 레벨로 포인트 클라우드 속성의 더 미세한 표현이 획득될 수도 있다. 각각의 디테일 레벨은 이웃 노드들로부터의 거리 메트릭에 기초하여 또는 샘플링 거리에 기초하여 지정될 수도 있다.
G-PCC 인코더 (200) 에서, 속성에 대한 코딩 방법의 출력으로서 획득되는 잔차는 양자화된다. 양자화된 잔차는 컨텍스트 적응 산술 코딩을 사용하여 코딩될 수도 있다.
도 2 의 예에서, G-PCC 인코더 (200) 는 좌표 변환 유닛 (202), 색상 변환 유닛 (204), 복셀화 유닛 (206), 속성 전달 유닛 (208), 옥트리 분석 유닛 (210), 표면 근사화 분석 유닛 (212), 산술 인코딩 유닛 (214), 지오메트리 재구성 유닛 (216), RAHT 유닛 (218), LOD 생성 유닛 (220), 리프팅 유닛 (222), 계수 양자화 유닛 (224), 및 산술 인코딩 유닛 (226) 을 포함할 수도 있다.
도 2의 예에 도시된 바와 같이, G-PCC 인코더(200)는 포지션들의 세트 및 속성들의 세트를 수신할 수도 있다. 포지션들은 포인트 클라우드 내의 포인트들의 좌표를 포함할 수도 있다. 속성들은 포인트 클라우드 내의 포인트들과 연관된 색상들과 같은 포인트 클라우드 내의 포인트들에 대한 정보를 포함할 수도 있다.
좌표 변환 유닛(202)은 포인트들의 좌표들에 변환을 적용하여 초기 도메인으로부터 변환 도메인으로 좌표들을 변환할 수도 있다. 본 발명은 변환된 좌표들을 변환 좌표들로 지칭할 수도 있다. 색상 변환 유닛 (204) 은 상이한 도메인으로 속성들의 색상 정보를 변환하기 위해 변환을 적용할 수도 있다. 예를 들어, 색상 변환 유닛 (204) 은 RGB 색상 공간으로부터 YCbCr 색상 공간으로 색상 정보를 변환할 수도 있다.
또한, 도 2의 예에서, 복셀화 유닛(206)은 변환 좌표들을 복셀화할 수도 있다. 변환 좌표들의 복셀화는 포인트 클라우드의 일부 포인트들을 양자화하여 제거하는 것을 포함할 수도 있다. 즉, 포인트 클라우드의 다수의 포인트들은 단일 "복셀" 내에 포함될 수도 있고, 그 후, 이는 일부 관점에서 하나의 포인트로서 취급될 수도 있다. 또한, 옥트리 분석 유닛(210)은 복셀화된 변환 좌표들에 기초하여 옥트리를 생성할 수도 있다. 추가적으로, 도 2의 예에서, 표면 근사 분석 유닛(212)은 포인트들의 세트들의 표면 표현을 잠재적으로 결정하기 위해 포인트들을 분석할 수도 있다. 산술 인코딩 유닛 (214) 은 표면 근사화 분석 유닛 (212) 에 의해 결정된 표면들 및/또는 옥트리의 정보를 표현하는 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다. G-PCC 인코더 (200) 는 지오메트리 비트스트림에서 이들 신택스 엘리먼트들을 출력할 수도 있다.
지오메트리 재구성 유닛 (216) 은 옥트리에 기초하여 포인트 클라우드에서 포인트들의 변환 좌표들, 표면 근사화 분석 유닛 (212) 에 의해 결정된 표면을 나타내는 데이터, 및/또는 다른 정보를 재구성할 수 있다. 지오메트리 재구성 유닛 (216) 에 의해 재구성된 변환 좌표들의 수는 복셀화 및 표면 근사화에 기인하여 포인트 클라우드의 포인트들의 원래 수와는 상이할 수도 있다. 본 개시는 결과적인 포인트들을 재구성된 포인트들로 지칭할 수도 있다. 속성 전달 유닛 (208) 는 포인트 클라우드의 원래 포인트의 속성들을 포인트 클라우드의 재구성된 포인트들로 전달할 수도 있다.
더욱이, RAHT 유닛 (218) 은 재구성된 포인트들의 속성들에 RAHT 코딩을 적용할 수도 있다. 대안적으로 또는 부가적으로, LOD 생성 유닛 (220) 및 리프팅 유닛 (222) 은 재구성된 포인트들의 속성들에 LOD 프로세싱 및 리프팅을 각각 적용할 수도 있다. RAHT 유닛 (218) 및 리프팅 유닛 (222) 은 속성들에 기초하여 계수들을 생성할 수도 있다. 계수 양자화 유닛 (224) 은 RAHT 유닛 (218) 또는 리프팅 유닛 (222) 에 의해 생성된 계수들을 양자화할 수도 있다. 산술 인코딩 유닛 (226) 은 양자화된 계수들을 표현하는 신택스 엘리먼트들에 산술 코딩을 적용할 수도 있다. G-PCC 인코더 (200) 는 속성 비트스트림에서 이들 신택스 엘리먼트들을 출력할 수도 있다.
하나 이상의 예들에서, 산술 인코딩 유닛 (226) 은 본 개시에 기술된 예시의 기법들을 수행하도록 구성될 수도 있다. 예를 들어, 상술된 바와 같이, 하나를 제외한 모든 컴포넌트에 대한 잔차 값이 0 과 동일한 경우에, 산술 인코딩 유닛 (226) 은 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 한 컴포넌트에 대한 값을 결정할 수 있다. 산술 인코딩 유닛(226)은 하나의 컴포넌트의 값을 인코딩하고 인코딩된 값을 비트스트림으로 시그널링할 수 있다. 산술 인코딩 유닛(226)은 또한 속성의 하나의 컴포넌트를 제외한 다른 컴포넌트에 대해 0의 값을 인코딩하고, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링할 수 있다.
도 3 의 예에서, G-PCC 디코더 (300) 는 지오메트리 산술 디코딩 유닛 (302), 속성 산술 디코딩 유닛 (304), 옥트리 합성 유닛 (306), 역 양자화 유닛 (308), 표면 근사화 합성 유닛 (310), 지오메트리 재구성 유닛 (312), RAHT 유닛 (314), LoD 생성 유닛 (316), 역 리프팅 유닛 (318), 역 변환 좌표 유닛 (320), 및 역 색상 변환 유닛 (322) 을 포함할 수도 있다.
G-PCC 디코더 (300) 는 지오메트리 비트스트림 및 속성 비트스트림을 획득할 수도 있다. 디코더 (300) 의 지오메트리 산술 디코딩 유닛 (302) 은 산술 디코딩 (예를 들어, CABAC (Context-Adaptive Binary Arithmetic Coding) 또는 산술 디코딩의 다른 유형) 을 지오메트리 비트스트림에서의 신택스 엘리먼트들에 적용할 수도 있다. 이와 유사하게, 속성 산술 디코딩 유닛 (304) 은 속성 비트스트림에서 신택스 엘리먼트들에 산술 디코딩을 적용할 수도 있다.
속성 산술 디코딩 유닛 (304) 은 본 개시에 기술된 예시의 기법들을 수행하도록 구성될 수도 있다. 예를 들어, 속성 산술 디코딩 유닛(304)은 포인트 클라우드의 포인트의 속성의 컴포넌트에 대한 값을 디코딩할 수 있으며, 그 값은 컴포넌트에 대한 잔차 값을 나타낸다. 속성 산술 디코딩 유닛(304)은 속성의 한 컴포넌트를 제외한 모든 컴포넌트의 잔차 값이 0 인 것으로 결정할 수 있고, 속성의 한 컴포넌트를 제외한 모든 컴포넌트의 잔차 값이 0이라는 결정에 기초하여, 속성 산술 디코딩 유닛(304)은 속성의 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 하나의 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다.
지오메트리 재구성 유닛(312)과 유사한 재구성 유닛은 컴포넌트들에 대한 잔차 값들에 기초하여 포인트의 속성의 컴포넌트들을 재구성할 수도 있다. 예를 들어, 재구성 유닛은 이전 포인트(예를 들어, 이전에 디코딩된 포인트)의 각 컴포넌트에 대한 각각의 값에 포인트의 속성의 컴포넌트 각각에 대한 잔차 값을 더할 수 있다.
옥트리 합성 유닛(306)은 지오메트리 비트스트림으로부터 파싱된 신택스 엘리먼트들에 기초하여 옥트리를 합성할 수도 있다. 표면 근사화가 지오메트리 비트스트림에서 사용되는 사례들에서, 표면 근사화 합성 유닛 (310) 은 지오메트리 비트스트림으로부터 파싱된 신택스 엘리먼트들에 기초하여 그리고 옥트리에 기초하여 표면 모델을 결정할 수도 있다.
또한, 지오메트리 재구성 유닛 (312) 은 포인트 클라우드에서의 포인트들의 좌표들을 결정하기 위해 재구성을 수행할 수도 있다. 역 변환 좌표 유닛 (320) 은 포인트 클라우드에서의 포인트들의 재구성된 좌표들 (위치들) 을 변환 도메인으로부터 초기 도메인으로 다시 컨버팅하기 위하여 재구성된 좌표에 역 변환을 적용할 수도 있다.
추가적으로, 도 3 의 예에서, 역 양자화 유닛 (308) 은 속성 값들을 역 양자화할 수도 있다. 속성 값들은 (속성 산술 디코딩 유닛 (304) 에 의해 디코딩되는 신택스 엘리먼트들을 포함하는) 속성 비트스트림으로부터 획득되는 신택스 엘리먼트에 기초할 수도 있다.
속성 값들이 어떻게 인코딩되는지에 의존하여, RAHT 유닛 (314) 은 RAHT 코딩을 수행하여 역 양자화된 속성 값들에 기초하여, 포인트 클라우드의 포인트들에 대한 색상 값들을 결정할 수도 있다. 대안적으로, LOD 생성 유닛(316) 및 역 리프팅 유닛(318)은 디테일 기반 레벨 기법을 사용하여 포인트 클라우드의 포인트들에 대한 색상 값들을 결정할 수도 있다.
또한, 도 3 의 예에서, 역 변환 색상 유닛 (322) 은 색상 값들에 역 색상 변환을 적용할 수도 있다. 역 색상 변환은 인코더 (200) 의 색상 변환 유닛 (204) 에 의해 적용된 색상 변환의 역일 수도 있다. 예를 들어, 색상 변환 유닛 (204) 은 RGB 색상 공간으로부터 YCbCr 색상 공간으로 색상 정보를 변환할 수도 있다. 따라서, 역 색상 변환 유닛 (322) 은 YCbCr 색상 공간으로부터 RGB 색상 공간으로 색상 정보를 변환할 수도 있다.
도 2 및 도 3 의 다양한 유닛들은 인코더 (200) 및 디코더 (300) 에 의해 수행되는 동작들의 이해를 돕기 위해 예시된다. 이 유닛들은 고정 기능 회로들, 프로그래밍가능 회로들, 또는 이들의 조합으로서 구현될 수도 있다. 고정 기능 회로들은 특정 기능성을 제공하는 회로들을 지칭하며, 수행될 수도 있는 동작들에 대해 미리설정된다. 프로그래밍가능 회로들은 다양한 태스크들을 수행하도록 프로그래밍될 수 있는 회로들을 지칭하고, 수행될 수 있는 동작들에 유연한 기능을 제공한다. 예를 들어, 프로그래밍가능 회로들은, 프로그래밍가능 회로들로 하여금 소프트웨어 또는 펌웨어의 명령들에 의해 정의된 방식으로 동작하게 하는 소프트웨어 또는 펌웨어를 실행할 수도 있다. 고정 기능 회로들은 (예를 들어, 파라미터들을 수신하거나 또는 파라미터들을 출력하기 위해) 소프트웨어 명령들을 실행할 수도 있지만, 고정 기능 회로들이 수행하는 동작들의 타입들은 일반적으로 불변이다. 일부 예들에서, 유닛들의 하나 이상은 별개의 회로 블록들 (고정 기능 또는 프로그램가능) 일 수도 있고, 일부 예들에서, 유닛들의 하나 이상은 집적 회로들일 수도 있다.
전술한 바와 같이, 3개의 상이한 속성 코딩 방법(즉, 예측, 리프팅 및 영역 적응 계층적 변환)이 있을 수 있다. 모든 속성 코딩 방법에 대해, 양자화된 (또는 무손실 코딩의 경우 양자화되지 않은) 잔차 계수(예를 들어, 잔차 값)가 존재할 수도 있다. 잔차 계수는 특히 높은 양자화 파라미터의 경우 제로 값 쪽으로 크게 스큐잉 (skewing)될 수도 있다. 빈번한 0 값의 효율적인 코딩을 위해, 런 길이 (run-length) 코딩이 채용된다.
도 4 는 G-PCC 에 대한 잔차 값들을 인코딩하는 예를 도시하는 플로우차트이다. 예를 들어, 도 4 는 제로런 구문 요소를 사용하는 예를 나타낸다. 색상 속성 코딩의 경우, 세 가지 색상 컴포넌트(RGB/ YCbCr/ YCoCg-R) 모두에 대해 제로런이 정의된다.
도 4 의 예에서, 속성에 대한 잔차 값은 73, 50, 31, 15, 0, 12, 및 그후 N 시리즈의 0 일 수 있다. 도 4 의 잔차 값은 잔차값의 크기를 의미하며, 각 잔차값은 양수 또는 음수일 수 있다. "인코딩되는 값"은 인코딩되어야 하는 값을 나타낸다. 속성에 대한 잔차 값 이전에, 제로런 신택스 요소를 G-PCC 인코더(200)는 인코딩할 수 있고 G-PCC 디코더(300)는 디코딩할 수 있다.
예를 들어, 제로런은 3개의 잔차 값이 모두 0일 때 (예를 들어, 포인트 클라우드의 한 포인트에 대한 3개의 색상 컴포넌트의 잔차 값이 0 일 때) 증분된다. 따라서, 비제로 색상 속성 잔차 값의 경우, 즉 모든 컴포넌트가 제로 잔차를 갖지는 않는 경우, 제로런의 값은 0 으로 설정된다.
예를 들어, 73 의 값이 비제로이기 때문에 잔차 값 73 이전의 제로런 구문 요소는 0과 같다(예를 들어, 값이 73 이므로 제로의 잔차 값의 런 길이는 0 이다). 잔차 값 50 이전의 제로런 구문 요소는 0과 같다(예를 들어, 값이 50이므로 잔차 값 0의 런 길이는 0 이다). 잔차 값 32 이전의 제로런 구문 요소는 0과 같다(예를 들어, 값이 32이므로 잔차 값 0의 런 길이는 0 이다). 잔차 값 15 이전의 제로런 구문 요소는 0과 같다(예를 들어, 값이 15이므로 잔차 값 0의 런 길이는 0 이다).
잔차 값 15 다음에 오는 잔차 값은 0 의 하나의 잔차 값이다. 따라서 잔차값 15 이후의 제로런 신택스 요소는 1로 설정되어 값이 0인 하나의 잔차값의 스트링이 있음을 나타낸다. 잔차값 12 다음에 오는 잔차값은 0 의 N개의 잔차값들이다. 따라서 잔차 값 12 이후의 제로런 구문 요소는 N으로 설정되어 값이 0인 N 개의 잔차 값들의 스트링이 있음을 나타낸다.
각 컴포넌트에 대해 크기와 부호는 별도로 코딩된다. 부호는 1비트의 바이패스 코딩을 사용하여 시그널링된다. 도 4 에 예시된 바와 같이, 각각의 비제로 잔차 값은 1씩 감산된다.
G-PCC 인코더 (200) 는 결과의 값이 0 과 동일한지 여부를 결정할 수도 있다 (400). 크기의 경우, 값이 0 (400의 예)이면 "isZero" 플래그가 1로 설정되어 크기가 0 인지 여부를 나타내며(402), 이후 크기가 0이 아니면(400의 아니오) 플래그 "isZero"는 0 으로 설정되고 (404), 잔차 값이 1 인지 여부를 나타내는 후속 플래그 "isOne"이 도입된다. 제로 런 길이 코딩에서, 각 잔차 값 앞의 0의 수가 제로런으로 카운트되고, 그 후 0 들의 시퀀스를 인코딩하는 대신 제로런이 인코딩된다.
G-PCC 인코더 (200) 는 값이 1 과 동일한지 여부를 결정할 수도 있다 (406). 값이 1 과 동일하면(406의 예), G-PCC 인코더(200)는 "isOne"의 값을 1로 설정할 수 있다(408). 값이 1 과 동일하지 않은 경우(406의 아니오), G-PCC 인코더(200)는 "isOne"의 값을 0 으로 설정할 수 있다(410). G-PCC 인코더(200)는 시그널링될 필요가 있는 데이터의 양을 줄이기 위해 값 - 2 를 인코딩할 수 있다(412).
도 4 의 예는 비제로 잔차 값을 갖는 속성의 2 이상의 컴포넌트들이 존재하는 경우 적용가능할 수도 있다. 그러나, 비제로 잔차 값을 갖는 속성의 컴포넌트가 하나뿐인 경우, G-PCC 인코더(200)는 그 하나의 컴포넌트에 대한 잔차 값을 그 하나의 컴포넌트의 값 마이너스 오프셋 (예를 들어, 1) 으로서 인코딩하고 시그널링할 수 있다. 그러나, G-PCC 인코더(200)가 도 4 의 예에 따라 하나의 컴포넌트에 대한 잔차 값을 시그널링하는 것이 가능할 수도 있다.
제로런 파라미터는 3개의 컨텍스트들을 갖는 잘린 단항 코드로 인코딩되고, isOne 플래그는 하나의 비제한적 예로서 isZero 플래그를 인코딩하는 것과 동일한 방식을 사용하여 7개의 컨텍스트들로 인코딩된다. 제로런, isZero 및 isOne을 사용하는 위의 예시적인 기법은 세 가지 속성 코딩 방식 모두에 적용된다(예를 들어, 세 가지 색상 컴포넌트 모두 동일하거나 유사한 방식을 사용하여 코딩될 수 있다).
제로런, isZero 및 isOne 이후, 잔차 값을 코딩하기 위한 다음 단계들은 나머지 절대 값의 코딩을 수반한다. "알파벳 파티션" 코딩이 사용되며, 자세한 내용은 Sehoon Yea, Stephen Wegner, Shan Liu "[GPCC] Alphabet partition coding of transform coefficients," ISO/IEC JTC1/SC29/WG11 MPEG/m52720, Brussels , BE, Jan. 2020.” 에서 발견될 수 있다. 잔차를 인코딩하기 위한 소스 코드는 다음과 같다. 여기서 value0, value1, value2는 각각 제1, 제2, 제3 색상 컴포넌트의 잔차 값을 나타낸다. 예를 들어, 첫 번째 컴포넌트(예를 들어, value0)는 luma이고 다른 컴포넌트(예를 들어, value1 및 value 2)는 YCbCr 및 YCoCg-R 코딩을 위한 크로마들이다. 적색-녹색-청색 (RGB) 색 공간에 대해 유사한 색상 컴포넌트가 있을 수 있다.
인코딩을 위한 코드는 다음과 같다:
void
PCCResidualsEncoder::encode(int32_t value0, int32_t value1, int32_t value2)
{
int mag0 = abs(value0);
int mag1 = abs(value1);
int mag2 = abs(value2);
int b0 = (mag0 == 0);
int b1 = (mag0 <= 1);
int b2 = (mag1 == 0);
int b3 = (mag1 <= 1);
encodeSymbol(mag0, 0, 0, 0);
encodeSymbol(mag1, 1 + b0, 1 + b1, 1);
encodeSymbol(mag2, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (mag0)
arithmeticEncoder.encode(value0 < 0, binaryModel0);
if (mag1)
arithmeticEncoder.encode(value1 < 0, binaryModel0);
if (mag2)
arithmeticEncoder.encode(value2 < 0, binaryModel0);
}
void
PCCResidualsEncoder::encodeSymbol(uint32_t value, int k1, int k2, int k3)
{
bool isZero = value == 0;
arithmeticEncoder.encode(isZero, binaryModelIsZero[k1]);
if (isZero) {
return;
}
bool isOne = value == 1;
arithmeticEncoder.encode(isOne, binaryModelIsOne[k2]);
if (isOne) {
return;
}
value -= 2;
if (value < kAttributeResidualAlphabetSize) {
encodeInterval(value, k3);
} else {
int alphabetSize = kAttributeResidualAlphabetSize;
encodeInterval(alphabetSize, k3);
arithmeticEncoder.encodeExpGolomb(value - alphabetSize, 0, binaryModel0, binaryModelDiff[k1]);
}
}
대응하는 디코딩 프로세스는 다음과 같다:
uint32_t
PCCResidualsDecoder::decodeSymbol(int k1, int k2, int k3)
{
if (arithmeticDecoder.decode(binaryModelIsZero[k1]))
return 0u;
if (arithmeticDecoder.decode(binaryModelIsOne[k2]))
return 1u;
uint32_t value = decodeInterval(k3);
if (value == kAttributeResidualAlphabetSize) {
value +=
arithmeticDecoder.decodeExpGolomb(0, binaryModel0, binaryModelDiff[k1]);
}
return value + 2;
}
//------------------------------------------------ -------------------------------------------
int
PCCResidualsDecoder::decodeInterval(int k3)
{
// 간격 인덱스의 디코딩
auto& aed = arithmeticDecoder;
int setIdx = 0;
setIdx = (setIdx << 1) | aed.decode(ctxSetIdx[k3][0]);
setIdx = (setIdx << 1) | aed.decode(ctxSetIdx[k3][1 + setIdx]);
setIdx = (setIdx << 1) | aed.decode(ctxSetIdx[k3][3 + setIdx]);
setIdx = (setIdx << 1) | aed.decode(ctxSetIdx[k3][7 + setIdx]);
// 간격 내 위치 디코딩
int intervalStart = kCoeffIntervalStart[setIdx];
int intervalEnd = kCoeffIntervalStart[setIdx + 1];
int intervalRange = intervalEnd - intervalStart;
// 코딩할 비트 수는 log2(intervalEnd - intervalStart) 이다
// 다음은 범위가 2의 거듭제곱이라고 가정한다
int symbolIdx = 0;
for (int mask = intervalRange - 1, i = 0; mask; mask >>= 1, ++i)
symbolIdx |= aed.decode(ctxSymbolBit[k3]) << i;
// 재구성
return intervalStart + symbolIdx;
}
//------------------------------------------------ -------------------------------------------
void
PCCResidualsDecoder::decode(int32_t value[3])
{
value[0] = decodeSymbol(0, 0, 0);
int b0 = value[0] == 0;
int b1 = value[0] <= 1;
value[1] = decodeSymbol(1 + b0, 1 + b1, 1);
int b2 = value[1] == 0;
int b3 = value[1] <= 1;
value[2] = decodeSymbol(3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (value[0] && arithmeticDecoder.decode(binaryModel0))
value[0] = -value[0];
if (value[1] && arithmeticDecoder.decode(binaryModel0))
value[1] = -value[1];
if (value[2] && arithmeticDecoder.decode(binaryModel0))
value[2] = -value[2];
}
대응하는 신택스 및 시맨틱들은 다음과 같다:
Figure pct00001
Figure pct00002
Figure pct00003
coeff_abs_level_gt0_flag[ c ], coeff_abs_level_gt1_flag[ c ], coeff_abs_level_remaining[ c ], 그리고 coeff_sign_flag[ c ] 는 함께 c 번째 속성 계수 컴포넌트 레벨 CoeffLevel[ coeffIdx ][ c ]을 지정한다. 양의 계수 레벨은 0 과 같은 coeff_sign_flag[ c ]로 표시된다. 음의 계수 레벨은 1 과 같은 coeff_sign_flag[ c ]로 표시된다. coeff_abs_level_gt0_flag[ c ], coeff_abs_level_gt1_flag[ c ], coeff_abs_level_remaining[ c ] 또는 coeff_sign_flag[ c ] 중 존재하지 않는 것은 0으로 유추된다.
다음 의사 코드는 CoeffLevel 을 결정하는 예를 설명한다.
for ( c = 0; c < AttrDim; c++ ) {
absVal = coeff_abs_level_gt0_flag[c] + coeff_abs_level_gt1_flag[c]
absVal += coeff_abs_level_remaining[c]
CoeffLevel[coeffIdx][c] = coeff_sign_flag[c] ? -absVal : absVal
}
색상 컴포넌트의 잔차 값을 인코딩 및 디코딩하는 기법들에 특정의 문제가 있을 수도 있다. 예를 들어, 색상 속성에 대한 다음의 인코딩 및 디코딩 프로세스는 제로런이 0 일 때, 즉 모든 컴포넌트가 제로 잔차 값을 갖지는 않을 때 호출된다. 일부 기법들에서, 세 가지 컴포넌트(예를 들어, 세 가지 색상 컴포넌트)의 크기 및 부호는 독립적으로 코딩된다. 그러나 모든 잔차 값이 0 인 경우(예를 들어, value0 = value1 = value2 = 0), 그 잔차 값들은 또한 코딩되며, 이는 이러한 프로세스가 제로런 조건 (즉, 모든 잔차 값이 0 임) 이 거짓인 경우에만 호출되기 때문에 중복될 수도 있다.
다음은 G-PCC 인코더(200) 및 G-PCC 디코더(300)가 색상 컴포넌트에 대한 잔차 값을 인코딩 또는 디코딩할 수 있는 방법의 소스 코드이다.
void
PCCResidualsEncoder::encode(int32_t value0, int32_t value1, int32_t value2)
{
int mag0 = abs(value0);
int mag1 = abs(value1);
int mag2 = abs(value2);
int b0 = (mag0 == 0);
int b1 = (mag0 <= 1);
int b2 = (mag1 == 0);
int b3 = (mag1 <= 1);
encodeSymbol(mag0, 0, 0, 0);
encodeSymbol(mag1, 1 + b0, 1 + b1, 1);
encodeSymbol(mag2, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (mag0)
arithmeticEncoder.encode(value0 < 0, binaryModel0);
if (mag1)
arithmeticEncoder.encode(value1 < 0, binaryModel0);
if (mag2)
arithmeticEncoder.encode(value2 < 0, binaryModel0);
}
void
PCCResidualsDecoder::decode(int32_t value[3])
{
value[0] = decodeSymbol(0, 0, 0);
int b0 = value[0] == 0;
int b1 = value[0] <= 1;
value[1] = decodeSymbol(1 + b0, 1 + b1, 1);
int b2 = value[1] == 0;
int b3 = value[1] <= 1;
value[2] = decodeSymbol(3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (value[0] && arithmeticDecoder.decode(binaryModel0))
value[0] = -value[0];
if (value[1] && arithmeticDecoder.decode(binaryModel0))
value[1] = -value[1];
if (value[2] && arithmeticDecoder.decode(binaryModel0))
value[2] = -value[2];
}
본 개시물은 시나리오 "value0 = value1 = value2 = 0"(예를 들어, 3개의 색상 컴포넌트에 대한 잔차 값이 0 임)의 중복 코딩을 제거하기 위한 예시적인 기법들을 설명한다. 일례로서, G-PCC 인코더(200) 또는 G-PCC 디코더(300)는 포인트 클라우드에서 포인트의 하나 이상의 색상 컴포넌트에 대한 잔차 값이 0과 동일하다고 결정하고 그 포인트의 색상 컴포넌트들 중 하나 이상에 대한 잔차 값이 0과 같다는 결정을 기반으로 비독립적 방식으로 잔차 값을 코딩(예를 들어, 각각 인코딩 또는 디코딩)할 수 있다. 비독립적 방식으로 코딩한다는 것은 적어도 하나의 색상 컴포넌트에 대한 잔차 값이 코딩되는 방식이 색상 컴포넌트들 중 적어도 다른 하나에 대한 잔차 값에 기초한다는 것을 의미할 수 있다. 예를 들어, 비독립적 방식으로, 잔차 값을 코딩하기 위해, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 0 과 동일한 두 개의 다른 색상 컴포넌트에 대한 잔차 값을 기반으로 색상 컴포넌트 중 하나에 대한 잔차 값의 크기를 제1 방식으로 코딩하도록 (예를 들어, 실제 잔차 값 마이너스 오프셋을 시그널링 또는 디코딩하도록) 구성될 수도 있다. 비독립적 코딩의 경우, 제1 방식은 0 이 아닌 2개의 다른 컴포넌트에 대한 잔차 값에 기초하여 색상 컴포넌트 중 하나에 대한 잔차 값의 크기를 코딩하는 제2 방식과 상이하다.
위의 예는 하나의 예시적인 속성으로서 색상 컴포넌트들을 제공하지만 예시적인 기법들은 색상 컴포넌트로 제한되지 않는다. 예를 들어, G-PCC 인코더(200) 또는 G-PCC 디코더(300)는 포인트 클라우드에서 (예를 들어, 색상 컴포넌트가 하나의 예시적인 속성인) 포인트의 하나 이상의 속성들에 대한 잔차 값이 0 과 동일하다고 결정하고 그 포인트의 속성들 중 하나 이상에 대한 잔차 값이 0 과 같다는 결정을 기반으로 비독립적 방식으로 잔차 값을 코딩(예를 들어, 각각 인코딩 또는 디코딩)할 수 있다. 비독립적 방식으로 코딩하는 것은 적어도 하나의 속성에 대한 잔차 값이 코딩되는 방식이 속성들 중 적어도 다른 하나에 대한 잔차 값에 기초한다는 것을 의미할 수 있다. 예를 들어, 비독립적 방식으로, 잔차 값을 코딩하기 위해, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 0 과 동일한 두 개의 다른 색상 컴포넌트에 대한 잔차 값을 기반으로 속성들 중 하나에 대한 잔차 값을 제1 방식으로 코딩하도록 구성될 수도 있다. 비독립적 코딩의 경우, 제1 방식은 0 이 아닌 2개의 다른 컴포넌트에 대한 잔차 값에 기초하여 속성들 중 하나에 대한 잔차 값을 코딩하는 제2 방식과 상이하다.
위에서 언급한 바와 같이 색상 컴포넌트는 포인트의 하나의 예시적인 속성이다. 속성의 다른 예는 프레임 번호, 습도, 온도, 표면 법선 등을 포함한다. 일부 예에서, 포인트의 속성들은 그룹화될 수 있다. 예를 들어, (색상 [3 컴포넌트], 프레임 번호 [1 컴포넌트])는 총 4개의 컴포넌트에 대해 함께 그룹화될 수 있다. 습도와 온도는 (예를 들어, 날씨 특정 설명 등을 위해) 총 2개의 컴포넌트에 대해 함께 그룹화될 수 있다. (예를 들어, 라이트 필드 (light-field) 표현을 위한) 총 6개의 컴포넌트들 위한 색상 컴포넌트[3 컴포넌트] 및 표면 법선[3 컴포넌트]은 속성의 추가적인 예일 수 있다.
예를 들어, 한 가지 예시적인 기법은 abs(value2)가 0보다 커야 하므로 크기 부분에 대해 abs(value2) 대신 abs(value2) - 1 을 시그널링하는 것이다. G-PCC 인코더 (200) 의 관점에서 다른 방식으로 진술하면, 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 인코더 (200) 는 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 한 컴포넌트에 대한 값을 결정할 수 있다. G-PCC 인코더 (200) 는 하나의 컴포넌트의 값을 인코딩하고 그 인코딩된 값을 비트스트림으로 시그널링할 수 있다. G-PCC 디코더 (300) 의 관점에서, G-PCC 디코더(300)는 포인트 클라우드의 포인트의 속성의 컴포넌트에 대한 값을 디코딩할 수 있으며, 그 값은 컴포넌트에 대한 잔차 값을 나타낸다. G-PCC 디코더(300)는 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정할 수 있다. 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 디코더(300)는 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 한 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다.
인코딩 및 디코딩 프로세스를 위한 대응하는 소스 코드는 다음과 같다. 또한, value2 와 관련하여 설명되었지만 예시적인 기법들은 value0 또는 value1로 확장될 수 있다. 즉, value2는 포인트의 임의의 색상 컴포넌트에 대한 잔차 값일 수 있다. 다음에서, <ADD> ....</ADD> 내의 부분은 소스 코드에 대한 추가 사항을 표시한다.
void
PCCResidualsEncoder::encode(int32_t value0, int32_t value1, int32_t value2)
{
int mag0 = abs(value0);
int mag1 = abs(value1);
int mag2 = abs(value2);
int b0 = (mag0 == 0);
int b1 = (mag0 <= 1);
int b2 = (mag1 == 0);
int b3 = (mag1 <= 1);
encodeSymbol(mag0, 0, 0, 0);
encodeSymbol(mag1, 1 + b0, 1 + b1, 1);
<ADD> if( b0&&b2)
encodeSymbol(mag2 - 1, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
else </ADD>
encodeSymbol(mag2, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (mag0)
arithmeticEncoder.encode(value0 < 0, binaryModel0);
if (mag1)
arithmeticEncoder.encode(value1 < 0, binaryModel0);
if (mag2)
arithmeticEncoder.encode(value2 < 0, binaryModel0);
}
void
PCCResidualsDecoder::decode(int32_t value[3])
{
value[0] = decodeSymbol(0, 0, 0);
int b0 = value[0] == 0;
int b1 = value[0] <= 1;
value[1] = decodeSymbol(1 + b0, 1 + b1, 1);
int b2 = value[1] == 0;
int b3 = value[1] <= 1;
<ADD> if( b0&&b2)
value[2] = 1 + decodeSymbol(3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
else </ADD>
value[2] = decodeSymbol(3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 1);
if (value[0] && arithmeticDecoder.decode(binaryModel0))
value[0] = -value[0];
if (value[1] && arithmeticDecoder.decode(binaryModel0))
value[1] = -value[1];
if (value[2] && arithmeticDecoder.decode(binaryModel0))
value[2] = -value[2];
}
위의 예시적인 소스 코드에서, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트의 2개의 색상 컴포넌트에 대한 잔차 값이 0과 같다고 결정할 수 있다(예를 들어, 제1 크로마 컴포넌트에 대한 value0 이 제로이면 b0 가 참이고 제2 크로마 컴포넌트에 대한 value1 이 제로이면 b2 가 참인 경우, if (b0&&b2) 가 참이다). 그러한 예들에서, 비독립적 방식으로, 잔차 값들을 코딩하기 위해, 포인트의 하나 이상의 색상 컴포넌트들에 대한 잔차 값들이 0과 같다는 결정에 기초하여, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 오프셋(예를 들어, 오프셋 값이 1임)에 기초하여 제3 색상 컴포넌트에 대한 잔차 값을 코딩할 수 있다. 예를 들어, 오프셋을 기반으로 제3 색상 컴포넌트에 대한 잔차 값을 코딩하기 위해, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 인코딩을 위해 오프셋을 빼거나 디코딩을 위해 오프셋을 더함으로써 제3 색상 컴포넌트에 대한 잔차 값을 코딩할 수 있다.
일반적으로, N 차원 속성의 경우, 첫 번째 (N-1) 컴포넌트의 경우, 잔차들이 모두 0, 즉, value(0) = value(1) = … = value(N-2) = 0 이면, N 번째 컴포넌트의 경우, 크기 부분의 경우, abs(value(N-1) - 1) 이 abs(value(N-1)) 대신 코딩된다.
일부 경우에, 비트 절약은 잔차들 중 2개가 0의 값을 가질 때(예를 들어, 색상 컴포넌트 중 2개의 잔차 값이 0일 때) 발생할 수 있으므로, 세 번째 잔차(예를 들어, 제3 색상 컴포넌트에 대한 잔차 값)를 코딩하는 동안, 제3 색상 컴포넌트의 잔차 값은 0 이 아닌 것으로 유추할 수 있다(예를 들어, 값이 0 이 될 수 없음). value0 은 루마 잔차(예를 들어, 루마 색상 컴포넌트에 대한 잔차 값)를 나타내고 value1/value2는 크로마 잔차(예를 들어, 크로마 색상 컴포넌트에 대한 잔차 값)를 나타내므로 value1 = value2 = 0 (크로마 잔차가 0)일 확률이 value0 = value1 = 0 보다 더 높다.
따라서, 일부 예들에서, value0 의 코딩 전에 value1 및 value2 의 코딩(즉, 코딩 순서 변경) 은 더 많은 비트 절약을 초래할 수 있다. 위에서 설명한 중복을 처리하는 예시적인 방법은 value1 = value2 = 0일 때 value0 앞에 value1과 value2를 코딩하고 크기 부분에 대해 abs(value0) 대신 abs(value0) - 1 을 코딩하는 것이다.
인코딩 및 디코딩 프로세스를 위한 대응하는 소스 코드는 다음과 같다. 소스 코드에서 value0은 루마 컴포넌트를 나타내고 value1과 value2는 크로마 컴포넌트를 나타낸다. 다음에서, <ADD> ....</ADD> 내의 부분은 소스 코드에 대한 추가 사항을 표시한다.
void
PCCResidualsEncoder::encode(int32_t value0, int32_t value1, int32_t value2)
{
<ADD> int mag1 = abs(value1);
int mag2 = abs(value2);
int mag0 = abs(value0);
int b0 = (mag1 == 0);
int b1 = (mag1 <= 1);
int b2 = (mag2 == 0);
int b3 = (mag2 <= 1);
encodeSymbol(mag1, 0, 0, 1);
encodeSymbol(mag2, 1 + b0, 1 + b1, 1);
if (b0 && b2) {
assert(mag0 > 0);
encodeSymbol(mag0 - 1, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 0);
}
else
encodeSymbol(mag0, 3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 0); </ADD>
if (mag0)
arithmeticEncoder.encode(value0 < 0, binaryModel0);
if (mag1)
arithmeticEncoder.encode(value1 < 0, binaryModel0);
if (mag2)
arithmeticEncoder.encode(value2 < 0, binaryModel0);
}
void
PCCResidualsDecoder::decode(int32_t value[3])
{
<ADD> value[1] = decodeSymbol(0, 0, 1);
int b0 = value[1] == 0;
int b1 = value[1] <= 1;
value[2] = decodeSymbol(1 + b0, 1 + b1, 1);
int b2 = value[2] == 0;
int b3 = value[2] <= 1;
value[0] = decodeSymbol(3 + (b0 << 1) + b2, 3 + (b1 << 1) + b3, 0);
if (b0 && b2)
value[0] += 1; </ADD>
if (value[0] && arithmeticDecoder.decode(binaryModel0))
value[0] = -value[0];
if (value[1] && arithmeticDecoder.decode(binaryModel0))
value[1] = -value[1];
if (value[2] && arithmeticDecoder.decode(binaryModel0))
value[2] = -value[2];
}
위의 예시적인 소스 코드에서, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트의 크로마 색상 컴포넌트에 대한 잔차 값이 0과 같다고 결정할 수 있다(예를 들어, 제1 크로마 컴포넌트에 대한 value1 이 제로이면 b0 가 참이고 제2 크로마 컴포넌트에 대한 value2 이 제로이면 b2 가 참인 경우, if (b0&&b2) 가 참이다). 그러한 예들에서, 비독립적 방식으로, 잔차 값들을 코딩하기 위해, 포인트의 하나 이상의 색상 컴포넌트들에 대한 잔차 값들이 0과 같다는 결정에 기초하여, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 오프셋(예를 들어, 오프셋 값이 1임)에 기초하여 제3 색상 컴포넌트에 대한 잔차 값을 코딩할 수 있다.
이 예에서, 잔차 값을 코딩하기 위해, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 잔차 값의 루마 색상 컴포넌트를 코딩하기 전에 크로마 색상 컴포넌트를 코딩할 수 있다. 일부 예에서, 2개의 크로마 색상 컴포넌트에 대한 잔차 값이 0이 아니더라도, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 잔차 값의 루마 색상 컴포넌트를 코딩하기 전에 크로마 색상 컴포넌트를 코딩할 수 있다.
일반적으로, N 차원 속성의 경우, 마지막 (N-1) 컴포넌트의 경우, 잔차들이 모두 0, 즉, value(1) = value(2) = … = value(N-1) = 0 이면, 0 번째 컴포넌트의 경우, 크기 부분의 경우, abs(value(0-1) - 1) 이 abs(value(0)) 대신 코딩된다.
위는 속성의 한 예로 색상 컴포넌트를 갖는 예를 제공한다. 일반적으로, 포인트의 속성에 대한 하나 이상의 컴포넌트가 있을 수도 있고, 예시적인 기법들은 속성의 하나 이상의 컴포넌트에 대한 예로 확장될 수도 있다. 예를 들어, 포인트의 속성은 하나 이상의 컴포넌트들을 포함할 수도 있다. 일 예로서, 속성은 표면에 대한 법선 벡터, 색상 컴포넌트, 시간을 포함하는 좌표 (x, y, z), 또는 그룹일 수도 있다. 그룹은 표면에 대한 법선 벡터와 같은 다른 속성들일 수 있다. 그룹의 추가 예는 총 4개의 컴포넌트를 위해 3개의 색상 컴포넌트 및 프레임 번호, 총 2개의 컴포넌트를 위해 (예를 들어, 날씨 특정 설명 등을 위한) 습도 및 온도, 또는 (예를 들어, 라이트 필드 표현의 경우) 총 6개의 컴포넌트를 위해 3개의 색상 컴포넌트와 표면 법선을 정의하는 3개의 컴포넌트일 수도 있다.
이에 따라, 하나 이상의 예들에서, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트 클라우드에서 포인트의 속성에 대한 하나 이상의 컴포넌트에 대한 잔차 값이 0 과 같다고 결정할 수도 있다. 하나 이상의 예에서, 속성은 하나의 컴포넌트만을 포함할 수 있으며, 이 경우 속성과 컴포넌트는 동일할 (예를 들어, 프레임 번호일) 수도 있다. 하나 이상의 예들에서, 속성은 복수의 컴포넌트들을 포함할 수도 있다. 예를 들어, 색상 속성의 경우, 세 가지 색상 컴포넌트(예를 들어, RGB 또는 YCbCr)가 있을 수 있고, 표면 법선 속성의 경우 세 가지 컴포넌트(예를 들어, x, y, z)가 있을 수 있으며, 날씨 설명 속성의 경우 2개 이상의 컴포넌트(예를 들어, 습도 및 온도 등)가 있을 수 있으며, 라이트 필드 표현 속성의 경우 6개의 컴포넌트(예를 들어, 3개의 색상 컴포넌트 및 표면 법선에 대한 3개의 컴포넌트)가 있을 수 있다. 이상은 속성 및 색상 컴포넌트의 일부 예이며, 상기 기법들은 상기 예에 한정되는 것으로 간주되어서는 안 되며, 다른 유형의 속성 및 컴포넌트가 활용될 수 있다. 하나 이상의 예들에서, G-PCC 인코더(200) 및 G-PCC 디코더(300)는 포인트의 속성에 대한 하나 이상의 컴포넌트들에 대한 잔차 값이 0 이라는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩 (예를 들어, 인코딩 또는 디코딩) 할 수 있다.
신택스 및 시맨틱들의 대응하는 변경은 다음과 같다. 다음에서, <ADD> ....</ADD> 내의 부분은 소스 코드에 대한 추가 사항을 표시한다.
Figure pct00004
Figure pct00005
coeff_abs_level_gt0_flag[ c ], coeff_abs_level_gt1_flag[ c ], coeff_abs_level_remaining[ c ], 그리고 coeff_sign_flag[ c ] 는 함께 c 번째 속성 계수 컴포넌트 레벨 CoeffLevel[ coeffIdx ][ c ]을 지정한다. 양의 계수 레벨은 0 과 같은 coeff_sign_flag[ c ]로 표시된다. 음의 계수 레벨은 1 과 같은 coeff_sign_flag[ c ]로 표시된다. coeff_abs_level_gt0_flag[ c ], coeff_abs_level_gt1_flag[ c ], coeff_abs_level_remaining[ c ] 또는 coeff_sign_flag[ c ] 중 존재하지 않는 것은 0으로 유추된다.
다음 의사 코드는 본 개시물에 기술된 하나 이상의 예에 따른 동작의 일부일 수 있다.
<ADD> lastCompIsSignificant = 1; </ADD>
for ( c = 0; c < AttrDim; c++ ) {
absVal = coeff_abs_level_gt0_flag[c] + coeff_abs_level_gt1_flag[c]
absVal += coeff_abs_level_remaining[c]
<ADD>if (c == AttrDim - 1 && !제로런Rem)
if(lastCompIsSignificant)
absVal++;
lastCompIsSignificant &= !coeff_abs_level_gt0_flag[ c ]
CoeffLevel[coeffIdx][(c+1) % AttrDim] </ADD> = coeff_sign_flag[c] ? -absVal : absVal
}
도 5 는 포인트 클라우드를 인코딩하는 예시의 방법을 도시하는 플로우챠트이다. 설명의 편의를 위해, 도 6 의 예는 G-PCC 인코더(200)에 대해 설명된다. 예를 들어, 메모리 (106) 및/또는 G-PCC 인코더 (200) 의 메모리는 포인트 클라우드를 저장하도록 구성될 수도 있다. 또한 편의상 색상 속성에 대하여 예를 들어 설명하였으나, 다른 속성에도 적용될 수 있다. 속성의 예는 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합을 포함한다.
G-PCC 인코더(200)의 프로세싱 회로는 포인트 클라우드 내의 포인트의 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정하도록 구성될 수 있다 (500). 예를 들어, G-PCC 인코더(200)는 2 개의 크로마 컴포넌트에 대한 잔차 값이 0 이고 루마 컴포넌트에 대한 잔차 값이 0 이 아니라고 결정할 수도 있다. 이 예에서 루마 컴포넌트는 속성의 한 컴포넌트가며 한 컴포넌트를 제외한 모든 컴포넌트는 두 개의 크로마 컴포넌트가다.
속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 인코더(200)의 프로세싱 회로는 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정할 수 있다 (502). 오프셋의 한 예는 1과 같은 오프셋이지만 다른 정수 또는 정수가 아닌 값이 가능하다.
하나의 예로서, 제로런 신택스 요소는 속성의 적어도 하나의 컴포넌트에 대한 잔차 값이 0과 같지 않아야 함을 나타내는 거짓일 수 있다. 따라서, 하나의 컴포넌트 이전의 모든 컴포넌트에 대한 잔차 값이 0 이면, 하나의 컴포넌트(예를 들어, 루마 컴포넌트)에 대한 잔차 값은 0 이 아니어야 한다. 그러한 경우에, 하나의 컴포넌트에 대한 실제 잔차 값을 시그널링하기보다는, G-PCC 인코더(200)의 프로세싱 회로는 하나의 컴포넌트(예를 들어, 루마 컴포넌트)의 잔차 값 마이너스 오프셋(예를 들어, 1)과 동일한 하나의 컴포넌트(예를 들어, 루마 컴포넌트)에 대한 값을 결정할 수 있다.
G-PCC 인코더(200)의 프로세싱 회로는 하나의 컴포넌트의 값을 인코딩할 수 있다(504). G-PCC 인코더(200)의 프로세싱 회로는 인코딩된 값을 비트스트림으로 시그널링할 수 있다 (506).
G-PCC 인코더(200)의 프로세싱 회로는 또한 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하고, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링할 수 있다. 예를 들어, G-PCC 인코더(200)의 프로세싱 회로는 2개의 크로마 컴포넌트에 대해 0의 값을 인코딩하고 2개의 크로마 컴포넌트에 대해 0의 인코딩된 값을 시그널링할 수 있다.
G-PCC 인코더(200)의 프로세싱 회로는 비제로 잔차 값을 갖는 하나의 컴포넌트를 마지막으로, 그리고 0 의 잔차 값을 갖는 컴포넌트를 인코딩한 후에 인코딩할 수 있다. 예를 들어, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, G-PCC 인코더(200)의 프로세싱 회로는 한 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하도록 구성될 수 있다. 일 예로서, G-PCC 인코더(200)의 프로세싱 회로는 루마 컴포넌트의 값을 인코딩하기 전에 (예를 들어, 루마 컴포넌트의 잔차 값 마이너스 오프셋을 인코딩하기 전에) 2 개의 크로마 컴포넌트에 대한 제로의 잔차 값을 인코딩할 수도 있다.
일부 예에서, 컴포넌트들에 대한 프로세싱 순서가 있을 수도 있다. 예를 들어, 색상 속성에 대한 프로세싱 순서는 크로마 컴포넌트 이전에 루마 컴포넌트를 프로세싱하는 것일 수도 있다. 그러나, 상술된 바와 같이, 일부 예들에서, G-PCC 인코더(200)의 프로세싱 회로는 루마 컴포넌트의 값 (예를 들어, 그 값은 루마 컴포넌트의 잔차 값 마이너스 오프셋과 동일함) 을 인코딩하기 전에 크로마 컴포넌트에 대한 잔차 값을 먼저 인코딩할 수도 있다.
따라서, 프로세싱 순서에 있어서 하나의 컴포넌트(예를 들어, 루마 컴포넌트)이 다른 컴포넌트(예를 들어, 크로마 컴포넌트) 이전에 프로세싱된다. 그러나, 하나의 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, G-PCC 인코더(200)의 프로세싱 회로는 한 컴포넌트의 값을 인코딩하기 전에 하나의 컴포넌트를 제외한 컴포넌트에 대한 잔차 값이 인코딩되는, 프로세싱 순서와는 상이한 인코딩 순서로 인코딩하도록 구성될 수도 있다. 즉, G-PCC 인코더(200)는 루마 컴포넌트의 값을 인코딩하기 전에 크로마 컴포넌트에 대한 잔차 값이 인코딩되는 인코딩 순서로 인코딩할 수 있다. 예를 들어, 인코딩 순서에서, 한 컴포넌트는 한 컴포넌트를 제외한 컴포넌트 후에 인코딩된다.
상기 예시적인 기법은 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0인 예에 적용될 수 있다. 둘 이상의 컴포넌트에 대한 잔차 값이 0과 같거나 같지 않은 경우 인코딩 기법이 다를 수 있다. 예를 들어, 도 6 의 예의 포인트는 제1 포인트일 수도 있다. G-PCC 인코더(200)의 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 0 이 아니라고 결정할 수도 있다. 이 예에서, G-PCC 인코더(200)의 프로세싱 회로는 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 인코딩할 수 있다.
도 6 은 포인트 클라우드를 디코딩하는 예시의 방법을 도시하는 플로우챠트이다. 설명의 편의를 위해, 도 6 의 예는 G-PCC 디코더(300)에 대해 설명된다. 예를 들어, 메모리 (120) 및/또는 G-PCC 디코더 (300) 의 메모리는 포인트 클라우드를 저장하도록 구성될 수도 있다. 또한, 도 5 와 같이, 편의상 색상 속성에 대하여 예를 들어 설명하였으나, 다른 속성에도 적용될 수 있다. 속성의 예는 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합을 포함한다.
G-PCC 디코더 (300) 의 프로세싱 회로는 포인트 클라우드 내의 포인트의 속성의 컴포넌트에 대한 값을 디코딩하도록 구성될 수 있으며, 그 값은 컴포넌트에 대한 잔차 값을 나타낸다 (600). 예를 들어, G-PCC 디코더(300)는 색상 속성의 크로마 및 루마 컴포넌트에 대한 값을 디코딩할 수 있다.
G-PCC 디코더(300)의 프로세싱 회로는 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라고 결정하도록 구성될 수도 있다 (602). 예를 들어, G-PCC 디코더(300)는 2개의 크로마 컴포넌트에 대한 잔차 값이 0과 같다고 결정할 수 있다. 제로런 신택스 요소는 색상 속성에 대한 잔차 값이 0이 아님을 나타낼 수 있기 때문에, G-PCC 디코더(300)는 루마 컴포넌트에 대한 잔차 값이 0이 아니라고 결정할 수 있다. 또한, G-PCC 디코더(300)는 0이 아닌 루마 컴포넌트에 대한 잔차 값의 크기를 나타내는 루마 컴포넌트에 대한 값을 디코딩할 수 있다. 그러나, 루마 컴포넌트에 대한 실제 잔차 값(예를 들어, 잔차 값의 실제 크기)이 1 이고 디코딩된 값이 가산되는 오프셋이 1 인 경우와 같이, 루마 컴포넌트에 대한 디코딩된 값이 0 인 것이 가능하다. 루마 컴포넌트에 대한 디코딩된 값이 0인 경우에, G-PCC 디코더(300)는 제로런 신택스 요소가 거짓이었기 (예를 들어, 색상 속성의 잔차 값이 0 이라는 것을 표시하지 않았기) 때문에 루마 컴포넌트에 대한 실제의 잔차 값이 0 일 수 없다고 결정할 수도 있다.
G-PCC 디코더(300)의 프로세싱 회로는 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩할 수 있다. 예를 들어, 2개의 크로마 컴포넌트에 대해, G-PCC 디코더(300)의 프로세싱 회로는 0의 값을 디코딩할 수 있다.
속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, G-PCC 디코더(300)의 프로세싱 회로는 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 한 컴포넌트에 대한 잔차 값의 크기를 결정할 수 있다 (604). 오프셋의 한 예는 1과 동일한 오프셋이다.
일례로, 하나의 컴포넌트를 제외한 다른 모든 컴포넌트에 대한 디코딩된 값이 0 이기 때문에, G-PCC 디코더(300)는 하나의 컴포넌트에 대한 디코딩된 값이 하나의 컴포넌트의 실제 잔차 값 플러스 오프셋이라고 결정할 수도 있다. 따라서, 하나의 컴포넌트(예를 들어, 루마 컴포넌트)에 대한 잔차 값을 결정하기 위해, G-PCC 디코더(300)의 프로세싱 회로는 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산할 수 있다.
G-PCC 디코더(300)의 프로세싱 회로는 컴포넌트들에 대한 잔차 값들에 기초하여 포인트의 속성의 컴포넌트들을 재구성할 수 있다 (606). 예를 들어, G-PCC 디코더(300)의 프로세싱 회로는 이전 포인트 (예를 들어, 이전에 디코딩된 포인트) 의 컴포넌트에 대한 각각의 컴포넌트 값에 컴포넌트에 대한 잔차 값을 가산하여 포인트의 속성의 컴포넌트를 재구성할 수 있다.
G-PCC 디코더(300)의 프로세싱 회로는 비제로 잔차 값을 갖는 하나의 컴포넌트를 마지막으로, 그리고 0 의 잔차 값을 갖는 컴포넌트를 디코딩한 후에 디코딩할 수 있다. 예를 들어, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, G-PCC 디코더(300)의 프로세싱 회로는 한 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하도록 구성될 수 있다. 일 예로서, G-PCC 디코더(300)의 프로세싱 회로는 루마 컴포넌트의 값을 디코딩하기 전에 (예를 들어, 루마 컴포넌트의 잔차 값 마이너스 오프셋을 디코딩하기 전에) 2 개의 크로마 컴포넌트에 대한 제로의 잔차 값을 디코딩할 수도 있다.
상술된 바와 같이, 컴포넌트들에 대한 프로세싱 순서가 있을 수도 있다. 예를 들어, 색상 속성에 대한 프로세싱 순서는 크로마 컴포넌트 이전에 루마 컴포넌트를 프로세싱하는 것일 수도 있다. 그러나, 상술된 바와 같이, 일부 예들에서, G-PCC 디코더(300)의 프로세싱 회로는 루마 컴포넌트의 값 (예를 들어, 그 값은 루마 컴포넌트의 잔차 값 마이너스 오프셋과 동일함) 을 디코딩하기 전에 크로마 컴포넌트에 대한 잔차 값을 먼저 디코딩할 수도 있다.
따라서, 프로세싱 순서에 있어서 하나의 컴포넌트(예를 들어, 루마 컴포넌트)이 하나의 컴포넌트를 제외한 다른 컴포넌트들(예를 들어, 크로마 컴포넌트들) 이전에 프로세싱된다. 그러나, 하나의 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, G-PCC 디코더(300)의 프로세싱 회로는 한 컴포넌트의 값을 디코딩하기 전에 하나의 컴포넌트를 제외한 컴포넌트에 대한 잔차 값이 디코딩되는, 프로세싱 순서와는 상이한 디코딩 순서로 디코딩하도록 구성될 수도 있다. 즉, G-PCC 디코더(300)는 루마 컴포넌트의 값을 디코딩하기 전에 크로마 컴포넌트에 대한 잔차 값이 디코딩되는 디코딩 순서로 디코딩할 수 있다. 예를 들어, 디코딩 순서에서, 한 컴포넌트는 한 컴포넌트를 제외한 컴포넌트 후에 디코딩된다.
상기 예시적인 기법은 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0인 예에 적용될 수 있다. 둘 이상의 컴포넌트에 대한 잔차 값이 0과 같거나 같지 않은 경우 디코딩 기법이 다를 수 있다. 예를 들어, 도 6 의 예의 포인트는 제1 포인트일 수도 있다. G-PCC 디코더(300)의 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 0 이 아니라고 결정할 수도 있다. 이 예에서, G-PCC 디코더(300)의 프로세싱 회로는 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 디코딩할 수 있다.
도 7 은 본 개시의 하나 이상의 기법들과 함께 사용될 수도 있는 예시적인 레인지-발견 (range-finding) 시스템 (700) 을 예시한 개념 다이어그램이다. 도 7 의 예에서, 레인지-발견 시스템(700)은 조명기 (702) 및 센서 (704) 를 포함한다. 조명기 (702) 는 광 (706) 을 방출할 수도 있다. 일부 예들에서, 조명기 (702) 는 하나 이상의 레이저 빔들로서 광 (706) 을 방출할 수도 있다. 광 (706) 은 적외선 파장 또는 가시광 파장과 같은 하나 이상의 파장들일 수도 있다. 다른 예들에서, 광 (706) 은 간섭성이 없는 레이저 광이다. 광 (706) 이 오브젝트 (708) 와 같은 오브젝트에 부딪힐 때, 광 (706) 은 복귀 광 (710) 을 생성한다. 복귀 광 (710) 은 후방산란된 및/또는 반사된 광을 포함할 수도 있다. 복귀 광 (710) 은 센서 (704) 상에 오브젝트 (708) 의 이미지 (712) 를 생성하기 위해 복귀 광 (710) 을 지향시키는 렌즈 (711) 를 통과할 수도 있다. 센서 (704) 는 이미지 (712) 에 기초하여 신호들 (714) 을 생성한다. 이미지 (712) 는 (예를 들어, 도 7 의 이미지 (712) 에 도트들에 의해 표현된 바와 같은) 포인트들의 세트를 포함할 수도 있다.
일부 예에서, 조명기(702) 및 센서(704)는 조명기(702) 및 센서(704)가 환경의 360도 뷰를 캡처하도록 회전 구조물에 장착될 수 있다. 다른 예에서, 레인지-발견 시스템(700)은 조명기(702) 및 센서(704)가 특정 범위(예를 들어, 최대 360-도) 내의 물체의 범위를 검출할 수 있게 하는 하나 이상의 광학 컴포넌트(예를 들어, 거울, 시준기, 회절 격자 등)를 포함할 수 있다. 도 7 의 예는 단일의 조명기 (702) 및 센서 (704) 만을 도시하지만, 거리-측정 시스템 (700) 은 다중 세트들의 조명기들 및 센서들을 포함할 수도 있다.
일부 예들에서, 조명기 (702) 는 구조화된 광 패턴을 생성한다. 그러한 예들에서, 거리-측정 시스템 (700) 은 구조화된 광 패턴의 개별의 이미지들이 형성되는 다중 센서들 (704) 을 포함할 수도 있다. 범위 발견 시스템 (700) 은, 구조화된 광 패턴이 후방산란하는 오브젝트 (708) 까지의 거리를 결정하기 위해 구조화된 광 패턴의 이미지들 사이의 디스패리티들을 사용할 수도 있다. 구조화된 광 기반 범위 발견 시스템들은, 오브젝트 (708) 가 센서 (704) 에 비교적 가까울 때 (예컨대, 0.2 미터 내지 2 미터), 고 레벨의 정확도 (예컨대, 서브-밀리미터 범위에서의 정확도) 를 가질 수도 있다. 이러한 고 레벨의 정확도는 모바일 디바이스들 (예컨대, 모바일 폰들, 태블릿 컴퓨터들 등) 을 잠금해제하는 것과 같은 안면 인식 어플리케이션들에서 그리고 보안 어플리케이션들에 유용할 수도 있다.
일부 예들에 있어서, 범위 발견 시스템 (700) 은 ToF (time of flight) 기반 시스템이다. 범위 발견 시스템 (700) 이 ToF 기반 시스템인 일부 예들에 있어서, 일루미네이터 (702) 는 광의 펄스들을 생성한다. 즉, 일루미네이터 (702) 는 방출된 광 (706) 의 진폭을 변조할 수도 있다. 그러한 예들에 있어서, 센서 (704) 는 일루미네이터 (702) 에 의해 생성된 광 (706) 의 펄스들로부터 복귀 광 (710) 을 검출한다. 그 다음, 범위 발견 시스템 (700) 은, 광 (706) 이 방출되고 검출된 때와 공기 중의 광의 기지의 속도 사이의 지연에 기초하여 광 (706) 이 후방산란하는 오브젝트 (708) 까지의 거리를 결정할 수도 있다. 일부 예들에 있어서, 방출된 광 (704) 의 진폭을 변조하기보다는 (또는 그에 부가하여), 일루미네이터 (702) 는 방출된 광 (704) 의 위상을 변조할 수도 있다. 그러한 예들에 있어서, 센서 (704) 는 오브젝트 (708) 로부터의 복귀 광 (710) 의 위상을 검출하고, 일루미네이터 (702) 가 특정 위상에서 광 (706) 을 생성한 때와 센서 (704) 가 특정 위상에서 복귀 광 (710) 을 검출한 때 사이의 시간 차이들에 기초하여 그리고 광의 속도를 사용하여 오브젝트 (708) 상의 포인트들까지의 거리들을 결정할 수도 있다.
다른 예들에 있어서, 포인트 클라우드는 일루미네이터 (702) 를 사용하지 않고 생성될 수도 있다. 예를 들어, 일부 예들에 있어서, 범위 발견 시스템 (700) 의 센서 (704) 는 2개 이상의 광학 카메라들을 포함할 수도 있다. 그러한 예들에 있어서, 범위 발견 시스템 (700) 은 오브젝트 (708) 를 포함하는 환경의 스테레오 이미지들을 캡처하기 위해 광학 카메라들을 사용할 수도 있다. 범위 발견 시스템 (700) 은 스테레오 이미지들에서의 위치들 사이의 디스패리티들을 계산할 수도 있는 포인트 클라우드 생성기 (716) 를 포함할 수도 있다. 그 다음, 범위 발견 시스템 (700) 은 스테레오 이미지들에서 나타낸 위치들까지의 거리들을 결정하기 위해 디스패리티들을 사용할 수도 있다. 이들 거리들로부터, 포인트 클라우드 생성기 (716) 는 포인트 클라우드를 생성할 수도 있다.
센서들 (704) 은 또한, 색상 및 반사율 정보와 같은 오브젝트 (708) 의 다른 속성들을 검출할 수도 있다. 도 7 의 예에서, 포인트 클라우드 생성기(716)는 센서(704)에 의해 생성된 신호(714)에 기초하여 포인트 클라우드를 생성할 수 있다. 범위-찾기 시스템(700) 및/또는 포인트 클라우드 생성기(716)는 데이터 소스(104)(도 1)의 일부를 형성할 수 있다. 그러므로, 범위 측정 시스템(700)에 의해 생성된 포인트 클라우드는 본 개시의 기법들 중 임의의 것에 따라 인코딩 및/또는 디코딩될 수도 있다.
도 8 은 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 차량 기반 시나리오를 도시한 개념 다이어그램이다. 도 8 의 예에서, 차량(800)은 범위 발견 시스템(802)을 포함한다. 범위 발견 시스템(802)은 도 8과 관련하여 논의된 방식으로 구현될 수 있다. 도 8 의 예에 도시되지는 않았지만, 차량 (800) 은 또한 데이터 소스, 이를 테면 데이터 소스 (104) (도 1), 및 G-PCC 인코더, 이를 테면 G-PCC 인코더 (200) (도 1) 를 포함할 수도 있다. 도 8 의 예에서, 범위 발견 시스템(802)는 보행자(806) 또는 도로의 다른 물체를 반사하는 레이저 빔(804)을 방출한다. 차량 (800) 의 데이터 소스는 범위 발견 시스템 (802) 에 의해 생성된 신호들에 기초하여 포인트 클라우드를 생성할 수도 있다. 차량(800)의 G-PCC 인코더는 포인트 클라우드를 인코딩하여 지오메트리 비트스트림 (도 2) 및 속성 비트스트림 (도 2) 과 같은 비트스트림(808)을 생성할 수 있다. 비트스트림들 (808) 은 G-PCC 인코더에 의해 획득된 인코딩되지 않은 포인트 클라우드보다 더 적은 다수의 비트들을 포함할 수도 있다.
차량(800)의 출력 인터페이스(예를 들어, 출력 인터페이스(108)(도 1)) 는 비트스트림(808)을 하나 이상의 다른 장치로 전송할 수 있다. 비트스트림들 (808) 은 G-PCC 인코더에 의해 획득된 인코딩되지 않은 포인트 클라우드보다 더 적은 다수의 비트들을 포함할 수도 있다. 따라서, 차량 (800) 은 인코딩되지 않은 포인트 클라우드 데이터보다 더 빠르게 비트스트림들 (808) 을 다른 디바이스들로 송신 가능할 수도 있다. 부가적으로, 비트스트림들 (808) 은 더 적은 데이터 저장 용량을 요구할 수도 있다.
도 8 의 예에서, 차량(800)은 비트스트림(808)을 다른 차량(810)으로 전송할 수 있다. 차량(810)은 G-PCC 디코더(300)(도 1)와 같은 G-PCC 디코더를 포함할 수 있다. 차량 (810) 의 G-PCC 디코더는 포인트 클라우드를 재구성하기 위해 비트스트림들 (808) 을 디코딩할 수도 있다. 차량 (810) 은 다양한 목적들을 위해 재구성된 포인트 클라우드를 사용할 수도 있다. 예를 들어, 차량 (810) 은 재구성된 포인트 클라우드에 기초하여, 보행자들 (806) 이 차량 (800) 의 앞에 도로에 있음을 결정하고, 따라서, 예컨대, 차량 (810) 의 운전자가 보행자들 (806) 이 도로에 있음을 인식하기 전이라도, 감속을 시작할 수도 있다. 따라서, 일부 예들에 있어서, 차량 (810) 은 재구성된 포인트 클라우드에 기초하여 자율 내비게이션 동작을 수행할 수도 있다.
추가적으로 또는 대안적으로, 차량(800)은 비트스트림(808)을 서버 시스템(812)으로 전송할 수 있다. 서버 시스템 (812) 은 다양한 목적들을 위해 비트스트림들 (808) 을 사용할 수도 있다. 예를 들어, 서버 시스템 (812) 은 포인트 클라우드들의 후속 재구성을 위해 비트스트림들 (808) 을 저장할 수도 있다. 이 예에 있어서, 서버 시스템 (812) 은 자율 주행 시스템을 트레이닝하기 위해 다른 데이터 (예컨대, 차량 (800) 에 의해 생성된 차량 원격측정 데이터) 와 함께 포인트 클라우드들을 사용할 수도 있다. 다른 예에 있어서, 서버 시스템 (812) 은 (예컨대, 차량 (800) 이 보행자들 (806) 과 충돌하는 경우) 포렌식 충돌 조사들을 위한 후속 재구성을 위해 비트스트림들 (808) 을 저장할 수도 있다.
도 9 는 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 확장 현실 시스템을 도시한 개념 다이어그램이다. 확장 현실(XR)은 증강 현실(AR), 혼합 현실(MR) 및 가상 현실(VR)을 포함하는 다양한 기술을 포괄하는 데 사용되는 용어이다. 도 9 의 예에서, 사용자(900)는 제1 위치(902)에 위치된다. 사용자 (900) 는 XR 헤드셋 (904) 을 착용한다. XR 헤드셋 (904) 에 대한 대안으로서, 사용자 (900) 는 모바일 디바이스 (예컨대, 모바일 폰, 태블릿 컴퓨터 등) 를 사용할 수도 있다. XR 헤드셋(904)은, 902 위치에서의 오브젝트들(906)에 대한 포인트들의 포지션들을 검출하는 범위 측정 시스템과 같은 깊이 검출 센서를 포함한다. XR 헤드셋(904)의 데이터 소스는, 902 위치에서의 오브젝트들(906)의 포인트 클라우드 표현을 생성하기 위해 깊이 검출 센서에 의해 생성된 신호들을 사용할 수도 있다. XR 헤드셋(904)은 비트스트림(908)을 생성하기 위해 포인트 클라우드를 인코딩하도록 구성되는 G-PCC 인코더(예를 들어, 도 1 의 G-PCC 인코더(200))를 포함할 수 있다.
XR 헤드셋(904)은 제2 위치(914)에서 사용자(912)에 의해 착용된 XR 헤드셋(910)으로 (예를 들어, 인터넷과 같은 네트워크를 통해) 비트스트림들(908)을 송신할 수도 있다. XR 헤드셋(910)은 포인트 클라우드를 재구성하기 위해 비트스트림들(908)을 디코딩할 수도 있다. XR 헤드셋(910)은 902 위치에서의 오브젝트들(906)을 표현하는 XR 시각화(예를 들어, AR, MR, VR 시각화)를 생성하기 위해 포인트 클라우드를 사용할 수도 있다. 따라서, XR 헤드셋(910)이 VR 시각화를 생성하는 때와 같은 일부 예들에서, 사용자(912)는 902 위치의 3D 몰입 경험(3D immersive experience)을 가질 수도 있다. 일부 예들에서, XR 헤드셋(910)은 재구성된 포인트 클라우드에 기초하여 가상 오브젝트의 포지션을 결정할 수도 있다. 예를 들어, XR 헤드셋(910)은 재구성된 포인트 클라우드에 기초하여 환경(예를 들어, 위치(902))이 평평한 표면을 포함한다고 결정하고, 그 다음 가상 객체(예를 들어, 만화 캐릭터)가 그 평평한 표면 상에 위치되어야 한다고 결정할 수 있다. XR 헤드셋(910)은 가상 객체가 상기 결정된 포지션에 있는 XR 시각화를 생성할 수도 있다. 예를 들어, XR 헤드셋(910)은 평평한 표면 상에 앉아 있는 만화 캐릭터를 보여줄 수도 있다.
도 10 은 본 개시의 하나 이상의 기법들이 사용될 수도 있는 예시적인 모바일 디바이스 시스템을 도시한 개념 다이어그램이다. 도 10 의 예에서, 모바일 폰 또는 태블릿 컴퓨터와 같은 모바일 디바이스(1000)는 모바일 디바이스(1000)의 환경에서 물체(1002) 상의 포인트의 위치를 검출하는, LIDAR 시스템과 같은 범위 발견 시스템을 포함한다. 모바일 디바이스(1000)의 데이터 소스는 깊이 검출 센서에 의해 생성된 신호를 사용하여 물체들(1002)의 포인트 클라우드 표현을 생성할 수 있다. 모바일 디바이스(1000)은 비트스트림(1004)을 생성하기 위해 포인트 클라우드를 인코딩하도록 구성되는 G-PCC 인코더(예를 들어, 도 1 의 G-PCC 인코더(200))를 포함할 수 있다. 도 10 의 예에서, 모바일 디바이스 (1000) 는 서버 시스템 또는 다른 모바일 디바이스와 같은 원격 디바이스 (1006) 에 비트스트림들을 송신할 수도 있다. 원격 디바이스 (1006) 는 비트스트림들 (1004) 을 디코딩하여 포인트 클라우드를 재구성할 수도 있다. 원격 디바이스 (1006) 는 다양한 목적들을 위해 포인트 클라우드를 사용할 수도 있다. 예를 들어, 원격 디바이스 (1006) 는 모바일 디바이스 (1000) 의 환경의 맵을 생성하기 위해 포인트 클라우드를 사용할 수도 있다. 예를 들어, 원격 디바이스 (1006) 는 재구성된 포인트 클라우드에 기초하여 건물 내부의 맵을 생성할 수도 있다. 다른 예에 있어서, 원격 디바이스 (1006) 는 포인트 클라우드에 기초하여 이미지 (예컨대, 컴퓨터 그래픽스) 를 생성할 수도 있다. 예를 들어, 원격 디바이스 (1006) 는 포인트 클라우드의 포인트들을 다각형들의 정점들로서 사용하고, 포인트들의 색상 속성들을, 다각형들을 쉐이딩하기 위한 기반으로서 사용할 수도 있다. 일부 예들에서, 원격 디바이스(1006)는 재구성된 포인트 클라우드를 얼굴 인식 또는 다른 보안 애플리케이션들을 위해 사용할 수도 있다.
본 개시의 다음의 양태들에서의 예들은 개별적으로 또는 임의의 조합으로 사용될 수도 있다. 다음은 개별적으로 또는 조합하여 이행될 수 있는 일부 예시적인 조항들이다.
조항 1. 포인트 클라우드를 코딩하는 방법으로서, 그 방법은 포인트 클라우드에서 포인트의 하나 이상의 색상 컴포넌트에 대한 잔차 값이 0과 동일하다고 결정하는 단계, 및 포인트의 색상 컴포넌트들 중 하나 이상에 대한 잔차 값이 0과 같다는 결정을 기반으로 비독립적 방식으로 잔차 값을 코딩하는 단계를 포함한다.
조항 2 조항 1의 방법에서, 비독립적 방식으로 잔차 값을 코딩하는 단계는 0인 2개의 다른 색상 컴포넌트에 대한 잔차 값에 기초하여 제1 방식으로 색상 컴포넌트 중 하나에 대한 잔차 값을 코딩하는 단계를 포함하고, 여기서 제1 방식은 0이 아닌 두 개의 다른 컴포넌트에 대한 잔차 값에 기초하여 색상 컴포넌트 중 하나에 대한 잔차 값을 코딩하는 제2 방식과 다르다.
조항 3. 조항 1 및 2 중 어느 하나의 방법에서, 포인트의 하나 이상의 색상 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 2개의 색상 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 색상 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 제3 색상 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 4. 조항 3의 방법에서, 오프셋에 기초하여 제3 색상 컴포넌트에 대한 잔차 값을 코딩하는 단계는 인코딩을 위해 제3 색상 컴포넌트에 대한 잔차 값에서 오프셋을 빼거나 디코딩을 위해 제3 색상 컴포넌트에 대한 잔차 값에 오프셋을 더함으로써 제3 색상 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 5. 조항 1-4 중 어느 하나의 방법에서, 포인트의 하나 이상의 색상 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 크로마 색상 컴포넌트들에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 색상 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 포인트의 루마 색상 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 6. 조항 1-5 중 어느 것의 방법에 있어서, 상기 포인트 클라우드를 생성하는 단계를 더 포함하는, 방법.
조항 7. 조항 1 내지 6 중 어느 하나의 방법에서, 잔차 값을 코딩하는 단계는 잔차 값의 루마 색상 컴포넌트를 코딩하기 전에 크로마 색상 컴포넌트를 코딩하는 단계를 포함한다.
조항 8. 조항 1 내지 7 중 어느 하나의 방법에서, 코딩하는 단계는 잔차 값을 디코딩하는 단계를 포함하고, 방법은 잔차 값에 기초하여 포인트에 대한 하나 이상의 색상 컴포넌트를 재구성하는 단계를 더 포함한다.
조항 9. 조항 1 내지 7 중 어느 하나의 방법에서, 코딩하는 단계는 잔차 값을 인코딩하는 단계를 포함하고, 방법은 인코딩된 잔차 값을 나타내는 정보를 시그널링하는 단계를 더 포함한다.
조항 10. 포인트 클라우드를 코딩하기 위한 디바이스로서, 그 디바이스는 포인트 클라우드를 표현하는 데이터를 저장하도록 구성된 메모리, 및 메모리에 커플링되고 조항 1 내지 조항 9 중 어느 하나의 방법을 수행하도록 구성되는 프로세싱 회로를 포함한다.
조항 11. 조항 10 에 있어서,
상기 디바이스는 디코더를 포함한다.
조항 12. 조항 10 에 있어서, 그 디바이스는 인코더를 포함한다.
조항 13. 조항 10 내지 조항 12 중 어느 것의 디바이스에 있어서, 포인트 클라우드를 생성하기 위한 디바이스를 더 포함한다.
조항 14. 조항 10 내지 조항 13 중 어느 것의 디바이스에 있어서, 포인트 클라우드에 기초하여 이미지를 제공하기 위한 디스플레이를 더 포함한다.
조항 15. 명령들이 저장된 컴퓨터 판독가능 저장 매체로서, 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금 조항들 1-9 의 어느 방법을 수행하게 한다.
조항 16. 포인트 클라우드를 코딩하기 위한 디바이스로서, 그 디바이스는 조항들 1-9 의 어느 것의 방법을 수행하기 위한 수단을 포함한다.
조항 17. 포인트 클라우드를 코딩하는 방법으로서, 그 방법은 포인트 클라우드에서 포인트의 속성에 대한 하나 이상의 컴포넌트에 대한 잔차 값이 0과 동일하다고 결정하는 단계, 및 포인트의 속성에 대한 컴포넌트들 중 하나 이상에 대한 잔차 값이 0 과 같다는 결정을 기반으로 비독립적 방식으로 잔차 값을 코딩하는 단계를 포함한다.
조항 18. 조항 17의 방법에 있어서, 비독립적 방식으로 잔차 값을 코딩하는 단계는 0인 2개의 다른 컴포넌트에 대한 잔차 값에 기초하여 제1 방식으로 컴포넌트들 중 하나에 대한 잔차 값을 코딩하는 단계를 포함하고, 여기서 제1 방식은 0이 아닌 두 개의 다른 컴포넌트에 대한 잔차 값에 기초하여 컴포넌트들 중 하나에 대한 잔차 값을 코딩하는 제2 방식과 다르다.
조항 19. 조항 17 및 18 중 어느 하나의 방법에서, 포인트의 하나 이상의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 2개의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 20. 조항 19의 방법에서, 오프셋에 기초하여 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계는 인코딩을 위해 제3 컴포넌트에 대한 잔차 값에서 오프셋을 빼거나 디코딩을 위해 제3 컴포넌트에 대한 잔차 값에 오프셋을 더함으로써 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 21. 조항 17-20 중 어느 하나의 방법에서, 포인트의 하나 이상의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 크로마 컴포넌트들에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 포인트의 루마 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 22. 조항 17-21 중 어느 것의 방법에 있어서, 상기 포인트 클라우드를 생성하는 단계를 더 포함하는, 방법.
조항 23. 조항 17 내지 22 중 어느 하나의 방법에서, 잔차 값을 코딩하는 단계는 잔차 값의 루마 컴포넌트를 코딩하기 전에 크로마 컴포넌트를 코딩하는 단계를 포함한다.
조항 24. 조항 17 내지 23 중 어느 하나의 방법에서, 코딩하는 단계는 잔차 값을 디코딩하는 단계를 포함하고, 방법은 잔차 값에 기초하여 포인트에 대한 하나 이상의 컴포넌트를 재구성하는 단계를 더 포함한다.
조항 25. 조항 17 내지 23 중 어느 하나의 방법에서, 코딩하는 단계는 잔차 값을 인코딩하는 단계를 포함하고, 방법은 인코딩된 잔차 값을 나타내는 정보를 시그널링하는 단계를 더 포함한다.
조항 26. 포인트 클라우드를 코딩하기 위한 디바이스로서, 그 디바이스는 포인트 클라우드를 표현하는 데이터를 저장하도록 구성된 메모리, 및 메모리에 커플링되고 조항 17 내지 조항 25 중 어느 하나의 방법을 수행하도록 구성되는 프로세싱 회로를 포함한다.
조항 27. 조항 26 에 있어서,
상기 디바이스는 디코더를 포함한다.
조항 28. 조항 26 에 있어서, 그 디바이스는 인코더를 포함한다.
조항 29. 조항 26 내지 조항 28 중 어느 것의 디바이스에 있어서, 포인트 클라우드를 생성하기 위한 디바이스를 더 포함한다.
조항 30. 조항 26 내지 조항 28 중 어느 것의 디바이스에 있어서, 포인트 클라우드에 기초하여 이미지를 제공하기 위한 디스플레이를 더 포함한다.
조항 31. 명령들을 저장하는 컴퓨터 판독가능 저장 매체로서, 명령들은 실행될 때, 하나 이상의 프로세서로 하여금 조항들 17-25 중 임의의 것의 방법을 수행하게 한다.
조항 32. 포인트 클라우드를 코딩하기 위한 디바이스로서, 그 디바이스는 조항들 17-25 의 어느 것의 방법을 수행하기 위한 수단을 포함한다.
조항 33. 포인트 클라우드를 코딩하는 방법으로서, 그 방법은 포인트 클라우드에서 포인트의 속성에 대한 하나 이상의 컴포넌트에 대한 잔차 값이 0과 동일하다고 결정하는 단계, 및 포인트의 속성에 대한 컴포넌트들 중 하나 이상에 대한 잔차 값이 0 과 같다는 결정을 기반으로 비독립적 방식으로 잔차 값을 코딩하는 단계를 포함한다.
조항 34. 조항 33의 방법에 있어서, 비독립적 방식으로 잔차 값을 코딩하는 단계는 0인 2개의 다른 컴포넌트에 대한 잔차 값에 기초하여 제1 방식으로 컴포넌트들 중 하나에 대한 잔차 값을 코딩하는 단계를 포함하고, 여기서 제1 방식은 0이 아닌 두 개의 다른 컴포넌트에 대한 잔차 값에 기초하여 컴포넌트들 중 하나에 대한 잔차 값을 코딩하는 제2 방식과 다르다.
조항 35. 조항 33 에 있어서, 포인트의 하나 이상의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 2개의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 36. 조항 35의 방법에서, 오프셋에 기초하여 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계는 인코딩을 위해 제3 컴포넌트에 대한 잔차 값에서 오프셋을 빼거나 디코딩을 위해 제3 컴포넌트에 대한 잔차 값에 오프셋을 더함으로써 제3 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 37. 조항 33 의 방법에 있어서, 포인트의 하나 이상의 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계는 포인트의 크로마 컴포넌트들에 대한 잔차 값이 0과 같다고 결정하는 단계를 포함하고, 포인트의 컴포넌트 중 하나 이상에 대한 잔차 값이 0과 같다는 결정에 기초하여 비독립적 방식으로 잔차 값을 코딩하는 단계는 오프셋에 기초하여 포인트의 루마 컴포넌트에 대한 잔차 값을 코딩하는 단계를 포함한다.
조항 38. 제 33 항에 있어서,
포인트 클라우드를 생성하는 단계를 더 포함한다.
조항 39. 조항 33 에 있어서, 잔차 값을 코딩하는 단계는 잔차 값의 루마 컴포넌트를 코딩하기 전에 크로마 컴포넌트를 코딩하는 단계를 포함한다.
조항 40. 조항 33 에 있어서, 코딩하는 단계는 잔차 값을 디코딩하는 단계를 포함하고, 방법은 잔차 값에 기초하여 포인트에 대한 하나 이상의 컴포넌트를 재구성하는 단계를 더 포함한다.
조항 41. 조항 33 에 있어서, 코딩하는 단계는 잔차 값을 인코딩하는 단계를 포함하고, 방법은 인코딩된 잔차 값을 나타내는 정보를 시그널링하는 단계를 더 포함한다.
조항 42. 포인트 클라우드를 코딩하기 위한 디바이스로서, 그 디바이스는 포인트 클라우드를 표현하는 데이터를 저장하도록 구성된 메모리, 및 메모리에 커플링되고 조항 33 내지 조항 41 중 어느 하나의 방법을 수행하도록 구성되는 프로세싱 회로를 포함한다.
조항 43. 조항 42 에 있어서,
상기 디바이스는 디코더를 포함한다.
조항 44. 조항 42 에 있어서, 그 디바이스는 인코더를 포함한다.
조항 45. 조항 42 에 있어서, 포인트 클라우드를 생성하는 디바이스를 더 포함한다.
조항 46. 조항 42 에 있어서,
포인트 클라우드에 기초하여 이미지를 제시하기 위한 디스플레이를 더 포함한다.
조항 1A: 포인트 클라우드를 인코딩하는 방법은 포인트 클라우드 내 포인트의 속성 중 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하는 단계; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하는 단계; 한 컴포넌트의 값을 인코딩하는 단계; 및 인코딩된 값을 비트스트림으로 시그널링하는 단계를 포함한다.
조항 2A: 조항 1A 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계; 및 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링하는 단계를 더 포함한다.
조항 3A: 조항 2A의 방법에서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계는 한 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0 의 값을 인코딩하는 단계를 포함한다.
조항 4A: 조항 3A의 방법에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계는 프로세싱 순서와 다른 인코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 인코딩하는 단계를 포함하고, 여기서 인코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 인코딩된다.
조항 5A: 조항 3A 및 4A 중 어느 하나에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 6A: 조항 1A 내지 5A 중 어느 하나의 방법에서, 포인트는 제1 포인트를 포함하고, 방법은 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하는 단계; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 인코딩하는 단계를 더 포함한다.
조항 7A: 조항 1A 내지 6A 중 어느 하나의 방법에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 8A: 조항 1A 내지 7A 중 어느 하나의 방법에서, 오프셋은 1과 같다.
조항 9A: 포인트 클라우드를 디코딩하는 방법은 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 단계로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하는 단계; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하는 단계; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하는 단계를 포함한다.
조항 10A: 조항 9A의 방법에 있어서, 속성의 한 컴포넌트를 제외한 컴포넌트에 대해 0 의 값을 디코딩하는 단계를 더 포함한다.
조항 11A: 조항 10A 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계는 한 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계를 포함한다.
조항 12A: 조항 11A의 방법에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계는 프로세싱 순서와 다른 디코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 디코딩하는 단계를 포함하고, 여기서 디코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 디코딩된다.
조항 13A: 조항 11A 및 12A 중 어느 하나에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 14A: 조항 9A 내지 13A 중 어느 하나의 방법에서, 포인트는 제1 포인트를 포함하고, 방법은 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하는 단계; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 디코딩하는 단계를 더 포함한다.
조항 15A: 조항 9A 내지 14A 중 어느 하나의 방법에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 16A: 조항 9A 내지 15A 중 어느 하나의 방법에서, 오프셋은 1과 같다.
조항 17A: 포인트 클라우드를 인코딩하는 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 포인트 클라우드 내 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하고; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하고; 한 컴포넌트의 값을 인코딩하고; 및 인코딩된 값을 비트스트림으로 시그널링하도록 구성된 프로세싱 회로를 포함한다.
조항 18A: 조항 17A 에 있어서, 프로세싱 회로는 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하고; 및 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링하도록 구성된다.
조항 19A: 조항 18A 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, 프로세싱 회로는 한 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하도록 구성된다.
조항 20A: 조항 19A의 디바이스에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, 프로세싱 회로는 프로세싱 순서와 다른 인코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 인코딩하도록 구성되고, 여기서 인코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 인코딩된다.
조항 21A: 조항 19A 및 20A 중 어느 하나에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 22A: 조항 17A 내지 21A 중 어느 하나의 디바이스에서, 포인트는 제1 포인트를 포함하고, 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하고; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 인코딩하도록 구성된다.
조항 23A: 조항 17A 내지 22A 중 어느 하나의 디바이스에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 24A: 조항 17A 내지 23A 중 어느 하나의 디바이스에서, 오프셋은 1과 같다.
조항 25A: 조항 17A 내지 조항 24A 중 어느 하나의 디바이스에서, 프로세싱 회로는 포인트 클라우드를 생성하도록 구성된다.
조항 26A: 조항 25A 에 있어서,
프로세싱 회로는 상기 포인트 클라우드를 생성하는 것의 일부로서, LIDAR 장치로부터의 신호들에 기초하여 상기 포인트 클라우드를 생성하도록 구성된다.
조항 27A: 조항 17A 내지 26A 중 어느 하나의 디바이스에서,
상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나이다.
조항 28A: 조항 17A 내지 27A 중 어느 하나의 디바이스에서, 디바이스는 차량이다.
조항 29A: 조항 17A 내지 28A 중 어느 하나의 디바이스에서, 디바이스는 확장 현실 디바이스이다.
조항 30A: 조항 17A 내지 조항 29A 중 어느 하나의 디바이스에서, 디바이스는 포인트 클라우드 데이터를 송신하도록 구성된 인터페이스를 포함한다.
조항 31A: 포인트 클라우드를 디코딩하는 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 프로세싱 회로를 포함하고, 프로세싱 회로는 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하며; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하도록 구성된다.
조항 32A: 조항 31A 의 디바이스에 있어서, 프로세싱 회로는 속성의 한 컴포넌트를 제외한 컴포넌트에 대해 0 의 값을 디코딩하도록 구성된다.
조항 33A: 조항 32A 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, 프로세싱 회로는 한 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하도록 구성된다.
조항 34A: 조항 33A의 디바이스에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, 프로세싱 회로는 프로세싱 순서와 다른 디코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 디코딩하도록 구성되고, 여기서 디코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 디코딩된다.
조항 35A: 조항 33A 및 34A 중 어느 하나에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 36A: 조항 31A 내지 35A 중 어느 하나의 디바이스에서, 포인트는 제1 포인트를 포함하고, 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하고; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 디코딩하도록 구성된다.
조항 37A: 조항 31A 내지 36A 중 어느 하나의 디바이스에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 38A: 조항 31A 내지 37A 중 어느 하나의 디바이스에서, 오프셋은 1과 같다.
조항 39A: 조항 31A 내지 조항 38A 중 어느 하나의 디바이스에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 건물의 내부의 맵을 생성하도록 구성된다.
조항 40A: 조항 31A 내지 조항 39A 중 어느 하나의 디바이스에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 자율 내비게이션 동작을 수행하도록 구성된다.
조항 41A: 조항 31A 내지 조항 40A 중 어느 하나의 디바이스에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 컴퓨터 그래픽을 생성하도록 구성된다.
조항 42A: 조항 41A 에 있어서, 프로세싱 회로는 재구성된 컴포넌트에 기초하여 가상 물체의 위치를 결정하고; 가상 물체가 결정된 위치에 있는 확장 현실(XR) 시각화를 생성하도록 구성된다.
조항 43A: 조항 31A 내지 42A 중 어느 하나의 디바이스에서,
상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나이다.
조항 44A: 조항 31A 내지 43A 중 어느 하나의 디바이스에서, 디바이스는 차량이다.
조항 45A: 조항 31A 내지 44A 중 어느 하나의 디바이스에서, 디바이스는 확장 현실 디바이스이다.
조항 46A: 조항 31A 내지 조항 45A 중 어느 것의 디바이스에 있어서, 포인트 클라우드에 기초하여 이미지를 제공하기 위한 디스플레이를 더 포함한다.
조항 47A: 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 명령들은 실행될 때, 포인트 클라우드를 인코딩하는 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드 내의 포인트의 속성 중 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하게 하고; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하게 하며; 한 컴포넌트의 값을 인코딩하게 하고; 및 인코딩된 값을 비트스트림으로 시그널링하게 한다.
조항 48A: 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 명령들은 실행될 때, 포인트 클라우드를 디코딩하는 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하게 하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하게 하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하게 하며; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하게 하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하게 한다.
예에 의존하여, 본 명세서에서 설명된 기법들의 임의의 특정 행위들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 부가되거나 병합되거나 또는 제거될 수도 있음 (예를 들어, 설명된 모든 행위들 또는 이벤트들이 그 기법들의 실시를 위해 필수적인 것은 아님) 이 인식되어야 한다. 더욱이, 특정 예들에 있어서, 행위들 또는 이벤트들은 순차적인 것보다는, 예를 들어, 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다중의 프로세서들을 통해 동시에 수행될 수도 있다.
조항 1B: 포인트 클라우드를 인코딩하는 방법은 포인트 클라우드 내 포인트의 속성 중 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하는 단계; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하는 단계; 한 컴포넌트의 값을 인코딩하는 단계; 및 인코딩된 값을 비트스트림으로 시그널링하는 단계를 포함한다.
조항 2B: 조항 1B 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계; 및 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링하는 단계를 더 포함한다.
조항 3B: 조항 2B 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계는 한 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계를 포함한다.
조항 4B: 조항 3B의 방법에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하는 단계는 프로세싱 순서와 다른 인코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 인코딩하는 단계를 포함하고, 여기서 인코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 인코딩된다.
조항 5B: 조항 3B 에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 6B: 조항 1B 에 있어서, 포인트는 제1 포인트를 포함하고, 방법은 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하는 단계; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 인코딩하는 단계를 더 포함한다.
조항 7B: 조항 1B에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 8B: 조항 1B에서, 오프셋은 1과 같다.
조항 9B: 포인트 클라우드를 디코딩하는 방법은 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 단계로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하는 단계; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하는 단계; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하는 단계; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하는 단계를 포함한다.
조항 10B: 조항 9B의 방법에 있어서, 속성의 한 컴포넌트를 제외한 컴포넌트에 대해 0 의 값을 디코딩하는 단계를 더 포함한다.
조항 11B: 조항 10B 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계는 한 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계를 포함한다.
조항 12B: 조항 11B의 방법에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하는 단계는 프로세싱 순서와 다른 디코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 디코딩하는 단계를 포함하고, 여기서 디코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 디코딩된다.
조항 13B: 조항 11B 에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 14B: 조항 9B 에 있어서, 포인트는 제1 포인트를 포함하고, 방법은 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하는 단계; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 디코딩하는 단계를 더 포함한다.
조항 15B: 조항 9B에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 16B: 조항 9B에서, 오프셋은 1과 같다.
조항 17B: 포인트 클라우드를 인코딩하는 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 포인트 클라우드 내 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하고; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하고; 한 컴포넌트의 값을 인코딩하고; 및 인코딩된 값을 비트스트림으로 시그널링하도록 구성된 프로세싱 회로를 포함한다.
조항 18B: 조항 17B 에 있어서, 프로세싱 회로는 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하고; 및 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 인코딩된 0 의 값을 시그널링하도록 구성된다.
조항 19B: 조항 18B 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, 프로세싱 회로는 한 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하도록 구성된다.
조항 20B: 조항 19B의 디바이스에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 인코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 인코딩하기 위해, 프로세싱 회로는 프로세싱 순서와 다른 인코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 인코딩하도록 구성되고, 여기서 인코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 인코딩된다.
조항 21B: 조항 19B 에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 22B: 조항 17B에서, 포인트는 제1 포인트를 포함하고, 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하고; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 인코딩하도록 구성된다.
조항 23B: 조항 17B에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 24B: 조항 17B에서, 오프셋은 1과 같다.
조항 25B: 조항 17B에서, 프로세싱 회로는 포인트 클라우드를 생성하도록 구성된다.
조항 26B: 조항 25B 에 있어서,
프로세싱 회로는 상기 포인트 클라우드를 생성하는 것의 일부로서, LIDAR 장치로부터의 신호들에 기초하여 상기 포인트 클라우드를 생성하도록 구성된다.
조항 27B: 조항 17B 에 있어서,
상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나이다.
조항 28B: 조항 17B 에 있어서,
상기 디바이스는 차량이다.
조항 29B: 조항 17B 에 있어서,
상기 디바이스는 확장 현실 디바이스이다.
조항 30B: 조항 17B 에 있어서,
상기 디바이스는 상기 포인트 클라우드 데이터를 송신하도록 구성된 인터페이스를 포함한다.
조항 31B: 포인트 클라우드를 디코딩하는 디바이스는 포인트 클라우드를 저장하도록 구성된 메모리; 및 프로세싱 회로를 포함하고, 프로세싱 회로는 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하며; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하도록 구성된다.
조항 32B: 조항 31B 의 디바이스에 있어서, 프로세싱 회로는 속성의 한 컴포넌트를 제외한 컴포넌트에 대해 0 의 값을 디코딩하도록 구성된다.
조항 33B: 조항 32B 에 있어서, 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, 프로세싱 회로는 한 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하도록 구성된다.
조항 34B: 조항 33B의 디바이스에서, 프로세싱 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 전에 프로세싱되고, 하나의 컴포넌트의 값을 디코딩하기 전에 속성의 하나의 컴포넌트를 제외한 컴포넌트에 대해 0의 값을 디코딩하기 위해, 프로세싱 회로는 프로세싱 순서와 다른 디코딩 순서로, 하나의 컴포넌트를 제외한 컴포넌트들에 대해 0의 값을 디코딩하도록 구성되고, 여기서 디코딩 순서에서, 하나의 컴포넌트는 하나의 컴포넌트를 제외한 컴포넌트들 후에 디코딩된다.
조항 35B: 조항 33B 에 있어서, 상기 속성은 색상 속성이고, 상기 속성의 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 컴포넌트들은 크로마 컴포넌트들을 포함한다.
조항 36B: 조항 31B에서, 포인트는 제1 포인트를 포함하고, 프로세싱 회로는 포인트 클라우드 내의 제2 포인트의 속성의 컴포넌트들 중 적어도 2개의 컴포넌트들에 대한 잔차 값이 0 이 아니라고 결정하고; 및 제2 포인트의 속성의 컴포넌트에 대한 잔차 값을 디코딩하도록 구성된다.
조항 37B: 조항 31B에서, 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함한다.
조항 38B: 조항 31B에서, 오프셋은 1과 같다.
조항 39B: 조항 31B에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 건물의 내부의 맵을 생성하도록 구성된다.
조항 40B: 조항 31B에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 자율 내비게이션 동작을 수행하도록 구성된다.
조항 41B: 조항 31B에서, 프로세싱 회로는 재구성된 컴포넌트들에 기초하여 컴퓨터 그래픽을 생성하도록 구성된다.
조항 42B: 조항 41B 에 있어서, 프로세싱 회로는 재구성된 컴포넌트에 기초하여 가상 물체의 위치를 결정하고; 가상 물체가 결정된 위치에 있는 확장 현실(XR) 시각화를 생성하도록 구성된다.
조항 43B: 조항 31B 에 있어서,
상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나이다.
조항 44B: 조항 31B 에 있어서,
상기 디바이스는 차량이다.
조항 45B: 조항 31B 에 있어서,
상기 디바이스는 확장 현실 디바이스이다.
조항 46B: 조항 31B 에 있어서,
포인트 클라우드에 기초하여 이미지를 제시하기 위한 디스플레이를 더 포함한다.
조항 47B: 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 명령들은 실행될 때, 포인트 클라우드를 인코딩하는 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드 내의 포인트의 속성 중 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라고 결정하게 하고; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 같은 한 컴포넌트에 대한 값을 결정하게 하며; 한 컴포넌트의 값을 인코딩하게 하고; 및 인코딩된 값을 비트스트림으로 시그널링하게 한다.
조항 48B: 명령들을 저장한 컴퓨터 판독가능 저장 매체로서, 명령들은 실행될 때, 포인트 클라우드를 디코딩하는 디바이스의 하나 이상의 프로세서들로 하여금, 포인트 클라우드에서 포인트의 속성의 컴포넌트에 대한 값을 디코딩하게 하는 것으로서, 그 값은 컴포넌트에 대한 잔차 값을 나타내는, 상기 컴포넌트에 대한 값을 디코딩하게 하고; 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차 값이 0과 같다고 결정하게 하며; 속성의 한 컴포넌트를 제외한 모든 컴포넌트에 대한 잔차값이 0 이라는 결정에 기초하여, 속성의 한 컴포넌트에 대한 디코딩된 값에 오프셋을 더하여 한 컴포넌트에 대한 잔차값의 크기를 결정하게 하고; 및 컴포넌트에 대한 잔차 값에 기초하여 포인트의 속성의 컴포넌트를 재구성하게 한다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수도 있다.  소프트웨어로 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상의 하나 이상의 명령 또는 코드로서 저장되거나 송신될 수도 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예를 들면, 통신 프로토콜에 따라, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수도 있다. 이런 방식으로, 컴퓨터 판독가능 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다.  데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다.  컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.  또한, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 꼬임쌍선, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 소프트웨어가 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임쌍선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 하지만, 컴퓨터 판독가능 저장 매체 및 데이터 저장 매체는 접속, 캐리어 파, 신호 또는 다른 일시적 매체를 포함하는 것이 아니라, 대신에 비일시적, 유형의 저장 매체에 관련된다는 것이 이해되야 한다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 또한, 상기의 조합들은 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서, 이를테면 하나 이상의 DSP (digital signal processor), 범용 마이크로프로세서, ASIC (application specific integrated circuit), FPGA (field programmable logic array), 또는 다른 등가 집적 또는 이산 로직 회로에 의해 실행될 수도 있다. 따라서, 본 명세서에서 사용된 바와 같이 용어들 "프로세서" 및 “프로세싱 회로부”는 전술한 구조들 중 임의의 것 또는 본 명세서 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 부가적으로, 일부 양태들에 있어서, 본 명세서에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나 또는 결합된 코덱에서 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수도 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC 들의 세트 (예를 들면, 칩 세트) 를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에서 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호동작가능한 하드웨어 유닛들의 콜렉션에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (48)

  1. 포인트 클라우드를 인코딩하는 방법으로서,
    상기 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하는 단계;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 속성의 상기 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 상기 하나의 컴포넌트에 대한 값을 결정하는 단계;
    상기 하나의 컴포넌트의 상기 값을 인코딩하는 단계; 및
    인코딩된 상기 값을 비트스트림에서 시그널링하는 단계를 포함하는, 포인트 클라우드를 인코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하는 단계; 및
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 인코딩된 상기 제로의 값을 시그널링하는 단계를 더 포함하는, 포인트 클라우드를 인코딩하는 방법.
  3. 제 2 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하는 단계는 상기 하나의 컴포넌트의 상기 값을 인코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하는 단계를 포함하는, 포인트 클라우드를 인코딩하는 방법.
  4. 제 3 항에 있어서,
    프로세싱 순서에서, 상기 하나의 컴포넌트는 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 전에 프로세싱되고,
    상기 하나의 컴포넌트의 상기 값을 인코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하는 단계는, 상기 프로세싱 순서와는 상이한 인코딩 순서에서, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하는 단계를 포함하며, 상기 인코딩 순서에서, 상기 하나의 컴포넌트는 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 후에 인코딩되는, 포인트 클라우드를 인코딩하는 방법.
  5. 제 3 항에 있어서,
    상기 속성은 색상 속성이고, 상기 속성의 상기 하나의 컴포넌트는 루마 컴포넌트이고, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들은 크로마 컴포넌트들을 포함하는, 포인트 클라우드를 인코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 포인트는 제 1 포인트를 포함하고,
    상기 방법은,
    상기 포인트 클라우드 내의 제 2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 제로와 동일하지 않다고 결정하는 단계; 및
    상기 제 2 포인트의 상기 속성의 상기 컴포넌트들에 대한 상기 잔차 값들을 인코딩하는 단계를 더 포함하는, 포인트 클라우드를 인코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도 및 온도의 조합, 또는 색상 및 표면 법선의 조합 중 적어도 하나를 포함하는, 포인트 클라우드를 인코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 오프셋은 1 과 동일한, 포인트 클라우드를 인코딩하는 방법.
  9. 포인트 클라우드를 디코딩하는 방법으로서,
    상기 포인트 클라우드 내의 포인트의 속성의 컴포넌트들에 대한 값들을 디코딩하는 단계로서, 상기 값들은 상기 컴포넌트들에 대한 잔차 값들을 나타내는, 상기 속성의 컴포넌트들에 대한 값들을 디코딩하는 단계;
    상기 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하는 단계;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하기 위해 상기 속성의 상기 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하는 단계; 및
    상기 컴포넌트들에 대한 상기 잔차 값들에 기초하여 상기 포인트의 상기 속성의 컴포넌트들을 재구성하는 단계를 포함하는, 포인트 클라우드를 디코딩하는 방법.
  10. 제 9 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하는 단계를 더 포함하는, 포인트 클라우드를 디코딩하는 방법.
  11. 제 10 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하는 단계는 상기 하나의 컴포넌트의 값을 디코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하는 단계를 포함하는, 포인트 클라우드를 디코딩하는 방법.
  12. 제 11 항에 있어서,
    프로세싱 순서에서, 상기 하나의 컴포넌트가 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 이전에 프로세싱되고,
    상기 하나의 컴포넌트의 값을 디코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하는 단계는, 상기 프로세싱 순서와 다른 디코딩 순서로, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하는 단계를 포함하고, 상기 디코딩 순서에서, 상기 하나의 컴포넌트는 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 후에 디코딩되는, 포인트 클라우드를 디코딩하는 방법.
  13. 제 11 항에 있어서,
    상기 속성은 색상 속성이고, 상기 속성의 상기 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들은 크로마 컴포넌트들을 포함하는, 포인트 클라우드를 디코딩하는 방법.
  14. 제 9 항에 있어서,
    상기 포인트는 제 1 포인트를 포함하고,
    상기 방법은,
    상기 포인트 클라우드 내의 제 2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 제로와 동일하지 않다고 결정하는 단계; 및
    상기 제 2 포인트의 상기 속성의 상기 컴포넌트들에 대한 상기 잔차 값들을 디코딩하는 단계를 더 포함하는, 포인트 클라우드를 디코딩하는 방법.
  15. 제 9 항에 있어서,
    상기 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함하는, 포인트 클라우드를 디코딩하는 방법.
  16. 제 9 항에 있어서,
    상기 오프셋은 1 과 동일한, 포인트 클라우드를 디코딩하는 방법.
  17. 포인트 클라우드를 인코딩하기 위한 디바이스로서,
    상기 포인트 클라우드를 저장하도록 구성된 메모리; 및
    프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    상기 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하고;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 속성의 상기 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 상기 하나의 컴포넌트에 대한 값을 결정하며;
    상기 하나의 컴포넌트의 상기 값을 인코딩하고;
    인코딩된 상기 값을 비트스트림에서 시그널링하도록
    구성된, 포인트 클라우드를 인코딩하기 위한 디바이스.
  18. 제 17 항에 있어서,
    상기 프로세싱 회로는,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하고,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 인코딩된 상기 제로의 값을 시그널링하도록
    구성되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  19. 제 18 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 컴포넌트에 대해 제로의 값을 인코딩하기 위해, 상기 프로세싱 회로는 상기 하나의 컴포넌트의 값을 인코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하도록 구성되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  20. 제 19 항에 있어서,
    프로세싱 순서에서, 상기 하나의 컴포넌트가 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 이전에 프로세싱되고,
    상기 하나의 컴포넌트의 값을 인코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하기 위해, 상기 프로세싱 회로는 상기 프로세싱 순서와 다른 인코딩 순서로, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 인코딩하도록 구성되고,
    인코딩 순서에서, 상기 하나의 컴포넌트는 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 후에 인코딩되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  21. 제 19 항에 있어서,
    상기 속성은 색상 속성이고, 상기 속성의 상기 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들은 크로마 컴포넌트들을 포함하는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  22. 제 17 항에 있어서,
    상기 포인트는 제 1 포인트를 포함하고,
    상기 프로세싱 회로는,
    상기 포인트 클라우드 내의 제 2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 제로와 동일하지 않다고 결정하고; 및
    상기 제 2 포인트의 상기 속성의 상기 컴포넌트들에 대한 상기 잔차 값들을 인코딩하도록 구성되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  23. 제 17 항에 있어서,
    상기 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함하는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  24. 제 17 항에 있어서,
    상기 오프셋은 1 과 동일한, 포인트 클라우드를 인코딩하기 위한 디바이스.
  25. 제 17 항에 있어서,
    상기 프로세싱 회로는 상기 포인트 클라우드를 생성하도록 구성되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  26. 제 25 항에 있어서,
    상기 프로세싱 회로는 상기 포인트 클라우드를 생성하는 것의 일부로서, LIDAR 장치로부터의 신호들에 기초하여 상기 포인트 클라우드를 생성하도록 구성되는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  27. 제 17 항에 있어서,
    상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나인, 포인트 클라우드를 인코딩하기 위한 디바이스.
  28. 제 17 항에 있어서,
    상기 디바이스는 차량인, 포인트 클라우드를 인코딩하기 위한 디바이스.
  29. 제 17 항에 있어서,
    상기 디바이스는 확장 현실 디바이스인, 포인트 클라우드를 인코딩하기 위한 디바이스.
  30. 제 17 항에 있어서,
    상기 디바이스는 포인트 클라우드 데이터를 송신하도록 구성된 인터페이스를 포함하는, 포인트 클라우드를 인코딩하기 위한 디바이스.
  31. 포인트 클라우드를 디코딩하기 위한 디바이스로서,
    상기 포인트 클라우드를 저장하도록 구성된 메모리; 및
    프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    상기 포인트 클라우드 내의 포인트의 속성의 컴포넌트들에 대한 값들을 디코딩하는 것으로서, 상기 값들은 상기 컴포넌트들에 대한 잔차 값들을 나타내는, 상기 컴포넌트들에 대한 값들을 디코딩하고;
    상기 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하고;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 속성의 상기 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 상기 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하고; 및
    상기 컴포넌트들에 대한 상기 잔차 값들에 기초하여 상기 포인트의 상기 속성의 상기 컴포넌트들을 재구성하도록
    구성된, 포인트 클라우드를 디코딩하기 위한 디바이스.
  32. 제 31 항에 있어서,
    상기 프로세싱 회로는 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  33. 제 32 항에 있어서,
    상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하기 위해, 상기 프로세싱 회로는 상기 하나의 컴포넌트의 값을 디코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  34. 제 33 항에 있어서,
    프로세싱 순서에서, 상기 하나의 컴포넌트가 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 이전에 프로세싱되고,
    상기 하나의 컴포넌트의 값을 디코딩하기 전에 상기 속성의 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하기 위해, 상기 프로세싱 회로는 상기 프로세싱 순서와 다른 디코딩 순서로, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들에 대해 제로의 값을 디코딩하도록 구성되고, 여기서 디코딩 순서에서, 상기 하나의 컴포넌트는 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들 후에 디코딩되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  35. 제 33 항에 있어서,
    상기 속성은 색상 속성이고, 상기 속성의 상기 하나의 컴포넌트는 루마 컴포넌트가고, 상기 하나의 컴포넌트를 제외한 상기 컴포넌트들은 크로마 컴포넌트들을 포함하는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  36. 제 31 항에 있어서,
    상기 포인트는 제 1 포인트를 포함하고,
    상기 프로세싱 회로는,
    상기 포인트 클라우드 내의 제 2 포인트의 속성의 컴포넌트들 중 적어도 2 개의 컴포넌트들에 대한 잔차 값들이 제로와 동일하지 않다고 결정하고; 및
    상기 제 2 포인트의 상기 속성의 상기 컴포넌트들에 대한 상기 잔차 값들을 디코딩하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  37. 제 31 항에 있어서,
    상기 속성은 색상, 프레임 번호, 습도, 온도, 표면 법선, 습도와 온도의 조합, 또는 색상과 표면 법선의 조합 중 적어도 하나를 포함하는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  38. 제 31 항에 있어서,
    상기 오프셋은 1 과 동일한, 포인트 클라우드를 디코딩하기 위한 디바이스.
  39. 제 31 항에 있어서,
    상기 프로세싱 회로는 상기 재구성된 컴포넌트들에 기초하여 건물의 내부의 맵을 생성하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  40. 제 31 항에 있어서,
    상기 프로세싱 회로는 상기 재구성된 컴포넌트들에 기초하여 자율 내비게이션 동작을 수행하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  41. 제 31 항에 있어서,
    상기 프로세싱 회로는 상기 재구성된 컴포넌트들에 기초하여 컴퓨터 그래픽을 생성하도록 구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  42. 제 41 항에 있어서,
    상기 프로세싱 회로는,
    상기 재구성된 컴포넌트들에 기초하여 가상 물체의 위치를 결정하고; 그리고
    상기 가상 물체가 상기 결정된 위치에 있는 확장 현실(XR) 시각화를 생성하도록
    구성되는, 포인트 클라우드를 디코딩하기 위한 디바이스.
  43. 제 31 항에 있어서,
    상기 디바이스는 모바일 폰 또는 태블릿 컴퓨터 중 하나인, 포인트 클라우드를 디코딩하기 위한 디바이스.
  44. 제 31 항에 있어서,
    상기 디바이스는 차량인, 포인트 클라우드를 디코딩하기 위한 디바이스.
  45. 제 31 항에 있어서,
    상기 디바이스는 확장 현실 디바이스인, 포인트 클라우드를 디코딩하기 위한 디바이스.
  46. 제 31 항에 있어서,
    상기 포인트 클라우드에 기초하여 이미지를 제시하기 위한 디스플레이를 더 포함하는, 포인트 클라우드 데이터를 디코딩하기 위한 디바이스.
  47. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때, 포인트 클라우드를 인코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금,
    상기 포인트 클라우드 내의 포인트의 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하게 하고;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 속성의 상기 하나의 컴포넌트의 잔차 값의 크기 마이너스 오프셋과 동일한 상기 하나의 컴포넌트에 대한 값을 결정하게 하며;
    상기 하나의 컴포넌트의 상기 값을 인코딩하게 하고;
    인코딩된 상기 값을 비트스트림에서 시그널링하게 하는, 컴퓨터 판독가능 저장 매체.
  48. 명령들을 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때, 포인트 클라우드를 디코딩하기 위한 디바이스의 하나 이상의 프로세서들로 하여금,
    상기 포인트 클라우드 내의 포인트의 속성의 컴포넌트들에 대한 값들을 디코딩하게 하는 것으로서, 상기 값들은 상기 컴포넌트들에 대한 잔차 값들을 나타내는, 상기 컴포넌트들에 대한 값들을 디코딩하게 하고;
    상기 속성의 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 잔차 값들이 제로와 동일하다고 결정하게 하고;
    상기 속성의 상기 하나의 컴포넌트를 제외한 모든 컴포넌트들에 대한 상기 잔차 값들이 제로와 동일하다는 상기 결정에 기초하여, 상기 속성의 상기 하나의 컴포넌트에 대한 디코딩된 값에 오프셋을 가산하여 상기 하나의 컴포넌트에 대한 잔차 값의 크기를 결정하게 하고; 및
    상기 컴포넌트들에 대한 상기 잔차 값들에 기초하여 상기 포인트의 상기 속성의 상기 컴포넌트들을 재구성하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020227042526A 2020-06-09 2021-06-09 G-pcc 에서의 속성 잔차 코딩 KR20230020418A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202063036878P 2020-06-09 2020-06-09
US63/036,878 2020-06-09
US202163153187P 2021-02-24 2021-02-24
US63/153,187 2021-02-24
US17/342,249 US20210385303A1 (en) 2020-06-09 2021-06-08 Attribute residual coding in g-pcc
US17/342,249 2021-06-08
PCT/US2021/036559 WO2021252593A1 (en) 2020-06-09 2021-06-09 Attribute residual coding in g-pcc

Publications (1)

Publication Number Publication Date
KR20230020418A true KR20230020418A (ko) 2023-02-10

Family

ID=78818079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227042526A KR20230020418A (ko) 2020-06-09 2021-06-09 G-pcc 에서의 속성 잔차 코딩

Country Status (6)

Country Link
US (1) US20210385303A1 (ko)
EP (1) EP4162693A1 (ko)
KR (1) KR20230020418A (ko)
CN (1) CN115699771A (ko)
BR (1) BR112022024359A2 (ko)
WO (1) WO2021252593A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113259678A (zh) * 2020-02-10 2021-08-13 腾讯美国有限责任公司 对点云信息进行编解码的方法和装置
US11417030B2 (en) * 2020-02-10 2022-08-16 Tencent America LLC Context modeling of occupancy coding for point cloud coding
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression
WO2023107868A1 (en) * 2021-12-06 2023-06-15 Innopeak Technology, Inc. Adaptive attribute coding for geometry point cloud coding
WO2023123284A1 (zh) * 2021-12-30 2023-07-06 Oppo广东移动通信有限公司 一种解码方法、编码方法、解码器、编码器及存储介质
WO2023244585A1 (en) * 2022-06-13 2023-12-21 Innopeak Technology, Inc. Geometry point cloud coding system and method
WO2024007253A1 (zh) * 2022-07-07 2024-01-11 Oppo广东移动通信有限公司 点云率失真优化方法及属性压缩方法、装置和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120207400A1 (en) * 2011-02-10 2012-08-16 Hisao Sasai Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US10783668B2 (en) * 2017-12-22 2020-09-22 Samsung Electronics Co., Ltd. Handling duplicate points in point cloud compression
US11288843B2 (en) * 2019-01-04 2022-03-29 Samsung Electronics Co., Ltd. Lossy compression of point cloud occupancy maps
US11454710B2 (en) * 2019-01-08 2022-09-27 Apple Inc. Point cloud compression using a space filling curve for level of detail generation
WO2020190075A1 (ko) * 2019-03-20 2020-09-24 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021006366A1 (ko) * 2019-07-05 2021-01-14 엘지전자 주식회사 디스플레이 패널의 색상을 조정하는 인공 지능 장치 및 그 방법
WO2021066626A1 (en) * 2019-10-03 2021-04-08 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

Also Published As

Publication number Publication date
US20210385303A1 (en) 2021-12-09
BR112022024359A2 (pt) 2022-12-27
EP4162693A1 (en) 2023-04-12
CN115699771A (zh) 2023-02-03
WO2021252593A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
US20210385303A1 (en) Attribute residual coding in g-pcc
US11645812B2 (en) Inter-component residual prediction for color attributes in geometry point cloud compression coding
US11847801B2 (en) Secondary component attribute coding for geometry-based point cloud compression (G-PCC)
CN116325749A (zh) G-pcc中的预测几何编解码
US11558643B2 (en) Secondary component attribute coding for geometry-based point cloud compression (G-PCC)
JP2023520855A (ja) ジオメトリベースのポイントクラウド圧縮における角度モードおよび方位角モードについてのレーザー角度のコーディング
US11956470B2 (en) Predictor index signaling for predicting transform in geometry-based point cloud compression
KR20230027048A (ko) 지오메트리-기반 포인트 클라우드 압축을 위한 속성 파라미터 코딩
KR20220164702A (ko) 지오메트리 기반 포인트 클라우드 압축에서의 각도 및 방위각 모드들에 대한 레이저 각도들의 코딩
KR20230084147A (ko) 포인트 클라우드 압축을 위한 예측 기하학 코딩에서의 레이저 인덱스 클리핑
US11651551B2 (en) Coding of component of color attributes in geometry-based point cloud compression (G-PCC)
US11869220B2 (en) Scaling of quantization parameter values in geometry-based point cloud compression (G-PCC)
US11924428B2 (en) Scale factor for quantization parameter values in geometry-based point cloud compression
US12008712B2 (en) Inter-component residual prediction for attributes in geometry point cloud compression coding
US12003768B2 (en) Residual coding for geometry point cloud compression
US20220321913A1 (en) Residual coding for geometry point cloud compression
KR20230167031A (ko) 지오메트리 포인트 클라우드 압축을 위한 잔차 코딩

Legal Events

Date Code Title Description
A201 Request for examination