KR20220074865A - 트리 기반의 포인트 클라우드 코딩을 위한 각도 모드 신택스 - Google Patents

트리 기반의 포인트 클라우드 코딩을 위한 각도 모드 신택스 Download PDF

Info

Publication number
KR20220074865A
KR20220074865A KR1020227008825A KR20227008825A KR20220074865A KR 20220074865 A KR20220074865 A KR 20220074865A KR 1020227008825 A KR1020227008825 A KR 1020227008825A KR 20227008825 A KR20227008825 A KR 20227008825A KR 20220074865 A KR20220074865 A KR 20220074865A
Authority
KR
South Korea
Prior art keywords
volume
point cloud
decoding
angle
bitstream
Prior art date
Application number
KR1020227008825A
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 KR20220074865A publication Critical patent/KR20220074865A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

각도 코딩 모드를 사용하여 포인트 클라우드 데이터를 코딩하기 위한 방법 및 디바이스. 각도 코딩 모드는, 볼륨이 각도 코딩 모드를 사용하여 코딩될 것이다는 것을 시그널링하기 위해 각도 모드 플래그를 사용하여 시그널링될 수도 있다. 각도 코딩 모드는 볼륨을 이등분하는 평면의 한쪽 상에서 그들의 점유된 자식 노드 모두를 갖는 평면의 볼륨에 적용 가능하다. 평면 포지션 플래그는 볼륨의 어느 쪽이 점유되는지를 시그널링할 수도 있다. 엔트로피 코딩은 평면 포지션 플래그를 코딩하기 위해 사용될 수도 있다. 코딩을 위한 컨텍스트 결정은, 포인트 클라우드로 샘플링된 빔 어셈블리의 위치에 대한 볼륨의 자식 노드 또는 자식 노드의 그룹에 대한 각도 정보를 고려할 수도 있다. 빔 어셈블리의 특성은 비트스트림에서 전용 신택스로 코딩될 수도 있다.

Description

