(57)【要約】【課題】画像データに対し空間フィルタを移動させながら行うフィルタ処理に要する演算量を減らす。【解決手段】フィルタ演算部１０は、ｘ軸及びｙ軸方向に沿って画素が配置された画像データに対し、ｙ軸方向におけるフィルタ係数の配列が複数列で共通する空間フィルタを用いて、乗算器１４及び加算器１５により画素毎のフィルタ係数と階調値との乗算結果をｙ軸方向に合算する処理を含むフィルタ処理を行う。ロードストアユニット１３は、フィルタ係数の配列が共通する複数列の一の列について乗算結果の合算結果が算出されると、その合算結果をデータメモリ１１に格納し、その合算結果を格納したときの上記一の列の位置に上記複数列の他の列が一致するよう空間フィルタが移動させられた場合に、その合算結果を読み出す。フィルタ演算部１０では、上記他の列の演算処理に代えてデータメモリ１１から読み出した合算結果を用いてフィルタ処理を行う。【選択図】図１
2013200761.tif 000002
【特許請求の範囲】
【請求項１】
第１方向及び前記第１方向に交差する第２方向に沿って配置された複数画素の階調値を含む画像データに対し、前記第１方向におけるフィルタ係数の配列が複数列で共通する空間フィルタを用いて、前記画素毎の前記フィルタ係数と前記階調値との乗算結果を前記第１方向に合算する処理を含むフィルタ処理を行うフィルタ処理手段と、
前記複数列の一の列について前記乗算結果の合算結果が前記フィルタ処理手段により算出された場合に、当該合算結果をメモリに格納し、当該合算結果を格納したときの前記一の列の位置に前記複数列の他の列が一致するように前記空間フィルタが移動させられた場合に、当該合算結果を前記メモリから読み出すよう、前記メモリを制御するメモリ制御手段と
を備え、
前記フィルタ処理手段は、
前記メモリ制御手段により読み出された前記合算結果を、前記他の列の前記合算結果として、前記フィルタ処理を行う
ことを特徴とする画像処理装置。
【請求項２】
前記フィルタ処理手段は、
乗算処理を行う乗算器及び加算処理を行う加算器を有し、
前記乗算結果を算出するための前記乗算器による乗算処理と、前記乗算結果同士を加算する前記加算器による加算処理とを並行して行う一方、前記メモリから読み出された前記合算結果を用いた加算処理を前記加算器により行い、
前記メモリ制御手段は、
前記乗算器の乗算処理待ちのときに、前記メモリから前記合算結果を読み出す
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記空間フィルタは、
前記複数画素のうち前記フィルタ処理により階調値が変換される注目画素に一致させられるフィルタ窓を含む列から、前記第２方向及びその反対方向にそれぞれＬ画素（Ｌは自然数）だけ離れた列のフィルタ係数の配列が共通し、
前記メモリ制御手段は、
前記合算結果を格納してから前記空間フィルタが前記第２方向に２Ｌ画素だけ移動させられた場合に、当該合算結果を読み出す
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記空間フィルタは、
前記フィルタ窓を含む列を軸として対称となるようにフィルタ係数が割り当てられ、
前記フィルタ処理手段は、
前記フィルタ窓を含む列よりも前記第２方向の側にある列については前記合算する処理を行い、前記フィルタ窓を含む列よりも前記反対方向の側にある列については前記メモリから読み出された前記合算結果を用いて前記フィルタ処理を行う
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
コンピュータを、
第１方向及び前記第１方向に交差する第２方向に沿って配置された複数画素の階調値を含む画像データに対し、前記第１方向におけるフィルタ係数の配列が複数列で共通する空間フィルタを用いて、前記画素毎の前記フィルタ係数と前記階調値との乗算結果を前記第１方向に合算する処理を含むフィルタ処理を行うフィルタ処理手段と、
前記複数列の一の列について前記乗算結果の合算結果が前記フィルタ処理手段により算出された場合に、当該合算結果をメモリに格納し、当該合算結果を格納したときの前記一の列の位置に前記複数列の他の列が一致するように前記空間フィルタが移動させられた場合に、当該合算結果を前記メモリから読み出すよう、前記メモリを制御するメモリ制御手段
として機能させ、
前記フィルタ処理手段が、前記メモリ制御手段により読み出された前記合算結果を前記他の列の前記合算結果として前記フィルタ処理を行うためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【０００２】
特許文献１は、２以上の部分フィルタを組み合わせて画像フィルタを生成する画像処理装置において、画像フィルタによるフィルタ処理の演算量を少なくすることを開示している。具体的には、特許文献１に記載された画像処理装置は、画像フィルタＡにより選択対象画像を生成する演算過程で生成した部分フィルタＸの出力画像を格納する。そして、画像処理装置は、他の画像フィルタＢにより選択対象画像を生成する場合に、画像フィルタＡと同一の部分フィルタＸの演算を実行することに代えて、格納しておいた出力画像をフィルタＸの後段のフィルタ部品に供給する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２８２５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、画像データに対し空間フィルタを移動させながら行うフィルタ処理に要する演算量を減らすことである。
【課題を解決するための手段】
【０００５】
本発明の請求項１に係る画像処理装置は、第１方向及び前記第１方向に交差する第２方向に沿って配置された複数画素の階調値を含む画像データに対し、前記第１方向におけるフィルタ係数の配列が複数列で共通する空間フィルタを用いて、前記画素毎の前記フィルタ係数と前記階調値との乗算結果を前記第１方向に合算する処理を含むフィルタ処理を行うフィルタ処理手段と、前記複数列の一の列について前記乗算結果の合算結果が前記フィルタ処理手段により算出された場合に、当該合算結果をメモリに格納し、当該合算結果を格納したときの前記一の列の位置に前記複数列の他の列が一致するように前記空間フィルタが移動させられた場合に、当該合算結果を前記メモリから読み出すよう、前記メモリを制御するメモリ制御手段とを備え、前記フィルタ処理手段は、前記メモリ制御手段により読み出された前記合算結果を、前記他の列の前記合算結果として、前記フィルタ処理を行うことを特徴とする。
【０００６】
本発明の請求項２に係る画像処理装置は、請求項１に係る構成において、前記フィルタ処理手段は、乗算処理を行う乗算器及び加算処理を行う加算器を有し、前記乗算結果を算出するための前記乗算器による乗算処理と、前記乗算結果同士を加算する前記加算器による加算処理とを並行して行う一方、前記メモリから読み出された前記合算結果を用いた加算処理を前記加算器により行い、前記メモリ制御手段は、前記乗算器の乗算処理待ちのときに、前記メモリから前記合算結果を読み出すことを特徴とする。
【０００７】
本発明の請求項３に係る画像処理装置は、請求項１又は２に係る構成において、前記空間フィルタは、前記複数画素のうち前記フィルタ処理により階調値が変換される注目画素に一致させられるフィルタ窓を含む列から、前記第２方向及びその反対方向にそれぞれＬ画素（Ｌは自然数）だけ離れた列のフィルタ係数の配列が共通し、前記メモリ制御手段は、前記合算結果を格納してから前記空間フィルタが前記第２方向に２Ｌ画素だけ移動させられた場合に、当該合算結果を読み出すことを特徴とする。
【０００８】
本発明の請求項４に係る画像処理装置は、請求項３に係る構成において、前記空間フィルタは、前記フィルタ窓を含む列を軸として対称となるようにフィルタ係数が割り当てられ、前記フィルタ処理手段は、前記フィルタ窓を含む列よりも前記第２方向の側にある列については前記合算する処理を行い、前記フィルタ窓を含む列よりも前記反対方向の側にある列については前記メモリから読み出された前記合算結果を用いて前記フィルタ処理を行うことを特徴とする。
【０００９】
本発明の請求項５に係るプログラムは、コンピュータを、第１方向及び前記第１方向に交差する第２方向に沿って配置された複数画素の階調値を含む画像データに対し、前記第１方向におけるフィルタ係数の配列が複数列で共通する空間フィルタを用いて、前記画素毎の前記フィルタ係数と前記階調値との乗算結果を前記第１方向に合算する処理を含むフィルタ処理を行うフィルタ処理手段と、前記複数列の一の列について前記乗算結果の合算結果が前記フィルタ処理手段により算出された場合に、当該合算結果をメモリに格納し、当該合算結果を格納したときの前記一の列の位置に前記複数列の他の列が一致するように前記空間フィルタが移動させられた場合に、当該合算結果を前記メモリから読み出すよう、前記メモリを制御するメモリ制御手段として機能させ、前記フィルタ処理手段が、前記メモリ制御手段により読み出された前記合算結果を前記他の列の前記合算結果として前記フィルタ処理を行うためのプログラムである。
【発明の効果】
【００１０】
請求項１，５に係る発明によれば、画素毎のフィルタ係数と階調値との乗算結果を算出してからフィルタ処理を行う場合に比べて、画像データに対し空間フィルタを移動させながら行うフィルタ処理に要する演算量を減らすことができる。
請求項２に係る発明によれば、乗算器及び加算器を用いた演算によりフィルタ処理を行う場合に、メモリから読み出した合算結果を用いた加算処理を乗算処理待ちのタイミングで行わない場合に比べて、演算サイクル数を減らすことができる。
請求項３に係る発明によれば、メモリへの合算結果の格納及びメモリからの合算結果の読み出しを、空間フィルタの移動に応じて一定の規則に従って繰り返す構成にすることができる。
請求項４に係る発明によれば、注目画素に一致させられるフィルタ窓を含む列を軸として対称となるようにフィルタ係数が割り当てられた空間フィルタを用いた場合に、その列よりも第２方向の反対方向にある画素についての乗算処理を省くことができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置の全体構成を示すブロック図。
【図２】空間フィルタを説明する図。
【図３】画像処理装置が実行するフィルタ処理の手順を示すフローチャート。
【図４】注目画素が（３，３）、（３，４）のフィルタ処理を説明する図。
【図５】注目画素が（３，５）、（３，６）のフィルタ処理を説明する図。
【図６】注目画素が（３，７）、（３，８）のフィルタ処理を説明する図。
【図７】フィルタ処理におけるデータメモリを用いた処理を説明する図。
【図８】合算結果の格納及び読み出しタイミングの規則を説明する図。
【図９】変形例の空間フィルタを説明する図。
【図１０】従来のフィルタ処理で行われる演算処理を説明する図。
【発明を実施するための形態】
【００１２】
本発明の実施の形態を図面を参照しつつ説明する
図１は、画像処理装置１の全体構成を示すブロック図である。
図１に示すように、画像処理装置１は、フィルタ演算部１０と制御部２０とを備える。フィルタ演算部１０は、画素を二次元配置した画像を示しこれら複数画素の階調値を含む画像データに対し、Ｍ×Ｎ（Ｍ，Ｎは２以上の整数）でフィルタ窓を二次元配置した空間フィルタを用いてフィルタ処理（つまり、空間フィルタ処理）を行うための演算処理を行う。フィルタ演算部１０は、より詳細には、データメモリ１１と、レジスタ群１２と、ロードストアユニット１３と、乗算器１４と、加算器１５とを備える。データメモリ１１とレジスタ群１２とは、ストアバス１６、アドレスバス１７及びロードバス１８の各バスを介して接続されている。
【００１３】
データメモリ１１は、本発明のメモリの一例であり、データを記憶する不揮発性メモリ等の記憶手段である。データメモリ１１は、例えば、フィルタ処理に用いられる空間フィルタ（図２に示す空間フィルタＷ）を規定するデータや、フィルタ演算部１０で行われるフィルタ処理前の画像データ及びそのフィルタ処理後の画像データ、フィルタ処理の実行中に算出される演算結果等を記憶する。
【００１４】
レジスタ群１２は、データメモリ１１、ロードストアユニット１３、乗算器１４及び加算器１５の各要素から転送されたデータを記憶する複数のレジスタを有する。
ロードストアユニット１３は、本発明のメモリ制御手段の一例であり、データメモリ１１やレジスタ群１２を制御する。具体的には、ロードストアユニット１３は、ロードストア命令を実行して、データメモリ１１とレジスタ群１２とでデータのやりとりを制御する。ロードストアユニット１３は、例えばレジスタ群１２に記憶されたデータをデータメモリ１１に格納（ストア）する場合に、レジスタ群１２に記憶されたデータをストアバス１６経由でデータメモリ１１に転送させる。その際、ロードストアユニット１３は、データメモリ１１に格納するデータの格納アドレスをレジスタ群１２及びアドレスバス１７経由でデータメモリ１１に転送させて、データメモリ１１におけるデータの格納アドレスを指定する。また、ロードストアユニット１３は、データメモリ１１に記憶されたデータをレジスタ群１２に読み出す（ロードする）場合に、データメモリ１１に記憶されたデータをロードバス１８経由でレジスタ群１２に転送させる。その際、ロードストアユニット１３は、データの読出アドレスをレジスタ群１２及びアドレスバス１７経由でデータメモリ１１に転送させて、読出アドレスにより指定したデータをデータメモリ１１から読み出す。
【００１５】
乗算器１４は、レジスタ群１２から転送されたデータを用いて乗算処理を行う乗算回路である。乗算器１４は、例えば、空間フィルタの一のフィルタ窓に割り当てられたフィルタ係数と、そのフィルタ窓に対応した画素の階調値とを乗算する乗算処理を行い、その乗算結果をレジスタ群１２に出力する。
加算器１５は、レジスタ群１２から転送されたデータを用いて加算処理を行う加算回路である。加算器１５は、例えば、乗算器１４により算出された乗算結果同士を加算する加算処理を行う。
フィルタ演算部１０では、１つの演算サイクルで乗算器１４による乗算処理と加算器１５による加算処理とが並列実行（すなわち、乗算処理と加算処理とが並行して行われる）。本発明のフィルタ処理手段は、乗算器１４及び加算器１５の協働により実現される。
【００１６】
制御部２０は、ＣＰＵ（Central Processing Unit）を含む演算装置や内部メモリを備え、画像処理装置１を制御する。制御部２０は、例えば、ロードストア命令を発行してロードストアユニット１３に供給して、ロードストアユニット１３にロードストア命令を実行させる。その他制御部２０は、フィルタ処理の対象となる画像データに対して空間フィルタを設定するなど、フィルタ演算部１０にフィルタ処理を行わせるための制御を行う。
【００１７】
図２は、本実施形態の空間フィルタ処理に用いられる空間フィルタＷを説明する図である。図２において、最小の正方形が１つのフィルタ窓に対応し、この正方形内のパラメータ（ｋ０からｋ５のいずれか）がフィルタ係数を意味する。フィルタ係数を意味する符号の末尾の数値が同じであるフィルタ係数は同一の値を示し、フィルタ係数を意味する符号の末尾の数値が異なるフィルタ係数は異なる値を示す。
空間フィルタＷは、Ｍ＝５，Ｎ＝５のフィルタ窓サイズであり、計２５個のフィルタ窓を有する空間フィルタである。ここでＭ個の画素が配列される方向をｘ軸方向（本発明の第２方向の一例。）とし、Ｎ個の画素が配列される方向をｙ軸方向（本発明の第１方向の一例。）とする。よって、フィルタ処理の対象となる画像データが示す画像は、ｘ軸方向及びｘ軸方向に交差するｙ軸方向に沿ってに沿って配置された複数画素を有することになる。これら複数画素のうちフィルタ処理により階調値が変換される画素が注目画素Ｐａである。本実施形態では、空間フィルタＷの中心に位置するフィルタ窓ｗ０が注目画素Ｐａに一致させられる。
【００１８】
また、空間フィルタＷは、ｙ軸方向におけるフィルタ係数の配列が複数列で共通している。例えば、注目画素Ｐａに一致させられるフィルタ窓ｗ０を含む列から、ｘ軸方向及びその反対方向にそれぞれ１画素だけ離れた２列のフィルタ係数の配列が共通している。具体的には、これら２列では、ｙ軸方向にフィルタ係数がｋ４→ｋ１→ｋ２→ｋ１→ｋ４と配列され、列全体で画素の位置とフィルタ係数との組み合わせが一致している。また、フィルタ窓ｗ０を含む列から、ｘ軸方向及びその反対方向にそれぞれ２画素だけ離れた２列のフィルタ係数の配列が共通している。具体的には、これら２列では、ｙ軸方向にフィルタ係数がｋ３→ｋ４→ｋ５→ｋ４→ｋ３と配列され、列全体で画素の位置とフィルタ係数との組み合わせが一致している。
画像処理装置１は、空間フィルタＷを用いてフィルタ処理を行い、フィルタ処理を行うたびに、ｘ軸方向（図２の矢印方向）に空間フィルタＷを１画素分だけ移動させる。また、空間フィルタＷを用いたフィルタ処理が画像処理装置１で実現されるように、ストアバス１６及びロードバス１８、データメモリ１１のバス幅は、少なくとも、画像データの１画素分のビット幅と、フィルタ係数のビット幅と、ｙ軸方向におけるフィルタ窓数（ここではＮ＝５）とを加算した結果に応じたバス幅である。
【００１９】
ところで、空間フィルタＷを用いたフィルタ処理は、一般に、例えば図１０に示す手順で行われる。例えば図１０（ａ）に示す手法では、画素の階調値とその画素に一致させられたフィルタ窓のフィルタ係数とを乗算する乗算処理が画素毎に行われて、全画素の乗算結果を合算するための加算処理が行われた後、その合算結果をフィルタ窓数で除した値が注目画素Ｐａの変換後の階調値として算出されていた。この場合、乗算処理の回数が「２５」であり、加算処理の回数が「２５」である。また図１０（ｂ）に示す手法では、フィルタ係数が共通する複数の画素の階調値をすべて加算してから、その加算結果にフィルタ係数を乗算する乗算処理が行われる。そしてすべての乗算結果を合算するための加算処理が行われた後、その合算結果をフィルタ窓数で除した値が注目画素Ｐａの変換後の階調値として算出されていた。この手法の場合、乗算処理の回数が「６」であり、加算処理の回数が「２４」である。
次に、画像処理装置１が空間フィルタＷを用いてフィルタ処理を行うときの動作について説明する。
【００２０】
図３は、画像処理装置１が実行するフィルタ処理の手順を示すフローチャートである。図４から図６は、空間フィルタＷがｘ軸方向に１画素ずつ移動させられた場合の、各フィルタ処理を説明する図である。図４から図６には、ｘ軸方向に１２画素、且つ、ｙ軸方向に８画素の画像領域を示しているが、以下の説明では、この画像領域内で割り当てた座標（ｘ，ｙ）を用いて各画素の位置を説明する。例えば、左側から３番目で上側から４番目の画素の位置を（ｘ，ｙ）＝（３，４）と表す。図７は、フィルタ処理におけるデータメモリ１１を用いた処理を説明する図である。
【００２１】
画像処理装置１の制御部２０は、フィルタ処理の対象となる画像データに対し、空間フィルタＷを設定する（ステップＳ１）。ここでは、図４（ａ）に示すように、制御部２０が、フィルタ処理の開始画素としてフィルタ窓ｗ０を（ｘ，ｙ）＝（３，３）である注目画素Ｐａに一致させるよう、空間フィルタＷを設定したものとする。続いて、注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理について詳細に説明する。
【００２２】
（Ｉ）注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理
ステップＳ１の処理で空間フィルタＷを設定した後、制御部２０は、データメモリ１１に格納された合算結果を用いるか否かを判断する（ステップＳ２）。データメモリ１１に格納された合算結果は、後で説明するが、階調値とフィルタ係数との画素毎の乗算結果をｙ軸方向に一列（Ｎ画素）分合算した結果のことである。ここでは、制御部２０はステップＳ２の処理で「ＮＯ」と判断し、ステップＳ４の処理に進む。
【００２３】
次に、制御部２０は、乗算器１４による乗算処理と加算器１５による加算処理とを、１演算サイクル分だけ並列実行させる（ステップＳ４）。ステップＳ４の処理では、制御部２０は、ロードストア命令をロードストアユニット１３に実行させることにより、ｘ座標が大きい画素から順に、ｙ軸方向に沿って順次各画素の階調値とフィルタ係数との乗算処理を乗算器１４に行わせることとなる。また、制御部２０は、この乗算処理による乗算結果を全画素について合算するための加算処理を加算器１５に行わせる。よって、このステップＳ４の１番目の演算サイクルでは、ロードストアユニット１３は、（ｘ，ｙ）＝（５，１）の階調値とフィルタ係数ｋ３とをそれぞれデータメモリ１１から読み出して、レジスタ群１２経由で乗算器１４にそれぞれ転送し、乗算処理を行わせる。乗算器１４から出力された乗算結果はレジスタ群１２に転送されて、レジスタ群１２に記憶させられる。一方、１番目の演算サイクルでは、未だ加算処理の対象となるデータがないので、制御部２０は加算器１５に加算処理を行わせない。
【００２４】
次に、制御部２０は、フィルタ係数が共通する複数列のうちの最初の列の合算結果を算出したか否かを判断する（ステップＳ５）。ここでは制御部２０は、未だ一列も乗算処理が完了していないから、ステップＳ５の処理で「ＮＯ」と判断し、ステップＳ７の処理に進む。次に、制御部２０は、空間フィルタ処理に必要な演算処理が終了したか否かを判断する（ステップＳ７）。未だ空間フィルタ処理に必要な演算処理が残っているので、制御部２０は、ステップＳ７の処理で「ＮＯ」と判断し、ステップＳ２の処理に戻る。
【００２５】
制御部２０は、このステップＳ２の処理でも「ＮＯ」と判断し、ステップＳ４の処理に進む。制御部２０は、フィルタ係数が共通する複数列のうちの最初の列の合算結果を算出するまでは、ステップＳ４→ステップＳ５；ＮＯ→ステップＳ７；ＮＯ→ステップＳ２；ＮＯ→ステップＳ４・・・の処理ステップを繰り返し実行することになる。この処理ステップの繰り返しにおいて、制御部２０は、ステップＳ４において各演算サイクルの処理を以下のように行わせるようフィルタ演算部１０を制御する。
２番目の演算サイクルでは、ロードストアユニット１３は、（ｘ，ｙ）＝（５，２）の階調値とフィルタ係数ｋ４とをそれぞれデータメモリ１１から読み出して、レジスタ群１２経由で乗算器１４にそれぞれ転送し、乗算処理を行わせる。乗算器１４から出力された乗算結果はレジスタ群１２に転送されて、１番目の演算サイクルの乗算結果とは別に、レジスタ群１２に記憶させられる。一方、２番目の演算サイクルでも、未だ加算処理の対象となるデータがないので、制御部２０は加算器１５に加算処理を行わせない。
【００２６】
３番目の演算サイクルでは、ロードストアユニット１３は、（ｘ，ｙ）＝（５，３）の階調値とフィルタ係数ｋ５とをそれぞれデータメモリ１１から読み出して、レジスタ群１２経由で乗算器１４にそれぞれ転送し、乗算処理を行わせる。乗算器１４から出力された乗算結果は、１，２番目の演算サイクルの乗算結果とは別に、レジスタ群１２に記憶させられる。またこの３番目の演算サイクルでは、制御部２０は、１番目の演算サイクルで算出された（ｘ，ｙ）＝（５，１）についての乗算結果と、２番目の演算サイクルで算出された（ｘ，ｙ）＝（５，２）についての乗算結果とを加算する加算処理を行わせるべく、これらの乗算結果をレジスタ群１２から加算器１５に転送させて、加算器１５により加算処理を行う。加算器１５から出力された（ｘ，ｙ）＝（５，２）までの乗算結果の合算結果は、３番目の演算サイクルの乗算結果とは別に、レジスタ群１２に記憶させられる。
【００２７】
４番目の演算サイクルでは、ロードストアユニット１３は、（ｘ，ｙ）＝（５，４）の階調値とフィルタ係数ｋ４とをそれぞれデータメモリ１１から読み出して、レジスタ群１２経由で乗算器１４にそれぞれ転送し、乗算処理を行わせる。そして、乗算器１４から出力された乗算結果は、３番目の演算サイクルの乗算結果とは別に、レジスタ群１２に記憶させられる。また、制御部２０は、３番目の演算サイクルにより算出された（ｘ，ｙ）＝（５，３）の画素の乗算結果と、３番目の演算サイクルにより算出された（ｘ，ｙ）＝（５，２）までの画素の乗算結果の合算結果とを加算する加算処理を行わせる。そして、加算器１５から出力された（ｘ，ｙ）＝（５，３）までの乗算結果の合算結果は、４番目の演算サイクルの乗算結果とは別に、レジスタ群１２に記憶させられる。
【００２８】
以降においても、制御部２０は、処理対象の画素の階調値とフィルタ係数とを乗算する乗算器１４による乗算処理と、その１つ前の処理対象の画素についての乗算結果と、２つ前までの乗算結果の合算結果とを加算する加算器１５による加算処理とを並列実行させる。
ところで、制御部２０が、ステップＳ４の処理で（ｘ，ｙ）＝（４，１）の階調値とフィルタ係数ｋ４との乗算処理を行わせるときには、（ｘ，ｙ）＝（５，５）の画素の乗算結果と、（ｘ，ｙ）＝（５，４）までの乗算結果の合算結果とを加算する加算処理を加算器１５に行わせる。そして、加算器１５から出力された（ｘ，ｙ）＝（５，５）までの乗算結果の合算結果がレジスタ群１２に記憶させられる。これにより、制御部２０は、フィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（５，３）を算出したことになる。そして図４を見て分かるように、ｘ＝５の列のフィルタ係数の配列は、ｘ＝１の列のフィルタ係数の配列と共通している。よって制御部２０は、次のステップＳ５の処理では「ＹＥＳ」と判断することになる。
なお、注目画素のｘ座標をｘ＝ｉとした場合の、ｘ＝ｘの列についてのフィルタ係数と階調値との乗算結果の１列分の合算結果を、以下では「Ａｕ（ｘ，ｉ）」と表す。
【００２９】
ステップＳ５の処理で「ＹＥＳ」と判断すると、制御部２０は、ｘ＝５の列についての合算結果Ａｕ（５，３）をデータメモリ１１に格納するためのロードストア命令をロードストアユニット１３に実行させ、ロードストアユニット１３により合算結果Ａｕ（５，３）をデータメモリ１１に格納する（ステップＳ６）。ここでは図７に示すように、ロードストアユニット１３は、格納アドレスａｄ［０］を指定して、合算結果Ａｕ（５，３）をデータメモリ１１に格納する。
なお、アドレスａｄ［ｋ］のｋの値が異なれば、それらはデータメモリ１１の異なる記憶領域のアドレスを意味し、アドレスａｄ［ｋ］のｋの値が一致すれば、それらはデータメモリ１１の同一の記憶領域のアドレスを意味するものとする。
【００３０】
次に制御部２０は、ｘ＝４の列についてもステップＳ４で各演算サイクルの演算処理を行い、ｘ＝５の列とは別に、フィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（４，３）を算出し、ステップＳ５；ＹＥＳ→ステップＳ６と進む。そして、制御部２０は、ｘ＝４の列についての合算結果Ａｕ（４，３）をデータメモリ１１に格納するためのロードストア命令をロードストアユニット１３に実行させ、ロードストアユニット１３によりこの合算結果Ａｕ（４，３）をデータメモリ１１に格納する。ここでは図７に示すように、ロードストアユニット１３は、合算結果Ａｕ（５，３）の格納アドレスと重複しないように、格納アドレスａｄ［１］を指定して、合算結果Ａｕ（４，３）をデータメモリ１１に格納する。
【００３１】
次に、制御部２０は、ｘ＝３の列についてステップＳ４の処理で各演算サイクルの演算処理を行わせるが、（ｘ，ｙ）＝（３，１）の階調値とフィルタ係数ｋ５との乗算処理を行わせる演算サイクルでは、合算結果Ａｕ（５，３）とＡｕ（４，３）とを加算する加算処理を加算器１５により行う。次の演算サイクルでは、制御部２０は、合算結果Ａｕ（５，３）とＡｕ（４，３）との加算結果と、（ｘ，ｙ）＝（３，１）の階調値とフィルタ係数ｋ５との乗算処理とを加算器１５により行うとともに、（ｘ，ｙ）＝（３，２）の階調値とフィルタ係数ｋ２との乗算処理を乗算器１４により行う。以降、制御部２０は、処理対象の画素の階調値とフィルタ係数とを乗算する乗算器１４による乗算処理と、その１つ前の処理対象の画素についての乗算結果と、２つ前までの乗算結果の合算結果とを加算する加算器１５による加算処理とを並列実行させる。ただし、制御部２０は、ｘ＝３の列のフィルタ係数と階調値との乗算結果の１列分の合算結果については、フィルタ係数の配列が一致する他の列がないので（つまり、ステップＳ５で「ＮＯ」となる）、これをデータメモリ１１に格納させない。また、制御部２０は、ｘ＝１，２の例フィルタ係数と階調値との乗算結果の１列分の合算結果については、フィルタ係数の配列が一致する他の列があるもののこれら複数列の最初の列ではないので（つまり、ステップＳ５で「ＮＯ」となる）、これもデータメモリ１１に格納させない。すなわち、ロードストアユニット１３は、注目画素Ｐａよりも空間フィルタＷの移動方向側にある列の合算結果のみをデータメモリ１１に格納することになる。
【００３２】
制御部２０は、Ｍ×Ｎ画素についての乗算結果の合算結果を算出すると、これをフィルタ窓数Ｍ×Ｎで除した結果（つまり、１／（Ｍ×Ｎ）を乗算した結果）を乗算器１４により算出し、これを（ｘ，ｙ）＝（３，３）の注目画素Ｐａの変換後の階調値としてデータメモリ１１に格納するためのロードストア命令を、ロードストアユニット１３に実行させる。これによりロードストアユニット１３が、注目画素Ｐａの変換後の階調値をデータメモリ１１に格納する。次に、制御部２０は、ステップＳ７の処理でフィルタ処理に必要な演算処理が終了したと判断し（ステップＳ７；ＹＥＳ）、ステップＳ８の処理に進む。次に制御部２０は、フィルタ処理を継続するか否かを判断する（ステップＳ８）。ここでは、制御部２０は、未処理の画素があるので、ステップＳ８の処理で「ＮＯ」と判断し、ステップＳ１の処理に戻る。
注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理の説明は以上である。次に画像処理装置１の制御部２０は、ステップＳ１の処理において、図４（ｂ）に示すように、フィルタ窓ｗ０を（ｘ，ｙ）＝（４，３）である注目画素Ｐａに一致させるように、空間フィルタＷを設定する。
【００３３】
（II）注目画素Ｐａが（ｘ，ｙ）＝（４，３）のフィルタ処理
注目画素Ｐａが（ｘ，ｙ）＝（４，３）のフィルタ処理は、基本的には、注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理と同じ手順で行われるので、以下では相違点を主に説明する。
制御部２０は、ステップＳ４の処理でｘ＝６の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（６，４）を算出すると、ステップＳ６の処理でこの合算結果Ａｕ（６，４）をデータメモリ１１に格納させる。図７に示すように、ロードストアユニット１３は、他の合算結果の格納アドレスと重複しないように、格納アドレスａｄ［２］を指定して、合算結果Ａｕ（６，４）をデータメモリ１１に格納する。また、制御部２０は、ｘ＝５の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（５，４）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［３］を指定して合算結果Ａｕ（５，４）をデータメモリ１１に格納する。
注目画素Ｐａが（ｘ，ｙ）＝（４，３）のフィルタ処理の説明は以上である。次に画像処理装置１の制御部２０は、ステップＳ１の処理において、図５（ａ）に示すように、フィルタ窓ｗ０を（ｘ，ｙ）＝（５，３）である注目画素Ｐａに一致させるように、空間フィルタＷを設定する。
【００３４】
（III）注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理
以下注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理を説明するが、（Ｉ），（II）の項で説明したフィルタ処理と共通する部分の説明を省略し、相違点を主に説明する。
このフィルタ処理においても、制御部２０は、ステップＳ４の処理でｘ＝７の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（７，５）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［４］を指定してこの合算結果Ａｕ（７，５）データメモリ１１に格納する。また、制御部２０は、ｘ＝６の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（６，５）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［５］を指定して合算結果Ａｕ（６，５）をデータメモリ１１に格納する。
【００３５】
また、注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理では、制御部２０はステップＳ４の処理で、ｘ＝４の列についてフィルタ係数と階調値との乗算処理及び乗算結果同士の加算処理を行わない。図５（ａ）及び図４（ａ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理におけるｘ＝４のｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理で算出されたｘ＝４の合算結果Ａｕ（４，３）と一致する。その理由は、空間フィルタＷでは、フィルタ窓ｗ０を含む列を軸とした対象となるようにフィルタ係数が割り当てられているので、ｘ＝４の列のｙ軸方向におけるフィルタ係数の配列が、注目画素Ｐａが（ｘ，ｙ）＝（３，３）の場合と注目画素Ｐａが（ｘ，ｙ）＝（５，３）の場合とで一致するからである。
【００３６】
そこで、制御部２０は、ｘ＝４の列の乗算結果の合算結果については、ロードストア命令をロードストアユニット１３に実行させて、合算結果Ａｕ（４，３）をデータメモリ１１から読み出してこれをフィルタ処理に用いる。具体的には制御部２０は、以下のようにしてフィルタ処理にデータメモリ１１から読み出した合算結果を用いる。制御部２０は、
ｘ＝７，６，５，３の列について各画素の階調値とフィルタ係数との乗算結果を合算する処理を行った後、ステップＳ２の処理でフィルタ処理にデータメモリに格納された合算結果を用いると判断する（ステップＳ２；ＹＥＳ）。そして、制御部２０は、ロードストア命令を発行してロードストアユニット１３に供給し、データメモリ１１から合算結果Ａｕ（４，３）を読み出させる（ステップＳ３）。ここでは、制御部２０は、ロードストア命令をロードストアユニット１３に実行させ、読出アドレスａｄ［０］を指定して合算結果Ａｕ（４，３）をデータメモリ１１から読み出させレジスタ群１２に転送させる。そして、制御部２０は、ステップＳ４の処理において、ｘ＝４の列に対応する合算結果Ａｕ（４，３）を、他の画素についての合算結果に加算する加算処理を加算器１５により行う。そして、制御部２０は、ステップＳ５；ＮＯ→ステップＳ７；ＹＥＳと進む。
注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理の説明は以上である。次に画像処理装置１の制御部２０は、ステップＳ１の処理において、図５（ｂ）に示すように、フィルタ窓ｗ０を（ｘ，ｙ）＝（６，３）である注目画素Ｐａに一致させるように、空間フィルタＷを設定する。
【００３７】
（IV）注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理
注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理は、基本的には、注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理と同じ手順で行われるので、以下では相違点を主に説明する。
このフィルタ処理においても、制御部２０は、ｘ＝８についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（８，６）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［６］を指定して合算結果Ａｕ（８，６）をデータメモリ１１に格納する。また、制御部２０は、ｘ＝７についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（７，６）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［０］を指定してこの合算結果Ａｕ（７，６）をデータメモリ１１に格納する。合算結果Ａｕ（４，３）は、既にフィルタ処理に用いた後であり、今後使用されることがないので、ここではアドレスａｄ［０］を指定して、上書きにより合算結果Ａｕ（７，６）が格納される。
【００３８】
また、注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理では、制御部２０は、ステップＳ４の処理で、ｘ＝５の列について、フィルタ係数と階調値との乗算処理及び乗算結果同士の加算処理を行わない。図５（ｂ）及び図４（ｂ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理におけるｘ＝５のｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（４，３）のフィルタ処理で算出されたｘ＝５の合算結果Ａｕ（５，４）と一致するからである。そこで制御部２０は、ｘ＝８，７，６，４の列について各画素の階調値とフィルタ係数との乗算結果を合算する処理を行った後、ステップＳ３の処理で読出アドレスａｄ［２］を指定して合算結果Ａｕ（５，４）をデータメモリ１１から読み出させてレジスタ群１２に転送させる。そして、制御部２０は、ステップＳ４の処理で、ｘ＝５の列に対応する合算結果Ａｕ（５，４）を、他の画素についての合算結果に加算する加算処理を加算器１５により行う。
注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理の説明は以上である。次に画像処理装置１の制御部２０は、ステップＳ１の処理において、図６（ａ）に示すように、フィルタ窓ｗ０を（ｘ，ｙ）＝（７，３）である注目画素Ｐａに一致させるように、空間フィルタＷを設定する。
【００３９】
（Ｖ）注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理
以下注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理を説明するが、（ｘ以下、（III），（IV）の項で説明したフィルタ処理と共通する部分の説明を省略し、相違点を主に説明する。
このフィルタ処理においても、制御部２０は、ｘ＝９の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（９，７）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［７］を指定して合算結果Ａｕ（９，７）をデータメモリ１１に格納する。また、制御部２０は、ｘ＝８の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（８，７）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［２］を指定して合算結果Ａｕ（８，７）をデータメモリ１１に格納する。合算結果Ａｕ（５，４）は、既にフィルタ処理に用いた後であり、今後使用されることがないので、ここではアドレスａｄ［２］を指定して、上書きにより合算結果Ａｕ（８，７）が格納される。
【００４０】
また、注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理では、制御部２０は、ステップＳ４の処理で、ｘ＝５，６の２列について、フィルタ係数と階調値との乗算処理及び乗算結果同士の加算処理を行わない。図６（ａ）及び図５（ａ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理における，ｘ＝６の列におけるｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（５，３）のフィルタ処理におけるｘ＝６の列における合算結果Ａｕ（６，５）と一致するためである。また、図６（ａ）及び図４（ａ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理における，ｘ＝５の列のｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（３，３）のフィルタ処理におけるｘ＝５の列における合算結果Ａｕ（５，３）と一致するためである。
【００４１】
そこで、制御部２０は、ｘ＝５，６の２列の乗算結果の合算結果については、ロードストア命令をロードストアユニット１３に実行させて、合算結果Ａｕ（６，５）及びＡｕ（５，３）をデータメモリ１１から読み出してこれをフィルタ処理に用いる。具体的には制御部２０は、以下のようにしてフィルタ処理にデータメモリ１１から読み出した合算結果を用いる。
（Ｉ）の項で説明したとおり、１番目及び２番目の演算サイクルでは、乗算器１４により乗算処理が行われるものの加算器１５により加算処理が行われない、乗算処理待ちの状態にある。この乗算処理待ちの状態では、制御部２０が次の加算処理に用いられる乗算結果が算出されるのを待っていることになる。そこで１番目又は２番目の演算サイクルにおいて、制御部２０は、ステップＳ２の処理で「ＹＥＳ」と判断し、ステップＳ３の処理でロードストア命令をロードストアユニット１３に実行させ、読出アドレスａｄ［１］，ａｄ［４］を指定して合算結果Ａｕ（６，５）及びＡｕ（５，３）をデータメモリ１１からそれぞれ読み出させてレジスタ群１２に転送させる。そして、制御部２０は、ステップＳ４の処理で、１番目又は２番目の演算サイクルでは、合算結果Ａｕ（６，５）及びＡｕ（５，３）を加算する加算処理を加算器１５により行う。そして、制御部２０は、ｘ＝９，８，７に列について各画素の階調値とフィルタ係数との乗算結果を合算する処理を行った後、合算結果Ａｕ（６，５）及びＡｕ（５，３）の加算結果を、他の画素についての合算結果に加算する加算処理を加算器１５により行う。ここにおいて、１番目又は２番目の演算サイクルの演算サイクルを利用して、制御部２０は、合算結果Ａｕ（６，５）及びＡｕ（５，３）を加算するから、この加算処理により演算サイクル数が増えることはない。
注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理の説明は以上である。次に画像処理装置１の制御部２０は、ステップＳ１の処理において、図６（ｂ）に示すように、フィルタ窓ｗ０を（ｘ，ｙ）＝（８，３）である注目画素Ｐａに一致させるように、空間フィルタＷを設定する。
【００４２】
（VI）注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理
注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理は、基本的には、注目画素Ｐａが（ｘ，ｙ）＝（７，３）のフィルタ処理と同じ手順で行われるので、以下では相違点を主に説明する。
このフィルタ処理においても、制御部２０は、ｘ＝１０の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（１０，８）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［１］を指定して合算結果Ａｕ（１０，８）をデータメモリ１１に格納する。また、制御部２０は、ｘ＝９の列についてフィルタ係数と階調値との乗算結果の１列分の合算結果Ａｕ（９，８）を算出すると、ステップＳ６の処理では、ロードストアユニット１３により格納アドレスａｄ［４］を指定して合算結果Ａｕ（９，８）をデータメモリ１１に格納する。格納アドレスａｄ［１］，ａｄ［４］ともに既に不要になった合算結果の格納アドレスである。
【００４３】
また、注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理では、制御部２０は、ステップＳ４の処理で、ｘ＝６，７の２列について、フィルタ係数と階調値との乗算処理及び乗算結果同士の加算処理を行わない。図６（ｂ）及び図５（ｂ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理における、ｘ＝７の列のｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（６，３）のフィルタ処理におけるｘ＝７における合算結果Ａｕ（７，６）と一致するためである。図６（ｂ）及び図４（ｂ）を見て分かるように、注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理における、ｘ＝６の列のｙ軸方向における合算結果（斜線で図示）は、注目画素Ｐａが（ｘ，ｙ）＝（４，３）のフィルタ処理におけるｘ＝６における合算結果Ａｕ（６，４）と一致するためである。
【００４４】
そこで、制御部２０は、ｘ＝６，７の２列の乗算結果の合算結果については、ステップＳ３の処理で、ロードストア命令をロードストアユニット１３に実行させて、合算結果Ａｕ（７，６）及びＡｕ（６，４）をデータメモリ１１から読み出してこれをフィルタ処理に用いる。具体的には、制御部２０は、ステップＳ４の処理の１番目又は２番目の演算サイクルにおいて、ロードストア命令をロードストアユニット１３に実行させ、読出アドレスａｄ［０］，ａｄ［３］を指定して合算結果Ａｕ（７，６）及びＡｕ（６，４）をデータメモリ１１からそれぞれ読み出させてレジスタ群１２に転送させる。そして、制御部２０は、合算結果Ａｕ（７，６）及びＡｕ（６，４）を加算する加算処理を加算器１５により行う。そして、制御部２０は、ｘ＝１０，９，８の列について各画素の階調値とフィルタ係数との乗算結果を合算する処理を行った後、ステップＳ４の処理で、合算結果Ａｕ（７，６）及びＡｕ（６，４）の加算結果を、他の画素についての合算結果に加算する加算処理を加算器１５により行う。
注目画素Ｐａが（ｘ，ｙ）＝（８，３）のフィルタ処理の説明は以上である。
【００４５】
以降においても画像処理装置１の制御部２０は、ステップＳ１の処理においてｘ軸方向に空間フィルタＷを移動させるように空間フィルタＷを設定し、上記手順により順次フィルタ処理を行う。制御部２０は、ｘ軸方向に対して図中右側の画像端に接する画素にフィルタ窓ｗ０を一致させてフィルタ処理を行うと、ｙ軸方向に１行分だけフィルタ窓ｗ０を移動させて、図中左側の画像端からフィルタ処理を行い、フィルタ処理を行うたびにｘ軸方向に空間フィルタを移動させる処理を行う。
ただし、制御部２０は、ｘ軸方向に対して図中右側の画像端から２画素分の画素については、合算結果をデータメモリ１１に格納しないようにしてもよい。例えば、図４から図６に示す画像領域が画像の全体領域であると仮定すると、ｘ＝１１，１２の列についてｙ軸方向における１列分の合算結果を格納しないということである。その理由は、図中右側の画像端からの２画素分の画素については、合算結果をデータメモリ１１に格納しても、フィルタ窓ｗ０がこの画像端までしか移動させられないので、この合算結果を再利用できる場合がないからである。また、図中左側の画像端に接する画素にフィルタ窓ｗ０が一致させられるときには、フィルタ窓ｗ０よりもｘ軸方向の反対方向のフィルタ窓が用いられないので、データメモリ１１に格納した合算結果がフィルタ処理に用いられることはない。
【００４６】
制御部２０は、画像データが示す画像に含まれる全画素を注目画素Ｐａとしてフィルタ処理を行うと、ステップＳ８の処理でフィルタ処理を継続しないと判断し（ステップＳ８；ＮＯ）、図８の処理を終了する。
【００４７】
以上のように画像処理装置１は、一度算出した１列分の乗算結果の合算結果をデータメモリ１１に格納にしておき、以降のフィルタ処理でこれを再利用することで、１列分又は２列分の合算結果の算出を行わないようにする。具体的には、図１０（ａ）に示す手法では、乗算処理回数が「２５」及び加算処理回数が「２５」であったが、フィルタ演算部１０のように乗算器及び加算器を１つずつ備えた構成を用いれば、演算サイクルは少なくとも「２６」となる。また、図１０（ｂ）に示す手法でも、乗算処理回数が「６」及び加算処理回数が「２４」であったが、フィルタ演算部１０のように乗算器及び加算器を１つずつ備えた構成を用いれば、演算サイクルは少なくとも「２４」となる。一方本実施形態では、乗算処理回数が「１５」であり、加算処理回数が「１５」＋読み出した合算結果を用いた加算処理の回数が「２」の「１７」となり、演算サイクル数は「１７」で済むので、図１０（ｂ）の場合と比較しても演算サイクル数が２９％削減されたことになる。
【００４８】
また、画像処理装置１によれば、データメモリ１１への合算結果の格納及びデータメモリ１１からの合算結果の読み出しを、空間フィルタＷの移動に応じた一定の規則に従って繰り返せばよい。具体的には、図８に示すように、Ｌ＝０となる列からｘ軸方向及びその反対方向にそれぞれＬ画素（Ｌは自然数）だけ離れた列のフィルタ係数の配列が共通している場合、画像処理装置１は合算結果を格納してから空間フィルタＷがｘ軸方向に２Ｌ画素分移動させられた場合に、その合算結果を読み出せばよい。従って、空間フィルタＷにおいてＭ＝６の場合であれば、合算結果を格納してから空間フィルタＷがｘ軸方向に２×３＝６画素分移動させられた場合に、その合算結果を読み出せばよい。このように、空間フィルタｘ軸方向におけるフィルタ窓数Ｍがいくつであっても、制御部２０は、データメモリ１１への合算結果の格納及びデータメモリ１１からの合算結果の読み出しを、フィルタ窓数Ｍに応じて一定の規則に従って繰り返せばよい。
【００４９】
［変形例］
本発明は、上述した実施形態と異なる形態で実施してもよい。また、以下に示す変形例は、各々を組み合わせてもよい。
（変形例１）
上述した実施形態では、Ｍ×Ｎ＝５×５の正方形の空間フィルタＷを用いた場合を説明したが、Ｍ，Ｎが互いに異なっていてもよい。また、空間フィルタＷは、注目画素を含む列を軸として線対称にフィルタ係数が割り当てられていなくてもよい。例えば図９（ａ）に示すように、フィルタ窓ｗ０を含む列からｘ軸方向に１画素異なる列のフィルタ係数の配列と、その反対方向に２画素異なる列のフィルタ係数の配列が共通していれば、合算結果Ａを格納してから３画素移動後にこの合算結果Ａを読み出してフィルタ処理に用いればよい。また、フィルタ窓ｗ０を含む列の合算結果を再利用してもよく、図９（ａ）の例であれば、フィルタ窓ｗ０を含む列の合算結果Ｂを格納してから１画素移動後にこの合算結果Ｂを読み出してフィルタ処理に用いればよい。
このように、空間フィルタが、フィルタ係数の配列が共通する列を少なくとも２列含んでいれば、本発明に適用してよい。また、フィルタ係数の配列が共通する列をＱ（Ｑは３以上）列以上含んでいれば、一の列について格納した合算結果を残りの（Ｑ−１）列のすべてで再利用してもよい。
【００５０】
（変形例２）
上述した実施形態では、空間フィルタＷはｙ軸方向においてフィルタ係数の配列が共通する列を複数有し、画像処理装置１はこの空間フィルタＷをｘ軸方向に沿って移動させながらフィルタ処理を行っていた。これに代えて、図１０（ｂ）に示すように、空間フィルタＷがｘ軸方向においてフィルタ係数の配列が共通する列を複数有し、画像処理装置１はこの空間フィルタＷをｙ軸方向に沿って移動させながらフィルタ処理を行ってもよい。この場合、画像処理装置１は、画素毎のフィルタ係数と階調値との乗算結果をｘ軸方向に合算する処理を含むフィルタ処理を行って、一の列について合算結果をデータメモリ１１に格納する。そして、画像処理装置１は、合算結果を格納したときの上記一の列の位置にフィルタ係数の配列が共通する他の列が一致するように空間フィルタＷが移動させられた場合に、その合算結果をメモリから読み出してフィルタ処理に用いてもよい（図１０（ｂ）の合算結果Ｃ，Ｄ参照）。要するに、画像処理装置１は合算結果を格納したときの一の列の位置に、フィルタ係数の配列が共通する他の列が一致するように空間フィルタＷが移動させられた場合に、格納した合算結果を読み出してフィルタ処理に用いればよい。
【００５１】
（変形例３）
上述した実施形態のフィルタ演算部１０のハードウェア構成は一例である。例えば、フィルタ演算部１０は乗算器１４及び加算器１５をそれぞれ複数有していてもよい。この場合、１つの演算サイクルで実行される演算処理が増えるので、上述した実施形態に比べて更に演算サイクル数が減少する。また、フィルタ演算部１０は、データメモリ１１に代えてレジスタを有していてもよい。
要するに、フィルタ演算部１０は、合算結果を格納したときの一の列の位置に、フィルタ係数の配列が共通する他の列が一致するように空間フィルタＷが移動させられた場合に、格納した合算結果を再利用する構成であれば、別のハードウェア構成で実現されてもよい。
【００５２】
（変形例４）
また、フィルタ演算部１０が実現する要素は、ハードウェアに限らずソフトウェアによって実現されてもよいし、又は、ハードウェアとソフトウェアの協働によって実現されうる。
また、本発明は、画像処理装置のほか、コンピュータにフィルタ演算部１０に相当する機能を実現させるためのプログラムとして実施してもよい。かかるプログラムは、光ディスク等の記録媒体に記録した形態で提供されたり、インターネット等のネットワークを介して、コンピュータにダウンロードさせ、これをインストールして利用させるなどの形態で提供されたりしてもよい。
【符号の説明】
【００５３】
１…画像処理装置、１０…フィルタ演算部、１１…データメモリ、１２…レジスタ群、１３…ロードストアユニット、１４…乗算器、１５…加算器、１６…ストアバス、１７…アドレスバス、１８…ロードバス
【図１】
2013200761.tif 000003
【図２】
2013200761.tif 000004
【図３】
2013200761.tif 000005
【図４】
2013200761.tif 000006
【図５】
2013200761.tif 000007
【図６】
2013200761.tif 000008
【図７】
2013200761.tif 000009
【図８】
2013200761.tif 000010
【図９】
2013200761.tif 000011
【図１０】
2013200761.tif 000012