説明

画像処理装置及び画像処理方法

【課題】画像データに対してより効率的に複数の画像処理をマルチコアCPUまたはGPUが施す技術を提供する。
【解決手段】入力される画像フレームを複数のブロックに分割し、この分割したブロックごとに一つ以上の画像処理を記述する画像データ形式に基づいて動作するマルチコアCPUとGPUのいずれか又は双方から成るプロセッサを備え、前記プロセッサは前記画像データ形式に基づく画像処理を並列して実施することを特徴とする画像処理装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及び画像処理方法に関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)のマルチコア化、GPU(Graphics Processing Unit)による汎用演算(General Purpose GPU、GPGPU)によって、CPUとGPUの処理能力は飛躍的に向上している。この高い処理能力を持ったCPUとGPUを協調動作させることによって更なる処理能力の向上が期待される。例えば特許文献1に記載されている内容は、情報処理装置で、CPUとGPUで構成され、CPUから通知されるディスプレイリストに基づいてGPUは描画コンテクストを読み出し、レンダリング処理を行いフレームメモリに描画するというものである。
【0003】
しかしながら、一般にCPUとGPUのいずれであれ画像データに対して効率的に複数の画像処理を施すのは容易でなかった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−18460号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、画像データに対してより効率的に複数の画像処理をマルチコアCPUまたはGPUが施す技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の画像処理装置は、入力される画像フレームを複数のブロックに分割し、この分割したブロックごとに一つ以上の画像処理を記述する画像データ形式に基づいて動作するマルチコアCPUとGPUのいずれか又は双方から成るプロセッサを備え、前記プロセッサは前記画像データ形式に基づく画像処理を並列して実施することを特徴とする。
【発明の効果】
【0007】
本発明によれば、画像データに対してより効率的に複数の画像処理をマルチコアCPUまたはGPUが施す画像処理装置が得られる。
【図面の簡単な説明】
【0008】
【図1】本発明の画像処理装置の実施形態であるコンピュータの構成を示す図。
【図2】同実施形態の低解像度画像に対して各種フィルタを適用する例を示す図。
【図3】同実施形態の画像フレームをブロック分割する例を示す図。
【図4】同実施形態の画像処理ブロック情報データの形態を示す図。
【図5】同実施形態に用いられるフィルタを適用される画素領域Pと左のマージン領域MLと右のマージン領域MRとの配置関係を示す説明図。
【図6】同実施形態のCPUとGPUで処理する画像フィルタの数を変える例。
【図7】同実施形態のCPUからGPUの画像転送を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、本発明による画像処理装置の実施形態を図1乃至図7を参照して説明する。
CPUとGPUの協調動作についてはMPEG‐2などのエンコード処理において、その負荷およびコンテンツのピクチャ配列に応じて、CPUとGPUを使い分けて、再生を高速化する方法が提案されている。
【0010】
本実施形態としては、デコード処理の後段に位置するより一般的な、拡大処理を含む画像処理をCPUとGPUで協調動作させる例について説明する。
まず、図1を参照しながら、本発明の画像処理装置の一実施形態であるコンピュータの構成について説明する。図1は、本発明の画像処理装置の一実施形態であるコンピュータの構成を示す図である。
【0011】
コンピュータ10は、図1に示すように、CPU111と、ノースブリッジ113と、メインメモリ115と、グラフィカルプロセッシングユニット(GPU)117と、VRAM118と、サウスブリッジ119と、BIOS−ROM121と、ハードディスクドライブ(HDD)123と、光ディスクドライブ(ODD)125と、アナログTVチューナ127と、デジタルTVチューナ129と、エンベデッド・コントローラ/キーボードコントローラIC(EC/KBC)131と、ネットワークコントローラ133と、無線通信デバイス135とを有する。
【0012】
CPU111は、本コンピュータ10の動作を制御するために設けられたプロセッサであり、HDD123からメインメモリ115にロードされる、オペレーティングシステム(OS)、及び画像処理プログラム20等の各種プログラムを実行する。画像処理プログラム20は、例えばMPEG‐2等の符号化方式で符号化された動画像符号化列を復号した後に得られる画像データを処理するためのプログラムである。画像処理プログラム20が復号化を待つ該動画像符号化列は、例えばDVD(Digital Versatile Disk)からODD125が読み込んだものや、デジタルTVチューナ129が受信したものが考えられる。
【0013】
また、CPU111は、BIOS−ROM121に格納されたBIOS(Basic Input Output System)も実行する。BIOSはハードウェア制御のためのプログラムである。
【0014】
ノースブリッジ113はCPU111のローカルバスと、サウスブリッジ119との間を接続するブリッジである。ノースブリッジ113には、メインメモリ115をアクセス制御するメモリコントローラも内蔵されている。また、ノースブリッジ113は、PCI Expressバス等を介してGPU117との通信を実行する機能も有している。
【0015】
GPU117は本コンピュータ10のディスプレイモニタとして使用されるLCD(Liquid Crystal Display)120を制御する表示コントローラである。このGPU117はOS等によりVRAM118に書き込まれた画像データをLCD120に表示する。また先述の通り、GPU117は画像処理プログラム20による制御の下、動画像符号化列の復号化結果の画像データに対して画像処理を行う機能も有する。
【0016】
サウスブリッジ119は、LPC(Low Pin Count)バス上の各デバイス、及びPCI(Peripheral Component Interconnect)バス上の各デバイスを制御する。また、サウスブリッジ119は、HDD123、ODD125を制御するためのIDE(Integrated Drive Electronics)コントローラを内蔵している。
【0017】
さらに、サウスブリッジ119は、リアルタイムクロック(RTC)119Aを備えている。RTC119Aは、現在時刻(年、月、日、時、分、秒)を計時する時計モジュールとして機能する。
【0018】
アナログTVチューナ127、デジタルTVチューナ129は、其々放送波によって放送される放送番組データを受信する受信部である。本実施例では、アナログTVチューナ127は、アナログ放送信号によって放送される放送番組データを受信するアナログTVチューナから構成され、デジタルTVチューナ129は、地上波デジタル放送信号によって放送される放送番組データを受信するデジタルTVチューナから構成されている。
【0019】
EC/KBC131は、電力管理のためのエンベデッド・コントローラと、キーボード(KB)132及びタッチパッド135を制御するためのキーボードコントローラとが集約された、1チップマイクロコンピュータである。EC/KBC131は、ユーザによるパワーボタンの操作に応じて本コンピュータ10をパワーオン/パワーオフする機能を有している。本コンピュータ10の各コンポーネントに供給される動作電源は、本コンピュータ10に内蔵されたバッテリ136、又はACアダプタ138を介して外部から供給される外部電源から生成される。
【0020】
ネットワークコントローラ133は有線ネットワークに接続するためのデバイスであり、インターネット等の外部ネットワークとの通信を実行するために使用される。また、無線通信デバイス135は無線ネットワークに接続するためのデバイスであり、他の無線通信デバイスとの一対一の無線通信や、インターネット等の外部ネットワークとの通信等に使用される。
【0021】
次に、図2を参照して画像処理プログラム20の機能を説明する。図2は、画像処理プログラム20が扱う対象とする画像データの構成を示す。
先述の通り、図2に示す画像処理プログラム20は、CPU111及びGPU117を用いて復号化後の画像データの画像処理を行う。図2は、CPU111で拡大処理する前の低解像度画像に対して破線囲い枠21で示すように画像フィルタAおよび画像フィルタBを適用し、GPU117上で破線囲い枠22で示すように画像の拡大処理を行う画像フィルタCを適用後、高解像度画像に対して画像フィルタDを適用する例である。
【0022】
図3は、画像フレームをブロック分割する例を示す図である。
まずCPU111は、処理元の低解像画像をN個の矩形ブロックに分割し、このN個分の画像処理ブロック情報データをメインメモリ115内に作成する。各矩形ブロックは必ずしも同一サイズでなくともよいが、例えば縦横8画素×8画素のサイズとする。
【0023】
この画像処理ブロック情報データは、図4に示す形態のように以下の要素から構成される。
(1)画像処理ブロック番号
画像処理ブロック番号は、処理元の画像フレームをN個の画像ブロックに分割した際の画像ブロック番号である。これは例えば図3に示したブロック1〜ブロックNに各相当する1〜Nの番号である。
【0024】
(2a)参照画像データのオフセット位置
参照画像データのオフセット位置は、画像ブロック情報データ内に含まれる画像ブロックデータのオフセット位置である。例えばブロックI(1≦I≦N)のブロックに関して、画像処理ブロック番号記述位置からの参照画像データのオフセット位置を表す。
【0025】
(2b)参照画像データのデータサイズ
参照画像データのデータサイズは、画像ブロックデータのデータサイズである。例えばブロックI(1≦I≦N)のブロックで、参照画像データのデータサイズを表す。上記のように縦横8画素×8画素のサイズであれば、例えば画素単位で64と表す。
【0026】
(2c)参照画像データのデータフォーマット
参照画像データのデータフォーマットには、画像ブロックデータのデータ形式を特定するIDが含まれている。このデータ形式としては、種別として画像の圧縮/非圧縮や圧縮の場合の圧縮方法が記述される。
【0027】
(3)画像処理フィルタリスト
画像処理フィルタリストには、1つ以上の画像フィルタリスト(後述)が含まれる。
(4)参照画像データ
参照画像データには、実際の画像ブロックデータが含まれる。
また、画像処理ブロック情報データ内の画像処理フィルタリスト(1〜K)は、各画像フィルタリストとして次のような要素から構成される。
(a)画像処理フィルタ番号
画像処理フィルタ番号には、適用する画像処理のフィルタ番号が残り行うべきフィルタ数として非負の整数で降順に指定される(最後の画像処理フィルタリストKに相当する画像フィルタのフィルタ番号は0)。
【0028】
(b)画像処理フィルタ種別
画像処理フィルタ種別には、画像処理フィルタの種別を特定するIDが含まれる。この種別としては後述のA、B、C、Dの種類別や更にどのようなアルゴリズムを用いたフィルタであるかといったことが記述される。
【0029】
(c)画像処理フィルタパラメータ
画像処理フィルタパラメータには、画像フィルタを適用する際に画像フィルタに渡されるパラメータを指定する。
(d)参照ブロック情報(座標、幅、高さ)
参照ブロック情報には、画像フィルタを適用する前の画像ブロックの画像フレームに対する座標、画像ブロックの幅および高さが含まれる。
(e)参照ブロックマージン
参照ブロックマージンには、フィルタを適用する際に参照する左右上下の拡張画素のマージンを指定する。図5では、あるフィルタを適用される画素領域Pと左のマージン領域MLと右のマージン領域MRとの配置関係が例示されている。フィルタにより画素領域とマージン領域との配置関係やマージン領域のサイズは適宜変わる。
【0030】
(f)処理後ブロック情報(座標、幅、高さ)
処理後ブロック情報には、画像フィルタを適用した後の画像ブロックの画像フレームに対する座標、画像ブロックの幅および高さが含まれる
各画像ブロックに対して、1つ以上の画像フィルタリスト内のそれぞれこれらa〜fの情報に従って、画像フィルタを適用していくことになる。
以下では、この画像処理ブロック情報データおよび画像処理フィルタリストを使って、SD入力画像に対して、ノイズ除去フィルタA、先鋭化フィルタB、拡大フィルタC、ポストフィルタDの4種類の画像フィルタを適用し、HD画像に変換する例を説明する。
【0031】
図6は、画像ブロック毎にCPUとGPUで処理する画像フィルタの数を変える例である。画像フレームを矩形ブロックに分割し、N個の画像処理ブロック情報データを作成する。なおこのような画像データ形式の作成は装置内で行なわずにネットワークで得るような形態でもよい。
【0032】
CPUがCPUとGPUで処理する画像フィルタの数を変える制御をしている具体例として、例えば図6内のブロック1は、ノイズ除去フィルタAと先鋭化フィルタBと拡大フィルタCとポストフィルタDをGPUで処理する例である。また図6内のブロック2は、ノイズ除去フィルタAをCPUで処理し、先鋭化フィルタBと拡大フィルタCとポストフィルタDをGPUで処理する例である。また図6内のブロックNは、ノイズ除去フィルタAと先鋭化フィルタBをCPUで処理し、拡大フィルタCとポストフィルタDをGPUで処理する例である。このようなフィルタの数、種類とは予め不揮発性のメモリに記録しておけばよい。
【0033】
いずれも最初の画像処理ブロック情報データには4つの画像処理フィルタリストと、処理前の画像ブロックデータが含まれている。CPU側では最初の画像処理フィルタリストを解析し、画像フィルタの種別を特定する。また、画像処理ブロック情報データの情報に基づいて画像ブロックデータを取得し、指定された画像フィルタに対して、画像ブロックデータ、画像処理前後のブロック座標位置、サイズ、マージン情報を指定されたパラメータ情報を渡して画像処理を行う。
【0034】
画像処理後は概要として、先頭の画像フィルタリストを削除し、次の画像フィルタリストを解析し、最初の画像フィルタと同様の処理を行う。この際最初の画像フィルタで処理後の画像ブロックを、次の画像フィルタの入力画像とする。
【0035】
ブロックNの例では、CPU側では先鋭化フィルタBの適用後、拡大フィルタCとポストフィルタDの処理をGPUに分担させるよう画像処理ブロック情報データを更新してGPUに転送する他に、GPUに既存のコマンドを用いて画像データを転送する。この際図7に示すように以下の処理を行う。
【0036】
ステップS71(リスト削除):処理済みの画像フィルタリストを削除する。
ステップS72(データ変換、格納):処理後の画像ブロックを画像データ形式に従って変換し、参照画像データ部(N−3)に格納する。
ステップS73(データ情報更新):参照画像データのオフセット位置および参照画像データサイズを更新する(N−3)。
この際、画像データ形式として可逆圧縮可能な画像フォーマットを指定すると、圧縮しない場合と比較してCPUとGPUの画像転送コストを削減することができる。可逆圧縮可能な画像フォーマットとして、静止画像ではPNGやGIFといったものがある。圧縮方法としては、精度の高い非可逆なフォーマットでもよい。
【0037】
GPUでは転送された画像処理ブロック情報データ中の画像ブロック情報に基づいて、ブロックの画像データを解凍(伸張)し、低解像度の画像処理と同様に拡大フィルタCおよびポストフィルタDの画像処理を行う。
【0038】
GPUは、転送されたデータ形式が画像処理ブロック情報データであった場合に図7のフローの処理を実行する。或いはGPUが図7の処理をすることを命令されると共に(または命令された後)、画像処理ブロック情報データが入力されたら、図7のフローの処理を実行するような構成としておいてもよい。
【0039】
以上の実施形態では、CPUとGPUの協調動作によって拡大処理も含む複数の画像処理を行う画像処理装置において以下のような効果を得ることができる。
(1)画像フレームをブロックに分割し、画像ブロック毎に複数の画像処理リストを指定可能とする
(2)画像ブロック毎に可逆圧縮を含む画像フォーマットを指定可能とする
(3)CPU側で低解像画像の処理を行い、GPU側で高解像画像の処理を行うことによって、以下のように、画像処理の処理時間を短縮することができる
(3a)CPU,GPU内の並列処理を容易にする
例えばCPUのコアの性能、扱い易いデータサイズに合わせて画像ブロックサイズを決めるのが好適である。
(3b)CPUとGPUの同時処理を容易にする
或るブロックはCPU、別のブロックはGPUで扱う等である。
(3c)CPUとGPU間のデータ転送量を削減
なお近年、GPUもグレードによって、動作速度や容量の異なるフレームメモリを有するものも現れている。CPUとGPUの各グレードのものの組合せによって図6にヴァリエーションを表したような協調動作の分担の既定値(例えば最初の画像処理ブロック情報データのK個のフィルタリストのうち何個ずつ分担するか)を設定しておいてもよい。また、各コアの動作の終了等のステータスを監視してGPUの動作をカバーするような動的な構成としてもよい。
【0040】
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。
例えば、マルチコア/GPU環境としてプロセッサはCPUとGPUのいずれか片方のみでもよい。また画像データ形式自体に並列性を持たせる方法としては、上記のようなリスト形式のものでなくても構わない。
【0041】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
【符号の説明】
【0042】
10・・・コンピュータ
20・・・復号化プログラム
111・・・CPU
113・・・ノースブリッジ
115・・・メインメモリ
117・・・GPU
118・・・VRAM
119・・・サウスブリッジ
119A・・・RTC
121・・・BIOS−ROM
123・・・HDD
125・・・ODD
127・・・アナログTVチューナ
129・・・デジタルTVチューナ
131・・・EC/KBC
132・・・キーボード
133・・・ネットワークコントローラ
134・・・タッチパッド
135・・・無線通信デバイス
136・・・バッテリ
138・・・ACアダプタ

【特許請求の範囲】
【請求項1】
入力される画像フレームを複数のブロックに分割し、この分割したブロックごとに一つ以上の画像処理を記述する画像データ形式に基づいて動作するマルチコアCPUとGPUのいずれか又は双方から成るプロセッサを備え、
前記プロセッサは前記画像データ形式に基づく画像処理を並列して実施することを特徴とする画像処理装置。
【請求項2】
前記画像処理として拡大処理を含み、前記プロセッサとしてGPU(Graphics Processing Unit)を備えたことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記拡大処理は、前記GPUが専任されて行うことを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記GPUは、CPUから受信する圧縮された画像データを伸張しこの伸張された画像データに対して前記画像処理を行うことを特徴とする請求項2に記載の画像処理装置。
【請求項5】
前記プロセッサによる画像処理結果を表示するディスプレイを更に備えたことを特徴とする請求項1に記載の画像処理装置。
【請求項6】
入力される画像フレームを画像ブロックに分割し、この画像ブロックごとに一つ以上の画像処理を記述する画像データ形式に基づいて動作する工程を含み、
前記工程は前記画像データ形式に基づく画像処理を並列して実施することを特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−128909(P2011−128909A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【出願番号】特願2009−286949(P2009−286949)
【出願日】平成21年12月17日(2009.12.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】