YUV ビデオについて

デジタル ビデオは、多くの場合、 YUV 形式でエンコードされます。 この記事では、YUV ビデオ処理の数学に深く入らずに、YUV ビデオの一般的な概念といくつかの用語について説明します。

コンピュータグラフィックスを使ったことがあるなら、おそらくRGBカラーに精通しているでしょう。 RGB カラーは、赤、緑、青の 3 つの値を使用してエンコードされます。 これらの値は、可視スペクトルの一部に直接対応します。 3 つの RGB 値は、 色空間と呼ばれる数学的座標系を形成します。 次の図に示すように、赤のコンポーネントはこの座標系の 1 つの軸を定義し、青は 2 番目を定義し、緑は 3 番目の軸を定義します。 有効な RGB カラーは、この色空間内のどこかに配置されます。 たとえば、純粋マゼンタは青 100%、赤 100%、緑 0% です。

diagram showing rgb color space

RGB は色を表す一般的な方法ですが、他の座標系も可能です。 YUVという用語は色空間のファミリーを指し、いずれも色情報とは別に明るさ情報をエンコードします。 RGB と同様に、YUV は 3 つの値を使用して任意の色を表します。 これらの値は Y、U、V と呼びます (実際には、"YUV" という用語の使用は技術的に不正確です。コンピューター ビデオでは、YUV という用語は、ほとんどの場合、後で説明する Y'CbCr という名前の特定の色空間を指します。ただし、YUV は、Y'CbCr と同じ原則に沿って動作する色空間の一般的な用語としてよく使用されます。

とも呼ばれる Y' コンポーネントは、色の明るさの値を表します。 素数記号 (') は、ルマと密接に関連する値、Y と指定される 輝度を区別するために使用されます。輝度は 線形 RGB 値から派生し、luma は 非線形 (ガンマ補正) RGB 値から派生します。 輝度は真の明るさのより近い尺度ですが、ルマは技術的な理由からより実用的に使用できます。 素数記号は頻繁に省略されますが、YUV 色空間では常に輝度ではなく luma が使用されます。

Luma は、赤、緑、青のコンポーネントの加重平均を取ることによって RGB 色から派生します。 標準定義テレビでは、次の式が使用されます。

Y' = 0.299R + 0.587G + 0.114B

この数式は、人間の目が他の波長よりも光の特定の波長に敏感であるという事実を反映しています。これは、色の知覚された明るさに影響します。 青い光が最も淡色表示され、緑が最も明るく表示され、赤はその中間のどこかに表示されます。 この式はまた、初期のテレビで使用される蛍光体の物理的特性を反映しています。 最新のテレビ技術を考慮した新しい数式は、高精細テレビに使用されます。

Y' = 0.2125R + 0.7154G + 0.0721B

標準定義テレビのルーマ方程式は、ITU-R BT.601 という名前の仕様で定義されています。 高解像度テレビの場合、関連する仕様は ITU-R BT.709 です。

の値または色差の値とも呼ばれる、You コンポーネントと V コンポーネントは、元の RGB 色の赤と青のコンポーネントから Y 値を減算することによって派生します。

U = B - Y'

V = R - Y'

これらの値には、元の RGB 値を回復するのに十分な情報が含まれています。

YUV の利点

