JP4062175B2 - 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 - Google Patents

画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 Download PDF

Info

Publication number
JP4062175B2
JP4062175B2 JP2003154202A JP2003154202A JP4062175B2 JP 4062175 B2 JP4062175 B2 JP 4062175B2 JP 2003154202 A JP2003154202 A JP 2003154202A JP 2003154202 A JP2003154202 A JP 2003154202A JP 4062175 B2 JP4062175 B2 JP 4062175B2
Authority
JP
Japan
Prior art keywords
pixel
pixel group
image data
gradation
centroid
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.)
Expired - Fee Related
Application number
JP2003154202A
Other languages
English (en)
Other versions
JP2004363639A (ja
Inventor
信宏 狩戸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2003154202A priority Critical patent/JP4062175B2/ja
Priority to DE60325941T priority patent/DE60325941D1/de
Priority to EP03257276A priority patent/EP1475954B1/en
Priority to AT03257276T priority patent/ATE421838T1/de
Priority to US10/742,633 priority patent/US7474441B2/en
Priority to CNB2004100012062A priority patent/CN1306789C/zh
Publication of JP2004363639A publication Critical patent/JP2004363639A/ja
Application granted granted Critical
Publication of JP4062175B2 publication Critical patent/JP4062175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • H04N1/405Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
    • H04N1/4051Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size
    • H04N1/4052Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels producing a dispersed dots halftone pattern, the dots having substantially the same size by error diffusion, i.e. transferring the binarising error to neighbouring dot decisions

Description

【0001】
【発明の属する技術分野】
本発明は、画素の画像データを量子化する処理に関する。
【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では、セルの探索を所定のテーブルで行っている。しかし、実際には画素をテーブルにより左側に探索するとき確率的にすでに処理済みの画素となる場合が多く、生成されるセルが歪んだ形(例えば三角形)となる。かかる形状のセルの中心にドットを形成させても、ドットがある部分では隣のセルのドットと連なって形成される場合があり、出力ドットの偏りが発生する。
【0012】
そこで、本発明の第3の目的は、ドットの分散性を向上させて視覚的に快適な印刷出力を得ることを目的とする。
【0013】
さらに、本発明の第4の目的は、視覚的に快適な印刷出力を得るための処理の計算量を少なくして装置全体の処理効率を上げることを目的とする。
【0014】
【課題を解決するための手段】
上記目的を達成するために、本発明は、画像処理装置であって、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成した画素群の重心の位置を決定する画素群重心決定手段と、画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、画素群生成手段は画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより画素群を生成することを特徴としている。これにより、例えば、生成されるドット間距離が均一で、ドットの分散性が向上し、快適な印刷出力を得ることができる。
【0015】
さらに、本発明は、上記画像処理装置であって、この画素群生成手段は、画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに選択する画素をランダムに選択することを特徴としている。これにより、例えば、周期パターンの発生を抑えることができる。
【0016】
上記目的を達成するために、本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成した画素群の重心の位置を決定する画素群重心決定手段と、画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、画素群生成手段は、画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続け、選択した画素群における階調画像データ値の総和が閾値を超えたとき、越えた分の階調画像データ値を画素群生成手段で最後に選択した前記画素に戻すことを特徴としている。これにより、閾値を超えた画素において超えた分の階調値を当該画素に戻しているため、入力画像の階調値に忠実なドットを形成させることが可能となる。
【0017】
また、上記目的を達成するために本発明は、画像処理方法において、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成工程と、画素群生成工程で生成した画素群の重心の位置を決定する画素群重心決定工程と、画素群重心決定工程で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与工程とを備え、画素群生成工程は、画素群重心決定工程で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより画素群を生成することを特徴としている。
【0018】
また、上記目的を達成するために本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成した画素群の重心の位置を決定する画素群重心決定処理と、画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムであって、画素群生成処理は、画素群重心決定処理で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成することを、コンピュータに実行させるためのプログラムであることを特徴としている。
【0019】
また、上記目的を達成するために本発明は、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成した画素群の重心の位置を決定する画素群重心決定処理と、画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムであって、画素群生成処理は、画素群重心決定処理で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成することを、コンピュータに実行させるためのプログラムが格納された記録媒体であることを特徴としている。
【0020】
さらに、上記目的を達成するために本発明は、画素選択のための第1の基準点に基づいて、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、画素群生成手段で生成した画素群の第2の基準点を決定する画素群基準点決定手段と、画素群基準点決定手段で決定した第2の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、画素群生成手段は、第1の基準点を更新させて当該第1の基準点に基づいて画素を選択するようにした画像処理装置であることを特徴とする。これにより、例えば、快適な印刷出力を得ることができるとともに、重心位置を演算して未処理画素を選択する場合よりも、計算量を少なくして画像処理装置全体の処理効率を上げることが可能となる。
【0021】
さらに、本発明は、上記画像処理装置において、上記画素群生成手段は、第1の基準点を、画素を選択するごとに更新させることを特徴としている。これにより、例えば、生成される画素群が第1の基準点を固定にした場合よりも円状に形成される可能性が高くなり、ドット間距離が均一に保たれ快適な印刷出力を得ることが可能となる。
【0022】
さらに、本発明は、上記画像処理装置において、上記画素群生成手段は、第1の基準点を、画素を所定回数選択するごとに更新させることを特徴としている。これにより、例えば、毎回第1の基準点を更新させる場合と比較して、計算量を少なくし装置全体の処理効率を上げることができる。
【0023】
さらに、本発明は、上記画像処理装置において、上記画素群生成手段は、第1の基準点を、選択した画素の階調画像データの総和が所定値になったとき更新させることを特徴としている。これにより、例えば、画素群がより円状に成長し快適な印刷ドット出力を得ることができるとともに、重心位置を毎回演算するよりも計算量を少なくすることができる。
【0024】
さらに、本発明は、上記画像処理装置において、上記第1の基準点は、選択した画素の位置から演算した中心位置であることを特徴としている。これにより、例えば、各画素の階調値を含めた演算を行う必要がなくなり、計算量を減らすことができる。
【0025】
さらに、本発明は、上記画像処理装置において、上記第2の基準点は、画素群の画素の位置と階調画像データ値とから演算した重心位置であることを特徴としている。これにより、例えば、画素群の入力階調値に忠実なドットを生成して、快適な印刷出力を得ることができる。
【0026】
さらに、本発明は、上記画像処理装置において、第1の基準点は、選択した画素の位置から演算した中心位置であり、第2の基準点は、画素群の画素の位置から演算した中心位置であることを特徴としている。これにより、例えば、画素選択に用いる基準点とドットを生成させるための基準点ともに、階調値を含めた演算を行う必要がなくなるので、計算量を少なくして装置全体の処理効率を上げることができる。
【0027】
さらに、本発明は、上記画像処理装置において、上記画素群生成手段は、第1の基準点からの相対位置を記憶したテーブルを参照し、当該テーブルに記憶した順に画素ごとの階調画像データ値の総和が閾値以上になるまで画素を選択することを特徴としている。これにより、例えば、第1の基準点からテーブルを参照するだけで画素を選択するようにしたので、第1の基準点から画素を選択する演算をする必要がなくなり、計算量を少なくすることができる。
【0028】
また、上記目的を達成するため本発明は、画素選択のための第1の基準点に基づいて、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成工程と、画素群生成工程で生成した画素群の第2の基準点を決定する画素群基準点決定工程と、画素群基準点決定工程で決定した第2の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与工程とを備え、画素群生成工程は、第1の基準点を更新させて当該第1の基準点に基づいて画素を選択するようにした画像処理方法であることを特徴としている。これにより、例えば、快適な印刷出力を得ることができるとともに、重心位置を演算して未処理画素を選択する場合よりも、計算量を少なくした画像処理方法を提供することが可能となる。
【0029】
また、上記目的を達成するために本発明は、画素選択のための第1の基準点に基づいて、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成した画素群の第2の基準点を決定する画素群基準点決定処理と、画素群基準点決定処理で決定した第2の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムであって、画素群生成処理は、第1の基準点を更新させて当該第1の基準点に基づいて画素を選択するようにしたプログラムであることを特徴としている。これにより、例えば、快適な印刷出力を得ることができるとともに、重心位置を演算して未処理画素を選択する場合よりも、計算量を少なくして画像処理装置全体の処理効率を上げるプログラムを提供することが可能となる。
【0030】
さらに、上記目的を達成するために本発明は、画素選択のための第1の基準点に基づいて、画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、画素群生成処理で生成した画素群の第2の基準点を決定する画素群基準点決定処理と、画素群基準点決定処理で決定した前記第2の基準点に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムが格納された記録媒体であって、画素群生成処理は、第1の基準点を更新させて当該第1の基準点に基づいて画素を選択するようにしたことを特徴とするプログラムが格納された記録媒体であることを特徴としている。これにより、例えば、これにより、例えば、快適な印刷出力を得ることができるとともに、重心位置を演算して未処理画素を選択する場合よりも、計算量を少なくして画像処理装置全体の処理効率を上げるプログラムが格納された記録媒体を提供することが可能となる。
【0031】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。
[第1の実施例]
図1は、本発明による画像出力システムをモノクロ入力画像に適用したものの構成図である。この例では、ホストコンピュータ50において、階調画像データ56(図1においてはモノクロである)が生成され、ページプリンタなどの画像出力装置60に与えられる。ページプリンタなどの画像出力装置60は、供給された画像データ56に基づきモノクロ画像を再現する。画像出力装置60は、画像処理を行ってエンジン70にレーザ駆動用データ69を供給するコントローラ62と、前記駆動用データ69に従って画像の再生を行うエンジン70とを有する。
【0032】
ホストコンピュータ50は、ワードプロセッサや図形ツールなどのアプリケーションプログラム52により、文字データ、図形データ及びビットマップデータ等を生成する。これらのアプリケーションプログラム52により生成されたそれぞれのデータは、ホストコンピュータ50にインストールされている画像出力装置用のドライバ54により、ラスタライズされ、画素またはドット毎のモノクロデータからなる階調画像データ56に変換される。階調画像データ56は、例えば、各画素ごとに8ビットすなわち0〜255までの値をとる階調画像データ値の集合体である。
【0033】
画像出力装置60も、図示しないマイクロプロセッサを備え、そのマイクロプロセッサとインストールされている制御プログラムにより、ハーフトーン処理部66及びパルス幅変調部68を有するコントローラ62が構成される。ハーフトーン処理部66は、階調画像データ56を受けて、量子化画像データ30を生成する。ハーフトーン処理部66の構成は後で説明する。量子化画像データ30はパルス幅変調部68に与えられる。パルス幅変調部68は、ドット毎にレーザ駆動パルス有りと無しからなる駆動データ69を生成する。
【0034】
エンジン70内のレーザドライバ72が、駆動用データ69に基づいて、画像描画用のレーザダイオード74を駆動する。エンジン70には、感光ドラムや転写ベルト等とその駆動部が含まれるが、図1では省略されている。
【0035】
本発明の実施形態にかかる画像処理装置は、階調画像データ56を量子化画像データ30に変換するハーフトーン処理部66に相当するものである。
【0036】
図2は、本発明の実施形態にかかる画像処理装置の構成を示すブロック図である。画像処理装置は、階調画像データ記録部10、画像データ走査部(画素群生成手段)12、画像データ累計部14、閾値記録部16、閾値比較部18、画像群重心決定部20、量子化画像データ付与部22、量子化画像データ記録部24を備える。
【0037】
階調画像データ記録部10は、ホストコンピュータ50から出力された階調画像データ56を受けて記録する。階調画像データ56は、例えば、各画素が8ビット(0〜255)の値をとる。この値は、例えば黒の濃度を意味している。
【0038】
画像データ走査部(画素群生成手段)12は、階調画像データ56を走査する。階調画像データ56の走査法を図3を参照して説明する。
【0039】
階調画像データ記録部10に記録されている階調画像データ56は図3(a)に示すようなものである。図3(a)には、階調画像データの内、画素がm〜m+2行かつn〜n+3列の範囲のものを示している。なお、以後、画素を(n、m)というように表記する。画素(n、m)は、m行n列の画素を意味する。階調画像データの内、量子化済み画素群56a(画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1)、(n+2、m+1))は、量子化が済んでおり、画素(n+1、m+1)に量子化画像データ値"255"が与えられているものとする。
【0040】
走査法には二種類あり、量子化中画素群56cが無いときは初期走査、量子化中画素群56cが有るときは通常走査を行う。
【0041】
初期走査の方法を図3(b)を参照して説明する。初期走査は、量子化済み画素群56aを除いた画素において、最も上の行の内で、最も左にある画素を走査対象とするものである。ただし、主走査方向が左から右へ向かうものとする。図3(b)においては、最も上の行はm行であり、その内で最も左にある画素(n+2、m)が初期走査の走査対象である初期走査対象画素56bである。なお、初期走査対象画素56bは量子化中画素群56cを構成する。
【0042】
通常走査の方法を図3(c)を参照して説明する。量子化中画素群56c(画素(n+2、m)、(n+3、m))の重心56dは、画素(n+2、m)および画素(n+3、m)の階調画像データ値が等しいので、画素(n+2、m)および画素(n+3、m)の境界線の中点にある。ここで、重心56dから最も近い画素(量子化済み画素群56aを除く)を走査対象とするのが通常走査である。このように重心56dから次の画素を探索するため、生成した量子化済み画素群56aは円状に生成され、その重心56dにドットを形成しても、隣合うドットは均一の距離が保たれる。かかるドットの分散により視覚的に快適な印刷出力を得ることができる。
【0043】
図3(c)では、重心56dから最も近い画素は、画素(n+2、m+1)および画素(n+3、m+1)である。このように、重心56dから最も近い画素が複数ある場合はランダムに走査対象を選ぶことが好ましい。ランダムではなく固定順により選択すると量子化済み画素群56aの形が特定の形になりやすくその重心56dにドットを形成しても全体としてドットの位置が周期的で印刷出力において周期パターンを発生させてしまう。かかる周期パターンは、視覚に映りやすく印刷出力の画像が不自然なものとなってしまう。一方、ランダムにより選択することで、生成される量子化済み画素群56aの形状が一定とはならず、重心56dにドットを形成しても上述のような周期パターンが発生せず、視覚的に快適な印刷出力を得られるのである。図4(a)にランダムに選択した場合の印刷出力の例を示し、図4(b)にはランダムではなくテーブル等を利用して固定順で画素を選択した場合の印刷出力の例を示す。図4(b)に示すように固定順の場合、印刷部分の左下から右上にかけて一定の並び順でドットが形成されているため、周期パターンが発生し、このパターンが視覚に反映されて印刷出力が不自然なものとなっている。一方、図4(a)に示すようにランダムに選択した場合には、周期パターンが発生せず、視覚的に快適な印刷出力を得ることができる。
【0044】
図3(c)の例では、画素(n+2、m+1)が通常走査の走査対象である通常走査対象画素56eとして選ばれている。通常走査対象画素56eが量子化中画素群56cの一部となってから、次の通常走査が行われる。
【0045】
初期走査が行われると量子化中画素群56cが生成されるため、それから後は通常走査が繰り返し行われる。通常走査対象画素56eは量子化中画素群56cに組み入れられる。ただし、量子化中画素群56cの各画素の階調画像データ値の総和が閾値(例えば、255)以上になると、量子化中画素群56cは、量子化済み画素群56aとなる。すなわち、量子化中画素群56cとは、量子化済み画素群56aとなる前に走査対象となった画素の集合である。量子化中画素群56cが量子化済み画素群56aになると、再び初期走査が行われる。
【0046】
画像データ走査部12は、画像データ累計部14に量子化中画素群56cの各画素の階調画像データ値を出力する。さらに、画像データ走査部12は、画素群重心決定部20に、量子化中画素群56cの各画素の位置および階調画像データ値を出力する。
【0047】
画像データ累計部14は、画像データ走査部12から量子化中画素群56cの階調画像データ値を受けて総和をとって出力する。図3(c)の例でいえば、量子化中画素群56c(画素(n+2、m)、(n+3、m))の階調画像データ値の総和=50+50=100である。
【0048】
閾値記録部16は、量子化中画素群56cの各画素の階調画像データ値の総和と比較すべき閾値を記録する。閾値は、例えば255である。
【0049】
閾値比較部18は、画像データ累計部14の出力を、閾値記録部16から読み出した閾値と比較する。そして、比較結果(量子化中画素群56cの各画素の階調画像データ値の総和が、閾値未満か、閾値以上か)を画素群重心決定部20に送る。さらに、閾値比較部18は、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上であるならば、量子化画像データ付与部22に対し、量子化画像データの付与を要求する。
【0050】
画素群重心決定部20は、量子化中画素群56cの重心56dの位置を決定する。重心56dの位置は、画像データ走査部12に送られる。重心56dの位置の決定法を図5を参照して説明する。重心56dの位置の決定法は、閾値比較部18の比較結果により異なる。
【0051】
図5(a)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値未満である場合の、重心56dの位置の決定法を説明する。量子化中画素群56cの各画素のデータ値の総和=50+50+50+50=200は、閾値(=255)未満である。この場合は、量子化中画素群56cの各画素の中心にデータが集約されているものとして、重心56dの位置を決定する。図5(a)の場合は、量子化中画素群56cの各画素(画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1))のデータ値はすべて等しいので、重心56dの位置は、画素(n、m)の右下の角になる。
【0052】
図5(b)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合の、重心56dの位置の決定法を説明する。量子化中画素群56cの各画素のデータ値の総和=50+50+50+50+65=265は、閾値(=255)以上である。この場合は、閾値を超えた分の階調画像データ値を無視する。図5(b)の例でいえば、画素(n+1、m+2)のデータ値の内、10だけ無視し、画素(n+1、m+2)のデータ値が55(=65−10)であるとして重心56dの位置を求める。重心56dの位置は、図5(a)における重心56dよりも、やや右下に動いて、画素(n+1、m+1)の内にある。
【0053】
なお、無視した階調画像データ値"10"(戻しデータ)は、画素(n+1、m+2)に戻す(図5(c)参照)。すなわち、画素(n+1、m+2)に階調画像データ値"10"が残ることになる。画素(n+1、m+2)は、さらに他の量子化中画素群56cの構成要素となり得る。すなわち、画素(n+1、m+2)のうち階調画像データ値“10”は、量子化済み画素群56aに組み込まれず、再び初期画素から探索するときに、量子化中画素群56cとして重心からの探索対象となる。このように戻しデータ値をもとの画素(n+1、m+2)に戻ため、量子化済み画素群56a以外の画素に戻して誤差を伝播させるときと比べて入力された画素の階調値のドット分布に忠実にドットが形成されることになる。なお、画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1)の階調画像データ値は無視されなかったので、階調画像データ値は残らない。
【0054】
また、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合は、重心56dの位置を量子化画像データ付与部22に送る。
【0055】
図5(b)を参照して、比較結果が、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上である場合の、重心56dの位置の決定法を説明したが、量子化中画素群56cの各画素の階調画像データ値の総和が閾値と等しい場合もある。例えば、図5(a)〜(c)において、画素(n+2、m)、(n+3、m)、(n+2、m+1)、(n+3、m+1)、(n+3、m+2)の階調画像データ値の総和は、255(=閾値)である。このような場合は、図5(d)(右半分)に示すように、重心56dは画素(n+3、m+1)の内にある。そして、戻しデータは発生しない。
【0056】
量子化画像データ付与部22は、閾値比較部18から送られた量子化画像データの付与要求を受けると、画素群重心決定部20から送られた重心56dの位置する画素に、閾値と等しい量子化画像データを付与する。図5(c)を参照して、量子化済み画素群56aの重心56dの位置する画素(n+1、m+1)に、閾値と等しい量子化画像データ"255"を付与する。なお、図5(c)において、量子化済み画素群56aとあるのは、すでに、量子化画像データ"255"が付与されているからである。量子化画像データ付与部22は、量子化画像データを付与すると、画像データ走査部12に初期化要求、すなわち、画像データ走査部12に初期走査を行うことを要求する。これにより、画像データ走査部12は再び初期走査を行う。
【0057】
ここで、量子化画像データの付与について説明する。一般に、プリンタは、各画素について256階調もの濃度を区別して印刷することができない。例えば、各画素について白(黒の濃度が0)、黒(黒の濃度が255)のいずれかしか印刷できない。そこで、量子化済み画素群56aについて、その重心が位置する画素に、閾値と等しい量子化画像データ"255"を付与する。すなわち、重心が位置する画素に、黒のドットを印刷することを意味する。なお、ドットの形状は、任意である。例えば、円形が挙げられるが、他の形状でもよい。ただし、ドットが位置する画素内に、ドットの重心が位置するようにすることが好ましい。
【0058】
また、白濃度を階調画像データとして使用する例を図6に示す。図6(a)を参照して、各画素には黒の濃度"205"等という比較的濃い黒を意味する階調
画像データ値が記録されている。このままでは、すぐに、量子化中画素群56cの各画素の階調画像データ値の総和が閾値以上になる。
【0059】
そこで、図6(b)に示すように、白濃度に変換する。白濃度=255−黒の濃度、である。白濃度への変換は、例えば、画像データ走査部12(白濃度変換手段に相当)により、初期走査対象画素56bの周囲について行われる。白濃度への変換は、初期走査対象画素56bの階調画像データ値が中程度の濃度(例えば、127≒255/2)超えれば行うようにすることが好ましい。図6(b)においては、量子化中画素群56c(画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1))において、各画素のデータ値の総和は閾値未満である。これが、黒の濃度のまま(図6(a)参照)であれば、画素(n、m)、(n+1、m)だけで、そのデータ値の総和(410=205+205)すでに閾値(225)を超えてしまう。
【0060】
図6(c)に示すように、戻しデータは245、付与される量子化画像データは0となる。これは、白濃度になおせば、それぞれ、戻しデータ"10"、付与される量子化画像データ"255"となり、図5(c)に対応する。
【0061】
なお、量子化画像データ0を付与した場合は、付与された画素の周囲の画素に黒のドットを印刷し、付与された画素にはドットを印刷をしないことになる。
【0062】
量子化画像データ記録部24は、量子化画像データ付与部22により付与された量子化画像データを記録する。量子化画像データ記録部24の記録内容は、量子化画像データ30として出力される。
【0063】
次に、本発明の実施形態の動作を図7のフローチャートおよび図8、9を参照して説明する。
【0064】
まず、階調画像データ記録部10から画像データ走査部12が階調画像データ56を読み出し、走査していない画素があるか否かを判定する(S10)。ここで、走査していない画素が無い、すなわち走査が終了していれば(S10、Yes)、処理を終了する。走査していない画素が有る、すなわち走査が終了していなければ(S10、No)、画像データ走査部12は初期走査を行う(S12)。すなわち、初期走査対象画素56bを決定する。例えば、図8(a)に示すような階調画像データ56がある場合、画素(n、m)が初期走査対象画素56bとなる。
【0065】
次に、初期走査対象画素56bに記録されている階調画像データ値が127以下か否かを画像データ走査部12が判定する(S14)。もし、階調画像データ値が127を超えれば(S14、No)、画像データ走査部12は、階調画像データ56の各画素の階調画像データ値を白濃度に変換する(S16)(図6(a)、(b)参照)。その後、走査した画素の階調画像データ値を画像データ累計部14に送る。なお、階調画像データ値が127以下であれば(S14、Yes)、画像データ走査部12は、走査した画素の階調画像データ値を画像データ累計部14に送る。図8(a)の例では、初期走査対象画素56bに記録されている階調画像データ値=50であるため、白濃度への変換は行われない。
【0066】
画像データ累計部14は、画像データ走査部12から、走査した画素の階調画像データ値を受けると、データ値の累計を計算する(S18)。データ値の累計は、閾値比較部18に送られる。閾値比較部18は、データ値の累計を、閾値記録部16から読み出した閾値(=255)と比較する。そして、データ値の累計が閾値(=255)以上であるか否かを判定する(S20)。判定の結果は、画像群重心決定部20に送られる。判定の結果により、画素群重心決定部20の動作が異なるからである。
【0067】
データ値の累計が閾値未満であれば(S20、No)、最後に走査した画素を量子化中画素群56cに組み入れる。その後、画素群重心決定部20は、量子化中画素群56cの重心を決定する(S22)。なお、画素群重心決定部20は、量子化中画素群56cの重心決定の前に、画像データ走査部12から量子化中画素群56cの各画素の位置および階調画像データ値を受ける。これらを重心決定に用いる。そして、画像データ走査部12が通常走査を行う(S24)。すなわち、通常走査対象画素56eを決定する。そして、データ値の累計(S18)に戻る。
【0068】
図8(a)を参照して、初期走査対象画素56bに記録された階調画像データ値=50である。ここで、画像データ累計部14により、階調画像データ値の累計=50を得る(S18)。累計は255未満なので(S20、No)、初期走査対象画素56bを量子化中画素群56cに組み入れてから(図8(b)参照)、量子化中画素群56cの重心を決定する(S22)。重心は、画素(n、m)の中心である。重心に最も近い画素は画素(n+1、m)および画素(n、m+1)である。上述したように量子化済み画素群56aに組み入れる次の画素を探索するのに重心からの距離を利用しているために、最終的に生成される量子化中画素群56cの形状はほぼ円状に成長し、ドットの形成が互いに均一の距離を有し、ドットの分散性が向上する。ここで、ランダムに通常走査対象画素56eを選択し、画素(n+1、m)を通常走査対象画素56eとする(S24)(図8(b)参照)。上述したようにランダムに選択することで、最終的に生成される量子化済み画素群56aの形状は常に同じ形状にならず、ドットの周期的パターンが現れない。
【0069】
そして、データ値の累計(S18)に戻り、データ値の累計=50+50=100が求められる。累計は255未満なので(S20、No)、通常走査対象画素56eを量子化中画素群56cに組み入れてから(図8(c)参照)、量子化中画素群56cの重心を決定する(S22)。重心56dは、画素(n+1、m)および画素(n、m+1)の境界線上の中点である。以後、このようにして、走査を繰り返していく。
【0070】
データ値の累計が閾値以上であれば(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)に戻る。
【0071】
図9(a)を参照して、量子化中画素群56cが画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1)により構成されている。このような量子化中画素群56cは、例えば、画素(n、m)、(n+1、m)、(n+1、m+1)、(n、m+1)の順に走査されることにより生成される。重心56dは、画素(n、m)の右下の角にある。重心56dに最も近い画素は画素(n+1、m+2)および画素(n、m+2)である。ここで、ランダムに通常走査対象画素56eを選択し、画素(n、m+2)を通常走査対象画素56eとする(S24)。
【0072】
そして、データ値の累計(S18)に戻り、データ値の累計=50+50+50+50+65=265が求められる。累計は255以上なので(S20、Yes)、通常走査対象画素56eを量子化中画素群56cに組み入れてから(図9(b)参照)、戻しデータを決定する(S30)。戻しデータは、最後に走査した画素(n、m+2)について計算する。データ値の累計−閾値=265−255=10である。よって、戻しデータ=10とし、画素(n、m+2)に戻す(図9(c)参照)。画素(n、m+2)の階調画像データは戻しデータを減じた値=65−10=55として量子化中画素群56cの重心56dを決定する(S32)。重心56dの位置は、図5(c)におけるものと同様である(図9(d)参照)。そして、重心56dの位置する画素(n+1、m+1)に、量子化画像データ付与部22が量子化画像データ255を付与する(S34)。
【0073】
本発明の実施形態によれば、量子化済み画素群56aの重心56dが位置する画素に量子化画像データを付与する。これにより、量子化画像データは、量子化済み画素群56aの階調画像データの濃度分布に対応したものとなる。しかも、量子化画像データの値は閾値(=255)と等しく、量子化済み画素群56aにおける各画素の階調画像データの総和(戻しデータを除く)も閾値と等しいため、量子化済み画素群56a単位で見れば、量子化誤差が無い。
【0074】
このように、量子化誤差が無く、しかも階調画像データの濃度分布に対応した量子化が可能である。よって、誤差拡散法における、誤差拡散後の各画素のデータ(濃度)が、誤差拡散前の各画素の近傍のデータ(濃度)の分布に対応していないことによるワーム等の問題が解消される。
【0075】
また、量子化済み画素群56aにおける戻しデータは重心56dの決定の際に無視して画素に戻すので、量子化済み画素群56aにおける各画素の階調画像データの総和が閾値を超えても量子化誤差を起さなくてすむ。
【0076】
ここで、戻しデータは元の画素に戻し、その画素を量子化済み画素群56aに組み込まれないようにし、初期画素から再度量子化中画素群56cに組み込まれるようにしているため、入力階調値に忠実なドット分布を形成することができる。
【0077】
さらに、黒の濃度が大きい場合は、白濃度を使用することにより(図6参照)、量子化済み画素群56aに組み入れられる画素の個数が激減することを防ぐことができる。
【0078】
また、量子化中画素群56cの重心の最も近い画素が複数ある場合は、通常走査対象画素56eをどれにするかはランダムに決定するため、量子化後の画像の画質が向上する。
【0079】
なお、本発明の実施形態には色々な変形例が考えられる。
【0080】
例えば、主走査方向が左から右へという場合は、階調画素データ56の右端付近において量子化中画素群56cを生成していると、各画素の階調画像データ値の総和が閾値に達する前に、これ以上の画素を量子化中画素群56cに組み入れられなくなることがある。この場合は、各画素の階調画像データ値の総和に最も近い量子化画像データを量子化中画素群56cの重心に付与する。量子化画像データは256階調もの多階調にすることができないので、量子化画像データと総和との誤差が生ずることがあるが、考えないことにする。
【0081】
図10を参照して、通常走査対象画素56eの選択法の変形例を説明する。図10(a)に示すように、量子化中画素群56cが画素(n、m)、(n+1、m)(いずれも階調画素データ値=50)により構成されている場合、重心56dは、画素(n、m)および画素(n+1、m)の境界線の中点にある。すると、重心56dから最も近い画素は画素(n、m+1)および画素(n+1、m+1)である。この変形例では、ランダムに通常走査対象画素56eを選択せずに、階調画素データ値が小さい方の画素を通常走査対象画素56eとして選択する。図10において、画素(n、m+1)の階調画素データ値=50であり、画素(n+1、m+1)の階調画素データ値=80である。よって、画素(n、m+1)の階調画素データ値の方が小さいため、画素(n、m+1)を通常走査対象画素56eとして選択する(図10(b)参照)。このようにすれば、量子化画像におけるエッジの再現性が向上する。すなわち、色変化が激しいエッジの部分では、階調値が高い画素ではなく低い画素を選択して、量子化中画素群56cに組み込み、階調値の高い画素は組み入れないようにしているため、突然階調値の合計が閾値を超えてドットを生成させることなく、入力階調値に忠実にドットを生成することができるのである。
【0082】
なお、図10における各画素の濃度が白濃度であってもよい。図10における各画素の濃度が白濃度である場合は、白濃度が低い方の画素を選択することになる。よって、黒濃度が高い方の画素を選択することになる。白濃度を使用するのは、初期走査対象画素56bの黒の濃度が127を超える場合である。よって、初期走査対象画素56bの黒の濃度が127を超える場合は、黒濃度が高い方の画素を通常走査対象画素56eとして選択することになる。
【0083】
図11を参照して、閾値に関する変形例を説明する。階調画像データ56が図11(a)に示すようなものである場合、量子化中画素群56cの画素の個数を増やしても閾値に到達しにくい。図11(a)に示すような階調画像データ56の場合、画素全部の階調画像データ値を合計しても10×12=120であり、閾値(=255)に達しない。そこで、閾値を変更する。例えば、閾値=50とする。すると、量子化中画素群56cが、図11(b)に示すように、画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1)、(n+1、m+2)により構成される場合、階調画像データ値の総和が閾値(=50)に達する。この場合、重心56dの位置する画素(n+1、m+1)に量子化画像データ"50"が付与される(図11(c)参照)。これは、画素(n+1、m+1)に量子化画像データ"255"の場合に比べて、およそ20%(50/255)のサイズのドットを印刷することを意味する。
【0084】
閾値の変更法としては、下記のようなものがある。ます、閾値記録部16に閾値の候補を複数記録しておく。例えば、閾値の候補を、255および50としておく。ここで、閾値の候補のうち、最高のもの(例えば、255)を閾値として使用する。そして、量子化中画素群56cの画素の個数が所定値(例えば、12個)に達しても、なお階調画像データ値の総和が閾値に達しない場合は、最高値の次に高い閾値の候補を閾値比較部18が閾値として閾値記録部16から読み出して使用する。なおも、量子化中画素群56cの画素の個数が所定値に達しながら、階調画像データ値の総和が閾値に達しない場合は、その次に高い閾値の候補を閾値比較部18が閾値として閾値記録部16から読み出して使用する。このようにして、使用する閾値を次第に低くしていく。例えば、量子化中画素群56cの画素の個数が12個になっても、階調画像データ値の総和が255に達しない場合は、次に高い閾値の候補(=50)を閾値比較部18が閾値として、閾値記録部16から読み出して使用する。
【0085】
このように、階調画像データ値の総和の低下に応じて閾値を低くしていけば、階調画像データ値が低い部分にも、ある程度の密度で黒色のドットが印刷できる。よって、階調画像データ56において、階調画像データ値が低い部分があったとしても、その部分に黒色のドットがほとんど印刷されないということが防止できる。これは、印刷されるドットの間隔がほぼ一定となることを意味する。よって、ドットの分散性が向上する。これにより、低周波ノイズの発生が抑えられる。
【0086】
また、入力画像の階調値が中間値で連続している領域では、(例えば階調値“120”が連続する場合など)閾値を一定にすると、量子化済み画像群56aはほぼ2画素で構成されることになる。量子化済み画素群56aに含まれる画素数が少ないと(量子化済み画素群56aの大きさが小さいと)、印刷されるドットの数が多くなり、それだけドットが目立つことになる。そこで、上述したように閾値を変更して、量子化済み画素群56aの大きさを一定に保つことで、ドットが一定の密度で生成されることになる。また、このように生成した量子化済み画素群56aでドットが生成される位置は、この画素群56aの重心位置である。したがって、入力画像の入力分布に忠実な出力ドットを得ることが可能となり、快適な印刷出力を得ることができるのである。
【0087】
図12を参照して、一つの量子化済み画素群56aについて、複数の画素に量子化データを付与する変形例を説明する。図12(a)を参照して、量子化中画素群56cが画素(n、m)、(n+1、m)、(n、m+1)、(n+1、m+1)、(n+1、m+2)により構成されている。ここで、量子化中画素群56cの各画素の階調画像データ値の総和は255であり、閾値(=255)に達する。そこで、これまで説明してきた実施形態によれば量子化中画素群56cの重心56dが位置する画素(n+1、m+1)に量子化画像データ"255"が付与される(図12(b)参照)。しかし、この変形例では、図12(c)に示すように、85=255/3の量子化画像データを、画素(n+1、m)、(n、m+1)、(n+1、m+2)に付与する。この場合、これらの量子化画像データが付与された画素全体の重心は、画素(n+1、m)の中心、画素(n、m+1)の中心および画素(n+1、m+2)の中心を頂点とする直角二等辺三角形の重心であり、画素(n+1、m+1)に位置する。しかも、これらの量子化画像データが付与された画素の量子化画素データの総和=85×3=255である。
【0088】
このような変形例によっても、量子化画像データが付与された画素全体で見れば、量子化済み画素群56aの階調画像データの濃度分布に対応し、量子化誤差も無い。なお、このように複数の画素に量子化データを付与しても、パルス幅変調部68を使用することにより印刷が可能である。
【0089】
また、既に量子化済み画素群56aで決定した重心と、現在量子化済み画素群56aで決定した重心とに位置する画素が一致する場合も考えられる。図13にその例を示す。図13に示すように、(n+2、m+1)、(n+1、m+2)、(n+2、m+2)、(n+3、m+2)及び(n+2、m+3)の5つの画素以外のまわりの20個の画素で量子化済み画素群56aが構成され、その画素群56aの重心に位置する画素(n+2、m+2)は、その5つの画素から構成される量子化済み画素群56aの重心に位置する画素(n+2、m+2)と一致している。これは、量子化済み画素群56aを構成する段階で、例えば最終的に残った画素から量子化済み画素群56aを構成すると(図13の例では、まわりの20個の画素から構成される画素群)、既に重心を演算した量子化済み画素群(図13の例では、ほぼ中心に位置する5つの画素群)の重心と一致することがあるからである。かかる場合に、既にドットが形成された画素の位置に最も近い位置で、未だドットが形成されていない画素にドットを形成させるようにする。図13の例では、中心付近にある5つの画素によって(n+2、m+2)の位置にドットが形成されるので、まわりにある20個の画素による重心位置(n+2、m+2)で、その位置から最も近い位置であって未だドットが形成されない位置、例えばその隣の(n+3、m+2)や、(n+2、m+1)、(n+1、m+2)、又は(n+2、m+3)に“255”を与える。全くドットを形成させないようにすることも考えられるが、入力階調値に忠実なドット分布を得るようにするためには、このようにドットを形成させることが望ましい。
【0090】
なお、これまで、本発明による画像出力システムをモノクロ入力画像に適用したものを前提として本発明の実施形態を説明してきた。しかし、本発明による画像出力システムをカラー入力画像に適用することもできる。図14は、本発明による画像出力システムをカラー入力画像に適用したものの構成図である。
【0091】
この例では、ホストコンピュータ50において、RGBカラー画像データ55が生成され、ページプリンタなどの画像出力装置60に与えられる。ページプリンタなどの画像出力装置60は、供給されたRGBカラー画像データ55に基づきカラー画像を再現する。画像出力装置60は、画像処理を行ってエンジン70にレーザ駆動用データ69を供給するコントローラ62と、前記駆動用データ69に従って画像の再生を行うエンジン70とを有する。
【0092】
ホストコンピュータ50は、ワードプロセッサや図形ツールなどのアプリケーションプログラム52により、文字データ、図形データ及びビットマップデータ等を生成する。これらのアプリケーションプログラム52により生成されたそれぞれのデータは、ホストコンピュータ50にインストールされている画像出力装置用のドライバ54により、ラスタライズされ、画素またはドット毎のRGBデータからなるRGBカラー画像データ55に変換される。RGBカラー画像データ55は、例えば、各画素における各色(赤:RED、緑:GREEN、青:BLUE)をそれぞれ8ビットすなわち0〜255までの値で示したRGBデータの集合体である。
【0093】
画像出力装置60も、図示しないマイクロプロセッサを備え、そのマイクロプロセッサとインストールされている制御プログラムにより、色変換部64、ハーフトーン処理部66及びパルス幅変調部68を有するコントローラ62が構成される。
【0094】
色変換部64は、RGBカラー画像データ55を受けて、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)の四色をそれぞれ8ビットで表現した合計8×4=32ビットの階調画像データ56を生成する。階調画像データ56は、例えば図3などに示したものと同様である。ただし、各画素には黒の濃度のかわりに、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)のうちのいずれか一つの色の濃度が記録されている。また、シアンなどの濃度が高すぎる場合に、白濃度に変換することもモノクロ画像の場合と同様である。
【0095】
ハーフトーン処理部66は、階調画像データ56を受けて、量子化画像データ30を生成する。ハーフトーン処理部66(図2に示す画像処理装置に相当)の構成は前に説明した通りである。量子化画像データ30はパルス幅変調部68に与えられる。パルス幅変調部68は、ドット毎にレーザ駆動パルス有りと無しからなる駆動データ69を生成する。
【0096】
エンジン70内のレーザドライバ72が、駆動用データ69に基づいて、画像描画用のレーザダイオード74を駆動する。エンジン70には、感光ドラムや転写ベルト等とその駆動部が含まれるが、図14では省略されている。
【0097】
なお、ハーフトーン処理部66(図2に示す画像処理装置に相当)は、ハーフトーン処理プログラムが画像出力装置60によって実行されることによって構成されるようにしてもよい。このハーフトーン処理プログラムは、通常、画像出力装置60が読取可能な形態でフロッピー(登録商標)ディスク、CD−ROMなどの記録媒体に記録されて流通する。当該プログラムは、メディア読取装置(CD−ROMドライブ、フロッピー(登録商標)ディスクドライブなど)によって読み取られてハードディスクにインストールされる。そして、CPUが所望のプログラムを適宜ハードディスクから読み出して所望の処理を実行するように構成されている。あるいは、画像出力装置60がROMなどの記録媒体を有しており、ハーフトーン処理プログラムがこのROMに記録されるようにしてもよい。
【0098】
上述した実施例では、初期走査により初期画素を探索するときに、量子化済み画素群56aを除いた未処理画素のうち、走査方向で最も上の行のうち最も左側にある画素を走査対象、選択対象としている。例えば図5(d)において、初期画素を画素(n、m)として量子化済み画素群56aを構成し、次に初期走査を行って、初期画素を画素(n+2、m)として量子化済み画素群56aを構成している。順次これを繰り返すと、最終的に1画像において図15(a)に示す複数の量子化済み画素群56aが構成されることになる。
【0099】
図15(a)に示すように、最も上の行に位置する複数の量子化済み画素群56aとその下の行に位置する複数の量子化済み画素群56aとは、若干のずれを持って配置されている。そしてさらにその下の行に位置する量子化済み画素群56aもその上にある行から若干のずれをもって配置される。これは、量子化済み画素群56aが円状に構成され、未処理画素のうち最も上の行の、最も左側に位置する画素を選択すると、1つの行で隣合う量子化済み画素群56aの間(円と円の間の隙間)に初期画素を選択する可能性が高くなるためである。
【0100】
このように構成された量子化済み画素群56aの重心にドットを生成させると、図15(b)に示すようにドットが形成される。このように、上の行でのドットの中間位置に、その次の行のドットが生成されるように構成される。これにより、全体的にドットが斜めに生成されるように見え、斜め方向は人間の視覚に知覚されにくく、視覚的に快適な印刷出力を得ることができるのである。
【0101】
一方、初期走査で初期画素を選択するときに、順次斜め方向に検索するように選択するときを考える。例えば図5(c)のように量子化済み画素群56aを構成した場合で説明する。順次斜め方向に検索するには、走査方向に対して初期画素(n、m)から順次左下に検索し、当該画素がなくなったら、最上行(1行目)の最も左の未処理画素を基準に順次左下の画素を検索してこれを繰り返す。もし、ここで1行目に未処理画素がなければ、画像右端(最右列)の最も上の未処理画素を基準に順次左下の画素を検索してこれを繰り返す。すでに検索した画素が量子化済み画素群56aに組み込まれていれば、それを除いたものとなる。図5(c)の場合は、まず画素(n、m)から左下の画素を探索すると当該画素は存在しないので、画素(n、m)の右側の画素(n+1、m)を探索する。これはすでに量子化済み画素群56aに組み入れられているため、当該画素は除き、次にこの画素の左下の画素(n、m+1)を探索する。これも量子化済み画素群56aに含まれているため、さらに左下、当該画素が存在しないと、画素(n+2、m)を探索し、この画素は量子化済み画素群56aに組み込まれていないため、この画素が初期画素として量子化済み画素群56aを構成していくことになる。
【0102】
これを繰り返し、最終的に得られた1画像中の量子化済み画素群56aは、図16(a)のように構成される。斜め方向に円状の量子化済み画素群56aが一定の大きさをもって構成されることになる。しかしながら、この重心位置にドットを生成させると、図16(b)に示すように各行、各列ほぼ一直線にドットが配置されることになる。このようなドットの形成は、図15(b)と比較してドットが目立ち易く快適な印刷出力とはいえない。
【0103】
したがって、最も上の行の、最も左側に位置する未処理画素を探索するようにすることで、快適な印刷出力を得ることが可能となるのである。もちろん、走査方向に初期走査を行って初期画素を探索すれば、他の方法であってもよい。さらに、副走査方向に初期走査を行う場合であっても全く同様の効果を得ることができる。かかる場合は、例えば最も左側の列の最も上に位置する未処理画素を選択するようにすればよいことになる。
[第2の実施例]
次に本願発明の第2の実施例について、図17から図29を参照して説明する。
【0104】
図17は、本願発明が適用される画像出力装置60のハード構成図を示す図である。画像出力装置60は、全体としてCPU61、入力インターフェース(入力I/F)63、ROM65、RAM67、及び印刷エンジン70とから構成されている。ここで、図1との対応関係は、ハーフトーン処理部66が、CPU61、入力I/F63、ROM65、及びRAM67とから構成され、パルス変調68がCPU61、ROM65、及びRAM67とから構成されることになる。また、エンジン70は、印刷エンジン70に対応している。
【0105】
CPU61は、内部バスを介して、入力I/F63、ROM65、RAM67、印刷エンジン70と互いにに接続され、重心位置の演算や、未処理画素の選択等、各種処理を実行するためのものである。詳細は後述する。
【0106】
入力I/F63は、ホストコンピュータ50と画像出力装置60とのインターフェースとしての役割を果たし、本実施例では、ホストコンピュータ50から出力される、ラスタライズされた各画素ごとに所定の階調値を有する入力画像データが入力される。入力された画像データはCPU61の制御により一旦RAM67に格納される。
【0107】
ROM65は、各種プログラムが格納される。CPU61の制御によりプログラムが読み出されて、各種処理が実行されることになる。
【0108】
RAM67は、CPU61が処理を実行する際のワーキングメモリとしての役割を果たし、実行データ等が一時格納される。
【0109】
印刷エンジン70は、図1のエンジン70と同様の構成で、レーザドライバ72及びLD74とから構成される。
【0110】
次に、入力された画像データからドットを形成するまでの、画像出力装置60の動作について図16から図26を参照して説明する。
【0111】
まず、CPU61は、ROM65に格納されたプログラムを読み出して、処理が開始される(ステップS40)。このとき、すでに入力画像データは入力I/F63を介してRAM67に格納されているものとする。もちろん、この処理の開始をトリガにしてホストコンピュータ50から入力画像データを入力I/F63を介してRAM67に取り込まれるようにしてもよい。このとき、入力画像データは、RAM67の所定領域である入力バッファ領域に格納される。この例を図20(a)に示す。
【0112】
RAM67は、図20(a)に示すように、入力バッファ領域671と、ワーキングメモリ領域672と、出力バッファ領域673とから構成される。この入力バッファ領域671は、2次元構造を有しており、例えば上述の入力画素(n、m)に位置する画素は、入力バッファ領域の(n、m)のアドレスに格納される。入力画素の位置に対応するように入力バッファ領域671が構成される。実際には、このアドレスには入力画像データの階調値が格納されることになる。図5(a)や図8(a)に示す入力画素が入力されると、図20(b)に示すように入力バッファ671に各階調値が格納される。ワーキングメモリ領域672は、重心位置の演算結果と階調値の演算結果が格納され、出力バッファ領域673は入力バッファ671と同様に入力画素に対応するように構成される。詳細は後述する。
【0113】
次いで、CPU61は、初期画素を決定して、初期濃度重心を演算する(ステップS41)。初期画素の決定は、RAM67の入力バッファ671に格納された入力画像データのうち、第1の実施例と同様に入力画素の位置で最も上の左側に位置する画素をCPU61が選択する。すなわち、図20(b)に示す例では、(n、m)に対応する位置に位置する画素を初期画素としてCPU61は判断する。そして、CPU61は初期画素の位置する画素の階調値と、そのアドレス位置とを読み出し、重心を演算する。以下、説明を簡単にするため、(n、m)=(0,0)として説明する。CPU61が演算する重心は具体的には、以下の演算式を用いる。
【0114】
(式1)
重心={{(量子化中画素群の重心のx座標)×(量子化中画素群の階調値の合計)}
+{(選択した未処理画素のx座標)×(選択した未処理画素の階調値)}
/(量子化中画素群の階調値の合計+選択した未処理画素の階調値)
重心={{(量子化中画素群の重心のy座標)×(量子化中画素群の階調値の合計)}
+{(選択した未処理画素のy座標)×(選択した未処理画素の階調値)}
/(量子化中画素群の階調値の合計+選択した未処理画素の階調値)
(x重心、y重心は重心位置の座標)
この演算式はROM65に格納され、ステップS41にてCPU61が読み出して演算を行うことになる。ちなみに、初期画素の場合は、量子化中画素群の重心のx、y座標、及び量子化中画素群の重心の階調値はともに0として演算される。(式1)にこれらの値と、読み出した初期画素の位置と階調値とを代入して演算すると、重心位置は(x重心、y重心)は(0,0)となる。なお、CPU61は、演算した重心位置と、初期画素の階調値とを上述した、ワーキングメモリ領域672に格納する(図20(c)参照)。その後の演算処理をスムーズに行うためである。
【0115】
また、CPU61は、選択した初期画素に対応する入力バッファ671に“−1”を格納する。後述する未処理画素の選択で、すでに選択された画素の選択を回避するためである。さらに、CPU61は、ステップS42で初期画素が低濃度と判断された場合は、その時点で初期画素に対応する出力バッファ273に“0”を格納し、ステップS42で初期画素が高濃度と判断された場合は、その時点で初期画素に対応する出力バッファ273に“255”を格納する。初期画素に(黒又は白)ドットが打たれなかった場合に、正しい出力を行うためである。この画素にドットをうつ処理を行うためである。なお、入力バッファ671に“−1”を格納させているが、これに拘泥せず、他の負の値でもよい。さらに入力バッファ671と同様の構成のメモリ領域を用意して、選択した画素の対応する位置にフラグを立てて、選択画素が処理済みか否かを判別するようにしてもよい。
【0116】
次いで、CPU61は、決定した画素が低濃度か否か判断する(ステップS42)。具体的には、ROM65に格納された閾値“127”を読出し、RAM67の入力バッファ671から読み出した初期画素の階調値と比較し、閾値よりも低い場合はステップS43に移行し、閾値と同じか大きいときはステップS53に移行する。ここで、低濃度と判断される場合(ステップS42で“YES”の場合)とは、選択した画素が黒成分が少なく白成分が多い場合である。その後の処理で黒ドットを形成させる処理に移行させるためである。一方、低濃度ではないと判断された場合(ステップS42で“NO”の場合)は、選択した画素が黒成分が多く白成分が少ない場合で、その後の処理で白ドットを形成させる処理(ステップS53)に移行することになる。
【0117】
ステップ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として初期画素とともに組み込まれることになる。
【0118】
ここで、重心位置は上述の(式1)で示されているように必ずしも整数値になるとは限らない。重心に最も近い画素を選択する場合のほかに、重心が位置する画素に最も近い画素を選択する場合でもよい。このようにすることで、重心位置は整数値として演算でき、CPU61の処理する計算量が減ることが期待できる。ただし、演算した重心位置が小数点を含む場合があるので、演算した重心位置のx、y座標のそれぞれに0.5を足して、その位置に重心が位置する画素として、画素を選択することも可能である。
【0119】
なお、選択した画素は、図20(c)や図21(a)に示すように選択した画素に対応するRAM67の出力バッファ673に“0”がCPU21によって格納されることになる。
【0120】
次いで、CPU61は、閾値制御処理を行う(ステップS44)。後述する閾値が一定の場合では、入力画像データの階調値が低い領域では出力ドットの密度は低くなり、また階調値が中間値(例えば“120”など)の領域では出力ドットの密度が高くなり、印刷出力全体としてのドットの分布密度が一定とならない。印刷出力のうち、ある領域では多くドットが打たれ、ある領域ではドットが少ないため全体として快適な印刷出力を得ることができない。そこで、閾値を変更することで、量子化済み画素群56aの大きさ、すなわち量子化済み画素群56aを構成する画素数が一定となり、一定密度のドット分布を得ることができる。上述の例では、(0、0)の画素と(1,0)の画素の2つの画素のみしか選択されていないので、閾値の変更は行われず、CPU61は、次の処理に移行する。閾値変更する場合の処理は後述する。
【0121】
次いで、CPU61は、濃度の合計が閾値に達したか否か判断する(ステップS45)。すなわち、選択した未処理画素の階調値を含めた濃度の合計(階調値の合計)が閾値“255”に達したか否か判断される。具体的には、CPU61は、RAM67のワーキングメモリ672に書き込んだ画素の階調値と、ステップS43で選択した画素の入力バッファ671に格納された階調値とを読出し、その合計を演算して、ROM65に格納された閾値(ここでは“255”の値)とを比較する。例えば図20(c)の例では、ワーキングメモリ672には階調値“50”、アドレス(1,0)格納されている階調値は“50”であるので、その合計は“100”となる。よって合計値は閾値に達しないことになる。
【0122】
階調値の合計が閾値を超えない場合(ステップ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には初期画素の重心位置が格納されていたが、ここではその位置に上書きして格納する。その格納後の例を図21(a)に示す。
【0123】
次いで、CPU61は、階調値の演算を行う(ステップS47)。ここでの演算は、RAM67のワーキングメモリ672に書き込まれた階調値とステップS43で選択した画素の階調値との合計を演算する。演算した結果は、再びRAM67のワーキングメモリ672に上書きして書き込む。この例を図21(b)に示す。
【0124】
ここで、CPU61は、未処理画素の選択(ステップS43)で選択した画素に対応する入力バッファ671に“−1”を格納する。再度未処理画素の選択で、当該画素を選択されないようにするためである。この階調値の演算でこのような処理を行うのは、入力バッファ671に格納された階調値はその合計値としてワーキングメモリ672に格納され以後の処理で必要とされないからである。
【0125】
次いで、CPU61は、ステップS46で演算した階調値の合計が、閾値と等しいか否か判断する(ステップS48)。具体的には、ステップS47でRAM67のワーキングメモリ672に格納された階調値と、ROM65に格納された閾値とをCPU61が読み出して、両者を比較することで実行される。図21(b)の場合は、まだ閾値に達していない(ステップS48で“NO”の場合)ので、第1の実施例と同様に未処理画素を量子化中画素群56cに次々を組み込み、その合計値が閾値(ここでは“255”)に達するまで処理が繰り返されることになる。すなわち、これまで量子化中画素群56cに組み込まれた画素の階調値の合計は、RAM67のワーキングメモリ672に格納されているので、その値と閾値とを比較することで、閾値に達するまで量子化中画素群56cを構成していくことができる。上述したようにCPU21は、選択した未処理画素に対応する出力バッファ673の位置に“0”を格納する。
【0126】
そして、閾値と等しいとCPU61が判断した場合(ステップS48で“YES”の場合)、処理はステップS49に移行し、すでに演算した重心位置に位置する画素に黒ドットを形成する処理を行う。具体的には、RAM67の出力バッファ673の入力画素の位置に対応するアドレス位置に“255”を書き込む。出力バッファの構造も入力バッファと同様に2次元構造で、入力画素の位置に対応するアドレス空間を有している。重心が位置するアドレスに“255”を書き込むことで、その後、実際にその位置に対応する位置にドットをうつことができる。
【0127】
次いで、CPU61は、未処理画素があるか否か判断する(ステップS51)。すなわち、上述した処理をRAM67の入力バッファ671に書き込まれたすべての階調値に対して行ったか否かで判断し、未処理画素があれば(“YES”の場合)再び処理はステップS41に移行し、上述の処理を繰り返し、すべての画素に対して処理が終了すれば(“NO”)、CPU61はステップS52に移行し、処理が終了することになる(ステップS52)。
【0128】
一方、ステップS45で濃度の合計が閾値を超える場合(“NO”の場合)、処理はステップS55に移行し、閾値超えた場合の重心演算処理を行う(ステップS55)。これは、図21(c)に示すように、最終的に選択された画素が(1、2)に位置する画素であるとき、すなわちステップS43で選択した画素がこの画素であるとき、量子化中画素群の階調値の合計を演算するとすると“265”になり、閾値“255”を超えることになる。したがって、このような場合はステップS45で“YES”が選択されてステップS55に移行することになる。図23は、閾値を超えた場合の重心演算処理の動作を示す。
【0129】
まず、CPU61は、閾値から濃度の合計、すなわち閾値からこれまでステップS46で演算した階調値の合計値を引く演算を行う(ステップS550)。例えば図5(b)に示す例では、閾値は“255”、ステップS46でこれまで演算した階調値の合計は“200”であるので、255−200=55の値を演算する。上述したようにこれまで選択した画素の階調値の合計は、RAM67のワーキングメモリ672に格納され、閾値はROM65に格納されているのでCPU61がこれらを読み出して演算することができる。
【0130】
そして、CPU61は、この“55”の値を画素(1、2)の階調値として重心の演算を行う(ステップS551)。重心の演算は具体的には、以下の演算式を用いる。
【0131】
(式2)
重心={{(量子化中画素群の重心のx座標)×(量子化中画素群の階調値の合計)}
+{(選択した未処理画素のx座標)×(ステップS550の演算値)}/{{(量子化中画素群の階調値の合計)}+ステップS550の演算値}
重心={{(量子化中画素群の重心のy座標)×(量子化中画素群の階調値の合計)}
+{(選択した未処理画素のy座標)×(ステップS550の演算値)}/{{(量子化中画素群の階調値の合計)}+ステップS550の演算値}
(x重心、y重心は重心位置の座標)
(式1)との違いは、選択した未処理画素の階調値をそのまま用いるのではなく、量子化画素群56cの合計が閾値と同じになるような階調値を用いる点が異なる。この演算式は、(式1)の場合と同様に予めROM65に格納されており、CPU61が本ステップを実行する際にROM65から読み出すことで実行される。ここでは、最終的にステップS43で選択した画素の階調値は、これまで演算した階調値の合計との和をとることで閾値と等しくなるように演算して、それをもとに重心位置を求めることになる。そしてCPU61は、演算した重心位置を再びRAM67のワーキングメモリ672に値を書き込む(図22(a)のワーキングメモリ672参照)。また、CPU61は、最終的に選択した画素の元の階調値からステップS550で演算した演算結果を引いた値を演算して、その値を再びその選択した画素の入力バッファに書き込む(ステップS50)。これにより、当該画素の階調値が、戻しデータとして格納される。図22(a)に示す例では、ステップS550で演算した“55”を最終的に選択した(1、2)の画素の階調値“65”から引いて“10”の値を求め、これをRAM67の入力バッファ671のアドレス(1、2)に再び書き込む(図22(a)の入力バッファ671参照)。そして、この画素は量子化済み画素群56aに組み込まれず、初期走査において量子化中画素群に組み入れられ重心位置の演算に利用されることになる。上述したように、戻しデータを量子化済み画素群56a以外の画素に戻すのではなく、戻しデータが発生した画素に再び格納させることで、入力階調値に忠実なドット分布を形成することができる。そして、CPU61は、式2で求めた重心位置に黒ドットを形成する処理を行う。これは上述したように出力バッファの入力画素位置に対応するアドレスに“255”を書き込むことで処理が行われる。その後、処理はステップS51へ移行し、上述した処理が繰り返されることになる。ちなみに、CPU61は、入力バッファ671の対象画素の階調値を“0”にすることで量子化画素群56aを構成している(図22(a)の入力バッファ671参照)。そして、重心位置の存在する画素に対応する出力バッファ673に“255”を格納させる。これによりCPU61は、その後の処理で重心位置の存在する画素にドットをうつことができる。その例を図22(a)に示す。
【0132】
一方、ステップS42で、決定した画素が低濃度でない場合(“NO”の場合)、処理は白濃度処理へと移行する(ステップS53)。この処理の詳細を図22に示す。本処理は、画素の階調値が白成分よりも黒成分の方が多いため、白ドットを生成するための処理である。なお、入力画素のデータは図6に示すデータが入力されるものとして以下説明する。ここでは、初期画素は、図6(a)の(n、m)に位置する画素であるものとし、図6(a)に示す階調値がそれぞれRAM67の入力バッファ671に格納されているものとする(図25(a)参照)。黒濃度の処理と同様に位置座標も入力バッファのアドレスに対応しているものとする。なお、白濃度前段の処理であるステップS41により初期画素は(n、m)で、その重心位置は式1により(n、m)が演算され、その位置座標がRAM67のワーキングメモリ672に既に格納され、その階調値“205”もメモリ672に格納されているとする。また、初期画素の位置に対応する入力バッファ671も同様に“−1”が格納される。
【0133】
まず、白濃度処理に移行すると、CPU61は、未処理画素の選択を行う(ステップS530)。ここでの未処理画素の選択も上述したステップS43と同様に重心を利用して選択する。ドット間距離を均一に保つためである。初期画素は、(n、m)であるので、重心を利用すると最も近い画素は(n+1、m)と(n、m+1)の2つの画素がある。CPU61は、ステップS43と同様にランダムに選択する。ドットの周期パターンの発生を抑えるためである。ここでは、(n+1、m)の画素を選択するとする。上述したように重心利用する場合に重心位置そのものを利用する以外にも、重心が位置する画素に最も近い画素を選択する場合でもよい。
【0134】
次いで、CPU61は、入力階調値の最大値から、初期画素も含めステップS530で選択した未処理画素の階調値を減算する(ステップS531)。図6(a)に示す例では、(n、m)に位置する初期画素の階調値は、“205”なので、入力階調値の最大値である“255”から減算すると、“50”となる。また、ステップS530で選択した未処理画素は(n+1、m)であるとすると、その階調値“205”を最大値“255”から減算すると“50”を得る。この入力画素の階調値の最大値は、ROM65に格納されており、また、選択した画素の階調値は上述したようにRAM67の入力バッファ671に格納されているので、CPU61がこれらの値を読み出すことで、演算することができる。演算した結果はCPU61の制御によりRAM67のワーキングメモリ領域672に格納される(図25(b)参照)。
【0135】
なお、図18に示す処理のうちステップ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を境に異なる処理を行うようにしている。
【0136】
次いで、CPU61は、黒ドットの生成を行う(ステップS532)。これは、ステップS530で選択された画素が黒成分が多く白成分が少ないためであり、最終的に印刷エンジン70では、入力画像データに対して黒成分が多い画素にはドットをうつ処理を行うためだからである。そして、後述する白ドット生成処理(ステップS537)で、重心位置にある画素に対してドットをうたないようにして印刷を行うのである。CPU61は、ステップS530で選択した画素に対して、上述したRAM67の出力バッファ673の対応するアドレス位置に入力階調値の最大値(図6(a)の場合は“255”)を格納することで処理が行われる(図25(b)及び(c)参照)。
【0137】
次いで、CPU61は、閾値制御処理を行う(ステップS533)。上述したステップS44と同様に選択した未処理画素(ステップS530)を含めた入力階調値が低い領域などで、閾値を変更することで量子化済み画素群56aの大きさを一定として生成される白ドットが印刷出力全体として一定密度で分布することになる。上述した例では、この段階ではまだ(n、m)と(n+1、m)に位置する画素しか選択されていないので、閾値の変更は行われない。閾値制御処理の詳細は後述する。
【0138】
次いで、CPU61は、階調値の合計が閾値を越えるか否か判断する(ステップS534)。ここでは、すでにワーキングメモリ672にこれまで選択した画素の階調値の合計が格納されているので、その値をメモリ672からCPU61が読み出し、閾値はROM65に格納されているので、この読み出した閾値と比較して判断する。図25(b)の例では、メモリ672に“50”が格納されているので、最大値“255”と比較すると、まだ閾値に達していないと判断される。
【0139】
超えない場合(ステップS534で“NO”の場合)は、処理はステップS535に移行して、CPU61は、未処理画素を含めた重心位置を演算する。重心の演算は、上述した式(1)と同様である。演算した重心位置は、ワーキングメモリ672にCPU61の制御により格納される。初期画素(n、m)と、選択画素(n+1、m)との重心位置を演算すると、式1により(n+0.5、m)となる。これを黒処理と同様にワーキングメモリ672にCPU61の制御により格納する。図26(a)に例を示す。
【0140】
次いで、CPU61は、階調値の合計を演算する(ステップS536)。選択した画素の入力バッファ671に書き込まれた階調値とワーキングメモリ672に書き込まれた階調値の合計を演算する。演算した結果は、ワーキングメモリ672にCPU61の制御により格納される。また、CPU61は、上述した黒成分処理の場合と同様に、選択した未処理画素の対応する入力バッファ671に“−1”を格納する。以後の処理で当該画素が未処理画素として選択されないようにするためである(図26(a)参照)。
【0141】
次いで、CPU61は、演算した階調値の合計が閾値と等しいか否か判断し(ステップS537)、等しいを判断すると(“YES”の場合)、ステップS535で演算した重心位置に位置する画素に白ドットを生成する処理を行う(ステップS538)。具体的には、CPU61は、重心位置に位置する出力バッファの所定のアドレスに“0”を格納する。上述したようにこの時点で、出力バッファには、量子化済み画素群のうち重心位置にある画素以外は、入力階調値の最大値(“255”)が格納されており、重心位置にある画素にはドットをうたないことを示す“0”を格納することになる。これらは、量子化中画素群56cの階調値から最大値を引いた値の合計が閾値に達するまで処理が繰り返されることになる(ステップS537で“NO”の場合)。
【0142】
次いで、未処理画素があるか否か判断され(ステップS539)、未処理画素があればステップS41に再び移行して(“YES”の場合)、未処理画素がなくなるまで処理が繰り返される。未処理画素がなくなると(“NO”の場合)、処理が終了(ステップS539)することになる。
【0143】
一方、ステップS534で階調値の合計が閾値を超える場合(“YES”の場合)、処理はステップS541に移行し、CPU61は、閾値を超えた場合の重心演算処理を行う。ここでの重心演算処理は、図23に示すように、上述したステップS55での演算処理と同様である。すなわち、CPU61は、ROM65から閾値(ここでは“255”)を読出し、ステップS534で演算してRAM67のワーキングメモリ672に格納された階調値の合計から引いて(ステップS550)、その値をもとに式2に示す重心の演算を行う(ステップS551)。図26に示す例では、最終的にステップS550で(n+1、m+2)が選択されると、これまで選択した画素の階調値の合計は、メモリ672に格納された“200”、選択画素の階調値は“190”で最大値“255”から引いた値が“65”、であるから階調値の合計は“265”となる。この値は閾値“255”を超えているので、ステップS534で“YES”が選択され、ステップS541に移行する。そして、(閾値)―(濃度の合計)、すなわち255−200で“55”を得る。この値を選択画素(n+1、m+2)の階調値としてステップS551で重心位置を演算することになる。
【0144】
演算した重心位置は再びRAM67のワーキングメモリ領域672に格納させ(図26(c)のワーキングメモリ672参照)、戻しデータを演算してその値をRAM67の当該画素の入力バッファ671に上書きして格納する(図26(c)のワーキングメモリ672参照)。量子化済み画素群に組み込まれないようにするためである。これにより入力階調値に忠実な白ドットを形成することができる。そして、演算した重心位置に白ドットを形成すべく、出力バッファの対応位置に“0”を格納する(ステップS542、図26(c)の出力バッファ参照)。その後処理は再びステップS539に移行し、上述の処理が繰り返されることになる。
【0145】
次に、ステップS44、及びステップS533の閾値制御処理について図27のフローチャートを参照して説明する。
【0146】
上述したように、初期画素や未処理画素を含め選択した画素(ステップS43、ステップS530)の入力階調値が低い値や中間階調値が連続すると、量子化済み画素群56aの大きさは一定とならず、生成される黒ドットや白ドットの密度が一定とならない。かかる場合に、印刷出力のドット分布が一定とならずにある領域ではドットが目立ち、ある領域ではドットが少なく、快適な印刷出力を得ることができない。そこで、量子化中画素群45cの画素数により閾値を変更して一定の大きさの量子化済み画素群56aを構成し、ドット密度を一定にさせるようにする。
【0147】
図27に示すように、閾値制御処理に移行すると(ステップS44、ステップS533)、閾値を変更する(ステップS441)処理を行う。ここでは、毎回選択した未処理画素を含む画素数と、量子化中画素群56cの階調値の合計とから、ステップS45、S534で使用する閾値を変更する。そして、この変更した閾値を用いてステップS45やステップS534で階調値の合計が閾値を超えるか否かを判断するのである。具体的には、RAM67のワーキングメモリに格納された量子化中画素群56cの画素数と、階調値の合計とから変更閾値を演算により求めることにする。この演算式は所定の関数により表現されており、CPU61がROM65に格納されたこの関数を読出し、ワーキングメモリ672の画素数と階調値の合計をこの関数に入力させることにより、閾値を求めることができる。また、変更閾値を最初からROM65に格納させておきこの閾値変更の処理(ステップS441)でCPU61が読み出して処理を行うようにしてもよい。
【0148】
図28に示す例で具体的に説明する。入力画像の階調値が図11(a)に示すように入力された場合、RAM67の入力バッファ671には図28(a)に示すように格納される。そして、ステップS41で初期画素として(n、m)に位置する画素が選択されて、その重心を演算すると(n、m)となるため、その重心位置と階調値が図28(b)に示すワーキングメモリ672にCPU61によって格納される。さらに、ワーキングメモリ672には選択した画素の個数を格納する領域672aを設けている。このステップS41で初期画素(n、m)のみしか選択されていないため、この領域672aには“1”がCPU61によって格納される(図28(b)参照)。
【0149】
次いで、ステップS43で未処理画素(n+1、m)が選択されると、ワーキングメモリ672の個数格納領域672aには、初期画素を含めた選択画素の個数の合計である“2”が格納される。そして、ステップS46、S47で無処理画素を含めた重心位置及び階調値の合計が演算されて、ワーキングメモリ672は図28(c)に示すように値が格納されることになる。
【0150】
そして、ステップS43からステップS48を繰り返し、4つの画素((n、m)、(n+1、m)、(n+1、m)、及び(n+1、m+1))が量子化中画素群56cに組み込まれるとする。そして、再びステップS43で未処理画素(n+1、m+2)が選択されると、個数格納領域672aにはこれまで、5個の画素を選択したため“5”が格納される(図29(a)参照)。ここで、ステップS441のROM64に記憶された所定の画素数を4個とすると、量子化中画素群56cの画素数(5個)が所定の画素数(4個)を超えたため、閾値変更処理(ステップS441)により、閾値変更をCPU61が演算することになる。
【0151】
ステップS442でCPU61は、量子化中画素数“5”と、これまでの階調値の合計値“40”とから、ROM65に記憶された関数を読出し、変更された閾値を演算する。その結果、例えば閾値を“255”から“50”に変更する。そして、これまでの階調値の合計“40”が閾値“50”を超えないので、ステップS46、S47に移行し、最終的に選択された画素(n+1、m+2)を含めた重心位置と階調値の合計を演算する。演算結果は、上述したようにワーキングメモリ672に格納され、ステップS48で階調値の合計“50”が閾値“50”と等しいため、ステップS49以降への移行して、図29(b)に示すように出力バッファに“255”を格納させて、この画素にドットを生成させるようにして一連の処理が終了することになる。なお、白濃度処理S53における閾値制御処理S573も同様の処理を行う。
【0152】
この例では、閾値を低くした場合を説明したが、入力階調値が中間階調値で連続する場合は、閾値が高くなるように演算される。
【0153】
このように、閾値を量子化画素群56cの個数と階調値で変化させているため、量子化済み画素群56aの大きさは、ほぼ一定であり、ドットが一定の密度で生成されることになる。しかも、重心を利用してドットのON/OFFを行うようにしているので、入力画像の階調値の分布に忠実なドットを分布を生成することができる。
【0154】
上述した一連の処理が終了するとCPU61は、RAM67の出力バッファ673に書き込まれた“255”(黒ドット生成する場合)や“0”(白ドット生成する場合)を読出し、印刷エンジン70に当該データを出力させて、所定の印刷出力を得ることができる。
【0155】
以上説明してきたように本発明によれば、誤差拡散法で問題となる、ワームや、ドット生成の遅延、及び領域外のデータを歪み、を発生させることなく高画質の出力ドットを得ることができる。さらに、本発明によれば、画素の画像データを量子化する際に、画像のデータ分布に対応するようにすることが可能となる。さらに、本発明によれば、ドットの分散性を向上させて視覚的に快適な印刷出力を得ることができる。
【0156】
[第3の実施例]
次に本発明の第3の実施例について、図30乃至45を参照しながら説明する。第3の実施例は、画素選択のための基準点をもとにして未処理画素を選択して、所定の大きさのセルを構成してその重心位置にドットを生成させるようにしたものである。第2の実施例では、画素選択の基準点を重心位置にして毎回画素選択時に更新するようにしていたが、毎回更新するのではなく、ある一定の更新パターンにより更新されるようにしてセルを構成するようにする。これにより、毎回重心位置を計算することがなく、他の処理を含めた全体の処理速度を上げることができるととも、未処理画素選択の基準点を固定にしたときに比べて、最終的に生成されるセルの形状がより円状に近づき視覚的に快適な出力ドットを得ることができる。
【0157】
まず、その概要を図30乃至34を参照して説明する。このうち図30乃至図32が、画素選択のための基準点を量子化中画素群の中心位置として毎回未処理画素を選択するときに更新される例を示し、図33乃至図34が基準点を中心位置として1回おきに更新される例を示す。
【0158】
ここで、中心位置は、階調値を利用した重心位置ではなく、その座標位置を利用した中心位置であって、その位置座標を(x、y)とすると以下の式により演算される(以下の式でNは量子化中画素群の画素数)。
【0159】
(式3)
x = Σi x i / N
y = Σi y i / N
入力画像データとして、各画素、図30(a)に示す階調値が入力される場合で説明する。図30(a)は、説明を簡単にするために縦3画素、横4画素分の画像データが入力されている例であって、1フレーム分の画像データが入力される場合であってもよい。
【0160】
図30(a)の入力画像データが入力されると、まず初期画素を選択するが第1の実施例や第2の実施例と同様に未処理画素のうち最も上の最も左側にある画素を選択する。最終的に生成される量子化済み画素群(セル)が1画像中斜め方向に傾いて配置される確率が高くなり、ドットが斜め方向に打たれ知覚されにくくするためである。図30(a)の例では、(n、m)の位置の画素を初期画素として選択する。
【0161】
そして、初期画素を量子化中画素群56cに組み入れ、その中心位置を(式3)を用いて演算すると図30(b)に示す位置に中心位置56fが位置することになる。次に、その中心位置から最も近い位置に位置する未処理画素56eを選択することになるが、かかる画素が複数ある場合には、第1の実施例等と同様にランダムに選択する。第2の実施例で説明したように、周期パターンの発生(図4参照)を抑えるためである。図30(b)に示す例では、中心位置56fに最も近い位置は(n+1、m)と(n、m+1)の2つ存在するが、ここでは(n+1、m)を選択することにする。
【0162】
次に、図30(c)に示すように選択した未処理画素56eを量子化中画素群56cに組み入れ、量子化中画素群56cの画素選択のための基準点、すなわち中心位置を演算すると図30(c)の位置56fに位置することになる。量子化中画素群56cの階調値の合計は、この時点で“100”であるのでさらに未処理画素56eを選択することになる。本実施例でも第1の実施例等と同様に閾値を“255”と設定し、この値になるまで未処理画素56eを選択することにする。
【0163】
次いで、この基準点(中心位置)56fから最も近い画素を選択することになるが、図30(c)に示す例では、2つの画素(n、m+1)、(n+1、m+1)が存在することになるが、ランダムに選択して(n、m+1)の画素を未処理画素56eとして選択することにする。
【0164】
そして、図31(a)に示すように選択した未処理画素56eを量子化中画素群56cに組み入れ、その中心位置を(式3)を用いて演算すると、位置56fに位置することになる。この時点での量子化中画素群56cの階調値の合計は“165”となり、閾値に達しないのでさらに未処理画素56eを選択することになる。中心位置56fから最も近い距離にある画素は、(n+1、m+1)に位置する画素であるので、この画素を未処理画素56eとして選択する。
【0165】
次いで、選択した未処理画素56eを量子化中画素群56cに組み入れ、その中心位置56fを(式3)を用いて演算すると、図31(b)に示す位置にすることになる。この時点での量子化中画素群56cの階調値の合計は“215”で、閾値に達しない。よって、未処理画素56eを選択する。中心位置56fから最も近い位置にある未処理画素は、(n、m+2)、(n+1、m+2)、(n+2、m)、(n+2、m+1)の4つの画素があるがランダムに選択して、ここでは(n、m+2)に位置する画素を選択することにする。
【0166】
そして、選択した未処理画素56eを量子化中画素群56cに組み入れることになるが、その階調値の合計は“265”となり、閾値を超えてしまう。この場合も第1実施例等と同様に、閾値に達する分の階調値を量子化中画素群56cに組み入れ、この未処理画素56eに残りの階調値を戻して以後当該画素が未処理画素として選択されるようにする。第2の実施例等と同様に、入力階調値に忠実なドットを生成させるためである。ここでは、(n、m+2)に位置する画素に対して“10”を戻しデータとして与えることになる(図31(c)参照)。
【0167】
次いで、ここまで構成した量子化中画素群56cは、その階調値の合計が閾値に達したので、量子化済み画素群56aとしてその重心位置にドットを生成させる処理を行う。重心位置の演算は、第2の実施例の(式1)と同様に演算することになり、図32(a)の重心位置56dを得る。
【0168】
そして、重心位置56dに位置する画素にドットを生成させると、図32(b)に示す位置に生成されることになる。第1の実施例や第2の実施例と同様に、毎回重心位置を計算すると、(式1)や(式2)に示すよう処理演算が多くなるが、画素選択のための基準点を中心位置として演算し、最後に重心を演算することで、演算量を減らすことができるとともに、量子化済み画素群が円状に成長してドット間距離を保ち視覚的に快適なドット出力を得ることができる。
【0169】
さらに、画素選択のための基準点を毎回更新するのではなく、1回おきに更新したり、2回おきに更新したり、予め回数を決めてその回数のときに更新するようにしてもよい。1回おきに更新する例を図33乃至図34を参照してその概要を説明する。
【0170】
また、重心位置そのものを演算せずに、画素選択に用いた中心位置にある画素にドットを生成させるようにしてもよい。例えば図32(a)に示す例では、図32(c)の位置にドットが生成されることになる。この場合、中心位置が複数の画素の間に位置することも考えられるが、かかる場合には、例えばランダムにいずれか1つの画素を選択するようにしてもよいし、所定のテーブルを用いて複数の画素からいずれか1つの画素を選択するようにしてもよい。
【0171】
次に、1回おきに基準点(この例では中心位置)を更新する場合の概要を、図33乃至図34を参照して説明する。図30等のときと同様に入力画像データが図33(a)のように入力された場合で説明することにする。図30(b)と同様に、初期画素を選択してその中心位置56fを演算すると図33(b)に示す位置に位置する。そして、未処理画素56eを基準点(中心位置56f)から最も近い画素をランダムに選択すると(n+1、m)に位置する画素となる。
【0172】
次いで、選択した未処理画素56eを量子化中画素群56cに組み入れるが、次に選択する未処理画素56eは、組み入れた量子化中画素群56cから演算した中心位置56fに基づいて選択するのではなく、組み入れる前の中心位置56fに基づいて選択する。この時点で基準点を更新しないようにする。図33(c)に示すように中心位置56fから最も近い画素は(n、m+1)となりこの画素を未処理画素56eとして選択する。
【0173】
次いで、選択した未処理画素56eを組み入れた量子化中画素群56cは図34(a)のようになる。そして、1回おきに基準点を更新するようにするので、この時点で構成した量子化中画素群56cの中心位置56fを演算すると図34(a)に示す位置に中心位置56fが移動することになる。
【0174】
次いで、この更新した中心位置を基準にして、この位置から最も近い未処理画素56eを選択してその画素を量子化中画素分56cに組み入れると図34(b)に示すようになる。そして、基準点を更新せず、1つ前に演算した中心位置56fから最も近い画素を未処理画素56eとして選択((n、m+2)の位置の画素を選択)して、量子化中画素群56cを構成する。
【0175】
図30の例と同様に、この選択した画素を組み入れた階調値の合計は閾値を超えるので、超える分を戻しデータとして、選択した画素に戻す。そして、ドット生成のための重心位置を演算すると図34(c)の位置56dに位置し、この位置にドットを生成させるようにする。そして、基準点を更新させると、図34(c)の位置に基準点56fが移動することになる。
【0176】
このように毎回、画素選択の基準点を更新するのではなく、1回おきに更新することでさらに演算量を減らすことができ、他の処理を含めた画像処理装置全体の処理速度の向上を図ることができる。さらに、初期画素の選択から4回目の未処理画素選択のときに基準点を更新し、さらにそれから3回目、2回目、・・・と、減算するように、当該回数のときに更新するようにすることでもよい。
【0177】
以上が概要であるが、具体的な処理について図35乃至図40のフローチャート、さらに図41乃至図44のRAM67の例を適宜参照しながら具体的に説明する。なお、この処理の例は1回おきに基準点を更新する場合の例で説明することにする。
【0178】
まず、図35に示すように、本処理が開始(ステップS60)されると、CPU61は、初期画素を決定し、未処理画素選択のための基準点を初期画素の座標に設定する(ステップS61)。図41に示すRAM67の構成で具体的に説明すると、図41(a)に示すように入力バッファ671に入力画像データが入力される。各画素の階調値は図30と同様である。なお、このRAM67の構成は、図20とほぼ同様であるが、ワーキングメモリ672が2つの領域672(b)、672(c)から構成される。これらの領域672(b)、672(c)を含めたRAM67に格納される値は、第2の実施例と同様にCPU61の制御によって行われる。領域672(b)は、後で重心位置を演算できるよう、選択した未処理画素の階調値が入力されるように構成される。また、領域672(c)は、基準点の位置座標と階調値の合計、さらに未処理画素選択の回数値が格納されるように構成される。
【0179】
初期画素は、最も上にある未処理画素で最も左側にある未処理画素が選択されるので、図41(b)の入力バッファ671に示すように(n、m)の画素が選択される。選択された画素は、以後未処理画素として選択されないように、“−1”が格納され、選択した画素の階調値が領域672(b)に格納される。そして、上述の(式3)を用いて基準点を演算すると(0,0)、階調値の合計は“50”、選択回数は初期画素のみなので“1”が、それぞれ領域672(c)に格納される。
【0180】
図35に戻り、次いで、CPU61は、決定した画素が低濃度か否か判定する(ステップS62)。第2の実施例と同様に、黒ドットを形成させる処理と白ドットを形成させる処理とで異なる処理を行わせる必要があるからである。閾値は第2の実施例と同様に“127”とし、ROM65に格納されたこの値と、ステップS61で選択した画素の階調値とを比較することで行なわれる。図41(b)に示す例では、選択した初期画素の階調値は“50”なので、低濃度と判定され(ステップS62で“YES”)、ステップS63に移行する。
【0181】
ステップS63では、CPU61は未処理画素の選択を行う。本実施例では、ステップS61で設定した基準点から最も近い位置にある画素が選択されることになる。図41(b)の例では、基準点である中心位置は(0,0)なので、この位置に最も近い画素は、(n+1、m)と(n、m+1)の2つの画素が存在するが、第2の実施例と同様にいずれか1つをランダムに選択し、(n+1、m)の画素を選択することにする。周期パターン発生を抑えるためである。そして、図41(c)に示すように、CPU61は、選択された画素の入力バッファ671の位置に“−1”、ワーキングメモリ672の領域672(c)にはこれまで選択した画素数である“2”を格納し、さらに出力バッファ673にも対応する画素位置に“0”を格納する。
【0182】
次いで、CPU61は、閾値制御処理を行う(ステップS64)。これも第2の実施例と同様に、入力階調値の低い値が連続した領域では複数の画素を選択してもその階調値の合計が閾値になかなか達することができないので、量子化済み画素群の大きさが一定の大きさに保つことができず、これを防止するために、選択された画素数から閾値を変更する処理を行う。
【0183】
閾値制御処理の動作を示すフローチャートを図37に示す。第2の実施例と同様に、まず、CPU61は量子化中画素群を構成する画素数が所定の画素数に達したか否か判断される(ステップS640)。所定の画素数よりも多いと、閾値変更処理を行い(ステップS641)、そうでないと変更処理は行わず、ステップS65に移行することになる。図41(c)に示す例では、所定の画素数(例えば第2の実施例と同様に“4”)に達しないので閾値変更することはせずに、ステップS65に移行することになる。
【0184】
次いで、図35に戻り、CPU61は濃度の合計が閾値を超えるか否か判断する(ステップS65)。第2の実施例と同様に、CPU61は、ワーキングメモリ672の領域672(c)に格納された階調値の値と、ステップS62で選択した未処理画素の階調値との合計値が、ROM65に格納された閾値“255”と比較することで処理が行われる。この結果、閾値を超えた場合はステップS75に移行し、超えない場合はステップS66に移行する。図41(b)に示す例では、初期画素の階調値が“50”で、選択した未処理画素の階調値は“50”であるので、その合計は“100”となり、閾値である“255”に達しないので、処理はステップS66に移行することになる。
【0185】
ステップS66では、CPU61は、基準点を更新するか否か判断される。ここでは基準点の更新は、本実施例では1回おきに更新していくことしているため、領域672(c)に格納された選択回数が奇数回数のとき(3、5、7・・・)のとき更新するようにする。もちろん、2回おきに更新するなら、選択回数が4、7、10、・・・のときに更新するようにする。回数が固定であれば領域672(c)に格納された値を読み出して、その回数時に更新するようにすればよいことになる。さらに、その更新されるパターンとして、例えば最初の初期画素選択から4回目で更新し、次に更新するのは3回目、・・・と、最初の更新回数から減算させるようにして当該回数時に更新することでもよい。図41(c)の例では、領域672(c)の選択回数は“2”となっているので、奇数回数ではないので更新することはせず(ステップS66で“NO”)、ステップS68に移行することになる。更新時の回数を予めROM65に格納させ、CPU61がこの値と、領域672(c)に格納された回数とを比較することで処理が行われることになる。
【0186】
ステップS68では、CPU61は、階調値の演算処理を行う。ワーキングメモリの領域672(b)に書き込まれた階調値とステップS63で選択した階調値との合計を演算し、その値を領域672(c)の階調値合計を格納する位置に格納する。ここでは、初期画素の階調値と選択した未処理画素の階調値との合計は“100”であるので、その値を格納することになる。
【0187】
次いで、図36に示すように階調値の合計が閾値“255”と等しいか否かCPU61は判断することになる(ステップS69)。図41(c)に示す例では、ワーキングメモリ672の領域672(c)には階調値の合計として、“100”が格納されているので比較すると、閾値に達しておらず、“NO”が選択されステップS63に移行する。
【0188】
そして、再び未処理画素を選択する(ステップS63)。選択は、中心位置を基準に選択し、複数あればランダムに選択する。図42(a)に示すように、(n、m+1)に位置する画素を選択する。選択した画素の階調値は領域672(b)の対応する位置に格納され、出力バッファ673にも“0”が格納される。そして、選択回数“3”が領域672(c)に格納される。また、選択画素の入力バッファ671に“−1”を格納する。
【0189】
次いで、CPU61は、閾値制御処理に移行する(ステップS64)。所定の画素数(例えば第2の実施例と同様に“4”)に達していないので閾値変更することはせずに、ステップS65に移行する。図42(a)の例では、上述した場合と同様に濃度の合計を演算すると“165”で閾値に達しないので、ステップS65で“NO”が選択されステップS66に移行する。
【0190】
次いで、基準点更新するか否かをCPU61が判断する(ステップS66)。図42(a)の例では、領域672(c)に格納された選択回数は“3”で、更新回数である“3”に一致するので、“YES”が選択され基準点の演算を行うことになる。基準点の演算は、CPU61によって、上述した(式3)を用いて演算する。その結果である(0.3,0.3)(小数点四捨五入)は、図42(a)に示すように領域672(c)に格納されることになる。次に未処理画素の選択を行うときは、この基準点を用いて演算することになる。
【0191】
次いで、階調値の合計値“165”を領域672(c)に格納して(ステップS68)、閾値と等しいか否か判定する(ステップS69)。閾値に達しないので、再びステップS63へ移行し、未処理画素の選択等の処理を行う。図42(b)に示すように(n+1、m+1)が未処理画素として選択して、上述した処理を行い、領域672(b)と672(c)に演算した値が格納されることになる。ただし、未処理画素の選択回数は“4”であるので、基準点の更新はせずに図42(a)で使用した中心位置を利用して次の未処理画素を選択することになる。
【0192】
そして、ステップS64からステップS69までの処理を行って、ステップS63に再び移行したとき(階調値の合計は“215”となるので閾値に達しないのでステップS63に移行)、RAM67の格納値が図42(b)の状態になっていると、基準点を用いて未処理画素の選択を行うと、ステップS63で(n、m+2)の位置にある画素が選択されることになる。この場合に濃度の合計値が“265”で、閾値である“255”を超えているのでステップS65で“YES”が選択され、ステップS75に移行することになる。
【0193】
閾値超えた場合の階調値演算処理のフローチャートを図38に示す。これも第2の実施例と同様にまず、閾値から濃度の合計値を減算する処理を行う(ステップS750)。図42(b)に示す例では、領域672(c)に格納された階調値の合計値は“215”、閾値は“255”であるので、“40”を得る。そして、その最後に選択された未処理画素(n、m+2)の階調値を“40”として、この画素を含めた重心の演算を行うことになる(ステップS751)。入力階調値に忠実にドットを生成させるためである。
【0194】
重心の演算は、第2の実施例のときと同様に(式2)を用いて演算することになる。そして、演算した重心に位置する画素に対応する出力バッファ673の位置にドットを生成することを示す“255”を格納させ(図43(c)の出力バッファ673参照)、残った階調値を選択した画素(n、m+1)に戻すことになる(図36のステップS77)。画素(n、m+2)の階調値は、この戻しデータを有するものとして以後未処理画素の選択対象となる。
【0195】
そして、未処理画素があれば(ステップS72で“YES”の場合)、再びステップS61に戻り、上述の処理を繰り返すことになる。未処理画素がなくなると(ステップS72で“NO”)、一連の処理は終了することになる。
【0196】
一方、ステップS69で閾値と階調値の合計値(ワーキングメモリ672の領域672(c)に格納された値)とが等しい場合、ステップS69で“YES”が選択されて、CPU61は、ステップS70に移行し重心位置の演算を行う。重心位置の演算は、ワーキングメモリ672(b)に格納された各階調値等を(式1)に代入することで処理を行う。
【0197】
そして、CPU61は、演算した重心位置に位置する画素に対してドットを生成させることを示す“255”を対応する出力バッファ673に格納する(ステップS71)。その後、未処理画素がなくなるまで上述の処理を繰り返すことになる。
【0198】
一方、図35に戻りステップS62で、決定した画素が低濃度でない場合(“NO”)のとき、処理はステップS80に移行し、白濃度処理を行う。その処理のフローチャートを図39に示す。これも第2の実施例と同様に、画素の階調値が白成分よりも黒成分の方が多く、重心位置に白ドットを生成させるようにする処理を行うためである。ここでも同様に未処理画素選択のための基準点が1回おきに更新される場合で説明する。また、図43(a)の入力バッファ671に示す入力画像データが格納された場合で説明し、ステップS61で初期画素として(n、m)が選択され、基準点として(0,0)、未処理画素選択回数“1”が各領域672(b)、672(c)に格納される。
【0199】
また、ステップS62で低濃度でないと判断されると、領域672(b)の階調値は、入力階調値で“205”ではなく、入力階調値の最大値から入力階調値を減算した値“50”が格納され、さらに対応する出力バッファ673は、“255”が格納されるものとする(図43(b)参照)。
【0200】
図39に戻り、CPU61は、白濃度処理(ステップS80)に移行すると、まず未処理画素の選択を行う(ステップS801)。この選択は、図35の処理と同様に中心位置を基準点として最も近い位置にある画素を選択する。複数あればランダムに選択することになる。図43(c)に示すように(n+1、m)の位置にある画素を未処理画素として選択することにする。選択された画素の入力バッファ671に格納された値は、以後未処理画素として選択されないよう“−1”を格納し、ワーキングメモリ672の領域672(c)には選択回数である“2”を格納する。
【0201】
次いで、CPU61は、ステップS802に移行し、入力階調値の最大値から選択した画素の入力階調値を減算する処理を行う。ステップS801で選択した未処理画素の階調値は“205”、最大値は閾値である“255”よって、減算すると“50”を得る。この値は、領域672(b)の対応する位置に格納されることになる(図43(c)参照)。
【0202】
次いで、CPU61は、ステップS803に移行し、黒ドット生成の処理を行う。第2の実施例と同様にステップS802で選択した未処理画素の対応する出力バッファ673の位置に“255”を格納させることになる(図43(c)参照)。
【0203】
次いで、CPU61は、閾値制御処理に移行する(ステップS804)。図43(c)に示す例では、まだ所定の画素数等に達していないので、閾値の変更を行わないことになる。ちなみに、閾値制御処理の詳細は、前述した図37と同様の処理を行うことになる。第2の実施例と同様に量子化済み画素群の大きさを一定の大きさに保つためである。
【0204】
次いで、CPU61は、基準点更新するか否か判断する(ステップS806)。図35の処理と同様にこれまで選択した未処理画素の回数が、所定回数に達したか否かで判断される。この例も1回おきに更新するようにしているため、選択回数が3、5、7・・・のときに更新することにする。よって、図43(c)に示す時点では、領域672(c)には選択回数“2”が格納されているため、基準点の更新を行わず、“NO”が選択されて、ステップS808に移行する。
【0205】
CPU61は、ステップS808で階調値の演算を行う。上述した例と同様に、ステップS801で選択した未処理画素の階調値と、ワーキングメモリ672の領域672(c)に格納された階調値との合計を演算する。図43(c)に示す例では、選択した未処理画素の階調値は“50”、領域672(c)には初期画素の階調値“50”のみが格納されているので、その合計値は“100”となる。そして、この値が再び領域672(c)に格納されることになる(図43(c)参照)。
【0206】
次いで、CPU61は、ステップS809に移行し、階調値の合計値が閾値である“255”と等しいか否か判断される。等しいと判断される(“YES”の場合)と、処理はステップS810に移行し、等しくない(“NO”の場合)と判断されると、処理は再びステップS801に移行して未処理画素の選択を行うことになる。
【0207】
図43(c)に示す例では、階調値の合計が“100”であるので、“NO”が選択されて、再び未処理画素の選択を行うことになる(ステップS801)。未処理画素の選択は、基準点(領域672(c)に格納された値)から選択すると、図44(a)に示すように(n、m+1)となる。図44(a)に示すように選択回数“3”が領域672(c)に格納される。そして、最大値から選択画素の階調値を減算し、その値“65”(=255−190)をワーキングメモリ672の領域672(b)に格納する(ステップS802)。対応する出力バッファ673に“255”を格納し(ステップS804)、選択した画素を含めた階調値の合計が閾値に達したか否か判断され(ステップS805)、その合計値は、“165”なので“NO”が選択され、ステップS806に移行する。
【0208】
ステップS806では、領域672(c)に“3”が格納されているので、更新するための所定回数“3”に一致するので、“YES”が選択され、未処理画素を含めた基準点の演算を行う(ステップS807)。演算式は、上述の(式3)を用いてこれまで選択した3つの画素位置をもとに演算され、(0.3,0.3)(小数点四捨五入)を得る。この値がワーキングメモリ672の領域672(c)に格納される。未処理画素の選択は、この基準点をもとにステップS801で選択を行うことになる。
【0209】
次いで、CPU61は、階調値の合計値“165”を演算して領域672(c)に格納し(ステップS808)、閾値と等しいか否か判断される(ステップS809)。階調値の合計はまだ閾値である“255”に達していないので再び、未処理画素の選択等の処理を行うことになる。そして、ステップS801からステップS808を経ると図44(b)に示すようにRAM67にそれぞれ値が格納される。この時点で階調値の合計が“215”で閾値に達しないので、再び未処理画素の選択を行う(ステップS801)。
【0210】
次いで、CPU61は、領域672(c)に格納された中心位置を基準点として未処理画素を選択して(n、m+2)の画素を選択する(図44(c)参照)。この場合も、更新されていない基準点をもとに未処理画素を選択することになる。
【0211】
次いで、ステップS802からステップS804まで上述の処理を行い、選択した未処理画素を含めた階調値の合計が閾値を超えるか否か判断される(ステップS805)。階調値の合計は、図44(c)の例では、その合計値が“265”で閾値を超えるので、“YES”が選択されステップS815に移行する。
【0212】
白濃度処理における閾値を超えた場合の階調値演算処理(ステップS815)は、図35等に示す処理と同様の処理が行われる(図38参照)。この処理に移行するとCPU61は、閾値から濃度の合計(領域672(c)に格納された階調値の合計)を減算して、その値“40”(=255−215)を最後に選択した画素の階調値として領域672(b)の対応する位置に格納する(ステップS750、図44(c)参照)。
【0213】
次いで、領域672(b)に格納された値を用いて重心の演算を行う(ステップS751)。重心の演算は、第2の実施例の(式2)を利用して演算することになる。そして、その重心位置にある画素に対応する出力バッファ673に白ドットを生成させるための“0”を格納させ(図44(c)参照)、残った濃度である階調値を最後に選択した画素に戻す(図40のステップS817)。
【0214】
そして、処理は、ステップS812に移行し、未処理画素があれば(“YES”の場合)図35のステップS61に移行し、上述の処理を繰り返し、未処理画素がなくなるまで処理を行うことになる。ステップS812で未処理画素がなくなると(“NO”のとき)、一連の上述した処理が終了し、出力バッファ673に格納された値をもとに、印刷エンジン70でドットを印刷媒体上に生成させ印刷出力を得ることになる。
【0215】
以上説明してきたように、基準点を用いて未処理画素を選択し、その基準点を一定の更新パターン(本実施例では回数)で更新するようにしたので、毎回重心演算するときと比較して、計算量が減り、本処理含めた画像出力装置60全体の処理効率が向上することになる。さらに、最終的に生成される量子化済み画素群の形状が円状に生成され視覚的に快適な出力ドットを得ることが可能となる。
【0216】
また、基準点を重心にした場合、画像に変化のあるエッジの部分では、基準点を更新して量子化済み画素群を構成するので、基準点を固定にして未処理画素を選択して量子化済み画素群を構成する場合と比較して、より大きな階調値を持つ領域に基準点が移動していく特徴がある。すなわち、重心演算の際に各画素の階調値を用いて演算しているため、階調値の大きな画素に重心が移動する特徴がある。これにより、エッジの部分では境界に近づくように基準点が移動し、境界に近い画素にドットが生成される。したがって、エッジの境目の印刷出力が鮮明なものとなり、快適な印刷出力を得ることができるのである。
【0217】
さらに、基準点を重心にした場合に、線が描かれている細線の部分では、より細線に近い位置に移動することになる。これも同様に、細線の部分は階調値が大きく重心がその方向に移動するからである。また、一旦細線上に移動した基準点は、より大きな階調値を有する画素が周辺にない限り、細線から離れずに量子化中画素群を構成していくことになる。このため、より細線に近い画素、又は細線上にドットが生成されることになり、鮮明な線が表現された印刷出力を得ることが可能となる。
【0218】
上述の例では、最後に重心位置を演算してその位置にある画素にドットを生成させるようにしたが、重心位置を演算せずに未処理画素の選択で用いた中心位置にドットを生成させるようにしてもよい。この場合、図36のステップS70や、図38のステップS751、図39のステップS810で重心位置を演算したが、これを中心位置の演算として処理を行い、最終的にその中心位置にある画素に対応する出力バッファ673の位置に“255”或いは“0”を格納させて、ドット生成させることになる。
【0219】
さらに、未処理画素の選択として、図45に示すような未処理画素選択のためのテーブルを予め用意し、これを用いて選択するようにしてもよい。すなわち、図45(a)にあるように “1”を基準点としてこれを基準に未処理画素の選択を行う。具体的には、図45(a)の“1”の座標を(0,0)、“2”の座標を(0,−1)、“3”の座標を(0,1)、“4”を(1,0)、“5”を(−1,0)、“6”を(−1、−1)、“7”を(1,1)、“8”を(1,−1)、“9”を(−1,1)とし、“1”に位置する画素を基準点としてテーブルに示す数字の順番で未処理画素を選択するようにする。この位置座標は、基準点を基準にした相対位置を示すものであり、例えばROM65に記憶されているものとし、適宜CPU61が読み出して位置を決定するようにすればよい。
【0220】
例えば、図33の1回おきに更新する例では、初期画素(n、m)をテーブルの“1”に位置する画素として設定し、次に選択すべき未処理画素をテーブルの“2”に位置する画素、すなわち図33の(n、m+1)の画素を選択する。次はテーブルの“3”の位置にある画素を選択するがこの場合は図33に示すように対応する画素が存在しないので、次の“4”の位置にある画素を選択、すなわち(n+1、m)の画素を選択する。そして、所定回数に達すると、基準点を移動させ、テーブルの“1”にある画素を例えば図33の(n+1、m)として、“2”の位置にある画素を選択するようにすることになる。
【0221】
このようにすることで、毎回(或いは所定回数ごと)中心位置を演算する必要なく、さらに演算量を減らせることができる。また、画素選択の基準点から近い画素を選択する演算をする必要がないので、さらに計算量を減らすことが可能となる。ただし、基準点はこの場合でも所定の更新パターンで更新させる必要がある。量子化済み画素群が円状に成長し、その中心(又は重心)にドットを打てば、ドット間距離が一定に保たれ快適な印刷出力を得ることができるからである。さらに、図45(b)に示すような別のパターンのテーブルでも全く同様の効果を得る。また、これらのテーブルを量子化済み画素群ごとに切換えて使用してもよい。
【0222】
また、上述の実施例では、更新パターンとして回数から判断したが、これ以外にも、量子化中画素群を構成する画素の階調値の合計値が所定値に達したときに基準点を更新するようにしてもよい。例えば、階調値の合計が50、100、150、・・・と一定間隔での当該値で基準点を更新する場合の他、127、190、221、236と、最初は大きな値をとって除々にその間隔を狭めるようにし、その値のときに基準点を更新するようにしても同様の効果を奏する。
【図面の簡単な説明】
【図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】本発明の実施形態の動作を示すフローチャートである。
【図19】本発明の実施形態の動作を示すフローチャートである。
【図20】RAM67の構成と格納される値の例を示す図である。
【図21】RAM67の構成と格納される値の例を示す図である。
【図22】RAM67の構成と格納される値の例を示す図である。
【図23】閾値を超えた場合の重心演算処理の動作を示すフローチャートである。
【図24】白濃度演算処理の動作を示すフローチャートである。
【図25】RAM67の構成と格納される値の例を示す図である。
【図26】RAM67の構成と格納される値の例を示す図である。
【図27】閾値制御処理の動作を示すフローチャートである。
【図28】RAM67の構成と格納される値の例を示す図である。
【図29】RAM67の構成と格納される値の例を示す図である。
【図30】画素選択の基準点からセルを構成する概念を示す図である。
【図31】画素選択の基準点からセルを構成する概念を示す図である。
【図32】画素選択の基準点からセルを構成する概念を示す図である。
【図33】画素選択の基準点からセルを構成する概念を示す図である。
【図34】画素選択の基準点からセルを構成する概念を示す図である。
【図35】本発明の実施形態の動作を示すフローチャートである。
【図36】本発明の実施形態の動作を示すフローチャートである。
【図37】閾値制御処理の動作を示すフローチャートである。
【図38】閾値を超えた場合の階調値演算処理の動作を示すフローチャートである。
【図39】白濃度演算処理を示すフローチャートである。
【図40】白濃度演算処理を示すフローチャートである。
【図41】RAM67の構成と格納される値の例を示す図である。
【図42】RAM67の構成と格納される値の例を示す図である。
【図43】RAM67の構成と格納される値の例を示す図である。
【図44】RAM67の構成と格納される値の例を示す図である。
【図45】未処理画素選択のためのテーブルの一例を示す図である。
【符号の説明】
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 画素数格納領域 672(b) 入力階調値格納領域 672(c) 基準点格納領域 673 出力バッファ

Claims (6)

  1. 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、
    前記画素群生成手段で生成した画素群の重心の位置を決定する画素群重心決定手段と、
    前記画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、
    前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成することを特徴とする画像処理装置。
  2. 請求項1に記載の画像処理装置であって、
    前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素が複数存在するときに選択する画素をランダムに選択することを特徴とする画像処理装置。
  3. 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成手段と、
    前記画素群生成手段で生成した画素群の重心の位置を決定する画素群重心決定手段と、
    前記画素群重心決定手段で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与手段とを備え、
    前記画素群生成手段は、前記画素群重心決定手段で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続け、選択した前記画素群における階調画像データ値の総和が前記閾値を超えたとき、越えた分の前記階調画像データ値を前記画素群生成手段で最後に選択した前記画素に戻すことを特徴とする画像処理装置。
  4. 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成工程と、
    前記画素群生成工程で生成した画素群の重心の位置を決定する画素群重心決定工程と、
    前記画素群重心決定工程で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与工程とを備え、
    前記画素群生成工程は、前記画素群重心決定工程で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成する、ことを特徴とする画像処理方法。
  5. 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、
    前記画素群生成処理で生成した画素群の重心の位置を決定する画素群重心決定処理と、
    前記画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムであって、
    前記画素群生成処理は、前記画素群重心決定処理で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成することを特徴とするプログラム。
  6. 画素ごとの階調画像データ値の総和が閾値以上となるまで画素を選択して画素群を生成する画素群生成処理と、
    前記画素群生成処理で生成した画素群の重心の位置を決定する画素群重心決定処理と、
    前記画素群重心決定処理で決定した重心に位置する画素に量子化画像データを付与する量子化画像データ付与処理とをコンピュータに実行させるためのプログラムが格納された記録媒体であって、
    前記画素群生成処理は、前記画素群重心決定処理で決定した重心から最も近い画素を画素ごとの階調画像データ値の総和が閾値以上となるまで選択し続けることにより前記画素群を生成することを特徴とするプログラムが格納された記録媒体。
JP2003154202A 2003-01-09 2003-05-30 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体 Expired - Fee Related JP4062175B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2003154202A JP4062175B2 (ja) 2003-01-09 2003-05-30 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
DE60325941T DE60325941D1 (de) 2003-01-09 2003-11-18 Vorrichtung, Verfahren, Programm zur Bildverarbeitung sowie entsprechendes Speichermedium
EP03257276A EP1475954B1 (en) 2003-01-09 2003-11-18 Image processing device, method, program and recording medium recording the program
AT03257276T ATE421838T1 (de) 2003-01-09 2003-11-18 Vorrichtung, verfahren, programm zur bildverarbeitung sowie entsprechendes speichermedium
US10/742,633 US7474441B2 (en) 2003-01-09 2003-12-19 Image processing device, method, program and recording medium recording the program
CNB2004100012062A CN1306789C (zh) 2003-01-09 2004-01-02 图像处理设备、方法、程序及记录该程序的记录介质

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003002975 2003-01-09
JP2003104348 2003-04-08
JP2003154202A JP4062175B2 (ja) 2003-01-09 2003-05-30 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2004363639A JP2004363639A (ja) 2004-12-24
JP4062175B2 true JP4062175B2 (ja) 2008-03-19

Family

ID=32931116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003154202A Expired - Fee Related JP4062175B2 (ja) 2003-01-09 2003-05-30 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体

Country Status (6)

Country Link
US (1) US7474441B2 (ja)
EP (1) EP1475954B1 (ja)
JP (1) JP4062175B2 (ja)
CN (1) CN1306789C (ja)
AT (1) ATE421838T1 (ja)
DE (1) DE60325941D1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4706237B2 (ja) * 2004-11-19 2011-06-22 ブラザー工業株式会社 データ処理装置、データ処理方法、およびデータ処理プログラム
US7864159B2 (en) 2005-01-12 2011-01-04 Thinkoptics, Inc. Handheld vision based absolute pointing system
JP4165570B2 (ja) * 2005-05-16 2008-10-15 セイコーエプソン株式会社 画像処理装置,画像処理方法,及び画像処理プログラム
JP4773170B2 (ja) 2005-09-14 2011-09-14 任天堂株式会社 ゲームプログラムおよびゲームシステム
US8913003B2 (en) 2006-07-17 2014-12-16 Thinkoptics, Inc. Free-space multi-dimensional absolute pointer using a projection marker system
CN101123667B (zh) * 2006-08-11 2010-05-12 致伸科技股份有限公司 图像处理方法与装置
JP4702234B2 (ja) * 2006-09-11 2011-06-15 セイコーエプソン株式会社 画像処理装置、画像出力装置、画像処理方法、画像処理プログラム、およびそのプログラムを記録した記録媒体
US9176598B2 (en) 2007-05-08 2015-11-03 Thinkoptics, Inc. Free-space multi-dimensional absolute pointer with improved performance
JP4937868B2 (ja) * 2007-09-14 2012-05-23 株式会社リコー 画像処理装置、画像記録装置、プログラムおよび記録媒体
US10102439B2 (en) * 2008-01-14 2018-10-16 Hewlett-Packard Development Company, L.P. Document verification method and system
JP4560564B2 (ja) * 2008-03-28 2010-10-13 シャープ株式会社 画像処理装置、画像形成装置、画像処理方法、プログラムおよびその記録媒体
TWI509468B (zh) * 2012-04-06 2015-11-21 Pixart Imaging Inc 影像定位方法及使用該方法之互動影像系統
EP2963908B1 (en) * 2014-07-01 2020-10-28 Canon Kabushiki Kaisha Image processing apparatus, image processing method and storage medium
CN105741283A (zh) * 2016-01-28 2016-07-06 青岛易科锐自动化技术有限公司 一种计算机色彩对比定量评价方法
DE112018004156T5 (de) * 2017-11-06 2020-04-30 Hoya Corporation Prozessor für elektronisches endoskop und elektronisches endoskopsystem
US10211848B1 (en) * 2018-03-27 2019-02-19 Synaptics Incorporated Delta sigma modulator systems and methods

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4578713A (en) * 1984-07-20 1986-03-25 The Mead Corporation Multiple mode binary image processing
JP3031590B2 (ja) 1992-08-07 2000-04-10 シャープ株式会社 中間調画像記録装置
JPH07210672A (ja) 1994-01-12 1995-08-11 Canon Inc 二値化方法及び装置
JP3738080B2 (ja) * 1996-05-17 2006-01-25 富士写真フイルム株式会社 リニアイメージセンサの出力信号補正装置
JP3722955B2 (ja) * 1997-07-02 2005-11-30 株式会社リコー 疑似中間調処理方法、装置および記録媒体
JPH11313209A (ja) 1998-04-30 1999-11-09 Toshiba Corp 画像処理装置
JP3798150B2 (ja) * 1998-07-07 2006-07-19 株式会社リコー 画像処理方法及び画像処理装置
CN1115860C (zh) * 1998-09-10 2003-07-23 明碁电脑股份有限公司 灰度图像二值化处理系统及方法

Also Published As

Publication number Publication date
EP1475954A3 (en) 2005-05-11
US7474441B2 (en) 2009-01-06
CN1306789C (zh) 2007-03-21
JP2004363639A (ja) 2004-12-24
CN1518332A (zh) 2004-08-04
US20040174569A1 (en) 2004-09-09
DE60325941D1 (de) 2009-03-12
EP1475954A2 (en) 2004-11-10
EP1475954B1 (en) 2009-01-21
ATE421838T1 (de) 2009-02-15

Similar Documents

Publication Publication Date Title
JP4062175B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP4111451B2 (ja) 閾値マトリクス生成方法および記録媒体
JP3240803B2 (ja) 画像処理装置および画像処理方法
JP2008193266A (ja) 画像処理装置、画像形成装置およびその制御方法
JPH08227147A (ja) 網点作成方法および装置
JP2003204433A (ja) 網点閾値データ作成方法、網点画像作成装置および記録媒体
JP4062176B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP2001298616A (ja) 閾値マトリクス、及びそれを利用した階調再現方法とその装置
JP3896982B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP3928576B2 (ja) 画像処理装置、方法、プログラムおよび該プログラムを記録した記録媒体
JP3951953B2 (ja) 印刷装置、画像処理装置、印刷方法、画像処理方法及びプログラム
JP2020082694A (ja) ディザマトリクスの生成装置、生成方法、当該ディザマトリクスを用いた画像処理装置、画像処理方法、及びプログラム
JP2005117642A (ja) ハーフトーン処理方法、画像処理装置、画像処理方法、及びプログラム
JP2003125219A (ja) 閾値マトリックス、およびそれを利用した階調再現方法とその装置
JP2019029769A (ja) ディザマトリクス作成方法、プログラム、及び、情報処理装置
JP2005341142A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP7051350B2 (ja) 画像処理装置、画像処理方法、およびプログラム
JP4274102B2 (ja) 画像処理装置、画像処理方法、画像処理プログラムおよびそのプログラムを記録した記録媒体
JP2004320374A (ja) 画像処理装置、画像処理方法、印刷装置、印刷方法及びプログラム
JP2005064941A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2003018404A (ja) 閾値マトリックス、およびそれを利用した階調再現方法とその装置
JP3402118B2 (ja) 画像信号処理方法及び画像信号処理装置
JP4337670B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2005136975A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2005039413A (ja) 画像処理装置、画像処理方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070830

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: 20071204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071217

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4062175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110111

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140111

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees