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

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

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

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

人間の視覚は色の詳細よりも明るさの詳細を鋭く解像するため、コーデックは輝度(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がこの考え方を定式化する何十年も前から、静かに色解像度を捨てていたのです。

連鎖のひとつの段 — 何が入り、何が出て、後段で何が壊れるか

この段はエンコード処理のどこに位置するか

動画エンコーダは単一のアルゴリズムではなく、順序の決まった 8 つの段です。その順序は恣意的ではありません。どの段も、直前の段が仕事を可能にしてくれたからこそ存在します。このツールはそのうちの 1 つを扱います。下の連鎖から残りの 7 つに移動できます。

クロマサブサンプリング・ラボ — 明るさをそのままに保ちながら、色の解像度の大部分を捨てる

入ってくるもの
フル解像度の輝度と色差 — 画素ごとに 1 つの色標本で、4:4:4 と書きます。
出ていくもの
輝度はフル解像度、色差は 4:2:0 で標本数が 4 分の 1。
次の段が前提とすること
以降のすべては 4 分の 1 の色差データを扱い、デコーダが捨てられた標本を補間して戻します。
ここで壊れるもの
彩度の高い輪郭 — 黒地の赤文字が定番の例 — は色がブロック全体に滲みます。その輪郭は標本を取り除いた色差の側にあるからです。輝度は無傷で残るので、絵は鮮明に見えて色だけがおかしく見えます。

全プロセスの詳細解説

  1. サンプル数から求めた4:4:4、4:2:2、4:2:0のピクセルあたりのバイト数 6 ステップ

    サンプル数から4:4:4、4:2:2、および4:2:0のピクセルあたりのバイト数を導出し、4:2:0が実際にどれだけの帯域幅を削減しているかを求めよ。

    1. 2×2ブロック内のサンプル数を数える。この表記は、上行および下行において4つの輝度サンプルに伴うクロマサンプルの数を示しているため、その比率はカウント(個数)であり分数ではない。

    2. 他の2つのモードでは、クロマを水平方向に間引き、さらに垂直方向にも間引く。半減させるごとに、ブロック内の12個のサンプルのうち2個が取り除かれる。

    3. フレームサイズに応じたピクセル数を乗じ、削減率の比率を求める。4:2:0は測定結果としてではなく、構造上正確に4:4:4の半分となる。

    4. サンプルがどこに割り当てられているかを確認する。どのモードでも輝度は維持されており、間引かれているのは色差チャンネルのみである。人間の目は色差に対する解像度が概ね半分の視力しかない。

    5. 同じピクセルあたり1.5バイトという値を、実際のフレームサイズとフレームレートに拡大適用する。

    6. それゆえに失敗モードは全般的なものではなく特定領域に限られる。損失は輝度の詳細情報を保持しない2つのチャンネルのみにおいて発生するからである。

    解答

    半分であり、それでも非圧縮の1080p30では746 Mbit/sに達する。この数値こそがこの演習の核心である。クロマサブサンプリングは存在する中で最も低コストな圧縮である。変換も、エントロピー符号化器も、判断処理も必要としない。そしてデータを半減させた後であっても、ストリームは家庭用ネットワークにはあまりにも巨大であり、だからこそ製品化されているすべてのコーデックはこのステップに代わるものではなく、このステップの後に処理を開始するのである。視覚的な影響がこれほど少ない理由はYの式にある。輝度はすべてのピクセルでサンプルされ、間引かれるのはCbとCrのみであるため、エッジ、テクスチャ、および詳細は影響を受けない。破綻するのは情報が色のみに存在する箇所(灰色の背景に赤い文字、高彩度のロゴ、クロマキーのエッジなど)であり、これが4:2:0が樹木の映像では判別不能でありながら、プレゼンスライドでは致命的となる理由である。

参考文献 (1)

例題

  • カラーバー - 64ピクセルに8本の帯が並ぶため、それぞれの幅は8ピクセルになります。そして、4:2:0方式では色差を2×2のブロックごとに平均化します。どのブロックも帯の境界線をまたぐことはないため、平均化されるブロックはすでに単一の色になっています。そのため、フレーム全体が9,216バイトから4,608バイトへ縮小されても、三つのパネルはピクセル単位で完全に一致します。この画像に関する限り、50.0%のデータ削減による犠牲は一切ありません。
  • 色相グラデーション - 滑らかな色相グラデーション: 4:2:0と4:2:2はほぼ見分けがつかない — 自然な映像では色差のアーティファクトが目立ちにくい
  • 色付きテキスト - カラーテキスト
  • 市松模様(ストレステスト) - チェッカー柄での負荷テスト