ぼやきごと/2009-03-01/aviutlPluginPortsのYUY2スケール設定について のバックアップ(No.4)


aviutlPluginPortsのYUY2スケール設定について

NiVE愛用者スレ5の609の書き込みは私なのですが、気になったのでYUY2のスケール設定についてもうちょっと調べてみました。
「そもそもYUY2色空間ってなんぞ?」という方は『YUVフォーマット及び YUVとRGBの変換』あたりを読むといいんじゃないでしょうか。

この記事で使うYUY2関連用語

基本的に、一般的なプレイヤー(≒デコーダ)では圧縮レンジを標準としてYUY2→RGB色変換しているようです。
よってそれに倣って多くのエンコーダも圧縮レンジをデフォルトとしてRGB→YUY2色変換しているようです。
フルレンジがデフォルトのaviutlPluginPortsは割とイレギュラーな存在…。

ただ、x264(MP4)などの映像フォーマットではオプションを付けることでフルレンジに対応できます。
そのオプションに対応しているプレイヤーであればフルレンジであるものとして色変換してくれるようです。
ニコニコ動画等で使われている Flash Player もこのオプションに対応しています。
当然、圧縮レンジよりも表せる色の範囲が広いので、より再現度の高い映像表示をすることができます*1

aviutlPluginPortsでx264gui.auoを使う際は、次のようにするとフルレンジに対応させられると思います。

  • YUY2スケール設定でフルレンジ(Y,U,V=0〜255)を選ぶ。
  • x264gui.auoのプラグイン詳細設定でコマンドタブに移動し、 --fullrange on と入力する。

--fullrange オプションの詳細はx264日本語Wikiにあります。
デフォルトではフルレンジオプションはOFFなので注意してください。

YUY2スケール設定と--fullrangeオプションを変化させて、NicoNico高画質設定で出力させたMP4映像をキャプチャした結果は次の通りです。
キャプチャにはFlavieというプレイヤーを使いました(フルレンジオプション対応)。

オリジナル
original.png
A. スケール設定=フルレンジ、--fullrange on 有り
full_op-on.png
B. スケール設定=圧縮レンジ、--fullrange on 無し
comp_op-off.png
C. スケール設定=フルレンジ、--fullrange on 無し(誤った設定)
full_op-off.png
D. スケール設定=圧縮レンジ、--fullrange on 有り(誤った設定)
comp_op-on.png

x264なので基本的に劣化は発生するのですが、それでも誤った設定をしているCやDはオリジナルより明るかったり暗かったりするのがハッキリとわかります。
多分、aviutlPluginPortsの設定を細かくいじっていない人はCになっていると思います…。

一方、設定の正しいAとBは一見するとほとんど違いがありません。
しかし拡大してみると、Bの圧縮レンジの方にはしわ状のバンディングが発生していることがわかります。
…といっても、拡大すればわかる程度なので、そこまで気にしなくていい気もしますが。

Category: [プログラミング][NiVE][CG技術] - 2009-03-01 22:06:58

  • とりあえず、プラグインとしてのデフォルト値は圧縮レンジの方がいいのかな…orz -- ルーチェ 2009-03-01 (日) 22:25:23
  • Huffyuv使ってる人でも、RGB圧縮してるのかYUY2圧縮してるのかなんて気にせず使ってる人も多い気がします。というか自分も最近まではそうでした。orz 色空間の話はややこしいですよねえ・・・。確かにフルレンジは上級者向けというか扱いが面倒ですし、デフォルトは圧縮レンジのほうがいいような気がしますね。 -- 金の髭 2009-09-29 (火) 03:09:52

*1 ソースの映像がYUY2圧縮レンジだったなら意味がないですが…。