さて、今回は予告した通り「色空間」について簡単に解説していきたいと思います。
なぜ簡単にかというと、この分野はあまり突っ込みすぎるとドツボにはまりやすくなるので、詳しく知りたい方はまた別の解説サイトを参考にしてください。(私がそこまで詳しくないということも含まれます 笑)
基本的なところを書いていきます。
とりあえず動画、画像が見れれば大丈夫という方はこの分野はスルーで結構です。気にしてもそれほど大きな差はないからです。気合を入れて作業する場合は注意してみましょう。
色空間
世の中には様々な種類の「色」があります。おおよそ360 nm ~ 830 nm(Wikipediaより)の範囲にある電磁波をヒトは感じることができます。(詳しくは物理を勉強)
コンピューターは数値を用いてすべての計算、表現を行います。そのため、色も数値として扱う必要があります。
色空間【英:Color Space】とは、 色を数値の組み合わせによって表現するための方法のことを指します。
正確には「座標」を使って表します。座標を使えば、X軸、Y軸などの値で色を指定することができます。
▲有名な「CIExy色度図」
一般的な色空間の規格(基本・画像編)
コンピューターが扱う色空間には様々な規格があるため、それぞれ特徴をもっています。
RGB
加法混色を表現します。RGBとは色の「赤 (red)」「緑 (green)」「青 (blue) 」の頭文字です。
これは「光の三原色」ですので、各3つの色の数値を変化させていくことで様々な色を表現することができるようになります。それぞれの数値が増えると白に、減ると黒に近づきます。
コンピューターの分野では、3つの色それぞれに対して「0~255」の整数値が指定できます。よって、表現できる色の数は16,777,216通り(256の3乗)となります。「R:255 G:255 B:255」は白、「R:0 G:0 B:0」は黒になります。
人間が見ることができる色のほとんどを表現することができるため「フルカラー」です。
sRGB / Adobe RGB
sRGBはRGB色空間に関する規格のひとつです。国際標準化団体のIEC(国際電気標準会議)が1998年に制定しました。多くの機器(モニタ、デジカメ、プリンタなど)がこの規格を採用しているため、機器が異なっても同じ色を表現できるようになっています。
Adobe RGBは名前の通りアドビシステムズが1998年に制定した色空間です。sRGBに比べると普及率は低く標準化もされていませんが、sRGBと比べるとより広い範囲で色を表現できます(特に緑が広い)。Adobe RGBで入出力するには、対応したソフトや機器が必要になります。
▲sRGBとAdobe RGBの範囲の違い
一般的な色空間の規格(動画編)
動画に関する色空間には、RGB色空間の他にも特別なものがあります。
YCbCr(YUV系)
「人間の目は明るさの変化には敏感だが、色の変化には鈍感である」という研究結果がありますが、これを利用した色空間です。主要な動画コーデックのほとんどはこのYCbCr(YUV系)です。
輝度信号(Y)、輝度信号Yと青色成分Bの差(U:B-Y=Cb)、輝度信号Yと赤色成分Rの差(V:R-Y=Cr)の3つの情報で色を表す形式です。「明るさ(Y)」と「色(UV)」で構成されていると考えればよいでしょう。(輝度信号とは、輝度(画面の明るさ)を表す信号のこと)
人間の目は「色の変化には鈍感」で「明るさの変化に敏感」です。YCbCrとは、この明るさの変化(輝度信号)に多くの情報を与えることで、損失を少なくしながら効率よく伝送や圧縮できるフォーマットです。
このYCbCrにも細かく規格が分かれています。
YV12(YUV420)
2x2の4ピクセル(画素)の中に輝度情報と色情報を記録する方式です。RGBは1ピクセルごとに色情報を持っていますが、YV12は4ピクセルごとにしか色情報を保持できません。YCbCrが輝度情報を優先させた方式であるためです。MPEG-1やMPEG-2、MP4などのコーデックで利用でき、テレビ放送やDVD・BDなどの映像にも利用されています。
「RGB」と「YCbCr(YUV系)」どっちがいいの?
私は画像や動画を専門に扱っているわけではない、つまり基本程度しか知らないので、中々分かりやすいように書くということができません。よってここからは詳しく解説なさっている他のサイトのお力を借ります。
○色空間の話-動画と静止画の違い - ぼくんちのTV
http://3dcg.tvbok.com/2007/03/post_6.html
○色空間:RGBとYUVの違い - ぼくんちのTV別館
http://freesoft.tvbok.com/tips/encode_tips/rgbyuv.html
動画のエンコード(変換)を専門に扱っているサイトです。こんなブログより詳しい&分かりやすいのでエンコードを極めたい方は絶対に「ぼくんちのTV別館」さんのサイトを参考になさったほうがいいです。
RGBとYUVですが、一番の大きな違いは「明るさの表現」と「色情報を保持するためのピクセル数」です。
色情報の保持するためのピクセル数
RGBでは、1ピクセル毎に色情報を持つことができます。それに対してYUVでは2~4ピクセル毎と非常に大きい範囲で色情報を保持します。よってYUVでは映像がぼやけてしまい、大ざっぱな表現となってしまいます。(輝度情報は1ピクセル毎)
「ぼくんちのTV別館」さんでは以下のように結論付けています。
メジャーな動画コーデックは殆どがYV12、YUVと云った色空間を採用しているので、CGで動画を作る際は、輝度情報(白黒のコントラスト)に気をつけて動画を作成するか、RGBフォーマットをサポートしたコーデックを使用しましょう。
パソコンを使って動画やCGを制作する場合は、よりはっきりと表現できるRGBフォーマットで制作したほうがよいということですね。
「明るさの表現」
上の方でも書きましたが、「YUVは輝度情報により多くのデータを割り振っている」ので明るさに関する情報はRGBより断然上です。RGBとYUVは相互に変換することができるのですが、YUV→RGBと変換すると「YUVで扱うことができた一部の色情報がRGBでは扱えなくなる」ので「表現できる色の範囲が狭くなってしまう」のです。
これを理由に「ぼくんちのTV別館」さんでは以下のように結論付けています。
TVキャプチャしたり、家庭用カメラ素材・DVDビデオをバックアップしたりする時は、極力RGBフォーマットに変換しないようにしましょう。
つまり、元々YUVでフォーマットされている動画ならばそのまま取り込まなないと、色情報(特に明るさに関する色)が減ってしまい損であるということです。
まとめ
色空間についてはこれで終わります。色に関する情報は非常に奥深いので、追求してみたい方はどんどん検索して勉強してみるといいでしょう。
ただし、エンコードなどの目的が「動画がそれなりに見られれば問題ない。気にしない」というのであれば今回の色空間のお話は完全スルーでも問題ありません。差といってもそこまで大きな違いは生まれませんので。
気合いを入れて作業している方は色空間のことも考えて作業をすると良いものができるかと思います。
コメントを書く