KR20240063175A - 정보 처리 장치 및 방법 - Google Patents

정보 처리 장치 및 방법 Download PDF

Info

Publication number
KR20240063175A
KR20240063175A KR1020247013750A KR20247013750A KR20240063175A KR 20240063175 A KR20240063175 A KR 20240063175A KR 1020247013750 A KR1020247013750 A KR 1020247013750A KR 20247013750 A KR20247013750 A KR 20247013750A KR 20240063175 A KR20240063175 A KR 20240063175A
Authority
KR
South Korea
Prior art keywords
octree
unit
node
data
pattern
Prior art date
Application number
KR1020247013750A
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 KR20240063175A publication Critical patent/KR20240063175A/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3079Context modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 개시는, 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있도록 하는 정보 처리 장치 및 방법에 관한 것이다. Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 그 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림을 생성한다. 또한 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축한다. 본 개시는, 예를 들어 정보 처리 장치, 화상 처리 장치, 전자 기기, 정보 처리 방법 또는 프로그램 등에 적용할 수 있다.

Description

정보 처리 장치 및 방법{INFORMATION PROCESSING DEVICE AND METHOD}
본 개시는 정보 처리 장치 및 방법에 관한 것이며, 특히 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있도록 한 정보 처리 장치 및 방법에 관한 것이다.
종래, 점 군의 위치 정보나 속성 정보 등에 의하여 3차원 구조를 나타내는 포인트 클라우드나, 정점, 에지, 면으로 구성되고 다각형 표현을 사용하여 3차원 형상을 정의하는 메쉬의 정점 데이터의 압축 방법으로서, 예를 들어 Octree 등과 같은, 복셀(Voxel)을 이용한 양자화가 있었다(예를 들어 비특허문헌 1 참조).
R. Mekuria, Student Member IEEE, K. Blom, P. Cesar., Member, IEEE, "Design, Implementation and Evaluation of a Point Cloud Codec for Tele-Immersive Video", tcsvt_paper_submitted_february.pdf
그러나 Octree 패턴에서는 모든 포인트가 동일 해상도로 표현된다. 그 때문에, 포인트 클라우드에 있어서 일부 영역의 포인트의 해상도를 다른 영역의 해상도와 다른 것으로 하는 경우에 Octree 부호화를 적용하는 것은 곤란하였다.
본 개시는 이와 같은 상황을 감안하여 이루어진 것이며, 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있도록 하는 것이다.
본 기술의 일 측면의 정보 처리 장치는, Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 상기 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림을 생성하는 부호화부 구비하는 정보 처리 장치이다.
본 기술의 일 측면의 정보 처리 방법은, Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 상기 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림을 생성하는 정보 처리 방법이다.
본 기술의 다른 측면의 정보 처리 장치는, 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 상기 최하위 레벨과 다른 레벨의 상기 리프 노드를 포함하는 상기 Octree 패턴을 구축하는 복호부를 구비하는 정보 처리 장치이다.
본 기술의 다른 측면의 정보 처리 방법은, 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 상기 최하위 레벨과 다른 레벨의 상기 리프 노드를 포함하는 상기 Octree 패턴을 구축하는 정보 처리 방법이다.
본 기술의 일 측면의 정보 처리 장치 및 방법에 있어서는, Octree 패턴의 데이터인 Octree 패턴 데이터가 부호화되고, 그 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림이 생성된다.
본 기술의 다른 측면의 정보 처리 장치 및 방법에 있어서는, 비트 스트림이 복호되고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴이 구축된다.
본 개시에 따르면 정보를 처리할 수 있다. 특히 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있다.
도 1은 포인트 클라우드의 예를 설명하는 도면이다.
도 2는 Octree 패턴의 깊이 제어의 예에 대하여 설명하는 도면이다.
도 3은 부호화 장치의 주된 구성예를 도시하는 블록도이다.
도 4는 부호화의 개요의 예를 설명하는 도면이다.
도 5는 깊이 제어 정보의 예를 설명하는 도면이다.
도 6은 부호화부의 주된 구성예를 도시하는 블록도이다.
도 7은 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 8은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 9는 부호화부의 주된 구성예를 도시하는 블록도이다.
도 10은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 11은 복호 장치의 주된 구성예를 도시하는 블록도이다.
도 12는 복호부의 주된 구성예를 도시하는 블록도이다.
도 13은 복호 처리의 흐름의 예를 설명하는 흐름도이다.
도 14는 비트 스트림 복호 처리의 흐름의 예를 설명하는 흐름도이다.
도 15는 깊이 제어 정보의 예를 설명하는 도면이다.
도 16은 부호화부의 주된 구성예를 도시하는 블록도이다.
도 17은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 18은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는, 도 17에 이어지는 흐름도이다.
도 19는 부호화부의 주된 구성예를 도시하는 블록도이다.
도 20은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 21은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는, 도 20에 이어지는 흐름도이다.
도 22는 복호부의 주된 구성예를 도시하는 블록도이다.
도 23은 비트 스트림 복호 처리의 흐름의 예를 설명하는 흐름도이다.
도 24는 깊이 제어 정보의 예를 설명하는 도면이다.
도 25는 부호화부의 주된 구성예를 도시하는 블록도이다.
도 26은 지오메트리 데이터 부호화 처리의 흐름의 예를 설명하는 흐름도이다.
도 27은 복호부의 주된 구성예를 도시하는 블록도이다.
도 28은 비트 스트림 복호 처리의 흐름의 예를 설명하는 흐름도이다.
도 29는 컴퓨터의 주된 구성예를 도시하는 블록도이다.
이하, 본 개시를 실시하기 위한 형태(이하, 실시 형태라 함)에 대하여 설명한다. 또한 설명은 이하의 순서로 행한다.
1. 0ctree 패턴의 부분적인 깊이 제어
2. 제1 실시 형태(종단 식별 비트 패턴)
3. 제2 실시 형태(end_of_node_one_bit)
4. 제3 실시 형태(split_voxel_flag)
5. 그 외
<1. 0ctree 패턴의 부분적인 깊이 제어>
<포인트 클라우드>
종래, 점 군의 위치 정보나 속성 정보 등에 의하여 3차원 구조를 나타내는 포인트 클라우드나, 정점, 에지, 면으로 구성되고 다각형 표현을 사용하여 3차원 형상을 정의하는 메쉬 등의 데이터가 존재하였다.
예를 들어 포인트 클라우드의 경우, 도 1의 A에 도시한 바와 같은 입체 구조물을, 도 1의 B에 도시한 바와 같은 다수의 점(포인트 데이터)의 집합(점 군)으로서 표현한다. 즉, 포인트 클라우드의 데이터(포인트 클라우드 데이터라고도 칭함)는, 이 점 군의 각 점의 위치 정보나 속성 정보(예를 들어 색 등)에 의하여 구성된다. 따라서 데이터 구조가 비교적 단순함과 함께, 충분히 많은 점을 이용함으로써 임의의 입체 구조를 충분한 정밀도로 표현할 수 있다.
그러나 이와 같은 포인트 클라우드나 메쉬 등의 데이터는, 그 데이터양이 비교적 크므로 부호화 등에 의한 데이터양의 압축이 요구되고 있다. 예를 들어 Octree나 KDtree 등과 같은, 복셀(Voxel)을 이용한 부호화 방법이 생각되었다. 복셀은, 부호화 대상의 위치 정보를 양자화하기 위한 데이터 구조이다.
<Octree 부호화>
이 복셀 구조의 데이터(복셀 데이터라고도 칭함)는 1계층의 데이터이다. 즉, 모든 복셀의 크기는 서로 동일하다. Octree 부호화는 이와 같은 복셀 데이터를, 포인트가 존재하는 공간을 재귀적으로 2×2×2분할(x, y, z의 각 방향으로 2분할)한 최대 8분목 구조(Octree 패턴이라고도 칭함)로 변환한다. 이와 같이 함으로써, 포인트가 존재하지 않는 공간을 통합할(상위 레벨화할) 수 있으므로 정보량을 저감시킬 수 있다.
즉, Octree 패턴에서는, 포인트가 존재하는 영역을 노드로 한다. 각 노드에는, 그 영역(공간)을 2×2×2분할(8분할)한 각 영역(공간)에 대하여 포인트가 존재하는지 여부를 나타내는 비트 열이 설정된다. 예를 들어 그 각 영역의 포인트 존재 유무를 1비트로 표현한(값 「0」의 경우, 포인트가 존재하지 않는 것을 나타내고, 값 「1」의 경우, 포인트가 존재하는 것을 나타내도록 한) 8비트의 비트 열을 각 노드에 설정하도록 한다. 이 비트 열의 값이 「1」의 비트에 대응하는 영역에 대해서만 자식 노드가 형성된다. 즉, 최대 8분목으로 된다. 이와 같은 분목이 반복되어 레벨이, 파라미터 세트 등에 설정된 깊이(즉, 최하위 레벨)에 달하면, 분목이 종료된다.
즉, Octree 패턴에 있어서, 자식 노드를 갖지 않는 노드(리프 노드)는, 파라미터 세트 등에 있어서 설정되는 Octree 패턴의 깊이에 대응하는 최하위 레벨에만 형성된다. 따라서 이 Octree 패턴의 깊이(레벨 수)는, 도 2의 A에 도시되는 트리 구조와 같이, 포인트가 존재하는 영역에 대해서는 전부 동일하다. 달리 말하면, 모든 포인트가 동일한 해상도로 표현된다.
그런데, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 기능이 요구되고 있다. 부분적인 제어란, 예를 들어 일부 포인트의 해상도를 다른 부분의 포인트의 해상도와 다른 것으로 하는 등, 모든 포인트의 해상도를 통일시키지 않도록 하는 것이다.
예를 들어 포인트 클라우드에 주목 영역(ROI(Region of Interest))이 존재하는 경우, 그 주목 영역의 포인트를 다른 영역의 포인트보다도 고해상도화시키는 것을 생각할 수 있다. 이와 같이 함으로써 주관 화질을 수요에 부응하여 향상시킬 수 있다. 또한 부호화 효율을 향상시킬 수도 있다.
또한, 예를 들어 포인트가 복셀 그리드에 일치하여, 해상도를 높이지 않더라도(다른 포인트보다도 저해상도이더라도) 그 포인트를 표현할 수 있는 경우를 생각할 수 있다. 이와 같이 함으로써, Octree 패턴의 불필요한 노드의 증대를 억제하여 부호화 효율의 저감을 억제할 수 있다.
또한, 예를 들어 Octree 부호화와 그 외의 부호화 툴을 조합하여, 그 외의 부호화 툴에 의하여 일부 노드를 고해상도화하는 경우를 생각할 수 있다.
그러나 상술한 바와 같이 Octree 패턴에서는 리프 노드가 최하위 레벨에만 형성되기 때문에, 이와 같은 포인트의 해상도의 부분적인 제어를 표현할 수 없었다. 즉, 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어하는 것은 곤란하였다. 달리 말하면, 상술한 바와 같이 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우, Octree 부호화를 적용하는 것이 곤란해져 부호화 효율이 저감될 우려가 있었다. 즉, 데이터 군의 해상도를 부분적으로 제어하는 경우에 그 데이터 군의 트리 구조화가 곤란해져 부호화 효율이 저감될 우려가 있었다.
<깊이 제어>
그래서, Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 그 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 『깊이 제어 정보』를 포함하는 비트 스트림을 생성하도록 한다.
예를 들어 정보 처리 장치에 있어서, Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 그 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 『깊이 제어 정보』를 포함하는 비트 스트림을 생성하는 부호화부를 구비하도록 한다.
이와 같이 함으로써, 예를 들어 도 2의 B에 도시되는 트리 구조와 같이 Octree 패턴의 깊이를 부분적으로 제어할 수 있다. 즉, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다. 즉, 트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있다.
또한 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서 부호화 효율의 저감을 억제할 수 있다. 즉, 데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서 부호화 효율의 저감을 억제할 수 있다.
또한 이하에 있어서는 본 기술을 Octree 패턴 데이터에 적용하는 경우를 예로 들어 설명하지만, 본 기술은, 예를 들어 KDtree, 2분목 구조, 4분목 구조 등 임의의 트리 구조를 갖는 데이터에 적용할 수 있다. 또한 이하에 있어서는 포인트 클라우드 데이터(를 양자화한 복셀 데이터)를 예로 들어 설명하지만, 데이터의 해상도를 부분적으로 제어할 수 있는 것이면 이 데이터의 내용은 임의이다. 예를 들어 이 데이터는, 메쉬(Mesh) 등과 같은 3차원 구조에 관한 다른 종류의 데이터여도 되고, 3차원 구조 이외에 관한 데이터여도 된다.
<부호화 장치>
도 3은, 본 기술을 적용한 정보 처리 장치의 일 실시 형태인 부호화 장치의 주된 구성예를 도시하는 블록도이다. 도 3에 도시되는 부호화 장치(100)는, 부호화 대상으로서 입력된 포인트 클라우드의 데이터를, 복셀을 이용하여 부호화하여 얻어진 부호화 데이터 등을 출력한다. 그때, 부호화 장치(100)는, 이하에 설명하는 바와 같이 본 기술을 적용한 방법으로 이 부호화를 행한다.
도 3에 도시된 바와 같이 부호화 장치(100)는 제어부(101), 전처리부(111), 바운딩 박스 설정부(112), 복셀 설정부(113) 및 부호화부(114)를 갖는다.
제어부(101)는, 부호화 장치(100) 내의 각 처리부의 제어에 관한 처리를 행한다. 예를 들어 제어부(101)는, 각 처리부에 의한 처리의 실행 또는 스킵(생략)을 제어한다. 예를 들어 제어부(101)는 소정의 제어 정보에 기초하여 그와 같은 제어를 행한다. 이와 같이 함으로써, 제어부(101)는 불필요한 처리의 실행을 억제할 수 있어서 부하의 증대를 억제할 수 있다.
제어부(101)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU(Central Processing Unit), ROM(Read Only Memory), RAM(Random Access Memory) 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 처리를 행하도록 해도 된다.
전처리부(111)는 제어부(101)에 의하여 제어되며, 부호화 장치(100)에 입력되는 포인트 클라우드 데이터(부호화 대상)에 대하여 전처리로서 소정의 처리를 실시하고, 처리 후의 데이터를 바운딩 박스 설정부(112)에 공급한다. 여기서 부호화 대상으로 되는 포인트 클라우드는 동화상이어도 되고 정지 화상이어도 된다.
예를 들어 제어부(101)는, 전처리의 실행을 허가 또는 금지하는 제어 정보에 따라, 전처리의 실행이 허가되어 있는(금지되어 있지 않은) 경우에 전처리부(111)로 하여금 전처리를 실행하게 한다. 또한, 예를 들어 제어부(101)는, 전처리의 실행의 허가 또는 금지의 대상으로 되는 부호화 대상의 범위를 나타내는 제어 정보에 따라, 전처리의 실행이 허가되어 있는(금지되어 있지 않은) 부호화 대상에 대하여 전처리부(111)로 하여금 전처리를 실행하게 한다. 또한, 예를 들어 제어부(101)는, 실행을 허가 또는 금지하는 처리 내용을 지정하는 제어 정보에 따라, 실행이 허가되어 있는(금지되어 있지 않은) 처리를 전처리부(111)로 하여금 실행하게 한다. 이와 같이 함으로써, 불필요한 전처리의 실행을 억제할 수 있어서 부하의 증대를 억제할 수 있다.
또한 전처리의 내용은 임의이다. 예를 들어 전처리부(111)가 전처리로서, 노이즈를 저감시키는 처리를 실시하도록 해도 되고, 해상도(점의 수)를 변경하는 처리를 행하도록 해도 된다. 또한, 예를 들어 점 군의 밀도를 균등하게 하거나 원하는 편중을 갖게 하거나 하도록 각 점의 배치를 갱신하도록 해도 된다. 또한, 예를 들어 깊이 정보를 갖는 화상 정보 등과 같은 포인트 클라우드가 아닌 데이터가 부호화 장치(100)에 입력되도록 하고, 전처리부(111)가 전처리로서, 그 입력된 데이터를 포인트 클라우드의 데이터로 변환하도록 해도 된다.
전처리부(111)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 전처리를 행하도록 해도 된다.
바운딩 박스 설정부(112)는 제어부(101)에 의하여 제어되며, 부호화 대상의 위치 정보를 정규화하기 위한 바운딩 박스의 설정에 관한 처리를 행한다.
예를 들어 제어부(101)는, 바운딩 박스의 설정의 허가 또는 금지하는 제어 정보에 따라, 그 바운딩 박스의 설정이 허가되어 있는(금지되어 있지 않은) 경우에 바운딩 박스 설정부(112)로 하여금 그 바운딩 박스를 설정하게 한다. 또한, 예를 들어 제어부(101)는, 바운딩 박스의 설정의 허가 또는 금지의 대상으로 되는 부호화 대상의 범위를 나타내는 제어 정보에 따라, 그 바운딩 박스의 설정이 허가되어 있는(금지되어 있지 않은) 부호화 대상에 대하여 바운딩 박스 설정부(112)로 하여금 그 바운딩 박스를 설정하게 한다. 또한, 예를 들어 제어부(101)는, 바운딩 박스의 설정에 이용되는 파라미터의 허가 또는 금지에 관한 제어 정보에 따라, 바운딩 박스 설정부(112)로 하여금, 사용이 허가되어 있는(금지되어 있지 않은) 파라미터를 이용하여 바운딩 박스를 설정하게 한다. 이와 같이 함으로써, 불필요한 바운딩 박스의 설정이나 불필요한 파라미터의 사용을 억제할 수 있어서 부하의 증대를 억제할 수 있다.
예를 들어 바운딩 박스 설정부(112)는, 부호화 대상의 각 오브젝트에 대한 바운딩 박스를 설정한다. 예를 들어 도 4의 A에 도시된 바와 같이 포인트 클라우드의 데이터에 의하여 오브젝트(131)나 오브젝트(132)가 표현되어 있는 경우, 바운딩 박스 설정부(112)는, 도 4의 B에 도시된 바와 같이 그 오브젝트(131)나 오브젝트(132)를 각각 포함하도록 바운딩 박스(141)나 바운딩 박스(142)를 설정한다. 도 3으로 되돌아가 바운딩 박스가 설정되면, 바운딩 박스 설정부(112)는, 그 바운딩 박스에 관한 정보를 복셀 설정부(113)에 공급한다.
여기서 바운딩 박스 설정부(112)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 바운딩 박스의 설정에 관한 처리를 행하도록 해도 된다.
복셀 설정부(113)는 제어부(101)에 의하여 제어되며, 부호화 대상의 위치 정보를 양자화하기 위한 복셀 설정에 관한 처리를 행한다.
예를 들어 제어부(101)는, 복셀의 설정 허가 또는 금지하는 제어 정보에 따라, 그 복셀의 설정이 허가되어 있는(금지되어 있지 않은) 경우에 복셀 설정부(113)로 하여금 그 복셀을 설정하게 한다. 또한, 예를 들어 제어부(101)는, 복셀의 설정 허가 또는 금지의 대상으로 되는 부호화 대상의 범위를 나타내는 제어 정보에 따라, 그 복셀의 설정이 허가되어 있는(금지되어 있지 않은) 부호화 대상에 대하여 복셀 설정부(113)로 하여금 그 복셀을 설정하게 한다. 또한, 예를 들어 제어부(101)는, 복셀의 설정에 이용되는 파라미터의 허가 또는 금지에 관한 제어 정보에 따라, 복셀 설정부(113)로 하여금, 사용이 허가되어 있는(금지되어 있지 않은) 파라미터를 이용하여 복셀을 설정하게 한다. 이와 같이 함으로써, 불필요한 복셀의 설정이나 불필요한 파라미터의 사용을 억제할 수 있어서 부하의 증대를 억제할 수 있다.
예를 들어 복셀 설정부(113)는, 바운딩 박스 설정부(112)에 의하여 설정된 바운딩 박스 내에 복셀을 설정한다. 예를 들어 복셀 설정부(113)는, 도 4의 C에 도시된 바와 같이 바운딩 박스(141)를 분할하여 복셀(151)을 설정한다. 즉, 복셀 설정부(113)는 바운딩 박스 내의 포인트 클라우드 데이터를 복셀에 의하여 양자화(즉, 복셀화)한다. 또한 바운딩 박스가 복수 존재하는 경우, 복셀 설정부(113)는 각 바운딩 박스에 대하여 포인트 클라우드 데이터를 복셀화한다. 즉, 도 4의 B의 예의 경우, 복셀 설정부(113)는 바운딩 박스(142)에 대해서도 마찬가지의 처리를 행한다. 도 3으로 되돌아가, 이상과 같이 하여 복셀이 설정되면, 복셀 설정부(113)는, 그 복셀화된 포인트 클라우드 데이터(복셀 데이터라고도 칭함)(위치 정보의 양자화를 위한 데이터 구조에 관한 정보)나 속성 정보 등을 부호화부(114)에 공급한다.
여기서 복셀 설정부(113)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 복셀의 설정에 관한 처리를 행하도록 해도 된다.
부호화부(114)는 제어부(101)에 의하여 제어되며, 부호화에 관한 처리를 행한다.
예를 들어 제어부(101)는, 부호화를 허가 또는 금지하는 제어 정보에 따라, 부호화가 허가되어 있는(금지되어 있지 않은) 경우에 부호화부(114)에 복셀 데이터를 부호화시킨다. 또한, 예를 들어 제어부(101)는 부호화의 허가 또는 금지의 대상으로 되는 부호화 대상의 범위를 나타내는 제어 정보에 따라, 복셀 데이터의, 부호화가 허가되어 있는(금지되어 있지 않은) 부호화 대상에 대하여 부호화부(114)로 하여금 부호화를 행하게 한다. 이와 같이 함으로써, 불필요한 부호화를 억제할 수 있어서 부하의 증대를 억제할 수 있다.
부호화부(114)는, 예를 들어 포인트 클라우드 데이터를 양자화한 복셀 데이터(예를 들어 도 4의 C에 도시된 바와 같은 복셀 설정부(113)에 의하여 생성된 복셀 데이터)를 부호화하여 부호화 데이터(비트 스트림)을 생성한다. 도 4의 D는, 부호화된 신호 열의 모습의 예를 도시하고 있다.
여기서 부호화부(114)는 적당히, 예를 들어 제어 정보 등의, 포인트 클라우드 데이터 이외의 관련 정보도 부호화하여 헤더나 파라미터 세트 등에 저장한다. 예를 들어 부호화부(114)는, Octree 패턴의 깊이(레벨 수)를 지정하는 정보를 헤더나 파라미터 세트 등에 저장한다.
부호화부(114)는 상술한 각종 정보의 비트 스트림을 서로 관련짓는다. 여기서 「관련짓다」라는 용어는, 예를 들어 한쪽 데이터를 처리할 때 다른 쪽 데이터를 이용할 수 있도록(링크시킬 수 있도록) 하는 것을 의미한다. 즉, 서로 관련지어진 데이터는 하나의 데이터로서 통합되어도 되고, 각각 개별의 데이터로 해도 된다. 예를 들어 부호화 데이터에 관련지어진 제어 정보는, 그 부호화 데이터와는 다른 전송로 상에서 전송되도록 해도 된다. 또한, 예를 들어 부호화 데이터에 관련지어진 제어 정보는, 그 부호화 데이터와는 다른 기록 매체(또는 동일한 기록 매체의 다른 기록 에어리어)에 기록되도록 해도 된다. 또한 이 「관련짓기」는, 데이터 전체가 아니라 데이터의 일부여도 된다. 예를 들어 복수 프레임, 1프레임, 또는 프레임 내의 일부분 등의 임의의 단위로 서로 관련지어지도록 해도 된다.
부호화부(114)는, 이와 같은 부호화에 의하여 얻어진 부호화 데이터(비트 스트림)를 부호화 장치(100)의 외부로 출력한다. 이 부호화 장치(100)로부터 출력된 데이터(부호화 데이터나 제어 정보)는, 예를 들어 도시하지 않은 후단의 처리부에 의하여 복호되어 포인트 클라우드의 데이터가 복원되도록 해도 되고, 도시하지 않은 통신부에 의하여 송신되어 소정의 전송로를 통하여 복호 장치 등의 다른 장치에 전송되도록 해도 되고, 도시하지 않은 기록 매체에 기록되도록 해도 된다.
또한 부호화부(114)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 부호화에 관한 처리를 행하도록 해도 된다.
<2. 제1 실시 형태>
<종단 식별 비트 패턴>
부호화부(114)는, 복셀 설정부(113)로부터 공급된 복셀 데이터를 Octree 부호화하여 Octree 패턴의 데이터(Octree 패턴 데이터)를 생성한다. 또한 부호화부(114)는, 생성한 Octree 패턴 데이터를 가역 부호화하여 비트 스트림을 생성한다.
부호화부(114)는, 그 Octree 부호화에 있어서 Octree 패턴의 최하위 레벨 이외에 있어서 일부 노드를 종단시키는(리프 노드로 하는) 경우, 본 기술을 적용하여 『그 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보』를 포함하는 비트 스트림을 생성한다.
이 깊이 제어 정보는 임의이지만, 예를 들어 『Octree 패턴의 최하위 레벨보다도 상위의 레벨의, 그 깊이 제어 정보에 대응하는 특정 노드가 리프 노드』인 것을 나타내는 소정의 비트 열이도록 해도 된다.
이와 같이 함으로써, 복호측에 있어서 그 「소정의 비트 열」을 검출함으로써, 용이하게 「특정 노드가 리프 노드」인 것을 파악할 수 있다.
예를 들어 일반적인 Octree 패턴에 있어서는, 도 5의 A에 도시된 바와 같이 포인트가 존재하는 영역이 노드로서 구성되고, (최하위 레벨 이외의) 각 노드에 대하여, 그 영역을 8분할한 영역 중의 어느 영역에 포인트가 존재하는지를 나타내는 8비트의 비트 열(Child mask)이 설정된다. 이 비트 열은, 분할 후의 8영역 중, 값 「1」의 비트에 대응하는 영역에 포인트가 존재하는 것을 나타낸다(값 「0」의 비트에 대응하는 영역에 포인트가 존재하지 않는 것을 나타냄).
일반적인 Octree 패턴의 경우, 도 5의 A에 도시된 바와 같이, 분목하지 않더라도 최하위 레벨까지 자손 노드가 형성된다. 예를 들어 최하위 레벨의 하나 위의 레벨의 우측의 노드는 자식 노드를 하나밖에 갖지 않지만(분목은 하지 않지만), 비트 패턴 「01000000」의 비트 열이 설정되고 최하위 레벨에 있어서의 포인트의 위치가 나타나 있다. 중앙의 노드도 마찬가지이며, 분목은 하지 않지만, 비트 패턴 「00000001」이 설정되고 최하위 레벨에 있어서의 포인트의 위치가 나타나 있다. 따라서 이 경우, 모든 포인트의 위치(해상도)는 최하위 레벨로 나타난다.
이에 비해, 부호화부(114)는, 상술한 「깊이 제어 정보」로서, 도 5의 B에 도시된 바와 같이, 최하위 레벨보다 상위의 레벨의, 종단시키는 노드(자손 노드를 형성하지 않는 노드)에 대하여, 그 노드가 리프 노드(종단)인 것을 나타내는 비트 패턴의 비트 열을 설정한다. 그리고 부호화부(114)는 그 노드를 리프 노드로 하고 자손 노드의 형성을 생략한다. 그리고 부호화부(114)는, 그 「비트 열(깊이 제어 정보)」이 설정된 노드를 포함하는 Octree 패턴 데이터를 가역 부호화하여, 그 「비트 열(깊이 제어 정보)」을 포함하는 비트 스트림을 생성한다.
즉, 이 경우의 「깊이 제어 정보」인 「소정의 비트 열」은, Octree 패턴 데이터에 있어서, 그 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 노드에 설정되어 있고, 그 「소정의 비트 열」이 설정된 노드가 리프 노드인 것을 나타내는 비트 패턴을 갖는다. 그리고 부호화부(114)는, 그 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드에 「소정의 비트 열」이 설정된 Octree 패턴 데이터를 부호화하여 비트 스트림을 생성한다.
즉, 「비트 열(깊이 제어 정보)」의 위치에 의하여, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드의 위치가 나타난다. 따라서 복호측에 있어서는, 비트 스트림을 복호하여 Octree 패턴을 재구축할 때, 그 「비트 열(깊이 제어 정보)」의 위치를 확인함으로써 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드를 검출할 수 있다. 즉, 최하위 레벨보다도 상위의 레벨에 리프 노드를 포함하는 Octree 패턴을 정확히 복호할 수 있다.
즉, 이와 같은 「비트 열(깊이 제어 정보)」에 의하여, Octree 패턴에 있어서 포인트의 해상도의 부분적인 제어를 표현하는 것이 가능해진다. 즉, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음).
달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있으므로(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있으므로), 부호화 효율의 저감을 억제할 수 있다.
또한 이 「소정의 비트 열」의 비트 패턴(종단 식별 비트 패턴이라고도 칭함)은, 그 Octree 패턴의 리프 노드가 아닌 노드에 설정되는 비트 열에는 이용되지 않는 비트 패턴이도록 해도 된다. 예를 들어 도 5의 B의 예의 경우, 최하위 레벨의 하나 상위의 레벨의 우측의 노드(리프 노드)에 비트 패턴 「00000000」(종단 식별 비트 패턴)의 비트 열이 할당되어 있다. 비트 패턴 「00000000」은, 분할 후의 8영역 중 어느 곳에도 포인트가 존재하지 않는 것을 나타내게 되지만, 일반적인 Octree 패턴에 있어서는, 최하위 레벨보다 상위의 레벨에 있어서 그와 같은 노드는 존재하지 않는다.
이와 같이 함으로써, 다른 노드에 설정되는 비트 열과 동일한 사양의 비트 열에 의하여 최하위 레벨 이외의 레벨의 리프 노드를 표현할 수 있다. 즉, 그 리프 노드에 대해서도 다른 노드와 동일한 사양의 비트 열을 설정할 수 있으므로, 일반적인 Octree 부호화로부터의 사양 변경량을 저감시킬 수 있어서 본 기술을 보다 용이하게 실현할 수 있다.
단, 이 종단 식별 비트 패턴은, 「리프 노드」인 것을 나타낼 수 있는 것이면 임의이며, 상술한 예(「00000000」)에 한정되지 않는다. 예를 들어 리프 노드 이외의 노드에 설정되는 다른 비트 열과는, 비트 수가 다르도록 해도 된다.
여기서 종단 식별 비트 패턴의 비트 열은, 리프 노드와의 대응 관계가 밝혀져 있는 것이면, 대응하는 노드의 위치 이외에 저장되도록 해도 된다. 예를 들어 종단 식별 비트 패턴의 비트 열을 통합하여 헤더나 파라미터 세트 등에 저장하도록 해도 된다. 또한 이 비트 열을, Octree 패턴 데이터의 비트 스트림과 다른 비트 스트림에 포함시키도록 해도 된다. 이들 경우, 어느 비트 열이 어느 리프 노드에 대응하고 있는지의 정보도 필요해진다.
<부호화부>
도 6은, 부호화부(114)(도 3)의 주된 구성예를 도시하는 블록도이다. 도 6에 도시된 바와 같이 부호화부(114)는 Octree 부호화부(221), 2치화부(222) 및 가역 부호화부(223)를 갖는다.
Octree 부호화부(221)는 Octree 부호화에 관한 처리를 행한다. 예를 들어 Octree 부호화부(221)는, 복셀 설정부(113)로부터 공급되는 복셀 데이터의 지오메트리 데이터(위치 정보)를 Octree 부호화하여 Octree 패턴 데이터를 생성한다. 그때, Octree 부호화부(221)는, 최하위 레벨과 다른 레벨의 원하는 노드를 리프 노드로 하는 경우, 그 원하는 노드에 대하여, 상술한 「종단 식별 비트 패턴의 비트 열」(예를 들어 비트 패턴 「00000000」의 비트 열)을 설정한다.
도 6에 도시된 바와 같이 Octree 부호화부(221)는 Octree 심도 제어부(231) 및 Octree 구성부(232)를 갖는다.
Octree 심도 제어부(231)는 Octree 패턴의 심도에 관한 제어를 행한다. Octree 구성부(232)는 Octree 패턴의 구성에 관한 처리를 행한다. 예를 들어 Octree 구성부(232)는 지오메트리 데이터에 기초하여 Octree 패턴을 구축하고, 그 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 생성한다. Octree 심도 제어부(231)는 그 Octree 패턴의 구축을 제어하여 Octree 패턴의 깊이를 제어한다.
예를 들어 Octree 심도 제어부(231)는, Octree 구성부(232)가 지오메트리 데이터를 Octree 부호화하여 Octree 패턴을 생성할 때, 그 Octree 구성부(232)를 제어하여, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드로 하도록 할 수 있다. 즉, 일부 노드가 Octree 패턴의 최하위 레벨보다도 상위의 레벨에 있어서 종단하도록(자손 노드를 형성하지 않도록) 할 수 있다. 그 경우, Octree 심도 제어부(231)는 Octree 구성부(232)를 제어하여, 그 원하는 노드에 대하여, 상술한 「종단 식별 비트 패턴의 비트 열」을 설정하도록 해도 된다.
Octree 부호화부(221)(Octree 구성부(232))는, 그 「종단 식별 비트 패턴의 비트 열」을 포함하는 Octree 패턴 데이터를 2치화부(222)에 공급한다.
이와 같이 함으로써, 부호화부(114)는 Octree 패턴을 형성하면서, 리프 노드로 할 노드에 대하여 「종단 식별 비트 패턴의 비트 열」을 설정할 수 있다.
여기서 Octree 부호화부(221)(Octree 심도 제어부(231) 및 Octree 구성부(232)의 각각)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree 부호화에 관한 처리를 행하도록 해도 된다.
2치화부(222)는 2치화에 관한 처리를 행한다. 예를 들어 2치화부(222)는, Octree 부호화부(221)로부터 공급되는 Octree 패턴 데이터를 2치화하여 2치 데이터를 생성한다. 2치화부(222)는, 생성한 2치 데이터를 가역 부호화부(223)에 공급한다.
여기서 2치화부(222)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 2치화에 관한 처리를 행하도록 해도 된다.
가역 부호화부(223)는 가역 부호화에 관한 처리를 행한다. 예를 들어 가역 부호화부(223)는, 2치화부(222)로부터 공급되는 2치 데이터를 가역 부호화하여 비트 스트림(즉, Octree 패턴 데이터의 부호화 데이터)을 생성한다. 이 가역 부호화의 방법은 임의이다. 예를 들어 CABAC(Context-based Adaptive Binary Arithmetic Code)여도 된다.
또한, 예를 들어 가역 부호화부(223)는, Octree 패턴 데이터의 Octree 패턴의 깊이(레벨 수)를 지정하는 정보를 헤더나 파라미터 세트 등에 저장하여 비트 스트림에 포함시킨다.
가역 부호화부(223)는, 생성한 비트 스트림을 부호화부(114)의 외부(즉, 부호화 장치(100)의 외부)로 출력한다.
여기서 가역 부호화부(223)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 부호화에 관한 처리를 행하도록 해도 된다.
상술한 바와 같이 Octree 패턴의 최하위 레벨보다도 상위의 레벨에 있어서 노드를 종단시키는 경우, Octree 부호화부(221)가 생성하는 Octree 패턴 데이터에는 종단 식별 비트 패턴의 비트 열이 포함된다. 즉, 가역 부호화부(223)는, 그 종단 식별 비트 패턴의 비트 열(깊이 제어 정보)을 포함하는 비트 스트림을 생성한다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 Octree 패턴 데이터의 부호화 방법은 임의이다. 예를 들어 CAVLC(Context-based Adaptive Variable Length Code)를 이용하여 Octree 패턴 데이터를 부호화하도록 해도 된다. 그 경우, 2치화부(222) 및 가역 부호화부(223) 대신, CAVLC를 행하는 가역 부호화부를 마련하도록 해도 된다.
<부호화 처리의 흐름>
이상과 같은 구성의 부호화 장치(100)에 의하여 실행되는 부호화 처리의 흐름의 예를, 도 7의 흐름도를 참조하여 설명한다.
부호화 처리가 개시되면, 전처리부(111)는 스텝 S101에 있어서, 입력된 데이터에 대하여 전처리를 행한다.
스텝 S102에 있어서, 바운딩 박스 설정부(112)는, 전처리된 데이터에 대하여 바운딩 박스를 설정한다.
스텝 S103에 있어서, 복셀 설정부(113)는, 스텝 S102에 있어서 설정된 바운딩 박스에 복셀을 설정한다.
스텝 S104에 있어서, 부호화부(114)는, 스텝 S103의 처리에 의하여 생성된 복셀 데이터의 지오메트리 데이터를 부호화한다.
스텝 S105에 있어서, 부호화부(114)는, 그 부호화에 의하여 얻어진 비트 스트림을 부호화 장치(100)의 외부로 출력한다. 이 비트 스트림은, 예를 들어 복호측(복호 장치 등)에 전송되거나 기록 매체에 기록되거나 한다.
스텝 S105의 처리가 종료되면 부호화 처리가 종료된다. 예를 들어 부호화 대상이 동화상인 경우, 이 일련의 처리를 프레임마다 행한다.
<지오메트리 데이터 부호화 처리의 흐름>
다음으로, 도 7의 스텝 S104에 있어서 실행되는 지오메트리 데이터 부호화 처리의 흐름의 예를, 도 8의 흐름도를 참조하여 설명한다.
지오메트리 데이터 부호화 처리가 개시되면, Octree 심도 제어부(231)는 스텝 S121에 있어서, Octree 패턴의 처리 대상 노드를 초기화한다.
스텝 S122에 있어서, Octree 심도 제어부(231)는, 처리 대상 노드의 레벨이 최하위 레벨인지 여부를 판정한다. 처리 대상 노드의 레벨이 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S123으로 진행된다.
스텝 S123에 있어서, Octree 심도 제어부(231)는 처리 대상 노드를 종단으로 할지 여부를 판정한다. 처리 대상 노드를 종단으로 하는 것으로, 즉, 처리 대상 노드를 리프 노드로 하는 것으로 판정된 경우, 처리는 스텝 S124로 진행된다.
스텝 S124에 있어서, Octree 구성부(232)는, 종단으로 할 처리 대상 노드에 대하여 종단 식별 비트 패턴(예를 들어 「00000000」)을 생성하여 설정한다. 또한 Octree 구성부(232)는 그 처리 대상 노드의 자손 노드를 처리 대상 후보로부터 제외한다. 즉, 처리 대상 노드를 리프 노드로 하고, 그에 속하는 자식 노드를 형성하지 않도록 한다. 스텝 S124의 처리가 종료되면 처리는 스텝 S126으로 진행된다.
또한 스텝 S123에 있어서, 처리 대상 노드를 종단으로 하지 않는 것으로 판정된 경우, 처리는 스텝 S125로 진행된다.
스텝 S125에 있어서, Octree 구성부(232)는, 종단으로 하지 않을 처리 대상 노드에 대하여, 지오메트리 데이터에 기초하여 「자식 노드의 비트 패턴」, 즉, 처리 대상 노드에 대응하는 영역을 8분할(2×2×2분할)한 영역 중 어느 곳에 포인트가 존재하는지를 나타내는 비트 패턴의 비트 열을 생성하고, 그 비트 열을 처리 대상 노드에 설정한다. 스텝 S125의 처리가 종료되면 처리는 스텝 S126으로 진행된다.
또한 스텝 S122에 있어서, 처리 대상 노드의 레벨이 최하위 레벨이라고, 즉, 지오메트리 데이터(의 복셀)와 동일한 해상도의 레벨이라고 판정된 경우, 스텝 S123 내지 스텝 S125의 처리는 생략되고 처리는 스텝 S126으로 진행된다. 즉, 최하위 레벨의 노드에 대해서는 비트 열은 설정되지 않는다.
스텝 S126에 있어서, Octree 심도 제어부(231)는, 모든 노드를 처리하였는지 여부를 판정한다. 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 있지 않아서 미처리 노드가 존재한다고 판정된 경우, 처리는 스텝 S127로 진행된다.
스텝 S127에 있어서, Octree 심도 제어부(231)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S122로 되돌아간다. 즉, 스텝 S122 내지 스텝 S127의 각 처리가, 지오메트리 데이터에 대응하는 Octree 패턴의 각 노드에 대하여 행해진다.
그리고 스텝 S126에 있어서, 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 모든 노드를 처리한 것으로 판정된 경우, 처리는 스텝 S128로 진행된다.
스텝 S128에 있어서, 2치화부(222)는, 상술한 처리에 의하여 생성된 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 2치화한다.
스텝 S129에 있어서, 가역 부호화부(223)는, 스텝 S128의 처리에 의하여 얻어진 2치 데이터를 가역 부호화하여 비트 스트림을 생성한다. 스텝 S124의 처리에 의하여 Octree 패턴 데이터에는 종단 식별 비트 패턴의 비트 열이 포함되어 있으므로, 가역 부호화부(223)는, 종단 식별 비트 패턴의 비트 열을 포함하는 비트 스트림을 생성한다.
스텝 S129의 처리가 종료되면 지오메트리 데이터 부호화 처리가 종료되고, 처리는 도 7로 되돌아간다.
이상과 같이 각 처리를 실행함으로써 부호화 장치(100)는, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
또한 이상에 있어서는 Octree 패턴의 주사순으로서 전순을 예로 들어 설명하였지만, 이 주사순은 임의이며 전순에 한정되지 않는다. 예를 들어 선행순, 전치순, 도중순, 간순, 중간순, 통과순, 후순, 후행순, 후치순, 복귀순, 또는 레벨순 등이어도 된다.
<부호화부의 다른 예>
또한 Octree 패턴을 생성 후에 편집하여 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화하도록 해도 된다.
도 9는, 그 경우의 부호화부(114)(도 3)의 주된 구성예를 도시하는 블록도이다. 이 경우, 도 9에 도시된 바와 같이 부호화부(114)는, 도 6의 경우와 마찬가지로 Octree 부호화부(221), 2치화부(222) 및 가역 부호화부(223)를 갖는다.
단, Octree 부호화부(221)는 Octree 구성부(241) 및 Octree 심도 제어부(242)를 갖는다. Octree 구성부(241)는 Octree 패턴의 구성에 관한 처리를 행한다. 예를 들어 Octree 구성부(241)는 일반적인 Octree 부호화를 행하고, 지오메트리 데이터에 기초하여 Octree 패턴을 구축하고, 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 생성한다.
Octree 심도 제어부(242)는 Octree 패턴의 심도에 관한 제어를 행한다. 예를 들어 Octree 심도 제어부(242)는, Octree 구성부(241)에 의하여 구축된 Octree 패턴을 편집하여 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화한다. 즉, Octree 심도 제어부(242)는, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드에 속하는 자손 노드를 삭제하고, 그 원하는 노드를 리프 노드화한다. 또한 Octree 심도 제어부(242)는, 그 원하는 노드에 대하여, 상술한 「종단 식별 비트 패턴의 비트 열」(예를 들어 비트 패턴 「00000000」의 비트 열)을 설정한다. Octree 부호화부(221)(Octree 심도 제어부(242))는, 그 「종단 식별 비트 패턴의 비트 열」을 포함하는 Octree 패턴 데이터를 2치화부(222)에 공급한다.
여기서 Octree 부호화부(221)(Octree 구성부(241) 및 Octree 심도 제어부(242)의 각각)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree 부호화에 관한 처리를 행하도록 해도 된다.
2치화부(222)는 그 Octree 패턴 데이터를 2치화하여 2치 데이터를 생성하고, 가역 부호화부(223)는 그 2치 데이터를 가역 부호화하여 비트 스트림을 생성한다.
이와 같이 함으로써, 부호화부(114)는 Octree 패턴을 형성하면서, 리프 노드로 할 노드에 대하여 「종단 식별 비트 패턴의 비트 열」을 설정할 수 있다.
이 경우에도, Octree 패턴의 최하위 레벨보다도 상위의 레벨에 있어서 노드를 종단시키는 경우, Octree 부호화부(221)가 생성하는 Octree 패턴 데이터에는 종단 식별 비트 패턴의 비트 열이 포함된다. 즉, 가역 부호화부(223)는 이 경우에도, 그 종단 식별 비트 패턴의 비트 열(깊이 제어 정보)을 포함하는 비트 스트림을 생성한다.
따라서 부호화부(114)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
<부호화 처리의 흐름>
이 경우에도, 부호화 장치(100)에 의하여 실행되는 부호화 처리의 흐름은, 도 7의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<지오메트리 데이터 부호화 처리의 흐름>
다음으로, 이 경우의, 도 7의 스텝 S104에 있어서 실행되는 지오메트리 데이터 부호화 처리의 흐름의 예를, 도 10의 흐름도를 참조하여 설명한다.
이 경우, 지오메트리 데이터 부호화 처리가 개시되면, Octree 구성부(241)는 스텝 S141에 있어서, 지오메트리 데이터로부터 Octree 패턴을 구축하고 그 Octree 패턴 데이터를 생성한다.
스텝 S142에 있어서, Octree 심도 제어부(242)는 Octree 패턴의 처리 대상 노드를 초기화한다.
스텝 S143에 있어서, Octree 심도 제어부(242)는, 처리 대상 노드의 레벨이 최하위 레벨인지 여부를 판정한다. 처리 대상 노드의 레벨이 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S144로 진행된다.
스텝 S144에 있어서, Octree 심도 제어부(242)는 처리 대상 노드를 종단으로 할지 여부를 판정한다. 처리 대상 노드를 종단으로 하는 것으로, 즉, 처리 대상 노드를 리프 노드로 하는 것으로 판정된 경우, 처리는 스텝 S145로 진행된다.
스텝 S145에 있어서, Octree 심도 제어부(242)는, 종단으로 할 처리 대상 노드에 설정된 비트 열을 종단 식별 비트 패턴(예를 들어 「00000000」)으로 치환한다. 또한 Octree 심도 제어부(242)는, Octree 패턴에 존재한, 그 처리 대상 노드의 자손 노드를 삭제한다. 즉, 처리 대상 노드를 리프 노드로 하고 그에 속하는 자손 노드를 삭제한다. 스텝 S145의 처리가 종료되면 처리는 스텝 S146으로 진행된다.
또한 스텝 S144에 있어서, 처리 대상 노드를 종단으로 하지 않는 것으로 판정된 경우, 스텝 S145의 처리가 생략되고 처리는 스텝 S146으로 진행된다. 즉, 이 경우 처리 대상 노드를 편집하지 않는다.
또한 스텝 S143에 있어서, 처리 대상 노드의 레벨이 최하위 레벨이라고, 즉, 지오메트리 데이터(의 복셀)와 동일한 해상도의 레벨이라고 판정된 경우, 스텝 S144 및 스텝 S145의 처리는 생략되고 처리는 스텝 S146으로 진행된다. 즉, 최하위 레벨의 노드에 대해서는 비트 열은 설정되지 않으므로 편집도 행해지지 않는다.
스텝 S146에 있어서, Octree 심도 제어부(242)는, 스텝 S141에 있어서 생성된 Octree 패턴의 모든 노드를 처리하였는지 여부를 판정한다. 미처리 노드가 존재한다고 판정된 경우, 처리는 스텝 S147로 진행된다.
스텝 S147에 있어서, Octree 심도 제어부(242)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S143으로 되돌아간다. 즉, 스텝 S143 내지 스텝 S147의 각 처리가, 지오메트리 데이터에 대응하는 Octree 패턴의 각 노드에 대하여 행해진다.
그리고 스텝 S146에 있어서, 모든 노드를 처리한 것으로 판정된 경우, 처리는 스텝 S148로 진행된다.
스텝 S148에 있어서, 2치화부(222)는, 상술한 처리에 의하여 생성된 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 2치화한다.
스텝 S149에 있어서, 가역 부호화부(223)는, 스텝 S148의 처리에 의하여 얻어진 2치 데이터를 가역 부호화하여 비트 스트림을 생성한다. 스텝 S145의 처리에 의하여 Octree 패턴 데이터에는 종단 식별 비트 패턴의 비트 열이 포함되어 있으므로, 가역 부호화부(223)는, 종단 식별 비트 패턴의 비트 열을 포함하는 비트 스트림을 생성한다.
스텝 S149의 처리가 종료되면 지오메트리 데이터 부호화 처리가 종료되고, 처리는 도 7로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 부호화 장치(100)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
또한 이상에 있어서는 Octree 패턴의 주사순으로서 전순을 예로 들어 설명하였지만, 이 주사순은 임의이며 전순에 한정되지 않는다. 예를 들어 선행순, 전치순, 도중순, 간순, 중간순, 통과순, 후순, 후행순, 후치순, 복귀순, 또는 레벨순 등이어도 된다.
<복호 장치>
부호화 장치(100)가 생성한 비트 스트림을 복호하는 복호 장치는 그 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축한다. 따라서 이 복호 장치는, 부호화 장치(100)가 생성한 비트 스트림을 정확히 복호할 수 있다.
도 11은, 본 기술을 적용한 정보 처리 장치의 일 실시 형태인 복호 장치의 주된 구성예를 도시하는 블록도이다. 도 11에 도시되는 복호 장치(250)는, 도 3의 부호화 장치(100)에 대응하는 복호 장치이며, 예를 들어 이 부호화 장치(100)에 의하여 생성된 포인트 클라우드의 부호화 데이터를 복호하여 포인트 클라우드의 데이터를 복원한다.
도 11에 도시된 바와 같이 복호 장치(250)는 복호부(261) 및 포인트 클라우드화 처리부(262)를 갖는다.
복호부(261)는 비트 스트림의 복호에 관한 처리를 행한다. 예를 들어 복호부(261)는 비트 스트림을, 부호화부(114)(도 3)의 부호화 방법에 대응하는 복호 방법으로 복호하여 Octree 패턴을 재구축한다. 상술한 바와 같이, 부호화 장치(100)에 의하여 생성된 비트 스트림에는, 「Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보」가 포함된다. 복호부(261)는 그 「깊이 제어 정보」에 기초하여, 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축한다.
따라서 복호부(261)는, 부호화부(114)에 의하여 생성된 비트 스트림을 정확히 복호할 수 있다. 따라서 복호 장치(250)는, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
상술한 바와 같이 이 깊이 제어 정보는 임의이지만, 예를 들어 『Octree 패턴의 최하위 레벨보다도 상위의 레벨의, 그 깊이 제어 정보에 대응하는 특정 노드가 리프 노드』인 것을 나타내는 소정의 비트 열이도록 해도 된다.
이와 같이 함으로써 복호부(261)는, 그 「소정의 비트 열」을 검출함으로써, 용이하게 「특정 노드가 리프 노드」인 것을 파악할 수 있다.
또한 상술한 바와 같이 이 「소정의 비트 열」은, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드에 설정되어 있고, 그 「소정의 비트 열」이 설정된 노드가 리프 노드인 것을 나타내는 비트 패턴(종단 식별 비트 패턴)을 갖는다.
즉, 「비트 열(깊이 제어 정보)」의 위치에 의하여 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드의 위치가 나타난다. 따라서 복호부(261)는 비트 스트림을 복호하여 Octree 패턴을 재구축할 때, 그 「비트 열(깊이 제어 정보)」의 위치를 확인함으로써 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드를 검출할 수 있다. 즉, 최하위 레벨보다도 상위의 레벨에 리프 노드를 포함하는 Octree 패턴을 정확히 복호할 수 있다.
또한 상술한 바와 같이, 이 「소정의 비트 열」의 비트 패턴(종단 식별 비트 패턴)은, 그 Octree 패턴의 리프 노드가 아닌 노드에 설정되는 비트 열에는 이용되지 않는 비트 패턴이도록 해도 된다. 예를 들어 도 5의 B의 예의 경우, 최하위 레벨의 하나 상위의 레벨의 우측의 노드(리프 노드)에 비트 패턴 「00000000」(종단 식별 비트 패턴)의 비트 열이 할당되어 있다.
그리고 복호부(261)는 그 Octree 패턴(Octree 패턴 데이터)으로부터 지오메트리 데이터(복셀 데이터)를 재구성한다. 복호부(261)는, 재구성한 지오메트리 데이터(복셀 데이터)를 포인트 클라우드화 처리부(262)에 공급한다.
여기서 복호부(261)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 복호에 관한 처리를 행하도록 해도 된다.
포인트 클라우드화 처리부(262)는 포인트 클라우드 데이터의 복원에 관한 처리를 행한다. 예를 들어 포인트 클라우드화 처리부(262)는, 복호부(261)로부터 공급된 지오메트리 데이터(복셀 데이터)를 포인트 클라우드 데이터로 변환한다(복호 포인트 클라우드 데이터를 생성함). 또한 포인트 클라우드화 처리부(262)가 그 복호 포인트 클라우드 데이터를 Mesh 데이터로 더 변환하도록 해도 된다.
포인트 클라우드화 처리부(262)는, 생성한 복호 포인트 클라우드 데이터(또는 Mesh 데이터)를 복호 장치(250)의 외부로 출력한다. 이 출력된 복호 포인트 클라우드 데이터(또는 Mesh 데이터)는, 예를 들어 도시하지 않은 후단의 처리부에 의하여 화상 처리되어 화상 정보로서 모니터 등에 표시되도록 해도 되고, 도시하지 않은 통신부에 의하여 송신되어 소정의 전송로를 통하여 다른 장치에 전송되도록 해도 되고, 도시하지 않은 기록 매체에 기록되도록 해도 된다.
여기서 포인트 클라우드화 처리부(262)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 포인트 클라우드 데이터의 복원에 관한 처리를 행하도록 해도 된다.
<복호부>
도 12는, 복호부(261)의 주된 구성예를 도시하는 블록도이다. 도 12에 도시된 바와 같이 복호부(261)는 가역 복호부(271), 종단 검출부(272), 다치화부(273) 및 지오메트리 재구성부(274)를 갖는다.
가역 복호부(271)는 가역 복호에 관한 처리를 행한다. 예를 들어 가역 복호부(271)는, 부호화 장치(100)에 의하여 생성된 비트 스트림을, 가역 부호화부(223)에 대응하는 방법으로 가역 복호하여 2치 데이터를 얻는다. 이 가역 복호 방법은, 가역 부호화부(223)의 가역 부호화 방법에 대응하는 것이면 어떠한 방법이어도 된다. 예를 들어 CABAC여도 된다.
상술한 바와 같이 이 비트 스트림에는, 예를 들어 Octree 패턴의 각 노드의 비트 열이나, 최하위 레벨보다 상위의 레벨의 리프 노드에 설정된 「깊이 제어 정보(종단 식별 비트 패턴의 비트 열)」 등이 포함된다. 따라서 가역 복호부(271)는 비트 스트림을 복호하여 이들 정보도 추출하여, 2치 데이터로 하여 다치화부(273)에 공급한다. 또한 이 비트 스트림에 포함되는 헤더나 파라미터 세트에 있어서, 「Octree 패턴의 깊이를 지정하는 정보」가 포함되어 있다. 가역 복호부(271)는 비트 스트림을 복호하여 이 정보도 추출하여, 2치 데이터로 하여 다치화부(273)에 공급한다.
여기서 가역 복호부(271)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 복호에 관한 처리를 행하도록 해도 된다.
종단 검출부(272)는 노드의 종단의 검출에 관한 처리를 행한다. 다치화부(273)는 다치화에 관한 처리를 행한다. 예를 들어 다치화부(273)는, 가역 복호부(271)로부터 공급되는 2치 데이터를 다치화하고, Octree 패턴을 재구축하여 Octree 패턴 데이터를 생성한다. 그때, 종단 검출부(272)는, 예를 들어 다치화부(273)에 있어서 2치 데이터가 다치화되어 얻어지는 Octree 패턴에 포함되는 종단 식별 비트 패턴의 비트 열을 검출한다. 또한 종단 검출부(272)는 그 검출 결과에 따라 다치화부(273)을 제어하여 Octree 패턴의 재구축을 제어한다.
예를 들어 종단 검출부(272)는 종단 식별 비트 패턴의 비트 열을 검출하면, 다치화부(273)을 제어하여, Octree 패턴의 재구축에 있어서 그 노드를 종단(리프 노드)으로 하고, 그 노드에 속하는 자손 노드를 구축시키지 않도록 한다. 이와 같이 함으로써 다치화부(273)는, 「Octree 패턴의 깊이를 지정하는 정보」에 의하여 지정되는 Octree 패턴의 최하위 레벨보다도 상위의 레벨에 리프 노드를 형성하도록 Octree 패턴을 재구축할 수 있다.
다치화부(273)는, 이와 같이 하여 얻어진 Octree 패턴 데이터를 지오메트리 재구성부(274)에 공급한다.
여기서 종단 검출부(272)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 종단의 검출에 관한 처리를 행하도록 해도 된다.
또한 다치화부(273)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 다치화에 관한 처리를 행하도록 해도 된다.
지오메트리 재구성부(274)는 지오메트리 데이터의 재구성에 관한 처리를 행한다. 예를 들어 지오메트리 재구성부(274)는, 다치화부(273)로부터 공급되는 Octree 패턴 데이터를 이용하여 지오메트리 데이터를 재구성한다. 지오메트리 재구성부(274)는, 얻어진 지오메트리 데이터를 포인트 클라우드화 처리부(262)(도 11)에 공급한다.
여기서 지오메트리 재구성부(274)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 지오메트리 데이터의 재구성에 관한 처리를 행하도록 해도 된다.
이상과 같이, 가역 복호부(271) 내지 다치화부(273)는 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축한다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 비트 스트림의 복호 방법은, 그 부호화 방법에 대응하는 것이면 임의이며, 상술한 예에 한정되지 않는다. 예를 들어 CAVLC를 이용하여 비트 스트림을 복호하도록 해도 된다. 즉, 이 경우, 비트 스트림은, CAVLC를 이용하여 부호화되어 있다. 그 경우, 가역 복호부(271) 및 다치화부(273) 대신, CAVLC를 행하는 가역 복호부를 마련하도록 해도 된다.
<복호 처리의 흐름>
이상과 같은 구성의 복호 장치(250)에 의하여 실행되는 복호 처리의 흐름의 예를, 도 13의 흐름도를 참조하여 설명한다.
복호 처리가 개시되면, 복호부(261)는 스텝 S161에 있어서, 공급된 비트 스트림을 복호하여, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 Octree 패턴을 재구축하고, 그 Octree 패턴 데이터에 대응하는 지오메트리 데이터를 재구성한다.
스텝 S162에 있어서, 포인트 클라우드화 처리부(262)는, 스텝 S161에 있어서 얻어진 지오메트리 데이터로부터 포인트 클라우드 데이터를 복원한다.
스텝 S163에 있어서, 포인트 클라우드화 처리부(262)는, 스텝 S162에 있어서 복원한 포인트 클라우드 데이터(복호 포인트 클라우드 데이터)를 복호 장치(250)의 외부로 출력한다.
스텝 S163의 처리가 종료되면 복호 처리가 종료된다.
<비트 스트림 복호 처리의 흐름>
다음으로, 도 13의 스텝 S161에 있어서 실행되는 비트 스트림 복호 처리의 흐름의 예를, 도 14의 흐름도를 참조하여 설명한다.
비트 스트림 복호 처리가 개시되면, 가역 복호부(271)는, 스텝 S181에 있어서, 비트 스트림을 가역 복호하여 2치 데이터를 생성한다.
스텝 S182에 있어서, 다치화부(273)는, 스텝 S181에 있어서 얻어진 2치 데이터를 읽어들인다.
스텝 S183에 있어서, 종단 검출부(272)는, 읽어들인 2치 데이터를 다치화부(273)에 복호시켜 얻어진 Octree 패턴 데이터 중에 종단 식별 비트 패턴의 비트 열이 포함되는지 여부를 판정한다. Octree 패턴 데이터로부터 종단 식별 비트 패턴을 검출하여 종단 식별 비트 패턴의 비트 열이 포함된다고 판정된 경우, 처리는 스텝 S184로 진행된다.
스텝 S184에 있어서, 다치화부(273)는 종단 검출부(272)의 제어에 따라 2치 데이터를 다치화하고, 그 종단 식별 비트 패턴을 검출한 검출 위치(노드)를 종단(리프 노드)으로 하도록 Octree 패턴을 재구축한다. 즉, 깊이 제어 정보(종단 식별 비트 패턴의 비트 열)를, 재구축할 Octree 패턴에 반영시킨다.
스텝 S184의 처리가 종료되면 처리는 스텝 S186으로 진행된다. 또한 스텝 S183에 있어서, 종단 식별 비트 패턴을 검출하고 있지 않다고(Octree 패턴 데이터에 종단 식별 비트 패턴의 비트 열이 포함되지 않는다고) 판정된 경우, 처리는 스텝 S185로 진행된다.
스텝 S185에 있어서, 다치화부(273)는 2치 데이터를 다치화하고, 일반적인 Octree 패턴의 경우와 마찬가지로 Octree 패턴을 재구축한다. 스텝 S185의 처리가 종료되면 처리는 스텝 S186으로 진행된다.
스텝 S186에 있어서, 다치화부(273)는, 2치 데이터를 전부 처리하였는지 여부를 판정한다. 미처리 2치 데이터가 존재하는 경우, 그 미처리 2치 데이터를 새로운 처리 대상으로 하여 처리를 스텝 S182로 되돌린다. 즉, 모든 2치 데이터에 대하여 스텝 S182 내지 스텝 S186의 처리가 실행된다. 그리고 스텝 S186에 있어서 2치 데이터를 전부 처리한 것으로 판정된 경우, 처리는 스텝 S187로 진행된다.
스텝 S187에 있어서, 지오메트리 재구성부(274)는, 이상의 처리에 의하여 얻어진 Octree 패턴 데이터를 이용하여 지오메트리 데이터를 재구성한다.
스텝 S187의 처리가 종료되면 비트 스트림 복호 처리가 종료되고, 처리는 도 13으로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 복호 장치(250)는, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
<3. 제2 실시 형태>
<end_of_node_one_bit>
또한 「깊이 제어 정보」는 임의의 정보이지만, 예를 들어 『비트 스트림에 있어서, Octree 패턴의 최하위 레벨보다도 상위의 레벨 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인지를 나타내는 소정의 플래그 정보』이도록 해도 된다.
이와 같이 함으로써, 복호측에 있어서, 비트 스트림에 포함되는 「소정의 플래그 정보」에 기초하여, 용이하게 「특정 노드가 리프 노드」인 것을 파악할 수 있다.
Octree 패턴은, 예를 들어 도 15의 A에 도시된 바와 같이 각 노드의 정보가 소정의 주사순(예를 들어 전순)으로 나열되어 순차 부호화된다. 따라서 비트 스트림에 있어서는, 예를 들어 도 15의 B에 도시된 바와 같이 각 노드의 비트 스트림이 그 주사순으로 나열된다. 예를 들어 도 15의 B에 도시되는 비트 스트림은, 도 15의 A의 Octree 패턴의, 사선 문양의 범위에 포함되는 노드, 흰 바탕의 범위에 포함되는 노드, 회색 바탕의 범위에 포함되는 노드의 순으로 나열되어 있다.
여기서, 도 15의 A의 Octree 패턴의 회색 바탕의 범위에 포함되는 노드가, 최하위 레벨보다도 상위의 레벨이지만 종단으로 하는 것으로(리프 노드라고) 하자. 이 경우, 최하위 레벨의 노드 경우와 마찬가지로 그 노드에 비트 열을 설정하지 않고, 그 대신, 비트 스트림의, 그 노드에 대응하는 위치에, 종단을 나타내는 「깊이 제어 정보(소정의 플래그 정보)」를 설정하도록 해도 된다.
즉, 부호화부(114)가, 비트 스트림의, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드에 대응하는 위치에, 그 위치에 대응하는 노드가 리프 노드인지를 나타내는 「소정의 플래그 정보」를 삽입하도록 해도 된다.
이 「소정의 플래그 정보」의 위치에 의하여 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드의 위치가 나타난다. 따라서 복호측에 있어서는, 비트 스트림에 포함되는 「플래그 정보(깊이 제어 정보)」의 위치를 확인함으로써 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드를 검출할 수 있다. 즉, 최하위 레벨보다도 상위의 레벨에 리프 노드를 포함하는 Octree 패턴을 정확히 복호할 수 있다.
즉, 이와 같은 「플래그 정보(깊이 제어 정보)」에 의하여, Octree 패턴에 있어서 포인트의 해상도의 부분적인 제어를 표현하는 것이 가능해진다. 즉, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음).
달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있으므로(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있으므로), 부호화 효율의 저감을 억제할 수 있다.
예를 들어 도 15의 B의 예의 비트 스트림의 경우, 「end_of_node_one_bit」라는 신택스(플래그 정보)가 설정되고, 비트 스트림의, 리프 노드인 회색 바탕의 범위에 포함되는 노드에 대응하는 위치에 그 「end_of_node_one_bit」가 삽입되어 있다. 따라서 복호측에 있어서는, 이 「end_of_node_one_bit」를 검출함으로써, 그 위치에 대응하는 노드가 리프 노드인 것을 용이하게 검출할 수 있다.
여기서 이 「플래그 정보」의 명칭(신택스)은 임의이며, 「end_of_node_one_bit」 이외여도 된다. 또한 이 「플래그 정보(end_of_node_one_bit)」의 값은 임의이다. 예를 들어 「1」이어도 되고 「0」이어도 된다. 또한 이 「플래그 정보」가 복수 비트(bit)에 의하여 구성되도록 해도 된다. 또한, 이 「플래그 정보」가 리프 노드인 것 이외를 나타내는 정보가 포함되도록 해도 된다. 또한 이 「플래그 정보가」 모든 노드에 설정되고, 그 값에 의하여 리프 노드인지 여부를 식별할 수 있도록 해도 된다.
또한 이 「플래그 정보」는, 리프 노드와의 대응 관계가 밝혀져 있는 것이면, 비트 스트림의, 대응하는 노드의 위치 이외에 삽입되도록 해도 된다. 예를 들어 이 「플래그 정보」를 통합하여 헤더나 파라미터 세트 등에 저장하도록 해도 된다. 또한 이 「플래그 정보」를, Octree 패턴 데이터의 비트 스트림과 다른 비트 스트림에 포함시키도록 해도 된다. 이들 경우, 어느 「플래그 정보」가 어느 리프 노드에 대응하고 있는지를 나타내는 정보도 필요해진다.
<부호화부>
도 16은, 이 경우의 부호화부(114)(도 3)의 주된 구성예를 도시하는 블록도이다. 도 16에 도시된 바와 같이 이 경우의 부호화부(114)는 Octree 부호화부(321), 2치화부(322) 및 가역 부호화부(323)를 갖는다.
Octree 부호화부(321)는 Octree 부호화에 관한 처리를 행한다. 예를 들어 Octree 부호화부(321)는, 복셀 설정부(113)로부터 공급되는 복셀 데이터의 지오메트리 데이터(위치 정보)를 Octree 부호화하여 Octree 패턴 데이터를 생성한다. 그때, Octree 부호화부(321)는, 최하위 레벨과 다른 레벨의 원하는 노드를 리프 노드로 하는 경우, 그 원하는 노드의 위치를 특정한다.
도 16에 도시된 바와 같이 Octree 부호화부(321)는 Octree 심도 제어부(331) 및 Octree 구성부(332)를 갖는다.
Octree 심도 제어부(331)는 Octree 패턴의 심도에 관한 제어를 행한다. Octree 구성부(332)는 Octree 패턴의 구성에 관한 처리를 행한다. 예를 들어 Octree 구성부(332)는 지오메트리 데이터에 기초하여 Octree 패턴을 구축하고, 그 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 생성한다. Octree 심도 제어부(331)는 그 Octree 패턴의 구축을 제어하여 Octree 패턴의 깊이를 제어한다.
예를 들어 Octree 심도 제어부(331)는, Octree 구성부(332)가 지오메트리 데이터를 Octree 부호화하여 Octree 패턴을 생성할 때, 그 Octree 구성부(332)를 제어하여, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드로 하도록 할 수 있다. 즉, 일부 노드가 Octree 패턴의 최하위 레벨보다도 상위의 레벨에 있어서 종단하도록(자손 노드를 형성하지 않도록) 할 수 있다. 또한 Octree 심도 제어부(331)는 그 원하는 노드를, 리프 노드로 할 노드로서 특정한다.
Octree 부호화부(321)(Octree 구성부(332))는, 생성한 Octree 패턴 데이터를 2치화부(322)에 공급한다. 또한 Octree 부호화부(321)(Octree 심도 제어부(331))는, 특정한 노드에 관한 정보를 가역 부호화부(323)에 공급한다.
이와 같이 함으로써, 부호화부(114)는 Octree 패턴을 형성하면서, 리프 노드로 할 노드를 특정할 수 있다.
여기서 Octree 부호화부(321)(Octree 심도 제어부(331) 및 Octree 구성부(332)의 각각)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree 부호화에 관한 처리를 행하도록 해도 된다.
2치화부(322)는 2치화에 관한 처리를 행한다. 예를 들어 2치화부(322)는, Octree 부호화부(321)로부터 공급되는 Octree 패턴 데이터를 2치화하여 2치 데이터를 생성한다. 2치화부(322)는, 생성한 2치 데이터를 가역 부호화부(323)에 공급한다.
여기서 2치화부(322)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 2치화에 관한 처리를 행하도록 해도 된다.
가역 부호화부(323)는 가역 부호화에 관한 처리를 행한다. 예를 들어 가역 부호화부(323)는, 2치화부(322)로부터 공급되는 2치 데이터를 가역 부호화하여 비트 스트림(즉, Octree 패턴 데이터의 부호화 데이터)을 생성한다. 이 가역 부호화의 방법은 임의이며, 예를 들어 CABAC여도 된다.
또한 가역 부호화부(323)는, Octree 심도 제어부(331)로부터 공급되는 정보에 기초하여, 비트 스트림의, Octree 심도 제어부(331)에 의하여 리프 노드로 할 노드로서 특정된 노드에 대응하는 위치에 상술한 「소정의 플래그 정보(end_of_node_one_bit)」를 삽입한다.
또한, 예를 들어 가역 부호화부(323)는, Octree 패턴 데이터의 Octree 패턴의 깊이(레벨 수)를 지정하는 정보를 헤더나 파라미터 세트 등에 저장하여 비트 스트림에 포함시킨다.
가역 부호화부(323)는, 생성한 비트 스트림을 부호화부(114)의 외부(즉, 부호화 장치(100)의 외부)로 출력한다.
여기서 가역 부호화부(323)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 부호화에 관한 처리를 행하도록 해도 된다.
상술한 바와 같이, Octree 패턴의 최하위 레벨보다도 상위의 레벨에 있어서 노드를 종단시키는 경우, 가역 부호화부(323)는 비트 스트림의, Octree 부호화부(221)에 의하여 특정된 그 노드에 대응하는 위치에 소정의 플래그 정보(깊이 제어 정보)를 삽입한다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 Octree 패턴 데이터의 부호화 방법은 임의이다. 예를 들어 CAVLC(Context-based Adaptive Variable Length Code)를 이용하여 Octree 패턴 데이터를 부호화하도록 해도 된다. 그 경우, 2치화부(222) 및 가역 부호화부(223) 대신, CAVLC를 행하는 가역 부호화부를 마련하도록 해도 된다.
<부호화 처리의 흐름>
이 경우에도, 부호화 장치(100)에 의하여 실행되는 부호화 처리의 흐름은, 도 7의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<지오메트리 데이터 부호화 처리의 흐름>
다음으로, 이 경우의, 도 7의 스텝 S104에 있어서 실행되는 지오메트리 데이터 부호화 처리의 흐름의 예를, 도 17 및 도 18의 흐름도를 참조하여 설명한다.
지오메트리 데이터 부호화 처리가 개시되면 Octree 심도 제어부(331)는, 도 17의 스텝 S201에 있어서, Octree 패턴의 처리 대상 노드를 초기화한다.
스텝 S202에 있어서, Octree 심도 제어부(331)는, 처리 대상 노드의 레벨이 최하위 레벨인지 여부를 판정한다. 처리 대상 노드의 레벨이 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S203으로 진행된다.
스텝 S203에 있어서, Octree 심도 제어부(331)는 처리 대상 노드를 종단으로 할지 여부를 판정한다. 처리 대상 노드를 종단으로 하는 것으로, 즉, 처리 대상 노드를 리프 노드로 하는 것으로 판정된 경우, 처리는 스텝 S204로 진행된다.
스텝 S204에 있어서, Octree 심도 제어부(331)는 처리 대상 노드를, 종단으로 할 노드로서(즉, 종단 위치로서) 기억한다(특정함). 또한 Octree 구성부(332)는 그 처리 대상 노드의 자손 노드를 처리 대상 후보로부터 제외한다. 즉, 처리 대상 노드를 리프 노드로 하고, 그에 속하는 자식 노드를 형성하지 않도록 한다. 스텝 S204의 처리가 종료되면 처리는 스텝 S206으로 진행된다. 즉, 최하위 레벨보다도 상위의 레벨의 리프 노드에 대해서는 비트 열은 설정되지 않는다.
또한 스텝 S203에 있어서, 처리 대상 노드를 종단으로 하지 않는 것으로 판정된 경우, 처리는 스텝 S205로 진행된다.
스텝 S205에 있어서, Octree 구성부(332)는 종단으로 하지 않을 처리 대상 노드에 대하여, 지오메트리 데이터에 기초하여 「자식 노드의 비트 패턴」, 즉, 처리 대상 노드에 대응하는 영역을 8분할(2×2×2분할)한 영역 중 어느 곳에 포인트가 존재하는지를 나타내는 비트 패턴의 비트 열을 생성하고, 그 비트 열을 처리 대상 노드에 설정한다. 스텝 S205의 처리가 종료되면 처리는 스텝 S206으로 진행된다.
또한 스텝 S202에 있어서, 처리 대상 노드의 레벨이 최하위 레벨이라고, 즉, 지오메트리 데이터(의 복셀)와 동일한 해상도의 레벨이라고 판정된 경우, 스텝 S203 내지 스텝 S205의 처리는 생략되고 처리는 스텝 S206으로 진행된다. 즉, 최하위 레벨의 노드에 대해서는 비트 열은 설정되지 않는다.
스텝 S206에 있어서, Octree 심도 제어부(331)는, 모든 노드를 처리하였는지 여부를 판정한다. 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 있지 않아서 미처리 노드가 존재한다고 판정된 경우, 처리는 스텝 S207로 진행된다.
스텝 S207에 있어서, Octree 심도 제어부(331)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S202로 되돌아간다. 즉, 스텝 S202 내지 스텝 S207의 각 처리가, 지오메트리 데이터에 대응하는 Octree 패턴의 각 노드에 대하여 행해진다.
그리고 스텝 S206에 있어서, 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 모든 노드를 처리한 것으로 판정된 경우, 처리는 스텝 S208로 진행된다.
스텝 S208에 있어서, 2치화부(322)는, 상술한 처리에 의하여 생성된 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 2치화한다. 스텝 S208의 처리가 종료되면 처리는 도 18로 진행된다.
도 18의 스텝 S211에 있어서, 가역 부호화부(323)는 처리 대상 노드를 초기화한다.
스텝 S212에 있어서, 가역 부호화부(323)는, 도 17의 스텝 S208에 있어서 생성된 처리 대상 노드의 2치 데이터를 읽어들인다.
도 18의 스텝 S213에 있어서, 가역 부호화부(323)는, 처리 대상 노드가, 도 17의 스텝 S204에 있어서 기억한(특정한) 종단 위치인지 여부를 판정한다. 처리 대상 노드가 종단 위치라고 판정된 경우, 처리는 스텝 S214로 진행된다.
스텝 S214에 있어서, 가역 부호화부(323)는 비트 스트림의, 처리 대상 노드에 대응하는 위치(즉, 종단 위치)에 소정의 플래그 정보(end_of_node_one_bit)를 삽입한다. 스텝 S214의 처리가 종료되면 처리는 스텝 S216으로 진행된다.
또한 스텝 S213에 있어서, 처리 대상 노드가 종단 위치가 아니라고 판정된 경우, 처리는 스텝 S215로 진행된다.
스텝 S215에 있어서, 가역 부호화부(323)는 처리 대상 노드의 2치 데이터를 가역 부호화한다. 스텝 S215의 처리가 종료되면 처리는 스텝 S216으로 진행된다.
스텝 S216에 있어서, 가역 부호화부(323)는 모든 2치 데이터를 처리하였는지 여부를 판정한다. 미처리 2치 데이터가 존재한다고 판정된 경우, 처리는 스텝 S217로 진행된다.
스텝 S217에 있어서, 가역 부호화부(323)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S212로 되돌아간다. 즉, 스텝 S212 내지 스텝 S217의 각 처리가 Octree 패턴의 각 노드의 2치 데이터에 대하여 행해진다.
그리고 스텝 S216에 있어서, 모든 2치 데이터를 처리한 것으로 판정된 경우, 지오메트리 데이터 부호화 처리가 종료되고, 처리는 도 7로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 부호화 장치(100)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
또한 이상에 있어서는, Octree 패턴의 주사순으로서 전순을 예로 들어 설명하였지만, 이 주사순은 임의이며 전순에 한정되지 않는다. 예를 들어 선행순, 전치순, 도중순, 간순, 중간순, 통과순, 후순, 후행순, 후치순, 복귀순, 또는 레벨순 등이어도 된다.
<부호화부의 다른 예>
또한 Octree 패턴을 생성 후에 편집하여 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화하고, 그 원하는 노드를, 리프 노드로 할 노드로서 특정하도록 해도 된다.
도 19는, 그 경우의 부호화부(114)(도 3)의 주된 구성예를 도시하는 블록도이다. 이 경우, 도 19에 도시된 바와 같이 부호화부(114)는, 도 16의 경우와 마찬가지로 Octree 부호화부(321), 2치화부(322) 및 가역 부호화부(323)를 갖는다.
단, Octree 부호화부(321)는 Octree 구성부(341) 및 Octree 심도 제어부(342)를 갖는다. Octree 구성부(341)는 Octree 패턴의 구성에 관한 처리를 행한다. 예를 들어 Octree 구성부(341)는 일반적인 Octree 부호화를 행하고, 지오메트리 데이터에 기초하여 Octree 패턴을 구축하고, 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 생성한다.
Octree 심도 제어부(342)는 Octree 패턴의 심도에 관한 제어를 행한다. 예를 들어 Octree 심도 제어부(342)는, Octree 구성부(341)에 의하여 구축된 Octree 패턴을 편집하여 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화한다. 즉, Octree 심도 제어부(342)는, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드에 속하는 자손 노드를 삭제하고, 그 원하는 노드를 리프 노드화한다. 또한 Octree 심도 제어부(342)는 그 원하는 노드를, 리프 노드로 할 노드로서 특정한다(기억함). Octree 부호화부(321)(Octree 심도 제어부(342))는, 생성한 Octree 패턴 데이터를 2치화부(322)에 공급한다. 또한 Octree 부호화부(321)(Octree 심도 제어부(342))는, 특정한 노드를 나타내는 정보를 가역 부호화부(323)에 공급한다.
여기서 Octree 부호화부(321)(Octree 구성부(341) 및 Octree 심도 제어부(342)의 각각)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree 부호화에 관한 처리를 행하도록 해도 된다.
2치화부(322)는, 도 16의 경우와 마찬가지로 2치화에 관한 처리를 행한다. 예를 들어 2치화부(322)는, Octree 부호화부(321)(Octree 심도 제어부(342))로부터 공급되는 Octree 패턴 데이터를 2치화하여 2치 데이터를 생성한다. 2치화부(322)는, 생성한 2치 데이터를 가역 부호화부(323)에 공급한다.
가역 부호화부(323)는, 도 16의 경우와 마찬가지로 가역 부호화에 관한 처리를 행한다. 예를 들어 가역 부호화부(323)는, 2치화부(322)로부터 공급되는 2치 데이터를 가역 부호화하여 비트 스트림(즉, Octree 패턴 데이터의 부호화 데이터)을 생성한다.
또한 가역 부호화부(323)는, Octree 부호화부(321)(Octree 심도 제어부(342))로부터 공급되는 정보에 기초하여, 비트 스트림의, Octree 심도 제어부(342)에 의하여 리프 노드로 할 노드로서 특정된 노드에 대응하는 위치에 상술한 「소정의 플래그 정보(end_of_node_one_bit)」를 삽입한다.
또한, 예를 들어 가역 부호화부(323)는, Octree 패턴 데이터의 Octree 패턴의 깊이(레벨 수)를 지정하는 정보를 헤더나 파라미터 세트 등에 저장하여 비트 스트림에 포함시킨다. 가역 부호화부(323)는, 생성한 비트 스트림을 부호화부(114)의 외부(즉, 부호화 장치(100)의 외부)로 출력한다.
즉, 가역 부호화부(223)는 이 경우에도, 「소정의 플래그 정보(end_of_node_one_bit)」(깊이 제어 정보)를 포함하는 비트 스트림을 생성한다.
따라서 부호화부(114)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
<부호화 처리의 흐름>
이 경우에도, 부호화 장치(100)에 의하여 실행되는 부호화 처리의 흐름은, 도 7의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<지오메트리 데이터 부호화 처리의 흐름>
다음으로, 이 경우의, 도 7의 스텝 S104에 있어서 실행되는 지오메트리 데이터 부호화 처리의 흐름의 예를, 도 20 및 도 21의 흐름도를 참조하여 설명한다.
이 경우, 지오메트리 데이터 부호화 처리가 개시되면, Octree 구성부(341)는 도 20의 스텝 S231에 있어서, 지오메트리 데이터로부터 Octree 패턴을 구축하고 그 Octree 패턴 데이터를 생성한다.
스텝 S232에 있어서, Octree 심도 제어부(342)는 Octree 패턴의 처리 대상 노드를 초기화한다.
스텝 S233에 있어서, Octree 심도 제어부(342)는, 처리 대상 노드의 레벨이 최하위 레벨인지 여부를 판정한다. 처리 대상 노드의 레벨이 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S234로 진행된다.
스텝 S234에 있어서, Octree 심도 제어부(342)는, 처리 대상 노드를 종단으로 할지 여부를 판정한다. 처리 대상 노드를 종단으로 하는 것으로, 즉, 처리 대상 노드를 리프 노드로 하는 것으로 판정된 경우, 처리는 스텝 S235로 진행된다.
스텝 S235에 있어서, Octree 심도 제어부(342)는 처리 대상 노드를, 종단으로 할 노드로서(즉, 종단 위치로서) 기억한다(특정함). 또한 Octree 구성부(341)는 그 처리 대상 노드의 자손 노드를 삭제한다. 즉, 처리 대상 노드를 리프 노드로 하고 그에 속하는 자손 노드를 삭제한다. 스텝 S235의 처리가 종료되면 처리는 스텝 S236으로 진행된다.
또한 스텝 S234에 있어서, 처리 대상 노드를 종단으로 하지 않는 것으로 판정된 경우, 스텝 S235의 처리가 생략되고 처리는 스텝 S236으로 진행된다. 즉, 종단으로 하지 않는 노드는 편집되지 않는다(Octree 구성부(341)에 의하여 생성된 그대로임).
또한 스텝 S233에 있어서, 처리 대상 노드의 레벨이 최하위 레벨이라고, 즉, 지오메트리 데이터(의 복셀)와 동일한 해상도의 레벨이라고 판정된 경우, 스텝 S234 및 스텝 S235의 처리는 생략되고 처리는 스텝 S236으로 진행된다. 즉, 최하위 레벨의 노드에 대해서는 비트 열은 설정되지 않으므로 편집도 행해지지 않는다(Octree 구성부(341)에 의하여 생성된 채 그대로임).
스텝 S236에 있어서, Octree 심도 제어부(342)는, 스텝 S231에 있어서 생성된 Octree 패턴의 모든 노드를 처리하였는지 여부를 판정한다. 미처리 노드가 존재한다고 판정된 경우, 처리는 스텝 S237로 진행된다.
스텝 S237에 있어서, Octree 심도 제어부(342)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S233으로 되돌아간다. 즉, 스텝 S233 내지 스텝 S237의 각 처리가, 지오메트리 데이터에 대응하는 Octree 패턴의 각 노드에 대하여 행해진다.
그리고 스텝 S236에 있어서, 모든 노드를 처리한 것으로 판정된 경우, 처리는 스텝 S238로 진행된다.
스텝 S238에 있어서, 2치화부(322)는, 상술한 처리에 의하여 생성된 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 2치화한다. 스텝 S238의 처리가 종료되면 처리는 도 21로 진행된다.
도 21의 스텝 S241에 있어서, 가역 부호화부(323)는 처리 대상 노드를 초기화한다.
스텝 S242에 있어서, 가역 부호화부(323)는, 도 20의 스텝 S238에 있어서 생성된 처리 대상 노드의 2치 데이터를 읽어들인다.
도 21의 스텝 S243에 있어서, 가역 부호화부(323)는 처리 대상 노드가, 도 20의 스텝 S204에 있어서 기억한(특정한) 종단 위치인지 여부를 판정한다. 처리 대상 노드가 종단 위치라고 판정된 경우, 처리는 도 21의 스텝 S244로 진행된다.
스텝 S244에 있어서, 가역 부호화부(323)는 비트 스트림의, 처리 대상 노드에 대응하는 위치(즉, 종단 위치)에 소정의 플래그 정보(end_of_node_one_bit)를 삽입한다. 스텝 S244의 처리가 종료되면 처리는 스텝 S246으로 진행된다.
또한 스텝 S243에 있어서, 처리 대상 노드가 종단 위치가 아니라고 판정된 경우, 처리는 스텝 S245로 진행된다.
스텝 S245에 있어서, 가역 부호화부(323)는 처리 대상 노드의 2치 데이터를 가역 부호화한다. 스텝 S245의 처리가 종료되면 처리는 스텝 S246으로 진행된다.
스텝 S246에 있어서, 가역 부호화부(323)는, 모든 2치 데이터를 처리하였는지 여부를 판정한다. 미처리 2치 데이터가 존재한다고 판정된 경우, 처리는 스텝 S247로 진행된다.
스텝 S247에 있어서, 가역 부호화부(323)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S242로 되돌아간다. 즉, 스텝 S242 내지 스텝 S247의 각 처리가 Octree 패턴의 각 노드의 2치 데이터에 대하여 행해진다.
그리고 스텝 S246에 있어서, 모든 2치 데이터를 처리한 것으로 판정된 경우, 지오메트리 데이터 부호화 처리가 종료되고, 처리는 도 7로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 부호화 장치(100)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
또한 이상에 있어서는 Octree 패턴의 주사순으로서 전순을 예로 들어 설명하였지만, 이 주사순은 임의이며 전순에 한정되지 않는다. 예를 들어 선행순, 전치순, 도중순, 간순, 중간순, 통과순, 후순, 후행순, 후치순, 복귀순, 또는 레벨순 등이어도 된다.
<복호 장치>
이 경우의 부호화 장치(100)가 생성한 비트 스트림을 복호하는 복호 장치(250)도, 도 11을 참조하여 설명한 경우와 마찬가지의 구성을 갖는다.
단, 이 경우, 깊이 제어 정보가, 예를 들어 『상기 비트 스트림에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인지』를 나타내는 소정의 플래그 정보(end_of_node_one_bit)이도록 해도 된다.
이와 같이 함으로써, 복호부(261)는 비트 스트림에 있어서, 그 「소정의 플래그 정보」를 검출함으로써, 용이하게 「특정 노드가 리프 노드」인 것을 파악할 수 있다.
또한 상술한 바와 같이 이 「소정의 플래그 정보」는, 비트 스트림의, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드에 대응하는 위치에 삽입되어 있으며, 그 위치에 대응하는 노드가 리프 노드인지를 나타낸다.
즉, 비트 스트림에 삽입되는 「플래그 정보(깊이 제어 정보)」의 위치에 의하여 Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드의 위치가 나타난다. 따라서 복호부(261)는 비트 스트림을 복호하여 Octree 패턴을 재구축할 때, 그 비트 스트림에 있어서의 「플래그 정보(깊이 제어 정보)」의 위치를 검출(특정)함으로써, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 리프 노드를 형성하도록 Octree 패턴을 재구축할 수 있다. 즉, 최하위 레벨보다도 상위의 레벨에 리프 노드를 포함하는 Octree 패턴을 정확히 복호할 수 있다.
<복호부>
도 22는, 이 경우의 복호부(261)의 주된 구성예를 도시하는 블록도이다. 도 22에 도시된 바와 같이 복호부(261)는 종단 검출부(371), 가역 복호부(372), 다치화부(373) 및 지오메트리 재구성부(374)를 갖는다.
종단 검출부(371)는 노드의 종단의 검출에 관한 처리를 행한다. 예를 들어 종단 검출부(371)는, 부호화 장치(100)에 의하여 생성된 비트 스트림에 삽입된 「소정의 플래그 정보(end_of_node_one_bit)」를 검출하여 그 위치를 종단 위치로서 특정한다(기억함). 종단 검출부(371)는 그 검출 결과를 가역 복호부(372) 및 다치화부(373)에 공급한다.
여기서 종단 검출부(371)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 종단의 검출에 관한 처리를 행하도록 해도 된다.
가역 복호부(372)는 가역 복호에 관한 처리를 행한다. 예를 들어 가역 복호부(372)는, 부호화 장치(100)에 의하여 생성된 비트 스트림을, 가역 부호화부(323)에 대응하는 방법으로 가역 복호하여 2치 데이터를 얻는다. 이 가역 복호 방법은, 가역 부호화부(323)의 가역 부호화 방법에 대응하는 것이면 어떠한 방법이어도 된다. 예를 들어 CABAC여도 된다.
또한 그때, 가역 복호부(372)는 비트 스트림의, 종단 검출부(371)에 의하여 검출된 종단 위치(「소정의 플래그 정보(end_of_node_one_bit)」가 삽입된 위치)로부터 그 「소정의 플래그 정보(end_of_node_one_bit)」를 삭제한다.
가역 복호부(372)는 이상과 같이 하여 얻은 2치 데이터를 다치화부(373)에 공급한다.
여기서 가역 복호부(372)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 복호에 관한 처리를 행하도록 해도 된다.
다치화부(373)는 다치화에 관한 처리를 행한다. 예를 들어 다치화부(373)는, 가역 복호부(372)로부터 공급되는 2치 데이터를 다치화하고, Octree 패턴을 재구축하여 Octree 패턴 데이터를 생성한다. 그때, 종단 검출부(371)는 종단 위치의 검출 결과에 따라 다치화부(373)을 제어하여 Octree 패턴의 재구축을 제어한다.
예를 들어 다치화부(373)는 Octree 패턴의 재구축에 있어서, 종단 검출부(371)에 의하여 검출(특정)된 비트 스트림의 종단 위치에 대응하는 노드를 종단(리프 노드)으로 하고, 그 노드에 속하는 자손 노드를 구축하지 않도록 한다. 이와 같이 함으로써 다치화부(373)는, 「Octree 패턴의 깊이를 지정하는 정보」에 의하여 지정되는 Octree 패턴의 최하위 레벨보다도 상위의 레벨에 리프 노드를 형성하도록 Octree 패턴을 재구축할 수 있다.
다치화부(373)는, 이와 같이 하여 얻어진 Octree 패턴 데이터를 지오메트리 재구성부(374)에 공급한다.
여기서 다치화부(373)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 다치화에 관한 처리를 행하도록 해도 된다.
지오메트리 재구성부(374)는 지오메트리 데이터의 재구성에 관한 처리를 행한다. 예를 들어 지오메트리 재구성부(374)는, 다치화부(373)로부터 공급되는 Octree 패턴 데이터를 이용하여 지오메트리 데이터를 재구성한다. 지오메트리 재구성부(374)는, 얻어진 지오메트리 데이터를 포인트 클라우드화 처리부(262)(도 11)에 공급한다.
여기서 지오메트리 재구성부(374)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 지오메트리 데이터의 재구성에 관한 처리를 행하도록 해도 된다.
이상과 같이, 종단 검출부(371) 내지 다치화부(373)는 비트 스트림을 복호하고, 그 비트 스트림에 삽입된 소정의 플래그 정보(깊이 제어 정보)에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축한다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 비트 스트림의 복호 방법은, 그 부호화 방법에 대응하는 것이면 임의이며, 상술한 예에 한정되지 않는다. 예를 들어 CAVLC를 이용하여 비트 스트림을 복호하도록 해도 된다. 즉, 이 경우, 비트 스트림은, CAVLC를 이용하여 부호화되어 있다. 그 경우, 가역 복호부(372) 및 다치화부(373) 대신, CAVLC를 행하는 가역 복호부를 마련하도록 해도 된다.
<복호 처리의 흐름>
이 경우에도, 복호 장치(250)에 의하여 실행되는 복호 처리의 흐름은, 도 13의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<비트 스트림 복호 처리의 흐름>
다음으로, 도 13의 스텝 S161에 있어서 실행되는 비트 스트림 복호 처리의 흐름의 예를, 도 23의 흐름도를 참조하여 설명한다.
비트 스트림 복호 처리가 개시되면, 종단 검출부(371)는 스텝 S261에 있어서 비트 스트림을 읽어들인다.
스텝 S262에 있어서, 종단 검출부(371)는 그 비트 스트림에 있어서, 소정의 플래그 정보(end_of_node_one_bit)를 탐색하여, 검출하였는지 여부를 판정한다. 소정의 플래그 정보(end_of_node_one_bit)를 검출하였다고 판정된 경우, 처리는 스텝 S263으로 진행된다.
스텝 S263에 있어서, 종단 검출부(371)는 그 소정의 플래그 정보(end_of_node_one_bit)를 검출한 위치를 종단 위치로서 기억한다(특정함).
스텝 S264에 있어서, 가역 복호부(372)는, 스텝 S261에 있어서 읽어들여진 비트 스트림의, 스텝 S263에 있어서 특정된 종단 위치로부터 소정의 플래그 정보(end_of_node_one_bit)를 삭제한다.
스텝 S264의 처리가 종료되면 처리는 스텝 S265로 진행된다. 또한 스텝 S262에 있어서, 소정의 플래그 정보(end_of_node_one_bit)를 검출하고 있지 않다고 판정된 경우, 스텝 S263 및 스텝 S264의 처리가 생략되고 처리는 스텝 S265로 진행된다.
스텝 S265에 있어서, 가역 복호부(372)는, 스텝 S261에 있어서 읽어들여진 비트 스트림을 가역 복호한다.
스텝 S266에 있어서, 가역 복호부(372)는, 모든 비트 스트림을 처리하였는지 여부를 판정한다. 미처리 비트 스트림이 존재한다고 판정된 경우, 처리는 스텝 S261로 되돌아간다. 스텝 S261 내지 스텝 S266의 처리가 각 비트 스트림에 대하여 반복 실행되어, 스텝 S266에 있어서, 비트 스트림을 전부 처리한 것으로 판정된 경우, 처리는 스텝 S267로 진행된다.
스텝 S267에 있어서, 다치화부(373)는, 스텝 S265의 처리에 의하여 얻어진 2치 데이터를 읽어들인다.
스텝 S268에 있어서, 다치화부(373)는 그 2치 데이터에, 스텝 S263에 있어서 특정된 종단 위치가 포함되는지 여부를 판정한다. 종단 위치가 포함된다고 판정된 경우, 처리는 스텝 S269로 진행된다.
스텝 S269에 있어서, 다치화부(373)는, 그 종단 위치에 대응하는 노드를 종단(리프 노드)으로 하여 2치 데이터를 다치화한다. 즉, 다치화부(373)는, 2치 데이터를 다치화하고, 그 종단 위치에 대응하는 노드를 종단(리프 노드)으로 하도록 Octree 패턴을 재구축한다. 즉, 깊이 제어 정보(종단 식별 비트 패턴의 비트 열)를, 재구축할 Octree 패턴에 반영시킨다.
스텝 S269의 처리가 종료되면 처리는 스텝 S271로 진행된다. 또한 스텝 S268에 있어서, 2치 데이터에 종단 위치가 포함되지 않는다고 판정된 경우, 처리는 스텝 S270으로 진행된다.
스텝 S270에 있어서, 다치화부(373)는 2치 데이터를 다치화하고, 일반적인 Octree 패턴의 경우와 마찬가지로 Octree 패턴을 재구축한다. 스텝 S270의 처리가 종료되면 처리는 스텝 S271로 진행된다.
스텝 S271에 있어서, 다치화부(373)는, 2치 데이터를 전부 처리하였는지 여부를 판정한다. 미처리 2치 데이터가 존재하는 경우, 그 미처리 2치 데이터를 새로운 처리 대상으로 하고 처리를 스텝 S267로 되돌린다. 즉, 모든 2치 데이터에 대하여 스텝 S267 내지 스텝 S271의 처리가 실행된다. 그리고 스텝 S271에 있어서 2치 데이터를 전부 처리한 것으로 판정된 경우, 처리는 스텝 S272로 진행된다.
스텝 S272에 있어서, 지오메트리 재구성부(374)는, 이상의 처리에 의하여 얻어진 Octree 패턴 데이터를 이용하여 지오메트리 데이터를 재구성한다.
스텝 S272의 처리가 종료되면 비트 스트림 복호 처리가 종료되고, 처리는 도 13으로 되돌아간다.
이상과 같이 각 처리를 실행함으로써 복호 장치(250)는, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
<4. 제3 실시 형태>
<split_voxel_flag>
여기서 「깊이 제어 정보」는 임의의 정보이지만, 예를 들어 『Octree 패턴의 최하위 레벨의, 그 깊이 제어 정보에 대응하는 특정 노드에 대한 자손 노드의 추가에 관한 추가 정보』이도록 해도 된다. 이와 같이 함으로써, 복호측에 있어서, 비트 스트림에 포함되는 그 「추가 정보」에 기초하여, 특정 노드에 대한 자손 노드를 추가할 수 있다.
또한 이 「추가 정보」는, 비트 스트림의, Octree 패턴의 최하위 레벨의 자손 노드를 추가할 노드에 대응하는 위치에 삽입되도록 해도 된다. 이와 같이 함으로써 복호측에 있어서, 「추가 정보」가 삽입된 위치로부터, 자손 노드를 추가할 노드(추가 정보에 대응하는 노드)를 보다 용이하게 특정할 수 있다.
예를 들어 도 24에 도시되는 Octree 패턴과 같이, 최하위 레벨의 일부 노드에 대하여 「추가 정보」를 설정한다. 이 「추가 정보」에는, 자손 노드의 추가에 관한 정보가 포함된다. 이 「추가 정보」에 포함되는 구체적인 내용은 임의이다. 예를 들어 「추가 정보」에, 비트 스트림의 그 추가 정보가 삽입된 위치에 대응하는 노드가 더 분할되는지를 나타내는 소정의 플래그 정보(split_voxel_flag)가 포함되도록 해도 된다. 또한, 예를 들어 「추가 정보」에, 추가할 자손 노드의 깊이에 관한 정보가 더 포함되도록 해도 된다. 이와 같이 함으로써, 추가 정보에 기초하여 보다 다양한 구성의 자손 노드를 추가할 수 있다.
예를 들어 도 24의 경우, Octree 패턴의, 최하위 레벨의 우측에서 2번째의 노드에 추가 정보로서 「소정의 플래그 정보(split_voxel_flag)」가 설정되어 있다. 이 정보에 기초하여 이 노드에는 자식 노드가 추가된다.
즉, 이와 같은 「추가 정보(깊이 제어 정보)」에 의하여, Octree 패턴에 있어서 포인트의 해상도의 부분적인 제어를 표현하는 것이 가능해진다. 즉, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음).
달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있으므로(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있으므로), 부호화 효율의 저감을 억제할 수 있다.
여기서 이 「플래그 정보」의 명칭(신택스)은 임의이며, 「split_voxel_flag」 이외여도 된다. 또한 이 「플래그 정보(split_voxel_flag)」의 값은 임의이다. 예를 들어 「1」이어도 되고 「0」이어도 된다. 또한 이 「플래그 정보」가 복수 비트(bit)에 의하여 구성되도록 해도 된다. 또한, 이 「플래그 정보」가 리프 노드인 것 이외를 나타내는 정보가 포함되도록 해도 된다. 또한, 이 「플래그 정보」가 모든 노드에 설정되고, 그 값에 의하여 자손 노드가 추가될지 여부를 식별할 수 있도록 해도 된다. 또한 이 「플래그 정보」가 자손 노드의 모든 구성을 나타내는 정보를 포함하도록 하고, Octree 패턴의 최하위 레벨(Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨)의 노드에 설정된 「플래그 정보」가 추가할 모든 자손 노드를 표현하도록 해도 된다. 즉, 예를 들어 복수 계층의 자손 노드를 추가하는 경우에도, 그 Octree 패턴의 최하위 레벨의 노드에 설정되는 하나의 「플래그 정보」에 의하여 그 추가할 모든 자손 노드를 표현하도록 해도 된다. 또한 이 「플래그 정보」가, 설정된 노드의 분할에 관한 정보만을 포함하도록 해도 된다. 즉, 예를 들어 복수 계층의 자손 노드를 추가하는 경우에는, 그 자손 노드 각각에 이 「플래그 정보」를 설정함으로써 그 복수 계층의 자손 노드를 표현하도록 해도 된다.
또한 이 「플래그 정보」는, 리프 노드와의 대응 관계가 밝혀져 있는 것이면, 비트 스트림의, 대응하는 노드의 위치 이외에 삽입되도록 해도 된다. 예를 들어 이 「플래그 정보」를 통합하여 헤더나 파라미터 세트 등에 저장하도록 해도 된다. 또한 이 「플래그 정보」를, Octree 패턴 데이터의 비트 스트림과 다른 비트 스트림에 포함시키도록 해도 된다. 이들 경우, 어느 「플래그 정보」가 어느 리프 노드에 대응하고 있는지를 나타내는 정보도 필요해진다.
<부호화부>
도 25는, 이 경우의 부호화부(114)(도 3)의 주된 구성예를 도시하는 블록도이다. 도 25에 도시된 바와 같이 이 경우의 부호화부(114)는 Octree 심도 제어부(421), 추가 정보 생성부(422), Octree 부호화부(423), 2치화부(424) 및 가역 부호화부(425)를 갖는다.
Octree 심도 제어부(421)는 Octree 패턴의 심도에 관한 제어를 행한다. 예를 들어 Octree 심도 제어부(421)는 추가 정보 생성부(422)를 제어함으로써, 추가 정보의 생성(즉, 자손 노드의 추가)을 제어하여 Octree 패턴의 깊이를 제어한다.
여기서 Octree 심도 제어부(421)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree의 깊이 제어에 관한 처리를 행하도록 해도 된다.
추가 정보 생성부(422)는, Octree 심도 제어부(421)로 지정된 노드(최하위 레벨의 리프 노드)에 대하여 추가 정보를 생성한다. 추가 정보 생성부(422)는, 생성한 그 추가 정보를 가역 부호화부(425)에 공급한다.
여기서 추가 정보 생성부(422)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 추가 정보의 생성에 관한 처리를 행하도록 해도 된다.
Octree 부호화부(423)는 Octree 부호화에 관한 처리를 행한다. 예를 들어 Octree 부호화부(423)는, 복셀 설정부(113)로부터 공급되는 복셀 데이터의 지오메트리 데이터(위치 정보)를 Octree 부호화하여 Octree 패턴 데이터를 생성한다.
도 25에 도시된 바와 같이 Octree 부호화부(423)는 Octree 구성부(431)를 갖는다.
Octree 구성부(431)는 Octree 패턴의 구성에 관한 처리를 행한다. 예를 들어 Octree 구성부(431)는 지오메트리 데이터에 기초하여 Octree 패턴을 구축하고, 그 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 생성한다. Octree 부호화부(423)(Octree 구성부(431))는, 생성한 Octree 패턴 데이터를 2치화부(424)에 공급한다.
여기서 Octree 부호화부(423)(Octree 구성부(431))는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, Octree 부호화에 관한 처리를 행하도록 해도 된다.
2치화부(424)는 2치화에 관한 처리를 행한다. 예를 들어 2치화부(424)는, Octree 부호화부(423)로부터 공급되는 Octree 패턴 데이터를 2치화하여 2치 데이터를 생성한다. 2치화부(424)는, 생성한 2치 데이터를 가역 부호화부(425)에 공급한다.
여기서 2치화부(424)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 2치화에 관한 처리를 행하도록 해도 된다.
가역 부호화부(425)는 가역 부호화에 관한 처리를 행한다. 예를 들어 가역 부호화부(425)는, 2치화부(424)로부터 공급되는 2치 데이터를 가역 부호화하여 비트 스트림(즉, Octree 패턴 데이터의 부호화 데이터)을 생성한다. 이 가역 부호화의 방법은 임의이며, 예를 들어 CABAC여도 된다.
또한 가역 부호화부(425)는, 추가 정보 생성부(422)로부터 공급되는 추가 정보를 가역 부호화하여, 비트 스트림의, 자손 노드를 추가할 리프 노드에 대응하는 위치에 삽입한다. 또한 가역 부호화부(425)는, Octree 패턴 데이터의 Octree 패턴의 깊이(레벨 수)를 지정하는 정보를 헤더나 파라미터 세트 등에 저장하여 비트 스트림에 포함시킨다.
가역 부호화부(425)는, 생성한 비트 스트림을 부호화부(114)의 외부(즉, 부호화 장치(100)의 외부)로 출력한다.
여기서 가역 부호화부(425)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 부호화에 관한 처리를 행하도록 해도 된다.
상술한 바와 같이, Octree 패턴의 최하위 레벨의 리프 노드에 자손 노드를 더 추가하는 경우, 가역 부호화부(425)는 비트 스트림의, 그 노드에 대응하는 위치에 추가 정보(깊이 제어 정보)를 삽입한다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 Octree 패턴 데이터의 부호화 방법은 임의이다. 예를 들어 CAVLC(Context-based Adaptive Variable Length Code)를 이용하여 Octree 패턴 데이터를 부호화하도록 해도 된다. 그 경우, 2치화부(424) 및 가역 부호화부(425) 대신, CAVLC를 행하는 가역 부호화부를 마련하도록 해도 된다.
<부호화 처리의 흐름>
이 경우에도, 부호화 장치(100)에 의하여 실행되는 부호화 처리의 흐름은, 도 7의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<지오메트리 데이터 부호화 처리의 흐름>
다음으로, 이 경우의, 도 7의 스텝 S104에 있어서 실행되는 지오메트리 데이터 부호화 처리의 흐름의 예를, 도 26의 흐름도를 참조하여 설명한다.
지오메트리 데이터 부호화 처리가 개시되면, Octree 심도 제어부(421)는 도 26의 스텝 S291에 있어서, Octree 패턴의 처리 대상 노드를 초기화한다.
스텝 S292에 있어서, Octree 심도 제어부(421)는, 처리 대상 노드의 레벨이 최하위 레벨인지 여부를 판정한다. 처리 대상 노드의 레벨이 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S293으로 진행된다.
스텝 S293에 있어서, Octree 심도 제어부(421)는 처리 대상 노드에 있어서 Octree를 깊게 할지 여부, 즉, 자식 노드를 추가할지 여부를 판정한다. Octree를 깊게 하는 것으로(자식 노드를 추가하는 것으로) 판정된 경우, 처리는 스텝 S294로 진행된다.
스텝 S294에 있어서, 추가 정보 생성부(422)는, 처리 대상 노드에 추가할 자손 노드에 관한 정보(예를 들어 split_voxel_flag 등)를 포함하는 추가 정보를 생성한다.
스텝 S294의 처리가 종료되면 처리는 스텝 S296으로 진행된다. 또한 스텝 S293에 있어서, Octree를 깊게 하지 않는 것으로(즉, 처리 대상 노드에 자식 노드를 추가하지 않는 것으로) 판정된 경우, 스텝 S294의 처리가 생략되고 처리는 스텝 S296으로 진행된다.
또한 스텝 S292에 있어서, 처리 대상 노드가 최하위 레벨이 아니라고 판정된 경우, 처리는 스텝 S295로 진행된다.
스텝 S295에 있어서, Octree 부호화부(423)(Octree 구성부(431))는 지오메트리 데이터에 기초하여, 자식 노드의 비트 패턴을 갖는 비트 열을 생성하고, 그 비트 열을 처리 대상 노드에 설정한다. 스텝 S295의 처리가 종료되면 처리는 스텝 S296으로 진행된다.
스텝 S296에 있어서, Octree 심도 제어부(421)는, 모든 노드를 처리하였는지 여부를 판정한다. 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 있지 않아서 미처리 노드가 존재한다고 판정된 경우, 처리는 스텝 S297로 진행된다.
스텝 S297에 있어서, Octree 심도 제어부(421)는 처리 대상 노드를 전순 다음의 노드로 설정한다. 처리 대상 노드가 갱신되면 처리는 스텝 S292로 되돌아간다. 즉, 스텝 S292 내지 스텝 S297의 각 처리가, 지오메트리 데이터에 대응하는 Octree 패턴의 각 노드에 대하여 행해진다.
그리고 스텝 S296에 있어서, 지오메트리 데이터에 대응하는 Octree 패턴이 구축되어 모든 노드를 처리한 것으로 판정된 경우, 처리는 스텝 S298로 진행된다.
스텝 S298에 있어서, 2치화부(424)는, 상술한 처리에 의하여 생성된 지오메트리 데이터에 대응하는 Octree 패턴 데이터를 2치화한다.
스텝 S299에 있어서, 가역 부호화부(425)는 2치 데이터의 자손 노드를 추가할 노드에 대응하는 위치에 추가 정보를 부가한다.
스텝 S300에 있어서, 가역 부호화부(425)는 그 2치 데이터를 가역 부호화하여 비트 스트림을 생성한다.
스텝 S300의 처리가 종료되면 지오메트리 데이터 부호화 처리가 종료되고, 처리는 도 7로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 부호화 장치(100)는 이 경우에도, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
또한 이상에 있어서는 Octree 패턴의 주사순으로서 전순을 예로 들어 설명하였지만, 이 주사순은 임의이며 전순에 한정되지 않는다. 예를 들어 선행순, 전치순, 도중순, 간순, 중간순, 통과순, 후순, 후행순, 후치순, 복귀순, 또는 레벨순 등이어도 된다.
<복호 장치>
이 경우의 부호화 장치(100)가 생성한 비트 스트림을 복호하는 복호 장치(250)도, 도 11을 참조하여 설명한 경우와 마찬가지의 구성을 갖는다.
단, 이 경우, 깊이 제어 정보가, 예를 들어 『Octree 패턴의 최하위 레벨의, 깊이 제어 정보에 대응하는 특정 노드에 대한 자손 노드의 추가에 관한 추가 정보』이도록 해도 된다.
이와 같이 함으로써, 복호부(261)는 비트 스트림에 있어서 그 「추가 정보」를 검출함으로써, 용이하게 「특정 노드에 추가할 자손 노드」를 파악할 수 있다.
또한 상술한 바와 같이 이 「추가 정보」는, 비트 스트림의, Octree 패턴의 최하위 레벨의, 자손 노드를 추가할 노드에 대응하는 위치에 삽입되어 있도록 해도 된다. 즉, 비트 스트림에 삽입되는 「추가 정보(깊이 제어 정보)」의 위치에 의하여 Octree 패턴의 최하위 레벨의, 자손 노드를 추가할 노드(리프 노드)의 위치가 나타나도록 해도 된다.
또한 상술한 바와 같이, 「추가 정보」에, 비트 스트림의 그 추가 정보가 삽입된 위치에 대응하는 노드가 더 분할되는지를 나타내는 소정의 플래그 정보(split_voxel_flag)가 포함되도록 해도 된다. 또한 상술한 바와 같이 「추가 정보」에, 추가할 자손 노드의 깊이에 관한 정보가 더 포함되도록 해도 된다. 이와 같이 함으로써, 추가 정보에 기초하여 보다 다양한 구성의 자손 노드를 추가할 수 있다.
이와 같이 함으로써, 복호부(261)는 비트 스트림을 복호하여 Octree 패턴을 재구축할 때, 그 비트 스트림에 있어서의 「추가 정보(깊이 제어 정보)」의 위치를 검출(특정)함으로써, Octree 패턴의 최하위 레벨의, 추가 정보에 대응하는 노드에 자손 노드를 추가하도록 Octree 패턴을 재구축할 수 있다. 즉, 최하위 레벨의 일부 리프 노드에 추가된 자손 노드를 포함하는 Octree 패턴을 정확히 복호할 수 있다.
<복호부>
도 27은, 이 경우의 복호부(261)의 주된 구성예를 도시하는 블록도이다. 도 27에 도시된 바와 같이 복호부(261)는 가역 복호부(471), 추가 정보 검출부(472), 다치화부(473), 재구성 제어부(474) 및 지오메트리 재구성부(475)를 갖는다.
가역 복호부(471)는 가역 복호에 관한 처리를 행한다. 예를 들어 가역 복호부(471)는, 부호화 장치(100)에 의하여 생성된 비트 스트림을, 가역 부호화부(425)에 대응하는 방법으로 가역 복호하여 2치 데이터를 얻는다. 이 가역 복호 방법은, 가역 부호화부(425)의 가역 부호화 방법에 대응하는 것이면 어떠한 방법이어도 된다. 예를 들어 CABAC여도 된다.
가역 복호부(471)는, 이와 같이 하여 얻은 2치 데이터를 추가 정보 검출부(472) 및 다치화부(473)에 공급한다.
여기서 가역 복호부(471)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 가역 복호에 관한 처리를 행하도록 해도 된다.
추가 정보 검출부(472)는 추가 정보의 검출에 관한 처리를 행한다. 예를 들어 추가 정보 검출부(472)는, 비트 스트림에 포함되는 추가 정보의 검출을 행한다. 그리고 추가 정보 검출부(472)는, 검출한 추가 정보를 재구성 제어부(474)에 공급한다.
여기서 추가 정보 검출부(472)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 추가 정보의 검출에 관한 처리를 행하도록 해도 된다.
다치화부(473)는 다치화에 관한 처리를 행한다. 예를 들어 다치화부(473)는, 가역 복호부(471)로부터 공급되는 2치 데이터를 다치화하고, Octree 패턴을 재구축하여 Octree 패턴 데이터를 생성한다. 다치화부(473)는, 이와 같이 하여 얻어진 Octree 패턴 데이터를 지오메트리 재구성부(475)에 공급한다.
여기서 다치화부(473)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 다치화에 관한 처리를 행하도록 해도 된다.
재구성 제어부(474)는 재구성의 제어에 관한 처리를 행한다. 예를 들어 재구성 제어부(474)는, 추가 정보 검출부(472)에 의하여 검출된 추가 정보에 기초하여 지오메트리 재구성부(475)를 제어하여, Octree 패턴에 있어서, 최하위 레벨의, 추가 정보에 대응하는 노드에 대하여, 추가 정보에 대응하는 자손 노드를 추가시키고, 그 추가를 반영하도록 지오메트리 데이터를 재구성시킨다.
여기서 재구성 제어부(474)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 재구성의 제어에 관한 처리를 행하도록 해도 된다.
지오메트리 재구성부(475)는 지오메트리 데이터의 재구성에 관한 처리를 행한다. 예를 들어 지오메트리 재구성부(475)는 재구성 제어부(474)의 제어에 따라, 다치화부(373)로부터 공급되는 Octree 패턴 데이터를 이용하여 지오메트리 데이터를 재구성한다. 즉, 지오메트리 재구성부(475)는, 추가 정보에 대응하는 자손 노드를, Octree 패턴의 최하위 레벨의, 추가 정보에 대응하는 노드에 대하여 추가하고, 그 추가를 반영하도록 지오메트리 데이터를 재구성한다.
지오메트리 재구성부(475)는, 얻어진 지오메트리 데이터를 포인트 클라우드화 처리부(262)(도 11)에 공급한다.
또한 지오메트리 재구성부(475)는 어떠한 구성을 갖도록 해도 되지만, 예를 들어 CPU, ROM, RAM 등을 갖고, CPU가, ROM 등에 기억되어 있는 프로그램이나 데이터를 RAM에 로드하여 실행함으로써, 지오메트리 데이터의 재구성에 관한 처리를 행하도록 해도 된다.
이상과 같이, 가역 복호부(471) 내지 지오메트리 재구성부(475)는 비트 스트림을 복호하고, 그 비트 스트림에 삽입된 소정의 플래그 정보(깊이 제어 정보)에 기초하여, 그 최하위 레벨과 다른 레벨의 리프 노드를 포함하는 Octree 패턴을 구축하고, 그 Octree 패턴에 기초하는 지오메트리 데이터를 재구성한다. 즉, 복호부(261)는, 부분적으로 해상도를 제어한 Octree 패턴을 실현하고, 그 Octree 패턴에 대응하는 지오메트리 데이터를 얻을 수 있다.
따라서 Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
여기서 비트 스트림의 복호 방법은, 그 부호화 방법에 대응하는 것이면 임의이며, 상술한 예에 한정되지 않는다. 예를 들어 CAVLC를 이용하여 비트 스트림을 복호하도록 해도 된다. 즉, 이 경우, 비트 스트림은, CAVLC를 이용하여 부호화되어 있다. 그 경우, 가역 복호부(471) 및 다치화부(473) 대신, CAVLC를 행하는 가역 복호부를 마련하도록 해도 된다.
<복호 처리의 흐름>
이 경우에도, 복호 장치(250)에 의하여 실행되는 복호 처리의 흐름은, 도 13의 흐름도를 참조하여 설명한 경우와 마찬가지이므로 그 설명은 생략한다.
<비트 스트림 복호 처리의 흐름>
다음으로, 도 13의 스텝 S161에 있어서 실행되는 비트 스트림 복호 처리의 흐름의 예를, 도 28의 흐름도를 참조하여 설명한다.
비트 스트림 복호 처리가 개시되면, 가역 복호부(471)는, 스텝 S321에 있어서, 비트 스트림을 가역 복호하여 2치 데이터를 얻는다.
스텝 S322에 있어서, 추가 정보 검출부(472)는 스텝 S321에 있어서 얻어진 2치 데이터에 추가 정보가 포함되는지 여부를 판정한다. 2치 데이터에 추가 정보가 포함된다고 판정한 경우, 처리는 스텝 S323으로 진행된다.
스텝 S323에 있어서, 다치화부(473)는 그 2치 데이터를 다치화하여 최하위 레벨까지의 Octree 패턴 데이터를 생성한다. 또한 재구성 제어부(474)는, 검출된 추가 정보에 기초하여, Octree 패턴의 최하위 레벨의, 추가 정보에 대응하는 노드에 대하여, 추가 정보에 대응하는 자손 노드를 추가시킨다. 스텝 S323의 처리가 종료되면 처리는 스텝 S325로 진행된다.
또한 스텝 S322에 있어서, 2치 데이터에 추가 정보가 포함되지 않는다고 판정된 경우, 처리는 스텝 S324로 진행된다.
스텝 S324에 있어서, 다치화부(473)는 그 2치 데이터를 다치화하여, 최하위 레벨까지의 Octree 패턴 데이터를 생성한다. 스텝 S324의 처리가 종료되면 처리는 스텝 S325로 진행된다.
스텝 S325에 있어서, 지오메트리 재구성부(475)는, Octree 패턴에 대응하는 지오메트리 데이터를 재구성한다. Octree 패턴에 자손 노드가 추가된 경우, 지오메트리 재구성부(475)는, 그 추가를 반영하도록 지오메트리 데이터를 재구성한다.
스텝 S325의 처리가 종료되면, 비트 스트림 복호 처리가 종료되고, 처리는 도 13으로 되돌아간다.
이상과 같이 각 처리를 실행함으로써, 복호 장치(250)는, Octree 부호화를 행하는 포인트 클라우드에 있어서 포인트의 해상도의 부분적인 제어를 실현할 수 있다(트리 구조화 가능한 데이터 군의 해상도를 부분적으로 제어할 수 있음). 달리 말하면, 포인트 클라우드의 포인트의 해상도를 부분적으로 제어하는 경우에 있어서도 Octree 부호화를 적용할 수 있어서(데이터 군의 해상도를 부분적으로 제어하는 경우에도 그 데이터 군의 트리 구조화를 실현할 수 있어서), 부호화 효율의 저감을 억제할 수 있다.
<5. 그 외>
<제어 정보>
이상의 각 실시 형태에 있어서 설명한 본 기술에 관한 제어 정보를 부호화측으로부터 복호측으로 전송하도록 해도 된다. 예를 들어 상술한 본 기술을 적용하는 것을 허가(또는 금지)할지 여부를 제어하는 제어 정보(예를 들어 enabled_flag)를 전송하도록 해도 된다. 또한, 예를 들어 상술한 본 기술을 적용할 것을 허가(또는 금지)하는 블록 사이즈의 상한 혹은 하한, 또는 그 양쪽을 지정하는 제어 정보를 전송하도록 해도 된다.
<소프트웨어>
상술한 일련의 처리는 하드웨어에 의하여 실행시킬 수도 있고, 소프트웨어에 의하여 실행시킬 수도 있다. 또한 일부 처리를 하드웨어에 의하여 실행시키고, 다른 처리를 소프트웨어에 의하여 실행시킬 수도 있다. 일련의 처리를 소프트웨어에 의하여 실행하는 경우에는, 그 소프트웨어를 구성하는 프로그램이 컴퓨터에 인스톨된다. 여기서 컴퓨터에는, 전용 하드웨어에 내장되어 있는 컴퓨터나, 각종 프로그램을 인스톨함으로써 각종 기능을 실행하는 것이 가능한, 예를 들어 범용 퍼스널 컴퓨터 등이 포함된다.
도 29는, 상술한 일련의 처리를 프로그램에 의하여 실행하는 컴퓨터의 하드웨어의 구성예를 도시하는 블록도이다.
도 29에 도시하는 컴퓨터(900)에 있어서, CPU(Central Processing Unit)(901), ROM(Read Only Memory)(902), RAM(Random Access Memory)(903)은 버스(904)를 통하여 서로 접속되어 있다.
버스(904)에는 또한 입출력 인터페이스(910)도 접속되어 있다. 입출력 인터페이스(910)에는 입력부(911), 출력부(912), 기억부(913), 통신부(914) 및 드라이브(915)가 접속되어 있다.
입력부(911)는, 예를 들어 키보드, 마우스, 마이크로폰, 터치 패널, 입력 단자 등을 포함한다. 출력부(912)는, 예를 들어 디스플레이, 스피커, 출력 단자 등을 포함한다. 기억부(913)는, 예를 들어 하드 디스크, RAM 디스크, 불휘발성 메모리 등을 포함한다. 통신부(914)는, 예를 들어 네트워크 인터페이스를 포함한다. 드라이브(915)는, 자기 디스크, 광 디스크, 광 자기 디스크, 또는 반도체 메모리 등의 리무버블 미디어(921)를 구동한다.
이상과 같이 구성되는 컴퓨터에서는, CPU(901)가, 예를 들어 기억부(913)에 기억되어 있는 프로그램을, 입출력 인터페이스(910) 및 버스(904)를 통하여 RAM(903)에 로드하여 실행함으로써, 상술한 일련의 처리가 행해진다. RAM(903)에는 또한, CPU(901)가 각종 처리를 실행하는 데 있어서 필요한 데이터 등도 적당히 기억된다.
컴퓨터(CPU(901))가 실행하는 프로그램은, 예를 들어 패키지 미디어 등으로서의 리무버블 미디어(921)에 기록하여 적용할 수 있다. 그 경우, 프로그램은, 리무버블 미디어(921)를 드라이브(915)에 장착함으로써, 입출력 인터페이스(910)를 통하여 기억부(913)에 인스톨할 수 있다. 또한 이 프로그램은, 로컬 에어리어 네트워크, 인터넷, 디지털 위성 방송과 같은 유선 또는 무선 전송 매체를 통하여 제공할 수도 있다. 그 경우, 프로그램은, 통신부(914)에서 수신하여 기억부(913)에 인스톨할 수 있다. 그 외에 이 프로그램은 ROM(902)이나 기억부(913)에 미리 인스톨해 둘 수도 있다.
<보충>
본 기술의 실시 형태는 상술한 실시 형태에 한정되는 것은 아니며, 본 기술의 요지를 일탈하지 않는 범위에 있어서 다양한 변경이 가능하다.
예를 들어 본 기술은, 장치 또는 시스템을 구성하는 모든 구성, 예를 들어 시스템 LSI(Large Scale Integration) 등으로서의 프로세서, 복수의 프로세서 등을 이용하는 모듈, 복수의 모듈 등을 이용하는 유닛, 유닛에 그 외의 기능을 더 부가한 세트 등(즉, 장치의 일부 구성)으로서 실시할 수도 있다.
또한 본 명세서에 있어서 시스템이란, 복수의 구성 요소(장치, 모듈(부품) 등)의 집합을 의미하며, 모든 구성 요소가 동일 하우징 내에 있는지 여부는 불문한다. 따라서 별개의 하우징에 수납되고 네트워크를 통하여 접속되어 있는 복수의 장치, 및 하나의 하우징 내에 복수의 모듈이 수납되어 있는 하나의 장치는 모두 시스템이다.
또한 상술한 처리부는, 그 처리부에 대하여 설명한 기능을 갖도록 하면, 어떠한 구성에 의하여 실현하도록 해도 된다. 예를 들어 처리부가, 임의의 회로, LSI, 시스템 LSI, 프로세서, 모듈, 유닛, 세트, 디바이스, 장치, 또는 시스템 등에 의하여 구성되도록 해도 된다. 또한 그것들을 복수 조합하도록 해도 된다. 예를 들어 복수의 회로, 복수의 프로세서 등과 같이 동일한 종류의 구성을 조합하도록 해도 되고, 회로와 LSI 등과 같이 다른 종류의 구성을 조합하도록 해도 된다.
또한, 예를 들어 하나의 장치(또는 처리부)로서 설명한 구성을 분할하여 복수의 장치(또는 처리부)로서 구성하도록 해도 된다. 반대로, 이상에 있어서 복수의 장치(또는 처리부)로서 설명한 구성을 통합하여 하나의 장치(또는 처리부)로서 구성되도록 해도 된다. 또한 각 장치(또는 각 처리부)의 구성에, 상술한 것 이외의 구성을 부가하도록 해도 물론 된다. 또한 시스템 전체로서의 구성이나 동작이 실질적으로 동일하면, 어떠한 장치(또는 처리부)의 구성의 일부를 다른 장치(또는 다른 처리부)의 구성에 포함시키도록 해도 된다.
또한, 예를 들어 본 기술은, 하나의 기능을, 네트워크를 통하여 복수의 장치에서 분담하여 공동으로 처리하는 클라우드 컴퓨팅의 구성을 취할 수 있다.
또한, 예를 들어 상술한 프로그램은 임의의 장치에 있어서 실행할 수 있다. 그 경우, 그 장치가 필요한 기능(기능 블록 등)을 갖고 필요한 정보를 얻을 수 있게 하면 된다.
또한, 예를 들어 상술한 흐름도에서 설명한 각 스텝은, 하나의 장치에서 실행하는 것 외에 복수의 장치에서 분담하여 실행할 수 있다. 또한 하나의 스텝에 복수의 처리가 포함되는 경우에는, 그 하나의 스텝에 포함되는 복수의 처리는, 하나의 장치에서 실행하는 것 외에 복수의 장치에서 분담하여 실행할 수 있다. 달리 말하면, 하나의 스텝에 포함되는 복수의 처리를 복수의 스텝의 처리로서 실행할 수도 있다. 반대로, 복수의 스텝으로서 설명한 처리를 하나의 스텝으로서 통합하여 실행할 수도 있다.
컴퓨터가 실행하는 프로그램은, 프로그램을 기술하는 스텝의 처리가, 본 명세서에서 설명하는 순서에 따라 시계열로 실행되도록 해도 되고, 병렬로, 혹은 호출이 행해졌을 때 등의 필요한 타이밍에 개별로 실행되도록 해도 된다. 즉, 모순이 생기지 않는 한, 각 스텝의 처리가 상술한 순서와 다른 순서로 실행되도록 해도 된다. 또한 이 프로그램을 기술하는 스텝의 처리가, 다른 프로그램의 처리와 병렬로 실행되도록 해도 되고, 다른 프로그램의 처리와 조합하여 실행되도록 해도 된다.
본 명세서에 있어서 복수 설명한 본 기술은, 모순이 생기지 않는 한 각각 독립적으로 단체에서 실시할 수 있다. 물론 임의의 복수의 본 기술을 병용하여 실시할 수도 있다. 예를 들어 어느 실시 형태에 있어서 설명한 본 기술의 일부 또는 전부를, 다른 실시 형태에 있어서 설명한 본 기술의 일부 또는 전부와 조합하여 실시할 수도 있다. 또한 상술한 임의의 본 기술의 일부 또는 전부를, 상술하지 않은 다른 기술과 병용하여 실시할 수도 있다.
또한 본 기술은 이하와 같은 구성도 취할 수 있다.
(1) Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 상기 Octree 패턴의, 상기 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림을 생성하는 부호화부
를 구비하는, 정보 처리 장치.
(2) 상기 깊이 제어 정보는, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인 것을 나타내는 소정의 비트 열인,
(1)에 기재된 정보 처리 장치.
(3) 상기 소정의 비트 열은, 상기 Octree 패턴 데이터에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 노드에 설정되어 있고, 상기 소정의 비트 열이 설정된 상기 노드가 리프 노드인 것을 나타내는 비트 패턴을 갖고,
상기 부호화부는, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 리프 노드에 상기 소정의 비트 열이 설정된 상기 Octree 패턴 데이터를 부호화하여 상기 비트 스트림을 생성하도록 구성되는,
(2)에 기재된 정보 처리 장치.
(4) 상기 소정의 비트 열의 상기 비트 패턴은, 상기 Octree 패턴의 리프 노드가 아닌 노드에 설정되는 비트 열에는 이용되지 않는 비트 패턴인,
(3)에 기재된 정보 처리 장치.
(5) 상기 비트 패턴은 「00000000」인,
(4)에 기재된 정보 처리 장치.
(6) 상기 Octree 패턴의 상기 최하위 레벨과 다른 레벨의 원하는 노드에 상기 소정의 비트 열을 설정하는 설정부를 더 구비하고,
상기 부호화부는, 상기 설정부가 설정한 상기 소정의 비트 열을 포함하는 상기 Octree 패턴 데이터를 부호화하여 상기 비트 스트림을 생성하도록 구성되는,
(3) 내지 (5) 중 어느 것에 기재된 정보 처리 장치.
(7) 상기 설정부는, 포인트 클라우드 데이터를 양자화한 복셀 데이터를 Octree 부호화하여 상기 Octree 패턴을 생성할 때, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드로 하도록 하고 상기 비트 열을 설정하는,
(6)에 기재된 정보 처리 장치.
(8) 상기 설정부는, 상기 Octree 패턴 데이터에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화하고 상기 비트 열을 설정하는,
(6)에 기재된 정보 처리 장치.
(9) 상기 깊이 제어 정보는, 상기 비트 스트림에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인지를 나타내는 소정의 플래그 정보인,
(1) 내지 (8) 중 어느 것에 기재된 정보 처리 장치.
(10) 상기 부호화부는, 상기 비트 스트림의, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 리프 노드에 대응하는 위치에, 상기 위치에 대응하는 노드가 리프 노드인지를 나타내는 상기 소정의 플래그 정보를 삽입하는,
(9)에 기재된 정보 처리 장치.
(11) 상기 Octree 패턴의 상기 최하위 레벨과 다른 레벨에 있어서, 리프 노드로 할 노드를 특정하는 특정부를 더 구비하고,
상기 부호화부는, 상기 비트 스트림의, 상기 특정부에 의하여 특정된 상기 노드에 대응하는 위치에 상기 소정의 플래그 정보를 삽입하도록 구성되는,
(10)에 기재된 정보 처리 장치.
(12) 상기 특정부는, 포인트 클라우드 데이터를 양자화한 복셀 데이터를 Octree 부호화하여 상기 Octree 패턴을 생성할 때, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드로 하도록 하고, 상기 원하는 노드를, 리프 노드로 할 노드로서 특정하는,
(11)에 기재된 정보 처리 장치.
(13) 상기 특정부는, 상기 Octree 패턴 데이터에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드를 리프 노드화하고, 상기 원하는 노드를, 리프 노드로 할 노드로서 특정하는,
(11)에 기재된 정보 처리 장치.
(14) 상기 깊이 제어 정보는, 상기 Octree 패턴의 상기 최하위 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드에 대한 자손 노드의 추가에 관한 추가 정보인,
(1) 내지 (13) 중 어느 것에 기재된 정보 처리 장치.
(15) 상기 부호화부는, 상기 비트 스트림의, 상기 Octree 패턴의 상기 최하위 레벨의 상기 자손 노드를 추가할 노드에 대응하는 위치에, 상기 추가 정보를 삽입하는,
(14)에 기재된 정보 처리 장치.
(16) 상기 추가 정보는, 상기 비트 스트림의 상기 추가 정보가 삽입된 상기 위치에 대응하는 노드가 더 분할되는지를 나타내는 소정의 플래그 정보를 포함하는,
(15)에 기재된 정보 처리 장치.
(17) 상기 추가 정보는, 추가할 상기 자손 노드의 깊이에 관한 정보를 더 포함하는,
(16)에 기재된 정보 처리 장치.
(18) 상기 추가 정보를 생성하는 생성부를 더 구비하고,
상기 부호화부는, 상기 생성부에 의하여 생성된 상기 추가 정보를, 상기 비트 스트림의, 상기 Octree 패턴의 상기 최하위 레벨의 상기 자손 노드를 추가할 노드에 대응하는 위치에 삽입하는,
(14) 내지 (17) 중 어느 것에 기재된 정보 처리 장치.
(19) Octree 패턴의 데이터인 Octree 패턴 데이터를 부호화하고, 상기 Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보를 포함하는 비트 스트림을 생성하는,
정보 처리 방법.
(21) 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 상기 최하위 레벨과 다른 레벨의 상기 리프 노드를 포함하는 상기 Octree 패턴을 구축하는 복호부
를 구비하는, 정보 처리 장치.
(22) 상기 깊이 제어 정보는, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인 것을 나타내는 소정의 비트 열인,
(21)에 기재된 정보 처리 장치.
(23) 상기 소정의 비트 열은, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 리프 노드에 설정되어 있고, 상기 소정의 비트 열이 설정된 상기 노드가 리프 노드인 것을 나타내는 비트 패턴을 갖는,
(22)에 기재된 정보 처리 장치.
(24) 상기 소정의 비트 열의 상기 비트 패턴은, 상기 Octree 패턴의 리프 노드가 아닌 노드에 설정되는 비트 열에는 이용되지 않는 비트 패턴인,
(23)에 기재된 정보 처리 장치.
(25) 상기 비트 패턴은 「00000000」인,
(24)에 기재된 정보 처리 장치.
(26) 상기 깊이 제어 정보는, 상기 비트 스트림에 있어서, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드가 리프 노드인지를 나타내는 소정의 플래그 정보인,
(21) 내지 (25) 중 어느 것에 기재된 정보 처리 장치.
(27) 상기 소정의 플래그 정보는, 상기 비트 스트림의, 상기 Octree 패턴의 상기 최하위 레벨보다도 상위의 레벨의 리프 노드에 대응하는 위치에 삽입되어 있고, 상기 위치에 대응하는 노드가 리프 노드인지를 나타내는,
(26)에 기재된 정보 처리 장치.
(28) 상기 비트 스트림에 포함되는 상기 소정의 플래그 정보를 검출하는 검출부를 더 구비하고,
상기 복호부는, 상기 검출부에 의하여 검출된 상기 소정의 플래그 정보에 기초하여 상기 Octree 패턴을 구축하도록 구성되는,
(27)에 기재된 정보 처리 장치.
(29) 상기 깊이 제어 정보는, 상기 Octree 패턴의 상기 최하위 레벨의 상기 깊이 제어 정보에 대응하는 특정 노드에 대한 자손 노드의 추가에 관한 추가 정보인,
(21) 내지 (28) 중 어느 것에 기재된 정보 처리 장치.
(30) 상기 추가 정보는, 상기 비트 스트림의, 상기 Octree 패턴의 상기 최하위 레벨의 상기 자손 노드를 추가할 노드에 대응하는 위치에 삽입되어 있는,
(29)에 기재된 정보 처리 장치.
(31) 상기 추가 정보는, 상기 비트 스트림의 상기 추가 정보가 삽입된 상기 위치에 대응하는 노드가 더 분할되는지를 나타내는 소정의 플래그 정보를 포함하는,
(30)에 기재된 정보 처리 장치.
(32) 상기 추가 정보는, 추가할 상기 자손 노드의 깊이에 관한 정보를 더 포함하는,
(31)에 기재된 정보 처리 장치.
(33) 상기 비트 스트림에 포함되는 상기 추가 정보를 검출하는 검출부를 더 구비하고,
상기 복호부는, 상기 검출부에 의하여 검출된 상기 추가 정보에 기초하여, 상기 Octree 패턴의 상기 최하위 레벨의 노드에, 상기 추가 정보에 따른 자손 노드를 추가하도록 구성되는,
(30) 내지 (32) 중 어느 것에 기재된 정보 처리 장치.
(34) 비트 스트림을 복호하고, Octree 패턴의 깊이를 지정하는 정보에 기초하는 최하위 레벨과 다른 레벨에 리프 노드가 형성되는 것을 나타내는 깊이 제어 정보에 기초하여, 상기 최하위 레벨과 다른 레벨의 상기 리프 노드를 포함하는 상기 Octree 패턴을 구축하는,
정보 처리 방법.
100: 부호화 장치
101: 제어부
111: 전처리부
112: 바운딩 박스 설정부
113: 복셀 설정부
114: 부호화부
221: Octree 부호화부
222: 2치화부
223: 가역 부호화부
231: Octree 심도 제어부
232: Octree 구성부
241: Octree 구성부
242: Octree 심도 제어부
250: 복호 장치
261: 복호부
262: 포인트 클라우드화 처리부
271: 가역 복호부
272: 종단 검출부
273: 다치화부
274: 지오메트리 재구성부
321: Octree 부호화부
322: 2치화부
323: 가역 부호화부
331: Octree 심도 제어부
332: Octree 구성부
341: Octree 구성부
342: Octree 심도 제어부
371: 종단 검출부
372: 가역 복호부
373: 다치화부
374: 지오메트리 재구성부
421: Octree 심도 제어부
422: 추가 정보 생성부
423: Octree 부호화부
424: 2치화부
425: 가역 부호화부
431: Octree 구성부
471: 가역 복호부
472: 추가 정보 검출부
473: 다치화부
474: 재구성 제어부
475: 지오메트리 재구성부
900: 컴퓨터

Claims (10)

  1. 3차원 구조를 나타내는 포인트가 존재하는 공간을 재귀적으로 2×2×2분할하고, 최하위 레벨에 자식 노드를 갖지 않는 리프 노드를 갖는 Octree 패턴으로 상기 포인트를 변환함으로써, 상기 Octree 패턴의 데이터인 Octree 패턴 데이터를 나타내는 비트 스트림을 생성하고,
    상기 Octree 패턴 중 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드가 자식 노드를 갖지 않는 리프 노드인지 여부를 나타내는 플래그 정보를, 상기 Octree 패턴과는 다른 신택스로서 설정하는
    부호화부를 구비하는,
    부호화 처리 장치.
  2. 제1항에 있어서,
    상기 부호화부가 상기 비트 스트림의 상기 원하는 노드에 대응하는 위치에 상기 플래그 정보를 삽입하는,
    부호화 처리 장치.
  3. 제1항에 있어서,
    상기 부호화부가 상기 플래그 정보, 및 상기 플래그 정보와 상기 리프 노드의 대응 관계를 나타내는 정보를, 상기 비트 스트림에 포함되는 헤더 또는 파라미터 세트에 저장하는,
    부호화 처리 장치.
  4. 제1항에 있어서,
    상기 플래그 정보는 상기 Octree 패턴의 비트 열보다도 짧은 비트 열을 갖는,
    부호화 처리 장치.
  5. 3차원 구조를 나타내는 포인트가 존재하는 공간을 재귀적으로 2×2×2분할하고, 최하위 레벨에 자식 노드를 갖지 않는 리프 노드를 갖는 Octree 패턴으로 상기 포인트를 변환함으로써, 상기 Octree 패턴의 데이터인 Octree 패턴 데이터를 나타내는 비트 스트림을 생성하고,
    상기 Octree 패턴 중 상기 최하위 레벨보다도 상위의 레벨의 원하는 노드가 자식 노드를 갖지 않는 리프 노드인지 여부를 나타내는 플래그 정보를, 상기 Octree 패턴과는 다른 신택스로서 설정하는,
    부호화 처리 방법.
  6. 비트 스트림을 복호하고, Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드가 자식 노드를 갖지 않는 리프 노드인지 여부를 나타내는 플래그 정보를 취득하고, 상기 플래그 정보에 기초하여, 상기 최하위 레벨보다도 상위의 레벨의 상기 원하는 노드에 상기 리프 노드를 포함하는 상기 Octree 패턴을 재구축하는 복호부를 구비하고,
    상기 플래그 정보는 상기 Octree 패턴과는 다른 신택스인,
    복호 처리 장치.
  7. 제6항에 있어서,
    상기 복호부가 상기 비트 스트림의 상기 원하는 노드에 대응하는 위치로부터 상기 플래그 정보를 검출하는,
    복호 처리 장치.
  8. 제6항에 있어서,
    상기 복호부가 상기 플래그 정보, 및 상기 플래그 정보와 상기 리프 노드의 대응 관계를 나타내는 정보를, 상기 비트 스트림에 포함되는 헤더 또는 파라미터 세트로부터 취득하는,
    복호 처리 장치.
  9. 제6항에 있어서,
    상기 플래그 정보는 상기 Octree 패턴의 비트 열보다도 짧은 비트 열을 갖는,
    복호 처리 장치.
  10. 비트 스트림을 복호하고,
    Octree 패턴의 최하위 레벨보다도 상위의 레벨의 원하는 노드가 자식 노드를 갖지 않는 리프 노드인지 여부를 나타내고, 상기 Octree 패턴과는 다른 신택스로서 설정된 플래그 정보를 취득하고,
    상기 플래그 정보에 기초하여, 상기 최하위 레벨보다도 상위의 레벨의 상기 원하는 노드에 상기 리프 노드를 포함하는 상기 Octree 패턴을 재구축하는,
    복호 처리 방법.
