(57)【要約】【課題】動画に対する画像処理がどのような目的で行われるかに応じて、複数のＧＰＵへ処理を分散させる手法を切り替え、処理効率を向上することを可能とする情報処理装置を提供すること。【解決手段】フレーム画像を所定の割合で複数の画像に分割するフレーム画像分割手段と、前記フレーム画像分割手段で分割した画像を、それぞれ各ＧＰＵに割り当てる分割画像割り当て手段と、前記入力動画データを構成するフレーム画像を所定の順番で前記各ＧＰＵに割り当てるフレーム画像割り当て手段と、前記分割画像割り当て手段と、前記フレーム画像割り当て手段のどちらを選択するかを設定する割り当て方法設定手段と、を備え、前記割り当て方法設定手段は、画像表示手段によって前記出力画像データを表示する場合には、前記分割画像割り当て手段を設定し、画像保存手段によって前記出力画像データを保存する場合には、前記フレーム画像割り当て手段を設定することを特徴とする。【選択図】  図１
2016157351.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データに対する画像処理を互いに並列に実行して出力画像データを生成することができる二つ以上のＧＰＵと、
前記出力画像データを表示する画像表示手段と、
前記出力画像データを保存する画像保存手段と、
前記入力動画データを構成する各フレーム画像を所定の割合で複数の画像に分割するフレーム画像分割手段と、
前記フレーム画像分割手段で分割した画像を、それぞれ前記各ＧＰＵに割り当てる分割画像割り当て手段と、
前記入力動画データを構成するフレーム画像を所定の順番で前記各ＧＰＵに割り当てるフレーム画像割り当て手段と、
前記分割画像割り当て手段と、前記フレーム画像割り当て手段のどちらを選択するかを設定する割り当て方法設定手段と、
前記割り当て方法設定手段によって設定された手段に基づいて、前記各ＧＰＵを制御するＧＰＵ制御手段と、
を備え、
前記割り当て方法設定手段は、
前記画像表示手段によって前記出力画像データを表示する場合には、前記分割画像割り当て手段を設定し、
前記画像保存手段によって前記出力画像データを保存する場合には、前記フレーム画像割り当て手段を設定することを特徴とする情報処理装置。
【請求項２】
前記フレーム画像分割手段は、前記フレーム画像を前記各ＧＰＵの個数によって同じ割合で分割することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記各ＧＰＵのＧＰＵ性能情報を取得するＧＰＵ情報取得手段と、前記ＧＰＵ性能情報からＧＰＵ性能評価値を計算するＧＰＵ性能評価値計算手段と、を備え、前記フレーム画像分割手段は、前記フレーム画像を前記ＧＰＵ性能評価値計算手段によって計算された前記ＧＰＵ性能評価値に応じた割合で分割することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記各ＧＰＵのＧＰＵ処理時間を取得するＧＰＵ処理時間計測手段と、前記フレーム画像分割手段によって前記各フレーム画像を分割するための割合を、前記ＧＰＵ処理時間計測手段によって取得した前記ＧＰＵ処理時間に応じて更新するフレーム画像分割割合更新手段と、を備え、前記フレーム画像分割手段は、前記フレーム画像を前記フレーム画像分割割合更新手段によって更新された割合で分割することを特徴とする請求項１乃至請求項３の何れか一項に記載の情報処理装置。
【請求項５】
前記フレーム画像割り当て手段は、連続する前記各フレーム画像を前記各ＧＰＵに所定の枚数ごとに順に割り当てることを特徴とする請求項１乃至請求項４の何れか一項に記載の情報処理装置。
【請求項６】
前記フレーム画像割り当て手段は、連続する前記フレーム画像を前記ＧＰＵ性能評価値計算手段によって計算された前記ＧＰＵ性能評価値に応じた枚数ごとに前記各ＧＰＵに割り当てることを特徴とする請求項１乃至請求項５の何れか一項に記載の情報処理装置。
【請求項７】
前記フレーム画像割り当て手段は、連続する前記フレーム画像を前記ＧＰＵ処理時間計測手段によって取得した前記ＧＰＵ処理時間に応じた枚数ごとに前記各ＧＰＵに割り当てることを特徴とする請求項１乃至請求項６の何れか一項に記載の情報処理装置。
【請求項８】
前記フレーム画像割り当て手段は、前記各ＧＰＵのうち処理を完了したＧＰＵに前記フレーム画像を所定の順番で割り当てることを特徴とする請求項１乃至請求項７の何れか一項に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関するものであり、特に、複数のグラフィックスプロセッサユニットを利用した動画処理の並列化を行う情報処理装置に関する。
【背景技術】
【０００２】
動画像の処理は一般に、グラフィックスプロセッサユニット（ＧＰＵ）を利用することで、ＣＰＵによる処理と比べて大幅な高速化が可能である。特に、１台のＰＣに複数のＧＰＵが搭載された環境においては、各ＧＰＵへ処理を分散させ、並列に動作させることでさらなる高速化を実現することができる。複数のＧＰＵへ動画に対する処理を分散させる方法としては、一般に以下の２種類の方法が採用されている。
【０００３】
一つ目は、スプリット・フレーム・レンダリング（ＳＦＲ）法である。これは、１枚のフレーム画像を複数の領域に分割し、各領域に対する処理を各ＧＰＵに割り当てる手法である。
【０００４】
二つ目は、アルターネイト・フレーム・レンダリング（ＡＦＲ）法である。これは、ＧＰＵの個数だけ連続するフレーム画像に対する処理を、それぞれ各ＧＰＵに割り当てる手法である。
【０００５】
ＳＦＲ法では、ＧＰＵが処理を行う前のフレーム画像を分割する処理と、ＧＰＵが処理を完了したフレーム画像を再び結合する処理が必要となる。また、画像処理において、周辺の画素値を用いた計算など、各ＧＰＵが自身以外のＧＰＵに振り分けられた領域のデータも参照する必要がある場合には、その領域を複数のＧＰＵに転送することとなり、オーバーヘッドが生じる。また、各ＧＰＵに性能の差がある場合や、担当する領域によって処理の複雑度が変わる場合には、負荷を均等にすることが困難である。さらに、いずれかのＧＰＵが他のＧＰＵより先に処理を終えてしまった場合、結果を１枚のフレーム画像に結合するまでに待ち時間が発生し、全体としての処理効率が低下する。
【０００６】
特許文献１ではＳＦＲ法を採用し、各ＧＰＵが処理を行う領域を動的に変更することで、全体としての処理効率を向上する手法を提案している。例えばＧＰＵが２台搭載された環境においては、フレーム画像を上下に等分割し、フレーム画像ごとに処理を割り当てるＧＰＵを逆転させることで、発生する待ち時間を短縮している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−７１２６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１で提案された手法においては、画像の分割によって生じるオーバーヘッドは解消されていない。そのため、画像処理の目的にとって、動画全体に対する処理を完了するのにかかる時間を短縮することが有効である場合は、フレーム画像を分割する必要がないＡＦＲ法よりも非効率であるという課題がある。
【０００９】
そこで、本発明の目的は、複数のＧＰＵで動画に対して画像処理を行うシステムにおいて、各ＧＰＵへ処理を分散させる手法を、画像処理の目的にとって有効な手法に切り替えることで、処理効率を向上することを可能とする情報処理装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、本発明の情報処理装置は、
入力画像データに対する画像処理を互いに並列に実行して出力画像データを生成することができる二つ以上のＧＰＵと、
前記出力画像データを表示する画像表示手段と、
前記出力画像データを保存する画像保存手段と、
前記入力動画データを構成する各フレーム画像を所定の割合で複数の画像に分割するフレーム画像分割手段と、
前記フレーム画像分割手段で分割した画像を、それぞれ前記各ＧＰＵに割り当てる分割画像割り当て手段と、
前記入力動画データを構成するフレーム画像を所定の順番で前記各ＧＰＵに割り当てるフレーム画像割り当て手段と、
前記分割画像割り当て手段と、前記フレーム画像割り当て手段のどちらを選択するかを設定する割り当て方法設定手段と、
前記割り当て方法設定手段によって設定された手段に基づいて、前記各ＧＰＵを制御するＧＰＵ制御手段と、
を備え、
前記割り当て方法設定手段は、
前記画像表示手段によって前記出力画像データを表示する場合には、前記分割画像割り当て手段を設定し、
前記画像保存手段によって前記出力画像データを保存する場合には、前記フレーム画像割り当て手段を設定することを特徴とする。
【発明の効果】
【００１１】
本発明の情報処理装置によれば、複数のＧＰＵで動画に対して画像処理を行うシステムにおいて、各ＧＰＵへ処理を分散させる手法を、画像処理の目的にとって有効な手法に切り替えることで、処理効率を向上することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第一の実施例及び第二の実施例における、ＰＣの構成を示すブロック図
【図２】本発明の第一の実施例における、アプリケーションのユーザインターフェースの画面構成の例
【図３】本発明の第一の実施例における、動画データの構造を示す図
【図４】本発明の第一の実施例における、画像処理コマンドの構造を示す図
【図５】本発明の第一の実施例における、画像処理手順を示すフローチャート
【図６】本発明の第一の実施例における、複数のＧＰＵに処理を割り当てる方法の説明図（ａ）ＳＦＲ法による処理の割り当て方法の説明図（ｂ）ＡＦＲ法による処理の割り当て方法の説明図
【図７】本発明の第一の実施例における、動画再生処理手順を示すフローチャート（ａ）動画再生処理全体のフローチャート（ｂ）ＧＰＵ開始処理のフローチャート（ｃ）ＧＰＵ完了処理のフローチャート
【図８】本発明の第一の実施例における、画像ファイル出力処理手順を示すフローチャート（ａ）画像ファイル出力処理全体のフローチャート（ｂ）ＧＰＵ開始処理のフローチャート（ｃ）ＧＰＵ完了処理のフローチャート
【図９】本発明の第二の実施例における、画像処理手順を示すフローチャート
【図１０】本発明の第二の実施例における、複数のＧＰＵに処理を割り当てる方法の説明図（ａ）ＳＦＲ法による処理の割り当て方法の説明図（ｂ）ＡＦＲ法による処理の割り当て方法の説明図
【図１１】本発明の第二の実施例における、動画再生処理手順を示すフローチャート
【図１２】本発明の第二の実施例における、動画ファイル出力処理手順を示すフローチャート（ａ）動画ファイル出力処理全体のフローチャート（ｂ）ＧＰＵ完了処理のフローチャート
【図１３】本発明の第三の実施例における、ＰＣの構成を示すブロック図
【図１４】本発明の第三の実施例における、画像処理手順を示すフローチャート
【図１５】本発明の第三の実施例における、複数のＧＰＵに処理を割り当てる方法の説明図（ａ）ＳＦＲ法による処理の割り当て方法の説明図（ｂ）ＡＦＲ法による処理の割り当て方法の説明図
【図１６】本発明の第三の実施例における、動画再生処理手順を示すフローチャート
【図１７】本発明の第三の実施例における、画像ファイル送信処理手順を示すフローチャート（ａ）画像ファイル送信処理全体のフローチャート（ｂ）ＧＰＵ完了処理のフローチャート
【発明を実施するための形態】
【００１３】
以下、本発明にかかる一実施例を、図面を参照して詳細に説明する。
【実施例１】
【００１４】
本実施例では、２台のＧＰＵによって動画に画像処理を施すと共に、画像処理の結果である各出力フレーム画像を所定の時間間隔で連続して表示する動画再生機能と、記録媒体に個別の画像ファイルとして保存する画像ファイル出力機能を持つＰＣの例を示す。
【００１５】
図１は本実施例におけるＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）１００の構成を示すブロック図である。
【００１６】
図１において、１１０はＰＣ１００全体を制御する制御部であり、例えばＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）である。
【００１７】
１２０は画像処理部であり、ＧＰＵ１２１とＧＰＵ１２２から構成される。ＧＰＵ１２１とＧＰＵ１２２は制御部１１０によって生成された画像処理コマンドを実行し、出力画像データを並列に生成することができる。
【００１８】
１３０は、外部から供給されるプログラムやデータを一時記憶するＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）である。プログラムの実行に伴って出力されるデータの一時的な格納領域としても用いられる。
【００１９】
１４０は、プログラムやパラメータを格納するＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）である。本実施例では、アプリケーション２００等の、制御部１１０によって実行されるソフトウェアのプログラムコードや、後述するアプリケーション２００の動作において必要なパラメータ等を格納する。このプログラムコードを制御部１１０が実行する構成となっている。なお本実施例のＲＯＭ１４０はフラッシュＲＯＭであり、制御プログラムを書き換え可能な構成となっている。
【００２０】
１５０は、コンピュータが読み書き可能な記録媒体であり、例えばコンピュータが備える内蔵メモリや、コンピュータに着脱可能に接続されるメモリカードやＨＤＤ、ＣＤ−ＲＯＭ、ＭＯディスク、光ディスク、光磁気ディスクなどの電子データを記録することができるような媒体等を意味する。記録媒体１５０には、動画データなどのデジタルデータがファイルとして格納されている。
【００２１】
１６０は操作部であり、キーボード、マウス等で構成される。操作部１６０を介して入力される指示によって、入出力データの指定、プログラムの変更、画像処理の実行や中止等が可能である。
【００２２】
１７０は、コンピュータに接続された液晶ディスプレイ等の表示部であり、例えばアプリケーション２００のＧｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ（ＧＵＩ）画面や、画像処理の結果などが表示される。
【００２３】
１８０はＰＣ１００において、各要素間の制御信号やデータ信号の伝送路となる内部バスである。
【００２４】
図２はアプリケーション２００が表示部１７０に表示するユーザインターフェース（ＵＩ）の構成の例である。
【００２５】
２１０は記録媒体１５０から読み込まれた動画データの一覧を表示する動画データ一覧表示エリアである。
【００２６】
２１１は、単一の動画データをアイコンで表したもので、ユーザはアイコン２１１をクリックすることによって、画像処理の対象となる入力動画データを選択することができる。
【００２７】
２２０は、ユーザによって選択された入力動画データに画像処理を行った結果を再生表示するプレビューエリアである。
【００２８】
２３０は、ユーザが再生制御を行うための、再生コントロール部である。ユーザは再生コントロール部２３０の再生ボタン、停止ボタンをクリックすることで、動画再生機能による画像処理の開始や中止を指示することができる。
【００２９】
２４０は、入力動画データにおける現在の再生位置を示すシークバー部である。２４１、２４２はそれぞれ、入力動画データにおける画像処理の開始位置と終了位置を示し、ユーザがドラッグ＆ドロップによって指定することができる。開始位置２４１、終了位置２４２で指定される位置におけるフレーム画像を、それぞれ開始フレーム画像、終了フレーム画像とする。
【００３０】
２５０は、ユーザがファイル出力制御を行うための、ファイル出力コントロール部である。２５１、２５２はそれぞれ、ファイル出力開始ボタン、ファイル出力中止ボタンであり、ユーザがクリックすることで、画像処理の開始と中止を指示できるボタンである。
【００３１】
この他、アプリケーション２００は、画像処理を実施するための一般的なパラメータコントロール部を有するが、ここでは図示しない。
【００３２】
図３は記録媒体１５０に格納されている動画データの概念図である。
【００３３】
３０１は動画データのヘッダ部であり、ここに動画の属性情報を記録する。具体的には、クリップ名、撮影日時情報、タイムコード、動画を構成するフレーム画像の画像サイズ、フレームレート、カメラ機種名、色温度、絞り値、ＩＳＯ感度、その他の付加情報である。３０２はフレーム画像データ部であり、撮影された動画を構成するフレーム画像の内容が、撮影されたタイミングが早い順に記録されている。なお、フレーム画像は、ＪＰＥＧ形式などの一般的な形式に圧縮された画像や、ＲＡＷ画像などでもよい。
【００３４】
図４は制御部１１０が生成する画像処理コマンドの概念図である。
【００３５】
４０１は画像処理コマンドの内容であり、具体的には、画像処理部１２０を構成するどのＧＰＵがコマンドを実行するのかを指定するためのＧＰＵ指定情報、コマンドの種類、実行条件、各種パラメータ、その他の付加情報である。コマンドの種類には、データ転送コマンドと、画像処理実行コマンドがある。
【００３６】
４０２はコマンドの種類がデータ転送コマンドであった場合の、各種パラメータの内容であり、入力データの先頭アドレス、入力データのサイズ、データの出力先の先頭アドレスなどが含まれる。
【００３７】
４０３はコマンドの種類が画像処理実行コマンドであった場合の、各種パラメータの内容であり、画像処理の内容、ＧＰＵを制御するためのパラメータなどが含まれる。画像処理の内容は、ＲＡＷ画像の現像処理や、圧縮された画像のデコード処理、色調整処理などである。
【００３８】
アプリケーション２００は、画像処理コマンドをＧＰＵ１２１及びＧＰＵ１２２に転送する。ＧＰＵ１２１及びＧＰＵ１２２は処理を開始でき、かつコマンドの実行条件を満たすタイミングで画像処理コマンドに応じた処理を行う。
【００３９】
次に、本実施の形態に係る画像処理の動作について、図５〜８を用いて説明を行う。なお、本実施例では、ＧＰＵ１２１とＧＰＵ１２２の間に大きな性能差は存在せず、同一の画像データに同一の画像処理を同時に開始した場合は、ほぼ同時に完了することができるとする。
【００４０】
なお本実施例では、フローチャートの処理を実現するプログラムがＲＯＭ１４０に記録されている例を示すが、プログラムがメモリカードなどの記録媒体１５０に記録されている形態でも良い。また同様に、ネットワーク上にプログラムがある場合でも、本発明は適用される。
【００４１】
フローチャート図５は動画再生機能と画像ファイル出力機能を備えたアプリケーション２００の動作である。
【００４２】
動画再生機能は、画像処理の結果である出力フレーム画像を、プレビューエリア２２０で所定の時間間隔で連続して表示する機能であり、画像ファイル出力機能は、各出力フレーム画像を個別の画像ファイルとして保存する機能である。
【００４３】
ステップＳ５００で制御部１１０は、ユーザからの操作を受け付け、操作があった場合には処理をステップＳ５０１へ移行し、操作がなかった場合には処理をステップＳ５００へ戻す。
【００４４】
ステップＳ５０１で制御部１１０は、ユーザによって入力動画データが選択された場合には、処理をステップＳ５０２へ移行し、そうでない場合には処理をステップＳ５０３へ移行する。
【００４５】
ステップＳ５０２で制御部１１０は、記録媒体１５０から、ステップＳ５０１でユーザによって選択された入力動画データを取得する。
【００４６】
ステップＳ５０３で制御部１１０は、ユーザによって再生コントロール部２３０の再生ボタンが押された場合には、処理をステップＳ５０４へ移行し、そうでない場合には処理をステップＳ５０５に移行する。
【００４７】
ステップＳ５０４で制御部１１０は、動画再生処理を行う。動画再生処理では、制御部１１０はＳＦＲ法によって画像処理を行い、結果として得られるデータをプレビューエリア２２０に表示する。詳細は後述する。動画再生処理が終了すると、制御部１１０は処理をステップＳ５００へ移行する。
【００４８】
ステップＳ５０５で制御部１１０は、ユーザによってファイル出力開始ボタン２５１が押された場合には、処理をステップＳ５０６へ移行し、そうでない場合には処理をステップＳ５０７に移行する。
【００４９】
ステップＳ５０６で制御部１１０は、画像ファイル出力処理を行う。画像ファイル出力処理では、制御部１１０はＡＦＲ法によって画像処理を行い、結果として得られるデータを画像ファイルとして記録媒体１５０に保存する。詳細は後述する。画像ファイル出力処理が終了すると、制御部１１０は処理をステップＳ５００へ移行する。
【００５０】
ステップＳ５０７で制御部１１０は、ユーザによってアプリケーションが終了された場合には画像処理を終了し、そうでない場合には処理をステップＳ５００に移行する。
【００５１】
なお、画像処理開始後に、ステップＳ５０１で入力動画データの選択がされるまでは、ステップＳ５０３及びＳ５０５はスキップされるような構成でもよい。あるいは、動画データ一覧表示エリア２１０に表示されている動画データのうち、表示位置、クリップ名、撮影日時などによる順番が先頭または末尾になる動画データや、前回画像処理の対象とした動画データなどを、初期の入力動画データとしてもよい。
【００５２】
図６に、ＳＦＲ法及びＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２に処理を振り分けて動画データに対する画像処理を行う場合の割り当て方法の例を示す。
【００５３】
図６（ａ）及び図６（ｂ）のそれぞれにおいて、動画データを構成する各フレーム画像の内、（ｉ）はアプリケーション２００が画像処理の入力画像データとしてＧＰＵ１２１及びＧＰＵ１２２に転送するフレーム画像、（ｉｉ）はＧＰＵ１２１が画像処理を実行する対象とする入力フレーム画像またはその一部、（ｉｉｉ）はＧＰＵ１２２が画像処理を実行する対象とする入力フレーム画像またはその一部、（ｉｖ）はＧＰＵ１２１及びＧＰＵ１２２による画像処理が完了して得られる出力フレーム画像である。
【００５４】
図６（ａ）はＳＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。
【００５５】
ＳＦＲ法はＡＦＲ法に比べて、入力フレーム画像１枚分に対する画像処理が完了するまでに要する時間が短く、制御命令に迅速に対応できる。そのため、動画再生処理に適している。図６（ａ）に示した例では、ＧＰＵ１２１が入力フレーム画像の上部１／２の画像処理を担当し、ＧＰＵ１２２が入力フレーム画像の下部１／２の画像処理を担当する。ＧＰＵ１２１及びＧＰＵ１２２によってそれぞれ画像処理を施された上下半分の出力フレーム画像を合成することにより、各入力フレーム画像に対応した出力フレーム画像が生成される。
【００５６】
図６（ｂ）はＡＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。
【００５７】
ＡＦＲ法は、ＳＦＲ法のようにオーバーヘッドを生じさせることがなく、入力動画データ全体に対する処理を完了するのにかかる時間を短縮することができる。そのため、画像フレーム出力処理のような、再生を伴わない出力機能に適している。図６（ｂ）に示した例では、ＧＰＵ１２１が奇数番目の入力フレーム画像の画像処理を担当し、ＧＰＵ１２２が偶数番目の入力フレーム画像の画像処理を担当する。なお、本実施例では、ＧＰＵ１２１及びＧＰＵ１２２は交互に処理を開始し、担当する入力フレーム画像は常に互いに隣り合うものとする。
【００５８】
次に、図７（ａ）のフローチャートを用いて、図５のステップＳ５０４における動画再生処理について説明する。本フローチャートでは、図６（ａ）で示したＳＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果を表示する。以下で詳細を説明する。
【００５９】
ステップＳ７００で制御部１１０は、図５のステップＳ５０２で取得した入力動画データから、入力フレーム画像を取得する。なお、動画再生処理開始直後に制御部１１０が取得する入力フレーム画像は、開始フレーム画像とする。
【００６０】
ステップＳ７０１で制御部１１０は、ステップＳ７００で取得した入力フレーム画像について、ＧＰＵ１２１及びＧＰＵ１２２それぞれが画像処理を担当する領域を設定する。本実施例では、ＧＰＵ１２１がフレーム画像の上部１／２、ＧＰＵ１２２がフレーム画像の下部１／２の画像処理を担当することとする。
【００６１】
ステップＳ７０２で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２において、入力フレーム画像の担当する領域の入力画像データについてＧＰＵ開始処理を行う。詳細は後述する。
【００６２】
ステップＳ７０３で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２において、ＧＰＵ完了処理を行う。ＧＰＵ完了処理では、制御部１１０はＧＰＵ１２１及びＧＰＵ１２２によって画像処理が完了した出力画像データを取得する。詳細は後述する。
【００６３】
ステップＳ７０４で制御部１１０は、ステップＳ７０３で取得した出力画像データを結合し、出力フレーム画像を生成する。
【００６４】
ステップＳ７０５で制御部１１０は、出力フレーム画像をプレビューエリア２２０に表示する。
【００６５】
ステップＳ７０６で制御部１１０は、ユーザが再生コントロール部２３０で停止操作を行ったかどうかを判定する。停止操作が行われた場合には、制御部１１０は動画再生処理を終了し、そうでない場合には、制御部１１０は処理をステップＳ７０７へ移行する。
【００６６】
ステップＳ７０７で制御部１１０は、画像処理を実行した入力フレーム画像が終了フレーム画像であったかどうかを判定する。終了フレーム画像であった場合には、制御部１１０は動画再生処理を終了し、そうでない場合には、制御部１１０は処理をステップＳ７００へ戻す。
【００６７】
なお、ステップＳ７０７において入力フレーム画像が入力動画データの終了フレーム画像であると判定された場合、ステップＳ７００へ処理を移行し、入力動画データの開始フレーム画像を取得するような構成でもよい。この場合、画像処理の結果が開始フレーム画像から終了フレーム画像まで繰り返し再生されるという動作となる。
【００６８】
次に、図７（ｂ）のフローチャートを用いて、図７（ａ）のステップＳ７０２におけるＧＰＵ開始処理について説明する。
【００６９】
ステップＳ７１０で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２それぞれが画像処理を担当する領域の入力画像データを、データ転送コマンドによってＧＰＵ１２１及びＧＰＵ１２２に転送する。なお、担当する領域以外の画像データが画像処理に必要となる場合は、必要な領域の画像データも同様に転送する。
【００７０】
ステップＳ７１１で制御部１１０は、画像処理実行コマンドによって、ＧＰＵ１２１及びＧＰＵ１２２に画像処理の実行開始を指示し、ＧＰＵ開始処理を終了する。
【００７１】
次に、図７（ｃ）のフローチャートを用いて、図７（ａ）のステップＳ７０３におけるＧＰＵ完了処理について説明する。
【００７２】
ステップＳ７２０で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２がそれぞれ担当する領域に対して画像処理を完了するまで待機する。
【００７３】
ステップＳ７２１で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２によって画像処理が完了した出力画像データを、データ転送コマンドによってＲＡＭ１３０に転送し、ＧＰＵ完了処理を終了する。
【００７４】
次に、図８（ａ）のフローチャートを用いて、図５のステップＳ５０６における画像ファイル出力処理について説明する。本フローチャートでは、図６（ｂ）で示したＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果をフレーム画像ごとに画像ファイルとして保存する。以下の説明で使用する整数Ｆは、入力動画データの開始フレーム画像から数えたフレーム画像の枚数を表す整数であり、開始フレーム画像はＦ＝０、終了フレーム画像はＦ＝Ｆｍａｘとする。以下で詳細を説明する。
【００７５】
ステップＳ８００で制御部１１０は、図５のステップＳ５０２で取得した入力動画データの開始フレーム画像からＦ枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ開始処理を行う。詳細は後述する。なお、画像ファイル出力処理開始直後に取得する入力フレーム画像は、入力動画データの開始フレーム画像とする。
【００７６】
ステップＳ８０１で制御部１１０は、Ｆ＝０であるかどうかを判定する。Ｆ＝０であった場合には、制御部１１０は処理をステップＳ８０３へ移行する。そうでなかった場合には、制御部１１０は処理をステップＳ８０２へ移行する。
【００７７】
ステップＳ８０２で制御部１１０は、開始フレーム画像からＦ−１枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ完了処理を行う。詳細は後述する。
【００７８】
ステップＳ８０３で制御部１１０は、Ｆ＝Ｆｍａｘであるかどうかを判定する。Ｆ＝Ｆｍａｘであった場合には、制御部１１０は処理をステップＳ８０９へ移行し、そうでない場合には、制御部１１０は処理をステップＳ８０４へ移行する。
【００７９】
ステップＳ８０４で制御部１１０は、開始フレーム画像からＦ＋１枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ開始処理を行う。
【００８０】
ステップＳ８０５で制御部１１０は、開始フレーム画像からＦ枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ完了処理を行う。
【００８１】
ステップＳ８０６で制御部１１０は、Ｆ＋１＝Ｆｍａｘであるかどうかを判定する。Ｆ＋１＝Ｆｍａｘであった場合には、制御部１１０は処理をステップＳ８０８へ移行し、そうでない場合には、制御部１１０は処理をステップＳ８０７へ移行する。
【００８２】
ステップＳ８０７で制御部１１０は、Ｆに２を加算する。
【００８３】
ステップＳ８０８で制御部１１０は、開始フレーム画像からＦ＋１枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ完了処理を行い、画像ファイル出力処理を終了する。
【００８４】
ステップＳ８０９は、図８のステップＳ８０５と同様の処理を行うことができるため、説明を省略する。
【００８５】
なお、ユーザがボタン２５２によって画像処理の中止を指示した場合は、処理を中断するような構成でもよい。この場合、最後に取得した入力フレーム画像を終了フレーム画像に指定することで、処理を中断するような動作となる。
【００８６】
次に、図８（ｂ）のフローチャートを用いて、図８（ａ）のステップＳ８００、Ｓ８０４におけるＧＰＵ開始処理について説明する。
【００８７】
ステップＳ８１０で制御部１１０は、図５のステップＳ５０２で取得した入力動画データから画像処理の対象となる入力フレーム画像を取得し、データ転送コマンドによって処理を担当するＧＰＵに転送する。
【００８８】
ステップＳ８１１で制御部１１０は、画像処理実行コマンドによって、処理を担当するＧＰＵに画像処理の実行開始を指示し、ＧＰＵ開始処理を終了する。
【００８９】
次に、図８（ｃ）のフローチャートを用いて、図８（ａ）のステップＳ８０２、Ｓ８０５、Ｓ８０８、Ｓ８０９におけるＧＰＵ完了処理について説明する。
【００９０】
ステップＳ８２０で制御部１１０は、対象となるＧＰＵが画像処理を完了するまで待機する。
【００９１】
ステップＳ８２１で制御部１１０は、対象となるＧＰＵによって画像処理が完了した出力フレーム画像を、データ転送コマンドによってＲＡＭ１３０に転送する。
【００９２】
ステップＳ８２２で制御部１１０は、ステップＳ８２１で転送された出力フレーム画像を記録媒体１５０に保存し、ＧＰＵ完了処理を終了する。
【００９３】
このように、本発明によれば、動画再生処理にはＳＦＲ法を用いることで、一枚のフレーム画像の入力から出力までの時間を短縮し、アプリケーションによる指示やユーザ操作への応答性を向上することができる。また、画像ファイル出力処理にはＡＦＲ法を用いることで、フレーム画像を分割することによって生じるオーバーヘッドやＧＰＵ同士の待ち時間をなくし、入力動画データ全体を処理する時間を短縮することが可能になる。
【実施例２】
【００９４】
実施例１では、画像処理の結果である各出力フレーム画像を、記録媒体に個別の画像ファイルとして保存する機能を持つＰＣの例を説明した。本実施例では、各出力フレーム画像を１つの動画ファイルとして保存する機能を持つＰＣの例を示す。また、実施例１では、ＧＰＵ１２１とＧＰＵ１２２の間に大きな性能差は存在しない例を説明したが、本実施例では性能差がある場合の例を示す。
【００９５】
本実施例におけるＰＣの構成を示すブロック図、アプリケーション２００のＵＩ構成図、記録媒体１５０に格納されている入力動画データの概念図、制御部１１０が生成する画像処理コマンドの概念図は、それぞれ実施例１の図１〜４と同様となるので、説明を省略する。
【００９６】
次に、本実施の形態に係る画像処理の動作について、図９〜１２を用いて説明を行う。なお、本実施例では、ＧＰＵ１２１とＧＰＵ１２２の間に性能差があり、同一の画像データに同一の画像処理を同時に開始した場合は、ＧＰＵ１２１の方が処理を早く終えられる性能を有しているとする。
【００９７】
フローチャート図９は、動画再生機能と動画ファイル出力機能を備えたアプリケーション２００の動作である。動画再生機能は、画像処理の結果である出力フレーム画像を、プレビューエリア２２０で所定の時間間隔で連続して表示する機能であり、動画ファイル出力機能は、各出力フレーム画像を１つの動画ファイルとして保存する機能である。
【００９８】
ステップＳ９００で制御部１１０は、ＧＰＵ１２１及びＧＰＵ１２２のＧＰＵ性能情報を取得する。本実施例では、ＧＰＵ性能情報として、ＧＰＵのクロック周波数を取得する。もちろん、それ以外の情報を取得してもよい。例えば、データ転送速度、コア数、メモリ容量、ＧＰＵ機種名等である。また、あらかじめ取得しておいたＧＰＵ性能情報を利用してもよい。
【００９９】
ステップＳ９０１で制御部１１０は、ステップＳ９００で取得したＧＰＵ性能情報に基づいて、ＧＰＵ１２１及びＧＰＵ１２２のＧＰＵ性能評価値を算出する。本実施例では、各ＧＰＵのクロック周波数をそのままＧＰＵ性能評価値とする。ＧＰＵ１２１のＧＰＵ性能評価値をＳ１、ＧＰＵ１２２のＧＰＵ性能評価値をＳ２とする。もちろん、それ以外の情報を用いてＧＰＵ性能評価値を算出してもよい。例えば、各ＧＰＵのクロック周波数がそれぞれｆ１、ｆ２であり、コア数がそれぞれｃ１、ｃ２であった場合に、所定の定数ｎ、ｍ、ｐ、ｑを用いてＳ１＝ｎ×ｆ１ｐ＋ｍ×ｃ１ｑ、Ｓ２＝ｎ×ｆ２ｐ＋ｍ×ｃ２ｑのように算出してもよい。また、公知の方法でベンチマークスコアを測定し、ＧＰＵ性能評価値としてもよい。
【０１００】
ステップＳ９０２〜Ｓ９０５、Ｓ９０７、Ｓ９０９は、それぞれ図５のステップＳ５００〜Ｓ５０３、Ｓ５０５、Ｓ５０７と同様の処理を行うことができるため、説明を省略する。
【０１０１】
ステップＳ９０６で制御部１１０は、動画再生処理を行う。動画再生処理では、制御部１１０はＳＦＲ法によって画像処理を行い、結果として得られるデータをプレビューエリア２２０に表示する。詳細は後述する。動画再生処理が終了すると、制御部１１０は処理をステップＳ９０２へ移行する。
【０１０２】
ステップＳ９０８で制御部１１０は動画ファイル出力処理を行う。動画ファイル出力処理では、制御部１１０はＡＦＲ法によって画像処理を行い、結果として得られるデータを動画ファイルとして記録媒体１５０に保存する。詳細は後述する。動画ファイル出力処理が終了すると、制御部１１０は処理をステップＳ９０２へ移行する。
【０１０３】
図１０に、ＧＰＵ１２１とＧＰＵ１２２の間に性能差がある場合の、ＳＦＲ法及びＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２に処理を振り分けて動画データに対する画像処理を行う場合の割り当て方法の例を示す。図の記号の説明は、図６と同様である。
【０１０４】
図１０（ａ）はＳＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。
【０１０５】
実施例１では、ＧＰＵ１２１とＧＰＵ１２２の間に性能差が存在する場合は、先に処理を終えたＧＰＵが他方のＧＰＵの処理完了まで待機する必要がある。図１０（ａ）に示した例では、入力フレーム画像全体に占める、ＧＰＵ１２１とＧＰＵ１２２が画像処理を担当する領域の比率がＳ１：Ｓ２であり、Ｓ１＞Ｓ２である。これにより、ＧＰＵ１２１及びＧＰＵ１２２による画像処理の完了のタイミングが近くなる。
【０１０６】
図１０（ｂ）はＡＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。
【０１０７】
実施例１では、ＧＰＵ１２１とＧＰＵ１２２の間に性能差が存在する場合は、一方のＧＰＵの処理の完了を待機している間に他方のＧＰＵが処理を完了し、待機時間が発生する可能性がある。本実施例では、ＧＰＵ１２１及びＧＰＵ１２２は、画像処理を担当するフレーム画像の数の比率がおよそＳ１：Ｓ２となるように、一定の枚数ごとに画像処理を担当する。図１０（ｂ）に示した例では、Ｓ１：Ｓ２＝およそ２：１であり、ＧＰＵ１２１は連続する３枚のフレーム画像のうち２枚の処理を担当し、ＧＰＵ１２２は１枚の処理を担当する。これにより、ＧＰＵ１２１及びＧＰＵ１２２の待機時間を削減することができる。
【０１０８】
次に、図１１のフローチャートを用いて、図９のステップＳ９０６における動画再生処理について説明する。本フローチャートでは、図１０（ａ）で示したＳＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果を表示する。以下で詳細を説明する。
【０１０９】
なお、フローチャート図１１において、ステップＳ１１００、Ｓ１１０２〜Ｓ１１０７は、それぞれ図７のステップＳ７００、Ｓ７０２〜Ｓ７０７と同様の処理を行うことができるため、説明を省略する。
【０１１０】
ステップＳ１１０１で制御部１１０は、入力フレーム画像について、ＧＰＵ１２１及びＧＰＵ１２２それぞれが画像処理を担当する領域を設定する。本実施例では、ＧＰＵ１２１がフレーム画像の上部Ｓ１／（Ｓ１＋Ｓ２）、ＧＰＵ１２２がフレーム画像の下部Ｓ２／（Ｓ１＋Ｓ２）の画像処理を担当することとする。
【０１１１】
次に、図１２（ａ）のフローチャートを用いて、図９のステップＳ９０８における動画ファイル出力処理について説明する。本フローチャートでは、図１０（ｂ）で示したＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果を１つの動画ファイルとして保存する。以下の説明で使用する整数Ｆは、入力動画データの開始フレーム画像から数えたフレーム画像の枚数を表す整数であり、開始フレーム画像はＦ＝０、終了フレーム画像はＦ＝Ｆｍａｘとする。以下で詳細を説明する。
【０１１２】
ステップＳ１２００で制御部１１０は、図９のステップＳ９０４で取得した入力動画データの開始フレーム画像からＦ枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ開始処理を行う。なお、動画ファイル出力処理直後に取得する入力フレーム画像は、入力動画データの開始フレーム画像とする。ＧＰＵ開始処理は、図７（ｂ）で説明した処理と同様のため、説明を省略する。
【０１１３】
ステップＳ１２０１で制御部１１０は、Ｆ＝Ｆｍａｘであるかどうかを判定する。Ｆ＝Ｆｍａｘであった場合には、制御部１１０は処理をステップＳ１２０３へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１２０２へ移行する。
【０１１４】
ステップＳ１２０２で制御部１１０は、開始フレーム画像からＦ＋１枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ開始処理を行う。
【０１１５】
ステップＳ１２０３で制御部１１０は、Ｆ＝０であるかどうかを判定する。Ｆ＝０であった場合には、制御部１１０は処理をステップＳ１２０５へ移行する。そうでなかった場合には、制御部１１０は処理をステップＳ１２０４へ移行する。
【０１１６】
ステップＳ１２０４で制御部１１０は、開始フレーム画像からＦ−１枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ完了処理を行う。詳細は後述する。
【０１１７】
ステップＳ１２０５で制御部１１０は、Ｆ＝ＦｍａｘまたはＦ＋１＝Ｆｍａｘであるかどうかを判定する。Ｆ＝ＦｍａｘまたはＦ＋１＝Ｆｍａｘであった場合には、制御部１１０は処理をステップＳ１２１１へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１２０６へ移行する。
【０１１８】
ステップＳ１２０６で制御部１１０は、開始フレーム画像からＦ＋２枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ開始処理を行う。
【０１１９】
ステップＳ１２０７で制御部１１０は、開始フレーム画像からＦ枚目およびＦ＋１枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ完了処理を行う。
【０１２０】
ステップＳ１２０８で制御部１１０は、Ｆ＋２＝Ｆｍａｘであるかどうかを判定する。Ｆ＋２＝Ｆｍａｘであった場合には、制御部１１０は処理をステップＳ１２１０へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１２０９へ移行する。
【０１２１】
ステップＳ１２０９で制御部１１０は、Ｆに３を加算する。
【０１２２】
ステップＳ１２１０で制御部１１０は、開始フレーム画像からＦ＋２枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ完了処理を行い、画像ファイル出力処理を終了する。
【０１２３】
ステップＳ１２１１で制御部１１０は、開始フレーム画像からＦ枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ完了処理を行う。
【０１２４】
ステップＳ１２１２で制御部１１０は、Ｆ＝Ｆｍａｘであるかどうかを判定する。Ｆ＝Ｆｍａｘであった場合には、制御部１１０は動画ファイル出力処理を終了し、そうでない場合には、制御部１１０は処理をステップＳ１２１３へ移行する。
【０１２５】
ステップＳ１２１３で制御部１１０は、開始フレーム画像からＦ＋１枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ完了処理を行い、画像ファイル出力処理を終了する。
【０１２６】
なお、ユーザがボタン２５２によって画像処理の中止を指示した場合は、処理を中断するような構成でもよい。この場合、最後に取得した入力フレーム画像を終了フレーム画像に指定することで、処理を中断するような動作となる。
【０１２７】
次に、図１２（ｂ）のフローチャートを用いて、図１２（ａ）のステップＳ１２０４、Ｓ１２０７、Ｓ１２１０、Ｓ１２１１、Ｓ１２１３におけるＧＰＵ完了処理について説明する。
【０１２８】
ステップＳ１２２０で制御部１１０は、対象となるＧＰＵが画像処理を完了するまで待機する。
【０１２９】
ステップＳ１２２１で制御部１１０は、対象となるＧＰＵによって画像処理が完了した出力フレーム画像を、データ転送コマンドによってＲＡＭ１３０に転送する。
【０１３０】
ステップＳ１２２２で制御部１１０は、ステップＳ１２２１で転送された出力フレーム画像を、出力動画ファイルの該当する位置に記録し、ＧＰＵ完了処理を終了する。
【０１３１】
このように、本発明によれば、動画再生処理にはＳＦＲ法を用いることで、一枚のフレーム画像の入力から出力までの時間を短縮し、アプリケーションによる指示やユーザ操作への応答性を向上することができる。また、動画ファイル出力処理にはＡＦＲ法を用いることで、フレーム画像を分割することによって生じるオーバーヘッドやＧＰＵ同士の待ち時間をなくし、入力動画データ全体を処理する時間を短縮することが可能になる。さらに、ＳＦＲ法における各ＧＰＵに割り振る領域の比率と、ＡＦＲ法における各ＧＰＵが担当するフレーム数の比率を、各ＧＰＵの性能情報に応じて設定することにより、ＧＰＵ間に性能差があっても各ＧＰＵが待機する時間を短縮することが可能になる。
【実施例３】
【０１３２】
実施例１では、画像処理の結果である各出力フレーム画像を、記録媒体に個別の画像ファイルとして保存する機能を持つＰＣの例を説明した。本実施例では、各出力フレーム画像をインターネット上のサーバに個別の画像ファイルとして転送する機能を持つＰＣの例を示す。また、実施例２では、ＧＰＵ１２１とＧＰＵ１２２の性能が取得可能である例を説明したが、本実施例では、ＧＰＵ１２１とＧＰＵ１２２の性能差が不明である場合の例を示す。
【０１３３】
本実施例におけるアプリケーション２００のＵＩ構成図、記録媒体１５０に格納されている入力動画データの概念図、制御部１１０が生成する画像処理コマンドの概念図は、それぞれ実施例１の図２〜４と同様となるので、説明を省略する。
【０１３４】
図１３は、本実施例におけるＰＣ１３００の構成を示すブロック図である。
【０１３５】
１３１０〜１３８０は、図１の１１０〜１８０と共通であるため、説明を省略する。
【０１３６】
１３９０は、有線、無線を問わず、コンピュータと外部装置を接続するためのネットワークインターフェース（ネットワークＩ／Ｆ）である。ＰＣ１３００はネットワークＩ／Ｆ１３９０を介すことにより、インターネット等のネットワーク上のサーバに接続し、データの送受信を行うことができる。
【０１３７】
次に、本実施の形態に係る画像処理の動作について、図１４〜１７を用いて説明を行う。なお、本実施例では、ＧＰＵ１２１とＧＰＵ１２２の間の性能差は不明であるとする。
【０１３８】
フローチャート図１４は、動画再生機能と画像ファイル送信機能を備えたアプリケーション２００の動作である。動画再生機能は、画像処理の結果である出力フレーム画像を、プレビューエリア２２０で所定の時間間隔で連続して表示する機能であり、画像ファイル送信機能は、各出力フレーム画像をインターネット上のサーバに個別の画像ファイルとして転送する機能である。
【０１３９】
ステップＳ１４００〜Ｓ１４０３、Ｓ１４０５、Ｓ１４０７は、それぞれ図５のステップＳ５００〜Ｓ５０３、Ｓ５０５、Ｓ５０７と同様の処理を行うことができるため、説明を省略する。
【０１４０】
ステップＳ１４０４で制御部１１０は、動画再生処理を行う。動画再生処理では、制御部１１０はＳＦＲ法によって画像処理を行い、結果として得られるデータをプレビューエリア２２０に表示する。詳細は後述する。動画再生処理が終了すると、制御部１１０は処理をステップＳ１４００へ移行する。
【０１４１】
ステップＳ１４０６で制御部１１０は、画像ファイル送信処理を行う。画像ファイル送信処理では、制御部１１０はＡＦＲ法によって画像処理を行い、結果として得られるデータを画像ファイルとしてインターネット上のサーバに転送する。詳細は後述する。画像ファイル送信処理が終了すると、制御部１１０は処理をステップＳ１４００へ移行する。
【０１４２】
図１５に、ＧＰＵ１２１とＧＰＵ１２２の間の性能差が不明な場合の、ＳＦＲ法及びＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２に処理を振り分けて動画データに対する画像処理を行う場合の割り当て方法の例を示す。図の記号の説明は、図６と同様である。
【０１４３】
図１５（ａ）はＳＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。
【０１４４】
図１５（ａ）に示した例では、入力フレーム画像全体に占める、ＧＰＵ１２１とＧＰＵ１２２が画像処理を担当する領域の比率が、前フレーム画像の処理に要した時間の比率に基づいて随時更新される。ＧＰＵ１２１及びＧＰＵ１２２がｎ枚目のフレーム画像の処理に要した時間がＴ１、Ｔ２であり、その際の担当領域の比率がＳ１：Ｓ２であった場合、ｎ＋１枚目のフレーム画像に対しては、ＧＰＵ１２１とＧＰＵ１２２が画像処理を担当する領域の比率がＳ１／Ｔ１：Ｓ２／Ｔ２となるように設定される。例えば、更新前にＳ１：Ｓ２＝１：２、Ｔ１：Ｔ２＝３：２であった場合は、Ｓ１／Ｔ１：Ｓ２／Ｔ２＝１：３となるため、次のフレーム画像ではＧＰＵ１２１が上１／４、ＧＰＵ１２２が下３／４の領域を担当する。これにより、更新後にはＴ１：Ｔ２＝１：１に近づくことになる。つまり、ＧＰＵ１２１及びＧＰＵ１２２の性能が未知であっても、実際に画像処理を行った時間に基づいて、完了のタイミングが近くなるように担当領域を更新することができる。
【０１４５】
図１５（ｂ）はＡＦＲ法を用いてＧＰＵ１２１及びＧＰＵ１２２に画像処理を分散させる場合の割り当て方法の例である。ＧＰＵ１２１とＧＰＵ１２２は、それぞれフレーム番号が昇順と降順になるような順番で各フレーム画像の画像処理を担当する。
【０１４６】
図１５（ｂ）に示した例では、入力動画データが１０枚のフレーム画像から構成されており、ＧＰＵ１２１は１枚目のフレーム画像から２枚目、３枚目という順に処理を担当し、ＧＰＵ１２２は最終フレームである１０枚目のフレーム画像から９枚目、８枚目という順に処理を担当する。ＧＰＵ１２１及びＧＰＵ１２２は、担当したフレーム画像の処理が先に完了した方が、即座に次のフレーム画像の処理を行う。ＧＰＵ１２１及びＧＰＵ１２２のいずれかによってすべてのフレーム画像に対する画像処理が完了した時点で、処理は終了する。これにより、ＧＰＵ１２１及びＧＰＵ１２２は常に画像処理を行い続けることができるため、全フレーム画像に対する処理を最短の時間で完了することができる。
【０１４７】
なお、ＧＰＵ１２１及びＧＰＵ１２２は、画像処理を行うフレーム画像の順番を共に昇順または降順としても良い。その場合、担当するフレーム画像の処理を完了したＧＰＵは、他のＧＰＵがすでに処理を開始しているフレーム画像をスキップし、まだどのＧＰＵも処理を開始していないフレーム画像を新たに担当する。
【０１４８】
また、ＡＦＲ法においては、図１５（ａ）のＳＦＲ法のように、実際に画像処理を行った時間に基づいて、ＧＰＵ１２１及びＧＰＵ１２２が担当するフレーム画像の枚数比を更新するような構成でも良い。すなわち、連続する（Ｆ１＋Ｆ２）枚のフレーム画像のうち、ＧＰＵ１２１とＧＰＵ１２２がそれぞれＦ１枚、Ｆ２枚の処理を担当している場合で、処理に要した時間がそれぞれＴ１、Ｔ２であった場合は、次のフレーム画像からは画像処理を担当するフレーム画像の数の比率をおよそＦ１／Ｔ１：Ｆ２／Ｔ２に更新する。
【０１４９】
次に、図１６のフローチャートを用いて、図１４のステップＳ１４０４における動画再生処理について説明する。本フローチャートでは、図１５（ａ）で示したＳＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果を表示する。以下で詳細を説明する。
【０１５０】
なお、フローチャート図１６において、ステップＳ１６００、Ｓ１６０５〜Ｓ１６１０は、それぞれ図７のステップＳ７００、Ｓ７０２〜Ｓ７０７と同様の処理を行うことができるため、説明を省略する。
【０１５１】
ステップＳ１６０１で制御部１１０は、ステップＳ１６００で取得した入力フレーム画像が入力動画データの開始フレーム画像であったかどうかを判定する。開始フレーム画像であった場合には、制御部１１０は処理をステップＳ１６０２へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１６０３へ移行する。
【０１５２】
ステップＳ１６０２で制御部１１０は、入力フレーム画像について、ＧＰＵ１２１及びＧＰＵ１２２それぞれが画像処理を担当する領域の初期値を設定する。本実施例では、ＧＰＵ１２１がフレーム画像の上部１／２、ＧＰＵ１２２がフレーム画像の下部１／２の画像処理を担当することとする。
【０１５３】
ステップＳ１６０３で制御部１１０は、ステップＳ１６００で取得した入力フレーム画像の前のフレーム画像に対して、ＧＰＵ１２１及びＧＰＵ１２２が画像処理の開始から完了までに要した時間を取得する。この時間をＧＰＵ１２１及びＧＰＵ１２２についてそれぞれＴ１、Ｔ２とする。時間を取得する方法は公知とする。なお、Ｔ１、Ｔ２には、ＧＰＵ開始処理及びＧＰＵ完了処理における、入力画像データ及び出力画像データの転送時間を含めてもよい。
【０１５４】
ステップＳ１６０４で制御部１１０は、入力フレーム画像について、ＧＰＵ１２１及びＧＰＵ１２２それぞれが画像処理を担当する領域を更新する。本実施例では、現在ＧＰＵ１２１とＧＰＵ１２２が担当する領域の比率がＳ１：Ｓ２であったとき、これをＳ１／Ｔ１：Ｓ２／Ｔ２となるように更新する。
【０１５５】
なお、ステップＳ１６０３、Ｓ１６０４は所定の条件を満たしたフレーム画像に対してのみ行う構成でもよい。例えば、動画再生処理全体を通して決められた回数だけ行う場合や、Ｔ１、Ｔ２に閾値以上の差があった場合のみ行う場合や、一定の数のフレーム画像ごとに行う場合でも、本発明は適用される。
【０１５６】
次に、図１７（ａ）のフローチャートを用いて、図１４のステップＳ１４０６における画像ファイル送信処理について説明する。本フローチャートでは、図１５（ｂ）で示したＡＦＲ法によってＧＰＵ１２１及びＧＰＵ１２２で画像処理を行い、結果をフレーム画像ごとにインターネット上のサーバに送信する。以下の説明で使用する整数Ｆ１、Ｆ２は、それぞれＧＰＵ１２１、ＧＰＵ１２２が処理する入力フレーム画像が、入力動画データの開始フレーム画像から数えて何枚目に当たるかを表す整数であり、開始フレーム画像であればＦ１、Ｆ２＝０、終了フレーム画像であればＦ１、Ｆ２＝Ｆｍａｘとする。以下で詳細を説明する。
【０１５７】
ステップＳ１７００で制御部１１０は、Ｆ１、Ｆ２に初期値を設定する。本実施例では、初期値はそれぞれＦ１＝０、Ｆ２＝Ｆｍａｘとする。
【０１５８】
ステップＳ１７０１で制御部１１０は、ＧＰＵ１２１が担当するフレーム画像があり、かつそのフレーム画像に対する画像処理を完了しているかどうかを判定する。処理を完了していた場合には、制御部１１０は処理をステップＳ１７０２へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１７０６へ移行する。
【０１５９】
ステップＳ１７０２で制御部１１０は、図１４のステップＳ１４０２で取得した入力動画データの開始フレーム画像からＦ１枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ完了処理を行う。詳細は後述する。
【０１６０】
ステップＳ１７０３で制御部１１０は、Ｆ１に１を加算する。
【０１６１】
ステップＳ１７０４で制御部１１０は、Ｆ１がＦ２より小さい場合は処理をステップＳ１７０６へ移行し、そうでない場合には、処理をステップＳ１７０５へ移行する。
【０１６２】
ステップＳ１７０５で制御部１１０は、開始フレーム画像からＦ１枚目の入力フレーム画像について、ＧＰＵ１２１においてＧＰＵ開始処理を行う。
【０１６３】
ステップＳ１７０６で制御部１１０は、ＧＰＵ１２２が担当するフレーム画像があり、かつそのフレーム画像に対する画像処理を完了しているかどうかを判定する。処理を完了していた場合には、制御部１１０は処理をステップＳ１７０７へ移行し、そうでない場合には、制御部１１０は処理をステップＳ１７１１へ移行する。
【０１６４】
ステップＳ１７０７で制御部１１０は、開始フレーム画像からＦ２枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ完了処理を行う。
【０１６５】
ステップＳ１７０８で制御部１１０は、Ｆ２から１を減算する。
【０１６６】
ステップＳ１７０９で制御部１１０は、Ｆ１がＦ２より小さい場合は処理をステップＳ１７１０へ移行し、そうでない場合には、処理をステップＳ１７１１へ移行する。
【０１６７】
ステップＳ１７１０で制御部１１０は、開始フレーム画像からＦ２枚目の入力フレーム画像について、ＧＰＵ１２２においてＧＰＵ開始処理を行う。
【０１６８】
ステップＳ１７１１で制御部１１０は、Ｆ１がＦ２より大きい場合は画像ファイル送信処理を終了し、そうでない場合には、処理をステップＳ１７０１へ移行する。
【０１６９】
なお、ユーザがボタン２５２によって画像処理の中止を指示した場合は、処理を中断するような構成でもよい。この場合、図１７のステップＳ１７０３でＦ１にＦｍａｘを、ステップＳ１７０８でＦ２に０を代入することで、処理を中断するような動作となる。
【０１７０】
次に、図１７（ｂ）のフローチャートを用いて、図１７（ａ）のステップＳ１７０２、Ｓ１７０７におけるＧＰＵ完了処理について説明する。
【０１７１】
ステップＳ１７２０で制御部１１０は、対象となるＧＰＵが画像処理を完了するまで待機する。
【０１７２】
ステップＳ１７２１で制御部１１０は、対象となるＧＰＵによって画像処理が完了した出力フレーム画像を、データ転送コマンドによってＲＡＭ１３０に転送する。
【０１７３】
ステップＳ１７２２で制御部１１０は、ステップＳ１７２１で転送された出力フレーム画像を、ネットワークＩ／Ｆ１３９０を介して送信する。
【０１７４】
このように、本発明によれば、動画再生処理にはＳＦＲ法を用いることで、一枚のフレーム画像の入力から出力までの時間を短縮し、アプリケーションによる指示やユーザ操作への応答性を向上することができる。また、画像ファイル送信処理にはＡＦＲ法を用いることで、フレーム画像を分割することによって生じるオーバーヘッドやＧＰＵ同士の待ち時間をなくし、入力動画データ全体を処理する時間を短縮することが可能になる。さらに、ＳＦＲ法においては各ＧＰＵに割り振る領域の比率を処理時間に応じて更新し、ＡＦＲ法においては各ＧＰＵが処理を完了し次第、次の処理を開始できるような構成にした。これにより、ＧＰＵ間の性能が不明であっても処理効率を向上することが可能になる。
【０１７５】
なお、実施例１〜３において、画像処理部１２０はＧＰＵ１２１及びＧＰＵ１２２の２台のＧＰＵを有するとしたが、もちろん、２台以上のＧＰＵを有する構成でも良い。
【０１７６】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【０１７７】
また、本発明の目的は、以下の処理を実行することによって達成される。
【０１７８】
まず、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１７９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、以下のようにして達成することも可能である。即ち、読み出したプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合である。ここでプログラムコードを記憶する記憶媒体としては、例えば、ハードディスク、ＲＯＭ、ＲＡＭ、不揮発性の記録媒体ＣＤ‐ＲＯＭ、ＣＤ‐Ｒ、ＤＶＤ、光ディスク、光磁気ディスク、ＭＯなどが考えられる。また、ＬＡＮ（ローカル・エリア・ネットワーク）やＷＡＮ（ワイド・エリア・ネットワーク）などのコンピュータネットワークを、プログラムコードを供給するために用いることができる。
【符号の説明】
【０１８０】
１１０  制御部、１２０  画像処理部、１２１，１２２  ＧＰＵ、１３０  ＲＡＭ、
１４０  ＲＯＭ、１５０  記録媒体、１６０  操作部、１７０  表示部、
１８０  システムバス
【図１】
2016157351.tif 000003
【図２】
2016157351.tif 000004
【図３】
2016157351.tif 000005
【図４】
2016157351.tif 000006
【図５】
2016157351.tif 000007
【図６】
2016157351.tif 000008
【図７】
2016157351.tif 000009
【図８】
2016157351.tif 000010
【図９】
2016157351.tif 000011
【図１０】
2016157351.tif 000012
【図１１】
2016157351.tif 000013
【図１２】
2016157351.tif 000014
【図１３】
2016157351.tif 000015
【図１４】
2016157351.tif 000016
【図１５】
2016157351.tif 000017
【図１６】
2016157351.tif 000018
【図１７】
2016157351.tif 000019