(57)【要約】  本開示は、Octreeの符号化データを多様な処理順で復号することができるようにする画像処理装置および方法に関する。ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。また、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。本開示は、例えば、画像処理装置、電子機器、画像処理方法、またはプログラム等に適用することができる。
2020066680.tif 000002
【特許請求の範囲】
【請求項１】
ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
を備える画像処理装置。
【請求項２】
前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
請求項１に記載の画像処理装置。
【請求項３】
前記符号化部は、前記Octreeの各階層の先頭ノードを、１階層上の先頭ノードの確率テーブルを用いて符号化する
請求項１に記載の画像処理装置。
【請求項４】
前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
請求項１に記載の画像処理装置。
【請求項５】
前記所定のノードは、処理対象ノードと同一階層の最後のノードである
請求項４に記載の画像処理装置。
【請求項６】
前記所定のノードは、前記前フレームの最後のノードである
請求項４に記載の画像処理装置。
【請求項７】
前記符号化部は、
処理対象階層を他の階層と独立に符号化する方法、
処理対象階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内のいずれか複数を用いて前記Octreeを符号化する
請求項１に記載の画像処理装置。
【請求項８】
前記符号化部は、
前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
前記Octreeの他の階層については、１つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
請求項１に記載の画像処理装置。
【請求項９】
前記符号化部は、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内の少なくとも１つを含む複数の候補の中から１つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
請求項１に記載の画像処理装置。
【請求項１０】
前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
請求項９に記載の画像処理装置。
【請求項１１】
ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
画像処理方法。
【請求項１２】
ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
を備える画像処理装置。
【請求項１３】
前記復号部は、外部指示に基づいて前記復号順を選択する
請求項１２に記載の画像処理装置。
【請求項１４】
前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
請求項１２に記載の画像処理装置。
【請求項１５】
前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
請求項１４に記載の画像処理装置。
【請求項１６】
前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
請求項１４に記載の画像処理装置。
【請求項１７】
前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
請求項１２に記載の画像処理装置。
【請求項１８】
前記復号部は、前記符号化データにおいて前記Octreeが、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
または、これらの方法の内の複数を組み合わせた方法、
により符号化されていない場合、前記復号順として前記幅優先順を選択する
請求項１７に記載の画像処理装置。
【請求項１９】
前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
請求項１７に記載の画像処理装置。
【請求項２０】
ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置および方法に関し、特に、Octreeの符号化データを多様な処理順で復号することができるようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
従来、例えばポイントクラウド（Point cloud）のような３次元構造を表す３Ｄデータの符号化方法として、例えばOctreeを用いた符号化があった（例えば非特許文献１参照）。【０００３】
このOctreeを用いた符号化では、Octreeの各ノードの情報が幅優先順に探索されて符号化されていた。この符号化として、例えば、算術符号化のようなコンテキストを用いた符号化が行われていた。そのため、処理順に依存関係が生じるため、復号においても各ノードの符号化データが同順（すなわち幅優先順）に処理されていた。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】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の符号化・復号順＞
＜技術内容・技術用語をサポートする文献等＞
本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
【００１６】
非特許文献１：（上述）
非特許文献２：Ohji Nakagami, Phil Chou, Maja Krivokuca, Khaled Mammou, Robert Cohen, Vladyslav Zakharchenko, Gaelle Martin-Cocher, "Second Working Draft for PCC Categories 1, 3",ISO/IEC JTC1/SC29/WG11, MPEG 2018/N17533, April 2018, San Diego, US
非特許文献３：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "Advanced video coding for generic audiovisual services", H.264, 04/2017
非特許文献４：TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU（International Telecommunication Union）, "High efficiency video coding", H.265, 12/2016
非特許文献５：Jianle Chen, Elena Alshina, Gary J. Sullivan, Jens-Rainer, Jill Boyce, "Algorithm Description of Joint Exploration Test Model 4", JVET-G1001_v1, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 7th Meeting: Torino, IT, 13-21 July 2017
【００１７】
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献４に記載されているQuad-Tree Block Structure、非特許文献５に記載されているQTBT（Quad Tree Plus Binary Tree） Block Structureが実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。また、例えば、パース（Parsing）、シンタックス（Syntax）、セマンティクス（Semantics）等の技術用語についても同様に、実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。
【００１８】
＜ポイントクラウド＞
従来、点群の位置情報や属性情報等により３次元構造を表すポイントクラウド（Point cloud）や、頂点、エッジ、面で構成され、多角形表現を使用して３次元形状を定義するメッシュ（Mesh）等の３Ｄデータが存在した。
【００１９】
例えばポイントクラウドの場合、立体構造物（３次元形状のオブジェクト）を多数の点の集合（点群）として表現する。つまり、ポイントクラウドのデータ（ポイントクラウドデータとも称する）は、この点群の各点の位置情報や属性情報（例えば色等）により構成される。したがってデータ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造物を十分な精度で表現することができる。
【００２０】
＜ボクセルを用いた位置情報の量子化＞
このようなポイントクラウドデータはそのデータ量が比較的大きいので、符号化等によるデータ量を圧縮するために、ボクセル（Voxel）を用いた符号化方法が考えられた。ボクセルは、符号化対象の位置情報を量子化するための３次元領域である。
【００２１】
つまり、ポイントクラウドを内包する３次元領域をボクセルと称する小さな３次元領域に分割し、そのボクセル毎に、ポイントを内包するか否かを示すようにする。例えば、図１の左側の例の場合、２10×２10×２10のボクセル１０が３次元空間に設定されており、そのボクセル毎にポイントの有無（ポイントを内包するか否か）が示されている。図１の例の場合、グレーのボクセルはポイントを内包するボクセルであることを示し、白色のボクセルはポイントを内包しないボクセルであることを示している。
【００２２】
このようにすることにより、各ポイントの位置はボクセル単位に量子化される。したがって、ポイントクラウド（Point cloud）データをこのようなボクセルのデータ（ボクセル（Voxel）データとも称する）に変換することにより、情報量の増大を抑制する（典型的には情報量を削減する）ことができる。
【００２３】
＜Octree＞
さらに、このようなボクセル（Voxel）データを用いてOctreeを構築することが考えられた。Octreeは、例えば図２に示されるように、ボクセルデータを木構造化したものである。このOctreeの最下位のノードの各ビットの値が、各ボクセルのポイントの有無を示す。例えば、値「１」がポイントを内包するボクセルを示し、値「０」がポイントを内包しないボクセルを示す。Octreeでは、１ノードが８つのボクセルに対応する。つまり、Octreeの各ノードは、８ビットのデータにより構成され、その８ビットが８つのボクセルのポイントの有無を示す。
【００２４】
そして、Octreeの上位のノードは、そのノードに属する下位ノードに対応する８つのボクセルを１つにまとめた領域のポイントの有無を示す。つまり、下位ノードのボクセルの情報をまとめることにより上位ノードが生成される。
【００２５】
例えば、図１の左のボクセル１０群における太線で示される範囲１１について考えると、範囲１１Ａのように、２×２×２のボクセル１０ずつ情報がまとめられてOctreeの最下位ノードが生成される。つまり、８つのボクセル１０のポイントの有無を示す最下位ノードが生成される。
【００２６】
例えば、この最下位ノードの値が「０」でない場合、すなわち、対応する８つのボクセルの内の少なくとも１つがポイントを内包する場合、その上位のノードが生成される。例えば、範囲１１Ｂのように、その８つのボクセルをまとめた領域（より低解像度のボクセル）が生成され、その低解像度のボクセルのポイントの有無を示す情報が２×２×２ずつまとめられて上位ノードが生成される。つまり、８つの低解像度のボクセルのポイントの有無を示す上位ノードが生成される。
【００２７】
例えば、この上位ノードの値が「０」でない場合、同様にして、例えば、範囲１１Ｃのように、さらに上位のノードが生成される。
【００２８】
これに対し、値が「０」のノード、すなわち、対応する８つのボクセルが全てポイントを内包しない場合、そのノードは削除される。
【００２９】
このようにすることにより、図２に示されるように、値が「０」でないノードからなる木構造（Octree）が構築される。つまり、Octreeは、各解像度のボクセルのポイントの有無を示すことができる。したがって、ボクセルデータをOctree化して符号化することにより、復号の際により多様な解像度のボクセルデータをより容易に復元することができる。つまり、より容易にボクセルのスケーラビリティを実現することができる。
【００３０】
また、上述のように値が「０」のノードを省略することにより、ポイントが存在しない領域のボクセルを低解像度化することができるので、さらなる情報量の増大の抑制（典型的には情報量の削減）を行うことができる。
【００３１】
＜Octreeの符号化＞
Octreeのデータを符号化することにより、さらなる情報量の増大の抑制（典型的には情報量の削減）を行うことができる。その場合、Octreeの各ノードの情報（８ビットのデータ）をそれぞれ符号化（例えば算術符号化）する。算術符号化では、直前に処理されたノードの符号化結果をコンテキストとして用いて確率テーブルを選択し、その選択した確率テーブルを用いて符号化を行う。つまり、各ノードの符号化は、その処理順（探索順）に依存関係が生じる。
【００３２】
＜幅優先順＞
Octreeのデータの符号化の方法として、例えば、Octreeの各ノードを幅優先順に探索し、その幅優先順に各ノードのデータを符号化する方法が考えられた（図３のタイプ０）。幅優先順とは、例えば図４に示される点線矢印のように、Octreeの最上位ノードから、１階層（LoDとも称する）ずつ各ノードを探索する順である。つまり、図４の例の場合、Ｎ、Ｇ、Ｕ、Ｄ、Ｋ、Ｒ、Ｘ、Ｂ、Ｆ、Ｉ、Ｍ、Ｐ、Ｔ、Ｗ、Ｚ、Ａ、Ｃ、Ｅ、Ｈ、Ｊ、Ｌ、Ｏ、Ｑ、Ｓ、Ｖ、Ｙの順に各ノードが探索される。したがって、各ノードのデータの符号化も、図５に示されるように、探索順と同順に行われる。
【００３３】
上述したように、直前に処理されたノードの符号化結果をコンテキストとして利用して符号化を行う場合、その符号化順に依存関係が生じる。その場合、復号順もその依存関係により制限される。つまり、幅優先順に符号化が行われた場合、復号も、幅優先順に行う必要がある。
【００３４】
また、復号には親ノード（当該ノード（自ノードとも称する）が属する１階層上位のノード）の情報も必要である。したがって、例えば、図４のOctreeにおけるノードＡを復号する際には、その親ノードであるノードＢの情報が必要になる。また、そのノードＡの後に処理されるノードＣ乃至ノードＹを復号する際には、それらの親ノードであるノードＦ乃至ノードＺの情報が必要になる。つまり、ノードＡを復号する際に、ノードＢ乃至ノードＺの情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の最初に処理されるノード（先頭ノードとも称する）を復号する際に、その１階層上位のLoDの全ノードの情報を保持する必要がある。
【００３５】
＜深さ優先順＞
幅優先順以外の探索順として例えば深さ優先順がある。深さ優先順とは、例えば、図６に示される点線矢印のように、Octreeの最下位ノードをできるだけ早期に探索する順である。例えば、図６の例の場合、Ｎ、Ｇ、Ｄ、Ｂ、Ａ、Ｃ、Ｆ、Ｅ、Ｋ、Ｉ、Ｈ、Ｊ、Ｍ、Ｌ、Ｕ、Ｒ、Ｐ、Ｏ、Ｑ、Ｔ、Ｓ、Ｘ、Ｗ、Ｖ、Ｚ、Ｙの順に各ノードが探索される。したがって、各ノードのデータの符号化も、図７に示されるように、探索順と同順に行われる。
【００３６】
例えば、算術符号化のように、直前に処理されたノードの符号化結果をコンテキストとして利用して符号化を行う場合、復号も同順に行う必要がある。つまり、深さ優先順に復号を行う必要がある。
【００３７】
また、この場合も、復号には親ノードの情報も必要である。したがって、例えば、図６のノードＡを復号する際には、ノードＢの情報が必要になる。また、そのノードＡの後に処理されるノードＦ、ノードＫ、ノードＵを復号する際には、それぞれ、ノードＤ、ノードＧ、ノードＮの情報が必要になる。つまり、ノードＡを復号する際に、ノードＮ、ノードＧ、ノードＤ、およびノードＤの情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の先頭ノードを復号する際に、最上位階層のノード（最上位ノードまたはルートノードとも称する）から自ノードまでの経路の全てのノードの情報を保持する必要がある。
【００３８】
＜幅優先順と深さ優先順の比較＞
Octreeの構造（枝数やLoD数（階層数））にもよるが、一般的にOctreeは、横に広い（LoD数よりも最下位のLoDのノード数の方が多い）。そのため、幅優先順で復号を行う場合の方が、深さ優先順で復号を行う場合よりも、復号の際に使用する（データ保持に必要な）メモリ容量が増大するおそれがあった。
【００３９】
幅優先順の場合と深さ優先順の場合との、復号の際に使用されるメモリ容量の比較例を図８に示す。図８のグラフは、ポイント数が５００万、LoD数（深さ）が２０のOctreeの符号化データ（5MPointLoD20）を復号する際に使用されるメモリ容量を比較したものである。図中左の棒グラフの組は、最上位から10LoD（１０階層）分のデータを復号した場合のメモリ容量（lod10）を示し、図中中央の棒グラフの組は、最上位から15LoD（１５階層）分のデータを復号した場合のメモリ容量（lod15）を示し、図中右の棒グラフの組は、最上位から20LoD（２０階層）分のデータを復号した場合のメモリ容量（lod20）を示す。また、各組の左側の白い棒グラフが深さ優先順の場合のメモリ容量を示し、右側のグレーの棒グラフが幅優先順の場合のメモリ容量を示している。
【００４０】
図８のグラフに明らかなように、どの場合も、幅優先順の場合の方が、深さ優先順の場合よりも、復号の際に使用するメモリ容量が大きい。また、Octreeが大きくなる程（ノード数が増大する程）その差は大きくなる。
【００４１】
このように復号に必要なメモリ容量が増大すると、デコーダにより大容量のメモリを搭載する必要が生じ、デコーダの製造コストが増大するおそれがあった。また、その分デコーダの小型化が困難になるおそれもあった。また、処理済みのノードの情報を保持する以外の処理に利用可能なメモリ容量が低減するため、復号の処理速度が低減するおそれもあった。
【００４２】
ただし、どの程度影響があるかは、Octreeの構造（例えばLoD数やノード数等）やデコーダのハードウエア性能（例えばメモリ容量等）に依存する。例えば、デコーダのメモリ容量が、復号の際の使用されるメモリ容量に比べて十分に大きい場合、探索順による処理負荷の変動の影響は少ない。
【００４３】
また、幅優先順で符号化する場合の方が、深さ優先順で符号化する場合よりも、符号化効率の低減を抑制する（典型的には符号化効率を向上させる）ことができる。
【００４４】
＜最適な探索順＞
つまり、どのような探索順とするのが最適であるかは、Octreeの構造、デコーダのハードウエア性能（メモリ容量等）、および、何を優先させるか（例えば符号化効率の向上を優先させるかまたはデコーダのメモリ容量の低減を優先させるか）等に依存する。つまり、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。換言するに、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。
【００４５】
そこで、図３の表の上から２行目に記載のように、Octreeの符号化データを幅優先以外の方法により復号することができるようにOctreeの符号化を行うようにする。つまり、より多様な処理順でOctreeの符号化データを復号することができるように、Octreeの符号化を行うようにする。
【００４６】
より具体的には、例えば、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化（リセット）して符号化するようにする。例えば、Octreeを符号化する画像処理装置において、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化（リセット）して符号化する符号化部を備えるようにする。
【００４７】
このようにすることにより、デコーダに、より多様な処理順でOctreeの符号化データを復号させることができる。したがって、デコーダが、より適切な処理順でOctreeの符号化データを復号するようにすることができる。
【００４８】
また、例えば、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号するようにする。例えば、Octreeの符号化データを復号する画像処理装置において、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する復号部を備えるようにする。
【００４９】
このようにすることにより、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。つまり、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【００５０】
＜タイプ１＞
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図３の上から３行目に示されるように、Octreeの各階層を互いに独立に符号化するようにしてもよい（タイプ１）。
【００５１】
例えば、図９に示される点線矢印のように、OctreeのLoD間で参照しないように符号化する。つまり、LoD毎に独立に符号化を行うようにする。より具体的には、例えば、図１０に示されるように幅優先順と同順に、算術符号化を行うようにし、さらに、各LoDの先頭ノードにおいてその算術符号化（コンテキスト）を初期化するようにする。
【００５２】
つまり、この例の場合、Ｎ、Ｇ、Ｕ、Ｄ、Ｋ、Ｒ、Ｘ、Ｂ、Ｆ、Ｉ、Ｍ、Ｐ、Ｔ、Ｗ、Ｚ、Ａ、Ｃ、Ｅ、Ｈ、Ｊ、Ｌ、Ｏ、Ｑ、Ｓ、Ｖ、Ｙの順に各ノードのデータが算術符号化される。算術符号化では、直前のノードの符号化結果を用いてコンテキストを求め、そのコンテキストに応じて確率テーブルを選択し、選択した確率テーブルを用いて算術符号化処理を行う。ただし、このタイプ１の場合、ノードＮ、ノードＧ、ノードＤ、ノードＢ、およびノードＡにおいて算術符号化（コンテキスト）が初期化される。
【００５３】
このタイプ１の場合、図４および図５を参照して説明した幅優先順の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する（典型的には符号化効率を向上させる）ことができる。
【００５４】
また、このタイプ１の場合、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その１階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。つまり、エンコーダは、LoD毎に独立に処理することができる。したがって、エンコーダは、例えば、LoD毎に符号化処理を並列化する（各LoDの符号化を互いに並列に行う）ことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
【００５５】
さらに、このように各LoDの算術符号化が互いに独立している（各LoDの先頭ノードとその１階層上位のLoDの最後のノードとで算術符号化の依存関係が無い）ことから、このタイプ１の場合、この算術符号化に対応する復号（すなわち算術復号）の処理順（復号順とも称する）が幅優先順に限定されない。例えば、デコーダは、このタイプ１の符号化により生成されたOctreeの符号化データの復号順を、幅優先順（図５）とすることもできるし、深さ優先順（図７）とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【００５６】
なお、このタイプ１の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする（その符号化データを読み出す）ことができる。つまり、より高速に復号を行う（すなわち復号処理の負荷の増大を抑制する（典型的には復号処理の負荷を低減させる））ことができる。
【００５７】
＜タイプ２＞
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図３の上から４行目に示されるように、Octreeの各LoDの先頭ノードは、その親ノードの確率テーブルを利用して符号化を行うようにしてもよい（タイプ２）。
【００５８】
例えば、図１１に示される点線矢印のように、Octreeの各LoDの先頭ノードの符号化において、その親ノードの確率テーブルを利用するようにする。より具体的には、例えば、図１２に示されるように幅優先順と同順に算術符号化を行うようにし、さらに、各LoDの先頭ノードにおいてその算術符号化（コンテキスト）を初期化するようにする。さらに、各LoDの先頭ノードにおいてその親ノードの確率テーブルを引き継ぎ（コピーし）、その確率テーブルを用いて算術符号化を行うようにする。
【００５９】
つまり、この例の場合、Ｎ、Ｇ、Ｕ、Ｄ、Ｋ、Ｒ、Ｘ、Ｂ、Ｆ、Ｉ、Ｍ、Ｐ、Ｔ、Ｗ、Ｚ、Ａ、Ｃ、Ｅ、Ｈ、Ｊ、Ｌ、Ｏ、Ｑ、Ｓ、Ｖ、Ｙの順に各ノードのデータが算術符号化される。ただし、このタイプ２の場合、ノードＮ、ノードＧ、ノードＤ、ノードＢ、およびノードＡにおいて算術符号化（コンテキスト）が初期化される。また、そのノードＮ、ノードＧ、ノードＤ、ノードＢ、およびノードＡにおいて、それぞれの親ノード（ノードＧの場合ノードＮ、ノードＤの場合ノードＧ、ノードＢの場合ノードＤ、ノードＡの場合ノードＢ）の確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。
【００６０】
このようにすることにより、タイプ１の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する（典型的には符号化効率を向上させる）ことができる。
【００６１】
また、このタイプ２の場合、タイプ１の場合と同様に、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その１階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
【００６２】
さらに、このタイプ２の場合、各LoDの先頭ノードの算術符号化においてその親ノードの確率テーブルを利用するので、エンコーダは、タイプ１の場合よりも符号化効率の低減を抑制することができる（典型的には符号化効率を向上させることができる）。
【００６３】
また、このタイプ２の場合、各LoDの先頭ノード同士で依存関係が存在するものの、それ以外のノードは、LoD間で互いに独立している。したがって、エンコーダは、各LoDの先頭ノード以外のノードについては、各LoDの算術符号化を互いに並列に行うことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
【００６４】
さらに、タイプ１の場合と同様に各LoDの先頭ノードとその１階層上位のLoDの最後のノードとで算術符号化の依存関係が無いことから、このタイプ２の場合も、算術復号の復号順が幅優先順に限定されない。例えば、デコーダは、このタイプ２の符号化により生成されたOctreeの符号化データの復号順を、幅優先順（図５）とすることもできるし、深さ優先順（図７）とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【００６５】
なお、このタイプ２の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする（その符号化データを読み出す）ことができる。つまり、より高速に復号を行う（すなわち復号処理の負荷の増大を抑制する（典型的には復号処理の負荷を低減させる））ことができる。
【００６６】
＜タイプ３＞
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図３の上から５行目に示されるように、Octreeの各LoDの先頭ノードは、その前フレームの所定のノードの確率テーブルを利用して符号化を行うようにしてもよい（タイプ３）。
【００６７】
例えば、図１３に示される点線矢印のように、フレーム１（Frame1）のOctreeの各LoDの先頭ノードの符号化において、その直前のフレーム（フレーム０（Frame0））のOctreeの所定のノードの確率テーブルを利用するようにする。より具体的には、例えば、図１４に示されるようにフレーム1の各ノードを幅優先順と同順に算術符号化を行うようにし、さらに、その各LoDの先頭ノードにおいてその算術符号化（コンテキスト）を初期化するようにし、さらに、その各LoDの先頭ノードにおいて、フレーム０の所定のノードの確率テーブルを引き継ぎ（コピーし）、その確率テーブルを用いて算術符号化を行うようにする。
【００６８】
例えば、図１３の例のように、フレーム０の、処理対象ノードと同一のLoDの最後のノードの確率テーブルが複製（コピー）されるようにしてもよい。
【００６９】
つまり、この例の場合、フレーム１の、Ｎ、Ｇ、Ｕ、Ｄ、Ｋ、Ｒ、Ｘ、Ｂ、Ｆ、Ｉ、Ｍ、Ｐ、Ｔ、Ｗ、Ｚ、Ａ、Ｃ、Ｅ、Ｈ、Ｊ、Ｌ、Ｏ、Ｑ、Ｓ、Ｖ、Ｙの順に各ノードのデータが算術符号化される。ただし、このタイプ３の場合、ノードＮ、ノードＧ、ノードＤ、ノードＢ、およびノードＡにおいて算術符号化（コンテキスト）が初期化される。また、フレーム１のノードＮを処理対象とする場合、フレーム０のノードＮの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。さらに、フレーム１のノードＧを処理対象とする場合、フレーム０のノードＵの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。また、フレーム１のノードＤを処理対象とする場合、フレーム０のノードＸの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。さらに、フレーム１のノードＢを処理対象とする場合、フレーム０のノードＺの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。また、フレーム１のノードＡを処理対象とする場合、フレーム０のノードＹの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われる。
【００７０】
このようにすることにより、タイプ１の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する（典型的には符号化効率を向上させる）ことができる。
【００７１】
また、このタイプ３の場合、タイプ１の場合と同様に、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その１階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
【００７２】
さらに、このタイプ３の場合、図１３や図１４の例のように、各LoDの先頭ノードの算術符号化において前フレームの同一LoDの最後のノードの確率テーブルが利用されるようにすることにより、エンコーダは、タイプ２の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、タイプ２の場合よりも符号化効率の低減を抑制することができる（典型的には符号化効率を向上させることができる）。
【００７３】
また、このタイプ３の場合、タイプ１の場合と同様に各LoDの算術符号化が互いに独立しており、エンコーダは、各LoDの算術符号化を互いに並列に行うことができる。例えばエンコーダが複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
【００７４】
また、このタイプ３の場合も、タイプ１の場合と同様に、各LoDの先頭ノードとその１階層上位のLoDの最後のノードとで算術符号化の依存関係が無い。したがって、この算術符号化に対応する復号（すなわち算術復号）の処理順（復号順とも称する）は、幅優先順とすることもできるし、深さ優先順とすることもできる。つまり、デコーダは、図５のような処理順で各ノードの符号化データを算術復号することもできるし、図７のような処理順で各ノードの符号化データを算術復号することもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【００７５】
なお、このタイプ３の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする（その符号化データを読み出す）ことができる。つまり、より高速に復号を行う（すなわち復号処理の負荷の増大を抑制する（典型的には復号処理の負荷を低減させる））ことができる。
【００７６】
なお、確率テーブルを参照するノード（参照先のノード）は、前フレームのノードであれば任意である（任意のノードの確率テーブルを引き継いで算術復号することができる）。例えば、図１５の例のように、フレーム０の最後のノードの確率テーブルが複製（コピー）されるようにしてもよい。例えば、図１６に示されるように、フレーム１のノードＮ、ノードＧ、ノードＤ、ノードＢ、またはノードＡを処理対象とする場合、算術符号化が初期化され、さらに、フレーム０の最後のノードであるノードＹの確率テーブルが複製（コピー）され、その複製した確率テーブルを用いて算術符号化が行われるようにしてもよい。
【００７７】
このようにすることにより、図１３および図１４を参照して説明した例の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、符号化効率の低減をより抑制することができる（典型的には符号化効率をより向上させることができる）。
【００７８】
なお、以上においては１つ前に処理された前フレームの確率テーブルを参照するように説明したが、この確率テーブルの参照先のフレームは任意である。例えば、２つ以上前に処理されたフレームの任意のノードの確率テーブルを参照するようにしてもよい。
【００７９】
＜タイプ４＞
また、例えば図３の上から６行目に示されるように、上述したタイプ０乃至タイプ３を組み合わせて用いるようにしてもよい（タイプ４）。
【００８０】
例えば、図１７に示されるように、タイプ０と、タイプ１乃至タイプ３のいずれかとを組み合わせて用いるようにしてもよい。つまり、Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、その他の階層については、１つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化するようにしてもよい。
【００８１】
図１７の例の場合、最上位層からノードＤ乃至ノードＸの階層までの各LoDに対して、タイプ０、すなわち、１つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化する方法が適用されている。また、ノードＢ乃至ノードＺの階層から最下位層の各LoDに対して、タイプ１、すなわち、Octreeの各階層を、互いに独立に符号化する方法が適用されている。
【００８２】
タイプ０の方がタイプ１よりも符号化効率が良いので、このようにすることにより、上位層の符号化効率の低減を抑制することができるとともに、下位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。例えば、デコーダは、階層のデコードに対して深さ優先順に復号を行うことにより、全階層を幅優先順で復号する場合に比べて、使用するメモリ容量の増大を抑制することができる。
【００８３】
なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ１を適用し、下位層に対してタイプ０を適用するようにしてもよい。このようにすることにより、上述の例とは逆に、下位層の符号化効率の低減を抑制することができるとともに、上位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。
【００８４】
一般的に復号の頻度は、下位層のノードよりも上位層のノードの方が多い。したがって、例えば、上位層に対してタイプ１を適用し、下位層に対してタイプ０を適用することにより、復号の頻度の多い上位層の復号順を多様化するとともに、復号の頻度の少ない下位層の符号化効率の低減を抑制することができる。
【００８５】
また、Octreeは、上位層ほどノード数が少ないので、上位層の方が下位層に比べてメモリ使用量は少ない。したがって、例えば、復号順によるメモリ使用量への影響は、上位層ほど少ない。したがって、上位層に対してタイプ０を適用し、下位層に対してタイプ１を適用することにより、復号順によるメモリ使用量への影響が比較的大きい下位層の復号順を多様化するとともに、その影響が比較的少ない上位層の符号化効率の低減を抑制することができる。
【００８６】
また、以上においては、タイプ０とタイプ１との組み合わせについて説明したが、タイプ２やタイプ３も、上述のタイプ１の場合と同様にタイプ０と組み合わせることができる。換言するに、タイプ１乃至タイプ３は、一部のLoDにのみ適用することができる。
【００８７】
また、例えば、図１８に示されるように、タイプ１乃至タイプ３の内の複数を組み合わせて用いるようにしてもよい。つまり、処理対象階層を他の階層と独立に符号化する方法、処理対象階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内のいずれか複数を用いてOctreeを符号化するようにしてもよい。
【００８８】
図１８の例の場合、最上位層からノードＤ乃至ノードＸの階層までの各LoDに対して、タイプ２、すなわち、処理対象階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法が適用されている。また、ノードＢ乃至ノードＺの階層から最下位層の各LoDに対して、タイプ１、すなわち、処理対象階層を他の階層と独立に符号化する方法が適用されている。
【００８９】
タイプ２の方がタイプ１よりも符号化効率が良いので、このようにすることにより、全階層にタイプ１を適用する場合よりも、上位層の符号化効率の低減を抑制することができる。また、タイプ１の方がタイプ２よりも各LoDを互いに独立に符号化することができるので、このようにすることにより、全階層にタイプ２を適用する場合よりも、下位層の符号化をより高速に行うことができる。
【００９０】
なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ２を適用し、下位層に対してタイプ１を適用するようにしてもよい。また、例えばタイプ２とタイプ３、タイプ１とタイプ３等のように、上述のタイプ１とタイプ２以外の組み合わせであってもよい。さらに、３種類以上のタイプを組み合わせるようにしてもよい。また、例えば、上位層から順にタイプ０、タイプ１、タイプ０を組み合わせる等、同じタイプを複数回組み合わせてもよい。もちろん、これらのタイプの組み合わせにさらにタイプ０を組み合わせてもよい。例えば、タイプ０、タイプ１、タイプ２、タイプ３を全て組み合わせてもよい。いずれの場合も、上述のタイプ１とタイプ２との組み合わせの例の場合と同様に、各タイプの特徴に応じた効果を得ることができる。換言するに、タイプ１乃至タイプ４は、一部のLoDにのみ適用することができる。
【００９１】
いずれの組み合わせ例を適用する方が良いかはユースケースに依存する。例えば、データの使用頻度に応じて各LoDの処理量やリソース使用量の配分を決定するようにしてもよい。
【００９２】
なお、タイプ１の場合、LoD毎に独立に符号化する。つまり、この場合、各LoDをスライス化しているとも言える。このようなスライス化は、LoD毎でなくてもよい。つまり、各LoDの先頭ノード（最後のノード）以外の位置において、スライスを切る（符号化の依存関係を無くす）ようにしてもよい。つまり、各LoDの先頭ノード以外のノードにおいて、算術符号化をリセットするようにしてもよい。
【００９３】
例えば、複数のLoDを１つのスライスとするようにしてもよい。例えば、上述のようにタイプ０とタイプ１とを組み合わせることにより、このような複数のLoDを含むスライスを実現することができる。
【００９４】
また、例えば、LoDの途中のノードにおいてスライスを切るようにしてもよい。例えば、タイプ０に、スライスの途中でタイプ１を適用することにより、このようなスライスの切り方を実現することができる。つまり、上述の複数タイプの組み合わせは、LoD単位でなくてもよく、LoDの途中のノードにおいて組み合わせるようにしてもよい。
【００９５】
以上のように、スライスの切り方（スライス構成）は任意である。例えば、エンコーダが、各スライスの処理量がより均一となるように、各スライスを形成するようにしてもよい。例えば、エンコーダが、各スライスのノード数がより均一となるように、各スライスを形成するようにしてもよい。このように各スライスの処理量をより均一化することにより、エンコーダやデコーダが、各スライスを並列処理する場合に、負荷をより均一に分散することができる。
【００９６】
また、例えば、エンコーダが、各スライスの復号の際のリソース使用量（例えばメモリ使用量）がより均一となるように、各スライスを形成するようにしてもよい。また、例えば、エンコーダが、各スライスの符号量（ビットストリームサイズ）がより均一となるように、各スライスを形成するようにしてもよい。
【００９７】
＜タイプの選択＞
また、上述のタイプ０乃至タイプ４の内の少なくとも１つを含む複数のタイプを候補とし、エンコーダがその複数の候補の中から所望のタイプを選択して符号化に適用するようにしてもよい。例えば、エンコーダが、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内の少なくとも１つを含む複数の候補の中から１つ以上を選択し、その選択した方法を用いてOctreeを符号化するようにしてもよい。
【００９８】
例えば、エンコーダがユーザ等の外部からタイプの指定（エンコードパラメータ）を受け付け、その指定に基づいて複数の候補の中からタイプを選択し、符号化に適用するようにしてもよい。このようにすることにより、エンコーダは、より多様な方法でOctreeを符号化することができる。したがって、エンコーダは、より多様な仕様のデコーダに対応する方法でOctreeを符号化することができる。
【００９９】
＜タイプ情報のシグナル＞
なお、上述した符号化のタイプに関する情報を、デコーダ側に伝送するようにしてもよい。例えば、エンコーダが、上述のように複数の候補の中から選択した符号化のタイプを示す情報と、その符号化により生成したOctreeの符号化データとを含むビットストリームを生成するようにしてもよい。例えば、エンコーダが、そのビットストリームのヘッダ情報として、その符号化のタイプに関する情報を伝送する（シグナルする）ようにしてもよい。例えば、図１９に示されるように、ビットストリームに含まれる、フレーム毎のヘッダ情報であるフレームヘッダ（Frame Header）や、LoD毎のヘッダ情報であるLoDヘッダ（LoD Header）において、符号化のタイプに関する情報を伝送する（シグナルする）ようにしてもよい。
【０１００】
図１９の例の場合、フレームヘッダにおいて、タイプ（Type）、スライス数（SliceNum）、オフセット（Offset）等の情報がシグナルされる。タイプ（Type）は、そのフレームに適用された符号化のタイプを示す識別情報である。例えば、上述のようにタイプ０乃至タイプ４が適用可能な場合、「０」乃至「４」のいずれかがセット（設定）される。もちろん、このタイプ（Type）の値は任意である。このタイプ（Type）を参照することにより、デコーダは、そのフレームに適用された符号化のタイプをより容易に識別することができる。したがって、そのビットストリームに対する適切な復号方法（復号順）をより容易に選択することができる。
【０１０１】
スライス数（SliceNum）は、そのフレームに含まれるスライスの数を示す情報である。例えば、タイプ１が適用された場合、途中のノードで算術符号化がリセットされ、スライスが形成される。スライス数（SliceNum）には、このように形成されたスライスの数を示す値がセット（設定）される。このスライス数（SliceNum）を参照することにより、デコーダは、より容易にスライス数を把握することができるので、各スライスの復号の並列化をより容易かつより適切に行うことができる。なお、このスライス数（SliceNum）は、複数のスライスが形成される場合、すなわち、タイプ１の符号化が適用される場合（Type=1または4の場合）にのみシグナルされ、その他の場合は省略されるようにしてもよい。
【０１０２】
オフセット（Offset）は、そのフレームに含まれる各スライスの、そのフレームのビットストリームにおけるデータの位置を示す情報である。例えば、オフセット（Offset）には、そのフレームに含まれる各スライスのデータの先頭アドレスを示す値がセット（設定）される。このオフセット（Offset）を参照することにより、デコーダは、より容易に所望のスライスの符号化データ（ビットストリーム）にアクセスすることができる。なお、このオフセット（Offset）は、複数のスライスが形成される場合、すなわち、タイプ１の符号化が適用される場合（Type=1または4の場合）にのみシグナルされ、その他の場合は省略されるようにしてもよい。
【０１０３】
また、図１９の例の場合、LoDヘッダにおいて、タイプ（Type）やサイズ（Size）等の情報がシグナルされる。タイプ（Type）は、そのLoDに適用された符号化のタイプを示す識別情報である。例えば、上述のようにタイプ０乃至タイプ４が適用可能な場合、「０」乃至「４」のいずれかがセット（設定）される。もちろん、このタイプ（Type）の値は任意である。このタイプ（Type）を参照することにより、デコーダは、そのLoDに適用された符号化のタイプをより容易に識別することができる。したがって、そのLoDのビットストリームに対する適切な復号方法（復号順）をより容易に選択することができる。なお、このタイプ（Type）は、LoDによって符号化のタイプが変化する場合、すなわち、フレームヘッダにおいてType=4の場合にのみシグナルされ、その他の場合は省略されるようにしてもよい。
【０１０４】
サイズ（Size）は、LoDの符号化データ（ビットストリーム）のサイズ（符号量）を示す情報である。この情報を参照することにより、デコーダは、ビットストリームから、そのLoDの符号化データをより容易に抽出することができる。
【０１０５】
もちろん、上述した情報は、上述した例以外のヘッダ情報においてシグナルするようにしてもよい。また、上述した情報は、ビットストリームの任意の位置に格納することができる。さらに、上述した情報は、Octreeのビットストリームとは異なるデータとして（例えば、Octreeのビットストリームと関連付けて）デコーダ側に伝送される（シグナルされる）ようにしてもよい。
【０１０６】
＜その他＞
なお、以上においては、Octreeのデータの符号化方法としてコンテキストを用いる算術符号化（例えばCABAC（Context-based Adaptive Binary Arithmetic Coding））を例に説明したが、Octreeのデータの符号化方法は、コンテキストを用いる可逆符号化（エントロピ符号化）であればよく、上述の算術符号化に限定されない。例えばNon-binaryの符号化方式であってもよい。また、複数のコンテキストを用いる符号化方式であってもよい。
【０１０７】
＜２．第１の実施の形態＞
＜符号化装置＞
次に、以上のような符号化を実現する構成について説明する。図２０は、本技術を適用した画像処理装置の一態様である符号化装置の構成の一例を示すブロック図である。図２０に示される符号化装置３００は、ポイントクラウドのような３Ｄデータをボクセル（Voxel）およびOctreeを用いて符号化する装置である。
【０１０８】
なお、図２０においては、処理部やデータの流れ等の主なものを示しており、図２０に示されるものが全てとは限らない。つまり、符号化装置３００において、図２０においてブロックとして示されていない処理部が存在したり、図２０において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、符号化装置３００内の処理部等を説明する他の図においても同様である。
【０１０９】
図２０に示されるように符号化装置３００は、Voxel生成部３１１、Octree生成部３１２、および可逆符号化部３１３を有する。
【０１１０】
Voxel生成部３１１は、ボクセル（Voxel）の生成に関する処理を行う。例えば、Voxel生成部３１１は、符号化装置３００に入力されるポイントクラウド（Point cloud）データを取得する。また、Voxel生成部３１１は、その取得したポイントクラウドデータを含む領域に対してバウンディングボックスを設定し、さらにそのバウンディングボックスを分割し、ボクセルを設定することにより、そのポイントクラウドデータの位置情報を量子化する。Voxel生成部３１１は、このようにして生成したボクセル（Voxel）データをOctree生成部３１２に供給する。
【０１１１】
Octree生成部３１２は、Octreeの生成に関する処理を行う。例えば、Octree生成部３１２は、Voxel生成部３１１から供給されるボクセルデータを取得する。また、Octree生成部３１２は、そのボクセルデータからOctreeを生成する。Octree生成部３１２は、生成したOctreeデータを可逆符号化部３１３に供給する。
【０１１２】
可逆符号化部３１３は、Octreeデータの可逆符号化に関する処理を行う。例えば、可逆符号化部３１３は、Octree生成部３１２から供給されるOctreeデータを取得する。また、可逆符号化部３１３は、符号化装置３００の外部から入力されるエンコードパラメータを取得する。このエンコードパラメータは、適用する符号化のタイプを指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆符号化部３１３は、このエンコードパラメータにより指定されるタイプでOctreeデータを符号化し、Octreeの符号化データを生成する。可逆符号化部３１３は、そのOctreeの符号化データを含むビットストリームを生成し、そのビットストリームを符号化装置３００の外部に出力する（復号側に伝送させる）。
【０１１３】
なお、これらの処理部（Voxel生成部３１１、Octree生成部３１２、および可逆符号化部３１３）は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU（Central Processing Unit）、ROM（Read Only Memory）、RAM（Random Access Memory）等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０１１４】
以上のように、可逆符号化部３１３は、複数のタイプの符号化に対応しており、より多様な方法でOctreeを符号化することができる。特に、可逆符号化部３１３は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応している。したがって、可逆符号化部３１３（すなわち符号化装置３００）は、デコーダがより多様な処理順でOctreeの符号化データを復号することができるように符号化を行うことができる。付言するに、可逆符号化部３１３（すなわち符号化装置３００）がこのようなタイプの符号化を行うことにより、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０１１５】
＜可逆符号化部＞
図２１は、可逆符号化部３１３の主な構成例を示すブロック図である。この例の場合、可逆符号化部３１３は、Octreeの階層毎にコンテキストを初期化して符号化するタイプを含む複数のタイプの符号化を候補として準備しており、その複数の候補の中からエンコードパラメータにより指定されるタイプの符号化を選択し、その選択したタイプによりOctreeを符号化する。
【０１１６】
図２１に示されるように、可逆符号化部３１３は、符号化制御部３２１、タイプ選択部３２２、タイプ０符号化部３２３、タイプ１符号化部３２４、タイプ２符号化部３２５、タイプ３符号化部３２６、およびビットストリーム生成部３２７を有する。
【０１１７】
符号化制御部３２１は、符号化の制御に関する処理を行う。例えば、符号化制御部３２１は、符号化装置３００の外部から供給されるエンコードパラメータを取得する。また、符号化制御部３２１は、そのエンコードパラメータにより指定されるタイプをタイプ選択部３２２に通知する。また、符号化制御部３２１は、タイプ０符号化部３２３乃至タイプ３符号化部３２６の内、そのエンコードパラメータにより指定されるタイプに対応する処理部を制御し、そのタイプの符号化を実行させる。また、符号化制御部３２１は、図１９を参照して説明したような情報を含むフレームヘッダやLoDヘッダを生成し、それをビットストリーム生成部３２７に供給する。
【０１１８】
タイプ選択部３２２は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部３２２は、Octree生成部３１２から供給されるOctreeデータを取得する。また、タイプ選択部３２２は、符号化制御部３２１により制御され、そのOctreeデータを、タイプ０符号化部３２３乃至タイプ３符号化部３２６の内、適用された符号化のタイプに対応する処理部に供給する（Octreeデータの供給先を切り替える）。例えば、タイプ選択部３２２は、適用する符号化のタイプをOctreeデータのLoD毎に選択する（すなわち、Octreeデータの供給先をLoD毎に切り替える）ことができる。
【０１１９】
タイプ０符号化部３２３は、例えば＜１．Octreeの符号化・復号順＞の＜幅優先順＞において図４および図５等を参照して説明したようなタイプ０の符号化に関する処理を行う。例えば、タイプ０符号化部３２３は、タイプ選択部３２２から供給されるOctreeデータを取得する。また、タイプ０符号化部３２３は、そのOctreeデータに対して、タイプ０の符号化を行い、符号化データを生成する。すなわち、タイプ０符号化部３２３は、Octreeデータの各ノードのデータを幅優先順で符号化する。タイプ０符号化部３２３は、タイプ０の符号化により生成した符号化データをビットストリーム生成部３２７に供給する。タイプ０符号化部３２３は、符号化制御部３２１により制御されて、これらの処理を行う。
【０１２０】
タイプ１符号化部３２４は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ１＞において図９および図１０等を参照して説明したようなタイプ１の符号化に関する処理を行う。例えば、タイプ１符号化部３２４は、タイプ選択部３２２から供給されるOctreeデータを取得する。また、タイプ１符号化部３２４は、そのOctreeデータに対して、タイプ１の符号化を行い、符号化データを生成する。すなわち、タイプ１符号化部３２４は、Octreeの各階層を互いに独立に符号化する。タイプ１符号化部３２４は、タイプ１の符号化により生成した符号化データをビットストリーム生成部３２７に供給する。タイプ１符号化部３２４は、符号化制御部３２１により制御されて、これらの処理を行う。
【０１２１】
タイプ２符号化部３２５は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ２＞において図１１および図１２等を参照して説明したようなタイプ２の符号化に関する処理を行う。例えば、タイプ２符号化部３２５は、タイプ選択部３２２から供給されるOctreeデータを取得する。また、タイプ２符号化部３２５は、そのOctreeデータに対して、タイプ２の符号化を行い、符号化データを生成する。すなわち、タイプ２符号化部３２５は、Octreeの各LoDの先頭ノードを、その親ノードの確率テーブルを利用して符号化する。タイプ２符号化部３２５は、タイプ２の符号化により生成した符号化データをビットストリーム生成部３２７に供給する。タイプ２符号化部３２５は、符号化制御部３２１により制御されて、これらの処理を行う。
【０１２２】
タイプ３符号化部３２６は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ３＞において図１３および図１４等を参照して説明したようなタイプ３の符号化に関する処理を行う。例えば、タイプ３符号化部３２６は、タイプ選択部３２２から供給されるOctreeデータを取得する。また、タイプ３符号化部３２６は、そのOctreeデータに対して、タイプ３の符号化を行い、符号化データを生成する。すなわち、タイプ３符号化部３２６は、Octreeの各LoDの先頭ノードを、その前フレームの所定のノードの確率テーブルを利用して符号化する。タイプ３符号化部３２６は、タイプ３の符号化により生成した符号化データをビットストリーム生成部３２７に供給する。タイプ３符号化部３２６は、符号化制御部３２１により制御されて、これらの処理を行う。
【０１２３】
ビットストリーム生成部３２７は、ビットストリームの生成に関する処理を行う。例えば、ビットストリーム生成部３２７は、タイプ０符号化部３２３乃至タイプ３符号化部３２６から供給されるOctreeの符号化データを取得する。また、ビットストリーム生成部３２７は、符号化制御部３２１から供給されるヘッダ情報（例えばフレームヘッダやLoDヘッダ等）を取得する。さらに、ビットストリーム生成部３２７は、そのタイプ０符号化部３２３乃至タイプ３符号化部３２６から供給される符号化データと、符号化制御部３２１から供給されるヘッダ情報とを含むビットストリームを生成する。そして、ビットストリーム生成部３２７は、その生成したビットストリームを符号化装置３００の外部に出力する。
【０１２４】
なお、これらの処理部（符号化制御部３２１乃至ビットストリーム生成部３２７）は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU（Central Processing Unit）、ROM（Read Only Memory）、RAM（Random Access Memory）等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０１２５】
なお、Octreeの途中で適用する符号化のタイプを切り替えることにより、可逆符号化部３１３は、タイプ４を適用することができる。この符号化のタイプの切り替えは、符号化制御部３２１が行う。
【０１２６】
以上のように、可逆符号化部３１３は、タイプ０乃至タイプ４の符号化を行うことができる。したがって可逆符号化部３１３（符号化装置３００）は、＜１．Octreeの符号化・復号順＞において上述したような、各タイプの効果を得ることができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０１２７】
なお、以上においては、可逆符号化部３１３が、タイプ０符号化部３２３乃至タイプ３符号化部３２６を備えるように説明した。すなわち、符号化装置３００が、タイプ０乃至タイプ３の４つのタイプの符号化を行うことができる（タイプ４については説明を省略する）ように説明した。しかしながら、符号化装置３００は、任意のタイプの符号化を行うことができるようにしてもよい。例えば、符号化装置３００が、上述した例以外のタイプの符号化を行うことができるようにしてもよい。
【０１２８】
また、符号化装置３００が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、符号化装置３００が、３以下のタイプの符号化を行うことができるようにしてもよいし、５以上のタイプの符号化を行うことができるようにしてもよい。
【０１２９】
いずれの場合も、可逆符号化部３１３が、タイプ０符号化部３２３乃至タイプ３符号化部３２６のように、符号化装置３００が実行可能なタイプの符号化部を並列に備えるようにすればよい。つまり、図２１の例においては、可逆符号化部３１３は、タイプ０符号化部３２３乃至タイプ３符号化部３２６の４つの符号化部を有しているが、この例に限定されず、３つ以下の符号化部を備えるようにすることもできるし、５つ以上の符号化部を備えるようにすることもできる。
【０１３０】
＜符号化処理の流れ＞
次に、符号化装置３００により実行される符号化処理の流れの例を、図２２および図２３のフローチャートを参照して説明する。
【０１３１】
符号化処理が開始されると、符号化装置３００のVoxel生成部３１１は、ステップＳ３０１において、符号化装置３００に入力されたポイントクラウド（Point cloud）データからボクセル（Voxel）データを生成する。
【０１３２】
ステップＳ３０２において、Octree生成部３１２は、ステップＳ３０１において生成されたボクセルデータからOctreeを構築し、そのOctreeを幅優先順に探索してOctreeデータを生成する。
【０１３３】
ステップＳ３０３において、可逆符号化部３１３の符号化制御部３２１は、符号化装置３００の外部から入力されるエンコードパラメータを受け付ける。
【０１３４】
ステップＳ３０４において、可逆符号化部３１３は、ステップＳ３０２において構築されたOctreeから処理対象LoDを１つ選択する。可逆符号化部３１３の符号化制御部３２１は、最上位層から最下位層に向かう順に１階層ずつ処理対象LoDを選択する。つまり、可逆符号化部３１３のタイプ選択部３２２は、その符号化制御部３２１の制御に従って、Octree生成部３１２からOctreeデータを、先頭から１LoD分ずつ読み込み、それを処理対象とする。
【０１３５】
ステップＳ３０５において、可逆符号化部３１３の符号化制御部３２１は、ステップＳ３０３において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ０で符号化するか否かを判定する。タイプ０で符号化を行うと判定された場合、タイプ選択部３２２は、処理対象LoDのデータをタイプ０符号化部３２３に供給する。そして処理はステップＳ３０６に進む。
【０１３６】
ステップＳ３０６において、可逆符号化部３１３は、タイプ０符号化処理を実行し、処理対象LoDのデータをタイプ０で符号化する。このタイプ０符号化処理の詳細については後述する。
【０１３７】
タイプ０符号化処理が終了すると、処理は、図２３のステップＳ３２４に進む。また、図２２のステップＳ３０５において、タイプ０で符号化を行わないと判定された場合、処理はステップＳ３０７に進む。
【０１３８】
ステップＳ３０７において、可逆符号化部３１３の符号化制御部３２１は、ステップＳ３０３において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ１で符号化するか否かを判定する。タイプ１で符号化を行うと判定された場合、タイプ選択部３２２は、処理対象LoDのデータをタイプ１符号化部３２４に供給する。そして処理はステップＳ３０８に進む。
【０１３９】
ステップＳ３０８において、可逆符号化部３１３は、タイプ１符号化処理を実行し、処理対象LoDのデータをタイプ１で符号化する。このタイプ１符号化処理の詳細については後述する。
【０１４０】
タイプ１符号化処理が終了すると、処理は、図２３のステップＳ３２４に進む。また、図２２のステップＳ３０７において、タイプ１で符号化を行わないと判定された場合、処理は図２３のステップＳ３２１に進む。
【０１４１】
図２３のステップＳ３２１において、可逆符号化部３１３の符号化制御部３２１は、ステップＳ３０３において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ２で符号化するか否かを判定する。タイプ２で符号化を行うと判定された場合、タイプ選択部３２２は、処理対象LoDのデータをタイプ２符号化部３２５に供給する。そして処理はステップＳ３２２に進む。
【０１４２】
ステップＳ３２２において、可逆符号化部３１３は、タイプ２符号化処理を実行し、処理対象LoDのデータをタイプ２で符号化する。このタイプ２符号化処理の詳細については後述する。
【０１４３】
タイプ２符号化処理が終了すると、処理は、ステップＳ３２４に進む。また、ステップＳ３２１において、タイプ２で符号化を行わないと判定された場合、タイプ選択部３２２は、処理対象LoDのデータをタイプ３符号化部３２６に供給する。そして処理はステップＳ３２３に進む。
【０１４４】
ステップＳ３２３において、可逆符号化部３１３は、タイプ３符号化処理を実行し、処理対象LoDのデータをタイプ３で符号化する。このタイプ３符号化処理の詳細については後述する。タイプ３符号化処理が終了すると、処理は、ステップＳ３２４に進む。
【０１４５】
ステップＳ３２４において、可逆符号化部３１３の符号化制御部３２１は、全てのLoDを処理したか否かを判定する。未処理のLoDが存在すると判定された場合、処理は図２２のステップＳ３０４に戻り、それ以降の処理が繰り返される。すなわち、ステップＳ３０４において新たなLoD（未処理のLoD）が処理対象として選択され、その処理対象LoDに対して、ステップＳ３０５乃至ステップＳ３２３の各処理が適宜実行される。
【０１４６】
以上のように、各LoDに対してステップＳ３０４乃至ステップＳ３２４の処理が適宜実行され、ステップＳ３２４において全てのLoDを処理したと判定された場合、処理はステップＳ３２５に進む。
【０１４７】
ステップＳ３２５において、可逆符号化部３１３の符号化制御部３２１は、フレームヘッダを生成する。
【０１４８】
ステップＳ３２６において、可逆符号化部３１３（タイプ０符号化部３２３乃至タイプ３符号化部３２６のいずれか）は、上述したOctreeデータに対応する属性情報を生成し、符号化する。
【０１４９】
ステップＳ３２７において、ビットストリーム生成部３２７は、Octreeデータの符号化データとヘッダ情報とを含むビットストリームを生成し、符号化装置３００の外部に出力する（復号側に伝送する）。
【０１５０】
ステップＳ３２７の処理が終了すると、符号化処理が終了する。符号化装置３００は、各フレームに対してこのような符号化処理を実行し、各フレームのOctreeデータのビットストリームを生成する。
【０１５１】
＜タイプ０符号化処理の流れ＞
次に、図２２のステップＳ３０６において実行されるタイプ０符号化処理の流れの例を、図２４のフローチャートを参照して説明する。
【０１５２】
タイプ０符号化処理が開始されると、符号化制御部３２１は、ステップＳ３４１において、処理対象LoDが最上位LoD（最上位層のLoD）であるか否かを判定する。最上位LoDであると判定された場合、処理はステップＳ３４２に進む。
【０１５３】
ステップＳ３４２において、タイプ０符号化部３２３は、算術符号化（のコンテキスト）をリセットする。
【０１５４】
ステップＳ３４３において、タイプ０符号化部３２３は、処理対象LoDの先頭ノードを符号化する。
【０１５５】
ステップＳ３４３の処理が終了すると処理はステップＳ３４５に進む。また、ステップＳ３４１において、最上位LoDでないと判定された場合、処理はステップＳ３４４に進む。
【０１５６】
ステップＳ３４４において、タイプ０符号化部３２３は、１つ上位のLoD最後のノードの処理後のコンテキストを用いて、処理対象LoDの先頭ノードの算術符号化を行う。ステップＳ３４４の処理が終了すると、処理はステップＳ３４５に進む。
【０１５７】
ステップＳ３４５において、タイプ０符号化部３２３は、次のノードを処理対象として選択する。
【０１５８】
ステップＳ３４６において、タイプ０符号化部３２３は、１つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
【０１５９】
ステップＳ３４７において、タイプ０符号化部３２３は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップＳ３４５に戻る。
【０１６０】
処理対象LoDの各ノードについて、ステップＳ３４５乃至ステップＳ３４７の各処理が実行され、ステップＳ３４７において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップＳ３４８に進む。
【０１６１】
ステップＳ３４８において、符号化制御部３２１は、その処理対象LoDのLoDヘッダを生成する。符号化制御部３２１は、生成したLoDヘッダをビットストリーム生成部３２７に供給する。
【０１６２】
ステップＳ３４８の処理が終了すると、タイプ０符号化処理が終了し、処理は図２２に戻る。
【０１６３】
以上のようにタイプ０符号化処理を実行することにより、可逆符号化部３１３（の符号化制御部３２１およびタイプ０符号化部３２３）は、処理対象LoDをタイプ０で符号化することができる。したがって、＜１．レンダリング用カメラパラメータのシグナル＞において説明したタイプ０の符号化に関する効果を得ることができる。
【０１６４】
＜タイプ１符号化処理の流れ＞
次に、図２２のステップＳ３０８において実行されるタイプ１符号化処理の流れの例を、図２５のフローチャートを参照して説明する。
【０１６５】
タイプ１符号化処理が開始されると、タイプ１符号化部３２４は、ステップＳ３６１において、算術符号化（のコンテキスト）をリセットする。
【０１６６】
ステップＳ３６２において、タイプ１符号化部３２４は、処理対象LoDの先頭ノードを符号化する。
【０１６７】
ステップＳ３６３において、タイプ１符号化部３２４は、次のノードを処理対象として選択する。
【０１６８】
ステップＳ３６４において、タイプ１符号化部３２４は、１つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
【０１６９】
ステップＳ３６５において、タイプ１符号化部３２４は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象のノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップＳ３６３に戻る。
【０１７０】
処理対象LoDの各ノードについて、ステップＳ３６３乃至ステップＳ３６５の各処理が実行され、ステップＳ３６５において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップＳ３６６に進む。
【０１７１】
ステップＳ３６６において、符号化制御部３２１は、その処理対象LoDのLoDヘッダを生成する。符号化制御部３２１は、生成したLoDヘッダをビットストリーム生成部３２７に供給する。
【０１７２】
ステップＳ３６６の処理が終了すると、タイプ１符号化処理が終了し、処理は図２２に戻る。
【０１７３】
以上のようにタイプ１符号化処理を実行することにより、可逆符号化部３１３（の符号化制御部３２１およびタイプ１符号化部３２４）は、処理対象LoDをタイプ１で符号化することができる。したがって、＜１．レンダリング用カメラパラメータのシグナル＞において説明したタイプ１の符号化に関する効果を得ることができる。
【０１７４】
＜タイプ２符号化処理の流れ＞
次に、図２３のステップＳ３２２において実行されるタイプ２符号化処理の流れの例を、図２６のフローチャートを参照して説明する。
【０１７５】
タイプ２符号化処理が開始されると、符号化制御部３２１は、ステップＳ３８１において、処理対象LoDが最上位LoDであるか否かを判定する。最上位LoDであると判定された場合、処理はステップＳ３８２に進む。
【０１７６】
ステップＳ３８２において、タイプ２符号化部３２５は、算術符号化（のコンテキスト）をリセットする。
【０１７７】
ステップＳ３８３において、タイプ２符号化部３２５は、処理対象LoDの先頭ノードを符号化する。
【０１７８】
ステップＳ３８３の処理が終了すると処理はステップＳ３８７に進む。また、ステップＳ３８１において、最上位LoDでないと判定された場合、処理はステップＳ３８４に進む。
【０１７９】
ステップＳ３８４において、タイプ２符号化部３２５は、処理対象ノードである処理対象LoDの先頭ノードの親ノードから確率テーブルを引き継ぐ（コピーする）。
【０１８０】
ステップＳ３８５において、タイプ２符号化部３２５は、算術符号化（のコンテキスト）をリセットする。
【０１８１】
ステップＳ３８６において、タイプ２符号化部３２５は、ステップＳ３８４において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。ステップＳ３８６の処理が終了すると、処理はステップＳ３８７に進む。
【０１８２】
ステップＳ３８７において、タイプ２符号化部３２５は、先頭ノード処理後の確率テーブルを保存する。この確率テーブルは、１つ下位のLoDの先頭ノードの処理に利用される。
【０１８３】
ステップＳ３８８において、タイプ２符号化部３２５は、次のノードを処理対象として選択する。
【０１８４】
ステップＳ３８９において、タイプ２符号化部３２５は、１つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
【０１８５】
ステップＳ３９０において、タイプ２符号化部３２５は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップＳ３８８に戻る。
【０１８６】
処理対象LoDの各ノードについて、ステップＳ３８８乃至ステップＳ３９０の各処理が実行され、ステップＳ３９０において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップＳ３９１に進む。
【０１８７】
ステップＳ３９１において、符号化制御部３２１は、その処理対象LoDのLoDヘッダを生成する。符号化制御部３２１は、生成したLoDヘッダをビットストリーム生成部３２７に供給する。
【０１８８】
ステップＳ３９１の処理が終了すると、タイプ２符号化処理が終了し、処理は図２３に戻る。
【０１８９】
以上のようにタイプ２符号化処理を実行することにより、可逆符号化部３１３（の符号化制御部３２１およびタイプ２符号化部３２５）は、処理対象LoDをタイプ２で符号化することができる。したがって、＜１．レンダリング用カメラパラメータのシグナル＞において説明したタイプ２の符号化に関する効果を得ることができる。
【０１９０】
＜タイプ３符号化処理の流れ＞
次に、図２３のステップＳ３２３において実行されるタイプ３符号化処理の流れの例を、図２７のフローチャートを参照して説明する。
【０１９１】
タイプ３符号化処理が開始されると、タイプ３符号化部３２６は、ステップＳ４１１において、処理対象フレームの１つ前に処理されたフレーム（前フレームとも称する）の所定のノードから確率テーブルを引き継ぐ（コピーする）。
【０１９２】
ステップＳ４１２において、タイプ３符号化部３２６は、算術符号化（のコンテキスト）をリセットする。
【０１９３】
ステップＳ４１３において、タイプ３符号化部３２６は、ステップＳ４１１において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。
【０１９４】
ステップＳ４１４において、タイプ３符号化部３２６は、次のノードを処理対象として選択する。
【０１９５】
ステップＳ４１５において、タイプ３符号化部３２６は、１つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
【０１９６】
ステップＳ４１６において、タイプ３符号化部３２６は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップＳ４１４に戻る。
【０１９７】
処理対象LoDの各ノードについて、ステップＳ４１４乃至ステップＳ４１６の各処理が実行され、ステップＳ４１６において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップＳ４１７に進む。
【０１９８】
ステップＳ４１７において、タイプ３符号化部３２６は、処理対象LoDの「所定のノード」の符号化後の確率テーブルを保存する。この「所定のノード」は、次のフレームの符号化において確率テーブルが参照される、予め定められたノードである。例えば、＜１．レンダリング用カメラパラメータのシグナル＞において説明したように、各LoDの最後のノードや、そのフレームの最後のノード等がその「所定のノード」として設定される。なお、処理対象LoDにこのような「所定のノード」が存在しない場合、ステップＳ４１７の処理は省略される。このように保存された確率テーブルは、次のフレームの処理において引き継がれる（コピーされる）。
【０１９９】
ステップＳ４１８において、符号化制御部３２１は、その処理対象LoDのLoDヘッダを生成する。符号化制御部３２１は、生成したLoDヘッダをビットストリーム生成部３２７に供給する。
【０２００】
ステップＳ４１８の処理が終了すると、タイプ３符号化処理が終了し、処理は図２３に戻る。
【０２０１】
以上のようにタイプ３符号化処理を実行することにより、可逆符号化部３１３（の符号化制御部３２１およびタイプ３符号化部３２６）は、処理対象LoDをタイプ３で符号化することができる。したがって、＜１．レンダリング用カメラパラメータのシグナル＞において説明したタイプ３の符号化に関する効果を得ることができる。
【０２０２】
以上のように各処理を実行することにより、可逆符号化部３１３は、タイプ０乃至タイプ４の符号化を行うことができる。したがって可逆符号化部３１３（符号化装置３００）は、＜１．Octreeの符号化・復号順＞において上述したような、各タイプの効果を得ることができる。つまり、符号化装置３００は、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０２０３】
＜３．第２の実施の形態＞
＜復号装置＞
図２８は、本技術を適用した画像処理装置の一態様である復号装置の構成の一例を示すブロック図である。図２８に示される復号装置５００は、図２０の符号化装置３００に対応する復号装置であり、例えばこの符号化装置３００により生成されたポイントクラウドの符号化データ（ビットストリーム）を復号し、ポイントクラウドのデータを復元する装置である。
【０２０４】
なお、図２８においては、処理部やデータの流れ等の主なものを示しており、図２８に示されるものが全てとは限らない。つまり、復号装置５００において、図２０においてブロックとして示されていない処理部が存在したり、図２０において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、復号装置５００内の処理部等を説明する他の図においても同様である。
【０２０５】
図２８に示されるように復号装置５００は、可逆復号部５１１、Octree復号部５１２、およびVoxel復号部５１３を有する。
【０２０６】
可逆復号部５１１は、Octreeデータの符号化データの可逆復号に関する処理を行う。例えば、可逆復号部５１１は、復号装置５００に入力されるポイントクラウド（Point cloud）データ（に対応するOctreeデータ）のビットストリームを取得する。また、可逆復号部５１１は、復号装置５００の外部から入力されるデコードパラメータを取得する。このデコードパラメータは、復号順を指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆復号部５１１は、このデコードパラメータにより指定されるタイプでビットストリームを復号し、Octreeデータを生成する。可逆復号部５１１は、そのOctreeデータをOctree復号部５１２に供給する。
【０２０７】
Octree復号部５１２は、Octreeの復号に関する処理を行う。例えば、Octree復号部５１２は、可逆復号部５１１から供給されるOctreeデータを取得する。また、Octree復号部５１２は、そのOctreeデータからOctreeを構築し、そのOctreeからボクセル（Voxel）データを生成する。Octree復号部５１２は、生成したボクセルデータをVoxel復号部５１３に供給する。
【０２０８】
Voxel復号部５１３は、ボクセル（Voxel）データの復号に関する処理を行う。例えば、Voxel復号部５１３は、Octree復号部５１２から供給されるボクセルデータを取得する。また、Voxel復号部５１３は、その取得したボクセルデータからポイントクラウド（Point cloud）を復元する。Voxel復号部５１３は、このようにして生成したポイントクラウドデータを復号装置５００の外部に出力する。
【０２０９】
なお、これらの処理部（可逆復号部５１１、Octree復号部５１２、およびVoxel復号部５１３）は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０２１０】
以上のように、可逆復号部５１１は、複数の復号順（幅優先順および深さ優先順）に対応しており、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順によりその符号化データを復号する。したがって、復号装置５００は、より多様な処理順でOctreeの符号化データを復号することができる。これにより、復号装置５００は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０２１１】
＜可逆復号部＞
図２９は、可逆復号部５１１の主な構成例を示すブロック図である。この例の場合、可逆復号部５１１は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応するタイプにより、Octreeの符号化データを復号することができる。つまり、可逆復号部５１１は、階層毎にコンテキストを初期化して符号化されたOctreeの符号化データを正しく復号することができる。また、可逆復号部５１１は、そのOctreeの符号化データを、幅優先順および深さ優先順のいずれでも復号することができる。
【０２１２】
図２９に示されるように、可逆復号部５１１は、復号制御部５２１、ヘッダ解析部５２２、タイプ選択部５２３、タイプ０復号部５２４、タイプ１復号部５２５、タイプ２復号部５２６、およびタイプ３復号部５２７を有する。
【０２１３】
復号制御部５２１は、復号の制御に関する処理を行う。例えば、復号制御部５２１は、復号装置５００の外部から供給されるデコードパラメータを取得する。また、復号制御部５２１は、ヘッダ解析部５２２により解析されたヘッダ情報（フレームヘッダやLoDヘッダ等にシグナルされる各種情報）を取得する。さらに、復号制御部５２１は、そのヘッダ情報に基づいてタイプ選択部５２３乃至タイプ３復号部５２７の各処理部を制御し、Octreeの各ノードの符号化データを、デコードパラメータにより指定される復号順（幅優先順または深さ優先順）で復号させる。
【０２１４】
ヘッダ解析部５２２は、ヘッダの解析に関する処理を行う。例えば、ヘッダ解析部５２２は、復号装置５００に入力されるビットストリームを取得し、それをタイプ選択部５２３に供給する。また、ヘッダ解析部５２２は、取得したビットストリームに含まれるヘッダを解析し、ヘッダ情報（特に、図１９を参照して説明したような、タイプに関する情報）を復号制御部５２１に供給する。
【０２１５】
タイプ選択部５２３は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部５２３は、ヘッダ解析部５２２から供給されるビットストリームを取得する。また、タイプ選択部５２３は、復号制御部５２１により制御され、ビットストリームを、タイプ０復号部５２４乃至タイプ３復号部５２７の内、適用された符号化のタイプに対応する処理部に供給する（ビットストリームの供給先を切り替える）。例えば、タイプ選択部５２３は、適用する符号化のタイプ（復号のタイプ）をノード毎に選択する（すなわち、ビットストリームの供給先をノード毎に切り替える）ことができる。
【０２１６】
タイプ０復号部５２４は、例えば＜１．Octreeの符号化・復号順＞の＜幅優先順＞において図４および図５等を参照して説明したような「タイプ０の符号化」に対応するタイプ０の復号に関する処理を行う。例えば、タイプ０復号部５２４は、タイプ選択部５２３から供給されるビットストリームを取得する。また、タイプ０復号部５２４は、そのビットストリームに対して、タイプ０の復号を行い、Octreeデータを生成する。すなわち、タイプ０復号部５２４は、処理対象ノードのビットストリームを、その直前に処理されたノードの処理結果をコンテキストとして用いて算術復号する。タイプ０復号部５２４は、このような復号により得られたOctreeデータを、Octree復号部５１２に供給する。タイプ０復号部５２４は、復号制御部５２１により制御されて、これらの処理を行う。
【０２１７】
タイプ１復号部５２５は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ１＞において図９および図１０等を参照して説明したような「タイプ１の符号化」に対応するタイプ１の復号に関する処理を行う。例えば、タイプ１復号部５２５は、タイプ選択部５２３から供給されるビットストリームを取得する。また、タイプ１復号部５２５は、そのビットストリームに対して、タイプ１の復号を行い、Octreeデータを生成する。すなわち、タイプ１復号部５２５は、処理対象ノードのビットストリームを、他の階層（LoD）のノードとは独立に算術復号する。タイプ１復号部５２５は、このような復号により得られたOctreeデータを、Octree復号部５１２に供給する。タイプ１復号部５２５は、復号制御部５２１により制御されて、これらの処理を行う。
【０２１８】
タイプ２復号部５２６は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ２＞において図１１および図１２等を参照して説明したような「タイプ２の符号化」に対応するタイプ２の復号に関する処理を行う。例えば、タイプ２復号部５２６は、タイプ選択部５２３から供給されるビットストリームを取得する。また、タイプ２復号部５２６は、そのビットストリームに対して、タイプ２の復号を行い、Octreeデータを生成する。すなわち、タイプ２復号部５２６は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、その親ノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層（LoD）のノードとは独立に算術復号する。タイプ２復号部５２６は、このような復号により得られたOctreeデータを、Octree復号部５１２に供給する。タイプ２復号部５２６は、復号制御部５２１により制御されて、これらの処理を行う。
【０２１９】
タイプ３復号部５２７は、例えば＜１．Octreeの符号化・復号順＞の＜タイプ３＞において図１３および図１４等を参照して説明したような「タイプ３の符号化」に対応するタイプ３の復号に関する処理を行う。例えば、タイプ３復号部５２７は、タイプ選択部５２３から供給されるビットストリームを取得する。また、タイプ３復号部５２７は、そのビットストリームに対して、タイプ３の復号を行い、Octreeデータを生成する。すなわち、タイプ３復号部５２７は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、前フレームの所定のノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層（LoD）のノードとは独立に算術復号する。タイプ３復号部５２７は、このような復号により得られたOctreeデータを、Octree復号部５１２に供給する。タイプ３復号部５２７は、復号制御部５２１により制御されて、これらの処理を行う。
【０２２０】
なお、これらの処理部（復号制御部５２１乃至タイプ３復号部５２７）は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU（Central Processing Unit）、ROM（Read Only Memory）、RAM（Random Access Memory）等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
【０２２１】
以上のような構成の復号装置５００において、可逆復号部５１１は、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。例えば、復号制御部５２１が、復号順として幅優先順または深さ優先順を選択し、その復号順に従って処理対象ノードを選択する。したがって、復号装置５００は、より多様な処理順でOctreeの符号化データ（ビットストリーム）を復号することができる。したがって、復号装置５００は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０２２２】
上述したように、図２９の例の場合、復号制御部５２１は、外部から供給されるデコードパラメータに基づいて復号順を選択する。つまり、可逆復号部５１１（復号制御部５２１）が、外部指示に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置５００の外部から復号順を指定することができる。つまり、例えば、ユーザ等が復号順を指定することができる。
【０２２３】
なお、この例に限らず、復号制御部５２１が状況に応じて復号順を指定するようにしてもよい。例えば、復号制御部５２１が、符号化データの復号処理の負荷に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置５００は、ユーザ等の外部からの指示なしに復号順を選択することができる。
【０２２４】
その際、復号順の選択の基準とする復号処理の負荷に関するパラメータは任意である。例えば、復号制御部５２１が、復号処理の速度に基づいて復号順を選択するようにしてもよい。また、例えば、復号制御部５２１が、復号処理により使用されるメモリの容量に基づいて復号順を選択するようにしてもよい。
【０２２５】
ところで、復号対象の符号化データ（ビットストリーム）において、Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、各ノードのデータの依存関係により、復号順として深さ優先順を選択することができない。そこで、そのような場合、復号制御部５２１が、復号順として幅優先順を選択するようにしてもよい。
【０２２６】
より具体的には、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、または、これらの方法の内の複数を組み合わせた方法により符号化されていない場合、復号制御部５２１が、復号順として幅優先順を選択するようにしてもよい。
【０２２７】
このようにすることにより、処理失敗の発生を抑制することができる。したがって、不要な処理を行うことによる負荷の増大を抑制することができる。換言するに、復号処理をより高速に行うことができる。
【０２２８】
なお、このようなOctreeの階層毎にコンテキストが初期化されて符号化されているかの判定は、符号化データにおけるOctreeの符号化の方法を示す情報に基づいて行われるようにしてもよい。例えば、復号制御部５２１が、図１９を参照して説明したフレームヘッダやLoDヘッダに含まれるタイプ（Type）に基づいて、Octreeの階層毎にコンテキストが初期化されて符号化されているか否かを判定するようにしてもよい。このようにすることにより、復号装置５００は、Octreeの階層毎にコンテキストが初期化されて符号化されているかの判定を、より容易に行うことができる。
【０２２９】
なお、復号制御部５２１は、ヘッダ解析部５２２により解析されたヘッダ情報（例えば、スライス数、オフセット、サイズ等）に基づいて、タイプ選択部５２３を制御し、ビットストリームから、処理対象ノードの対応する部分を抽出させる。さらに、復号制御部５２１は、ヘッダ情報（例えばタイプ等）に基づいて、処理対象ノードの符号化のタイプを特定する。復号制御部５２１は、タイプ選択部５２３を制御し、抽出した処理対象ノードのビットストリームを、タイプ０復号部５２４乃至タイプ３復号部５２７の内の、特定した符号化のタイプに対応する復号部に供給させる。また、復号制御部５２１は、ビットストリームを供給した復号部（タイプ０復号部５２４乃至タイプ３復号部５２７のいずれか）を制御し、そのビットストリームを復号させる。
【０２３０】
つまり、復号装置５００は、各ノードのビットストリームを、その符号化タイプに応じた適切なタイプにより、復号することができる。したがって、復号装置５００は、Octreeデータのビットストリームをより正確に復号することができる。
【０２３１】
なお、符号化のタイプが４の場合も、各ノードのデータは、タイプ０乃至タイプ３のいずれかのタイプにより符号化されている。また、復号においては、上述のように少なくともノード単位で復号のタイプを制御することができる。したがって、復号装置５００は、符号化のタイプがタイプ４の場合も、符号化のタイプがタイプ０乃至タイプ３の場合と同様に処理することができる。
【０２３２】
なお、以上においては、可逆復号部５１１が、タイプ０復号部５２４乃至タイプ３復号部５２７を備えるように説明した。すなわち、復号装置５００が、タイプ０乃至タイプ３の４つのタイプの復号を行うことができる（タイプ４については説明を省略する）ように説明した。しかしながら、復号装置５００は、任意のタイプの復号を行うことができるようにしてもよい。例えば、復号装置５００が、上述した例以外のタイプの復号を行うことができるようにしてもよい。
【０２３３】
また、復号装置５００が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、復号装置５００が、３以下のタイプの復号を行うことができるようにしてもよいし、５以上のタイプの復号を行うことができるようにしてもよい。
【０２３４】
いずれの場合も、可逆復号部５１１が、タイプ０復号部５２４乃至タイプ３復号部５２７のように、復号装置５００が実行可能なタイプの復号部を並列に備えるようにすればよい。つまり、図２９の例においては、可逆復号部５１１は、タイプ０復号部５２４乃至タイプ３復号部５２７の４つの復号部を有しているが、この例に限定されず、３つ以下の復号部を備えるようにすることもできるし、５つ以上の復号部を備えるようにすることもできる。
【０２３５】
＜復号処理の流れ＞
次に、復号装置５００により実行される復号処理の流れの例を、図３０および図３１のフローチャートを参照して説明する。
【０２３６】
復号処理が開始されると、復号装置５００の可逆復号部５１１のヘッダ解析部５２２は、ステップＳ５０１において、復号装置５００に入力されたビットストリームに含まれるヘッダ（例えばフレームヘッダやLoDヘッダ等）を解析する。
【０２３７】
ステップＳ５０２において、可逆復号部５１１の復号制御部５２１は、デコードパラメータを受け付ける。
【０２３８】
ステップＳ５０３において、復号制御部５２１は、ステップＳ５０２において取得したデコードパラメータに基づいて、深さ優先順で復号するか否かを判定する。復号順を深さ優先順とすると判定された場合、処理はステップＳ５０４に進む。
【０２３９】
ステップＳ５０４において、復号制御部５２１は、ステップＳ５０１において解析したヘッダに基づいて、ビットストリームが、タイプ１乃至タイプ３で符号化されているか否かを判定する。タイプ１乃至タイプ３で符号化されていると判定された場合、処理はステップＳ５０５に進む。
【０２４０】
ステップＳ５０５において、復号制御部５２１は、深さ優先順で次のノードを選択する。
【０２４１】
ステップＳ５０６において、復号制御部５２１は、タイプ選択部５２３乃至タイプ３復号部５２７を制御し、符号化のタイプやノード位置に応じた方法で処理対象ノードを復号する。
【０２４２】
ステップＳ５０７において、Octree復号部５１２は、ステップＳ５０６の処理により、生成されたOctreeデータから深さ優先順でOctreeを構築する。ステップＳ５０７の処理が終了すると、処理は図３１のステップＳ５２１に進む。
【０２４３】
また、図３０のステップＳ５０３において、幅優先順で復号すると判定された場合、処理はステップＳ５０８に進む。また、ステップＳ５０４において、ビットストリームがタイプ１乃至タイプ３で符号化されていない（例えばタイプ０により符号化されている）と判定された場合、処理はステップＳ５０８に進む。
【０２４４】
ステップＳ５０８において、復号制御部５２１は、幅優先順で次のノードを選択する。
【０２４５】
ステップＳ５０９において、復号制御部５２１は、タイプ選択部５２３乃至タイプ３復号部５２７を制御し、符号化のタイプやノード位置に応じた方法で処理対象ノードを復号する。
【０２４６】
ステップＳ５１０において、Octree復号部５１２は、ステップＳ５０８の処理により、生成されたOctreeデータから幅優先順でOctreeを構築する。ステップＳ５０７の処理が終了すると、処理は図３１のステップＳ５２１に進む。
【０２４７】
図３１のステップＳ５２１において、復号制御部５２１は、処理対象ノードがリーフノード（そのノードに属する他のノード（子ノードとも称する）が存在しない末端のノード）であるか否かを判定する。子ノードが存在し、リーフノードでないと判定された場合、処理は図３０のステップＳ５０３に戻り、それ以降の処理が繰り返される。
【０２４８】
また、図３１のステップＳ５２１において、子ノードが存在せず、処理対象ノードがリーフノードであると判定された場合、処理はステップＳ５２２に進む。
【０２４９】
ステップＳ５２２において、Octree復号部５１２は、そのリーフノードに対応するボクセルデータを生成する。
【０２５０】
ステップＳ５２３において、復号制御部５２１は、全てのリーフノードを処理したか否かを判定する。未処理のリーフノードが存在すると判定された場合、処理は図３０のステップＳ５０３に戻り、それ以降の処理が繰り返される。
【０２５１】
また、図３１のステップＳ５２３において、全てのリーフノードを処理したと判定された場合、処理はステップＳ５２４に進む。
【０２５２】
ステップＳ５２４において、Voxel復号部５１３は、ステップＳ５２２において生成されたボクセルデータからポイントクラウドデータを生成する。
【０２５３】
ステップＳ５２５において、可逆復号部５１１乃至Voxel復号部５１３は、属性情報を処理し、上述の位置情報に結合する。以上のようにしてポイントクラウドデータが復元されると、Voxel復号部５１３は、生成したポイントクラウドデータを復号装置５００のお外部に出力する。
【０２５４】
ステップＳ５２５の処理が終了すると、復号処理が終了する。
【０２５５】
以上のように各処理を実行することにより、復号装置５００は、より多様な処理順でOctreeの符号化データ（ビットストリーム）を復号することができる。したがって、復号装置５００は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
【０２５６】
＜４．付記＞
＜コンピュータ＞
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
【０２５７】
図３２は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０２５８】
図３２に示されるコンピュータ９００において、CPU（Central Processing Unit）９０１、ROM（Read Only Memory）９０２、RAM（Random Access Memory）９０３は、バス９０４を介して相互に接続されている。
【０２５９】
バス９０４にはまた、入出力インタフェース９１０も接続されている。入出力インタフェース９１０には、入力部９１１、出力部９１２、記憶部９１３、通信部９１４、およびドライブ９１５が接続されている。
【０２６０】
入力部９１１は、例えば、キーボード、マウス、マイクロホン、タッチパネル、入力端子などよりなる。出力部９１２は、例えば、ディスプレイ、スピーカ、出力端子などよりなる。記憶部９１３は、例えば、ハードディスク、RAMディスク、不揮発性のメモリなどよりなる。通信部９１４は、例えば、ネットワークインタフェースよりなる。ドライブ９１５は、磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブルメディア９２１を駆動する。
【０２６１】
以上のように構成されるコンピュータでは、CPU９０１が、例えば、記憶部９１３に記憶されているプログラムを、入出力インタフェース９１０およびバス９０４を介して、RAM９０３にロードして実行することにより、上述した一連の処理が行われる。RAM９０３にはまた、CPU９０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２６２】
コンピュータ（CPU９０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア９２１に記録して適用することができる。その場合、プログラムは、リムーバブルメディア９２１をドライブ９１５に装着することにより、入出力インタフェース９１０を介して、記憶部９１３にインストールすることができる。
【０２６３】
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部９１４で受信し、記憶部９１３にインストールすることができる。
【０２６４】
その他、このプログラムは、ROM９０２や記憶部９１３に、あらかじめインストールしておくこともできる。
【０２６５】
＜本技術の適用対象＞
以上においては、ポイントクラウドデータの符号化・復号に本技術を適用する場合について説明したが、本技術は、これらの例に限らず、任意の規格の３Ｄデータの符号化・復号に対して適用することができる。つまり、上述した本技術と矛盾しない限り、符号化・復号方式等の各種処理、並びに、３Ｄデータやメタデータ等の各種データの仕様は任意である。また、本技術と矛盾しない限り、上述した一部の処理や仕様を省略してもよい。
【０２６６】
本技術は、任意の構成に適用することができる。例えば、本技術は、衛星放送、ケーブルＴＶなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機（例えばテレビジョン受像機や携帯電話機）、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置（例えばハードディスクレコーダやカメラ）などの、様々な電子機器に適用され得る。
【０２６７】
また、例えば、本技術は、システムLSI（Large Scale Integration）等としてのプロセッサ（例えばビデオプロセッサ）、複数のプロセッサ等を用いるモジュール（例えばビデオモジュール）、複数のモジュール等を用いるユニット（例えばビデオユニット）、または、ユニットにさらにその他の機能を付加したセット（例えばビデオセット）等、装置の一部の構成として実施することもできる。
【０２６８】
また、例えば、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、本技術を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングとして実施するようにしてもよい。例えば、コンピュータ、AV（Audio Visual）機器、携帯型情報処理端末、IoT（Internet of Things）デバイス等の任意の端末に対して、画像（動画像）に関するサービスを提供するクラウドサービスにおいて本技術を実施するようにしてもよい。
【０２６９】
なお、本明細書において、システムとは、複数の構成要素（装置、モジュール（部品）等）の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、１つの筐体の中に複数のモジュールが収納されている１つの装置は、いずれも、システムである。
【０２７０】
＜本技術を適用可能な分野・用途＞
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
【０２７１】
＜その他＞
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の２状態を識別する際に用いる情報だけでなく、３以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の２値であってもよいし、３値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、１bitでも複数bitでもよい。また、識別情報（フラグも含む）は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
【０２７２】
また、符号化データ（ビットストリーム）に関する各種情報（メタデータ等）は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る（リンクさせ得る）ようにすることを意味する。つまり、互いに関連付けられたデータは、１つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ（画像）に関連付けられた情報は、その符号化データ（画像）とは別の記録媒体（または同一の記録媒体の別の記録エリア）に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、１フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
【０２７３】
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを１つのデータにまとめるといった、複数の物を１つにまとめることを意味し、上述の「関連付ける」の１つの方法を意味する。
【０２７４】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０２７５】
例えば、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。
【０２７６】
また、例えば、上述したプログラムは、任意の装置において実行されるようにしてもよい。その場合、その装置が、必要な機能（機能ブロック等）を有し、必要な情報を得ることができるようにすればよい。
【０２７７】
また、例えば、１つのフローチャートの各ステップを、１つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。さらに、１つのステップに複数の処理が含まれる場合、その複数の処理を、１つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。換言するに、１つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を１つのステップとしてまとめて実行することもできる。
【０２７８】
また、例えば、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
【０２７９】
また、例えば、本技術に関する複数の技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
【０２８０】
なお、本技術は以下のような構成も取ることができる。
（１）  ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
を備える画像処理装置。
（２）  前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
（１）に記載の画像処理装置。
（３）  前記符号化部は、前記Octreeの各階層の先頭ノードを、１階層上の先頭ノードの確率テーブルを用いて符号化する
（１）または（２）に記載の画像処理装置。
（４）  前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
（１）乃至（３）のいずれかに記載の画像処理装置。
（５）  前記所定のノードは、処理対象ノードと同一階層の最後のノードである
（４）に記載の画像処理装置。
（６）  前記所定のノードは、前記前フレームの最後のノードである
（４）に記載の画像処理装置。
（７）  前記符号化部は、
処理対象階層を他の階層と独立に符号化する方法、
処理対象階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内のいずれか複数を用いて前記Octreeを符号化する
（１）乃至（６）のいずれかに記載の画像処理装置。
（８）  前記符号化部は、
前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
前記Octreeの他の階層については、１つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
（１）乃至（７）のいずれかに記載の画像処理装置。
（９）  前記符号化部は、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内の少なくとも１つを含む複数の候補の中から１つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
（１）乃至（８）のいずれかに記載の画像処理装置。
（１０）  前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
（９）に記載の画像処理装置。
（１１）  ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
画像処理方法。
【０２８１】
（１２）  ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
を備える画像処理装置。
（１３）  前記復号部は、外部指示に基づいて前記復号順を選択する
（１２）に記載の画像処理装置。
（１４）  前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
（１２）または（１３）に記載の画像処理装置。
（１５）  前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
（１４）に記載の画像処理装置。
（１６）  前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
（１４）または（１５）に記載の画像処理装置。
（１７）  前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
（１２）乃至（１６）のいずれかに記載の画像処理装置。
（１８）  前記復号部は、前記符号化データにおいて前記Octreeが、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを１階層上の先頭ノードの確率テーブルを用いて符号化する方法、
前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
または、これらの方法の内の複数を組み合わせた方法、
により符号化されていない場合、前記復号順として前記幅優先順を選択する
（１７）に記載の画像処理装置。
（１９）  前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
（１７）または（１８）に記載の画像処理装置。
（２０）  ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
画像処理方法。
【符号の説明】
【０２８２】
３００  符号化装置，  ３１１  Voxel生成部，  ３１２  Octree生成部，  ３２１  符号化制御部，  ３２２  タイプ選択部，  ３２３  タイプ０符号化部，  ３２４  タイプ１符号化部，  ３２５  タイプ２符号化部，  ３２６  タイプ３符号化部，  ３２７  ビットストリーム生成部，  ５００  復号装置，  ５１１  可逆復号部，  ５１２  Octree復号部，  ５１３  Voxel復号部，  ５２１  復号制御部，  ５２２  ヘッダ解析部，  ５２３  タイプ選択部，  ５２４  タイプ０復号部，  ５２５  タイプ１復号部，  ５２６  タイプ２復号部，  ５２７  タイプ３復号部
【図１】
2020066680.tif 000003
【図２】
2020066680.tif 000004
【図３】
2020066680.tif 000005
【図４】
2020066680.tif 000006
【図５】
2020066680.tif 000007
【図６】
2020066680.tif 000008
【図７】
2020066680.tif 000009
【図８】
2020066680.tif 000010
【図９】
2020066680.tif 000011
【図１０】
2020066680.tif 000012
【図１１】
2020066680.tif 000013
【図１２】
2020066680.tif 000014
【図１３】
2020066680.tif 000015
【図１４】
2020066680.tif 000016
【図１５】
2020066680.tif 000017
【図１６】
2020066680.tif 000018
【図１７】
2020066680.tif 000019
【図１８】
2020066680.tif 000020
【図１９】
2020066680.tif 000021
【図２０】
2020066680.tif 000022
【図２１】
2020066680.tif 000023
【図２２】
2020066680.tif 000024
【図２３】
2020066680.tif 000025
【図２４】
2020066680.tif 000026
【図２５】
2020066680.tif 000027
【図２６】
2020066680.tif 000028
【図２７】
2020066680.tif 000029
【図２８】
2020066680.tif 000030
【図２９】
2020066680.tif 000031
【図３０】
2020066680.tif 000032
【図３１】
2020066680.tif 000033
【図３２】
2020066680.tif 000034
【国際調査報告】
2020066680.tif 000035
2020066680.tif 000036
2020066680.tif 000037
2020066680.tif 000038
2020066680.tif 000039
2020066680.tif 000040