Sadece kontrol etmek için, ForeverWintr analizini deneysel olarak test edeyim .
JPEG sıkıştırması için en kötü giriş görüntüsü (veya herhangi bir sıkıştırma, gerçekten), teorik olarak sıkıştırılamaz olan, düzgün bir şekilde rastgele RGB gürültüsüdür. Netpbm araçlarını kullanarak biraz üreteyim :
$ rawtoppm < /dev/urandom 640 480 > rnd.ppm
$ pnmtopng < rnd.ppm > rnd.png
$ du -b rnd.*
923772 rnd.png
921615 rnd.ppm
(Tek tip rastgele RGB gürültüsü, kayıpsız PNG formatı, 903 kb)
Not (2017 Mart): Emin görüntü yukarıdaki oldukça değilim idi (. Kuvvetle bu ima altındaki renk yönetimi hakkında bir yorum bile var) Ben ilk bu cevabı yazdım ve 2013 yılında geri yüklerken PNG biçiminde yazık ki, it would Görünüşe göre sessizce JPEG'e çevrilmiş, burada görsel karşılaştırmayı işe yaramaz hale getirmiş.
PNG sınama görüntüsünü yeniden yüklemeye çalıştım, ancak görünüşe göre imgur'da rastgele bir PNG dosya boyutu sınırına çarpıyor ve otomatik olarak JPEG formatına dönüştürülüyor. Bu sorunu çözmenin bir yolu olup olmadığından emin değilim, ancak en azından bir Linux kutusuna erişiminiz varsa, kendi test resimlerinizi oluşturmak için verilen komutları her zaman yeniden çalıştırabilirsiniz. Her durumda, sıkıştırma kalitesinin doğrudan görsel karşılaştırmasını önlemek dışında, bu, aşağıdaki analizi hiçbir şekilde geçersiz kılmaz.
Tamam, sıkıştırılmamış PPM dosyası 640 × 480 × 3 = 921,600 bayt uzunluğunda, minimum PPM başlığı için 15 bayttır, beklendiği gibi. PNG formatını kullanarak kayıpsız şekilde sıkıştırmaya çalışmak, büyüklüğü 2157 byte artırarak, muhtemelen PNG başlıkları ve meta verileri tarafından alınır ve sıkıştırılabilir veriyi sıkıştırmaya çalışan sıkıştırma algoritmasında muhtemelen biraz verimsizliği artırır.
(Evet, bu piksel başına 3 bayt değil, 4 değil; alabilirsiniz bir grafik dosya biçimi olarak basit olarak hakkındadır bile PPM biçimini, diskte piksel başına bir işe yaramaz dördüncü byte depolamak için dilsiz yeterli değildir vardır. Açabilir bazı olmak hizalama nedenleriyle bunu hafızaya kaydetme avantajı, özellikle alfa kanalını kaydetmeniz gerekiyorsa, ancak bu sebepler görüntüyü bir dosyaya yazarken geçerli değildir.)
Tamam, peki ya JPEG? Önce sıkıştırma kayıplarını en aza indirmeye çalışalım (kalite = 100, kroma alt örneği yok, kayan nokta DCT). Ne yazık ki, pnmtojpeg
el kitabı tüm ilgili seçeneklerin nasıl ayarlanacağını net bir şekilde açıklamıyor (özellikle, -sample
seçenek sadece libjpeg belgesindeki bir dosyaya atıfta bulunan "Sihirbazlar için Seçenekler" bölümünde listelenmiştir), bunun yerine GIMP. Ortaya çıkan dosya şöyle görünür:
897249 rnd.jpg
(JPEG sıkıştırılmış RGB gürültüsü, kalite = 100, kroma alt örneği yok, 876 kb)
Ne, daha küçük olabilir? Saf sesin sıkıştırılamaz olduğunu söylemedim mi? Mesele, normal JPEG sıkıştırma değil, hatta maksimum kalitede olduğu oldukça kayıpsız. Görüntünün GIMP'de yeniden açılması ve orijinal ile karşılaştırılması, bazı piksellerin renk değerlerinin bir veya iki adımda (256'dan) değiştirildiğini görebilir. Bunlar, JPEG sıkıştırma algoritmasının "aldattığı" ve burada bir parça attığı pikseller, başka bir yerde, değişimin farkedilmeyeceğini tahmin ediyordu. Nitekim, yardımsız insan gözüne göre, sonuç orijinalden oldukça ayırt edilemez, ancak atılan bitler, başlık için muhasebe ve ek yükü kodladıktan sonra bile, dosya boyutunda ölçülebilir bir düşüşe neden oluyor.
Yani bu maksimum kalite idi; pnmtojpeg
varsayılanlar gibi daha tipik ayarlar ne durumda (kalite = 75, alt örnekleme etkin)? Hadi deneyelim:
$ pnmtojpeg < rnd.ppm > rnd2.jpg
$ du -b rnd2.jpg
185128 rnd2.jpg
(JPEG sıkıştırılmış RGB gürültüsü, kalite = 75, kroma örnekleme, 184 kb)
Vay, 901'den 184 kb'ye kadar! Bu oldukça agresif bir sıkıştırma olsa da, görüntüleri yakından karşılaştırırken kesinlikle farkı anlayabilirsiniz. Bunların çoğu, temelde renk (% / doygunluk) verilerinin% 75'ini ortadan kaldıran kroma alt örneklemesinden dolayıdır. GIMP'de alt örnekleme devre dışı bırakılmış şekilde denemek, büyütülmüş olsa bile hala orijinal görünüme oldukça yakın görünen (en azından insan gözüne) 350,618 baytlık bir dosya verir.
Neyse, bunun ana fikri olduğunu göstermektir, gürültülü senin gece gökyüzü fotoğrafları olabileceğini nasıl olursa olsun, ve seçtiğiniz nasıl yüksek kaliteli olursa olsun, sadece orada hiçbir şekilde bir 640 × 480 JPEG dosyası 900 önemli ölçüde daha büyük olsun kb. (Fotoğraf makineniz buna çok megabaytlık bir Exif renk profili eklememişse veya aynı derecede aptalca bir şey değilse, yani.) Ve daha tipik JPEG sıkıştırma ayarları kullanıyorsanız, maksimum makul dosya boyutu yaklaşık 200 kb'ye kadar düşer. .