JP2004266792A - 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 - Google Patents
画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2004266792A JP2004266792A JP2003104385A JP2003104385A JP2004266792A JP 2004266792 A JP2004266792 A JP 2004266792A JP 2003104385 A JP2003104385 A JP 2003104385A JP 2003104385 A JP2003104385 A JP 2003104385A JP 2004266792 A JP2004266792 A JP 2004266792A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- pixel group
- image data
- center
- gravity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Facsimile Image Signal Circuits (AREA)
Abstract
【解決手段】画像処理装置であって、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、前記画素群生成手段で生成された画素群の重心の位置を決定する画素群重心決定手段と、前記画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、前記画素群生成手段は、前記画素群を構成する画素数に応じて前記閾値を変更することを特徴としている。
【選択図】図25
Description
【発明の属する技術分野】
本発明は、画素の画像データを量子化する処理に関する。
【0002】
【従来の技術】
従来より、階調画像データを量子化することが行われている。例えば、256階調の階調画像データを二値化することなどが行われている。この際、単に、階調画像データを閾値を用いて二値化したのでは誤差が大きい。例えば、階調画像データを0〜255、閾値を128としたと仮定する。この場合、ある画素のデータ(濃度)が50であれば、閾値未満であるため、二値化すると0になる。よって、誤差が50(=50−0)生ずる。
【0003】
そこで、このような量子化の際の誤差を周辺の画素に拡散する誤差拡散法が行われている。誤差拡散法は、例えば、量子化の際の誤差を当該画素の右、下、左下および右下の画素のデータに加算する。誤差拡散法の概要は、例えば特許文献1に記載されている。
【0004】
また、入力された画像データの階調値が閾値に達するまで所定のテーブルにより入力画素を探索してセルを生成し、セル内の中心位置にドットを生成する技術も開示されている(例えば特許文献2)。
【0005】
【特許文献1】
特開平6−62253号公報(図30、図31、図32)
【0006】
【特許文献2】
特開平11−27528(図4、図6)
【0007】
【発明が解決しようとする課題】
しかしながら、誤差拡散法により量子化された画像には、画質上問題が発生することがある。例えば、ハイライト付近などのドット密度が低い領域について、単純に画素を画面の左側から右側へ順番に行順に誤差拡散法により2値化していくと、誤差が右側の画素に伝播し結果的に生成されるドットが鎖状に連なって発生することがある。このような鎖状の特異なパターンをワーム(worm)という。また、ハイライト付近などのドット密度が低い領域において、ドットの生成が誤差拡散法の主走査方向および副走査方向に遅延することがある。すなわち、ハイライト付近の印刷された用紙の上部側では、誤差を伝播させても画素の階調値が閾値に中々達することができず、ドットがない領域が発生することがある。さらに、特定の階調領域の処理を終えた後で、この領域外のデータ(濃度)を歪ませることがある。すなわち、エッジの切り換わり部分(モノクロ印刷では黒色で印刷された部分と白色で印刷された部分の境目部分)では、切り換わり前に伝播された誤差が切り換わり後にも伝播され、結果的にドットの形成を歪ませてしまうことがある。
【0008】
そこで、本発明の第1の目的は、誤差拡散法で問題となる、ワームや、ドット生成の遅延、及び領域外のデータを歪み、を発生させることなく高画質の出力ドットを得ることを目的とする。
【0009】
また、上述した画質上の問題は、誤差拡散法においては、誤差拡散後の各画素のデータ(濃度)が、誤差拡散前の各画素の近傍のデータ(濃度)の分布に対応していないからであると考えられる。
【0010】
そこで、本発明の第2の目的は、画素の画像データを量子化する際に、画像のデータ分布に対応するようにすることを目的とする。
【0011】
また、上述の特開平11−27528では、例えば中間階調値が連続している領域で出力2値画像のON/OFFの切替えが頻繁に行われないように、セルの大きさを制限している。しかし、出力ドットはセルの中心付近に集中させるようにしている(図9参照)ため、ON/OFFの切替えは頻繁に行われないものの入力画像データの分布に忠実なドットが生成されないことになる。
【0012】
そこで、本発明の第3の目的は、一定の密度でドットを生成させ、しかも入力画像データの分布に忠実にドットを生成させることで快適な印刷出力を得ることを目的とする。
【0013】
【課題を解決するための手段】
上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成された画素群の重心の位置を決定する画素群重心決定手段と、画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、画素群生成手段は、画素群を構成する画素数に応じて閾値を変更する画像処理装置であることを特徴としている。これにより、例えば、入力階調値が低い場合や中間階調値が連続する領域でも一定密度で出力ドットを生成することができ、快適な印刷出力を得ることができる。
【0014】
さらに、本発明は、上記画像処理装置であって、上記画素群生成手段は、画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成すること特徴としている。これにより、例えば、生成される画素群は円状に生成され、隣合うドットは均一の距離が保たれ、かかるドットの分散により視覚的に快適な印刷出力を得ることができる
さらに、本発明は、上記画像処理装置であって、上記画素群生成手段は、画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに選択する画素をランダムに選択することを特徴している。これにより、例えば、ドットの周期パターンが発生せず、視覚的に快適な印刷出力を得られる。
【0015】
さらに、本発明は、上記画像処理装置であって、上記画素群生成手段は、画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに、階調画像データ値が最も低い画素を選択することを特徴としている。これにより、例えば、エッジ部分での入力階調値に忠実にドットを生成させることができ、エッジの再現性が向上する。
【0016】
また、上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上よなるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成された画素群の重心の位置を決定する画素群重心位置決定手段と、画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、画素群生成手段は、生成した画素群の画素数が所定の画素数よりも大きいとき、画素群を構成する画素数と画素群を構成する画素の階調値の合計とから閾値を変更することを特徴としている。これにより、例えば、生成された画素群の画素数はほぼ一定となるため、ドット密度も一定で視覚的に快適な印刷出力を得ることができる。
【0017】
また、上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成工程と、画素群生成工程で生成された画素群の重心の位置を決定する画素群重心決定工程と、画素群重心決定工程で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与工程とを備え、画素群生成工程は、画素群を構成する画素数に応じて閾値を変更する画像処理装置であることを特徴としている。
【0018】
また、上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成された画素群の重心の位置を決定する画素群重心決定処理と、画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、を備え、記画素群生成処理は、画素群を構成する画素数に応じて前記閾値を変更する、ことをコンピュータに実行させるためのプログラムを特徴としている。
【0019】
また、上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成された画素群の重心の位置を決定する画素群重心決定処理と、画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、を備え、画素群生成処理は、画素群を構成する画素数に応じて閾値を変更する、ことをコンピュータに実行させるためのプログラムが格納された記録媒体であることを特徴としている。
【0020】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。
[第1の実施例]
図1は、本発明による画像出力システムをモノクロ入力画像に適用したものの構成図である。この例では、ホストコンピュータ50において、階調画像データ56(図1においてはモノクロである)が生成され、ページプリンタなどの画像出力装置60に与えられる。ページプリンタなどの画像出力装置60は、供給された画像データ56に基づきモノクロ画像を再現する。画像出力装置60は、画像処理を行ってエンジン70にレーザ駆動用データ69を供給するコントローラ62と、前記駆動用データ69に従って画像の再生を行うエンジン70とを有する。
【0021】
ホストコンピュータ50は、ワードプロセッサや図形ツールなどのアプリケーションプログラム52により、文字データ、図形データ及びビットマップデータ等を生成する。これらのアプリケーションプログラム52により生成されたそれぞれのデータは、ホストコンピュータ50にインストールされている画像出力装置用のドライバ54により、ラスタライズされ、画素またはドット毎のモノクロデータからなる階調画像データ56に変換される。階調画像データ56は、例えば、各画素ごとに8ビットすなわち0〜255までの値をとる階調画像データ値の集合体である。
【0022】
画像出力装置60も、図示しないマイクロプロセッサを備え、そのマイクロプロセッサとインストールされている制御プログラムにより、ハーフトーン処理部66及びパルス幅変調部68を有するコントローラ62が構成される。ハーフトーン処理部66は、階調画像データ56を受けて、量子化画像データ30を生成する。ハーフトーン処理部66の構成は後で説明する。量子化画像データ30はパルス幅変調部68に与えられる。パルス幅変調部68は、ドット毎にレーザ駆動パルス有りと無しからなる駆動データ69を生成する。
【0023】
エンジン70内のレーザドライバ72が、駆動用データ69に基づいて、画像描画用のレーザダイオード74を駆動する。エンジン70には、感光ドラムや転写ベルト等とその駆動部が含まれるが、図1では省略されている。
【0024】
本発明の実施形態にかかる画像処理装置は、階調画像データ56を量子化画像データ30に変換するハーフトーン処理部66に相当するものである。
【0025】
図2は、本発明の実施形態にかかる画像処理装置の構成を示すブロック図である。画像処理装置は、階調画像データ記録部10、画像データ走査部(画素群生成手段)12、画像データ累計部14、閾値記録部16、閾値比較部18、画素群重心決定部20、量子化画像データ付与部22、量子化画像データ記録部24を備える。
【0026】
階調画像データ記録部10は、ホストコンピュータ50から出力された階調画像データ56を受けて記録する。階調画像データ56は、例えば、各画素が8ビット(0〜255)の値をとる。この値は、例えば黒の濃度を意味している。
【0027】
画像データ走査部(画像群生成手段)12は、階調画像データ56を走査する。階調画像データ56の走査法を図3を参照して説明する。
【0028】
階調画像データ記録部10に記録されている階調画像データ56は図3(a)に示すようなものである。図3(a)には、階調画像データの内、画素がm〜m+2行かつn〜n+3列の範囲のものを示している。なお、以後、画素を(m、n)というように表記する。画素(m、n)は、m行n列の画素を意味する。階調画像データの内、量子化済み画素群56a(画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1)、(m+2、n+1))は、量子化が済んでおり、画素(m+1、n+1)に量子化画像データ値”255”が与えられているものとする。
【0029】
走査法には二種類あり、量子化中画素群56cが無いときは初期走査、量子化中画素群56cが有るときは通常走査を行う。
【0030】
初期走査の方法を図3(b)を参照して説明する。初期走査は、量子化済み画素群56aを除いた画素において、最も上の行の内で、最も左にある画素を走査対象とするものである。ただし、主走査方向が左から右へ向かうものとする。図3(b)においては、最も上の行はm行であり、その内で最も左にある画素(m、n+2)が初期走査の走査対象である初期走査対象画素56bである。なお、初期走査対象画素56bは量子化中画素群56cを構成する。
【0031】
通常走査の方法を図3(c)を参照して説明する。量子化中画素群56c(画素(m、n+2)、(m、n+3))の重心56dは、画素(m、n+2)および画素(m、n+3)の階調画像データ値が等しいので、画素(m、n+2)および画素(m、n+3)の境界線の中点にある。ここで、重心56dから最も近い画素(量子化済み画素群56aを除く)を走査対象とするのが通常走査である。このように重心56dから次の画素を探索するため、生成した量子化済み画素群56aは円状に生成され、その重心56dにドットを形成しても、隣合うドットは均一の距離が保たれる。かかるドットの分散により視覚的に快適な印刷出力を得ることができる。
【0032】
図3(c)では、重心56dから最も近い画素は、画素(m+1、n+2)および画素(m+1、n+3)である。このように、重心56dから最も近い画素が複数ある場合はランダムに走査対象を選ぶことが好ましい。ランダムではなく固定順により選択すると量子化済み画素群56aの形が特定の形となりやすくその重心56dにドットを形成しても全体としてドットの位置が周期的で印刷出力において周期パターンを発生させてしまう。かかる周期パターンは、視覚に映りやすく印刷出力の画像が不自然なものとなってしまう。一方、ランダムにより選択することで、生成される量子化済み画素群56aの形状が一定とはならず、重心56dにドットを形成しても上述のような周期パターンが発生せず、視覚的に快適な印刷出力を得られるのである。図4(a)にランダムに選択した場合の印刷出力の例を示し、図4(b)にはランダムではなくテーブル等を利用して固定順で画素を選択した場合の印刷出力の例を示す。図4(b)に示すように固定順の場合、印刷部分の左下から右上にかけて一定の並び順でドットが形成されているため、周期パターンが発生し、このパターンが視覚に反映されて印刷出力が不自然なものとなっている。一方、図4(a)に示すようにランダムに選択した場合には、周期パターンが発生せず、視覚的に快適な印刷出力を得ることができる。
【0033】
図3(c)の例では、画素(m+1、n+2)が通常走査の走査対象である通常走査対象画素56eとして選ばれている。通常走査対象画素56eが量子化中画素群56cの一部となってから、次の通常走査が行われる。
【0034】
初期走査が行われると量子化中画素群56cが生成されるため、それから後は通常走査が繰り返し行われる。通常走査対象画素56eは量子化中画素群56cに組み入れられる。ただし、量子化中画素群56cの各画素の階調画像データ値の総和が閾値(例えば、255)以上になると、量子化中画素群56cは、量子化済み画素群56aとなる。すなわち、量子化中画素群56cとは、量子化済み画素群56aとなる前に走査対象となった画素の集合である。量子化中画素群56cが量子化済み画素群56aになると、再び初期走査が行われる。
【0035】
画像データ走査部12は、画像データ累計部14に量子化中画素群56cの各画素の階調画像データ値を出力する。さらに、画像データ走査部12は、画素群重心決定部20に、量子化中画素群56cの各画素の位置および階調画像データ値を出力する。
【0036】
画像データ累計部14は、画像データ走査部12から量子化中画素群56cの階調画像データ値を受けて総和をとって出力する。図3(c)の例でいえば、量子化中画素群56c(画素(m、n+2)、(m、n+3))の階調画像データ値の総和=50+50=100である。
【0037】
閾値記録部16は、量子化中画素群56cの各画素の階調画像データ値の総和と比較すべき閾値を記録する。閾値は、例えば255である。
【0038】
閾値比較部18は、画像データ累計部14の出力を、閾値記録部16から読み出した閾値と比較する。そして、比較結果(量子化中画素群56cの各画素の階調画像データ値の総和が、閾値未満か、閾値以上か)を画素群重心決定部20に送る。さらに、閾値比較部18は、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上であるならば、量子化画像データ付与部22に対し、量子化画像データの付与を要求する。
【0039】
画素群重心決定部20は、量子化中画素群56cの重心56dの位置を決定する。重心56dの位置は、画像データ走査部12に送られる。重心56dの位置の決定法を図5を参照して説明する。重心56dの位置の決定法は、閾値比較部18の比較結果により異なる。
【0040】
図5(a)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値未満である場合の、重心56dの位置の決定法を説明する。量子化中画素群56cの各画素のデータ値の総和=50+50+50+50=200は、閾値(=255)未満である。この場合は、量子化中画素群56cの各画素の中心にデータが集約されているものとして、重心56dの位置を決定する。図5(a)の場合は、量子化中画素群56cの各画素(画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1))のデータ値はすべて等しいので、重心56dの位置は、画素(m、n)の右下の角になる。
【0041】
図5(b)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合の、重心56dの位置の決定法を説明する。量子化中画素群56cの各画素のデータ値の総和=50+50+50+50+65=265は、閾値(=255)以上である。この場合は、閾値を超えた分の階調画像データ値を無視する。図5(b)の例でいえば、画素(m+2、n+1)のデータ値の内、10だけ無視し、画素(m+2、n+1)のデータ値が55(=65−10)であるとして重心56dの位置を求める。重心56dの位置は、図5(a)における重心56dよりも、やや右下に動いて、画素(m+1、n+1)の内にある。
【0042】
なお、無視した階調画像データ値”10”(戻しデータ)は、画素(m+2、
n+1)に戻す(図5(c)参照)。すなわち、画素(m+2、n+1)に階調画像データ値”10”が残ることになる。画素(m+2、n+1)は、さらに他の量子化中画素群56cの構成要素となり得る。すなわち、画素(m+2、n+1)のうち階調画像データ値“10”は、量子化済み画素群56aに組み込まれず、再び初期画素から探索するときに、量子化中画素群56cとして重心からの探索対象となる。このように戻しデータ値をもとの画素(m+2、n+1)に戻ため、量子化済み画素群56a以外の画素に戻して誤差を伝播させるときと比べて入力された画素の階調値のドット分布に忠実にドットが形成されることになる。なお、画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1)の階調画像データ値は無視されなかったので、階調画像データ値は残らない。
【0043】
また、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合は、重心56dの位置を量子化画像データ付与部22に送る。
【0044】
図5(b)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合の、重心56dの位置の決定法を説明したが、量子化中画素群56cの各画素の階調画像データ値の総和が閾値と等しい場合もある。例えば、図5(a)〜(c)において、画素(m、n+2)、(m、n+3)、(m+1、n+2)、(m+1、n+3)、(m+2、n+3)の階調画像データ値の総和は、255(=閾値)である。このような場合は、図5(d)(右半分)に示すように、重心56dは画素(m+1、n+3)の内にある。そして、戻しデータは発生しない。
【0045】
量子化画像データ付与部22は、閾値比較部18から送られた量子化画像データの付与要求を受けると、画素群重心決定部20から送られた重心56dの位置する画素に、閾値と等しい量子化画像データを付与する。図5(c)を参照して、量子化済み画素群56aの重心56dの位置する画素(m+1、n+1)に、閾値と等しい量子化画像データ”255”を付与する。なお、図5(c)において、量子化済み画素群56aとあるのは、すでに、量子化画像データ”255”が付与されているからである。量子化画像データ付与部22は、量子化画像データを付与すると、画像データ走査部12に初期化要求、すなわち、画像データ走査部12に初期走査を行うことを要求する。これにより、画像データ走査部12は再び初期走査を行う。
【0046】
ここで、量子化画像データの付与について説明する。一般に、プリンタは、各画素について256階調もの濃度を区別して印刷することができない。例えば、各画素について白(黒の濃度が0)、黒(黒の濃度が255)のいずれかしか印刷できない。そこで、量子化済み画素群56aについて、その重心が位置する画素に、閾値と等しい量子化画像データ”255”を付与する。すなわち、重心が位置する画素に、黒のドットを印刷することを意味する。なお、ドットの形状は、任意である。例えば、円形が挙げられるが、他の形状でもよい。ただし、ドットが位置する画素内に、ドットの重心が位置するようにすることが好ましい。
【0047】
また、白濃度を階調画像データとして使用する例を図6に示す。図6(a)を参照して、各画素には黒の濃度”205”等という比較的濃い黒を意味する階調画像データ値が記録されている。このままでは、すぐに、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上になる。
【0048】
そこで、図6(b)に示すように、白濃度に変換する。白濃度=255−黒の濃度、である。白濃度への変換は、例えば、画像データ走査部12(白濃度変換手段に相当)により、初期走査対象画素56bの周囲について行われる。白濃度への変換は、初期走査対象画素56bの階調画像データ値が中程度の濃度(例えば、127≒255/2)超えれば行うようにすることが好ましい。図6(b)においては、量子化中画素群56c(画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1))において、各画素のデータ値の総和は閾値未満である。これが、黒の濃度のまま(図6(a)参照)であれば、画素(m、n)、(m、n+1)だけで、そのデータ値の総和(410=205+205)すでに閾値(225)を超えてしまう。
【0049】
図6(c)に示すように、戻しデータは245、付与される量子化画像データは0となる。これは、白濃度になおせば、それぞれ、戻しデータ”10”、付与される量子化画像データ”255”となり、図5(c)に対応する。
【0050】
なお、量子化画像データ0を付与した場合は、付与された画素の周囲の画素に黒のドットを印刷し、付与された画素にはドットを印刷をしないことになる。
【0051】
量子化画像データ記録部24は、量子化画像データ付与部22により付与された量子化画像データを記録する。量子化画像データ記録部24の記録内容は、量子化画像データ30として出力される。
【0052】
次に、本発明の実施形態の動作を図7のフローチャートおよび図8、9を参照して説明する。
【0053】
まず、階調画像データ記録部10から画像データ走査部12が階調画像データ56を読み出し、走査していない画素があるか否かを判定する(S10)。ここで、走査していない画素が無い、すなわち走査が終了していれば(S10、Yes)、処理を終了する。走査していない画素が有る、すなわち走査が終了していなければ(S10、No)、画像データ走査部12は初期走査を行う(S12)。すなわち、初期走査対象画素56bを決定する。例えば、図8(a)に示すような階調画像データ56がある場合、画素(m、n)が初期走査対象画素56bとなる。
【0054】
次に、初期走査対象画素56bに記録されている階調画像データ値が127以下か否かを画像データ走査部12が判定する(S14)。もし、階調画像データ値が127を超えれば(S14、No)、画像データ走査部12は、階調画像データ56の各画素の階調画像データ値を白濃度に変換する(S16)(図6(a)、(b)参照)。その後、走査した画素の階調画像データ値を画像データ累計部14に送る。なお、階調画像データ値が127以下であれば(S14、Yes)、画像データ走査部12は、走査した画素の階調画像データ値を画像データ累計部14に送る。図8(a)の例では、初期走査対象画素56bに記録されている階調画像データ値=50であるため、白濃度への変換は行われない。
【0055】
画像データ累計部14は、画像データ走査部12から、走査した画素の階調画像データ値を受けると、データ値の累計を計算する(S18)。データ値の累計は、閾値比較部18に送られる。閾値比較部18は、データ値の累計を、閾値記録部16から読み出した閾値(=255)と比較する。そして、データ値の累計が閾値(=255)以上であるか否かを判定する(S20)。判定の結果は、画像群重心決定部20に送られる。判定の結果により、画素群重心決定部20の動作が異なるからである。
【0056】
データ値の累計が閾値未満であれば(S20、No)、最後に走査した画素を量子化中画素群56cに組み入れる。その後、画素群重心決定部20は、量子化中画素群56cの重心を決定する(S22)。なお、画素群重心決定部20は、量子化中画素群56cの重心決定の前に、画像データ走査部12から量子化中画素群56cの各画素の位置および階調画像データ値を受ける。これらを重心決定に用いる。そして、画像データ走査部12が通常走査を行う(S24)。すなわち、通常走査対象画素56eを決定する。そして、データ値の累計(S18)に戻る。
【0057】
図8(a)を参照して、初期走査対象画素56bに記録された階調画像データ値=50である。ここで、画像データ累計部14により、階調画像データ値の累計=50を得る(S18)。累計は255未満なので(S20、No)、初期走査対象画素56bを量子化中画素群56cに組み入れてから(図8(b)参照)、量子化中画素群56cの重心を決定する(S22)。重心は、画素(m、n)の中心である。重心に最も近い画素は画素(m、n+1)および画素(m+1、n)である。上述したように量子化済み画素群56aに組み入れる次の画素を探索するのに重心からの距離を利用しているために、最終的に生成される量子化中画素群56cの形状はほぼ円状に成長し、ドットの形成が互いに均一の距離を有し、ドットの分散性が向上する。ここで、ランダムに通常走査対象画素56eを選択し、画素(m、n+1)を通常走査対象画素56eとする(S24)(図8(b)参照)。上述したようにランダムに選択することで、最終的に生成される量子化済み画素群56aの形状は常に同じ形状にならず、ドットの周期的パターンが現れない。
【0058】
そして、データ値の累計(S18)に戻り、データ値の累計=50+50=100が求められる。累計は255未満なので(S20、No)、通常走査対象画素56eを量子化中画素群56cに組み入れてから(図8(c)参照)、量子化中画素群56cの重心を決定する(S22)。重心56dは、画素(m、n+1)および画素(m+1、n)の境界線上の中点である。以後、このようにして、走査を繰り返していく。
【0059】
データ値の累計が閾値以上であれば(S20、Yes)、最後に走査した画素を量子化中画素群56cに組み入れる。その後、画素群重心決定部20は、戻しデータを決定する(S30)。そして、画素群重心決定部20は、量子化中画素群56cの重心を決定する(S32)。なお、画素群重心決定部20は、量子化中画素群56cの重心決定の前に、画像データ走査部12から量子化中画素群56cの各画素の位置および階調画像データ値を受ける。これらを重心決定に用いる。また、戻しデータは重心決定の際に考慮しない。閾値比較部18は、量子化画像データ付与部22に量子化画像データの付与を要求する。また、画素群重心決定部20は重心の位置を量子化画像データ付与部22に送る。さらに、画像データ走査部12は、黒の濃度を使用したか、白濃度を使用したかを量子化画像データ付与部22に送る。量子化画像データ付与部22は、量子化画像データの付与要求を受け、量子化中画素群56cの重心が位置する画素に量子化画像データを付与する(S34)。付与する量子化画像データは、黒の濃度を使用した場合は255、白濃度を使用した場合は0となる。そして、量子化画像データ付与部22は画像データ走査部12に初期化を要求し、走査していない画素があるか否かの判定(S10)に戻る。
【0060】
図9(a)を参照して、量子化中画素群56cが画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1)により構成されている。このような量子化中画素群56cは、例えば、画素(m、n)、(m、n+1)、(m+1、n+1)、(m+1、n)の順に走査されることにより生成される。重心56dは、画素(m、n)の右下の角にある。重心56dに最も近い画素は画素(m+2、n+1)および画素(m+2、n)である。ここで、ランダムに通常走査対象画素56eを選択し、画素(m+2、n)を通常走査対象画素56eとする(S24)。
【0061】
そして、データ値の累計(S18)に戻り、データ値の累計=50+50+50+50+65=265が求められる。累計は255以上なので(S20、Yes)、通常走査対象画素56eを量子化中画素群56cに組み入れてから(図9(b)参照)、戻しデータを決定する(S30)。戻しデータは、最後に走査した画素(m+2、n)について計算する。データ値の累計−閾値=265−255=10である。よって、戻しデータ=10とし、画素(m+2、n)に戻す(図9(c)参照)。画素(m+2、n)の階調画像データは戻しデータを減じた値=65−10=55として量子化中画素群56cの重心56dを決定する(S32)。重心56dの位置は、図5(c)におけるものと同様である(図9(d)参照)。そして、重心56dの位置する画素(m+1、n+1)に、量子化画像データ付与部22が量子化画像データ255を付与する(S34)。
【0062】
本発明の実施形態によれば、量子化済み画素群56aの重心56dが位置する画素に量子化画像データを付与する。これにより、量子化画像データは、量子化済み画素群56aの階調画像データの濃度分布に対応したものとなる。しかも、量子化画像データの値は閾値(=255)と等しく、量子化済み画素群56aにおける各画素の階調画像データの総和(戻しデータを除く)も閾値と等しいため、量子化済み画素群56a単位で見れば、量子化誤差が無い。
【0063】
このように、量子化誤差が無く、しかも階調画像データの濃度分布に対応した量子化が可能である。よって、誤差拡散法における、誤差拡散後の各画素のデータ(濃度)が、誤差拡散前の各画素の近傍のデータ(濃度)の分布に対応していないことによるワーム等の問題が解消される。
【0064】
また、量子化済み画素群56aにおける戻しデータは重心56dの決定の際に無視して画素に戻すので、量子化済み画素群56aにおける各画素の階調画像データの総和が閾値を超えても量子化誤差を起さなくてすむ。
【0065】
ここで、戻しデータは元の画素に戻し、その画素を量子化済み画素群56aに組み込まれないようにし、初期画素から再度量子化中画素群56cに組み込まれるようにしているため、入力階調値に忠実なドット分布を形成することができる。
【0066】
さらに、黒の濃度が大きい場合は、白濃度を使用することにより(図6参照)、量子化済み画素群56aに組み入れられる画素の個数が激減することを防ぐことができる。
【0067】
また、量子化中画素群56cの重心の最も近い画素が複数ある場合は、通常走査対象画素56eをどれにするかはランダムに決定するため、量子化後の画像の画質が向上する。
【0068】
なお、本発明の実施形態には色々な変形例が考えられる。
【0069】
例えば、主走査方向が左から右へという場合は、階調画素データ56の右端付近において量子化中画素群56cを生成していると、各画素の階調画像データ値の総和が閾値に達する前に、これ以上の画素を量子化中画素群56cに組み入れられなくなることがある。この場合は、各画素の階調画像データ値の総和に最も近い量子化画像データを量子化中画素群56cの重心に付与する。量子化画像データは256階調もの多階調にすることができないので、量子化画像データと総和との誤差が生ずることがあるが、考えないことにする。
【0070】
図10を参照して、通常走査対象画素56eの選択法の変形例を説明する。図10(a)に示すように、量子化中画素群56cが画素(m、n)、(m、n+1)(いずれも階調画素データ値=50)により構成されている場合、重心56dは、画素(m、n)および画素(m、n+1)の境界線の中点にある。すると、重心56dから最も近い画素は画素(m+1、n)および画素(m+1、n+1)である。この変形例では、ランダムに通常走査対象画素56eを選択せずに、階調画素データ値が小さい方の画素を通常走査対象画素56eとして選択する。図10において、画素(m+1、n)の階調画素データ値=50であり、画素(m+1、n+1)の階調画素データ値=80である。よって、画素(m+1、n)の階調画素データ値の方が小さいため、画素(m+1、n)を通常走査対象画素56eとして選択する(図10(b)参照)。このようにすれば、量子化画像におけるエッジの再現性が向上する。すなわち、色変化が激しいエッジの部分では、階調値が高い画素ではなく低い画素を選択して、量子化中画素群56cに組み込み、階調値の高い画素は組み入れないようにしているため、突然階調値の合計が閾値を超えてドットを生成させることなく、入力階調値に忠実にドットを生成することができるのである。
【0071】
なお、図10における各画素の濃度が白濃度であってもよい。図10における各画素の濃度が白濃度である場合は、白濃度が低い方の画素を選択することになる。よって、黒濃度が高い方の画素を選択することになる。白濃度を使用するのは、初期走査対象画素56bの黒の濃度が127を超える場合である。よって、初期走査対象画素56bの黒の濃度が127を超える場合は、黒濃度が高い方の画素を通常走査対象画素56eとして選択することになる。
【0072】
図11を参照して、閾値に関する変形例を説明する。階調画像データ56が図11(a)に示すようなものである場合、量子化中画素群56cの画素の個数を増やしても閾値に到達しにくい。図11(a)に示すような階調画像データ56の場合、画素全部の階調画像データ値を合計しても10×12=120であり、閾値(=255)に達しない。そこで、閾値を変更する。例えば、閾値=50とする。すると、量子化中画素群56cが、図11(b)に示すように、画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1)、(m+2、n+1)により構成される場合、階調画像データ値の総和が閾値(=50)に達する。この場合、重心56dの位置する画素(m+1、n+1)に量子化画像データ”50”が付与される(図11(c)参照)。これは、画素(m+1、n+1)に量子化画像データ”255”の場合に比べて、およそ20%(50/255)のサイズのドットを印刷することを意味する。
【0073】
閾値の変更法としては、下記のようなものがある。ます、閾値記録部16に閾値の候補を複数記録しておく。例えば、閾値の候補を、255および50としておく。ここで、閾値の候補のうち、最高のもの(例えば、255)を閾値として使用する。そして、量子化中画素群56cの画素の個数が所定値(例えば、12個)に達しても、なお階調画像データ値の総和が閾値に達しない場合は、最高値の次に高い閾値の候補を閾値比較部18が閾値として閾値記録部16から読み出して使用する。なおも、量子化中画素群56cの画素の個数が所定値に達しながら、階調画像データ値の総和が閾値に達しない場合は、その次に高い閾値の候補を閾値比較部18が閾値として閾値記録部16から読み出して使用する。このようにして、使用する閾値を次第に低くしていく。例えば、量子化中画素群56cの画素の個数が12個になっても、階調画像データ値の総和が255に達しない場合は、次に高い閾値の候補(=50)を閾値比較部18が閾値として、閾値記録部16から読み出して使用する。
【0074】
このように、階調画像データ値の総和の低下に応じて閾値を低くしていけば、階調画像データ値が低い部分にも、ある程度の密度で黒色のドットが印刷できる。よって、階調画像データ56において、階調画像データ値が低い部分があったとしても、その部分に黒色のドットがほとんど印刷されないということが防止できる。これは、印刷されるドットの間隔がほぼ一定となることを意味する。よって、ドットの分散性が向上する。これにより、低周波ノイズの発生が抑えられる。
【0075】
また、入力画像の階調値が中間値で連続している領域では、(例えば階調値“120”が連続する場合など)閾値を一定にすると、量子化済み画像群56aはほぼ2画素で構成されることになる。量子化済み画素群56aに含まれる画素数が少ないと(量子化済み画素群56aの大きさが小さいと)、印刷されるドットの数が多くなり、それだけドットが目立つことになる。そこで、上述したように閾値を変更して、量子化済み画素群56aの大きさを一定に保つことで、ドットが一定の密度で生成されることになる。また、このように生成した量子化済み画素群56aでドットが生成される位置は、この画素群56aの重心位置である。したがって、入力画像の入力分布に忠実な出力ドットを得ることが可能となり、快適な印刷出力を得ることができるのである。
【0076】
図12を参照して、一つの量子化済み画素群56aについて、複数の画素に量子化データを付与する変形例を説明する。図12(a)を参照して、量子化中画素群56cが画素(m、n)、(m、n+1)、(m+1、n)、(m+1、n+1)、(m+2、n+1)により構成されている。ここで、量子化中画素群56cの各画素の階調画像データ値の総和は255であり、閾値(=255)に達する。そこで、これまで説明してきた実施形態によれば量子化中画素群56cの重心56dが位置する画素(m+1、n+1)に量子化画像データ”255”が付与される(図12(b)参照)。しかし、この変形例では、図12(c)に示すように、85=255/3の量子化画像データを、画素(m、n+1)、(m+1、n)、(m+2、n+1)に付与する。この場合、これらの量子化画像データが付与された画素全体の重心は、画素(m、n+1)の中心、画素(m+1、n)の中心および画素(m+2、n+1)の中心を頂点とする直角二等辺三角形の重心であり、画素(m+1、n+1)に位置する。しかも、これらの量子化画像データが付与された画素の量子化画素データの総和=85×3=255である。
【0077】
このような変形例によっても、量子化画像データが付与された画素全体で見れば、量子化済み画素群56aの階調画像データの濃度分布に対応し、量子化誤差も無い。なお、このように複数の画素に量子化データを付与しても、パルス幅変調部68を使用することにより印刷が可能である。
【0078】
また、既に量子化済み画素群56aで決定した重心と、現在量子化済み画素群56aで決定した重心とに位置する画素が一致する場合も考えられる。図13にその例を示す。図13に示すように、(m+1、n+2)、(m+2、n+1)、(m+2、n+2)、(m+2、n+3)及び(m+3、n+2)の5つの画素以外のまわりの20個の画素で量子化済み画素群56aが構成され、その画素群56aの重心に位置する画素(m+2、n+2)は、その5つの画素から構成される量子化済み画素群56aの重心に位置する画素(m+2、n+2)と一致している。これは、量子化済み画素群56aを構成する段階で、例えば最終的に残った画素から量子化済み画素群56aを構成すると(図13の例では、まわりの20個の画素から構成される画素群)、既に重心を演算した量子化済み画素群(図13の例では、ほぼ中心に位置する5つの画素群)の重心と一致することがあるからである。かかる場合に、既にドットが形成された画素の位置に最も近い位置で、未だドットが形成されていない画素にドットを形成させるようにする。図13の例では、中心付近にある5つの画素によって(m+2、n+2)の位置にドットが形成されるので、まわりにある20個の画素による重心位置(m+2、n+2)で、その位置から最も近い位置であって未だドットが形成されない位置、例えばその隣の(m+2、n+3)や、(m+1、n+2)、(m+2、n+1)、又は(m+3、n+2)に“255”を与える。全くドットを形成させないようにすることも考えられるが、入力階調値に忠実なドット分布を得るようにするためには、このようにドットを形成させることが望ましい。
【0079】
なお、これまで、本発明による画像出力システムをモノクロ入力画像に適用したものを前提として本発明の実施形態を説明してきた。しかし、本発明による画像出力システムをカラー入力画像に適用することもできる。図14は、本発明による画像出力システムをカラー入力画像に適用したものの構成図である。
【0080】
この例では、ホストコンピュータ50において、RGBカラー画像データ55が生成され、ページプリンタなどの画像出力装置60に与えられる。ページプリンタなどの画像出力装置60は、供給されたRGBカラー画像データ55に基づきカラー画像を再現する。画像出力装置60は、画像処理を行ってエンジン70にレーザ駆動用データ69を供給するコントローラ62と、前記駆動用データ69に従って画像の再生を行うエンジン70とを有する。
【0081】
ホストコンピュータ50は、ワードプロセッサや図形ツールなどのアプリケーションプログラム52により、文字データ、図形データ及びビットマップデータ等を生成する。これらのアプリケーションプログラム52により生成されたそれぞれのデータは、ホストコンピュータ50にインストールされている画像出力装置用のドライバ54により、ラスタライズされ、画素またはドット毎のRGBデータからなるRGBカラー画像データ55に変換される。RGBカラー画像データ55は、例えば、各画素における各色(赤:RED、緑:GREEN、青:BLUE)をそれぞれ8ビットすなわち0〜255までの値で示したRGBデータの集合体である。
【0082】
画像出力装置60も、図示しないマイクロプロセッサを備え、そのマイクロプロセッサとインストールされている制御プログラムにより、色変換部64、ハーフトーン処理部66及びパルス幅変調部68を有するコントローラ62が構成される。
【0083】
色変換部64は、RGBカラー画像データ55を受けて、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)の四色をそれぞれ8ビットで表現した合計8×4=32ビットの階調画像データ56を生成する。階調画像データ56は、例えば図3などに示したものと同様である。ただし、各画素には黒の濃度のかわりに、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)のうちのいずれか一つの色の濃度が記録されている。また、シアンなどの濃度が高すぎる場合に、白濃度に変換することもモノクロ画像の場合と同様である。
【0084】
ハーフトーン処理部66は、階調画像データ56を受けて、量子化画像データ30を生成する。ハーフトーン処理部66(図2に示す画像処理装置に相当)の構成は前に説明した通りである。量子化画像データ30はパルス幅変調部68に与えられる。パルス幅変調部68は、ドット毎にレーザ駆動パルス有りと無しからなる駆動データ69を生成する。
【0085】
エンジン70内のレーザドライバ72が、駆動用データ69に基づいて、画像描画用のレーザダイオード74を駆動する。エンジン70には、感光ドラムや転写ベルト等とその駆動部が含まれるが、図14では省略されている。
【0086】
なお、ハーフトーン処理部66(図2に示す画像処理装置に相当)は、ハーフトーン処理プログラムが画像出力装置60によって実行されることによって構成されるようにしてもよい。このハーフトーン処理プログラムは、通常、画像出力装置60が読取可能な形態でフロッピー(登録商標)ディスク、CD−ROMなどの記録媒体に記録されて流通する。当該プログラムは、メディア読取装置(CD−ROMドライブ、フロッピー(登録商標)ディスクドライブなど)によって読み取られてハードディスクにインストールされる。そして、CPUが所望のプログラムを適宜ハードディスクから読み出して所望の処理を実行するように構成されている。あるいは、画像出力装置60がROMなどの記録媒体を有しており、ハーフトーン処理プログラムがこのROMに記録されるようにしてもよい。
[第2の実施例]
次に本願発明の第2の実施例について、図15から図26を参照して説明する。
【0087】
図15は、本願発明が適用される画像出力装置60のハード構成図を示す図である。画像出力装置60は、全体としてCPU61、入力インターフェース(入力I/F)63、ROM65、RAM67、及び印刷エンジン70とから構成されている。ここで、図1との対応関係は、ハーフトーン処理部66が、CPU61、入力I/F63、ROM65、及びRAM67とから構成され、パルス変調68がCPU61、ROM65、及びRAM67とから構成されることになる。また、エンジン70は、印刷エンジン70に対応している。
【0088】
CPU61は、内部バスを介して、入力I/F63、ROM65、RAM67、印刷エンジン70と互いにに接続され、重心位置の演算や、未処理画素の選択等、各種処理を実行するためのものである。詳細は後述する。
【0089】
入力I/F63は、ホストコンピュータ50と画像出力装置60とのインターフェースとしての役割を果たし、本実施例では、ホストコンピュータ50から出力される、ラスタライズされた各画素ごとに所定の階調値を有する入力画像データが入力される。入力された画像データはCPU61の制御により一旦RAM67に格納される。
【0090】
ROM65は、各種プログラムが格納される。CPU61の制御によりプログラムが読み出されて、各種処理が実行されることになる。
【0091】
RAM67は、CPU61が処理を実行する際のワーキングメモリとしての役割を果たし、実行データ等が一時格納される。
【0092】
印刷エンジン70は、図1のエンジン70と同様の構成で、レーザドライバ72及びLD74とから構成される。
【0093】
次に、入力された画像データからドットを形成するまでの、画像出力装置60の動作について図16から図26を参照して説明する。
【0094】
まず、CPU61は、ROM65に格納されたプログラムを読み出して、処理が開始される(ステップS40)。このとき、すでに入力画像データは入力I/F63を介してRAM67に格納されているものとする。もちろん、この処理の開始をトリガにしてホストコンピュータ50から入力画像データを入力I/F63を介してRAM67に取り込まれるようにしてもよい。このとき、入力画像データは、RAM67の所定領域である入力バッファ領域に格納される。この例を図18(a)に示す。
【0095】
RAM67は、図18(a)に示すように、入力バッファ領域671と、ワーキングメモリ領域672と、出力バッファ領域673とから構成される。この入力バッファ領域671は、2次元構造を有しており、例えば上述の入力画素(n、m)に位置する画素は、入力バッファ領域の(n、m)のアドレスに格納される。入力画素の位置に対応するように入力バッファ領域671が構成される。実際には、このアドレスには入力画像データの階調値が格納されることになる。図5(a)や図8(a)に示す入力画素が入力されると、図18(b)に示すように入力バッファ671に各階調値が格納される。ワーキングメモリ領域672は、重心位置の演算結果と階調値の演算結果が格納され、出力バッファ領域673は入力バッファ671と同様に入力画素に対応するように構成される。詳細は後述する。
【0096】
次いで、CPU61は、初期画素を決定して、初期濃度重心を演算する(ステップS41)。初期画素の決定は、RAM67の入力バッファ671に格納された入力画像データのうち、第1の実施例と同様に入力画素の位置で最も上の左側に位置する画素をCPU61が選択する。すなわち、図18(b)に示す例では、(n、m)に対応する位置に位置する画素を初期画素としてCPU61は判断する。そして、CPU61は初期画素の位置する画素の階調値と、そのアドレス位置とを読み出し、重心を演算する。以下、説明を簡単にするため、(n、m)=(0,0)として説明する。CPU61が演算する重心は具体的には、以下の演算式を用いる。
【0097】
この演算式はROM65に格納され、ステップS41にてCPU61が読み出して演算を行うことになる。ちなみに、初期画素の場合は、量子化中画素群の重心のx、y座標、及び量子化中画素群の重心の階調値はともに0として演算される。(式1)にこれらの値と、読み出した初期画素の位置と階調値とを代入して演算すると、重心位置は(x重心、y重心)は(0,0)となる。なお、CPU61は、演算した重心位置と、初期画素の階調値とを上述した、ワーキングメモリ領域672に格納する(図18(c)参照)。その後の演算処理をスムーズに行うためである。
【0098】
また、CPU61は、選択した初期画素に対応する入力バッファ671に“−1”を格納する。後述する未処理画素の選択で、すでに選択された画素の選択を回避するためである。さらに、CPU61は、ステップS42で初期画素が低濃度と判断された場合は、その時点で初期画素に対応する出力バッファ273に“0”を格納し、ステップS42で初期画素が高濃度と判断された場合は、その時点で初期画素に対応する出力バッファ273に“255”を格納する。初期画素に(黒又は白)ドットが打たれなかった場合に、正しい出力を行なうためである。なお、入力バッファ671に“−1”を格納されているが、これに拘泥せず、他の負の値を格納させてもよい。さらに、入力バッファ671と同様のメモリ構成で選択した画素の対応する位置にフラグを立てて、選択した画素が処理済みか否かを判断するようにしてもよい。
【0099】
次いで、CPU61は、決定した画素が低濃度か否か判断する(ステップS42)。具体的には、ROM65に格納された閾値“127”を読出し、RAM67の入力バッファ671から読み出した初期画素の階調値と比較し、閾値よりも低い場合はステップS43に移行し、閾値と同じか大きいときはステップS53に移行する。ここで、低濃度と判断される場合(ステップS42で“YES”の場合)とは、選択した画素が黒成分が少なく白成分が多い場合である。その後の処理で黒ドットを形成させる処理に移行させるためである。一方、低濃度ではないと判断された場合(ステップS42で“NO”の場合)は、選択した画素が黒成分が多く白成分が少ない場合で、その後の処理で白ドットを形成させる処理(ステップS53)に移行することになる。
【0100】
ステップS42で低濃度と判断された場合(ステップS42で“YES”の場合)、CPU61は、未処理画素の選択を行う(ステップS43)。ここで未処理画素の選択は、第1の実施例で説明したように、重心を利用して画素の選択を行う。上述したように重心を利用して画素の選択を行うため、最終的に生成される量子化済み画素群の形状は、円状となり、その重心にドットを形成させることで、ドット間距離が均一となり、視覚的に快適な印刷出力を得ることができる。ここで、未処理画素の選択は、ステップS41で演算した重心から最も近い距離にある画素が選択されるが、入力画像データはRAM67の入力バッファの所定位置に格納されているので、アドレス(1、0)にある画像データか、アドレス(0,1)にある画像データが選択される。2つの画素ともアドレス(0,0)から等距離にあるからである。ここで、いずれかの画素を選択する必要があるが、第1の実施例と同様にランダムにCPU61が選択するものとする。上述したようにランダムではなく固定順に選択すると量子化済み画素群の形状が規則的に並び重心位置にドットを形成すると図4(b)に示すように周期パターンが発生するからである。ランダムに選択することで視覚的に快適な印刷出力を得ることができる。ここでは、例えば(1,0)の画素をCPU61が選択するとすると、図8(b)に示すように選択した隣の画素が量子化中画素群56cとして初期画素とともに組み込まれることになる。
【0101】
ここで、重心位置は上述の(式1)で示されているように必ずしも整数値になるとは限らない。重心に最も近い画素を選択する場合のほかに、重心が位置する画素に最も近い画素を選択する場合でもよい。このようにすることで、重心位置は整数値として演算でき、CPU61の処理する計算量が減ることが期待できる。ただし、演算した重心位置が小数点を含む場合があるので、演算した重心位置のx、y座標のそれぞれに0.5を足して、その位置に重心が位置する画素として、画素を選択することも可能である。
【0102】
なお、選択した画素は、図18(c)や図19(a)に示すように選択した画素に対応するRAM67の出力バッファ673に“0”がCPU21によって格納されることになる。
【0103】
次いで、CPU61は、閾値制御処理を行う(ステップS44)。後述する閾値が一定の場合では、入力画像データの階調値が低い領域では出力ドットの密度は低くなり、また階調値が中間値(例えば“120”など)の領域では出力ドットの密度が高くなり、印刷出力全体としてのドットの分布密度が一定とならない。印刷出力のうち、ある領域では多くドットが打たれ、ある領域ではドットが少ないため全体として快適な印刷出力を得ることができない。そこで、閾値を変更することで、量子化済み画素群56aの大きさ、すなわち量子化済み画素群56aを構成する画素数が一定となり、一定密度のドット分布を得ることができる。上述の例では、(0、0)の画素と(1,0)の画素の2つの画素のみしか選択されていないので、閾値の変更は行われず、CPU61は、次の処理に移行する。閾値変更する場合の処理は後述する。
【0104】
次いで、CPU61は、濃度の合計が閾値に達したか否か判断する(ステップS45)。すなわち、選択した未処理画素の階調値を含めた濃度の合計(階調値の合計)が閾値“255”に達したか否か判断される。具体的には、CPU61は、RAM67のワーキングメモリ672に書き込んだ画素の階調値と、ステップS43で選択した画素の入力バッファ671に格納された階調値とを読出し、その合計を演算して、ROM65に格納された閾値(ここでは“255”の値)とを比較する。例えば図18(c)の例では、ワーキングメモリ672には階調値“50”、アドレス(1,0)格納されている階調値は“50”であるので、その合計は“100”となる。よって合計値は閾値に達しないことになる。
【0105】
階調値の合計が閾値を超えない場合(ステップS45で“NO”の場合)、CPU61は、選択した未処理画素を含めた重心の演算を行う(ステップS46)。具体的なCPU61の演算は、上述した式(1)の演算式を用いて行うことになる。これまで求めた重心のx、y座標は、(0,0)で重心の階調値は“50”、未処理画素のx、y座標は(1,0)で、その階調値は“50”とすると、演算される重心位置は(0.5,0)となる。このステップS46で演算した重心位置は、CPU61の制御によってRAM67のワーキングメモリ672に格納される。ステップS41でワーキングメモリ672には初期画素の重心位置が格納されていたが、ここではその位置に上書きして格納する。その格納後の例を図19(a)に示す。
【0106】
次いで、CPU61は、階調値の演算を行う(ステップS47)。ここでの演算は、RAM67のワーキングメモリ672に書き込まれた階調値とステップS43で選択した画素の階調値との合計を演算する。演算した結果は、再びRAM67のワーキングメモリ672に上書きして書き込む。この例を図19(b)に示す。ここで、CPU61は、未処理画素の選択(ステップS43)で選択した画素に対応する入力バッファ671に“−1”を格納する。再度未処理画素の選択で選択されないようにするためである。この階調値の演算でかかる処理を行うのは、入力バッファ671に格納された階調値はその合計値としてワーキングメモリ672に格納され、以後の処理で必要とされないからである。
【0107】
次いで、CPU61は、ステップS46で演算した階調値の合計が、閾値と等しいか否か判断する(ステップS48)。具体的には、ステップS47でRAM67のワーキングメモリ672に格納された階調値と、ROM65に格納された閾値とをCPU61が読み出して、両者を比較することで実行される。図19(b)の場合は、まだ閾値に達していない(ステップS48で“NO”の場合)ので、第1の実施例と同様に未処理画素を量子化中画素群56cに次々を組み込み、その合計値が閾値(ここでは“255”)に達するまで処理が繰り返されることになる。すなわち、これまで量子化中画素群56cに組み込まれた画素の階調値の合計は、RAM67のワーキングメモリ672に格納されているので、その値と閾値とを比較することで、閾値に達するまで量子化中画素群56cを構成していくことができる。上述したようにCPU21は、選択した未処理画素に対応する出力バッファ673の位置に“0”を格納する。
【0108】
そして、閾値と等しいとCPU61が判断した場合(ステップS48で“YES”の場合)、処理はステップS49に移行し、すでに演算した重心位置に位置する画素に黒ドットを形成する処理を行う。具体的には、RAM67の出力バッファ673の入力画素の位置に対応するアドレス位置に“255”を書き込む。出力バッファの構造も入力バッファと同様に2次元構造で、入力画素の位置に対応するアドレス空間を有している。重心が位置するアドレスに“255”を書き込むことで、その後、実際にその位置に対応する位置にドットをうつことができる。
【0109】
次いで、CPU61は、未処理画素があるか否か判断する(ステップS51)。すなわち、上述した処理をRAM67の入力バッファ671に書き込まれたすべての階調値に対して行ったか否かで判断し、未処理画素があれば(“YES”の場合)再び処理はステップS41に移行し、上述の処理を繰り返し、すべての画素に対して処理が終了すれば(“NO”)、CPU61はステップS52に移行し、処理が終了することになる(ステップS52)。
【0110】
一方、ステップS45で濃度の合計が閾値を超える場合(“NO”の場合)、処理はステップS55に移行し、閾値超えた場合の重心演算処理を行う(ステップS55)。これは、図19(c)に示すように、最終的に選択された画素が(1、2)に位置する画素であるとき、すなわちステップS43で選択した画素がこの画素であるとき、量子化中画素群の階調値の合計を演算するとすると“265”になり、閾値“255”を超えることになる。したがって、このような場合はステップS45で“YES”が選択されてステップS55に移行することになる。図21は、閾値を超えた場合の重心演算処理の動作を示す。
【0111】
まず、CPU61は、閾値から濃度の合計、すなわち閾値からこれまでステップS46で演算した階調値の合計値を引く演算を行う(ステップS550)。例えば図5(b)に示す例では、閾値は“255”、ステップS46でこれまで演算した階調値の合計は“200”であるので、255−200=55の値を演算する。上述したようにこれまで選択した画素の階調値の合計は、RAM67のワーキングメモリ672に格納され、閾値はROM65に格納されているのでCPU61がこれらを読み出して演算することができる。
【0112】
そして、CPU61は、この“55”の値を画素(1、2)の階調値として重心の演算を行う(ステップS551)。重心の演算は具体的には、以下の演算式を用いる。
【0113】
(式1)との違いは、選択した未処理画素の階調値をそのまま用いるのではなく、量子化画素群56cの合計が閾値と同じになるような階調値を用いる点が異なる。この演算式は、(式1)の場合と同様に予めROM65に格納されており、CPU61が本ステップを実行する際にROM65から読み出すことで実行される。ここでは、最終的にステップS43で選択した画素の階調値は、これまで演算した階調値の合計との和をとることで閾値と等しくなるように演算して、それをもとに重心位置を求めることになる。そしてCPU61は、演算した重心位置を再びRAM67のワーキングメモリ672に値を書き込む(図20(a)のワーキングメモリ672参照)。また、CPU61は、最終的に選択した画素の元の階調値からステップS550で演算した演算結果を引いた値を演算して、その値を再びその選択した画素の入力バッファに書き込む(ステップS50)。これにより、当該画素の階調値が、戻しデータとして格納される。図20(a)に示す例では、ステップS550で演算した“55”を最終的に選択した(1、2)の画素の階調値“65”から引いて“10”の値を求め、これをRAM67の入力バッファ671のアドレス(1、2)に再び書き込む(図20(a)の入力バッファ671参照)。そして、この画素は量子化済み画素群56aに組み込まれず、初期走査において量子化中画素群に組み入れられ重心位置の演算に利用されることになる。上述したように、戻しデータを量子化済み画素群56a以外の画素に戻すのではなく、戻しデータが発生した画素に再び格納させることで、入力階調値に忠実なドット分布を形成することができる。そして、CPU61は、式2で求めた重心位置に黒ドットを形成する処理を行う。これは上述したように出力バッファの入力画素位置に対応するアドレスに“255”を書き込むことで処理が行われる。その後、処理はステップS51へ移行し、上述した処理が繰り返されることになる。そして、重心位置の存在する画素に対応する出力バッファ673に“255”を格納させる。これによりCPU61は、その後の処理で重心位置の存在する画素にドットをうつことができる。その例を図20(a)に示す。
【0114】
一方、ステップS42で、決定した画素が低濃度でない場合(“NO”の場合)、処理は白濃度処理へと移行する(ステップS53)。この処理の詳細を図22に示す。本処理は、画素の階調値が白成分よりも黒成分の方が多いため、白ドットを生成するための処理である。なお、入力画素のデータは図6に示すデータが入力されるものとして以下説明する。ここでは、初期画素は、図6(a)の(n、m)に位置する画素であるものとし、図6(a)に示す階調値がそれぞれRAM67の入力バッファ671に格納されているものとする(図23(a)参照)。黒濃度の処理と同様に位置座標も入力バッファのアドレスに対応しているものとする。なお、白濃度前段の処理であるステップS41により初期画素は(n、m)で、その重心位置は式1により(n、m)が演算され、その位置座標がRAM67のワーキングメモリ672に既に格納され、その階調値“205”もメモリ672に格納されているとする。また、初期画素の位置に対応する入力バッファ671も同様に“−1”が格納される。
【0115】
まず、白濃度処理に移行すると、CPU61は、未処理画素の選択を行う(ステップS530)。ここでの未処理画素の選択も上述したステップS43と同様に重心を利用して選択する。ドット間距離を均一に保つためである。初期画素は、(n、m)であるので、重心を利用すると最も近い画素は(n+1、m)と(n、m+1)の2つの画素がある。CPU61は、ステップS43と同様にランダムに選択する。ドットの周期パターンの発生を抑えるためである。ここでは、(n+1、m)の画素を選択するとする。上述したように重心利用する場合に重心位置そのものを利用する以外にも、重心が位置する画素に最も近い画素を選択する場合でもよい。
【0116】
次いで、CPU61は、入力階調値の最大値から、初期画素も含めステップS530で選択した未処理画素の階調値を減算する(ステップS531)。図6(a)に示す例では、(n、m)に位置する初期画素の階調値は、“205”なので、入力階調値の最大値である“255”から減算すると、“50”となる。また、ステップS530で選択した未処理画素は(n+1、m)であるとすると、その階調値“205”を最大値“255”から減算すると“50”を得る。この入力画素の階調値の最大値は、ROM65に格納されており、また、選択した画素の階調値は上述したようにRAM67の入力バッファ671に格納されているので、CPU61がこれらの値を読み出すことで、演算することができる。演算した結果はCPU61の制御によりRAM67のワーキングメモリ領域672に格納される(図23(b)参照)。
【0117】
なお、図16に示す処理のうちステップS42において画素が低濃度か否かを判定せず、黒成分が多く白成分が少ない画素群に対しても低濃度の場合と同様の処理(ステップS43からステップS49)を行うと以下のような問題が生じる。すなわち、もともと黒成分が多い画素が多数存在するため、初期画素から閾値に達するまで量子化中画素群から重心位置を決定すると、量子化中画素群はすぐに閾値に達してしまう。例えば図6(a)の場合では、2つの画素((n、m)と(n+1、m))で閾値に達することになる。かかる場合に重心位置から黒ドットをうつべき画素は、2つの画素のいずれか(例えば(n、m))である。そして、余った戻りデータを、例えば(n+1、m)に戻して、再びこの画素を含めた量子化中画素群を初期画素(例えばこの(n+1、m))から探索すると、重心利用して選択される画素は例えば(n+1、m)となる。これに初期画素の階調値を加えるとこの2つの画素で量子化済み画素群を形成して重心位置からいずれか1の画素に黒ドットを形成する。これを繰り返すことで、ほとんど黒ドットをうつことになり、白ドットは余りの戻しデータが少なくなるとようやく何もうたない白ドットを形成することになる。これでは、黒成分が多く白成分が少ない画素群に対して構成した白ドットは、誤差拡散法で問題となるワーム状で配置され視覚的に不快な出力結果となる。かかる理由により、白濃度と黒濃度とでステップS42を境に異なる処理を行うようにしている。
【0118】
次いで、CPU61は、黒ドットの生成を行う(ステップS532)。これは、ステップS530で選択された画素が黒成分が多く白成分が少ないためであり、最終的に印刷エンジン70では、入力画像データに対して黒成分が多い画素にはドットをうつ処理を行うためだからである。そして、後述する白ドット生成処理(ステップS537)で、重心位置にある画素に対してドットをうたないようにして印刷を行うのである。CPU61は、ステップS530で選択した画素に対して、上述したRAM67の出力バッファ673の対応するアドレス位置に入力階調値の最大値(図6(a)の場合は“255”)を格納することで処理が行われる(図23(b)及び(c)参照)。
【0119】
次いで、CPU61は、閾値制御処理を行う(ステップS533)。上述したステップS44と同様に選択した未処理画素(ステップS530)を含めた入力階調値が低い領域などで、閾値を変更することで量子化済み画素群56aの大きさを一定として生成される白ドットが印刷出力全体として一定密度で分布することになる。上述した例では、この段階ではまだ(n、m)と(n+1、m)に位置する画素しか選択されていないので、閾値の変更は行われない。閾値制御処理の詳細は後述する。
【0120】
次いで、CPU61は、階調値の合計が閾値を越えるか否か判断する(ステップS534)。ここでは、すでにワーキングメモリ672にこれまで選択した画素の階調値の合計が格納されているので、その値をメモリ672からCPU61が読み出し、閾値はROM65に格納されているので、この読み出した閾値と比較して判断する。図23(b)の例では、メモリ672に“50”が格納されているので、最大値“255”と比較すると、まだ閾値に達していないと判断される。
【0121】
超えない場合(ステップS534で“NO”の場合)は、処理はステップS535に移行して、CPU61は、未処理画素を含めた重心位置を演算する。重心の演算は、上述した式(1)と同様である。演算した重心位置は、ワーキングメモリ672にCPU61の制御により格納される。初期画素(n、m)と、選択画素(n+1、m)との重心位置を演算すると、式1により(n+0.5、m)となる。これを黒処理と同様にワーキングメモリ672にCPU61の制御により格納する。図24(a)に例を示す。
【0122】
次いで、CPU61は、階調値の合計を演算する(ステップS536)。選択した画素の入力バッファ671に書き込まれた階調値とワーキングメモリ672に書き込まれた階調値の合計を演算する。演算した結果は、ワーキングメモリ672にCPU61の制御により格納される。また、CPU61は、上述した黒濃度の処理と同様に、選択した未処理画素の対応する入力バッファ671に“−1”を格納する。以後の処理で当該画素が選択されないようにするためである(図24(a)参照)
次いで、CPU61は、演算した階調値の合計が閾値と等しいか否か判断し(ステップS537)、等しいを判断すると(“YES”の場合)、ステップS535で演算した重心位置に位置する画素に白ドットを生成する処理を行う(ステップS538)。具体的には、CPU61は、重心位置に位置する出力バッファの所定のアドレスに“0”を格納する。上述したようにこの時点で、出力バッファには、量子化済み画素群のうち重心位置にある画素以外は、入力階調値の最大値(“255”)が格納されており、重心位置にある画素にはドットをうたないことを示す“0”を格納することになる。これらは、量子化中画素群56cの階調値から最大値を引いた値の合計が閾値に達するまで処理が繰り返されることになる(ステップS537で“NO”の場合)。
【0123】
次いで、未処理画素があるか否か判断され(ステップS539)、未処理画素があればステップS41に再び移行して(“YES”の場合)、未処理画素がなくなるまで処理が繰り返される。未処理画素がなくなると(“NO”の場合)、処理が終了(ステップS539)することになる。
【0124】
一方、ステップS534で階調値の合計が閾値を超える場合(“YES”の場合)、処理はステップS541に移行し、CPU61は、閾値を超えた場合の重心演算処理を行う。ここでの重心演算処理は、図21に示すように、上述したステップS55での演算処理と同様である。すなわち、CPU61は、ROM65から閾値(ここでは“255”)を読出し、ステップS534で演算してRAM67のワーキングメモリ672に格納された階調値の合計から引いて(ステップS550)、その値をもとに式2に示す重心の演算を行う(ステップS551)。図24に示す例では、最終的にステップS550で(n+1、m+2)が選択されると、これまで選択した画素の階調値の合計は、メモリ672に格納された“200”、選択画素の階調値は“190”で最大値“255”から引いた値が“65”、であるから階調値の合計は“265”となる。この値は閾値“255”を超えているので、ステップS534で“YES”が選択され、ステップS541に移行する。そして、(閾値)―(濃度の合計)、すなわち255−200で“55”を得る。この値を選択画素(n+1、m+2)の階調値としてステップS551で重心位置を演算することになる。
【0125】
演算した重心位置は再びRAM67のワーキングメモリ領域672に格納させ(図24(c)のワーキングメモリ672参照)、戻しデータを演算してその値をRAM67の当該画素の入力バッファ671に上書きして格納する(図24(c)のワーキングメモリ672参照)。量子化済み画素群に組み込まれないようにするためである。これにより入力階調値に忠実な白ドットを形成することができる。そして、演算した重心位置に白ドットを形成すべく、出力バッファの対応位置に“0”を格納する(ステップS542、図24(c)の出力バッファ参照)。その後処理は再びステップS539に移行し、上述の処理が繰り返されることになる。
【0126】
次に、ステップS44、及びステップS533の閾値制御処理について図25のフローチャートを参照して説明する。
【0127】
上述したように、初期画素や未処理画素を含め選択した画素(ステップS43、ステップS530)の入力階調値が低い値や中間階調値が連続すると、量子化済み画素群56aの大きさは一定とならず、生成される黒ドットや白ドットの密度が一定とならない。かかる場合に、印刷出力のドット分布が一定とならずにある領域ではドットが目立ち、ある領域ではドットが少なく、快適な印刷出力を得ることができない。そこで、量子化中画素群45cの画素数により閾値を変更して一定の大きさの量子化済み画素群56aを構成し、ドット密度を一定にさせるようにする。
【0128】
図25に示すように、閾値制御処理に移行すると(ステップS44、ステップS533)、閾値を変更する(ステップS441)処理を行う。ここでは、毎回選択した未処理画素を含む画素数と、量子化中画素群56cの階調値の合計とから、ステップS45、S534で使用する閾値を変更する。そして、この変更した閾値を用いてステップS45やステップS534で階調値の合計が閾値を超えるか否かを判断するのである。具体的には、RAM67のワーキングメモリに格納された量子化中画素群56cの画素数と、階調値の合計とから変更閾値を演算により求めることにする。この演算式は所定の関数により表現されており、CPU61がROM65に格納されたこの関数を読出し、ワーキングメモリ672の画素数と階調値の合計をこの関数に入力させることにより、閾値を求めることができる。また、変更閾値を最初からROM65に格納させておきこの閾値変更の処理(ステップS441)でCPU61が読み出して処理を行うようにしてもよい。
【0129】
図26に示す例で具体的に説明する。入力画像の階調値が図11(a)に示すように入力された場合、RAM67の入力バッファ671には図26(a)に示すように格納される。そして、ステップS41で初期画素として(n、m)に位置する画素が選択されて、その重心を演算すると(n、m)となるため、その重心位置と階調値が図26(b)に示すワーキングメモリ672にCPU61によって格納される。さらに、ワーキングメモリ672には選択した画素の個数を格納する領域672aを設けている。このステップS41で初期画素(n、m)のみしか選択されていないため、この領域672aには“1”がCPU61によって格納される(図26(b)参照)。
【0130】
次いで、ステップS43で未処理画素(n+1、m)が選択されると、ワーキングメモリ672の個数格納領域672aには、初期画素を含めた選択画素の個数の合計である“2”が格納される。そして、ステップS46、S47で無処理画素を含めた重心位置及び階調値の合計が演算されて、ワーキングメモリ672は図26(c)に示すように値が格納されることになる。
【0131】
そして、ステップS43からステップS48を繰り返し、4つの画素((n、m)、(n+1、m)、(n+1、m)、及び(n+1、m+1))が量子化中画素群56cに組み込まれるとする。そして、再びステップS43で未処理画素(n+1、m+2)が選択されると、個数格納領域672aにはこれまで、5個の画素を選択したため“5”が格納される(図27(a)参照)。ここで、ステップS441のROM64に記憶された所定の画素数を4個とすると、量子化中画素群56cの画素数(5個)が所定の画素数(4個)を超えたため、閾値変更処理(ステップS441)により、閾値変更をCPU61が演算することになる。
【0132】
ステップS442でCPU61は、量子化中画素数“5”と、これまでの階調値の合計値“40”とから、ROM65に記憶された関数を読出し、変更された閾値を演算する。その結果、例えば閾値を“255”から“50”に変更する。そして、これまでの階調値の合計“40”が閾値“50”を超えないので、ステップS46、S47に移行し、最終的に選択された画素(n+1、m+2)を含めた重心位置と階調値の合計を演算する。演算結果は、上述したようにワーキングメモリ672に格納され、ステップS48で階調値の合計“50”が閾値“50”と等しいため、ステップS49以降への移行して、図27(b)に示すように出力バッファに“255”を格納させて、この画素にドットを生成させるようにして一連の処理が終了することになる。なお、白濃度処理S53における閾値制御処理S573も同様の処理を行う。
【0133】
この例では、閾値を低くした場合を説明したが、入力階調値が中間階調値で連続する場合は、閾値が高くなるように演算される。
【0134】
このように、閾値を量子化画素群56cの個数と階調値で変化させているため、量子化済み画素群56aの大きさは、ほぼ一定であり、ドットが一定の密度で生成されることになる。しかも、重心を利用してドットのON/OFFを行うようにしているので、入力画像の階調値の分布に忠実なドットを分布を生成することができる。
【0135】
上述した一連の処理が終了するとCPU61は、RAM67の出力バッファ673に書き込まれた“255”(黒ドット生成する場合)や“0”(白ドット生成する場合)を読出し、印刷エンジン70に当該データを出力させて、所定の印刷出力を得ることができる。
【0136】
以上説明してきたように本発明によれば、誤差拡散法で問題となる、ワームや、ドット生成の遅延、及び領域外のデータを歪み、を発生させることなく高画質の出力ドットを得ることができる。さらに、本発明によれば、画素の画像データを量子化する際に、画像のデータ分布に対応するようにすることが可能となる。さらに、本発明によれば、ドットの分散性を向上させて視覚的に快適な印刷出力を得ることができる。さらに、本発明によれば、一定の密度でドットを生成させ、しかも入力画像データの分布に忠実にドットを生成させることで快適な印刷出力を得ることきる。
【図面の簡単な説明】
【図1】本発明による画像出力システムをモノクロ入力画像に適用したものの構成図である。
【図2】本発明の実施形態にかかる画像処理装置の構成を示すブロック図である。
【図3】階調画像データ56の走査法を説明するための図であり、階調画像データ56(図3(a))、初期走査(図3(b))、通常走査(図3(c))を示す図である。
【図4】ランダムに画素を選択した場合の印刷出力の例(図4(a))と、固定順で画素を選択した場合の印刷出力の例(図4(b))を示す図である。
【図5】重心56dの位置の決定法を説明するための図であり、量子化中画素群56cの各画素の階調画像データ値の総和が閾値未満である場合の重心56dの位置の決定法(図5(a))、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合の重心56dの位置の決定法(図5(b)〜(d))を示す。
【図6】白濃度を階調画像データとして使用する例を説明するための図であり、黒濃度を示す図(図6(a))、白濃度への変換を示す図(図6(b))、量子化画像データ付与後に黒濃度の階調画像データに戻したものを示す図(図6(c))である。
【図7】本発明の実施形態の動作を示すフローチャートである。
【図8】初期走査(図8(a))、通常走査(図8(b))、重心65dの決定(図8(c))を説明するための図である。
【図9】最後の通常走査(図9(a))、量子化中画素群56c(図9(b))、戻しデータの決定(図9(c))、重心65dの決定および量子化画像データの付与(図9(d))を説明するための図である。
【図10】通常走査対象画素56eの選択法の変形例を説明するための図であり、通常走査前(図10(a))、通常走査後(図10(b))を示す。
【図11】閾値に関する変形例を説明するための図であり、階調画像データ56の一例(図11(a))、閾値変更後の量子化中画素群56c(図11(b))、閾値変更後の量子化画像データの付与(図11(c))を示す。
【図12】一つの量子化済み画素群56aについて、複数の画素に量子化データを付与する変形例を説明するための図であり、量子化中画素群56c(図12(a))、本実施形態における量子化画像データの付与(図12(b))、複数の画素への量子化データの付与(図12(c))を示す。
【図13】2つの量子化済み画素群の重心が一致するときの例を示す図である。
【図14】本発明による画像出力システムをカラー入力画像に適用したものの構成図である。
【図15】本発明が適用される画像出力装置の構成図の例を示す図である。
【図16】本発明の実施形態の動作を示すフローチャートである。
【図17】本発明の実施形態の動作を示すフローチャートである。
【図18】RAM67の構成と格納される値の例を示す図である。
【図19】RAM67の構成と格納される値の例を示す図である。
【図20】RAM67の構成と格納される値の例を示す図である。
【図21】閾値を超えた場合の重心演算処理の動作を示すフローチャートである。
【図22】白濃度演算処理の動作を示すフローチャートである。
【図23】RAM67の構成と格納される値の例を示す図である。
【図24】RAM67の構成と格納される値の例を示す図である。
【図25】閾値制御処理の動作を示すフローチャートである。
【図26】RAM67の構成と格納される値の例を示す図である。
【図27】RAM67の構成と格納される値の例を示す図である。
【符号の説明】
10 階調画像データ記録部 12 画像データ走査部(画素群生成手段)14画像データ累計部 16 閾値記録部 18 閾値比較部 20 画素群重心決定部 22 量子化画像データ付与部 24 量子化画像データ記録部 56階調画像データ 56a 量子化済み画素群 56b 初期走査対象画素 56c 量子化中画素群 56d 重心 56e 通常走査対象画素 60 画像出力装置 61 CPU 65 ROM 66 ハーフトーン処理部 67 RAM 671 入力バッファ 672 ワーキングメモリ 672a 画素数格納領域 673 出力バッファ
Claims (8)
- 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、
前記画素群生成手段で生成された画素群の重心の位置を決定する画素群重心決定手段と、
前記画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、
前記画素群生成手段は、前記画素群を構成する画素数に応じて前記閾値を変更することを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置であって、
前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成すること特徴とする画像処理装置。 - 請求項2に記載の画像処理装置であって、
前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに選択する画素をランダムに選択することを特徴とする画像処理装置。 - 請求項2に記載の画像処理装置であって、
前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに、階調画像データ値が最も低い画素を選択することを特徴とする画像処理装置。 - 画素ごとの階調画像データ値の総和が閾値以上よなるまで画素を選択して画素群を生成する画素群生成手段と、
前記画素群生成手段で生成された画素群の重心の位置を決定する画素群重心位置決定手段と、
前記画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、
前記画素群生成手段は、生成した画素群の画素数が所定の画素数よりも大きいとき、前記画素群を構成する画素数と前記画素群を構成する画素の階調値の合計とから前記閾値を変更することを特徴とする画像処理装置。 - 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成工程と、
前記画素群生成工程で生成された画素群の重心の位置を決定する画素群重心決定工程と、
前記画素群重心決定工程で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与工程とを備え、
前記画素群生成工程は、前記画素群を構成する画素数に応じて前記閾値を変更することを特徴とする画像処理方法。 - 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、
前記画素群生成処理で生成された画素群の重心の位置を決定する画素群重心決定処理と、
前記画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、を備え、
前記画素群生成処理は、前記画素群を構成する画素数に応じて前記閾値を変更する、ことをコンピュータに実行させるためのプログラム。 - 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、
前記画素群生成処理で生成された画素群の重心の位置を決定する画素群重心決定処理と、
前記画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理と、を備え、
前記画素群生成処理は、前記画素群を構成する画素数に応じて前記閾値を変更する、ことをコンピュータに実行させるためのプログラムが格納された記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003104385A JP3896982B2 (ja) | 2003-01-09 | 2003-04-08 | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003002975 | 2003-01-09 | ||
JP2003104385A JP3896982B2 (ja) | 2003-01-09 | 2003-04-08 | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004266792A true JP2004266792A (ja) | 2004-09-24 |
JP3896982B2 JP3896982B2 (ja) | 2007-03-22 |
Family
ID=33133509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003104385A Expired - Fee Related JP3896982B2 (ja) | 2003-01-09 | 2003-04-08 | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3896982B2 (ja) |
-
2003
- 2003-04-08 JP JP2003104385A patent/JP3896982B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP3896982B2 (ja) | 2007-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7532365B2 (en) | Threshold matrix generation method, threshold matrix generation apparatus, and recording medium | |
JP5260865B2 (ja) | デジタル画像をハーフトーン化する方法、装置およびコンピュータプログラム | |
JP4062175B2 (ja) | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 | |
JP3240803B2 (ja) | 画像処理装置および画像処理方法 | |
JP2001298617A (ja) | 閾値マトリクス、及びそれを利用した階調再現方法とその装置 | |
JP4783566B2 (ja) | カラー・イメージ・データを処理するシステム及び方法 | |
JP3979372B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
JP2020082694A (ja) | ディザマトリクスの生成装置、生成方法、当該ディザマトリクスを用いた画像処理装置、画像処理方法、及びプログラム | |
US7295347B2 (en) | Image processing method for generating multi-level data | |
JP2001298616A (ja) | 閾値マトリクス、及びそれを利用した階調再現方法とその装置 | |
JP3928576B2 (ja) | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 | |
JP3896982B2 (ja) | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 | |
JP4062176B2 (ja) | 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 | |
JP3951953B2 (ja) | 印刷装置、画像処理装置、印刷方法、画像処理方法及びプログラム | |
JP2004048194A (ja) | 画像処理装置及び方法 | |
JP2003319177A (ja) | 量子化処理装置及び方法とそれを用いたインクジェット記録装置 | |
JP2005341142A (ja) | 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 | |
JP2005117642A (ja) | ハーフトーン処理方法、画像処理装置、画像処理方法、及びプログラム | |
JP2005039413A (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP4337670B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP2005318402A (ja) | 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 | |
JP2005252807A (ja) | 画像処理方法、印刷システム及びプリンタ | |
JP3709599B2 (ja) | ディザマトリックス作成方法 | |
JP2005311414A (ja) | 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体 | |
JP2005064941A (ja) | 画像処理装置、画像処理方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061128 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061211 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100105 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110105 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110105 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120105 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120105 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130105 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130105 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140105 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |