KR102631110B1 - 포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치 - Google Patents

포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR102631110B1
KR102631110B1 KR1020207031930A KR20207031930A KR102631110B1 KR 102631110 B1 KR102631110 B1 KR 102631110B1 KR 1020207031930 A KR1020207031930 A KR 1020207031930A KR 20207031930 A KR20207031930 A KR 20207031930A KR 102631110 B1 KR102631110 B1 KR 102631110B1
Authority
KR
South Korea
Prior art keywords
context
bit
volumes
volume
neighboring
Prior art date
Application number
KR1020207031930A
Other languages
English (en)
Other versions
KR20200141065A (ko
Inventor
세바스티앙 라세르
데이비드 플린
Original Assignee
블랙베리 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 블랙베리 리미티드 filed Critical 블랙베리 리미티드
Publication of KR20200141065A publication Critical patent/KR20200141065A/ko
Application granted granted Critical
Publication of KR102631110B1 publication Critical patent/KR102631110B1/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
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

포인트 클라우드를 인코딩하기 위한 방법 및 장치가 개시된다. 볼륨 내의 서브 볼륨에 대한 점유 패턴을 시그널링하는 비트 시퀀스가 이진 엔트로피 코딩을 사용하여 코딩된다. 컨텍스트는 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 부분 시퀀스를 기반으로 할 수 있다. 컨텍스트 축소 동작을 적용할지 여부에 대한 결정이 이루어지고, 적용할 경우, 해당 동작은 사용 가능한 컨텍스트 수를 줄인다. 예시적인 컨텍스트 축소 동작은 이전에 코딩된 비트와 연관된 서브 볼륨에 의한 차폐, 비어 있는 이웃 구성에 대한 특수 처리 및 통계 기반 컨텍스트 통합에 기초하여 이웃 구성을 줄이는 것을 포함한다.

Description

포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치
본 출원은 일반적으로 포인트 클라우드 압축에 관한 것이고, 특히 포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치에 관한 것이다.
정보를 효율적으로 저장, 전송 및 재생산하기 위해 통신 및 컴퓨터 네트워킹에서 데이터 압축이 사용된다. 대규모 데이터 세트를 포함할 수 있고 효율적이고 효과적인 압축이 매우 유용하고 가치가 있는 3 차원 객체 또는 공간의 표현에 대한 관심이 증가하고 있다. 경우에 따라, 3 차원 객체 또는 공간은 3 개의 좌표 위치 (X, Y, Z)를 각각 갖는 포인트 세트인 포인트 클라우드를 사용하여 표현될 수 있으며, 경우에 따라, 색상 데이터(예를 들어, 휘도 및 색차), 투명도, 반사율, 법선 벡터 등과 같은 다른 속성을 사용하여 표현될 수 있다. 포인트 클라우드는 정적(정지된 객체 또는 단일 시점에서 환경/객체의 스냅샷) 또는 동적(시간 순서 시퀀스의 포인트 클라우드)일 수 있다.
포인트 클라우드의 예시적인 애플리케이션에는 토폴로지 및 매핑 애플리케이션이 포함된다. 자율 차량 및 기타 머신 비전 애플리케이션이 LiDAR 스캐너와 같은 환경의 3D 스캔 형태의 포인트 클라우드 센서 데이터에 의존할 수 있다. 가상 현실 시뮬레이션이 포인트 클라우드에 의존할 수 있다.
포인트 클라우드는 많은 양의 데이터를 포함할 수 있으며 해당 데이터를 빠르고 정확하게 압축(인코딩 및 디코딩)하는 것이 중요한 관심사임을 이해할 것이다. 따라서, 포인트 클라우드에 대한 데이터를 보다 효율적으로 및/또는 효과적으로 압축하는 방법 및 장치를 제공하는 것이 유리할 것이다. 더욱이, 과도한 수의 컨텍스트를 관리할 필요 없이 컨텍스트 적응 이진 엔트로피 코딩을 사용하여 구현될 수 있는 포인트 클라우드 코딩 방법 및 장치를 찾는 것이 유리할 것이다.
포인트 클라우드를 인코딩하기 위한 방법 및 장치가 개시된다. 볼륨 내의 서브 볼륨에 대한 점유 패턴을 시그널링하는 비트 시퀀스가 이진 엔트로피 코딩을 사용하여 코딩된다. 컨텍스트는 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 부분 시퀀스를 기반으로 할 수 있다. 컨텍스트 축소 동작을 적용할지 여부에 대한 결정이 이루어지고, 적용할 경우, 해당 동작은 사용 가능한 컨텍스트 수를 줄인다. 예시적인 컨텍스트 축소 동작은 이전에 코딩된 비트와 연관된 서브 볼륨에 의한 차폐, 비어 있는 이웃 구성에 대한 특수 처리 및 통계 기반 컨텍스트 통합에 기초하여 이웃 구성을 줄이는 것을 포함한다.
이제 본 출원의 예시적인 실시예를 도시하는 첨부 도면을 예로서 참조할 것이다.
도 1은 예시적인 포인트 클라우드 인코더의 단순화된 블록 다이어그램을 도시한다.
도 2는 예시적인 포인트 클라우드 디코더의 단순화된 블록 다이어그램을 도시한다.
도 3은 코딩을 위한 예시적인 부분적 서브 볼륨 및 관련 트리 구조를 도시한다.
도 4는 옥트리의 재귀적 분할 및 코딩을 도시한다.
도 5는 옥트리의 예시적인 큐브 내의 예시적인 스캔 패턴을 도시한다.
도 6은 예시적인 큐브 내의 예시적인 점유 패턴을 도시한다.
도 7은 포인트 클라우드를 인코딩하기 위한 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 8은 예시적인 옥트리의 일부를 도시한다.
도 9는 예시적인 이웃 서브 볼륨을 도시한다.
도 10은 이웃 노드 간의 점유를 보여주는 예시적인 이웃 구성을 도시한다.
도 11은 부모 패턴 의존 컨텍스트를 사용하는 포인트 클라우드 엔트로피 인코딩 프로세스의 하나의 예시적인 실시예를 도식적으로 도시한다.
도 12는 이웃 구성 의존 컨텍스트를 사용하는 포인트 클라우드 엔트로피 인코딩 프로세스의 예시적인 실시예를 도시한다.
도 13은 압축된 포인트 클라우드 데이터의 비트 스트림을 디코딩하기 위한 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 14는 인코더의 예시적인 단순화된 블록 다이어그램을 도시한다.
도 15는 디코더의 예시적인 단순화된 블록 다이어그램을 도시한다.
도 16은 예시적인 데카르트 좌표계 및 축에 대한 예시적인 회전 및/또는 반사를 도시한다.
도 17은 Z 축에 대한 회전의 한 번 또는 여러 번 반복 하에서 이웃 구성의 불변 클래스를 도시한다.
도 18은 수직 반사에 대한 이웃 구성의 불변 클래스를 도시한다.
도 19는 회전과 반사 모두에 대한 불변 클래스를 도시한다.
도 20은 3 개 회전과 반사 하의 불변 클래스를 도시한다.
도 21은 점유 패턴에 대한 비이진 코딩과 캐스케이드 이진 코딩 사이의 동등성을 도시한다.
도 22는 이진 코딩을 사용하여 트리 기반 포인트 클라우드 코더에서 점유 패턴을 코딩하기 위한 하나의 예시적인 방법을 흐름도 형태로 도시한다.
도 23은 예시적인 인코더의 일부의 단순화된 블록 다이어그램을 도시한다.
도 24는 이웃 스크리닝에 기초한 예시적인 컨텍스트 축소 동작을 도식적으로 도시한다.
도 25는 이웃 스크리닝에 기초한 다른 예시적인 컨텍스트 축소 동작을 도시한다.
도 26은 결합된 컨텍스트 축소를 사용하여 점유 패턴을 이진 코딩하는 하나의 예시적인 방법을 흐름도 형태로 도시한다.
유사한 구성 요소를 나타내기 위해 유사한 참조 번호가 상이한 도면에서 사용될 수 있다.
본 출원은 포인트 클라우드를 인코딩 및 디코딩하는 방법과, 포인트 클라우드를 인코딩 및 디코딩하기 위한 인코더 및 디코더를 설명한다. 볼륨 내의 서브 볼륨에 대한 점유 패턴을 시그널링하는 비트 시퀀스가 이진 엔트로피 코딩을 사용하여 코딩될 수 있다. 컨텍스트는 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 부분 시퀀스를 기반으로 할 수 있다. 컨텍스트 축소 동작을 적용할지 여부에 대한 결정이 이루어지고, 적용할 경우, 해당 동작은 사용 가능한 컨텍스트 수를 줄인다. 예시적인 컨텍스트 축소 동작은, 이전에 코딩된 비트와 연관된 서브 볼륨에 의한 차폐, 비어 있는 이웃 구성에 대한 특수 처리 및 통계 기반 컨텍스트 통합에 기초하여 이웃 구성을 줄이는 것을 포함한다. 축소는 코딩에 앞서 적용될 수 있고, 축소된 컨텍스트 세트를 사용하기 위한 환경이 충족되는지 여부에 대한 결정이 코딩 중에 이루어질 수 있다.
일 양태에서, 본 출원은 압축된 포인트 클라우드 데이터의 비트 스트림을 생성하기 위해 포인트 클라우드를 인코딩하는 방법을 제공하며, 포인트 클라우드는 부모-자식 관계를 갖는 복수의 노드를 갖고 서브 볼륨으로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 포인트 클라우드의 포인트를 포함하는 트리 구조로 정의되고, 볼륨 내의 서브 볼륨의 점유는 비트 시퀀스를 사용하여 표시되며, 비트 시퀀스의 각각의 비트는 스캔 순서로 볼륨 내의 각각의 서브 볼륨의 점유를 나타내고, 볼륨은 복수의 이웃 볼륨을 가지며, 이웃 볼륨의 점유 패턴은 이웃 구성이다. 이 방법은 볼륨의 비트 시퀀스의 적어도 하나의 비트에 대해, 컨텍스트 축소 조건이 충족되는지를 결정하는 단계; 이에 기초하여 이웃 구성 수와 시퀀스의 이전에 코딩된 비트 수의 곱보다 더 적은 컨텍스트를 포함하는 축소된 컨텍스트 세트를 선택하는 단계; 적어도 하나의 비트를 코딩하기 위해, 축소된 컨텍스트 세트로부터 이웃 볼륨 중 적어도 일부의 점유 상태 및 비트 시퀀스의 적어도 하나의 이전에 코딩된 비트에 기초하여 컨텍스트를 선택하는 단계; 비트 스트림에 대한 인코딩된 데이터를 생성하기 위해 이진 엔트로피 인코더를 사용하여 선택된 컨텍스트에 기초하여 적어도 하나의 비트를 엔트로피 인코딩하는 단계; 및 선택된 컨텍스트를 업데이트하는 단계를 포함한다.
또 다른 양태에서, 본 출원은 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트 스트림을 디코딩하는 방법을 제공하며, 포인트 클라우드는 부모-자식 관계를 갖는 복수의 노드를 갖고 서브 볼륨으로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 포인트 클라우드의 포인트를 포함하는 트리 구조로 정의되고, 볼륨 내의 서브 볼륨의 점유는 비트 시퀀스를 사용하여 표시되며, 비트 시퀀스의 각각의 비트는 스캔 순서로 볼륨 내의 각각의 서브 볼륨의 점유를 나타내고, 볼륨은 복수의 이웃 볼륨을 가지며, 이웃 볼륨의 점유 패턴은 이웃 구성이다. 디코딩 방법은 볼륨의 비트 시퀀스의 적어도 하나의 비트에 대해, 컨텍스트 축소 조건이 충족되는지를 결정하는 단계, 이에 기초하여 이웃 구성 수와 시퀀스의 이전에 코딩된 비트 수의 곱보다 더 적은 컨텍스트를 포함하는 축소된 컨텍스트 세트를 선택하는 단계; 적어도 하나의 비트를 코딩하기 위해, 축소된 컨텍스트 세트로부터 이웃 볼륨 중 적어도 일부의 점유 상태 및 비트 시퀀스의 적어도 하나의 이전에 코딩된 비트에 기초하여 컨텍스트를 선택하는 단계; 비트 스트림으로부터 재구성된 비트를 생성하기 위해 이진 엔트로피 디코더를 사용하여 선택된 컨텍스트에 기초하여 적어도 하나의 비트를 엔트로피 디코딩하는 단계; 및 선택된 컨텍스트를 업데이트하는 단계를 포함한다.
일부 구현에서, 컨텍스트 축소 조건은 하나 이상의 이전에 코딩된 점유 비트가 적어도 하나의 비트와 연관된 서브 볼륨과 하나 이상의 이웃 볼륨 사이에 위치하는 하나 이상의 각각의 서브 볼륨과 연관되는지를 결정하는 것을 포함할 수 있다. 경우에 따라, 이것은 이전에 인코딩된 비트와 연관된 4 개의 서브 볼륨이 특정 이웃 볼륨과 면을 공유하는지를 결정하는 것을 포함할 수 있다.
일부 구현에서, 컨텍스트 축소 조건은 비트 시퀀스의 적어도 4 개의 비트가 이전에 코딩되었는지를 결정하는 것을 포함할 수 있다.
일부 구현에서, 컨텍스트 축소 조건이 충족되는지를 결정하는 단계는 복수의 이웃 볼륨이 점유되지 않았음을 이웃 볼륨의 점유 패턴이 나타내는지를 결정하는 단계를 포함할 수 있다. 그러한 경우 중 일부에서, 선택된 축소된 컨텍스트 세트는 비트 시퀀스의 이전에 코딩된 비트의 수에 대응하는 컨텍스트 수를 포함할 수 있고, 선택적으로 컨텍스트를 선택하는 단계는 비트 시퀀스의 이전에 코딩된 비트의 합에 기초하여 컨텍스트를 선택하는 단계를 포함할 수 있다.
일부 구현에서, 컨텍스트 축소 조건은 비트 시퀀스의 적어도 임계 비트 수가 이전에 코딩되었는지를 결정하는 것을 포함할 수 있으며, 축소된 컨텍스트 세트는 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 패턴의 각각의 가능한 조합을 더 적은 컨텍스트로 매핑하는 룩업 테이블을 포함할 수 있다. 일부 예에서, 룩업 테이블은 사용 가능한 컨텍스트의 각 쌍 사이의 거리 측정이 임계 값보다 작다는 결정에 기초하여, 복수의 클래스로 사용 가능한 컨텍스트의 반복적인 그룹화에 기초하여 생성될 수 있고, 복수의 클래스 내의 각각의 클래스는 더 작은 세트로 각각의 컨텍스트를 포함할 수 있으며, 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 패턴의 각각의 가능한 조합에 대해 사용 가능한 컨텍스트가 있을 수 있다.
일부 구현에서, 이웃 볼륨 중 적어도 일부는 볼륨과 적어도 하나의 면을 공유하는 이웃 볼륨이다.
추가 양태에서, 본 출원은 이러한 인코딩 및 디코딩 방법을 구현하도록 구성된 인코더 및 디코더를 설명한다.
또 다른 양태에서, 본 출원은 실행될 때 하나 이상의 프로세서로 하여금 설명된 인코딩 및/또는 디코딩 방법을 수행하게 하는 컴퓨터 실행 가능 프로그램 명령어를 저장하는 비일시적 컴퓨터 판독 가능 매체를 설명한다.
또 다른 양태에서, 본 출원은 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 설명된 인코딩 및/또는 디코딩 방법을 수행하게 하는 프로그램 명령어를 포함하는 컴퓨터 판독 가능 신호를 설명한다.
본 출원의 다른 양태 및 특징은 첨부 도면과 함께 다음의 실시예 설명을 검토하여 당업자에 의해 이해될 것이다.
본 발명의 일 양태 또는 실시예와 관련하여 설명된 임의의 특징이 또한 하나 이상의 다른 양태/실시예와 관련하여 사용될 수 있다. 본 발명의 이러한 양태 및 다른 양태는 본 명세서에 설명된 실시예로부터 명백해질 것이고 이를 참조하여 설명될 것이다.
아래 설명에서 때로는 "노드", "볼륨" 및 "서브 볼륨"이라는 용어는 상호 교환적으로 사용될 수 있다. 노드는 볼륨 또는 서브 볼륨과 연관되어 있음을 이해할 것이다. 노드는 내부 노드 또는 리프 노드일 수 있는 트리 상의 특정 지점이다. 볼륨 또는 서브 볼륨은 노드가 나타내는 유계 물리적 공간이다. 경우에 따라, "볼륨"이라는 용어는 포인트 클라우드를 포함하기 위해 정의된 가장 큰 유계 공간을 나타내기 위해 사용될 수 있다. 볼륨은 포인트 클라우드 데이터를 코딩하기 위해 상호 연결된 노드의 트리 구조를 구축할 목적으로 서브 볼륨으로 재귀적으로 분할될 수 있다.
본 출원에서, 용어 "및/또는"은 추가 요소를 반드시 제외하지 않으면서 나열된 요소 중 임의의 하나, 임의의 하위 조합 또는 모든 요소를 포함하여 나열된 요소의 모든 가능한 조합 및 하위 조합을 포함하도록 의도된다.
본 출원에서, "... 또는 ... 중 적어도 하나"라는 문구는 임의의 추가 요소를 반드시 제외하지 않고 모든 요소를 반드시 요구하지 않으면서 나열된 요소 중 임의의 하나, 임의의 하위 조합 또는 모든 요소를 포함하여 나열된 요소 중 임의의 하나 이상을 포함하도록 의도된다.
포인트 클라우드는 3 차원 좌표계의 포인트 세트이다. 포인트는 종종 하나 이상의 객체의 외부 표면을 나타내도록 의도된다. 각 포인트는 3 차원 좌표계의 위치(자리)를 갖는다. 위치는 세 개의 좌표 (X, Y, Z)로 표시될 수 있으며, 이는 데카르트 좌표계 또는 임의의 다른 좌표계일 수 있다. 경우에 따라, 포인트는 R, G, B 또는 Y, Cb, Cr과 같은 세 가지 구성 요소 값일 수도 있는 색상과 같은 다른 관련 속성을 가질 수 있다. 다른 관련 속성에는 포인트 클라우드 데이터에 대해 원하는 애플리케이션에 따라 투명도, 반사율, 법선 벡터 등이 포함될 수 있다.
포인트 클라우드는 정적이거나 동적일 수 있다. 예를 들어, 객체 또는 토폴로지의 상세한 스캔 또는 매핑은 정적 포인트 클라우드 데이터일 수 있다. 머신 비전 목적을 위한 LiDAR 기반 환경 스캔은 예를 들어 볼륨의 연속적인 스캔과 같이 시간이 지남에 따라 포인트 클라우드가 (적어도 잠재적으로) 변경된다는 점에서 동적일 수 있다. 따라서 동적 포인트 클라우드는 시간 순서 시퀀스의 포인트 클라우드이다.
포인트 클라우드 데이터는 몇 가지 예를 제공하기 위해 보존(역사적 또는 문화적 객체 스캔), 매핑, 머신 비전(예컨대, 자율 또는 반자율 자동차) 및 가상 현실 시스템을 포함한 여러 애플리케이션에서 사용될 수 있다. 머신 비전과 같은 애플리케이션을 위한 동적 포인트 클라우드 데이터는 보존 목적을 위한 정적 포인트 클라우드 데이터와 상당히 상이할 수 있다. 예를 들어, 자동차용 비전은 일반적으로 높은 캡처 빈도를 갖는 LiDAR (또는 유사한) 센서를 통해 획득된 비교적 작은 해상도, 무색, 매우 동적인 포인트 클라우드를 포함한다. 이러한 포인트 클라우드의 목적은 사람이 소비 또는 검토하기 위한 것이 아니라, 의사 결정 프로세스에서 기계가 객체 감지/분류하기 위한 것이다. 예를 들어, 일반적인 LiDAR 프레임에는 대략 수만 개의 포인트가 포함되는 반면, 고품질 가상 현실 애플리케이션에는 수백만 개의 포인트가 필요하다. 계산 속도가 증가하고 새로운 애플리케이션이 발견됨에 따라, 시간이 지남에 따라 더 높은 해상도 데이터에 대한 요구가 있을 것으로 예상할 수 있다.
포인트 클라우드 데이터는 유용하지만, 효과적이고 효율적인 압축, 즉 인코딩 및 디코딩 프로세스의 부족은 채택 및 배포를 방해할 수 있다. 오디오 또는 비디오와 같은 다른 데이터 압축의 경우에는 발생하지 않는 포인트 클라우드 코딩의 특정 과제는 포인트 클라우드의 지오메트리 코딩이다. 포인트 클라우드는 밀도가 희박한 경향이 있기 때문에 포인트 위치를 효율적으로 코딩하는 것이 훨씬 더 어렵다.
포인트 클라우드 데이터를 코딩하는 가장 일반적인 메커니즘 중 하나는 트리 기반 구조를 사용하는 것이다. 트리 기반 구조에서, 포인트 클라우드의 경계 3 차원 볼륨은 서브 볼륨으로 재귀적으로 분할된다. 트리의 노드는 서브 볼륨에 해당한다. 서브 볼륨을 추가 분할할지 여부에 대한 결정은, 트리의 해상도 및/또는 서브 볼륨에 포함된 포인트가 있는지 여부에 기초할 수 있다. 리프 노드는 연관된 서브 볼륨이 포인트를 포함하는지 여부를 나타내는 점유 플래그를 가질 수 있다. 분할 플래그는 노드에 자식 노드가 있는지 여부(즉, 현재 볼륨이 서브 볼륨으로 추가 분할되었는지 여부)를 시그널링할 수 있다. 이러한 플래그들은 경우에 따라 엔트로피 코딩될 수 있으며, 경우에 따라 예측 코딩이 사용될 수 있다.
일반적으로 사용되는 트리 구조는 옥트리(octree)이다. 이 구조에서, 볼륨/서브 볼륨은 모두 큐브이며, 서브 볼륨의 각각의 분할은 8 개의 추가 서브 볼륨/서브 큐브를 초래한다. 일반적으로 사용되는 또 다른 트리 구조는 KD-트리이며, 이 구조에서 볼륨(큐브 또는 직사각형 입방체)은 하나의 축에 직교하는 평면에 의해 두 개로 재귀적으로 분할된다. 옥트리는 KD-트리의 특별한 사례로서, 볼륨이 세 개의 평면으로 분할되며, 각각의 평면은 세 축 중 하나에 직교한다. 이 두 가지 예는 모두 큐브 또는 직사각형 입방체와 관련이 있지만, 본 출원은 이러한 트리 구조에 제한되지 않으며, 일부 애플리케이션에서 볼륨 및 서브 볼륨은 다른 형태를 가질 수 있다. 볼륨의 분할은 반드시 2 개의 서브 볼륨(KD-트리) 또는 8 개의 서브 볼륨(옥트리)으로 이루어지는 것은 아니며, 직사각형이 아닌 형태로 분할되거나 인접하지 않은 서브 볼륨을 포함하는 다른 분할을 포함할 수 있다.
본 출원은 설명의 용이함과 자동차 애플리케이션을 위한 인기 있는 후보 트리 구조이기 때문에 옥트리를 참조할 수 있지만, 본 명세서에 설명된 방법 및 장치는 다른 트리 구조를 사용하여 구현될 수 있음을 이해할 것이다.
이제 도 1을 참조하며, 도 1은 본 출원의 양태에 따른 포인트 클라우드 인코더(10)의 단순화된 블록 다이어그램을 도시한다. 포인트 클라우드 인코더(10)는 포인트 클라우드 데이터를 수신하고 트리(이 예에서는 옥트리)를 생성하기 위한 트리 구축 모듈(12)을 포함하며, 트리는 포인트 클라우드를 포함하는 체적 공간의 기하학적 구조를 나타내고 해당 기하학적 구조로 포인트 클라우드의 포인트 위치 또는 자리를 나타낸다.
포인트 클라우드를 코딩하기 위해 옥트리를 생성하는 기본 프로세스는:
1. 좌표계에서 포인트 클라우드를 포함하는 경계 볼륨(큐브)으로 시작함
2. 볼륨을 8 개의 서브 볼륨(8 개의 서브 큐브)으로 분할함
3. 각 서브 볼륨에 대해, 서브 볼륨이 비어 있으면 0으로, 또는 적어도 하나의 포인트가 있으면 1로 서브 볼륨을 표시함
4. 1로 표시된 모든 서브 볼륨에 대해, 최대 분할 깊이에 도달할 때까지 단계 (2)를 반복하여 해당 서브 볼륨을 분할함
5. 최대 깊이의 모든 리프 서브 볼륨(서브 큐브)에 대해, 비어 있지 않으면 1로, 그렇지 않으면 0으로 리프 큐브를 표시함
위의 프로세스는 분할이 점유를 의미하는 점유-분할-동일 프로세스로 설명될 수 있으며, 더 이상 분할이 발생하지 않는 최대 깊이 또는 해상도가 있다는 제약 조건이 있다. 이 경우, 단일 플래그가 노드가 분할되었는지 여부 따라서 노드가 적어도 하나의 포인트에 의해 점유되었는지 여부를 시그널링하며, 그 반대의 경우도 가능하다. 최대 깊이에서, 플래그는 점유를 시그널링하며, 더 이상 분할이 불가능하다.
일부 구현에서, 분할 및 점유는 독립적이어서, 노드가 점유될 수 있고 분할될 수 있거나 분할되지 않을 수 있다. 이 구현에는 두 가지 변형이 있다.
1. 분할 후 점유. 신호 플래그가 노드가 분할되었는지 여부를 나타낸다. 분할된 경우, 노드는 포인트를 포함해야 한다. 즉, 분할은 점유를 의미한다. 그렇지 않고, 노드가 분할되지 않을 경우, 추가 점유 플래그가 노드가 적어도 하나의 포인트를 포함하는지 여부를 시그널링한다. 따라서, 노드가 더 이상 분할되지 않을 경우, 즉 리프 노드인 경우, 리프 노드는 포인트를 포함하는지 여부를 나타내는 관련 점유 플래그를 가져야 한다.
2. 점유 후 분할. 단일 플래그가 노드가 점유되었는지 여부를 나타낸다. 점유되지 않은 경우, 분할이 발생하지 않는다. 점유된 경우, 분할 플래그가 코딩되어 노드가 추가로 분할되는지 여부를 나타낸다.
트리를 구축하기 위해 위에서 설명된 프로세스 중 어느 것이 사용되는지에 관계없이, 플래그(점유 및/또는 분할 플래그)로부터 비트 시퀀스를 생성하기 위해 미리 정의된 순서(너비 우선 또는 깊이 우선, 그리고 각각의 분할된 서브 볼륨 내의 스캔 패턴/순서에 따름)로 순회될 수 있다. 이것은 트리의 직렬화 또는 이진화라고 할 수 있다. 도 1에 도시된 바와 같이, 이 예에서, 포인트 클라우드 인코더(10)는 옥트리를 이진화하기 위한 이진화기(14)를 포함하여 트리를 나타내는 이진화된 데이터의 비트 스트림을 생성한다.
그런 다음, 이 비트 시퀀스는 엔트로피 인코더(16)를 사용하여 인코딩되어 압축된 비트 스트림을 생성할 수 있다. 엔트로피 인코더(16)는 엔트로피 인코더(16)에 의한 컨텍스트 결정에 기초하여 비트를 코딩하기 위한 확률을 지정하는 컨텍스트 모델(18)을 사용하여 비트 시퀀스를 인코딩할 수 있다. 컨텍스트 모델(18)은 각각의 비트 또는 정의된 비트 세트의 코딩 후에 적응적으로 업데이트될 수 있다. 경우에 따라, 엔트로피 인코더(16)는 이진 산술 인코더일 수 있다. 일부 구현에서, 이진 산술 인코더는 컨텍스트 적응 이진 산술 코딩(context-adaptive binary arithmetic coding; CABAC)을 사용할 수 있다. 일부 구현에서, 산술 코더 이외의 코더가 사용될 수 있다.
경우에 따라, 엔트로피 인코더(16)는 이진 코더가 아닐 수 있지만, 대신 비이진 데이터에 대해 동작할 수 있다. 트리 구축 모듈(12)로부터의 출력 옥트리 데이터는 이진 형태로 평가되지 않고, 대신 비이진 데이터로 인코딩될 수 있다. 예를 들어, 옥트리의 경우, 스캔 순서에서 서브 볼륨 내의 8 개 플래그(예를 들어, 점유 플래그)는 28-1 비트 수(예를 들어, 분할된 서브 볼륨에 대해 값 0을 사용할 수 없기 때문에, 즉 완전히 비점유되었다면 분할되지 않았을 것이기 때문에, 1에서 255 사이의 값을 갖는 정수)로 간주될 수 있다. 이 수는 일부 구현에서 다중 심볼 산술 코더를 사용하는 엔트로피 인코더에 의해 인코딩될 수 있다. 예를 들어, 큐브와 같은 서브 볼륨 내에서, 이 정수를 정의하는 플래그 시퀀스는 "패턴"이라고 할 수 있다.
비디오 또는 이미지 코딩과 마찬가지로, 포인트 클라우드 코딩에는 서브 볼륨에 대한 패턴을 예측하기 위해 노력하는 예측 동작이 포함될 수 있다. 예측은 공간적(동일한 포인트 클라우드에서 이전에 코딩된 서브 볼륨에 의존) 또는 시간적(시간 순서 시퀀스의 포인트 클라우드에서 이전에 코딩된 포인트 클라우드에 의존)일 수 있다.
인코더(10)에 대응하는 예시적인 포인트 클라우드 디코더(50)의 블록 다이어그램이 도 2에 도시되어 있다. 포인트 클라우드 디코더(50)는 인코더(10)에 의해 사용되는 동일한 컨텍스트 모델(54)을 사용하는 엔트로피 디코더(52)를 포함한다. 엔트로피 디코더(52)는 압축된 데이터의 입력 비트 스트림을 수신하고 데이터를 엔트로피 디코딩하여 압축 해제된 비트의 출력 시퀀스를 생성한다. 그런 다음, 시퀀스는 트리 재구성기(56)에 의해 재구성된 포인트 클라우드 데이터로 변환된다. 트리 재구성기(56)는 압축 해제된 데이터 및 트리 데이터가 이진화된 스캐닝 순서에 대한 지식으로부터 트리 구조를 재구축한다. 따라서 트리 재구성기(56)는 (트리 코딩의 해상도에 따라) 포인트 클라우드의 포인트 위치를 재구성할 수 있다.
예시적인 부분적 서브 볼륨(100)이 도 3에 도시되어 있다. 이 예에서, 서브 볼륨(100)은 설명의 용이함을 위해 2 차원으로 도시되고, 서브 볼륨(100)의 크기는 16x16이다. 서브 볼륨은 4 개의 8x8 하위 정사각형으로 분할되었고, 그 중 2 개는 4x4 하위 정사각형으로 더 세분되었으며, 그 중 3 개는 2x2 하위 정사각형으로 더 분할되고, 그런 다음, 2x2 하위 정사각형 중 하나는 1x1 정사각형으로 분할된다. 1x1 정사각형은 트리의 최대 깊이이며 위치 포인트 데이터에 대한 최고 해상도를 나타낸다. 포인트 클라우드의 포인트는 도면에서 점으로 도시된다.
트리(102)의 구조는 서브 볼륨(100)의 오른쪽에 도시되어 있다. 미리 정의된 너비 우선 스캔 순서로 획득된 분할 플래그 시퀀스(104) 및 대응하는 점유 플래그 시퀀스(106)가 트리(102)의 오른쪽에 도시되어 있다. 이 예시적인 예에서, 분할되지 않은, 즉 0으로 설정된 관련 분할 플래그를 갖는 각각의 서브 볼륨(노드)에 대해 점유 플래그가 있음을 알 수 있다. 이러한 시퀀스들은 엔트로피 인코딩될 수 있다.
점유≡분할 조건을 사용하는 또 다른 예가 도 4에 도시되어 있다. 도 4는 옥트리(150)의 재귀적 분할 및 코딩을 도시한다. 옥트리(150)의 일부만이 도면에 도시되어 있다. FIFO(152)는 분할을 위한 노드를 처리하는 것으로 도시되어 있으며 현재 프로세스의 너비 우선 특성을 설명한다. FIFO(152)는 부모 노드(156)의 처리 후에 추가 분할을 위해 FIFO(152)에 큐잉된 점유 노드(154)를 출력한다. 트리 빌더는 점유 노드(154)와 연관된 서브 볼륨을 8 개의 서브 볼륨(큐브)으로 분할하고 그 점유를 결정한다. 점유는 각 서브 볼륨에 대한 점유 플래그에 의해 표시될 수 있다. 미리 정해진 스캔 순서에서, 플래그는 노드(154)에 대한 점유 패턴으로 지칭될 수 있다. 패턴은 미리 정의된 스캔 순서에서 서브 볼륨과 연관된 점유 플래그의 시퀀스를 나타내는 정수로 지정될 수 있다. 옥트리의 경우, 패턴은 [1, 255] 범위의 정수이다.
그런 다음, 엔트로피 인코더는 컨텍스트 모델에 의해 지정된 확률에 기초하여 비이진 산술 인코더를 사용하여 해당 패턴을 인코딩한다. 이 예에서, 확률은 초기 분포 모델에 기초한 패턴 분포일 수 있고 적응적으로 업데이트될 수 있다. 일 구현에서, 패턴 분포는 효과적으로 코딩 동안 각 패턴(1 내지 255의 정수)이 발생한 횟수의 카운터이다. 패턴 분포는 각 서브 볼륨이 코딩된 후 업데이트될 수 있다. 패턴의 상대 빈도는 절대 카운트가 아니라 확률 평가와 관련이 있기 때문에, 필요에 따라 패턴 분포를 정규화할 수 있다.
패턴에 기초하여, 점유된 자식 노드(예를 들어, 플래그 = 1을 가짐)는 (노드가 트리의 최대 깊이가 아닌 경우) 추가 분할을 위해 차례로 FIFO(152)에 푸시된다.
이제 도 5를 참조하며, 도 5는 옥트리의 예시적인 큐브(180)를 도시한다. 큐브(180)는 8 개의 서브 큐브로 세분된다. 플래그를 판독하기 위한 스캔 순서는 8 비트 이진 문자열을 초래하며, 이는 정수 [1, 255]로서 판독될 수 있다. 스캔 순서 및 문자열에 있는 각 서브 큐브 플래그의 결과 비트 위치에 기초하여, 서브 큐브는 도 5에 도시된 값을 갖는다. 스캔 순서는 인코더와 디코더가 모두 동일한 스캔 순서를 사용하는 경우, 서브 큐브의 시퀀스일 수 있다.
예를 들어, 도 6은 4 개의 "전면" 서브 큐브가 점유된 큐브(180)를 도시한다. 이것은 점유된 서브 큐브가 큐브 1 + 4 + 16 + 64 라는 점에 기초하여, 패턴 85에 해당한다. 정수 패턴 넘버는 서브 큐브의 점유 패턴을 지정한다.
옥트리 표현 또는 더 일반적으로 모든 트리 표현은 트리가 포인트 좌표의 상위 비트를 인수분해하는 경향이 있기 때문에, 공간 상관관계를 갖는 포인트를 표현하는 데 효율적이다. 옥트리의 경우, 각 깊이 레벨은 각 구성 요소에 대해 1 비트씩, 세분당 8 비트의 비용으로, 서브 볼륨 내의 포인트 좌표를 세밀하게 구분한다. 각 트리 노드와 연관된 분할 정보, 즉 패턴을 엔트로피 코딩하여 추가 압축이 획득된다. 이러한 추가 압축은 패턴 분포가 균일하지 않기 때문에 가능하며, 불균일성은 상관관계의 또 다른 결과이다.
현재 시스템의 하나의 잠재적인 비효율성은 패턴 분포(예를 들어, 트리의 이전에 코딩된 노드에서 볼 수 있는 패턴 넘버의 히스토그램)가 포인트 클라우드 코딩 과정에서 개발된다는 것이다. 경우에 따라, 패턴 분포는 동등 확률로 초기화되거나 다른 미리 결정된 분포로 초기화될 수 있다. 그러나 하나의 패턴 분포의 사용은 컨텍스트 모델이 국부 기하학적 상관관계를 설명하거나 활용하지 않음을 의미한다.
유럽 특허 출원 제 18305037.6 호에서, 본 출원인은 특정 노드 근처의 이전에 코딩된 노드로부터의 일부 점유 정보에 기초하여 특정 노드의 점유 패턴을 코딩하는 데 사용될 사용 가능한 패턴 분포 중에서 선택하는 방법 및 장치를 설명했다. 일 예시적인 구현에서, 점유 정보는 특정 노드에 대한 부모의 점유 패턴으로부터 획득된다. 다른 예시적인 구현에서, 점유 정보는 특정 노드에 이웃하는 하나 이상의 노드로부터 획득된다. 유럽 특허 출원 제 18305037.6 호의 내용은 본 명세서에 참조로 포함된다.
이제 도 7을 참조하며, 도 7은 포인트 클라우드를 인코딩하는 하나의 예시적인 방법(200)을 흐름도 형태로 도시한다. 이 예의 방법(200)은 점유 노드(서브 볼륨)의 재귀적 분할 및 코딩을 위한 트리의 너비 우선 순회를 포함한다.
동작(202)에서, 인코더는 현재 노드에 대한 점유 패턴을 결정한다. 현재 노드는 각각의 서브 큐브에 해당하는 8 개의 자식 노드로 분할된 점유 노드이다. 현재 노드에 대한 점유 패턴은 스캔 순서에서 8 개의 자식 노드의 점유를 지정한다. 위에서 설명된 바와 같이, 이러한 점유 패턴은 1에서 255 사이의 정수, 예를 들어, 8 비트 이진 문자열을 사용하여 표시될 수 있다.
동작(204)에서, 인코더는 확률 분포 세트 중에서 하나의 확률 분포를 선택한다. 확률 분포의 선택은 이전에 코딩된 근처 노드, 즉 현재 노드에 인접한 적어도 하나의 노드로부터의 일부 점유 정보에 기초한다. 일부 실시예에서, 2 개 노드가 적어도 하나의 면을 공유하는 각각의 서브 볼륨과 연관되는 경우 인접해 있다. 넓은 정의에서, 노드가 적어도 하나의 모서리를 공유하는 경우 인접해 있다. 더 넓은 정의에서, 두 노드가 적어도 하나의 정점을 공유하는 경우 인접해 있다. 현재 노드가 자식 노드이면, 부모 패턴은 현재 노드 및 7 개의 형제 노드에 대한 점유 데이터를 현재 노드에 제공한다. 일부 구현에서, 점유 정보는 부모 패턴이다. 일부 구현에서, 점유 정보는 현재 노드와 동일한 깊이의 트리 레벨에 있지만 다른 부모 노드를 갖는 노드를 포함하는 이웃 노드 세트에 대한 점유 데이터이다. 경우에 따라, 이들의 조합이 가능하다. 예를 들어, 이웃 노드 세트는 일부 형제 노드와 일부 비형제 노드를 포함할 수 있다.
확률 분포가 선택되면, 인코더는 동작(206)에 의해 표시된 바와 같이, 선택된 확률 분포를 사용하여 현재 노드에 대한 점유 패턴을 엔트로피 인코딩한다. 그런 다음, 동작(208)에서, 점유 패턴에 기초하여 선택된 확률 분포를 업데이트한다. 예를 들어, 해당 점유 패턴에 대응하는 카운트를 증가시킬 수 있다. 동작(210)에서, 인코더는 코딩할 추가 노드가 있는지 여부를 평가하고, 그렇다면, 다음 노드를 코딩하기 위해 동작(202)으로 복귀한다.
동작(204)에서의 확률 분포 선택은 이전에 코딩된 근처 노드에 대한 점유 데이터에 기초한다. 이를 통해 인코더와 디코더가 모두 독립적으로 동일한 선택을 할 수 있다. 확률 분포 선택에 대한 아래의 논의를 위해, 도 8을 참조할 것이며, 도 8은 현재 노드(302)를 포함하는 부분 옥트리(300)를 도식적으로 도시한다. 현재 노드(302)는 점유 노드이고, 코딩을 위해 평가되고 있다. 현재 노드(302)는 부모 노드(306)의 8 개의 자식 중 하나이고, 부모 노드는 차례로 조부모 노드(도시되지 않음)의 자식이다. 현재 노드(302)는 8 개의 자식 노드(304)로 분할된다. 현재 노드(302)에 대한 점유 패턴은 자식 노드(304)의 점유에 기초한다. 예를 들어, 도시된 바와 같이, 검은 점이 점유 노드라는 관례를 사용하여, 점유 패턴은 00110010, 즉 패턴 50일 수 있다.
현재 노드(302)는 동일한 부모 노드(306)를 갖는 형제 노드(308)를 갖는다. 부모 패턴은 부모 노드(306)에 대한 점유 패턴이며, 도시된 바와 같이 00110000, 즉 패턴 48이 될 것이다. 부모 패턴은 현재 노드에 대한 점유 패턴을 엔트로피 인코딩하기 위한 적절한 확률 분포를 선택하기 위한 기준이 될 수 있다.
도 9는 현재 노드를 둘러싼 일련의 이웃을 도시하며, 여기서 이웃은 면을 공유하는 노드로 정의된다. 이 예에서, 노드/서브 볼륨은 큐브이고, 이미지 중앙의 큐브에는 각 면에 하나씩 6 개의 이웃이 있다. 옥트리에서, 현재 노드의 이웃은 3 개의 형제 노드를 포함할 것임을 이해할 것이다. 또한, 동일한 부모 노드를 갖지 않는 3 개의 노드도 포함될 것이다. 따라서, 일부 이웃 노드에 대한 점유 데이터는 형제이기 때문에 사용 가능할 수 있지만, 일부 이웃 노드에 대한 점유 데이터는 해당 노드가 이전에 코딩되었는지 여부에 따라 사용 가능할 수도 있고 사용 가능하지 않을 수도 있다. 누락된 이웃을 처리하기 위해 특별 처리가 적용될 수 있다. 일부 구현에서, 누락된 이웃은 점유된 것으로 추정될 수 있거나 점유되지 않은 것으로 추정될 수 있다. 이웃 정의는 평가에 추가적인 인접한 서브 볼륨을 포함하기 위해 공유된 모서리에 기초하거나 공유된 정점에 기초하여 이웃 노드를 포함하도록 확장될 수 있음을 이해할 것이다.
앞서 말한 프로세스는 보다 적합한 컨텍스트(들)를 선택하고 현재 노드(302)의 점유 데이터를 엔트로피 코딩하는 데 보다 정확한 확률을 사용하기 위해, 현재 노드(302)의 점유 가능성을 결정하기 위해 근처 노드의 점유를 살펴본다는 것을 이해할 것이다. 형제 노드 중 3 개는 모서리만 공유하고 형제 노드 중 하나는 정점만 공유할 것이므로(옥트리의 경우) 형제 노드의 점유 상태에 대한 평가를 기반으로 하는 것보다, 현재 노드(302)와 면을 공유하는 이웃 노드의 점유 상태가 현재 노드(302)가 격리될 가능성이 있는지 여부에 대한 더 정확한 평가일 수 있음을 이해할 것이다. 그러나, 형제 노트의 점유 상태 평가는 평가에 대한 모든 관련 데이터가 부모 노드의 일부라는 점에서 모듈식이라는 장점이 있으며, 이는 구현을 위해 더 적은 메모리 풋프린트를 가짐을 의미하는 반면, 이웃 점유 상태 평가는 미래의 근처 노드 코딩과 관련하여 이웃 점유 상태를 결정할 때 필요할 경우 트리 점유 데이터를 버퍼링하는 것을 포함한다.
이웃의 점유는 점유 패턴과 관련하여 위에서 설명한 것처럼 각 이웃에게 값을 효과적으로 할당하는 스캔 순서로 판독될 수 있다. 도시된 바와 같이, 이웃 노드는 1, 2, 4, 8, 16 또는 32의 값을 효과적으로 취하므로 64 개(0에서 63)의 가능한 이웃 점유 구성이 있다. 이 값은 본 명세서에서 "이웃 구성"이라고 할 수 있다. 예를 들어, 도 10은 이웃 1, 2, 4 및 8이 점유되고 이웃 16 및 32가 비어 있는 예시적인 이웃 구성 15를 도시한다.
경우에 따라, 위의 두 가지 기준(부모 패턴 및 이웃 구성)이 모두 적용되거나 그 중에서 선택될 수 있다. 예를 들어, 이웃이 사용 가능하면, 확률 분포 선택은 이웃 노드에 기초하여 만들어질 수 있지만, 하나 이상의 이웃이 아직 코딩되지 않은 노드에서 왔기 때문에 사용 가능하지 않으면, 확률 분포 선택은 형제 노드(부모 패턴)에 기초한 분석으로 되돌아갈 수 있다.
또 다른 실시예에서, 확률 분포 선택은 대안적으로 또는 추가적으로 조부모 패턴에 기초할 수 있다. 즉, 확률 분포 선택은 부모 노드(306)에 대한 형제인 삼촌 노드의 점유 상태에 기초할 수 있다.
추가 구현에서, 추가 또는 대안 평가가 확률 분포 선택에 반영될 수 있다. 예를 들어, 확률 분포 선택은 부모 노드에 대한 이웃 노드 또는 조부모 노드에 대한 이웃 노드의 점유 상태를 살펴볼 수 있다.
일부 구현에서, 위의 기준 중 두 개 이상을 조합하여 국부 점유 상태를 평가하기 위해 사용할 수 있다.
비이진 엔트로피 코더의 경우, 확률 분포를 선택하여 현재 노드에 대한 점유 데이터를 코딩할 수 있다. 확률 분포는 현재 노드의 가능한 점유 패턴 수에 대응하는 여러 확률을 포함한다. 예를 들어, 옥트리의 점유 패턴을 코딩하는 경우, 28-1 = 255 개의 가능한 패턴이 있는데, 이는 각 확률 분포가 255 개의 확률을 포함함을 의미한다. 일부 실시예에서, 확률 분포의 수는 선택 기준(즉, 이웃, 형제 및/또는 부모 점유 데이터를 사용함)의 가능한 점유 결과의 수와 동일할 수 있다. 예를 들어, 사용할 확률 분포를 결정하기 위한 선택 기준으로 옥트리의 부모 패턴을 사용하는 경우, 각각 255 개의 확률을 포함하는 255 개의 확률 분포가 있다. 이웃 구성의 경우, 이웃이 면을 공유하는 것으로 정의되면, 각 분포에 255 개의 확률을 포함하는 64 개의 확률 분포가 있다.
너무 많은 분포는 데이터 부족, 즉 컨텍스트 희석으로 인해 느린 적응을 야기할 수 있음을 이해할 것이다. 따라서, 일부 실시예에서, 동일한 확률 분포를 사용하기 위해 유사한 패턴들이 그룹화될 수 있다. 예를 들어, 완전 점유 패턴, 수직 방향 패턴, 수평 방향 패턴, 대부분 비어 있는 패턴 및 기타 모든 경우에 대해 별도의 분포를 사용할 수 있다. 이것은 확률 분포의 수를 약 5 개로 줄일 수 있다. 상이한 수의 확률 분포를 초래하도록 상이한 패턴 그룹화가 형성될 수 있음을 이해할 것이다.
이제 도 11을 참조하며, 도 11은 부모 패턴 의존 컨텍스트를 사용하는 포인트 클라우드 엔트로피 인코딩 프로세스(400)의 하나의 예시적인 실시예를 도식적으로 도시한다. 이 예에서, 현재 노드(402)는 8 개의 자식 노드로 분할되었고, 그 점유 패턴(404)은 비이진 엔트로피 인코더(406)를 사용하여 인코딩될 것이다. 비이진 엔트로피 인코더(406)는 6 개의 가능한 확률 분포(408) 중 하나로부터 선택된 확률 분포를 사용한다. 선택은 부모 패턴을 기반으로 한다. 즉, 선택은 부모 노드에서 현재 노드(402)까지의 점유 정보를 기반으로 한다. 부모 패턴은 1 내지 255의 정수로 식별된다.
확률 분포의 선택은 패턴이 전체 노드(예를 들어, 패턴 = 255), 수평 구조(예를 들어, 패턴 = 170 또는 85; Z 축이 수직이라고 가정), 수직 구조(예를 들어, 패턴 = 3, 12, 48, 192), 희박 밀도 분포(예를 들어, 패턴 = 1, 2, 4, 8, 16, 32, 64 또는 128, 즉 어떠한 형제 노드도 점유되지 않음), 반 희박 밀도 분포(현재 노드와 형제 노드 사이의 총 점유 노드 수 ≤ 3) 및 기타 모든 경우에 해당하는지 여부를 평가하는 결정 트리일 수 있다. 상이한 카테고리에 대해 표시된 예시적인 패턴은 단지 예일 뿐이다. 예를 들어, "수평" 카테고리는 동일한 수평 레벨에 2 개 또는 3 개의 점유 큐브를 포함하는 패턴을 포함할 수 있다. "수직" 카테고리는 벽과 같은 배열로 3 개 또는 4 개의 점유 큐브를 포함하는 패턴을 포함할 수 있다. 또한 보다 미세한 등급이 사용될 수 있음을 이해할 것이다. 예를 들어, "수평" 카테고리는 큐브의 상단 부분에서 수평으로 그리고 큐브의 하단 부분에서 수평으로 더 세분될 수 있으며, 각각에 대해 상이한 확률 분포를 갖는다. 일부 상관관계를 갖는 점유 패턴의 다른 그룹화가 만들어지고 대응하는 확률 분포에 할당될 수 있다. 이웃 구성의 맥락에서 패턴 그룹화 및 이웃 구성 간의 불변성에 관한 추가 논의가 아래에서 더 자세히 설명된다.
도 12는 이웃 구성 의존 컨텍스트를 사용하는 포인트 클라우드 엔트로피 인코딩 프로세스(500)의 예시적인 실시예를 도시한다. 이 예에서는 도 9와 관련하여 위에서 사용된 이웃 및 이웃 구성 넘버링의 정의를 가정한다. 이 예에서는 또한 각 이웃 구성에 전용 확률 분포가 있다고 가정하며, 이는 64 개의 상이한 확률 분포가 있음을 의미한다. 현재 노드(502)는 인코딩될 점유 패턴(504)을 갖는다. 확률 분포는 현재 노드(502)에 대한 이웃 노드에 기초하여 선택된다. 즉, [0, 63]의 이웃 구성 NC을 찾아 관련 확률 분포를 선택하는 데 사용한다.
일부 실시예에서, 하나 이상의 이웃 구성이 패턴의 유사성에 기초하여 동일한 확률 분포를 사용하도록 이웃 구성이 그룹화될 수 있음을 이해할 것이다. 일부 실시예에서, 프로세스는 분포의 맥락화(선택)를 위해 이웃의 상이한 배열을 사용할 수 있다. 세 개의 축 모두에서 대각선으로 인접한 8 개의 이웃 또는 두 개의 축에서 대각선으로 인접한 12 개의 이웃과 같은 추가 이웃이 추가될 수 있다. 예를 들어, 깊이 우선 스캔에서 추가 종속성을 도입하는 이웃을 사용하는 것을 방지하거나, 대형 트리에 대한 코덱 상태를 줄이기 위해 특정 축에 대한 종속성만 도입하는 것과 같이 특정 이웃을 피하는 실시예가 또한 사용될 수 있다.
이 예에서, NC = 0의 경우는 특정 방식으로 처리된다. 점유된 이웃이 없다면, 현재 노드(502)가 격리되었음을 나타낼 수 있다. 따라서, 프로세스(500)는 현재 노드(502)에 대한 자식 노드 중 얼마나 많은 자식 노드가 점유되어 있는지 추가로 점검한다. 하나의 자식 노드만 점유된 경우, 즉 점유 넘버(NumberOccupied; NO)가 1과 같으면, 단일 자식 노드가 점유되었음을 나타내는 플래그가 인코딩되고, 그 노드에 대한 인덱스는 3 비트를 사용하여 코딩된다. 하나 이상의 자식 노드가 점유된 경우, 프로세스(500)는 점유 패턴을 코딩하기 위해 NC = 0 확률 분포를 사용한다.
이제 도 13을 참조하며, 도 13은 인코딩된 포인트 클라우드 데이터의 비트 스트림을 디코딩하기 위한 하나의 예시적인 방법(600)을 흐름도 형태로 도시한다.
동작(602)에서, 디코더는 현재 노드 근처의 하나 이상의 노드로부터의 점유 정보에 기초하여 확률 분포 중 하나를 선택한다. 위에서 설명된 바와 같이, 점유 정보는 부모 노드에서 현재 노드까지의 부모 패턴, 즉 현재 노드와 그 형제의 점유일 수 있거나, 일부 형제 노드를 포함할 수 있는 현재 노드에 대한 이웃 노드의 점유일 수 있다. 다른 점유 정보 또는 추가 점유 정보가 일부 구현에서 사용될 수 있다.
확률 분포가 선택되면, 동작(604)에서, 디코더는 선택된 확률 분포를 사용하여 비트 스트림의 일부를 엔트로피 디코딩하여 현재 노드에 대한 점유 패턴을 재구성한다. 점유 패턴은 인코딩된 포인트 클라우드 데이터를 재구성하기 위해 트리를 재구성할 때 디코더에 의해 사용된다. 포인트 클라우드 데이터가 디코딩되면, 검토, 세분화/분류하거나 또는 기타 애플리케이션과 같은 사용을 위해 디코더로부터 출력될 수 있다.
동작(606)에서, 디코더는 재구성된 점유 패턴에 기초하여 확률 분포를 업데이트하고, 디코딩할 추가 노드가 있으면, 버퍼의 다음 노드로 이동하고 동작(602)으로 돌아간다.
위에서 설명된 방법의 예시적인 구현은 코딩 복잡성을 무시할 수 있는 정도로 증가시키면서 압축 개선을 제공하는 것으로 입증되었다. 이웃 기반 선택은 계산 복잡성과 메모리 사용량이 더 크지만 부모 패턴 기반 선택보다 더 양호한 압축 성능을 보여준다. 일부 테스트에서, MPEG 포인트 클라우드 테스트 모델에 대한 포인트 당 비트의 상대적 개선은 4 내지 20 %이다. 테스트 데이터를 사용하여 도달한 분포에 기초하여 확률 분포를 초기화하면 균일한 분포로 초기화하는 것에 비해 성능이 향상된다는 점이 주목되었다.
위의 예 중 일부는 점유 패턴을 시그널링하기 위해 비이진 코더를 사용하는 트리 코딩 프로세스를 기반으로 한다. 이진 엔트로피 코더를 사용하기 위한 새로운 개발이 아래에 추가로 제시되어 있다.
이웃 기반 확률 분포 선택에 대한 한 가지 변형에서, 분포의 수는 이웃의 대칭을 사용하여 줄일 수 있다. 이웃을 치환하거나 패턴 분포를 치환함으로써, 대칭 선을 갖는 구조적으로 유사한 구성은 동일한 분포를 재사용할 수 있다. 즉, 동일한 패턴 분포를 사용할 수 있는 이웃 구성을 클래스로 그룹화할 수 있다. 하나 이상의 이웃 구성을 포함하는 클래스는 이웃 구성 중 하나가 이러한 다른 이웃 구성의 반사 또는 치환을 통해 다른 이웃 구성을 효과적으로 포함한다는 점에서 본 명세서에서 "이웃 구성"으로 지칭될 수 있다.
예를 들어, 8 개의 코너 패턴 NC ∈ [21, 22, 25, 26, 37, 38, 41, 42]을 고려하며, 각각은 코너 이웃 패턴의 대칭을 나타낸다. 이러한 NC 값은 노드의 특정하지만 상이한 패턴과 잘 연관되어 있을 가능성이 있다. 또한, 이러한 연관 패턴은 이웃 패턴과 동일한 대칭을 따를 가능성이 있다. 예를 들어, 단일 분포를 재사용하여 해당 분포의 확률을 치환하는 방식으로 NC의 여러 사례를 나타내는 방법이 구현될 수 있다.
인코더가 자식 노드의 점유에 기초하여 노드의 패턴 넘버를 도출한다. 인코더는 이웃 구성에 따라 분포 및 치환 함수를 선택한다. 인코더는 치환 함수에 따라 분포 내에 포함된 확률을 재정렬 한 다음 치환된 분포를 사용하여 패턴 넘버를 산술적으로 인코딩한다. 산술 인코더에 의한 치환된 분포의 확률에 대한 업데이트는 역 치환 함수를 통해 원래 분포로 다시 매핑된다.
대응하는 디코더가 먼저 이웃 구성에 따라 동일한 분포 및 치환 함수를 선택한다. 치환된 분포는 인코더와 동일한 방식으로 생성되며, 치환된 분포는 패턴 넘버를 엔트로피 디코딩하기 위해 산술 디코더에 의해 사용된다. 그런 다음, 패턴 넘버를 구성하는 비트는 각각 대응하는 자식에게 할당된다.
분포 자체의 데이터를 재정렬하지 않고 오히려 간접 레벨을 도입하고 분포에서 주어진 인덱스의 룩업을 치환하는 치환 함수를 사용하여 동일한 치환을 달성할 수 있다는 점에 유의해야 한다.
대안적인 실시예는 분포보다는 패턴 자체의 치환을 고려하여, 엔트로피 인코딩/디코딩 이전 또는 이후에 각각 셔플링을 허용한다. 이러한 방법은 비트 와이즈 셔플 동작을 통해 보다 효율적인 구현이 가능할 것이다. 이 경우, 인코더 또는 디코더에 의해 분포의 재정렬이 수행되지 않고, 오히려 인코딩된 패턴 넘버의 계산은 로 수정되며, 여기서 는 i 번째 자식의 점유 상태이며, 는 치환 함수이다. 이러한 하나의 예시적인 치환 함수 는 NC = 22에 대한 분포가 NC = 41에 대한 분포에 사용될 수 있도록 한다. 치환 함수는 를 사용하여 인코딩된 패턴 넘버로부터 자식 노드의 점유 상태를 도출하도록 디코더에 의해 사용될 수 있다.
필요한 치환을 도출하는 방법은 이웃 구성의 회전 대칭을 기반으로 하거나 특정 축을 따른 반사를 기반으로 할 수 있다. 또한, 치환은 예를 들어 대칭에 따라 모든 위치를 치환할 필요는 없으며, 대신 부분 치환이 사용될 수 있다. 예를 들어, NC = 22를 NC = 41로 치환하는 경우, 대칭 축의 위치는 치환되지 않을 수 있으며, 이는 위치 0, 2, 4, 6이 치환되지 않는 매핑 으로 이어진다. 다른 실시예에서, 쌍 1 및 7만이 교환된다.
현재 큐브와 공통 면을 공유하는 6 개의 이웃이 있는 옥트리의 특정 경우에 대해 회전 대칭 및 반사에 기초한 실시예의 예가 이후에 제공된다. 일반성을 잃지 않고, 도 16에 도시된 바와 같이, Z 축은 도면을 보는 방향에 대해 수직으로 확장된다. "위"(각각 "아래")와 같은 이웃의 상대적 위치는 Z 축을 따라 Z 방향이 증가하는(각각 감소하는) 것으로 이해되어야 한다. X 축을 따라 왼쪽/오른쪽에, Y 축을 따라 앞/뒤에 동일한 설명이 적용된다.
도 16은 각각 Z, Y 및 X 축을 따른 3 개의 회전(2102, 2104 및 2106)을 도시한다. 이 세 회전의 각도는 90 도이다. 즉, 각각의 축을 따라 1/4 회전한다.
도 17은 Z 축에 대한 회전(2102)의 한 번 또는 여러 번 반복 하에서 이웃 구성의 불변 클래스를 도시한다. 이 불변은 XY 평면에 속하는 임의의 방향을 따라 포인트 클라우드 지오메트리의 동일한 통계적 행동을 나타낸다. 이것은 특히 XY 평면에 의해 국부적으로 근사화된 지구 표면에서 움직이는 자동차의 사용 사례에 해당된다. 수평 구성은 위 이웃(2202) 및 아래 이웃(2204)의 점유와 독립적으로 4 개 이웃(현재 큐브의 왼쪽, 오른쪽, 앞과 뒤에 위치)의 주어진 점유이다. 4 개의 수평 구성(2206, 2208, 2210 및 2212)은 회전(2102) 하에서 동일한 불변 클래스에 속한다. 유사하게, 2 개의 구성(2214 및 2216)은 동일한 불변 클래스에 속한다. 회전(2102) 하에서 단 6 개의 불변 클래스(클래스의 세트(2218) 하에 그룹화됨)가 있다.
수직 구성은 현재 큐브의 왼쪽, 오른쪽, 앞 및 뒤에 위치한 4 개 이웃의 점유와 독립적으로 2 개 이웃(2202 및 2204)의 주어진 점유이다. 도 18에 도시된 바와 같이 4 개의 가능한 수직 구성이 있다. 결과적으로, Z 축을 따른 회전(2102)에 대한 불변성을 고려한다면, 6x4 = 24 개의 가능한 구성이 있다.
Z 축을 따른 반사(2108)는 도 16에 도시되어 있다. 도 18에 도시된 수직 구성(2302 및 2304)은 반사(2108) 하에서 동일한 불변 클래스에 속한다. 반사(2108) 하에서 3 개의 불변 클래스(클래스 세트(2306) 하에 그룹화됨)가 있다. 반사(2108) 하의 불변은 상향 방향 및 하향 방향이 포인트 클라우드 지오메트리 통계 측면에서 본질적으로 동일하게 행동한다는 것을 의미한다. 도로에서 움직이는 자동차에 대한 정확한 가정이다.
회전(2102)과 반사(2108) 모두 하에서 불변을 가정하면, 두 세트(2218 및 2306)의 곱으로 인해 18 개의 불변 클래스가 있다. 이러한 18 개의 클래스는 도 19에 나타나있다.
2 개의 다른 회전(2104 및 2106) 하에서 추가 불변을 적용하면, 2 개의 구성(2401 및 2402)은 동일한 불변 클래스에 속한다. 또한, 2 개의 구성(2411 및 2412), 2 개의 구성(2421 및 2422), 3 개의 구성(2431, 2432 및 2433), 2 개의 구성(2441 및 2442), 2 개의 구성(2451 및 2452), 및 마지막으로 2 개의 구성(2461 및 2462)은 동일 클래스에 속한다. 결과적으로, 3 개의 회전(2102, 2104 및 2106) 및 반사(2108) 하에서 불변은 도 20에 도시된 바와 같이 10 개의 불변 클래스로 이어진다.
위에 제공된 예에서, 3 개의 회전 및 반사 하의 불변성을 가정하거나 또는 가정하지 않는 경우, 유효 이웃 구성 수, 즉 64 개의 이웃 구성이 그룹화될 수 있는 클래스 수는 64, 24, 18 또는 10이다.
엔트로피 코딩 이전에, 패턴은 이웃 구성이 불변 클래스 중 하나에 속하기 때문에, 동일한 변환, 즉 회전 및 반사를 겪는다. 이것은 불변 이웃 구성과 코딩된 패턴 간의 통계적 일관성을 보존한다.
또한 트리를 순회하는 동안 자식 노드는 이전에 방문한 동일한 트리 깊이에서 특정 이웃 노드를 가질 것이며 인과적으로 종속성으로 사용될 수 있음을 이해할 것이다. 이러한 동일 레벨 이웃의 경우, 부모의 공동 배치된 이웃을 참조하는 대신, 동일 레벨 이웃을 사용할 수 있다. 동일 레벨 이웃은 부모 치수의 절반이기 때문에, 하나의 구성은 직접 인접한 4 개의 이웃 자식 노드(즉, 현재 노드와 면을 공유하는 4 개) 중 하나가 점유된 경우 이웃이 점유된 것으로 간주한다.
이진 코딩을 사용한 트리 점유 패턴의 엔트로피 코딩
트리 점유를 코딩하기 위해 이웃 점유 정보를 사용하는 위에 설명된 기술은 유럽 특허 출원 제 18305037.6 호에 자세히 설명되어 있다. 설명된 실시예는 이웃 점유 정보에 기초하여 패턴 분포가 선택되는 경우, 점유 패턴의 비이진 엔트로피 코딩을 사용하는 데 초점을 맞춘다. 그러나, 경우에 따라, 이진 코더를 사용하는 것이 하드웨어 구현 측면에서 더 효율적일 수 있다. 더욱이, 많은 확률에 대한 즉각적인 업데이트는 산술 코더의 핵심 내에서 빠른 액세스 메모리와 계산이 필요할 수 있다. 따라서, 이진 산술 코더를 사용하여 점유 패턴을 엔트로피 인코딩하는 방법 및 장치를 찾는 것이 유리할 수 있다. 압축 성능을 크게 저하시키지 않고 추적할 컨텍스트 수가 압도적으로 많아지지 않도록 보호하면서 수행될 수 있다면, 이진 코더를 사용하는 것이 유리할 것이다.
비이진 코더 대신 이진 코더 사용을 엔트로피 공식에 반영한다:
여기서 X = (X1, X2)는 코딩될 비이진 정보이고, Y는 코딩을 위한 컨텍스트, 즉 이웃 구성 또는 선택된 패턴 분포이다. X의 비이진 코딩을 이진 코딩으로 변환하기 위해, 정보 (X1, X2)는 엔트로피를 증가시키지 않으면서 별도로 코딩될 수 있는 정보 X1 및 X2로 분할된다. 이렇게 하기 위해, 둘 중 하나를 다른 하나에 따라, 여기서는 X2를 X1에 따라 코딩해야 한다. 이것은 X의 n 비트 정보로 확장될 수 있다. 예를 들어, n = 3인 경우:
점유 패턴, 즉, 비트 시퀀스 X가 길어질수록, 시퀀스의 나중 비트를 코딩하기 위해 더 많은 조건이 있음을 이해할 것이다. 이진 코더(예를 들어, CABAC)의 경우, 이는 추적 및 관리할 컨텍스트 수가 크게 증가함을 의미한다. 옥트리를 예로 사용하면, 여기서 점유 패턴은 8 비트 시퀀스 b = b0…b7이며, 비트 시퀀스는 8 개의 이진 정보 비트 b0…b7로 분할될 수 있다. 코딩은 컨텍스트를 결정하기 위한 이웃 구성 N(또는 NC)을 사용할 수 있다. 위에서 설명된 바와 같이, 이웃 구성을 불변 클래스로 그룹화하여 이웃 구성을 10 개의 유효 이웃 구성으로 줄일 수 있다고 가정하면, N은 {0, 1, 2,…, 9}에 속하는 정수이다. 간단히 말해서, "불변 클래스 이웃 구성"은 본 명세서에서 때때로 간단히 "이웃 구성"으로 지칭될 수 있지만, 이러한 줄어든 이웃 구성 수는 불변에 기초한 클래스 기반 이웃 구성 그룹화에 기초하여 실현될 수 있음을 이해할 것이다.
도 21은 이진 엔트로피 코딩을 위해 8 비트 패턴 또는 시퀀스를 8 개의 개별 비트로 분할하는 것을 도시한다. 시퀀스의 제 1 비트는 이웃 구성에 기초하여 인코딩되므로 총 10 개의 컨텍스트를 사용할 수 있다. 시퀀스의 다음 비트는 이웃 구성 및 이전에 인코딩된 비트, 즉 비트 b0에 기초하여 인코딩된다. 여기에는 총 20 개의 사용 가능한 컨텍스트가 포함되며, 이는 N에서의 10 개와 b0에서의 2 개의 곱으로 획득된다. 최종 비트 b7은 1280 개의 사용 가능한 컨텍스트에서 선택된 컨텍스트를 사용하여 엔트로피 인코딩되며, 이는 N에서의 10 개와 이전에 인코딩된 비트 b0,…, b6에 의해 제공된 부분 패턴에서의 128 개의 곱으로 획득된다. 즉, 각 비트에 대해, 컨텍스트 수(즉, 조건/종속성의 가능한 조합)는 정의된 이웃 구성 수(이 예에서는 64 개의 이웃 구성을 클래스로 그룹화한 것에 기초하여 10 개)와 순서 시퀀스의 n-1 개의 이전에 인코딩된 비트에서 가능한 부분 패턴 수(2n-1로 제공됨)의 곱이다.
결과적으로, 점유 패턴의 이진 코딩과 관련하여 유지해야 할 컨텍스트는 총 2550 개이다. 이는 추적할 컨텍스트 수가 지나치게 많으며, 상대적 희소성은 특히 시퀀스의 나중 비트의 경우 컨텍스트 희석으로 인해 성능 저하를 유발할 수 있다.
따라서, 일 양태에서, 본 출원은 이진 코더를 사용하여 점유 패턴의 적어도 일부를 엔트로피 코딩하기 위해 사용 가능한 더 작은 세트의 컨텍스트를 실현하기 위해, 컨텍스트 세트가 축소될 수 있는지 여부를 결정하고, 만약 그렇다면, 컨텍스트 축소 동작을 적용하는 인코더 및 디코더를 개시한다. 또 다른 양태에서, 본 출원은 또한 고정된 수의 컨텍스트로부터 유효 컨텍스트 선택을 수행하기 위해 동일한 컨텍스트 축소 동작을 사용하여 하나 이상의 상태 축소 라운드를 적용하는 인코더 및 디코더를 개시한다. 일부 구현에서, 컨텍스트 축소는 알고리즘 조건 및/또는 컨텍스트의 룩업 테이블을 생성할 때 선험적으로 적용되며, 그런 다음 적합한 컨텍스트를 선택할 때 인코더 또는 디코더에 의해 사용된다. 축소는 인코더 및 디코더가 어떤 룩업 테이블에서 선택할지를 결정하는 방법 또는 선택된 컨텍스트를 획득하기 위해 해당 룩업 테이블을 인덱싱/선택하는 방법을 평가하는 테스트 가능한 조건을 기반으로 한다.
이제 도 22를 참조하며, 도 22는 이진 코딩을 사용하여 트리 기반 포인트 클라우드 코더에서 점유 패턴을 코딩하기 위한 하나의 예시적인 방법(3000)을 흐름도 형태로 도시한다. 방법(3000)은 인코더 또는 디코더에 의해 구현될 수 있다. 인코더의 경우, 코딩 동작은 인코딩이고, 디코더의 경우, 코딩 동작은 디코딩이다. 인코딩 및 디코딩은 컨텍스트 기반 엔트로피 인코딩 및 디코딩이다.
예시적인 방법(3000)은 특정 노드/볼륨에 대한 점유 패턴, 즉 비트 시퀀스를 엔트로피 코딩하기 위한 것이다. 점유 패턴은 노드/볼륨의 자식 노드(서브 볼륨)의 점유 상태를 시그널링한다. 옥트리의 경우, 8 개의 자식 노드/서브 볼륨이 있다. 동작(3002)에서, 이웃 구성을 결정한다. 이웃 구성은 점유 패턴이 코딩될 볼륨에 이웃하는 하나 이상의 볼륨의 점유 상태이다. 위에서 논의한 바와 같이, 이웃 구성을 결정하기 위한 다양한 구현이 가능하다. 일부 예에서, 10 개의 이웃 구성이 있고, 현재 볼륨에 대한 이웃 구성은 현재 볼륨과 면을 공유하는 6 개의 볼륨의 점유에 기초하여 식별된다.
동작(3004)에서, 현재 볼륨의 자식 노드에 대한 인덱스 i를 0으로 설정한다. 그런 다음, 동작(3006)에서, 컨텍스트 축소가 가능한지 여부에 대한 평가가 이루어진다. 상이한 컨텍스트 축소 동작이 아래에서 자세히 설명된다. 컨텍스트 축소가 가능한지 여부에 대한 평가는 예를 들어 비트 시퀀스에서 코딩되고 있는 비트(예를 들어, 인덱스 값)에 기초할 수 있다. 경우에 따라, 컨텍스트 축소는 시퀀스의 나중 비트에 대해 가능할 수 있지만 처음 몇 비트에 대해서는 불가능하다. 컨텍스트 축소가 가능한지 여부에 대한 평가는 예를 들어 특정 이웃 구성이 단순화를 허용할 수 있으므로 이웃 구성에 기초할 수 있다. 일부 구현에서 컨텍스트 축소가 가능한지 여부를 평가하는 데 추가 요소가 사용될 수 있다. 예를 들어, 이진 코더가 비트를 코딩하는 데 사용할 수 있는 최대 컨텍스트 수로 상한 Bo이 제공될 수 있으며, 비트를 코딩하는 초기 컨텍스트 수가 Bo보다 크면, 컨텍스트 축소가 적용되어(그렇지 않으면, 적용되지 않음) 축소 후 컨텍스트 수는 최대 Bo가 된다. 이러한 경계 Bo는 인코더 및/또는 디코더 사양에 정의될 수 있어 Bo 개의 컨텍스트를 처리할 수 있는 소프트웨어 또는 하드웨어 구현이 컨텍스트 수 측면에서 오버플로를 생성하지 않고 항상 포인트 클라우드를 인코딩 및/또는 디코딩할 수 있도록 보장한다. 경계 Bo를 미리 알면 이진 엔트로피 코더에 의해 유발되는 복잡성과 메모리 풋 프린트를 예상할 수 있으므로 하드웨어 설계를 용이하게 한다. Bo의 일반적인 값은 10에서 수백까지이다.
컨텍스트 축소가 가능한 것으로 결정되면, 동작(3008)에서, 컨텍스트 축소 동작을 적용한다. 컨텍스트 축소 동작은 사용 가능한 컨텍스트 세트에서의 사용 가능한 컨텍스트 수를 더 적은 수의 전체 컨텍스트를 포함하는 더 작은 컨텍스트 세트로 줄인다. 컨텍스트가 비트 시퀀스의 이전에 코딩된 비트의 부분 패턴에 의존할 수 있기 때문에, 사용 가능한 컨텍스트의 수는 부분적으로 시퀀스의 비트 위치, 즉 인덱스에 의존할 수 있다는 것을 기억할 것이다. 일부 구현에서, 축소 전에, 세트에서의 사용 가능한 컨텍스트의 수는 이전에 코딩된 비트로 가능한 부분 패턴의 수와 이웃 구성의 수의 곱에 기초할 수 있다. 인덱스 i의 비트에 대해, i가 0에서 n까지의 범위인 경우, 부분 패턴의 수는 2i로 주어질 수 있다.
위에서 언급한 바와 같이, 일부 구현에서, 컨텍스트 축소 동작은 코딩 전에 수행되며, 결과적으로 축소된 컨텍스트 세트는 코딩 동작 동안 인코더 및 디코더에 의해 사용 가능한 컨텍스트 세트이다. 코딩 동안 축소된 컨텍스트 세트의 사용 및/또는 선택은 축소된 세트의 사용에 선행하는 하나 이상의 조건의 평가에 기초할 수 있으며, 이러한 조건은 컨텍스트의 수가 축소될 수 있는지 여부를 결정하기 위한 동작(3006)에서 평가된 조건에 대응한다. 예를 들어, 축소된 컨텍스트 세트의 사용을 허용하는 특정 이웃 구성의 경우, 인코더 및/또는 디코더는 먼저 이웃 구성 조건이 충족되는지 여부를 결정하고, 그렇다면, 대응하는 축소된 컨텍스트 세트를 사용할 수 있다.
동작(3010)에서, 비트 bi에 대한 컨텍스트가 결정되며, 즉, 이웃 구성 및 비트 시퀀스의 이전에 코딩된 비트의 부분 패턴에 기초하여 사용 가능한 컨텍스트 세트(또는 있다면, 축소된 세트)로부터 선택된다. 그런 다음, 동작(3012)에서, 현재 비트는 선택된 컨텍스트를 사용하여 이진 코더에 의해 엔트로피 인코딩된다.
동작(3014)에서, 인덱스 i가 현재 코딩된 비트가 시퀀스의 마지막 비트임을 나타내면, 즉 i가 imax와 같음을 나타내면, 코딩 프로세스는 다음 노드로 진행한다. 그렇지 않으면, 인덱스 i는 동작(3016)에서 증가하고 프로세스는 동작(3006)으로 돌아간다.
일부 구현에서, 컨텍스트 선택은 이웃 구성에 의존하지 않을 수 있음을 이해할 것이다. 경우에 따라, 존재한다면, 시퀀스의 이전에 코딩된 비트의 부분 패턴에만 의존할 수 있다.
예시적인 인코더(3100)의 일부의 단순화된 블록 다이어그램이 도 23에 도시되어 있다. 이 예시에서, 점유 패턴(3102)은 대응하는 볼륨이 자식 노드로 분할되기 때문에 획득되고 포인트 클라우드의 지오메트리를 보유하는 FIFO 버퍼(3104)를 통해 순환됨을 이해할 것이다. 패턴의 각 비트에 대해 하나씩 이진 코더(3106)를 사용하여, 점유 패턴(3102)의 코딩은 이진 코더(3106)의 캐스케이드를 포함하는 것으로 도시된다. 이진 코더(3106) 중 적어도 일부 사이에는 사용 가능한 컨텍스트를 사용 가능한 더 작은 세트의 컨텍스트로 축소시키도록 동작하는 컨텍스트 축소 동작(3108)이 있다.
도 23은 일련의 이진 코더(3106)를 도시하고 있지만, 일부 구현에서는 오직 하나의 이진 코더만 사용된다. 두 개 이상의 코더가 사용되는 경우, 코딩은 (부분적으로) 병렬화될 수 있다. 비트 시퀀스의 선행 비트에 대한 1 비트의 컨텍스트 의존성을 고려하면, 패턴 코딩은 반드시 완전 병렬화될 수는 없지만 패턴에 대해 캐스케이딩 이진 코더를 사용하여 파이프라이닝을 개선할 수 있어 어느 정도의 병렬화 및 속도 향상을 달성할 수 있다.
컨텍스트 축소 동작
위의 예는 사용 가능한 컨텍스트 세트를 사용 가능한 더 작은 컨텍스트 세트로 축소시키기 위해 코딩 프로세스가 점유 패턴의 적어도 하나의 비트에 대한 컨텍스트 축소 동작을 포함하는 것을 제안한다. 이러한 의미에서, "컨텍스트 축소 동작"은 특정 비트 bi의 상황에서 중복 또는 과잉으로 간주될 수 있는 컨텍스트를 식별하고 통합하는 것으로 이해될 수 있다. 위에서 언급한 바와 같이, 축소된 컨텍스트 세트는 코딩에 앞서 결정될 수 있고 인코더 및 디코더에 제공될 수 있으며, 인코더 및 디코더는 컨텍스트 세트를 줄이기 위해 아래에 설명된 동일한 조건에 기초하여 축소된 컨텍스트 세트를 사용할지 여부를 결정한다.
스크리닝/차폐를 통한 이웃 구성 축소
제 1 예시적인 컨텍스트 축소 동작은 스크리닝/차폐에 기초하여 이웃 구성의 수를 줄이는 것을 포함한다. 원칙적으로, 이웃 볼륨이 현재 볼륨 또는 서브 볼륨이 점유될 가능성이 있는지 여부를 나타내는 데 도움이 되는 것에 기초하여, 이웃 구성은 이웃 볼륨의 점유 상태를 컨텍스트 선택 프로세스에 반영한다. 현재 볼륨의 서브 볼륨과 관련된 비트가 디코딩되면, 이는 컨텍스트 선택에도 반영된다. 그러나 근처의 서브 볼륨으로부터의 정보는 현재 서브 볼륨에서 서브 볼륨의 다른 쪽에 위치한 이웃 볼륨의 점유 정보보다 더 중요하고 더 유익할 수 있다. 이러한 의미에서, 이전에 디코딩된 비트는 이웃 볼륨을 "스크리닝"하거나 "차폐"하는 서브 볼륨과 연관된다. 이는 이러한 상황에서 현재 서브 볼륨과 이웃 볼륨 사이의 서브 볼륨의 점유 상태에 해당 점유 상태의 관련성이 포함되기 때문에 이웃 볼륨의 점유는 무시될 수 있어, 이에 의해 이웃 구성의 수를 줄일 수 있음을 의미할 수 있다.
이제 도 24를 참조하며, 도 24는 이웃 스크리닝에 기초한 예시적인 컨텍스트 축소 동작을 도식적으로 도시한다. 이 예에는 볼륨(3200)의 점유 패턴 코딩이 포함된다. 점유 패턴은 볼륨(3200) 내의 8 개의 서브 볼륨의 점유 상태를 시그널링한다. 이 예에서, 볼륨(3200)의 상부 절반에 있는 4 개의 서브 볼륨이 코딩되었으므로 이들의 점유 상태는 공지되어 있다. 코딩되는 점유 패턴의 비트는 이전에 코딩된 4 개의 서브 볼륨 아래에 있는, 볼륨(3200)의 하부 절반에 위치한 제 5 서브 볼륨(3204)과 연관된다.
이 예의 코딩은 이웃 구성에 기초하여 컨텍스트를 결정하는 것을 포함한다. 10 개의 이웃 구성(3202)이 도시되어 있다. 코딩될 제 5 서브 볼륨(3204)을 포함하는 볼륨(3200)은 밝은 회색으로 도시되고 참조 번호(3200)로 표시된다. 이웃 구성(3202)은 볼륨(3200)에 인접하고 면을 공유하는 볼륨의 점유 상태에 기초한다. 이웃 볼륨은 상부 이웃 볼륨(3206)을 포함한다.
이 예에서, 이웃 구성의 수는 적어도 일부 구성에서 상부 이웃 볼륨(3206)을 무시함으로써 10 개에서 7 개로 줄어들 수 있다. 도 24에 도시된 바와 같이, 상부 이웃 볼륨(3206)이 도시된 4 개의 구성 중 3 개는 상부 이웃 볼륨(3206)을 고려하지 않는 등가 구성에 포함될 수 있으며, 이에 따라 이웃 구성의 수를 총 7 개로 줄일 수 있다. 6-볼륨 구성을 통합할 수 있는 기존 5-볼륨 이웃 구성이 없기 때문에 6 개의 이웃 볼륨을 모두 표시하는 구성을 유지하는 것이 여전히 유리할 수 있으며, 이는 상부 이웃 볼륨이 제거되더라도 새로운 5 요소 이웃 구성이 생기거나 컨텍스트의 전체적인 축소가 발생하지 않음을 의미한다.
이 예에서, 제 5 서브 볼륨(3204)과 연관된 점유 비트의 코딩을 위한 컨텍스트 결정이 그 바로 위에 있는 4 개의 이전에 코딩된 서브 볼륨의 점유 상태를 고려할 것이기 때문에 상부 이웃 볼륨(3206)은 이웃 구성에서 제거될 수 있으며, 4 개의 이전에 코딩된 서브 볼륨의 점유 상태는 더 먼 상부 이웃 볼륨(3206)의 점유 상태보다 제 5 서브 볼륨에 대한 점유 가능성 및 방향성을 더 양호하게 표시할 수 있다.
제 5 서브 볼륨(3204)에 대응하는 점유 비트를 코딩할 때, 이전에 코딩된 서브 볼륨에 의해 상부 이웃 볼륨(3206)이 스크리닝되거나 차폐되는 위의 예는 단지 하나의 예일 뿐이다. 볼륨(3200) 내의 코딩 순서에 따라, 다수의 다른 가능한 스크리닝/차폐 상황이 실현되고 사용되어 사용 가능한 이웃 구성을 줄일 수 있다.
이제 도 25를 참조하며, 도 25는 제 2 예시적인 스크리닝/차폐를 도시한다. 이 예에서, 볼륨(3200)의 점유 패턴은 거의 완전히 코딩된다. 코딩될 서브 볼륨은 제 8 서브 볼륨이며, 뒤쪽 하부 모서리(표시되지 않음)에 있어 도면에서는 숨겨져 있다. 이 경우, 7 개의 다른 서브 볼륨의 점유 상태가 모두 코딩되었다. 특히, 상부를 따라(따라서 이웃 구성이 총 7 개로 축소) 그리고 오른쪽과 앞쪽을 따라 서브 볼륨의 점유 상태가 코딩되었다. 따라서, 상부 이웃 볼륨을 스크리닝하는 것 외에도, 이전에 코딩된 점유 비트가 있는 서브 볼륨은 전방 이웃 볼륨(3210) 및 우측 이웃 볼륨(3212)을 차폐한다. 이렇게 하면 도시된 바와 같이 이웃 구성을 총 7 개에서 총 5 개로 줄일 수 있다.
앞서 말한 두 가지 차폐 예는 예시적이며, 경우에 따라 상이한 차폐 상황을 설명하기 위해 상이한 구성이 통합될 수 있음을 이해할 것이다. 이전에 코딩된 서브 볼륨에 의한 차폐/스크리닝에 기초한 컨텍스트 축소 동작은 일반적이며 이 두 가지 예로 제한되지 않지만, 코딩될 제 1 서브 볼륨의 경우, 임의의 차폐/스크리닝이 존재하기 위해서는 근처 서브 볼륨과 연관된 적어도 하나의 이전에 코딩된 점유 비트가 있어야 하기 때문에, 이것이 적용될 수 없음을 이해할 것이다.
이웃 구성 축소를 정당화하는 차폐/스크리닝의 정도는 상이한 구현에서 상이할 수 있음을 또한 이해할 것이다. 위의 두 가지 예에서, 이웃 볼륨이 차폐/스크리닝된 것으로 간주되어 이웃 구성에서 제거되기 전에, 이웃 볼륨과 면을 공유하는 4 개의 서브 볼륨은 모두 이전에 코딩되었다. 다른 예에서, 부분적 차폐/스크리닝이 충분할 수 있으며, 예를 들어, 면을 공유하는 1 내지 3 개의 이전에 코딩된 서브 볼륨이 있을 수 있다.
특수 사례 처리를 통한 컨텍스트 축소
유용한 정보의 손실 없이 컨텍스트 축소가 발생할 수 있는 특정 사례가 있다. 위에서 설명된 예시적인 컨텍스트 결정 프로세스에서, 점유 비트를 코딩하기 위한 컨텍스트는 이웃 구성 즉 현재 볼륨에 이웃한 볼륨의 점유 패턴에 기초하고, 현재 볼륨 내의 이전에 코딩된 서브 볼륨의 점유에 기인하는 부분 패턴에 기초한다. 후자의 조건은 점유 패턴 비트 시퀀스의 제 8 비트에 대해 추적할 27 = 128 개의 컨텍스트를 생성한다. 이웃 구성이 총 5 개로 줄어들더라도, 추적할 컨텍스트는 640 개이다.
컨텍스트의 수는 비트 시퀀스의 이전에 코딩된 비트에 순서가 있고 컨텍스트를 평가할 때 그 순서가 관련되어 있다는 사실을 기반으로 한다. 그러나, 경우에 따라, 순서에는 유용한 정보가 포함되지 않을 수 있다. 예를 들어, 이웃 구성이 비어 있는 경우, 즉, N10 = 0이면, 볼륨 내의 포인트는 밀도가 희박한 것으로 추정될 수 있으며, 이는 형제 서브 볼륨에서 상이한 점유 패턴에 대해 별도의 컨텍스트를 추적하는 것을 정당화할 만큼 강력한 방향성이 없음을 의미한다. 비어 있는 이웃의 경우, 포인트 클라우드에 대한 국부 방향이나 토폴로지가 없으며, 이는 비트 시퀀스의 이전에 코딩된 비트에 기초하는 2j 조건을 j + 1 조건으로 줄일 수 있음을 의미한다. 즉, 비트 시퀀스의 비트 중 하나를 코딩하는 컨텍스트는 이전에 코딩된 비트를 기반으로 하지만, 순서가 지정된 패턴이 아니라 합계에만 기반한다. 즉, 이 특수 사례의 엔트로피 표현은 다음과 같이 표현될 수 있다.
일부 구현에서, 전체 이웃 구성에 대해 유사한 관찰이 이루어질 수 있다. 일부 예에서, 전체 이웃 구성은 방향성이 없으며, 이는 컨텍스트를 결정할 때 이전에 코딩된 비트의 순서를 고려할 필요가 없음을 의미한다. 일부 예에서, 이 컨텍스트 축소 동작은 시퀀스의 나중 비트 중 일부와 같은 비트 시퀀스의 비트 중 일부에만 적용될 수 있다. 일부 경우에, 이러한 컨텍스트 축소 동작을 나중 비트에 적용하는 것은 이전에 코딩된 서브 볼륨과 관련된 이전 비트도 모두 점유되었다는 결정을 조건으로 할 수 있다.
통계 기반 컨텍스트 축소
통계 분석은 대략 동일한 통계적 행동으로 이어지는지 것들을 결정하고 그런 다음 그것들을 결합하여 컨텍스트를 줄이는 데 사용될 수 있다. 이러한 분석은 축소된 컨텍스트 세트를 개발하기 위해 테스트 데이터를 사용하여 선험적으로 수행될 수 있고, 그런 다음 인코더와 디코더 모두에 제공된다. 경우에 따라, 특정 포인트 클라우드 데이터에 대한 사용자 지정 축소된 컨텍스트 세트를 개발하기 위해 현재 포인트 클라우드에 대해 2 패스 코딩을 사용하여 분석을 수행할 수 있다. 그러한 일부 경우에, 비축소된 컨텍스트 세트로부터 사용자 지정 축소된 컨텍스트 세트로의 매핑은 비트 스트림으로 코딩된 전용 구문을 사용하여 디코더에 시그널링될 수 있다.
"거리"라는 개념을 통해 두 가지 컨텍스트를 비교할 수 있다. 제 1 컨텍스트 c는 비트 b가 0과 같은 확률 p를 갖고, 제 2 컨텍스트 c'는 비트 b'가 0과 같을 확률 p'를 갖는다. c와 c'사이의 거리는 다음과 같이 주어진다.
이 유사성(거리) 측정을 사용하여, 컨텍스트는 다음과 같이 프로세스에서 그룹화될 수 있다.
1. M1 컨텍스트로 시작하고, 임계 값 레벨 ε을 고정함
2. 주어진 컨텍스트에 대해, 주어진 컨텍스트로부터의 거리가 임계 값 레벨 ε보다 낮은 모든 컨텍스트를 클래스로 재그룹화함
3. 모두가 클래스에 들어갈 때까지 재그룹화되지 않은 모든 컨텍스트에 대해 단계 (2)를 반복함
4. M2 개의 클래스에 1부터 M2까지 라벨링함. 이것은 M1 ≥ M2인 경우, [1, 2,…, M1] → [1, 2,…, M2]를 매핑하는 억지 기법 축소 함수를 생성한다.
컨텍스트 세트를 더 작은 컨텍스트 세트로 매핑하기 위한 억지 기법 축소 함수는 코딩 동안 컨텍스트 축소 동작으로서 인코더/디코더에 의해 적용될 메모리에 저장될 수 있다. 매핑은 룩업 테이블 또는 기타 데이터 구조로 저장될 수 있다. 예를 들어, 억지 기법 축소 함수는 비트 시퀀스(패턴)의 나중 비트에만 적용될 수 있다.
컨텍스트 축소 동작의 조합 및 하위 조합
세 가지 예시적인 컨텍스트 축소 동작이 위에 설명되어 있다. 이들 각각은 일부 구현에서 개별적으로 그리고 독립적으로 적용될 수 있다. 일부 구현에서는 둘 이상이 결합될 수 있다. 추가적인 컨텍스트 축소 동작은 단독으로 또는 위에서 설명된 컨텍스트 축소 동작 중 임의의 하나 이상과 조합하여 구현될 수 있다.
도 26은 결합된 컨텍스트 축소를 포함하는 점유 패턴 이진 코딩의 하나의 예시적인 방법(3300)을 흐름도 형태로 도시한다. 방법(3300)은 {0, 1, 2,…, 9}의 10 요소 이웃 구성 N10이 주어지면, 8 비트 이진 패턴 b0, b1,…, b7을 코딩한다. 평가되는 제 1 조건은 이웃 구성이 비어 있는지 여부(즉, N10 = 0)이다. 그렇다면, 비트는 참조 번호(3302)로 표시된 바와 같이 순서를 참조하지 않고 코딩된다. 그렇지 않으면, 비트는 비트 b4까지 정상적으로 코딩되며, 이 시점에서 인코더와 디코더는 억지 기법 컨텍스트 축소 함수 BRi를 적용하기 시작하여 이웃 구성 및 이전에 코딩된 비트의 부분 패턴에 의해 정의된 컨텍스트 세트를 실질적으로 유사한 통계적 결과를 갖는 더 작은 컨텍스트 세트로 매핑함으로써 컨텍스트 수를 줄인다.
이 예에서, 마지막 두 비트 b6 및 b7은 차폐/스크리닝에 기초한, 축소된 이웃 구성을 사용하여 코딩된다.
모든 함수는 컨텍스트 세트의 크기를 줄이기 위해 룩업 테이블(LUT)로 구현될 수 있다. 하나의 실질적인 구현에서, 모든 축소는 축소 함수, 즉 단순히 LUT에서 인수분해되며, 이는 컨텍스트를 입력으로 취하고 축소된 컨텍스트를 출력으로 제공한다. 이 예시적인 실시예에서, 전체 컨텍스트 수는 2550에서 576으로 줄어들었으며, 각 축소 함수 BRi의 출력 크기는 각각 70, 106, 110 및 119이다.
컨텍스트 수가 고정된 시스템에서의 컨텍스트 선택
이전에 설명된 컨텍스트 축소 동작 각각은 정적(고정) 최소 수의 컨텍스트를 갖는 압축 시스템에서 추가로 사용될 수 있다. 이러한 설계에서, 8 비트 이진 패턴의 주어진 심볼에 대해, 심볼을 인코딩하거나 디코딩할 컨텍스트 확률 모델을 결정하기 위해 하나 이상의 축소 동작이 적용된다.
압축 성능에 미치는 영향
10 개의 이웃 구성 및 비이진 코딩을 사용하면 MPEG 테스트 모델의 현재 구현에 비해 포인트 클라우드 코딩에 압축 이득을 제공할 수 있다. 그러나, 위에서 제안한 2550 개의 컨텍스트를 사용하는 캐스케이드 이진 코딩과 10 개의 이웃 구성을 사용하면 압축 효율성이 훨씬 더 개선된다. 컨텍스트를 총 576 개로 줄이기 위해 위에서 상세히 설명된 세 가지 기술을 사용하는 것과 같이 컨텍스트 축소가 사용되는 경우에도, 이진 코딩 압축은 여전히 비이진 코딩을 사용하는 구현보다 약간 낫고 테스트 모델보다 훨씬 낫다. 이 관찰은 상이한 테스트 포인트 클라우드 데이터에 걸쳐 일관된 것으로 나타났다.
이제 도 14를 참조하며, 도 14는 인코더(1100)의 예시적인 실시예의 단순화된 블록 다이어그램을 도시한다. 인코더(1100)는 프로세서(1102), 메모리(1104) 및 인코딩 애플리케이션(1106)을 포함한다. 인코딩 애플리케이션(1106)은 메모리(1104)에 저장되고 실행될 때 프로세서(1102)로 하여금 본 명세서에 설명된 것과 같은 동작을 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수 있다. 예를 들어, 인코딩 애플리케이션(1106)은 본 명세서에 설명된 프로세스에 따라 비트 스트림을 인코딩하고 인코딩된 비트 스트림을 출력할 수 있다. 인코딩 애플리케이션(1106)은 콤팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 비일시적 컴퓨터 판독 가능 매체에 저장될 수 있음을 이해할 것이다. 명령어가 실행될 때, 프로세서(1102)는 설명된 프로세스(들)를 구현하는 특수 목적 프로세서로서 동작하도록 명령어에 지정된 동작 및 기능을 수행한다. 이러한 프로세서는 일부 예에서 "프로세서 회로" 또는 "프로세서 회로부"로 지칭될 수 있다.
또한, 이제 도 15를 참조하며, 도 15는 디코더(1200)의 예시적인 실시예의 단순화된 블록 다이어그램을 도시한다. 디코더(1200)는 프로세서(1202), 메모리(1204) 및 디코딩 애플리케이션(1206)을 포함한다. 디코딩 애플리케이션(1206)은 메모리(1204)에 저장되고 실행될 때 프로세서(1202)로 하여금 본 명세서에 설명된 것과 같은 동작을 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램 또는 애플리케이션을 포함할 수 있다. 디코딩 애플리케이션(1206)은 콤팩트 디스크, 플래시 메모리 장치, 랜덤 액세스 메모리, 하드 드라이브 등과 같은 컴퓨터 판독 가능 매체에 저장될 수 있음을 이해할 것이다. 명령어가 실행될 때, 프로세서(1202)는 설명된 프로세스(들)를 구현하는 특수 목적 프로세서로서 동작하도록 명령어에 지정된 동작 및 기능을 수행한다. 이러한 프로세서는 일부 예에서 "프로세서 회로" 또는 "프로세서 회로부"로 지칭될 수 있다.
본 출원에 따른 디코더 및/또는 인코더는 서버, 적절하게 프로그래밍된 범용 컴퓨터, 머신 비전 시스템 및 모바일 장치를 포함하지만 이에 제한되는 것은 아닌 다수의 컴퓨팅 장치에서 구현될 수 있음을 이해할 것이다. 디코더 또는 인코더는 본 명세서에 설명된 기능을 수행하도록 프로세서 또는 프로세서들을 구성하기 위한 명령어를 포함하는 소프트웨어에 의해 구현될 수 있다. 소프트웨어 명령어는 CD, RAM, ROM, 플래시 메모리 등을 포함하여 임의의 적절한 비일시적 컴퓨터 판독 가능 메모리에 저장될 수 있다.
본 명세서에 설명된 디코더 및/또는 인코더와 인코더 또는 디코더를 구성하기 위해 설명된 방법/프로세스를 구현하는 모듈, 루틴, 프로세스, 스레드 또는 다른 소프트웨어 구성 요소는 표준 컴퓨터 프로그래밍 기술 및 언어를 사용하여 실현될 수 있음을 이해할 것이다. 본 출원은 특정 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 관례, 데이터 구조, 기타 그러한 구현 세부 사항에 제한되지 않는다. 당업자는 설명된 프로세스가 주문형 반도체(application-specific integrated chip; ASIC) 등의 일부로서, 휘발성 또는 비휘발성 메모리에 저장된 컴퓨터 실행 가능 코드의 일부로서 구현될 수 있음을 인식할 것이다.
본 출원은 또한 본 출원에 따른 인코딩 프로세스의 적용을 통해 데이터를 인코딩하는 컴퓨터 판독 가능 신호를 제공한다.
설명된 실시예의 특정 적응 및 수정이 이루어질 수 있다. 따라서, 위에서 논의된 실시예는 제한적인 것이 아니라 예시적인 것으로 간주된다.

Claims (15)

  1. 압축된 포인트 클라우드 데이터의 비트 스트림을 생성하기 위해 포인트 클라우드를 인코딩하는 방법(3000)에 있어서,
    상기 포인트 클라우드는, 부모-자식 관계들을 갖는 복수의 노드들(154, 156)을 갖고 서브 볼륨들(100)로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 상기 포인트 클라우드의 포인트들을 포함하는 트리 구조(150)로 정의되고, 볼륨(3200)의 서브 볼륨들(100)의 점유는 비트 시퀀스(104)를 사용하여 표시되며, 상기 비트 시퀀스(104)의 각각의 비트는 스캔 순서로 상기 볼륨(3200) 내의 각자의 서브 볼륨(100)의 점유를 표시하고, 볼륨(3200)은 복수의 이웃 볼륨들(3206)을 가지며, 상기 이웃 볼륨들(3206)의 점유 패턴은 이웃 구성이고, 상기 방법(3000)은,
    상기 볼륨(3200)의 상기 비트 시퀀스(104)에서의 적어도 하나의 비트에 대해,
    컨텍스트 축소 조건이 충족된다고 결정하는 단계(3006) - 상기 컨텍스트 축소 조건은, 하나 이상의 이전에 코딩된 점유 비트가, 상기 적어도 하나의 비트와 연관된 서브 볼륨(3204)과 상기 복수의 이웃 볼륨들(3206) 중 하나 이상의 이웃 볼륨 사이에 위치된 하나 이상의 각자의 서브 볼륨(100)과 연관된다고 결정하는 것을 포함함 - ;
    상기 컨텍스트 축소 조건이 충족된 경우, 상기 하나 이상의 이전에 코딩된 점유 비트와 연관된 상기 하나 이상의 각자의 서브 볼륨(100)에 의해 차폐된(shielded) 상기 이웃 볼륨들(3206) 중 상기 하나 이상의 이웃 볼륨의 점유 상태와 연관된 컨텍스트를 컨텍스트들의 사용 가능한 세트로부터 제거함으로써, 이웃 구성들의 카운트와 상기 비트 시퀀스(104)에서의 이전에 코딩된 비트들의 수의 곱보다 더 적은 컨텍스트들을 포함하는 축소된 컨텍스트 세트를 선택하는 단계(3008);
    상기 적어도 하나의 비트를 코딩하기 위해, 상기 이웃 볼륨들(3206) 중 적어도 일부의 점유 상태 및 상기 비트 시퀀스(104)의 적어도 하나의 이전에 코딩된 비트에 기초하여 상기 축소된 컨텍스트 세트로부터 컨텍스트를 선택하는 단계(3010); 아니면 상기 적어도 하나의 비트를 코딩하기 위해, 상기 이웃 볼륨들(3206) 중 적어도 일부의 점유 상태 및 상기 비트 시퀀스(104)의 적어도 하나의 이전에 코딩된 비트에 기초하여 상기 컨텍스트들의 사용 가능한 세트로부터 컨텍스트를 선택하는 단계(3010);
    상기 비트 스트림에 대한 인코딩된 데이터를 생성하기 위해 이진 엔트로피 인코더를 사용하여 상기 선택된 컨텍스트에 기초하여 상기 적어도 하나의 비트를 엔트로피 인코딩하는 단계(3012); 및
    상기 선택된 컨텍스트를 업데이트하는 단계
    를 특징으로 하는 것인, 방법.
  2. 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트 스트림을 디코딩하는 방법에 있어서,
    상기 포인트 클라우드는, 부모-자식 관계들을 갖는 복수의 노드들(154, 156)을 갖고 서브 볼륨들(100)로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 상기 포인트 클라우드의 포인트들을 포함하는 트리 구조(150)로 정의되고, 볼륨(3200)의 서브 볼륨들(100)의 점유는 비트 시퀀스(104)를 사용하여 표시되며, 상기 비트 시퀀스(104)의 각각의 비트는 스캔 순서로 상기 볼륨(3200) 내의 각자의 서브 볼륨(100)의 점유를 표시하고, 볼륨(3200)은 복수의 이웃 볼륨들(3206)을 가지며, 상기 이웃 볼륨들(3206)의 점유 패턴은 이웃 구성이고, 상기 방법은,
    상기 볼륨(3200)의 상기 비트 시퀀스(104)에서의 적어도 하나의 비트에 대해,
    컨텍스트 축소 조건이 충족된다고 결정하는 단계 - 상기 컨텍스트 축소 조건은, 하나 이상의 이전에 코딩된 점유 비트가, 상기 적어도 하나의 비트와 연관된 서브 볼륨(3204)과 상기 복수의 이웃 볼륨들(3206) 중 하나 이상의 이웃 볼륨 사이에 위치된 하나 이상의 각자의 서브 볼륨(100)과 연관된다고 결정하는 것을 포함함 - ;
    상기 컨텍스트 축소 조건이 충족된 경우, 상기 하나 이상의 이전에 코딩된 점유 비트와 연관된 상기 하나 이상의 각자의 서브 볼륨(100)에 의해 차폐된(shielded) 상기 이웃 볼륨들(3206) 중 상기 하나 이상의 이웃 볼륨의 점유 상태와 연관된 컨텍스트를 컨텍스트들의 사용 가능한 세트로부터 제거함으로써, 이웃 구성들의 카운트와 상기 비트 시퀀스(104)에서의 이전에 코딩된 비트들의 수의 곱보다 더 적은 컨텍스트들을 포함하는 축소된 컨텍스트 세트를 선택하는 단계;
    상기 적어도 하나의 비트를 코딩하기 위해, 상기 이웃 볼륨들(3206) 중 적어도 일부의 점유 상태 및 상기 비트 시퀀스(104)의 적어도 하나의 이전에 코딩된 비트에 기초하여 상기 축소된 컨텍스트 세트로부터 컨텍스트를 선택하는 단계; 아니면 상기 적어도 하나의 비트를 코딩하기 위해, 상기 이웃 볼륨들(3206) 중 적어도 일부의 점유 상태 및 상기 비트 시퀀스(104)의 적어도 하나의 이전에 코딩된 비트에 기초하여 상기 컨텍스트들의 사용 가능한 세트로부터 컨텍스트를 선택하는 단계(3010);
    상기 비트 스트림으로부터 재구성된 비트를 생성하기 위해 이진 엔트로피 디코더를 사용하여 상기 선택된 컨텍스트에 기초하여 상기 적어도 하나의 비트를 엔트로피 디코딩하는 단계; 및
    상기 선택된 컨텍스트를 업데이트하는 단계
    를 특징으로 하는 것인, 방법.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 컨텍스트 축소 조건은, 이전에 인코딩된 비트들과 연관된 4 개의 서브 볼륨들(100)이 특정 이웃 볼륨(3206)과 면(face)을 공유한다고 결정하는 것을 포함하는 것인, 방법.
  4. 제 1 항 또는 제 2 항에 있어서, 상기 컨텍스트 축소 조건은, 상기 비트 시퀀스(104)의 적어도 4 개의 비트가 이전에 코딩되었다고 결정하는 것을 포함하는 것인, 방법.
  5. 제 1 항 또는 제 2 항에 있어서, 상기 컨텍스트 축소 조건이 충족된다고 결정하는 것은, 상기 복수의 이웃 볼륨들(3206)이 점유되지 않음을 상기 이웃 볼륨들(3206)의 상기 점유 패턴이 표시한다고 결정하는 것을 포함하는 것인, 방법.
  6. 제 5 항에 있어서, 상기 복수의 이웃 볼륨들(3206)이 점유되지 않는다는 결정에 기초하여, 상기 선택된 축소된 컨텍스트 세트는 상기 비트 시퀀스(104)에서의 이전에 코딩된 비트들의 수에 대응하는 컨텍스트들의 수를 포함하는 것인, 방법.
  7. 제 6 항에 있어서, 상기 복수의 이웃 볼륨들(3206)이 점유되지 않는다는 결정에 기초하여, 상기 컨텍스트를 선택하는 것은 상기 비트 시퀀스(104)에서의 이전에 코딩된 비트들의 합에 기초하여 상기 컨텍스트를 선택하는 것을 포함하는 것인, 방법.
  8. 제 1 항 또는 제 2 항에 있어서, 상기 컨텍스트 축소 조건은, 상기 비트 시퀀스에서의 적어도 비트들의 임계 수가 이전에 코딩되었다고 결정하는 것을 포함하고, 상기 축소된 컨텍스트 세트는 이웃 구성 및 상기 비트 시퀀스에서의 이전에 코딩된 비트들의 패턴의 각각의 가능한 조합을 상기 더 적은 컨텍스트들로 매핑하는 룩업 테이블을 포함하는 것인, 방법.
  9. 제 8 항에 있어서, 상기 룩업 테이블은, 사용 가능한 컨텍스트들의 각자의 쌍들 사이의 거리 측정이 임계 값보다 작다고 결정하는 것에 기초한 사용 가능한 컨텍스트들의 복수의 클래스들로의 반복적인(iterative) 그룹화에 기초하여 생성되고, 상기 복수의 클래스들 내의 각각의 클래스는 더 작은 세트 내의 각자의 컨텍스트를 포함하며, 이웃 구성 및 상기 비트 시퀀스(104)에서의 이전에 코딩된 비트들의 패턴의 상기 각각의 가능한 조합에 대해 사용 가능한 컨텍스트들이 있는 것인, 방법.
  10. 제 1 항 또는 제 2 항에 있어서, 상기 이웃 볼륨들(3206) 중 상기 적어도 일부는 상기 볼륨과 적어도 하나의 면을 공유하는 이웃 볼륨들인 것인, 방법.
  11. 압축된 포인트 클라우드 데이터의 비트 스트림을 생성하기 위해 포인트 클라우드를 인코딩하기 위한 인코더에 있어서,
    상기 포인트 클라우드는, 부모-자식 관계들을 갖는 복수의 노드들(154, 156)을 갖고 서브 볼륨들(100)로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 상기 포인트 클라우드의 포인트들을 포함하는 트리 구조(150)로 정의되고, 볼륨(3200)의 서브 볼륨들(100)의 점유는 비트 시퀀스(104)를 사용하여 표시되며, 상기 비트 시퀀스(104)의 각각의 비트는 스캔 순서로 상기 볼륨(3200) 내의 각자의 서브 볼륨(100)의 점유를 표시하고, 볼륨(3200)은 상기 볼륨(3200)과 적어도 하나의 정점(vertex)을 공유하는 복수의 이웃 볼륨들(3206)을 가지며, 상기 인코더는,
    프로세서;
    메모리; 및
    상기 프로세서에 의해 실행 가능한 명령어들을 포함하는 인코딩 애플리케이션 - 상기 명령어들은 실행될 때, 상기 프로세서로 하여금 제 1 항에 청구된 방법을 수행하게 함 -
    을 포함하는, 포인트 클라우드를 인코딩하기 위한 인코더.
  12. 재구성된 포인트 클라우드를 생성하기 위해 압축된 포인트 클라우드 데이터의 비트 스트림을 디코딩하기 위한 디코더에 있어서,
    상기 포인트 클라우드는, 부모-자식 관계들을 갖는 복수의 노드들(154, 156)을 갖고 서브 볼륨들(100)로 재귀적으로 분할되는 체적 공간의 지오메트리를 나타내며 상기 포인트 클라우드의 포인트들을 포함하는 트리 구조(150)로 정의되고, 볼륨(3200)의 서브 볼륨들(100)의 점유는 비트 시퀀스(104)를 사용하여 표시되며, 상기 비트 시퀀스(104)의 각각의 비트는 스캔 순서로 상기 볼륨(3200) 내의 각자의 서브 볼륨(100)의 점유를 표시하고, 볼륨(3200)은 상기 볼륨(3200)과 적어도 하나의 정점(vertex)을 공유하는 복수의 이웃 볼륨들(3206)을 가지며, 상기 디코더는,
    프로세서;
    메모리; 및
    상기 프로세서에 의해 실행 가능한 명령어들을 포함하는 디코딩 애플리케이션 - 상기 명령어들은 실행될 때, 상기 프로세서로 하여금 제 2 항에 청구된 방법을 수행하게 함 -
    을 포함하는, 압축된 포인트 클라우드 데이터의 비트 스트림을 디코딩하기 위한 디코더.
  13. 프로세서 실행 가능 명령어들을 저장하는 비일시적 프로세서 판독 가능 매체에 있어서,
    상기 명령어들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제 1 항 또는 제 2 항에 청구된 방법을 수행하게 하는 것인, 비일시적 프로세서 판독 가능 매체.
  14. 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은, 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 제 1 항 또는 제 2 항에 청구된 설명된 방법을 수행하게 하는 명령어들을 포함하는 것인, 컴퓨터 프로그램.
  15. 삭제
KR1020207031930A 2018-04-09 2019-04-03 포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치 KR102631110B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP18305415.4 2018-04-09
EP18305415.4A EP3553745B1 (en) 2018-04-09 2018-04-09 Methods and devices for binary entropy coding of point clouds
PCT/CA2019/050399 WO2019195920A1 (en) 2018-04-09 2019-04-03 Methods and devices for binary entropy coding of point clouds

Publications (2)

Publication Number Publication Date
KR20200141065A KR20200141065A (ko) 2020-12-17
KR102631110B1 true KR102631110B1 (ko) 2024-01-29

Family

ID=62002601

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207031930A KR102631110B1 (ko) 2018-04-09 2019-04-03 포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치

Country Status (5)

Country Link
US (3) US11620767B2 (ko)
EP (2) EP3553745B1 (ko)
JP (1) JP7320531B2 (ko)
KR (1) KR102631110B1 (ko)
WO (1) WO2019195920A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3103454A1 (en) * 2018-06-15 2019-12-19 Panasonic Intellectual Property Corporation Of America Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device
KR20210020924A (ko) * 2018-06-27 2021-02-24 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 삼차원 데이터 부호화 방법, 삼차원 데이터 복호 방법, 삼차원 데이터 부호화 장치, 및 삼차원 데이터 복호 장치
EP3595180B1 (en) 2018-07-10 2021-12-08 BlackBerry Limited Methods and devices for neighbourhood-based occupancy prediction in point cloud compression
EP3595179B1 (en) * 2018-07-10 2023-07-05 BlackBerry Limited Methods and devices for lossy coding of point cloud occupancy
EP3633857B1 (en) * 2018-10-03 2022-01-26 BlackBerry Limited Methods and devices for on-the-fly coder mapping updates in point cloud coding
US10992947B2 (en) 2019-06-28 2021-04-27 Blackberry Limited Planar mode in octree-based point cloud coding
WO2021081783A1 (zh) * 2019-10-30 2021-05-06 深圳市大疆创新科技有限公司 一种点云融合方法、装置及探测系统
JP7546677B2 (ja) * 2020-01-06 2024-09-06 オッポ広東移動通信有限公司 イントラ予測方法、装置、エンコーダ、デコーダ及び記憶媒体
EP4124035A4 (en) 2020-03-24 2024-01-31 Guangdong Oppo Mobile Telecommunications Corp., Ltd. INTRA-IMAGE PREDICTION METHOD AND APPARATUS, ENCODER, DECODER, AND STORAGE MEDIUM
US20230162402A1 (en) * 2020-04-14 2023-05-25 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus for processing a point cloud
US11615556B2 (en) * 2020-06-03 2023-03-28 Tencent America LLC Context modeling of occupancy coding for point cloud coding
CN114096998A (zh) * 2020-06-03 2022-02-25 腾讯美国有限责任公司 点云编解码中占用编码的上下文建模
US11941856B2 (en) * 2020-08-18 2024-03-26 Tencent America LLC Predictive tree-based geometry coding for a point cloud
US20220108487A1 (en) * 2020-10-07 2022-04-07 Qualcomm Incorporated Motion estimation in geometry point cloud compression
US11948336B2 (en) 2020-11-16 2024-04-02 Tencent America LLC Method and apparatus for point cloud coding
CN113518226A (zh) * 2021-06-29 2021-10-19 福州大学 一种基于地面分割的g-pcc点云编码改进方法
WO2023059168A1 (ko) * 2021-10-08 2023-04-13 엘지전자 주식회사 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 수신 방법 및 포인트 클라우드 데이터 수신 장치
EP4427195A1 (en) * 2021-11-04 2024-09-11 InterDigital Patent Holdings, Inc. State summarization for binary voxel grid coding
EP4195158A1 (en) * 2021-12-10 2023-06-14 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of encoding/encoding a series of data
EP4242969A1 (en) * 2022-03-10 2023-09-13 Beijing Xiaomi Mobile Software Co., Ltd. Encoding/decoding occupancy information of a current node of a tree representing point cloud geometry data
US20240013399A1 (en) * 2022-07-05 2024-01-11 Alibaba (China) Co., Ltd. Pyramid architecture for multi-scale processing in point cloud segmentation
WO2024049147A1 (ko) * 2022-08-30 2024-03-07 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2024086276A1 (en) * 2022-10-19 2024-04-25 Comcast Cable Communications, Llc Enhanced edge neighborhood for coding vertex information
CN118175276A (zh) * 2022-12-09 2024-06-11 维沃移动通信有限公司 点云编码方法、点云解码方法及终端

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347100A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6680974B1 (en) * 1999-12-02 2004-01-20 Lucent Technologies Inc. Methods and apparatus for context selection of block transform coefficients
US7952583B2 (en) 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
CA2413056C (en) * 2001-11-27 2009-02-10 Samsung Electronics Co., Ltd. Apparatus and method for depth image-based representation of 3-dimensional object
KR100446635B1 (ko) 2001-11-27 2004-09-04 삼성전자주식회사 깊이 이미지 기반 3차원 객체 표현 장치 및 방법
US7245241B2 (en) * 2005-11-25 2007-07-17 Microsoft Corporation Image coding with scalable context quantization
WO2009044282A2 (en) 2007-10-04 2009-04-09 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
US20110310976A1 (en) 2010-06-17 2011-12-22 Qualcomm Incorporated Joint Coding of Partition Information in Video Coding
US8320909B2 (en) 2010-06-24 2012-11-27 Apple Inc. Expanded cell search and selection in a mobile wireless device
EP2622744B1 (en) 2010-10-01 2019-11-06 BlackBerry Limited Methods and devices for parallel encoding and decoding using a bitstream structured for reduced delay
CN109120927B (zh) 2011-11-04 2021-05-18 夏普株式会社 图像解码装置、图像解码方法以及图像编码装置
JP2015504545A (ja) 2011-11-07 2015-02-12 トムソン ライセンシングThomson Licensing 予測位置符号化
CN104040592A (zh) 2011-11-07 2014-09-10 汤姆逊许可公司 预测位置编码
MY162891A (en) * 2012-04-13 2017-07-20 Jvc Kenwood Corp Picture coding device, picture coding method, and picture coding program
US10095810B2 (en) * 2014-07-01 2018-10-09 Siemens Product Lifecycle Management Software Inc. Seam modification for 3D CAD models
CN107076838B (zh) 2014-08-15 2021-11-05 艾耶股份有限公司 用于光雷达发射的方法和系统
JP6826368B2 (ja) 2016-01-14 2021-02-03 キヤノン株式会社 符号化装置及びその制御方法
US20170214943A1 (en) * 2016-01-22 2017-07-27 Mitsubishi Electric Research Laboratories, Inc. Point Cloud Compression using Prediction and Shape-Adaptive Transforms
US10694210B2 (en) * 2016-05-28 2020-06-23 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression
EP3301914A1 (en) 2016-09-30 2018-04-04 Thomson Licensing Method and apparatus for encoding and decoding a large field of view video
US10496336B2 (en) 2016-11-17 2019-12-03 Google Llc K-D tree encoding for point clouds using deviations
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
CN111727460A (zh) 2018-01-26 2020-09-29 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置
US11010928B2 (en) * 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US11790602B2 (en) * 2019-08-13 2023-10-17 Sony Group Corporation Information processing device and method
KR102423499B1 (ko) * 2020-01-07 2022-07-22 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170347100A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression

Also Published As

Publication number Publication date
EP3553745A1 (en) 2019-10-16
CN112272922A (zh) 2021-01-26
KR20200141065A (ko) 2020-12-17
US11861869B2 (en) 2024-01-02
EP3553745B1 (en) 2021-09-01
US20240005565A1 (en) 2024-01-04
WO2019195920A1 (en) 2019-10-17
JP7320531B2 (ja) 2023-08-03
EP3937132A1 (en) 2022-01-12
US20230135914A1 (en) 2023-05-04
JP2021521679A (ja) 2021-08-26
US11620767B2 (en) 2023-04-04
US20210192797A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
KR102631110B1 (ko) 포인트 클라우드의 이진 엔트로피 코딩을 위한 방법 및 장치
KR102690193B1 (ko) 포인트 클라우드의 이진 엔트로피 코딩 방법 및 디바이스

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant