Birisi sihirli numaranın neden tam olarak 1: 2 gibi göründüğünü ve örneğin 1: 1.1 veya 1:20 gibi görünmediğinden emin değilim.
Bunun bir nedeni, birçok tipik durumda sayısallaştırılmış verilerin neredeyse yarısının gürültü olması ve gürültünün (tanım gereği) sıkıştırılamamasıdır.
Çok basit bir deney yaptım:
Gri bir kart aldım . Bir insan gözüne göre, düz, nötr bir gri karton parçası gibi görünüyor. Özellikle bilgi yoktur .
Ve sonra normal bir tarayıcı aldım - tam olarak insanların fotoğraflarını dijitalleştirmek için kullanabileceği bir tür cihaz.
Gri kartı taradım. (Aslında, gri kartı bir kartpostalla birlikte taradım. Kartpostal, kontrol yazılımı için, tarayıcı yazılımının garip bir şey yapmadığından emin olabilirdim, örneğin özelliksiz gri kartı gördüğünde otomatik olarak kontrast ekleyin.)
Gri kartın 1000x1000 piksellik bir bölümünü kırptım ve gri skalaya (piksel başına 8 bit) dönüştürdüm.
Şu an sahip olduğumuz şey, taranmış bir siyah beyaz fotoğrafın özelliksiz bir parçasını, örneğin açık gökyüzünü incelediğinizde neler olduğuna oldukça iyi bir örnek olmalıdır . Prensip olarak, görülecek hiçbir şey olmamalıdır.
Bununla birlikte, daha büyük bir büyütme ile, aslında şöyle görünür:
Açıkça görülebilen bir desen yoktur, ancak düzgün bir gri rengi yoktur. Bunun bir kısmı büyük olasılıkla gri kartın kusurlarından kaynaklanıyor, ancak çoğunun sadece tarayıcı tarafından üretilen gürültü (sensör hücresindeki termal amplifikatör, amplifikatör, A / D dönüştürücü, vb.) Olduğunu varsayacağım. Gauss gürültüsüne benziyor; İşte histogram ( logaritmik ölçekte):
Şimdi eğer varsayalım her piksel kendi gölge bu dağıtımdan iid aldı sahip olduğunu, ne kadar entropi var? Python senaryom, piksel başına 3.3 bit entropi olduğunu söyledi . Ve bu çok fazla gürültü.
Eğer durum buysa, hangi sıkıştırma algoritmasını kullanırsak kullanalım, 1000x1000 piksel bitmap en iyi durumda 412500 baytlık bir dosyaya sıkıştırılacaktır. Ve pratikte ne olur: 432018 bayt PNG dosyası var, oldukça yakın.
Biraz fazla genelleştirirsek, bu tarayıcıyla hangi siyah beyaz fotoğrafları taradığım önemli değil, aşağıdakilerin toplamını alacağım:
- "yararlı" bilgiler (varsa),
- gürültü, yakl. Piksel başına 3 bit.
Sıkıştırma algoritmanız faydalı bilgileri piksel başına << 1 bit'e sıkıştırsa bile, sıkıştırılamaz gürültünün piksel başına 3 bit'e kadar sahip olacaksınız. Ve sıkıştırılmamış sürüm piksel başına 8 bittir. Böylece sıkıştırma oranı, ne yaparsanız yapın 1: 2'lik ballparkta olacaktır.
Aşırı idealize edilmiş koşulları bulma girişimi ile başka bir örnek:
- En düşük hassasiyet ayarını (en az gürültü) kullanan modern bir DSLR fotoğraf makinesi.
- Gri kartın odak dışı bir çekimi (gri kartta görünür bazı bilgiler olsa bile, bu bulanıklaşır).
- RAW dosyasının kontrast eklemeden 8 bit gri tonlamalı bir görüntüye dönüştürülmesi. Ticari bir RAW dönüştürücüsünde tipik ayarları kullandım. Dönüştürücü varsayılan olarak gürültüyü azaltmaya çalışır. Ayrıca, sonucu 8 bitlik bir dosya olarak kaydediyoruz - özünde, ham sensör okumalarının en düşük dereceli bitlerini atıyoruz !
Sonuç ne oldu? Tarayıcıdan aldığımdan çok daha iyi görünüyor; gürültü daha az belirgindir ve görülecek hiçbir şey yoktur. Bununla birlikte, Gauss gürültüsü oradadır:
Ve entropi? Piksel başına 2.7 bit . Uygulamada dosya boyutu mu? 1M piksel için 344923 bayt. Gerçekten en iyi senaryoda, bazı hile ile sıkıştırma oranını 1: 3'e ittik.
Tabii ki bunların hepsinin TCS araştırmasıyla bir ilgisi yok, ancak gerçek dünyayla sayısallaştırılmış verilerin sıkıştırılmasını gerçekten sınırlayan şeyin akılda tutulması iyi olduğunu düşünüyorum . Daha ince sıkıştırma algoritmaları ve ham CPU gücü tasarımındaki ilerlemeler yardımcı olmayacaktır; tüm gürültüyü kayıpsız bir şekilde kaydetmek istiyorsanız, 1: 2'den daha iyisini yapamazsınız.