KR20240088764A - G-pcc에서의 평면 및 직접 모드 시그널링 - Google Patents

G-pcc에서의 평면 및 직접 모드 시그널링 Download PDF

Info

Publication number
KR20240088764A
KR20240088764A KR1020247010580A KR20247010580A KR20240088764A KR 20240088764 A KR20240088764 A KR 20240088764A KR 1020247010580 A KR1020247010580 A KR 1020247010580A KR 20247010580 A KR20247010580 A KR 20247010580A KR 20240088764 A KR20240088764 A KR 20240088764A
Authority
KR
South Korea
Prior art keywords
syntax element
mode
enabled
current node
node
Prior art date
Application number
KR1020247010580A
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 KR20240088764A publication Critical patent/KR20240088764A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • 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
    • 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
    • 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

Abstract

포인트 클라우드 데이터를 인코딩하는 방법은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계; 및 평면 모드 이외의 모드에서 현재 노드를 인코딩하는 단계를 포함한다.

Description

G-PCC에서의 평면 및 직접 모드 시그널링
본 출원은, 2022년 9월 21일자로 출원된 미국 특허출원 제17/933,953호, 2021년 10월 4일자로 출원된 미국 가특허출원 제63/252,080호, 2021년 10월 8일자로 출원된 미국 가특허출원 제63/253,831호, 및 2022년 1월 13일자로 출원된 미국 가특허출원 제63/266,759호에 대한 우선권을 주장하고, 이들 각각의 전체 내용들은 본 명세서에 참고로 통합된다. 미국 특허출원 제17/933,953호는 2021년 10월 4일자로 출원된 미국 가특허출원 제63/252,080호, 2021년 10월 8일자로 출원된 미국 가특허출원 제63/253,831호, 및 2022년 1월 13일자로 출원된 미국 가특허출원 제63/266,759호의 이익을 주장한다.
기술분야
본 개시내용은 포인트 클라우드 인코딩 및 디코딩에 관한 것이다.
포인트 클라우드는 3차원 공간에서의 포인트들의 집합이다. 포인트들은 3차원 공간 내의 객체들 상의 포인트들에 대응할 수 있다. 따라서, 포인트 클라우드는 3차원 공간의 물리적 콘텐츠를 표현하는데 사용될 수 있다. 포인트 클라우드들은 다양한 상황들에서 유용성을 가질 수 있다. 예를 들어, 포인트 클라우드들은 도로 상의 객체들의 포지션들을 표현하기 위해 자율 차량들의 맥락에서 사용될 수 있다. 다른 예에서, 포인트 클라우드들은 증강 현실(augmented reality, AR) 또는 혼합 현실(mixed reality, MR) 애플리케이션에서 가상 객체들을 포지셔닝하기 위해 환경의 물리적 콘텐츠를 표현하는 맥락에서 사용될 수 있다. 포인트 클라우드 압축은 포인트 클라우드들을 인코딩 및 디코딩하기 위한 프로세스이다. 포인트 클라우드들을 인코딩하는 것은 포인트 클라우드들의 저장 및 송신에 필요한 데이터의 양을 감소시킬 수 있다.
일반적으로, 본 개시내용은 지오메트리 포인트 클라우드 압축(Geometry Point Cloud Compression, G-PCC) 표준에서의 평면 모드 및 직접 모드에 대한 시그널링과 관련된 기법들을 설명한다. 본 개시내용은, 추론된 직접 코딩 모드(inferred direct coding mode, IDCM), 예컨대 IDCM 모드 또는 노드 내의 포인트들의 수에 의존하는 평면 모드의 시그널링의 예들을 설명한다. IDCM 모드에 대한 평면 모드의 제한은, 각도 모드가 인에이블되는 예들에서 적용가능할 수 있다.
예를 들어, 하나 이상의 예들에서, 각도 모드가 인에이블될 때 평면 모드가 (예컨대, IDCM에서 코딩하기에 적격인 노드들에 대해) 디스에이블될 수 있다. 일례로서, G-PCC 인코더 또는 G-PCC 디코더는, 각도 모드가 인에이블되는 모든 인스턴스들에서 평면 모드를 디스에이블할 수 있다. 예를 들어, 신택스 엘리먼트(예컨대, 제1 신택스 엘리먼트)가, 각도 모드가 인에이블됨을 나타내면, 평면 모드는 디스에이블될 필요가 있다. 다른 예로서, G-PCC 인코더는, 각도 모드가 인에이블될 때 평면 모드가 인에이블되는지 또는 디스에이블되는지 여부를 나타내는 신택스 엘리먼트(예컨대, 제2 신택스 엘리먼트)를 시그널링할 수 있다. 이러한 예에서, 각도 모드가 인에이블되는 것이 가능할 수 있지만, 신택스 엘리먼트는 또한 평면 모드가 인에이블됨을 나타낸다.
이러한 방식으로, 각도 모드가 인에이블되는지 여부 또는 신택스 엘리먼트가, 각도 모드가 인에이블될 때 평면 모드가 인에이블됨을 나타내는지 여부의 조건을 만족시키는 것에 기초하여 평면 모드 값들의 시그널링이 제한될 수 있다. 일부 예들에서, 평면 모드는 전체 스트림에 대해 인에이블될 수 있지만, 노드 레벨에서 다른 플래그가, 특정 노드에 대해 평면 모드가 인에이블되는지 여부를 나타낼 수 있다.
예를 들어, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건 및/또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 디스에이블됨을 나타내는 조건이 충족되면, G-PCC 인코더는 평면 모드에 대한 값들을 시그널링하지 않을 수 있다. 따라서, 예시적인 기법들은, 평면 모드에 대한 값들이 시그널링될 때를 제한함으로써 더 효율적인 대역폭 활용을 촉진한다.
일례에서, 본 개시내용은 포인트 클라우드 데이터를 인코딩하는 방법을 설명하고, 본 방법은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계; 및 평면 모드 이외의 모드에서 현재 노드를 인코딩하는 단계를 포함한다.
일례에서, 본 개시내용은, 포인트 클라우드 데이터를 디코딩하는 방법을 설명하고, 본 방법은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하는 단계; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하는 단계; 및 평면 모드 이외의 모드에서 현재 노드를 디코딩하는 단계를 포함한다.
일례에서, 본 개시내용은, 포인트 클라우드 데이터를 인코딩하기 위한 디바이스를 설명하고, 디바이스는, 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및 메모리에 커플링된 프로세싱 회로부를 포함하고, 프로세싱 회로부는: 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하도록; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하도록; 그리고 평면 모드 이외의 모드에서 현재 노드를 인코딩하도록 구성된다.
일례에서, 본 개시내용은, 포인트 클라우드 데이터를 디코딩하기 위한 디바이스를 설명하고, 디바이스는, 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 메모리에 커플링된 프로세싱 회로부를 포함하고, 프로세싱 회로부는: 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하도록; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하도록; 그리고 평면 모드 이외의 모드에서 현재 노드를 디코딩하도록 구성된다.
하나 이상의 예들의 세부사항들은 첨부 도면들 및 이하의 설명에 기재된다. 다른 특징들, 목적들, 및 이점들은 설명, 도면들, 및 청구항들로부터 명백할 것이다.
도 1은 본 개시내용의 기법들을 수행할 수 있는 예시적인 비디오 인코딩 및 디코딩 시스템을 예시한 블록도이다.
도 2는 예시적인 지오메트리 포인트 클라우드 압축(G-PCC) 인코더를 예시한 블록도이다.
도 3은 예시적인 G-PCC 디코더를 예시한 블록도이다.
도 4는 옥트리 인코딩 프로세스의 일례를 예시한 흐름도이다.
도 5는 옥트리 디코딩 프로세스의 일례를 예시한 흐름도이다.
도 6은, 평면 모드 및 평면 포지션이 시그널링 없이 추론된 직접 코딩 모드(IDCM) 모드에 대해 0과 동일하게 설정되는 일례를 예시한 흐름도이다.
도 7은 포인트 클라우드 데이터를 인코딩하기 위한 예시적인 기법을 예시한 흐름도이다.
도 8은 포인트 클라우드 데이터를 디코딩하기 위한 예시적인 기법을 예시한 흐름도이다.
도 9는 3차원 공간에서 포인트들을 스캐닝하는 하나 이상의 레이저들을 포함하는 LIDAR 센서 또는 다른 시스템과 같은 레이저 패키지를 예시한 개념도이다.
도 10은 본 개시내용의 하나 이상의 기법들에 따라 사용될 수 있는 예시적인 거리 측정(range-finding) 시스템을 예시한 개념도이다.
도 11은 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 차량 기반 시나리오를 예시한 개념도이다.
도 12는 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 확장 현실 시스템을 예시한 개념도이다.
도 13은 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 모바일 디바이스 시스템을 예시한 개념도이다.
본 개시내용에 설명된 예시적인 기법들은 지오메트리 포인트 클라우드 압축(G-PCC)과 같은 포인트 클라우드 압축에 관한 것이다. 더 상세히 설명되는 바와 같이, 본 개시내용은 G-PCC에서 평면 및 직접 모드를 시그널링하는 예시적인 기법들을 설명한다. 예를 들어, G-PCC에서 평면 및 직접 모드를 시그널링하기 위한 일부 기법들은 중복 또는 비효율적인 시그널링을 초래할 수 있다. 본 개시내용에 설명된 예시적인 기법들에 의해, G-PCC 인코더는 평면 정보의 시그널링에 대한 중복 시그널링을 회피하고/하거나 그에 대한 오버헤드를 감소시킴으로써 더 대역폭 효율적인 평면 및 직접 모드에 대한 정보를 시그널링할 수 있다.
G-PCC 인코더는 좌표 정보 또는 각도 정보에 기초하여 현재 노드를 인코딩할 수 있다. 포지션 정보를 인코딩하기 위해, G-PCC 인코더는 루트 좌표(root coordinate)(예컨대, 현재 노드의 하부 좌측 전방 코너)를 결정하고, 현재 노드 내의 포인트들에 대한 루트 좌표에 대한 오프셋들을 결정한다.
오프셋들의 크기를 감소시키기 위해, G-PCC 인코더는 평면 모드를 활용할 수 있다. 예를 들어, 현재 노드는 8개의 자식 노드(child node)들로 분할될 수 있어서, 제1 평면 위에 4개의 자식 노드들이 있고 아래에 4개의 자식 노드들이 있으며, 제2 평면의 좌측에 4개의 자식 노드들이 있고 우측에 4개의 자식 노드들이 있으며, 제3 평면 전방에 4개의 자식 노드들이 있고 후방에 4개의 자식 노드들이 있다. 포인트 클라우드 내의 포인트들이 클러스터링되면, 평면 모드에서, G-PCC 인코더는 그러한 클러스터링을 나타내는 값들을 시그널링할 수 있다. G-PCC 인코더는 루트 좌표의 위치를 조정하여, 오프셋들이 더 작아지게 할 수 있다. 예를 들어, G-PCC 인코더는, 모든 포인트들이 현재 노드의 상반부에 위치된다고 결정하고, 현재 노드의 하반부에는 어떠한 포인트들도 존재하지 않음을 나타내는 정보를 시그널링할 수 있다. G-PCC 인코더는 루트 좌표의 위치를 현재 노드의 상반부 내의 자식 노드들 중 일정 자식 노드의 하단 좌측 전방 코너로 조정할 수 있다.
각도 모드에서, G-PCC 인코더는 특정 포인트의 위치를 결정하는 데 사용되는 레이저 빔들의 각도들을 결정할 수 있다. G-PCC 인코더는 그러한 정보를 포인트 클라우드 내의 포인트에 대한 포지션 정보를 인코딩하기 위한 콘텍스트들로서 활용할 수 있다. 각도 모드는 시그널링 포지션 정보에 대해 더 적은 비트들을 요구하는 경향이 있지만, 평면 모드와 비교할 때 더 계산 집약적인 경향이 있다.
각도 모드가 인에이블되는 경우, 평면 모드에 대한 정보의 시그널링이 불필요하고, 대역폭을 불필요하게 활용할 수 있다. 각도 모드가 인에이블되고, 평면 모드에 대한 값들의 시그널링을 바이패스하기에 충분한 인스턴스들이 존재할 수 있다는 것이 이해되어야 한다. 그러나, 각도 모드가 인에이블되는 인스턴스들이 존재할 수 있지만, 가능하게는 실제로 적용되지 않는다. 그러한 경우들에서, 평면 모드에 대한 값들을 시그널링하는 것에 있어서 이점이 존재할 수 있다. 본 개시내용은, 각도 모드가 인에이블되는 조건에서 평면 모드에 대한 값들을 시그널링하는 것을 바이패스하는 예들, 및 각도 모드가 인에이블될 때 평면 모드가 디스에이블되는 조건에서, 이때 또한 각도 모드가 인에이블될 때 평면 모드가 인에이블되는 조건에서 평면 모드에 대한 값들을 시그널링하는 것을 바이패스하는 예들을 설명한다.
전술된 바와 같이, 평면 모드에 대해, G-PCC 인코더는, 어느 평면들을 따라 포인트 클라우드 내의 포인트들이 클러스터링되는지를 식별하는 값들을 시그널링할 수 있다. 그러한 값들을 시그널링하는 것은, 예컨대, 일부 인스턴스들에서, 각도 모드가 인에이블될 때 불필요할 수 있다. 그러나, G-PCC 인코더가, 각도 모드가 인에이블될 때 평면 모드에 대한 값들을 여전히 시그널링할 수 있는 인스턴스들이 존재할 수 있다. 예를 들어, 현재 노드에 대해 각도 모드가 인에이블되지만 적용되지는 않는(예컨대, 현재 노드는 실제로 각도 모드에서 인코딩되지 않음) 가능성이 존재할 수 있다. 그러한 예에서(예컨대, 각도 모드가 인에이블되지만 현재 노드에 대해 적용되지 않음), G-PCC 인코더는 평면 모드에 대한 값들을 시그널링할 수 있다.
본 개시내용은, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블될 수 있는 예시적인 방식들을 설명한다. 일례로서, G-PCC 인코더는, 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag)를 시그널링할 수 있다. 각도 모드가 인에이블되면(예컨대, geometry_angular_enabled_flag가 참이면), G-PCC 인코더는 평면 모드에 대한 값들을 시그널링하는 것을 바이패스할 수 있다. 즉, G-PCC 인코더는, geometry_angular_enabled_flag가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 달리 말하면, G-PCC 인코더는, 각도 모드가 인에이블되지 않는 경우에만 평면 모드에 대한 값들을 시그널링할 수 있다.
다른 예로서, 본 개시내용은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블되는지 여부를 나타내는 신택스 엘리먼트를 설명한다. 이러한 신택스 엘리먼트는 "geom_disable_planar_idcm_angular"로 지칭될 수 있다. 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular)가, 각도 모드가 인에이블될 때 평면 모드가 디스에이블됨을 나타내는 경우, G-PCC 인코더는 평면 모드에 대한 값들을 시그널링하는 것을 바이패스할 수 있다. 즉, G-PCC 인코더는, geom_disable_planar_idcm_angular 플래그가, 각도 모드가 인에이블될 때 평면 모드가 디스에이블됨을 나타내는 조건에서 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 달리 말하면, G-PCC 인코더는, 신택스 엘리먼트가, 각도 모드가 인에이블될 때 평면 모드가 디스에이블되지 않음(예컨대, geom_disable_planar_idcm_angular가 거짓임)을 나타내는 경우에만 평면 모드에 대한 값들을 시그널링할 수 있다.
용이함을 위해, geom_disable_planar_idcm_angular은 제1 신택스 엘리먼트로 지칭될 수 있고, geometry_angular_enabled_flag는 제2 신택스 엘리먼트로 지칭될 수 있다. 예를 들어, G-PCC 인코더는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 조건들의 조합이 또한 가능할 수 있다. 예를 들어, G-PCC 인코더는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 그리고 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
일부 예들에서, 본 개시내용에 설명된 기법들은 추론된 직접 코딩 모드(IDCM), 또는 간단히 직접 모드에 적격인 현재 노드에 대해 적용가능할 수 있다. IDCM 모드에서, 노드에 대한 점유도(occupancy) 정보(즉, 하나 이상의 자식 노드들의 점유도)가 인코딩되지 않을 수 있다. 노드가 IDCM 모드로 코딩될 때, 노드의 점유도 정보를 시그널링하는 대신에, 노드 내의 포인트(들)의 상대적 좌표가 시그널링될 수 있다. 현재 노드가 IDCM에 적격일 수 있지만, 현재 노드가 IDCM에서 인코딩되는 것이 요구되지 않을 수 있다. 예를 들어, 일부 예들에서, 점유도 정보의 시그널링은 현재 노드가 IDCM 모드에 적격인 조건에서 발생할 수 있지만, IDCM 모드는 현재 노드를 인코딩하는 데 사용되지 않는다.
도 1은 본 개시내용의 기법들을 수행할 수 있는 예시적인 인코딩 및 디코딩 시스템(100)을 예시하는 블록도이다. 본 개시내용의 기법들은 일반적으로 포인트 클라우드 데이터를 코딩(인코딩 및/또는 디코딩)하는 것, 즉, 포인트 클라우드 압축을 지원하는 것에 관한 것이다. 일반적으로, 포인트 클라우드 데이터는 포인트 클라우드를 프로세싱하기 위한 임의의 데이터를 포함한다. 코딩은 포인트 클라우드 데이터를 압축 및/또는 압축해제하는데 있어 효율적일 수 있다.
도 1에 도시된 바와 같이, 시스템(100)은 소스 디바이스(102) 및 목적지 디바이스(116)를 포함한다. 소스 디바이스(102)는 목적지 디바이스(116)에 의해 디코딩될 인코딩된 포인트 클라우드 데이터를 제공한다. 특히, 도 1의 예에서, 소스 디바이스(102)는 포인트 클라우드 데이터를 컴퓨터 판독가능 매체(110)를 통해 목적지 디바이스(116)에 제공한다. 소스 디바이스(102) 및 목적지 디바이스(116)는 데스크탑 컴퓨터들, 노트북(즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋-탑 박스들, 전화기 핸드셋들, 예를 들어 스마트폰들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스, 지상 또는 해상 비히클, 스페이스크래프트, 에어크래프트, 로봇, LIDAR 디바이스, 위성 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수 있다. 일부 경우들에서, 소스 디바이스(102) 및 목적지 디바이스(116)가 무선 통신을 위해 구비될 수 있다.
도 1의 예에 있어서, 소스 디바이스(102)는 데이터 소스(104), 메모리(106), G-PCC 인코더(200), 및 출력 인터페이스(108)를 포함한다. 목적지 디바이스(116)는 입력 인터페이스(122), G-PCC 디코더(300), 메모리(120), 및 데이터 소비자(118)를 포함한다. 본 개시내용에 따르면, 소스 디바이스(102)의 G-PCC 인코더(200) 및 목적지 디바이스(116)의 G-PCC 디코더(300)는 추론된 직접 코딩 모드(IDCM)에 의존하는 평면 모드의 포인트 클라우드 데이터를 프로세싱하는 것에 관련된 본 개시내용의 기법들을 적용하도록 구성될 수 있다. 따라서, 소스 디바이스(102)는 인코딩 디바이스의 일례를 나타내는 한편, 목적지 디바이스(116)는 디코딩 디바이스의 일례를 나타낸다. 다른 예들에서, 소스 디바이스(102) 및 목적지 디바이스(116)는 다른 컴포넌트들 또는 배열들을 포함할 수 있다. 예를 들어, 소스 디바이스(102)는 내부 또는 외부 소스로부터 데이터(예컨대, 포인트 클라우드 데이터)를 수신할 수 있다. 이와 마찬가지로, 목적지 디바이스(116)는 동일한 디바이스 내의 데이터 소비자를 포함하기 보다는 외부 데이터 소비자와 인터페이싱할 수 있다.
도 1에 도시된 바와 같은 시스템(100)은 단지 하나의 예이다. 일반적으로, 다른 디지털 인코딩 및/또는 디코딩 디바이스들은 추론된 직접 코딩 모드(IDCM)에 의존하는 평면 모드의 포인트 클라우드 데이터를 프로세싱하는 것에 관련된 본 개시내용의 기법들을 수행할 수 있다. 소스 디바이스(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)는 수신된 송신 신호를 복조할 수 있다. 통신 매체는 라디오 주파수(radio frequency, RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 패킷 기반 네트워크, 예컨대 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스(102)로부터 목적지 디바이스(116)로의 통신을 용이하게 하기에 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 예들에서, 소스 디바이스(102)는 인코딩된 데이터를 출력 인터페이스(108)로부터 저장 디바이스(112)로 출력할 수 있다. 유사하게, 목적지 디바이스(116)는 입력 인터페이스(122)를 통해 저장 디바이스(112)로부터의 인코딩된 데이터에 액세스할 수 있다. 저장 디바이스(112)는 하드 드라이브, 블루 레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 로컬로 액세스 데이터 저장 매체들 중 임의의 것을 포함할 수 있다.
일부 예들에서, 소스 디바이스(102)는, 소스 디바이스(102)에 의해 생성된 인코딩된 데이터를 저장할 수 있는 파일 서버(114) 또는 다른 중간 저장 디바이스로 인코딩된 데이터를 출력할 수 있다. 목적지 디바이스(116)는 스트리밍 또는 다운로드를 통해 파일 서버(114)로부터의 저장된 데이터에 액세스할 수 있다. 파일 서버(114)는 인코딩된 데이터를 저장하고 그 인코딩된 데이터를 목적지 디바이스(116)에 송신할 수 있는 임의의 타입의 서버 디바이스일 수 있다. 파일 서버(114)는 (예컨대, 웹 사이트를 위한) 웹 서버, FTP(File Transfer Protocol) 서버, 콘텐츠 전달 네트워크 디바이스, 또는 NAS(Network Attached Storage) 디바이스를 나타낼 수 있다. 목적지 디바이스(116)는 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 파일 서버(114)로부터 인코딩된 데이터에 액세스할 수 있다. 이것은 파일 서버(114) 상에 저장된 인코딩된 데이터에 액세스하기에 적합한, 무선 채널(예컨대, Wi-Fi 접속), 유선 접속(예컨대, 디지털 가입자 라인(digital subscriber line, 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)는 포인트 클라우드에 기초하여 이미저리(imagery)를 제시하기 위한 디스플레이를 포함할 수 있다.
G-PCC 인코더(200) 및 G-PCC 디코더(300) 각각은 다양한 적합한 인코더 및/또는 디코더 회로, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서(digital signal processor, DSP)들, 주문형 집적 회로(application specific integrated circuit, ASIC)들, 필드 프로그래밍가능 게이트 어레이(field programmable gate array, FPGA)들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들 중 임의의 것으로서 구현될 수 있다. 기법들이 부분적으로 소프트웨어로 구현될 때, 디바이스는 소프트웨어를 위한 명령들을 적합한 비일시적 컴퓨터 판독가능 매체에 저장할 수 있고, 본 개시내용의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 명령들을 하드웨어로 실행할 수 있다. G-PCC 인코더(200) 및 G-PCC 디코더(300)의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수 있는데, 이들 중 어느 하나는 각각의 디바이스에서 커플링된 인코더/디코더(CODEC)의 부분으로서 통합될 수 있다. G-PCC 인코더(200) 및/또는 G-PCC 디코더(300)를 포함하는 디바이스는 하나 이상의 집적 회로, 마이크로프로세서들, 및/또는 다른 타입들의 디바이스들을 포함할 수 있다.
G-PCC 인코더(200) 및 G-PCC 디코더(300)는 코딩 표준, 예컨대 비디오 포인트 클라우드 압축(video point cloud compression, V-PCC) 표준 또는 지오메트리 포인트 클라우드 압축(G-PCC) 표준에 따라 동작할 수 있다. 본 개시내용은 일반적으로 데이터를 인코딩 또는 디코딩하는 프로세스를 포함하는 픽처들의 코딩(예컨대, 인코딩 및 디코딩)을 언급할 수 있다. 인코딩된 비트스트림은 일반적으로 코딩 결정들(예컨대, 코딩 모드들)을 나타내는 신택스 엘리먼트들에 대한 일련의 값들을 포함한다.
본 개시내용은 일반적으로 신택스 엘리먼트들과 같은 소정의 정보를 "시그널링"하는 것을 참조할 수 있다. 용어 "시그널링"은 일반적으로 인코딩된 데이터를 디코딩하는데 사용된 신택스 엘리먼트들 및/또는 다른 데이터에 대한 값들의 통신을 지칭할 수 있다. 즉, G-PCC 인코더(200)는 비트스트림에서 신택스 엘리먼트들에 대한 값들을 시그널링할 수 있다. 일반적으로, 시그널링은 비트스트림에서 값을 생성하는 것을 지칭한다. 위에서 언급된 바와 같이, 소스 디바이스(102)는, 목적지 디바이스(116)에 의한 추후 취출을 위해 신택스 엘리먼트들을 저장 디바이스(112)에 저장할 때 발생할 수 있는 것과 같이, 실질적으로 실시간으로 또는 비실시간으로 비트스트림을 목적지 디바이스(116)로 전송할 수 있다.
ISO/IEC MPEG(JTC 1/SC 29/WG 11)은 현재 접근법들을 크게 뛰어넘는 압축 성능을 가진 포인트 클라우드 코딩 기술의 표준화에 대한 잠재적 필요성을 연구하고 있으며, 표준 생성을 목표로 할 것이다. 그룹은 이러한 영역에서의 이들 전문가에 의해 제안된 압축 기법 설계들을 평가하기 위해 3DG(3-Dimensional Graphics Team)로서 알려진 협업적 노력으로 이 탐구 활동에 대해 함께 작업하고 있다.
포인트 클라우드 압축 활동은 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 w55637, Teleconference, Nov. 2020]에서 이용가능하고, 코덱의 설명은 [G-PCC Codec Description, ISO/IEC JTC1/SC29/WG11 N0011, Teleconference, October 2020]에서 이용가능하다. G-PCC 표준의 다른 초안은 [ISO/IEC JTC1/SC28/WG7 N00348, Teleconference, April 2022]에서 이용가능하고, 코덱의 설명은 [G-PCC Codec Description, ISO/IEC JTC1/SC28/WG7 N00271, Teleconference, January 2022]에서 이용가능하다.
포인트 클라우드는 3D 공간에서의 포인트들의 세트를 포함하고, 포인트와 연관된 속성들을 가질 수 있다. 속성들은 컬러 정보, 예컨대, R, G, B 또는 Y, Cb, Cr, 또는 반사율 정보, 또는 다른 속성들일 수 있다. 포인트 클라우드들은 LIDAR 센서들 및 3D 스캐너들과 같은 다양한 카메라들 또는 센서들에 의해 캡처될 수 있고, 또한 컴퓨터 생성될 수 있다. 포인트 클라우드 데이터는 다양한 애플리케이션들, 구조(모델링), 그래픽(시각화 및 아민화를 위한 3D 모델), 및 자동화 산업(LIDAR 내비게이션을 돕는데 사용되는 센서들)에 사용된다.
포인트 클라우드 데이터에 의해 점유되는 3D 공간은 가상의 바운딩 박스로 인클로즈될 수 있다. 바운딩 박스에서의 포인트들의 포지션은 소정 정밀도에 의해 표현될 수 있고; 따라서, 하나 이상의 포인트들의 포지션들은 정밀도에 기초하여 양자화될 수 있다. 최소 레벨에서, 바운딩 박스는 단위 큐브에 의해 표현되는 공간의 최소 단위인 복셀들로 스플릿된다. 바운딩 박스에서의 복셀은 제로, 하나 또는 하나보다 많은 포인트와 연관될 수 있다. 바운딩 박스는 타일들로 불릴 수 있는 다수의 큐브/큐브 영역으로 스플릿될 수 있다. 각각의 타일은 하나 이상의 슬라이스들로 코딩될 수 있다. 슬라이스들 및 타일들로의 바운딩 박스의 파티셔닝은 각각의 파티션에서의 포인트들의 수에 기초하거나, 또는 다른 고려사항들에 기초할 수 있다(예컨대, 특정 영역은 타일들로서 코딩될 수 있다). 슬라이스 영역들은 또한 비디오 코덱에서의 것들과 유사하게 스플릿 정밀도를 사용하여 추가로 파티셔닝될 수 있다.
도 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에서, 유닛들(212, 218, 310, 314)은 카테고리 1 데이터에 대해 전형적으로 사용되는 옵션들일 수 있다. 유닛들(220, 222, 316, 318)은 카테고리 3 데이터에 대해 전형적으로 사용되는 옵션들일 수 있다. 모든 다른 유닛들은 카테고리 1과 카테고리 3 사이에서 공통이다.
카테고리 3 데이터에 대해, 압축된 지오메트리는 전형적으로 루트로부터 개별적인 복셀들의 리프 레벨 아래로 완전하게 옥트리로서 표현된다. 카테고리 1 데이터에 대해, 압축된 지오메트리는 프루닝된 옥트리(즉, 루프로부터 복셀들보다 더 큰 블록들의 리프 레벨 아래로의 옥트리) 플러스 프루닝된 옥트리의 각각의 리프 내에서 표면을 근사화하는 모델로 전형적으로 표현된다. 이러한 식으로, 양쪽 카테고리 1 및 3 데이터는 옥트리 코딩 메카니즘을 공유할 수 있는 한편, 카테고리 1 데이터는 또한 표면 모델과 각각의 리프 내에서 복셀들을 근사화할 수 있다. 사용된 표면 모델은 블록당 1 내지 10개의 삼각형으로 구성된 삼각측량이며, 그 결과 삼각형 스프가 생성된다. 따라서, 카테고리 1 지오메트리 코덱은 Trisoup 지오메트리 코덱으로 알려져 있는 한편 카테고리 3 지오메트리 코덱은 Octree 지오메트리 코덱으로 알려져 있다.
옥트리의 각각의 노드에서, 점유도는 (추론되지 않을 때) 그 자식 노드들 중 하나 이상(최대 8개의 노드)에 대해 시그널링된다. (a) 현재 옥트리 노드와 면(face)을 공유하는 노드들, (b) 현재 옥트리 노드와 면, 에지, 또는 정점을 공유하는 노드들 등을 포함하는 다수의 이웃들이 명시된다. 각각의 이웃 내에서, 노드 및/또는 그의 자식들의 점유도는 현재 노드 또는 그의 자식들의 점유도를 예측하는 데 사용될 수 있다. 옥트리의 소정 노드들에서 드물게 채워지는 포인트들에 대해, 코덱은 또한 포인트의 3D 포지션이 직접 인코딩되는 직접 코딩 모드(예컨대, IDCM)를 지원한다. 플래그는 직접 모드가 시그널링됨을 표시하도록 시그널링될 수 있다. 최저 레벨에서, 옥트리 노드/리프 노드와 연관된 포인트들의 수가 또한 코딩될 수 있다.
지오메트리가 일단 코딩되면, 지오메트리 포인트에 대응하는 속성들이 코딩된다. 하나의 복원된/디코딩된 지오메트리 포인트에 대응하는 다수의 속성 포인트들이 존재할 때, 복원된 포인트를 표현하는 속성 값이 도출될 수 있다.
G-PCC에서 3개의 속성 코딩 방법들: RAHT(Region Adaptive Hierarchical Transform) 코딩, 보간 기반 계층적 최인접 이웃 예측(Predicting Transform), 및 업데이트/리프팅 스텝(Lifting Transform)과의 보간 기반 계층적 최인접 이웃 예측이 있다. RAHT 및 Lifting은 전형적으로 카테고리 1 데이터에 사용되는 한편, Predicting은 전형적으로 카테고리 3 데이터에 사용된다. 그러나, 어느 방법이든 임의의 데이터에 대해 사용될 수 있고, G-PCC에서의 지오메트리 코덱들과 마찬가지로, 포인트 클라우드를 코딩하기 위해 사용되는 속성 코딩 방법이 비트스트림에서 명시된다.
속성의 코딩은 LOD(level-of-detail)에서 안내될 수 있고, 각각의 디테일의 레벨에서 포인트 클라우드 속성의 보다 정밀한 표현이 획득될 수 있다. 각각의 디테일의 레벨은 이웃 노드들부터의 거리 메트릭에 기초하여 또는 샘플링 거리에 기초하여 규정될 수 있다.
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)는 포인트 클라우드의 포인트들의 포지션들의 세트 및 속성들의 세트를 획득할 수 있다. G-PCC 인코더(200)는 데이터 소스(104)(도 1)로부터 포인트 클라우드 내의 포인트들의 포지션들의 세트 및 속성들의 세트를 획득할 수 있다. 위치들은 포인트 클라우드에서 포인트들의 좌표를 포함할 수 있다. 속성들은 포인트 클라우드에서의 포인트들에 관한 정보, 예컨대 포인트 클라우드에서의 포인트들과 연관된 컬러들을 포함할 수 있다. G-PCC 인코더(200)는, 포인트 클라우드에서의 포인트들의 포지션들의 인코딩된 표현을 포함하는 지오메트리 비트스트림(203)을 생성할 수 있다. G-PCC 인코더(200)는 또한, 속성들의 세트의 인코딩된 표현을 포함하는 속성 비트스트림(205)을 생성할 수 있다.
좌표 변환 유닛(202)은 초기 도메인으로부터 변환 도메인으로 좌표들을 변환하기 위해 포인트들의 좌표들에 변환을 적용할 수 있다. 본 개시내용은 변환 좌표들로서 변환된 좌표들을 지칭할 수 있다. 컬러 변환 유닛(204)은 상이한 도메인으로 속성들의 컬러 정보를 변환하기 위해 변환을 적용할 수 있다. 예를 들어, 컬러 변환 유닛(204)은 RGB 컬러 공간으로부터 YCbCr 컬러 공간으로 컬러 정보를 변환할 수 있다.
더욱이, 도 2의 예에 있어서, 복셀화 유닛(206)은 변환 좌표들을 복셀화할 수 있다. 변환 좌표들의 복셀화는 포인트 클라우드의 일부 포인트들을 양자화 및 제거하는 것을 포함할 수 있다. 즉, 포인트 클라우드의 다수의 포인트들은 단일의 "복셀" 내에 포함될 수 있고 이는 일부 관점에서 하나의 포인트로서 이후 처리될 수 있다. 또한, 옥트리 분석 유닛(210)은 복셀화된 변환 좌표들에 기초하여 옥트리를 생성할 수 있다. 부가적으로, 도 2의 예에 있어서, 표면 근사화 분석 유닛(212)은 포인트들의 세트들의 표면 표현을 잠재적으로 결정하기 위해 포인트들을 분석할 수 있다. 산술 인코딩 유닛(214)은 표면 근사화 분석 유닛(212)에 의해 결정된 표면들 및/또는 옥트리의 정보를 표현하는 신택스 엘리먼트들을 엔트로피 인코딩할 수 있다. G-PCC 인코더(200)는 지오메트리 비트스트림(203)에서 이들 신택스 엘리먼트들을 출력할 수 있다. 지오메트리 비트스트림(203)은 또한, 산술적으로 인코딩되지 않은 신택스 엘리먼트들을 포함하여 다른 신택스 엘리먼트들을 포함할 수 있다.
예시된 바와 같이, 표면 근사 분석 유닛(212)은 평면 모드/각도 모드 유닛(213)을 포함할 수 있다. 하나 이상의 예들에서, 평면 모드/각도 모드 유닛(213)은, 도 7과 관련하여 설명되는 바와 같이, 본 개시내용에 설명된 하나 이상의 예시적인 기법들을 수행하도록 구성될 수 있다. 평면 모드/각도 모드 유닛(213)의 포함은 일례로서 제공되고, 제한하는 것으로 간주되어서는 안 된다. 예시적인 기법들이 평면 모드/각도 모드 유닛(213)과 관련하여 예시되지만, 일부 예들에서, 예시적인 기법들은 산술 인코딩 유닛(214)에 의해 수행될 수 있다.
지오메트리 복원 유닛(216)은 옥트리에 기초하여 포인트 클라우드에서 포인트들의 변환 좌표들, 표면 근사화 분석 유닛(212)에 의해 결정된 표면을 나타내는 데이터, 및/또는 다른 정보를 복원할 수 있다. 지오메트리 복원 유닛(216)에 의해 복원된 변환 좌표들의 수는 복셀화 및 표면 근사화에 기인하여 포인트 클라우드의 포인트들의 원래 수와는 상이할 수 있다. 본 개시내용은 복원된 포인트들로서 결과적인 포인트들을 지칭할 수 있다. 속성 트랜스퍼 유닛(208)는 포인트 클라우드의 원래 포인트의 속성들을 포인트 클라우드의 복원된 포인트들로 트랜스퍼할 수 있다.
또한, RAHT 유닛(218)은 복원된 포인트들의 속성들에 RAHT 코딩을 적용할 수 있다. 일부 예들에서, RAHT 하에서, 2x2x2 포인트 포지션들의 블록의 속성들이 취해지고 하나의 방향을 따라 변환되어 4개의 저(L) 및 4개의 고(H) 주파수 노드들을 획득한다. 후속하여, 4개의 저 주파수 노드들(L)을 제2 방향으로 변환하여 2개의 저(LL) 및 2개의 고(LH) 주파수 노드들을 얻는다. 2개의 저 주파수 노드들(LL)은 제3 방향을 따라 변환되어 하나의 저(LLL) 및 하나의 고(LLH) 주파수 노드를 얻는다. 저 주파수 노드(LLL)는 DC 계수들에 대응하고, 고 주파수 노드들(H, LH, 및 LLH)은 AC 계수들에 대응한다. 각 방향에서의 변환은 2개의 계수 가중치들을 갖는 1-D 변환일 수 있다. 저 주파수 계수들은 RAHT 변환의 다음 상위 레벨에 대한 2x2x2 블록의 계수들로서 취해질 수 있고, AC 계수들은 변경들 없이 인코딩되고; 그러한 변환들은 상단 루트 노드까지 계속된다. 인코딩을 위한 트리 횡단은 계수들에 대해 사용될 가중치들을 계산하기 위해 상단에서 하단으로 사용되고; 변환 순서는 하단에서 상단으로이다. 이어서, 계수들은 양자화되고 코딩될 수 있다.
대안적으로 또는 추가적으로, LOD 생성 유닛(220) 및 리프팅 유닛(222)은 LOD 프로세싱 및 리프팅에 복원된 포인트들의 속성들에 각각 적용할 수 있다. LOD 생성은 속성들을 다른 정제 레벨들로 분할하는 데 사용된다. 각 정제 레벨은 포인트 클라우드의 속성들에 대한 정제(refinement)를 제공한다. 제1 정제 레벨은 대략적인 근사(coarse approximation)를 제공하고, 몇 개의 포인트들을 포함하고; 후속 정제 레벨은 전형적으로 더 많은 포인트들을 포함하는 등등이다. 정제 레벨들은 거리 기반 메트릭을 사용하여 구성될 수 있거나 또는 하나 이상의 다른 분류 기준들(예컨대, 특정 순서로부터의 서브샘플링)을 또한 사용할 수 있다. 따라서, 모든 재구성된 포인트들이 정제 레벨에 포함될 수 있다. 각각의 디테일 레벨은 특정 정제 레벨까지의 모든 포인트들의 연합을 취함으로써 생성된다: 예를 들어, LOD1은 정제 레벨 RL1에 기초하여 획득되고, LOD2는 RL1 및 RL2에 기초하여 획득되며, ... LODN은 RL1, RL2, ... RLN의 연합에 의해 획득된다. 일부 경우들에서, LOD 생성은 LOD에서의 각각의 포인트와 연관된 속성들이 선행 포인트들의 가중된 평균으로부터 예측되고, 잔차가 양자화되고 엔트로피 코딩되는 예측 방식(예컨대, 예측 변환)이 뒤따를 수 있다. 리프팅 방식은 예측 변환 메커니즘의 최상부에 구축되며, 여기서 업데이트 오퍼레이터가 계수들을 업데이트하기 위해 사용되고 계수들의 적응적 양자화가 수행된다.
RAHT 유닛(218) 및 리프팅 유닛(222)은 속성에 기초하여 계수들을 생성할 수 있다. 계수 양자화 유닛(224)은 RAHT 유닛(218) 또는 리프팅 유닛(222)에 의해 생성된 계수들을 양자화할 수 있다. 산술 인코딩 유닛(226)은 양자화된 계수들을 표현하는 신택스 엘리먼트들에 산술 코딩을 적용할 수 있다. G-PCC 인코더(200)는 속성 비트스트림(205)에서 이들 신택스 엘리먼트들을 출력할 수 있다. 속성 비트스트림(205)은 또한, 비-산술적으로 인코딩된 신택스 엘리먼트들을 포함하여 다른 신택스 엘리먼트들을 포함할 수 있다.
도 3의 예에서, G-PCC 디코더(300)는 지오메트리 산술 디코딩 유닛(302), 속성 산술 디코딩 유닛(304), 옥트리 합성 유닛(306), 역 양자화 유닛(308), 표면 근사화 합성 유닛(310), 지오메트리 재구성 유닛(312), RAHT 유닛(314), LOD 생성 유닛(316), 역 리프팅 유닛(318), 역 변환 좌표 유닛(320), 및 역 변환 컬러 유닛(322)을 포함할 수 있다.
G-PCC 디코더(300)는 지오메트리 비트스트림(203) 및 속성 비트스트림(205)을 획득할 수 있다. G-PCC 디코더(300)의 지오메트리 산술 디코딩 유닛(302)은 지오메트리 비트스트림(203)에서의 신택스 엘리먼트들에 산술 디코딩(예컨대, 콘텍스트 적응적 바이너리 산술 코딩(Context-Adaptive Binary Arithmetic Coding, CABAC) 또는 다른 유형의 산술 디코딩)을 적용할 수 있다. 유사하게, 속성 산술 디코딩 유닛(304)은 속성 비트스트림(205)에서의 신택스 엘리먼트들에 산술 디코딩을 적용할 수 있다.
옥트리 합성 유닛(306)은 지오메트리 비트스트림(203)으로부터 파싱된 신택스 엘리먼트들에 기초하여 옥트리를 합성할 수 있다. 옥트리의 루트 노드로 시작하여, 각각의 옥트리 레벨에서의 8개의 자식 노드 각각의 점유는 비트스트림에서 시그널링된다. 시그널링이 특정 옥트리 레벨에서의 자식 노드가 점유됨을 나타낼 때, 이 자식 노드의 자식들의 점유가 시그널링된다. 각각의 옥트리 레벨에서의 노드들의 시그널링은 후속 옥트리 레벨로 진행하기 전에 시그널링된다. 옥트리의 최종 레벨에서, 각각의 노드는 복셀 포지션에 대응하고; 리프 노드가 점유될 때, 하나 이상의 포인트들이 복셀 포지션에서 점유되도록 명시될 수 있다. 일부 경우들에서, 옥트리의 일부 브랜치들은 양자화로 인해 최종 레벨보다 먼저 종결될 수 있다. 이러한 경우들에서, 리프 노드는 자식 노드들이 없는 점유된 노드로 간주된다. 표면 근사화가 지오메트리 비트스트림(203)에서 사용되는 경우들에서, 표면 근사 합성 유닛(310)은 지오메트리 비트스트림(203)으로부터 파싱된 신택스 엘리먼트들에 기초하여 그리고 옥트리에 기초하여 표면 모델을 결정할 수 있다.
또한, 지오메트리 복원 유닛(312)은 포인트 클라우드에서의 포인트들의 좌표들을 결정하기 위해 복원을 수행할 수 있다. 옥트리의 리프 노드에서의 각각의 포지션에 대해, 지오메트리 재구성 유닛(312)은 옥트리 내의 리프 노드의 이진 표현을 사용함으로써 노드 포지션을 재구성할 수 있다. 각각의 각자의 리프 노드에서, 각자의 리프 노드에서의 포인트들의 수가 시그널링되고; 이것은, 동일한 복셀 포지션에서의 중복 포인트들의 수를 나타낸다. 지오메트리 양자화가 사용될 때, 포인트 포지션들은 재구성된 포인트 포지션 값들을 결정하기 위해 스케일링된다.
예시된 바와 같이, 지오메트리 재구성 유닛(312)은 평면 모드/각도 모드 유닛(313)을 포함할 수 있다. 하나 이상의 예들에서, 평면 모드/각도 모드 유닛(313)은, 도 8과 관련하여 설명되는 바와 같이, 본 개시내용에 설명된 하나 이상의 예시적인 기법들을 수행하도록 구성될 수 있다. 평면 모드/각도 모드 유닛(313)의 포함은 일례로서 제공되고, 제한하는 것으로 간주되어서는 안 된다. 예시적인 기법들이 평면 모드/각도 모드 유닛(313)과 관련하여 예시되지만, 일부 예들에서, 예시적인 기법들은 지오메트리 산술 디코딩 유닛(302)에 의해 수행될 수 있다.
역 변환 좌표 유닛(320)은 포인트 클라우드에서의 포인트들의 복원된 좌표들(위치들)을 변환 도메인으로부터 초기 도메인으로 다시 컨버팅하기 위하여 복원된 좌표에 역 변환을 적용할 수 있다. 포인트 클라우드에서의 포인트들의 포지션들은 부동 소수점 도메인에 있을 수 있지만, G-PCC 코덱에서의 포인트 포지션들은 정수 도메인에서 코딩된다. 역 변환은 그 포지션들을 다시 원래의 도메인으로 변환하는데 사용될 수 있다.
부가적으로, 도 3의 예에 있어서, 역 양자화 유닛(308)은 속성 값들을 역 양자화할 수 있다. 속성 값들은 속성 비트스트림(205)으로부터 획득된 신택스 엘리먼트들(예컨대, 속성 산술 디코딩 유닛(304)에 의해 디코딩된 신택스 엘리먼트들을 포함함)에 기초할 수 있다.
속성 값들이 어떻게 인코딩되는지에 의존하여, RAHT 유닛(314)은 RAHT 코딩을 수행하여 역 양자화된 속성 값들에 기초하여, 포인트 클라우드의 포인트들에 대한 컬러 값들을 결정할 수 있다. RAHT 디코딩은 트리의 위에서 아래로 행해진다. 각 레벨에서, 역 양자화 프로세스로부터 도출된 저 및 고 주파수 계수들은 구성 값들을 도출하는데 사용된다. 리프 노드에서, 도출된 값들은 계수들의 속성 값들에 대응한다. 포인트들에 대한 가중치 도출 프로세스는 G-PCC 인코더(200)에서 사용되는 프로세스와 유사하다. 대안적으로, LOD 생성 유닛(316) 및 역 리프팅 유닛(318)은 디테일 기반 레벨 기법을 사용하여 포인트 클라우드의 포인트들에 대한 컬러 값들을 결정할 수 있다. LOD 생성 유닛(316)은 포인트들의 속성의 점진적으로 더 미세한 표현들을 제공하는 각각의 LOD를 디코딩한다. 예측 변환으로, LOD 생성 유닛(316)은 이전의 LOD들에 있거나 동일한 LOD에서 이전에 재구성된 포인트들의 가중된 합으로부터 포인트의 예측을 도출한다. LOD 생성 유닛(316)은 속성의 재구성된 값을 획득하기 위해 (역 양자화 후에 획득된) 잔차에 예측을 추가할 수 있다. 리프팅 방식이 사용될 때, LOD 생성 유닛(316)은 또한 속성 값들을 도출하는데 사용되는 계수들을 업데이트하기 위한 업데이트 오퍼레이터를 포함할 수 있다. LOD 생성 유닛(316)은 또한 이 경우에 역 적응적 양자화를 적용할 수 있다.
더욱이, 도 3의 예에 있어서, 역 변환 컬러 유닛(322)은 컬러 값들에 역 컬러 변환을 적용할 수 있다. 역 컬러 변환은 인코더(200)의 컬러 변환 유닛(204)에 의해 적용된 컬러 변환의 역일 수 있다. 예를 들어, 컬러 변환 유닛(204)은 RGB 컬러 공간으로부터 YCbCr 컬러 공간으로 컬러 정보를 변환할 수 있다. 따라서, 역 컬러 변환 유닛(322)은 YCbCr 컬러 공간으로부터 RGB 컬러 공간으로 컬러 정보를 변환할 수 있다.
도 2 및 도 3의 여러 유닛들은 G-PCC 인코더(200) 및 G-PCC 디코더(300)에 의해 수행된 동작들을 이해하는 것을 보조하기 위해 예시된다. 유닛들은 고정 기능 회로들, 프로그래밍가능 회로들, 또는 이들의 조합으로서 구현될 수 있다. 고정 기능 회로들은 특정 기능을 제공하는 회로들을 지칭하며, 수행될 수 있는 동작들에 대해 미리 설정된다. 프로그래밍가능 회로들은 다양한 태스크들을 수행하도록 프로그래밍될 수 있는 회로들을 지칭하고, 수행될 수 있는 동작들에 유연한 기능을 제공한다. 예를 들어, 프로그래밍가능 회로들은, 프로그래밍가능 회로들로 하여금 소프트웨어 또는 펌웨어의 명령들에 의해 정의된 방식으로 동작하게 하는 소프트웨어 또는 펌웨어를 실행할 수 있다. 고정 기능 회로들은 소프트웨어 명령들을 (예컨대, 파라미터들을 수신하거나 파라미터들을 출력하기 위해) 실행할 수 있지만, 고정 기능 회로들이 수행하는 동작 타입들은 일반적으로 불변이다. 일부 예들에서, 유닛들 중 하나 이상은 별개의 회로 블록들(고정 기능 또는 프로그래밍가능)일 수 있고, 일부 예들에서, 유닛들 중 하나 이상은 집적 회로들일 수 있다.
하기는 G-PCC에서의 평면, 각도, 및 방위각 코딩 모드들을 설명한다. 소개로서, 평면 코딩 모드는, [Sbastien Lasserre, David Flynn, "[GPCC] Planar mode in octree-based geometry coding," ISO/IEC JTC1/SC29/WG11 MPEG/m48906, Gothenburg, Sweden, July 2019]에서 처음으로 제안되었고, [Sbastien Lasserre, Jonathan Taquet, "[GPCC] CE13.22 report on planar coding mode," ISO/IEC JTC1/SC29/WG11 MPEG/m50008, Geneva, Switzerland, October 2019 at the 128th MPEG meeting in Geneva, Switzerland]에서 채택되었다.
각도 코딩 모드는, [Sbastien Lasserre, Jonathan Taquet, "[GPCC][CE 13.22 related] An improvement of the planar coding mode," ISO/IEC JTC1/SC29/WG11 MPEG/m50642, Geneva, CH, Oct. 2019]에서 처음으로 제안되었고, [Sbastien Lasserre, Jonathan Taquet, "[GPCC] CE 13.22 report on angular mode," ISO/IEC JTC1/SC29/WG11 MPEG/m51594, Brussels, Belgium, Jan. 2020 at the 129th MPEG meeting in Brussels, Belgium]에서 채택되었으며, 전형적인 LiDAR 센서의 센서 특성들을 사용함으로서 평면 모드의 코딩 효율성을 향상시킨다. 각도 코딩 모드는 선택적으로, 평면 모드와 함께 사용되고, 전형적인 LiDAR 센서에서 감지 레이저 빔들의 포지션들 및 각도들의 지식을 채용함으로써 수직(z) 평면 포지션 신택스 엘리먼트의 코딩을 개선한다. 더욱이, 각도 코딩 모드는 추론된 직접 코딩 모드(IDCM)에서 수직 z 포지션 비트들의 코딩을 개선하기 위해 옵션적으로 사용될 수 있다.
[Geert Van der Auwera, Bappaditya Ray, Louis Kerofsky, Adarsh K. Ramasubramonian, Marta Karczewicz, "[GPCC][New Proposal] Angular mode simplifications and HLS refinements," ISO/IEC JTC1/SC29/WG11 MPEG/m53693, Teleconference (previously Alpbach meeting), April 2020]의 별도의 기여에서, 각도 코딩 모드에 대한 콘텍스트 도출이 단순화되었고, 센서 데이터 파라미터들의 HLS(high level syntax) 코딩은 더 효율적으로 이루어졌다. 하기의 각도 모드 설명들은 오리지널 MPEG 기여 문서들(예컨대, Sbastien Lasserre, Jonathan Taquet, "[GPCC][CE 13.22 related] An improvement of the planar coding mode," ISO/IEC JTC1/SC29/WG11 MPEG/m50642, Geneva, CH, Oct. 2019, 및 Sbastien Lasserre, Jonathan Taquet, "[GPCC] CE 13.22 report on angular mode," ISO/IEC JTC1/SC29/WG11 MPEG/m51594, Brussels, Belgium, Jan. 2020) 및 GPCC DIS 텍스트(예컨대, G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020)에 기초한다.
방위각 코딩 모드는, [Sbastien Lasserre, Jonathan Taquet, "[GPCC] [CE13.22 related] The azimuthal coding mode," ISO/IEC JTC1/SC29/WG11 MPEG/m51596, Brussels, Belgium, Jan. 2020]에서 처음으로 제안되었고, [Sbastien Lasserre, Jonathan Taquet, "[GPCC] [CE 13.22] Report on azimuthal coding mode," ISO/IEC JTC1/SC29/WG11 MPEG/m52958, Teleconference (previously Alpbach meeting), April 2020 at the 130th MPEG teleconference meeting]에서 채택되었다. 방위각 코딩 모드는 각도 모드와 유사하고, 그것을 평면 모드의 (x) 및 (y) 평면 포지션 신택스 엘리먼트들의 코딩으로 확장하고 IDCM에서 x- 또는 y-포지션 비트들의 코딩을 개선한다.
별도의 기여, [Geert Van der Auwera, Bappaditya Ray, Adarsh K. Ramasubramonian, Marta Karczewicz, "[GPCC][New Proposal] Planar and azimuthal coding mode simplifications," ISO/IEC JTC1/SC29/WG11 MPEG/m54694, Teleconference, July 2020, at the 131st MPEG teleconference meeting]에서, 방위각 모드에서 사용되는 콘텍스트들의 수가 유의하게 감소되었다. 다른 기여는 [Wei Zhang, Zexing Sun, Mary-Luc Champel, "[G-PCC]EE13.37 report on planar coding improvement," ISO/IEC JTC1/SC29/WG11 MPEG/m53693, Teleconference(이전의 Geneva 회의), June 2020]이다. "각도 모드"라는 어구는 또한 본 설명에서 방위각 모드를 지칭할 수 있다.
하기는 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서의 평면 코딩 모드를 설명한다. 예를 들어, 평면 코딩 모드와 관련된 상세는 하기와 같이 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에 요약되어 있다:
8.2.3.1 평면 코딩 모드에 대한 노드의 적격성
점유 평면들의 명시적 코딩은 XXX의 확률에 대해 컨디셔닝된다.
k = 0 .. 2에 대해, 엘리먼트들 PlanarRate[ k ]이 있는, 어레이 PlanarRate는, 노드의 점유가 k번째 축에 수직인 단일 평면을 형성할 확률의 추정치이다.
변수 LocalDensity는 노드에서 점유된 자식들의 평균 수의 추정치이다.
NumNodesUntilPlanarUpdate 변수는 PlanarRate 및 LocalDensity를 업데이트하기 전에 파싱될 노드의 수를 카운트한다.
[XXX 엔트로피 상태 계속]
geometry_octree 신택스 구조를 파싱하기 시작할 때, PlanarRate 및 LocalDensity는 하기와 같이 초기화된다:
for (k = 0; k < 3; k++)
PlanarRate[k] = 1024
LocalDensity = 4096
NumNodesUntilPlanarUpdate = 0
각각의 geometry_octree_node 신택스 구조를 파싱하기 시작할 때, NumNodesUntilPlanarUpdate가 감분된다. NumNodesUntilPlanarUpdate가 0보다 작으면 PlanarRate 및 LocalDensity가 하기와 같이 업데이트된다:
- 점유된 형제 노드(sibling node)들의 수가 결정되고, LocalDensity 추정치를 업데이트하는 데 사용된다:
let numSiblings = NodeNumChildren[depth - 1][sNp][tNp][vNp]
LocalDensity = (255 × LocalDensity + 1024 × numSiblings) >> 8
- 다음 업데이트까지의 노드들의 수는 다음과 같다:
NumNodesUntilPlanarUpdate = numSiblings - 1 XXX
- 부모 노드의 점유도 정보는, 각각의 축을 따라, 단일 점유된 평면의 존재를 결정하고 대응하는 평면 확률 추정치 PlanarRate[ k ]를 업데이트하는 데 사용된다.
let parentOccupancy = GeometryNodeOccupancy[depth - 1][sNp][tNp][vNp]
let planeMasks0 = { 0xf0, 0xcc, 0xaa }
let planeMasks1 = { 0x0f, 0x33, 0x55 }
for (k = 0; k < 3; k++) {
let plane0 = (parentOccupancy & planeMaks0[k]) != 0
let plane1 = (parentOccupancy & planeMaks1[k]) != 0
let hasSinglePlane = plane0 ^ plane1
PlanarRate[k] = (255 × PlanarRate[k] + 8 × 256 × hasSinglePlane + 128) >> 8
}
각각의 geometry_octree_node 신택스 구조를 파싱하기 시작할 때, 현재 노드가 평면 정보를 시그널링하기에 적격인지를 각각의 축에 대해 결정된다. 이 프로세스의 출력은 k = 0 .. 2에 대해 PlanarEligible[k] 요소를 가진 PlanarEligible 배열이다.
첫 번째로, PlanarRate는 테이블 18에 따라 가장 가능성이 높은 것으로부터 가장 가능성이 낮은 것까지의 3개의 평면들의 순서, planeOrder[ k ]를 결정하는 데 사용된다.
이어서 PlanarEligible는 하기와 같이 설정된다:
for (k = 0; k < 3; k++) {
if (EffectiveNodeSizeLog2[k] <= 0)
PlanarEligible[k] = 0
else if (!geom_tree_coded_axis_flag[depth][k])
PlanarEligible[k] = 0
else if (!geometry_planar_enabled_flag)
PlanarEligible[k] = 0
else if (XXX angular mode linkage XXX)
PlanarEligible[k] = XXX
else if (LocalDensity >= 3 × 1024)
PlanarEligible[k] = 0
else
PlanarEligible[k] = PlanarRate[k] > geom_planar_th[planeOrder[k]]
}
테이블 18 - planarRate[ k ]로부터 planeOrder[ k ]의 값들의 결정
신택스 엘리먼트는 비트스트림으로 시그널링된다:
is_planar_flag를 코딩하기 위한 콘텍스트 인덱스(ctxIdx)는 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 테이블 37에 명시되고, 여기서 그것은 axisIdx와 동일하게 설정된다.
8.2.3.2 축을 따라 가장 가까운 노드들의 버퍼 추적
어레이들 PlanarPrevPos, PlanarPlane, IsPlanarNode는 신택스 엘리먼트 plane_position에 대한 ctxIdx의 결정에 사용하기 위해 이전에 디코딩된 지오메트리 트리 노드들에 관한 정보를 기록한다. geometry_planar_enabled_flag가 0과 동일하거나 planar_buffer_disabled_flag가 1과 동일할 때, 어레이들은 디코딩 프로세스에 의해 사용되지 않는다.
이러한 프로세스에서, 변수 axisIdx는 3개의 코딩된 축들 중 하나를 나타내기 위해 사용되며, 변수 axisPos는 axisIdx번째 축을 따른 노드의 포지션을 나타낸다. axisPos의 값들은 범위 0 .. 0x3fff에 있다.
IsPlanarNode[ axisIdx ][ axisPos ] 값들을 갖는 어레이 IsPlanarNode는 axisPos와 동일한 axisIdx번째 포지션 컴포넌트를 갖는 가장 최근에 디코딩된 노드가 axisIdx번째 축에 수직인 평면에서 평면인지 여부를 표시한다.
값들 PlanarPrevPos[ axisIdx ][ axisPos ]를 갖는 어레이 PlanarPrevPos는 axisPos와 동일한 axisIdx번째 포지션 컴포넌트를 갖는 가장 최근에 디코딩된 노드의 최대 포지션 컴포넌트를 저장한다.
값들 PlanarPlane[ axisIdx ][ axisPos ]을 갖는 어레이 PlanarPlane은 axisPos와 동일한 axisIdx번째 포지션 컴포넌트를 갖는 가장 최근에 디코딩된 노드에 대한 plane_position[ axisIdx ]의 값을 나타낸다.
각각의 지오메트리 트리 레벨의 시작에서, 어레이들 PlanarPrevPos 및 IsPlanarNode의 각각의 엘리먼트는 0으로 초기화된다.
XXX 파라미터들 childIdx 및 axisIdx를 갖는 각각의 geometry_planar_mode_data 신택스 구조를 디코딩한 후, 어레이들 PlanarPrevPos, PlanarPlane 및 IsPlanarNode는 하기와 같이 업데이트된다:
- axisIdx번째 축을 따른 포지션을 표현하는 변수 axisPos는 하기와 같이 도출된다:
if (axisIdx == 0) axisPos = sN & 0x3fff
if (axisIdx == 1) axisPos = tN & 0x3fff
if (axisIdx == 2) axisPos = vN & 0x3fff
- 노드에 대응하는 어레이 엔트리들은 하기와 같이 업데이트된다:
if (axisIdx == 0) maxPos = Max(tN & 0x7c0, vN & 0x7c0) >> 3
if (axisIdx == 1) maxPos = Max(sN & 0x7c0, vN & 0x7c0) >> 3
if (axisIdx == 2) maxPos = Max(sN & 0x7c0, tN & 0x7c0) >> 3
PlanarPrevPos[axisIdx][axisPos] = maxPos
if (is_planar_flag[axisPos])
PlanarPlane[axisIdx][axisPos] = plane_position[axisIdx]
IsPlanarNode[axisIdx][axisPos] = is_planar_flag[axisIdx]
8.2.3.3 신택스 엘리먼트 plane_position에 대한 ctxIdx의 결정
이 프로세스에 대한 입력들은 다음과 같다:
- 평면에 수직인 축을 식별하는 변수 axisIdx, 및
- 지오메트리 트리 레벨 내의 현재 노드의 포지션(sN, tN, vN).
이러한 프로세스의 출력은 변수 ctxIdx이다.
변수 neighOccupied는, axisIdx번째 축을 따라 현재 노드에 둘다 이웃하는 노드가 존재하는지 여부를 나타낸다. 그것은 하기와 같이 도출된다: XXX
neighOccupied = (NeighbourPattern >> 2 × axisIdx) & 3
adjPlaneCtxInc = neighOccupied == 3 ? 0 : neighOccupied
if (axisIdx == 0 && neighOccupied == 3)
adjPlaneCtxInc = ((neighOccupied & 1) << 1) | (neighOccupied >> 1)
planar_buffer_disabled_flag가 1과 동일할 때, ctxIdx의 값은 adjPlaneCtxInc과 동일하게 설정되고, 이러한 프로세스에 의해 어떠한 추가의 프로세싱도 수행되지 않는다. 그렇지 않으면 이러한 조항의 나머지 부분이 적용된다.
변수 axisPos는 axisIdx번째 축을 따라 현재 노드의 14개의 최하위 포지션 비트들을 나타낸다:
if (axisIdx == 0) axisPos = sN & 0x3fff
if (axisIdx == 1) axisPos = tN & 0x3fff
if (axisIdx == 2) axisPos = vN & 0x3fff
변수 dist는 현재 노드와 axisIdx번째 축을 따라 axisPos의 동일한 값을 갖는 가장 최근에 디코딩된 노드 포지션 사이의 거리를 표현한다. 그것은 하기와 같이 도출된다:
a = PlanarPrevPos[axisIdx][axisPos]
if (axisIdx == 0) b = Max(tN & 0x7c0, vN & 0x7c0) >> 3
if (axisIdx == 1) b = Max(sN & 0x7c0, vN & 0x7c0) >> 3
if (axisIdx == 2) b = Max(sN & 0x7c0, tN & 0x7c0) >> 3
dist = Abs(a - b)
콘텍스트 인덱스 ctxIdx는 하기와 같이 도출된다:
if (!IsPlanarNode[axisIdx][axisPos]])
ctxIdx = adjPlaneCtxInc
else {
prevPlane = PlanarPlane[axisIdx][axisPos]
distCtxInc = (dist > 1)
ctxIdx = 12 × axisIdx + 4 × adjPlaneCtxInc + 2 × distCtxInc + prevPlane + 3
}
8.2.3.4 수평 평면 포지션들의 코딩을 위한 planePosIdxAzimuthalS 및 planePosIdxAzimuthalT의 결정
plane_position[ 0 ]의 산술 코딩을 위한 planePosIdxAngularS 및 plane_position[ 1 ]의 산술 코딩을 위한 planePosIdxAngularT의 결정은 하기와 같이 획득된다.
geometry_angular_enabled_flag가 0과 동일할 때, planePosIdxAzimuthalS 및 planePosIdxAzimuthalT 둘 모두의 값들은 planePosIdx와 동일하게 설정된다. 그렇지 않으면, 다음이 적용된다:
if (contextAzimuthalS == -1)
planePosIdxAzimuthalS = planePosIdx
else
planePosIdxAzimuthalS = 39 + contextAzimuthalS
if (contextAzimuthalT == -1)
planePosIdxAzimuthalT = planePosIdx
else
planePosIdxAzimuthalT = 39 + contextAzimuthalT
plane_position[ 2 ]의 산술 코딩을 위한 contextAngular의 결정은 XREF에 기술된 바와 같이 수행된다.
8.2.3.5 수직 평면 포지션의 코딩을 위한 planePosIdxAngular의 결정
plane_position[ 2 ]의 산술 코딩을 위한 planePosIdxAngular의 결정은 다음과 같이 획득된다.
geometry_angular_enabled_flag가 0과 동일할 때, planePosIdxAngular의 값은 planePosIdx와 동일하게 설정된다. 그렇지 않으면, 다음이 적용된다:
if (contextAngular == -1)
planePosIdxAngular = planePosIdx
else
planePosIdxAngular = 47 + contextAngular
plane_position[ 2 ]의 산술 코딩을 위한 contextAngular의 결정은 섹션 8.2.5.3에 설명된 바와 같이 수행된다.
하기는 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서의 각도 및 방위각 모드들을 설명한다. 각도 모드 신택스의 경우, 각도 코딩 모드가 임의의 코딩 효율성 이점들을 갖기 위해 요구되는 Lidar 레이저 센서 정보를 반송하는 신택스 엘리먼트들은 테이블 2의 <ANGULAR CODING MODE>…</ANGULAR CODING MODE> 사이에 도시된다. 이들 신택스 엘리먼트들의 시맨틱스는 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 하기와 같이 명시된다:
geometry_planar_enabled_flag가 1과 동일한 것은, 평면 코딩 모드가 활성화됨을 나타낸다. geometry_planar_enabled_flag가 0과 동일한 것은, 평면 코딩 모드가 활성화되지 않음을 나타낸다. 존재하지 않을 때, geometry_planar_enabled_flag는 0인 것으로 추론된다.
geom_planar_th[ i ]는, 0 .. 2 범위 내의 i에 대해, 평면 코딩 모드가 효율적일 가능성이 i 번째로 높은 방향을 따른 평면 코딩 모드에 대한 활성화의 임계치의 값을 명시한다.
geom_idcm_rate_minus1은, 노드들이 직접 코딩에 적격일 수 있는 레이트를 명시한다. 존재하지 않을 경우, geom_idcm_rate_minus1은 31인 것으로 추론된다.
어레이 IdcmEnableMask는 다음과 같이 도출된다:
for (i = 0, acc = 0; i < 32; i++) {
acc += geom_idcm_rate_minus1 + 1
IdcmEnableMask[i] = acc >= 32
acc &= 0x1f
}
geometry_angular_enabled_flag가 1과 동일한 것은, 각도 코딩 모드가 활성화됨을 나타낸다. geometry_angular_enabled_flag가 0과 동일한 것은, 각도 코딩 모드가 활성화되지 않음을 나타낸다.
geom_slice_angular_origin_present_flag가 1과 동일한 것은, 각도 원점에 대한 슬라이스가 지오메트리 데이터 유닛에 존재함을 명시한다. geom_slice_angular_origin_present_flag가 0과 동일한 것은, 각도 원점이 지오메트리 데이터 유닛에 존재하지 않음을 명시한다. 존재하지 않을 때, geom_slice_angular_origin_present_flag는 0인 것으로 추론된다.
geom_angular_origin_bits_minus1 플러스 1은 신택스 엘리먼트들 geom_angular_origin_xyz[ k ]의 비트들의 길이이다.
geom_angular_origin_xyz [ k ]는 각도 코딩 모드의 프로세싱에 사용되는 원점의 (x, y, z) 좌표의 k번째 컴포넌트를 명시한다. 존재하지 않을 때, k = 0 .. 2인 geom_angular_origin_xyz[ k ]의 값은 0인 것으로 추론된다.
geom_angular_azimuth_scale_log2_minus11geom_angular_radius_scale_log2는, 직교 좌표들로의 컨버전 동안 구면 좌표계를 사용하여 코딩된 포지션들을 스케일링하는 데 사용되는 인자들을 명시한다.
geom_angular_azimuth_step_minus1 플러스 1은 방위각의 단위 변경을 명시한다. 각도 예측 트리 코딩에서 사용된 차동 예측 잔차들은 geom_angular_azimuth_step_minus1 플러스 1의 배수들로서 부분적으로 표현될 수 있다. geom_angular_azimuth_step_minus1의 값은 (1<< (geom_angular_azimuth_scale_log2_minus11 + 12)) 미만일 것이다.
number_lasers_minus1 플러스 1은 각도 코딩 모드에 대해 사용된 레이저들의 수를 명시한다.
i = 0 .. number_lasers_minus1인 laser_angle_initlaser_angle_diff[ i ]는 제1 및 제2 코딩된 축들에 의해 정의된 수평 평면에 대한 i번째 레이저의 고도각의 탄젠트를 명시한다.
i = 0 .. number_lasers_minus1인 어레이 LaserAngle[ i ]는 하기와 같이 도출된다:
LaserAngle[0] = laser_angle_init
if(number_lasers_minus1 > 0)
LaserAngle[1] = laser_angle_init + laser_angle_diff[1]
for (i = 2; i <= number_lasers_minus1; i++)
LaserAngle[i] = 2 × LaserAngle[i-1] - LaserAngle[i-2] + laser_angle_diff[i]
i = 1 .. number_lasers_minus1인 LaserAngle[ i ]의 값이 LaserAngle[ i - 1 ]이상일 것임이 비트스트림 부합의 요건이다.
i = 1 .. number_lasers_minus1인 laser_correction_initlaser_correction_diff[ i ]는, GeomAngularOrigin[ 2 ]에 대한 i번째 레이저 포지션의 제2 내부 축을 따른 보정을 명시한다.
i = 1 .. number_lasers_minus1인 laser_phi_per_turn_init_minus1laser_phi_per_turn_diff[ i ]은 각도 코딩 모드의 프로세싱에 사용되는 원점에 위치된 회전 감지 시스템의 i번째 레이저에 의해 생성된 샘플들의 수를 명시한다.
i = 1 .. number_lasers_minus1인 어레이들 LaserCorrection[ i ] 및 LaserPhiPerTurn[ i ]는 하기와 같이 도출된다:
LaserCorrection[0] = laser_correction_init
LaserPhiPerTurn[0] = laser_phi_per_turn_init_minus1 + 1
for (i = 1; i <= number_lasers_minus1; i++) {
LaserCorrection[i] = LaserCorrection[i-1] + laser_correction_diff[i]
LaserPhiPerTurn[i] = LaserPhiPerTurn[i-1] + laser_phi_per_turn_diff[i]
}
i = 0 .. number_lasers_minus1인 LaserPhiPerTurn[ i ]의 값이 0이 아닐 것임이 비트스트림 부합의 요건이다.
i = 0 .. number_lasers_minus1인 어레이들 DeltaPhi[ i ] 및 InvDeltaPhi[ i ]는 하기와 같이 도출된다:
for (i = 0; i <= number_lasers_minus1; i++) {
DeltaPhi[i] = 6588397 / LaserPhiPerTurn[i]
InvDeltaPhi[i] = (LaserPhiPerTurn[i] << 30) / 6588397
}
planar_buffer_disabled_flag가 1과 동일한 것은, 버퍼를 사용하여 가장 가까운 노드들을 추적하는 것이 평면 모드에서의 평면 포지션 및 평면 모드 플래그를 코딩하는 프로세스에서 사용되지 않는다는 것을 나타낸다. planar_buffer_disabled_flag가 0과 동일한 것은, 버퍼를 사용하여 가장 가까운 노드들을 추적하는 것이 사용되는 것을 나타낸다. 존재하지 않을 때, planar_buffer_disabled_flag는 !geometry_planar_enabled_flag인 것으로 추론된다.
테이블 2. 지오메트리 파라미터 세트 인덱스. 각도 모드 신택스 엘리먼트들은 황색으로 하이라이트된다.
평면 모드 및 직접 모드의 데이터 신택스는 각각 테이블 3 및 테이블 4에 포함된다.
테이블 3. 지오메트리 옥트리 모드 데이터 신택스
테이블 4. 직접 모드 데이터 신택스
8.2.4.1 노드에 대한 각도 적격성의 도출 프로세스
geometry_angular_enabled_flag가 0과 동일한 경우, angular_eligible는 0과 동일하도록 설정된다.
그렇지 않으면, 다음이 적용된다:
레이저들 사이의 최소 각도 거리를 명시하는 변수 deltaAngle는 하기와 같이 도출된다:
deltaAngle = 128 << 18
for(i=0; i<number_lasers_minus1; i++){
delta = LaserAngle[i + 1] - LaserAngle[i]
if (deltaAngle > delta)
deltaAngle = delta
}
마지막으로, angular_eligible는 하기와 같이 도출된다:
midNodeS = 1 << (Max(1, ChildNodeSizeLog2[0]) - 1)
midNodeT = 1 << (Max(1, ChildNodeSizeLog2[1]) - 1)
sLidar = Abs(((sNchild - GeomAngularOrigin[0] + midNodeS) << 8) - 128)
tLidar = Abs(((tNchild - GeomAngularOrigin[1] + midNodeT) << 8) - 128)
rL1 = (sLidar + tLidar) >> 1
deltaAngleR = deltaAngle × rL1
midNodeV = 1 << (Max(1, ChildNodeSizeLog2[2]) - 1)
if (number_lasers_minus1 > 0 && deltaAngleR <= (midNodeV << 26))
angular_eligible = 0
else
angular_eligible = 1
8.2.4.2 노드와 연관된 레이저 인덱스 laserIndex의 도출 프로세스
XXX 입력들/출력들
각도 적격성 angular_eligible이 0과 동일하면, laserIndex 인덱스는 미리설정된 값 UNKOWN_LASER로 설정된다.
그렇지 않고, 각도 적격성 angular_eligible가 1과 동일한 경우, 다음이 8.2.5.1에 설명된 프로세스의 계속으로서 적용된다.
첫 번째로, Lidar로부터 현재 노드의 방사상 거리의 역수 rInv가 하기와 같이 결정된다:
r2 = sLidar × sLidar + tLidar × tLidar
rInv = IntRecipSqrt(r2)
이어서, 각도 theta32가 하기와 같이 결정된다:
vLidar = ((vNchild - GeomAngularOrigin[2] + midNodeT) << 1) - 1
theta = vLidar × rInv
theta32 = theta >= 0 ? theta >> 15 : -((-theta) >> 15)
마지막으로, 각도 적격성 및 연관된 레이저는 부모 노드, Parent에 기초하여 하기와 같이 결정된다.
laserIndex = UNKOWN_LASER
if (!number_lasers_minus1)
laserIndex = 0
else if (laserIndex[Parent] == UNKOWN_LASER || deltaAngleR <= (midNodeV << (26 + 2))) {
for (i = 1; i < number_lasers_minus1; i++)
if (LaserAngle[i] > theta32)
break
if (theta32 - LaserAngle[i-1] <= LaserAngle[i] - theta32)
i--
laserIndex = LaserAngle[i]
}
8.2.4.3 평면 코딩 모드에 대한 콘텍스트들 contextAzimuthalS 및 contextAzimuthalT의 도출 프로세스
XXX 입력들/출력들
하기는 8.2.5.2에 기술된 프로세스의 계속으로서 적용된다.
첫 번째로, 각도 원점에 대한 노드 포지션으로부터 2개의 각도들이 결정됨
sPos = sNchild - GeomAngularOrigin[0] XXX
tPos = tNchild - GeomAngularOrigin[1]
phiNode = IntAtan2(tPos + midNodeT, sPos + midNodeS)
phiNode0 = IntAtan2(tPos, sPos)
두 번째로, 어레이 phiBuffer로부터 방위각 예측기가 획득됨
predPhi = phiBuffer[laserIndex]
if (predPhi == 0x80000000)
predPhi = phiNode
2개의 방위각 콘텍스트들은 하기와 같이 초기화됨
contextAzimuthalS = -1
contextAzimuthalT = -1
이어서, 예측기 predPhi가 0x80000000과 동일하지 않은 경우, 하기는 2개의 방위각 콘텍스트들을 정제하는 데 적용됨
Nshift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex] + 536870912) >> 30
predPhi -= DeltaPhi[laserIndex] * Nshift
angleL = phiNode0 - predPhi
angleR = phiNode - predPhi
contextAnglePhi = (angleL >= 0 && angleR >= 0) || (angleL < 0 && angleR < 0) ? 2 : 0
angleL = Abs(angleL)
angleR = Abs(angleR)
if (angleL > angleR) {
contextAnglePhi++
int temp = angleL
angleL = angleR
angleR = temp
}
if (angleR > (angleL << 2))
contextAnglePhi += 4
if (Abs(sPos) <= Abs(tPos))
contextAzimuthalS = contextAnglePhi
else
contextAzimuthalT = contextAnglePhi
8.2.4.4 평면 코딩 모드에 대한 콘텍스트 contextAngular의 도출 프로세스
XXX 입력들 / 출력들
레이저 인덱스 laserIndex가 UNKOWN_LASER와 동일하면, contextAngular는 미리설정된 값 UNKOWN_CONTEXT로 설정된다. 그렇지 않고, 레이저 인덱스 laserIndex가 UNKNOWN_LASER와 동일하지 않은 경우, 다음이 8.2.5.2에 설명된 프로세스의 계속으로서 적용된다.
첫 번째로, 하부 평면 및 상부 평면에 대한 2개의 각도 차이 thetaLaserDeltaBot 및 thetaLaserDeltaTop이 결정된다.
thetaLaserDelta = LaserAngle[laserIndex] - theta32
Hr = LaserCorrection[laserIndex] × rInv;
thetaLaserDelta += Hr >= 0 ? -(Hr >> 17) : ((-Hr) >> 17)
vShift = (rInv << ChildNodeSizeLog2[2]) >> 20 XXX
thetaLaserDeltaTop = thetaLaserDelta - vShift
thetaLaserDeltaBot = thetaLaserDelta + vShift
이어서, 각도 콘텍스트가 2개의 각도 차이들로부터 추론된다.
contextAngular = thetaLaserDelta < 0
if (thetaLaserDeltaTop >= 0 || thetaLaserDeltaBot < 0)
contextAngular += 2
트리 내 양자화(in-tree quantization) 및 각도 모드가 공동으로 인에이블될 때, 유효 노드 크기들, 포인트 포지션들, 및 오프셋들 중 하나 이상의 스케일링된 버전이 평면 모드에 대한 콘텍스트 도출에서 사용되어, 포지션들/오프셋들/노드 크기들 및 각도 원점이 동일한 스케일에서 사용된다는 것을 보장할 수 있고; 예컨대, 이것은 레이저 인덱스의 적절한 도출에 그리고 콘텍스트 도출에 유용할 수 있다. 일부 경우들에서, 스케일링된 값들을 사용하지 않는 것은 레이저 인덱스들 또는 콘텍스트들의 부적절한 도출을 초래할 수 있다.
하기는 추론된 방향 코딩 모드(IDCM)를 설명한다. IDCM 모드와 관련된 신택스들은, 하기와 같이 [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에 정의되어 있다:
inferred_direct_coding_mode가 0 초과인 것은, direct_mode_flag가 지오메트리 노드 신택스에 존재할 수 있음을 나타낸다. inferred_direct_coding_mode가 0과 동일한 것은, direct_mode_flag가 지오메트리 노드 신택스에 존재하지 않음을 나타낸다.
joint_2point_idcm_enabled_flag가 1과 동일한 것은, 2개의 포인트들의 공동 코딩이 직접 코딩 모드에서 활성화됨을 나타낸다. joint_2point_idcm_enabled_flag가 0과 동일한 것은, 2개의 포인트들의 공동 코딩이 활성화되지 않음을 나타낸다.
geom_idcm_rate_minus1은, 노드들이 직접 코딩에 적격일 수 있는 레이트를 명시한다. 존재하지 않을 경우, geom_idcm_rate_minus1은 31인 것으로 추론된다.
어레이 IdcmEnableMask는 하기와 같이 도출된다:
for (i = 0, acc = 0; i < 32; i++) {
acc += geom_idcm_rate_minus1 + 1
IdcmEnableMask[i] = acc >= 32
acc &= 0x1f
}
direct_point_cnt_eq2_flag가 1과 동일한 것은, 현재 노드가 2개의 코딩된 포인트들의 잔차들을 표현하는 2개의 point_offset 값들을 포함함을 명시한다. direct_point_cnt_eq2_flag가 0과 동일한 것은, 현재 노드가 0회 이상 중복된 단일 포인트 포지션의 잔차들을 표현하는 단일 point_offset 값을 포함함을 명시한다.
dup_point_cnt_gt0_flag, dup_point_cnt_gt1_flag, 및 dup_point_cnt_minus2는 함께, 재구성된 포인트 클라우드 내의 동일한 포지션을 갖는 다수의 포인트들을 표현하기 위해 단일 point_offset 값이 반복되는 횟수를 명시한다. 존재하지 않는 dup_point_cnt_gt0_flag, dup_point_cnt_gt1_flag, 또는 dup_point_cnt_minus2 중 어느 하나가 0인 것으로 추론된다.
포인트가 반복되는 횟수를 표현하는 변수 DirectDupPointCnt는 하기와 같이 도출된다:
DirectDupPointCnt =
dup_point_cnt_gt0_flag + dup_point_cnt_gt1_flag + dup_point_cnt_minus2
i = 0 .. NumDirectPoints - 1 및 k = 0 .. 2에 대해 엘리먼트들 PointOffset[ i ][ k ]를 갖는, 어레이 PointOffset은 현재 노드의 전체 해상도 포지션에 대한 i번째 포인트의 k번째 치수의 포지션을 표현한다. PointOffset[ i ][ k ]는 EffectiveNodeSizeLog2[ k ] 비트들로 이루어지고, 하기와 같이 도출된다.
변수 NodeSizeLog2Rem[ k ]는 i 상에서 독립적으로 PointOffset[ i ][ k ]에 대해 도출되도록 남아 있는 비트들의 수를 나타낸다. NodeSizeLog2Rem 및 어레이 PointOffset의 초기화는, i의 각각의 값에 대해, 하기에 의해 수행되고,
NodeSizeLog2Rem[k] = EffectiveNodeSizeLog2[k]
for (k = 0; k < 3; k++)
PointOffset[i][k] = 0
is_planar_flag[ k ]가 1과 동일하면, PointOffset[ i ][ k ]의 최상위 비트는 plane_position[ k ]로부터 도출된다:
for (k = 0; k < 3; k++)
if (is_planar_flag[k]) {
for (i = 0; i < NumDirectPoints; i++)
PointOffset[i][k] = plane_position[k]
NodeSizeLog2Rem[k]--
}
same_bit[ k ][ j ]가 1과 동일한 것은, PointOffset[ 0 ][ k ] 및 PointOffset[ 1 ][ k ]의 각자의 j번째 비트들이 동일함을 명시한다. same_bit[ k ][ j ]가 0과 동일한 것은, 이들 2개의 j번째 비트들이 동일하지 않음을 명시한다.
value_bit[ k ][ j ]는 PointOffset[ 0 ][ k ]의 j번째 비트의 값을 나타낸다. value_bit[ k ][ j ]가 존재하지 않을 때, 그의 값은 0인 것으로 추론된다.
변수 EligTwoPoints[ k ]가 1과 동일한 것은, 노드에 의해 포함된 포인트들의 k번째 컴포넌트가 2개의 포인트들의 공동 코딩에 적격임을 나타낸다. 0과 동일한 EligTwoPoints[ k ]는, 노드에 의해 포함된 포인트들의 k번째 컴포넌트가 2개의 포인트들의 공동 코딩에 적격하지 않음을 나타낸다.
변수 samePrecComp[ k ]가 1과 동일한 것은, 노드에 의해 포함된 2개의 포인트들의 컴포넌트들 0 내지 k-1이 동일함을 나타낸다. 그렇지 않고, samePrecComp[ k ]가 0과 동일한 것은, 2개의 포인트들의 컴포넌트들 0 내지 k-1 중 어느 하나가 상이함을 나타낸다. samePrecComp[ k ]는 1로 초기화된다.
for (k = 0; k < 3; k++)
samePrecComp[k] = 1
2개의 포인트들의 공동 코딩이 활성화되는 경우, 2개의 포인트들이 노드에 존재하면 그리고 k번째 컴포넌트가 공동 코딩에 적격이면, 이러한 컴포넌트에 대해 공동 2-포인트 코딩이 수행된다.
if (joint_2point_idcm_enabled_flag && direct_point_cnt_eq2_flag)
for (k = 0; k < 3; k++){
if (EligTwoPoints[k]){
for (j = NodeSizeLog2Rem[k]-1; j>=0; j--) {
PointOffset[0][k] << 1
PointOffset[1][k] << 1
PointOffset[0][k] += bit_value[k][j]
PointOffset[1][k] += !same_bit[k][j] ^ bit_value[k][j]
NodeSizeLog2Rem[k]--
if (!same_bit[k][j]){
for (k2 = k + 1; k2 < 3; k2++)
samePrecComp[k2] = 0
break
}
}
}
}
point_offset[ i ][ k ][ j ]는, 현재 노드의 원점에 대한 현재 노드의 i번째 포인트들의 각자의 s, t, 및 v 좌표들의 k번째 컴포넌트의 j번째 비트이다.
각각의 포인트 오프셋의 NodeSizeLog2Rem[ k ]의 나머지 비트들은 하기와 같이 설정된다:
for (k = 0; k < 3; k++)
for (j = NodeSizeLog2Rem[k] - 1; j > 0; j--)
PointOffset[i][k] = (PointOffset[i][k] << 1) + point_offset[i][k][j]
laser_residual_abs_gt0_flag[ ptIdx ], laser_residual_sign[ ptIdx ], laser_residual_abs_gt1_flag[ ptIdx ], laser_residual_abs_gt2_flag[ ptIdx ], 및 laser_residual_abs_minus3[ ptIdx ]는 함께, geometry_angular_enabled_flag가 1과 동일할 때 추론된 직접 코딩 모드를 사용하는 현재 노드의 ptIdx번째 포인트와 연관된 잔차 레이저 인덱스 값을 명시한다. 존재하지 않는 laser_residual_abs_gt0_flag[ ptIdx ], laser_residual_sign[ ptIdx ], laser_residual_abs_gt1_flag[ ptIdx ], laser_residual_abs_gt2_flag[ ptIdx ], 및 laser_residual_minus3[ ptIdx ] 중 임의의 것이 0인 것으로 추론된다.
다음은 하기와 같이 [section 10.8 of G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에 정의된 바와 같은 IDCM 모드의 파싱 프로세스를 설명한다:
10.8 추론된 직접 코딩 모드 파싱 프로세스
10.8.1 일반적인 프로세스
포인트 인덱스 i, 컴포넌트 인덱스 k, 및 비트 인덱스 j에 대한 신택스 엘리먼트들 same_bit[ k ][ j ], value_bit[ k ][ j ], 및 point_offset[ i ][ k ][ j ]의 파싱 및 역 이진화는 하위조항들 9.8.2 내지 9.8.5에서 설명된다.
프로세스의 출력은, direct_point_cnt_eq2_flag 값이 0인 경우 현재 노드에 속하는 하나의 포인트의 오프셋이거나, 또는 direct_point_cnt_eq2_flag 값이 1인 경우 현재 노드에 속하는 2개의 포인트들의 오프셋이다. 이들 오프셋들은, 존재할 때 제1 포인트에 대해 PointOffset[ 0 ][ k ]이고 제2 포인트에 대해 PointOffset[ 1 ][ k ]이다.
각각의 오프셋 PointOffset[ i ][ k ]는, 각각의 컴포넌트 k 및 각각의 포인트 i에 대해 최상위 비트로부터 최하위 비트로 디코딩되는 EffectiveNodeSizeLog2[ k ] 비트들로 이루어진다. 이러한 목적을 위해, IDCM 프로세스는 하기의 변수를 사용한다:
- 포인트 인덱스 상에서 독립적으로 컴포넌트 k의 오프셋에 대해 디코딩되도록 남아 있는 비트들의 수 NodeSizeLog2Rem[ k ]
- i번째 포인트의 k번째 컴포넌트의 부분 디코딩 partialOffset[ i ][ k ]
프로세스의 임의의 단계에서, partialOffset [ i ][ k ]의 값은 PointOffset[ i ][ k ]의 EffectiveNodeSizeLog2[ k ] - NodeSizeLog2Rem[ k ] 최상위 비트들을 나타낸다. 프로세스 동안, partialOffset 비트들은 하나씩 결정되는 한편, NodeSizeLog2Rem[ k ]는 각각의 결정된 비트에 대해 하나씩 감소하여, NodeSizeLog2Rem[ k ]가 0과 동일하고, partialOffset [ i ][ k ]가 PointOffset[ i ][ k ]와 동일한 최종 상태에 도달한다.
IDCM 프로세스는 하기 순서 및 조건들 하에서 하위조항들 9.8.2 내지 9.8.5를 통해 진행한다
- 프로세스 변수들의 초기화 및 평면 모드에 의한 포인트 오프셋의 최상위 비트의 추론에 대한 하위조항 9.8.2
- 이어서, 2개의 포인트들의 공동 코딩이 활성화되고(joint_2point_idcm_enabled_flag가 1과 동일함), 현재 노드에 2개의 포인트들이 존재하는 경우(direct_point_target eq2_flag가 1과 동일함), 하위조항 9.8.3
- 이어서, 각도 모드가 활성화되는(geometry_angular_enabled_flag가 1과 동일함) 경우 하위조항 9.8.4, 그렇지 않은 경우 (geometry_angular_enabled_flag가 0과 동일함) 하위 조항
10.8.2 초기화 및 평면 추론
나머지 비트들의 수 및 부분 오프셋은, 모든 컴포넌트 k 및 포인트 i에 대해 초기화되고,
for (k = 0; k < 3; k++){
NodeSizeLog2Rem[k] = EffectiveNodeSizeLog2[k]
for (i = 0; i < direct_point_cnt_eq2_flag; i++)
partialOffset[i][k] = 0
}
포인트 오프셋들의 최상위 비트는, 이용가능한 경우(is_planar_flag[ k ]가 1과 동일함), 다음과 같이, 평면 모드에 의해 추론됨
for (k = 0; k < 3; k++)
if (NodeSizeLog2Rem[k]>0 && is_planar_flag[k]) {
for (i = 0; i < direct_point_cnt_eq2_flag; i++)
partialOffset [i][k] = plane_position[k]
NodeSizeLog2Rem[k]--
}
각도 코딩 모드가 활성화되는 경우, S 또는 T 컴포넌트 중 어느 것이 바이패스 코딩되도록 허용되는지를 나타내는 변수 byPassSorT는 각도 코딩 모드의 프로세싱에 사용되는 좌표들에서 현재 노드의 수평 포지션을 사용하여 결정됨
if (geometry_angular_enabled_flag){
posNode2LidarS = (sN << EffectiveNodeSizeLog2[0]) - GeomAngularOrigin[0]
posNode2LidarT = (tN << EffectiveNodeSizeLog2[1]) - GeomAngularOrigin[1]
byPassSorT = Abs(posNode2LidarS) <= Abs(posNode2LidarT)
}
10.8.3 2개의 포인트들의 오프셋들의 공동 디코딩
이러한 섹션에서의 프로세스는, joint_2point_idcm_enabled_flag가 1과 동일하고 direct_point_cnt_eq2_flag가 1과 동일할 때에만 적용된다.
첫 번째로, 2개의 포인트들의 k번째 컴포넌트가 공동 코딩에 적격인지를 나타내는 EligTwoPoints[ k ]의 값들이 다음에 의해 초기화됨
for (k = 0; k < 3; k++)
EligTwoPoints[k] = !geometry_angular_enabled_flag
이어서, 각도 코딩 모드가 활성화되는 경우, 적격성은 변수 byPassSorT를 사용하여 추가로 결정됨
if (geometry_angular_enabled_flag){
EligTwoPoints[0] = !byPassSorT
EligTwoPoints[1] = byPassSorT
}
노드에 의해 포함된 2개의 포인트들의 컴포넌트들 0 내지 k-1이 동일함을 나타내는, 어레이 samePrecComp[ k ]는 다음으로 초기화됨
for (k = 0; k < 3; k++)
samePrecComp[k] = 1
이어서, 공동 디코딩 프로세스가 증가하는 순서로 적격한 컴포넌트들에 적용됨
for (k = 0; k < 3; k++){
if (NodeSizeLog2Rem[k]>=1 && EligTwoPoints[k]){
idcmIdxJoint[k][NodeSizeLog2Rem[k]-1] = 0
same_bit = 1
for (j = NodeSizeLog2Rem[k]-1; j>=0; j--) {
partialOffset[0][k] <<= 1
partialOffset[1][k] <<= 1
NodeSizeLog2Rem[k]--
sameBit = same_bit[k][j] // same_bit[k][j] decoded using context idcmIdxJoint[k][j]
idcmIdxJoint[k][j-1] = Min(4, idcmIdxJoint[k][j] + 1)
bit = 0;
if (!(samePrecComp[k] && !sameBit))
bit = value_bit[k][j] // value_bit[k][j] decoded using bypass
partialOffset[0][k] |= bit;
partialOffset[1][k] |= sameBit ? bit : !bit;
if (!sameBit) {
for (k2 = k+1; k2 < 3; k2++)
samePrecComp[k2] = 0
break
}
}
}
}
10.8.4 포인트 오프셋들의 각도 및 방위각 디코딩
10.8.4.1 일반적
이러한 섹션에서의 프로세스는, geometry_angular_enabled_flag가 1과 동일할 때에만 적용된다. 이러한 프로세스는 하기의 하위 섹션들에 기술된 하위 프로세스들을 적용한다. 하위섹션 9.8.4.2는 한 번 적용되고, 이어서 하위섹션 9.8.4.3 내지 9.8.4.6이 현재 노드에 속하는 각각의 포인트 i에 적용된다.
10.8.4.2 현재 노드와 연관된 레이저 인덱스의 추정
현재 노드에 속하는 제1 포인트의 위치의 (평면 추론 및 공동 디코딩 후의) 최상의 지식에 기초하여, 포인트들을 프로빙한 레이저의 인덱스의 추정 laserIndexEstimate.
첫 번째로, 제1 포인트의 최상의 알려진 3D bestKnownPos 위치는 다음에 의해 획득됨
bestKnownPos[0] = sN << EffectiveNodeSizeLog2[0]
bestKnownPos[1] = tN << EffectiveNodeSizeLog2[1]
bestKnownPos[2] = vN << EffectiveNodeSizeLog2[2]
bestKnownPos[0] += partialOffset[0][0] << EffectiveNodeSizeLog2[0] - NodeSizeLog2Rem[0]
bestKnownPos[1] += partialOffset[0][1] << EffectiveNodeSizeLog2[1] - NodeSizeLog2Rem[1]
bestKnownPos[2] += partialOffset[0][2] << EffectiveNodeSizeLog2[2] - NodeSizeLog2Rem[2]
두 번째로, 각도 코딩 모드의 프로세싱에 사용되는 좌표들에서 최상의 알려진 위치의 포지션 bestKnownPos2Lidar[ 0 ]는 다음에 의해 추론됨
for (k = 0; k < 3; k++) {
bestKnownPos2Lidar[k] = posNode2Lidar[k] - GeomAngularOrigin[k]
if (NodeSizeLog2Rem[k])
bestKnownPos2Lidar[k] += 1 << (nodeSizeLog2Rem[k] - 1)
}
세 번째로, 이러한 포지션과 연관된 각도 값 bestKnownAngle은 다음에 의해 결정됨
sPoint = bestKnownPos2Lidar[0] << 8
tPoint = bestKnownPos2Lidar[1] << 8
r2 = sPoint × sPoint + tPoint × tPoint
rInvPoint = IntRecipSqrt(r2)
bestKnownAngle = bestKnownPos2Lidar [2] * rInvPoint >> 14
레이저 인덱스 추정치 laserIndexEstimate는 하기와 같이 bestKnownAngle에 대해 가장 가까운 각도를 갖는 레이저의 인덱스로서 획득됨
for (n = 1; n <= number_lasers_minus1; n++)
if (LaserAngle[n] > bestKnownAngle)
break
if (bestKnownAngle - LaserAngle[n-1] <= LaserAngle[n] - bestKnownAngle)
n--
laserIndexEstimate = number_lasers_minus1 ? n : 0
10.8.4.3 point_offset의 제1 컴포넌트 S 또는 T의 바이패스 디코딩
현재 노드에 속하는 i번째 포인트의 컴포넌트 bypassSorT(그의 값은 S에 대해 0이고, T에 대해 1임)는 바이패스 디코딩된다.
for (j = NodeSizeLog2Rem[byassSorT] - 1; j > 0; j--){
partialOffset[i][bypassSorT] <<= 1
partialOffset[i][bypassSorT] |= point_offset[i][bypassSorT][j]
NodeSizeLog2Rem[bypassSorT]--
}
이러한 하위 프로세스의 종료 시에, NodeSizeLog2Rem[ bypassSorT ]는 0과 동일하다. 포인트 오프셋의 bypassSorT번째 컴포넌트에 대해 디코딩될 비트들이 더 이상 존재하지 않고, partialOffset[ i ][ bypassSorT ]는 완전한 포인트 오프셋 PointOffset[ i ][ bypassSorT ]과 동일하다.
10.8.4.4 포인트와 연관된 레이저 인덱스의 결정
현재 노드에 속하는 i번째 포인트와 연관된 레이저 인덱스 잔차 laserIndexResidual[ i ]가 디코딩된 값들로부터 추론됨
laserIndexResidual[i] =
(1 - 2 × laser_residual_sign_flag)
× (laser_residual_abs_gt0_flag + laser_residual_abs_gt1_flag
+ laser_residual_abs_gt2_flag + laser_residual_abs_minus3_flag)
이어서, 현재 노드에 속하는 i번째 포인트와 연관된 레이저 인덱스 laserIndex[ i ]가 합계에 의해 획득됨
laserIndex[i] = laserIndexEstimate + laserIndexResidual[i]
비트스트림 적합성의 요건은, laserIndex[ i ]가 0 .. number_lasers_minus1의 범위에 있어야 한다는 것이다.
10.8.4.5 포인트 오프셋의 제2 컴포넌트 S 또는 T의 방위각 디코딩
현재 노드에 속하는 i번째 포인트들의 컴포넌트 1-bypassSorT(그의 값은 S에 대해 0이고, T에 대해 1임)는 방위각 디코딩 모드를 사용하여 디코딩된다.
이미 디코딩된 비트들을 부분 오프셋들에서 사용하면, 각도 코딩 모드의 프로세싱에 사용되는 좌표들에서 포인트 i의 최상의 알려진 수평 포지션이 다음에 의해 계산됨
posPoint2LidarS[i] = (sN << EffectiveNodeSizeLog2[0]) - GeomAngularOrigin[0]
posPoint2LidarT[i] = (tN << EffectiveNodeSizeLog2[1]) - GeomAngularOrigin[1]
posPoint2LidarS[i] += partialOffset[i][0] << NodeSizeLog2Rem[0]
posPoint2LidarT[i] += partialOffset[i][1] << NodeSizeLog2Rem[1]
이어서, 방위각 예측기 predPhi의 초기 값이 버퍼 phiBuffer로부터 결정된다.
phiNode = IntAtan2(posPoint2LidarT[i], posPoint2LidarS[i])
predph = phiBuffer[laserIndex[i]]
if (predPhi == 0x80000000)
predPhi = phiNode
nShift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex[i]] + 536870912) >> 30
predPhi -= DeltaPhi[laserIndex[i]] * nShift
포인트 부분 오프셋 partialOffset[ i ][ 1-bypassSorT ]의 나머지는 컴포넌트 1-bypassSorT의 부분 오프셋에 대해 디코딩되도록 나머지 비트들 상에서 루프 j에서 반복적으로 디코딩된다. 루프에서, 방위각 콘텍스트들 idcmIdxAzimuthal[ i ][ j ]가 결정되고, 신택스 엘리먼트들 point_offset[ i ][ 1-bypassSorT ][ j ]를 디코딩하는 데 사용된다. 방위각 디코딩에 수반되는 컴포넌트에 따라 posPoint2LidarS[ i ] 또는 posPoint2Lidart[ i ] 중 어느 하나의 포인트의 포지션이 또한 반복적으로 업데이트된다.
mask = NodeSizeLog2Rem[1-bypassSorT] > 0
? 1 << NodeSizeLog2Rem[1-bypassSorT] - 1)
: 0
for (j = NodeSizeLog2Rem[1-bypassSorT]-1; mask; j--, mask >>= 1){
phiR = bypassSorT
? IntAtan2(posPoint2LidarT[i], posPoint2LidarS[i] + mask)
: IntAtan2(posPoint2LidarT[i] + mask, posPoint2LidarS[i])
phiL = phiNode
angleL = phiL - predPhi
angleR = phiR - predPhi
contextAnglePhi = (angleL >= 0 && angleR >= 0) || (angleL < 0 && angleR < 0) ? 2 : 0
angleL = Abs(angleL)
angleR = Abs(angleR)
if (angleL > angleR) {
contextAnglePhi++
int temp = angleL
angleL = angleR
angleR = temp
}
if (angleR > (angleL << 1))
contextAnglePhi += 4
idcmIdxAzimuthal[i][j] = contextAnglePhi
// decode the bin point_offset[i][1-bypassSorT][j] using idcmIdxAzimuthal[i][j]
partialOffset[i][1-bypassSorT] <<= 1
partialOffset[i][1-bypassSorT] |= point_offset[i][1-bypassSorT][j]
if (point_offset[i][1-bypassSorT][j]) {
if (bypassSorT)
posPoint2LidarS[i] += mask
else
posPoint2LidarT[i] += mask
phiNode = phiR
predphi = phiBuffer[laserIndex[i]]
if (predPhi == 0x80000000)
predPhi = phiNode
nShift = ((predPhi - phiNode) * InvDeltaPhi[laserIndex[i]] + 536870912) >> 30
predPhi -= DeltaPhi[laserIndex[i]] * nShift
}
}
The buffer phiBuffer[ ] is then updated
phiBuffer[laserIndex[i]] = phiNode
10.8.4.6 포인트 오프셋의 컴포넌트 V의 각도 디코딩
현재 노드에 속하는 i번째 포인트들의 마지막 컴포넌트 V는 각도 디코딩 모드를 사용하여 디코딩된다.
수평 포지션 포인트들 posPoint2LidarS[ i ] 및 posPoint2LidarT[ i ]는 방위각 디코딩으로부터 알려져 있고, 역 수평 반경 거리 rInv는 다음에 의해 디코딩됨
sLidar = (posPoint2LidarS[i] << 8) - 128
tLidar = (posPoint2LidarT[i] << 8) - 128
r2 = sLidar × sLidar + tLidar × tLidar
rInv = IntRecipSqrt(r2)
이미 디코딩된 비트들을 부분 오프셋들에서 사용하면, 각도 코딩 모드의 프로세싱에 사용되는 좌표들에서 포인트 i의 최상의 알려진 수직 포지션이 다음에 의해 계산됨
posPoint2LidarV[i] = (vN << EffectiveNodeSizeLog2[2]) - GeomAngularOrigin[2]
posPoint2LidarV[i] += partialOffset[i][2] << NodeSizeLog2Rem[2]
포인트와 연관된 레이저의 보정된 레이저 각도 ThetaLaser는 다음과 같음
Hr = LaserCorrection[laserIndex[i]] × rInv
ThetaLaser = LaserAngle[laserIndex[i]] + (Hr >= 0 ? -(Hr >> 17) : ((-Hr) >> 17))
포인트 부분 오프셋 partialOffset[ i ][ 2]의 나머지는 컴포넌트 V의 부분 오프셋에 대해 디코딩되도록 나머지 비트들 상에서 루프 j에서 반복적으로 디코딩된다. 루프에서, 각도 콘텍스트들 idcmIdxAngular[ i ][ j ]가 결정되고, 신택스 엘리먼트들 point_offset[ i ][ 2 ][ j ]를 디코딩하는 데 사용된다. 포인트의 포지션 posPoint2LidarV[ i ]는 또한 반복적으로 업데이트된다.
mask = NodeSizeLog2Rem[2] > 0 ? 1 << NodeSizeLog2Rem[2] - 1) : 0
halfInterval = (rInv << NodeSizeLog2Rem [2]) >> 18
if (mask)
for (j = NodeSizeLog2Rem[2]-1; j>=0; j--, mask >>= 1, halfInterval >>= 1){
vLidar = ((posPoint2LidarV[i] + mask) << 1) - 1
theta = vLidar × rInv
theta32 = theta >= 0 ? theta >> 15 : -((-theta) >> 15)
thetaLaserDeltaVirtualInterval = ThetaLaser - theta32
deltaVirtualIntervalTop = thetaLaserDeltaVirtualInterval - halfInterval
deltaVirtualIntervalBot = thetaLaserDeltaVirtualInterval + halfInterval
idcmIdxAngular[i][j] = thetaLaserDeltaVirtualInterval < 0
if (deltaVirtualIntervalTop >= 0)
idcmIdxAngular[i][j] += 2
else if (deltaVirtualIntervalBot < 0)
idcmIdxAngular[i][j] += 2
// decode the bin point_offset[i][2][j] using idcmIdxAngular [i][j]
partialOffset[i][2] <<= 1
partialOffset[i][2] |= point_offset[i][2][j]
if (point_offset[i][2][j])
posPoint2LidarV[i] += mask
}
10.8.5 포인트 오프셋들의 모든 컴포넌트들의 바이패스 디코딩
이러한 섹션에서의 프로세스는, geometry_angular_enabled_flag가 0과 동일할 때에만 적용된다.
이러한 프로세스에서, 포인트 오프셋들의 나머지 비트들은 point_offset[ i ][ k ][ j ]의 바이패스 디코딩에 의해 결정된다. 각각의 포인트 인덱스 i 및 각각의 컴포넌트 k에 대해 다음과 같이 수행됨
for (i = 0; i < direct_point_cnt_eq2_flag; i++)
for (k = 0; k < 3; k++)
for (j = NodeSizeLog2Rem[k] - 1; j > 0; j--){
partialOffset[i][k] <<= 1
partialOffset[i][k] |= point_offset[i][k][j]
NodeSizeLog2Rem[k]--
}
이러한 프로세스의 종료 시에, NodeSizeLog2Rem[ k ]는 모든 k에 대해 0과 동일하다. 포인트 오프셋에 대해 디코딩될 비트들이 더 이상 존재하지 않고, partialOffset[ i ][ k ]는 완전한 포인트 오프셋 PointOffset[ i ][ k ]과 동일하다.
트리 내 양자화, 각도 모드 및 IDCM이 공동으로 인에이블될 때, 유효 노드 크기들, 포인트 포지션들, 및 오프셋들 중 하나 이상의 스케일링된 버전이 IDCM 디코딩 프로세스에서 사용되어, 포지션들/오프셋들/노드 크기들 및 각도 원점이 동일한 스케일에서 사용된다는 것을 보장할 수 있고; 예컨대, 이것은 레이저 인덱스의 적절한 도출에 그리고 콘텍스트 도출에 유용할 수 있다. 스케일링된 값들을 사용하지 않는 것은 레이저 인덱스들 또는 콘텍스트들의 부적절한 도출을 초래할 수 있다.
하기는 옥트리 인코딩 및 디코딩을 설명한다. 노드에 대한 옥트리 인코딩의 개요가 도 4에 제시되어 있는 한편, 대응하는 디코딩 프로세스의 개요는 도 5에 제시되어 있다. 인코더(예컨대, G-PCC 인코더(200))에서, 노드의 점유도는 현재 노드의 각각의 자식 노드 내의 포인트들의 수에 기초하여 획득된다(400). 이어서, 노드 크기, 평면 버퍼, 및 평면 레이트에 기초하여 각각의 축에 대해 평면 적격성이 도출된다(402). 축이 평면 적격인 경우(404의 예), 점유도를 사용하여 평면 모드 및 평면 포지션이 획득된다(406). 이어서, IDCM 적격성이 도출되거나, 또는 축이 평면 적격하지 않은 경우(404의 아니오), IDCM 적격성이 도출된다(408). 노드가 IDCM 적격성인 경우(408의 예), IDCM 노드가 시그널링될 수 있다(410). 노드가 IDCM 적격하지 않거나 또는 노드가 IDCM이 아닌 경우(408의 아니오), 콘텍스트 기반 코딩을 사용하여 점유도가 인코딩된다(416). 이어서, 노드는 노드 버퍼에 추가될 자식 노드들로 분할되고, 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(418). IDCM이 적용되어야 하는 경우, 결정이 이루어질 수 있다(412). IDCM이 적용되지 않으면(412의 아니오), 콘텍스트 기반 코딩을 사용하여 점유도가 인코딩된다(416). IDCM 노드의 경우(412의 예), 포인트들의 수 및 복제 포인트들의 수가 인코딩될 것이고, 평면 정보를 활용하여 노드 내의 포인트들의 포지션이 인코딩될 것이다(414). IDCM 노드는 추가로 분할되지 않고, 인코딩 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(418). 상기 프로세스는, 노드 버퍼가 비어 있을 때까지 재귀적으로 수행된다.
도 5에 예시된 바와 같이, 디코더(예컨대, G-PCC 디코더(300))는 도 4에 예시된 예시적인 기법들의 역을 수행할 수 있다. 예를 들어, 노드 크기, 평면 버퍼, 및 평면 레이트에 기초하여 각각의 축에 대해 평면 적격성이 도출된다(500). 축이 평면 적격인 경우(502의 예), 점유도를 사용하여 평면 모드 및 평면 포지션이 디코딩된다(504). 이어서, IDCM 적격성이 도출되거나, 또는 축이 평면 적격하지 않은 경우(404의 아니오), IDCM 적격성이 도출된다(506). 노드가 IDCM 적격성인 경우(506의 예), IDCM 노드가 디코딩될 수 있다(예컨대, 파싱됨)(508). 노드가 IDCM 적격하지 않거나 또는 노드가 IDCM이 아닌 경우(408의 아니오), 콘텍스트 기반 코딩을 사용하여 점유도가 디코딩된다(예컨대, 파싱됨)(514). 이어서, 노드는 노드 버퍼에 추가될 자식 노드들로 분할되고, 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(516). IDCM이 적용되어야 하는 경우, 결정이 이루어질 수 있다(510). IDCM이 적용되지 않으면(510의 아니오), 콘텍스트 기반 코딩을 사용하여 점유도가 디코딩된다(514). IDCM 노드의 경우(510의 예), 포인트들의 수 및 복제 포인트들의 수가 디코딩될 것이고, 평면 정보를 활용하여 노드 내의 포인트들의 포지션이 디코딩될 것이다(512). IDCM 노드는 추가로 분할되지 않고, 디코딩 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(516). 상기 프로세스는, 노드 버퍼가 비어 있을 때까지 재귀적으로 수행된다.
하기는 G-PCC 코딩 기법들에 존재할 수 있는 일부 이슈들을 설명한다. 본 개시내용은 그러한 이슈들을 해결할 수 있는 예시적인 기법들을 설명하지만; 기법들은 그러한 이슈들을 해결하는 것에 제한되는 것으로 간주되지 않아야 한다. 예를 들어, 예시적인 기법들은 평면 정보의 시그널링을 위해 오버헤드를 감소시킬 수 있다.
예를 들어, 하나의 포인트만을 갖는 노드에 대한 평면 모드 코딩 리던던시가 존재할 수 있다. 도 4 및 도 5에서와 같이, 옥트리 인코딩 및 디코딩으로 설명된 바와 같이, 3개의 축들에서의 노드의 평면 정보는, 노드 내의 포인트들의 수 및 포지션을 포함하는 IDCM 정보의 시그널링 전에 인코딩된다. 하나의 포인트만을 갖는 노드에 대해, 평면 모드는 모든 3개의 축들에 대해 참이라는 것에 유의해야 한다. 따라서, 하나의 포인트 수와 함께 그러한 노드들에 대한 평면 모드의 시그널링은 중복될 수 있다.
다른 예로서, 평면의 시그널링은, 몇 개의 포인트들만을 갖는 노드들에 대해서는 효율적이지 않을 수 있다. 많은 포인트들을 갖는 노드의 경우, 평면 정보는 노드 내의 포인트 포지션의 시그널링 비용을 감소시키는 데 도움이 될 것이다. 예를 들어, 노드가 일정 축에서 평면인 경우, 그것은 평면 방향으로 각각의 포인트의 포지션을 시그널링하기 위해 1 비트를 절약할 것이다. 그러나, 시그널링 폐쇄(signaling close)의 감소는 몇 개의 포인트들만을 갖는 노드에 대해 참이 아닐 수 있는데, 이는 그 노드가 일정 노드에 대한 평면 포지션 및 평면 모드에 대해 2개의 비트들을 시그널링할 필요가 있기 때문이다. 일부 경우들에서, 평면에 의해 저장될 수 있는 비트를 시그널링하기 위한 비용은, IDCM에 대해, 그러한 비트의 시그널링이 공동 포지션 코딩 및 각도 정보를 사용함으로써 상당히 개선될 수 있기 때문에, 평면 모드 및 평면 포지션을 시그널링하는 것보다 더 저렴하다. 따라서, 몇 개의 포인트들만을 갖는 노드에 대해 또는 각도 정보가 이용가능할 때, 평면을 시그널링하는 것이 효율적이지 않을 수 있다.
하나 이상의 예들에서, 본 명세서에 설명된 예시적인 기법들은 노드 내의 포인트들의 수 또는 IDCM 모드와 같은 IDCM 정보에 의존하는 평면 모드의 시그널링을 변경하는 것일 수 있다. 일부 예들에서, 하기의 예시적인 기법들에서 IDCM 모드에 대한 평면 모드의 제한은, 각도 모드가 인에이블될 때 적용될 수 있다. 일부 예들에서, 제한은 sps(sequence parameter set), 또는 gbh(geometry brick header) 레벨에서 플래그에 의해 제어될 수 있다. 지오메트리 벽돌 헤더(gbh)는 또한 지오메트리 파라미터 세트(GPS)로 지칭될 수 있다.
일례에서, 평면 모드는 하나의 포인트만을 갖는 노드들에 대해 시그널링되지 않을 수 있다. 예를 들어, 평면 모드는, IDCM 노드가 하나의 포인트만을 가질 때 암시적으로 시그널링될 수 있다. 명시적으로 시그널링되는 것은, 신택스 엘리먼트 또는 정보가 실제로 시그널링되지 않지만 추론되는 일부 예들을 지칭할 수 있다. 예를 들어, 암시적 시그널링에서, G-PCC 인코더(200)는 시그널링을 바이패스할 수 있고(예컨대, 시그널링을 회피함), G-PCC 디코더(300)는 "암시적으로" 시그널링되는 신택스 엘리먼트들을 파싱하지 않을 수 있다.
평면 정보의 시그널링은, IDCM 모드 플래그 및 노드 내의 포인트들의 수를 시그널링한 후에 반송될 수 있다. 노드 내의 포인트들의 수가 하나인 경우, 평면 포지션만이 시그널링될 수 있는 한편, 평면 모드는 1로서 암시적으로 시그널링된다.
따라서, 일례에서, G-PCC 인코더(200)는, 비트스트림에서, 포인트 클라우드 데이터의 노드 내의 포인트들의 수 및 추론된 직접 코딩 모드(IDCM) 플래그를 시그널링하도록, 그리고 노드 내의 포인트들의 수가 1인 것에 기초하여 그리고 IDCM 플래그를 시그널링하는 것에 후속하여, 비트스트림에서, 평면 포지션을 시그널링하고 평면 모드를 시그널링하는 것을 바이패스하도록 구성될 수 있다. G-PCC 디코더(300)는, 비트스트림으로부터, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 파싱하도록, 노드 내의 포인트들의 수가 1인 것에 기초하여 그리고 IDCM 플래그를 파싱하는 것에 후속하여, 비트스트림으로부터 평면 포지션을 파싱하도록, 노드 내의 포인트들의 수가 1인 것에 기초하여, 비트스트림으로부터, 노드에 대해 파싱된 비트들이 평면 모드를 나타내는 신택스 엘리먼트 이외의 신택스 엘리먼트에 대한 것이라고 결정하도록(예컨대, 평면 모드에 대한 파싱을 회피함), 그리고 파싱된 IDCM 플래그 및 평면 포지션에 기초하여 포인트 클라우드를 재구성하도록 구성될 수 있다. 예를 들어, 비트스트림에서 평면 모드를 나타내는 정보가 존재하지 않을 수 있기 때문에, G-PCC 디코더(300)는, 노드에 대한 신택스 엘리먼트들이 평면 모드를 나타내는 정보가 아니라고 결정할 수 있다.
일례에서, 평면 모드는 하나의 포인트만을 갖는 노드들에 대해 디스에이블될 수 있다. 예를 들어, 평면 모드는 하나의 포인트만을 갖는 IDCM 노드들에 대해 디스에이블될 수 있다. 그러한 예들에서, 평면 정보의 시그널링은, IDCM 모드 플래그 및 노드 내의 포인트들의 수를 시그널링한 후에 반송될 수 있다. 노드 내의 포인트들의 수가 1인 경우, 평면 정보(평면 모드 및 평면 포지션을 포함함)의 시그널링은 무시될 수 있다.
일례에서, 평면 모드는, 임계치 미만의 포인트들의 수를 갖는 IDCM 노드들에 대해 디스에이블될 수 있다. 그러한 예들에서, 평면 모드는, 임계치 미만의 포인트들의 수를 갖는 IDCM 노드에 대해 디스에이블될 수 있다. 평면 정보의 시그널링은, IDCM 모드 플래그 및 노드 내의 포인트들의 수를 시그널링한 후에 반송될 수 있다. 노드 내의 포인트들의 수가 임계치 미만인 경우, 평면 정보(평면 모드 및 평면 포지션을 포함함)의 시그널링은 무시될 수 있다.
따라서, 일례에서, G-PCC 인코더(200)는, 비트스트림에서, 포인트 클라우드 데이터의 노드 내의 포인트들의 수 및 추론된 직접 코딩 모드(IDCM) 플래그를 시그널링하도록, 그리고 노드 내의 포인트들의 수가 임계치 이하인 것에 기초하여, 평면 포지션 및 평면 모드를 시그널링하는 것을 바이패스하도록 구성될 수 있다. G-PCC 디코더(300)는, 비트스트림으로부터, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 파싱하도록, 노드 내의 포인트들의 수가 임계치 이하인 것에 기초하여, 비트스트림으로부터, 노드에 대해 파싱된 비트들이 평면 포지션 또는 평면 모드를 나타내는 신택스 엘리먼트 이외의 신택스 엘리먼트에 대한 것이라고 결정하도록(예컨대, 평면 포지션 및 평면 모드를 파싱하는 것을 회피함), 그리고 파싱된 IDCM 플래그에 기초하여 포인트 클라우드를 재구성하도록 구성될 수 있다.
일례로서, 임계치는 1이다. 다른 예로서, 임계치는 1보다 더 크다.
일례에서, 평면 모드는 IDCM 노드들에 대해 디스에이블될 수 있다. 평면 정보의 시그널링은, IDCM 모드 플래그를 시그널링한 후에 반송될 수 있다. 평면 정보(평면 모드 및 평면 포지션을 포함함)의 시그널링은 무시될 수 있고, 평면 정보는 IDCM 노드의 포지션 코딩에 사용되지 않을 수 있다.
도 6은 그러한 예들을 예시하는 흐름도이다. 도 6의 예에서, 평면 정보의 시그널링은, 노드가 IDCM에 적격인지 여부의 결정 후에 발생한다. 노드의 점유도는 현재 노드의 각각의 자식 노드 내의 포인트들의 수에 기초하여 획득된다(600). 이어서, 노드 크기, 평면 버퍼, 및 평면 레이트에 기초하여 각각의 축에 대해 평면 적격성이 도출된다(602). 이어서, IDCM 적격성이 도출된다(604). 노드가 IDCM 적격성인 경우(604의 예), IDCM 노드가 시그널링될 수 있다(606). IDCM이 적용되어야 하는 경우, 결정이 이루어질 수 있다(608). IDCM 노드의 경우(608의 예), 포인트들의 수 및 복제 포인트들의 수가 인코딩될 것이다(610). IDCM 노드는 추가로 분할되지 않고, 인코딩 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(618).
노드가 IDCM 적격하지 않거나(604의 아니오) 또는 IDCM이 적용되지 않는 경우(608의 아니오), 평면 적격성이 결정될 수 있다(612). 축이 평면 적격인 경우(612의 예), 점유도를 사용하여 평면 모드 및 평면 포지션이 획득된다(614). 노드가 IDCM 적격하지 않거나 또는 노드가 IDCM이 아닌 경우(612의 아니오), 콘텍스트 기반 코딩을 사용하여 점유도가 인코딩된다(616). 이어서, 노드는 노드 버퍼에 추가될 자식 노드들로 분할되고, 프로세스는 노드 버퍼 내의 다음 노드로 이동할 것이다(618). 상기 프로세스는, 노드 버퍼가 비어 있을 때까지 재귀적으로 수행된다.
따라서, 추론된 직접 코딩 모드(IDCM)가 디스에이블되는 조건에서, G-PCC 인코더(200)는 노드에 대한 평면 모드 및 평면 포지션을 사용하지 않고서 포인트 클라우드 데이터를 인코딩할 수 있다. 추론된 직접 코딩 모드(IDCM)가 디스에이블되는 조건에서, G-PCC 디코더(300)는 노드에 대한 평면 모드 및 평면 포지션을 사용하지 않고서 포인트 클라우드 데이터를 디코딩할 수 있다.
[G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 대응하는 사양 텍스트는 그에 따라 하기와 같이 수정될 수 있다. 하기에서, <DELETE>…</DELETE> 사이의 텍스트가 삭제될 수 있고, <ADD>…</ADD> 사이의 텍스트는 추가될 수 있다.
평면 모드는, 각도 모드가 인에이블될 때/인에이블되는 경우 IDCM 노드들에 대해 디스에이블될 수 있다. 예를 들어, G-PCC 인코더(200)는, 각도 모드가 인에이블되는 조건 및/또는 각도 모드가 인에이블될 때 평면 모드가 디스에이블되는 조건에서 현재 노드(예컨대, 직접 모드로서 인코딩되는 현재 노드)에 대해 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 시그널링을 바이패스하는 것은, G-PCC 인코더(200)가 평면 모드에 대한 값들을 시그널링하지 않고, 평면 모드에 대한 값들이 위치될 G-PCC 컴플라이언트 비트스트림에서, 다른 값들이 대신 존재한다는 것을 의미한다.
평면 정보의 시그널링은, IDCM 모드 플래그를 시그널링한 후에 반송될 수 있다. 일례에서, 각도 모드가 인에이블되는 경우, (평면 모드 및 평면 포지션을 포함하는 평면 모드에 대한 값들과 같은) 평면 정보의 시그널링은 무시될 수 있고(예컨대, 바이패스됨), 평면 정보는 IDCM 노드의 포지션 코딩에 사용되지 않을 수 있다.
[G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 대응하는 사양 텍스트는 그에 따라 하기와 같이 수정될 수 있다. 하기에서, <DELETE>…</DELETE> 사이의 텍스트가 삭제될 수 있고, <ADD>…</ADD> 사이의 텍스트는 추가될 수 있다.
하기는 상기 의사 코드에 추가된다:
이러한 의사 코드에서, geometry_angular_enabled_flag가 참이면, is_planar_flag[k] 및 plane_position[k]와 같은 평면 모드에 대한 값들이 시그널링되지 않는다. 예를 들어, G-PCC 인코더(200)는, 제1 노드(예컨대, 현재 노드)에 대해 각도 모드가 인에이블됨을 나타내는 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag)를 시그널링할 수 있다. 이러한 예에서, G-PCC 인코더(200)는, 신택스 엘리먼트가, 제1 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 조건에서, 평면 모드에 대한 값들(예컨대, is_planar_flag[k] 및 plane_position[k])의 시그널링을 바이패스할 수 있다. 이러한 예에서, geometry_angular_enabled_flag의 시그널링은 신택스 엘리먼트의 제1 인스턴스로서 간주될 수 있다.
그러나, 제2 노드의 경우, G-PCC 인코더(200)는, 제2 노드에 대해 각도 모드가 디스에이블됨을 나타내는 geometry_angular_enabled_flag의 제2 인스턴스를 시그널링할 수 있다. 이러한 예에서, G-PCC 인코더(200)는, 신택스 엘리먼트의 제2 인스턴스(예컨대, geometry_angular_enabled_flag의 제2 인스턴스)가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서만 제2 노드에 대한 평면 모드에 대한 값들(예컨대, is_planar_flag[k] 및 plane_position[k])을 시그널링할 수 있다.
또한, 상기 의사 코드에서, 평면 모드에 대한 값들을 시그널링하기 위해 G-PCC 인코더(200)에 대해 direct_mode_flag가 참이어야 한다는 요건이 존재할 수 있다. G-PCC 인코더(200)는, 현재 노드에 대해 IDCM이 인에이블된다고, 그리고 IDCM이 현재 노드에 적용된다고(예컨대, direct_mode_flag가 참임) 결정할 수 있다. 따라서, 일부 예들에서, G-PCC 인코더(200)는, 현재 노드에 대해 각도 모드가 인에이블되는 조건에서, 그리고 현재 노드에 대해 IDCM이 적용되는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 즉, 일부 예들에서, G-PCC 인코더(200)는, 조건들 둘 모두가 만족될 때: (1) 현재 노드에 대해 각도 모드가 인에이블되고, (2) 현재 노드에 대해 IDCM(예컨대, 직접 모드)이 적용될 때, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 이들 2개의 조건들 중 어느 하나가 만족되지 않으면, G-PCC 인코더(200)는 평면 모드에 대한 값들을 시그널링할 수 있다. 이들 2개의 조건들 둘 모두가 만족되면, G-PCC 인코더(200)는 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
일부 예들에서, 예컨대 IDCM에서 인코딩된 노드에 대해, 각도 모드가 인에이블되면(예컨대, geometry_angular_enabled_flag가 참임), 그것은 평면 모드에 대한 값들의 시그널링을 바이패스하는 데 충분할 수 있다. 그러나, 일부 예들에서, 각도 모드가 인에이블되지만, 평면 모드가 여전히 인에이블되는 것이 가능할 수 있고, 평면 모드에 대한 값들의 시그널링이 유용할 수 있다. 그러한 예들에 부합하기 위해, 각도 모드가 인에이블될 때 IDCM 노드에 대한 평면 모드의 제한은 geom_disable_planar_idcm_angular로 명명된 플래그에 의해 gbh(지오메트리 벽돌 헤더) 레벨에서 제어될 수 있다. gbh에 있는 geom_disable_planar_idcm_angular 플래그는 일례로서 제공되고, 지오메트리 파라미터 세트(GPS)와 같은 다른 파라미터 세트들에 위치될 수 있다.
즉, geom_disable_planar_idcm_angular가 참일 때, 평면 모드는, 각도 모드가 인에이블될 때 디스에이블될 수 있다. 그러한 예들에서, geom_disable_planar_idcm_angular가 참일 때, G-PCC 인코더(200)는, 각도 모드가 인에이블되는 경우 평면 모드에 대한 값들을 시그널링하는 것을 바이패스할 수 있다. 그러나, geom_disable_planar_idcm_angular가 거짓일 때, G-PCC 인코더(200)는 가능하게는, 각도 모드가 인에이블되더라도 평면 모드에 대한 값들을 시그널링할 수 있다.
[G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 대응하는 사양 텍스트는 그에 따라 하기와 같이 수정될 수 있다. 하기에서, <DELETE>…</DELETE> 사이의 텍스트가 삭제될 수 있고, <ADD>…</ADD> 사이의 텍스트는 추가될 수 있다.
신택스 엘리먼트 geom_disable_planar_idcm_angular는 지오메트리 파라미터 세트 시맨틱들에 추가된다.
<ADD>geom_disable_planar_idcm_angular가 1과 동일한 것은, 각도 모드가 인에이블될 때 IDCM 노드들에 대해 평면 모드가 디스에이블됨을 명시한다. </ADD>
따라서, 상기의 예에서, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블되는지 또는 인에이블되는지 여부를 나타내는 신택스 엘리먼트를 시그널링할 수 있다. 예를 들어, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 geom_disable_planar_idcm_angular를 시그널링할 수 있다. 이러한 경우에, G-PCC 인코더(200)는, geom_disable_planar_idcm_angular이, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
현재 노드가 제1 노드임을 가정하고, 상기의 예에서, geom_disable_planar_idcm_angular의 시그널링은 geom_disable_planar_idcm_angular의 시그널링의 제1 인스턴스이다. G-PCC 인코더(200)는, 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 geom_disable_planar_idcm_angular의 제2 인스턴스를 시그널링할 수 있다. 이러한 예에서, G-PCC 인코더(200)는, geom_disable_planar_idcm_angular의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블될 때 평면 모드가 디스에이블되지 않음을 나타내는 조건에서만 제2 노드에 대한 평면 모드에 대한 값들을 시그널링할 수 있다.
또한, 상기의 예시적인 기법들과 유사하게, G-PCC 인코더(200)는, 현재 노드(예컨대, 제1 노드)가 IDCM(예컨대, 직접 모드)인 경우, 평면 모드에 대한 값들을 시그널링하는 것을 바이패스할 수 있다. 즉, direct_mode_flag가 참인 경우, G-PCC 인코더(200)는, geom_disable_planar_idcm_angular가 참인 경우 평면 모드에 대한 값들을 시그널링하는 것을 바이패스할 수 있다.
용이함을 위해, 신택스 엘리먼트 geom_disable_planar_idcm_angular는 제1 신택스 엘리먼트로 지칭되고, 신택스 엘리먼트 geometry_angular_enabled_flag는 제2 신택스 엘리먼트로 지칭된다. 예를 들어, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블되는지 여부를 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular) 또는 현재 노드에 대해 각도 모드가 인에이블되는지 여부를 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 시그널링할 수 있다. 평면 모드에 대한 값들(예컨대, is_planar_flag[k] 및 plane_position[k])이 시그널링되는지 또는 그렇지 않은지(예컨대, 바이패스되는지) 여부는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트에 의해 표시된 조건에 기초할 수 있다.
일례로서, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 시그널링할 수 있다. G-PCC 인코더(200)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
상기의 조합이 또한 가능할 수 있다. 예를 들어, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트, 및 현재 모드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 둘 모두를 시그널링할 수 있다. 이러한 예에서, G-PCC 인코더(200)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
G-PCC 인코더(200)가 평면 모드에 대한 값들의 시그널링을 바이패스할 때에 대한 추가적인 조건들이 존재할 수 있다. 예를 들어, G-PCC 인코더(200)는, IDCM(예컨대, 직접 모드)이 현재 노드에 대해 적용된다고 결정할 수 있다. G-PCC 인코더(200)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 그리고 현재 노드에 대해 IDCM이 적용되는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
상기는, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트가, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링이 바이패스될 때를 결정할 수 있는 방법의 예들을 설명한다. 일부 예들에서, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트는, 평면 모드에 대한 값들이 시그널링될 수 있을 때를 결정할 수 있다.
예를 들어, 현재 노드가 제1 노드라고 가정하고, 제1 신택스 엘리먼트 및/또는 제2 신택스 엘리먼트의 시그널링은 제1 신택스 엘리먼트 및/또는 제2 신택스 엘리먼트의 시그널링의 제1 인스턴스이다. 일부 예들에서, G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스, 또는 각도 모드가 제2 노드에 대해 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링할 수 있다. 그러한 예들에서, G-PCC 인코더(200)는, 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서만, 제2 노드에 대한 평면 모드에 대한 값들을 시그널링할 수 있다. 일반적으로, IDCM 노드들에 대해, 평면 모드는 각도가 인에이블될 때 시그널링되지 않는 반면에, 비-IDCM 노드들에 대해, 평면은 각도가 인에이블될 때 시그널링된다.
일부 예들에서, 제2 노드에 대한 지오메트리 파라미터 세트(GPS) 및 제1 노드에 대한 GPS가 상이하고, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스는, 제2 노드에 대한 GPS 및 제1 노드에 대한 GPS가 상이할 때 상이한 값들을 가질 수 있다. 그러나, 예시적인 기법들은 제한되지 않고, 일부 예들에서, 동일한 GPS에 대해, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스가 상이한 값들을 갖는 것이 가능할 수 있다.
다른 예에서, [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020]에서 대응하는 사양 텍스트는 그에 따라 하기와 같이 수정될 수 있다. 하기에서, <DELETE>…</DELETE> 사이의 텍스트가 삭제될 수 있고, <ADD>…</ADD> 사이의 텍스트는 추가될 수 있다.
일부 예들에서, 조건 (!geom_disable_planar_idcm_angular ||!geometry_angular_enabled_flag || !direct_mode_flag)는 평면 코딩 모드에 대한 노드의 적격성과 관련하여 하기에 제시된 평면 적격성(섹션 8.2.3.1로도 지칭됨)에 포함될 수 있다. 일부 예들에서, 조건 (!geom_disable_planar_idcm_angular ||!geometry_angular_enabled_flag || !direct_mode_flag)이 만족되지 않는 경우, PlanarEligible[ k ]는 거짓이다. 예를 들어, (geom_disable_planar_idcm_angular가 거짓인 것, 또는 geometery_angular_enabled_flag가 거짓인 것, 또는 direct_mode_flag가 거짓인 것)이 거짓이면, PlanarEligible[k]는 거짓이다.
[G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020] 사양은 그에 따라 하기와 같이 수정될 수 있다. 하기에서, <DELETE>…</DELETE> 사이의 텍스트가 삭제될 수 있고, <ADD>…</ADD> 사이의 텍스트는 추가될 수 있다.
8.2.3.1 평면 코딩 모드에 대한 노드의 적격성
점유 평면들의 명시적 코딩은 XXX의 확률에 대해 컨디셔닝된다.
k = 0 .. 2에 대해, 엘리먼트들 PlanarRate[ k ]를 갖는, 어레이 PlanarRate는, 노드의 점유가 k번째 축에 수직인 단일 평면을 형성할 확률의 추정치이다.
변수 LocalDensity는 노드에서 점유된 자식의 평균 수의 추정치이다.
NumNodesUntilPlanarUpdate 변수는 PlanarRate 및 LocalDensity를 업데이트하기 전에 파싱될 노드의 수를 카운트한다.
<ADD>조건 (!geom_disable_planar_idcm_angular ||!geometry_angular_enabled_flag || !direct_mode_flag)이 거짓인 경우, PlanarEligible[ k ]는 k = 0 .. 2에 대해 거짓과 동일하게 설정되고, 프로세스는 중지된다. </ADD>
geometry_octree 신택스 구조를 파싱하기 시작할 시에, PlanarRate 및 LocalDensity는 다음과 같다
상기의 예시적인 의사 코드에서, PlanarEligible[ k ]의 정의는 업데이트되고, PlanarEligible[k]의 값은 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag), 및 IDCM이 적용되는지 여부(예컨대, value of direct_mode_flag)의 값에 기초한다. G-PCC 디코더(300)의 관점에서, G-PCC 디코더(300)는 상기 의사 코드의 for-루프(for-loop)를 구현할 수 있고, 평면 모드에 대한 값들을 시그널링하는 것의 각각의 반복에 대해, G-PCC 디코더(300)는 PlanarEligible[k]의 값을 결정할 수 있으며, PlanarEligible[k]의 값이 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트에 기초하기 때문에, G-PCC 디코더(300)는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트에 기초하여 신택스 엘리먼트들을 파싱할 수 있다.
예를 들어, G-PCC 디코더(300)는, 루프의 각각의 반복에서, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 제2 신택스 엘리먼트가, (예컨대, PlanarEligible[k]의 값에 기초하여) 현재 노드에 대해 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정한다. G-PCC 디코더(300)는 결정에 기초하여, 루프의 각각의 반복에서 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다. 예를 들어, G-PCC 디코더(300)가 is_planar_flag를 파싱하는지 또는 plane_position을 파싱하는지 여부는 PlanarEligible[k]의 값에 기초할 수 있고, G-PCC 디코더(300)는 루프의 각각의 반복에서(예컨대, "k"의 값들에 걸쳐) PlanarEligible[k]의 값을 결정할 수 있다.
상기의 예는 역방향 호환성에 대해 유용할 수 있다. 예를 들어, G-PCC 인코더(200) 및 G-PCC 디코더(300)가 본 개시내용에서 설명된 하나 이상의 예들에 따라 평면 모드에 대한 값들을 시그널링하는 것을 바이패스하는 예시적인 기법들을 수행할 수 있게 하기 위해, G-PCC 표준의 이전 버전들과 호환가능한, G-PCC 인코더(200) 또는 G-PCC 디코더(300)의 하드웨어에 대한 어떠한 변경들도 필요하지 않을 수 있다.
하기는 G-PCC 내의 평면 모드에 대한 콘텍스트 각도 도출 및 레이트 업데이트의 단순화를 설명한다. 일례에서, 콘텍스트 각도에 대한 도출 프로세스는, 노드가 리프 노드일 때 무시될 수 있다. 일례에서, 레이트 업데이트 프로세스는, 노드가 리프 노드일 때 무시될 수 있다.
일부 예들에서, IDCM 코딩된 노드들에 대한 평면 적격성은 각도의 이용가능성에 의존할 수 있다. 예를 들어, IDCM 코딩된 노드들에 대한 포지션 코딩은, 각도 정보가 이용가능할 때에만 개선될 수 있다. [G-PCC DIS, ISO/IEC JTC1/SC29/WG11 w55637, Teleconference, November 2020 (Derivation process of the angular eligibility for a node)]의 섹션 8.2.4.1에서와 같이 도출되는 노드의 각도 적격성이 적용가능할 수 있다. 일부 예들에서, 이러한 노드에 대해 각도가 적격인 경우, 평면은 IDCM 코딩된 노드에 대해 디스에이블될 수 있다. 그렇지 않으면, 이러한 노드에 대해 이러한 평면이 인에이블될 수 있다.
일부 예들에서, 평면 모드 적격성은, 각도 모드가 인에이블될 때 IDCM 모드 및 contextAngular에 의존할 수 있다
contextAngular는 8.2.4.4에서와 같이 도출될 수 있다.
일부 예들에서, 각도 모드가 인에이블될 때, 평면은 -1의 contextAngular을 갖는 비-IDCM 코딩된 노드들 또는 IDCM 코딩된 노드들에 적용될 수 있다.
예를 들어, 각도 모드가 인에이블될 때 IDCM 노드들에 대해 평면 노드가 디스에이블되는 것과 관련된 상기의 예에서의 평면 적격성은 하기와 같이 수정될 수 있다:
8.2.3.1 평면 코딩 모드에 대한 노드의 적격성
k = 0 .. 2에 대해, 엘리먼트들 PlanarRate[ k ]를 갖는, 어레이 PlanarRate는, 노드의 점유가 k번째 축에 수직인 단일 평면을 형성할 확률의 추정치이다.
변수 LocalDensity는 노드에서 점유된 자식의 평균 수의 추정치이다.
NumNodesUntilPlanarUpdate 변수는 PlanarRate 및 LocalDensity를 업데이트하기 전에 파싱될 노드의 수를 카운트한다.
<ADD>조건 (!geom_disable_planar_idcm_angular ||!geometry_angular_enabled_flag || (!direct_mode_flag || contextAngular == -1))이 거짓인 경우, PlanarEligible[ k ]는 k = 0 .. 2에 대해 거짓과 동일하게 설정되고, 프로세스는 중지된다. </ADD>
geometry_octree 신택스 구조를 파싱하기 시작할 시에, PlanarRate 및 LocalDensity는 다음과 같다
도 7은 포인트 클라우드 데이터를 인코딩하기 위한 예시적인 기법을 예시한 흐름도이다. 용이함을 위해, 예들은, 예컨대 평면 모드/각도 모드 유닛(213) 및 산술 인코딩 유닛(214)의 조합에 기초하여 G-PCC 인코더(200)와 관련하여 설명된다.
G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 시그널링하도록(700) 구성될 수 있다. 일부 예들에서, 제1 신택스 엘리먼트는 지오메트리 파라미터 세트(GPS)에서 시그널링된다. 일부 예들에서, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두가 시그널링될 수 있다.
일례로서, 평면 모드/각도 모드(213)는, 산술 인코딩 유닛(214)으로 하여금, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 시그널링하게 하도록 구성될 수 있다. 즉, 산술 인코딩 유닛(214)은, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 시그널링하도록(700) 구성될 수 있다.
제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 하나의 시그널링이 설명되지만, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 중 하나만을 또는 둘 모두를 시그널링하는 것이 가능할 수 있다. 예를 들어, G-PCC 인코더(200)는 제1 신택스 엘리먼트를 시그널링하거나, 제2 신택스 엘리먼트를 시그널링하거나, 또는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 시그널링할 수 있다.
G-PCC 인코더(200)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들(예컨대, is_planar_flag and plane_position)의 시그널링을 바이패스할 수 있다(702). 일례로서, 평면 모드/각도 모드 유닛(213)은, 산술 인코딩 유닛(214)으로 하여금, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들(예컨대, is_planar_flag 및 plane_position)을 시그널링하지 않게 할 수 있다. 즉, 산술 인코딩 유닛(214)은, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들(예컨대, is_planar_flag 및 plane_position)의 시그널링을 바이패스할 수 있다.
예를 들어, geom_disable_planar_idcm_angular(예컨대, 제1 신택스 엘리먼트)가 참이면, G-PCC 인코더(200)는 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. geometry_angular_enabled_flag(예컨대, 제2 신택스 엘리먼트)가 참이면, G-PCC 인코더(200)는 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 다른 예로서, geom_disable_planar_idcm_angular가 참이고 geometry_angular_enabled_flag가 참인 둘 모두이면, G-PCC 인코더(200)는 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다.
평면 모드에 대한 값들의 시그널링을 바이패스하는 것은, G-PCC 인코더(200)가, G-PCC 인코더(200)가 평면 모드에 대한 값들을 시그널링한 경우 포함될 신택스 엘리먼트들과는 상이한 신택스 엘리먼트들을 비트스트림에 포함한다는 것을 의미할 수 있다. 예를 들어, is_planar_flag 및 plane_position이 비트스트림 내의 특정 위치에서 시그널링되기보다는, 일부 다른 신택스 엘리먼트들이 포함된다. 이러한 방식으로, G-PCC 인코더(200)는 평면 모드에 대한 값들의 시그널링을 바이패스하는 것으로 간주될 수 있다.
G-PCC 인코더(200)가, 평면 모드에 대한 값들의 시그널링을 바이패스할 때 고려할 수 있는 추가적인 조건들이 또한 존재할 수 있다. 일례로서, G-PCC 인코더(200)는, 추론된 직접 코딩 모드(IDCM)가 현재 노드에 대해 적용된다고(예컨대, direct_mode_flag가 참임) 결정할 수 있다. 이러한 예에서, 값들의 시그널링을 바이패스하기 위해, G-PCC 인코더(200)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 그리고 현재 노드에 대해 IDCM이 적용되는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스할 수 있다. 예를 들어, 이러한 예에서, IDCM이 노드에 적용되지 않으면, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내거나, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 경우에도 평면 값들을 시그널링하는 것이 가능할 수 있다.
G-PCC 인코더(200)는 평면 모드 이외의 모드에서 현재 노드를 인코딩할 수 있다(704). 예를 들어, G-PCC 인코더(200)는 평면 모드에 사용되는 값들을 시그널링하지 않을 수 있고, 대신에 점유 비트들을 직접 시그널링하는 것과 같은 일부 다른 기법을 사용하여 현재 노드의 인코딩을 선택할 수 있다.
상기 예에서, 현재 노드는 제1 노드로 간주될 수 있다. 그러한 예들에서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 것은 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 시그널링하는 것을 의미할 수 있다. G-PCC 인코더(200)는, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스, 또는 각도 모드가 제2 노드에 대해 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링하도록 구성될 수 있다.
그러한 예들에서, G-PCC 인코더(200)는, 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서만, 제2 노드에 대한 평면 모드에 대한 값들을 시그널링한다. G-PCC 인코더(200)는 평면 모드를 사용하여 제2 노드를 인코딩할 수 있다.
일부 예들에서, 제2 노드에 대한 지오메트리 파라미터 세트(GPS) 및 제1 노드에 대한 GPS가 상이하고, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스는, 제2 노드에 대한 GPS 및 제1 노드에 대한 GPS가 상이할 때 상이한 값들을 가질 수 있다. 그러나, 예시적인 기법들은 제한되지 않고, 일부 예들에서, 동일한 GPS에 대해, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스가 상이한 값들을 갖는 것이 가능할 수 있다.
도 8은 포인트 클라우드 데이터를 디코딩하기 위한 예시적인 기법을 예시한 흐름도이다. 용이함을 위해, 예들은, 예컨대 평면 모드/각도 모드 유닛(313) 및 지오메트리 산술 디코딩 유닛(302)의 조합에 기초하여 G-PCC 디코더(300)와 관련하여 설명된다.
G-PCC 디코더(300)는, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나를 파싱하도록(800) 구성될 수 있다. 일부 예들에서, 제1 신택스 엘리먼트는 지오메트리 파라미터 세트(GPS)에서 파싱된다. 일부 예들에서, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두가 파싱될 수 있다.
일례로서, 지오메트리 산술 디코딩 유닛(302)은, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨(예컨대, geom_disable_planar_idcm_angular가 참임)을 나타내는 제1 신택스 엘리먼트(예컨대, geom_disable_planar_idcm_angular), 또는 현재 노드에 대해 각도 모드가 인에이블됨(예컨대, geometry_angular_enabled_flag가 참임)을 나타내는 제2 신택스 엘리먼트(예컨대, geometry_angular_enabled_flag) 중 적어도 하나에 대한 값들을 파싱하도록 구성될 수 있다. 평면 모드/각도 모드 유닛(313)은 지오메트리 산술 유닛 디코딩(302)이 디코딩한 값들을 파싱하도록 구성될 수 있다.
제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 하나의 파싱이 설명되지만, 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 중 하나만을 파싱하거나 또는 둘 모두를 파싱하는 것이 가능할 수 있다. 예를 들어, G-PCC 디코더(300)는 제1 신택스 엘리먼트를 파싱하거나, 제2 신택스 엘리먼트를 파싱하거나, 또는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 파싱할 수 있다.
G-PCC 디코더(300)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들(예컨대, is_planar_flag and plane_position)의 파싱을 바이패스할 수 있다(802). 일례로서, 지오메트리 산술 디코딩 유닛(302)은, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 각도 모드가 현재 노드에 대해 인에이블됨을 나타내는 것에 응답하여 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스할 수 있고, 평면 모드/각도 모드 유닛(313)은, is_planar_flag 및 plane_position과 같은 값들이 다른 신택스 엘리먼트들에 대해 위치되어야 하는 비트스트림 내에 위치된 값들을 결정할 수 있다.
예를 들어, geom_disable_planar_idcm_angular(예컨대, 제1 신택스 엘리먼트)가 참이면, G-PCC 디코더(300)는 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다. geometry_angular_enabled_flag(예컨대, 제2 신택스 엘리먼트)가 참이면, G-PCC 디코더(300)는 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다. 다른 예로서, geom_disable_planar_idcm_angular가 참이고 geometry_angular_enabled_flag가 참인 둘 모두이면, G-PCC 디코더(300)는 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다.
평면 모드에 대한 값들의 파싱을 바이패스하는 것은, G-PCC 디코더(300)가, G-PCC 인코더(200)가 평면 모드에 대한 값들을 시그널링한 경우 포함될 신택스 엘리먼트들과는 상이한 신택스 엘리먼트들을 비트스트림에서 디코딩한다는 것을 의미할 수 있다. 예를 들어, is_planar_flag 및 plane_position이 비트스트림 내의 특정 위치에서 파싱되기보다는, 일부 다른 신택스 엘리먼트들이 파싱된다. 이러한 방식으로, G-PCC 디코더(300)는 평면 모드에 대한 값들의 파싱을 바이패스하는 것으로 간주될 수 있다.
다른 예로서, 평면 모드에 대한 값들의 파싱을 바이패스하기 위해, G-PCC 디코더(300)는, 루프의 각각의 반복에서, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정하도록 구성될 수 있다. 예를 들어, G-PCC 디코더(300)는 제1 신택스 엘리먼트, 제2 신택스 엘리먼트, 또는 IDCM이 적용되는지 여부 중 하나 이상에 기초하여 PlanarEligible[k]에 대한 값을 정의할 수 있다. [k]의 값들에 걸친 루프 내에서, 각각의 반복에서, G-PCC 디코더(300)는 PlanarEligible[k]의 값을 결정할 수 있다. PlanarEligible[k]의 값에 기초하여, G-PCC 디코더(300)는 결정에 기초하여, 루프의 각각의 반복에서 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다.
G-PCC 디코더(300)가, 평면 모드에 대한 값들의 파싱을 바이패스할 때 고려할 수 있는 추가적인 조건들이 또한 존재할 수 있다. 일례로서, G-PCC 디코더(300)는, 추론된 직접 코딩 모드(IDCM)가 현재 노드에 대해 적용된다고(예컨대, direct_mode_flag가 참임) 결정할 수 있다. 이러한 예에서, 값들의 파싱을 바이패스하기 위해, G-PCC 디코더(300)는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 그리고 현재 노드에 대해 IDCM이 적용되는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스할 수 있다. 예를 들어, 이러한 예에서, IDCM이 노드에 적용되지 않으면, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내거나, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 경우에도 평면 값들을 파싱하는 것이 가능할 수 있다.
G-PCC 디코더(300)는 평면 모드 이외의 모드에서 현재 노드를 디코딩할 수 있다(804). 예를 들어, G-PCC 디코더(300)는 평면 모드에 사용되는 값들을 파싱하지 않을 수 있고, 대신에 점유 비트들을 직접 시그널링하는 것과 같은 일부 다른 기법을 사용하여 현재 노드의 디코딩을 위한 신택스 엘리먼트들을 파싱할 수 있다.
상기 예에서, 현재 노드는 제1 노드로 간주될 수 있다. 그러한 예들에서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 것은 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 파싱하는 것을 의미할 수 있다. G-PCC 디코더(300)는, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스, 또는 각도 모드가 제2 노드에 대해 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 파싱하도록 구성될 수 있다.
그러한 예들에서, G-PCC 디코더(300)는, 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내것에만 응답하여, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에만 응답하여, 제2 노드에 대한 평면 모드에 대한 값들을 파싱할 수 있다. G-PCC 디코더(300)는 평면 모드를 사용하여 제2 노드를 디코딩할 수 있다.
일부 예들에서, 제2 노드에 대한 지오메트리 파라미터 세트(GPS) 및 제1 노드에 대한 GPS가 상이하고, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스는, 제2 노드에 대한 GPS 및 제1 노드에 대한 GPS가 상이할 때 상이한 값들을 가질 수 있다. 그러나, 예시적인 기법들은 제한되지 않고, 일부 예들에서, 동일한 GPS에 대해, 제1 및 제2 신택스 엘리먼트들의 제1 인스턴스 및 제1 및 제2 신택스 엘리먼트들의 제2 인스턴스가 상이한 값들을 갖는 것이 가능할 수 있다.
도 9는 3차원 공간에서 포인트들을 스캐닝하는 하나 이상의 레이저들을 포함하는 LIDAR 센서 또는 다른 시스템과 같은 레이저 패키지(900)를 예시한 개념도이다. 데이터 소스(104)(도 1)는 레이저 패키지(900)를 포함할 수 있다.
도 9에 도시된 바와 같이, 포인트 클라우드들은 레이저 패키지(900)를 사용하여 캡처될 수 있으며, 즉, 센서는 3D 공간에서 포인트들을 스캐닝한다. 하지만, 일부 포인트 클라우드들은 실제 LIDAR 센서에 의해 생성되지 않지만, 그것들이 있었던 것처럼 인코딩될 수 있음이 이해될 것이다. 도 9의 예에서, 레이저 패키지(900)는 원점에 대해 상이한 각도들로 수직 평면에 배열된 다수의 레이저들(904A 내지 904E)(집합적으로, "레이저들 (904)")을 포함하는 LIDAR 헤드(902)를 포함한다. 레이저 패키지(900)는 수직 축(908)을 중심으로 회전할 수 있다. 레이저 패키지(900)는 포인트 클라우드의 포인트들의 거리들 및 포지션들을 결정하기 위해 복귀된 레이저 광을 사용할 수 있다. 레이저 패키지(900)의 레이저들(904)에 의해 방출된 레이저 빔들(906A 내지 906E)(집합적으로, "레이저 빔들(906)")은 파라미터들의 세트에 의해 특징지어질 수 있다. 화살표들(910, 912)에 의해 표기된 거리들은, 각각 레이저(904B, 904A)에 대한 예시적인 레이저 보정 값들을 나타낸다.
도 10은 본 개시내용의 하나 이상의 기법들에 따라 사용될 수 있는 예시적인 거리 측정 시스템을 예시한 개념도이다. 도 10의 예에서, 거리 측정 시스템(1000)은 조명기(1002) 및 센서(1004)를 포함한다. 조명기(1002)는 광(1006)을 방출할 수 있다. 일부 예들에서, 조명기(1002)는 하나 이상의 레이저 빔들로서 광(1006)을 방출할 수 있다. 광(1006)은 적외선 파장 또는 가시광 파장과 같은 하나 이상의 파장들일 수 있다. 다른 예들에서, 광(1006)은 간섭성이 없는 레이저 광이다. 광(1006)이 객체(1008)와 같은 객체에 부딪힐 때, 광(1006)은 복귀 광(1010)을 생성한다. 복귀 광(1010)은 후방산란된 그리고/또는 반사된 광을 포함할 수 있다. 복귀 광(1010)은 센서(1004) 상에 객체(1008)의 이미지(1012)를 생성하기 위해 복귀 광(1010)을 지향시키는 렌즈(1011)를 통과할 수 있다. 센서(1004)는 이미지(1012)에 기초하여 신호들(1014)을 생성한다. 이미지(1012)는 (예컨대, 도 10의 이미지(1012)에서의 도트들에 의해 표현되는 바와 같은) 포인트들의 세트를 포함할 수 있다.
일부 예들에서, 조명기(1002) 및 센서(1004)는 조명기(1002) 및 센서(1004)가 환경의 360도 뷰를 캡처하도록 스피닝 구조 상에 장착될 수 있다. 다른 예들에서, 거리 측정 시스템(1000)은 조명기(1002) 및 센서(1004)가 특정 범위 내에서(예컨대, 최대 360도) 객체들을 검출할 수 있게 하는 하나 이상의 광학 컴포넌트들(예컨대, 미러들, 콜리메이터들, 회절 격자들 등)을 포함할 수 있다. 도 10의 예가 단지 단일의 조명기(1002) 및 센서(1004)만을 도시하지만, 거리 측정 시스템(1000)은 조명기들 및 센서들의 다수의 세트들을 포함할 수 있다.
일부 예들에서, 조명기(1002)는 구조화된 광 패턴을 생성한다. 그러한 예들에서, 거리 측정 시스템(1000)은 구조화된 광 패턴의 각자의 이미지들이 형성되는 다중 센서들(1004)을 포함할 수 있다. 거리 측정 시스템(1000)은, 구조화된 광 패턴이 후방산란하는 객체(1008)까지의 거리를 결정하기 위해 구조화된 광 패턴의 이미지들 사이의 디스패리티들을 사용할 수 있다. 구조화된 광 기반 거리 측정 시스템들은, 객체(1008)가 센서(1004)에 비교적 가까울 때(예컨대, 0.2 미터 내지 2 미터), 높은 레벨의 정확도(예컨대, 밀리미터 이하 범위의 정확도)를 가질 수 있다. 이러한 고 레벨의 정확도는 모바일 디바이스들(예컨대, 모바일 폰들, 태블릿 컴퓨터들 등)을 잠금해제하는 것과 같은 안면 인식 애플리케이션들에서 그리고 보안 애플리케이션들에 유용할 수 있다.
일부 예들에서, 거리 측정 시스템(1000)은 비행 시간(time of flight, ToF) 기반 시스템이다. 거리 측정 시스템(1000)이 ToF 기반 시스템인 일부 예들에서, 조명기(1002)는 광의 펄스들을 생성한다. 즉, 조명기(1002)는 방출된 광(1006)의 진폭을 변조할 수 있다. 그러한 예들에서, 센서(1004)는 조명기(1002)에 의해 생성된 광(1006)의 펄스들로부터 복귀 광(1010)을 검출한다. 이어서, 거리 측정 시스템(1000)은, 광(1006)이 방출되고 검출된 때와 공기 중의 광의 알려진 속도 사이의 지연에 기초하여 광(1006)이 후방산란하는 객체(1008)까지의 거리를 결정할 수 있다. 일부 예들에서, 방출된 광(1006)의 진폭을 변조하기 보다는(또는 그에 더하여), 조명기(1002)는 방출된 광(1002)의 위상을 변조할 수 있다. 그러한 예들에서, 센서(1004)는 객체(1008)로부터 복귀 광(1010)의 위상을 검출하고 광의 속도를 사용하여 그리고 조명기(1002)가 특정 위상에서 광(1006)을 생성할 때와 센서(1004)가 특정 위상에서 복귀 광(1010)을 검출할 때 사이의 시간 차이들에 기초하여 객체(1008) 상의 포인트들까지의 거리들을 결정할 수 있다.
다른 예들에서, 포인트 클라우드는 조명기(1002)를 사용하지 않고서 생성될 수 있다. 예를 들어, 일부 예들에서, 거리 측정 시스템(1000)의 센서(1004)는 2개 이상의 광학 카메라들을 포함할 수 있다. 그러한 예들에서, 거리 측정 시스템(1000)은 그 광학 카메라들을 사용하여, 객체(1008)를 포함하는 환경의 스테레오 이미지들을 캡처할 수 있다. 이어서, 거리 측정 시스템(1000)(예컨대, 포인트 클라우드 생성기 (1020))은 스테레오 이미지들에서의 위치들 사이의 디스패리티들을 계산할 수 있다. 이어서, 거리 측정 시스템(1000)은 스테레오 이미지들에서 보여진 위치들까지의 거리들을 결정하기 위해 디스패리티들을 사용할 수 있다. 이들 거리들로부터, 포인트 클라우드 생성기(1020)는 포인트 클라우드를 생성할 수 있다.
센서들(1004)은 또한, 컬러 및 반사율 정보와 같은 객체(1008)의 다른 속성들을 검출할 수 있다. 도 10의 예에서, 포인트 클라우드 생성기(920)는 센서(1004)에 의해 생성된 신호들(1018)에 기초하여 포인트 클라우드를 생성할 수 있다. 거리 측정 시스템(1000) 및/또는 포인트 클라우드 생성기(1020)는 데이터 소스(104)(도 1)의 일부를 형성할 수 있다.
도 11은 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 차량 기반 시나리오를 예시한 개념도이다. 도 11의 예에서, 차량(1100)은 LIDAR 시스템과 같은 레이저 패키지(1102)를 포함한다. 레이저 패키지(1102)는 레이저 패키지(900)(도 9)와 동일한 방식으로 구현될 수 있다. 도 11의 예에 도시되지 않지만, 차량(1100)은 또한, 데이터 소스(104)(도 1)와 같은 데이터 소스, 및 G-PCC 인코더(200)(도 1)와 같은 G-PCC 인코더를 포함할 수 있다. 도 11의 예에서, 레이저 패키지(1102)는 도로에서의 보행자들(1106) 또는 다른 객체들로부터 반사되는 레이저 빔들(1104)을 방출한다. 차량(1100)의 데이터 소스는 레이저 패키지(1102)에 의해 생성된 신호들에 기초하여 포인트 클라우드를 생성할 수 있다. 차량(1100)의 G-PCC 인코더는 포인트 클라우드를 인코딩하여 도 2의 지오메트리 비트스트림 및 도 2의 속성 비트스트림과 같은 비트스트림(1108)을 생성할 수 있다. 비트스트림들(1108)은 G-PCC 인코더에 의해 획득된 코딩되지 않은 포인트 클라우드보다 훨씬 적은 비트들을 포함할 수 있다. 차량(1100)의 출력 인터페이스(예컨대, 출력 인터페이스(108)(도 1))는 비트스트림들(1108)을 하나 이상의 다른 디바이스들로 송신할 수 있다. 따라서, 차량(1100)은 인코딩된 포인트 클라우드 데이터보다 더 빠르게 비트스트림들(1108)을 다른 디바이스들로 송신할 수 있다. 추가적으로, 비트스트림들(1108)은 더 적은 데이터 저장 용량을 요구할 수 있다.
도 11의 예에서, 차량(1100)은 비트스트림들(1108)을 다른 차량(1110)으로 송신할 수 있다. 차량(1110)은 G-PCC 디코더(300)(도 1)와 같은 G-PCC 디코더를 포함할 수 있다. 차량(1110)의 G-PCC 디코더는 비트스트림들(1108)을 디코딩하여 포인트 클라우드를 복원할 수 있다. 차량(1110)은 다양한 목적들을 위해 복원된 포인트 클라우드를 사용할 수 있다. 예를 들어, 차량(1110)은 복원된 포인트 클라우드에 기초하여, 보행자들(1106)이 차량(1100) 앞의 도로에 있다고 결정하고 따라서 예컨대, 보행자들(1106)이 도로에 있음을 차량(1110)의 운전자가 인식하기 전부터, 감속을 시작할 수 있다. 따라서, 일부 예들에서, 차량(1110)은 복원된 포인트 클라우드에 기초하여 자율 내비게이션 동작을 수행하거나, 통지 또는 경고를 생성하거나, 또는 다른 액션을 수행할 수 있다.
추가적으로 또는 대안적으로, 차량(1100)은 비트스트림들(1108)을 서버 시스템(1112)으로 송신할 수 있다. 서버 시스템(1112)은 다양한 목적들을 위해 비트스트림들(1108)을 사용할 수 있다. 예를 들어, 서버 시스템(1112)은 포인트 클라우드들의 후속 복원을 위해 비트스트림들(1108)을 저장할 수 있다. 이러한 예에서, 서버 시스템(1112)은 자율 주행 시스템을 훈련하기 위해 다른 데이터(예컨대, 차량(1100)에 의해 생성된 차량 원격측정 데이터)와 함께 포인트 클라우드들을 사용할 수 있다. 다른 예에서, 서버 시스템(1112)은 (예컨대, 차량(1100)이 보행자들(1106)과 충돌하는 경우) 포렌식 충돌 조사들을 위한 후속 복원을 위해 비트스트림들(1108)을 저장할 수 있다.
도 12는 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 확장 현실 시스템을 예시한 개념도이다. 확장 현실(XR)은 증강 현실(AR), 혼합 현실(MR), 및 가상 현실(VR)을 포함하는 다양한 기술들을 커버하기 위해 사용되는 용어이다. 도 12의 예에서, 제1 사용자(1200)는 제1 위치(1202)에 위치된다. 사용자(1200)는 XR 헤드셋(1204)을 착용하고 있다. XR 헤드셋(1204)에 대한 대안으로서, 사용자(1200)는 모바일 디바이스(예컨대, 모바일 폰, 태블릿 컴퓨터 등)를 사용할 수 있다. XR 헤드셋(1204)은, 위치(1202)에서 객체들(1206) 상의 포인트들의 포지션들을 검출하는 LIDAR 시스템과 같은 심도 검출 센서를 포함한다. XR 헤드셋(1204)의 데이터 소스는, 위치(1202)에서의 객체들(1206)의 포인트 클라우드 표현을 생성하기 위해 심도 검출 센서에 의해 생성된 신호들을 사용할 수 있다. XR 헤드셋(1204)은, 비트스트림들(1208)을 생성하기 위해 포인트 클라우드를 인코딩하도록 구성되는 G-PCC 인코더(예컨대, 도 1의 G-PCC 인코더(200))를 포함할 수 있다.
XR 헤드셋(1204)은 비트스트림들(1208)을 (예컨대, 인터넷과 같은 네트워크를 통해) 제2 위치(1214)에서의 사용자(1212)에 의해 착용된 XR 헤드셋(1210)으로 송신할 수 있다. XR 헤드셋(1210)은 비트스트림들(1208)을 디코딩하여 포인트 클라우드를 복원할 수 있다. XR 헤드셋(1210)은 위치(1202)에서의 객체들(1206)을 나타내는 XR 시각화(예컨대, AR, MR, VR 시각화)를 생성하기 위해 포인트 클라우드를 사용할 수 있다. 따라서, 일부 예들에서, 예컨대 XR 헤드셋(1210)이 VR 시각화를 생성할 때, 위치(1214)에서의 사용자(1212)는 위치(1202)의 3D 몰입 경험을 가질 수 있다. 일부 예들에서, XR 헤드셋(1210)은 복원된 포인트 클라우드에 기초하여 가상 객체의 포지션을 결정할 수 있다. 예를 들어, XR 헤드셋(1210)은 복원된 포인트 클라우드에 기초하여, 환경(예컨대, 위치(1202))이 평평한 표면을 포함한다고 결정하고, 이어서 가상 객체(예컨대, 만화 캐릭터)가 평평한 표면 상에 포지셔닝되어야 한다고 결정할 수 있다. XR 헤드셋(1210)은, 가상 객체가 결정된 포지션에 있는 XR 시각화를 생성할 수 있다. 예를 들어, XR 헤드셋(1210)은 평평한 표면 상에 앉아 있는 만화 캐릭터를 보여줄 수 있다.
도 13은 본 개시내용의 하나 이상의 기법들이 사용될 수 있는 예시적인 모바일 디바이스 시스템을 예시한 개념도이다. 도 13의 예에서, 모바일 폰 또는 태블릿 컴퓨터와 같은 모바일 디바이스(1300)는 모바일 디바이스(1300)의 환경에서 객체들(1302) 상의 포인트들의 포지션들을 검출하는 LIDAR 시스템과 같은 심도 검출 센서를 포함한다. 모바일 디바이스(1300)의 데이터 소스는 객체들(1302)의 포인트 클라우드 표현을 생성하기 위해 심도 검출 센서에 의해 생성된 신호들을 사용할 수 있다. 모바일 디바이스(1300)는, 비트스트림들(1304)을 생성하기 위해 포인트 클라우드를 인코딩하도록 구성되는 G-PCC 인코더(예컨대, 도 1의 G-PCC 인코더(200))를 포함할 수 있다. 도 13의 예에서, 모바일 디바이스(1300)는 서버 시스템 또는 다른 모바일 디바이스와 같은 원격 디바이스(1306)로 비트스트림들을 송신할 수 있다. 원격 디바이스(1306)는 비트스트림들(1304)을 디코딩하여 포인트 클라우드를 복원할 수 있다. 원격 디바이스(1306)는 다양한 목적들을 위해 포인트 클라우드를 사용할 수 있다. 예를 들어, 원격 디바이스(1306)는 모바일 디바이스(1300)의 환경의 맵을 생성하기 위해 포인트 클라우드를 사용할 수 있다. 예를 들어, 원격 디바이스(1306)는 복원된 포인트 클라우드에 기초하여 건물 내부의 맵을 생성할 수 있다. 다른 예에서, 원격 디바이스(1306)는 포인트 클라우드에 기초하여 이미저리(예컨대, 컴퓨터 그래픽들)를 생성할 수 있다. 예를 들어, 원격 디바이스(1306)는 포인트 클라우드의 포인트들을 다각형들의 정점(vertex)들로서 사용하고, 포인트들의 컬러 속성들을 다각형들을 쉐이딩하기 위한 기초로서 사용할 수 있다. 일부 예들에서, 원격 디바이스(1306)는 포인트 클라우드를 사용하여 얼굴 인식을 수행할 수 있다.
본 개시내용의 다음의 양태들에서의 예들은 개별적으로 또는 임의의 조합으로 사용될 수 있다.
조항 1. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 비트스트림에서, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 시그널링하는 단계; 및 노드 내의 포인트들의 수가 1이라는 것에 기초하여 그리고 IDCM 플래그를 시그널링하는 것에 후속하여, 비트스트림에서, 평면 포지션을 시그널링하고 평면 모드의 시그널링을 바이패스하는 단계를 포함하는, 방법.
조항 2. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 비트스트림으로부터, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 파싱하는 단계; 노드 내의 포인트들의 수가 1이라는 것에 기초하여 그리고 IDCM 플래그를 파싱하는 것에 후속하여, 비트스트림으로부터, 평면 포지션을 파싱하는 단계; 노드 내의 포인트들의 수가 1이라는 것에 기초하여, 노드에 대한, 비트스트림으로부터의 파싱된 비트들이 평면 모드를 나타내는 신택스 엘리먼트 이외의 신택스 엘리먼트에 대한 것임을 결정하는 단계; 및 파싱된 IDCM 플래그 및 평면 포지션에 기초하여 포인트 클라우드를 재구성하는 단계를 포함하는, 방법.
조항 3. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 비트스트림에서, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 시그널링하는 단계; 및 노드 내의 포인트들의 수가 임계치 이하라는 것에 기초하여, 평면 포지션 및 평면 모드를 시그널링하는 것을 바이패스하는 단계를 포함하는, 방법.
조항 4. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 비트스트림으로부터, 추론된 직접 코딩 모드(IDCM) 플래그 및 포인트 클라우드 데이터의 노드 내의 포인트들의 수를 파싱하는 단계; 노드 내의 포인트들의 수가 임계치 이하라는 것에 기초하여, 노드에 대한, 비트스트림으로부터의 파싱된 비트들이 평면 포지션 또는 평면모드를 나타내는 신택스 엘리먼트 이외의 신택스 엘리먼트에 대한 것임을 결정하는 단계; 및 파싱된 IDCM 플래그에 기초하여 포인트 클라우드 데이터를 재구성하는 단계를 포함하는, 방법.
조항 5. 조항 3 또는 조항 4에 있어서, 임계치는 1인, 방법.
조항 6. 조항 3 또는 조항 4에 있어서, 임계치는 1 초과인, 방법.
조항 7. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 추론된 직접 코딩 모드(IDCM)가 디스에이블되는 조건에서, 포인트 클라우드의 노드에 대한 평면 모드 및 평면 포지션을 사용하지 않고서 포인트 클라우드 데이터를 인코딩하는 단계를 포함하는, 방법.
조항 8. 포인트 클라우드 데이터를 프로세싱하는 방법으로서, 방법은, 추론된 직접 코딩 모드(IDCM)가 디스에이블되는 조건에서, 포인트 클라우드의 노드에 대한 평면 모드 및 평면 포지션을 사용하지 않고서 포인트 클라우드 데이터를 디코딩하는 단계를 포함하는, 방법.
조항 9. 포인트 클라우드 데이터를 프로세싱하기 위한 디바이스로서, 디바이스는 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및 조항 1 내지 조항 8 중 어느 한 조항의 방법을 수행하도록 구성된 프로세싱 회로부를 포함하는, 디바이스.
조항 10. 조항 9에 있어서, 디바이스는 디코더를 포함하는, 디바이스.
조항 11. 조항 9에 있어서, 디바이스는 인코더를 포함하는, 디바이스.
조항 12. 조항 9 내지 조항 11 중 어느 한 조항에 있어서, 포인트 클라우드를 생성하기 위한 디바이스를 추가로 포함하는, 디바이스.
조항 13. 조항 9 내지 조항 12 중 어느 한 조항에 있어서, 포인트 클라우드에 기초하여 이미저리를 제시하기 위한 디스플레이를 추가로 포함하는, 디바이스.
조항 14. 명령들이 저장되어 있는 컴퓨터 판독가능 저장 매체로서, 명령들은, 실행될 때, 하나 이상의 프로세서들로 하여금 조항 1 내지 조항 8 중 어느 한 조항의 방법을 수행하게 하는, 컴퓨터 판독가능 저장 매체.
조항 15. 포인트 클라우드 데이터를 프로세싱하기 위한 디바이스로서, 디바이스는 조항 1 내지 조항 8 중 어느 한 조항의 방법을 수행하기 위한 수단을 포함하는, 디바이스.
조항 1A. 포인트 클라우드 데이터를 인코딩하는 방법으로서, 방법은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계; 및 평면 모드 이외의 모드에서 현재 노드를 인코딩하는 단계를 포함하는, 방법.
조항 2A. 조항 1A에 있어서, 현재 노드는 제1 노드를 포함하고, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 시그널링하는 단계를 포함하고, 방법은, 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스; 또는 제2 노드에 대해 각도 모드가 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링하는 단계; 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서만, 제2 노드에 대한 평면 모드에 대한 값들을 시그널링하는 단계; 및 평면 모드를 사용하여 제2 노드를 인코딩하는 단계를 추가로 포함하는, 방법.
조항 3A. 조항 1A 또는 조항 2A에 있어서, 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하는 단계를 추가로 포함하고, 값들의 시그널링을 바이패스하는 단계는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 그리고 현재 노드에 대해 IDCM이 적용되는 조건에서 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
조항 4A. 조항 1A 내지 조항 3A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 제1 신택스 엘리먼트를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 제1 신택스 엘리먼트가 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
조항 5A. 조항 1A 내지 조항 4A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 제2 신택스 엘리먼트를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
조항 6A. 조항 1A 내지 조항 5A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 그리고 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
조항 7A. 조항 1A 내지 조항 6A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트를 시그널링하는 단계는 지오메트리 파라미터 세트(GPS)에서 제1 신택스 엘리먼트를 시그널링하는 단계를 포함하는, 방법.
조항 8A. 포인트 클라우드 데이터를 디코딩하는 방법으로서, 방법은, 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하는 단계; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하는 단계; 및 평면 모드 이외의 모드에서 현재 노드를 디코딩하는 단계를 포함하는, 방법.
조항 9A. 조항 8A에 있어서, 현재 노드는 제1 노드를 포함하고, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 파싱하는 단계를 포함하고, 방법은, 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스; 또는 제2 노드에 대해 각도 모드가 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 파싱하는 단계; 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에만 응답하여, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에만 응답하여, 제2 노드에 대한 평면 모드에 대한 값들을 파싱하는 단계; 및 평면 모드를 사용하여 제2 노드를 디코딩하는 단계를 추가로 포함하는, 방법.
조항 10A. 조항 8A 또는 조항 9A에 있어서, 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하는 단계를 추가로 포함하고, 값들의 파싱을 바이패스하는 단계는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 그리고 현재 노드에 대해 IDCM이 적용되는 것에 응답하여 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
조항 11A. 조항 8A 내지 조항 10A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 제1 신택스 엘리먼트를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
조항 12A. 조항 8A 내지 조항 11A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 제2 신택스 엘리먼트를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
조항 13A. 조항 8A 내지 조항 12A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 그리고 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
조항 14A. 조항 8A 내지 조항 13A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트를 파싱하는 단계는 지오메트리 파라미터 세트(GPS)에서 제1 신택스 엘리먼트를 파싱하는 단계를 포함하는, 방법.
조항 15A. 조항 8A 내지 조항 14A 중 어느 한 조항에 있어서, 평면 모드에 대한 값들의 파싱을 바이패스하는 단계는, 루프의 각각의 반복에서, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정하는 단계; 및 결정에 기초하여, 루프의 각각의 반복에서 평면 모드에 대한 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
조항 16A. 포인트 클라우드 데이터를 인코딩하기 위한 디바이스로서, 디바이스는, 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및 메모리에 커플링된 프로세싱 회로부를 포함하고, 프로세싱 회로부는: 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하도록; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하도록; 그리고 평면 모드 이외의 모드에서 현재 노드를 인코딩하도록 구성되는, 디바이스.
조항 17A. 조항 16A에 있어서, 현재 노드는 제1 노드를 포함하고, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 시그널링하도록 구성되고, 프로세싱 회로부는: 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스; 또는 제2 노드에 대해 각도 모드가 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링하도록; 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서만, 제2 노드에 대한 평면 모드에 대한 값들을 시그널링하도록; 그리고 평면 모드를 사용하여 제2 노드를 인코딩하도록 구성되는, 디바이스.
조항 18A. 조항 16A 또는 조항 17A에 있어서, 프로세싱 회로부는, 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서, 그리고 현재 노드에 대해 IDCM이 적용되는 조건에서 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
조항 19A. 조항 16A 내지 조항 18A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
조항 20A. 조항 16A 내지 조항 19A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 프로세싱 회로부는 제2 신택스 엘리먼트를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 프로세싱 회로부는, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
조항 21A. 조항 16A 내지 조항 20A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 조건에서, 그리고 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
조항 22A. 조항 16A 내지 조항 21A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트를 시그널링하기 위해, 프로세싱 회로부는 지오메트리 파라미터 세트(GPS)에서 제1 신택스 엘리먼트를 시그널링하도록 구성되는, 디바이스.
조항 23A. 포인트 클라우드 데이터를 디코딩하기 위한 디바이스로서, 디바이스는, 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및 메모리에 커플링된 프로세싱 회로부를 포함하고, 프로세싱 회로부는: 각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하도록; 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하도록; 그리고 평면 모드 이외의 모드에서 현재 노드를 디코딩하도록 구성되는, 디바이스.
조항 24A. 조항 23A에 있어서, 현재 노드는 제1 노드를 포함하고, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트의 제1 인스턴스 또는 제2 신택스 엘리먼트의 제1 인스턴스를 파싱하도록 구성되고, 프로세싱 회로부는, 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 제1 신택스 엘리먼트의 제2 인스턴스; 또는 제2 노드에 대해 각도 모드가 디스에이블됨을 나타내는 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 파싱하도록; 제1 신택스 엘리먼트의 제2 인스턴스가, 각도 모드가 인에이블될 때 제2 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에만 응답하여, 또는 제2 신택스 엘리먼트의 제2 인스턴스가, 제2 노드에 대해 각도 모드가 인에이블됨을 나타내는 조건에만 응답하여, 제2 노드에 대한 평면 모드에 대한 값들을 파싱하도록; 그리고 평면 모드를 사용하여 상기 제2 노드를 디코딩하도록 구성되는, 디바이스.
조항 25A. 조항 23A 또는 조항 24A에 있어서, 프로세싱 회로부는, 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 그리고 현재 노드에 대해 IDCM이 적용되는 것에 응답하여 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
조항 26A. 조항 23A 내지 조항 25A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
조항 27A. 조항 23A 내지 조항 26A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 프로세싱 회로부는 제2 신택스 엘리먼트를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 프로세싱 회로부는, 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
조항 28A. 조항 23A 내지 조항 27A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트 또는 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 프로세싱 회로부는 제1 신택스 엘리먼트 및 제2 신택스 엘리먼트 둘 모두를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 프로세싱 회로부는, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 그리고 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
조항 29A. 조항 23A 내지 조항 28A 중 어느 한 조항에 있어서, 제1 신택스 엘리먼트를 파싱하기 위해, 프로세싱 회로부는 지오메트리 파라미터 세트(GPS)에서 제1 신택스 엘리먼트를 파싱하도록 구성되는, 디바이스.
조항 30A. 조항 23A 내지 조항 29A 중 어느 한 조항에 있어서, 평면 모드에 대한 값들의 파싱을 바이패스하기 위해, 프로세싱 회로부는, 루프의 각각의 반복에서, 제1 신택스 엘리먼트가, 각도 모드가 인에이블될 때 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 제2 신택스 엘리먼트가, 현재 노드에 대해 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정하도록; 그리고 결정에 기초하여, 루프의 각각의 반복에서 평면 모드에 대한 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
예에 의존하여, 본 명세서에서 설명된 기법들의 임의의 특정 행위들 또는 이벤트들은 상이한 시퀀스로 수행될 수 있고, 전체적으로 추가되거나, 병합되거나, 또는 생략될 수 있다(예컨대, 설명된 모든 행위들 또는 이벤트들이 기법들의 실시를 위해 필수적인 것은 아님)는 것이 인식되어야 한다. 게다가, 특정 예들에서, 행위들 또는 이벤트들은 순차적이기보다는, 예를 들어 다중-스레딩된 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통해 동시에 수행될 수 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능들은 컴퓨터 판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 이를 통해 송신될 수 있고, 하드웨어-기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터 판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예를 들면, 통신 프로토콜에 따라, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로, (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체들은, 본 발명에 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위하여 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 이용가능한 매체들일 수 있다. 컴퓨터 프로그램 제품이 컴퓨터 판독가능 매체를 포함할 수 있다.
한정이 아닌 예로서, 그러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결수단(connection)이 컴퓨터 판독가능 매체로 적절히 지칭된다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 꼬임 쌍선, 디지털 가입자 회선(DSL: digital subscriber line), 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 꼬임 쌍선, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 연결들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하는 것이 아니라, 대신에 비일시적, 유형의 저장 매체들에 관련된다는 것이 이해되야 한다. 본 명세서에서 사용된 바와 같은 디스크(disk) 및 디스크(disc)는 컴팩트 디스크(CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크(DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크(disk)는 전형적으로 데이터를 자기적으로 재생하지만 디스크(disc)는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 것들의 조합들이 또한 컴퓨터판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서, 이를테면 하나 이상의 DSP, 범용 마이크로프로세서, ASIC, FPGA, 또는 다른 등가 집적 또는 이산 로직 회로에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용된 바와 같이, 용어들 "프로세서" 및 "프로세싱 회로부"는 본 명세서에 설명된 기법들의 구현에 적합한 전술한 구조들 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수 있다. 부가적으로, 일부 양태들에서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성되거나, 또는 결합된 코덱에서 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트로 완전히 구현될 수 있다.
본 개시내용의 기법들은, 무선 핸드셋, IC(integrated circuit) 또는 IC들의 세트(예컨대, 칩셋)를 포함하는 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은, 개시된 기법들을 수행하도록 구성된 디바이스들의 기능 양태들을 강조하기 위해 본 개시내용에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은, 코덱 하드웨어 유닛으로 결합될 수 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는 상호동작하는 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (30)

  1. 포인트 클라우드 데이터를 인코딩하는 방법으로서,
    각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는
    상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계;
    상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에서, 상기 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계; 및
    상기 평면 모드 이외의 모드에서 상기 현재 노드를 인코딩하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 현재 노드는 제1 노드를 포함하고, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 상기 제1 신택스 엘리먼트의 제1 인스턴스 또는 상기 제2 신택스 엘리먼트의 제1 인스턴스를 시그널링하는 단계를 포함하고, 상기 방법은,
    상기 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 상기 제1 신택스 엘리먼트의 제2 인스턴스; 또는
    상기 제2 노드에 대해 상기 각도 모드가 디스에이블됨을 나타내는 상기 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링하는 단계;
    상기 제1 신택스 엘리먼트의 제2 인스턴스가, 상기 각도 모드가 인에이블될 때 상기 제2 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 상기 제2 신택스 엘리먼트의 제2 인스턴스가, 상기 제2 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에서만, 상기 제2 노드에 대한 상기 평면 모드에 대한 값들을 시그널링하는 단계; 및
    평면 모드를 사용하여 상기 제2 노드를 인코딩하는 단계를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    상기 현재 노드에 대해, 추론된 직접 코딩 모드(inferred direct coding mode, IDCM)가 적용된다고 결정하는 단계를 추가로 포함하고,
    값들의 시그널링을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서, 그리고 상기 현재 노드에 대해 IDCM이 적용되는 조건에서 상기 현재 노드에 대한 상기 평면 모드에 대한 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
  4. 제1항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 상기 제1 신택스 엘리먼트를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
  5. 제1항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 상기 제2 신택스 엘리먼트를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
  6. 제1항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하는 단계는 상기 제1 신택스 엘리먼트 및 상기 제2 신택스 엘리먼트 둘 모두를 시그널링하는 단계를 포함하고, 값들의 시그널링을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서, 그리고 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하는 단계를 포함하는, 방법.
  7. 제1항에 있어서, 상기 제1 신택스 엘리먼트를 시그널링하는 단계는 지오메트리 파라미터 세트(geometry parameter set, GPS)에서 상기 제1 신택스 엘리먼트를 시그널링하는 단계를 포함하는, 방법.
  8. 포인트 클라우드 데이터를 디코딩하는 방법으로서,
    각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는
    상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하는 단계;
    상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 상기 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하는 단계; 및
    상기 평면 모드 이외의 모드에서 상기 현재 노드를 디코딩하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 현재 노드는 제1 노드를 포함하고, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 상기 제1 신택스 엘리먼트의 제1 인스턴스 또는 상기 제2 신택스 엘리먼트의 제1 인스턴스를 파싱하는 단계를 포함하고, 상기 방법은,
    상기 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 상기 제1 신택스 엘리먼트의 제2 인스턴스; 또는
    상기 제2 노드에 대해 상기 각도 모드가 디스에이블됨을 나타내는 상기 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 파싱하는 단계;
    상기 제1 신택스 엘리먼트의 제2 인스턴스가, 상기 각도 모드가 인에이블될 때 상기 제2 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에만 응답하여, 또는 상기 제2 신택스 엘리먼트의 제2 인스턴스가, 상기 제2 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에만 응답하여, 상기 제2 노드에 대한 상기 평면 모드에 대한 값들을 파싱하는 단계; 및
    평면 모드를 사용하여 상기 제2 노드를 디코딩하는 단계를 추가로 포함하는, 방법.
  10. 제8항에 있어서,
    상기 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하는 단계를 추가로 포함하고,
    값들의 파싱을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 그리고 상기 현재 노드에 대해 IDCM이 적용되는 것에 응답하여 상기 현재 노드에 대한 상기 평면 모드에 대한 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
  11. 제8항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 상기 제1 신택스 엘리먼트를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
  12. 제8항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 상기 제2 신택스 엘리먼트를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
  13. 제8항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하는 단계는 상기 제1 신택스 엘리먼트 및 상기 제2 신택스 엘리먼트 둘 모두를 파싱하는 단계를 포함하고, 값들의 파싱을 바이패스하는 단계는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 그리고 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
  14. 제8항에 있어서, 상기 제1 신택스 엘리먼트를 파싱하는 단계는 지오메트리 파라미터 세트(GPS)에서 상기 제1 신택스 엘리먼트를 파싱하는 단계를 포함하는, 방법.
  15. 제8항에 있어서, 상기 평면 모드에 대한 값들의 파싱을 바이패스하는 단계는,
    루프의 각각의 반복에서, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정하는 단계; 및
    상기 결정에 기초하여, 상기 루프의 각각의 반복에서 상기 평면 모드에 대한 값들의 파싱을 바이패스하는 단계를 포함하는, 방법.
  16. 포인트 클라우드 데이터를 인코딩하기 위한 디바이스로서,
    상기 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리에 커플링된 프로세싱 회로부를 포함하고, 상기 프로세싱 회로부는:
    각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는
    상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하도록;
    상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 조건에서, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에서, 상기 현재 노드에 대한 평면 모드에 대한 값들의 시그널링을 바이패스하도록; 그리고
    상기 평면 모드 이외의 모드에서 상기 현재 노드를 인코딩하도록 구성되는, 디바이스.
  17. 제16항에 있어서, 상기 현재 노드는 제1 노드를 포함하고, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트의 제1 인스턴스 또는 상기 제2 신택스 엘리먼트의 제1 인스턴스를 시그널링하도록 구성되고, 상기 프로세싱 회로부는:
    상기 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 상기 제1 신택스 엘리먼트의 제2 인스턴스; 또는
    상기 제2 노드에 대해 상기 각도 모드가 디스에이블됨을 나타내는 상기 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 시그널링하도록;
    상기 제1 신택스 엘리먼트의 제2 인스턴스가, 상기 각도 모드가 인에이블될 때 상기 제2 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 조건에서만, 또는 상기 제2 신택스 엘리먼트의 제2 인스턴스가, 상기 제2 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에서만, 상기 제2 노드에 대한 상기 평면 모드에 대한 값들을 시그널링하도록; 그리고
    평면 모드를 사용하여 상기 제2 노드를 인코딩하도록 구성되는, 디바이스.
  18. 제16항에 있어서, 상기 프로세싱 회로부는,
    상기 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하도록 구성되고,
    값들의 시그널링을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서, 그리고 상기 현재 노드에 대해 IDCM이 적용되는 조건에서 상기 현재 노드에 대한 상기 평면 모드에 대한 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
  19. 제16항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
  20. 제16항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 상기 프로세싱 회로부는 상기 제2 신택스 엘리먼트를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
  21. 제16항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 시그널링하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트 및 상기 제2 신택스 엘리먼트 둘 모두를 시그널링하도록 구성되고, 값들의 시그널링을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 상기 조건에서, 그리고 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 상기 조건에서 값들의 시그널링을 바이패스하도록 구성되는, 디바이스.
  22. 제16항에 있어서, 상기 제1 신택스 엘리먼트를 시그널링하기 위해, 상기 프로세싱 회로부는 지오메트리 파라미터 세트(GPS)에서 상기 제1 신택스 엘리먼트를 시그널링하도록 구성되는, 디바이스.
  23. 포인트 클라우드 데이터를 디코딩하기 위한 디바이스로서,
    상기 포인트 클라우드 데이터를 저장하도록 구성된 메모리; 및
    상기 메모리에 커플링된 프로세싱 회로부를 포함하고, 상기 프로세싱 회로부는:
    각도 모드가 인에이블될 때, 현재 노드에 대해 평면 모드가 디스에이블됨을 나타내는 제1 신택스 엘리먼트; 또는
    상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 제2 신택스 엘리먼트 중 적어도 하나를 비트스트림으로부터 파싱하도록;
    상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 상기 현재 노드에 대한 평면 모드에 대한 값들의 파싱을 바이패스하도록; 그리고
    상기 평면 모드 이외의 모드에서 상기 현재 노드를 디코딩하도록 구성되는, 디바이스.
  24. 제23항에 있어서, 상기 현재 노드는 제1 노드를 포함하고, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트의 제1 인스턴스 또는 상기 제2 신택스 엘리먼트의 제1 인스턴스를 파싱하도록 구성되고, 상기 프로세싱 회로부는:
    상기 각도 모드가 인에이블될 때, 제2 노드에 대해 평면 모드가 디스에이블되지 않음을 나타내는 상기 제1 신택스 엘리먼트의 제2 인스턴스; 또는
    상기 제2 노드에 대해 상기 각도 모드가 디스에이블됨을 나타내는 상기 제2 신택스 엘리먼트의 제2 인스턴스 중 적어도 하나를 파싱하도록;
    상기 제1 신택스 엘리먼트의 제2 인스턴스가, 상기 각도 모드가 인에이블될 때 상기 제2 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에만 응답하여, 또는 상기 제2 신택스 엘리먼트의 제2 인스턴스가, 상기 제2 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 조건에만 응답하여, 상기 제2 노드에 대한 상기 평면 모드에 대한 값들을 파싱하도록; 그리고
    평면 모드를 사용하여 상기 제2 노드를 디코딩하도록 구성되는, 디바이스.
  25. 제23항에 있어서, 상기 프로세싱 회로부는,
    상기 현재 노드에 대해, 추론된 직접 코딩 모드(IDCM)가 적용된다고 결정하도록 구성되고,
    값들의 파싱을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여, 그리고 상기 현재 노드에 대해 IDCM이 적용되는 것에 응답하여 상기 현재 노드에 대한 상기 평면 모드에 대한 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
  26. 제23항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
  27. 제23항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 상기 프로세싱 회로부는 상기 제2 신택스 엘리먼트를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
  28. 제23항에 있어서, 상기 제1 신택스 엘리먼트 또는 상기 제2 신택스 엘리먼트 중 적어도 하나를 파싱하기 위해, 상기 프로세싱 회로부는 상기 제1 신택스 엘리먼트 및 상기 제2 신택스 엘리먼트 둘 모두를 파싱하도록 구성되고, 값들의 파싱을 바이패스하기 위해, 상기 프로세싱 회로부는, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 상기 평면 모드가 디스에이블됨을 나타내는 것에 응답하여, 그리고 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타내는 것에 응답하여 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
  29. 제23항에 있어서, 상기 제1 신택스 엘리먼트를 파싱하기 위해, 상기 프로세싱 회로부는 지오메트리 파라미터 세트(GPS)에서 상기 제1 신택스 엘리먼트를 파싱하도록 구성되는, 디바이스.
  30. 제23항에 있어서, 상기 평면 모드에 대한 값들의 파싱을 바이패스하기 위해, 상기 프로세싱 회로부는,
    루프의 각각의 반복에서, 상기 제1 신택스 엘리먼트가, 상기 각도 모드가 인에이블될 때 상기 현재 노드에 대해 평면 모드가 디스에이블됨을 나타낸다는 것, 또는 상기 제2 신택스 엘리먼트가, 상기 현재 노드에 대해 상기 각도 모드가 인에이블됨을 나타낸다는 것 중 적어도 하나를 결정하도록; 그리고
    상기 결정에 기초하여, 상기 루프의 각각의 반복에서 상기 평면 모드에 대한 값들의 파싱을 바이패스하도록 구성되는, 디바이스.
KR1020247010580A 2021-10-04 2022-09-22 G-pcc에서의 평면 및 직접 모드 시그널링 KR20240088764A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/252,080 2021-10-04
US63/253,831 2021-10-08
US63/266,759 2022-01-13
US17/933,953 2022-09-21

Publications (1)

Publication Number Publication Date
KR20240088764A true KR20240088764A (ko) 2024-06-20

Family

ID=

Similar Documents

Publication Publication Date Title
EP4168990B1 (en) Planar and azimuthal mode in geometric point cloud compression
CN116325749A (zh) G-pcc中的预测几何编解码
EP4133458A1 (en) Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression
WO2021207501A1 (en) Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression
CN116349228A (zh) 用于几何点云压缩(g-pcc)的激光器转动的高级语法改善
US11869220B2 (en) Scaling of quantization parameter values in geometry-based point cloud compression (G-PCC)
US20220108492A1 (en) Gpcc planar mode and buffer simplification
JP2023545989A (ja) ジオメトリ点群圧縮における角度モードおよびツリー内量子化
US11910021B2 (en) Planar and direct mode signaling in G-PCC
KR20240088764A (ko) G-pcc에서의 평면 및 직접 모드 시그널링
US20230099908A1 (en) Coding point cloud data using direct mode for inter-prediction in g-pcc
US20220351420A1 (en) Performance improvement of geometry point cloud compression (gpcc) planar mode using inter prediction
WO2023059446A1 (en) Planar and direct mode signaling in g-pcc
US11871037B2 (en) Sorted laser angles for geometry-based point cloud compression (G-PCC)
US20230018907A1 (en) Occupancy coding using inter prediction in geometry point cloud compression
US20230177739A1 (en) Local adaptive inter prediction for g-pcc
KR20240087699A (ko) G-pcc 에서의 인터 예측을 위해 직접 모드를 사용하는 포인트 클라우드 데이터의 코딩
CN117121492A (zh) 使用帧间预测的对几何体点云压缩(gpcc)平面模式的性能提高
WO2023102484A1 (en) Local adaptive inter prediction for g-pcc
WO2024086508A1 (en) Predictive geometry coding of point cloud
EP4320865A1 (en) Residual coding for geometry point cloud compression
CN117999580A (zh) 在g-pcc中使用用于帧间预测的直接模式对点云数据进行译码