画像処理装置、画像処理方法およびプログラム
【課題】分散処理時の差分矩形数の最大値を制限し画像処理の効率化が図られた画像処理装置等を提供すること。
【解決手段】画像処理装置1は、CPU10と並列処理に向いたコアを複数有するコプロセッサ20を備え、CPU10が1画面を複数の領域に分割し、それぞれの領域毎に1つずつコアを割り当て、コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限する。
【解決手段】画像処理装置1は、CPU10と並列処理に向いたコアを複数有するコプロセッサ20を備え、CPU10が1画面を複数の領域に分割し、それぞれの領域毎に1つずつコアを割り当て、コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検出された差分矩形をマージして画像処理の効率化を図る技術に関する。
【背景技術】
【0002】
自宅のPCを遠隔地の別の装置からリモート操作する際に、自宅のPCの画面に表示されるべき画像を、遠隔地にある別の装置の画面上に再現したい場合がある。
【0003】
例えば、自宅のPCの画面を遠隔地の別の装置の画面上に表示し始めたときには、全画面の情報を送信するが、それ以降は自宅のPCの画面の変化部分のみの情報を遠隔地の別の装置側に送信し、遠隔地の別の装置では、変化部分のみを描画するようにすると、データ送信量と描画処理量が少なく済む。
【0004】
自宅のPCと遠隔地の別の装置間で画面表示性能の違い(ディスプレイピクセル数、解像度や表示色数)に違いがある場合には、遠隔地の別の装置側のアプリケーションが適切な変換処理(画面の縮小・拡大や色変換)を行うことであってもよい。
【0005】
グラフィックス描画処理を高速に行うために、グラフィックス プロセッシング ユニット(以下、「GPU」)の複数のコアを並列に動作させる技術がある。コアとはプロセサ・ダイ上に作成されるプロセサ回路の中核部分でキャッシュ・メモリを除く半導体回路部分をいう。マルチコアは、1つのプロセサ・パッケージ内に複数のプロセサ・コアを封入した技術である。
【0006】
複数のコアによって並列にグラフィックス描画処理を行う場合、複数のコアにどのように処理を振り分けるかが問題となる。複数のコアに描画処理を振り分ける方法として、画面をn個の領域に分割し、n個のコアを各領域の描画処理に割り当てる方法がある。例えばn=16の場合、図10に示すように、画面を16個の領域に分割し、16個のGPUのコアをそれぞれ画面の各領域の描画処理に振り分ける。
【0007】
関連技術として、エンコーダサーバは、MPEG−2エンコーダから送信されたMPEG−2信号を受信し、MPEG−2より情報量の圧縮率が高く、符号化後の伝送速度が低いMPEG−4信号に変換し、受信端末は、受信したMPEG−4信号をMPEG−4デコード部により復号化し、表示部に画像を表示する技術が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−136013号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述の関連技術のように、画面を複数の領域に分割し、複数のGPUなどのコアで分散処理を行うと、1つのCPUで画面全体を1つとみなして処理した結果とは異なる点が生ずる。
【0010】
図11に示すように、画面を上下に分割し横方向に長い短冊状にし、分割された各領域の描画処理をGPUなどの複数のコアで分散処理を行い、別々の領域で差分を検出すると、本来よりも多くの差分矩形が抽出されてしまう。すなわち、領域をまたがる差分矩形は、本来ならば1つの矩形と認識されるべきところ2つの矩形に分割してそれぞれ抽出されてしまうのである。図11では差分矩形は、本来28個のはずが合計42個抽出されてしまっている。これにより、本来1つの矩形として認識されてれば生じない重複部分のオーバーヘッドが生じ、エンコード/デコードに無駄な処理能力や処理時間を費やしてしまっていた。
【0011】
また、より多くの差分矩形が抽出されてしまうので画面全体での差分矩形数の最大値を制限することが困難であった。
【0012】
本発明は、以上のような課題を解決するためになされたもので、分散処理時の差分矩形数の最大値を制限し画像処理の効率化が図られた画像処理装置、画像処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の画像処理装置は、CPUと並列処理に向いたコアを複数有するコプロセッサを備え、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限することを特徴とする。
【0014】
また、本発明の画像処理方法は、CPUと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し1画面全体での差分矩形数を制限することを特徴とする。
【0015】
また、本発明のプログラムは、CPUと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記CPUに1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ1画面全体での差分矩形数を制限することを特徴とする。
【発明の効果】
【0016】
本発明によれば、分散処理時の差分矩形数の最大値を制限し画像処理の効率化を図ることが可能となる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態に係る画像処理装置の構成を示す図である。
【図2】本発明の実施の形態に係る画像処理装置の機能ブロック図である。
【図3】本発明の実施の形態に係る処理動作を示すフローチャートである。
【図4】本発明の実施の形態に係る画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図5】本発明の実施の形態に係るコアに割り当てた状態の概念図である。
【図6】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図7】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図8】差分矩形をマージする所定のルールを示す図である。
【図9】その他の実施の形態を示す図である。
【図10】従来の画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図11】従来のコアに割り当てた状態の概念図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図1に示す本実施の形態における画像処理装置1は、グラフィックデータ処理により、複数の描画コマンドを生成するソフトウェアを実行する中央演算処理装置(以下、「CPU」)10と、複数の描画コマンドで描画処理を行って、複数に分割された画面の各領域の画像描画用データを並列に生成する描画処理部としてのGPU20とそのコア20−1〜20−16と、プログラム記憶部40、メインメモリ50、入力部60及び出力部70を備え、CPU10、GPU20、フレームメモリ30、プログラム記憶装置40、メインメモリ50、入力装置60及び出力装置70は、それぞれデータ転送等のためのバス80を介して接続されている。
【0019】
CPU10は、アプリケーションソフトウェア、アプリケーション・プログラム・インタフェース(API)ミドルウェア等の各種ミドルウェア、及びデバイスドライバ等のソフトウェアを実行して、描画コマンドを生成する。CPU10がソフトウェアに制御されて処理対象のグラフィックデータから生成する描画コマンドは、GPU20のコア20−1〜20−16に転送される。
【0020】
GPU20は、並列的な処理に向いたコアを複数持つ、コプロセッサの例示であり、同様の機能を有するものであればGPUに限定されない。ここでは、画面の領域を16個に分割し、それぞれの領域についてコア20−1〜20−16が各々1個の領域の処理を担当する。
コア20−1〜20−16によって生成された画像描画用データは、フレームメモリ30に格納される。
【0021】
プログラム記憶部40は、アプリケーションソフトウェア、APIミドルウェア、デバイスドライバ等の、CPU10によって実行されるソフトウェアのプログラムコードを格納する。近年、GPU20で汎用のプログラムを実行することができるようになっており、
そのプログラムを格納していてもよい。
【0022】
メインメモリ50は、グラフィックデータ記憶領域51及びコマンドバッファ領域52を有する。グラフィックデータ記憶領域51は処理対象のグラフィックデータを格納する。コマンドバッファ領域52は、コア20−1〜20−16に転送される描画コマンドを格納する。コマンドバッファ領域52はGPU20が有するコア個数に応じて区分される。図1に示した例では、コマンドバッファ領域52は第1コマンドバッファ5201〜第16コマンドバッファ5216を有する。後述するように、第1コマンドバッファ5201〜第16コマンドバッファ5216は、CPU10がデバイスドライバを実行することによって設定される。また、メインメモリ50は、CPU10の処理により生成されるデータ等を一時的に保存する。
【0023】
入力部60はユーザがデータ等を入力するキーボード、マウス等である。出力部70は、画像処理結果・出力画像等を外部送信可能なインタフェースや表示部としてのディスプレイやプリンタ等である。
【0024】
アプリケーションソフトウェアは、画像処理装置1が有するGPU20のコアの個数に関係なく入力部60から入力されたグラフィックデータを処理し、処理結果として得られるAPI関数コール(目的の描画を行うための指示)をAPIミドルウェアに引き渡す。APIミドルウェアはそのAPI関数コールを処理して、GPU20のコア20−1〜20−16のハードウェアが実行可能な描画コマンドを生成する。デバイスドライバは、APIミドルウェアによって生成された描画コマンドをコマンドバッファ領域52にバッファリングした後、コア20−1〜20−16が新たな処理を開始できるタイミングで、例えば1フレーム分等のコア20−1〜20−16の処理単位の描画コマンドをコマンドバッファ領域52からコア20−1〜20−16に転送する。コア20−1〜20−16は描画コマンドを用いて描画処理を行い、描画処理結果である画像描画用データ(例えばピクセルデータ)をフレームメモリ30に格納し、その後出力部70から所定の出力がなされる。
【0025】
上述の画像処理装置1に関する構成で、ユーザの入力部60に対する操作の結果として、フレームメモリ30の内容が更新される。
以下では、画像処理装置1が、当該フレームメモリ30、または、出力部70から出力される画像を遠隔地の装置に送信する際に、画像の変化の差分を抽出する処理について着目して詳細に説明する。
【0026】
図2に、本実施の形態における画像処理装置1の機能ブロック図を示す。
【0027】
本実施の形態における画像処理装置1は、画面領域分割部111と、割当部112、差分検出部113と、矩形マージ部114とを備えている。
【0028】
画面領域分割部111は、GPU20のコア数に応じて並列処理が可能な領域数に1つの画面領域を分割する機能を有している。CPU10がGPU20に保有しているコア数を問い合わせてそのコア数以内の数で分割することであってよい。なお、本実施の形態の説明においては、画面を上下に分割し横方向に長い短冊状に分割する例で説明するが、画面の分割方法は上下に分割する方法に限らず、例えば画面を左右に分割する等、画面を複数の領域に分割する方法であればどのような分割方法であってもよい。
【0029】
割当部112は、分割された各領域の描画処理やマージ処理をGPU20の所定のコア20−1〜20−16等に割り当てる機能を有している。なお、所定の領域については本実施の形態におけるマージ処理を行うコアを割り当てない、すなわちマージ処理を行わないことであってもよい。
【0030】
差分検出部113は、2つの画面(例えば、現在の画面とその直前の画面)に関して、分割された各領域ついて差分矩形を抽出する機能を有している。分割された各領域の処理が割り当てられた所定のコア20−1〜20−16等がそれぞれ差分矩形を抽出する。
【0031】
矩形マージ部114は、所定のルールに従って差分矩形をマージする機能を有している。領域をまたがってそれぞれ抽出されてしまう差分矩形を本来の1つの矩形とする、または本来1つの矩形ではないかもしれないが、領域をまたがってそれぞれ抽出されてしまっている蓋然性が高い差分矩形を1つの矩形とする処理である。矩形座標のマージ処理は2つの矩形の接する直線の始点の座標データを消去してさらに終点の座標データを消去すること等で実現されてよい。マージ処理の実行は、CPUの空き状況に応じてCPUに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
所定の記憶部に格納されている1画面あたりの総抽出矩形数の最大値以内になるように差分矩形をマージする。
【0032】
以下、本実施の形態の動作について図面を参照して詳細に説明する。
図3のフローチャートを参照すると、まず、画像処理装置1の画面領域分割部111は、GPU20のコア数に応じて並列処理が可能な領域数に1つの画面領域を分割する(S301)。具体的にはCPU10がGPU20に保有しているコア数を問い合わせてそのコア数である16個に、画面を上下に分割し横方向に長い短冊状に分割する(図4参照)。
【0033】
次に、割当部112は、16個に分割された各領域の描画処理やマージ処理をGPU20のコア20−1〜20−16に割り当てる(S302)。割り当てた状態の概念図を図5に示す。具体的にはCPU10が16分割した領域の上部から順にコア20−1〜20−16に割り当てる。
【0034】
差分検出部113は、現在の画面とその直前の画面の2つの画面に関して、16個に分割された各領域ついて各々差分矩形を抽出する(S303)。具体的には16個に分割された各領域の処理が割り当てられたコア20−1〜20−16がそれぞれ差分矩形を抽出する。差分矩形が抽出された状態の概念図を図6に示す。
【0035】
そして、矩形マージ部114は、所定のルールに従って差分矩形をマージする(S304)。具体的にはマージ処理の実行は、CPUの空き状況に応じてCPUに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
差分矩形が抽出された状態を示す図7の破線で囲まれた部分は、本来の1つの矩形であるのに関わらず領域をまたがって差分矩形がそれぞれ抽出されてしまっている。
【0036】
以下、差分矩形をマージする所定のルールを図8を参照して説明する。所定の記憶部に格納されている1画面あたりの総抽出矩形数の最大数を32個に限定する場合を例に解説する。すなわち、総抽出矩形数が32個以内になるように差分矩形をマージする。たて方向のマージであるので基本的にはX座標に着目する。
まず、Step1として、2つの隣接する矩形のX座標が一致するときにマージする。
Step1の処理後まだ32個以内とならない場合、次に、Step2として、2つの隣接する矩形の長いほうの辺Bの長さが、短いほうの辺Aの長さの1.6倍以内のときにはマージする。辺が共通している部分は有効画素エリアであるが、辺が共通していない部分は無効画素エリアであり、1.6倍に限らず有効画素エリアと無効画素エリアの面積比で効率性を損なわない値を用いてよい。
Step2の処理後まだ32個以内とならない場合、次に、Step3として、2つの矩形のX座標が一致し、辺Aと辺BのY座標の距離が所定値以下のときにマージする。すなわち少し離れて隙間が生じている空間をつめることとなる。
Step3の処理後まだ32個以内とならない場合、次に、Step4として、2つの矩形の辺Aと辺Bが近いときにマージする。
Step4の処理後まだ32個以内とならない場合、次に、Step5として、画面の左上から右方向、かつ下方向に始点座標を探索し、32個目の始点から残る矩形のX方向、Y方向の最大値までをマージする。すなわち、32個〜42個までは1個にマージしてしまう。
【0037】
上記の本実施の形態によれば、1画面あたりの総抽出矩形数の最大値の最大値が32個で、1画面を16分割する場合、1つのコアあたりの抽出矩形数を最大2個までに限定すれば32個以内に収まるが、効率が悪いという状況を回避できる。
すなわち、1つのコアあたりの抽出矩形数を最大2個までに制限すると、ある分割された領域を担当するコアでは、差分が検出されずに0個の差分矩形であった場合に、本来であれば、その2つ分は、分割された領域を担当するコアで利用して4つの差分矩形を検出しても良いはずであるが、これらの処理は複数のコアで平行して行うため、融通を行うことができない。そのため、全ての分割された領域を担当するコアについて、2個以下と制限するため、効率が悪くなる。このような状況を回避できるのである。
【0038】
なお、その他の実施の形態として図9に示すように、CPU10がOSから入手した動画領域の座標から、1画面を動画領域とそれ以外の領域に5分割し、動画領域にはCPU10を割り当て、動画領域以外の4領域には面積比からGPU20のコアを割り当ててもよい。すなわち、動画領域は激しく変化し、毎画面で差分が多数生じるので帯域確保のためデータを間引く必要があるので別途処理することが求められる。
動画領域およびその他の領域では、上記のStep1〜Step5のマージ処理を行わないことであっても、また、動画領域以外の4領域については、領域の境界で、上記のStep1〜Step5のマージ処理を行うことであってもよい。
【0039】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、画像処理装置1の機能を実現するためのプログラムを各装置に読込ませて実行することにより各装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるCD−ROMまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【符号の説明】
【0040】
10 CPU
20 GPU
20−1〜20−16 コア
30 フレームメモリ
40 プログラム記憶部
50 メインメモリ
60 入力部
70 出力部
80 バス部
【技術分野】
【0001】
本発明は、検出された差分矩形をマージして画像処理の効率化を図る技術に関する。
【背景技術】
【0002】
自宅のPCを遠隔地の別の装置からリモート操作する際に、自宅のPCの画面に表示されるべき画像を、遠隔地にある別の装置の画面上に再現したい場合がある。
【0003】
例えば、自宅のPCの画面を遠隔地の別の装置の画面上に表示し始めたときには、全画面の情報を送信するが、それ以降は自宅のPCの画面の変化部分のみの情報を遠隔地の別の装置側に送信し、遠隔地の別の装置では、変化部分のみを描画するようにすると、データ送信量と描画処理量が少なく済む。
【0004】
自宅のPCと遠隔地の別の装置間で画面表示性能の違い(ディスプレイピクセル数、解像度や表示色数)に違いがある場合には、遠隔地の別の装置側のアプリケーションが適切な変換処理(画面の縮小・拡大や色変換)を行うことであってもよい。
【0005】
グラフィックス描画処理を高速に行うために、グラフィックス プロセッシング ユニット(以下、「GPU」)の複数のコアを並列に動作させる技術がある。コアとはプロセサ・ダイ上に作成されるプロセサ回路の中核部分でキャッシュ・メモリを除く半導体回路部分をいう。マルチコアは、1つのプロセサ・パッケージ内に複数のプロセサ・コアを封入した技術である。
【0006】
複数のコアによって並列にグラフィックス描画処理を行う場合、複数のコアにどのように処理を振り分けるかが問題となる。複数のコアに描画処理を振り分ける方法として、画面をn個の領域に分割し、n個のコアを各領域の描画処理に割り当てる方法がある。例えばn=16の場合、図10に示すように、画面を16個の領域に分割し、16個のGPUのコアをそれぞれ画面の各領域の描画処理に振り分ける。
【0007】
関連技術として、エンコーダサーバは、MPEG−2エンコーダから送信されたMPEG−2信号を受信し、MPEG−2より情報量の圧縮率が高く、符号化後の伝送速度が低いMPEG−4信号に変換し、受信端末は、受信したMPEG−4信号をMPEG−4デコード部により復号化し、表示部に画像を表示する技術が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−136013号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述の関連技術のように、画面を複数の領域に分割し、複数のGPUなどのコアで分散処理を行うと、1つのCPUで画面全体を1つとみなして処理した結果とは異なる点が生ずる。
【0010】
図11に示すように、画面を上下に分割し横方向に長い短冊状にし、分割された各領域の描画処理をGPUなどの複数のコアで分散処理を行い、別々の領域で差分を検出すると、本来よりも多くの差分矩形が抽出されてしまう。すなわち、領域をまたがる差分矩形は、本来ならば1つの矩形と認識されるべきところ2つの矩形に分割してそれぞれ抽出されてしまうのである。図11では差分矩形は、本来28個のはずが合計42個抽出されてしまっている。これにより、本来1つの矩形として認識されてれば生じない重複部分のオーバーヘッドが生じ、エンコード/デコードに無駄な処理能力や処理時間を費やしてしまっていた。
【0011】
また、より多くの差分矩形が抽出されてしまうので画面全体での差分矩形数の最大値を制限することが困難であった。
【0012】
本発明は、以上のような課題を解決するためになされたもので、分散処理時の差分矩形数の最大値を制限し画像処理の効率化が図られた画像処理装置、画像処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の画像処理装置は、CPUと並列処理に向いたコアを複数有するコプロセッサを備え、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限することを特徴とする。
【0014】
また、本発明の画像処理方法は、CPUと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し1画面全体での差分矩形数を制限することを特徴とする。
【0015】
また、本発明のプログラムは、CPUと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記CPUに1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ1画面全体での差分矩形数を制限することを特徴とする。
【発明の効果】
【0016】
本発明によれば、分散処理時の差分矩形数の最大値を制限し画像処理の効率化を図ることが可能となる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態に係る画像処理装置の構成を示す図である。
【図2】本発明の実施の形態に係る画像処理装置の機能ブロック図である。
【図3】本発明の実施の形態に係る処理動作を示すフローチャートである。
【図4】本発明の実施の形態に係る画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図5】本発明の実施の形態に係るコアに割り当てた状態の概念図である。
【図6】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図7】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図8】差分矩形をマージする所定のルールを示す図である。
【図9】その他の実施の形態を示す図である。
【図10】従来の画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図11】従来のコアに割り当てた状態の概念図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図1に示す本実施の形態における画像処理装置1は、グラフィックデータ処理により、複数の描画コマンドを生成するソフトウェアを実行する中央演算処理装置(以下、「CPU」)10と、複数の描画コマンドで描画処理を行って、複数に分割された画面の各領域の画像描画用データを並列に生成する描画処理部としてのGPU20とそのコア20−1〜20−16と、プログラム記憶部40、メインメモリ50、入力部60及び出力部70を備え、CPU10、GPU20、フレームメモリ30、プログラム記憶装置40、メインメモリ50、入力装置60及び出力装置70は、それぞれデータ転送等のためのバス80を介して接続されている。
【0019】
CPU10は、アプリケーションソフトウェア、アプリケーション・プログラム・インタフェース(API)ミドルウェア等の各種ミドルウェア、及びデバイスドライバ等のソフトウェアを実行して、描画コマンドを生成する。CPU10がソフトウェアに制御されて処理対象のグラフィックデータから生成する描画コマンドは、GPU20のコア20−1〜20−16に転送される。
【0020】
GPU20は、並列的な処理に向いたコアを複数持つ、コプロセッサの例示であり、同様の機能を有するものであればGPUに限定されない。ここでは、画面の領域を16個に分割し、それぞれの領域についてコア20−1〜20−16が各々1個の領域の処理を担当する。
コア20−1〜20−16によって生成された画像描画用データは、フレームメモリ30に格納される。
【0021】
プログラム記憶部40は、アプリケーションソフトウェア、APIミドルウェア、デバイスドライバ等の、CPU10によって実行されるソフトウェアのプログラムコードを格納する。近年、GPU20で汎用のプログラムを実行することができるようになっており、
そのプログラムを格納していてもよい。
【0022】
メインメモリ50は、グラフィックデータ記憶領域51及びコマンドバッファ領域52を有する。グラフィックデータ記憶領域51は処理対象のグラフィックデータを格納する。コマンドバッファ領域52は、コア20−1〜20−16に転送される描画コマンドを格納する。コマンドバッファ領域52はGPU20が有するコア個数に応じて区分される。図1に示した例では、コマンドバッファ領域52は第1コマンドバッファ5201〜第16コマンドバッファ5216を有する。後述するように、第1コマンドバッファ5201〜第16コマンドバッファ5216は、CPU10がデバイスドライバを実行することによって設定される。また、メインメモリ50は、CPU10の処理により生成されるデータ等を一時的に保存する。
【0023】
入力部60はユーザがデータ等を入力するキーボード、マウス等である。出力部70は、画像処理結果・出力画像等を外部送信可能なインタフェースや表示部としてのディスプレイやプリンタ等である。
【0024】
アプリケーションソフトウェアは、画像処理装置1が有するGPU20のコアの個数に関係なく入力部60から入力されたグラフィックデータを処理し、処理結果として得られるAPI関数コール(目的の描画を行うための指示)をAPIミドルウェアに引き渡す。APIミドルウェアはそのAPI関数コールを処理して、GPU20のコア20−1〜20−16のハードウェアが実行可能な描画コマンドを生成する。デバイスドライバは、APIミドルウェアによって生成された描画コマンドをコマンドバッファ領域52にバッファリングした後、コア20−1〜20−16が新たな処理を開始できるタイミングで、例えば1フレーム分等のコア20−1〜20−16の処理単位の描画コマンドをコマンドバッファ領域52からコア20−1〜20−16に転送する。コア20−1〜20−16は描画コマンドを用いて描画処理を行い、描画処理結果である画像描画用データ(例えばピクセルデータ)をフレームメモリ30に格納し、その後出力部70から所定の出力がなされる。
【0025】
上述の画像処理装置1に関する構成で、ユーザの入力部60に対する操作の結果として、フレームメモリ30の内容が更新される。
以下では、画像処理装置1が、当該フレームメモリ30、または、出力部70から出力される画像を遠隔地の装置に送信する際に、画像の変化の差分を抽出する処理について着目して詳細に説明する。
【0026】
図2に、本実施の形態における画像処理装置1の機能ブロック図を示す。
【0027】
本実施の形態における画像処理装置1は、画面領域分割部111と、割当部112、差分検出部113と、矩形マージ部114とを備えている。
【0028】
画面領域分割部111は、GPU20のコア数に応じて並列処理が可能な領域数に1つの画面領域を分割する機能を有している。CPU10がGPU20に保有しているコア数を問い合わせてそのコア数以内の数で分割することであってよい。なお、本実施の形態の説明においては、画面を上下に分割し横方向に長い短冊状に分割する例で説明するが、画面の分割方法は上下に分割する方法に限らず、例えば画面を左右に分割する等、画面を複数の領域に分割する方法であればどのような分割方法であってもよい。
【0029】
割当部112は、分割された各領域の描画処理やマージ処理をGPU20の所定のコア20−1〜20−16等に割り当てる機能を有している。なお、所定の領域については本実施の形態におけるマージ処理を行うコアを割り当てない、すなわちマージ処理を行わないことであってもよい。
【0030】
差分検出部113は、2つの画面(例えば、現在の画面とその直前の画面)に関して、分割された各領域ついて差分矩形を抽出する機能を有している。分割された各領域の処理が割り当てられた所定のコア20−1〜20−16等がそれぞれ差分矩形を抽出する。
【0031】
矩形マージ部114は、所定のルールに従って差分矩形をマージする機能を有している。領域をまたがってそれぞれ抽出されてしまう差分矩形を本来の1つの矩形とする、または本来1つの矩形ではないかもしれないが、領域をまたがってそれぞれ抽出されてしまっている蓋然性が高い差分矩形を1つの矩形とする処理である。矩形座標のマージ処理は2つの矩形の接する直線の始点の座標データを消去してさらに終点の座標データを消去すること等で実現されてよい。マージ処理の実行は、CPUの空き状況に応じてCPUに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
所定の記憶部に格納されている1画面あたりの総抽出矩形数の最大値以内になるように差分矩形をマージする。
【0032】
以下、本実施の形態の動作について図面を参照して詳細に説明する。
図3のフローチャートを参照すると、まず、画像処理装置1の画面領域分割部111は、GPU20のコア数に応じて並列処理が可能な領域数に1つの画面領域を分割する(S301)。具体的にはCPU10がGPU20に保有しているコア数を問い合わせてそのコア数である16個に、画面を上下に分割し横方向に長い短冊状に分割する(図4参照)。
【0033】
次に、割当部112は、16個に分割された各領域の描画処理やマージ処理をGPU20のコア20−1〜20−16に割り当てる(S302)。割り当てた状態の概念図を図5に示す。具体的にはCPU10が16分割した領域の上部から順にコア20−1〜20−16に割り当てる。
【0034】
差分検出部113は、現在の画面とその直前の画面の2つの画面に関して、16個に分割された各領域ついて各々差分矩形を抽出する(S303)。具体的には16個に分割された各領域の処理が割り当てられたコア20−1〜20−16がそれぞれ差分矩形を抽出する。差分矩形が抽出された状態の概念図を図6に示す。
【0035】
そして、矩形マージ部114は、所定のルールに従って差分矩形をマージする(S304)。具体的にはマージ処理の実行は、CPUの空き状況に応じてCPUに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
差分矩形が抽出された状態を示す図7の破線で囲まれた部分は、本来の1つの矩形であるのに関わらず領域をまたがって差分矩形がそれぞれ抽出されてしまっている。
【0036】
以下、差分矩形をマージする所定のルールを図8を参照して説明する。所定の記憶部に格納されている1画面あたりの総抽出矩形数の最大数を32個に限定する場合を例に解説する。すなわち、総抽出矩形数が32個以内になるように差分矩形をマージする。たて方向のマージであるので基本的にはX座標に着目する。
まず、Step1として、2つの隣接する矩形のX座標が一致するときにマージする。
Step1の処理後まだ32個以内とならない場合、次に、Step2として、2つの隣接する矩形の長いほうの辺Bの長さが、短いほうの辺Aの長さの1.6倍以内のときにはマージする。辺が共通している部分は有効画素エリアであるが、辺が共通していない部分は無効画素エリアであり、1.6倍に限らず有効画素エリアと無効画素エリアの面積比で効率性を損なわない値を用いてよい。
Step2の処理後まだ32個以内とならない場合、次に、Step3として、2つの矩形のX座標が一致し、辺Aと辺BのY座標の距離が所定値以下のときにマージする。すなわち少し離れて隙間が生じている空間をつめることとなる。
Step3の処理後まだ32個以内とならない場合、次に、Step4として、2つの矩形の辺Aと辺Bが近いときにマージする。
Step4の処理後まだ32個以内とならない場合、次に、Step5として、画面の左上から右方向、かつ下方向に始点座標を探索し、32個目の始点から残る矩形のX方向、Y方向の最大値までをマージする。すなわち、32個〜42個までは1個にマージしてしまう。
【0037】
上記の本実施の形態によれば、1画面あたりの総抽出矩形数の最大値の最大値が32個で、1画面を16分割する場合、1つのコアあたりの抽出矩形数を最大2個までに限定すれば32個以内に収まるが、効率が悪いという状況を回避できる。
すなわち、1つのコアあたりの抽出矩形数を最大2個までに制限すると、ある分割された領域を担当するコアでは、差分が検出されずに0個の差分矩形であった場合に、本来であれば、その2つ分は、分割された領域を担当するコアで利用して4つの差分矩形を検出しても良いはずであるが、これらの処理は複数のコアで平行して行うため、融通を行うことができない。そのため、全ての分割された領域を担当するコアについて、2個以下と制限するため、効率が悪くなる。このような状況を回避できるのである。
【0038】
なお、その他の実施の形態として図9に示すように、CPU10がOSから入手した動画領域の座標から、1画面を動画領域とそれ以外の領域に5分割し、動画領域にはCPU10を割り当て、動画領域以外の4領域には面積比からGPU20のコアを割り当ててもよい。すなわち、動画領域は激しく変化し、毎画面で差分が多数生じるので帯域確保のためデータを間引く必要があるので別途処理することが求められる。
動画領域およびその他の領域では、上記のStep1〜Step5のマージ処理を行わないことであっても、また、動画領域以外の4領域については、領域の境界で、上記のStep1〜Step5のマージ処理を行うことであってもよい。
【0039】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、画像処理装置1の機能を実現するためのプログラムを各装置に読込ませて実行することにより各装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるCD−ROMまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【符号の説明】
【0040】
10 CPU
20 GPU
20−1〜20−16 コア
30 フレームメモリ
40 プログラム記憶部
50 メインメモリ
60 入力部
70 出力部
80 バス部
【特許請求の範囲】
【請求項1】
CPUと並列処理に向いたコアを複数有するコプロセッサを備え、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限することを特徴とする画像処理装置。
【請求項2】
前記1画面は上下に分割し横方向に長い短冊状に分割し、
前記所定のルールは、
2つの隣接する矩形のX座標が一致するときにマージ、
2つの隣接する矩形の長いほうの辺Bの長さが、短いほうの辺Aの長さの所定の倍率以内のときにマージ、
2つの矩形のX座標が一致し、辺Aと辺BのY座標の距離が所定値以下のときにマージ、
2つの矩形の辺Aと辺Bが近いときにマージ、
画面の左上から右方向、かつ下方向に始点座標を探索し、1画面全体で許容できる差分矩形数に該当する数の始点から残る矩形のX方向、Y方向の最大値までをマージすることであることを特徴とする請求項1記載の画像処理装置。
【請求項3】
特定の領域をその他の領域と区別して、前記マージする処理を行わないことを特徴とする請求項1または2記載の画像処理装置。
【請求項4】
CPUと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し1画面全体での差分矩形数を制限することを特徴とする画像処理方法。
【請求項5】
CPUと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記CPUに1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ1画面全体での差分矩形数を制限することを特徴とするプログラム。
【請求項1】
CPUと並列処理に向いたコアを複数有するコプロセッサを備え、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、1画面全体での差分矩形数を制限することを特徴とする画像処理装置。
【請求項2】
前記1画面は上下に分割し横方向に長い短冊状に分割し、
前記所定のルールは、
2つの隣接する矩形のX座標が一致するときにマージ、
2つの隣接する矩形の長いほうの辺Bの長さが、短いほうの辺Aの長さの所定の倍率以内のときにマージ、
2つの矩形のX座標が一致し、辺Aと辺BのY座標の距離が所定値以下のときにマージ、
2つの矩形の辺Aと辺Bが近いときにマージ、
画面の左上から右方向、かつ下方向に始点座標を探索し、1画面全体で許容できる差分矩形数に該当する数の始点から残る矩形のX方向、Y方向の最大値までをマージすることであることを特徴とする請求項1記載の画像処理装置。
【請求項3】
特定の領域をその他の領域と区別して、前記マージする処理を行わないことを特徴とする請求項1または2記載の画像処理装置。
【請求項4】
CPUと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記CPUが1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し1画面全体での差分矩形数を制限することを特徴とする画像処理方法。
【請求項5】
CPUと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記CPUに1画面を複数の領域に分割し、それぞれの領域毎に1つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ1画面全体での差分矩形数を制限することを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2010−237936(P2010−237936A)
【公開日】平成22年10月21日(2010.10.21)
【国際特許分類】
【出願番号】特願2009−84813(P2009−84813)
【出願日】平成21年3月31日(2009.3.31)
【出願人】(302069930)NECパーソナルプロダクツ株式会社 (738)
【Fターム(参考)】
【公開日】平成22年10月21日(2010.10.21)
【国際特許分類】
【出願日】平成21年3月31日(2009.3.31)
【出願人】(302069930)NECパーソナルプロダクツ株式会社 (738)
【Fターム(参考)】
[ Back to top ]