誤差拡散

256階調というのはやはり不足だ。 人間の側方抑制によるコントラスト強調が働く限り縞模様(マッハバンド)は 出てしまうのである。 とは言っても256階調以上をモニタで表現することは現状できないのだから、 残る手段は誤差拡散しかない。 ピクセルシェーダで時間方向と空間方向でいい感じに誤差拡散を行えれば マッハバンドの問題はかなり解決するのではないか。

だだもれ

このような空目は、古くから知られていた。エルンスト・マッハは、色が変わろうとする場所に現れる、より暗いバンド、あるいはその逆のより明るいバンドが、一種の錯覚であることに気づいた。以来、これはマッハ・バンドと呼ばれる錯視として知られるようになる。
網膜上にはたくさんの視細胞が稠密に並んでいる。それはちょうどデジタル・カメラの画素のようなもので、おのおのレンズを通してやってくる光の強度を認識する。
視細胞は認識した光の強度を神経繊維を通じて脳に伝える。一方、視細胞は互いに隣どうしの細胞と連携をとって、情報を交換している。ある視細胞にことさら強い光が入ってきたとする。この細胞はそれを信号に変えて、強い光が入ってきたことを脳に伝達する。そのとき同時に、隣の視細胞に対して、抑制的な情報を送る。「この光は俺が受け取ったから、おまえたちはそんなにさわがなくていいよ」と。ちょうど外野フライを捕球する野手が他の人間の動きを抑制するように。
するとどのようなことが起こるだろうか。周りが静まることによって、強い光を受け取った視細胞からの信号がことさら強調されることになる。つまり、コントラストがより明確化され、そこに境界線が作り出される。細胞と細胞のあいだのこのようなやりとり、つまり強い信号をより際立たせるための仕組みは、側方抑制と名づけられている。
マッハ・バンドの錯視は、細胞レベルのこの特殊なメカニズムに依存すると考えられている。色が変化する場所を認識した視細胞は、その隣の視細胞の反応を抑制するように働く。結果として、変化はより強調され、ないはずの境界線が現れる。
全く同じように説明できるわけではないが、滑らかすぎる変化に、人工的なギザギザや縞模様が出現してしまう空目も、このような細胞間の側方抑制的な仕組みが作用していると考えることができる。輪郭のないところに輪郭を求めるあまり、視細胞は、変化する階調のあらゆる場所で、側方抑制をかけてははずし、かけてははずすことを繰り返して、縞模様を消長させているのだ。
ヒトの内部がもともと持ち合わせている、このおせっかいな認識によって、せっかく磨き上げた宇宙船の表面がざらついてしまうことを回避するため、セガの平山氏らは特別な工夫を施して画像処理を行っている。それは企業秘密に属することなのだろうが、誤差拡散と呼ばれるものらしい。門外漢の私にはそれがどのようなものかを詳しく説明することはできない。が、おそらく「モザイク消し」に似た、トーンジャンプのデフォーカシングのようなものではないだろうか。
もちろん、微細な階調のあいだのトーンの差は見えない。しかしそれは数学的な厳密さをもって整列されている。誤差拡散は、この整列をところどころ乱して、あるいはぼかしてしまう技術なのだろう。それによって、私たちの内部の眼が、側方抑制をかけるために探し出す、わずかな手がかりをなくしてしまうのだ。
皮肉なことに、精密に磨き上げるのではなく、わざと毛羽立たせたほうが、私たちにはより滑らかに感じるということである。
「世界は分けてもわからない」

福岡さんの誤解なさっている「誤差拡散」は、ディスプレイで表現できる階調を超えた画像を、できるだけ元の階調に近く表示するために利用される技術。古くはデジタル8色しか使えなかったパソコンのディスプレイで、どうやってフルカラーの画像を表示するか、を解決する方法のひとつだった。
色調がたりないディスプレイである画素をおくと、どうしてももとの画像と色の差がでてしまう。この誤差を周辺の画素に按分して、近傍画素の色とする。この新たな色とディスプレイとの色にはやはり誤差があるため、さらにこの誤差を近傍の画素に散らし…と、再帰的に処理するのが誤差拡散法である。
実際には画像の左上から一列ずつ下に向かって計算するラスター処理されることが多く、またその際に保持すべきメモリー量を節約するために右隣に誤差の0.5、さらにその隣に0.25、処理中の真下の画素に0.25くらいの拡散で処理するなどの工夫がされていた。(これなら拡散のために保持するメモリーは一ラインと二画素ぶんで済む)

256階調でも不足するというのはなかなかに衝撃的だが、それはそれとして空間的と時間的との両面で誤差拡散するというのは面白い。とくにゲームのように画面をリフレッシュし続ける表現では、次の画面のための裏バッファを取っている実装するのがふつうだから、これに色誤差を埋め込んでいくというのはメモリー節約の一助となるだろうし、そもそも空間的に不足した色調を時間的に補填するというアイデアそのものが魅力的だ。

なお階調を増やす別の方法に、近傍の画素をいくつかまとめて一画素とみなすものがある。これもまた空間的解像度を落として色調をかせぐやりかたである。1画素ではオンとオフ二階調だったとしても、4画素使えば5階調の表現できるわけである。ただ、オンオフのパターンをあまりに整列させると意図しないモアレが生まれたりといった不具合があるため、オンオフのパターンをランダムに散らすなどの工夫は必要だった。