本発明は、多値画像データを高精細かつ高階調に印刷処理するための画像処理装置、画像記録装置(画像形成装置)、プログラムおよび記録媒体に関する。
スキャナやディジタルカメラ等の入力装置で読み取った多値画像データをプリンタやディスプレイ等の出力装置に出力する画像入出力システムが存在する。その際に、入力装置で読み取った多値(例えば8ビット精度ならば256階調)の画像データを出力装置が出力可能な階調数の画像データに変換し、擬似的に連続階調を表現する方法として、擬似中間調処理がある。
中でも出力装置がドットのON/OFFのみの2値しか表現できないときには2値化処理が従来から行われている。この2値化処理の中で解像性と階調性に共に優れたものとして誤差拡散法や平均誤差最小法がある。誤差拡散法と平均誤差最小法(Minimized Average Error:以下MAE)は、誤差の拡散作業をいつ行うかが異なるだけであり、論理的には等価なものである。以下、誤差拡散で説明する。
誤差拡散法による量子化を2値だけでなく、3値以上の階調数にも適用した処理があり、2値化と同様に、階調性と解像性に優れた処理が可能である。
ところで、誤差拡散法では次のような問題がある。一点目は特有のテクスチャ、いわゆるワームが発生するという問題がある。この問題は同一の入力値・閾値・誤差マトリクスや同一の処理方向を用いることによって生じる。上記課題に対して特許文献1では閾値にランダムノイズを加算する技術が開示されている。特許文献2においては視覚的に知覚し難い空間周波数特性のノイズを画像レベルに応じて重畳する技術が開示されている。特許文献3では閾値にディザノイズを加算する技術が開示されている。特許文献4や特許文献5では誤差マトリクスの切り替える技術が開示されている。
二点目はドット生成遅れ問題である。この問題は2値誤差拡散において低濃度領域(黒ドットが疎な領域)の立上がり部における黒ドットの生成および、高濃度領域(白ドットが疎な領域)の立上がり部における白ドットの生成が、大幅に遅延するという問題である。上記課題に対して特許文献6には階調値に応じて2値化のための閾値に異なる値を設定する技術が開示されている。また多値誤差拡散において多値出力切り替わり部近傍におけるドット生成の遅延という問題に対して、特許文献7では多値化のための閾値に異なる値を設定する技術が開示されている。
特開平8−111777号公報
特許第2894117号公報
特開2001−177722号公報
特許第3240803号公報
特開平8−116443号公報
特許第3360391号公報
特開2000−270210号公報
解像性と階調性や割り切り誤差の影響が少ない誤差拡散法であるが、テクスチャの抑制やドット生成遅れを抑制することは難しい。
本発明はかかる問題点に鑑みてなされたものであり、
本発明の目的は、誤差拡散によりテクスチャが発生する問題を解決できる画像処理装置、画像記録装置、プログラムおよび記録媒体を提供することにある。
特に請求項1記載の発明は、注目画素の画素位置を(x,y)とするとき、画素位置(x,y)に応じたN−1個の閾値からなる第一閾値群を設定する手段と、注目画素の階調値と前記第一閾値とを比較してN−1個の閾値からなる第二閾値群を設定することによりテクスチャを目立たなくさせ、良好な画質の出力画像結果を得ることを目的とする。
上記課題を解決するため、本発明にかかる画像処理装置、画像記録装置及びプログラムでは、平均誤差最小法において誤差マトリクスを切り替え、テクスチャを目立たなくさせ良好な画質の出力画像結果を出力するものである。
かかる目的を達成するために、請求項1記載の発明は、多値(M値)画像データを、誤差拡散法または平均誤差最小法を用いてN値(M>N≧2)に量子化し、該N値の夫々に対応したドットを用いて記録を行う画像処理装置であって、注目画素の多値画像データに、周辺の既に量子化済みの画素から重み付け積和された誤差を加えた補正データを出力する手段と、前記注目画素の画素位置を(x,y)とするとき、画素位置(x,y)に応じたN−1個の閾値からなる第一閾値群を設定する手段と、前記注目画素の階調値と前記第一閾値とを比較してN−1個の閾値からなる第二閾値群を設定することを特徴としている。
本発明によれば、目画素の画素位置を(x,y)とするとき、画素位置(x,y)と注目画素の階調値に応じたN−1個の閾値からなる閾値群を選択することでテクスチャの抑制やドット生成遅れを抑制することができる。
請求項1記載の発明では、注目画素の画素位置を(x,y)とするとき、画素位置(x,y)に応じたN−1個の閾値からなる第一閾値群を設定する手段と、注目画素の階調値と前記第一閾値とを比較してN−1個の閾値からなる第二閾値群を設定することによりテクスチャを目立たなくさせ、良好な画質の出力画像結果を得ることができる。
以下、発明の実施の形態について図面により詳細に説明する。
図1は、本発明の実施の形態における画像処理装置のブロック構成を示す図である(特に本発明に特徴的な画像処理を行う画像処理部のブロック構成を示す)。また、図2は、本発明の実施の形態における画像記録装置の構成を示す図である。
図3は、本発明の実施の形態の画像処理装置を用いて構成される画像入出力システムの構成を示す。画像入力装置301はスキャナやディジタルカメラ等の入力デバイスを示し、入力画像について例えば8ビット精度ならば256階調の画像データとして取り込まれる。この多値画像データが本実施形態の画像処理装置302に入力される。
画像処理装置(画像処理部)302では、画像入力装置301から入力された256階調の画像データに対し、この後段の画像出力装置303で出力可能な階調数に変換する処理を行う。この階調数変換処理ではMAEを用いてもよい。画像処理装置302で量子化した画像データが図2に構成を示すような画像記録装置(画像形成装置、画像出力装置)303に送られる。
図2において、画像出力装置303は、フレーム201に横架したガイドレール202,203に移動可能に載設されたキャリッジ204にインクジェット記録ヘッド205(以下、単に「記録ヘッド」と称す)を搭載し、図示しないモータ等の駆動源によってキャリッジをガイドレール方向に移動して走査(主走査)可能とするとともに、ガイド板206にセットされる用紙207を、図示しない駆動源によってドライブギヤ208及びスプロケットギヤ209を介して回動される送りノブ210aを備えたプラテン210にて取込み、プラテン210周面とこれに圧接するプレッシャローラ211とによって搬送し、記録ヘッド205によって用紙207に印字記録する。
記録ヘッド205は、図4に示すブラック(K)、イエロー(Y)、マゼンタ(M)及びシアン(C)の各インクをそれぞれ吐出するための4個のインクジェットヘッド(4K、4Y、4M、4C)や、図5に示すブラック(K)、イエロー(Y)、マゼンタ(M)、シアン(C)、ライトイエロー(LY)、ライトマゼンタ(LM)及びライトシアン(LC)の各インクをそれぞれ吐出するための7個のインクジェットヘッド(5K、5Y、5M、5C、5LY、5LM、5LM)を主走査方向の同一線上に配置して構成している。商品構成によってはインクの数を増減させても何ら構わない。具体的にはハイライト部でイエローのドットは目視し難い特性を持つのでライトイエローを省いてコストダウンを行った構成としても良いし、また、ライトブラックや、シアン・マゼンタ・イエロー・ブラックの各色の濃度を3段・4段に分けた構成にして高画質を実現した記録ヘッドとしてもよい。
上記の各インクジェットヘッドは、例えば圧電素子、気泡発生用ヒータ等のエネルギー発生手段であるアクチュエータを選択的に駆動して、液室内のインクに圧力を与えることによって、この液室に連通するノズルからインク滴を吐出飛翔させて、用紙207に付着させることで画像記録(画像形成)する。画像記録装置303は電子写真を用いて画像記録(画像形成)する場合等でも本発明にかかる処理方法が適用可能である。
また、図3のシステム構成図では、処理に応じてそれぞれの装置を独立したものとして示したが、この限りではなく、画像処理装置302の機能が画像入力装置301中に存在する形態や、画像出力装置303中に存在する形態等もある。
図1は、図3に示す本実施形態の画像処理装置302の構成を示すブロック図である。入力端子101は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす(xは画像の主走査方向のアドレス、yは副走査方向のアドレスを示す)。
次に、この入力データIn(x,y)が加算器102に入力される。加算器102は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)は閾値演算部108と閾値設定部109に入力される。閾値演算部108は図7に示すような閾値マトリクスをメモリに格納しており、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図7に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクスの注目画素位置に対応した閾値を第一閾値I(x,y)として閾値設定部109に出力する。
閾値設定部109は入力データIn(x,y)を閾値として第一閾値I(x,y)を下記のように2値化して第二閾値T(x,y)を決定し、比較判定部103へ出力する。
If(In(x,y)>I(x,y))
then T(x,y)= −255‥‥‥(1)
Else
then T(x,y)=255 ‥‥‥(2)
比較判定部103は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第二閾値T(x,y)に基づいて下記のように出力する濃度値Out(x,y)を決定する。
If(C(x,y)<T(x,y))
then Out(x,y)=0 ‥‥‥(3)
Else
then Out(x,y)=255 ‥‥‥(4)
このOut(x,y)が出力端子104から画像出力装置303に対して出力される。
また、出力値Out(x,y)は減算器106に入力される。減算器106は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
e(x,y)=C(x,y)−Out(x,y)‥‥‥(5)
次に誤差拡散部107では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ105に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部107では下記のような処理を行う。
E(x+1,y)=E(x+1,y)+e(x,y)×7/16 ‥‥‥(6)
E(x−1,y+1)=E(x−1,y+1)+e(x,y)×5/16‥‥‥(7)
E(x,y+1)=E(x,y+1)+e(x,y)×3/16 ‥‥‥(8)
E(x+1,y+1)=E(x+1,y+1)+e(x,y)×1/16‥‥‥(9)
この誤差拡散処理で発生した誤差データは誤差メモリ105に格納される。
以上のように図1の構成によって、画像処理部における誤差拡散処理が行われる。
次に、このような処理によりなぜ誤差拡散処理でテクスチャやドット生成遅れ問題が解消するかについて説明する。
特許文献3のように、図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値で誤差拡散処理を行った場合、閾値マトリクスにある値の順番でドットが出現しない場合がある。具体的に階調値1が連続した画像を量子化する場合、図7の画素位置701に相当する画素においてのみドットが出力されるならばドットの分散状態は一定であるため粒状性もよくテクスチャを不快と視覚することはない。しかしながら、周辺画素の量子化誤差の累積により、図7の画素位置702や703のように閾値が小さい位置においてドットが出力されてしまう場合があるため、ドットの分散状態は一定とならないため粒状性が劣化し、テクスチャが不快になってしまう。
これに対し、図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した第一閾値を入力画素の階調値に応じて設定した第二閾値を用いた誤差拡散処理において階調値1が連続した画像を量子化する場合は次のようになる。画素位置701における第二閾値は−255と低く設定されるため、周辺画素の量子化誤差が累積していなくてもドットが出力されやすくなる。また、図7の画素位置702や703における第二閾値は255と高く設定されるため、周辺画素の量子化誤差を累積していてもドットが出力されにくくなる。よって、画素位置701に相当する画素においてのみドットが出力されるためドットの分散状態は一定であるため粒状性もよく、テクスチャを抑制することができる。
加えて、図7の閾値マトリクスのサイズは16×16画素であるため、16×16画素以内に1ドットは出力され、出力機の解像度が600×600dpiであれば視覚しにくく、ハイライト部のドット生成遅れ問題は生じない。
階調値2や3が連続した画像を量子化する場合も同様に、図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した第一閾値を入力画素の階調値に応じた第二閾値を用いて誤差拡散処理を行うことでテクスチャとドット生成遅れ問題は解消できる。
また拡散係数にも依存するが、階調値32・64・128の近傍階調が連続した画像を誤差拡散処理で2値化した場合に視覚的にテクスチャを不快と感じられやすい。階調値64が連続した画像を2値化した結果は2画素の図8に示すように、4画素に1ドット出力されることが望ましい。階調値64の近傍階調として、階調値62が連続した画像を2値化した場合は、図8からドットが2個少ない画像が好ましい。図9のような図8からドット2個抜いてできる画像を組み合わせてできる画像は、ドットが抜けてできる隙間は画像の中で均一に並ぶので視覚的に好ましくないテクスチャは生じない。しかしながら、単純に誤差拡散により2値化すると図9においてドットが抜ける個所が一定ではなく、抜けた個所が一定でない画像を組み合わせてできる画像はドットが抜けてできる隙間は画像の中で不均一となるので視覚的に好ましくないテクスチャが生じる。
図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した第一閾値を入力画素の階調値に応じて設定した第二閾値を用いた誤差拡散処理において階調値62が連続した画像を量子化する場合は次のようになる。図9のドットが出ている個所における第二閾値は−255と低く設定されるため、周辺画素の量子化誤差が累積していなくてもドットが出力されやすくなる。また、図9のドットが出ていない個所における第二閾値は255と高く設定されるため、周辺画素の量子化誤差を累積していてもドットが出力されにくくなる。よって、図9のようなドット配置となるため、視覚的に好ましくないテクスチャを抑制することができる。
本発明は上記の実施例1にとらわれることなく、種々の変形実施が可能である。実施例1を説明する図1の画像処理装置のブロックを図10に変えて説明する。
入力端子1001は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす。入力データIn(x,y)が加算器1002に入力される。加算器1002は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)はマトリクス設定部1008と閾値設定部1009に入力される。マトリクス設定部1008は図11、図12に示すような閾値マトリクスをメモリに格納しており、入力データIn(x,y)の値に応じた閾値マトリクスM(In(x,y))を閾値設定部1009に出力する。
閾値設定部1009は入力データIn(x,y)と閾値マトリクスM(In(x,y))より、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図11、図12に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクスMにおいて注目画素位置に対応した閾値を第一閾値T(x,y)として比較判定部1003に出力する。
比較判定部1003は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第一閾値T(x,y)に基づいて式(3)、式(4)のように出力する濃度値Out(x,y)を決定する。
このOut(x,y)が出力端子1004から画像出力装置303に対して出力される。また、出力値Out(x,y)は減算器1006に入力される。減算器1006は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
次に誤差拡散部1007では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ1005に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部1007では式(5)から式(8)のような処理を行う。この誤差拡散処理で発生した誤差データは誤差メモリ1005に格納される。以上のように図10の構成によって、画像処理部における誤差拡散処理が行われる。
次に、このような処理によりなぜ誤差拡散処理でテクスチャやドット生成遅れ問題が解消するかについて説明する。
図11や図12のような階調値に応じた閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理において、階調値1が連続した画像を量子化する場合は次のようになる。階調値1が入力された場合、図11の閾値マトリクスが選択される。このとき画素位置1001のみ第一番閾値が−255と低く設定されるため、周辺画素の量子化誤差が累積していなくてもドットが出力されやすくなる。また、画素位置1001以外の画素位置において、第二閾値は255と高く設定されるため、周辺画素の量子化誤差を累積していてもドットが出力されにくくなる。よって、画素位置1001に相当する画素においてのみドットが出力されるためドットの分散状態は一定であるため粒状性もよく、テクスチャを抑制することができる。
加えて、図10の閾値マトリクスのサイズは16×16画素であるため、16×16画素以内に1ドットは出力され、出力機の解像度が600×600dpiであれば視覚しにくく、ハイライト部のドット生成遅れ問題は生じない。
階調値2や3が連続した画像を量子化する場合も同様に、図11や図12のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を入力画素の階調値に応じた第二閾値を用いて誤差拡散処理を行うことでテクスチャとドット生成遅れ問題は解消できる。
また拡散係数にも依存するが、階調値32・64・128の近傍階調が連続した画像を誤差拡散処理で2値化した場合に視覚的にテクスチャが不快と感じられやすい。階調値64が連続した画像を2値化した結果は2画素の図8に示すように、4画素に1ドット出力されることが望ましい。階調値64の近傍階調として、階調値62が連続した画像を2値化した場合は、図8からドットが2個少ない画像が好ましい。図9のような図8からドット2個抜いてできる画像を組み合わせてできる画像は、ドットが抜けてできる隙間は画像の中で均一に並ぶので視覚的に好ましくないテクスチャは生じない。しかしながら、単純に誤差拡散により2値化すると図9においてドットが抜ける個所が一定ではなく、抜けた個所が一定でない画像を組み合わせてできる画像はドットが抜けてできる隙間は画像の中で不均一に並ぶので視覚的に好ましくないテクスチャが生じる。
図12のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いた誤差拡散処理において階調値62が連続した画像を量子化する場合は次のようになる。図9のドットが出ている個所に相当する図12の閾値マトリクスの値は−255と低く設定されるため、周辺画素の量子化誤差が累積していなくてもドットが出力されやすくなる。また、図9のドットが出ていない個所に相当する図12の閾値マトリクスの値は255と高く設定されるため、周辺画素の量子化誤差を累積していてもドットが出力されにくくなる。よって、図9のようなドット配置となるため、視覚的に好ましくないテクスチャを抑制することができる。
階調値1や62以外の階調値に対応する閾値マトリクスは図7の閾値マトリクスを各階調値を閾値として2値化したものを閾値マトリクスとすればよい。また、全ての階調値において閾値マトリクスのサイズを同一とする必要はなく、階調値に応じてより小さなサイズの閾値マトリクスや、大きなサイズの閾値マトリクスを使用してもよい。階調値に応じてサイズのことなる閾値マトリクスを選択できれば、大きなサイズであれば広い範囲を考慮してドットを分散させることが可能となり、小さなサイズであれば省メモリとすることができる。
実施例1を説明する図1の画像処理装置のブロックを図13に変えて説明する。入力端子1301は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす。入力データIn(x,y)が加算器1302に入力される。加算器1302は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)は閾値演算部1308、閾値設定部1309と閾値選択部1310に入力される。閾値演算部1308は図7に示すような閾値マトリクスをメモリに格納しており、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図7に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクスの注目画素位置に対応した閾値を第一閾値I(x,y)として閾値設定部1309に出力する。
閾値設定部1309は入力データIn(x,y)を閾値として第一閾値I(x,y)を下記のように2値化し第二閾値B(x,y)を決定し、閾値選択部1310へ出力する。
If(In(x,y)>I(x,y))
then B(x,y)= −255‥‥‥(10)
Else
then B(x,y)=255 ‥‥‥(11)
閾値選択部1310は視覚的に好ましくないテクスチャが生じる、またはドット生成遅れが生じるなど問題のあるj個の階調値を保持している。今、閾値選択部1310に保持されているj個の階調値の1つを階調値Xiとする。入力データIn(x,y)が閾値選択部1310に保持されているj個の階調値Xiのいずれか1つと同値であれば、式(11)にあるように第二閾値B(x,y)を第三閾値T(x,y)とする。入力データIn(x,y)が閾値選択部1310に保持されているj個の階調値Xiの全てと同値でなければ所定の閾値を第三閾値T(x,y)とする。ここで、所定の閾値とは、2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたものなどである。説明において所定の閾値を出力値0・255の中間値128とする。上記のように決定した第三閾値T(x,y)比較判定部1303へ出力する。
If(I(x,y)=Xi)
then T(x,y)=B(x,y)‥‥‥(12)
Else
then T(x,y)= 128 ‥‥‥(13)
比較判定部1303は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第三閾値T(x,y)に基づいて式(3)、式(4)のように出力する濃度値Out(x,y)を決定する。
このOut(x,y)が出力端子1304から画像出力装置303に対して出力される。また、出力値Out(x,y)は減算器1306に入力される。減算器1306は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
次に誤差拡散部1307では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ1305に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部1307では式(6)から式(9)のような処理を行う。この誤差拡散処理で発生した誤差データは誤差メモリ1305に格納される。以上のように図13の構成によって、画像処理部における誤差拡散処理が行われる。
次に、このような処理によりなぜ誤差拡散処理でテクスチャやドット生成遅れ問題が解消するかについて説明する。
図6に示すような誤差の拡散係数を決定した後に、上記拡散係数を用いた単純2値誤差拡散によりグラデーション画像の2値化を行えば、視覚的に好ましくないテクスチャが生じる階調値やドット生成遅れが生じる階調値を求めることができる。
ハイライト部においてドット生成遅れ問題が生じる階調値が1から32であった場合、階調値1から32の間だけ図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理を行えばハイライト部のドット生成遅れ問題を抑制できる。階調値32より高濃度側はドット生成遅れ問題は生じないので2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたもので誤差拡散処理を行えばよい。
また、視覚的に好ましくないテクスチャが生じる階調が階調値62・63・65・66などとわかっている場合、上記階調値のみに図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理を行えば視覚的に好ましくないテクスチャを抑制することができる。視覚的に好ましくないテクスチャが生じない階調においては2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたもので誤差拡散処理を行えばよい。
実施例2を実施例3のように視覚的に好ましくないテクスチャが生じる、またはドット生成遅れが生じるなど問題のあるj個の階調値にのみ適応することができる。実施例2を説明する図10の画像処理装置のブロックを図14に変えて説明する。
入力端子1401は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす。入力データIn(x,y)が加算器1402に入力される。加算器1402は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)はマトリクス設定部1408と閾値設定部1409と閾値選択部1410に入力される。マトリクス設定部1408は図11、図12に示すような閾値マトリクスをメモリに格納しており、入力データIn(x,y)の値に応じた閾値マトリクスM(In(x,y))を閾値設定部1409に出力する。
閾値設定部1409は入力データIn(x,y)と閾値マトリクスM(In(x,y))より、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図11、図12に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクスMにおいて注目画素位置に対応した閾値を第一閾値B(x,y)として閾値選択部1410に出力する。
閾値選択部1410は視覚的に好ましくないテクスチャが生じる、またはドット生成遅れが生じるなど問題のあるj個の階調値を保持している。今、閾値選択部1410に保持されているj個の階調値の1つを階調値Xiとする。入力データIn(x,y)が閾値選択部1410に保持されているj個の階調値Xiのいずれか1つと同値であれば、式(11)にあるように第一番閾値B(x,y)を第二閾値T(x,y)とする。入力データIn(x,y)が閾値選択部1410に保持されているj個の階調値Xiの全てと同値でなければ所定の閾値を第二閾値T(x,y)とする。ここで、所定の閾値とは、2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたものなどである。説明において所定の閾値を出力値0・255の中間値128とする。上記のように決定した第二閾値T(x,y)比較判定部1403へ出力する。
比較判定部1403は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第一閾値T(x,y)に基づいて、式(3)、式(4)のように出力する濃度値Out(x,y)を決定する。このOut(x,y)が出力端子1404から画像出力装置303に対して出力される。また、出力値Out(x,y)は減算器1406に入力される。減算器1406は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
次に誤差拡散部1407では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ1005に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部1407では式(6)から式(9)のような処理を行う。この誤差拡散処理で発生した誤差データは誤差メモリ1405に格納される。以上のように図14の構成によって、画像処理部における誤差拡散処理が行われる。
次に、このような処理によりなぜ誤差拡散処理でテクスチャやドット生成遅れ問題が解消するかについて説明する。
図6に示すような誤差の拡散係数を決定した後に、上記拡散係数を用いた単純2値誤差拡散によりグラデーション画像の2値化を行えば、視覚的に好ましくないテクスチャが生じる階調値やドット生成遅れが生じる階調値を求めることができる。
ハイライト部においてドット生成遅れ問題が生じる階調値が1から32であった場合、階調値1から32の間だけ図11のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理を行えばハイライト部のドット生成遅れ問題を抑制することができる。階調値32より高濃度側はドット生成遅れ問題は生じないので2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたもので誤差拡散処理を行えばよい。
また、視覚的に好ましくないテクスチャが生じる階調が階調値62・63・65・66などとわかっている場合、上記階調値のみに図12のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いた誤差拡散処理を行えば視覚的に好ましくないテクスチャを抑制することができる。視覚的に好ましくないテクスチャが生じない階調においては2値誤差拡散の出力値0・255の中間値128を閾値としたものや、乱数によりえられた値を閾値としたもので誤差拡散処理を行えばよい。
実施例1を説明する図1の画像処理装置のブロックを図15に変えて説明する。入力端子1501は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす。入力データIn(x,y)が加算器1502に入力される。加算器1502は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)は閾値演算部1508、閾値設定部1509と閾値選択部1510に入力される。閾値演算部1508は図7に示すような閾値マトリクスをメモリに格納しており、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図7に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクスの注目画素位置に対応した閾値を第一閾値I(x,y)として閾値設定部1509に出力する。
閾値設定部1509は入力データIn(x,y)を閾値として第一閾値I(x,y)を式(10)、式(11)のように2値化して第二閾値B(x,y)を決定し、閾値選択部1510へ出力する。
閾値選択部1510は視覚的に好ましくないテクスチャが生じる、またはドット生成遅れが生じるなど問題のあるj個の階調値を保持している。今、閾値選択部1510に保持されているj個の階調値の1つを階調値Xiとする。入力データIn(x,y)が閾値選択部1510に保持されているj個の階調値Xiのいずれか1つと同値であれば、式(14)にあるように第二閾値B(x,y)を第三閾値T(x,y)とする。入力データIn(x,y)が閾値選択部1510に保持されているj個の階調値Xiの全てと同値でなければ第一閾値I(x,y)を第三閾値T(x,y)とする。上記のように決定した第三閾値T(x,y)比較判定部1503へ出力する。
If(I(x,y)=Xi)
then T(x,y)=B(x,y)‥‥‥(14)
Else
then T(x,y)=I(x,y)‥‥‥(15)
比較判定部1503は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第三閾値T(x,y)に基づいて式(3)、式(4)のように出力する濃度値Out(x,y)を決定する。このOut(x,y)が出力端子1504から画像出力装置303に対して出力される。また、出力値Out(x,y)は減算器1506に入力される。減算器1506は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
次に誤差拡散部1507では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ1305に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部1507では式(6)から式(9)のような処理を行う。この誤差拡散処理で発生した誤差データは誤差メモリ1505に格納される。以上のように図15の構成によって、画像処理部における誤差拡散処理が行われる。
次に、このような処理によりなぜ誤差拡散処理でテクスチャやドット生成遅れ問題が解消するかについて説明する。
図6に示すような誤差の拡散係数を決定した後に、上記拡散係数を用いた単純2値誤差拡散によりグラデーション画像の2値化を行えば、視覚的に好ましくないテクスチャが生じる階調値やドット生成遅れが生じる階調値を求めることができる。
ハイライト部においてドット生成遅れ問題が生じる階調値が1から32であった場合、階調値1から32の間だけ図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理を行えばハイライト部のドット生成遅れ問題を抑制できる。階調値32より高濃度側はドット生成遅れ問題は生じないので図7のような閾値マトリクスと注目画素の画素位置(x,y)により得られる閾値で誤差拡散処理を行えばよい。
また、視覚的に好ましくないテクスチャが生じる階調が階調値62・63・65・66などとわかっている場合、上記階調値のみに図7のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した閾値を用いて誤差拡散処理を行えば視覚的に好ましくないテクスチャを抑制することができる。視覚的に好ましくないテクスチャが生じない階調においては図7のような閾値マトリクスと注目画素の画素位置(x,y)により得られる閾値で誤差拡散処理を行えばよい。
視覚的に好ましくないテクスチャやドット生成遅れが生じる階調では、図7のような閾値マトリクスがもつテクスチャが強く再現される。これに対して、上記以外の階調では誤差拡散によるテクスチャとなってしまい、各々の階調にて処理を切り替えた結果、テクスチャの変化が強く知覚することができてしまう。
図7のような閾値マトリクスと注目画素の画素位置(x,y)により得られる閾値で誤差拡散処理を行えば、図7の閾値マトリクスがもつテクスチャの影響を受けたドット配置となる。視覚的に好ましくないテクスチャやドット生成遅れが生じる階調と、それ以外の階調で閾値設定処理を切り替えたときのテクスチャの変化を知覚しがたくすることができる。
実施例1から実施例4の発明は2値誤差拡散処理に対するものであったが、同じように多値誤差拡散にも適用できる。実施例1を説明する図7の閾値マトリクスを図16、図17に変えて説明する。
さらに、図3の画像記録装置303が図18に示すように1ドットを単位とした3階調表現ができるとし、3値の誤差拡散処理を行うことになる。ここで、図18の「0」,「1」,「2」は画像処理装置302で3値化したあとの情報をあらわし、このデータが画像記録装置303に送られる。
画像記録装置303は、図18に示すように出力の対象となっているドットの制御を行う。「0」はドットを打たないことを示し、「1」は薄いドットを、「2」は1よりも濃度の高い濃いドットを打つことを示す。以後、「0」をドットoff、「1」を淡ドット、「2」を濃ドットとする。ここでは、図18のように画像出力装置が濃度変調できる場合を示したが、本発明が適応される範囲はこれに限定されるものではない。ここでは出力装置が出力可能な3値の階調を0,128,255とする。
図16はドットoffと淡ドットの出力を切り替える閾値マトリクスであり、図17は淡ドットと濃ドットの出力を切り替える閾値マトリクスである。
入力端子101は画像入力装置301より多値画像データが入力される。ここで、2次元の画像データを表わすために、In(x,y)として表わす。入力データIn(x,y)が加算器102に入力される。加算器102は入力データIn(x,y)と誤差成分E(x,y)を加算し補正データC(x,y)を計算する。
また、入力データIn(x,y)は閾値演算部108と閾値設定部109に入力される。閾値演算部108は図16、図17に示すような3値化に必要な2個の閾値マトリクスからなる閾値マトリクス群をメモリに格納しており、入力データIn(x,y)のアドレス(x,y)をカウントするカウンタによって、図16、図17に示す閾値マトリクスを格納したメモリの読み出しアドレスを発生し、閾値マトリクス群の注目画素位置に対応した閾値群を第一閾値群I(x,y)として閾値設定部109に出力する。
ここで第一閾値群I(x,y)は3値化に必要な2個の閾値からなる閾値群であり、図16に示す閾値マトリクスの注目画素位置に対応した第一閾値I0(x,y)と、図17に示す閾値マトリクスの注目画素位置に対応した第一閾値I1(x,y)からなる閾値群である。
閾値設定部109は入力データIn(x,y)を閾値として第一閾値群I(x,y)を下記のように3値化して第二閾値群T(x,y)を決定し、比較判定部103へ出力する。ここで第二閾値群T(x,y)は第一閾値群I(x,y)を3値化した結果の第二閾値T0(x,y)と第二閾値T1(x,y)からなる閾値群である。
If(In(x,y)>I1(x,y))
then T0(x,y)= −255
T1(x,y)= −255‥‥‥(16)
Else If(In(x,y)>I0(x,y))
then T0(x,y)= −255
T1(x,y)= 255 ‥‥‥(17)
Else
then T0(x,y)=255
T1(x,y)=255 ‥‥‥(18)
比較判定部103は、入力データIn(x,y)に誤差E(x,y)が加算された補正データC(x,y)と第二閾値群T(x,y)に基づいて下記のように出力する濃度値Out(x,y)を決定する。
If(C(x,y)<T0(x,y))
then Out(x,y)=0 ‥‥‥(19)
Else If(C(x,y)<T1(x,y))
then Out(x,y)=128‥‥‥(20)
Else
then Out(x,y)=255‥‥‥(21)
このOut(x,y)が出力端子104から画像出力装置303に対して出力される。また、出力値Out(x,y)は減算器106に入力される。減算器106は補正データC(x,y)と出力値Out(x,y)から式(5)に示すように減算し、現画素で発生した誤差e(x,y)が算出される。
次に誤差拡散部107では予め設定された拡散係数に基づいて、誤差e(x,y)を配分して誤差メモリ105に蓄積されている誤差データE(x,y)に加算していく。ここで例えば拡散係数として図6に示したような係数を用いた場合、誤差拡散部107では式(6)から式(9)のような処理を行う。この誤差拡散処理で発生した誤差データは誤差メモリ105に格納される。以上のように図1の構成によって、画像処理部における3値誤差拡散処理が行われる。
実施例6を実施例5のように、視覚的に好ましくないテクスチャやドット生成遅れが生じる階調のような特定階調にのみ、図16、図17のような閾値マトリクスと注目画素の画素位置(x,y)に応じて設定した第一閾値群を入力画素の階調値に応じて設定した第二閾値群を用いた多値誤差拡散処理とすることもできる。
多値誤差拡散においては、視覚的に好ましくないテクスチャやドット生成遅れが生じる階調以外にも多値出力が切り替わる近傍階調にも適応することが望ましい。具体的に、図16、図17のような閾値マトリクスを用いた場合、階調値128が連続した画像を3値化した画像は淡ドットで埋め尽くされる。階調値128の近傍階調として、階調値127が連続した画像を3値化した画像は、ドットoffと淡ドットで階調表現される。ドットoffが画像の中で不均一となると視覚的に好ましくないテクスチャが生じる。加えて、画像によってはドットoffの生成が遅れてしまう場合がある。同様に、階調値128の近傍階調として、階調値129が連続した画像を3値化した画像は、淡ドットと濃ドットで階調表現される。濃ドットが画像の中で不均一となると視覚的に好ましくないテクスチャが生じる。加えて、画像によっては濃ドットの生成が遅れてしまう場合がある。以上のように多値出力が切り替わる近傍階調にも適用することで、多値出力が切り替わる近傍階調での視覚的に好ましくないテクスチャやドット生成遅れを抑制することができる。
また、実施例2を実施例6のように3値誤差拡散に適応するには、図16、図17の閾値マトリクスを各階調値を閾値として3値化したものを閾値マトリクスとすればよい。また、全ての階調値において閾値マトリクスのサイズを同一とする必要はなく、階調値に応じてより小さなサイズの閾値マトリクスや、大きなサイズの閾値マトリクスを使用してもよい。階調値に応じてサイズのことなる閾値マトリクスを選択できれば、大きなサイズであれば広い範囲を考慮してドットを分散させることが可能となり、小さなサイズであれば省メモリとすることができる。
応用例として次のような実施例もある。インクジェットプリンタのようにドット各々の再現性が良い出力機では、実施例1では図7に示すようなベイヤー型の閾値マトリクスを用いたほうがドットが広く分散し、良好な画質を得やすい。これに対して、電子写真のような孤立したドットでは再現性がさほど良くなく、複数のドットを集中させクラスターを形成した場合において再現性が良い出力機では図7に示すようなベイヤー型閾値マトリクスではなく、図19に示すようなドット集中型の閾値マトリクスを用いたほうが良好な画質を得やすい。
また実施例1から実施例6は単色の誤差拡散処理に対するものであったが、多色化にも適用できる。この場合、図7、図16、図17、図19の閾値マトリクスを各色において異ならせておけばよい。
また、本発明は誤差拡散処理に対するものであったが、同じように平均誤差最小法にも適用できる。
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(CPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読出されたプログラムコード自体が前述した実施例の機能を実現することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
以上により本発明の実施の形態について説明した。なお、上述した実施形態は、本発明の好適な実施形態の一例を示すものであり、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲内において、種々変形実施が可能である。
本発明の実施例1に係る画像処理装置の構成を示す。
本発明が適用される画像記録装置の構成を示す。
本発明の画像処理装置を用いて構成される画像入出力システムの構成を示す。
記録ヘッドの第1の例を示す。
記録ヘッドの第2の例を示す。
拡散係数の例を示す。
閾値マトリクスの第1の例を示す。
階調値64が連続した画像を2値化した結果を示す。
階調値62が連続した画像を2値化した、本発明の結果を示す。
本発明の実施例2に係る画像処理装置の構成を示す。
閾値マトリクスの第2の例を示す。
閾値マトリクスの第3の例を示す。
本発明の実施例3に係る画像処理装置の構成を示す。
本発明の実施例4に係る画像処理装置の構成を示す。
本発明の実施例5に係る画像処理装置の構成を示す。
閾値マトリクスの第4の例を示す。
閾値マトリクスの第5の例を示す。
1ドットの3階調表現を示す。
閾値マトリクスの第6の例を示す。
符号の説明
101 入力端子
102 加算器
103 比較判定部
104 出力端子
105 誤差メモリ
106 減算器
107 誤差拡散部
108 閾値演算部
109 閾値設定部