説明

画像処理装置及び画像処理方法

【課題】画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供する。
【解決手段】画像データをブロック単位で取得する取得手段と、前記取得した所定の数の画像ブロックを保持する保持手段と、前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段とを備え、前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像入力センサから画像データを取得し、誤差拡散処理して2値画像を得る画像処理装置及び画像処理方法に関する。
【背景技術】
【0002】
プリンタあるいは複写機等の画像形成装置に用いられる画像記録方式として、電子写真方式が知られている。電子写真方式は、レーザビームを利用して感光ドラム上に潜像を形成して、帯電した色材(以下、トナーと称する)により現像するものである。画像の記録は、現像されたトナーによる画像を転写紙に転写して定着させることにより行う。
【0003】
昨今の技術の進歩に伴いその画像データの高解像度化が進み、上記電子写真機器からの出力解像度はいまや1200dpi(dot per inch)や2400dpiといった値にまで至っている。そういった高解像度のディジタル画像の処理を実時間で行うためにはハードウェアを用いる事が多い。複写機に代表される大型の事務機器の場合スキャナから取り込んだ画像を実時間でプリント出力する事が求められ、そのプリント速度が機器の性能を示すひとつの尺度になっていることがハードウェアでの実時間画像処理が必要になる大きな理由である。しかしながらハードウェアでの画像処理を考えた場合、その処理の複雑度や処理画像の大きさに比例しそのハードウェア回路規模、内蔵するメモリの増大によるコストアップというトレードオフの問題を常に抱えている。
【0004】
上記のような高解像度画像を高速にそして低コストに処理するための画像処理技術に関しては数々の技術が知られている。その中のひとつとして、画像を複数のブロックに分割し最後に結合するといった手法がある。
【0005】
従来より、ディジタルプリンタ、ディジタル複写機等において、中間調を表現するための2値化手法として、非特許文献1の中で提案された誤差拡散法がある。この手法は、2値化処理で発生した誤差を周辺の画素に分散し、画像濃度を保存することに特徴があるものである。
【0006】
ここで、誤差拡散法に入力される画像を複数のブロックに分割して処理するための技術として、例えば、特許文献1がある。特許文献1では、次の領域へ繰り越す累積誤差を記憶するメモリを用いて、次の領域より受け取る誤差成分をオーバーラップ処理により近似する方法を開示している。この方法は、近似誤差が少なく、また誤差配分マトリクスを自由に選べることから、2値化の際に発生する粒状性ノイズの少ない画像を得やすいという特徴があるため、最も多く用いられているものである。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平3−118674号公報
【特許文献2】特開2005−284662号公報
【非特許文献】
【0008】
【非特許文献1】Floid、Steinberg著「An Adaptive Algorithm for Spatial GrayScale」SID DIGEST、1975年
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1においても、接合部分で画質劣化を招いてしまい、ブロック単位で処理できないという問題がある。
【0010】
また、特許文献2においては、誤差の分散領域に応じて分割画像のサイズを決定することで画像劣化を招かずに処理する方法を開示している。
【0011】
この方法は、図14に示すような誤差の拡散範囲の場合には、ブロックの副走査方向のサイズは1画素に固定される。また、図15に示すような誤差の拡散範囲の場合には、ブロックの副走査方向のサイズを任意に決定することができる。しかし、図15に示すような誤差の拡散範囲の場合には、誤差が周囲に十分に伝播することができず、画像劣化が発生する。
【0012】
画像劣化を招かずに処理を行うには、処理中の副走査位置における主走査方向の全てのブロックを展開するためのラインメモリが必要になる。主走査幅が大きいほど、また1画素あたりのビット数が多いほどそのメモリサイズは大きくなる。1200dpiA3の画像が入力の場合その主走査画素数は14000画素にものぼり、1画素あたりCMYK4色、10ビットとなるとメモリサイズは70Kbyteにものぼる。
【0013】
また、複写機で画像データを圧縮する際にはJPEG圧縮が一般的である。JPEGは、画像を固定サイズ8×8画素のブロックに分割し、そのブロック単位で、離散コサイン変換を用いて、空間領域から周波数領域へ変換する。複写機内では同じ画像サイズで画像のハンドリングを行うことが望ましい。これは、入力する画像サイズが処理によって異なる場合は画像サイズを変換する処理やその処理のためのメモリを保有する必要があり、コストがかかってしまうためである。
【0014】
本発明は上記問題に鑑みてなされたものであり、その課題は、画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供することである。
【課題を解決するための手段】
【0015】
本発明に係る画像処理装置は、画像データをブロック単位で取得する取得手段と、前記取得した所定の数の画像ブロックを保持する保持手段と、前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段とを備え、前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定することを特徴とする。
【発明の効果】
【0016】
本発明によれば、画像劣化が低減された画像処理を低容量のメモリで行う画像処理装置及び画像処理方法を提供することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の一実施形態に係る画像形成装置の概略構成を示すブロック図である。
【図2】本発明の一実施形態に係る画像処理部の構成を示すブロック図である。
【図3】本発明の一実施形態に係るハーフトーン処理部の構成を示すブロック図である。
【図4】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みを示す図である。
【図5】本発明の一実施形態に係る画像形成装置の処理フローを示すフロー図である。
【図6】本発明の一実施形態に係るハーフトーン処理部の処理フローを示すフロー図である。
【図7】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図8】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図9】本発明の一実施形態に係る画像ブロックを示す図である。
【図10】注目ブロックの注目画素に分配される誤差を説明する図である。
【図11】注目ブロックを処理するために必要な領域を説明する図である。
【図12】本発明の一実施形態に係る誤差拡散処理への画像入力の順を示す図である。
【図13】本発明の一実施形態に係る誤差拡散処理への画像入力の順を示す図である。
【図14】誤差拡散処理の誤差分配の重みの例を示す図である。
【図15】誤差拡散処理の誤差分配の重みの例を示す図である。
【図16】本発明の一実施形態に係る平均濃度算出時の重みを示す図である。
【図17】本発明の一実施形態に係る平均濃度保存法の誤差分配の様子を示す図である。
【図18】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みの例を示す図である。
【図19】注目ブロックの注目画素に分配される誤差を説明する図である。
【図20】注目ブロックを処理するために必要な領域を説明する図である。
【図21】本発明の一実施形態に係る誤差拡散処理の誤差分配の重みの例を示す図である。
【図22】本発明の一実施形態に係る誤差拡散処理部の構成を示す図である。
【図23】本発明の一実施形態に係る重み付け演算器の構成を示す図である。
【図24】本発明の一実施形態に係る誤差制御部の構成を示す図である。
【図25】本発明の一実施形態に係る誤差バッファの構成を示す図である。
【図26】本発明の一実施形態に係るメモリセレクタの構成を示す図である。
【図27】本発明の一実施形態に係るメモリセレクタの構成を示す図である。
【図28】本発明の一実施形態に係るハーフトーン処理部の構成を示すブロック図である。
【図29】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図30】本発明の一実施形態に係る入力画素制御部の処理フローを示すフロー図である。
【図31】本発明の一実施形態に係る画像処理部の構成を示す図である。
【図32】本発明の一実施形態に係るハーフトーン処理部の制御を説明するための図である。
【図33】本発明の一実施形態に係るハーフトーン処理部の処理フローを示すフロー図である。
【発明を実施するための形態】
【0018】
以下、図面を参照して、本発明の好適な一実施形態を説明する。ただし、この説明は単に例示であり、発明の範囲をこれに限定するものではない。
【0019】
[実施形態1]
[画像形成装置の構成]
図1は本発明の実施形態に係る画像形成装置の構成を示すブロック図である。
【0020】
図1に示すように、画像形成装置は、画像読取部101、画像処理部102、記憶部103、CPU104および画像出力部105を備える。なお、画像形成装置は、画像データを管理するサーバ、プリントの実行を指示するパーソナルコンピュータ(PC)などにネットワークなどを介して接続可能である。
【0021】
画像読取部101は、原稿の画像を読み取り、画像データを出力する。
【0022】
画像処理部102は、濃度調整処理や、色変換処理、プリンタガンマ補正処理、誤差拡散などのハーフトーン処理等が行われる。画像処理部102の処理の詳細については後述する。
【0023】
記憶部103は、ROM、RAM、ハードディスク(HD)などから構成される。ROMは、CPU104が実行する各種の制御プログラムや画像処理プログラムを格納する。RAMは、CPU104がデータや各種情報を格納する参照領域や作業領域として用いられる。このRAMとHD上で画像データを蓄積し、ページのソートや、ソートされた複数ページにわたる原稿を蓄積し、複数部プリント出力を行う。
【0024】
画像出力部105は、記録紙などの記録媒体にカラー画像を形成して出力する。符号106は上述の各部を繋ぐ画像形成装置の内部バスである。
【0025】
次に図2及び図5を参照して、画像処理部102での画像処理全体のフローを詳細に説明する。図2は画像処理部102の構成を示す図である。図5は画像形成装置の処理フローを示す図である。
【0026】
通常プリンタ画像処理としては、S601〜S606に示されるような画像処理が用意されている。本実施形態では、全ての画像処理を8×8画素のブロック単位でこの処理を行う。
【0027】
まず、画像読取部101で取得した画像データを記憶部103のHDへ格納するために圧縮処理部302でJPEGという圧縮手法を使って圧縮処理を行なう(ステップS601)。このとき、CPU104は記憶部103のRAMから画像データを8×8画素のブロック単位で画像処理部102に入力する。画像処理部102は、8×8画素のブロック単位でデータを圧縮し、記憶部103のRAMを経由して記憶部103のHDに格納する。
【0028】
続いてその圧縮されたデータを記憶部103のHDから読み出し、展開処理しラスタ画像へ戻す処理を展開処理部303で行なう(ステップS602)。圧縮されたデータは8×8画素のブロック単位で順次展開され、記憶部103のRAMに格納される。
【0029】
その画像データを出力の色空間にあわせるための色変換処理を色変換処理部304で行い(ステップS603)、濃度の調整を濃度調整処理部305で(ステップS604)、出力ガンマ補正をガンマ補正処理部306で行なう(ステップS605)。このとき、CPU104は記憶部103のRAMから画像データを8×8画素のブロック単位で画像処理部102に入力する。
【0030】
色変換された画像データは誤差拡散法によるハーフトーン処理が実施される(ステップS606)。ここでのハーフトーン処理とは、原画像データの階調値(本実施形態では256階調)を、画像出力部105で印字が可能な2値のデータに変換することをいう。符号309は上述の各部を繋ぐ画像処理装置102の内部バスである。
【0031】
通常は、誤差拡散法の特性上、ブロック単位で誤差拡散処理を行った場合には画像劣化が発生する。このため、ステップS603を実行する前に、ブロックを一度ラインメモリに展開してから画像データを1画素ラインごとに転送、処理する必要がある。このとき、処理中の副走査位置における主走査方向のブロック全てを展開するためのラインメモリが必要になってしまう。しかし、本実施形態ではハーフトーン処理部307の後述する制御によって、ブロック単位で処理を行っても画像劣化を招くことなく処理が可能である。また、画像ブロックを展開するためのラインメモリも不要である。すなわち、ハーフトーン処理に必要な画像ブロックを展開するために必要なメモリ容量を低減することができる。ハーフトーン処理部307による処理の制御の詳細について以下に説明する。
【0032】
[ハーフトーン処理]
本実施形態におけるハーフトーン処理部307の処理内容について説明する。図3はハーフトーン処理部307の構成を示すブロック図である。図6は本実施形態におけるハーフトーン処理の流れを示すフローチャートである。
【0033】
図9は本実施形態における8×8画素の画像ブロックを示す図である。今、図4に示すような誤差拡散マトリクスを前提に、図10に示す注目画素*に伝播される誤差について考えてみる。注目画素に対して誤差を伝播するためには、図4の誤差拡散マトリクスに相当する領域の周辺の誤差が必要になる。すなわち、この注目画素に対する誤差伝播は、注目ブロックの画像データだけでなく右隣の画像ブロックの画素が有する誤差の影響を受ける。このことから、注目ブロックの処理をするのに、図10に示す右隣の画像ブロックの領域を処理する必要がある。よって、本実施形態では、注目ブロックを処理する際に注目ブロックの右隣の画像ブロックと二つ右隣の画像ブロック(すなわち、合計3つの画像ブロック)を画像データから取得し、注目ブロック内の注目画素の推移を制御する。このようにすることで、注目ブロックを処理するのに必要な領域の処理を行う。本実施形態では、画像データから3つの画像ブロックを取得することとしたが、これに限定されず、任意の数の画像ブロックを取得することとしてもよい。例えば、誤差拡散処理の誤差分配の影響範囲に応じて定められた所定の数の画像ブロックを取得することとしてもよい。
【0034】
また、注目ブロックを処理するためには、右隣のブロックを半分以上処理する必要がある。注目ブロックを処理するために、注目ブロック、右隣のブロック、二つ右隣のブロックを処理すると通常より3倍の時間がかかってしまう。よって本実施形態では、注目画素の推移を制御することで、未処理の画素についてのみ処理を行う。注目画素の制御フローについての詳細は、図7及び図8等を参照して後述する。
【0035】
図6に示すハーフトーン処理において、まず、画像入力部401は入力された画像ブロックを入力画像ブロックメモリ402へ格納する(ステップS701)。すなわち、本実施形態において、画像入力部401は、画像データから画像ブロックを取得する手段として機能する。さらに、入力画像ブロックメモリ402は、画像ブロックを保持する手段として機能する。
【0036】
次に、入力画素制御部403は、位置情報が保持されているカウンタ404の情報を基にして誤差拡散処理部405に入力される注目画素を決定する。すなわち、本実施形態において、入力画素制御部403は、注目画素決定制御手段として機能する。入力画素制御部403は、入力画像ブロックメモリ402から画像データを読み出し、決定した注目画素を誤差拡散処理部405に入力する。本件の特徴である入力画素制御部403による処理の制御方法の詳細は、図7及び図8等を参照して後述する。
【0037】
誤差拡散処理部405では、入力された画素に対して誤差拡散処理が行われ(ステップS702)、処理した画素データを出力画像ブロックメモリ406に格納する。誤差拡散処理部405における処理の詳細は、図22から図27等を参照して後述する。
【0038】
注目ブロックに対する処理が終了する(ステップS703)と、画像出力部407が出力画像ブロックメモリ406から読み出した画像データをハーフトーン処理部307から出力する(ステップS704)。すなわち、画像出力部407は、誤差拡散処理が行われた画素を画像ブロック単位で出力する。
【0039】
そして、全てのブロックについて処理が終了したか否かが判断され(ステップS705)、終了していない場合には、上記ステップS701〜ステップ705の処理が行われる。
【0040】
次に、本実施形態のハーフトーン処理における、入力画素制御部403による処理内容について説明する。
【0041】
図7と図8は本実施形態における入力画素制御部403により注目画素を推移させる処理の流れを示すフローチャートである。図7は画像データの左端の画像ブロックに対する注目画素の推移の制御を示すフローチャートである。図8は画像データの左端以外の画像ブロックに対する注目画素の移動の制御を示すフローチャートである。
【0042】
まず、図7を参照して、注目ブロックが画像の左端の画像ブロックだった場合について説明する。
【0043】
注目画素の主操作位置xiと副走査位置yiは図3のカウンタ404で保持されている。入力画素制御部403は、副走査方向の画素位置カウンタの変数cntyに0を設定する。主走査方向の画素終了位置の変数XENDは、次の式に従う。
XEND=2×bl−2
上記式より算出された値をXENDに代入する。ここで、変数blとは画像ブロックの一辺の画素数であり、第一の実施形態ではbl=8なので、XENDは次の値になる。
XEND=2×bl−2=2×8−2=16−2=14
従って、XENDに14を設定し(ステップS801)、さらに主走査方向の画素位置カウンタの変数cntxに0を設定し(ステップS802)、変数の初期化を行う。
【0044】
注目画素の主走査方向の位置の変数xiにcntxを設定し、注目画素の副走査方向の位置の変数yiにcntyを設定する(ステップS803)。
【0045】
そして、入力画像ブロックメモリ402にある(xi,yi)の位置の画素を誤差拡散処理部405に入力する(ステップS804)。誤差拡散処理部405による処理の詳細については後述する。
【0046】
cntxに1を足して(ステップS805)、cntxがXENDより大きくになった場合には(S806;YES)、注目画素を次の副走査へ、条件を満たしていない場合には(S806;NO)、上記ステップS803からステップS805の処理が行われる。
【0047】
cntyに1を足し、XENDから2を引く(ステップS807)。cntyがblより大きくなった場合には(ステップS808;YES)、注目ブロックに対する処理が全て終了したと判断され、終了していない場合には(ステップS808;NO)、上記ステップS802からステップS807の処理が行われる。図12は、図7に示した制御による注目画素の推移を示した図である。
【0048】
以上の処理によれば、注目画素の決定は、変数XENDの値に依存し、変数XENDの値の変化は、画像ブロックのサイズ(変数bl)に依存する。すなわち、注目画素の決定は、画像ブロックのサイズに依存する。しかしながら、注目画素の決定は、この方法に限定されず、任意の方法とすることができる。例えば、後に詳細に説明する誤差拡散処理における誤差分配の影響範囲に応じて、注目画素を決定することとしてもよい。以降に説明する注目画素の決定方法においても同様である。
【0049】
次に、図8を参照して、注目ブロックが画像の左端の画像ブロック以外である場合について説明する。
【0050】
入力画素制御部403は、副走査方向の画素位置カウンタの変数cntyに0を設定し(ステップS901)、さらに主走査方向の画素位置カウンタの変数cntxに0を設定し(ステップS902)、変数の初期化を行う。
【0051】
次に注目画素の主走査方向の位置の変数xiに14+cntxを設定し、注目画素の副走査方向の位置の変数yiにcntyを設定する(ステップS903)。
【0052】
そして、入力画像ブロックメモリ402にある(xi,yi)の位置の画素を誤差拡散処理部405に入力する(ステップS904)。誤差拡散処理部405による処理の詳細については後述する。
【0053】
cntxに1を足して(ステップS905)、cntxがblより大きい場合には(S906;YES)、注目画素を次の副走査へ、条件を満たしていない場合には(S906;NO)、上記ステップS903からステップS905の処理が行われる。
【0054】
cntyに1を足して(ステップS907)、cntyがblより大きくなった場合には(S908;YES)、注目ブロックに対する処理が全て終了したと判断される。終了していない場合には(S908;No)、上記ステップS902からステップS907の処理が行われる。図13は、図8に示した制御による注目画素の推移を示した図である。
【0055】
このような方法で注目画素を決定することで、蓄積された複数の画像ブロックに対して必要最小限の処理することが可能となる。
【0056】
そして、上記の方法によってハーフトーン処理部307に任意のブロックサイズで画像の入力を行っても、注目ブロックの処理に必要な右隣の画像ブロック2つをハーフトーン処理部307に入力することで、画像劣化を招かずにブロック単位で処理が可能となる。すなわち、合計3ブロックを入力することで、画像劣化を招かずにブロック単位で処理が可能となる。その結果、処理中の副走査位置における主走査方向の画像ブロック全てをラインメモリに展開する場合と比較して、ハーフトーン処理に必要なメモリ容量が小さくて済む。たとえばブロックのサイズが8×8画素の画像ブロック、600dpiの場合、1/72のメモリ容量で済むことになる。
【0057】
本実施形態では、8×8画素の画像ブロックに分割している。よって、JPEG処理における処理単位と同じなので、処理単位が異なることで発生する画像サイズの変換処理やその処理で必要となるバッファメモリの増加を抑えることができる。それによって、低コストで画像を出力することが可能である。本実施形態では、画像ブロックのサイズをJPEG処理における処理単位と同じサイズにしたが、これに限定されず、他のデータ形式の画像データ処理における処理単位に応じた画像サイズにしてもよい。
【0058】
また、誤差分配の領域が図18のような形をしていた場合には、図19、図20に示すように右隣のブロックの処理を行う必要がある。この場合、注目ブロックを処理するために必要なブロックは右隣のブロックのみとなり、図3の入力画像ブロックメモリ402、出力画像ブロックメモリ406の容量を削減することができる。
【0059】
そして、誤差分配の領域が図21のような形をしていた場合には、右隣のブロックを参照する必要がなくなる。この場合、注目ブロックを処理するために必要なブロックは注目ブロックのみとなり、図3の入力画像ブロックメモリ402、出力画像ブロックメモリ406の容量を削減することができる。よって、誤差分配の領域がどんな形をしていても画像劣化を招かずに処理することができる。
【0060】
なお、今回はすべて8×8画素の画像ブロック分割で説明を行ったが、それに限定するものではない。また誤差拡散処理の出力ビット数を1ビットとして説明したが、入力多値のビット数より小さい出力であれば、それに限るものではない。
【0061】
図22は誤差拡散処理部405の詳細な構成を示すブロック図である。
【0062】
誤差拡散処理部405に入力された多値のデータDは加算器2301により、この注目画素における誤差データEが加算され、F=D+Eが出力される。
【0063】
次に、比較器2302において、誤差データを付加された注目画素のデータFは、2値化閾値Thと比較され、F>=Thの際には2値信号B=“1”が出力され、F<Thの際には2値化信号B=“0”が出力される。この出力結果から、2値化処理時の2値化誤差E´が減算器2303によりE´=F−B´として算出される。ここで、B´は入力データが256階調(0〜255)である場合、B´=B×255となる。したがって、例えば、入力多値データがD=230、2値化の閾値がTh=128である場合、2値化後の出力データはB=1であり、2値化誤差E´は、次のような値になる。
E´=D−B×255=230−1×255=−25
この2値化誤差E´は、重み付け誤差演算器2304において、所定の誤差マトリクスに従ってこれ以降処理される画素のデータに対して分配するために、誤差制御部2305に格納される。さらに、次の画素の多値データに加算器2301により加算され誤差データの伝播が行われる。すなわち、上記の例では入力多値データ230に対して25の誤差が生じる。したがって、入力D=230における誤差データ255に対する誤差25を2値化誤差とし、この誤差を重み付け誤差演算器2304で、誤差マトリクスを用いて、未処理の画素の誤差制御部2305へ誤差分配し、以降の画素での2値化処理に反映される。
【0064】
重み付け誤差演算器2304について、図23を使って詳細を説明する。
誤差バッファ2401は、注目画素と同じ主走査への分配誤差を算出するための回路である。誤差バッファ2402は、注目画素に対して副走査方向に一つ下の画素への分配画素を算出するための回路である。誤差バッファ2403は、注目画素に対して副走査方向に二つ下の画素への分配画素を算出するための回路である。
【0065】
図22の減算器2303から出力された誤差データは誤差バッファ2401、誤差バッファ2402、誤差バッファ2403に入力される。誤差バッファ2401は次の画素へ分配される誤差を出力する。
【0066】
誤差バッファ2402に入力された画素データはレジスタ24001に格納される。レジスタ24001からレジスタ24005はシフトレジスタであり、画素毎にシフトされる。レジスタ24002には一つ前の画素の誤差が格納されている。加算器24006は、レジスタ24001の出力に重み付け係数3を乗じた値とレジスタ24002の出力に重み付け係数5を乗じた値とを加算し、加算器24008へ供給する。加算器24007は、レジスタ24003の出力に重み付け係数7を乗じた値とレジスタ24004の出力に重み付け係数5を乗じた値とを加算し、加算器24008へ供給する。加算器24008は、加算器24006の出力と加算器24007の出力を加算し、加算器24009へ供給する。加算器24009は、加算器24008の出力とレジスタ24005の出力に重み付け係数3を乗じた値とを加算し、図22の誤差制御部2605に供給する。
【0067】
誤差バッファ2403に入力された画素データはレジスタ240001に格納される。レジスタ240001からレジスタ240005はシフトレジスタであり、画素毎にシフトされる。レジスタ240002には一つ前の画素の誤差が格納されている。加算器240006は、レジスタ240001の出力とレジスタ240002の出力に重み付け係数3を乗じた値とを加算し、加算器240008へ供給する。加算器240007は、レジスタ240003の出力に重み付け係数5を乗じた値とレジスタ240004の出力に重み付け係数3を乗じた値とを加算し、加算器240008へ供給する。加算器240008は、加算器240006の出力と加算器240007の出力を加算し、加算器240009へ供給する。加算器240009は、加算器240008の出力とレジスタ240005の出力とを加算し、図22の誤差制御部2605に供給する。
【0068】
誤差バッファ2401の構成について、図25を使って説明する。
図22の減算器2603から出力された誤差データはセレクタ2601に入力される。セレクタ2601は制御信号によって、回路26001〜回路26008のうち、どの回路にデータを入力するか制御する。セレクタ2601には、cntyの値が入力される。そして、下記のようにデータを入力する回路を選択する。cntyが0なら回路26001。cntyが1なら回路26002。cntyが2なら回路26003。cntyが3なら回路26004。cntyが4なら回路26005。cntyが5なら回路26006。cntyが6なら回路26007。cntyが7なら回路26008。
【0069】
セレクタから回路に入力されたデータはレジスタ260011に格納される。加算器260013は、レジスタ260011の出力に重み付け係数7を乗じた値とレジスタ260012の出力に重み付け係数5を乗じた値を加算し、セレクタ2602に供給する。
【0070】
セレクタ2602はセレクタ2601と同様に制御信号によって選ばれた回路の出力データを出力し、図22の誤差制御部2305に供給する。
【0071】
誤差制御部2305について、図24を使って説明する。
図23の誤差バッファ2402から出力されたデータと誤差バッファ2403から出力されたデータがメモリセレクタ2501に入力される。メモリセレクタ2501は制御信号3カウントカウンタ2503とカウンタからの信号によって、誤差データを書き込む誤差メモリ、誤差ラインメモリを選択する。メモリセレクタ2502は、制御信号によってアクセスする誤差メモリ、誤差ラインメモリを決定し、誤差データを読み出す。メモリセレクタ2501とメモリセレクタ2502の詳細については後述する。加算器2504は、メモリセレクタ2082から出力された注目画素に分配される誤差と注目画素に分配される誤差を加算し、加算器2505に供給する。加算器2505は、加算器2504の出力と図23の誤差バッファ2401からの出力を加算し、図22の加算器2601に注目画素へ分配される誤差として供給する。
【0072】
図24のメモリセレクタ2501のアクセスするメモリの制御方法について図26を使って説明する。
【0073】
セレクタ2701は、制御信号によって出力を選択する。制御信号は図24の3カウントカウンタの出力信号である。3カウントカウンタは、副走査方向の画素位置cntyを3で割った余りが出力される。3カウントカウンタの出力が2のとき、セレクタ2701は図23の誤差バッファ2403の出力を誤差メモリ25001に供給する。誤差メモリ25001への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0074】
セレクタ2702は、セレクタ2701同様に3カウントカウンタの出力で出力を切り替える。3カウントカウンタの出力が0のとき、セレクタ2702は図23の誤差バッファ2402の出力を誤差メモリ25002に供給する。誤差メモリ25002への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0075】
セレクタ2703は、セレクタ2701同様に3カウントカウンタの出力で出力を切り替える。3カウントカウンタの出力が0のとき、誤差バッファ2403の出力を誤差メモリ25003に供給する。誤差メモリ25003への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0076】
セレクタ2704は、セレクタ2701同様に3カウントカウンタの出力で出力を切り替える。3カウントカウンタの出力が1のとき、誤差バッファ2402の出力を誤差メモリ25004に供給する。誤差メモリ25004への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0077】
セレクタ2705は、セレクタ2701同様に3カウントカウンタの出力で出力を切り替える。3カウントカウンタの出力が1のとき、誤差バッファ2403の出力を誤差メモリ25005に供給する。誤差メモリ005への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0078】
セレクタ2706は、セレクタ2701同様に3カウントカウンタの出力で出力を切り替える。3カウントカウンタの出力が2のとき、誤差バッファ2403の出力を誤差メモリ25006に供給する。誤差メモリ25006への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0079】
セレクタ2707は、主走査カウンタから信号が出力される。信号はcntyが6のとき1を出力する。それ以外のときは0が出力される。制御信号が1のときに誤差バッファ2403の出力を誤差ラインメモリ25007に供給する。
【0080】
セレクタ2708は、主走査カウンタから信号が出力される。信号はcntyが7のとき1を出力する。それ以外のときは0が出力される。制御信号が1のときに誤差バッファ2402の出力を誤差ラインメモリ25008に供給する。また、誤差バッファ2403の出力を誤差ラインメモリ25009に供給する。誤差ラインメモリ25007、25008、25009への書き込むアドレスはカウンタから入力されるcntxに2を加算した値を使用する。
【0081】
図24のメモリセレクタ2502のアクセスするメモリの制御方法について図27を使って説明する。
【0082】
セレクタ2801は、制御信号によって出力を切り替える。セレクタ2801に入力される制御信号は図24の3カウントカウンタの出力信号である。3カウントカウンタは、副走査方向の画素位置cntyを3で割った余りが出力される。3カウントカウンタの出力が0とき、誤差メモリ28006からの出力をセレクタ2806に供給する。3カウントカウンタの出力が1とき、誤差メモリ25002からの出力をセレクタ2806に供給する。3カウントカウンタの出力が2とき、誤差メモリ25004からの出力をセレクタ2806に供給する。
【0083】
セレクタ2802は、セレクタ2801同様、制御信号によって出力を切り替える。3カウントカウンタの出力が0とき、誤差メモリ25005からの出力をセレクタ2807に供給する。3カウントカウンタの出力が1とき、誤差メモリ25001からの出力をセレクタ2807に供給する。3カウントカウンタの出力が2とき、誤差メモリ25003からの出力をセレクタ2807に供給する。
【0084】
上記セレクタがアクセスするメモリのアドレスはいずれもカウンタより出力されるcntxがアドレスとして使用される。
【0085】
セレクタ2803は、制御信号によって出力を切り替える。カウンタ404から出力されるcntyの値によって制御される。cntyが0のとき、誤差ラインメモリ25007の出力をセレクタ2806に供給する。
【0086】
セレクタ2804は、制御信号によって出力を切り替える。カウンタ404から出力されるcntyの値によって制御される。cntyが0のとき、誤差ラインメモリ25008の出力をセレクタ2807に供給する。
【0087】
セレクタ2805は、制御信号によって出力を切り替える。カウンタ404から出力されるcntyの値によって制御される。cntyが1のとき、誤差ラインメモリ25009の出力をセレクタ2807に供給する。
【0088】
セレクタ2806は、制御信号によって出力を切り替える。カウンタ404から出力されるcntyの値によって制御される。cntyが0のとき、セレクタ2803の出力を図24の加算器2504に供給する。cntyが0以外のとき、セレクタ2801の出力を図24の加算器2504に供給する。
【0089】
セレクタ2807は、制御信号によって出力を切り替える。カウンタ404から出力されるcntyの値によって制御される。cntyが0のとき、セレクタ2805の出力を図24の加算器2504に供給する。cntyが1のとき、セレクタ2806の出力を図24の加算器2504に供給する。cntyが0、1以外のとき、セレクタ2802の出力を図24の加算器2504に供給する。
【0090】
誤差ラインメモリのアクセスアドレスとしては、カウンタ404から出力されるxiが使用される。
【0091】
このような方法で誤差を制御することで、画像データを複数のブロックに分割し、各々で処理しても誤差の分配を正しく行うことができる。すなわち、画像の劣化を低減させた画像処理を行うことができる。
【0092】
以上のように、本実施形態によれば、画像劣化が低減された画像処理を低容量のメモリで行うことができる。
【0093】
[実施形態2]
以下、本発明の第2の実施形態に係る画像処理を説明する。
本実施形態においては、ハーフトーン処理を行う際に、周辺の平均濃度を保持しつつ2値化を行っていく平均濃度保存法を行った場合を例として説明する。
【0094】
本実施形態でも画像処理部102で行われる図5の工程は変わらないので詳細の説明は割愛する。第1の実施形態との差分としは誤差拡散法を使った2値化ではなく、平均濃度保存法による2値化である点なので、その点の説明を詳細に行う。
【0095】
図を用いてその平均濃度保存法の代表的な手法を例にとり説明を行う。今回説明の用いる平均濃度保存法では、注目画素に対して、その周辺で注目画素以前に2値化されている画素に対して図16のようなマスクをかけ、そこから求まる閾値に対して、注目画素の画素値の大小比較を行い、2値化していく。またそのとき発生した誤差は隣接1画素へ分配していく(図17)。平均濃度保存法が前述の誤差拡散法に対して有利な点として、誤差拡散処理では誤差メモリとして多値2ライン必要なのに対し、平均濃度保存法で必要となる誤差メモリは2値2ライン+多値1ラインで済む。これは注目画素を処理する際に必要になるデータが蓄積してある2値化済みのデータである点である。誤差拡散法では拡散させる誤差データを2ライン先まで伝播させるため、2ライン分多値データとして蓄積しておく必要がある。平均濃度保存法では蓄積データは閾値を算出するための2値化済みデータなので、同じ2ラインでもそのメモリ容量が小さく済む。またそこから求まる誤差データの分配は閾値が画素ごとに動的に求まるため遠い画素まで拡散させる必要がなく、高々隣接2画素で十分であることも有利な点である。
【0096】
また、同様に、注目ブロックを処理するためには図11に示す領域の処理が必要であり、入力画素制御部403における制御は実施形態1と同様で、図7、図8のフローである。
【0097】
なお、以上の説明において、ハーフトーン処理を行うために、誤差拡散処理又は平均濃度保存法を用いる場合について説明したが、これらに限定されず、誤差分配を行う任意の処理を用いることができる。
【0098】
[実施形態3]
以下、本発明の第3の実施形態に係る画像処理を説明する。
本実施形態においては、ブロック内で誤差拡散処理を並列化した場合を例として説明する。
【0099】
本実施形態でも画像処理部102で行われる図5の工程は変わらないので詳細の説明は割愛する。他の実施形態との差分としては、図2のハーフトーン処理部の構成が変わることである。その点について詳細に説明を行う。
【0100】
ハーフトーン処理部307の処理内容について説明する。図28は、本実施形態における図2のハーフトーン処理部307の構成図である。図29と図30はハーフトーン部307の処理の流れを示すフローチャートである。
【0101】
まず、図29を参照して、注目ブロックが画像データに対して左端だった場合について説明する。
入力画素制御部2903は、カウンタ2904のcntyを0、XENDを14に設定することで変数の初期化を行う(ステップS3001)。さらに、cntxを0に設定する(ステップS3002)。xiにcntxを代入、yiにcntyを代入する(ステップS3003)。
【0102】
ここから並列に誤差拡散処理が行われる。cntxが9でないとき(ステップS3004;YES)、入力画素制御部2903は画素(xi,yi)を入力画像ブロックメモリ2902から読み出して誤差拡散処理部2905へ出力する(ステップS3005)。また、並行してcntxが0でないとき(ステップS3006;YES)、入力画素制御部2903は画素(xi−3,yi−1)を入力画像ブロックメモリ2902から読み出して誤差拡散処理部2906へ出力する(ステップS3007)。
【0103】
cntxに1を足して(ステップS3008)、cntxがXEND+1より大きい場合は(ステップ3009;YES)、ステップS3010に移行し、条件を満たさない場合には、ステップS3003からステップS3009の処理が行われる。
【0104】
cntyに2を足し、XENDから4を引き(ステップS3010)、cntyがblより大きい場合は(ステップ3011;YES)、注目ブロックに対する処理が終了したと判断する。条件を満たさない場合(ステップ3011;NO)には、ステップS3002からステップS3011の処理が行われる。
【0105】
次に、図29を参照して、注目ブロックが画像データに対して左端以外だった場合について説明する。
【0106】
入力が素制御部2903は、カウンタ2904のcntyを0、cntxを0に設定することで初期化を行う(ステップS3101、ステップS3102)。xiに14+cntxを代入、yiにcntyを代入する(ステップS3103)。
【0107】
ここから誤差拡散処理を並列に実行する。cntyが9でないときは(ステップS3104;YES)、入力画素制御部2903は画素(xi、yi)を入力画像ブロックメモリ2902から読み出して誤差拡散処理部2905へ出力する(ステップS3105)。並行して、cntyが0でないときは(ステップS3106;YES)、入力画素制御部2903は画素(xi−3、yi−1)を入力画像ブロックメモリ2902から読み出して誤差拡散処理部2905へ出力する(ステップS3107)。
【0108】
cntxに1を足して(ステップS3108)、cntxがblより大きい場合には(ステップS3109;YES)、ステップS3110に移行し、条件を満たさない場合には、ステップS3103からステップS3109の処理を行う。
【0109】
cntyに2を足して(ステップS3110)、cntyがblより大きい場合には(ステップS3111;YES)、注目ブロックに対する処理が終了したと判断する。上記条件を満たさない場合には、ステップS3102からステップS3111の処理を行う。
【0110】
このような方法で入力画素制御部2903を制御することで、画像劣化を招かずにブロック内で誤差拡散処理を並列して実行することが可能となる。
【0111】
本実施形態では、2個の並列処理を例にしたが、並列にする個数はこれに限定するものではない。また、本実施形態では、ハーフトーン処理を行うために、誤差拡散処理を用いる場合について説明したが、この方法に限定されず、平均濃度保存法など、他の処理を用いても良い。
【0112】
[実施形態4]
以下、本発明の第4の実施形態に係る画像処理を説明する。
本実施形態においては、ハーフトーン処理を並列化した場合を例として説明する。
【0113】
本実施形態でも画像処理部102で行われる図5の工程は変わらないので詳細の説明は割愛する。他の実施形態との差分としては、図2のハーフトーン処理部の数が複数に増え、図6のフローチャートが複数のハーフトーン処理部のための制御が増えることである。その点について詳細に説明を行う。
【0114】
図31は画像処理部102の構成を示した図である。図32は本実施形態で並列に誤差拡散処理を行うためのブロック制御を説明するための図である。図33は画像処理部102の処理フローを示すフロー図である。
【0115】
図32に示すように、入力画像は複数のブロックに分割されている。各ブロックはブロック位置情報BX、BYによって表現することができる。X方向の位置をBX、Y方向の位置をBYとする。また、画像データは、X方向にXSIZE個、Y方向にYSIZE個、合計XSIZE×YSIZE個のブロックがあるとする。
【0116】
図33に示すように、まず、ブロック(0、0)とブロック(1、0)を図32のハーフトーン処理部3207のメモリへ格納する(ステップS3401)。ブロック(0、1)とブロック(1、1)を図32のハーフトーン処理部3208のメモリへ格納する(ステップS3402)。
【0117】
BXとBYをそれぞれ0に設定する(ステップS3403)。
ここから誤差拡散処理の並列処理を行う。BXがXSIZEより小さいとき(ステップS3404;YES)、ブロック(BX+2、BY)をハーフトーン処理部3207のメモリに格納する(ステップS3405)。そして、ブロック(BX、BY)に対して誤差拡散処理をハーフトーン処理部3207で行う(ステップS3406)。
【0118】
BXが3より大きいとき(ステップS3407;YES)、ブロック(BX+2、BY+1)をハーフトーン処理部3208のメモリに格納する(ステップS3408)。そして、ブロック(BX−3、BY+1)に対して誤差拡散処理をハーフトーン処理部3208で行う(ステップS3409)。
【0119】
BXに1を足して(ステップS3401)、BXがXSIZE+3より大きい場合は(ステップS3411;YES)、ステップS3412へ移行する。上記条件を満たさない場合は、ステップS3404からステップS3411の処理を行う。
【0120】
BYに2を足して(ステップS3412)、BYがYSIZEより大きいとき(ステップS3413;YES)、全てのブロックに対する処理が終了したと判断する。上記条件を満たさない場合は、ステップS3404からステップS3413の処理を行う。
【0121】
このような方法で転送、処理するブロックを制御することで、画像劣化を招かずにブロック単位で誤差拡散処理を並列に処理することが可能となる。本実施形態では、実施形態3で必要なブロック内での誤差情報の受け渡しなどを制御する複雑な回路が必要でないので、実装がより容易である。
【0122】
本実施形態では、2個の並列処理を例にしたが、並列にする個数はこれに限定するものではない。また、本実施形態では、ハーフトーン処理を行うために、誤差拡散処理を用いる場合について説明したが、この方法に限定されず、平均濃度保存法など、他の処理を用いても良い。
【0123】
(その他の実施形態)
本発明は、複数の機器(例えばコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用することも、1つの機器からなる装置(複合機、プリンタ、ファクシミリ装置など)に適用することも可能である。
【0124】
前述した実施形態の機能を実現するように前述した実施形態の構成を動作させるプログラムを記憶媒体に記憶させ、該記憶媒体に記憶されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も上述の実施形態の範疇に含まれる。即ちコンピュータ読み取り可能な記憶媒体も実施例の範囲に含まれる。また、前述のコンピュータプログラムが記憶された記憶媒体はもちろんそのコンピュータプログラム自体も上述の実施形態に含まれる。
【0125】
かかる記憶媒体としてはたとえばフロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD―ROM、磁気テープ、不揮発性メモリカード、ROMを用いることができる。
【0126】
また前述の記憶媒体に記憶されたプログラム単体で処理を実行しているものに限らず、他のソフトウエア、拡張ボードの機能と共同して、OS上で動作し前述の実施形態の動作を実行するものも前述した実施形態の範疇に含まれる。
【符号の説明】
【0127】
401 画像入力部
402 入力画像メモリ
403 入力画素制御部
404 カウンタ
405 誤差拡散処理部
406 出力画像メモリ
407 画像出力部

【特許請求の範囲】
【請求項1】
画像データをブロック単位で取得する取得手段と、
前記取得した所定の数の画像ブロックを保持する保持手段と、
前記保持手段に保持された画像ブロックにおける注目画素を決定する決定手段と、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理手段と
を備え、
前記保持手段により保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定手段は、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とする画像処理装置。
【請求項2】
前記ハーフトーン処理は、誤差拡散処理であることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記ハーフトーン処理は、平均濃度保存法による処理であることを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記決定手段は、前記ハーフトーン処理の誤差分配の影響範囲に応じて前記注目画素を決定することを特徴とする請求項1から請求項3のいずれか1つに記載の画像処理装置。
【請求項5】
前記ハーフトーン処理手段により処理された複数の前記注目画素を前記画像ブロック単位で出力する出力手段を備えることを特徴とする請求項1から請求項4のいずれか1つに記載の画像処理装置。
【請求項6】
前記取得手段により取得する画像ブロックのサイズは、画像データのデータ形式に応じて決定されることを特徴とする請求項1から請求項5のいずれか1つに記載の画像処理装置。
【請求項7】
複数の前記ハーフトーン処理手段を備え、
前記複数のハーフトーン処理手段は、複数の前記注目画素に対して、並列して前記ハーフトーン処理を行うこと
を特徴とする請求項1から請求項6のいずれか1つに記載の画像処理装置。
【請求項8】
前記複数のハーフトーン処理手段は、複数の前記画像ブロックにおける前記注目画素に対して、並列して前記ハーフトーン処理を行うこと
を特徴とする請求項7に記載の画像処理装置。
【請求項9】
画像データをブロック単位で取得する取得ステップと、
前記取得した所定の数の画像ブロックを保持する保持ステップと、
前記保持ステップに保持された画像ブロックにおける注目画素を決定する決定ステップと、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理ステップと
を備え、
前記保持ステップにより保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定ステップは、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とする画像処理方法。
【請求項10】
コンピュータに、
画像データをブロック単位で取得する取得ステップと、
前記取得した所定の数の画像ブロックを保持する保持ステップと、
前記保持ステップに保持された画像ブロックにおける注目画素を決定する決定ステップと、
前記決定した注目画素に対してハーフトーン処理を行うハーフトーン処理ステップと
を実行させるためのプログラムであって、
前記保持ステップにより保持する画像ブロックの数は、前記ハーフトーン処理の誤差分配の影響範囲に応じて定められ、
前記決定ステップは、前記画像ブロックのサイズに応じて前記注目画素を決定すること
を特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate


【公開番号】特開2010−205142(P2010−205142A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−52203(P2009−52203)
【出願日】平成21年3月5日(2009.3.5)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】