RGB、YUV ってなんぞ?
さてさて。
前回の記事では、可逆圧縮・不可逆圧縮・コーデックなどについて書きました。
んで、最終的なキャプチャ環境として
- Xbox360 HDMI端子から出力(720p)
- Intensity Pro HDMI端子に入力
- くすのき TVHD を使い Ut Video Codec で圧縮しながら録画
という方法に落ち着きました。
ここで疑問に思ったのが「Ut Video Codec」の選択肢が
- RGB
- RGBA
- YUV422
- YUV420
の4種類あること。
え、どれが一番いいの…?
ってか、なにが違うの…?
というわけで、自分なりにいろいろ調べてみました。
RGBとは、YUVとは
まずは基本的なことをざっくりと。
RGBとは、Red・Green・Blueの頭文字から来ていて、光の三原色による色の表現方法です。
YUVとは、輝度(Y)と、輝度との色差(輝度と青の差:U、輝度と赤の差:V)による色の表現方法です。
他にも色の表現方法にはいろいろあって、CMYK(シアン・マゼンタ・イエロー・ブラック)なんかは、プリンターのインクでよく使われてますね。
なんで統一してないんだよ!分かりにくい!と感じますが、それぞれ適材適所があるみたいです。
一般的なのはRGBでしょう。
分かりやすいし。
YUVは、テレビが白黒からカラーになるとき、どっちのテレビでもちゃんと映せるように色ではなく輝度と差で表現したそうで、今でもテレビで使われていますし、RGBのように個別の3つの値ではなく差を使うことで圧縮率を高くすることができ、DVDや家庭用ビデオカメラなどでも使われています。
正確にはYCbCrとかYPbPrと言うそうです。
CMYKは、印刷時に黒をより美しくするのと、CMY全部混ぜて黒を表現するより、黒そのものを別で用意することでランニングコストを安く抑えるために使われるようです。
なぜコーデックに複数の選択肢が?
では、Ut Video Codecに戻って
- RGB
- RGBA
- YUV422
- YUV420
の4種類。
RGBは上で説明したとおり、ベーシックな光の三原色です。
RGBAの「A」は「アルファチャンネル」のことで、いわゆる透明度ですね。
具体的にアイマスで説明すると、キャラを切り抜くためにブルーバックでPVを撮ったとします。
ここではまだ、キャラ自身の色と青い背景で構成されているので、RGBという3つの色で表現できています。
んで、これを編集ソフトなどで背景の青色の部分を抜いたとします。
このままRGB形式で保存しちゃうと、透明になった部分は、その下の背景の色の状態(下に何もなければ黒)なので、黒背景の中にキャラがいるだけになってしまいます。
人に渡しても、背景が青から黒になっただけで、あんまり意味がありません。
でも、RGBA形式で保存すれば、透明な部分は「透明」という情報で保存されるので、人に渡しても背景が透明なものとして扱えるのです。
あ、開くソフトがアルファチャンネルを読み込めるものでないとダメですがw
箱○からキャプチャする際には、全く必要のないものでしょうが、例えば「nukIM@S-2」というツールで抜いたものとか、MMDから背景を抜いた状態でキャラだけを書き出したいときなど、別のソフト間を透明度の情報を持ったまま使いたいときに必要になります。
YUV422、YUV420も、基本的には上で説明したとおりです。
422とか420は、圧縮方法というか省略方法?みたいなもので、422の方が画質が良くてサイズが大きい、420の方が画質が悪くてサイズが小さくなります。
画質が悪くなるといっても、誤差の範囲内だと思いますがw
R(略)Pがブログに比較画像を上げられていたので、そちらを参考にどうぞ。
確かに、ちょっとした違いはありますが、どうせ最後に色調補正したり、MP4にする段階でかなり劣化するんで、そこまで気にする必要はないかもしれませんね。
その辺は後述。
他にも関係してくるRGB・YUV
色について、もうちょっと補足。
上でもちょろっと説明したように、テレビやビデオカメラやDVDの映像は、YUV形式です。
Xbox360からHDMIで出力される映像は、RGB形式です。
確か。
私が使っているキャプチャボードIntensity Proは、HDMIからの入力をYUV形式で表示する仕様になっています。
動画編集ソフトであるPremiere Proは、ビデオカメラの映像を編集するのが主な用途なので、YUV形式に強いです。
プレビューがYUV形式だったはず。
でも、無圧縮で書き出せばRGBなのかな?
AfterEffectsは、RGBかRGBAでしか書き出せなかったはず。
ニコニコ動画で主に再生されているMP4は、YUV形式です。
と、つらつら挙げていきましたが、何が言いたいかというと、実は知らない間に RGB <–> YUV 間の変換が頻繁に行われているってことなのです。
何の問題ですか?
RGBとYUVってのは、同じ色を表現してるけど違う表現方法なワケで、変換式はあるものの完全に互換性が取れているわけではありません。
ものすっっごーく簡単に説明すると
□がRGB形式、○がYUVだと思って欲しい。
心の目で。
つまり、他形式への変換を繰り返していくと、徐々に劣化しちゃうってコト!
それぞれ得意分野がちょっとずつ違っているのです。
我が家のキャプチャ環境だと、少なくとも
Xbox360(RGB)
↓
Intensity Pro(YUV)
↓
AfterEffects(RGB)
↓
ニコニコ動画・MP4(YUV)
こんな感じで変換が繰り返されます。
まぁでも、色調補正したり(ry MP4にするとかなり劣化(ry
で、結局どうするの…><
なんだかんだと書いてきましたが、最終的に私がうpする場所はニコニコ動画です。
プレミアム会員だとアップロードする動画のビットレート制限がなくなったので(容量制限はある)かなり高画質なものが上げられますが、あまりに解像度やビットレートを上げてしまうと再生にパソコンのスペックを要求してしまうので、私としては、以前にもブログに書いたように(あなたはどこまで画質を上げる?)高くても映像900~950kbpsくらいに抑えていきます。
たぶん、今後も。
つまり、どんなにキャプチャや編集時の画質にこだわっても、最終的にMP4化した段階でものすごーく劣化しちゃうんだから、ハードディスクに優しい容量の少ない圧縮形式にそればいいじゃん!
と、言うわけで。
結論:「Ut Video Codec YUV420」でキャプチャ
あー長かったw
自分なりに調べてみましたが、間違っている部分があれば教えていただけるとありがたいです。
かなり説明をはしょっているんで、正確にはいろいろと違う部分も多いんですが、その点はご了承下さい。
やっぱ、自分の興味がある分野だと、いろいろ調べようって気になりますね!w
ディスカッション
コメント一覧
丁寧な説明で涙出ました;; ありがとうございます!
自分は全部ためしてみて、映像の荒さと容量を見て直感でYUV420に落ち着きましたが、こうやって深く考えてなかったので反省です…
軽い気持ちで調べるつもりが、かなり大事になっちゃった気がしますw
突然ですが、初めまして。
素人の私でもイメージがしっかり掴み取ることのできる素晴らしい解説でした!ありがとうございます
ヾ(*´∀`*)ノ
私は、1年前よりMMDを使った動画を作成しているものです。今までずっと無圧縮動画をソース出力してからつんでれんこに放り込む手順を踏んでおりましたが、いい加減あの超巨大な動画ファイルを扱う(特にHDD残量を意識してないと大変なことに)のには抵抗を感じていたので、先日UI codecを導入しました。
YUVの存在は知っていてもその詳細を理解してかったので本当に助かりました(^^ゞ
はじめまして、コメントありがとうございます!
基本自分用の記事でしたけど、誰かの役に立っているのは嬉しいですね(*´ω`*)
素敵すぐる