●AVI2ISD Ver0.04 (ディザ対応版)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●なぜに AVI2ISD Ver0.04 (ディザ対応版)を作ったのか?

 全ての始まりは、この映像でした。

◎きっかけの映像 (左:オリジナル, 右:肌に段々ができた減色画像)
オリジナル画像 肌に段々ができてる画像

 4人の足が画面に現れるシーンです。静止画だとあまり感じませんが、
 見てのとおり X680x0 の階調が少ないために、肌が段々模様になって
 しまっています。

 これはまずい、これは嫌だ・・・ということで、なんとか4人の足が
 綺麗に見えるようにしたい!というのがきっかけでした。

 これに加えて、以前にパッチを当ててごまかした、エミュレータ上で
 動かないことがある問題も、この際に直してしまおうというわけです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●X680x0 と近年のアニメ絵事情

 X680x0 は RGB にそれぞれ 5bit = 32階調 を持ち、共通輝度ビットで
 1bit の計16bit Color を持っています。

 単色であれば共通輝度ビットを含め 64階調の表現が可能で、65536色と
 呼ばれますが、フルカラー画像となると色相変化時の輝度ビット扱いが
 厄介な為、輝度ビットを使わず 32768色で使うことが多いようです。

 32768色とか 65536色とか聞くと、すごく多いように感じたものですが、
 実際には 32階調ではバンディング(いわゆるマッハバンド)が目立ち
 滑らかに変化するところで、上記のような段々模様が出てしまいます。

 特に、昨今のアニメ映像は手塗りではなくコンピュータ彩色ですので
 手塗りではありえない滑らかな単一色や、滑らかなグラデーションが
 頻発している為、余計にこの階調の少なさが目立ってしまうのです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●階調不足を補うために

 AVI2ISD Ver0.04 では、前述の階調不足による段々を抑える為に
 従来の下位bit切捨て処理に加えて、2x2パターン, 4x4パターンの
 ディザ処理を行えるようにしてみました。

 数字上は、2x2パターンで26万色相当、4x4パターンで1600万色相当
 ということになるのですが・・・いかんせん解像度の低い動画では
 思った以上にドットの荒さが目立ちます。

 段々模様だけど滑らかな絵がいいか、段々は消えたけどぼつぼつと
 した絵がいいか究極の選択・・・。

 ところで、色々なデータを試してみた感じでは、32768色では確かに
 階調不足なのですが、26万色もあると RGBそれぞれが 64階調になり
 あまり段々が気にならないことに気づきました。

 そう言われてみれば、FM77 AV の26万色はとても綺麗だったことを
 覚えています。1600万色と比べてもさほど遜色なかったですよね?

 これにもう1つ。昔は中間色を表現するのにタイリングペイントを
 利用しました。違う色を市松模様に配置すると、色が混ざり綺麗な
 中間色に見えるというあれです。不思議なことに、市松模様だけは
 画素が大きくなっても綺麗に見えるんですよね。

 ・・・・

 そこで思いついたのが、32768色でタイリングペイントする感覚で
 中間調を表現し、擬似的に 26万色相当にするという考え方です。

 そうなると話は簡単で、64階調分のデータを取り出し、下位1bitに
 市松模様の震えを加えてあげれば良いわけです。

 そしてもう1つ。動画であれば x y の2次元だけでなく時間軸方向も
 あるので、次のように偶数フレームで使うディザパターンと、奇数
 フレームで使うディザパターンを、正反対の市松模様にしました。

  偶数フレーム用パターン
   ●○
   ○●

  奇数フレーム用パターン
   ○●
   ●○

 映像によっては、パターンが毎フレーム切り替わることで模様が
 流れるように見えることもありますが、フレームレートが高いと
 わずかなちらつきはあるものの、時間軸で見て色が微妙に混ざり
 まずまず綺麗な擬似64階調=26万色が実現できました。

 予想外だったのは、階調不足が補われただけでなく、ディザ処理に
 つきものの画像のボツボツ感が低減され、解像感が上がって見える
 ことです(そう思うだけかも知れませんけど)。

 画像の種類や場面によって変わるとは思いますが、この市松模様の
 毎フレームディザパターン切り替えを、時間軸ディザということで
 AVI2ISD Ver0.04 に実装しました。

 好みもあると思いますので、いろいろ試してみてもらえば良いかと
 思います。

  ex) 2x2 ディザをかけて変換する例

   avi2isd -C1 AVIファイル名 ISDファイル名

  ex) 4x4 ディザをかけて変換する例

   avi2isd -C2 AVIファイル名 ISDファイル名

  ex) 2x2 ディザ(1フレーム毎にパターン変更)をかけて変換する例

   avi2isd -C3 AVIファイル名 ISDファイル名

  ex) ディザやガンマは効かないけど、約 2倍速で変換できる高速モード
    (256色動画などパレットを使った物では NG のはず)

   avi2isd -P0 AVIファイル名 ISDファイル名

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●ガンマ補正

 AVI2ISD Ver0.04 にはもう一つ、ガンマ補正のパラメータも追加しています。
 -G1.0 のように実数で指定し、1未満だと暗くなり、1以上だと明るくなります。

  ex) 明るくなるようにガンマ補正をかける

   avi2isd -G1.3 AVIファイル名 ISDファイル名

  ex) 暗くなるようにガンマ補正をかける

   avi2isd -G0.7 AVIファイル名 ISDファイル名

 どの程度役立つかは何とも言えませんし、AVIファイル作成時に調節しておけば
 済む話ではありますが、CRT と 液晶とでは同じデータでも見栄えがまるっきり
 変わりますので、何かで役に立つこともあるかもしれません^^;

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

(EOF)