(57)【特許請求の範囲】
【請求項１】
原画像の各画素に対して隣接する複数画素を抽出して所定の演算を施すフィルタ処理のための画像処理方法であって、フィルタ処理の対象エリアは原画像の縦方向に隣接する複数の画素よりなる縦画素列が原画像の横方向に複数隣接して構成され、原画像から１つの縦画素列のデータを取り込む毎に演算処理を実行するのと同時に、演算処理をする前の１つの縦画素列のデータを原画像から抽出することを特徴とする画像処理方法。
【請求項２】
請求項１において、原画像から縦画素列のデータを取り込むために生成されるアドレスは、原画像の注目画素から見て順に左上画素、左横画素、左下画素、縦上画素、注目画素、縦下画素、右上画素、右横画素、右下画素の順序でアドレスを展開されることを特徴とする画像処理方法。
【請求項３】
原画像の各画素に対して隣接する複数画素を抽出して所定の演算を施すフィルタ処理のための画像処理装置であって、フィルタ処理の対象エリアは原画像の縦方向に隣接する複数の画素よりなる縦画素列が原画像の横方向に複数隣接して構成され、原画像から１つの縦画素列のデータを取り込むためのアドレスを生成するアドレス生成部と、アドレス生成部により生成されたアドレスに従って原画像から取り込まれたデータを蓄積するレジスタ群と、レジスタ群に蓄積されたデータに基づいてアドレス生成部により原画像から１つの縦画素列のデータが取り込まれる毎に演算処理を実行する演算処理部とを備えることを特徴とする画像処理装置。
【請求項４】
請求項３において、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての演算結果を蓄積しておくレジスタを各々の縦画素列毎に備え、それぞれのレジスタ群から演算処理部に与えるデータを１つの縦画素列のデータの取り込み時間ずつ遅らせることにより、演算処理部における複数の縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とする画像処理装置。
【請求項５】
請求項３において、フィルタ処理の対象エリアは３つの縦画素列から構成され、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての最新の演算結果を求める第１のレジスタと、１つ前の縦画素列についての第１のレジスタの演算結果を保存する第２のレジスタと、第１のレジスタにより得られた最新の演算結果と第２のレジスタに保存された１つ前の縦画素列についての演算結果に基づく演算結果を保存する第３のレジスタとを備え、第１及び第３のレジスタのデータに基づいて演算処理部における３つの縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とする画像処理装置。
【請求項６】
請求項３において、フィルタ処理の対象エリアは３つの縦画素列から構成され、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての最新の演算結果を求める第１のレジスタと、第１のレジスタの演算結果を１つの縦画素列置きに交互に保存する第２及び第３のレジスタと、第１のレジスタが最新の演算結果を求めている間に第２及び第３のレジスタのデータに基づく演算結果を保存する第４のレジスタとを備え、第１及び第４のレジスタのデータに基づいて演算処理部における３つの縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とする画像処理装置。
【請求項７】
請求項４乃至６のいずれかにおいて、１つの縦画素列を構成する複数データの取り込み毎に実行される演算処理は、各入力データに対して異なる定数を乗算して加算する積和演算処理であり、積和演算のための定数は１つの縦画素列を構成する複数データの取り込み毎に個別に設定されることを特徴とする画像処理装置。
【請求項８】
請求項４乃至６のいずれかにおいて、１つの縦画素列を構成する複数データの取り込み毎に実行される演算処理は、各入力データに対して異なる定数を乗算して加算する積和演算処理であり、該積和演算に用いられる全ての定数について並列的に定数乗算を行う複数の定数乗算器を備え、各入力データについて１つの定数乗算器の出力を選択して加算することを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理の分野において取り込み画像に含まれるノイズを除去するフィルタ処理のための画像処理方法及び装置に関するものである。
【０００２】
【従来の技術】
従来、画像処理のためのフィルタ処理はマトリクス演算によりソフトウェアで処理されている。例えば、次式は３×３画素の領域ｐに対してΔｘ，Δｙの定数を乗算して得た値Ｘ，Ｙの２乗の平方根Ｇを画像処理後の画素値とするフィルタ処理を例示している。
【数１】
0003817987.tif 000002
【０００３】
【発明が解決しようとする課題】
上述のようなフィルタ処理をソフトウェアで実行する場合、ＣＰＵを長時間拘束する上に、画像メモリのアクセス等に掛かる負担も大きくなり、ＣＰＵの機能を十分に活かし切れない。
【０００４】
本発明は、指定した範囲の画像メモリの読み出しをフィルタ処理に適した順序でアドレス展開するアドレス生成部と、読み出されたデータにフィルタ処理を適用するための演算処理部をハードウェア化することにより、指定した範囲のフィルタ処理をハードウェアにより連続して実行できるようにしてＣＰＵの負担を軽減できるようにしたフィルタ処理のための画像処理方法及び装置を提供することを課題とする。
【０００５】
【課題を解決するための手段】
請求項１の発明によれば、上記の課題を解決するために、図１〜図４に示すように、原画像の各画素に対して隣接する複数画素を抽出して所定の演算を施すフィルタ処理のための画像処理方法であって、フィルタ処理の対象エリアは原画像の縦方向に隣接する複数の画素よりなる縦画素列が原画像の横方向に複数隣接して構成され、原画像から１つの縦画素列のデータを取り込む毎に演算処理を実行するのと同時に、演算処理をする前の１つの縦画素列のデータを原画像から抽出することを特徴とするものである。
【０００６】
請求項２の発明によれば、上記の課題を解決するために、請求項１において、原画像から縦画素列のデータを取り込むために生成されるアドレスは、原画像の注目画素から見て順に左上画素、左横画素、左下画素、縦上画素、注目画素、縦下画素、右上画素、右横画素、右下画素の順序でアドレスを展開されることを特徴とするものである。
【０００７】
請求項３の発明によれば、上記の課題を解決するために、図５に示すように、原画像の各画素に対して隣接する複数画素を抽出して所定の演算を施すフィルタ処理のための画像処理装置であって、フィルタ処理の対象エリアは原画像の縦方向に隣接する複数の画素よりなる縦画素列が原画像の横方向に複数隣接して構成され、原画像から１つの縦画素列のデータを取り込むためのアドレスを生成するアドレス生成部１と、アドレス生成部１により生成されたアドレスに従って原画像から取り込まれたデータを蓄積するレジスタ群２と、レジスタ群２に蓄積されたデータに基づいてアドレス生成部１により原画像から１つの縦画素列のデータが取り込まれる毎に演算処理を実行するフィルタ処理部３とを備えることを特徴とするものである。
【０００８】
請求項４の発明によれば、上記の課題を解決するために、請求項３において、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての演算結果を蓄積しておくレジスタを各々の縦画素列毎に備え、それぞれのレジスタ群から演算処理部に与えるデータを１つの縦画素列のデータの取り込み時間ずつ遅らせることにより、演算処理部における複数の縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とするものである（図６）。
【０００９】
請求項５の発明によれば、上記の課題を解決するために、請求項３において、フィルタ処理の対象エリアは３つの縦画素列から構成され、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての最新の演算結果を求める第１のレジスタと、１つ前の縦画素列についての第１のレジスタの演算結果を保存する第２のレジスタと、第１のレジスタにより得られた最新の演算結果と第２のレジスタに保存された１つ前の縦画素列についての演算結果に基づく演算結果を保存する第３のレジスタとを備え、第１及び第３のレジスタのデータに基づいて演算処理部における３つの縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とするものである（図７）。
【００１０】
請求項６の発明によれば、上記の課題を解決するために、請求項３において、フィルタ処理の対象エリアは３つの縦画素列から構成され、前記レジスタ群は、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての最新の演算結果を求める第１のレジスタと、第１のレジスタの演算結果を１つの縦画素列置きに交互に保存する第２及び第３のレジスタと、第１のレジスタが最新の演算結果を求めている間に第２及び第３のレジスタのデータに基づく演算結果を保存する第４のレジスタとを備え、第１及び第４のレジスタのデータに基づいて演算処理部における３つの縦画素列についての演算処理を１つの縦画素列のデータの取り込み毎に連続して実行するようにしたことを特徴とするものである（図８）。
【００１１】
請求項７の発明によれば、上記の課題を解決するために、請求項４乃至６のいずれかにおいて、１つの縦画素列を構成する複数データの取り込み毎に実行される演算処理は、各入力データに対して異なる定数を乗算して加算する積和演算処理であり、積和演算のための定数は１つの縦画素列を構成する複数データの取り込み毎に個別に設定されることを特徴とするものである（図９）。
【００１２】
請求項８の発明によれば、上記の課題を解決するために、請求項４乃至６のいずれかにおいて、１つの縦画素列を構成する複数データの取り込み毎に実行される演算処理は、各入力データに対して異なる定数を乗算して加算する積和演算処理であり、該積和演算に用いられる全ての定数について並列的に定数乗算を行う複数の定数乗算器を備え、各入力データについて１つの定数乗算器の出力を選択して加算することを特徴とするものである（図１０）。
【００１３】
【発明の実施の形態】
（実施形態１）
図１と図２は本発明におけるアドレス展開のイメージを示す説明図である。本発明では、画像メモリの１点ｅを指定したとしても、これに隣接する点ａをスタート位置として画像メモリ読み出しのためのアドレス生成を開始する。すなわち、フィルタ処理をかける範囲が例えば３×３画素の正方形の領域である場合、このフィルタの展開範囲は、中心のアドレス（点ｅ）が与えられている場合、図１に示すように、点ａからスタートし、図２に示すように、１ラインを走査した後、次のラインに移動する。この例では、縦方向に沿って３画素のアドレスを生成し、次に、横方向に１画素ずらせて、上記と同様に縦方向に沿って３画素のアドレスを生成する。この処理を繰り返し、３×３画素のデータが集まるとフィルタ処理のための演算値を得ることができる。
【００１４】
図３と図４は広い範囲にフィルタ処理を掛ける場合の処理手順を示す説明図である。図３では３×３画素のフィルタ処理を横方向に繰り返し実行する様子を示しており、図４では図３の処理をさらに縦方向にも繰り返し実行する様子を示している。画素の走査順序としては、図１及び図２で説明したように、注目画素から左上に１画素離れた位置から縦方向（矢印Ｐで示す方向）に３画素を走査してＡのデータを読み出した後、横方向に１画素ずらせて、同様に縦方向（矢印Ｐ’で示す方向）に３画素を走査してＢのデータを読み出し、順にＡ、Ｂ、Ｃ、Ｄのデータを読み出す。フィルタ処理の実行タイミングについては、図３のＡ、Ｂ、Ｃのデータが揃ったところで１回目のフィルタ処理を実行し、次に、Ｄのデータが揃ったところでＢ、Ｃ、Ｄのデータを用いて２回目のフィルタ処理を行う。すなわち、最初のフィルタ処理は３画素分の走査を３回繰り返した段階で実行されるが、次回のフィルタ処理は３画素分の走査を１回実行するたびに実行される。これを、指定されたフィルタ範囲の横方向の大きさをカバーするまで繰り返し実行する。
【００１５】
次に、図４に示すように、図３の処理を矢印Ｑに示す方向に実行する手順を矢印Ｒに示す方向に１画素分ずらせて実行し、指定されたフィルタ範囲の縦方向の大きさをカバーするまで繰り返し実行する。図４の灰色で示したβの範囲は、３×３画素の大きさのフィルタ処理を適用する範囲であり、すでにαの範囲（縦方向に１画素上の３×３画素の範囲）のフィルタ処理を矢印Ｑの方向について実行し終えて、矢印Ｒの方向に１画素分ずらせて、再び矢印Ｑの方向にβの範囲のフィルタ処理を実行しようとする様子を示している。
【００１６】
図５は上述の図１〜図４の画像処理を実行するためのハードウェア構成を示すブロック図である。図中、１はアドレス生成データ取込み回路部であり、フィルタ処理を施すべきフィルタ範囲を指定することにより、図３に示すように、Ａ、Ｂ、Ｃ、Ｄ、…のデータを順に画像メモリから読み出すためのアドレスを生成し、画像メモリからデータを取り込む動作をハードウェアにより行う。２はレジスタ群であり、アドレス生成データ取込み回路部１により取り込まれた図３に示すＡ、Ｂ、Ｃ、Ｄ、…のデータを順次蓄積し、Ａ、Ｂ、Ｃのデータが揃った時点で、これらのデータを後段のフィルタ処理回路３に渡し、また、次のＢ、Ｃ、Ｄのデータが揃った時点で、これらのデータを後段のフィルタ処理回路３に渡すといった動作をハードウェアにより行う。３はフィルタ処理回路であり、例えば、レジスタ群２から渡された３×３画素のデータに対してそれぞれ所定の重み付け定数を乗算した後、加算するという積和演算を行う。４は出力部であり、フィルタ処理回路３から出力される積和演算の結果を画像処理後のデータとして蓄積しておき、一連の処理が完了した後、ＣＰＵに割り込みを掛けて、読み取らせる動作をハードウェアにより行う。したがって、図５に示すようなハードウェア構成を用いれば、ＣＰＵは最初にアドレス生成データ取込み回路部１に対してフィルタ処理を施すべきフィルタ範囲を指定する命令を与えるだけで良く、その後、出力部４から画像処理後のデータが得られるまでの間、ＣＰＵの機能は、他の処理を実行するために解放することができる。
【００１７】
なお、ＣＰＵが図５に示すハードウェアに対して原画像にフィルタ処理を施すべき範囲を指定したり、画像処理後のデータを読み出すために、アドレスを指定する場合には、各チェックエリア（３×３画素の領域）の中心部分（注目画素）のアドレスを指定する。あるいは、あらかじめ決められた位置のアドレスを指定し、そのアドレスから中心部分（注目画素）のアドレスを計算しても良い。
【００１８】
図６は演算処理を並列処理で実行する場合のタイミングを示す説明図である。ここでは、フィルタ処理回路３による積和演算の重み付け定数が全て１の場合、すなわち、３×３画素の画素値の総和を中心画素の画素値とする場合について説明する。図中、（イ）は図３で説明した手順で走査される画素の配置を示しており、画素１，２，３が縦方向に走査された段階で、横方向に１画素ずれて隣の画素４，５，６が縦方向に走査され、以下、画素７，８，９、…、１６，１７，１８、…が順に縦方向に走査される様子を示している。
【００１９】
図６の（ロ），（ハ），（ニ）は、レジスタ群２に保持されるデータを時系列的に示している。この例では、レジスタ群２は加算機能付きの４個のレジスタＡＸ，ＢＸ，ＣＸ，ＤＸを備え、初期化された状態では、各レジスタのデータはクリアされている。図３で説明した順序で画素１，２，３の値を順次取り込んでレジスタＡＸ（請求項４のレジスタその１）に加算して行き、次に、画素４，５，６の値を順次取り込んでレジスタＢＸ（請求項４のレジスタその２）に加算して行き、さらに、画素７，８，９の値を順次取り込んでレジスタＣＸ（請求項４のレジスタその３）に加算して行く。次に、画素１０が読み出された段階で、このデータをレジスタＤＸ（請求項４のレジスタその４）に加算しつつ、レジスタＡＸ，ＢＸ，ＣＸのデータをフィルタ処理回路３で加算して、その加算結果ＡＮＳ１を中心画素５に対応するアドレスのフィルタ処理後のデータとして出力部４に保持する。その後、レジスタＡＸのデータをクリアする。その間に、レジスタＤＸでは、画素１０，１１，１２の値を順次取り込んで加算して行く。以上の動作を図６（ロ）に示す。
【００２０】
次に、画素１３が読み出された時点で、このデータをレジスタＡＸに加算しつつ、レジスタＢＸ，ＣＸ，ＤＸのデータをフィルタ処理回路３で加算して、その加算結果ＡＮＳ２を中心画素８に対応するアドレスのフィルタ処理後のデータとして出力部４に保持する。その後、レジスタＢＸのデータをクリアする。その間に、レジスタＡＸでは、画素１３，１４，１５の値を順次取り込んで加算して行く。以上の動作を図６（ハ）に示す。
【００２１】
次に、画素１６が読み出された時点で、このデータをレジスタＢＸに加算しつつ、レジスタＣＸ，ＤＸ，ＡＸのデータをフィルタ処理回路３で加算して、その加算結果ＡＮＳ３を中心画素１１に対応するアドレスのフィルタ処理後のデータとして出力部４に保持する。その後、レジスタＣＸのデータをクリアする。その間に、レジスタＢＸでは、画素１６，１７，１８の値を順次取り込んで加算して行く。以上の動作を図６（ニ）に示す。
【００２２】
以下、同様の処理を繰り返し、図６（ホ）に示すタイミングでフィルタ処理後のデータＡＮＳ１，ＡＮＳ２，ＡＮＳ３，…が出力部４に蓄積されて行く。この図６に示した並列処理方式では、データの加算処理やレジスタ間のデータ転送のための時間的余裕は十分に得られるが、加算機能を有するレジスタ（アキュムレータ）が４個も必要になる。そこで、順次処理により少数のアキュムレータで同等の演算処理を実行する方式について次に説明する。
【００２３】
図７は演算処理を順次処理で実行する実施形態のタイミングを示す説明図である。ここでも、フィルタ処理回路３による積和演算の重み付け定数が全て１の場合、すなわち、３×３画素の画素値の総和を中心画素の画素値とする場合について説明する。図中、（イ）は図３で説明した手順で走査される画素の配置を示しており、画素１，２，３が縦方向に走査された段階で、横方向に１画素ずれて隣の画素４，５，６が縦方向に走査され、以下、画素７，８，９、…、１６，１７，１８、…が順に縦方向に走査される様子を示している。図７の（ロ），（ハ），（ニ）は、レジスタ群２に保持されるデータを時系列的に示している。図中、Ａは画素１，２，３のデータの加算値、Ｂは画素４，５，６の加算値、Ｃは画素７，８，９の加算値、Ｄは画素１０，１１，１２の加算値、Ｅは画素１３，１４，１５の加算値、Ｆは画素１６，１７，１８の加算値を示す。この例では、レジスタ群２は加算機能付きの２個のレジスタＡＸ，ＣＸと加算機能を有さない１個のレジスタＢＸを備え、初期化された状態では、加算機能付きのレジスタＡＸ，ＣＸのデータはクリアされている。
【００２４】
図３で説明した順序で画素１，２，３の値を順次取り込んでレジスタＡＸに加算して行き、１列（３画素）の加算を完了して、次の列（４画素目）に移る前に、レジスタＡＸのデータをレジスタＢＸに転送しておき、レジスタＡＸは初期化する。
【００２５】
次に、画素４，５，６の値を順次取り込んでレジスタＡＸに加算して行き、２列目の加算を完了して、次の列（７画素目）に移る前に、レジスタＡＸのデータＢとレジスタＢＸのデータＡを加算したデータ（Ａ＋Ｂ）をレジスタＣＸに求めておき、レジスタＡＸのデータＢをレジスタＢＸに上書き後、レジスタＡＸは初期化する。
【００２６】
さらに、画素７，８，９の値を順次取り込んでレジスタＡＸに加算して行き、３列目の加算を完了して、次の列（１０画素目）に移る前に、レジスタＡＸのデータＣとレジスタＣＸのデータ（Ａ＋Ｂ）を読み出して、フィルタ処理回路３で加算して、その加算結果ＡＮＳ１＝Ａ＋Ｂ＋Ｃを中心画素５に対応するアドレスのフィルタ処理後のデータとして出力部４に保持する。そして、レジスタＡＸのデータＣとレジスタＢＸのデータＢを加算したデータ（Ｂ＋Ｃ）をレジスタＣＸに求めておき、レジスタＡＸのデータＣをレジスタＢＸに上書き後、レジスタＡＸは初期化する。
【００２７】
以下、同様の動作を繰り返すことにより、レジスタＡＸ（請求項５の第１のレジスタ）は図７（ロ）に示すように、３画素毎の加算値Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、…を求め、レジスタＢＸ（請求項５の第２のレジスタ）は図７（ハ）に示すように、レジスタＡＸで求めた３画素毎の加算値Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、…を３画素分のタイミングだけ遅れて保存し、レジスタＣＸ（請求項５の第３のレジスタ）は図７（ニ）に示すように、レジスタＡＸで求めた最新の３画素の加算値とレジスタＢＸに保存されていた１列前の３画素の加算値との和（Ａ＋Ｂ）、（Ｂ＋Ｃ）、（Ｃ＋Ｄ）、（Ｄ＋Ｅ）、…を求めることになる。そして、レジスタＡＸで求められた最新の３画素のデータＣ、Ｄ、Ｅ、…とレジスタＣＸに求められた１列前と２列前の３画素のデータ（Ａ＋Ｂ）、（Ｂ＋Ｃ）、（Ｃ＋Ｄ）、…をそれぞれフィルタ処理回路３で加算することにより、図７（ホ）に示すように、加算結果ＡＮＳ１＝Ａ＋Ｂ＋Ｃ、ＡＮＳ２＝Ｂ＋Ｃ＋Ｄ、ＡＮＳ３＝Ｃ＋Ｄ＋Ｅ、…をそれぞれ中心画素５，８，１１，…に対応するアドレスのフィルタ処理後のデータとして出力部４に保持することができる。
【００２８】
図７に示した順次処理方式では、加算機能を有する２個のレジスタＡＸ，ＣＸと加算機能を持たない１個のレジスタＢＸを使用する小規模なハードウェアで実現できるが、レジスタＣＸの演算速度がレジスタＡＸと同等に高速であることが必要となる。そこで、次に、高速の加算機能を有するレジスタが１個で済むような順次処理方式を提案する。
【００２９】
図８は演算処理を順次処理で実行する他の実施形態のタイミングを示す説明図である。ここでも、フィルタ処理回路３による積和演算の重み付け定数が全て１の場合、すなわち、３×３画素の画素値の総和を中心画素の画素値とする場合について説明する。図中、（イ）は図３で説明した手順で走査される画素の配置を示しており、画素１，２，３が縦方向に走査された段階で、横方向に１画素ずれて隣の画素４，５，６が縦方向に走査され、以下、画素７，８，９、…、１６，１７，１８、…が順に縦方向に走査される様子を示している。
【００３０】
図８の（ロ），（ハ），（ニ），（ホ）は、レジスタ群２に保持されるデータを時系列的に示している。図中、Ａは画素１，２，３のデータの加算値、Ｂは画素４，５，６の加算値、Ｃは画素７，８，９の加算値、Ｄは画素１０，１１，１２の加算値、Ｅは画素１３，１４，１５の加算値、Ｆは画素１６，１７，１８の加算値を示す。この例では、レジスタ群２は加算機能付きの２個のレジスタＡＸ，ＤＸと加算機能を有さない２個のレジスタＢＸ，ＣＸを備え、初期化された状態では、加算機能付きのレジスタＡＸ，ＤＸのデータはクリアされている。
【００３１】
図３で説明した順序で画素１，２，３の値を順次取り込んでレジスタＡＸに加算して行き、１列（３画素）の加算を完了して、次の列（４画素目）に移る前に、レジスタＡＸのデータＡをレジスタＢＸに転送しておき、レジスタＡＸは初期化する。
【００３２】
次に、画素４，５，６の値を順次取り込んでレジスタＡＸに加算して行き、２列目の加算を完了して、次の列（７画素目）に移る前に、レジスタＡＸのデータＢをレジスタＣＸに転送しておき、レジスタＡＸは初期化する。
【００３３】
さらに、画素７，８，９の値を順次取り込んでレジスタＡＸに加算している間に、レジスタＢＸのデータＡとレジスタＣＸのデータＢを読み出して、レジスタＤＸに（Ａ＋Ｂ）のデータを求めておく。レジスタＤＸによる加算には時間的余裕が十分にあるので、レジスタＤＸの演算速度はレジスタＡＸの演算速度よりも遅くても構わない。レジスタＡＸが３列目の加算を完了して、次の列（１０画素目）に移る前に、フィルタ処理回路３でレジスタＡＸのデータＣとレジスタＤＸのデータ（Ａ＋Ｂ）を加算して、その加算結果ＡＮＳ１＝Ａ＋Ｂ＋Ｃを中心画素５に対応するアドレスのフィルタ処理後のデータとして出力部４に保持する。そして、レジスタＡＸのデータＣをレジスタＢＸに上書き後、レジスタＡＸは初期化する。
【００３４】
以下、同様の動作を繰り返すことにより、レジスタＡＸ（請求項６の第１のレジスタ）は図８（ロ）に示すように、３画素毎の加算値Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、…を求め、レジスタＢＸ（請求項６の第２のレジスタ）は図８（ハ）に示すように、レジスタＡＸで求めた３画素毎の加算値Ａ、Ｃ、Ｅ、…を６画素毎に保存し、レジスタＣＸ（請求項６の第３のレジスタ）は図８（ニ）に示すように、レジスタＡＸで求めた３画素毎の加算値Ｂ、Ｄ、Ｆ、…を６画素毎に保存し、レジスタＤＸ（請求項６の第４のレジスタ）は図８（ホ）に示すように、レジスタＢＸに保存された２列前（又は１列前）の３画素の加算値とレジスタＣＸに保存された１列前（又は２列前）の３画素の加算値とをレジスタＡＸにより最新の３画素の加算値が得られるまでの間に計算しておくことになる。そして、レジスタＡＸで求められた最新の３画素のデータＣ、Ｄ、Ｅ、…とレジスタＤＸに求められた１列前と２列前の３画素ずつ計６画素分の加算データ（Ａ＋Ｂ）、（Ｂ＋Ｃ）、（Ｃ＋Ｄ）、…をそれぞれフィルタ処理回路３で加算することにより、図８（ヘ）に示すように、加算結果ＡＮＳ１＝Ａ＋Ｂ＋Ｃ、ＡＮＳ２＝Ｂ＋Ｃ＋Ｄ、ＡＮＳ３＝Ｃ＋Ｄ＋Ｅ、…をそれぞれ中心画素５，８，１１，…に対応するアドレスのフィルタ処理後のデータとして出力部４に保持することができる。
【００３５】
この図８に示した順次処理方式によれば、レジスタ群２は高速の加算機能を有する１個のレジスタＡＸと、加算機能を持たない２個のレジスタＢＸ，ＣＸと、低速の加算機能を有する１個のレジスタＤＸとで構成することができ、回路構成が比較的小規模で、且つタイミングの要求も図７の順次処理方式ほど厳しくはなく、安価に実現することができる。
【００３６】
以上の説明では、簡単化のために、フィルタ処理回路３による積和演算の重み付け定数が全て１の場合について説明したが、図６、図７、図８のいずれの場合にも、加算機能を有するレジスタＡＸの前段に定数乗算器を挿入することにより、任意の重み付け定数を用いた積和演算を実現することができる。定数乗算器で用いる定数が２又は１／２のべき乗であれば、定数乗算器は左シフト又は右シフトを行うためのシフトレジスタでも構わない。
【００３７】
図９は積和演算のための定数を１画素毎に逐次設定する方式の説明図である。例えば、図９（イ）に示すように、画素値が｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ｝よりなる３×３画素の領域について、それぞれ定数Δｘ＝｛−１，０，１，−２，０，２，−１，０，１｝をマトリクス演算して、Ｘ＝−ａ＋ｃ−２ｄ＋２ｆ−ｇ＋ｉを演算しようとする場合、アドレス生成データ取込み部１により次々に取り込まれる画素値の各々に対して乗算すべき定数は、決まった順番でサイクリックに変化するので、乗算のたびに、その都度、必要な定数を設定する。
【００３８】
ここで、１列目の画素のそれぞれに乗算される定数の組み合わせと、２列目の画素のそれぞれに乗算される定数の組み合わせと、３列目の画素のそれぞれに乗算される定数の組み合わせが異なる場合、図６で説明した並列処理による加算手段あるいは図７又は図８で説明した順次処理による加算手段を各列について個別に用意する必要がある。その他の点については、図６〜図８のいずれかで説明した処理方式によって、積和演算の結果が得られる。
【００３９】
図９において、（ロ）はアドレス生成データ取込み部１で用いられるクロックのフェーズであり、０，２，３，…，８の９段階のフェーズをサイクリックに繰り返している。（ハ）はアドレス生成データ取込み部１により生成されたアドレスに従って画像メモリから次々に取り込まれるデータであり、ここでは、（イ）に示す画素値ａ，ｄ，ｇ，ｂ，ｅ，ｈ，ｃ，ｆ，ｉ，ａ’，ｄ’，ｇ’，ｂ’，ｅ’，ｈ’，ｃ’，ｆ’，ｉ’が取り込まれ、さらに、これに続くａ”，ｄ”，ｇ”，ｂ”，ｅ”，ｈ”の画素値が取り込まれて行く様子が描かれている。
【００４０】
これらの画素値は、（ニ−１），（ニ−２），（ニ−３）で示す３列の定数乗算器に順次入力されて行き、３画素ずつずれたタイミングで、定数｛−１，０，１，−２，０，２，−１，０，１｝を次々に乗算されて行く。
【００４１】
まず、（ニ−１）で示す１列目の定数乗算器では、１列目（１画素目）のデータａから定数｛−１，０，１，−２，０，２，−１，０，１｝を次々に乗算して行き、−ａ，−２ｄ，−ｇ，０，０，０，ｃ，２ｆ，ｉ，−ａ’，−２ｄ’，−ｇ’，０，０，０，ｃ’，２ｆ’，ｉ’，−ａ”，−２ｄ”，−ｇ”，０，０，…という演算結果を（ハ）に示す入力画素値に対して１画素ずつ遅れたタイミングで出力する。
【００４２】
次に、（ニ−２）で示す２列目の定数乗算器では、２列目（４画素目）のデータｂから定数｛−１，０，１，−２，０，２，−１，０，１｝を次々に乗算して行き、−ｂ，−２ｅ，−ｈ，０，０，０，ａ’，２ｄ’，ｇ’，−ｂ’，−２ｅ’，−ｈ’，０，０，０，ａ”，２ｄ”，ｇ”，−ｂ”，−２ｅ”，…という演算結果を（ハ）に示す入力画素値に対して１画素ずつ遅れたタイミングで出力する。
【００４３】
次に、（ニ−３）で示す３列目の定数乗算器では、３列目（７画素目）のデータｃから定数｛−１，０，１，−２，０，２，−１，０，１｝を次々に乗算して行き、−ｃ，−２ｆ，−ｉ，０，０，０，ｂ’，２ｅ’，ｈ’，−ｃ’，−２ｆ’，−ｉ’，０，０，０，ｂ”，２ｅ”，…という演算結果を（ハ）に示す入力画素値に対して１画素ずつ遅れたタイミングで出力する。
【００４４】
その後の処理は、図６〜図８のいずれかで説明した処理方式と同様であるが、本実施形態では、３列の定数乗算器の後段に、それぞれ１画素毎に定数乗算結果を加算して行く加算機能付きのレジスタＷＡＸ１，ＷＡＸ２，ＷＡＸ３を設けている。（ホ−１）に示すＷＡＸ１の期間では、１列目の定数乗算器により演算された−ａ−２ｄ−ｇ＋ｃ＋２ｆ＋ｉの加算値を求めており、９画素分の加算を完了した時点で、中心画素ｅについての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ１の出力データとなる。同様に、（ホ−２）に示すＷＡＸ２の期間では、２列目の定数乗算器により演算された−ｂ，−２ｅ−ｈ＋ａ’＋２ｄ’＋ｇ”の加算値を求めており、９画素分の加算を完了した時点で、中心画素ｆについての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ２の出力データとなる。同様に、（ホ−３）に示すＷＡＸ３の期間では、３列目の定数乗算器により演算された−ｃ−２ｆ−ｉ＋ｂ’＋２ｅ’＋ｈ’の加算値を求めており、９画素分の加算を完了した時点で、中心画素ｄ’についての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ３の出力データとなる。なお、各レジスタＷＡＸ１，ＷＡＸ２，ＷＡＸ３は９画素分の加算を完了して、加算結果を読み出した後は、クリアされて、次回の９画素分のデータを加算するためのレジスタＷＡＸ１’，ＷＡＸ２’，ＷＡＸ３’，ＷＡＸ１”，…として繰り返し使用される。
【００４５】
ところで、図９に示した定数設定方式（逐次設定方式）では、１画素毎に次々に異なる乗算定数が３列の定数乗算器に逐次入力されて動作がその都度切り替えられるので、高速度の切り替え処理が要求される。一方、３×３のフィルタ処理の場合、乗算に用いられる定数の数は高々９個までである。そこで、図１０に示す定数設定方式（一括設定方式）では、０，１，−１，２，−２という５個の乗算定数を設定された第１〜第５の定数乗算器を同時に並列的に動作させて、入力画素値をこれら５個の定数乗算器に並列的に入力して、個々の入力画素値に対してそれぞれ５個の定数乗算結果を同時に得ている。そして、必要な乗算結果のみを選択して順次加算することにより、同等の成果を挙げることができる。
【００４６】
図１０において、（ロ）はアドレス生成データ取込み部１で用いられるクロックのフェーズであり、０，２，３，…，８の９段階のフェーズをサイクリックに繰り返している。（ハ）はアドレス生成データ取込み部１により生成されたアドレスに従って画像メモリから次々に取り込まれるデータであり、ここでは、（イ）に示す画素値ａ，ｄ，ｇ，ｂ，ｅ，ｈ，ｃ，ｆ，ｉ，ａ’，ｄ’，ｇ’，ｂ’，ｅ’，ｈ’，ｃ’，ｆ’，ｉ’が取り込まれ、さらに、これに続くａ”，ｄ”，ｇ”，ｂ”，ｅ”，ｈ”の画素値が取り込まれて行く様子が描かれている。
【００４７】
これらの画素値は、（ニ−１），（ニ−２），（ニ−３），（ニ−４），（ニ−５）で示す第１〜第５の定数乗算器に順次入力されて行き、それぞれ定数０，１，−１，２，−２を乗算されて行く。なお、（ニ−１）で示す第１の定数乗算器は常に出力が０であるから無くても良く、また、（ニ−２）で示す第２の定数乗算器は常に入出力が同じ値であるから、これも無くても良く、単に（ハ）のデータを１クロック遅延させるラッチ回路で代用できる。
【００４８】
本実施形態では、第１〜第５の定数乗算器の後段に、５対３のスイッチ手段を介して、１画素毎に定数乗算結果を選択して加算して行く加算機能付きのレジスタＷＡＸ１，ＷＡＸ２，ＷＡＸ３を設けている。（ホ−１）に示すＷＡＸ１の期間では、第３、第５、第３、第１、第１、第１、第２、第４、第２の定数乗算器の出力を順次選択して加算することにより−ａ−２ｄ−ｇ＋ｃ＋２ｆ＋ｉの加算値を求めており、９画素分の加算を完了した時点で、中心画素ｅについての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ１の出力データとなる。同様に、（ホ−２）に示すＷＡＸ２の期間では、ＷＡＸ１の期間よりも３画素分遅れたタイミングで第３、第５、第３、第１、第１、第１、第２、第４、第２の定数乗算器の出力を順次選択して加算することにより−ｂ−２ｅ−ｈ＋ａ’＋２ｄ’＋ｇ”の加算値を求めており、９画素分の加算を完了した時点で、中心画素ｆについての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ２の出力データとなる。同様に、（ホ−３）に示すＷＡＸ３の期間では、ＷＡＸ１の期間よりも６画素分遅れたタイミングで第３、第５、第３、第１、第１、第１、第２、第４、第２の定数乗算器の出力を順次選択して加算することにより−ｃ−２ｆ−ｉ＋ｂ’＋２ｅ’＋ｈ’の加算値を求めており、９画素分の加算を完了した時点で、中心画素ｄ’についての演算処理後のデータとして出力する。これが（ヘ）に示すＷＡＸ３の出力データとなる。なお、各レジスタＷＡＸ１，ＷＡＸ２，ＷＡＸ３は９画素分の加算を完了して、加算結果を読み出した後は、クリアされて、次回の９画素分のデータを加算するためのレジスタＷＡＸ１’，ＷＡＸ２’，ＷＡＸ３’，ＷＡＸ１”，…として繰り返し使用される。
【００４９】
【発明の効果】
請求項１又は３の発明によれば、フィルタ処理に要する画像メモリ読み出しのためのアドレス設定とデータの読み込み及び演算処理をハードウェアで処理することでＣＰＵを長時間拘束することがなく、ＣＰＵに掛かる負担も小さくなり、ＣＰＵの機能を他の処理に解放できる。また、請求項２の発明によれば、フィルタ処理のためのデータの読み込み順序を連続した処理が実行できるようなアドレス展開とすることで、より高速に演算を実行できる。
【００５０】
請求項４の発明によれば、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての演算結果を蓄積しておくレジスタを縦画素列毎に備えたことにより、複数の縦画素列にわたる演算処理を並列処理により高速度で実行できるという効果がある。
【００５１】
請求項５の発明によれば、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての演算結果を蓄積しておく１つのレジスタを順次処理により各縦画素列で繰り返し使用するようにしたから、請求項４の並列処理に比べて、回路構成を簡単化できるという利点がある。
【００５２】
請求項６の発明によれば、１つの縦画素列を構成する複数データの取り込み毎に加算または積和演算処理を行い、１つの縦画素列についての演算結果を蓄積しておく１つのレジスタを順次処理により各縦画素列で繰り返し使用すると共に、その演算結果を１つの縦画素列置きに交互に保存しておく一対のレジスタを設けたから、該一対のレジスタの出力に基づいて過去２つの縦画素列分の演算結果を統合する処理を、最新の１つの縦画素列についての演算結果が得られるまでの時間で実行すれば良く、請求項５の順次処理に比べて処理時間に余裕ができるので、設計が容易になるという利点がある。
【００５３】
請求項７の発明によれば、積和演算のための定数乗算器に設定される定数を各入力データ毎に次々に切り替えるようにしたので、定数乗算器の使用個数を少なくできる利点がある。
【００５４】
請求項８の発明によれば、積和演算のために使用する全ての定数についてそれぞれ個別に設けた複数の定数乗算器を並列的に動作させて、必要な定数乗算器の出力のみを選択して加算して行くようにしたので、定数乗算器に設定される定数を入力データ毎に高速に切り替える必要がなく、定数乗算器の動作が安定する利点がある。
【図面の簡単な説明】
【図１】本発明の画像処理方法による走査手順を示す第１の説明図である。
【図２】本発明の画像処理方法による走査手順を示す第２の説明図である。
【図３】本発明の画像処理方法によるフィルタ処理の横方向への繰り返し手順を示す説明図である。
【図４】本発明の画像処理方法によるフィルタ処理の横方向及び縦方向への繰り返し手順を示す説明図である。
【図５】本発明の画像処理方法に用いるハードウェア構成例を示すブロック図である。
【図６】請求項４の並列処理方式における各レジスタの様子を示す説明図である。
【図７】請求項５の順次処理方式における各レジスタの様子を示す説明図である。
【図８】請求項６の順次処理方式における各レジスタの様子を示す説明図である。
【図９】請求項７の定数逐次設定方式による定数乗算動作を示す説明図である。
【図１０】請求項８の定数一括設定方式による定数乗算動作を示す説明図である。
【符号の説明】
１    アドレス生成データ取込み部
２    レジスタ群
３    フィルタ処理回路
４    出力部
【図１】
0003817987.tif 000003
【図２】
0003817987.tif 000004
【図３】
0003817987.tif 000005
【図４】
0003817987.tif 000006
【図５】
0003817987.tif 000007
【図６】
0003817987.tif 000008
【図７】
0003817987.tif 000009
【図８】
0003817987.tif 000010
【図９】
0003817987.tif 000011
【図１０】
0003817987.tif 000012