YCbCr renk alanı bir JPEG görüntüsünde nasıl temsil edilir?


9

24 bitlik bir görüntünün R, G ve B için 8 bit ayırdığını biliyorum. Bu sadece RGB renk alanı için mi? 24 bit JPEG görüntü için YCbCr renk uzayında bitler nasıl dağıtılır?

Yanıtlar:


3

YCbCr için birkaç format vardır. genel olarak konuşmak gerekirse, parlaklıktaki değişikliklere (Y, parlaklık) renkteki değişikliklere (Cb, Cr, renk) göre daha duyarlıdır. Böylece, görüntü kalitesini korurken bazı renk bilgilerinin silinmesi mümkündür.

Bu nedenle, en "pahalı" format 4: 4: 4'tür, burada her luma (Y) bileşeni için 1 Kırmızı fark (Cr) ve bir Mavi fark (Cb) bileşeni vardır.

Daha sonra, bahsettiğim prensibi uygulayarak, her 2 Y bileşeni için 1 Cb ve 1 Cr olduğu 4: 2: 2 vardır. Ve 4: 1: 1 ve 4: 2: 0, vb. Daha da ileri gider. Daha fazla bilgi burada .


Bu modeller, JPEG kodlaması için değil, video için frekans örneklemesi anlamına gelir.
whuber

@whuber: Video kodlamayı tartışırken sıklıkla kullanılırlar, ancak JPEG aynı zamanda iki kat daha yüksek çözünürlükle parlaklığı da destekler. JPEG durumunda, isteğe bağlıdır - chroma tam veya yarı çözünürlük olabilir.
Jerry Coffin

1
GIMP, bir JPEG kaydederken varsayılan olarak renk alt örneklemesi kullanacaktır, ancak geçersiz kılmak kolaydır. Bunun Photoshop için de geçerli olup olmadığını hatırlayamıyorum.
thomasrutter

@thomasrutter, Photoshop alt örneklemeyi seçtiğiniz kalite ayarına göre seçer. Bağımsız bir seçenek değil.
Mark Ransom

Bu arada, sayılar Y, Pr ve Pb için 4 yatay piksel başına örnek sayısını belirtir. Yani 4: 4: 4, her üç pikseli de her pikselden örnekleme anlamına gelir; 4: 2: 2, Pr ve Pb kanallarının yalnızca her ikinci pikselden yatay olarak örneklendiği anlamına gelir; 4: 1: 1. 4: 2: 0 bu kuraldan özel bir sapmadır. Pb kanalı olmadığı anlamına gelmez. Bunun anlamı, Pr ve Pb kanallarının sadece yatay değil, hem yatay hem de dikey yönde yarıya indirilmesidir .
thomasrutter

24

Bir JPEG, R, G ve B kanalı başına 8 bit ile başlayabilir, ancak JPEG'de saklandığında, gerçek bir "bit derinliği" bulunmayan çok farklı şekilde saklanır, ancak bunun yerine değerler, belirli bir hassasiyetin frekans katsayıları olarak saklanır.

JPEG'de daha önemli olan, sıkıştırma nicemleme aşamasında ne kadar bilginin atıldığını ve böylece her katsayının ne kadar kesin olduğunu etkileyen nicemleme oranıdır . Bu nicemleme oranı, bir JPEG'i photoshop'a kaydettiğinizde "kalite" ayarıyla ayarlanır. Ancak raster görüntüdeki gibi bit derinliği ile ilgili değildir ve JPEG kodlayıcıların / kod çözücülerin 24 bit ile başlayıp bitmesine rağmen JPEG görüntüsünün JPEG biçiminde biraz derinliğe sahip olmadığını bile söyleyebilirsiniz. Raster görüntü.

Bir JPEG'i kaydetmeyle ilgili diğer önemli faktör kroma alt örnekleme türüdür . JPEG'de, renk (Pr ve Pb) kanallarının parlaklık (açıklık) kanalına göre yatay veya yatay ve dikey çözünürlüğünü yarıya indirme seçeneğiniz vardır. Sıkıştırırken, renk kanalları enterpole edilir ve çoğu fotoğrafik konuda büyük bir fark yaratmaz.

