JPH08228285A - 画像処理方法および画像処理装置 - Google Patents

画像処理方法および画像処理装置

Info

Publication number
JPH08228285A
JPH08228285A JP7032713A JP3271395A JPH08228285A JP H08228285 A JPH08228285 A JP H08228285A JP 7032713 A JP7032713 A JP 7032713A JP 3271395 A JP3271395 A JP 3271395A JP H08228285 A JPH08228285 A JP H08228285A
Authority
JP
Japan
Prior art keywords
block
pixel
scanning direction
line
binarization
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.)
Pending
Application number
JP7032713A
Other languages
English (en)
Inventor
Naoki Kuwata
直樹 鍬田
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 JP7032713A priority Critical patent/JPH08228285A/ja
Publication of JPH08228285A publication Critical patent/JPH08228285A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

(57)【要約】 【目的】 誤差拡散法を用いた2値化処理において生ず
るテクスチャの防止を図る。 【構成】 多階調の画像を入力し、誤差拡散法による2
値化処理を行って、2値画像を出力する画像処理方法に
おいて、2値化処理を行うべくライン内に存在する画素
列を複数のブロックに分割し、2値化処理のための走査
方向を各ブロック毎に任意に設定し、設定された走査方
向に従って、各画素ごとにその画素の画素データを用い
て誤差拡散法による2値化処理を行い、2値化処理にお
いては、2値化処理対象のブロックの走査方向および当
該ブロックにおける2値化処理対象画素の位置に応じた
複数の誤差拡散マトリクスを用意し、前記2値化処理対
象画素の当該ブロックにおける位置と当該ブロックの走
査方向をもとに、誤差拡散マトリクスを選択する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プリンタ・スキャナ・
複写機・ファクシミリ等に適用され、多値画像情報を2
値画像情報に変換する画像処理方法および画像処理装置
に関するものである。
【0002】
【従来の技術】従来、多値画像を2値画像に変換する方
法の一つとして誤差拡散法がある。図16は誤差拡散法
を説明するブロック図である。同図において、画像メモ
リ10から、注目画素の多値データdij を読み込み、
γ補正ROM20を参照して、プリンタ等の出力デバイ
スの特性に合うように入力多値データdij をdij’に
γ補正する。γ補正された多値データdij’は、2値化
処理手段30の加算器31で注目画素に対応する誤差E
ijで補正され、f=dij’+Eijが出力される。
【0003】次に、比較器32で、2値化しきい値Th
と比較され、f≧Thのときは2値信号B=“1”が、
f<Thのときは2値信号B=“0”が出力される。そ
して、2値化による誤差E=f−B’が減算器33で計
算される。ここで、B’は、入力多値データdij が2
56階調(0〜255)の場合、Bに255を乗じた値
になる。したがって、たとえば、2値化しきい値Th=
128であるとすると、f=240ではB=“1”とな
るが、この場合の2値化による誤差Eは、E=240−
1×255となって、2値化による誤差Eは、E=−1
5と求められる。この2値化誤差Eは、重み付け誤差演
算器34で、所定の誤差拡散マトリクスを用いて、今後
処理される画素の位置に誤差配分され、誤差メモリ35
に格納される。すなわち。この場合、f=240を2値
化しきい値Th=128と比較すれば、2値化信号とし
ては“1”なるが、実際には2値化信号の“1”は、2
56階調(0〜255)における255であり、f=2
40はこの255に対して15少ない値(−15)とな
っている。したがって、f=240に対して不足分の1
5を2値化誤差とし、この誤差は重み付け誤差演算器3
4で、誤差拡散マトリクスを用いて、未処理の画素の誤
差メモリ35へ誤差配分して、以降の2値化に反映させ
る。
【0004】誤差拡散マトリクスWxyの例を図17に示
す。図17において、*で示した画素が現在2値化しよ
うとする注目画素で、この注目画素を2値化したときに
生じる誤差を、同図に示した重み(「6」、「3」、
「4」、「3」)で未処理の画素に対して誤差を配分す
る。そして、*で示した注目画素の2値化処理が終了し
て次の画素の2値化処理を行う際は、誤差メモリ35に
格納された誤差配分値(ラスタスキャン法の場合は、次
に処理される画素は、*で示した注目画素の右隣である
ので、この場合は誤差配分値「(ー15)x6/1
6」)を読み出して、この誤差配分値を用いて画像メモ
リ10から読み出された次の入力値に対して補正を行
う。
【0005】このように誤差拡散法は、ある画素の2値
化処理が終わったら、その2値化処理に対して生じた誤
差を、以降に処理する画素に配分することで全体的な誤
差を少なくするという方法である。
【0006】
【発明が解決しようとする課題】ところで、誤差拡散法
における画素の2値化の処理は、一般的に、図18に示
すように、1ラインごとに左側から右側に主走査方向に
沿って処理を行い、1ライン終了後、副走査方向に1ラ
イン移動して、そのラインを左側から右側に主走査方向
に沿って2値化処理するという動作を繰り返し行う。
【0007】このように、画素の2値化処理を、左から
右へ、上から下へと常に同じ方向に規則的に繰り返して
行っていくと、誤差拡散法の特性から、規則的な鎖状の
テクスチャといわれている視覚的に不快なパターンが発
生することが知られいる。
【0008】このような不快なパターンの発生を押さえ
るには、走査に規則性をなくすことで解決できることか
ら、従来より、乱数発生器やカウンタを用いて、ライン
単位で主走査方向を左から右へあるいは右から左へと切
り替えて行く方法(特開平3−151762)や、周期
的またはランダムに主走査方向を左から右へあるいは右
から左へと切り替えて行く方法(特開平4−3725
6)が従来より提案されている。
【0009】このように、これら従来の方法は、たとえ
ば、1番目のラインは左から右へと走査し、次のライン
は、右から左へと走査、あるいは、一番目のラインと2
番目のラインは、右方向へ、3番目のラインは左方向
へ、さらに、4番目から6番目のラインは右方向へとい
うように、任意のライン数ごとに走査方向を変えるよう
にすることで、テクスチャの発生を少しでも緩和しよう
とするものである。
【0010】しかしながら、これらの従来の方法は、い
ずれもライン単位で走査方向を切り替える方法である。
したがって、ある1つのラインで考えれば、そのライン
の中では走査方向は一定であるので、走査の規則性をな
くすという点ではまだ不十分であり、テクスチャを確実
に除去することはできなかった。
【0011】本発明は、以上のような問題点を解決する
ためのもので、2値化処理を行うべくライン内に存在す
る画素列を複数のブロックに分割し、それぞれのブロッ
ク内に存在する画素を2値化するための走査方向を各ブ
ロック単位で任意に設定し、設定された走査方向に従っ
た順番で2値化処理を行うことにより、テクスチャの発
生を確実に防止して、高品質な2値画像を得られるよう
にすることを目的としている。
【0012】
【課題を解決するための手段】本発明による画像処理方
法は、多階調の画像を入力し、誤差拡散法による2値化
処理を行って、2値画像を出力する画像処理方法におい
て、2値化処理を行うべくライン内に存在する画素列を
複数のブロックに分割し、それぞれのブロック内に存在
する画素を2値化処理するための走査方向をブロック単
位で任意に設定し、設定された走査方向に従った順番
で、各画素ごとにその画素の画素データを用いて誤差拡
散法による2値化処理を行う。
【0013】そして、前記各ブロック単位ごとの走査方
向は、周期的もしくは予め定められたパターンに従って
切り替える。または、ランダムに切り替えられるように
する。
【0014】また、前記2値化処理を行うべくライン内
に存在する画素列を複数のブロックに分割する際は、各
ブロックに含まれる画素数が均等になるように分割す
る。または、少なくとも隣接するライン同志において
は、各ライン毎に最初のブロックに含まれる画素数が異
なるように分割するか、各ラインごとにブロック分割数
が異なるように分割する。さらには、各ラインにおける
各ブロックに含まれる画素数が任意となるように分割す
るようにしてもよい。
【0015】また、本発明の画像処理方法は、多階調の
画像を入力し、誤差拡散法による2値化処理を行って、
2値画像を出力する画像処理方法において、2値化処理
を行うべくライン内に存在する画素列を複数のブロック
に分割し、それぞれのブロック内に存在する画素を2値
化処理するための走査方向を各ブロック単位で任意に設
定し、設定された走査方向に従った順番で、各画素ごと
にその画素の画素データを用いて誤差拡散法による2値
化処理を行い、前記誤差拡散法による2値化処理におい
ては、2値化処理対象のブロックの走査方向および当該
ブロック内の2値化処理対象画素の位置に応じた複数の
誤差拡散マトリクスを用意し、前記2値化処理対象画素
の当該ブロックにおける位置と当該ブロックの走査方向
をもとに、誤差拡散マトリクスを選択する。
【0016】また、本発明の画像処理装置は、多階調の
画像を入力し、誤差拡散法による2値化処理を行って、
2値画像を出力する画像処理装置において、2値化処理
を行うべくライン内に存在する画素列を複数のブロック
に分割するブロック分割手段と、2値化処理を行うため
の走査方向をブロック単位で任意に設定するための信号
を出力する走査方向発生手段と、前記ブロック分割手段
から出力される各ブロックごとの画素数情報を受けて2
値化処理対象ブロック内の1つの画素が2値化処理され
るごとにカウントアップするブロック内画素カウント手
段と、このブロック内画素カウント手段から出力される
2値化処理対象ブロック内の画素カウント終了信号を受
けて、2値化処理対象ブロックであることを示すブロッ
クカウント信号を出力するブロックカウント手段と、前
記ブロック分割手段からの処理対象ブロック内画素数情
報、走査方向発生手段からの当該ブロックの走査方向情
報、ブロック内画素カウント手段からの画素カウント情
報、ブロックカウント手段からの処理対象ブロック情報
をもとに、2値化処理対象の画素を指定する2値化処理
対象画素指定信号を出力する読み出し制御手段と、多階
調の画素データを蓄え、読み出し制御手段からの2値化
処理対象画素指定信号を受けて、対応する画素の画素デ
ータを出力する画像メモリと、この画像メモリからの画
素データを出力デバイスの特性に合うように補正する補
正手段と、この補正手段により補正された画素データを
入力し、その画素データを用いて誤差拡散法による2値
化処理を行う2値化処理手段とを有している。
【0017】そして、前記走査方向発生手段は、各ブロ
ックにおける走査方向を周期的もしくは予め定められた
パターンに従って切り替える信号、または、各ブロック
における走査方向をランダムに切り替える信号を出力す
る。
【0018】また、前記ブロック分割手段は、各ブロッ
クに含まれる画素数が均等になるように、2値化処理対
象ラインに存在する画素列を分割する。または、少なく
とも隣接するラインにおいては、各ライン毎に最初のブ
ロックに含まれる画素数が異なるように、または、各ラ
インごとにブロック分割数が異なるように、2値化処理
対象ラインに存在する画素列を分割するようにする。さ
らには、各ラインにおける各ブロックに含まれる画素数
が各ブロックごとに任意となるように、2値化処理対象
ラインに存在する画素列を分割するようにしてもよい。
【0019】また、本発明の画像処理装置は、多階調の
画像を入力し、誤差拡散法による2値化処理を行って、
2値画像を出力する画像処理装置において、2値化処理
を行うべくライン内に存在する画素列を複数のブロック
に分割するブロック分割手段と、2値化処理を行うため
の走査方向をブロック単位で任意に設定するための信号
を出力する走査方向発生手段と、前記ブロック分割手段
から出力される各ブロックごとの画素数情報を受けて2
値化処理対象ブロック内の1つの画素が2値化処理され
るごとにカウントアップするブロック内画素カウント手
段と、このブロック内画素カウント手段から出力される
2値化処理対象ブロック内の画素カウント終了信号を受
けて、2値化処理対象ブロックであることを示すブロッ
クカウント信号を出力するブロックカウント手段と、前
記ブロック分割手段からの処理対象ブロック内画素数情
報、走査方向発生手段からの当該ブロックの走査方向情
報、ブロック内画素カウント手段からの画素カウント情
報、ブロックカウント手段からの処理対象ブロック情報
をもとに、2値化処理対象の画素を指定する2値化処理
対象画素指定信号を出力する読み出し制御手段と、多階
調の画素データを蓄え、読み出し制御手段からの2値化
処理対象画素指定信号を受けて、対応する画素の画素デ
ータを出力する画像メモリと、この画像メモリからの画
素データを出力デバイスの特性に合うように補正する補
正手段と、この補正手段により補正された画素データを
入力し、その画素データを用いて誤差拡散法による2値
化処理を行う2値化処理手段と、2値化処理対象ブロッ
クの走査方向および当該ブロックにおける2値化処理対
象画素の位置に応じた複数の誤差拡散マトリクスを用意
し、前記2値化処理方向設定手段およびブロック内画素
カウント手段からの信号を受けて、前記2値化処理対象
画素の当該ブロックにおける位置と当該ブロックの走査
方向をもとに、誤差拡散マトリクスを選択して出力する
マトリクス切替手段とを有している。
【0020】
【作用】本発明は、2値化処理を行うべくライン内に存
在する画素列を複数のブロックに分割し、2値化処理を
行うための走査方向をブロック単位で任意に設定し、設
定された走査方向に従って、各画素ごとにその画素の画
素データを用いて誤差拡散法による2値化処理を行う。
【0021】このように、本発明では、2値化処理を行
うための走査方向は、ある1つのラインにおいて、各ブ
ロック単位で変えているので、1ラインづつ、左から右
へというように、常に決まった規則正しい走査方向でな
くなるため、テクスチャの発生を確実に防止することが
できる。
【0022】そして、2値化処理を行う際は、2値化処
理対象のブロックの走査方向および当該ブロックにおけ
る2値化処理対象画素の位置に応じた複数の誤差拡散マ
トリクスを用意し、前記2値化処理対象画素の当該ブロ
ックにおける位置と当該ブロックの走査方向をもとに、
誤差拡散マトリクスを選択して、選択された誤差拡散マ
トリクスを用いて誤差配分値を決定するようにしてい
る。たとえば、現在処理中の画素の両隣の画素が共に未
処理であることが検出されると、それに対応した誤差拡
散マトリクスが選択され、この誤差拡散マトリクスをも
とにして、未処理の画素に配分する誤差を求め、今後処
理される画素の位置に、その誤差を配分し、また、たと
えば、現在処理中の画素の右隣の画素が未処理であるこ
とが検出されると、それに対応した誤差拡散マトリクス
が選択され、この誤差拡散マトリクスをもとにして、未
処理の画素に配分する誤差を求めて今後処理される画素
の位置に、その誤差を配分するというように、2値化処
理を行おうとする画素に隣接する画素が2値化処理をす
でに終了したかどうかを判断して、それに応じた誤差拡
散マトリクスを選択している。
【0023】これにより、各ブロックにおける2値化処
理を行うための走査方向に関係なく、未処理画素に確実
に誤差を配分できるので、原画に忠実な画像の再現が可
能となる。
【0024】
【実施例】本発明は、1つのラインを複数のブロックに
分割し、2値化処理を行うための走査方向を各ブロック
単位で変えて、2値化処理する画像処理方法および画像
処理装置についての発明である。以下、各実施例ごとに
詳細に説明する。
【0025】(実施例1)図1は本発明を実現するため
のブロック図であり、画像メモリ10、γ補正手段とし
てのγ補正ROM20、2値化処理手段30は、前記従
来技術の項の説明で用いた図16と同じであり、この図
1では、さらに、2値化処理を行うための走査方向をブ
ロック単位で変えるための手段として、ブロック分割器
41、ブロック内画素カウンタ42、ブロックカウンタ
43、走査方向発生器44、読み出し制御器45が設け
られ、そのほかに、マトリクス切替器50が設けられて
いる。これら、走査方向をブロック単位で変えるための
手段およびマトリクス切替器50については、後に詳細
に説明する。また、前記2値化処理手段30は、図16
と同様に、加算器31、比較器32、減算器33、重み
付け誤差演算器34、誤差メモリ35を有している。
【0026】前記ブロック分割器41は、2値化処理を
行おうとする1つのラインの画素列を幾つかのブロック
に分割するもので、分割した各ブロックに含まれる画素
数情報m(n)を出力する。ここで、nはブロック番
号、mは画素数を示す。したがって、m(n)はn番目
のブロックの画素数はmであるということを示してい
る。なお、どのように分割するかなどについての説明は
後述する。
【0027】ブロック内画素カウンタ42は、2値化処
理対象ブロックに含まれる画素において、1つの画素の
2値化処理が終了するごとにカウントアップし、そのカ
ウント出力(当該ブロックにおいて、現在何番目の画素
が処理されようとしているかを示す情報)を読み出し制
御器45に出力するとともに、マトリクス切り替え器5
0に対して、端点画素であることを示す信号を出力する
(この端点画素についての説明は後述する)。
【0028】ブロックカウンタ43は、前記ブロック内
画素カウンタ42からの出力信号(ある1つのブロック
に含まれるすべての画素のカウントを終了したときに出
力される信号)を受けるとカウントアップし、そのカウ
ント信号、つまり、2値化処理対象のブロック番号を示
す情報を走査方向発生器44と読み出し制御器45に出
力する。
【0029】走査方向発生器44は、2値化処理対象の
ライン番号情報(j)と、ブロックカウンタ43からの
2値化処理対象のブロック番号情報(n)を受けて、そ
のブロック内における2値化処理を行うための走査方向
を示す信号を前記マトリクス切り替え器50と読み出し
制御器45に出力する。なお、この走査方向発生器44
の機能などについての説明は後述する。
【0030】また、読み出し制御器45は、前記ブロッ
ク分割器41からの処理対象ブロックに存在する画素数
情報m(n)、走査方向設定手段44からの当該ブロック
の2値化処理方向情報、ブロック内画素カウント手段4
2からの2値化処理を行おうとする画素の番号を示す情
報、ブロックカウント手段43からの2値化処理対象ブ
ロック情報をもとに、2値化処理対象の画素を指定する
信号を、画像メモリ10に対して出力する。たとえば、
現在、n番目のブロックが2値化処理対象ブロック(画
素数はm)であって、ブロック内画素カウンタ42が
今、i番目の画素(ここでは、このi番目の画素は当該
ブロック内の左端部に存在しているものとする)を指示
し、さらに、走査方向発生器44からの2値化処理方向
を示す信号が右方向であるとすれば、読み出し制御器4
5は、これらの情報を受けて、画像メモリ10に対し
て、2値化処理画素指定信号として、最初は、画素iを
指定する信号を出力し、次に、この画素iの右隣にある
画素i+1を指定する信号、次に、i+2、i+3、・
・・というように右方向に走査するような信号を出力す
る。
【0031】そして、画像メモリ10は、この読み出し
制御器45からの画素指定信号により指定された画素の
画素データ(多値データ)を読み出し、γ補正手段20
に送出する。
【0032】ところで、前記ブロック分割器41は、た
とえば、図2に示すように、2値化しようとするライン
(これをこの図では、jラインとする)を、同図の如
く、たとえば第(n−1)ブロック、第nブロック、第
(n+1)ブロックというように、複数のブロックに分
割する。なお、この実施例1では、1つのブロック内の
画素数が均等になるように、1ラインの画素列を分割
し、各ブロックの処理順は、図2において、左右いずれ
かの一定方向(ここでは、左から右方向、つまり、第
(n−1)ブロック、第nブロック、第(n+1)ブロ
ックという順)とする。そして、ここでは、jラインが
2値化処理対象ラインであって、そのjラインにおける
第nブロックが2値化処理対象ブロックであり、i番目
の画素が2値化処理対象画素であることを示している。
ただし、i番目の画素は、第nブロックの中のi番目と
いう意味ではなく、当該ライン全体の画素列の中のi番
目であることを示している。
【0033】図3は実施例1におけるブロック分割例
と、それぞれのブロックにおける走査方向(2値化処理
方向)設定例を示すものである。実施例1においては、
前記したように各ブロックの内の画素数が均等になるよ
うにブロック分割している。そして、それぞれのブロッ
クにおける2値化処理のための走査方向dirは、前記走
査方向発生器44からの出力dirが、dir=“0”では
左から右への走査方向、dir=“1”では右から左への
走査方向であるものとする。
【0034】図3(a)の場合は、走査方向dirをdir
=n%2(nはブロック番号)で決定し、図3(b)の
場合は、走査方向dirをdir=(n+j)%2(nはブ
ロック番号、jはライン番号)で決定する例、図3
(c)は同図(a)、(b)よりさらに複雑に走査方向
を切り替えた例である。ここで、n%2というのは、n
を2で割ったときの余りの数値を表すもので、dir=n
%2、dir=(n+j)%2の場合は、dirは0か1の
値をとる。たとえば、dir=n%2の場合は、ブロック
番号nが2のときは、余りは0、つまり、dir=“0”
であり、走査方向は左から右方向となり、また、ブロッ
ク番号nが3のときは、余りは1、つまり、dir=
“1”であり、走査方向は右から左方向となる。図3
(a)には、このように、ブロック番号のみによって、
走査方向を切り替えた例が示されている。図3における
矢印は、各ブロックにおける2値化処理のための走査方
向を示している。この図3(a)の例では、dir=n%
2によって求めているため、当該ラインにおいて、各ブ
ロックごとに交互に走査方向が切り替わるが、各ライン
((j−1)ライン、jライン、(j+1)ライン)で
みると、同じブロック番号のところは同じ走査方向とな
る(ブロック番号が偶数のときはdir=“0”、奇数の
ときはdir=“1”)。
【0035】また、図3(b)は、ブロック番号にライ
ン番号を加味して走査方向を切り替える例である。この
例では、走査方向dirをdir=(n+j)%2によって
求めているため、たとえば、ブロック番号nが2、ライ
ン番号が1の場合は、余りは1、つまり、dir=“1”
であり、走査方向は右から左方向となり、また、ブロッ
ク番号nが3、ライン番号が1の場合は、余りは0、つ
まり、dir=“0”であり、走査方向は左から右方向と
なる。さらに、たとえば、ブロック番号nが2、ライン
番号が2の場合は、余りは0、つまり、dir=“0”で
あり、走査方向は左から右方向となり、また、ブロック
番号nが3、ライン番号が2の場合は、余りは1、つま
り、dir=“1”であり、走査方向は右から左方向とな
る。図3(b)の例では、dir=(n+j)%2によっ
て求めているため、当該ラインにおいて、各ブロックご
とに交互に走査方向が切り替わるとともに、各ライン
((j−1)ライン、jライン、(j+1)ライン)で
みると、同じブロック番号のところは走査方向は交互に
異なる。
【0036】また、図3(c)は、各ラインと各ブロッ
クごとの走査方向のパターンをROMなどにあらかじめ
設定しておく例である。そして、この設定したパターン
に従って走査方向を決定する。この図3(c)の例で
は、たとえば、(j−1)ラインでは、2つのブロック
が左から右への走査方向でその次の1つのブロックは右
から左への方向、その次の2つのブロックは、再び、左
から右への走査方向、そして、次のライン(jライン)
は(j−1)ラインとは逆方向の走査方向となるような
走査方向のパターンが設定されている。
【0037】以上のような各ブロックにおける走査方向
の設定は、図1で示した走査方向発生器44により行わ
れる。走査方向発生器44は、前記したように、処理対
象のブロック番号nおよび処理対象のライン番号jを入
力として、ブロック内での画素の走査方向dirをマトリ
クス切替器50と読み出し制御器45に送信するもの
で、図4に示すように、ブロック番号n(もしくは、n
%xで求まる整数。ここで、xは整数)およびライン番
号j(もしくは、j%yで求まる整数。ここで、yは整
数)を入力とするデコーダで、出力は、dir=“0”も
しくはdir=“1”である。このデコーダは、図4に示
したようなROMで形成しても良いし、組み合わせ回路
で構成しても良い。図3(a)の例では、ライン番号j
は必要なく、ブロック番号nのみの入力で、x=2とし
たときに該当する。一方、図3(b)および(c)で
は、ブロック番号nとライン番号jを入力とし、同図
(b)はx=y=2、同図(c)はx=3、y=2とし
たときに該当する。
【0038】マトリクス切替器50は、この走査方向発
生器44で決定された走査方向および前記ブロック内画
素カウンタ42からの画素カウント出力(端点画素情
報)を参照してそれに対応した誤差拡散マトリクスを選
択して、選択した誤差拡散マトリクスを重み付け誤差演
算器34に出力する。なお、マトリクス切替器50が参
照する画素カウント出力は、ここでは、ある1つのブロ
ック内において、そのブロックに存在する画素が、その
ブロックの端部(左端または右端)に位置している画素
であるか、端部以外の位置の画素であるかを示す画素位
置を示す信号である。つまり、図5に示すように、ある
1つのブロック(第n番目のブロック)内の画素数をm
とし、そのブロックの左端点Lに位置する画素のカウン
ト信号を左端点画素信号として受け、そのブロックの右
端点Rに位置する画素のカウント信号を右端点画素信号
として受ける。なお、左端点画素信号あるいは右端点画
素信号のいずれでも入力されないときは、左端点Lと右
端点Rの間(中間Mという)に位置する画素であるとの
判断を行う。
【0039】マトリクス切替器50は、このような端点
画素情報(左端点画素信号または右端点画素信号)と、
前記走査方向発生器44からのそのブロックの走査方向
を示す信号を受けると、図6に示すようなマトリクス切
替テーブルを参照して、図7(a)〜(d)のいずれか
の誤差拡散マトリクスを選択して、重み付け誤差演算器
34に出力する。
【0040】図7はあらかじめ用意された誤差拡散マト
リクスの一例を示すもので、図7において、*印が現在
処理中の画素であり、各矩形内の数値は誤差配分の一例
を示す数値である。同図(a)の誤差拡散マトリクスW
xy(1)は、現在処理中の画素の両隣の画素が未処理と
判定された場合に選択される誤差拡散マトリクス例、同
図(b)の誤差拡散マトリクスWxy(2)は、現在処理
中の画素の右隣の画素が未処理と判定された場合に選択
される誤差拡散マトリクス例、同図(c)の誤差拡散マ
トリクスWxy(3)は、現在処理中の画素の左隣の画素
が未処理と判定された場合に選択される誤差拡散マトリ
クス例、同図(d)の誤差拡散マトリクスWxy(4)
は、現在処理中の画素の左右両隣の画素が共に処理済み
と判定された場合に選択される誤差拡散マトリクス例を
示している。
【0041】以下、前記マトリクス切替器50の動作に
ついてを、図5、図6および図7を参照しながら説明す
る。
【0042】たとえば、走査方向発生器44から出力さ
れる走査方向情報がdir=“0”(左から右への走査方
向)の場合は、図5において、たとえば、第nブロック
における画素の位置が左端点Lであるとすると、図7
(b)に示す誤差拡散マトリクスWxy(2)を選択し、
画素の位置が中間Mである場合も同じく誤差拡散マトリ
クスWxy(2)を選択し、画素の位置が右端点Rである
場合も同じく誤差拡散マトリクスWxy(2)を選択す
る。つまり、あるブロックにおいて、走査方向が左から
右方向(dir=“0”)の場合は、そのブロック内の画
素に対しては、画素位置に関係なく、画素がどの位置に
あっても、誤差拡散マトリクスWxy(2)を選択し、こ
の誤差拡散マトリクスWxy(2)を用いて誤差配分を行
う。これは、ブロック単位での2値化処理順を考えれ
ば、この場合、左から右方向、つまり、図5を例に取る
と、第(n−1)ブロック、第nブロック、第(n+
1)ブロックという処理順であるため、第(n−1)以
前のブロックは、すでに2値化処理が終了していること
になり、未処理の画素のみに対して誤差配分するという
前提から考えれば、この場合は、誤差拡散マトリクスW
xy(2)のみだけでよい。
【0043】一方、走査方向が右から左方向(dir=
“1”)の場合は、画素の位置が、図5に示すように、
たとえば、第nブロックにおいて左端点Lである場合
は、図7(d)に示す誤差拡散マトリクスWxy(4)を
選択し、画素の位置が中間Mである場合は、図7(c)
に示す誤差拡散マトリクスWxy(3)を選択し、画素の
位置が右端点Rである場合は、図7(a)に示す誤差拡
散マトリクスWxy(1)を選択する。このように、ある
ブロック内において、右から左への走査方向では、中間
Mに存在する画素は、右隣の画素はすでに2値化処理が
終了していることになるため、図7(c)に示す誤差拡
散マトリクスWxy(3)を選択すればよいことになる。
また、左端点Lに位置する画素は、右隣の画素はすでに
2値化処理済みであり、左側の画素も処理済かあるいは
第1番目のブロックの場合はそのラインの右側には画素
が無いため、両隣には誤差配分する必要がなく、図7
(d)に示す誤差拡散マトリクスWxy(4)を選択す
る。また、右端点Rに位置する画素は、両隣の画素はま
だ2値化処理が終了して無いと判断され、図7(a)に
示す誤差拡散マトリクスWxy(1)を選択することにな
る。
【0044】次に、この実施例1の全体の処理を図8の
フローチャートを参照しながら説明する。図8におい
て、まず、現在2値化処理を行おうとするラインの1ラ
イン分の入力多値画素データdijを画像メモリ10に用
意する(ステップs101)。ここで、入力多値画素デ
ータdijのiは、図18に示すように、主走査方向にお
ける画素の番号を示し、ある1つのライン中の画素数を
n個とすれば、i=0,1,2,・・・,n−1であ
り、jはラインの番号を示している。つまり、dijはj
番目のラインにおける画素データであることを示してい
る。次に、その2値化処理を行おうとするラインの1ラ
イン分の誤差データEijを用意する(ステップs10
2)。次に、1つのラインを複数のブロックに分割す
る。なお、この実施例1では、各ブロック内の画素数が
均等になるようにブロック分割する。
【0045】そして、走査方向発生器44はブロックカ
ウンタ43からの2値化処理対象のブロック番号nと必
要に応じてライン番号jをもとに前記したように、各ブ
ロックの走査方向を示す情報dir(“0”または
“1”)を出力する(ステップs104)。次に、画像
メモリは10および誤差メモリ35は、読み出し制御器
45から出力される2値化処理対象画素指定信号を受け
て、対応する画素の画素データ(多値画素データdij、
誤差データEij)を読み出す。この読み出し制御器45
からは、ブロック分割器41から出力されるブロック内
の画素数情報、つまり、あるブロックnにはそのブロッ
ク内に幾つの画素が存在するかの情報m(n)、ブロッ
ク内画素カウンタ42からのカウント信号(2値化処理
を行おうとする画素番号)、ブロックカウンタ43から
の2値化処理対象のブロック番号n、および走査方向発
生器44からの2値化処理方向信号dirをもとに、2値
化処理対象画素指定信号iが出力される。
【0046】そして、画像メモリ10からは、前記2値
化処理対象画素指定信号iに対応した画素の多値画素デ
ータdijが読み出され、プリンタなどの出力デバイスの
特性に合わせてγ補正される(ステップs105)。な
お、γ補正は、1ライン分の画素データを入力する(ス
テップs101)以前に、1ライン分の画素すべてに対
して行っておいてもよい。次に、γ補正された入力濃度
データdij’と対応する誤差データEijを加えて、誤差
補正データfを生成し(ステップs106)、この誤差
補正されたデータfを、2値化しきい値Thと比較す
る。そして、f≧Thのときは、2値化出力B=“1”
を、f<Thのときは、2値化出力B=“0”を出力す
る(ステップs107)。そして、2値化による誤差E
=f−B’が減算器33で計算される。ここで、B’は
前記したように、入力多値データdijが256階調(0
〜255)の場合、Bに255を乗じた値になる。した
がって、たとえば、2値化しきい値Th=128である
とすると、f=240ではB=1となるが、この場合の
2値化による誤差Eは、E=240−1×255となっ
て、2値化による誤差Eは、E=−15と求められる。
なお、2値化しきい値Thは、入力濃度データが256
階調の場合は、たとえばTh=128というようなの固
定値でも良いが、128のまわりで周期的に変動させて
も、あるいは入力濃度データの値に応じて変動させても
良い。
【0047】次に、現在処理中の画素の両隣の画素の2
値化処理がすでに終了しているかどうか、2値化処理方
向およびその画素が端点画素であるか中間画素であるか
どうかを判断して(ステップs108)、誤差拡散マト
リクスを切り替える。
【0048】すなわち、前記したように、マトリクス切
替器50は、図6に示すようなマトリクス切替テーブル
を参照して、図7(a)〜(d)のいずれかの誤差拡散
マトリクスを選択して、重み付け誤差演算器34に出力
する。
【0049】たとえば、走査方向が左から右方向(dir
=“0”)の場合は、画素の位置が、図5に示すよう
に、たとえば、第nブロックにおいて左端点Lである場
合は、図7(b)に示す誤差拡散マトリクスWxy(2)
を選択し、画素の位置が中間Mである場合も同じく誤差
拡散マトリクスWxy(2)を選択し、画素の位置が右端
点Rである場合も同じく誤差拡散マトリクスWxy(2)
を選択する。一方、走査方向が右から左方向(dir=
“1”)の場合は、画素の位置が、図5に示すように、
たとえば、第nブロックにおいて左端点Lである場合
は、図7(d)に示す誤差拡散マトリクスWxy(4)を
選択し、画素の位置が中間Mである場合は、図7(c)
に示す誤差拡散マトリクスWxy(3)を選択し、画素の
位置が右端点Rである場合は、図7(a)に示す誤差拡
散マトリクスWxy(1)を選択する。このように、ある
ブロック内において、右から左への走査方向では、中間
Mに存在する画素は、右隣の画素はすでに2値化処理が
終了していることになるため、図7(c)に示す誤差拡
散マトリクスWxy(3)を選択することになる。また、
左端点Lに位置する画素は、右隣の画素はすでに2値化
処理済みであり、左側の画素も処理済かあるいは第1番
目のブロックの場合はそのラインには画素が無いため、
両隣には誤差配分する必要がなく、図7(d)に示す誤
差拡散マトリクスWxy(4)を選択する。また、右端点
Rに位置する画素は、両隣の画素はまだ2値化処理が終
了して無いと判断され、図7(a)に示す誤差拡散マト
リクスWxy(1)を選択することになる(ステップs1
09〜s112)。
【0050】なお、本実施例では、ブロックの処理順を
左から右にしているので、図6のようなマトリクス切替
テーブルとなるが、もし、ブロックの処理順を右から左
に処理する場合は、dir=”0”の場合の端点画素に
対して例外処理を施す必要がある。
【0051】再び図8に説明が戻り、ステップs108
〜ステップs112の処理で、走査方向および端点画素
判別の結果に応じた適切な誤差拡散マトリックスWxyが
選択され、この選択された誤差拡散マトリクスを用い
て、未処理の画素に対して誤差配分Ei'j'がなされる
(ステップs113)。
【0052】そして、現在処理中のブロック内の全画素
の処理が終了したかどうか判定し(ステップs11
4)、終了していない場合は、そのブロック内の次の画
素に処理を移し(ステップs115)、ステップs10
5の処理に戻って、前記した処理を行う(ステップs1
05〜ステップs114)。また、当該ブロックの全画
素の処理が終了した場合は、1ライン分の処理が終了し
たかどうかを判定し(ステップs116)、1ラインの
全画素の処理が終了していない場合は、次のブロックに
処理を移して(ステップs117)、ステップ104に
処理が戻って、前記した処理を行う(ステップs104
〜ステップs116)。そして次に、全ラインの処理が
終了したかどうか判定し(ステップs118)、終了し
ていない場合は、次のラインに処理を移し(ステップs
119)、ステップ101に処理が戻って、前記した処
理を行う(ステップs101〜ステップs118)。
【0053】このように、実施例1では、2値化処理対
象のラインを複数のブロックに分割し、分割したブロッ
ク単位で2値化処理方向を設定し、ブロック単位で設定
された走査方向に従って、2値化処理を行うため、2値
化処理順に不規則性を待たせることができ、従来のよう
に、1ラインづつ、規則正しく左から右へというよう
に、常に決まった方向の2値化処理順でなくなるため、
従来より問題となっていたテクスチャの発生を確実に防
止することができる。
【0054】ところで、本発明において、誤差を常に次
のラインにのみ配分することも可能である。この場合、
マトリクスの切替は不要なので、図8においてステップ
s108は必要なく、常に誤差拡散マトリクスWxy
(4)のみを使用すれば良い。同様に、図1において
は、マトリクス切替器50が不要になる。
【0055】(実施例2)前記実施例1では、各ブロッ
クにおける2値化処理方向を、ある一定のパターンで変
化させる例(図3参照)で説明したが、この実施例2
は、2値化処理順の不規則性をより強くするようにした
ものである。
【0056】まず、“0”と“1”の乱数発生器を用い
た例について説明する。図9は“0”と“1”の乱数発
生器を用いた場合の構成を説明するブロック図であり、
図1と同一部分には同一符号が付されている。この場合
の乱数発生器60は、ライン番号やブロック番号などの
情報には関係なく、“0”か“1”を乱数的に発生する
ものであるため、ライン番号やブロック番号を入力とし
ない点が図1と異なっている。その他は図1と同じであ
る。
【0057】このような構成において、乱数発生器60
からは、走査方向dirを示す“0”、“1”をランダム
に発生し、たとえば、図10に示すように、各ラインに
おける各ブロックの走査方向をランダムなものとする。
このようにランダムに出力されたdir=“0”またはd
ir=“1”は、読み出し制御器45およびマトリクス切
替器50に送られ、以降は前記実施例1で説明したと同
様の処理がなされる。すなわち、図8のフローチャート
において、ステップs104の走査方向決定処理を、こ
こでは、乱数発生器60を用いて、図10に示すような
ランダムな2値化処理方向を得るという点が異なるだけ
で、他の処理は実施例1と同じである。したがって、説
明の重複を避けるため、ここでは、全体の処理について
の説明は省略する。
【0058】また、dir=“0”またはdir=”1”を
ランダムに生成する他の方法としては、ブロック内のあ
る位置(例えば左端点L)の画素の濃度値dによって変
える方法もある。たとえば、ブロック内の左端点に位置
する画素の濃度値dを2値化しきい値Thと比較して、
d≧Thであれば、dir=“0”とし、また、d<T
hであれば、dir=“1”とするというようにしても
よい。これを実現するための手段としては、たとえば、
図1で示した構成において、画像メモリ10からのあら
かじめ設定した画素の濃度値データdを走査方向発生器
44に入力し、その濃度値によって“0”または”1”
を出力することによって可能となる。この構成を示すブ
ロック図を図11に示す。図11が図1と異なるのは、
走査方向発生器44に画像メモリ10からの濃度値信号
を入力して濃度値に応じて、“0”または”1”を発生
させるようにした点が異なり、この場合も、ライン番号
やブロック番号を入力する必要はない。その他は図1と
同じである。また、処理も図8のフローチャートにおい
て、ステップs104の走査方向の決定の仕方が異なる
だけで他の処理は実施例1と同じである。
【0059】また、dir=“0”またはdir=”1”を
ランダムに生成する他の方法としては、ブロック内のあ
る位置(例えば左端点L)の画素の誤差Eによって変え
る方法もある。たとえば、ブロック内の左端点に位置す
る画素の誤差値Eがプラスかマイナスかを判断して、E
≧0(プラス)であれば、dir=“0”とし、また、
E<0(マイナス)であれば、dir=“1”とすると
いうようにしてもよい。これを実現するための手段とし
ては、たとえば、図1で示した構成において、誤差メモ
リ35からのあらかじめ設定した画素の誤差データEを
走査方向発生器44に入力し、その誤差値によって
“0”または”1”を出力することもできる。この構成
を示すブロック図を図12に示す。図12が図1と異な
るのは、走査方向発生器44に誤差メモリ35からの誤
差信号を入力して、誤差値に応じて“0”または”1”
を発生させるようにした点が異なり、この場合も、ライ
ン番号やブロック番号を入力する必要はない。その他は
図1と同じである。また、処理も図8のフローチャート
において、ステップs104の走査方向の決定の仕方が
異なるだけで他の処理は実施例1と同じである。
【0060】以上のように、この実施例2では、各ブロ
ックにおける2値化処理方向の不規則性がきわめて強い
ものとなり、テクスチャの発生を抑制する効果がより強
くなる。
【0061】(実施例3)前記実施例1(実施例2も含
む)においては、各ラインにおけるブロックの分割は、
各ラインにおいて同一に分割する例、すなわち、図3か
らもわかるように各ラインにおけるブロック分割は、そ
れぞれのラインの始点から均等にブロック分割した例で
説明したが、この実施例3では、実施例1とは異なるブ
ロックの分割の仕方の例について、以下の(イ)、
(ロ)、(ハ)で説明する。
【0062】(イ) 各ラインの第1ブロックのみの画
素数off(j)を変化させる。ただし、第2ブロック以降
の画素数は、mで一定とする。また、このとき、1≦of
f(j)≦mとする。このようにしてブロック分割した例を
図13(a)に示す。この図13(a)からもわかるよ
うに、たとえば、(j−1)ライン、jライン、(j+
1)ラインの3つのラインを例に取れば、それぞれのラ
インの第1ブロックのみは、他のブロックよりも画素数
が少なくなるように分割し、第2ブロック以降は、それ
ぞれm画素づつ均等分割する。また、各ラインのそれぞ
れの第1ブロックの画素数off(j−1)、off(j)、off(j
+1)は、各ラインによって異なるようにしておく。
【0063】これを実現するためには、実施例1の説明
で用いた図1において、ブロック分割器41に、各ライ
ンにおけるそれぞれの第1ブロックの画素数off(j)の値
とmの値をあらかじめ設定しておき、ライン番号j
(0,1,2,・・・)を入力して、このライン番号を
アドレスとして、対応するラインの第1ブロックの画素
数off(j)の値とmの値を読み出して、これによって分割
を行えばよい。また、図13(b)は、1ライン毎に第
1ブロックの画素数を、均等分割したときの画素数mも
しくは、m/2にした場合の例である。この図13
(b)は、(j−1)ラインは、第1ブロックのみを画
素数m/2、第2ブロック以降をすべて画素数mとし、
jラインは、すべてのブロックを画素数mで分割し、
(j+1)ラインは(j−1)ラインと同様、第1ブロ
ックのみを画素数m/2、第2ブロック以降をすべて画
素数mとした例を示している。この図13(b)の場合
は、j%y(yは整数)により各ラインの第1ブロック
の画素数を決定するようにしたものである。たとえば、
j%yにおいて、y=2とすれば、j%2で得られる値
は、0か1であり、j%2で得られる値が0のときは、
第1ブロックの画素数off(j)をmとし、j%2で得られ
る値が1のときは、第1ブロックの画素数off(j)をm/
2とする。つまり、この場合は、1ライン目(ライン番
号j=0)の第1ブロックの画素数off(1)がm、2ラ
イン目の第1ブロックの画素数off(2)がm/2、3ラ
イン目の第1ブロックの画素数off(3)がmというよう
に、第1ブロックの画素数が1ラインごとに交互にmま
たはm/2となる。したがって、yの値を変えることに
よって、繰り返しの周期を変えることができる。
【0064】このようなブロック分割とすることによ
り、各ブロックの境界が上下に隣接するライン同志で一
致しないため、テクスチャの発生を抑制する効果がより
大きくなる。
【0065】(ロ) 各ラインのブロック分割数n
(j)を変化させる。すなわち、各ラインにおいて、n
等分する際のnの値を変化させることによって分割され
るブロック数を異ならせている。ただし、1ライン中の
全画素数をMとしたとき、ブロック分割数n(j)は、
2≦n(j)≦M/2とする。
【0066】図14(a)はこのように、各ラインのブ
ロック分割数n(j)を変化させて、ブロック分割した
例を示すもので、それぞれのラインごとにn等分する際
のnの値を変化させることによって分割されるブロック
数を異ならせている例であり、同図からも明らかなよう
に、各ラインごとにブロック数が異なっている。これを
実現するためには、実施例1の説明で用いた図1におい
て、たとえば、ブロック分割器41に、1つのラインに
おける等分数nをあらかじめ設定しておき、ライン番号
j(0,1,2,・・・)を入力して、このライン番号
をアドレスとして、対応するラインにおける等分数nの
値を読み出して、これによって分割すればよい。
【0067】また、同図(b)は、j%y(yは整数)
により各ラインの第1ブロックの画素数を決定するよう
にした例であり、同図では、j%yにおいて、y=2と
した場合であり、j%2で得られる値は、0か1であ
る。そこで、j%2で得られる値が0のときは、1つの
ラインをn1等分し、j%2で得られる値が1のとき
は、1つのラインをn2等分するというように設定して
おく。このような設定とすることにより、この場合は、
1ライン目(ライン番号j=0)は、そのラインをn1
等分し、2ライン目(ライン番号1)は、そのラインを
n2等分し、3ライン目(ライン番号j=2)は、その
ラインを1ライン目と同様、n1等分するというよう
に、1ラインごとに交互にn1等分とn2等分となる。
したがって、yの値を変えることによって、繰り返しの
周期を変えることができる。なお、このとき、上下に隣
接するライン同志でブロックの境界が揃わないように、
等分する際のnの値を選ぶ方が良い結果を生じる。
【0068】このようなブロック分割とすることによ
り、各ブロックに含まれる画素数がライン毎に異なり、
また、各ブロックの境界が上下に隣接するライン同志で
一致しないため、テクスチャの発生を抑制する効果がよ
り大きくなる。
【0069】(ハ) 1つのライン中における各ブロッ
クに含まれる画素数m(n)を変化させる。すなわち、
ある1つのラインにおいて、各ブロック(ブロック番号
n=0,1,2,・・・)ごとに、それぞれのブロック
に含まれる画素数mを任意に設定する。なお、このと
き、1ラインの全ブロック数をN、全画素数をMとした
とき、2≦m(n)≦M/2および、Σm(n)=Mを
満たす必要がある。
【0070】図15(a)は、このように、ある1つの
ライン(jライン)において、各ブロック(ブロック番
号n=0,1,2,・・・)ごとに、それぞれのブロッ
クに含まれる画素数mを任意に設定する例を示したもの
である。これを実現するためには、実施例1の説明で用
いた図1において、ブロック分割器41に、たとえば、
各ラインごとに、各ブロックに含まれる画素数m(n)
をあらかじめ設定しておき、ライン番号j(0,1,
2,・・・)を入力して、このライン番号をアドレスと
して、対応するラインにおける各ブロックの画素数m
(n)の値を読み出して、これによって分割すればよ
い。
【0071】また、同図(b)は、それぞれのブロック
に含まれる画素数m(n)を任意に設定する一例とし
て、奇数ブロックと偶数ブロックで、ブロックに含まれ
る画素数を交互に変化させる例である。つまり、n%2
によって、ブロックに含まれる画素数を交互に変化させ
るもので、n%2の値が0のときは、そのブロック内の
画素数をm1とし、n%2で得られる値が1のときは、
そのブロック内の画素数をm2とするというように設定
しておく。このような設定とすることにより、この場合
は、第1ブロック(ブロック番号n=0)は、画素数が
m1(たとえば、m1=20個)、第2ブロック(ブロ
ック番号n=1)は、画素数がm2(たとえば、m2=
15個)、第3ブロック(ブロック番号n=2)は、第
1ブロックと同様、画素数がm1というように、1ブロ
ックごとに交互に画素数をm1とm2とする。このよう
に、奇数番号のブロックは画素数をm1、偶数番号のブ
ロックは画素数をm2とするというような設定の仕方で
ある。さらに、奇数ラインと偶数ラインで、奇数ブロッ
クと偶数ブロックに含まれる画素数を交互に変化させれ
ば、上下のラインでブロック境界が一致しないようにで
きる。
【0072】図15(c)は、各ブロックの画素数m
1、m2、……、mNをサイクリックに変化させる例で
ある。すなわち、たとえば、ある1ライン(jラインと
する)を、それぞれのブロック内の画素数がm1,m
2,m3,・・・,mNとなるように分割、次のライン
(j+1ライン)は、第1ブロックの画素数m2から始
まって、以降、m3,m4,・・・,mN,m1とし、
さらに次のライン(j+2ライン)は、第1ブロックの
画素数m3から始まって、以降、m4,m5,・・・,
mN,m1,m2というように設定する。このようにサ
イクリックに変化させることで、不規則性をより一層強
くすることができ、しかも、ある1ライン分だけ各ブロ
ックの画素数を設定しておけば、他のラインにおいて
は、読み出し順を変えるだけで対応することができ、処
理を簡単にすることができる。なお、ここで、m1+m
2+m3+,・・・,+mN=M(Mは1ラインの全画
素数)となるようにすることは勿論である。
【0073】このようなブロック分割とすることによ
り、それぞれのラインにおいて、各ブロックに含まれる
画素数が1ライン中で変化し、また、各ブロックの境界
が上下に隣接するライン同志で一致しないため、テクス
チャの発生を抑制する効果がより大きくなる。
【0074】ところで、以上説明した前記(イ)、
(ロ)、(ハ)のそれぞれのブロック分割処理は、図8
のフローチャートにおいて、ステップs103における
処理であり、図8で示される全体の処理の中では、この
ブロック分割処理が異なるだけで、他はこのフローチャ
ートと同じある。全体の処理については、実施例1で詳
細に説明したので、ここではその説明は省略する。この
ようなブロック分割とすることにより、2値化処理がよ
り一層、不規則性の強いものとなり、テクスチャの発生
の抑制にさらに大きな効果を発揮することができる。
【0075】
【発明の効果】本発明の画像処理方法において、請求項
1によれば、2値化処理を行うべくライン内を複数のブ
ロックに分割し、ブロック単位で2値化処理のための走
査方向を設定し、設定された走査方向にしたがってその
画素の画素データを用いて誤差拡散法による2値化処理
を行うようにしたので、従来のように、1ラインづつ、
左から右へというように、常に決まった規則的な方向で
の2値化処理順でなくなるため、従来より問題となって
いた視覚的に不快なテクスチャの発生を確実に防止する
ことができる。
【0076】また、請求項2によれば、走査方向を周期
的もしくは予め定められたパターンに従って切り替わる
ようにすることにより、視覚的に不快なテクスチャの発
生の防止は勿論、処理が簡単で高速に行うことができ、
ハードウエア構成も簡単なものとすることができる。
【0077】また、請求項3によれば、走査方向をラン
ダムに切り替えることにより、処理が簡単で、高速に行
うことができ、ハードウエア構成も簡単なものとするこ
とができ、かつ、2値化処理の不規則性がより強くなる
ので、視覚的に不快なテクスチャの発生をより確実に防
止することができる。
【0078】また、請求項4によれば、2値化処理対象
ラインに存在する画素列を均等に分割するようにしたの
で、処理が簡単で高速に行うことができ、ハードウエア
構成も簡単なものとすることができ、このように分割し
たブロックを用い、それぞれのブロックにおいて走査方
向を前記したように設定することにより、2値化処理に
不規則性が生じ、視覚的に不快なテクスチャの発生を確
実に防止することができる。
【0079】また、請求項5によれば、各ライン毎に最
初のブロックに含まれる画素数が異なるようにブロック
分割することにより、各ブロックの境界が上下に隣接す
るライン同志で一致しないため、より一層、2値化処理
の不規則性が増し、テクスチャの発生を抑制する効果が
より大きくなる。
【0080】また、請求項6によれば、各ラインごとに
ブロック分割数が異なるようにブロック分割することに
より、各ブロックに含まれる画素数がライン毎に異な
り、また、各ブロックの境界が上下に隣接するライン同
志で一致しないため、より一層、2値化処理の不規則性
が増し、テクスチャの発生を抑制する効果がより大きく
なる。
【0081】また、請求項7によれば、各ラインにおけ
る各ブロックに含まれる画素数をそのブロックごとに任
意に設定することにより、それぞれのラインにおいて、
各ブロックに含まれる画素数が1ライン中で変化し、ま
た、各ブロックの境界が上下に隣接するライン同志で一
致しないため、より一層、2値化処理の不規則性が増
し、テクスチャの発生を抑制する効果がより大きくな
る。
【0082】また、請求項8によれば、2値化処理にお
いては、2値化処理対象のブロックの走査方向および当
該ブロックにおける2値化処理対象画素の位置に応じた
複数の誤差拡散マトリクスを用意し、前記2値化処理対
象画素の当該ブロックにおける位置と当該ブロックの走
査方向をもとに、誤差拡散マトリクスを選択するように
したので、ある1つのブロック内の画素の処理順に関係
なく、常に、未処理の画素に誤差配分できるような誤差
拡散マトリクスを選択することができ、誤差を確実に配
分することができることから、原画に忠実な画像を再現
することができる。
【0083】また、本発明の画像処理装置においては、
請求項9によれば、2値化処理を行うべくライン内を複
数のブロックに分割し、ブロック単位で走査方向を設定
し、設定された走査方向にしたがってその画素の画素デ
ータを用いて誤差拡散法による2値化処理を行うように
したので、従来のように、1ラインづつ、左から右へと
いうように、常に決まった規則的な方向での2値化処理
順でなくなるため、従来より問題となっていた視覚的に
不快なテクスチャの発生を確実に防止することができ
る。
【0084】また、請求項10によれば、走査方向を周
期的もしくは予め定められたパターンに従って切り替わ
るようにすることにより、視覚的に不快なテクスチャの
発生の防止は勿論、処理が簡単で高速に行うことがで
き、ハードウエア構成も簡単なものとすることができ
る。
【0085】また、請求項11によれば、走査方向をラ
ンダムに切り替えることにより、処理が簡単で、高速に
行うことができ、ハードウエア構成も簡単なものとする
ことができ、かつ、2値化処理の不規則性がより強くな
るので、視覚的に不快なテクスチャの発生をより確実に
防止することができる。
【0086】また、請求項12によれば、2値化処理対
象ラインに存在する画素列を均等に分割するようにした
ので、処理が簡単で高速に行うことができ、ハードウエ
ア構成も簡単なものとすることができ、このように分割
したブロックを用い、それぞれのブロックにおいて2値
化処理方向を前記したように設定することにより、2値
化処理に不規則性が生じ、視覚的に不快なテクスチャの
発生を確実に防止することができる。
【0087】また、請求項13によれば、各ライン毎に
最初のブロックに含まれる画素数が異なるようにブロッ
ク分割することにより、各ブロックの境界が上下に隣接
するライン同志で一致しないため、より一層、2値化処
理の不規則性が増し、テクスチャの発生を抑制する効果
がより大きくなる。
【0088】また、請求項14によれば、各ラインごと
にブロック分割数が異なるようにブロック分割すること
により、各ブロックに含まれる画素数がライン毎に異な
り、また、各ブロックの境界が上下に隣接するライン同
志で一致しないため、より一層、2値化処理の不規則性
が増し、テクスチャの発生を抑制する効果がより大きく
なる。
【0089】また、請求項15によれば、各ラインにお
ける各ブロックに含まれる画素数をそのブロックごとに
任意に設定することにより、それぞれのラインにおい
て、各ブロックに含まれる画素数が1ライン中で変化
し、また、各ブロックの境界が上下に隣接するライン同
志で一致しないため、より一層、2値化処理の不規則性
が増し、テクスチャの発生を抑制する効果がより大きく
なる。
【0090】また、請求項16によれば、2値化処理に
おいては、2値化処理対象のブロックの走査方向および
当該ブロックにおける2値化処理対象画素の位置に応じ
た複数の誤差拡散マトリクスを用意し、前記2値化処理
対象画素の当該ブロックにおける位置と当該ブロックの
走査方向をもとに、誤差拡散マトリクスを選択するよう
にしたので、ある1つのブロック内の画素の処理順に関
係なく、常に、未処理の画素に誤差配分できるような誤
差拡散マトリクスを選択することができ、誤差を確実に
配分することができることから、原画に忠実な画像を再
現することができる。
【図面の簡単な説明】
【図1】本発明の構成を説明するブロック図。
【図2】本発明においてラインとブロックと画素の関係
について説明する図。
【図3】実施例1における2値化処理を行うための走査
方向の設定例を説明する図。
【図4】走査方向発生手段の具体例を説明する図。
【図5】ブロック内における画素の位置を説明する図。
【図6】走査方向とブロック内画素位置による誤差拡散
マトリクス選択用テーブルを示す図。
【図7】本発明において使用する誤差拡散マトリクスの
例を示す図。
【図8】本発明の処理手順を説明するフローチャート。
【図9】実施例2において走査方向を乱数発生器を用い
て切り替える場合の構成を示すブロック図。
【図10】乱数発生器を用いて切り替え設定された2値
化処理方向の例を示す図。
【図11】実施例2において走査方向信号を入力画素の
濃度値を用いて切り替える場合の構成を説明するブロッ
ク図。
【図12】実施例2において走査方向信号を入力画素の
誤差値を用いて切り替える場合の構成を説明するブロッ
ク図。
【図13】実施例3において各ライン毎に最初のブロッ
クに含まれる画素数が異なるようにラインを分割する例
を説明する図。
【図14】実施例3において各ラインごとにブロック分
割数が異なるようにラインを分割する例を説明する図。
【図15】実施例3において各ラインにおける各ブロッ
クに含まれる画素数が任意となるようにラインを分割す
る例を説明する図。
【図16】従来の誤差拡散法を用いた2値化処理を説明
するブロック図。
【図17】従来の誤差拡散法において用いられる誤差拡
散マトリクス例を示す図。
【図18】従来の誤差拡散法を用いた2値化処理におい
て発生するテクスチャを説明するための図。
【符号の説明】
10・・・画像メモリ 20・・・γ補正手段 30・・・2値化処理手段 31・・・加算器 32・・・比較器 33・・・減算器 34・・・重み付け誤差演算器 35・・・誤差メモリ 41・・・ブロック分割器 42・・・ブロック内画素カウンタ 43・・・ブロックカウンタ 44・・・走査方向発生器 45・・・読み出し制御器 50・・・マトリクス切り替え器 60・・・乱数発生器

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 多階調の画像を入力し、誤差拡散法によ
    る2値化処理を行って、2値画像を出力する画像処理方
    法において、 2値化処理を行うべくライン内に存在する画素列を複数
    のブロックに分割し、それぞれのブロック内に存在する
    画素を2値化処理するための走査方向を各ブロック単位
    で任意に設定し、設定された走査方向に従った順番で、
    各画素ごとにその画素の画素データを用いて誤差拡散法
    による2値化処理を行うことを特徴とする画像処理方
    法。
  2. 【請求項2】 前記各ブロック単位ごとの走査方向は、
    周期的もしくは予め定められたパターンに従って切り替
    えることを特徴とする請求項1に記載の画像処理方法。
  3. 【請求項3】 前記各ブロック単位ごとの走査方向は、
    ランダムに切り替えることをを特徴とする請求項1に記
    載の画像処理方法。
  4. 【請求項4】 前記2値化処理を行うべくライン内に存
    在する画素列を複数のブロックに分割する際は、各ブロ
    ックに含まれる画素数が均等になるように分割すること
    を特徴とする請求項1に記載の画像処理方法。
  5. 【請求項5】 前記2値化処理を行うべくライン内に存
    在する画素列を複数のブロックに分割する際は、少なく
    とも隣接するライン同志においては、各ライン毎に最初
    のブロックに含まれる画素数が異なるように分割するこ
    とを特徴とする請求項1に記載の画像処理方法。
  6. 【請求項6】 前記2値化処理を行うべくライン内に存
    在する画素列を複数のブロックに分割する際は、少なく
    とも隣接するライン同志においては、各ラインごとにブ
    ロック分割数が異なるように分割することを特徴とする
    請求項1に記載の画像処理方法。
  7. 【請求項7】 前記2値化処理を行うべくライン内に存
    在する画素列を複数のブロックに分割する際は、各ライ
    ンにおける各ブロックに含まれる画素数が任意となるよ
    うに分割することを特徴とする請求項1に記載の画像処
    理方法。
  8. 【請求項8】 多階調の画像を入力し、誤差拡散法によ
    る2値化処理を行って、2値画像を出力する画像処理方
    法において、 2値化処理を行うべくライン内に存在する画素列を複数
    のブロックに分割し、それぞれのブロック内に存在する
    画素を2値化処理するための走査方向を各ブロック単位
    で任意に設定し、設定された走査方向に従った順番で、
    各画素ごとにその画素の画素データを用いて誤差拡散法
    による2値化処理を行い、 前記誤差拡散法による2値化処理においては、2値化処
    理対象のブロックのぜんき走査方向および当該ブロック
    内の2値化処理対象画素の位置に応じた複数の誤差拡散
    マトリクスを用意し、前記2値化処理対象画素の当該ブ
    ロックにおける位置と当該ブロックの走査方向をもと
    に、誤差拡散マトリクスを選択することを特徴とする画
    像処理方法。
  9. 【請求項9】 多階調の画像を入力し、誤差拡散法によ
    る2値化処理を行って、2値画像を出力する画像処理装
    置において、 2値化処理を行うべくライン内に存在する画素列を複数
    のブロックに分割するブロック分割手段と、 2値化処理を行うための走査方向をブロック単位で任意
    に設定するための信号を出力する走査方向発生手段と、 前記ブロック分割手段から出力される各ブロックごとの
    画素数情報を受けて2値化処理対象ブロック内の1つの
    画素が2値化処理されるごとにカウントアップするブロ
    ック内画素カウント手段と、 このブロック内画素カウント手段から出力される2値化
    処理対象ブロック内の画素カウント終了信号を受けて、
    2値化処理対象ブロックであることを示すブロックカウ
    ント信号を出力するブロックカウント手段と、 前記ブロック分割手段からの処理対象ブロック内画素数
    情報、走査方向発生手段からの当該ブロックの走査方向
    情報、ブロック内画素カウント手段からの画素カウント
    情報、ブロックカウント手段からの処理対象ブロック情
    報をもとに、2値化処理対象の画素を指定する2値化処
    理対象画素指定信号を出力する読み出し制御手段と、 多階調の画素データを蓄え、前記読み出し制御手段から
    の2値化処理対象画素指定信号を受けて、対応する画素
    の画素データを出力する画像メモリと、 この画像メモリからの画素データを出力デバイスの特性
    に合うように補正する補正手段と、 この補正手段により補正された画素データを入力し、そ
    の画素データを用いて誤差拡散法による2値化処理を行
    う2値化処理手段と、 を有することを特徴とする画像処理装置。
  10. 【請求項10】 前記走査方向発生手段は、ブロック単
    位ごとの走査方向を周期的もしくは予め定められたパタ
    ーンに従って切り替える信号を出力することを特徴とす
    る請求項9に記載の画像処理装置。
  11. 【請求項11】 前記走査方向発生手段は、ブロック単
    位ごとの走査方向をランダムに切り替える信号を出力す
    ることを特徴とする請求項9に記載の画像処理装置。
  12. 【請求項12】 前記ブロック分割手段は、各ブロック
    に含まれる画素数が均等になるように、2値化処理対象
    ラインに存在する画素列を分割することを特徴とする請
    求項9に記載の画像処理装置。
  13. 【請求項13】 前記ブロック分割手段は、少なくとも
    隣接するラインにおいては、各ライン毎に最初のブロッ
    クに含まれる画素数が異なるように、2値化処理対象ラ
    インに存在する画素列を分割することを特徴とする請求
    項9に記載の画像処理装置。
  14. 【請求項14】 前記ブロック分割手段は、少なくとも
    隣接するラインにおいては、各ラインごとにブロック分
    割数が異なるように、2値化処理対象ラインに存在する
    画素列を分割することを特徴とする請求項9に記載の画
    像処理装置。
  15. 【請求項15】 前記ブロック分割手段は、各ラインに
    おける各ブロックに含まれる画素数が各ブロックごとに
    任意となるように、2値化処理対象ラインに存在する画
    素列を分割することを特徴とする請求項9に記載の画像
    処理装置。
  16. 【請求項16】 多階調の画像を入力し、誤差拡散法に
    よる2値化処理を行って、2値画像を出力する画像処理
    装置において、 2値化処理を行うべくライン内に存在する画素列を複数
    のブロックに分割するブロック分割手段と、 2値化処理を行うための走査方向をブロック単位で任意
    に設定するための信号を出力する走査方向発生手段と、 前記ブロック分割手段から出力される各ブロックごとの
    画素数情報を受けて2値化処理対象ブロック内の1つの
    画素が2値化処理されるごとにカウントアップするブロ
    ック内画素カウント手段と、 このブロック内画素カウント手段から出力される2値化
    処理対象ブロック内の画素カウント終了信号を受けて、
    2値化処理対象ブロックであることを示すブロックカウ
    ント信号を出力するブロックカウント手段と、 前記ブロック分割手段からの処理対象ブロック内画素数
    情報、走査方向発生手段からの当該ブロックの走査方向
    情報、ブロック内画素カウント手段からの画素カウント
    情報、ブロックカウント手段からの処理対象ブロック情
    報をもとに、2値化処理対象の画素を指定する2値化処
    理対象画素指定信号を出力する読み出し制御手段と、 多階調の画素データを蓄え、前記読み出し制御手段から
    の2値化処理対象画素指定信号を受けて、対応する画素
    の画素データを出力する画像メモリと、 この画像メモリからの画素データを出力デバイスの特性
    に合うように補正する補正手段と、 この補正手段により補正された画素データを入力し、そ
    の画素データを用いて誤差拡散法による2値化処理を行
    う2値化処理手段と、 2値化処理対象ブロックの走査方向および当該ブロック
    における2値化処理対象画素の位置に応じた複数の誤差
    拡散マトリクスを用意し、前記走査方向発生手段および
    ブロック内画素カウント手段からの信号を受けて、前記
    2値化処理対象画素の当該ブロックにおける位置と当該
    ブロックの走査方向をもとに、誤差拡散マトリクスを選
    択して出力するマトリクス切替手段と、 を有することを特徴とする画像処理装置。
