テーマ:ディジタル・ハーフトーニングのための最適なマスクの設計

 ディジタル・ハーフトーニングとは,ディジタル・カメラなどで撮影した多値の画像を画質を劣化させないように2値画像に変換する技術のことです.簡単な例として白黒の写真を黒のインクだけをもつインクジェット・プリンタで出力することを考えて見ましょう.簡単のため,1000x1000のサイズの写真を考えましょう.更に簡単のため,これを1000x1000のドットとして表現するものとします.つまり,1000x1000のグリッドを考えて,それぞれのグリッド点にインクを置くか置かないかを決めて画像を表現しようというわけです.それぞれの画素の明るさは256段階で表現されるものとします.最も簡単な2値化の方法は,各画素の輝度値を中間の値128と比較して,それより大きいときは白(つまり黒インクを置かない),小さいときは黒(つまり黒インクを置く)と定めるという固定閾値法です.こんな簡単な方法でも,何とか判別できる画像が得られることもありますが,ひどい結果になることもあります.たとえば,どの画素についても輝度値が127なら,本来は灰色なのに真っ白な画像になってしまいます.
 これでは余りにもひどいので,多数の閾値を用いる方法があります.これはディザ法と呼ばれる方法です.たとえば,16x16の行列には256個の要素がありますが,この行列に1から256までの整数を一つずつランダムな感じでばら撒くのです.これがディザ行列です.ディザ行列を決めたら,これを画像の行列と重ねていきます.それぞれの画素では,画素の輝度値とディザ行列の値を比較し,輝度値が大きいときは白,そうでなければ黒と決めていきます.先ほどのように,灰色の画像の場合には,約半数の画素が白になりますから,黒インクはほぼ半数のグリッド点に置かれることになり,結果として灰色の画像が出力されることになります.
 しかし,ディザ行列を乱数を用いて設計するのは実用上はよくありません.では,どうすればいいでしょう.ここで人間の視覚特性が重要になります.人間の目の分解能には限界があるので,プリンタから出された個々のインクを識別することはできません.ある1点を注視したとしても,その近傍の明るさの平均値が認識されるだけです.プリンタの出力は2値ですが,人間が感じるのは平均値でしかないので,それを考慮してディザ行列を設計すべきです.
 理想的なディザ行列として,ディザ行列のどの要素を中心とする近傍(たとえば,3x3の領域)における要素のの平均値(あるいは単純和または重みつき平均)が同じであるものが考えられます.残念ながら,2x2の近傍についてすら,上記の意味で最適なディザ行列は見つかっていません.最近になって研究の進展がありましたが,まだまだ研究の余地があります.この研究では,理論を確立するというよりは,学内のスーパーコンピュータを用いて全ての可能性を試すことによって最適解を求めたいと考えています.もちろん,単純な方法では調べるべき対象の数が膨大なので,スーパーコンピュータと言えども全数探索はできないので,工夫が必要です.
 下に示したのは,どの3x3の(連続)領域をとっても要素の総和が一定であるような行列です.このような行列を求めるのは簡単なことではありませんが,行列のサイズが近傍のサイズで割り切れる場合については,そのような性質をもつ行列を構成する方式が知られています(浅野らの方法).もっと大きなサイズで同様の行列を構成するというのが問題です.

0 1 2 6 7 8 3 4 5
3 4 5 0 1 2 6 7 8
6 7 8 3 4 5 0 1 2
2 0 1 8 6 7 5 3 4
5 3 4 2 0 1 8 6 7
8 6 7 5 3 4 2 0 1
1 2 0 7 8 6 4 5 3
4 5 3 1 2 0 7 8 6
7 8 6 4 5 3 1 2 0