Bagaimana ruang warna YCbCr diwakili dalam gambar JPEG?


9

Saya tahu bahwa gambar 24 bit mendedikasikan 8 bit masing-masing untuk R, G dan B. Apakah itu hanya untuk ruang warna RGB. Dalam ruang warna YCbCr untuk gambar JPEG 24 bit, bagaimana bit didistribusikan?

Jawaban:


3

Ada beberapa format untuk YCbCr. Secara umum mata lebih sensitif terhadap perubahan luminance (Y, brightness) daripada perubahan chroma (Cb, Cr, color). Dengan demikian, dimungkinkan untuk menghapus beberapa informasi kroma sambil mempertahankan kualitas gambar.

Jadi, format yang paling "mahal" adalah 4: 4: 4, di mana untuk setiap komponen luma (Y) ada 1 komponen perbedaan Merah (Cr) dan satu perbedaan Biru (Cb).

Kemudian, menerapkan prinsip yang saya sebutkan, ada 4: 2: 2 di mana untuk setiap komponen 2 Y ada 1 Cb dan 1 Cr. Dan bahkan lebih jauh lagi ke 4: 1: 1 dan 4: 2: 0, dll. Info lebih lanjut di sini .


Pola-pola ini tampaknya merujuk pada sampling frekuensi untuk video, bukan penyandian JPEG.
whuber

@whuber: Mereka sering digunakan dalam membahas pengkodean video, tetapi JPEG juga mendukung pencahayaan dengan dua kali lipat resolusi chrominance. Dalam kasus JPEG, itu opsional - chroma dapat berupa res penuh atau setengah res.
Jerry Coffin

1
GIMP akan menggunakan chroma subsampling secara default saat menyimpan JPEG, meskipun mudah ditimpa. Tidak ingat apakah ini berlaku untuk Photoshop juga.
thomasrutter

@thomasrutter, Photoshop memilih subsampling berdasarkan pengaturan kualitas yang Anda pilih. Ini bukan opsi independen.
Mark Ransom

By the way, angka mengacu pada jumlah sampel per 4 piksel horizontal untuk Y, Pr, dan Pb. Jadi 4: 4: 4 berarti ketiga saluran sampel setiap piksel; 4: 2: 2 berarti saluran Pr dan Pb hanya mencicipi setiap piksel kedua secara horizontal; 4: 1: 1 (Saya rasa ini tidak pernah digunakan dalam fotografi, hanya dalam video) berarti Pr dan Pb hanya mengambil sampel setiap piksel keempat secara horizontal. 4: 2: 0 adalah penyimpangan khusus dari aturan ini. Ini TIDAK berarti tidak ada saluran Pb. Apa artinya adalah bahwa saluran Pr dan Pb dibelah dua di kedua arah horisontal dan vertikal, bukan hanya horisontal.
thomasrutter

24

Suatu JPEG dapat dimulai dengan 8 bit per saluran R, G dan B, tetapi ketika disimpan dalam JPEG itu disimpan sangat berbeda, di mana tidak ada "kedalaman bit" nyata tetapi nilai-nilai disimpan sebagai koefisien frekuensi dari presisi yang diberikan.

Dalam JPEG yang lebih relevan adalah laju kuantisasi , yang memengaruhi seberapa banyak informasi yang dibuang selama tahap kuantisasi kompresi dan dengan demikian seberapa tepat masing-masing koefisien. Tingkat kuantisasi ini diatur oleh pengaturan "kualitas" ketika Anda menyimpan JPEG di photoshop. Ini tidak terkait dengan kedalaman bit seperti pada gambar raster, dan Anda bahkan bisa mengatakan bahwa gambar JPEG tidak memiliki kedalaman sedikit saat dalam format JPEG, meskipun encoders / decoder JPEG mulai dengan / diakhiri dengan 24-bit gambar raster.

Faktor utama lain yang relevan dalam menyimpan JPEG adalah jenis sub-sampling kroma . Dalam JPEG, Anda memiliki pilihan untuk mengurangi separuh resolusi horizontal (vertikal dan horizontal), atau kanal warna (Pr dan Pb), relatif terhadap saluran luminance (terang). Saat didekompresi, saluran warna diinterpolasi dan dalam sebagian besar subjek fotografi tidak membuat banyak perbedaan.

Berikut ini ringkasan kasar tentang bagaimana suatu gambar diubah menjadi JPEG.

  1. Nilai RGB dikonversi ke nilai Y, Pb, Pr. Ruang warna YPbPr lebih cocok untuk kompresi yang efisien karena membuat informasi pencahayaan, yang membawa detail paling banyak, hanya dalam satu saluran. Konversi ini adalah operasi aritmatika sederhana yang dapat dibalik secara sempurna, terlepas dari jika ada kesalahan pembulatan.

  2. Jika menggunakan subsampel kroma (dengan kata lain, menggunakan apa pun selain mode 4: 4: 4), maka resolusi vertikal dan / atau horizontal saluran Pb dan Pr hanya dibelah dua. Dengan demikian saluran ini akan memiliki dimensi piksel yang berbeda dengan saluran pencahayaan. Ini menyebabkan hilangnya resolusi permanen pada saluran warna.

  3. Untuk setiap saluran, gambar dibagi menjadi blok 8 piksel dengan 8 piksel, yang memberikan 64 nilai linier untuk setiap blok tersebut di setiap saluran. Jika suatu saluran bukan kelipatan 8 piksel dalam dimensi mana pun, maka piksel tepi diulangi (dan akan dibuang saat didekompresi - dengan demikian kompresi JPEG selalu lebih efisien dengan dimensi yang merupakan kelipatan 8 piksel, atau 16 jika Anda faktor dalam subsampling kroma).

  4. Nilai 64 di setiap blok mengalami transformasi dari domain luar angkasa menjadi domain frekuensi, dalam hal ini disebut transformasi kosinus diskrit. Anda berakhir dengan 64 koefisien, masing-masing mewakili amplitudo dari peta frekuensi tertentu di atas area yang diambil oleh blok itu. Nilai pertama adalah frekuensi terendah yang secara efektif adalah nilai rata-rata semua piksel, hingga nilai terakhir yang menggambarkan komponen frekuensi tertinggi dari blok. Nilai sebelumnya semuanya jauh lebih menyimpang, dan lebih penting untuk tampilan gambar akhir daripada nilai yang lebih baru dalam sebuah blok. Operasi ini dapat dibalik sempurna selama Anda menggunakan cukup presisi.

  5. Lalu ada langkah kuantisasi, di mana masing-masing 64 koefisien yang Anda dapatkan di langkah sebelumnya dibagi dengan beberapa angka (disebut faktor kuantisasi), dan sisanya dibuang. Di sinilah ketepatan sampel paling terpengaruh, tetapi di situlah Anda mendapatkan penghematan ruang besar dari JPEG dibandingkan dengan kompresi lossless. Karena semuanya ada dalam domain frekuensi sejak transformasi sebelumnya, kehilangan akurasi ini melakukan tugas terbaiknya dalam menjaga kualitas gambar persepsi daripada hanya mengurangi kedalaman bit / akurasi piksel sebelum transformasi ini. Kebalikan dari prosedur ini hanyalah mengalikan dengan angka yang sama dengan yang Anda bagi koefisien, tetapi tentu saja karena Anda membuang sisa-sisa Anda berakhir dengan kurang presisi dari koefisien. Ini mengakibatkan hilangnya kualitas permanen,

  6. Setelah kuantisasi ini, tipikal untuk banyak dari yang berikutnya, koefisien yang kurang signifikan menjadi nol, jadi ini dibuang. Kemudian rutin pengkodean panjang variabel (lossless) mengkodekan semua koefisien yang tersisa dengan cara yang efisien, meskipun masing-masing dapat menggunakan jumlah bit yang berbeda.

Tidak mungkin untuk mengatakan bahwa faktor kuantisasi tertentu setara dengan kedalaman bit tertentu karena kuantisasi tidak memberikan garis banding seperti ketika Anda mengurangi kedalaman bit, tetapi sebaliknya memberikan kerugian persepsi keseluruhan secara rinci, dimulai dari bagian di mana Anda akan melihatnya kurang karena amplitudo rendah untuk frekuensinya.


2
Saya pikir otak saya baru saja meledak.
Nick Bedford

Subsampling Chroma tidak hanya mengakibatkan "hilangnya resolusi". Ini memperkenalkan artefak yang sangat mencolok terutama di saluran merah.
Mark Ransom

@Mark Ransom artefak tersebut tidak lebih dari hasil membagi dua resolusi dalam saluran warna, dan interpolasi yang diperlukan untuk menjelaskan hal itu setelah dekompresi. Seharusnya tidak pernah menghasilkan "artefak yang terlihat" selain yang disebabkan oleh pengaburan resolusi, meskipun mungkin ada beberapa decoder yang mengacaukan interpolasi ini atau melakukan interpolasi tetangga-tetangga yang sangat sederhana, menghasilkan blockiness yang cukup mencolok untuk warna merah. detail tentang hitam (atau magenta biru, dll). Ini adalah masalah umum pada beberapa pemutar DVD awal misalnya.
thomasrutter

5
Saya tidak berpikir saya pernah melihat penjelasan yang lebih baik, lebih mudah untuk memahami kompresi gambar jpeg - atau benar-benar lossy. pasti +1
jay.lee

Maaf, saya tidak bermaksud mengatakan bahwa subsampling menyebabkan artefak. Hanya saja kesalahan yang ada dari kuantisasi diledakkan 2X, membuatnya jauh lebih terlihat. Saya pikir penting untuk mengetahui bahwa efek yang terlihat dari subsampling lebih dari sekadar sedikit ketidakjelasan.
Mark Ransom

1

Mewakili kroma (Cb Cr) dalam saluran yang terpisah dari luma (Y) memiliki efek positif lain pada kompresi. Sebagian besar informasi yang terlihat di saluran luma. Mata manusia mentolerir resolusi spasial yang lebih rendah dan kuantisasi yang lebih agresif di saluran kroma. Jadi gambar yang dikompresi secara agresif dapat menghabiskan sekitar 10% dari ruang file untuk kroma, dan sisanya untuk luma, dan masih terlihat layak.

Pada akhirnya kompresi itu masih lossy.


-1

Sekitar 8 bit untuk setiap saluran, tetapi ada beberapa cara yang sedikit berbeda untuk melakukannya. Rinciannya diberikan dalam artikel Wikipedia di YCbCr .


Ini dinyatakan dalam pertanyaan. Berikan jawaban yang lebih detail.
Nick Bedford

@Nick Di mana "ini" dinyatakan dalam pertanyaan, tepatnya? Pertanyaannya, seperti yang ada sekarang, mengatakan "Dalam ruang warna YCbCr untuk gambar JPEG 24 bit, bagaimana bit didistribusikan?" Saya telah mengatakan bagaimana mereka didistribusikan, dengan asumsi - seperti orang yang mengerti pertanyaan akan - bahwa salurannya adalah Y, Cb, dan Cr. Jawaban saya adalah ringkasan yang benar dari artikel Wikipedia. Kebijakan SE adalah memberikan ringkasan daripada menyalin materi secara grosir (walaupun saya akui, mudah untuk memberikan beberapa contoh garis batas dari kutipan panjang di tempat lain di situs ini).
whuber

Saya pikir jawaban semacam ini, walaupun tidak sehebat penjelasan penuh, jauh lebih baik daripada yang hanya memotong dan menyisipkan dari Wikipedia, atau bahkan yang memparafrasekan seluruh artikel Wikipedia. Jika Wikipedia itu baik, memberi tahu orang-orang tentang hal itu bermanfaat. Dan jika itu semua jawaban Anda berkontribusi, terbuka dan hanya memberikan ringkasan cepat dan tautan adalah hal yang tepat untuk dilakukan.
Silakan Baca Profil Saya
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.