JP7032713A 1995-02-21 1995-02-21 画像処理方法および画像処理装置 Pending JPH08228285A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7032713A JPH08228285A (ja) 1995-02-21 1995-02-21 画像処理方法および画像処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7032713A JPH08228285A (ja) 1995-02-21 1995-02-21 画像処理方法および画像処理装置

Publications (1)

Publication Number Publication Date
JPH08228285A true JPH08228285A (ja) 1996-09-03

Family

ID=12366486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7032713A Pending JPH08228285A (ja) 1995-02-21 1995-02-21 画像処理方法および画像処理装置

Country Status (1)

Country Link
JP (1) JPH08228285A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007129695A (ja) * 2005-10-03 2007-05-24 Seiko Epson Corp 印刷装置、印刷プログラム、印刷方法、および画像処理装置、画像処理プログラム、画像処理方法、並びに前記プログラムを記録した記録媒体、表示装置
JP2012049718A (ja) * 2010-08-25 2012-03-08 Canon Inc 画像処理装置およびその方法
US8947735B2 (en) 2010-08-25 2015-02-03 Canon Kabushiki Kaisha Image processing apparatus and image processing method for performing error diffusion processing for each region of an image

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007129695A (ja) * 2005-10-03 2007-05-24 Seiko Epson Corp 印刷装置、印刷プログラム、印刷方法、および画像処理装置、画像処理プログラム、画像処理方法、並びに前記プログラムを記録した記録媒体、表示装置
JP2012049718A (ja) * 2010-08-25 2012-03-08 Canon Inc 画像処理装置およびその方法
US8885221B2 (en) 2010-08-25 2014-11-11 Canon Kabushiki Kaisha Image processing apparatus and method thereof
US8947735B2 (en) 2010-08-25 2015-02-03 Canon Kabushiki Kaisha Image processing apparatus and image processing method for performing error diffusion processing for each region of an image

