(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
反復構造の発見時には、形状のみがチェックされる。1インスタンスは、プロパティ・データを対応するパターンと共有するか、又はそれ自体のプロパティ・データを有することが可能である。インスタンスのプロパティは、パターンとプロパティを共有しない場合、別々に圧縮されることになる。
【0013】
インスタンス変換は、反転部分、回転部分、並進(translation)部分、及び可能スケーリング部分の、4つの部分に分割することができる。4つの部分は別々に圧縮される。
【0014】
すべてのパターンは、より多くのビットレート節約を達成するために、まとめて圧縮される。復号時、パターンは、インスタンスの復元前に互いに分離される必要がある。
【0015】
図3及び
図4は、本原理の態様を実装するのに適した例示のエンコーダ及びデコーダを示す。エンコーダ及びデコーダの詳細は、出願人の共有するPCT出願WO2010149492及びPCT/CN2011/076991で提供されており、その説明は、参照により本明細書に明示的に組み込まれている。当業者であれば理解されるように、こうした3Dレンダリングが必要とされる様々な実施形態に柔軟性を提供するために、コーデックはハードウェア、ソフトウェア、又はファームウェア、或いはこれらのモダリティの組み合わせで実装可能である。特定用途向け集積回路(ASIC)、プログラマブル・アレイ論理回路、ディスクリート半導体回路、及びプログラマブル・デジタル信号処理回路、とりわけ、一時的又は持続的なコンピュータ読み取り可能媒体は、すべて、本発明を実装するために使用可能である。これらはすべて、本発明の可能な実装の非限定的な例であり、当業者であれば、他の実施形態が実現可能であることを理解されよう。
【0016】
2インスタンス圧縮モード
ビットストリームがすべてのインスタンス・データを埋め込むことを望む一方で、効率的であり、時にはビットストリーム・サイズ又は復号効率又は誤り耐性のいずれかが最も重要ないくつかの適用例に対処することも望む。
【0017】
したがって本発明者等は、パターンの1インスタンスのデータ、すなわちそのパターンID(たとえば、第1のパターンには1、第2のパターンには2、というように、パターン圧縮データ・ストリーム内のパターンの実際の位置であるID)、その反転変換部分(F)、その並進変換部分(T)、その回転変換部分(R)、及びそのスケーリング変換部分(S)を、いかにしてビットストリーム内に入れるかについて、2つのオプションを提案する。どちらもそれら独自の長所及び短所を有する。
【0018】
オプション(A)基本インスタンス・データ・モード(ID、F、T、R、S、ID、F、T、R、S・・・):このモードを使用すると、1インスタンスのパターンID、反転変換部分、並進変換部分、回転変換部分、及びスケーリング変換部分は、ビットストリーム内にまとめてパックされる。
長所:
・誤り耐性がある。デコーダは、いくつかのインスタンスの変換失敗から回復可能である。
【0019】
・オンライン復号。これは、圧縮ビットストリームの実際の読み取り時に、インスタンスが1つずつ復号可能であることを意味する。圧縮ビットストリーム全体の読み取り完了を待つ必要はない。
【0021】
・コーデックはバッファを必要としない。
短所:
・圧縮済みの3Dモデル・サイズが相対的に大きい。
【0022】
オプション(B)グループ化インスタンス・データ・モード(ID、ID、F、F、T、T、R、R、S、S):このモードを使用すると、情報は、情報タイプに基づいてグループ化される。すなわち、1インスタンスのパターンID、反転変換部分、並進変換部分、回転変換部分、及びスケーリング変換部分は、ビットストリーム内にまとめてパックされる。
長所:
・圧縮済みの3Dモデル・サイズが相対的に小さい。
短所:
・デコーダは、もはや誤り耐性がない。
【0023】
・オフライン復号・これは、デコーダが、圧縮されたビットストリーム全体の読み取り後にのみ、復号を開始できることを意味する。
【0026】
現行のビットストリーム定義は、上記2つのオプションの両方を含むことになる。その後ユーザは、彼らのアプリケーションにより良く適合する方を選択することができる。特定の実装は、2つのインスタンス・データ・モードのうちの1つを実装することのみを選択することができる。その場合、ビットストリーム定義は適宜変更されるものとする。詳細については「ビットストリームのシンタックス及びセマンティクス」の項を参照されたい。
【0027】
インスタンスは、オリジナルの構成要素と、パターン及びインスタンス変換から復元された構成要素との間の距離として定義される、より大きな復号誤りを有する可能性があるため、ビットストリームのいくつかのデータ・フィールドは、復号された3Dモデル品質を保証するために、圧縮されたインスタンス復号誤りを示すように定義される。インスタンスの復号誤りを圧縮するか否かは、たとえば品質要件に基づいている。
【0028】
インスタンス変換の圧縮
以下に示されるように、インスタンス変換は、反転部分(Refle)、回転部分(Rotat)、並進部分(Transl)、及び可能スケーリング部分の、4つの部分に分割可能である。
【0029】
【表1】
反転部分は、W.Jiang、K.Cai、及びT.Luoによる「Method and Apparatus for Reflective Symmetry Based 3D Model Compression」という名称のPCT出願(出願番号を記入)に記載されるように、たとえば1ビット・フラグによって表すことが可能である。
【0030】
回転部分は3×3マトリクスである。3列(又は行)の回転部分は単位直交ベクトルである。時には復号効率又は復号誤りのいずれかが最も重要である、いくつかの適用例に対処するために、本発明者等は、回転部分をいかにして圧縮するかについて2つのオプションを提案する。どちらもそれら独自の長所及び短所を有する。
【0031】
オプション(A)デカルト・モード。デカルト座標系において、W.Jiang、K.Cai、及びJ.Tianによる「Conditional Error Correction in Orientation AX’sEncoding」という名称のPCT出願(PCT/CN2011/077277)に記載されるように、たとえば、回転部分は2本の直交軸(x0,y0,z0)及び(x1,y1,z1)によって表され、圧縮されることが可能である。
長所:
・コーデック速度が速い。
短所:
・復号済みの3Dモデルの精度が相対的に低い。
【0032】
オプション(B)球面モード。このモードを使用すると、回転部分は、たとえば「Computing Euler Angles from a Rotation Matrix」Greg Slaubaugh,1999,Reportsによって、オイラー角(アルファ,ベータ,ガンマ)に変換され、W.Jiang、K.Cai、及びJ.Tianによる「Orientation Encoding」という名称のPCT出願(PCT/CN2011/077271)に記載されるように、圧縮されることが可能である。
長所:
・復号済みの3Dモデルがより正確である。
短所:
コーデック速度が相対的に遅い。
【0033】
現行のビットストリーム定義は、上記2つのオプションの両方を含むことになる。その後ユーザは、彼らのアプリケーションにより良く適合する方を選択することができる。特定の実装は、2つのインスタンス回転圧縮モードのうちの1つを実装することのみを選択することができる。その場合、ビットストリーム定義は適宜変更されるものとする。詳細については「ビットストリームのシンタックス及びセマンティクス」の項を参照されたい。
【0034】
並進部分は、ベクトル(x,y,z)(擬似並進ベクトル)によって表される。グループ化インスタンス変換モードを使用すると、すべての擬似インスタンス並進ベクトルは、
たとえば、W.Jiang、K.Cai、及びZ.Chenによる「A Model Adaptive Entropy Coding for Octree Compression」という名称のPCT出願(PCT/CN2011/077279)に記載された、オクトリー・データ構造内のすべての擬似インスタンス並進ベクトルの境界ボックスを再帰的に細分する方法を使用して、オクトリー(octree)(OT)分解(decomposition)ベースの圧縮アルゴリズムによって圧縮される。本発明者等は、各オクトリー・ノード細分を、1ビット・フラグを使用して子ノードが非空であるかどうかを示す、8ビット長の占有コードによって表す。オクトリーを記述する占有コード・シーケンスは、オクトリーの幅優先トラバース(breadth first traversing)によって生成される。本発明者等は、占有コード・シーケンスをいくつかの間隔に分割し、それらを異なる確率モデルで圧縮することによって、占有コード・シーケンスを圧縮する。インスタンスは、重複並進ベクトルと呼ばれる極端に近い擬似並進ベクトルを有する可能性があるため、ビットストリームのいくつかのデータ・フィールドは、重複並進ベクトルを示すために定義される。
【0035】
スケーリング部分は、たとえばM.Isenburg等による「Lossless Compression of Predicted Floating-Point Geometry」、Computer-Aided Design,Volume 37,Issue 8、869〜877ページ、2005年7月によって、インスタンスの均一スケーリングSによって表され、浮動小数点数について無損失圧縮アルゴリズムによって圧縮される。
【0036】
インスタンス・プロパティの圧縮
実際の適用例では、形状に加えて、3Dモードは通常、法線、カラー、及びテクスチャ座標などの様々なプロパティを有する。インスタンスが同じパターンのプロパティを有することを必要とすることで、反復構造が発見され得る回数を制限し、A3DMCの圧縮率を下げることになる。したがって本発明者等は、反復構造の発見時に形状のみをチェックし、インスタンスは、対応するパターンのプロパティによって異なるプロパティを有することができる。
【0037】
基本インスタンス・データ・モードが使用される場合、いかにしてビットストリームからインスタンスのプロパティを取得するかを示すために、1つのデータ・フィールドが定義される。
【0038】
・ケースA:インスタンスはパターン・プロパティ・データを共有し、データ・フィールドはそのプロパティを表す必要がない。
【0039】
・ケースB:インスタンスはそれ独自のプロパティを有し、そのプロパティをビットストリーム内に表すために別々のデータ・フィールドが必要である。
【0040】
1インスタンスのプロパティ・データ(P)は、インスタンスの他のデータに従い、すなわち(ID、F、T、R、S、P、ID、F、T、R、S、P・・・)である。グループ化インスタンス・データ・モードが使用される場合、すべてのインスタンスは、パターン・プロパティ・データを共有するか、それら独自のプロパティ・データを有するものとする。ビットストリームのインスタンス・データ部分は(ID、ID、F、F、T、T、R、R、S、S、P、P)のようになる。本発明者等は、ISO/IEC 14496-16の同じ3Dモデル・プロパティ・データ・フィールド定義を使用する。
【0041】
圧縮済みビットストリームの一般構造
本発明者らの反復構造発見ベース圧縮アルゴリズム、A3DMCの圧縮済みビットストリームの一般構造の分解は、
図2に示された通りである。ビットストリームは、ヘッダ・バッファ(A3DMC_stream_header)で始まり、オリジナル・モデル内に少なくとも1つの反復構造が存在するか否かの情報、形状を圧縮するために使用される3Dモデル圧縮方法、すべての3Dオブジェクト(パターン及び必要であれば他の部分)の接続性及びプロパティ、このビットストリーム内で「グループ化インスタンス変換モード」又は「基本インスタンス変換モード」が使用されるか否かの情報、反復的でないオリジナル・モデルの何らかの部分(ユニーク部分と呼ぶ)が存在するか否かの情報、インスタンス復号誤りが補償されるかどうかの情報、インスタンスが有し得るプロパティのタイプの情報など、圧縮済みストリームを復号するためのすべての必要な情報を含む。
【0042】
オリジナル・モデル内に反復構造(repeat_struc_bit!=1)を含まない場合、ビットストリームの左部分は、A3DMC_stream_header内に示された3Dモデル圧縮方法を使用する圧縮済み入力3Dモデルである。含む場合、ビットストリーム内の次の部分は、すべてのパターンの圧縮済み結果である。このビットストリーム内でいずれのインスタンス変換パッキング・モードが選択されるかに応じて、compr_insta_grouped_data又はcompr_insta_elementary_dataのいずれかが、ビットストリーム内の次の部分である。オリジナル3Dモデル内にユニーク部分が存在する場合、compr_uni_part_dataが付属される。存在しない場合、ビットストリームは終了する。
【0043】
ビットストリーム・シンタックス及びセマンティクス
SC3DMC仕様ですでに使用されているシンタックス関数、カテゴリ、及び記述子に加えて、本発明者等は、以下の2つも使用することになる。
【0044】
f(n):各シンボルについて(左から右へ記載された)n個のビットを用いる、固定長符号化ビット。nは各シンボルの符号長さに依存する。
【0045】
ec(v):場合によっては構成シンボルを含む、エントロピー符号化(たとえば算術符号化)シンタックス要素。
【0046】
ビットストリーム・シンタックス及びセマンティクス
A3DMC_streamクラス
シンタックス
【表2】
セマンティクス
A3DMC_stream_header:ヘッダ・バッファを含む。
【0047】
A3DMC_steam_data:データ・バッファを含む。
【0048】
A3DMC_stream_headerクラス
シンタックス
【表3】
セマンティクス
repeat_struc_bit:3Dモデル内に一定量を上回る反復構造が存在するか否かを示す、1ビットの符号なし整数。0は反復構造なし、1は反復構造。
【0049】
3d_model_compr_mode:パターン、ユニーク部分、及び、反復構造を含まない場合のオリジナル3Dモデル自体を圧縮するために使用される、3Dモデル圧縮方法を示す、2ビットの符号なし整数。
【表4】
QP:品質パラメータを示す5ビットの符号なし整数。QPの最小値は3であり最大値は31である。
【0050】
pattern_num:255未満の場合のすべてのパターンの数を示す、8ビットの符号なし整数。pattern_numの最小値は1である。
【0051】
pattern_num_2:255以上の場合のすべてのパターンの数を示す、16ビットの符号なし整数。この場合、合計パターン数は(pattern_num_2+255)である。
【0052】
instance_num:65535未満の場合のすべてのインスタンスの数を示す、16ビットの符号なし整数。instance_numの最小値は1である。
【0053】
instance_num_2:65535以上の場合のすべてのインスタンスの数を示す、32ビットの符号なし整数。この場合、合計インスタンス数は(instance_num_2+65535)である。
【0054】
insta_trans_elem_bit:ビットストリーム内で「グループ化インスタンス変換モード」又は「基本インスタンス変換モード」のいずれが使用されるかを示す、1ビットの符号なし整数。0は「グループ化インスタンス変換モード」、1は「基本インスタンス変換モード」。
【0055】
insta_rotat_mode_bit:インスタンス回転変換の符号化モードを示す、1ビットの符号なし整数。0は球面モード、1はデカルト・モード。
【0056】
use_scaling_bit:インスタンス変換がスケーリング係数を含むかどうかを示す1ビットの符号なし整数。1はインスタンス変換にスケーリング係数が含まれ、0は含まれない。ほとんどのインスタンスのスケーリング係数が1.0に等しい場合、インスタンス変換はスケーリング係数を含まない。そこで、すべてのインスタンスは対応するパターンと同じサイズを有さなければならない。
【0057】
uni_part_bit:オリジナル3Dモデル内にユニーク部分が存在するかどうかを示す、1ビットの符号なし整数。0はユニーク部分が存在しないことを意味し、1はユニーク部分が存在することを示す。uni_part_bitが0に等しい場合、パターン・インスタンス圧縮データ後にビットストリームの端部が右に達していることも意味する。
【0058】
error_compensate_enable_bit:ビットストリーム内の何らかのインスタンスに関する圧縮済み復号誤りのデータ・フィールドが存在するかどうかを示す、1ビットの符号なし整数。0はビットストリーム内のインスタンスの圧縮済み復号誤りのデータ・フィールドが存在しないことを意味し、1はビットストリーム内の何らかのインスタンスの圧縮済み復号誤りのデータ・フィールドが存在することを意味する。
【0059】
property_enable_bits:各ビットが、対応するプロパティ(たとえば法線、カラー、テクスチャ座標)が符号化されるかどうかを示す、4ビット・フラグ。0は対応するプロパティが符号化されないことを意味し、1は符号化されることを意味する。ビットとプロパティとの間の関係は、以下の表に示される。
【0060】
【表5】
A3DMC_stream_dataクラス
シンタックス
【表6】
セマンティクス
compr_repeat_struc_data:反復構造を含む圧縮済み3Dモデルを含む。
【0061】
compr_3d_model_data:反復構造を含まず、3d_model_compr_modeによって示される圧縮方法によって符号化された、圧縮済み3Dモデルを含む。
【0062】
compr_repeat_struc_dataクラス
シンタックス
【表7】
セマンティクス
compr_pattern_data:3d_model_compr_modeによって示される圧縮方法によって符号化された、すべてのパターンの圧縮済み形状、接続性、及びプロパティを含む。
【0063】
compr_insta_elementary_data:「基本インスタンス変換モード」を使用するすべてのパターン・インスタンスについての、圧縮済みインスタンス変換データを含む。バイトが位置合わせされるように圧縮される。
【0064】
compr_insta_grouped_data:「グループ化インスタンス変換モード」を使用するすべてのパターン・インスタンスについての、圧縮済みインスタンス変換データを含む。バイトが位置合わせされるように圧縮される。
【0065】
compr_uni_part_data:3d_model_compr_modeによって示される圧縮方法によって符号化された、圧縮済みユニーク部分データを含む。
【0066】
compr_insta_elementary_dataクラス
シンタックス
【表8】
【表9】
セマンティクス
insta_tranl_bbox:インスタンス並進情報を圧縮する場合に量子化が使用できるような、並進ベクトル・データの最小値及び最大値を含む。
【0067】
compr_elem_insta_patternID:i番目インスタンスの圧縮済みパターンIDを含む。
【0068】
elem_insta_share_pattern_property_bit:i番目インスタンスが対応するパターンとプロパティを共有するか否かを示す、1ビットの符号なし整数。0は、i番目インスタンスが対応するパターンとプロパティを共有せず、そのプロパティを圧縮する必要があることを意味する。1は、i番目インスタンスが対応するパターンとプロパティを共有することを意味する。
【0069】
elem_insta_reflection_flag:i番目インスタンスの変換が反転を含むかどうかを示す、1ビットの符号なし整数。0はi番目インスタンスの変換が反転を含まないことを意味し、1はi番目インスタンスの変換が反転を含むことを意味する。
【0070】
compr_elem_insta_transl:i番目インスタンスの圧縮済み並進ベクトルを含む。
【0071】
compr_elem_insta_rotat_cartesian:デカルト・モードでi番目インスタンスの圧縮済み回転変換を含む。
【0072】
compr_elem_insta_rotat_spherical:球面モードでi番目インスタンスの圧縮済み回転変換を含む。
【0073】
compr_elem_insta_scaling:i番目インスタンスの圧縮済みスケーリング係数を含む。
【0074】
compr_elem_insta_normal_header:i番目インスタンスの圧縮済み法線のヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0075】
compr_elem_insta_normal_data:i番目インスタンスの圧縮済み法線を含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0076】
compr_elem_insta_color_header:i番目インスタンスの圧縮済みカラーのヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0077】
compr_elem_insta_color_data:i番目インスタンスの圧縮済みカラーを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0078】
compr_elem_insta_texcoord_header:i番目インスタンスの圧縮済みテクスチャ座標のヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0079】
compr_elem_insta_texcoord_data:i番目インスタンスの圧縮済みテクスチャ座標を含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0080】
elem_insta_error_compensate_flag:ビットストリームの次の部分がi番目インスタンスの圧縮済み復号誤りであるかどうかを示す、1ビットの符号なし整数。0は、ビットストリームの次の部分がi番目インスタンスの圧縮済み復号誤りでないことを意味し、1は、ビットストリームの次の部分がi番目インスタンスの圧縮済み復号誤りであることを意味する。
【0081】
compr_elem_insta_error_compen_header:i番目インスタンスの圧縮済み復号誤りのヘッダを含む。
【0082】
compr_elem_insta_error_compen_data:i番目インスタンスの圧縮済み復号誤りを含む。
【0083】
bit_num_insta_transl():QPに基づき、各擬似インスタンス並進ベクトルについてビット数を計算する。
【0084】
compr_elem_insta_rotat_cartesianクラス
シンタックス
【表10】
セマンティクス
デカルト・モードのi番目インスタンスの回転変換は、2本の直交軸(x0,y0,z0)及び(x1,y1,z1)によって表される。
【0085】
compr_elem_insta_rotat_x0:i番目インスタンスの回転の圧縮済みx0を含む。
【0086】
compr_elem_insta_rotat_y0:i番目インスタンスの回転の圧縮済みy0を含む。
【0087】
elem_insta_rotat_z0_sgn:x0及びy0を使用してz0を計算するために必要なz0の符号を示す、1ビットの符号なし整数。0は「−」、1は「+」である。
【0088】
compr_ith_insta_orient_z0_res:不正確な可能性が高い計算済みz0の圧縮済み剰余を含む。
【0089】
compr_elem_insta_rotat_w:x0及びy0に依存して、x1、y1、又はz1であり得る、i番目インスタンスの回転の圧縮済み第3座標wを含む。
【0090】
elem_insta_rotat_sgn_v:x0、y0、z0、及びwを使用してvを計算するために必要な、wに依存してx1又はy1であり得る、第5座標vの符号を示す、1ビットの符号なし整数。0は「−」、1は「+」である。
【0091】
compr_elem_insta_rotat_z1_res:不正確な可能性が高い計算済みz1の圧縮済み剰余を含む。
【0092】
need_compensate_z0():i番目インスタンスの回転の計算済みz0が補償される必要があるか否かを判定する。i番目インスタンスの回転の計算済みz0が補償される必要がある場合はtrueを、i番目インスタンスの回転の計算済みz0が補償される必要がない場合はfalseを戻す。
【0093】
need_compensate_z1():i番目インスタンスの回転の計算済みz1が補償される必要があるか否かを判定する。wがz1でなく、i番目インスタンスの回転の計算済みz1が補償される必要がある場合は、trueを戻す。wがz1であるか、又は、i番目インスタンスの回転の計算済みz1が補償される必要がない場合は、falseを戻す。
【0094】
bit_num_rotat_cartesian():QPに基づき、デカルト座標系における各回転値についてビット数を計算する。
【0095】
bit_num_rotat_res_cartesian():QPに基づき、デカルト座標系における各回転剰余値についてビット数を計算する。
【0096】
compr_elem_insta_rotat_sphericalクラス
シンタックス
【表11】
セマンティクス
球面モードのi番目インスタンスの回転は、3つの角度、アルファ、ベータ、及びガンマで表される。
【0097】
compr_elem_insta_rotat_alpha:i番目インスタンスの回転の圧縮済みアルファを含む。
【0098】
compr_elem_insta_rotat_beta:i番目インスタンスの回転の圧縮済みベータを含む。
【0099】
compr_elem_insta_rotat_gamma:i番目インスタンスの回転の圧縮済みガンマを含む。
【0100】
bit_num_rotat_alpha():QPに基づき、各アルファ値についてビット数を計算する。
【0101】
bit_num_rotat_beta():QPに基づき、各ベータ値についてビット数を計算する。
【0102】
bit_num_rotat_gamma():QPに基づき、各ガンマ値についてビット数を計算する。
【0103】
compr_insta_grouped_dataクラス
シンタックス
【表12】
セマンティクス
compr_insta_patternID_header:すべてのインスタンスの圧縮済みパターンIDについての、16ビット・ヘッダ。patternID_dataを自動的に符号化するための圧縮済みビットストリーム長さを決定することが可能な、固定長コーデック又はエントロピー・コーデックを使用する場合、このデータ・フィールドは未使用である。
【0104】
compr_insta_patternID_data:すべてのインスタンスの圧縮済みパターンIDを含む。
【0105】
insta_reflection_flag_data:すべてのインスタンスの反転フラグを含む。バイトが位置合わせされるように圧縮される。
【0106】
compr_insta_transl_header:すべてのインスタンスの圧縮済み並進ベクトルについての、16ビット・ヘッダ。transl_dataを自動的に符号化するための圧縮済みビットストリーム長さを決定することが可能な、固定長コーデック又はエントロピー・コーデックを使用する場合、このデータ・フィールドは未使用である。
【0107】
compr_insta_transl_data:すべてのインスタンスの圧縮済み擬似並進ベクトルを含む。完全な説明は4.9を参照のこと。
【0108】
compr_insta_rotat_header:すべてのインスタンスの圧縮済み回転変換部分についての、16ビット・ヘッダ。rotat_dataを自動的に符号化するための圧縮済みビットストリーム長さを決定することが可能な、固定長コーデック又はエントロピー・コーデックを使用する場合、このデータ・フィールドは未使用である。
【0109】
compr_insta_rotat_data:すべてのインスタンスの圧縮済み回転変換部分を含む。バイトが位置合わせされるように圧縮される。完全な説明は4.10を参照のこと。
【0110】
compr_insta_scaling_header:すべてのインスタンスの圧縮済みスケーリング係数についての、16ビット・ヘッダ。scaling_dataを自動的に符号化するための圧縮済みビットストリーム長さを決定することが可能な、エントロピー・コーデックを使用する場合、このデータ・フィールドは未使用である。
【0111】
compr_insta_scaling_data:すべてのインスタンスの圧縮済みスケーリング係数を含む。
【0112】
insta_share_pattern_property_bit:1ビットの符号なし整数が、すべてのインスタンスがパターンとプロパティを共有するかどうかを示す。0は、すべてのインスタンスがパターンとプロパティを共有せず、それらのプロパティが圧縮されることを意味する。1は、すべてのインスタンスがパターンとプロパティを共有することを意味する。
【0113】
compr_insta_normal_header:すべてのインスタンスの圧縮済み法線のヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0114】
compr_insta_norma_datal:すべてのインスタンスの圧縮済み法線を含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0115】
compr_insta_color_header:すべてのインスタンスの圧縮済みカラーのヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0116】
compr_insta_color_data:すべてのインスタンスの圧縮済みカラーを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0117】
compr_insta_texcoord_header:すべてのインスタンスの圧縮済みテクスチャ座標のヘッダを含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0118】
compr_insta_texcoord_data:すべてのインスタンスの圧縮済みテクスチャ座標を含む。詳細な定義については、ISO/IEC 14496-16 5.2.1.3を参照のこと。
【0119】
insta_error_compen_flag_data:すべてのインスタンスのelem_insta_error_compensate_flagを含む。
【0120】
compr_elem_insta_error_compen_header:i番目インスタンスの圧縮済み復号誤りのヘッダを含む。
【0121】
compr_elem_insta_error_compen_data:i番目インスタンスの圧縮済み復号誤りを含む。
【0122】
compr_insta_transl_dataクラス
シンタックス
【表13】
セマンティクス
num_node:オクトリー・ノードの数を示す、16ビットの符号なし整数。
【0123】
num_dupli_leaf:重複リーフ・ノードと呼ばれる、重複インスタンス並進ベクトルを含むオクトリー・リーフ・ノードの数を示す、8ビットの符号なし整数。
【0124】
dupli_leaf_id:オクトリーの幅優先トラバース・シーケンスにおける、i番目の重複リーフ・ノードのインデックスを含む。
【0125】
num_dupli_insta_transl:i番目の重複オクトリー・リーフ・ノード内に入る重複インスタンス並進ベクトルの数を示す、4ビットの符号なし整数。
【0126】
num_interval_bound:オクトリー占有コード・シーケンス全体の間隔境界の数を示す、8ビットの符号なし整数。
【0127】
reserved_bits:バイト位置合わせ目的のいくつかのISO予約済みビットを含む。
【0128】
interval_bound_id:i番目の間隔境界のインデックスを含む。
【0129】
occup_p0_symbols:アルファベットの汎用セットで圧縮されたオクトリー・ノードの占有コードを含む。
【0130】
occup_p1_symbols:アルファベットのサブセットで圧縮されたオクトリー・ノードの占有コードを含む。
【0131】
compr_insta_rotat_dataクラス
シンタックス
【表14】
実装は、2つのインスタンス・データ・パッキング・モードのうちの1つのみを実装するように選択する可能性がある。その場合、A3DMC_stream_headerにおけるinsta_trans_elem_bitがビットストリーム定義から除去されるべきである。実装によって基本インスタンス・データ・モードが選択された場合、compr_insta_grouped_dataがビットストリーム定義から除去されるべきである。実装によってグループ化インスタンス変換モードが選択された場合、compr_insta_elementary_dataがビットストリーム定義から除去されるべきである。
【0132】
実装は、2つのインスタンス回転圧縮モードのうちの1つのみを実装するように選択する可能性がある。その場合、A3DMC_stream_headerにおけるinsta_rotat_mode_bitがビットストリーム定義から除去されるべきである。実装によって圧縮インスタンス回転に対してデカルト・モードが選択された場合、compr_elem_insta_rotat_sphericalがビットストリーム定義から除去されるべきである。実装によって球面モードが選択された場合、compr_elem_insta_rotat_cartesianがビットストリーム定義から除去されるべきである。
【0133】
実装は、すべてのインスタンスの圧縮済みパターンID、並進変換部分、回転変換部分、及びスケーリング係数について、ビットストリーム内にヘッダを含めないように選択する可能性がある。その場合、compr_insta_patternID_header、compr_insta_transl_header、compr_insta_rotat_header、及びcompr_insta_scaling_headerが、ビットストリーム定義から除去されるべきである。
【0134】
したがって、本原理に従い、3Dモデルが反復構造発見を使用して表され、前述のシンタックスに従ってビットストリームが生成され、法線、カラー、及びテクスチャ座標などの3Dモデル・プロパティに対処するため、及び、その変換が反転変換を含むインスタンスを圧縮するために、符号化される。モデル・データがアクセスされ、パターンID及び変換情報、及びプロパティ情報が決定される。パターンID、変換情報、及びプロパティ情報は、3Dモデルのビットストリーム表現を生成するために、前述のフォーマットのうちの1つに従って、まとめてグループ化される。
【0135】
とりわけ本原理は、以下の特徴及び利点を提供する。
【0136】
1.本発明者等の反復構造発見ベースの圧縮アルゴリズムの、圧縮済みビットストリームのシンタックス及びセマンティクス。
【0137】
2.どちらもビットストリーム内で可能な、基本インスタンス又はグループ化インスタンスのデータ・オプションを有するためのソリューション。
【0138】
3.対応するパターン・プロパティ・データ又は対応するデータ・フィールドのいずれかから、インスタンス・プロパティ・データを取得するように適合された、デコーダ。
【0139】
4.品質要件に従ってインスタンスの復号誤りを圧縮するように適合された、エンコーダ。
【0140】
5.復号されたパターン及び復号されたインスタンス変換から復元された構成要素に、圧縮解除された復号誤りを追加することによって、最終インスタンス構成要素を取得するように適合された、デコーダ。
【0141】
6.すべてのパターンをまとめて圧縮するように適合されたエンコーダ。
【0142】
7.インスタンスを復元する前にパターンを分離するように適合されたデコーダ。
【0143】
8.インスタンス変換の4つの部分、すなわち反転、回転、並進、及び可能スケーリングの部分を、別々に圧縮するように適合された、エンコーダ。
【0144】
9.2本の直交軸又はオイラー角としての、1インスタンス変換の回転部分の圧縮。
【0145】
図4に示されたように、対応する復号された反転、並進、回転、及び可能スケーリングの部分から、インスタンスの変換マトリクスを復元するように適合された、デコーダ。
【0146】
本明細書で説明される実装は、たとえば、方法又はプロセス、装置、ソフトウェア・プログラム、データ・ストリーム、或いは信号内に実装可能である。単一形式の実装との関連においてのみ考察される(たとえば、方法としてのみ考察される)場合であっても、考察される特徴の実装は、他の形(たとえば装置又はプログラム)内でも実装可能である。装置は、たとえば適切なハードウェア、ソフトウェア、及びファームウェア内で実装可能である。方法は、たとえばコンピュータ、マイクロプロセッサ、集積回路、又はプログラマブル論理デバイスを含む、たとえば一般に処理デバイスと呼ばれるプロセッサなどの、装置内で実装可能である。プロセッサは、たとえばコンピュータ、携帯電話、携帯情報端末(「PDA」)、及び、エンドユーザ間での情報の通信を容易にする他のデバイスなどの、通信デバイスも含む。
【0147】
本原理の「一実施形態」又は「実施形態」又は「一実装」又は「実装」という言い方、並びにそれらの様々な他の変形は、実施形態に関連して説明される特定の機能、構造、特徴などが、本原理の少なくとも1つの実施形態に含まれることを意味する。したがって、
本明細書全体を通じて様々な箇所に現れる、「一実施形態において」又は「実施形態において」又は「一実装において」又は「実装において」という表現、並びに任意の他の変形の出現は、必ずしもすべてが同じ実施形態を指しているわけではない。
【0148】
加えて、本明細書又はその特許請求の範囲は、様々な情報片の「決定」を言い表すことができる。情報の決定は、たとえば情報の推定、情報の計算、情報の予測、又はメモリからの情報の取り出しのうちの、1つ又は複数を含むことができる。
【0149】
さらに、本明細書又はその特許請求の範囲は、様々な情報片への「アクセス」を言い表すことができる。情報へのアクセスは、たとえば情報の受信、情報の取り出し(たとえばメモリ)、情報の記憶、情報の処理、情報の送信、情報の移動、情報のコピー、情報の消去、情報の計算、情報の決定、情報の予測、又は情報の推定のうちの、1つ又は複数を含むことができる。
【0150】
加えて、本明細書又はその特許請求の範囲は、様々な情報片の「受信」を言い表すことができる。「アクセス」と同様に「受信」は、広義な用語であることが意図される。情報の受信は、たとえば情報へのアクセス、又は(たとえばメモリからの)情報の受信のうちの、1つ又は複数を含むことができる。さらに「受信」は、通常、色々な点で、たとえば情報の記憶、情報の処理、情報の送信、情報の移動、情報のコピー、情報の消去、情報の計算、情報の決定、情報の予測、又は情報の推定などの、動作時に関連している。
【0151】
当業者には明白であるように、実装は、たとえば記憶又は伝送され得る情報を搬送するようにフォーマット化された様々な信号を生成することができる。情報は、たとえば、方法を実行するための命令、又は説明された実装のうちの1つによって生成されるデータを、含むことができる。たとえば信号は、説明された実施形態のシンタックスを書き込む又は読み取るための規則を、データとして搬送するように、或いは、説明された実施形態によって作成された実際のシンタックス値を、データとして搬送するように、フォーマット化され得る。こうした信号は、たとえば電磁波として(又はスペクトルの無線周波数部分を使用して)、又はベースバンド信号として、フォーマット化することができる。フォーマット化は、たとえばデータ・ストリームの符号化、及び符号化されたデータ・ストリームによる搬送波の変調を含むことができる。信号が搬送する情報は、たとえばアナログ又はデジタルの情報とすることができる。信号は、知られているように、様々な異なる有線又は無線リンクを介して伝送可能である。信号は、プロセッサ読み取り可能媒体上に記憶することが可能である。