このページでは、AviUtlにて「AVI出力(Ctrl+S)」で動画を出力する際の
- 「未圧縮」
- 「YUY2」
の違いについて紹介します。
無圧縮出力の使い道
動画は通常、エンコードすればするほど画質が劣化していきます。
しかし、「未圧縮」と「YUY2」は、どちらも「無圧縮」出力のため、画質は劣化はしません。
そのため、動画編集中に非常に重いエフェクトを入れたり場合などに、そのオブジェクト単体で無圧縮動画として出力して、再度オブジェクトの素材として使用するというのが無圧縮出力の使い道です。
色の表現方法
世の中には、色の表現方法がいろいろあります、
例えば、
- 「RGB」
- 「YUV」
- 「HSV」
- 「CMYK」
などがあります。
この内、
- 「未圧縮」=「RGB」の事
- 「YUY2」=「YUV」の事
を指します。
「RGB」と「YUV」の違い
ザックリ言うと、
- RGB:色を完璧に表現できる
- YUV:色を間引いて表現する(その代わりファイルサイズを小さくできる)
という感じです。
RGB
私たちが普段馴染みのある「RGB」は、
- 赤(red)
- 緑(green)
- 青(Blue)
という3原色を組み合わせて色を表現する方法です。
Windowsユーザーにはお馴染みの↓画像のようなカラーパレットで示す事ができます。(R、G、B)
YUV
YUVでは、
- 輝度(Y)
- 色差(輝度と青の差=U、輝度と赤の差=V)
で色を表現します。
「輝度?色差?なにそれ?」という感じだと思いますが、おそらく、実際に理論的に説明しても理解できないと思いますので図解します。
例えば、以下のような画像があるとします↓。
この画像↑を、YUVに分解すると、以下のようになります。
Y(輝度) | U(輝度と青の差) | V(輝度と赤の差) |
「なんでこの3枚を組み合わせると元画像になるの?」というのが正直な感想だと思いますが、これは直感では理解できないものなので、理論的に理解するしかありません。
「こういうもんなんだな」という理解でOKです。
カラーに移行する段階で「U」と「V」を付加したのが今のカラーテレビです。
ちなみに「輝度」と「明度」は違う意味です。
それぞれの定義は以下のようになります。
- 明度:RGBのそれぞれの数値のうち、最大値と最小値の平均をとったもの
- 輝度:赤x0.3 + 緑x0.6 + 青x0.1
これから分かる事は、
- 「明度基準でモノクロ化した場合は、全ての色が同じ色っぽくなる(黒っぽくなる)」
- 「輝度基準でモノクロ化した場合は、上記の計算式に従って色の濃さが決まる」(緑が一番濃く映る)
という事です。
▲元画像 | ▲明度基準でモノクロ化 | ▲輝度基準でモノクロ化 |
それぞれのカラー情報の表し方
RGB
「RGB」では、1ピクセル1ピクセルに、それぞれ色情報を管理します。
具体的に言うと、
- 「RGB16」
- 「RGB24」
- 「RGB32」
などがあります。
これは1ピクセル当たりに割り当てる「ビット数」を表しています。
例えば
- 「RGB16」なら・・・1ピクセル当たり16bit
- 内訳は「16bitは赤5bit、緑6bit、青5bit」という不規則な割り当てです。(今はほぼ使われないので無視してOKです)
- 「RGB24」なら・・・1ピクセル当たり24bit
- 内訳は「赤8bit、緑8bit、青8bitt」となります。
- 「RGB32」なら・・・1ピクセル当たり32bit
- 内訳は「赤8bit、緑8bit、青8bit、αチャネル8bit(透明度情報)」となります。
と言った感じです。
YUV
「YUV」では、水平方向4ピクセル当たりにそれぞれ「Y」「U」「V」をどの程度割り当てるかを決めます。
具体的に言うと、
- 「YUV444」
- 「YUV422」
- 「YUV411」
- 「YUV12」
- ・・・etc
など、数えきれない程種類があります。
AviUtlで言うところの「YUY2」は「YUV422」に当たります。
|
|
| ||||||||||||||||||||||||
▲Y(輝度) | ▲U(輝度と青の差) | ▲V(輝度と赤の差) |
|
|
| ||||||||||||||||||||||||
▲Y(輝度) | ▲U(輝度と青の差) | ▲V(輝度と赤の差) |
(U,Vについては横に2ピクセル分)
これだけ見てもパッと分からないと思うので図解します。
RGB32とYUV422の違い
例として、以下の様なグラーデーション効果を掛けた「四角形」を、
- 未圧縮(RGB32)
- YUY2(YUV422)
の両方で動画として出力します。
出力した動画をスクリーンショットして、グラデーションの境界を拡大してみます↓。
つまり、
- YUV=ファイルサイズを節約できる代わりに、正確な色を表現できない
- RGB=ファイルサイズは大きくなる代わりに、正確な色を表現できる
ということになります。
身近な例で言うと、デジカメ、スマホなどで撮影する写真・動画は全てYUVです。
ちなみに写真の中でも
- pngファイル・・・RGB形式
- jpgファイル・・・YUV形式
です。
なので、pngファイル素材を多用した動画の場合はRGBとして出力した方が全体的に画質がキレイになります。
あと余談ですが、理論上、動画の横部分をクロッピング(トリミング)する際には、例えばYUV422の場合は、横に2ピクセルずつ、YUV411の場合は、横に4ピクセルずつ、と言った具合に切り取っていけばキレイに編集できるという事になります。やる意味はほとんどないですが。
(プチまとめ)
- 3Dモデリング的な(MMDなど)輪郭がはっきりと表示されるような動画の場合は「未圧縮」がオススメ
- 普通の実写・アニメ動画などを使用している場合は「YUY2」がオススメ
容量的にはどうなるのか?
例として、以下の条件の動画を「YUY2」と「未圧縮」で出力した場合、サイズ的にどちらがどれだけ有利なのか比較してみます。
- フレームレート:30fps
- 長さ:3分
- 解像度:1920×1080
「YUY2」は「YUV422」なので、1ピクセル当たりのビット数は16bit。RGBはアルファチャンネルは付いていない24bit。
YUY2(YUV422)
→1920×1080×16bit×30fps×180秒=20.86GB
未圧縮(RGB)
→1920×1080×24bit×30fps×180秒=31.29GB
というわけで、
3分ぽっちの動画なのに、RGBの方が10GBほどファイルサイズが大きくなる事が分かります。(さらにこれは「映像」データ分だけなので「音声」データ分を考慮するともう少しサイズは大きくなります)
これがYUY2を使用するメリットです。(実写だとRGBとYUVの違いを見分ける事はほぼムリです。なのでYUVを使用した方が良いという事です)
参考:【AviUtl】透明度付動画(RGBA)を出力・読み込みする方法【アルファチャンネル】
結局どっちでエンコすればいい?
「YUV→RGB」に変換した場合は画質の劣化はありませんが、「RGB→YUV」に変換した場合は画質が劣化してしまいます。(RGBは小数点以下の値を保存できないため)
なので、
- 使用している素材がRGBなら・・・RGBとして出力
- 使用している素材がYUVなら・・・YUVとして出力
という風な形でソースファイルに合わせておけば基本的に問題ありません。
デジカメやスマホ、キャプチャ系の動画はほとんどYUVなので、YUVでエンコードしておけば基本的にOKでしょう。
もし動画の形式が分からなければMediaInfoなどの動画解析ソフトで調べると良いです。
このページの情報は以上です。
コメント