(57)【要約】３Ｄモデルが、「パターンインスタンス」表示を使用してモデル化されることが可能であり、インスタンスコンポーネントが、パターンの変換（たとえば、回転、並進、およびスケール化）として表されることが可能である。回転情報を符号化する際に、量子化誤差がもたらされて、インスタンスの別々の５つの頂点において別々の頂点座標誤差を引き起こす場合がある。頂点座標誤差を効率よく補正するために、符号化器が、頂点座標誤差を補正するための量子化パラメータを決定する。その量子化パラメータは、量子化インデックスをビットストリームの状態で信号伝達される。量子化インデックス、量子化テーブルが、量子化インデックスと量子化パラメータとの間におけるマッピングを示し、頂点座標誤差は、ビットストリームに１０で符号化される。量子化テーブルは、統計データに基づいて構築されることが可能である。復号器において、頂点座標誤差は、量子化パラメータに基づいて復号され、量子化パラメータは、受信された量子化インデックスから決定される。
2016510454.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄモデルを表すビットストリームを生成するための方法であって、
インスタンスに対応する再構築されたインスタンスにアクセスするステップ（３３０）と、
前記インスタンスの頂点と、前記再構築されたインスタンスの対応する頂点との間における頂点座標誤差に基づいて量子化パラメータを決定するステップ（３５０）と、
前記決定された量子化パラメータに応答して量子化インデックスを決定するステップと、
前記量子化インデックスおよび前記頂点座標誤差を前記ビットストリームに符号化するステップ（３６０）と、
を含む、前記方法。
【請求項２】
量子化インデックスを決定する前記ステップは、複数の量子化インデックスと、複数のそれぞれの量子化パラメータとの間におけるマッピングを示すシンタックスに基づく、請求項１に記載の方法。
【請求項３】
前記複数の量子化インデックスと、統計データに基づく前記複数のそれぞれの量子化パラメータとの間におけるマッピングを決定するステップ
をさらに含む、請求項２に記載の方法。
【請求項４】
より小さな量子化インデックスが、前記統計データにおけるさらに頻繁な量子化パラメータに対応する、請求項３に記載の方法。
【請求項５】
前記量子化パラメータは、最大許容誤差にさらに応答して決定される、請求項１に記載の方法。
【請求項６】
前記量子化パラメータは、量子化ビットの数、および量子化ステップサイズのうちの少なくとも１つに対応する、請求項１に記載の方法。
【請求項７】
３Ｄモデルを表すビットストリームを復号するための方法であって、
インスタンスに対応する再構築されたインスタンスにアクセスするステップ（４２０）と、
前記ビットストリームから量子化インデックスを決定するステップ（４３０）と、
前記量子化インデックスに応答して量子化パラメータを決定するステップ（４３０）と、
前記インスタンスの頂点と、前記再構築されたインスタンスの対応する頂点との間における誤差を表す頂点座標誤差を復号するステップ（４４０）と、
前記復号された頂点座標誤差に応答して前記再構築されたインスタンスを改善するステップ（４５０）と、
を含む、前記方法。
【請求項８】
量子化パラメータを決定する前記ステップは、複数の量子化インデックスと、複数のそれぞれの量子化パラメータとの間におけるマッピングを示すシンタックスに基づく、請求項７に記載の方法。
【請求項９】
前記頂点座標誤差は、最大許容誤差にさらに応答して復号される、請求項７に記載の方法。
【請求項１０】
前記量子化パラメータは、量子化ビットの数、および量子化ステップサイズのうちの少なくとも１つに対応する、請求項７に記載の方法。
【請求項１１】
３Ｄモデルを表すビットストリームを生成するための装置（５００）であって、
インスタンスに対応する再構築されたインスタンスを再構築する３Ｄコンポーネント再構築モジュール（５４０）と、
前記インスタンスの頂点と、前記再構築されたインスタンスの対応する頂点との間における頂点座標誤差に基づいて量子化パラメータを決定し、前記決定された量子化パラメータに応答して量子化インデックスを決定する頂点座標誤差量子化パラメータエスティメータ（５６０）と、
前記量子化インデックスおよび前記頂点座標誤差を前記ビットストリームに符号化する頂点座標誤差符号化器（５８０）と、
を含む、前記装置（５００）。
【請求項１２】
前記頂点座標誤差量子化パラメータエスティメータ（５６０）は、複数の量子化インデックスと、複数のそれぞれの量子化パラメータとの間におけるマッピングを示すシンタックスに基づいて量子化インデックスを決定する、請求項１１に記載の装置。
【請求項１３】
前記頂点座標誤差量子化パラメータエスティメータ（５６０）は、前記複数の量子化インデックスと、統計データに基づく前記複数のそれぞれの量子化パラメータとの間における前記マッピングを決定する、請求項１２に記載の装置。
【請求項１４】
より小さな量子化インデックスが、前記統計データにおけるさらに頻繁な量子化パラメータに対応する、請求項１３に記載の装置。
【請求項１５】
前記量子化パラメータは、最大許容誤差にさらに応答して決定される、請求項１１に記載の装置。
【請求項１６】
前記量子化パラメータは、量子化ビットの数、および量子化ステップサイズのうちの少なくとも１つに対応する、請求項１１に記載の装置。
【請求項１７】
３Ｄモデルを表すビットストリームを復号するための装置（６００）であって、
インスタンスに対応する再構築されたインスタンスを再構築する３Ｄコンポーネント再構築モジュール（６３０）と、
前記ビットストリームから量子化インデックスを決定するエントロピー復号器（６１０）と、
前記量子化インデックスに対応する量子化パラメータを決定し、前記インスタンスの頂点と、前記再構築されたインスタンスの対応する頂点との間における誤差を表す頂点座標誤差を復号する頂点座標誤差復号器（６４０）と、
前記復号された頂点座標誤差に応答して前記再構築されたインスタンスを改善する加算器（６５０）と、
を含む、前記装置（６００）。
【請求項１８】
前記頂点座標誤差復号器（６４０）は、複数の量子化インデックスと、複数のそれぞれの量子化パラメータとの間におけるマッピングを示すシンタックスに基づいて量子化パラメータを決定する、請求項１７に記載の装置。
【請求項１９】
頂点座標誤差復号器（６４０）は、最大許容誤差にさらに応答して前記頂点座標誤差を復号する、請求項１７に記載の装置。
【請求項２０】
前記量子化パラメータは、量子化ビットの数、および量子化ステップサイズのうちの少なくとも１つに対応する、請求項１７に記載の装置。
【請求項２１】
請求項１乃至２０のいずれか一項に従って、３Ｄモデルを表すビットストリームを生成または復号するための命令をその上に格納してある、コンピュータ可読記憶媒体。
【請求項２２】
請求項１乃至１０のいずれか一項に従って生成された３Ｄモデルを表すビットストリームをその上に格納してある、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３Ｄモデルを表すビットストリームを生成するための方法および装置、ならびにそのビットストリームを復号するための方法および装置に関する。
【背景技術】
【０００２】
実際の用途においては、多くの３Ｄモデルは、多数の接続されたコンポーネントから構成されている。これらのマルチコンポーネント３Ｄモデルは通常、図１において示されているように、さまざまな変換において多くの反復構造を含む。
【０００３】
入力モデルにおいて反復構造を利用するマルチコンポーネント３Ｄモデルに関する圧縮アルゴリズムが知られている。３Ｄモデルの反復構造が、さまざまな位置、方向、およびスケール化係数において発見される。次いで３Ｄモデルは、「パターンインスタンス」表示へと編成される。パターンが、対応する反復構造の代表的な幾何学図形的配列を示すために使用される。反復構造に属するコンポーネントが、対応するパターンのインスタンスとして示され、パターンＩＤおよび変換情報、たとえば、パターンに関する鏡映、並進、回転、および可能なスケール化によって表されることが可能である。インスタンス変換情報は、たとえば、鏡映部分、並進部分、回転部分、および可能なスケール化部分へと編成されることが可能である。反復的ではない３Ｄモデルのいくつかのコンポーネントが存在する場合があり、それらは、ユニークコンポーネントと呼ばれる。
【０００４】
Ｗ．Ｊｉａｎｇ、Ｋ．Ｃａｉ、およびＪ．Ｔｉａｎによる「Ｖｅｒｔｅｘ  Ｃｏｒｒｅｃｔｉｏｎ  ｆｏｒ  Ｒｏｔａｔｅｄ  ３Ｄ  Ｃｏｍｐｏｎｅｎｔｓ」という名称の、本出願の権利者が所有するＰＣＴ出願（特許文献１、弁理士整理番号ＰＡ１２００１２、以降では「Ｊｉａｎｇ」と呼ぶ）は、その教示が、参照によって本明細書に明確に組み込まれており、３Ｄモデルを符号化および復号する場合の頂点誤差(error:誤り)補正のための方法および装置を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＰＣＴ／ＣＮ２０１２／０７４２８６
【発明の概要】
【０００６】
本発明の原理は、以降で記述されているように、３Ｄモデルを表すビットストリームを生成するための方法であって、インスタンスに対応する再構築されたインスタンスにアクセスするステップと、インスタンスの頂点と、再構築されたインスタンスの対応する頂点との間における頂点座標誤差に基づいて量子化パラメータを決定するステップと、決定された量子化パラメータに応答して量子化インデックスを決定するステップと、量子化インデックスおよび頂点座標誤差をビットストリームに符号化するステップと、を含む、方法を提供する。本発明の原理はまた、これらのステップを実行するための装置を提供する。
【０００７】
本発明の原理は、以降で記述されているように、３Ｄモデルを表すビットストリームを復号するための方法であって、インスタンスに対応する再構築されたインスタンスにアクセスするステップと、ビットストリームから量子化インデックスを決定するステップと、量子化インデックスに応答して量子化パラメータを決定するステップと、インスタンスの頂点と、再構築されたインスタンスの対応する頂点との間における誤差を表す頂点座標誤差を復号するステップと、復号された頂点座標誤差に応答して再構築されたインスタンスを改善する（refine）ステップと、を含む、方法を提供する。本発明の原理はまた、これらのステップを実行するための装置を提供する。
【０００８】
本発明の原理はまた、上述の方法に従って、３Ｄモデルを表すビットストリームを生成または復号するための命令をに格納した、コンピュータ可読記憶媒体を提供する。
【０００９】
本発明の原理はまた、上述の方法に従って生成された３Ｄモデルを表すビットストリームを格納した、コンピュータ可読記憶媒体を提供する。
【図面の簡単な説明】
【００１０】
【図１】多数の接続されているコンポーネントおよび反復構造を伴う例示的な３Ｄモデルを示す図である。
【図２Ａ】パターンを示している絵で表した例を示す図である。
【図２Ｂ】対応するインスタンスおよび再構築されたインスタンスを示している絵で表した例を示す図である。
【図３】本発明の原理の実施形態による、３Ｄモデルのインスタンスを符号化するための一例を示す流れ図である。
【図４】本発明の原理の実施形態による、３Ｄモデルのインスタンスを復号するための一例を示す流れ図である。
【図５】本発明の原理による例示的なインスタンス符号化器を示す図である。
【図６】本発明の原理による例示的なインスタンス復号器を示す図である。
【発明を実施するための形態】
【００１１】
図１において示されているように、３Ｄモデル内には、多くの反復構造が存在する場合がある。３Ｄモデルを効率よく符号化するために、それらの反復構造は、パターンおよびインスタンスへと編成されることが可能であり、インスタンスは、たとえば、パターンＩＤと、並進、回転、およびスケール化などの情報を含む変換マトリックスとを使用して、対応するパターンの変換として表されることが可能である。
【００１２】
インスタンスが、パターンＩＤおよび変換マトリックスによって表されている場合には、そのパターンＩＤおよび変換マトリックスは、そのインスタンスを圧縮する際に圧縮されることになる。したがって、インスタンスは、パターンＩＤおよび復号された変換マトリックスを通じて再構築されることが可能であり、すなわち、インスタンスは、パターンＩＤによってインデックス付けされた復号されたパターンの（復号された変換マトリックスからの）変換として再構築されることが可能である。一実施形態においては、変換マトリックスを符号化する際に、その変換マトリックスの回転部分が、たとえば定数のビットを使用して、量子化されることが可能である。量子化においてもたらされた損失に起因して、復号された回転部分は、元の回転部分とは異なる場合がある。
【００１３】
図２Ａおよび図２Ｂは、例示的なコンポーネントを２Ｄ表示で示しており、コンポーネント２１０および２２０は、パターンであり、（実線の）コンポーネント２５０および２７０は、圧縮されることになる元のインスタンスであり、（破線の）コンポーネント２６０および２８０は、再構築されたインスタンスである。とりわけ、インスタンス２５０および２７０は、それぞれパターン２１０および２２０の変換された（すなわち、回転および並進された）バージョンとして表されることが可能である。
【００１４】
図２Ｂの例においては、回転の量子化は、約５°の誤差をもたらしており、したがって、元のインスタンスと、再構築されたインスタンスとの間における差を引き起こしている。図２Ｂにおいて見て取られることが可能であるように、（角度における）回転誤差は、インスタンス２５０および２７０に関して同様であるが、回転量子化によって引き起こされた頂点座標誤差（すなわち、元のインスタンスと、再構築されたインスタンスとの間における、たとえば、図２ＢのＡからＡ’への、ＢからＢ’への頂点ずれ）は、両方のインスタンスの間において大幅に異なっており、インスタンス２７０は、はるかに大きな頂点座標誤差を有している。したがって、再構築されたコンポーネントの品質は、一貫していない場合があり、たとえば、より大きなインスタンスが、より小さなインスタンスよりも低い再構築品質を有する場合がある。
【００１５】
Ｊｉａｎｇにおいては、頂点座標誤差を効率よく補正するために、頂点の頂点座標誤差に関して上側の境界が推定されることが可能である。上側の境界に基づいて、コーデックは、頂点の頂点座標誤差が補正される必要があるかどうかを決定し、補正が必要とされる場合には、頂点座標誤差を補正するための量子化パラメータを決定する。上側の境界は、符号化器および復号器の両方において推定されることが可能であり、ひいては、頂点座標誤差補正が使用されるかどうかを示すために、または頂点座標誤差に関する量子化パラメータを示すために、明示的な信号伝達（signaling:シグナリング）は必要とされない。
【００１６】
本発明の原理はまた、回転量子化によって引き起こされた頂点座標誤差を効率よく補正するための方法および装置を提供する。復号器における計算負荷を低減するために、量子化パラメータが、ビットストリームの状態で信号伝達される。一実施形態においては、量子化テーブルを介して、頂点座標誤差を量子化するために使用される量子化ビットの数に対応するインデックスが、ビットストリームの状態で送信される。
【００１７】
図３は、３Ｄモデルのインスタンスを符号化するための例示的な方法３００を示している。方法３００は、ステップ３０５において開始する。ステップ３１０において、３Ｄモデルデータが入力され、初期化が実行される。変換マトリックスの並進部分および回転部分に関する品質パラメータ、最大許容頂点座標誤差、量子化パラメータなど、さらなるデータが入力されること、またはその入力から推測されることも可能である。例示的な一実施形態においては、初期化ステップは、反復構造をパターンおよびインスタンスへと編成すること、インスタンスに関する変換マトリックスを生成すること、ならびにパターンを符号化して、再構築されたパターンを形成することが可能である。符号化されることになる特定のインスタンス（Ｃとして示される）に関して、対応する元のパターン、再構築されたパターン、および変換マトリックスは、それぞれＰ、Ｐ’、およびＴとして示される。インスタンスは、パターンの変換として正確に表されることが可能であり、すなわち、Ｃ＝ＴＰであることが可能である。あるいは、パターンの変換は、いくつかの状況のもとではインスタンスの近似値であることが可能であり、すなわち、Ｃ≒ＴＰである。
【００１８】
変換マトリックス（Ｔ）が、ステップ３２０において符号化される。次いでステップ３３０において、符号化された変換マトリックスが、Ｔ’として復号され、インスタンスが、たとえば、対応する再構築されたパターンおよび復号された変換マトリックスを使用して再構築される（Ｃ’＝Ｔ’Ｐ’）。
【００１９】
ステップ３４０において、再構築されたインスタンス内の頂点（Ｖi’）と、元のインスタンス内の対応する頂点（Ｖi）との間における頂点座標誤差（Ｅi）が、たとえば、Ｅi＝Ｖi−Ｖi’として計算される。頂点座標誤差を符号化するために、量子化パラメータが、ステップ３５０において推定される。頂点座標誤差が、ステップ３６０において量子化およびコード化される。加えて、量子化パラメータが、ビットストリームの状態で信号伝達される。ステップ３７０において、さらなる頂点が処理される必要があるかどうかをチェックする。さらなる頂点が処理されることになる場合には、コントロールは、ステップ３４０へ返される。そうでない場合には、コントロールは、終了ステップ３９９へ渡される。
【００２０】
量子化パラメータを効率よく信号伝達するために、実際の量子化パラメータよりもむしろ、量子化パラメータのインデックスをビットストリームに符号化することが可能である。量子化ビットの数を例示的な量子化パラメータとして使用して、量子化プロセスが、さらに詳細に論じられる。本発明の原理は、その他の量子化パラメータ（たとえば、量子化ステップサイズ、ただし、それに限定されない）が使用される場合に適用されることも可能である。
【００２１】
【表１】
2016510454.tif 000003
【００２２】
テーブル１は、例示的な量子化テーブルを示しており、量子化ビットの数が、量子化インデックスにマッピングされている。具体的には、
ＱＢｔａｂｌｅ［０］＝２；
ＱＢｔａｂｌｅ［１］＝４；
ＱＢｔａｂｌｅ［２］＝５；
ＱＢｔａｂｌｅ［３］＝６。
【００２３】
ＭａｘＥｒｒｏｒＡｌｌｏｗを、ユーザによって提供された品質必要条件（すなわち、最大許容頂点座標誤差）として示し、Ｅｒｒｏｒを、特定の頂点に関する、元のインスタンスの頂点座標と再構築されたインスタンスの頂点座標との間における差として示す。特定の頂点に関して、頂点座標誤差を量子化するために必要とされるビットの最初の数を下記のように推定する。
ＱＢ＝ｃｅｉｌ［ｌｏｇ２（Ｅｒｒｏｒ／ＭａｘＥｒｒｏｒＡｌｌｏｗ）］    （１）
次いで、ＱＢに最も近い量子化ビットの数を探して量子化テーブルを検索する。たとえば、ＱＢ＝７である場合には、量子化インデックス３（ＱＢｔａｂｌｅ［３］＝６）が、対応する量子化インデックスとして選択され、ＱＢは、６にセットされる。その後に、Ｅｒｒｏｒ／ＭａｘＥｒｒｏｒＡｌｌｏｗがＱＢビットのバイナリーコードに量子化される。次いで、量子化インデックスおよびバイナリーコードがビットストリームに符号化される。テーブル１から見て取られることが可能であるように、量子化インデックスの値は通常、量子化ビットの対応する数よりも小さく、送信するために必要とするビットは、より少なくてよい。したがって、量子化ビットの数を直接送ることよりもむしろ、量子化インデックスを送ることが、ビットレートを低減することを可能にする。
【００２４】
復号器において、最大許容誤差（ＭａｘＥｒｒｏｒＡｌｌｏｗ）および量子化テーブルが、ビットストリームから導出されることが可能である。頂点に関して、量子化インデックスが、ビットストリームから受信され、量子化ビットＱＢの数が、量子化インデックスおよび量子化テーブルから決定されることが可能である。次いで、量子化された頂点座標誤差Ｑ＿ｖａｌｕｅが、ビットストリームからＱＢビットとして読み出されることが可能である。頂点座標誤差は、下記のように計算されることが可能である。
Ｅｒｒｏｒ’＝ＭａｘＥｒｒｏｒＡｌｌｏｗ＊Ｑ＿ｖａｌｕｅ    （２）
たとえば、量子化された頂点座標誤差を表す量子化インデックスおよびバイナリーコードが、連続してビットストリームに符号化されており、それらが「１０１０１００１１１．．．」であると想定する。量子化インデックスが、２ビットを用いて符号化されている場合には、量子化インデックス「１０」＝２を得る。テーブル１において示されている量子化テーブルが使用されている場合には、量子化ビットの数は、ＱＢｔａｂｌｅ［２］＝５として導出されることが可能である。その後に、「１０１００」という５ビットをビットストリームから読み出し、量子化された頂点座標誤差を、Ｑ＿ｖａｌｕｅ＝「１０１００」＝２０として決定する。したがって、Ｅｒｒｏｒ’＝ＭａｘＥｒｒｏｒＡｌｌｏｗ＊２０である。
【００２５】
上述のように、量子化テーブルは、ビットストリーム状態の量子化パラメータを示すために使用される。一実施形態においては、量子化テーブルは、メタデータまたはユーザ入力によって指定されることが可能である。別の実施形態においては、量子化テーブルは、統計データに基づいて構築されることが可能である。
【００２６】
たとえば、別々の３Ｄモデルからの大量のコンポーネントからの別々の頂点を使用して、方程式（１）に基づいて、ＱＢの値を計算することができる。ＱＢ値の大きなセットを得た後には、ｎ個の最も頻繁に生じたＱＢ値を、ＱＢテーブルの要素として選ぶことができる。ｎ個の最も頻繁に生じたＱＢ値を、ＱＢ0、ＱＢ1、．．．、ＱＢn-1として示す場合には、量子化テーブルは、テーブル２において示されているように例示されることが可能である。量子化インデックスを符号化するために固定長コーディングが使用される場合には、ＱＢ0＜ＱＢ1＜．．．＜ＱＢn-1であるようにテーブルを構築することができる。量子化インデックスを符号化するために可変長コーディングが使用される場合には、量子化インデックスを送るために使用されるデータの量を低減するために、Ｐｒｏｂ（ＱＢ0）＞Ｐｒｏｂ（ＱＢ1）＞．．．＞Ｐｒｏｂ（ＱＢn-1）であるように量子化テーブルをセットアップすることができる。すなわち、量子化ビットのさらに可能性の高い数は、より小さなインデックスに対応し、より小さなインデックスは通常、符号化を行うために必要とするビットがより少ない。
【００２７】
【表２】
2016510454.tif 000004
【００２８】
図４は、３Ｄモデルのインスタンスを復号するための例示的な方法４００を示している。方法４００の入力は、ビットストリーム、たとえば、方法３００を使用して生成されたビットストリームを含むことができる。さらなるデータ、たとえば、復号されることになるインスタンスに対応する再構築されたパターン（Ｐ’）が、入力として含まれることも可能である。方法４００は、ステップ４０５において開始する。ステップ４１０において、初期化が実行され、たとえば、変換マトリックスに関する量子化パラメータおよび品質パラメータが、入力ビットストリームから導出され、最大許容頂点座標誤差が、品質パラメータから計算される。
【００２９】
ステップ４２０において、変換マトリックスが、Ｔ’として復号され、インスタンスが、たとえば、対応する再構築されたパターンおよび復号された変換マトリックスを使用して、Ｃ’として再構築される（Ｃ’＝Ｔ’Ｐ’）。ステップ４３０において、量子化パラメータ、たとえば、量子化ビット（ＱＢ）の数が、ビットストリームから決定される。符号化された頂点座標誤差が、ステップ４４０において復号され、たとえば、ＱＢビットが、ビットストリームから読み出され、頂点座標誤差が、方程式（２）を使用して計算される。ステップ４５０においては、復号された頂点座標誤差（Ｅi’）が、ステップ４２０において最初に再構築されたインスタンスの対応する頂点（Ｖi’）を、たとえばＶi’’＝Ｖi’＋Ｅi’として補正するために使用される。すなわち、再構築されたインスタンスの頂点が改善される。方法４００は、ステップ４９９において終了する。
【００３０】
頂点座標誤差が補正されるかどうかを示すために、頂点座標誤差補正フラグが使用されることが可能である。このフラグは、符号化器および復号器の両方において知られているべきである。このフラグが１にセットされている場合には、誤差補正が使用される。そうでない場合には、頂点座標誤差補正は使用されない。具体的には、方法３００および４００が使用される場合に、このフラグが０であるならば、方法３００におけるステップ３４０〜３７０、およびステップ４３０〜４６０は、必要とされない。
【００３１】
例示的な一実施形態においては、３Ｄモデルを表すビットストリームの復号プロセスは、下記の疑似コードを使用して記述されることが可能である。
ｖｏｉｄ  ＰＢ３ＤＭＣ＿Ｄｅｃｏｄｅｒ（）
｛
ＰＢ３ＤＭＣ＿ｓｔｒｅａｍ＿ｈｅａｄｅｒを読み出す；
ｉｆ（ｕｎｉ＿ｐａｒｔ＿ｂｉｔ＝＝０＆＆ｒｅｐｅａｔ＿ｓｔｒｕｃ＿ｂｉｔ＝＝０）
｛
３ｄ＿ｍｏｄｅｌ＿ｃｏｍｐｒ＿ｍｏｄｅによって示される復号器を使用して、３Ｄモデルを復号する；
｝
ｅｌｓｅ
｛
ｉｆ（ｕｎｉ＿ｐａｒｔ＿ｂｉｔ＝＝１）
｛
３ｄ＿ｍｏｄｅｌ＿ｃｏｍｐｒ＿ｍｏｄｅによって示される復号器を使用して、ユニーク部分を復号する；
接続に基づいてトラバーサルによって、別々のユニークコンポーネントを分離する；
ユニークコンポーネントの並進ベクトルを復号する；
すべての再構築されたユニークコンポーネントをそれらの位置へと並進させることによって、ユニーク部分を再構築する；
｝
ｉｆ（ｒｅｐｅａｔ＿ｓｔｒｕｃ＿ｂｉｔ＝＝１）
｛
Ｒｅｐｅａｔ＿Ｓｔｒｕｃ＿Ｄｅｃｏｄｅｒ（）；
｝
｝
｝
ｖｏｉｄ  Ｒｅｐｅａｔ＿Ｓｔｒｕｃ＿Ｄｅｃｏｄｅｒ（）
｛
すべてのパターンを復号する；
ｉｆ（ｓｙｍ＿ｉｎｓｔａｎｃｅ＿ｎｕｍ＞０）
｛
すべての対称インスタンスを復号する；
すべてのステッチング情報を復号する；
｝
対称構造を含むすべての接続されていない反復構造パターンおよびユニークコンポーネントを、復元されたパターン、対称インスタンス、およびステッチング情報を使用して再構築する；
対称構造を含むすべての接続されていない反復構造パターンおよびユニークコンポーネントの並進ベクトルを復号する；
対称構造を含むすべての接続されていない反復構造パターンおよびユニークコンポーネントに対応するコンポーネントを、復号された並進ベクトルを使用して再構築する；
ｉｆ（ｉｎｓｔａ＿ｔｒａｎｓ＿ｅｌｅｍ＿ｂｉｔ＝＝１）
｛
Ｉｎｓｔａｎｃｅ＿Ｅｌｅｍｅｎｔａｒｙ＿Ｍｏｄｅ＿Ｄｅｃｏｄｅｒ（）；
｝
ｅｌｓｅ
｛
Ｉｎｓｔａｎｃｅ＿Ｇｒｏｕｐｅｄ＿Ｍｏｄｅ＿Ｄｅｃｏｄｅｒ（）；
｝
｝
ｖｏｉｄ  Ｉｎｓｔａｎｃｅ＿Ｅｌｅｍｅｎｔａｒｙ＿Ｍｏｄｅ＿Ｄｅｃｏｄｅｒ（）
｛
ｆｏｒ（ｉ＝０；ｉ＜ｎｕｍＩｎｓｔａｎｃｅ；ｉ＋＋）
｛
ｅｌｅｍ＿ｉｎｓｔａ＿ＱＰ＿ｔｒａｎｓｌａｔｉｏｎ＿ｆｌａｇを読み出す；
ｅｌｅｍ＿ｉｎｓｔａ＿ＱＰ＿ｒｏｔａｔｉｏｎ＿ｆｌａｇを読み出す；
ｉｆ（ｅｌｅｍ＿ｉｎｓｔａ＿ＱＰ＿ｔｒａｎｓｌａｔｉｏｎ＿ｆｌａｇ＝＝１）
｛
ｅｌｅｍ＿ＱＰ＿ｔｒａｎｓｌａｔｉｏｎを復号する；
｝
ｅｌｓｅ
｛
ｅｌｅｍ＿ＱＰ＿ｔｒａｎｓｌａｔｉｏｎ＝ＱＰ＿Ｔｒａｎｓｌａｔｉｏｎ；
｝
ｉｆ（ｅｌｅｍ＿ｉｎｓｔａ＿ＱＰ＿ｒｏｔａｔｉｏｎ＿ｆｌａｇ＝＝１）
｛
ｅｌｅｍ＿ＱＰ＿ｒｏｔａｔｉｏｎを復号する；
｝
ｅｌｓｅ
｛
ｅｌｅｍ＿ＱＰ＿ｒｏｔａｔｉｏｎ＝ＱＰ＿ｒｏｔａｔｉｏｎ；
｝
ｉｄＰａｔｔｅｒｎを復号する；
ｅｌｅｍ＿ｉｎｓｔａ＿ｆｌｉｐ＿ｆｌａｇを読み出す；
ｅｌｅｍ＿ｉｎｓｔａ＿ｒｅｆｌｅｃｔｉｏｎ＿ｆｌａｇを読み出す；
ｅｌｅｍ＿ｉｎｓｔａ＿ａｔｔｒｉｂｕｔｅ＿ｈｅａｄｅｒを読み出す；
ＱＢ＿ｔｒａｎｓｌａｔｉｏｎであるパラメータを有する固定長復号器によって、インスタンス並進ベクトルを復号する；
ＱＢ＿ｒｏｔａｔｉｏｎであるパラメータを有する固定長復号器によって、オイラー角を復号する；
復号されたオイラー角を使用して、回転マトリックスを復元する；
ｉｆ（ｕｓｉｎｇ＿ｓｃａｌｉｎｇ＿ｂｉｔ＝＝１）
スケール化係数を復号する；
ｉｆ（ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｅｎａｂｌｅ＿ｂｉｔ＝＝１）
｛
ｅｌｅｍ＿ｉｎｓｔａ＿ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｆｌａｇを読み出す；
ｉｆ（ｅｌｅｍ＿ｉｎｓｔａ＿ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｆｌａｇ＝＝１）
誤差補正データを復号する；
｝
ｉｄＰａｔｔｅｒｎによって示されているパターンと、復元された並進ベクトルと、復元された回転マトリックスと、もしあれば鏡映変換と、もしあればスケール化係数と、もしあれば誤差補正データとによって、現在のインスタンスの幾何学図形的配列を復元する；
ｉｆ（ｅｌｅｍ＿ｉｎｓｔａ＿ｆｌｉｐ＿ｆｌａｇ＝＝１）
現在のインスタンスのすべての三角形を反転させる；
現在のインスタンスの属性データを復号する；
｝
｝
ｖｏｉｄ  Ｉｎｓｔａｎｃｅ＿Ｇｒｏｕｐｅｄ＿Ｍｏｄｅ＿Ｄｅｃｏｄｅｒ（）
｛
すべてのインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｔｒａｎｓｌａｔｉｏｎ＿ｆｌａｇを読み出す；
すべてのインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｒｏｔａｔｉｏｎ＿ｆｌａｇを読み出す；
１であるｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｔｒａｎｓｌａｔｉｏｎ＿ｆｌａｇを有するインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｔｒａｎｓｌａｔｉｏｎを復号する；
１であるｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｒｏｔａｔｉｏｎ＿ｆｌａｇを有するインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ＱＢ＿ｒｏｔａｔｉｏｎを復号する；
ｃｏｍｐｒ＿ｉｎｓｔａ＿ｐａｔｔｅｒｎＩＤ＿ｈｅａｄｅｒを読み出す；
すべてのインスタンスのパターンＩＤを復号する；
すべてのインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ｆｌｉｐ＿ｆｌａｇを読み出す；
すべてのインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ｒｅｆｌｅｃｔｉｏｎ＿ｆｌａｇを読み出す；
ｃｏｍｐｒ＿ｉｎｓｔａ＿ｔｒａｎｓｌ＿ｈｅａｄｅｒを読み出す；
八分木分解ベースの復号器によって、すべてのインスタンスの並進ベクトルを復号する；
ｃｏｍｐｒ＿ｉｎｓｔａ＿ｒｏｔａｔ＿ｈｅａｄｅｒを読み出す；
すべてのインスタンスのオイラー角を復号する；
すべてのインスタンスの回転マトリックスを復元する；
ｉｆ（ｕｓｅ＿ｓｃａｌｉｎｇ＿ｂｉｔ＝＝１）
｛
ｃｏｍｐｒ＿ｉｎｓｔａ＿ｓｃａｌｉｎｇ＿ｈｅａｄｅｒを読み出す；
すべてのインスタンスのスケール化係数を復号する；
｝
ｉｆ（ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｅｎａｂｌｅ＿ｂｉｔ＝＝１）
｛
すべてのインスタンスのｅｌｅｍ＿ｉｎｓｔａ＿ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｆｌａｇを読み出す；
ｆｏｒ（ｉ＝０；ｉ＜ｎｕｍＩｎｓｔａｎｃｅ；ｉ＋＋）
｛
ｉｆ（対応するｅｌｅｍ＿ｉｎｓｔａ＿ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｆｌａｇが１である）
現在のインスタンスに関する誤差補正データを復号する；
｝
｝
復元されたパターンと、復元された並進ベクトルと、復元された回転マトリックスと、もしあれば鏡映変換と、もしあればスケール化係数と、もしあれば誤差補正データとによって、すべてのインスタンスの幾何学図形的配列を復元する；
もしあれば、すべてのインスタンスの属性データを復号する；
｝
【００３２】
テーブル３においては、量子化テーブルに関して例示的なシンタックスおよびセマンティクスが示されており、それは、ビットストリームヘッダ内に含まれることが可能である。
【００３３】
【表３】
2016510454.tif 000005
【００３４】
ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｅｎａｂｌｅ＿ｂｉｔ：  この１ビット符号なし整数は、ビットストリーム内のいくつかのインスタンスに関して圧縮されたコーディング誤差補正データのデータフィールドがあるか否かを示す。０は、ビットストリーム内のインスタンスの圧縮されたコーディング誤差補正データのデータフィールドがないということを意味し、１は、ビットストリーム内のいくつかのインスタンスの圧縮されたコーディング誤差補正データのデータフィールドがあるということを意味している。このビットは、方法３００および４００に関して前述されている頂点座標誤差補正フラグに対応する。
ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ＱＢ＿ｔａｂｌｅ：  誤差補正モードがアクティブ化されている場合には、それぞれの頂点に関する補正される値の量子化ビットの数が、符号化器において適応的に決定されることが可能である。符号化器は、量子化ビットの数そのものの代わりに量子化ビットの数のインデックスをビットストリームの状態で送信する。復号器は、量子化テーブルをルックアップして、量子化ビットの数を決定する。テーブル内には、４つの事前に定義された量子化ビットがあり、それらはそれぞれ、１つの５ビット符号なし整数によって表されている。
【００３５】
テーブル４においては、頂点誤差補正データに関して例示的なシンタックスおよびセマンティクスが示されている。この例においては、ｃｏｍｐｒ＿ｅｌｅｍ＿ｉｎｓｔａ＿ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ｄａｔａというクラスが、ｉ番目のインスタンスの圧縮された頂点誤差補正データを含む。
【００３６】
【表４】
2016510454.tif 000006
【００３７】
ｅｌｅｍ＿ｃｏｍｐｅｎ＿ｅｒｒ＿ＱＢ＿ｉｄ：  この２ビット符号なし整数は、ｅｒｒｏｒ＿ｃｏｍｐｅｎ＿ＱＢ＿ｔａｂｌｅ内のインスタンスのｊ番目の頂点に関する量子化ビットの数のインデックスを示す。
ｃｏｍｐｒ＿ｖｅｒ＿ｃｏｍｐｅｎ＿ｅｒｒ＿ｄａｔａ：  このデータフィールドは、インスタンスのｊ番目の頂点の圧縮された補正された値を含む。
【００３８】
図５は、例示的なインスタンス符号化器５００のブロック図を示している。装置５００の入力は、符号化されることになるインスタンス（Ｃ）と、対応するパターン（Ｐ）および再構築されたパターン（Ｐ’）と、変換マトリックスＴと、品質パラメータと、変換マトリックスに関する量子化パラメータとを含むことができる。
【００３９】
変換マトリックス符号化器５１０が、変換マトリックスＴを、たとえば、その変換マトリックスの別々の部分に関する量子化パラメータに基づいて符号化する。変換マトリックス復号器５３０が、符号化器５１０の出力を復号して、再構築された変換マトリックスＴ’を得る。対応する再構築されたパターンＰ’およびＴ’を使用して、３Ｄコンポーネント再構築モジュール５４０においてＣ’＝Ｔ’Ｐ’としてインスタンスが再構築されることが可能である。加算器５７０は、元のインスタンスと、再構築されたインスタンスとの間における差を、たとえば、Ｅ＝Ｃ−Ｃ’として取る。
【００４０】
頂点座標誤差Ｅに基づいて、頂点座標誤差量子化パラメータエスティメータ５６０が、たとえば、方程式（１）を使用して、頂点座標誤差符号化器５５０において頂点座標誤差を量子化するための量子化パラメータを推定する。量子化パラメータエスティメータ５６０はさらに、推定された量子化パラメータに関する対応するインデックスを量子化テーブルから入手することができ、量子化パラメータは、量子化インデックスに基づいて調整されることが可能である。変換マトリックス符号化器５１０および頂点座標誤差符号化器５５０の出力、ならびに量子化インデックスは、ビットストリームアセンブラ５２０によってビットストリーム内に集められ、そのビットストリームは、パターンを表すその他のビットストリームまたはその他のコンポーネントと結合されて、３Ｄモデルに関する全体的なビットストリームを形成することが可能である。
【００４１】
図６は、例示的なインスタンス復号器６００のブロック図を示している。装置６００の入力は、インスタンス（Ｃ）に対応するビットストリーム、たとえば、方法３００に従って、または符号化器５００によって生成されたビットストリームと、対応する再構築されたパターン（Ｐ’）とを含むことができる。エントロピー復号器６１０が、ビットストリームを復号して、たとえば、量子化された頂点座標誤差、変換マトリックスのために使用される量子化パラメータ、ならびに、頂点座標誤差補正のために使用される量子化テーブルおよび量子化インデックスを得る。
【００４２】
変換マトリックス復号器６２０が、変換マトリックスＴ’を、たとえば、その変換マトリックスの別々の部分に関する量子化パラメータに基づいて再構築する。対応する再構築されたパターンＰ’およびＴ’を使用して、３Ｄコンポーネント再構築モジュール６３０においてＣ’＝Ｔ’Ｐ’としてインスタンスが再構築されることが可能である。
【００４３】
頂点座標誤差復号器６４０が、量子化パラメータを、たとえば、量子化インデックスおよび量子化テーブルに基づいて導出する。それは次いで、頂点座標誤差を復号することができる。復号された頂点座標誤差Ｅ’は、３Ｄコンポーネント再構築モジュール６３０において最初に再構築されたインスタンスを改善するために使用される。とりわけ、加算器６５０は、復号された座標誤差（Ｅ’）と、最初の再構築されたインスタンス（Ｃ’）とを、たとえば、Ｃ’’＝Ｃ’＋Ｅ’として合計する。Ｃ’’は通常、最初の再構築されたインスタンスＣ’よりも、元のインスタンスのさらに正確な表示を提供する。
【００４４】
本出願において記述されている実施態様および特徴のうちのいくつかは、ＭＰＥＧ  ３ＤＧＣ標準およびその拡張というコンテキストにおいて使用されることが可能である。
【００４５】
本明細書において記述されている実施態様は、たとえば、方法もしくはプロセス、装置、ソフトウェアプログラム、データストリーム、または信号において実施されることが可能である。たとえ、単一の形式の実施態様のコンテキストにおいて論じられているだけである（たとえば、方法としてのみ論じられている）としても、論じられている特徴の実施態様は、その他の形式（たとえば、装置またはプログラム）において実施されることも可能である。装置は、たとえば、適切なハードウェア、ソフトウェア、およびファームウェアにおいて実施されることが可能である。これらの方法は、たとえば装置、たとえばプロセッサ（一般には、処理デバイスを指し、たとえば、コンピュータ、マイクロプロセッサ、集積回路、またはプログラマブルロジックデバイスを含む）などにおいて実施されることが可能である。プロセッサはまた、通信デバイス、たとえば、コンピュータ、携帯電話、携帯情報端末（「ＰＤＡ」）、および、エンドユーザどうしの間における情報の通信を容易にするその他のデバイスなどを含む。
【００４６】
本発明の原理の「一実施形態」もしくは「実施形態」または「一実施態様」もしくは「実施態様」、ならびにそれらのその他の変形形態への言及は、その実施形態に関連して記述されている特定の機能、構造、特徴などが、本発明の原理の少なくとも１つの実施形態に含まれているということを意味する。したがって、「一実施形態においては」もしくは「実施形態においては」または「一実施態様においては」もしくは「実施態様においては」という語句、ならびにその他の任意の変形形態が、本明細書を通じてさまざまな個所に登場しても、それらは、必ずしもすべて同じ実施形態を指しているとは限らない。
【００４７】
加えて、本出願またはその特許請求の範囲は、さまざまな情報を「決定すること」に言及する場合がある。情報を決定することは、たとえば、情報を推定すること、情報を計算すること、情報を予測すること、または情報をメモリから取り出すことのうちの１または複数を含むことができる。
【００４８】
さらに、本出願またはその特許請求の範囲は、さまざまな情報に「アクセスすること」に言及する場合がある。情報にアクセスすることは、たとえば、情報を受信すること、情報を（たとえば、メモリから）取り出すこと、情報を格納すること、情報を処理すること、情報を送信すること、情報を移動すること、情報をコピーすること、情報を消去すること、情報を計算すること、情報を決定すること、情報を予測すること、または情報を推定することのうちの１または複数を含むことができる。
【００４９】
加えて、本出願またはその特許請求の範囲は、さまざまな情報を「受信すること」に言及する場合がある。受信することは、「アクセスすること」と同様に、幅広い用語であることを意図されている。情報を受信することは、たとえば、情報にアクセスすること、または情報を（たとえば、メモリから）取り出すことのうちの１または複数を含むことができる。さらに、「受信すること」は、典型的には、たとえば、情報を格納すること、情報を処理すること、情報を送信すること、情報を移動すること、情報をコピーすること、情報を消去すること、情報を計算すること、情報を決定すること、情報を予測すること、または情報を推定することなどの動作中に、何らかの形で含まれる。
【００５０】
当業者にとっては明らかであろうが、実施態様は、たとえば、格納または送信されることが可能である情報を搬送するようにフォーマット設定されたさまざまな信号を生成することができる。それらの情報は、たとえば、方法を実行するための命令、または記述されている実施態様のうちの１つによって生成されたデータを含むことができる。たとえば、信号は、記述されている実施形態のビットストリームを搬送するようにフォーマット設定されることが可能である。そのような信号は、たとえば、電磁波として（たとえば、スペクトルの無線周波数部分を使用して）、またはベースバンド信号としてフォーマット設定されることが可能である。フォーマット設定することは、たとえば、データストリームを符号化すること、およびその符号化されたデータストリームを用いて搬送波を変調することを含むことができる。信号が搬送する情報は、たとえば、アナログ情報またはデジタル情報であることが可能である。知られているように、信号は、さまざまな異なる有線リンクまたはワイヤレスリンクを介して送信されることが可能である。信号は、プロセッサ可読メディア上に格納されることが可能である。
【図１】
2016510454.tif 000007
【図２Ａ】
2016510454.tif 000008
【図２Ｂ】
2016510454.tif 000009
【図３】
2016510454.tif 000010
【図４】
2016510454.tif 000011
【図５】
2016510454.tif 000012
【図６】
2016510454.tif 000013
【国際調査報告】
2016510454.tif 000014
2016510454.tif 000015