組織的ディザ法は、既に説明したように、一定の閾値パターンと画素データを1対1で値を比較して大小関係により白黒を決定していました。面積階調である事から、その階調数は閾値パターンの大きさに依存し、パターンが大きくなれば階調数は増加しますが、逆に解像度は失われる事になります。一方、このような規則性を無くし、より画像内容に応じた表現を表現する方法があります。その1つが誤差拡散法というものです。
この方式は、対象画素の白黒を決めた時に、本来その画素がもつ濃度データと決定した白黒データとの差異を、“誤差”として対象画素の周りに押しつける事で全体として、基画像と再現画像との濃度差を小さくし、再現性を良くしようとする方式です。
今、対象画素(ij)の濃度データをAijとします。画像データを一定の閾値aと比較して白黒を決めます(再現画像では、白を“255”、黒を“0”としておきます)。いま(ij)画素のデータAijと閾値データaと比較し、
Aij>a であれば再現画素を“白”(255)、逆に
Aij<a であれば再現画素を“黒”(0)
とします。もし、“白”であれば、
Aij−255
が、“黒”であれば
Aij
が基の画素と再現画素との誤差データEijとなります。再現性を追求するのであれば、画像全体の誤差を最小にする方式を考えれば良いのですが、誤差拡散法は、この誤差Eijを周辺画素に配布し(押しつけ)、画像全体としてのそれなりの画質にしようという発想で考えられています。例えば、(i+1、j)画素に対しては、A’i+1,j=Ai+1,j+α*Eijとし、αというある一定の重み付けをした誤差を加えたものを新しい(i+1、j)画素の濃度データとして、このプロセスを繰り返し処理する方式です。ここで問題をなるのは、周辺画素への誤差の重み付けです。どのような画像に対しても再現性を確保しようとすれば、対象画素と周りの画素との距離を目安として、距離に反比例させて重み付けを行うのが最も直感的です。従ってαは一定値ではなく、対象画素との位置関係で決められています。
またこのような処理は、画像の走査線毎にリアルタイムで処理する事が前提に開発されています。このために、誤差は、“これから処理”される画素に対して配分される事になります。このようなことから、対象画素位置を(i,j)とすると下記のような例では、(i,j+1)位置の画素に対しては誤差の重みを7/16、(i+1,j-1)位置の画素には誤差重みを3/16にする等で誤差を拡散する事になります。
* |
対象画素 |
7/16 |
3/16 |
5/16 |
1/16 |
なお、これらの誤差重みを全て加算したものは“1”となります。なお、より誤差を拡散する範囲を広くした例としては以下のものがあります。
* |
* |
対象画素 |
7/48 |
5/48 |
3/48 |
5/48 |
7/48 |
5/48 |
3/48 |
1/48 |
3/48 |
5/48 |
3/48 |
1/48 |
見て分かるように、この手法では、画像の一部で特有の(にょろにょろとした)波パターンが出現する事が欠点です。
印刷業界では、網線を用いる方式を“AMスクリーン”、誤差拡散法を利用した手法を“FMスクリーン”という言い方をしていますが、AMスクリーンでは網線の組み合わせでカラー画像を再現しますので特有のモアレ(ロゼッタパターンと言います)が出ます。印刷を発注される方によっては、これをなんとか除去するように言われる方もいらっしゃいますが、原理上、除去する事はできません。なお、AMスクリーンの場合、350dpi程度で印刷しています。他方、FMスクリーンはこのようなロゼッタパターンが出る事はありません。また階調と解像度も充分よく再現できる事が特徴です。このため、最近の印刷ではこの方式が主流で、CTPで印刷の版を作成する時に多く採用されています。また前述の、この方式特有の波線パターンを目立ちにくくする工夫も各社で開発されていまが、実際には取り切れていないのが実態で、孤立ドットが目立つ事も含め、印刷の発注者から指摘される事もあります。なお、この方式の原理は簡単ですので、EXCEL付属のVBなどで簡便に様子を確認して見ても良いでしょう。