Similar Documents

Publication Publication Date Title
EP2424214A1 (en) Image processing apparatus and image processing method
JPH1132208A (ja) 画像変倍処理装置
US5926582A (en) Method and system for converting multi-gradated image data into binary image data
JPH08228285A (ja) 画像処理方法および画像処理装置
JP2010502058A (ja) 誤差拡散スクリーニング技術を用いて画像を走査し処理する方法及びシステム
JP3539552B2 (ja) 画像処理装置
JPH03151762A (ja) 画像処理装置
JP2608404B2 (ja) 画像処理装置
JP2703911B2 (ja) 画像処理装置
CN120751070B (zh) 图像处理方法、装置、电子设备及可读介质
JPH08228284A (ja) 画像処理方法および画像処理装置
JP2701310B2 (ja) 中間調画像生成方法および装置
JP2002262081A (ja) 画像処理装置と画像処理方法
JPH03243063A (ja) 階調画像の二値化方法
JP2001148783A (ja) 画像処理装置
JP4262148B2 (ja) 画像処理装置及び画像処理方法
JPH0666876B2 (ja) 画像信号処理装置
JPH10255033A (ja) 画像縮小方法
JP2007194955A (ja) 画像処理装置
JPH08116443A (ja) 画像処理装置
JP2001169109A (ja) 画像処理装置
JPS60142670A (ja) 中間調画像縮小方式
JPH0537781A (ja) 画像処理装置
JP2004120565A (ja) 画像処理装置
JPH08317205A (ja) 画像処理装置