説明

画像処理装置、画像処理方法および画像処理プログラム

【課題】画像データに対するフィルタ処理を高速化すること。
【解決手段】画像処理装置100は、評価部143およびフィルタ処理部144をすくなくとも有する。評価部143は、パラメータ132を利用して、各分割法によるフィルタ処理の計算量を評価する。フィルタ処理部144は、評価部143の評価結果を基にして、計算量が最小となる分割法を選択する。フィルタ処理部144は、選択した分割法により、画像データ131を分割し、分割した画像データに対してフィルタ処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置等に関する。
【背景技術】
【0002】
カーナビゲーションシステムなど、モニタを持つ車載装置は、モニタに画像を描画するための描画プロセッサを備える。描画プロセッサは、複数の描画サブプロセッサを構成に含む。描画プロセッサは、描画サブプロセッサに順次処理を割り当て、画像データの全画素を処理する。
【0003】
描画サブプロセッサは、割り当てられた1つの出力画素値を決定するための演算を行い、演算が終わった後に解放される。描画サブプロセッサは、画素値を構成する各要素を1つのベクトルとして演算を行う。例えば、各要素には、R(Red)、G(Green)、B(Blue)、A(Alpha)の各要素が含まれる。
【0004】
また、車載装置には、上記の処理に加えて、画像解析を実行することで、運転者の支援を行うものがある。この画像解析には、画像データに対する平滑化やエッジ検出などのフィルタ処理が含まれる。
【0005】
フィルタ処理は、リアルタイムでの処理を実現するために、高速で行うことが望ましい。このため、並列処理が可能な描画プロセッサを利用して、フィルタ処理を行う技術がある。この技術では、カメラ映像を1要素の画像データに変換し、解析を行う。例えば、1要素の画像データは、輝度値からなるグレースケール画像に対応する。
【0006】
ここで、複数の要素に対してベクトル演算を行う描画サブプロセッサが、1要素の画像データに対してそのまま処理を行うと、効率よく演算を行うことができない。このため、従来技術では、1要素の画像データを、描画サブプロセッサ内で並列処理可能なn要素の数だけ分割し、n分割した画像データに対して各描画サブプロセッサが並列的にフィルタ処理を実行する。例えば、nは2以上の自然数である。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2007−274478号公報
【特許文献2】特開2010−98633号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した従来技術では、画像データに対するフィルタ処理を高速化することができないという問題があった。
【0009】
従来技術のように、1要素の画像データを分割してフィルタ処理を行う場合には、画像データを分割する処理、各画像データに対するフィルタ処理、分割した画像データを結合する処理を行うことになる。このため、画像データを分割することなく、画像データに対してフィルタ処理を行った方が、分割する処理や結合する処理を行わなくてよいので、速度面で有利な場合がある。
【0010】
なお、上記問題は、車載装置に限られるものではなく、画像データに対してフィルタ処理を実行する画像処理装置においても同様に生ずる問題である。
【0011】
開示の技術は、上記に鑑みてなされたものであって、画像データに対するフィルタ処理を高速化することができる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
開示の画像処理装置は、評価部とフィルタ処理部を有する。評価部は、複数の要素よりも少ない要素を含む画像データのサイズとフィルタサイズに基づいて、各種の分割方法の計算量とを評価する。フィルタ処理部は、評価部の評価結果を基にして、フィルタ処理を実行する。
【発明の効果】
【0013】
開示の画像処理装置によれば、画像データに対するフィルタ処理を高速化することができるという効果を奏する。
【図面の簡単な説明】
【0014】
【図1A】図1Aは、描画プロセッサによる画像処理を説明するための図である。
【図1B】図1Bは、描画プロセッサによる画像処理を説明するための図である。
【図2】図2は、フィルタ処理の一例を示す図である。
【図3】図3は、フィルタのサイズを補足説明するための図(1)である。
【図4】図4は、フィルタのサイズを補足説明するための図(2)である。
【図5】図5は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。
【図6】図6は、分割法の一例を示す図(1)である。
【図7】図7は、分割法の一例を示す図(2)である。
【図8】図8は、分割法の一例を示す図(3)である。
【図9】図9は、フィルタの適用範囲を説明する図である。
【図10】図10は、パラメータのデータ構造の一例を示す図である。
【図11A】図11Aは、評価関数を補足説明するための図(1)である。
【図11B】図11Bは、評価関数を補足説明するための図(2)である。
【図11C】図11Cは、評価関数を補足説明するための図(3)である。
【図11D】図11Dは、評価関数を補足説明するための図(4)である。
【図12】図12は、分割法毎の計算量を示す図である。
【図13】図13は、フィルタ処理部の構成を示す機能ブロック図である。
【図14】図14は、分割部の処理を説明するための図である。
【図15】図15は、分割画像データの開始座標とオフセットとの関係を示す図である。
【図16】図16は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。
【図17】図17は、画像処理プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0015】
以下に、本願の開示する画像処理装置、画像処理方法および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【0016】
本実施例にかかる画像処理装置の説明を行う前に、この画像処理装置が利用する描画プロセッサによる画像処理について説明する。図1Aおよび図1Bは、描画プロセッサの画像処理を説明するための図である。図1Aに示すように、描画プロセッサ10aは、ベクトル演算を行う描画サブプロセッサ1b〜9bを有する。
【0017】
描画プロセッサ10aは、各描画サブプロセッサ1b〜9bに順次処理を割り当て、出力画像10cの全画素値を決定する。描画サブプロセッサ1b〜9bは、割り当てられた1つの座標に対する画素値を決定するための演算を行い、終了後に解放される。
【0018】
例えば、図1Bの座標1d=(x1、y1)には、描画サブプロセッサ1bが割り当てられている。また、座標2d=(x2、y2)には、描画サブプロセッサ2bが割り当てられている。座標3d=(x3、y3)には、描画サブプロセッサ3bが割り当てられている。各描画サブプロセッサは、複数の要素に対して同様のベクトル演算を行うことが可能である。各描画サブプロセッサのベクトル演算は、独立して実行される。
【0019】
図1Bにおいて、出力画像10cは、1c〜4cの4要素から成り立っており、画素の各要素に対して1つのベクトル演算命令で処理を行う。例えば、描画サブプロセッサ1bが、入力画像データの座標1dの画素値を2倍にした出力画像データを生成する場合には、1c〜4cの共通の座標1dにおいて、画素値を2倍にする。
【0020】
次に、要素の数について説明する。例えば、1要素から成り立つ画像データは、輝度値で表現される画像である。また、色を持つRGB画像データは、R、G、Bの3要素をもつ。また、色を持つ画像データは、R、G、B、Aの4要素を持つ場合もある。この「A」は、他の画像データとの重ね合わせを考慮したアルファ要素である。
【0021】
次に、画像処理装置が行うフィルタ処理の一例について説明する。フィルタ処理は、注目画素および注目画素周辺の画素値を入力とし、フィルタ係数と呼ばれる配列を対応させて積算し、累積値を算出することで、フィルタ処理後の注目画素の画素値を算出する。
【0022】
図2は、フィルタ処理の一例を示す図である。図2の20aは、フィルタ処理の対象となる画像データである。画像データ20aは、座標(x1、y1)〜(x3、y3)に対応する9つの画素を有する。各座標の画素に含まれる数字は、画素値に対応する。例えば、座標(x1、y1)の画像の画素値は「10」である。図2の20bは、フィルタのデータ構造の一例である。
【0023】
ここでは、一例として、画像データ20aにフィルタ20bを適用して、画像データ20aの座標(x2、y2)の画素値を求める場合について説明する。座標(x2、y2)の画素値は、下記の式(1)により求められ、フィルタ処理後の画素値は「50」となる。他の座標の画素についても同様に、フィルタ20bを適用する。このように、座標(x1、y1)〜(x3、y3)に対してフィルタ20bを適用することで、画像データ20aのフィルタ処理が行われる。
【0024】
座標(x2、y2)の画素値=10×1/9+20×1/9+30×1/9+40×1/9+90×1/9+60×1/9+70×1/9+80×1/9+50×1/9・・・(1)
【0025】
図2に示したフィルタのように、周辺画素の画素値を含んだ平均値を算出するものを平滑化フィルタと呼ばれる場合がある。この平滑化フィルタは、画像に含まれるノイズを除去する場合などに用いられる。
【0026】
フィルタには目的に応じて様々なサイズのものが存在する。本実施例では、縦、横の矩形からなるフィルタのサイズを(f、f)で表す。なお、f、fの値は、中心画素から片端までの画素数から、1画素引いた値で表現する。図3、図4は、フィルタのサイズを補足説明するための図である。例えば、図3に示すフィルタ21aのサイズ(fw1、fh1)は(2、2)となる。図4に示すフィルタ21bのサイズ(fw2、fh2)は(3、1)となる。
【0027】
次に、本実施例にかかる画像処理装置の構成について説明する。図5は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。図5に示すように、この画像処理装置100は、入力部110、出力部120、記憶部130、制御部140を有する。
【0028】
入力部110は、画像データまたはパラメータを入力する入力装置である。ここで、画像データは、フィルタ処理の適用対象となる画像データである。画像データは、1要素の画像データとする。例えば、画像データは、輝度値で表されるグレースケール画像に対応する。なお、本実施例では一例として、1要素の画像データとするが、これに限定されるものではなく、ベクトル演算数の数よりも少ない要素数の画像データでもよい。
【0029】
パラメータは、各種の方法によってフィルタ処理を実行する場合の計算量を算出する場合に利用するデータである。例えば、このパラメータは、フィルタ処理結果として出力する画像データのサイズ、フィルタのサイズ、描画プロセッサのレジスタに画素値を入出力する時間、フィルタ処理に要する時間を含む。パラメータの詳細は後述する。
【0030】
出力部120は、制御部140によりフィルタ処理が行われた画像データを出力する出力装置である。
【0031】
記憶部130は、画像データ131、パラメータ132、分割画像データ133、フィルタデータ134、合成画像データ135を格納する。記憶部130は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【0032】
画像データ131は、入力部110から入力される画像データに対応する。パラメータ132は、入力部110から入力されるパラメータに対応する。
【0033】
分割画像データ133は、制御部140によって分割された画像データに対応する。フィルタデータ134は、画像データに対してフィルタ処理を実行した結果となる画像データである。合成画像データ135は、分割画像データ133を合成した画像データである。
【0034】
制御部140は、画像データ受付部141、パラメータ受付部142、評価部143、フィルタ処理部144を有する。制御部140は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部140は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。また、制御部140は、ベクトル演算を実行するプロセッサを備える。
【0035】
画像データ受付部141は、入力部110から画像データを取得し、取得した画像データを記憶部130に記憶させる。パラメータ受付部142は、入力部110からパラメータを取得し、取得したパラメータを記憶部130に記憶させる。
【0036】
評価部143は、パラメータ132に基づいて、フィルタ処理を実行した場合の計算量を、各種の分割法毎に評価する処理部である。評価部143は、評価結果をフィルタ処理部144に出力する。評価部143の処理の詳細は後述する。
【0037】
フィルタ処理部144は、評価部143の評価結果に基づいて、フィルタ処理に要する計算量が最も少ない分割法によって、画像データ131を分割し、フィルタ処理を実行する処理部である。フィルタ処理部144は、処理結果を出力部120に出力する。フィルタ処理部144の処理の詳細は後述する。
【0038】
次に、フィルタ処理部144が、画像データ131を分割する場合の分割法について説明する。例えば、画像処理装置100が利用する描画プロセッサが4要素のベクトル演算を実行可能な場合には、画像データ131を4分割することで、効率的にベクトル演算を実行することができる。
【0039】
画像データを4分割する方法は1通りではなく、図6、図7、図8に示すような3通りの方法がある。図6、図7、図8は、分割法の一例を示す図である。ここでは、各分割法を区別するために、図6に示す22aの分割法を4×1分割とし、図7に示す22bの分割法を1×4分割とし、図8に示す22cの分割法を2×2分割とする。
【0040】
また、本実施例では、画像データを分割しない方法も、分割法の一つとする。このように、画像データを分割しない方法を非分割とする。このため、本実施例の分割法には、4×1分割、1×4分割、2×2分割、非分割の4種類の分割法が存在する。
【0041】
各分割法によって、フィルタ処理を実行する場合の計算量が異なる。以下において、計算量が異なる理由を説明する。汎用的な2次元フィルタ処理においては、画像データの端部分の画素以外に対して、フィルタを適用する。画像データの端部分の画素にフィルタを適用しようとすると、フィルタの一部が画像データからはみ出てしまうためである。
【0042】
図9は、フィルタの適用範囲を説明する図である。図9の画像データ30aは、分割前の画像データである。例えば、画像データ30aが2×2分割されると、分割画像データ31a〜34aとなる。
【0043】
上記のように、フィルタ処理の適用可能範囲は、画像データの端部分の画素以外となる。例えば、フィルタ30cを、図6に示すものとすると、座標30bより上の画素に対して、フィルタを適用することができない。座標30bよりも上の画素に対して、フィルタを適用しようとすると、フィルタ30cが、画像データ30aからはみ出てしまう。このため、画像データ30aにおいて、フィルタ処理が可能な範囲は、網掛け部分で囲まれた内部となる。
【0044】
そして、画像データ30aをそのまま分割すると、フィルタ処理が可能な範囲は更に狭くなってしまう。このため、分割境界付近の画素値にフィルタが適用できるように、重複領域を設けることが好ましい。この重複領域は、分割画像データの境界部分の画素からフィルタサイズの半分だけはみ出た領域の画像に対応する。
【0045】
図9において、分割画像データ31aは、重複領域31dを有する。この重複領域31dは、分割画像データ31aの境界部分にフィルタのサイズを含めた領域に対応する。例えば、重複領域31dは、分割画像データ31aに隣接する分割画像データ32a、33aの境界付近のデータである。このように、分割画像データ31aに重複領域31dを持たせることで、境界部分の座標30eの画素値に、フィルタ30fを適用することができるようになる。
【0046】
同様にして、分割画像データ32aは、重複領域32dを有する。分割画像データ33aは、重複領域33dを有する。分割画像データ34aは、重複領域34dを有する。このように、重複領域32d〜34dを持たせることで、画像データ30aを分割しても、
フィルタ処理の適用範囲は狭くならない。
【0047】
このため、1要素の画像データを分割してベクトル演算を行う場合には、画像を分割する処理、フィルタ処理、画像を合成する処理を順次実行することになる。また、画像を分割する処理には、重複領域を考慮して、画像データを分割する。これに対して、画像データを分割することなく、そのままフィルタ処理を行うと、画像を分割する処理、画像を合成する処理を実行しなくてよい。
【0048】
次に、評価部143の処理を詳細に説明する。評価部143は、式(2)の評価関数を利用して、各分割法によるフィルタ処理の計算量Tを算出する。式(2)において、「D」は、画像データから分割画像データを作成する計算量である。「F」は、フィルタ処理の計算量である。「C」は、フィルタ処理後に分割画像データを合成する処理の計算量である。各計算量は、処理時間に相当するものである。
【0049】
T=D+F+C・・・(2)
【0050】
評価関数の詳細について説明する前に、計算量Tを算出するためのパラメータ132について説明する。図10は、パラメータのデータ構造の一例を示す図である。図10に示すように、パラメータ132は、s、s、f、f、p、p、f、fを有する。このうち、「s」は、フィルタ処理として出力する画像の横サイズに対応する。「s」は、フィルタ処理として出力する画像の縦サイズに対応する。
【0051】
「f」は、フィルタの横サイズである。「f」は、フィルタの縦サイズである。ただし、既に説明したように、f、fの値は、中心画素から片端までの画素数から、1画素引いた値で表現する。
【0052】
「p」は、画素値を描画プロセッサのレジスタに転送する時間である。「p」は、描画プロセッサのレジスタから画素値を出力のため転送する時間である。なお、4要素のベクトル演算が可能な描画プロセッサの場合、同一座標に対する入出力の転送においては、1要素のみの転送と4要素の転送は、同一時間の、p、pで処理可能である。
【0053】
「f」は、フィルタサイズに依存するフィルタ処理の時間である。「f」は、フィルタサイズに依存しないフィルタ処理の時間である。
【0054】
なお、パラメータ受付部142は、パラメータ「s、s、f、f、p、p、f、f」の値を、如何なる方法で取得してもよい。例えば、パラメータ受付部142は「s、s」の値を、フィルタ処理を必要とするアプリケーションの画像サイズから取得する。パラメータ受付部142は「f、f」の値を、目標のフィルタ処理のフィルタサイズから取得する。
【0055】
パラメータ受付部142は「p、p」の値を、描画プロセッサの仕様、および簡易なベンチマークを実行することで取得する。例えば、パラメータ受付部142は「p、p」の値を、描画プロセッサの単位画素を取得するサイクル数とする。
【0056】
パラメータ受付部142は「f、f」の値を、目的のフィルタ処理の一部を要素毎にベンチマークを実施し、コードの静的解析などを実行することで取得する。なお、パラメータの「p、p、f、f」に関しては、時間単位が同じであればよく、サイクル数以外の尺度を用いてもよい。また、パラメータの各値は、管理者が事前に調査したものを利用してもよい。
【0057】
続いて、式(2)について、「非分割の場合」と、「4×1分割、1×4分割、2×2分割の場合」とに分けて説明する。
【0058】
まず、非分割の場合には、分割画像データを生成せず、分割画像を合成する処理も実行しないので、式(2)の「D」および「C」の計算量は「0」となる。なお、式(2)の「F」は、式(3)によって表される。
【0059】
【数1】

