Blog (57)
Komentarze (10k)
Recenzje (1)

Mit kompresji stratnej

@BerionMit kompresji stratnej01.08.2017 03:12

Określenie „kompresja stratna” uważam za toksyczne, szkodliwe i siejące zamęt w głowach nie tylko tzw. niedzielnych użytkowników komputera, ale nawet ludzi którzy zawodowo zajmują się grafiką komputerową, cyfrową archeologią, programistów etc. Dlaczego to jest mit, dlaczego powoduje problemy w interpretacji i czemu należałoby porzucić ten termin, postaram się pokazać na kilku przykładach.

Czym w ogóle jest kompresja?

Jest to zmniejszenie rozmiaru pliku przez skrócenie powtarzalnych sekwencji danych. Choć brzmi to trochę enigmatycznie, jest bardzo łatwe do zrozumienia. Z lekcji matematyki na pewno pamiętasz, że działania można upraszczać. W podobny sposób postępuje się z danymi kiedy kompresor natrafia np. na ciąg samych zer. Na przykład jeśli plik zawiera takie oto dane (przedstawiając w jedynym czytelnym dla człowieka systemie szesnastkowym):

Można je ścisnąć do postaci, w której pierwsze siedem bajtów jest ciągiem liczb naturalnych „od do”, a ostatnie dziesięć samymi zerami, używając stosownych znaczników dla danego formatu kompresji, które to z kolei są informacją dla dekompresora w jaki sposób przywrócić pierwotną formę danych sprzed kompresji. Oczywiście to ogromne uproszczenie całego procesu ponieważ algorytmy są znacznie bardziej skomplikowane niż to co opisałem. Istotne jest abyś wiedział jak to mniej więcej działa (dociekliwych odsyłam do lektury np. o algorytmach LZ, rodziny która obecnie dominuje w IT).

Spostrzegawczy złośliwy zwróci uwagę na fakt, że powyższy opis mieści się w definicji „kompresji bezstratnej”. I wszystko się zgadza poza semantyką. Kompresja nie może być stratna bo jaki sens byłby np. w pakowaniu plików, kiedy po rozpakowaniu otrzymywałoby się uszkodzone, niepełne dane? Dosłownie żaden.

Kompresja może zachodzić:

  1. Wewnątrz kontenera z tzw. wirtualnym systemem plików, kompresując wszystkie lub tylko wybrane jego elementy. Tak kompresuje np. WinRAR, 7-ZIP i prawdopodobnie wszystkie pozostałe archiwizery
  2. Wewnątrz kontenera bez VFS, ale z jasno określoną strukturą (która może być choćby tylko samą kolejnością i poprzedzającymi kolejne elementy nagłówkami). Takimi kontenerami są np. TIFF z kompresją LZW lub PDF z kompresją ZIP (Deflate), a także mnóstwo kontenerów zaprojektowanych przez twórców gier.
  3. Wewnątrz formatu pliku, czyli najczęściej wszystko poza samym nagłówkiem. Tak kompresują głównie programy graficzne w formatach gdzie ta kompresja faktycznie występuje np. Paint zapisujący do PNG, Gimp zapisujący do TGA z kompresją RLE etc.
  4. Na poziomie systemu plików, czyli przewidzianą w specyfikacji i wykorzystywaną np. na żądanie użytkownika. Przykłady: NTFS i kompresja danych LZNT1, ZFS i kompresja np. LZ4, BTRFS i np. LZO.
  5. Na poziomie abstraktów systemu plików, czyli kompresując cały plik np. za pomocą programów gzip, bzip2 etc.

Kompresja w formatach graficznych

Z pewnością dla wszystkich synonimem „kompresji stratnej” jest JPEG. Ten rewolucyjny i rewelacyjny jak na swoje czasy format, do dziś nie daję się wyprzeć i jest obsługiwany przez niemal wszystkie urządzenia multimedialne. Od odtwarzaczy DVD pod telewizorem, przez telefony, tablety, a nawet konsole do gier.

Każda szanująca się aplikacja umożliwiająca zapis pliku graficznego do *.jpg, pozwala m.in. na wybór, no właśnie… stopnia kompresji (najczęściej za pomocą suwaka i na szczęście już coraz rzadziej tak nazwana) lub jeśli format docelowy obsługuje kilka algorytmów to i JPG znajdzie się na liście. Dzięki takiej niedbałości i uproszeniom, „kompresja stratna” już chyba na zawsze weszła do słownika każdego użytkownika komputera. I o ile kiedyś miało to nawet jako taki sens (sprzęt był za słaby aby w czasie rzeczywistym bez zauważalnych opóźnień „rozpakować” plik, więc kompresji nie używało się nigdzie na desktopach poza archiwizacją danych), tak dzisiaj powoduje cały szereg nieporozumień.

Konwersja to nie kompresja

Kiedy np. profesjonalny fotograf otwiera swój plik z negatywem, dokonuje poprawek i retuszu by ostatecznie zapisać dla klienta zdjęcie w JPG, to dokonuje konwersji do tegoż właśnie formatu. Nic nie ulega tam kompresji, i nie dość że dochodzi do redukcji wielu informacji o zdjęciu, które zostają bezpowrotnie utracone, to na dodatek zostaje ono całkowicie przetworzone.

