(58)【調査した分野】(Int.Cl.,DB名)
前記パターンを符号化するために使用される前記第1の量子化パラメータは、前記3Dモデルのスケール及び前記パターンのスケールのうちの少なくとも1つに応答して決定される、
請求項1に記載の方法。
【発明を実施するための形態】
【0010】
図1に示されるように、3Dモデルにおいて多くの反復構造が存在してよい。3Dモデルを効率よく符号化するよう、反復構造は、パターン及びインスタンスに体系化されてよい。インスタンスは、例えば、平行移動、回転、及びスケーリングのような情報を含む変換マトリクス及びパターンIDを用いて、対応するパターンの変形として表現され得る。
【0011】
インスタンスがパターンID及び変換マトリクスによって表現される場合に、パターンID及び変換マトリクスは、インスタンスを圧縮するときに圧縮されるべきである。結果として、インスタンスは、パターンID及び復号された変換マトリクスを通じて再構成されてよい。すなわち、インスタンスは、パターンIDによってインデックスを付された復号されたパターンの変形として(復号された変換マトリクスから)再構成されてよい。
【0012】
図2A及び
図2Bは、2D表現におけるコンポーネントの例を表す。コンポーネント210及び220はパターンであり、コンポーネント230及び250(実線)は、圧縮される原のインスタンスであり、コンポーネント240及び260(破線)は、再構成されたインスタンスである。特に、インスタンス230及び250は、夫々、パターン210及び220の変形された(すなわち、回転及び平行移動された)バージョンとして表現され得る。
図2Bにおいて、原のインスタンスと再構成されたインスタンスとの間には、平行移動及び回転移動の両方の量子化によって引き起こされる誤差が存在する。説明のために、
図2Cにおいて、我々は、回転誤差のみを有するインスタンス270及び280を提供する。
【0013】
図2Cの例で、回転の量子化は、約5°の誤差を導入し、原のインスタンスと再構成されたインスタンスとの間に差を引き起こす。
図2Cから分かるように、回転誤差(角度における)はインスタンス230及び250について同じようであり、一方、回転量子化によって引き起こされる頂点座標誤差(すなわち、原のインスタンスと再構成されたインスタンスとの間、例えば、
図2CではAからA”、BからB”、の頂点シフト)は、両方のインスタンスの間で有意に変化し、インスタンス250は、より一層大きな頂点座標誤差を有する。結果として、同じ量子化が、様々なサイズを有するインスタンスについて使用される場合に、再構成されたコンポーネントの品質は一貫せず、例えば、より大きいインスタンスは、より小さいインスタンスよりも低い再構成品質を有し得る。
【0014】
本原理は、3Dエンコーダの速度ひずみ性能を考慮することによって、3Dインスタンス成分についての変形情報を効率よく量子化するための方法及び装置を提供する。一実施形態において、最大許容ひずみを考えると、インスタンスの回転部分及び平行移動部分のための量子化パラメータは、速度ひずみ性能が改善されるように決定される。以下で、量子化ビットの数が、量子化パラメータの例として使用される。本原理は、量子化ステップサイズのような他の量子化パラメータが使用される場合に、適用されてよい。
【0015】
変形のスケーリング部分は、無損失浮動小数点コーデックによって圧縮され得るので、変形のスケーリング部分は、以下の議論に関与しない。
【0016】
発見された“パターン−インスタンス”表現に基づき、原のインスタンスの頂点vは、次の式によって表現され得る:
v=R×p+T (1)
ここで、pは、対応するパターンにおけるvの対応する頂点であり、R及びTは、夫々、パターンとインスタンスとの間の回転行列及び変換ベクトルである。
【0017】
vの復号された位置v
dは、次のように計算され得る:
v
d=R
d×p
d+T
d (2)
ここで、p
dは、pの復号された位置であり、R
d及びT
dは、夫々、復号された回転行列及び復号された変換ベクトルである。
【0018】
頂点vについての圧縮によって引き起こされるひずみは、次いで、次のように計算され得る:
v−v
d=(R×p+T)−(R
d×p
d+T
d)
=(R×p−R
d×p
d)+(T−T
d) (3)
=(R×p−R
d×p
d)+ΔT
数学理論に基づき、以下が推測され得る:
【数1】
ここで、‖Δp‖
maxは、頂点pの量子化誤差の上限であり、‖ΔT‖
maxは、インスタンス平行移動の量子化誤差の上限である。
【0019】
回転行列が、同数の量子化ビットを用いて量子化され得るオイラー角(α,β,γ)によって表現されるとしたならば、その場合:
【数2】
ここで、Δθ
maxは、α、β及びγについての量子化誤差の上限である。式(5)は、他の表現又は異なる量子化パラメータが角度(α,β,γ)に使用される場合に適応可能である。式(5)を用いると、式(4)は次のようになる:
【数3】
ここで、‖p‖
maxは、対応するパターンのいずれかの頂点と対応するパターンの中心との間の最大距離である。
【0020】
パターンを符号化するために使用される量子化ビットの数がQB_Patternと表され、且つ、平行移動を符号化するための量子化ビットの数がQB_translationと表されるならば、‖Δp‖
maxは、次のように計算されてよい:
【数4】
そして、‖ΔT‖
maxは、次のように計算されてよい:
【数5】
ここで、Pattern_Scal及びTranslation_Scalは、夫々、パターン頂点の境界ボックス及び平行移動のスケールである。一例において、Translation_Scalは、全てのインスタンスの全ての平行移動の最大及び最小の可能な値の間の差として測定可能であり、Pattern_Scalは、全てのパターンを含む境界ボックスの対角距離として測定可能である。他の例において、Pattern_Scalは、x、y、及びz次元の最大値として測定可能である。
【0021】
我々の目標の1つは、最大符号化誤差を制御しながらビットを割り当てることである。最大許容符号化誤差がMaxErrであるならば、式(6)は、以下の不等式を満足すべきである:
【数6】
一実施形態において、簡単のために、我々は、全てのパターンが同数の量子化ビットを使用し、全てのインスタンス平行移動が同数の量子化ビットを使用すると仮定する。よって、パターンについての量子化誤差は、次の式を満足してよい:
【数7】
そして、インスタンスについての量子化誤差は、次の式を満足してよい:
【数8】
量子化誤差のための上限が式(8)及び(9)において推定された後、我々は、パターン頂点の境界ボックス及びインスタンス平行移動のスケールに基づき、量子化ビットの数を推定することができる。
【0022】
1つの簡略化された例となる実施形態において、我々は、いずれの上限も同じであると仮定してよく、よって、式(8)及び(9)に従って、インスタンス平行移動は、パターンと同数の量子化ビットを使用してよい。
【0023】
他の例となる実施形態において、パターンの境界ボックスとインスタンスの境界ボックスとの間のスケール差が考慮される。‖p‖
max<‖ΔT‖
maxならば、平行移動部分のための量子化ビットの数は、次のように計算され得る:
【数9】
パラメータTranslation_Scalは、ビットストリームにおいて送信されてよく、それは、エンコーダ及びデコーダの両方で利用可能になる。それにより、式(10)は、エンコーダ及びデコーダの両方で使用され得る。式(10)に従って、全てのインスタンス平行移動は、パターンのスケールとインスタンス平行移動との間の比に関係がある同じ量子化パラメータを使用する。
【0024】
図2において論じられたように、同じ回転量子化誤差(角度における)は、より大きいコンポーネントにおいて、より大きい頂点シフトを引き起こすことがある。よって、回転情報のための量子化パラメータは、インスタンスのサイズに従って適応的に量子化されてよい。例えば、より大きいビット数、又はより小さい量子化ステップサイズのような、より精緻な量子化パラメータが、より大きいインスタンスの回転部分を量子化するために使用されてよい。
【0025】
回転量子化誤差により引き起こされる頂点座標誤差は、次の式を満足してよい:
【数10】
すなわち、i番目のインスタンス成分についての回転量子化誤差の上限は、次のように推定されてよい:
【数11】
ここで、HalfScal
iは、i番目のインスタンス成分の半分のスケール(すなわち、インスタンスの境界ボックスの対角距離の半分)である。一実施形態において、HalfScal
iは、対応する再構成されたパターンから推定されてよい。エンコーダ及びデコーダの両方によってアクセス可能な再構成されたパターンを用いてHalfScal
iを推定することによって、回転部分のための量子化パラメータは、デコーダで計算可能であり、よって、エンコーダは、ビットストリームにおいて回転部分のための量子化パラメータを明示的に示す必要がない。Δθ
max_iは、式(12)から別なふうに推定されてよい。例えば、より厳しい近似が式(5)において推定される場合に、式(12)並びに式(7)及び(11)は然るべく更新されてよい。
【0026】
圧縮の前に、全てのパターンは、世界座標系とアライメントされる。次いで、全てのパターンは、同じ量子化パラメータを用いて一緒に符号化されてよい。パターンの位置及び方向付けがまた符号化され、ビットストリームにおいて記録される。パターンを符号化するための量子化ビットの数(QB_Pattern)を用いて、i番目のインスタンスの回転部分のための量子化ビットの数(QB_Rot
i)は、次のように、回転角度及びパターン頂点の境界ボックスのスケールに基づき計算されてよい:
【数12】
ここで、angle_Scalは、回転角度のスケールである。一例において、angle_Scalは、全てのインスタンス回転の最大及び最小の可能な対の間の差として測定可能である。他の例において、我々は、angle_Scalを2πに設定する。
【0027】
Pattern_Scalが全てのパターンの境界ボックスのサイズとして測定され、且つ、夫々のオイラー角の可能な値が0〜2πであるとすると、式(13)は次のようになる:
【数13】
すなわち、インスタンスがより大きい(すなわち、HalfScal
iがより大きい)場合に、インスタンスのための量子化ビットの数(QB_Rot
i)は、より大きくなるよう決定される。よって、本原理に従って、より大きいインスタンスは、その回転部分について、より精細な量子化を得る。
【0028】
ここで、我々は、式(14)において変形におけるスケーリング部分は存在しないと仮定する。式(14)は、回転角度のスケールが変化するか、変形のスケーリング部分が考慮されるか、又はパターン及びインスタンスのサイズが別なふうに測定される場合に、然るべく調整されるべきである。
【0029】
先に論じられたように、インスタンスの変換マトリクスの平行移動部分及び回転部分のための量子化パラメータは、圧縮効率を改善するために、パターンを符号化するのに使用される量子化パラメータに基づき決定されてよい。1つの例となる実施形態において、パターンを符号化するのに使用される量子化ビットの数(QB_Pattern)は、ビットストリームにおいて示されてよく、インスタンスの変換マトリクスの平行移動部分は、式(10)を用いて計算されてよく、回転部分のための量子化ビットの数は、式(14)を用いて計算されてよい。
【0030】
他の例となる実施形態において、我々は、パターン頂点、インスタンス平行移動及びインスタンス回転の再構成誤差の上限が同じであると仮定する。すなわち、
【数14】
ここで、‖ΔE‖
maxは、モデル全体の量子化誤差の上限であり、‖ΔP‖
maxは、全てのパターンのための量子化誤差の上限である。結果として、パターンを符号化するための量子化ビットの数は、次のように、3D入力モデル全体の量子化ビットの数から計算されてよい:
【数15】
ここで、QB_EntireModelは、3D入力モデル全体のための量子化ビットの数であり、EntireModel_Scalは、3D入力モデル全体のサイズを反映する。
【0031】
上記において、Pattern_Scalは、3Dモデルにおける全てのパターンを用いて測定され得る。他の実施形態において、パターンは別個に圧縮され、同じパターンのインスタンスは一緒に圧縮される。全てのパターンは、同じ量子化パラメータを使用してよい。更に、式(10)及び(13)におけるPattern_Scalは、対応するパターンの境界ボックスのスケールに対応し、式(10)におけるTranslation_Scal及び式(13)におけるangle_Scalは、夫々、現在のパターンのインスタンスの平行移動及び回転角度のスケールに対応する。
【0032】
図3は、3Dモデルのパターン及びインスタンスを符号化する方法300の例を表す。方法300はステップ305から開始する。ステップ310で、3Dモデルデータが入力され、初期化が実行される。品質パラメータや、パターンを符号化するための量子化パラメータのような追加データが更に入力されるか、又は入力から推定されてよい。1つの例となる実施形態において、初期化ステップは、反復構造をパターン及びインスタンスに体系化し、インスタンスについて変換マトリクスを生成する。ステップ320で、パターンは、再構成されたパターンを形成するよう符号化される。ステップ350で、パターン、平行移動、及び回転のスケールが決定される。例えば、パターンのスケール(Pattern_Scal)は、全てのパターンを含む境界ボックスの対角距離として測定されてよく、平行移動のスケール(Translation_Scal)は、メタデータから取得され、ビットストリームにおいて送信されてよく、回転スケール(angle_Scal)は、角度表現に基づき決定されてよい。例えば、angle_Scalは、オイラー表現が使用される場合に2πに設定される。
【0033】
ステップ360で、インスタンスについての変換マトリクスの平行移動部分のための量子化パラメータは、例えば、式(10)を用いて、決定されてよい。変換マトリクスの回転部分のための量子化パラメータは、例えば、式(14)を用いて、決定されてよい。インスタンスについての変換マトリクスは、次いでステップ370で符号化される。ステップ380で、更なるインスタンスが処理される必要があるかどうかが確認される。更なるインスタンスが処理されるべきである場合は、制御はステップ350へ返される。さもなければ、制御は終了ステップ399へ渡される。
【0034】
図4は、3Dモデルのパターン及びインスタンスを復号する方法400の例を表す。方法400の入力は、ビットストリーム、例えば、方法300を用いて生成されたビットストリームを含んでよい。方法400はステップ405から開始する。ステップ410で、初期化が実行される。例えば、パターンを符号化するために使用される量子化パラメータが、入力されたビットストリームから導出される。
【0035】
パターンがステップ420で復号される。ステップ435で、パターン、平行移動、及び回転のスケールが決定される。ステップ440で、インスタンス成分についての変換マトリクスの平行移動部分及び/又は回転部分のための量子化パラメータが決定されてよい。変換マトリクスは、ステップ450で復号される。インスタンスは、次いでステップ460で、例えば、対応する再構成されたパターン及び復号された変換マトリクスを用いて、再構成される。ステップ470で、更なるインスタンスが処理される必要があるかどうかが確認される。処理される必要があるインスタンスが存在する場合は、制御はステップ435へ返される。さもなければ、制御は終了ステップ499へ渡される。
【0036】
適切にインスタンスを復号するよう、パターン、平行移動、及び回転についてスケールを決定し、且つ、量子化パラメータを計算する対応する方法が、エンコーダ及びデコーダで使用されるべきである点に留意されたい。例えば、方法300によって生成されたビットストリームが方法400への入力として使用される場合に、ステップ435及び440は夫々、ステップ350及び360に対応すべきである。
【0037】
図3及び
図4において、3Dモデルにおける全てのパターンは、インスタンスより前に符号化又は復号される。他の実施形態において、夫々のパターンの符号化/復号化は、対応するインスタンスの符号化/復号化が後に続いてよい。
【0038】
上記において、如何にして量子化ビットの数を割り当てるべきかは、最大許容誤差を前提として論じられている。他方で、式(7)はまた、速度制御のために、すなわち、復号される3Dモデルの品質を最適化するようビットの数を鑑み量子化パラメータを決定するために、使用され得る。
【0039】
圧縮されたパターンの、ビットの数において測定されるサイズは、次のように計算されてよい:
Compr_Pattern
=QB_Pattern×Pattern_Ver_Num×C
pv+Pattern_Tri_Num×C
pt (16)
ここで、Pattern_Ver_Num及びPattern_Tri_Numは、夫々、全てのパターンの頂点の数及び三角形の数であり、C
pv及びC
ptは、例えば、エントロピ符号化の圧縮比を計数するために使用される、所定の値である。一実施において、C
pv=0.2及びC
pt=3である。圧縮されたインスタンスのサイズは、次のように計算され得る:
【数16】
ここで、C
instaは、所定の値である。圧縮された固有コンポーネントのサイズは、次のように計算され得る:
Compr_UniComp
=QB_UniComp×UniComp_Ver_Num×C
pv+UniComp_Tri_Num×C
pt (18)
ここで、QB_UniCompは、固有コンポーネントを符号化するための量子化ビットの数であり、UniComp_Ver_Num及びUniComp_Tri_Numは、夫々、固有コンポーネントの頂点の数及び三角形の数である。1つの例となる実施形態において、‖ΔU‖
max=‖ΔP‖
maxであり、QB_UniCompは、次のように計算されてよい:
【数17】
ここで、UniComp_Scalは、固有部分の境界ボックスのスケールである。固有コンポーネントの平行移動のための量子化ビットは、次のように計算されてよい:
【数18】
ここで、UniComp_Transl_Scalは、全ての固有コンポーネントの全ての平行移動の境界ボックスのスケールである。
【0040】
圧縮された3Dモデルの全体のサイズは、次いで、次のように計算され得る:
Compr_EntireModel=Compr_Pattern+Compr_Insta+Compr_UniComp (20)。
式(10)、(14)及び(19)に基づき、QB_Translation、QB_Rot
i、又はQB_UniCompは、QB_Patternの関数として求められ得る。次いで、式(10)、(14)、及び(16)〜(19)に従って、Compr_Pattern、Compr_Insta、又はCompr_UniCompは、QB_Patternの関数として表現され得る。更に、式(20)を用いて、圧縮された3Dモデルの全体のサイズCompr_EntireModelとQB_Patternとの間の関係が求められ得る。続いて、期待される圧縮されたモデルサイズCompr_Modelを鑑みて、QB_Patternが決定されてよい。QB_Patternから、符号化誤差の上限MaxErrは、MaxErr=3×Patter
n_Scal/2
QB_Pattern+1を用いて計算され得る。
【0041】
図5は、3Dモデルエンコーダ500の例のブロック図を表す。装置500の入力は、3Dモデル、3Dモデルを符号化するための品質パラメータ及び他のメタデータを含んでよい。3Dモデルは、最初に、反復構造発見モジュール510を通過する。反復構造発見モジュール810は、パターン、インスタンス及び固有コンポーネントに関して3Dモデルを出力する。パターンエンコーダ520は、パターンを圧縮するために用いられ、固有コンポーネントエンコーダ550は、固有コンポーネントを符号化するために用いられる。インスタンスに関し、インスタンス成分情報は、ユーザにより選択されたモードに基づき符号化される。インスタンス情報グループモードが選択される場合は、インスタンス情報は、グループ化インスタンス情報エンコーダ540を用いて符号化される。さもなければ、それは、素インスタンス情報エンコーダ530を用いて符号化される。符号化されたコンポーネントは、更に、反復構造検証部560において検証される。符号化されたコンポーネントがその品質要件を満足しない場合は、それは、固有コンポーネントエンコーダ550を用いて符号化されるであろう。パターン、インスタンス、及び固有コンポーネントのためのビットストリームは、ビットストリームアセンブラ570でまとめられる。
【0042】
圧縮効率を改善するよう、原の3Dモデルの全てのコンポーネントは、コンポーネントの中心がアライメントされるように平行移動されてよい。中心の平行移動は、圧縮され、ビットストリームにおいて示される必要がある。速度ひずみ性能は、コンポーネントの境界ボックスが(ほとんどの場合において)よりずっと小さくてよく、且つ、より少ない量子化ビットが同じ符号化誤差について必要とされるので、改善され得る。
【0043】
加えて、パターンは、コンポーネントの中心を原点へ平行移動させることによって生成されてよく、原のコンポーネントは、インスタンスとみなされてよい。圧縮効率を改善するよう、パターン成分(パターンに対応するコンポーネント)に関し、平行移動のみが、圧縮されたビットストリームにおいて示される。パターン−インスタンス表現からのビットレート節約を保証するよう反復構造が全く又は十分に存在しない場合は、入力された3Dモデルの全てのコンポーネントは、固有コンポーネントと見なされてよい。
【0044】
図6は、3Dモデルデコーダ600の例のブロック図を表す。装置600の入力は、3Dモデルのビットストリーム、例えば、エンコーダ500によって生成されたビットストリームを含んでよい。圧縮されたビットストリームにおけるパターンに関連した情報は、パターンデコーダ620によって復号される。固有コンポーネントに関連した情報は、固有コンポーネントデコーダ650によって復号される。インスタンス情報の復号化はまた、ユーザにより選択されたモードに依存する。インスタンス情報グループモードが選択される場合は、インスタンス情報は、グループ化インスタンス情報デコーダ640を用いて復号される。さもなければ、それは、素インスタンス情報デコーダ630を用いて復号される。復号されたパターン、インスタンス情報及び固有コンポーネントは、モデル再構成モジュール660で出力3Dモデルを生成するよう再構成される。
【0045】
図7は、圧縮されたビットストリームを生成する方法700の例を表す。ビットストリームは、圧縮されたストリームを復号するための必要な情報を全て含むヘッダバッファ(PB3DMC_stream_header710)から始まる。情報は、次のものを含んでよい:
・原のモデルにおいて固有の部分が存在するかどうか,
・原のモデルにおいて少なくとも1つの反復構造が存在するかどうか,
・“グループ
化インスタンス変形モード”又は“素インスタンス変形モード”がこのビットストリームにおいて使用されているかどうか,
・原の3Dモデルに関する情報,
・インスタンスが有し得る属性のタイプに関する情報,
・形状を圧縮するために使用される3Dモデル圧縮方法,及び
・全ての3Dオブジェクト(必要な場合に、パターン及び他の部分)の接続性及び特性。
【0046】
原のモデルにおいて固有の部分及び反復構造が存在しない場合は(uni_part_bit==0&repeat_struc_bit==0)、ビットストリームの残りの部分は、PB3DMC_stream_headerにおいて示されている3Dモデル圧縮方法を用いる圧縮された入力3Dモデル(730)である。そうでない場合は、ビットストリームにおける次の部分は、幾らか存在する場合に(740)、全ての固有コンポーネントの圧縮された結果である(745)。少なくとも1つの反復構造が存在する場合は(750)、次のデータフィールドは、全てのパターンの圧縮された結果である(760)。インスタンス変形パッキングモードがビットストリームにおいて選択されているかどうかに依存して(770)、compr_insta_grouped_data(780)又はcompr_insta_elementary_data(785)のいずれかがビットストリームにおける次の部分である。
【0047】
表1において、ヘッダについての例となるシンタックス及びセマンティクスが本原理のために表されている。幾つかのデータフィールドは3DMCエクステンション[w11455,Final text of ISO/IEC 14496-16 4
th Edition,MPEG-3DGC,93th MPEG meeting,2011-02]のビットストリーム定義から取られている点に留意されたい。
【0048】
【表1】
ver_num:この32ビットの符号なし整数は、3Dモデル全体の頂点の数を含む。この値は、復号された3Dモデルを検証するために使用され得る。
tri_num:この32ビットの符号なし整数は、3Dモデル全体の三角形の数を含む。この値は、復号された3Dモデルを検証するために使用され得る。
default_coord_bbox:この1ビットの符号なし整数は、デフォルトの境界ボックスが3Dモデル全体の形状のために使用されるかどうかを示す。0は、他の境界ボックスを用いることを意味し、1は、デフォルトの境界ボックスを用いることを意味する。デフォルトの境界ボックスは、x
min=0.0、y
min=0.0、z
min=0.0、x
max=1.0、y
max=1.0、及びz
max=1.0として定義される。
ccord_bbox:このデータフィールドは、3Dモデル全体の形状の境界ボックスを含む。形状境界ボックスは、(x
min,y
min,z
min,x
max,y
max,z
max)によって定義される。
QP_coord:この5ビットの符号なし整数は、3Dモデル形状の品質パラメータを示す。QP_coordの最小値は3であり、最大値は31である。QP_coordは、式(10)におけるQP_Pattern又は式(15)におけるQB_EnterModelに対応してよい。
normal_binding:この2ビットの符号なし整数は、3Dモデルへの法線の結合を示す。許容値は、以下の表において記載される:
【表2】
default_normal_bbox:この1ビットの符号なし整数は、常に‘0’であるべきであり、これにより、デフォルトの境界ボックスが3Dモデル全体の法線のために使用されることを示す。法線のデフォルトの境界ボックスは、nx
min=0.0、ny
min=0.0、nz
min=0.0、nx
max=1.0、ny
max=1.0、及びnz
max=1.0として定義される。
QP_normal:この5ビットの符号なし整数は、3Dモデル形状の品質パラメータを示す。QP_normalの最小値は3であり、最大値は31である。
color_binding:この2ビットの符号なし整数は、3Dモデルへの色の結合を示す。以下の表は、許容値を示す:
【表3】
default_color_bbox:この1ビットの符号なし整数は、デフォルトの境界ボックスが3Dモデル全体の色のために使用されるかどうかを示す。0は、他の境界ボックスを用いることを意味し、1は、デフォルトの境界ボックスを用いることを意味する。デフォルトの境界ボックスは、r
min=0.0、g
min=0.0、b
min=0.0、r
max=1.0、g
max=1.0、及びb
max=1.0として定義される。
color_bbox:このデータフィールドは、3Dモデル全体の色の境界ボックスを含む。色境界ボックスは、(r
min,g
min,b
min,r
max,g
max,b
max)によって定義される。
QP_color:この5ビットの符号なし整数は、色の品質パラメータを示す。QP_colorの最小値は3であり、最大値は31である。
multi_texCoord_num:この5ビットの符号なし整数は、頂点/角ごとのテクスチャ座標の数を与える。
【表4】
default_texCoord_bbox:この1ビットの符号なし整数は、デフォルトの境界ボックスがテクスチャ座標のために使用されるかどうかを示す。0は、他の境界ボックスを用いること意味し、1は、デフォルトの境界ボックスを用いることを意味する。デフォルトの境界ボックスは、u
min=0.0、v
min=0.0、u
max=1.0及びv
max=1.0として定義される。
texCoord_bbox:このデータフィールドは、3Dモデル全体のテクスチャ座標の境界ボックスを含む。テクスチャ座標境界ボックスは、(u
min,v
min,u
max,v
max)によって定義される。
QP_texCoord:この5ビットの符号なし整数は、テクスチャ座標の品質パラメータを示す。QP_texCoordの最小値は3であり、最大値は31である。
multi_attribute_num:この5ビットの符号なし整数は、頂点/面/角ごとの属性の数を示す。
attribute_binding:この2ビットの符号なし整数は、3Dモデルへの属性の結合を示す。以下の表は、許容値を示す:
【表5】
default_attribute_bbox:この1ビットの符号なし整数は、デフォルトの境界ボックスが属性のために使用されるかどうかを示す。0は、他の境界ボックスを用いることを意味し、1は、デフォルトの境界ボックスを用いることを意味する。デフォルトの境界ボックスは、attribute_min[1..attribute_dim]=0.0、attribute_max[1..attribute_dim]=1.0として定義される。
attribute_bbox:このデータフィールドは、属性の境界ボックスを含む。属性境界ボックスは、(attribute_min[1..attribute_dim],attribute_max[1..attribute_dim])によって定義される。
QP_attribute:この5ビットの符号なし整数は、属性の品質パラメータを示す。QP_attributeの最小値は3であり、最大値は31である。
【0049】
表2において、固有の部分についての例となるシンタックス及びセマンティクスが本原理のために表されている:
【表6】
compr_uni_comp_data:このデータフィールドは、3d_model_compr_modeによって示される圧縮方法によって符号化されている全ての固有コンポーネントの圧縮された形状、接続性及び特性を含む。全ての固有コンポーネントは、圧縮より前に原型へ平行移動されている。
compr_uni_comp_transl:このデータフィールドは、全ての固有コンポーネントについての圧縮された平行移動ベクトルを含む。固有コンポーネント平行移動ベクトルは、最初に量子化、次いでエントロピ符号化によって、圧縮されている。このデータフィールドは、compr_uni_comp_dataとともに同位の固有コンポーネントを使用する。
bit_num_uni_comp_transl():この関数は、QP_coordに基づき夫々の固有コンポーネント平行移動ベクトルを量子化するために使用されるビットの数を計算する。
【0050】
表3において、反復構造についての例となるシンタックス及びセマンティクスが本原理のために表されている:
【表7】
comp_pattern_data:このデータフィールドは、3d_model_compr_modeによって示される圧縮方法によって符号化されている全てのパターンの圧縮された形状、接続性及び特性を含む。
comp_pattern_transl:このデータフィールドは、全てのパターン成分についての圧縮された平行移動ベクトルを含む。パターン平行移動ベクトルは、最初に量子化によって、次いでエントロピ符号化によって、圧縮されている。このデータフィールドは、compr_pattern_dataとともに同位のパターンを使用する。
compr_insta_elementary_data:このデータフィールドは、“素インスタンス変形モード”を用いる全てのインスタンスについての圧縮された変形データを含む。それは、バイトアライメントされた態様において圧縮されている。
compr_insta_grouped_data:このデータフィールドは、“グループ化インスタンス変形モード”を用いる全てのインスタンスについての圧縮された変形データを含む。それは、バイトアライメントされた態様において圧縮されている。
bit_num_pattern_transl():この関数は、QP_coordに基づき夫々のパターン成分の平行移動ベクトルを量子化するために使用されるビットの数を計算する。
【0051】
表4において、インスタンスについての例となるシンタックス及びセマンティクスが本原理のために表されている:
【表8】
insta_transl_bbox:このデータフィールドは、インスタンス平行移動情報を圧縮する場合に量子化が使用され得るように、全ての平行移動ベクトルの境界ボックスを含む。境界ボックスは、insta_transl_x
min、insta_tnrasl_y
min、insta_tnrasl_z
min、insta_transl_x
max、insta_tnrasl_y
max、insta_tnrasl_z
maxによって定義される。
compr_elem_insta_patternID:このデータフィールドは、i番目のインスタンスの圧縮されたパターンIDを含む。
elem_insta_flip_flag:この1ビットの符号なし整数は、i番目のインスタンスが対応するパターンと比べて反転されているかどうかを示す。反転されたパターンは、インスタンス三角形の法線が、対応するパターン三角形の逆方向にあることを意味する。0は、i番目のインスタンスが反転されていないことを意味し、1は、i番目のインスタンス反転されていることを意味する。
elem_insta_reflection_flag:この1ビットの符号なし整数は、i番目のインスタンスの変形が反転を含むかどうかを示す。0は、i番目のインスタンスの変形が反転を含まないことを意味し、1は、i番目のインスタンスの変形が反転を含むことを意味する。
elem_insta_attribute_header:このデータフィールドは、i番目のインスタンスの属性ヘッダを含む。
compr_elem_insta_transl:このデータフィールドは、i番目のインスタンスの圧縮された平行移動ベクトルを含む。
compr_elem_insta_rotat_spherical:このデータフィールドは、球形モードにおけるi番目のインスタンスの圧縮された回転変形を含む。
compr_elem_insta_scaling:このデータフィールドは、i番目のインスタンスの圧縮されたスケーリング係数を含む。
compr_elem_insta_error_compen_data:このデータフィールドは、i番目のインスタンスの圧縮された符号化誤差補償データを含む。
compr_elem_insta_attribute_data:このデータフィールドは、i番目のインスタンスの圧縮された属性データを含む。
bit_num_insta_tnrasl():この関数は、QP_coordに基づきインスタンス平行移動ベクトルを量子化するために使用されるビットの数を計算する。
need_error_compensation():この関数は、i番目のインスタンスの符号化誤差が補償されるべきかどうかを決定する。
bit_num_vertex_coding_error():この関数は、QP_coordに基づきi番目のインスタンスの夫々の頂点の符号化誤差を量子化するために使用されるビットの数を適応的に計算する。
【0052】
表5において、回転角度についての例となるシンタックス及びセマンティクスが本原理のために表されている。球形モードにおけるi番目のインスタンスの回転は、3つの角度、すなわち、アルファα(alpha)、ベータβ(beta)及びガンマγ(gamma)によって表現される:
【表9】
compr_elem_insta_rotat_alpha:このデータフィールドは、i番目のインスタンスの回転の圧縮されたアルファを含む。
compr_elem_insta_rotat_beta:このデータフィールドは、i番目のインスタンスの回転の圧縮されたベータを含む。
compr_elem_insta_rotat_gamma:このデータフィールドは、i番目のインスタンスの回転の圧縮されたガンマを含む。
bit_num_rotat_alpha():この関数は、QP_coord及び対応するパターンのスケールに基づきi番目のインスタンスの回転のアルファ値のためのビットの数を適応的に計算する。
bit_num_rotat_beta():この関数は、QP_coord及び対応するパターンのスケールに基づきi番目のインスタンスの回転のベータ値のためのビットの数を適応的に計算する。
bit_num_rotat_gamma():この関数は、QP_coord及び対応するパターンのスケールに基づきi番目のインスタンスの回転のガンマ値のためのビットの数を適応的に計算する。
【0053】
ここで記載される実施態様は、例えば、方法若しくは処理、装置、ソフトウェアプログラム、データストリーム、又は信号において実施されてよい。たとえ信号の実施形態との関連でしか論じられない(例えば、方法としてしか論じられない)としても、論じられる特徴の実施は他の形態(例えば、装置又はプログラム)においても実施されてよい。装置は、例えば、適切なハードウェア、ソフトウェア、及びファームウェアにおいて実施されてよい。方法は、概して、例えば、コンピュータ、マイクロプロセッサ、集積回路、又はプログラマブル・ロジック・デバイスを含む処理装置を指す、例えばプロセッサのような装置において実施されてよい。プロセッサはまた、例えば、コンピュータ、携帯電話機、ポータブル/パーソナル・デジタル・アシスタント(PDA)、及びエンドユーザ間の情報の通信を助ける他の装置のような通信装置を有する。
【0054】
本原理の“一実施形態”若しくは“実施形態”又は“一実施態様”若しくは“実施態様”及びそれらの他の変形への言及は、その実施形態に関連して記載される特定の特徴、構造、特性等が本原理の少なくとも1つの実施形態において含まれることを意味する。よって、本明細書の全体を通じて様々な箇所で現れる“一実施形態において”若しくは“実施形態において”又は“一実施態様において”若しくは“実施態様において”との表現及びその変形表現の出現は、必ずしも全て同じ実施形態に言及するわけではない。
【0055】
加えて、本願又はその特許請求の範囲は、様々な情報片を“決定する”と言及することがある。情報を決定することは、例えば、情報を推定すること、情報を計算すること、情報を予測すること、又はメモリから情報を取り出すことのうちの1又はそれ以上を含んでよい。
【0056】
更に、本願又はその特許請求の範囲は、様々な情報片に“アクセスする”と言及することがある。情報にアクセスすることは、例えば、情報を受信すること、情報を取り出すこと(例えば、メモリから)、情報を記憶すること、情報を処理すること、情報を送信すること、情報を移動すること、情報をコピーすること、情報を消去すること、情報を計算すること、情報を決定すること、情報を予測すること、又は情報を推定することのうちの1又はそれ以上を含んでよい。
【0057】
加えて、本願又はその特許請求の範囲は、様々な情報を“受信する”と言及することがある。受信することは、“アクセスすること”と同じく、広義の語であるよう意図される。情報を受信することは、例えば、情報にアクセスすること、又は情報を取り出すこと(例えば、メモリから)のうちの1又はそれ以上を含んでよい。更に、“受信すること”は、通常、何らかの形で、例えば、情報を記憶すること、情報を処理すること、情報を送信すること、情報を移動すること、情報をコピーすること、情報を消去すること、情報を計算すること、情報を決定すること、情報を予測すること、又は情報を推定することのような動作中に生じる。
【0058】
当業者には当然に、実施は、例えば、記憶又は送信され得る情報を搬送するようフォーマットされた様々な信号を生成してよい。情報は、例えば、方法を実行する命令、又は記載される実施のうちの1つによって生成されたデータを含んでよい。例えば、信号は、記載される実施形態のビットストリームを搬送するようフォーマットされてよい。そのような信号は、例えば、電磁波として(例えば、スペクトルの無線周波数部分を用いる)、又はベースバンド信号としてフォーマットされてよい。フォーマッティングは、例えば、データストリームを符号化し、符号化されたデータストリームにより搬送波を変調することを含んでよい。信号が搬送する情報は、例えば、アナログ又はデジタルの情報であってよい。信号は、知られている様々な異なる有線又は無線リンクを介して送信されてよい。信号は、プロセッサ可読媒体で記憶されてよい。
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
3Dモデルを表すビットストリームを生成又は復号する方法であって、
前記3Dモデルに関連するパターンを符号化するために使用される第1の量子化パラメータにアクセスするステップと、
前記パターンの、該パターンの変形として表されるインスタンスのスケールと、前記パターンのスケールとを決定するステップと、
前記第1の量子化パラメータ、前記インスタンスのスケール、及び前記パターンのスケールに応答して、前記インスタンスについての前記変形の回転部分のための第2の量子化パラメータを決定するステップと、
前記第2の量子化パラメータに応答して、前記インスタンスについての前記変形の前記回転部分の符号化又は復号化を実行するステップと
を有する方法。
(付記2)
前記第2の量子化パラメータは、前記インスタンスのスケールと前記パターンのスケールとの間の比に応答して決定される、
付記1に記載の方法。
(付記3)
前記インスタンスについての前記回転部分のスケールを決定するステップを更に有し、
前記第2の量子化パラメータは、前記インスタンスについての前記回転部分のスケールに更に応答して決定される、
付記1に記載の方法。
(付記4)
前記パターンのスケールは、前記3Dモデルにおける全てのパターンの境界ボックスの対角距離に応答して決定される、
付記1に記載の方法。
(付記5)
前記インスタンスのスケールは、当該インスタンスの境界ボックスの対角距離に応答して決定される、
付記1に記載の方法。
(付記6)
前記インスタンスについての前記変形の平行移動部分のスケールを決定するステップと、
前記第1の量子化パラメータ、前記平行移動部分のスケール、及び前記パターンのスケールに応答して、前記平行移動部分のための第3の量子化パラメータを決定するステップと
を更に有する、付記1に記載の方法。
(付記7)
前記平行移動部分のための前記第3の量子化パラメータは、前記平行移動部分のスケールと前記パターンのスケールとの間の比に応答して決定される、
付記6に記載の方法。
(付記8)
前記パターン、前記変形の前記回転部分、及び前記変形の平行移動部分を符号化することにより引き起こされる量子化誤差は、略同じである、
付記1に記載の方法。
(付記9)
前記パターンを符号化するために使用される前記第1の量子化パラメータは、前記3Dモデルのスケール及び前記パターンのスケールのうちの少なくとも1つに応答して決定される、
付記1に記載の方法。
(付記10)
付記1乃至9のうちいずれか一つに記載の方法に従って3Dモデルを表すビットストリームを生成又は復号する手段を有する装置。
(付記11)
付記1乃至9のうちいずれか一つに記載の方法に従ってビットストリームを生成又は復号する命令を記憶するコンピュータ可読媒体。
(付記12)
付記1乃至9のうちいずれか一つに記載の方法に従って生成されるビットストリームを記憶するコンピュータ可読記憶媒体。
【0059】
[関連出願]
本願は、2012年4月19日付けで出願された国際特許出願第PCT/CN2012/074388号に基づく優先権を主張するものである。なお、この国際特許出願は、参照により本願に援用される。