画像処理装置及び画像処理方法
【課題】メモリ容量及びメモリ帯域を削減し、かつ、入力画像データの解像度に関わらない低コストな画像処理を実現する。
【解決手段】画像データを分割した複数のバンド領域毎に逐次的に画像処理を行う際に、バンド領域をその短辺方向に走査して注目画素を決定する。そして画像処理部において、該注目画素に対し、近傍領域内の画素についての演算結果を参照した演算を行って、内部に設けられた遅延メモリ214に該演算結果を保持する。さらに、画像処理部の外部に設けられた誤差バッファ238に、次バンド領域での処理時に参照される画素についての演算結果を記憶する。誤差バッファ238へのアクセスは、画像処理部内に設けられた転送用バッファ216、217を介したバースト転送によって行われる。これにより、遅延メモリ214の容量を削減しつつ、誤差バッファ238にアクセスするメモリ帯域を削減することができ、ハードウェアの実装コストを大幅に削減可能となる。
【解決手段】画像データを分割した複数のバンド領域毎に逐次的に画像処理を行う際に、バンド領域をその短辺方向に走査して注目画素を決定する。そして画像処理部において、該注目画素に対し、近傍領域内の画素についての演算結果を参照した演算を行って、内部に設けられた遅延メモリ214に該演算結果を保持する。さらに、画像処理部の外部に設けられた誤差バッファ238に、次バンド領域での処理時に参照される画素についての演算結果を記憶する。誤差バッファ238へのアクセスは、画像処理部内に設けられた転送用バッファ216、217を介したバースト転送によって行われる。これにより、遅延メモリ214の容量を削減しつつ、誤差バッファ238にアクセスするメモリ帯域を削減することができ、ハードウェアの実装コストを大幅に削減可能となる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像データ内の注目画素に対し、所定の近傍領域内にある画素を参照した局所画像処理を行う画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
従来より、デジタル画像データに対し、ハーフトーン処理、符号化処理といった様々な画像処理が広く行われている。中でも、空間フィルタ処理などの局所(近傍)画像処理が一般的に行われており、この局所画像処理とは、処理対象となる画素(以下、注目画素と称する)を含む空間フィルタ領域に含まれる全ての画素を用いて、何らかの演算を行なう画像処理である。例えば、ある画素を処理した際の計算結果を、その近傍の画素を処理する際に用いる手法として、ハーフトーン処理における誤差拡散法や、符号化処理における予測符号化処理等が挙げられる。
【0003】
ここで、連続階調の画像を例えば2値のような少ない階調で表現する擬似中間色再現技術の一種である誤差拡散法について簡単に説明する。誤差拡散法は、注目画素を閾値によって量子化代表値に量子化し、その際の量子化誤差を注目画素の近傍画素に拡散する処理を逐次的に行うことを特徴とする画像処理である。
【0004】
次に、画像において隣接する画素間の相関が高いという性質を利用した符号化方法である予測符号化処理について簡単に説明する。予測符号化処理は、注目画素周辺の既に処理された値から注目画素値を予測し、該予測値と注目画素との差を符号化することで情報量を削減することを特徴とする画像処理である。
【0005】
上記のような、近傍画素との依存関係を有する画像処理を行う場合には、画素の計算結果を記憶装置(メモリ)に一時的に保持しておき、続く注目画素を処理する際に該メモリから記憶した処理結果を読み出し、その値を用いて該注目画素に対する演算を行う。誤差拡散処理を行う場合には量子化誤差あるいは累積誤差が計算結果としてメモリに記憶され、予測符号化処理を行う場合には局部復号値が計算結果としてメモリに記憶される。従来より、このような計算結果を記憶するメモリの構成については様々な提案がなされている。
【0006】
ここで、画素に対する計算結果を記憶するメモリの構成について、誤差拡散処理を行う画像処理装置を例として以下に説明する。
まず第1の従来技術として、計算結果(量子化誤差)を記憶するメモリを画像処理部の中に実装する手法がある。図14(a)は、第1の従来技術を適用した画像処理装置の全体構成例を示すブロック図である。図14(a)は、画像入力部から入力されたデジタル画像データに対し、画像処理部で誤差拡散処理を行って画像出力部へ出力する構成を示している。同図において誤差拡散処理部は、量子化誤差を記憶するための遅延メモリを内部に実装している。したがって、回路規模が増大してしまう。
このような回路規模の増大を避けるために、第2の従来技術として、量子化誤差を記憶するメモリを画像処理部の外に配置する手法がある。図14(b)は、第2の従来技術を適用した画像処理装置の全体構成例を示すブロックである。図14(b)によれば、画像処理部内の誤差拡散処理部には量子化誤差を記憶する遅延メモリを実装せず、中央処理装置部内のRAMに、量子化誤差を記憶するための誤差バッファを設けている。したがって第2の従来技術によれば、上記第1の従来技術を用いた場合のように遅延メモリ分の回路規模の増大は無い。しかしながらその代わりに、誤差拡散処理を行う際に、誤差拡散処理部が中央処理装置部内のRAMに含まれる誤差バッファにアクセスする必要があり、そのためのメモリ帯域が必要となる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平11-058837号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したように、第1の従来技術によれば、画像処理部内に計算結果を記憶する遅延メモリを実装するため、回路規模が増大する。ここで、誤差拡散処理をラスタ走査によって行う場合の遅延メモリ容量について、図15を用いて説明する。
【0009】
図15(a)は誤差拡散係数の一例であり、図15(b)は、図15(a)に示す誤差拡散係数を用いた場合の誤差拡散処理を説明する図である。図15(b)において、点線で囲んだ領域1510は、図中の注目画素eを処理する際に参照する画素(フィルタ形状)を示している。図15(b)において、矢印1530で示す方向に走査を行う場合、遅延メモリとして必要な容量は、斜線で示す領域1520に含まれる画素を処理した際の量子化誤差を記憶可能な容量となる。このことから、遅延メモリ容量は入力画像データの横幅(主走査幅)に依存することが分かる。すなわち遅延メモリ容量は、入力画像データの横幅分の画素数×1ライン×量子化誤差のデータサイズの大きさ、となる。例えば、解像度が600ppiで横幅60インチサイズの1ラインの画素数は36000画素となり、また、量子化誤差のデータサイズを8ビットとしたとき、遅延メモリ容量は約35キロバイトとなる。
【0010】
このように第1の従来技術においては、遅延メモリ容量が入力画像データの横幅に依存するため、入力画像データの解像度に応じて回路を設計しなければならないという課題があった。さらに、入力画像データの横幅が大きくなるにつれて、より大きな容量の遅延メモリが必要となり、例えばLSIとしての画像処理部の製造コストが高くなるという課題があった。
【0011】
一方、上記第2の従来技術によれば、画像処理部の中に大容量のメモリを実装する必要がない代わりに、1画素を処理する毎にメインメモリの誤差バッファへの書き込みおよび読み込みが発生する。したがって、入力画像データの解像度が大きくなって一定時間に処理しなければならない画素の数が増えた場合に、画像処理部の外に配置された外部メモリへのアクセスが増え、より大きなメモリ帯域が必要となる。したがって、高速なメモリを実装するなどの対策を講じた結果、ハードウェアの実装コストが高くなってしまうという課題があった。
【0012】
このように従来技術では、入力画像データの高解像度化に応じて、より大きな遅延メモリを実装するか、高速なメモリを実装する必要があり、コスト高となってしまうという課題を抱えている。
【0013】
本発明は上述した問題を解決するためになされたものであり、以下の機能を有する画像処理装置および画像処理方法を提供することを目的とする。すなわち、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理を実現する。
【課題を解決するための手段】
【0014】
上記目的を達成するための一手段として、本発明の画像処理装置は以下の構成を備える。
【0015】
すなわち、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、前記バンド領域をその短辺方向に走査して注目画素を決定する走査手段と、前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、前記画像処理手段の外部に設けられ、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素についての前記画像処理手段による演算結果を記憶する外部記憶手段と、を有し、前記画像処理手段は、前記バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、前記バンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段にバースト転送するために一時的に保持する第1の保持手段と、前記バンド領域の直前に処理されたバンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第2の保持手段と、を有することを特徴とする。
【発明の効果】
【0016】
本発明によれば、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理が可能となる。
【図面の簡単な説明】
【0017】
【図1】第1実施形態におけるバンド分割及び走査方法を説明する図、
【図2】第1実施形態における画像処理装置の構成例を示すブロック図、
【図3】第1実施形態における画像処理を示すフローチャート、
【図4】第1実施形態の誤差拡散処理におけるフィルタ例を示す図、
【図5】第1実施形態におけるバンド処理動作を説明する図、
【図6】第1及び第3実施形態における誤差拡散処理部の構成例を示すブロック図、
【図7】第2実施形態における画像処理を示すフローチャート、
【図8】第2実施形態における画像処理装置の構成例を示すブロック図、
【図9】第1実施形態の誤差拡散処理における他のフィルタ例を示す図、
【図10】図9のフィルタを利用した際のバンド処理動作を説明する図、
【図11】第3実施形態における上方向走査時のフィルタ例を示す図、
【図12】第3実施形態におけるバンド処理動作を説明する図、
【図13】第3実施形態における画像処理を示すフローチャート、
【図14】従来の画像処理装置の構成例を示すブロック図、
【図15】従来の誤差拡散処理を説明する図、である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0019】
<第1実施形態>
●バンド処理
家庭用プリンタのように安価に提供しなければならない機器では、ハードウェアのコストを抑えるため、1枚のデジタル画像データ全体を記憶できるだけの容量のメモリを実装できない場合が多い。そのため、1枚のデジタル画像データを複数の短冊状のバンド領域に分割し、逐次的にバンド領域のみをメモリ(以下バンドメモリと称する)に展開して各種の画像処理を施す、いわゆるバンド処理が一般的に行われている。
【0020】
ここで、バンド処理の手法について図1を用いて説明する。図1(a)は、画像データ100を、その読み取り時(または出力時)の副走査方向で分割し、3つのバンド領域110、120、130を得た例を示す。この場合、バンド領域110が最初にバンドメモリに展開され、これが処理された後に、バンド領域120が新たにバンドメモリに上書き展開され、処理される。そして最後にバンド領域130がバンドメモリに上書き展開され、処理される。なお、バンド領域の分割数は任意であり、さらに、それぞれのバンド領域の高さは同じである必要はなく、異なっていても構わない。
【0021】
なお、図1(a)において150は、バンド領域110における下端1ラインを示す。また、160および170はそれぞれ、バンド領域120の上端および下端の1ラインを示している。同様に、180はバンド領域130の上端1ラインを示している。以下、バンド領域内において、次に処理されるバンド領域と隣接する境界部(第1の境界部)を下端部と称し、直前に処理されたバンド領域と隣接する境界部(第2の境界部)を上端部と称する。すなわち、150、170はそれぞれ、バンド領域110、120の下端部であり、160、180はそれぞれ、バンド領域120、130の上端部である。
【0022】
本実施形態では、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う。本実施形態において、バンド領域を処理する際の画素の走査方向(バンド内走査方向)は、図1(b)の矢印140で示すように、画像データ100の読み取り時の主走査方向に対して垂直な、読み取り時の副走査方向であるとする。すなわちバンド内走査方向は、バンド領域の長辺方向(以下、幅方向)に対して垂直な、短辺方向(以下、高さ方向)である。このように、バンド領域の読み取り時の主走査方向に対して垂直な方向でバンド内走査を行うことを、以下、クロスバンド処理と称する。図1(b)によれば、バンド領域の左上の画素を注目画素として走査を開始し、バンド領域の高さ方向に走査して注目画素を決定していく。バンド領域の下端の画素を注目画素とした処理が終了すると、バンド領域の幅方向に1画素遷移し、バンド領域の上端の画素からの走査を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【0023】
本実施形態においては、誤差拡散処理をバンド処理にて行う場合を例として説明する。ここで、本実施形態における誤差拡散処理について説明する。図4(a)に、本実施形態の誤差拡散処理に用いる誤差拡散係数の一例を示す。すなわち図4(a)は、*で示す注目画素が近傍領域内の画素に拡散する誤差分布を示す。また図4(b)に、上記図4(a)に示す誤差拡散係数を用いて誤差拡散処理を行った場合に、注目画素*に対して近傍画素から拡散される誤差を算出する際に用いられるフィルタを示す。図4(b)に示すフィルタは、図4(a)に示す誤差拡散係数に対して点対称の形状となる。図4(c)は、注目画素をeとした場合に、該注目画素eに対して誤差拡散処理を実行する際に参照される画素の位置関係をa〜dの記号で示したものであり、注目画素eの処理時に、既に処理済みであるa〜dの位置の画素の誤差を参照する旨が示されている。
【0024】
詳細は後述するが、本実施形態の画像処理装置においては、上記a〜dの位置の画素の演算結果として得られる量子化誤差は、画像処理部の中に実装した遅延メモリ(後述する図2(a)の214に対応)に記憶されている。ここで、注目画素eがバンド領域の上端部に位置している場合、参照されるべきa、dの位置の画素は一つ前のバンド領域に属することとなるため、該a、dの位置の量子化誤差をバンド領域を跨って参照することができない。そこで本実施形態では、一つ前のバンド領域の下端部の画素を処理した際の演算結果を、内部記憶手段である遅延メモリとは異なる、外部記憶手段としての誤差バッファ(後述する図2(a)の238に対応)に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って演算結果を参照することが可能となる。
【0025】
本実施形態において、画素を処理した際の演算結果の誤差バッファへの書き込み、及び誤差バッファからの読み出しを行う場合には、1回のアドレス指定で複数のデータを連続的に転送するバースト転送によるアクセスを行う。したがって、誤差バッファへのアクセス回数を、1画素に1回のアクセスから、バースト長に対応する複数画素に1回のアクセスに削減できる。このバースト転送を実現するために、バンド領域の下端部の画素を処理した際の演算結果を複数画素分記憶しておく転送用バッファ(後述する図2(a)の216、217に対応)が、画像処理部の中に実装される。
【0026】
●装置構成
以下、本実施形態の画像処理装置の構成例について、図2(a)を用いて説明する。図2(a)において、画像入力部200はスキャナやデジタルカメラ等の入力デバイスであり、画像処理部210にデジタル画像データを入力する。画像処理部210は、入力補正処理や各種フィルタ処理等を行う部分(不図示)と、誤差拡散処理を行う誤差拡散処理部212とで構成される。さらに誤差拡散処理部212は、上記量子化誤差を記憶するための遅延メモリ214と、上記バースト転送時に利用される転送用バッファ216、217を内部に実装する。画像処理部210は上述した各種画像処理を行い、誤差拡散処理部212の処理結果である例えば2値データを、画像出力部220に送る。画像出力部220は、例えばインクジェットヘッド等の印刷出力部を備えて構成され、画像処理部210から入力された2値データを基に用紙上に画像を記録する。
【0027】
中央処理装置部230は、演算制御用のCPU232、データやプログラム等を格納するROM234、データの一次保存やプログラムのロード等に使用されるRAM236等から構成され、画像入力部200、画像処理部210、画像出力部220を制御する。なおRAM236は、上述したように一つ前のバンド領域の下端部の画素を処理した際の演算結果を記憶しておくための誤差バッファ238を含んでいる。
【0028】
図2(a)に示す構成において、内部記憶手段としての遅延メモリ214には注目画素を処理した際の演算結果として得られる量子化誤差が逐次記憶される。第1の保持手段としての転送用バッファ216には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の演算結果として得られる量子化誤差が複数画素分保持される。また第2の保持手段としての転送用バッファ217には、バンド領域の上端画素に対する参照画素の量子化誤差が複数画素分保持される。また外部記憶手段としての誤差バッファ238には、バンド領域の下端部の1ライン分の画素(次バンドの上端画素処理時の参照画素)を処理した際の量子化誤差が全て記憶される。
【0029】
このように本実施形態においては、演算結果を記憶するメモリに関して、画像処理部の内部にある遅延メモリ214、転送用バッファ216、217、画像処理部の外部にある記憶装置(誤差バッファ238)、の3部からなる構成とすることを特徴とする。
【0030】
以下、本実施形態で行う画像処理(誤差拡散処理)と上記3部構成からなるメモリの動作について、詳細に説明する。
【0031】
●誤差拡散処理における遅延メモリ動作
まず、本実施形態における誤差拡散処理及び遅延メモリ214へのアクセスについて、図3(b)のフローチャートと、図4、図5、図6を用いて説明する。図6は、図2(a)中の誤差拡散処理部212の詳細な構成例と、誤差バッファ238との関係を示す図である。また図5は、図1(a)中のバンド領域120において、注目画素eを処理する様子を示す図である。図5において点線で囲んだ領域510は、注目画素eを処理するために必要な量子化誤差の参照画素と注目画素の位置を示しており、図4(c)に示すa、b、c、d、eに対応している。
【0032】
まずS401において、注目画素eを処理するために必要となる、画素a、b、c、dを処理した際の量子化誤差(以降、画素xを処理した際の量子化誤差を量子化誤差xと称する。即ち、xは注目画素からの相対的な位置を示す)を読み出す。量子化誤差a、b、cは遅延メモリ620(図2(a)の遅延メモリ214に対応)に記憶されており、入力画素eの直前に処理された画素dを処理した際の量子化誤差dは、遅延レジスタ630に記憶されている。量子化誤差a、b、cは、遅延メモリ620から遅延回路640を介して取り出され、積和演算器600に入力される。加えて、量子化誤差dも遅延レジスタ630から積和演算器600に入力される。一方、誤差拡散係数は誤差拡散係数レジスタ610に記憶されており、各量子化誤差が読み込まれる際に、レジスタ0から4に記憶された4つの誤差拡散係数が積和演算器600に入力される。
【0033】
次にS402において、注目画素eに対する誤差の伝播を行う。すなわち積和演算器600において、量子化誤差a、b、c、dのそれぞれに対して誤差拡散係数に応じた重み付けを行い、それぞれの重み付けを行った値と入力画素値eとの総和を計算する。この計算結果である積和演算結果602が、注目画素eに対する誤差伝播後の値として出力される。
【0034】
次にS403で量子化器650において、積和演算器600から出力された積和演算結果602を、所定の閾値によって所定の量子化代表値に量子化し、量子化結果604を出力する。
【0035】
次にS404で逆量子化器670において、量子化器650から出力された量子化結果604を量子化代表値にする逆量子化を行って逆量子化結果606を出力する。そしてS405で減算器660が、積和演算器600から出力された積和演算結果602と、逆量子化器670から出力された逆量子化結果606との差分を計算し、該差分を量子化誤差607としてを出力する。
【0036】
そしてS406において、遅延レジスタ630、遅延メモリ620への量子化誤差の書き込みが行われる。すなわち、減算器660から出力された量子化誤差607を遅延レジスタ630に記憶することで、この量子化誤差607は次の画素を処理する際に量子化誤差dとして用いられる。また、注目画素eを処理するために用いられた量子化誤差dは、遅延回路640を介して遅延メモリ620に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【0037】
ここで、遅延メモリ620の容量について説明する。本実施形態では、注目画素に対して近傍画素から拡散される誤差の計算に用いる参照画素位置の形状(フィルタ形状)は、図4(b)に示す形状(すなわち図5中の領域510の形状)である。したがって、遅延メモリ620には、図5中の斜線領域520の画素の量子化誤差を記憶しておけば、誤差拡散処理を行うことができる。したがって遅延メモリ620として必要な最低限の容量は、バンド領域の高さに相当する1行分の画素についての量子化誤差を記憶できる容量であり、以下の式(1)で示される。なお式(1)において、BDhはバンド領域の高さであり、pixは1画素あたりの量子化誤差のデータサイズである。
【0038】
遅延メモリ容量Dbub=BDh×pix ・・・(1)
式(1)から分かるように本実施形態においては、続く画素を処理するために必要な演算結果を記憶する遅延メモリ620として最低限必要となる容量(以下、遅延メモリ容量と称する)は、バンド領域の高さに依存する。本実施形態ではバンドの分割数は任意であるため、1ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【0039】
ここで、上記第1の従来技術と本実施形態とを比較する。例えば、解像度が600ppiで横幅60インチサイズの入力画像データを考える。すると、該入力画像データにおける1ラインの画素数は36000画素であり、また、量子化誤差のデータサイズを8ビットとすると、上記第1の従来技術では遅延メモリ容量は約35キロバイトとなる。一方、本実施形態では、バンド領域の高さ方向の画素数を360画素とした場合、遅延メモリ容量は360バイトとなり、上記第1の従来技術を適用した場合の1/100に削減できる。
【0040】
なお、遅延メモリ容量は、誤差拡散処理に用いられるフィルタ形状によって変動する。この遅延メモリ容量の変動について、図9を用いて説明する。図9は、上述した図4(b)とは異なるフィルタ形状の例を示している。図9(a)中のa〜g、図9(b)中のa〜lは、*で示す位置の注目画素を処理する際に参照される画素の位置関係を示しており、それぞれが図10(a)中の点線で囲んだ領域1010、図10(b)中の点線で囲んだ領域1030に対応している。このような場合に必要となる遅延メモリ容量は、フィルタ形状が図9(a)の形状である場合、図10(a)中の斜線領域1000に含まれる画素についての量子化誤差を記憶可能な容量となる。また、フィルタ形状が図9(b)の形状である場合には、遅延メモリ容量は、図10(b)中の斜線領域1020に含まれる画素についての量子化誤差を記憶可能な容量となる。すなわち、遅延メモリ容量としては、誤差拡散のフィルタ形状(図4(c)に示す近傍領域)において、注目画素の走査ラインよりも前に走査される走査ライン数と、バンド領域の短辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。なお、図9(a)、(b)に示すフィルタ形状である場合も、遅延メモリ容量はバンド領域の高さ方向の画素数に依存するため、上記第1の従来技術と比較して遅延メモリ容量を大幅に削減できる。
【0041】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図3(a)のフローチャートを用いて説明する。ここでは、図1(a)中のバンド領域120を処理する場合を例とする。
【0042】
まずS300において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図5(b)の状態)、S301〜S303でバンド上端部処理(第2の境界処理)を行う。すなわち、S301で転送用バッファA690に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素a、dを処理した際の量子化誤差a、dである。必要なデータが存在している場合、転送用バッファA690から量子化誤差a、dを読み出し(S303)、遅延メモリ620に記憶されている量子化誤差b、cと合わせて用いて誤差拡散処理を行う(S304)。一方、転送用バッファA690に必要なデータが存在していない場合には、誤差バッファ680から転送用バッファA690へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す(S302)。そして、該バースト読み出ししたデータに含まれる量子化誤差a、dと、遅延メモリ620に記憶されている量子化誤差b、cとを合わせて用いて誤差拡散処理を行う(S304)。
【0043】
一方、S300で注目画素eがバンド領域120の上端部でない場合(図5(a)の状態)には、遅延メモリ620に記憶されている量子化誤差a、b、cと、遅延レジスタ630に記憶されている量子化誤差dを用いて誤差拡散処理を行う(S304)。ここで、注目画素が下端部である場合には、量子化誤差cについては次のバンド領域の処理時に得られるため、これを参照せずに誤差拡散処理を行うとする。なお、S304における誤差拡散処理の詳細がすなわち、上記図3(b)に示したフローチャートに相当する。
【0044】
そして次にS305において、注目画素eがバンド領域120の下端部であるか否かの判定を行う。注目画素eがバンド領域120の下端部であった場合(図5(c)の状態)、S306〜S308でバンド下端部処理(第1の境界処理)を行う。すなわち、S306で誤差拡散処理を行った際の量子化誤差eを転送用バッファB695に書き込むみ、続いて、所定の画素分を転送用バッファB695に書き込んだか否かの判定を行う(S307)。所定の画素分を書き込んだ場合、転送用バッファB695に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ680へバースト転送で書き込み(S308)、その後、画像出力部220へ量子化結果を出力する(S309)。一方、S305で注目画素eがバンド領域120の下端部でない場合(図5(a)の状態)、または、S307で所定の画素分が転送用バッファB695に書き込まれていない場合には、そのままS309に進み、画像出力部220へ量子化結果を出力する。
【0045】
なお、入力画像データにおける一番上のバンド領域(ページの先頭バンド)の上端部(図1(a)中のバンド領域110の上端部)を処理する際には、誤差バッファ680へのアクセスは行わない。同様に、入力画像データの一番下のバンド領域(ページの最終バンド)の下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、誤差バッファ680へのアクセスは行わない。
【0046】
ここで、誤差バッファ680の容量について説明する。誤差バッファ680には、注目画素がバンド領域の上端部にある場合に、当該バンド領域内では参照不可能となる近傍画素についての演算結果が保持される。本実施形態では、注目画素を処理する際に参照する複数の画素位置のうち、注目画素よりも上の位置にある画素は図4(c)中のa、dで示す1ライン上の画素である。したがって、誤差バッファ680には、一つ前に処理したバンド領域の下端1ライン分の画素を処理した際の量子化誤差を記憶しておけば良い。例えば、図1(a)中のバンド領域120を処理する際には、誤差バッファ680には一つ前のバンド領域の下端の領域150を処理した際の量子化誤差が記録されている。したがって誤差バッファ680として必要な最低限の容量は、バンド領域の幅に相当する1ライン分の画素についての量子化誤差を記憶できる容量であり、以下の式(2)で示される。なお式(2)において、BDlはバンド領域の幅であり、pixは1画素あたりの量子化誤差のデータサイズである。
【0047】
誤差バッファ容量Ebub=BDl×pix ・・・(2)
なお、誤差バッファ容量も、誤差拡散処理に用いられるフィルタ形状によって変動する。例えば、フィルタ形状が上記図9(a)に示す形状であった場合について考える。図9(a)において、*で示す注目画素を処理する際に参照される画素のうち、その位置が注目画素よりも上にあるものはb、gで示す1ライン上の画素と、fで示す2ライン上の画素である。したがって誤差バッファ容量としては、一つ前に処理したバンド領域の下端ラインと、その1ライン上の、合計2ライン分の画素の量子化誤差を記憶可能とする。すなわち、誤差バッファ容量としては、誤差拡散のフィルタ形状(図4(c)に示す近傍領域)において、注目画素よりも前に処理される、バンド領域の長辺方向のライン数と、バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。
【0048】
続いて、転送用バッファ216、217(以下、単に転送用バッファと称する)の容量について説明する。転送用バッファの更新間隔は1バンド領域の高さ分の処理時間あるので、ダブルバッファ構成にする必要はない。従って、転送用バッファの容量はバーストアクセス単位以上、すなわち、1回の前記バースト転送によって転送されるデータサイズ分の容量があればよい。例えば、バースト転送サイズが32バイトであれば、転送用バッファとして最低限必要な容量は32バイトである。つまり、1画素あたりの量子化誤差のデータサイズが1バイトであれば、32画素分となる。通常、読み出しと書き込みのバースト転送サイズは同じであるので、本実施形態の転送用バッファも32バイトのバッファ2つ(216と217)で構成される。
【0049】
なお、転送用バッファをアクセスする間隔は1行の処理時間であるから、重複読み出しを許容すれば、読み出しと書き込みの転送用バッファを共有させることも可能である。例えば、誤差拡散時の参照画素位置が図4(c)に示す領域である場合、転送用バッファの容量をバースト転送サイズ+2画素分とすれば、次の行の参照画素(2画素分)を保持しつつ、バースト書込み分を転送用バッファに確保できる。ただしこの場合は、バースト書込みが終わってから、再度バースト読み出しをしなければならないので、誤差バッファ680へのアクセス回数は1.5倍となってしまう。なお、バーストアクセス単位の読み出し開始位置をずらすことができる場合は、転送用バッファの容量をバースト転送サイズ+3画素分とすれば、誤差バッファ680へのアクセス回数を、読み出しと書き込みで共有させない場合とほぼ同じにすることができる。
【0050】
ここで、誤差バッファ680にアクセスする際のメモリ帯域に関して、上記第2の従来技術と本実施形態とを比較する。上記第2の従来技術においては、注目画素を処理するために必要な近傍画素の量子化誤差は全て誤差バッファに記憶されているため、1画素毎に誤差バッファへの読み書きが発生する。それに対し本実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、誤差バッファ680への読み書きは発生しない。これは、本実施形態では複数画素分の量子化誤差を転送用バッファに記憶し、まとめてバースト転送で誤差バッファ680に読み書きするためである。すなわち、誤差バッファ680へのアクセス回数を、上記第2の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【0051】
以上説明した様に本実施形態によれば、バンド領域の短辺方向に画素をクロスバンド走査し、以降の画素の処理時に参照される演算結果を保持するメモリを、画像処理部内の遅延メモリと、画像処理部外の誤差バッファ、および転送用バッファの3部構成とする。すなわち、以降の画素の処理時に参照される演算結果を遅延メモリに記憶し、次のバンド領域の処理時に参照される演算結果を、転送用バッファを一時的に利用したバースト転送によって誤差バッファに記憶する。これにより、遅延メモリの容量がバンド領域の短辺方向サイズ(高さ)に依存するようになるため、該容量を大幅に削減することができ、入力画像データの解像度やサイズに非依存の回路を構成できる。
【0052】
本実施形態を上記第1の従来技術と比較した場合、画像処理部外の誤差バッファへのアクセスが発生するものの、該誤差バッファへのアクセスに伴うメモリ帯域は、転送用バッファを活用することによって非常に小さいものとなる。したがって、画像処理部内の遅延メモリの容量を大幅に削減しつつ、全体としての回路規模を抑制し、実装コストを削減することが可能となる。
【0053】
また、本実施形態を上記第2の従来技術と比較した場合、画像処理部内に遅延メモリを実装することになるが、その容量は僅かであり、さらに、誤差バッファへアクセスする際のメモリ帯域が大幅に削減される。
【0054】
さらに、バンド領域の高さは任意であるから、該バンド高さに依存する遅延バッファの容量を設計者が制御することができる。加えて、入力画像データ全体を処理する際の誤差バッファへのアクセス回数は、バンド領域の高さに依存する。したがって、バンド領域の高さが大きいほどアクセス回数が減り、バンド領域の高さが小さいほどアクセス回数は増えるため、遅延メモリの容量と、誤差バッファへアクセスする際のメモリ帯域とがトレード・オフの関係となる。したがって設計者は、目的に応じて柔軟にメモリ容量、メモリ帯域、回路規模等の回路リソースを調達することができる。
【0055】
<第2実施形態>
以下、本発明に係る第2実施形態について説明する。上述した第1実施形態では、画像処理部において誤差拡散処理を行う例を示したが、第2実施形態では、画像処理部において予測符号化処理を行う例を示す。
【0056】
●予測符号化処理
以下、第2実施形態における予測符号化処理として、平面予測(2次元予測)を行う場合について、参照データのアクセス方法について説明する。
【0057】
第2実施形態の平面予測においても、図4(c)に示す画素位置を参照する。すなわち、図4(c)において画素eが注目画素であるとすると、a、b、c、dに示す位置の画素の演算結果(局部復号値)を用いて画素eの予測値を演算し、予測符号化処理を行う。a、b、c、dの各位置の画素の演算結果として得られる局部復号値は、画像処理部内に実装した遅延メモリ(後述する図2(b)の214に対応)に記憶されている。
【0058】
ここで、注目画素eがバンド領域の上端部に位置している場合、参照されるべきa、dの位置の画素は一つ前のバンド領域に属することとなるため、該a、dの位置の局部復号値をバンド領域を跨って参照することができない。そこで第2実施形態においても上述した第1実施形態と同様には、一つ前のバンド領域の下端部の画素を処理した際の局部復号値を1ライン分、遅延メモリとは異なる復号値バッファ(後述する図2(b)の239に対応)に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って局部復号値を参照することが可能となる。なお、第2実施形態における復号値バッファに対する局部復号値の書き込みおよび読み出しについても、上述した第1実施形態と同様に、局部復号値の複数画素分を転送用バッファに記憶しておき、まとめてバースト転送することで、アクセス回数を削減する。
【0059】
●装置構成
以下、第2実施形態の画像処理装置の構成例について、図2(b)を用いて説明する。図2(b)において、上述した第1実施形態に示した図2(a)と同様の構成には同一番号を付し、説明を省略する。すなわち図2(b)においては、図2(a)の誤差拡散処理部212に代えて予測符号化処理部213を設け、さらに図2(a)の誤差バッファ238に代えて復号値バッファ239を備えることを特徴とする。すなわち、予測符号化処理部213は画像データに対して予測符号化処理を行い、その内部に遅延メモリ214、転送用バッファ216を実装する。また、中央処理装置部230中のRAM236に復号値バッファ239を備える。
【0060】
図2(b)に示す構成において、遅延メモリ214には注目画素を処理した際の局部復号値が逐次記憶される。転送用バッファ216には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の局部復号値が複数画素分記憶される。また転送用バッファ217には、バンド領域の上端画素の参照画素の局部復号値が複数画素分記憶される。また復号値バッファ239には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の局部復号値が全て記憶される。
【0061】
●遅延メモリ動作
まず、図7(b)のフローチャートと、図4、図5、図8を用いて、第2実施形態における予測符号化処理及び遅延メモリ214へのアクセスについて説明する。図8は、図2(b)中の予測符号化処理部213の詳細な構成例と、復号値バッファ239との関係を示す図である。また図5は、図1(a)中のバンド領域120において、注目画素eを処理する様子を示す図である。図5において点線で囲んだ領域510は、注目画素eを処理するために必要な局部復号値を演算結果として有する参照画素の位置を示しており、図4(c)に示すa、b、c、d、eに対応している。
【0062】
まずS801において、注目画素eを処理するために必要となる、画素a、b、c、dを処理した際の局部復号値(以降、画素xを処理した際の局部復号値を復号値xと称する。即ち、xは注目画素からの相対的な位置を示す)を読み出す。復号値a、b、cは遅延メモリ870(図2(b)の遅延メモリ214に対応)に記憶されており、入力画素eの直前に処理された画素dを処理した際の復号値dは、遅延レジスタ850に記憶されている。復号値a、b、cは、遅延メモリ870から遅延回路860を介して取り出され、予測器800に入力される。加えて、復号値dも遅延レジスタ850から予測器800に入力される。
【0063】
そしてS802において、予測器800は復号値a、b、c、dを用いて予測値801を計算し、出力する。
【0064】
そしてS803において、予測値801を復号する。すなわち、まず減算器810が入力画素eと予測器800から出力された予測値801の差分値802を計算し、出力する。次に量子化器820が、減算器810から出力された差分値802を量子化代表値に量子化し、符号化値803として出力する。次に逆量子化器830が、量子化器820から出力された符号化値803を量子化代表値に逆量子化し、量子化代表値804を出力する。次に加算器840が、予測器800から出力された予測値801と、逆量子化器830から出力された量子化代表値804とを加算し、該加算結果を復号値805として出力する。
【0065】
次にS804において、加算器840から出力された復号値805が遅延レジスタ850に記憶され、次の画素を処理する際に用いられる。また、注目画素eを処理するために用いられた復号値dは、遅延回路860を介して遅延メモリ870に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【0066】
第2実施形態では上述した第1実施形態と同様に、遅延メモリ870として最低限必要となる容量(遅延メモリ容量)は、バンド領域の高さ方向の画素数に依存するため、画像サイズによらずに任意に設定可能である。従って、1ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【0067】
●転送用バッファ、誤差バッファ動作
次に、図7(a)のフローチャートを用いて、転送用バッファおよび復号値バッファへのアクセスについて説明する。ここでも上述した第1実施形態と同様に、図1(a)中のバンド領域120を処理する場合を例とする。
【0068】
まずS700において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図5(b)の状態)、S701で転送用バッファA890に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素a、dを処理した際の復号値a、dである。必要なデータが存在している場合、転送用バッファA890から復号値a、dを読み出し、遅延メモリ870に記憶されている復号値b、cと合わせて用いて符号化処理を行う(S704)。一方、転送用バッファA890に必要なデータが存在していない場合には、復号値バッファ880から転送用バッファA890へ、必要なデータを含む複数画素分の復号値をバースト転送で読み出す(S702)。そして、該バースト読み出ししたデータに含まれる復号値a、dと、遅延メモリ870に記憶されている復号値b、cとを合わせて用いて符号化処理を行う(S704)。
【0069】
一方、S700で注目画素eがバンド領域120の上端部でない場合(図5(a)の状態)には、遅延メモリ870に記憶されている復号値a、b、cと、遅延レジスタ850に記憶されている復号値dを用いて符号化処理を行う(S704)。
【0070】
そして次にS705において、注目画素eがバンド領域120の下端部であるか否かの判定を行う。注目画素eがバンド領域120の下端部であった場合(図5(c)の状態)、符号化処理を行った際の復号値eを転送用バッファB895に書き込む(S706)。続いてS707において、所定の画素分を転送用バッファB895に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファB895に記憶されている複数画素分の復号値をまとめて、復号値バッファ880へバースト転送で書き込み(S708)、その後、画像出力部220へ符号化結果を出力する。一方、S705で注目画素eがバンド領域120の下端部でない場合(図5(a)の状態)、または、S707で所定の画素分が転送用バッファB895に書き込まれていない場合には、そのままS709に進み、画像出力部220へ符号化結果を出力する。
【0071】
なお、入力画像データにおける一番上のバンド領域(ページの先頭バンド)の上端部(図1(a)中のバンド領域110の上端部)を処理する際には、復号値バッファ880からの読み出しは行わない。同様に、入力画像データの一番下のバンド領域(ページの最終バンド)の下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、復号値バッファ880への書き込みは行わない。
【0072】
ここで、復号値バッファ880の容量について説明する。第2実施形態における復号値バッファ880として必要な最低限の容量は、バンド領域の幅に相当する1ライン分の画素についての復号値を記憶できる容量であり、以下の式(3)で示される。なお式(3)において、BDlはバンド領域の幅であり、pixは1画素あたりの復号値のデータサイズである。
【0073】
復号値バッファ容量DEbuf=BDl×pix ・・・(3)
なお、予測値を計算するために参照する画素の位置によって、復号値バッファ容量は変動する。
【0074】
また、第2実施形態における転送用バッファの容量に関しては、上述した第1実施形態と同様であるため、説明は省略する。
【0075】
ここで、復号値バッファ880にアクセスするメモリ帯域に関して、上記第2の従来技術と第2実施形態とを比較する。上記第2の従来技術においては、注目画素を処理するために必要な近傍画素の復号値は全て復号値バッファに記憶されているため、1画素毎に復号値バッファへの読み書きが発生する。それに対し第2実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、復号値バッファ880への読み書きは発生しない。これは、第2実施形態では複数画素分の復号値を転送用バッファに記憶し、まとめてバースト転送で復号値バッファ880に読み書きするためである。すなわち、復号値バッファ880へのアクセス回数を、上記第2の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【0076】
以上説明した様に第2実施形態によれば、画像データに対する予測符号化処理をバンド処理にて行う場合においても、上述した第1実施形態と同様の効果が得られる。すなわち、遅延メモリの容量を削減しつつ、復号値バッファにアクセスする際のメモリ帯域を削減することができ、ハードウェアの実装コストを大幅に削減することができる。
【0077】
<第3実施形態>
以下、本発明に係る第3実施形態について説明する。上述した第1および第2実施形態では、図1(b)に示す片方向走査によるバンド処理を行う例を示したが、第3実施形態では、これを双方向走査にて行う例を示す。
【0078】
●双方向走査
第3実施形態においては、図1(c)の矢印190で示すように、バンド内を双方向走査することによって誤差拡散処理を行う場合を例として説明する。なお、第3実施形態における画像処理装置の構成は上述した第1実施形態に示す図2(a)および図6と同様であるため、説明を省略する。
【0079】
図1(b)によれば、バンド領域の左上の画素から走査を開始し、バンド領域の高さ方向を下方向に向かって走査(下方向走査)する。そして、バンド領域の下端の画素の処理が終わると、バンド領域の幅方向に1画素遷移し、バンド領域の下端の画素から上方向に向かって走査(上方向走査)を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【0080】
このような双方向走査で誤差拡散処理を行うと、誤差の拡散方向の偏りが減少し、ドット間隔の均一性が向上するため、粒状性を向上させることが可能である。従って第3実施形態によれば、上述した第1実施形態と比較して、バンド領域内の画質を向上させることができる。
【0081】
ここで、下方向走査を行う場合の誤差拡散係数として図4(a)を用いるとすると、上方向走査を行う場合の誤差拡散係数は、図4(a)を垂直方向に反転させた、図11(a)に示す形状となる。この場合、注目画素*に対して近傍画素から拡散される誤差の計算に用いられるフィルタは、図11(b)に示すように、図11(a)の誤差拡散係数に対して点対称の形状となる。図11(c)は、注目画素をeとした場合に、該注目画素eに対して誤差拡散処理を実行する際に参照される画素の位置関係をa〜dの記号で示したものであり、すなわち、注目画素eの処理時に、a〜dの位置の画素の誤差を参照する必要がある。なお、a〜dの位置の画素の量子化誤差は、画像処理部の中に実装した遅延メモリに記憶されている。
【0082】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図13のフローチャートと図12を用いて説明する。なお、図5がバンド領域内の下方向走査の様子を示すのに対し、図12は上方向走査の様子を示している。
【0083】
まずS900において、現在のバンド内走査が下方向走査であるか否かの判定を行う。下方向走査である場合は、転送用バッファおよび誤差バッファの動作は上述した第1実施形態と同様である。すなわちこの場合には、図3(a)で説明したS300〜S309と同様の処理を行うため、ここでは詳細な説明を省略する。
【0084】
一方、バンド内走査が上方向走査である場合には、S901に進み、注目画素eがバンド領域120の下端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の下端部の画素であれば(図12(c)の状態)、遅延レジスタ630に記憶されている量子化誤差a、bを用いて誤差拡散処理を行う(S902)。このとき、c、dの位置の画素については未処理のバンド領域に属するため、参照することができないことに留意されたい。
【0085】
続いて、誤差拡散処理を行った際の量子化誤差eを転送用バッファB695に書き込む(S903)。続いてS904において、所定の画素分を転送用バッファB695に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファB695に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ680へバースト転送で書き込み(S905)、その後、画像出力部220へ量子化結果を出力する(S911)。
【0086】
一方、S901で注目画素eがバンド領域120の下端部の画素でないと判定された場合、S906において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図12(b)の状態)、S907で転送用バッファA690に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素aを処理した際の量子化誤差aである。必要なデータが存在している場合、転送用バッファA690から量子化誤差aを読み出す(S909)。そして、該量子化誤差aと、遅延メモリ620に記憶されている量子化誤差b、cと、遅延レジスタ630に記憶されている量子化誤差dを合わせて用いて誤差拡散処理を行う(S910)。一方、転送用バッファA690に必要なデータが存在していない場合には、誤差バッファ680から転送用バッファA690へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す(S908)。そして、該バースト読み出ししたデータに含まれる量子化誤差aを転送用バッファA690から読み出す(S909)。そして、該量子化誤差aと、遅延メモリ620に記憶されている量子化誤差b、c、および遅延レジスタ630に記憶されている量子化誤差dと合わせて用いて誤差拡散処理を行う(S910)。
【0087】
また、S906で注目画素eがバンド領域120の上端部の画素でないと判定された場合(図12(a)の状態)、遅延メモリ620内の量子化誤差a、b、cと、遅延レジスタ630内の量子化誤差dを用いて誤差拡散処理を行う(S910)。以上のようにS910で誤差拡散処理が施された後、画像出力部220へ量子化結果を出力する(S911)。
【0088】
なお、入力画像データの上端バンド領域における上端部(図1(a)中のバンド領域110の上端部)を処理する際には、誤差バッファ680へのアクセスは行わない。同様に、入力画像データの下端バンド領域における下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、誤差バッファ680へのアクセスは行わない。
【0089】
このように、バンド内の双方向走査によって誤差拡散処理を行う場合、下方向走査の場合はバンド領域間を跨いで連続的に誤差を拡散することができる。しかしながら、上方向走査の場合は未処理のバンド領域からは誤差を拡散できないため、バンド領域を跨って連続的な処理ができない。従って、下方向走査を行う場合にのみ、バンド領域間を跨って誤差を拡散するように制御すること、すなわち、誤差バッファ680に対するアクセス(バースト転送)を行うように制御することも可能である。この場合、バンド領域の幅方向で考えると、2画素に1回バンド領域を跨る誤差拡散が発生することになり、誤差バッファ680の容量を、上述した第1実施形態と比較して1/2に削減することができる。さらに誤差バッファ680へのアクセス回数に関しても、やはり1/2に削減することができる。
【0090】
以上説明したように第3実施形態によれば、バンド内で双方向走査を行うことによっても、上述した第1および第2実施形態と同様の効果が得られる。さらに、バンド領域を跨る処理を行うか否かを走査方向に応じて制御することで、回路規模のさらなる縮小が可能となる。
【0091】
なお、上述した各実施形態においては、誤差拡散処理や予測符号化処理といった、ある画素を処理した際の演算結果を、続く画素を処理する際に用いる画像処理を例として説明した。しかしながら本発明はこのような処理に限定されず、一般的なフィルタ処理等の局所的な画像処理であれば、有効に適用される。
【0092】
本発明の特徴はすなわち、画像処理の内容とバンド処理の制約とを加味して、遅延メモリと誤差バッファを階層的に構成することにある。これにより、画像処理部の近くに設置された遅延メモリは小容量となり、画像処理部の遠くに設置された誤差バッファへの読み書きの回数が削減できるようになる。
【0093】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【0094】
例えば、上記遅延メモリを、画像処理プロセッサから低レイテンシかつ高速に読み書き可能な1次キャッシュメモリとし、誤差バッファを、プロセッサからの読み書きは低速でも大容量の一時記憶が可能な2次キャッシュメモリとする構成も考えられる。このような構成でも、上記各実施形態と同様の効果が得られる。
【技術分野】
【0001】
本発明は、画像データ内の注目画素に対し、所定の近傍領域内にある画素を参照した局所画像処理を行う画像処理装置および画像処理方法に関する。
【背景技術】
【0002】
従来より、デジタル画像データに対し、ハーフトーン処理、符号化処理といった様々な画像処理が広く行われている。中でも、空間フィルタ処理などの局所(近傍)画像処理が一般的に行われており、この局所画像処理とは、処理対象となる画素(以下、注目画素と称する)を含む空間フィルタ領域に含まれる全ての画素を用いて、何らかの演算を行なう画像処理である。例えば、ある画素を処理した際の計算結果を、その近傍の画素を処理する際に用いる手法として、ハーフトーン処理における誤差拡散法や、符号化処理における予測符号化処理等が挙げられる。
【0003】
ここで、連続階調の画像を例えば2値のような少ない階調で表現する擬似中間色再現技術の一種である誤差拡散法について簡単に説明する。誤差拡散法は、注目画素を閾値によって量子化代表値に量子化し、その際の量子化誤差を注目画素の近傍画素に拡散する処理を逐次的に行うことを特徴とする画像処理である。
【0004】
次に、画像において隣接する画素間の相関が高いという性質を利用した符号化方法である予測符号化処理について簡単に説明する。予測符号化処理は、注目画素周辺の既に処理された値から注目画素値を予測し、該予測値と注目画素との差を符号化することで情報量を削減することを特徴とする画像処理である。
【0005】
上記のような、近傍画素との依存関係を有する画像処理を行う場合には、画素の計算結果を記憶装置(メモリ)に一時的に保持しておき、続く注目画素を処理する際に該メモリから記憶した処理結果を読み出し、その値を用いて該注目画素に対する演算を行う。誤差拡散処理を行う場合には量子化誤差あるいは累積誤差が計算結果としてメモリに記憶され、予測符号化処理を行う場合には局部復号値が計算結果としてメモリに記憶される。従来より、このような計算結果を記憶するメモリの構成については様々な提案がなされている。
【0006】
ここで、画素に対する計算結果を記憶するメモリの構成について、誤差拡散処理を行う画像処理装置を例として以下に説明する。
まず第1の従来技術として、計算結果(量子化誤差)を記憶するメモリを画像処理部の中に実装する手法がある。図14(a)は、第1の従来技術を適用した画像処理装置の全体構成例を示すブロック図である。図14(a)は、画像入力部から入力されたデジタル画像データに対し、画像処理部で誤差拡散処理を行って画像出力部へ出力する構成を示している。同図において誤差拡散処理部は、量子化誤差を記憶するための遅延メモリを内部に実装している。したがって、回路規模が増大してしまう。
このような回路規模の増大を避けるために、第2の従来技術として、量子化誤差を記憶するメモリを画像処理部の外に配置する手法がある。図14(b)は、第2の従来技術を適用した画像処理装置の全体構成例を示すブロックである。図14(b)によれば、画像処理部内の誤差拡散処理部には量子化誤差を記憶する遅延メモリを実装せず、中央処理装置部内のRAMに、量子化誤差を記憶するための誤差バッファを設けている。したがって第2の従来技術によれば、上記第1の従来技術を用いた場合のように遅延メモリ分の回路規模の増大は無い。しかしながらその代わりに、誤差拡散処理を行う際に、誤差拡散処理部が中央処理装置部内のRAMに含まれる誤差バッファにアクセスする必要があり、そのためのメモリ帯域が必要となる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平11-058837号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したように、第1の従来技術によれば、画像処理部内に計算結果を記憶する遅延メモリを実装するため、回路規模が増大する。ここで、誤差拡散処理をラスタ走査によって行う場合の遅延メモリ容量について、図15を用いて説明する。
【0009】
図15(a)は誤差拡散係数の一例であり、図15(b)は、図15(a)に示す誤差拡散係数を用いた場合の誤差拡散処理を説明する図である。図15(b)において、点線で囲んだ領域1510は、図中の注目画素eを処理する際に参照する画素(フィルタ形状)を示している。図15(b)において、矢印1530で示す方向に走査を行う場合、遅延メモリとして必要な容量は、斜線で示す領域1520に含まれる画素を処理した際の量子化誤差を記憶可能な容量となる。このことから、遅延メモリ容量は入力画像データの横幅(主走査幅)に依存することが分かる。すなわち遅延メモリ容量は、入力画像データの横幅分の画素数×1ライン×量子化誤差のデータサイズの大きさ、となる。例えば、解像度が600ppiで横幅60インチサイズの1ラインの画素数は36000画素となり、また、量子化誤差のデータサイズを8ビットとしたとき、遅延メモリ容量は約35キロバイトとなる。
【0010】
このように第1の従来技術においては、遅延メモリ容量が入力画像データの横幅に依存するため、入力画像データの解像度に応じて回路を設計しなければならないという課題があった。さらに、入力画像データの横幅が大きくなるにつれて、より大きな容量の遅延メモリが必要となり、例えばLSIとしての画像処理部の製造コストが高くなるという課題があった。
【0011】
一方、上記第2の従来技術によれば、画像処理部の中に大容量のメモリを実装する必要がない代わりに、1画素を処理する毎にメインメモリの誤差バッファへの書き込みおよび読み込みが発生する。したがって、入力画像データの解像度が大きくなって一定時間に処理しなければならない画素の数が増えた場合に、画像処理部の外に配置された外部メモリへのアクセスが増え、より大きなメモリ帯域が必要となる。したがって、高速なメモリを実装するなどの対策を講じた結果、ハードウェアの実装コストが高くなってしまうという課題があった。
【0012】
このように従来技術では、入力画像データの高解像度化に応じて、より大きな遅延メモリを実装するか、高速なメモリを実装する必要があり、コスト高となってしまうという課題を抱えている。
【0013】
本発明は上述した問題を解決するためになされたものであり、以下の機能を有する画像処理装置および画像処理方法を提供することを目的とする。すなわち、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理を実現する。
【課題を解決するための手段】
【0014】
上記目的を達成するための一手段として、本発明の画像処理装置は以下の構成を備える。
【0015】
すなわち、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、前記バンド領域をその短辺方向に走査して注目画素を決定する走査手段と、前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、前記画像処理手段の外部に設けられ、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素についての前記画像処理手段による演算結果を記憶する外部記憶手段と、を有し、前記画像処理手段は、前記バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、前記バンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段にバースト転送するために一時的に保持する第1の保持手段と、前記バンド領域の直前に処理されたバンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第2の保持手段と、を有することを特徴とする。
【発明の効果】
【0016】
本発明によれば、画像処理に係るメモリ容量及びメモリ帯域を削減しつつ、入力画像データの解像度やサイズに非依存の低コストな画像処理が可能となる。
【図面の簡単な説明】
【0017】
【図1】第1実施形態におけるバンド分割及び走査方法を説明する図、
【図2】第1実施形態における画像処理装置の構成例を示すブロック図、
【図3】第1実施形態における画像処理を示すフローチャート、
【図4】第1実施形態の誤差拡散処理におけるフィルタ例を示す図、
【図5】第1実施形態におけるバンド処理動作を説明する図、
【図6】第1及び第3実施形態における誤差拡散処理部の構成例を示すブロック図、
【図7】第2実施形態における画像処理を示すフローチャート、
【図8】第2実施形態における画像処理装置の構成例を示すブロック図、
【図9】第1実施形態の誤差拡散処理における他のフィルタ例を示す図、
【図10】図9のフィルタを利用した際のバンド処理動作を説明する図、
【図11】第3実施形態における上方向走査時のフィルタ例を示す図、
【図12】第3実施形態におけるバンド処理動作を説明する図、
【図13】第3実施形態における画像処理を示すフローチャート、
【図14】従来の画像処理装置の構成例を示すブロック図、
【図15】従来の誤差拡散処理を説明する図、である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関る本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【0019】
<第1実施形態>
●バンド処理
家庭用プリンタのように安価に提供しなければならない機器では、ハードウェアのコストを抑えるため、1枚のデジタル画像データ全体を記憶できるだけの容量のメモリを実装できない場合が多い。そのため、1枚のデジタル画像データを複数の短冊状のバンド領域に分割し、逐次的にバンド領域のみをメモリ(以下バンドメモリと称する)に展開して各種の画像処理を施す、いわゆるバンド処理が一般的に行われている。
【0020】
ここで、バンド処理の手法について図1を用いて説明する。図1(a)は、画像データ100を、その読み取り時(または出力時)の副走査方向で分割し、3つのバンド領域110、120、130を得た例を示す。この場合、バンド領域110が最初にバンドメモリに展開され、これが処理された後に、バンド領域120が新たにバンドメモリに上書き展開され、処理される。そして最後にバンド領域130がバンドメモリに上書き展開され、処理される。なお、バンド領域の分割数は任意であり、さらに、それぞれのバンド領域の高さは同じである必要はなく、異なっていても構わない。
【0021】
なお、図1(a)において150は、バンド領域110における下端1ラインを示す。また、160および170はそれぞれ、バンド領域120の上端および下端の1ラインを示している。同様に、180はバンド領域130の上端1ラインを示している。以下、バンド領域内において、次に処理されるバンド領域と隣接する境界部(第1の境界部)を下端部と称し、直前に処理されたバンド領域と隣接する境界部(第2の境界部)を上端部と称する。すなわち、150、170はそれぞれ、バンド領域110、120の下端部であり、160、180はそれぞれ、バンド領域120、130の上端部である。
【0022】
本実施形態では、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う。本実施形態において、バンド領域を処理する際の画素の走査方向(バンド内走査方向)は、図1(b)の矢印140で示すように、画像データ100の読み取り時の主走査方向に対して垂直な、読み取り時の副走査方向であるとする。すなわちバンド内走査方向は、バンド領域の長辺方向(以下、幅方向)に対して垂直な、短辺方向(以下、高さ方向)である。このように、バンド領域の読み取り時の主走査方向に対して垂直な方向でバンド内走査を行うことを、以下、クロスバンド処理と称する。図1(b)によれば、バンド領域の左上の画素を注目画素として走査を開始し、バンド領域の高さ方向に走査して注目画素を決定していく。バンド領域の下端の画素を注目画素とした処理が終了すると、バンド領域の幅方向に1画素遷移し、バンド領域の上端の画素からの走査を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【0023】
本実施形態においては、誤差拡散処理をバンド処理にて行う場合を例として説明する。ここで、本実施形態における誤差拡散処理について説明する。図4(a)に、本実施形態の誤差拡散処理に用いる誤差拡散係数の一例を示す。すなわち図4(a)は、*で示す注目画素が近傍領域内の画素に拡散する誤差分布を示す。また図4(b)に、上記図4(a)に示す誤差拡散係数を用いて誤差拡散処理を行った場合に、注目画素*に対して近傍画素から拡散される誤差を算出する際に用いられるフィルタを示す。図4(b)に示すフィルタは、図4(a)に示す誤差拡散係数に対して点対称の形状となる。図4(c)は、注目画素をeとした場合に、該注目画素eに対して誤差拡散処理を実行する際に参照される画素の位置関係をa〜dの記号で示したものであり、注目画素eの処理時に、既に処理済みであるa〜dの位置の画素の誤差を参照する旨が示されている。
【0024】
詳細は後述するが、本実施形態の画像処理装置においては、上記a〜dの位置の画素の演算結果として得られる量子化誤差は、画像処理部の中に実装した遅延メモリ(後述する図2(a)の214に対応)に記憶されている。ここで、注目画素eがバンド領域の上端部に位置している場合、参照されるべきa、dの位置の画素は一つ前のバンド領域に属することとなるため、該a、dの位置の量子化誤差をバンド領域を跨って参照することができない。そこで本実施形態では、一つ前のバンド領域の下端部の画素を処理した際の演算結果を、内部記憶手段である遅延メモリとは異なる、外部記憶手段としての誤差バッファ(後述する図2(a)の238に対応)に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って演算結果を参照することが可能となる。
【0025】
本実施形態において、画素を処理した際の演算結果の誤差バッファへの書き込み、及び誤差バッファからの読み出しを行う場合には、1回のアドレス指定で複数のデータを連続的に転送するバースト転送によるアクセスを行う。したがって、誤差バッファへのアクセス回数を、1画素に1回のアクセスから、バースト長に対応する複数画素に1回のアクセスに削減できる。このバースト転送を実現するために、バンド領域の下端部の画素を処理した際の演算結果を複数画素分記憶しておく転送用バッファ(後述する図2(a)の216、217に対応)が、画像処理部の中に実装される。
【0026】
●装置構成
以下、本実施形態の画像処理装置の構成例について、図2(a)を用いて説明する。図2(a)において、画像入力部200はスキャナやデジタルカメラ等の入力デバイスであり、画像処理部210にデジタル画像データを入力する。画像処理部210は、入力補正処理や各種フィルタ処理等を行う部分(不図示)と、誤差拡散処理を行う誤差拡散処理部212とで構成される。さらに誤差拡散処理部212は、上記量子化誤差を記憶するための遅延メモリ214と、上記バースト転送時に利用される転送用バッファ216、217を内部に実装する。画像処理部210は上述した各種画像処理を行い、誤差拡散処理部212の処理結果である例えば2値データを、画像出力部220に送る。画像出力部220は、例えばインクジェットヘッド等の印刷出力部を備えて構成され、画像処理部210から入力された2値データを基に用紙上に画像を記録する。
【0027】
中央処理装置部230は、演算制御用のCPU232、データやプログラム等を格納するROM234、データの一次保存やプログラムのロード等に使用されるRAM236等から構成され、画像入力部200、画像処理部210、画像出力部220を制御する。なおRAM236は、上述したように一つ前のバンド領域の下端部の画素を処理した際の演算結果を記憶しておくための誤差バッファ238を含んでいる。
【0028】
図2(a)に示す構成において、内部記憶手段としての遅延メモリ214には注目画素を処理した際の演算結果として得られる量子化誤差が逐次記憶される。第1の保持手段としての転送用バッファ216には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の演算結果として得られる量子化誤差が複数画素分保持される。また第2の保持手段としての転送用バッファ217には、バンド領域の上端画素に対する参照画素の量子化誤差が複数画素分保持される。また外部記憶手段としての誤差バッファ238には、バンド領域の下端部の1ライン分の画素(次バンドの上端画素処理時の参照画素)を処理した際の量子化誤差が全て記憶される。
【0029】
このように本実施形態においては、演算結果を記憶するメモリに関して、画像処理部の内部にある遅延メモリ214、転送用バッファ216、217、画像処理部の外部にある記憶装置(誤差バッファ238)、の3部からなる構成とすることを特徴とする。
【0030】
以下、本実施形態で行う画像処理(誤差拡散処理)と上記3部構成からなるメモリの動作について、詳細に説明する。
【0031】
●誤差拡散処理における遅延メモリ動作
まず、本実施形態における誤差拡散処理及び遅延メモリ214へのアクセスについて、図3(b)のフローチャートと、図4、図5、図6を用いて説明する。図6は、図2(a)中の誤差拡散処理部212の詳細な構成例と、誤差バッファ238との関係を示す図である。また図5は、図1(a)中のバンド領域120において、注目画素eを処理する様子を示す図である。図5において点線で囲んだ領域510は、注目画素eを処理するために必要な量子化誤差の参照画素と注目画素の位置を示しており、図4(c)に示すa、b、c、d、eに対応している。
【0032】
まずS401において、注目画素eを処理するために必要となる、画素a、b、c、dを処理した際の量子化誤差(以降、画素xを処理した際の量子化誤差を量子化誤差xと称する。即ち、xは注目画素からの相対的な位置を示す)を読み出す。量子化誤差a、b、cは遅延メモリ620(図2(a)の遅延メモリ214に対応)に記憶されており、入力画素eの直前に処理された画素dを処理した際の量子化誤差dは、遅延レジスタ630に記憶されている。量子化誤差a、b、cは、遅延メモリ620から遅延回路640を介して取り出され、積和演算器600に入力される。加えて、量子化誤差dも遅延レジスタ630から積和演算器600に入力される。一方、誤差拡散係数は誤差拡散係数レジスタ610に記憶されており、各量子化誤差が読み込まれる際に、レジスタ0から4に記憶された4つの誤差拡散係数が積和演算器600に入力される。
【0033】
次にS402において、注目画素eに対する誤差の伝播を行う。すなわち積和演算器600において、量子化誤差a、b、c、dのそれぞれに対して誤差拡散係数に応じた重み付けを行い、それぞれの重み付けを行った値と入力画素値eとの総和を計算する。この計算結果である積和演算結果602が、注目画素eに対する誤差伝播後の値として出力される。
【0034】
次にS403で量子化器650において、積和演算器600から出力された積和演算結果602を、所定の閾値によって所定の量子化代表値に量子化し、量子化結果604を出力する。
【0035】
次にS404で逆量子化器670において、量子化器650から出力された量子化結果604を量子化代表値にする逆量子化を行って逆量子化結果606を出力する。そしてS405で減算器660が、積和演算器600から出力された積和演算結果602と、逆量子化器670から出力された逆量子化結果606との差分を計算し、該差分を量子化誤差607としてを出力する。
【0036】
そしてS406において、遅延レジスタ630、遅延メモリ620への量子化誤差の書き込みが行われる。すなわち、減算器660から出力された量子化誤差607を遅延レジスタ630に記憶することで、この量子化誤差607は次の画素を処理する際に量子化誤差dとして用いられる。また、注目画素eを処理するために用いられた量子化誤差dは、遅延回路640を介して遅延メモリ620に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【0037】
ここで、遅延メモリ620の容量について説明する。本実施形態では、注目画素に対して近傍画素から拡散される誤差の計算に用いる参照画素位置の形状(フィルタ形状)は、図4(b)に示す形状(すなわち図5中の領域510の形状)である。したがって、遅延メモリ620には、図5中の斜線領域520の画素の量子化誤差を記憶しておけば、誤差拡散処理を行うことができる。したがって遅延メモリ620として必要な最低限の容量は、バンド領域の高さに相当する1行分の画素についての量子化誤差を記憶できる容量であり、以下の式(1)で示される。なお式(1)において、BDhはバンド領域の高さであり、pixは1画素あたりの量子化誤差のデータサイズである。
【0038】
遅延メモリ容量Dbub=BDh×pix ・・・(1)
式(1)から分かるように本実施形態においては、続く画素を処理するために必要な演算結果を記憶する遅延メモリ620として最低限必要となる容量(以下、遅延メモリ容量と称する)は、バンド領域の高さに依存する。本実施形態ではバンドの分割数は任意であるため、1ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【0039】
ここで、上記第1の従来技術と本実施形態とを比較する。例えば、解像度が600ppiで横幅60インチサイズの入力画像データを考える。すると、該入力画像データにおける1ラインの画素数は36000画素であり、また、量子化誤差のデータサイズを8ビットとすると、上記第1の従来技術では遅延メモリ容量は約35キロバイトとなる。一方、本実施形態では、バンド領域の高さ方向の画素数を360画素とした場合、遅延メモリ容量は360バイトとなり、上記第1の従来技術を適用した場合の1/100に削減できる。
【0040】
なお、遅延メモリ容量は、誤差拡散処理に用いられるフィルタ形状によって変動する。この遅延メモリ容量の変動について、図9を用いて説明する。図9は、上述した図4(b)とは異なるフィルタ形状の例を示している。図9(a)中のa〜g、図9(b)中のa〜lは、*で示す位置の注目画素を処理する際に参照される画素の位置関係を示しており、それぞれが図10(a)中の点線で囲んだ領域1010、図10(b)中の点線で囲んだ領域1030に対応している。このような場合に必要となる遅延メモリ容量は、フィルタ形状が図9(a)の形状である場合、図10(a)中の斜線領域1000に含まれる画素についての量子化誤差を記憶可能な容量となる。また、フィルタ形状が図9(b)の形状である場合には、遅延メモリ容量は、図10(b)中の斜線領域1020に含まれる画素についての量子化誤差を記憶可能な容量となる。すなわち、遅延メモリ容量としては、誤差拡散のフィルタ形状(図4(c)に示す近傍領域)において、注目画素の走査ラインよりも前に走査される走査ライン数と、バンド領域の短辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。なお、図9(a)、(b)に示すフィルタ形状である場合も、遅延メモリ容量はバンド領域の高さ方向の画素数に依存するため、上記第1の従来技術と比較して遅延メモリ容量を大幅に削減できる。
【0041】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図3(a)のフローチャートを用いて説明する。ここでは、図1(a)中のバンド領域120を処理する場合を例とする。
【0042】
まずS300において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図5(b)の状態)、S301〜S303でバンド上端部処理(第2の境界処理)を行う。すなわち、S301で転送用バッファA690に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素a、dを処理した際の量子化誤差a、dである。必要なデータが存在している場合、転送用バッファA690から量子化誤差a、dを読み出し(S303)、遅延メモリ620に記憶されている量子化誤差b、cと合わせて用いて誤差拡散処理を行う(S304)。一方、転送用バッファA690に必要なデータが存在していない場合には、誤差バッファ680から転送用バッファA690へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す(S302)。そして、該バースト読み出ししたデータに含まれる量子化誤差a、dと、遅延メモリ620に記憶されている量子化誤差b、cとを合わせて用いて誤差拡散処理を行う(S304)。
【0043】
一方、S300で注目画素eがバンド領域120の上端部でない場合(図5(a)の状態)には、遅延メモリ620に記憶されている量子化誤差a、b、cと、遅延レジスタ630に記憶されている量子化誤差dを用いて誤差拡散処理を行う(S304)。ここで、注目画素が下端部である場合には、量子化誤差cについては次のバンド領域の処理時に得られるため、これを参照せずに誤差拡散処理を行うとする。なお、S304における誤差拡散処理の詳細がすなわち、上記図3(b)に示したフローチャートに相当する。
【0044】
そして次にS305において、注目画素eがバンド領域120の下端部であるか否かの判定を行う。注目画素eがバンド領域120の下端部であった場合(図5(c)の状態)、S306〜S308でバンド下端部処理(第1の境界処理)を行う。すなわち、S306で誤差拡散処理を行った際の量子化誤差eを転送用バッファB695に書き込むみ、続いて、所定の画素分を転送用バッファB695に書き込んだか否かの判定を行う(S307)。所定の画素分を書き込んだ場合、転送用バッファB695に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ680へバースト転送で書き込み(S308)、その後、画像出力部220へ量子化結果を出力する(S309)。一方、S305で注目画素eがバンド領域120の下端部でない場合(図5(a)の状態)、または、S307で所定の画素分が転送用バッファB695に書き込まれていない場合には、そのままS309に進み、画像出力部220へ量子化結果を出力する。
【0045】
なお、入力画像データにおける一番上のバンド領域(ページの先頭バンド)の上端部(図1(a)中のバンド領域110の上端部)を処理する際には、誤差バッファ680へのアクセスは行わない。同様に、入力画像データの一番下のバンド領域(ページの最終バンド)の下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、誤差バッファ680へのアクセスは行わない。
【0046】
ここで、誤差バッファ680の容量について説明する。誤差バッファ680には、注目画素がバンド領域の上端部にある場合に、当該バンド領域内では参照不可能となる近傍画素についての演算結果が保持される。本実施形態では、注目画素を処理する際に参照する複数の画素位置のうち、注目画素よりも上の位置にある画素は図4(c)中のa、dで示す1ライン上の画素である。したがって、誤差バッファ680には、一つ前に処理したバンド領域の下端1ライン分の画素を処理した際の量子化誤差を記憶しておけば良い。例えば、図1(a)中のバンド領域120を処理する際には、誤差バッファ680には一つ前のバンド領域の下端の領域150を処理した際の量子化誤差が記録されている。したがって誤差バッファ680として必要な最低限の容量は、バンド領域の幅に相当する1ライン分の画素についての量子化誤差を記憶できる容量であり、以下の式(2)で示される。なお式(2)において、BDlはバンド領域の幅であり、pixは1画素あたりの量子化誤差のデータサイズである。
【0047】
誤差バッファ容量Ebub=BDl×pix ・・・(2)
なお、誤差バッファ容量も、誤差拡散処理に用いられるフィルタ形状によって変動する。例えば、フィルタ形状が上記図9(a)に示す形状であった場合について考える。図9(a)において、*で示す注目画素を処理する際に参照される画素のうち、その位置が注目画素よりも上にあるものはb、gで示す1ライン上の画素と、fで示す2ライン上の画素である。したがって誤差バッファ容量としては、一つ前に処理したバンド領域の下端ラインと、その1ライン上の、合計2ライン分の画素の量子化誤差を記憶可能とする。すなわち、誤差バッファ容量としては、誤差拡散のフィルタ形状(図4(c)に示す近傍領域)において、注目画素よりも前に処理される、バンド領域の長辺方向のライン数と、バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶できれば良い。
【0048】
続いて、転送用バッファ216、217(以下、単に転送用バッファと称する)の容量について説明する。転送用バッファの更新間隔は1バンド領域の高さ分の処理時間あるので、ダブルバッファ構成にする必要はない。従って、転送用バッファの容量はバーストアクセス単位以上、すなわち、1回の前記バースト転送によって転送されるデータサイズ分の容量があればよい。例えば、バースト転送サイズが32バイトであれば、転送用バッファとして最低限必要な容量は32バイトである。つまり、1画素あたりの量子化誤差のデータサイズが1バイトであれば、32画素分となる。通常、読み出しと書き込みのバースト転送サイズは同じであるので、本実施形態の転送用バッファも32バイトのバッファ2つ(216と217)で構成される。
【0049】
なお、転送用バッファをアクセスする間隔は1行の処理時間であるから、重複読み出しを許容すれば、読み出しと書き込みの転送用バッファを共有させることも可能である。例えば、誤差拡散時の参照画素位置が図4(c)に示す領域である場合、転送用バッファの容量をバースト転送サイズ+2画素分とすれば、次の行の参照画素(2画素分)を保持しつつ、バースト書込み分を転送用バッファに確保できる。ただしこの場合は、バースト書込みが終わってから、再度バースト読み出しをしなければならないので、誤差バッファ680へのアクセス回数は1.5倍となってしまう。なお、バーストアクセス単位の読み出し開始位置をずらすことができる場合は、転送用バッファの容量をバースト転送サイズ+3画素分とすれば、誤差バッファ680へのアクセス回数を、読み出しと書き込みで共有させない場合とほぼ同じにすることができる。
【0050】
ここで、誤差バッファ680にアクセスする際のメモリ帯域に関して、上記第2の従来技術と本実施形態とを比較する。上記第2の従来技術においては、注目画素を処理するために必要な近傍画素の量子化誤差は全て誤差バッファに記憶されているため、1画素毎に誤差バッファへの読み書きが発生する。それに対し本実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、誤差バッファ680への読み書きは発生しない。これは、本実施形態では複数画素分の量子化誤差を転送用バッファに記憶し、まとめてバースト転送で誤差バッファ680に読み書きするためである。すなわち、誤差バッファ680へのアクセス回数を、上記第2の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【0051】
以上説明した様に本実施形態によれば、バンド領域の短辺方向に画素をクロスバンド走査し、以降の画素の処理時に参照される演算結果を保持するメモリを、画像処理部内の遅延メモリと、画像処理部外の誤差バッファ、および転送用バッファの3部構成とする。すなわち、以降の画素の処理時に参照される演算結果を遅延メモリに記憶し、次のバンド領域の処理時に参照される演算結果を、転送用バッファを一時的に利用したバースト転送によって誤差バッファに記憶する。これにより、遅延メモリの容量がバンド領域の短辺方向サイズ(高さ)に依存するようになるため、該容量を大幅に削減することができ、入力画像データの解像度やサイズに非依存の回路を構成できる。
【0052】
本実施形態を上記第1の従来技術と比較した場合、画像処理部外の誤差バッファへのアクセスが発生するものの、該誤差バッファへのアクセスに伴うメモリ帯域は、転送用バッファを活用することによって非常に小さいものとなる。したがって、画像処理部内の遅延メモリの容量を大幅に削減しつつ、全体としての回路規模を抑制し、実装コストを削減することが可能となる。
【0053】
また、本実施形態を上記第2の従来技術と比較した場合、画像処理部内に遅延メモリを実装することになるが、その容量は僅かであり、さらに、誤差バッファへアクセスする際のメモリ帯域が大幅に削減される。
【0054】
さらに、バンド領域の高さは任意であるから、該バンド高さに依存する遅延バッファの容量を設計者が制御することができる。加えて、入力画像データ全体を処理する際の誤差バッファへのアクセス回数は、バンド領域の高さに依存する。したがって、バンド領域の高さが大きいほどアクセス回数が減り、バンド領域の高さが小さいほどアクセス回数は増えるため、遅延メモリの容量と、誤差バッファへアクセスする際のメモリ帯域とがトレード・オフの関係となる。したがって設計者は、目的に応じて柔軟にメモリ容量、メモリ帯域、回路規模等の回路リソースを調達することができる。
【0055】
<第2実施形態>
以下、本発明に係る第2実施形態について説明する。上述した第1実施形態では、画像処理部において誤差拡散処理を行う例を示したが、第2実施形態では、画像処理部において予測符号化処理を行う例を示す。
【0056】
●予測符号化処理
以下、第2実施形態における予測符号化処理として、平面予測(2次元予測)を行う場合について、参照データのアクセス方法について説明する。
【0057】
第2実施形態の平面予測においても、図4(c)に示す画素位置を参照する。すなわち、図4(c)において画素eが注目画素であるとすると、a、b、c、dに示す位置の画素の演算結果(局部復号値)を用いて画素eの予測値を演算し、予測符号化処理を行う。a、b、c、dの各位置の画素の演算結果として得られる局部復号値は、画像処理部内に実装した遅延メモリ(後述する図2(b)の214に対応)に記憶されている。
【0058】
ここで、注目画素eがバンド領域の上端部に位置している場合、参照されるべきa、dの位置の画素は一つ前のバンド領域に属することとなるため、該a、dの位置の局部復号値をバンド領域を跨って参照することができない。そこで第2実施形態においても上述した第1実施形態と同様には、一つ前のバンド領域の下端部の画素を処理した際の局部復号値を1ライン分、遅延メモリとは異なる復号値バッファ(後述する図2(b)の239に対応)に記憶しておく。これにより、画像データを複数バンド領域に分割し、バンド領域毎に逐次的に処理を行う場合あっても、バンド領域を跨って局部復号値を参照することが可能となる。なお、第2実施形態における復号値バッファに対する局部復号値の書き込みおよび読み出しについても、上述した第1実施形態と同様に、局部復号値の複数画素分を転送用バッファに記憶しておき、まとめてバースト転送することで、アクセス回数を削減する。
【0059】
●装置構成
以下、第2実施形態の画像処理装置の構成例について、図2(b)を用いて説明する。図2(b)において、上述した第1実施形態に示した図2(a)と同様の構成には同一番号を付し、説明を省略する。すなわち図2(b)においては、図2(a)の誤差拡散処理部212に代えて予測符号化処理部213を設け、さらに図2(a)の誤差バッファ238に代えて復号値バッファ239を備えることを特徴とする。すなわち、予測符号化処理部213は画像データに対して予測符号化処理を行い、その内部に遅延メモリ214、転送用バッファ216を実装する。また、中央処理装置部230中のRAM236に復号値バッファ239を備える。
【0060】
図2(b)に示す構成において、遅延メモリ214には注目画素を処理した際の局部復号値が逐次記憶される。転送用バッファ216には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の局部復号値が複数画素分記憶される。また転送用バッファ217には、バンド領域の上端画素の参照画素の局部復号値が複数画素分記憶される。また復号値バッファ239には、バンド領域の下端部の画素(次バンドの上端画素処理時の参照画素)を処理した際の局部復号値が全て記憶される。
【0061】
●遅延メモリ動作
まず、図7(b)のフローチャートと、図4、図5、図8を用いて、第2実施形態における予測符号化処理及び遅延メモリ214へのアクセスについて説明する。図8は、図2(b)中の予測符号化処理部213の詳細な構成例と、復号値バッファ239との関係を示す図である。また図5は、図1(a)中のバンド領域120において、注目画素eを処理する様子を示す図である。図5において点線で囲んだ領域510は、注目画素eを処理するために必要な局部復号値を演算結果として有する参照画素の位置を示しており、図4(c)に示すa、b、c、d、eに対応している。
【0062】
まずS801において、注目画素eを処理するために必要となる、画素a、b、c、dを処理した際の局部復号値(以降、画素xを処理した際の局部復号値を復号値xと称する。即ち、xは注目画素からの相対的な位置を示す)を読み出す。復号値a、b、cは遅延メモリ870(図2(b)の遅延メモリ214に対応)に記憶されており、入力画素eの直前に処理された画素dを処理した際の復号値dは、遅延レジスタ850に記憶されている。復号値a、b、cは、遅延メモリ870から遅延回路860を介して取り出され、予測器800に入力される。加えて、復号値dも遅延レジスタ850から予測器800に入力される。
【0063】
そしてS802において、予測器800は復号値a、b、c、dを用いて予測値801を計算し、出力する。
【0064】
そしてS803において、予測値801を復号する。すなわち、まず減算器810が入力画素eと予測器800から出力された予測値801の差分値802を計算し、出力する。次に量子化器820が、減算器810から出力された差分値802を量子化代表値に量子化し、符号化値803として出力する。次に逆量子化器830が、量子化器820から出力された符号化値803を量子化代表値に逆量子化し、量子化代表値804を出力する。次に加算器840が、予測器800から出力された予測値801と、逆量子化器830から出力された量子化代表値804とを加算し、該加算結果を復号値805として出力する。
【0065】
次にS804において、加算器840から出力された復号値805が遅延レジスタ850に記憶され、次の画素を処理する際に用いられる。また、注目画素eを処理するために用いられた復号値dは、遅延回路860を介して遅延メモリ870に記憶され、バンド領域の幅方向における次の列の画素を処理する際に用いられる。
【0066】
第2実施形態では上述した第1実施形態と同様に、遅延メモリ870として最低限必要となる容量(遅延メモリ容量)は、バンド領域の高さ方向の画素数に依存するため、画像サイズによらずに任意に設定可能である。従って、1ページの高さが同じである場合、分割数を多くすればバンド領域の高さは非常に小さくなり、遅延メモリ容量を大幅に削減することができる。
【0067】
●転送用バッファ、誤差バッファ動作
次に、図7(a)のフローチャートを用いて、転送用バッファおよび復号値バッファへのアクセスについて説明する。ここでも上述した第1実施形態と同様に、図1(a)中のバンド領域120を処理する場合を例とする。
【0068】
まずS700において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図5(b)の状態)、S701で転送用バッファA890に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素a、dを処理した際の復号値a、dである。必要なデータが存在している場合、転送用バッファA890から復号値a、dを読み出し、遅延メモリ870に記憶されている復号値b、cと合わせて用いて符号化処理を行う(S704)。一方、転送用バッファA890に必要なデータが存在していない場合には、復号値バッファ880から転送用バッファA890へ、必要なデータを含む複数画素分の復号値をバースト転送で読み出す(S702)。そして、該バースト読み出ししたデータに含まれる復号値a、dと、遅延メモリ870に記憶されている復号値b、cとを合わせて用いて符号化処理を行う(S704)。
【0069】
一方、S700で注目画素eがバンド領域120の上端部でない場合(図5(a)の状態)には、遅延メモリ870に記憶されている復号値a、b、cと、遅延レジスタ850に記憶されている復号値dを用いて符号化処理を行う(S704)。
【0070】
そして次にS705において、注目画素eがバンド領域120の下端部であるか否かの判定を行う。注目画素eがバンド領域120の下端部であった場合(図5(c)の状態)、符号化処理を行った際の復号値eを転送用バッファB895に書き込む(S706)。続いてS707において、所定の画素分を転送用バッファB895に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファB895に記憶されている複数画素分の復号値をまとめて、復号値バッファ880へバースト転送で書き込み(S708)、その後、画像出力部220へ符号化結果を出力する。一方、S705で注目画素eがバンド領域120の下端部でない場合(図5(a)の状態)、または、S707で所定の画素分が転送用バッファB895に書き込まれていない場合には、そのままS709に進み、画像出力部220へ符号化結果を出力する。
【0071】
なお、入力画像データにおける一番上のバンド領域(ページの先頭バンド)の上端部(図1(a)中のバンド領域110の上端部)を処理する際には、復号値バッファ880からの読み出しは行わない。同様に、入力画像データの一番下のバンド領域(ページの最終バンド)の下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、復号値バッファ880への書き込みは行わない。
【0072】
ここで、復号値バッファ880の容量について説明する。第2実施形態における復号値バッファ880として必要な最低限の容量は、バンド領域の幅に相当する1ライン分の画素についての復号値を記憶できる容量であり、以下の式(3)で示される。なお式(3)において、BDlはバンド領域の幅であり、pixは1画素あたりの復号値のデータサイズである。
【0073】
復号値バッファ容量DEbuf=BDl×pix ・・・(3)
なお、予測値を計算するために参照する画素の位置によって、復号値バッファ容量は変動する。
【0074】
また、第2実施形態における転送用バッファの容量に関しては、上述した第1実施形態と同様であるため、説明は省略する。
【0075】
ここで、復号値バッファ880にアクセスするメモリ帯域に関して、上記第2の従来技術と第2実施形態とを比較する。上記第2の従来技術においては、注目画素を処理するために必要な近傍画素の復号値は全て復号値バッファに記憶されているため、1画素毎に復号値バッファへの読み書きが発生する。それに対し第2実施形態では、バンド領域の上端部および下端部の画素を処理する場合にしか、復号値バッファ880への読み書きは発生しない。これは、第2実施形態では複数画素分の復号値を転送用バッファに記憶し、まとめてバースト転送で復号値バッファ880に読み書きするためである。すなわち、復号値バッファ880へのアクセス回数を、上記第2の従来技術に対し、1/(バンド領域の高さ×バースト転送画素数)に削減することができ、メモリ帯域は大幅に削減される。
【0076】
以上説明した様に第2実施形態によれば、画像データに対する予測符号化処理をバンド処理にて行う場合においても、上述した第1実施形態と同様の効果が得られる。すなわち、遅延メモリの容量を削減しつつ、復号値バッファにアクセスする際のメモリ帯域を削減することができ、ハードウェアの実装コストを大幅に削減することができる。
【0077】
<第3実施形態>
以下、本発明に係る第3実施形態について説明する。上述した第1および第2実施形態では、図1(b)に示す片方向走査によるバンド処理を行う例を示したが、第3実施形態では、これを双方向走査にて行う例を示す。
【0078】
●双方向走査
第3実施形態においては、図1(c)の矢印190で示すように、バンド内を双方向走査することによって誤差拡散処理を行う場合を例として説明する。なお、第3実施形態における画像処理装置の構成は上述した第1実施形態に示す図2(a)および図6と同様であるため、説明を省略する。
【0079】
図1(b)によれば、バンド領域の左上の画素から走査を開始し、バンド領域の高さ方向を下方向に向かって走査(下方向走査)する。そして、バンド領域の下端の画素の処理が終わると、バンド領域の幅方向に1画素遷移し、バンド領域の下端の画素から上方向に向かって走査(上方向走査)を開始する。この一連の走査をバンド領域全体の画素について終了するまで行う。
【0080】
このような双方向走査で誤差拡散処理を行うと、誤差の拡散方向の偏りが減少し、ドット間隔の均一性が向上するため、粒状性を向上させることが可能である。従って第3実施形態によれば、上述した第1実施形態と比較して、バンド領域内の画質を向上させることができる。
【0081】
ここで、下方向走査を行う場合の誤差拡散係数として図4(a)を用いるとすると、上方向走査を行う場合の誤差拡散係数は、図4(a)を垂直方向に反転させた、図11(a)に示す形状となる。この場合、注目画素*に対して近傍画素から拡散される誤差の計算に用いられるフィルタは、図11(b)に示すように、図11(a)の誤差拡散係数に対して点対称の形状となる。図11(c)は、注目画素をeとした場合に、該注目画素eに対して誤差拡散処理を実行する際に参照される画素の位置関係をa〜dの記号で示したものであり、すなわち、注目画素eの処理時に、a〜dの位置の画素の誤差を参照する必要がある。なお、a〜dの位置の画素の量子化誤差は、画像処理部の中に実装した遅延メモリに記憶されている。
【0082】
●転送用バッファ、誤差バッファ動作
次に、転送用バッファおよび誤差バッファへのアクセスについて、図13のフローチャートと図12を用いて説明する。なお、図5がバンド領域内の下方向走査の様子を示すのに対し、図12は上方向走査の様子を示している。
【0083】
まずS900において、現在のバンド内走査が下方向走査であるか否かの判定を行う。下方向走査である場合は、転送用バッファおよび誤差バッファの動作は上述した第1実施形態と同様である。すなわちこの場合には、図3(a)で説明したS300〜S309と同様の処理を行うため、ここでは詳細な説明を省略する。
【0084】
一方、バンド内走査が上方向走査である場合には、S901に進み、注目画素eがバンド領域120の下端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の下端部の画素であれば(図12(c)の状態)、遅延レジスタ630に記憶されている量子化誤差a、bを用いて誤差拡散処理を行う(S902)。このとき、c、dの位置の画素については未処理のバンド領域に属するため、参照することができないことに留意されたい。
【0085】
続いて、誤差拡散処理を行った際の量子化誤差eを転送用バッファB695に書き込む(S903)。続いてS904において、所定の画素分を転送用バッファB695に書き込んだか否かの判定を行う。所定の画素分を書き込んだ場合、転送用バッファB695に記憶されている複数画素分の量子化誤差をまとめて、誤差バッファ680へバースト転送で書き込み(S905)、その後、画像出力部220へ量子化結果を出力する(S911)。
【0086】
一方、S901で注目画素eがバンド領域120の下端部の画素でないと判定された場合、S906において、注目画素eがバンド領域120の上端部の画素であるか否かの判定を行う。注目画素eがバンド領域120の上端部の画素であれば(図12(b)の状態)、S907で転送用バッファA690に注目画素eの処理に必要なデータが存在するか否かの判定を行う。この場合の必要なデータとは、一つ前のバンド領域の下端部(図1(a)におけるバンド領域110中の領域150)の画素である画素aを処理した際の量子化誤差aである。必要なデータが存在している場合、転送用バッファA690から量子化誤差aを読み出す(S909)。そして、該量子化誤差aと、遅延メモリ620に記憶されている量子化誤差b、cと、遅延レジスタ630に記憶されている量子化誤差dを合わせて用いて誤差拡散処理を行う(S910)。一方、転送用バッファA690に必要なデータが存在していない場合には、誤差バッファ680から転送用バッファA690へ、必要なデータを含む複数画素分の量子化誤差をバースト転送で読み出す(S908)。そして、該バースト読み出ししたデータに含まれる量子化誤差aを転送用バッファA690から読み出す(S909)。そして、該量子化誤差aと、遅延メモリ620に記憶されている量子化誤差b、c、および遅延レジスタ630に記憶されている量子化誤差dと合わせて用いて誤差拡散処理を行う(S910)。
【0087】
また、S906で注目画素eがバンド領域120の上端部の画素でないと判定された場合(図12(a)の状態)、遅延メモリ620内の量子化誤差a、b、cと、遅延レジスタ630内の量子化誤差dを用いて誤差拡散処理を行う(S910)。以上のようにS910で誤差拡散処理が施された後、画像出力部220へ量子化結果を出力する(S911)。
【0088】
なお、入力画像データの上端バンド領域における上端部(図1(a)中のバンド領域110の上端部)を処理する際には、誤差バッファ680へのアクセスは行わない。同様に、入力画像データの下端バンド領域における下端部(図1(a)中のバンド領域130の下端部)を処理する際にも、誤差バッファ680へのアクセスは行わない。
【0089】
このように、バンド内の双方向走査によって誤差拡散処理を行う場合、下方向走査の場合はバンド領域間を跨いで連続的に誤差を拡散することができる。しかしながら、上方向走査の場合は未処理のバンド領域からは誤差を拡散できないため、バンド領域を跨って連続的な処理ができない。従って、下方向走査を行う場合にのみ、バンド領域間を跨って誤差を拡散するように制御すること、すなわち、誤差バッファ680に対するアクセス(バースト転送)を行うように制御することも可能である。この場合、バンド領域の幅方向で考えると、2画素に1回バンド領域を跨る誤差拡散が発生することになり、誤差バッファ680の容量を、上述した第1実施形態と比較して1/2に削減することができる。さらに誤差バッファ680へのアクセス回数に関しても、やはり1/2に削減することができる。
【0090】
以上説明したように第3実施形態によれば、バンド内で双方向走査を行うことによっても、上述した第1および第2実施形態と同様の効果が得られる。さらに、バンド領域を跨る処理を行うか否かを走査方向に応じて制御することで、回路規模のさらなる縮小が可能となる。
【0091】
なお、上述した各実施形態においては、誤差拡散処理や予測符号化処理といった、ある画素を処理した際の演算結果を、続く画素を処理する際に用いる画像処理を例として説明した。しかしながら本発明はこのような処理に限定されず、一般的なフィルタ処理等の局所的な画像処理であれば、有効に適用される。
【0092】
本発明の特徴はすなわち、画像処理の内容とバンド処理の制約とを加味して、遅延メモリと誤差バッファを階層的に構成することにある。これにより、画像処理部の近くに設置された遅延メモリは小容量となり、画像処理部の遠くに設置された誤差バッファへの読み書きの回数が削減できるようになる。
【0093】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【0094】
例えば、上記遅延メモリを、画像処理プロセッサから低レイテンシかつ高速に読み書き可能な1次キャッシュメモリとし、誤差バッファを、プロセッサからの読み書きは低速でも大容量の一時記憶が可能な2次キャッシュメモリとする構成も考えられる。このような構成でも、上記各実施形態と同様の効果が得られる。
【特許請求の範囲】
【請求項1】
画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、
前記バンド領域をその短辺方向に走査して注目画素を決定する走査手段と、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、
前記画像処理手段の外部に設けられ、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素についての前記画像処理手段による演算結果を記憶する外部記憶手段と、を有し、
前記画像処理手段は、
前記バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、
前記バンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段にバースト転送するために一時的に保持する第1の保持手段と、
前記バンド領域の直前に処理されたバンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第2の保持手段と、を有することを特徴とする画像処理装置。
【請求項2】
前記画像処理手段は、前記注目画素が、前記バンド領域における、直前に処理されたバンド領域と隣接する第2の境界部に位置する画素である場合、前記第2の保持手段に前記外部記憶手段からバースト転送された画素についての演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行うことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記画像処理手段は、前記注目画素が、前記バンド領域における前記第1の境界部に位置する画素である場合、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する画像処理を行い、該注目画素に対する演算結果を、前記第1の保持手段を用いて前記外部記憶手段にバースト転送することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記外部記憶手段は、前記近傍領域において前記注目画素よりも前に処理される、該バンド領域の長辺方向のライン数と、該バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶可能な容量を、少なくとも有することを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項5】
前記第1および第2の保持手段のそれぞれは、前記外部記憶手段に対する1回の前記バースト転送によって転送されるデータサイズ分の容量を、少なくとも有することを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記内部記憶手段は、前記近傍領域において前記注目画素の走査ラインよりも前に走査される走査ライン数と、前記バンド領域の短辺方向分の画素数とを乗じた画素数分の演算結果を記憶可能な容量を、少なくとも有することを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
前記画像処理手段は前記注目画素に対して誤差拡散処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの量子化誤差が記憶されることを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
前記画像処理手段は前記注目画素に対して予測符号化処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの復号値が記憶されることを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項9】
前記走査手段は、前記バンド領域の短辺方向に双方向走査を行って注目画素を決定し、
前記画像処理手段は、前記バンド領域の前記短辺方向に前記第1の境界部への走査を行う場合に、前記外部記憶手段に対する前記バースト転送を行うことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
画像処理手段の内部に、内部記憶手段と、該画像処理手段の外部に設けられた外部記憶手段へのバースト転送時に利用される第1の保持手段と、前記外部記憶手段からのバースト転送時に利用される第2の保持手段と、を有する画像処理装置において、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理方法であって、
前記バンド領域をその短辺方向に走査して注目画素を決定する走査ステップと、
前記注目画素に対して、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行い、該注目画素に対する演算結果を前記内部記憶手段に記憶する画像処理ステップと、を有し、
前記画像処理ステップにおいては、
前記注目画素が、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素である場合に、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する演算を行い、該注目画素に対する演算結果を、前記第1の保持手段を用いて前記外部記憶手段にバースト転送する第1の境界処理ステップと、
前記注目画素が、前記バンド領域における、直前に処理されたバンド領域と隣接する第2の境界部に位置する画素である場合に、前記第2の保持手段に前記外部記憶手段からバースト転送された画素についての演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行う第2の境界処理ステップと、
を有することを特徴とする画像処理方法。
【請求項11】
画像処理装置が備えるコンピュータに、請求項10に記載の画像処理方法の各ステップを実行させるためのプログラム。
【請求項1】
画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理装置であって、
前記バンド領域をその短辺方向に走査して注目画素を決定する走査手段と、
前記注目画素に対し、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行う画像処理手段と、
前記画像処理手段の外部に設けられ、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素についての前記画像処理手段による演算結果を記憶する外部記憶手段と、を有し、
前記画像処理手段は、
前記バンド領域内における、前記注目画素に対する前記近傍領域の画素についての演算結果を記憶する内部記憶手段と、
前記バンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段にバースト転送するために一時的に保持する第1の保持手段と、
前記バンド領域の直前に処理されたバンド領域における前記第1の境界部に位置する画素についての演算結果を前記外部記憶手段からバースト転送して一時的に保持する第2の保持手段と、を有することを特徴とする画像処理装置。
【請求項2】
前記画像処理手段は、前記注目画素が、前記バンド領域における、直前に処理されたバンド領域と隣接する第2の境界部に位置する画素である場合、前記第2の保持手段に前記外部記憶手段からバースト転送された画素についての演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行うことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記画像処理手段は、前記注目画素が、前記バンド領域における前記第1の境界部に位置する画素である場合、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する画像処理を行い、該注目画素に対する演算結果を、前記第1の保持手段を用いて前記外部記憶手段にバースト転送することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記外部記憶手段は、前記近傍領域において前記注目画素よりも前に処理される、該バンド領域の長辺方向のライン数と、該バンド領域の長辺方向分の画素数とを乗じた画素数分の演算結果を記憶可能な容量を、少なくとも有することを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項5】
前記第1および第2の保持手段のそれぞれは、前記外部記憶手段に対する1回の前記バースト転送によって転送されるデータサイズ分の容量を、少なくとも有することを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記内部記憶手段は、前記近傍領域において前記注目画素の走査ラインよりも前に走査される走査ライン数と、前記バンド領域の短辺方向分の画素数とを乗じた画素数分の演算結果を記憶可能な容量を、少なくとも有することを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
前記画像処理手段は前記注目画素に対して誤差拡散処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの量子化誤差が記憶されることを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
前記画像処理手段は前記注目画素に対して予測符号化処理を行い、
前記内部記憶手段および前記外部記憶手段には、前記画像処理手段による演算結果として画素ごとの復号値が記憶されることを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項9】
前記走査手段は、前記バンド領域の短辺方向に双方向走査を行って注目画素を決定し、
前記画像処理手段は、前記バンド領域の前記短辺方向に前記第1の境界部への走査を行う場合に、前記外部記憶手段に対する前記バースト転送を行うことを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
画像処理手段の内部に、内部記憶手段と、該画像処理手段の外部に設けられた外部記憶手段へのバースト転送時に利用される第1の保持手段と、前記外部記憶手段からのバースト転送時に利用される第2の保持手段と、を有する画像処理装置において、画像データを一定方向に分割して得られた複数のバンド領域に対し、該バンド領域毎に逐次的に画像処理を行う画像処理方法であって、
前記バンド領域をその短辺方向に走査して注目画素を決定する走査ステップと、
前記注目画素に対して、予め定められた近傍領域内で既に処理済みの画素についての演算結果を参照した演算を行い、該注目画素に対する演算結果を前記内部記憶手段に記憶する画像処理ステップと、を有し、
前記画像処理ステップにおいては、
前記注目画素が、前記バンド領域における、次に処理されるバンド領域と隣接する第1の境界部に位置する画素である場合に、前記内部記憶手段に記憶された画素についての演算結果を用いて該注目画素に対する演算を行い、該注目画素に対する演算結果を、前記第1の保持手段を用いて前記外部記憶手段にバースト転送する第1の境界処理ステップと、
前記注目画素が、前記バンド領域における、直前に処理されたバンド領域と隣接する第2の境界部に位置する画素である場合に、前記第2の保持手段に前記外部記憶手段からバースト転送された画素についての演算結果と、前記内部記憶手段に記憶された画素についての演算結果を用いて、該注目画素に対する演算を行う第2の境界処理ステップと、
を有することを特徴とする画像処理方法。
【請求項11】
画像処理装置が備えるコンピュータに、請求項10に記載の画像処理方法の各ステップを実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−48401(P2012−48401A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−188753(P2010−188753)
【出願日】平成22年8月25日(2010.8.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願日】平成22年8月25日(2010.8.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]