JP2008544402A - デジタルイメージ処理におけるエフェクトグラフを介した変形の累積 - Google Patents

デジタルイメージ処理におけるエフェクトグラフを介した変形の累積 Download PDF

Info

Publication number
JP2008544402A
JP2008544402A JP2008518197A JP2008518197A JP2008544402A JP 2008544402 A JP2008544402 A JP 2008544402A JP 2008518197 A JP2008518197 A JP 2008518197A JP 2008518197 A JP2008518197 A JP 2008518197A JP 2008544402 A JP2008544402 A JP 2008544402A
Authority
JP
Japan
Prior art keywords
effect
image data
digital image
graph
vertical position
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.)
Granted
Application number
JP2008518197A
Other languages
English (en)
Other versions
JP2008544402A5 (ja
JP5254788B2 (ja
Inventor
ホワイト,スティーブン・ジェームズ
マーシュ,ドナルド・エム
デマンドルクス,デニス
リカード,ダグラス・エイ
シュー,ジンヤン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008544402A publication Critical patent/JP2008544402A/ja
Publication of JP2008544402A5 publication Critical patent/JP2008544402A5/ja
Application granted granted Critical
Publication of JP5254788B2 publication Critical patent/JP5254788B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators

Abstract

垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するため、たとえば非破壊的に処理するための、方法およびシステムが提供される。非破壊的処理では、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。垂直に配向されたエフェクトグラフの下に行くほど、実行される変形が良好になる。したがって、可能な限りエフェクトグラフの最下地点まで変形を押し下げ、以前に配置されていた可能性のある場所ではなくその地点でそれらを適用するための方法が提供される。本明細書に開示された方法を実施するためのシステムも提供される。

Description

ビデオカードまたはグラフィックス処理ユニット(GPU)は、超高速メモリを使用し、これをピクセルデータ上で単純な計算を非常に効率的に処理することが可能な専用プロセッサと結合するという点で、中央処理ユニット(CPU)とは異なる。ビデオカードは汎用プロセッサではない。しかしながら、それらはたとえば、どの面をユーザに見えるようにするべきであるか、およびどの面を隠すべきであるか、ならびに、どのテクスチャをそれらの面にマッピングして3次元(3D)シーンでリアルに見えるようにするべきであるかを、CPUが同じタスクを実施できるよりもさらに迅速に、計算することができる。これは、ビデオカードがかなり特殊化されたハードウェアを利用して一度に1つの機能のみを実行するのに対して、CPUは様々な一般タスクを適切に実行することができるが、任意の特定操作に対しては最適化されない、という事実によるところが大きい。
ビデオカード(GPU)は、これまで、2つの主な目的に使用されてきた。第1に、GPUは、ユーザのスクリーン上で単純なグラフィックス操作を加速させるために利用されてきた。たとえば、ユーザがディスプレイデバイス(たとえば、従来のコンピュータモニタ)上に表示された文書をスクロールする場合、多数のピクセルが移動される。こうしたアクションが課す計算要求により、従来のCPUは、このタスクを実施する場合にそれほど高速または効率的ではない。したがってGPUは、高速かつ効率的なスクローリングを達成するために、CPUと共に使用することができる。
第2に、GPUは、単純なプリミティブをレンダリングするため(たとえば、ある領域に色を塗る、線を引く、などのため)に使用されてきた。単純なグラフィックス操作を加速させることにより、GPUは、こうした単純なプリミティブを従来のCPUよりも高速かつ効率的にレンダリングすることができる。
さらに最近では、ゲームにおけるリアリズムおよび速度を上げるための要求を増加させるビデオゲームが、より一般的になり始めてきた。したがってビデオゲーム製造会社は、たとえば3次元シーンを描画しながら、シーンをできる限りリアルに見せるために、陰影付け、反射、テクスチャマッピングなどを提供する一方で、依然としてユーザ入力に迅速に応答する、ビデオレンダリングの複雑な問題に取り組み始めた。
前述の特定の領域以外では、ビデオカードはCPU機能を加速させるために使用されていない。
最近では、ビデオゲーム製造会社の領域外でのデジタルイメージの使用も増加してきた。しかしながら、デジタルイメージが大きくなる(メガピクセル超)ほど、ピクセルは深くなる(少なくとも1チャネルあたり16ビット)ため、従来のCPUで使用可能な計算リソースに負担をかけ、結果としてデジタルイメージ処理が、より低速かつ非効率的になる。
本発明の諸実施形態は、垂直に配向されたエフェクトグラフを利用するデジタルイメージデータの処理、たとえば非破壊的処理に関する。非破壊的処理では、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。垂直に配向されたエフェクトグラフの下に行くほど、実行される変形が良好になる。したがって本発明の諸実施形態は、変形をエフェクトグラフの可能な最低地点まで下に押し下げること、および、それらをそれまで置かれていた可能性のある場所ではなくその地点で適用することに関する。
以下、本発明について、添付の図面を参照しながら詳細に説明する。
本発明の主題は、法定要件を満たすために本明細書における特異性を用いて説明する。しかしながら、説明自体は、本特許の範囲を制限することを意図するものではない。むしろ、本発明者等は、他の現在または今後の技術に関連して本明細書で説明されたものと同様の様々なステップまたはステップの組み合わせを含めるために、請求された主題が他の方法でも具体化可能であることを企図している。さらに、本明細書における「ステップ」および/または「ブロック」という用語は、採用された方法の様々な要素を暗示するために使用することが可能であるが、これらの用語は、個々のステップの順序が明示的に記載されていない限り、および記載されている場合を除いて、本明細書で開示された様々なステップの中またはステップ間の任意の特定順序を暗示するものと解釈されるべきではない。
本発明の諸実施形態は、エフェクトグラフを利用してデジタルイメージデータを処理するためのシステムおよび方法を提供する。以上、本発明の概要について簡単に説明したが、以下では、本発明に関する例示的動作環境について説明する。
図面全体、特に最初に図1を参照すると、様々な図において、同じ参照番号は同じ構成要素を識別しており、本発明を実施するための例示的動作環境が示され、コンピューティングシステム環境100全体として指定されている。コンピューティングシステム環境100は、好適なコンピューティング環境の一例に過ぎず、本発明の用途または機能の範囲に関していかなる制限をも示唆することを意図しない。また、コンピューティング環境100は、例示的動作環境100に示されたいかなる構成要素または構成要素の組み合わせに関するいかなる依存性または要件を有するものとしても、解釈されるべきではない。
本発明は、多数の他の汎用または特定用途向けのコンピューティングシステム環境または構成と共に、動作可能である。本発明と共に使用するのに好適な可能性のある良く知られたコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能な大衆消費者向け電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、前述のシステムまたはデバイスのいずれかを含む分散型コンピューティング環境、などが含まれるが、これらに限定されるものではない。
本発明について、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との一般的な関連において説明する。一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶デバイスを含む、ローカルおよびリモートの両方のコンピュータ記憶媒体内に配置することができる。
図1を参照すると、本発明を実施するための例示的システムは、コンピュータ110の形の汎用コンピューティングデバイスを含む。コンピュータ110の構成要素は、処理ユニット120、システムメモリ130、および、システムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含むが、これらに限定されることはない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および、様々なバスアーキテクチャのうちのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のうちのいずれかとすることができる。限定ではなく、例を挙げると、こうしたアーキテクチャは、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、拡張ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、および、メザニンバスとしても知られるPeripheral Component Interconnect(PCI)バスを含む。
コンピュータ110は、通常、様々なコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ110がアクセス可能な任意の使用可能媒体とすることが可能であり、揮発性および不揮発性の媒体、取り外し可能および取り外し不能の媒体の、両方を含む。限定ではなく、例を挙げると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実施された、揮発性および不揮発性、取り外し可能または取り外し不能の、両方の媒体を含むことができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル汎用ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは、所望の情報を格納するために使用可能であり、コンピュータ110がアクセス可能な、任意の他の媒体を含むが、これらに限定されることはない。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調データ信号内の、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、その特徴の1つまたは複数が信号内の情報を符号化する方法で設定または変更された、信号を意味する。限定ではなく、例を挙げると、通信媒体は、有線ネットワークまたは直接配線式接続などの有線媒体、ならびに、音波、RF、赤外線、および他の無線媒体などの無線媒体を含む。前述の任意の組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれるものとする。
システムメモリ130は、読み取り専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の要素間で情報を転送する際に役立つ基本ルーチンを含む、基本入力/出力システム(BIOS)133が、通常、ROM 131に格納される。RAM 132は、通常、処理ユニット120が即時アクセス可能、および/または処理ユニット120によって現在動作中の、データおよび/またはプログラムモジュールを含む。限定ではなく、例を挙げると、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110は、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。単なる例として、図1は、取り外し不能不揮発性磁気媒体からの読み取りまたはこれへの書き込みを行うハードディスクドライブ141と、取り外し可能不揮発性磁気ディスク152からの読み取りまたはこれへの書き込みを行う磁気ディスクドライブ151と、CD ROMまたは他の光媒体などの取り外し可能不揮発性光ディスク156からの読み取りまたはこれへの書き込みを行う光ディスクドライブ155と、を示す。例示的オペレーティング環境で使用可能な他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル汎用ディスク(DVD)、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含むが、これらに限定されることはない。ハードディスクドライブ141は、通常、インターフェース140などの取り外し不能メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取り外し可能メモリインターフェースによってシステムバス121に接続される。
前述の、および図1に示された、ドライブおよびそれらの関連付けられたコンピュータ記憶媒体は、コンピュータ110に関するコンピュータ読み取り可能命令、データ構造、プログラムモジュール、および他のデータに、記憶域を提供する。たとえば図1では、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納しているものとして示される。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであるか、または異なるかの、いずれかが可能であることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、最低でも、これらが異なるコピーであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード162、および、一般にはマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの、入力デバイスを介して、コンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、などを含むことができる。これらおよび他の入力デバイスは、しばしば、システムバスに結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造によって接続することも可能である。モニタ191または他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介して、システムバス121に接続される。コンピュータは、モニタ191に加えて、出力周辺インターフェース195を介して接続可能な、スピーカ197およびプリンタ196などの他の周辺出力デバイスを含むこともできる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用する、ネットワーク化環境で動作可能である。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることが可能であり、図1にはメモリストレージデバイス181のみが示されているが、通常は、コンピュータ110に関して上記で述べた要素のうちの多くまたはすべてを含む。図1に示された論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、モデム172、または、インターネットなどのWAN173を介して通信を確立するための他の手段を含む。モデム172は内蔵型または外付けとすることが可能であり、ネットワークインターフェース170または他の適切なメカニズムを介して、システムバス121に接続することができる。ネットワーク化環境では、コンピュータ110に関して示されたプログラムモジュール、またはその一部を、リモートメモリストレージデバイスに格納することができる。限定ではなく、例を挙げると、図1は、リモートアプリケーションプログラム185を、メモリデバイス181上に常駐しているものとして示す。図示されたネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することができることが理解されよう。
コンピュータ110の多くの他の内部構成要素は図示されていないが、当業者であれば、こうした構成要素および相互接続が周知であることを理解されよう。したがって、コンピュータ110の内部構造に関する追加の細部については、本発明に関連して開示する必要がない。
コンピュータ110の電源がオンになるかまたはリセットされた場合、ROM 131に格納されたBIOS 133は、オペレーティングシステムまたはその必要部分をハードディスクドライブ141からRAM 132にロードするよう、処理ユニット120に命じる。オペレーティングシステム144によって指定されたオペレーティングシステムのコピーされた部分が、RAM 132にロードされると、処理ユニット120はオペレーティングシステムコードを実行し、オペレーティングシステム134のユーザインターフェースに関連付けられた視覚要素がモニタ191上に表示されることになる。通常、アプリケーションプログラム145がユーザによってオープンされると、プログラムコードおよび関連データがハードディスクドライブ141から読み取られ、必要部分がRAM 132にコピーされるが、このコピーされた部分は、本明細書では参照番号135によって表される。
前述のように、本発明の諸実施形態は、デジタルイメージ処理においてビデオカードまたはGPUの加速機能を利用するためのシステムおよび方法を提供する。こうした方法およびシステムは、たとえば図1のビデオインターフェース190を利用することができる。当業者であれば、本明細書で利用される「デジタルイメージ」という用語は、静的および/または動的なデジタルイメージを含む任意のデジタルイメージデータを言い表すこと、ならびに、そのいずれかおよびすべての組み合わせまたは変形が本発明の範囲内にあるものと企図されることを、理解されよう。本明細書で説明されるシステムおよび方法を利用すると、加速されたペースで、すなわちCPUがそれ自体で実行できる速度よりも速く、ピクセルデータを様々な方法で変形することができる。
加えて、本発明の諸実施形態は、非破壊的編集をGPU加速と統合する。本明細書で使用される「非破壊的編集」または「非破壊的処理」という用語は、レンダリングが要求されるイメージデータのみが要求時にレンダリングされることになる、すなわち、データを中間ステップに平坦化または保存することのない、編集(または処理)を言い表す。言い換えれば、レンダリングは、イメージがレンダリングされる場合は必ず、変形されていない最初にロードされたイメージデータから、オンデマンドで実施される。
従来のアプリケーションでは、程度の差は様々であるがCPU処理と組み合わせた非破壊的編集が試行された。しかしながら、CPU処理が十分に低速である場合、性能は、その当時は一般的であった相対的に小さなイメージでの平坦化されたモデルの性能に合わせられないことが、完全には理解されていなかった。しかしながら最近では、非常に大規模な(メガピクセル)写真イメージの人気が高まっており、非破壊的編集モデルがより魅力的になっている。
本発明の諸実施形態によって企図されるように、GPUを非破壊的編集と組み合わせて利用することにより、イメージ処理の性能は、従来のCPUベースの平坦化モデルに比べて非常にしばしば桁違いに高いものになる。実際のところ、GPUのメモリ占有スペースは相対的に小さく(平坦化はメモリをかなり多用する)、GPUからCPUメモリへイメージデータを読み取るための帯域幅が限られているため、平坦化モデルは、GPU実施に適していない。
GPUと組み合わせた非破壊的編集によって、レンダリングに必要なビットのみの、オンデマンドでのGPUへのローディングが可能になる。したがって、編集のたびに元のピクセルすべてがフル解像度で処理されることを確認する必要がなくなる。
本発明の諸実施形態に従った方法およびシステムは、GPU加速機能をCPUデジタルイメージ処理モデルに統合する。すなわち、GPUは、単なる特殊な機能などとして周辺に提供されるとは対照的に、デジタルイメージ処理モデルアーキテクチャに統合される。この場合、デジタルイメージ処理の作業を行っているユーザ(たとえばプログラマまたは開発者)が、長所または機能がターゲットデバイスと共にある2つのモダリティを交互に用いることができる、たとえば、CPU処理またはGPU処理のいずれかを単独で選択する必要がないように、CPUおよびGPU処理は一体化される。
システムアーキテクチャに統合される一方で、GPUの使用はオプション構成要素として提供されることに留意されたい。したがって、レンダリングデバイスがビデオカードの機能を含む場合、システムはその加速機能を、必要に応じてまたは所望に応じて呼び出すことができる。しかしながら、システムがビデオカードの機能を含まない場合も、依然としてデジタルイメージ処理に利用することができる。
本発明の方法およびシステムは、エフェクトグラフを作成するため、および、GPU、CPU、またはこの2つの何らかの組み合わせを使用してこれを連結するための機能を提供する。本発明の諸実施形態に従ったデジタルイメージ処理モデルアーキテクチャは、本明細書ではエフェクトと呼ばれる要素からなる。本明細書で使用されるエフェクトという用語は、基本的なイメージ処理クラスである。すなわち、エフェクトは基本的にピクセル演算子である。それらはバッファおよびピクセルデータを取り込み、データを操作し、修正されたピクセルを出力する。たとえば、鮮明化エフェクトはイメージピクセルを取り込み、そのピクセル縁部を鮮明にし、取り込んだイメージピクセルよりも鮮明化されたイメージを出力する。他の例では、露光エフェクトはイメージピクセルデータを取り込み、このピクセルの色バランスを調節し、取り込んだものから修正された色バランスを有するイメージを出力する。したがって、エフェクトの主な機能はピクセルを処理することである。
様々なイメージ処理アルゴリズムを実施するために、たとえばマスキング、混合、回転などの、異なるエフェクトを定義することができる。以下でより完全に説明するように、ユーザは、所望の結果を達成するために、事前に定義されたエフェクトをまとめて連結することができる。所望であれば、ユーザは、関心のあるイメージ処理アルゴリズムを実施するために新しいエフェクトを定義することもできる。エフェクトは、任意数の入力イメージを処理し、任意数の出力イメージを生成することができる。入力および出力の数は構築時に決定され、エフェクトを再作成することなく変更することはできない。各入力または出力の意味は、エフェクト自体によって定義される。ほとんどの場合、この意味は順序に依存する。
単なる例として挙げると、図2は、3つの入力および2つの出力を有する混合エフェクトを示す概略図である。この特定の混合エフェクトは、その第3の入力(入力2)に与えられるマスクによって変調された、その最初の2つの入力(入力0および入力1)を混合する。この例では、第1の出力(出力0)がカラーイメージを生成し、第2の出力(出力1)がグレーの陰影でイメージを生成する。多くのエフェクトは1つの出力のみを生成する。
ある意味では、各エフェクトが互いに連結する前に何を実行するかをユーザが理解しなければならないという点で、エフェクトは集積回路のような働きをする。集積回路と同様、互いに連結されたエフェクトの集合は、各部分の合計を超える複雑な結果を達成することができる。
エフェクトは互いに連結されると、エフェクトグラフを形成する。本明細書で使用されるエフェクトグラフという用語は、有向非巡回グラフ(DAG)である。すべての接続が(1つのエフェクトの出力から次の入力までの)データフローの方向を暗示しているため、「有向」である。ループは禁止、すなわちグラフを通過するどの経路もエフェクトの出力をその入力の1つとして戻さないため、「非巡回」である。あるエフェクトの出力を複数のエフェクトの入力に送ることができるため、「ツリー」ではなく「グラフ」である。エフェクトグラフは複数のエフェクトを互いに接続して、複数の単純な構築ブロックから構築された複雑な出力を達成する。
図3を参照すると、入力イメージの領域をマスクによって指示されたとおりに選択的にぼかす、例示的エフェクトグラフ300の概略図が示される。イメージエフェクトオブジェクト310が、ぼかしエフェクトオブジェクト312および混合エフェクトオブジェクト314の両方に、イメージデータをどのように供給するかに留意されたい。これは、ツリー構造では不可能であろう。加えて、エフェクトグラフ300には循環が存在しない。すなわち、たとえば混合エフェクトオブジェクト314の出力は、他のエフェクトオブジェクト(イメージエフェクトオブジェクト310、ぼかしエフェクトオブジェクト314、またはマスクエフェクトオブジェクト316)のうちの1つの入力ではない。本発明のモデルは、エフェクトグラフがレンダリングおよび/または変更される場合、無限ループを防止するために、循環を自動的にチェックする。
レンダリングのためにエフェクトが呼び出されると、各エフェクトにいくつかの興味ある出来事が生じる。第1に、各エフェクトは、既存のキャッシュに入ったバッファを使用して、要求を満たすことができるかどうかを判別する。キャッシュストラテジについては、以下でより詳細に論じるが、ここでは、その作業の出力が適切なキャッシュ内にすでに存在している場合、何の作業も実行不要であることを企図すれば十分である。既存のキャッシュバッファによって要求を部分的に満たすことが可能である場合(これはたとえば、ユーザがイメージをパンしているか、またはウィンドウのサイズを変更している場合に、頻繁に発生する)、重複するピクセルがキャッシュから新しいイメージバッファにコピーされ、その後、残りのピクセルがレンダリングされて、新しいバッファの適切な部分にコピーされる。
エフェクトは、CPUを動作させる必須レンダリング方法(ソフトウェアレンダリング)と、GPUを動作させるオプションレンダリング方法(各エフェクトが、ハードウェア(GPU)またはソフトウェア(CPU)のどちらでレンダリングを試行するべきかを決定する、ハードウェアレンダリング)の、2つの異なる方法を使用してレンダリングすることができる。選択は、ユーザによって(各エフェクトに関連付けられた、ソフトウェアレンダリング専用の指定変更がある)、アプリケーションによって、および/または現在のコンテキストによって(このコンテキストでは、ソフトウェアレンダリング専用の指定変更によって、サブグラフのソフトウェアレンダリングを強制するために、クライアントまたは任意のエフェクトを、グラフ内でより高位にすることができる)、命じることができる。ソフトウェアの指定変更が命じられない場合、基本クラスは、ハードウェアにおけるエフェクトのレンダリングを試行し、可能であれば、要求された結果を含むイメージバッファが戻されることになる。ハードウェアにおいてエフェクトがレンダリングできない場合、ソフトウェアレンダリングが実施されることになる。
どちらのレンダリング方法を呼び出すかに影響を与える可能性のある、動的条件も存在することに留意されたい。たとえば、エフェクトは、ハードウェアレンダリングを呼び出すが、メモリ不足例外をキャッチした場合、ビデオカードの使用可能メモリを超える一時バッファを割り振るように試行する。エフェクトに対するデフォルト応答は、ソフトウェアレンダリング(CPU)を呼び出して、必要な結果を取得することである。すなわち、モデルはGPUメモリを使い果たした場合、CPUまで後退することができる。この場合、リソースの可用度に基づいて性能を最適化することができる。
イメージバッファは、システムメモリ(CPUメモリ)、ビデオメモリ(GPUメモリ)、またはその両方に格納されたイメージ(ピクセル)データを表し、1つのエフェクトから他のエフェクトへ、エフェクトグラフを介して渡される。ユーザは単に、処理したい場所に処理したいデータがあればよいため、一般にデータの実際の場所はユーザにとっては重要ではなく、イメージバッファは必要であれば自動的にデータをその場所にコピーすることになる。すなわち、イメージバッファはピクセルデータが格納されている場所の詳細を隠し、エフェクトにとって適切な場所で自動的に使用できるようにする。
イメージバッファとは、イメージデータの読み取りおよび書き込みを行うためにエフェクトが使用するメインクラスである。イメージバッファの最大サイズは、一般に、ユーザがレンダリングを希望する可能性のあるイメージのサイズに比べてかなり小さい。たとえば、一実施形態では、ハードウェア制限によって指示される最大幅または高さは、いずれも2Kピクセルを超えない可能性がある。特定のエフェクトグラフは、単一のパスで2Kピクセルさえもレンダリングできない可能性がある。最大サイズは、グラフに含まれる特定のエフェクトに依存する。たとえば、大型半径のぼかしエフェクトは、書き込むピクセルよりもかなり多くのピクセルを読み取らなければならないため、生成可能な最大バッファサイズは、その入力をオーバーサンプリングする量だけ少なくなる。
ユーザは、レンダリングを要求する場合、これらの制限を容易に予想することができない。したがってユーザは、それらが必要とするものを要求するだけである。しかしながら、戻されたバッファが要求されたサイズとは異なる可能性がある。
イメージバッファのインスタンスは、割り振られたメモリを保持し、再請求することはできない。イメージバッファは、エフェクトによってアクティブに読み取られているかまたは書き込まれているイメージデータを保持するのに有用である。
時に、エフェクトは、レンダリングパス間でイメージデータをキャッシュに入れようとする場合がある。しかしながら、このデータがイメージバッファに保持されている場合、再請求することはできない。残りのエフェクトグラフがレンダリングされる際にビデオメモリが少なくなった場合、十分なリソースを再請求できない限り、エンジンはソフトウェアレンダリングに戻らなければならない。
イメージキャッシュオブジェクトは、イメージデータをキャッシュに入れる代替方法である。イメージキャッシュオブジェクトは、エフェクトが、後続のレンダリング中に再使用する可能性のあるイメージデータへの参照を維持できるようにするが、再使用しなければならない場合は再生成することができる。イメージキャッシュオブジェクトを保持すること、およびイメージバッファオブジェクトを解放することによって、エフェクトは、ビデオメモリが一杯になった場合にメモリを再請求することができる。目標は、メモリが少なくなったシナリオで、ソフトウェア(CPU)レンダリングに戻るのではなく、他のエフェクトがハードウェア(GPU)加速を使用できるようにすることである。ユーザは、後で読みたくなる可能性のあるイメージキャッシュインスタンスを任意のイメージバッファから獲得する。その後、イメージキャッシュを引き続き保持しながら、イメージバッファを解放することができる。これにより、イメージデータへの参照は維持され、必要であればそのコンテンツを再請求することができる。
エフェクトをツリーではなくグラフに編成することで、レンダリング時に何らかの問題が提示される。たとえば、図4の概略図に示されたようなエフェクトグラフを企図してみる。例示されたエフェクトグラフ400では、イメージデータが、下部のイメージエフェクトオブジェクト410から、上部の混合エフェクトオブジェクトである混合エフェクトB 418の出力へと流れるための、4通りの方法がある。第1にイメージデータは、イメージエフェクトオブジェクト410から、混合エフェクトオブジェクトA 414、混合エフェクトオブジェクトB 418へと流れることができる。第2にイメージデータは、イメージエフェクトオブジェクト410から、レベルエフェクトオブジェクト412、混合エフェクトオブジェクトA 414、混合エフェクトオブジェクトB 418へと流れることができる。第3にイメージデータは、イメージエフェクトオブジェクト410から、レベルエフェクトオブジェクト412、混合エフェクトオブジェクトA 414、ぼかしエフェクトオブジェクト416、混合エフェクトオブジェクトB 418へと流れることができる。第4にイメージデータは、イメージエフェクトオブジェクト410から、混合エフェクトオブジェクトA 414、ぼかしエフェクトオブジェクト416、混合エフェクトオブジェクトB 418へと流れることができる。
エフェクトグラフを通る4つのパスは管理不可能とは思えないが、組み合わせの可能性は指数関数的である。追加の混合エフェクトに数個のエフェクトを結合すると、グラフを通る固有パスの数は何百倍または何千倍にも増加する。単純なレンダリングモデルは、グラフの下部近くのエフェクトを何回もレンダリングしなければならず、そのたびに同じ出力が生成される。この指数関数的な増加および同一エフェクトのレンダリングの反復により、デジタルイメージ処理は極度に効率が悪く、速度が遅くなる。
本発明の諸実施形態のモデルは、各エフェクトでの自動バッファキャッシュを含めることによって、この過度のレンダリングのすべてではなくとも一部を軽減する。たとえば、図4のエフェクトグラフにおいて、混合エフェクトオブジェクトA 414がキャッシュを保持する場合、その入力をレンダリングするためにレベルエフェクト412およびイメージエフェクト410にさらに2回要求を出すのではなく、後でレンダリングを要求するごとにキャッシュを戻すだけでよい。この例では、イメージエフェクトオブジェクト410は、その出力を4回ではなく2回要求されるだけである。
とりわけ、エフェクトグラフを使用してローイメージから最終出力に到達するためには、パスに沿って各エフェクトにその出力について照会しなければならない。しかしながら、エフェクトは、その入力バッファがレンダリングされるまでその出力をレンダリングできない。したがって各エフェクトは、その出力が要求されるとその入力を照会する(すなわち、その入力エフェクトのイメージバッファで動作可能なように、そのイメージバッファについて照会する)。しかしながら、エフェクトの入力は、それらそれぞれの入力バッファがレンダリングされるまでそれらの出力をレンダリングすることができないため、その独自の入力を照会しなければならない。この照会プロセスは、エフェクトグラフの上部(最終出力がレンダリングされる場所)から、入力(たとえばローイメージ、JPEGなど)がレンダリングされる下部まで、すべてにわたって継続される。さらにこのプロセスは、一度にエフェクトグラフを通る1つの潜在パスに従って行くことによって、照会ごとに完了しなければならない。たとえば、図4のエフェクトグラフを利用する前述の例では、混合エフェクトオブジェクトB 418は2つの入力のみを有するが、それら入力のそれぞれが、その出力をレンダリングするために、2つの異なるパスに沿ってその入力を照会しなければならない。各エフェクトは、各潜在パスについてイメージバッファを生成し、最終エフェクト(この例では、混合エフェクトオブジェクトB 418)に、最終出力を出力するために必要な入力のうちの1つを提供する。
しかしながら、エフェクトグラフ内の中間エフェクト(たとえば、レベルエフェクトオブジェクト412、混合エフェクトオブジェクトA 414、およびぼかしエフェクトオブジェクト416)によってキャッシングが利用される場合、各中間エフェクトは、エフェクトグラフがレンダリングされる前の最も直近に計算された照会結果を、保持するかまたはキャッシュに入れることができる。このようにして、エフェクトグラフの上部で照会が開始された場合、調べられている2つのパス間で共通の中間エフェクトに達したときに、エフェクトグラフの下部まで戻って照会する必要がない。すなわち、照会は、調べられているパス間で共通の第1のエフェクトまで戻ればよい。エフェクトグラフの2つのパス間でこの共通のエフェクトを見つけること、および、その時点で情報をキャッシングまたは保持することによって、前述の潜在的な指数関数的計算が緩和される。
エフェクトグラフを最初に通過する間、どのエフェクトでキャッシュを保持するべきかを決定するため(および、それ以上照会されないエフェクトでの不必要なキャッシングを防ぐため)に、レンダリングが開始される前に、グラフの事前レンダリングパスが実行される。事前レンダリングパスは、いずれかの実際の計算がピクセル上で実行される前に、エフェクトグラフのどの領域が照会されようとしているかを識別し、レンダリング時に複数回要求されようとしているその領域の部分、ならびに、予測可能な照会インスタンスの数を識別する。その後、レンダリング時に、複数回の照会が必要であると識別されたエフェクトがあれば、それらは、最大回数要求されるまで、照会された情報を関連するイメージバッファ内にキャッシングすることができる。その時点で、含まれる情報が再度要求されることはないものとして、イメージバッファを解放することができる。
図4に示された例では、ぼかしエフェクトオブジェクト416が、書き込むよりも多くのピクセルを読み取る場合、混合エフェクトオブジェクト414は、2つの異なるサイズを有するイメージバッファについて照会される。この場合、第1に大きい方のイメージバッファが要求され、それ以上のレンダリングなしに第2の要求が満たされれば幸運である。しかしながら、大きい方のイメージバッファ要求が小さい方のイメージバッファ要求より後に来た場合、要求は容易に満たされるというわけには行かない。
レンダリングがサイズの昇順で要求される場合の不適切な実行を避けるために、本発明のモデルは、事前レンダリングパスの実行を提供する。事前レンダリングパスについては、同じ情報についての複数回の照会の対象となるエフェクトグラフの部分を識別することに関して、上記で論じた。事前レンダリングパスの間、各エフェクトは、同様のレンダリング要求を含む境界矩形も累積する。したがって、その後のレンダリングの間、エフェクトは、追加の費用なしでさらなる要求を満たすために、同じキャッシュを使用することを予想して、現在の要求に必要な出力バッファより大きい出力バッファを生成することができる。
これらのイメージキャッシュは1つの問題を回避するが、多くのビデオメモリがキャッシュバッファを保持するために予約開始され、そのうちの一部は今後決して使用されないであろうという点で、別の問題を発生させる。単純な解決策は、キャッシュバッファの割り振りが試みられ、メモリ不足例外が返された場合は必ず、最も直近に使用されたということに基づいてキャッシュバッファを再請求することである。しかしこれは、ビデオメモリがフル容量で頻繁に実行される(ビデオメモリの他のユーザにとって望ましくない)ことを意味し、ほぼすべての割り振りで例外処理のオーバヘッドを被る。
図5を参照すると、各エフェクトについてカウントが示されたエフェクトグラフの概略図が示されており、全体が参照番号500として指定されている。各エフェクトは、いくつのコネクタがその出力に接続されるかをカウントする、その出力それぞれに関連付けられたカウンタを有する。エフェクトはその入力バッファのうちの1つの使用を完了するごとに、対応する入力エフェクトに出力バッファを解放するように要求し、その出力に関するカウンタが減分される。カウンタがゼロに達すると、エフェクトは、現在のレンダリングパス中には、その出力バッファに関する要求をそれ以上受け取らないものと想定するため、エフェクトはその出力キャッシュを解放する。ビデオカード(GPU)メモリが制限されているため、必要以上の情報を保持することは望ましくないことから、イメージバッファは単一のレンダリングパス中のみ保持される。
たとえエフェクトがキャッシュを有する場合であっても、その入力エフェクトに、たとえレンダリングする必要がなくともそれらの出力バッファキャッシュを解放するように伝えなければならない。これは、エフェクトカウンタが適切に調整されること(したがって、キャッシュが適切に解放されること)を保証するために必要である。
レンダリングが完了した後、上部エフェクトはグラフ内に1つだけキャッシュを保持することになる。実際には、以下でより詳細に論じるように、対話型レンダリングを加速させるためにユーザが追加のキャッシュを保持しようとする理由は他にある。本明細書では、この例は、どのようにキャッシングを使用して指数関数的レンダリングを防ぐのかを示すためにのみ与えられる。
対話型レンダリングを加速させるために、1つのレンダリングパスから次のパスへと変更しなかったエフェクトグラフの部分について、キャッシュを維持することが有用である。通常、ユーザがプロジェクトを構築する方法は、1回につき1レイヤまたは1エフェクトである(レイヤについては、以下でより詳細に論じる)。たとえばユーザは、イメージの露光を調節するためにエフェクトを追加し、その後、イメージの温度を調節するために別のエフェクトを追加し、さらにその後、イメージを鮮明にするために第3のエフェクトを追加する。このように1つずつエフェクトを追加していくため、ユーザは一般に、1回について一番最近追加されたエフェクトのみを調節し、たとえばユーザは、すべての露光調節を完了した後に温度エフェクトを追加することになる。しかしながら、複数の露光調整が必要であり、それぞれの調節がレンダリングパスを必要とする可能性がある。
この典型的なプロジェクトシナリオに対処し、以前のレンダリングパス以降変更されていないエフェクトグラフの部分を不必要に再レンダリングすることを避けるために、エフェクト基本クラスは、最後のレンダリングパス以降エフェクトが変更された場合に設定される「ダーティフラグ」を含む。事前レンダリンググラフ走査(事前レンダリングパス)中に、ダーティさはエフェクトグラフを介して上方に伝搬され、ダーティエフェクトとグラフのルートとの間の任意のパス上にキャッシュを配置する。
ダーティさは、変更されないグラフの部分についてキャッシュを維持するために使用される。ダーティエフェクトは、次のレンダリングパスについても同様にダーティとなる可能性があることが想定される。これは、ユーザがパラメータ値を調整している場合、またはそれ以外の方法で1回に1つのエフェクトを修正している場合である。
たとえば、図6の概略図に示されたエフェクトグラフにおいて、ユーザがぼかしエフェクトに関連付けられたマスク上でペイントしていると想定する。事前レンダリングパス中に、上部の混合エフェクトである混合エフェクトB 618は、ダーティでない2つの入力エフェクト(混合エフェクトA 614およびぼかしエフェクト616)と、ダーティな第3の入力エフェクト(マスクエフェクト620)とを有することを検出する。エフェクトがその入力間でのこのダーティさの不一致を検出した場合は必ず、マスクエフェクト620が、次のレンダリングパスで修正されることになる唯一の入力であると想定され、非ダーティ入力エフェクトにそれらのキャッシュ上で保持するように指示する。例示されたシナリオでは、混合エフェクトB 618は、ぼかしエフェクト616および混合エフェクトA 614にそれらのキャッシュ上で保持するように指示し、マスクエフェクト620に、そのキャッシュを解放するように指示する。(イメージエフェクト610およびレベルエフェクト612は、混合エフェクトA 614に入力を提供するため、次のレンダリングパスでは照会されないことに留意されたい。)この選択的キャッシングは「相互レンダリングキャッシング」と呼ばれる場合があり、混合エフェクトB 618およびマスクエフェクト620のみが各レンダリングパスについて実際に作業を行う必要があるため、加速される対話型レンダリングに関する性能の向上が顕著である。
前述のように、ほとんどのユーザは自分のプロジェクトを1回につき1レイヤまたは1エフェクトで構築し、通常、ユーザは、通常はエフェクトグラフの上部にある自分が最後に追加したレイヤまたはエフェクトを調節すると想定すると、この相互レンダリングキャッシングの利点は、特に興味深い。本発明の諸実施形態の動的レンダリングモデルでは、ユーザは、いついかなるレイヤまたはエフェクトを変更することも自由である。相互レンダリングキャッシングを使用すると、エフェクトグラフの上部近くでの調節は、下部近くでの調節よりも高速になる。
相互レンダリングキャッシングを使用すると、キャッシュは、処理操作の指数関数的増加を避ける目的でのキャッシングに関する場合と同様に、単一のレンダリングパス中のみではなく、特定のデジタルイメージデータ(すなわち単一イメージ)に対するレンダリング操作にまたがって保持されることに留意されたい。
エフェクトグラフにおける「レイヤ」の概念には、これまで何回か触れてきた。本発明の諸実施形態のエフェクトグラフモデルでは、エフェクトは「アトミック」イメージ処理要素である。レイヤは、興味深いシナリオに対処する有用な方法で、エフェクトを結合する。レイヤはエフェクトグラフを構築するが、それらの処理またはレンダリングには直接関係しない。
なぜレイヤが有用であるかを理解するために、調節レイヤモデルについて考えてみる。様々なタイプの調節がサポートされているが、それらすべてがマスクおよび混合モードをサポートするものと企図する。これは、マスキングおよび混合機能を個々のエフェクトに分割し、その後、達成されることが望ましい複雑な結果を達成するために、いくつかの単純なエフェクトをまとめて連結することによって実施される。しかしながら、反復される編集単位が存在する場合、ユーザは、同じエフェクトを繰り返し連結しなければならず、グラフを最適化するためにローカライズされたインテリジェンスを開発することは困難である。たとえば、マスクが空の場合、マスクエフェクトを省略することが可能であり、混合モードおよびマスクが存在しない場合、混合エフェクトを省略することが可能である。
レイヤを、標準イメージ編集パイプラインの作成を単純化する、スマートマクロと考える人もあろう。実際、パイプラインの概念はレイヤによって導入される。レイヤは単一のイメージ入力を取り込み、単一の出力を生成する。もちろん、レイヤ内のエフェクトは、任意に複雑なサブグラフに編集することができる。
レイヤは任意のエフェクトを取り込み、オプションのマスクによって制御される任意の混合モードに対するサポートを追加する。一例では、これは図7に示される概略図のようになり、レイヤは全体が参照番号700として指定される。各レイヤはそのエフェクトを所有し、エフェクトグラフのその一部を作成するためにそれらを動的に(すなわちランタイム時に)まとめて連結する。スマートな動的最適化をグラフに適用することができる。たとえば、レイヤはそのエフェクトが変更された場合にイベントを受け取るので、混合エフェクト710のミキシングパラメータがその最小値に変更されたことを通知する場合、混合エフェクトおよびマスクエフェクト712を、構築するエフェクトグラフから除外することができる。
図7のエフェクトグラフは、混合エフェクト710、マスクエフェクト712、およびメインエフェクト714を互いに連結することが可能な、最も一般的な方法を示す。しかしながら、レイヤは、これら3つのエフェクト間のより複雑な関係をサポートする。場合によっては、マスクエフェクトは、レイヤの入力イメージに基づいて自動的にマスクデータを生成している可能性がある。メインエフェクトは、入力イメージデータに依存する場合、または依存しない場合がある。場合によっては、メインエフェクトがマスクデータにアクセスする必要がある可能性がある。
完全に接続されたレイヤは、図8の概略図のようになる可能性がある。もちろんレイヤは、図8に示されたよりもさらに複雑になる可能性がある。レイヤは、図に示されたエフェクトのいずれかを、任意に連結された複数のエフェクトと置き換えることができる。
単一チャネルのイメージバッファを出力するエフェクトは、マスクエフェクトとして働くことができる。マスクは、一定ピクセルベースのマスク(すなわち単一チャネルのイメージエフェクト)、または一定ベクトルベースのマスク(すなわち、ベクトルベースのデータを単一チャネルの出力バッファにラスタライズする)とすることができる。加えて、状況によって、マスクは入力データから動的に生成される場合がある。一般にこれは、何らかの基準、たとえば特定の色範囲を満たすピクセルを、ユーザが動的に選択することによって実施されることになる。
たとえば、図8のマスクエフェクトを参照すると、ユーザが、パイプラインを上ってきた特定のイメージにおける陰影を明るくすることを希望すると想定する。したがって、ユーザは、露光レイヤをエフェクトグラフに追加し、そのレイヤ上にマスクを配置して、マスクがイメージの陰影付けされた領域内にのみ配置されるようにする。一般に、マスクは、ピクセル選択に基づいてペイントまたは貼り付けされるため、静的である。しかしながら、本発明の諸実施形態によれば、ピクセルデータおよびマスクは、たとえば暗くする空をユーザが選択することができるようにする命令を含めることによって、動的にすることができる。これは、空の特定の色範囲の基準を満たすピクセルをユーザが動的に選択することによって実施されることになる。その後、パイプラインが(たとえば回転レイヤの追加によって)変更されると必ず、マスクは、ユーザによって再ペイントしなければならないのではなく、自動的に再計算される。
動的マスキングなどの自動訂正がGPUで実行可能な場合、マスクは入力イメージと同じ解像度で生成されることになるため、これは非常に説得力のあるシナリオである。一定マスクとは異なり、ベクトルのラスタライズまたはイメージサンプルの補間が不要である。
動的マスキングの主な利点の1つが、動的マスクによりユーザがパイプラインを変更できるようにすること、および、適切であればそれらの変更にマスクを適合させることである。一例が赤目であろう。赤目は、彩度低減エフェクトレイヤ上に瞳を位置づけるためにマスクを使用して瞳の領域の彩度を減じることによって、訂正することができる。マスクを静的に設定すること(赤いピクセルに関する選択をアルゴリズム的に使用するか、または手作業によって)は、基礎となるイメージが移動(たとえば変形、回転、または縮尺)した場合は失敗する。しかしながら、動的マスクは、イメージ内のどこに赤い瞳があったかを再検出し、マスクをリセットすることができる。
レイヤクラスは、混合エフェクトが3つの入力(混合する2つのイメージおよびマスク)を有するものと予期する。各混合アルゴリズムは、別々のエフェクトサブクラスによって表される。一般に、共通基本クラスを保証するだけの十分な共通コードが存在することになる。ユーザがレイヤの混合モードを変更する場合、以前の混合エフェクトは廃棄され、エフェクトグラフが再構築される際に新しい混合エフェクトに入れ替わる。
混合エフェクトに接続されるマスクエフェクトがない場合、混合エフェクトは不要であり(レイヤの出力は単にメインエフェクトの出力である)、完全に不透明なマスクが想定される。
「単一入力、単一出力」レイヤモデルは、エフェクトグラフの構築プロセスを大幅に簡略化する。ユーザが、作成したパイプラインの構成を保存したい場合、レイヤの追加の利点が明らかとなる。エフェクトグラフを使用する場合、保存は実際には実施がむしろ困難なタスクである。各エフェクトは、それ自体をシリアル化するように(すなわちその設定などを保存するように)要求されなければならず、エフェクトグラフはその情報を使用して、たとえばXMLで記述されなければならない。レンダリングエンジン自体が、グラフがいくつかのレイヤを含むことに気づいており、それらをそれぞれ記述することができるため、レイヤモデルはこれをより単純にする。その後レイヤは、それら自体を記述するように要求される。各レイヤがそのそれぞれのグラフを内部に構築した場合、その情報を格納する必要はない。
エフェクトのシリアル化に優るレイヤのシリアル化の追加利点は、レイヤがツリー内にあり、エフェクトが(一般には)DAGとすることが可能なグラフ内にあることである。ツリーの欲張りな深さ優先再帰的シリアル化を実行することができる(たとえば各ノードで、エフェクトはその子等に照会してそれら自体を記述し、その後自らを記述することができる)。DAGでは、これは、エフェクトDAGでレンダリングが指数関数的になるのを防ぐために、キャッシングに関して上記で論じた理由とすべて同じ理由で、指数関数的に実行される。したがって、この問題をレイヤレベルで対処することは、エフェクトレベルで対処するよりもかなり障害が少ない。
本発明の諸実施形態に従った動的なデジタル処理イメージモデルでは、品質および性能の両方に関して、いつどこでデータが変形されるかがかなり重要である。品質の問題を理解するために、ユーザが従来のイメージ処理モデルを使用してイメージを回転しようとしていると想定する。イメージが所望の方向を向いているものと決定されると、レンダリングエンジンは、新しい回転値でイメージを再サンプリングし、そのデータから新しいピクセルセットを生成しなければならない。その後ユーザがイメージを再度回転させる場合、従来のレンダリングエンジンは、以前の回転の前にイメージが開始された場所を記憶していない。したがって、単にイメージを再度回転させ(以前に回転したことには気づかず)、完了すると、イメージを再サンプリングして、新しいイメージを再度生成する。このプロセスは、追加の回転訂正が実行されるにつれて延々と続けられ、その都度データが再サンプリングされ、新しいイメージが作成される。この手法の問題点は、データが再サンプリングされるたびに劣化することである。
しかしながら、本発明の諸実施形態に従った動的デジタル処理イメージモデルでは、すべての調節が動的である。したがって、ユーザがイメージを回転させた場合、レンダリングエンジンは回転された累積量を記憶している。すなわち、回転修正を行うように要求されるごとに、オリジナルのデータに戻って回転を適用する。したがって、回転修正に続いてイメージが再生成される場合、オリジナルのイメージデータから1回だけ再サンプリングされる。これにより、イメージが耐えなければならない劣化の量が大幅に低減される。
さらに、毎回何らかの回転が追加される、プロジェクトの異なるレベルでの異なる変形が存在する場合であっても、この挙動は保存可能である。エフェクトグラフ全体を通じたすべての変形の累積結果が合計され、1回だけ適用される。すべての変形を累積し、それらが適用される前にそれらをさらにパイプラインの下方へできる限り押し下げるメカニズムが、レンダリングエンジン内に存在するため、この適用は、通常、パイプラインの下部レイヤ付近で実行される。このようにして、変形は、正確なレンダリングを生成するために必要な最小数のピクセルに対してであり、必要以上に頻繁には実行されない。
変形がエフェクトグラフを通過するのを2つのことによって止められることに留意されたい。たとえば、変形されたピクセル上でどのように動作するかを理解していないエフェクトに遭遇する可能性があり、その特定のエフェクトは未変形イメージ上で動作しなければならず、変形はエフェクトが適用された後にだけ適用される。
こうした状況に対処するために、以下でより詳細に説明するように、各エフェクトは事前レンダリングパス中に、どの種類の変形を処理できるか、およびどの種類の変形を処理できないかをエンジンに通知する。
前述のように、いつ変形が実施されるかに性能の観点からも、重要である。エフェクトグラフパイプラインでは、処理するデータをできる限り少なくすることが最も効率的である。ユーザが非常に大型(たとえば10億ピクセル)のイメージをロードし、そのイメージの編集を開始したいものと想定する。そのイメージの解像度で操作する代わりに(たとえば、10億ピクセルで操作する代わりに)、本発明の諸実施形態の動的レンダリングモデルは、たとえば200万ピクセルなどのユーザが実際に見ている解像度、または使用されているディスプレイデバイスがイメージを出力する解像度で、操作する。イメージを扱っているあらゆるエフェクトが、その後、かなり低い解像度でデータを扱うように、イメージの解像度は、パイプライン内で可能な最も早い時点で下げることが望ましい。したがってエフェクトは、イメージをかなり高速に操作し、大幅に少ないGPUまたはCPUイメージメモリを使用することが可能である。この結果を可能にするための倍率がデータに適用されていることに留意されたい。しかしながら、品質に関して上記で述べたように、スケーリングを処理できないエフェクト、すなわちスケーリングされたデータを扱う方法を知らないエフェクトが存在する。したがって、事前レンダリングパス中で、各エフェクトはこの種の変形を処理できないかどうかをエンジンに通知し、そのエフェクトがスケーリングされていないデータを処理してしまうまで、スケーリングは実施されないことになる。
さらに、レンダリングエンジンが、実際にはエフェクトグラフ内のさらに下方の別の変形場所で適用可能であると決定した場合、可能な限りパイプラインのさらに下方へ変形を押し下げる効果により、結果として、ユーザが指定した場所では特定の変形が実行されないことになることに留意されたい。
単なる例として挙げると、ユーザが、ぼかしエフェクト(ピクセル半径5のぼかし)、およびその後のダウンサンプリングまたはスケーリングエフェクト(10倍)を備える、エフェクトグラフを生成したと考えてみる。ユーザは、ぼかし半径を適用した後、イメージがスケーリングされると予測する。しかしながら実際には、ダウンサンプリングエフェクトは変形であるため、グラフの下方に押し下げることができた場合、最初にサンプルに適用され、その後、下方解像度イメージにぼかしが適用されることになる。ぼかしエフェクトは、このインスタンスで、ユーザの(表示)観点からすれば同じになるように、たとえばエフェクト全体について1/2ピクセルぼかしまで修正されなければならないことに留意されたい。ぼかしエフェクトが、スケーリングされたイメージのぼかしを処理できないことをレンダリングエンジンに宣言した場合、スケーリングエフェクトはパイプライン内のその下まで押し下げられないことになる。
次に図9を見ると、本発明の実施形態に従って、エフェクトグラフを利用してデジタルイメージデータを処理するための方法900を示す流れ図が示される。最初に、ブロック910で示されるように、複数のエフェクトオブジェクトが受け取られる。エフェクトオブジェクトについては、上記で広範囲にわたって論じてきており、単なる例として挙げると、混合エフェクトオブジェクト、マスクエフェクトオブジェクト、ぼかしエフェクトオブジェクトなどを含むことができる。複数のエフェクトオブジェクトが受け取られると、ブロック912に示されるように、エフェクトグラフが複数のエフェクトオブジェクトの少なくとも一部を利用してエフェクトグラフに連結される。エフェクトグラフは、必要に応じて、および/または所望であれば、CPUメモリ、GPUメモリ、ならびに、CPUメモリとGPUメモリの組み合わせのうちのいずれかを使用して、レンダリングすることができる。
その後、ブロック914に示されるように、処理されることになるデジタルイメージデータが受け取られる。デジタルイメージデータは、その後、ブロック916に示されるように、エフェクトグラフを利用して処理される。一実施形態では、デジタルイメージデータの処理は、受け取ったデジタルイメージデータの少なくとも一部を非破壊的に処理することを含むことができる。次に、処理されたデジタルイメージデータを、少なくとも1つのイメージバッファに関連して、CPUメモリおよびGPUメモリのうちの少なくとも1つに格納することができる。これはブロック918に示される。
本発明の諸実施形態に従ったイメージバッファは、GPUとCPUの間で、自動的かつユーザの介入なしに、渡されることが可能であることに留意されたい。加えて、本発明の諸実施形態に従ったイメージバッファは、第1のピクセルデータフォーマットと第2のピクセルデータフォーマットとの間で、自動的かつユーザの介入なしに変換されることが可能である。
図10を参照すると、本発明の実施形態に従い、デジタルイメージデータがエフェクトグラフの下部からエフェクトグラフの上部へと処理される、垂直に配向されたエフェクトグラフを利用して、デジタルイメージデータを処理するための方法1000を示す流れ図が示される。最初に、ブロック1010に示されるように、2つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを有する、垂直に配向されたエフェクトグラフが受け取られる。その後、または同時に、ブロック1012に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、ブロック1014に示されるように、2つの分岐パスのうちの第1に沿って、エフェクトグラフの第1の処理パスが下から上へと実行される。
処理中に、デジタルイメージデータの少なくとも一部が、エフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングされる。これがブロック1016に示される。その後、ブロック1018に示されるように、エフェクトグラフの第2の処理パスが実行され、この第2のパスはエフェクトオブジェクトに関連付けられたイメージバッファから延在する。
図11を参照すると、本発明の実施形態に従い、デジタルイメージデータがエフェクトグラフの下部からエフェクトグラフの上部へと処理される、垂直に配向されたエフェクトグラフを利用して、デジタルイメージデータを処理するための方法1100を示す流れ図が示される。最初に、ブロック1110に示されるように、垂直に配向されたエフェクトグラフが受け取られる。エフェクトグラフは第1および第2のエフェクトオブジェクトを含む。その後、または同時に、ブロック1112に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージが受け取られる。続いて、ブロック1114に示されるように、第1および第2のエフェクトオブジェクトを含むエフェクトグラフの少なくとも一部のうちの第1の処理パスが実行される。次に、ブロック1116に示されるように、デジタルイメージデータの少なくとも一部が、第1のエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングされる。
その後、ブロック1118に示されるように、第2のエフェクトオブジェクトに関連付けられた1つまたは複数のユーザ修正が検出される。次に、ブロック1120に示されるように、エフェクトグラフの第2の処理パスが実行され、この第2の処理パスは、エフェクトオブジェクトの出力に関連付けられたイメージバッファから延在する。
次に図12を見ると、本発明の実施形態に従い、エフェクトグラフを利用してデジタルイメージデータを処理するための方法1200を示す流れ図が示される。最初に、ブロック1210に示されるように、エフェクトグラフが受け取られる。エフェクトグラフは、それぞれが、デジタルイメージデータを格納するための、関連付けられたイメージバッファを有する、複数のエフェクトオブジェクトを含む。その後、または同時に、ブロック1212に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、ブロック1214に示されるように、エフェクトグラフの事前レンダリングパスが実行される。その後、ブロック1216に示されるように、エフェクトグラフを利用してデジタルイメージデータが処理される。
図13を参照すると、本発明の実施形態に従い、エフェクトグラフを利用してデジタルイメージデータを処理するための方法1300を示す流れ図が示される。最初に、ブロック1310に示されるように、エフェクトグラフが受け取られる。エフェクトグラフは、それぞれが、デジタルイメージデータを格納するための、関連付けられたイメージバッファを有する、複数のエフェクトオブジェクトを含む。その後、または同時に、ブロック1312に示されるように、エフェクトグラフを利用して処理されることになるデジタルイメージデータが受け取られる。次に、デジタルイメージデータを処理するために、エフェクトグラフに関連付けられたGPU内で十分なメモリが使用可能であるかどうかが判別される。これはブロック1314に示される。デジタルイメージデータを処理するために、エフェクトグラフに関連付けられたGPU内で十分なメモリが使用可能である場合、ブロック1316に示されるように、デジタルイメージデータはGPUを利用して処理される。しかしながら、デジタルイメージデータを処理するために、GPU内で十分なメモリが使用可能でないと判別された場合、デジタルイメージデータは、少なくとも一部が、エフェクトグラフに関連付けられたCPUを利用して処理される。これはブロック1318に示される。
次に図14を見ると、本発明の実施形態に従い、デジタルイメージデータを処理するためにエフェクトグラフを作成するための方法1400を示す流れ図が示される。最初に、ブロック1410に示されるように、1つまたは複数のエフェクトレイヤが提供され、各エフェクトレイヤは、複数の論理エフェクトを含む、それに関連付けられた論理エフェクトサブグラフを有する。その後、ブロック1412に示されるように、デジタルイメージデータの処理に関する入力が受け取られる。こうした入力は、単なる例として挙げると、レイヤに含まれるメインエフェクトのタイプ、レイヤインターフェースに適用される設定(たとえば100%に等しい不透明性)、ならびに、他の設定および特性を含むことができる。その後、ブロック1414に示されるように、受け取った入力が、デジタルイメージデータの処理時に、それぞれの論理エフェクトに対して有することになる影響が決定される。次に、ブロック1416に示されるように、決定された影響に従って、物理エフェクトサブグラフが作成される。その後、ブロック1418に示されるように、物理エフェクトサブグラフを利用してイメージをレンダリングすることができる。
図15を参照すると、本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図が示される。最初に、ブロック1510に示されるように、少なくとも1つのマスクエフェクトオブジェクトを有するエフェクトグラフが受け取られ、マスクエフェクトオブジェクトはエフェクトレイヤに関連付けられている。その後、または同時に、ブロック1512に示されるように、デジタルイメージデータが受け取られる。次に、ブロック1514に示されるように、基準を満たす受け取ったデジタルイメージデータの少なくとも一部の選択に関する入力が受け取られる。その後、ブロック1516に示されるように、少なくとも1つのマスクエフェクトオブジェクトが、受け取ったデジタルイメージデータに適用される。
一実施形態では、請求項15の方法が、図16に示されるような処理ステップをさらに含むことができる。最初に、ブロック1610に示されるように、デジタルイメージデータの修正に関する入力が受け取られる。その後、ブロック1612に示されるように、修正されたデジタルイメージデータを作成するために、受け取った入力に従ってデジタルイメージデータが修正される。次に、ブロック1614に示されるように、少なくとも1つのマスクエフェクトオブジェクトが、修正されたデジタルイメージデータに適用され、少なくとも1つのマスクエフェクトオブジェクトが基準を満たすように自動的に修正される。
図17を参照すると、本発明の実施形態に従って、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法1700を示す流れ図が示され、このデジタルイメージデータは、エフェクトグラフの下からその上へと処理される。最初に、ブロック1710に示されるように、垂直に配向されたエフェクトグラフが受け取られ、このエフェクトグラフは、その中の第1の垂直位置に配置された第1の変形エフェクトオブジェクトを有する。その後、ブロック1712に示されるように、第1の変形エフェクトオブジェクトが、第1の垂直位置よりもエフェクトグラフの下部に近い第2の垂直位置で、デジタルイメージデータに適用できるかどうかが判別される。第1の変形エフェクトオブジェクトが、第2の垂直位置でデジタルイメージデータに適用できないと判別された場合、ブロック1714に示されるように、第1の変形エフェクトオブジェクトは第1の垂直位置で適用される。
しかしながら、第1の変形エフェクトオブジェクトが第2の垂直位置でデジタルイメージデータに適用できると判別された場合、次に、第2の垂直位置に配置された変形エフェクトオブジェクトがあるかどうかが判別される。これがブロック1716に示される。第2の垂直位置に配置された変形エフェクトオブジェクトがない場合、ブロック1718に示されるように、第1の変形エフェクトオブジェクトが、第1の垂直位置ではなく第2の垂直位置で適用される。しかしながら、第2の垂直位置に配置された変形エフェクトオブジェクトがあると判別された場合、ブロック1720に示されるように、第1および第2の変形エフェクトオブジェクトが第2の垂直位置で累積的に適用される。
次に図18を見ると、本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法1800を示す流れ図が示される。最初に、ブロック1810に示されるように、初期変形値を有するデジタルイメージデータが受け取られる。その後、または同時に、ブロック1812に示されるように、少なくとも1つの変形エフェクトオブジェクトを有するエフェクトグラフが受け取られる。次に、ブロック1814に示されるように、受け取ったデジタルイメージデータが、変形エフェクトオブジェクトで、初期変形値から第1の変形済み変形値へと変形される。その後、ブロック1816に示されるように、デジタルイメージデータは、変形エフェクトオブジェクトで初期変形値から第2の変形済み変形値へと変形される。
上記に鑑み、本発明の実施形態は、デジタルイメージデータを編集するためのシステムを対象とする。このシステムは、それに関連付けられたGPUメモリを有するグラフィックス処理ユニット(GPU)と、GPUメモリを利用してデジタルイメージデータの少なくとも一部を非破壊的に編集するための編集構成要素とを含む。一実施形態では、編集構成要素は、GPUメモリ、ならびにGPUメモリおよびCPUメモリの組み合わせのうちの1つを利用して、受け取ったデジタルイメージデータの少なくとも一部を非破壊的に編集することができる。
さらにこのシステムは、エフェクトグラフを形成するためにまとめて連結された複数のエフェクトオブジェクトを受け取るためのエフェクトグラフ受け取り構成要素を含むことが可能であり、エフェクトグラフは、デジタルイメージデータを編集するために使用することができる。加えて、さらにシステムは、編集されることになるデジタルイメージデータを受け取るためのデータ受け取り構成要素を備えることができる。
他の実施形態では、本発明は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を対象とする。この方法は、複数のエフェクトオブジェクトを受け取るステップと、複数のエフェクトオブジェクトの少なくとも一部をまとめてエフェクトグラフ内に連結するステップとを含み、エフェクトグラフは、CPUメモリおよびGPUメモリのうちの少なくとも1つを利用して連結することができる。一実施形態では、受け取ったデジタルイメージデータを処理するステップは、デジタルイメージデータの少なくとも一部を非破壊的に処理するステップを含むことができる。さらにこの方法は、所望であれば、処理されることになるデジタルイメージデータを受け取るステップ、および/またはエフェクトグラフを利用して受け取ったデジタルイメージデータを処理するステップを含むことができる。さらにこの方法は、イメージバッファと関連して、デジタルイメージデータをCPUメモリおよびGPUメモリのうちの少なくとも1つに格納するステップを含むことができる。
追加の実施形態では、本発明はデジタルイメージデータを処理するためのシステムを対象とする。このシステムは、処理されることになるデジタルイメージデータを受け取るためのデータ受け取り構成要素と、受け取ったデジタルイメージデータの処理に利用されることになる、複数のエフェクトオブジェクトを含むエフェクトグラフを取得するための、エフェクトグラフ取得構成要素と、エフェクトグラフならびにCPUメモリおよびGPUメモリのうちの少なくとも1つを利用してデジタルイメージデータを処理するための処理構成要素と、を含む。一実施形態では、エフェクトグラフ取得構成要素は、エフェクトグラフを作成するために、複数のエフェクトオブジェクトの少なくとも一部をまとめて連結することができる。他の実施形態では、処理構成要素は、エフェクトグラフと、GPUメモリならびにGPUメモリおよびCPUメモリの組み合わせのうちの少なくとも1つを利用して、デジタルイメージデータの少なくとも一部を非破壊的に処理することができる。所望であれば、システムは、CPUメモリおよびGPUメモリのうちの少なくとも1つにデジタルイメージデータを格納するためのストレージ構成要素を、さらに含むことができる。
追加の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関し、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは2つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、エフェクトグラフの第1の処理パスを2つの分岐パスのうちの第1のパスに沿ってその下部から上部へと実行するステップと、デジタルイメージデータの少なくとも一部を処理中にエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングするステップと、を含む。
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を対象とし、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは、少なくとも第1のエフェクトオブジェクトおよび第2のエフェクトオブジェクトを含み、第2のエフェクトオブジェクトは第1のエフェクトオブジェクトよりもエフェクトグラフの上部に近い、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、第1および第2のエフェクトオブジェクトを含むエフェクトグラフの少なくとも一部の第1の処理パスを実行するステップと、デジタルイメージデータの少なくとも一部を第1のエフェクトオブジェクトの出力に関連付けられたイメージバッファ内にキャッシングするステップと、を含む。この方法は、第2のエフェクトオブジェクトに関連付けられたユーザ修正を検出するステップをさらに含むことができる。
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムを対象とし、デジタルイメージデータは、エフェクトグラフの下部からエフェクトグラフの上部へと処理されていく。このシステムは、垂直に配向されたエフェクトグラフを受け取るための第1の受け取り構成要素を含み、エフェクトグラフは2つの分岐パスが開始される分岐合流点に位置づけられたエフェクトオブジェクトを含む。このシステムは、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るための第2の受け取り構成要素と、エフェクトグラフの処理パスをその下部から上部へと実行するための第1の処理構成要素と、処理中にエフェクトオブジェクトの出力に関連付けられたバッファ内にデジタルイメージデータの少なくとも一部をキャッシングするためのキャッシング構成要素と、2つの分岐パスのうちの1つに関連付けられたエフェクトグラフの第2の処理パスを実行するための第2の処理構成要素とをさらに含み、第2の処理パスは、エフェクトオブジェクトの出力に関連付けられたイメージバッファから延在する。
他の実施形態では、本発明はエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータの処理に先立ち、エフェクトグラフの事前レンダリングパスを実行するステップとを含む。
さらに他の実施形態では、本発明はエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、受け取ったエフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータを処理するためにエフェクトグラフに関連付けられたグラフィックス処理ユニット(GPU)内で十分なメモリが使用可能であるかどうかを判別するステップと、を含む。
さらに、本発明の実施形態は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフは、それぞれがデジタルイメージデータを格納するためのそれに関連付けられたイメージバッファを有する複数のエフェクトオブジェクトを含む、受け取るステップと、エフェクトグラフを利用して処理されることになるデジタルイメージデータを受け取るステップと、デジタルイメージデータの処理中に、複数のエフェクトオブジェクトに関連付けられたイメージバッファのうちの1つまたは複数がキャッシュに入れられるかどうかを判別するステップと、を含む。
他の実施形態では、本発明は、デジタルイメージデータを処理するためのエフェクトグラフを作成するための方法に関する。この方法は、1つまたは複数のエフェクトレイヤを提供するステップであって、各エフェクトレイヤは複数の論理エフェクトを含むそれに関連付けられた論理エフェクトサブグラフを有する、提供するステップと、デジタルイメージデータの処理に関する入力を受け取るステップと、受け取った入力が、デジタルイメージデータの処理時に、それぞれの論理エフェクトに対して有することになる影響を決定するステップと、決定された影響に従って物理エフェクトサブグラフを作成するステップと、を含む。
他の実施形態では、本発明は、エフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、エフェクトグラフを受け取るステップであって、エフェクトグラフはエフェクトレイヤに関連付けられた少なくとも1つのマスクエフェクトオブジェクトを有する、受け取るステップと、デジタルイメージデータを受け取るステップと、基準を満たすデジタルイメージデータの少なくとも一部の選択に関する入力を受け取るステップと、少なくとも1つのマスクエフェクトオブジェクトを受け取ったデジタルイメージデータに適用するステップと、を含む。
他の実施形態では、本発明はデジタルイメージデータを処理するためのシステムに関する。このシステムは、1つまたは複数のエフェクトレイヤを提供するための提供構成要素であって、各エフェクトレイヤは3つまたはそれ以上の論理エフェクトを含むそれに関連付けられた論理エフェクトサブグラフを有する、提供構成要素と、デジタルイメージデータの処理時に、それぞれの論理エフェクトが有することになる影響に従って論理エフェクトサブグラフを物理エフェクトサブグラフに変形するための変形構成要素と、物理エフェクトサブグラフを利用してイメージをレンダリングするためのレンダリング構成要素と、を含む。システムは、所望であれば、抽出されたデジタルイメージデータを分析結果に変換するための変換構成要素、および/または分析結果をメインエフェクトに転送するための転送構成要素と、をさらに含む。
他の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関し、デジタルイメージデータはエフェクトグラフの下部からその上部へと処理されていく。この方法は、垂直に配向されたエフェクトグラフを受け取るステップであって、エフェクトグラフは第1の垂直位置に配置された第1の変形エフェクトオブジェクトを有する、受け取るステップと、第1の変形エフェクトオブジェクトが第2の垂直位置でデジタルイメージデータに適用可能であるかどうかを判別するステップであって、第2の垂直位置は第1の垂直位置よりもエフェクトグラフの下部に近い、判別するステップと、を含む。第1の変形エフェクトオブジェクトが第2の垂直位置でデジタルイメージデータに適用可能であると判別された場合、さらにこの方法は、第1の垂直位置ではなく第2の垂直位置で、第1の変形オブジェクトを適用するステップをさらに含むことができる。しかしながら、第1の変形エフェクトオブジェクトが第2の垂直位置でデジタルイメージデータに適用可能でないと判別された場合、この方法は、第1の垂直位置で第1の変形エフェクトオブジェクトを適用するステップをさらに含むことができる。
追加の実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムに関する。このシステムは、垂直に配向されたエフェクトグラフを受け取るための受け取り構成要素であって、エフェクトグラフは第1の垂直位置に配置された第1の変形エフェクトオブジェクトを有する、受け取り構成要素と、第1の変形エフェクトオブジェクトが第2の垂直位置でデジタルイメージデータに適用可能であるかどうかを判別するための判別構成要素であって、第2の垂直位置は第1の垂直位置よりもエフェクトグラフの下部に近い、判別構成要素と、第1の変形エフェクトオブジェクトが第2の垂直位置で適用可能であると判別された場合、第1の垂直位置ではなく第2の垂直位置で、第1の変形エフェクトオブジェクトを適用するための適用構成要素と、を含む。
さらなる実施形態では、本発明は、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法に関する。この方法は、初期変形値を有するデジタルイメージデータを受け取るステップと、エフェクトグラフを受け取るステップであって、エフェクトグラフは少なくとも1つの変形エフェクトオブジェクトを有する、受け取るステップと、少なくとも1つの変形エフェクトオブジェクトで受け取ったデジタルイメージデータを初期変形値から第1の変形済み変形値へ変形するステップと、少なくとも1つの変形エフェクトオブジェクトで受け取ったデジタルイメージデータを初期変形値から第2の変形済み変形値へ変形するステップと、を含む。
さらに本発明の諸実施形態は、本明細書に記載された方法を実行するためのコンピュータ実行可能命令を有する1つまたは複数のコンピュータ読み取り可能媒体、ならびにこの方法を実行するようにプログラミングされたコンピュータに関する。
以上、本発明について、すべての点で限定的ではなく例示的であることが意図される、特定の諸実施形態に関して説明してきた。当業者であれば、本発明の範囲を逸脱することなく本発明に関する代替の諸実施形態が明らかとなろう。
前述の内容から、システムおよび方法にとって明らかであり固有の他の利点と共に、本発明が前述のすべての目標および目的を達成するように首尾よく適合されたものであることがわかるであろう。ある種の特徴および副結合が有用であり、他の特徴および副結合を参照することなく採用可能であることを理解されよう。これは、特許請求の範囲によって企図され、その範囲内にある。
本発明の実施で使用するのに好適な例示的コンピューティング環境を示すブロック図である。 本発明の実施形態に従った、3つの入力および2つの出力を有する例示的混合エフェクトを示す概略図である。 本発明の実施形態に従った、入力イメージの領域をマスクによって指示されたとおりに選択的にぼかす、例示的エフェクトグラフを示す概略図である。 本発明の実施形態に従った、例示的エフェクトグラフを示す概略図である。 本発明の実施形態に従った、各エフェクトについてカウントが示された例示的エフェクトグラフを示す概略図である。 本発明の実施形態に従った、ぼかしエフェクトに関連付けられたマスクを示す例示的エフェクトグラフを示す概略図である。 本発明の実施形態に従った、エフェクトグラフで使用するための例示的レイヤを示す概略図である。 本発明の実施形態に従った、エフェクトグラフの例示的な完全に接続されたレイヤを示す概略図である。 本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、デジタルイメージデータを処理するためのエフェクトグラフを作成するための方法を示す流れ図である。 本発明の実施形態に従った、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、図15の方法の後に実行可能な追加の処理ステップを表す、エフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。 本発明の実施形態に従った、垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法を示す流れ図である。

Claims (20)

  1. 垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法であって、前記デジタルイメージデータは前記エフェクトグラフの下部から前記エフェクトグラフの上部へと処理されていくものであり、
    前記垂直に配向されたエフェクトグラフを受け取るステップであって、前記エフェクトグラフがその第1の垂直位置に配置された第1の変形エフェクトオブジェクトを有するものを、受け取るステップと、
    前記第1の変形エフェクトオブジェクトが第2の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するステップであって、前記第2の垂直位置が前記第1の垂直位置よりも前記エフェクトグラフの下部に近いものを、判別するステップと、
    を含む方法。
  2. 前記第1の変形エフェクトオブジェクトが前記第2の垂直位置で前記デジタルイメージデータに適用可能であると判別された場合、前記第1の垂直位置ではなく前記第2の垂直位置で前記第1の変形オブジェクトを適用するステップをさらに含む、請求項1に記載の方法。
  3. 前記第1の変形エフェクトオブジェクトが前記第2の垂直位置で前記デジタルイメージデータに適用可能でないと判別された場合、前記第1の垂直位置で前記第1の変形エフェクトオブジェクトを適用するステップをさらに含む、請求項1に記載の方法。
  4. 第2の変形エフェクトオブジェクトは前記第2の垂直位置に配置される、請求項1に記載の方法。
  5. 前記第1の変形エフェクトオブジェクトが前記第2の垂直位置で前記デジタルイメージデータに適用可能であると判別された場合、前記第1および第2の変形エフェクトオブジェクトを前記第2の垂直位置で累積的に適用するステップをさらに含む、請求項4に記載の方法。
  6. 前記エフェクトグラフは、前記第1の垂直位置よりも前記エフェクトグラフの下部に近く、前記第2の垂直位置よりも前記エフェクトグラフの上部に近い、エフェクトオブジェクトを含み、前記第1の変形エフェクトオブジェクトが前記第2の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するステップは、前記エフェクトオブジェクトが、前記第1の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップをさらに含む、請求項1に記載の方法。
  7. 前記エフェクトオブジェクトが、前記第1の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップが、前記エフェクトオブジェクトから前記入力を受け取るステップを含む、請求項6に記載の方法。
  8. 前記第1の変形エフェクトオブジェクトは少なくとも2つの部分を含み、前記エフェクトオブジェクトが、前記第1の変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップが、前記エフェクトオブジェクトが、前記少なくとも2つの部分のそれぞれに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を受け取るステップを含む、請求項6に記載の方法。
  9. 前記エフェクトオブジェクトが、前記少なくとも2つの部分のすべてより少ない部分に従って変形されたデジタルイメージデータを処理することが可能であることを示す入力を受け取った場合、前記エフェクトオブジェクトが、前記第1の垂直位置ではなく前記第2の垂直位置でそれに従って変形されたデジタルイメージデータを処理することができる、前記変形オブジェクトのそれらの部分のみを適用するステップをさらに含む、請求項8に記載の方法。
  10. 前記請求項1に記載の方法を実行するためのコンピュータ実行可能命令を有する、1つまたは複数のコンピュータ読み取り可能媒体。
  11. 前記請求項1に記載の方法を実行するようにプログラミングされたコンピュータ。
  12. 垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するためのシステムであって、
    前記垂直に配向されたエフェクトグラフを受け取るための受け取り構成要素であって、前記エフェクトグラフが第1の垂直位置に配置された第1の変形エフェクトオブジェクトを有する、受け取り構成要素と、
    前記第1の変形エフェクトオブジェクトが第2の垂直位置で前記デジタルイメージデータに適用可能であるかどうかを判別するための判別構成要素であって、前記第2の垂直位置が前記第1の垂直位置よりも前記エフェクトグラフの下部に近い、判別構成要素と、
    前記第1の変形エフェクトオブジェクトが前記第2の垂直位置で適用可能であると判別された場合、前記第1の垂直位置ではなく前記第2の垂直位置で、前記第1の変形エフェクトオブジェクトを適用するための適用構成要素と、
    を備えるシステム。
  13. 前記エフェクトグラフは、前記第1の垂直位置よりも前記エフェクトグラフの下部に近く、前記第2の垂直位置よりも前記エフェクトグラフの上部に近い、エフェクトオブジェクトを含み、前記システムは、前記エフェクトオブジェクトが前記変形エフェクトオブジェクトに従って変形されたデジタルイメージデータを処理することが可能であるかどうかに関する入力を、前記エフェクトオブジェクトから受け取るための入力受け取り構成要素をさらに備える、請求項12に記載のシステム。
  14. 第2の変形エフェクトオブジェクトは前記第2の垂直位置に配置され、前記システムは、前記第1および第2の変形エフェクトオブジェクトを累積するための累積構成要素をさらに備える、請求項12に記載のシステム。
  15. 垂直に配向されたエフェクトグラフを利用してデジタルイメージデータを処理するための方法であって、
    初期変形値を有するデジタルイメージデータを受け取るステップと、
    少なくとも1つの変形エフェクトオブジェクトを有する前記エフェクトグラフを受け取るステップと、
    前記少なくとも1つの変形エフェクトオブジェクトで受け取った前記デジタルイメージデータを、前記初期変形値から第1の変形済み変形値に変形するステップと、
    前記少なくとも1つの変形エフェクトオブジェクトで受け取った前記デジタルイメージデータを、前記初期変形値から第2の変形済み変形値に変形するステップと、
    を含む方法。
  16. 前記第1および第2の変形値を示す入力を受け取るステップをさらに含む、請求項15に記載の方法。
  17. 前記受け取ったデジタルイメージデータを前記初期変形値から第1の変形済み変形値に変形するステップに続いて、前記受け取ったデジタルイメージデータを再サンプリングするステップと、
    前記第1の変形値を有する修正済みデジタルイメージデータを作成するステップと、
    をさらに含む、請求項15に記載の方法。
  18. 前記受け取ったデジタルイメージデータを前記初期変形値から第2の変形済み変形値に変形するステップに続いて、前記受け取ったデジタルイメージデータを再サンプリングするステップと、
    前記第2の変形値を有する修正済みデジタルイメージデータを作成するステップと、
    をさらに含む、請求項15に記載の方法。
  19. 前記初期変形値と前記第1の変形値との差を少なくとも一部含む累積値として、前記第2の変形値を計算するステップをさらに含む、請求項15に記載の方法。
  20. 前記請求項15に記載の方法を実行するためのコンピュータ実行可能命令を有する、1つまたは複数のコンピュータ読み取り可能媒体。
JP2008518197A 2005-06-24 2006-06-07 デジタルイメージ処理におけるエフェクトグラフを介した変形の累積 Expired - Fee Related JP5254788B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/166,738 2005-06-24
US11/166,738 US7519233B2 (en) 2005-06-24 2005-06-24 Accumulating transforms through an effect graph in digital image processing
PCT/US2006/021996 WO2007001761A2 (en) 2005-06-24 2006-06-07 Accumulating transforms through an effect graph in digital image processing

Publications (3)

Publication Number Publication Date
JP2008544402A true JP2008544402A (ja) 2008-12-04
JP2008544402A5 JP2008544402A5 (ja) 2009-06-18
JP5254788B2 JP5254788B2 (ja) 2013-08-07

Family

ID=37595654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008518197A Expired - Fee Related JP5254788B2 (ja) 2005-06-24 2006-06-07 デジタルイメージ処理におけるエフェクトグラフを介した変形の累積

Country Status (6)

Country Link
US (1) US7519233B2 (ja)
EP (1) EP1897030A2 (ja)
JP (1) JP5254788B2 (ja)
KR (1) KR20080021637A (ja)
CN (1) CN101203864B (ja)
WO (1) WO2007001761A2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8026920B2 (en) * 2005-09-13 2011-09-27 Microsoft Corporation Extensible visual effects on active content in user interfaces
US7477777B2 (en) * 2005-10-28 2009-01-13 Aepx Animation, Inc. Automatic compositing of 3D objects in a still frame or series of frames
US7274377B2 (en) * 2005-10-28 2007-09-25 Seiko Epson Corporation Viewport panning feedback system
US8107758B2 (en) * 2008-04-16 2012-01-31 Microsoft Corporation Block based image processing
US8370759B2 (en) * 2008-09-29 2013-02-05 Ancestry.com Operations Inc Visualizing, creating and editing blending modes methods and systems
US8225074B2 (en) * 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
IT201600122898A1 (it) * 2016-12-02 2018-06-02 Ecole Polytechnique Fed Lausanne Epfl Metodi e apparati per codificare e decodificare immagini o flussi video digitali

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4498778A (en) * 1981-03-30 1985-02-12 Technical Arts Corporation High speed scanning method and apparatus
JPH08510851A (ja) 1993-03-25 1996-11-12 ライブ ピクチャー,インコーポレイテッド 画像処理方法及び装置
US5644364A (en) 1993-04-16 1997-07-01 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
US6357047B1 (en) 1997-06-30 2002-03-12 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
JP3359401B2 (ja) 1993-12-02 2002-12-24 富士通株式会社 図形編集装置およびその方法
US5777629A (en) 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5854634A (en) * 1995-12-26 1998-12-29 Imax Corporation Computer-assisted animation construction system using source poses within a pose transformation space
JPH10320573A (ja) * 1997-05-22 1998-12-04 Sega Enterp Ltd 画像処理装置及び画像処理方法
WO1999066449A1 (en) * 1998-06-19 1999-12-23 Equator Technologies, Inc. Decoding an encoded image having a first resolution directly into a decoded image having a second resolution
GB2340361B (en) 1998-07-31 2002-11-06 Sony Uk Ltd Digital video processing
US6487565B1 (en) 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6429860B1 (en) 1999-06-15 2002-08-06 Visicomp, Inc. Method and system for run-time visualization of the function and operation of a computer program
JP3286633B2 (ja) 1999-09-14 2002-05-27 株式会社ソニー・コンピュータエンタテインメント 画像作成方法、記憶媒体およびプログラム実行装置
JP3321570B2 (ja) 1999-09-14 2002-09-03 株式会社ソニー・コンピュータエンタテインメント 動画作成方法、記憶媒体およびプログラム実行装置
US7050955B1 (en) 1999-10-01 2006-05-23 Immersion Corporation System, method and data structure for simulated interaction with graphical objects
WO2002088877A2 (en) 2001-04-26 2002-11-07 Celcorp System and method for the automatic creation of a graphical representation of navigation paths generated by an intelligent planner
GB2392072B (en) 2002-08-14 2005-10-19 Autodesk Canada Inc Generating Image Data
GB0220138D0 (en) 2002-08-30 2002-10-09 Kaydara Inc Matte extraction using fragment processors
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations

Also Published As

Publication number Publication date
CN101203864B (zh) 2011-05-25
WO2007001761A2 (en) 2007-01-04
KR20080021637A (ko) 2008-03-07
US20070008337A1 (en) 2007-01-11
EP1897030A2 (en) 2008-03-12
WO2007001761A3 (en) 2007-11-01
CN101203864A (zh) 2008-06-18
JP5254788B2 (ja) 2013-08-07
US7519233B2 (en) 2009-04-14

Similar Documents

Publication Publication Date Title
US7554550B2 (en) Non-destructive processing of digital image data
US20060290705A1 (en) Performing a pre-rendering pass in digital image processing
US7295208B2 (en) Translating layers into effect graphs in digital image processing
US7619628B2 (en) Caching digital image data
JP5254788B2 (ja) デジタルイメージ処理におけるエフェクトグラフを介した変形の累積
US9978115B2 (en) Sprite graphics rendering system
US8379035B2 (en) Systems and methods for providing intermediate targets in a graphics system
US9245358B2 (en) Systems and methods for generating refined, high fidelity normal maps for 2D and 3D textures
US10198788B2 (en) Method and system of temporally asynchronous shading decoupled from rasterization
US8547378B2 (en) Time-based degradation of images using a GPU
US9355464B2 (en) Dynamic generation of texture atlases
JP2009295162A (ja) グラフィックス処理システム
US10719970B2 (en) Low latency firmware command selection using a directed acyclic graph
US10319068B2 (en) Texture not backed by real mapping
WO2010000126A1 (zh) 交互信息生成方法及系统
JPH10116346A (ja) テクスチャの高速ダウンロード方法
US10198856B2 (en) Method and system of anti-aliasing shading decoupled from rasterization
KR20190078086A (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US20130229422A1 (en) Conversion of Contiguous Interleaved Image Data for CPU Readback
US11010863B2 (en) Bindpoint emulation
US8823715B2 (en) Efficient writing of pixels to tiled planar pixel arrays
US20190295214A1 (en) Method and system of temporally asynchronous shading decoupled from rasterization
WO2022266851A1 (zh) 一种图形处理方法及装置
Sutherland et al. Chapter 14: 3D Graphics Programming
JP2006525558A (ja) ショット・レンダリングの方法と装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090423

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110728

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111021

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120330

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120516

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130418

R150 Certificate of patent or registration of utility model

Ref document number: 5254788

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160426

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees