YUV(YCbCr)の基礎と実務ガイド:RGB変換・サブサンプリング・レンジ・ガンマの完全解説

概要

YUV色空間は、映像信号の表現方法のひとつで、輝度(Y)と色差信号(U,V)に分離することで人間の視覚特性を利用し、帯域を効率的に使うことを目的に生まれました。テレビ放送や動画圧縮、画像フォーマット(JPEG等)で広く使われており、色の圧縮やサンプリングにおいて重要な役割を果たします。本コラムでは歴史的背景、技術的な定義(Y と UV の意味)、RGBとの変換式、サブサンプリング、レンジやガンマの注意点、実務上のワークフロー上のポイントまで、できる限り詳しく整理します。

YUVとは何か — 基本概念

YUVは、映像信号を輝度(Y、Luma or Luminance)と色差(U,V または Cb,Cr)に分けた表現です。人間の目は明るさの変化に対して色の変化より敏感なため、色差成分の解像度や帯域を落としても視覚的な劣化を抑えられます。これを利用して映像信号を効率化するのが基本的な狙いです。

歴史と背景

  • YUVという概念はアナログテレビの時代(NTSC/PAL)にさかのぼります。輝度成分のみでモノクロ互換性を維持し、色差信号を別に伝送する方式が採用されました。

  • デジタル化にあたり、同様の分解は YCbCr(デジタルで一般的な色差表現)として標準化されました。YUV と YCbCr は用語や定義が混同されがちですが、厳密にはアナログ(YUV)とデジタル(YCbCr)という違いがあります。

Y(輝度)と U/V(色差)の意味

Y は画素の明るさ(輝度)やルマ(luma)を示します。色の情報(色相と彩度)は、U(または Cb、青差)と V(または Cr、赤差)に含まれます。例えば Cb は青-輝度の差、Cr は赤-輝度の差として定義され、これらの値は正負の差分で色の偏りを表します。

YUV と YCbCr の違い

  • YUV は歴史的にはアナログ色差信号の呼称です。

  • YCbCr はデジタル信号の規格的な表現で、量子化とオフセット(8bitなら128の中心値など)を含むことが多いです。

  • 実務では「YUV」と言っても、実際は「YCbCr」を指していることが多いため、用途(アナログかデジタルか)、係数(BT.601, BT.709 等)、レンジ(フルレンジ/リミテッド)を明確にする必要があります。

RGB ↔ YUV(YCbCr)変換 — 基本式と代表的な係数

変換には色域(色度座標に依存)とガンマ(線形光かガンマ補正済みか)を考慮する必要があります。ここではよく使われる規格(ITU-R BT.601、BT.709)の「ガンマ補正済み(プライム付き:Y')」を前提とした正規化(0..1範囲)での代表的な式を示します。

BT.601(SD) — Y' (luma) の算出

Y' = 0.299 R + 0.587 G + 0.114 B

標準的な RGB → Y'CbCr(正規化、フルスケールでの例)

(ここで Cb,Cr は中心が 0、範囲が概ね -0.5..+0.5)

BT.601(一般に SD):

  • 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

逆変換(Y'CbCr → RGB):

  • R = Y' + 1.40200 Cr
  • G = Y' - 0.344136 Cb - 0.714136 Cr
  • B = Y' + 1.77200 Cb

BT.709(HD)では Y' の係数が異なります(色域とプライマリに依存):

  • 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

逆変換(典型的な係数):

  • R = Y' + 1.5748 Cr
  • G = Y' - 0.1873 Cb - 0.4681 Cr
  • B = Y' + 1.8556 Cb

注意:上の数値は「ガンマ補正済みのR,G,B(R'G'B')」を前提にしたルマ(Y')と色差の関係です。線形光(物理的な輝度Y)との混同を避けてください(後述)。またデジタル実装では値のスケーリングとオフセット(8bitの 16〜235 や 0〜255 等)を伴います。

デジタル化におけるレンジ(フルレンジ vs リミテッド)

デジタルビデオでは、8bitでの「スタジオレンジ(リミテッド/コンピュータースイッチ)」と「フルレンジ」の扱いが重要です。

  • 8bitリミテッド(テレビ放送の慣例): Y の有効範囲は 16〜235、Cb/Cr は 16〜240。これにより同期/ケーブルでの余裕が取られている歴史的理由があります。
  • 8bitフルレンジ(PC画像等): Y, Cb, Cr 共に 0〜255 を使用。
  • 10bitやそれ以上では、上記範囲はビット深度に応じてビットシフトされます(例: 10bitなら 16*4=64 〜 235*4=940 等)。

間違ったレンジで扱うと黒浮きや白つぶれ、色偏移が生じるので、ファイルやストリームのメタデータ(color_range, color_space 等)を確認して適切に変換してください。

サブサンプリング(4:4:4, 4:2:2, 4:2:0)とその影響

YUV 系で最も重要な最適化の一つが「クロマサブサンプリング」です。一般的な表記と意味は:

  • 4:4:4 — Y, Cb, Cr を全て同解像度でサンプリング(無劣化)
  • 4:2:2 — 水平方向のクロマが半分(放送・プロ向けでよく使われる)
  • 4:2:0 — 水平方向・垂直方向でクロマが両方半分(多くのコーデックや配信で採用)

クロマが低解像度になると、色の輪郭がにじんだり、テキスト周りで色収差のようなアーティファクトが出ることがあります。圧縮率向上と品質のバランスで適切なサンプリングを選びます。

ガンマ、ルマ(Y と Y')の違い

重要な点は "Y"(物理的な「輝度」Luminance)と "Y'"(ガンマ補正済みのルマ、Luma)の違いです。テレビ・ビデオの多くの規格はガンマ補正済みの信号を用いるため、Y' は γ 補正された R',G',B' に対する線形結合です。色補正や合成をする際は、可能であれば線形(ガンマを逆適用して)空間で処理を行い、最終出力時に再度ガンマを適用するのが精度面で望ましいです。

クロマサイティングとアップサンプリングの注意

4:2:0 等でクロマをダウンサンプリングしたデータを元に戻す(アップサンプル)する際、どこにクロマサンプルが寄せられているか(クロマサイティング)が重要です。MPEG や MPEG-2、H.264 等で規定が異なり、適切な再構成アルゴリズムやフィルタを選ばないと位置ずれ(特に縦方向)や色ズレが生じます。実装では「左寄せ」や「中心寄せ」などの仕様に従って補間を行う必要があります。

圧縮との関係(コーデックやフォーマット)

映像コーデック(H.264/H.265/VP9 等)は多くの場合 YCbCr を内部フォーマットにしており、クロマサブサンプリングや量子化・DCT の効率化が行われます。YCbCr に変換することで輝度情報を比較的保ちながらデータ量を削減できるため、映像圧縮の要として機能します。

実務上の注意点・ベストプラクティス

  • 色空間とレンジのメタデータ(色域:BT.601/BT.709/BT.2020、レンジ:フル/リミテッド、ガンマ)を必ず確認・維持する。変換や編集で失われがち。

  • 合成・カラーグレーディング等の操作は可能な限り線形空間(リニアライト)で行う。Y' 空間で直接大きな操作をすると不自然になりやすい。

  • 8bitにおける複数回の色変換・圧縮は量子化ノイズを蓄積させるため、色深度を上げる(10/12/16bit)ことを検討する。

  • クロマサブサンプリングや再サンプリング時は高品質のフィルタを選ぶ(エッジ保持やプレサーブ係数)ことでアーティファクトを低減できる。

  • ディスプレイやウェブ、放送など目的別に適切な色域とガンマを選ぶ(例:ウェブは sRGB、放送は Rec.709/Rec.2020 など)。

実際のトラブル例

  • レンジ誤認識:PCで撮ったフルレンジ映像が放送環境でリミテッドとして扱われると黒が浮いたり白がクリップする。

  • 色域誤設定:素材は Rec.709 なのに出力を Rec.2020 として扱うと彩度・色相のずれが発生する。

  • サブサンプリング→アップサンプリングでのシンボルやテキストの色にじみ:文字周りに色の縁が出る。

まとめ

YUV(厳密にはデジタルでは YCbCr)は映像処理における基礎的かつ重要な色表現で、輝度と色差に分離することで圧縮や伝送効率を高めます。ただし、色域、ガンマ、レンジ、サンプリング方式など多くのパラメータが関係するため、実務ではこれらを正確に扱うことが品質確保の鍵になります。映像ワークフローではメタデータを保持し、可能であれば線形空間での処理や高ビット深度を用いることが望まれます。

参考文献