(57)【要約】【課題】分散処理時の差分矩形数の最大値を制限し画像処理の効率化が図られた画像処理装置等を提供すること。【解決手段】画像処理装置１は、ＣＰＵ１０と並列処理に向いたコアを複数有するコプロセッサ２０を備え、ＣＰＵ１０が１画面を複数の領域に分割し、それぞれの領域毎に１つずつコアを割り当て、コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、１画面全体での差分矩形数を制限する。【選択図】図１
2010237936.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを備え、
前記ＣＰＵが１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、１画面全体での差分矩形数を制限することを特徴とする画像処理装置。
【請求項２】
前記１画面は上下に分割し横方向に長い短冊状に分割し、
前記所定のルールは、
２つの隣接する矩形のＸ座標が一致するときにマージ、
２つの隣接する矩形の長いほうの辺Ｂの長さが、短いほうの辺Ａの長さの所定の倍率以内のときにマージ、
２つの矩形のＸ座標が一致し、辺Ａと辺ＢのＹ座標の距離が所定値以下のときにマージ、
２つの矩形の辺Ａと辺Ｂが近いときにマージ、
画面の左上から右方向、かつ下方向に始点座標を探索し、１画面全体で許容できる差分矩形数に該当する数の始点から残る矩形のＸ方向、Ｙ方向の最大値までをマージすることであることを特徴とする請求項１記載の画像処理装置。
【請求項３】
特定の領域をその他の領域と区別して、前記マージする処理を行わないことを特徴とする請求項１または２記載の画像処理装置。
【請求項４】
ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記ＣＰＵが１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し１画面全体での差分矩形数を制限することを特徴とする画像処理方法。
【請求項５】
ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記ＣＰＵに１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ１画面全体での差分矩形数を制限することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検出された差分矩形をマージして画像処理の効率化を図る技術に関する。
【背景技術】
【０００２】
自宅のＰＣを遠隔地の別の装置からリモート操作する際に、自宅のＰＣの画面に表示されるべき画像を、遠隔地にある別の装置の画面上に再現したい場合がある。
【０００３】
例えば、自宅のＰＣの画面を遠隔地の別の装置の画面上に表示し始めたときには、全画面の情報を送信するが、それ以降は自宅のＰＣの画面の変化部分のみの情報を遠隔地の別の装置側に送信し、遠隔地の別の装置では、変化部分のみを描画するようにすると、データ送信量と描画処理量が少なく済む。
【０００４】
自宅のＰＣと遠隔地の別の装置間で画面表示性能の違い（ディスプレイピクセル数、解像度や表示色数）に違いがある場合には、遠隔地の別の装置側のアプリケーションが適切な変換処理（画面の縮小・拡大や色変換）を行うことであってもよい。
【０００５】
グラフィックス描画処理を高速に行うために、グラフィックス  プロセッシング  ユニット（以下、「ＧＰＵ」）の複数のコアを並列に動作させる技術がある。コアとはプロセサ・ダイ上に作成されるプロセサ回路の中核部分でキャッシュ・メモリを除く半導体回路部分をいう。マルチコアは、１つのプロセサ・パッケージ内に複数のプロセサ・コアを封入した技術である。
【０００６】
複数のコアによって並列にグラフィックス描画処理を行う場合、複数のコアにどのように処理を振り分けるかが問題となる。複数のコアに描画処理を振り分ける方法として、画面をn個の領域に分割し、ｎ個のコアを各領域の描画処理に割り当てる方法がある。例えばｎ＝１６の場合、図１０に示すように、画面を１６個の領域に分割し、１６個のＧＰＵのコアをそれぞれ画面の各領域の描画処理に振り分ける。
【０００７】
関連技術として、エンコーダサーバは、ＭＰＥＧ−２エンコーダから送信されたＭＰＥＧ−２信号を受信し、ＭＰＥＧ−２より情報量の圧縮率が高く、符号化後の伝送速度が低いＭＰＥＧ−４信号に変換し、受信端末は、受信したＭＰＥＧ−４信号をＭＰＥＧ−４デコード部により復号化し、表示部に画像を表示する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１３６０１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述の関連技術のように、画面を複数の領域に分割し、複数のＧＰＵなどのコアで分散処理を行うと、１つのＣＰＵで画面全体を１つとみなして処理した結果とは異なる点が生ずる。
【００１０】
図１１に示すように、画面を上下に分割し横方向に長い短冊状にし、分割された各領域の描画処理をＧＰＵなどの複数のコアで分散処理を行い、別々の領域で差分を検出すると、本来よりも多くの差分矩形が抽出されてしまう。すなわち、領域をまたがる差分矩形は、本来ならば１つの矩形と認識されるべきところ２つの矩形に分割してそれぞれ抽出されてしまうのである。図１１では差分矩形は、本来２８個のはずが合計４２個抽出されてしまっている。これにより、本来１つの矩形として認識されてれば生じない重複部分のオーバーヘッドが生じ、エンコード／デコードに無駄な処理能力や処理時間を費やしてしまっていた。
【００１１】
また、より多くの差分矩形が抽出されてしまうので画面全体での差分矩形数の最大値を制限することが困難であった。
【００１２】
本発明は、以上のような課題を解決するためになされたもので、分散処理時の差分矩形数の最大値を制限し画像処理の効率化が図られた画像処理装置、画像処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の画像処理装置は、ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを備え、
前記ＣＰＵが１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当て、
前記コアの処理により抽出された差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージして、１画面全体での差分矩形数を制限することを特徴とする。
【００１４】
また、本発明の画像処理方法は、ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを利用した画像処理方法であって、
前記ＣＰＵが１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当てるステップと、
前記コアが、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージするステップとを有し１画面全体での差分矩形数を制限することを特徴とする。
【００１５】
また、本発明のプログラムは、ＣＰＵと並列処理に向いたコアを複数有するコプロセッサを供えるコンピュータに、
前記ＣＰＵに１画面を複数の領域に分割し、それぞれの領域毎に１つずつ前記コアを割り当てる処理を実行させ、
前記コアに、抽出した差分矩形について、隣接する領域で抽出された差分矩形を所定のルールに従ってマージする処理を実行させ１画面全体での差分矩形数を制限することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、分散処理時の差分矩形数の最大値を制限し画像処理の効率化を図ることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係る画像処理装置の構成を示す図である。
【図２】本発明の実施の形態に係る画像処理装置の機能ブロック図である。
【図３】本発明の実施の形態に係る処理動作を示すフローチャートである。
【図４】本発明の実施の形態に係る画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図５】本発明の実施の形態に係るコアに割り当てた状態の概念図である。
【図６】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図７】本発明の実施の形態に係る差分矩形が抽出された状態の概念図である。
【図８】差分矩形をマージする所定のルールを示す図である。
【図９】その他の実施の形態を示す図である。
【図１０】従来の画面を上下に分割し横方向に長い短冊状に分割することを示す概念図である。
【図１１】従来のコアに割り当てた状態の概念図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について図面を参照して詳細に説明する。図１に示す本実施の形態における画像処理装置１は、グラフィックデータ処理により、複数の描画コマンドを生成するソフトウェアを実行する中央演算処理装置（以下、「ＣＰＵ」）１０と、複数の描画コマンドで描画処理を行って、複数に分割された画面の各領域の画像描画用データを並列に生成する描画処理部としてのＧＰＵ２０とそのコア２０−１〜２０−１６と、プログラム記憶部４０、メインメモリ５０、入力部６０及び出力部７０を備え、ＣＰＵ１０、ＧＰＵ２０、フレームメモリ３０、プログラム記憶装置４０、メインメモリ５０、入力装置６０及び出力装置７０は、それぞれデータ転送等のためのバス８０を介して接続されている。
【００１９】
ＣＰＵ１０は、アプリケーションソフトウェア、アプリケーション・プログラム・インタフェース（ＡＰＩ）ミドルウェア等の各種ミドルウェア、及びデバイスドライバ等のソフトウェアを実行して、描画コマンドを生成する。ＣＰＵ１０がソフトウェアに制御されて処理対象のグラフィックデータから生成する描画コマンドは、ＧＰＵ２０のコア２０−１〜２０−１６に転送される。
【００２０】
ＧＰＵ２０は、並列的な処理に向いたコアを複数持つ、コプロセッサの例示であり、同様の機能を有するものであればＧＰＵに限定されない。ここでは、画面の領域を１６個に分割し、それぞれの領域についてコア２０−１〜２０−１６が各々１個の領域の処理を担当する。
コア２０−１〜２０−１６によって生成された画像描画用データは、フレームメモリ３０に格納される。
【００２１】
プログラム記憶部４０は、アプリケーションソフトウェア、ＡＰＩミドルウェア、デバイスドライバ等の、ＣＰＵ１０によって実行されるソフトウェアのプログラムコードを格納する。近年、ＧＰＵ２０で汎用のプログラムを実行することができるようになっており、
そのプログラムを格納していてもよい。
【００２２】
メインメモリ５０は、グラフィックデータ記憶領域５１及びコマンドバッファ領域５２を有する。グラフィックデータ記憶領域５１は処理対象のグラフィックデータを格納する。コマンドバッファ領域５２は、コア２０−１〜２０−１６に転送される描画コマンドを格納する。コマンドバッファ領域５２はＧＰＵ２０が有するコア個数に応じて区分される。図１に示した例では、コマンドバッファ領域５２は第１コマンドバッファ５２０１〜第１６コマンドバッファ５２１６を有する。後述するように、第１コマンドバッファ５２０１〜第１６コマンドバッファ５２１６は、ＣＰＵ１０がデバイスドライバを実行することによって設定される。また、メインメモリ５０は、ＣＰＵ１０の処理により生成されるデータ等を一時的に保存する。
【００２３】
入力部６０はユーザがデータ等を入力するキーボード、マウス等である。出力部７０は、画像処理結果・出力画像等を外部送信可能なインタフェースや表示部としてのディスプレイやプリンタ等である。
【００２４】
アプリケーションソフトウェアは、画像処理装置１が有するＧＰＵ２０のコアの個数に関係なく入力部６０から入力されたグラフィックデータを処理し、処理結果として得られるＡＰＩ関数コール（目的の描画を行うための指示）をＡＰＩミドルウェアに引き渡す。ＡＰＩミドルウェアはそのＡＰＩ関数コールを処理して、ＧＰＵ２０のコア２０−１〜２０−１６のハードウェアが実行可能な描画コマンドを生成する。デバイスドライバは、ＡＰＩミドルウェアによって生成された描画コマンドをコマンドバッファ領域５２にバッファリングした後、コア２０−１〜２０−１６が新たな処理を開始できるタイミングで、例えば１フレーム分等のコア２０−１〜２０−１６の処理単位の描画コマンドをコマンドバッファ領域５２からコア２０−１〜２０−１６に転送する。コア２０−１〜２０−１６は描画コマンドを用いて描画処理を行い、描画処理結果である画像描画用データ（例えばピクセルデータ）をフレームメモリ３０に格納し、その後出力部７０から所定の出力がなされる。
【００２５】
上述の画像処理装置１に関する構成で、ユーザの入力部６０に対する操作の結果として、フレームメモリ３０の内容が更新される。
以下では、画像処理装置１が、当該フレームメモリ３０、または、出力部７０から出力される画像を遠隔地の装置に送信する際に、画像の変化の差分を抽出する処理について着目して詳細に説明する。
【００２６】
図２に、本実施の形態における画像処理装置１の機能ブロック図を示す。
【００２７】
本実施の形態における画像処理装置１は、画面領域分割部１１１と、割当部１１２、差分検出部１１３と、矩形マージ部１１４とを備えている。
【００２８】
画面領域分割部１１１は、ＧＰＵ２０のコア数に応じて並列処理が可能な領域数に１つの画面領域を分割する機能を有している。ＣＰＵ１０がＧＰＵ２０に保有しているコア数を問い合わせてそのコア数以内の数で分割することであってよい。なお、本実施の形態の説明においては、画面を上下に分割し横方向に長い短冊状に分割する例で説明するが、画面の分割方法は上下に分割する方法に限らず、例えば画面を左右に分割する等、画面を複数の領域に分割する方法であればどのような分割方法であってもよい。
【００２９】
割当部１１２は、分割された各領域の描画処理やマージ処理をＧＰＵ２０の所定のコア２０−１〜２０−１６等に割り当てる機能を有している。なお、所定の領域については本実施の形態におけるマージ処理を行うコアを割り当てない、すなわちマージ処理を行わないことであってもよい。
【００３０】
差分検出部１１３は、２つの画面（例えば、現在の画面とその直前の画面）に関して、分割された各領域ついて差分矩形を抽出する機能を有している。分割された各領域の処理が割り当てられた所定のコア２０−１〜２０−１６等がそれぞれ差分矩形を抽出する。
【００３１】
矩形マージ部１１４は、所定のルールに従って差分矩形をマージする機能を有している。領域をまたがってそれぞれ抽出されてしまう差分矩形を本来の１つの矩形とする、または本来１つの矩形ではないかもしれないが、領域をまたがってそれぞれ抽出されてしまっている蓋然性が高い差分矩形を１つの矩形とする処理である。矩形座標のマージ処理は２つの矩形の接する直線の始点の座標データを消去してさらに終点の座標データを消去すること等で実現されてよい。マージ処理の実行は、ＣＰＵの空き状況に応じてＣＰＵに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
所定の記憶部に格納されている１画面あたりの総抽出矩形数の最大値以内になるように差分矩形をマージする。
【００３２】
以下、本実施の形態の動作について図面を参照して詳細に説明する。
図３のフローチャートを参照すると、まず、画像処理装置１の画面領域分割部１１１は、ＧＰＵ２０のコア数に応じて並列処理が可能な領域数に１つの画面領域を分割する（Ｓ３０１）。具体的にはＣＰＵ１０がＧＰＵ２０に保有しているコア数を問い合わせてそのコア数である１６個に、画面を上下に分割し横方向に長い短冊状に分割する（図４参照）。
【００３３】
次に、割当部１１２は、１６個に分割された各領域の描画処理やマージ処理をＧＰＵ２０のコア２０−１〜２０−１６に割り当てる（Ｓ３０２）。割り当てた状態の概念図を図５に示す。具体的にはＣＰＵ１０が１６分割した領域の上部から順にコア２０−１〜２０−１６に割り当てる。
【００３４】
差分検出部１１３は、現在の画面とその直前の画面の２つの画面に関して、１６個に分割された各領域ついて各々差分矩形を抽出する（Ｓ３０３）。具体的には１６個に分割された各領域の処理が割り当てられたコア２０−１〜２０−１６がそれぞれ差分矩形を抽出する。差分矩形が抽出された状態の概念図を図６に示す。
【００３５】
そして、矩形マージ部１１４は、所定のルールに従って差分矩形をマージする（Ｓ３０４）。具体的にはマージ処理の実行は、ＣＰＵの空き状況に応じてＣＰＵに処理を渡してもよいし、各コアで行ってもよいし、所定のコアで行ってもよいし、それらの組合せにより並列処理されてもよい。
差分矩形が抽出された状態を示す図７の破線で囲まれた部分は、本来の１つの矩形であるのに関わらず領域をまたがって差分矩形がそれぞれ抽出されてしまっている。
【００３６】
以下、差分矩形をマージする所定のルールを図８を参照して説明する。所定の記憶部に格納されている１画面あたりの総抽出矩形数の最大数を３２個に限定する場合を例に解説する。すなわち、総抽出矩形数が３２個以内になるように差分矩形をマージする。たて方向のマージであるので基本的にはＸ座標に着目する。
まず、Ｓｔｅｐ１として、２つの隣接する矩形のＸ座標が一致するときにマージする。
Ｓｔｅｐ１の処理後まだ３２個以内とならない場合、次に、Ｓｔｅｐ２として、２つの隣接する矩形の長いほうの辺Ｂの長さが、短いほうの辺Ａの長さの１．６倍以内のときにはマージする。辺が共通している部分は有効画素エリアであるが、辺が共通していない部分は無効画素エリアであり、１．６倍に限らず有効画素エリアと無効画素エリアの面積比で効率性を損なわない値を用いてよい。
Ｓｔｅｐ２の処理後まだ３２個以内とならない場合、次に、Ｓｔｅｐ３として、２つの矩形のＸ座標が一致し、辺Ａと辺ＢのＹ座標の距離が所定値以下のときにマージする。すなわち少し離れて隙間が生じている空間をつめることとなる。
Ｓｔｅｐ３の処理後まだ３２個以内とならない場合、次に、Ｓｔｅｐ４として、２つの矩形の辺Ａと辺Ｂが近いときにマージする。
Ｓｔｅｐ４の処理後まだ３２個以内とならない場合、次に、Ｓｔｅｐ５として、画面の左上から右方向、かつ下方向に始点座標を探索し、３２個目の始点から残る矩形のＸ方向、Ｙ方向の最大値までをマージする。すなわち、３２個〜４２個までは１個にマージしてしまう。
【００３７】
上記の本実施の形態によれば、１画面あたりの総抽出矩形数の最大値の最大値が３２個で、１画面を１６分割する場合、１つのコアあたりの抽出矩形数を最大２個までに限定すれば３２個以内に収まるが、効率が悪いという状況を回避できる。
すなわち、１つのコアあたりの抽出矩形数を最大２個までに制限すると、ある分割された領域を担当するコアでは、差分が検出されずに０個の差分矩形であった場合に、本来であれば、その２つ分は、分割された領域を担当するコアで利用して４つの差分矩形を検出しても良いはずであるが、これらの処理は複数のコアで平行して行うため、融通を行うことができない。そのため、全ての分割された領域を担当するコアについて、２個以下と制限するため、効率が悪くなる。このような状況を回避できるのである。
【００３８】
なお、その他の実施の形態として図９に示すように、ＣＰＵ１０がＯＳから入手した動画領域の座標から、１画面を動画領域とそれ以外の領域に５分割し、動画領域にはＣＰＵ１０を割り当て、動画領域以外の４領域には面積比からＧＰＵ２０のコアを割り当ててもよい。すなわち、動画領域は激しく変化し、毎画面で差分が多数生じるので帯域確保のためデータを間引く必要があるので別途処理することが求められる。
動画領域およびその他の領域では、上記のＳｔｅｐ１〜Ｓｔｅｐ５のマージ処理を行わないことであっても、また、動画領域以外の４領域については、領域の境界で、上記のＳｔｅｐ１〜Ｓｔｅｐ５のマージ処理を行うことであってもよい。
【００３９】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、画像処理装置１の機能を実現するためのプログラムを各装置に読込ませて実行することにより各装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【符号の説明】
【００４０】
１０    ＣＰＵ
２０    ＧＰＵ
２０−１〜２０−１６    コア
３０    フレームメモリ
４０    プログラム記憶部
５０    メインメモリ
６０    入力部
７０    出力部
８０    バス部
【図１】
2010237936.tif 000003
【図２】
2010237936.tif 000004
【図３】
2010237936.tif 000005
【図４】
2010237936.tif 000006
【図５】
2010237936.tif 000007
【図６】
2010237936.tif 000008
【図７】
2010237936.tif 000009
【図８】
2010237936.tif 000010
【図９】
2010237936.tif 000011
【図１０】
2010237936.tif 000012
【図１１】
2010237936.tif 000013