Na poniższym, specjalnie trzykrotnie powiększonym (metodą najbliższy sąsiad) przykładzie świetnie to widać. Obraz po prawej został całkowicie zmodyfikowany (widoczne zniekształcenia i podział na kwadraty), można nawet powiedzieć że zniszczony i nie będzie już możliwy do odtworzenia ten pierwotny z lewej strony.

Oczywiście powyższy przykład został specjalnie spreparowany aby możliwie jak najwyraźniej pokazać wynik konwersji. Przy zapisie do JPEG na możliwie najlepszym współczynniku zachowania jakości, przy tak dużym zagęszczeniu pikseli na ekranach telefonów czy nawet przy wielokrotnie wyższych rozdzielczościach wykonanych zdjęć w stosunku do rozdzielczości np. telewizora, który będzie musiał je przeskalować, „wojna mrówek” i „kwadratyzacja” ulegają zatarciu, przez co na pierwszy rzut oka stają się kompletnie niezauważalne. Na tym zresztą polega fenomen JPEG bo przy niewielkiej wadze pliku, w dalszym ciągu obraz jest zadowalający dla większości użytkowników.

Redukcja kolorów to nie kompresja

Zapisując obraz wykorzystujący możliwie pełną paletę kolorów (np. 24bit) do obrazu wykorzystującego np. 256 kolorów (8bit), z oczywistych względów bezpowrotnie traci się większość z nich. To również jest konwersja i tak jak w przypadku JPG, cały obraz jest przetwarzany. Aplikacja oblicza zakres kolorów, który będzie możliwie najwierniejszy oryginałowi, a przy tym mieścił się w ustalonej, ograniczonej palecie barw, dla każdego piksela z osobna i zależnie od użytych algorytmów różne programy różnie sobie z tym radzą (z moich doświadczeń najlepiej OPTPIX Image Studio używany głównie podczas tworzenia gier, a sławny Photoshop co najwyżej średnio). Skoro występuje tutaj redukcja kolorów to i redukcja wagi pliku, ale przecież nie przez kompresję, która tutaj nie zachodzi.

Kompresja bitmapy rzeczywistą kompresją

Dawno, dawno temu, pliki graficzne zawierały wyłącznie same dane o wyświetlanych na ekranie pikselach. Pozbawione były jakichkolwiek meta danych, palety kolorów znajdowały się na zewnątrz i były współdzielone z innymi bitmapami, a wszystko to przez ograniczenia sprzętowe (pojemność nośników, przepustowość). Współczesne pliki graficzne posiadają nagłówek opisujący format, paletę lub nawet kilka palet kolorów, czasami stopkę, zaś na środku oczywiście dane bitmapy.

I to właśnie one podlegają kompresji w obrębie danego formatu jak jest w przypadku znanego i coraz popularniejszego PNG. Algorytm (lub algorytmy) są ściśle określone w specyfikacji formatu i każdy program wykonuje ją niezauważalnie dla użytkownika (czasami programy pozwalają na wybór dodatkowych parametrów dotyczących kompresji). Z wyliczanki z pierwszego akapitu jest to dokładnie przypadek numer 3 i jedyny kiedy można mówić o kompresji podczas konwersji, redukcji kolorów i/lub zapisu do innego formatu.

Kompresja w formatach wideo

Analogicznie jak w przypadku plików graficznych (z których przecież składa się każdy film). Struktura każdej klatki jest podobna i wszystko co znajdziesz wyżej, także odnosi się do filmów (m.in. tym właśnie zajmują się tzw. kodeki).

Kompresja w formatach dźwiękowych

W przypadku np. MP3 ponownie „kompresja stratna” zaciemnia znaczenie konwersji z jednego formatu w inny, w tym przypadku uboższy (niższy bitrate, przycięte częstotliwości etc. czyli tzw. downsampling).

Na poniższym przykładzie spektrogramy tego samego utworu, mniej więcej w tym samym momencie, górny przedstawia MP3, dolny FLAC.

Prawdziwy proces kompresji dokonuje się przy zapisie np. do formatu FLAC, w którym „fala” przeżuwana jest przez Deflate, zmniejszając rozmiar bez straty na jakości, a więc możliwa jest także dekompresja do pierwotnej formy.

Podsumowanie

Jak widzisz, wszędzie mechanizm jest ten sam. Tam gdzie zachodzi „kompresja bezstratna”, rzeczywiście zachodzi kompresja, a tam gdzie „kompresja stratna” cały szereg operacji, który z kompresowaniem czegokolwiek nie ma nic wspólnego. Wielka szkoda, że tak wielka zbrodnia na definicjach wdarła się do podręczników i prac. A skoro dotrwałeś do końca mojego wywodu, to mam nadzieję że od teraz nie tylko dostrzegasz różnicę pomiędzy kompresją, a konwersją, ale także rozumiesz że z matematycznego punktu widzenia kompresja stratna nie istnieje. Apeluję więc o uświadamianie nieuświadomionych by już nikt nigdy nie zadał druzgocącego pytania: „czy jeśli spakuję doktorat.doc WinRARem to stracę jakość?”

Jeśli podobał ci się poradnik i chciałbyś od czasu do czasu przeczytać coś podobnego, nie zapomnij zagłosować w konkursie blogowym na początku każdego miesiąca. Dziękuję.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.