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?
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:
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 .
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.
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.
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.
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).
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.
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,
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.
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.
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 .