クロマサブサンプリング・ラボ

ビデオコーデックが輝度の詳細を維持しつつ色差解像度を下げる仕組みを比較します。

インタラクティブシミュレーションを読み込んでいます...

コーデックがまず色を犠牲にする理由 🖖

人間の視覚は色の詳細よりも明るさの詳細を鋭く解像するため、コーデックは輝度(Y)の解像度をフルに保ちつつ、色差(Cb/Cr)のサンプルを近隣ピクセル間で共有します。4:4:4はフルの色情報を保存し、4:2:2は水平方向の色差解像度を半分に、4:2:0は水平・垂直の両方向で色差解像度を半分にします。帯域幅の節約は実際に大きく、4:2:0は4:4:4の約半分の生データ量で済みますが、鮮明な色付きテキストや交互に並ぶ色パターンでその損失が最初に現れます。

3つの数字が意味するもの 🖖

この比率は、幅4ピクセル・2行のブロックに対する取り決めです。最初の数字(4)はブロックの幅、2番目は上の行の色サンプル数、3番目は下の行で変化するサンプル数を表します。つまり 4:2:2 は各行で2つの色サンプルを取り、4:2:0 は上の行で2つ取って下の行ではそれを再利用し(新規は0)、2×2の正方形で1つの色を共有します。輝度(ルマ)は常に全ピクセルでサンプリングされます。

祖父母のテレビも実はやっていた 🖖

クロマサブサンプリングはデジタル時代の発明ではありません。1953年にNTSCカラーテレビが登場したとき、技術者は輝度信号に約4.2 MHzの帯域を割り当てる一方、2つの色信号をおよそ1.3 MHzと0.5 MHzに押し込めました。狭い「Q」チャンネルは、青紫の色ディテールに対する人間の目の分解能の低さを利用したものです。アナログカラーテレビは、JPEGやH.264がこの考え方を定式化する何十年も前から、静かに色解像度を捨てていたのです。

例題