(57)【特許請求の範囲】
【請求項１】
シンボルのシーケンス中のあるシンボルが第一のシンボル集合に属さないことを判別する段階と；
前記判別されたシンボルを表わすために、所定のシンボルを、前記第一のシンボル集合および前記所定のシンボルについての統計的モデルを使って、エンコードする段階と；
前記判別されたシンボルを、第二のシンボル集合についての統計的モデルを使ってエンコードする段階であって、前記第二のシンボル集合は前記第一のシンボル集合の上位集合である、段階とを含む、
方法。
【請求項２】
請求項１記載の方法であって、前記所定のシンボルが前記第一のシンボル集合に属さない、方法。
【請求項３】
請求項１記載の方法であって、前記シーケンスが第一のシーケンスであり、当該方法はさらに：
シンボルの第二のシーケンスを、前記第二のシンボル集合についての統計的モデルを使ってエンコードする段階と；
シンボルの第三のシーケンスを、前記第一のシンボル集合についての統計的モデルを使ってエンコードする段階とを含み、
すべて「1」のシンボルは前記第一のシーケンスよりシンボルの前記第二のシーケンスにおいてより頻繁に生起し、前記第一のシンボル集合のシンボルのみが前記第三のシーケンスに現われる、
方法。
【請求項４】
請求項１ないし３のうちいずれか一項記載の方法であって、前記第一のシンボル集合は「1」を一つだけもつシンボルの集合であり、前記第二のシンボル集合はあらゆる可能なシンボルの集合である、方法。
【請求項５】
請求項３記載の方法であって、さらに：
3Dメッシュの幾何データを受領する段階と；
前記幾何データを木データ構造を使って表わす段階と；
前記木データ構造を三つの部分に区画する段階とを含んでおり、
シンボルの前記第一のシーケンスは前記木データ構造の中央部に対応し、シンボルの前記第二のシーケンスは前記木データ構造の上部に対応し、シンボルの前記第三のシーケンスは前記木データ構造の下部に対応する、
方法。
【請求項６】
請求項５記載の方法であって、前記木データ構造を区画する段階が：
第二のシンボルに関連付けられたあるノードの子ノードを、前記第二のシンボルが前記第一のシンボル集合に属さなければ前記木データ構造の上部に含めること；および
前記ノードの子ノードを、前記第二のシンボルが前記第一のシンボル集合に属するならば前記木の中央部に含めることの一方を含む、
方法。
【請求項７】
請求項５記載の方法であって、前記木データ構造を区画する段階が少なくとも一つの閾値を使う、方法。
【請求項８】
第一のシンボル集合および所定のシンボルについての統計的モデルを使ってビットストリームからシンボルを復号する段階と；
前記シンボルが前記所定のシンボルであることを判別する段階と；
前記判別されたシンボルに対応する第二のシンボルを、前記ビットストリームから、第二のシンボル集合についての統計的モデルを使って復号する段階とを含み、
前記第二のシンボル集合が前記第一のシンボル集合の上位集合である、
方法。
【請求項９】
請求項８記載の方法であって、前記所定のシンボルが前記第一のシンボル集合に属さない、方法。
【請求項１０】
請求項８記載の方法であって、前記第二のシンボル集合についての前記統計的モデルおよび前記第一のシンボル集合についての統計的モデルの一方を使って、前記ビットストリームから第四のシンボルを復号する段階をさらに含む、方法。
【請求項１１】
前記第一のシンボル集合は「1」を一つだけもつシンボルの集合であり、前記第二のシンボル集合はあらゆる可能なシンボルの集合である、請求項１０記載の方法。
【請求項１２】
請求項１０記載の方法であって、さらに：
前記第二のシンボルおよび前記第四のシンボルを含む復号されたシンボルを使って木データ構造を再構成する段階と；
前記木データ構造から3Dメッシュの幾何データを復元する段階とを含む、
方法。
【請求項１３】
請求項１２記載の方法であって、前記木データ構造の前記再構成が：
あるノードについての子ノードに関連付けられたシンボルを、前記ノードに関連付けられた第三のシンボルが前記第一のシンボル集合に属するならば、前記第一のシンボル集合および前記所定のシンボルについての前記統計的モデルを使って復号する段階と；
前記ノードについての子ノードに関連付けられた前記シンボルを、前記第三のシンボルが前記第一のシンボル集合に属さないならば、前記第二のシンボル集合についての前記統計的モデルを使って復号する段階とを含む、
方法。
【請求項１４】
前記木データ構造の前記再構成が少なくとも一つの閾値を使う、請求項１２記載の方法。
【請求項１５】
木データ構造を三つの部分に区画するプロセッサであって、シンボルの第一のシーケンスは前記木データ構造の中央部に対応し、シンボルの第二のシーケンスは前記木データ構造の上部に対応し、シンボルの第三のシーケンスは前記木データ構造の下部に対応し、前記木データ構造の親ノードの子ノードは、該親ノードが分割されるセルの一つを表わす、プロセッサと；
シンボルの前記第一のシーケンス内のあるシンボルが第一のシンボル集合に属さないことを判別するコントローラと；
前記判別されたシンボルを表わすために、所定のシンボルを、前記第一のシンボル集合および前記所定のシンボルについての統計的モデルを使って、エンコードする第一のエントロピー符号化エンジンと；
前記シンボルおよびシンボルの前記第二のシーケンスを、第二のシンボル集合についての統計的モデルを使ってエンコードする第二のエントロピー符号化器とを有しており、
前記第二のシンボル集合は前記第一のシンボル集合の上位集合であり、前記所定のシンボルは前記第一のシンボル集合に属さない、
装置。
【請求項１６】
請求項１５記載の装置であって、あるノードの子ノードが、第三のシンボルが前記第一のシンボル集合に属さなければ前記木データ構造の上部に含められ、前記ノードの子ノードが、前記第三のシンボルが前記第一のシンボル集合に属するならば前記木の中央部に含められ、前記ノードは前記第三のシンボルに関連付けられている、装置。
【請求項１７】
請求項１５記載の装置であって、さらに：
3Dメッシュを受領する入力部と；
前記3Dメッシュの幾何データを表わすよう前記木データ構造を形成する生成器とを有する、
装置。
【請求項１８】
前記プロセッサが、前記木データ構造を区画するために少なくとも一つの閾値を使う、請求項１５記載の装置。
【請求項１９】
第一のシンボル集合および所定のシンボルについての統計的モデルを使ってビットストリームからシンボルを復号する第一のエントロピー復号エンジンと；
前記シンボルが前記所定のシンボルであることを判別するコントローラと；
第二のシンボルを、前記ビットストリームから、第二のシンボル集合についての統計的モデルを使って復号する第二のエントロピー復号エンジンであって、前記第二のシンボル集合は前記第一のシンボル集合の上位集合である、第二のエントロピー復号エンジンと；
前記第二のシンボルを含む復号されたシンボルを使って木データ構造を再構成するプロセッサとを有する、
装置。
【請求項２０】
請求項１９記載の装置であって、ある第三のシンボルが前記第一のシンボル集合に属するならば、あるノードについての子ノードに関連付けられたシンボルを復号するために前記第一のエントロピー復号エンジンが使われ、前記第三のシンボルが前記第一のシンボル集合に属さないならば、前記ノードについての子ノードに関連付けられた前記シンボルを復号するために前記第二のエントロピー復号エンジンが使われ、前記ノードは前記第三のシンボルに関連付けられている、装置。
【請求項２１】
前記木データ構造が3Dメッシュの幾何データを表わすよう再構成される、請求項１９記載の装置。
【請求項２２】
前記木データ構造の前記再構成が少なくとも一つの閾値を使う、請求項１９記載の装置。
【請求項２３】
プログラムを記憶しているプロセッサ可読記憶媒体であって、前記プログラムは、一つまたは複数のプロセッサに：
第一のシンボル集合および所定のシンボルについての統計的モデルを使ってビットストリームからシンボルを復号する段階と；
前記シンボルが前記所定のシンボルであることを判別する段階と；
前記判別されたシンボルに対応する第二のシンボルを、前記ビットストリームから、第二のシンボル集合についての統計的モデルを使って復号する段階であって、前記第二のシンボル集合は前記第一のシンボル集合の上位集合である、段階とを実行させるものである、
プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はエントロピー符号化および復号に関し、より詳細には、シーケンスの異なる部分において異なる統計をもつシンボル・シーケンスについてのエントロピー符号化および復号に関する。
【背景技術】
【０００２】
シンボルのシーケンスはエントロピー符号化によって圧縮されることができる。ここで、シンボルは、アルファベット、すなわちシンボル集合から選ばれる。エントロピー符号化エンジンは、統計的モデル、すなわちシンボルの確率分布に基づいてシンボルについて符号語を割り当てる。一般に、より頻繁に使われるシンボルはより少数のビットでエントロピー符号化され、それほど頻繁に現われないシンボルはより多くのビットでエントロピー符号化される。
【０００３】
エントロピー符号化は何十年にもわたって研究されてきた。基本的に、三つの型のエントロピー符号化方法がある：ハフマン符号化のような可変長符号化（VLC:  variable  length  coding）、算術符号化（arithmetic  coding）およびレンペル・ジヴ（LZ:  Lempel-Ziv）圧縮またはレンペル・ジヴ・ウェルチ（LZW:  Lempel-Ziv-Welch）圧縮のような辞書ベースの圧縮である。
【０００４】
VLC符号は各シンボルを表わすのに整数個のビットを使う。ハフマン符号化は最も広く使われるVLC方法である。これはより大きな確率をもつシンボルにはより少数のビットを割り当てる一方、より小さな確率をもつシンボルにはより多くのビットを割り当てる。ハフマン符号化は、各シンボルの確率が1/2の整数乗である場合に最適である。算術符号化は各シンボルに小数個のビットを割り当てることができるので、エントロピーにより近づくことができる。ハフマン符号化および算術符号化は、既存の画像／ビデオ圧縮規格、たとえばJPEG、MPEG-2、H.264/AVCにおいて広く使われてきた。LZまたはLZWは圧縮モデルに基づくテーブルを利用し、データの繰り返されるストリングについてテーブル・エントリーが代用される。たいていのLZ方法について、テーブルは以前の入力データから動的に生成される。辞書ベースのアルゴリズムはたとえばGIF、Zip、PNG規格において用いられてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
階層的なエントロピー符号化および復号を提供する。
【課題を解決するための手段】
【０００６】
一般的な側面によれば、シンボルのシーケンス中のあるシンボルが第一のシンボル集合に属さないと判定される場合、前記判定されたシンボルを表わすために、所定のシンボルが、前記第一のシンボル集合および前記所定のシンボルのための統計的モデルを使ってエンコードされ、前記判定されたシンボルは第二のシンボル集合のための統計的モデルを使ってエンコードされる。
【０００７】
もう一つの一般的な側面によれば、3Dメッシュの幾何データが受領され、前記幾何データが木データ構造を使って表わされる。前記木データ構造は三つの部分に区画される。シンボルの第一のシーケンスは前記木データ構造の中央部に対応し、シンボルの第二のシーケンスは前記木データ構造の上部に対応し、シンボルの第三のシーケンスは前記木データ構造の下部に対応する。シンボルの第一のシーケンス中のシンボルが第一のシンボル集合に属さないと判定される場合、前記判定されたシンボルを表わすために、前記第一のシンボル集合のための統計的モデルを使って所定のシンボルがエンコードされ、前記判定されたシンボルは第二のシンボル集合についての統計的モデルを使ってエンコードされる。ここで、前記第二のシンボル集合は前記第一のシンボル集合の上位集合であり、前記所定のシンボルは前記第二のシンボル集合に属さない。前記木データ構造を区画するとき、第二のシンボルに関連付けられたあるノードの子ノードは前記第二のシンボルが前記第一のシンボル集合に属さなければ前記木データ構造の上部に含まれ、前記ノードの子ノードは前記第二のシンボルが前記第一のシンボル集合に属するならば前記木の中央部に含まれる。
【０００８】
もう一つの一般的な側面によれば、第一のシンボル集合および所定のシンボルのための統計的モデルを使ってビットストリームからシンボルが復号される。前記シンボルが前記所定のシンボルであると判定される場合、前記判定されたシンボルに対応する第二のシンボルが前記ビットストリームから、第二のシンボル集合についての統計的モデルを使って復号される。
【０００９】
もう一つの一般的な側面によれば、第一のシンボル集合および所定のシンボルのための統計的モデルを使ってビットストリームからシンボルが復号される。前記シンボルが所定のシンボルであると判定される場合、前記シンボルに対応する第二のシンボルが前記ビットストリームから、第二のシンボル集合についての統計的モデルを使って復号される。ここで、前記第二のシンボル集合は前記第一のシンボル集合の上位集合であり、前記所定のシンボルは前記第二のシンボル集合に属さない。前記第二のシンボル集合のための統計的モデルおよび前記第一のシンボル集合のための統計的モデルの一方を使って前記ビットストリームからもう一つのシンボルが復号される。前記第二のシンボルおよび前記もう一つのシンボルを含む復号されたシンボルを使って木データ構造が再構成される。前記木データ構造を再構成するとき、あるノードについての子ノードに関連付けられたシンボルは、前記ノードに関連付けられた第三のシンボルが前記第一のシンボル集合に属するならば、前記第一のシンボル集合および前記所定のシンボルについての統計的モデルを使って復号され、前記ノードについての子ノードに関連付けられたシンボルは、前記第三のシンボルが前記第一のシンボル集合に属さないならば、前記第二のシンボル集合についての統計的モデルを使って復号される。
【００１０】
一つまたは複数の実装の詳細は付属の図面および以下の記述において記載される。たとえある特定の仕方で記述されていたとしても、実装はさまざまな仕方で構成または具現されうることは明らかなはずである。たとえば、実装は方法として実行されてもよいし、あるいは装置、たとえば一組の動作を実行するよう構成された装置または一組の動作を実行するための命令を記憶する装置として具現されてもよいし、あるいは信号において具現されてもよい。他の側面および特徴は、付属の図面および請求項との関連で考慮される以下の詳細な説明から明白となるであろう。
【図面の簡単な説明】
【００１１】
【図１】2Dの場合のk-d木に基づく幾何符号化の原理の絵的な表現である。
【図２】2Dの場合の四分木に基づく幾何符号化の原理の絵的な表現である。
【図３】2Dの場合の四分木に基づく幾何符号化の原理の絵的な表現である。
【図４】セル区画の絵的な表現である。
【図５】例示的な八分木の絵的な表現である。
【図６】本願の原理のある実施形態に基づく、シンボルのサブシーケンスを生成するための例を描く絵的な表現である。
【図７】本願の原理のある実施形態に基づく、3Dメッシュの幾何データを圧縮するための例を描く流れ図である。
【図８】本願の原理のある実施形態に基づく、階層的なエントロピー符号化のための例を描く流れ図である。
【図９】本願の原理のある実施形態に基づく、木データ構造を区画するための例を描く流れ図である。
【図１０】ＡおよびＢは、本願の原理のある実施形態に基づく、生成されたビットストリームのフォーマットの絵的な表現である。
【図１１】本願の原理のある実施形態に基づく、ビットストリームをエントロピー復号し、3Dメッシュの幾何データを復元するための例を描く流れ図である。
【図１２】本願の原理のある実施形態に基づく、階層的なエントロピー復号のための例を描く流れ図である。
【図１３】本願の原理のある実施形態に基づく、木データ構造を再構成するための例を描く流れ図である。
【図１４】ＡおよびＢは、木データ構造を再構成するための例を描く絵的な表現である。
【図１５】一つまたは複数の実装とともに使用されうるエンコーダの例を描くブロック図である。
【図１６】一つまたは複数の実装とともに使用されうるデコーダの例を描くブロック図である。
【図１７】一つまたは複数の実装とともに使用されうるデータ処理システムの例を描くブロック図である。
【図１８】一つまたは複数の実装とともに使用されうるデータ処理システムのもう一つの例を描くブロック図である。
【発明を実施するための形態】
【００１２】
ランダムな点位置および水密な3Dモデルの頂点位置のような幾何データを圧縮するために、空間木に基づくアプローチを使うことができる。そうしたアプローチは八分木またはk-d木によって入力空間点を組織化する。木はたどられ、木の復元に必要とされる情報が記憶される。
【００１３】
最初、3Dモデルのすべての点のまわりにバウンディングボックスが構築される。最初は、すべての3D点のバウンディングボックスが単一のセルと見なされる。空間木を構築するために、セルは再帰的に細分され、最後には空でない各セルが一つのみの頂点を含み、かつ頂点位置の十分精密な再構成を可能にするほど小さくなる。頂点位置は、対応するセルの中心座標から復元されることができるので、空間木に基づくアルゴリズムは、単一解像度圧縮アルゴリズムと同じ圧縮比をもつ多解像度圧縮を達成しうる。
【００１４】
k-d木に基づくアプローチでは、図１に示されるように、セルは二つの子セルに細分され、二つの子セルの一方における頂点数が各反復工程においてエンコードされる。親セルがp個の頂点を含む場合、子セルの一つにおける頂点数は算術符号化器を用いてlog2(p＋1)ビットを使ってエンコードできる。
【００１５】
他方、八分木に基づくアプローチは、各反復工程において、空でないセルを八つの子セルに細分する。解説の簡単のため、四分木を記述する2Dの例が図２および図３に示されている。たどる順序は矢印によって示されている。エンコードのためには、現在の親セルが、あらかじめ定義された順序でたどられる四つの子セルに分割される。子セル当たり単一のビットが、その子セル内に点があるか否かを示す。たとえば、図２では、二つの親セル１および２の子セルは矢印で示されるようにたどられる。空でない子セルは灰色にされている。第一の親セル１の子セル２１０、２１１、２１２および２１３は第一のシーケンス「1010」によって表わされる。このたどり方の第一および第三の子セル２１０、２１２は空でない（すなわち、一つまたは複数の点を含む）ので、「1」によって指示されている。第二および第四の子セル２１１、２１３は空であり（すなわち、点を含まない）、「0」によって示される。図３は、異なるたどり方を使った同じセルおよび結果として得られるシーケンスを示している。
【００１６】
図４は、八分木方式の親セルおよび子セルを示している。八分木方式では、親セルは八つの子セル４０、……、４６に分割される（左下のセル４２の背後の一つの隠されている子セルは図示していない）。一つの可能なたどる順序は左‐右、上‐下および前‐後であることができ、その結果、セルのたどるシーケンスは４０‐４１‐４２‐４３‐４４‐４５‐（左下のセル４２の背後の隠れているセル）‐４６となる。対応して、八分木の場合、空でない子セル構成は、空と空でない子セルの255通りのすべての可能な組み合わせをカバーする、8ビット二進値によって表わされる。空でない子セルの数を別途エンコードすることは必要ない。表１は、シーケンスの例である。
【００１７】
11111111
01100110
00111011
11001100
……
00010000
00000010
00000010
10000000
00000001
表１  例示的なシーケンス。
【００１８】
親セル内の子セルの特定のたどる順序は本願の実施形態についてあまり重要でないことを注意しておく。原理的には、いかなるたどる順序も本願の実施形態のために使用できる。以下では、子セル構成を表わすために使われるビット列〔ストリング〕がシンボルと記される。表１の例では、各シンボルについて8ビットが使用される。他の実装では、シンボル中のビット数は変わってもよい。たとえば、四分木についての子セル構成を表わすには4ビットのストリングが使用される。よって、図２の例におけるシンボルのためのビット数は4である。
【００１９】
図５は、八分木構造の例を示している。各ノードはシンボルに関連付けられており、各層はこの木表現のある精度に対応する。初期セルは八つのセルに分割される。子セル１、２、５、６および７はより多くの頂点を含み、子セル３、４および８は空であり、結果として層0における子セル構成を表わす8ビット・シンボル11001110（５１０）を生ずる。空でない各子セルはさらに分割され、対応する子セル構成が層１に表わされている。細分は、空でない各セルが一つの頂点しか含まなくなるまで続けられてもよい。
【００２０】
八分木の幅優先のたどり方を使うと、3Dメッシュの頂点位置がシンボルのシーケンスに整理されることができる。図５における例については、シンボルのシーケンスは：11001110、11000000、10010100、00100110、00001000および00001000となる。
【００２１】
【表１】
0005905099.tif 000002
ある複雑な3Dモデルにおける最も頻繁に現われる諸シンボルの確率分布が、表２において確率の降順に示されている。表２から見て取れるように、二進表現において「1」を一つしかもたないシンボルは優勢な確率（＞93%）で現われる。幾何学的な説明は、何回かの細分を経たあとでは頂点どうしがセルを共有することはまれだということでありうる。すなわち、八分木の下のほうの層は「1」が一つしかないシンボルによって支配され、他のシンボルは上のほうの層によりしばしば現われる。
【００２２】
本願の実施形態に基づき、二つのシンボル集合を定義する：あらゆる可能なシンボルを含む全体シンボル集合S0＝{1,2,3,……,255}および「1」を一つもつシンボルのみを含むシンボル集合S1＝{1,2,4,8,16,32,64,128}、すなわち最も頻繁に現われるシンボルである。シンボルは、シンボル集合S1に属する場合にはS1シンボルと呼ばれ、そうでない場合には非S1シンボルと呼ばれる。
【００２３】
八分木の統計的な属性から裨益するため、本願と同じ所有者の「八分木圧縮のためのモデル適応的なエントロピー符号化方法」と題するPCT出願第PCT/CN2011/077279号は、八分木によって表わされるシーケンスを、適応的にS0またはS1を用いて符号化されるいくつかのサブシーケンスに区画することを提案している。サブシーケンス境界のインデックスは補助情報として符号化される。補助情報のオーバーヘッド（たとえば各インデックスについて2バイト）のため、一般に、連続するS1シンボルの大きなサブシーケンスはシンボル集合S1を用いて符号化される。
【００２４】
シーケンスのある部分にS1シンボルおよび非S1シンボルの両方が現われ、S1シンボルがずっと高い確率をもつときは、そのような部分をいくつかのサブシーケンスに分割することは、オーバーヘッドのため、効率的ではない。他方、非S1シンボルは低い確率で現われるので、そのような部分をシンボル集合S0を用いて符号化することも効率的ではない。
【００２５】
本願の原理は、シーケンスの異なる部分において変化する統計をもつシンボルのシーケンスを効率よく圧縮するための階層的なエントロピー符号化／復号の方法および装置を提供する。以下の実施形態は、主に、3Dメッシュ／モデルの八分木表現に基づくが、本願の原理は、下記でさらに定義される他のデータ／セットまたはアプリケーションにも適応されうる。
【００２６】
図６は、シンボルのシーケンスが三つのサブシーケンスに区画されうる様子および三つの異なるシンボル集合がエンコードに使われる様子を示す例である。本願の実装では、あるシンボル集合を使ってシンボルのシーケンスをエントロピー符号化するとは、そのシンボル集合についての統計的モデル、すなわちそのシンボル集合の各シンボルの確率がエントロピー符号化に使われることを意味する。通例、そうした確率は、特定のシンボル集合についての大きなデータ・セットを使ってトレーニングされる。したがって、二つの異なるシンボル集合に現われるシンボルは、二つのシンボル集合において異なる確率に対応しうる。表２の例について、シンボル「10000000」はS0およびS1の両方に現われ、S0ではProb('10000000')＝0.1162であり、S1ではProb('10000000')＝0.1245である。
【００２７】
解説の簡単のため、図６では八分木の代わりに二分木６１０が使われている。この二分木における各ノードは2ビットのシンボルと関連付けられる。シンボルが「11」であるとき、そのシンボルが二つの子ノードをもつ。シンボルが「10」であるとき、そのシンボルは左の子ノードのみをもつ。シンボルが「01」であるとき、そのシンボルは右の子ノードのみをもつ。シンボル集合S0は三つの可能なシンボルすべてを含む。この例では、シンボル集合S1はシンボル「01」および「10」を含む。いずれもビット列中「1」を一つのみもつ。このように、この例では、シンボル集合S0は八分木についての全体シンボル集合に対応し、S1はシンボル集合{1,2,4,8,16,32,64,128}に対応する。
【００２８】
二分木６１０では、シンボル「10」および「01」が下のほうの層を支配し、「11」は上のほうの層でより高い確率をもつ。二分木６１０は三つの部分に分割され、各部分はシンボルのサブシーケンスに対応する。木の上部P0はサブシーケンス６２０に対応し、中央部P2はサブシーケンス６３０に対応し、下部P1はサブシーケンス６４０に対応する。シンボル集合S0のすべてのシンボルはサブシーケンス６２０および６３０において存在するが、「11」は６３０よりも６２０においてより頻繁に生起する。この例では、サブシーケンス６４０にはシンボル「01」および「10」のみが現われる。P1に「11」も含まれることができることも可能だが、確率はずっと低い。
【００２９】
サブシーケンス６２０は、シンボル集合S0を使ってエントロピー符号化され、サブシーケンス６４０はS1を使ってエントロピー符号化される。サブシーケンス６３０は、本願の原理に基づく階層的なエントロピー符号化機構を用いてエンコードされる。
【００３０】
図７は、3Dメッシュの幾何データを圧縮するための例示的な方法７００を示している。この方法では、幾何データは八分木によって表わされる。八分木はまず三つの部分P0、P1およびP2に区画され、三つのシンボル集合S0、S1およびS2が定義される。木の各部分は、適切な統計的モデルを用いて効率的に圧縮される。この例では、S1はS0の部分集合であり、S2はS1と所定のシンボル「X」との和集合である、すなわちS2={S1,'X'}。他の実施形態では、S0およびS1は他のシンボルを含んでいてもよく、S2はS1と他の関係にあってもよい。各部分をエントロピー符号化することによって三つのサブストリームが形成される。次いで、それら三つのサブストリームを他の情報、たとえば適正な復号を可能にするための補助情報と組み合わせることによって、ビットストリームが生成されうる。
【００３１】
方法７００は、機能ブロック７１０に制御を渡す開始ブロック７０５を含む。ブロック７１０では、3Dメッシュの幾何データが受領され、ブロック７２０では、該幾何データを表わすよう八分木が生成される。八分木は、受領された幾何データに対応する完全なシンボルのシーケンスと見なされうる。ブロック７３０では、八分木が、上部P0、下部P1および中央部P2の三つの部分に区画される。各部分がサブシーケンスに対応する。結果として、完全なシンボルのシーケンスは三つのサブシーケンスに分割される。
【００３２】
それらのサブシーケンスは次いでエントロピー符号化される。ブロック７４０において、上部に対応するサブシーケンスはシンボル集合S0を使ってエントロピー符号化される。ブロック７５０において、中央部に対応するサブシーケンスは階層的エントロピー符号化を使ってエントロピー符号化される。ブロック７６０において、下部はシンボル集合S1およびその統計的モデルを使ってエントロピー符号化される。ブロック７７０では、ヘッダ情報が生成される。ブロック７８０において、サブストリームおよびヘッダ情報が組み合わされ、コンパイルされて、ビットストリームとなる。次いで制御は終了ブロック７９９に渡される。
【００３３】
方法７００では、上部のためのシンボルのサブシーケンスは、中央部および下部についてのサブシーケンスより先にエンコードされる。エンコードの他の順序も使用できる。
【００３４】
ブロック７５０において使用されうる、入力シンボル・シーケンスをエンコードしてビットストリームを出力する例示的な階層的エントロピー符号化方法が図８において方法８００として描かれている。一例では、上記シンボル・シーケンスは八分木の中央部についてのサブシーケンスに対応する。別の実施形態では、上記シンボル・シーケンスは他の源、たとえば四分木によって表現される一組の2D座標から生成されてもよい。
【００３５】
方法８００は、機能ブロック８１０に制御を渡す開始ブロック８０５を含む。ブロック８１０では、シンボルのシーケンスが入力として受領される。ブロック８２０では、前記シンボルのシーケンスからシンボルが読まれる。ブロック８３０では、前記シンボルがシンボル集合S1に属するかどうかが判定される。前記シンボルがS1に属さない場合、ブロック８４０において所定のシンボル「X」がまずシンボル集合S2（S2＝{S1,'X'}）を使ってエントロピー符号化される。次いでブロック８５０において前記シンボル自身がエントロピー符号化されるが、ここではシンボル集合S0（S0⊃S1）を使う。前記シンボルがS1に属する場合は、ブロック８６０においてシンボル集合S2（{S1,'X'}）を使ってエントロピー符号化される。ブロック８７０では、シーケンス中のすべてのシンボルがエンコードされたかどうかが検査される。すべてのシンボルがエンコードされていれば、制御は終了ブロック８９９に渡され、そうでなければ、制御はブロック８２０に返される。
【００３６】
シンボル集合S2は、シンボル集合S1に加えて所定のシンボル「X」を含んでいる。完全なシンボル集合S0の代わりにより小さなシンボル集合S1および追加的なシンボルを使って、八分木の中央部分におけるS1シンボルはより効率的にエンコードされうる。各非S1シンボルはまず「X」として表わされ、「X」としてエントロピー符号化され、それにそのシンボル自身のエントロピー符号化が続く。すなわち、シンボル「X」は非S1シンボルをまとめたものと見なすことができる。したがって、図８に記述されるエントロピー符号化方法およびその対応する復号方法は、階層的エントロピー符号化／復号と称される。
【００３７】
上記の議論は、3Dメッシュの幾何データを圧縮することに主として焦点を当てているが、そのような階層的なエントロピー符号化／復号方法は、シーケンスの異なる部分において異なる統計をもつデータの任意のシーケンスにも適用できる。特に、いくつかの部分はあらかじめ定義された諸シンボル集合を用いてエンコードされてもよく、他の部分は所定のシンボルを前記あらかじめ定義されたシンボル中に導入することによってエンコードされてもよい。この方法の利点は、少数のシンボル集合しか必要とされず、よっていつシンボル集合を切り換えるかを指示することにおけるオーバーヘッドを低減することである。さらに、頻繁に現われるシンボルのために小さなシンボル集合（すなわち、完全なシンボル集合の代わりに、小さなあらかじめ定義されたシンボル集合および所定のシンボル）を使うことは、圧縮効率を改善しうる。
【００３８】
本願の原理によれば、幾何データの効率的なエンコードを可能にするために、八分木を適正に区画することが望まれる。ある実施形態では、原則は、下部P1をできるだけ大きくし、非S1シンボルが中央部P2および下部に現われるのを制限することである。
【００３９】
区画P1およびP2
シンボル集合S2は、シンボル集合S1に比べ一つのさらなるシンボル「X」を含んでいるので、中央部P2の圧縮効率はP1の圧縮効率より低い。よって、高い符号化効率を得るためには、S1によって効率的にエンコードできる大きなP1が所望される。P1をできるだけ大きくするため、P1では非S1シンボルも許容される。
【００４０】
S1シンボルはシンボル集合S1によって圧縮される一方、非S1シンボルはシンボル集合S0を用いて圧縮される。非S1シンボルの位置を示すため、層インデックスおよび層内での非S1シンボルの位置がビットストリーム中に書き込まれる。非S1シンボルのエンコードは、シンボルおよびその位置の両方がエンコードされる必要があるので、コスト高である。よって、P1における非S1シンボルの数は限定されるべきである。
【００４１】
P1のサイズとP1内の非P1シンボルの数との間のバランスに達するため、閾値に基づく方法が使われる。この方法では、八分木の幅優先（breadth-first）のたどり方によって得られるシンボル・シーケンスをSEQ_BFとして定義する。次いで、SEQ_BFの終わりから非S1シンボルを探し、非S1シンボルがみつかり、かつ、この非S1シンボルと前にみつかった非S1シンボルとの間の距離がth1より小さいときに探索を止める。この非S1シンボルより下のすべての層はP1の一部である。P1を得るために八分木がどのように区画されているかを示すために、下部P1の最上層のインデックスがビットストリーム中に書き込まれる。
【００４２】
区画P0およびP2
上部P0を中央部P2から分離するためにもう一つの閾値が使われる。この区画を決定するために、まずSEQ_BFを始めから一層ずつスキャンする。th0%より多くの非S1シンボルを含む各層は初期の上部P0に含められる。ここで、th0はあらかじめ定義された閾値である。スキャンは、th0%より少ない非S1シンボルを含む層に達したときに停止する。スキャンが停止する層およびそれより上の諸層が初期の上部P0をなす。下部P1および初期のP0を除いた層が初期の中央部P2をなす。初期のP2におけるいくつかの層も、th0%より多い非S1シンボルを含むことがありうることを注意しておく。
【００４３】
S1シンボルに関連付けられたノードはS1ノードとして定義される。それ以外は非S1ノードである。上部P0の端末ノード（すなわち葉）の集合はP0の下側境界として定義される。たとえば、初期のP0の下側境界は初期のP0におけるノードの最低層である。次いで、P0とP2の分離は、P0の下側境界を使って再帰的に洗練される：非S1ノードの子がP0に含められ、S1ノードの子がP2に含められる。下部P1からのシンボルはP0やP2の一部にはならないべきであることを注意しておく。
【００４４】
図９に目を転じると、P0がどのようにしてP2から分離されるかを描く例が概括的に方法９００として示されている。方法９００は、機能ブロック９１０に制御を渡すブロック９０５をもって始まる。ブロック９１０では、木データ構造が入力として受領される。この例では、木データ構造は、下部P1を除いた八分木に対応する。図６における二分木のような他の木データ構造が区画（partitioning）のために入力されることもできる。閾値th0を使って、初期の上部P0および初期の中央部P2がブロック９２０において形成される。ブロック９３０では、P0の下側境界からノードが読まれる。ブロック９４０では、そのノードがS1ノードであるかどうかが検査される。そのノードがS1ノードであれば、ブロック９５０において、その子ノードが中央部P2に含められる。そうでなければ、ブロック９６０において、その子ノードが上部P0に含められる。次いで、ブロック９７０において、上部P0、中央部P2およびP0の下側境界が更新される。ブロック９８０では、P0の下側境界に非S1ノードがあるかどうかが検査される。非S1ノードがあれば、制御はブロック９３０に返され、なければ制御は終了ブロック９９９に渡される。
【００４５】
先に論じたように、S1ノードは通例、八分木中のノードの90%より多くからなる。よって、極端な場合、下部P1を除いたすべてのノードはシンボル集合S2を用いてエンコードされることができ、P0とP2の間の分離は必要とされない。しかしながら、この結果大量の「X」が生じることがあり、エンコードの効率が下がる。一般に、非S1ノードは八分木の上のほうの層にずっと頻繁に現われるので、P0を分離して出して、P0をシンボル集合S0を用いてエンコードするほうがずっと効率的である。
【００４６】
上記のあらかじめ定義された閾値については、符号化されるべき頂点位置の型によって決定されてもよい。一例では、th0＝15およびth1＝50が疎な点位置の圧縮のために使われる。別の例では、th0＝10およびth1＝200が、ある種の3Dモデルから得られる水密な頂点のために使われる。
【００４７】
先の例において、シンボル集合S2はシンボル集合S1と「X」の和集合である。すなわち、S2は、S1に比べて単に一つ多いシンボルを含んでいる。他の実施形態では、S2は他の形を取ってもよい。たとえば、ある種の非S1シンボルがP2において高い確率で現われるとき、そうした非S1シンボルはP2に含められることができる。ある実施形態では、二進表現において二つの「1」をもつシンボルがより多くの「1」をもつシンボルより頻繁に現われ、よってこれらのシンボルもS2に含められる。結果として、S2は{3,5,9,17,33,65,129,6,10,18,34,66,130,12,20,36,68,132,24,40,72,136,48,80,144,96,160,192,1,2,4,8,16,32,64,128,X}となり、8＋28＋1＝37個のシンボルを含む。
【００４８】
八分木が三つの部分に区画されたのち、対応するサブシーケンスが圧縮される。シンボル集合S0、S1およびS2の初期の統計的モデルがコーデックに入力として与えられる。エンコードおよびデコード・プロセスの間に、よりよい圧縮効率のために統計的モデルはさらに更新される。
【００４９】
統計的モデルをトレーニングするために大量の頂点データが使用される。対応するシンボル集合について統計を集めるために、それぞれP0、P1およびP2のために三つのデータ・セットが構築される。P2内のすべての非S1シンボルは、S2についての統計的モデリング・プロセスの間は「X」と見なされることを注意しておく。
【００５０】
本実施形態では、三つのサブストリーム、サブストリーム１、２および３が生成される。それらのサブストリームがどのように編成されているかに依存して、サブストリームはサブシーケンスまたは特定のシンボル集合をもつエントロピー符号化エンジンに対応することがある。サブストリームの数は他の実施形態では三つより多くてもよい。たとえば、サブシーケンスおよびシンボル集合の各組み合わせについて別個のサブストリームが生成されるときである。
【００５１】
我々の実施形態では、算術符号化がエントロピー符号化に使われる。他のエントロピー符号化方法、たとえばハフマン符号化および辞書ベースの圧縮を使うこともできる。
【００５２】
受信側がサブストリームを適正に復号できるようにするために、サブストリームに加えて補助情報がビットストリーム中に書き込まれる。図１０のＡは、例示的なビットストリーム・フォーマットを示している。この例示的なビットストリームは、ヘッダ１０１０、サブストリーム１（１０２０）、サブストリーム２（１０３０）およびサブストリーム３（１０４０）からなる。ヘッダ１０１０は図１０のＢにおいてさらに示されている。ヘッダ中の補助情報のフォーマットは、下部P1がどのように中央部P2から分離されているかについての情報を、P1の最上層のインデックス（「layer_index」、１０５０）を使って提供する。下部P1における非S1シンボルの位置を示すために、ヘッダはP1における非S1シンボルの数（「No_non_S1」、１０６０）、続いてその位置（「location_non_S1i」、１０７０および１０７５）を提供する。ヘッダはまた、サブストリーム１（「len_substream1」、１０８０）およびサブストリーム２の長さ（「len_substream2」、１０９０）も提供する。
【００５３】
図１１では、生成されたビットストリームを復号し、八分木を再構成するための例示的な方法１１００が示されている。八分木は、エントロピー復号が進むにつれて構築される。シンボルが復号されたあと、八分木中のノードが構築される。ただし、所定のシンボル「X」が復号されるときを除く。上部P0におけるシンボルはシンボル集合S0を使って復号される。中央部P2におけるシンボルはまずシンボル集合S2を使って復号される。「X」が復号されたときは、ノードを再構成するためにS0を使って追加的なシンボルが復号される。すなわち、「X」に対応するノードは構築されない。下部P1における非S1シンボルはシンボル集合S0を使って復号され、その位置はヘッダからわかる。他のシンボル、すなわちP1におけるS1シンボルはシンボル集合S1を使って復号される。
【００５４】
方法１１００は、機能ブロック１１１０に制御を渡す開始ブロック１１０５で始まる。ブロック１１１０では、ビットストリームが受領される。ブロック１１２０では、ビットストリームからシンボルがデコードされる。ブロック１１３０では、非「X」シンボルがデコードされたときに前記八分木のあるノードが再構成される。ブロック１１４０では、八分木が完全に再構成されたかどうか、すなわち八分木構築がそれ以上のシンボルを要求していないかどうかが検査される。木が完成していなければ、制御はブロック１１２０に返される。完成していれば、ブロック１１５０において、3Dメッシュの幾何データが復元され、制御は終了ブロック１１９９に渡される。
【００５５】
入力ビットストリームをデコードしてデコードされたシーケンスを出力する例示的な階層的なエントロピー復号方法１２００が図１２に描かれている。方法１２００は機能ブロック１２１０に制御を渡す開始ブロック１２０５で始まる。１２１０ではビットストリームが受領される。ブロック１２２０では、S2＝{S1,'X'}についての統計的モデルを使って、ビットストリームからシンボルがデコードされる。ブロック１２３０では、デコードされたシンボルが所定のシンボル「X」であるかどうかが検査される。デコードされたシンボルが所定のシンボル「X」でない場合、すなわちS1シンボルである場合、制御はブロック１２７０に渡される。それ以外の場合には、ブロック１２５０において、S0を使って別のシンボルがビットストリームからデコードされる。
【００５６】
ブロック１２７０では、エントロピー復号プロセスが終了されるべきかどうかが検査される。ある実施形態では、八分木の中央部が完全に構築されるとき、エントロピー復号プロセスは終了する。他の実施形態では、エントロピー復号器が端末シンボルに到達したかどうかを検査することができる。エントロピー復号が終了されるべきであれば、制御は終了ブロック１２９９に渡される。そうでなければ、制御はブロック１２２０に返される。
【００５７】
図１３は、木の上部を再構成するための例示的な方法１３００を示している。木の区画と整合して、八分木を再構成するための幅優先のたどり方が使われる。P0内の層が再構成されるときは常に、非S1シンボルの割合が計算される。木の根から一層ずつスキャンして、th0%より小さい非S1シンボルの割合をもつ最初の層について、それより上の諸層が初期の上部P0をなす。これは、初期の上部P0およびP2が図９に記載されるように形成された仕方と整合することを注意しておく。
【００５８】
方法１３００は開始ブロック１３０５で始まり、制御を機能ブロック１３１０に渡す。１３１０では、初期の上部P0が形成される。ブロック１３２０では、ビットストリームからシンボルが読まれ、ブロック１３３０ではそのシンボルを使って木の中のあるノードが再構成される。ブロック１３４０では、そのシンボルがシンボル集合S1に属するかどうかが検査される。S1に属するならば、制御はブロック１３６０に渡される。そうでなければ、ブロック１３５０において、そのノードの子ノードがP0ノードとしてマークされる。ブロック１３６０では、まだ再構成されていないマークされたP0ノードがあるかどうかが検査される。それ以上再構成されるP0ノードがなければ、制御は終了ブロック１３９９に渡される。もしあれば、制御はブロック１３２０に返される。
【００５９】
図１４に方法１４００として示されるある例示的な実施形態では、P0が再構成されたのち、P2が再構成される。P0における端末ノードについてのシンボルから、木はその再構成を続ける。ノード１４１０についてのシンボル「10」は、左の子ノードのみをもつことを表わすので、P2内の第一のシンボルはノード１４１０の左の子ノード１４４０として再構成される。同様に、P2における次の二つのシンボルは、ノード１４２０の左の子ノード１４５０およびノード１４３０の右の子ノード１４６０として再構成される。P2内の第一の層が完了したのち、木の残りの層が再構成される。
【００６０】
P1の最上層インデックスが与えられていれば、P2の構築がいつ完了するかがわかる。P2が完了したのちにP1が再構成される。
【００６１】
図６は、本願の原理の動作を次元を減らした例によって例解している。理解を簡単にするため、図６は二分木によって表わされるシンボルがどのように三つのサブシーケンスに分割されるかおよび対応するシンボル集合がどのようにエントロピー符号化に使われるかを記述している。簡単のため、この実施形態では、P1はいかなる非S1シンボルも含まず、閾値th0はP0を形成するとき考慮されない。以下では、この二分木についてのエンコードおよびデコード・プロセスを詳細に記述する。
【００６２】
エンコード・プロセス
まず、末端から幅優先のたどり方によってノードにアクセスし、最後の非S1ノードを含んでいる層（６７０）を位置特定する。この層より下（線６５０より下）のすべてのノードはP1の一部である。P1の最上層インデックスは、固定長符号化によって圧縮される。P1内のノードの幅優先のたどり方によって形成されるサブシーケンス６４０は、シンボル集合S1を用いてサブストリーム３に圧縮される。
【００６３】
八分木中の残りのノードはさらにP0およびP2に区画される。簡単のため、P0をP2から分離することにおいては閾値th0は考慮されない。すなわち、最上部の数層はP0に含まれねばならないことは必須とされない。次いで、根からの幅優先のたどり方によってノードにアクセスする。非S1シンボルをもつノードに到達すると、その子およびそのシンボル自身がP0に含まれる。そうでない場合には、そのノード自身はP0に含められるが、その子はP2に含められる。ノードをたどるのは、八分木中のすべてのノードが処理されたときに停止する。P1からのノードはP0にもP2にも含められるべきではないことを注意しておく。P0の幅優先のたどり方によって得られるサブシーケンス６２０はサブストリーム１に圧縮される。
【００６４】
もう一つのサブシーケンス６３０が、P2内のノードの幅優先のたどり方によって形成される。P2からのシンボルはサブストリーム２にエンコードされる。
【００６５】
図６の例では、区画され並べ替えられた諸サブシーケンスは次のとおり：
P0についてのサブシーケンス：11,11,11,10,10,11,01,01,01；
P2についてのサブシーケンス：01,01,01,10,11,01,01,01；
P1についてのサブシーケンス：10,10,10,10,01,01,01,01,01,01,10,10。
【００６６】
P0およびP1からのサブシーケンスは通常のエントロピー符号化を用いてそれぞれサブストリーム１および３にエンコードされる。P2からのサブシーケンスについては、S1シンボルおよび非S1シンボルが異なる仕方でエンコードされる。この例では、P2には一つの非S1シンボルしかない（「11」、６７０）。このシンボルをエンコードするために、「X」がまずS2＝{S1,'X'}を使ってエンコードされる。次いでそのシンボル自身（「11」）がS0を使ってエンコードされる。残りのS1シンボルはS2を使ってエンコードされる。したがって、P2のためには一つの追加的なシンボルがエンコードされる。
【００６７】
この例では、サブシーケンスのエンコード結果はサブストリームに編成される。こうして、P0、P2およびP1についてのシンボルは、それぞれ次のようにサブストリーム１、２および３にエンコードされる：
サブストリーム１中のシンボル：11,11,11,10,10,11,01,01,01；
サブストリーム２中のシンボル：01,01,01,10,'X',11,01,01,01；
サブストリーム３中のシンボル：10,10,10,10,01,01,01,01,01,01,10,10。
【００６８】
デコード・プロセス
まず、P1の最上層インデックスを示すlayer_indexをデコードする。本願の原理によれば、幅優先のたどり方によって、サブストリーム１からシンボルを復号し、木の上部を再構成する。S1ノードに達したら、その子ノードの再構成はスキップされる。すべてのP0ノードが再構成されたときにノードをたどるのは終了される。
【００６９】
次に、幅優先のたどり方によって、サブストリーム２からのシンボルを復号し、木の再構成を続ける。シンボル「X」を得たら、当該ノードの実際のシンボルとして、追加的なシンボルをシンボル集合S0を用いて復号する。P0およびP2内の層の数がlayer_indexによって示される数に達したとき、ノードをたどるのは終了する。
【００７０】
次に、幅優先のたどり方によって、サブストリーム３からのシンボルを復号し、木の再構成を続ける。
【００７１】
図１５は、図１０に記述されたビットストリームを形成するために使用されることのできる例示的なエンコーダのブロック図を描いている。エンコーダ１５００の入力は、シンボルのシーケンスおよびP1の最上層の層インデックスを含む。エントロピー符号化エンジン１（１５１０）はS2＝{S1,'X'}を使ってシンボルをエンコードする。エントロピー符号化エンジン２（１５２０）はシンボル集合S0を使ってエンコードし、エントロピー符号化エンジン３（１５３０）はシンボル集合S1を使ってエンコードする。
【００７２】
すべてのエントロピー符号化エンジンはそれぞれの初期の統計的モデルをもって始まる。先に論じたように、初期の統計的モデルは、大きなデータ・セットからトレーニングされることができる。エントロピー符号化エンジンがエンコードを進めるにつれて、統計的モデルは通例、入力データの統計的属性をよりよく捉えるよう更新される。例示的なエンコーダでは、三つの別個のエントロピー符号化エンジンが論じられている。実際的な実装では、これらのエンジンは、さまざまな統計的モデルの間で切り換える一つの単一のエンジンとして実装されてもよい。
【００７３】
ヘッダ情報生成器１５４０はビットストリームのための補助情報を提供する。それは、P1の最上層の層インデックスおよびサブストリーム１および２の長さをエンコードする。下部P1に非S1シンボルがあるときは、それらの位置もヘッダ中にエンコードされる。シーケンスを復号するために必要とされる他の情報もヘッダ中に含められるべきである。八分木を区画するために使われる閾値、たとえばth0およびth1は3Dメッシュに対して適応的であってもよく、ビットストリームによって変わることもある。エンコーダとデコーダを同期させるために、そのような適応的な閾値はヘッダ中に埋め込まれる必要がある。
【００７４】
エンコーダ１５００は、あるシンボルについてどのエントロピー符号化エンジンが使われるかを決定するなどの機能を実行するためのコントローラ（１５５０）をも含む。エンコードされたビットおよびヘッダ情報は、たとえば図１０に記載されるフォーマットに従って、ビットストリーム・アセンブラー１５６０によって、出力ビットストリーム中にパッキングされる。さまざまな要素間の相互接続の詳細は図１５には明示的に示されていないが、必要とされる相互接続は当業者には理解される。
【００７５】
図１６は、図１５のエンコーダ１５００に対応する例示的なデコーダのブロック図を描いている。これは、図１０に記述されるビットストリームをデコードするために使うことができる。デコーダは通例、エンコーダと相補的であることを注意しておく。エントロピー復号エンジン１（１６１０）は、シンボル集合S2（{S1,'X'}）を使って、エントロピー符号化エンジン１によってエンコードされたシンボルを復号する。エントロピー復号エンジン２（１６２０）は、シンボル集合S0を使って、エントロピー符号化エンジン２によってエンコードされたシンボルを復号する。エントロピー復号エンジン３（１６３０）は、シンボル集合S1およびその関連付けられた統計的モデルを使って、エントロピー符号化エンジン３によってエンコードされたシンボルを復号する。ヘッダ情報パーサー１６４０は補助情報を復号する。
【００７６】
デコーダ１６００は、あるシンボルを復号するためにどのエントロピー復号エンジンが使用されるかを決定するなどの機能を実行するためのコントローラ（１６５０）をも含む。デコーダ１６００は、シンボルのシーケンスおよび他の情報、たとえばサブストリームの長さをその出力として提供する。ここでもまた、デコーダの要素間の必要とされる相互接続は当業者には理解される。
【００７７】
ここで図１７を参照するに、上記の特徴および原理が適用されうる、データ送信システムまたは装置１７００が示されている。データ送信システムまたは装置１７００は、たとえば、衛星、ケーブル、電話線または地上波放送などといった多様な媒体のいずれかを使って信号を送信するためのヘッドエンドまたは送信システムなどであってもよい。データ送信システムまたは装置１７００はまた、あるいはその代わりに、たとえば記憶のために信号を与えるために使われてもよい。送信は、インターネットまたは他の何らかのネットワークを通じて提供されてもよい。データ送信システムまたは装置１７００は、たとえば、ビデオ・コンテンツおよびたとえば3Dメッシュ・モデルなどの他のコンテンツを生成し、送達する機能をもつ。
【００７８】
データ送信システムまたは装置１７００は、処理されたデータおよび他の情報をプロセッサ１７０１から受領する。ある実装では、プロセッサ１７０１は3Dモデルの幾何データを処理し、シンボルのシーケンスを生成する。プロセッサ１７０１は、たとえば木データ構造がどのように三つの部分に分割されるか、適応的閾値および部分P1中の非S1シンボルの位置を示すメタデータをも１７００に提供する。
【００７９】
データ送信システムまたは装置１７００は、エンコーダ１７０２およびエンコードされた信号を送信できる送信機１７０４を含む。エンコーダ１７０２はプロセッサ１７０１からデータ情報を受領する。エンコーダ１７０２はエンコードされた信号（単数または複数）を生成する。エンコーダ１７０２のエントロピー符号化エンジンはたとえば、算術符号化またはハフマン符号化であってもよい。
【００８０】
エンコーダ１７０２は、たとえば、さまざまな情報を受領して記憶または送信のために構造化されたフォーマット中にアセンブルするアセンブリー・ユニットを含む、諸サブモジュールを含んでいてもよい。さまざまな情報とは、たとえば、符号化されたまたは符号化されていないビデオならびにたとえばサブストリーム長指示子およびシンタックス要素のような符号化されたまたは符号化されていない要素を含んでいてもよい。いくつかの実装では、エンコーダ１７０２はプロセッサ１７０１を含み、よってプロセッサ１７０１の動作を実行する。
【００８１】
送信機１７０４は、エンコーダ１７０２からエンコードされた信号（単数または複数）を受領し、該エンコードされた信号を一つまたは複数の出力信号において送信する。送信機１７０４はたとえば、エンコードされたピクチャーおよび／またはそれに関係する情報を表わす一つまたは複数のビットストリームを有するプログラム信号を送信するよう適応されていてもよい。典型的な送信機は、たとえば、誤り訂正符号化を提供する、信号中のデータをインターリーブする、信号中のエネルギーをランダム化するおよび変調器１７０６を使って信号を一つまたは複数の搬送波上に変調する、のうちの一つまたは複数のような機能を実行する。送信機１７０４は、アンテナ（図示せず）を含むまたはアンテナとインターフェースをもつことができる。さらに、送信機１７０４の実装は、変調器１７０６に限定されてもよい。
【００８２】
データ送信システムまたは装置１７００は、記憶ユニット１７０８にも通信上結合される。ある実装では、記憶ユニット１７０８はエンコーダ１７０２に結合され、エンコーダ１７０２からのエンコードされたビットストリームを記憶する。もう一つの実装では、記憶ユニット１７０８は送信機１７０４に結合され、送信機１７０４からのビットストリームを記憶する。送信機１７０４からのビットストリームはたとえば、送信機１７０４によってさらに処理された一つまたは複数のエンコードされたビットストリームを含んでいてもよい。記憶ユニット１７０８は、種々の実装では、標準的なDVD、ブルーレイ・ディスク、ハードドライブまたは他の何らかの記憶装置の一つまたは複数である。
【００８３】
ここで図１８を参照するに、上記の特徴および原理が適用されうるデータ受領システムまたは装置１８００が示されている。データ受領システムまたは装置１８００は、たとえば記憶デバイス、衛星、ケーブル、電話線または地上波放送といった多様な媒体を通じて信号を受領するよう構成されていてもよい。信号は、インターネットまたは他の何らかのネットワークを通じて受領されてもよい。
【００８４】
データ受領システムまたは装置１８００は、たとえば、携帯電話、コンピュータ、セットトップボックス、テレビジョンまたはエンコードされたビデオを受領する他の装置であってもよく、たとえば、表示（たとえばユーザーへの表示）、処理または記憶のためにデコードされたビデオ信号を提供する。このように、データ受領システムまたは装置１８００は、その出力を、たとえば、テレビジョンの画面、コンピュータ・モニタ、コンピュータ（記憶、処理または表示のために）または他の何らかの記憶、処理もしくは表示装置に提供してもよい。
【００８５】
データ受領システムまたは装置１８００は、データ情報を受領および処理することができ、該データ情報はたとえば、3Dメッシュ・モデルを含むことができる。データ受領システムまたは装置１８００は、エンコードされた信号、たとえば本願の実装において記述された信号を受領するための受領器を含む。受領器１８０２は、たとえば、3Dメッシュ・モデルおよび／またはテクスチャー画像の一つまたは複数を与える信号、あるいは図１７のデータ送信システム１７００から出力された信号を受領してもよい。
【００８６】
受領器１８０２はたとえば、エンコードされたピクチャーを表わす複数のビットストリームを有するプログラム信号を受領するよう適応されていてもよい。典型的な受領器は、変調されエンコードされたデータ信号を受領する、復調器１８０４を使って一つまたは複数の搬送波からデータ信号を復調する、信号中のエネルギーをランダム化解除する、信号中のデータをインターリーブ解除するおよび信号を誤り訂正復号する、のうちの一つまたは複数のような機能を実行する。受領器１８０２はアンテナ（図示せず）を含むまたはアンテナとインターフェースをもつことができる。受領器１８０２の実装は、復調器１８０４に限定されてもよい。
【００８７】
データ受領システムまたは装置１８００はデコーダ１８０６を含む。受領器１８０２はデコーダ１８０６に受領された信号を与える。受領器１８０２によってデコーダ１８０６に与えられる信号は、一つまたは複数のエンコードされたビットストリームを含んでいてもよい。デコーダ１８０６は、たとえばビデオ情報を含むデコードされたビデオ信号のようなデコードされた信号を出力する。デコーダ１８０６はたとえば、図１６に記述されるデコーダ１６００であってもよい。
【００８８】
データ受領システムまたは装置１８００は、記憶ユニット１８０７にも通信上結合される。ある実装では、記憶ユニット１８０７は受領器１８０２に結合され、受領器１８０２は記憶ユニット１８０７からのビットストリームにアクセスする。もう一つの実装では、記憶ユニット１８０７はデコーダ１８０６に結合され、デコーダ１８０６は記憶ユニット１８０７からのビットストリームにアクセスする。記憶ユニット１８０７からアクセスされるビットストリームは、種々の実装において、一つまたは複数のエンコードされたビットストリームを含む。記憶ユニット１８０７は、種々の実装において、標準的なDVD、ブルーレイ・ディスク、ハードドライブまたは他の何らかの記憶装置の一つまたは複数である。
【００８９】
デコーダ１８０６からの出力データは、ある実装では、プロセッサ１８０８に与えられる。プロセッサ１８０８は、ある実装では、3Dメッシュ・モデル再構成を実行するために構成されるプロセッサである。いくつかの実装では、デコーダ１８０６はプロセッサ１８０８を含み、プロセッサ１８０８の動作を実行する。他の実装では、プロセッサ１８０８は、たとえばセットトップボックスまたはテレビジョンのような下流のデバイスの一部である。
【００９０】
このように、ここでは具体的な機能および側面をもつ一つまたは複数の実装を提供している。特に、エントロピー符号化および復号に関係するいくつかの実装を提供している。階層的なエントロピー符号化および復号は、たとえば3Dメッシュの幾何データ、ランダムな2D座標および変化する統計をもつ任意のデータ源の圧縮などの多様な応用を許容しうる。しかしながら、これらの実装の変形および追加的な応用が考えられており、本開示の範囲内である。記載される実装の機能および側面は他の実装のために適応されてもよい。
【００９１】
本願で記述される実装および機能のいくつかはMPEG  3DGC規格およびその拡張のコンテキストにおいて使われてもよい。さらに、これらの実装および機能は（既存のまたは将来の）別の規格のコンテキストにおいて、あるいは規格に関係ないコンテキストにおいて使われてもよい。
【００９２】
本願の原理の「一つの実施形態」または「ある実施形態」または「一つの実装」または「ある実装」ならびにその他の変形への言及は、その実施形態との関連で記載されている特定の特徴、構造、特性などが本願の原理の少なくとも一つの実施形態に含まれることを意味する。よって、本明細書を通じた随所に現れる「一つの実施形態では」または「ある実施形態では」または「一つの実装では」または「ある実装では」といった句の出現は、必ずしもみな同じ実施形態を指すのではない。
【００９３】
さらに、本願またはその請求項はさまざまな情報を「決定／判別する」ことに言及することがありうる。情報を決定／判別することは、たとえば、該情報を推定する、該情報を計算する、該情報を予測するまたは該情報をメモリから取り出すことの一つまたは複数を含みうる。
【００９４】
たとえば「A/B」「Aおよび／またはB」「AおよびBの少なくとも一つ」の場合のような「／」「および／または」「…の少なくとも一つ」のいずれかの使用は、最初に挙げられるオプション（A）のみの選択、または二番目に挙げられるオプション（B）のみの選択、または両方のオプション（AおよびB）の選択を包含することが意図されている。さらなる例として、「A、Bおよび／またはC」や「A、BおよびCの少なくとも一つ」「A、BまたはCの少なくとも一つ」の場合には、そのような表現は、最初に挙げられるオプション（A）のみの選択、または二番目に挙げられるオプション（B）のみの選択、または三番目に挙げられるオプション（C）のみの選択、または最初と二番目に挙げられるオプション（AおよびB）のみの選択、または最初と三番目に挙げられるオプション（AおよびC）のみの選択、または二番目と三番目に挙げられるオプション（BおよびC）のみの選択、または三つすべてのオプション（AおよびBおよびC）の選択を包含することが意図されている。当業者には明白であろうが、これは、挙げられる項目がいくら多数でも、拡張できる。
【００９５】
さらに、多くの実装はエンコーダ（たとえばエンコーダ１７０２）、デコーダ（たとえばデコーダ１８０６）、デコーダからの出力を処理する後処理器（たとえばプロセッサ１８０８）またはエンコーダに入力を与える前処理器（たとえばプロセッサ１７０１）の一つまたは複数において実装されてもよい。さらに、他の実装が本開示によって考えられている。
【００９６】
本稿に記載される実装は、たとえば、方法またはプロセス、装置、ソフトウェア・プログラム、データ・ストリームまたは信号において実装されてもよい。たとえ単一の形の実装のコンテキストにおいてのみ論じられていたとしても（たとえば方法としてのみ論じられていたとしても）、論じられている特徴の実装は他の形（たとえば装置またはプログラム）でも実装されうる。装置は、たとえば、適切なハードウェア、ソフトウェアおよびファームウェアにおいて実装されてもよい。方法は、プロセッサなどの装置において実装されてもよい。このプロセッサとは、処理装置一般を指し、たとえば、コンピュータ、マイクロコンピュータ、集積回路またはプログラム可能な論理デバイスを含む。プロセッサはまた、通信装置、たとえばコンピュータ、携帯電話、ポータブル／パーソナル・デジタル・アシスタント（「PDA」）およびエンドユーザー間の情報の通信を容易にする他の装置をも含む。
【００９７】
本稿に記載されるさまざまなプロセスおよび特徴の実装は、多様な異なる設備またはアプリケーション、特にたとえばデータ・エンコード、データ・デコード、3Dモデリング、3D再構成および3Dコンピュータ・グラフィクスの他の処理に関連する設備またはアプリケーションにおいて具現されうる。そのような設備の例は、エンコーダ、デコーダ、デコーダからの出力を処理する後処理器、エンコーダに入力を与える前処理器、ビデオ符号化器、ビデオ復号器、ビデオ・コーデック、ウェブ・サーバー、セットトップボックス、ラップトップ、パーソナル・コンピュータ、携帯電話、PDA、ゲーム・コンソールおよび他の通信装置を含む。明らかなはずだが、該設備はモバイルであってもよく、可動乗物に組み込まれていてもよい。
【００９８】
さらに、本方法は、プロセッサによって実行される命令によって実装されてもよく、そのような命令（および／または実装によって生成されるデータ値）は、たとえば集積回路、ソフトウェア担体またはたとえばハードディスク、コンパクトディスケット（「CD」）、光ディスク（たとえばしばしばデジタル多用途ディスクまたはデジタル・ビデオ・ディスクと称されるDVDなど）、ランダム・アクセス・メモリ（「RAM」）または読み出し専用メモリ（「ROM」）などの他の記憶デバイスといったプロセッサ可読媒体上に記憶されていてもよい。命令は、プロセッサ可読媒体上に有体に具現されたアプリケーション・プログラムをなしていてもよい。命令はたとえば、ハードウェア、ファームウェア、ソフトウェアまたは組み合わせであってもよい。命令は、たとえば、オペレーティング・システム、別個のアプリケーションまたは両者の組み合わせに見出されてもよい。したがって、プロセッサは、たとえば、プロセスを実行するよう構成された装置およびプロセスを実行するための命令を有するプロセッサ可読媒体（記憶デバイスなど）を含む装置として特徴付けることができる。さらに、プロセッサ可読媒体は、命令に加えてまたは命令の代わりに、実装によって生成されるデータ値を記憶していてもよい。
【００９９】
当業者には明白であろうが、実装は、たとえば記憶または伝送されうる情報を担持するようフォーマットされた多様な信号を生じうる。該情報はたとえば、方法を実行するための命令、あるいは記載される実装の一つによって生成されるデータを含んでいてもよい。たとえば、信号は、記載される実施形態のシンタックスを書き込むまたは読み出すための規則をデータとして担持するよう、あるいは記載される実施形態によって書き込まれる実際のシンタックス値をデータとして担持するようフォーマットされていてもよい。そのような信号はたとえば、（たとえばスペクトルの電波周波数部分を使って）電磁波としてまたはベースバンド信号としてフォーマットされてもよい。フォーマットすることは、たとえば、データ・ストリームをエンコードすることおよびエンコードされたデータ・ストリームで搬送波を変調することを含んでいてもよい。信号が担持する情報はたとえばアナログ情報またはデジタル情報でありうる。信号は、既知の多様な異なる有線または無線のリンクを通じて伝送されてもよい。信号は、プロセッサ可読媒体上に記憶されてもよい。
いくつかの実装が記述されてきた。それにもかかわらず、さまざまな修正がなされてもよいことは理解されるであろう。たとえば、種々の実装は組み合わされ、補足され、修正され、あるいは除去されて他の実装を生じてもよい。さらに、当業者は、他の構造およびプロセスが開示されているものの代わりに代用されてもよく、結果として得られる実装は、開示されている実装と、少なくとも実質的に同じ機能を実行し、少なくとも実質的に同じ結果を達成することを理解するであろう。よって、これらおよび他の実装は本願によって考えられている。
【図１】
0005905099.tif 000003
【図２】
0005905099.tif 000004
【図３】
0005905099.tif 000005
【図４】
0005905099.tif 000006
【図５】
0005905099.tif 000007
【図６】
0005905099.tif 000008
【図７】
0005905099.tif 000009
【図８】
0005905099.tif 000010
【図９】
0005905099.tif 000011
【図１０】
0005905099.tif 000012
【図１１】
0005905099.tif 000013
【図１２】
0005905099.tif 000014
【図１３】
0005905099.tif 000015
【図１４Ａ】
0005905099.tif 000016
【図１４Ｂ】
0005905099.tif 000017
【図１５】
0005905099.tif 000018
【図１６】
0005905099.tif 000019
【図１７】
0005905099.tif 000020
【図１８】
0005905099.tif 000021