트리 기반의 포인트 클라우드 코딩을 위한 각도 모드 신택스
본 출원은 일반적으로 포인트 클라우드 압축에 관한 것으로, 특히, 포인트 클라우드의 트리 기반의 코딩에서 점유 데이터의 개선된 압축을 위한 방법 및 디바이스에 관한 것이다.
데이터 압축은, 정보를 효율적으로 저장, 송신 및 재생하기 위해 통신 및 컴퓨터 네트워킹에서 사용된다. 대형 데이터세트를 수반할 수 있는 그리고 효율적이고 효과적인 압축이 고도로 유용하고 가치가 있을 삼차원 오브젝트 또는 공간의 표현에 대한 증가하는 관심이 있다. 몇몇 경우에, 삼차원 오브젝트 또는 공간은, 세 개의 좌표 위치 (X, Y, Z) 및, 몇몇 경우에, 컬러 데이터(예를 들면, 휘도(luminance) 및 색도(chrominance)), 투명도, 반사율, 법선 벡터, 등등과 같은 다른 속성을 각각 갖는 포인트의 세트인 포인트 클라우드를 사용하여 표현될 수도 있다. 포인트 클라우드는 정적일 수 있거나(고정된 오브젝트 또는 단일의 시점(point in time)에서의 환경/오브젝트 스냅샷) 또는 동적일 수 있다(포인트 클라우드의 시간 순서의 시퀀스).
포인트 클라우드에 대한 예시적인 애플리케이션은 지형(topography) 및 매핑 애플리케이션을 포함한다. 자율 차량(autonomous vehicle) 및 다른 머신 비전 애플리케이션(machine-vision application)은, 예컨대 LiDAR(라이다) 스캐너로부터의, 환경의 3D 스캔의 형태의 포인트 클라우드 센서 데이터에 의존할 수도 있다. 가상 현실 시뮬레이션은 포인트 클라우드에 의존할 수도 있다.
포인트 클라우드는 많은 양의 데이터를 수반할 수 있고 그 데이터를 빠르고 정확하게 압축(인코딩 및 디코딩)하는 것은 상당히 중요하다는 것이 인식될 것이다. 따라서, 포인트 클라우드에 대한 데이터를 더욱 효율적으로 및/또는 효과적으로 압축하는 방법 및 디바이스를 제공하는 것이 유리할 것이다. 그러한 방법은 개선된 압축을 통한 저장 요건(메모리)에서의 절약, 또는 압축된 데이터의 송신을 위한 대역폭에서의 절약을 초래할 수도 있고, 그에 의해, 예로서, 예컨대 자동차 애플리케이션에 대한 3D 비전 시스템의 개선된 동작, 또는 가상 현실 시스템의 렌더링 및 동작의 개선된 속도를 초래할 수도 있다.
이제, 예로서, 본 출원의 예시적인 실시형태를 도시하는 첨부의 도면에 대한 참조가 이루어질 것이고, 첨부의 도면에서:
도 1은 예시적인 포인트 클라우드 인코더의 단순화된 블록도를 도시한다;
도 2는 예시적인 포인트 클라우드 디코더의 단순화된 블록도를 도시한다;
도 3 및 도 4는 자신의 점유된 자식(child) 서브 볼륨에서의 평면성(planarity)을 나타내는 볼륨의 예를 예시한다;
도 5는 평면 코딩 모드(planar coding mode)를 사용하여 포인트 클라우드 데이터를 인코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 6은 평면 코딩 모드를 사용하여 포인트 클라우드 데이터를 디코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 7은 평면성 정보(planarity information)에 기초하여 점유 비트를 코딩하기 위한 프로세스의 하나의 예의 일부를 도시한다;
도 8은 평면성 정보에 기초하여 점유 비트를 코딩하기 위한 프로세스의 다른 예의 일부를 도시한다;
도 9는 평면 모드 플래그 또는 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정함에 있어서의 가능한 인자를 도식으로 예시한다;
도 10은 동일한 깊이에서 그리고 공통 평면에서 가장 가까운 이미 코딩된 점유된 노드를 추적하기 위한 하나의 예시적인 메커니즘을 도시한다;
도 11은 포인트 클라우드를 획득하기 위한 빔 어셈블리의 예의 단순화된 예시를 도시한다;
도 12는 빔 어셈블리에서의 단일 빔 방출기(single beam emitter)의 예의 단순화된 예시를 도시한다;
도 13은 빔 어셈블리에 대한 좌표 축의 예시적인 할당을 도시한다;
도 14는 (r, θ) 평면에서 표현되는 예시적인 포인트 클라우드의 포인트를 포함하는 다이어그램을 도시한다;
도 15는 포인트 클라우드의 포인트에 대한 좌표 축의 예시적인 할당을 도시한다;
도 16은 도 14의 다이어그램에 대한 세부 사항을 도시한다;
도 17은 빔 어셈블리의 기준 위치에 대한 빔 어셈블리의 빔 방출기의 배열의 예를 도시한다;
도 18은, 빔 어셈블리의 특성에 기초하여 각도(θ)의 보정이 수행된 이후 (r, θ) 평면에서 표현되는 예시적인 포인트 클라우드의 포인트를 포함하는 다이어그램을 도시한다;
도 19는 빔 어셈블리에 의해 방출되는 빔 사이의 각도 차이에 대한 포인트 클라우드 데이터의 볼륨의 각도 사이즈의 예를 도시한다;
도 20은 각도 코딩 모드(angular coding mode)를 사용하여 포인트 클라우드 데이터를 인코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 21은 각도 코딩 모드를 사용하여 포인트 클라우드 데이터를 디코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 22는 빔 방출기에 대한 포인트 클라우드 데이터의 볼륨의 서브 볼륨의 그룹의 각도의 예를 도시한다;
도 23은 빔 방출기에 대한 포인트 클라우드 데이터의 볼륨의 서브 볼륨의 각도의 예를 도시한다;
도 24는 빔 어셈블리의 메인 축의 예시적인 배열을 도시한다;
도 25는 빔 어셈블리의 기준 위치에 대한 도 24의 빔 어셈블리의 빔 방출기의 배열의 예를 도시한다;
도 26은 빔 어셈블리의 기준 위치에 대한 도 24의 빔 어셈블리의 빔 방출기의 배열의 다른 예를 도시한다;
도 27은, 포인트 클라우드를 획득한 빔 어셈블리의 특성을 나타내는 신택스 엘리먼트에 기초하여 비트스트림으로부터 포인트 클라우드 데이터를 디코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 28은, 포인트 클라우드를 획득한 빔 어셈블리의 특성을 나타내는 신택스 엘리먼트와 함께 포인트 클라우드 데이터를 비트스트림에 인코딩하는 하나의 예시적인 방법을 플로우차트 형태로 도시한다;
도 29는 빔 방출기에 대한 포인트 클라우드 데이터의 볼륨의 형상 및 볼륨의 서브 볼륨의 그룹의 각도의 예를 도시한다;
도 30은 인코더의 예시적인 단순화된 블록도를 도시한다; 그리고
도 31은 디코더의 예시적인 단순화된 블록도를 도시한다.
유사한 컴포넌트를 나타내기 위해 상이한 도면에서 유사한 참조 번호가 사용될 수도 있다.
본 출원은 포인트 클라우드를 인코딩 및 디코딩하는 방법, 및 포인트 클라우드를 인코딩 및 디코딩하기 위한 인코더 및 디코더를 설명한다.
하나의 양태에서, 본 출원은 오브젝트의 삼차원 위치를 나타내는 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 포인트 클라우드를 인코딩하는 방법을 설명하는데, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간(volumetric space) 내에 위치되되, 여기서 볼륨은 자식 서브 볼륨의 제1 세트 및 자식 서브 볼륨의 제2 세트로 구획되고(partitioned), 자식 서브 볼륨의 제1 세트는 제1 평면에서 배치되고 자식 서브 볼륨의 제2 세트는 제1 평면에 평행한 제2 평면에서 배치되며, 그리고 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 그 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타낸다. 방법은 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨이 제1 세트 또는 제2 세트 중 어느 하나에 배치되는지의 여부에 기초하여 볼륨이 평면인지의 여부를 결정하는 것; 볼륨이 평면인지의 여부를 시그널링하기 위해 평면 모드 플래그를 비트스트림에서 인코딩하는 것; 적어도 하나의 점유 비트에 대해, 그것의 값을 추론하는 것 및 볼륨이 평면인지의 여부에 기초하여 비트스트림으로부터 그것을 인코딩하지 않는 것을 포함하는, 제1 세트 내의 자식 서브 볼륨에 대한 점유 비트를 비트스트림에서 인코딩하는 것; 및 압축된 포인트 클라우드 데이터의 비트스트림을 출력하는 것을 포함할 수도 있다.
다른 양태에서, 본 출원은 물리적 오브젝트의 삼차원 위치를 나타내는 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법을 설명하는데, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되되, 여기서 볼륨은 자식 서브 볼륨의 제1 세트 및 자식 서브 볼륨의 제2 세트로 구획되고, 자식 서브 볼륨의 제1 세트는 제1 평면에서 배치되고 자식 서브 볼륨의 제2 세트는 제1 평면에 평행한 제2 평면에서 배치되며, 그리고 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 그 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타낸다. 방법은 볼륨이 평면인지의 여부 - 볼륨은, 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨이 제1 세트 또는 제2 세트 중 어느 하나에 배치되는 경우 평면임 - 를 나타내는 평면 모드 플래그를 비트스트림으로부터 디코딩하는 것에 의해 점유 비트를 재구성하는 것에 의해 포인트 클라우드의 포인트를 재구성하는 것; 및 적어도 하나의 점유 비트에 대해, 그것의 값을 추론하는 것 및 볼륨이 평면인지의 여부에 기초하여 비트스트림으로부터 그것을 디코딩하지 않는 것을 포함하는, 제1 세트 내의 자식 서브 볼륨에 대한 점유 비트를 비트스트림으로부터 디코딩하는 것을 포함할 수도 있다.
몇몇 구현예에서, 볼륨이 평면인지의 여부를 결정하는 것은, 제1 세트 내의 자식 서브 볼륨 중 적어도 하나가 포인트 중 적어도 하나를 포함한다는 것 및 제2 세트 내의 자식 서브 볼륨 중 어느 것도 포인트의 어느 것도 포함하지 않는다는 것을 결정하는 것에 의해 볼륨이 평면이다는 것을 결정하는 것을 포함할 수도 있고, 방법은, 볼륨이 평면인 것에 기초하여, 자식 서브 볼륨 중 상기 적어도 하나가 제1 평면 내에 있다는 것을 시그널링하기 위해 평면 포지션 플래그를 인코딩하는 것을 더 포함할 수도 있다. 그러한 구현예에서, 몇몇 경우에, 점유 비트를 인코딩하는 것은, 제2 세트와 관련되는 점유 비트를 코딩하는 것을 억제하는 것 및 포인트를 포함하지 않는 제2 세트에 기초하여 제2 세트와 관련되는 점유 비트에 대한 값을 추론하는 것을 포함한다. 점유 비트를 인코딩하는 것은, 코딩 순서에서 제1 세트의 모든 다른 점유 비트가 비점유됨(unoccupied)을 나타내는 값을 갖는다는 것을 결정하는 것에 기초하여 점유됨(occupied)을 나타내는 값을 가지도록 코딩 순서에서 제1 세트와 관련되는 점유 비트 중 마지막 하나를 추론하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 볼륨이 평면인지의 여부를 결정하는 것은, 볼륨이 평면이 아니다는 것을 결정하는 것, 및 그것을 기반으로, 제1 세트 내의 점유 비트 중 적어도 하나 및 제2 세트 내의 점유 비트 중 적어도 하나가 점유됨을 나타내는 값을 갖는 것에 기초하여 점유 비트를 인코딩하는 것을 포함한다.
몇몇 구현예에서, 포인트 클라우드는 체적 공간에서 데카르트 축(Cartesian axis) - 데카르트 축은 수평 평면에 수직인 수직 배향된 z 축을 가짐 - 과 관련하여 정의되고, 제1 평면 및 제2 평면은 수평 평면에 평행하다. 몇몇 다른 구현예에서, 제1 평면 및 제2 평면은 수평 평면에 직교한다.
몇몇 구현예에서, 방법은, 먼저, 볼륨이 평면 모드 코딩에 대해 적격이다는 것을 결정하는 것을 포함한다. 볼륨이 평면 모드 코딩에 대해 적격이다는 것을 결정하는 것은, 평면성의 확률을 결정하는 것 및 평면성의 확률이 임계 적격성 값보다 더 크다는 것을 결정하는 것을 포함할 수도 있다.
몇몇 구현예에서, 평면 모드 플래그를 인코딩하는 것은, 수평 평면 모드 플래그를 인코딩하는 것 및 수직 평면 모드 플래그를 인코딩하는 것을 포함할 수도 있다.
또 다른 양태에서, 본 출원은 오브젝트의 삼차원 위치를 나타내는 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 포인트 클라우드를 인코딩하는 방법을 설명하는데, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되되, 여기서 볼륨은 자식 서브 볼륨의 제1 세트 및 자식 서브 볼륨의 제2 세트로 구획되고, 자식 서브 볼륨의 제1 세트는 제1 평면에서 배치되고 자식 서브 볼륨의 제2 세트는 제1 평면에 평행한 제2 평면에서 배치되며, 그리고 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 그 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타내고, 제1 평면 및 제2 평면 둘 모두는 축에 직교한다. 방법은 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨이 제1 세트 또는 제2 세트 중 어느 하나에 배치되는지의 여부에 기초하여 볼륨이 평면인지의 여부를 결정하는 것; 볼륨이 평면인지의 여부를 시그널링하기 위해 평면 모드 플래그를 비트스트림에서 엔트로피 인코딩하는 것 - 엔트로피 인코딩은, 다음의 것 중 하나 이상에 부분적으로 기초하여 평면 모드 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 포함함: (a) 볼륨을 포함하는 부모(parent) 볼륨이 점유에서 평면인지의 여부, (b) 부모 깊이에서 이웃하는 볼륨 - 이웃하는 볼륨은 볼륨에 인접하며 부모 볼륨과 공통인 면을 가짐 - 의 점유, 또는 (c) 볼륨과 동일한 깊이에 있고 축 상에서 볼륨과 동일한 포지션을 갖는 가장 가까운 이미 코딩된 점유된 볼륨과 볼륨 사이의 거리 - ; 자식 서브 볼륨의 적어도 일부에 대한 점유 비트를 인코딩하는 것; 및 압축된 포인트 클라우드 데이터의 비트스트림을 출력하는 것을 포함할 수도 있다.
또 다른 양태에서, 본 출원은 물리적 오브젝트의 삼차원 위치를 나타내는 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법을 설명하는데, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되되, 여기서 볼륨은 자식 서브 볼륨의 제1 세트 및 자식 서브 볼륨의 제2 세트로 구획되고, 자식 서브 볼륨의 제1 세트는 제1 평면에서 배치되고 자식 서브 볼륨의 제2 세트는 제1 평면에 평행한 제2 평면에서 배치되며, 그리고 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 그 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타내고, 제1 평면 및 제2 평면 둘 모두는 축에 직교한다. 방법은, 볼륨이 평면인지의 여부 - 볼륨은, 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨이 제1 세트 또는 제2 세트 중 어느 하나에 배치되는 경우 평면임 - 를 나타내는 평면 모드 플래그를 비트스트림으로부터 엔트로피 디코딩 - 엔트로피 디코딩은, 다음의 것 중 하나 이상에 부분적으로 기초하여 평면 모드 플래그를 디코딩하기 위한 컨텍스트를 결정하는 것을 포함함: (a) 볼륨을 포함하는 부모 볼륨이 점유에서 평면인지의 여부, (b) 부모 깊이에서 이웃하는 볼륨 - 이웃하는 볼륨은 볼륨에 인접하며 부모 볼륨과 공통인 면을 가짐 - 의 점유, 또는 (c) 볼륨과 동일한 깊이에 있고 축 상에서 볼륨과 동일한 포지션을 갖는 가장 가까운 이미 코딩된 점유된 볼륨과 볼륨 사이의 거리 - 하는 것에 의해 점유 비트를 재구성하는 것에 의해 포인트 클라우드의 포인트를 재구성하는 것; 및 자식 서브 볼륨에 대한 점유 비트를 재구성하는 것을 포함할 수도 있다.
몇몇 구현예에서, 부모 볼륨이 평면이다는 것을 부모 평면 모드 플래그가 나타내는 경우 볼륨을 포함하는 부모 볼륨은 점유에서 평면이다.
몇몇 구현예에서, 거리는 가깝거나 또는 멀고 거리 메트릭을 계산하는 것 및 그것을 임계치에 비교하는 것에 기초할 수도 있다.
몇몇 구현예에서, 평면 모드 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은 (a), (b) 및 (c)의 조합에 기초할 수도 있다.
몇몇 구현예에서, 볼륨이 평면인지의 여부를 결정하는 것은, 볼륨이 평면이다는 것을 결정하는 것, 및, 결과적으로, 적어도 하나의 포인트가 제1 세트에서 배치되는지 또는 제2 세트에서 배치되는지의 여부를 시그널링하기 위해 평면 포지션 플래그를 엔트로피 인코딩하는 것을 포함한다. 평면 포지션 플래그를 엔트로피 인코딩하는 것은 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 포함할 수도 있다. 컨텍스트를 결정하는 것은 다음의 것 중 하나 이상에 부분적으로 기초할 수도 있다: (a') 부모 깊이에서 이웃하는 볼륨의 점유; (b') 볼륨과 가장 가까운 이미 코딩된 점유된 볼륨 사이의 거리; (c') 만약 있다면, 가장 가까운 이미 코딩된 점유된 볼륨의 평면 포지션; 또는 (d') 부모 볼륨 내에서의 볼륨의 포지션. 몇몇 경우에, 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은 (a'), (b'), (c') 및 (d') 중 세 개 이상의 조합에 기초할 수도 있다.
몇몇 구현예에서, 거리는 가깝거나, 너무 멀지도 않거나, 또는 멀고 거리 메트릭을 계산하는 것 및 그것을 제1 임계치 및 제2 임계치에 비교하는 것에 기초할 수도 있다.
추가적인 양태에서, 본 출원은, 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트를 포함하는 빔 어셈블리에 의해 획득되는 포인트 클라우드(예를 들면, 포인트 클라우드의 기하학적 형상(geometry))를 인코딩하는 방법을 설명한다. 포인트 클라우드(예를 들면, 포인트 클라우드의 기하학적 형상)는 부모-자식 관계를 가지며 오브젝트의 삼차원 위치를 나타내는 복수의 노드를 갖는 트리 구조에서(예를 들면, 트리 구조에 의해) 정의될 수도 있다. 또한, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에서 위치될 수도 있다. 볼륨은 자식 서브 볼륨의 세트로 구획될 수도 있다. 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 각기 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타낼 수도 있다. 방법은, 자식 서브 볼륨으로 분할되는 볼륨과 관련되는 현재의 노드에 대해, 볼륨의 자식 서브 볼륨의 점유 상태에 기초하여 볼륨에 대한 점유 패턴을 결정하는 것을 포함할 수도 있다. 방법은 점유 패턴의 표현을 비트스트림에 엔트로피 인코딩하는 것을 더 포함할 수도 있다. 거기에서, 점유 패턴을 엔트로피 인코딩하는 것은, 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 각도 정보(angular information)를 결정하는 것을 포함할 수도 있다. 각도 정보는 체적 공간 내의 빔 어셈블리와 관련되는 위치에 대한 하나 이상의 앙각(elevation angle)을 나타낼 수도 있다. 점유 패턴을 엔트로피 인코딩하는 것은, 각도 정보에 기초하여 점유 패턴의 표현을 인코딩하기 위한 컨텍스트를 결정하는 것을 더 포함할 수도 있다. 점유 패턴을 엔트로피 인코딩하는 것은, 결정된 컨텍스트를 사용하여 점유 패턴의 표현을 엔트로피 인코딩하는 것을 여전히 더 포함할 수도 있다.
추가적인 양태에서, 본 출원은, 재구성된 포인트 클라우드(예를 들면, 재구성된 포인트 클라우드의 기하학적 형상)를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법을 설명한다. 포인트 클라우드(예를 들면, 포인트 클라우드의 기하학적 형상)는 빔의 세트를 포함하는 빔 어셈블리에 의해 획득되었을 수도 있다. 포인트 클라우드는, 부모-자식 관계를 가지며 오브젝트의 삼차원 위치를 나타내는 복수의 노드를 갖는 트리 구조에서(예를 들면, 트리 구조에 의해) 정의될 수도 있다. 또한, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에서 위치될 수도 있다. 볼륨은 자식 서브 볼륨의 세트로 구획될 수도 있다. 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 각기 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타낼 수도 있다. 방법은, 자식 서브 볼륨으로 분할되는 볼륨과 관련되는 현재의 노드에 대해, 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 각도 정보를 결정하는 것을 포함할 수도 있다. 각도 정보는 체적 공간 내의 빔 어셈블리와 관련되는 위치에 대한(그리고, 예를 들면, 빔 어셈블리와 관련되는 위치를 포함하는 평면, 예컨대 수평 평면에 대한) 하나 이상의 앙각을 나타낼 수도 있다. 방법은 각도 정보에 기초하여 볼륨의 점유 패턴의 표현을 디코딩하기 위한 컨텍스트를 결정하는 것을 더 포함할 수도 있다. 점유 패턴은 볼륨의 자식 서브 볼륨의 점유 상태를 나타낼 수도 있다. 방법은 결정된 컨텍스트를 사용하여 점유 패턴의 재구성된 표현을 생성하기 위해 비트스트림을 엔트로피 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 각도 정보를 결정하는 것은, 빔 어셈블리의 기준 위치에 대한 볼륨 내의 기준 위치에 대한 제1 앙각을 결정하는 것을 포함할 수도 있다. 각도 정보를 결정하는 것은, 제1 앙각에 기초하여, 볼륨 내의 포인트를 획득한 것으로 추정되는 특정한 빔을 결정하는 것을 더 포함할 수도 있다. 각도 정보를 결정하는 것은 특정한 빔의 원점 위치를 결정하는 것을 더 포함할 수도 있다. 각도 정보를 결정하는 것은, 특정한 빔의 원점 위치에 대한 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 하나 이상의 앙각을 결정하는 것을 여전히 더 포함할 수도 있다.
몇몇 구현예에서, 방법은, 먼저, 빔 어셈블리의 기준 위치로부터 봤을 때 볼륨의 각도 사이즈의 척도(measure)를 결정하는 것에 의해, 볼륨이 각도 정보에 기초하여 컨텍스트를 결정하기에 적격이다는 것을 결정하는 것을 더 포함할 수도 있다. 볼륨이 적격이다는 것을 결정하는 것은, 각도 사이즈의 척도를 빔 어셈블리의 인접한 빔 사이의 차이 각도의 척도에 비교하는 것을 더 포함할 수도 있다. 볼륨이 적격이다는 것을 결정하는 것은, 볼륨이 각도 정보에 기초하여 컨텍스트를 결정하기에 적격이다는 것을, 비교의 결과에 기초하여, 결정하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 평면의 볼륨은, 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨이 동일한 평면 내에 배치되는, 각각의 평행한 평면의 자식 서브 볼륨의 복수의 세트로 구획되는 볼륨일 수도 있다. 그 다음, 점유 패턴의 표현을 코딩하기 위한 컨텍스트를 결정하는 것은, 각도 정보에 기초하여 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 포함할 수도 있다. 평면 포지션 플래그는 적어도 하나의 포인트를 포함하는 자식 서브 볼륨이 배치되는 평면의 포지션을 시그널링할 수도 있다. 게다가, 점유 패턴의 표현을 엔트로피 코딩하는 것은, 결정된 컨텍스트를 사용하여 평면 포지션 플래그를 엔트로피 코딩하는 것을 포함할 수도 있다.
몇몇 구현예에서, 각도 정보를 결정하는 것은, 특정한 빔의 원점 위치에 대해, 복수의 평행한 평면 각각에 대한 각각의 앙각을 결정하는 것을 포함할 수도 있다. 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은 (예를 들면, 각각의 각도 사이의 차이를 계산하는 것에 의해) 복수의 평행한 평면 각각에 대한 각각의 앙각을, 특정한 빔의 빔 각도에 비교하는 것을 포함할 수도 있다. 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은, 각각의 비교의 결과에 기초하여, 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 각각의 비교의 결과에 기초하여 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은, 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이, 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기, 및/또는 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기 중 가장 큰 것과, 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기 중 가장 작은 것 사이의 차이의 양자화(quantization) 결과 중 적어도 하나에 기초할 수도 있다.
몇몇 구현예에서, 점유 패턴의 표현을 코딩하기 위한 컨텍스트를 결정하는 것은 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것을 포함할 수도 있다. 그 다음, 점유 패턴의 표현을 엔트로피 코딩하는 것은 결정된 컨텍스트를 사용하여 점유 비트를 엔트로피 코딩하는 것을 포함할 수도 있다.
몇몇 구현예에서, 각도 정보를 결정하는 것은, 특정한 빔의 원점 위치에 대해, 볼륨의 자식 서브 볼륨 각각에 대한 각각의 앙각을 결정하는 것을 포함할 수도 있다. 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것은, 볼륨의 자식 서브 볼륨 각각에 대한 각각의 앙각을, 특정한 빔의 빔 각도에 비교하는 것을 포함할 수도 있다. 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것은, 각각의 비교의 결과에 기초하여, 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 빔 어셈블리는 회전하는 빔 어셈블리일 수도 있다. 포인트 클라우드는 체적 공간에서 데카르트 축과 관련하여 정의될 수도 있다. 데카르트 축은 수평 평면에 수직이며 회전하는 빔 어셈블리의 회전 축에 실질적으로 평행한 수직 배향된 z 축을 가질 수도 있다.
몇몇 구현예에서, 비트스트림은 빔 어셈블리의 특성을 설명하는 하나 이상의 파라미터를 포함할 수도 있다.
추가적인 양태에서, 본 출원은, 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법을 설명한다. 포인트 클라우드는 빔의 세트에 의해 획득되었을 수도 있다. 게다가, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치될 수도 있다. 방법은, 비트스트림으로부터, 각도 모드(angular mode)가 포인트 클라우드 데이터를 코딩하기 위해 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터를 디코딩하는 것을 포함할 수도 있다. 방법은, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 제1 파라미터가 나타내는 경우, 비트스트림으로부터, 각각의 빔 원점 위치에 대한 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보를 디코딩하는 것을 더 포함할 수도 있다. 방법은, 서브 볼륨으로 분할되는 현재의 볼륨에 대해, 빔의 세트와 관련되는 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도에 관련이 있는 제2 각도 정보를 결정하는 것을 더 포함할 수도 있다. 방법은 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨에 대한 포인트 클라우드 데이터를 디코딩하는 것을 여전히 더 포함할 수도 있다.
몇몇 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 비트스트림으로부터, 빔 어셈블리 내의 빔의 개수를 나타내는 제2 파라미터를 디코딩하는 것 및 제2 파라미터에 기초하여 빔 어셈블리 내의 빔의 개수를 결정하는 것을 포함할 수도 있다. 방법은, 제2 파라미터에 의해 나타내어지는 빔의 개수 중의 각각의 빔에 대해, 비트스트림으로부터, 각각의 빔의 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터를 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 각각의 빔의 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터를 디코딩하는 것은 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 것을 포함할 수도 있다. 하나 이상의 제3 파라미터를 디코딩하는 것은, 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우, 빔 어셈블리의 메인 축을 따르는 빔의 빔 원점 위치의 좌표를 나타내는 파라미터를 디코딩하는 것을 더 포함할 수도 있다. 하나 이상의 제3 파라미터를 디코딩하는 것은, 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 변위되는지의 여부를 나타내는 파라미터를 디코딩하는 것을 더 포함할 수도 있다. 하나 이상의 제3 파라미터를 디코딩하는 것은, 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우, 그리고 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 변위되는 경우, 빔 어셈블리의 메인 축으로부터 빔 원점 위치의 변위를 표현하는 파라미터를 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 각각 포함하는 빔 어셈블리의 개수를 나타내는 제4 파라미터를 비트스트림이 포함하는지의 여부를 체크하는 것, 및 만약 그렇다면, 비트스트림으로부터 제4 파라미터를 디코딩하는 것을 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 제4 파라미터가 존재하지 않거나 또는 제로와 동일한 경우, 빔 어셈블리의 개수를 1인 것으로 추론하는 것을 더 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 제4 파라미터가 1과 동일한 경우, 2를 뺀 빔 어셈블리의 개수를 나타내는 제5 파라미터를 디코딩하는 것을 여전히 더 포함할 수도 있다.
몇몇 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리의 기준 위치가 체적 공간의 좌표 시스템의 원점에 있는지의 여부를 나타내는 제6 파라미터를 비트스트림이 포함하는지의 여부를 체크하는 것, 및 만약 그렇다면, 제6 파라미터를 디코딩하는 것을 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 제6 파라미터가 비트스트림에서 존재하지 않는 경우, 또는 빔 어셈블리의 기준 위치가 좌표 시스템의 원점에 있다는 것을 제6 파라미터가 나타내는 경우, 좌표 시스템의 원점을 빔 어셈블리의 기준 위치로서 간주하는 것을 더 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 그렇지 않다면, 비트스트림으로부터, 빔 어셈블리의 기준 위치의 좌표를 나타내는 파라미터를 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 비트스트림으로부터, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되는지의 여부를 나타내는 제7 파라미터를 디코딩하는 것을 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열된다는 것을 제7 파라미터가 나타내는 경우, 빔 어셈블리의 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터를 디코딩하는 것, 및 특정한 좌표 축을 빔 어셈블리의 메인 축(예를 들면, 메인 축의 방위)으로서 간주하는 것을 더 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 그렇지 않다면, 빔 어셈블리의 메인 축의 방위를 표현하는 각도를 나타내는 파라미터를 디코딩하는 것 및 이들 파라미터에 기초하여 빔 어셈블리의 메인 축을 결정하는 것을 더 포함할 수도 있다. 메인 축은 빔 어셈블리의 기준 위치를 통해 이어지는 것으로 가정될 수도 있다.
몇몇 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 비트스트림으로부터, 빔 어셈블리 내의 빔의 개수를 나타내는 제8 파라미터를 디코딩하는 것 및 제8 파라미터에 기초하여 빔 어셈블리 내의 빔의 개수를 결정하는 것을 포함할 수도 있다. 제1 각도 정보를 디코딩하는 것은, 빔 어셈블리 내의 빔의 개수 중의 각각의 빔에 대해, 비트스트림으로부터, 각각의 빔의 빔 각도를 나타내는 하나 이상의 제9 파라미터를 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 각각의 빔의 빔 각도를 나타내는 하나 이상의 제9 파라미터를 디코딩하는 것은, 빔 각도가 각도의 탄젠트로서 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 것을 포함할 수도 있다. 하나 이상의 제9 파라미터를 디코딩하는 것은 빔 각도를 표현하는 파라미터를 디코딩하는 것을 더 포함할 수도 있다.
몇몇 구현예에서, 방법은, 볼륨이 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨에 대한 포인트 클라우드 데이터를 디코딩하기에 적격이다는 것을 먼저 결정하는 것을 더 포함할 수도 있다. 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리의 경우, 각도 적격성의 결정은 빔 어셈블리의 기준 위치로부터 봤을 때 볼륨의 각도 사이즈의 척도를 결정하는 것을 포함할 수도 있다. 각도 적격성의 결정은, 각도 사이즈의 척도를, 빔 어셈블리의 인접한 빔의 각도 사이의 차이 각도의 척도에 비교하는 것을 더 포함할 수도 있다. 각도 적격성의 결정은, 볼륨이 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨에 대한 포인트 클라우드 데이터를 디코딩하기에 적격인지의 여부(또는 적격이다는 것)를, 비교의 결과에 기초하여, 결정하는 것을 여전히 더 포함할 수도 있다.
몇몇 구현예에서, 제2 각도 정보를 결정하는 것은 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리의 기준 위치와 관련하여 볼륨 내의 기준 위치에 대한 제1 각도를 결정하는 것을 포함할 수도 있다. 제2 각도 정보를 결정하는 것은, 제1 앙각에 기초하여, 볼륨 내의 포인트를 획득한 것으로 가정되는 빔 어셈블리의 특정한 빔을 결정하는 것을 더 포함할 수도 있다. 제2 각도 정보를 결정하는 것은 특정한 빔의 빔 원점 위치를 결정하는 것을 더 포함할 수도 있다. 제2 각도 정보를 결정하는 것은 특정한 빔의 빔 원점 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도를 결정하는 것을 여전히 더 포함할 수도 있다.
추가적인 양태에서, 본 출원은, 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하는 방법을 설명한다. 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치될 수도 있다. 방법은, 포인트 클라우드 데이터를 코딩하기 위해 각도 모드가 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터를 비트스트림에 인코딩하는 것을 포함할 수도 있다. 방법은, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 제1 파라미터가 나타내는 경우, 비트스트림에, 각각의 빔 원점 위치에 대한 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보를 인코딩하는 것을 더 포함할 수도 있다. 방법은, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 제1 파라미터가 나타내는 경우, 서브 볼륨으로 분할되는 현재의 볼륨에 대해, 빔의 세트와 관련되는 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도에 관련이 있는 제2 각도 정보를 결정하는 것을 여전히 더 포함할 수도 있다. 방법은, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 제1 파라미터가 나타내는 경우, 현재의 볼륨에 대해, 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨에 대한 포인트 클라우드 데이터를 인코딩하는 것을 여전히 더 포함할 수도 있다.
추가적인 양태에서, 본 출원은 인코딩 및 디코딩의 그러한 방법을 구현하도록 구성되는 인코더 및 디코더를 설명한다.
여전히 또 다른 양태에서, 본 출원은, 실행될 때, 하나 이상의 프로세서로 하여금, 인코딩 및/또는 디코딩의 설명된 방법을 수행하게 하는, 컴퓨터 실행 가능 프로그램 명령어를 저장하는 비일시적 컴퓨터 판독 가능 매체를 설명한다.
여전히 다른 양태에서, 본 출원은, 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 인코딩 및/또는 디코딩의 설명된 방법을 수행하게 하는 프로그램 명령어를 포함하는 컴퓨터 판독 가능 신호를 설명한다.
본 출원의 다른 양태 및 피쳐는, 첨부의 도면과 연계한 예의 다음의 설명의 재검토로부터 기술 분야에서 통상의 지식을 가진 자에 의해 이해될 것이다.
본 발명의 하나의 양태 또는 실시형태와 관련하여 설명되는 임의의 피쳐는 하나 이상의 다른 양태/실시형태와 관련하여 또한 사용될 수도 있다. 본 발명의 이들 및 다른 양태는 본원에서 설명되는 실시형태로부터 명백할 것이고, 그 실시형태를 참조하여 설명될 것이다.
때때로 하기의 설명에서, 용어 "노드", "볼륨" 및 "서브 볼륨"은 상호 교환 가능하게 사용될 수도 있다. 노드는 볼륨 또는 서브 볼륨과 관련된다는 것이 인식될 것이다. 노드는, 내부 노드 또는 리프 노드일 수도 있는 트리 상의 특정한 포인트이다. 볼륨 또는 서브 볼륨은 노드가 나타내는 한정된 물리적 공간이다. 용어 "볼륨"은, 몇몇 경우에, 포인트 클라우드를 포함하도록 정의되는 가장 큰 한정된 공간을 가리키기 위해 사용될 수도 있다. 볼륨은, 포인트 클라우드 데이터를 코딩하기 위한 인터커넥트된 노드의 트리 구조를 구축하는 목적을 위해 서브 볼륨으로 재귀적으로 분할될 수도 있다. 서브 볼륨으로 볼륨을 구획하는(partitioning) 트리형 구조는, "부모" 및 "자식" 관계로서 지칭될 수도 있는데, 여기서 서브 볼륨은 부모 노드 또는 부모 볼륨에 대한 자식 노드 또는 자식 서브 볼륨이다. 동일한 볼륨 내의 서브 볼륨은 형제(sibling) 노드 또는 형제 서브 볼륨으로서 지칭될 수도 있다.
본 출원에서, 용어 "및/또는"은, 나열된 엘리먼트 중 임의의 하나 단독, 엘리먼트의 임의의 하위 조합, 또는 모두를 포함하는, 그리고, 추가적인 엘리먼트를 반드시 배제하지는 않는, 나열된 엘리먼트의 모든 가능한 조합 및 하위 조합을 포괄하도록 의도된다.
본 출원에서, 어구 "... 또는... 중 적어도 하나"는, 나열된 엘리먼트 중 임의의 하나 단독, 엘리먼트의 임의의 하위 조합, 또는 모두를 포함하는, 임의의 추가적인 엘리먼트를 반드시 배제하지는 않는, 그리고 엘리먼트의 모두를 반드시 필요로 하지는 않는, 나열된 엘리먼트의 임의의 하나 이상을 포괄하도록 의도된다.
포인트 클라우드는 삼차원 좌표 시스템에서의 포인트의 세트이다. 포인트는 종종 하나 이상의 오브젝트의 외부 표면을 나타내도록 의도된다. 각각의 포인트는 삼차원 좌표 시스템에서 한 위치(포지션)를 갖는다. 포지션은 세 개의 좌표 (X, Y, Z)에 의해 표현될 수도 있는데, 이것은 데카르트 또는 임의의 다른 좌표 시스템일 수 있다. 포인트는 컬러와 같은 다른 관련된 속성을 가질 수도 있는데, 이것은 또한, 몇몇 경우에, R, G, B 또는 Y, Cb, Cr과 같은, 또한 세 가지 성분 값일 수도 있다. 다른 관련된 속성은, 포인트 클라우드 데이터에 대한 소망되는 애플리케이션에 따라, 투명도, 반사율, 법선 벡터, 등등을 포함할 수도 있다.
포인트 클라우드는 정적일 수 있거나 또는 동적일 수 있다. 예를 들면, 오브젝트 또는 지형의 상세한 스캔 또는 매핑은 정적 포인트 클라우드 데이터일 수도 있다. 머신 비전 목적을 위한 환경의 LiDAR 기반의 스캐닝은, 포인트 클라우드가 (적어도 잠재적으로) 시간이 지남에 따라, 예를 들면, 볼륨의 각각의 연속 스캔과 함께, 변경된다는 점에서, 동적일 수도 있다. 따라서, 동적 포인트 클라우드는 포인트 클라우드의 시간 순서의 시퀀스이다.
포인트 클라우드 데이터는, 보존(예컨대, 역사적 또는 문화적 오브젝트의 스캐닝), 매핑, 머신 비전(예컨대 자율 또는 반자율 자동차), 및 가상 현실 시스템을 비롯한, 다수의 애플리케이션에서 사용되어, 몇몇 예를 제공할 수도 있다. 머신 비전과 같은 애플리케이션을 위한 동적 포인트 클라우드 데이터,는 보존 목적을 위한 것과 같은 정적 포인트 클라우드 데이터와는 상당히 상이할 수 있다. 예를 들면, 자동차 비전은, 통상적으로, 캡쳐의 빈도가 높은 LiDAR(또는 유사한) 센서를 통해 획득되는 상대적으로 작은 해상도, 무색, 고도로 동적인 포인트 클라우드를 수반한다. 그러한 포인트 클라우드의 목적은 사람이 소비하거나 또는 보기 위한 것이 아니라, 오히려, 결정 프로세스에서 머신 오브젝트 검출/분류를 위한 것이다. 한 예를 들면, 통상적인 LiDAR 프레임은 대략 수만 개의 포인트를 포함하고, 반면 고품질 가상 현실 애플리케이션은 수백만 개의 포인트를 필요로 한다. 계산 속도가 증가하고 새로운 애플리케이션이 발견됨에 따라, 시간이 지남에 따라 더 높은 해상도의 데이터에 대한 요구가 있을 것이다는 것이 예상될 수도 있다.
포인트 클라우드 데이터가 유용하지만, 효과적이고 효율적인 압축, 즉 인코딩 및 디코딩 프로세스의 결여는, 채택 및 배치를 방해할 수도 있다. 오디오 또는 비디오와 같은 다른 데이터 압축의 경우에는 발생하지 않는 포인트 클라우드 코딩에서의 특정한 도전 과제는 포인트 클라우드의 기하학적 형상의 코딩이다. 포인트 클라우드는 희박하게 배치되는 경향이 있는데, 이것은, 포인트의 위치를 효율적으로 코딩하는 것을 그만큼 더 어렵게 만든다.
포인트 클라우드 데이터를 코딩하기 위한 더욱 일반적인 메커니즘 중 하나는 트리 기반의 구조를 사용하는 것을 통한다. 트리 기반의 구조에서, 포인트 클라우드에 대한 경계를 짓는 삼차원 볼륨은 서브 볼륨으로 재귀적으로 분할된다. 트리의 노드는 서브 볼륨에 대응한다. 서브 볼륨을 추가로 분할할지 또는 하지 않을지의 여부의 결정은 트리의 해상도 및/또는 서브 볼륨에 포함되는 임의의 포인트가 있는지의 여부에 기초할 수도 있다. 노드는, 자신의 관련된 서브 볼륨이 포인트를 포함하는지 또는 그렇지 않은지의 여부를 나타내는 점유 플래그를 가질 수도 있다. 분할 플래그는, 노드가 자식 노드를 갖는지의 여부(즉, 현재의 볼륨이 서브 볼륨으로 추가로 분할되었는지의 여부)를 시그널링할 수도 있다. 이들 플래그는, 몇몇 경우에, 엔트로피 코딩될 수도 있고, 몇몇 경우에, 예측 코딩이 사용될 수도 있다.
포인트 클라우드의 삼차원 볼륨은 경계 박스(bounding box)를 사용하는 것에 의해 또한 정의될 수 있다. 경계 박스에 대한 쿼드트리 플러스 이진 트리(quad-tree plus binary-tree; QTBT) 구조는, 포인트 클라우드 또는 포인트 클라우드 내의 오브젝트의 전체 형상을 더 잘 표현할 수도 있는 비 정육면체 볼륨(non-cubic volume) 단위로 포인트 클라우드를 구획하는 것을 허용한다. 쿼드트리(quad-tree; QT) 구획화(partitioning)는, 예를 들면 볼륨을 네 개의 부분으로 절단하는 두 개의 평면을 사용하여 볼륨을 분할하는 것에 의해, 볼륨을 네 개의 서브 볼륨으로 분할한다. 이진 트리(binary tree; BT) 구획화는, 예를 들면, 볼륨을 두 개의 부분으로 절단하는 하나의 평면을 사용하여 볼륨을 분할하는 것에 의해, 볼륨을 두 개의 서브 볼륨으로 분할한다.
일반적으로 사용되는 트리 구조는 옥트리(octree)이다. 이 구조에서, 볼륨/서브 볼륨은 모두 정육면체(cube)이며 서브 볼륨의 각각의 분할은 여덟 개의 추가적인 서브 볼륨/하위 정육면체로 나타난다. 다른 일반적으로 사용되는 트리 구조는 KD 트리(KD-tree)인데, 여기서는 볼륨(정육면체 또는 직사각형의 직육면체)은 축 중 하나에 직교하는 평면에 의해 재귀적으로 둘 단위로 분할된다. 옥트리는 KD 트리의 특수한 경우인데, 여기서는 볼륨이 세 개의 평면에 의해 분할되고, 각각은 세 개의 축 중 하나에 직교한다. KD 트리는 통상적으로 이진 트리(BT) 구획화를 재귀적으로 적용하는 것에 의해 획득될 수도 있다.
볼륨의 구획화는 반드시 두 개의 서브 볼륨(KD 트리) 또는 여덟 개의 서브 볼륨(옥트리)으로 분할되는 것은 아니지만, 그러나 비 직육면체 형상으로의 분할을 포함하는 또는 인접하지 않은 서브 볼륨을 수반하는 다른 파티션을 수반할 수 있다.
본 출원은, 설명의 용이성을 위해 그리고 자동차 애플리케이션을 위한 인기 있는 후보 트리 구조이기 때문에, 옥트리를 참조할 수도 있지만, 그러나 본원에서 설명되는 방법 및 디바이스는 다른 트리 구조를 사용하여 구현될 수도 있다는 것이 이해될 것이다.
이제 본 출원의 양태에 따른 포인트 클라우드 인코더(10)의 단순화된 블록도를 도시하는 도 1에 대한 참조가 이루어진다. 포인트 클라우드 인코더(10)는 포인트 클라우드 데이터를 수신하기 위한 그리고 포인트 클라우드를 포함하는 체적 공간의 기하학적 형상을 나타내며 그 기하학적 형상에서의 포인트 클라우드로부터의 포인트의 위치 또는 포지션을 나타내는 트리(이 예에서는 옥트리)를 생성하기 위한 트리 구축 모듈(12)을 포함한다.
옥트리와 같이, 균일하게 구획되는 트리 구조의 경우, 각각의 노드는 점유 비트의 시퀀스에 의해 표현될 수도 있는데, 여기서 각각의 점유 비트는 노드의 서브 볼륨 중 하나에 대응하고 서브 볼륨이 적어도 하나의 포인트를 포함하는지 또는 포함하지 않는지의 여부를 시그널링한다. 점유된 서브 볼륨은 트리의 최대 깊이까지 재귀적으로 분할된다. 이것은 트리의 직렬화 또는 이진화로서 언급될 수도 있다. 도 1에서 도시되는 바와 같이, 이 예에서, 포인트 클라우드 인코더(10)는 트리를 나타내는 이진화된 데이터의 비트스트림을 생성하기 위해 옥트리를 이진화하기 위한 이진화기(binarizer; 14)를 포함한다.
비트의 이 시퀀스는, 그 다음, 압축된 비트스트림을 생성하기 위해 엔트로피 인코더(16)를 사용하여 인코딩될 수도 있다. 엔트로피 인코더(16)는, 엔트로피 인코더(16)에 의한 컨텍스트 결정에 기초하여 비트를 코딩하기 위한 확률을 명시하는 컨텍스트 모델(18)을 사용하여 비트의 시퀀스를 인코딩할 수도 있다. 컨텍스트 모델(18)은 각각의 비트 또는 비트의 정의된 세트의 코딩 이후에 적응적으로 업데이트될 수도 있다. 엔트로피 인코더(16)는, 몇몇 경우에, 이진 산술 인코더일 수도 있다. 이진 산술 인코더는, 몇몇 구현예에서, 컨텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding; CABAC)을 활용할 수도 있다. 몇몇 구현예에서, 산술 코더 이외의 코더가 사용될 수도 있다.
몇몇 경우에, 엔트로피 인코더(16)는 이진 코더가 아닐 수도 있지만, 그러나 대신, 비 이진 데이터(non-binary data)에 대해 동작할 수도 있다. 트리 구축 모듈(12)로부터의 출력 옥트리 데이터는 이진 형태로 평가되지 않을 수도 있지만, 그러나 대신, 비 이진 데이터로서 인코딩될 수도 있다. 예를 들면, 옥트리의 경우, 서브 볼륨 내의 여덟 개의 플래그(예를 들면, 점유 플래그)는 그들의 스캔 순서에서 28 - 1 비트 번호(예를 들면, 값 0이 분할된 서브 볼륨에 대해 가능하지 않기 때문에, 즉, 그것이 완전히 비점유되었던 경우, 그것이 분할되지 않았을 것이기 때문에, 1과 255 사이의 값을 갖는 정수)로서 간주될 수도 있다. 이 번호는 몇몇 구현예에서 다중 심볼 산술 코더를 사용하여 엔트로피 인코더에 의해 인코딩될 수도 있다. 서브 볼륨, 예를 들면, 정육면체 내에서, 이 정수를 정의하는 플래그의 시퀀스는 "패턴"으로서 언급될 수도 있다.
포인트 클라우드 압축에서 통상적으로서 사용되는 규칙은, 1의 점유 비트 값은, 관련된 노드 또는 볼륨이 "점유되는" 것, 즉, 그것이 적어도 하나의 포인트를 포함한다는 것을 시그널링하고, 0의 점유 비트 값은, 관련된 노드 또는 볼륨이 "비점유됨"인 것, 즉, 그것이 포인트를 포함하지 않는다는 것을 시그널링한다는 것이다. 더 일반적으로, 점유 비트는 점유됨을 나타내는 값 또는 비점유됨을 나타내는 값을 가질 수도 있다. 설명의 용이성을 위해 하기의 설명에서는, 1 = 점유됨 및 0 = 비점유됨의 규칙이 사용되는 예시적인 실시형태가 설명될 수도 있다; 그러나, 본 출원은 이 규칙으로 제한되지는 않는다는 것이 이해될 것이다.
인코더(10)에 대응하는 예시적인 포인트 클라우드 디코더(50)의 블록도가 도 2에서 도시된다. 포인트 클라우드 디코더(50)는 인코더(10)에 의해 사용되는 동일한 컨텍스트 모델(54)을 사용하는 엔트로피 디코더(52)를 포함한다. 엔트로피 디코더(52)는 압축된 데이터의 입력 비트스트림을 수신하고 데이터를 엔트로피 디코딩하여 압축 해제된 비트의 출력 시퀀스를 생성한다. 그 다음, 시퀀스는 트리 재구성기(tree reconstructor; 56)에 의해 재구성된 포인트 클라우드 데이터로 변환된다. 트리 재구성기(56)는, 압축 해제된 데이터 및 트리 데이터가 이진화되었던 스캐닝 순서의 지식으로부터 트리 구조를 재구축한다. 따라서, 트리 재구성기(56)는 (트리 코딩의 해상도에 종속되어) 포인트 클라우드로부터의 포인트의 위치를 재구성할 수 있다.
유럽 특허 출원 번호 제18305037.6호에서, 본 출원인은, 특정한 노드 근처의 이전에 코딩된 노드로부터의 몇몇 점유 정보에 기초하여 특정한 노드의 점유의 패턴을 코딩함에 있어서 사용될 이용 가능한 패턴 분포 중에서 선택하기 위한 방법 및 디바이스를 설명하였다. 하나의 예시적인 구현예에서, 점유 정보는 특정한 노드에 대한 부모의 점유의 패턴으로부터 획득된다. 다른 예시적인 구현예에서, 점유 정보는 특정한 노드에 이웃하는 하나 이상의 노드로부터 획득된다. 유럽 특허 출원 번호 제18305037.6호의 내용은 참조에 의해 본원에 통합된다. 이것은 "이웃 구성"을 결정하는 것 및 이웃 구성에 적어도 부분적으로 기초하여 컨텍스트(즉, 패턴 분포)를 선택하는 것으로 지칭된다.
유럽 특허 출원 번호 제18305415.4호에서, 본 출원인은 이진 엔트로피 코딩 점유 패턴에 대한 방법 및 디바이스를 설명하였다. 유럽 특허 출원 번호 제18305415.4호의 내용은 참조에 의해 본원에 통합된다.
소정 타입의 포인트 클라우드 데이터는 강한 방향성을 갖는 경향이 있다. 특히, 비자연적(non-natural) 환경은, 그들 환경이 균일한 표면을 특징으로 하는 경향이 있기 때문에, 강한 방향성을 나타낸다. 예를 들면, LiDAR의 경우, 도로와 인접한 건물의 벽은 일반적으로 수평 또는 수직 평면이다. 방 내부의 실내 스캔의 경우, 바닥, 천장 및 벽은 모두 평면이다. 자동차 비전 및 유사한 애플리케이션의 목적을 위한 LiDAR는 더 낮은 해상도가 되는 경향이 있고 또한 빠르고 효율적으로 압축될 필요가 있다.
옥트리가 모든 경우에서 세 개의 직교하는 평면을 사용하여 정육면체를 여덟 개의 하위 정육면체로 균등하게 분할하는 균일한 구획화 프로세스를 기반으로 하기 때문에, 그들은 효율적인 트리 구조이고, 따라서, 그들의 구조를 시그널링하는 것은 효율적이다. 그러나, 현재 시그널링 프로세스를 사용하는 옥트리는 몇몇 비자연적 환경의 평면적 본질을 인식하는 것으로부터 이용 가능한 효율성을 활용할 수 없다. 그러나, KD 트리는, 포인트 클라우드의 방향성에 맞게 구획화를 더 잘 재단할 수 있다. 이것은 그들을 이들 타입의 환경에 대한 더욱 효율적이고 효과적인 구조로 만든다. KD 트리의 단점은, 그들의 구조의 시그널링이 옥트리보다 훨씬 더 많은 데이터를 필요로 한다는 것이다. KD 트리가 균일하지 않는다는 사실은, 옥트리 압축을 향상시키기 위해 사용되는 기술 중 일부가 KD 트리에 대해 이용 가능하지 않거나 또는 구현하기에 계산적으로 어려울 것이다는 것을 의미한다.
따라서, 수평 및/또는 수직 방향성을 활용하는 것에 의해 압축을 개선하는 방식으로 균일한 구획화 기반의 트리 구조를 사용하여 비자연적 환경을 표현하기 위한 메커니즘을 갖는 것이 유리할 것이다.
본 출원의 하나의 양태에 따르면, 개선된 포인트 클라우드 압축 프로세스 및 디바이스는 평면 코딩 모드를 특징으로 한다. 평면 모드는, 볼륨이 그것의 점유의 관점에서 평면성에 대한 소정의 요건을 충족한다는 것을 나타내기 위해 시그널링된다. 특히, 자신의 점유된 모든 서브 볼륨이 공통 평면 내에 배치되거나 또는 위치되는 경우, 볼륨은 평면이다. 시그널링을 위한 신택스는 볼륨이 평면인지의 여부 및, 만약 그렇다면, 공통 평면의 포지션을 나타낼 수도 있다. 평면성의 이러한 지식을 활용하는 것을 통해, 압축에서의 이득이 달성될 수도 있다. 평면 모드를 가능하게 하기 위한 적격성에 대한 적용 기준 및 평면 모드 시그널링의 컨텍스트 적응 코딩을 위한 메커니즘은 압축 성능을 개선하는 데 도움이 된다.
하기의 설명에서, 평면성은 볼륨 및 서브 볼륨의 구조와 정렬되는 데카르트 축에 대해 가정된다. 그것은, 모든 자신의 점유된 서브 볼륨이 축 중 하나에 직교하는 공통 평면에서 배치되는 경우 볼륨은 평면이다는 것이다. 규칙으로서, 축은, z 축이 수직이다는 것을 가정할 것인데, 즉, (수평) 평면이 z 축에 직교한다는 것을 의미한다. 하기의 많은 예에서, 수평 평면성은 개념을 예시하기 위해 사용될 것이다; 그러나, 본 출원은 수평 평면성으로 제한되지 않으며 x 축, y 축, 또는 x 및 y 축 둘 모두에 대한 수직 평면성을 대안적으로 또는 추가적으로 포함할 수도 있다는 것이 인식될 것이다. 또한, 몇몇 예에서, 평면성은 데카르트 축과의 직교성에 의해 반드시 정렬될 필요는 없을 수도 있다. 예시를 위해, 하나의 예에서, x 및 y 축 둘 모두와 45 도 각도에 있는 대각선 수직 평면성이 정의될 수도 있다.
이제 도 3 및 4에 대한 참조가 이루어지는데, 그 각각은 예시적인 볼륨(300과 400)을 도시한다. 이 예에서, 수평 평면성이 예시되고 논의될 것이지만, 그러나 기술 분야에서 숙련된 자는 수직 또는 다른 평면성으로의 개념의 확장을 인식할 것이다.
볼륨(300)은 여덟 개의 서브 볼륨으로 구획되어 도시된다. 점유된 서브 볼륨은 음영을 사용하여 나타내어지고, 반면 비점유된 서브 볼륨은 비어 있는 것으로 도시된다. 볼륨(300)의 (z 축 또는 수직적 의미에서의) 하위 네 개의 서브 볼륨이 점유된다는 것을 알 수 있을 것이다. 이 점유의 패턴은 수평적으로 평면이다; 즉, 점유된 서브 볼륨의 각각은 동일한 수평 평면 내에 있다, 즉, 동일한 z 포지션을 갖는다. 볼륨(400)은 점유의 수평 평면 패턴의 다른 예를 도시한다. 볼륨(400)의 모든 점유된 서브 볼륨은 동일한 수평 평면 내에 있다. 볼륨(300)은 하위 평면(lower plane)이 점유되는 경우를 도시한다. 볼륨(400)은 상위 평면(upper plane)이 점유되는 경우를 도시한다. 이것은 "평면 포지션"으로 칭해질 수도 있는데, 여기서 평면 포지션은 볼륨 내에서 평면 서브 볼륨이 있는 곳을 시그널링한다. 이 경우, 그것은 이진 '상위(upper)' 또는 '하위(lower)' 신호이다.
볼륨의 평면성은, 평면의 모든 서브 볼륨, 예를 들면, 2×2×2 볼륨의 상위 절반의 모든 서브 볼륨이 점유되는 경우로 제한되지는 않는다. 몇몇 경우에, 그 평면 밖에서 점유된 서브 볼륨이 없다면, 그 평면 내의 서브 볼륨 중 일부만이 점유된다. 사실, 하나만큼 적은 점유된 서브 볼륨이 "평면"으로서 간주될 수도 있다. 볼륨(302, 304, 306, 308, 402, 404, 406, 및 408) 각각은 수평적으로 평면인 점유의 예를 예시한다. 볼륨(308 및 408)과 관련하여, 각각의 경우에 볼륨(308 및 408)의 상위 또는 하위 절반이 비어 있기 때문에, 즉, 모든 점유된 서브 볼륨(이들 예에서는, 하나의 서브 볼륨)이 볼륨(308 및 408)의 하나의 수평의 절반에서 위치되기 때문에, 그들은 수평적으로 평면이 되기 위한 요건을 충족한다는 것을 유의한다. 또한, 이들 예에서, 단일의 점유된 서브 볼륨을 갖는 볼륨은 y 축에 대한 수직 평면성 및 x 축에 대한 수직 평면성에 대한 요건을 충족할 것이다는 것이 또한 인식될 것이다. 즉, 체적(308 및 408)은 세 개의 방향에서 평면이다.
볼륨과 관련한 평면성은 평면 모드 플래그, 예를 들면, isPlanar를 통해 시그널링될 수도 있다. 예를 들면, z 축, y 축, 및 x 축에 대해 가능한 다수의 평면 모드가 있는 경우, 다수의 플래그: isZPlanar, isYPlanar, isXPlanar가 있을 수도 있다. 이 예에서, 예시의 용이성을 위해, 수평 평면 모드만이 인에이블된다는 것이 가정된다.
평면 모드 플래그는 볼륨이 평면인지 또는 아닌지의 여부를 나타낸다. 그것이 평면인 경우, 그러면, 볼륨 내에서의 평면의 포지션을 시그널링하기 위해 제2 신택스 엘리먼트인 평면 포지션 플래그인 planePosition이 사용될 수도 있다. 이 예에서, planePosition 플래그는 평면의 점유된 서브 볼륨이 볼륨의 상위 절반에 있는지 또는 하위 절반에 있는지의 여부를 시그널링한다.
비직교 평면, 예를 들면, 축 중 하나 이상에 대해 대각선인 평면을 수반하는 더 복잡한 구현예에서, 다수의 플래그 또는 비 이진 신택스 엘리먼트를 수반하는 더 복잡한 시그널링 신택스가 사용될 수도 있다.
평면 모드 플래그 및/또는 평면 포지션 플래그는 임의의 적절한 코딩 스킴(scheme)을 사용하여 비트스트림에서 인코딩될 수도 있다. 플래그는, 몇몇 구현예에서, 압축을 개선하기 위해 예측 및/또는 컨텍스트 적응 코딩을 사용하여 엔트로피 인코딩될 수도 있다. 플래그를 코딩하기 위한 컨텍스트를 결정하기 위한 예시적인 기술이 하기에서 추가로 논의된다.
점유 코딩 및 평면 모드
평면성을 시그널링하는 것에 의해, 점유 비트의 코딩이 변경될 수도 있는데, 그 이유는, 점유의 시그널링을 단축시키는 추론이 점유 패턴에 대해 이루어지는 것을 평면성 정보가 허용하기 때문이다. 예를 들면, 볼륨이 평면인 경우, 그러면, 평면 포지션 플래그에 의해 지시되지 않는 네 개의 서브 볼륨은 비어 있는 것으로서 간주될 수도 있고 그들의 점유 비트는 코딩될 필요가 없다. 점유된 평면의 최대 4 비트만이 코딩될 필요가 있다. 또한, 그 평면의 처음 세 개의 코딩된 비트가 제로(비점유됨)인 경우, 그러면, 평면이 점유되었다는 것을 평면 시그널링이 나타내기 때문에, 코딩 순서에서 마지막(제4) 비트는 1(점유됨)인 것으로 추론될 수도 있다. 추가적으로, 볼륨이 평면이 아니다는 것을 평면 시그널링이 나타내는 경우, 그러면, 평면 둘 모두에서 적어도 하나의 점유된 서브 볼륨이 있어야 하는데, 이것은, 어느 한 평면의 처음 세 개의 점유 비트가 제로인 경우, 어느 한 평면의 마지막 비트의 추가적인 추론된 점유를 허용한다.
따라서, 평면 모드를 시그널링하는 것은 점유 데이터의 코딩에 있어서 효율성을 제공할 수도 있다. 그럼에도 불구하고, 평면 모드 시그널링은 비트스트림에 신택스 엘리먼트를 추가하며 모든 상황에서 효율성을 제공하지 않을 수도 있다. 예를 들면, 조밀한 포인트 클라우드에서 그리고 소정의 깊이에서, 평면성을 시그널링하는 것이 유리하지 않을 수도 있는데, 그 이유는, 다섯 개보다 더 많은 점유된 자식 노드를 갖는 어떠한 노드도 정의에 의해 평면일 수 없기 때문이다. 따라서, 평면 모드를 인에이블하기 위한 적격성 기준을 갖는 것이 더 유리할 수도 있다. 로컬 데이터에 적응되는 적격성 기준을 제공하는 것이 더 유리할 것이다.
하나의 예에서, 적격성은 희소 클라우드(sparse cloud)와의 사용을 향해 편향될 수도 있다. 예를 들면, 적격성 기준은, 볼륨에서의 점유된 자식 노드의 평균 개수와 같은 메트릭에 기초할 수도 있다. 이 실행 평균은, 트리의 소정의 깊이에 대해 결정될 수도 있고, 그 다음, 다음 번 더 낮은 깊이에서 평면 모드의 적격성에 대해 사용될 수도 있다. 하나의 예에서, 점유된 서브 볼륨의 평균 개수가 3보다 더 큰 경우, 평면 모드는 디스에이블될 수도 있다. 이 기술은 간단하다는 이점을 가지지만, 그러나, 클라우드의 로컬 속성에 대한 적응이 부족하다.
다른 예에서, 실행 확률 계수(running probability factor)가 결정될 수도 있다. 확률 계수는 노드가 평면일 가능성, 즉 평면성의 확률을 나타낼 수도 있다. 확률이 낮은 경우, 그것은 잠재적 이득이 거의 없는 것에 대해 신호 평면성의 비용이 높을 것이다는 것을 나타낸다. 당시의(then-current) 확률 계수가 임계치보다 더 큰 경우, 임계 적격성 값이 설정될 수도 있고 주어진 볼륨/노드에 대해 평면 모드가 인에이블될 수도 있다:
p = prob(planar) ≥ 임계치
한 예로서, 선택되는 임계치는 0.6일 수도 있다; 그러나, 다른 상황에 대해 다른 값이 사용될 수도 있다는 것이 인식될 것이다. 확률은 코딩 프로세스 동안 업데이트된다. 업데이트 프로세스는 특정한 애플리케이션에 대한 빠른 업데이트 또는 느린 업데이트를 위해 튜닝될 수도 있다. 더 빠른 업데이트는 가장 최근에 코딩된 노드를 향해 더 큰 가중치 또는 바이어스를 줄 수도 있다.
예시적인 확률 업데이트 프로세스는 다음과 같이 표현될 수도 있다:
Figure pct00001
상기의 식에서, p는 현재 확률이고, pnew는 업데이트된 확률이고, δ(coded node)는, 비평면에 대해 0이고 평면에 대해 1인, 현재의 노드의 평면 상태이고, L은 업데이트가 얼마나 빨리 발생하는지를 튜닝하기 위한 가중화 계수이다. 가중화 계수(L)는, 간단한 정수 구현을 허용하기 위해, 2의 거듭제곱 - 1, 예컨대 255로 설정될 수도 있다; 더 구체적으로, 분할은 간단한 시프트 연산을 사용하여 구현될 수도 있다. 평면 상태는 평면 모드 플래그가 인코딩되었다는 것을 반드시 의미하는 것은 아니며, 그 결과, 확률은 평면 모드가 인에이블되었든 또는 아니든 간에 최근 노드에서의 평면성을 추적한다는 것을 유의한다. 예를 들면, 디코딩 프로세스 동안, 임의의 노드의 평면 상태는, 평면 모드 플래그가 디코딩되었는지 또는 아닌지의 여부와 무관하게, 노드와 관련되는 점유 비트의 디코딩 이후 공지된다.
예를 들면, 확률의 업데이트는, 노드 점유가 인코딩 또는 디코딩될 때 발생할 수도 있다. 다른 예에서, 확률의 업데이트는, 현재의 노드에 대해 노드 평면 정보가 디코딩될 때 발생할 수도 있다. 그 다음, 업데이트된 확률은 평면 모드 시그널링에 대한 코딩 순서에서 다음 번 노드의 적격성을 결정하기 위해 사용된다.
앞서 언급되는 바와 같이, 평면 모드는 수평 평면(z 축) 또는 수직 평면(x 축 또는 y 축)에 대해, 또는 임의의 두 개 또는 세 개 모두에 대해 시그널링될 수도 있다. 하나보다 더 많은 방향에 대해 평면 모드를 시그널링하는 것이 가능한 경우, 적격성 기준은 다를 수도 있다. 즉, 노드에 대해 시그널링되는 각각의 추가적인 평면 모드에서, 점유 시그널링의 관점에서의 이점은 절반이다. 제1 평면 모드에서, 평면인 경우 점유 비트의 절반이 추론될 수도 있다. 제2 평면 모드에서, 나머지 네 개의 점유 비트 중 두 개만이 추론될 수도 있고, 계속 그런 식일 수 있다. 따라서, 추가적인 평면 모드를 시그널링하기 위한 임계치는 제1 평면 모드보다 더 높을 수도 있다.
"제1", "제2" 및 "제3" 평면 모드의 정의는, 확률과 가능성이 가장 높은 것으로부터 가능성이 가장 낮은 것으로의 그들의 순서에 기초할 수도 있다. 그 다음, 적격성에 대해 임계치가 적용될 수도 있는데, 제1 임계치는 제2 임계치보다 더 낮고, 계속 그런 식이다. 예시적인 임계 값은 0.6, 0.77, 및 0.88이지만, 이들은 단지 예시에 불과하다. 다른 실시형태에서, 심지어 하나보다 더 많은 평면 모드가 임계치를 충족하더라도, 하나의 임계치만이 있고 가장 가능성 있는 평면 모드만이 인에이블된다.
이제, 평면 모드를 사용하여 포인트 클라우드 데이터를 인코딩하는 예시적인 방법(500)을 플로우차트 형태로 도시하는 도 5에 대한 참조가 이루어진다. 방법(500)은 볼륨에 대한 점유 정보를 인코딩하기 위한 프로세스를 반영한다. 이 예에서, 볼륨은 옥트리 기반의 코딩에 따라, 점유 비트를 각각 갖는 여덟 개의 서브 볼륨으로 균일하게 구획된다. 간략화를 위해, 본 예는 단지 하나의(예를 들면, 수평) 평면 모드가 사용된다는 것을 가정한다.
동작(502)에서, 인코더는, 볼륨이 평면 코딩 모드에 적격인지의 여부를 평가한다. 상기에서 논의되는 바와 같이, 적격성은 하나의 예에서 클라우드 밀도에 기초할 수도 있으며, 이것은 점유된 자식 노드의 평균 개수를 사용하여 평가될 수도 있다. 로컬 적응을 개선하기 위해, 적격성은 확률 계수 추적에 기초할 수도 있다. 평면 코딩 모드가 적합하지 않은 경우, 그러면, 볼륨에 대한 점유 패턴은, 동작(504)에 의해 나타내어지는 바와 같이, 평면 코딩 모드를 사용하지 않고도 인코딩된다.
평면 모드가 인에이블되는 경우, 그러면, 동작(506)에서, 인코더는 볼륨이 평면인지의 여부를 평가한다. 만약 그렇지 않다면, 동작(508)에서, 그것은 평면 모드 플래그, 예를 들면, isPlanar = 0을 인코딩한다. 동작(510)에서, 인코더는, 그 다음, 평면당 적어도 하나의 점유된 서브 볼륨이 존재하는 것에 기초하여 점유 패턴을 인코딩한다. 즉, 점유 패턴이 인코딩되고, 어느 한 평면(상위 또는 하위)에 대해 코딩되는 처음 3 비트가 제로인 경우, 그러면, 그 평면에 대한 마지막(제4) 비트는 코딩되지 않고 1인 것으로 추론되는데, 대응하는 서브 볼륨이 점유되어야만 하기 때문이다.
평면 모드가 인에이블되고 볼륨이 평면인 경우, 그러면, 동작(512)에서, 평면 모드 플래그가 인코딩된다, 예를 들면, isPlanar = 1이다. 볼륨이 평면이기 때문에, 인코더는, 그 다음, 평면 포지션 플래그인 planePosition을 또한 인코딩한다. 평면 포지션 플래그는, 평면의 점유된 서브 볼륨이 볼륨의 상위 절반에 있는지 또는 하위 절반에 있는지의 여부를 시그널링한다. 예를 들면, planePosition = 0은 하위 절반(즉, 하위 z 축 포지션)에 대응할 수도 있고, planePosition = 1은 상위 절반에 대응할 수도 있다. 그 다음, 점유 비트는 볼륨의 평면성 및 점유된 서브 볼륨의 포지션의 지식에 기초하여 인코딩된다. 즉, 네 개가 제로인 것으로 추론될 수도 있기 때문에 최대 네 개의 비트가 인코딩되고, 처음 세 개의 인코딩된 비트가 제로인 경우 제4 비트는 1인 것으로 추론될 수도 있다.
인코딩된 포인트 클라우드 데이터를 디코딩하는 예시적인 방법(600)이 도 6에서 도시되어 있다. 예시적인 방법(600)은 인코딩된 데이터의 비트스트림을 수신하는 디코더에 의해 구현된다. 현재의 볼륨에 대해, 디코더는 동작(602)에서 볼륨이 평면 모드에 대해 적격인지의 여부를 결정한다. 적격성 평가는, 인코더에서 수행되었던 것과 동일한 평가이다. 적격하지 않은 경우, 그러면, 디코더는, 동작(604)에 의해 나타내어지는 바와 같이, 평면 모드 시그널링을 사용하지 않으면서 평소와 같이 점유 패턴을 엔트로피 디코딩한다.
평면 모드가 인에이블되는 경우, 그러면, 동작(606)에서, 디코더는 평면 모드 플래그를 디코딩한다. 디코딩된 평면 모드 플래그는, 동작(608)에 의해 나타내어지는 바와 같이, 볼륨이 평면인지 또는 아닌지의 여부를 나타낸다. 평면이 아닌 경우, 그러면, 디코더는 각각의 평면의 적어도 하나의 서브 볼륨이 점유되어 있다는 것을 알고 점유 비트를 디코딩한다. 이것은 디코더가 디코딩되는 다른 비트의 값에 따라 점유 비트 중 한 개 또는 두 개를 추론하는 것을 허용할 수도 있다.
볼륨이 평면이다는 것을 디코딩된 평면 모드 플래그가 나타내는 경우, 그러면, 동작(612)에서, 디코더는 평면 포지션 플래그를 디코딩한다. 디코딩된 평면 포지션 플래그는, 점유된 서브 볼륨이 볼륨의 상위 절반인지 또는 하위 절반인지의 여부를 나타낸다. 그 지식에 기초하여, 디코더는, 그 다음, 동작(614)에 의해 나타내어지는 바와 같이, 비점유된 절반의 네 개의 점유 비트의 값을 제로로서 추론하고 그것은 점유된 절반에 대한 점유 패턴의 최대 4 비트를 디코딩한다.
앞서 언급되는 바와 같이, 점유 비트의 코딩은 이웃 구성에 부분적으로 기초한 엔트로피 코딩을 포함할 수도 있는데, 여기서 이웃 구성은 현재의 볼륨과 적어도 한 면(face)을 공유하는 다양한 볼륨의 점유를 반영한다. 이웃 구성을 평가함에 있어서, 이웃 구성(neighbor configuration; NC)이, 이웃하는 볼륨 중 어느 것도 점유되지 않았다는 것을 의미하는 제로인 경우, 그러면, 현재의 볼륨이 단일의 점유된 서브 볼륨을 갖는지의 여부를 시그널링하기 위해, 플래그가 코딩될 수도 있다.
NC 및 단일 노드 시그널링을 사용하는 점유 비트의 코딩은, 도 7에서 도시되는 바와 같이, 평면 모드 시그널링에 기초하여 적응될 수도 있다. 도 7은 점유 비트 코딩의 예시적인 방법(700)을 도시한다. 방법(700)을 나타내는 플로우차트의 부분은, 점유 비트 코딩에 대한 평면 시그널링의 영향을 반영한다. 도시되지는 않지만, 적절한 적격성 테스트가 발생한다는 것 및, 적용 가능한 경우, 평면 플래그 및 포지션 플래그가 인코딩/디코딩된다는 것이 추정될 수도 있다. 이 예에서는, 단지 하나의 평면 모드만이 가능하다는 것이 가정될 것이지만, 그러나 다른 모드 또는 추가적인 모드로의 확장이 이해될 것이다.
동작(702)에서, 코더는 NC가 제로인지의 여부, 즉, 모든 이웃하는 볼륨이 비어 있는지의 여부를 평가한다. 만약 그렇지 않다면, 그러면, 코더는 동작(704)에서 볼륨이 평면인지의 여부를 평가한다. 평면이 아닌 경우, 그러면, 코더는, 동작(706)에 의해 나타내어지는 바와 같이, 각각의 평면의 적어도 하나의 비트가 1이다는 것을 알고 8 점유 비트를 인코딩 또는 디코딩한다. 평면인 경우, 그러면, 코더는 비점유된 평면의 비트가 0인 것으로 추론하고 점유 비트 중 적어도 하나가 1이다는 것을 알고 나머지 네 개 비트를 코딩한다.
NC가 제로인 경우, 그러면, 코더는, 동작(710)에서 나타내어지는 바와 같이, 단일의 노드 플래그에 의해 비트스트림에서 나타내어지는 단일의 점유된 서브 볼륨이 있는지의 여부를 결정한다. 단일의 노드가 참인 경우, 그러면, 동작(712)에서, 데이터는 코딩된 평면 모드 및 평면 포지션 플래그로부터 이미 이용 가능하지 않은 볼륨 내의 단일의 노드의 위치에 관한 임의의 나머지 xyz 포지션 데이터를 시그널링하도록 바이패스 코딩된다. 예를 들면, 평면 모드가 수평 평면 정보의 코딩을 위해 인에이블되는 경우, 그러면, 단일의 노드 위치를 시그널링하기 위해 x 및 y 플래그는 바이패스 코딩되지만, 그러나, z 위치는 평면 포지션 플래그로부터 공지된다.
단일의 노드가 거짓인 경우, 그러면, 동작(714)에 의해 나타내어지는 바와 같이, 적어도 두 개의 서브 볼륨이 점유된다는 것을 알고 점유 비트가 코딩된다. 이것은 볼륨이 평면인지의 여부, 및 만약 그렇다면, 그것의 평면 포지션을 결정하는 것, 및 그 다음, 그에 따라 점유 비트를 코딩하는 것을 포함할 수도 있다. 예를 들면, 평면인 경우, 그러면, 비점유된 평면은 모두 제로 비트를 포함하는 것으로 추론될 수도 있고, 점유된 평면의 비트는 코딩될 수도 있고 그들 중 최대 두 개는 적어도 두 개의 서브 볼륨이 점유되어 있다는 지식에 기초하여 추론될 수도 있다.
이제, 가능한 세 개의 평면 모드를 사용하여 점유 비트를 코딩하는 하나의 예시적인 방법(800)을 예시하는 플로우차트를 도시하는 도 8에 대한 참조가 이루어진다. 방법(800)을 나타내는 플로우차트의 부분은, 점유 비트 코딩에 대한 평면 시그널링의 영향을 반영한다. 도시되지는 않지만, 적절한 적격성 테스트가 발생한다는 것 및, 적용 가능한 경우, 평면 플래그 및 포지션 플래그가 인코딩/디코딩된다는 것이 추정될 수도 있다. 코더는, 먼저, 동작(802)에서 나타내어지는 바와 같이, 모든 세 개의 축과 관련하여 볼륨이 평면이다는 것을 세 개의 평면 모드 모두가 나타내는지의 여부를 평가한다. 만약 그렇다면, 그러면, 그들은, 동작(804)에 의해 나타내어지는 바와 같이, 단일의 점유된 서브 볼륨의 위치를 집합적으로 나타내고 모든 점유 비트는 추론될 수도 있다.
모두 평면이 아닌 경우, 그러면, 코더는 동작(806)에서 이웃 구성이 제로인지의 여부를 평가한다. NC가 제로가 아닌 경우, 그러면, 점유 비트는 동작(808)에서 평면 모드 시그널링에 기초하여 코딩된다. 상기에서 논의되는 바와 같이, 점유 비트 코딩은 점유 코딩을 단축하기 위해 다수의 가능한 추론이 이루어지는 것을 허용하는 평면 모드 시그널링에 의해 마스킹될 수도 있다.
NC가 제로인 경우, 그러면, 단일의 노드 플래그가 코딩될 수도 있다. 코더는, 먼저, 평면 모드가 거짓이다는 것을 평면 모드 플래그 중 적어도 하나가 나타내는지의 여부를 평가한다. 만약 그렇다면, 그것은, 하나보다 더 많은 서브 볼륨이 점유되어 있기 때문에 평면 모드 플래그 중 적어도 하나가 단일의 노드 상황일 수 없다는 것을 암시한다. 따라서, 만약 그렇지 않다면, 즉, 어떠한 평면도 거짓이 아닌 경우, 그러면, 동작(810)에서, 단일의 노드 플래그가 평가되고 동작(812)에서 코딩된다. 단일의 노드 플래그가 설정되는 경우, 단일의 노드 포지션의 x, y, z, 비트는, 동작(814)에 의해 나타내어지는 바와 같이, 그들이 평면 포지션 데이터로부터 이미 추론되지 않은 경우, 바이패스 코딩될 수도 있다.
볼륨이 비평면이다는 것을 적어도 하나의 평면 모드 플래그가 나타내는 것을 동작(810)이 결정하는 경우, 또는, 동작(812)에서, 자신이 단일의 노드가 아니다는 것을 신호 노드 플래그가 나타내는 경우, 그러면, 코더는, 동작(816)에서, 볼륨이 두 개의 방향에서 평면이다는 것을 나타내는 두 개의 평면 모드 플래그가 존재하는지의 여부를 평가하고, 만약 그렇다면, 그러면, 모든 점유 비트가 동작(804)에서 추론될 수도 있다. 만약 그렇지 않다면, 그러면, 점유 비트는, 만약 있다면, 평면성, 및 적어도 두 개의 비트가 넌제로이다는 것을 알고 동작(818)에서 코딩된다.
기술 분야에서 숙련된 자는, 포인트 클라우드 코딩을 위한 현재 테스트 모드에 채택되는 피쳐가 매우 고립된 포인트를 핸들링하기 위한 것인 추론된 직접 코딩 모드(Inferred Direct Coding Mode; IDCM)이다는 것을 인식할 것이다. 활용할 이웃하는 노드와의 상관 관계가 거의 없기 때문에, 종속 접속식의(cascaded) 단일의 자식 노드의 점유 정보를 코딩하는 대신 고립된 포인트의 포지션이 직접적으로 코딩된다. 이 모드는 노드의 고립의 조건 하에서 적격이며, 적격성의 경우, IDCM 활성화는 IDCM 플래그에 의해 시그널링된다. 활성화의 경우, 노드에 속하는 포인트 또는 포인트들의 로컬 포지션은 코딩되고, 노드는, 그 다음, 리프 노드가 되어, 그 노드에 대한 재귀적 구획화 및 트리 기반의 코딩 프로세스를 효과적으로 중지한다.
평면성을 시그널링하는 현재의 프로세스는, 적격인 경우, IDCM을 시그널링하기 이전에 평면성을 시그널링하는 것에 의해 IDCM 모드와 함께 코딩 프로세스에 통합될 수도 있다. 첫째, IDCM에 대한 노드의 적격성은 평면 정보에 의해 영향을 받을 수도 있다. 예를 들면, 노드가 평면이 아닌 경우, 노드는 IDCM에 대해 적격이 아닐 수도 있다. 둘째, IDCM 활성화의 경우, 평면 지식은 노드와 관련되는 볼륨에서의 포인트의 포지션을 코딩하는 데 도움이 된다. 예를 들면, 다음의 규칙이 적용될 수도 있다:
Figure pct00002
노드가 x 평면이면, 평면의 포지션(planeXPosition)은 공지되고, 따라서, 포인트의 x 좌표의 최상위 비트(highest bit)는 평면 포지션으로부터 공지된다. 이 비트는 IDCM에서 코딩되지 않는다; 디코더는 그것을 평면 포지션으로부터 추론할 것이다.
Figure pct00003
노드가 y 평면이면, 평면의 포지션(planeYPosition)은 공지되고, 포인트의 y 좌표 중 최상위 비트는 평면 포지션으로부터 공지된다. 이 비트는 IDCM에서 코딩되지 않는다; 디코더는 그것을 평면 포지션으로부터 추론할 것이다.
Figure pct00004
노드가 z 평면이면, 평면의 포지션(planeZPosition)은 공지되고, 따라서 포인트의 z 좌표 중 최상위 비트는 평면 포지션으로부터 공지된다. 이 비트는 IDCM에서 코딩되지 않는다; 디코더는 그것을 평면 포지션으로부터 추론할 것이다.
노드가 여러 방향에서 평면인 경우, xyz 좌표의 최상위 비트의 추론은 여전히 유지된다. 예를 들면, 노드가 x 평면 및 y 평면인 경우, x 좌표 및 y 좌표 둘 모두에 대한 최상위 비트는 planeXPosition 및 planeYPosition에 의해 추론된다.
평면 모드 신택스의 엔트로피 코딩
평면 모드 플래그 또는 평면 포지션 플래그와 같은 평면 모드 신택스는 비트스트림의 중요한 부분(significant portion)을 나타낼 수도 있다. 따라서, 포인트 클라우드 데이터를 압축할 때 평면 모드를 효과적으로 만들기 위해서는, 효과적인 컨텍스트 결정을 사용하여 평면 정보가 엔트로피 코딩된다는 것을 보장하는 것이 유리할 수도 있다.
노드/볼륨이 평면인지 또는 아닌지의 여부는 평면 모드 플래그인 isPlanar을 사용하여 시그널링된다는 것을 상기한다. 예의 현재의 논의에서, 평면 모드는 수평 평면성에 대해, 즉, z 축에 대해, 적용 가능하다는 것이 가정될 것이다. 이 예에서, 플래그는 isZPlanar로 칭해질 수도 있다. 플래그의 엔트로피 인코딩은, 이진 산술 코더, 예를 들면, 컨텍스트 적응 이진 산술 코더(context-adaptive binary arithmetic coder; CABAC)를 활용할 수도 있다. 컨텍스트(또는 내부 확률)는 하나 이상의 예측 인자를 사용하여 결정될 수도 있다.
현재의 노드 또는 서브 볼륨에 대한 평면 모드 플래그는, 서브 볼륨 내의 자식 서브 볼륨이 평면인지의 여부를 시그널링한다. 현재의 노드 또는 서브 볼륨은 부모 볼륨 내에서 존재한다. 예로서, 평면 모드 플래그를 코딩하기 위한 컨텍스트를 결정하기 위한 예측 인자는 다음의 것 중 하나 이상을 포함할 수도 있다:
(a) 부모 볼륨 평면성;
(b) 인접한 이웃하는 볼륨의 점유; 및
(c) 동일한 깊이에서 그리고 동일한 z 축 포지션에서 가장 가까운 점유된 이미 코딩된 노드(closest occupied already-coded node)까지의 거리.
도 9는 부모 노드(902) 내의 현재의 노드(900)와 관련한 세 개의 예시적인 인자를 예시한다.
인자 (a)는 부모 노드(902)가 평면인지 또는 아닌지의 여부를 가리킨다. 그것이 평면 모드를 사용하여 코딩되었는지의 여부와 상관없이, 부모 노드(902)가 평면성(이 경우 수평 평면성)에 대한 기준을 충족하는 경우, 그러면, 부모 노드(902)는 평면으로서 간주된다. 인자 (a)는 바이너리이다: "부모는 평면임" 또는 " 부모는 평면이 아님."
인자 (b)는, 평면과 정렬되는 부모 볼륨의 한 면에 인접한 부모 깊이에서 이웃하는 볼륨(904)의 점유 상태를 가리킨다. 수평 평면성의 경우, 현재의 노드(900)가 부모 볼륨(902)의 상단 절반(top half) 내에 있으면 이웃하는 볼륨(904)은 부모 노드(902) 수직 위에 있다. 현재의 노드(900)가 부모 노드(902)의 하단 절반(bottom half)에 있었다면, 그러면, 이웃하는 볼륨(904)은 수직 아래에 있을 것이다. 수직 평면성의 경우, 이웃하는 볼륨은, 현재의 노드의 x 축 또는 y 축 평면성 및 위치에 따라, 측면 중 하나에 인접할 것이다. 인자 (b)도 또한 바이너리이다: 이웃은 점유되거나 또는 점유되지 않는 것 중 어느 하나임.
인자 (c)는, 이미 코딩된 노드가 현재의 노드(900)와 동일한 깊이에 위치되고 공통 평면에 놓이는, 즉, 현재의 노드(900)와 동일한 z 축 포지션에 있다는 조건 하에서 가장 가까운 이미 코딩된 노드(906)가 얼마나 멀리 떨어져 있는지를 가리킨다. 이미 코딩된 노드(906)는 반드시 인접한 볼륨에 있는 것은 아니며, 클라우드의 밀도에 따라, 약간 떨어져 있을 수 있다. 코더는 이미 코딩된 노드를 추적하고 이들 기준을 충족하는 가장 가까운 노드를 식별한다. 현재의 노드(900)와 이미 코딩된 노드(906) 사이의 거리(d)는, 노드(900 및 906)의 상대적인 포지션으로부터 결정될 수도 있다. 몇몇 실시형태에서, 계산의 간략화를 위해, 거리, 즉 델타 x의 절대 값 더하기 델타 y의 절대 값을 결정하기 위해 L1 놈(norm)이 사용될 수도 있다. 몇몇 실시형태에서, 거리, 즉, 델타 x 제곱 더하기 델타 y 제곱에 의해 주어지는 제곱의 합(의 제곱근)을 결정하기 위해 L2 놈이 사용될 수도 있다.
몇몇 구현예에서, 거리(d)는, 두 개의 값 "가까운(near)" 및 "먼(far)"으로 이산화될 수도 있다. "가까운" d와 "먼" d 사이의 분할은 적절하게 선택될 수도 있다. 거리를 가까운 것 또는 먼 것 중 어느 하나로 분류하는 것에 의해, 인자 (c)도 또한 바이너리이다. 몇몇 구현예에서, 거리는 세 개 이상의 값으로 이산화될 수도 있다는 것이 인식될 것이다.
모두 세 가지 예시적인 인자가 컨텍스트 결정에서 사용되는 경우, 그러면, 평면 모드 플래그의 코딩을 위해 2×2×2 = 8 개의 별개의 컨텍스트가 유지될 수도 있다.
평면 모드 플래그가 현재의 노드(900)에 대해 코딩되고 현재의 노드(900)가 평면인 경우, 그러면, 평면 포지션 플래그, 예컨대 planeZPosition이 코딩될 수도 있다. 평면 포지션 플래그는 현재의 노드(900) 중 어떤 절반이 점유된 자식 서브 볼륨을 포함하는지를 시그널링한다. 수평 평면성의 경우, 평면 포지션 플래그는 하단 절반 또는 상단 절반 중 어느 하나를 시그널링한다.
평면 포지션 플래그의 엔트로피 인코딩은 이진 산술 코더, 예를 들면, CABAC을 또한 활용할 수도 있다. 컨텍스트(또는 내부 확률)는 하나 이상의 예측 인자를 사용하여 결정될 수도 있는데, 하나 이상의 예측 인자의 가능한 예는 다음의 것을 포함한다:
(a') 인접한 이웃하는 볼륨(904)의 점유;
(b') 동일한 깊이에서 그리고 동일한 z 축 포지션에서 가장 가까운 점유된 이미 코딩된 노드(906)까지의 거리;
(c') 동일한 깊이 및 z 축 포지션에서의 가장 가까운 점유된 이미 코딩된 노드(906)가 평면인 경우의, 그것의 평면 포지션; 및
(d') 부모 노드(902) 내에서의 현재의 노드(900)의 위치.
인자 (a')는 평면 모드 플래그 컨텍스트와 관련하여 상기에서 논의되는 인자 (b)와 동일하다. 인자 (b')는 평면 모드 플래그 컨텍스트와 관련하여 상기에서 논의되는 인자 (c)와 동일하다. 몇몇 예시적인 구현예에서, 인자 (b')는 거리를 세 가지 카테고리: "가까운", "너무 멀지 않은", 및 "먼"으로 이산화할 수도 있다. 상기에서 논의되는 바와 같이, 거리는 L1 놈, 또는 L2 놈, 또는 임의의 다른 적절한 측정을 사용하여 결정될 수도 있다.
인자 (c')는, 가장 가까운 점유된 이미 코딩된 노드(906)가 평면인지 또는 아닌지의 여부, 및, 만약 그렇다면, 그것이 상단 평면인지 또는 하단 평면인지의 여부, 즉, 그것의 평면 포지션을 가리킨다. 평면인 심지어 멀리 떨어져 있는 이미 코딩된 노드도 현재의 노드에 대한 평면성 또는 평면 포지션의 강력한 예측자일 수도 있다는 것이 판명된다. 즉, 인자 (c')는 다음의 세 가지 결과를 가질 수도 있다: 평면이 아님, 현재의 노드(900)와 동일한 평면 포지션, 현재의 노드(900)와는 상이한 평면 포지션. 현재의 노드(900)와 가장 가까운 이미 코딩된 점유된 노드(906)가 동일한 평면 포지션을 갖는 경우, 그러면, 그들의 점유된 자식 서브 볼륨은 모두 동일한 z 축 포지션에 있는 공통 수평 평면에서 정렬된다.
인자 (d')는 현재의 노드(900)가 (수평 평면성의 경우) 부모 노드(902)의 상단 절반에서 위치되는지 또는 하단 절반에서 위치되는지의 여부를 가리킨다. 부모가 적격성 요건에 기인하여 평면일 가능성이 있기 때문에, 현재의 노드(900)가 평면인 경우, 그러면, 평면 포지션은, 중간을 향해서가 아니라, 부모 노드(902)의 "외부"에 있을 가능성이 약간 더 높다. 따라서, 자신의 부모 노드(902)에서의 현재의 노드(900)의 포지션은, 그 현재의 노드(900) 내의 평면 포지션의 확률에 현저한 영향을 끼친다.
모든 네 개의 인자를 결합하는 구현예에서, (현재의 노드(900)와) 동일한 z 및 깊이에 있는 가장 가까운 점유된 이미 코딩된 노드(906)가 평면인 경우에서 2×3×2×2 = 24 개의 예측 조합이 있을 수도 있고; 그렇지 않고, 동일한 z 및 동일한 깊이에 있는 가장 가까운 이미 코딩된 노드(906)가 평면이 아닌 경우, 특정한 컨텍스트가 대신 사용된다. 따라서, 그러한 예에서 평면 포지션 플래그를 코딩하기 위해 24 + 1 = 25 개의 컨텍스트가 이진 산술 코더에 의해 사용될 수도 있다.
상기의 예가 평면 모드 플래그의 경우 컨텍스트 결정을 위해 세 개의 인자를 그리고 평면 포지션 플래그의 경우 컨텍스트 결정을 위해 네 개의 인자를 참조하지만, 본 출원은 컨텍스트 결정을 위한 개개의 인자 및 그러한 인자의 모든 조합 및 하위 조합의 사용을 포함한다는 것이 인식될 것이다.
이제, 컨텍스트 결정 프로세스 동안 가장 가까운 점유된 이미 코딩된 노드의 결정을 관리하기 위한 메커니즘의 하나의 예시적인 구현을 도식적으로 예시하는 도 10에 대한 참조가 이루어진다. 이 예시적인 메커니즘에서, 코딩 디바이스는, 점유된 이미 코딩된 노드에 관한 정보를 포함하는 버퍼(1000)를 구현하기 위해, 메모리, 예를 들면, 휘발성 또는 영구적 메모리 유닛을 사용한다. 특히, 버퍼(1000)는 트리에서 동일한 z 축 위치 및 깊이를 갖는 이미 코딩된 노드를 추적하기 위한 공간을 할당한다. 이 특정한 예에서, 버퍼(1000)는 동일한 z 축 포지션 및 깊이를 갖는 최대 네 개의 이미 코딩된 노드에 관련이 있는 정보를 추적한다.
예시적인 버퍼(1000)의 각각의 행은 z 축 포지션 및 깊이에 대응한다. 네 개의 열은 그 z 축 포지션을 갖는 네 개의 최근 코딩된 점유된 노드에 대응한다. 예를 들면, 예시적인 행(1002)은 네 개의 이미 코딩된 점유된 노드에 관한 데이터를 포함한다. 각각의 이미 코딩된 노드에 대한 저장된 데이터는 이미 코딩된 점유된 노드의 x 및 y 포지션, 노드가 평면이었는지의 여부, 그리고, 만약 그렇다면, 평면 포지션을 포함할 수도 있다.
현재의 노드(1004)를 코딩하는 동안, 코딩 디바이스는 버퍼(1000)에 액세스하여, 예시적인 행(1002)이 현재의 노드(1004)와 동일한 z 축 포지션에 있는 것에 기초하여, 예시적인 행(1002)의 네 개의 저장된 노드 중에서 가장 가까운 점유된 이미 코딩된 노드를 식별한다. 상기에서 논의되는 바와 같이, 거리 메트릭은 L1 놈, L2 놈, 또는 거리의 임의의 다른 척도에 기초할 수도 있다. 버퍼(1000) 내의 각각의 노드에 대한 저장된 x 및 y 포지션은, 특히 L1 놈의 경우에, 가장 가까운 노드의 결정을 간단하게 만드는 데 도움이 된다.
일단 가장 가까운 노드, 예컨대 가장 가까운 노드(1006)가 식별되면, 현재의 노드(1004)로부터의 그것의 거리 및 어쩌면 그것의 평면성 및/또는 평면 포지션이 컨텍스트 결정(들)에서 사용된다. 그 다음, 버퍼(1000)는 버퍼(1000)의 제1 포지션(1008)에 현재의 노드(1004)를 추가하는 것 및 버퍼(1000)의 그 예시적인 행(1002)에 있는 모든 다른 노드 데이터를 우측으로 시프트하여, 버퍼(1000) 내의 마지막 아이템으로 하여금 폐기되게 하는 것에 의해 업데이트된다. 몇몇 예에서, 거리 결정에 기초하여, 식별된 가장 가까운 노드는 현재 코딩에 대해 더 높은 잠재적 관련성을 유지할지도 모르고, 따라서 현재의 노드(1004)를 버퍼(1000)에 추가하기 이전에, 예시적인 행(1002)의 콘텐츠는, 먼저, 가장 가까운 노드(1006)를 제1 포지션(1008)으로 이동하도록 재배열되고, 예를 들면, 이 예에서는 제1 포지션(1008) 및 제2 포지션에 있는 노드 데이터를 수용하기 위해 노드를 우측으로 시프트하는 것은 제2 포지션 및 제3 포지션으로 각각 시프트된다. 이러한 방식으로, 코딩 디바이스는 가장 최근에 식별되는 가장 가까운 노드를 버퍼(1000)로부터 조기에 추방하는 것을 방지한다.
설명된 버퍼(1000)는 가장 가까운 노드에 관한 데이터를 관리하기 위한 메커니즘의 하나의 예시적인 구현예이지만, 그러나 본 출원은 반드시 이 예로 제한되는 것은 아니며 가장 가까운 노드 정보를 추적하기 위한 많은 다른 메커니즘이 사용될 수도 있다는 것이 인식될 것이다. 또한, 버퍼(1000)에서 고정된 개수의 최근에 코딩된 점유된 노드만을 유지한다는 것은, 식별된 노드가 실제로 가장 가까운 점유된 이미 코딩된 노드가 아니라 단지 버퍼(1000)로부터 이용 가능한 가장 가까운 이미 코딩된 노드일 가능성이 있다는 것을 의미한다는 것이 인식될 것이다; 그러나, 상기의 예에서와 같이, 심지어 버퍼가 네 개의 후보로 제한되는 경우에도, 성능에 대한 영향은 무시 가능하다.
점유 패턴의 각도 모드 코딩
다음으로, 빔의 세트를 포함하는 빔 어셈블리에 의해 획득된(예를 들면, 샘플링된) 포인트 클라우드를 코딩하기 위한 특정한 모드가 설명될 것이다. 빔은, 예를 들면, 광학 빔일 수도 있다. 의도된 제한 없이, 포인트 클라우드를 획득하기 위한 그러한 빔 어셈블리의 예로서 라이다에 대한 참조가 이루어질 것이지만, 그러나, 다른 빔 어셈블리도 역시 실현 가능하고 본 설명에 의해 포괄되는 것으로 이해된다는 것이 이해된다. 마찬가지로, 의도된 제한 없이, 레이저 빔에 대한 참조가 이루어질 것이지만, 그러나 다른 (광학) 빔도 역시 실현 가능하고 본 설명에 의해 포괄되는 것으로 이해된다. 예를 들면, 빔 어셈블리는 라이다를 포함하는, 그러나 이들로 제한되지는 않는 임의의 회전하는 빔 어셈블리에 관련될 수도 있다. 한 대안으로서, 빔 어셈블리는 스캐닝 빔 어셈블리, 또는 솔리드 스테이트 라이다에 관련될 수도 있다. 어떤 경우든, 이들 빔 어셈블리는 소정의 사전 정의된(그리고 공지된) 각도, 특히, 앙각에서 빔을 방출하는 것으로 가정된다. 본 출원 전반에 걸쳐 설명되는 빔 어셈블리 중 임의의 것은, 예를 들면, 자동차 또는 임의의 다른 차량에 장착될 수도 있다는 것이 이해되어야 한다.
통상적으로, 라이다 획득 포인트 클라우드는 회전하는 레이저 빔의 세트에 의해 획득된다. 선회하는 레이저 빔의 그러한 세트의 한 예가 도 11에서 개략적으로 예시되어 있다. 가장 일반적인 셋업은, 각각의 레이저 빔(1106)을 방출하는 레이저(1104)(예를 들면, 16, 32, 또는 64 개의 레이저)의 수직으로 배열된 어레이이다. 레이저(1104)는 회전 축(1102)을 중심으로 회전하는 선회 헤드(spinning head; 1101)에 장착된다. 대안적으로, 레이저(1104) 그들 자체가 회전 축(1102)을 중심으로 회전할 수도 있다. 레이저(1104)를 포함하는 헤드(1101)는 빔 어셈블리로서 지칭될 수도 있다.
당연히, 특정한 레이저 빔에 의해 획득되는 포인트는 헤드 축에 수직인 평면에 대한 획득의 고정된(또는 노이즈 및/또는 측정 정밀도까지 고정됨) 수직 각도(θ)(예를 들면, 앙각)를 갖는다. 이것은 도 12에서 개략적으로 예시되어 있는데, 여기서는 레이저(1204)가 헤드 축(1202)에 수직인 평면(1208)에 대한 획득의 각도(예를 들면, 앙각)(θ)에서 레이저 빔(1206)을 방출한다. 도 13은 헤드(1301)에 대한 좌표 축의 가능한 정의를 도시한다.
도 14는, r-tan(θ) 다이어그램에서, 64 개의 레이저 빔을 갖는 예시적인 라이다에 의해 획득되는 포인트 클라우드의 포인트를 도시한다. 다소 고정된 레이저 각도 tan(θ)가 다이어그램에서 명확하게 관찰될 수 있다. 양의 각도는 레이저가 수평 평면 위를(즉, 하늘을 향해) 가리키고 있다는 것을 의미하고, 한편 음의 각도는 레이저가 수평 평면 아래를(즉, 지면 쪽을) 가리키고 있다는 것을 의미한다. 특히, 라이다의 레이저는 의도적으로 상이한 각도로 지향된다 - 예를 들면, 그 결과, 상이한 레이저는, 건물, 기둥, 트리, 등등과 같은, 동일한 크기의 오브젝트의 상이한 부분을 픽업한다. 정의에 의해 그리고 도 15 상에서 도시되는 바와 같이, r은 라이다의 헤드(1301)(또는 일반적으로 빔 어셈블리)로부터의 포인트(1505)의 수평 거리이고, 수직 각도의 탄젠트(tan(θ))는 비율 z/r로서 정의되는, 여기서 z는 라이다의 헤드(1301)에 대한 포인트(1505)의 수직 고도(vertical elevation)이다.
도 14로부터 알 수 있는 바와 같이, 포인트 클라우드의 포인트는 "준" 2D 공간에서 표현될 수 있다. 예를 들면, 표현은, 2D 공간 (x,y) 및 레이저 빔에 대응하는 유한한 수직 각도(θ)의 세트에서 이론적으로 가능하다. 또는 등가적으로, 2D 극 공간(
Figure pct00005
, r) - 여기서
Figure pct00006
는 방위각임 - 및, 수직 각도(θ)의 유한한 세트에서도 가능하다. 다시 말하면, 구면 좌표(
Figure pct00007
, r, θ)에서 포인트를 표현할 수도 있는데, 여기서 θ는 유한한 개수의 값만을 취할 수 있다. 이것은 폐색(occlusions)의 결과인데, 이것은 (
Figure pct00008
, θ)당 오로지 최대 하나의 포인트로 이어진다. 이 준 2D 공간은 이론적이지만, 그러나, 실제로, 측정 노이즈/정밀도 및 시간 적분은 가능한 θ의 엄격하게 유한한 세트로 이어지지 않는데, 이것은 레이저의 기계적 장착의 결과이다. 대신, θ의 값은 유한한 개수의 값(θlaser) 주위로 확산되고 이들 값 주위의 "노이즈"의 이슈를 다루어야만 한다.
앞서 언급된 준 2D 구조는 하나 이상의 라이다(또는 일반적으로 빔 어셈블리)의 포지션/방위 및 라이다(들)의 고유의 특성에 주로 의존한다. 하기에서 더욱 상세하게 설명될 바와 같이, 따라서, 라이다(들)(또는 일반적으로 빔 어셈블리/어셈블리들)의 특성을 설명하는 신택스 엘리먼트(예를 들면, 파라미터, 플래그)를 비트스트림에 포함시키는 것이 유리할 수 있다. 이들 신택스 엘리먼트는, 빔 어셈블리의 기준 위치, 특정한 빔의 원점 위치, 또는 특정한 빔의 빔 각도 중 적어도 하나를 나타낼 수도 있다. 이들 신택스 엘리먼트를 비트스트림에 포함시키는 것은 프레임 또는 시퀀스 레벨에서 행해질 수 있다. 어떤 경우든, 비트스트림의 디코딩 가능성을 보장하고 디코딩 가능성에 필요한 데이터 손실의 위험을 최소화하기 위해, 이 데이터는 압축된 데이터 비트스트림에 가능한 한 가깝게 존재해야 한다.
상기의 내용을 주목하여, 애플리케이션의 몇몇 실시형태는 압축이 개선되도록 포인트 클라우드의 효율적인 표현에서 수직 레이저 각도 {θlaser}의 라이다 특성(또는 관련 빔 어셈블리의 특성)으로부터 획득되는 지식을 사용하려고 시도한다. 게다가, 점유된 노드의 이웃하는 구성의 사용 및 옥트리 표현을 사용하는 것에 의해 강력하고 강건한 압축 성능이 이미 획득되었기 때문에, 몇몇 실시형태는 포인트 클라우드의 옥트리 표현을 코딩하는 맥락에서 이 지식을 사용하려고 시도한다.
포인트 클라우드의 준 2D 구조로부터 이익을 얻기 위한 가능한 솔루션은 표현 공간의 변경에 기초한다. 이들 공간 변경 기반의 솔루션에서, 포인트 클라우드를 코딩하기 위한 하이 레벨 신택스는, 공간 변경에 대한 정보 및 변경된 공간에서의 라이다의 특성을 시그널링할 수 있다. 그러한 공간 변경 기반의 솔루션의 제1 결점은, 변경된 공간에서 추가적인 정밀도를 요구하지 않고는 가역적이고 이산적인 공간 변경을 구성하기가 어렵다는 것이다. 결과적으로, 3D 포인트 클라우드의 무손실 압축을 위한 양호한 성능을 획득하는 것이 어렵다. 공간 변경의 한 예는 단색 이미지에서의 포인트 클라우드 표현인데, 여기서 이미지 프레임은 커플 (
Figure pct00009
, θ)에 대한 한정된 공간 [0, 2π]*[-π/2, +π/2] 에 속하고 픽셀의 강도는 거리(r)에 의해 제공된다. 물론, "이미지"의 모든 픽셀이 점유되는 것은 아니다. 따라서, 포인트 클라우드는 각도 공간 (
Figure pct00010
, θ)에서 깊이 맵으로서 보일 수 있다. 이것은, 모든 포인트를 그들 중 두 개가 동일한 픽셀에 떨어지지 않도록 분리하기 위해,
Figure pct00011
및 θ에 대해 필요한 정밀도와 같은 여러 가지 이슈를 제기한다. 또한, 포인트 클라우드를 압축하기 위해 그러한 표현이 효율적으로 사용될 수 있다는 것이 여전히 입증되어야 한다. 이것은 어쩌면 (예를 들면, 고정된 각도(θlaser) 주위의 θ 확산으로부터 이익을 얻기 위한) 특정한 로컬 예측 및 다른 압축 기술을 사용할 것이다. 그것은 포인트 클라우드의 옥트리 표현과 명백하게 호환되지 않는다. 마지막으로, 2D 프레임 표현의 주요 결점은, 하나보다 더 많은 라이다에 의해 획득되는 포인트 클라우드를 다룰 수 없다는 것이다. 이것은, 몇몇 제조사가 루프에 장착되는 단일의 라이다 대신 차량 상에, 예를 들면 상기 차량의 측면 상에 여러 개의 라이다가 부착되는 것을 구상하기 때문에 매우 실용적인 사용 사례이다. 따라서, 본래의(native) 3D 공간 표현은 다중 라이다 획득을 다루기 위한 유일한 합리적인 표현인 것으로 생각된다.
포인트 클라우드 기하학적 형상의 옥트리 표현의 프레임워크에서, 부모 노드에 접속되는 그리고 이 부모 노드의 자식 노드의 점유를 시그널링하는 점유 비트의 압축을 개선하기 위해, 본 출원은 포인트 클라우드의 포인트와 또는 옥트리의 노드와 관련되는 각도(θ)를 정의하고 사용하는 것을 제안한다. 포인트 클라우드의 포인트와 또는 옥트리의 노드와 관련되는 각도(θ)를 사용하는 대응하는 코딩 모드는, 이 애플리케이션 전반에 걸쳐 각도 코딩 모드로서 지칭될 것이다. 각도 코딩 모드에 따르면, 포인트 또는 노드와 관련되는 각도(θ)는 빔(예를 들면, 레이저 빔)과 관련되는 고정된 각도 {θlaser}에 비교되고, 이 비교는 자식 노드의 점유의 추정치를 구축하기 위해 사용된다. 실제로, 자식 노드의 점유 비트를 직접적으로 또는 간접적으로(평면 모드) 코딩하는, 이진 엔트로피 코더에서의 컨텍스트의 선택은 추정의 값에 기초하여 수행된다. 이제, 이 스킴의 가능한 구현예가 하기에서 더욱 상세하게 설명될 것이다. 일반적으로, 각도 코딩 모드는 볼륨의 자식 서브 볼륨(또는 서브 노드) 또는 자식 서브 볼륨의 그룹에 대한 각도 정보에 기초하여 현재의 볼륨(또는 노드)의 점유 패턴을 엔트로피 코딩하기 위한 컨텍스트를 결정하는 것을 수반한다고 말하여질 수도 있는데, 여기서 각도 정보는 빔을 제공하는 빔 어셈블리와 관련되는 위치에 대한 하나 이상의 각도(예를 들면, 앙각)를 나타낸다.
(xhead, yhead, zhead)를, 포인트 클라우드의 포인트가 속하는 삼차원 공간 XYZ(체적 공간)에서 z 축을 따라 수직으로 지향되는 (라이다의) 헤드(또는 일반적으로 빔 어셈블리)의 위치라고 하자. 포인트 (x,y,z)의 수직 각도(θ)의 탄젠트(tan(θ))는 고도(z - zhead)와 헤드에 대한 포인트의 거리(r)의 비율이다.
Figure pct00012
도 14에 대한 상세도를 도시하는 도 16의 r - tan(θ) 다이어그램으로부터 알 수 있는 바와 같이, 각도 tan(θ)는, 동일한 빔에 의해 조사되는 포인트의 경우, 다소 일정하지만, 그러나 엄격하게 일정하지는 않다. 실제로, 도 16의 패널 (b) 및 (c)로부터 알 수 있는 바와 같이, 각각의 빔에 대해 이 빔에 의해 획득되는 포인트를 포함하는 (r, tan(θ)) 다이어그램에서 각각의 엔벨로프(envelope)가 존재한다. (tan(θ) 방향에서의) 이 엔벨로프의 폭은 분명히 거리(r)에 의존한다. 이 엔벨로프의 폭은 노이즈 및 획득 정밀도에 기인하며, 더 작은 r에 대해 넓어진다. 특히, 인접한 빔의 엔벨로프는 서로 교차하지 않는다.
각각의 엔벨로프에 한 포인트가 속하는 것이, 개선된 압축 성능을 위해 활용될 수 있는 추가적인 지식을 이미 제공하지만, 넓은 범위의 거리(r)에 걸쳐 더욱 안정적인 값을 나타내는 보정된 각도(θcorr)를 획득하는 것이 유리할 것이다. 이것은, 예를 들면, 헤드 포지션에 대한(또는, 일반적으로, 빔 어셈블리의 기준 위치에 대한) 각각의 빔 방출기(예를 들면, 레이저)의 포지션에 보정 항을 추가하는 것에 의해 달성될 수 있다.
도 17은, 보정된 각도(θcorr)를 획득하기 위해 각도(θ)를 보정하는 예시적인 방법을 설명하기 위한, 빔 어셈블리(1701)의 기준 위치(1710)에 대한 빔 방출기(1704)의 위치를 개략적으로 예시한다. 특히, 빔 방출기(예를 들면, 레이저)(L)의 포지션(위치)은 빔 어셈블리의 기준 위치(1710)(예를 들면, 헤드 포지션)에 대한 시프트(rL, zL)(1712)에 의해 보정되고, 그 결과, 각각의 빔(1706)은 수직 위치(zhead + zL)로부터 방출되고 빔 방출기 레이저까지의 (포인트의) 거리는 r - rL이 되도록 보정된다. 그러한 만큼, 빔 방출기의 보정된 위치는 각각의 빔(1706)에 대한 원점 위치 또는 빔 원점 위치로서 지칭될 수도 있다. 보정된 각도(θcorr)는 빔 방출기 인덱스(예를 들면, 레이저 인덱스)(L)에 의존하며 다음에 의해 제공된다
Figure pct00013
빔 어셈블리(예를 들면, 라이다의 헤드)에 너무 가깝지 않은 포인트의 경우, 즉, 거리(r)의 너무 작지 않은 값의 경우, 이 각도는 다음에 의해 근사될 수 있고
Figure pct00014
수직 보정(zL)만이 필요로 되고 반경 방향 보정(rL)은 무시될 수도 있다. 그러한 만큼, 빔 원점 포지션은, (rL, zL)의 항으로 또는 zL의 항으로만 표현될 수 있는 상대 변위에 기초하여, 빔 어셈블리의 기준 위치로부터 시작하여 결정될 수도 있다.
도 18은 각도(θ)에 대한 수직 보정(zL)의 효과를 도시한다. 패널 (a)는 도 16의 패널 (b)에 대응하고 패널 (b)는 도 16의 패널 (c)에 대응한다. 패널 (a)에서의 상위 엔벨로프 및 패널 (b)에서의 하위 엔벨로프는 보정되지 않은(즉, 초기) 각도(θ)에 관련이 있다. 패널 (a)에서의 하위 엔벨로프 및 패널 (b)에서의 상위 엔벨로프는 보정된 각도(θcorr)과 관련이 있다. 분명히 알 수 있는 바와 같이, 보정된 각도는 거리(r)에 실질적으로 독립적인 일정한 평균 거동을 나타낸다. 각각의 빔 또는 빔 방출기(예를 들면, 레이저)(L)의 각도(θL = θlaser)는 이 상수로서 정의된다.
인코더 측 및 디코더 측 둘 모두에서 각도(θ)의 보정을 가능하게 하기 위해, 다음의 값이 인코더에 의해 결정될 수도 있거나 또는 인코더로 제공될 수도 있고, 디코딩 프로세스가 인코딩 프로세스와 동일한 빔 어셈블리 정보(예를 들면, 라이다 정보)를 사용할 수 있도록 비트스트림에 인코딩될 수도 있다:
Figure pct00015
예를 들면, (라이다의) 헤드 포지션(xhead, yhead, zhead)과 같은, 빔 어셈블리의 기준 위치(예를 들면, 중심 위치)
Figure pct00016
각각의 빔 방출기(예를 들면, 레이저)에 대한 상대적 포지션(rL zL)
Figure pct00017
각각의 빔 방출기(예를 들면, 레이저)에 대한 일정한 각도(θL)
코딩될 포인트 클라우드를 획득(예를 들면, 샘플링)하기 위해 사용된 빔 어셈블리 또는 빔 어셈블리들의 특성을 설명하는 신택스 엘리먼트의 예가 하기에서 더욱 상세하게 설명될 것이다.
한 예로서, 빔 어셈블리의 기준 위치(예를 들면, 라이다의 헤드의 포지션)는 유저에 의해 제공될 수도 있고, 빔 어셈블리의 빔 방출기(예를 들면, 레이저)의 상대적 포지션 및 보정된 각도는 알고리즘적으로 확인될 수도 있다. 하나의 예에서, 이것은 다음과 같이 수행될 수도 있다:
1. 먼저, 보정되지 않은 각도(θ)의 히스토그램을 분석하는 것에 의해, 동일한 레이저 빔(L)에 속하는 포인트가 추출된다
2. 그 다음, 추출된 포인트에 대한 보정된 각도(θcorr,L)의 표준 편차를 최소화하는 것에 의해, 레이저 빔(L)의 상대적 포지션(rL zL)이 결정된다. 이것은, 예를 들면, 고전적인 최소화 알고리즘에 의해 수행될 수 있다. 수직 시프트(zL)만이 고려되는 경우, 이것은 후보 수직 상대적 포지션의 간격에 대한 간단한 최소화이다.
3. 마지막으로, 레이저(L)의 일정한 각도(θL)는 추출된 포인트에 대한 보정된 각도(θcorr,L)의 평균 값이다.
다음으로, 포인트 클라우드 또는 특정한 볼륨, 서브 볼륨, 또는 서브 볼륨의 그룹의 특정한 포인트에 대한 보정된 각도를 결정하기 위한 예시적인 방법이 설명될 것이다. 특히, 빔(예를 들면, 레이저 빔)(L)에 대한, 포인트 클라우드의 포인트의 보정된 각도의 탄젠트(tan(θcorr,L))의 결정을 위한 방법이 설명된다. 유사한 방식으로, 노드를 그 중심에 위치되는 포인트에 단순히 일치시키는 것에 의해 옥트리의 노드(또는 그것의 관련된 볼륨)에 대한 보정된 각도가 결정될 수도 있다. 볼륨의 서브 볼륨, 또는 서브 볼륨의 그룹에 대해 유사한 고려 사항이 적용된다.
(옥트리의 각각의 노드와 관련되는) 볼륨과 관련하여, 볼륨(예를 들면, 볼륨 내의 포인트)이 어떤 빔에 의해 획득되었는지를 명확하게 결정하기 위해 볼륨의 사이즈 및 위치에 대한 조건이 있다는 것이 이해되어야 한다. 두 개의 빔이 볼륨을 교차하는 경우, 모호성이 있다. 이 이슈를 해결하기 위해, 본 출원은 각도 코딩 모드에 대한 볼륨의 (각도) 적격성의 개념을 도입할 것을 제안한다.
하나의 예에서, 볼륨(또는 그것의 관련된 노드)의 각도 적격성은 다음과 같이 결정된다:
1. 빔 어셈블리의 기준 위치(예를 들면, 라이다의 헤드의 위치(xhead, yhead, zhead))로부터의 볼륨(볼륨의 기준 위치, 예를 들면, 중심)의 거리(r)를 계산함
2. Δθ = E/r에 의해 볼륨의 탄젠트 각도 사이즈(Δθ)를 계산함, 여기서 E는 볼륨의 통상적인 길이(예를 들면, 정육면체의 에지의 길이)임
3. 볼륨은
Figure pct00018
인 경우 적격인데, 여기서 최소치는 모든 빔 쌍에 대해 취해진다, 즉, 노드의 각도 사이즈는 (각도적으로) 가장 가까운 두 빔 사이의 각도 델타보다 더 작다. 계수 2는 약간의 보안 마진을 제공하기 위한 비제한적인 예로서 선택된다. 다른 계수(예를 들면, 1보다 더 큰 또는 동일한 계수)도 역시 실현 가능하다.
도 19는 각도 적격인 볼륨(1920) 및 각도 적격이 아닌 볼륨(1925)의 예를 도시한다. 즉, 볼륨(1925)의 사이즈 및 빔 어셈블리(1901)로부터의 그것의 거리는, 그것이 다수의 빔 방출기(1904)로부터의 다수의 빔(1906)에 의해 샘플링되도록 하는 그러한 것이다. 다른 한편으로, 볼륨(1920)의 사이즈 및 빔 어셈블리(1901)로부터의 그것의 거리는, 그것이 기껏해야 단일의 빔(1906)에 의해 샘플링되도록 하는 그러한 것이다.
일반적으로, 볼륨(또는 그것의 관련된 노드)의 각도 적격성을 결정하는 것은, 빔 어셈블리의 기준 위치로부터 봤을 때 볼륨의 각도 사이즈의 척도를 먼저 결정하는 것에 의해 진행될 수도 있다. 기준 위치는, 상기에서 언급되는 바와 같이, 헤드의 위치일 수도 있다. 각도 사이즈의 척도는, 볼륨의 에지가 기준 위치로부터 보이게 되는 각도에 관련될 수도 있고, 예를 들면, 볼륨의 에지의 길이 및 빔 어셈블리의 기준 위치까지의 볼륨의(볼륨의 기준 위치의) 거리에 기초하여 결정될 수도 있다. 그러한 만큼, 각도 사이즈의 척도는, 예를 들면, 상기에서 정의되는 각도 사이즈(Δθ)일 수도 있다. 그 다음, 각도 사이즈의 척도는, 상기에서 정의되는 차이 각도(Δθmin,laser)와 같은, 빔 어셈블리의 인접한 빔 사이의 차이 각도의 척도에 비교된다. 즉, 차이 각도는 빔 어셈블리의 가장 가까운 인접 빔 사이의 차이 각도일 수도 있다. 마지막으로, 비교의 결과에 기초하여 볼륨이 각도 적격인지 또는 아닌지의 여부가 결정된다. 예를 들면, 각도 적격성을 결정하는 것은, 각도 사이즈가 차이 각도의 절반(또는, 적절한 안전 마진을 제공하기 위한 차이 각도의 임의의 다른 적절한 분율)보다 더 작은지의 여부에 기초할 수도 있다. 하기에서 더욱 상세하게 설명될 바와 같이, 볼륨의 각도 적격성은 볼륨의(볼륨의 서브 볼륨의) 점유 패턴을 코딩하기 위한 컨텍스트가 각도 정보에 기초하여 결정 또는 선택될 수도 있다는 것을 암시할 수도 있다.
일단 각도 적격성이 결정되면, 각도 적격인 볼륨에 대한 빔(L)에 속하는 것은, 예를 들면, 다음의 접근법에 의해 결정될 수 있다:
1. 볼륨의 기준 위치(예를 들면, 볼륨의 중심)의 포지션 (x,y,z)로부터, 빔 어셈블리의 포지션 (xhead, yhead, zhead)에 상대적인 z 및 r을 결정함
2. 보정되지 않은 각도 tan(θ) = z/r을 계산함
Figure pct00019
3. |tan(θ) - tan(θL)| 최소인 빔 인덱스(L)를 찾는 것에 의해 볼륨/포인트가 어떤 가장 가까운 빔(L)에 속하는지를 결정함
일단 빔(예를 들면, 레이저 빔)(L)이 결정되면, 보정된 각도는 다음의 공식에 의해 계산될 수도 있다
Figure pct00020
또는
Figure pct00021
거기에서, 두 번째 등식은, 그것이 다른 역제곱근을 계산하는 것을 방지하기 때문에, 실질적으로 유용할 수도 있다.
일반적으로, 옥트리의 노드와 관련되는 볼륨에 대한 보정된 각도(θcorr)를 결정하기 위해 다음의 접근법이 후속될 수도 있다. 처음에, 빔 어셈블리의 기준 위치에 대한, 볼륨 내의 기준 위치에 대한 제1 각도(예를 들면, 앙각)가 결정된다. 볼륨 내의 기준 위치는, 예를 들면, 볼륨의 중심일 수도 있다. 빔 어셈블리의 기준 위치는, 예를 들면, 빔 어셈블리의 중심 위치일 수도 있다. 제1 앙각에 기초하여, 볼륨 내의 포인트를 획득한 것으로 가정되는(또는 실제로 획득한) 특정한 빔(또는 대응하는 빔 방출기)(L)이 결정된다. 다음으로, 그 특정한 빔에 대한 원점 위치(빔 원점 위치)가 결정되거나 또는 획득된다. 이것은 상기에서 설명되는 임의의 적절한 접근법에 의해 행해질 수도 있다. 특정한 빔의 원점 위치를 이용 가능하게 하면, 서브 볼륨 또는 서브 볼륨의 그룹(예를 들면, 볼륨 내의 평면)에 대한 보정된 앙각이 특정한 빔의 원점 위치와 관련하여 결정될 수 있다.
도 20은, 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트를 포함하는 빔 어셈블리에 의해 획득되는 포인트 클라우드를 인코딩하는 방법(2000)의 예를 플로우차트 형태로 예시한다. 포인트 클라우드는, 본 출원의 다른 곳에서 설명되는 바와 같이, 부모-자식 관계를 가지며 오브젝트의 삼차원 위치를 나타내는 복수의 노드를 갖는 트리 구조(예를 들면, 옥트리 구조)에 의해 정의된다. 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치된다. 포인트 클라우드는 체적 공간에서 데카르트 축과 관련하여 정의될 수도 있는데, 그 데카르트 축은 수평 평면에 수직인 수직 배향된 z 축일 수도 있고 빔 어셈블리(예를 들면, 라이다)의 메인 축 또는 메인 방위 축(예를 들면, 회전 축)에 실질적으로 평행할 수도 있다. 체적 공간에서, 볼륨은 자식 서브 볼륨의 세트로 구획되고, 볼륨은 트리의 노드와 관련되는데, 볼륨의 서브 볼륨은 노드의 자식 노드와 관련된다. 각기 각각의 자식 서브 볼륨과 관련되는 점유 비트는, 그 각각의 자식 서브 볼륨이 포인트 중 적어도 하나를 포함하는지의 여부를 나타낸다. 자식 서브 볼륨의 점유 비트는 점유 패턴을 정의한다고 말할 수도 있다. 방법(2000)에서, 자식 서브 볼륨으로 분할되는 볼륨과 관련되는 현재의 노드에 대해 동작(2010 내지 2040)이 수행된다.
동작(2010)에서, 볼륨의 자식 서브 볼륨의 점유 상태에 기초하여 볼륨에 대한 점유 패턴이 결정된다. 동작(2020 내지 2040)은, 점유 패턴의 표현을 비트스트림으로 엔트로피 인코딩하는 것에 관련된다. 동작(2020)에서, 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 각도 정보가 결정된다. 이 각도 정보는, 체적 공간 내의 빔 어셈블리와 관련되는 위치에 대한 하나 이상의 각도(예를 들면, 앙각)를 나타낸다. 앙각은, 빔 어셈블리와 관련되는 위치로부터 봤을 때, 빔 어셈블리의 메인 방향(예를 들면, 메인 축)(예컨대 빔의 세트의 공통 회전 축, 예를 들면, 라이다의 회전 축)에 실질적으로 직교하는 평면 위의 각각의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹의 앙각을 나타낼 수도 있다. 몇몇 구현예에서, 평면은 수평 평면(예를 들면, x-y 평면)일 수도 있다. 각도는, 예를 들면, 그들의 탄젠트로서 표현될 수도 있다. 빔 어셈블리와 관련되는 위치는 빔 어셈블리의 (기준) 위치 또는 빔 어셈블리의 특정한 빔의 원점 위치일 수도 있다. 동작(2030)에서, 각도 정보에 기초하여 점유 패턴의 표현을 인코딩하기 위한 컨텍스트가 결정된다. 마지막으로, 동작(2040)에서, 점유 패턴의 표현은 결정된 컨텍스트를 사용하여 엔트로피 인코딩된다.
도 21은, 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법(2100)의 예를 플로우차트 형태로 예시한다. 방법(2000)과 일치하여, 포인트 클라우드는 빔의 세트를 포함하는 빔 어셈블리에 의해 획득되었다는 것이 가정된다. 게다가, 포인트 클라우드는 방법(2000)에 대해 상기에서 설명되는 것과 동일한 방식으로 정의되는 것으로 가정된다. 동작(2110 내지 2130)은 자식 서브 볼륨으로 분할되는 볼륨과 관련되는 현재의 노드에 대해 수행된다.
동작(2110)에서, 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 각도 정보가 결정된다. 이 각도 정보는, 체적 공간 내의 빔 어셈블리와 관련되는 위치에 대한 하나 이상의 각도(예를 들면, 앙각)를 나타낸다. 동작(2120)에서, 각도 정보에 기초하여 볼륨의 점유 패턴의 표현을 디코딩하기 위한 컨텍스트가 결정된다. 상기에서와 같이, 점유 패턴은 볼륨의 자식 서브 볼륨의 점유 상태를 나타낸다. 마지막으로, 동작(2130)에서, 비트스트림은 결정된 컨텍스트를 사용하여 점유 패턴의 재구성된 표현을 생성하기 위해 엔트로피 디코딩된다.
상기에서 언급되는 바와 같이, 각도 정보는, 현재의 볼륨 내의 포인트를 획득한(예를 들면, 샘플링한) 것으로 가정되는 특정한 빔의 빔 원점 위치와 관련하여 보정된 각도가 측정된다는 의미에서, 보정된 각도(예를 들면, 보정된 앙각)에 관련될 수도 있다. 따라서, 각도 정보를 결정하는 것은, 빔 어셈블리의 기준 위치와 관련한, 볼륨 내의 기준 위치에 대한 제1(예를 들면, 초기) 앙각을 결정하는 것을 포함할 수도 있다. 일단 이 제1 고도각이 이용 가능하면, 그것은, 볼륨 내의 포인트를 획득한 것으로 가정될 수 있는 특정한 빔을 결정하기 위해 사용될 수 있다. 특정한 빔을 알면, 그것의 원점 위치는, 예를 들면, 룩업 테이블을 사용하는 것에 의해 또는 그것을 알고리즘적으로 결정하는 것에 의해 결정될 수 있다. 마지막으로, 볼륨의 자식 서브 볼륨 또는 자식 서브 볼륨의 그룹에 대한 하나 이상의 앙각이 특정한 빔의 원점 위치와 관련하여 결정될 수 있다. 그러면, 이들 앙각은 보정된 앙각에 대응할 것이다.
다음으로, 상기에서 소개된 평면 코딩 모드에서 평면 포지션 플래그를 엔트로피 코딩하기 위한 컨텍스트를 결정하기 위한 각도 정보를 사용하는 실시형태가 설명된다.
평면 정보, 즉, 평면 포지션에 대한 평면 포지션 플래그(예를 들면, 플래그(planePosition))에 대한 비트 및 평면 모드 플래그(예를 들면, 플래그(isPlanar))를, 압축 없이, 직접적으로 코딩하는 것은 비효율적인 평면 모드로 이어질 수도 있다는 것이 관찰되었다. 따라서, 평면 모드와 관련되는 신택스를 압축하는 것이 유리할 수 있다. 평면 포지션 플래그의 그러한 압축은, 상기에서 설명되는 바와 같이, 예측 방법에 기초하여 평면 포지션 플래그에 대한 이진 엔트로피 코더에 대한 컨텍스트를 선택하는 것에 의해 달성될 수 있다.
z 평면 모드의 경우, 노드가 평면인 경우(isZPlanar == 참), 평면 포지션(하단 또는 상단)은 여분의 비트(planeZPosition)에 의해 시그널링되어야만 한다. 이 비트는 또한, 도 9에서 도시되는 바와 같이, 자신의 컨텍스트가 예측 정보에 의존하는 이진 산술 코더를 사용하여 코딩된다. 이 예측 정보는 다음의 것 중 임의의 것, 일부, 또는 모두로 구성된다:
Figure pct00022
현재의 노드에 인접하는 부모 노드의 수직 이웃의 점유,
Figure pct00023
동일한 z 및 동일한 깊이에서 가장 가까운 이미 코딩된 노드로부터의 거리(d), 여기서 d는 세 개의 값("가까운" 또는 "너무 멀지 않은" 또는 "먼")으로 이산화될 수도 있음,
Figure pct00024
(현재의 노드와) 동일한 z 및 동일한 깊이에서 가장 가까운 이미 코딩된 노드의 평면 포지션(만약 있다면, 하단 또는 상단), 및
Figure pct00025
자신의 부모 노드에 대한 현재의 노드의 수직 좌표(z).
상기의 예측 정보 모두를 사용하면, 이것은 (현재의 노드와) 동일한 z 및 깊이에서 가장 가까운 이미 코딩된 노드가 평면인 경우 2×3×2×2 = 24 개의 가능한 예측 조합으로 이어지고; 그렇지 않고 동일한 z 및 동일한 깊이에서 가장 가까운 이미 코딩된 노드가 평면이 아닌 경우, 여분의 특정한 컨텍스트가 대신 사용된다. 따라서, 24 + 1 = 25 개의 컨텍스트는 평면 포지션을 코딩하기 위해 이진 산술 코더에 의해 사용될 수도 있다.
본 실시형태는, 각도 적격인 노드에 대한 각도 정보(예를 들면, tan(θcorr,L))의 지식을 사용하는 것에 의해 비트(planeZPosition)의 예측 정보를 향상 또는 대체하는 것을 제안한다.
따라서, 이 실시형태의 동작(2030) 또는 동작(2120)에서의 컨텍스트 결정은 볼륨이 평면의 볼륨인지의(평면의 볼륨인 것으로 결정되는지의) 여부에 의존할 수도 있다. 방법(2000 및 2100)은 이 목적을 위해 각각의 결정 단계를 포함할 수도 있다. 상기에서 설명되는 바와 같이, 평면의 볼륨은, 각각의 평행한 평면에서 자식 서브 볼륨의 복수의 세트로 구획되는 볼륨인데, 이 경우, 적어도 하나의 포인트를 포함하는 모든 자식 서브 볼륨은 동일한 평면에서 배치된다. 평행한 평면은 수평 평면에 평행한 것으로, 또는 빔 어셈블리의 메인 축(예를 들면, 라이다의 헤드의 회전 축)에 직교하는 것으로 이해될 수도 있다. 예를 들면, 옥트리의 경우, 제1 세트의 네 개의 자식 서브 볼륨의 제1 세트 및 네 개의 자식 서브 볼륨의 제2 세트가 있을 것이고, 평면 포지션 플래그는, 포인트를 포함하는 자식 서브 볼륨이 있는지의 제1 세트 또는 제2 세트 중 어느 하나에 위치되는지의 여부를 나타낼 것이다.
볼륨이 평면의 볼륨인(평면의 볼륨인 것으로 결정되는) 경우, 동작(2030) 또는 동작(2120)에서 점유 패턴의 표현을 코딩하기 위한 컨텍스트를 결정하는 것은, 상기에서 정의되는 각도 정보에 기초하여 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 포함한다. 이 평면 포지션 플래그(예를 들면, 플래그(planeZPosition))는 적어도 하나의 포인트를 포함하는 자식 서브 볼륨이 배치되는 평면의 포지션을 시그널링한다. 또한, 동작(2040) 또는 동작(2130)에서 점유 패턴의 표현을 엔트로피 코딩하는 것은, 결정된 컨텍스트를 사용하여 평면 포지션 플래그를 엔트로피 코딩하는 것을 포함한다.
몇몇 구현예에서, 상기에서 주어지는 예측 정보는, 각도 정보에 의해 대치될(superseded) 수도 있거나, 부분적으로 대치될 수도 있거나, 또는 향상될 수도 있다. 따라서, 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은, 적어도 부분적으로, 다음의 것 중 하나 이상에 기초할 수도 있다: (a') 볼륨의 부모 볼륨의 깊이에서의 이웃하는 볼륨의 점유, (b') 볼륨과 가장 가까운 이미 코딩된 점유된 볼륨 사이의 거리, (c') 만약 있다면, 가장 가까운 이미 코딩된 점유된 볼륨의 평면 포지션, 또는 (d') 각도 정보 외에, 부모 볼륨 내에서의 볼륨의 포지션. 거리는 가까울 수도 있거나, 너무 멀지 않을 수도 있거나, 또는 멀 수도 있고, 거리 메트릭을 계산하는 것 및 그것을 제1 임계치 및 제2 임계치에 비교하는 것에 기초한다. 일반적으로, 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은 (a'), (b'), (c'), (d'), 및 각도 정보 중 세 개 이상의 것(또는 네 개 이상의 것)의 조합에 기초할 수도 있다.
컨텍스트를 결정하기 위해 사용되는 각도 정보는, 볼륨에 대해 결정된 특정한 빔의 원점 위치에 대한, 볼륨의 복수의 평행한 평면 각각에 대한 각각의 앙각을 포함할 수도 있다. 따라서, 각도 정보를 결정하는 것은 각각의 평면에 대한 이들 앙각을 결정하는 것을 포함할 수도 있다. 앙각은, 특정한 빔의 원점 위치에 대한, 각각의 평행한 평면 내의 기준 위치(예를 들면, 중심 위치)에 대해 결정될 수도 있다. 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것은, 복수의 평행한 평면 각각에 대한 각각의 앙각을 볼륨을, 볼륨을 샘플링한 것으로 가정되는 특정한 빔의 빔 각도(θL)(또는 tan(θL))에 비교하는 것, 및 각각의 비교의 결과에 기초하여 평면 포지션 플래그를 코딩하기 위한 컨텍스트를 결정하는 것을 포함할 수도 있다.
옥트리의 경우, 상기의 내용은, 하단 및 상단 가상 평면에 대한 두 개의 각도, 즉, 하단 및 상단 보정된 수직 각도를 각각 계산하는 것에 해당한다. 몇몇 구현예에서, 두 개의 각도의 결정은, 노드의 자식 노드가 각도 적격인지의 여부에 종속될 수도 있다. 이들 두 개의 각도는 두 개의 하단 및 상단 가상 평면의 중심에 위치되는 포인트와 관련되는 보정된 각도(tan(θbottom,L) 및 tan(θtop,L))에 대응하며 도 22에서 예시된다. 이 도면에서, 각도 적격인 볼륨(2220)은 상위 평면(2230)(이것에 대응하는 서브 볼륨의 세트) 및 하위 평면(2240)(이것에 대응하는 서브 볼륨의 세트)을 갖는다. 보정된 각도(tan(θtop,L))는, 볼륨(2220) 내의 포인트를 샘플링한 빔(2206)을 방출하는 빔 방출기(2204)의 원점 위치로부터 봤을 때, 수평 평면(2208) 위의 상위 평면(2230)의 중심 위치(2232)의 고도를 측정한다. 마찬가지로, 보정된 각도(tan(θbottom,L))는 빔 방출기(2204)의 원점 위치로부터 봤을 때 수평 평면(2208) 위의 하위 평면(2240)의 중심 위치(2242)의 고도를 측정한다.
일단 볼륨의 가상 평면에 대한 앙각(tan(θtop,L) 및 tan(θbottom,L))이 계산되면, 그들은 평면 포지션 플래그를 엔트로피 코딩하기 위한 컨텍스트를 결정하기 위해 사용될 수 있다. 예를 들면, 컨텍스트를 결정하는 것은 다음의 것 중 적어도 하나에 기초할 수도 있다: 특정한 빔의 빔 각도(tan(θL))와 복수의 평행한 평면 각각에 대한 각각의 앙각 사이의 차이, 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기, 및 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기 중 가장 큰 것과 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 크기 중 가장 작은 것 사이의 차이의 양자화 결과. 몇몇 구현예에서, 이것은, 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 상기 차이를 서로에게 비교하는 것 및/또는 복수의 평행한 평면 각각에 대한 각각의 앙각과 특정한 빔의 빔 각도 사이의 차이의 상기 크기를 서로에게 비교하는 것을 수반할 수도 있다. 양자화는, 예를 들면, 삼원 양자화(ternary quantization)일 수도 있다.
옥트리의 경우, 평면 포지션 플래그를 엔트로피 코딩하기 위한 컨텍스트는 두 개의 각도(tan(θbottom,L) 및 tan(θtop,L))를 (어쩌면 상기에서 주어지는 예측 정보 (a') 내지 (d')를 함께) 사용하여 결정될 수도 있다.
예를 들면, 각도 컨텍스트 인덱스는, 다음과 같이 컨텍스트 인덱스를 계산하는 것에 의해 하단/상단 수직 각도(tan(θbottom,L) 및 tan(θtop,L))로부터 결정될 수도 있다:
Figure pct00026
컨텍스트 인덱스의 제1 비트는 차이(tan(θL) - tan(θbottom) 및 tan(θL) - tan(θtop))가 동일한 부호를 갖는지 또는 갖지 않는지의 여부에 의존함
Figure pct00027
컨텍스트 인덱스의 제2 비트는 |tan(θL) - tan(θbottom)| 및 |tan(θL) - tan(θtop)| 중 어떤 것이 가장 큰 크기를 갖는지에 의존함
Figure pct00028
컨텍스트 인덱스는, |tan(θL) - tan(θbottom)| 및 |tan(θL) - tan(θtop)| 중에서 차이(D = max - min)의 양자화(예를 들면, 삼원 양자화)에 또한 의존함. 양자화는 노드 중심과 관련되는 역 반경(inverse radius)(r)에 대해 수행될 수도 있다, 즉, 값(D*r)은 양자화될 수도 있음
의사 코드에서, 상기의 예에서의 각도 컨텍스트 인덱스의 결정은 다음에 의해 획득될 수도 있다
Figure pct00029
상기의 예에서, 수량(D*r)은, D*r의 값이 0.5보다 더 작은 것, 0.5와 1 사이에 있는 것, 1과 1.5 사이에 있는 것 또는 1.5보다 더 큰 것에 대응하는 네 개의 값 {0,1,2,3}에 걸쳐 양자화된다. 결과적으로, 각도 컨텍스트 인덱스는 2*2*4 = 16 개의 값을 취할 수 있다.
상기에서 언급되는 바와 같이, 각도 컨텍스트는 평면 모드 컨텍스트 결정에서 사용되는 예측 정보(예를 들면, 예측 정보 (a') 내지 (d'))를 대체할 수 있거나 또는 예측 정보를 향상시켜 평면/각도 컨텍스트의 새로운(즉, 더 큰) 세트를 생성할 수 있다.
다음으로, 볼륨의 자식 서브 볼륨에 대한 엔트로피 코딩 점유 비트에 대한 컨텍스트를 결정하기 위한, 각도 정보를 사용하는 실시형태가 설명될 것이다.
현재의 노드(현재의 볼륨)의 자식 노드(자식 서브 볼륨)의 점유는, 이웃하는 노드의 점유에 따라 "컨텍스트"가 선택되는 산술 엔트로피 코더에 의해 코딩되는 각각의 점유 비트에 의해 시그널링된다. 옥트리의 경우, 여덟 개의 자식 노드의 점유는 여덟 개의 각각의 점유 비트에 의해 시그널링된다.
따라서, 본 실시형태에서, 점유 패턴의 표현을 코딩하기 위한 컨텍스트를 결정하는 것은, 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것을 포함한다. 게다가, 점유 패턴의 표현을 엔트로피 코딩하는 것은 결정된 컨텍스트를 사용하여 점유 비트를 엔트로피 코딩하는 것을 포함한다.
종래에, 점유 비트에 대한 컨텍스트 선택은, 점유 비트를 코딩하기 위해 선택되는 (매우) 제한된 개수의 코더 중에서 이진 엔트로피 코더의 인덱스를 제공하는 소위 OBUF 메커니즘을 통해 산술 코더 그 자체 상에서 수행된다. 선택된 코더의 인덱스는, 예를 들면, 다음의 정보에 따라 획득될 수 있다:
Figure pct00030
선행하는 코딩된 점유 비트의 값,
Figure pct00031
이웃하는 정보,
Figure pct00032
인터/인트라 예측.
실제로, 인덱스는, 자신의 엔트리가 상기의 정보를 반영하는 룩업 테이블(Look UP Table; LUT)의 출력에 의해 제공될 수도 있다. 일반적으로, 각각의 점유 비트는, 엔트로피 코더의 사전 정의된 세트로부터 그 점유 비트에 대해 선택되는 엔트로피 코더에 의해 코딩될 수도 있다.
본 실시형태는 각도 정보에 적어도 부분적으로 기초하여 점유 비트에 대한 컨텍스트를 결정하는 것을 제안한다. 몇몇 구현예에서, 이것은, 엔트리에 의해 사용되는 정보의 목록에 각도 정보를 추가하는 것에 의해 코더 인덱스의 OBUF LUT 엔트리를 수정하는 것에 해당할 수도 있다.
도 23은 현재의 노드의 자식 노드의 점유 비트를 엔트로피 코딩하기 위한 컨텍스트를 결정하기 위한 각도 정보의 결정의 예를 도시한다. (현재의 노드와 관련되는) 각도 적격인 현재의 볼륨(2320)에 대해, 일단 볼륨(2320) 내의 포인트를 획득한(예를 들면, 샘플링한) 것으로 가정되는 특정한 빔(L)(2306)이 결정되면, 보정된 각도(tan(θj,L))는 현재의 노드의 자식 노드 j(2350)(예를 들면, 옥트리의 경우 여덟 개의 자식 노드) 각각에 대해 계산된다. 이들 각도는 자식 노드(또는 그들의 관련된 자식 서브 볼륨)의 중심 위치(2352)에 대해 계산될 수도 있다. 앞서 언급되는 바와 같이, 각도는 빔(2306)의 원점 위치(또는 등가적으로 빔 방출기(2304)의 위치)에서부터 봤을 때 수평 평면(2308)에 대한 앙각일 수도 있다. 그 다음, 각각의 자식 노드 j에 대해, 특정한 빔(L)으로부터의 각도 거리(Δj)는 다음에 의해 결정될 수도 있다
Figure pct00033
일반적으로, 이 실시형태의 동작(2020) 또는 동작(2110)에서 각도 정보를 결정하는 것은, 특정한 빔의 원점 위치에 대한, 볼륨의 자식 서브 볼륨 각각에 대한 각각의 앙각을 결정하는 것을 포함한다. 그 다음, 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트는, 볼륨의 자식 서브 볼륨 각각에 대한 각각의 앙각을, 특정한 빔의 빔 각도에 비교하는 것에 의해(예를 들면, 각각의 각도 사이의 각도 거리(Δj) 또는 차이를 계산하는 것에 의해), 그리고 각각의 비교의 결과에 기초하여 볼륨의 자식 서브 볼륨에 대한 점유 비트를 코딩하기 위한 컨텍스트를 결정하는 것에 의해 결정될 수 있다.
(예를 들면, OBUF LUT 엔트리의 향상으로서) 컨텍스트 결정에서 비교 결과(예를 들면, 각도 거리(Δj))를 사용하기 위한 두 개의 예시적인 방법이 이하에서 설명될 것이다.
제1 예에서, 점유 비트에 대한 코더(컨텍스트)를 선택하는 것은, 볼륨의 자식 서브 볼륨 각각에 대한 앙각과 특정한 빔의 빔 각도 사이의 차이(Δj)의 각각의 크기에 기초하여 점유 비트를 순서화하는(ordering) 것을 수반할 수도 있다. 그 다음, 자식 서브 볼륨의 각각의 점유 비트의 순서 인덱스에 기초하여 각각의 코더(컨텍스트)가 선택될 수도 있다.
구체적으로, 제1 예에 따른 방법은 다음과 같이 진행될 수도 있다:
1. 자식 서브 볼륨을 그들의 Δj의 값에 따라, 예를 들면, 더 작은 것에서부터 더 높은 것으로, 순서화함. 따라서, 각각의 자식 서브 볼륨 j는 순서 인덱스(0 ≤ o(j) ≤ 7)를 할당받음.
2. 옵션 사항으로, 주문 인덱스(o(j))는 7보다 더 작은 값에 의해 제한될(capped) 수도 있다.
3. 순서 인덱스(o(j))는, 더 작은 인덱스(즉, 본 예에서 더 작은 Δj)가 점유의 더 높은 확률로 이어진다는 예상과 함께 OBUF LUT 엔트리에서 직접적으로 사용된다.
제2 예에서, 점유 비트에 대한 코더(컨텍스트)를 선택하는 것은, 볼륨의 자식 서브 볼륨 각각에 대한 앙각(θj,L)과 특정한 빔(L)의 빔 각도(θL) 사이의 차이(Δj)의 각각의 크기를 양자화하는 것 및 차이의 상기 크기의 각각의 양자화된 값에 기초하여 각각의 코더(컨텍스트)를 선택하는 것을 수반할 수도 있다.
구체적으로, 제2 예에 따른 방법은 다음과 같이 진행될 수도 있다:
1. 각각의 자식 서브 볼륨 j에 대해, 값(Δj)(또는 Δj*r)을 양자화하여 이산 값(Q(Δj))을 획득함. 양자화된 값은 주어진 임계치로 제한될 수도 있음.
2. 양자화된 값(Q(Δj))은, 더 작은 값이 점유의 더 높은 확률로 이어진다는 예상과 함께, OBUF LUT 엔트리에서 직접적으로 사용될 수 있다.
각도와 관련하여 이 출원에서 이루어지는 임의의 진술(statement)은 각도의 탄젠트에 마찬가지로 적용되며, 그 반대의 경우도 마찬가지이다는 것이 이해된다. 특히, 각각의 각도의 탄젠트를 수반하는 계산은, 어쩌면 적절한 삼각 변환(trigonometric transformation) 이후에, 각도 그 자체에 기초하여 마찬가지로 수행될 수 있으며, 그 반대의 경우도 가능하다. 몇몇 구현예에서, 값비싼 삼각 함수(trigonometric function) 또는 그들의 근사의 사용을 방지하기 위해 각도의 탄젠트를 사용하는 것이 유리할 수도 있다.
각도 결정에 대한 볼륨 형상의 영향
각도 적격인 볼륨의 형상은, 서브 볼륨의 점유된 세트와 점유되지 않은(non-occupied) 세트 사이를 구별하는 각도 정보의 성능에 영향을 끼친다. 보다 정확하게는, 수직 방향으로 신장되는 볼륨은, 서브 볼륨의 세트의 점유를 나타내는 점유 정보를 코딩하는 엔트로피 코더에 대한 컨텍스트를 결정하기 위해 사용되는 앙각을 고려할 때 더 나은 구별을 제공하는 경향이 있다.
이제, 각각의 패널 (a), (b) 및 (c)가 도 22의 (평면 (r,z)에서의) 이차원 표현인 도 29에 대한 참조가 이루어진다. 여기서, 이차원 표현은, 빔 방출기(2904)의 원점 위치로부터 수평 평면(2908) 위의 상위 평면의 중심 위치(2932)(각각 하위 평면의 중심 위치(2942))의 고도를 측정하는 것에 의해 획득되는 보정된 각도(tan(θtop))(각각 tan(θbottom,L))에 대한 각도 적격인 볼륨(2920)의 형상의 영향을 나타내기 위한 간략화를 위해 사용된다. 방출된 빔(2906)은 볼륨(2920) 내의 포인트(2905)를 샘플링하였다. 패널 (a)는 볼륨(2920)을 본질적으로 정육면체인 것으로 묘사하고, 패널 (b)는 볼륨(2920)을 (라이다의 메인 축에 대해) 방사 방향으로 연장되는 것으로 묘사하고, 패널 (c)는 볼륨(2920)을 라이다의 메인 축 방향의 방향으로 연장되는 것으로 묘사한다. 각도 결정에 대한 그들의 형상의 영향을 비교하기 위해 본질적으로 동일한 정육면체 척도를 포괄하는 볼륨(2920)을 고려해야 한다. 본질적으로 동일한 정육면체 척도를 포함하며, 더 높은 비율(H/W) - 여기서 H는 메인 축 방향을 따른 볼륨 높이이고 W는 방사 방향을 따르는 볼륨 폭임 - 을 갖는 볼륨(2920)이, 서브 볼륨의 점유된 세트를 예측하기 위한, 빔 각도(tan(θL))와 관련하여 더 높은 각도 구별 - tan(θbottom,L)와 대비한 tan(θtop) - 로 이어진다는 것이 기하학적으로 관찰된다. 따라서, 각도 모드 코딩을 사용할 때, 트리의 노드와 관련되는 볼륨이 1보다 엄밀히 큰 비율(H/W)을 가지도록 트리를 구성하는 것이 유리할 수도 있다.
제1 예에서, 포인트 클라우드의 기하학적 형상을 나타내는 트리의 노드와 관련되는 볼륨에 대한 높은 비율(H/W)은, 그 자체로 높은 비율(H/W)을 갖는, 루트 노드와 관련되는 초기 볼륨(또는 경계 박스)으로부터 시작하는 것 및, 그 다음, 최소 사이즈가 도달될 때까지 자식 노드와 관련되는 모든 서브 볼륨이 동일한 비율(H/W)을 가지도록 이 초기 볼륨을 트리 구조(예를 들면, 옥트리 구조 또는 임의의 다른 트리 구조)를 따라 재귀적으로 분할하는 것에 의해 획득될 수도 있다.
제2 예에서, 포인트 클라우드의 기하학적 형상을 나타내는 트리의 노드와 관련되는 볼륨에 대한 높은 비율(H/W)은, 임의의 비율(H/W)을 갖는, 루트 노드와 관련되는 초기 볼륨(또는 경계 박스)으로부터 시작하는 것, 그 다음, 예컨대 비율 조건(H/W >= r > 1) - 여기서 r은 주어진 비율 파라미터임 - 을 충족하는 자식 노드와 관련되는 서브 볼륨이 획득되는 방사 방향을 따라(예를 들면, x 및 y 축을 따라) 이 초기 볼륨을 재귀적으로 분할하는 것, 및 마지막으로, 최소 서브 볼륨 사이즈가 도달될 때까지 모든 후속하는 서브 볼륨이 동일한 비율 조건(H/W = r)을 계속 유지하도록 트리 구조(예를 들면, 트리 구조 또는 임의의 다른 트리 구조)를 따르는 재귀적 분할을 계속하는 것에 의해 획득될 수도 있다. 예를 들면, 최소 서브 볼륨 사이즈는, 서브 볼륨의 방사상 사이즈(예를 들면, x 사이즈 또는/및 y 사이즈)가 최소 허용 가능한 사이즈(예를 들면, 사이즈 1)가 될 때 도달될 수도 있고, 상기 서브 볼륨의 추가적인 분할은 비율 조건을 더 이상 보장하지 않으면서 메인 축(예를 들면, z 축)을 따라서만 수행될 수 있다. 서브 볼륨 사이즈가 최소가 될 때(예를 들면, 세 개의 축을 따라 사이즈 1)까지 추가적인 분할이 수행될 수도 있다.
일반성의 손실 없이, 볼륨과 관련되는 사이즈(H와 W)는 (헤드 메인 축을 따르는) 높이와 볼륨의 방사 축을 따르는 폭을 나타낸다. 실질적으로, H는 볼륨을 메인 축(예를 들면, z 축) 상으로 투영하는 것에 의해 획득되는 세그먼트의 길이일 수도 있고, 그 결과, H는 볼록 형상을 갖는 임의의 볼륨에 대해 잘 정의된다. 마찬가지로, W는, 메인 축에 직교하는 볼륨을 (방사) 축(예를 들면, x 및 y 축) 상으로 투영하는 것에 의해 획득되는 두 개의 세그먼트의 길이(Lx 및 Ly) 중 최대치일 수도 있고, 그 결과, W는 볼록한 형상을 갖는 임의의 볼륨에 대해 잘 정의된다.
제2 예의 실시형태에서, 비율 조건(H/W = r > 1)은, (직사각형) 직육면체(예를 들면, 신발 상자 형상)일 수도 있는 초기 볼륨이 방사 축(예를 들면, x 및 y 축)을 따르는 이진 트리(BT) 및/또는 쿼드트리(QT) 구획화를 사용하여 재귀적으로 분할될 때 획득된다. 정의에 의해, 방사 축을 따르는 BT 구획화는, 방사 축(x 또는 y 축)에 직교하는 평면을 사용하여 볼륨을 절단하는 것에 의해 볼륨을 두 개의 서브 볼륨으로 분할한다. 방사 축을 따르는 QT 구획화는 두 개의 평면 - 그들 각각은 방사 축 중 하나에 직교함 - 을 사용하여 볼륨을 절단하는 것에 의해 볼륨을 네 개의 서브 볼륨으로 분할한다. 특정한 실시형태에서, BT 및 QT 구획화는, 분할 평면이 직육면체 볼륨의 한 면에 평행하도록, 그리고 볼륨의 서브 볼륨 모두가 동일한 사이즈를 갖는 직육면체이도록 수행될 수도 있다. 방사 축을 따르는 BT 및/또는 QT 구획화를 사용하여 초기 볼륨을 재귀적으로 분할하는 것은, 소망되는 H/W = r > 1 비율을 갖는 직육면체 서브 볼륨이 획득될 때까지 수행된다.
다른 실시형태에서, 방사 축을 따르는 BT 및/또는 QT 구획화를 사용하여 초기 볼륨을 재귀적으로 분할하는 것은, 직육면체 서브 볼륨이 최소 방사상 사이즈(예를 들면, x 사이즈 및 y 사이즈 둘 모두 1)에 도달할 때까지 수행되고, 그 다음, 후속하는 직육면체 서브 볼륨이 최소 전체 사이즈(예를 들면, 세 개의 축을 따라 사이즈 1)에 도달할 때까지만 메인 축(예를 들면, z 축)을 따라 추가적인 구획화가 수행된다.
다른 실시형태에서, 획득된 직육면체 서브 볼륨이 방사 방향 둘 모두에서 동일한 사이즈를 가질 때(예를 들면, x에서의 사이즈가 y에서의 사이즈와 동일함)까지 하나의 방사 축(예를 들면, x 축 또는 y 축)을 따르는 BT 구획화만을 사용하여 초기 볼륨을 재귀적으로 분할하는 것이 수행되고, 그 다음, 후속하는 직육면체 서브 볼륨이 최소 방사 사이즈(예를 들면, x 사이즈 및 y 사이즈 둘 모두가 1임)에 도달할 때까지 방사 축 둘 모두(예를 들면, x 및 y 축)를 따라 제1 추가적인 QT 구획화가 수행되고, 그 다음, 후속하는 직육면체 서브 볼륨이 최소 전체 사이즈(예를 들면, 세 개의 축을 따라 사이즈 1)에 도달할 때까지 메인 축(예를 들면, z 축)을 따라 제2 추가적인 QT 구획화가 수행된다.
다른 실시형태에서, 획득된 직육면체 서브 볼륨이 방사 방향 둘 모두에서 동일한 사이즈를 가질 때(예를 들면, x에서의 사이즈가 y에서의 사이즈와 동일함)까지 하나의 방사 축(예를 들면, x 축 또는 y 축)을 따르는 BT 구획화만을 사용하여 초기 볼륨을 재귀적으로 분할하는 것이 수행되고, 그 다음, 후속하는 직육면체 서브 볼륨이 소망되는 비율 조건(H/W = r > 1)에 도달할 때까지 방사 축 둘 모두(예를 들면, x 및 y 축)를 따라 제1 추가적인 QT 구획화가 수행되고, 그 다음, 최소 방사 사이즈가 도달될 때까지 모든 축(예를 들면, x, y 및 z)을 따라 제2 추가적인 구획화가 수행되고, 마지막으로, 후속하는 직육면체 서브 볼륨이 최소 전체 사이즈(예를 들면, 세 개의 축을 따라 사이즈 1)에 도달할 때까지만 메인 축(예를 들면, z 축)을 따라 제3 추가적인 구획화가 수행된다.
제2 예의 또 다른 실시형태에서, 타겟 비율(r)은 비트스트림에서 시그널링될 수도 있다. 인코더 및 디코더 둘 모두는, 획득된 서브 볼륨의 H/W 비율이 적어도 r(예를 들면, H/W >= r)이 될 때까지, 예를 들면, BT 및 또는 QT 구획화를 사용하는 것에 의해, 방사 축을 따라 노드와 관련되는 볼륨을 분할할 수도 있다. 일단 서브 볼륨에 대한 목표 비율(H/W >= r)에 도달되면, 이 서브 볼륨은, 그 다음, 옥트리 구획화 또는 임의의 다른 트리 구획화(예를 들면, 메인 축을 따르는 이진 트리 구획화)를 사용하는 것에 의해 추가로 분할될 수도 있다. 디코더는 비트스트림으로부터 목표 비율(r)을 수신할 수도 있고, 목표 비율(r)을 디코딩할 수도 있고 그것을 초기 볼륨의 구획화를 위해 사용할 수도 있다. 비트스트림에서 목표 비율(r)이 존재하지 않는 경우, 목표 비율(r)의 값은 사전 결정된 값(예를 들면, r = 1)으로 추론될 수도 있거나 또는 초기 볼륨의 구획화는 서브 볼륨의 비율(H/W)에 대해 어떠한 값도 목표로 하지 않으면서 임의의 트리 구획화에 의해 직접적으로 시작될 수도 있다.
각도 모드 신택스
상기에서 설명된 바와 같이, 각도 정보(예를 들면, tan(θcorr,L))는, 예를 들면, 옥트리에 의해 표현되는 포인트 클라우드의 기하학적 형상의 압축 성능을 개선하기 위해 사용될 수도 있다. 각도 모드 코딩의 컨텍스트에서 발생할 수도 있는 한 가지 질문은, 빔 어셈블리(예를 들면, 라이다)에 의해 획득되는 포인트 클라우드의 포인트가 속하는 준 2D 공간을 완전히 설명하기 위해, 그리고 각도 정보의 결정을 돕기 위해, 비트스트림의 전용 신택스에 어떤 정보가 입력되어야 하는지이다. 다른 질문은 이 정보가 비트스트림에서 어디에 배치되어야 하는지이다.
포인트 클라우드 코덱의 압축 성능을 개선하기 위해 신택스에 의해 제공되는 정보를 사용하는 것이 중요한 목표이기 때문에, 제안된 신택스가 비트스트림의 사이즈에 불필요하게 부정적인 영향을 끼치지 않도록 충분히 간결한(compact) 것이 보장되어야 한다. 또한, 신택스는 다양한 포지션 및 방위(반드시 수직은 아님)를 갖는 다수의 빔 어셈블리(예를 들면, 라이다)를 수반하는 다소 복잡한 획득 시나리오를 설명할 수 있을 만큼 충분히 유연해야 한다. 본 실시형태는 전술한 질문 및 요구를 해결하는 신택스(예를 들면, 하이 레벨 신택스)를 제안한다.
먼저, 빔 어셈블리(예를 들면, 예컨대, 라이다 또는 라이다 헤드)의 가능한 특성이 도 24 내지 도 26을 참조하여 설명될 것이다. 의도된 제한 없이, 라이다 또는 라이다 헤드에 대한 참조가 이루어질 것이지만, 그러나, 포인트 클라우드를 획득하기 위한 빔 어셈블리의 다른 구현예도 본 설명에 의해 마찬가지로 포괄되는 것으로 이해되어야 한다.
포인트 클라우드는 하나 이상의 라이다 헤드에 의해 캡쳐(예를 들면, 획득)될 수도 있다. 예를 들면, 여러 개의 라이다(라이다 헤드)가 차량에 부착될 수도 있는데, 그들 각각은 장면의 일부를 획득(예를 들면, 샘플링, 프로빙)한다. 단일의 라이다 헤드의 경우, 3D xyz 공간(예를 들면, 앞서 언급된 체적 공간)을 라이다 방위와 정렬하는 것이 자연스럽다. 예를 들면, 수직 축(z)은 라이다의 헤드 회전 축과 평행하게 되도록 배열될 수도 있고, 라이다의 헤드 중심은 xyz 좌표의 원점(O = (0,0,0))에 위치될 수도 있다. 그러나, 그러한 정렬은 부과되어서는 안된다. 설상가상으로, 동일한 포인트 클라우드를 획득하는 여러 개의 라이다를 처리할 때 그것은 하나보다 더 많은 라이다에 대해 유지될 수 없다. 결과적으로, 적어도 다음의 라이다 포지션 정보를 신택스에 포함시키는 것이 제안된다:
Figure pct00034
(라이다) 헤드의 개수
Figure pct00035
각각의 헤드에 대한
Figure pct00036
헤드 포지션(xhead, yhead, zhead)
Figure pct00037
헤드 방위(메인 축, 주 방위 축), 예를 들면, 헤드의 회전 축의 방위
이제, (빔 어셈블리의 비제한적인 예로서의) 라이다 헤드(2401)를 개략적인 형태로 도시하는 도 24에 대한 참조가 이루어진다. 또한 라이다 헤드(2401)의 중심 위치(2410) 및 메인 축(예를 들면, 회전 축)(2402)이 도시되어 있다. 라이다 헤드(2401)의 방위는, 포인트 클라우드가 정의되는 3D 공간의 xyz 좌표의 축에 평행할 수도 있거나 또는 그렇지 않을 수도 있다. 그렇지 않은 경우, 헤드의 메인 축(예를 들면, 회전 축)은, 구면 좌표의 두 개의 각도(예를 들면,
Figure pct00038
, θ) 또는 (단일의) 3D 벡터 중 어느 하나에 의해 비트스트림에서 시그널링될 수도 있다. 메인 축(2402)은 빔 어셈블리의 기준 위치(2410)를 통해 이어지는 것으로 가정된다는 것이 이해된다.
단일의 라이다 헤드 사용 사례에 대해 신택스가 간결하게 되는 것을 보장하기 위해, 헤드가 원점에 위치되고, 즉, xhead = yhead = zhead = 0이고, 및/또는 메인 축이 xyz 좌표 축 중 하나에 평행한 특정한 상황을 시그널링함에 있어서 단축키를 갖는 것이 유리하다. 그러한 단축키의 예는 하기에서 설명될 것이다.
빔(예를 들면, 레이저)과 관련하여, 상기에서 설명되는 보정된 각도를 계산할 수도 있기 위해, 각각의 헤드에 대해, 다음의 정보를 신택스에 포함시키는 것이 제안된다:
Figure pct00039
각각의 헤드에 대한
Figure pct00040
헤드에 부착되는 또는 헤드에 의해 포함되는 빔(예를 들면, 레이저)의 개수
Figure pct00041
각각의 빔에 대한
Figure pct00042
빔 상대적 포지션(예를 들면, 헤드의 기준/중심 위치에 대한 빔 원점의 상대적 포지션)
Figure pct00043
빔 각도
상기에서 논의되는 바와 같이, 빔의 상대적 포지션은, 주어진 빔에 의해 획득되는 포인트의 각도가 헤드로부터의 거리(r)에 독립적으로 일정한 것을 보장하는 보정된 각도를 계산하는 데 중요할 수도 있다. 메인 보정 인자는, 메인 축(예를 들면, 회전 축)을 따르는, 헤드 포지션에 대한 빔(빔 원점)의 상대적 포지션(dL)이다. 이것은, 빔(2506)을 방출하는 빔 방출기(예를 들면, 레이저)(2504)가 변위 벡터(2512)에 의해 헤드(2501)의 중심 위치(2510)로부터 변위되는 도 25에서 도시되어 있다. 이 경우, 변위 벡터(2512)는 헤드(2501)의 메인 축(예를 들면, 회전 축)(2502)을 따라 연장되며, 그 결과, 변위 벡터(2512)는 메인 축(2502)을 따르는 거리(dL)에 의해 표현될 수 있다. 따라서, 신택스는 주어진 헤드의 각각의 빔 방출기에 대한 상대적 변위 또는 거리(dL)(예를 들면, 벡터(2512)의 부호가 있는 길이)의 지시(indication)를 포함할 수도 있다.
그러나, 몇몇 구현예에서, 도 26에서 묘사되는 바와 같이, 빔 방출기의 3D(dL rL) 상대적 포지션을 수반하는 더 복잡한 3D 보정이 사용될 수도 있다. 거기에서 도시되는 바와 같이, 빔(2606)을 방출하는 빔 방출기(예를 들면, 레이저)(2604)는 상대 변위 벡터(2612)에 의해 헤드(2601)의 중심 위치(2610)로부터 변위된다. 이 상대 변위 벡터(2612)는 메인 축을 따르는 거리(dL) 및 메인 축에 직교하는 (방사상) 거리(rL)에 의해 표현될 수 있다. 그 관점에서, 상대적 포지션이 회전 축을 따르고, 즉 rL = 0이고, 그 결과 (dL rL) 대신 dL을 시그널링하는 것이 충분한 경우, 및/또는 상대적 포지션이 제로이고, 즉, dL = rL = 0이고 빔 방출기가 실제로 헤드 포지션에서 위치되는 경우, 신택스 구조는 간결한 공식을 허용해야 한다는 것이 제안된다. 후자의 경우는, 몇몇 타입의 라이다에 대해, 또는 원시 라이다 데이터를 프로세싱하는 동안 수정이 이미 적용된 경우, 또는 유저가 빔 방출기(들)의 상대적 포지션을 알지 못하고 디폴트로 제로를 입력하기를 원하는 경우, 발생할 수도 있다.
빔의 각도와 관련하여, 압축 알고리즘이 각도 그들 자체 대신 각도의 탄젠트를 사용할 수도 있기 때문에, 삼각 함수의 계산을 방지하기 위해, 신택스에서 θL 대신 tan(θL)을 시그널링하는 것이 유리할 수도 있다.
마지막으로, 예를 들면, 각도 코딩 모드가 사용되지 않을 경우 또는 포인트 클라우드를 획득한 빔의 세트에 관련이 있는 정보가 비트스트림에 포함되지 않는 경우, 비트스트림으로부터 빔 어셈블리에 대한 정보를 추론하는 프로세스를 완전히 바이패스하는 것이 유리할 수도 있다.
상기의 고려 사항을 고려하여 제안되는 방법(2700)이 도 27에서 플로우차트 형태로 예시되어 있다. 이 방법은 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하여 재구성된 포인트 클라우드를 생성하는 방법이다. 포인트 클라우드는 빔의 세트에 의해, 예를 들면, 빔의 세트에 의해 하나 이상의 오브젝트를 샘플링(예를 들면, 프로빙)하는 것에 의해 획득된 것으로 가정된다. 게다가, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되는 것으로 가정된다. 이것이 몇몇 구현예에서의 사례일 수도 있지만, 포인트 클라우드 데이터가 트리 구조(예를 들면, 옥트리)에서 정의되는 것은 엄격하게 필수는 아니다.
동작(2710)에서, 포인트 클라우드 데이터를 코딩하기 위해 각도 모드가 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터가 비트스트림으로부터 디코딩된다. 제1 파라미터의 하나의 예는 하기에서 정의되는 angular_flag 파라미터이다. 동작(2720)에서, 디코딩된 제1 파라미터에 기초하여, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것인지의 여부가 체크된다. 만약 그렇다면(동작(2720)에서 예), 방법은 동작(2740)으로 진행한다. 그렇지 않으면(동작(2720)에서 아니오), 방법은 동작(2730)으로 진행한다. 동작(2730)에서, 포인트 클라우드 데이터는, 각도 모드를 사용하지 않고, 예를 들면, 각도 정보를 사용하지 않고, 디코딩된다. 동작(2740)에서, 각각의 빔 원점 위치에 대한 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보가 비트스트림으로부터 디코딩된다. 제1 각도 정보는 비트스트림에 포함되는 파라미터, 플래그, 또는 다른 신택스 엘리먼트에 관련될 수도 있다. 동작(2750)에서, 서브 볼륨으로 분할되는 현재의 볼륨에 대해, 빔의 세트와 관련되는 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도에 관련이 있는 제2 각도 정보가 결정된다. 이것은, 예를 들면, 상기에서 설명되는 동작(2110)에서와 동일한 또는 유사한 방식으로 진행될 수도 있다. 예를 들면, 모든 위치는, 체적 공간과 관련하여, 예컨대 체적 공간의 좌표 시스템과 관련하여, 정의될 수도 있다. 빔의 세트와 관련되는 위치는, 예를 들면, 빔의 세트의 기준 위치(예를 들면, 빔 어셈블리의 중심 위치), 또는, 빔 원점 위치 중 하나일 수도 있다. 동작(2760)에서, 볼륨에 대한 포인트 클라우드 데이터는 제1 각도 정보 및 제2 각도 정보에 기초하여 디코딩된다. 이것은 제1 각도 정보 및 제2 각도 정보에 기초하여 컨텍스트를 선택하는 것 및 선택된 컨텍스트를 사용하여 포인트 클라우드 데이터를 엔트로피 디코딩하는 것을 수반할 수도 있다. 예를 들면, 디코딩은 상기에서 설명되는 동작(2130)에서와 동일한 또는 유사한 방식으로 진행될 수도 있다. 소정의 애플리케이션의 경우, 각도 모드는 체계적으로 적용될 것이다는 것이 예상되고(예를 들면, 소정의 자동차 사용 사례의 경우) - 이 경우 angular_flag는 비트스트림으로부터 생략될 수도 있음 - , 각도 코딩 모드가 사용되어야 한다는 것이 추론될 것이다. 다른 애플리케이션에서, 반대가 예상되며, 각도 모드는 적용되지 않을 것이고 - 이 경우, agular_flag는 비트스트림으로부터 생략될 수도 있음 - , 각도 코딩 모드는 사용되지 않는다는 것이 추론될 것이다. 추론의 이해는, 예를 들면, 어떤 코딩 모드(예를 들면, 플래그)가 사용되는지 또는 사용되지 않는지를 설명하는 것에 의해, 포인트 클라우드 코덱의 프로파일에서 정의될 수 있다. 게다가, 각도 모드는 평면 모드에 의존할 수도 있다. 평면 코딩 모드가 사용되지 않아야 한다는 것을 프로파일 또는 평면 모드 플래그가 나타내는 경우, 그것은, 각도 코딩 모드가 또한 사용되지 않으며 관련된 신택스 엘리먼트가 비트스트림에서 존재하지 않는다는 것을 의미한다.
이제, 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하는 대응 방법(2800)을 플로우차트 형태로 도시하는 도 28에 대한 참조가 이루어진다. 방법(2800)은 방법(2700)에 대한 대응 방법이며 그 방법의 각각의 동작을 미러링한다는 것이 이해된다. 따라서, 또한 인코딩을 위해서, 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치된다.
동작(2810)에서, 포인트 클라우드 데이터를 코딩하기 위해 각도 모드가 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터가 비트스트림에 인코딩된다. 동작(2820)에서, 제1 파라미터에 기초하여, 포인트 클라우드 데이터가 각도 모드를 사용하여 코딩되어야 할 것인지의 여부가 체크된다. 만약 그렇다면(동작(2820)에서 예), 방법은 동작(2840)으로 진행한다. 그렇지 않으면(동작(2820)에서 아니오), 방법은 동작(2830)으로 진행한다. 동작(2830)에서, 포인트 클라우드 데이터는, 각도 모드를 사용하지 않고, 예를 들면, 각도 정보를 사용하지 않고, 인코딩된다. 동작(2840)에서, 각각의 빔 원점 위치에 대한 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보가 비트스트림에 인코딩된다. 동작(2850)에서, 서브 볼륨으로 분할되는 현재의 볼륨에 대해, 빔의 세트와 관련되는 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도에 관련이 있는 제2 각도 정보가 결정된다. 동작(2860)에서, 현재의 볼륨에 대해, 볼륨에 대한 포인트 클라우드 데이터는 제1 각도 정보 및 제2 각도 정보에 기초하여 인코딩된다. 이것은 제1 각도 정보 및 제2 각도 정보에 기초하여 컨텍스트를 선택하는 것 및 선택된 컨텍스트를 사용하여 포인트 클라우드 데이터를 엔트로피 인코딩하는 것을 수반할 수도 있다. 예를 들면, 인코딩은 상기에서 설명되는 동작(2040)에서와 동일한 또는 유사한 방식으로 진행될 수도 있다.
보정된 각도를 계산하는 데 필요한 헤드(예를 들면, 라이다) 및 빔(예를 들면, 레이저) 특성의 관점에서, 애플리케이션은 동작(2740)의 다음의 구현예, 즉, 비트스트림으로부터 제1 각도 정보를 디코딩하는 것을 추가로 제안한다.
하나의 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리(예를 들면, 헤드)에 대해, 빔 어셈블리 내의 빔의 개수를 나타내는 제2 파라미터를 비트스트림으로부터의 디코딩하는 것을 포함한다. 이 파라미터에 기초하여, 빔 어셈블리 내의 빔의 개수가 결정될 수 있다. 그 다음, 제2 파라미터에 의해 나타내어지는 빔의 개수 중의 각각의 빔에 대해, 각각의 빔의 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터가 디코딩된다. 이들 단계는 빔의 세트를 공동으로 제공하는 복수의 빔 어셈블리 각각에 대해 수행될 수도 있다. 하기에서 설명되는 num_of_lasers 파라미터는 제2 파라미터의 예이다.
인코더 측에서, 이 구현예에서 제1 각도 정보를 인코딩하는 것은, 빔 어셈블리 내의 빔의 개수를 나타내는 제2 파라미터를 인코딩하는 것, 및 각각의 빔에 대해, 각각의 빔의 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터를 인코딩하는 것을 포함한다.
상기의 구현예에서, 하나 이상의 제3 파라미터는, 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는지의 여부를 나타내는 파라미터, 빔 어셈블리의 메인 축을 따르는 빔의 빔 원점 위치의 좌표를 나타내는 파라미터, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 (방사상으로) 변위되는지의 여부를 나타내는 파라미터, 및 빔 어셈블리의 메인 축으로부터의 빔 원점 위치의 (방사상) 변위를 표현하는 파라미터를 포함할 수도 있다. 하나 이상의 제3 파라미터는 빔 어셈블리의 메인 축을 나타내는 파라미터를 더 포함할 수도 있다.
따라서, 본 구현예에서, 각각의 빔의 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터를 디코딩하는 것은 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 것을 포함할 수 있다. 하기에서 설명되는 laser_relative_position_to_head_flag는 이 파라미터의 예이다. 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우, 빔 어셈블리의 메인 축을 따르는 빔의 빔 원점 위치의 좌표를 나타내는 파라미터가 디코딩된다. 하기에서 설명되는 laser_relative_position_dL 파라미터는 이 파라미터의 예이다. 게다가, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 (방사상으로) 변위되는지의 여부를 나타내는 파라미터가 디코딩된다. 하기에서 설명되는 relative_position_rL 플래그는 이 파라미터의 예이다. 그 다음, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 (방사상으로) 변위되는 경우, 빔 어셈블리의 메인 축으로부터 빔 원점 위치의 (방사상) 변위를 표현하는 파라미터가 디코딩된다. 하기에서 설명되는 laser_relative_rL 파라미터는 이 파라미터의 예이다.
인코더 측에서, 상기의 내용은, 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는지의 여부를 나타내는 파라미터를 인코딩하는 것에 대응할 수도 있다. 빔의 빔 원점 위치가 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우, 빔 어셈블리의 메인 축을 따르는 빔의 빔 원점 위치의 좌표를 나타내는 파라미터는 비트스트림에 인코딩된다. 게다가, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 (방사상으로) 변위되는지의 여부를 나타내는 파라미터가 비트스트림에 인코딩된다. 그 다음, 빔 원점 위치가 빔 어셈블리의 메인 축으로부터 (방사상으로) 변위되는 경우, 빔 어셈블리의 메인 축으로부터 빔 원점 위치의 (방사상) 변위를 표현하는 파라미터는 비트스트림에 인코딩된다.
이 구현예에서, 빔 어셈블리의 기준 위치(예를 들면, 중심 위치) 및 빔 어셈블리의 방위(예를 들면, 메인 축)을 결정하거나 또는 추론하기 위한 정보를 디코딩하는 것이 추가로 필요할 수도 있다. 이것은 각각의 구현예에 대해 하기에서 설명되는 방식으로 진행될 수도 있다.
전술한 구현예와 결합될 수도 있는 다른 구현예에서, 제1 각도 정보를 디코딩하는 것은 빔의 세트를 구성하는 빔 어셈블리(예를 들면, 헤드)의 개수를 추론 또는 결정하기 위한 디코딩 정보(예를 들면, 파라미터)를 포함할 수도 있다. 따라서, 이 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 몇몇 빔을 각각 포함하는 빔 어셈블리의 개수를 나타내는 제4 파라미터를 비트스트림이 포함하는지의 여부를 체크하는 것을 포함한다. 만약 그렇다면, 제4 파라미터는 비트스트림으로부터 디코딩된다. 제4 파라미터가 비트스트림에서 존재하지 않거나 또는 제로와 동일한 경우, 빔 어셈블리의 개수가 1이다는 것, 즉, 빔의 세트 내의 모든 빔이 동일한 단일의 빔 어셈블리(예를 들면, 헤드)의 일부이다는 것이 추론된다. 다른 한편으로, 제4 파라미터가 1과 동일한 경우, 2를 뺀 빔 어셈블리의 개수를 나타내는 제5 파라미터가 비트스트림으로부터 디코딩된다. 하기에서 설명되는 num_of_heads_flag는 제4 파라미터의 예이다. 하기에서 설명되는 num_of_heads_minus2 파라미터는 제5 파라미터의 예이다.
인코더 측에서, 상기의 내용은 다음의 것에 해당한다. 빔 어셈블리의 개수가 1인 경우, 단일의 빔 어셈블리를 나타내는 적절한 값(예를 들면, 비트 값)을 갖는 제4 파라미터를 비트스트림에 인코딩하는 것 또는 제4 파라미터를 비트스트림에 인코딩하지 않는 것. 빔 어셈블리의 개수가 1보다 더 큰 경우, 제4 파라미터는 단일의 빔 어셈블리를 나타내지 않는 값을 가지고 비트스트림에 인코딩된다. 게다가, 2를 뺀 빔 어셈블리의 개수를 나타내는 제5 파라미터도 역시 비트스트림에 인코딩된다.
상기의 구현예 중 하나 이상과 결합될 수도 있는 다른 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리에 대한 기준 위치(예를 들면, 중심 위치)를 추론 또는 결정하기 위한 정보(예를 들면, 파라미터)를 디코딩하는 것을 포함할 수도 있다. 따라서, 이 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리의 기준 위치가 체적 공간의 좌표 시스템의 원점(O = (0,0,0))에 있는지의 여부를 나타내는 제6 파라미터를 비트스트림이 포함하는지의 여부를 체크하는 것을 포함한다. 만약 그렇다면, 제6 파라미터는 비트스트림으로부터 디코딩된다. 제6 파라미터가 비트스트림에서 존재하지 않는 경우 또는 빔 어셈블리의 기준 위치가 좌표 시스템의 원점(O)에 있다는 것을 제6 파라미터가 나타내는 경우, 좌표 시스템의 원점(O)은 빔 어셈블리의 기준 위치로서 간주된다. 그렇지 않으면, 빔 어셈블리의 기준 위치 좌표를 나타내는 파라미터가 비트스트림으로부터 디코딩된다. 하기에서 설명되는 head_absolute_is_000_flag는 제6 파라미터의 한 예이다. 하기에서 설명되는 head_absolute_x, head_absolute_y, 및 head_absolute_z 파라미터는 빔 어셈블리의 기준 위치 좌표를 나타내는 파라미터의 예이다.
인코더 측에서, 상기의 내용은 다음의 것에 해당한다. 빔 어셈블리의 기준 위치가 좌표 시스템의 원점(O)에 있는 경우, 제6 파라미터는 이 사실을 나타내는 적절한 값(예를 들면, 비트 값)을 가지고 비트스트림에 인코딩되거나, 또는 제6 파라미터는 비트스트림에 인코딩되지 않는다. 빔 어셈블리의 기준 위치가 좌표 시스템의 원점(O)에 있지 않은 경우, 제6 파라미터는, 빔 어셈블리의 기준 위치의 좌표를 나타내는 파라미터와 함께, 이 사실을 나타내는 적절한 값(예를 들면, 비트 값)을 가지고 비트스트림에 인코딩된다.
상기의 구현예 중 하나 이상과 결합될 수도 있는 다른 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리의 방위(예를 들면, 메인 축)를 추론 또는 결정하기 위한 정보(예를 들면, 파라미터)를 디코딩하는 것을 포함할 수도 있다. 따라서, 이 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되는지의 여부를 나타내는 제7 파라미터를 비트스트림으로부터 디코딩하는 것을 포함한다. 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열된다는 것을 제7 파라미터가 나타내는 경우, 빔 어셈블리의 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터가 비트스트림으로부터 디코딩된다. 그 다음, 이 특정한 좌표 축은 빔 어셈블리의 메인 축(메인 축의 방위)로서 간주된다. 특히, 메인 축은 특정한 좌표 축에 평행하도록 그리고 빔 어셈블리의 기준 위치(예를 들면, 중심 위치)를 통해 이어지도록 취해질 수도 있다. 그렇지 않고, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되지 않는다는 것을 제7 파라미터가 나타내는 경우, 빔 어셈블리의 메인 축의 방위를 표현하는 각도를 나타내는 파라미터는 비트스트림으로부터 디코딩되고 빔 어셈블리의 메인 축은 이들 파라미터에 기초하여 결정된다. 하기에서 설명되는 head_parallel_to_axis_flag는 제7 파라미터의 한 예이다. 하기에서 설명되는 axis_index 파라미터는, 빔 어셈블리의 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터의 한 예이다. 마지막으로, 하기에서 설명되는 head_orientation_phi 및 head_orientation_theta 파라미터는 메인 축의 방위를 표현하는 각도를 나타내는 파라미터의 예이다. 제7 파라미터가 비트스트림에서 존재하지 않는 경우, 빔 어셈블리의 메인 축은 체적 공간의 좌표 축을 따라 배열된다는 것이 추론된다.
인코더 측에서, 상기의 내용은 다음의 것에 해당한다. 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되는 경우, 제7 파라미터는 이 사실을 나타내는 적절한 값(예를 들면, 비트 값)을 가지고 비트스트림에 인코딩된다. 게다가, 빔 어셈블리의 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터도 역시 비트스트림에 인코딩된다. 그렇지 않고, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되지 않는 경우, 제7 파라미터는 이 사실을 나타내는 값(예를 들면, 비트 값)을 가지고 비트스트림에 인코딩된다. 게다가, 빔 어셈블리의 메인 축의 방위를 표현하는 각도를 나타내는 파라미터도 역시 비트스트림에 인코딩된다. 대안적으로, 빔 어셈블리의 메인 축이 체적 공간의 좌표 축을 따라 배열되는 경우, 빔 어셈블리의 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터만이 비트스트림에 인코딩된다.
상기의 구현예 중 하나 이상과 결합될 수도 있는 다른 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리에 의해 제공되는 빔의 빔 각도를 추론 또는 결정하기 위한 정보(예를 들면, 파라미터)를 디코딩하는 것을 포함할 수도 있다. 따라서, 이 구현예에서, 제1 각도 정보를 디코딩하는 것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리 내의 빔의 개수를 나타내는 제8 파라미터를 비트스트림으로부터 디코딩하는 것을 포함할 수도 있다. 그 다음, 빔 어셈블리 내의 빔의 개수가 제8 파라미터에 기초하여 결정된다. 빔 어셈블리 내의 빔의 개수 중의 각각의 빔에 대해, 각각의 빔의 빔 각도를 나타내는 하나 이상의 제9 파라미터가 비트스트림으로부터 디코딩된다. 하기에서 설명되는 num_of_lasers 파라미터는 제8 파라미터의 한 예이다.
인코더 측에서, 상기의 내용은 다음의 것에 해당한다. 빔 어셈블리 내의 빔의 개수를 나타내기 위해 제8 파라미터가 비트스트림에 인코딩된다. 빔 어셈블리 내의 빔의 개수 중의 각각의 빔에 대해, 그 다음, 각각의 빔의 빔 각도를 나타내기 위해 하나 이상의 제9 파라미터가 비트스트림에 인코딩된다.
본 구현예에서, 각각의 빔의 빔 각도를 나타내는 하나 이상의 제9 파라미터를 디코딩하는 것은, 빔 각도가 각도의 탄젠트로서 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 것, 후속하여 빔 각도를 표현하는 파라미터를 디코딩하는 것을 포함할 수도 있다. 하기에서 설명되는 angle_is_tangent_flag는, 빔 각도가 각도의 탄젠트로서 표현되는지의 여부를 나타내는 파라미터의 한 예이다. 하기에서 설명되는 laser_angle 파라미터는 빔 각도를 표현하는 파라미터의 한 예이다.
인코더 측에서, 이것은, 빔 각도가 탄젠트로서 표현되는 경우 이 사실을 나타내는 적절한 값(예를 들면, 비트 값)을 갖는, 빔 각도가 각도의 탄젠트로서 표현되는지의 여부를 나타내는 파라미터를 비트스트림에 인코딩하는 것, 후속하여 빔 각도를 표현하는 파라미터를 인코딩하는 것에 해당한다. 빔 각도를 표현하는 파라미터를 직접적으로 인코딩하는 것이 유리할 수도 있는데, 이 경우 빔 각도 파라미터는 각도를 나타낸다.
또한, 본 실시형태의 경우, 현재의 볼륨에 대한 코딩 포인트 클라우드 데이터에 대한 각도 정보를 사용하는 것은 볼륨이 각도 적격인지의 여부에 따라 조건부로 이루어질 수도 있다. 따라서, 방법(2700 및/또는 2800)은, 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨이 볼륨에 대한 포인트 클라우드 데이터를 코딩하기에 적격인지의 여부(또는 적격이다는 것)를 먼저 결정하는 단계를 포함할 수도 있다. 이것은, 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해, 빔 어셈블리의 기준 위치로부터 봤을 때 볼륨의 각도 사이즈의 척도를 결정하는 것을 수반할 수도 있다. 각도 사이즈의 결정된 척도는, 빔 어셈블리의 인접한 빔의 각도 사이의 차이 각도(예를 들면, 임의의 쌍의 빔 사이의 최소 차이 각도)의 척도에 비교된다. 그 다음, 제1 각도 정보 및 제2 각도 정보에 기초하여 볼륨이 볼륨에 대한 포인트 클라우드 데이터를 디코딩하기에 적격인지의 여부(또는 적격이다는 것)의 실제 결정이 비교의 결과에 기초하여 수행될 수 있다. 일반적으로, 이것은 도 19를 참조하여 상기에서 설명되는 각도 적격성의 결정과 동일한 또는 유사한 방식으로 진행될 수도 있다.
상기에서 언급되는 바와 같이, 동작(2750)에서 제2 각도 정보를 결정하는 것은 상기에서 설명되는 동작(2110)에서와 동일한 또는 유사한 방식으로 진행될 수도 있다. 마찬가지로, 동작(2850)에서 제2 각도 정보를 결정하는 것은 상기에서 설명되는 동작(2020)에서와 동일한 또는 유사한 방식으로 진행될 수도 있다. 따라서, 제2 각도 정보를 결정하는 것은 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리의 기준 위치와 관련하여 볼륨 내의 기준 위치에 대한 제1 각도를 결정하는 것을 포함할 수도 있다. 볼륨 내의 기준 위치는, 예를 들면, 볼륨의 중심 위치일 수도 있다. 빔 어셈블리의 기준 위치는, 예를 들면, 회전하는 빔 어셈블리의 중심 위치일 수도 있다. 이 기준 위치는, 예를 들면, 상기에서 설명되는 제1 각도 정보에 기초하여 결정될 수도 있다. 제1 앙각에 기초하여, 볼륨 내의 포인트를 획득한 것으로 가정되는 빔 어셈블리의 특정한 빔이 결정된다. 이 특정한 빔에 대해, 빔 원점 위치는, 예를 들면, 상기에서 설명되는 제1 각도 정보에 기초하여 결정된다. 그 다음, 특정한 회전하는 빔의 빔 원점 위치는 동작(2750) 또는 동작(2850)에서 정의되는 바와 같이 빔 어셈블리와 관련되는 위치로서 기능할 수도 있다. 마지막으로, 특정한 빔의 빔 원점 위치에 대한 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도는 빔 원점 위치에 기초하여 결정된다. 일반적으로, 이것은 상기에서 설명되는 각도의 보정과 동일한 또는 유사한 방식으로 진행될 수도 있다.
보정된 각도를 계산하기 위한 전술한 요건을 고려하여, 하기의 테이블 1 및 테이블 2에서 설명되는 신택스가 제안된다. 그것은, 원점(O)에 위치되며 xyz 축 중 하나에 평행한 헤드의 가장 단순한 경우에 대해 신택스가 간결하다는 것을 보장한다. 그것은 또한, 상대적 포지션 보정을 필요로 하지 않는 또는 메인 축(예를 들면, 헤드 회전 축)을 따르는 보정만을 필요로 하는 빔에 대한 간결한 신택스를 보장한다. 하기의 테이블에서, u(n)는 n비트를 사용하는 부호가 없는 정수를 나타내고 s(n)는 n비트를 사용하는 부호가 있는 정수를 나타낸다. 상대적 포지션 (dL, rL)에 대한 3 비트의 소수 정밀도(decimal precision) 및 각도(θL) 또는 탄젠트(tan(θL))에 대한 18 비트의 소수 정밀도는 빔 각도를 사용할 때 최적의 압축 성능을 획득하기에 충분하다는 것이 관찰되었다.
Figure pct00044
추가적인 플래그를 갖는 대안적 신택스는 각도 프로세스를 완전히 바이패스하는 것, 또는 신택스 엘리먼트 중 일부에 대한 몇몇 더 많은 값을 추론하는 것을 허용할 것이다. 그러한 신택스의 예는 하기의 테이블 2에서 나타내어진다.
Figure pct00045
제안된 신택스에서 시그널링되는 정보는, 빔 어셈블리(예를 들면, 라이다의) 물리적 특성 및 포인트 클라우드에 의해 표현되는 장면에서(예를 들면, 포인트 클라우드를 포함하는 체적 공간에서) 빔 어셈블리의 포지션/방위에 의존한다. 그러나, 그것은 포인트 클라우드의 로컬 구조에 의존하지 않는다. 따라서, 제안된 신택스는 프레임 또는 시퀀스 레벨에 있는 하이 레벨 신택스일 수 있다. 실제 예에서, 제안되는 신택스는 다음의 것에서 배치될 수도 있다
Figure pct00046
기하학적 형상 파라미터 세트(Geometry Parameter Set; gps)
Figure pct00047
시퀀스 파라미터 세트(Sequence Parameter Set; sps)
Figure pct00048
기하학적 형상 슬라이스 헤더
Figure pct00049
대역 외에서 전송되는 SEI 메시지
추가적으로, 이들 신택스 엘리먼트는, 예를 들면, (예를 들면, 다기능 비디오 코딩(Versatile Video Coding), HEVC를 따르는 새로운 MPEG 비디오 코덱에서와 같은) 비디오 파라미터 세트, 프레임 헤더 또는 미래의 센서 파라미터 세트의 등가물과 같은 임의의 하이 레벨 신택스 및 헤더에서 배치될 수 있다.
다음으로, (예를 들면, 상기의 테이블에서 사용되는) 제안된 신택스를 위해 사용될 의미론(semantics)의 한 예가 설명될 것이다.
0과 동일한 angular_flag는 헤드 및 빔(예를 들면, 레이저) 정보가 신택스에서 존재하지 않는다는 것을 나타낸다. angular_flag는 상기에서 정의되는 제1 파라미터의 한 예이다. 1과 동일한 Angular_flag는 헤드 및 빔 정보가 신택스에 존재한다는 것을 나타낼 수도 있다. 0과 동일한 경우, 노드(예를 들면, 볼륨)에 대한 코딩 방법은 각도 정보를 사용하지 않는다.
0과 동일한 num_of_heads_flag는 (라이다의) 헤드의 개수가 1인 것으로 추론된다는 것을 나타낸다. num_of_heads_flag가 1과 동일한 경우, 그것은, num_of_heads_minus2가 신택스에서 존재하고, 라이다/헤드의 개수가 num_of_heads_minus2 + 2와 동일하다는 것을 나타낸다. 비트스트림에서 존재하지 않는 경우, 라이다/헤드의 개수는 1인 것으로 추론된다.
1과 동일한 head_absolute_is_000_flag는 헤드 절대 포지션이 x = y = z = 0인 것으로 추론된다는 것을 나타낸다. head_absolute_is_000_flag가 0과 동일한 경우, 그것은, head_absolute_x, head_absolute_y 및 head_absolute_z가 절대 헤드 포지션을 시그널링하기 위해 비트스트림에서 존재한다는 것을 나타낸다. head_absolute_is_000_flag가 비트스트림에서 존재하지 않는 경우, 헤드 절대 포지션이 x = y = z = 0이다는 것이 추론될 수도 있다. 절대치는 포인트 클라우드가 표현되는 xyz 좌표 시스템에서의 좌표로서 이해된다.
head_absolute_x는 헤드(캡쳐용 디바이스)의 x 축 상에서의 절대 포지션을, 예를 들면, 3 비트의 소수 정밀도를 갖는 32 비트의 부호가 있는 정수 상에서 나타내고, 그 결과, 헤드의 x 절대 포지션은 head_absolute_x/8이다.
head_absolute_y는 헤드(캡쳐용 디바이스)의 y 축 상에서의 절대 포지션을, 예를 들면, 3 비트의 소수 정밀도를 갖는 32 비트의 부호가 있는 정수 상에서 나타내고, 그 결과, 헤드의 y 절대 포지션은 head_absolute_y/8이다.
head_absolute_z는 헤드(캡쳐용 디바이스)의 z 축 상에서의 절대 포지션을, 예를 들면, 3 비트의 소수 정밀도를 갖는 32 비트의 부호가 있는 정수 상에서 나타내고, 그 결과, 헤드의 z 절대 포지션은 head_absolute_z/8이다.
1과 동일한 head_parallel_to_axis_flag는 헤드가 축에 평행하게 배향된다는 것을 나타낸다. 이 경우, axis_index가 스트림에서 존재한다. 0과 동일한 head_parallel_to_axis_flag는, 헤드가 축에 평행하게 배향되지 않는다는 것을 나타내고, 이 경우 head_orientation_phi 및 head_orientation_theta는 axis_index 대신 스트림에서 존재한다. head_parallel_to_axis_flag가 비트스트림에서 존재하지 않는 경우, 그것은 1과 동일한 것으로 추론된다.
axis_index는 헤드가 어떤 축에 평행한지를 나타낸다. 예를 들면, 0과 동일한 axis_index는, 헤드가 x 축에 평행하게 배향된다는 것을 나타내고, 1과 동일한 것은 헤드가 y 축에 평행하게 배향된다는 것을 나타내고, 그리고 2와 동일한 것은 헤드가 z 축에 평행하게 배향된다는 것을 나타낸다.
head_orientation_phi 및 head_orientation_theta는 구면 좌표에서의 헤드의 방위를 나타낸다. 예를 들면, head_orientation_phi는 xy 평면에서의 방위각이고, head_orientation_theta는 z 축에 대한 극각이다. 둘 모두는 18 비트의 소수 정밀도를 갖는 부호가 있는 32 비트 정수일 수도 있다.
num_of_lasers는 주어진 헤드에 대한 레이저(또는 빔)의 개수를 명시한다. 그것은 1 내지 1023의 범위 내의 10 비트 정수일 수도 있다.
1과 동일한 angle_is_tangent_flag는 laser_angle에 의해 제공되는 정보가 각도의 탄젠트이다는 것을 나타낸다. 0과 동일한 angle_is_tangent_flag는, laser_angle에 의해 제공되는 정보가 각도이다는 것을 나타낸다. 비트스트림에서 존재하지 않는 경우, angle_is_tangent_flag는 1과 동일한 것으로 추론된다.
laser_angle는 주어진 레이저와 관련되는 각도(각도의 탄젠트)이다. 이것은 헤드 방향에 수직이고 레이저(또는 빔 방출기) 포지션이 속하는 평면에 대한 앙각이다. 그것은 18 비트의 소수 정밀도를 갖는 부호가 있는 32 비트 정수일 수도 있다.
0과 동일한 laser_relative_position_to_head_flag는 레이저/빔 방출기 포지션이 헤드 절대 포지션과 동일하다는 것을 나타낸다. 1과 동일한 laser_relative_position_to_head_flag는, 레이저/빔 방출기 포지션이 헤드 절대 포지션과 동일하지 않는다는 것을 나타낸다; 이 경우 laser_relative_position_dL 및 relative_position_rL_flag가 비트스트림에서 존재한다. laser_relative_position_to_head_flag가 비트스트림에서 존재하지 않는 경우, 그것은 0과 동일한 것으로 추론된다.
laser_relative_position_dL은, 헤드의 방위의 방향을 따라 헤드 절대 포지션과 관련한 레이저(빔 방출기)의 포지션을 나타낸다. 그것은 3 비트의 소수 정밀도를 갖는 16 비트 부호가 있는 정수일 수도 있다.
0과 동일한 relative_position_rL_flag는, laser_relative_rL이 비트스트림에서 존재하지 않고 0으로 추론된다는 것을 나타낸다. 1과 동일한 relative_position_rL_flag는 laser_relative_rL이 비트스트림에서 존재한다는 것을 나타낸다. 비트스트림에서 relative_position_rL_flag가 존재하지 않는 경우, 그것은 0과 동일한 것으로 추론된다.
laser_relative_rL은, 헤드 절대 포지션을 지나는 헤드의 방위의 방향에 평행한 라인으로부터 레이저(빔 방출기)의 (방사상) 거리를 나타낸다. 그것은 3 비트의 소수 정밀도를 갖는 16 비트 부호가 있는 정수일 수도 있다.
이제, 인코더(3000)의 예시적인 실시형태의 단순화된 블록도를 도시하는 도 30에 대한 참조가 이루어진다. 인코더(3000)는 프로세서(3002), 메모리(3004), 및 인코딩 애플리케이션(3006)을 포함한다. 인코딩 애플리케이션(3006)은, 메모리(3004)에 저장되며, 실행되는 경우, 프로세서(3002)로 하여금 본원에서 설명되는 것들과 같은 동작을 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수도 있다. 예를 들면, 인코딩 애플리케이션(3006)은 본원에서 설명되는 프로세스에 따라 인코딩되는 비트스트림을 인코딩 및 출력할 수도 있다. 인코딩 애플리케이션(3006)은, 컴팩트 디스크, 플래시 메모리 디바이스, 랜덤 액세스 메모리, 하드 드라이브, 등등과 같은 비일시적 컴퓨터 판독 가능 매체 상에 저장될 수도 있다는 것이 이해될 것이다. 명령어가 실행될 때, 프로세서(3002)는, 설명된 프로세스(들)를 구현하는 특수 목적 프로세서로서 동작하도록 명령어에서 명시되는 동작 및 기능을 실행한다. 그러한 프로세서는 몇몇 예에서 "프로세서 회로" 또는 "프로세서 회로부(circuitry)"로서 지칭될 수도 있다.
이제, 디코더(3100)의 예시적인 실시형태의 단순화된 블록도를 도시하는 도 31에 대한 참조가 또한 이루어진다. 디코더(3100)는 프로세서(3102), 메모리(3104), 및 디코딩 애플리케이션(3106)을 포함한다. 디코딩 애플리케이션(3106)은, 메모리(3104)에 저장되며, 실행되는 경우, 프로세서(3102)로 하여금 본원에서 설명되는 것들과 같은 동작을 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수도 있다. 디코딩 애플리케이션(3106)은, 컴팩트 디스크, 플래시 메모리 디바이스, 랜덤 액세스 메모리, 하드 드라이브, 등등과 같은 컴퓨터 판독 가능 매체 상에 저장될 수도 있다는 것이 이해될 것이다. 명령어가 실행될 때, 프로세서(3102)는, 설명된 프로세스(들)를 구현하는 특수 목적 프로세서로서 동작하도록 명령어에서 명시되는 동작 및 기능을 실행한다. 그러한 프로세서는 몇몇 예에서 "프로세서 회로" 또는 "프로세서 회로부"로서 지칭될 수도 있다.
본 출원에 따른 디코더 및/또는 인코더는, 서버, 적절하게 프로그래밍된 범용 컴퓨터, 머신 비전 시스템, 및 모바일 디바이스를, 제한 없이, 포함하는 다수의 컴퓨팅 디바이스에서 구현될 수도 있다는 것이 인식될 것이다. 디코더 또는 인코더는 본원에서 설명되는 기능을 실행하도록 프로세서 또는 프로세서들을 구성하기 위한 명령어를 포함하는 소프트웨어를 통해 구현될 수도 있다. 소프트웨어 명령어는, CD, RAM, ROM, 플래시 메모리, 등등을 비롯한, 임의의 적절한 비일시적 컴퓨터 판독 가능 메모리에 저장될 수도 있다.
본원에서 설명되는 디코더 및/또는 인코더, 및 인코더 또는 디코더를 구성하기 위한 설명된 방법/프로세스를 구현하는 모듈, 루틴, 프로세스, 스레드, 또는 다른 소프트웨어 컴포넌트는 표준 컴퓨터 프로그래밍 기술 및 언어를 사용하여 실현될 수도 있다는 것이 이해될 것이다. 본 출원은 특정한 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 규칙, 데이터 구조, 다른 그러한 구현 세부 사항으로 제한되지는 않는다. 기술 분야의 숙련된 자는, 설명된 프로세스가, 휘발성 또는 불휘발성 메모리에 저장되는 컴퓨터 실행 가능 코드의 일부로서, 주문형 집적 칩(application-specific integrated chip; ASIC)일부로서, 등등으로서 구현될 수도 있다는 것을 인식할 것이다.
본 출원은 또한, 본 출원에 따른 인코딩 프로세스의 적용을 통해 생성되는 데이터를 인코딩하는 컴퓨터 판독 가능 신호를 제공한다.
압축 성능에 대한 영향
예시적인 구현예와 함께 세 개의 방향(x, y 및 z)에서 평면 모드를 사용하는 것을 테스트하는 것은, 상이한 특성을 갖는 다수의 예시적인 포인트 클라우드를 가지고 그리고 모션 픽쳐 전문가 그룹(Motion Picture Experts Group; MPEG) 테스트 모델의 현재 구현예와 비교하여 실행되었다. 실험에서 사용되는 상이한 타입의 포인트 클라우드는, 도시 건물 환경, 실내 건물 환경, 3D 맵, LiDAR 도로 스캔, 및 자연 경관을 수반하는 실외 장면에 관련이 있는 것들을 포함한다. 자연 경관의 경우, 무시 가능한 정도의 압축 이득이 보인다. 3D 맵의 경우 2 내지 4 %, 실외 건물 장면의 경우 최대 10 %, LiDAR 데이터의 경우 6 내지 9 %, 그리고 일부 실내 건물 장면의 경우 최대 50 % 이상의 압축 이득이 보인다.
각도 모드는, 단지 평면 모드와 비교하여, 무손실 코딩의 경우 15 % 이상 그리고 손실 코딩의 경우 5-8 %의 여분의 이득을 제공한다는 것이 추가로 관찰되었다. 평면 + 각도의 조합은, MPEG 테스트 모델과 비교하여 22-24 %(무손실) 및 11-17 %(손실)의 이득을 제공한다.
트리의 노드와 관련되는 볼륨이 최소 4인 통상적인 비율(H/W) - 반경 방향 폭에 대한 높이 - 을 가지도록 구성되는 트리와 함께 각도 모드를 사용하는 것은, 옥트리의 노드와 관련되는 모든 볼륨에 대해 비율(H/W = 1)을 갖는 정육면체 옥트리 구획화를 사용하는 각도 모드와 비교하여, 심지어, 약 5 %의 더 많은 여분의 이득을 제공한다는 것이 여전히 추가로 관찰되었다.
설명된 실시형태의 소정의 적응 및 수정이 이루어질 수 있다. 따라서, 상기에서 논의되는 실시형태는 제한적인 것이 아니라 예시적인 것으로 간주된다.

Claims (15)

  1. 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법에 있어서, 상기 포인트 클라우드는 빔의 세트에 의해 획득되었으며, 상기 포인트 클라우드는, 서브 볼륨(sub-volumes)으로 재귀적으로 분할되며 상기 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되고, 상기 방법은:
    상기 비트스트림으로부터, 각도 모드(angular mode)가 포인트 클라우드 데이터를 코딩하기 위해 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터를 디코딩하는 단계; 및
    포인트 클라우드 데이터가 상기 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 상기 제1 파라미터가 나타내는 경우:
    상기 비트스트림으로부터, 각자의 빔 원점 위치(beam origin location)에 대한 상기 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보를 디코딩하는 단계; 및
    서브 볼륨으로 분할되는 현재의 볼륨에 대해:
    상기 빔의 세트와 관련되는 위치에 대한 상기 볼륨의 서브 볼륨 또는 서브 볼륨의 그룹의 각도에 관련이 있는 제2 각도 정보를 결정하는 단계; 및
    상기 제1 각도 정보 및 상기 제2 각도 정보에 기초하여 상기 볼륨에 대한 상기 포인트 클라우드 데이터를 디코딩하는 단계
    를 포함하는, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  2. 제1항에 있어서,
    상기 제1 각도 정보를 디코딩하는 단계는, 상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해:
    상기 비트스트림으로부터, 상기 빔 어셈블리 내의 빔의 개수를 나타내는 제2 파라미터를 디코딩하고, 상기 제2 파라미터에 기초하여 상기 빔 어셈블리 내의 상기 빔의 개수를 결정하는 단계;
    상기 제2 파라미터에 의해 나타내어지는 상기 빔의 개수 중의 각각의 빔에 대해, 상기 비트스트림으로부터, 상기 각자의 빔의 상기 빔 원점 위치를 나타내는 하나 이상의 제3 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  3. 제2항에 있어서,
    상기 각자의 빔의 빔 원점 위치를 나타내는 상기 하나 이상의 제3 파라미터를 디코딩하는 단계는:
    상기 빔의 상기 빔 원점 위치가 상기 빔 어셈블리의 기준 위치와 관련하여 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 단계; 및
    상기 빔의 상기 빔 원점 위치가 상기 빔 어셈블리의 기준 위치와 관련하여 표현되는 경우:
    상기 빔 어셈블리의 메인 축을 따르는 상기 빔의 상기 빔 원점 위치의 좌표를 나타내는 파라미터를 디코딩하는 단계;
    상기 빔 원점 위치가 상기 빔 어셈블리의 상기 메인 축으로부터 변위되는지의 여부를 나타내는 파라미터를 디코딩하는 단계; 및
    상기 빔 원점 위치가 상기 빔 어셈블리의 상기 메인 축으로부터 변위되는 경우, 상기 빔 어셈블리의 상기 메인 축으로부터 상기 빔 원점 위치의 변위를 표현하는 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 각도 정보를 디코딩하는 단계는:
    상기 빔의 세트의 적어도 일부 빔을 각각 포함하는 빔 어셈블리의 개수를 나타내는 제4 파라미터를 상기 비트스트림이 포함하는지의 여부를 체크하고, 만약 그렇다면, 상기 비트스트림으로부터 상기 제4 파라미터를 디코딩하는 단계;
    상기 제4 파라미터가 존재하지 않거나 또는 제로와 동일한 경우, 상기 빔 어셈블리의 개수를 1인 것으로 추론하는 단계;
    상기 제4 파라미터가 1과 동일한 경우, 2를 뺀 빔 어셈블리의 개수를 나타내는 제5 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 각도 정보를 디코딩하는 단계는, 상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해:
    상기 빔 어셈블리의 기준 위치가 상기 체적 공간의 좌표 시스템의 원점에 있는지의 여부를 나타내는 제6 파라미터를 상기 비트스트림이 포함하는지의 여부를 체크하고, 만약 그렇다면, 상기 제6 파라미터를 디코딩하는 단계;
    상기 제6 파라미터가 상기 비트스트림에서 존재하지 않는 경우, 또는 상기 빔 어셈블리의 상기 기준 위치가 상기 좌표 시스템의 상기 원점에 있다는 것을 상기 제6 파라미터가 나타내는 경우, 상기 좌표 시스템의 상기 원점을 상기 빔 어셈블리의 상기 기준 위치로서 간주하는 단계; 및
    그렇지 않으면, 상기 비트스트림으로부터, 상기 빔 어셈블리의 상기 기준 위치의 상기 좌표를 나타내는 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 각도 정보를 디코딩하는 단계는, 상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해:
    상기 비트스트림으로부터, 상기 빔 어셈블리의 메인 축이 상기 체적 공간의 좌표 축을 따라 배열되는지의 여부를 나타내는 제7 파라미터를 디코딩하는 단계;
    상기 빔 어셈블리의 상기 메인 축이 상기 체적 공간의 좌표 축을 따라 배열된다는 것을 상기 제7 파라미터가 나타내는 경우, 상기 빔 어셈블리의 상기 메인 축이 따라서 배열되는 특정한 좌표 축을 나타내는 파라미터를 디코딩하고, 상기 특정한 좌표 축을 상기 빔 어셈블리의 상기 메인 축으로서 간주하는 단계; 및
    그렇지 않다면, 상기 빔 어셈블리의 상기 메인 축의 방위를 표현하는 각도를 나타내는 파라미터를 디코딩하고 이들 파라미터에 기초하여 상기 빔 어셈블리의 상기 메인 축을 결정하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 제1 각도 정보를 디코딩하는 단계는, 상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해:
    상기 비트스트림으로부터, 상기 빔 어셈블리 내의 빔의 개수를 나타내는 제8 파라미터를 디코딩하고 상기 제8 파라미터에 기초하여 상기 빔 어셈블리 내의 상기 빔의 개수를 결정하는 단계; 및
    상기 빔 어셈블리 내의 상기 빔의 개수 중의 각각의 빔에 대해, 상기 비트스트림으로부터, 상기 각각의 빔의 빔 각도를 나타내는 하나 이상의 제9 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  8. 제7항에 있어서,
    상기 각각의 빔의 빔 각도를 나타내는 상기 하나 이상의 제9 파라미터를 디코딩하는 단계는:
    상기 빔 각도가 각도의 탄젠트로서 표현되는지의 여부를 나타내는 파라미터를 디코딩하는 단계; 및
    상기 빔 각도를 표현하는 파라미터를 디코딩하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리에 대해:
    상기 빔 어셈블리의 기준 위치로부터 봤을 때 상기 볼륨의 각도 사이즈의 척도(measure)를 결정하는 것;
    상기 각도 사이즈의 상기 척도를, 상기 빔 어셈블리의 인접한 빔의 각도 사이의 차이 각도(difference angle)의 척도와 비교하는 것; 및
    상기 제1 각도 정보 및 상기 제2 각도 정보에 기초하여 상기 볼륨에 대한 상기 포인트 클라우드 데이터를 디코딩하기에 상기 볼륨이 적격이다(eligible)는 것을 상기 비교의 결과에 기초하여 결정하는 것
    에 의해, 상기 제1 각도 정보 및 상기 제2 각도 정보에 기초하여 상기 볼륨에 대한 상기 포인트 클라우드 데이터를 디코딩하기에 상기 볼륨이 적격이다는 것을 먼저 결정하는 단계를 더 포함하는, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 제2 각도 정보를 결정하는 단계는:
    상기 빔의 세트의 적어도 일부 빔을 포함하는 빔 어셈블리의 기준 위치와 관련하여 상기 볼륨 내의 기준 위치에 대한 제1 각도를 결정하는 단계;
    상기 제1 앙각에 기초하여, 상기 볼륨 내의 상기 포인트를 획득한 것으로 가정되는 상기 빔 어셈블리의 특정한 빔을 결정하는 단계;
    상기 특정한 빔의 빔 원점 위치를 결정하는 단계; 및
    상기 특정한 빔의 상기 빔 원점 위치에 대한 상기 볼륨의 서브 볼륨 또는 서브 볼륨 그룹의 각도를 결정하는 단계
    를 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하는 방법.
  11. 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하는 방법에 있어서, 상기 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 상기 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되고, 상기 방법은:
    포인트 클라우드 데이터를 코딩하기 위해 각도 모드가 사용되어야 할 것인지의 여부를 나타내는 제1 파라미터를 상기 비트스트림에 인코딩하는 단계; 및
    포인트 클라우드 데이터가 상기 각도 모드를 사용하여 코딩되어야 할 것이다는 것을 상기 제1 파라미터가 나타내는 경우:
    각자의 빔 원점 위치에 대한 상기 빔의 세트의 빔 각도에 관련이 있는 제1 각도 정보를 상기 비트스트림에 인코딩하는 단계; 및
    서브 볼륨으로 분할되는 현재의 볼륨에 대해:
    상기 빔의 세트와 관련되는 위치에 대한 상기 볼륨의 서브 볼륨 또는 서브 볼륨 그룹의 각도에 관련이 있는 제2 각도 정보를 결정하는 단계; 및
    상기 제1 각도 정보 및 상기 제2 각도 정보에 기초하여 상기 볼륨에 대한 상기 포인트 클라우드 데이터를 인코딩하는 단계
    를 포함하는, 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하는 방법.
  12. 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하기 위한 디코더에 있어서, 상기 포인트 클라우드는 빔의 세트에 의해 획득되었고, 상기 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 상기 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되고, 상기 디코더는:
    프로세서;
    메모리; 및
    실행될 때, 상기 프로세서로 하여금 제1항 내지 제10항 중 어느 한 항에서 청구되는 상기 방법을 수행하게 하는, 상기 프로세서에 의해 실행 가능한 명령어를 포함하는 디코딩 애플리케이션
    을 포함하는 것인, 압축된 포인트 클라우드 데이터의 비트스트림을 디코딩하기 위한 디코더.
  13. 압축된 포인트 클라우드 데이터의 비트스트림을 생성하기 위해 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하기 위한 인코더에 있어서, 상기 포인트 클라우드는, 서브 볼륨으로 재귀적으로 분할되며 상기 포인트 클라우드의 포인트를 포함하는 체적 공간 내에 위치되고, 상기 인코더는:
    프로세서;
    메모리; 및
    실행될 때, 상기 프로세서로 하여금 제11항에 청구되는 상기 방법을 수행하게 하는, 상기 프로세서에 의해 실행 가능한 명령어를 포함하는 인코딩 애플리케이션
    을 포함하는 것인, 빔의 세트에 의해 획득되는 포인트 클라우드를 인코딩하기 위한 인코더.
  14. 프로세서 실행 가능 명령어를 저장하는 비일시적 프로세서 판독 가능 매체에 있어서,
    상기 프로세서 실행 가능 명령어는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제11항 중 어느 한 항에서 청구되는 상기 방법을 수행하게 하는 것인, 비일시적 프로세서 판독 가능 매체.
  15. 프로그램 명령어를 포함하는 컴퓨터 판독 가능 신호에 있어서,
    상기 프로그램 명령어는, 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 제1항 내지 제11항 중 어느 한 항에서 청구되는 상기 설명된 방법을 수행하게 하는 것인, 컴퓨터 판독 가능 신호.
KR1020227008825A 2019-10-01 2020-09-29 트리 기반의 포인트 클라우드 코딩을 위한 각도 모드 신택스 KR20220074865A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19200891.0 2019-10-01
EP19200891.0A EP3800892A1 (en) 2019-10-01 2019-10-01 Angular mode syntax for tree-based point cloud coding
PCT/CA2020/051297 WO2021062530A1 (en) 2019-10-01 2020-09-29 Angular mode syntax for tree-based point cloud coding

Publications (1)

Publication Number Publication Date
KR20220074865A true KR20220074865A (ko) 2022-06-03

Family

ID=68109253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008825A KR20220074865A (ko) 2019-10-01 2020-09-29 트리 기반의 포인트 클라우드 코딩을 위한 각도 모드 신택스

Country Status (5)

Country Link
US (1) US20220351423A1 (ko)
EP (1) EP3800892A1 (ko)
KR (1) KR20220074865A (ko)
CN (1) CN114586287A (ko)
WO (1) WO2021062530A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11842520B2 (en) 2020-04-08 2023-12-12 Qualcomm Incorporated Angular mode simplification for geometry-based point cloud compression
US11941855B2 (en) 2020-04-08 2024-03-26 Qualcomm Incorporated Coding of laser angles for angular and azimuthal modes in geometry-based point cloud compression
CN117178555A (zh) * 2021-04-21 2023-12-05 Lg 电子株式会社 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法
WO2023056677A1 (en) * 2021-10-06 2023-04-13 Beijing Xiaomi Mobile Software Co., Ltd. Method of encoding and decoding, encoder, decoder and software for encoding and decoding a point cloud
WO2023199675A1 (ja) * 2022-04-13 2023-10-19 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 復号方法、符号化方法及び復号装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016003340A1 (en) * 2014-07-03 2016-01-07 Telefonaktiebolaget L M Ericsson (Publ) Encoding and decoding of light fields
CN105678076B (zh) * 2016-01-07 2018-06-22 福州华鹰重工机械有限公司 点云测量数据质量评估优化的方法及装置
US11005192B2 (en) * 2017-06-05 2021-05-11 Metawave Corporation Intelligent metamaterial radar having a dynamically controllable antenna
US11113845B2 (en) * 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
GB2568232A (en) * 2017-10-26 2019-05-15 Nokia Technologies Oy A method for volumetric video encoding and decoding
US10796457B2 (en) * 2018-06-26 2020-10-06 Intel Corporation Image-based compression of LIDAR sensor data with point re-ordering
CN111327902B (zh) * 2018-12-13 2022-11-22 华为技术有限公司 点云的编解码方法及装置
WO2020189982A1 (ko) * 2019-03-15 2020-09-24 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법

Also Published As

Publication number Publication date
CN114586287A (zh) 2022-06-03
US20220351423A1 (en) 2022-11-03
WO2021062530A1 (en) 2021-04-08
EP3800892A1 (en) 2021-04-07

Similar Documents

Publication Publication Date Title
US20220353549A1 (en) Angular mode for tree-based point cloud coding
US11310525B2 (en) Predictor-copy coding mode for coding of point clouds
US10693492B1 (en) Context determination for planar mode in octree-based point cloud coding
US20220358686A1 (en) Angular priors for improved prediction in point-predictive trees
US20220398784A1 (en) Method and system for azimuthal angular prior and tree repesentation for cloud compression
US10992947B2 (en) Planar mode in octree-based point cloud coding
US20220351423A1 (en) Angular mode syntax for tree-based point cloud coding
US20220366612A1 (en) Angular prior and direct coding mode for tree representation coding of a point cloud
KR20230021675A (ko) 인코딩 및 디코딩 방법, 인코더, 디코더 및 소프트웨어
US20230048381A1 (en) Context determination for planar mode in octree-based point cloud coding
US11258458B2 (en) Methods and devices for lossy coding of point cloud occupancy
KR20220166793A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
KR20220166792A (ko) 지오메트리 기반 포인트 클라우드 압축을 위한 각도 모드 단순화
CN117581537A (zh) 用于对点云进行编码和解码的方法