Haruskah penyandian JPEG memperhitungkan gamma akun?

11

Ketika gambar dikodekan menggunakan JPEG, piksel RGB pertama kali dikodekan ke YUV, dan kemudian saluran UV downsampled. Sebelum benar-benar melakukan DCT dan mengkodekan koefisien, JPEG tidak gamma memperbaiki saluran Y. Apakah ini benar? Tidakkah kita harus menentukan koefisien DCT yang paling mempengaruhi hasil yang dilihat?

Mokosha
sumber
Saya tidak tahu tetapi tentu masuk akal untuk tidak melakukan gamma yang benar.
joojaa
Saya tidak memposting ini sebagai jawaban karena saya tidak yakin akan hal itu, tetapi persepsi kecerahan visi manusia tidak linear. Bahkan, sRGB melakukan pekerjaan yang cukup baik untuk mengkompensasi hal itu dan memberikan ketepatan paling dalam bidang-bidang yang penting. Jadi, Anda mungkin menemukan bahwa koreksi gamma sebelum mengompresi luma sebenarnya dapat memberikan hasil yang lebih buruk.
yuriks
AFAIK, standar video menganggap R'G'B ', yaitu. ruang warna non-linear, saat menerapkan warna 3x3 berubah menjadi / dari YCbCr. Dalam aplikasi seperti video di mana seseorang ingin memaksimalkan kualitas per bit, tidak masuk akal untuk menggunakan linear. Saya pikir bagian 27 dan 29 dari FAQ Warna Charles Poyton mengungkapkannya dengan lebih jelas: poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC27
Simon F
"Video demystified" juga mengatakan: "YCbCr adalah ruang warna yang awalnya ditentukan oleh BT.601, dan sekarang digunakan untuk semua format video komponen digital .... .... Notasi yang benar secara teknis adalah Y'Cb'Cr 'karena ketiga komponen tersebut adalah berasal dari R'G'B '. "
Simon F
Eksponen gamma disimpan dalam data exif JPEG. sebagian besar perangkat lunak benar-benar mengabaikannya. tetapi Anda dapat mengasumsikan daripada setelah mendekode jpeg yang sudah ada di ruang gamma sehingga tidak ada konversi yang harus dilakukan sebelum mengirim nilai rgb pada buffer tampilan.
v.oddou

Jawaban:

2

Menurut Wikipedia (masukkan akurasi RE disclaimer standar):

JPEG tidak menentukan pengkodean warna mana yang akan digunakan untuk gambar. JFIF mendefinisikan model warna yang akan digunakan: baik Y untuk skala abu-abu, atau YCbCr seperti yang didefinisikan oleh CCIR 601.

YCbCr adalah format non-linear. Seperti yang saya sebutkan sebelumnya, "Video Demystified" menyatakan:

"YCbCr adalah ruang warna yang awalnya ditentukan oleh BT.601, dan sekarang digunakan untuk semua format video komponen digital .... Notasi yang benar secara teknis adalah Y'Cb'Cr 'karena ketiga komponen tersebut berasal dari R'G'B '. "

dan Charles' Poynton ini Warna FAQ negara

Sistem video memperkirakan respons cahaya dari penglihatan menggunakan sinyal R'G'B 'yang masing-masing tunduk pada fungsi daya 0,45.

Dengan kompresi kita mencari representasi visual terbaik per bit dan, karena mata adalah non-linear dalam kira-kira dengan cara ini, masuk akal untuk menggunakan representasi non-linear.

Simon F
sumber
Dari perincian ini, seperti yang saya mengerti, JPEG mengharapkan input nilai RGB dikodekan sedemikian rupa sehingga tampilan akan menerapkan fungsi daya pada tampilan. Untuk membuat ulang nilai-nilai RGB spesifik itu, mereka tidak harus diperbaiki sebelum pengkodean.
Mokosha
1
Masalah dengan menyatakannya seperti itu adalah bahwa itu agak ambigu. Kami mungkin harus menyatakan bahwa, jika data "RGB" Anda, pada kenyataannya, R'G'B '(dan mari kita asumsikan sRGB termasuk dalam kategori itu) maka Anda tidak boleh mengubah nilai-nilai sebelum menerapkan R'G'B' => Matriks YCbCr. Namun, jika data, katakanlah, telah dihitung dengan renderer (jadi mungkin linier), diproses menggunakan downscaling (yang harus dilakukan dalam ruang linear) atau, katakanlah, ditangkap (dan dibersihkan) dengan CCD (yang saya think linear), maka harus dipetakan ulang sebelum kompresi JPEG.
Simon F
7

Jawaban singkatnya adalah "tidak", untuk alasan yang tercakup dalam memo Alvy Ray Smith, Gamma Correction . Gamma bukan tentang nonlinier dalam persepsi manusia, ini tentang nonlinier dalam perangkat tampilan (dan, saya kira, perangkat akuisisi juga).

Nama samaran
sumber