Nie jestem pewien, czy ktoś jeszcze wyjaśnił, dlaczego magiczna liczba wydaje się dokładnie 1: 2, a nie na przykład 1: 1.1 lub 1:20.
Jednym z powodów jest to, że w wielu typowych przypadkach prawie połowa danych cyfrowych to szum , a szumu (z definicji) nie można skompresować.
Zrobiłem bardzo prosty eksperyment:
Wziąłem szarą kartę . Dla ludzkiego oka wygląda jak zwykły, neutralny kawałek szarego kartonu. W szczególności nie ma informacji .
A potem wziąłem normalny skaner - dokładnie taki rodzaj urządzenia, którego ludzie mogliby użyć do digitalizacji swoich zdjęć.
Przeskanowałem szarą kartę. (Właściwie zeskanowałem szarą kartę wraz z pocztówką. Pocztówka była tam, aby sprawdzić zdrowie psychiczne, aby upewnić się, że oprogramowanie skanera nie robi nic dziwnego, na przykład automatycznie dodaje kontrast, gdy widzi szarą kartę bez cech.)
Skadrowałem część szarej karty o wymiarach 1000 x 1000 pikseli i przekonwertowałem ją na skalę szarości (8 bitów na piksel).
To, co mamy teraz, powinno być dość dobrym przykładem tego, co dzieje się, gdy studiujesz pozbawioną cech część zeskanowanego czarno-białego zdjęcia , na przykład czyste niebo. Zasadniczo nie powinno być nic do zobaczenia.
Jednak przy większym powiększeniu wygląda to tak:
Nie ma wyraźnie widocznego wzoru, ale nie ma jednolitego szarego koloru. Część z nich jest najprawdopodobniej spowodowana niedoskonałościami szarej karty, ale przypuszczam, że większość z nich to po prostu szum wytwarzany przez skaner (szum termiczny w celi czujnikowej, wzmacniaczu, przetworniku A / D itp.). Wygląda prawie jak szum Gaussa; oto histogram (w skali logarytmicznej ):
Teraz, jeśli założymy, że każdy piksel ma wybrany odcień w tym rozkładzie, ile mamy entropii? Mój skrypt w Pythonie powiedział mi, że mamy aż 3,3 bity entropii na piksel . I to dużo hałasu.
Gdyby tak było naprawdę, oznaczałoby to, że niezależnie od używanego algorytmu kompresji mapa bitowa 1000 x 1000 pikseli zostałaby skompresowana, w najlepszym przypadku, do pliku 412500 bajtów. A co się dzieje w praktyce: mam plik PNG o wielkości 432018 bajtów, całkiem blisko.
Jeśli nieco nadmiernie uogólnimy, wydaje się, że bez względu na to, które czarno-białe zdjęcia skanuję za pomocą tego skanera, otrzymam sumę następujących rzeczy:
- „przydatne” informacje (jeśli istnieją),
- hałas, ok. 3 bity na piksel.
Teraz nawet jeśli algorytm kompresji wyciska użyteczne informacje na << 1 bit na piksel, nadal będziesz mieć aż 3 bity na piksel nieściśliwego szumu. Wersja nieskompresowana ma 8 bitów na piksel. Tak więc współczynnik kompresji będzie wynosił 1: 2, bez względu na to, co robisz.
Kolejny przykład z próbą znalezienia zbyt wyidealizowanych warunków:
- Nowoczesna lustrzanka cyfrowa, wykorzystująca najniższe ustawienie czułości (najmniej szumów).
- Ujęcie nieostrej szarej karty (nawet jeśli na szarej karcie były widoczne informacje, zostałyby zamazane).
- Konwersja pliku RAW na 8-bitowy obraz w skali szarości, bez dodawania kontrastu. Użyłem typowych ustawień w komercyjnym konwerterze RAW. Konwerter domyślnie próbuje zredukować hałas. Co więcej, zapisujemy wynik końcowy jako plik 8-bitowy - w zasadzie wyrzucamy bity najniższego rzędu odczytów czujnika!
A jaki był wynik końcowy? Wygląda znacznie lepiej niż to, co dostałem ze skanera; hałas jest mniej wyraźny i nic nie można zobaczyć. Niemniej hałas gaussowski jest obecny:
A entropia? 2,7 bitów na piksel . Rozmiar pliku w praktyce? 344923 bajtów dla 1M pikseli. W naprawdę najlepszym scenariuszu, z pewnym oszustwem, zwiększyliśmy współczynnik kompresji do 1: 3.
Oczywiście wszystko to nie ma nic wspólnego z badaniami TCS, ale myślę, że dobrze jest pamiętać, co naprawdę ogranicza kompresję danych cyfrowych w świecie rzeczywistym. Postępy w projektowaniu bardziej zaawansowanych algorytmów kompresji i surowej mocy procesora nie pomogą; jeśli chcesz bezstratnie zaoszczędzić cały hałas, nie możesz zrobić nic lepszego niż 1: 2.