JP4164204B2 - 画像生成方法、装置及びコンピュータ可読記憶媒体 - Google Patents
画像生成方法、装置及びコンピュータ可読記憶媒体 Download PDFInfo
- Publication number
- JP4164204B2 JP4164204B2 JP25059599A JP25059599A JP4164204B2 JP 4164204 B2 JP4164204 B2 JP 4164204B2 JP 25059599 A JP25059599 A JP 25059599A JP 25059599 A JP25059599 A JP 25059599A JP 4164204 B2 JP4164204 B2 JP 4164204B2
- Authority
- JP
- Japan
- Prior art keywords
- region
- image
- tree
- area
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Editing Of Facsimile Originals (AREA)
Description
【発明の属する技術分野】
本発明は、静止画像とビデオ画像の両方の形態のコンピュータ生成画像の作成に関し、具体的には、複数の構成要素を合成することによって生成される画像を効率的に作成する方法、装置およびシステムに関する。
【0002】
【従来の技術】
コンピュータ生成画像は一般に、多くの異なる構成要素、すなわち図形要素から構成される。最終的な画像は、これらの要素をレンダリングし、合成することによって作成される。最近は、「オーパシティ(opacity;不透明)チャネル」が一般に使用されている(これは「マット(matte;つや消し)」、「アルファ・チャネル」または単に「オーパシティ」とも呼ばれる)。オーパシティ・チャネルは、それぞれの要素の透明度に関する情報を含む。オーパシティ・チャネルは、それぞれの色インスタンスに並置される形で記憶され、そのため例えば、画素ベースの不透明画像には、それぞれの画素の表現の一部として不透明値が記憶される。明示的な不透明チャネル情報を持たない要素は一般に、その要素の定義された境界の内部は完全に不透明、境界の外側では完全に透明であるとみなされる。
【0003】
表現式ツリーは、その構成要素について画像を表現し、後段のレンダリングを容易にする系統的手段である。表現式ツリーは一般に、葉ノード、単項ノード(unary node)および二項ノード(binary node)を含む複数のノードを含む。これらよりも高次のノードまたは別の定義のノードを使用することもできる。表現式ツリーの最も外側のノードである葉ノードは下位ノードを持たず、画像の基本構成要素を表す。単項ノードは、ツリーの単項演算子の下にある部分の画素データを変更する演算を表す。単項ノードは、色変換、畳込み(ブラーリング(blurring)など)、レッドアイ除去などの演算を含む。二項ノードは一般に、自体が少なくとも1つの葉ノードを含む表現式ツリーである左右のサブツリーに分岐する。二項ノードは、その2つの子ノードの画素データを結合して単一の結果を得る演算を表す。二項ノードは例えば、OVER、IN、OUT、ATOP、アルファXORなどの標準的な「合成演算子」のうちの1つである。これらおよびその他の演算子を図20に示す。
【0004】
前記種類のノードのいくつかを組み合わせて、合成ツリーを形成することができる。この例を図1に示す。この合成ツリーの左辺の結果は、色変換された画像が細長い境界形状に切り取られたものと解釈される。この構成は、第2の画像と合成される。
【0005】
図形要素の非透明領域はある大きさを持っているが、この領域は、最終的な画像でその全体が目に見える必要はなく、最終的な画像に効果を与えるのが要素の一部分だけであってもよい。例えば、ある大きさの画像をディスプレイに表示するとしよう。画像の左上隅のみがディスプレイ装置に表示されるように画像を配置する場合、画像の残りの部分は表示されない。したがってディスプレイ装置に表示された最終画像が含むのは画像の目に見える部分だけであり、この場合、目に見えない部分をレンダリングする必要はない。
【0006】
要素の一部分のみが効果を与えるケースにはその他、その部分が他の要素によって覆い隠される場合がある。例えば、表示(またはレンダリング)する最終画像が、1つまたは複数の不透明な図形要素を含み、そのうちのいくつかが他の図形要素を覆い隠す場合である。したがって、覆い隠された要素は最終画像に対して効果を与えない。
【0007】
従来の合成モデルでは、それぞれのノードの範囲は概念上無限であるとみなされる。したがって従来のシステムでは、最終画像を構築するのに出力画像のすべての画素に合成式を適用する。実際の画素演算はかなり単純で高度に最適化することができるので、現在のほとんどのシステムでは比較的に強行なアプローチによって、15フレーム/秒を超える程度のインタラクティブ・フレーム・レートを得ることができる。この高度に最適化されたコードは十分に高速であり、複雑なコードを必要とせずに許容されるフレーム・レートを生み出すことができる。しかしこのことがある合成環境では真実ではないことは疑いない。
【0008】
画素当たりの合成コストはかなり高い。これは、画像が一般に、24ビットの色チャネルおよび8ビットのアルファ・チャネルにレンダリングされ、したがって1画素につき32ビットが与えられるからである。それぞれの合成演算子は、これらの4チャネルを処理しなければならない。したがって必要なときに必要な全てのフレームの全ての画素を完全に生成する方法は、画素当たりのコストがあまりに高くなってしまうので非効率である。
【0009】
従来技術の方法では、透明な領域および部分的に透明な領域を含む図形オブジェクトをレンダリングするときに問題が生じる。さらに、このような方法は一般に、全ての種類の合成演算子を取り扱うものではない。
【0010】
【発明が解決しようとする課題】
本発明の目的は、複数の構成要素を合成することによって生成される画像を作成する方法を提供することによって、前述の方法の1つまたは複数の欠陥を実質的に克服するまたは改善することにある。
【0011】
【課題を解決するための手段】
本発明の一態様によれば、一連の複数の画像を作成する画像生成方法であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも1つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割工程と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第1の調査工程と、
前記第1の調査工程の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成工程と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第1の画像をレンダリングするレンダリング工程と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第2の調査工程と、
前記第2の調査工程によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新工程とからなり、
前記レンダリング工程は、前記第1の画像に対して、前記更新工程によって更新された前記領域を合成することによって、前記第1の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成方法が提供される。
【0012】
本発明の他の態様によれば、一連の複数の画像を作成する画像生成装置であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも1つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割手段と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第1の調査手段と、
前記第1の調査手段の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成手段と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第1の画像をレンダリングするレンダリング手段と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第2の調査手段と、
前記第2の調査手段によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新手段とを備え、
前記レンダリング手段は、前記第1の画像に対して、前記更新手段によって更新された前記領域を合成することによって、前記第 1 の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成装置が提供される。
【0029】
【発明の実施の形態】
次に、図面を参照して本発明の実施形態を説明する。なお、付属書1に、本発明に基づくソース・コードのリストを示す。
【0030】
1.0 基本原理
現在のほとんどのシステムの合成演算子のオペランドの基本的な形状は、合成するオブジェクトの実際の形状に関わらず長方形である。2つの境界ボックスの積領域内に入る合成を実行する演算子を書くことは極めてやさしい。しかし、境界ボックスは一般に、図形オブジェクトの実際の境界を正確には表していないので、この方法では、完全に透明な画素の上に完全に透明な画素を合成する不必要な合成が多く生じる。また、合成の一般的な構成を調べると、多くのオブジェクトの領域が完全に不透明であることが分かる。この不透明性を合成演算時に活用することができる。しかし、完全に不透明なこれらの領域は通常、非長方形であり、そのため、境界ボックスによって記述された合成引き数を使用してこれらの領域を活用することは難しい。不規則な領域を使用して、これらの不透明なオブジェクトを活用する場合には、合成を実施すべき場所を決定する何らかの方法でこれらの領域を結合すればよい。さらに、このような領域のいずれかが完全に透明であるか、または完全に不透明であることが分かっている場合には、さらに最適化することが可能である。
【0031】
現在のほとんどのシステムは、あるフレームの構成と次のフレームの構成の間の類似性を活用できないでいる。フレームごとに全てが変化することはまれであり、したがってフレームが変わっても合成ツリーの大きな領域は変更されない。この一例が、複数の図形オブジェクトを含むアニメーションのキャラクタがディスプレイ上にレンダリングされる場合である。例えば、キャラクタが次のフレームでシャツにペンキをこぼすとした場合、画像全体をもう一度レンダリングする必要はない。例えば、キャラクタの頭部および脚はもとのままかもしれない。その動作によって変更のあった画像構成要素だけをレンダリングすればよいのである。ここに挙げた例では、シャツのペンキがこぼれた部分をペンキと同じ色にレンダリングし直し、キャラクタの残りの部分は以前と同じままにしておけばよい。この原理を活用することによって効率が大きく向上する。合成ツリーに増的変更が実施される場合、この変更を実施するのに必要な更新はわずかである。
【0032】
現在の多くのグラフィック・システムは、即時モード・アプリケーション・プログラム・インタフェース(API)として知られるものを使用する。これは、フレームをレンダリングするごとに、レンダリング・コマンドの完全セットをこのAPIに送ることを意味する。しかし、レンダリング・コマンドの完全セットをAPIに送信する方法は、合成環境ではいくぶん非効率である。これは、合成ツリーの大きなセクションは、あるフレームから次のフレームに移っても一般に変更されないのに、即時モードでは完全に再レンダリングされるからである。一方、本発明の発明者らは、本発明の好ましい実施形態を保持モードAPIと記述することが最も適当であると考えている。保持モードは、フレームごとに合成ツリー全体を供給するのではなく、ユーザが、最初の合成ツリーを供給し、次いでこの合成ツリーをフレームごとに変更して、変更を実施するものである。ツリーに対して実施できる変更には、ツリーの一部または全体の幾何的変形、ツリー構造(アンリンクおよびリンク・サブツリー)の変更、および個々のノードの属性(色など)の変更が含まれる。個々のノードの属性のみが変更された場合には、例えば図1に示すようなツリー構造が変更されるとは限らないことに留意されたい。
【0033】
好ましい実施形態のレンダリング演算は、いくつかの手法および仮定が組み合わされたものであり、これらが組み合わされることにより高品質の画像および高いフレーム・レートが提供される。寄与する原理のいくつかを以下に挙げる。
(i)不規則領域の使用による画素当たりの合成の最小化。例えば、ある図形オブジェクトが別の図形オブジェクトの上にある場合、画素合成が必要なのは、2つのオブジェクトが交わる領域の内部だけである。不規則領域を使用することができれば、関心の領域をはるかに正確に狭めることができる。
(ii)あるフレームから次のフレームへの移行で変更されるのはツリーの一部分だけであると仮定する。生成にコストがかかる合成に関する情報を次のフレームで再使用することができるようにキャッシュしておくことによって、この仮定を活用することができる。生成にコストがかかる情報の例には、関心の領域(オブジェクト間の積領域の境界など)、(コストのかかる合成物などを表す)画素データ、オブジェクト間の位相関係などがある。
(iii)不透明なオブジェクトをOVER演算子を使用して他のオブジェクトと合成する場合、不透明オブジェクトは、このオブジェクトの下に合成される部分を(不透明オブジェクトの領域内に)完全に覆い隠す。この特性は、コストのかかる画素合成を必要とせずに重なり合う領域内に画素を出力することができることを意味するので、非常に有用である(その画素値は、不透明オブジェクトの対応する点の値と同じである)。不透明オブジェクトは、ほとんどの合成演算子で同様の作用を生む。したがって好ましい実施形態では、不透明領域をできる限り活用することを試みる。
【0034】
図23は、本発明の好ましい実施形態に基づいて画像を作成する方法を示す流れ図である。画像は、図形オブジェクトをレンダリングし、合成式にしたがって合成することによって形成される。このプロセスは段階2301から開始され、この段階で、オブジェクト境界の輪郭が定義された空間をいくつかの相互排除領域に分割する。それぞれの領域は、所定の領域境界輪郭のうちの少なくとも1つ、またはその部分によって定義される。空間をいくつかの領域に分割し、これらの領域を操作するプロセスについては、2.3節を特に参照して後に詳細に説明する。2.3節は、「OVER」および「IN」合成演算に対する段階2301を説明する2つの擬似コード・リストを含む。プロセスは段階2303に進み、これらの領域のうちの1つを選択してそれを調べ、どのオブジェクトがその領域に寄与するかを求める。次の段階2305で、選択された領域に対応する合成式を、その領域内でのそれぞれのオブジェクトの寄与に基づいて変更し、その領域に対して最適化された合成式を生成する。それぞれの領域を調べ、合成式を変更するプロセスについては、2.4節を特に参照して後に詳細に説明する。2.4節は、「OVER」および「IN」合成演算に対する段階2303および段階2305を説明する2つの擬似コード・リストを含む。プロセスは段階2307に進み、選択された領域の画像データをレンダリングする。次の段階2309でチェックを実施し、処理を必要とする領域が他にあるかどうかを判定する。処理を必要とする領域がある場合には、プロセスは段階2303に進み、別の領域を選択する。全ての相互排除領域の処理が終了した場合には、プロセスは最終段階2311に進み、全ての領域の領域データを結合して、1つの画像を形成させる。段階2307、2309および2311については、擬似コード・リスト1つを含む2.6節を参照して後に詳細に説明する。
【0035】
2.0 基本の静的レンダリング
静的レンダリングは、合成ツリーから単一の画像をできるだけ速く生成する課題を取り扱う。好ましい実施形態の画素合成方法のいくつかを、静的レンダリングの一例を使用して説明する。
【0036】
葉ノード・オブジェクトから成り、「OVER」演算子のみを使用する単純な合成ツリーの例を図2に示す。従来どおり、それぞれのノードの範囲は概念上無限であるとみなす。最終画像を構築する1つの方法は、合成式(((D OVER B)OVER C)OVER(A OVER E))を出力画像の全ての画素に適用するものである。しかしこれは、かなり非効率な方法である。
【0037】
一般に1つの構成を、いくつかの不規則な相互排除領域に再分割することができる。それぞれの領域で前記合成式を独立に単純化することができる。図2の例で、A、C、Eは不透明オブジェクトを表す。一方、B、Dは、部分的に透明なオブジェクトである。図3に、この例に存在する5つのオブジェクトを使用して創出した異なる領域(1〜10)、およびそれぞれの特定の領域に対する画素データの生成に使用する合成式を示す。
【0038】
図3に示した合成式には、オブジェクトの不透明な特性を活用しようという試みがなされていない。この特性を使用してそれぞれの領域に対する合成式を単純化すると図4の式が得られ、図3に比べると領域2、3、5、6、7、8および9のレンダリングが単純化される。これらの単純化された合成式を使用することによって、はるかに少ない回数の画素合成演算の実行で、最終画像を生み出すことができる。
【0039】
図4は、合成ツリーのルートについての領域の再分割を表す。しかし、この合成ツリーの全てのノードについてそれ自体が合成ツリー全体のルートであると考えることができる。したがって、合成ツリーの全てのノードを、そのノードがルートであるサブツリーの領域再分割を表す一群の領域と関連付けることができる。領域再分割は、合成ツリーの複雑性を管理する便利な手段、およびコストのかかるデータをキャッシュしておく効率的なフレームワークとなる。
【0040】
前述の原理を使用すると、合成する図形オブジェクトが全体に不透明であるのか、全体に透明であるのか、またはそのどちらでもないのか(本明細書ではこれを「普通」とみなす)にしたがって、合成式を単純化することができる。
【0041】
テーブル1(1−1〜1−3)に、一方または両方のオペランドが不透明または透明であるときに、図20の合成演算を単純化する方法を示す。
【表1】
【表2】
【表3】
【0042】
2.1 基本データ・モデル
合成ツリーの全てのノードの非透明領域を表す一群の相互排除領域はそのノードに関連づけられる。好ましい実施形態で使用する領域記述は一般に、画素レベルでは不正確であることに留意されたい。事実、領域がいくつかの透明画素を含むことがある。しかし、ノードの全ての領域の外側にある点は確実に透明である。ノードの相互排除領域の集合は領域群として知られる。葉ノードの領域群が含むことのできる領域は1つまたは2つである。ツリーのルートの領域群は、数百の領域を含むことができる。領域群のそれぞれの領域は以下の基本のデータを含む。
(i)領域記述は、領域境界の低位表現である。領域群の全ての領域の領域記述は相互排除でなければならない(交わることがあってはならない)。ただし好ましい実施形態は、軸平行な(すなわちすべての側面が、出力装置の走査線に平行または垂直である)領域記述の使用に限定されるわけではない。好ましい実施形態では、任意の形状の領域をより忠実に表す領域記述が許される。
(ii)プロキシは、合成式によって指定された演算を領域記述の内部の全ての画素に適用して得られた画素データをキャッシュする手段である。プロキシは、24ビットのカラー・ビットマップのような単純なものでもよいし、または(ランレングス符号化記述などの)より複雑なものでもよい。基本的にプロキシは、検索および使用が効率的に行えるなんらかの方法で、画素データを表すものであればよい。
【0043】
全ての領域群はさらに、その領域群の領域の全ての領域記述の和である領域記述を含む。この領域記述は実質上、その領域群がカバーする範囲全体を表す。
【0044】
2.2 領域記述および領域演算
好ましい実施形態の領域演算およびデータ構造は以下の特性を有する。
−凸形領域、凹形領域および穴の開いた領域を含む複雑な領域の表現が可能である。領域が、それが表す図形オブジェクトの幾何形状を模倣することが合理的に可能であるためには、このことが必要である。
−空間効率がよい。複雑な構成では多くの領域が存在する。したがってメモリ効率に関して言えば、これらの領域を記憶するコストが合理的に小さいことが好ましい。
−領域演算は、基本的な集合演算、すなわち和、積および差をサポートしなければならない。
−前記基本演算は、速度に関して効率的でなければならない。複雑な合成ツリーでは、多量の領域演算が実施される可能性がある。領域演算の実施が不適切であると、領域演算にかかる時間が、画素当たりの合成を減らすことによって節約された時間よりも大きくなることがある。
−領域記述の幾何形状を効率的に変換することができると有利である。そうであると、図形オブジェクトを変換する場合に、その図形オブジェクトの関連領域を迅速に変換することができる。
−2つの領域を比較して、それらが同じものであるかどうかを迅速に判定することができれば時に有用である。その類似性に関するその他の統計量を得る必要は必ずしもない。単なる同一性のみが必要である。
従来の2つの領域記述手法を検討したが、本発明の好ましい実施形態に対しては採用しないこととした。それは次の2つである。
ポリゴン:ポリゴンを使用して、ほとんど全てのオブジェクトを表すことができるが、これを使用することの欠点は、ポリゴンの汎用性のために、集合演算の実施が非効率かつ時間のかかるものとなることである。
クワッドツリー(Quadtree):クワッドツリーを使用した集合演算は実施が容易で、かなり効率的である。さらにクワッドツリーは、十分な細分性が与えられた多様な領域を表すことができる(クワッドツリーの全ての辺は軸平行でなければならない)。クワッドツリーの主な欠点は、全てのクワッドツリーが同じ格子(細分性)上に整列しなければならないということである。このことは、クワッドツリーを任意の量で変換することが不可能であることを意味する。その量が、基礎をなす格子の大きさの倍数でない場合には、クワッドツリーを、それが記述するオブジェクトから計算し直す必要が生じる(さもなければそれは成長を続ける)。したがってクワッドツリーは、幾何的変換が頻繁に実施される適用領域には適さない。
【0045】
好ましい実施形態の領域記述のデータ構造は、垂直線に沿って全ての座標が、領域の内側または外側のいずれかの状態を有するとイメージすると理解することができる。データ構造には、内側と外側の間で状態変化が生じているy座標が記憶される。このようなy座標それぞれについて、そのデータは、データを横切る全ての垂直線の状態をそれぞれが切り換える座標の範囲を含む。x座標のそれぞれの範囲をラン(run)と呼ぶ。y座標に関連したランの列をロー(row)と呼ぶ。例えば図16の領域は、以下のように記述することができる。
ロー y=10:x=10,x=100
ロー y=100:x=10,x=100
同様に図17の領域は、以下のように記述することができる。
ロー y=10:x=10,x=100
ロー y=30:x=30,x=70
ロー y=70:x=30,x=70
ロー y=100:x=10,x=100
領域を表すデータは、整数値の配列によって表される。2つの「特殊」値がある。
R_NEXT_IS_Y: ローの先頭マーカ 順序列中の次の整数がy座標を表すことを指示する。
R_EOR: 領域の終わりを表す。領域記述が終わったことを指示する。
【0046】
その他の値は全てxまたはy座標を表す。ローの中のx座標はランを表す。最初の2つの座標がランを表し、次の2つの座標が次のランを表す。以下同様である。したがって1つのロー中のx座標は常に増えていかなければならない。また、ロー中には常に、偶数個のx座標がなければならない。図17の領域データ・ストリームを以下に示す。
R_NEXT_IS_Y 10 10 100
R_NEXT_IS_Y 30 30 70
R_NEXT_IS_Y 70 30 70
R_NEXT_IS_Y 100 10 100
R_EOR
【0047】
ある集合演算において有用であるので、好ましい実施形態はさらに領域の境界ボックスを含む。
【0048】
図6に示すように、2つの領域記述を和演算を使用して結合する場合、結合された領域記述は、どちらかの領域記述がアクティブである領域を記述する。
【0049】
図7に示すように、2つの領域記述を積演算を使用して結合する場合、結合された領域記述は、両方の領域記述がともにアクティブである領域を記述する。
【0050】
2つの領域記述を差演算を使用して結合する場合、結合された領域記述は図8A乃至8Dに示すように、最初の領域のみがアクティブである領域を記述する。
【0051】
2.3 領域群の構築
2.3.1 葉ノード領域群の構築
葉ノードの領域群は一般に、1つまたは複数の領域を含む。これらの領域は全体として、この葉ノードが表す図形オブジェクトの非透明領域全体を含む。一般に非透明領域は、最適化を容易にするある特性をそれぞれが有する領域に分割される。例えば、ある図形オブジェクトの非透明領域を、完全に不透明な領域と不透明度が普通の領域の2つの領域に分割することができる。不透明領域を合成する場合には、先に述べた合成の最適化が適用される。
【0052】
この代わりに、葉ノードを別の属性に基づいて再分割してもよい。例えば葉ノードを、色が一定な領域を表す領域と色が混じり合った領域を表す領域の2つの領域に分割することができる。色が一定な領域は、より一般的な色記述を有する領域よりも効率的に合成することができる。
【0053】
2.3.1.1 領域形成および位相合わせ
領域を作成する際、領域境界が、図形オブジェクトの境界と正確に一致することが常に有利であるとは限らない。重要なのは、最適化を容易にする任意の特性が、その特性を有するとされる領域内のどの点においても有効であるということである。例えば、不透明な円を、不透明と分類される1つの円形領域で正確に覆うこともできるし、または2つの近似的な領域、すなわち円に内接した完全に不透明な八角形の領域と円の残りの部分および円の外部のある領域を含む不透明度が普通の環状の八角形の領域で覆うこともできる。
【0054】
一般に、領域の境界が図形オブジェクトの境界とどのくらい一致するかということと、得られる利点との間にはトレードオフの関係がある。領域境界がオブジェクト境界と非常によく一致する場合には通常、領域境界の作成ならびに領域の積および差演算の実行に多くの操作が関与する(このような演算の実行が必要な理由については後節で説明する)。しかし、領域境界が大まかすぎる場合には、領域が、オブジェクト境界の外側に大きな領域を含み、その結果、非常に多くの不必要な合成を実施しなければならなくなるか、または既知の特性から最適化することができる領域をあまり含むことができないかのいずれかである。
【0055】
1つのアプローチは添付の付属書に示すように、領域境界を、水平および垂直セグメントの列に限定するものである。この方法を使用する際、一般的なセグメントの大きさは、あまりに詳細にすぎて領域演算が過負荷とならないように、また、大まかすぎて、無駄な合成や不十分な最適化につながらないように選択する。
【0056】
領域演算の効率を高める1つの方法は、実質的に全ての領域境界の水平および垂直セグメントが実際的な範囲でできるだけ多く同位相となるように選択することである。言い換えると、水平および垂直セグメントを、同じ格子の水平および垂直線から選択することである。一般にはそのようにはなるが、格子は、規則的な間隔を置いて配置されている必要もないし、水平および垂直方向に同じ間隔を有している必要もない。
【0057】
同じ格子の水平および垂直線から水平および垂直セグメントを選択すると、全ての領域境界の詳細さを、基礎をなす格子に含まれる詳細さのレベルに維持することになって領域演算の効率は向上する。領域境界セグメントの大部分を格子に制限することをしないと、差、積などの領域演算子によってその詳細さがはるかに細かくなる傾向が見られる。例えば図21で、2つの円901および902は、格子上に整列していない領域903および904をそれぞれ有している。これらの円を部分的に重ね合わせると、差領域905、907および積領域906が生じる。図22で、同じ円901および902は、格子910の上に整列した領域913および914を有する。これらの円を部分的に重ね合わせると、差領域915、917および積領域916が生じる。格子上に整列した領域では、領域のカバーする範囲の効率がわずかに低下するのと引き替えに、詳細度の低い結果が得られていることがこの例から分かる。領域905、906および907は全体で60個のセグメントを含むが、領域915、916および917では52個でしかない。
【0058】
2.3.2 二項領域群の作成
合成ツリーの二項ノードの領域群はそれらの子ノードの領域群を結合した結果である。次に、領域群を結合して新しい領域群を形成する方法を説明する。単純にするためこの項では、「OVER」および「IN」二項ノードのみを取り扱う。その他の合成演算子を表す二項ノードに必要な演算は、「OVER」および「IN」の場合をさまざまに組み合わせることによって容易に推量することができる。
【0059】
明確にするため、最初に、好ましい実施形態の方法を、不透明度などの最適化ベースの特性に言及することなく説明する。
【0060】
以下の表記法は、二項領域群の作成を考える場合に有効である。
【0061】
2.3.2.1 「OVER」領域群の構築
「OVER」領域群を構築するときには、寄与する領域群が交わる領域だけを合成すればよい。一方のオペランドが他方のオペランドと重なり合わない領域は合成に関与しない。この方法は、3つの繰り返し段階に分けられる。まず、初期化する二項ノードの領域群のカバー領域(RG→urgn)を、二項ノードの左子ノードのカバー領域(RG1→urgn)と二項ノードの右子ノードのカバー領域(RG2→urgn)の和に等しいとおく。次いで、RG1のそれぞれの領域rgiについて、その領域とRG2のカバー領域(RG2→urgn)の差(diff_rgn)を計算する。差(duff_rgn)が空集合でない場合には、diff_rgnをその領域記述とする新しい領域をRGに追加する。この新しい差領域のプロキシは、プロキシrg1iと同じである。この生成に合成は一切必要ない。RG2の領域とRG1のカバー領域の差領域を同様に構築し、RGに加える。最後に、RG1のそれぞれの領域rg1iとRG2のそれぞれの領域rg2jの積(inter_rgn)を計算する。この積計算の結果が空集合でない場合には、inter_rgnにover演算を使用してrg1iのプロキシをrg2jのプロキシと合成することによって、新しいプロキシ(new_p)を作成する。inter_rgnをその領域記述としnew_pをそのプロキシとする新しい領域をRGに追加する。好ましい実施形態に基づく「OVER」領域群の構築方法を、疑似コードを使用して以下に記載する。
【0062】
アスタリスク(*)でマークした追加演算によって追加された領域は、その形状が差演算の結果であることから差領域と呼ばれる。このような領域は、そのプロキシが合成を必要としないため、コンピュータ操作上非常に安価である。関与する唯一の負荷は、新しい領域を領域群に追加する管理オーバヘッドおよび差演算自体のコストである。好ましい実施形態では、プロキシが、それの基となった(一方の子領域群中の)領域から継承される。差領域を使用することによって、合成ツリーの下位を起源とするプロキシを、(速度とメモリの両方に関して)最低限のオーバヘッドで、ルートに向かって上方に伝播することができることが分かる。
【0063】
プラス記号(+)でマークした追加演算によって追加された領域は、積領域と呼ばれる。これは、その形状が積演算の結果であるからである。このような領域のプロキシは、積によって定義された領域内で実行される画素ごとの合成演算を含むため、差領域よりも生成にコストがかかる。領域記述が与える精度が高いほど、管理オーバヘッドが大きくなる(複雑な領域ほど積演算等に長い時間が必要となる)が、それと引き替えに画素処理のコストの節減の程度も大きくなる。
【0064】
図8Aないし8Dに、以上の方法を使用して「OVER」領域群を結合する単純な例を示す。結合の結果生じる領域群は、差領域3つ、積領域2つの5領域を含む。第8A図は、結合する2つの領域群RG1およびRG2を表す。RG1は2つの領域81、82を含み、RG2は領域83だけを含む。図8Bに示すように、RG1のそれぞれの領域について、RG2がカバーする範囲を、RG1の対応する領域から差し引く。その結果生じた領域が空集合でない場合、その領域は新しい領域群の領域になる。この例では、領域81、82からそれぞれ、空集合でない差領域84、85が生成される。RG2のそれぞれの領域について、RG1のカバー範囲を図8Cに示すようにその領域から差し引く。この例では、差領域86が生み出される。最後に図8Dに示すように、RG1の全ての領域とRG2の全ての領域との積をとる。空集合でない全ての領域は、新しい領域群の領域となる。この例では、領域81と83から87が生成される。さらに領域82と83から88が生成される。
【0065】
2.3.2.2 「IN」領域群の構築
「IN」演算子の特性によれば、「IN」二項領域群は、2つの寄与領域群の積領域の画素データのみを生成する。事実、「OVER」領域群に使用するアルゴリズムと比較すると、積領域だけが生成される。したがって、RG1のそれぞれの領域rg1iおよびRG2のそれぞれの領域rg2jについて、rg1iとrg2jの積(inter_rgnij)が計算される。この積が空集合でない場合には、inter_rgnijの範囲内で「IN」演算を使用し、rg1iのプロキシをrg2jのプロキシと合成することによって、新しいプロキシ(new_p)を作成する。次いで、inter_rgnをその領域記述としnew_pをそのプロキシとする新しい領域をRGに追加する。好ましい実施形態に基づく「IN」領域群の構築方法を表す擬似コードを以下に示す。
【0066】
「IN」と「OVER」の主な違いは、「OVER」の場合には差領域が生成されるのに対し、「IN」ではそれが生成されないことである。図8Aないし8Dに示した例で言えば、積領域である新しい領域87、88だけが生成される。「IN」を使用した場合には差領域84、85、86は生成されない。
【0067】
下記テーブル2ならびに「OVER」および「IN」の擬似コード例を使用して、その他の合成演算子に対する関連コードを導くことができる。
【0068】
2.3.2.3 その他の合成演算子の領域群の構築
その他の合成演算子は一般に、「OVER」および「IN」の場合に生成されるものと同じ積領域を生成する。しかしその他の合成演算子は一般に、生成する差領域が(「OVER」と「IN」では異なるように)互いに異なる。これは、それぞれの合成演算子の特定の特性に依存する。テーブル2に、一般的に使用されるいくつかの合成演算子でどちらの差領域が生成されるかを示す。
【表4】
【0069】
2.4 不透明領域を使用した最適化
好ましい実施形態ではそれぞれの領域に、その領域のプロキシ中の画素データが完全に不透明であるかどうかを指示するフラグを記憶する。そのため、不透明なオペランドが合成演算子に対して有する効果を活用することによって、画素当たりの合成演算回数を減らすことができる。
【0070】
2.4.1 「Over」領域群に対する不透明領域による最適化
不透明な領域が別の領域の上にある(「OVER」)場合には、左オペランドの不透明プロキシを通して見える右オペランド領域のプロキシは一部分足りともないので、合成の結果を計算する必要はない。好ましい実施形態ではその結果生じた領域が、合成を実際に実施するのと同じ効果を有する左オペランドのプロキシを参照する。
【0071】
「Over」領域群に対する不透明領域による最適化の方法は、先に示した「Over」領域群の構築方法をわずかに変更したものである。唯一の違いは、RG1の現在の領域とRG2のそれぞれの領域との間の積領域を計算するときに、RG1の現在の領域が不透明であるかどうかを調べるチェックが実施されることである。不透明である場合には、RG1の現在の領域のプロキシが新しく計算された領域のプロキシ(new_p)となる。
【0072】
この方法を、以下の擬似コードを使用して示す。
【0073】
2.4.2 「IN」領域群に対する不透明領域による最適化
領域が不透明な領域の中にある(「IN」)場合には、「IN」演算子の特性にしたがい、演算の結果生じる画素データは左オペランドのそれと同じになる。これは、演算の結果生じた領域が左オペランドのプロキシを単に参照することによって達成される。好ましい実施形態の方法は、先に示した「IN」領域群の構築方法をわずかに変更したものである。唯一の違いは、RG1の現在の領域とRG2のそれぞれの領域との間の積領域を計算するときに、RG2の現在の領域が不透明であるかどうかを調べるチェックが実施されることである。不透明である場合には、RG1の現在の領域のプロキシが新しく計算された領域のプロキシ(new_p)となる。
【0074】
この手法を、以下の擬似コードを使用して示す。
【0075】
2.5 ツリー全体の初期化
ツリーの全ての二項領域群に前述の好ましい実施形態の方法を使用することによって、合成ツリー全体を初期化することができる。ノードは、その子ノードが初期化されるまで初期化することができない。したがってこのプロセスはツリーの最下段から始まり、ルートに向かって上方に進む。このプロセスでは最初に、現在のノードが葉ノードであるかどうかを調べる。そうである場合には、葉ノード領域群を構築する。しかし、現在のノードが二項ノードである場合には、2.4.1項および2.4.2項で概説した好ましい実施形態の方法を使用して二項ノード領域群を構築する。以下の擬似コードによって、ツリーの全ての領域群を初期化する方法の概要を説明する。この方法は再帰的関数を利用する。この関数は、呼び出されると、ツリーのルートを引き数として渡す。
【0076】
2.6 合成画像の構築
合成ツリーを初期化すると、ツリーのルートの領域群は、合成画像の、画像データが生成された方法が異なる領域への分割を表すゼロ個以上の領域から成る群を含む。領域のプロキシのいくつかは、合成を一切必要とすることなくツリーの葉ノードから直接に画像データを参照することができる。一方その他の領域は、合成演算の結果であるプロキシを有する。画素バッファに記憶された画像などの単一の合成画像が必要な場合、これは、それぞれの領域のプロキシからの画像データを、その領域に対応する領域内の画素バッファにコピーすることによって達成することができる。このプロセスを、以下の擬似コードに示す。これは、一般化されており、最終画像の構築を指名された任意の更新領域に制限することができる。
【0077】
3.0 動的レンダリング
動的レンダリングは、連続する複数の画像を生成する課題に関する。合成ツリーが与えられれば、前述の方法を使用して領域群(領域およびプロキシを含む)を生成することができる。動的レンダリングをサポートする、前述の方法の他の実施形態を以下に説明する。合成ツリーは画像を表す。ツリーを変更して、ツリーが新しい画像を表すようにすることができる。ツリーの領域群(およびツリーの領域記述およびプロキシ)は、ツリーの変更を反映するよう更新される。2つの画像が共通の特徴を有していることを活用することによって効率は向上する。一例を挙げ、他の実施形態の手法および用語を説明する。
【0078】
図3に、単純な合成ツリーに対する領域再分割およびこれに対応するそれぞれの領域の合成式(不透明度は利用していない)を示す。オブジェクトAがその他のオブジェクトに対して相対的に短い距離を移動する状況を考える。ツリーのルートの領域群の領域のいくつかは、Aの移動の影響を受ける。
【0079】
不透明な場合の最適化を考えない場合、合成式にAを含む領域はAの移動の影響をかなり受ける。影響を受ける領域は2、3、5および6である。ツリーのルートの領域群を更新するときには、これらの領域の領域記述とプロキシの両方を完全に計算し直す必要がある。他の実施形態においてこの状況は1次被害として知られる。何らかの変更が加えられたオブジェクトを合成式中に含む領域は、1次被害を受けると言うことができる。
【0080】
合成式中にAを含む領域に隣接する領域もAの移動の影響を受ける。ただしその影響は、1次被害を受ける領域ほどには深刻ではない。この例でこのような影響を受ける領域は1、4、7および8である。ツリーのルートの領域群を更新するときには、これらの領域の領域記述を計算し直す必要がある。しかしプロキシについては、新たな領域のうち、対応する以前の領域に含まれていなかった範囲のみを計算し直せばよい。他の実施形態においてこの状況は2次被害として知られる。一般に2次被害は、領域の境界(内容ではない)を左右するオブジェクトが何らかの変更を受ける場合に起こる。
【0081】
フレーム当たりの更新コストを減らすためには、画素ごとの演算と領域群演算の両方について必要な作業量を、実行可能な限りにおいて減らすことが重要である。1次および2次被害の概念は、このことを容易にする一手段である。他の実施形態で、合成ツリー全体を通じて何らかの被害を有する領域の最小集合を正確に決定することができれば、実行される作業の量が低減することは明らかである。
【0082】
図24は、本発明の他の実施形態に基づいて一連の画像を作成する方法を示す流れ図である。この一連の画像のメンバはそれぞれ、その前のメンバに関係している。これらの画像は、合成式を表す階層的な合成ツリーに基づいて合成されるいくつかの図形オブジェクトをレンダリングすることによって形成される。この階層的合成ツリーのそれぞれのノードは、これらの画像のうちの少なくとも1つの画像の構成要素を表し、それぞれのオブジェクトは所定の輪郭を有する。このプロセスは段階2401から始まり、この段階で、第1の画像を表す階層的合成ツリーにアクセスする。次の段階2403で、階層的合成ツリーのそれぞれのノードについて、構成画像空間をいくつかの相互排除領域に再分割する。プロセスは段階2405に進み、それぞれの相互排除領域を調べ、ノード間の依存情報を生成する。ノード間依存情報のデータ構造およびそれを作成するプロセスについては、後の3.1節ないし3.9節で説明する。次の段階2407で、第1の画像をその階層構造に基づいてレンダリングする。プロセスは段階2409に進み、この段階で、階層的合成ツリーの変更を引き起こす画像の変更が実施される。次の段階2411で、依存情報を調べ、どの領域が、階層的合成ツリーの変更の影響を受けたかを求める。プロセスは次の段階2413に進み、影響を受けた領域を更新する。次の段階2415で、階層的合成ツリーの変更を反映するようノード間依存情報を更新する。領域を調べ、これを更新するプロセスについては後の3.6節ないし3.9節で説明する。特に3.9節には、二項「OVER」領域を更新する方法を示す擬似コードを含めた。プロセスは段階2417に進み、階層的合成ツリーに基づいて第1の画像の変更された部分をレンダリングし、更新された画像を生成する。段階2417では、変更の影響を受けた領域だけをレンダリングする。
【0083】
3.1 基本データ・モデル
静的レンダリングに使用される、領域記述およびプロキシからなるデータ・モデルは、動的レンダリングでの使用には不十分である。これは、1次および2次被害を求めるために、フレーム間で同じ内容の領域どうしを関連付けることができなければならないからである。同じ内容の領域の関連付けをサポートするには、領域群のそれぞれの領域に追加の情報が必要である。そのため、領域群のそれぞれの領域は以下のデータを含む。
(i)領域記述:領域境界の低位表現である。領域群の全ての領域の領域記述は相互排除(交わらず、重なり合わない)でなければならない。
(ii)プロキシ:合成式によって指定された演算を領域記述の内部の全ての画素に適用して得られた画素データをキャッシュする手段である。プロキシは、24ビットのカラー・ビットマップのような単純なものでもよいし、または(ランレングス符号化記述などの)それよりもはるかに複雑なものでもよい。基本的にプロキシは、検索および使用が効率的に行えるなんらかの方法で、画素データを表すものであればよい。
(iii)内容ラベル:内容ラベルは、画像データの構築方法を記述した一意の記号式を表す。記号式中の項は、カテゴリーの異なる画像データ・ソースを識別する。したがって、合成ツリー中の2つの異なる葉ノードの領域群は、たとえ実際の画像データが等しい場合であっても、異なる内容ラベルでラベルされた領域を含む。他の実施形態では、内容ラベルを表すのに一意の整数の系を使用する。例えば「23」が「(A OVER B)OVER C」を表すなどとする。
(iv)フラグ・レジスタ:領域群の更新プロセス時に状態を記憶しておくのに使用する汎用フラグ・レジスタである。これに記憶されるフラグについては後節で概要を説明する。
【0084】
3.2 内容ラベル
葉ノードの領域群は複数の領域を含むことができ、それぞれの領域は当然一意の内容ラベルを有する。例えば、合成ツリーの葉ノードの領域群が、その葉ノードの非透明領域を表す(単一の内容ラベルが付けられた)単一の領域を含むことがある。葉ノードの領域群が、葉ノードの完全に不透明な範囲を表す領域と残りの非透明な範囲を表す領域の(それぞれ異なる内容ラベルが付けられた)2つの領域を含むこともある。さらには葉ノードを、任意の数の領域(および関連内容ラベル)にカテゴリー化することもできる。
【0085】
内容ラベルを作成する1つの方法は、葉ノードの領域群の領域に新しい内容ラベルを割り当てるものである。他の方法は、複数の内容ラベルを取り上げ、これらを結合して、結合に寄与した式の結合を表す記号式を示す新しい内容ラベルを作成するものである。例えば、((A comp B)comp C)を表す内容ラベルを、(D comp E)を表す内容ラベルと結合した場合には、(((A comp B)comp C)comp(D comp E))を表す新しい内容ラベルが作成される。
【0086】
内容ラベルの他に依存情報も必要である。依存情報は、ある領域の内容がその他の領域の内容にどのように寄与するか、および領域境界の変更がその他の領域の境界にどのような影響を及ぼすかという点に関して、所与の内容ラベルがその他の内容ラベルとどのような関係にあるのかを示すものである。他の実施形態では、以下のデータをそれぞれの内容ラベルに関連付ける。
(i)1次依存リスト:それぞれの1次依存は、内容ラベルLが直接に寄与する内容ラベルL'である。言い換えると「1次依存」は、内容ラベルLと別の内容ラベルを結合することによって構築された式を表す内容ラベルL'である。内容ラベルが結合されるたびに、その結合に対する内容ラベルが、結合に寄与した全ての内容ラベルの1次依存に追加される。
(ii)2次依存リスト:それぞれの2次依存は、内容ラベルLによって表される画像がその境界に影響を及ぼす何らかの変更を受けた場合に、間接的な影響を受けうる内容ラベルL''である。内容ラベルが結合されるとき、合成演算子が、寄与する内容ラベルを有する差領域を生成する場合にのみ、この寄与内容ラベルが次段の2次依存に追加される。表2に、一般的に使用される演算子のうちのどの演算子がその左右のオペランドに対して差領域を生成するのかを示す。さらに、結合(A comp B)に対して、全ての(A comp bi)および全ての(aj comp B)に対する結合内容ラベルの2次依存が追加される。ajはAの2次依存であり、biはBの2次依存である。
(iii)特性情報:それぞれの内容ラベルは、合成エンジンが活用できる可能性のある特性を有する内容を表すことができる。その一例が不透明な特性である。内容ラベルが不透明な内容を表す場合、その内容の合成ははるかに高速となり、ある演算子に関しては、画素ごとの合成演算が必要なくなる。
【0087】
3.3 内容ラベルの実装
他の実施形態では、内容ラベルとして一意の整数が使用され、現在存在する内容ラベルの数を表す数値が記憶される。新しい内容ラベルが作成されたときにはこの数値が増分され、その数値が、この内容ラベルを表す一意の整数となる。整数を単調に増分することによって内容ラベルを割り当てるこの手法は、内容ラベルの関連データ構造を、内容ラベルが追加されるごとに成長する一次元配列の形態に記憶することができることを意味する。内容ラベルを索引として使用する内容ラベルのデータ構造を参照することができる。葉ノードの内容ラベルが作成されるときには、その内容ラベルが1次または2次依存を持たないように初期化される。現在の葉ノードの内容ラベルが不透明である場合には、この内容ラベルiの特性にフラグがセットされる。
【0088】
下記の擬似コードに、他の内容ラベルに左右されない新しい内容ラベル(すなわち葉ノード領域群の内容ラベル)を作成するのに使用する基本手法を示す。
【0089】
既存の内容ラベルの結合を表す内容ラベルを作成することもできる。他の実施形態ではこれが、演算およびそのオペランドの内容ラベル(これらはハッシュされて鍵が作成される)を、その演算結果を表す単一の内容ラベルにマップするハッシュ・テーブルによって達成される。
【0090】
(それぞれが内容ラベルを有する)2つの領域の積を表す領域が作成されるときには、新しい領域を標識するのに使用する新しい内容ラベルが生成される。この新しい内容ラベルが生成されたときには、これを、その両方の寄与オペランドの1次依存リストに追加しなければならない。さらに、これら2つの寄与内容ラベルの2次依存および合成演算子の特性によって決まる2次依存リストも生成しなければならない。
【0091】
このプロセスは再帰的であり、新しく作成された内容ラベル(new_cl)を寄与内容ラベルの1次依存リストに追加することによって開始される。次いで、合成演算子の特性に応じ、一方または両方の寄与内容ラベルを2次依存リストに追加するか、あるいはどちらも追加しない。次いで、(clab1 op sd2i)および(sd1i op tab2)を表す全ての内容ラベルを2次依存リストに追加する。
【0092】
3.4 動的レンダリングにおける領域群の結合
合成ツリーに増的更新を実施するためには、合成ツリーが一貫した初期状態に構築されていなければならない。これを達成する基本的な手法は、内容ラベルのサポートが組み込まれている点を除けば静的レンダリングに使用した手法と同じである。
【0093】
葉ノードの領域群は、静的レンダリングと実質的に同じように初期化されるが、それぞれの葉ノードの領域群のそれぞれの領域を一意の内容ラベルで標識する点が異なる。それぞれの内容ラベルを、レンダラの効率を高めるのに役立つ可能性のあるさまざまなカテゴリーの特性で標識することができる。例えば、内容ラベルを、完全に不透明であると標識することができる。
【0094】
二項ノードの初期化も静的レンダリングの場合と同様である。一例として、「OVER」二項ノードの領域群を構築する方法を説明する。その他の合成演算子の領域群を構築する手法は、この「OVER」に対する手法から容易に推量することができる。
【0095】
一方のオペランドのrgiと他方のオペランドのカバー領域との差領域を計算する際、差領域は内容ラベルrgiを継承する。一方、積領域を作成するときには、2つの寄与領域の内容ラベルを結合することによって新しい内容ラベルを作成する。これは、これらの2つの寄与領域のプロキシが合成されて、新しい内容を意味する新しいプロキシが生成されるためである。内容ラベル管理を含む「OVER」領域群構築方法の擬似コードを以下に示す。
【0096】
3.5 2次依存とOver
2次依存の生成に使用する方法の理論的根拠についてはさらに説明が必要である。2次依存が生成されるのは、2つの内容ラベルを結合することによって新しい内容ラベルが作成されるときのみである。上記擬似コードから分かるように、これは、積領域が生成されるときに限られる。他の実施形態では本質的に、積領域に対して生成された内容ラベルを誘因として使用する。2つの内容ラベルが付けられた領域は、これらの領域が交わらない限り、間接的な影響を及ぼしあうことはできない。特定の内容ラベルの2次依存リストは、この合成内容ラベルが表す合成演算子、2つの寄与内容ラベル、および寄与内容ラベルの2次依存リストによって決まる。
【0097】
「OVER」演算子を使用して内容ラベル(B)の上に合成された内容ラベル(A)を表す新しい内容ラベル(C)の2次依存リストを生成する他の実施形態の方法を次に説明する。Aの2次依存リストの要素およびBの2次依存リストの要素をそれぞれAi、Biとする。まずAおよびBを、Cの2次依存リストに追加する。これは、Cで標識された領域が境界を変更した場合には、AおよびBで標識された領域の計算をやり直す必要がある可能性が高いからである(これらの領域はCの領域に接している可能性が高い)。次に、Bの2次依存リストのそれぞれの要素について、(A OVER Bi)を表すそれぞれの内容ラベルを追加する。A OVER Biを表すマッピングはシステム中に存在せず、作成する必要がある。2次依存リストが、領域群のいずれの領域によっても表されていない内容ラベルを含むことがある。これらは、領域境界の変更によって存在するようになることがある。その理論的根拠は、AがBと交わるということであり、したがって、Aも、Bの2次依存リスト中に存在する内容ラベルで標識された領域と交わる可能性が高いということである。同様に、Aの2次依存リストのそれぞれの要素について、(Ai OVER B)を表すそれぞれの内容ラベルを追加する。
【0098】
3.6 内容ラベルと被害
合成ツリーが変更されたからといって画像全体を生成し直す必要は必ずしもないことを示すために、1次および2次被害の概念を図3に関して導入した。異なる内容の領域間の依存関係を追跡することによって、内容が被害を受けた領域の画像データを生成し直すだけでよくなる。以下の説明では、合成ツリーの単純な変更に対する依存および被害について概説する。「単純」の意味は、変更が葉ノードに限られるということである。ツリー構造の変更などのより複雑な変更については、後節で概要を説明する。
【0099】
葉ノードが変更された場合、その影響を受けた領域の内容ラベルは「1次被害」を受けたと言う。内容ラベルが1次被害を受けるということには、その内容ラベルの全ての1次依存が再帰的に1次被害を受けるということが含まれる。内容ラベルが1次被害を受けるとき、その内容ラベルの全ての2次依存には、2次被害が非再帰的にマークされる。このプロセスは、内容ラベルに、被害を受けるというフラグをセットすることから始まる。以下の擬似コードに、内容ラベルがどのように被害をうけるかを示す。
【0100】
ツリーの更新が実施されたときには、1次被害を受けるとマークされた内容ラベルを有する領域は、領域境界とプロキシの両方を計算し直す必要がある。2次被害を受けるとマークされた内容ラベルを有する領域は、その領域記述を計算し直す必要があるが、プロキシは、以前の領域に含まれていなかった新しい領域の範囲だけを計算し直せばよい。
【0101】
3.7 内容ラベルと依存の例
内容ラベルおよび被害の概念をはっきりさせるため、複雑さの異なるいくつかの例を示す。
【0102】
3.7.1 例1
図9で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。(注:下表では内容ラベルを、整数ではなく一意の文字列で表し、「over」は短縮して「o」とした。これは単に読みやすさを考えてのことである)
【表5】
【0103】
Aが移動した場合には、AoBが1次被害を受け、その結果、Bが2次被害を受ける。
【0104】
3.7.2 例2
図10で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。
【表6】
【0105】
この例では、全てのオブジェクトが、その他の全てのオブジェクトと交わっており、そのため何らかの変更があると、全てが何らかの被害を受ける。変更されたオブジェクトの1次依存は全て1次被害を受け、それ以外は全て2次被害を受ける。
【0106】
図11に、次のフレームにおけるAの移動の影響を示す。見て分かるとおりAが変更された場合には、A、AoB、AoCおよび(AoB)oCによって定義された領域がそれぞれ1次被害を受ける。B、CおよびBoCによって定義された領域はそれぞれ2次被害を受ける。
【0107】
3.7.3 例3
図12で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。
【表7】
【0108】
Aはその他の全てのオブジェクトと交わっているので、Aが移動した場合には、合成ツリーのかなりの部分を計算し直す必要がある。図13に、唯一残った部分が、BoCおよびその従属領域BoCoEに対応する領域であることを示した。まとめると以下のようになる:
・1次被害 − A、AoB、AoC、AoE、Ao(DoE)、(AoB)oE、(AoC)oE、(AoC)o(DoE)、AoD、(AoC)oD
・2次被害 − B、C、E、DoE、BoE、CoE、DoE、CoDoE
【0109】
一方、Bが移動した場合、被害の量はAが移動した場合よりも小さくなる。これは、BがDとは交わっていないためである。Bが移動しても、DoE、Ao(DoE)、(AoC)o(DoE)、Co(DoE)および(AoC)oE(およびこれらの祖先)は被害を受けない。これを図14に示す。被害をまとめると以下のようになる。
・1次被害 − B、AoB、BoC、BoE、(AoB)oE、(BoC)oE
・2次被害 − A、E、C、AoE、CoE
【0110】
以上に示した例は単純ではあるが、これまでに示した依存手法が、特定の1つまたは複数の内容ラベルが被害を受けたときに影響を受ける内容ラベルに被害を与えることを十分に示している。一般的な複雑な合成では、多数のオブジェクトがその他の多数のオブジェクトと交わることはまれであり、このことは、前記手法を使用した更新の際に合成ツリーの多くの領域が変更されないだろうことを意味している。
【0111】
3.8 2次依存と合成演算子の例
前記例3を変更したものを考える。図18で、合成ツリーを最初に構築すると以下の内容ラベル表が得られる。なお、AaBはA ATOP Bを、AiBはA IN Bなどを表す。
【表8】
図18に示すようにATOP演算子は、AをBの境界に沿って切り取る。したがってAが、C、DまたはBと交わることはない。同様のことがIN演算子についても言える。これは、この状況におけるオブジェクト間の結びつきがこれまでのものよりも弱いことを意味する。例えばAが変更された場合、直接的な被害を受けるのはBとAaBのみである。同様にEが被害を受けた場合には、DiEのみが被害を受ける可能性を有する。
【0112】
3.9 領域群の更新
他の実施形態では、内容ラベルおよび被害のフレームワークを使用して、更新中に更新されたオペランドに二項領域群を合致させるために実行しなければならない作業の量を減らす。他の実施形態ではこれを、領域群の領域のうち、内容ラベルが1次または2次被害を受ける領域群だけを更新し、合成ツリーに実施された変更の結果生み出される新しい領域を追加し、接触がもはや存在しない領域群の領域を削除することによって実施する。
【0113】
異なるそれぞれの二項演算子は、その演算子の特定の要求を取り扱う異なる更新関数を有する。領域群を更新するプロセスは、ツーパス・プロセスである。最初のパスでは、1次被害を受けた積領域を更新し、この被害のために生成された新しい積領域を追加する。一方のオペランドの領域群のそれぞれの領域と他方のオペランドの領域群のそれぞれの領域との間で、対応する一方または両方の内容ラベルが1次被害を受ける場合には、その領域間の積を計算する。他の実施形態では、この積が空集合でない場合に、この結合を表す内容ラベルが存在するかどうかを判定する。この内容ラベルが存在しない場合には内容ラベルを作成する。これは1次被害を受ける。内容ラベルが1次被害が受けると、その全ての2次依存に2次被害がマークされることに留意されたい。
【0114】
領域群の領域に1次被害内容ラベルが付されている場合には、その領域境界およびプロキシを更新する。その領域群にそのような領域が存在しない場合には、この内容ラベルで標識された新しい領域を領域群に追加する。新しいプロキシを生成し、この積演算から得られた領域記述とともにこの領域に割り当てられる。
【0115】
一方のオペランドの領域群のそれぞれの領域について、その領域の内容ラベルが1次または2次被害を受ける場合に、その領域と他方のオペランドのカバー領域との差を計算する。差が空集合でなく、かつ、前記内容ラベルで標識された領域がその領域群に存在する場合には、その領域記述およびプロキシを更新する。そのような領域が存在しない場合には、前記内容ラベルで標識された領域を領域群に追加する。追加された領域は、差のカバー領域として割り当てられ、現在の領域のプロキシを参照する。
【0116】
一方のオペランドの領域群のそれぞれの領域と他方のオペランドの領域群のそれぞれの領域との間で、それらの結合を表す内容ラベルが2次被害を受け、1次被害を受けない場合に、それらの領域の積を計算する。積が空集合でない場合には、その領域群の中で、その内容ラベルで標識された領域を探索する。このような領域が存在する場合には、その領域記述およびプロキシを、新しい領域と古い領域の差として更新する。そのような領域が存在しない場合には、その内容ラベルで標識された領域を作成する。作成された領域記述を積演算の結果に割り当て、そのプロキシを生成する。
【0117】
二項「OVER」領域群を更新する単純なアルゴリズムを表す擬似コードを以下に示す。
(第1パス このパスを使用して、積領域の1次被害を処理し、新しい積領域を生成する)
(第2パス このパスを使用して、差領域の1次および2次被害、ならびに積領域の2次被害を処理する)
【0118】
4.0 ツリーの変更(リンクおよびアンリンク(Unlinking))
ツリーの構造を変更することによって、合成ツリーにさらに複雑な変更を実施することができる。2つの低レベル演算、リンクおよびアンリンクを使用することによって、ほとんどの一般的なツリー構造の変更を実施することができる。
【0119】
アンリンク演算は、子ノードをその親ノードから分離するのに使用される。この演算が終わると、子ノードは親ノードを持たなくなり(この子ノードをどこか別の場所にリンクすることができることを意味する)、親ノードは使用可能なリンクを有するようになる(代わりに他のノードをリンクさせることができることを意味する)。アンリンクされた子ノード(アンリンク子ノード)よりも上位の合成ツリーのノードは、このアンリンク子ノードに従属する内容を含む。したがってツリーの上位の従属領域群が適正に更新されるように、次の更新時には、アンリンク演算の時点でアンリンク子ノードにあった内容ラベルが被害を受けなければならない。この更新は、親ノードが、そのアンリンク子ノードに存在する内容ラベルをキャッシュしておくことによって実施される。その場所に他のサブツリーがリンクされ、親ノードの領域群が更新されずに続いてアンリンクされた場合は、その新しいサブツリーの内容ラベルをキャッシュする必要はない。アンリンク演算の擬似コードを以下に示す。UNLINKED_LEFTまたはUNLINKED_RIGHTフラグがセットされ、そのため、新しくリンクされたサブツリーの内容ラベルが被害を受ける可能性のあるときには、ツリーの上位の領域群(プロキシを含む)を更新しなければならないことに留意されたい。
【0120】
リンク演算は、親を持たないノードを親ノードの空きリンクにリンクする演算を含む。この演算の擬似コードを以下に示す。
【0121】
4.1 合成ツリー全体の更新
合成ツリーの葉ノードが変更される場合には、前述の方法を使用して、葉ノードからツリーのルートまでの直系の全てのノードの領域群を更新しなければならない。図15に、葉ノードBおよびHに何らかの変更が実施される場合に領域群を更新する必要のあるノードを円で囲んで示す。
【0122】
ツリーを更新する方法の擬似コードを以下に示す。
【0123】
本発明の実施形態は、図19に示すような従来の汎用コンピュータ・システム2100を使用して実装することができる。図1ないし図18に関して説明したプロセスは、このコンピュータにロードでき、このコンピュータによって実行可能な、コンピュータ可読媒体に記録されたソフトウェアとして実装される。コンピュータ・システム2100は、コンピュータ・モジュール2101、入力装置2102、2103、およびディスプレイ装置2104を含む。
【0124】
図19によれば、コンピュータ・モジュール2101は、少なくとも1つの処理装置2105;ランダム・アクセス・メモリ(RAM)およびリード・オンリー・メモリ(ROM)を一般に含む記憶装置2106;ならびにビデオ・インタフェース2107、キーボード2118およびマウス2120のインタフェース2108、入出力インタフェース2110を含む入出力(I/O)インタフェースを含む。記憶装置2109には、フロッピー・ディスク、ハード・ディスク・ドライブ、CD‐ROMドライブ、当業者に周知のその他の不揮発性記憶装置のうちの1つまたは複数の装置を含めることができる。コンピュータ・モジュール2101の構成要素2105ないし2110は一般に、コンピュータ・システム2100が当業者に周知の周知の通常の動作モードで動作するように相互接続バス2114を介して連絡される。本発明の実施形態を実施することが可能なコンピュータ・システムには、IBM−PC/ATおよびその互換システム、SunSparcstationなどのコンピュータ・システムがある。特に、本明細書に記載した擬似コードは、適当な言語にプログラミングし、例えばHDDなどに記憶し、処理装置2105の制御の下でRAM2106中で実行することができ、その結果を、ビデオ・インタフェース2107中のRAMに記憶し、ディスプレイ2116上に再生することができる。このプログラムは、フロッピー・ディスクまたはCD−ROMに予めプログラミングしてシステム2100に供給してもよいし、あるいはインターネットなどのコンピュータ・ネットワークとの接続を介してアクセスしてもよい。
【0125】
前述の好ましい方法は、特定の制御フローを含む。これらの好ましい方法には、本発明の趣旨または範囲を逸脱することなく異なる制御フローを使用する多くの変法がある。さらに、好ましい方法の1つまたは複数の段階を、逐次的にではなく並行して実行することもできる。
【0126】
以上に、本発明のいくつかの実施形態を説明したが、本発明の範囲から逸脱することがなくこれらの実施形態に変更を実施できることは当業者には明らかである。
【0127】
この明細書の文脈において、「〜を含む」という表現は、「〜を主として含むが、〜だけを含むとは限らない」、または「有する」という意味を表し、「〜だけから構成される」ということを意味しない。
【発明の効果】
以上説明したように本発明によれば、複数の構成要素を合成することによって生成される画像を作成する方法を提供することによって、従来技術の方法の欠陥を実質的に克服または改善することが可能になる。
【図面の簡単な説明】
【図1】合成ツリーの例を示す図である。
【図2】重なり合ったいくつかのオブジェクトを含む画像および対応する合成ツリーを示す図である。
【図3】図2の画像に、画像中に存在する異なる領域、およびそれぞれの領域に対する画素データを生成するのに使用される合成式のリストを追加した図である。
【図4】図3の画像について、好ましい実施形態の一例に基づいて最適化した合成演算を示す図である。
【図5】好ましい実施形態に基づく和(Union)演算を使用した2つの領域記述の結合結果を示す図である。
【図6】好ましい実施形態に基づく積(Intersection)演算を使用した2つの領域記述の結合結果を示す図である。
【図7】好ましい実施形態に基づく差(Difference)演算を使用した2つの領域記述の結合結果を示す図である。
【図8A】本発明に基づくOver演算を使用した2つの領域グループの結合演算に含まれる段階を示す図である。
【図8B】本発明に基づくOver演算を使用した2つの領域グループの結合演算に含まれる段階を示す図である。
【図8C】本発明に基づくOver演算を使用した2つの領域グループの結合演算に含まれる段階を示す図である。
【図8D】本発明に基づくOver演算を使用した2つの領域グループの結合演算に含まれる段階を示す図である。
【図9】本発明の他の実施形態の一例に基づく画像および合成ツリーを示す図である。
【図10】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図11】図10の画像に対する領域Aの移動の影響を示す図である。
【図12】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図13】図12の画像に対する領域Aの移動の影響を示す図である。
【図14】図12の画像に対する領域Bの移動の影響を示す図である。
【図15】葉ノードBおよびHを変更した場合に領域群を更新する必要がある合成ツリー中のノードを示す図である。
【図16】領域およびそのxy座標を示す図である。
【図17】2つの領域およびそのxy座標を示す図である。
【図18】前記他の実施形態のその他の例に基づく画像および合成ツリーを示す図である。
【図19】好ましい実施形態が実装された装置を示す図である。
【図20】本発明に有用なさまざまな合成演算子の演算結果を示す図である。
【図21】格子上に整列していない領域を有する2つの円の結合によって形成される領域を示す図である。
【図22】格子上に整列した領域を有する2つの円の結合によって形成される改良された領域を示す図である。
【図23】好ましい実施形態に基づいて画像を作成する方法を示す流れ図である。
【図24】本発明の他の実施形態に基づいて一連の画像を作成する方法を示す流れ図である。
【符号の説明】
2100 汎用コンピュータ・システム
2101 コンピュータ・モジュール
2105 処理装置
2106 記憶装置
2107 ビデオ・インタフェース
2108 インタフェース
2109 記憶装置
2110 入出力インタフェース
2114 バス
2116 ディスプレイ
2118 キーボード
2120 マウス
2140 印刷装置
Claims (19)
- 一連の複数の画像を作成する画像生成方法であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも1つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割工程と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第1の調査工程と、
前記第1の調査工程の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成工程と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第1の画像をレンダリングするレンダリング工程と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第2の調査工程と、
前記第2の調査工程によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新工程とからなり、
前記レンダリング工程は、前記第1の画像に対して、前記更新工程によって更新された前記領域を合成することによって、前記第1の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成方法。 - 前記オブジェクトの外側および内側の輪郭を格子に近似させることによって各輪郭による領域を形成する近似工程を備えたことを特徴とする請求項1に記載の画像生成方法。
- 前記領域が相互排除の関係にあることを特徴とする請求項1に記載の画像生成方法。
- 前記第1の画像のレンダリングが、前記階層構造ツリーで表される全ての領域を合成することによって実行され、前記他の画像は前記更新された階層構造ツリーにしたがって前記第1の画像に対して変化した部分をレンダリングすることによって作成されることを特徴とする請求項1に記載の画像生成方法。
- 前記第1の調査工程は、前記領域内におけるオブジェクトの不透明度を求める処理を含むことを特徴とする請求項1に記載の画像処理方法。
- 前記第2の調査工程によって調査された前記ノード間の依存情報が、前記領域のそれぞれに対して生成されることを特徴とする請求項1に記載の画像生成方法。
- 前記ノード間における依存情報は、前記1つの領域の変更の影響を直接に受ける領域を識別する第1のノード間依存リスト、および前記1つの領域の変更の影響を間接的に受ける領域を識別する第2のノード間依存リストを含むことを特徴とする請求項1に記載の画像生成方法。
- 前記ノードに対する変更が、前記階層構造ツリー中のノードの属性の変更を含み、前記ノードに対する変更の結果として、新しい領域を、前記階層構造ツリーに追加することができることを特徴とする請求項1に記載の画像生成方法。
- 前記領域内において、完全に不透明なオブジェクトは他のオブジェクトを前記階層構造 ツリーから排除し、完全に透明なオブジェクトは前記階層構造ツリーから少なくとも自体を排除することを特徴とする請求項1に記載の画像生成方法。
- 一連の複数の画像を作成する画像生成装置であって、前記複数の画像はそれぞれ階層構造ツリーに基づいて合成される少なくとも複数の図形オブジェクトをレンダリングすることによって形成され、前記階層構造ツリーが前記複数の画像のうちの少なくとも1つの画像の構成要素をそれぞれ表す複数のノードを含み、
前記ノードのそれぞれについて、前記図形オブジェクトが画定された空間を複数の領域に分割する分割手段と、
前記分割された複数の領域をそれぞれ調べることによって、該領域に寄与するオブジェクトを求める第1の調査手段と、
前記第1の調査手段の調査結果に基づいて、前記分割された複数の領域のそれぞれについて前記オブジェクトの前記ノード間における依存情報を生成する生成手段と、
前記階層構造ツリーを用いて、前記連続する複数の画像のうちの第1の画像をレンダリングするレンダリング手段と、
前記ノードに対する変更に応答して、前記ノード間における前記オブジェクトの依存情報の変化を調べる第2の調査手段と、
前記第2の調査手段によって検出された前記依存情報の変化に基づいて、当該変化の影響を受けるノードについて、対応する領域を更新するとともに、前記ノード間における依存情報を更新することによって前記階層構造ツリーを更新する更新手段とを備え、
前記レンダリング手段は、前記第1の画像に対して、前記更新手段によって更新された前記領域を合成することによって、前記第1の画像に関連する他の画像をレンダリングすることによって、前記連続する複数の画像を作成することを特徴とする画像生成装置。 - 前記オブジェクトの外側および内側の輪郭を格子に近似させることによって各輪郭による領域を形成する近似手段を備えたことを特徴とする請求項10に記載の画像生成装置。
- 前記領域が相互排除の関係にあることを特徴とする請求項10に記載の画像生成装置。
- 前記第1の画像のレンダリングが、前記階層構造ツリーで表される全ての領域を合成することによって実行され、前記他の画像は前記更新された階層構造ツリーにしたがって前記第1の画像に対して変化した部分をレンダリングすることによって作成されることを特徴とする請求項10に記載の画像生成装置。
- 前記第1の調査手段が、前記領域のそれぞれの領域を調べ、前記オブジェクトのそれぞれのオブジェクトの前記領域内の不透明度を求める手段を含むことを特徴とする請求項10に記載の画像生成装置。
- 前記第2の調査手段による前記ノード間の依存情報が、前記領域のそれぞれに対して生成されることを特徴とする請求項10に記載の画像生成装置。
- 前記ノード間における依存情報は、前記1つの領域の変更の影響を直接に受ける領域を識別する第1のノード間依存リスト、および前記1つの領域の変更の影響を間接的に受ける領域を識別する第2のノード間依存リストを含むことを特徴とする請求項10に記載の画像生成装置。
- 前記ノードに対する変更が、前記階層構造ツリー中のノードの属性の変更を含み、前記ノードに対する変更の結果として、新しい領域を、前記階層構造ツリーに追加することができることを特徴とする請求項10項に記載の画像生成装置。
- 前記領域内において、完全に不透明なオブジェクトは他のオブジェクトを前記階層構造ツリーから排除し、完全に透明なオブジェクトは前記階層構造ツリーから少なくとも自体を排除することを特徴とする請求項10に記載の画像生成装置。
- 請求項1乃至9のいずれか1項に記載の画像生成方法を、コンピュータに実行させるためのコンピュータプログラムを格納したことを特徴とするコンピュータ可読の記憶媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AUPP5688A AUPP568898A0 (en) | 1998-09-03 | 1998-09-03 | Optimizing image compositing |
AUPP5687A AUPP568798A0 (en) | 1998-09-03 | 1998-09-03 | Efficiency updating expression trees for image compositing |
AU5687 | 1998-09-03 | ||
AU5688 | 1998-09-03 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000101829A JP2000101829A (ja) | 2000-04-07 |
JP2000101829A5 JP2000101829A5 (ja) | 2007-04-26 |
JP4164204B2 true JP4164204B2 (ja) | 2008-10-15 |
Family
ID=25645859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25059599A Expired - Fee Related JP4164204B2 (ja) | 1998-09-03 | 1999-09-03 | 画像生成方法、装置及びコンピュータ可読記憶媒体 |
Country Status (3)
Country | Link |
---|---|
US (2) | US6795589B1 (ja) |
EP (1) | EP0984396A3 (ja) |
JP (1) | JP4164204B2 (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPO002196A0 (en) * | 1996-05-22 | 1996-06-13 | Canon Information Systems Research Australia Pty Ltd | A method of optimising an expression tree for the production of images |
US7630006B2 (en) | 1997-10-09 | 2009-12-08 | Fotonation Ireland Limited | Detecting red eye filter and apparatus using meta-data |
US6895127B1 (en) * | 1999-09-10 | 2005-05-17 | Arcsoft, Inc. | Photomontage using multiple layer placement and color variation |
US7292255B2 (en) * | 2000-05-31 | 2007-11-06 | Canon Kabushiki Kaisha | Image data acquisition optimisation |
AUPR212600A0 (en) * | 2000-12-18 | 2001-01-25 | Canon Kabushiki Kaisha | Efficient video coding |
FR2825556A1 (fr) * | 2001-05-31 | 2002-12-06 | Koninkl Philips Electronics Nv | Generation d'une description dans un langage de balisage d'une structure d'un contenu multimedia |
AUPR970501A0 (en) * | 2001-12-21 | 2002-01-24 | Canon Kabushiki Kaisha | A method for performing set operations on two or more arbitrary paths to produce a simple outline path |
JP3898075B2 (ja) * | 2002-03-18 | 2007-03-28 | 株式会社リコー | 画像処理装置、画像処理方法及び記録媒体 |
AUPS145902A0 (en) * | 2002-03-28 | 2002-05-09 | Canon Kabushiki Kaisha | A client server approach for interactive updates of graphical user interfaces on intranets |
US7096452B2 (en) * | 2003-06-24 | 2006-08-22 | Micron Technology, Inc. | Method and device for checking lithography data |
US9412007B2 (en) * | 2003-08-05 | 2016-08-09 | Fotonation Limited | Partial face detector red-eye filter method and apparatus |
US20100053367A1 (en) * | 2003-08-05 | 2010-03-04 | Fotonation Ireland Limited | Partial face tracker for red-eye filter method and apparatus |
US8520093B2 (en) | 2003-08-05 | 2013-08-27 | DigitalOptics Corporation Europe Limited | Face tracker and partial face tracker for red-eye filter method and apparatus |
US7538770B2 (en) * | 2003-11-28 | 2009-05-26 | Canon Kabushiki Kaisha | Tree-based compositing system |
AU2004233516B2 (en) * | 2003-11-28 | 2008-07-31 | Canon Kabushiki Kaisha | Tree-based compositing system |
US7403209B2 (en) * | 2004-03-24 | 2008-07-22 | Canon Kabushiki Kaisha | Rendering images containing video |
US7450121B2 (en) * | 2004-10-19 | 2008-11-11 | Canon Kabushiki Kaisha | Dynamic bit depth rendering |
US7599577B2 (en) | 2005-11-18 | 2009-10-06 | Fotonation Vision Limited | Method and apparatus of correcting hybrid flash artifacts in digital images |
US7978196B2 (en) * | 2006-03-02 | 2011-07-12 | Canon Kabushiki Kaisha | Efficient rendering of page descriptions |
JP4169053B2 (ja) * | 2006-07-05 | 2008-10-22 | ブラザー工業株式会社 | 画像処理装置及び画像処理方法 |
US7839422B2 (en) * | 2006-12-13 | 2010-11-23 | Adobe Systems Incorporated | Gradient-domain compositing |
US20080158254A1 (en) * | 2006-12-29 | 2008-07-03 | Hong Jiang | Using supplementary information of bounding boxes in multi-layer video composition |
JP5020862B2 (ja) * | 2008-03-03 | 2012-09-05 | 大日本スクリーン製造株式会社 | 線画処理装置、およびプログラム |
US20100066731A1 (en) * | 2008-09-16 | 2010-03-18 | James Calvin Vecore | Configurator Process and System |
AU2011205085B2 (en) * | 2011-07-29 | 2014-05-15 | Canon Kabushiki Kaisha | 2D region rendering |
US8515149B2 (en) * | 2011-08-26 | 2013-08-20 | General Electric Company | Inspection system and method for determining three dimensional model of an object |
US9053392B2 (en) * | 2013-08-28 | 2015-06-09 | Adobe Systems Incorporated | Generating a hierarchy of visual pattern classes |
CN109363771B (zh) * | 2018-12-06 | 2021-08-06 | 安徽埃克索医疗机器人有限公司 | 一种融合术中2d规划信息的股骨颈骨折多隧道植钉定位系统 |
JP7145440B2 (ja) * | 2020-03-26 | 2022-10-03 | パナソニックIpマネジメント株式会社 | 学習データ生成方法、学習データ生成装置、及び、プログラム |
US11500817B2 (en) * | 2020-05-11 | 2022-11-15 | Cohesity, Inc. | Asynchronous deletion of large directories |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307452A (en) * | 1990-09-21 | 1994-04-26 | Pixar | Method and apparatus for creating, manipulating and displaying images |
US5557711A (en) * | 1990-10-17 | 1996-09-17 | Hewlett-Packard Company | Apparatus and method for volume rendering |
US5159647A (en) * | 1991-03-04 | 1992-10-27 | David Sarnoff Research Center, Inc. | Fast and efficient search method for graphical data |
US5485568A (en) * | 1993-10-08 | 1996-01-16 | Xerox Corporation | Structured image (Sl) format for describing complex color raster images |
AU695554B2 (en) | 1994-07-25 | 1998-08-13 | Canon Kabushiki Kaisha | Efficient methods for the evaluation of a graphical programming language |
AUPM704594A0 (en) * | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Efficient methods for the compositing of graphical elements |
AUPM704494A0 (en) * | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Efficient methods for the interpretation of a graphical programming language |
AU695334B2 (en) | 1994-07-25 | 1998-08-13 | Canon Kabushiki Kaisha | Efficient methods for the compositing of graphical elements |
US5966139A (en) * | 1995-10-31 | 1999-10-12 | Lucent Technologies Inc. | Scalable data segmentation and visualization system |
AUPO002196A0 (en) * | 1996-05-22 | 1996-06-13 | Canon Information Systems Research Australia Pty Ltd | A method of optimising an expression tree for the production of images |
JPH10145583A (ja) * | 1996-11-14 | 1998-05-29 | Casio Comput Co Ltd | 画像処理装置 |
AU730559B2 (en) | 1998-05-20 | 2001-03-08 | Canon Kabushiki Kaisha | Optimisation in image composition |
US6215503B1 (en) * | 1998-05-29 | 2001-04-10 | Microsoft Corporation | Image generator and method for resolving non-binary cyclic occlusions with image compositing operations |
-
1999
- 1999-08-31 EP EP99306891A patent/EP0984396A3/en not_active Withdrawn
- 1999-09-01 US US09/387,564 patent/US6795589B1/en not_active Expired - Fee Related
- 1999-09-03 JP JP25059599A patent/JP4164204B2/ja not_active Expired - Fee Related
-
2002
- 2002-09-05 US US10/234,244 patent/US6816619B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0984396A3 (en) | 2003-08-20 |
US6795589B1 (en) | 2004-09-21 |
EP0984396A2 (en) | 2000-03-08 |
US20030118250A1 (en) | 2003-06-26 |
JP2000101829A (ja) | 2000-04-07 |
US6816619B2 (en) | 2004-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4164204B2 (ja) | 画像生成方法、装置及びコンピュータ可読記憶媒体 | |
US7292255B2 (en) | Image data acquisition optimisation | |
JP4101275B2 (ja) | 走査線ベースのラスタ画像プロセッサにおける奥行き追跡の方法 | |
JP4323671B2 (ja) | レンダリングを最適化するように合成式をコンパイルする方法 | |
JP4366387B2 (ja) | 画像処理装置及び方法 | |
JP4343344B2 (ja) | ラスタ形式のグラフィックオブジェクトを用いたイメージの高速レンダリング方法 | |
Lambert et al. | Winding roads: Routing edges into bundles | |
JP4630482B2 (ja) | 表現ツリーを生成する装置及びラスタ画素イメージを描画する装置 | |
JP3618838B2 (ja) | 画像出力方法 | |
El-Sana et al. | Skip strips: maintaining triangle strips for view-dependent rendering | |
EP0691012B1 (en) | Graphic edge system | |
CN101702309B (zh) | 用于绘制组合字形的区域的方法 | |
US6985161B1 (en) | Region based image compositing | |
JPH1055427A (ja) | 画像の表現ツリーの最適化方法および装置 | |
US20070171222A1 (en) | Application-independent method for capturing three-dimensional model data and structure for viewing and manipulation | |
JP3359634B2 (ja) | 境界内更新を備えたグラフィックス出力システム | |
US8217933B2 (en) | Method and apparatus for detecting between virtual objects | |
Whitted et al. | A software test-bed for the development of 3-D raster graphics systems | |
US7262782B1 (en) | Selectively transforming overlapping illustration artwork | |
US20090009526A1 (en) | Method and system for rendering a shape | |
Shiue et al. | Mesh mutation in programmable graphics hardware | |
EP0855682A2 (en) | Scan line rendering of convolutions | |
AU736530B2 (en) | Optimizing image compositing | |
KR100441079B1 (ko) | 안티알리아싱 장치 및 방법 | |
AU767293B2 (en) | Image data acquisition optimisation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060904 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060904 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20060904 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080317 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080331 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080529 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080620 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080627 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080722 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080728 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110801 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120801 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120801 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130801 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |