JPWO2020066680A1 - 画像処理装置および方法 - Google Patents

画像処理装置および方法 Download PDF

Info

Publication number
JPWO2020066680A1
JPWO2020066680A1 JP2020548453A JP2020548453A JPWO2020066680A1 JP WO2020066680 A1 JPWO2020066680 A1 JP WO2020066680A1 JP 2020548453 A JP2020548453 A JP 2020548453A JP 2020548453 A JP2020548453 A JP 2020548453A JP WO2020066680 A1 JPWO2020066680 A1 JP WO2020066680A1
Authority
JP
Japan
Prior art keywords
node
decoding
coding
type
octree
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2020548453A
Other languages
English (en)
Other versions
JP7359153B2 (ja
Inventor
幸司 矢野
幸司 矢野
加藤 毅
毅 加藤
智 隈
智 隈
央二 中神
央二 中神
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Sony Group Corp
Original Assignee
Sony Corp
Sony Group Corp
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 Sony Corp, Sony Group Corp filed Critical Sony Corp
Publication of JPWO2020066680A1 publication Critical patent/JPWO2020066680A1/ja
Application granted granted Critical
Publication of JP7359153B2 publication Critical patent/JP7359153B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H03M7/70Type of the data to be coded, other than image and sound
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • 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/3077Sorting
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/21Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with binary alpha-plane coding for video objects, e.g. context-based arithmetic encoding [CAE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

本開示は、Octreeの符号化データを多様な処理順で復号することができるようにする画像処理装置および方法に関する。
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。また、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。本開示は、例えば、画像処理装置、電子機器、画像処理方法、またはプログラム等に適用することができる。

Description

本開示は、画像処理装置および方法に関し、特に、Octreeの符号化データを多様な処理順で復号することができるようにした画像処理装置および方法に関する。
従来、例えばポイントクラウド(Point cloud)のような3次元構造を表す3Dデータの符号化方法として、例えばOctreeを用いた符号化があった(例えば非特許文献1参照)。
この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の構造の例を説明する図である。 符号化のタイプの例を説明する図である。 幅優先順の探索について説明する図である。 幅優先順の処理の様子の例について説明する図である。 深さ優先順の探索について説明する図である。 深さ優先順の処理の様子の例について説明する図である。 メモリ使用量の比較例を示す図である。 タイプ1の探索順について説明する図である。 タイプ1の探索順の処理の様子の例について説明する図である。 タイプ2の探索順について説明する図である。 タイプ2の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ3の探索順の処理の様子の例について説明する図である。 タイプ4の探索順の処理の様子の例について説明する図である。 タイプ4の探索順の処理の様子の例について説明する図である。 ヘッダ情報の例を示す図である。 符号化装置の主な構成例を示すブロック図である。 可逆符号化部の主な構成例を示すブロック図である。 符号化処理の流れの例を説明するフローチャートである。 符号化処理の流れの例を説明する、図22に続くフローチャートである。 タイプ0符号化処理の流れの例を説明するフローチャートである。 タイプ1符号化処理の流れの例を説明するフローチャートである。 タイプ2符号化処理の流れの例を説明するフローチャートである。 タイプ3符号化処理の流れの例を説明するフローチャートである。 復号装置の主な構成例を示すブロック図である。 可逆復号部の主な構成例を示すブロック図である。 復号処理の流れの例を説明するフローチャートである。 復号処理の流れの例を説明する、図30に続くフローチャートである。 コンピュータの主な構成例を示すブロック図である。
以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.Octreeの符号化・復号順
2.第1の実施の形態(符号化装置)
3.第2の実施の形態(復号装置)
4.付記
<1.Octreeの符号化・復号順>
<技術内容・技術用語をサポートする文献等>
本技術で開示される範囲は、実施の形態に記載されている内容だけではなく、出願当時において公知となっている以下の非特許文献に記載されている内容も含まれる。
非特許文献1:(上述)
非特許文献2: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
非特許文献3:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union), "Advanced video coding for generic audiovisual services", H.264, 04/2017
非特許文献4:TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU(International Telecommunication Union), "High efficiency video coding", H.265, 12/2016
非特許文献5: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
つまり、上述の非特許文献に記載されている内容もサポート要件を判断する際の根拠となる。例えば、非特許文献4に記載されているQuad-Tree Block Structure、非特許文献5に記載されているQTBT(Quad Tree Plus Binary Tree) Block Structureが実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。また、例えば、パース(Parsing)、シンタックス(Syntax)、セマンティクス(Semantics)等の技術用語についても同様に、実施の形態において直接的な記載がない場合でも、本技術の開示範囲内であり、請求の範囲のサポート要件を満たすものとする。
<ポイントクラウド>
従来、点群の位置情報や属性情報等により3次元構造を表すポイントクラウド(Point cloud)や、頂点、エッジ、面で構成され、多角形表現を使用して3次元形状を定義するメッシュ(Mesh)等の3Dデータが存在した。
例えばポイントクラウドの場合、立体構造物(3次元形状のオブジェクト)を多数の点の集合(点群)として表現する。つまり、ポイントクラウドのデータ(ポイントクラウドデータとも称する)は、この点群の各点の位置情報や属性情報(例えば色等)により構成される。したがってデータ構造が比較的単純であるとともに、十分に多くの点を用いることにより任意の立体構造物を十分な精度で表現することができる。
<ボクセルを用いた位置情報の量子化>
このようなポイントクラウドデータはそのデータ量が比較的大きいので、符号化等によるデータ量を圧縮するために、ボクセル(Voxel)を用いた符号化方法が考えられた。ボクセルは、符号化対象の位置情報を量子化するための3次元領域である。
つまり、ポイントクラウドを内包する3次元領域をボクセルと称する小さな3次元領域に分割し、そのボクセル毎に、ポイントを内包するか否かを示すようにする。例えば、図1の左側の例の場合、210×210×210のボクセル10が3次元空間に設定されており、そのボクセル毎にポイントの有無(ポイントを内包するか否か)が示されている。図1の例の場合、グレーのボクセルはポイントを内包するボクセルであることを示し、白色のボクセルはポイントを内包しないボクセルであることを示している。
このようにすることにより、各ポイントの位置はボクセル単位に量子化される。したがって、ポイントクラウド(Point cloud)データをこのようなボクセルのデータ(ボクセル(Voxel)データとも称する)に変換することにより、情報量の増大を抑制する(典型的には情報量を削減する)ことができる。
<Octree>
さらに、このようなボクセル(Voxel)データを用いてOctreeを構築することが考えられた。Octreeは、例えば図2に示されるように、ボクセルデータを木構造化したものである。このOctreeの最下位のノードの各ビットの値が、各ボクセルのポイントの有無を示す。例えば、値「1」がポイントを内包するボクセルを示し、値「0」がポイントを内包しないボクセルを示す。Octreeでは、1ノードが8つのボクセルに対応する。つまり、Octreeの各ノードは、8ビットのデータにより構成され、その8ビットが8つのボクセルのポイントの有無を示す。
そして、Octreeの上位のノードは、そのノードに属する下位ノードに対応する8つのボクセルを1つにまとめた領域のポイントの有無を示す。つまり、下位ノードのボクセルの情報をまとめることにより上位ノードが生成される。
例えば、図1の左のボクセル10群における太線で示される範囲11について考えると、範囲11Aのように、2×2×2のボクセル10ずつ情報がまとめられてOctreeの最下位ノードが生成される。つまり、8つのボクセル10のポイントの有無を示す最下位ノードが生成される。
例えば、この最下位ノードの値が「0」でない場合、すなわち、対応する8つのボクセルの内の少なくとも1つがポイントを内包する場合、その上位のノードが生成される。例えば、範囲11Bのように、その8つのボクセルをまとめた領域(より低解像度のボクセル)が生成され、その低解像度のボクセルのポイントの有無を示す情報が2×2×2ずつまとめられて上位ノードが生成される。つまり、8つの低解像度のボクセルのポイントの有無を示す上位ノードが生成される。
例えば、この上位ノードの値が「0」でない場合、同様にして、例えば、範囲11Cのように、さらに上位のノードが生成される。
これに対し、値が「0」のノード、すなわち、対応する8つのボクセルが全てポイントを内包しない場合、そのノードは削除される。
このようにすることにより、図2に示されるように、値が「0」でないノードからなる木構造(Octree)が構築される。つまり、Octreeは、各解像度のボクセルのポイントの有無を示すことができる。したがって、ボクセルデータをOctree化して符号化することにより、復号の際により多様な解像度のボクセルデータをより容易に復元することができる。つまり、より容易にボクセルのスケーラビリティを実現することができる。
また、上述のように値が「0」のノードを省略することにより、ポイントが存在しない領域のボクセルを低解像度化することができるので、さらなる情報量の増大の抑制(典型的には情報量の削減)を行うことができる。
<Octreeの符号化>
Octreeのデータを符号化することにより、さらなる情報量の増大の抑制(典型的には情報量の削減)を行うことができる。その場合、Octreeの各ノードの情報(8ビットのデータ)をそれぞれ符号化(例えば算術符号化)する。算術符号化では、直前に処理されたノードの符号化結果をコンテキストとして用いて確率テーブルを選択し、その選択した確率テーブルを用いて符号化を行う。つまり、各ノードの符号化は、その処理順(探索順)に依存関係が生じる。
<幅優先順>
Octreeのデータの符号化の方法として、例えば、Octreeの各ノードを幅優先順に探索し、その幅優先順に各ノードのデータを符号化する方法が考えられた(図3のタイプ0)。幅優先順とは、例えば図4に示される点線矢印のように、Octreeの最上位ノードから、1階層(LoDとも称する)ずつ各ノードを探索する順である。つまり、図4の例の場合、N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V、Yの順に各ノードが探索される。したがって、各ノードのデータの符号化も、図5に示されるように、探索順と同順に行われる。
上述したように、直前に処理されたノードの符号化結果をコンテキストとして利用して符号化を行う場合、その符号化順に依存関係が生じる。その場合、復号順もその依存関係により制限される。つまり、幅優先順に符号化が行われた場合、復号も、幅優先順に行う必要がある。
また、復号には親ノード(当該ノード(自ノードとも称する)が属する1階層上位のノード)の情報も必要である。したがって、例えば、図4のOctreeにおけるノードAを復号する際には、その親ノードであるノードBの情報が必要になる。また、そのノードAの後に処理されるノードC乃至ノードYを復号する際には、それらの親ノードであるノードF乃至ノードZの情報が必要になる。つまり、ノードAを復号する際に、ノードB乃至ノードZの情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の最初に処理されるノード(先頭ノードとも称する)を復号する際に、その1階層上位のLoDの全ノードの情報を保持する必要がある。
<深さ優先順>
幅優先順以外の探索順として例えば深さ優先順がある。深さ優先順とは、例えば、図6に示される点線矢印のように、Octreeの最下位ノードをできるだけ早期に探索する順である。例えば、図6の例の場合、N、G、D、B、A、C、F、E、K、I、H、J、M、L、U、R、P、O、Q、T、S、X、W、V、Z、Yの順に各ノードが探索される。したがって、各ノードのデータの符号化も、図7に示されるように、探索順と同順に行われる。
例えば、算術符号化のように、直前に処理されたノードの符号化結果をコンテキストとして利用して符号化を行う場合、復号も同順に行う必要がある。つまり、深さ優先順に復号を行う必要がある。
また、この場合も、復号には親ノードの情報も必要である。したがって、例えば、図6のノードAを復号する際には、ノードBの情報が必要になる。また、そのノードAの後に処理されるノードF、ノードK、ノードUを復号する際には、それぞれ、ノードD、ノードG、ノードNの情報が必要になる。つまり、ノードAを復号する際に、ノードN、ノードG、ノードD、およびノードDの情報を保持する必要がある。すなわち、幅優先順で復号する場合、処理対象階層の先頭ノードを復号する際に、最上位階層のノード(最上位ノードまたはルートノードとも称する)から自ノードまでの経路の全てのノードの情報を保持する必要がある。
<幅優先順と深さ優先順の比較>
Octreeの構造(枝数やLoD数(階層数))にもよるが、一般的にOctreeは、横に広い(LoD数よりも最下位のLoDのノード数の方が多い)。そのため、幅優先順で復号を行う場合の方が、深さ優先順で復号を行う場合よりも、復号の際に使用する(データ保持に必要な)メモリ容量が増大するおそれがあった。
幅優先順の場合と深さ優先順の場合との、復号の際に使用されるメモリ容量の比較例を図8に示す。図8のグラフは、ポイント数が500万、LoD数(深さ)が20のOctreeの符号化データ(5MPointLoD20)を復号する際に使用されるメモリ容量を比較したものである。図中左の棒グラフの組は、最上位から10LoD(10階層)分のデータを復号した場合のメモリ容量(lod10)を示し、図中中央の棒グラフの組は、最上位から15LoD(15階層)分のデータを復号した場合のメモリ容量(lod15)を示し、図中右の棒グラフの組は、最上位から20LoD(20階層)分のデータを復号した場合のメモリ容量(lod20)を示す。また、各組の左側の白い棒グラフが深さ優先順の場合のメモリ容量を示し、右側のグレーの棒グラフが幅優先順の場合のメモリ容量を示している。
図8のグラフに明らかなように、どの場合も、幅優先順の場合の方が、深さ優先順の場合よりも、復号の際に使用するメモリ容量が大きい。また、Octreeが大きくなる程(ノード数が増大する程)その差は大きくなる。
このように復号に必要なメモリ容量が増大すると、デコーダにより大容量のメモリを搭載する必要が生じ、デコーダの製造コストが増大するおそれがあった。また、その分デコーダの小型化が困難になるおそれもあった。また、処理済みのノードの情報を保持する以外の処理に利用可能なメモリ容量が低減するため、復号の処理速度が低減するおそれもあった。
ただし、どの程度影響があるかは、Octreeの構造(例えばLoD数やノード数等)やデコーダのハードウエア性能(例えばメモリ容量等)に依存する。例えば、デコーダのメモリ容量が、復号の際の使用されるメモリ容量に比べて十分に大きい場合、探索順による処理負荷の変動の影響は少ない。
また、幅優先順で符号化する場合の方が、深さ優先順で符号化する場合よりも、符号化効率の低減を抑制する(典型的には符号化効率を向上させる)ことができる。
<最適な探索順>
つまり、どのような探索順とするのが最適であるかは、Octreeの構造、デコーダのハードウエア性能(メモリ容量等)、および、何を優先させるか(例えば符号化効率の向上を優先させるかまたはデコーダのメモリ容量の低減を優先させるか)等に依存する。つまり、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。換言するに、幅優先順で復号を行わせるようにすることが必ず最適であるとは限らない。
そこで、図3の表の上から2行目に記載のように、Octreeの符号化データを幅優先以外の方法により復号することができるようにOctreeの符号化を行うようにする。つまり、より多様な処理順でOctreeの符号化データを復号することができるように、Octreeの符号化を行うようにする。
より具体的には、例えば、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化(リセット)して符号化するようにする。例えば、Octreeを符号化する画像処理装置において、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化(リセット)して符号化する符号化部を備えるようにする。
このようにすることにより、デコーダに、より多様な処理順でOctreeの符号化データを復号させることができる。したがって、デコーダが、より適切な処理順でOctreeの符号化データを復号するようにすることができる。
また、例えば、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号するようにする。例えば、Octreeの符号化データを復号する画像処理装置において、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する復号部を備えるようにする。
このようにすることにより、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。つまり、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
<タイプ1>
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から3行目に示されるように、Octreeの各階層を互いに独立に符号化するようにしてもよい(タイプ1)。
例えば、図9に示される点線矢印のように、OctreeのLoD間で参照しないように符号化する。つまり、LoD毎に独立に符号化を行うようにする。より具体的には、例えば、図10に示されるように幅優先順と同順に、算術符号化を行うようにし、さらに、各LoDの先頭ノードにおいてその算術符号化(コンテキスト)を初期化するようにする。
つまり、この例の場合、N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V、Yの順に各ノードのデータが算術符号化される。算術符号化では、直前のノードの符号化結果を用いてコンテキストを求め、そのコンテキストに応じて確率テーブルを選択し、選択した確率テーブルを用いて算術符号化処理を行う。ただし、このタイプ1の場合、ノードN、ノードG、ノードD、ノードB、およびノードAにおいて算術符号化(コンテキスト)が初期化される。
このタイプ1の場合、図4および図5を参照して説明した幅優先順の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する(典型的には符号化効率を向上させる)ことができる。
また、このタイプ1の場合、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。つまり、エンコーダは、LoD毎に独立に処理することができる。したがって、エンコーダは、例えば、LoD毎に符号化処理を並列化する(各LoDの符号化を互いに並列に行う)ことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
さらに、このように各LoDの算術符号化が互いに独立している(各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無い)ことから、このタイプ1の場合、この算術符号化に対応する復号(すなわち算術復号)の処理順(復号順とも称する)が幅優先順に限定されない。例えば、デコーダは、このタイプ1の符号化により生成されたOctreeの符号化データの復号順を、幅優先順(図5)とすることもできるし、深さ優先順(図7)とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
なお、このタイプ1の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
<タイプ2>
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から4行目に示されるように、Octreeの各LoDの先頭ノードは、その親ノードの確率テーブルを利用して符号化を行うようにしてもよい(タイプ2)。
例えば、図11に示される点線矢印のように、Octreeの各LoDの先頭ノードの符号化において、その親ノードの確率テーブルを利用するようにする。より具体的には、例えば、図12に示されるように幅優先順と同順に算術符号化を行うようにし、さらに、各LoDの先頭ノードにおいてその算術符号化(コンテキスト)を初期化するようにする。さらに、各LoDの先頭ノードにおいてその親ノードの確率テーブルを引き継ぎ(コピーし)、その確率テーブルを用いて算術符号化を行うようにする。
つまり、この例の場合、N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V、Yの順に各ノードのデータが算術符号化される。ただし、このタイプ2の場合、ノードN、ノードG、ノードD、ノードB、およびノードAにおいて算術符号化(コンテキスト)が初期化される。また、そのノードN、ノードG、ノードD、ノードB、およびノードAにおいて、それぞれの親ノード(ノードGの場合ノードN、ノードDの場合ノードG、ノードBの場合ノードD、ノードAの場合ノードB)の確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。
このようにすることにより、タイプ1の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する(典型的には符号化効率を向上させる)ことができる。
また、このタイプ2の場合、タイプ1の場合と同様に、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
さらに、このタイプ2の場合、各LoDの先頭ノードの算術符号化においてその親ノードの確率テーブルを利用するので、エンコーダは、タイプ1の場合よりも符号化効率の低減を抑制することができる(典型的には符号化効率を向上させることができる)。
また、このタイプ2の場合、各LoDの先頭ノード同士で依存関係が存在するものの、それ以外のノードは、LoD間で互いに独立している。したがって、エンコーダは、各LoDの先頭ノード以外のノードについては、各LoDの算術符号化を互いに並列に行うことができる。例えば複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
さらに、タイプ1の場合と同様に各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無いことから、このタイプ2の場合も、算術復号の復号順が幅優先順に限定されない。例えば、デコーダは、このタイプ2の符号化により生成されたOctreeの符号化データの復号順を、幅優先順(図5)とすることもできるし、深さ優先順(図7)とすることもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
なお、このタイプ2の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
<タイプ3>
ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する方法として、例えば図3の上から5行目に示されるように、Octreeの各LoDの先頭ノードは、その前フレームの所定のノードの確率テーブルを利用して符号化を行うようにしてもよい(タイプ3)。
例えば、図13に示される点線矢印のように、フレーム1(Frame1)のOctreeの各LoDの先頭ノードの符号化において、その直前のフレーム(フレーム0(Frame0))のOctreeの所定のノードの確率テーブルを利用するようにする。より具体的には、例えば、図14に示されるようにフレーム1の各ノードを幅優先順と同順に算術符号化を行うようにし、さらに、その各LoDの先頭ノードにおいてその算術符号化(コンテキスト)を初期化するようにし、さらに、その各LoDの先頭ノードにおいて、フレーム0の所定のノードの確率テーブルを引き継ぎ(コピーし)、その確率テーブルを用いて算術符号化を行うようにする。
例えば、図13の例のように、フレーム0の、処理対象ノードと同一のLoDの最後のノードの確率テーブルが複製(コピー)されるようにしてもよい。
つまり、この例の場合、フレーム1の、N、G、U、D、K、R、X、B、F、I、M、P、T、W、Z、A、C、E、H、J、L、O、Q、S、V、Yの順に各ノードのデータが算術符号化される。ただし、このタイプ3の場合、ノードN、ノードG、ノードD、ノードB、およびノードAにおいて算術符号化(コンテキスト)が初期化される。また、フレーム1のノードNを処理対象とする場合、フレーム0のノードNの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。さらに、フレーム1のノードGを処理対象とする場合、フレーム0のノードUの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。また、フレーム1のノードDを処理対象とする場合、フレーム0のノードXの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。さらに、フレーム1のノードBを処理対象とする場合、フレーム0のノードZの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。また、フレーム1のノードAを処理対象とする場合、フレーム0のノードYの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われる。
このようにすることにより、タイプ1の場合と同様に、LoD毎に各ノードを符号化することができるので、エンコーダは、符号化効率の低減を抑制する(典型的には符号化効率を向上させる)ことができる。
また、このタイプ3の場合、タイプ1の場合と同様に、各LoDの先頭ノードにおいて算術符号化が初期化されるので、エンコーダは、その1階層上のLoDの最後のノードの処理結果を参照せずにその先頭ノードの算術符号化を行うことができる。
さらに、このタイプ3の場合、図13や図14の例のように、各LoDの先頭ノードの算術符号化において前フレームの同一LoDの最後のノードの確率テーブルが利用されるようにすることにより、エンコーダは、タイプ2の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、タイプ2の場合よりも符号化効率の低減を抑制することができる(典型的には符号化効率を向上させることができる)。
また、このタイプ3の場合、タイプ1の場合と同様に各LoDの算術符号化が互いに独立しており、エンコーダは、各LoDの算術符号化を互いに並列に行うことができる。例えばエンコーダが複数の処理を並列に実行することができる場合、エンコーダは、このように各LoDを並列に算術符号化することにより、より高速に符号化を行うことができる。
また、このタイプ3の場合も、タイプ1の場合と同様に、各LoDの先頭ノードとその1階層上位のLoDの最後のノードとで算術符号化の依存関係が無い。したがって、この算術符号化に対応する復号(すなわち算術復号)の処理順(復号順とも称する)は、幅優先順とすることもできるし、深さ優先順とすることもできる。つまり、デコーダは、図5のような処理順で各ノードの符号化データを算術復号することもできるし、図7のような処理順で各ノードの符号化データを算術復号することもできる。つまり、デコーダは、より多様な処理順でOctreeの符号化データを復号することができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
なお、このタイプ3の場合も、位置を復元するための親子間の依存関係は必要である。つまり、処理対象のノードの親ノードの情報が必要である。また、ビットストリームにおいて、直接的に処理対象のLoDの先頭ノードの符号化データにアクセスすることができるように、各LoDの先頭ノードのデータ位置を示す情報を、ヘッダ情報に含めるようにしてもよい。このようにすることにより、そのヘッダ情報を参照することにより、ビットストリーム内の所望のLoDの先頭ノードの符号化データに、より容易にアクセスする(その符号化データを読み出す)ことができる。つまり、より高速に復号を行う(すなわち復号処理の負荷の増大を抑制する(典型的には復号処理の負荷を低減させる))ことができる。
なお、確率テーブルを参照するノード(参照先のノード)は、前フレームのノードであれば任意である(任意のノードの確率テーブルを引き継いで算術復号することができる)。例えば、図15の例のように、フレーム0の最後のノードの確率テーブルが複製(コピー)されるようにしてもよい。例えば、図16に示されるように、フレーム1のノードN、ノードG、ノードD、ノードB、またはノードAを処理対象とする場合、算術符号化が初期化され、さらに、フレーム0の最後のノードであるノードYの確率テーブルが複製(コピー)され、その複製した確率テーブルを用いて算術符号化が行われるようにしてもよい。
このようにすることにより、図13および図14を参照して説明した例の場合よりも多くの回数更新した確率テーブルを用いて算術符号化を行うことができる。したがって、エンコーダは、符号化効率の低減をより抑制することができる(典型的には符号化効率をより向上させることができる)。
なお、以上においては1つ前に処理された前フレームの確率テーブルを参照するように説明したが、この確率テーブルの参照先のフレームは任意である。例えば、2つ以上前に処理されたフレームの任意のノードの確率テーブルを参照するようにしてもよい。
<タイプ4>
また、例えば図3の上から6行目に示されるように、上述したタイプ0乃至タイプ3を組み合わせて用いるようにしてもよい(タイプ4)。
例えば、図17に示されるように、タイプ0と、タイプ1乃至タイプ3のいずれかとを組み合わせて用いるようにしてもよい。つまり、Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、その他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化するようにしてもよい。
図17の例の場合、最上位層からノードD乃至ノードXの階層までの各LoDに対して、タイプ0、すなわち、1つ前に処理されたノードの処理結果をコンテキストとして用いて各ノードを符号化する方法が適用されている。また、ノードB乃至ノードZの階層から最下位層の各LoDに対して、タイプ1、すなわち、Octreeの各階層を、互いに独立に符号化する方法が適用されている。
タイプ0の方がタイプ1よりも符号化効率が良いので、このようにすることにより、上位層の符号化効率の低減を抑制することができるとともに、下位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。例えば、デコーダは、階層のデコードに対して深さ優先順に復号を行うことにより、全階層を幅優先順で復号する場合に比べて、使用するメモリ容量の増大を抑制することができる。
なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ1を適用し、下位層に対してタイプ0を適用するようにしてもよい。このようにすることにより、上述の例とは逆に、下位層の符号化効率の低減を抑制することができるとともに、上位層のデコードに対して、より多様な処理順でOctreeの符号化データを復号することができる。
一般的に復号の頻度は、下位層のノードよりも上位層のノードの方が多い。したがって、例えば、上位層に対してタイプ1を適用し、下位層に対してタイプ0を適用することにより、復号の頻度の多い上位層の復号順を多様化するとともに、復号の頻度の少ない下位層の符号化効率の低減を抑制することができる。
また、Octreeは、上位層ほどノード数が少ないので、上位層の方が下位層に比べてメモリ使用量は少ない。したがって、例えば、復号順によるメモリ使用量への影響は、上位層ほど少ない。したがって、上位層に対してタイプ0を適用し、下位層に対してタイプ1を適用することにより、復号順によるメモリ使用量への影響が比較的大きい下位層の復号順を多様化するとともに、その影響が比較的少ない上位層の符号化効率の低減を抑制することができる。
また、以上においては、タイプ0とタイプ1との組み合わせについて説明したが、タイプ2やタイプ3も、上述のタイプ1の場合と同様にタイプ0と組み合わせることができる。換言するに、タイプ1乃至タイプ3は、一部のLoDにのみ適用することができる。
また、例えば、図18に示されるように、タイプ1乃至タイプ3の内の複数を組み合わせて用いるようにしてもよい。つまり、処理対象階層を他の階層と独立に符号化する方法、処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内のいずれか複数を用いてOctreeを符号化するようにしてもよい。
図18の例の場合、最上位層からノードD乃至ノードXの階層までの各LoDに対して、タイプ2、すなわち、処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法が適用されている。また、ノードB乃至ノードZの階層から最下位層の各LoDに対して、タイプ1、すなわち、処理対象階層を他の階層と独立に符号化する方法が適用されている。
タイプ2の方がタイプ1よりも符号化効率が良いので、このようにすることにより、全階層にタイプ1を適用する場合よりも、上位層の符号化効率の低減を抑制することができる。また、タイプ1の方がタイプ2よりも各LoDを互いに独立に符号化することができるので、このようにすることにより、全階層にタイプ2を適用する場合よりも、下位層の符号化をより高速に行うことができる。
なお、組み合わせ方は任意である。例えば、上述した例に限らず、任意の階層においてタイプを切り替えるようにしてもよい。また、上位層に対してタイプ2を適用し、下位層に対してタイプ1を適用するようにしてもよい。また、例えばタイプ2とタイプ3、タイプ1とタイプ3等のように、上述のタイプ1とタイプ2以外の組み合わせであってもよい。さらに、3種類以上のタイプを組み合わせるようにしてもよい。また、例えば、上位層から順にタイプ0、タイプ1、タイプ0を組み合わせる等、同じタイプを複数回組み合わせてもよい。もちろん、これらのタイプの組み合わせにさらにタイプ0を組み合わせてもよい。例えば、タイプ0、タイプ1、タイプ2、タイプ3を全て組み合わせてもよい。いずれの場合も、上述のタイプ1とタイプ2との組み合わせの例の場合と同様に、各タイプの特徴に応じた効果を得ることができる。換言するに、タイプ1乃至タイプ4は、一部のLoDにのみ適用することができる。
いずれの組み合わせ例を適用する方が良いかはユースケースに依存する。例えば、データの使用頻度に応じて各LoDの処理量やリソース使用量の配分を決定するようにしてもよい。
なお、タイプ1の場合、LoD毎に独立に符号化する。つまり、この場合、各LoDをスライス化しているとも言える。このようなスライス化は、LoD毎でなくてもよい。つまり、各LoDの先頭ノード(最後のノード)以外の位置において、スライスを切る(符号化の依存関係を無くす)ようにしてもよい。つまり、各LoDの先頭ノード以外のノードにおいて、算術符号化をリセットするようにしてもよい。
例えば、複数のLoDを1つのスライスとするようにしてもよい。例えば、上述のようにタイプ0とタイプ1とを組み合わせることにより、このような複数のLoDを含むスライスを実現することができる。
また、例えば、LoDの途中のノードにおいてスライスを切るようにしてもよい。例えば、タイプ0に、スライスの途中でタイプ1を適用することにより、このようなスライスの切り方を実現することができる。つまり、上述の複数タイプの組み合わせは、LoD単位でなくてもよく、LoDの途中のノードにおいて組み合わせるようにしてもよい。
以上のように、スライスの切り方(スライス構成)は任意である。例えば、エンコーダが、各スライスの処理量がより均一となるように、各スライスを形成するようにしてもよい。例えば、エンコーダが、各スライスのノード数がより均一となるように、各スライスを形成するようにしてもよい。このように各スライスの処理量をより均一化することにより、エンコーダやデコーダが、各スライスを並列処理する場合に、負荷をより均一に分散することができる。
また、例えば、エンコーダが、各スライスの復号の際のリソース使用量(例えばメモリ使用量)がより均一となるように、各スライスを形成するようにしてもよい。また、例えば、エンコーダが、各スライスの符号量(ビットストリームサイズ)がより均一となるように、各スライスを形成するようにしてもよい。
<タイプの選択>
また、上述のタイプ0乃至タイプ4の内の少なくとも1つを含む複数のタイプを候補とし、エンコーダがその複数の候補の中から所望のタイプを選択して符号化に適用するようにしてもよい。例えば、エンコーダが、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、および、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、その選択した方法を用いてOctreeを符号化するようにしてもよい。
例えば、エンコーダがユーザ等の外部からタイプの指定(エンコードパラメータ)を受け付け、その指定に基づいて複数の候補の中からタイプを選択し、符号化に適用するようにしてもよい。このようにすることにより、エンコーダは、より多様な方法でOctreeを符号化することができる。したがって、エンコーダは、より多様な仕様のデコーダに対応する方法でOctreeを符号化することができる。
<タイプ情報のシグナル>
なお、上述した符号化のタイプに関する情報を、デコーダ側に伝送するようにしてもよい。例えば、エンコーダが、上述のように複数の候補の中から選択した符号化のタイプを示す情報と、その符号化により生成したOctreeの符号化データとを含むビットストリームを生成するようにしてもよい。例えば、エンコーダが、そのビットストリームのヘッダ情報として、その符号化のタイプに関する情報を伝送する(シグナルする)ようにしてもよい。例えば、図19に示されるように、ビットストリームに含まれる、フレーム毎のヘッダ情報であるフレームヘッダ(Frame Header)や、LoD毎のヘッダ情報であるLoDヘッダ(LoD Header)において、符号化のタイプに関する情報を伝送する(シグナルする)ようにしてもよい。
図19の例の場合、フレームヘッダにおいて、タイプ(Type)、スライス数(SliceNum)、オフセット(Offset)等の情報がシグナルされる。タイプ(Type)は、そのフレームに適用された符号化のタイプを示す識別情報である。例えば、上述のようにタイプ0乃至タイプ4が適用可能な場合、「0」乃至「4」のいずれかがセット(設定)される。もちろん、このタイプ(Type)の値は任意である。このタイプ(Type)を参照することにより、デコーダは、そのフレームに適用された符号化のタイプをより容易に識別することができる。したがって、そのビットストリームに対する適切な復号方法(復号順)をより容易に選択することができる。
スライス数(SliceNum)は、そのフレームに含まれるスライスの数を示す情報である。例えば、タイプ1が適用された場合、途中のノードで算術符号化がリセットされ、スライスが形成される。スライス数(SliceNum)には、このように形成されたスライスの数を示す値がセット(設定)される。このスライス数(SliceNum)を参照することにより、デコーダは、より容易にスライス数を把握することができるので、各スライスの復号の並列化をより容易かつより適切に行うことができる。なお、このスライス数(SliceNum)は、複数のスライスが形成される場合、すなわち、タイプ1の符号化が適用される場合(Type=1または4の場合)にのみシグナルされ、その他の場合は省略されるようにしてもよい。
オフセット(Offset)は、そのフレームに含まれる各スライスの、そのフレームのビットストリームにおけるデータの位置を示す情報である。例えば、オフセット(Offset)には、そのフレームに含まれる各スライスのデータの先頭アドレスを示す値がセット(設定)される。このオフセット(Offset)を参照することにより、デコーダは、より容易に所望のスライスの符号化データ(ビットストリーム)にアクセスすることができる。なお、このオフセット(Offset)は、複数のスライスが形成される場合、すなわち、タイプ1の符号化が適用される場合(Type=1または4の場合)にのみシグナルされ、その他の場合は省略されるようにしてもよい。
また、図19の例の場合、LoDヘッダにおいて、タイプ(Type)やサイズ(Size)等の情報がシグナルされる。タイプ(Type)は、そのLoDに適用された符号化のタイプを示す識別情報である。例えば、上述のようにタイプ0乃至タイプ4が適用可能な場合、「0」乃至「4」のいずれかがセット(設定)される。もちろん、このタイプ(Type)の値は任意である。このタイプ(Type)を参照することにより、デコーダは、そのLoDに適用された符号化のタイプをより容易に識別することができる。したがって、そのLoDのビットストリームに対する適切な復号方法(復号順)をより容易に選択することができる。なお、このタイプ(Type)は、LoDによって符号化のタイプが変化する場合、すなわち、フレームヘッダにおいてType=4の場合にのみシグナルされ、その他の場合は省略されるようにしてもよい。
サイズ(Size)は、LoDの符号化データ(ビットストリーム)のサイズ(符号量)を示す情報である。この情報を参照することにより、デコーダは、ビットストリームから、そのLoDの符号化データをより容易に抽出することができる。
もちろん、上述した情報は、上述した例以外のヘッダ情報においてシグナルするようにしてもよい。また、上述した情報は、ビットストリームの任意の位置に格納することができる。さらに、上述した情報は、Octreeのビットストリームとは異なるデータとして(例えば、Octreeのビットストリームと関連付けて)デコーダ側に伝送される(シグナルされる)ようにしてもよい。
<その他>
なお、以上においては、Octreeのデータの符号化方法としてコンテキストを用いる算術符号化(例えばCABAC(Context-based Adaptive Binary Arithmetic Coding))を例に説明したが、Octreeのデータの符号化方法は、コンテキストを用いる可逆符号化(エントロピ符号化)であればよく、上述の算術符号化に限定されない。例えばNon-binaryの符号化方式であってもよい。また、複数のコンテキストを用いる符号化方式であってもよい。
<2.第1の実施の形態>
<符号化装置>
次に、以上のような符号化を実現する構成について説明する。図20は、本技術を適用した画像処理装置の一態様である符号化装置の構成の一例を示すブロック図である。図20に示される符号化装置300は、ポイントクラウドのような3Dデータをボクセル(Voxel)およびOctreeを用いて符号化する装置である。
なお、図20においては、処理部やデータの流れ等の主なものを示しており、図20に示されるものが全てとは限らない。つまり、符号化装置300において、図20においてブロックとして示されていない処理部が存在したり、図20において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、符号化装置300内の処理部等を説明する他の図においても同様である。
図20に示されるように符号化装置300は、Voxel生成部311、Octree生成部312、および可逆符号化部313を有する。
Voxel生成部311は、ボクセル(Voxel)の生成に関する処理を行う。例えば、Voxel生成部311は、符号化装置300に入力されるポイントクラウド(Point cloud)データを取得する。また、Voxel生成部311は、その取得したポイントクラウドデータを含む領域に対してバウンディングボックスを設定し、さらにそのバウンディングボックスを分割し、ボクセルを設定することにより、そのポイントクラウドデータの位置情報を量子化する。Voxel生成部311は、このようにして生成したボクセル(Voxel)データをOctree生成部312に供給する。
Octree生成部312は、Octreeの生成に関する処理を行う。例えば、Octree生成部312は、Voxel生成部311から供給されるボクセルデータを取得する。また、Octree生成部312は、そのボクセルデータからOctreeを生成する。Octree生成部312は、生成したOctreeデータを可逆符号化部313に供給する。
可逆符号化部313は、Octreeデータの可逆符号化に関する処理を行う。例えば、可逆符号化部313は、Octree生成部312から供給されるOctreeデータを取得する。また、可逆符号化部313は、符号化装置300の外部から入力されるエンコードパラメータを取得する。このエンコードパラメータは、適用する符号化のタイプを指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆符号化部313は、このエンコードパラメータにより指定されるタイプでOctreeデータを符号化し、Octreeの符号化データを生成する。可逆符号化部313は、そのOctreeの符号化データを含むビットストリームを生成し、そのビットストリームを符号化装置300の外部に出力する(復号側に伝送させる)。
なお、これらの処理部(Voxel生成部311、Octree生成部312、および可逆符号化部313)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
以上のように、可逆符号化部313は、複数のタイプの符号化に対応しており、より多様な方法でOctreeを符号化することができる。特に、可逆符号化部313は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応している。したがって、可逆符号化部313(すなわち符号化装置300)は、デコーダがより多様な処理順でOctreeの符号化データを復号することができるように符号化を行うことができる。付言するに、可逆符号化部313(すなわち符号化装置300)がこのようなタイプの符号化を行うことにより、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
<可逆符号化部>
図21は、可逆符号化部313の主な構成例を示すブロック図である。この例の場合、可逆符号化部313は、Octreeの階層毎にコンテキストを初期化して符号化するタイプを含む複数のタイプの符号化を候補として準備しており、その複数の候補の中からエンコードパラメータにより指定されるタイプの符号化を選択し、その選択したタイプによりOctreeを符号化する。
図21に示されるように、可逆符号化部313は、符号化制御部321、タイプ選択部322、タイプ0符号化部323、タイプ1符号化部324、タイプ2符号化部325、タイプ3符号化部326、およびビットストリーム生成部327を有する。
符号化制御部321は、符号化の制御に関する処理を行う。例えば、符号化制御部321は、符号化装置300の外部から供給されるエンコードパラメータを取得する。また、符号化制御部321は、そのエンコードパラメータにより指定されるタイプをタイプ選択部322に通知する。また、符号化制御部321は、タイプ0符号化部323乃至タイプ3符号化部326の内、そのエンコードパラメータにより指定されるタイプに対応する処理部を制御し、そのタイプの符号化を実行させる。また、符号化制御部321は、図19を参照して説明したような情報を含むフレームヘッダやLoDヘッダを生成し、それをビットストリーム生成部327に供給する。
タイプ選択部322は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部322は、Octree生成部312から供給されるOctreeデータを取得する。また、タイプ選択部322は、符号化制御部321により制御され、そのOctreeデータを、タイプ0符号化部323乃至タイプ3符号化部326の内、適用された符号化のタイプに対応する処理部に供給する(Octreeデータの供給先を切り替える)。例えば、タイプ選択部322は、適用する符号化のタイプをOctreeデータのLoD毎に選択する(すなわち、Octreeデータの供給先をLoD毎に切り替える)ことができる。
タイプ0符号化部323は、例えば<1.Octreeの符号化・復号順>の<幅優先順>において図4および図5等を参照して説明したようなタイプ0の符号化に関する処理を行う。例えば、タイプ0符号化部323は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ0符号化部323は、そのOctreeデータに対して、タイプ0の符号化を行い、符号化データを生成する。すなわち、タイプ0符号化部323は、Octreeデータの各ノードのデータを幅優先順で符号化する。タイプ0符号化部323は、タイプ0の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ0符号化部323は、符号化制御部321により制御されて、これらの処理を行う。
タイプ1符号化部324は、例えば<1.Octreeの符号化・復号順>の<タイプ1>において図9および図10等を参照して説明したようなタイプ1の符号化に関する処理を行う。例えば、タイプ1符号化部324は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ1符号化部324は、そのOctreeデータに対して、タイプ1の符号化を行い、符号化データを生成する。すなわち、タイプ1符号化部324は、Octreeの各階層を互いに独立に符号化する。タイプ1符号化部324は、タイプ1の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ1符号化部324は、符号化制御部321により制御されて、これらの処理を行う。
タイプ2符号化部325は、例えば<1.Octreeの符号化・復号順>の<タイプ2>において図11および図12等を参照して説明したようなタイプ2の符号化に関する処理を行う。例えば、タイプ2符号化部325は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ2符号化部325は、そのOctreeデータに対して、タイプ2の符号化を行い、符号化データを生成する。すなわち、タイプ2符号化部325は、Octreeの各LoDの先頭ノードを、その親ノードの確率テーブルを利用して符号化する。タイプ2符号化部325は、タイプ2の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ2符号化部325は、符号化制御部321により制御されて、これらの処理を行う。
タイプ3符号化部326は、例えば<1.Octreeの符号化・復号順>の<タイプ3>において図13および図14等を参照して説明したようなタイプ3の符号化に関する処理を行う。例えば、タイプ3符号化部326は、タイプ選択部322から供給されるOctreeデータを取得する。また、タイプ3符号化部326は、そのOctreeデータに対して、タイプ3の符号化を行い、符号化データを生成する。すなわち、タイプ3符号化部326は、Octreeの各LoDの先頭ノードを、その前フレームの所定のノードの確率テーブルを利用して符号化する。タイプ3符号化部326は、タイプ3の符号化により生成した符号化データをビットストリーム生成部327に供給する。タイプ3符号化部326は、符号化制御部321により制御されて、これらの処理を行う。
ビットストリーム生成部327は、ビットストリームの生成に関する処理を行う。例えば、ビットストリーム生成部327は、タイプ0符号化部323乃至タイプ3符号化部326から供給されるOctreeの符号化データを取得する。また、ビットストリーム生成部327は、符号化制御部321から供給されるヘッダ情報(例えばフレームヘッダやLoDヘッダ等)を取得する。さらに、ビットストリーム生成部327は、そのタイプ0符号化部323乃至タイプ3符号化部326から供給される符号化データと、符号化制御部321から供給されるヘッダ情報とを含むビットストリームを生成する。そして、ビットストリーム生成部327は、その生成したビットストリームを符号化装置300の外部に出力する。
なお、これらの処理部(符号化制御部321乃至ビットストリーム生成部327)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
なお、Octreeの途中で適用する符号化のタイプを切り替えることにより、可逆符号化部313は、タイプ4を適用することができる。この符号化のタイプの切り替えは、符号化制御部321が行う。
以上のように、可逆符号化部313は、タイプ0乃至タイプ4の符号化を行うことができる。したがって可逆符号化部313(符号化装置300)は、<1.Octreeの符号化・復号順>において上述したような、各タイプの効果を得ることができる。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
なお、以上においては、可逆符号化部313が、タイプ0符号化部323乃至タイプ3符号化部326を備えるように説明した。すなわち、符号化装置300が、タイプ0乃至タイプ3の4つのタイプの符号化を行うことができる(タイプ4については説明を省略する)ように説明した。しかしながら、符号化装置300は、任意のタイプの符号化を行うことができるようにしてもよい。例えば、符号化装置300が、上述した例以外のタイプの符号化を行うことができるようにしてもよい。
また、符号化装置300が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、符号化装置300が、3以下のタイプの符号化を行うことができるようにしてもよいし、5以上のタイプの符号化を行うことができるようにしてもよい。
いずれの場合も、可逆符号化部313が、タイプ0符号化部323乃至タイプ3符号化部326のように、符号化装置300が実行可能なタイプの符号化部を並列に備えるようにすればよい。つまり、図21の例においては、可逆符号化部313は、タイプ0符号化部323乃至タイプ3符号化部326の4つの符号化部を有しているが、この例に限定されず、3つ以下の符号化部を備えるようにすることもできるし、5つ以上の符号化部を備えるようにすることもできる。
<符号化処理の流れ>
次に、符号化装置300により実行される符号化処理の流れの例を、図22および図23のフローチャートを参照して説明する。
符号化処理が開始されると、符号化装置300のVoxel生成部311は、ステップS301において、符号化装置300に入力されたポイントクラウド(Point cloud)データからボクセル(Voxel)データを生成する。
ステップS302において、Octree生成部312は、ステップS301において生成されたボクセルデータからOctreeを構築し、そのOctreeを幅優先順に探索してOctreeデータを生成する。
ステップS303において、可逆符号化部313の符号化制御部321は、符号化装置300の外部から入力されるエンコードパラメータを受け付ける。
ステップS304において、可逆符号化部313は、ステップS302において構築されたOctreeから処理対象LoDを1つ選択する。可逆符号化部313の符号化制御部321は、最上位層から最下位層に向かう順に1階層ずつ処理対象LoDを選択する。つまり、可逆符号化部313のタイプ選択部322は、その符号化制御部321の制御に従って、Octree生成部312からOctreeデータを、先頭から1LoD分ずつ読み込み、それを処理対象とする。
ステップS305において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ0で符号化するか否かを判定する。タイプ0で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ0符号化部323に供給する。そして処理はステップS306に進む。
ステップS306において、可逆符号化部313は、タイプ0符号化処理を実行し、処理対象LoDのデータをタイプ0で符号化する。このタイプ0符号化処理の詳細については後述する。
タイプ0符号化処理が終了すると、処理は、図23のステップS324に進む。また、図22のステップS305において、タイプ0で符号化を行わないと判定された場合、処理はステップS307に進む。
ステップS307において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ1で符号化するか否かを判定する。タイプ1で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ1符号化部324に供給する。そして処理はステップS308に進む。
ステップS308において、可逆符号化部313は、タイプ1符号化処理を実行し、処理対象LoDのデータをタイプ1で符号化する。このタイプ1符号化処理の詳細については後述する。
タイプ1符号化処理が終了すると、処理は、図23のステップS324に進む。また、図22のステップS307において、タイプ1で符号化を行わないと判定された場合、処理は図23のステップS321に進む。
図23のステップS321において、可逆符号化部313の符号化制御部321は、ステップS303において取得したエンコードパラメータに基づいて、処理対象LoDのデータを、タイプ2で符号化するか否かを判定する。タイプ2で符号化を行うと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ2符号化部325に供給する。そして処理はステップS322に進む。
ステップS322において、可逆符号化部313は、タイプ2符号化処理を実行し、処理対象LoDのデータをタイプ2で符号化する。このタイプ2符号化処理の詳細については後述する。
タイプ2符号化処理が終了すると、処理は、ステップS324に進む。また、ステップS321において、タイプ2で符号化を行わないと判定された場合、タイプ選択部322は、処理対象LoDのデータをタイプ3符号化部326に供給する。そして処理はステップS323に進む。
ステップS323において、可逆符号化部313は、タイプ3符号化処理を実行し、処理対象LoDのデータをタイプ3で符号化する。このタイプ3符号化処理の詳細については後述する。タイプ3符号化処理が終了すると、処理は、ステップS324に進む。
ステップS324において、可逆符号化部313の符号化制御部321は、全てのLoDを処理したか否かを判定する。未処理のLoDが存在すると判定された場合、処理は図22のステップS304に戻り、それ以降の処理が繰り返される。すなわち、ステップS304において新たなLoD(未処理のLoD)が処理対象として選択され、その処理対象LoDに対して、ステップS305乃至ステップS323の各処理が適宜実行される。
以上のように、各LoDに対してステップS304乃至ステップS324の処理が適宜実行され、ステップS324において全てのLoDを処理したと判定された場合、処理はステップS325に進む。
ステップS325において、可逆符号化部313の符号化制御部321は、フレームヘッダを生成する。
ステップS326において、可逆符号化部313(タイプ0符号化部323乃至タイプ3符号化部326のいずれか)は、上述したOctreeデータに対応する属性情報を生成し、符号化する。
ステップS327において、ビットストリーム生成部327は、Octreeデータの符号化データとヘッダ情報とを含むビットストリームを生成し、符号化装置300の外部に出力する(復号側に伝送する)。
ステップS327の処理が終了すると、符号化処理が終了する。符号化装置300は、各フレームに対してこのような符号化処理を実行し、各フレームのOctreeデータのビットストリームを生成する。
<タイプ0符号化処理の流れ>
次に、図22のステップS306において実行されるタイプ0符号化処理の流れの例を、図24のフローチャートを参照して説明する。
タイプ0符号化処理が開始されると、符号化制御部321は、ステップS341において、処理対象LoDが最上位LoD(最上位層のLoD)であるか否かを判定する。最上位LoDであると判定された場合、処理はステップS342に進む。
ステップS342において、タイプ0符号化部323は、算術符号化(のコンテキスト)をリセットする。
ステップS343において、タイプ0符号化部323は、処理対象LoDの先頭ノードを符号化する。
ステップS343の処理が終了すると処理はステップS345に進む。また、ステップS341において、最上位LoDでないと判定された場合、処理はステップS344に進む。
ステップS344において、タイプ0符号化部323は、1つ上位のLoD最後のノードの処理後のコンテキストを用いて、処理対象LoDの先頭ノードの算術符号化を行う。ステップS344の処理が終了すると、処理はステップS345に進む。
ステップS345において、タイプ0符号化部323は、次のノードを処理対象として選択する。
ステップS346において、タイプ0符号化部323は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
ステップS347において、タイプ0符号化部323は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップS345に戻る。
処理対象LoDの各ノードについて、ステップS345乃至ステップS347の各処理が実行され、ステップS347において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップS348に進む。
ステップS348において、符号化制御部321は、その処理対象LoDのLoDヘッダを生成する。符号化制御部321は、生成したLoDヘッダをビットストリーム生成部327に供給する。
ステップS348の処理が終了すると、タイプ0符号化処理が終了し、処理は図22に戻る。
以上のようにタイプ0符号化処理を実行することにより、可逆符号化部313(の符号化制御部321およびタイプ0符号化部323)は、処理対象LoDをタイプ0で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ0の符号化に関する効果を得ることができる。
<タイプ1符号化処理の流れ>
次に、図22のステップS308において実行されるタイプ1符号化処理の流れの例を、図25のフローチャートを参照して説明する。
タイプ1符号化処理が開始されると、タイプ1符号化部324は、ステップS361において、算術符号化(のコンテキスト)をリセットする。
ステップS362において、タイプ1符号化部324は、処理対象LoDの先頭ノードを符号化する。
ステップS363において、タイプ1符号化部324は、次のノードを処理対象として選択する。
ステップS364において、タイプ1符号化部324は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
ステップS365において、タイプ1符号化部324は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象のノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップS363に戻る。
処理対象LoDの各ノードについて、ステップS363乃至ステップS365の各処理が実行され、ステップS365において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップS366に進む。
ステップS366において、符号化制御部321は、その処理対象LoDのLoDヘッダを生成する。符号化制御部321は、生成したLoDヘッダをビットストリーム生成部327に供給する。
ステップS366の処理が終了すると、タイプ1符号化処理が終了し、処理は図22に戻る。
以上のようにタイプ1符号化処理を実行することにより、可逆符号化部313(の符号化制御部321およびタイプ1符号化部324)は、処理対象LoDをタイプ1で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ1の符号化に関する効果を得ることができる。
<タイプ2符号化処理の流れ>
次に、図23のステップS322において実行されるタイプ2符号化処理の流れの例を、図26のフローチャートを参照して説明する。
タイプ2符号化処理が開始されると、符号化制御部321は、ステップS381において、処理対象LoDが最上位LoDであるか否かを判定する。最上位LoDであると判定された場合、処理はステップS382に進む。
ステップS382において、タイプ2符号化部325は、算術符号化(のコンテキスト)をリセットする。
ステップS383において、タイプ2符号化部325は、処理対象LoDの先頭ノードを符号化する。
ステップS383の処理が終了すると処理はステップS387に進む。また、ステップS381において、最上位LoDでないと判定された場合、処理はステップS384に進む。
ステップS384において、タイプ2符号化部325は、処理対象ノードである処理対象LoDの先頭ノードの親ノードから確率テーブルを引き継ぐ(コピーする)。
ステップS385において、タイプ2符号化部325は、算術符号化(のコンテキスト)をリセットする。
ステップS386において、タイプ2符号化部325は、ステップS384において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。ステップS386の処理が終了すると、処理はステップS387に進む。
ステップS387において、タイプ2符号化部325は、先頭ノード処理後の確率テーブルを保存する。この確率テーブルは、1つ下位のLoDの先頭ノードの処理に利用される。
ステップS388において、タイプ2符号化部325は、次のノードを処理対象として選択する。
ステップS389において、タイプ2符号化部325は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
ステップS390において、タイプ2符号化部325は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップS388に戻る。
処理対象LoDの各ノードについて、ステップS388乃至ステップS390の各処理が実行され、ステップS390において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップS391に進む。
ステップS391において、符号化制御部321は、その処理対象LoDのLoDヘッダを生成する。符号化制御部321は、生成したLoDヘッダをビットストリーム生成部327に供給する。
ステップS391の処理が終了すると、タイプ2符号化処理が終了し、処理は図23に戻る。
以上のようにタイプ2符号化処理を実行することにより、可逆符号化部313(の符号化制御部321およびタイプ2符号化部325)は、処理対象LoDをタイプ2で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ2の符号化に関する効果を得ることができる。
<タイプ3符号化処理の流れ>
次に、図23のステップS323において実行されるタイプ3符号化処理の流れの例を、図27のフローチャートを参照して説明する。
タイプ3符号化処理が開始されると、タイプ3符号化部326は、ステップS411において、処理対象フレームの1つ前に処理されたフレーム(前フレームとも称する)の所定のノードから確率テーブルを引き継ぐ(コピーする)。
ステップS412において、タイプ3符号化部326は、算術符号化(のコンテキスト)をリセットする。
ステップS413において、タイプ3符号化部326は、ステップS411において引き継いだ確率テーブルを用いて処理対象LoDの先頭ノードを符号化する。
ステップS414において、タイプ3符号化部326は、次のノードを処理対象として選択する。
ステップS415において、タイプ3符号化部326は、1つ前のノードの処理後のコンテキストを用いて、処理対象のノードの算術符号化を行う。
ステップS416において、タイプ3符号化部326は、処理対象のノードが処理対象LoDの最後のノードであるか否かを判定する。処理対象ノードが処理対象LoDの最後のノードでない、すなわち、処理対象LoDに未処理のノードが存在すると判定された場合、処理はステップS414に戻る。
処理対象LoDの各ノードについて、ステップS414乃至ステップS416の各処理が実行され、ステップS416において、処理対象のノードが処理対象LoDの最後のノードである、すなわち処理対象LoDの全てのノードが処理されたと判定された場合、処理はステップS417に進む。
ステップS417において、タイプ3符号化部326は、処理対象LoDの「所定のノード」の符号化後の確率テーブルを保存する。この「所定のノード」は、次のフレームの符号化において確率テーブルが参照される、予め定められたノードである。例えば、<1.レンダリング用カメラパラメータのシグナル>において説明したように、各LoDの最後のノードや、そのフレームの最後のノード等がその「所定のノード」として設定される。なお、処理対象LoDにこのような「所定のノード」が存在しない場合、ステップS417の処理は省略される。このように保存された確率テーブルは、次のフレームの処理において引き継がれる(コピーされる)。
ステップS418において、符号化制御部321は、その処理対象LoDのLoDヘッダを生成する。符号化制御部321は、生成したLoDヘッダをビットストリーム生成部327に供給する。
ステップS418の処理が終了すると、タイプ3符号化処理が終了し、処理は図23に戻る。
以上のようにタイプ3符号化処理を実行することにより、可逆符号化部313(の符号化制御部321およびタイプ3符号化部326)は、処理対象LoDをタイプ3で符号化することができる。したがって、<1.レンダリング用カメラパラメータのシグナル>において説明したタイプ3の符号化に関する効果を得ることができる。
以上のように各処理を実行することにより、可逆符号化部313は、タイプ0乃至タイプ4の符号化を行うことができる。したがって可逆符号化部313(符号化装置300)は、<1.Octreeの符号化・復号順>において上述したような、各タイプの効果を得ることができる。つまり、符号化装置300は、ポイントクラウドデータに対応するOctreeを、そのOctreeの階層毎にコンテキストを初期化して符号化する。したがって、デコーダは、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
<3.第2の実施の形態>
<復号装置>
図28は、本技術を適用した画像処理装置の一態様である復号装置の構成の一例を示すブロック図である。図28に示される復号装置500は、図20の符号化装置300に対応する復号装置であり、例えばこの符号化装置300により生成されたポイントクラウドの符号化データ(ビットストリーム)を復号し、ポイントクラウドのデータを復元する装置である。
なお、図28においては、処理部やデータの流れ等の主なものを示しており、図28に示されるものが全てとは限らない。つまり、復号装置500において、図20においてブロックとして示されていない処理部が存在したり、図20において矢印等として示されていない処理やデータの流れが存在したりしてもよい。これは、復号装置500内の処理部等を説明する他の図においても同様である。
図28に示されるように復号装置500は、可逆復号部511、Octree復号部512、およびVoxel復号部513を有する。
可逆復号部511は、Octreeデータの符号化データの可逆復号に関する処理を行う。例えば、可逆復号部511は、復号装置500に入力されるポイントクラウド(Point cloud)データ(に対応するOctreeデータ)のビットストリームを取得する。また、可逆復号部511は、復号装置500の外部から入力されるデコードパラメータを取得する。このデコードパラメータは、復号順を指定する情報であり、例えばユーザ操作により入力されたり、外部の装置等から供給されたりする。可逆復号部511は、このデコードパラメータにより指定されるタイプでビットストリームを復号し、Octreeデータを生成する。可逆復号部511は、そのOctreeデータをOctree復号部512に供給する。
Octree復号部512は、Octreeの復号に関する処理を行う。例えば、Octree復号部512は、可逆復号部511から供給されるOctreeデータを取得する。また、Octree復号部512は、そのOctreeデータからOctreeを構築し、そのOctreeからボクセル(Voxel)データを生成する。Octree復号部512は、生成したボクセルデータをVoxel復号部513に供給する。
Voxel復号部513は、ボクセル(Voxel)データの復号に関する処理を行う。例えば、Voxel復号部513は、Octree復号部512から供給されるボクセルデータを取得する。また、Voxel復号部513は、その取得したボクセルデータからポイントクラウド(Point cloud)を復元する。Voxel復号部513は、このようにして生成したポイントクラウドデータを復号装置500の外部に出力する。
なお、これらの処理部(可逆復号部511、Octree復号部512、およびVoxel復号部513)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU、ROM、RAM等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
以上のように、可逆復号部511は、複数の復号順(幅優先順および深さ優先順)に対応しており、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順によりその符号化データを復号する。したがって、復号装置500は、より多様な処理順でOctreeの符号化データを復号することができる。これにより、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
<可逆復号部>
図29は、可逆復号部511の主な構成例を示すブロック図である。この例の場合、可逆復号部511は、Octreeの階層毎にコンテキストを初期化して符号化するタイプに対応するタイプにより、Octreeの符号化データを復号することができる。つまり、可逆復号部511は、階層毎にコンテキストを初期化して符号化されたOctreeの符号化データを正しく復号することができる。また、可逆復号部511は、そのOctreeの符号化データを、幅優先順および深さ優先順のいずれでも復号することができる。
図29に示されるように、可逆復号部511は、復号制御部521、ヘッダ解析部522、タイプ選択部523、タイプ0復号部524、タイプ1復号部525、タイプ2復号部526、およびタイプ3復号部527を有する。
復号制御部521は、復号の制御に関する処理を行う。例えば、復号制御部521は、復号装置500の外部から供給されるデコードパラメータを取得する。また、復号制御部521は、ヘッダ解析部522により解析されたヘッダ情報(フレームヘッダやLoDヘッダ等にシグナルされる各種情報)を取得する。さらに、復号制御部521は、そのヘッダ情報に基づいてタイプ選択部523乃至タイプ3復号部527の各処理部を制御し、Octreeの各ノードの符号化データを、デコードパラメータにより指定される復号順(幅優先順または深さ優先順)で復号させる。
ヘッダ解析部522は、ヘッダの解析に関する処理を行う。例えば、ヘッダ解析部522は、復号装置500に入力されるビットストリームを取得し、それをタイプ選択部523に供給する。また、ヘッダ解析部522は、取得したビットストリームに含まれるヘッダを解析し、ヘッダ情報(特に、図19を参照して説明したような、タイプに関する情報)を復号制御部521に供給する。
タイプ選択部523は、符号化のタイプの選択に関する処理を行う。例えば、タイプ選択部523は、ヘッダ解析部522から供給されるビットストリームを取得する。また、タイプ選択部523は、復号制御部521により制御され、ビットストリームを、タイプ0復号部524乃至タイプ3復号部527の内、適用された符号化のタイプに対応する処理部に供給する(ビットストリームの供給先を切り替える)。例えば、タイプ選択部523は、適用する符号化のタイプ(復号のタイプ)をノード毎に選択する(すなわち、ビットストリームの供給先をノード毎に切り替える)ことができる。
タイプ0復号部524は、例えば<1.Octreeの符号化・復号順>の<幅優先順>において図4および図5等を参照して説明したような「タイプ0の符号化」に対応するタイプ0の復号に関する処理を行う。例えば、タイプ0復号部524は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ0復号部524は、そのビットストリームに対して、タイプ0の復号を行い、Octreeデータを生成する。すなわち、タイプ0復号部524は、処理対象ノードのビットストリームを、その直前に処理されたノードの処理結果をコンテキストとして用いて算術復号する。タイプ0復号部524は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ0復号部524は、復号制御部521により制御されて、これらの処理を行う。
タイプ1復号部525は、例えば<1.Octreeの符号化・復号順>の<タイプ1>において図9および図10等を参照して説明したような「タイプ1の符号化」に対応するタイプ1の復号に関する処理を行う。例えば、タイプ1復号部525は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ1復号部525は、そのビットストリームに対して、タイプ1の復号を行い、Octreeデータを生成する。すなわち、タイプ1復号部525は、処理対象ノードのビットストリームを、他の階層(LoD)のノードとは独立に算術復号する。タイプ1復号部525は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ1復号部525は、復号制御部521により制御されて、これらの処理を行う。
タイプ2復号部526は、例えば<1.Octreeの符号化・復号順>の<タイプ2>において図11および図12等を参照して説明したような「タイプ2の符号化」に対応するタイプ2の復号に関する処理を行う。例えば、タイプ2復号部526は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ2復号部526は、そのビットストリームに対して、タイプ2の復号を行い、Octreeデータを生成する。すなわち、タイプ2復号部526は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、その親ノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層(LoD)のノードとは独立に算術復号する。タイプ2復号部526は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ2復号部526は、復号制御部521により制御されて、これらの処理を行う。
タイプ3復号部527は、例えば<1.Octreeの符号化・復号順>の<タイプ3>において図13および図14等を参照して説明したような「タイプ3の符号化」に対応するタイプ3の復号に関する処理を行う。例えば、タイプ3復号部527は、タイプ選択部523から供給されるビットストリームを取得する。また、タイプ3復号部527は、そのビットストリームに対して、タイプ3の復号を行い、Octreeデータを生成する。すなわち、タイプ3復号部527は、処理対象ノードのビットストリームを、その処理対象ノードが処理対象LoDの先頭ノードである場合、前フレームの所定のノードの確率テーブルを利用して復号し、それ以外のノードである場合、他の階層(LoD)のノードとは独立に算術復号する。タイプ3復号部527は、このような復号により得られたOctreeデータを、Octree復号部512に供給する。タイプ3復号部527は、復号制御部521により制御されて、これらの処理を行う。
なお、これらの処理部(復号制御部521乃至タイプ3復号部527)は、任意の構成を有する。例えば、各処理部が、上述の処理を実現する論理回路により構成されるようにしてもよい。また、各処理部が、例えばCPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等を有し、それらを用いてプログラムを実行することにより、上述の処理を実現するようにしてもよい。もちろん、各処理部が、その両方の構成を有し、上述の処理の一部を論理回路により実現し、他を、プログラムを実行することにより実現するようにしてもよい。各処理部の構成は互いに独立していてもよく、例えば、一部の処理部が上述の処理の一部を論理回路により実現し、他の一部の処理部がプログラムを実行することにより上述の処理を実現し、さらに他の処理部が論理回路とプログラムの実行の両方により上述の処理を実現するようにしてもよい。
以上のような構成の復号装置500において、可逆復号部511は、ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、その選択した復号順により符号化データを復号する。例えば、復号制御部521が、復号順として幅優先順または深さ優先順を選択し、その復号順に従って処理対象ノードを選択する。したがって、復号装置500は、より多様な処理順でOctreeの符号化データ(ビットストリーム)を復号することができる。したがって、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
上述したように、図29の例の場合、復号制御部521は、外部から供給されるデコードパラメータに基づいて復号順を選択する。つまり、可逆復号部511(復号制御部521)が、外部指示に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置500の外部から復号順を指定することができる。つまり、例えば、ユーザ等が復号順を指定することができる。
なお、この例に限らず、復号制御部521が状況に応じて復号順を指定するようにしてもよい。例えば、復号制御部521が、符号化データの復号処理の負荷に基づいて復号順を選択するようにしてもよい。このようにすることにより、復号装置500は、ユーザ等の外部からの指示なしに復号順を選択することができる。
その際、復号順の選択の基準とする復号処理の負荷に関するパラメータは任意である。例えば、復号制御部521が、復号処理の速度に基づいて復号順を選択するようにしてもよい。また、例えば、復号制御部521が、復号処理により使用されるメモリの容量に基づいて復号順を選択するようにしてもよい。
ところで、復号対象の符号化データ(ビットストリーム)において、Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、各ノードのデータの依存関係により、復号順として深さ優先順を選択することができない。そこで、そのような場合、復号制御部521が、復号順として幅優先順を選択するようにしてもよい。
より具体的には、Octreeの各階層を互いに独立に符号化する方法、Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、または、これらの方法の内の複数を組み合わせた方法により符号化されていない場合、復号制御部521が、復号順として幅優先順を選択するようにしてもよい。
このようにすることにより、処理失敗の発生を抑制することができる。したがって、不要な処理を行うことによる負荷の増大を抑制することができる。換言するに、復号処理をより高速に行うことができる。
なお、このようなOctreeの階層毎にコンテキストが初期化されて符号化されているかの判定は、符号化データにおけるOctreeの符号化の方法を示す情報に基づいて行われるようにしてもよい。例えば、復号制御部521が、図19を参照して説明したフレームヘッダやLoDヘッダに含まれるタイプ(Type)に基づいて、Octreeの階層毎にコンテキストが初期化されて符号化されているか否かを判定するようにしてもよい。このようにすることにより、復号装置500は、Octreeの階層毎にコンテキストが初期化されて符号化されているかの判定を、より容易に行うことができる。
なお、復号制御部521は、ヘッダ解析部522により解析されたヘッダ情報(例えば、スライス数、オフセット、サイズ等)に基づいて、タイプ選択部523を制御し、ビットストリームから、処理対象ノードの対応する部分を抽出させる。さらに、復号制御部521は、ヘッダ情報(例えばタイプ等)に基づいて、処理対象ノードの符号化のタイプを特定する。復号制御部521は、タイプ選択部523を制御し、抽出した処理対象ノードのビットストリームを、タイプ0復号部524乃至タイプ3復号部527の内の、特定した符号化のタイプに対応する復号部に供給させる。また、復号制御部521は、ビットストリームを供給した復号部(タイプ0復号部524乃至タイプ3復号部527のいずれか)を制御し、そのビットストリームを復号させる。
つまり、復号装置500は、各ノードのビットストリームを、その符号化タイプに応じた適切なタイプにより、復号することができる。したがって、復号装置500は、Octreeデータのビットストリームをより正確に復号することができる。
なお、符号化のタイプが4の場合も、各ノードのデータは、タイプ0乃至タイプ3のいずれかのタイプにより符号化されている。また、復号においては、上述のように少なくともノード単位で復号のタイプを制御することができる。したがって、復号装置500は、符号化のタイプがタイプ4の場合も、符号化のタイプがタイプ0乃至タイプ3の場合と同様に処理することができる。
なお、以上においては、可逆復号部511が、タイプ0復号部524乃至タイプ3復号部527を備えるように説明した。すなわち、復号装置500が、タイプ0乃至タイプ3の4つのタイプの復号を行うことができる(タイプ4については説明を省略する)ように説明した。しかしながら、復号装置500は、任意のタイプの復号を行うことができるようにしてもよい。例えば、復号装置500が、上述した例以外のタイプの復号を行うことができるようにしてもよい。
また、復号装置500が対応するタイプの数は任意であり、上述の例に限定されない。すなわち、例えば、復号装置500が、3以下のタイプの復号を行うことができるようにしてもよいし、5以上のタイプの復号を行うことができるようにしてもよい。
いずれの場合も、可逆復号部511が、タイプ0復号部524乃至タイプ3復号部527のように、復号装置500が実行可能なタイプの復号部を並列に備えるようにすればよい。つまり、図29の例においては、可逆復号部511は、タイプ0復号部524乃至タイプ3復号部527の4つの復号部を有しているが、この例に限定されず、3つ以下の復号部を備えるようにすることもできるし、5つ以上の復号部を備えるようにすることもできる。
<復号処理の流れ>
次に、復号装置500により実行される復号処理の流れの例を、図30および図31のフローチャートを参照して説明する。
復号処理が開始されると、復号装置500の可逆復号部511のヘッダ解析部522は、ステップS501において、復号装置500に入力されたビットストリームに含まれるヘッダ(例えばフレームヘッダやLoDヘッダ等)を解析する。
ステップS502において、可逆復号部511の復号制御部521は、デコードパラメータを受け付ける。
ステップS503において、復号制御部521は、ステップS502において取得したデコードパラメータに基づいて、深さ優先順で復号するか否かを判定する。復号順を深さ優先順とすると判定された場合、処理はステップS504に進む。
ステップS504において、復号制御部521は、ステップS501において解析したヘッダに基づいて、ビットストリームが、タイプ1乃至タイプ3で符号化されているか否かを判定する。タイプ1乃至タイプ3で符号化されていると判定された場合、処理はステップS505に進む。
ステップS505において、復号制御部521は、深さ優先順で次のノードを選択する。
ステップS506において、復号制御部521は、タイプ選択部523乃至タイプ3復号部527を制御し、符号化のタイプやノード位置に応じた方法で処理対象ノードを復号する。
ステップS507において、Octree復号部512は、ステップS506の処理により、生成されたOctreeデータから深さ優先順でOctreeを構築する。ステップS507の処理が終了すると、処理は図31のステップS521に進む。
また、図30のステップS503において、幅優先順で復号すると判定された場合、処理はステップS508に進む。また、ステップS504において、ビットストリームがタイプ1乃至タイプ3で符号化されていない(例えばタイプ0により符号化されている)と判定された場合、処理はステップS508に進む。
ステップS508において、復号制御部521は、幅優先順で次のノードを選択する。
ステップS509において、復号制御部521は、タイプ選択部523乃至タイプ3復号部527を制御し、符号化のタイプやノード位置に応じた方法で処理対象ノードを復号する。
ステップS510において、Octree復号部512は、ステップS508の処理により、生成されたOctreeデータから幅優先順でOctreeを構築する。ステップS507の処理が終了すると、処理は図31のステップS521に進む。
図31のステップS521において、復号制御部521は、処理対象ノードがリーフノード(そのノードに属する他のノード(子ノードとも称する)が存在しない末端のノード)であるか否かを判定する。子ノードが存在し、リーフノードでないと判定された場合、処理は図30のステップS503に戻り、それ以降の処理が繰り返される。
また、図31のステップS521において、子ノードが存在せず、処理対象ノードがリーフノードであると判定された場合、処理はステップS522に進む。
ステップS522において、Octree復号部512は、そのリーフノードに対応するボクセルデータを生成する。
ステップS523において、復号制御部521は、全てのリーフノードを処理したか否かを判定する。未処理のリーフノードが存在すると判定された場合、処理は図30のステップS503に戻り、それ以降の処理が繰り返される。
また、図31のステップS523において、全てのリーフノードを処理したと判定された場合、処理はステップS524に進む。
ステップS524において、Voxel復号部513は、ステップS522において生成されたボクセルデータからポイントクラウドデータを生成する。
ステップS525において、可逆復号部511乃至Voxel復号部513は、属性情報を処理し、上述の位置情報に結合する。以上のようにしてポイントクラウドデータが復元されると、Voxel復号部513は、生成したポイントクラウドデータを復号装置500のお外部に出力する。
ステップS525の処理が終了すると、復号処理が終了する。
以上のように各処理を実行することにより、復号装置500は、より多様な処理順でOctreeの符号化データ(ビットストリーム)を復号することができる。したがって、復号装置500は、より適切な処理順を選択し、そのより適切な処理順でOctreeの符号化データを復号することができる。
<4.付記>
<コンピュータ>
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここでコンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等が含まれる。
図32は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
図32に示されるコンピュータ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を駆動する。
以上のように構成されるコンピュータでは、CPU901が、例えば、記憶部913に記憶されているプログラムを、入出力インタフェース910およびバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。RAM903にはまた、CPU901が各種の処理を実行する上において必要なデータなども適宜記憶される。
コンピュータ(CPU901)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア921に記録して適用することができる。その場合、プログラムは、リムーバブルメディア921をドライブ915に装着することにより、入出力インタフェース910を介して、記憶部913にインストールすることができる。
また、このプログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することもできる。その場合、プログラムは、通信部914で受信し、記憶部913にインストールすることができる。
その他、このプログラムは、ROM902や記憶部913に、あらかじめインストールしておくこともできる。
<本技術の適用対象>
以上においては、ポイントクラウドデータの符号化・復号に本技術を適用する場合について説明したが、本技術は、これらの例に限らず、任意の規格の3Dデータの符号化・復号に対して適用することができる。つまり、上述した本技術と矛盾しない限り、符号化・復号方式等の各種処理、並びに、3Dデータやメタデータ等の各種データの仕様は任意である。また、本技術と矛盾しない限り、上述した一部の処理や仕様を省略してもよい。
本技術は、任意の構成に適用することができる。例えば、本技術は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、およびセルラー通信による端末への配信などにおける送信機や受信機(例えばテレビジョン受像機や携帯電話機)、または、光ディスク、磁気ディスクおよびフラッシュメモリなどの媒体に画像を記録したり、これら記憶媒体から画像を再生したりする装置(例えばハードディスクレコーダやカメラ)などの、様々な電子機器に適用され得る。
また、例えば、本技術は、システムLSI(Large Scale Integration)等としてのプロセッサ(例えばビデオプロセッサ)、複数のプロセッサ等を用いるモジュール(例えばビデオモジュール)、複数のモジュール等を用いるユニット(例えばビデオユニット)、または、ユニットにさらにその他の機能を付加したセット(例えばビデオセット)等、装置の一部の構成として実施することもできる。
また、例えば、本技術は、複数の装置により構成されるネットワークシステムにも適用することもできる。例えば、本技術を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングとして実施するようにしてもよい。例えば、コンピュータ、AV(Audio Visual)機器、携帯型情報処理端末、IoT(Internet of Things)デバイス等の任意の端末に対して、画像(動画像)に関するサービスを提供するクラウドサービスにおいて本技術を実施するようにしてもよい。
なお、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、全ての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、および、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
<本技術を適用可能な分野・用途>
本技術を適用したシステム、装置、処理部等は、例えば、交通、医療、防犯、農業、畜産業、鉱業、美容、工場、家電、気象、自然監視等、任意の分野に利用することができる。また、その用途も任意である。
<その他>
なお、本明細書において「フラグ」とは、複数の状態を識別するための情報であり、真(1)または偽(0)の2状態を識別する際に用いる情報だけでなく、3以上の状態を識別することが可能な情報も含まれる。したがって、この「フラグ」が取り得る値は、例えば1/0の2値であってもよいし、3値以上であってもよい。すなわち、この「フラグ」を構成するbit数は任意であり、1bitでも複数bitでもよい。また、識別情報(フラグも含む)は、その識別情報をビットストリームに含める形だけでなく、ある基準となる情報に対する識別情報の差分情報をビットストリームに含める形も想定されるため、本明細書においては、「フラグ」や「識別情報」は、その情報だけではなく、基準となる情報に対する差分情報も包含する。
また、符号化データ(ビットストリーム)に関する各種情報(メタデータ等)は、符号化データに関連づけられていれば、どのような形態で伝送または記録されるようにしてもよい。ここで、「関連付ける」という用語は、例えば、一方のデータを処理する際に他方のデータを利用し得る(リンクさせ得る)ようにすることを意味する。つまり、互いに関連付けられたデータは、1つのデータとしてまとめられてもよいし、それぞれ個別のデータとしてもよい。例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の伝送路上で伝送されるようにしてもよい。また、例えば、符号化データ(画像)に関連付けられた情報は、その符号化データ(画像)とは別の記録媒体(または同一の記録媒体の別の記録エリア)に記録されるようにしてもよい。なお、この「関連付け」は、データ全体でなく、データの一部であってもよい。例えば、画像とその画像に対応する情報とが、複数フレーム、1フレーム、またはフレーム内の一部分などの任意の単位で互いに関連付けられるようにしてもよい。
なお、本明細書において、「合成する」、「多重化する」、「付加する」、「一体化する」、「含める」、「格納する」、「入れ込む」、「差し込む」、「挿入する」等の用語は、例えば符号化データとメタデータとを1つのデータにまとめるといった、複数の物を1つにまとめることを意味し、上述の「関連付ける」の1つの方法を意味する。
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、上述したプログラムは、任意の装置において実行されるようにしてもよい。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、1つのフローチャートの各ステップを、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。さらに、1つのステップに複数の処理が含まれる場合、その複数の処理を、1つの装置が実行するようにしてもよいし、複数の装置が分担して実行するようにしてもよい。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
また、例えば、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
また、例えば、本技術に関する複数の技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
なお、本技術は以下のような構成も取ることができる。
(1) ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
を備える画像処理装置。
(2) 前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
(1)に記載の画像処理装置。
(3) 前記符号化部は、前記Octreeの各階層の先頭ノードを、1階層上の先頭ノードの確率テーブルを用いて符号化する
(1)または(2)に記載の画像処理装置。
(4) 前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
(1)乃至(3)のいずれかに記載の画像処理装置。
(5) 前記所定のノードは、処理対象ノードと同一階層の最後のノードである
(4)に記載の画像処理装置。
(6) 前記所定のノードは、前記前フレームの最後のノードである
(4)に記載の画像処理装置。
(7) 前記符号化部は、
処理対象階層を他の階層と独立に符号化する方法、
処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内のいずれか複数を用いて前記Octreeを符号化する
(1)乃至(6)のいずれかに記載の画像処理装置。
(8) 前記符号化部は、
前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
前記Octreeの他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
(1)乃至(7)のいずれかに記載の画像処理装置。
(9) 前記符号化部は、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
(1)乃至(8)のいずれかに記載の画像処理装置。
(10) 前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
(9)に記載の画像処理装置。
(11) ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
画像処理方法。
(12) ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
を備える画像処理装置。
(13) 前記復号部は、外部指示に基づいて前記復号順を選択する
(12)に記載の画像処理装置。
(14) 前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
(12)または(13)に記載の画像処理装置。
(15) 前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
(14)に記載の画像処理装置。
(16) 前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
(14)または(15)に記載の画像処理装置。
(17) 前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
(12)乃至(16)のいずれかに記載の画像処理装置。
(18) 前記復号部は、前記符号化データにおいて前記Octreeが、
前記Octreeの各階層を互いに独立に符号化する方法、
前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
または、これらの方法の内の複数を組み合わせた方法、
により符号化されていない場合、前記復号順として前記幅優先順を選択する
(17)に記載の画像処理装置。
(19) 前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
(17)または(18)に記載の画像処理装置。
(20) ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
画像処理方法。
300 符号化装置, 311 Voxel生成部, 312 Octree生成部, 321 符号化制御部, 322 タイプ選択部, 323 タイプ0符号化部, 324 タイプ1符号化部, 325 タイプ2符号化部, 326 タイプ3符号化部, 327 ビットストリーム生成部, 500 復号装置, 511 可逆復号部, 512 Octree復号部, 513 Voxel復号部, 521 復号制御部, 522 ヘッダ解析部, 523 タイプ選択部, 524 タイプ0復号部, 525 タイプ1復号部, 526 タイプ2復号部, 527 タイプ3復号部

Claims (20)

  1. ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する符号化部
    を備える画像処理装置。
  2. 前記符号化部は、前記Octreeの各階層を、互いに独立に符号化する
    請求項1に記載の画像処理装置。
  3. 前記符号化部は、前記Octreeの各階層の先頭ノードを、1階層上の先頭ノードの確率テーブルを用いて符号化する
    請求項1に記載の画像処理装置。
  4. 前記符号化部は、前記Octreeの各階層の先頭ノードを、前フレームの所定のノードの確率テーブルを用いて符号化する
    請求項1に記載の画像処理装置。
  5. 前記所定のノードは、処理対象ノードと同一階層の最後のノードである
    請求項4に記載の画像処理装置。
  6. 前記所定のノードは、前記前フレームの最後のノードである
    請求項4に記載の画像処理装置。
  7. 前記符号化部は、
    処理対象階層を他の階層と独立に符号化する方法、
    処理対象階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
    および、処理対象階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
    の内のいずれか複数を用いて前記Octreeを符号化する
    請求項1に記載の画像処理装置。
  8. 前記符号化部は、
    前記Octreeの一部の階層については、階層毎にコンテキストを初期化して符号化し、
    前記Octreeの他の階層については、1つ前に処理されたノードの処理結果をコンテキストとして各ノードを符号化する
    請求項1に記載の画像処理装置。
  9. 前記符号化部は、
    前記Octreeの各階層を互いに独立に符号化する方法、
    前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
    および、前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
    の内の少なくとも1つを含む複数の候補の中から1つ以上を選択し、選択した方法を用いて前記Octreeを符号化する
    請求項1に記載の画像処理装置。
  10. 前記符号化部は、選択した前記方法を示す情報と、前記Octreeの符号化データとを含むビットストリームを生成する
    請求項9に記載の画像処理装置。
  11. ポイントクラウドデータに対応するOctreeを、前記Octreeの階層毎にコンテキストを初期化して符号化する
    画像処理方法。
  12. ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する復号部
    を備える画像処理装置。
  13. 前記復号部は、外部指示に基づいて前記復号順を選択する
    請求項12に記載の画像処理装置。
  14. 前記復号部は、前記符号化データの復号処理の負荷に基づいて前記復号順を選択する
    請求項12に記載の画像処理装置。
  15. 前記復号部は、前記復号処理の速度に基づいて前記復号順を選択する
    請求項14に記載の画像処理装置。
  16. 前記復号部は、前記復号処理により使用されるメモリの容量に基づいて前記復号順を選択する
    請求項14に記載の画像処理装置。
  17. 前記復号部は、前記符号化データにおいて前記Octreeが、前記Octreeの階層毎にコンテキストが初期化されて符号化されていない場合、前記復号順として前記幅優先順を選択する
    請求項12に記載の画像処理装置。
  18. 前記復号部は、前記符号化データにおいて前記Octreeが、
    前記Octreeの各階層を互いに独立に符号化する方法、
    前記Octreeの各階層の先頭ノードを1階層上の先頭ノードの確率テーブルを用いて符号化する方法、
    前記Octreeの各階層の先頭ノードを前フレームの所定のノードの確率テーブルを用いて符号化する方法、
    または、これらの方法の内の複数を組み合わせた方法、
    により符号化されていない場合、前記復号順として前記幅優先順を選択する
    請求項17に記載の画像処理装置。
  19. 前記復号部は、前記符号化データにおける前記Octreeの符号化の方法を示す情報に基づいて、前記Octreeの階層毎にコンテキストが初期化されて符号化されているかを判定する
    請求項17に記載の画像処理装置。
  20. ポイントクラウドデータに対応するOctreeの符号化データの復号順として幅優先順または深さ優先順を選択し、選択した復号順により前記符号化データを復号する
    画像処理方法。
JP2020548453A 2018-09-28 2019-09-13 画像処理装置および方法 Active JP7359153B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018183912 2018-09-28
JP2018183912 2018-09-28
PCT/JP2019/036031 WO2020066680A1 (ja) 2018-09-28 2019-09-13 画像処理装置および方法

Publications (2)

Publication Number Publication Date
JPWO2020066680A1 true JPWO2020066680A1 (ja) 2021-08-30
JP7359153B2 JP7359153B2 (ja) 2023-10-11

Family

ID=69952647

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020548453A Active JP7359153B2 (ja) 2018-09-28 2019-09-13 画像処理装置および方法

Country Status (5)

Country Link
US (2) US11910026B2 (ja)
EP (1) EP3859679A4 (ja)
JP (1) JP7359153B2 (ja)
CN (1) CN112740277A (ja)
WO (1) WO2020066680A1 (ja)

Families Citing this family (27)

* 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
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
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US10939129B2 (en) 2018-04-10 2021-03-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
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
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
WO2021243519A1 (zh) * 2020-06-01 2021-12-09 深圳市大疆创新科技有限公司 点云的编解码方法和装置
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
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
WO2022259944A1 (ja) * 2021-06-08 2022-12-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563499B1 (en) 1998-07-20 2003-05-13 Geometrix, Inc. Method and apparatus for generating a 3D region from a surrounding imagery
US6483518B1 (en) 1999-08-06 2002-11-19 Mitsubishi Electric Research Laboratories, Inc. Representing a color gamut with a hierarchical distance field
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
JP4759291B2 (ja) 2004-03-08 2011-08-31 三星電子株式会社 適応的2n進ツリーの生成方法、ならびにそれを利用して3次元体積データを符号化/復号化する方法および装置
CN106412608B (zh) * 2010-04-13 2019-10-08 Ge视频压缩有限责任公司 用于解码、生成数据流的方法和解码器
US8344917B2 (en) 2010-09-30 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for context initialization in video coding and decoding
EP2777018A4 (en) 2011-11-07 2016-07-06 Thomson Licensing PREDICTIVE POSITION CODING
TWI534760B (zh) * 2011-11-28 2016-05-21 湯姆生特許公司 空間樹結構對輸入空間點編碼之方法及編碼器,以及空間樹結構位元流之解碼方法及解碼器
US20160286241A1 (en) * 2015-03-24 2016-09-29 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
EP3469546B1 (en) * 2016-10-12 2022-04-27 Hewlett-Packard Development Company, L.P. Sub-volume octrees
WO2018071011A1 (en) * 2016-10-12 2018-04-19 Hewlett-Packard Development Company, Lp Serialising a representation of a three dimensional object
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
WO2019156141A1 (ja) * 2018-02-08 2019-08-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置

Also Published As

Publication number Publication date
JP7359153B2 (ja) 2023-10-11
CN112740277A (zh) 2021-04-30
US20220038751A1 (en) 2022-02-03
WO2020066680A1 (ja) 2020-04-02
US20240129555A1 (en) 2024-04-18
EP3859679A4 (en) 2022-11-02
EP3859679A1 (en) 2021-08-04
US11910026B2 (en) 2024-02-20

Similar Documents

Publication Publication Date Title
JP7359153B2 (ja) 画像処理装置および方法
KR102627189B1 (ko) 2차원 포인트 클라우드들을 인코딩 및 디코딩하기 위한 방법 및 장치
WO2020012967A1 (ja) 画像処理装置および方法
WO2019142667A1 (ja) 画像処理装置および方法
US11943457B2 (en) Information processing apparatus and method
WO2019142666A1 (ja) 画像処理装置および方法
WO2020071114A1 (ja) 画像処理装置および方法
EP4071715A1 (en) Information processing device and method
WO2021010200A1 (ja) 情報処理装置および方法
US11991348B2 (en) Information processing device and method
WO2020071115A1 (ja) 画像処理装置および方法
WO2020071101A1 (ja) 画像処理装置および方法
WO2022145214A1 (ja) 情報処理装置および方法
WO2021002214A1 (ja) 情報処理装置および方法
JP7415937B2 (ja) 画像処理装置および方法
WO2020262020A1 (ja) 情報処理装置および方法
WO2022075079A1 (ja) 情報処理装置および方法
WO2020145140A1 (ja) 情報処理装置および方法
US20220358685A1 (en) Image encoding method and image decoding method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230911

R151 Written notification of patent or utility model registration

Ref document number: 7359153

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151