(57)【特許請求の範囲】
【請求項１】
画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、
処理対象バンド領域を、バンド領域が並ぶ方向である短辺方向に走査して注目画素を決定する走査手段と、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、
前記処理対象のバンド領域における、直前に処理されたバンド領域に接する端を上端、次に処理されるバンド領域に接する端を下端とし、前記画像処理手段の外部に設けられ、前記処理対象バンド領域における下端に位置する画素についての前記画像処理手段による演算結果を記憶するための外部記憶手段と、を有し、
前記画像処理手段は、
前記処理対象バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、
前記処理対象バンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を、前記外部記憶手段にバースト転送するために一時的に保持する第１の保持手段と、
前記処理対象バンド領域の直前に処理されたバンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第２の保持手段と、を有し、
前記内部記憶手段は、前記バンド領域の前記短辺方向の画素数と前記近傍領域における長辺方向の画素数とを乗じた画素数分の演算結果を記憶する容量であり、
前記第１の保持手段および前記第２の保持手段は前記バースト転送における１回の前記バースト転送によって転送されるデータサイズ分の容量であることを特徴とする画像処理装置。
【請求項２】
前記画像処理手段は、前記注目画素が、前記処理対象バンド領域における、直前に処理されたバンド領域と隣接する上端に位置する画素である場合、前記第２の保持手段に前記外部記憶手段からバースト転送された画素についての演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像処理手段は、前記注目画素が、前記処理対象バンド領域における前記下端に位置する画素である場合、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する画像処理を行い、該注目画素に対する演算結果を、前記第１の保持手段に書きこみ、
前記第２の保持手段は、該注目画素に対する演算結果が書き込まれたことにより前記所定の画素数の画素分の演算結果が書き込まれた場合、保持する所定の画素数の画素についての演算結果を前記外部記憶手段にバースト転送することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記外部記憶手段は、前記近傍領域において前記注目画素よりも前に処理される、該バンド領域の長辺方向のライン数と、該バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶可能な容量を、少なくとも有することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記第１の保持手段および前記第２の保持手段は、同一のメモリによって構成されることを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
前記画像処理手段は前記注目画素に対して誤差拡散処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの量子化誤差が記憶されることを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記画像処理手段は前記注目画素に対して予測符号化処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの復号値が記憶されることを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項８】
前記走査手段は、前記バンド領域の短辺方向に双方向走査を行って注目画素を決定し、
前記画像処理手段は、前記バンド領域の前記短辺方向の下端への走査を行う場合には、前記外部記憶手段に対する前記バースト転送を行い、前記バンド領域の前記端辺方向の上端への走査を行う場合には、前記第１の保持手段から前記外部記憶手段に対する前記バースト転送を行わないことを特徴とする請求項１乃至３、５乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記外部記憶手段は、前記近傍領域におけるバンドの短辺方向の画素数と、該バンド領域の長辺方向の２分の１の画素数とを乗じた画素数分の演算結果を記憶する容量であることを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
画像処理手段の内部に、内部記憶手段と、該画像処理手段の外部に設けられた外部記憶手段へのバースト転送時に利用される第１の保持手段と、前記外部記憶手段からのバースト転送時に利用される第２の保持手段と、を有する画像処理装置において、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理方法であって、
処理対象バンド領域を、バンド領域が並ぶ方向である短辺方向に走査して注目画素を決定する走査ステップと、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行い、該注目画素に対する演算結果を前記内部記憶手段に記憶する画像処理ステップと、を有し、
前記画像処理ステップにおいては、
前記処理対象のバンド領域における、直前に処理されたバンド領域に接する端を上端、次に処理されるバンド領域に接する端を下端とし、
前記注目画素が、前記バンド領域における下端に位置する画素である場合に、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する演算を行い、該注目画素に対する演算結果を、前記第１の保持手段に格納し、当該第１の保持手段に保持された画素数が所定数になった場合に前記外部記憶手段にバースト転送する第１の境界処理ステップと、
前記注目画素が、前記バンド領域における上端に位置する画素である場合であって、前記第２の保持手段に直前のバンド領域の下端の画素の画像処理結果が存在しない場合には、前記外部記憶手段から所定数の画素の演算結果を前記第２の保持手段にバースト転送する処理を行い、前記第２の保持手段に格納された演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行う第２の境界処理ステップとを含み、
前記内部記憶手段は、前記バンド領域の前記短辺方向の画素数と前記近傍領域における長辺方向の画素数とを乗じた画素数分の演算結果を記憶する容量であり、
前記第１の保持手段および前記第２の保持手段は前記バースト転送における１回の前記バースト転送によって転送されるデータサイズ分の容量であることを特徴とする画像処理方法。
【請求項１１】
画像処理装置が備えるコンピュータに、請求項１０に記載の画像処理方法の各ステップを実行させるためのプログラム。
【請求項１２】
画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、
処理対象バンド領域を、バンド領域が並ぶ方向である短辺方向に走査して注目画素を決定する走査手段と、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、
前記処理対象のバンド領域における、直前に処理されたバンド領域に接する端を上端、次に処理されるバンド領域に接する端を下端と定義し、前記画像処理手段の外部に設けられ、前記処理対象バンド領域における下端に位置する画素についての前記画像処理手段による演算結果を記憶するための外部記憶手段と、を有し、
前記画像処理手段は、
前記処理対象バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、
前記処理対象バンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を、前記外部記憶手段にバースト転送するために一時的に保持する第１の保持手段と、
前記処理対象バンド領域の直前に処理されたバンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第２の保持手段と、を有し、
前記内部記憶手段は、前記バンド領域の短辺方向の画素数と前記近傍領域における長辺方向の画素数とを乗じた画素数分の演算結果を記憶する容量であり、
前記第１の保持手段による前記外部記憶手段へのバースト転送する回数、および前記第２の保持手段による前記外部記憶手段からバースト転送する回数は、前記バンド領域の短辺方向の画素数によって調整されることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データ内の注目画素に対し、所定の近傍領域内にある画素を参照した局所画像処理を行う画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
従来より、デジタル画像データに対し、ハーフトーン処理、符号化処理といった様々な画像処理が広く行われている。中でも、空間フィルタ処理などの局所（近傍）画像処理が一般的に行われており、この局所画像処理とは、処理対象となる画素（以下、注目画素と称する）を含む空間フィルタ領域に含まれる全ての画素を用いて、何らかの演算を行なう画像処理である。例えば、ある画素を処理した際の計算結果を、その近傍の画素を処理する際に用いる手法として、ハーフトーン処理における誤差拡散法や、符号化処理における予測符号化処理等が挙げられる。
【０００３】
ここで、連続階調の画像を例えば２値のような少ない階調で表現する擬似中間色再現技術の一種である誤差拡散法について簡単に説明する。誤差拡散法は、注目画素を閾値によって量子化代表値に量子化し、その際の量子化誤差を注目画素の近傍画素に拡散する処理を逐次的に行うことを特徴とする画像処理である。
【０００４】
次に、画像において隣接する画素間の相関が高いという性質を利用した符号化方法である予測符号化処理について簡単に説明する。予測符号化処理は、注目画素周辺の既に処理された値から注目画素値を予測し、該予測値と注目画素との差を符号化することで情報量を削減することを特徴とする画像処理である。
【０００５】
上記のような、近傍画素との依存関係を有する画像処理を行う場合には、画素の計算結果を記憶装置（メモリ）に一時的に保持しておき、続く注目画素を処理する際に該メモリから記憶した処理結果を読み出し、その値を用いて該注目画素に対する演算を行う。誤差拡散処理を行う場合には量子化誤差あるいは累積誤差が計算結果としてメモリに記憶され、予測符号化処理を行う場合には局部復号値が計算結果としてメモリに記憶される。従来より、このような計算結果を記憶するメモリの構成については様々な提案がなされている。
【０００６】
ここで、画素に対する計算結果を記憶するメモリの構成について、誤差拡散処理を行う画像処理装置を例として以下に説明する。
まず第１の従来技術として、計算結果（量子化誤差）を記憶するメモリを画像処理部の中に実装する手法がある。図１４(a)は、第１の従来技術を適用した画像処理装置の全体構成例を示すブロック図である。図１４(a)は、画像入力部から入力されたデジタル画像データに対し、画像処理部で誤差拡散処理を行って画像出力部へ出力する構成を示している。同図において誤差拡散処理部は、量子化誤差を記憶するための遅延メモリを内部に実装している。したがって、回路規模が増大してしまう。
このような回路規模の増大を避けるために、第２の従来技術として、量子化誤差を記憶するメモリを画像処理部の外に配置する手法がある。図１４(b)は、第２の従来技術を適用した画像処理装置の全体構成例を示すブロックである。図１４(b)によれば、画像処理部内の誤差拡散処理部には量子化誤差を記憶する遅延メモリを実装せず、中央処理装置部内のＲＡＭに、量子化誤差を記憶するための誤差バッファを設けている。したがって第２の従来技術によれば、上記第１の従来技術を用いた場合のように遅延メモリ分の回路規模の増大は無い。しかしながらその代わりに、誤差拡散処理を行う際に、誤差拡散処理部が中央処理装置部内のＲＡＭに含まれる誤差バッファにアクセスする必要があり、そのためのメモリ帯域が必要となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平11-058837号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、第１の従来技術によれば、画像処理部内に計算結果を記憶する遅延メモリを実装するため、回路規模が増大する。ここで、誤差拡散処理をラスタ走査によって行う場合の遅延メモリ容量について、図１５を用いて説明する。
【０００９】
図１５(a)は誤差拡散係数の一例であり、図１５(b)は、図１５(a)に示す誤差拡散係数を用いた場合の誤差拡散処理を説明する図である。図１５(b)において、点線で囲んだ領域１５１０は、図中の注目画素ｅを処理する際に参照する画素（フィルタ形状）を示している。図１５(b)において、矢印１５３０で示す方向に走査を行う場合、遅延メモリとして必要な容量は、斜線で示す領域１５２０に含まれる画素を処理した際の量子化誤差を記憶可能な容量となる。このことから、遅延メモリ容量は入力画像データの横幅（主走査幅）に依存することが分かる。すなわち遅延メモリ容量は、入力画像データの横幅分の画素数×１ライン×量子化誤差のデータサイズの大きさ、となる。例えば、解像度が600ppiで横幅60インチサイズの１ラインの画素数は36000画素となり、また、量子化誤差のデータサイズを８ビットとしたとき、遅延メモリ容量は約35キロバイトとなる。
【００１０】
このように第１の従来技術においては、遅延メモリ容量が入力画像データの横幅に依存するため、入力画像データの解像度に応じて回路を設計しなければならないという課題があった。さらに、入力画像データの横幅が大きくなるにつれて、より大きな容量の遅延メモリが必要となり、例えばＬＳＩとしての画像処理部の製造コストが高くなるという課題があった。
【００１１】
一方、上記第２の従来技術によれば、画像処理部の中に大容量のメモリを実装する必要がない代わりに、１画素を処理する毎にメインメモリの誤差バッファへの書き込みおよび読み込みが発生する。したがって、入力画像データの解像度が大きくなって一定時間に処理しなければならない画素の数が増えた場合に、画像処理部の外に配置された外部メモリへのアクセスが増え、より大きなメモリ帯域が必要となる。したがって、高速なメモリを実装するなどの対策を講じた結果、ハードウェアの実装コストが高くなってしまうという課題があった。
【００１２】
このように従来技術では、入力画像データの高解像度化に応じて、より大きな遅延メモリを実装するか、高速なメモリを実装する必要があり、コスト高となってしまうという課題を抱えている。
【００１３】
本発明は上述した問題を解決するためになされたものであり、以下の機能を有する画像処理装置および画像処理方法を提供することを目的とする。すなわち、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理を実現する。
【課題を解決するための手段】
【００１４】
上記目的を達成するための一手段として、本発明の画像処理装置は以下の構成を備える。
【００１５】
すなわち、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、
処理対象バンド領域を、バンド領域が並ぶ方向である短辺方向に走査して注目画素を決定する走査手段と、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、
前記処理対象のバンド領域における、直前に処理されたバンド領域に接する端を上端、次に処理されるバンド領域に接する端を下端とし、前記画像処理手段の外部に設けられ、前記処理対象バンド領域における下端に位置する画素についての前記画像処理手段による演算結果を記憶するための外部記憶手段と、を有し、
前記画像処理手段は、
前記処理対象バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、
前記処理対象バンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を、前記外部記憶手段にバースト転送するために一時的に保持する第１の保持手段と、
前記処理対象バンド領域の直前に処理されたバンド領域における下端に位置する画素のうち所定の画素数の画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第２の保持手段と、を有し、
前記内部記憶手段は、前記バンド領域の前記短辺方向の画素数と前記近傍領域における長辺方向の画素数とを乗じた画素数分の演算結果を記憶する容量であり、
前記第１の保持手段および前記第２の保持手段は前記バースト転送における１回の前記バースト転送によって転送されるデータサイズ分の容量であることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理が可能となる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態におけるバンド分割及び走査方法を説明する図、
【図２】第１実施形態における画像処理装置の構成例を示すブロック図、
【図３】第１実施形態における画像処理を示すフローチャート、
【図４】第１実施形態の誤差拡散処理におけるフィルタ例を示す図、
【図５】第１実施形態におけるバンド処理動作を説明する図、
【図６】第１及び第３実施形態における誤差拡散処理部の構成例を示すブロック図、
【図７】第２実施形態における画像処理を示すフローチャート、
【図８】第２実施形態における画像処理装置の構成例を示すブロック図、
【図９】第１実施形態の誤差拡散処理における他のフィルタ例を示す図、
【図１０】図９のフィルタを利用した際のバンド処理動作を説明する図、
【図１１】第３実施形態における上方向走査時のフィルタ例を示す図、
【図１２】第３実施形態におけるバンド処理動作を説明する図、
【図１３】第３実施形態における画像処理を示すフローチャート、
【図１４】従来の画像処理装置の構成例を示すブロック図、
【図１５】従来の誤差拡散処理を説明する図、である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１９】
＜第１実施形態＞
●バンド処理
家庭用プリンタのように安価に提供しなければならない機器では、ハードウェアのコストを抑えるため、１枚のデジタル画像データ全体を記憶できるだけの容量のメモリを実装できない場合が多い。そのため、１枚のデジタル画像データを複数の短冊状のバンド領域に分割し、逐次的にバンド領域のみをメモリ（以下バンドメモリと称する）に展開して各種の画像処理を施す、いわゆるバンド処理が一般的に行われている。
【００２０】
ここで、バンド処理の手法について図１を用いて説明する。図１(a)は、画像データ１００を、その読み取り時（または出力時）の副走査方向で分割し、３つのバンド領域１１０、１２０、１３０を得た例を示す。この場合、バンド領域１１０が最初にバンドメモリに展開され、これが処理された後に、バンド領域１２０が新たにバンドメモリに上書き展開され、処理される。そして最後にバンド領域１３０がバンドメモリに上書き展開され、処理される。なお、バンド領域の分割数は任意であり、さらに、それぞれのバンド領域の高さは同じである必要はなく、異なっていても構わない。
【００２１】
なお、図１(a)において１５０は、バンド領域１１０における下端１ラインを示す。また、１６０および１７０はそれぞれ、バンド領域１２０の上端および下端の１ラインを示している。同様に、１８０はバンド領域１３０の上端１ラインを示している。以下、バンド領域内において、次に処理されるバンド領域と隣接する境界部（第１の境界部）を下端部と称し、直前に処理されたバンド領域と隣接する境界部（第２の境界部）を上端部と称する。すなわち、１５０、１７０はそれぞれ、バンド領域１１０、１２０の下端部であり、１６０、１８０はそれぞれ、バンド領域１２０、１３０の上端部である。
【００２２】
本実施形態では、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う。本実施形態において、バンド領域を処理する際の画素の走査方向（バンド内走査方向）は、図１(b)の矢印１４０で示すように、画像データ１００の読み取り時の主走査方向に対して垂直な、読み取り時の副走査方向であるとする。すなわちバンド内走査方向は、バンド領域の長辺方向（以下、幅方向）に対して垂直な、短辺方向（以下、高さ方向）である。このように、バンド領域の読み取り時の主走査方向に対して垂直な方向でバンド内走査を行うことを、以下、クロスバンド処理と称する。図１(b)によれば、バンド領域の左上の画素を注目画素として走査を開始し、バンド領域の高さ方向に走査して注目画素を決定していく。バンド領域の下端の画素を注目画素とした処理が終了すると、バンド領域の幅方向に１画素遷移し、バンド領域の上端の画素からの走査を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【００２３】
本実施形態においては、誤差拡散処理をバンド処理にて行う場合を例として説明する。ここで、本実施形態における誤差拡散処理について説明する。図４(a)に、本実施形態の誤差拡散処理に用いる誤差拡散係数の一例を示す。すなわち図４(a)は、＊で示す注目画素が近傍領域内の画素に拡散する誤差分布を示す。また図４(b)に、上記図４(a)に示す誤差拡散係数を用いて誤差拡散処理を行った場合に、注目画素＊に対して近傍画素から拡散される誤差を算出する際に用いられるフィルタを示す。図４(b)に示すフィルタは、図４(a)に示す誤差拡散係数に対して点対称の形状となる。図４(c)は、注目画素をｅとした場合に、該注目画素ｅに対して誤差拡散処理を実行する際に参照される画素の位置関係をａ〜ｄの記号で示したものであり、注目画素ｅの処理時に、既に処理済みであるａ〜ｄの位置の画素の誤差を参照する旨が示されている。
【００２４】
詳細は後述するが、本実施形態の画像処理装置においては、上記ａ〜ｄの位置の画素の演算結果として得られる量子化誤差は、画像処理部の中に実装した遅延メモリ（後述する図２(a)の２１４に対応）に記憶されている。ここで、注目画素ｅがバンド領域の上端部に位置している場合、参照されるべきａ、ｄの位置の画素は一つ前のバンド領域に属することとなるため、該ａ、ｄの位置の量子化誤差をバンド領域を跨って参照することができない。そこで本実施形態では、一つ前のバンド領域の下端部の画素を処理した際の演算結果を、内部記憶手段である遅延メモリとは異なる、外部記憶手段としての誤差バッファ（後述する図２(a)の２３８に対応）に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って演算結果を参照することが可能となる。
【００２５】
本実施形態において、画素を処理した際の演算結果の誤差バッファへの書き込み、及び誤差バッファからの読み出しを行う場合には、１回のアドレス指定で複数のデータを連続的に転送するバースト転送によるアクセスを行う。したがって、誤差バッファへのアクセス回数を、１画素に１回のアクセスから、バースト長に対応する複数画素に１回のアクセスに削減できる。このバースト転送を実現するために、バンド領域の下端部の画素を処理した際の演算結果を複数画素分記憶しておく転送用バッファ（後述する図２(a)の２１６、２１７に対応）が、画像処理部の中に実装される。
【００２６】
●装置構成
以下、本実施形態の画像処理装置の構成例について、図２(a)を用いて説明する。図２(a)において、画像入力部２００はスキャナやデジタルカメラ等の入力デバイスであり、画像処理部２１０にデジタル画像データを入力する。画像処理部２１０は、入力補正処理や各種フィルタ処理等を行う部分（不図示）と、誤差拡散処理を行う誤差拡散処理部２１２とで構成される。さらに誤差拡散処理部２１２は、上記量子化誤差を記憶するための遅延メモリ２１４と、上記バースト転送時に利用される転送用バッファ２１６、２１７を内部に実装する。画像処理部２１０は上述した各種画像処理を行い、誤差拡散処理部２１２の処理結果である例えば２値データを、画像出力部２２０に送る。画像出力部２２０は、例えばインクジェットヘッド等の印刷出力部を備えて構成され、画像処理部２１０から入力された２値データを基に用紙上に画像を記録する。
【００２７】
中央処理装置部２３０は、演算制御用のＣＰＵ２３２、データやプログラム等を格納するＲＯＭ２３４、データの一次保存やプログラムのロード等に使用されるＲＡＭ２３６等から構成され、画像入力部２００、画像処理部２１０、画像出力部２２０を制御する。なおＲＡＭ２３６は、上述したように一つ前のバンド領域の下端部の画素を処理した際の演算結果を記憶しておくための誤差バッファ２３８を含んでいる。
【００２８】
図２(a)に示す構成において、内部記憶手段としての遅延メモリ２１４には注目画素を処理した際の演算結果として得られる量子化誤差が逐次記憶される。第１の保持手段としての転送用バッファ２１６には、バンド領域の下端部の画素（次バンドの上端画素処理時の参照画素）を処理した際の演算結果として得られる量子化誤差が複数画素分保持される。また第２の保持手段としての転送用バッファ２１７には、バンド領域の上端画素に対する参照画素の量子化誤差が複数画素分保持される。また外部記憶手段としての誤差バッファ２３８には、バンド領域の下端部の１ライン分の画素（次バンドの上端画素処理時の参照画素）を処理した際の量子化誤差が全て記憶される。
【００２９】
このように本実施形態においては、演算結果を記憶するメモリに関して、画像処理部の内部にある遅延メモリ２１４、転送用バッファ２１６、２１７、画像処理部の外部にある記憶装置（誤差バッファ２３８）、の３部からなる構成とすることを特徴とする。
【００３０】
以下、本実施形態で行う画像処理（誤差拡散処理）と上記３部構成からなるメモリの動作について、詳細に説明する。
【００３１】
●誤差拡散処理における遅延メモリ動作
まず、本実施形態における誤差拡散処理及び遅延メモリ２１４へのアクセスについて、図３(b)のフローチャートと、図４、図５、図６を用いて説明する。図６は、図２(a)中の誤差拡散処理部２１２の詳細な構成例と、誤差バッファ２３８との関係を示す図である。また図５は、図１(a)中のバンド領域１２０において、注目画素ｅを処理する様子を示す図である。図５において点線で囲んだ領域５１０は、注目画素ｅを処理するために必要な量子化誤差の参照画素と注目画素の位置を示しており、図４(c)に示すａ、ｂ、ｃ、ｄ、ｅに対応している。
【００３２】
まずＳ４０１において、注目画素ｅを処理するために必要となる、画素ａ、ｂ、ｃ、ｄを処理した際の量子化誤差（以降、画素ｘを処理した際の量子化誤差を量子化誤差ｘと称する。即ち、ｘは注目画素からの相対的な位置を示す）を読み出す。量子化誤差ａ、ｂ、ｃは遅延メモリ６２０（図２(a)の遅延メモリ２１４に対応）に記憶されており、入力画素ｅの直前に処理された画素ｄを処理した際の量子化誤差ｄは、遅延レジスタ６３０に記憶されている。量子化誤差ａ、ｂ、ｃは、遅延メモリ６２０から遅延回路６４０を介して取り出され、積和演算器６００に入力される。加えて、量子化誤差ｄも遅延レジスタ６３０から積和演算器６００に入力される。一方、誤差拡散係数は誤差拡散係数レジスタ６１０に記憶されており、各量子化誤差が読み込まれる際に、レジスタ０から４に記憶された４つの誤差拡散係数が積和演算器６００に入力される。
【００３３】
次にＳ４０２において、注目画素ｅに対する誤差の伝播を行う。すなわち積和演算器６００において、量子化誤差ａ、ｂ、ｃ、ｄのそれぞれに対して誤差拡散係数に応じた重み付けを行い、それぞれの重み付けを行った値と入力画素値ｅとの総和を計算する。この計算結果である積和演算結果６０２が、注目画素ｅに対する誤差伝播後の値として出力される。
【００３４】
次にＳ４０３で量子化器６５０において、積和演算器６００から出力された積和演算結果６０２を、所定の閾値によって所定の量子化代表値に量子化し、量子化結果６０４を出力する。
【００３５】
次にＳ４０４で逆量子化器６７０において、量子化器６５０から出力された量子化結果６０４を量子化代表値にする逆量子化を行って逆量子化結果６０６を出力する。そしてＳ４０５で減算器６６０が、積和演算器６００から出力された積和演算結果６０２と、逆量子化器６７０から出力された逆量子化結果６０６との差分を計算し、該差分を量子化誤差６０７としてを出力する。
【００３６】
そしてＳ４０６において、遅延レジスタ６３０、遅延メモリ６２０への量子化誤差の書き込みが行われる。すなわち、減算器６６０から出力された量子化誤差６０７を遅延レジスタ６３０に記憶することで、この量子化誤差６０７は次の画素を処理する際に量子化誤差ｄとして用いられる。また、注目画素ｅを処理するために用いられた量子化誤差ｄは、遅延回路６４０を介して遅延メモリ６２０に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【００３７】
ここで、遅延メモリ６２０の容量について説明する。本実施形態では、注目画素に対して近傍画素から拡散される誤差の計算に用いる参照画素位置の形状（フィルタ形状）は、図４(b)に示す形状（すなわち図５中の領域５１０の形状）である。したがって、遅延メモリ６２０には、図５中の斜線領域５２０の画素の量子化誤差を記憶しておけば、誤差拡散処理を行うことができる。したがって遅延メモリ６２０として必要な最低限の容量は、バンド領域の高さに相当する１行分の画素についての量子化誤差を記憶できる容量であり、以下の式(1)で示される。なお式(1)において、ＢＤhはバンド領域の高さであり、ｐixは１画素あたりの量子化誤差のデータサイズである。
【００３８】
遅延メモリ容量Ｄbub＝ＢＤh×ｐix      ・・・(1)
式(1)から分かるように本実施形態においては、続く画素を処理するために必要な演算結果を記憶する遅延メモリ６２０として最低限必要となる容量（以下、遅延メモリ容量と称する）は、バンド領域の高さに依存する。本実施形態ではバンドの分割数は任意であるため、１ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【００３９】
ここで、上記第１の従来技術と本実施形態とを比較する。例えば、解像度が600ppiで横幅60インチサイズの入力画像データを考える。すると、該入力画像データにおける１ラインの画素数は36000画素であり、また、量子化誤差のデータサイズを8ビットとすると、上記第１の従来技術では遅延メモリ容量は約35キロバイトとなる。一方、本実施形態では、バンド領域の高さ方向の画素数を360画素とした場合、遅延メモリ容量は360バイトとなり、上記第１の従来技術を適用した場合の1/100に削減できる。
【００４０】
なお、遅延メモリ容量は、誤差拡散処理に用いられるフィルタ形状によって変動する。この遅延メモリ容量の変動について、図９を用いて説明する。図９は、上述した図４(b)とは異なるフィルタ形状の例を示している。図９(a)中のａ〜ｇ、図９(b)中のａ〜ｌは、＊で示す位置の注目画素を処理する際に参照される画素の位置関係を示しており、それぞれが図１０(a)中の点線で囲んだ領域１０１０、図１０(b)中の点線で囲んだ領域１０３０に対応している。このような場合に必要となる遅延メモリ容量は、フィルタ形状が図９(a)の形状である場合、図１０(a)中の斜線領域１０００に含まれる画素についての量子化誤差を記憶可能な容量となる。また、フィルタ形状が図９(b)の形状である場合には、遅延メモリ容量は、図１０(b)中の斜線領域１０２０に含まれる画素についての量子化誤差を記憶可能な容量となる。すなわち、遅延メモリ容量としては、誤差拡散のフィルタ形状（図４(c)に示す近傍領域）において、注目画素の走査ラインよりも前に走査される走査ライン数と、バンド領域の短辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。なお、図９(a)、(b)に示すフィルタ形状である場合も、遅延メモリ容量はバンド領域の高さ方向の画素数に依存するため、上記第１の従来技術と比較して遅延メモリ容量を大幅に削減できる。
【００４１】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図３(a)のフローチャートを用いて説明する。ここでは、図１(a)中のバンド領域１２０を処理する場合を例とする。
【００４２】
まずＳ３００において、注目画素ｅがバンド領域１２０の上端部の画素であるか否かの判定を行う。注目画素ｅがバンド領域１２０の上端部の画素であれば（図５(b)の状態）、Ｓ３０１〜Ｓ３０３でバンド上端部処理（第２の境界処理）を行う。すなわち、Ｓ３０１で転送用バッファＡ６９０に注目画素ｅの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部（図１(a)におけるバンド領域１１０中の領域１５０）の画素である画素ａ、ｄを処理した際の量子化誤差ａ、ｄである。必要なデータが存在している場合、転送用バッファＡ６９０から量子化誤差ａ、ｄを読み出し（Ｓ３０３）、遅延メモリ６２０に記憶されている量子化誤差ｂ、ｃと合わせて用いて誤差拡散処理を行う（Ｓ３０４）。一方、転送用バッファＡ６９０に必要なデータが存在していない場合には、誤差バッファ６８０から転送用バッファＡ６９０へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す（Ｓ３０２）。そして、該バースト読み出ししたデータに含まれる量子化誤差ａ、ｄと、遅延メモリ６２０に記憶されている量子化誤差ｂ、ｃとを合わせて用いて誤差拡散処理を行う（Ｓ３０４）。
【００４３】
一方、Ｓ３００で注目画素ｅがバンド領域１２０の上端部でない場合（図５(a)の状態）には、遅延メモリ６２０に記憶されている量子化誤差ａ、ｂ、ｃと、遅延レジスタ６３０に記憶されている量子化誤差ｄを用いて誤差拡散処理を行う（Ｓ３０４）。ここで、注目画素が下端部である場合には、量子化誤差ｃについては次のバンド領域の処理時に得られるため、これを参照せずに誤差拡散処理を行うとする。なお、Ｓ３０４における誤差拡散処理の詳細がすなわち、上記図３(b)に示したフローチャートに相当する。
【００４４】
そして次にＳ３０５において、注目画素ｅがバンド領域１２０の下端部であるか否かの判定を行う。注目画素ｅがバンド領域１２０の下端部であった場合（図５(c)の状態）、Ｓ３０６〜Ｓ３０８でバンド下端部処理（第１の境界処理）を行う。すなわち、Ｓ３０６で誤差拡散処理を行った際の量子化誤差ｅを転送用バッファＢ６９５に書き込むみ、続いて、所定の画素分を転送用バッファＢ６９５に書き込んだか否かの判定を行う（Ｓ３０７）。所定の画素分を書き込んだ場合、転送用バッファＢ６９５に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ６８０へバースト転送で書き込み（Ｓ３０８）、その後、画像出力部２２０へ量子化結果を出力する（Ｓ３０９）。一方、Ｓ３０５で注目画素ｅがバンド領域１２０の下端部でない場合（図５(a)の状態）、または、Ｓ３０７で所定の画素分が転送用バッファＢ６９５に書き込まれていない場合には、そのままＳ３０９に進み、画像出力部２２０へ量子化結果を出力する。
【００４５】
なお、入力画像データにおける一番上のバンド領域（ページの先頭バンド）の上端部（図１(a)中のバンド領域１１０の上端部）を処理する際には、誤差バッファ６８０へのアクセスは行わない。同様に、入力画像データの一番下のバンド領域（ページの最終バンド）の下端部（図１(a)中のバンド領域１３０の下端部）を処理する際にも、誤差バッファ６８０へのアクセスは行わない。
【００４６】
ここで、誤差バッファ６８０の容量について説明する。誤差バッファ６８０には、注目画素がバンド領域の上端部にある場合に、当該バンド領域内では参照不可能となる近傍画素についての演算結果が保持される。本実施形態では、注目画素を処理する際に参照する複数の画素位置のうち、注目画素よりも上の位置にある画素は図４(c)中のａ、ｄで示す１ライン上の画素である。したがって、誤差バッファ６８０には、一つ前に処理したバンド領域の下端１ライン分の画素を処理した際の量子化誤差を記憶しておけば良い。例えば、図１(a)中のバンド領域１２０を処理する際には、誤差バッファ６８０には一つ前のバンド領域の下端の領域１５０を処理した際の量子化誤差が記録されている。したがって誤差バッファ６８０として必要な最低限の容量は、バンド領域の幅に相当する１ライン分の画素についての量子化誤差を記憶できる容量であり、以下の式(2)で示される。なお式(2)において、ＢＤlはバンド領域の幅であり、ｐixは１画素あたりの量子化誤差のデータサイズである。
【００４７】
誤差バッファ容量Ｅbub＝ＢＤl×ｐix      ・・・(2)
なお、誤差バッファ容量も、誤差拡散処理に用いられるフィルタ形状によって変動する。例えば、フィルタ形状が上記図９(a)に示す形状であった場合について考える。図９(a)において、＊で示す注目画素を処理する際に参照される画素のうち、その位置が注目画素よりも上にあるものはｂ、ｇで示す１ライン上の画素と、ｆで示す２ライン上の画素である。したがって誤差バッファ容量としては、一つ前に処理したバンド領域の下端ラインと、その１ライン上の、合計２ライン分の画素の量子化誤差を記憶可能とする。すなわち、誤差バッファ容量としては、誤差拡散のフィルタ形状（図４(c)に示す近傍領域）において、注目画素よりも前に処理される、バンド領域の長辺方向のライン数と、バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。
【００４８】
続いて、転送用バッファ２１６、２１７（以下、単に転送用バッファと称する）の容量について説明する。転送用バッファの更新間隔は１バンド領域の高さ分の処理時間あるので、ダブルバッファ構成にする必要はない。従って、転送用バッファの容量はバーストアクセス単位以上、すなわち、１回の前記バースト転送によって転送されるデータサイズ分の容量があればよい。例えば、バースト転送サイズが３２バイトであれば、転送用バッファとして最低限必要な容量は３２バイトである。つまり、１画素あたりの量子化誤差のデータサイズが１バイトであれば、３２画素分となる。通常、読み出しと書き込みのバースト転送サイズは同じであるので、本実施形態の転送用バッファも３２バイトのバッファ２つ（２１６と２１７）で構成される。
【００４９】
なお、転送用バッファをアクセスする間隔は１行の処理時間であるから、重複読み出しを許容すれば、読み出しと書き込みの転送用バッファを共有させることも可能である。例えば、誤差拡散時の参照画素位置が図４(c)に示す領域である場合、転送用バッファの容量をバースト転送サイズ＋２画素分とすれば、次の行の参照画素（２画素分）を保持しつつ、バースト書込み分を転送用バッファに確保できる。ただしこの場合は、バースト書込みが終わってから、再度バースト読み出しをしなければならないので、誤差バッファ６８０へのアクセス回数は１．５倍となってしまう。なお、バーストアクセス単位の読み出し開始位置をずらすことができる場合は、転送用バッファの容量をバースト転送サイズ＋３画素分とすれば、誤差バッファ６８０へのアクセス回数を、読み出しと書き込みで共有させない場合とほぼ同じにすることができる。
【００５０】
ここで、誤差バッファ６８０にアクセスする際のメモリ帯域に関して、上記第２の従来技術と本実施形態とを比較する。上記第２の従来技術においては、注目画素を処理するために必要な近傍画素の量子化誤差は全て誤差バッファに記憶されているため、１画素毎に誤差バッファへの読み書きが発生する。それに対し本実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、誤差バッファ６８０への読み書きは発生しない。これは、本実施形態では複数画素分の量子化誤差を転送用バッファに記憶し、まとめてバースト転送で誤差バッファ６８０に読み書きするためである。すなわち、誤差バッファ６８０へのアクセス回数を、上記第２の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【００５１】
以上説明した様に本実施形態によれば、バンド領域の短辺方向に画素をクロスバンド走査し、以降の画素の処理時に参照される演算結果を保持するメモリを、画像処理部内の遅延メモリと、画像処理部外の誤差バッファ、および転送用バッファの３部構成とする。すなわち、以降の画素の処理時に参照される演算結果を遅延メモリに記憶し、次のバンド領域の処理時に参照される演算結果を、転送用バッファを一時的に利用したバースト転送によって誤差バッファに記憶する。これにより、遅延メモリの容量がバンド領域の短辺方向サイズ（高さ）に依存するようになるため、該容量を大幅に削減することができ、入力画像データの解像度やサイズに非依存の回路を構成できる。
【００５２】
本実施形態を上記第１の従来技術と比較した場合、画像処理部外の誤差バッファへのアクセスが発生するものの、該誤差バッファへのアクセスに伴うメモリ帯域は、転送用バッファを活用することによって非常に小さいものとなる。したがって、画像処理部内の遅延メモリの容量を大幅に削減しつつ、全体としての回路規模を抑制し、実装コストを削減することが可能となる。
【００５３】
また、本実施形態を上記第２の従来技術と比較した場合、画像処理部内に遅延メモリを実装することになるが、その容量は僅かであり、さらに、誤差バッファへアクセスする際のメモリ帯域が大幅に削減される。
【００５４】
さらに、バンド領域の高さは任意であるから、該バンド高さに依存する遅延バッファの容量を設計者が制御することができる。加えて、入力画像データ全体を処理する際の誤差バッファへのアクセス回数は、バンド領域の高さに依存する。したがって、バンド領域の高さが大きいほどアクセス回数が減り、バンド領域の高さが小さいほどアクセス回数は増えるため、遅延メモリの容量と、誤差バッファへアクセスする際のメモリ帯域とがトレード・オフの関係となる。したがって設計者は、目的に応じて柔軟にメモリ容量、メモリ帯域、回路規模等の回路リソースを調達することができる。
【００５５】
＜第２実施形態＞
以下、本発明に係る第２実施形態について説明する。上述した第１実施形態では、画像処理部において誤差拡散処理を行う例を示したが、第２実施形態では、画像処理部において予測符号化処理を行う例を示す。
【００５６】
●予測符号化処理
以下、第２実施形態における予測符号化処理として、平面予測（２次元予測）を行う場合について、参照データのアクセス方法について説明する。
【００５７】
第２実施形態の平面予測においても、図４(c)に示す画素位置を参照する。すなわち、図４(c)において画素ｅが注目画素であるとすると、ａ、ｂ、ｃ、ｄに示す位置の画素の演算結果（局部復号値）を用いて画素ｅの予測値を演算し、予測符号化処理を行う。ａ、ｂ、ｃ、ｄの各位置の画素の演算結果として得られる局部復号値は、画像処理部内に実装した遅延メモリ（後述する図２(b)の２１４に対応）に記憶されている。
【００５８】
ここで、注目画素ｅがバンド領域の上端部に位置している場合、参照されるべきａ、ｄの位置の画素は一つ前のバンド領域に属することとなるため、該ａ、ｄの位置の局部復号値をバンド領域を跨って参照することができない。そこで第２実施形態においても上述した第１実施形態と同様には、一つ前のバンド領域の下端部の画素を処理した際の局部復号値を１ライン分、遅延メモリとは異なる復号値バッファ（後述する図２(b)の２３９に対応）に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って局部復号値を参照することが可能となる。なお、第２実施形態における復号値バッファに対する局部復号値の書き込みおよび読み出しについても、上述した第１実施形態と同様に、局部復号値の複数画素分を転送用バッファに記憶しておき、まとめてバースト転送することで、アクセス回数を削減する。
【００５９】
●装置構成
以下、第２実施形態の画像処理装置の構成例について、図２(b)を用いて説明する。図２(b)において、上述した第１実施形態に示した図２(a)と同様の構成には同一番号を付し、説明を省略する。すなわち図２(b)においては、図２(a)の誤差拡散処理部２１２に代えて予測符号化処理部２１３を設け、さらに図２(a)の誤差バッファ２３８に代えて復号値バッファ２３９を備えることを特徴とする。すなわち、予測符号化処理部２１３は画像データに対して予測符号化処理を行い、その内部に遅延メモリ２１４、転送用バッファ２１６を実装する。また、中央処理装置部２３０中のＲＡＭ２３６に復号値バッファ２３９を備える。
【００６０】
図２(b)に示す構成において、遅延メモリ２１４には注目画素を処理した際の局部復号値が逐次記憶される。転送用バッファ２１６には、バンド領域の下端部の画素（次バンドの上端画素処理時の参照画素）を処理した際の局部復号値が複数画素分記憶される。また転送用バッファ２１７には、バンド領域の上端画素の参照画素の局部復号値が複数画素分記憶される。また復号値バッファ２３９には、バンド領域の下端部の画素（次バンドの上端画素処理時の参照画素）を処理した際の局部復号値が全て記憶される。
【００６１】
●遅延メモリ動作
まず、図７(b)のフローチャートと、図４、図５、図８を用いて、第２実施形態における予測符号化処理及び遅延メモリ２１４へのアクセスについて説明する。図８は、図２(b)中の予測符号化処理部２１３の詳細な構成例と、復号値バッファ２３９との関係を示す図である。また図５は、図１(a)中のバンド領域１２０において、注目画素ｅを処理する様子を示す図である。図５において点線で囲んだ領域５１０は、注目画素ｅを処理するために必要な局部復号値を演算結果として有する参照画素の位置を示しており、図４(c)に示すａ、ｂ、ｃ、ｄ、ｅに対応している。
【００６２】
まずＳ８０１において、注目画素ｅを処理するために必要となる、画素ａ、ｂ、ｃ、ｄを処理した際の局部復号値（以降、画素ｘを処理した際の局部復号値を復号値ｘと称する。即ち、ｘは注目画素からの相対的な位置を示す）を読み出す。復号値ａ、ｂ、ｃは遅延メモリ８７０（図２(b)の遅延メモリ２１４に対応）に記憶されており、入力画素ｅの直前に処理された画素ｄを処理した際の復号値ｄは、遅延レジスタ８５０に記憶されている。復号値ａ、ｂ、ｃは、遅延メモリ８７０から遅延回路８６０を介して取り出され、予測器８００に入力される。加えて、復号値ｄも遅延レジスタ８５０から予測器８００に入力される。
【００６３】
そしてＳ８０２において、予測器８００は復号値ａ、ｂ、ｃ、ｄを用いて予測値８０１を計算し、出力する。
【００６４】
そしてＳ８０３において、予測値８０１を復号する。すなわち、まず減算器８１０が入力画素ｅと予測器８００から出力された予測値８０１の差分値８０２を計算し、出力する。次に量子化器８２０が、減算器８１０から出力された差分値８０２を量子化代表値に量子化し、符号化値８０３として出力する。次に逆量子化器８３０が、量子化器８２０から出力された符号化値８０３を量子化代表値に逆量子化し、量子化代表値８０４を出力する。次に加算器８４０が、予測器８００から出力された予測値８０１と、逆量子化器８３０から出力された量子化代表値８０４とを加算し、該加算結果を復号値８０５として出力する。
【００６５】
次にＳ８０４において、加算器８４０から出力された復号値８０５が遅延レジスタ８５０に記憶され、次の画素を処理する際に用いられる。また、注目画素ｅを処理するために用いられた復号値ｄは、遅延回路８６０を介して遅延メモリ８７０に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【００６６】
第２実施形態では上述した第１実施形態と同様に、遅延メモリ８７０として最低限必要となる容量（遅延メモリ容量）は、バンド領域の高さ方向の画素数に依存するため、画像サイズによらずに任意に設定可能である。従って、１ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【００６７】
●転送用バッファ、誤差バッファ動作
次に、図７(a)のフローチャートを用いて、転送用バッファおよび復号値バッファへのアクセスについて説明する。ここでも上述した第１実施形態と同様に、図１(a)中のバンド領域１２０を処理する場合を例とする。
【００６８】
まずＳ７００において、注目画素ｅがバンド領域１２０の上端部の画素であるか否かの判定を行う。注目画素ｅがバンド領域１２０の上端部の画素であれば（図５(b)の状態）、Ｓ７０１で転送用バッファＡ８９０に注目画素ｅの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部（図１(a)におけるバンド領域１１０中の領域１５０）の画素である画素ａ、ｄを処理した際の復号値ａ、ｄである。必要なデータが存在している場合、転送用バッファＡ８９０から復号値ａ、ｄを読み出し、遅延メモリ８７０に記憶されている復号値ｂ、ｃと合わせて用いて符号化処理を行う（Ｓ７０４）。一方、転送用バッファＡ８９０に必要なデータが存在していない場合には、復号値バッファ８８０から転送用バッファＡ８９０へ、必要なデータを含む複数画素分の復号値をバースト転送で読み出す（Ｓ７０２）。そして、該バースト読み出ししたデータに含まれる復号値ａ、ｄと、遅延メモリ８７０に記憶されている復号値ｂ、ｃとを合わせて用いて符号化処理を行う（Ｓ７０４）。
【００６９】
一方、Ｓ７００で注目画素ｅがバンド領域１２０の上端部でない場合（図５(a)の状態）には、遅延メモリ８７０に記憶されている復号値ａ、ｂ、ｃと、遅延レジスタ８５０に記憶されている復号値ｄを用いて符号化処理を行う（Ｓ７０４）。
【００７０】
そして次にＳ７０５において、注目画素ｅがバンド領域１２０の下端部であるか否かの判定を行う。注目画素ｅがバンド領域１２０の下端部であった場合（図５(c)の状態）、符号化処理を行った際の復号値ｅを転送用バッファＢ８９５に書き込む（Ｓ７０６）。続いてＳ７０７において、所定の画素分を転送用バッファＢ８９５に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファＢ８９５に記憶されている複数画素分の復号値をまとめて、復号値バッファ８８０へバースト転送で書き込み（Ｓ７０８）、その後、画像出力部２２０へ符号化結果を出力する。一方、Ｓ７０５で注目画素ｅがバンド領域１２０の下端部でない場合（図５(a)の状態）、または、Ｓ７０７で所定の画素分が転送用バッファＢ８９５に書き込まれていない場合には、そのままＳ７０９に進み、画像出力部２２０へ符号化結果を出力する。
【００７１】
なお、入力画像データにおける一番上のバンド領域（ページの先頭バンド）の上端部（図１(a)中のバンド領域１１０の上端部）を処理する際には、復号値バッファ８８０からの読み出しは行わない。同様に、入力画像データの一番下のバンド領域（ページの最終バンド）の下端部（図１(a)中のバンド領域１３０の下端部）を処理する際にも、復号値バッファ８８０への書き込みは行わない。
【００７２】
ここで、復号値バッファ８８０の容量について説明する。第２実施形態における復号値バッファ８８０として必要な最低限の容量は、バンド領域の幅に相当する１ライン分の画素についての復号値を記憶できる容量であり、以下の式(3)で示される。なお式(3)において、ＢＤlはバンド領域の幅であり、ｐixは１画素あたりの復号値のデータサイズである。
【００７３】
復号値バッファ容量ＤＥbuf＝ＢＤl×ｐix      ・・・(3)
なお、予測値を計算するために参照する画素の位置によって、復号値バッファ容量は変動する。
【００７４】
また、第２実施形態における転送用バッファの容量に関しては、上述した第１実施形態と同様であるため、説明は省略する。
【００７５】
ここで、復号値バッファ８８０にアクセスするメモリ帯域に関して、上記第２の従来技術と第２実施形態とを比較する。上記第２の従来技術においては、注目画素を処理するために必要な近傍画素の復号値は全て復号値バッファに記憶されているため、１画素毎に復号値バッファへの読み書きが発生する。それに対し第２実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、復号値バッファ８８０への読み書きは発生しない。これは、第２実施形態では複数画素分の復号値を転送用バッファに記憶し、まとめてバースト転送で復号値バッファ８８０に読み書きするためである。すなわち、復号値バッファ８８０へのアクセス回数を、上記第２の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【００７６】
以上説明した様に第２実施形態によれば、画像データに対する予測符号化処理をバンド処理にて行う場合においても、上述した第１実施形態と同様の効果が得られる。すなわち、遅延メモリの容量を削減しつつ、復号値バッファにアクセスする際のメモリ帯域を削減することができ、ハードウェアの実装コストを大幅に削減することができる。
【００７７】
＜第３実施形態＞
以下、本発明に係る第３実施形態について説明する。上述した第１および第２実施形態では、図１(b)に示す片方向走査によるバンド処理を行う例を示したが、第３実施形態では、これを双方向走査にて行う例を示す。
【００７８】
●双方向走査
第３実施形態においては、図１(c)の矢印１９０で示すように、バンド内を双方向走査することによって誤差拡散処理を行う場合を例として説明する。なお、第３実施形態における画像処理装置の構成は上述した第１実施形態に示す図２(a)および図６と同様であるため、説明を省略する。
【００７９】
図１(b)によれば、バンド領域の左上の画素から走査を開始し、バンド領域の高さ方向を下方向に向かって走査（下方向走査）する。そして、バンド領域の下端の画素の処理が終わると、バンド領域の幅方向に１画素遷移し、バンド領域の下端の画素から上方向に向かって走査（上方向走査）を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【００８０】
このような双方向走査で誤差拡散処理を行うと、誤差の拡散方向の偏りが減少し、ドット間隔の均一性が向上するため、粒状性を向上させることが可能である。従って第３実施形態によれば、上述した第１実施形態と比較して、バンド領域内の画質を向上させることができる。
【００８１】
ここで、下方向走査を行う場合の誤差拡散係数として図４(a)を用いるとすると、上方向走査を行う場合の誤差拡散係数は、図４(a)を垂直方向に反転させた、図１１(a)に示す形状となる。この場合、注目画素＊に対して近傍画素から拡散される誤差の計算に用いられるフィルタは、図１１(b)に示すように、図１１(a)の誤差拡散係数に対して点対称の形状となる。図１１(c)は、注目画素をｅとした場合に、該注目画素ｅに対して誤差拡散処理を実行する際に参照される画素の位置関係をａ〜ｄの記号で示したものであり、すなわち、注目画素ｅの処理時に、ａ〜ｄの位置の画素の誤差を参照する必要がある。なお、ａ〜ｄの位置の画素の量子化誤差は、画像処理部の中に実装した遅延メモリに記憶されている。
【００８２】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図１３のフローチャートと図１２を用いて説明する。なお、図５がバンド領域内の下方向走査の様子を示すのに対し、図１２は上方向走査の様子を示している。
【００８３】
まずＳ９００において、現在のバンド内走査が下方向走査であるか否かの判定を行う。下方向走査である場合は、転送用バッファおよび誤差バッファの動作は上述した第１実施形態と同様である。すなわちこの場合には、図３(a)で説明したＳ３００〜Ｓ３０９と同様の処理を行うため、ここでは詳細な説明を省略する。
【００８４】
一方、バンド内走査が上方向走査である場合には、Ｓ９０１に進み、注目画素ｅがバンド領域１２０の下端部の画素であるか否かの判定を行う。注目画素ｅがバンド領域１２０の下端部の画素であれば（図１２(c)の状態）、遅延レジスタ６３０に記憶されている量子化誤差ａ、ｂを用いて誤差拡散処理を行う（Ｓ９０２）。このとき、ｃ、ｄの位置の画素については未処理のバンド領域に属するため、参照することができないことに留意されたい。
【００８５】
続いて、誤差拡散処理を行った際の量子化誤差ｅを転送用バッファＢ６９５に書き込む（Ｓ９０３）。続いてＳ９０４において、所定の画素分を転送用バッファＢ６９５に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファＢ６９５に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ６８０へバースト転送で書き込み（Ｓ９０５）、その後、画像出力部２２０へ量子化結果を出力する（Ｓ９１１）。
【００８６】
一方、Ｓ９０１で注目画素ｅがバンド領域１２０の下端部の画素でないと判定された場合、Ｓ９０６において、注目画素ｅがバンド領域１２０の上端部の画素であるか否かの判定を行う。注目画素ｅがバンド領域１２０の上端部の画素であれば（図１２(b)の状態）、Ｓ９０７で転送用バッファＡ６９０に注目画素ｅの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部（図１(a)におけるバンド領域１１０中の領域１５０）の画素である画素ａを処理した際の量子化誤差ａである。必要なデータが存在している場合、転送用バッファＡ６９０から量子化誤差ａを読み出す（Ｓ９０９）。そして、該量子化誤差ａと、遅延メモリ６２０に記憶されている量子化誤差ｂ、ｃと、遅延レジスタ６３０に記憶されている量子化誤差ｄを合わせて用いて誤差拡散処理を行う（Ｓ９１０）。一方、転送用バッファＡ６９０に必要なデータが存在していない場合には、誤差バッファ６８０から転送用バッファＡ６９０へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す（Ｓ９０８）。そして、該バースト読み出ししたデータに含まれる量子化誤差ａを転送用バッファＡ６９０から読み出す（Ｓ９０９）。そして、該量子化誤差ａと、遅延メモリ６２０に記憶されている量子化誤差ｂ、ｃ、および遅延レジスタ６３０に記憶されている量子化誤差ｄと合わせて用いて誤差拡散処理を行う（Ｓ９１０）。
【００８７】
また、Ｓ９０６で注目画素ｅがバンド領域１２０の上端部の画素でないと判定された場合（図１２(a)の状態）、遅延メモリ６２０内の量子化誤差ａ、ｂ、ｃと、遅延レジスタ６３０内の量子化誤差ｄを用いて誤差拡散処理を行う（Ｓ９１０）。以上のようにＳ９１０で誤差拡散処理が施された後、画像出力部２２０へ量子化結果を出力する（Ｓ９１１）。
【００８８】
なお、入力画像データの上端バンド領域における上端部（図１(a)中のバンド領域１１０の上端部）を処理する際には、誤差バッファ６８０へのアクセスは行わない。同様に、入力画像データの下端バンド領域における下端部（図１(a)中のバンド領域１３０の下端部）を処理する際にも、誤差バッファ６８０へのアクセスは行わない。
【００８９】
このように、バンド内の双方向走査によって誤差拡散処理を行う場合、下方向走査の場合はバンド領域間を跨いで連続的に誤差を拡散することができる。しかしながら、上方向走査の場合は未処理のバンド領域からは誤差を拡散できないため、バンド領域を跨って連続的な処理ができない。従って、下方向走査を行う場合にのみ、バンド領域間を跨って誤差を拡散するように制御すること、すなわち、誤差バッファ６８０に対するアクセス（バースト転送）を行うように制御することも可能である。この場合、バンド領域の幅方向で考えると、２画素に１回バンド領域を跨る誤差拡散が発生することになり、誤差バッファ６８０の容量を、上述した第１実施形態と比較して１／２に削減することができる。さらに誤差バッファ６８０へのアクセス回数に関しても、やはり１／２に削減することができる。
【００９０】
以上説明したように第３実施形態によれば、バンド内で双方向走査を行うことによっても、上述した第１および第２実施形態と同様の効果が得られる。さらに、バンド領域を跨る処理を行うか否かを走査方向に応じて制御することで、回路規模のさらなる縮小が可能となる。
【００９１】
なお、上述した各実施形態においては、誤差拡散処理や予測符号化処理といった、ある画素を処理した際の演算結果を、続く画素を処理する際に用いる画像処理を例として説明した。しかしながら本発明はこのような処理に限定されず、一般的なフィルタ処理等の局所的な画像処理であれば、有効に適用される。
【００９２】
本発明の特徴はすなわち、画像処理の内容とバンド処理の制約とを加味して、遅延メモリと誤差バッファを階層的に構成することにある。これにより、画像処理部の近くに設置された遅延メモリは小容量となり、画像処理部の遠くに設置された誤差バッファへの読み書きの回数が削減できるようになる。
【００９３】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００９４】
例えば、上記遅延メモリを、画像処理プロセッサから低レイテンシかつ高速に読み書き可能な１次キャッシュメモリとし、誤差バッファを、プロセッサからの読み書きは低速でも大容量の一時記憶が可能な２次キャッシュメモリとする構成も考えられる。このような構成でも、上記各実施形態と同様の効果が得られる。
【図１】
0005612965.tif 000002
【図２】
0005612965.tif 000003
【図３】
0005612965.tif 000004
【図４】
0005612965.tif 000005
【図５】
0005612965.tif 000006
【図６】
0005612965.tif 000007
【図７】
0005612965.tif 000008
【図８】
0005612965.tif 000009
【図９】
0005612965.tif 000010
【図１０】
0005612965.tif 000011
【図１１】
0005612965.tif 000012
【図１２】
0005612965.tif 000013
【図１３】
0005612965.tif 000014
【図１４】
0005612965.tif 000015
【図１５】
0005612965.tif 000016