KR1020247013750A 2017-10-05 2018-09-21 정보 처리 장치 및 방법 KR20240063175A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2017195065 2017-10-05
JPJP-P-2017-195065 2017-10-05
PCT/JP2018/034982 WO2019069711A1 (ja) 2017-10-05 2018-09-21 情報処理装置および方法
KR1020207007767A KR102662179B1 (ko) 2017-10-05 2018-09-21 정보 처리 장치 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207007767A Division KR102662179B1 (ko) 2017-10-05 2018-09-21 정보 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20240063175A true KR20240063175A (ko) 2024-05-09

Family

ID=65994329

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247013750A KR20240063175A (ko) 2017-10-05 2018-09-21 정보 처리 장치 및 방법
KR1020207007767A KR102662179B1 (ko) 2017-10-05 2018-09-21 정보 처리 장치 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207007767A KR102662179B1 (ko) 2017-10-05 2018-09-21 정보 처리 장치 및 방법

Country Status (6)

Country Link
US (1) US11200703B2 (ko)
EP (1) EP3694110A4 (ko)
JP (1) JP7268601B2 (ko)
KR (2) KR20240063175A (ko)
CN (1) CN111183588B (ko)
WO (1) WO2019069711A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
CN112806016A (zh) 2018-10-05 2021-05-14 交互数字Vc控股公司 一种用于编码/重构点云的点的属性的方法和设备
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
CN113906477A (zh) * 2019-06-25 2022-01-07 索尼集团公司 信息处理装置和方法
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
EP3989176A4 (en) * 2019-07-17 2022-08-17 Sony Group Corporation INFORMATION PROCESSING DEVICE AND METHOD
US11106936B2 (en) * 2019-09-05 2021-08-31 General Atomics Object point cloud comparison and matching
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11568571B2 (en) * 2019-10-03 2023-01-31 Tencent America LLC Techniques and apparatus for lossless lifting for attribute coding
CN112616058A (zh) * 2019-10-03 2021-04-06 腾讯美国有限责任公司 视频编码或解码方法、装置、计算机设备和存储介质
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
CN114930853A (zh) * 2020-01-07 2022-08-19 Lg电子株式会社 点云数据发送装置、发送方法、处理装置和处理方法
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11475605B2 (en) 2020-01-09 2022-10-18 Apple Inc. Geometry encoding of duplicate points
KR20210145388A (ko) 2020-05-25 2021-12-02 주식회사 엘지에너지솔루션 배터리 셀 이송 장치
JP2021197703A (ja) * 2020-06-18 2021-12-27 Kddi株式会社 点群復号装置、点群復号方法及びプログラム
US11615557B2 (en) * 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
EP4174780A4 (en) * 2020-06-30 2024-02-07 Sony Group Corp DEVICE AND METHOD FOR PROCESSING INFORMATION
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
KR100695142B1 (ko) 2004-03-08 2007-03-14 삼성전자주식회사 적응적 2의 n 제곱 진트리 생성방법 및 이를 이용한 3차원 체적 데이터 부호화/복호화 방법 및 장치
CN103999490B (zh) * 2011-11-28 2018-05-08 汤姆逊许可公司 可终止的基于空间树的位置编码和解码的方法和装置
TWI534760B (zh) * 2011-11-28 2016-05-21 湯姆生特許公司 空間樹結構對輸入空間點編碼之方法及編碼器,以及空間樹結構位元流之解碼方法及解碼器
WO2016171673A1 (en) * 2015-04-21 2016-10-27 Hewlett-Packard Development Company, L.P. Octree serialization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
R. Mekuria, Student Member IEEE, K. Blom, P. Cesar., Member, IEEE, "Design, Implementation and Evaluation of a Point Cloud Codec for Tele-Immersive Video", tcsvt_paper_submitted_february.pdf

