YUV
YUVやYCbCrやYPbPrとは、輝度信号Yと、2つの色差信号を使って表現される色空間。
目次
概要
ソニーのベータカムVTRで使用されて以来、高画質アナログ映像信号の伝送や、デジタルビデオの記録方式として使用されている。
U, Cb, Pb はB信号(青)から輝度Yを差し引いた(B - Y)に特定の定数を掛けた値であり、同じくV, Cr, Pr はR信号(赤)から輝度Yを差し引いた(R - Y)に特定の定数を掛けた値である。
Adobe社のPhotoshopではこれと似た形式をL*a*b* (Luminescence alpha beta) カラーとして扱っている。
YUVおよびYCbCrの表記
YCbCrをYUVと表記される例を見かけるが、YUVはPAL信号やSECAM信号を得るためのコンポーネント信号であり、YCbCr や YPbPr とは似ていながらも異なるため、DVDやHD映像の記録に使われるデータ表記として、YUVを用いるのは誤りである。ただし、U, Vの値域を-0.5〜0.5に変換するとCb, Crになる。
YCbCrとYPbPrの使い分け
YCbCr と YPbPr の使い分けについて、
- アナログ信号にCb, Crを用い、デジタル化された数値にはPb, Prを使う。
- アナログ、デジタルを問わず、SD映像用の色差コンポーネント成分にはCb, Crを、HD映像用の色差コンポーネント成分にはPb, Prを使う。
の2説があり、明確には統一されていない。 規格によっても用法が異なりARIB(日本)ではPb,Prを、SMPTE(米国)ではアナログにPb, Pr、デジタルにCb, Crを使用している[1]。デジタル伝送のHDMIではCb,Crを使用している。 一般的なビデオ機器には後者が採用されているようである。GBR成分からのカラーマトリックスがSD用とHD用で異なることを考慮すると、後者の使い方が望ましいと考えられる。
ケーブル
YCbCr信号の伝送には、業務用ビデオ機器のアナログ伝送の場合は、BNC端子(ケーブル)で接続された3本の信号線を用いる。デジタル伝送ではBNC端子で接続される1本のケーブルを用いるSDIか、パラレルインターフェースを用いる。 家庭用ビデオ機器では、アナログ信号の場合、RCA端子(ケーブル)で接続された3本の信号線を用いるか、ケーブルをまとめたD端子ケーブルを用いる。デジタル伝送では、IEEE-1394やHDMIを用いる。 なお、コンポジット端子やS端子から伝送されるNTSC信号は、輝度,色相,彩度の成分を持っており、色差コンポーネント信号とは根本的に異なる。
色差成分を間引く方法
YCbCrで帯域を減らす際に、色差成分を間引く方法も併せて使用される。人間の目は色の変化よりも明るさの変化に敏感なので、色差成分を減らしても不自然だと感じにくいためである。ビデオフォーマットとして採用されているものには、以下の種類がある。
- 4:4:4
- Y,Cb(Pb),Cr(Pr)の各成分を水平画素に関して各成分4:4:4の割合で記録する。つまり以下で説明する4:2:2や4:1:1等と違い、信号を間引かず全て記録するので最も高画質のフォーマットである。
- 4:2:2
- 一般的な業務用ビデオに採用されている方式で、Y,Cb(Pb),Cr(Pr)の各成分を、水平に4:2:2の画素割合で記録する。すなわち、水平に並んだ画素に1,2,3,4,5,6,7、…の番号を振った場合、Y信号は1,2,3,4,5,6,7…の各画素について情報を記録するが、Cb(Pb)とCr(Pr)については1,3,5,7、…の画素のみの情報を記録し、再生時には画素1の色差情報を画素1,2に適用し、画素3の色差情報を画素3,4に適用し・・・という具合に補完する。ソニーのデジタルベータカム、ベータカムSX、HDCAM、HDCAM-SR(YPbPr記録)、PanasonicのD-5、DVCPRO50、HD-D5(YPbPr記録)、AVC-Intra(100Mbps記録)で採用されている。
- 4:1:1
- 525/60圏で使用する家庭用DVフォーマットと業務用DVCAM、DVCPRO(25Mbps記録)フォーマットに採用されている方式で、Y,Cb(Pb),Cr(Pr)の各成分を水平に4:1:1の画素割合(輝度4画素に対して色差1画素)で記録する。
- 4:2:0
- DVDを始めとする一般的なMPEG圧縮フォーマット(デジタル放送、D-VHS、BD)やHDV、AVCHDなどの家庭用カメラフォーマットで使用するほか、ソニーのXDCAM-HD、XDCAM-EX、AVC-Intra(50Mbps記録)、625/50圏のDV、DVCAMフォーマットなど、業務用のビデオフォーマットでも使用されている。4:2:2方式と同様に、色差信号を輝度信号の2画素ごとに記録する方式であるが、1フレーム目の奇数番目の走査線ではCb(Pb)信号のみを記録して、偶数番目の走査線ではCr(Pr)信号のみを記録、2フレーム目の奇数番目の走査線では逆にCr(Pr)信号のみを記録して、偶数番目の走査線ではCb(Pb)信号のみを記録し、以下のフレームではこれを繰り返すという具合に、Cb(Pb)とCr(Pr)信号を走査線ごとに間引いて記録する。再生時、記録されていない色差信号のデータは、1本上の走査線のデータで補完する。情報量は4:1:1方式と同じになるものの、色信号の水平解像度と垂直解像度のバランスがよく、家庭用デジタルビデオの主流方式となっている。
動画フォーマット
尚、同様の概念がPCやネットで使用する動画フォーマットにも見られる。
- YUV444 (YUV)
- 水平4ピクセルにつき、輝度成分と2つの色差成分を各4ピクセルずつサンプルする方式。各成分を8bitで量子化すると、1ピクセルあたりの情報量は24bitとなる。
- YUV12
- 各ピクセルを表現するのに必要なビット数が12ビットのYUV。YUV420とYUV411の総称。
- YUV422
- 水平2ピクセルから色差信号を1ピクセル分だけとる形式。輝度信号は1ピクセルごとにとる。1ピクセルは16bitの情報量となる。主に業務用ビデオのフォーマットとして採用されている。
- YUV420
- 水平・垂直2×2ピクセルのうち、Cb信号を上2ピクセルから1ピクセル取り、Cr信号を下2ピクセルから1ピクセル取る方式。フレームごとにCbとCrの位置を反転させる。輝度信号は1ピクセルごとにとる。原理的に幅・高さは2の倍数でないといけない。デジタル放送ではこれが採用されている。
- YUV420のうち、ピクセル単位ではなく、フレーム単位でY→U→Vの順番に並べたものをI420 や IYUV、Y→V→Uの順番に並べたものをYV12と呼ぶ。このどちらかが、動画圧縮ではよく使われている。
- YUV411
- 水平4ピクセルのうち、Cb,Cr信号を各色1ピクセルずつ取る形式。輝度信号は1ピクセルごとにとる。
- YUV9
- 4×4ピクセルで1つの色差信号しかとらない方式。輝度信号は1ピクセルごとにとる。1ピクセルは9ビット。
RGBからの変換
以下、R, G, B, Y の値域は 0〜1。Cb, Cr の値域は -0.5〜0.5。U = 0.872 × Cb, V = 1.23 × Cr。
RGBからの変換式は
- YUV (PAL, SECAM)
- Y = 0.299 × R + 0.587 × G + 0.114 × B
- U = -0.14713 × R - 0.28886 × G + 0.436 × B
- V = 0.615 × R - 0.51499 × G - 0.10001 × B
- ITU-R BT.601 / ITU-R BT.709 (1250/50/2:1)
- Y = 0.299 × R + 0.587 × G + 0.114 × B
- Cb = -0.168736 × R - 0.331264 × G + 0.5 × B
- Cr = 0.5 × R - 0.418688 × G - 0.081312 × B
- ITU-R BT.709 (1125/60/2:1)
- Y = 0.2126 × R + 0.7152 × G + 0.0722 × B
- Cb = -0.114572 × R - 0.385428 × G + 0.5 × B
- Cr = 0.5 × R - 0.454153 × G - 0.045847 × B
逆にRGBに変換するときは
- YUV (PAL, SECAM)
- R = Y + 1.13983 × V
- G = Y - 0.39465 × U - 0.58060 × V
- B = Y + 2.03211 × U
- ITU-R BT.601 / ITU-R BT.709 (1250/50/2:1)
- R = Y + 1.402 × Cr
- G = Y - 0.344136 × Cb - 0.714136 × Cr
- B = Y + 1.772 × Cb
- ITU-R BT.709 (1125/60/2:1)
- R = Y + 1.5748 × Cr
- G = Y - 0.187324 × Cb - 0.468124 × Cr
- B = Y + 1.8556 × Cb
MPEG の場合
MPEG 用の整数演算は以下の方法で行う。RGBの値域は0〜255の8ビット。YCbCr に基づいているが、8ビット整数に変換する際、Y の値域として 16〜235、U や V の値域としては 16〜239 を使用する。Y の値域の中心は128になっていない。また、値域として0〜255を使ってないことから証明できるように、RGB → YUV → RGBの変換を行うと、元の色に戻らない場合がある。
1. 基本的な変形
- <math>\begin{bmatrix}Y' \\ U \\ V \end{bmatrix} =
\begin{bmatrix}
66 & 129 & 25 \\ -38 & -74 & 112 \\ 112 & -94 & -18
\end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} </math>
2. 8ビットへ丸め処理を行う(四捨五入)
- <math>
\begin{array}{rcl} Y' &=& (Y' + 128) \gg 8\\ U &=& (U + 128) \gg 8\\ V &=& (V + 128) \gg 8 \end{array} </math>
3. 値域をずらす
- <math>
\begin{array}{rcl} Y' &=& Y' + 16\\ U &=& U + 128\\ V &=& V + 128 \end{array} </math>
コンピュータでは YUV と RGB の相互変換は、かつては整数演算で行われることが多かったが、現在は SIMD を使い内積計算するのが一般的。