İşte bir görüntünün JPEG biçimine nasıl dönüştürüldüğünün kabaca bir özeti.

  1. RGB değerleri Y, Pb, Pr değerlerine dönüştürülür. YPbPr renk alanı verimli sıkıştırma için daha uygundur, çünkü en fazla ayrıntıyı taşıyan parlaklık bilgisini tek bir kanalda tutar. Bu dönüşüm, herhangi bir yuvarlama hatası olması dışında, tamamen tersine çevrilebilir basit bir aritmetik işlemdir.

  2. Herhangi bir kroma-alt örnekleme kullanılıyorsa (diğer bir deyişle, 4: 4: 4 modundan başka bir şey kullanarak), yalnızca Pb ve Pr kanallarının dikey ve / veya yatay çözünürlüğü yarıya düşer. Böylece bu kanallar, parlaklık kanalından farklı piksel boyutlarına sahip olacaktır. Bu, renk kanallarında kalıcı çözünürlük kaybına yol açar.

  3. Her kanal için, görüntü 8 piksel x 8 piksel bloklara bölünür, bu da her kanaldaki bu bloklar için 64 doğrusal değer verir. Bir kanal her iki boyutta da 8 piksellerin katları değilse, kenar pikselleri tekrarlanır (ve sıkıştırmayı açarken atılır - bu nedenle JPEG sıkıştırması, 8 pikselin katları olan boyutlarda her zaman daha verimlidir veya faktör olarak 16 chroma alt örneklemesinde).

  4. Her bloktaki 64 değer, bu alandan ayrık bir kosinüs dönüşümü adı verilen uzay alanından frekans alanına bir dönüşüm geçirir. Her biri belirli bir frekans haritasının o blok tarafından alınan alan üzerindeki genliğini temsil eden 64 katsayı ile sonuçlanırsınız. İlk değer, bloğun en yüksek frekans bileşenini tanımlayan son değerlere kadar, tüm piksellerin ortalama değeri olan en düşük frekanstır. Önceki değerlerin hepsi çok daha fazla sapar ve son görüntünün görünümü için bir bloktaki sonraki değerlerden daha önemlidir. Yeterli hassasiyet kullandığınız sürece bu işlem mükemmel bir şekilde geri döndürülebilir.

  5. Ardından, önceki adımda aldığınız 64 katsayının her birinin bir sayıya (nicemleme faktörü olarak adlandırılır) bölündüğü ve geri kalanının atıldığı niceleme adımı vardır. Burası, numunelerin hassasiyetinin en fazla etkilendiği yerdir, ancak kayıpsız sıkıştırmaya kıyasla JPEG'den büyük alan tasarrufları elde edeceğiniz yerdir. Önceki dönüşümden bu yana her şey frekans alanında olduğu için, bu doğruluk kaybı algısal görüntü kalitesini korumak için en iyi işini, bu dönüşümden önce piksellerin bit derinliğini / doğruluğunu azaltmaktan daha iyi yapar. Bu prosedürün tersi, katsayıları böldüğünüz sayıyla çarpmaktır, ancak elbette kalanları attığınızdan, katsayıların daha az hassas olmasıyla sonuçlanırsınız. Bu kalıcı kalite kaybına yol açar,

  6. Bu nicemlemeden sonra, daha sonraki daha az önemli katsayıların sıfır olması tipiktir, bu yüzden bunlar atılır. Daha sonra (kayıpsız) değişken uzunlukta bir kodlama rutini, her biri farklı sayıda bit kullanabilmesine rağmen, kalan tüm katsayıları verimli bir şekilde kodlar.

Belirli bir nicemleme faktörünün belirli bir bit derinliğine eşdeğer olduğunu söylemek imkansızdır, çünkü nicemleme bit derinliğini azalttığınız gibi şeritleme vermez, bunun yerine fark ettiğiniz kısımlardan başlayarak ayrıntılı bir algısal kayıp verir. daha az çünkü frekansı için çok düşük genliğe sahiptir.


