(57)【特許請求の範囲】
【請求項１】
画像データに対してフィルタ処理を施す画像処理装置であって、
前記画像データを記憶する第１の記憶手段と、
前記画像データを構成する所定の範囲のブロック画像を記憶する少なくとも２つの領域を有する第２の記憶手段と、
前記第１の記憶手段から前記ブロック画像を順次読み出して前記第２の記憶手段に書き込む書き込み手段と、
前記第２の記憶手段の２つの領域の両方から、もしくは、いずれか一方から、フィルタ演算の対象となる連続する所定数の画素群を順次読み出して、前記フィルタ処理を行うフィルタ処理手段と、を有し、
前記書き込み手段は、
前記フィルタ処理手段により前記２つの領域のいずれか一方から前記画素群が読み出されている間に、他方の前記領域に前記ブロック画像を書き込み、
前記書き込み手段はさらに、
読み出した前記ブロック画像が前記画像データの左端部の画素を含むか否かを判定し、
前記画像データの左端部の画素を含むと判定した場合、読み出した前記ブロック画像をいずれかの一方の前記領域に書き込み、前記ブロック画像に含まれる前記左端部の画素をコピーして他方の前記領域に書き込むこと、
を特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置であって、
前記書き込み手段は、
前記画像データの右端部の画素がいずれか一方の前記領域に書き込まれている場合には、前記ブロック画像に含まれる前記右端部の画素をコピーして他方の前記領域に書き込むこと、
を特徴とする画像処理装置。
【請求項３】
請求項１又は２に記載の画像処理装置であって、
前記フィルタ処理手段は、
前記書き込み手段により前記左端部の画素が書き込まれた後、前記２つの領域の両方から前記画素群を読み出して前記フィルタ処理を開始すること、
を特徴とする画像処理装置。
【請求項４】
画像データに対してフィルタ処理を施す画像処理装置における画像処理方法であって、
前記画像処理装置は、
前記画像データを記憶する第１の記憶手段と、
前記画像データを構成する所定の範囲のブロック画像を記憶する少なくとも２つの領域を有する第２の記憶手段と、を有し、
前記第１の記憶手段から前記ブロック画像を順次読み出して前記第２の記憶手段に書き込む書き込みステップと、
前記第２の記憶手段の２つの領域の両方から、もしくは、いずれか一方から、フィルタ演算の対象となる連続する所定数の画素群を順次読み出して、前記フィルタ処理を行うフィルタ処理ステップと、を行い、
前記書き込みステップは、
前記フィルタ処理ステップにより前記２つの領域のいずれか一方から前記画素群が読み出されている間に、他方の前記領域に前記ブロック画像を書き込み、
前記書き込みステップはさらに、
読み出した前記ブロック画像が前記画像データの左端部の画素を含むか否かを判定し、
前記画像データの左端部の画素を含むと判定した場合、読み出した前記ブロック画像をいずれかの一方の前記領域に書き込み、前記ブロック画像に含まれる前記左端部の画素をコピーして他方の前記領域に書き込むこと、
を特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を構成する画素に対してフィルタ演算を行う画像処理装置、画像処理方法に関し、特に、画像の端部の画素に対するフィルタ演算を行う技術に関する。
【背景技術】
【０００２】
従来から、画像に所定の効果を施すためのフィルタ演算が知られている。また、フィルタ演算により画像の端部に発生するノイズなどを軽減するための技術が知られている。例えば、フィルタ演算を行う対象の画像の周辺に、画像端部の画像をコピーしたり、画像端部の画像をミラーリングしたり、固定値の画素からなる画像を配置してから、フィルタ演算を行う。
【０００３】
例えば、特許文献１には、画像メモリから列ごとに読み出した画像データを、複数のラインバッファメモリに格納し、フィルタ演算に必要な画像データを、複数のラインバッファメモリから、順次読み出してフィルタ演算を行う構成が開示されている。そして、画像端部のフィルタ演算を行う場合には、画像端部の列の画像データを繰り返し画像メモリから読み出して、複数のラインバッファメモリに格納することが開示されている。
【０００４】
【特許文献１】特開２００６−９４１６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、画像メモリからの画像の読み出しは、システムの構成上の制約などから、所定の読み出し幅（例えば、１６画素）で行う必要がある場合がある。
【０００６】
そのため、ＦＩＦＯメモリ（例えば、ラインバッファメモリ）の容量を、少なくとも所定の読み出し幅の２倍以上にしておかないと、画像メモリからＦＩＦＯメモリへ画像を書き込む処理と、ＦＩＦＯメモリから画像を読み出す処理とが競合する。すなわち、ＦＩＦＯメモリに書き込まれた画像が全て読み出されるまで、次の画像の書き込みを行うことができない。その結果、フィルタ演算が中断することととなり、演算速度が低下する。
【０００７】
また、画像端部のフィルタ演算においては、画像端部のデータを、例えば、コピーして使用する必要がある。しかし、コピーを作成する度に画像メモリにアクセスを行うと、アクセス回数が増える。
【０００８】
特許文献１では、上記の２点については考慮していない。
【０００９】
本発明は、端部を含む画像データのフィルタ演算において、ＦＩＦＯメモリの書き込みおよび読み出しの制御を容易に行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するための本発明の一態様は、画像データに対してフィルタ処理を施す画像処理装置であって、前記画像データを記憶する第１の記憶手段と、前記画像データを構成する所定の範囲のブロック画像を記憶する少なくとも２つの領域を有する第２の記憶手段と、前記第１の記憶手段から前記ブロック画像を順次読み出して前記第２の記憶手段に書き込む書き込み手段と、前記第２の記憶手段の２つの領域の両方から、もしくは、いずれか一方から、フィルタ演算の対象となる連続する所定数の画素群を順次読み出して、前記フィルタ処理を行うフィルタ処理手段と、を有し、前記書き込み手段は、前記フィルタ処理手段により前記２つの領域のいずれか一方から前記画素群が読み出されている間に、他方の前記領域に前記ブロック画像を書き込むこと、を特徴とする。
【００１１】
また、上記の画像処理装置であって、前記書き込み手段は、読み出した前記ブロック画像が前記画像データの端部の画素を含むか否かを判定し、前記画像データの端部の画素を含むと判定した場合、読み出した前記ブロック画像に含まれる前記端部の画素をコピーして、前記第２の記憶手段に書き込むようにすることができる。
【００１２】
また、上記の画像処理装置であって、前記書き込み手段は、読み出した前記ブロック画像が前記画像データの左端部の画素を含むと判定した場合、読み出した前記ブロック画像をいずれかの一方の前記領域に書き込み、前記ブロック画像に含まれる前記左端部の画素をコピーして他方の前記領域に書き込むようにすることができる。
を特徴とする画像処理装置。
【００１３】
また、上記の画像処理装置であって、前記フィルタ処理手段は、前記書き込み手段により前記左端部の画素が書き込まれた後、前記２つの領域の両方から前記画素群を読み出して前記フィルタ処理を開始するようにすることができる。
を特徴とする画像処理装置。
【００１４】
また、上記の課題を解決するための本発明の他の態様は、画像データに対してフィルタ処理を施す画像処理装置における画像処理方法であって、前記画像処理装置は、前記画像データを記憶する第１の記憶手段と、前記画像データを構成する所定の範囲のブロック画像を記憶する少なくとも２つの領域を有する第２の記憶手段と、を有し、前記第１の記憶手段から前記ブロック画像を順次読み出して前記第２の記憶手段に書き込む書き込みステップと、前記第２の記憶手段の２つの領域の両方から、もしくは、いずれか一方から、フィルタ演算の対象となる連続する所定数の画素群を順次読み出して、前記フィルタ処理を行うフィルタ処理ステップと、を行い、前記書き込みステップは、前記フィルタ処理ステップにより前記２つの領域のいずれか一方から前記画素群が読み出されている間に、他方の前記領域に前記ブロック画像を書き込むこと、を特徴とする。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施形態について、図面を参照して説明する。
【００１６】
先ず、図１〜４を参照して、本実施形態において実行されるブロック処理の概要を説明する。
【００１７】
プリンタ、イメージスキャナ、コピー機などの画像処理装置において、ＲＡＭ（Random Access Memory）などの画像メモリに格納された原画像（例えば、１ページ分の画像データ）にフィルタなどの画像処理を施す方法の１つとして、原画像に対してブロックと呼ばれる所定単位の画像データごとにフィルタ演算を行う方法が知られている。このような方法は、「ブロック処理」と呼ばれている。ここで、ブロック画像を構成する画素データを格納する記憶装置を、「ブロックメモリ」と呼ばれている。ブロックメモリには、例えば、ＳＲＡＭ（Static Random Access Memory）が用いられる。
【００１８】
図１は、フィルタ演算の結果（以下、「出力画素データ」と呼ぶ。）を得る対象の画素（以下、「注目画素」と呼ぶ。）の処理順序を説明するための図である。
【００１９】
図１（Ａ）〜（Ｃ）に示すように、原画像１０は、主走査幅Ｗ（単位：画素）×副走査幅Ｈ（単位：画素）の面積を有する１ページ分の画像である。図１（Ｄ）に示すように、フィルタ演算は、原画像１０上の所定の領域１２（主走査幅Ｗ、副走査幅Ｌ）ごとに、領域１４（主走査幅Ｗ、副走査幅Ｌ−２Ｄ）に含まれる画素について実行される。注目画素の処理順序は、画素列ごとに副走査方向に進み、画素列の最後の画素まで進むと、隣接する主走査方向の画素列の最初の画素に進む。すなわち、副走査方向が主走査方向より優先される。
【００２０】
原画像１０の全画素についてフィルタ演算が施される必要があるため、領域１２は、図１（Ａ）〜（Ｃ）の遷移に示すように、副走査幅２Ｄ分が重なるように副走査方向に移動されて決定される。領域１３（主走査幅Ｗ、副走査幅Ｄ）は、領域１４の上端および下端の注目画素のフィルタ演算に必要な画素が含まれる領域である。なお、後述するように、原画像１０は、ＳＤＲＡＭ（Synchronous DRAM）やＤＤＲ−ＳＤＲＡＭ（Double Data Rate SDRAM）などの大規模な画像メモリに格納されている。また、フィルタ演算は、原画像１０から切り出されて、ＳＲＡＭなどのブロックメモリに格納されたブロック画像１６について実行される。
【００２１】
図２は、ブロック画像をブロックメモリへ格納する方法を説明するための図である。図２（Ａ）は、フィルタの構成を示している。図２（Ｂ）、（Ｃ）は、原画像１０上の領域１２（図１参照）を詳細に示している。図２（Ｄ）は、ブロックメモリの構成を示している。以下、主走査幅ｎおよび副走査幅ｍがそれぞれ５画素のフィルタをフィルタ演算に用いる場合を例に挙げて説明する。
【００２２】
図２（Ａ）に示すように、注目画素２０は、フィルタの中心に位置する。そして、注目画素２０の出力画素データは、積和演算および割算を用いた公知のフィルタ演算方法により算出される。具体的には、フィルタの各画素位置にはそれぞれフィルタ係数が対応付けられている。そして、フィルタ演算の対象となる各画素データと、それらの位置に対応する位置のフィルタ係数とをそれぞれ乗じ、それらの乗算結果の合計値を所定の値で割ることにより、注目画素２０の出力画素データが得られる。
【００２３】
ここで、フィルタの副走査幅ｍ＝５の場合、フィルタ演算を行うために、注目画素の位置する行の上下にそれぞれ２行分の画素が必要となる。そのため、領域１３の副走査幅Ｄは、２となる。副走査幅Ｄは、「（フィルタの副走査幅ｍ−１）／２」で求めることができる。例えば、フィルタの副走査幅ｍ＝７の場合、Ｄ＝３となる。
【００２４】
また、領域１２の副走査幅Ｌは、最小でフィルタの副走査幅ｍと等しければよいが、ブロックメモリへのコピー回数などの演算効率の観点から、ｍとＬの差分が大きいほどよい。すなわち、Ｄの値は一定なので、副走査幅（Ｌ−２Ｄ）の値がより大きいブロック画像をブロックメモリにコピーしておくことにより、ブロックメモリを使用して、より多くの注目画素を処理できるようになるからである。
【００２５】
上記のフィルタを用いて、図２（Ｂ）に示すように、例えば、フィルタ演算を注目画素１（主走査位置２、副走査位置２）から順に実行する場合、図２（Ｃ）に示すように、画素群ａ〜ｘの各画素データをブロックメモリの対応する位置に予めコピーする。
【００２６】
ブロックメモリは、図２（Ｄ）に示すように、例えば、ビット幅（主走査幅）がフィルタの主走査幅ｎと等しくなるように構成されている。また、セグメント２５（主走査幅ｎ、副走査幅１）が、画素行（ライン）Ｌ０〜１１ごとに、４行ずつ配列された記憶容量となっている。従って、画素行Ｌごとに、最大４セグメント分の画素データがブロックメモリに格納される。
【００２７】
なお、ブロックメモリのビット幅（主走査幅）は、少なくともフィルタの主走査幅ｎ以上であればよい。また、記憶容量（副走査幅）は、少なくとも副走査幅Ｌの２倍以上（画素行Ｌごとに２セグメント以上）であればよい。これは、ブロックメモリへの読み書きはセグメント単位で行われるため、アクセス競合をなくして並列処理をできるようにするためである。すなわち、フィルタ演算により、画素データの読み出しが終了したセグメントには、他のセグメントの画素データの読み出しが行われている間に新たな画素データを原画像からコピーして格納しておくことにより、並列処理をすることができる。
【００２８】
上記のようにしてブロックメモリにブロック画像が格納されると、図３に示すように、フィルタ演算が行われる。なお、図３の注目画素番号１〜２４は、図２（Ｂ）の注目画素番号１〜２４に対応している。
【００２９】
図３（Ａ）は、注目画素１（主走査位置２、副走査位置８）〜注目画素８（主走査位置２、副走査位置３６）のフィルタ演算を行う場合を示している。注目画素１の出力画素データは、セグメント０、４、８、１２、１６の画素データを順に読み出し、各セグメントに含まれる画素データの位置に対応する位置のフィルタ係数を用いた積和演算を行い、その結果を所定の値で割ることで得られる。注目画素２（主走査位置２、副走査位置１２）の出力画素データを得る場合、セグメント４、８、１２、１６、２０の画素データが読み出し対象となる。以降も同様に、副走査方向に４ずつシフトされ、注目画素８の出力画素データを得る場合、セグメント２８、３２、３６、４０、４４が読み出し対象となる。
【００３０】
図３（Ｂ）は、注目画素９（主走査位置３、副走査位置８）〜注目画素１６（主走査位置３、副走査位置３６）のフィルタ演算を行う場合を示している。注目画素９の出力画素データを得る場合、セグメント０と１、４と５、８と９、１２と１３、１６と１７の画素データを順に読み出す。そして、各組の第１番目のセグメントの主走査位置１〜４の画素データと、第２番目のセグメントの主走査位置０の画素データを抽出し、第１番目のセグメントの主走査位置１の画素データが先頭で第２番目のセグメントの主走査位置０の画素データを末尾とする、１つのセグメントの画素データとして配列する。そして、それらの配列後の画素データの位置に対応するフィルタ係数を用いた積和演算を行い、その結果を所定の値で割ることで注目画素９の出力画素データを得る。注目画素１０（主走査位置３、副走査位置１２）の出力画素データを得る場合、セグメント４と５、８と９、１２と１３、１６と１７、２０と２１の画素データが読み出し対象となる。以降も同様に、副走査方向に４ずつシフトされ、注目画素１６の出力画素データを得る場合、セグメント２８と２９、３２と３３、３６と３７、４０と４１、４４と４５が読み出し対象となる。
【００３１】
図３（Ｃ）は、注目画素１７（主走査位置４、副走査位置８）〜注目画素２４（主走査位置４、副走査位置３６）のフィルタ演算を行う場合を示している。注目画素１７の出力画素データを得る場合、セグメント０と１、４と５、８と９、１２と１３、１６と１７の画素データを順に読み出す。そして、各組の第１番目のセグメントの主走査位置２〜４の画素データと、第２番目のセグメントの主走査位置０〜１の画素データを抽出し、第１番目のセグメントの主走査位置２の画素データが先頭で第２番目のセグメントの主走査位置１の画素データを末尾とする、１つのセグメントの画素データとして配列する。そして、それらの画素データの位置に対応するフィルタ係数を用いた積和演算を行い、その結果を所定の値で割ることで注目画素１７の出力画素データを得る。注目画素１８（主走査位置４、副走査位置１２）の出力画素データを得る場合、セグメント４と５、８と９、１２と１３、１６と１７、２０と２１の画素データが読み出し対象となる。以降も同様に、副走査方向に４ずつシフトされ、注目画素２４の出力画素データを得る場合、セグメント２８と２９、３２と３３、３６と３７、４０と４１、４４と４５が読み出し対象となる。
【００３２】
次に、画像の端部に対して実行されるブロック処理の概要について説明する。
【００３３】
図４に示すように、原画像１０の端部の画素にフィルタ演算を施す場合（例えば、Ａ〜Ｅの位置）、原画像１０の外側の、画素データがない領域がフィルタ演算の対象範囲に含まれる。この場合は、画素データがない領域について、画素データがあるものとして扱う。例えば、白色を表す固定値の画素データや、端部の画素データのコピーをブロックメモリに格納する。このように、ダミーの画素データをブロックメモリに格納することで、注目画素の位置にかかわらずフィルタ演算を行うことができる。具体的な処理内容については後述する。
【００３４】
以上、本実施形態において実行されるブロック処理の概要を説明した。
【００３５】
次に、上記のブロック処理を実現する画像処理装置の一例について説明する。図５は、本実施形態が適用された画像処理回路の構成の概略を示すブロック図である。
【００３６】
画像処理回路１００は、上述したブロック処理を行うように設計および製造された専用回路であり、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）などにより実現される。画像処理回路１００は、プリンタ、イメージスキャナ、コピー機などの画像処理装置に搭載される。以下、モノクロの画像データについてブロック処理を行うものとして説明する。もちろん、カラーの画像データを処理する場合は、例えば、ＲＧＢ各色の画像データごとにブロック処理を行えばよい。
【００３７】
画像処理回路１００は、画像入力制御回路１１０と、ＦＩＦＯ制御回路１１５と、アドレス生成回路１２０と、メモリコントローラ１２５と、画像メモリ１３０と、データバッファ１３５と、アドレス生成回路１４０と、ＳＲＡＭ制御回路１４５と、ＳＲＡＭ（ブロックメモリ）１５０と、フィルタ演算回路１５５と、これらを接続する信号線とから構成される。なお、メモリコントローラ１２５および画像メモリ１３０は、ＡＳＩＣの外に設けるようにしてもよい。
【００３８】
ここで、画像メモリ１３０からの画像の読み出しは、例えば、１６画素単位で行われるものとする。また、ＳＲＡＭ１５０のビット幅（主走査幅）は、例えば、８画素であり、ＳＲＡＭ１５０への画像の書き込みと、ＳＲＡＭ１５０からの画像の読み出しは、８画素単位で行われるものとする。
【００３９】
画像入力制御回路１１０は、フィルタ演算対象の画像のＳＲＡＭ１５０への書き込み要求を、ＦＩＦＯ制御回路１１５に行う。すなわち、ＳＲＡＭ１５０へフィルタ演算対象の画像を書き込むことができるか否かをＦＩＦＯ制御回路１１５に問い合わせる。
【００４０】
また、画像入力制御回路１１０は、フィルタ演算対象の画像の書き込み許可をＦＩＦＯ制御回路１１５から受け取ると、アドレス生成回路１２０に、フィルタ演算対象の画像の読み出しアドレスの生成を要求する。また、メモリコントローラ１２５に、フィルタ演算対象の画像の読み出しを要求する。
【００４１】
また、画像入力制御回路１１０は、フィルタ演算対象の画像の書き込み許可をＦＩＦＯ制御回路１１５から受け取ると、アドレス生成回路１４０に、フィルタ演算対象の画像の書き込みアドレスの生成を要求する。
【００４２】
ＦＩＦＯ制御回路１１５は、ＳＲＡＭ１５０に、フィルタ演算対象の画像を書き込むタイミング、および、フィルタ演算対象の画像をフィルタ演算回路１５５に出力するタイミングを制御する。画像入力制御回路１１０からフィルタ演算対象の画像の書き込み要求があったときに、フィルタ演算対象の画像を書き込むことができるタイミングであれば、書き込み許可を画像入力制御回路１１０に出力する。また、フィルタ演算回路１５５からフィルタ演算対象の画像の読み出し要求があったときに、フィルタ演算対象の画像を読み出すことができるタイミングであれば、読み出し許可をフィルタ演算回路１５５に出力する。
【００４３】
アドレス生成回路１２０は、画像入力制御回路１１０からアドレス生成要求を受け取ると、フィルタ演算対象の画像の読み出しアドレスを生成する。そして、読み出しアドレスをメモリコントローラ１２５に出力する。
【００４４】
メモリコントローラ１２５は、画像メモリ１３０に対するデータの書き込みや読み出しなどのアクセスを制御する。メモリコントローラ１２５は、画像入力制御回路１１０から読み出し要求を受け付け、アドレス生成回路１２０から読み出しアドレスを受け付けて、読み出しアドレスから１６画素分のフィルタ演算対象の画像を、画像メモリ１３０から読み出す。そして、読み出した画像をデータバッファ１３５に格納する。
【００４５】
画像メモリ１３０は、原画像データおよびフィルタ演算後の画像データを格納するための記憶装置である。画像メモリ１００は、例えば、ＳＤＲＡＭ（Synchronous DRAM）やＤＤＲ−ＳＤＲＡＭ（Double Data Rate SDRAM）などの大規模なメモリで構成される。
【００４６】
データバッファ１３５は、メモリコントローラ１２５から出力された１６画素分の画像を格納する。
【００４７】
アドレス生成回路１４０は、画像入力制御回路１１０からアドレス生成要求を受け取ると、フィルタ演算対象の画像の書き込みアドレスを生成する。そして、書き込みアドレスをＳＲＡＭ制御回路１４５に出力する。
【００４８】
ＳＲＡＭ制御回路１４５は、ＳＲＡＭ１５０に対するデータの書き込みや読み出しなどのアクセスを制御する。ＳＲＡＭ制御回路１４５は、データバッファ１３５から８画素単位でフィルタ演算対象の画像を取り出し、アドレス生成回路１４０から受け取った書き込みアドレスを指定して、ＳＲＡＭ１４５に書き込む。
【００４９】
また、ＳＲＡＭ制御回路１４５は、フィルタ演算回路１５５から指定されたアドレスの画素を、ＳＲＡＭ１４５から読み出す。そして、読み出した画素をフィルタ演算回路１５５に出力する。ここで、ＳＲＡＭ１４５からの読み出しは８画素単位なので、ＳＲＡＭ制御回路１４５は、フィルタ演算回路１５５から指定されたアドレスの画素を含む８画素を読み出し、指定されたアドレスの画素を抽出してフィルタ演算回路１５５に出力する。フィルタの主走査幅ｎ＝５である場合、指定されたアドレスの画素から連続する５画素を抽出して出力する。連続する５画素が２つのセグメントに跨る場合は、８画素単位の読み出しを２回行い、それぞれのセグメントからフィルタ演算に必要な画素を抽出し、連続する５画素の順序に並べて出力する。
【００５０】
ＳＲＡＭ１５０は、ブロックメモリであり、画像メモリ１３０に格納された原画像データから切り出されたブロック画像を格納する。ＳＲＡＭ１５０は、例えば、デュアルポートＲＡＭであってもよい。ＳＲＡＭ１５０は、例えば、図１０〜１３に示すように、ビット幅（主走査幅）がフィルタの主走査幅５より大きい８画素分である。また、セグメント２５（主走査幅８、副走査幅１）が、画素行（ライン）Ｌ０〜１１ごとに、４行ずつ配列された記憶容量である。従って、画素行Ｌごとに、最大４セグメント分の画素データがブロックメモリに格納される。
【００５１】
フィルタ演算回路１５５は、フィルタ演算対象の画像のＳＲＡＭ１５０からの読み出し要求を、ＦＩＦＯ制御回路１１５に行う。すなわち、ＳＲＡＭ１５０からフィルタ演算対象の画像を読み出すことができるか否かをＦＩＦＯ制御回路１１５に問い合わせる。
【００５２】
また、フィルタ演算回路１５５は、フィルタ演算対象の画像の読み出し許可をＦＩＦＯ制御回路１１５から受け取ると、ＳＲＡＭ制御回路１４５に、フィルタ演算対象の画素のアドレスを出力する。そして、ＳＲＡＭ制御回路１４５が読み出した画素を受け取ると、受け取った画素を用いてフィルタ演算を行う。具体的には、図３で説明したように、抽出された画素データとフィルタ係数を用いて積和演算を行い、積和演算の結果に対して割り算を行って注目画素の出力画素データを出力する。出力画素データは、例えば、画像メモリ１３０上に格納することができる。
【００５３】
次に、図６〜１３を参照して、上記の画像処理回路により実現されるブロック処理について具体的に説明する。説明を分かり易くするため、図９〜１３の説明図を参照しながら、図６〜８のフロー図の処理を説明する。なお、以下の説明では、フィルタ演算には、主走査幅ｎおよび副走査幅ｍがそれぞれ５画素のフィルタが用いられる。
【００５４】
図９は、フィルタ演算の対象となる原画像と、フィルタ演算の対象となる画素の配置の関係を説明するための図である。本図では、主走査幅Ｗ＝４８の原画像を例に挙げている。副走査幅Ｌは任意である。
【００５５】
本実施形態では、原画像１０の端部のフィルタ演算を行うため、端部の画素のコピーが原画像１０の周辺に配置されるものとして、ＳＲＡＭ１５０に画素が書き込まれる。結果的には、図９に示すように画素が配置された画像に対してフィルタ演算を行うこととなる。
【００５６】
具体的には、本図に示すように、主走査位置ｘ＝０の各画素のコピーが、ｘ＝−１、−２に配置される。また、ｘ＝４７の各画素のコピーが、ｘ＝４８、４９に配置される。また、副走査位置ｙ＝０（Ｌ０）の各画素のコピーが、ｙ＝−１（Ｌ−１）、−２（Ｌ−２）に配置される。また、（ｘ＝０、ｙ＝−２）の画素のコピーが、（ｘ＝−１、ｙ＝−２）、（ｘ＝−２、ｙ＝−２）に配置される。また、（ｘ＝０、ｙ＝−１）の画素のコピーが、（ｘ＝−１、ｙ＝−１）、（ｘ＝−２、ｙ＝−１）に配置される。また、（ｘ＝４７、ｙ＝−２）の画素のコピーが、（ｘ＝４８、ｙ＝−２）、（ｘ＝４９、ｙ＝−２）に配置される。また、（ｘ＝４７、ｙ＝−１）の画素のコピーが、（ｘ＝４８、ｙ＝−１）、（ｘ＝４９、ｙ＝−１）に配置される。なお、原画像１０の下端については、上端と同様にコピーを配置してもよいし、予め原画像１０のデータにＤ行分の余分な画素を挿入しておいてもよい。
【００５７】
図６は、画像の左端部のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図である。ここでは、例えば、図９に示す、画像の上端部を含む領域１４ａ（ｘ＝０〜４７、ｙ＝０〜７）、もしくは、画像の上端部を含まない領域１４ｂ（ｘ＝０〜４７、ｙ＝８〜１５）についてフィルタ演算が行われる場合を説明する。本フローは、領域１４ａもしくは１４ｂについてフィルタ演算を行うように、ＣＰＵなどにより指示された後、開始される。
【００５８】
まず、ＳＲＡＭ１５０への書き込み対象の画像が、原画像１０の上端のラインを含んでいるか否かが判定される（Ｓ１０１０）。例えば、フィルタ演算対象の画像が領域１４ａである場合、ｙ＝０の画素、すなわちＬ０を含んでいるため、上端のラインを含んでいると判定される。また、フィルタ演算対象の画像が領域１４ｂである場合、Ｌ０を含んでいないため、上端のラインを含んでいないと判定される。そして、上端のラインを含んでいると判定された場合（Ｓ１０１０でＹＥＳ）、Ｓ１１００に進む。一方、上端のラインを含んでいないと判定された場合（Ｓ１０１０でＮＯ）、Ｓ１２００に進む。
【００５９】
ＳＲＡＭ１５０への書き込み対象の画像が、原画像１０の上端のラインを含んでいると判定された場合（Ｓ１０１０でＹＥＳ）、画像メモリ１３０から読み出す画像の読み出しライン位置ＲＬが０に設定され、読み出した画像のＳＲＡＭ１５０の書き込みライン位置ＷＬが０に設定される（Ｓ１１００）。そして、Ｓ１１１０に進む。なお、ＲＬは、画像メモリ１３０から読み出す画像、例えば、領域１４ａや領域１４ｂ内におけるライン位置を示している。また、ＷＬは、ＳＲＡＭ１５０のＬ０〜１１に対応する領域を示している。
【００６０】
Ｓ１１１０では、ＲＬ行目の１６画素が画像メモリ１３０から読み出され、データバッファ１３５に格納される。例えば、ＲＬ＝０のとき、領域１４ａの画素ａ０〜１５が読み出され、データバッファ１３５に格納される。同様に読み出しが繰り返され、ＲＬ＝１のとき、画素ｂ０〜１５、・・・ＲＬ＝９のとき、画素ｊ０〜１５がデータバッファ１３５に格納される。
【００６１】
Ｓ１１２０では、データバッファ１３５から８画素単位で画像が読み出され、ＳＲＡＭ１５０のＷＬ行目の領域内に書き込まれる。
【００６２】
例えば、図１０（Ａ）では、ＲＬ＝０、ＷＬ＝０のとき、領域１４ａの画素ａ０〜７が、ＳＲＡＭ１５０の領域Ｌ０のセグメント０（ｘ＝０〜７、ｙ＝０）に格納される。また、画素ａ８〜１５がセグメント１（ｘ＝０〜７、ｙ＝１）に格納される。ＲＬ＝０、ＷＬ＝１のとき、画素ａ０〜７が、領域Ｌ１のセグメント４（ｘ＝０〜７、ｙ＝４）に、画素ａ８〜１５がセグメント５（ｘ＝０〜７、ｙ＝５）に格納される。同様に書き込みが繰り返され、ＲＬ＝９、ＷＬ＝１１のとき、画素ｊ０〜７が、領域Ｌ１１のセグメント４４（ｘ＝０〜７、ｙ＝４４）に、画素ｊ８〜１５がセグメント４５（ｘ＝０〜７、ｙ＝４５）に格納される。
【００６３】
Ｓ１１４０では、データバッファ１３５に格納された１６画素のうち、原画像１０の左端に位置する画素のコピーが、ダミー画素として、８画素分ＳＲＡＭ１５０のＷＬ行目の領域内に書き込まれる。例えば、ＲＬ＝０、ＷＬ＝０のとき、画素ａ０が、図１０（Ａ）に示すように、領域Ｌ０のセグメント３（ｘ＝０〜７、ｙ＝３）に格納される。また、ＲＬ＝０、ＷＬ＝１のとき、画素ａ０が領域Ｌ１のセグメント７（ｘ＝０〜７、ｙ＝７）に格納される。同様にコピーが繰り返され、ＲＬ＝９、ＷＬ＝１１のとき、画素ｊ０が領域Ｌ１１のセグメント４７（ｘ＝０〜７、ｙ＝４７）に格納される。
【００６４】
なお、ＳＲＡＭ１５０の領域Ｌ０のセグメント３の（ｘ＝６〜７、ｙ＝３）に格納された画素は、図９に示す（ｘ＝−２〜−１、ｙ＝−２）の位置のダミー画素に対応する。また、領域Ｌ１のセグメント７の（ｘ＝６〜７、ｙ＝７）に格納された画素は、図９に示す（ｘ＝−２〜−１、ｙ＝−１）の位置のダミー画素に対応し、領域Ｌ１１のセグメント４７の（ｘ＝６〜７、ｙ＝４７）に格納された画素は、図９に示す（ｘ＝−２〜−１、ｙ＝９）の位置のダミー画素に対応する。
【００６５】
Ｓ１１５０では、ＷＬが１カウントアップされる。
【００６６】
Ｓ１１６０では、Ｄ行分のダミー画素のラインと上端のラインの書き込みが終了したか否かが判定される。ここでは、Ｄ＝２なので、ＷＬが３以上であるときに、Ｄ行分のダミー画素のラインと上端のラインの書き込みが終了したと判定される。ＷＬが３であるときは、例えば、図９に示す（ｘ＝−２〜１５、ｙ＝−２〜０）の範囲に対応する、ダミー画素を含む３行分の画素の書き込みが終了している。そして、書き込みが終了したと判定された場合（Ｓ１１６０でＹＥＳ）、Ｓ１１７０に進む。一方、書き込みが終了していないと判定された場合（ＳＳ１１６０でＮＯ）、Ｓ１１２０に戻る。
【００６７】
Ｓ１１７０では、ＲＬが１カウントアップされる。
【００６８】
Ｓ１１８０では、必要行数分、すなわち、Ｌ行分の画像の書き込みが終了したか否かが判定される。ここでは、Ｌ＝１２なので、ＷＬが１２以上であるときに、Ｌ行分の画像の書き込みが終了したと判定される。例えば、図９に示す、（ｘ＝−２〜１５、ｙ＝−２〜９）の範囲に対応する、１２行分の画像の書き込みが終了している場合、必要行数分の書き込みが終了したと判定される。そして、Ｌ行分の書き込みが終了したと判定された場合（Ｓ１１８０でＹＥＳ）、Ｓ１３００に進む。一方、Ｌ行分の書き込みが終了していないと判定された場合（Ｓ１１８０でＮＯ）、Ｓ１１１０に戻る。
【００６９】
一方、ＳＲＡＭ１５０への書き込み対象の画像が、原画像１０の上端のラインを含んでいないと判定された場合（Ｓ１０１０でＮＯ）、Ｓ１２００〜１２８０が実行される。Ｓ１２００〜１２５０、Ｓ１２７０〜１２８０は、それぞれ、Ｓ１１００〜１１５０、Ｓ１１７０〜１１８０と同様なので説明を省略する。Ｓ１１００〜Ｓ１１８０と異なる点は、Ｓ１２００〜１２８０には、Ｓ１１６０に対応する処理がない点である。すなわち、Ｄ行分のダミー画素のラインの書き込みが行われない。例えば、図９に示す（ｘ＝−２〜１５、ｙ＝６〜１７）の範囲に対応する画像が、図１２（Ａ）に示すように、ＳＲＡＭ１５０の領域Ｌ０〜１１に格納される。
【００７０】
Ｌ行分の書き込みが終了したと判定された場合（Ｓ１１８０でＹＥＳ、または、Ｓ１２８０でＹＥＳ）、フィルタ演算が開始される（Ｓ１３００）。具体的には、フィルタ演算回路１５５は、図３で説明したように、ＳＲＡＭ制御回路１４５により読み出された画素データとフィルタ係数を用いて積和演算を行い、積和演算の結果に対して割り算を行って注目画素の出力画素データを出力する。
【００７１】
図１０（Ａ）では、副走査方向の注目画素ａ０〜ｈ０の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。図１０（Ｂ）では、副走査方向の注目画素ａ１〜ｈ１の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。このようにして、図９に示す領域１４ａの左端の画素列（ａ０〜ｈ０）から順に、主走査方向に出力画素データが算出される。
【００７２】
また、図１２（Ａ）では、副走査方向の注目画素ｉ０〜ｐ０の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。図１２（Ｂ）では、副走査方向の注目画素ｉ１〜ｐ１の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。このようにして、図９に示す領域１４ｂの左端の画素列（ｉ０〜ｐ０）から順に、主走査方向に出力画素データが算出される。
【００７３】
以上のようにして、原画像の左端部のダミー画像がＳＲＡＭ上に格納され、フィルタ演算が開始される。また、原画像の上端部のダミー画像ＳＲＡＭ上に格納され、フィルタ演算が開始される。
【００７４】
図７は、画像の左右端部以外のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図である。本フローは、図６において、フィルタ演算が開始された後、開始される。ここでは、例えば、図９に示す、領域１４ａもしくは１４ｂについてフィルタ演算が行われる場合を説明する。
【００７５】
まず、原画像１０の右端までＳＲＡＭ１５０に書き込む処理が終了したか否かが判定される（Ｓ２０００）。例えば、フィルタ演算対象の画像が領域１４ａである場合、図９に示す画素ａ４７〜ｊ４７（ｘ＝４７、ｙ＝−２〜９）まで書き込みが終了している場合、右端まで書き込みが終了したと判定される。フィルタ演算対象の画像が領域１４ｂである場合、図９に示す画素ｇ４７〜ｒ４７（ｘ＝４７、ｙ＝６〜１７）まで書き込みが終了している場合、右端まで書き込みが終了したと判定される。そして、右端まで書き込みが終了したと判定された場合（Ｓ２０００でＹＥＳ）、後述する右端処理（Ｓ３０１０〜３３００）に進む。一方、右端まで書き込みが終了していないと判定された場合（Ｓ２０００でＮＯ）、Ｓ２０１０に進む。
【００７６】
Ｓ２０１０、Ｓ２１００は、それぞれ、Ｓ１０１０、Ｓ１１００（図６参照）と同様なので、説明を省略する。
【００７７】
Ｓ２１０５では、ＳＲＡＭ１５０に次の画像を書き込み可能が否かが監視される。具体的には、フィルタ演算対象の画素が、ＳＲＡＭ１５０の各領域Ｌ０〜１１の、上の２セグメントと下の２セグメントとに跨って配置されているか否かが判定される。
【００７８】
例えば、図１０（Ｂ）、（Ｄ）、図１１（Ｆ）では、フィルタ演算対象の画素が、上の２セグメントと下の２セグメントとに跨っているため、次の画像が書き込み可能でないと判定される。図１０（Ｃ）、図１１（Ｅ）、（Ｇ）では、フィルタ演算対象の画素が、上の２セグメントと下の２セグメントとに跨っていないため、次の画像が書き込み可能であると判定される。なお、図１０（Ｃ）、図１１（Ｇ）の状態では、下の２セグメントに次の画像を書き込むことができる。図１１（Ｅ）の状態では、上の２セグメントに次の画像を書き込むことができる。
【００７９】
そして、次の画像を書き込み可能と判定された場合（Ｓ２１０５でＹＥＳ）、Ｓ２１１０に進む。一方、次の画像を書き込み可能でないと判定された場合（Ｓ２１０５でＮＯ）、監視を継続する。
【００８０】
Ｓ２１１０では、ＲＬ行目の１６画素が画像メモリ１３０から読み出され、データバッファ１３５に格納される。例えば、次にＳＲＡＭ１５０に書き込む画像が図９に示す（ｘ＝１６〜３１、ｙ＝−２〜９）の範囲に対応する画像である場合、ＲＬ＝０のとき、領域１４ａの画素ａ１６〜３１が読み出され、データバッファ１３５に格納される。同様に読み出しが繰り返され、ＲＬ＝１のとき、画素ｂ１６〜３１、・・・ＲＬ＝９のとき、画素ｊ１６〜３１がデータバッファ１３５に格納される。また、次に書き込む画像が、図９（ｘ＝３２〜４７、ｙ＝−２〜９）の範囲に対応する画像である場合、ＲＬ＝０のとき、領域１４ａの画素ａ３２〜４７が読み出され、データバッファ１３５に格納される。同様に読み出しが繰り返され、ＲＬ＝１のとき、画素ｂ３２〜４７、・・・ＲＬ＝９のとき、画素ｊ３２〜４７がデータバッファ１３５に格納される。
【００８１】
Ｓ２１２０では、データバッファ１３５から８画素単位で画像が読み出され、ＳＲＡＭ１５０のＷＬ行目の領域内に書き込まれる。
【００８２】
例えば、図１０（Ｃ）では、ＲＬ＝０、ＷＬ＝０のとき、領域１４ａの画素ａ１６〜２３が、ＳＲＡＭ１５０の領域Ｌ０のセグメント２（ｘ＝０〜７、ｙ＝２）に格納される。また、画素ａ２４〜３１がセグメント３（ｘ＝０〜７、ｙ＝３）に格納される。また、ＲＬ＝０、ＷＬ＝１のとき、画素ａ１６〜２３が、領域Ｌ１のセグメント６（ｘ＝０〜７、ｙ＝６）に、画素ａ２４〜３１がセグメント７（ｘ＝０〜７、ｙ＝７）に格納される。同様に書き込みが繰り返され、ＲＬ＝９、ＷＬ＝１１のとき、画素ｊ１６〜２３が、領域Ｌ１１のセグメント４６（ｘ＝０〜７、ｙ＝４６）に、画素ｊ２４〜３１がセグメント４７（ｘ＝０〜７、ｙ＝４７）に格納される。
【００８３】
また、図１１（Ｅ）では、ＲＬ＝０、ＷＬ＝０のとき、領域１４ａの画素ａ３２〜３９が、ＳＲＡＭ１５０の領域Ｌ０のセグメント０（ｘ＝０〜７、ｙ＝０）に格納される。また、画素ａ４０〜４７がセグメント１（ｘ＝０〜７、ｙ＝１）に格納される。ＲＬ＝０、ＷＬ＝１のとき、画素ａ３２〜３９が、領域Ｌ１のセグメント４（ｘ＝０〜７、ｙ＝４）に、画素ａ４０〜４７がセグメント５（ｘ＝０〜７、ｙ＝５）に格納される。同様に書き込みが繰り返され、ＲＬ＝９、ＷＬ＝１１のとき、画素ｊ３２〜３９が、領域Ｌ１１のセグメント４４（ｘ＝０〜７、ｙ＝４４）に、画素ｊ４０〜４７がセグメント４５（ｘ＝０〜７、ｙ＝４５）に格納される。
【００８４】
Ｓ２１５０〜２１８０は、Ｓ１１５０〜１１８０と同様なので、説明を省略する。なお、Ｓ２１８０において、Ｌ行分の画像の書き込みが終了したと判定された場合、Ｓ２０００に戻る。
【００８５】
一方、ＳＲＡＭ１５０への書き込み対象の画像が、原画像１０の上端のラインを含んでいないと判定された場合（Ｓ２０１０でＮＯ）、Ｓ２２００〜２２８０が実行される。Ｓ２２００〜２２５０、Ｓ２２７０〜２２８０は、それぞれ、Ｓ２１００〜２１５０、Ｓ２１７０〜２１８０と同様なので説明を省略する。
【００８６】
なお、Ｓ２２０５では、例えば、図１２（Ｂ）、（Ｄ）、図１３（Ｆ）では、フィルタ演算対象の画素が、上の２セグメントと下の２セグメントとに跨っているため、次の画像が書き込み可能でないと判定される。図１２（Ｃ）、図１３（Ｅ）、（Ｇ）では、フィルタ演算対象の画素が、上の２セグメントと下の２セグメントとに跨っていないため、次の画像が書き込み可能であると判定される。なお、図１２（Ｃ）、図１３（Ｇ）の状態では、下の２セグメントに次の画像を書き込むことができる。図１３（Ｅ）の状態では、上の２セグメントに次の画像を書き込むことができる。
【００８７】
Ｓ２１００〜Ｓ２１８０と異なる点は、Ｓ２２００〜２２８０には、Ｓ２１６０に対応する処理がない点である。すなわち、Ｄ行分のダミー画素のラインの書き込みが行われない。例えば、図９に示す（ｘ＝１６〜３１、ｙ＝６〜１７）の範囲に対応する画像が、図１２（Ｃ）に示すように、ＳＲＡＭ１５０の領域Ｌ０〜１１に格納される。また、図９に示す（ｘ＝３２〜４７、ｙ＝６〜１７）の範囲に対応する画像が、図１３（Ｅ）に示すように、ＳＲＡＭ１５０の領域Ｌ０〜１１に格納される。
【００８８】
以上のようにして、原画像の左右端部のダミー画像を含まない画像がＳＲＡＭ上に格納され、フィルタ演算が継続される。また、原画像の上端部のダミー画像がＳＲＡＭ上に格納され、フィルタ演算が継続される。
【００８９】
図８は、画像の右端部のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図である。本フローは、図７において、原画像１０の右端までＳＲＡＭ１５０に書き込む処理が終了したと判定された場合に（Ｓ２０００でＹＥＳ）、開始される。ここでは、例えば、図９に示す、領域１４ａもしくは１４ｂについてフィルタ演算が行われる場合を説明する。
【００９０】
Ｓ３０１０、Ｓ３１００は、それぞれ、Ｓ１０１０、Ｓ１１００（図６参照）と同様なので、説明を省略する。また、Ｓ３１０５は、Ｓ２１０５（図７参照）と同様なので、説明を省略する。
【００９１】
Ｓ３１１０では、ＲＬ行目の１６画素が画像メモリ１３０から読み出され、データバッファ１３５に格納される。例えば、最後にＳＲＡＭ１５０に書き込まれた原画像１０の右端を含む画像が、図９（ｘ＝３２〜４７、ｙ＝−２〜９）の範囲に対応する画像である場合、再度、同一の画像が格納される。すなわち、ＲＬ＝０のとき、領域１４ａの画素ａ３２〜４７が読み出され、データバッファ１３５に格納される。同様に読み出しが繰り返され、ＲＬ＝１のとき、画素ｂ３２〜４７、・・・ＲＬ＝９のとき、画素ｊ３２〜４７がデータバッファ１３５に格納される。
【００９２】
Ｓ３１４０では、データバッファ１３５に格納された１６画素のうち、原画像１０の右端に位置する画素のコピーが、ダミー画素として、８画素分ＳＲＡＭ１５０のＷＬ行目の領域内に書き込まれる。例えば、ＲＬ＝０、ＷＬ＝０のとき、画素ａ４７が、図１１（Ｇ）に示すように、領域Ｌ０のセグメント２（ｘ＝０〜７、ｙ＝２）に格納される。また、ＲＬ＝０、ＷＬ＝１のとき、画素ａ４７が領域Ｌ１のセグメント６（ｘ＝０〜７、ｙ＝６）に格納される。同様にコピーが繰り返され、ＲＬ＝９、ＷＬ＝１１のとき、画素ｊ４７が領域Ｌ１１のセグメント４６（ｘ＝０〜７、ｙ＝４６）に格納される。
【００９３】
なお、ＳＲＡＭ１５０の領域Ｌ０のセグメント２の（ｘ＝６〜７、ｙ＝２）に格納された画素は、図９に示す（ｘ＝４８〜４９、ｙ＝−２）の位置のダミー画素に対応する。また、領域Ｌ１のセグメント６の（ｘ＝６〜７、ｙ＝６）に格納された画素は、図９に示す（ｘ＝４８〜４９、ｙ＝−１）の位置のダミー画素に対応し、領域Ｌ１１のセグメント４６の（ｘ＝６〜７、ｙ＝４６）に格納された画素は、図９に示す（ｘ＝４８〜４９、ｙ＝９）の位置のダミー画素に対応する。
【００９４】
Ｓ３１４０〜３１８０は、Ｓ２１４０〜２１８０（図６参照）と同様なので、説明を省略する。
【００９５】
一方、ＳＲＡＭ１５０への書き込み対象の画像が、原画像１０の上端のラインを含んでいないと判定された場合（Ｓ３０１０でＮＯ）、Ｓ３２００〜３２８０が実行される。Ｓ３２００〜３２５０、Ｓ３２７０〜３２８０は、それぞれ、Ｓ３１００〜３１５０、Ｓ３１７０〜３１８０と同様なので説明を省略する。Ｓ３１００〜Ｓ３１８０と異なる点は、Ｓ３２００〜３２８０には、Ｓ３１６０に対応する処理がない点である。すなわち、Ｄ行分のダミー画素のラインの書き込みが行われない。例えば、図９に示す（ｘ＝４８〜４９、ｙ＝６〜１７）の範囲に対応する画像が、図１３（Ｇ）に示すように、ＳＲＡＭ１５０の領域Ｌ０〜１１に格納される。
【００９６】
Ｌ行分の書き込みが終了したと判定された場合（Ｓ３１８０でＹＥＳ、または、Ｓ３２８０でＹＥＳ）、フィルタ演算が終了したか否かが監視される（Ｓ３３００）。具体的には、原画像１０の右端の注目画素の出力画素データを算出するために必要な、フィルタ演算対象の画素が、ＳＲＡＭ１５０から全て読み出されたか否かが判定される。そして、全て読み出されたと判定された場合（Ｓ３３００でＹＥＳ）、処理を終了する。一方、全て読み出されていないと判定された場合（Ｓ３３００でＮＯ）、監視を継続する。
【００９７】
図１１（Ｈ）では、副走査方向の注目画素ａ４７〜ｈ４７の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。このようにして、図９に示す領域１４ａの右端の画素列（ａ４７〜ｈ４７）の出力画素データが算出され、フィルタ演算が終了する。
【００９８】
図１３（Ｈ）では、副走査方向の注目画素ｉ４７〜ｐ４７の出力画素データを算出するために必要な、フィルタ演算対象の画素を示している。このようにして、図９に示す領域１４ｂの右端の画素列（ｉ４７〜ｐ４７）の出力画素データが算出され、フィルタ演算が終了する。
【００９９】
以上のようにして、原画像の右端部のダミー画像がＳＲＡＭ上に格納され、フィルタ演算が終了する。また、原画像の上端部のダミー画像がＳＲＡＭ上に格納され、フィルタ演算が終了する。
【０１００】
以上、本発明の一実施形態について説明した。本実施形態によれば、端部を含む画像データのフィルタ演算において、ＦＩＦＯメモリの書き込みおよび読み出しの制御を容易に行うことができる。
【０１０１】
すなわち、ＦＩＦＯメモリの一方の領域からフィルタ演算対象の画素が読み出されている間に、ＦＩＦＯメモリの他方の領域に次のフィルタ演算対象の画素が書き込まれる。これにより、ＦＩＦＯメモリの後段のフィルタ演算回路は、フィルタ演算対象の画素群を１画素ずつシフトしながら順に読み出すという単純な動作を連続的に行うことができる。つまり、フィルタ演算回路を単純な構成とすることができる。
【０１０２】
また、画像の端部のフィルタ演算においても同様に、ＦＩＦＯメモリの一方の領域からフィルタ演算対象の画素が読み出されている間に、ＦＩＦＯメモリの他方の領域に次のフィルタ演算対象のダミー画素を含む画素が書き込まれる。これにより、画像の端部のフィルタ演算においても、フィルタ演算回路の単純な構成を変更する必要がない。
【０１０３】
さらに、画像の左端部と上端部のフィルタ演算においては、一度画像メモリから読み出された画素が必要回数コピーされて、ダミー画素としてＦＩＦＯメモリに書き込まれる。これにより、ダミー画素を生成するための画像メモリに対する余計なアクセスが発生しない。
【０１０４】
以上、本発明について、例示的な実施形態と関連させて記載した。多くの代替物、修正および変形例が当業者にとって明らかであることは明白である。したがって、上に記載の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。
【０１０５】
例えば、上述したブロック処理を、ＣＰＵが所定のプログラムを実行することにより実現してもよい。
【図面の簡単な説明】
【０１０６】
【図１】ブロック処理における注目画素の処理順序を説明するための図。
【図２】ブロック画像をブロックメモリへ格納する方法を説明するための図。
【図３】ブロックメモリを用いたフィルタ演算の方法を説明するための図。
【図４】原画像の端部の注目画素のフィルタ演算の方法を説明するための図。
【図５】本実施形態が適用された画像処理回路の構成の概略を示すブロック図。
【図６】画像の左端部のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図。
【図７】画像の左右端部以外のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図。
【図８】画像の右端部のフィルタ演算を行うための、画像のコピー処理の流れを示すフロー図。
【図９】フィルタ演算の対象となる原画像と、フィルタ演算の対象となる画素の配置の関係を説明するための図。
【図１０】フィルタ演算対象の画素の、ＳＲＡＭ上の書き込み位置と読み出し位置の遷移を説明するための図（画像の上端部を含む場合）。
【図１１】フィルタ演算対象の画素の、ＳＲＡＭ上の書き込み位置と読み出し位置の遷移を説明するための図（画像の上端部を含む場合）。
【図１２】フィルタ演算対象の画素の、ＳＲＡＭ上の書き込み位置と読み出し位置の遷移を説明するための図（画像の上端部を含まない場合）。
【図１３】フィルタ演算対象の画素の、ＳＲＡＭ上の書き込み位置と読み出し位置の遷移を説明するための図（画像の上端部を含まない場合）。
【符号の説明】
【０１０７】
１０：原画像、１２：領域、１３：領域、１４：領域、１６：ブロック画像、２０：注目画素、２５：セグメント、
１４ａ：領域、１４ｂ：領域、
１００：画像処理回路、１１０：画像入力制御回路、１１５：ＦＩＦＯ制御回路、１２０：アドレス生成回路、１２５：メモリコントローラ、１３０：画像メモリ、１３５：データバッファ、１４０：アドレス生成回路、１４５：ＳＲＡＭ制御回路、１５０：ＳＲＡＭ、１５５：フィルタ演算回路
【図１】
0004992753.tif 000002
【図２】
0004992753.tif 000003
【図３】
0004992753.tif 000004
【図４】
0004992753.tif 000005
【図５】
0004992753.tif 000006
【図６】
0004992753.tif 000007
【図７】
0004992753.tif 000008
【図８】
0004992753.tif 000009
【図９】
0004992753.tif 000010
【図１０】
0004992753.tif 000011
【図１１】
0004992753.tif 000012
【図１２】
0004992753.tif 000013
【図１３】
0004992753.tif 000014