Also Published As

Publication number Publication date
CN111183588A (zh) 2020-05-19
KR20200062194A (ko) 2020-06-03
EP3694110A4 (en) 2020-11-18
EP3694110A1 (en) 2020-08-12
WO2019069711A1 (ja) 2019-04-11
JPWO2019069711A1 (ja) 2021-01-21
US11200703B2 (en) 2021-12-14
KR102662179B1 (ko) 2024-05-02
CN111183588B (zh) 2023-09-26
JP7268601B2 (ja) 2023-05-08
US20200273211A1 (en) 2020-08-27

Similar Documents

Publication Publication Date Title
KR102662179B1 (ko) 정보 처리 장치 및 방법
CN111937402A (zh) 图像处理装置和方法
WO2019012975A1 (ja) 情報処理装置および方法
CN112740277A (zh) 图像处理装置和图像处理方法
KR101048368B1 (ko) 연결정보 분석을 통한 3차원 메쉬 모델의 부호화 장치 및 방법
JP6178798B2 (ja) 終了可能な空間ツリー型位置符号化および復号
KR20230081704A (ko) G-pcc 에서의 예측 지오메트리 코딩
CN114598891A (zh) 点云数据编码方法、解码方法、点云数据处理方法及装置
JP2011528452A (ja) 共有頂点情報を用いた低複雑度3次元メッシュ圧縮装置及び方法
Lasserre et al. Using neighbouring nodes for the compression of octrees representing the geometry of point clouds
US20220114763A1 (en) High level syntax refinements for geometry point cloud compression (g-pcc)
WO2021010200A1 (ja) 情報処理装置および方法
JP2023549447A (ja) 点群階層化方法、デコーダ、エンコーダ及び記憶媒体
Jakob et al. A parallel approach to compression and decompression of triangle meshes using the GPU
JP2024507046A (ja) 点群符号化および復号化方法、エンコーダ、デコーダ、ならびにコンピュータ記憶媒体
KR20220034045A (ko) 정보 처리 장치 및 방법
WO2019198520A1 (ja) 情報処理装置および方法
KR20220027847A (ko) 정보 처리 장치 및 방법
CN112789658A (zh) 图像处理装置和方法
JP2019165290A (ja) 符号化装置、復号装置及びプログラム
WO2021140928A1 (ja) 情報処理装置および方法
WO2024082105A1 (zh) 编解码方法、解码器、编码器及计算机可读存储介质
JP7273339B2 (ja) 画像符号化方法、及び画像復号方法
Siew et al. A schema-aware encoder for Putrajaya 3D

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination