Classiclll's Blog

an old boy

モノクロMacだって表現豊かだったんだ! with Proce55ing (Processing)

イメージ 1

モノクロMacだって表現豊かだったんだ! with Proce55ing (Processing)

コンパクトMacやPowerBookDuoの時代は、ディスプレイが【モノクロ】だった。
モノクロとグレースケールを混同されるケースが多く見受けられるが、
 モノクロ    : 白と黒しか無い世界
 グレースケール : 白と黒の間に254種類の灰色がある世界
と、全くの別世界。

だけど、【モノクロ】マックでも写真を観賞できていた。実際、ハイパーカードを使った写真付きの百科事典が流通していたぐらい。

多色多諧調の写真のニュアンスを単色2諧調の【モノクロ】ディスプレイでも表現できるようにするための画像変換法がある。

解説はここに任せるとして、新聞紙の写真印刷にも使われているディザマッピングがOldMacで使われていた。
なので、ノスタルジックな感傷も含めてディザ(Dither)の風合いは私の好みの一端を担っている。
本館のトップページやこのブログの右上の写真は、本館で紹介している愛機Classicの復活過程の中で,ハイパーカードパークで知り合ったUDIさんにお願いして作ってもらったディザ変換ツールを用いて変換して使っている。

その当時、「HyperCardのディザってどんな手法だっけ?」ってテーマが盛り上がったときにディザパタンを一般化した計算式をひねり出したんだけど、結局ハイパーカードでは試していなかった。

フィルタをやる!って言ったそばからWiiに手を出し始めたんだけど、Wiiも時間がかかりそうだし、ちょこっとフィルタに戻って良いかな,と。


で、本題。


クリックで、原画→16x16ディザ→8x8ディザ→4x4ディザ→2x2ディザ→中間諧調カット→原画→・・・と進む

モノクロの場合はRGB各諧調の平均(足して3で割った数)、カラーの場合は各RGB各々に対してディザを適用した。
情報量の圧縮比は、モノクロの場合1ビット2諧調だから24ビットフルカラーの24分の一、カラーの場合3ビット8諧調だから24ビットフルカラーの8分の一になる。

ひねり出したのはここで解説されている4x4Bayer型をnxnに一般化して、階調がPn(i,j)以下の点は黒、そうでなければ白、となるような一般化Bayer型パタン関数。

(注)
 ・(L ? A : B)は「Lが真のときはA、そうでなければB」となる式
 ・%は剰余演算(割り算の余り)
 ・/は整数除算(割り算の商)
●2*2の規則的なパタン
0, 2
3, 1
P1(i,j) := ( i%2!=j%2 ? 2: 0 ) + j%2 

●4*4の規則的なパタン
00,08,02,10
12,04,14,06
03,11,01,09
15,07,13,05
P2(i,j) := 4*P1(i%2,j%2) + P1(i/2,j/2)

●8*8の規則的なパタン
[略]
P3(i,j) := 4*P2(i%2,j%2) + P2(i/2,j/2)
        := 4*{ 4*P1(i%2%2,j%2%2) + P1(i%2/2,j%2/2) }
          + 4*P1(i/2%2,j/2%2) + P1(i/2/2,j/2/2)

●だから、一般に
・階調数は2^(2n) (n=2 -> 4*4 -> 16階調)
であり、
・Pn(i,j) := (i%2<>j%2 ? 1 : 0) + j%2 :n=1のとき
    := 4*Pn-1(i%2,j%2)      :n>1のとき
         + Pn-1(i/2,j%2)

●ディザ変換は
・k(x,y)を(x,y)の階調
としたとき、座標(x,y)のtargetビットを以下で決める。
target(x,y) := ( Pn(x, y) <= source(x,y) ; 黒 : 白 )



Processing については、
日本語サポートサイトからたどれるP5インフォメーション→言語が参考になる。
(解説してあるのは一昔前の版だから注意が必要だけど、loop()→draw()の読み替えだけで大抵OK)
・山本徹(thoru)さんがFunProce55ingで解説してくれている。(【簡潔】で【わかり易く】、【楽しい】解説)
例題集は習作集と区別するためにこちらに置いている。
・P5のスケッチからアプレットを作り【ジオシティーズ】にアップする手順をまとめたので、参考に。