JP4182918B2 - 画像処理装置、画像処理方法、及びプログラム - Google Patents

画像処理装置、画像処理方法、及びプログラム Download PDF

Info

Publication number
JP4182918B2
JP4182918B2 JP2004159064A JP2004159064A JP4182918B2 JP 4182918 B2 JP4182918 B2 JP 4182918B2 JP 2004159064 A JP2004159064 A JP 2004159064A JP 2004159064 A JP2004159064 A JP 2004159064A JP 4182918 B2 JP4182918 B2 JP 4182918B2
Authority
JP
Japan
Prior art keywords
error
value
pixel
diffusion
diffusion matrix
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
JP2004159064A
Other languages
English (en)
Other versions
JP2005341355A (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 JP2004159064A priority Critical patent/JP4182918B2/ja
Publication of JP2005341355A publication Critical patent/JP2005341355A/ja
Application granted granted Critical
Publication of JP4182918B2 publication Critical patent/JP4182918B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、多階調画像データを低階調画像データに変換する誤差拡散法を用いた画像処理装置、画像処理方法、及びプログラムに関する。詳しくは、誤差拡散法で使用する拡散マトリックス内に正値と負値の両方の係数を用いて処理を行う画像処理装置、画像処理方法、及びプログラムに関する。
従来から、プリンタなどの画像処理装置は、画素ごとに多値の階調値を有する階調データに対して、ドットの有無を表す2値の値に変換して印刷用紙に印刷等を行うようになされている。このような低階調の画像データに変換する場合に、原画像の画品質をできるだけ維持するための技術として誤差拡散法による擬似中間調表現が利用されている。誤差拡散法は、注目画素で発生した量子化誤差を当該画素の近傍の未量子化画素に拡散させて処理を行う方法である(例えば、以下の非特許文献1)。
しかし、ハイライト領域(ドット密度の低い領域)の立ち上がり部分で誤差拡散法による処理を行うと、ドットの発生が大幅に遅れる、いわゆる「ドット発生の遅延」と呼ばれる現象が発生する。また、入力階調値が大きく変化するエッジの領域では尾を引いたようにドットが抜けてしまう、いわゆる「尾ひき」と呼ばれる現象も発生する。
そのため、従来では、入力階調値に応じて誤差拡散法で使用される閾値を変更することで早くドットを発生させ「ドット発生の遅延」と「尾ひき」の問題を解決したものがある(以下の特許文献1)。しかし、かかる技術では閾値を変化させているため入力画像のエッジ部分の前後等でドットが発生し、結果的に画像のエッジの部分がシャープに再現されない問題があった。
そこで、隣接画素との濃度差を演算してエッジを検出しその値によって閾値を固定にしたり、変化させることで、エッジの再現性を良好にするとともに「ドット発生の遅延」と「尾ひき」の問題を解決したものがある(例えば、以下の特許文献2)。
また、入力階調値にランダムノイズを付加することでかかる問題点を解決したものもある(例えば、以下の特許文献3、4)。さらに、ドットが安定して発生している状態では量子化誤差は一定の範囲内に収束していることに着目して、量子化誤差を強制的に収束範囲内に収めるようにすることで、エッジ部分をシャープに再現しつつ「ドット発生の遅延」と「尾ひき」の問題を解決したものもある(例えば、以下の特許文献5)。
Robert Ulichney著、"Digital Halftoning"、The MIT Press(1987年発行)、p.239−252 特開平7−111591号公報 特開平8−242374号公報 特開平10−42132号公報 特開平10−42133号公報 特開平11−215377号公報
しかしながら、上述した特開平8−242374号においては、濃度差を演算してその値によって閾値を固定にしたりする等、条件分岐が多くそれだけ計算量が多くなり、誤差拡散処理が遅くなってしまう問題点があった。
また、特開平10−42132号や特開平10−42133号もランダムノイズを付加する等の処理により処理が遅くなってしまう問題点がある。
さらに、特開平11−215377号では、本来とは異なる誤差値を他の画素に拡散させているため、画像全体の平均濃度(平均階調値)の誤差を最小にするという誤差拡散法本来の特徴を失っている。
そこで、本発明の目的は、誤差拡散法本来の特徴を失うことなく「ドット発生の遅延」と「尾ひき」の問題を解決し、さらに処理の速い誤差拡散法を用いた画像処理装置や方法、及びプログラムを提供することを目的とする。
上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する変換手段と、変換手段により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差値として拡散される値が入力階調値よりも大きな値を誤差値として拡散されず本来の誤差拡散法の特徴を失うことはない。
また、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素から位置が遠いほど小さな係数を配置する、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため、「ドット発生の遅延」等の問題を解決することができる。
さらに、本発明は上記画像処理装置において、上記負値の係数は少なくとも拡散マトリックスの外周の画素のいずれかに配置される、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため、「ドット発生の遅延」等の問題を解決することができる。
さらに、本発明は上記画像処理装置において、上記拡散マトリックスに関し、注目画素に隣接する画素に拡散させる誤差の係数の合計値は1よりも大きな値である、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため「ドット発生の遅延」等の問題を解決することができる。
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に隣接する画素に対し、注目画素により発生した誤差よりも絶対値が大きな値を前記誤差として拡散させるよう係数が配置される、ことを特徴としている。これにより、例えば、注目画素の近傍ではより大きな誤差値が拡散されるため「ドット発生の遅延」等の問題を解決することができる。
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に隣接する画素以外の画素に負値の係数が配置される、ことを特徴としている。これにより、例えば、注目画素に近い画素には大きな誤差値が拡散されてドットの生成は早まり、遠い画素には低い誤差値が拡散されることで全体として入力階調値よりも大きな誤差値を拡散しないことになる。
さらに、本発明は上記画像処理装置において、上記拡散マトリックスは、注目画素に対し主走査方向の画素に配置される係数の合計が1となるように配置されるとともに、注目画素に対し主走査方向でかつ副走査方向に斜め方向に位置する画素に負値の係数が配置される、ことを特徴としている。これにより、例えば、主走査方向への「ドット発生の遅延」と「尾ひき」が解消される。
また、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する変換工程と、変換工程により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、を備えた画像処理方法であることを特徴としている。これにより、例えば、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差拡散法本来の特徴を失うことなく処理を行うことができる。
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する変換処理と、変換処理により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、「ドット発生の遅延」や「尾ひき」を解消した再生画像を得るとともに、誤差拡散法本来の特徴を失うことなくコンピュータに処理を行わせることができる。
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する画像処理装置において、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算手段と、加算手段からの加算値を閾値に基づいて出力画像データに変換する変換手段と、変換手段で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速い画像処理装置を提供することができる。
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する画像処理方法において、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算工程と、加算工程からの加算値を閾値に基づいて出力画像データに変換する変換工程と、変換工程で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散工程と、を備えたことを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速い画像処理方法を提供することができる。
さらに、上記目的を達成するために本発明は、入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する画像処理をコンピュータに実行させるプログラムにおいて、注目画素の入力画像データと注目画素の周辺画素から拡散された誤差とを加算して加算値を出力する加算処理と、加算処理による加算値を閾値に基づいて出力画像データに変換する変換処理と、変換処理で発生した誤差を正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散処理と、をコンピュータに実行させるプログラムであることを特徴としている。これにより、例えば、「ドット発生の遅延」等の問題も解消し、処理の速いプログラムを提供することができる。
以下、図面を参照して本発明を実施するための最良の形態を説明する。図1は、本発明が適用される画像処理装置20を含むシステム全体の構成を示す図である。図に示すように本システムは階調画像データ出力装置10と、画像処理装置20と、2値画像出力装置30とから構成される。
階調画像データ出力装置10は、画像処理装置20と接続され、処理対象の階調画像データd0を出力する。本実施例において階調画像データd0は、各画素ごと、8ビット構成で0〜255までの256階調値を有している。階調画像データ出力装置10は、例えば、ホストコンピュータ、イメージスキャナ、デジタルカメラ、ビデオカメラなどである。
画像処理装置20は、階調画像データ出力装置10からの階調画像データd0が入力され、誤差拡散法による処理で2階調(0又は1)の画像データBに変換する。かかる画像データBは2値画像出力装置30に出力される。
2値画像出力装置30は、画像処理装置20と接続され、画像処理装置20からの2階調画像データBに基づいて原画像を再生出力する。2値画像出力装置30は、例えば、プリンタ、ディスプレイ、ファクシミリ、複写機、プリンタやファクシミリ等の機能を有する複合機などである。
次に、画像処理装置20の構成について説明する。図1に示すように画像処理装置20は、加算器21と、2値化部22と、減算器23と、重み付け誤差演算部24、及び誤差メモリ25とから構成される。
加算器21は、階調画像データ出力装置10と接続されるとともに、後述する誤差メモリ25、2値化部22、および減算器23と接続される。階調画像データ出力装置10からの階調画像データd0と、誤差メモリ25からの誤差値E0とが入力され、階調画像データd0に誤差値E0を加算した値fを2値化部22に出力する。また、この加算値fは減算器23にも出力される。
2値化部22は、減算器23に接続されるとともに2値画像出力装置30にも接続される。加算器21からの加算値fと閾値とを比較し、その大小によって2階調画像データBに変換する。本実施例では、閾値を“128”とし加算値fが閾値と等しいか大きいときはドット生成を示す“1”、そうでないときはドット無しを示す“0”とすることで2階調の値Bに変換する。この値Bが、2階調画像データとして2値画像出力装置30に出力される。
減算器23は、重み付け誤差演算部24にも接続される。減算器23は、誤差演算手段として機能し、加算器21からの加算値fに対して2値化部22からの2階調の値B’(B=1のときB’=255、B=0のときB’=0)を減算する。減算後の誤差値E’は重み付け誤差演算部24に出力される。
重み付け誤差演算部24は、誤差メモリ25にも接続される。減算器23からの誤差値E’が入力され、拡散マトリックス内の各係数値Wxyで積算(重み付け)し、各画素ごと、重み付け誤差値E’(i’、j’)を誤差メモリ25に出力する。ここでは、注目画素の近傍で2階調画像データBに変換されていない画素に誤差値E’(i’、j’)を拡散することになる。なお、拡散マトリックスは重み付け演算部24に格納され、処理の際にマトリックス内の各係数値Wxyを読み出して処理が行われる。
誤差メモリ25は、重み付け誤差演算部24からの重み付け誤差値E’(i’、j’)を一時記憶する。同じ画素位置に以前の重み付け誤差値E’(i’、j’)が記憶されていれば、記憶された誤差値E’(i’、j’)に重み付け誤差演算部24からの誤差値E’(i’、j’)を加算して記憶することになる。そして、階調画像データd0と同じ画素位置の誤差値E’(i’、j’)を加算器21に出力する。なお、重み付け誤差演算部24と誤差メモリ25とで誤差拡散手段として機能する。
[正負両方の係数を有する拡散マトリックスを用いた誤差拡散処理]
以上のように構成された画像処理装置20の動作について図2のフローチャートを参照しながら説明するが、その前に誤差拡散法による処理で用いる、本発明に係る拡散マトリックについて説明する。
誤差拡散法による処理は、画素ごとに加算値f(階調画像データd0の入力階調値と誤差値との加算値)と閾値とを2値化部22で比較し、2値化された値との誤差を減算器23で演算している。そして、その誤差を拡散マトリックス内にある係数Wxyで積算し、その値を注目画素の周辺に拡散させている。この拡散マトリックスの例を図3(A)に示す。
図3(A)に示すように本発明に係る拡散マトリックス241は、注目画素(図中“*”で示す)の周辺に“0.5”、さらに注目画素の2つ下の画素に“−0.5”の係数を持つ。すなわち、正の誤差値に対して注目画素に近い画素には多くの誤差値が拡散され、注目画素から遠い画素にはそれよりも小さな誤差値が拡散されるように係数を有している。注目画素に近い画素位置に大きな値の係数を有することで、より絶対値の大きな誤差値が近くの画素に拡散され、その後誤差値と入力階調値とを加算すればそれだけ早くドットが生成されることになる。なお、図3(A)に示すように図面上右方向が主走査方向で、下方向が副走査方向である。
図3(B)には、従来から存在するFloyd and Steinbergの拡散マトリックスを示す。このマトリックス241で注目画素の右隣には、“7/16”で図3(A)に示す“0.5”より小さい係数である。さらに、注目画素の下と右斜め下の係数はさらに小さい係数である。したがって、図3(B)のマトリックス241により拡散される誤差値は注目画素の近くでは図3(A)のマトリックスよりも誤差値の絶対値が小さいものとなる。
図3(C)には、従来からのJarvis、Judice and Ninkeの拡散マトリックスを示す。このマトリックス241は、図3(A)に示すマトリックス241と比較して係数はより小さな値となっている。この場合も、周りの画素に拡散される誤差値は注目画素の近くでは図3(A)の場合よりも低い値となっている。
ドット密度の低い領域の立ち上がり部分で発生する「ドット発生の遅延」は、拡散マトリックス241での係数が小さな値となっていることに加え、入力階調値が低い値のため周辺画素に拡散する誤差値が非常に小さく閾値に達するまで時間がかかることが原因である。また、エッジ部分で発生する「尾ひき」についても、例えばドット密度の低い領域からドット密度の高い領域に変わる領域において、誤差値が非常に小さいためにあるドット密度の低い領域で蓄積された誤差がドット密度の高い領域で相殺されるまで時間がかかることが原因である。
そこで、図3(A)に示すように拡散マトリックス241の係数を注目画素に近い画素には大きな係数を、注目画素から遠い画素には小さな係数となるように構成している。より具体的には、注目画素に隣接する画素(注目画素の右隣、右斜め下、下、左斜め下の最大4つの画素)に与える係数の合計値が1よりも大きな値となるように構成する。すなわち、注目画素に隣接する画素に拡散される重み付け誤差の合計が誤差値よりも絶対値を大きくとるように係数Wxyを与える。例えば、図3(A)の例では主走査方向、副走査方向を図面のようにとったときに、右隣と、下、及び左斜め下の画素(この例では右斜め下の画素に与える係数はない)に与える係数の合計値は“1.5”となっている。これにより、大きな誤差値が拡散され「ドット発生の遅延」等の問題を解消することができる。
しかしながら、大きな係数となるように拡散マトリックス241を構成しても、誤差値として拡散される値が本来の誤差値とは異なる値となっては、画像全体の平均階調値の誤差を最小にするという誤差拡散法の特徴を失うことになる。例えば、入力階調値が“10”で誤差値が“10”となったとき、ドットの生成を早めるために周辺の画素に“20”、“30”などの誤差値を拡散させると、画像全体の誤差が多くなってしまう。
そこで、注目画素の近い画素に大きな係数を割り当てたとき、遠くの画素に負値の係数を割り当て、拡散される値が全体としてみると誤差値と等しくなるようにする。図3(A)の例では、注目画素から2つ下の画素位置に負値である“−0.5”を割り当て、全体として“1.0”としている。これにより、注目画素での誤差値分を拡散させることになる。
拡散マトリックス241に負値の係数を割り当てる例としては、図3(D)や図3(E)に示すマトリックス241であってもよい。ちなみに、これらの拡散マトリックス241において注目画素に隣接する画素に与える係数の合計値はそれぞれ“23/16”、“62/48”である。
次に、図4(A)に示す入力階調値を例にとって図2に示すフローチャートを説明する。拡散マトリックス241は図3(A)に示すものを用いるものとする。なお、図4(A)に示す入力バッファ11は入力階調値d0を格納するためのもので各座標位置は全体画像の座標位置に対応する。誤差メモリ25や出力バッファ31の座標位置も同様である。出力バッファ31は2値化後の値Bを格納するためのものである。
ここで、入力バッファ11は本実施例においては階調画像データ出力装置10にあり、出力バッファ31は2値画像出力装置30にあるものとするが、入力バッファ11と出力バッファ31とは処理の動作を理解し易くするために示したものである。よって画像処理装置20に入力バッファ11や出力バッファ31があってもよいし、バッファ11、31自体なくてもよい。
まず、本発明にかかる誤差拡散法による処理が開始される(ステップS10)と、注目画素の指定を行う(ステップS11)。注目画素について最初は(1,1)に位置する画素である。図4(B)に示すように注目画素を太線で示す。なお、最初に画素(1,1)に対する処理を行うと次の注目画素として(2,1)となり、以後主走査方向に順次移動することになる。
次いで、注目画素の階調値d0と注目画素の誤差値E0とを加算器21にて加算する(ステップS12)。図4(B)の例では、注目画素の階調値d0は“16”、当該画素の誤差値E0は“0”なので、加算後の値fは“16”となる。
次いで、加算後の値fに対して2値化部22において2値化を行う(ステップS13)。図4(B)の例では、加算値fは“16”であるから閾値“128”と比較し2値化すると“0”となる(図4(B)の出力バッファ31参照)。
次いで、2値化したことによる誤差値E’を減算器23で演算する(ステップS14)。すなわち、加算値fから2値化後の値B’を減算する。図4(B)の例では、加算値fは“16”で2値化後の値B’は“0”、したがって誤差値E’“16”を得る。
次いで、重み付け誤差演算部24において重み付け誤差値E’(i’、j’)を演算する(ステップS15)。すなわち、誤差値E’に拡散マトリックス241の各係数Wxyを積算する。上述の例では、図3(A)に示すマトリックス241から注目画素(1,1)に対して画素(2,1)と画素(1,2)には“8”(=16×0.5)、画素(1,3)には“−8”(=16×(−0.5))となる。すなわち、E’(2,1)=E’(1,2)=8、E’(1,3)=−8を得る。
次いで、重み付け誤差値E’(i’、j’)を加算して誤差メモリ25に格納する(ステップS16)。上述の例では、図4(B)の誤差メモリ25に示すように(2,1)と(1,2)の位置に“8”、(1,3)の位置に“−8”が格納される。なお、ここでは図示しないが、画素位置(−1,2)に拡散される誤差E’(−1,2)=8も画素(−1,2)の誤差を格納する誤差メモリ25に加算される。
次いで、未処理画素があるか否か判断し(ステップS17)、未処理画素があれば(“YES”のとき)ステップS11に移行し上述の処理を繰り返す。未処理画素がないと(“NO”のとき)本処理は終了する(ステップS18)。図4(B)に示す例では、未処理画素があるため処理を繰り返すことになる。
以下、図4(B)の例で処理を進めると、図5(A)に示すように注目画素を(2,1)とし(ステップS11)、当該画素位置の入力階調値d0“16”と誤差メモリ25の当該画素位置の誤差値E0“8”とを加算する(ステップS12)と加算値f“24”を得る。閾値“128”と比較することで2値化すると“0”となる(ステップS13、図5(A)の出力バッファ31参照)。誤差値E’は“24”(ステップS14)で、拡散マトリックス241から重み付け誤差値E’(i’、j’)を演算する(ステップS15)。そして、誤差メモリ25に誤差値E’(i’、j’)を加算して格納する(ステップS16)と、図5(B)の誤差メモリ25に示す状態となる。以後、同様の処理を繰り返し、画素(4,1)まで処理を終了したときの入力バッファ11、誤差メモリ25、出力バッファ31の状態を図6(A)に示す。
ここで、誤差メモリ25に格納された各値を検討する。図6(B)には従来例の拡散マトリックス241により同じ画素位置(4,1)まで同じ処理を行ったときの誤差メモリ25と出力バッファ31の状態を示す。
両者の誤差メモリ25に格納された値を比較すると、処理が行われた画素位置のすぐ下の画素には図6(A)の方が図6(B)より多くの誤差値が拡散されていることがわかる。
このことから、多くの誤差値が拡散された画素では閾値よりも高くなる可能性が高まり、ドットが生成されやすくなる。すなわち、ハイライト領域の立ち上がり部分でドットの生成が遅れる「ドット発生の遅延」が解消される可能性が高くなる。また、入力画像のドット密度の低い領域から高い領域に変化するようなエッジ部分でも多くの誤差値が拡散されるためドット密度の高い領域でドットが生成されやすくなるため、「尾ひき」の問題も解消される可能性が高くなる。
また、本処理において注目画素位置で入力階調値d0と誤差値E0とを加算した加算値fと閾値とを比較して2値化するだけであって、隣接画素との入力階調値の差によって閾値を変更するような複雑な条件分岐を行うことがないためその分処理が早くなる。
さらに、図6(A)で誤差メモリ25に拡散された値の合計値は“56”、処理済みの4画素((1,1)〜(4,1)の4画素)の入力階調値の合計値は“64”で、ほぼ処理済みの階調値の合計値が周辺の画素に拡散されており、入力階調値よりも大きな値を拡散させるようなことはしていないことになる。すなわち、画像全体の平均階調値の誤差を最小にするという誤差拡散法本来の特徴を失っていないと言える。
図6(A)の処理を(5,3)の画素まで行ったときの例を図7(A)に示す。この図に示すように、(3,3)の画素位置でドットが生成されている。一方、図7(B)は図6(B)に示す従来例での拡散マトリックス241により処理を行ったときの例である。この例ではドットが生成されていない。すなわち、本発明に係る拡散マトリックス241による処理を行うことで「ドット発生の遅延」が解消されている。なお、図2の動作に戻ると、(5,3)を最後の画素としたとき、当該画素に対して処理が終了すると未処理画素がなくなるためステップS17で“NO”が選択され、一連の処理が終了することになる(ステップS18)。
次に全体画像による本発明の有効性について検討する。図8(A)、(B)は従来例の拡散マトリックス(図3(B)に示す拡散マトリックス241)を用いた場合の本処理後の再生画像の例である。図8(C)、(D)は本発明に係る拡散マトリックス(図3(D)の拡散マトリックス241)を用いた場合の再生画像の例である。入力画像は、図8(A)、(C)については入力階調値“15”の領域に入力階調値“180”の線が存在している例で、図8(B)、(D)については入力階調値“240”の領域に入力階調値“15”の四角形が存在している例である。
図8(A)では画像の左上の領域にドットの発生が遅れる「ドット発生の遅延」が生じ、画像中央の縦線、横線の右斜め下方向にドットが打たれていない「尾ひき」が生じている。また、図8(B)についても画像の左上の領域で白ドットの発生が遅れており、四角形の右斜め下方向でも白ドットが打たれていない。
一方、図8(C)、(D)に示すように本発明に係る拡散マトリックス241を用いて処理を行った場合には、画像の左上の領域でドットの発生が遅れる「ドット発生の遅延」が解消され、また、エッジの右斜め下方向にドットが打たれない「尾ひき」の問題も解消されている。理由は上述したように、拡散マトリックス241内で注目画素に近い画素位置に大きな係数、すなわち、注目画素に隣接する画素に与える係数の合計値を1よりも大きくしているからである。
以上、本発明によれば、誤差拡散法本来の特徴を失うことなく「ドット発生の遅延」と「尾ひき」の問題を解決し、さらに処理の速い誤差拡散法を用いた画像処理装置や方法、及びプログラムを提供することができる。
[重心位置に注目画素が位置するように係数を配置した拡散マトリックスによる誤差拡散処理]
次の実施例として、誤差拡散法で用いる拡散マトリックスで注目画素にマトリックスの重心位置が位置するように係数を配置した例について説明する。まず、従来例の拡散マトリックス241を例にとって説明する。図9(A)にその例を示す。
図9(A)の例は、注目画素の位置(“*”で示す)を(0,0)としたとき、(1,0)、(−1,1)、(0,1)、(1,1)の位置に“0.25”の係数を配置させた例である。このときの拡散マトリックス241内の重心位置を以下の式によって求める。
Figure 0004182918
(ここで(m1,m2)は重心位置の位置座標を示す)
以後の重心位置は[数1]を用いて演算する。実際に演算すると、(m1,m1)=(0.25,0.75)となる。この位置243を図面上、黒丸で示す。一方、注目画素(0,0)に着目すると、当該位置には拡散対象の入力階調値があり、その重心位置は当該画素(0,0)の中央に位置する。注目画素の重心位置242を図中白丸で示す。図9(A)に示すように、本来の重心位置242に対して実際の重心位置243がずれている。すなわち、注目画素から離れた位置に拡散マトリックス241の重心が位置する。
この重心位置のずれは、入力階調値を誤差値として周囲の画素に拡散させたときにも生じる。すなわち、図9(B)で示す入力階調値に対して注目画素を(2,1)とし、その階調値“16”が誤差値として周囲の画素に拡散させると、誤差メモリ25には同図に示すように拡散する。このとき、誤差メモリ25内の注目画素の本来の重心位置242は(2,1)で、実際の重心位置243は(2.75,1.75)となり、2つの重心位置にずれが生じている。
このように拡散マトリックス241内での重心位置の右斜め下方向(図3(A)に示す主走査方向、副走査方向を図面上にとったときの右斜め下方向)へのずれは、誤差値に対しても右下方向へのずれとなって現れ、全体として見ると入力階調値(誤差値)の移動が右斜め下方向に生じることになる。つまり、この右斜め下方向の入力階調値の移動が「ドット生成の遅延」や「尾ひき」が右斜め下方向に向けて発生している原因となっている。
例えば、上述した図6(B)の例でも、本来の重心位置242は図9(C)に示すように(2.5,1)に位置するはずであるが、実際の重心位置243は(2.97,1.91)と右斜め下方向にずれ、「ドット生成の遅延」等が右斜め下方向に発生することになる。
このときにドットの発生位置に着目すると、全体として入力階調値が重心位置のずれの方向に沿って移動するため、本来の重心位置にドットが打たれる可能性が低くなる。すなわち、拡散マトリックス241の重心位置のずれによって、入力階調値に忠実なドットが生成される可能性が低くなる。拡散マトリックス241によって、いわば、入力階調値を歪ませてしまい、歪んだ領域に対する誤差拡散処理と同等の処理を行っていることになる。
そこで、本発明は拡散マトリックス241の重心位置のずれに着目し実際の重心位置を本来の重心位置、すなわち注目画素の位置にマトリックス241の係数を配置することで、入力階調値に忠実なドットを生成させるようにする。
例えば、図9(A)の拡散マトリックス241で重心位置を注目画素に近づけるようにするには、図10(A)に示すようにさらに周囲の画素位置に負値の係数を配置させるようにすればよい。そうすると、矢印で示すように重心位置が移動するはずである。
重心位置が注目画素に位置する拡散マトリックス241の例としては、図10(B)に示すものがある。これは、上述した図3(A)と同じ拡散マトリックス241である。重心位置を求めると、(0,0)で注目画素の画素位置、すなわち本来の重心位置(0,0)と一致する。注目画素が重心位置となる係数の配置となっている。
図10(C)に示すように、上述の例で画素(4,1)までの処理が終了した時点での誤差メモリ25の状態において、誤差値の重心位置243は(2.86,0.86)となる。本来の重心位置242の近傍に位置している。前述の図9(C)と比較しその差は歴然である。ドットは、図7(A)に示すように(3,3)の画素位置に発生する。本来は(3,2)の位置にドットが発生するはずであるが、(1,1)の画素や(5,1)の画素等、端部で拡散されていない誤差があるため若干の歪みが生じているためである。
しかしながら、拡散マトリックス241内に負の係数を与えなくても、係数を工夫することで、「ドット発生の遅延」等が右斜め下方向(すなわち、主走査方向かつ副走査方向)に発生する問題を改善することは可能である。
例えば、図11(A)や図11(B)に示す拡散マトリックス241で考察してみる。図11(A)に示すマトリックス241は、係数に着目すると、(1,0)と(1,1)の係数の和は“7/16”で、(−1,1)の係数“7/16”と同じ値となっている。すなわち、注目画素を中心にして左右対称(主走査方向で対称)の係数が配置されている。重心位置を演算すると、(0,0.625)で、左右方向(主走査方向)へのずれが生じないことになる。すなわち、「ドット発生の遅延」等が発生したとき、主走査方向への遅延等は改善することができる。
図11(B)の拡散マトリックス241も注目画素を中心にして左右対称の係数が配置されている。重心位置は(0,0.5)となる。
以上から、拡散マトリックス241内の係数を注目画素に対して左右対称(主走査方向で対称)にするなどして、重心位置と注目画素の位置とでその主走査方向成分を等しくすれば、「ドット発生の遅延」等が生じたときに主走査方向への「ドット発生の遅延」等を解消し、さらに重心位置に近い位置にドットが生成される。
実際に図11(B)に示す拡散マトリックス241による誤差拡散処理の例を以下に示す。本実施例においても誤差拡散処理が行われる画像処理装置20の構成は図1に示すもので、その動作は図2に示すフローチャートに従う。入力階調値の例も上述の例と同様に図11(B)に示す例を用いる。
まず、注目画素を指定する(ステップS11)。最初は(0,0)の画素位置である(図12(A)の入力バッファ11参照)。誤差メモリ25内の当該画素位置の誤差は“0”であるので加算値fは“16”となる(ステップS12)。閾値“128”との比較により2値化すると“0”(ステップS13、図12(A)の出力バッファ31参照)、誤差値E’は“16”となる(ステップS14)。拡散マトリックス241により重み付け誤差値E’(i’、j’)を演算する(ステップS15)と、E’(2、1)=“8”(=16×0.5)となり、誤差メモリ25にすでに格納された値“0”とを加算して格納する(ステップS16、図12(A)の誤差メモリ25参照)。まだ未処理画素が存在するので(ステップS17で“YES”)、同様の処理を繰り返すことになる。
(4,1)の画素位置まで処理を終了したときの状態を図12(B)に示す。一方、従来の拡散マトリックス241を用いた場合の当該画素位置まで処理を終了したときの状態は図6(B)である。図6(B)に示す誤差メモリ25に格納された誤差値の重心位置は(2.97,1.91)、一方、図12(B)に示す誤差メモリ25内での重心位置は(2.79,1.17)である。(1,1)から(4,1)までの4画素の重心位置は(2.5,1)であるから、本発明に係る拡散マトリックス241を用いた方が従来のマトリックス241を用いたものよりも本来の重心位置に近づいている。したがって、従来のマトリックス241を用いたものよりも重心位置に近づいてドットが発生する。
以後、未処理画素がなくなるまで処理を進めると図13(A)に示す状態となる。この場合、出力バッファ31に示すようにドットが生成されていないが、同じ階調値でさらに広域の領域での処理を行うと、図6(B)に示す拡散マトリックス241を用いた場合と比較して、重心位置に対して右斜め下方向にドットが生成するのではなく、重心位置の下方向(副走査方向)にドットが生成するはずである。
図14には、図8と同じ入力画像に対して図11(A)に示す拡散マトリックス241を用いて処理を行ったときの再生画像の例を示す。副走査方向に対して「ドット発生の遅延」と「尾ひき」が発生しているものの、主走査方向に対しては発生していないことがわかる。上述したように、図11(A)の拡散マトリックス241ではその重心位置243が注目画素から主走査方向にずれがなく、副走査方向にのみずれているためである。
このように本発明によれば、拡散マトリックス241の重心位置を注目画素に位置するよう係数を配置したり、注目画素に近づけるよう係数を配置することで入力階調値に忠実なドットを生成させ、画質劣化のない再生画像を得ることができる。
[正負両方の係数を有するとともに、重心位置に注目画素が位置するように係数を配置した拡散マトリックスによる誤差拡散処理]
図11(A)、(B)で示した拡散マトリックス241はその係数が注目画素に対して左右対称のため、その重心位置は主走査方向に対しては注目画素に位置している。しかしながら、副走査方向に対しては重心位置は注目画素に位置していない。したがって、係数の与え方によっては「ドット発生の遅延」等が主走査方向で解消されても副走査方向で解消されないことになる(図14(A)、(B)参照)。
そこで、負の係数を拡散マトリックス241内に与え、かつ、重心位置に注目画素が位置するように係数を配置させることで、主走査及び副走査方向への「ドット発生の遅延」等を解消することができる。
上述した図10(B)の例で考察してみると、この拡散マトリックス241は注目画素内に重心位置242が位置している(本来の重心位置242と実際の重心位置243とが一致する)。したがって入力階調値に忠実なドットを生成させる可能性が高くなる。しかも、注目画素に隣接する画素に多くの係数(その係数の和が1よりも大きい、すなわち誤差値よりも絶対値が大きな値を当該画素に拡散させる)を与えているため、「ドット発生の遅延」等自体を解消させることができる。さらに、本来の誤差値と異なる誤差値を与えないようにするために注目画素から遠くの画素位置に負の係数を与えている。そして、注目画素を含めた(1,0)、(−1,1)、(0,1)、の4つの画素に注目するとその係数は左右対称であり、「ドット発生の遅延」等が主走査方向に発生することはないが、副走査方向へ発生することも考えられる。ここで、(0,2)の画素位置に係数“−0.5”を与えることで重心位置が注目画素に位置することになり、副走査方向への「ドット発生の遅延」等を解消することができる。
本実施例における画像処理装置20の構成及び動作はそれぞれ図1及び図2に示すものと同様である。よって、上述の例と同様に複雑な条件分岐の処理を行うことがないので、処理の速い誤差拡散処理を行うことができる。図10(B)に示す拡散マトリックス241の例は図3(A)に示すマトリックス241と同様である。そのドット発生の過程は上述した図4乃至図7を用いて説明したのでここでは省略する。
図3(D)、(E)に示す拡散マトリックス241も、正負両方の係数を与え、かつ、その重心位置は(0,0)となり、注目画素の重心位置に一致し、上述の効果を得ることができる。
なお、拡散マトリックス241内に負の係数を与える位置によって、主走査方向や副走査方向への「ドット発生の遅延」等の解消、及び注目画素に対して左下方向(図3等に示す主走査方向、副走査方向としたときの左下方向)へ誤差値を残しやすくなる、ことが言える。負の係数を与える拡散マトリックス241は上述の例では3ラインで実現しているが、例えば、図13(B)に示す拡散マトリックス241でもよい。すなわち、注目画素の右方向(主走査方向と副走査方向を図のようにとったときの右方向)の画素に拡散される重み付け誤差の合計が誤差値と同じ値になるよう係数を与えるとともに、注目画素の誤差値と異なる値が誤差として全体に拡散されないよう、かつ、主走査方向で重心位置が注目画素の位置と等しくなるように負の係数を注目画素から右斜め下方向の画素に与えるようする。ただし、かかるマトリックス241では隣接する画素に誤差値よりも絶対値の大きな誤差値を与える作用があるとは限らないが、図面上右方向に誤差値と合計で同じ値の誤差を拡散させるとともに、図面上左下方向に誤差を残すようにすることで「ドット発生の遅延」等の問題を解決するようにしている。
[他の実施例]
図1に示すように本発明にかかる画像処理装置20はハードウェア構成により実現したが、上述した機能をソフトウェアにより実現することもできる。その例を図15に示す。すなわち、画像処理装置20の機能が図15に示すCPU32、ROM33、RAM34により実現される。図2のフローチャートはROM33に格納されたプログラムをCPU32が読み出して実行することで処理が行われる。この例では、2値画像出力装置30の例としてプリンタを用いた場合の例であり、この出力装置30内に画像処理装置20の機能を有することになる。なお、本発明に係る拡散マトリックス241は、ROM33又はRAM34に格納され、CPU32によって処理の際に適宜読み出され処理が行われる。
また、図16に示す階調画像データ出力装置10内に画像処理装置20の機能を有するようにしてもよい。すなわち、この図に示す画像処理部16が本発明に係る画像処理装置20に対応する。この例では、階調画像データ出力装置10がホストコンピュータ12であり、2値画像出力装置30がそのホストコンピュータ12に接続されたプリンタ30の例である。図15及び図16に示すシステムにおいても上述したものと全く同様の作用効果を奏する。
さらに、階調画像データ出力装置10からは256階調(8ビット)の画像データが入力するものとして説明したが、もちろんこれ以外にも128階調(7ビット)、64階調(6ビット)、さらに512階調(9ビット)等であってもよい。また、上述の画像処理装置20内で2値化部22において2値化するとして説明したが、3値、4値等、入力階調値の階調数と同じかそれ以下に階調化するようにしてもよい。この場合、図1の2値化部22が3値、4値等への変換部、又は量子化部として構成される。
さらに、上述した例ではモノクロデータを例にして説明したが、カラーデータに対しても同様の作用効果を奏する。すなわち、図1の階調画像データ出力装置10からは色変換処理後のC(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)の各色ごとの階調データが入力され、それぞれの色の階調値に対して上述した拡散マトリックス241を用いて誤差拡散処理を行えばよい。もちろん、カラーを表現する色成分としてC、M、Y、Kの4色以外にもライトシアン、ライトマゼンダを含めた6色や、さらにそれ以外の色成分を含めた複数色の場合でも同様の効果を得ることができる。
本発明が適用されるシステム全体の構成を示す図である。 画像処理装置20における動作を示すフローチャートである。 拡散マトリックス241の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31等の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31の例を示す図である。 再生出力画像の例を示す図である。 拡散マトリックス241、入力バッファ11、誤差メモリ25の例を示す図である。 拡散マトリックス241、誤差メモリ25の例を示す図である。 拡散マトリックス241、入力バッファ11等の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31の例を示す図である。 入力バッファ11、誤差メモリ25、出力バッファ31の例を示す図である。 再生画像の例を示す図である。 画像処理装置20の他の構成を示す図である。 画像処理装置20の他の構成を示す図である。
符号の説明
10 階調画像データ出力装置、 12 ホストコンピュータ、 20 画像処理装置、 21 加算器、 22 2値化部、 23 減算器、 24 重み付け誤差演算部、 25 誤差メモリ、 30 2値画像出力装置、 241 拡散マトリックス、242 注目画素の重心位置、 243 拡散マトリックス内での係数を考慮した重心位置

Claims (1)

  1. 入力画像データに対して、画素ごとに2種類以上の階調値を有する出力画像データに変換する変換手段と、
    前記変換手段により発生した誤差を、正値と負値の係数からなる拡散マトリックスにより未変換画素に拡散させる誤差拡散手段とを備え、
    前記拡散マトリックスにおいて、注目画素に隣接する画素に拡散させる誤差の係数の合計値は1よりも大きな値であり、
    前記拡散マトリックスは、注目画素に対し主走査方向の画素に配置される係数の合計が1となるように前記係数が配置されるとともに、前記注目画素に対し前記主走査方向でかつ副走査方向に斜め方向に位置する画素に負値の係数が配置されることを特徴とする画像処理装置。
JP2004159064A 2004-05-28 2004-05-28 画像処理装置、画像処理方法、及びプログラム Expired - Fee Related JP4182918B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004159064A JP4182918B2 (ja) 2004-05-28 2004-05-28 画像処理装置、画像処理方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004159064A JP4182918B2 (ja) 2004-05-28 2004-05-28 画像処理装置、画像処理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2005341355A JP2005341355A (ja) 2005-12-08
JP4182918B2 true JP4182918B2 (ja) 2008-11-19

Family

ID=35494384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004159064A Expired - Fee Related JP4182918B2 (ja) 2004-05-28 2004-05-28 画像処理装置、画像処理方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4182918B2 (ja)

Also Published As

Publication number Publication date
JP2005341355A (ja) 2005-12-08

Similar Documents

Publication Publication Date Title
JP4560564B2 (ja) 画像処理装置、画像形成装置、画像処理方法、プログラムおよびその記録媒体
JP2006065834A (ja) 画像処理装置および画像処理方法
JPH11164145A (ja) 画像処理装置
JP6976824B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP3489806B2 (ja) 画像処理装置及び方法
JP6331817B2 (ja) 画像処理装置、画像処理方法、およびプログラム
JPH04286465A (ja) 画像処理装置
JP4068181B2 (ja) マルチレベル階調画素値のレベル数減少方法及びシステム
JP4182918B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2621865B2 (ja) 画像処理装置
JP2005341356A (ja) 画像処理装置、画像処理方法、及びプログラム
JPH11346311A (ja) 階調再現方法
JP4537211B2 (ja) 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム、画像形成装置、およびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2007006271A (ja) 二値化処理を行う画像処理装置及び画像処理プログラム
JP2007006269A (ja) 二値化処理を行う画像処理装置及び画像処理プログラム
JP5458969B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP3679522B2 (ja) 画像処理方法及びその装置
JP5370061B2 (ja) 画像処理装置及び画像処理方法
JP2810396B2 (ja) 画像処理装置
JP2900907B2 (ja) 画像処理装置
JP2851662B2 (ja) 画像処理装置
JP2006005881A (ja) 画像処理装置、画像処理方法、及びプログラム
JP2692838B2 (ja) 画像処理装置
JPH07274017A (ja) 画像処理装置
JP2000287089A (ja) 画像二値化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080212

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080407

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080611

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080723

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080825

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

Free format text: PAYMENT UNTIL: 20110912

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4182918

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120912

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130912

Year of fee payment: 5

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