Informasi Warna yang Diperluas

Jika Anda tahu sesuatu tentang warna RGB, Anda tahu bahwa (255, 255, 255) adalah triplet RGB 8-bit untuk warna putih. Tetapi apa warna aktual yang didefinisikan oleh triplet ini?

Jawabannya mungkin mengejutkan: Tanpa beberapa informasi tambahan, triplet ini tidak menentukan warna tertentu! Arti dari nilai RGB apa pun tergantung pada ruang warna. Jika kita tidak tahu ruang warna, maka secara ketat berbicara kita tidak tahu warnanya.

Ruang warna mendefinisikan bagaimana representasi numerik dari nilai warna tertentu harus direprovasi sebagai cahaya fisik. Ketika video dikodekan dalam satu ruang warna tetapi ditampilkan di ruang lain, video menghasilkan warna yang terdistorsi, kecuali video dikoreksi warnanya. Untuk mencapai keakuratan warna yang akurat, oleh karena itu, sangat penting untuk mengetahui ruang warna video sumber. Sebelumnya, alur video di Windows tidak membawa informasi tentang ruang warna yang dimaksudkan. Dimulai di Windows Vista, DirectShow dan Media Foundation mendukung informasi warna yang diperluas dalam jenis media. Informasi ini juga tersedia untuk DirectX Video Acceleration (DXVA).

Cara standar untuk menggambarkan ruang warna secara matematis adalah dengan menggunakan ruang warna CIE XYZ, yang didefinisikan oleh International Commission on Illumination (CIE). Tidak praktis untuk menggunakan nilai CIE XYZ secara langsung dalam video, tetapi ruang warna CIE XYZ dapat digunakan sebagai representasi perantara saat mengonversi antar spasi warna.

Untuk mereproduksi warna secara akurat, informasi berikut diperlukan:

  • Warna utama. Warna utama menentukan bagaimana nilai tristimulus CIE XYZ direpresentasikan sebagai komponen RGB. Akibatnya, warna utama menentukan "makna" dari nilai RGB tertentu.
  • Fungsi transfer. Fungsi transfer adalah fungsi yang mengonversi nilai RGB linier ke nilai R'G'B non-linier. Fungsi ini juga disebut koreksi gamma.
  • Transfer matriks. Matriks transfer mendefinisikan bagaimana R'G'B' dikonversi ke Y'PbPr.
  • Pengambilan sampel Chroma. Sebagian besar video YUV ditransmisikan dengan resolusi yang lebih sedikit dalam komponen klorma daripada luma. Pengambilan sampel Chroma ditunjukkan oleh FOURCC dari format video. Misalnya, YUY2 adalah format 4:2:2, yang berarti sampel klorma diambil sampelnya secara horizontal dengan faktor 2.
  • Chroma duduk. Ketika kroma diambil sampelnya, posisi sampel kroma relatif terhadap sampel luma menentukan bagaimana sampel yang hilang harus diinterpolasi.
  • Rentang nominal. Rentang nominal menentukan bagaimana nilai Y'PbPr diskalakan ke Y'CbCr.

Ruang Warna dalam Tipe Media

DirectShow, Media Foundation, dan DirectX Video Acceleration (DXVA) semuanya memiliki cara berbeda untuk mewakili format video. Untungnya, mudah untuk menerjemahkan informasi ruang warna dari satu ke yang lain, karena enumerasi yang relevan sama.

Konversi Ruang Warna

