(57)【要約】【課題】任意のタイミングで相応のフィルタリング処理結果を得ることを可能とする。【解決手段】処理対象画素を含む演算対象領域内の個々の画素毎に設定された係数値からフィルタリング処理の係数値群を個々の係数値毎に分解すると共に、分解した複数の係数値を対応する画素と処理対象画素との距離の近い順に配列し(20)、配列の先頭から係数値を取り出し、処理対象画素及び取り出した係数値に対応する画素の画素値を画像メモリ領域から読み出し、係数値を対応する画素の画素値に乗じた結果を処理対象画素の画素値に加え、結果をワーク領域に格納することを、全画素を処理対象として行い(28〜36)、ワーク領域の画像データを画像メモリ領域に上書きして格納する(38)ことを、複数の係数値を配列順に１つずつ取り出しながら繰り返す。また、処理途中で画像出力が指示されると、画像メモリ領域に格納されている画像データを出力する。【選択図】図２
2009054002.tif 000002
【特許請求の範囲】
【請求項１】
画像データを記憶するための記憶手段と、
画像データに適用すべきフィルタリング処理の演算パラメータを、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解する分解手段と、
前記記憶手段に記憶されている画像データに対し、前記分解手段による演算パラメータの分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すフィルタリング処理手段と、
を含む画像処理装置。
【請求項２】
前記分解手段は、前記分解によって得られた前記複数の演算パラメータを、元の演算パラメータに対する誤差の小さい順に配列し、
前記フィルタリング処理手段は、前記複数の演算パラメータを前記分解手段によって配列された順序で用いて前記フィルタリング処理を繰り返すことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記フィルタリング処理の演算パラメータは、処理対象画素を含む演算対象領域内の個々の画素の値に各々乗じて前記処理対象画素の値に加算するために、前記演算対象領域内の個々の画素毎に各々設定された係数値から成り、
前記分解手段は、前記演算パラメータとしての係数値群を前記個々の画素毎の複数の係数値に分解し、
前記フィルタリング処理手段は、前記複数の係数値のうちの何れか１つの係数値を用い、当該係数値を対応する画素の値に乗じた結果を前記処理対象画素の値に加算することを、前記記憶手段に記憶されている画像データの全画素を処理対象として各々行うフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の係数値を順に用いて繰り返すことを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記分解手段は、前記演算パラメータとしての係数値群を前記複数の係数値に分解すると共に、当該複数の係数値を、対応する画素と処理対象画素との距離の近い順に配列し、
前記フィルタリング処理手段は、前記フィルタリング処理に用いる係数値を、前記分解手段によって配列された順に選択しながら前記フィルタリング処理を繰り返すことを特徴とする請求項３記載の画像処理装置。
【請求項５】
前記フィルタリング処理の演算パラメータは、処理対象画素を含む演算対象領域内の個々の画素の値に各々乗じて前記処理対象画素の値に加算するために、前記演算対象領域内の個々の画素毎に各々設定された係数値から成り、
前記分解手段は、前記演算パラメータとしての係数値群を、前記演算対象領域内における係数値設定範囲が互いに異なりかつ前記係数値設定範囲内の各画素に同一の係数値が各々設定されて成る複数の平均値フィルタの各々を表す複数の演算パラメータに分解し、
前記フィルタリング処理手段は、前記複数の演算パラメータのうちの何れか１つの演算パラメータを用い、当該演算パラメータが表す平均値フィルタにおける係数値設定範囲内の個々の画素の値の合計値に前記平均値フィルタにおける係数値を乗じた結果を前記処理対象画素の値に加算することを、前記画像データの全画素を処理対象として各々行うフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すことを特徴とする請求項１記載の画像処理装置。
【請求項６】
前記分解手段は、前記演算パラメータとしての係数値群を、前記複数の平均値フィルタの各々を表す複数の演算パラメータに分解すると共に、当該複数の演算パラメータを、前記係数値群との係数値の合計値の差が小さい順に配列し、
前記フィルタリング処理手段は、前記フィルタリング処理に用いる演算パラメータを、前記分解手段によって配列された順に選択しながら前記フィルタリング処理を繰り返すことを特徴とする請求項５記載の画像処理装置。
【請求項７】
前記フィルタリング処理手段は、前記フィルタリング処理に際して前記処理対象画素及び前記係数値設定範囲を１画素ずつ移動させると共に、１画素前の処理対象画素に対応する係数値設定範囲内の個々の画素の値の合計値に対し、処理対象画素の移動に伴って係数値設定範囲から逸脱する画素の値を減ずると共に、処理対象画素の移動に伴って新たに係数値設定範囲に入った画素の値を加えることで、現在の処理対象画素に対応する係数値設定範囲内の個々の画素の値の合計値を求めることを特徴とする請求項５記載の画像処理装置。
【請求項８】
フィルタリング処理の結果の出力が指示された場合に、結果出力が指示された時点で前記記憶手段に記憶されている画像データを出力する出力手段を更に備えたことを特徴とする請求項１〜請求項７の何れか１項記載の記載の画像処理装置。
【請求項９】
画像データを記憶するための記憶手段と接続されたコンピュータを、
画像データに適用すべきフィルタリング処理の演算パラメータを、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解する分解手段、
及び、前記記憶手段に記憶されている画像データに対し、前記分解手段による演算パラメータの分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すフィルタリング処理手段
として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及びプログラムに係り、特に、フィルタリング処理を行う画像処理装置、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。
【背景技術】
【０００２】
画像中の特定周波数成分の除去や抽出、強調等を実現するフィルタリング処理は、各種の画像処理で多用されているが、このフィルタリング処理は畳み込み演算によって実現されるので、処理対象の画像のサイズやフィルタ係数値が設定された演算対象領域のサイズに応じて演算量が大きく変動し、この演算量の変動に応じて処理時間も大きく変動する。このため、フィルタリング処理の実行にあたっては、処理時間が所望の時間内に収まるように、処理対象の画像のサイズに基づいて事前にフィルタの設計（演算対象領域のサイズや演算対象領域内の各画素に対する係数値等の設定）が行われる。
【０００３】
上記に関連して特許文献１には、フィルタリング処理の処理時間低減等を目的として、画像を短冊状に分割して分割画像単位で２次元フィルタ処理するフィルタ処理部と、処理する画像の画素データを記憶する画像メモリと、フィルタ処理部へ複数ライン分の分割画像の画素データを並列に供給するためのラインメモリと、フィルタ処理部で処理中の中間データを格納してフィルタ処理部に供給するレジスタとを有し、レジスタに格納した中間データの内、次に処理を行う分割画像との境界近辺の中間データを後で再利用するために画像メモリへ一旦格納し、後でレジスタに読み出す技術が開示されている。
【特許文献１】特開２００２−３０４６２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、フィルタリング処理における処理時間は、処理対象の画像のサイズが大きくなるに従って増大すると共に、フィルタリング処理の処理精度ともトレードオフの関係があり、処理対象の画像のサイズが大きく、かつフィルタリング処理の処理精度に対する要求レベルも高いために演算対象領域のサイズも大きくせざるを得ない等の場合、特許文献１に記載の技術等を適用したとしても処理時間は大幅に増大する。そしてこの場合、ＣＰＵ等の演算リソースに継続的に高負荷が加わるので、エラーが発生してフィルタリング処理が途中で停止してしまう確率も高くなるが、フィルタリング処理が途中で停止してしまった場合、処理対象の画像は一部の領域についてはフィルタリング処理が完了し、残りの領域についてはフィルタリング処理が行われていない状態となっているので、本来の処理結果に近似する結果すら得ることができず、フィルタリング処理を最初からやり直さざるを得ないという問題がある。
【０００５】
また、従来のフィルタリング処理では、処理途中における処理対象の画像の状態が、一部の領域についてはフィルタリング処理が完了し、残りの領域についてはフィルタリング処理が行われていない状態になっていることは、上記のようにエラーが発生してフィルタリング処理が途中で停止してしまった場合にのみ問題となるものではなく、例えば処理対象の画像として大サイズの画像が入力された等の理由で、フィルタリング処理が許容時間を越えて行われている等の場合に、フィルタリング処理を停止させて本来の処理結果に近似する結果を得たいときにも、これを実現できないという問題を引き起こす。更に、フィルタリング処理の途中で本来の処理結果に近似する結果を得てプレビュー画像を表示することも不可能である。
【０００６】
本発明は上記事実を考慮して成されたもので、任意のタイミングで相応のフィルタリング処理結果を得ることが可能な画像処理装置及び画像処理プログラムを得ることが目的である。
【課題を解決するための手段】
【０００７】
上記目的を達成するために請求項１記載の発明に係る画像処理装置は、画像データを記憶するための記憶手段と、画像データに適用すべきフィルタリング処理の演算パラメータを、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解する分解手段と、前記記憶手段に記憶されている画像データに対し、前記分解手段による演算パラメータの分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すフィルタリング処理手段と、を含んで構成されている。
【０００８】
請求項１記載の発明では、画像データに適用すべきフィルタリング処理の演算パラメータが、分解手段により、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解される。そしてフィルタリング処理手段は、記憶手段に記憶されている画像データに対し、分解手段による演算パラメータの分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを記憶手段に記憶させることを、複数の演算パラメータを順に用いて繰り返す。
【０００９】
上記のように、請求項１記載の発明では、フィルタリング処理の演算パラメータ（元の演算パラメータ）が複数の演算パラメータに分解され、個々の演算パラメータを順に用いてフィルタリング処理を複数回行うと共に、各回のフィルタリング処理によって得られた画像データを記憶手段に記憶させているので、記憶手段に記憶されている画像データが表す画像は、各回のフィルタリング処理が行われる毎に本来の処理結果を表す画像（分解前の演算パラメータを用いてフィルタリング処理を行うことで得られる画像）に近づいていき、複数回のフィルタリング処理が完了した段階で本来の処理結果を表す画像に一致することになる。従って、請求項１記載の発明によれば、複数回のフィルタリング処理が完了する前であっても、その時点で記憶手段に記憶されている画像データを読み出すことで、相応のフィルタリング処理結果を得ることができるので、任意のタイミングで相応のフィルタリング処理結果を得ることが可能となる。
【００１０】
なお、請求項１記載の発明において、分解手段による演算パラメータの分解によって得られる複数の演算パラメータは、元の演算パラメータに対する誤差が均一でないことを考慮すると、請求項２に記載したように、分解手段は、分解によって得られた複数の演算パラメータを、元の演算パラメータに対する誤差の小さい順に配列し、フィルタリング処理手段は、複数の演算パラメータを分解手段によって配列された順序で用いてフィルタリング処理を繰り返すように構成することが好ましい。これにより、フィルタリング処理の処理回数が少ない段階で記憶手段に記憶されている画像データが表す画像を、本来の処理結果を表す画像（分解前の演算パラメータを用いてフィルタリング処理を行うことで得られる画像）により近づけることができ、複数回のフィルタリング処理が完了する前の任意のタイミングで得られるフィルタリング処理結果の精度を向上させることができる。
【００１１】
また、請求項１記載の発明において、フィルタリング処理の演算パラメータとしては、例えば処理対象画素を含む演算対象領域内の個々の画素の値に各々乗じて処理対象画素の値に加算するために、演算対象領域内の個々の画素毎に各々設定された係数値を適用することができる。この場合、例えば請求項３に記載したように、分解手段は、演算パラメータとしての係数値群を個々の画素毎の複数の係数値に分解し、フィルタリング処理手段は、複数の係数値のうちの何れか１つの係数値を用い、当該係数値を対応する画素の値に乗じた結果を処理対象画素の値に加算することを、記憶手段に記憶されている画像データの全画素を処理対象として各々行うフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを記憶手段に記憶させることを、複数の係数値を順に用いて繰り返すように、分解手段及びフィルタリング処理手段を構成することができる。
【００１２】
請求項３記載の発明では、フィルタリング処理の演算パラメータとしての係数値群を、個々の画素毎の複数の係数値に分解しているので、フィルタリング処理の演算パラメータ（係数値群）を簡単な処理によって複数の演算パラメータ（係数値）に分解することができる。また、フィルタリング処理手段が１回のフィルタリング処理で個々の処理対象画素に行う処理も、何れか１つの係数値を当該係数値を対応する画素の値に乗じた結果を処理対象画素の値に加算するのみであるので、処理が簡単になる。
【００１３】
従って、請求項３記載の発明によれば、後述する請求項５記載の発明のように、フィルタリング処理の演算パラメータとしての係数値群を、複数の平均値フィルタの各々を表す複数の演算パラメータに分解し、１回のフィルタリング処理で、何れか１つの演算パラメータが表す平均値フィルタにおける係数値設定範囲内の個々の画素の値の合計値に前記平均値フィルタにおける係数値を乗じた結果を処理対象画素の値に加算する処理を、個々の処理対象画素に行う等の態様と比較してアルゴリズムが簡単になり、コンピュータにプログラムを実行させることで本発明に係る分解手段やフィルタリング処理手段を実現させる態様における前記プログラムの開発も容易になる。
【００１４】
また、請求項３記載の発明において、例えば請求項４に記載したように、分解手段は、演算パラメータとしての係数値群を複数の係数値に分解すると共に、当該複数の係数値を、対応する画素と処理対象画素との距離の近い順に配列し、フィルタリング処理手段は、フィルタリング処理に用いる係数値を、分解手段によって配列された順に選択しながらフィルタリング処理を繰り返すように、分解手段及びフィルタリング処理手段を構成することが好ましい。フィルタリング処理の演算パラメータとしての係数値群を、個々の画素毎の複数の係数値に分解する態様において、複数の係数値を、上記のように、対応する画素と処理対象画素との距離の近い順に配列することで、複数の係数値が元の演算パラメータ（係数値群）に対する誤差の小さい順に配列されることになる。
【００１５】
従って、フィルタリング処理手段がこの配列の順に係数値を選択しながらフィルタリング処理を繰り返すことで、フィルタリング処理の処理回数が少ない段階で記憶手段に記憶されている画像データが表す画像が、本来の処理結果を表す画像（分解前の演算パラメータを用いてフィルタリング処理を行うことで得られる画像）により近づくことになり、複数回のフィルタリング処理が完了する前の任意のタイミングで得られるフィルタリング処理結果の精度を向上させることができる。
【００１６】
また、請求項１記載の発明において、フィルタリング処理の演算パラメータとしては、前述のように、例えば処理対象画素を含む演算対象領域内の個々の画素の値に各々乗じて処理対象画素の値に加算するために、演算対象領域内の個々の画素毎に各々設定された係数値を適用することができるが、この場合、例えば請求項５に記載したように、分解手段は、演算パラメータとしての係数値群を、演算対象領域内における係数値設定範囲が互いに異なりかつ係数値設定範囲内の各画素に同一の係数値が各々設定されて成る複数の平均値フィルタの各々を表す複数の演算パラメータに分解し、フィルタリング処理手段は、複数の演算パラメータのうちの何れか１つの演算パラメータを用い、当該演算パラメータが表す平均値フィルタにおける係数値設定範囲内の個々の画素の値の合計値に平均値フィルタにおける係数値を乗じた結果を処理対象画素の値に加算することを、画像データの全画素を処理対象として各々行うフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを記憶手段に記憶させることを、複数の演算パラメータを順に用いて繰り返すように、分解手段及びフィルタリング処理手段を構成してもよい。
【００１７】
請求項５記載の発明では、フィルタリング処理の演算パラメータとしての係数値群を、演算対象領域内における係数値設定範囲が互いに異なりかつ係数値設定範囲内の各画素に同一の係数値が各々設定されて成る複数の平均値フィルタの各々を表す複数の演算パラメータに分解し、フィルタリング処理として、複数の演算パラメータのうちの何れか１つの演算パラメータを用い、当該演算パラメータが表す平均値フィルタにおける係数値設定範囲内の個々の画素の値の合計値に平均値フィルタにおける係数値を乗じた結果を処理対象画素の値に加算することを、画像データの全画素を処理対象として各々行っているので、請求項３記載の発明のように、フィルタリング処理の演算パラメータとしての係数値群を演算対象領域内の個々の画素毎の複数の係数値に分解する場合と比較して、処理は複雑になるものの、複数の演算パラメータのうちの少なくとも一部の演算パラメータを、元の演算パラメータ（係数値群）に対する誤差がより小さくなるように定めることができ、それに伴ってフィルタリング処理の繰り返し回数を少なくすることができる。
【００１８】
また、請求項５記載の発明において、例えば請求項６に記載したように、分解手段は、演算パラメータとしての係数値群を、複数の平均値フィルタの各々を表す複数の演算パラメータに分解すると共に、当該複数の演算パラメータを、前記係数値群との係数値の合計値の差が小さい順に配列し、フィルタリング処理手段は、フィルタリング処理に用いる演算パラメータを、分解手段によって配列された順に選択しながらフィルタリング処理を繰り返すように、分解手段及びフィルタリング処理手段を構成することが好ましい。フィルタリング処理の演算パラメータとしての係数値群を、複数の平均値フィルタの各々を表す複数の演算パラメータに分解する態様において、複数の演算パラメータを、上記のように、フィルタリング処理の演算パラメータとしての係数値群との係数値の合計値の差が小さい順に配列することで、複数の演算パラメータが元の演算パラメータ（係数値群）に対する誤差の小さい順に配列されることになる。
【００１９】
従って、フィルタリング処理手段がこの配列の順に演算パラメータを選択しながらフィルタリング処理を繰り返すことで、フィルタリング処理の処理回数が少ない段階で記憶手段に記憶されている画像データが表す画像が、本来の処理結果を表す画像（分解前の演算パラメータを用いてフィルタリング処理を行うことで得られる画像）により近づくことになり、複数回のフィルタリング処理が完了する前の任意のタイミングで得られるフィルタリング処理結果の精度を向上させることができる。また、請求項５記載の発明によれば、複数の演算パラメータのうちの少なくとも一部の演算パラメータを、元の演算パラメータ（係数値群）に対する誤差がより小さくなるように定めることができるので、上記のように、複数の演算パラメータを誤差の小さい順に配列して用いることで、請求項４記載の発明と比較しても、フィルタリング処理の処理回数が少ない段階で記憶手段に記憶されている画像データが表す画像を、本来の処理結果を表す画像により近づけることができる。
【００２０】
また、請求項５記載の発明において、フィルタリング処理手段は、例えば請求項７に記載したように、フィルタリング処理に際して処理対象画素及び係数値設定範囲を１画素ずつ移動させると共に、１画素前の処理対象画素に対応する係数値設定範囲内の個々の画素の値の合計値に対し、処理対象画素の移動に伴って係数値設定範囲から逸脱する画素の値を減ずると共に、処理対象画素の移動に伴って新たに係数値設定範囲に入った画素の値を加えることで、現在の処理対象画素に対応する係数値設定範囲内の個々の画素の値の合計値を求めるように構成することが好ましい。これにより、係数設定範囲内の個々の画素の値の合計値を演算する処理が簡単になり、フィルタリング処理手段によるフィルタリング処理に要する時間を短縮することができる。
【００２１】
また、請求項１〜請求項７の何れかに記載の発明において、例えば請求項８に記載したように、フィルタリング処理の結果の出力が指示された場合に、結果出力が指示された時点で記憶手段に記憶されている画像データを出力する出力手段を設けることができる。
【００２２】
請求項９記載の発明に係る画像処理プログラムは、画像データを記憶するための記憶手段と接続されたコンピュータを、画像データに適用すべきフィルタリング処理の演算パラメータを、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解する分解手段、及び、前記記憶手段に記憶されている画像データに対し、前記分解手段による演算パラメータの分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを前記記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すフィルタリング処理手段として機能させる。
【００２３】
請求項９記載の発明に係る画像処理プログラムは、上記の記憶手段と接続されたコンピュータを、上記の分解手段及びフィルタリング処理手段として機能させるためのプログラムであるので、コンピュータが請求項９記載の発明に係る画像処理プログラムを実行することで、コンピュータが請求項１に記載の画像処理装置として機能することになり、請求項１記載の発明と同様に、任意のタイミングで相応のフィルタリング処理結果を得ることが可能となる。
【発明の効果】
【００２４】
以上説明したように本発明は、画像データに適用すべきフィルタリング処理の演算パラメータを、各々を足し合わせた結果が元の演算パラメータに一致する複数の演算パラメータに分解し、記憶手段に記憶されている画像データに対し、分解によって得られた複数の演算パラメータのうちの１つを用いてフィルタリング処理を行い、当該フィルタリング処理によって得られた画像データを記憶手段に記憶させることを、前記複数の演算パラメータを順に用いて繰り返すようにしたので、任意のタイミングで相応のフィルタリング処理結果を得ることが可能となる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。
【００２６】
〔第１実施形態〕
図１には本発明に係る画像処理装置として機能することが可能なコンピュータ１０が示されている。なお、コンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ（ＰＣ）等の独立したコンピュータであってもよく、更にＰＤＡ（Personal Dｉgｉtal Assｉstant）や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００２７】
コンピュータ１０はＣＰＵ１０Ａ、ＲＡＭ等から成るメモリ１０Ｂ、ＨＤＤ(Hard Dｉsｋ Drｉve)１０Ｃを備え、ディスプレイ１２、キーボード１４及びマウス１６が各々接続されている。なお、ＨＤＤ１０Ｃに代えてフラッシュメモリ等の他の不揮発性の記憶デバイスを用いてもよい。コンピュータ１０のＨＤＤ１０Ｃの記憶領域には、後述する画像メモリ領域、ワーク領域として用いる記憶領域が各々設けらており、ＣＰＵ１０Ａが後述するフィルタ係数分解・配列処理を行うためのフィルタ係数分解・配列プログラム、フィルタリング処理を行うためのフィルタリングプログラム、画像出力処理を行うための画像出力プログラムが各々インストールされている。これらのプログラムは本発明に係る画像処理プログラムに対応しており、ＣＰＵ１０Ａがこれらのプログラムを実行することで、コンピュータ１０は本発明に係る画像処理装置として機能する。なお、これらのプログラムのうちフィルタ係数分解・配列プログラム及びフィルタリングプログラムは本発明に係る画像処理プログラムに対応している。
【００２８】
次に本第１実施形態の作用を説明する。本第１実施形態では、画像データに対してフィルタリング処理を行う場合に、まずＣＰＵ１０Ａがフィルタ係数分解・配列プログラムを実行することで、図２(Ａ)に示すフィルタ係数分解・配列処理が行われる。
【００２９】
フィルタリング処理の演算パラメータは、処理対象画素を含む複数画素から成る演算対象領域内の個々の画素毎に各々設定されたフィルタ係数値（フィルタ係数列）から成り、例えば図３(Ａ)に示す演算パラメータは、演算対象領域が、処理対象画素を中心として両側に直線状に延びる線状の領域とされ、処理対象画素に対するフィルタ係数値として"0.53"が、処理対象画素からの距離(画素数に換算した距離)が"1"の画素に対するフィルタ係数値として"0.13"が、処理対象画素からの距離が"2"の画素に対するフィルタ係数値として"0.05"が、処理対象画素からの距離が"3"の画素に対するフィルタ係数値として"0.01"が、処理対象画素からの距離が"4"の画素に対するフィルタ係数値として"0.005"が各々設定されて構成されている。
【００３０】
本第１実施形態に係るフィルタ係数分解・配列処理では、ステップ２０において、画像データに対するフィルタリング処理に用いるために予め設定されて記憶されている演算パラメータ（フィルタ係数列）をＨＤＤ１０Ｃ等から読み込み、読み込んだフィルタ係数列を、個々の係数値（演算対象領域内の個々の画素に対応する係数値）を単位として、対応する画素の処理対象画素からの距離が小さい順に並べ替え、並べ替えた結果を係数値の配列としてメモリ１０Ｂ等に記憶させる。これにより、例えば図３(Ａ)に示す演算パラメータ（フィルタ係数値列）は、例として図３(Ｂ)に示すように、処理対象画素に対する係数値"0.53"を先頭（図３(Ｂ)では紙面左側を配列の先頭側としている）として、処理対象画素からの距離が"1"の画素に対するフィルタ係数値"0.13"、処理対象画素からの距離が"2"の画素に対するフィルタ係数値"0.05"、処理対象画素からの距離が"3"の画素に対するフィルタ係数値"0.01"、処理対象画素からの距離が"4"の画素に対するフィルタ係数値"0.005"が順に並んだ係数値配列が得られる。
【００３１】
なお、上記の係数値の並べ替えは、フィルタリング処理の演算パラメータとしてのフィルタ係数列を、演算対象領域内の個々の画素毎の係数値に分解することに相当し、本発明に係る分解手段（より詳しくは請求項２〜請求項４に記載の分解手段）に対応しており、当該処理により、演算対象領域内の個々の画素毎の係数値は、元の演算パラメータ（フィルタ係数列）に対する誤差の小さい順に配列されることになる。
【００３２】
続いて、ＣＰＵ１０Ａがフィルタリングプログラムを実行することで行われるフィルタリング処理について、図２(Ｂ)を参照して説明する。このフィルタリング処理では、まずステップ２４において、先のフィルタ係数分解・配列処理によって得られた係数値配列から最初の係数値、すなわち処理対象画素に対する係数値を取り出す。またステップ２６では、フィルタリング処理対象の画像データの全画素の画素値にステップ２４で係数値配列から取り出した係数値を各々乗じ、演算後の画像データをメモリ１０Ｂの画像メモリ領域に格納する。なお、このステップ２６も本発明に係るフィルタリング手段によるフィルタリング処理に対応している。
【００３３】
ステップ２８では、係数値配列から先頭の係数値（先のステップ２４で取り出した係数値の次の係数値）を取り出し、次のステップ３０では、メモリ１０Ｂの画像メモリ領域から特定の画素の画素値を処理対象画素の画素値として読み出すと共に、ステップ２８で取り出した係数値に対応する他の画素（処理対象画素の位置を基準として演算対象領域を配置したときに、演算対象領域内の各画素のうちステップ２８で取り出した係数値が設定されている画素に対応する画素）の画素値を画像メモリ領域から読み出す。そしてステップ３２では、ステップ３０で取り出した他画素の画素値にステップ２８で取り出した係数値を乗じ、演算結果をステップ３０で取り出した処理対象画素の画素値に加算することで、処理対象画素の新たな画素値を演算し、次のステップ３４では演算結果をメモリ１０Ｂのワーク領域に格納する。次のステップ３６では、画像の全ての画素を処理対象画素としてステップ３０〜ステップ３４の処理を行ったか否か判定する。判定が否定された場合はステップ３０に戻り、ステップ３６の判定が肯定される迄ステップ３０〜ステップ３６を繰り返す。これにより、「複数の演算パラメータ（係数値）のうちの１つを用いたフィルタリング処理」が行われることになる。
【００３４】
ステップ３６の判定が肯定されるとステップ３８へ移行し、メモリ１０Ｂのワーク領域に記憶されている画像データを、メモリ１０Ｂの画像メモリ領域に格納されている元の画像データに上書きして画像メモリ領域に格納させる。ステップ４０では未処理の係数値が有るか、すなわち係数値配列から全ての係数値を取り出したか否か判定する。判定が否定された場合はステップ２８に戻り、ステップ４０の判定が肯定される迄ステップ２８〜ステップ３８を繰り返す。これにより、「複数の演算パラメータ（係数値）を順に用いた複数回のフィルタリング処理」が行われることになる。そしてステップ４０の判定が肯定されるとフィルタリング処理を終了する。なお、上述したフィルタリング処理は本発明に係るフィルタリング処理手段（より詳しくは請求項２〜請求項４に記載のフィルタリング処理手段）に対応している。
【００３５】
続いて、ＣＰＵ１０Ａが画像出力プログラムを実行することで実現される画像出力処理について、図２(Ｃ)を参照して説明する。本実施形態に係る画像出力処理は、図２(Ｂ)に示すフィルタリング処理でエラーが発生したことが検知されるか、又は、キーボード１４やマウス１６を介してオペレータから画像出力が指示されるか、又は、フィルタリング処理の処理時間が所定値に達したことを契機として、ＣＰＵ１０Ａに割込信号が入力されることで実行され、ステップ４４において、メモリ１０Ｂの画像メモリ領域に格納されている画像データを読み出し、読み出した画像データをディスプレイ１２に画像として表示したり、読み出した画像データを別の画像処理プログラムへ引き渡す等の出力処理を行う。この画像出力処理は請求項８に記載の出力手段に対応している。
【００３６】
なお、先の所定値としては、例えばフィルタリング処理の処理時間の許容最大値を設定することができる。この場合、画像出力処理の実行と同時にフィルタリング処理を強制的に終了させる処理を行うことが望ましい。また、上記の画像出力処理はプレビュー画像の出力を目的として実行することも可能であり、この場合は先の所定値として、図２(Ｂ)に示すフィルタリング処理によってプレビュー画像として出力可能な画質の画像データが得られる迄の処理時間に相当する値を設定しておけばよい。
【００３７】
本第１実施形態に係るフィルタリング処理では、演算対象領域内の個々の画素毎の係数値を、フィルタ係数分解・配列処理によって並べ替えられた順序で順に用いて、画像メモリ領域に格納されている画像データに対して複数回のフィルタリング処理を行うと共に、フィルタリング処理が１回終了する毎に、当該フィルタリング処理によって得られた画像データを画像メモリ領域に格納しているので、画像メモリ領域に格納されている画像データが表す画像は、処理対象の画像データに対して分解前の演算パラメータ（フィルタ係数列）をそのまま用いてフィルタリング処理を行うことで得られる画像データが表す画像（本来の処理結果を表す画像）に、フィルタリング処理が１回終了する毎に近づいていくことになる。
【００３８】
具体的には、例えば図３(Ｂ)に示す係数値配列の先頭から順に係数値を取り出してフィルタリング処理を行った場合、処理対象画素に対する係数値"0.53"を個々の画素の画素値に各々乗じた段階（ステップ２６の処理を行った段階）では、フィルタリング処理対象の画像データに対して図３(Ｃ)の(1)に示す周波数特性のフィルタリング処理を行った結果に相当する画像データが画像メモリ領域に格納され、処理対象画素からの距離が"1"の画素の画素値に対応するフィルタ係数値"0.13"を乗じた結果を個々の画素の画素値に各々加えた段階（ステップ２８〜ステップ３８を２回行った段階）では、画像メモリ領域に格納されている画像データが、フィルタリング処理対象の画像データに対して図３(Ｃ)の(2)に示す周波数特性のフィルタリング処理を行った結果に相当する画像データとなり、更に処理対象画素からの距離が"2"の画素の画素値に対応するフィルタ係数値"0.05"を乗じた結果を個々の画素の画素値に各々加えた段階（ステップ２８〜ステップ３８を４回行った段階）では、画像メモリ領域に格納されている画像データが、フィルタリング処理対象の画像データに対して図３(Ｃ)の(3)に示す周波数特性のフィルタリング処理を行った結果に相当する画像データとなる。
【００３９】
図３(Ｃ)の(1)〜(3)に示す周波数特性を比較しても明らかなように、演算対象領域内の個々の画素毎の係数値を順に用いてフィルタリング処理を繰り返すことで、既に行ったフィルタリング処理における周波数特性を重ね合わせた周波数特性が、分解前の演算パラメータ（フィルタ係数列）によって規定される周波数特性に近づいていく（最終的には一致する）ことになるので、図３(Ｂ)に示すフィルタリング処理が完了する前の任意のタイミングで前述の画像出力処理が行われたとしても、相応のフィルタリング処理が行われた画像データを得ることができる。
【００４０】
また、本第１実施形態では、フィルタリング処理の演算パラメータとしてのフィルタ係数列を、個々の係数値を単位として、対応する画素の処理対象画素からの距離が小さい順に並べ替えて係数値配列を生成し、個々の係数値を係数値配列の先頭から順に取り出してフィルタリング処理を繰り返すので、個々の係数値を元の演算パラメータ（フィルタ係数列）に対する誤差の小さい順に選択してフィルタリング処理に用いていることになり、個々の係数値を無作為に選択する場合と比較して、フィルタリング処理の繰り返し回数が少ない段階で画像メモリ領域に格納されている画像データが表す画像を、本来の処理結果を表す画像により近づけることができ、図３(Ｂ)に示すフィルタリング処理が完了する前の任意のタイミングで得られるフィルタリング処理結果（画像）の精度を向上させることができる。
【００４１】
また、本第１実施形態では本来の演算パラメータ（フィルタ係数列）を、個々の係数値を単位として分解し、個々の係数値を順に用いてフィルタリング処理を繰り返しているので、本来の演算パラメータをそのまま用いてフィルタリング処理を行う場合と比較するとトータルの処理時間は増大するものの、個々の係数値を順に用いることで各回のフィルタリング処理は簡略化されており（ステップ３２の演算が簡単になっており）、フィルタリング処理を繰り返す割には処理時間の増大も抑制される。
【００４２】
なお、上記の第１実施形態では、演算パラメータとしての係数値群の個々の係数値を、対応する画素と処理対象画素との距離の近い順に用いてフィルタリング処理を繰り返す態様を説明したが、これに限定されるものではなく、前記個々の係数値を絶対値の大きい順に用いてフィルタリング処理を繰り返すようにしてもよい。
【００４３】
〔第２実施形態〕
次に本発明の第２実施形態について説明する。なお、本第２実施形態は第１実施形態と同一の構成であるので、各部分に同一の符号を付して構成の説明を省略し、以下、本第２実施形態に係るフィルタ係数分解・配列処理及びフィルタリング処理を順に説明する。
【００４４】
図４に示すように、本第２実施形態に係るフィルタ係数分解・配列処理では、まずステップ５０〜ステップ５６で初期設定を行う。すなわち、ステップ５０では目的とするフィルタ係数列（予め設定されて記憶されている演算パラメータ）を配列Ａに格納し、次のステップ５２では、既に採用した平均値フィルタにより演算対象領域内の各画素に乗ぜられる計数値を格納するための配列Ｂを０に初期化する。またステップ５４では、配列Ｂのうち０を設定した範囲の先頭画素の位置及び末尾画素の位置をリストＡの一要素として設定する。なお、リストＡは演算対象領域のうち誤差が残存している範囲（当該範囲の先頭画素及び末尾画素の位置）を登録するためのリストである。またステップ５６では、リストＢを空にする。なお、リストＢは既に採用した平均値フィルタの情報（平均値フィルタのフィルタ範囲（該フィルタ範囲は請求項５に記載の「係数値設定範囲」に対応している）の先頭画素及び末尾画素の位置、係数値）を登録するためのリストである。
【００４５】
次のステップ５８ではリストＡが空か否か判定する。判定が否定された場合はステップ６０へ移行し、誤差値を保持するための誤差バッファに、当該誤差バッファが保持可能な整数の最大値を設定する。またステップ６２では、リストＡの先頭に登録されている要素を要素ａとして読み出し、当該要素ａに設定されている先頭画素〜末尾画素の範囲（誤差が残存している範囲）で配列Ａに格納されている係数値列から配列Ｂに格納されている係数値列を画素単位で減算することで誤差値列を求め、求めた誤差値列のうち重複している誤差値を１個に纏めた上で係数列としてリストＣに格納する。次のステップ６４では、変数ｉ,ｊ,ｋに各々１を代入する。また、ステップ６６ではリストＣのｉ番目の係数値を係数値バッファに格納し、ステップ６８では、要素ａに設定されている先頭画素〜末尾画素の範囲内の先頭からｊ番目の画素位置を始点バッファに格納し、ステップ７０では、要素ａに設定されている先頭画素〜末尾画素の範囲内の先頭からｋ番目の画素位置を終点バッファに格納する。
【００４６】
ステップ７２では、始点バッファに格納されている画素位置を先頭とし、終点バッファに格納されている画素位置を末尾とする範囲内の各画素に対する係数値を、係数値バッファに格納されている係数値に一致させた新たな平均値フィルタを作成する。次のステップ７４では、ステップ７２で作成した新たな平均値フィルタと配列Ｂに格納されている既採用の平均値フィルタとの合計係数値の配列を演算して配列Ｃに格納し、配列Ｃに格納した合計係数値の配列と配列Ａに格納されているフィルタ係数列との係数値の差を各画素毎に演算し、演算した係数値の差を合計することで誤差Ａを演算する。そしてステップ７６では、ステップ７４で演算した誤差Ａが誤差バッファに格納されている値よりも小さいか否か判定する。判定が肯定された場合はステップ７８へ移行し、ステップ７４で演算した誤差Ａを誤差バッファに格納し、係数値バッファに格納されている係数値を係数値バッファ２に格納し、始点バッファに格納されている画素位置を始点バッファ２に格納し、終点バッファに格納されている画素位置を終点バッファ２に格納する。なお、ステップ７６の判定が否定された場合はステップ７８をスキップする。
【００４７】
次のステップ８０では、変数ｋが要素ａに設定されている先頭画素〜末尾画素の範囲内の末尾画素を指し示す値になった否か判定する。判定が否定された場合はステップ８２へ移行し、変数ｋを１だけインクリメントしてステップ７０に戻る。これにより、ステップ８０の判定が肯定される迄ステップ７０〜ステップ８２が繰り返される。また、ステップ８０の判定が肯定されるとステップ８４へ移行し、変数ｊが要素ａに設定されている先頭画素〜末尾画素の範囲内の末尾画素を指し示す値になった否か判定する。判定が否定された場合はステップ８６へ移行し、変数ｊの現在の値を１だけインクリメントした値を変数ｊ及び変数ｋに各々代入した後にステップ６８に戻る。これにより、ステップ８４の判定が肯定される迄ステップ６８〜ステップ８６が繰り返される。また、ステップ８４の判定が肯定されるとステップ８８へ移行し、変数ｉがリストＣの末尾に登録されている係数値を指し示す値になったか否か判定する。判定が否定された場合はステップ９０へ移行し、変数ｉを１だけインクリメントすると共に、変数ｊ及び変数ｋを１に戻してステップ６６に戻る。
【００４８】
上記のステップ６８〜ステップ９０により、要素ａに設定されている先頭画素〜末尾画素の範囲内で誤差Ａが最小となる平均値フィルタのパラメータ（フィルタ範囲の先頭画素位置、末尾画素位置及び係数値）が探索され、その結果が始点バッファ２、終点バッファ２及び係数値バッファ２に格納されることになる。また、ステップ８８の判定が肯定されるとステップ９２へ移行し、現在の要素ａがリストＡに登録されている末尾の要素か否か判定する。判定が否定された場合はステップ６２に戻り、リストＡにおいて、今まで要素ａとして設定していた要素の次に登録されている要素を要素ａとしてリストＡから新たに読み出し、新たに読み出した要素ａを対象としてステップ６２以降の処理を行う。ステップ６２〜ステップ９２はステップ９２の判定が肯定される迄繰り返され、リストＡに登録されている他の要素に設定されている先頭画素〜末尾画素の範囲内で、誤差Ａがより小さくなる平均値フィルタを作成可能であれば、当該平均値フィルタのパラメータが始点バッファ２、終点バッファ２及び係数値バッファ２に既に格納されているパラメータに上書きされて格納されることになる。
【００４９】
ステップ９２の判定が肯定されるとステップ９４へ移行し、始点バッファ２に格納されている先頭画素位置、終点バッファ２に格納されている末尾画素位置、及び、係数値バッファ２に格納されている係数値を、新たに既採用となった平均値フィルタを規定するパラメータとしてリストＢに追加登録する。またステップ９６では、配列Ｂのうち始点バッファ２に格納されている先頭画素位置から終点バッファ２に格納されている末尾画素位置迄の範囲（新たに既採用となった平均値フィルタにおけるフィルタ範囲）内の係数値に、係数値バッファ２に格納されている係数値（新たに既採用となった平均値フィルタにおける係数値）を各々加算する。またステップ９８では、リストＡを空にし、配列Ａに格納されているフィルタ係数列から配列Ｂに格納されている係数値列を各画素毎に減算することで残存誤差値列を求め、求めた残存誤差値列のうち、残存誤差値＝０の画素で区切られた個々の範囲（誤差範囲）の先頭画素位置及び末尾画素位置のペアをリストＡに全て格納し、ステップ５８に戻る。
【００５０】
従って、ステップ５８〜ステップ９８は、リストＡが空となってステップ５８の判定が肯定される迄、すなわち演算対象範囲（目的とするフィルタ係数列によってフィルタ係数が設定されている範囲）内の全ての画素が残存誤差値＝０になる迄の間繰り返され、この間、誤差Ａが最小となる平均値フィルタが順次作成されてリストＢに追加登録される。上記処理により、配列Ａに登録された目的とするフィルタ係数列は、各々の係数値を足し合わせた結果が前記フィルタ係数列に一致する複数の平均値フィルタに分解されると共に、複数の平均値フィルタは、前記フィルタ係数列との誤差が小さい順にリストＢに配列されることになる。
【００５１】
上述した第２実施形態に係るフィルタ係数分解・配列処理について、具体例を挙げて更に説明する。なお、以下では目的とするフィルタ係数列が、図５(Ａ)に配列Ａとして示すように、17個のフィルタ係数から成る係数列"4,5,6,6,6,7,7,7,6,5,4,3,2,-2,-4,-3,-2"であった場合（このフィルタ係数列のプロファイルを図５(Ａ)に示す）を説明する。
【００５２】
第２実施形態に係るフィルタ係数分解・配列処理では、まず図４のステップ５０〜ステップ５６の初期設定により、上記のフィルタ係数列が配列Ａに格納され、配列Ｂは０に初期化され、リストＡには誤差が残存している範囲が演算対象領域の全範囲であることを表す要素(画素位置のペア"(1,17)")が登録され、リストＢは空にされる（図５(Ａ)参照）。
【００５３】
次に、図４のステップ５８〜ステップ９８が１回実行されることで、リストＡに登録されている要素が表す誤差残存範囲(画素位置"1"〜"17"の範囲、すなわち演算対象領域)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、１番目の平均値フィルタとして、フィルタ範囲が画素位置"1"〜"11"の範囲で係数値が"6"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに登録されると共に、配列Ｂのうち画素位置"1"〜"11"の範囲に係数値"6"が加算され、リストＡには誤差が残存している範囲として画素位置"1"〜"2","6"〜"8","10"〜"17"が各々登録される（図５(Ｂ)参照）。なお、図５(Ｂ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１番目の平均値フィルタの係数列のプロファイル）を太線で示す。
【００５４】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"1"〜"2","6"〜"8","10"〜"17"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、２番目の平均値フィルタとして、フィルタ範囲が画素位置"14"〜"17"の範囲で係数値が"-2"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"14"〜"17"の範囲に係数値"-2"が加算され、リストＡには誤差が残存している範囲として画素位置"1"〜"2","6"〜"8","10"〜"13","15"〜"16"が各々登録される（図５(Ｃ)参照）。なお、図５(Ｃ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１，２番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００５５】
また、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"1"〜"2","6"〜"8","10"〜"13","15"〜"16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、３番目の平均値フィルタとして、フィルタ範囲が画素位置"12"〜"13"の範囲で係数値が"3"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"12"〜"13"の範囲に係数値"3"が加算され、リストＡには誤差が残存している範囲として画素位置"1"〜"2","6"〜"8","10"〜"11","13","15"〜"16"が各々登録される（図５(Ｄ)参照）。なお、図５(Ｄ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜３番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００５６】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"1"〜"2","6"〜"8","10"〜"11","13","15"〜"16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、４番目の平均値フィルタとして、フィルタ範囲が画素位置"6"〜"8"の範囲で係数値が"1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"6"〜"8"の範囲に係数値"1"が加算され、リストＡには誤差が残存している範囲として画素位置"1"〜"2","10"〜"11","13","15"〜"16"が各々登録される（図６(Ａ)参照）。なお、図６(Ａ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜４番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００５７】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"1"〜"2","10"〜"11","13","15"〜"16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、５番目の平均値フィルタとして、フィルタ範囲が画素位置"1"〜"2"の範囲で係数値が"-2"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"1"〜"2"の範囲に係数値"-2"が加算され、リストＡには誤差が残存している範囲として画素位置"2","10"〜"11","13","15"〜"16"が各々登録される（図６(Ｂ)参照）。なお、図６(Ｂ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜５番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００５８】
また、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"2","10"〜"11","13","15"〜"16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、６番目の平均値フィルタとして、フィルタ範囲が画素位置"10"〜"11"の範囲で係数値が"-1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置""10"〜"11"の範囲に係数値"-1"が加算され、リストＡには誤差が残存している範囲として画素位置"2","11","13","15"〜"16"が各々登録される（図６(Ｃ)参照）。なお、図６(Ｃ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜６番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００５９】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"2","11","13","15"〜"16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、７番目の平均値フィルタとして、フィルタ範囲が画素位置"15"〜"16"の範囲で係数値が"-2"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"15"〜"16"の範囲に係数値"-2"が加算され、リストＡには誤差が残存している範囲として画素位置"2","11","13","16"が各々登録される（図６(Ｄ)参照）。なお、図６(Ｄ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜７番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００６０】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"2","11","13","16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、８番目の平均値フィルタとして、フィルタ範囲が画素位置"2"の範囲で係数値が"1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"2"に係数値"1"が加算され、リストＡには誤差が残存している範囲として画素位置"11","13","16"が各々登録される（図７(Ａ)参照）。なお、図７(Ａ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜８番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００６１】
また、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"11","13","16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、９番目の平均値フィルタとして、フィルタ範囲が画素位置"11"の範囲で係数値が"-1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"11"に係数値"-1"が加算され、リストＡには誤差が残存している範囲として画素位置"13","16"が各々登録される（図７(Ｂ)参照）。なお、図７(Ｂ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜９番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００６２】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"13","16"の各範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、１０番目の平均値フィルタとして、フィルタ範囲が画素位置"13"の範囲で係数値が"-1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"13"に係数値"-1"が加算され、リストＡには誤差が残存している範囲として画素位置"16"が登録される（図７(Ｃ)参照）。なお、図７(Ｃ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜１０番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示す。
【００６３】
次に、図４のステップ５８〜ステップ９８が再び１回実行されることで、リストＡに登録されている誤差残存範囲(画素位置"16"の範囲)を対象として、誤差Ａが最小となる平均値フィルタが探索される。その結果、１１番目の平均値フィルタとして、フィルタ範囲が画素位置"16"の範囲で係数値が"1"の平均値フィルタが抽出され、当該平均値フィルタのパラメータがリストＢに追加登録されると共に、配列Ｂのうち画素位置"16"に係数値"1"が加算される。図７(Ｄ)にはこの段階で配列Ｂに登録されている係数列のプロファイル（１〜１１番目の平均値フィルタの係数列を足し合わせたプロファイル）を太線で示すが、このプロファイルは図５(Ａ)に示すプロファイルと一致しており、演算対象範囲の全範囲（画素位置"1"〜"17"の範囲）に亘って誤差０となっているので、リストＡは空になり、図４のステップ５８の判定が肯定されることでフィルタ係数分解・配列処理が終了する。
【００６４】
以上の処理により、当初のフィルタ係数列"4,5,6,6,6,7,7,7,6,5,4,3,2,-2,-4,-3,-2"は、当該フィルタ係数列に対する誤差の小さい順にリストＢに登録された１１個の平均値フィルタに分解されることになる。なお、上述した第２実施形態に係るフィルタ係数分解・配列処理は本発明に係る分解手段（より詳しくは請求項２，５，６に記載の分解手段）に対応している。
【００６５】
続いて、本第２実施形態に係るフィルタリング処理について図８を参照して説明する。本第２実施形態に係るフィルタリング処理では、まずステップ１１０において、フィルタリング処理対象の画像データをメモリ１０Ｂの画像メモリ領域に格納する。ステップ１１２で変数ｉに１を代入し、次のステップ１１４では、配列Ｂの先頭からｉ番目の要素（平均値フィルタの処理パラメータ）を取得する。次のステップ１１６以降では、画像メモリ領域に格納されている画像データに対し、ステップ１１４で処理パラメータを取得した平均値フィルタを用いてフィルタリング処理を行う。
【００６６】
すなわち、ステップ１１６ではステップ１１４で取得した平均値フィルタの処理パラメータに規定されているフィルタ範囲の先頭画素位置及び末尾画素位置に基づき、処理パラメータを取得した平均値フィルタにおけるフィルタ範囲が２画素分以上有るか否か判定する。判定が肯定された場合はステップ１１８へ移行し、現在の処理対象画素よりも１画素前の処理対象画素について、フィルタ範囲内の全画素の合計画素値が演算済みか否か判定する。ステップ１１６以降の処理を開始した当初は、この判定が否定されてステップ１２０へ移行し、画像メモリ領域から処理対象画素の画素値を読み出すと共に、処理対象画素に対応するフィルタ範囲（このフィルタ範囲の位置は処理対象画素の位置を基準として定まる）内の全画素の画素値も画像メモリ領域から読み出す。そしてステップ１２２では、処理対象画素に対応するフィルタ範囲内の全画素の画素値の合計値を演算する。
【００６７】
またステップ１２８では、ステップ１２２（又は後述するステップ１２６）で演算したフィルタ範囲内の全画素の画素値の合計値を中間バッファに格納する。ステップ１３０では、中間バッファに格納したフィルタ範囲内の全画素の画素値の合計値に、先のステップ１１４で取得した処理パラメータに規定されている平均値フィルタのフィルタ係数を乗じ、演算結果を先のステップ１２０（又は後述するステップ１２４）で読み出した処理対象画素の画素値に加えることで、処理対象画素の新たな画素値を演算し、次のステップ１３２で演算結果をメモリ１０Ｂのワーク領域に格納する。次のステップ１３４では、画像の全ての画素を処理対象画素として処理を行ったか否か判定する。判定が否定された場合はステップ１１８に戻り、次の画素を処理対象画素としてステップ１１８以降の処理が行われ、ステップ１３４の判定が肯定される迄の間、ステップ１１８〜ステップ１３４が繰り返されることで、ステップ１１４で処理パラメータを取得した平均値フィルタを用いたフィルタリング処理が、フィルタリング処理対象の画像データの全画素を処理対象として順次行われることになる。
【００６８】
また、ステップ１２８でフィルタ範囲内の全画素の画素値の合計値を中間バッファに一旦格納した以降は、ステップ１１８の判定が肯定されてステップ１２４へ移行し、画像メモリ領域から処理対象画素の画素値を読み出すと共に、処理対象画素の移動に伴って新たにフィルタ範囲内に入った画素（図９も参照）の画素値も画像メモリ領域から読み出す。そしてステップ１２６では、中間バッファに格納されている、１画素前の処理対象画素に対応するフィルタ範囲内の全画素の合計画素値を読み出し、当該合計画素値に対し、ステップ１２４で読み出した、処理対象画素の移動に伴って新たにフィルタ範囲内に入った画素の画素値を加えると共に、処理対象画素の移動に伴ってフィルタ範囲から逸脱した画素の画素値を減ずることで、今回の処理対象画素に対応するフィルタ範囲内の全画素の合計画素値を演算し、演算した合計画素値を次のステップ１２８で中間バッファに格納する。
【００６９】
このように、１画素前の処理対象画素に対応するフィルタ範囲内の全画素の合計画素値を用いて、次の処理対象画素に対応するフィルタ範囲内の全画素の合計画素値を演算するので、合計画素値の演算のために読み出すべき画素値の数及び合計画素値の演算に用いる画素値の数を減少させることができ、合計演算値の演算、ひいてはフィルタリング処理に要する時間を短縮することができる。
【００７０】
一方、ステップ１１４で処理パラメータを取得した平均値フィルタにおけるフィルタ範囲が１画素分であった場合には、ステップ１１６の判定が否定されてステップ１３６へ移行し、画像メモリ領域から処理対象画素の画素値を読み出すと共に、処理対象画素に対応するフィルタ範囲内の単一の画素の画素値も画像メモリ領域から読み出す。次のステップ１３８では、ステップ１３６で読み出したフィルタ範囲内の単一の画素の画素値に平均値フィルタのフィルタ係数を乗じ、演算結果をステップ１３６で読み出した処理対象画素の画素値に加えることで、処理対象画素の新たな画素値を演算し、次のステップ１４０で演算結果をメモリ１０Ｂのワーク領域に格納する。次のステップ１４２では、画像の全ての画素を処理対象画素として処理を行ったか否か判定する。判定が否定された場合はステップ１３６に戻り、ステップ１４２の判定が肯定される迄ステップ１３６〜ステップ１４２を繰り返す。これにより、ステップ１１４で処理パラメータを取得した平均値フィルタを用いたフィルタリング処理が、フィルタリング処理対象の画像データの全画素を処理対象として順次行われることになる。
【００７１】
このように、本第２実施形態に係るフィルタリング処理では、上述したステップ１１８〜ステップ１３４、又は、ステップ１３６〜ステップ１４２によって「複数の演算パラメータ（係数値）のうちの１つを用いたフィルタリング処理」が実現される。そして、ステップ１３４又はステップ１４２の判定が肯定されるとステップ１４４へ移行し、メモリ１０Ｂのワーク領域に記憶されている画像データを、メモリ１０Ｂの画像メモリ領域に格納されている元の画像データに上書きして画像メモリ領域に格納させる。ステップ１４６ではｉ番目の要素が配列Ｂの末尾の要素か否か、すなわち配列Ｂに処理パラメータが登録されている平均値フィルタの中に未処理の平均値フィルタが存在しているか否か判定する。判定が否定された場合はステップ１１４に戻り、ステップ１４６の判定が肯定される迄ステップ１１４〜ステップ１４６を繰り返す。
【００７２】
これにより、配列Ｂに処理パラメータが登録されている全ての平均値フィルタを用いてフィルタリング処理が繰り返され、「複数の演算パラメータ（係数値）を順に用いた複数回のフィルタリング処理」が行われることになる。そしてステップ１４６の判定が肯定されるとフィルタリング処理を終了する。なお、上述したフィルタリング処理は本発明に係るフィルタリング処理手段（より詳しくは請求項２、請求項５〜請求項７に記載のフィルタリング処理手段）に各々対応している。
【００７３】
本第２実施形態では、画像データに適用すべきフィルタリング処理の演算パラメータとしてのフィルタ係数列を、各々の係数列を足し合わせた結果が元のフィルタ係数列に一致し、かつフィルタ範囲が互いに異なる複数の平均値フィルタ（の処理パラメータ）に分解し、複数の平均値フィルタを元のフィルタ係数列に対する誤差の小さい順に用いて、画像メモリ領域に格納されている画像データに対して複数回のフィルタリング処理を行うと共に、フィルタリング処理が１回終了する毎に、当該フィルタリング処理によって得られた画像データを画像メモリ領域に格納しているので、画像メモリ領域に格納されている画像データが表す画像は、第１実施形態と同様に、処理対象の画像データに対して分解前の演算パラメータ（フィルタ係数列）をそのまま用いてフィルタリング処理を行うことで得られる画像データが表す画像（本来の処理結果を表す画像）に、フィルタリング処理が１回終了する毎に近づいていくことになり、図８のフィルタリング処理が完了する前の任意のタイミングで図３(Ｃ)の画像出力処理が行われたとしても、相応のフィルタリング処理が行われた画像データを得ることができる。
【００７４】
また、本第２実施形態では、フィルタリング処理の演算パラメータとしてのフィルタ係数列を分解することで得られた複数の平均値フィルタを、元のフィルタ係数列に対する誤差の小さい順に用いてフィルタリング処理を繰り返しているので、個々の平均値フィルタを無作為に選択する場合や、第１実施形態と比較しても、フィルタリング処理の繰り返し回数が少ない段階で画像メモリ領域に格納されている画像データが表す画像を、本来の処理結果を表す画像により近づけることができる。
【００７５】
すなわち、第２実施形態のフィルタ係数分解・配列処理の説明に用いたフィルタ係数列（図５(Ａ)に配列Ａとして示すフィルタ係数列）を個々の係数値毎に分解し、個々の係数値を重みの大きい順（絶対値の大きい順）に用いてフィルタリング処理を繰り返した場合を考えると、各回のフィルタリング処理後の残誤差値は図１０(Ａ)に示すように"72","65"…と推移する。なお、図１０(Ａ)では残誤差値として、元のフィルタ係数列における係数値の合計値と、それ迄のフィルタリング処理で用いた係数値の合計値との差を用いている。これに対し、上記のフィルタ係数列を図５〜図７に示したように１１個の平均値フィルタに分解し、１１個の平均値フィルタを元のフィルタ係数列に対する誤差の小さい順に用いてフィルタリング処理を繰り返した場合、各回のフィルタリング処理後の残誤差値は図１０(Ｂ)に示すように"25","17"…と推移する。従って、第２実施形態によれば、複数回のフィルタリング処理が完了する前の任意のタイミングで得られるフィルタリング処理結果（画像）の精度を、第１実施形態よりも向上させることができる。
【００７６】
なお、上記では画像データに対してフィルタリング処理のみを行う態様を説明したが、本発明はこれに限定されるものではなく、例えば特開２００６−３３８４９８号公報等に記載されているように、互いに異なる画像処理を行う複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結することで、複数種の画像処理を組み合わせて所望の画像処理を実現する画像処理部を構築し、当該画像処理部によって前記所望の画像処理を行わせる態様において、複数種の画像処理モジュールの１つとして本発明に係るフィルタリング処理を行うフィルタリング処理モジュールを設けておき、当該フィルタリング処理モジュールを含む画像処理部を構築することで、本発明に係るフィルタリング処理を含む複数種の画像処理を組み合わせた画像処理を行うようにすることも可能である。
【００７７】
また、上記では本発明に係る画像処理プログラムに対応するフィルタ係数分解・配列プログラム及びフィルタリングプログラムがコンピュータ１０のＨＤＤ１０Ｃに予め記憶（インストール）されている態様を説明したが、本発明に係る画像処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【図面の簡単な説明】
【００７８】
【図１】本実施形態に係るコンピュータの概略構成を示すブロック図である。
【図２】第１実施形態に係る、(Ａ)はフィルタ係数分解・配列処理、(Ｂ)はフィルタリング処理、(Ｃ)は画像出力処理の内容を各々示すフローチャートである。
【図３】(Ａ)はフィルタ係数列の一例、(Ｂ)は係数値の配列の一例を各々示す概念図、(Ｃ)はフィルタの周波数特性の推移の一例を示す線図である。
【図４】第２実施形態に係るフィルタ係数分解・配列処理の内容を示すフローチャートである。
【図５】フィルタ係数分解・配列処理による複数の平均値フィルタへの分解の推移を説明するための説明図である。
【図６】フィルタ係数分解・配列処理による複数の平均値フィルタへの分解の推移を説明するための説明図である。
【図７】フィルタ係数分解・配列処理による複数の平均値フィルタへの分解の推移を説明するための説明図である。
【図８】第２実施形態に係るフィルタリング処理の内容を示すフローチャートである。
【図９】フィルタ範囲内の画素値の合計値の演算を説明するための説明図である。
【図１０】複数の平均値フィルタへ分解してフィルタリング処理を行った場合の残誤差の変化を、他の態様と対照させて示す説明図である。
【符号の説明】
【００７９】
１０  コンピュータ
１０Ａ  ＣＰＵ
１０Ｂ  メモリ
１０Ｃ  ＨＤＤ
１２  ディスプレイ
１４  キーボード
１６  マウス
【図１】
2009054002.tif 000003
【図２】
2009054002.tif 000004
【図３】
2009054002.tif 000005
【図４】
2009054002.tif 000006
【図５】
2009054002.tif 000007
【図６】
2009054002.tif 000008
【図７】
2009054002.tif 000009
【図８】
2009054002.tif 000010
【図９】
2009054002.tif 000011
【図１０】
2009054002.tif 000012