【0060】
これに対して、「4×1分割、1×4分割、2×2分割の場合」の何れかの場合には、式(2)の「D」、「F」、「C」は、それぞれ、式(4)、(5)、(6)によって表される。式(4)、(5)、(6)において、dおよびdは、画像分割時における横分割数並びに縦分割数である。例えば、4×1分割の場合には、dの値は4となり、dの値は1となる。dおよびdの値は、描画プロセッサのベクトル演算の要素数から事前に設定された値の組み合わせを利用してもよい。
【0061】
【数2】

【0062】
【数3】

【0063】
【数4】

【0064】
図11A〜11Dは、評価関数を補足説明するための図である。図11A〜11Dに含まれるs、s、f、fに関する説明は、図10で説明したものと同様である。なお、図11Aに示すように、フィルタ41aのサイズをf、fを用いて表すと、フィルタの横幅は「2f+1」となり、縦幅は「2f+1」となる。
【0065】
図11Aに示す画像データ40aを、4×1分割すると、図11Bに示す分割画像データ40bが4個生成される。また、図11Aに示す画像データ40aを、1×4分割すると、図11Cに示す分割画像データ40cが4個生成される。また、図11Aに示す画像データ40aを、2×2分割すると、図11Dに示す分割画像データ40dが4個生成される。
【0066】
式(4)について補足説明する。画像データ40aが分割されると、分割画像データ40b〜40dの何れかのサイズのものが生成される。ここで、1要素の画像データ中から、d×d個の異なる座標の画素値を取得し、d×d個の画像値を出力するための時間は「p×d×d+p」で表すことができる。このため、分割時において、画像データから分割画像データを作成する計算量は、上記式(4)で表すことができる。
【0067】
式(3)、(5)について補足説明する。1座標の出力に要する時間と、処理対象となる画像データのサイズとを乗算したものが、フィルタ処理の時間に相当する。1座標の出力に要する時間は、入力を含むフィルタサイズに依存の時間と、フィルタサイズに非依存の時間と、処理結果の出力時間とを加算したものとなる。この1座標の出力に要する時間においては、分割時、非分割時による差異はない。
【0068】
1座標の出力に要する時間に画面サイズを乗算したものが、フィルタ処理時間に対応する。非分割時の処理画面サイズは「s×s」となる。分割時の処理画面サイズは「s×s/d/d」となる。
【0069】
式(6)について補足説明する。分割画像データを合成する処理は、d×d要素の画像から、1要素の画像変換を行うための処理時間を要する。1要素の画像データのある1つの座標に対する出力値を決定するために、d×d要素の画像データの1座標をpで読み込み、時間pで出力する。この処理を、出力後の画像データのサイズs×sに対して行うことになる。このため、分割画像データを合成する処理の計算量は、式(6)で表される。
【0070】
評価部143は、上記の式(2)〜(6)およびパラメータ132を基にして、各分割法の計算量を算出する。図12は、分割法毎の計算量を示す図である。図12に示す例では、50a〜50fのパラメータについての、各分割法の計算量を示す。
【0071】
例えば、パラメータ50aの値は「s=636」、「s=476」、「f=2」、「f=2」、「p=200」、「p=200」、「f=20」、「f=20」となる。パラメータ50bの値は「s=636」、「s=480」、「f=2」、「f=0」、「p=200」、「p=200」、「f=20」、「f=20」となる。パラメータ50cの値は「s=640」、「s=476」、「f=0」、「f=2」、「p=200」、「p=200」、「f=20」、「f=20」となる。
【0072】
パラメータ50dの値は「s=638」、「s=480」、「f=1」、「f=0」、「p=50」、「p=400」、「f=20」、「f=20」となる。パラメータ50eの値は「s=638」、「s=480」、「f=1」、「f=0」、「p=50」、「p=400」、「f=100」、「f=50」となる。パラメータ50fの値は「s=638」、「s=480」、「f=1」、「f=0」、「p=60」、「p=60」、「f=20」、「f=20」となる。
【0073】
また、パラメータ50aによる各分割法の計算量は、4×1分割で「632.3」、1×4分割で「632.7」、2×2分割で「631.9」、非分割で「1731.7」となる。このため、パラメータ50aの場合には、2×2分割の計算量が最小となる。
【0074】
パラメータ50bによる各分割法の計算量は、4×1分割で「301.1」、1×4分割で「299.7」、2×2分割で「300.1」、非分割で「403.0」となる。このため、パラメータ50bの場合には、1×4分割の計算量が最小となる。
【0075】
パラメータ50cによる各分割法の計算量は、4×1分割で「299.2」、1×4分割で「301.1」、2×2分割で「299.8」、非分割で「402.1」となる。このため、パラメータ50cの場合には、4×1分割の計算量が最小となる。
【0076】
パラメータ50dによる各分割法の計算量は、4×1分割で「232.6」、1×4分割で「232.1」、2×2分割で「232.2」、非分割で「193.9」となる。このため、パラメータ50dの場合には、非分割の計算量が最小となる。
【0077】
パラメータ50eによる各分割法の計算量は、4×1分割で「253.2」、1×4分割で「252.8」、2×2分割で「252.9」、非分割で「275.6」となる。このため、パラメータ50eの場合には、1×4分割の計算量が最小となる。
【0078】
パラメータ50fによる各分割法の計算量は、4×1分割で「84.5」、1×4分割で「84.3」、2×2分割で「84.4」、非分割で「98.0」となる。このため、パラメータ50fの場合には、1×4分割の計算量が最小となる。
【0079】
評価部143は、パラメータに基づいて算出した、各分割法の計算量の情報を、フィルタ処理部144に出力する。
【0080】
次に、フィルタ処理部144について詳細に説明する。図13は、フィルタ処理部の構成を示す機能ブロック図である。図13に示すように、このフィルタ処理部144は、分割部144a、フィルタ部144b、合成部144c、出力部144dを有する。
【0081】
分割部144aは、評価部143から評価結果に基づいて、画像データ131を分割する処理部である。分割部144aは、実行した分割法の種別を、フィルタ部144b、合成部144c、出力部144dに通知する。
【0082】
例えば、分割部144aは「非分割」の計算量が最小の場合には、分割を行っていない旨をフィルタ部144bに通知する。分割部144aは「4×1分割」の計算量が最小の場合には、4×1分割を行った旨をフィルタ部144bに通知する。分割部144aは「1×4分割」の計算量が最小の場合には、1×4分割を行った旨をフィルタ部144bに通知する。分割部144aは「2×2分割」の計算量が最小の場合には、2×2分割を行った旨をフィルタ部144bに通知する。
【0083】
分割部144aが、画像データ131を分割する場合の処理について説明する。ここでは、一例として、分割部144aが、図12のパラメータ50aの評価結果を評価部143から取得した場合について説明する。パラメータ50aの評価結果において、計算量が最小となるものは「2×2分割」となる。このため、分割部144aは「2×2分割」を選択し、画像データ131の分割を行う。
【0084】
図14は、分割部の処理を説明するための図である。図14に示すように、分割部144aは、画像データ131を、分割画像データ131a、131b、131c、131dに分割する。なお、図14に示すように、分割画像データ131a〜131dは、重複領域60a〜60dをそれぞれ含む。画像データ131のsを「636」、sを「476」とすると、重複領域を含む分割画像データ131a〜131dの横サイズwは「322」となり、縦サイズhは「242」となる。これは、wは、sを「636」を半分にした値に、フィルタサイズf×2の値を加算したものに等しい。hは、「476」を半分にした値に、フィルタサイズf×2の値を加算したものに等しい。
【0085】
図15は、分割画像データの開始座標とオフセットとの関係を示す図である。開始座標と、オフセットとを加算した座標が、分割画像データ131a〜131dの実際の開始座標となる。オフセットは、フィルタサイズf、fに応じて設定されるものである。例えば、画像データ131をそのまま分割すると、各分割画像データには、重複画像が含まれないが、オフセットを考慮することで、重複画像を含む分割画像データの開始座標を指定できる。
【0086】
分割画像データ131bの実際の開始座標は(318、0)となる。この座標(318、0)は、図14の分割画像データ131bの左上の座標となる。分割画像データ131cの実際の開始座標は(0、238)となる。この座標(0、238)は、図14の分割画像データ131cの左上の座標となる。分割画像データ131dの実際の開始座標は(318、238)となる。この座標(318、238)は、図14の分割画像データ131dの左上の座標となる。
【0087】
分割部144aは、分割した画像データ131を、分割画像データ133として、記憶部130に記憶させる。分割画像データ133は、図14の分割画像データ131a〜131dに対応する。
【0088】
フィルタ部144bは、画像データに対して、図2に示したフィルタ処理を実行する処理部である。
【0089】
画像データ131が分割部144aに分割されている場合の、フィルタ部144bの処理について説明する。フィルタ部144bは、分割画像データ133に対してフィルタ処理を行い、フィルタ処理した分割画像データを、フィルタデータ134として記憶部130に記憶させる。図14に示した分割画像データ131a〜131dにフィルタ処理を実行する場合には、322×242の内部318×238がフィルタ処理の出力サイズとなる。
【0090】
画像データ131が分割部144aに分割されていない場合の、フィルタ部144bの処理について説明する。フィルタ部144bは、画像データ131に対してフィルタ処理を行い、フィルタ処理した画像データを、フィルタデータ134として記憶部130に記憶させる。図14に示した画像データ131にフィルタ処理を実行する場合には、640×480の内部636×476がフィルタ処理の出力サイズとなる。
【0091】
合成部144cは、分割された画像データを合成する処理部である。なお、合成部144cは、分割部144aが画像データ131を分割した場合に、処理を実行するものとする。合成部144cは、フィルタ処理された各分割画像データを、フィルタデータ134から取得し、各分割画像データを合成したものを、合成画像データ135として、記憶部130に記憶させる。
【0092】
例えば、合成部144cは、フィルタ処理後の分割画像データ131a〜131dについて、図15に示した開始座標+オフセットを合成先の開始座標として指定し、各要素の有効領域を318×238とする。このような処理を合成部144cが実行することで、各分割画像データは、元のサイズ636×476の画像データとなる。
【0093】
出力部144dは、フィルタ処理後の画像データを出力する処理部である。画像データ131が分割部144aに分割されていない場合には、出力部144dは、フィルタデータ134を出力する。これに対して、画像データ131が分割部144aに分割されている場合には、合成画像データ135を出力する。
【0094】
次に、本実施例にかかる画像処理装置100の処理手順について説明する。図16は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。例えば、図16に示す処理は、フィルタ処理対象となる画像データを取得したことを契機にして実行される。
【0095】
図16に示すように、画像処理装置100は、画像データを取得し(ステップS101)、各分割法の計算量を評価する(ステップS102)。画像処理装置100は、画像データを分割するか否かを判定する(ステップS103)。
【0096】
画像処理装置100は、画像データを分割しない場合には(ステップS103,No)、ステップS105に移行する。一方、画像処理装置100は、画像データを分割する場合には(ステップS103,Yes)、画像データを分割する(ステップS104)。
【0097】
画像処理装置100は、フィルタ処理を実行し(ステップS105)、画像データを分割したか否かを判定する(ステップS106)。画像処理装置100は、画像データを分割していない場合には(ステップS106,No)、ステップS108に移行する。画像処理装置100は、画像データを分割した場合には(ステップS106,Yes)、画像データを合成し(ステップS107)、フィルタ処理を行った画像データを出力する(ステップS108)。
【0098】
次に、本実施例にかかる画像処理装置100の効果について説明する。画像処理装置100は、評価部143が画像を分割してフィルタ処理する処理の計算量と、画像を分割しないでフィルタ処理する場合の計算量を評価し、フィルタ処理部144が計算量の少ない分割法によるフィルタ処理を実行する。このため、画像処理装置100によれば、ベクトル演算可能なプロセッサが実行するフィルタ処理を高速化することができる。
【0099】
また、画像処理装置100は、分割する画像データにフィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対してフィルタ処理を並列に実行した場合の計算量を評価する。このため、画像処理装置100によれば、各分割法の計算量をより正確に評価することができる。
【0100】
また、画像処理装置100は、画像データを分割する場合に、ベクトル演算数に応じて、分割する画像データの数を特定する。このため、画像処理装置100によれば、ベクトル演算による演算リソースを無駄なく利用することができる。
【0101】
また、画像処理装置100は、画像データのサイズ、プロセッサに対する画素値の入出力時間、フィルタ処理に要する時間、画像データの分割数を基にして、各分割法の計算量を算出する。このため、画像処理装置100によれば、各分割法の計算量を正確に評価することができる。
【0102】
次に、図5に示した画像処理装置100と同様の機能を実現する画像処理プログラムを実行するコンピュータの一例を説明する。図17は、画像処理プログラムを実行するコンピュータの一例を示す図である。
【0103】
図17に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207を有する。そして、各装置201〜207は、バス208に接続される。
【0104】
ハードディスク装置207は、評価プログラム207a、フィルタ処理プログラム207bを記憶する。CPU201は、評価プログラム207a、フィルタ処理プログラム207bを読み出して、RAM206に展開する。評価プログラム207aは、評価プロセス206aとして機能する。フィルタ処理プログラム207bは、フィルタ処理プロセス206bとして機能する。
【0105】
例えば、評価プロセス206aは、図5の評価部143に対応する。フィルタ処理プロセス206bは、図5のフィルタ処理部144に対応する。
【0106】
なお、各プログラム207a,207bについては、必ずしも最初からハードディスク装置207に記憶させておかなくてもよい。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200がこれらから各プログラム207a,207bを読み出して実行するようにしてもよい。
【0107】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0108】
(付記1)複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価する評価部と、
前記評価部の評価結果を基にして、前記フィルタ処理を実行するフィルタ処理部と
を有することを特徴とする画像処理装置。
【0109】
(付記2)前記評価部は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記1に記載の画像処理装置。
【0110】
(付記3)前記フィルタ処理部は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記1または2に記載の画像処理装置。
【0111】
(付記4)前記評価部は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記1、2または3に記載の画像処理装置。
【0112】
(付記5)コンピュータが実行する画像処理方法であって、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理方法。
【0113】
(付記6)前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記5に記載の画像処理方法。
【0114】
(付記7)前記フィルタ処理を実行する処理は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記5または6に記載の画像処理方法。
【0115】
(付記8)前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記5、6または7に記載の画像処理方法。
【0116】
(付記9)コンピュータに、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理プログラム。
【0117】
(付記10)前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記9に記載の画像処理プログラム。
【0118】
(付記11)前記フィルタ処理を実行する処理は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記9または10に記載の画像処理プログラム。
【0119】
(付記12)前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記9、10または11に記載の画像処理プログラム。
【符号の説明】
【0120】
100 画像処理装置
110 入力部
120 出力部
130 記憶部
140 制御部

【特許請求の範囲】
【請求項1】
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価する評価部と、
前記評価部の評価結果を基にして、前記フィルタ処理を実行するフィルタ処理部と
を有することを特徴とする画像処理装置。
【請求項2】
前記評価部は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記フィルタ処理部は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記評価部は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする請求項1、2または3に記載の画像処理装置。
【請求項5】
コンピュータが実行する画像処理方法であって、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理方法。
【請求項6】
コンピュータに、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理プログラム。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate

【図11C】
image rotate

【図11D】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−12055(P2013−12055A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2011−144559(P2011−144559)
【出願日】平成23年6月29日(2011.6.29)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】