Konversi dari satu ruang Y'CbCr ke ruang lainnya memerlukan langkah-langkah berikut.

  1. Kuantisasi terbalik: Konversi representasi Y'CbCr ke representasi Y'PbPr, menggunakan rentang nominal sumber.

  2. Upsampling: Mengonversi nilai klorma sampel menjadi 4:4:4 dengan menginterpolasi nilai klorma.

  3. Konversi YUV ke RGB: Konversi dari Y'PbPr ke R'G'B non-linear', menggunakan matriks transfer sumber.

  4. Fungsi transfer terbalik: Mengonversi R'G'B' non-linier ke RGB linier, menggunakan inversi fungsi transfer.

  5. Konversi ruang warna RGB: Gunakan warna utama untuk mengonversi dari ruang RGB sumber ke ruang RGB target.

  6. Fungsi transfer: Konversi RGB linier ke R'G'B non-linear, menggunakan fungsi transfer target.

  7. Konversi RGB ke YUV: Konversi R'G'B' ke Y'PbPr, menggunakan matriks transfer target.

  8. Downsampling: Konversi 4:4:4 ke 4:2:2, 4:2:0, atau 4:1:1 dengan memfilter nilai klorma.

  9. Kuantisasi: Konversi Y'PbPr ke Y'CbCr, menggunakan rentang nominal target.

Langkah 1–4 terjadi di ruang warna sumber, dan langkah 6–9 terjadi di ruang warna target. Dalam implementasi aktual, langkah perantara dapat ditempatkan dan langkah-langkah yang berdekatan dapat digabungkan. Umumnya ada trade-off antara akurasi dan biaya komputasi.

Misalnya, untuk mengonversi dari RT.601 ke RT.709 memerlukan tahapan berikut:

  • Kuantisasi terbalik: Y'CbCr(601) ke Y'PbPr(601)

  • Pengambilan sampel: Y'PbPr(601)

  • YUV ke RGB: Y'PbPr(601) ke R'G'B'(601)

  • Fungsi transfer terbalik: R'G'B'(601) ke RGB(601)

  • Konversi ruang warna RGB: RGB(601) ke RGB(709)

  • Fungsi transfer: RGB(709) ke R'G'B'(709)

  • RGB ke YUV: R'G'B'(709) ke Y'PbPr(709)

  • Downsampling: Y'PbPr(709)

  • Kuantisasi: Y'PbPr(709) ke Y'CbCr(709)

Menggunakan Informasi Warna yang Diperluas

Untuk mempertahankan keakuratan warna di seluruh alur, informasi ruang warna harus diperkenalkan di sumber atau dekoder dan disampaikan sepanjang jalan melalui alur ke sink.

Perangkat Pengambilan Video

Sebagian besar perangkat penangkapan analog menggunakan ruang warna yang terdefinisi dengan baik saat menangkap video. Driver pengambilan harus menawarkan format dengan blok format KS_VIDEOINFOHEADER2 yang berisi informasi warna. Untuk kompatibilitas mundur, driver harus menerima format yang tidak berisi informasi warna. Ini akan memungkinkan driver untuk bekerja dengan komponen yang tidak menerima informasi warna yang diperluas.

Sumber berbasis file

Saat mengurai file video, sumber media (atau filter pengurai, di DirectShow) mungkin dapat memberikan beberapa informasi warna. Misalnya, DVD Navigator dapat menentukan ruang warna berdasarkan konten DVD. Informasi warna lainnya mungkin tersedia untuk dekoder. Misalnya, aliran video dasar MPEG-2 memberikan informasi warna di bidang sequence_display_extension. Jika informasi warna tidak dijelaskan secara eksplisit dalam sumber, informasi tersebut mungkin didefinisikan secara implisit oleh jenis konten. Misalnya, varietas NTSC dan PAL video DV masing-masing menggunakan ruang warna yang berbeda. Akhirnya, dekoder dapat menggunakan informasi warna apa pun yang didapatkannya dari jenis media sumber.

Komponen Lain

Komponen lain mungkin perlu menggunakan informasi ruang warna dalam jenis media:

  • Pengonversi ruang warna perangkat lunak harus menggunakan informasi ruang warna saat memilih algoritma konversi.
  • Mixer video, seperti mixer perender video (EVR) yang ditingkatkan, harus menggunakan informasi warna saat mencampur aliran video dari berbagai jenis konten.
  • API dan DDI pemrosesan video DXVA memungkinkan pemanggil untuk menentukan informasi ruang warna. GPU harus menggunakan informasi ini ketika melakukan pencampuran video yang sulit.

Tipe Media Video

Akselerasi Video DirectX 2.0