(57)【要約】【課題】フィルタ情報が既知の場合の多数のフィルタ処理の高速化を容易に図ること。【解決手段】画像処理プログラム生成装置は、入力画像に関する入力画像データを含む入力画像情報と、入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受けるフィルタ処理情報受領部と、フィルタ情報のうち少なくともフィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する画像処理方式決定部と、画像処理方式に応じて、複数のフィルタ処理を実行する画像処理プログラムを生成する画像処理プログラム生成部と、を備える。【選択図】図３
2018116594.tif 000002
【特許請求の範囲】
【請求項１】
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受けるフィルタ処理情報受領部と、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する画像処理方式決定部と、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する画像処理プログラム生成部と、を備える、画像処理プログラム生成装置。
【請求項２】
前記画像処理方式決定部は、前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する出力画像処理方式生成部を有する、請求項１に記載の画像処理プログラム生成装置。
【請求項３】
前記画像処理方式決定部は、前記フィルタ値と前記入力画像データとの前記積和演算の値が同一となる演算結果を共有する、請求項１または２に記載の画像処理プログラム生成装置。
【請求項４】
前記画像処理方式決定部は、
前記フィルタ情報から、少なくとも前記フィルタ番号、前記フィルタ位置、および前記フィルタ値を含む複数のフィルタ要素セットに分解し、該フィルタ要素セットに対する出力位置を算出し、前記フィルタ要素セットに対する前記入力画像情報の参照範囲を算出するフィルタ要素セット分解部と、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットをグループ化し，グループ化された共通の値と、前記入力画像との乗算結果を記憶し、前記憶した前記乗算結果を利用する加算処理を生成する分解画像処理方式生成部と、を有する、請求項１〜３のいずれか１項に記載の画像処理プログラム生成装置。
【請求項５】
前記画像処理方式決定部は、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットにおいて、共通の計算範囲である第１の共通範囲を算出し、該第１の共通範囲を第１の領域グループとして設定し、前記複数のフィルタ要素セットにおいて、前記第１の共通範囲と異なる第２の共通範囲を第２の領域グループとして設定し、前記１の共通範囲および前記２の共通範囲に含まれない範囲を非共通領域グループとして設定する領域分解部と、
前記第１の領域グループおよび前記第２の領域グループごとに、同一の前記フィルタ値が複数あった場合には、該フィルタ値と、前記入力画像との乗算結果を記憶し、該乗算結果を利用する加算処理を生成し、同一の前記フィルタ値がない場合には、対応する出力位置に出力する加算処理を生成する領域画像処理方式生成部と、を有する、請求項１〜４のいずれか１項に記載の画像処理プログラム生成装置。
【請求項６】
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受け、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定し、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する、画像処理プログラム生成方法。
【請求項７】
前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する、請求項６に記載の画像処理プログラム生成方法。
【請求項８】
前記フィルタ値と前記入力画像データとの前記積和演算の値が同一となる演算結果を共有する、請求項６または７に記載の画像処理プログラム生成方法。
【請求項９】
コンピュータを、
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受ける手段と、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する手段と、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する手段として機能させる、画像処理プログラム生成プログラム。
【請求項１０】
前記コンピュータを、
前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する手段として更に機能させる、請求項９に記載の画像処理プログラム生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラム生成装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
画像処理には、平滑化フィルタやガウシアンフィルタなどの画像処理の対象となる入力画像のサイズに比べて小さなフィルタを、入力画像の全体に対して施す処理（フィルタ処理）が存在する。フィルタ処理に用いるフィルタとして、例えばサイズが３×３であり、かつフィルタ値が全て１/９の平滑化フィルタが知られている。
【０００３】
以下に説明する本願において、入力画像（入力画像データ）は、ｘ方向およびｙ方向からなる２次元空間を構成する座標（ｘ-ｙ座標）に展開されているこことし、入力画像における任意の点は、ｘ-ｙ座標上の座標値（x,y）によって表すことができることとする。この場合において、平滑化フィルタを用いるフィルタ処理は、まずフィルタ処理の対象となる入力画像の任意の点（x,y）を中心とし、その点を中心とした平滑化フィルタと同じ３×３の部分画像を抽出する。そして、抽出した部分画像と、平滑化フィルタとの積和演算（内積）を行うことによって、任意の点に対して平滑化された出力値を得ることができる。このような処理を画像全体の各位置に対して実行することで、画像全体を平滑化した結果を得ることができる。
【０００４】
画像処理において、多数の異なる種類のフィルタを画像全体に掛けることによって、１つのフィルタを掛ける場合とは異なる特徴情報を得ることができる。多数の異なるフィルタを掛ける処理は、例えば、深層学習（ディープラーニング）における畳み込みニューラルネットワークの畳み込み層（Convolution Layer）で行っている。
【０００５】
図１は、一般的な画像処理プログラムの一例を示している。図１において、「f_num」はフィルタ数である。「yoffset[f]」はフィルタのｙ方向のオフセット値であり、「xoffset[f]」はフィルタのｘ方向のオフセット値である。「f_w[f]」はフィルタのｘ方向の幅であり、「f_h[f]」はフィルタのｙ方向の幅である。「in[y+fy-yoffset][x+fx-xoffset]」は入力画像の画像データ、「filt[f][fy][fx]」はフィルタデータ、および「out[f][y][x]」は出力データである。図１に示すループは、上から順にフィルタ数のループ、入力画像のｙ方向のループ、入力画像のｘ方向のループ、フィルタのｙ方向のループ、およびフィルタのｘ方向のループの５重ループとなっている。そして、５重ループの最内側で画素とフィルタ値との積和演算により出力データを更新する。また、図２は、ループ処理を始値と終値で示す簡易的なプログラムの一例を示している。具体的には、図２は、始値「0」、終値「f_num-1」、およびループ誘導変数のみで表現し、ステップ数は１としている。
【０００６】
このような多数の異なる種類のフィルタを画像全体に掛ける処理（多数フィルタ処理）は、膨大な計算量が必要であるため、計算速度の高速化が重要となる
【０００７】
例えば、深層学習は、学習した結果をモデルファイルとして生成する。そして、このモデルファイルを読み込むことで画像に対して画像処理を行う推論処理がある。推論処理には、フィルタのサイズや各要素のフィルタ値（フィルタ情報）等の外部情報を、既知の情報として扱えるという特徴がある。しかしながら、推論処理には、計算機に学習させるためのデータセットが実際のフィルタ情報と異なる場合に、学習結果の一部であるフィルタ情報が、実際のフィルタ情報と異なってしまうこともある。この場合、画像処理に使用するフィルタの数が増えるに従って、画像処理の高速化は困難になる可能性がある。
【０００８】
したがって、フィルタ情報を既知として扱える多数フィルタ情報を計算機上で実行する場合に、フィルタ情報を活用した画像処理の高速化を容易に行うことが重要となる。
【０００９】
特許文献１は、プログラムソースコードの情報を取得してプログラムを最適化するプログラム変換装置を開示している。具体的には、特許文献１に記載のプログラム変換装置は、プログラムのソースコードを解析するとともに、複数の同じ計算をまとめる処理を実行することによりプロセッサの処理の高速化を図っている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１４−２１９８５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１は、ソースコードを解析した結果を用いて最適化を実行している。そのため、特許文献１には、外部ファイルなどに埋め込まれたフィルタ情報を利用するフィルタ処理を実行する場合に、フィルタ情報に応じた最適化を自動で実行することができないため、処理速度の高速化を図ることが困難である可能性がある。
【００１２】
本発明の目的は、フィルタ情報が既知の場合の多数のフィルタ処理の高速化を容易に図ることのできる画像処理プログラム生成装置、方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の態様の画像処理プログラム生成装置は、入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受けるフィルタ処理情報受領部と、前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する画像処理方式決定部と、前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する画像処理プログラム生成部と、を備える。
【００１４】
本発明の第２の態様の画像処理プログラム生成方法は、入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受け、前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定し、前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する。
【００１５】
本発明の第３の態様の画像処理プログラム生成プログラムは、コンピュータを、入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受ける手段と、前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する手段と、前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する手段として機能させる。
【発明の効果】
【００１６】
本発明によれば、フィルタ情報が既知の場合の多数のフィルタ処理の高速化を容易に図ることのできる画像処理プログラム生成装置、方法、およびプログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】一般的な画像処理プログラムの一例を示す図である。
【図２】ループ処理プログラムの簡易的な一例を示す図である。
【図３】本発明の第１の実施形態に係る画像処理プログラム生成装置を示すブロック図である。
【図４】本発明の第１の実施形態に係る画像処理プログラム生成装置が受けるプログラムの一例を示す図である。
【図５】本発明の第１の実施形態に係る画像処理プログラム生成装置が受けるＸＭＬ（Extensible Markup Language）の一例を示す図である。
【図６】本発明の第１の実施形態に係る画像処理プログラム生成装置が受ける２つのフィルタを含むＸＭＬの一例を示す図である。
【図７】本発明の第１の実施形態に係る画像処理プログラム生成装置の動作の流れを示すフローチャートである。
【図８】（ａ）は本発明の第２の実施形態に係る画像処理プログラム生成装置を示すブロック図であり、（ｂ）は本発明の第２の実施形態に係る画像処理方式決定部を示すブロック図である。
【図９】本発明の第２の実施形態に係る画像処理方式生成部の動作の流れを示すフローチャートである。
【図１０】本発明の第２の実施形態に係る画像処理プログラム生成装置が受けるフィルタ情報の一例を示す図である。
【図１１】本発明の第２の実施形態に係る画像処理プログラム生成装置が生成する積和演算を示すプログラムの一例を示す図である。
【図１２】本発明の第２の実施形態に係る画像処理プログラム生成装置が生成する積和演算にフィルタ情報を反映させたプログラムの一例を示す図である。
【図１３】本発明の第２の実施形態に係る画像処理プログラム生成装置が生成する積和演算にフィルタ値を反映させたプログラムの一例を示す図である。
【図１４】特定の演算を除いた積和演算のプログラムの一例を示す図である。
【図１５】本発明の第２の実施形態に係る画像処理プログラム生成装置が生成する積和演算に２つのフィルタのフィルタ情報を反映させたプログラムの一例を示す図である。
【図１６】本発明の第２の実施形態に係る画像処理プログラム生成装置が生成する積和演算に２つの異なるサイズのフィルタのフィルタ情報を反映させたプログラムの一例を示す図である。
【図１７】（ａ）は本発明の第３の実施形態に係る画像処理プログラム生成装置を示すブロック図であり、（ｂ）は本発明の第３の実施形態に係る画像処理方式決定部を示すブロック図である。
【図１８】本発明の第３の実施形態に係るフィルタ要素セット分解部の動作の流れを示すフローチャートである。
【図１９】本発明の第３の実施形態に係るフィルタ要素セット分解部が生成したフィルタ要素セットを示す図である。
【図２０】本発明の第３の実施形態に係るフィルタ要素セット分解部がフィルタ要素セットの出力位置を算出した結果を示す図である。
【図２１】本発明の第３の実施形態に係るフィルタ要素セット分解部がフィルタ要素セットの画像の参照範囲を算出した結果を示す図である。
【図２２】本発明の第３の実施形態に係る分解画像処理方式生成部の動作の流れを示すフローチャートである
【図２３】本発明の第３の実施形態に係る分解画像処理方式生成部がフィルタ要素をグループ化した結果を示す図である。
【図２４】本発明の第３の実施形態に係る分解画像処理方式生成部が共通のフィルタ値を格納した結果を示すプログラムの一例を示す図である。
【図２５】本発明の第３の実施形態に係る分解画像処理方式生成部が生成した加算処理のプログラムの一例を示すである。
【図２６】本発明の第３の実施形態に係る分解画像処理方式生成部が生成した積和演算のプログラムの一例を示す図である。
【図２７】（ａ）は本発明の第４の実施形態に係る画像処理プログラム生成装置を示すブロック図であり、（ｂ）は本発明の第４の実施形態に係る画像処理方式決定部を示すブロック図である。
【図２８】本発明の第４の実施形態に係る領域分解部の動作の流れを示すフローチャートである。
【図２９】本発明の第４の実施形態に係る領域分解部が、第１の領域グループを設定した結果を示す図である。
【図３０】本発明の第４の実施形態に係る領域分解部が、非共通領域グループを設定した結果を示す図である。
【図３１】本発明の第４の実施形態に係る領域画像処理方式生成部の動作の流れを示すフローチャートである。
【図３２】本発明の第４の実施形態に係る画像処理プログラム出力部が出力するプログラムの一例を示す図である。
【図３３】本発明の第４の実施形態に係る領域分解部が、図２９とは異なる第１の領域グループを設定した結果を示す図である。
【図３４】図３３を視覚的に示す概念図である。
【図３５】第１の非共通範囲〜第６の非共通範囲を示す図である。
【図３６】図３５を視覚的に示す概念図である。
【図３７】第２の領域グループを示す図である。
【図３８】図３７を視覚的に示す概念図である。
【図３９】非共通領域グループを示す図である。
【図４０】図３９を視覚的に示す概念図である。
【図４１】本発明のその他の実施形態に係る画像処理プログラム生成装置を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら、本発明の実施形態について詳細に説明する。なお、各図において同一または相当する部分には同一の符号を付して適宜説明は省略する。
【００１９】
［第１の実施形態］
図３は、本発明の第１の実施形態に係る画像処理プログラム生成装置を示すブロック図である。
【００２０】
画像処理プログラム生成装置１００は、フィルタ処理情報受領部１１０と、画像処理方式決定部１２０と、画像処理プログラム生成部１３０と、を備える。
【００２１】
フィルタ処理情報受領部１１０は、画像処理の対象となる入力画像の入力画像サイズや、画素データ等を含む入力画像に関する入力画像情報を受ける。また、フィルタ処理情報受領部１１０は、フィルタ数、フィルタ番号、フィルタサイズ、フィルタの位置、フィルタ値、オフセットに関する情報、および出力領域等を含むフィルタに関するフィルタ情報を受ける。なお、フィルタ処理情報受領部１１０は、１つの入力画像に対して画像処理を施すに際し、１つのフィルタ情報を受けてもよいし、Ｎ（Ｎは２以上の整数）個のフィルタ情報を受けてもよい。
【００２２】
図４は、フィルタ情報処理受領部１１０が受けるプログラムの一例である。なお、図４に示すプログラムには、１つのフィルタのフィルタ情報が含まれている。
【００２３】
「idata(in)」は、入力画像の変数名が「in」であることを示している。また、入力画像変数のデータ型は、関数引数の定義からunsigned char型である。  
「isize(i_w,i_h)」は、入力画像のサイズを示している。すなわち、本実施形態において、入力画像の画像サイズはw×hである。以後、特に断りのない限り、入力画像の画像サイズはw×hであるものとする。  
「odata(out)」は、出力変数名が「out」であることを示している。また、出力変数のデータ型は、関数の引数の定義から、入力画像と同様にunsigned char型である。  
「fdata(filt)」は、フィルタの変数名が「filt」であることを示している。また、フィルタデータは関数引数の定義からfloat型である。
「fnum(1)」は、フィルタの数が「1」であることを示している。  
「fsize(3,3)」は、フィルタが行列で表されており、そのフィルタのサイズが３×３であることを示している。  
「fvalue(2,0,0,0,0,0,0,0,2)」は、各フィルタ位置におけるフィルタ値を示している。具体的には、行列の各要素を（x,y）で合わすことにし、左上の要素を（0,0）とした場合に、（0,0）の値が「2」、（1,0）の値が「0」、（2,0）の値が「0」、（0,1）の値が「0」、（1,1）の値が「0」、（2,1）の値が「0」、（0,2）の値が「0」、（1,2）の値が「0」、および（2,2）の値が「2」であることを意味している。  
「fstyle(center)」は、フィルタの中心を基準として、フィルタと、入力画像との内積計算をすることを示している。また、内積計算の基準はフィルタの中心に限らず、例えばフィルタの中心を、フィルタの左上に設定することも可能である。  
「foffset(1,1)」は、フィルタに対して画像のオフセットが「(1,1)」であることを示している。画像処理を実行するためのループ処理において、始値はオフセット値であり、終値は入力画像の端の位置からオフセットを引いた値となる。  
「roi(1:i_w-2,1:i_h-2)」は、内積の演算結果の出力領域を示している。
【００２４】
なお、ファイル情報はＸＭＬ（Extensible Markup Language）形式であってもよい。図５は、１つのフィルタを含むフィルタを示すＸＭＬの一例である。
【００２５】
また、図６は２つのフィルタを含むＸＭＬの一例である。具体的には、図６において、１つ目のフィルタは３×３のフィルタであり、２つ目のフィルタは５×５のフィルタである。この場合、画像処理プログラム生成装置１００は、同一の入力画像に対して、異なる２種類のフィルタ処理を行うプログラムを生成する。
【００２６】
再び図３を参照する。画像処理方式決定部１２０は、フィルタ処理情報受領部１１０が受けた入力画像情報およびフィルタ情報に基づいて、ループ処理の方式、すなわち、入力画像に対する画像処理の方式を決定する。
【００２７】
画像処理方式決定部１２０は、先ず、フィルタサイズに応じて、フィルタ値と、任意の位置（x,y）を中心とした入力画像の入力画像データ（画素値）との積和演算（内積）を展開する。そして、画像処理方式決定部１２０は、フィルタ情報のうち少なくともフィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する。例えば、画像処理方式決定部１２０は、フィルタ値が「0」である場合、そのフィルタ値と入力画像データとの積和計算を削除する。これは、フィルタ値が「0」である場合、積和計算の結果は「0」になるので、画像処理の結果に直接的に寄与しないためである。すなわち、本実施形態は、画像処理に直接的に寄与しない演算を予め削除することにより、画像処理に要する時間を短縮し、画像処理の高速化を図ることができる。
【００２８】
また、具体的には後述するが、画像処理方式決定部１２０は、フィルタ値と入力画像データとの乗算結果のうち、同一の値を共有することもできる。この場合、画像処理方式決定部１２０は、１つ以上のフィルタのフィルタサイズおよびフィルタ値を参照して、共通のフィルタ値であり、かつ共通の位置の要素を抽出し分類する。また、画像処理方式決定部１２０は、分類した値と、入力画像の全体領域または入力画像の一部の入力画像データとの乗算結果を一時的に記憶部（図示しない）等に格納する。このような記憶部は、例えば画像処理方式決定部１２０の内部に設ければよい。そして、画像処理方式決定部１２０は、記憶部に格納した乗算結果を参照しつつ、各出力位置に対する総和計算を算出する。すなわち、分類した値と入力画像との乗算は同じ値になるので、乗算は１回のみ行い、乗算結果を分類された数だけ足し合わせれば、分類した値と入力画像との積和演算を実行したことになる。これにより、フィルタ値と入力画像データとの積和演算のうち、乗算の回数を削減することができるので、フィルタ処理に必要な演算量を削減することができる。
【００２９】
画像処理プログラム生成部１３０は、画入力画像情報、フィルタ情報、および画像処理方式決定部１２０の処理に基づいて画像処理プログラムを生成する。
【００３０】
［画像処理プログラム生成装置１００の動作］
図７は、本発明の第１の実施形態に係る画像処理プログラム生成装置１００の動作の流れを示すフローチャートである。
【００３１】
まず、フィルタ処理情報受領部１１０は、入力画像の入力画像データを含む入力画像情報と、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、出力領域等を含むフィルタ情報とを受ける（ステップＳ１０１）。
【００３２】
次いで、画像処理方式決定部１２０は、フィルタ情報のうち少なくともフィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する（ステップＳ１０２）。
【００３３】
最後に、画像処理プログラム生成部１３０は、入力画像情報、フィルタ情報、および画像処理方式決定部１２０の処理に基づいて画像処理プログラムを生成する（ステップＳ１０３）。
【００３４】
［第２の実施形態］
図８（ａ）は、本発明の第２の実施形態に係る画像処理プログラム生成装置を示すブロック図であり、図８（ｂ）は、本発明の第２の実施形態に係る画像処理方式決定部を示す図である。
【００３５】
画像処理プログラム生成装置１００Ａは、フィルタ処理情報受領部１１０と、画像処理方式決定部１２０Ａと、画像処理プログラム生成部１３０とを備える。
【００３６】
画像処理方式決定部１２０Ａは、出力画像処理方式生成部１２１を有する。
【００３７】
出力画像処理方式生成部１２１は、フィルタ値の値が「0」の積和演算を削除する。また、出力画像処理方式生成部１２１は、フィルタ値の値が「1」の積和演算うち、乗算を削除する。さらに、出力画像処理方式生成部１２１は、フィルタ値の値が「-1」の積和演算の乗算を削除するとともに、対応する入力画像データにマイナス符号を付加する。これにより、出力画像処理方式生成部１２１は、フィルタ値の値が「0」の積和演算、フィルタ値の値が「1」および「-1」の乗算が削除されるので画像処理に必要な演算量を削減することができる。
【００３８】
［出力画像処理方式生成部１２１の動作］
図９は、出力画像処理方式生成部１２１の動作の流れを示すフローチャートである、以下、図９を参照しつつ、出力画像処理方式生成部１２１の動作の流れについて詳細に説明する。
【００３９】
まず、出力画像処理方式生成部１２１は、フィルタ処理情報受領部１１０が受けた入力画像情報およびフィルタ情報に応じて、積和演算で構成された基本ループを生成する（ステップＳ２０１）。
【００４０】
図１０は、第２の実施形態においてフィルタ処理情報受領部１１０が受けるフィルタ情報の一例を示す図である。図１０に示すように、フィルタ情報は、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、基準点、出力領域、およびオフセット値を含んでいる。以下では、図１０に示すように、フィルタ数が１、フィルタサイズが３×３、オフセット値が１であるものとして説明する。
【００４１】
図１１は、ステップＳ２０１において、出力画像処理方式生成部１２１が生成した基本ループを示すプログラムである。図１１に示すプログラムは５重のループ演算を含んでいる。図１１に図示のループは、上から順に、フィルタ数のループ、入力画像のｙ方向のループ、入力画像のｘ方向のループ、フィルタのｙ方向のループ、フィルタのｘ方向のループである。また、図１１において、  
「out[f][y][x]+=in[y+fy-offset[f]][x+fx-offset[f]]*filt[f][fy][fx]」  
は、入力画像とフィルタとの内積を表している。ここで、「f」はフィルタ番号、「fy」はｙ方向の位置、「fx」はｘ方向の位置を示している。なお、上記の式において、「*」は、乗算を意味する（以下、同様）。
【００４２】
次いで、出力画像処理方式生成部１２１は、フィルタ数、フィルタサイズ、およびフィルタ値等に基づいてフィルタ数ループと、フィルタループとを展開する（ステップＳ２０２）。
【００４３】
図１２は、ステップＳ２０２において、出力画像処理方式生成部１２１が展開したプログラムを示している。図１２に示すように、フィルタサイズが３×３であるので、出力画像処理方式生成部１２１はフィルタ数、フィルタサイズ、およびフィルタ値等に基づいて、９個の式を生成する。図１２に示すように、画像ループの始値は、  
「out[0][y][x]+=in[y+0-1][x+0-1]*filt[0][0][0]」  
のように、オフセット値として設定されている。そして、画像ループの終値は、  
「out[0][y][x]+=in[y+2-1][x+2-1]*filt[0][2][2]」  
のように、入力画像の端の位置からオフセット値を引いた値が設定される。
【００４４】
次いで、出力画像処理部方式決定部１２１は、各「filt[][][]」に具体的なフィルタ値を展開する（ステップＳ２０３）。ここで、「filt[0][0][0]」は行列において（0,0）のフィルタ値である。「filt[0][0][1]」は行列において（1,0）のフィルタ値である。「filt[0][0][2]」は行列において（2,0）のフィルタ値である。「filt[0][1][0]」は行列において（0,1）のフィルタ値である。「filt[0][1][1]」は行列において（1,1）のフィルタ値である。「filt[0][1][2]」は行列において（2,1）のフィルタ値である。「filt[0][2][0]」は行列において（0,2）のフィルタ値である。「filt[0][2][1]」は行列において（1,2）のフィルタ値である。「filt[0][2][2]」は行列において（2,2）のフィルタ値である。
【００４５】
図１３は、ステップＳ２０３において、出力画像処理方式生成部１２１がフィルタ値を展開したプログラムを示している。図１３に示すように、出力画像処理方式生成部１２１は、「filt[0][0][0]」に「1」、「filt[0][0][1]」に「0」、「filt[0][0][2]」に「0」、「filt[0][1][0]」に「0」、「filt[0][1][1]」に「2」、「filt[0][1][2]」に「0」、「filt[0][2][0]」に「0」、「filt[0][2][1]」に「0」、「filt[0][2][2]」に「-1」をそれぞれ代入する。
【００４６】
次いで、出力画像処理方式生成部１２１は、展開した式において、フィルタ値が、「-1」、「1」、および「0」のいずれであるか否かを参照する。
【００４７】
出力画像処理方式生成部１２１は、フィルタ値が「0」であった場合、そのフィルタ値と入力画像データとの積和演算を削除する（ステップＳ２０４）。すなわち、出力画像処理方式生成部１２１は、「in[y+0-1][x+1-1]*0」、「in[y+0-1][x+2-1]*0」、「in[y+1-1][x+0-1]*0」「in[y+1-1][x+2-1]*0」、「in[y+2-1][x+0-1]*0」、および「in[y+2-1][x+1-1]*0」の６個の式を削除する。
【００４８】
また、出力画像処理方式生成部１２１は、フィルタ値が「1」であった場合、フィルタ値と入力画像データとの積和演算のうち、乗算を削除する（ステップＳ２０５）。すなわち、出力画像処理方式生成部１２１は、「in[y+0-1][x+0-1]*1」を「in[y+0-1][x+0-1]」と変換することにより、「*1」の乗算を削除する。
【００４９】
そして、出力画像処理方式生成部１２１は、フィルタ値が「-1」であった場合、そのフィルタ値と入力画像データとの積和演算のうち、乗算を削除し、入力画像データにマイナス符号を付けた加算のみの処理に変換する（ステップＳ２０６）。すなわち、出力画像処理方式生成部１２１は、「in[y+2-1][x+2-1]*(-1)」を「-in[y+2-1][x+2-1]」と変換することにより、「*(-1)」の乗算を削除する。
【００５０】
図１４は、ステップＳ２０４〜ステップＳ２０６の変換を行った後のプログラムを示している。図１４に示すように、フィルタ値が「0」の積和演算は削除され、フィルタ値が「1」および「-1」の乗算が削除されている。また、フィルタ値が「-1」の場合には、そのフィルタ値と積和計算を行う入力画像データにマイナス符号が付加されている。
【００５１】
上記のように、出力画像処理方式生成部１２１は、フィルタ値と入力画像データとの積和演算のうち、画像処理には寄与しない加算および乗算を削除することができる。これにより、画像処理に寄与しない演算が削除されるので、画像処理プログラム生成装置１００Ａは、画像処理に必要な演算量を削減することができる。すなわち、画像処理プログラム生成装置１００Ａは、画像処理を高速化することができる。
【００５２】
図１１〜図１４を参照し、フィルタ処理情報受領部１１０が１つのフィルタを受けた場合の処理について説明したが、これは例示であり、本発明を限定するものではない。フィルタ情報受領部１１０を複数のフィルタを受けた場合であっても、画像処理を高速化することができる。
【００５３】
図１５は、フィルタ処理情報受領部１１０が２つのフィルタを受けた場合に、出力画像処理方式生成部１２１がステップＳ２０２で展開するプログラムの一例である。
【００５４】
図１５に示すように、出力画像処理方式生成部１２１は、フィルタ処理情報受領部１１０が２つのフィルタを受けると、入力画像をスキャンするループの中に、その入力画像と２つのフィルタとの内積を計算するプログラムを展開する。この後の処理は図１２〜図１４と同様であるので説明は省略する。すなわち、フィルタ処理情報受領部１１０が２つ（複数）のフィルタを受けた場合であっても、出力画像処理方式生成部１２１は、入力画像とそれぞれのフィルタとの内積を計算するプログラムを出力することで画像処理を高速化することができる。
【００５５】
また、出力画像処理方式生成部１２１は、フィルタ処理情報受領部１１０が異なるサイズのフィルタを複数受けた場合であっても、画像処理を高速化することができる。
【００５６】
図１６は、フィルタ処理情報受領部１１０が２つの異なるサイズのフィルタを受けた場合に、出力画像処理方式生成部１２１がステップＳ２０２で展開するプログラムの一例である。ここでは、フィルタ処理情報受領部１１０は、オフセット値が（1,1）である３×３のフィルタと、オフセット値が（2,2）である５×５のフィルタを受けたものとして説明する。
【００５７】
図１６に示すように、出力画像処理方式生成部１２１は、フィルタ処理情報受領部１１０が２つの異なるサイズのフィルタを受けると、入力画像をスキャンするループの中に、その入力画像とフィルタごとの内積を計算するプログラムを展開する。図１６では、初めに入力画像と、３×３のフィルタとの内積を計算するプログラムを展開し、その後に５×５のフィルタとの内積を計算するプログラムを展開する。この後の処理は図１２〜図１４と同様であるので説明は省略する。すなわち、フィルタ処理情報受領部１１０が２つ（複数）の異なるサイズのフィルタを受けた場合であっても、出力画像処理方式生成部１２１は、入力画像とそれぞれのフィルタとの内積を計算するプログラムを出力することで画像処理を高速化することができる。
【００５８】
［第３の実施形態］
図１７は、本発明の第３の実施形態に係る画像処理プログラム生成装置を示すブロック図である。
【００５９】
画像処理プログラム生成装置１００Ｂは、フィルタ処理情報受領部１１０と、画像処理方式決定部１２０Ｂと、画像処理プログラム生成部１３０とを備える。
【００６０】
画像処理方式決定部１２０Ｂは、フィルタ要素セット分解部１２２と、分解画像処理方式生成部１２３とを有する。
【００６１】
フィルタ要素セット分解部１２２は、フィルタ情報に基づいて、フィルタ番号、フィルタ位置、およびフィルタ値を含むフィルタ要素セットに分解する。また、フィルタ要素セット分解部１２２は、各フィルタ要素セットに対応する出力位置を算出する。そして、フィルタ要素セット分解部１２２は、各フィルタ要素セットに対応する入力画像の参照範囲を算出する。
【００６２】
分解画像処理方式生成部１２３は、フィルタ要素セットに対してフィルタ値が「0」のフィルタ要素セットを除いた中から、共通のフィルタ値を持つフィルタ要素セットを抽出してグループ化する。また、分解画像処理方式生成部１２３は、グループ化した共通の値と、入力画像データとの乗算を算出する。なお、分解画像処理方式生成部１２３は、ここでの乗算処理を入力画像の全体に対して実行する。そして、分解画像処理方式生成部１２３は、乗算の結果を記憶し、フィルタ要素セットに数に応じて記憶した乗算の結果を加算する。
【００６３】
［フィルタ要素セット分解部１２２の動作］
図１８は、フィルタ要素セット分解部１２２の動作の流れを示すフローチャートである、以下、図１８を参照しつつ、フィルタ要素セット分解部１２２の動作の流れについて詳細に説明する。
【００６４】
まず、フィルタ要素セット分解部１２２は、フィルタ処理情報受領部１１０が受けたフィルタ情報をフィルタ要素セットに分解する（ステップＳ３０１）。
【００６５】
図１９は、ステップＳ３０１において、フィルタ要素セット分解部１２２が分解したフィタ要素セットを示す図である。具体的には、フィルタ要素セット分解部１２２は、３×３のフィルタである場合、９個のフィルタ要素セットに分解する。図１９において、「id」はフィルタ番号、「p（x,y）」はフィルタ位置、「v」はフィルタ値を示している。具体的には、第１のフィルタ要素セット２０１は、フィルタ番号が０、位置が(0,0)、フィルタ値が２である。第２のフィルタ要素セット２０２は、フィルタ番号が０、位置が(1,0)、フィルタ値が０である。第３のフィルタ要素セット２０３は、フィルタ番号が０、位置が(2,0)、フィルタ値が０である。第４のフィルタ要素セット２０４は、フィルタ番号が０、位置が(0,1)、フィルタ値が０である。第５のフィルタ要素セット２０５は、フィルタ番号が０、位置が(1,1)、フィルタ値が０である。第６のフィルタ要素セット２０６は、フィルタ番号が０、位置が(2,1)、フィルタ値が０である。第７のフィルタ要素セット２０７は、フィルタ番号が０、位置が(0,2)、フィルタ値が０である。第８のフィルタ要素セット２０８は、フィルタ番号が０、位置が(1,2)、フィルタ値が０である。第９のフィルタ要素セット２０９は、フィルタ番号が０、位置が(2,2)、フィルタ値が２である。
【００６６】
次いで、フィルタ要素セット分解部１２２は、分解した各フィルタ要素セットの出力位置を算出する（ステップＳ３０２）。
【００６７】
図２０は、ステップＳ３０２において、フィルタ要素セット分解部１２２が各フィルタ要素セットの出力位置を算出した結果を示す図である。具体的には、第１のフィルタ要素セット２０１の場合、出力位置は「out[y+1][x+1]」である。第２のフィルタ要素セット２０２の場合、出力位置は「out[y+1][x]」である。第３のフィルタ要素セット２０３の場合、出力位置は「out[y+1][x-1]」である。第４のフィルタ要素セット２０４の場合、出力位置は「out[y][x+1]」である。第５のフィルタ要素セット２０５の場合、出力位置は「out[y][x]」である。第６のフィルタ要素セット２０６の場合、出力位置は「out[y][x-1]」である。第７のフィルタ要素セット２０７の場合、出力位置は「out[y-1][x+1]」である。第８のフィルタ要素セット２０８の場合、出力位置は「out[y-1][x]」である。第９のフィルタ要素セット２０９の場合、出力位置は「out[y-1][x-1]」である。
【００６８】
次いで、フィルタ要素セット分解部１２２は、各フィルタ要素セットに対応する入力画像の参照範囲を算出する（ステップＳ３０３）。
【００６９】
図２１は、ステップＳ３０３において、フィルタ要素セット分解部１２２が各フィルタ要素セットにおける入力画像の参照範囲を算出した結果を示す図である。具体的には、第１のフィルタ要素セット２０１の場合、第１の参照範囲２１１は「(0:w-3,0:h-3)」である。ここで、「(0:w-3,0:h-3)」は、ｘ方向の範囲が「0」から「w-3」、ｙ方向の範囲が「0」から「h-3」であることを意味している。また、第２のフィルタ要素セット２０２の入力画像の第２の参照範囲２１２は「（1:w-2,0:h-3）」である。第３のフィルタ要素セット２０３の入力画像の第３の参照範囲２１３は「（2:w-1,0:h-3）」である。第４のフィルタ要素セット２０４の入力画像の第４の参照範囲２１４は「（0:w-3,1:h-2）」である。第５のフィルタ要素セット２０５の入力画像の第５の参照範囲２１５は「（1:w-2.1:h-2）」である。第６のフィルタ要素セット２０６の入力画像の第６の参照範囲２１６は「（2:w-1,1:h-2）」である。第７のフィルタ要素セット２０７の入力画像の第７の参照範囲２１７は「（0:w-3,2:h-1）」である。第８のフィルタ要素セット２０８の入力画像の第８の参照範囲２１８は「（1:w-2,2:h-1）」である。第９のフィルタ要素セット２０９の入力画像の第９の参照範囲２１９は「（2:w-1,2:h-1）」である。
【００７０】
［分解画像処理方式生成部１２３の動作］
図２２は、分解画像処理方式生成部１２３の動作の流れを示すフローチャートである。以下、図２２を参照しつつ、分解画像処理方式生成部１２３の動作の流れについて詳細に説明する。
【００７１】
まず、分解画像処理方式生成部１２３は、フィルタ要素セット分解部１２２が分解したフィルタ要素セットのうち、フィルタ値が「0」のフィルタ要素セットを除いた中から共通のフィルタ値を持つフィルタ要素セットを、共通値グループとしてグループ化する（ステップＳ３１１）。
【００７２】
図２３は、ステップＳ３１１において、分解画像処理方式生成部１２３がフィルタ要素をグループ化した結果を示す図である。図２３に示すように、本実施形態においては、分解画像処理方式生成部１２３は、まず、各フィルタ要素セットのうち、フィルタ値が「0」である第２のフィルタ要素セット２０２〜第８のフィルタ要素セット２０８をグループ化の対象から除く。そして、分解画像処理方式生成部１２３は、フィルタ値が「2」である第１のフィルタ要素セット２０１と、第９のフィルタ要素２０９とをグループ化する。なお、本実施形態では共通の値が１個のみであるが、これは例示であり、本発明を限定するものではない。本実施形態は、共通の値が複数ある場合には、その数に応じた複数のグループを設定することができる。
【００７３】
次いで、分解画像処理方式生成部１２３は、グループ化した共通のフィルタ値を共有するために一時的に記憶部等に格納する（ステップＳ３１２）。
【００７４】
図２４は、ステップＳ３１２において、分解画像処理方式生成部１２３が共通のフィルタ値を格納した結果を示すプログラムである。具体的には、分解画像処理方式生成部１２３は、共通のフィルタ値を共有するように、フィルタ値を配列に出力するループ乗算処理を生成する。図２４において、「t[0][x][y]」は、[0]がフィルタ番号、[x]がｘ方向の位置、および[y]がｙ方向の位置を表す３次元配列である。また、「t[0][x][y]」は、一時的な配列であり、入力画像データと同じサイズの一時的な変数である。
【００７５】
次いで、分解画像処理方式生成部１２３は、グループ化したフィルタ要素セットに基づいて、加算処理を生成する（ステップＳ３１３）。
【００７６】
図２５は、ステップＳ３１３において、分解画像処理方式生成部１２３が生成した加算処理のプログラムを示している。具体的には、本実施形態では、図２５に示すように、分解処理画像処理方式決定部１２３は、第１のフィルタ要素セット２０１と第９のフィルタ要素セット２０９とをグループ化している。この場合、分解画像処理方式生成部１２３は、第１のフィルタセット２０１と、第９のフィルタセット２０９との加算処理を一時配列で展開する。すなわち、分解画像処理方式生成部１２３は、ループ加算処理を生成する。
【００７７】
最後に、分解画像処理方式生成部１２３は、ステップＳ３１２で生成したループ乗算処理を実行した後に、ステップＳ３１３で生成した加算ループ処理を実行する処理を生成する（ステップＳ３１４）。
【００７８】
図２６は、ステップＳ３１４において、分解画像処理方式生成部１２３が生成した積和演算のプログラムを示している。図２６に示すプログラムは、まず乗算処理が実行されて、その乗算結果を加算処理に入力するように構成されている。そのため、本実施形態は、グループ化したフィルタ要素セットにおける積和演算において、乗算処理は１度行えばよい。
【００７９】
したがって、第３の実施形態に係る画像処理プログラム生成装置１００Ｂは、共通のフィルタ値を共有することによって、共通値グループに含まれるフィルタ要素セットの数がＭ（Ｍは２以上の整数）個である場合、「Ｍ−１」個の乗算を削減することができる。すなわち、画像処理プログラム生成装置１００Ｂは、画像処理を高速化することができる。
【００８０】
［第４の実施形態］
図２７は、本発明の第４の実施形態に係る画像処理プログラム生成装置を示すブロック図である。
【００８１】
画像処理プログラム生成装置１００Ｃは、フィルタ処理情報受領部１１０と、画像処理方式決定部１２０Ｃと、画像処理プログラム生成部１３０とを備える。
【００８２】
画像処理方式決定部１２０Ｃは、フィルタ要素セット分解部１２２と、領域分解部１２４と、領域画像処理方式生成部１２５とを有する。
【００８３】
領域分解部１２４は、フィルタ値が「0」のフィルタ要素セットを除いたフィルタ要素セットの中から、共通の参照範囲である第１の共通範囲を持つ第１の領域グループを設定する。また、領域分解部１２４は、第１の共通範囲と異なる第２の共通範囲を持つ第２の領域グループを設定する。さらに、領域分解部１２４は、第１の共通範囲および第２の共通範囲に含まれない範囲を非共通領域グループとして設定する。なお、領域分解部１２４は、第１の共通範囲がＮ（Ｎは２以上の整数）個ある場合には、Ｎ個の領域グループを設定する。
【００８４】
領域画像処理方式生成部１２５は、共通の参照範囲を持つ領域グループごとに、同一のフィルタ値を持つフィルタ要素セットの有無を確認する。そして、領域画像処理方式生成部１２５は、同一のフィルタ値が複数あった場合には、そのフィルタ値と、入力画像データとの乗算結果を記憶部等に格納し、格納した乗算結果を利用する加算処理を生成する。また、領域画像処理方式生成部１２５は、特定のフィルタ値を持つフィルタ要素セットが１つであれば、対応する出力位置に出力する処理を設定する。
【００８５】
［領域分解部１２４の動作］
図２８は、領域分解部１２４の動作の流れを示すフローチャートである。以下、図２８を参照しつつ、領域分解部１２４の動作の流れについて詳細に説明する。
【００８６】
まず、領域分解部１２４は、各フィルタ要素セットのうち、フィルタ値が「0」のフィルタ要素セットを除いた全てのフィルタ要素セットにおいて、フィルタ要素セットごとに参照範囲を算出し、共通の参照範囲を第1の領域グループに設定する（ステップＳ４０１）。
【００８７】
図２９は、ステップＳ４０１において、領域分解部１２４が、第１の領域グループを設定した結果を示す図である。領域分解部１２４は、図１９における第１の参照範囲２１１と、第９の参照範囲２１９との共通の範囲を算出し、第１の領域グループとして設定する。具体的には、共通の計算範囲は、それぞれのフィルタ要素セットの参照範囲の積集合となる。すなわち、領域分解部１２４は、（0:w-3,0:h-3）∩（2:w-1,2:h-1）＝（2:w-3,2:h-3）のように、第１の参照範囲２１１と、第９の参照範囲２１９の共通範囲である第１の共通範囲２２１を算出することができる。この場合、第１の共通範囲２２１が第１の領域グループとして設定される。なお、上記の式において、「∩」は積集合を意味しており、Ａ∩Ｂと記載した場合には、ＡとＢとの共通の領域を表す。
【００８８】
次いで、領域分解部１２４は、第１の共通範囲２２１とは異なる範囲での共通範囲を算出し、その共通範囲を第２の領域グループとして設定する（ステップＳ４０２）。しかしながら、第１のフィルタ要素セット２０１および第９のフィルタ要素セット２０９においては、第２の領域グループは存在しない。なお、第２の領域グループが存在する場合については後述する。
【００８９】
最後に、領域分解部１２４は、共通の参照範囲に含まれない範囲を非共通領域グループとして設定する（ステップＳ４０３）。ここで、非共通領域グループは、各参照範囲から第1の領域グループを除いた範囲となる。
【００９０】
図３０は、ステップＳ４０３において、領域分解部１２４が設定した非共通領域グループを設定した結果を示す図である。第1のフィルタ要素セット２０１における非共通領域グループは、（0:w-3,0:h-3）-（2:w-3,2:h-3）であり、その結果は(0:w-3, 0:1)∪(0:1, 2:h-3)と２つの領域の和集合となる。すなわち、図３０に示すように、第１のフィルタ要素セット２０１における非共通領域グループには、第１の非共通範囲２３１である「(0:w-3,0:1)」および第２の非共通範囲２３２である「(0:1,2:h-3)」の２つの領域が含まれている。なお、上記の式において「∪」は和集合を意味しており、Ａ∪Ｂと記載した場合には、ＡとＢとの少なくとも一方に含まれる領域、すなわち、ＡとＢとを合わせた領域を表す。
また、第９のフィルタ要素セット２０９における非共通領域グループは、（2:w-1,2:h-1）-（2:w-3,2:h-3）であり、その結果は(w-2:w-1, 2:h-3)∪(2:w-1, h-2:h-1)と２つの領域の和集合となる。すなわち、図３０に示すように、第９のフィルタ要素セット２０９における非共通領域グループには、第３の非共通範囲２３３である「(w-2:w-1,2:h-3)」および第４の非共通範囲２３４である「(2:w-1,h-2:h-1)」の２つの領域が含まれている。
【００９１】
［領域画像処理方式生成部１２５の動作］
図３１は、領域画像処理方式生成部１２５の動作の流れを示すフローチャートである。以下、図３１を参照しつつ、領域画像処理方式生成部１２５の動作の流れについて詳細に説明する。
【００９２】
まず、領域画像処理方式生成部１２５は、領域グループごとに同一のフィルタ値を持つフィルタ要素セットが含まれているか否かを確認する（ステップＳ４１１）。
【００９３】
領域画像処理方式生成部１２５は、同一なフィルタ値を持つフィルタ要素セットがあれば（ステップＳ４１１の「ＹＥＳ」）、乗算結果を記憶するとともに、一時変数を各出力位置に出力するループ処理を設定する（ステップＳ４１２）。
【００９４】
また、領域画像処理方式生成部１２５は、同一なフィルタ値を持つフィルタ要素セットが１つであれば（ステップＳ４１１の「ＮＯ」）、対応する出力位置に結果を出力するループ処理を設定する（ステップＳ４１３）。
【００９５】
図３２は、第４の実施形態に係る画像処理プログラム生成部１３０が出力するプログラムを示している。図３２に示すプログラムは、５重のループ処理が含まれている。図３２において、５重のループ処理は、上から順に、第１の非共通領域２３１、第２の非共通領域２３２、共通領域２２１、第３の非共通領域２３３、第４の非共通領域２３４のループ処理である。図３２に示すように、非共通領域２２１のループ処理は、一時的な配列「t」を含む形で展開されている。すなわち、本実施形態においては、各フィルタ要素セットのうち、共通のフィルタ値を持ち、かつ共通の参照範囲の演算を共有している。これにより、画像処理プログラム生成装置１００Ｃは、画像処理を高速化するプログラムを生成することができる。
【００９６】
ここで、ステップＳ４０２において、第１の領域グループとは異なる領域グループが存在する場合について説明する。図３３は、第１の領域グループとは異なる領域グループが存在する場合のフィルタ要素セットの一例を示す図である。具体的には、図３３は、第１のフィルタ要素セット２０１および第９のフィルタ要素セット２０９に加えて、図１９において第３のフィルタ要素セット２０３のフィルタ値が「２」である第３のフィルタ要素セット２０３Ａが共通値グループとして設定された場合を示している。また、第３のフィルタ要素セット２０３Ａにおける第３の参照範囲２１３Ａは「（2:w-1,0:h-3）」である。
【００９７】
図３３において、領域分解部１２４は、各フィルタ要素セットの共通の参照範囲である第１の領域グループは、（0:w-3,0:h-3）∩（2:w-1,2:h-1）∩（2:w-1,0:h-3）＝（2:w-3,2:h-3）と算出することができる。
【００９８】
図３４は、図３３に示した各フィルタ要素セットの参照範囲を視覚的に示す概念図である。具体的には、図３４（ａ）は第１の参照範囲２１１を示している。図３４（ｂ）は第９の参照範囲２１９を示している。図３４（ｃ）は第３の参照範囲２１３Ａを示している。図３４（ｄ）は、第１の参照範囲２１１と、第９の参照範囲２１９と、第３の参照範囲２１３Ａとの共通範囲である第１の共通範囲２２１Ａとを示している。この場合において、領域画像処理方式生成部１２５は、第１の共通範囲２２１Ａにおける演算を共有することができる。
【００９９】
次いで、領域分解部１２４は、第１の共通範囲２２１Ａとは異なる範囲での共通範囲を算出し、その共通範囲を第１の領域グループとは異なる領域グループとして設定する。そのために、領域分解部１２４は、まず各フィルタ要素セットの参照範囲から第１の共通範囲２２１Ａを除いた非共通範囲を算出する。
【０１００】
図３５は、各フィルタ要素セットにおける入力画像の参照範囲から、共通範囲を除いた領域を示す図である。
【０１０１】
領域分解部１２４は、第１の参照範囲２１１から第１の共通範囲２２１Ａを除いた非共通範囲を、（0:w-3,0:h-3）-（2:w-3,2:h-3）=(0:w-3,0:1)∪(0:1,2:h-3)と算出することができる。すなわち、第１のフィルタ要素セット２０１は、第１の共通範囲２２１Ａとの非共通範囲として、第１の非共通範囲２３１Ａである「(0:w-3,0:1)」および第２の非共通範囲２３２Ａである「(0:1,2:h-3)」を含む。以下では、第１の非共通範囲２３１Ａと、第２の非共通範囲２３２Ａとをまとめて、第１の非共通領域と呼ぶこともある。
【０１０２】
また、領域分解部１２４は、第９の参照範囲２１９から第１の共通範囲２２１Ａを除いた非共通範囲を、（2:w-1,2:h-1）-（2:w-3,2:h-3）=(w-2:w-1,2:h-3)∪(2:w-1,h-2:h-1)と算出することができる。すなわち、第１のフィルタ要素セット２０９は、第１の共通範囲２２１Ａとの非共通範囲として、第３の非共通範囲２３３Ａである「(w-2:w-1,2:h-3)」および第４の非共通範囲２３４Ａである「(2:w-1,h-2:h-1)」を含む。以下では、第３の非共通範囲２３３Ａと、第４の非共通範囲２３４Ａとをまとめて、第２の非共通領域と呼ぶこともある。
【０１０３】
さらに、領域分解部１２４は、第３の参照範囲２１３Ａから第１の共通範囲２２１Ａを除いた非共通範囲を、（2:w-1,0:h-3）-（2:w-3,2:h-3）=(2:w-1,0:1)∪(w-2:w-1,2:h-3)と算出することができる。すなわち、第３のフィルタ要素セット２０３Ａは、第１の共通範囲２２１Ａとの非共通範囲として、第５の非共通範囲２３５である「(2:w-1,0:1)」および第６の非共通範囲２３６である「(w-2:w-1,2:h-3)」を含む。以下では、第５の非共通範囲２３５と、第６の非共通範囲２３６とをまとめて、第３の非共通領域と呼ぶこともある。
【０１０４】
図３６は、図３５に示した各非共通範囲を視覚的に示す概念図である。具体的には、図３６（ａ）は第１の非共通範囲２３１Ａおよび第２の非共通範囲２３２Ａを示している。図３６（ｂ）は第３の非共通範囲２３３Ａおよび第４の非共通範囲２３４Ａを示している。図３６（ｃ）は第５の非共通範囲２３５および第６の非共通範囲２３６を示している。
【０１０５】
次に、領域分解部１２４は、第１の非共通領域と第２の非共通領域との共通範囲、第１の非共通領域と第３の非共通領域との共通範囲、および第２の非共通領域と第３の非共通領域との共通範囲を算出する。
【０１０６】
図３７は、第１の非共通領域と第２の非共通領域との共通範囲、第１の非共通領域と第３の非共通領域との共通範囲、および第２の非共通領域と第３の非共通領域との共通範囲を示す図である。
【０１０７】
領域分解部１２４は、第１の非共通領域と第２の非共通領域との共通範囲を｛(w-2:w-3,2:h-3)∪(2:w-1,h-2:h-3)｝∩｛(w-2:w-3,2:h-3)∪(2:w-1,h-2:h-3)｝と算出することができる。この場合、第１の非共通領域と第２の非共通領域との共通範囲は存在しない。
【０１０８】
また、領域分解部１２４は、第１の非共通領域と第３の非共通領域との共通範囲を｛(w-2:w-3,2:h-3)∪(2:w-1,h-2:h-3)｝∩｛(2:w-1,0:1)∪(w-2:w-1,2:h-3)｝と算出することができる。この場合、第１の非共通領域と第３の非共通領域との第２の共通範囲２４１は（2:w-3,0:1）となる。
【０１０９】
さらに、領域分解部１２４は、第２の非共通領域と第３の非共通領域との共通範囲を｛(w-2:w-3,2:h-3)∪(2:w-1,h-2:h-3)｝∩｛(2:w-1,0:1)∪(w-2:w-1,2:h-3)｝と算出することができる。この場合、第２の非共通領域と第３の非共通領域との第３の共通範囲２４２は（w-2:w-1,2:h-3）となる。
【０１１０】
上記の場合において、領域分解部１２４は、第２の共通範囲２４１および第３の共通範囲２４２を第２の領域グループとして設定する。
【０１１１】
図３８は、図３７に示した共通範囲を視覚的に示す概念図である。具体的には、図３８（ａ）は第１の非共通領域と第３の非共通領域との共通範囲である第２の共通範囲２４１を示している。図３８（ｂ）は第２の非共通範囲と第３の非共通範囲との共通範囲である第３の共通範囲２４２を示している。
【０１１２】
次いで、領域分解部１２４は、共通の参照範囲に含まれない領域を非共通領域グループとして設定する。具体的には、非共通領域グループは、各フィルタ要素セットの参照範囲から第１の共通範囲２２１Ａ、第２の共通範囲２４１、および第３の共通範囲２４２を除いた範囲となる。
【０１１３】
図３９は、各フィルタ要素セットにおける入力画像の参照範囲から、第１の領域グループ、第２の領域グループ、および第３の領域グループの範囲を除いた領域を示す図である。
【０１１４】
領域分解部１２４は、第１の参照範囲２１１から第１の共通範囲２２１Ａおよび第２の共通範囲２４１を除いた非共通範囲である第７の非共通範囲２５１を、（0:w-3,0:h-3）-（2:w-3,2:h-3）-（2:w-3,0:1）と算出することができる。この場合、第７の非共通範囲２５１は（0:1,0:h-3）となる。
【０１１５】
また、領域分解部１２４は、第９の参照範囲２１９から第１の共通範囲２２１Ａおよび第３の共通範囲２４２を除いた共通範囲である第８の非共通範囲２５２を、（2:w-1,2:h-1）-（2:w-3,2:h-3）-（w-2:w-1,2:h-3）と算出することができる。この場合、第８の非共通範囲２５２は（2:w-1,h-2:h-1）となる。
【０１１６】
そして、領域分解部１２４は、第３の参照範囲２１３Ａから第２の共通範囲２４１および第３の共通範囲２４２を除いた第９の非共通範囲２５３を、（2:w-1,0:h-3）-（2:w-3,0:1）-（w-2:w-1,2:h-3）と算出することができる。この場合、第９の非共通範囲２５３は（w-2:w-1,0:1）となる。
【０１１７】
すなわち、領域分解部１２４は、上記の場合、第７の非共通範囲２５１と、第８の非共通領域２５２と、第９の非共通領域２５３とを、非共通領域グループとして設定する。
【０１１８】
図４０は、図３９に示した非共通範囲を視覚的に示す概念図である。具体的には、図４０（ａ）は第４の非共通範囲２５１を示している。図４０（ｂ）は第５の非共通範囲２５２を示している。図４０（ｃ）は第６の非共通範囲２５３を示している。
【０１１９】
領域画像処理方式生成部１２５は、領域分解部１２４の算出結果に基づいて、第１の共通範囲２２１Ａ、第２の共通範囲２４１、および第３の共通範囲２４２における乗算結果を共有するループ処理演算を設定する。また、領域画像処理方式生成部１２５は、第７の非共通範囲２５１、第８の非共通範囲２５２、および第９の非共通範囲２５３のループ処理演算を設定する。すなわち、領域画像処理方式生成部１２５は、６重のループ処理を含むプログラムを生成する。
【０１２０】
すなわち、画像処理プログラム生成装置１００Ｃは、複数のフィルタ要素セットにおける参照範囲を第１の領域グループ、第２の領域グループ、およびに非共通領域グループに分類することで、共通フィルタ値であり、かつ共通の参照範囲の演算を共有することができる。
【０１２１】
［その他の実施形態］
画像処理プログラム生成装置は、ハードウエアによって実現してもよいし、ソフトウエアによって実現してもよい。また、画像処理プログラム生成装置は、ハードウエアとソフトウエアの組み合わせによって実現してもよい。
【０１２２】
図４１は、画像処理プログラム生成装置を構成する情報処理装置（コンピュータ）の一例である。
【０１２３】
図４１に示すように、情報処理装置３００は、制御部３１０と、記憶装置３２０と、ＲＯＭ（Read Only Memory）３３０と、ＲＡＭ（Random Access Memory）３４０と、通信インターフェース３５０と、を備えている。
【０１２４】
制御部３１０は、ＣＰＵ（Central Processing Unit）等の演算処理装置で構成することができる。制御部３１０は、記憶装置３２０またはＲＯＭ３３０が保持する制御部３１０が読み取り可能なプログラムをＲＡＭ３４０に展開して実行することで、画像処理プログラム生成装置の各種の機能を実現することができる。また、制御部３１０は、データ等を一時的に格納できる内部バッファを備えていてもよい。
【０１２５】
記憶装置３２０は、各種のデータを保持できる大容量の記憶媒体であって、光磁気ディスク、ＨＤＤ（Hard Disc Drive）、及びＳＳＤ（Solid State Drive）等の記憶媒体で実現することができる。また、記憶装置３２０は、情報処理装置３００が通信インターフェース３５０を介して通信ネットワークと接続されている場合には、通信ネットワーク上に存在するクラウドストレージであってもよい。また、記憶装置３２０は、制御部３１０が読み取り可能なプログラムを保持していてもよい。
【０１２６】
ＲＯＭ３３０は、記憶装置３２０と比べると小容量なフラッシュメモリ等で構成できる不揮発性の記憶装置である。また、ＲＯＭ３３０は、制御部３１０が読み取り可能なプログラムを保持していてもよい。なお、制御部３１０が読み取り可能なプログラムは、記憶装置３２０およびＲＯＭ３３０の少なくとも一方が保持していればよい。
【０１２７】
ＲＡＭ３４０は、ＤＲＡＭ（Dynamic Random Access Memory）及びＳＲＡＭ（Static Random Access Memory）等の半導体メモリであり、データ等を一時的に格納する内部バッファとして用いることができる。
【０１２８】
通信インターフェース３５０は、有線または無線を介して、情報処理装置４００と、通信ネットワークとを接続するインターフェースである。
【０１２９】
以上、本発明の実施の形態について説明したが、本発明は、上記した実施の形態に限られない。本発明は、実施の形態の一部又は全部を適宜組み合わせた形態、その形態に適宜変更を加えた形態をも含む。
【０１３０】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載され得るが以下には限られない。
【０１３１】
［付記１］
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受けるフィルタ処理情報受領部と、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する画像処理方式決定部と、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する画像処理プログラム生成部と、を備える、画像処理プログラム生成装置。
【０１３２】
［付記２］
前記画像処理方式決定部は、前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する出力画像処理方式生成部を有する、付記１に記載の画像処理プログラム生成装置。
【０１３３】
［付記３］
前記画像処理方式決定部は、前記フィルタ値と前記入力画像データとの前記積和演算の値が同一となる演算結果を共有する、付記１または２に記載の画像処理プログラム生成装置。
【０１３４】
［付記４］
前記画像処理方式決定部は、
前記フィルタ情報から、少なくとも前記フィルタ番号、前記フィルタ位置、および前記フィルタ値を含む複数のフィルタ要素セットに分解し、該フィルタ要素セットに対する出力位置を算出し、前記フィルタ要素セットに対する前記入力画像情報の参照範囲を算出するフィルタ要素セット分解部と、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットをグループ化し，グループ化された共通の値と、前記入力画像との乗算結果を記憶し、前記憶した前記乗算結果を利用する加算処理を生成する分解画像処理方式生成部と、を有する、付記１〜３のいずれか１つに記載の画像処理プログラム生成装置。
【０１３５】
［付記５］
前記画像処理方式決定部は、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットにおいて、共通の計算範囲である第１の共通範囲を算出し、該第１の共通範囲を第１の領域グループとして設定し、前記複数のフィルタ要素セットにおいて、前記第１の共通範囲と異なる第２の共通範囲を第２の領域グループとして設定し、前記１の共通範囲および前記２の共通範囲に含まれない範囲を非共通領域グループとして設定する領域分解部と、
前記第１の領域グループおよび前記第２の領域グループごとに、同一の前記フィルタ値が複数あった場合には、該フィルタ値と、前記入力画像との乗算結果を記憶し、該乗算結果を利用する加算処理を生成し、同一の前記フィルタ値がない場合には、対応する出力位置に出力する加算処理を生成する領域画像処理方式生成部と、を有する、付記１〜４のいずれか１つに記載の画像処理プログラム生成装置。
【０１３６】
［付記６］
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受け、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定し、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する、画像処理プログラム生成方法。
【０１３７】
［付記７］
前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する、付記６に記載の画像処理プログラム生成方法。
【０１３８】
［付記８］
前記フィルタ値と前記入力画像データとの前記積和演算の値が同一となる演算結果を共有する、付記６または７に記載の画像処理プログラム生成方法。
【０１３９】
［付記９］
前記フィルタ情報から、少なくとも前記フィルタ番号、前記フィルタ位置、および前記フィルタ値を含む複数のフィルタ要素セットに分解し、該フィルタ要素セットに対する出力位置を算出し、前記フィルタ要素セットに対する前記入力画像情報の参照範囲を算出し、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットをグループ化し，グループ化された共通の値と、前記入力画像との乗算結果を記憶し、前記憶した前記乗算結果を利用する加算処理を生成する、付記６〜８のいずれか１つに記載の画像処理プログラム生成方法。
【０１４０】
［付記１０］
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットにおいて、共通の計算範囲である第１の共通範囲を算出し、該第１の共通範囲を第１の領域グループとして設定し、前記複数のフィルタ要素セットにおいて、前記第１の共通範囲と異なる第２の共通範囲を第２の領域グループとして設定し、前記１の共通範囲および前記２の共通範囲に含まれない範囲を非共通領域グループとして設定し、
前記第１の領域グループおよび前記第２の領域グループごとに、同一の前記フィルタ値が複数あった場合には、該フィルタ値と、前記入力画像との乗算結果を記憶し、該乗算結果を利用する加算処理を生成し、同一の前記フィルタ値がない場合には、対応する出力位置に出力する加算処理を生成する、付記６〜９のいずれか１つに記載の画像処理プログラム生成方法。
【０１４１】
［付記１１］
コンピュータを、
入力画像に関する入力画像データを含む入力画像情報と、該入力画像に対して施す複数のフィルタ処理に関して、フィルタ数、フィルタ番号、フィルタサイズ、フィルタ位置、フィルタ値、オフセット情報、および出力領域を含む画像フィルタに関するフィルタ情報とを受ける手段と、
前記フィルタ情報のうち少なくとも前記フィルタ値が「-1」、「1」、および「0」のいずれであるかに応じて画像処理方式を決定する手段と、
前記画像処理方式に応じて、前記複数のフィルタ処理を実行する画像処理プログラムを生成する手段として機能させる、画像処理プログラム生成プログラム。
【０１４２】
［付記１２］
前記コンピュータを、
前記フィルタ値の値が「0」の積和演算を削除し、前記フィルタ値の値が「1」の乗算を削除し、前記フィルタ値の値が「-1」の乗算を削除しつつ対応する前記入力画像データにマイナス符号を付加する手段として更に機能させる、付記１１に記載の画像処理プログラム生成プログラム。
【０１４３】
［付記１３］
前記コンピュータを、
前記フィルタ値と前記入力画像データとの前記積和演算の値が同一となる演算結果を共有する手段として更に機能させる、付記１１または１２に記載の画像処理プログラム生成プログラム。
【０１４４】
［付記１４］
前記コンピュータを、
前記フィルタ情報から、少なくとも前記フィルタ番号、前記フィルタ位置、および前記フィルタ値を含む複数のフィルタ要素セットに分解し、該フィルタ要素セットに対する出力位置を算出し、前記フィルタ要素セットに対する前記入力画像情報の参照範囲を算出する手段と、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットをグループ化し，グループ化された共通の値と、前記入力画像との乗算結果を記憶し、前記憶した前記乗算結果を利用する加算処理を生成する手段と、して更に機能させる、付記１１〜１３のいずれか１つに記載の画像処理プログラム生成プログラム。
【０１４５】
［付記１５］
前記コンピュータを、
前記複数のフィルタ要素セットのうち、前記フィルタ値が「0」である前記フィルタ要素セットを除いた共通の前記フィルタ値を持つ前記フィルタ要素セットにおいて、共通の計算範囲である第１の共通範囲を算出し、該第１の共通範囲を第１の領域グループとして設定し、前記複数のフィルタ要素セットにおいて、前記第１の共通範囲と異なる第２の共通範囲を第２の領域グループとして設定し、前記１の共通範囲および前記２の共通範囲に含まれない範囲を非共通領域グループとして設定する手段と、
前記第１の領域グループおよび前記第２の領域グループごとに、同一の前記フィルタ値が複数あった場合には、該フィルタ値と、前記入力画像との乗算結果を記憶し、該乗算結果を利用する加算処理を生成し、同一の前記フィルタ値がない場合には、対応する出力位置に出力する加算処理を生成する手段と、して更に機能させる、付記１１〜１４のいずれか１つに記載の画像処理プログラム生成プログラム。
【符号の説明】
【０１４６】
１００，１００Ａ，１００Ｂ，１００Ｃ・・・画像処理プログラム生成装置
１１０・・・フィルタ処理情報受領部
１２０，１２０Ａ，１２０Ｂ，１２０Ｃ・・・画像処理方式決定部
１２１・・・出力画像処理方式生成部
１２２・・・フィルタ要素セット分解部
１２３・・・分解画像処理方式生成部
１２４・・・領域分解部
１２５・・・領域画像処理方式生成部
１３０・・・画像処理プログラム生成部
２０１・・・第１のフィルタ要素セット
２０２・・・第２のフィルタ要素セット
２０３・・・第３のフィルタ要素セット
２０４・・・第４のフィルタ要素セット
２０５・・・第５のフィルタ要素セット
２０６・・・第６のフィルタ要素セット
２０７・・・第７のフィルタ要素セット
２０８・・・第８のフィルタ要素セット
２０９・・・第９のフィルタ要素セット
２１１・・・第１の参照範囲
２１２・・・第２の参照範囲
２１３，２１３Ａ・・・第３の参照範囲
２１４・・・第４の参照範囲
２１５・・・第５の参照範囲
２１６・・・第６の参照範囲
２１７・・・第７の参照範囲
２１８・・・第８の参照範囲
２１９・・・第９の参照範囲
２２１，２２１Ａ・・・第１の共通範囲
２３１，２３１Ａ・・・第１の非共通範囲
２３２，２３２Ａ・・・第２の非共通範囲
２３３，２３３Ａ・・・第３の非共通範囲
２３４，２３４Ａ・・・第４の非共通範囲
２３５・・・第５の非共通範囲
２３６・・・第６の非共通範囲
２４１・・・第２の共通範囲
２４２・・・第３の共通範囲
２５１・・・第４の非共通範囲
３００・・・情報処理装置
３１０・・・制御部
３２０・・・記憶装置
３３０・・・ＲＯＭ
３４０・・・ＲＡＭ
３５０・・・通信インターフェース
【図１】
2018116594.tif 000003
【図２】
2018116594.tif 000004
【図３】
2018116594.tif 000005
【図４】
2018116594.tif 000006
【図５】
2018116594.tif 000007
【図６】
2018116594.tif 000008
【図７】
2018116594.tif 000009
【図８】
2018116594.tif 000010
【図９】
2018116594.tif 000011
【図１０】
2018116594.tif 000012
【図１１】
2018116594.tif 000013
【図１２】
2018116594.tif 000014
【図１３】
2018116594.tif 000015
【図１４】
2018116594.tif 000016
【図１５】
2018116594.tif 000017
【図１６】
2018116594.tif 000018
【図１７】
2018116594.tif 000019
【図１８】
2018116594.tif 000020
【図１９】
2018116594.tif 000021
【図２０】
2018116594.tif 000022
【図２１】
2018116594.tif 000023
【図２２】
2018116594.tif 000024
【図２３】
2018116594.tif 000025
【図２４】
2018116594.tif 000026
【図２５】
2018116594.tif 000027
【図２６】
2018116594.tif 000028
【図２７】
2018116594.tif 000029
【図２８】
2018116594.tif 000030
【図２９】
2018116594.tif 000031
【図３０】
2018116594.tif 000032
【図３１】
2018116594.tif 000033
【図３２】
2018116594.tif 000034
【図３３】
2018116594.tif 000035
【図３４】
2018116594.tif 000036
【図３５】
2018116594.tif 000037
【図３６】
2018116594.tif 000038
【図３７】
2018116594.tif 000039
【図３８】
2018116594.tif 000040
【図３９】
2018116594.tif 000041
【図４０】
2018116594.tif 000042
【図４１】
2018116594.tif 000043