しいしせねっとわーく
[技術資料室] [ネットワーク編] [フォーマット辞典] [Java編] [Linuxメモ] [ハード部屋]
[映像編] [JPEG] [CRTの端子] [HDMI] [DV] [QRコード]

フォーマット辞典 色規格 色色々編

Last update  12/16/2019 00:00:37

デジタルで扱われる色には、いろいろな系統があります。

PCではRGBが主なものですが、テレビなどでは別の色が使われます。JPEGやMPEGなどもまた別です。

というわけで、それぞれの形式の変換というのを見てみようかなと思ってみたりするところです。

RGB

赤、緑、青の光の三原色を数値化したものです。CRTなどの表示機器がこんなタイプなので、RGBがよく使われます。

古いPCでは、1ドットで8色しか使えなかったりしましたね。0:黒 1:青 2:赤 4:緑 と、これを足しあわせて 3:紫 5:水色 6:黄 7:白、こんな感じです。

最近では、階調が増えて各色256段階(8ビット)で16,777,216色表現できるのが当然のようになっています。特殊なものでは12bitや 16bit階調まで可能なものがあるようです。これらは部分的な明るさを変えながら使えるようにしたものなのでしょう。デジタルカメラも、内部では 16bit程度なのかもしれません。

PC/AT互換機、と呼ばれるものになってからは、RGBの並び順が変わったりしたかもしれません。それまでは8ビットの色を拡張した青赤緑の順でしたが、最近のものはRGBの順で赤緑青なのでしょうか。

互換性

いちばん明るい部分、いちばん暗い部分、などの基準は、ばらばらでした。が、いくつか規格も登場してきています。

色規格

DVI-DはRGBだが、HDMIはYUV対応だという・・・。ビデオ系の映像がYCbCr/YPbPrを使うとか。

基本的にはYCbCr系とRGB系のふたつですが、色がどのくらい幅広く表現できるか、また各種デバイス(機器)で同じ色を表現できるかということでいくつか規格っぽいものがあります。

色温度

6500kとか9300kとか5000kとかありますね。明るさの単位みたいなもの? 日本のテレビは9300k。他はだいたい6500kらしいです。映画を見るときは6500kがいいのか?

sRGB (IEC 61966-2-1 1999年)

赤っぽいあれ? CRT時代の規格のひとつ、液晶でも対応製品はあります。xvYCC内ではYが16~235、Cb,Crが16~240(-0.5 ~ +0.5)の範囲内の色。BT.709と比べるとオーバーホワイトがない。

AdobeRGB

これも古くからあります。最近では液晶でこれに対応できるものがいくつか? それまでは液晶は色があんまり出なかったということかな。sRGBより広い色空間らしい。

sYCC

YCbCr系の色規格。sRGBより広い色が扱える。が8bitカラーなので荒くなることも? sYCCはYCbCr系のRGBより広い色空間で、sRGBからITU-R BT.601とかいうのを使ってsYCCに変換できるらしいです。デジタルカメラのExif2.2などで使えるようです。

ITU-R BT.601-5

アナログとデジタルの色変換を規定したものでしょうか。ま、よくわかりませんがこんな感じらしいです。sRGBとsYCCの変換に使えるのかな。SD映像用らしいです。

アナログからの変換を想定したものなので、デジタルな場合は別途基準があるかもしれない。

Y ( 16 - 235 ) 1~254なら許容範囲?
Cb,Cr ( 16 - 240 )

RGB デジタルで 16~235 を想定。表示する場合は拡張した方がいいかも。

RGB アナログ色 (0~1) → YCrCb アナログ色(0~1)

Y                    =   0.29900 * R + 0.58700 * G + 0.11400 * B
Cb = 0.564 * (B - Y) = - 0.16874 * R - 0.33126 * G + 0.50000 * B
Cr = 0.713 * (R - Y) =   0.50000 * R - 0.41869 * G - 0.08131 * B

アナログの場合の変換式なので、デジタルの場合はこの限りではないかもしれず。↓参照

[JPEG] のはアナログの例を無理やりデジタルにしてるな・・・間違えたか( _ _)

アナログrgb(0~1) → デジタルRGB(16~235)

R = 219 * r + 16

G = 219 * g + 16

B = 219 * b + 16

アナログからデジタルへの変換例のようなので、この変換ではYCCからRGBにしたとき、0~255ではなく16~235になってしまいます。もともとデジタルなものは、あまり考えない方がいいかもしれません。

デジタルRGB(16~235) → デジタルYCbCr(16~235/16-240)

Y =  (77 * R / 256) + (150 * G / 256) + (29 * B / 256)
CB = - (44 * R / 256) - (87 * G / 256) + (131 * B / 256) + 128
CR =   (131 * R / 256) - (110 * G / 256) - (22 * B /256) + 128

255ではなく256 なんでしょうか?

ITU-R BT.709 (1990年)

HDTV用の規格。YCbCrではなくYPbPrになるらしい。sRGBと同じ色域?

アナログ用変換式?

Y                   =  0.2126 * R + 0.7152 * G + 0.0722 * B
PB = 0.5389 * (B-Y) = -0.1146 * R - 0.3854 * G + 0.5000 * B 
PR = 0.6350 * (R-Y) =  0.5000 * R - 0.4542 * G - 0.0458 * B

ビデオの圧縮に使われる色の間引き方の名称

RGBのままで動画を作るのもありですが、効率よく圧縮するためには輝度と色情報に分けるのがいいので↑や↓のようになります。その精度でもいろいろあって名前がついてたりします。

YUV422だとかYUV411だとかYUV420? なにそれ? と、圧縮する場合にはいろいろあるんですが、輝度以外の情報を縦半分や横半分等々にします。

x.v.YCC色空間 ( IEC61966-2-4 通称 x.v.Color )

主に動画向けの色規格。BT.709の拡張。sRGBを転がしてYCbCrに収まるようにYCbCr空間を拡張したもの? 主にソニーのビデオカメラ、ソニー、三菱電機 の液晶などが対応はじめてますね。カメラ向けの色規格(sYCC)で使われていない部分を拡張して、ディスプレイ側でも合わせたものです。sYCCの使わ れてないところ(sRGBに変換できない部分の多く)にもデータを詰め込むとx.v.YCCになるのかもしれません。MPEG系でもH.264でも使える ように規格化されていますが、使われるのは主に家庭用ビデオカメラで撮影された映像のみです。

x.v.Color用モードなんかは別にあるわけではなく、普通のテレビ表示の拡張として実現できます。→http://tb.itmedia.co.jp/tbs/anchordesk/articles/0711/19/news014.htmlで書かれているような判定フラグなんてありません。録画機の対応有無は、主にカメラとの接続ができるかできないか、映像変換の時に対応している(変な丸め込み、色域圧縮処理をしていない)か、ぐらいでしょうか。PLAYSTATION 3なんかだと、動画をただ再生できれば対応している、ということにもなりますし、HDMIのRGBモードだとx.v.Colorと似たような色域まで表現できる気がします。表示側の性能次第ですが。

xvYCC色空間の(技術的)内容

xvYCC色空間の技術概略 (JEITAかどこかでの発表資料から)

BT.709上位互換のxvYCC709とBT.601上位互換のxvYCC601がある。

Yが16~235、Cb, Crが1~254。Cb',Cr'が-0.57~+0.56 かな?

NTSCなどなどはちょっと違うかもしれないけど、もともとBT.709-5のような色規格がある。それより広い色を表現するもの。基準は曖昧? マンセルカラー・カスケードと呼ばれる色見本769色の内、従来は55%だったものがx.v.YCCでは100%に対応している。

PLAYSTATION 3では放送用のYCbCrの色域を越える色が出せる設定などがRGB/YCbCrの両方にあります。スーパーホワイトってx.v.Colorのこと?

対応機

参考

Deep Color

普通はRGB各8bit、YCbCrでも各8bitで表現されるようですが、各色階層が8bitより深い、10bit、12bit、16bit、3色あわせて30bit、36bit、48bitなどなどのいろいろに対応したもの。転送速度の速いHDMI 1.3に対応していないと無理なところもある。

どう言っているのか

VIERAのPZ800は最大18bit処理、Victor/JVCのEXEはDeep Color 36bit対応、と言っています。どちらが凄いでしょう?

PZ800の18bit というのは1色での色の階調のことなので、RGBの3色では54bitということになります。EXEの36bitはRGBに分けると12bitです。 HDMIでは16bit/48bitまでしか対応していませんが、x.v.Colorなどで圧縮された映像を復元する場合に18bitで演算、表示したり しなかったりします。HDMIでの入力は16bitまでしか対応していないので、演算の中でRGBとの変換などで細かな誤差がないよう18bitまで取っ てあるのでしょう。

どちらの基準で言っているのか、見分けられるようにしておきましょう。8~23ビットで言う場合は大抵RGB各色に分けた場合。24~48bit、それ以上の場合はRGBまとめた色のbit数のことを言っています。

sRGBの色空間を広げたもの

sRGBを0~1だとすると、マイナスから2とか3の明るさなどまで広げたものがあるようですよ。sYCCも収まるか?

YCC系の色を使っていると、RGBの光源では8bitで足りないことがなんとなくわかってきますかね。

HD以降の色

テレビもデジタル化して以降、色が増えているので簡単に分類から

x.v.ColorやDeepColorは一旦忘れるのがいいのかな。

色の規格はITU-R BT.709からITU-R BT.2020、BT.2100へと進化しています。どれがどう関連しているのかわかりにくいのでいろいろとまとめてみたい。

従来の色はSDRと呼ばれ、明るさや階調を増やしたHDRという括りが出てきました。

Logとカラーグレーディングって何、というのも混ぜてみようかと。

で、色規格 (放送規格)

xvYCC(x.v.Color)はSDRなのかHDRなのかまだ不明。BT.709時代のHDRっぽいもの。

4K放送はBT.2020にPQやHLGをのせたHDRらしいです。実質BT.2100。階調はSDRでも10bitが標準っぽいので8bit時代もそろそろ終わりそうです。

BT.2100はBT.2020にPQとHLGを標準として取り込んだもの。BT.2020は4K,8K用だったが、BT.2100はHD(1920x1080)も含む。色としてはPQとHLGが標準かオプションかの違いでほぼ同じ。

HDR10はテレビ、ディスプレイが対応している規格のような規格ではないなにか。HDR10+はPanasonicなどが規格としてまとめたHDR10の拡張で動的に明るさのピークが変更できるらしい。DisplayHDRはHDR10対応と明るさ、色域などについて定めたVESAによるディスプレイの規格。

今の主流は撮影時にはHLGなどで記録され、パッケージ化でPQ方式にまとめられ、HDR10対応のディスプレイで見る、感じなのかどうか。

明るさを基準にすると、BT.601は100nit程度、PQが1000から10000nit程度を想定していて、市販されているテレビはHDR対応でも300から400nitくらい。DisplayHDRだと1000nit,1400nitくらいまである。

PCではどうなのか?

PCでは、RGBで色を表示しますが、ほとんどの場合基準なんてありません。ビデオ再生などではどの色をどこにあわせていけばいいのでしょうか。

DisplayHDR

ディスプレイにもようやく、VESAがDisplayHDRという規格を出してきました。

さてどうしたものでしょうね。

[しいしせねっと] [技術資料室][フォーマット編] [お問い合わせ]