JP2010193420A - 装置、方法、プログラムおよび記憶媒体 - Google Patents
装置、方法、プログラムおよび記憶媒体 Download PDFInfo
- Publication number
- JP2010193420A JP2010193420A JP2009106550A JP2009106550A JP2010193420A JP 2010193420 A JP2010193420 A JP 2010193420A JP 2009106550 A JP2009106550 A JP 2009106550A JP 2009106550 A JP2009106550 A JP 2009106550A JP 2010193420 A JP2010193420 A JP 2010193420A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- target pixel
- error
- binarization
- data
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/40—Picture signal circuits
- H04N1/405—Halftoning, i.e. converting the picture signal of a continuous-tone original into a corresponding signal showing only two levels
- H04N1/4051—Halftoning, 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/4052—Halftoning, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/28—Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Facsimile Image Signal Circuits (AREA)
- Image Processing (AREA)
Abstract
【課題】 本発明の課題は、平均濃度保存法及び、誤差拡散法をハードウェア上で実行するために必要な処理を高速化することができる装置を提供することである。
【解決手段】 上記課題を解決するために、本発明に係る装置は、画像に含まれる各画素における画素データを、各画素に対する閾値を用いてN(Nは2以上の整数)値化することで、各画素におけるN値化結果を得るN値化手段と、各画素に対する閾値を算出する算出手段とを備え、算出手段は、各画素より前にN値化手段でN値化されて得られた複数の画素におけるN値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで閾値を算出し、さらに、複数の画素のうちの特定画素の画素データのN値化手段におけるN値化よりも、算出手段における、特定画素の画素データにおけるN値化結果に対して係数を掛ける処理が後ではないことを特徴とする。
【選択図】 図6
【解決手段】 上記課題を解決するために、本発明に係る装置は、画像に含まれる各画素における画素データを、各画素に対する閾値を用いてN(Nは2以上の整数)値化することで、各画素におけるN値化結果を得るN値化手段と、各画素に対する閾値を算出する算出手段とを備え、算出手段は、各画素より前にN値化手段でN値化されて得られた複数の画素におけるN値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで閾値を算出し、さらに、複数の画素のうちの特定画素の画素データのN値化手段におけるN値化よりも、算出手段における、特定画素の画素データにおけるN値化結果に対して係数を掛ける処理が後ではないことを特徴とする。
【選択図】 図6
Description
本発明は、装置、方法、プログラムおよび記憶媒体に関する。
近年、プリンタの普及により、多値の入力画像データを、2値もしくは数段階の濃度に変換する画像処理技術が、頻繁に用いられている。
多値の入力画像データを、2値もしくは数段階の濃度に変換する画像処理技術として、一般的に、平均濃度保存法や、誤差拡散法などの量子化処理が用いられる。
しかし、平均濃度保存法や、誤差拡散法などの量子化処理では、注目画素の量子化結果や、量子化結果の誤差データなどに対して様々な演算(住算や除算あるいは足し算)を行い、その演算結果を、注目画素の次の画素の量子化に用いる。
しかし、従来は、まず、注目画素の量子化が行われ、量子化により得られた情報(量子化結果や、量子化結果の誤差データ)に演算が行われる。そして、演算結果を用いて、注目画素の次の画素の量子化が行われていたので、以下のような課題があった。
すなわち、どうしても、注目画素の量子化の後すぐに、注目画素の次の画素の量子化を行うことができなかった。なぜなら、注目画素の量子化の後と、注目画素の次の画素の量子化との間に、計算時間のかかる演算が入ってしまうからである。
その結果、量子化処理を高速化できなかった。
とはいえ、現在、量子化処理の高速化が望まれている。そのため、注目画素の量子化の後すぐに注目画素の次の画素の量子化を行えるようにする必要がある。このためには、注目画素の量子化が終了する際(同時、又は、それより早く)に、注目画素の量子化結果を用いた演算が終了している必要がある。
そこで、本発明は、注目画素の量子化が終了してすぐに、上記演算結果を用いて、次の画素の量子化を行うことができるようにすることを目的とする。
上記課題を解決するために、本発明に係る装置は、画像に含まれる各画素における画素データを、各画素に対する閾値を用いてN(Nは2以上の整数)値化することで、各画素におけるN値化結果を得るN値化手段と、各画素に対する閾値を算出する算出手段とを備え、算出手段は、各画素より前にN値化手段でN値化されて得られた複数の画素におけるN値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで閾値を算出し、さらに、複数の画素のうちの特定画素の画素データのN値化手段におけるN値化よりも、算出手段における、特定画素の画素データにおけるN値化結果に対して係数を掛ける処理が後ではないことを特徴とする。
本発明により、平均濃度保存法及び、誤差拡散法をハードウェア上で実行するために必要な処理を高速化することができる。
従来の平均濃度保存法は、閾値算出、2値化処理、および誤差分配の3つの処理を、以下で説明するように繰り返す方法である。
平均濃度保存法の閾値算出の処理において、注目画素から前の、すでに2値化の完了している画素の2値化結果を用いて、2値化結果に対応する、注目画素に対する閾値が算出される。
平均濃度保存法の2値化処理において、注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、上述した閾値算出の処理で算出された閾値と比較され、2値化処理が行われる。
平均濃度保存法の誤差分配の処理において、2値化のときに出た誤差(閾値と誤差補正後の画像データとの差)は、以降、処理されるべき画像データに誤差補正値として渡される。
以下で、従来の平均濃度保存法の各処理に関する説明を行う。
<従来の平均濃度保存法の閾値算出の処理>
2値化処理の対象となる注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「1」または「0」)が存在する。ここで、(n,m)は、画素の位置を表す。例えば、nは、記録装置における主走査方向の位置を示し、mは、記録装置における副走査方向の位置を示す。
2値化処理の対象となる注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「1」または「0」)が存在する。ここで、(n,m)は、画素の位置を表す。例えば、nは、記録装置における主走査方向の位置を示し、mは、記録装置における副走査方向の位置を示す。
同様に、m−1以前のラインに関しても、既に2値化処理が完了していて、2値の画像データが存在する。
閾値算出の処理では、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する加重演算を行うことにより、注目画素の閾値の算出が行われる。
ここで、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
以下で、図1を用いて、平均濃度保存法の閾値算出の処理の説明を行う。
図1において、閾値算出に用られる画素の範囲は、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の4画素である。
図2は、上記の4画素に対する加重係数を示している。図2に示されているように、(n−1,m−1)の画素に対する加重係数は、「1」である。そして、(n,m−1)の画素に対する加重係数は、「2」である。そして、(n+1,m−1)の画素に対する加重係数は、「1」である。そして、(n−1,m)の画素に対する加重係数は、「2」である。
ここで、注目画素以前の2値化処理結果に対して、色を出力する部分の値を「画像データのMax値」(例えば、「255」)、色を出力しない部分の値を「0」として、加重演算処理が行われる。
よって、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理を行うことにより算出される。
まず、加重演算処理では、各画素の係数との乗算が、以下のように行われる。
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化処理結果値×画像データのMax値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化処理結果値×画像データのMax値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の2値化処理結果値×画像データのMax値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化処理結果値×画像データのMax値
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化処理結果値×画像データのMax値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化処理結果値×画像データのMax値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の2値化処理結果値×画像データのMax値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化処理結果値×画像データのMax値
次に、加重演算処理では、各画素の乗算結果の和の算出が、以下のように行われる。
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−1,m)
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−1,m)
次に、加重演算処理では、上記乗算結果の和に対する補正が、以下のように行われる。
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−1,m)の加重係数}
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−1,m)の加重係数}
よって、注目画素以前の2値化処理結果が、図3のような場合、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理により算出される。
SL(n,m)={(1×1×255)+(2×0×255)+(1×1×255)+(2×1×255)}/(1+2+1+2)=170
SL(n,m)={(1×1×255)+(2×0×255)+(1×1×255)+(2×1×255)}/(1+2+1+2)=170
<従来の平均濃度保存法の2値化処理>
次に、注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、閾値と比較され、2値化処理が行われる。
次に、注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、閾値と比較され、2値化処理が行われる。
2値化処理では、図1のように、注目画素のラインの注目画素の次の画素と、注目画素の1ライン下のラインの注目画素と同じ位置に誤差が分配される。このため、注目画素に対して、注目画素のラインの注目画素の1画素前の画素からの誤差データと、注目画素の1ライン前の同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
ここで、(n,m)の注目画素の入力データをDin(n,m)とし、注目画素のラインの注目画素の1画素前の2値化処理誤差データをEr(n−1,m)とする。そして、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データをEd(n,m−1)とする。このとき、誤差補正後の注目画素の画像データであるD(n,m)の算出は、下記のような演算により行われる。
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=120、Er(n−1,m)=14、Ed(n,m−1)=−8の場合、誤差補正後のデータであるD(n,m)は、下記のような値となる。
D(n,m)=120+14+(−8)=126
誤差データEr及びEdに関しては、後述する。
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=120、Er(n−1,m)=14、Ed(n,m−1)=−8の場合、誤差補正後のデータであるD(n,m)は、下記のような値となる。
D(n,m)=120+14+(−8)=126
誤差データEr及びEdに関しては、後述する。
次に、D(n,m)と、先に算出された、注目画素に対する閾値であるSL(n,m)との比較を行い、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、2値化結果の出力であるBin(n,m)が決定される。
例えば、D(n,m)≧SL(n,m)の場合、色の出力を行うと判断され、Bin(n,m)=1と決定される。一方、D(n,m)<SL(n,m)の場合、色の出力が行われず、Bin(n,m)=0と決定される。
例えば、上述した例では、D(n,m)=126、SL(n,m)=170であるので、「D(n,m)<SL(n,m)」となり、注目画素には色の出力が行われないと判断され、Bin(n,m)=0と決定される。
例えば、D(n,m)≧SL(n,m)の場合、色の出力を行うと判断され、Bin(n,m)=1と決定される。一方、D(n,m)<SL(n,m)の場合、色の出力が行われず、Bin(n,m)=0と決定される。
例えば、上述した例では、D(n,m)=126、SL(n,m)=170であるので、「D(n,m)<SL(n,m)」となり、注目画素には色の出力が行われないと判断され、Bin(n,m)=0と決定される。
<従来の平均濃度保存法の誤差分配の処理>
次に、従来の平均濃度保存法では、以下のような、閾値であるSL(n,m)と、誤差補正後の画像データであるD(n,m)との差が、2値化誤差であるE(n,m)として、以降の処理画素に分配される。
E(n,m)=SL(n,m)−D(n,m)
誤差分配の処理では、図1のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
次に、従来の平均濃度保存法では、以下のような、閾値であるSL(n,m)と、誤差補正後の画像データであるD(n,m)との差が、2値化誤差であるE(n,m)として、以降の処理画素に分配される。
E(n,m)=SL(n,m)−D(n,m)
誤差分配の処理では、図1のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、注目画素のラインの注目画素の1画素右の画素へ分配される誤差データを、Er(n,m)とし、注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素の2箇所に対して、E(n,m)の1/2ずつ、分配される。
この場合、Er(n,m)=E(n,m)/2、Ed(n,m)=E(n,m)/2となる。
例えば、上述した例では、D(n,m)=126、SL(n,m)=170であるので、E(n,m)=SL(n,m)−D(n,m)=170−126=44と算出される。そして、Er(n,m)=E(n,m)/2=44/2=22、Ed(n,m)=E(n,m)/2=44/2=22となる。
上記のEr(n,m)は、Din(n+1,m)の誤差補正に用いられ、Ed(n,m)は、Din(n,m+1)の誤差補正に用いられる。
この場合、Er(n,m)=E(n,m)/2、Ed(n,m)=E(n,m)/2となる。
例えば、上述した例では、D(n,m)=126、SL(n,m)=170であるので、E(n,m)=SL(n,m)−D(n,m)=170−126=44と算出される。そして、Er(n,m)=E(n,m)/2=44/2=22、Ed(n,m)=E(n,m)/2=44/2=22となる。
上記のEr(n,m)は、Din(n+1,m)の誤差補正に用いられ、Ed(n,m)は、Din(n,m+1)の誤差補正に用いられる。
<従来の平均濃度保存法を実行するためのハードウェア>
次に、従来の平均濃度保存法を実行するためのハードウェアに関する説明を、図4を用いて、以下で行う。図4に示されているように、従来の平均濃度保存法を実行するためのハードウェアは、閾値算出部401と、2値化処理部414と、誤差分配部418とを有する。
次に、従来の平均濃度保存法を実行するためのハードウェアに関する説明を、図4を用いて、以下で行う。図4に示されているように、従来の平均濃度保存法を実行するためのハードウェアは、閾値算出部401と、2値化処理部414と、誤差分配部418とを有する。
<閾値算出部401>
以下で、図4の閾値算出部401について説明する。
以下で、図4の閾値算出部401について説明する。
図1の注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化された画像データが存在する。
それらの2値化された画像データは、2値化結果格納用メモリ402に格納されている。
閾値算出部401は、2値化結果格納用メモリ402に格納されている2値化処理の終わった画像データに対する加重演算を行い、注目画素の閾値の算出を行う。
図4の閾値算出用加重係数1(403)は、(n−1,m−1)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数2(404)は、(n,m−1)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数3(405)は、(n+1,m−1)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数4(409)は、(n−1,m)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数の和(411)は、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の画素に対する加重係数の和を記憶している。
図4の閾値算出部401は、2値化結果格納用メモリ402から、(n−1,m−1)、(n,m−1)、(n+1,m−1)の3画素の2値化された画像データの出力を行う。
図4の閾値算出用加重係数2(404)は、(n,m−1)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数3(405)は、(n+1,m−1)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数4(409)は、(n−1,m)の画素に対する加重係数を記憶している。
図4の閾値算出用加重係数の和(411)は、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の画素に対する加重係数の和を記憶している。
図4の閾値算出部401は、2値化結果格納用メモリ402から、(n−1,m−1)、(n,m−1)、(n+1,m−1)の3画素の2値化された画像データの出力を行う。
そして、乗算回路1(406)は、(n−1,m−1)の画素の2値化された画像データに対して、(n−1,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路2(407)は、(n,m−1)の画素の2値化された画像データに対して、(n,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路3(408)は、(n+1,m−1)の画素の2値化された画像データに対して、(n+1,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路2(407)は、(n,m−1)の画素の2値化された画像データに対して、(n,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路3(408)は、(n+1,m−1)の画素の2値化された画像データに対して、(n+1,m−1)の加重係数と、画像データのMax値との乗算を行う。
閾値算出部401は、(n−1,m)の画素の2値化された画像データとして、直前の2値化処理で出力された2値化結果Bin(n,m)を、そのまま乗算回路4(410)に入力する。そして、乗算回路4(410)は、閾値算出用加重係数4(409)に記憶されている(n−1,m)の画素の加重係数と、画像データのMax値との乗算を行う。
そして、閾値算出部401は、乗算回路1(406)、乗算回路2(407)、乗算回路3(408)、乗算回路4(410)からの出力値を、加算回路1(412)に入力し、Ssum(n,m)を算出する。
そして、閾値算出部401は、除算回路1(413)により、加算回路1(412)から出力されるSsum(n,m)を、閾値算出用加重係数の和411に記憶されている加重係数の和の値で割り、注目画素に対する閾値であるSL(n,m)の算出を行う。
そして、閾値算出部401は、乗算回路1(406)、乗算回路2(407)、乗算回路3(408)、乗算回路4(410)からの出力値を、加算回路1(412)に入力し、Ssum(n,m)を算出する。
そして、閾値算出部401は、除算回路1(413)により、加算回路1(412)から出力されるSsum(n,m)を、閾値算出用加重係数の和411に記憶されている加重係数の和の値で割り、注目画素に対する閾値であるSL(n,m)の算出を行う。
<2値化処理部414>
2値化処理部414は、注目画素の画像データに対して、以前の画素の2値化誤差により誤差補正が行われたD(n,m)と、閾値算出部401で算出された閾値であるSL(n,m)とを比較し、2値化処理を行う。
2値化処理部414は、注目画素の画像データに対して、以前の画素の2値化誤差により誤差補正が行われたD(n,m)と、閾値算出部401で算出された閾値であるSL(n,m)とを比較し、2値化処理を行う。
図4の2値化処理部414の加算回路2(416)には、(n,m)の注目画素の入力データDin(n,m)と、後述する誤差分配部418から出力される、注目画素の1画素前の2値化処理により算出された誤差データEr(n−1,m)とが入力される。
誤差データ(Ed)格納用メモリ415は、注目画素以前の画素の2値化誤差のうち、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データであるEd(n,m−1)を格納している。
誤差データEr及びEdに関しては、後述する。
図4に示されているように、2値化処理部414には、以下の3つのデータが入力される。すなわち、Din(n,m)と、Er(n−1,m)と、Ed(n,m−1)とが2値化処理部414に入力される。
2値化処理部414の加算回路2(416)は、Din(n,m)と、Er(n−1,m)と、Ed(n,m−1)の3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、2値化処理部414の比較回路1(417)は、注目画素の誤差補正後のデータD(n,m)と、閾値算出部401によって算出された、注目画素に対する閾値SL(n,m)との比較を行う。そして、2値化処理部414の比較回路1(417)は、注目画素に対して、色を出力する(Bin(n,m)=1)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化結果の出力を行う。
比較回路1(417)は、以下のようにして、Bin(n,m)=1かBin(n,m)=2かの判断を行う。すなわち、D(n,m)≧SL(n,m)の場合、比較回路1(417)は、色の出力を行うと判断し、Bin(n,m)=1と判断する。一方、D(n,m)<SL(n,m)の場合、比較回路1(417)は、色の出力行わないと判断し、Bin(n,m)=0と判断する。
比較回路1(417)により出力された注目画素の2値化結果であるBin(n,m)は、2値化結果格納用メモリ402と、閾値算出部401の乗算回路4(410)にそれぞれ入力される。
2値化結果格納用メモリ402に格納されたBin(n,m)のデータは、2値化処理が終了したラインの次のラインの2値化処理時の閾値算出に用いられる。
閾値算出部401の乗算回路4(410)に入力されたBin(n,m)のデータは、2値化処理が終了した画素の次の画素の2値化処理時の閾値算出に用いられる。
<誤差分配部418>
誤差分配部418は、閾値算出部401によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部418は、閾値算出部401によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
まず、誤差分配部418の減算回路1(419)は、閾値算出部401によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差であるE(n,m)の算出を行う。
誤差分配部418が実行する処理では、図1のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右への誤差データを、Er(n,m)とし、(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素への誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路2(420)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路3(421)によって行われる。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路2(420)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路3(421)によって行われる。
ここで、誤差算出用係数1(422)には、2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数が記憶されている。2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数は、誤差算出用係数1(422)から読み出されて、除算回路2(420)に、入力される。
また、誤差算出用係数2(423)には、2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数が記憶されている。2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数は、誤差算出用係数2(423)から読み出されて、除算回路3(421)に、入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素への誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ415に格納される。
(n,m)の注目画素のラインの注目画素の1画素右への誤差データであるEr(n,m)は、2値化処理部414の加算回路2(416)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素への誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ415に格納される。
(n,m)の注目画素のラインの注目画素の1画素右への誤差データであるEr(n,m)は、2値化処理部414の加算回路2(416)に入力される。
誤差データ(Ed)格納用メモリ415に格納された誤差データ(Ed(n,m))は、(n,m)の注目画素のラインの次のラインの2値化処理時の2値化処理部414での誤差補正に用いられる。
2値化処理部414の加算回路2(416)に入力された誤差データ(Er(n,m))は、(n,m)の注目画素の次の画素の2値化処理時の2値化処理部414での誤差補正に用いられる。
次に、図5を用いて、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ2の立ち上がりで注目画素の2値化を行う際には、図5に示されている処理が行われる。
クロックのエッジ1の立ち上がりで1画素前の2値化が完了し2値データの出力が行われたときと同じタイミングで、2値化結果格納用メモリ402から入力された、注目画素の閾値算出に用いる1ライン前の2値化結果が入力される。
そして、上記1ライン前の2値化結果から1ライン前のエリアに関する加重演算が行われる。
同時に、1画素前の2値化結果から1画素前の画素に関しての係数との乗算を行い、その結果と、1ライン前のエリアに関する加重演算の結果とから、注目画素に対する閾値の算出が行われる。
また、上記の処理と並行して、Din(n,m)に対して、Er(n−1,m)と、誤差データ(Ed)格納用メモリ415から入力された、Ed(n,m−1)により、注目画素に対する誤差補正が行われる。
そして、上記処理によって算出された注目画素に対する閾値SL(n,m)と、注目画素の誤差補正データD(n,m)との比較が行われ、クロックのエッジ2の立ち上がりで注目画素の2値化が実行され、2値化処理部414から出力される。
以降、次のエッジ3では、1画素後ろの画素を注目画素として、同じ処理が繰り返される。
以上のように、平均濃度保存法の処理結果を1クロックに付き、1画素ずつ出力させるためには、閾値算出処理、2値化処理、誤差分配処理の全ての処理を1クロック以内で完了させる必要がある。
つまり、図4の閾値算出部401、2値化処理部414、誤差分配部418の全ての処理を1クロック以内で完了させる必要がある。
そこで、例えば特許文献1では、1画素前の演算処理とそれ以外の演算処理を2つの演算器に分け、先行して行える演算に関しては先に実行しておくという処理方法が提案されている。
現在、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、従来以上に平均濃度保存法に必要な演算の負荷が大きくなってきている。
そのため、早い周波数での動作を行おうとした場合、1クロック以内では、平均濃度保存法に必要な各種演算処理が完了しないため、平均濃度保存法の高速動作ができない。
そこで、本発明は、平均濃度保存法が注目画素で実行する演算の付加を軽くし、平均濃度保存法に必要な処理を高速化することを目的とする。
次に、誤差拡散法に関する詳細な説明を行なう。
従来の誤差拡散法は、前画素の2値化誤差算出、注目画素データの誤差補正、および2値化処理、の3つの処理を、以下で説明するように繰り返す方法である。
誤差拡散法の注目画素データの誤差補正の処理において、注目画素から前の、すでに2値化の完了している画素の2値化誤差を用いて、注目画素に対する誤差補正値が算出される。
誤差拡散法の誤差分配の処理において、2値化のときに出た誤差(出力値と誤差補正後の画像データとの差)は、以降、処理されるべき画像データに誤差補正値として渡される。
誤差拡散法の2値化処理において、注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、予め設定された閾値と比較され、2値化処理が行われる。
以下で、従来の誤差拡散法の各処理に関する説明を行う。
<従来の誤差拡散法の誤差算出処理>
従来の誤差拡散法では、注目画素の1画素前の2値化誤差データ値も、注目画素の誤差補正処理に使用する事となる。
従来の誤差拡散法では、注目画素の1画素前の2値化誤差データ値も、注目画素の誤差補正処理に使用する事となる。
よって、注目画素(n,m)に対する処理は、1画素前(n−1,m)の2値化誤差データ値の算出から始める事となる。
ここで、(n,m)は、画素の位置を表す。例えば、nは、記録装置における主走査方向の位置を示し、mは、記録装置における副走査方向の位置を示す。
以下のように、1画素前の誤差補正後の画像データであるDer(n−1,m)と、1画素前の2値化結果出力値Bin(n−1,m)(本例の場合、0もしくは255とする)の差が、1画素前の2値化誤差Er(n−1,m)となる。
2値化結果出力値が「0」の場合
Er(n−1,m)=Der(n−1,m)−0
2値化結果出力値が「255」の場合
Er(n−1,m)=Der(n−1,m)−255
前記2値化誤差Er(n−1,m)は、注目画素の誤差補正に使用されるとともに、2値化誤差格納手段に格納され、後述するように、1ライン後の画素の2値化を行なう際の誤差補正に使用される事となる。
Er(n−1,m)=Der(n−1,m)−0
2値化結果出力値が「255」の場合
Er(n−1,m)=Der(n−1,m)−255
前記2値化誤差Er(n−1,m)は、注目画素の誤差補正に使用されるとともに、2値化誤差格納手段に格納され、後述するように、1ライン後の画素の2値化を行なう際の誤差補正に使用される事となる。
2値化誤差格納手段は、ラインメモリ等の記憶媒体からなり、本例においては、1ライン分の2値化誤差の格納を行う事となる。
<従来の誤差拡散法の注目画素データの誤差補正処理>
2値化処理の対象となる注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「255」または「0」)及び、2値化誤差データが存在する。
2値化処理の対象となる注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「255」または「0」)及び、2値化誤差データが存在する。
同様に、m−1以前のラインに関しても、既に2値化処理が完了していて、2値の画像データ及び、2値化誤差データが存在する。
注目画素データの誤差補正処理では、注目画素以前のすでに2値化処理の終わった画素の2値化誤差データに対する加重演算を行うことにより、注目画素値の補正処理が行われる。
ここで、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
以下で、図21を用いて、誤差拡散法の注目画素データの誤差補正処理の説明を行う。
図21において、注目画素データの誤差分配される画素の範囲は、誤差分配範囲で示されている、(n+1,m)、(n+2,m)、(n,m+1)、(n+1,m+1)、(n+2,m+1)の5画素である。
図22は、上記の5画素に対する加重係数を示している。図22に示されているように、(n+1,m)及び(n,m+1)の画素に対する加重係数は、「4」である。そして、(n+2,m)及び(n+1,m+1)の画素に対する加重係数は、「2」である。そして、(n+2,m+1)の画素に対する加重係数は、「1」である。
よって注目画素(n,m)の誤差補正を行なう場合の、加重誤差の集計を行なう範囲は、図22における、加重誤差集計範囲に示される、(n−2,m−1)、(n−1,m−1)、(n,m−1)、(n−2,m)、(n−1,m)の5画素となる。
また、その加重係数は、(n,m−1)及び(n−1,m)の画素に対する加重係数は「4」、(n−1,m−1)及び(n−2,m)の画素に対する加重係数は「2」、(n−2,m−1)の画素に対する加重係数は「1」となる。
以降の説明に関しては、前記注目画素に対して、前の画素の加重係数を元に説明を行う事とする。
注目画素(n,m)の入力データDin(n,m)に対する誤差補正後のデータDer(n,m)は、下記のような加重演算処理を行うことにより算出される。
加重演算処理では、まず最初に、各画素の2値化誤差データ(Er)と加重係数との乗算が、以下のように行われる。
E(n−2,m−1)=(n−2,m−1)の加重係数×(n−2,m−1)の2値化誤差データ値
E(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化誤差データ値
E(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化誤差データ値
E(n−2,m)=(n−2,m)の加重係数×(n−2,m)の2値化誤差データ値
E(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化誤差データ値
E(n−2,m−1)=(n−2,m−1)の加重係数×(n−2,m−1)の2値化誤差データ値
E(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化誤差データ値
E(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化誤差データ値
E(n−2,m)=(n−2,m)の加重係数×(n−2,m)の2値化誤差データ値
E(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化誤差データ値
次に、加重演算処理では、各画素の乗算結果の和の算出が、以下のように行われる。
Esum(n,m)=E(n−2,m−1)+E(n−1,m−1)+E(n,m−1)+E(n−2,m)+E(n−1,m)
Error(n,m)=Esum(n,m)/{(n−2,m−1)の加重係数+(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n−2,m)の加重係数+(n−1,m)の加重係数}
Esum(n,m)=E(n−2,m−1)+E(n−1,m−1)+E(n,m−1)+E(n−2,m)+E(n−1,m)
Error(n,m)=Esum(n,m)/{(n−2,m−1)の加重係数+(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n−2,m)の加重係数+(n−1,m)の加重係数}
注目画素データの誤差補正処理は、以下のように、入力された注目画素のデータに、前記誤差補正値Error(n,m)を加算することとなる。
Der(n,m)=Din(n,m)+Error(n,m)
Der(n,m)=Din(n,m)+Error(n,m)
<従来の誤差拡散法の2値化処理>
注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、閾値と比較され、2値化処理が行われる。
注目画素の画像データは、以前の画素の2値化誤差により誤差補正が行われた後、閾値と比較され、2値化処理が行われる。
先に算出された、注目画素に対して誤差補正を行なった値であるDer(n,m)と、予め設定されている2値化閾値(SL)の比較を行う。そして、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、2値化結果の出力であるBin(n,m)が決定される。
例えば、Der(n,m)≧SLの場合、色の出力を行うと判断され、Bin(n,m)=255と決定される。一方、Der(n,m)<SLの場合、色の出力が行われず、Bin(n,m)=0と決定される。
<従来の誤差拡散法を実行するためのハードウェア>
次に、従来の誤差拡散法を実行するためのハードウェアに関する説明を、図23を用いて、以下で行う。図23に示されているように、従来の誤差拡散法を実行するためのハードウェアは、誤差算出部2301、誤差補正2302、2値化処理部2303とを有する。
次に、従来の誤差拡散法を実行するためのハードウェアに関する説明を、図23を用いて、以下で行う。図23に示されているように、従来の誤差拡散法を実行するためのハードウェアは、誤差算出部2301、誤差補正2302、2値化処理部2303とを有する。
<誤差算出部2301>
誤差算出部2301は、注目画素の1画素前の2値化処理結果の誤差データ値の算出を行う。
誤差算出部2301は、注目画素の1画素前の2値化処理結果の誤差データ値の算出を行う。
誤差算出部2301には、1画素前の誤差補正後の画像データであるDer(n−1,m)と、1画素前の2値化結果出力値Bin(n−1,m)(本例の場合、0もしくは255とする)が入力され、1画素前の2値化誤差Er(n−1,m)が出力される。
誤差算出部2301内の減算回路231では、1画素前の2値化処理結果が、「0」の場合の2値化誤差データ値の算出を行なうため、下記の演算が実施される。
Er_0(n−1,m)=Der(n−1,m)−0
誤差算出部2301内の減算回路232では、1画素前の2値化処理結果が、「255」の場合の2値化誤差データ値の算出を行なうため、下記の演算が実施される。
Er_255(n−1,m)=Der(n−1,m)−255
誤差算出部2301内のセレクタ231では、前記2つの2値化誤差データ値Er_0(n−1,m)、Er_255(n−1,m)の入力を行う。そして、1画素前の2値化処理結果Bin(n−1,m)を元にして、以下を行う。即ち、Bin(n−1,m)=0の時は、Er(n−1,m)=Er_0(n−1,m)、Bin(n−1,m)=255の時は、Er(n−1,m)=Er_255(n−1,m)として出力を行う。
Er_0(n−1,m)=Der(n−1,m)−0
誤差算出部2301内の減算回路232では、1画素前の2値化処理結果が、「255」の場合の2値化誤差データ値の算出を行なうため、下記の演算が実施される。
Er_255(n−1,m)=Der(n−1,m)−255
誤差算出部2301内のセレクタ231では、前記2つの2値化誤差データ値Er_0(n−1,m)、Er_255(n−1,m)の入力を行う。そして、1画素前の2値化処理結果Bin(n−1,m)を元にして、以下を行う。即ち、Bin(n−1,m)=0の時は、Er(n−1,m)=Er_0(n−1,m)、Bin(n−1,m)=255の時は、Er(n−1,m)=Er_255(n−1,m)として出力を行う。
前記2値化誤差Er(n−1,m)は、注目画素の誤差補正に使用されるとともに、2値化誤差格納用メモリ2307に格納され、後述するように、1ライン後の画素の2値化を行なう際の誤差補正処理に使用される事となる。
2値化誤差格納用メモリは、ラインメモリ等の記憶媒体からなり、本例においては、1ライン分の2値化誤差の格納を行う事となる。
<誤差補正部2302>
以下で、図23の誤差補正部2302について説明する。
以下で、図23の誤差補正部2302について説明する。
図22の注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化誤差データが存在する。
m−1のラインの2値化誤差データは、2値化誤差格納用メモリ2307に格納されている。
誤差補正部2302は、2値化誤差格納用メモリ2307に格納されている2値化誤差データ及び、(n−2,m)、(n−1,m)の2値化誤差データを使用して、2値化誤差データに対する加重演算を行い、注目画素の誤差補正値の算出を行う。
図23の誤差補正用加重係数1(2308)は、(n−2,m−1)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数2(2309)は、(n−1,m−1)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数3(2310)は、(n,m−1)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数4(2315)は、(n−2,m)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数5(2317)は、(n−1,m)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数の和(2320)は、(n−2,m−1)、(n−1,m−1)、(n,m−1)、(n−2,m)、(n−1,m)の画素に対する加重係数の和を記憶している。
図23の誤差補正用加重係数2(2309)は、(n−1,m−1)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数3(2310)は、(n,m−1)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数4(2315)は、(n−2,m)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数5(2317)は、(n−1,m)の画素に対する加重係数を記憶している。
図23の誤差補正用加重係数の和(2320)は、(n−2,m−1)、(n−1,m−1)、(n,m−1)、(n−2,m)、(n−1,m)の画素に対する加重係数の和を記憶している。
まず、図23の誤差補正部2302では、2値化結果誤差格納用メモリ2307から、(n−2,m−1)、(n−1,m−1)、(n,m−1)の3画素の2値化誤差データの出力を行う。
そして、乗算回路231(2311)は、(n−2,m−1)の画素の2値化誤差データに対して、(n−2,m−1)の加重係数との乗算を行う。また、乗算回路232(2312)は、(n−1,m−1)の画素の2値化誤差データに対して、(n−1,m−1)の加重係数との乗算を行う。また、乗算回路233(2313)は、(n,m−1)の画素の2値化誤差データに対して、(n,m−1)の加重係数との乗算を行う。また、乗算回路234(2316)は、(n−2,m)の画素の2値化誤差データに対して、(n−2,m)の加重係数との乗算を行う。その為、乗算回路234への誤差データ入力は、1画素前の誤差データに対して、フリップフロップ(以降FFとする)FF231等で1クロック分遅延を行なったデータを入力値とする事となる。また、乗算回路235(2318)は、(n−1,m)の画素の2値化誤差データに対して、(n−1,m)の加重係数との乗算を行う。その為、乗算回路235への誤差データ入力は、1画素前の誤差データを入力値とする事となる。
そして、誤差補正部2302は、乗算回路231(2311)、乗算回路232(2312)、乗算回路233(2313)、乗算回路234(2316)、乗算回路235(2318)からの出力値を、加算回路231(2319)に入力する。そして、Esum(n,m)を算出する。そして、誤差補正部2302は、除算回路231(2321)により、加算回路231(2319)から出力されるEsum(n,m)を、加重係数の和(2320)に記憶されている加重係数の和の値で割る。これにより、注目画素に対する誤差補正値であるError(n,m)の算出を行う。その後、加算回路232(2322)によって、入力された注目画素データ値Din(n,m)と、前記誤差補正値Error(n,m)の加算を行なう事により、誤差補正後の注目画素データ値Der(n,m)の出力を行う事となる。
<2値化処理部2303>
2値化処理部2303は、比較回路231(2323)によって、誤差補正後の注目画素の画像データDer(n,m)に対して、予め設定された閾値であるSLとを比較する。そして、注目画素に対して、色を出力する(Bin(n,m)=255)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化処理を行う。Der(n,m)≧SLの場合、比較回路231(2323)は、色の出力を行うと判断し、Bin(n,m)=255の出力を行なう。一方、Der(n,m)<SLの場合、比較回路231(2323)は、色の出力行わないと判断し、Bin(n,m)=0の出力を行なう。
2値化処理部2303は、比較回路231(2323)によって、誤差補正後の注目画素の画像データDer(n,m)に対して、予め設定された閾値であるSLとを比較する。そして、注目画素に対して、色を出力する(Bin(n,m)=255)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化処理を行う。Der(n,m)≧SLの場合、比較回路231(2323)は、色の出力を行うと判断し、Bin(n,m)=255の出力を行なう。一方、Der(n,m)<SLの場合、比較回路231(2323)は、色の出力行わないと判断し、Bin(n,m)=0の出力を行なう。
注目画素の2値化結果Bin(n,m)は、データ出力用のFFであるFF232(2324)を介して、プリンタ等の印字手段に送られる事となる。
また、誤差補正後の注目画素の画像データDer(n,m)は、次の注目画素(n+1,m)の2値化処理の際に、前画素の誤差補正値算出用のデータとして使用される事となる。
次に、図24を用いて、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ3の立ち上がりで注目画素の2値化を行う際には、図24に示されている処理が行われる。
クロックのエッジ1の立ち上がりで2画素前の2値化が完了し2値データの出力が行われ、エッジ2の立ち上がりまでに2画素前の画素の2値化誤差値の算出が行なわれる。
前記2画素前の画素の2値化誤差値は、図23におけるFF231(2314)によって、エッジ2のタイミングで1サイクル分遅延が行なわれる事となる。
クロックのエッジ2の立ち上がりで1画素前の2値化が完了し2値データの出力が行われる。
その時と同じタイミングで、2値化誤差格納用メモリ2307から入力された、注目画素の誤差補正処理に用いる1ライン前の2値化誤差値が入力される。
そして、上記1ライン前の2値化誤差値から1ライン前のエリアに関する係数との乗算が行われる。
同時に、2画素前の2値化誤差値から2画素前の画素に関しての係数との乗算が行なわれる。
また同時に、1画素前の2値化結果と、誤差補正後データから、1画素前の2値化誤差値の算出が行なわれ、その値に対しても1画素前の画素に関しての係数との乗算が行なわれる。
前記各誤差に対する乗算結果に対して、先に説明を行なったように、全ての乗算結果の加算、その加算値に対しての係数の和による除算を行う事により、注目画素に対する誤差補正値Error(n,m)が算出される事となる。
前記注目画素に対する誤差補正値Error(n,m)と、入力された注目画素のデータ値Din(n,m)の和から、注目画素の誤差補正値Der(n,m)の算出を行なう。そして、予め設定されている閾値SLとの比較が行う事により、クロックのエッジ3の立ち上がりで注目画素の2値化が実行され、2値化処理部2303から出力される。
以降、1画素後ろの画素を注目画素として、同様な処理が繰り返される事となる。
以上のように、誤差拡散法の処理結果を1クロックに付き、1画素ずつ出力させるためには、誤差算出処理、誤差補正処理、2値化処理の全ての処理を1クロック以内で完了させる必要がある。
つまり、図23の誤差算出部2301、誤差補正部2302、2値化処理部2303の全ての処理を1クロック以内で完了させる必要がある。
現在、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、従来以上に誤差拡散法に必要な演算の負荷が大きくなってきている。
そのため、早い周波数での動作を行おうとした場合、1クロック以内では、誤差拡散法に必要な各種演算処理が完了しないため、誤差拡散法の高速動作ができない。
そこで、本発明は、誤差拡散法が注目画素で実行する演算の付加を軽くし、誤差拡散法に必要な処理を高速化することを目的とする。
<第1の実施形態>
第1の実施形態における平均濃度保存法を実現するハードウェアは、図6に示されている。
第1の実施形態における平均濃度保存法を実現するハードウェアは、図6に示されている。
<閾値算出部11(601)>
以下では、m−1のラインに関しては、既に2値化処理が完了していて、2値の画像データが存在し、2値の画像データは、2値化結果格納用メモリ602に格納されているものとして、第1の実施形態について説明する。
以下では、m−1のラインに関しては、既に2値化処理が完了していて、2値の画像データが存在し、2値の画像データは、2値化結果格納用メモリ602に格納されているものとして、第1の実施形態について説明する。
閾値算出部11(601)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する加重演算を行い、特に注目画素より前のラインに関する加重演算を行う。
なお、本発明において、注目画素とは、複数の画素のうちの特定画素を指す。
また、本発明において、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
以下で、図6を元に、第1の実施形態について詳細な説明を行う。
閾値算出用加重係数1(603)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(604)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(605)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数1(603)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(604)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(605)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
ここで、加重係数とは、後述する加重演算で用いられる係数である。
閾値算出用加重係数の和(606)には、メモリ等を用いて、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の加重係数の和が記憶されている。
閾値算出用加重係数の和(606)には、メモリ等を用いて、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の加重係数の和が記憶されている。
次に、乗算回路11(607)は、2値化結果格納用メモリ(602)から、(n−1,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n−1,m−1)の加重係数と、画像データのMax値との乗算を行い出力する。ここで、画像データのMax値は、例えば、「255」である。
また、乗算回路12(608)は、2値化結果格納用メモリ(602)から、(n,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n,m−1)の加重係数と、画像データのMax値(例えば、「255」)との乗算を行い出力する。
また、乗算回路13(609)は、2値化結果格納用メモリ(602)から、(n+1,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n+1,m−1)の加重係数と、画像データのMax値との乗算を行い出力する。ここで、画像データのMax値は、例えば、「255」である。
次に、加算回路11(613)は、FF11(610)を経由して、乗算回路11(607)の出力値を受信する。
また、加算回路11(613)は、FF12(611)を経由して、乗算回路12(608)の出力値を受信する。
また、加算回路11(613)は、FF13(612)を経由して、乗算回路13(609)の出力値を受信する。
また、加算回路11(613)は、FF12(611)を経由して、乗算回路12(608)の出力値を受信する。
また、加算回路11(613)は、FF13(612)を経由して、乗算回路13(609)の出力値を受信する。
そして、加算回路11(613)は、乗算回路11(607)の出力値と、乗算回路12(608)の出力値と、乗算回路13(609)の出力値とを加算し、注目画素より前のラインの各画素の乗算結果の和(Ssum_L)を算出して出力する。
次に、除算回路11(615)は、FF14(614)を経由して、加算回路11(613)の出力値(Ssum_L)を受信し、閾値算出用加重係数の和(606)に記憶されている値を受信する。そして、除算回路11(615)は、Ssum_Lを、閾値算出用加重係数の和(606)に記憶されている値で割り、注目画素より1ライン前の注目画素に対する閾値(SL_L(n,m))の算出を行い出力する。以上の演算が、閾値算出部11(601)が行う加重演算である。
<閾値算出部12(617)、閾値算出部13(627)>
閾値算出部12(617)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との演算を行い、特に注目画素の1画素前の画素の2値化結果に対する演算を行う。
閾値算出部12(617)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との演算を行い、特に注目画素の1画素前の画素の2値化結果に対する演算を行う。
閾値算出部12(617)は、注目画素の1画素前の2値化処理が終了する前に、注目画素の1画素前の2値化処理結果が、「1」の場合と、「0」の場合の2通りの場合を想定して、事前に、予め注目画素の1画素前の係数との乗算および除算を行う。
本実施形態では、注目画素の1画素前の2値化処理結果が、「1」の場合の注目画素の1画素前の係数との乗算および除算結果を、SL_1(n,m)とする。また、本実施形態では、注目画素の1画素前の2値化処理結果が、「0」の場合の注目画素の1画素前の係数との乗算および除算結果を、SL_0(n,m)とする。
その後、閾値算出部13(627)は、注目画素の1画素前の2値化処理結果が出た時点で、その出力を元に、SL_1(n,m)、又はSL_0(n,m)のどちらかを選択する。そして、閾値算出部13(627)は、予め算出していた注目画素より前のラインの注目画素に対する閾値(SL_L(n,m))に加算を行い、注目画素に対する閾値SL(n,m)の算出を行う。
以下、図6を用いて、閾値算出部12(617)及び閾値算出部13(627)について、詳細な説明を行う。
閾値算出用加重係数4(619)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数の和(606)には、メモリ等を用いて、(n−1,m)の加重係数の和が記憶されている。
閾値算出用加重係数4(619)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数の和(606)には、メモリ等を用いて、(n−1,m)の加重係数の和が記憶されている。
乗算回路14(621)は、画像データのMax値618と、閾値算出用加重係数4(619)に記憶されている(n−1,m)の加重係数との乗算を実行する。
その後、除算回路12(623)は、乗算回路14(621)から出力される注目画素の1画素前の画素の係数との乗算結果を、閾値算出用加重係数の和(606)に記憶されている値で割る。そして、除算回路12(623)は、この演算により、注目画素の1画素前の注目画素に対する閾値SL_1(n,m)の算出を行う。
乗算回路15(622)は、画像データの最小値(620)(本実施形態では「0」)と、閾値算出用加重係数4(619)に記憶されている(n−1,m)の加重係数との乗算を実行する。
その後、除算回路13(624)は、乗算回路15(622)から出力される注目画素の1画素前の画素の乗算結果を、閾値算出用加重係数の和(606)に記憶されている値で割る。そして、除算回路13(624)は、この演算により、注目画素の1画素前の注目画素に対する閾値(SL_0(n,m))の算出を行う。
閾値算出部13(627)は、セレクタ11(628)と、加算回路12(629)とを有する。
セレクタ11(628)は、注目画素の1画素前の2値化結果を元に、閾値算出部12(617)から出力されるSL_1(n,m)と、SL_0(n,m)のどちらかの選択を行い、その値を加算回路12(629)に入力する。
加算回路12(629)は、予め算出されているSL_L(n,m)と、セレクタ11から出力された、注目画素の1画素前の注目画素の閾値(SL_1(n,m)の値又はSL_0(n,m)の値)の加算を行う。そして、加算回路12(629)は、この演算により、注目画素に対する閾値SL(n,m)の算出を行い、誤差分配部1(634)に出力する。
<2値化処理部1(630)>
2値化処理部1(630)は、注目画素の誤差補正後のデータ(D(n,m))と、閾値算出部13(627)で算出された閾値SL(n,m)とを比較し、2値化処理を行う。
2値化処理部1(630)は、注目画素の誤差補正後のデータ(D(n,m))と、閾値算出部13(627)で算出された閾値SL(n,m)とを比較し、2値化処理を行う。
Er(n−1,m)は、後述する誤差分配部1(634)から出力された、注目画素の1画素前の2値化結果から算出された誤差データである。
誤差データ(Ed)格納用メモリ(631)は、注目画素以前の画素の2値化誤差のうち、Ed(n,m−1)に関する誤差データを格納している。
誤差データEr及びEdに関しては、後述する。
2値化処理部1(630)には、図6に示されているように、以下の3つのデータが入力される。
すなわち、Din(n,m)と、Er(n−1,m)と、Ed(n,m−1)とが2値化処理部1(630)に入力される。ここで、Din(n,m)は、注目画素の入力データである。また、Er(n−1,m)は、注目画素のラインの注目画素の1画素前の2値化処理誤差データである。また、Ed(n,m−1)は、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データである。
加算回路13(632)は、上記3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、2値化処理部1(630)の比較回路11(633)は、注目画素の誤差補正後のデータD(n,m)と、閾値算出部13(627)によって算出された、注目画素に対する閾値SL(n,m)との比較を行う。そして、比較回路11(633)は、注目画素に対して、色を出力する(Bin(n,m)=1)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化結果の出力を行う。
比較回路11(633)は、以下のようにして、Bin(n,m)=1かBin(n,m)=2かの判断を行う。すなわち、D(n,m)≧SL(n,m)の場合、比較回路11(633)は、色の出力を行うと判断し、Bin(n,m)=1と判断する。一方、D(n,m)<SL(n,m)の場合、比較回路11(633)は、色の出力行わないと判断し、Bin(n,m)=0と判断する。
比較回路11(633)により出力された注目画素の2値化結果であるBin(n,m)は、2値化結果格納用メモリ602と、閾値算出部13(627)のセレクタ11(628)にそれぞれ入力される。
2値化結果格納用メモリ(602)に格納されたデータは、2値化処理が終了したラインの次のラインの2値化処理時の閾値算出に用いられる。
閾値算出部13(627)のセレクタ11(628)に入力されたデータは、2値化処理が終了した画素の次の画素の2値化処理時の閾値算出に用いられる。
<誤差分配部1(634)>
誤差分配部1(634)は、閾値算出部13(627)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部1(634)は、閾値算出部13(627)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
まず、誤差分配部1(634)の減算回路11(635)は、閾値算出部13(627)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差であるE(n,m)の算出を行う。
誤差分配部1(634)が実行する処理では、図1のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路14(636)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路15(637)によって行われる。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路14(636)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路15(637)によって行われる。
ここで、誤差算出用係数1(638)には、メモリ等を用いて、2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数(本実施形態では「1/2」)が記憶されている。2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数は、誤差算出用係数1(638)から読み出されて、除算回路14(636)に入力される。
また、誤差算出用係数2(639)には、メモリ等を用いて、2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数(本実施形態では「1/2」)が記憶されている。2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数は、誤差算出用係数2(639)から読み出されて、除算回路15(637)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ631に入力される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、2値化処理部1(630)の加算回路13(632)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ631に入力される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、2値化処理部1(630)の加算回路13(632)に入力される。
誤差データ(Ed)格納用メモリ631に格納された誤差データ(Ed(n,m))は、(n,m)の注目画素のラインの次のラインの2値化処理時の2値化処理部1(630)での誤差補正に用いられる。
2値化処理部1(630)の加算回路13(632)に入力された誤差データ(Er(n,m))は、(n,m)の注目画素の次の画素の2値化処理時の2値化処理部1(630)での誤差補正に用いられる。
次に、図7を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ5の立ち上がりで注目画素の2値化を行う際には、図7に示されている処理が行われる。
図6の閾値算出部11(601)における、注目画素より1ライン前の注目画素に対する閾値SL_L(n,m)の算出は、エッジ1から開始され、エッジ4にて処理が完了する。
具体的には、クロックのエッジ1によって、2値化結果格納用メモリ(602)から、注目画素の前のラインの2値化結果データの入力が行われる。
その後、図6の乗算回路11(607)、乗算回路12(608)、乗算回路13(609)、によって各画素の係数との乗算が実行される。そして、その乗算結果は、クロックのエッジ2のタイミングで、それぞれフリップフロップ(以降「FF」とする)FF11(610)、FF12(611)、FF13(612)によって叩かれる。
FF11(610)、FF12(611)、FF13(612)によって叩かれたデータは、図6の加算回路11(615)に入力され、Ssum_Lが算出される。
Ssum_Lのデータは、クロックのエッジ3のタイミングでFF14(614)によって、叩かれる。
FF14(614)によって叩かれたデータは、図6の除算回路11(615)に入力され、注目画素より前のラインの注目画素に対する閾値SL_L(n,m)が算出される。
SL_L(n,m)のデータは、クロックのエッジ4のタイミングでFF15(616)によって、叩かれて閾値算出部11(601)から出力される。
図6の閾値算出部12(617)における、注目画素の1画素前の注目画素に対する閾値SL_1(n,m)と、注目画素1画素前の注目画素に対する閾値SL_0(n,m)は、エッジ4にて処理が完了する。
具体的には、クロックのエッジ3のタイミングで、閾値算出部12(617)で必要となる各種データの入力が行われる。そして、乗算回路14(621)及び除算回路12(623)、乗算回路15(622)及び除算回路13(624)、の演算処理が実行され、SL_1(n,m)及び、SL_0(n,m)の値が算出される。
SL_1(n,m)及び、SL_0(n,m)の値は、クロックのエッジ4のタイミングで、それぞれFF16(625)、FF17(626)によって叩かれて、閾値算出部12(617)から出力される。
クロックのエッジ4のタイミングで出力された、注目画素より前のラインの注目画素に対する閾値SL_L(n,m)及び、注目画素1画素前の注目画素に対する閾値SL_1(n,m)と、SL_0(n,m)は、閾値算出部13(627)に入力される。
以降、説明を行う処理に関しては、クロックのエッジ4からエッジ5の1サイクルの間で実行される。
図6の閾値算出部13(627)に入力された、注目画素1画素前の注目画素に対する閾値SL_1(n,m)と、SL_0(n,m)は、エッジ4のタイミングで出力される1画素前の2値化の処理結果を元に、どちらかの値が選択される。
上記の選択されたデータと、閾値算出部13(627)に入力された、注目画素より前のラインの注目画素に対する閾値SL_L(n,m)の加算が、図6の加算回路12(629)により行われる。そして、注目画素の閾値SL(n,m)が閾値演算部13(627)から出力される。
また、それと同時に、図6の2値化処理部1(630)は、Din(n,m)に対して、Er(n−1,m)と、Ed(n,m−1)により、注目画素に対する誤差補正を行う。
そして、上記処理によって算出された注目画素に対する閾値SL(n,m)と、注目画素の誤差補正データD(n,m)との比較が行われ、クロックのエッジ5の立ち上がりで注目画素の2値化が実行され、2値化処理部1(630)から出力される。
以上のように、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の1画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
また、注目画素に対して1画素前の画素の係数との乗算、除算に関しては、2画素前の画素を処理するタイミングで、1画素前の処理結果が「1」の場合と「0」の場合の両方を想定して、事前に、演算される。そして、1画素前の2値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
つまり、1画素前の画素の係数との乗算、除算に関しては、予め1画素前の2値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することが可能となる。
<第2の実施形態>
第2の実施形態では、平均濃度保存法をハードウェアで構成するにあたり、注目画素のラインの2画素以上前の2値化結果を閾値算出に用いる。
第2の実施形態では、平均濃度保存法をハードウェアで構成するにあたり、注目画素のラインの2画素以上前の2値化結果を閾値算出に用いる。
第2の実施形態の説明を行うにあたり、注目画素のラインの2画素以上前の2値化結果を閾値算出に用いる従来技術の説明もあわせて行う。
まず、注目画素のラインの2画素以上前の2値化結果を閾値算出に用いる従来技術について詳細な説明を行う。
従来技術については、平均濃度保存法に関して、閾値算出、2値化処理、誤差分配のような3つの処理を元にして、詳細な説明を行う。
<従来技術における閾値算出>
2値化処理を行う注目画素を(n,m)とした時、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「1」または「0」)が存在する。
2値化処理を行う注目画素を(n,m)とした時、mラインで、n−1以前の画素に関しては、既に2値化処理が完了していて、2値の画像データ(「1」または「0」)が存在する。
同様に、m−1以前のラインに関しても、既に2値化処理が完了していて、2値の画像データが存在する。
閾値算出処理では、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する加重演算を行うことで、注目画素の閾値の算出を行う。
以下で、図8を用いて、従来技術における閾値算出について詳細な説明を行う。
ここで、図8に示されているように、閾値算出に用いる画素の範囲を、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−2,m)、(n−1,m)の5画素の範囲とする。
図9に示されているように、上記の各画素に対する加重係数が、(n−1,m−1)には「1」、(n,m−1)には「2」、(n+1,m−1)には「1」、(n−2,m)には「1」、(n−1,m)には「2」と、設定される。
次に、注目画素以前の画素の2値化処理結果に対して、色を出力する部分の値を「画像データのMax値」(本実施形態では「255」とする)、色を出力しない部分の値を「0」として、加重演算処理が行われる。
そして、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理を行うことにより求められる。
まず、各画素の係数との乗算が以下のように行われる。
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化処理結果値×画像データのMax値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化処理結果値×画像データのMax値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の2値化処理結果値×画像データのMax値
S(n−2,m)=(n−2,m)の加重係数×(n−2,m)の2値化処理結果値×画像データのMax値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化処理結果値×画像データのMax値
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の2値化処理結果値×画像データのMax値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の2値化処理結果値×画像データのMax値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の2値化処理結果値×画像データのMax値
S(n−2,m)=(n−2,m)の加重係数×(n−2,m)の2値化処理結果値×画像データのMax値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の2値化処理結果値×画像データのMax値
次に、各画素の乗算結果の和の算出が行われる。
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−2,m)+S(n−1,m)
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−2,m)+S(n−1,m)
次に、上記の乗算結果の和に対する補正が行われる。
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−2,m)の加重係数+(n−1,m)の加重係数}
したがって、例えば、注目画素以前の画素の2値化処理結果が、図10のような場合、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理が行われる。
SL(n,m)={(1x0x255)+(2x0x255)+(1x1x255)+(1x1x255)+(2x1x255)}/(1+2+1+1+2)=146
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−2,m)の加重係数+(n−1,m)の加重係数}
したがって、例えば、注目画素以前の画素の2値化処理結果が、図10のような場合、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理が行われる。
SL(n,m)={(1x0x255)+(2x0x255)+(1x1x255)+(1x1x255)+(2x1x255)}/(1+2+1+1+2)=146
<従来技術における2値化処理>
注目画素の画像データは、以前の画素の2値化誤差により誤差補正が実行された後、閾値と比較され、2値化処理が行われる。
注目画素の画像データは、以前の画素の2値化誤差により誤差補正が実行された後、閾値と比較され、2値化処理が行われる。
本処理では、実施形態1と同様に、図8に示されているように、注目画素のラインの注目画素の次の画素と、注目画素の1ライン下のラインの注目画素と同じ位置に誤差が分配される。このため、注目画素に対して、注目画素のラインの注目画素の1画素前の画素からの誤差データと、注目画素の1ライン前の同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
ここで、(n,m)の注目画素の入力データをDin(n,m)とする。また、注目画素のラインの注目画素の1画素前の2値化処理誤差データをEr(n−1,m)とする。また、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データをEd(n,m−1)とする。このとき、誤差補正後の注目画素の画像データであるD(n,m)の算出は、下記のような演算により行われる。
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=120、Er(n−1,m)=14、Ed(n,m−1)=−8の場合、誤差補正後のデータであるD(n,m)は、下記のような値となる。
D(n,m)=120+14+(−8)=126
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=120、Er(n−1,m)=14、Ed(n,m−1)=−8の場合、誤差補正後のデータであるD(n,m)は、下記のような値となる。
D(n,m)=120+14+(−8)=126
誤差データEr及びEdに関しては、後述する。
次に、D(n,m)と、先に算出された、注目画素に対する閾値であるSL(n,m)との比較を行い、注目画素に対して、色を出力するか、色を出力しないかの判断が、以下のように行われ、2値化結果の出力であるBin(n,m)が決定される。
例えば、D(n,m)≧SL(n,m)の場合、色の出力を行うと判断され、Bin(n,m)=1と決定される。一方、D(n,m)<SL(n,m)の場合、色の出力が行われず、Bin(n,m)=0と決定される。
例えば、上述した例では、D(n,m)=126、SL(n,m)=146であるので、「D(n,m)<SL(n,m)」となり、注目画素には色の出力が行われないと判断され、Bin(n,m)=0と決定される。
例えば、D(n,m)≧SL(n,m)の場合、色の出力を行うと判断され、Bin(n,m)=1と決定される。一方、D(n,m)<SL(n,m)の場合、色の出力が行われず、Bin(n,m)=0と決定される。
例えば、上述した例では、D(n,m)=126、SL(n,m)=146であるので、「D(n,m)<SL(n,m)」となり、注目画素には色の出力が行われないと判断され、Bin(n,m)=0と決定される。
<従来技術における誤差分配>
次に、閾値であるSL(n,m)と、誤差補正後の画像データであるD(n,m)との差が、2値化誤差であるE(n,m)として、以降の処理画素に分配される。
E(n,m)=SL(n,m)−D(n,m)
誤差分配の処理では、図8のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
次に、閾値であるSL(n,m)と、誤差補正後の画像データであるD(n,m)との差が、2値化誤差であるE(n,m)として、以降の処理画素に分配される。
E(n,m)=SL(n,m)−D(n,m)
誤差分配の処理では、図8のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、注目画素の1ライン下の注目画素と同じ位置の画素への分配される誤差データをEd(n,m)とする。このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素の2箇所に対して、E(n,m)の1/2ずつ、分配される。
この場合、Er(n,m)=E(n,m)/2、Ed(n,m)=E(n,m)/2となる。
例えば、上述した例では、E(n,m)=SL(n,m)−D(n,m)=146−126=20と算出される。そして、Er(n,m)=E(n,m)/2=20/2=10、Ed(n,m)=E(n,m)/2=20/2=10となる。
上記のEr(n,m)は、Din(n+1,m)の誤差補正に用いられ、Ed(n,m)は、Din(n,m+1)の誤差補正に用いられる。
<従来技術のハードウェア>
従来例2における平均濃度保存法を実現するハードウェアは、図11に示されているようになる。
従来例2における平均濃度保存法を実現するハードウェアは、図11に示されているようになる。
<閾値算出部2(1101)>
注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化された画像データが存在する。
注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化された画像データが存在する。
それらの2値化された画像データは、2値化結果格納用メモリ1102に格納されている。
閾値算出部2(1101)は、2値化結果格納用メモリ1102に格納されている2値化処理の終わった画像データに対する加重演算を行い、注目画素の閾値の算出を行う。
閾値算出用加重係数1(1103)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(1104)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1105)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数4(1108)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数5(1106)には、メモリ等を用いて、(n−2,m)の加重係数が記憶されている。
閾値算出用加重係数2(1104)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1105)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数4(1108)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数5(1106)には、メモリ等を用いて、(n−2,m)の加重係数が記憶されている。
閾値算出用加重係数(1109)には、メモリ等を用いて、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−2,m)、(n−1,m)の画素に対する加重係数の和が記憶されている。
図11の閾値算出部2(1101)は、2値化結果格納用メモリ1102から、(n−1,m−1)、(n,m−1)、(n+1,m−1)の3画素の2値化された画像データの出力を行う。
そして、乗算回路21(1110)は、(n−1,m−1)の画素の2値化された画像データに対して、(n−1,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路22(1111)は、(n,m−1)の画素の2値化された画像データに対して、(n,m−1)の加重係数と、画像データのMax値との乗算を行う。
また、乗算回路23(1112)は、(n+1,m−1)の画素の2値化された画像データに対して、(n+1,m−1)の加重係数と、画像データのMax値との乗算を行う。
閾値算出部2(1101)は、(n−1,m)の画素の2値化された画像データとして、直前の2値化処理で出力された2値化結果Bin(n,m)を、そのまま乗算回路24(1114)に入力する。そして、乗算回路24(1114)は、閾値算出用加重係数4(1108)に記憶されている(n−1,m)の画素の加重係数と、画像データのMax値との乗算を行う。
また、閾値算出部2(1101)は、(n−2,m)の画素の2値化された画像データとして、直前の2値化処理で出力された2値化結果Bin(n,m)をFF21(1107)で1クロック分叩き出したデータを、乗算回路25(1113)に入力する。そして、乗算回路25(1113)は、閾値算出用加重係数5(1106)に記憶されている(n−2,m)の画素の加重係数と、画像データのMax値との乗算を行う。
そして、閾値算出部2(1101)は、乗算回路21(1110)、乗算回路22(1111)、乗算回路23(1112)、乗算回路24(1114)、乗算回路25(1113)、からの出力値を、加算回路21(1115)に入力する。そして、閾値算出部2(1101)は、この演算により、Ssum(n,m)を算出する。
そして、閾値算出部2(1101)は、除算回路21(1116)により、加算回路21(1115)から出力されるSsum(n,m)を、閾値算出用加重係数の和(1109)に記憶されている加重系数の和の値で割る。そして、閾値算出部2(1101)は、この演算により、注目画素に対する閾値であるSL(n,m)の算出を行う。
<2値化処理部2(1117)>
2値化処理部2(1117)は、注目画素の画像データに対して、以前の画素の2値化誤差により誤差補正が行われたD(n,m)と、閾値算出部2(1101)で算出された閾値であるSL(n,m)とを比較し、2値化処理を行う。
2値化処理部2(1117)は、注目画素の画像データに対して、以前の画素の2値化誤差により誤差補正が行われたD(n,m)と、閾値算出部2(1101)で算出された閾値であるSL(n,m)とを比較し、2値化処理を行う。
図11の2値化処理部2(1117)の加算回路22(1119)には、Din(n,m)と、後述する誤差分配部2(1121)から出力される、注目画素の1画素前の2値化処理により算出された誤差データEr(n−1,m)とが入力される。
誤差データ(Ed)格納用メモリ(1118)は、注目画素以前の画素の2値化誤差のうち、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データであるEd(n,m−1)を格納している。
誤差データEr及びEdに関しては、後述する。
図11に示されているように、2値化処理部2(1117)には、以下の3つのデータが入力される。すなわち、Din(n,m)と、注目画素のラインの注目画素の1画素前の2値化処理誤差データEr(n−1,m)と、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データEd(n,m−1)とが2値化処理部2(1117)に入力される。ここで、Din(n,m)は、注目画素の入力データである。
2値化処理部2(1117)の加算回路22(1119)は、Din(n,m)と、Er(n−1,m)と、Ed(n,m−1)の3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、2値化処理部2(1117)の比較回路21(1120)は、注目画素の誤差補正後のデータD(n,m)と、閾値算出部2(1101)によって算出された、注目画素に対する閾値SL(n,m)との比較を行う。そして、2値化処理部2(1117)の比較回路21(1120)は、注目画素に対して、色を出力する(Bin(n,m)=1)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化結果の出力を行う。
比較回路21(1120)は、以下のようにして、Bin(n,m)=1かBin(n,m)=2かの判断を行う。すなわち、D(n,m)≧SL(n,m)の場合、比較回路21(1120)は、色の出力を行うと判断し、Bin(n,m)=1と判断する。一方、D(n,m)<SL(n,m)の場合、比較回路21(1120)は、色の出力行わないと判断し、Bin(n,m)=0と判断する。
比較回路21(1120)により出力された注目画素の2値化結果であるBin(n,m)は、2値化結果格納用メモリ1102と、閾値算出部2(1101)の乗算回路24(1114)、またFF21(1107)にそれぞれ入力される。
2値化結果格納用メモリ1102に格納されたデータは、2値化処理が終了したラインの次のラインの2値化処理時の閾値算出に用いられる。
閾値算出部2(1101)の乗算回路24(1114)に入力されたデータは、次の画素の2値化処理時の閾値算出に用いられる。
FF21(1107)に入力されたデータは、FF21(1107)によってい1ロック叩かれることにより、2画素後ろを注目画素とした場合の2値化処理時の閾値算出に用いられる。
<誤差分配部2(1121)>
誤差分配部2(1121)では、閾値算出部2(1101)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部2(1121)では、閾値算出部2(1101)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
まず、誤差分配部2(1121)の減算回路21(1121)は、閾値算出部2(1101)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差であるE(n,m)の算出を行う。
誤差分配部2(1121)が実行する処理では、図8のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素の2箇所に対して、1/2ずつ、誤差データが分配される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路22(1124)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路23(1125)によって行われる。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路22(1124)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路23(1125)によって行われる。
ここで、誤差算出用係数1(1122)には、2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数が記憶されている。2値化誤差であるE(n,m)からEr(n,m)が算出される際の係数は、誤差算出用係数1(1122)から読み出されて、除算回路22(1124)に入力される。
また、誤差算出用係数2(1123)には、2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数が記憶されている。2値化誤差であるE(n,m)からEd(n,m)が算出される際の係数は、誤差算出用係数2(1123)から読み出されて、除算回路23(1125)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ(1118)に格納される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、2値化処理部2(1117)の加算回路22(1119)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ(1118)に格納される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、2値化処理部2(1117)の加算回路22(1119)に入力される。
誤差データ(Ed)格納用メモリ(1118)に格納された誤差データ(Ed(n,m))は、(n,m)の注目画素のラインの次のラインの2値化処理時の2値化処理部2(1117)での誤差補正に用いられる。
2値化処理部の加算回路22(1119)に入力された誤差データ(Er(n,m))は、(n,m)の注目画素の次の画素の2値化処理時の2値化処理部2(1117)での誤差補正に用いられる。
<従来技術の問題点>
上記の従来技術では、平均濃度保存法の処理結果を1クロックに付き、1画素ずつ出力させるためには、閾値算出処理、2値化処理、誤差分配処理の全ての処理を1クロック以内で完了させる必要がある。
上記の従来技術では、平均濃度保存法の処理結果を1クロックに付き、1画素ずつ出力させるためには、閾値算出処理、2値化処理、誤差分配処理の全ての処理を1クロック以内で完了させる必要がある。
つまり、図11の閾値算出部2(1101)、2値化処理部2(1117)、誤差分配部2(1121)の全ての処理を1クロック以内で完了させる必要がある。
次に、図12を用いて、従来技術における、クロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ3の立ち上がりで注目画素の2値化を行う際には、図12のような処理が行われる。
クロックのエッジ3の立ち上がりで1画素前の2値化が完了し2値データの出力が行われたときと同じタイミングで、2値化結果格納用メモリ1102から入力された、注目画素の閾値算出に用いられる1ライン前の2値化結果が入力される。
次に、1ライン前の2値化結果から1ライン前のエリアに関する加重演算が行われる。
2画素前の2値化結果に関しては、FF21(1107)により、クロックのエッジ2によって、1クロック遅延処理が行われ、2画素前の画素に関しての加重係数との乗算及び、除算の演算が行われる。
また同時に、1画素前の2値化結果から1画素前の画素に関しての加重係数との乗算及び除算が行われる。そして、その乗算及び除算の結果と、2画素前の画素に関する演算の結果及び、1ライン前のエリアに関する加重演算の結果から、注目画素に対する閾値の算出が行われる。
上記の処理と並行して、Din(n,m)に対して、2値化処理誤差データ(Er(n−1,m))と、誤差データ(Ed)格納用メモリ(1118)から入力された、2値化処理誤差データ(Ed(n,m−1))により、注目画素に対する誤差補正が行われる。
そして、上記処理によって算出された注目画素に対する閾値SL(n,m)と、注目画素の誤差補正データD(n,m)との比較が行われ、クロックのエッジ3の立ち上がりで注目画素の2値化が実行され、2値化処理部2(1117)から出力される。
以降、次のエッジ4では、1画素後ろの画素を注目画素として、同じ処理が繰り返される。
現状では、閾値算出処理時の乗算や加算、除算、誤差分配処理時の減算や除算などを、順次行っていく必要がある。
また、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、これまで以上に演算の負荷が大きくなってきている。
その為、早い周波数での動作を行おうとした場合、1クロック以内では、各種演算処理が完了しないため、高速動作が出来ないという問題が起きている。
以下で、第2の実施形態に関して、詳細な説明を行う。
まず、図13を用いて、第2の実施形態におけるハードウェアについて、詳細な説明を行う。
<閾値算出部31(1301)>
注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化された画像データが存在する。
注目画素(n,m)の周囲のm−1のラインに関しては、既に2値化処理が完了していて、2値化された画像データが存在する。
それらの2値化された画像データは、2値化結果格納用メモリ1302に格納されている。
閾値算出処理部31(1301)は、2値化結果格納用メモリ1302に格納されている2値化処理の終わった画素データに対する加重演算を行う。閾値算出処理部31(1301)は、特に注目画素より前のラインに関する加重演算を行う。
閾値算出用加重係数1(1303)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(1304)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1305)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(1304)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1305)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数の和(1306)には、メモリ等を用いて、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−2,m)、(n−1,m)の画素に対する加重係数の和が記憶されている。
図13の閾値算出部31(1301)は、2値化結果格納用メモリ1302から、(n−1,m−1)、(n,m−1)、(n+1,m−1)の3画素の2値化された画像データの出力を行う。
そして、乗算回路31(1307)は、2値化結果格納用メモリ(1302)から、(n−1,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n−1,m−1)の加重係数と、画像データのMax値との乗算を行い出力する。ここで、画像データのMax値は、例えば、「255」である。
また、乗算回路32(1308)は、2値化結果格納用メモリ(1302)から、(n,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n,m−1)の加重係数と、画像データのMax値との乗算を行い出力する。ここで、画像データのMax値は、例えば、「255」である。
また、乗算回路33(1309)は、2値化結果格納用メモリ(1302)から、(n+1,m−1)の画素の2値化されたデータを受信し、2値化されたデータと、(n+1,m−1)の加重係数と、画像データのMax値との乗算を行い出力する。ここで、画像データのMax値は、例えば、「255」である。
次に、加算回路31(1313)は、FF31(1310)を経由して、乗算回路31(1307)の出力値を受信する。
また、加算回路31(1313)は、FF32(1311)を経由して、乗算回路32(1308)の出力値を受信する。
また、加算回路31(1313)は、FF33(1312)を経由して、乗算回路33(1309)の出力値を受信する。
また、加算回路31(1313)は、FF32(1311)を経由して、乗算回路32(1308)の出力値を受信する。
また、加算回路31(1313)は、FF33(1312)を経由して、乗算回路33(1309)の出力値を受信する。
そして、加算回路31(1313)は、乗算回路31(1307)の出力値と、乗算回路32(1308)の出力値と、乗算回路33(1309)の出力値とを加算し、注目画素より前のラインの各画素の係数との乗算結果の和(Ssum_L)を算出する。そして、算出結果を出力する。
次に、除算回路31(1315)は、FF34(1314)を経由して、加算回路31(1313)の出力値(Ssum_L)を受信し、閾値算出用加重係数の和(1306)に記憶されている値を受信する。そして、除算回路31(1315)は、加算回路31(1313)から出力される注目画素より前のラインの各画素の係数との乗算結果の和Ssum_Lを、閾値算出用加重係数の和(1306)に記憶されている値で割り、SL_L(n,m)の算出を行う。そして、算出結果を出力する。ここで、SL_L(n,m)は、注目画素より1ライン前の注目画素に対する閾値である。以上の演算が、閾値算出部31(1301)が行う加重演算である。
<閾値算出部32(1321)>
閾値算出部32(1321)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との乗算及び除算を行い、特に注目画素の1画素前の画素の2値化結果に対する演算を行う。
閾値算出部32(1321)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との乗算及び除算を行い、特に注目画素の1画素前の画素の2値化結果に対する演算を行う。
閾値算出部32(1321)は、注目画素の1画素前の2値化処理が終了する前に、注目画素の1画素前の2値化処理結果が、「1」の場合を想定して、事前に、予め注目画素の1画素前の係数との乗算及び除算を行う。
本実施形態では、注目画素の1画素前の2値化処理結果が、「1」の場合の注目画素の1画素前の係数との乗算及び除算結果を、SL_1(n,m)とする。
本実施形態では、注目画素の1画素前の2値化処理結果が、「0」の場合、閾値算出部34(1327)で加算される値は、「0」となる為、特に演算回路を用いず、閾値算出部34(1327)において、「0」の値をセレクタ31(1329)に入力される。
その後、閾値算出部34(1327)は、注目画素に対する閾値SL(n,m)の算出を行う。
以下、図13を用いて、閾値算出部32(1321)について、詳細な説明を行う。
閾値算出用加重係数4(1323)には、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数の和(1306)には、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−2,m)、(n−1,m)の加重係数の和が記憶されている。
乗算回路35(1324)は、画像データのMax値1322と、閾値算出用加重係数4(1323)に記憶されている(n−1,m)の加重係数との乗算を実行する。
その後、除算回路32(1325)は、乗算回路35(1324)から出力される注目画素の1画素前の画素の係数との乗算結果を、閾値算出用加重係数の和(1306)に記憶されている値で割る。そして、除算回路32(1325)は、この演算により、注目画素の1画素前の注目画素に対する閾値SL_1(n,m)の算出を行う。
<閾値算出部33(1318)>
閾値算出部33(1318)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との乗算を行い、特に注目画素2画素前の係数との乗算を行う。
閾値算出部33(1318)は、注目画素以前のすでに2値化処理の終わった画素の2値化結果に対する係数との乗算を行い、特に注目画素2画素前の係数との乗算を行う。
注目画素2画素前の係数との乗算を行う場合、従来技術では、図11のように、2画素前の2値化処理から出力される2値出力データBin(n,m)を、FF21(1107)により1回叩くことにより、1クロック分遅延させる。その後、乗算回路25(1113)、加算回路21(1115)、除算回路21(1116)が、演算処理を行って、注目画素の閾値SL(n,m)を算出する。
しかし、本実施形態では、2画素前の2値化処理から出力される2値化結果であるBin(n,m)が、閾値算出部33(1318)にそのまま入力され、乗算回路34(1319)による演算処理が行われる。その後、乗算回路34(1319)の出力がFF37(1320)により1回叩かれる。
そして、その後の除算処理は、閾値算出部34(1327)の除算回路33(1330)により行われる。また、注目画素の前のラインや1画素前の2値化結果から算出される閾値との加算は、加算回路32(1331)により行われる。
すなわち、本実施形態では、2画素前の2値化処理結果に対する係数との演算については、1サイクル以内で、その演算に含まれる乗算、加算、除算の全ての処理は行われない。
つまり、本実施形態では、2画素前の2値化処理結果に対する乗算及び除算の結果は、注目画素の2値化処理を行うまでに完了して、その値を用いることができるようになっている。よって、本実施形態では、2画素前の2値化処理結果に対する係数との演算は、2サイクルで処理が行われる。
これにより、本実施形態では、1サイクル以内で、行う演算処理が分散され、より高い周波数のクロックでの動作の実現が可能となる。
以下で、図13を用いて、閾値算出部33に関して詳細な説明を行う。
閾値算出用加重係数5(1317)には、(n−2,m)の加重係数が記憶されている。
乗算回路34(1319)は、2値化処理部3(1332)から入力された2値データと、閾値算出用加重係数5(1317)に記憶されている(n−2,m)の加重係数との乗算を実行する。そして、乗算回路34(1319)は、その乗算から得られた値を、SL_2(n,m)として、FF37(1320)を経由して、閾値算出部33(1318)から出力する。
<閾値算出部34(1327)>
閾値算出部34(1327)は、除算回路33(1330)と、セレクタ31(1329)と、加算回路32(1331)とを有する。
閾値算出部34(1327)は、除算回路33(1330)と、セレクタ31(1329)と、加算回路32(1331)とを有する。
除算回路33(1330)は、閾値算出部33(1318)からの出力値SL_2(n,m)を、閾値算出用加重係数の和(1306)に記憶されている、各画素の加重係数の和によって除算を行う。そして、除算回路33(1330)は、除算結果SL_3(n,m)の出力を行う。
セレクタ31(1329)は、SL_1(n,m)と、注目画素の1画素前の2値化結果が「0」である場合を想定した、注目画素1画素前の注目画素に対する閾値「0」(1328)のどちらかの選択を行い、その値を加算回路32(1331)に入力する。
加算回路32(1331)は、予め算出されている、SL_L(n,m)と、セレクタ31(1329)から出力された、注目画素の1画素前の注目画素の閾値(SL_1(n,m)の値又は「0」の値)と、SL_3(n,m)との加算を行う。そして、加算回路32(1331)は、その加算から得られる注目画素に対する閾値SL(n,m)の算出を行う。
<2値化処理部3(1332)>
2値化処理部3(1332)は、注目画素の誤差補正後のデータ(D(n,m))と、閾値算出部34(1327)で算出された閾値SL(n,m)とを比較し、2値化処理を行う。
2値化処理部3(1332)は、注目画素の誤差補正後のデータ(D(n,m))と、閾値算出部34(1327)で算出された閾値SL(n,m)とを比較し、2値化処理を行う。
Er(n−1,m)は、後述する誤差分配部3(1336)から出力された、注目画素の1画素前の2値化結果から算出された誤差データである。
誤差データ(Ed)格納用メモリ(1333)は、注目画素以前の画素の2値化誤差のうち、Ed(n,m−1)に関する誤差データを格納している。
誤差データEr及びEdに関しては、後述する。
2値化処理部3(1332)には、図13に示されているように、以下の3つのデータが入力される。
すなわち、Din(n,m)と、Er(n−1,m)、Ed(n,m−1)とが2値化処理部3(1332)に入力される。ここで、Din(n,m)は、注目画素の入力データである。また、Er(n−1,m)は、注目画素のラインの注目画素の1画素前の2値化処理誤差データである。また、Ed(n,m−1)は、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データである。
加算回路33(1334)は、上記3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、2値化処理部3(1332)の比較回路31(1335)は、注目画素の誤差補正後のデータD(n,m)と、閾値算出部34(1327)によって算出された、注目画素に対する閾値SL(n,m)との比較を行う。そして、比較回路31(1335)は、注目画素に対して、色を出力する(Bin(n,m)=1)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化結果の出力を行う。
比較回路31(1335)は、以下のようにして、Bin(n,m)=1かBin(n,m)=2かの判断を行う。すなわち、D(n,m)≧SL(n,m)の場合、比較回路31(1335)は、色の出力を行うと判断し、Bin(n,m)=1と判断する。一方、D(n,m)<SL(n,m)の場合、比較回路31(1335)は、色の出力行わないと判断し、Bin(n,m)=0と判断する。
比較回路31(1335)により出力されたBin(n,m)は、2値化結果格納用メモリ(1302)と、閾値算出部33(1318)の乗算回路34(1319)及び、閾値算出部34(1327)のセレクタ31(1329)にそれぞれ入力される。
2値化結果格納用メモリ(1302)に格納されたデータは、2値化処理が終了したラインの次のラインの2値化処理時の閾値算出に用いられる。
閾値算出部33(1318)の乗算回路34(1319)に入力されたデータは、2値化処理が終了した画素の2画素後の画素の2値化処理時の閾値算出に用いられる。
閾値算出部34(1327)のセレクタ31(1329)に入力されたデータは、2値化処理が終了した画素の次の画素の2値化処理時の閾値算出に用いられる。
<誤差分配部3(1336)>
誤差分配部3(1336)は、閾値算出部34(1327)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部3(1336)は、閾値算出部34(1327)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差を2値化誤差E(n,m)として、処理される画素に分配する。
まず、誤差分配部3(1336)の減算回路31(1337)は、閾値算出部34(1327)によって算出された注目画素の閾値であるSL(n,m)と、注目画素の誤差補正後のデータであるD(n,m)との差であるE(n,m)の算出を行う。
誤差分配部3(1336)が実行する処理では、図8のように、注目画素に対して、注目画素のラインの1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
本実施形態では、演算処理の軽減の為、注目画素の閾値SL(n,m)と、注目画素の誤差補正後のデータD(n,m)との差E(n,m)の値に対して除算回路による処理が行われない。その代わり、ビットシフト31(1338)によって、データE(n,m)の最下位1ビットを削除することにより、データE(n,m)を2で除算したのと同等の値が、Ed(n,m)およびEr(n,m)として出力される。
そして、Ed(n,m)は、誤差データ(Ed)格納用メモリ(1333)に入力される。
また、Er(n,m)は、2値化処理部3(1332)の加算回路33(1334)に入力される。
誤差データ(Ed)格納用メモリ(1333)に格納されたデータは、注目画素のラインの次のラインの2値化処理時の2値化処理部での誤差補正に用いられる。
2値化処理部3(1332)の加算回路33(1334)に入力されたデータは、注目画素の次の画素の2値化処理時の2値化処理部3(1332)での誤差補正に用いられる。
次に、第2の実施形態でのクロックと処理のタイミングに関して、詳細な説明を行う。
具体的には、図14を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ5の立ち上がりで注目画素の2値化を行う際には、図14に示されている処理が行われる。
図13の閾値算出部31(1301)における、注目画素より1ライン前の注目画素に対する閾値SL_L(n,m)の算出は、エッジ1から開始され、エッジ4にて処理が完了する。
具体的には、クロックのエッジ1によって、2値化結果格納用メモリ(1302)から、注目画素の前のラインの2値化結果データの入力が行われる。
その後、図13の乗算回路31(1307)、乗算回路32(1308)、乗算回路33(1309)、によって各画素の係数との乗算が実行される。、その乗算の結果は、クロックのエッジ2のタイミングで、それぞれFF31(1310)、FF32(1311)、FF33(1312)によって叩かれる。
FF31(1310)、FF32(1311)、FF33(1312)によって叩かれたデータは、図13の加算回路31(1313)に入力され、Ssum_Lが算出される。
Ssum_Lのデータは、クロックのエッジ3のタイミングでFF34(1314)によって、叩かれる。
FF34(1314)によって叩かれたデータは、図13の除算回路31(1315)に入力され、注目画素より前のラインの注目画素に対する閾値SL_L(n,m)が算出される。
SL_L(n,m)のデータは、クロックのエッジ4のタイミングでFF35(1316)によって、叩かれて閾値算出部31(1301)から出力される。
図13の閾値算出部32(1321)における、注目画素の1画素前の注目画素に対する閾値SL_1(n,m)は、エッジ4にて処理が完了する。
具体的には、クロックのエッジ3のタイミングで、閾値算出部32(1321)で必要となる各種データの入力が行わる。そして、乗算回路35(1324)及び除算回路32(1325)の演算処理が実行され、SL_1(n,m)の値が算出される。
SL_1(n,m)の値は、クロックのエッジ4のタイミングで、FF36(1326)によって叩かれて、閾値算出部32(1321)から出力される。
図13の閾値算出部33(1318)における、注目画素の2画素前の注目画素に対する閾値SL_2(n,m)は、エッジ4にて処理が完了する。
具体的には、クロックのエッジ3のタイミングで、閾値算出部33(1318)で必要となる閾値算出用の加重係数と、2値化処理部3(1332)から出力される2値化結果のデータの入力が行われ、乗算回路34(1319)の演算処理が実行される。この演算処理により、SL_2(n,m)が算出される。
SL_2(n,m)の値は、クロックのエッジ4のタイミングで、FF37(1320)によって叩かれて、閾値算出部33(1318)から出力される。
クロックのエッジ4のタイミングで出力された、SL_L(n,m)、SL_1(n,m)、SL_2(n,m)は、閾値算出部34(1327)に入力される。
以降、説明を行う処理に関しては、クロックのエッジ4からエッジ5の1サイクルの間で実行される。
セレクタ31(1329)は、エッジ4のタイミングで出力される1画素前の2値化の処理結果を元に、SL_1(n,m)と、閾値「0」(1328)のどちらかの値を選択する。
注目画素の2画素前の注目画素に対する閾値SL_2(n,m)は、閾値算出部34(1327)に入力され、除算回路33(1330)によって除算処理が実行され、2画素前の注目画素の乗算及び除算結果SL_3(n,m)が出力される。
加算回路32(1331)は、セレクタ31(1329)に選択されたデータと、閾値算出部34(1327)に入力された、SL_L(n,m)及び、SL_3(n,m)を全て合計し、注目画素に対する閾値SL(n,m)を算出する。
また、上記の処理と並行して、図13の2値化処理部3(1332)は、Din(n,m)に対して、Er(n−1,m)と、Ed(n,m−1)により、注目画素に対する誤差補正を行う。
そして、上記処理によって算出された注目画素に対する閾値SL(n,m)と、注目画素の誤差補正データD(n,m)との比較が行われ、クロックのエッジ5の立ち上がりで注目画素の2値化が実行され、2値化処理部3(1332)から出力される。
以上のように、注目画素に対してそれより前のラインの加重演算に関しては、注目画素の1画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
注目画素に対して、同じラインで、2画素以前の係数との乗算および除算に関しては、注目画素の1画素前の処理を行うタイミングで、演算が終了するように、マルチサイクルで処理を行う。
つまり、注目画素に対して、同じラインで、2画素以前の係数との乗算および除算に関しても、演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷を軽減する。
また、注目画素に対して1画素前の画素の係数との乗算及び除算に関しては、2画素前の画素を処理するタイミングで、1画素前の処理結果が「1」の場合と「0」の場合の両方を想定して、事前に、演算が行われる。そして、1画素前の2値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
つまり、1画素前の画素の係数との乗算および除算に関しては、予め1画素前の2値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷を軽減する。
また、誤差分配部3の処理のように、2のべき乗の除算や乗算の演算に関しては、演算回路を用意せずに、ビットシフトを用いることによって、演算の付加を軽減する。
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することができる。
<第3の実施形態>
第1の実施形態及び、第2の実施形態では、平均濃度保存法による量子化のうち、2値化の処理を元に実施形態の説明を行ってきた。
第1の実施形態及び、第2の実施形態では、平均濃度保存法による量子化のうち、2値化の処理を元に実施形態の説明を行ってきた。
第3の実施形態では、平均濃度保存法による量子化のうち多値化の処理をハードウェアで実行する。
第3の実施形態の説明を行うにあたり、平均濃度保存法による量子化のうち多値化の処理を行う場合の従来技術の説明も行う。
まず、以下で、従来技術における平均濃度保存法に関して、閾値算出処理、2値化処理、誤差分配処理のような3つの処理について、詳細な説明を行う。
<従来技術における平均濃度保存法>
本実施形態および従来技術で、4値化において、最小の出力値(出力濃度1)を「0」とし、最大の出力値(出力濃度4)を「255」とする。
本実施形態および従来技術で、4値化において、最小の出力値(出力濃度1)を「0」とし、最大の出力値(出力濃度4)を「255」とする。
そして、それ以外の2つの出力地を薄い方から順に、「85」(出力濃度2)、「170」(出力濃度3)と設定する。
従来技術に係る平均濃度保存法による多値化の処理は、以下のようになる。
<閾値算出処理>
閾値算出処理では、N値化(N>1(Nは2以上の整数である。)とする)を行う場合、N−1種類の閾値の設定が行われる。
閾値算出処理では、N値化(N>1(Nは2以上の整数である。)とする)を行う場合、N−1種類の閾値の設定が行われる。
この場合、注目画素から前の、すでに2値化の完了している画素の2値化結果を用いて、1つの注目画素に対する閾値が算出され、その閾値を元にして、N−1種類の閾値が生成される。
<4値化処理>
注目画素の画像データは、以前の画素のN値化誤差により誤差補正が実行された後、閾値と比較され、N値化処理が行われる。
注目画素の画像データは、以前の画素のN値化誤差により誤差補正が実行された後、閾値と比較され、N値化処理が行われる。
この場合、誤差補正後の画像データの値が、複数の閾値のどの閾値の間に有るかによって、N値の出力のどの値で出力を行うかが決定される。
<誤差分配処理>
N値化時に出た誤差(出力値と誤差補正後の画像データとの差)は、以降、処理されるべき画像データに誤差補正値として渡される。
N値化時に出た誤差(出力値と誤差補正後の画像データとの差)は、以降、処理されるべき画像データに誤差補正値として渡される。
<従来技術に係る閾値算出処理>
4値化処理を行う注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に4値化処理が完了していて、4値の画像データ(「0」、「85」、「170」または「255」)が存在する。
4値化処理を行う注目画素を(n,m)としたとき、mラインで、n−1以前の画素に関しては、既に4値化処理が完了していて、4値の画像データ(「0」、「85」、「170」または「255」)が存在する。
同様に、m−1以前のラインに関しても、既に4値化処理が完了していて、4値の画像データが存在する。
閾値算出処理では、注目画素以前のすでに4値化処理の終わった画素の4値化結果に対する加重演算を行うことで、注目画素の閾値の算出が行われる。
次に、図15を用いて、閾値算出に用いる画素の範囲に関して詳細な説明を行う。
閾値算出に用いる画素の範囲を図15のように、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の4画素の範囲とする。
その各画素に対する加重係数は、図16のように(n−1,m−1)には「1」、(n,m−1)には「2」、(n+1,m−1)には「1」、(n−1,m)には「2」と、設定される。
注目画素以前の4値化処理結果のそれぞれの出力値に対して、上記の加重係数を元にして、加重演算処理が行われる。
よって、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理を行うことにより求められる。
まず始めに各画素の係数との乗算が、以下のように実行される。
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の4値化処理結果値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の4値化処理結果値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の4値化処理結果値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の4値化処理結果値
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−1,m)
S(n−1,m−1)=(n−1,m−1)の加重係数×(n−1,m−1)の4値化処理結果値
S(n,m−1)=(n,m−1)の加重係数×(n,m−1)の4値化処理結果値
S(n+1,m−1)=(n+1,m−1)の加重係数×(n+1,m−1)の4値化処理結果値
S(n−1,m)=(n−1,m)の加重係数×(n−1,m)の4値化処理結果値
Ssum(n,m)=S(n−1,m−1)+S(n,m−1)+S(n+1,m−1)+S(n−1,m)
次に、各画素の係数との乗算結果の和に対する補正に関する説明を行う。
注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理を行うことにより求められる。
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−1,m)の加重係数}
よって、注目画素以前の4値化処理結果が、図17のような場合、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理により求められる。
SL(n,m)={(1×255)+(2×0)+(1×85)+(2×170)}/(1+2+1+2)=133
SL(n,m)=Ssum(n,m)/{(n−1,m−1)の加重係数+(n,m−1)の加重係数+(n+1,m−1)の加重係数+(n−1,m)の加重係数}
よって、注目画素以前の4値化処理結果が、図17のような場合、注目画素(n,m)に対する閾値SL(n,m)は、下記のような加重演算処理により求められる。
SL(n,m)={(1×255)+(2×0)+(1×85)+(2×170)}/(1+2+1+2)=133
次に、注目画素(n,m)に対する閾値SL(n,m)を元にして、N値化を行う為のN−1種類の閾値の生成が行われる。
4値化処理を行う為、閾値は3種類生成される。そして、注目画素(n,m)に対する閾値SL(n,m)に対して、予め設定された数「α」を加算及び、減算することによって、3種類の閾値の生成が行われる。
例えば、3種類の閾値を、値の小さい方から、SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)、の3種類とすることができる。
よって、注目画素以前の4値化処理結果が、図17のような場合、注目画素(n,m)に対する閾値SL(n,m)の値が「133」となるとき、「α」の値が「50」と設定されていた場合、3種類の各閾値は以下のような値となる。
SL_Lo(n,m)=133−50=83
SL_Md(n,m)=133
SL_Hi(n,m)=133+50=183
SL_Lo(n,m)=133−50=83
SL_Md(n,m)=133
SL_Hi(n,m)=133+50=183
<従来技術に係る4値化処理>
注目画素の画像データは、以前の画素のN値化誤差により誤差補正が実行された後、閾値と比較され、N値化処理が行われる。
注目画素の画像データは、以前の画素のN値化誤差により誤差補正が実行された後、閾値と比較され、N値化処理が行われる。
4値化処理本処理では、図15のように、注目画素に対して、注目画素のラインの注目画素の1画素前の画素からの誤差データと、注目画素の1ライン前の注目画素と同じ位置の画素からの誤差データが注目画素の入力データに対して、加算される。
まず、注目画素の入力データをDin(n,m)、注目画素のラインの注目画素の1画素前の2値化処理誤差データをEr(n−1,m)、注目画素の1ライン前の注目画素と同じ位置の画素の2値化処理誤差データをEd(n,m−1)とする。
この場合、誤差補正後のデータD(n,m)の算出は、下記のような演算により行われる。
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=121、Er(n−1,m)=14、Ed(n,m−1)=−8となっていた場合、D(n,m)=121+14+(−8)=127となる。
D(n,m)=Din(n,m)+Er(n−1,m)+Ed(n,m−1)
例えば、Din(n,m)=121、Er(n−1,m)=14、Ed(n,m−1)=−8となっていた場合、D(n,m)=121+14+(−8)=127となる。
誤差データEr及びEdに関しては、後述する。
N値化処理は、誤差補正後のデータD(n,m)と、先に算出された、注目画素に対するN−1種類の閾値との比較を行い、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、N値化結果N(n.m)の出力を行う。
例えば、4値化処理の場合は、誤差補正後のデータD(n,m)と、先に算出された、注目画素に対する3種類の閾値SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)との比較が行われる。そして、注目画素に対して、出力濃度1から出力濃度4のどの濃度によって出力を行うかの判断が行われ、4値化結果N(n.m)の出力が行われる。
そのときの判断とは、下記のようになる。
すなわち、D(n,m)≦SL_Lo(n,m)の場合、出力濃度1の出力を行うと判断され、N(n,m)=0となる。
また、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)の場合、出力濃度2の出力を行うと判断され、N(n,m)=85となる。
また、SL_Md(n,m)<D(n,m)≦SL_Hi(n,m)の場合、出力濃度3の出力を行うと判断され、N(n,m)=170となる。
また、D(n,m)>SL_Hi(n,m)の場合、出力濃度4の出力を行うと判断され、N(n,m)=255となる。
また、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)の場合、出力濃度2の出力を行うと判断され、N(n,m)=85となる。
また、SL_Md(n,m)<D(n,m)≦SL_Hi(n,m)の場合、出力濃度3の出力を行うと判断され、N(n,m)=170となる。
また、D(n,m)>SL_Hi(n,m)の場合、出力濃度4の出力を行うと判断され、N(n,m)=255となる。
具体的には、D(n,m)=127の場合、注目画素に対する閾値はそれぞれ、SL_Lo(n,m)=83、SL_Md(n,m)=133、SL_Hi(n,m)=183となっている。したがって、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)となり、出力濃度2の出力を行うと判断される。
つまり、4値化出力結果は、N(n,m)=85となる。
<従来技術に係る誤差分配処理>
次に、誤差分配処理では、誤差補正後のデータとN値化の出力値との差をN値化誤差として、以降の処理画素に分配される。
E(n,m)=D(n,m)−N(n,m)
誤差分配処理では、図15のように、注目画素に対して、注目画素と同じラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
次に、誤差分配処理では、誤差補正後のデータとN値化の出力値との差をN値化誤差として、以降の処理画素に分配される。
E(n,m)=D(n,m)−N(n,m)
誤差分配処理では、図15のように、注目画素に対して、注目画素と同じラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、注目画素と1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。
このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素の2箇所に対して、1/2ずつ、誤差が分配される。
すなわち、Er(n,m)=E(n,m)/2であり、Ed(n,m)=E(n,m)/2である。
そして、誤差データE(n,m)は、下記のように算出される。
E(n,m)=D(n,m)−N(n,m)=127−85=42
この場合、Er(n,m)=E(n,m)/2=42/2=21であり、Ed(n,m)=E(n,m)/2=42/2=21である。
E(n,m)=D(n,m)−N(n,m)=127−85=42
この場合、Er(n,m)=E(n,m)/2=42/2=21であり、Ed(n,m)=E(n,m)/2=42/2=21である。
上記注目画素の各誤差データは、Er(n,m)に関しては、Din(n+1,m)の誤差補正に、Ed(n,m)に関しては、Din(n,m+1)の誤差補正に用いられる。
次に、4値化処理の従来技術における、ハードウェアの詳細な説明を行う。
従来技術における4値化の平均濃度保存法を実現するハードウェアは、図18に示されている。
以下で、閾値算出部4(1801)に関して詳細な説明を行う。
m−1のラインに関しては、既に4値化処理が完了していて、4値の画像データが存在する。
それらの4値化結果データは、4値化結果格納用メモリ(1802)に格納されている。
閾値算出部4(1801)では、注目画素以前のすでに4値化処理の終わった画素の4値化結果に対する加重演算を行うことで、注目画素の閾値の算出が行われる。
図18をもとにして、詳細説明を以下におこなう。
閾値算出用加重係数1(1803)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
閾値算出用加重係数2(1804)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1805)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数4(1809)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数2(1804)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
閾値算出用加重係数3(1805)には、メモリ等を用いて、(n+1,m−1)の加重係数が記憶されている。
閾値算出用加重係数4(1809)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
閾値算出用加重係数の和には、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の加重係数の和がメモリ等を用いて、記憶されている。
4値化結果格納用メモリ(1802)から、(n−1,m−1)、(n,m−1)、(n+1,m−1)の3画素の4値化結果データの出力が行われる。そして、それぞれの4値化結果データに対して、(n−1,m−1)の加重係数、(n,m−1)の加重係数、(n+1,m−1)の加重係数との乗算が、それぞれ、乗算回路41(1808)、乗算回路42(1809)、乗算回路43(1810)で行われる。
(n−1,m)の2値化結果に関しては、直前の処理で出力された4値化結果Nがそのまま乗算回路44(1811)に入力され、閾値算出用加重係数4(1806)に記憶されている(n−1,m)の加重係数との乗算が実行される。
各画素の加重係数との乗算結果の和の算出に関しては、乗算回路41(1808)、乗算回路42(1809)、乗算回路43(1810)、乗算回路44(1811)、からの出力値が、加算回路41(1812)に入力される。そして、加算回路41(1812)は、各画素の加重係数との乗算結果の和Ssum(n,m)を算出する。
除算回路41(1813)は、加算回路41(1812)から出力される各画素の加重係数との乗算結果の和Ssum(n,m)を、閾値算出用加重係数の和(1807)に記憶されている値で割り、注目画素に対する閾値SL(n,m)の算出を行う。
加算回路42(1814)は、注目画素に対する閾値SL(n,m)に対して、複数の閾値生成用の係数(本例の場合「α」と「−α」)をそれぞれ加算し、SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)の出力を行う。
この場合、各閾値として、SL_Lo(n,m)=SL(n,m)+(−α)、SL_Md(n,m)=SL(n,m)、SL_Hi(n,m)=SL(n,m)+αの値が出力される。
<4値化処理部4(1815)>
4値化処理部4(1815)は、注目画素以前の画素の4値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部4(1801)で算出された閾値とを比較し、4値化処理を行う。
4値化処理部4(1815)は、注目画素以前の画素の4値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部4(1801)で算出された閾値とを比較し、4値化処理を行う。
Er(n−1,m)は、後述する誤差分配部4(1819)から出力された、注目画素の1画素前の4値化結果から算出された誤差データである。
誤差データ(Ed)格納用メモリ(1816)には、注目画素以前の画素の4値化誤差のうち、Ed(n,m−1)に関する誤差データが格納されている。
誤差データEr及びEdに関しては、後述する。
4値化処理部4(1815)には、図18に示されているように、以下の3つのデータが入力される。
すなわち、Din(n,m)と、Er(n−1,m)、Ed(n,m−1)とが4値化処理部4(1815)に入力される。ここで、Din(n,m)は、注目画素の入力データである。また、Er(n−1,m)は、注目画素のラインの注目画素の1画素前の4値化処理誤差データである。また、Ed(n,m−1)は、注目画素の1ライン前の注目画素と同じ位置の画素の4値化処理誤差データである。
加算回路43(1817)は、上記3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、4値化処理部4(1815)の比較回路41(1818)は、D(n,m)と、閾値SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)、との比較を行う。そして、比較回路41(1818)は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、N値化結果N(n,m)の出力を行う。
比較回路41(1818)は、以下のようにして、N(n,m)について判断を行う。
すなわち、D(n,m)≦SL_Lo(n,m)の場合、比較回路41(1818)は、出力濃度1の出力を行うと判断し、N(n,m)=0と判断する。
また、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)の場合、比較回路41(1818)は、出力濃度2の出力を行うと判断し、N(n,m)=85と判断する。
また、SL_Md(n,m)<D(n,m)≦SL_Hi(n,m)の場合、比較回路41(1818)は、出力濃度3の出力を行うと判断し、N(n,m)=170と判断する。
また、D(n,m)>SL_Hi(n,m)の場合、比較回路41(1818)は、出力濃度4の出力を行うと判断し、N(n,m)=255と判断する。
比較回路41(1818)により出力された注目画素の4値化結果N(n,m)は、4値化結果格納用メモリ(1802)と、閾値算出部4(1801)の乗算回路44(1811)にそれぞれ入力される。
4値化結果格納用メモリ(1802)に格納されたデータは、4値化処理が終了したラインの次のラインの4値化処理時の閾値算出に用いられる。
閾値算出部4(1801)の乗算回路44(1811)に入力されたデータは、4値化処理が終了した画素の次の画素の4値化処理時の閾値算出に用いられる。
<誤差分配部4(1819)>
誤差分配部4(1819)は、注目画素の誤差補正後のデータD(n,m)と、4値化処理部4(1815)によって算出された注目画素のN(n,m)との差を4値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部4(1819)は、注目画素の誤差補正後のデータD(n,m)と、4値化処理部4(1815)によって算出された注目画素のN(n,m)との差を4値化誤差E(n,m)として、処理される画素に分配する。
減算回路41(1820)は、注目画素の誤差補正後のデータであるD(n,m)と、4値化処理部4(1815)によって算出された注目画素のN(n,m)との差であるE(n,m)の算出を行う。
誤差分配部4(1819)が実行する処理では、図15のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、(n,m)の注目画素のラインの1ライン下の注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ一の画素の2箇所に対して、1/2ずつ、誤差データが分配される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)の算出は、除算回路42(1823)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路43(1824)によって行われる。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)の算出は、除算回路43(1824)によって行われる。
ここで、誤差算出用係数1(1821)には、4値化誤差であるE(n,m)からEr(n,m)が算出される際の係数が記憶されている。4値化誤差であるE(n,m)からEr(n,m)が算出される際の係数は、誤差算出用係数1(1821)から読み出されて、除算回路42(1823)に入力される。
また、誤差算出用係数2(1822)には、4値化誤差であるE(n,m)からEd(n,m)が算出される際の係数が記憶されている。4値化誤差であるE(n,m)からEd(n,m)が算出される際の係数は、誤差算出用係数2(1822)から読み出されて、除算回路43(1824)に入力される。
(n,m)の注目画素の1ライン下の注目画素と同じ位置の画素へ分配される誤差データであるEd(n,m)は、誤差データ(Ed)格納用メモリ(1816)に入力される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、4値化処理部4(1815)の加算回路43(1817)に入力される。
(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データであるEr(n,m)は、4値化処理部4(1815)の加算回路43(1817)に入力される。
誤差データ(Ed)格納用メモリ(1816)に格納された誤差データ(Ed(n,m))は、(n,m)の注目画素のラインの次のラインの4値化処理時の4値化処理部4(1815)での誤差補正に用いられる。
4値化処理部4(1815)の加算回路43(1817)に入力された誤差データ(Er(n,m))は、(n,m)の注目画素の次の画素の4値化処理時の4値化処理部4(1815)での誤差補正に用いられる。
<従来技術における問題点>
上記本例のような、平均濃度保存法の処理結果を1クロックに付き、1画素ずつ出力させるためには、閾値算出処理、N値化処理、誤差分配処理の全ての処理を1クロック以内で完了させる必要がある。
上記本例のような、平均濃度保存法の処理結果を1クロックに付き、1画素ずつ出力させるためには、閾値算出処理、N値化処理、誤差分配処理の全ての処理を1クロック以内で完了させる必要がある。
現状では、閾値算出処理時の乗算や加算、除算、誤差分配処理時の減算や除算などを、順次行っていく必要がある。
また、画質向上のために、画像データの階調数増加による画像データのビット数の増加や、閾値算出時の加重演算処理のエリアの拡大、誤差分配時のエリアの拡大等により、これまで以上に演算の負荷が大きくなってきている。
その為、早い周波数での動作を行おうとした場合、1クロック以内では、各種演算処理が完了しないため、高速動作が出来ないという問題が起きている。
そこで、第3の実施形態では以下のような処理を行う。
注目画素を処理する際の閾値算出時の加重演算に関して、下記のような処理を行う。
注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の1画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理を行う。
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷を軽減する。
注目画素に対して1画素前の画素の係数との乗算及び除算に関しては、2画素前の画素を処理するタイミングで、1画素前の処理結果が「255」、「170」、「85」、「0」の各場合を想定して、事前に、演算が行われる。そして、1画素前の4値化結果が出た時点で、上記の演算結果が選択されて、後の処理に用いられる。
つまり、1画素前の画素の係数との乗算及び除算に関しては、予め1画素前の4値化結果の全ての出力を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷を軽減する。
次に、第3の実施形態に関して、詳細な説明を行う。
第3の実施形態における平均濃度保存法を実現するハードウェアは、図19に示されている。
<閾値算出部51(1901)>
m−1のラインに関しては、既に4値化処理が完了していて、4値の画像データが存在する。
m−1のラインに関しては、既に4値化処理が完了していて、4値の画像データが存在する。
それらの4値化結果データは、4値化結果格納用メモリ(1902)に格納されている。
閾値算出部51(1901)は、注目画素以前のすでに4値化処理の終わった画素の4値化結果に対する加重演算を行うことで、特に注目画素より前のラインに関する加重演算を行う。
この場合、従来技術に係る処理では、加重演算を行う場合、メモリ等に予め加重係数を記憶させておき、その加重係数と4値化結果の乗算を行う。
しかし、本実施形態では、図16のような加重係数が用いられるので、加重係数が「1」の画素の乗算に関しては、4値化結果の値がそのまま次の処理の入力として出力される。そして、加重係数が「2」の画素の乗算に関しては、1ビットシフトすることにより「2」を掛けた結果と同じ値が、次の処理の入力として出力される。
これによって、複雑な乗算回路を準備する必要が無く、演算の付加も軽くなることにより、処理の高速化が実現できる。
具体的には、下記のような処理が行われる。
(n−1,m−1)の閾値算出用加重係数1は、「1」なので、そのまま次の加算回路51(1908)へ入力する。
(n,m−1)の閾値算出用加重係数2は、「2」なので、ビットシフト51(1904)により、1ビットシフトシフトを行い、次の加算回路51(1908)へ入力する。
(n+1,m−1)の閾値算出用加重係数1は、「1」なので、そのまま次の加算回路51(1908)へ入力する。
(n,m−1)の閾値算出用加重係数2は、「2」なので、ビットシフト51(1904)により、1ビットシフトシフトを行い、次の加算回路51(1908)へ入力する。
(n+1,m−1)の閾値算出用加重係数1は、「1」なので、そのまま次の加算回路51(1908)へ入力する。
加算回路51(1908)は、上記各入力値の加算を行い、注目画素より前のラインの各画素の係数との乗算結果の和Ssum_Lを算出する。
閾値算出用加重係数の和(1903)には、(n−1,m−1)、(n,m−1)、(n+1,m−1)、(n−1,m)の加重係数の和が記憶されている。
除算回路51(1910)は、加算回路51(1908)から出力される注目画素より前のラインの各画素の係数との乗算結果の和Ssum_Lを、閾値算出用加重係数の和(1903)に記憶されている値で割る。そして、除算回路51(1910)は、この演算により、注目画素より1ライン前の注目画素に対する閾値SL_L(n,m)の算出を行う。
<閾値算出部52(1912)>
閾値算出部52(1912)は、注目画素以前のすでに4値化処理の終わった画素の4値化結果に対する係数との乗算及び除算を行うことで、特に注目画素1画素前の係数との乗算及び除算を行う。
閾値算出部52(1912)は、注目画素以前のすでに4値化処理の終わった画素の4値化結果に対する係数との乗算及び除算を行うことで、特に注目画素1画素前の係数との乗算及び除算を行う。
閾値算出部52(1912)は、注目画素の1画素前の4値化処理が終了する前に、注目画素の1画素前の4値化処理結果が、「0」、「85」、「170」、「255」の各場合を想定して、事前に、予め注目画素の1画素前の係数との乗算及び除算を行う。
本実施形態では、注目画素の1画素前の4値化処理結果が、出力濃度2、つまり「85」の場合の注目画素の1画素前の係数との乗算及び除算結果を、SL_A(n,m)とする。
本実施形態では、注目画素の1画素前の4値化処理結果が、出力濃度3、つまり「170」の場合の注目画素の1画素前の係数との乗算及び除算結果を、SL_B(n,m)とする。
本実施形態では、注目画素の1画素前の4値化処理結果が、出力濃度4、つまり「255」の場合の注目画素の1画素前の係数との乗算及び除算結果を、SL_C(n,m)とする。
本実施形態では、注目画素の1画素前の2値化処理結果が、「0」の場合、閾値算出部52(1912)で行われる他の出力濃度と同等な処理を行った場合の出力は、「0」となる。このため、特に演算回路を用いず、閾値算出部53(1925)において、「0」の値(1926)が入力され、セレクタ51(1927)によって選択される。
<閾値算出部53(1925)>
閾値算出部53(1925)は、セレクタ51(1927)と、加算回路52(1928)、加算回路53(1929)から構成されている。
閾値算出部53(1925)は、セレクタ51(1927)と、加算回路52(1928)、加算回路53(1929)から構成されている。
セレクタ51(1927)は、複数の閾値SL_A(n,m)、SL_B(n,m)、SL_C(n,m)、もしくは「0」のどちらかの選択を行い、その値を加算回路52(1928)に入力する。
その場合、セレクタ51(1927)は、1画素前の4値化結果Nが、「0」の場合は「0」を、「85」の場合は「SL_A(n,m)」を、「170」の場合は「SL_B(n,m)」を、「255」の場合は「SL_C(n,m)」を、選択する。
加算回路52(1928)では、予め算出していた注目画素より前のラインの注目画素に対する閾値SL_L(n,m)と、セレクタ51(1927)からの出力値の加算を行い、注目画素に対する閾値SL(n,m)の算出を行う。
加算回路53(1929)では、注目画素に対する閾値SL(n,m)に対して、複数の閾値生成用の係数(本実施形態の場合「α」と「−α」)をそれぞれ加算し、SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)の出力を行う。
この場合、各閾値は、SL_Lo(n,m)=SL(n,m)+(−α)、SL_Md(n,m)=SL(n,m)、SL_Hi(n,m)=SL(n,m)+αの値が出力される。
<4値化処理部5(1930)>
4値化処理部5(1930)は、注目画素の画像データに対して、注目画素以前の画素の4値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部53(1925)で算出された閾値とを比較し、4値化処理を行う。
4値化処理部5(1930)は、注目画素の画像データに対して、注目画素以前の画素の4値化誤差により誤差補正が行われた注目画素の画像データと、閾値算出部53(1925)で算出された閾値とを比較し、4値化処理を行う。
Er(n−1,m)は、後述する誤差分配部5(1934)から出力された、注目画素の1画素前の4値化結果から算出された誤差データである。
誤差データ(Ed)格納用メモリ(1931)には、注目画素以前の画素の4値化誤差のうち、Ed(n,m−1)に関する誤差データが格納されている。
誤差データEr及びEdに関しては、後述する。
4値化処理部5(1930)には、図19に示されているように、以下の3つのデータが入力される。
すなわち、Din(n,m)と、Er(n−1,m)、Ed(n,m−1)が、4値化処理部5(1930)に入力される。ここで、Din(n,m)は、注目画素の入力データである。また、Er(n−1,m)は、注目画素のラインの注目画素の1画素前の4値化処理誤差データである。また、Ed(n,m−1)は、注目画素の1ライン前の注目画素と同じ位置の画素の4値化処理誤差データである。
加算回路54(1932)は、上記3つのデータの加算を行い、注目画素の誤差補正後のデータD(n,m)の算出を行う。
次に、4値化処理部5(1930)の比較回路51(1933)は、D(n,m)と、閾値算出部53(1925)によって算出された、閾値SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)、との比較を行う。そして、比較回路51(1933)は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、N値化結果N(n,m)の出力を行う。
比較回路51(1933)は、以下のようにしてN(n,m)についての判断を行う。
すなわち、D(n,m)≦SL_Lo(n,m)の場合、比較回路51(1933)は、出力濃度1の出力を行うと判断し、N(n,m)=0と判断する。
また、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)の場合、比較回路51(1933)は、出力濃度2の出力を行うと判断し、N(n,m)=85と判断する。
また、SL_Md(n,m)<D(n,m)≦SL_Hi(n,m)の場合、比較回路51(1933)は、出力濃度3の出力を行うと判断し、N(n,m)=170と判断する。
また、D(n,m)>SL_Hi(n,m)の場合、比較回路51(1933)は、出力濃度4の出力を行うと判断し、N(n,m)=255と判断する。
また、SL_Lo(n,m)<D(n,m)≦SL_Md(n,m)の場合、比較回路51(1933)は、出力濃度2の出力を行うと判断し、N(n,m)=85と判断する。
また、SL_Md(n,m)<D(n,m)≦SL_Hi(n,m)の場合、比較回路51(1933)は、出力濃度3の出力を行うと判断し、N(n,m)=170と判断する。
また、D(n,m)>SL_Hi(n,m)の場合、比較回路51(1933)は、出力濃度4の出力を行うと判断し、N(n,m)=255と判断する。
比較回路51(1933)により出力された注目画素の4値化結果N(n,m)は、4値化結果格納用メモリ(1902)と、閾値算出部53(1925)のセレクタ51(1927)にそれぞれ入力される。
4値化結果格納用メモリ(1902)に格納されたデータは、4値化処理が終了したラインの次のラインの4値化処理時の閾値算出に用いられる。
閾値算出部53(1925)のセレクタ51(1927)に入力されたデータは、4値化処理が終了した画素の次の画素の4値化処理時の閾値算出に用いられる。
<誤差分配部5(1934)>
誤差分配部5(1934)は、注目画素の誤差補正後のデータD(n,m)と、注目画素のN(n,m)との差を4値化誤差E(n,m)として、処理される画素に分配する。
誤差分配部5(1934)は、注目画素の誤差補正後のデータD(n,m)と、注目画素のN(n,m)との差を4値化誤差E(n,m)として、処理される画素に分配する。
減算回路51(1935)は、4値化処理部5(1930)によって算出された注目画素の誤差補正後のデータであるD(n,m)と、注目画素のN(n,m)との差であるE(n,m)の算出を行う。
誤差分配部5(1934)が実行する処理では、図15のように、注目画素に対して、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ位置の画素に対して、誤差データの分配が行われる。
ここで、(n,m)の注目画素のラインの注目画素の1画素右へ分配される誤差データを、Er(n,m)とし、(n,m)の注目画素のラインの1ライン下注目画素と同じ位置の画素へ分配される誤差データを、Ed(n,m)とする。そして、(n,m)の注目画素の右と下の各画素に、誤差データが分配される。
このとき、注目画素のラインの注目画素の1画素右の画素と、注目画素の1ライン下の注目画素と同じ一の画素の2箇所に対して、1/2ずつ、誤差データが分配される。
よって本実施形態では、演算処理の軽減の為、注目画素の誤差補正後のデータD(n,m)と、注目画素のN(n,m)との差E(n,m)の値を除算回路による処理が行われない。その代わり、ビットシフト(1936)によって、データE(n,m)の最下位1ビットを削除することにより、データE(n,m)を2で除算したのと同等の値が、Ed(n,m)およびEr(n,m)として出力される。
そして、Ed(n,m)は、誤差データ(Ed)格納用メモリ(1931)に入力される。
また、Er(n,m)は、4値化処理部5(1930)の加算回路54(1932)に入力される。
誤差データ(Ed)格納用メモリ(1931)に格納されたデータは、注目画素のラインの次のラインの4値化処理時の4値化処理部5(1930)での誤差補正に用いられる。
4値化処理部5(1930)の加算回路54(1932)に入力されたデータは、注目画素の次の画素の4値化処理時の4値化処理部5(1930)での誤差補正に用いられる。
次に、第3の実施形態でのクロックと処理のタイミングに関して、詳細な説明を行う。
具体的には、図20を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ5の立ち上がりで注目画素の4値化を行う際には、図20に示されている処理が行われる。
図19の閾値算出部51(1901)における、注目画素より1ライン前の注目画素に対する閾値SL_L(n,m)の算出は、エッジ1から開始され、エッジ4にて処理が完了する。
具体的には、クロックのエッジ1によって、4値化結果格納用メモリ(1902)から、注目画素の前のラインの4値化結果データの入力が行われる。
その後、図19のビットシフト51(1904)によって係数との乗算と同様の処理が実行され、その結果は、クロックのエッジ2のタイミングで、それぞれFF51(1905)、FF52(1906)、FF53(1907)によって叩かれる。
FF51(1905)、FF52(1906)、FF53(1907)によって叩かれたデータは、図19の加算回路51(1908)に入力され、Ssum_Lが算出される。
Ssum_Lのデータは、クロックのエッジ3のタイミングでFF54によって、叩かれる。
FF54(1909)によって叩かれたデータは、図19の除算回路51(1910)に入力され、注目画素より前のラインの注目画素に対する閾値SL_L(n,m)が算出される。
SL_L(n,m)のデータは、クロックのエッジ4のタイミングでFF55(1911)によって、叩かれて閾値算出部51(1901)から出力される。
図19の閾値算出部52(1912)における、注目画素の1画素前の注目画素に対する各種閾値SL_A(n,m)、SL_B(n,m)、SL_C(n,m)、の算出は、エッジ4にて処理が完了する。
具体的には、クロックのエッジ3のタイミングで、閾値算出部52(1912)で必要となる各種データの入力が行われる。そして、ビットシフト52(1916)、ビットシフト53(1917)、ビットシフト54(1918)、及び除算回路52(1919)、除算回路53(1920)、除算回路54(1921)、の演算処理が実行される。そして、SL_A(n,m)、SL_B(n,m)、SL_C(n,m)の各値が算出される。
SL_A(n,m)、SL_B(n,m)、SL_C(n,m)の各値は、クロックのエッジ4のタイミングで、FF58(1922)、FF58(1923)、FF58(1924)によってそれぞれ叩かれて、閾値算出部52(1912)から出力される。
以降、説明を行う処理に関しては、クロックのエッジ4からエッジ5の1サイクルの間で実行される。
セレクタ51(1927)は、閾値SL_A(n,m)、SL_B(n,m)、SL_C(n,m)及び、注目画素の1画素前の2値化結果が「0」であると想定した、注目画素1画素前の注目画素に対する閾値「0」(1926)のうちのいずれかを選択する。上記のセレクタ51(1927)による選択は、エッジ4のタイミングで出力される1画素前の4値化の処理結果に基づく。
加算回路52(1928)は、セレクタ51(1927)に選択されたデータと、閾値算出部53(1925)に入力された、SL_L(n,m)を全て合計し、注目画素に対する閾値SL(n,m)が算出する。
そして、加算回路53(1929)は、注目画素に対する閾値SL(n,m)に対して、複数の閾値生成用の係数(本実施形態の場合「α」と「−α」)をそれぞれ加算し、SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)の出力を行う。
この場合、各閾値として、SL_Lo(n,m)=SL(n,m)+(−α)、SL_Md(n,m)=SL(n,m)、SL_Hi(n,m)=SL(n,m)+αの値が出力される。
また、それと同時に、図19の4値化処理部5(1930)は、Din(n,m)に対して、Er(n−1,m)と、Ed(n,m−1)により、注目画素に対する誤差補正を行う。
そして、比較回路51(1933)は、D(n,m)と、閾値SL_Lo(n,m)、SL_Md(n,m)、SL_Hi(n,m)、との比較を行う。そして、比較回路51(1933)は、注目画素に対して、どの出力濃度によって、色を出力するかの判断を行い、N値化結果N(n,m)の出力を行う。
以上のように、平均濃度保存法を用いた多値の量子化に関しても、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の1画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
また、注目画素に対して注目画素の1画素前の画素の係数との乗算及び除算に関しては、注目画素の2画素前の画素を処理するタイミングで、注目画素の1画素前の処理結果の全てのパターンを想定して、事前に、演算が行われる。そして、注目画素の1画素前の量子化結果が出た時点で演算結果が選択されて後の処理に用いられる。
つまり、注目画素の1画素前の画素の係数との乗算及び除算に関しては、予め注目画素の1画素前の量子化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
また、閾値算出部51、閾値算出部52、誤差分配部5の処理のように、2のべき乗の除算や乗算の演算に関しては、演算回路を用意せずに、ビットシフトを用いることによって、演算の付加が軽減される。
これにより、平均濃度保存法のハードウェアでの処理の、高速化を実現することができる。
上記の実施形態により、具体的には、例えば、130nmプロセスのような、世代の古いプロセスのASICや、80nmや65nmのような最新のプロセスのASICでも、平均濃度保存法を実行することができる。
また、上記実施形態により、例えば、65nmプロセスのFPGA等、最新のプロセスのFPGAを用いて、平均濃度保存法を実行することができる。
なお、上記で説明した発明に係る装置で実行される方法を、コンピュータに実行させるためのコンピュータプログラムとして、コンピュータで読取可能な記憶媒体に記録して用いても良い。
<第4の実施形態>
第1、第2、第3の実施形態では、平均濃度保存法に関する実施形態を例としてあげた。第4の実施形態では、誤差拡散法に関しての、実施形態を例として詳細な説明を行なう。本明細書における、誤差拡散法を実現するハードウェアを、図25に示す。
第1、第2、第3の実施形態では、平均濃度保存法に関する実施形態を例としてあげた。第4の実施形態では、誤差拡散法に関しての、実施形態を例として詳細な説明を行なう。本明細書における、誤差拡散法を実現するハードウェアを、図25に示す。
<誤差補正部251(2501)>
以下では、m−1のラインに関しては、既に2値化処理が完了していて、2値の画像データ及び、2値化誤差データが存在し、2値化誤差データは、2値化誤差格納用メモリ(2504)に格納されているものとして、第4の実施形態について説明する。
以下では、m−1のラインに関しては、既に2値化処理が完了していて、2値の画像データ及び、2値化誤差データが存在し、2値化誤差データは、2値化誤差格納用メモリ(2504)に格納されているものとして、第4の実施形態について説明する。
誤差補正部251(2501)は、注目画素以前のすでに2値化処理の終わった画素の2値化誤差に対する加重演算を行う。なお、本発明において、注目画素とは、複数の画素のうちの特定画素を指す。また、本発明において、加重演算とは、複数の画素データに対して、予め設定されている係数を掛ける処理を行って、それらの総和を求める演算を指す。
以下で、図25を元に、第4の実施形態について詳細な説明を行う。
誤差補正用加重係数1(2505)には、メモリ等を用いて、(n−2,m−1)の加重係数が記憶されている。
誤差補正用加重係数2(2506)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
誤差補正用加重係数3(2507)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
誤差補正用加重係数2(2506)には、メモリ等を用いて、(n−1,m−1)の加重係数が記憶されている。
誤差補正用加重係数3(2507)には、メモリ等を用いて、(n,m−1)の加重係数が記憶されている。
ここで、加重係数とは、後述する加重演算で用いられる係数である。誤差補正用加重係数の和(2522)には、メモリ等を用いて、(n−2,m−1)、(n−1,m−1)、(n,m−1)、(n−2,m)、(n−1,m)の加重係数の和が記憶されている。次に、乗算回路251(2508)は、2値化誤差格納用メモリ(2504)から、(n−2,m−1)の画素の2値化誤差データを受信し、2値化誤差データと、(n−2,m−1)の加重係数との乗算を行い出力する。また、乗算回路252(2509)は、2値化誤差格納用メモリ(2504)から、(n−1,m−1)の画素の2値化誤差データを受信し、2値化誤差データと、(n−1,m−1)の加重係数との乗算を行い出力する。また、乗算回路253(2510)は、2値化誤差格納用メモリ(2504)から、(n,m−1)の画素の2値化誤差データを受信し、2値化誤差データと、(n,m−1)の加重係数との乗算を行い出力する。
次に、加算回路251(2514)は、FF251(2511)を経由して、乗算回路251(2508)の出力値を受信する。また、加算回路251(2514)は、FF252(2512)を経由して、乗算回路252(2509)の出力値を受信する。また、加算回路251(2514)は、FF253(2513)を経由して、乗算回路253(2510)の出力値を受信する。そして、加算回路251(2514)は、乗算回路251(2508)の出力値と、乗算回路252(2509)の出力値と、乗算回路253(2510)の出力値とを加算し、注目画素より前のラインの各画素の乗算結果の和(Esum_L)を算出して出力する。
前記注目画素より前のラインの各画素の乗算結果の和(Esum_L)は、FF254(2515)を経由して、加算回路252(2521)へと入力される。加算回路252(2512)は、FF254(2515)を経由して、加算回路251(2514)の出力値を受信する。誤差補正用加重係数4(2516)には、メモリ等を用いて、(n−2,m)の加重係数が記憶されている。また、乗算回路254(2517)は、セレクタ251(2519)からの、(n−2,m)の画素の2値化誤差データを受信し、2値化誤差データと、(n−2,m−1)の加重係数との乗算を行い出力する。
加算回路252(2512)は、FF255(2518)を経由して、乗算回路254(2517)の出力値を受信する。
セレクタ251(2519)では、(n−1,m)の画素の2値化結果を想定した2つの誤差補正値の入力(Er_0,Er_255)を行う。そして、(n−1,m)の画素の2値化結果Bin(n−1,m)を元に、(n−1,m)の画素の2値化誤差Er(n−1,m)の出力を行なう。
セレクタ251(2519)では、2値化結果Bin(n−1,m)=0の場合は、Er_0の値を2値化誤差Er(n−1,m)として出力を行なう。また、2値化結果Bin(n−1,m)=255の場合は、Er_255の値を2値化誤差Er(n−1,m)として出力を行なう事となる。
2値化誤差Er(n−1,m)は、次に乗算回路255(2527)へと入力される。
誤差補正用加重係数5(2525)には、メモリ等を用いて、(n−1,m)の加重係数が記憶されている。
乗算回路255(2527)は、セレクタ251(2519)からの、(n−1,m)の画素の2値化誤差データを受信し、2値化誤差データと、(n−1,m)の加重係数との乗算を行い出力する。
前記乗算回路255(2527)からの出力は、FF256(2520)を経由して、加算回路252(2521)へと入力される。
加算回路252(2512)は、加算回路251(2514)からの出力と、乗算回路254(2517)及び、乗算回路255(2527)の出力値とを加算し、注目画素より前のライン及び、前の画素の各画素の乗算結果の和(Esum)を算出して出力する。
次に、除算回路251(2523)は、加算回路252(2512)の出力値(Esum)と、誤差補正用加重係数の和(2522)に記憶されている値を受信する。そして、除算回路251(2523)は、Esumを、誤差補正用加重係数の和(2522)に記憶されている値で割り、注目画素より前の注目画素に対する誤差補正値Error(n,m)の算出を行い出力する。
加算回路253(2524)は、前記除算回路251(2523)から出力される注目画素に対する誤差補正値Error(n,m)と、注目画素のデータ入力値Din(n,m)とを入力する。そして、注目画素のデータ入力値Din(n,m)に対して、注目画素に対する誤差補正値Error(n,m)を加算することにより、注目画素に対する2値化処理済の画素の誤差補正を行う事となる。
加算回路253(2524)によって、誤差補正が行なわれた画像データDer(n,m)は、誤差補正部2501から出力され、誤差算出部251(2502)と、2値化処理部251(2503)へと入力される事となる。
また、2値化誤差Er(n−1,m)は、次の画素を処理する際に、2画素前の2値化誤差データ値として使用されるために、乗算回路255(2527)へと入力される。また、次のラインを処理する際に、前のラインの2値化誤差データ値として使用されるために、2値化誤差格納用メモリ(2504)へと入力される。
以上の演算が、誤差補正部251(2501)が行う加重演算である。
<誤差算出処理部251(2502)>
2値化誤差算出は、従来では、注目画素の2値化処理を行う際に、1画素前の2値化処理結果と、誤差補正後の画像データを元に、注目画素の2値化処理を行うタイミングで、処理を行っていた。
2値化誤差算出は、従来では、注目画素の2値化処理を行う際に、1画素前の2値化処理結果と、誤差補正後の画像データを元に、注目画素の2値化処理を行うタイミングで、処理を行っていた。
しかし、本実施例においては、注目画素の2値化を行なう際に、予め2値化結果を想定して、その時に算出される2値化誤差値を算出し、次の画素の2値化を行なう際に、注目画素の2値化結果を元に、誤差補正値の選択を行なう事とする。
これによって、従来、誤差補正処理の前に誤差算出部で実施していた2値化誤差の算出のための計算負荷を、前の画素の処理中に行う事が可能となり、1サイクル内で行う処理の負荷分散が可能となる。
2値化誤差算出処理は、図25の誤差算出部251(2502)によって処理が行われる事となる。
誤差算出部251(2502)には、前記誤差補正部251(2501)から、誤差補正処理後の画像データDer(n,m)が入力される。そして、注目画素の2値化結果が「0」の場合と、「255」の場合の2つの場合を考慮して、それぞれの場合の誤差補正値(Er_0、Er_255)の出力を行なう。
減算回路251(2526)では、出力値が「0」を想定した場合の2値化誤差の算出を行なう。
減算回路251(2526)で実施される減算は、下記のようになる。
Er_0(n,m)=Der(n,m)−0
減算回路252(2528)では、出力値が「255」を想定した場合の2値化誤差の算出を行なう。
減算回路252(2528)で実施される減算は、下記のようになる。
Er_255(n,m)=Der(n,m)−255
誤差算出部251(2502)から出力される、注目画素の2値化結果が「0」の場合を想定した誤差補正値Er_0及び、注目画素の2値化結果が「255」の場合を想定した誤差補正値Er_255は、以下に入力される。即ち、先に説明を行なった誤差補正部251(2501)に入力される。そして、次の画素を注目画素とした時の誤差補正処理に使用される事となる。
減算回路251(2526)で実施される減算は、下記のようになる。
Er_0(n,m)=Der(n,m)−0
減算回路252(2528)では、出力値が「255」を想定した場合の2値化誤差の算出を行なう。
減算回路252(2528)で実施される減算は、下記のようになる。
Er_255(n,m)=Der(n,m)−255
誤差算出部251(2502)から出力される、注目画素の2値化結果が「0」の場合を想定した誤差補正値Er_0及び、注目画素の2値化結果が「255」の場合を想定した誤差補正値Er_255は、以下に入力される。即ち、先に説明を行なった誤差補正部251(2501)に入力される。そして、次の画素を注目画素とした時の誤差補正処理に使用される事となる。
以上の演算が、誤差算出部251(2502)が行う処理である。
<2値化処理部251(2503)>
2値化処理部251(2503)は、注目画素の誤差補正後のデータDer(n,m)と、予め設定された閾値SLとを比較し、2値化処理を行う。
2値化処理部251(2503)は、注目画素の誤差補正後のデータDer(n,m)と、予め設定された閾値SLとを比較し、2値化処理を行う。
2値化処理部251(2503)には、図25に示されているように、注目画素の誤差補正後のデータDer(n,m)と、予め設定された閾値SLの2つのデータが入力される。
2値化処理部251(2503)の比較回路251(2529)は、前記2つのデータの比較を行う。そして、比較回路251(2529)は、注目画素に対して、色を出力する(Bin(n,m)=255)か、色を出力しない(Bin(n,m)=0)かの判断を行い、2値化結果の出力を行う。
比較回路251(2529)は、以下のようにして判断を行う。
すなわち、Der(n,m)≧SLの場合、比較回路251(2529)は、色の出力を行うと判断し、Bin(n,m)=255と判断する。一方、Der(n,m)<SLの場合、比較回路251(2529)は、色の出力行わないと判断し、Bin(n,m)=0と判断する。
比較回路251(2529)により出力された注目画素の2値化結果であるBin(n,m)は、プリンタ等の出力装置に送られるとともに、誤差補正部251(2501)のセレクタ251(2519)にそれぞれ入力される。
次に、図26を用いて、本実施形態におけるクロックのエッジに対する各処理を行っていく順番に関しての説明を行う。
クロックのエッジ4の立ち上がりで注目画素の2値化を行う際には、図26に示されている処理が行われる。
図25の誤差補正部251(2501)における、注目画素より1ライン前の注目画素に対する誤差補正値Esum_L(n,m)の算出は、エッジ1から開始され、エッジ3の前にて処理が完了する。
具体的には、クロックのエッジ1によって、2値化誤差格納用メモリ(2504)から、注目画素の前のラインの2値化誤差データの入力が行われる。
その後、図25の乗算回路251(2508)、乗算回路252(2509)、乗算回路253(2510)、によって各画素の係数との乗算が実行される。そして、その乗算結果は、クロックのエッジ2のタイミングで、それぞれFF251(2511)、FF252(2512)、FF253(2513)によって叩かれる。
FF251(2511)、FF252(2512)、FF253(2513)によって叩かれたデータは、図25の加算回路251(2514)に入力され、Esum_L(n,m)が算出される。
Esum_L(n,m)のデータは、クロックのエッジ3のタイミングでFF254(2515)によって、叩かれ、加算回路252(2521)に入力される。
注目画素と、同じラインの誤差補正値に関しては、以下のように処理が行なわれる事となる。
注目画素の1画素前の誤差補正値に関しては、エッジ3のタイミングで、図25の誤差算出部251(2502)から出力される、注目画素の2値化結果が「0。」の場合を想定した誤差補正値Er_0及び、注目画素の2値化結果が「255」の場合を想定した誤差補正値Er_255が、誤差補正部251(2501)に入力される。
また、同様にエッジ3のタイミングで、注目画素の1画素前の2値化処理結果が入力される。
図25の誤差補正部251(2501)内のセレクタ251(2519)によって、注目画素の1画素前の2値化処理結果を元に、注目画素の1画素前の誤差データが選択され、図25の乗算回路255(2527)により、加重係数との乗算が実行される。
前記乗算処理結果は、1画素前の誤差補正値として、図25の加算回路252(2521)に入力される。
注目画素の2画素前の誤差補正値に関しては、図25の誤差補正部251(2501)内のセレクタ251(2519)からの2値化誤差データに対して、乗算回路254(2517。)により、加重係数との乗算が実行されエッジ3のタイミングで、2画素前の誤差補正値として、加算回路252(2521)に入力される。
以降の処理に関しては、クロックのエッジ3からエッジ4の1サイクル以内で行う処理となる。
図25の加算回路252(2521)に入力された、各誤差補正値は、加算処理が行われた後、除算回路251(2523)に入力され、注目画素に対する誤差補正値Error(n,m)が算出される。
前記誤差補正値Error(n,m)は、図25の加算回路253(2524)によって、入力された注目画素データDin(n,m)との加算が行なわれ、誤差補正後のデータDer(n,m)が算出される。
前記誤差補正後のデータDer(n,m)は、図25の2値化処理部251(2503)によって、予め設定された閾値SLとの比較が行なわれ、2値化データBin(n,m。)が出力されるとともに、誤差算出部251(2502)によって、注目画素の2値化出力を想定した2値化誤差データ(Er_0,Er_255)の算出が行なわれる事となる。
以上のように、注目画素に対して注目画素より前のラインの加重演算に関しては、注目画素の1画素前の処理を行うタイミングで、加重演算が終了するように、マルチサイクルで処理が行われる。
つまり、注目画素に対して注目画素より前のラインの加重演算に関しては、加重演算の開始を早めて複数サイクルに処理を伸ばすことにより、注目画素の処理時の演算の負荷が軽減される。
また、注目画素に対して1画素前の画素の2値化誤差の算出を行なう、減算、除算に関しては、1画素前の処理結果が「1」の場合と「0」の場合の両方を想定して、事前に、演算される。そして、1画素前の2値化結果が出た時点で、上記の演算結果が選択されて後の処理に用いられる。
つまり、1画素前の画素の減算、除算に関しては、予め1画素前の2値化結果の両方を想定した演算を済ませておくことにより、注目画素の処理時の演算の負荷が軽減される。
これにより、誤差拡散法のハードウェアでの処理の、高速化を実現することが可能となる。
以上のように、本実施例における装置の一態様は、以下となる。即ち、対象とする画素における画素データを、前記対象とする画素に対する閾値を用いてN(Nは2以上の整数)値化することで、前記対象とする画素におけるN値化結果を得るN値化手段を有する。また、前記N値化手段において前記対象とする画素のN値化結果を得る前に、
前記対象とする画素のN値化結果として考えられ得る全てのN値化結果(Nが2の場合は、0と1。Nが3の場合は、0と1と2。)を用いて、当該全てのN値化結果の一つ一つに対応する、前記対象とする画素の次の画素の閾値を算出する算出手段を有する。そして、前記N値化手段において前記対象とする画素のN値化結果が得られた後で、当該得られた前記対象とする画素におけるN値化結果に対応する閾値を、前記算出手段で算出された閾値の中から選択する。そして、当該選択された閾値を用いて前記次の画素のN値化を行う。
前記対象とする画素のN値化結果として考えられ得る全てのN値化結果(Nが2の場合は、0と1。Nが3の場合は、0と1と2。)を用いて、当該全てのN値化結果の一つ一つに対応する、前記対象とする画素の次の画素の閾値を算出する算出手段を有する。そして、前記N値化手段において前記対象とする画素のN値化結果が得られた後で、当該得られた前記対象とする画素におけるN値化結果に対応する閾値を、前記算出手段で算出された閾値の中から選択する。そして、当該選択された閾値を用いて前記次の画素のN値化を行う。
以上のように、本実施例における装置の一態様は、以下となる。N値化手段によってN値化処理を行った結果、算出されるN値化誤差値を算出する誤差算出手段を有する。また、前記誤差算出手段から算出される誤差値を使用して、各画素データの値の補正を行ない、誤差補正後の画像データとして出力を行なう誤差補正手段を有する。
前記誤差補正後の画像データと、予め設定されている閾値を用いてN(Nは2以上の整数)値化することで、前記各画素におけるN値化結果を得るN値化手段を有する。そして、前記誤差補正手段は、前記各画素より前に前記誤差算出手段で得られた複数の画素におけるN値化誤差値の夫々に対して係数を掛ける処理を行って、その総和を求めることで誤差補正値を算出する。さらに、前記複数の画素のうちの特定画素の画素データの前記N値化手段におけるN値化よりも、前記誤差補正手段における、前記特定画素の画素データにおけるN値化誤差値に対して係数を掛ける処理が後ではないことを特徴とする。
また、前記N値化と同時に前記処理を前記誤差補正手段で行うために、事前に、前記誤差算出手段は、前記特定画素の画素データにおけるN値化誤差値を想定することもその特徴の一つである。
あるいは、本実施例における装置の一態様は、以下となる。対象とする画素における画素データを、予め設定されている閾値を用いてN(Nは2以上の整数)値化することで、前記対象とする画素におけるN値化結果を得るN値化手段を有する。そして、前記N値化手段において前記対象とする画素のN値化結果を得る前に、前記対象とする画素のN値化結果として考えられ得る全てのN値化結果を用いて。当該全てのN値化結果の一つ一つに対応する、N値化誤差値を算出するN値化誤差算出手段とを有する。そして、前記N値化手段において前記対象とする画素のN値化結果が得られた後で、当該得られた前記対象とする画素におけるN値化結果に対応するN値化誤差値を、前記N値化誤差算出手段で算出されたN値化誤差値の中から選択する。そして、当該選択されたN値化誤差値を用いて前記次の画素のデータ値の補正を行う。
401 閾値算出部
414 2値化処理部
418 誤差分配部
414 2値化処理部
418 誤差分配部
Claims (7)
- 画像に含まれる各画素における画素データを、前記各画素に対する閾値を用いてN(Nは2以上の整数)値化することで、前記各画素におけるN値化結果を得るN値化手段と、
前記各画素に対する閾値を算出する算出手段とを備え、
前記算出手段は、前記各画素より前に前記N値化手段でN値化されて得られた複数の画素におけるN値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで前記閾値を算出し、さらに、前記複数の画素のうちの特定画素の画素データの前記N値化手段におけるN値化よりも、前記算出手段における、前記特定画素の画素データにおけるN値化結果に対して係数を掛ける処理が後ではないことを特徴とする装置。 - 前記N値化と同時に前記処理を前記算出手段で行うために、事前に、前記算出手段は、前記特定画素の画素データにおけるN値化結果を想定することを特徴とする請求項1に記載の装置。
- 前記算出手段は、前記特定画素の画素データにおけるあらゆるN値化結果を想定するが、N値化結果が0となる場合は想定しないことを特徴とする請求項2に記載の装置。
- 画像に含まれる各画素における画素データを、前記各画素に対する閾値を用いてN(Nは2以上の整数)値化することで、前記各画素におけるN値化結果を得るN値化ステップと、
前記各画素に対する閾値を算出する算出ステップとを備え、
前記算出ステップは、前記各画素より前に前記N値化ステップでN値化されて得られた複数の画素におけるN値化結果の夫々に対して係数を掛ける処理を行って、その総和を求めることで前記閾値を算出し、さらに、前記複数の画素のうちの特定画素の画素データの前記N値化ステップにおけるN値化よりも、前記算出ステップにおける、前記特定画素の画素データにおけるN値化結果に対して係数を掛ける処理が後ではないことを特徴とする方法。 - 前記N値化と同時に前記処理を前記算出ステップで行うために、事前に、前記算出ステップは、前記特定画素の画素データにおけるN値化結果を想定することを特徴とする請求項4に記載の方法。
- 前記算出ステップは、前記特定画素の画素データにおけるあらゆるN値化結果を想定するが、N値化結果が0となる場合は想定しないことを特徴とする請求項5に記載の方法。
- 請求項4乃至6のいずれかに記載された方法をコンピュータに実行させるためのコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009106550A JP2010193420A (ja) | 2009-01-20 | 2009-04-24 | 装置、方法、プログラムおよび記憶媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009010182 | 2009-01-20 | ||
JP2009106550A JP2010193420A (ja) | 2009-01-20 | 2009-04-24 | 装置、方法、プログラムおよび記憶媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010193420A true JP2010193420A (ja) | 2010-09-02 |
Family
ID=42336997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009106550A Pending JP2010193420A (ja) | 2009-01-20 | 2009-04-24 | 装置、方法、プログラムおよび記憶媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20100183234A1 (ja) |
JP (1) | JP2010193420A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI726525B (zh) * | 2019-12-09 | 2021-05-01 | 新唐科技股份有限公司 | 影像二值化方法與電子裝置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5394250A (en) * | 1991-03-10 | 1995-02-28 | Canon Kabushiki Kaisha | Image processing capable of handling multi-level image data without deterioration of image quality in highlight areas |
US5442581A (en) * | 1993-11-30 | 1995-08-15 | Texas Instruments Incorporated | Iterative division apparatus, system and method forming plural quotient bits per iteration |
US5465224A (en) * | 1993-11-30 | 1995-11-07 | Texas Instruments Incorporated | Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs |
US6449060B1 (en) * | 1996-07-22 | 2002-09-10 | Canon Kabushiki Kaisha | Image processing apparatus and method |
JP3752805B2 (ja) * | 1997-10-30 | 2006-03-08 | コニカミノルタビジネステクノロジーズ株式会社 | 画像処理装置 |
CA2418810C (en) * | 2001-06-15 | 2010-10-05 | Sony Corporation | Image processing apparatus and method and image pickup apparatus |
US7286717B2 (en) * | 2001-10-31 | 2007-10-23 | Ricoh Company, Ltd. | Image data processing device processing a plurality of series of data items simultaneously in parallel |
JP4144378B2 (ja) * | 2003-02-28 | 2008-09-03 | ソニー株式会社 | 画像処理装置および方法、記録媒体、並びにプログラム |
JP4144377B2 (ja) * | 2003-02-28 | 2008-09-03 | ソニー株式会社 | 画像処理装置および方法、記録媒体、並びにプログラム |
JP4432943B2 (ja) * | 2006-08-18 | 2010-03-17 | セイコーエプソン株式会社 | ライン位置算出方法及び補正値取得方法 |
-
2009
- 2009-04-24 JP JP2009106550A patent/JP2010193420A/ja active Pending
-
2010
- 2010-01-15 US US12/688,213 patent/US20100183234A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20100183234A1 (en) | 2010-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5086484A (en) | Image processing apparatus with fixed or variable threshold | |
JP4217657B2 (ja) | 画像処理方法、プログラム、記憶媒体及び装置 | |
JPH0613914A (ja) | 乗算不要の離散的コサイン変換方式および装置 | |
US7889394B2 (en) | Image processing apparatus and method | |
JP2006065834A (ja) | 画像処理装置および画像処理方法 | |
JP2010193420A (ja) | 装置、方法、プログラムおよび記憶媒体 | |
US6693727B1 (en) | Image processing apparatus for performing high-speed error diffusion | |
JP4939258B2 (ja) | 画像処理装置およびその方法 | |
JP2000122514A (ja) | ホログラムパターン決定装置、その決定方法及び記録媒体 | |
JP2000022952A (ja) | 画像処理方法、画像処理プログラムを記録した媒体及び画像処理装置 | |
JPH0698157A (ja) | 中間調画像形成装置 | |
JP5312158B2 (ja) | 画像処理装置及び画像処理方法 | |
JP3679522B2 (ja) | 画像処理方法及びその装置 | |
JP3347524B2 (ja) | 画像処理装置 | |
JPH11150659A (ja) | 画像処理方法 | |
JP3200274B2 (ja) | 画像処理方法及び装置 | |
JP2008078733A (ja) | 画像処理装置、画像処理方法、プログラム及び情報記録媒体 | |
JP5429015B2 (ja) | 画像処理装置及び画像処理方法 | |
JP3708465B2 (ja) | 画像処理方法および画像処理用プログラム | |
JP2013038732A (ja) | 画像処理装置 | |
JPH09107472A (ja) | 画像データ変換方法及び画像データ変換装置 | |
JP2002094785A (ja) | 画像処理装置、画像処理方法、及び記憶媒体 | |
JP2001119579A (ja) | 画像処理装置 | |
JPH09102869A (ja) | 画像処理装置 | |
JPH11154229A (ja) | 画像処理装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20100630 |