(57)【特許請求の範囲】
【請求項１】
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価する評価部と、
前記評価部の評価結果を基にして、前記フィルタ処理を実行するフィルタ処理部と
を有することを特徴とする画像処理装置。
【請求項２】
前記評価部は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記フィルタ処理部は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算を行う要素の数に応じて、該画像データの分割数を特定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記評価部は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする請求項１、２または３に記載の画像処理装置。
【請求項５】
コンピュータが実行する画像処理方法であって、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理方法。
【請求項６】
コンピュータに、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置等に関する。
【背景技術】
【０００２】
カーナビゲーションシステムなど、モニタを持つ車載装置は、モニタに画像を描画するための描画プロセッサを備える。描画プロセッサは、複数の描画サブプロセッサを構成に含む。描画プロセッサは、描画サブプロセッサに順次処理を割り当て、画像データの全画素を処理する。
【０００３】
描画サブプロセッサは、割り当てられた１つの出力画素値を決定するための演算を行い、演算が終わった後に解放される。描画サブプロセッサは、画素値を構成する各要素を１つのベクトルとして演算を行う。例えば、各要素には、Ｒ（Red）、Ｇ（Green）、Ｂ（Blue）、Ａ（Alpha）の各要素が含まれる。
【０００４】
また、車載装置には、上記の処理に加えて、画像解析を実行することで、運転者の支援を行うものがある。この画像解析には、画像データに対する平滑化やエッジ検出などのフィルタ処理が含まれる。
【０００５】
フィルタ処理は、リアルタイムでの処理を実現するために、高速で行うことが望ましい。このため、並列処理が可能な描画プロセッサを利用して、フィルタ処理を行う技術がある。この技術では、カメラ映像を１要素の画像データに変換し、解析を行う。例えば、１要素の画像データは、輝度値からなるグレースケール画像に対応する。
【０００６】
ここで、複数の要素に対してベクトル演算を行う描画サブプロセッサが、１要素の画像データに対してそのまま処理を行うと、効率よく演算を行うことができない。このため、従来技術では、１要素の画像データを、描画サブプロセッサ内で並列処理可能なｎ要素の数だけ分割し、ｎ分割した画像データに対して各描画サブプロセッサが並列的にフィルタ処理を実行する。例えば、ｎは２以上の自然数である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２７４４７８号公報
【特許文献２】特開２０１０−９８６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、画像データに対するフィルタ処理を高速化することができないという問題があった。
【０００９】
従来技術のように、１要素の画像データを分割してフィルタ処理を行う場合には、画像データを分割する処理、各画像データに対するフィルタ処理、分割した画像データを結合する処理を行うことになる。このため、画像データを分割することなく、画像データに対してフィルタ処理を行った方が、分割する処理や結合する処理を行わなくてよいので、速度面で有利な場合がある。
【００１０】
なお、上記問題は、車載装置に限られるものではなく、画像データに対してフィルタ処理を実行する画像処理装置においても同様に生ずる問題である。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、画像データに対するフィルタ処理を高速化することができる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の画像処理装置は、評価部とフィルタ処理部を有する。評価部は、複数の要素よりも少ない要素を含む画像データのサイズとフィルタサイズに基づいて、各種の分割方法の計算量とを評価する。フィルタ処理部は、評価部の評価結果を基にして、フィルタ処理を実行する。
【発明の効果】
【００１３】
開示の画像処理装置によれば、画像データに対するフィルタ処理を高速化することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１Ａ】図１Ａは、描画プロセッサによる画像処理を説明するための図である。
【図１Ｂ】図１Ｂは、描画プロセッサによる画像処理を説明するための図である。
【図２】図２は、フィルタ処理の一例を示す図である。
【図３】図３は、フィルタのサイズを補足説明するための図（１）である。
【図４】図４は、フィルタのサイズを補足説明するための図（２）である。
【図５】図５は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。
【図６】図６は、分割法の一例を示す図（１）である。
【図７】図７は、分割法の一例を示す図（２）である。
【図８】図８は、分割法の一例を示す図（３）である。
【図９】図９は、フィルタの適用範囲を説明する図である。
【図１０】図１０は、パラメータのデータ構造の一例を示す図である。
【図１１Ａ】図１１Ａは、評価関数を補足説明するための図（１）である。
【図１１Ｂ】図１１Ｂは、評価関数を補足説明するための図（２）である。
【図１１Ｃ】図１１Ｃは、評価関数を補足説明するための図（３）である。
【図１１Ｄ】図１１Ｄは、評価関数を補足説明するための図（４）である。
【図１２】図１２は、分割法毎の計算量を示す図である。
【図１３】図１３は、フィルタ処理部の構成を示す機能ブロック図である。
【図１４】図１４は、分割部の処理を説明するための図である。
【図１５】図１５は、分割画像データの開始座標とオフセットとの関係を示す図である。
【図１６】図１６は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。
【図１７】図１７は、画像処理プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する画像処理装置、画像処理方法および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１６】
本実施例にかかる画像処理装置の説明を行う前に、この画像処理装置が利用する描画プロセッサによる画像処理について説明する。図１Ａおよび図１Ｂは、描画プロセッサの画像処理を説明するための図である。図１Ａに示すように、描画プロセッサ１０ａは、ベクトル演算を行う描画サブプロセッサ１ｂ〜９ｂを有する。
【００１７】
描画プロセッサ１０ａは、各描画サブプロセッサ１ｂ〜９ｂに順次処理を割り当て、出力画像１０ｃの全画素値を決定する。描画サブプロセッサ１ｂ〜９ｂは、割り当てられた１つの座標に対する画素値を決定するための演算を行い、終了後に解放される。
【００１８】
例えば、図１Ｂの座標１ｄ＝（ｘ１、ｙ１）には、描画サブプロセッサ１ｂが割り当てられている。また、座標２ｄ＝（ｘ２、ｙ２）には、描画サブプロセッサ２ｂが割り当てられている。座標３ｄ＝（ｘ３、ｙ３）には、描画サブプロセッサ３ｂが割り当てられている。各描画サブプロセッサは、複数の要素に対して同様のベクトル演算を行うことが可能である。各描画サブプロセッサのベクトル演算は、独立して実行される。
【００１９】
図１Ｂにおいて、出力画像１０ｃは、１ｃ〜４ｃの４要素から成り立っており、画素の各要素に対して１つのベクトル演算命令で処理を行う。例えば、描画サブプロセッサ１ｂが、入力画像データの座標１ｄの画素値を２倍にした出力画像データを生成する場合には、１ｃ〜４ｃの共通の座標１ｄにおいて、画素値を２倍にする。
【００２０】
次に、要素の数について説明する。例えば、１要素から成り立つ画像データは、輝度値で表現される画像である。また、色を持つＲＧＢ画像データは、Ｒ、Ｇ、Ｂの３要素をもつ。また、色を持つ画像データは、Ｒ、Ｇ、Ｂ、Ａの４要素を持つ場合もある。この「Ａ」は、他の画像データとの重ね合わせを考慮したアルファ要素である。
【００２１】
次に、画像処理装置が行うフィルタ処理の一例について説明する。フィルタ処理は、注目画素および注目画素周辺の画素値を入力とし、フィルタ係数と呼ばれる配列を対応させて積算し、累積値を算出することで、フィルタ処理後の注目画素の画素値を算出する。
【００２２】
図２は、フィルタ処理の一例を示す図である。図２の２０ａは、フィルタ処理の対象となる画像データである。画像データ２０ａは、座標（ｘ１、ｙ１）〜（ｘ３、ｙ３）に対応する９つの画素を有する。各座標の画素に含まれる数字は、画素値に対応する。例えば、座標（ｘ１、ｙ１）の画像の画素値は「１０」である。図２の２０ｂは、フィルタのデータ構造の一例である。
【００２３】
ここでは、一例として、画像データ２０ａにフィルタ２０ｂを適用して、画像データ２０ａの座標（ｘ２、ｙ２）の画素値を求める場合について説明する。座標（ｘ２、ｙ２）の画素値は、下記の式（１）により求められ、フィルタ処理後の画素値は「５０」となる。他の座標の画素についても同様に、フィルタ２０ｂを適用する。このように、座標（ｘ１、ｙ１）〜（ｘ３、ｙ３）に対してフィルタ２０ｂを適用することで、画像データ２０ａのフィルタ処理が行われる。
【００２４】
座標（ｘ２、ｙ２）の画素値＝１０×１／９＋２０×１／９＋３０×１／９＋４０×１／９＋９０×１／９＋６０×１／９＋７０×１／９＋８０×１／９＋５０×１／９・・・（１）
【００２５】
図２に示したフィルタのように、周辺画素の画素値を含んだ平均値を算出するものを平滑化フィルタと呼ばれる場合がある。この平滑化フィルタは、画像に含まれるノイズを除去する場合などに用いられる。
【００２６】
フィルタには目的に応じて様々なサイズのものが存在する。本実施例では、縦、横の矩形からなるフィルタのサイズを（ｆｗ、ｆｈ）で表す。なお、ｆｗ、ｆｈの値は、中心画素から片端までの画素数から、１画素引いた値で表現する。図３、図４は、フィルタのサイズを補足説明するための図である。例えば、図３に示すフィルタ２１ａのサイズ（ｆｗ１、ｆｈ１）は（２、２）となる。図４に示すフィルタ２１ｂのサイズ（ｆｗ２、ｆｈ２）は（３、１）となる。
【００２７】
次に、本実施例にかかる画像処理装置の構成について説明する。図５は、本実施例にかかる画像処理装置の構成を示す機能ブロック図である。図５に示すように、この画像処理装置１００は、入力部１１０、出力部１２０、記憶部１３０、制御部１４０を有する。
【００２８】
入力部１１０は、画像データまたはパラメータを入力する入力装置である。ここで、画像データは、フィルタ処理の適用対象となる画像データである。画像データは、１要素の画像データとする。例えば、画像データは、輝度値で表されるグレースケール画像に対応する。なお、本実施例では一例として、１要素の画像データとするが、これに限定されるものではなく、ベクトル演算数の数よりも少ない要素数の画像データでもよい。
【００２９】
パラメータは、各種の方法によってフィルタ処理を実行する場合の計算量を算出する場合に利用するデータである。例えば、このパラメータは、フィルタ処理結果として出力する画像データのサイズ、フィルタのサイズ、描画プロセッサのレジスタに画素値を入出力する時間、フィルタ処理に要する時間を含む。パラメータの詳細は後述する。
【００３０】
出力部１２０は、制御部１４０によりフィルタ処理が行われた画像データを出力する出力装置である。
【００３１】
記憶部１３０は、画像データ１３１、パラメータ１３２、分割画像データ１３３、フィルタデータ１３４、合成画像データ１３５を格納する。記憶部１３０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【００３２】
画像データ１３１は、入力部１１０から入力される画像データに対応する。パラメータ１３２は、入力部１１０から入力されるパラメータに対応する。
【００３３】
分割画像データ１３３は、制御部１４０によって分割された画像データに対応する。フィルタデータ１３４は、画像データに対してフィルタ処理を実行した結果となる画像データである。合成画像データ１３５は、分割画像データ１３３を合成した画像データである。
【００３４】
制御部１４０は、画像データ受付部１４１、パラメータ受付部１４２、評価部１４３、フィルタ処理部１４４を有する。制御部１４０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１４０は、例えば、ＣＰＵやＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。また、制御部１４０は、ベクトル演算を実行するプロセッサを備える。
【００３５】
画像データ受付部１４１は、入力部１１０から画像データを取得し、取得した画像データを記憶部１３０に記憶させる。パラメータ受付部１４２は、入力部１１０からパラメータを取得し、取得したパラメータを記憶部１３０に記憶させる。
【００３６】
評価部１４３は、パラメータ１３２に基づいて、フィルタ処理を実行した場合の計算量を、各種の分割法毎に評価する処理部である。評価部１４３は、評価結果をフィルタ処理部１４４に出力する。評価部１４３の処理の詳細は後述する。
【００３７】
フィルタ処理部１４４は、評価部１４３の評価結果に基づいて、フィルタ処理に要する計算量が最も少ない分割法によって、画像データ１３１を分割し、フィルタ処理を実行する処理部である。フィルタ処理部１４４は、処理結果を出力部１２０に出力する。フィルタ処理部１４４の処理の詳細は後述する。
【００３８】
次に、フィルタ処理部１４４が、画像データ１３１を分割する場合の分割法について説明する。例えば、画像処理装置１００が利用する描画プロセッサが４要素のベクトル演算を実行可能な場合には、画像データ１３１を４分割することで、効率的にベクトル演算を実行することができる。
【００３９】
画像データを４分割する方法は１通りではなく、図６、図７、図８に示すような３通りの方法がある。図６、図７、図８は、分割法の一例を示す図である。ここでは、各分割法を区別するために、図６に示す２２ａの分割法を４×１分割とし、図７に示す２２ｂの分割法を１×４分割とし、図８に示す２２ｃの分割法を２×２分割とする。
【００４０】
また、本実施例では、画像データを分割しない方法も、分割法の一つとする。このように、画像データを分割しない方法を非分割とする。このため、本実施例の分割法には、４×１分割、１×４分割、２×２分割、非分割の４種類の分割法が存在する。
【００４１】
各分割法によって、フィルタ処理を実行する場合の計算量が異なる。以下において、計算量が異なる理由を説明する。汎用的な２次元フィルタ処理においては、画像データの端部分の画素以外に対して、フィルタを適用する。画像データの端部分の画素にフィルタを適用しようとすると、フィルタの一部が画像データからはみ出てしまうためである。
【００４２】
図９は、フィルタの適用範囲を説明する図である。図９の画像データ３０ａは、分割前の画像データである。例えば、画像データ３０ａが２×２分割されると、分割画像データ３１ａ〜３４ａとなる。
【００４３】
上記のように、フィルタ処理の適用可能範囲は、画像データの端部分の画素以外となる。例えば、フィルタ３０ｃを、図６に示すものとすると、座標３０ｂより上の画素に対して、フィルタを適用することができない。座標３０ｂよりも上の画素に対して、フィルタを適用しようとすると、フィルタ３０ｃが、画像データ３０ａからはみ出てしまう。このため、画像データ３０ａにおいて、フィルタ処理が可能な範囲は、網掛け部分で囲まれた内部となる。
【００４４】
そして、画像データ３０ａをそのまま分割すると、フィルタ処理が可能な範囲は更に狭くなってしまう。このため、分割境界付近の画素値にフィルタが適用できるように、重複領域を設けることが好ましい。この重複領域は、分割画像データの境界部分の画素からフィルタサイズの半分だけはみ出た領域の画像に対応する。
【００４５】
図９において、分割画像データ３１ａは、重複領域３１ｄを有する。この重複領域３１ｄは、分割画像データ３１ａの境界部分にフィルタのサイズを含めた領域に対応する。例えば、重複領域３１ｄは、分割画像データ３１ａに隣接する分割画像データ３２ａ、３３ａの境界付近のデータである。このように、分割画像データ３１ａに重複領域３１ｄを持たせることで、境界部分の座標３０ｅの画素値に、フィルタ３０ｆを適用することができるようになる。
【００４６】
同様にして、分割画像データ３２ａは、重複領域３２ｄを有する。分割画像データ３３ａは、重複領域３３ｄを有する。分割画像データ３４ａは、重複領域３４ｄを有する。このように、重複領域３２ｄ〜３４ｄを持たせることで、画像データ３０ａを分割しても、
フィルタ処理の適用範囲は狭くならない。
【００４７】
このため、１要素の画像データを分割してベクトル演算を行う場合には、画像を分割する処理、フィルタ処理、画像を合成する処理を順次実行することになる。また、画像を分割する処理には、重複領域を考慮して、画像データを分割する。これに対して、画像データを分割することなく、そのままフィルタ処理を行うと、画像を分割する処理、画像を合成する処理を実行しなくてよい。
【００４８】
次に、評価部１４３の処理を詳細に説明する。評価部１４３は、式（２）の評価関数を利用して、各分割法によるフィルタ処理の計算量Ｔを算出する。式（２）において、「Ｄ」は、画像データから分割画像データを作成する計算量である。「Ｆ」は、フィルタ処理の計算量である。「Ｃ」は、フィルタ処理後に分割画像データを合成する処理の計算量である。各計算量は、処理時間に相当するものである。
【００４９】
Ｔ＝Ｄ＋Ｆ＋Ｃ・・・（２）
【００５０】
評価関数の詳細について説明する前に、計算量Ｔを算出するためのパラメータ１３２について説明する。図１０は、パラメータのデータ構造の一例を示す図である。図１０に示すように、パラメータ１３２は、ｓｗ、ｓｈ、ｆｗ、ｆｈ、ｐｉ、ｐｏ、ｆ１、ｆ２を有する。このうち、「ｓｗ」は、フィルタ処理として出力する画像の横サイズに対応する。「ｓｈ」は、フィルタ処理として出力する画像の縦サイズに対応する。
【００５１】
「ｆｗ」は、フィルタの横サイズである。「ｆｈ」は、フィルタの縦サイズである。ただし、既に説明したように、ｆｗ、ｆｈの値は、中心画素から片端までの画素数から、１画素引いた値で表現する。
【００５２】
「ｐｉ」は、画素値を描画プロセッサのレジスタに転送する時間である。「ｐｏ」は、描画プロセッサのレジスタから画素値を出力のため転送する時間である。なお、４要素のベクトル演算が可能な描画プロセッサの場合、同一座標に対する入出力の転送においては、１要素のみの転送と４要素の転送は、同一時間の、ｐｉ、ｐｏで処理可能である。
【００５３】
「ｆ１」は、フィルタサイズに依存するフィルタ処理の時間である。「ｆ２」は、フィルタサイズに依存しないフィルタ処理の時間である。
【００５４】
なお、パラメータ受付部１４２は、パラメータ「ｓｗ、ｓｈ、ｆｗ、ｆｈ、ｐｉ、ｐｏ、ｆ１、ｆ２」の値を、如何なる方法で取得してもよい。例えば、パラメータ受付部１４２は「ｓｗ、ｓｈ」の値を、フィルタ処理を必要とするアプリケーションの画像サイズから取得する。パラメータ受付部１４２は「ｆｗ、ｆｈ」の値を、目標のフィルタ処理のフィルタサイズから取得する。
【００５５】
パラメータ受付部１４２は「ｐｉ、ｐｏ」の値を、描画プロセッサの仕様、および簡易なベンチマークを実行することで取得する。例えば、パラメータ受付部１４２は「ｐｉ、ｐｏ」の値を、描画プロセッサの単位画素を取得するサイクル数とする。
【００５６】
パラメータ受付部１４２は「ｆ１、ｆ２」の値を、目的のフィルタ処理の一部を要素毎にベンチマークを実施し、コードの静的解析などを実行することで取得する。なお、パラメータの「ｐｉ、ｐｏ、ｆ１、ｆ２」に関しては、時間単位が同じであればよく、サイクル数以外の尺度を用いてもよい。また、パラメータの各値は、管理者が事前に調査したものを利用してもよい。
【００５７】
続いて、式（２）について、「非分割の場合」と、「４×１分割、１×４分割、２×２分割の場合」とに分けて説明する。
【００５８】
まず、非分割の場合には、分割画像データを生成せず、分割画像を合成する処理も実行しないので、式（２）の「Ｄ」および「Ｃ」の計算量は「０」となる。なお、式（２）の「Ｆ」は、式（３）によって表される。
【００５９】
【数１】
0005708303.tif 000002
【００６０】
これに対して、「４×１分割、１×４分割、２×２分割の場合」の何れかの場合には、式（２）の「Ｄ」、「Ｆ」、「Ｃ」は、それぞれ、式（４）、（５）、（６）によって表される。式（４）、（５）、（６）において、ｄｗおよびｄｈは、画像分割時における横分割数並びに縦分割数である。例えば、４×１分割の場合には、ｄｗの値は４となり、ｄｈの値は１となる。ｄｗおよびｄｈの値は、描画プロセッサのベクトル演算の要素数から事前に設定された値の組み合わせを利用してもよい。
【００６１】
【数２】
0005708303.tif 000003
【００６２】
【数３】
0005708303.tif 000004
【００６３】
【数４】
0005708303.tif 000005
【００６４】
図１１Ａ〜１１Ｄは、評価関数を補足説明するための図である。図１１Ａ〜１１Ｄに含まれるｓｗ、ｓｈ、ｆｗ、ｆｈに関する説明は、図１０で説明したものと同様である。なお、図１１Ａに示すように、フィルタ４１ａのサイズをｆｗ、ｆｈを用いて表すと、フィルタの横幅は「２ｆｗ＋１」となり、縦幅は「２ｆｈ＋１」となる。
【００６５】
図１１Ａに示す画像データ４０ａを、４×１分割すると、図１１Ｂに示す分割画像データ４０ｂが４個生成される。また、図１１Ａに示す画像データ４０ａを、１×４分割すると、図１１Ｃに示す分割画像データ４０ｃが４個生成される。また、図１１Ａに示す画像データ４０ａを、２×２分割すると、図１１Ｄに示す分割画像データ４０ｄが４個生成される。
【００６６】
式（４）について補足説明する。画像データ４０ａが分割されると、分割画像データ４０ｂ〜４０ｄの何れかのサイズのものが生成される。ここで、１要素の画像データ中から、ｄｗ×ｄｈ個の異なる座標の画素値を取得し、ｄｗ×ｄｈ個の画像値を出力するための時間は「ｐｉ×ｄｗ×ｄｈ＋ｐｏ」で表すことができる。このため、分割時において、画像データから分割画像データを作成する計算量は、上記式（４）で表すことができる。
【００６７】
式（３）、（５）について補足説明する。１座標の出力に要する時間と、処理対象となる画像データのサイズとを乗算したものが、フィルタ処理の時間に相当する。１座標の出力に要する時間は、入力を含むフィルタサイズに依存の時間と、フィルタサイズに非依存の時間と、処理結果の出力時間とを加算したものとなる。この１座標の出力に要する時間においては、分割時、非分割時による差異はない。
【００６８】
１座標の出力に要する時間に画面サイズを乗算したものが、フィルタ処理時間に対応する。非分割時の処理画面サイズは「ｓｗ×ｓｈ」となる。分割時の処理画面サイズは「ｓｗ×ｓｈ／ｄｗ／ｄｈ」となる。
【００６９】
式（６）について補足説明する。分割画像データを合成する処理は、ｄｗ×ｄｈ要素の画像から、１要素の画像変換を行うための処理時間を要する。１要素の画像データのある１つの座標に対する出力値を決定するために、ｄｗ×ｄｈ要素の画像データの１座標をｐｉで読み込み、時間ｐｏで出力する。この処理を、出力後の画像データのサイズｓｗ×ｓｈに対して行うことになる。このため、分割画像データを合成する処理の計算量は、式（６）で表される。
【００７０】
評価部１４３は、上記の式（２）〜（６）およびパラメータ１３２を基にして、各分割法の計算量を算出する。図１２は、分割法毎の計算量を示す図である。図１２に示す例では、５０ａ〜５０ｆのパラメータについての、各分割法の計算量を示す。
【００７１】
例えば、パラメータ５０ａの値は「ｓｗ＝６３６」、「ｓｈ＝４７６」、「ｆｗ＝２」、「ｆｈ＝２」、「ｐｉ＝２００」、「ｐｏ＝２００」、「ｆ１＝２０」、「ｆ２＝２０」となる。パラメータ５０ｂの値は「ｓｗ＝６３６」、「ｓｈ＝４８０」、「ｆｗ＝２」、「ｆｈ＝０」、「ｐｉ＝２００」、「ｐｏ＝２００」、「ｆ１＝２０」、「ｆ２＝２０」となる。パラメータ５０ｃの値は「ｓｗ＝６４０」、「ｓｈ＝４７６」、「ｆｗ＝０」、「ｆｈ＝２」、「ｐｉ＝２００」、「ｐｏ＝２００」、「ｆ１＝２０」、「ｆ２＝２０」となる。
【００７２】
パラメータ５０ｄの値は「ｓｗ＝６３８」、「ｓｈ＝４８０」、「ｆｗ＝１」、「ｆｈ＝０」、「ｐｉ＝５０」、「ｐｏ＝４００」、「ｆ１＝２０」、「ｆ２＝２０」となる。パラメータ５０ｅの値は「ｓｗ＝６３８」、「ｓｈ＝４８０」、「ｆｗ＝１」、「ｆｈ＝０」、「ｐｉ＝５０」、「ｐｏ＝４００」、「ｆ１＝１００」、「ｆ２＝５０」となる。パラメータ５０ｆの値は「ｓｗ＝６３８」、「ｓｈ＝４８０」、「ｆｗ＝１」、「ｆｈ＝０」、「ｐｉ＝６０」、「ｐｏ＝６０」、「ｆ１＝２０」、「ｆ２＝２０」となる。
【００７３】
また、パラメータ５０ａによる各分割法の計算量は、４×１分割で「６３２．３」、１×４分割で「６３２．７」、２×２分割で「６３１．９」、非分割で「１７３１．７」となる。このため、パラメータ５０ａの場合には、２×２分割の計算量が最小となる。
【００７４】
パラメータ５０ｂによる各分割法の計算量は、４×１分割で「３０１．１」、１×４分割で「２９９．７」、２×２分割で「３００．１」、非分割で「４０３．０」となる。このため、パラメータ５０ｂの場合には、１×４分割の計算量が最小となる。
【００７５】
パラメータ５０ｃによる各分割法の計算量は、４×１分割で「２９９．２」、１×４分割で「３０１．１」、２×２分割で「２９９．８」、非分割で「４０２．１」となる。このため、パラメータ５０ｃの場合には、４×１分割の計算量が最小となる。
【００７６】
パラメータ５０ｄによる各分割法の計算量は、４×１分割で「２３２．６」、１×４分割で「２３２．１」、２×２分割で「２３２．２」、非分割で「１９３．９」となる。このため、パラメータ５０ｄの場合には、非分割の計算量が最小となる。
【００７７】
パラメータ５０ｅによる各分割法の計算量は、４×１分割で「２５３．２」、１×４分割で「２５２．８」、２×２分割で「２５２．９」、非分割で「２７５．６」となる。このため、パラメータ５０ｅの場合には、１×４分割の計算量が最小となる。
【００７８】
パラメータ５０ｆによる各分割法の計算量は、４×１分割で「８４．５」、１×４分割で「８４．３」、２×２分割で「８４．４」、非分割で「９８．０」となる。このため、パラメータ５０ｆの場合には、１×４分割の計算量が最小となる。
【００７９】
評価部１４３は、パラメータに基づいて算出した、各分割法の計算量の情報を、フィルタ処理部１４４に出力する。
【００８０】
次に、フィルタ処理部１４４について詳細に説明する。図１３は、フィルタ処理部の構成を示す機能ブロック図である。図１３に示すように、このフィルタ処理部１４４は、分割部１４４ａ、フィルタ部１４４ｂ、合成部１４４ｃ、出力部１４４ｄを有する。
【００８１】
分割部１４４ａは、評価部１４３から評価結果に基づいて、画像データ１３１を分割する処理部である。分割部１４４ａは、実行した分割法の種別を、フィルタ部１４４ｂ、合成部１４４ｃ、出力部１４４ｄに通知する。
【００８２】
例えば、分割部１４４ａは「非分割」の計算量が最小の場合には、分割を行っていない旨をフィルタ部１４４ｂに通知する。分割部１４４ａは「４×１分割」の計算量が最小の場合には、４×１分割を行った旨をフィルタ部１４４ｂに通知する。分割部１４４ａは「１×４分割」の計算量が最小の場合には、１×４分割を行った旨をフィルタ部１４４ｂに通知する。分割部１４４ａは「２×２分割」の計算量が最小の場合には、２×２分割を行った旨をフィルタ部１４４ｂに通知する。
【００８３】
分割部１４４ａが、画像データ１３１を分割する場合の処理について説明する。ここでは、一例として、分割部１４４ａが、図１２のパラメータ５０ａの評価結果を評価部１４３から取得した場合について説明する。パラメータ５０ａの評価結果において、計算量が最小となるものは「２×２分割」となる。このため、分割部１４４ａは「２×２分割」を選択し、画像データ１３１の分割を行う。
【００８４】
図１４は、分割部の処理を説明するための図である。図１４に示すように、分割部１４４ａは、画像データ１３１を、分割画像データ１３１ａ、１３１ｂ、１３１ｃ、１３１ｄに分割する。なお、図１４に示すように、分割画像データ１３１ａ〜１３１ｄは、重複領域６０ａ〜６０ｄをそれぞれ含む。画像データ１３１のｓｗを「６３６」、ｓｈを「４７６」とすると、重複領域を含む分割画像データ１３１ａ〜１３１ｄの横サイズｗは「３２２」となり、縦サイズｈは「２４２」となる。これは、ｗは、ｓｗを「６３６」を半分にした値に、フィルタサイズｆｗ×２の値を加算したものに等しい。ｈは、「４７６」を半分にした値に、フィルタサイズｆｗ×２の値を加算したものに等しい。
【００８５】
図１５は、分割画像データの開始座標とオフセットとの関係を示す図である。開始座標と、オフセットとを加算した座標が、分割画像データ１３１ａ〜１３１ｄの実際の開始座標となる。オフセットは、フィルタサイズｆｗ、ｆｈに応じて設定されるものである。例えば、画像データ１３１をそのまま分割すると、各分割画像データには、重複画像が含まれないが、オフセットを考慮することで、重複画像を含む分割画像データの開始座標を指定できる。
【００８６】
分割画像データ１３１ｂの実際の開始座標は（３１８、０）となる。この座標（３１８、０）は、図１４の分割画像データ１３１ｂの左上の座標となる。分割画像データ１３１ｃの実際の開始座標は（０、２３８）となる。この座標（０、２３８）は、図１４の分割画像データ１３１ｃの左上の座標となる。分割画像データ１３１ｄの実際の開始座標は（３１８、２３８）となる。この座標（３１８、２３８）は、図１４の分割画像データ１３１ｄの左上の座標となる。
【００８７】
分割部１４４ａは、分割した画像データ１３１を、分割画像データ１３３として、記憶部１３０に記憶させる。分割画像データ１３３は、図１４の分割画像データ１３１ａ〜１３１ｄに対応する。
【００８８】
フィルタ部１４４ｂは、画像データに対して、図２に示したフィルタ処理を実行する処理部である。
【００８９】
画像データ１３１が分割部１４４ａに分割されている場合の、フィルタ部１４４ｂの処理について説明する。フィルタ部１４４ｂは、分割画像データ１３３に対してフィルタ処理を行い、フィルタ処理した分割画像データを、フィルタデータ１３４として記憶部１３０に記憶させる。図１４に示した分割画像データ１３１ａ〜１３１ｄにフィルタ処理を実行する場合には、３２２×２４２の内部３１８×２３８がフィルタ処理の出力サイズとなる。
【００９０】
画像データ１３１が分割部１４４ａに分割されていない場合の、フィルタ部１４４ｂの処理について説明する。フィルタ部１４４ｂは、画像データ１３１に対してフィルタ処理を行い、フィルタ処理した画像データを、フィルタデータ１３４として記憶部１３０に記憶させる。図１４に示した画像データ１３１にフィルタ処理を実行する場合には、６４０×４８０の内部６３６×４７６がフィルタ処理の出力サイズとなる。
【００９１】
合成部１４４ｃは、分割された画像データを合成する処理部である。なお、合成部１４４ｃは、分割部１４４ａが画像データ１３１を分割した場合に、処理を実行するものとする。合成部１４４ｃは、フィルタ処理された各分割画像データを、フィルタデータ１３４から取得し、各分割画像データを合成したものを、合成画像データ１３５として、記憶部１３０に記憶させる。
【００９２】
例えば、合成部１４４ｃは、フィルタ処理後の分割画像データ１３１ａ〜１３１ｄについて、図１５に示した開始座標＋オフセットを合成先の開始座標として指定し、各要素の有効領域を３１８×２３８とする。このような処理を合成部１４４ｃが実行することで、各分割画像データは、元のサイズ６３６×４７６の画像データとなる。
【００９３】
出力部１４４ｄは、フィルタ処理後の画像データを出力する処理部である。画像データ１３１が分割部１４４ａに分割されていない場合には、出力部１４４ｄは、フィルタデータ１３４を出力する。これに対して、画像データ１３１が分割部１４４ａに分割されている場合には、合成画像データ１３５を出力する。
【００９４】
次に、本実施例にかかる画像処理装置１００の処理手順について説明する。図１６は、本実施例にかかる画像処理装置の処理手順を示すフローチャートである。例えば、図１６に示す処理は、フィルタ処理対象となる画像データを取得したことを契機にして実行される。
【００９５】
図１６に示すように、画像処理装置１００は、画像データを取得し（ステップＳ１０１）、各分割法の計算量を評価する（ステップＳ１０２）。画像処理装置１００は、画像データを分割するか否かを判定する（ステップＳ１０３）。
【００９６】
画像処理装置１００は、画像データを分割しない場合には（ステップＳ１０３，Ｎｏ）、ステップＳ１０５に移行する。一方、画像処理装置１００は、画像データを分割する場合には（ステップＳ１０３，Ｙｅｓ）、画像データを分割する（ステップＳ１０４）。
【００９７】
画像処理装置１００は、フィルタ処理を実行し（ステップＳ１０５）、画像データを分割したか否かを判定する（ステップＳ１０６）。画像処理装置１００は、画像データを分割していない場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１０８に移行する。画像処理装置１００は、画像データを分割した場合には（ステップＳ１０６，Ｙｅｓ）、画像データを合成し（ステップＳ１０７）、フィルタ処理を行った画像データを出力する（ステップＳ１０８）。
【００９８】
次に、本実施例にかかる画像処理装置１００の効果について説明する。画像処理装置１００は、評価部１４３が画像を分割してフィルタ処理する処理の計算量と、画像を分割しないでフィルタ処理する場合の計算量を評価し、フィルタ処理部１４４が計算量の少ない分割法によるフィルタ処理を実行する。このため、画像処理装置１００によれば、ベクトル演算可能なプロセッサが実行するフィルタ処理を高速化することができる。
【００９９】
また、画像処理装置１００は、分割する画像データにフィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対してフィルタ処理を並列に実行した場合の計算量を評価する。このため、画像処理装置１００によれば、各分割法の計算量をより正確に評価することができる。
【０１００】
また、画像処理装置１００は、画像データを分割する場合に、ベクトル演算数に応じて、分割する画像データの数を特定する。このため、画像処理装置１００によれば、ベクトル演算による演算リソースを無駄なく利用することができる。
【０１０１】
また、画像処理装置１００は、画像データのサイズ、プロセッサに対する画素値の入出力時間、フィルタ処理に要する時間、画像データの分割数を基にして、各分割法の計算量を算出する。このため、画像処理装置１００によれば、各分割法の計算量を正確に評価することができる。
【０１０２】
次に、図５に示した画像処理装置１００と同様の機能を実現する画像処理プログラムを実行するコンピュータの一例を説明する。図１７は、画像処理プログラムを実行するコンピュータの一例を示す図である。
【０１０３】
図１７に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３を有する。また、コンピュータ２００は、記憶媒体からプログラム等を読取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７を有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【０１０４】
ハードディスク装置２０７は、評価プログラム２０７ａ、フィルタ処理プログラム２０７ｂを記憶する。ＣＰＵ２０１は、評価プログラム２０７ａ、フィルタ処理プログラム２０７ｂを読み出して、ＲＡＭ２０６に展開する。評価プログラム２０７ａは、評価プロセス２０６ａとして機能する。フィルタ処理プログラム２０７ｂは、フィルタ処理プロセス２０６ｂとして機能する。
【０１０５】
例えば、評価プロセス２０６ａは、図５の評価部１４３に対応する。フィルタ処理プロセス２０６ｂは、図５のフィルタ処理部１４４に対応する。
【０１０６】
なお、各プログラム２０７ａ，２０７ｂについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくてもよい。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００がこれらから各プログラム２０７ａ，２０７ｂを読み出して実行するようにしてもよい。
【０１０７】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０８】
（付記１）複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価する評価部と、
前記評価部の評価結果を基にして、前記フィルタ処理を実行するフィルタ処理部と
を有することを特徴とする画像処理装置。
【０１０９】
（付記２）前記評価部は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記１に記載の画像処理装置。
【０１１０】
（付記３）前記フィルタ処理部は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記１または２に記載の画像処理装置。
【０１１１】
（付記４）前記評価部は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記１、２または３に記載の画像処理装置。
【０１１２】
（付記５）コンピュータが実行する画像処理方法であって、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理方法。
【０１１３】
（付記６）前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記５に記載の画像処理方法。
【０１１４】
（付記７）前記フィルタ処理を実行する処理は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記５または６に記載の画像処理方法。
【０１１５】
（付記８）前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記５、６または７に記載の画像処理方法。
【０１１６】
（付記９）コンピュータに、
複数の要素を含む画像データに対してベクトル演算を実行するプロセッサが、該複数の要素よりも少ない要素を含む画像データに対してフィルタ処理を実行する場合に、
前記複数の要素よりも少ない要素を含む画像データのサイズと前記フィルタ処理にて適用されるフィルタサイズとに基づいて、該画像データを分割した各分割画像データに対してフィルタ処理を並列に実行した場合の計算量を複数の分割方法の各々に対して算出するとともに、各々算出した計算量と、該画像データを分割せずにフィルタ処理を実行する場合の計算量とを評価し、
評価した結果を基にして、フィルタ処理を実行する
各処理を実行させることを特徴とする画像処理プログラム。
【０１１７】
（付記１０）前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データに前記フィルタサイズに応じた重複領域を付与する処理を含めて、分割した各画像データに対して該フィルタ処理を並列に実行した場合の計算量を評価することを特徴とする付記９に記載の画像処理プログラム。
【０１１８】
（付記１１）前記フィルタ処理を実行する処理は、前記複数の要素よりも少ない要素を含む画像データを分割する場合に、前記ベクトル演算数に応じて、該画像データの分割数を特定することを特徴とする付記９または１０に記載の画像処理プログラム。
【０１１９】
（付記１２）前記計算量を評価する処理は、前記複数の要素よりも少ない要素を含む画像データのサイズ、プロセッサに対する画素値の入出力時間、前記フィルタ処理に要する時間、該画像データの分割数を基にして、計算量を評価することを特徴とする付記９、１０または１１に記載の画像処理プログラム。
【符号の説明】
【０１２０】
１００  画像処理装置
１１０  入力部
１２０  出力部
１３０  記憶部
１４０  制御部
【図１Ａ】
0005708303.tif 000006
【図１Ｂ】
0005708303.tif 000007
【図２】
0005708303.tif 000008
【図３】
0005708303.tif 000009
【図４】
0005708303.tif 000010
【図５】
0005708303.tif 000011
【図６】
0005708303.tif 000012
【図７】
0005708303.tif 000013
【図８】
0005708303.tif 000014
【図９】
0005708303.tif 000015
【図１０】
0005708303.tif 000016
【図１１Ａ】
0005708303.tif 000017
【図１１Ｂ】
0005708303.tif 000018
【図１１Ｃ】
0005708303.tif 000019
【図１１Ｄ】
0005708303.tif 000020
【図１２】
0005708303.tif 000021
【図１３】
0005708303.tif 000022
【図１４】
0005708303.tif 000023
【図１５】
0005708303.tif 000024
【図１６】
0005708303.tif 000025
【図１７】
0005708303.tif 000026