ROの動画の性質を探る

ROの画面は本来動画の圧縮に適しているはずである。

  • 同じパターンが頻出する・・・背景やキャラクタは同じ種類であれば同じグラフィック
  • 物体がドットをまたぐ事がない・・・動いている物体でも同じパターンならば、完全に同じものが次のフレームに存在する
  • 視点の回転や仰角の変更が計算式で行われている・・・動き補間の予測が当たりやすい

実際、x264で圧縮するとIフレームはほとんど使われずPフレームBフレームが同程度に配分されている。
(Bフレーム設定で最大連続数が3になっているにも拘らずBフレームが連続しないのはどこか設定が悪いのだろうか?<AVIでも連続したBフレームは許容範囲・・・のはず)
但し、一般の動画と違い撮影時のフレームレートは環境によってまちまち。
私の場合15fpsではコマ落ちするので12fpsで撮影していますが、RO自体のフレームレートはおよそ30(環境によって異なる)なので、原画収録の時点で常に1〜2コマのコマ落ちが発生している事になります。
(frapsなのでは60fpsでの撮影も可能のようですが・・・)


さて。前回は512×384の動画で画質の変化を見ていきましたが、1/2に縮小する際ノイズが発生してしまい最終生成物に大きな影響を与えてしまったので、今回は原画をそのままのサイズで圧縮した場合について調べてみました。
用意したサンプルは1024×768×16ビット×12fps×932コマ(1分17秒)の無圧縮(BMP)AVIファイル(1.35 GB=1,460,144,128 バイト)。
(音声データを含んでいるので若干ファイルサイズは大きい)
今回は簡単に「Single Pass - Const.Quantizer (qp)」で品質の数値を0,20,25・・・50に変更してみました。
サンプル画像が大きいので隠し。
・・・そのままではあまりにも大きすぎるので1/4に切り取りzzz
更にとてもデータが重いのでリンクだけ張っておこう・・・

  • 原画:
  • QP0:
  • QP20:
  • QP25:
  • QP30:
  • QP35:
  • QP40:
  • QP45:
  • QP50:

それぞれ評価していくと・・・

QP50

  • slice I:16 Avg QP:45.00 size: 20110
  • slice P:484 Avg QP:50.00 size: 2738
  • slice B:421 Avg QP:51.00 size: 515
  • mb I I16..4: 47.8% 40.8% 11.5%
  • mb P I16..4: 8.3% 7.9% 0.1% P16..4: 21.9% 1.3% 4.8% 0.0% 0.0% skip:55.7%
  • mb B I16..4: 0.3% 0.2% 0.0% B16..8: 6.5% 0.0% 0.1% direct: 0.1% skip:92.7%
  • 8x8 transform intra:46.9% inter:97.6%
  • direct mvs spatial:93.3% temporal:6.7%
  • ref P 57.1% 42.9%
  • ref B 73.0% 27.0%
  • SSIM Mean Y:0.6241038
  • kb/s:194.2

流石にこれは見るに耐えないレベル。記録用としてすら使えないので論外。
各フレームのデータ量は極限にまで抑えられ(Bフレームなんて平均515ですよ!)、mb Iの数値は軒並み高く、skipMBはとんでもなく高い。
うん。流石に無理させすぎた・・・ゴメンzzz ってか、良くこれで画像が出来るもんだ、と感心した(笑)

QP45

  • slice I:15 Avg QP:40.00 size: 38111
  • slice P:487 Avg QP:45.00 size: 4757
  • slice B:419 Avg QP:49.00 size: 774
  • mb I I16..4: 35.3% 39.5% 25.3%
  • mb P I16..4: 8.7% 8.2% 0.4% P16..4: 26.7% 3.5% 3.6% 0.0% 0.0% skip:48.9%
  • mb B I16..4: 0.5% 0.4% 0.0% B16..8: 8.4% 0.1% 0.2% direct: 0.2% skip:90.2%
  • 8x8 transform intra:46.1% inter:93.0%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 60.4% 39.6%
  • ref B 74.1% 25.9%
  • SSIM Mean Y:0.7359693
  • kb/s:334.8

凄い!文字が見えるよ?!(<ある意味当たり前だけど(笑))
まぁ、残像はあるわブロックノイズは凄いわで、まだまともに見れたものではないがzzz
データ的には各フレームのサイズは1.5倍、mb Iでは4×4が増えて他が少し下がった感じ。
150995.78kb/s→334.8kb/sと圧縮比はなんと約1/450! これでファイルサイズは3Mちょい。

QP40

  • slice I:10 Avg QP:35.00 size: 65515
  • slice P:492 Avg QP:40.00 size: 9469
  • slice B:419 Avg QP:44.00 size: 2040
  • mb I I16..4: 26.3% 34.6% 39.1%
  • mb P I16..4: 7.7% 9.0% 1.7% P16..4: 28.8% 6.9% 3.1% 0.1% 0.0% skip:42.8%
  • mb B I16..4: 0.9% 0.9% 0.0% B16..8: 13.0% 0.7% 1.2% direct: 1.0% skip:82.2%
  • 8x8 transform intra:47.8% inter:81.2%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 63.1% 36.9%
  • ref B 76.3% 23.7%
  • SSIM Mean Y:0.8252940
  • kb/s:643.0

キャラクタがしっかり判別できるようになってきた。文字は完全に識別可能。
ただ、相変わらず残像が残っているので記録用データとしての信頼性は今一つ。
各フレームの大きさは倍程度まで増えて、mb Iは4×4が多用されるようになってきた。skipMBも下がり傾向。

QP35

  • slice I:9 Avg QP:30.00 size:111127
  • slice P:491 Avg QP:35.00 size: 19463
  • slice B:421 Avg QP:39.00 size: 5083
  • mb I I16..4: 16.0% 32.9% 51.2%
  • mb P I16..4: 6.1% 9.0% 4.1% P16..4: 27.4% 9.9% 4.5% 0.4% 0.1% skip:38.4%
  • mb B I16..4: 1.1% 1.6% 0.3% B16..8: 16.6% 1.9% 3.7% direct: 2.8% skip:72.0%
  • 8x8 transform intra:46.3% inter:67.2%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 65.4% 34.6%
  • ref B 78.8% 21.2%
  • SSIM Mean Y:0.8963131
  • kb/s:1323.4

気にしなければブロックノイズもようやく許容できる範囲にまで収まってきた。残像もほとんど見受けられない。
このLvならば観賞用には使えないけれど、記録用には実用できそうな感じ。
150995.78kb/s→1323.4kb/sだと1/100以下まで圧縮できた事になる。2時間の録画でも大体1GBだから容量的にも許容範囲だろう。

QP30

  • slice I:8 Avg QP:25.00 size:165745
  • slice P:491 Avg QP:30.00 size: 38730
  • slice B:422 Avg QP:34.00 size: 11983
  • mb I I16..4: 14.1% 25.8% 60.1%
  • mb P I16..4: 4.2% 8.5% 7.3% P16..4: 25.2% 11.4% 6.0% 1.0% 0.5% skip:35.9%
  • mb B I16..4: 1.1% 2.0% 1.1% B16..8: 18.6% 3.5% 7.2% direct: 5.2% skip:61.4%
  • 8x8 transform intra:42.3% inter:54.5%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 66.7% 33.3%
  • ref B 79.5% 20.5%
  • SSIM Mean Y:0.9441222
  • kb/s:2647.5

拡大しなければブロックノイズが見えなくなってきた。動きの激しい大魔法でもノイズが気にならない。
ここまでくれば観賞用としても使えるようになる品質。但し、まだ石畳の傷や水面の動きなどの細部の再現はできていないので平面だとノッペラ感が。
大きくなってきたファイルサイズが気になる。そろそろ妥協の頃合いか?

QP25

  • slice I:8 Avg QP:20.00 size:240128
  • slice P:491 Avg QP:25.00 size: 69268
  • slice B:422 Avg QP:29.00 size: 25451
  • mb I I16..4: 11.9% 20.3% 67.8%
  • mb P I16..4: 2.6% 7.8% 10.2% P16..4: 23.7% 12.0% 6.4% 1.8% 1.4% skip:34.1%
  • mb B I16..4: 0.9% 2.1% 2.2% B16..8: 18.1% 5.2% 10.8% direct: 8.2% skip:52.5%
  • 8x8 transform intra:37.2% inter:44.7%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 67.5% 32.5%
  • ref B 79.8% 20.2%
  • SSIM Mean Y:0.9711250
  • kb/s:4864.9

ブロックノイズはフレーム毎に拡大しながら探してようやく見つかるレベルまで品質は上がっている。
石畳の小石や水面の波紋まできちんと再現されていて、これ以上品質が上がっても差異を感じられるか疑問を覚える。
ほぼ原画レベルの映像といってよいだろう。
その分ファイルサイズは凄い事になっている。よほど大容量の記録媒体があったとしても、これを何時までも残しておく事は躊躇ってしまいそう。

QP20

  • slice I:8 Avg QP:15.00 size:342442
  • slice P:491 Avg QP:20.00 size:112582
  • slice B:422 Avg QP:24.00 size: 49961
  • mb I I16..4: 13.1% 9.1% 77.8%
  • mb P I16..4: 2.0% 6.1% 12.8% P16..4: 23.1% 11.2% 7.8% 2.2% 2.0% skip:32.7%
  • mb B I16..4: 0.6% 2.1% 3.6% B16..8: 16.5% 6.3% 13.6% direct:11.3% skip:46.1%
  • 8x8 transform intra:28.7% inter:36.5%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 68.0% 32.0%
  • ref B 79.7% 20.3%
  • SSIM Mean Y:0.9856773
  • kb/s:8245.0

もはやQP25と何が違うのか一見して判らない。
比較画像を交互に見比べてようやく「あ、少しだけ水面の影が増えた?」「LPのエッジが少し伸びたかも?」とに気が付く程度。
これ以上の画質の追求は優れた感覚を持つ専門家ですら価値があるのか疑問。
これを実現する為にQP25の更に倍のサイズを持つファイルの価値は、対費用効果を無視できる人にしか理解できないかもしれない。

QP0

  • slice I:8 Avg QP: 0.00 size:605998
  • slice P:485 Avg QP: 0.00 size:363879
  • slice B:428 Avg QP: 0.00 size:300267
  • mb I I16..4: 12.8% 0.0% 87.2%
  • mb P I16..4: 2.7% 0.0% 23.8% P16..4: 17.7% 5.8% 9.4% 5.1% 5.0% skip:30.5%
  • mb B I16..4: 0.5% 0.0% 10.5% B16..8: 14.5% 6.5% 20.8% direct:11.6% skip:35.7%
  • direct mvs spatial:99.8% temporal:0.2%
  • ref P 68.4% 31.6%
  • ref B 79.3% 20.7%
  • kb/s:32296.4

原画との比較の為に実験的に作ったもの。QP20との差を感じる事は私の感性では無理。
演奏の音符が少しだけカクカク見える気がするが、多分気のせいzzz
原画と輝度が違うのか? 可逆圧縮と謳われているにしては可逆になって無いじゃん!と突っ込みを入れなければならないだろう。
フィルタ類を全て外しているはずなのだが・・・
実際JTrimでヒストグラムを出すと、グラフの形状が異なっている事からも可逆になっていない事がわかる。ってか、ファイルサイズからして違うし(笑)
(オプションを省いていけば可逆圧縮になるのかもしれない)
ファイルサイズは既に全てを突き抜けてしまったようなサイズまで膨れ上がった。
だが、実はこれでも原画と比べると20%程にまで縮小されている。ってか、原画でかすぎ(笑)
(無圧縮AVIで2時間のGvGを録画すると1.5GBのファイルが96本出来るんです・・・)

総評

Single Passという事で、この結果が2pass以上の場合にも当てはまるか判らないが・・・

  • 検証用・記録用の画像は1.5M〜2Mb/s程度で十分
  • 観賞用・加工素材用の画像は2M〜3Mb/sもあれば満足

といえそうだ。
但し、これは細かい調整を行っていない状態での話。更に私の主観での感想。
x264はチューニング出来る項目が数多くあり、カリカリにチューニングされた設定ならば更にビットレートを下げても同レベルの画像が得られるかもしれない。
まだまだ追究の余地は残されている。・・・時間さえあればな(笑)


ちなみに解析結果にあるSSIM Meanという数値が原画との違いを表す指標になるらしい。
某所では「0.97を切ると見れたものではない」と言われていたが、0.89から実用と判断した私の感性はやはり鈍いのか(笑)