(57)【要約】  垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するため、たとえば非破壊的に処理するための、方法およびシステムが提供される。非破壊的処理では、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。垂直に配向されたエフェクトグラフの下に行くほど、実行される変形が良好になる。したがって、可能な限りエフェクトグラフの最下地点まで変形を押し下げ、以前に配置されていた可能性のある場所ではなくその地点でそれらを適用するための方法が提供される。本明細書に開示された方法を実施するためのシステムも提供される。
2008544402.tif 000002
【特許請求の範囲】
【請求項１】
垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法であって、前記デジタルイメージデータは前記エフェクトグラフの下部から前記エフェクトグラフの上部へと処理されていくものであり、
前記垂直に配向されたエフェクトグラフを受け取るステップであって、前記エフェクトグラフがその第１の垂直位置に配置された第１の変形エフェクトオブジェクトを有するものを、受け取るステップと、
前記第１の変形エフェクトオブジェクトが第２の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するステップであって、前記第２の垂直位置が前記第１の垂直位置よりも前記エフェクトグラフの下部に近いものを、判別するステップと、
を含む方法。
【請求項２】
前記第１の変形エフェクトオブジェクトが前記第２の垂直位置で前記デジタルイメージデータに適用可能であると判別された場合、前記第１の垂直位置ではなく前記第２の垂直位置で前記第１の変形オブジェクトを適用するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の変形エフェクトオブジェクトが前記第２の垂直位置で前記デジタルイメージデータに適用可能でないと判別された場合、前記第１の垂直位置で前記第１の変形エフェクトオブジェクトを適用するステップをさらに含む、請求項１に記載の方法。
【請求項４】
第２の変形エフェクトオブジェクトは前記第２の垂直位置に配置される、請求項１に記載の方法。
【請求項５】
前記第１の変形エフェクトオブジェクトが前記第２の垂直位置で前記デジタルイメージデータに適用可能であると判別された場合、前記第１および第２の変形エフェクトオブジェクトを前記第２の垂直位置で累積的に適用するステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記エフェクトグラフは、前記第１の垂直位置よりも前記エフェクトグラフの下部に近く、前記第２の垂直位置よりも前記エフェクトグラフの上部に近い、エフェクトオブジェクトを含み、前記第１の変形エフェクトオブジェクトが前記第２の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するステップは、前記エフェクトオブジェクトが、前記第１の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記エフェクトオブジェクトが、前記第１の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップが、前記エフェクトオブジェクトから前記入力を受け取るステップを含む、請求項６に記載の方法。
【請求項８】
前記第１の変形エフェクトオブジェクトは少なくとも２つの部分を含み、前記エフェクトオブジェクトが、前記第１の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップが、前記エフェクトオブジェクトが、前記少なくとも２つの部分のそれぞれに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップを含む、請求項６に記載の方法。
【請求項９】
前記エフェクトオブジェクトが、前記少なくとも２つの部分のすべてより少ない部分に従って変形されたデジタルイメージデータを処理することが可能であることを示す入力を受け取った場合、前記エフェクトオブジェクトが、前記第１の垂直位置ではなく前記第２の垂直位置でそれに従って変形されたデジタルイメージデータを処理することができる、前記変形オブジェクトのそれらの部分のみを適用するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記請求項１に記載の方法を実行するためのコンピュータ実行可能命令を有する、１つまたは複数のコンピュータ読み取り可能媒体。
【請求項１１】
前記請求項１に記載の方法を実行するようにプログラミングされたコンピュータ。
【請求項１２】
垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムであって、
前記垂直に配向されたエフェクトグラフを受け取るための受け取り構成要素であって、前記エフェクトグラフが第１の垂直位置に配置された第１の変形エフェクトオブジェクトを有する、受け取り構成要素と、
前記第１の変形エフェクトオブジェクトが第２の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するための判別構成要素であって、前記第２の垂直位置が前記第１の垂直位置よりも前記エフェクトグラフの下部に近い、判別構成要素と、
前記第１の変形エフェクトオブジェクトが前記第２の垂直位置で適用可能であると判別された場合、前記第１の垂直位置ではなく前記第２の垂直位置で、前記第１の変形エフェクトオブジェクトを適用するための適用構成要素と、
を備えるシステム。
【請求項１３】
前記エフェクトグラフは、前記第１の垂直位置よりも前記エフェクトグラフの下部に近く、前記第２の垂直位置よりも前記エフェクトグラフの上部に近い、エフェクトオブジェクトを含み、前記システムは、前記エフェクトオブジェクトが前記変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を、前記エフェクトオブジェクトから受け取るための入力受け取り構成要素をさらに備える、請求項１２に記載のシステム。
【請求項１４】
第２の変形エフェクトオブジェクトは前記第２の垂直位置に配置され、前記システムは、前記第１および第２の変形エフェクトオブジェクトを累積するための累積構成要素をさらに備える、請求項１２に記載のシステム。
【請求項１５】
垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法であって、
初期変形値を有するデジタルイメージデータを受け取るステップと、
少なくとも１つの変形エフェクトオブジェクトを有する前記エフェクトグラフを受け取るステップと、
前記少なくとも１つの変形エフェクトオブジェクトで受け取った前記デジタルイメージデータを、前記初期変形値から第１の変形済み変形値に変形するステップと、
前記少なくとも１つの変形エフェクトオブジェクトで受け取った前記デジタルイメージデータを、前記初期変形値から第２の変形済み変形値に変形するステップと、
を含む方法。
【請求項１６】
前記第１および第２の変形値を示す入力を受け取るステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記受け取ったデジタルイメージデータを前記初期変形値から第１の変形済み変形値に変形するステップに続いて、前記受け取ったデジタルイメージデータを再サンプリングするステップと、
前記第１の変形値を有する修正済みデジタルイメージデータを作成するステップと、
をさらに含む、請求項１５に記載の方法。
【請求項１８】
前記受け取ったデジタルイメージデータを前記初期変形値から第２の変形済み変形値に変形するステップに続いて、前記受け取ったデジタルイメージデータを再サンプリングするステップと、
前記第２の変形値を有する修正済みデジタルイメージデータを作成するステップと、
をさらに含む、請求項１５に記載の方法。
【請求項１９】
前記初期変形値と前記第１の変形値との差を少なくとも一部含む累積値として、前記第２の変形値を計算するステップをさらに含む、請求項１５に記載の方法。
【請求項２０】
前記請求項１５に記載の方法を実行するためのコンピュータ実行可能命令を有する、１つまたは複数のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
【背景技術】
【０００２】
ビデオカードまたはグラフィックス処理ユニット（ＧＰＵ）は、超高速メモリを使用し、これをピクセルデータ上で単純な計算を非常に効率的に処理することが可能な専用プロセッサと結合するという点で、中央処理ユニット（ＣＰＵ）とは異なる。ビデオカードは汎用プロセッサではない。しかしながら、それらはたとえば、どの面をユーザに見えるようにするべきであるか、およびどの面を隠すべきであるか、ならびに、どのテクスチャをそれらの面にマッピングして３次元（３Ｄ）シーンでリアルに見えるようにするべきであるかを、ＣＰＵが同じタスクを実施できるよりもさらに迅速に、計算することができる。これは、ビデオカードがかなり特殊化されたハードウェアを利用して一度に１つの機能のみを実行するのに対して、ＣＰＵは様々な一般タスクを適切に実行することができるが、任意の特定操作に対しては最適化されない、という事実によるところが大きい。
【０００３】
ビデオカード（ＧＰＵ）は、これまで、２つの主な目的に使用されてきた。第１に、ＧＰＵは、ユーザのスクリーン上で単純なグラフィックス操作を加速させるために利用されてきた。たとえば、ユーザがディスプレイデバイス（たとえば、従来のコンピュータモニタ）上に表示された文書をスクロールする場合、多数のピクセルが移動される。こうしたアクションが課す計算要求により、従来のＣＰＵは、このタスクを実施する場合にそれほど高速または効率的ではない。したがってＧＰＵは、高速かつ効率的なスクローリングを達成するために、ＣＰＵと共に使用することができる。
【０００４】
第２に、ＧＰＵは、単純なプリミティブをレンダリングするため（たとえば、ある領域に色を塗る、線を引く、などのため）に使用されてきた。単純なグラフィックス操作を加速させることにより、ＧＰＵは、こうした単純なプリミティブを従来のＣＰＵよりも高速かつ効率的にレンダリングすることができる。
【０００５】
さらに最近では、ゲームにおけるリアリズムおよび速度を上げるための要求を増加させるビデオゲームが、より一般的になり始めてきた。したがってビデオゲーム製造会社は、たとえば３次元シーンを描画しながら、シーンをできる限りリアルに見せるために、陰影付け、反射、テクスチャマッピングなどを提供する一方で、依然としてユーザ入力に迅速に応答する、ビデオレンダリングの複雑な問題に取り組み始めた。
【０００６】
前述の特定の領域以外では、ビデオカードはＣＰＵ機能を加速させるために使用されていない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
最近では、ビデオゲーム製造会社の領域外でのデジタルイメージの使用も増加してきた。しかしながら、デジタルイメージが大きくなる（メガピクセル超）ほど、ピクセルは深くなる（少なくとも１チャネルあたり１６ビット）ため、従来のＣＰＵで使用可能な計算リソースに負担をかけ、結果としてデジタルイメージ処理が、より低速かつ非効率的になる。
【課題を解決するための手段】
【０００８】
本発明の諸実施形態は、垂直に配向されたエフェクトグラフを利用するデジタルイメージデータの処理、たとえば非破壊的処理に関する。非破壊的処理では、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。垂直に配向されたエフェクトグラフの下に行くほど、実行される変形が良好になる。したがって本発明の諸実施形態は、変形をエフェクトグラフの可能な最低地点まで下に押し下げること、および、それらをそれまで置かれていた可能性のある場所ではなくその地点で適用することに関する。
【０００９】
以下、本発明について、添付の図面を参照しながら詳細に説明する。
【発明を実施するための最良の形態】
【００１０】
本発明の主題は、法定要件を満たすために本明細書における特異性を用いて説明する。しかしながら、説明自体は、本特許の範囲を制限することを意図するものではない。むしろ、本発明者等は、他の現在または今後の技術に関連して本明細書で説明されたものと同様の様々なステップまたはステップの組み合わせを含めるために、請求された主題が他の方法でも具体化可能であることを企図している。さらに、本明細書における「ステップ」および／または「ブロック」という用語は、採用された方法の様々な要素を暗示するために使用することが可能であるが、これらの用語は、個々のステップの順序が明示的に記載されていない限り、および記載されている場合を除いて、本明細書で開示された様々なステップの中またはステップ間の任意の特定順序を暗示するものと解釈されるべきではない。
【００１１】
本発明の諸実施形態は、エフェクトグラフを利用してデジタルイメージデータを処理するためのシステムおよび方法を提供する。以上、本発明の概要について簡単に説明したが、以下では、本発明に関する例示的動作環境について説明する。
【００１２】
図面全体、特に最初に図１を参照すると、様々な図において、同じ参照番号は同じ構成要素を識別しており、本発明を実施するための例示的動作環境が示され、コンピューティングシステム環境１００全体として指定されている。コンピューティングシステム環境１００は、好適なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲に関していかなる制限をも示唆することを意図しない。また、コンピューティング環境１００は、例示的動作環境１００に示されたいかなる構成要素または構成要素の組み合わせに関するいかなる依存性または要件を有するものとしても、解釈されるべきではない。
【００１３】
本発明は、多数の他の汎用または特定用途向けのコンピューティングシステム環境または構成と共に、動作可能である。本発明と共に使用するのに好適な可能性のある良く知られたコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能な大衆消費者向け電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、前述のシステムまたはデバイスのいずれかを含む分散型コンピューティング環境、などが含まれるが、これらに限定されるものではない。
【００１４】
本発明について、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との一般的な関連において説明する。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶デバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体内に配置することができる。
【００１５】
図１を参照すると、本発明を実施するための例示的システムは、コンピュータ１１０の形の汎用コンピューティングデバイスを含む。コンピュータ１１０の構成要素は、処理ユニット１２０、システムメモリ１３０、および、システムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含むが、これらに限定されることはない。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、および、様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかとすることができる。限定ではなく、例を挙げると、こうしたアーキテクチャは、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、および、メザニンバスとしても知られるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００１６】
コンピュータ１１０は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０がアクセス可能な任意の使用可能媒体とすることが可能であり、揮発性および不揮発性の媒体、取り外し可能および取り外し不能の媒体の、両方を含む。限定ではなく、例を挙げると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実施された、揮発性および不揮発性、取り外し可能または取り外し不能の、両方の媒体を含むことができる。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル汎用ディスク（ＤＶＤ）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を格納するために使用可能であり、コンピュータ１１０がアクセス可能な、任意の他の媒体を含むが、これらに限定されることはない。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調データ信号内の、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、その特徴の１つまたは複数が信号内の情報を符号化する方法で設定または変更された、信号を意味する。限定ではなく、例を挙げると、通信媒体は、有線ネットワークまたは直接配線式接続などの有線媒体、ならびに、音波、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。前述の任意の組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるものとする。
【００１７】
システムメモリ１３０は、読み取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間で情報を転送する際に役立つ基本ルーチンを含む、基本入力／出力システム（ＢＩＯＳ）１３３が、通常、ＲＯＭ  １３１に格納される。ＲＡＭ  １３２は、通常、処理ユニット１２０が即時アクセス可能、および／または処理ユニット１２０によって現在動作中の、データおよび／またはプログラムモジュールを含む。限定ではなく、例を挙げると、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００１８】
コンピュータ１１０は、他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。単なる例として、図１は、取り外し不能不揮発性磁気媒体からの読み取りまたはこれへの書き込みを行うハードディスクドライブ１４１と、取り外し可能不揮発性磁気ディスク１５２からの読み取りまたはこれへの書き込みを行う磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭまたは他の光媒体などの取り外し可能不揮発性光ディスク１５６からの読み取りまたはこれへの書き込みを行う光ディスクドライブ１５５と、を示す。例示的オペレーティング環境で使用可能な他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル汎用ディスク（ＤＶＤ）、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含むが、これらに限定されることはない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの取り外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取り外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００１９】
前述の、および図１に示された、ドライブおよびそれらの関連付けられたコンピュータ記憶媒体は、コンピュータ１１０に関するコンピュータ読み取り可能命令、データ構造、プログラムモジュール、および他のデータに、記憶域を提供する。たとえば図１では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納しているものとして示される。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであるか、または異なるかの、いずれかが可能であることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、最低でも、これらが異なるコピーであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード１６２、および、一般にはマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの、入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、などを含むことができる。これらおよび他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１または他のタイプのディスプレイデバイスも、ビデオインターフェース１９０などのインターフェースを介して、システムバス１２１に接続される。コンピュータは、モニタ１９１に加えて、出力周辺インターフェース１９５を介して接続可能な、スピーカ１９７およびプリンタ１９６などの他の周辺出力デバイスを含むこともできる。
【００２０】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用する、ネットワーク化環境で動作可能である。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、図１にはメモリストレージデバイス１８１のみが示されているが、通常は、コンピュータ１１０に関して上記で述べた要素のうちの多くまたはすべてを含む。図１に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００２１】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ  １７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して通信を確立するための他の手段を含む。モデム１７２は内蔵型または外付けとすることが可能であり、ネットワークインターフェース１７０または他の適切なメカニズムを介して、システムバス１２１に接続することができる。ネットワーク化環境では、コンピュータ１１０に関して示されたプログラムモジュール、またはその一部を、リモートメモリストレージデバイスに格納することができる。限定ではなく、例を挙げると、図１は、リモートアプリケーションプログラム１８５を、メモリデバイス１８１上に常駐しているものとして示す。図示されたネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することができることが理解されよう。
【００２２】
コンピュータ１１０の多くの他の内部構成要素は図示されていないが、当業者であれば、こうした構成要素および相互接続が周知であることを理解されよう。したがって、コンピュータ１１０の内部構造に関する追加の細部については、本発明に関連して開示する必要がない。
【００２３】
コンピュータ１１０の電源がオンになるかまたはリセットされた場合、ＲＯＭ  １３１に格納されたＢＩＯＳ  １３３は、オペレーティングシステムまたはその必要部分をハードディスクドライブ１４１からＲＡＭ  １３２にロードするよう、処理ユニット１２０に命じる。オペレーティングシステム１４４によって指定されたオペレーティングシステムのコピーされた部分が、ＲＡＭ  １３２にロードされると、処理ユニット１２０はオペレーティングシステムコードを実行し、オペレーティングシステム１３４のユーザインターフェースに関連付けられた視覚要素がモニタ１９１上に表示されることになる。通常、アプリケーションプログラム１４５がユーザによってオープンされると、プログラムコードおよび関連データがハードディスクドライブ１４１から読み取られ、必要部分がＲＡＭ  １３２にコピーされるが、このコピーされた部分は、本明細書では参照番号１３５によって表される。
【００２４】
前述のように、本発明の諸実施形態は、デジタルイメージ処理においてビデオカードまたはＧＰＵの加速機能を利用するためのシステムおよび方法を提供する。こうした方法およびシステムは、たとえば図１のビデオインターフェース１９０を利用することができる。当業者であれば、本明細書で利用される「デジタルイメージ」という用語は、静的および／または動的なデジタルイメージを含む任意のデジタルイメージデータを言い表すこと、ならびに、そのいずれかおよびすべての組み合わせまたは変形が本発明の範囲内にあるものと企図されることを、理解されよう。本明細書で説明されるシステムおよび方法を利用すると、加速されたペースで、すなわちＣＰＵがそれ自体で実行できる速度よりも速く、ピクセルデータを様々な方法で変形することができる。
【００２５】
加えて、本発明の諸実施形態は、非破壊的編集をＧＰＵ加速と統合する。本明細書で使用される「非破壊的編集」または「非破壊的処理」という用語は、レンダリングが要求されるイメージデータのみが要求時にレンダリングされることになる、すなわち、データを中間ステップに平坦化または保存することのない、編集（または処理）を言い表す。言い換えれば、レンダリングは、イメージがレンダリングされる場合は必ず、変形されていない最初にロードされたイメージデータから、オンデマンドで実施される。
【００２６】
従来のアプリケーションでは、程度の差は様々であるがＣＰＵ処理と組み合わせた非破壊的編集が試行された。しかしながら、ＣＰＵ処理が十分に低速である場合、性能は、その当時は一般的であった相対的に小さなイメージでの平坦化されたモデルの性能に合わせられないことが、完全には理解されていなかった。しかしながら最近では、非常に大規模な（メガピクセル）写真イメージの人気が高まっており、非破壊的編集モデルがより魅力的になっている。
【００２７】
本発明の諸実施形態によって企図されるように、ＧＰＵを非破壊的編集と組み合わせて利用することにより、イメージ処理の性能は、従来のＣＰＵベースの平坦化モデルに比べて非常にしばしば桁違いに高いものになる。実際のところ、ＧＰＵのメモリ占有スペースは相対的に小さく（平坦化はメモリをかなり多用する）、ＧＰＵからＣＰＵメモリへイメージデータを読み取るための帯域幅が限られているため、平坦化モデルは、ＧＰＵ実施に適していない。
【００２８】
ＧＰＵと組み合わせた非破壊的編集によって、レンダリングに必要なビットのみの、オンデマンドでのＧＰＵへのローディングが可能になる。したがって、編集のたびに元のピクセルすべてがフル解像度で処理されることを確認する必要がなくなる。
【００２９】
本発明の諸実施形態に従った方法およびシステムは、ＧＰＵ加速機能をＣＰＵデジタルイメージ処理モデルに統合する。すなわち、ＧＰＵは、単なる特殊な機能などとして周辺に提供されるとは対照的に、デジタルイメージ処理モデルアーキテクチャに統合される。この場合、デジタルイメージ処理の作業を行っているユーザ（たとえばプログラマまたは開発者）が、長所または機能がターゲットデバイスと共にある２つのモダリティを交互に用いることができる、たとえば、ＣＰＵ処理またはＧＰＵ処理のいずれかを単独で選択する必要がないように、ＣＰＵおよびＧＰＵ処理は一体化される。
【００３０】
システムアーキテクチャに統合される一方で、ＧＰＵの使用はオプション構成要素として提供されることに留意されたい。したがって、レンダリングデバイスがビデオカードの機能を含む場合、システムはその加速機能を、必要に応じてまたは所望に応じて呼び出すことができる。しかしながら、システムがビデオカードの機能を含まない場合も、依然としてデジタルイメージ処理に利用することができる。
【００３１】
本発明の方法およびシステムは、エフェクトグラフを作成するため、および、ＧＰＵ、ＣＰＵ、またはこの２つの何らかの組み合わせを使用してこれを連結するための機能を提供する。本発明の諸実施形態に従ったデジタルイメージ処理モデルアーキテクチャは、本明細書ではエフェクトと呼ばれる要素からなる。本明細書で使用されるエフェクトという用語は、基本的なイメージ処理クラスである。すなわち、エフェクトは基本的にピクセル演算子である。それらはバッファおよびピクセルデータを取り込み、データを操作し、修正されたピクセルを出力する。たとえば、鮮明化エフェクトはイメージピクセルを取り込み、そのピクセル縁部を鮮明にし、取り込んだイメージピクセルよりも鮮明化されたイメージを出力する。他の例では、露光エフェクトはイメージピクセルデータを取り込み、このピクセルの色バランスを調節し、取り込んだものから修正された色バランスを有するイメージを出力する。したがって、エフェクトの主な機能はピクセルを処理することである。
【００３２】
様々なイメージ処理アルゴリズムを実施するために、たとえばマスキング、混合、回転などの、異なるエフェクトを定義することができる。以下でより完全に説明するように、ユーザは、所望の結果を達成するために、事前に定義されたエフェクトをまとめて連結することができる。所望であれば、ユーザは、関心のあるイメージ処理アルゴリズムを実施するために新しいエフェクトを定義することもできる。エフェクトは、任意数の入力イメージを処理し、任意数の出力イメージを生成することができる。入力および出力の数は構築時に決定され、エフェクトを再作成することなく変更することはできない。各入力または出力の意味は、エフェクト自体によって定義される。ほとんどの場合、この意味は順序に依存する。
【００３３】
単なる例として挙げると、図２は、３つの入力および２つの出力を有する混合エフェクトを示す概略図である。この特定の混合エフェクトは、その第３の入力（入力２）に与えられるマスクによって変調された、その最初の２つの入力（入力０および入力１）を混合する。この例では、第１の出力（出力０）がカラーイメージを生成し、第２の出力（出力１）がグレーの陰影でイメージを生成する。多くのエフェクトは１つの出力のみを生成する。
【００３４】
ある意味では、各エフェクトが互いに連結する前に何を実行するかをユーザが理解しなければならないという点で、エフェクトは集積回路のような働きをする。集積回路と同様、互いに連結されたエフェクトの集合は、各部分の合計を超える複雑な結果を達成することができる。
【００３５】
エフェクトは互いに連結されると、エフェクトグラフを形成する。本明細書で使用されるエフェクトグラフという用語は、有向非巡回グラフ（ＤＡＧ）である。すべての接続が（１つのエフェクトの出力から次の入力までの）データフローの方向を暗示しているため、「有向」である。ループは禁止、すなわちグラフを通過するどの経路もエフェクトの出力をその入力の１つとして戻さないため、「非巡回」である。あるエフェクトの出力を複数のエフェクトの入力に送ることができるため、「ツリー」ではなく「グラフ」である。エフェクトグラフは複数のエフェクトを互いに接続して、複数の単純な構築ブロックから構築された複雑な出力を達成する。
【００３６】
図３を参照すると、入力イメージの領域をマスクによって指示されたとおりに選択的にぼかす、例示的エフェクトグラフ３００の概略図が示される。イメージエフェクトオブジェクト３１０が、ぼかしエフェクトオブジェクト３１２および混合エフェクトオブジェクト３１４の両方に、イメージデータをどのように供給するかに留意されたい。これは、ツリー構造では不可能であろう。加えて、エフェクトグラフ３００には循環が存在しない。すなわち、たとえば混合エフェクトオブジェクト３１４の出力は、他のエフェクトオブジェクト（イメージエフェクトオブジェクト３１０、ぼかしエフェクトオブジェクト３１４、またはマスクエフェクトオブジェクト３１６）のうちの１つの入力ではない。本発明のモデルは、エフェクトグラフがレンダリングおよび／または変更される場合、無限ループを防止するために、循環を自動的にチェックする。
【００３７】
レンダリングのためにエフェクトが呼び出されると、各エフェクトにいくつかの興味ある出来事が生じる。第１に、各エフェクトは、既存のキャッシュに入ったバッファを使用して、要求を満たすことができるかどうかを判別する。キャッシュストラテジについては、以下でより詳細に論じるが、ここでは、その作業の出力が適切なキャッシュ内にすでに存在している場合、何の作業も実行不要であることを企図すれば十分である。既存のキャッシュバッファによって要求を部分的に満たすことが可能である場合（これはたとえば、ユーザがイメージをパンしているか、またはウィンドウのサイズを変更している場合に、頻繁に発生する）、重複するピクセルがキャッシュから新しいイメージバッファにコピーされ、その後、残りのピクセルがレンダリングされて、新しいバッファの適切な部分にコピーされる。
【００３８】
エフェクトは、ＣＰＵを動作させる必須レンダリング方法（ソフトウェアレンダリング）と、ＧＰＵを動作させるオプションレンダリング方法（各エフェクトが、ハードウェア（ＧＰＵ）またはソフトウェア（ＣＰＵ）のどちらでレンダリングを試行するべきかを決定する、ハードウェアレンダリング）の、２つの異なる方法を使用してレンダリングすることができる。選択は、ユーザによって（各エフェクトに関連付けられた、ソフトウェアレンダリング専用の指定変更がある）、アプリケーションによって、および／または現在のコンテキストによって（このコンテキストでは、ソフトウェアレンダリング専用の指定変更によって、サブグラフのソフトウェアレンダリングを強制するために、クライアントまたは任意のエフェクトを、グラフ内でより高位にすることができる）、命じることができる。ソフトウェアの指定変更が命じられない場合、基本クラスは、ハードウェアにおけるエフェクトのレンダリングを試行し、可能であれば、要求された結果を含むイメージバッファが戻されることになる。ハードウェアにおいてエフェクトがレンダリングできない場合、ソフトウェアレンダリングが実施されることになる。
【００３９】
どちらのレンダリング方法を呼び出すかに影響を与える可能性のある、動的条件も存在することに留意されたい。たとえば、エフェクトは、ハードウェアレンダリングを呼び出すが、メモリ不足例外をキャッチした場合、ビデオカードの使用可能メモリを超える一時バッファを割り振るように試行する。エフェクトに対するデフォルト応答は、ソフトウェアレンダリング（ＣＰＵ）を呼び出して、必要な結果を取得することである。すなわち、モデルはＧＰＵメモリを使い果たした場合、ＣＰＵまで後退することができる。この場合、リソースの可用度に基づいて性能を最適化することができる。
【００４０】
イメージバッファは、システムメモリ（ＣＰＵメモリ）、ビデオメモリ（ＧＰＵメモリ）、またはその両方に格納されたイメージ（ピクセル）データを表し、１つのエフェクトから他のエフェクトへ、エフェクトグラフを介して渡される。ユーザは単に、処理したい場所に処理したいデータがあればよいため、一般にデータの実際の場所はユーザにとっては重要ではなく、イメージバッファは必要であれば自動的にデータをその場所にコピーすることになる。すなわち、イメージバッファはピクセルデータが格納されている場所の詳細を隠し、エフェクトにとって適切な場所で自動的に使用できるようにする。
【００４１】
イメージバッファとは、イメージデータの読み取りおよび書き込みを行うためにエフェクトが使用するメインクラスである。イメージバッファの最大サイズは、一般に、ユーザがレンダリングを希望する可能性のあるイメージのサイズに比べてかなり小さい。たとえば、一実施形態では、ハードウェア制限によって指示される最大幅または高さは、いずれも２Ｋピクセルを超えない可能性がある。特定のエフェクトグラフは、単一のパスで２Ｋピクセルさえもレンダリングできない可能性がある。最大サイズは、グラフに含まれる特定のエフェクトに依存する。たとえば、大型半径のぼかしエフェクトは、書き込むピクセルよりもかなり多くのピクセルを読み取らなければならないため、生成可能な最大バッファサイズは、その入力をオーバーサンプリングする量だけ少なくなる。
【００４２】
ユーザは、レンダリングを要求する場合、これらの制限を容易に予想することができない。したがってユーザは、それらが必要とするものを要求するだけである。しかしながら、戻されたバッファが要求されたサイズとは異なる可能性がある。
【００４３】
イメージバッファのインスタンスは、割り振られたメモリを保持し、再請求することはできない。イメージバッファは、エフェクトによってアクティブに読み取られているかまたは書き込まれているイメージデータを保持するのに有用である。
【００４４】
時に、エフェクトは、レンダリングパス間でイメージデータをキャッシュに入れようとする場合がある。しかしながら、このデータがイメージバッファに保持されている場合、再請求することはできない。残りのエフェクトグラフがレンダリングされる際にビデオメモリが少なくなった場合、十分なリソースを再請求できない限り、エンジンはソフトウェアレンダリングに戻らなければならない。
【００４５】
イメージキャッシュオブジェクトは、イメージデータをキャッシュに入れる代替方法である。イメージキャッシュオブジェクトは、エフェクトが、後続のレンダリング中に再使用する可能性のあるイメージデータへの参照を維持できるようにするが、再使用しなければならない場合は再生成することができる。イメージキャッシュオブジェクトを保持すること、およびイメージバッファオブジェクトを解放することによって、エフェクトは、ビデオメモリが一杯になった場合にメモリを再請求することができる。目標は、メモリが少なくなったシナリオで、ソフトウェア（ＣＰＵ）レンダリングに戻るのではなく、他のエフェクトがハードウェア（ＧＰＵ）加速を使用できるようにすることである。ユーザは、後で読みたくなる可能性のあるイメージキャッシュインスタンスを任意のイメージバッファから獲得する。その後、イメージキャッシュを引き続き保持しながら、イメージバッファを解放することができる。これにより、イメージデータへの参照は維持され、必要であればそのコンテンツを再請求することができる。
【００４６】
エフェクトをツリーではなくグラフに編成することで、レンダリング時に何らかの問題が提示される。たとえば、図４の概略図に示されたようなエフェクトグラフを企図してみる。例示されたエフェクトグラフ４００では、イメージデータが、下部のイメージエフェクトオブジェクト４１０から、上部の混合エフェクトオブジェクトである混合エフェクトＢ  ４１８の出力へと流れるための、４通りの方法がある。第１にイメージデータは、イメージエフェクトオブジェクト４１０から、混合エフェクトオブジェクトＡ  ４１４、混合エフェクトオブジェクトＢ  ４１８へと流れることができる。第２にイメージデータは、イメージエフェクトオブジェクト４１０から、レベルエフェクトオブジェクト４１２、混合エフェクトオブジェクトＡ  ４１４、混合エフェクトオブジェクトＢ  ４１８へと流れることができる。第３にイメージデータは、イメージエフェクトオブジェクト４１０から、レベルエフェクトオブジェクト４１２、混合エフェクトオブジェクトＡ  ４１４、ぼかしエフェクトオブジェクト４１６、混合エフェクトオブジェクトＢ  ４１８へと流れることができる。第４にイメージデータは、イメージエフェクトオブジェクト４１０から、混合エフェクトオブジェクトＡ  ４１４、ぼかしエフェクトオブジェクト４１６、混合エフェクトオブジェクトＢ  ４１８へと流れることができる。
【００４７】
エフェクトグラフを通る４つのパスは管理不可能とは思えないが、組み合わせの可能性は指数関数的である。追加の混合エフェクトに数個のエフェクトを結合すると、グラフを通る固有パスの数は何百倍または何千倍にも増加する。単純なレンダリングモデルは、グラフの下部近くのエフェクトを何回もレンダリングしなければならず、そのたびに同じ出力が生成される。この指数関数的な増加および同一エフェクトのレンダリングの反復により、デジタルイメージ処理は極度に効率が悪く、速度が遅くなる。
【００４８】
本発明の諸実施形態のモデルは、各エフェクトでの自動バッファキャッシュを含めることによって、この過度のレンダリングのすべてではなくとも一部を軽減する。たとえば、図４のエフェクトグラフにおいて、混合エフェクトオブジェクトＡ  ４１４がキャッシュを保持する場合、その入力をレンダリングするためにレベルエフェクト４１２およびイメージエフェクト４１０にさらに２回要求を出すのではなく、後でレンダリングを要求するごとにキャッシュを戻すだけでよい。この例では、イメージエフェクトオブジェクト４１０は、その出力を４回ではなく２回要求されるだけである。
【００４９】
とりわけ、エフェクトグラフを使用してローイメージから最終出力に到達するためには、パスに沿って各エフェクトにその出力について照会しなければならない。しかしながら、エフェクトは、その入力バッファがレンダリングされるまでその出力をレンダリングできない。したがって各エフェクトは、その出力が要求されるとその入力を照会する（すなわち、その入力エフェクトのイメージバッファで動作可能なように、そのイメージバッファについて照会する）。しかしながら、エフェクトの入力は、それらそれぞれの入力バッファがレンダリングされるまでそれらの出力をレンダリングすることができないため、その独自の入力を照会しなければならない。この照会プロセスは、エフェクトグラフの上部（最終出力がレンダリングされる場所）から、入力（たとえばローイメージ、ＪＰＥＧなど）がレンダリングされる下部まで、すべてにわたって継続される。さらにこのプロセスは、一度にエフェクトグラフを通る１つの潜在パスに従って行くことによって、照会ごとに完了しなければならない。たとえば、図４のエフェクトグラフを利用する前述の例では、混合エフェクトオブジェクトＢ  ４１８は２つの入力のみを有するが、それら入力のそれぞれが、その出力をレンダリングするために、２つの異なるパスに沿ってその入力を照会しなければならない。各エフェクトは、各潜在パスについてイメージバッファを生成し、最終エフェクト（この例では、混合エフェクトオブジェクトＢ  ４１８）に、最終出力を出力するために必要な入力のうちの１つを提供する。
【００５０】
しかしながら、エフェクトグラフ内の中間エフェクト（たとえば、レベルエフェクトオブジェクト４１２、混合エフェクトオブジェクトＡ  ４１４、およびぼかしエフェクトオブジェクト４１６）によってキャッシングが利用される場合、各中間エフェクトは、エフェクトグラフがレンダリングされる前の最も直近に計算された照会結果を、保持するかまたはキャッシュに入れることができる。このようにして、エフェクトグラフの上部で照会が開始された場合、調べられている２つのパス間で共通の中間エフェクトに達したときに、エフェクトグラフの下部まで戻って照会する必要がない。すなわち、照会は、調べられているパス間で共通の第１のエフェクトまで戻ればよい。エフェクトグラフの２つのパス間でこの共通のエフェクトを見つけること、および、その時点で情報をキャッシングまたは保持することによって、前述の潜在的な指数関数的計算が緩和される。
【００５１】
エフェクトグラフを最初に通過する間、どのエフェクトでキャッシュを保持するべきかを決定するため（および、それ以上照会されないエフェクトでの不必要なキャッシングを防ぐため）に、レンダリングが開始される前に、グラフの事前レンダリングパスが実行される。事前レンダリングパスは、いずれかの実際の計算がピクセル上で実行される前に、エフェクトグラフのどの領域が照会されようとしているかを識別し、レンダリング時に複数回要求されようとしているその領域の部分、ならびに、予測可能な照会インスタンスの数を識別する。その後、レンダリング時に、複数回の照会が必要であると識別されたエフェクトがあれば、それらは、最大回数要求されるまで、照会された情報を関連するイメージバッファ内にキャッシングすることができる。その時点で、含まれる情報が再度要求されることはないものとして、イメージバッファを解放することができる。
【００５２】
図４に示された例では、ぼかしエフェクトオブジェクト４１６が、書き込むよりも多くのピクセルを読み取る場合、混合エフェクトオブジェクト４１４は、２つの異なるサイズを有するイメージバッファについて照会される。この場合、第１に大きい方のイメージバッファが要求され、それ以上のレンダリングなしに第２の要求が満たされれば幸運である。しかしながら、大きい方のイメージバッファ要求が小さい方のイメージバッファ要求より後に来た場合、要求は容易に満たされるというわけには行かない。
【００５３】
レンダリングがサイズの昇順で要求される場合の不適切な実行を避けるために、本発明のモデルは、事前レンダリングパスの実行を提供する。事前レンダリングパスについては、同じ情報についての複数回の照会の対象となるエフェクトグラフの部分を識別することに関して、上記で論じた。事前レンダリングパスの間、各エフェクトは、同様のレンダリング要求を含む境界矩形も累積する。したがって、その後のレンダリングの間、エフェクトは、追加の費用なしでさらなる要求を満たすために、同じキャッシュを使用することを予想して、現在の要求に必要な出力バッファより大きい出力バッファを生成することができる。
【００５４】
これらのイメージキャッシュは１つの問題を回避するが、多くのビデオメモリがキャッシュバッファを保持するために予約開始され、そのうちの一部は今後決して使用されないであろうという点で、別の問題を発生させる。単純な解決策は、キャッシュバッファの割り振りが試みられ、メモリ不足例外が返された場合は必ず、最も直近に使用されたということに基づいてキャッシュバッファを再請求することである。しかしこれは、ビデオメモリがフル容量で頻繁に実行される（ビデオメモリの他のユーザにとって望ましくない）ことを意味し、ほぼすべての割り振りで例外処理のオーバヘッドを被る。
【００５５】
図５を参照すると、各エフェクトについてカウントが示されたエフェクトグラフの概略図が示されており、全体が参照番号５００として指定されている。各エフェクトは、いくつのコネクタがその出力に接続されるかをカウントする、その出力それぞれに関連付けられたカウンタを有する。エフェクトはその入力バッファのうちの１つの使用を完了するごとに、対応する入力エフェクトに出力バッファを解放するように要求し、その出力に関するカウンタが減分される。カウンタがゼロに達すると、エフェクトは、現在のレンダリングパス中には、その出力バッファに関する要求をそれ以上受け取らないものと想定するため、エフェクトはその出力キャッシュを解放する。ビデオカード（ＧＰＵ）メモリが制限されているため、必要以上の情報を保持することは望ましくないことから、イメージバッファは単一のレンダリングパス中のみ保持される。
【００５６】
たとえエフェクトがキャッシュを有する場合であっても、その入力エフェクトに、たとえレンダリングする必要がなくともそれらの出力バッファキャッシュを解放するように伝えなければならない。これは、エフェクトカウンタが適切に調整されること（したがって、キャッシュが適切に解放されること）を保証するために必要である。
【００５７】
レンダリングが完了した後、上部エフェクトはグラフ内に１つだけキャッシュを保持することになる。実際には、以下でより詳細に論じるように、対話型レンダリングを加速させるためにユーザが追加のキャッシュを保持しようとする理由は他にある。本明細書では、この例は、どのようにキャッシングを使用して指数関数的レンダリングを防ぐのかを示すためにのみ与えられる。
【００５８】
対話型レンダリングを加速させるために、１つのレンダリングパスから次のパスへと変更しなかったエフェクトグラフの部分について、キャッシュを維持することが有用である。通常、ユーザがプロジェクトを構築する方法は、１回につき１レイヤまたは１エフェクトである（レイヤについては、以下でより詳細に論じる）。たとえばユーザは、イメージの露光を調節するためにエフェクトを追加し、その後、イメージの温度を調節するために別のエフェクトを追加し、さらにその後、イメージを鮮明にするために第３のエフェクトを追加する。このように１つずつエフェクトを追加していくため、ユーザは一般に、１回について一番最近追加されたエフェクトのみを調節し、たとえばユーザは、すべての露光調節を完了した後に温度エフェクトを追加することになる。しかしながら、複数の露光調整が必要であり、それぞれの調節がレンダリングパスを必要とする可能性がある。
【００５９】
この典型的なプロジェクトシナリオに対処し、以前のレンダリングパス以降変更されていないエフェクトグラフの部分を不必要に再レンダリングすることを避けるために、エフェクト基本クラスは、最後のレンダリングパス以降エフェクトが変更された場合に設定される「ダーティフラグ」を含む。事前レンダリンググラフ走査（事前レンダリングパス）中に、ダーティさはエフェクトグラフを介して上方に伝搬され、ダーティエフェクトとグラフのルートとの間の任意のパス上にキャッシュを配置する。
【００６０】
ダーティさは、変更されないグラフの部分についてキャッシュを維持するために使用される。ダーティエフェクトは、次のレンダリングパスについても同様にダーティとなる可能性があることが想定される。これは、ユーザがパラメータ値を調整している場合、またはそれ以外の方法で１回に１つのエフェクトを修正している場合である。
【００６１】
たとえば、図６の概略図に示されたエフェクトグラフにおいて、ユーザがぼかしエフェクトに関連付けられたマスク上でペイントしていると想定する。事前レンダリングパス中に、上部の混合エフェクトである混合エフェクトＢ  ６１８は、ダーティでない２つの入力エフェクト（混合エフェクトＡ  ６１４およびぼかしエフェクト６１６）と、ダーティな第３の入力エフェクト（マスクエフェクト６２０）とを有することを検出する。エフェクトがその入力間でのこのダーティさの不一致を検出した場合は必ず、マスクエフェクト６２０が、次のレンダリングパスで修正されることになる唯一の入力であると想定され、非ダーティ入力エフェクトにそれらのキャッシュ上で保持するように指示する。例示されたシナリオでは、混合エフェクトＢ  ６１８は、ぼかしエフェクト６１６および混合エフェクトＡ  ６１４にそれらのキャッシュ上で保持するように指示し、マスクエフェクト６２０に、そのキャッシュを解放するように指示する。（イメージエフェクト６１０およびレベルエフェクト６１２は、混合エフェクトＡ  ６１４に入力を提供するため、次のレンダリングパスでは照会されないことに留意されたい。）この選択的キャッシングは「相互レンダリングキャッシング」と呼ばれる場合があり、混合エフェクトＢ  ６１８およびマスクエフェクト６２０のみが各レンダリングパスについて実際に作業を行う必要があるため、加速される対話型レンダリングに関する性能の向上が顕著である。
【００６２】
前述のように、ほとんどのユーザは自分のプロジェクトを１回につき１レイヤまたは１エフェクトで構築し、通常、ユーザは、通常はエフェクトグラフの上部にある自分が最後に追加したレイヤまたはエフェクトを調節すると想定すると、この相互レンダリングキャッシングの利点は、特に興味深い。本発明の諸実施形態の動的レンダリングモデルでは、ユーザは、いついかなるレイヤまたはエフェクトを変更することも自由である。相互レンダリングキャッシングを使用すると、エフェクトグラフの上部近くでの調節は、下部近くでの調節よりも高速になる。
【００６３】
相互レンダリングキャッシングを使用すると、キャッシュは、処理操作の指数関数的増加を避ける目的でのキャッシングに関する場合と同様に、単一のレンダリングパス中のみではなく、特定のデジタルイメージデータ（すなわち単一イメージ）に対するレンダリング操作にまたがって保持されることに留意されたい。
【００６４】
エフェクトグラフにおける「レイヤ」の概念には、これまで何回か触れてきた。本発明の諸実施形態のエフェクトグラフモデルでは、エフェクトは「アトミック」イメージ処理要素である。レイヤは、興味深いシナリオに対処する有用な方法で、エフェクトを結合する。レイヤはエフェクトグラフを構築するが、それらの処理またはレンダリングには直接関係しない。
【００６５】
なぜレイヤが有用であるかを理解するために、調節レイヤモデルについて考えてみる。様々なタイプの調節がサポートされているが、それらすべてがマスクおよび混合モードをサポートするものと企図する。これは、マスキングおよび混合機能を個々のエフェクトに分割し、その後、達成されることが望ましい複雑な結果を達成するために、いくつかの単純なエフェクトをまとめて連結することによって実施される。しかしながら、反復される編集単位が存在する場合、ユーザは、同じエフェクトを繰り返し連結しなければならず、グラフを最適化するためにローカライズされたインテリジェンスを開発することは困難である。たとえば、マスクが空の場合、マスクエフェクトを省略することが可能であり、混合モードおよびマスクが存在しない場合、混合エフェクトを省略することが可能である。
【００６６】
レイヤを、標準イメージ編集パイプラインの作成を単純化する、スマートマクロと考える人もあろう。実際、パイプラインの概念はレイヤによって導入される。レイヤは単一のイメージ入力を取り込み、単一の出力を生成する。もちろん、レイヤ内のエフェクトは、任意に複雑なサブグラフに編集することができる。
【００６７】
レイヤは任意のエフェクトを取り込み、オプションのマスクによって制御される任意の混合モードに対するサポートを追加する。一例では、これは図７に示される概略図のようになり、レイヤは全体が参照番号７００として指定される。各レイヤはそのエフェクトを所有し、エフェクトグラフのその一部を作成するためにそれらを動的に（すなわちランタイム時に）まとめて連結する。スマートな動的最適化をグラフに適用することができる。たとえば、レイヤはそのエフェクトが変更された場合にイベントを受け取るので、混合エフェクト７１０のミキシングパラメータがその最小値に変更されたことを通知する場合、混合エフェクトおよびマスクエフェクト７１２を、構築するエフェクトグラフから除外することができる。
【００６８】
図７のエフェクトグラフは、混合エフェクト７１０、マスクエフェクト７１２、およびメインエフェクト７１４を互いに連結することが可能な、最も一般的な方法を示す。しかしながら、レイヤは、これら３つのエフェクト間のより複雑な関係をサポートする。場合によっては、マスクエフェクトは、レイヤの入力イメージに基づいて自動的にマスクデータを生成している可能性がある。メインエフェクトは、入力イメージデータに依存する場合、または依存しない場合がある。場合によっては、メインエフェクトがマスクデータにアクセスする必要がある可能性がある。
【００６９】
完全に接続されたレイヤは、図８の概略図のようになる可能性がある。もちろんレイヤは、図８に示されたよりもさらに複雑になる可能性がある。レイヤは、図に示されたエフェクトのいずれかを、任意に連結された複数のエフェクトと置き換えることができる。
【００７０】
単一チャネルのイメージバッファを出力するエフェクトは、マスクエフェクトとして働くことができる。マスクは、一定ピクセルベースのマスク（すなわち単一チャネルのイメージエフェクト）、または一定ベクトルベースのマスク（すなわち、ベクトルベースのデータを単一チャネルの出力バッファにラスタライズする）とすることができる。加えて、状況によって、マスクは入力データから動的に生成される場合がある。一般にこれは、何らかの基準、たとえば特定の色範囲を満たすピクセルを、ユーザが動的に選択することによって実施されることになる。
【００７１】
たとえば、図８のマスクエフェクトを参照すると、ユーザが、パイプラインを上ってきた特定のイメージにおける陰影を明るくすることを希望すると想定する。したがって、ユーザは、露光レイヤをエフェクトグラフに追加し、そのレイヤ上にマスクを配置して、マスクがイメージの陰影付けされた領域内にのみ配置されるようにする。一般に、マスクは、ピクセル選択に基づいてペイントまたは貼り付けされるため、静的である。しかしながら、本発明の諸実施形態によれば、ピクセルデータおよびマスクは、たとえば暗くする空をユーザが選択することができるようにする命令を含めることによって、動的にすることができる。これは、空の特定の色範囲の基準を満たすピクセルをユーザが動的に選択することによって実施されることになる。その後、パイプラインが（たとえば回転レイヤの追加によって）変更されると必ず、マスクは、ユーザによって再ペイントしなければならないのではなく、自動的に再計算される。
【００７２】
動的マスキングなどの自動訂正がＧＰＵで実行可能な場合、マスクは入力イメージと同じ解像度で生成されることになるため、これは非常に説得力のあるシナリオである。一定マスクとは異なり、ベクトルのラスタライズまたはイメージサンプルの補間が不要である。
【００７３】
動的マスキングの主な利点の１つが、動的マスクによりユーザがパイプラインを変更できるようにすること、および、適切であればそれらの変更にマスクを適合させることである。一例が赤目であろう。赤目は、彩度低減エフェクトレイヤ上に瞳を位置づけるためにマスクを使用して瞳の領域の彩度を減じることによって、訂正することができる。マスクを静的に設定すること（赤いピクセルに関する選択をアルゴリズム的に使用するか、または手作業によって）は、基礎となるイメージが移動（たとえば変形、回転、または縮尺）した場合は失敗する。しかしながら、動的マスクは、イメージ内のどこに赤い瞳があったかを再検出し、マスクをリセットすることができる。
【００７４】
レイヤクラスは、混合エフェクトが３つの入力（混合する２つのイメージおよびマスク）を有するものと予期する。各混合アルゴリズムは、別々のエフェクトサブクラスによって表される。一般に、共通基本クラスを保証するだけの十分な共通コードが存在することになる。ユーザがレイヤの混合モードを変更する場合、以前の混合エフェクトは廃棄され、エフェクトグラフが再構築される際に新しい混合エフェクトに入れ替わる。
【００７５】
混合エフェクトに接続されるマスクエフェクトがない場合、混合エフェクトは不要であり（レイヤの出力は単にメインエフェクトの出力である）、完全に不透明なマスクが想定される。
【００７６】
「単一入力、単一出力」レイヤモデルは、エフェクトグラフの構築プロセスを大幅に簡略化する。ユーザが、作成したパイプラインの構成を保存したい場合、レイヤの追加の利点が明らかとなる。エフェクトグラフを使用する場合、保存は実際には実施がむしろ困難なタスクである。各エフェクトは、それ自体をシリアル化するように（すなわちその設定などを保存するように）要求されなければならず、エフェクトグラフはその情報を使用して、たとえばＸＭＬで記述されなければならない。レンダリングエンジン自体が、グラフがいくつかのレイヤを含むことに気づいており、それらをそれぞれ記述することができるため、レイヤモデルはこれをより単純にする。その後レイヤは、それら自体を記述するように要求される。各レイヤがそのそれぞれのグラフを内部に構築した場合、その情報を格納する必要はない。
【００７７】
エフェクトのシリアル化に優るレイヤのシリアル化の追加利点は、レイヤがツリー内にあり、エフェクトが（一般には）ＤＡＧとすることが可能なグラフ内にあることである。ツリーの欲張りな深さ優先再帰的シリアル化を実行することができる（たとえば各ノードで、エフェクトはその子等に照会してそれら自体を記述し、その後自らを記述することができる）。ＤＡＧでは、これは、エフェクトＤＡＧでレンダリングが指数関数的になるのを防ぐために、キャッシングに関して上記で論じた理由とすべて同じ理由で、指数関数的に実行される。したがって、この問題をレイヤレベルで対処することは、エフェクトレベルで対処するよりもかなり障害が少ない。
【００７８】
本発明の諸実施形態に従った動的なデジタル処理イメージモデルでは、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。品質の問題を理解するために、ユーザが従来のイメージ処理モデルを使用してイメージを回転しようとしていると想定する。イメージが所望の方向を向いているものと決定されると、レンダリングエンジンは、新しい回転値でイメージを再サンプリングし、そのデータから新しいピクセルセットを生成しなければならない。その後ユーザがイメージを再度回転させる場合、従来のレンダリングエンジンは、以前の回転の前にイメージが開始された場所を記憶していない。したがって、単にイメージを再度回転させ（以前に回転したことには気づかず）、完了すると、イメージを再サンプリングして、新しいイメージを再度生成する。このプロセスは、追加の回転訂正が実行されるにつれて延々と続けられ、その都度データが再サンプリングされ、新しいイメージが作成される。この手法の問題点は、データが再サンプリングされるたびに劣化することである。
【００７９】
しかしながら、本発明の諸実施形態に従った動的デジタル処理イメージモデルでは、すべての調節が動的である。したがって、ユーザがイメージを回転させた場合、レンダリングエンジンは回転された累積量を記憶している。すなわち、回転修正を行うように要求されるごとに、オリジナルのデータに戻って回転を適用する。したがって、回転修正に続いてイメージが再生成される場合、オリジナルのイメージデータから１回だけ再サンプリングされる。これにより、イメージが耐えなければならない劣化の量が大幅に低減される。
【００８０】
さらに、毎回何らかの回転が追加される、プロジェクトの異なるレベルでの異なる変形が存在する場合であっても、この挙動は保存可能である。エフェクトグラフ全体を通じたすべての変形の累積結果が合計され、１回だけ適用される。すべての変形を累積し、それらが適用される前にそれらをさらにパイプラインの下方へできる限り押し下げるメカニズムが、レンダリングエンジン内に存在するため、この適用は、通常、パイプラインの下部レイヤ付近で実行される。このようにして、変形は、正確なレンダリングを生成するために必要な最小数のピクセルに対してであり、必要以上に頻繁には実行されない。
【００８１】
変形がエフェクトグラフを通過するのを２つのことによって止められることに留意されたい。たとえば、変形されたピクセル上でどのように動作するかを理解していないエフェクトに遭遇する可能性があり、その特定のエフェクトは未変形イメージ上で動作しなければならず、変形はエフェクトが適用された後にだけ適用される。
【００８２】
こうした状況に対処するために、以下でより詳細に説明するように、各エフェクトは事前レンダリングパス中に、どの種類の変形を処理できるか、およびどの種類の変形を処理できないかをエンジンに通知する。
【００８３】
前述のように、いつ変形が実施されるかに性能の観点からも、重要である。エフェクトグラフパイプラインでは、処理するデータをできる限り少なくすることが最も効率的である。ユーザが非常に大型（たとえば１０億ピクセル）のイメージをロードし、そのイメージの編集を開始したいものと想定する。そのイメージの解像度で操作する代わりに（たとえば、１０億ピクセルで操作する代わりに）、本発明の諸実施形態の動的レンダリングモデルは、たとえば２００万ピクセルなどのユーザが実際に見ている解像度、または使用されているディスプレイデバイスがイメージを出力する解像度で、操作する。イメージを扱っているあらゆるエフェクトが、その後、かなり低い解像度でデータを扱うように、イメージの解像度は、パイプライン内で可能な最も早い時点で下げることが望ましい。したがってエフェクトは、イメージをかなり高速に操作し、大幅に少ないＧＰＵまたはＣＰＵイメージメモリを使用することが可能である。この結果を可能にするための倍率がデータに適用されていることに留意されたい。しかしながら、品質に関して上記で述べたように、スケーリングを処理できないエフェクト、すなわちスケーリングされたデータを扱う方法を知らないエフェクトが存在する。したがって、事前レンダリングパス中で、各エフェクトはこの種の変形を処理できないかどうかをエンジンに通知し、そのエフェクトがスケーリングされていないデータを処理してしまうまで、スケーリングは実施されないことになる。
【００８４】
さらに、レンダリングエンジンが、実際にはエフェクトグラフ内のさらに下方の別の変形場所で適用可能であると決定した場合、可能な限りパイプラインのさらに下方へ変形を押し下げる効果により、結果として、ユーザが指定した場所では特定の変形が実行されないことになることに留意されたい。
【００８５】
単なる例として挙げると、ユーザが、ぼかしエフェクト（ピクセル半径５のぼかし）、およびその後のダウンサンプリングまたはスケーリングエフェクト（１０倍）を備える、エフェクトグラフを生成したと考えてみる。ユーザは、ぼかし半径を適用した後、イメージがスケーリングされると予測する。しかしながら実際には、ダウンサンプリングエフェクトは変形であるため、グラフの下方に押し下げることができた場合、最初にサンプルに適用され、その後、下方解像度イメージにぼかしが適用されることになる。ぼかしエフェクトは、このインスタンスで、ユーザの（表示）観点からすれば同じになるように、たとえばエフェクト全体について１／２ピクセルぼかしまで修正されなければならないことに留意されたい。ぼかしエフェクトが、スケーリングされたイメージのぼかしを処理できないことをレンダリングエンジンに宣言した場合、スケーリングエフェクトはパイプライン内のその下まで押し下げられないことになる。
【００８６】
次に図９を見ると、本発明の実施形態に従って、エフェクトグラフを利用してデジタルイメージデータを処理するための方法９００を示す流れ図が示される。最初に、ブロック９１０で示されるように、複数のエフェクトオブジェクトが受け取られる。エフェクトオブジェクトについては、上記で広範囲にわたって論じてきており、単なる例として挙げると、混合エフェクトオブジェクト、マスクエフェクトオブジェクト、ぼかしエフェクトオブジェクトなどを含むことができる。複数のエフェクトオブジェクトが受け取られると、ブロック９１２に示されるように、エフェクトグラフが複数のエフェクトオブジェクトの少なくとも一部を利用してエフェクトグラフに連結される。エフェクトグラフは、必要に応じて、および／または所望であれば、ＣＰＵメモリ、ＧＰＵメモリ、ならびに、ＣＰＵメモリとＧＰＵメモリの組み合わせのうちのいずれかを使用して、レンダリングすることができる。
【００８７】
その後、ブロック９１４に示されるように、処理されることになるデジタルイメージデータが受け取られる。デジタルイメージデータは、その後、ブロック９１６に示されるように、エフェクトグラフを利用して処理される。一実施形態では、デジタルイメージデータの処理は、受け取ったデジタルイメージデータの少なくとも一部を非破壊的に処理することを含むことができる。次に、処理されたデジタルイメージデータを、少なくとも１つのイメージバッファに関連して、ＣＰＵメモリおよびＧＰＵメモリのうちの少なくとも１つに格納することができる。これはブロック９１８に示される。
【００８８】
本発明の諸実施形態に従ったイメージバッファは、ＧＰＵとＣＰＵの間で、自動的かつユーザの介入なしに、渡されることが可能であることに留意されたい。加えて、本発明の諸実施形態に従ったイメージバッファは、第１のピクセルデータフォーマットと第２のピクセルデータフォーマットとの間で、自動的かつユーザの介入なしに変換されることが可能である。
【００８９】
図１０を参照すると、本発明の実施形態に従い、デジタルイメージデータがエフェクトグラフの下部からエフェクトグラフの上部へと処理される、垂直に配向されたエフェクトグラフを利用して、デジタルイメージデータを処理するための方法１０００を示す流れ図が示される。最初に、ブロック１０１０に示されるように、２つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを有する、垂直に配向されたエフェクトグラフが受け取られる。その後、または同時に、ブロック１０１２に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、ブロック１０１４に示されるように、２つの分岐パスのうちの第１に沿って、エフェクトグラフの第１の処理パスが下から上へと実行される。
【００９０】
処理中に、デジタルイメージデータの少なくとも一部が、エフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングされる。これがブロック１０１６に示される。その後、ブロック１０１８に示されるように、エフェクトグラフの第２の処理パスが実行され、この第２のパスはエフェクトオブジェクトに関連付けられたイメージバッファから延在する。
【００９１】
図１１を参照すると、本発明の実施形態に従い、デジタルイメージデータがエフェクトグラフの下部からエフェクトグラフの上部へと処理される、垂直に配向されたエフェクトグラフを利用して、デジタルイメージデータを処理するための方法１１００を示す流れ図が示される。最初に、ブロック１１１０に示されるように、垂直に配向されたエフェクトグラフが受け取られる。エフェクトグラフは第１および第２のエフェクトオブジェクトを含む。その後、または同時に、ブロック１１１２に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージが受け取られる。続いて、ブロック１１１４に示されるように、第１および第２のエフェクトオブジェクトを含むエフェクトグラフの少なくとも一部のうちの第１の処理パスが実行される。次に、ブロック１１１６に示されるように、デジタルイメージデータの少なくとも一部が、第１のエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングされる。
【００９２】
その後、ブロック１１１８に示されるように、第２のエフェクトオブジェクトに関連付けられた１つまたは複数のユーザ修正が検出される。次に、ブロック１１２０に示されるように、エフェクトグラフの第２の処理パスが実行され、この第２の処理パスは、エフェクトオブジェクトの出力に関連付けられたイメージバッファから延在する。
【００９３】
次に図１２を見ると、本発明の実施形態に従い、エフェクトグラフを利用してデジタルイメージデータを処理するための方法１２００を示す流れ図が示される。最初に、ブロック１２１０に示されるように、エフェクトグラフが受け取られる。エフェクトグラフは、それぞれが、デジタルイメージデータを格納するための、関連付けられたイメージバッファを有する、複数のエフェクトオブジェクトを含む。その後、または同時に、ブロック１２１２に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、ブロック１２１４に示されるように、エフェクトグラフの事前レンダリングパスが実行される。その後、ブロック１２１６に示されるように、エフェクトグラフを利用してデジタルイメージデータが処理される。
【００９４】
図１３を参照すると、本発明の実施形態に従い、エフェクトグラフを利用してデジタルイメージデータを処理するための方法１３００を示す流れ図が示される。最初に、ブロック１３１０に示されるように、エフェクトグラフが受け取られる。エフェクトグラフは、それぞれが、デジタルイメージデータを格納するための、関連付けられたイメージバッファを有する、複数のエフェクトオブジェクトを含む。その後、または同時に、ブロック１３１２に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、デジタルイメージデータを処理するために、エフェクトグラフに関連付けられたＧＰＵ内で十分なメモリが使用可能であるかどうかが判別される。これはブロック１３１４に示される。デジタルイメージデータを処理するために、エフェクトグラフに関連付けられたＧＰＵ内で十分なメモリが使用可能である場合、ブロック１３１６に示されるように、デジタルイメージデータはＧＰＵを利用して処理される。しかしながら、デジタルイメージデータを処理するために、ＧＰＵ内で十分なメモリが使用可能でないと判別された場合、デジタルイメージデータは、少なくとも一部が、エフェクトグラフに関連付けられたＣＰＵを利用して処理される。これはブロック１３１８に示される。
【００９５】
次に図１４を見ると、本発明の実施形態に従い、デジタルイメージデータを処理するためにエフェクトグラフを作成するための方法１４００を示す流れ図が示される。最初に、ブロック１４１０に示されるように、１つまたは複数のエフェクトレイヤが提供され、各エフェクトレイヤは、複数の論理エフェクトを含む、それに関連付けられた論理エフェクトサブグラフを有する。その後、ブロック１４１２に示されるように、デジタルイメージデータの処理に関する入力が受け取られる。こうした入力は、単なる例として挙げると、レイヤに含まれるメインエフェクトのタイプ、レイヤインターフェースに適用される設定（たとえば１００％に等しい不透明性）、ならびに、他の設定および特性を含むことができる。その後、ブロック１４１４に示されるように、受け取った入力が、デジタルイメージデータの処理時に、それぞれの論理エフェクトに対して有することになる影響が決定される。次に、ブロック１４１６に示されるように、決定された影響に従って、物理エフェクトサブグラフが作成される。その後、ブロック１４１８に示されるように、物理エフェクトサブグラフを利用してイメージをレンダリングすることができる。
【００９６】
図１５を参照すると、本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図が示される。最初に、ブロック１５１０に示されるように、少なくとも１つのマスクエフェクトオブジェクトを有するエフェクトグラフが受け取られ、マスクエフェクトオブジェクトはエフェクトレイヤに関連付けられている。その後、または同時に、ブロック１５１２に示されるように、デジタルイメージデータが受け取られる。次に、ブロック１５１４に示されるように、基準を満たす受け取ったデジタルイメージデータの少なくとも一部の選択に関する入力が受け取られる。その後、ブロック１５１６に示されるように、少なくとも１つのマスクエフェクトオブジェクトが、受け取ったデジタルイメージデータに適用される。
【００９７】
一実施形態では、請求項１５の方法が、図１６に示されるような処理ステップをさらに含むことができる。最初に、ブロック１６１０に示されるように、デジタルイメージデータの修正に関する入力が受け取られる。その後、ブロック１６１２に示されるように、修正されたデジタルイメージデータを作成するために、受け取った入力に従ってデジタルイメージデータが修正される。次に、ブロック１６１４に示されるように、少なくとも１つのマスクエフェクトオブジェクトが、修正されたデジタルイメージデータに適用され、少なくとも１つのマスクエフェクトオブジェクトが基準を満たすように自動的に修正される。
【００９８】
図１７を参照すると、本発明の実施形態に従って、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法１７００を示す流れ図が示され、このデジタルイメージデータは、エフェクトグラフの下からその上へと処理される。最初に、ブロック１７１０に示されるように、垂直に配向されたエフェクトグラフが受け取られ、このエフェクトグラフは、その中の第１の垂直位置に配置された第１の変形エフェクトオブジェクトを有する。その後、ブロック１７１２に示されるように、第１の変形エフェクトオブジェクトが、第１の垂直位置よりもエフェクトグラフの下部に近い第２の垂直位置で、デジタルイメージデータに適用できるかどうかが判別される。第１の変形エフェクトオブジェクトが、第２の垂直位置でデジタルイメージデータに適用できないと判別された場合、ブロック１７１４に示されるように、第１の変形エフェクトオブジェクトは第１の垂直位置で適用される。
【００９９】
しかしながら、第１の変形エフェクトオブジェクトが第２の垂直位置でデジタルイメージデータに適用できると判別された場合、次に、第２の垂直位置に配置された変形エフェクトオブジェクトがあるかどうかが判別される。これがブロック１７１６に示される。第２の垂直位置に配置された変形エフェクトオブジェクトがない場合、ブロック１７１８に示されるように、第１の変形エフェクトオブジェクトが、第１の垂直位置ではなく第２の垂直位置で適用される。しかしながら、第２の垂直位置に配置された変形エフェクトオブジェクトがあると判別された場合、ブロック１７２０に示されるように、第１および第２の変形エフェクトオブジェクトが第２の垂直位置で累積的に適用される。
【０１００】
次に図１８を見ると、本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法１８００を示す流れ図が示される。最初に、ブロック１８１０に示されるように、初期変形値を有するデジタルイメージデータが受け取られる。その後、または同時に、ブロック１８１２に示されるように、少なくとも１つの変形エフェクトオブジェクトを有するエフェクトグラフが受け取られる。次に、ブロック１８１４に示されるように、受け取ったデジタルイメージデータが、変形エフェクトオブジェクトで、初期変形値から第１の変形済み変形値へと変形される。その後、ブロック１８１６に示されるように、デジタルイメージデータは、変形エフェクトオブジェクトで初期変形値から第２の変形済み変形値へと変形される。
【０１０１】
上記に鑑み、本発明の実施形態は、デジタルイメージデータを編集するためのシステムを対象とする。このシステムは、それに関連付けられたＧＰＵメモリを有するグラフィックス処理ユニット（ＧＰＵ）と、ＧＰＵメモリを利用してデジタルイメージデータの少なくとも一部を非破壊的に編集するための編集構成要素とを含む。一実施形態では、編集構成要素は、ＧＰＵメモリ、ならびにＧＰＵメモリおよびＣＰＵメモリの組み合わせのうちの１つを利用して、受け取ったデジタルイメージデータの少なくとも一部を非破壊的に編集することができる。
【０１０２】
さらにこのシステムは、エフェクトグラフを形成するためにまとめて連結された複数のエフェクトオブジェクトを受け取るためのエフェクトグラフ受け取り構成要素を含むことが可能であり、エフェクトグラフは、デジタルイメージデータを編集するために使用することができる。加えて、さらにシステムは、編集されることになるデジタルイメージデータを受け取るためのデータ受け取り構成要素を備えることができる。
【０１０３】
他の実施形態では、本発明は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を対象とする。この方法は、複数のエフェクトオブジェクトを受け取るステップと、複数のエフェクトオブジェクトの少なくとも一部をまとめてエフェクトグラフ内に連結するステップとを含み、エフェクトグラフは、ＣＰＵメモリおよびＧＰＵメモリのうちの少なくとも１つを利用して連結することができる。一実施形態では、受け取ったデジタルイメージデータを処理するステップは、デジタルイメージデータの少なくとも一部を非破壊的に処理するステップを含むことができる。さらにこの方法は、所望であれば、処理されることになるデジタルイメージデータを受け取るステップ、および／またはエフェクトグラフを利用して受け取ったデジタルイメージデータを処理するステップを含むことができる。さらにこの方法は、イメージバッファと関連して、デジタルイメージデータをＣＰＵメモリおよびＧＰＵメモリのうちの少なくとも１つに格納するステップを含むことができる。
【０１０４】
追加の実施形態では、本発明はデジタルイメージデータを処理するためのシステムを対象とする。このシステムは、処理されることになるデジタルイメージデータを受け取るためのデータ受け取り構成要素と、受け取ったデジタルイメージデータの処理に利用されることになる、複数のエフェクトオブジェクトを含むエフェクトグラフを取得するための、エフェクトグラフ取得構成要素と、エフェクトグラフならびにＣＰＵメモリおよびＧＰＵメモリのうちの少なくとも１つを利用してデジタルイメージデータを処理するための処理構成要素と、を含む。一実施形態では、エフェクトグラフ取得構成要素は、エフェクトグラフを作成するために、複数のエフェクトオブジェクトの少なくとも一部をまとめて連結することができる。他の実施形態では、処理構成要素は、エフェクトグラフと、ＧＰＵメモリならびにＧＰＵメモリおよびＣＰＵメモリの組み合わせのうちの少なくとも１つを利用して、デジタルイメージデータの少なくとも一部を非破壊的に処理することができる。所望であれば、システムは、ＣＰＵメモリおよびＧＰＵメモリのうちの少なくとも１つにデジタルイメージデータを格納するためのストレージ構成要素を、さらに含むことができる。
【０１０５】
追加の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関し、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは２つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、エフェクトグラフの第１の処理パスを２つの分岐パスのうちの第１のパスに沿ってその下部から上部へと実行するステップと、デジタルイメージデータの少なくとも一部を処理中にエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングするステップと、を含む。
【０１０６】
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を対象とし、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは、少なくとも第１のエフェクトオブジェクトおよび第２のエフェクトオブジェクトを含み、第２のエフェクトオブジェクトは第１のエフェクトオブジェクトよりもエフェクトグラフの上部に近い、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、第１および第２のエフェクトオブジェクトを含むエフェクトグラフの少なくとも一部の第１の処理パスを実行するステップと、デジタルイメージデータの少なくとも一部を第１のエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングするステップと、を含む。この方法は、第２のエフェクトオブジェクトに関連付けられたユーザ修正を検出するステップをさらに含むことができる。
【０１０７】
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムを対象とし、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。このシステムは、垂直に配向されたエフェクトグラフを受け取るための第１の受け取り構成要素を含み、エフェクトグラフは２つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを含む。このシステムは、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るための第２の受け取り構成要素と、エフェクトグラフの処理パスをその下部から上部へと実行するための第１の処理構成要素と、処理中にエフェクトオブジェクトの出力に関連付けられたバッファ内にデジタルイメージデータの少なくとも一部をキャッシングするためのキャッシング構成要素と、２つの分岐パスのうちの１つに関連付けられたエフェクトグラフの第２の処理パスを実行するための第２の処理構成要素とをさらに含み、第２の処理パスは、エフェクトオブジェクトの出力に関連付けられたイメージバッファから延在する。
【０１０８】
他の実施形態では、本発明はエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータの処理に先立ち、エフェクトグラフの事前レンダリングパスを実行するステップとを含む。
【０１０９】
さらに他の実施形態では、本発明はエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、受け取ったエフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータを処理するためにエフェクトグラフに関連付けられたグラフィックス処理ユニット（ＧＰＵ）内で十分なメモリが使用可能であるかどうかを判別するステップと、を含む。
【０１１０】
さらに、本発明の実施形態は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータの処理中に、複数のエフェクトオブジェクトに関連付けられたイメージバッファのうちの１つまたは複数がキャッシュに入れられるかどうかを判別するステップと、を含む。
【０１１１】
他の実施形態では、本発明は、デジタルイメージデータを処理するためのエフェクトグラフを作成するための方法に関する。この方法は、１つまたは複数のエフェクトレイヤを提供するステップであって、各エフェクトレイヤは複数の論理エフェクトを含むそれに関連付けられた論理エフェクトサブグラフを有する、提供するステップと、デジタルイメージデータの処理に関する入力を受け取るステップと、受け取った入力が、デジタルイメージデータの処理時に、それぞれの論理エフェクトに対して有することになる影響を決定するステップと、決定された影響に従って物理エフェクトサブグラフを作成するステップと、を含む。
【０１１２】
他の実施形態では、本発明は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフはエフェクトレイヤに関連付けられた少なくとも１つのマスクエフェクトオブジェクトを有する、受け取るステップと、デジタルイメージデータを受け取るステップと、基準を満たすデジタルイメージデータの少なくとも一部の選択に関する入力を受け取るステップと、少なくとも１つのマスクエフェクトオブジェクトを受け取ったデジタルイメージデータに適用するステップと、を含む。
【０１１３】
他の実施形態では、本発明はデジタルイメージデータを処理するためのシステムに関する。このシステムは、１つまたは複数のエフェクトレイヤを提供するための提供構成要素であって、各エフェクトレイヤは３つまたはそれ以上の論理エフェクトを含むそれに関連付けられた論理エフェクトサブグラフを有する、提供構成要素と、デジタルイメージデータの処理時に、それぞれの論理エフェクトが有することになる影響に従って論理エフェクトサブグラフを物理エフェクトサブグラフに変形するための変形構成要素と、物理エフェクトサブグラフを利用してイメージをレンダリングするためのレンダリング構成要素と、を含む。システムは、所望であれば、抽出されたデジタルイメージデータを分析結果に変換するための変換構成要素、および／または分析結果をメインエフェクトに転送するための転送構成要素と、をさらに含む。
【０１１４】
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関し、デジタルイメージデータはエフェクトグラフの下部からその上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは第１の垂直位置に配置された第１の変形エフェクトオブジェクトを有する、受け取るステップと、第１の変形エフェクトオブジェクトが第２の垂直位置でデジタルイメージデータに適用可能であるかどうかを判別するステップであって、第２の垂直位置は第１の垂直位置よりもエフェクトグラフの下部に近い、判別するステップと、を含む。第１の変形エフェクトオブジェクトが第２の垂直位置でデジタルイメージデータに適用可能であると判別された場合、さらにこの方法は、第１の垂直位置ではなく第２の垂直位置で、第１の変形オブジェクトを適用するステップをさらに含むことができる。しかしながら、第１の変形エフェクトオブジェクトが第２の垂直位置でデジタルイメージデータに適用可能でないと判別された場合、この方法は、第１の垂直位置で第１の変形エフェクトオブジェクトを適用するステップをさらに含むことができる。
【０１１５】
追加の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムに関する。このシステムは、垂直に配向されたエフェクトグラフを受け取るための受け取り構成要素であって、エフェクトグラフは第１の垂直位置に配置された第１の変形エフェクトオブジェクトを有する、受け取り構成要素と、第１の変形エフェクトオブジェクトが第２の垂直位置でデジタルイメージデータに適用可能であるかどうかを判別するための判別構成要素であって、第２の垂直位置は第１の垂直位置よりもエフェクトグラフの下部に近い、判別構成要素と、第１の変形エフェクトオブジェクトが第２の垂直位置で適用可能であると判別された場合、第１の垂直位置ではなく第２の垂直位置で、第１の変形エフェクトオブジェクトを適用するための適用構成要素と、を含む。
【０１１６】
さらなる実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、初期変形値を有するデジタルイメージデータを受け取るステップと、エフェクトグラフを受け取るステップであって、エフェクトグラフは少なくとも１つの変形エフェクトオブジェクトを有する、受け取るステップと、少なくとも１つの変形エフェクトオブジェクトで受け取ったデジタルイメージデータを初期変形値から第１の変形済み変形値へ変形するステップと、少なくとも１つの変形エフェクトオブジェクトで受け取ったデジタルイメージデータを初期変形値から第２の変形済み変形値へ変形するステップと、を含む。
【０１１７】
さらに本発明の諸実施形態は、本明細書に記載された方法を実行するためのコンピュータ実行可能命令を有する１つまたは複数のコンピュータ読み取り可能媒体、ならびにこの方法を実行するようにプログラミングされたコンピュータに関する。
【０１１８】
以上、本発明について、すべての点で限定的ではなく例示的であることが意図される、特定の諸実施形態に関して説明してきた。当業者であれば、本発明の範囲を逸脱することなく本発明に関する代替の諸実施形態が明らかとなろう。
【０１１９】
前述の内容から、システムおよび方法にとって明らかであり固有の他の利点と共に、本発明が前述のすべての目標および目的を達成するように首尾よく適合されたものであることがわかるであろう。ある種の特徴および副結合が有用であり、他の特徴および副結合を参照することなく採用可能であることを理解されよう。これは、特許請求の範囲によって企図され、その範囲内にある。
【図面の簡単な説明】
【０１２０】
【図１】本発明の実施で使用するのに好適な例示的コンピューティング環境を示すブロック図である。
【図２】本発明の実施形態に従った、３つの入力および２つの出力を有する例示的混合エフェクトを示す概略図である。
【図３】本発明の実施形態に従った、入力イメージの領域をマスクによって指示されたとおりに選択的にぼかす、例示的エフェクトグラフを示す概略図である。
【図４】本発明の実施形態に従った、例示的エフェクトグラフを示す概略図である。
【図５】本発明の実施形態に従った、各エフェクトについてカウントが示された例示的エフェクトグラフを示す概略図である。
【図６】本発明の実施形態に従った、ぼかしエフェクトに関連付けられたマスクを示す例示的エフェクトグラフを示す概略図である。
【図７】本発明の実施形態に従った、エフェクトグラフで使用するための例示的レイヤを示す概略図である。
【図８】本発明の実施形態に従った、エフェクトグラフの例示的な完全に接続されたレイヤを示す概略図である。
【図９】本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１０】本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１１】本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１２】本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１３】本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１４】本発明の実施形態に従った、デジタルイメージデータを処理するためのエフェクトグラフを作成するための方法を示す流れ図である。
【図１５】本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１６】本発明の実施形態に従った、図１５の方法の後に実行可能な追加の処理ステップを表す、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１７】本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１８】本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。
【図１】
2008544402.tif 000003
【図２】
2008544402.tif 000004
【図３】
2008544402.tif 000005
【図４】
2008544402.tif 000006
【図５】
2008544402.tif 000007
【図６】
2008544402.tif 000008
【図７】
2008544402.tif 000009
【図８】
2008544402.tif 000010
【図９】
2008544402.tif 000011
【図１０】
2008544402.tif 000012
【図１１】
2008544402.tif 000013
【図１２】
2008544402.tif 000014
【図１３】
2008544402.tif 000015
【図１４】
2008544402.tif 000016
【図１５】
2008544402.tif 000017
【図１６】
2008544402.tif 000018
【図１７】
2008544402.tif 000019
【図１８】
2008544402.tif 000020
【国際調査報告】
2008544402.tif 000021