【AviUtl】未圧縮とYUY2との違いについて【YUV422、RGB】

このページでは、AviUtlにて「AVI出力(Ctrl+S)」で動画を出力する際の「未圧縮」と「YUY2」の違いについて説明します。

yuy2-未圧縮

スポンサードリンク

無圧縮出力の使い道

動画は通常、エンコードすればするほど画質が劣化していきますが、

「未圧縮」も「YUY2」もどちらも「無圧縮」出力の為、画質自体の劣化はしません

その為、動画編集中に非常に重いエフェクトを入れたり場合などに、

そのオブジェクト単体で無圧縮動画として出力して、再度オブジェクトの素材として使用するというのが一般的な使い方です。

あと、当たり前ですがファイル容量は非常に大きくなります(後述のサイズ比較参照

色の表現方法

世の中に色の表現方法は、「RGB」「YUV」「HSV」「CMYK」など色々な表現方法が有ります。

この内、

  • 「未圧縮」=「RGB」の事
  • 「YUY2」=「YUV」の事

を指します。

「RGB」と「YUV」の違い

超ザックリ言うと、

  • RGB:色を完璧に表現出来る
  • YUV:色を間引いて表現する(その代わりファイルサイズを小さくできる)

という感じです。

RGB

私達が普段馴染みのある「RGB」は、(red)・(green)・(Blue)の3原色の組み合わせの表現方法です。

Windowsユーザーにはお馴染みの↓画像のようなカラーパレットで示す事が出来ます。(R、G、B)

rgbの例

YUV

RGBと違い、「輝度」(Y)と「色差(輝度と青の差=U、輝度と赤の差=V)」で色を表現する方法です。

輝度?色差?なんじゃそりゃ?」って感じだと思いますが、たぶん、実際に理論的に説明しても理解出来ないと思いますので図解します。

YUV(元画像) Y(輝度) U(輝度と青の差) V(輝度と赤の差)
s-2015-03-31 14.53.14 s-2015-03-31 14.53.14-YCbCr_ITU_R470 s-blue s-red

▲上の表は、一番左の画像(YUV(元画像))を「GIMP」にてYUV成分に分解したモノ(右3枚)です。

一番左の「YUV(元画像)」は、右の「Y(輝度)」「U(輝度と青の差)」「V(輝度と赤の差)」の3枚の色情報を合成させる事で表現する事が出来ます。

RGBと比べてパっと理解出来ないと思いますが、それが普通です。というかパッと分かる人間は居ないと思います。「こういうもんなんだな」という理解でOKです。

昔のアナログテレビは「Y(輝度)」のみを受信していたのでモノクロでした。カラーに移行する段階で「U」と「V」を付加したのが今のカラーテレビです。

ちなみに「輝度」と「明度」は違う意味です。

それぞれの定義は以下のようになります。

  • 明度:RGBのそれぞれの数値のうち、最大値と最小値の平均をとったもの
  • 輝度:赤x0.3 + 緑x0.6 + 青x0.1

これから分かる事は、「明度基準でモノクロ化した場合は、全ての色が同じ色っぽくなる(黒っぽくなる)」「輝度基準でモノクロ化した場合は、上記の計算式に従って色の濃さが決まる」(緑が一番濃く映る)という事です。

元画像 明度基準でモノクロ化 輝度基準でモノクロ化
20050804132649!MunsellColorCircle 明度からモノクロ 輝度

それぞれのカラー情報の表し方

RGB

「RGB」では、1ピクセル1ピクセルに、それぞれ色情報を管理します。

具体的に言うと、「RGB16」「RGB24」「RGB32」などが有ります。

これは1ピクセル当たりに割り当てる「ビット数」を示しています。例えば「RGB24」なら1ピクセル当たり24bit、「RGB32」なら32bitと言った感じです。

これの内訳としては、「RGB24」の場合、「赤8bit、緑8bit、青8bit、計24bit」となります。「RGB32」の場合「赤8bit、緑8bit、青8bit、αチャネル8bit(透明度情報)、計32bit」となります。(16bitは赤5bit、緑6bit、青5bitという不規則な割り当てです。今はほぼ使われないので無視してOKです)

YUV

「YUV」では、水平方向4ピクセル当たりにそれぞれ「Y」「U」「V」をどの程度割り当てるかを決めます。(ちょっと分かりづらいかも)

具体的に言うと、「YUV444」「YUV422」「YUV411」「YUV12」・・・etcなど、数えきれない程種類が有ります。

AviUtlで言うところの「YUY2」は「YUV422」に当たります。

YUV444
Y(輝度) U(輝度と青の差) V(輝度と赤の差)
Y Y Y Y
Y Y Y Y
U U U U
U U U U
V V V V
V V V V

YUV422(YUV422
Y(輝度) U(輝度と青の差) V(輝度と赤の差)
Y Y Y Y
Y Y Y Y
U U
U U
V V
V V

(U,Vについては横に2ピクセル分)

これだけ見てもパッと分からないと思うので図解します。

RGB32とYUV422の違い

例として、以下の様なグラーデーション効果を掛けた「四角形」を、

  • 「未圧縮」(RGB32)
  • 「YUY2」(YUV422)

の両方で動画として出力します。

yuv-egb例

▼出力した動画をスクリーンショットして、グラデーションの境界を拡大してみます。
yuy2-未圧縮比較
YUY2の方は水平方向に2ピクセル毎に色差(青・赤共に)を取っている為、2ピクセル毎に色が変化していっているようなイメージとなります。(拡大すれば良く分かります)

これがもし、「YUV411」だった場合、4ピクセル毎に色差(青・赤共に)を取る事になります。

人間の目というのは色差成分を多少間引いたとしても、遠目から見る分には殆ど劣化を感じる事が無い為、どちらの形式でも見分ける事は99%不可能です。

そういう人間の目の錯覚効果を利用してファイルサイズを少しでも小さくできるのが「YUV」ということです。

対して、「RGB」の方では、4ピクセル毎に色情報を管理している為、全ての色が連続して表示されます。

YUVに比べて色情報を完璧に表現出来るかわりにファイルサイズはYUVに比べて大きくなります。

デジカメ、スマフォのなどで撮影する写真・動画は全てYUVです。
実写動画などはYUVにしても違和感を感じる事は稀ですが、アニメ・CG動画で元々RGBのものをYUVに変換すると違和感を感じるかもしれません。

ちなみに写真の中でも.pngファイルはRGB形式なので、pngファイル素材を多用した動画の場合はRGBとして出力した方が全体的に画質がキレイになります。
(jpgはYUVなので、jpgを多用した場合はYU12の方が良い)

あとこれは完全に余談ですが、理論上、動画の横部分をクロッピング(トリミング)する際には、例えばYUV422の場合は、横に2ピクセルずつ、YUV411の場合は、横に4ピクセルずつ、と言った具合に切り取っていけばキレイに編集出来るという事になります。(まぁやる意味ないですけど・・)

(プチまとめ)

  • 3Dモデリング的な(MMDとかそういうの)輪郭がはっきりと表示されるような場合は「未圧縮」がオススメ
  • 普通の実写・アニメ動画などを使用している場合は「YUY2」がオススメ

容量的にはどうなるのか?

例として、以下の条件の動画を「YUY2」と「未圧縮」で出力した場合、サイズ的にどちらがどれだけ有利なのか比較してみます。

  • フレームレート:30fps
  • 長さ:3分
  • 解像度:1920×1080

「YUY2」は「YUV422」なので、1ピクセル当たりのビット数は16bit。RGBはアルファチャンネルは付いていない24bit。

▼アルファチャンネル付きで出力したい場合は「プラグイン出力」→「拡張編集AVI/BMP出力」→「RGBA(32bit)」を選択してAVI出力します
RGBA32bit

YUY2(YUV422)

1920×1080×16bit×30fps×180秒=20.86GB

未圧縮(RGB)

1920×1080×24bit×30fps×180秒=31.29GB

3分ぽっちの動画なのに10GBほど差が開く事が分かります。(※これは「映像」データ分だけなので「音声」データ分を加味するともうちょっとサイズは大きくなります)

これがYUY2を使用するメリットです。(実写写真・動画とかだとRGBとYUVの違いを見分ける事はほぼムリです。なのでYUVを使用した方が良いという事です)

結局どっちでエンコすればいいの?

「YUV→RGB」に変換した場合は画質の劣化は有りませんが、「RGB→YUV」に変換した場合は画質が劣化してしまいます。(RGBは小数点以下の値を保存出来ない為)

使用している素材がRGBならRGB、YUVならYUVという風な形でソースファイルに合わせておけば基本的に問題有りません。

デジカメやスマフォ、キャプチャ系の動画はほとんどYUVなので、YUVでエンコードしておけば基本的にOKでしょう。

もし動画の形式が分からなければMediaInfoなどの動画解析ソフトで調べると良いです。

スポンサーリンク