アナログテレビは、歴史的な理由でYUVを部分的に使用しています。 アナログカラーテレビ信号は、白黒テレビと下位互換性を持つよう設計されています。 カラーテレビ信号は、ルマ信号に重ね合わせた彩度情報(あなたとV)を運びます。 白黒テレビは、彩度を無視し、結合された信号をグレースケール画像として表示します。 (シグナルは、彩度がルマ信号に著しく干渉しないように設計されています。カラーテレビは、彩度を抽出し、RGBに信号を変換することができます。

YUV には、現在より関連性の高いもう 1 つの利点があります。 人間の目は、明るさの変化よりも色相の変化に対する感受性が低い。 その結果、画像の認識品質を損なうことなく、画像の彩度情報がルマ情報よりも少なくなります。 例えば、ルマ試料の水平分解能の半分で彩度値をサンプリングするのが一般的である。 つまり、ピクセル行の 2 つの luma サンプルごとに、1 つの U サンプルと 1 つの V サンプルがあります。 各値のエンコードに 8 ビットを使用すると仮定すると、2 つのピクセル (2 つの Y'、1 つの U、1 つの V) ごとに合計 4 バイトが必要です。1 ピクセルあたり平均 16 ビット、または同等の 24 ビット RGB エンコードより 30% 少なくなります。

YUVは本質的にRGBよりもコンパクトではありません。 彩度がダウンサンプリングされない限り、YUV ピクセルは RGB ピクセルと同じサイズになります。 また、RGB から YUV への変換は失われません。 ダウンサンプリングがない場合、YUV ピクセルを RGB に変換し、情報を失う必要はありません。 ダウンサンプリングでは YUV イメージが小さくなり、色情報の一部も失われます。 しかし、正しく実行された場合、損失は知覚的に重要ではありません。

コンピューター ビデオの YUV

YUV の前に示した数式は、デジタル ビデオで使用される正確な変換ではありません。 デジタル ビデオでは、一般的に Y'CbCr と呼ばれる YUV の形式が使用されます。 基本的に、Y'CbCr は YUV コンポーネントを次の範囲にスケーリングすることによって機能します。

コンポーネント 範囲
Y' 16–235
Cb/Cr 16 から 240、128 がゼロを表す

 

これらの範囲は、Y'CbCr コンポーネントに対して 8 ビットの有効桁数を想定しています。 ルマの BT.601 定義を使用した Y'CbCr の正確な派生を次に示します。

  1. [0...1] の範囲の RGB 値から始めます。 つまり、純粋な黒は 0 で、純粋な白は 1 です。 重要なのは、これらは非線形 (ガンマ補正) RGB 値です。

  2. luma を計算します。 BT.601 の場合、Y' = 0.299R + 0.587G + 0.114B (前述)。

  3. 中間彩度差値 (B - Y') と (R - Y') を計算します。 これらの値の範囲は、+/- 0.886 for (B - Y')、+/- 0.701 for (R - Y') です。

  4. 次のように、彩度の差の値をスケーリングします。

    Pb = (0.5 / (1 - 0.114)) × (B - Y')

    Pr = (0.5 / (1 - 0.299)) × (R - Y')

    これらのスケーリング 係数は、両方の値に同じ数値範囲 (+/- 0.5) を与えるために設計されています。 一緒に、Y'PbPr という名前の YUV 色空間を定義します。 この色空間は、アナログ コンポーネントのビデオで使用されます。

  5. Y'PbPr 値をスケーリングして、最終的な Y'CbCr 値を取得します。

    Y' = 16 + 219 × Y'

    Cb = 128 + 224 × Pb

    Cr = 128 + 224 × Pr

これらの最後のスケーリング係数は、前の表に示した値の範囲を生成します。 もちろん、中間結果を保存することなく、RGBをY'CbCrに直接変換することができます。 ここでは、この記事の冒頭で指定した元の YUV 方程式から Y'CbCr がどのように派生するかを示す手順を個別に示します。

次の表は、さまざまな色の RGB 値と YCbCr 値を示しています。ここでも、LUMA の BT.601 定義を使用しています。

Color R G B Y' Cb Cr
Black 0 0 0 16 128 128
[赤] 255 0 0 81 90 240
[緑] 0 255 0 145 54 34
0 0 255 41 240 110
シアン 0 255 255 170 166 16
赤紫 255 0 255 106 202 222
255 255 0 210 16 146
255 255 255 235 128 128

 

次の表に示すように、Cb と Cr は色に関する直感的なアイデアには対応していません。 たとえば、純粋な白と純粋な黒の両方に、Cb と Cr (128) のニュートラル レベルが含まれています。 Cb の最大値と最小値はそれぞれ青と黄色です。 Cr の場合、最大値と最小値は赤とシアンです。

詳細情報

ビデオ メディアの種類

メディアの種類