2
Bence beynim patladı.
Nick Bedford

Chroma alt örneklemesi sadece "çözünürlük kaybı" ile sonuçlanmaz. Özellikle kırmızı kanalda çok dikkat çekici eserler sunar.
Mark Ransom

@Mark Ransom bu eserler, renk kanallarındaki çözünürlüğü yarıya indirmenin ve dekompresyondan sonra bunu hesaba katmak için gereken enterpolasyonun bir sonucu değildir. Bu enterpolasyonu bertaraf eden veya en basit komşu enterpolasyonunu yapan ve kırmızı için oldukça dikkat çekici olan blokaj ile sonuçlanan bazı kod çözücüler olsa da, asla çözünürlüğün bulanıklaşmasından kaynaklanan herhangi bir "göze çarpan artefakt" üretmemelidir. siyah üzerine detaylar (veya mavi üzerine macenta vb.). Bu bazı DVD oynatıcılarda sık görülen bir sorundu.
thomasrutter

5
Daha iyi, daha kolay anlaşılır bir jpeg veya gerçekten kayıp görüntü sıkıştırma açıklaması gördüğümü sanmıyorum. kesin +1
jay.lee

Üzgünüm, alt örneklemin eserlere neden olduğunu ima etmek istememiştim. Sadece kuantizasyondan kaynaklanan mevcut hatalar 2X patladı ve bu da onları daha görünür hale getirdi. Alt örneklemenin görünür etkisinin biraz eklenmiş bir bulanıklıktan daha fazlası olduğunu bilmek önemlidir.
Mark Ransom

1

Lumadan (Y) ayrı kanallarda kromanın (Cb Cr) temsil edilmesi, sıkıştırma üzerinde başka bir olumlu etkiye sahiptir. Görünür bilgilerin çoğu luma kanalındadır. İnsan gözleri, renk kanallarında hem daha düşük uzaysal çözünürlüğü hem de daha agresif nicelemeyi tolere eder. Böylece agresif bir şekilde sıkıştırılmış bir görüntü, chroma için dosya alanının yaklaşık% 10'unu ve geri kalan luma için tüketebilir ve yine de iyi görünebilir.

Günün sonunda hala kayıplı sıkıştırma.


-1

Her kanal için yaklaşık 8 bit, ancak bunu yapmanın birkaç farklı yolu vardır. Ayrıntılar YCbCr hakkındaki Wikipedia makalesinde verilmiştir .


Bu soruda belirtildi. Daha ayrıntılı bir cevap verin.
Nick Bedford

@Nick "Bu" soruda tam olarak nerede belirtildi? Soru şu anda olduğu gibi, "24 bit JPEG görüntü için YCbCr renk uzayında bitler nasıl dağıtılır?" Kanalların Y, Cb ve Cr olduğunu varsayarak - sorunun ne olduğunu anlayan herkes gibi - varsayarak nasıl dağıldıklarını söyledim. Cevabım Wikipedia makalesinin doğru bir özeti. SE politikası, kopya malzeme toptan satışından ziyade özetler sağlamaktır (her ne kadar kolay olsa da, itiraf ediyorum, bu sitenin başka yerlerindeki uzun tekliflere ilişkin bazı sınırlayıcı örnekler sunmak).
whuber

Bu tür bir cevap, tam bir açıklama kadar büyük olmasa da, Wikipedia'dan sadece kesip yapıştıran, hatta tüm Wikipedia makalesini yorumlayan yanıttan çok daha iyi olduğunu düşünüyorum. Wikipedia iyi ise, insanlara bunu anlatmak yardımcı olur. Ve bu eğer tüm Cevabınız, katkıda olmanın ayarlıyoruz ve sadece kısa bir özetini vererek ve link yapmanız gerektiğini tam olarak doğru şey olduğunu.
Lütfen Profilim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.