(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを含むコンピュータシステムにおいて、複数の視点からとられたシーンの複数の画像からシーンの３次元モデルを復元する方法であって、前記プロセッサが、
a)前記シーンを含む一組のボクセルを含む復元ボリュームを規定するステップと、
b)前記復元ボリュームの表面上に切り分けられていないボクセルの表面ボクセル・リスト（SVL）を初期化するステップと、
c)前記画像のそれぞれにおける各ピクセルについて、そのピクセルに投影する最も近いボクセルのIDを含む項目バッファを作って前記メモリに保管するステップと、
d) 前記SVLにおける各ボクセルを処理するステップであって、
dl) ボクセルが見える全ての画像におけるピクセルの集合vis(V)を計算し、
d2）vis（V）の色整合性を判定し、
d3）vis（V）が色整合でないならば、i) ボクセルVを切り分け、ii) SVLからボクセルVを取り除き、iii)ボクセルVに隣接しかつSVL上にないすべての切り分けられていないボクセルNをSVLに加える、処理ステップと、
e) 項目バッファを作るステップ以来いずれかのボクセルが切り分けられていれば、ステップc)およびd)を繰り返すステップと、
f)項目バッファを作るステップ以来どのボクセルも切り分けられていなければ、前記SVLを前記メモリに保存するステップと、
を実行することにより、前記３次元モデルを復元する方法。
【請求項２】
請求項１の方法であって、SVLを初期化するステップが、
復元ボリュームにおけるボクセルを使って各画像のための項目バッファを作ること、
各画像の各ピクセルPについて、ピクセルPの項目バッファにおけるボクセルIDに一致するIDを有するボクセルVがあり、該ボクセルVがSVL上に存在しないならば、ボクセルVをSVLに加えること、 を含む前記方法。
【請求項３】
前記各画像のための項目バッファを作るステップが、
b1）選ばれた画像の項目バッファにおいてピクセル位置を初期化するステップ、
b2）復元ボリューム中のボクセルを選ぶステップ、
b3)選ばれた画像への選ばれたボクセルの投影での各ピクセルについて、選ばれたボクセルからカメラへの距離が項目バッファに格納された距離より小さいならば、選ばれたボクセルからカメラまでの距離およびIDを項目バッファに格納するステップ、
b4）復元ボリュームにおける各ボクセルについてステップb2）およびb3）を繰り返すステップ、
b5）各画像についてステップb1）からb4）を繰り返すステップ、を含む請求項２に記載の方法。
【請求項４】
前記項目バッファを作るステップが、
c1）選ばれた画像について項目バッファでのピクセル位置を初期化するステップ、
c2）SVLにおけるボクセルを選ぶステップ、
c3) 選ばれた画像への選ばれたボクセルの投影での各ピクセルについて、選ばれたボクセルからカメラへの距離が項目バッファに格納された距離より小さいならば、選ばれたボクセルからカメラまでの距離およびIDを項目バッファに格納するステップ、
c4）SVL上の各ボクセルについてステップc2)およびc3)を繰り返すステップ、および
c5）各画像についてステップc1）からc4）を繰り返すステップ、を含む請求項１に記載の方法。
【請求項５】
前記切り分けられていないボクセルをSVLに加えるステップは、SVL上の全てのボクセルがステップd)の現在の繰り返しにおいて処理された後に、SVLに切り分けられていないボクセルを加えることを含む、請求項１に記載の方法。
【請求項６】
切り分けされていないボクセルNをSVLに加える前記ステップは、ステップd)の次の繰返しまで処理されない位置でSVLに切り分けされていないボクセルを加えることを含む請求項１に記載の方法。
【請求項７】
ピクセルの集合vis(V)を計算する前記ステップは、ピクセルPの項目バッファにおけるボクセルIDがボクセルVのIDと一致するならば、画像のそれぞれへのボクセルVの投影における各ピクセルPをvis(V)に加えるステップを含む請求項１に記載の方法。
【請求項８】
プロセッサとメモリを含むコンピュータシステムにおいて、複数の視点からとられたシーンの複数の画像からシーンの３次元モデルを復元する方法であって、前記プロセッサが、
a)前記シーンを含む一組のボクセルを含む復元ボリュームを規定するステップと、
b)前記復元ボリュームの表面上に切り分けられていないボクセルを含む表面ボクセル・リスト（SVL）を初期化するステップと、
c) 複数の画像のそれぞれにおける各ピクセルについて、該ピクセル上に投影するすべての表面ボクセルのリストであって、ボクセルから画像のカメラまでの距離に従ってソートされたリストを含む、階層化された深さ画像(LDI)を作るステップと、
d)変更された可視性SVL（CVSVL）にSVLをコピーするステップと、
e)CVSVLにボクセルがある間、
e1）CVSVL上のボクセルVを選び、CVSVLからボクセルVを取り除き、
e2）ボクセルVが見える全ての画像におけるピクセルの集合vis(V)を計算し、
e3）vis(V)の色整合性を判定し、
e4）vis(V)が色整合でないならば、i) ボクセルVを切り分け、ii) SVLからボクセルVを取り除き、iii) LDIからボクセルVを削除し、iv) ボクセルVがピクセルPのLDI(P)のヘッドにあるならば、CVSVLにLDI(P)上の次のボクセルを加え、v)ボクセルVに隣接するそれぞれの切り分けられていないボクセルNにつき、その可視性が変化していれば、ボクセルNをCVSVLに加え、ボクセルNをLDIに挿入する、ステップと、
f)CVSVLが空であるとき、SVLを前記メモリに保存するステップと、
を実行することにより、前記３次元モデルを復元する方法。
【請求項９】
請求項８の方法であって、SVLを初期化するステップが、
復元ボリュームのボクセルを使って各画像のための項目バッファを作ること、
各画像の各ピクセルPについて、ピクセルPの項目バッファ中のボクセルIDに一致するIDを有するボクセルVがあり、該ボクセルVがSVL上に存在しないならば、ボクセルVをSVLに加えること、を含む前記方法。
【請求項１０】
前記各画像のための項目バッファを作るステップが、
b1）選ばれた画像の項目バッファにおいてピクセル位置を初期化するステップ、
b2）復元ボリューム中のボクセルを選ぶステップ、
b3)選ばれた画像への選ばれたボクセルの投影での各ピクセルについて、選ばれたボクセルからカメラへの距離が項目バッファに格納された距離より小さいならば、選ばれたボクセルからカメラまでの距離およびIDを項目バッファに格納するステップ、
b4）復元ボリュームにおける各ボクセルについてステップb2）およびb3）を繰り返すステップ、b5）各画像についてステップb1）からb4）を繰り返すステップ、
を含む請求項９に記載の方法。
【請求項１１】
前記階層化された深さ画像(LDI)を作るステップが、
c1）前記複数の画像から１つの画像を選択するステップ、
c2）SVLにおけるボクセルを選ぶステップ、
c3) 選ばれた画像への選ばれたボクセルの投影におけるすべてのピクセルについて、選ばれたボクセルから選ばれた画像のカメラまでの距離に従って、前記選ばれたボクセルを前記階層化された深さ画像に挿入するステップ、
c4）SVL上の各ボクセルについてステップc2)およびc3)を繰り返すステップ、
c5）前記複数の画像のおける画像のそれぞれについてステップc1）からc4）を繰り返すステップ、を含む請求項８に記載の方法。
【請求項１２】
ピクセルの集合vis(V)を計算する前記ステップは、ピクセルPのLDI(P)の最初のエントリにおけるボクセルIDがボクセルVのIDと一致するならば、ボクセルVの画像のそれぞれへの投影における各ピクセルPをvis(V)に加えるステップを含む、請求項１に記載の方法。
【請求項１３】
複数の視点からとられたシーンの複数の画像からシーンの３次元モデルを復元するための装置であって、前記シーンの複数の画像を表す画像データを格納する記憶装置と、前記記憶装置における前記画像データを処理するディジタル・コンピュータとを備え、該ディジタル・コンピュータは、
a)前記シーンを含む一組のボクセルを含む復元ボリュームを規定する手段と、
b)前記復元ボリュームの表面上に切り分けられていないボクセルを含む表面ボクセル・リスト（SVL）を初期化する手段と、
c)前記複数の画像のそれぞれにおける各ピクセルについて、そのピクセルに投影する最も近いボクセルのIDを含む項目バッファを作る手段と、
d) 前記SVLにおける各ボクセルを処理する手段であって、
dl) ボクセルが見える全ての画像におけるピクセルの集合vis(V)を計算する手段、
d2）vis（V）の色整合性を判定する手段、
d3）vis（V）が色整合でないならば、i) ボクセルVを切り分け、ii) SVLからボクセルVを取り除き、iii)ボクセルVに隣接しかつSVL上にないすべての切り分けられていないボクセルNをSVLに加える手段、を有する処理手段と、
e) 項目バッファが作られて以来いずれかのボクセルが切り分けられていれば、項目バッファの作成および前記SVLにおける各ボクセルVの処理を繰り返す手段と、
f)項目バッファが作られて以来どのボクセルも切り分けられていなければ、前記SVLを保存するための手段と、を含む装置。
【請求項１４】
複数の視点からとられたシーンの複数の画像からシーンの３次元モデルを復元するための装置であって、前記シーンの複数の画像を表す画像データを格納する記憶装置と、前記記憶装置における前記画像データを処理するディジタル・コンピュータとを備え、該ディジタル・コンピュータは、
a)前記シーンを含む一組のボクセルを含む復元ボリュームを規定する手段と、
b)前記復元ボリュームの表面上に切り分けられていないボクセルを含む表面ボクセル・リスト（SVL）を初期化する手段と、
c) 画像のそれぞれにおける各ピクセルについて、該ピクセル上に投影するすべての表面ボクセルのリストであって、ボクセルから画像のカメラまでの距離に従ってソートされたリストを含む、階層化された深さ画像(LDI)を作る手段と、
d)変更された可視性SVL（CVSVL）にSVLをコピーする手段と、
e)CVSVLにボクセルがある間、
e1）CVSVL上のボクセルVを選び、CVSVLからのボクセルVを取り除き、
e2）ボクセルVが見える全ての画像のピクセルの集合vis(V)を計算し、
e3）vis(V)の色整合性を判定し、
e4）vis(V)が色整合でないならば、i) ボクセルVを切り分け、ii) SVLからボクセルVを取り除き、iii) LDIからボクセルVを削除し、iv) ボクセルVがピクセルPのLDI(P)のヘッドにあるならば、CVSVLにLDI(P)上の次のボクセルを加え、v)ボクセルVに隣接するそれぞれの切り分けられていないボクセルNにつき、その可視性が変化していれば、ボクセルNをCVSVLに加え、ボクセルNをLDIに挿入する、手段と、
f)CVSVLが空であるとき、SVLを保存するための手段と、を備える装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、シーンの一組の入力イメージから体積シーンを復元するための方法および装置に関し、より具体的には、入力イメージと整合性のあるシーンの高品質の3Dモデルを復元するための方法および装置に関する。
【０００２】
【従来の技術】
今日、画像ベースのレンダリング手法に大きな関心が寄せられている。これらの手法は、コンピューターグラフィックス、コンピュータビジョン、画像処理および写真測定の分野から得られる。これらの手法の目標は、自然であるか合成であるかを問わず一つのシーンの２以上の画像から新しいビューを計算することである。一つのシーンのいくつかの画像が異なるカメラ視点から得られる。そのイメージデータは、そのシーンの3次元（3D）コンピュータモデルを作るために使われる。その3Dモデルは、そのカメラ視点と異なる視点から、そのシーンの１つまたは複数の画像を計算するために使うことができる。新しい画像は、所望の視点にその3Dモデルを投影することによって合成される。この手法は「新しいビュー合成」と呼ぶことができる。新しいビュー合成のいくつかの手法が先行技術で開示されている。
【０００３】
ビュー・モーフィングおよび明るいフィールドは、中間ステップとして3Dモデルを創らない新しいビュー合成の問題に対するソリューションである。ビュー・モーフィングは、この問題に対する最も単純なソリューションの1つである。一つのシーンの2つの画像が与えられると、それは、補間法を用いてその入力イメージの間で視点的に中間において新しい画像を作る。ビュー・モーフィングはそのシーンについて3D情報を使わないので、その結果がたびたび説得力があるように見えるけれども、一般に厳密に正しい画像をレンダすることができない。そのアルゴリズムは、お互いを遮断するそのシーンにおける複数のオブジェクトを正しくレンダするには不十分な手段であることが明らかである。
【０００４】
ルミグラフ（lumigraph）および明るいフィールドの手法は、ある容積体（ボリューム）の表面上のあらゆるポイントからあらゆる方向に放射される光のサンプリングを使う。理論上、データのそのような集合は、ほとんど完全な新しいビューを生成することができる。しかし、実際問題として、高品質画像を総合するために必要とされる大量の入力データは、その取込みおよび記憶が非実用的である。それにもかかわらず、これらの方法は、他の競合する手法に対して1つの利点、すなわち、それらは、鏡面反射を正しく扱うという利点を有する。
【０００５】
ステレオ手法は、シーンで同じポイントに対応する、２以上の入力イメージにおけるポイントを見つける。その手法は、それからシーン・ポイントの深さを判定するためにカメラ位置および三角測量についての知識を使う。あいにく、ステレオは任意の視点からとられる画像に適用するのが難しい。入力視点が遠く離れているならば、対応する画像ポイントを自動的に見つけるのは難しい。他方、視点が近くであるならば、小さい測定誤差は計算された深さに大きな誤差を生じさせる。さらに、ステレオは2D深度マップを自然に生成し、そのようなマップを一体化して本当の3Dモデルにすることは、挑戦的な問題である。
【０００６】
ボクセル色付けおよび空間切り分け（space carving）は、乱反射面の特性を利用する。乱反射面上のポイントは、「色整合」である、すなわち、それらのポイントが見える全ての画像においてそれらのポイントは類似した色の上に投影する。これらの方法は、そのシーンの任意の数のキャリブレート（calibrate）された画像、およびシーンのスーパーセットである一組のボリューム要素、すなわちボクセルから始める。それぞれのボクセルは、それが見える全ての画像に投影される。ボクセルがいくつかの画像で矛盾する色の上へ投影するならば、それは表面上にあってはならず、切り分け（carve）られる、すなわち透明と宣言される。その他の場合は、ボクセルは、「色をつけられる」、すなわち不透明であると宣言され、その投影の色を割り当てられる。全ての不透明なボクセルが画像における一貫した色に投影するとき、これらのアルゴリズムは止まる。不透明なボクセルの最後の組は色整合しているので、それはそのシーンの良いモデルである。
【０００７】
ボクセル色付けおよび空間切り分けは、それらが可視性、すなわちどのボクセルが画像のどのピクセルから見えるかの知識、を判断する手段において異なる。ボクセルは、それが画像の外側に投影するか、または現在不透明と考えられている他のボクセルによってブロックされるならば、画像から見えなくなる。ボクセルの不透明性が変化するとき、他のボクセルの可視性も潜在的に変化するので、可視性を新しく保つのために効率的な手法が必要とされる。
【０００８】
ボクセル色付けは、可視性計算を単純化するためにカメラ位置に制約を置く。それぞれのカメラに関して前から後ろの順で一つのスキャンでボクセルが処理されることができるように、カメラが配置される必要がある。一般的に、この条件は、すべてのカメラをそのシーンの一方の側に配置し、カメラから順に遠くなる平面でボクセルをスキャンすることによって満足される。このように、所与のボクセルが色整合性についてチェックされる前に、所与のボクセルを遮断するかもしれない全てのボクセルの透明性が判定される。それは可視性の計算を単純化するけれども、カメラ位置上の制約は重要な制限である。例えば、カメラはシーンを囲むことができないので、いくつかの表面はどの画像でも見ることができず、それゆえに復元することができない。
【０００９】
空間切り分けは、カメラ位置の制約を取り除く。カメラを任意に置くと、複数のボクセルを順序に関係なく１回スキャンしても、最終的なモデルにおけるそれぞれボクセルの可視性（およびその色整合性）を正しく計算することができない。変化する不完全な可視性情報を使って、切り分けの間に複数回ボクセルの整合性を評価し、終わりに色整合した復元を得るアルゴリズムが設計された
空間切り分けは、初めに全てのボクセルを不透明と考え、ボクセルを透明に変えるだけで、その逆は行わない。従って、いくつかのボクセルが切り分けられるにつれて、残りの不透明なボクセルが画像から見えるようになってくる。整合性関数は単調（monotonic）と仮定され、このことは、SをS’のサブセットとして、任意の２組のピクセルSおよびS’について、もしSが矛盾しているならば、S’も矛盾していることを意味する。アルゴリズムが走るにつれてボクセルの可視性が増加するだけで、整合性関数が単調であるとすると、切り分けは保守的であり、最終モデルにおいて色整合するのであれば、そのボクセルは切り分けられない。
【００１０】
空間切り分けはボクセル色付けと同じように色整合性のために複数のボクセルを、一度に一平面のボクセルを評価しながらスキャンする。それは、移動する平面の後にカメラがある画像だけを使うことによって、スキャンがカメラに対して前から後ろであることを強制する。このように、ボクセルが評価されるとき、現在使われているカメラからそれを遮断するかもしれない他のボクセルについて透明性はすでに知られている。ボクセル色付けとは異なり、空間切り分けは、典型的には、３軸のそれぞれの正方向および負方向に沿って複数のスキャンを使用する。切り分けが保守的であるので、不透明なボクセルの組は、所望の色整合したモデルの、アルゴリズムが走るにつれて縮小するスーパーセットである。
【００１１】
空間切り分けは、切り分けてはならないボクセルを切り分けることはないが、色矛盾するいくつかのボクセルを含むモデルを生成することがありそうである。スキャンの間、チェックされているボクセルがそれらのカメラから見えるときでも、移動平面より前にあるカメラが色整合性のチェックのために使われない。それゆえに、ボクセルの色整合性は、一般に、それから見える画像の全ての集合にわたってチェックされることはない。
【００１２】
【発明が解決しようとする課題】
従って、シーンの測定された画像からシーンの3Dモデルを復元するための改善された方法および装置に対する必要性が存在する。
【００１３】
【課題を解決するための手段】
発明の第１側面によると、異なる視点からとられるシーンの複数の画像から、シーンの3次元モデルを復元する方法および装置が提供される。この方法は、次のステップを含んでいる。
【００１４】
a)そのシーンを含む一組のボクセルの復元ボリュームを定義するステップ、
b)復元ボリュームの表面上で、切り分けされないボクセルを含む表面ボクセル・リスト（SVL）を初期化するステップ、
c)それぞれ画像における各ピクセルについて、ピクセルに投影する最も近いボクセルのIDを含む項目バッファを作るステップ、
d)SVLでそれぞれのボクセルVを処理するステップ、
e)項目バッファを作るステップ以来いずれかのボクセルが切り分けられていれば、ステップc)およびd)を繰り返すステップ、
およびf)項目バッファを作るステップ以来どのボクセルも切り分けられていなければ、SVLを保存するステップ。
【００１５】
SVLでの各ボクセルVは、d1)ボクセルVが見える全ての画像におけるピクセルの集合vis(V)を計算すること、d2）vis(V)の色整合性を判定すること、およびd3）vis(V)が色整合でないならば、i)ボクセルVを切り分け、ii)SVLからボクセルVを取り除き、iii)ボクセルVに隣接しSVL上にないすべての切り分けられていないボクセルをSVLに加えることによって、処理される。
【００１６】
発明の別の側面によると、異なる視点からとられるシーンの複数の画像から、シーンの3次元モデルを復元するための方法および装置が提供される。この方法は、次のステップを含む。
【００１７】
a)シーンを含む一組のボクセルを含んでいる復元ボリュームを定義するステップ、
b)復元ボリュームの表面上で切り分けられていないボクセルを含む表面ボクセル・リスト（SVL）を初期化するステップ、
c)画像のそれぞれにおける各ピクセルについて、そのピクセルに投影するすべての表面ボクセルのリストで、ボクセルから画像のカメラまでの距離に従ってソートされたリストを含む階層化された深さ画像（LDI）を作るステップ、
d)SVLを可視性を変更されたSVL (CVSVL)にコピーするステップ、
e)CVSVLのボクセルを処理するステップ、
f)CVSVLが空のとき、SVLを保存するステップ。
【００１８】
CVSVLにボクセルがあるとき、CVSVLのボクセルの処理は、次のことを含む。
【００１９】
e1）CVSVL上のボクセルVを選びCVSVLからボクセルVを除去すること、
e2）ボクセルVが見える全ての画像におけるピクセルの集合vis(V)を計算すること、
e3）vis(V)の色整合性を判定すること、
およびe4）vis(V)が色整合でないならば、i)ボクセルVを切り分け、ii)SVLからボクセルVを除去し、iii)LDIからボクセルVを削除し、iv)ボクセルVがLDI(P)のヘッドにあるならば、LDI(P)に次のボクセルを加え、v)可視性が変化していればボクセルNをCVSVLに加え、ボクセルVをLDIに挿入することによって、ボクセルVに隣接する切り分けられていない各ボクセルNを処理すること。
【００２０】
【発明の実施の形態】
発明に従ってシーンの３次元モデルの復元を示す模型的な図が図１に示される。カメラ10、12、14、16および18は、異なるカメラ視点からシーン30のそれぞれの入力イメージ20、22、24、26、28を得る。それぞれのカメラ1O、12、14、16および18の距離、位置およびオリエンテーションは知られており、得られる画像はキャリブレート（calibrate）された画像として定義される。下で記述されるアルゴリズムは、カメラの位置に制約をつけない。カメラは、シーン内および周辺の任意の位置に置かれることができる。カメラはシーンを囲むのが好ましい。この構成は、シーンについて最も完全な情報を提供し、シーン30の最高品質の復元を提供する。実際的な状況で、シーンの10から40個の画像が異なる視点から得られる。静的なシーンでは、同じカメラを用いて時間を変えて複数の画像をとることができる。
【００２１】
先に述べたように、入力イメージ20、22、24、26および28は、カメラ10、12、14、16および18の視点と異なる視点からのシーン30の１つまたは複数の新しいビューすなわち画像を生成するために使われることができる。新しいビュー合成は、まず入力画像20、22、24、26および28からシーン30の3次元モデルを復元することを必要とする。3次元モデルは、次いでシーン30の１つまたは複数の新しい画像を生成（レンダ）するために使われる。この発明のボクセル色付けアルゴリズムは、シーン30の3次元モデルの復元に関連する。
【００２２】
この発明は、斬新なアルゴリズムを容積体シーンの復元を提供する。任意の既知の位置からとられるシーンの一組の画像が与えられたとすると、アルゴリズムは入力イメージと整合するシーンの3Dモデルを構築する。このアルゴリズムは、一般化されたボクセル色付けすなわちGVCアルゴリズムと呼ばれる。このアルゴリズムは、ボクセルを使用してシーンをモデル化し、シーンの表面ポイントおよびそれらを表すボクセルが入力画像の調和した色に投影するという事実を利用する。ボクセル色付けおよび空間切り分けはシーン復元問題に対する成功したソリューションであるけれども、この発明のアルゴリズムはそれらに対し利点を有する。ボクセル色付けと違って、この発明は、入力カメラがシーン内およびその周辺の任意の位置に置かれるのを許す。ボクセルの色整合性をチェックするとき、この発明はボクセルが見える画像の全ての集合を使う。これに対し、空間切り分けは、これらの画像のサブセットを使うだけである。この発明では、結果として、よりよい新しいビューが合成される。
【００２３】
２つの種類の一般化されたボクセル色付けアルゴリズムが開発された。GVCおよびGVC-LDIである。GVC-LDIアルゴリズムは、基本的なGVCアルゴリズムの増強である。1つのボクセルの切り分けは、潜在的に他のボクセルの可視性を変更する。切り分けられていないボクセルの可視性が変化するとき、その色整合性が再評価されなければならず、それが非整合の色であるとわかれば、それも切り分けられなければならない。GVC-LDIアルゴリズムは、別のボクセルが切り分けられるとき正確にどのボクセルの可視性が変化したかを判断するために階層化された深さ画像（LDI）を使用し、正しいボクセルを再評価することができる。同じ状況で、GVCアルゴリズムは、どのボクセルが再評価される必要があるかを知らないので、現在のモデルにおける全てのボクセルを再評価する。したがって、GVC-LDIアルゴリズムは、復元中にGVCアルゴリズムより非常に少ない色整合性評価を実行する。しかし、GVCアルゴリズムは、GVC-LDIアルゴリズムよりかなり小さいメモリを使う。両方のアルゴリズムは、全てのボクセルが不透明であると初めに仮定する。それらは、残りの全てのボクセルがそれらが見える画像において整合した色に投影するまで、色整合していないボクセルを切り分ける。
【００２４】
一般化されたボクセル色付けすなわちGVCアルゴリズムは、次のようにして可視性を判断する。まず、あらゆるボクセルは、ユニークなIDを割り当てられる。それから、項目バッファが図４および５に示すようにそれぞれの画像のために造られる。全ての不透明なボクセルの標準的なＺ-バッファ・レンダリングが実行されるが、各ピクセルにボクセル・色を格納する代わりに、ボクセルIDが格納される。このように、ボクセルが生成（レンダ）されたあと、項目バッファでの各ピクセルはそれに投影する最も近い不透明ボクセルのIDを含む。これが必要とされる可視性情報である。
【００２５】
有効な項目バッファが画像のそれぞれについて計算されたあと、図6に示すように、ボクセルVが見える全てのピクセルの集合vis(V)を計算することができる。vis(V)は次のように計算する。ボクセルVが各画像に投影される。ボクセルVの投影におけるあらゆるピクセルPについて、ピクセルPのための項目バッファがボクセルVのIDを含むならば、ピクセルPがvis(V)に加えられる。ボクセルVの色整合性をチェックするために、整合性関数コンシスト（）がvis(V)に適用される、すなわちコンシスト（vis(V)）が計算される。
【００２６】
ボクセルを切り分けると、残りの切り分けられていないボクセルの可視性が変えられ、項目バッファが可視性情報を維持するために使われるので、項目バッファは定期的に更新される必要がある。GVCアルゴリズムは、項目バッファを再計算することによってこれを行う。このプロセスは時間がかかるから、GVCアルゴリズムは項目バッファの更新の間で多くのボクセルを切り分けることを許される。その結果、項目バッファは、多くの時間において古くなっており、計算された集合vis(V)は、ボクセルVが見える全てのピクセルのサブセットであることが保証されるだけである。しかし、切り分けは保守的であるから、切り分けられるべきでないボクセルが切り分けられることはない。GVCアルゴリズムの最終的な繰返しの間に切り分けが発生しないので、可視性情報は、最新の状態にとどまる。あらゆるボクセルは最終的な繰返しにおいて色整合性のためにチェックされるので、最終的なモデルは色整合している。
【００２７】
切り分けが進むにつれて、各ボクセルは、次の3つのカテゴリのうちの1つになる。1)色不整合とされ、切り分けられた、2）切り分けられていないボクセルの集合の表面上にあり、評価されるときはいつでも色整合であるとされる、3）切り分けられていないボクセルに囲まれているので、どの画像からも見えず、その色整合性は未定義である。
【００２８】
ボクセルあたり１アレイのビットがどのボクセルが切り分けられたかを記録するのに使われる。このデータ構造は、フローチャートにおいて「切り分けされた」で示され、あらゆるボクセルについて最初は偽にセットされている。「表面ボクセル・リスト」（SVL）と呼ばれているデータ構造が、上記のボクセルの第２カテゴリを識別するために使われる。SVLは、他のボクセルによって囲まれていないボクセルの集合に初期化されている。項目バッファは初期化されており、SVL上の全てのボクセルを生成（レンダ）することによって、その後更新される。上記の第3のカテゴリのボクセルは、内部ボクセルと呼ばれる。内部ボクセルは不透明であるけれども、それらはどの画像からも見えないので、項目バッファに生成（レンダ）される必要はない。ボクセルが切り分けされるとき、隣接した内部ボクセルは表面ボクセルになりSVLに加えられる。ボクセルがSVLに２度以上加えられのを避けるために、ボクセルがすでにSVL上にあるかどうか判定する速い手段が必要である。ハッシュテーブルがこの目的のために維持される。
【００２９】
GVCアルゴリズムが終わったとき、不透明ボクセルの最終組が関数切り分け(V)を保存することによって記録されることができる。しかし、画像から見えるボクセルだけを保存することが望ましいならば、SVLの見えるサブセットを識別するために項目バッファを使うことができる。閉じられた表面が所望であるならば、SVL全体を保存することができる。
【００３０】
この発明の第１の実施例に従った一般化されたボクセル色づけアルゴリズムの例のフローチャートが図2に示される。図2のフローチャートに対応する擬似コードが図2Aに示される。ステップ100で、表面ボクセル・リスト（SVL）が初期化される。上述したようにSVLは、ボクセル・ボリュームの表面上の切り分けされていない（不透明の）ボクセルのリストである。ボクセル・ボリュームが選ばれ、ボクセルIDがボクセル・ボリュームの各ボクセルについて割り当てられていると仮定する。初期のボクセル・ボリュームは、シーンを含むように選ばれ、形状的に概して矩形であるか立方形である。しかし、任意に形づくられた初期ボクセル・ボリュームを使用することもできる。SVLを初期化するためのプロセスは、図3を参照して下で記述される。ボクセルが切り分けられるにつれて、SVLが変化する。
【００３１】
ステップ102で、項目バッファがSVLを使って各画像のために作られる。各ピクセルのための項目バッファは、それに投影する最も近いボクセルのＩＤおよび最も近いボクセルからカメラまでの距離を含む。項目バッファを作るためのプロセスは図4を参照して後に説明する。
【００３２】
ステップ104で、SVL上のボクセルが選ばれ、vis(V)がステップI 06で計算される。上述したように、vis(V)はボクセルVが見える全ての画像における全ピクセルの集合である。vis(V)を計算するためのプロセスは図6を参照しての後に説明する。
【００３３】
ステップ110において、vis(V)の色整合性が判定される。上述したように、vis(V)はボクセルVが見える画像における全ピクセルの集合である。一般に、vis(V)の色整合性は、ボクセルVが不透明なボクセルであるか透明ボクセルであるかを判定するために使われる。不透明なボクセルは復元中のシーンの一部分であり、透明ボクセルは一般的にシーンの空の部分である。色整合性判定は、シーンの表面上のポイントは、そのポイントが見える全てのピクセルにおいて同じまたはおよそ同じ色を有するという事実に基づく。対照的に、シーンの表面上にないポイントに対応する複数のピクセルの色は、空のボリュームを異なる方向から見るとき予測されるように、一致しない。vis(V)の色整合性を判定するために、vis(V)でのピクセルの色が、色平均変数および色標準偏差変数に加えられる。色平均変数は、ボクセルVの投影におけるピクセルの平均色を表す。色標準偏差変数は、全画像にわたるボクセルVに対応するるピクセルの集合における色の変化の目安である。計算された色標準偏差値は、色付けしきい値と比較される。1つの方法では、色付けしきい値は固定である。別の方法では、色付けしきい値は、米国特許出願第09/273934号（1999年３月22日出願）で記述されるような複数の画像にわたる色変化の平均の関数である。色標準偏差値が、色付けしきい値より小さく、ボクセルVの異なる投影において色が整合していることが示されると、ボクセルVは不透明とみなされ、その色は計算された色平均値としてセットされる。このように、ボクセルの色は、vis(V)の投影における平均色にセットされる。vis(V)のピクセルが色整合していると判定されるならば、プロセスはステップ122に進む。色標準偏差値が色付けしきい値より小さくないならば、ボクセルVは、ステップ112において切り分けされているとマークされ、SVLから除去される。切り分けられたボクセルは、透明と判定されたボクセルと定義される。
【００３４】
ボクセルVが切り分けされるとき、ボクセルVに隣接したボクセルが１つまたは複数の画像において見えるようになることある。ステップ114で、ボクセルVに隣接するボクセルNが選ばれる。ステップ16において、ボクセルNが切り分けされておらず、SVL上にないことが判定されるならば、ボクセルNはステップ118でSVLに加えられる。ボクセルNが切り分けされているか、すでにSVL上にあるならば、プロセスはステップ120に進む。ボクセルVに隣接するボクセルがもっとあることがステップ120で判定されるならば、プロセスは次に近いボクセルを処理するためにステップ1 14へ戻る。全ての隣接したボクセルが処理されたあと、プロセスはステップ122に進む。SVLにもっとボクセルがあることがステップ122で判定されるならば、プロセスはSVL上の次のボクセルを処理するためにステップ104へ戻る。SVLにおける全てのボクセルが処理されたあと、項目バッファが作られて以来、いずれかのボクセルが切り分けされたかどうか、ステップ124で判定される。ボクセルが切り分けされたならば、各画像について更新した項目バッファを作るためにステップ102に戻る。
【００３５】
図2の例でのGVCアルゴリズムは、それぞれ画像のための更新された項目バッファを作る前にSVL上で全てのボクセルを処理する。所望の場合、更新された項目バッファがより頻繁に作られてもよいことが理解されるであろう。たとえば、更新された項目バッファは、予め定めた数のボクセルが処理された後、またはSVL上のあらかじめ決められたパーセンテージのボクセルが処理された後に作られることができる。項目バッファが更新される頻度は、項目バッファを更新するために必要にされる時間とボクセルを処理するために古い可視性情報を使うという好ましくない状態との間のトレードオフである。しかし、上で指摘したように、そうすべきでないボクセルが切り分けされることはない。
【００３６】
ステップ118を再び参照すると、切り分けの結果見えるようになったボクセルNの色整合性をチェックすることを、主な処理ループの次の繰返しまで避けることが望ましいが、必ずそうしなければならない訳ではない。これは、ループですでに通られたポイントでSVLにボクセルNを挿入することによって達成することができる。代わりに、現在の繰返しの完了までボクセルNを一時的に新しいSVLに加え、次いでSVLにコピーすることができる。
【００３７】
項目バッファが作られて以来、ボクセルが切り分けされていなことがステップ124で判定されるならば、SVLがステップ126で保存される。SVLは、この点で正確にシーンを表す不透明な表面ボクセルのリストを含む。
【００３８】
図2のステップ100に対応する、SVLを初期化するプロセスが図3に示される。ステップ150で、復元ボリュームにおける全てのボクセルを使って各画像のために項目バッファが作られる。上述したように、各ピクセルのための項目バッファは、その上に投影する最も近い切り分けられていないボクセルのIDを含む。項目バッファを作るためのプロセスは、図4に関連して下で記述される。画像Ｉがステップ152で選ばれ、画像ＩにおけるピクセルPがステップ154で選ばれる。ステップ156で、ピクセルPの項目バッファに含まれるボクセルIDである、PボクセルIDと一致するIDを有するボクセルがあるかどうか判定される。ピクセルPのための項目バッファがボクセルIDを含まないならば、プロセスは、ステップ162に進む。その項目バッファがボクセルIDを含むならば、ボクセルVがすでにSVL上にあるかどうか、ステップ158で判定される。ボクセルVがすでにSVL上にあるならば、プロセスはステップ162に進む。ボクセルVがSVL上にないならば、ボクセルVがステップ160でSVLに加えられる。画像Ｉに処理すべきピクセルがもっとあるならば、ステップ162によってプロセスはステップ154に戻される。処理すべき画像がもっとあるならば、ステップ1 64によってプロセスはステップ152に戻される。
【００３９】
画像Ｉおよび１組のボクセルSのための項目バッファが図４に示される。図４の処理は、各画像について図2のステップ102で繰り返される。ステップ180で画像Ｉ中のピクセルPが選ばれる。各ピクセルのための項目バッファは、ボクセルIDであるP.ボクセルIDおよびボクセルの距離であるP.距離を含む。ステップ182で、ピクセルPのためのボクセルIDがノーボクセルにセットされ、ボクセル距離が非常に遠いにセットされる。ステップ184で判定されるように、画像Ｉでに残っているピクセルがあるならば、プロセスは画像Ｉの次のピクセルの処理のためにステップ180へ戻る。ステップ180、182および184を含むループは、画像Ｉの各ピクセルの項目バッファをリセットさせる。ステップ186で、ボクセルSの集合でのボクセルVが選ばれ、ステップ188で画像ＩへのボクセルVの投影の中からピクセルＰが選ばれる。ステップ190で、ピクセルＰの項目バッファに含まれる距離であるP.距離がカメラからボクセルVまでの距離より大きいかどうか判定される。答えがイエスであり、ボクセルＶが項目バッファのボクセルよりもカメラに近いことが示されると、項目バッファのボクセルがステップ192でボクセルＶと置き換えられる。特に、P.ボクセルIDの値がボクセルVのIDにセットされ、P.距離がボクセルVの距離にセットされる。プロセスは、次いでステップ194に進む。画像ＩへのボクセルVの投影にもっとピクセルがあることがステップ194で判定されるならば、プロセスは次のピクセルの処理のためにステップ188へ戻る。ボクセルSの集合にもっとボクセルがあることがステップ196で判定されるならば、プロセスは次のボクセルを処理するためにステップ186へ戻る。図4のプロセスが完了すると、画像Ｉのための項目バッファは、各ピクセルに最も近いボクセルのIDおよびカメラからの距離を含む。
【００４０】
項目バッファの模型的なイラストが図5に示される。イラストを単純化するために、復元ボリューム200（通常三次元）は、2次元に減らされている。同様に、対応する2D画像における各ピクセルのためのセルを通常有する項目バッファ202は、一次元にしている。不透明なボクセル21Oおよび212は、カメラ2 14によって得られる画像のピクセルPから見える。ボクセル21Oは、ボクセル212よりカメラ2 14に近い。従って、ピクセルPの項目バッファ位置220は、ボクセル210のIDであるA、およびボクセル210の距離を含む。項目バッファは、その画像のすべてのピクセルについて同様の情報を含む。
【００４１】
vis(V) を判定するためのプロセスは、図2のステップ106に対応し、図6に示される。ステップ250で、画像Ｉが選ばれ、画像ＩへのボクセルVの投影からピクセルPがステップ252で選ばれる。ステップ254で、ボクセルVのIDがピクセルPの項目バッファに含まれるP.ボクセルIDと同じであるかどうか判断される。ボクセルVのIDがピクセルPの項目バッファに含まれるならば、ピクセルPがステップ256でvis(V)に加えられる。ボクセルVのIDがピクセルPの項目バッファに含まれないならば、プロセスはステップ258に進む。ステップ258で判定されるように、ボクセルVの投影にもっとピクセルがあるならば、プロセスは次のピクセルの処理のためにステップ252へ戻る。さもなければ、ステップはプロセス260に進む。ステップ260で判定されるように、処理すべき画像がもっとあるならば、プロセスは次の画像の処理のためにステップ250へ戻る。図6のプロセスが完了すると、vis(V)は、ボクセルVが見える全ての画像におけるピクセルの集合を含む。
【００４２】
図2に示される、上述したGVCアルゴリズムは、メモリの効率的利用を行う比較的単純な方法で可視性を計算する。しかし、可視性情報は、更新に比較的時間がかかる。したがって、GVCアルゴリズムは低頻度で可視性情報を更新するので、可視性情報は多くの場合、古くなっている。このために不正確な結果を生じることはないが、非効率的である。なぜなら、すべての可視性情報を使用すると非整合と評価されるボクセルが、その情報のサブセットを使用すると整合と評価されることがあるからである。最終的に、すべての情報が集められるが、その間にボクセルは必要以上に長い間切り分けされないままにされることがあり、したがって、理想的な数より多くの整合性評価を必要とすることがある。さらに、GVCアルゴリズムは、それらの可視性（およびそれらの整合性）がそれらの最後の評価から変化していないときでも、SVL上のボクセルの整合性を再評価する。項目バッファでなく階層化された深さ画像を使うことによって、GVC -LDIアルゴリズムは、ボクセルが切り分けられるとき、効率的かつ直ちに可視性情報を更新し、その可視性が変化したボクセルを正確に判定する。
【００４３】
ピクセルP上に投影する最も近いボクセルだけを各ピクセルPに記録するGVCアルゴリズムによって使われた項目バッファと異なり、LDIはピクセルPに投影するすべての表面ボクセルのリストを各ピクセルPに記憶する。これらのリストは、LDI(P)と呼ばれ、ボクセルから画像のカメラまでの距離に従ってソートされる。LDI(P)のヘッドは、ピクセルPに最も近いボクセルを格納し、それは項目バッファが格納するだろうものと同じボクセルである。項目バッファに格納される情報は、LDIでも利用可能であるから、vis(V)は両方のアルゴリズムで同様に計算すことができる。LDIは、SVLボクセルをそれらにレンダすることによって初期化される。
【００４４】
別のボクセルが切り分けられるとき可視性が変化する、切り分けられていないボクセルは、2つのソースから来る。すなわち、1）図7Aに示すように切り分けられたボクセルが透明になるとき、切り分けられたボクセルに隣接する内部のボクセルが表面ボクセルになる、および2）図７Bに示すように、切り分けられないボクセルが既に表面ボクセルであり、したがってSVLおよびLDIにあり、切り分けられたボクセルから遠くにある。
【００４５】
第１のカテゴリのボクセルは、それらが切り分けられたボクセルの隣にあるから簡単に識別することができる。第２カテゴリでのボクセルは、GVCアルゴリズムにおいて効率的に識別することができない。したがって、そのアルゴリズムは、色整合性のために繰り返し全てのSVLを評価しなければならない。GVC -LDIアルゴリズムでは、第２カテゴリでのボクセルは、LDIの助けで簡単に見つけることができる。それらは、切り分けられたボクセルの投影におけるピクセルPのLDI(P)上の第２ボクセルである。GVC-LDIアルゴリズムは、可視性が変化したSVLボクセルのリスト、変更された可視性SVL（CVSVL）と呼ばれる、を維持する。これらだけが、色整合性がチェックされなければならないボクセルである。CVSVLが空のとき、切り分けは終わる。
【００４６】
ボクセルが切り分けがされるとき、LDI（および可視性情報）は、直ちにかつ効率的に更新されることができる。切り分けられたボクセルは、その投影におけるあらゆるピクセルPについてLDI(P)から削除されることができる。同じプロセスが、可視性が変化した、切り分けられていない第２カテゴリのボクセルのための可視性情報を自動的に更新する。これらのボクセルは、切り分けられたボクセルが取り除かれたLDIリストのヘッドに移動し、それらもCVSVLに加えられる。切り分けられたボクセルに隣接した内部ボクセルは、それらが投影するピクセルのためのLDIリスト上へ押し出される。このプロセスの副産物として、ボクセルが見えるかどうかが判定される。ボクセルが見えるならば、それはCVSVLに置かれる。
【００４７】
発明の第２実施例に従うGVS-LDIアルゴリズムの例のフローチャートが図8に示される。これに対応する擬似コードを図8Aに示す。ステップ300でSVLが初期化される。先に述べたように、SVLは切り分けられていない表面ボクセルのリストを含む。SVLは、図3で示すように初期化されることができ、これについては既に記述した。
【００４８】
ステップ302でLDIが初期化される。LDIは、各ピクセルから見える不透明なボクセルの順序づけられたリストを含んだ。LDIを初期化するプロセスが図9を参照して説明する。
【００４９】
ステップ304で、SVLは変更された可視性SVLすなわちCVSVLにコピーされる。ステップ306でCVSVLが空でないと判定されるなら、ステップ308でボクセルVが除去され、ステップ310でvis(V)が計算される。上述してように、vis(V)はボクセルVが見える全ての画像におけるピクセルの集合である。Vis(V)は、図6と関連して先に述べたようにして計算することができる。
【００５０】
ステップ314で、vis(V)の色整合性が、図2と関連して先に述べたようにして判定される。vis(V)が色整合であり、不透明なボクセルを示しているならば、プロセスはCVSVLにおける別のボクセルを処理するためにステップ306へ戻る。
【００５１】
vis(V)が色整合でなく、透明ボクセルを示しているならば、ボクセルVは、切り分けられたとマークされ、ステップ316でSVLから除去される。ステップ3 1 8でボクセルVは、全てのLDIから削除される。別のボクセルV’がLDIリストのヘッドへ移るならば、ボクセルV’がCVSVL上に置かれる。
【００５２】
ステップ320で、ボクセルVに隣接するボクセルNが選ばれる。ボクセルNが切り分けがされているかSVL上にあるならば、プロセスはステップ328に進む。ボクセルNが切り分けされておらずSVL上にないならば、ボクセルNはステップ324でSVLに加えられる。ステップ326でボクセルNは、LDIに挿入される。LDIにボクセルを挿入するプロセスは、図10を参照して下で記述される。ボクセルNがLDIリストのヘッドに挿入されるならば、ボクセルNがCVSVLに加えられる。
【００５３】
ステップ328でボクセルVに隣接するボクセルがもっとあると判定されるならば、プロセスは次の隣接したボクセルを処理するためにステップ320へ戻る。どのボクセルもボクセルVに隣接しないことがステップ328で判定されるとき、プロセスはCVSVLの上で次のボクセルを処理するためにステップ306に進む。CVSVLが空とステップ306で判定されるとき、プロセスはステップ330に進み、SVLが保存される。
【００５４】
図8のステップ300に対応する、LDIを初期化するためのプロセスが図9に示される。画像Ｉがステップ3 50で選ばれ、SVL上のボクセルVがステップ352で選ばれる。ボクセルVが、ステップ354で画像ＩのLDIに挿入される。LDIへのボクセルVの挿入は図10を参照して下で記述される。もっとボクセルがSVLにあるとステップ356で判定されるならば、プロセスは次のボクセルの処理のためにステップ352に戻る。SVLの全てのボクセルが画像ＩのためのLDIに挿入されたとき、プロセスはステップ358に進む。もっと画像があるとステップ358で判定されるならば、プロセスは次の画像を処理するためにステップ350へ戻る。ステップ358の後には、SVLのボクセルは、すべての画像のためのLDIにレンダされている。
【００５５】
画像IのためのLDIにボクセルVを挿入するプロセスは、図８のステップ326および図９のステップ354に対応し、図10に示される。ステップ380で、画像ＩへのボクセルVの投影におけるピクセルPが選ばれる。ステップ3 82で、プロセスが現在LDI(P)の後尾（カメラから最も遠い）にあるかどうか判断される。プロセスがLDI(P)の後尾にあるならば、ボクセルVがステップ384でLDI(P)の後尾に挿入される。プロセスは、それからステップ392に進む。プロセスがLDI(P)の後尾にないことがステップ382で判定されるならば、ボクセルVがLDI(P)の次のボクセルよりカメラに近いかどうか、ステップ386で判断される。ボクセルVがLDI(P)の次のボクセルよりカメラに近いならば、ボクセルVはステップ388でLDI(P)上で次のボクセルの前に挿入される。プロセスは、それからステップ392に進む。ボクセルVがLDICPの次のボクセルよりカメラに近くないことがステップ386で判定されるならば、プロセスはステップ390でLDI(P)上の次のボクセルに進み、ステップ382に戻る。ステップ384またはステップ388に続いて、ボクセルVの画像Ｉへの投影にもっとピクセルがあるかどうか、ステップ392で判断される。画像ＩへのボクセルVの投影にもっとピクセルがあるとき、プロセスは次のピクセルの処理のためにステップ380へ戻る。
【００５６】
LDIが図11におおまかに示されている。イラストを単純化するために、復元ボリューム396（通常三次元の）は、2次元にしてある。同様にLDI 398は、通常対応する２Ｄ画像のあらゆるピクセルについて１セルを持つが、１次元で示してある。LDI 398は、各ピクセルに対応する可視性情報を記憶するが、図11は1ピクセルについて格納される情報だけを示す。不透明なボクセル400および402は、カメラ404によって得られる画像のピクセルPから見える。ピクセルPのLDI(P)41Oは、ピクセルPに投影する不透明なボクセルの順序付けられたリストを含む。LDI(P)410における第１の位置は、ＩＤフィールド41 8およびリンクフィールド420を有し、LDI(P)410の第２位置はＩＤフィールド422およびリンクフィールド424を有する。ＩＤフィールド4 1 8は、最も近い不透明なボクセル400のIDであるAを含み、リンクフィールド420は、第２位置へのポインタを含む。IDフィールド422は、２番目に近い不透明なボクセル402のIDであるBを含み、リンクフィールド424は、リストの終わりを示す値を含んでいる。図11の例において、LDI(P)はリンクされたリストとして実行される。
【００５７】
上述したシーンの複数の入力イメージからシーンの3次元モデルを復元するに適したコンピューターシステム500の例のブロック図を図12に示す。コンピューターシステム500は、中央処理装置（CPU）51O、磁気ディスク装置520、ディスプレイ530および入力装置540を含む。磁気ディスク装置520は、概して１つまたは複数のハードディスクドライブを使って実現される。シーンの3次元モデルを復元するための入力イメージは、磁気ディスク装置520に格納することができる。入力装置540は標準的なキーボードおよびポインティングデバイス（例えばマウスまたはトラックボール）を使って実現することができる。
【００５８】
CPU 51は、プロセッサ512、ディスプレイ530上に表示される画像を格納するためのメモリ514およびフレームバッファー51 8を含む。プロセッサ512は、コンピューターシステム500の主要な処理能力を提供し、例えばモデルHP9000/J282（ヒューレット・パッカード社）を使って実現することができる。メモリ514は、プログラム命令の記憶のためにおよびプロセッサ5 12によって実行される計算の結果の記憶のために使われる。好ましい実施例においてメモリは、200メガバイト以上のRAMを含んでいる。フレームバッファ518は、ディスプレイ530のために1フレームのデータを格納することができる高速バッファ・メモリデバイスである。この発明に従ってシーンの3次元モデルの復元を実行するためのソフトウェア・ルーチンはCプログラミング言語を使って実現することができ、メモリ514や磁気ディスク装置520に常駐させることができる。この発明に従ってシーンの３次元モデルを復元するためのコンピュータプログラムは、コンピュータ読み取り可能媒体（例えば磁気ディスク、コンパクトディスクまたは磁気テープ）上に格納することができ、当技術分野で知られているように、適切な周辺デバイスを使ってコンピューターシステム500にロードすることができる。上で示したハードウェア構成機器は例として示しただけであり、この発明はさまざまなコンピューターシステムで実行されることができる。
【図面の簡単な説明】
【図１】この発明に従うシーンの３次元モデルの復元を示す図。
【図２】この発明の第１実施例に従って、項目バッファを利用する一般化されたボクセル色付けアルゴリズムの例を示すフローチャート。
【図２Ａ】図２のフローチャートに対応する擬似コードを示す図。
【図３】表面ボクセル・リストを初期化するプロセスの例を示すフローチャート。
【図４】項目バッファを作るプロセスの例を示すフローチャート。
【図５】項目バッファの１例を示す図。
【図６】vis(V)を計算するプロセスの例を示すフローチャート。
【図７Ａ】ボクセルが切り分けられるとき隣接したボクセルの可視性の変化を示す図。
【図７Ｂ】ボクセルが切り分けられるとき、遠いボクセルの可視性の変化を示す図。
【図８】発明の第２実施例に従って、階層化された深さ画像を利用している一般化されたボクセル色付けアルゴリズムの例を示すフローチャートである；
【図８Ａ】第２実施例のボクセル色付けアルゴリズムの擬似コードの例を示す図。
【図９】階層化された深さ画像を初期化するプロセスの例を示すフローチャート。
【図１０】階層化された深さ画像にボクセルを挿入するプロセスの例を示すフローチャート。
【図１１】階層化された深さ画像の例を示す図。
【図１２】この発明を実行するためのハードウェア構成の例を示すブロック図。
【図１】
0004409139.tif 000002
【図２】
0004409139.tif 000003
【図２Ａ】
0004409139.tif 000004
【図３】
0004409139.tif 000005
【図４】
0004409139.tif 000006
【図５】
0004409139.tif 000007
【図６】
0004409139.tif 000008
【図７Ａ】
0004409139.tif 000009
【図７Ｂ】
0004409139.tif 000010
【図８】
0004409139.tif 000011
【図８Ａ】
0004409139.tif 000012
【図９】
0004409139.tif 000013
【図１０】
0004409139.tif 000014
【図１１】
0004409139.tif 000015
【図１２】
0004409139.tif 000016