(57)【要約】【課題】画像処理の条件に応じた最適なスレッドパラメータを効率良く取得することができ、全体的な画像処理の効率化を図ることのできる画像編集システムを提供する。【解決手段】編集装置は、与えられた画像処理の条件に対して自装置内のＧＰＵによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定し、画像処理の条件と、その最適なスレッドパラメータとを対応付けてネットワークを通じてデータベースに転送して蓄積させる。編集装置は、データベースからネットワークを通じて最適なスレッドパラメータを取得してグラフィックス・プロセッシング・ユニットに設定する。【選択図】図１１
2012003618.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置とデータベースとこれらを接続する伝送路とを具備し、
前記それぞれの情報処理装置は、
画像に対する処理を複数のスレッドに分割して実行可能なグラフィックス・プロセッシング・ユニットと、
与えられた画像処理の条件に対して前記グラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを探索して最適なスレッドパラメータとして判定する判定部と、
前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けて前記伝送路を通じて前記データベースに蓄積させる転送部と、
前記データベースから前記伝送路を通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定する設定部と
を具備する情報処理システム。
【請求項２】
請求項１に記載の情報処理システムであって、
前記画像処理の条件は、
前記グラフィックス・プロセッシング・ユニットの種類、
前記画像のサイズ、
前記画像の処理内容
を少なくとも含む情報処理システム
【請求項３】
請求項２に記載の情報処理システムであって、
前記設定部は、前記判定部により判定された前記最適なスレッドパラメータを前記グラフィックス・プロセッシング・ユニットに設定する
情報処理システム。
【請求項４】
請求項３に記載の情報処理システムであって、
前記判定部は、与えられた画像処理の条件に対して、前記グラフィックス・プロセッシング・ユニットに設定するスレッドパラメータを更新しながら、それぞれのスレッドパラメータ毎に処理に要する時間を測定し、最も処理に要する時間が短いスレッドパラメータを最適なスレッドパラメータとして判定する
情報処理システム。
【請求項５】
請求項４に記載の情報処理システムであって、
前記スレッドパラメータは、少なくとも、画像の二軸方向それぞれのスレッド数の組み合わせを含む
情報処理システム。
【請求項６】
請求項５に記載の情報処理システムであって、
前記判定部は、前記スレッドパラメータの上限を設定可能とされ、この設定された上限を超えない範囲で前記最適なスレッドパラメータを判定する
情報処理システム。
【請求項７】
情報処理装置内の判定部が、与えられた画像処理の条件に対して自装置内のグラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定し、
前記情報処理装置内の転送部が、前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けてネットワークを通じてデータベースに転送して蓄積させ、
前記情報処理装置内の設定部が、前記データベースから前記ネットワークを通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定する
情報処理方法。
【請求項８】
画像に対する処理を複数のスレッドに分割して実行可能なグラフィックス・プロセッシング・ユニットと、
与えられた画像処理の条件に対して前記グラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定する判定部と、
前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けて伝送路を通じてデータベースに転送して蓄積させる転送部と、
前記データベースから前記伝送路を通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定する設定部と
を具備する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＧＰＵ（Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）を用いて画像のエフェクト処理を行う情報処理システム、情報処理方法、情報処理装置に関する。
【背景技術】
【０００２】
近年、汎用のコンピュータ・ハードウェアの高性能化・高機能化は目覚しく、以前は専用のハードウェアでのみ実装可能であった画像処理が、汎用のコンピュータ・ハードウェアを利用して行うことが可能となってきた。汎用のコンピュータ・ハードウェアのうち特にＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）の高速化、主記憶として用いられるＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）の高速化は目覚しく、これにより大容量の画像データに対して複雑なエフェクト処理を実用的な時間で処理することが可能となった。
【０００３】
また、並列演算処理に特化して設計された演算処理装置であるＧＰＵ（Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）は、画像処理のさらなる高速化を可能とするものである。ＧＰＵによる並列演算処理は、複数の演算ユニットに対して同じ命令を発行することで、各演算ユニットがそれぞれ独立して同じ命令を実行するというメカニズムによって実現されるのに対し、ＣＰＵでは複数の演算ユニットにそれぞれ異なる命令が発行されることで、各演算ユニットがそれぞれ異なる命令を実行する。このため、ＧＰＵは画像処理のように一部の演算結果が他の部分に影響しないような処理で優れた性能を発揮し、ＣＰＵは逆に逐次型処理に適したものと言える。
【０００４】
また最近では、ＧＰＵを、画像処理のみならず、他の数値演算にも利用できるように設計されたＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ ｃｏｍｐｕｔｉｎｇ ｏｎ Ｇｒａｐｈｉｃｓ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔｓ）という技術分野も存在する。
【０００５】
特許文献１には、ネットワークに接続されている機器を検索し、各機器のリソース情報（スペック及び性能に関する情報など）その一覧情報を表示するシステムが開示されている。このシステムでは、各機器のリソース情報を検索する際に、ユーザより入力された検索条件（検索プロトコル、検索に用いる通信方式、検索範囲など）をもとに、機器の検索結果の表示処理をＧＰＵに実行させる場合にスレッド数を最適化することが記載されている。スレッドの数を最適化することで、リソース情報の表示処理により必要以上のスレッドが生成されてリソースを過剰に消費させたり、逆にスレッド数が少なすぎて表示処理の分担による処理速度の向上の目的を達成されなくなることを防止している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２２６０３８号公報（段落[０００５]）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
画像データに対するＧＰＵによるエフェクト等の処理においては、 スレッド数（スレッドパラメータ）の選定が、処理速度を決定づける重要な鍵となる。ところが、最適なスレッド数（スレッドパラメータ）は、ＧＰＵのスペック、画像サイズ、エフェクトの処理内容（エフェクトの種類、タップサイズ等のエフェクトパラメータ）などの画像処理の条件により異なる。コンピュータを用いた画像編集環境においては、出力したい画像サイズや、エフェクトの処理内容などの画像処理の条件をユーザが自由に設定できる。結果的に、画像処理の条件の種類の数は膨大となり、毎回ユーザが自分で画像処理の条件に対して最適なスレッドパラメータを見つけ出して設定することは非常に非効率である。
【０００８】
また、エフェクトの開発者が全ての画像処理の条件の組み合わせに対して予め最適なスレッドパラメータを決定しておくことも考えられるが、そのための手間と時間も膨大となることが予測されるので、やはり現実的な対応と言えない。
【０００９】
以上のような事情に鑑み、本発明の目的は、画像処理の条件に応じた最適なスレッドパラメータを効率良く取得することができ、全体的な画像処理の効率化を図ることのできる情報処理システム、情報処理方法、情報処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一形態に係る情報処理システムは、複数の情報処理装置とデータベースとこれらを接続する伝送路とを具備し、前記それぞれの情報処理装置は、画像に対する処理を複数のスレッドに分割して実行可能なグラフィックス・プロセッシング・ユニットと、与えられた画像処理の条件に対して前記グラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定する判定部と、前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けて前記伝送路を通じて前記データベースに蓄積させる転送部と、前記データベースから前記伝送路を通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定する設定部とを具備する。
【００１１】
本発明では、与えられた画像処理の条件に対する最適なスレッドパラメータを新規に得る場合には、判定部が、その画像処理の条件に対して自装置内のグラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを探索して最適なスレッドパラメータとして判定する。また、画像処理の条件と、判定部により判定された最適なスレッドパラメータとは互いに対応付けられて伝送路を通じてデータベースに転送されて蓄積される。したがって、情報処理装置は、与えられた画像処理の条件に対する最適なスレッドパラメータがデータベースに存在する場合には、伝送路を通じてデータベースより最適なスレッドパラメータを取得してグラフィックス・プロセッシング・ユニットに設定することもできる。これにより、本発明では、多種多様な画像処理の条件に対して最適なスレッドパラメータを効率的に得ることができ、画像編集を効率良く行うことができる。さらに、本発明によれば、１つのデータベースを複数台の情報処理装置で共用することで、最適なスレッドパラメータをより一層効率的に取得することができる。
【００１２】
画像処理の条件は、グラフィックス・プロセッシング・ユニットの種類、画像のサイズ、画像の処理内容を少なくとも含むものとすることで、将来的に、より高性能なグラフィックス・プロセッシング・ユニットの出現に伴う画像処理の条件の増加に対応できる。
【００１３】
設定部は、判定部により判定された最適なスレッドパラメータをグラフィックス・プロセッシング・ユニットに設定することで、新たな画像処理の条件に対する画像処理を直ちに実行させるようにしてもよい。
【００１４】
判定部は、与えられた画像処理の条件に対して、グラフィックス・プロセッシング・ユニットに設定するスレッドパラメータを更新しながら、それぞれのスレッドパラメータ毎に処理に要する時間を測定し、最も処理に要する時間が短いスレッドパラメータを最適なスレッドパラメータとして判定するようにしてもよい。これにより、最も処理に要する時間が短いスレッドパラメータを確実に判定することができる。
【００１５】
判定部は、スレッドパラメータの上限を設定可能とされ、この設定された上限を超えない範囲で最適なスレッドパラメータを判定するようにしてもよい。これにより、グラフィックス・プロセッシング・ユニットにスレッドパラメータの上限が設けられている場合に対応することができる。
【００１６】
本発明の他の形態に係る情報処理方法は、情報処理装置内の判定部が、与えられた画像処理の条件に対して自装置内のグラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定し、前記情報処理装置内の転送部が、前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けてネットワークを通じてデータベースに転送して蓄積させ、前記情報処理装置内の設定部が、前記データベースから前記ネットワークを通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定するというものである。
【００１７】
本発明の他の形態に係る情報処理装置は、画像に対する処理を複数のスレッドに分割して実行可能なグラフィックス・プロセッシング・ユニットと、与えられた画像処理の条件に対して前記グラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを最適なスレッドパラメータとして判定する判定部と、前記画像処理の条件と前記判定部により判定された前記最適なスレッドパラメータとを対応付けて伝送路を通じてデータベースに転送して蓄積させる転送部と、前記データベースから前記伝送路を通じて前記最適なスレッドパラメータを取得して前記グラフィックス・プロセッシング・ユニットに設定する設定部とを具備するものである。
【発明の効果】
【００１８】
以上説明したように、本発明によれば、画像処理の条件に応じた最適なスレッドパラメータを効率良く取得することができ、全体的な画像処理の効率化を図ることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係るコンピュータを用いた画像編集システムの構成を示す図である。
【図２】図１の編集装置のハードウェアの構成を示すブロック図である。
【図３】エフェクト処理の流れを示すフローチャートである。
【図４】図１の編集装置における編集環境画面の例を示す図である。
【図５】デフォーカスのパラメータ設定用の編集環境画面の例を示す図である。
【図６】図１の編集装置においてＧＰＵを用いて画像データにエフェクトをかけるときの画像処理の流れを示すフローチャートである。
【図７】図１の編集装置による画像処理の機能を模式的に表現したブロック図である。
【図８】スレッドパラメータの規定に関する概念図である。
【図９】同じくスレッドパラメータの規定に関する概念図である。
【図１０】スレッドパラメータについて説明するための図である。
【図１１】図１の編集装置による最適なスレッド数の探索手順を示すフローチャートである。
【図１２】変形例１の編集装置による最適スレッドパラメータの探索手順のフローチャートである。
【発明を実施するための形態】
【００２０】
以下、図面を参照しながら、本発明の実施形態を説明する。
＜第１の実施形態＞
図１は、本発明の一実施形態に係る情報処理システムとしての画像編集システムの構成を示す図である。
【００２１】
［画像編集システム］
同図に示すように、この画像編集システム１００は、情報処理装置である複数の編集装置１０（１０−１〜１０−５）と、データベース２０と、これらを接続する伝送路であるネットワーク３０とで構成される。
【００２２】
データベース２０は、大量の画像データなどを蓄積し、編集装置１０からの画像選択要求に対して該当する画像データをネットワーク３０を通じてその編集装置１０にダウンロードする。また、データベース２０には、編集対象としての画像データの他、その画像データを縮小してサムネイル化した縮小画像データを編集装置１０からの要求に応じてダウンロードすることが可能である。さらに、データベース２０には、編集装置１０（１０−１〜１０−５）によって得られた、画像処理の条件と最適なスレッドパラメータとの組み合わせが蓄積される。
【００２３】
編集装置１０（１０−１〜１０−５）は、それぞれ個別にネットワーク３０を通じてデータベース２０からダウンロードされた画像データに対して編集者からの操作入力をもとにエフェクトなどの処理を行うことのできる装置である。編集装置１０は、より具体的には、コンピュータ・ハードウェアを有する情報処理装置である。
【００２４】
［編集装置１０の構成］
図２は編集装置１０のハードウェアの構成を示すブロック図である。
同図に示すように、編集装置１０は、ＣＰＵ部１１、ＧＰＵ部１２、記憶装置１３、表示インターフェース１４、操作インターフェース１５、ネットワークインターフェース１６、これらを相互に接続するバス１７を備える。
【００２５】
ＣＰＵ部１１は、ＣＰＵ１１１とメモリ１１２（以下「ＣＰＵメモリ」と呼ぶ。）を有し、ＣＰＵメモリ１１２に格納されたプログラムを実行させることによってＣＰＵメモリ１１２上で各種の演算処理に関する命令を実行する。ＣＰＵ部１１は、操作インターフェース１５に接続された操作入力装置１８を通じてユーザより入力された指令を解釈してプログラムの動作に反映させる。例えば、ＣＰＵ部１１は、データベース２０に蓄積された画像データをユーザからの指令などをもとにダウンロードし、記憶装置１３に保存するように制御を行ったり、記憶装置１３に記憶された画像データを読み出してＣＰＵメモリ１１２に取り込み、この画像データに対してエフェクト等の処理を行ったりすることができる。ＣＰＵメモリ１１２に保持された画像データは表示インターフェース１４に供給され、ここで描画処理されることによって可視的な描画データとされ、必要に応じて後述するＧＰＵ部１２によって処理された画像の描画データとマージされて表示装置１９に出力される。さらにＣＰＵ部１１は、ＣＰＵメモリ１１２に保持された処理後の画像データを、必要に応じて、ＧＰＵ部１２によって処理された画像データとマージして記憶装置１３に書き戻したり、記憶装置１３に書き戻された編集後の画像データをネットワーク３０を通じてデータベース２０に転送したりするように制御を行うことが可能である。
【００２６】
ＧＰＵ部１２は、ＧＰＵ１２１とメモリ１２２（以下「ＧＰＵメモリ１２２」と呼ぶ。）とを有し、ＧＰＵメモリ１２２に格納されたプログラムを実行させることによってＧＰＵメモリ１２２上でエフェクトなどの画像処理を並列演算処理により実行することが可能である。ＧＰＵメモリ１２２に保持された画像データは表示インターフェース１４に供給され、ここで描画処理によって可視的な描画データとされ、必要に応じて、上記のＧＰＵ部１２によって処理された画像の描画データとマージされて表示装置１９に出力される。
【００２７】
表示インターフェース１４は、表示装置１９とのインターフェースであり、ＣＰＵ部１１およびＧＰＵ部１２より供給された画像データの描画処理を行い、必要に応じて、ＣＰＵ部１１により処理された画像の描画データとＧＰＵ部１２により処理された画像の描画データをマージして１つの画像の描画データとして表示装置１９に供給する。この表示インターフェース１４の処理は、例えば、上記のＧＰＵ１２１もしくは別途設けられたＧＰＵ（図示せず）により実現される。
【００２８】
操作インターフェース１５は、操作入力装置１８とのインターフェースであり、操作入力装置１８から入力されたユーザからのデータおよび指令をＣＰＵ部１１に供給する処理などを行う。
【００２９】
記憶装置１３は、例えば、データベース２０から取得した編集前の画像データおよび編集後の画像データの保存、編集処理をＣＰＵ部１１およびＧＰＵ部１２に実行させるための各種のプログラムなどを蓄積する。
【００３０】
ネットワークインターフェース１６は、ネットワーク３０との接続をとるためのインターフェースである。
【００３１】
［エフェクト処理について］
図２の編集装置１０において、動画像の一部である１つのシーンを構成する１以上のフレーム画像にエフェクト（特殊効果）をかけるときの処理の流れを説明する。
図３は、このエフェクト処理の流れを示すフローチャートである。
【００３２】
まず、編集装置１０のＣＰＵ１１１は、ユーザからの指示に従ってデータベース２０より動画像におけるシーン選択のための情報をダウンロードし（ステップＳ１０１）、ダウンロードされたシーン選択のための情報を表示装置１９に表示する（ステップＳ１０２）。ここで、シーン選択のための情報とは、例えば、そのシーンを代表するフレーム画像の解像度を下げた画像データ（サムネイル画像）などである。
【００３３】
次に、表示装置１９に表示されたシーン選択のための情報の中から、マウスなどの操作入力装置１８を使ってエフェクトをかけたいシーンがユーザによって選択されると（ステップＳ１０３）、編集装置１０のＣＰＵ１１１は、選択されたシーンに対応する１以上のフレーム画像のダウンロードをデータベース２０に要求して当該１以上のフレーム画像を取得し、記憶装置１３に保存する（ステップＳ１０４）。
【００３４】
次に、操作入力装置１８を使ってユーザにより画像の出力条件が設定される（ステップＳ１０５）。出力条件とは、動画像の出力フォーマットを設定する条件であり、例えば、拡大／縮小率、フレームレートなどである。ＣＰＵ１１１は、記憶装置１３から当該選択シーンに対応する各フレーム画像をＣＰＵメモリ１１２に読み出し、各フレーム画像に対して上記の出力条件に従って拡大／縮小、フレーム間補間などによるフレームレートの変更などを行う。この出力条件をもとに加工された各フレーム画像は、後述する編集環境画面の出力画像表示ウィンドウとトラック表示ウィンドウに表示される（ステップＳ１０６）。
【００３５】
次に、操作入力装置１８を使ってユーザよりエフェクト開始の指示が入力される（ステップＳ１０７）。ＣＰＵ１１１はエフェクト開始の指示を受けると、編集装置１０に予め用意されたエフェクトプログラムのリストを表示装置１９に表示する（ステップＳ１０８）。編集装置１０には複数のエフェクトプログラムが予め用意されている。その中でユーザによって１つのエフェクトが選択されると（ステップＳ１０９）、その選択されたエフェクトに対応するエフェクトプログラムが実行され、表示中のフレーム画像に対するエフェクト処理が実行される。
【００３６】
図４は編集装置１０の編集環境画面４０の例を示す図である。同図に示すように、この編集環境画面４０には、出力画像表示ウィンドウ４１、トラック表示ウィンドウ４２、およびエフェクト候補リスト４３などが表示される。出力画像表示ウィンドウ４１は、出力条件に従って拡大／縮小されたフレーム画像がエフェクトの対象画像として表示されたり、エフェクトの結果画像が表示されるウィンドウである。トラック表示ウィンドウ４２は、ユーザにより選択されたシーンの一部に対応する連続する複数のフレーム画像を同時に表示できるウィンドウである。このトラック表示ウィンドウ４２において水平方向は時間の向きとなっている。時間の位置を選択するスライダー（図示せず）が操作入力装置１８を使ってユーザによって右左水平方向に操作されることで、トラック表示ウィンドウ４２に同時に表示される複数のフレーム画像の時間位置が移動される。この切り替えを通じてユーザは選択したシーンを構成するすべてのフレーム画像を見ることができる。また、ユーザは操作入力装置１８を使って、トラック表示ウィンドウ４２に表示された複数のフレーム画像の中から、出力画像表示ウィンドウ４１に表示させる１つのフレーム画像を選択することができる。エフェクト候補リスト４３は、出力画像表示ウィンドウ４１に表示されたフレーム画像にかけることのできるエフェクトの種類のリストである。ユーザは出力画像表示ウィンドウ４１に表示されたフレーム画像にかけたいエフェクトの種類をマウスなどの操作入力装置１８を使って選択することができる。
【００３７】
エフェクト候補リスト４３で１つのエフェクトが選択されると、ＣＰＵ１１１は、その選択されたエフェクトに関する各種のパラメータを設定するためのエフェクトＧＵＩウィンドウを表示する（ステップＳ１１０）。ユーザはマウス等の操作入力装置１８を用いて、エフェクトＧＵＩウィンドウにおいて項目毎のパラメータの調整を行うことができる（ステップＳ１１１）。
【００３８】
例として、エフェクトの種類としてデフォーカスが選択された場合を説明する。デフォーカスが選択されると、図５に示すように、編集環境画面４０にデフォーカスのパラメータを設定するためのエフェクトＧＵＩウィンドウ４６が表示される。このデフォーカス用のエフェクトＧＵＩウィンドウ４６においてユーザはマウス等の操作入力装置１８を用いて、ボタン操作によるアイリスの形状の選択、スライダー操作による半径、角度、曲率等のパラメータの調整を行うことができる。
【００３９】
ＣＰＵ１１１は、エフェクトＧＵＩウィンドウ４６においてユーザにより選択されたパラメータに従って、出力画像表示ウィンドウ４１に表示されたフレーム画像に対するエフェクト処理を実行する。このときエフェクト処理は、個々のパラメータの選択操作に対してリアルタイムに実行されて出力画像表示ウィンドウ４１に表示されたフレーム画像に反映されることで、項目毎に最適なパラメータを効率的に選択することができる。
【００４０】
パラメータ調整が終了すると（ステップＳ１１２のＹ）、ユーザは選択されたシーンを構成するすべてのフレーム画像に対して、パラメータの調整結果を含むエフェクトを反映させる指示を操作入力装置１８を用いてＣＰＵ１１１に入力する（ステップＳ１１３）。この指示は編集環境画面４０に設けられた処理出力ボタンをクリックすることなどによって行われる。処理出力ボタンには、図４、図５に示すように、再生ボタン４４と記録ボタン４５とがある。再生ボタン４４がユーザによって操作されると、ユーザによって選択されたフレーム画像にかけられたパラメータの調整結果を含むエフェクトが、シーンを構成する他のフレーム画像に対しても同様にかけられて、そのシーンに対応する動画が出力画像表示ウィンドウ４１に出力される。ユーザは、この出力画像表示ウィンドウ４１に表示された動画をみてエフェクトの結果をシーン全体を通して確認することができる。また、記録ボタン４５がユーザによって操作されたときは、ユーザによって選択されたフレーム画像にかけられたパラメータの調整結果を含むエフェクトが、シーンを構成する他のフレーム画像に対しても同様にかけられて記憶装置１３に書き込まれる（ステップＳ１１４）。
【００４１】
なお、ここではデフォーカスのエフェクト処理について説明したが、その他のエフェクト処理についても同様である。
【００４２】
次に、ＧＰＵ１２１を用いて画像データにエフェクトをかけるときの処理について説明する。
図6は、このＧＰＵ１２１を用いて画像データにエフェクトをかけるときの画像処理の流れを示すフローチャートである。
まず、ユーザによってエフェクトが選択される（ステップＳ２０１）。この操作は、前述したように、図４に示すエフェクト候補リスト４３の中からのエフェクトの選択によって行われる。エフェクトが選択されると、ＣＰＵ１１１が、その選択されたエフェクトに対応するエフェクトプログラムを起動する（ステップＳ２０２）。エフェクトプログラムの起動後、ＣＰＵ１１１は以下の初期化処理を行う。
【００４３】
ＣＰＵ１１１は、初期化として、ユーザにより設定された画像データの出力条件から１フレームの水平垂直画像サイズを判断する（ステップＳ２０３）。次に、ＣＰＵ１１１は、その１フレームの水平垂直画像サイズに対し、ＧＰＵメモリ１２２の確保をＧＰＵ１２１に指示する（ステップＳ２０４）。続いて、ＣＰＵ１１１はＧＰＵ部１２で処理を実行させるスレッド数を規定する（ステップＳ２０５）。このスレッド数の規定の作業は後述する。
ここまでが初期化処理である。続いて、画像処理に移行する。
【００４４】
図７は編集装置１０による画像処理の機能を模式的に表現したブロック図である。同図に示すように、まず、初期化後の処理として、記憶装置１３からＣＰＵメモリ１１２への画像データの読み出しが行われる（ステップＳ２０６）。ここでＣＰＵメモリ１１２へ読み出される画像データとは、動画像データの中からＣＰＵ部１１により指定されたフレーム番号の画像データ（フレーム画像）である。ＣＰＵ部１１により指定されるフレーム番号とは、図5のトラック表示ウィンドウ４２でユーザにより選択されたフレーム画像のフレーム番号である。また、図５の編集環境画面４０においてユーザにより再生ボタン４４や記録ボタン４５が操作されてパラメータの調整結果を含むエフェクトが全てのフレーム画像に対してかけられる場合には、シーンの先頭のフレーム画像から最後のフレーム画像までのフレーム番号が順次指定されることになる。
【００４５】
次に、ＣＰＵメモリ１１２にロードされた画像データを、上記の初期化で確保したＧＰＵメモリ１２２へ転送する（ステップＳ２０７）。この後、ＧＰＵ１２１はＧＰＵメモリ１２２から画像データを読み出しつつ、起動されるエフェクトプログラムに従って画像データのエフェクト処理を実行し（ステップＳ２０８）、その結果をＧＰＵメモリ１２２に書き戻す。ＧＰＵ１２１はエフェクト処理が完了すると、ＧＰＵメモリ１２２からＧＰＵメモリ１２２へ画像データを戻す（ステップＳ２０９）。
【００４６】
ここで、ＣＰＵ１１１はユーザによる記録ボタン４５の操作の有無を検知する（ステップＳ２１０）。記録ボタン４５がユーザによって操作されなければ（ステップＳ２１０のＮ）、ＣＰＵ１１１はＣＰＵメモリ１１２からエフェクトがかけられた画像データを表示インターフェース１４に供給する。表示インターフェース１４はＣＰＵメモリ１１２から供給された画像データの描画処理を行い、描画データを表示装置１９に供給する。これにより、図５の出力画像表示ウィンドウ４１に画像が表示される（ステップＳ２１１）。このステップＳ２１１の動作は、ユーザによる再生ボタン４４の操作が発生した場合も同様である。但し、ユーザによって再生ボタン４４が操作された場合には、シーンに含まれるすべてのフレーム画像に対して順次エフェクトをかけて、その結果を表示することを繰り返すために、ステップＳ２１３からステップＳ２０６に戻って、記憶装置１３から次のエフェクト対象の画像データをＣＰＵメモリ１１２に読み出す処理が繰り返される。
【００４７】
また、ＣＰＵ１１１は、ユーザにより記録ボタン４５が操作されたことを検知した場合には（ステップＳ２１０のＹ）、ＣＰＵメモリ１１２からエフェクトがかけられた画像データを記憶装置１３に書き戻す（ステップＳ２１２）。また、ユーザにより記録ボタン４５が操作された場合には、シーンに含まれるすべてのフレーム画像に対して順次エフェクトをかけて、その結果を記憶装置１３に記録することを繰り返すために、ステップＳ２１３からステップＳ２０６に戻って、記憶装置１３から次のエフェクト対象の画像データをＣＰＵメモリ１１２に読み出す処理が繰り返される。
【００４８】
ユーザによる記録ボタン４５の操作、再生ボタン４４の操作が行われない場合も同様にステップＳ２１１に移行して、エフェクトがかけられた画像データが表示される。この場合、ＣＰＵ１１１は、画像データを表示インターフェース１４に供給後、次の指示の待ち状態になる。この待ち状態で、例えば、ユーザによって図5のエフェクトＧＵＩウィンドウ４６が閉じられる操作など、エフェクト操作の終了の指示がユーザより入力された場合（ステップＳ２１４のＹ）、ＣＰＵ１１１はＧＰＵメモリ１２２を解放して（ステップＳ２１５）、エフェクト処理を終了する。
【００４９】
次に、ＧＰＵ部１２のスレッドパラメータを規定する手順を説明する。
ＧＰＧＰＵの開発においては、米ＮＶＩＤＩＡ社の開発環境ＣＵＤＡ（登録商標）が提供されている。ＣＵＤＡ（登録商標）におけるプログラミングでは、実際の処理をスレッドに分割するパラメータとして、"Ｇｌｉｄ"、"Ｂｌｏｃｋ"、"Ｔｈｒｅａｄ"が存在する。図8、図9にその概念図を示す。例えば、全画面に対し、フィルタ係数をかける畳み込み演算を行う画像処理を例にとると、フィルタ係数との積和演算を行う処理をばらまく画素に相当するパラメータが"Ｔｈｒｅａｄ"、その"Ｔｈｒｅａｄ"をひとまとまりにし、画像の矩形領域に相当するものが"Ｂｌｏｃｋ"。さらに"Ｂｌｏｃｋ"をまとめて、画面全体を相当するものが"Ｇｌｉｄ"である。ここで"Ｇｌｉｄ"が画面全体に相当するとして、"Ｂｌｏｃｋ"と"Ｔｈｒｅａｄ"の配置は、図8に示すように一次元に設定したり、図9に示すように二次元に設定したり、開発者が自由に設定できる。例えば水平方向の"Ｔｈｒｅａｄ"の数をＴｈｒｅａｄＸ、垂直方向の"Ｔｈｒｅａｄ"の数をＴｈｒｅａｄＹ、画像の水平方向の画素数を"Ｗｉｄｔｈ"、画像の垂直方向の画素数を"Ｈｅｉｇｈｔ"とすると、水平方向の"Ｂｌｏｃｋ"の数であるＢｌｏｃｋＸ、垂直方向の"Ｂｌｏｃｋ"の数であるＢｌｏｃｋＹはそれぞれ式（１）、式（２）で規定される。
ＢｌｏｃｋＸ＝Ｗｉｄｔｈ／ＴｈｒｅａｄＸ      （１）
ＢｌｏｃｋＹ＝Ｈｅｉｇｈｔ／ＴｈｒｅａｄＹ      （２）
【００５０】
本実施形態では、例えば、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹ、ＢｌｏｃｋＸ、ＢｌｏｃｋＹがスレッドパラメータとしてＧＰＵ部１２に与えられる場合を想定している。
ＧＰＵの種類によっては、ＴｈｒｅａｄＸとＴｈｒｅａｄＹがスレッドパラメータとして与えられればよい場合もある。
【００５１】
任意のスレッドパラメータに対する処理全体のスケジューリングアルゴリズムはＣＵＤＡ（登録商標）に依存し、詳細は不明だが、これらのスレッドパラメータの与え方によって、画像処理の速度が変わることが分かっている。また、最適なスレッドパラメータは、対象となる画像のサイズ、"Ｔｈｒｅａｄ"あたりの処理内容（エフェクトの種類、エフェクトパラメータ）、処理を実行させるＧＰＵ１２１の種類といった条件によって異なる。例えば、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹ、ＢｌｏｃｋＸ、ＢｌｏｃｋＹといったスレッドパラメータを調整することによって、動画像にエフェクトを追加した結果をリアルタイム描画できたり、できなかったりするケースがある。
【００５２】
本実施形態は、画像処理の条件に対応する最適なスレッドパラメータを効率的に規定することのできる仕組みを提供する。すなわち、編集装置１０（１０−１〜１０−５）は、画像処理の条件に対してＧＰＵ１２１によって最速で処理することのできるスレッド数を探索し、これを最適なスレッドパラメータとして判定する。ここで、画像処理の条件とは、より具体的には、例えば図１０に示したように、ＧＰＵの種類、画像サイズ、エフェクトの処理内容（エフェクトの種類、エフェクトパラメータ）を少なくとも含むものである。ＧＰＵの種類はＧＰＵのスペック情報であってもよい。
【００５３】
編集装置１０（１０−１〜１０−５）は、画像処理の条件をＩＤ、その画像処理の条件に対して最適なスレッドパラメータをデータとして、これらＩＤとデータとを互いに対応付けて図１のデータベース２０に転送して蓄積させる。そして、データベース２０に蓄積された最適なスレッドパラメータを各編集装置１０（１０−１〜１０−５）で再利用する。データベース２０に蓄積された最適なスレッドパラメータを再利用するために、編集装置１０（１０−１〜１０−５）は、画像処理の条件であるＩＤを含む問い合せをデータベース２０に送信する。データベース２０はこの問い合せに含まれるＩＤに対応する最適なスレッドパラメータのデータを検索し、これを問い合せ元である編集装置１０に応答する。以下に、その詳細を説明する。
【００５４】
まず、編集装置１０において、画像処理の条件に対応する最適なスレッドパラメータを探索する手順を説明する。
図１１は、その手順を示すフローチャートを示す。
【００５５】
まず、編集装置１０のＣＰＵ１１１は、これから実行する画像処理の条件である、ＧＰＵ１２１の種類、画像サイズ、エフェクトの処理内容（エフェクトの種類、エフェクトパラメータ）の組み合わせをＩＤとし、それに対して最適なスレッドパラメータのデータが存在するかどうかをネットワーク３０を通じてデータベース２０に問い合わせる（ステップＳ３０１）。
【００５６】
ＣＰＵ１１１は、データベース２０からの応答をもとに、データベース２０に当該画像処理の条件であるＩＤに対して最適なスレッドパラメータのデータが存在するかどうかを判断する（ステップＳ３０２）。ＩＤに対する最適なスレッドパラメータのデータが存在すれば（ステップＳ３０２のＹ）、ＣＰＵ１１１（設定部）は、その最適なスレッドパラメータのデータをデータベース２０からダウンロードして（ステップＳ３１２）、ＧＰＵ部１２に設定して画像データのエフェクト処理を実行させる（ステップＳ３１１）。データベース２０にこれから実行する画像処理の条件であるＩＤに対する最適なスレッドパラメータが存在しない場合（ステップＳ３０２のＮ）、ＣＰＵ１１１（判定部）は、次のようにして探索による最適なスレッドパラメータの判定を行う。
【００５７】
この判定は、
１．探索対象のスレッドパラメータの設定または更新（ステップＳ３０３）、
２．処理時間の計測の開始（ステップＳ３０４）、
３．ＧＰＵ１２１による処理の実行（ステップＳ３０５）、
４．処理時間の計測の終了（ステップＳ３０６）、
５．処理時間が最短かどうかの判定（ステップＳ３０７）
６．処理時間が最短であるスレッドパラメータの保持（ステップＳ３０８）が、探索対象の全スレッドパラメータが終了するまで繰り返される（ステップＳ３０９）、ことで行われる。
これによりＣＰＵ１１１（判定部）は、探索対象の全スレッドパラメータの中で処理時間が最短である（最速で処理することのできる）スレッドパラメータを最適なスレッドパラメータとして判定する。
【００５８】
ここで、スレッドパラメータには、例えば、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹ、ＢｌｏｃｋＸ、ＢｌｏｃｋＹがある。ＢｌｏｃｋＸ、ＢｌｏｃｋＹは、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹ、Ｗｉｄｔｈ、Ｈｅｉｇｈｔが与えられることで上記の式（１）、式（２）によって一意に決まる。したがって、ＣＰＵ１１１は、初回時にＴｈｒｅａｄＸ、ＴｈｒｅａｄＹとしてそれぞれ初期値"１"をセットして画像の処理に要する時間を計測し、以後は１サイクル毎にＴｈｒｅａｄＸとＴｈｒｅａｄＹの値の組み合わせを更新しながら、その都度、画像の処理に要する時間を計測する。
【００５９】
なお、ここでのＧＰＵ１２１による処理の実行の目的は処理時間を計測することにあるので、ＧＰＵメモリ１２２は使用されるものの、ここに実際の画像データを入れる必要はない。すなわち、実際の画像処理時のようにＣＰＵメモリ１１２からＧＰＵメモリ１２２へ画像データを転送する必要はない。
【００６０】
この後、ＣＰＵ１１１（転送部）は、画像処理の条件である、ＧＰＵ１２１の種類、画像データのサイズ、エフェクトの処理内容（エフェクトの種類、エフェクトパラメータ）を組み合わせたＩＤを生成し、このＩＤと最適なスレッドパラメータのデータとの組み合わせをネットワーク３０を通じてデータベース２０に転送し、蓄積させる（ステップＳ３１０）。以後、その最適なスレッドパラメータは、画像編集システム１００の各編集装置１０（１０−１〜１０−５）からの問い合せに対する応答の候補として利用できることとなる。
【００６１】
そしてＣＰＵ１１１（設定部）は、判定した最適なスレッドパラメータをＧＰＵ部１２に出力してＧＰＵ１２１に実際の画像データの処理を実行させる（ステップＳ３１１）。
【００６２】
上記の最適スレッドパラメータの探索は図７のエフェクト起動後の初期化の段階で行われ、フレーム毎に行われる必要はない。また、エフェクト処理時間は1フレームあたり数ｍｓから数十ｍｓ程度であるため、仮に１００回の探索が行われても、数秒程度の時間を要するのにすぎない。したがって、最適スレッドパラメータの探索によるユーザの待ち時間が問題となる可能性は低い。
【００６３】
以上説明したように本実施形態の編集装置１０では、与えられた画像処理の条件に対する最適なスレッドパラメータを新規に得る場合に、ＣＰＵ１１１が、その画像処理の条件に対して自装置内のグラフィックス・プロセッシング・ユニットによって最速で処理することのできるスレッドパラメータを探索して最適なスレッドパラメータとして判定する。また、本実施形態の編集装置１０では、データベース２０に画像処理の条件に対する最適なスレッドパラメータが存在する場合、ＣＰＵ１１１が、伝送路３０を通じてデータベース２０より最適なスレッドパラメータを取得してＧＰＵ部１２に与えることもできる。したがって、過去に使用されたことのある画像処理の条件で再度ＧＰＵ１２１によるエフェクト処理を行う場合には、データベース２０に蓄積されたスレッドパラメータを再利用することができる。これにより、多種多様な画像処理の条件に対して最適なスレッドパラメータを効率的に得ることができ、画像編集を効率良く行うことができる。
【００６４】
また、本実施形態の編集装置１０では、１つのデータベース２０を複数台の編集装置１０（１０−１〜１０−５）で共用することで、最適なスレッドパラメータをより一層効率的に取得することができる。
さらに、本実施形態の編集装置１０では、ＧＰＵ１２１の種類、画像データのサイズ、エフェクトの処理内容（エフェクトの種類、エフェクトパラメータ）の組み合わせをＩＤとして、このＩＤと最適なスレッドパラメータのデータとの組み合わせがデータベース２０に蓄積される。したがって、将来的に、より高性能なＧＰＵの出現に伴う、ＧＰＵの種類、エフェクトの種類、エフェクトパラメータの種類などの増加にも対応することができるという利点がある。
【００６５】
＜変形例１＞
ＧＰＵ１２１の種類によっては、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹの積の値に最大512や256といった上限が設けられている場合がある。このような場合、スレッドパラメータをその上限を超えない範囲で更新させる必要がある。
【００６６】
図１２は、ＧＰＵ１２１が上記のような制限を持っている場合の最適スレッドパラメータの探索手順のフローチャートである。
この例では、ステップＳ３０２で、ＩＤに対する最適なスレッドパラメータのデータが存在しないことを判定した後、ＣＰＵ１１１は、ＧＰＵ１２１の種類に応じて、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹの積が上限値を超えない範囲に収まるＴｈｒｅａｄＸとＴｈｒｅａｄＹのすべての組み合わせを生成する（ステップＳ３１３）。この後は、ステップＳ３０３〜ステップＳ３０９において、ＴｈｒｅａｄＸとＴｈｒｅａｄＹのすべての組み合わせの中で、ＧＰＵ１２１による処理時間が最短の組み合わせを用いたスレッドパラメータが最適なスレッドパラメータとして判定される。そして、判定された最適なスレッドパラメータとＩＤとの組み合わせがデータベース２０に転送され（ステップＳ３１０）、最適なスレッドパラメータがＧＰＵ部１２に出力され、ＧＰＵ１２１にて実際の画像データの処理が実行される（ステップＳ３１１）。
【００６７】
＜変形例２＞
ＧＰＵ１２１の種類によっては探索対象のスレッドパラメータの数があまりにも膨大で時間がかかりすぎる場合も考えられる。このような場合には、ＴｈｒｅａｄＸ、ＴｈｒｅａｄＹの値を１サイクル毎に所定の値ずつ更新するのではなく、2のべき乗の値に限定して更新するようにしてもよい。
【００６８】
＜変形例３＞
エフェクトの種類によっては、図5に示すような編集環境画面４０で、特定のフレームに対し、ユーザが頻繁にエフェクトパラメータの調整を繰り返す場合もある。その場合、ＣＰＵ１１１は、調整時には適当なスレッドパラメータでＧＰＵ１２１に処理を実行させ、実際に高速に処理させたい再生や記録などの動画像処理に移行する直前に最適なスレッドパラメータを規定するようにしてもよい。
【００６９】
なお、本発明は以上説明した実施の形態には限定されるものではなく、本発明の技術思想の範囲内で種々の変形が可能である。
【符号の説明】
【００７０】
１０…編集装置
１１…ＣＰＵ部
１２…ＧＰＵ部
２０…ネットワーク
３０…データベース
１００…画像編集システム
１１１…ＣＰＵ
１１２…ＣＰＵメモリ
１２１…ＧＰＵ
１２２…ＧＰＵメモリ
【図１】
2012003618.tif 000003
【図２】
2012003618.tif 000004
【図３】
2012003618.tif 000005
【図６】
2012003618.tif 000006
【図７】
2012003618.tif 000007
【図８】
2012003618.tif 000008
【図９】
2012003618.tif 000009
【図１０】
2012003618.tif 000010
【図１１】
2012003618.tif 000011
【図１２】
2012003618.tif 000012
【図４】
2012003618.tif 000013
【図５】
2012003618.tif 000014