If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Kompresja stratna

Algorytmy kompresji stratnej to techniki, które zmniejszają rozmiar pliku poprzez wyrzucenie mniej ważnych informacji.
Nikt nie lubi tracić informacji, ale niektóre rodzaje plików są tak duże, że po prostu nie ma wystarczającej ilości miejsca, aby przechowywać wszystkie oryginalne dane, a poza tym nie potrzebujemy wszystkich tych danych na początku. Tak jest często w przypadku zdjęć, filmów i nagrań audio; plików, które starają się uchwycić piękno złożoności świata, w którym żyjemy.
Komputery mogą uchwycić na zdjęciu niewiarygodną liczbę szczegółów, ale jak wiele z tych szczegółów może rzeczywiście dostrzec człowiek? Jak się okazuje, jest wiele szczegółów, które możemy usunąć. Algorytmy kompresji stratnej polegają na znalezieniu sprytnych sposobów na usunięcie szczegółów bez zauważania ich przez ludzi (zbyt wielkiego).
Na przykład, oto zdjęcie kota w kapeluszu:
Photo of a grey cat with green eyes sitting in a blue hat on a gray chair
Źródło zdjęcia: admiller, Flickr
To jest to samo zdjęcie, ale skompresowane do połowy rozmiaru:
Potrafisz wskazać różnicę? Na pierwszy rzut oka, nie jestem w stanie - i nawet gdybym mógł przy większym wysiłku, to i tak warto by było zaoszczędzić połowę miejsca na dysku.
Poznajmy kilka sprytnych sposobów usuwania szczegółów przez algorytmy stratnej kompresji w celu zmniejszenia rozmiaru pliku.

Zdjęcia: zachowaj jasność, uśredniaj kolor

Oko ludzkie lepiej dostrzega różnice w jasności niż różnice w kolorze. Algorytm kompresji może wykorzystać ten fakt, utrzymując jasność przy jednoczesnym zmniejszeniu ilości informacji o kolorze, co jest procesem znanym jako podpróbkowanie chrominancji.
Wypróbujmy to na zdjęciu kota w kapeluszu. Pierwszym krokiem jest oddzielenie informacji o jasności od chrominacji (koloru).
Oto wersja zdjęcia tylko z jasnością:
Oto wersja tylko z chrominacją:
To zdjęcie jest ciekawe, ponieważ kot i krzesło są dość bezbarwne - w wersji chrominacyjnej wyróżnia się niebieski kapelusz. (Może wszyscy powinniśmy mieć czarno-białe koty, aby zaoszczędzić miejsce na dysku? Hmm...)
Zróbmy zbliżenie na 8x2 blok chrominancyjny z lewego oka:
Każdy z tych pikseli ma nieco inne wartości chrominancyjne, a zatem jest ich łącznie 16. Możemy uśrednić każdy blok 2x2 i ustawić jego kolor na średnią, tak aby łącznie istniały tylko 4 wartości:
Wynik wygląda dość podobnie do oryginału, ale ma jedną czwartą informacji o oryginalnym kolorze. Jeśli zastosujemy to do całego obrazu, możemy zaoszczędzić sporo miejsca, nie wpływając znacząco na percepcję.
Podpróbkowanie chromatyczne jest procesem stosowanym w wielu algorytmach kompresji obrazu, w tym w popularnych formatach plików JPEG i MPEG.
Algorytmy te wykorzystują również proces zwany dyskretną transformacją kosinusoidalną (ang. Discrete Cosine Transform, DCT) w celu uproszczenia szczegółów w warstwie jasności. Jeśli chciałbyś dowiedzieć się więcej, oto ciekawy przewodnik.

Dźwięk: usuń niesłyszalne dźwięki

Ludzkie ucho posiada ograniczenia dotyczące tego, co może usłyszeć. Algorytmy kompresji dźwięku mogą analizować plik audio i odrzucać dźwięki, które znajdują się poza naszymi możliwościami słuchowymi - proces znany jako percepcyjne kodowanie dźwięku.
Jednym z ciekawych ograniczeń naszych uszu jest tzw. maskowanie czasowe. Chodzi o to, że nagły dźwięk może zamaskować (ukryć) inne dźwięki na pewien czas po jego pojawieniu się - a nawet trochę wcześniej!
Na przykład, wyobraź sobie piosenkę z głośnym uderzaniem bębna. Maska uderzeniowa brzmi przez około 20 milisekund, zanim to nastąpi i do 200 milisekund po tym czasie. Ten wykres ilustruje efekt maskowania:
A graph with time in milliseconds on the x axis, and loudness in decibels on the y axis. A drum beat happens from 140-200ms. The pre-masking effect is a tight curve leading up to the beat, from 100-140ms. The post-masking effect is a more gradual curve, from 200-350ms.
Obszary w szare paski pokazują okresy przed i po maskowaniu.
Komputer widzi te ukryte dźwięki w nagranym pliku audio, ale nasze uszy ich nie słyszą, więc algorytmy kompresji dźwięku mogą bezpiecznie pozbyć się tych informacji lub reprezentować je mniejszą ilością bitów.
Algorytmy kompresji mogą również wykorzystywać inne ograniczenia naszego naturalnego procesu słuchowego, takie jak limit wysokiej częstotliwości i jednoczesne maskowanie. Jeśli chciałbyś dowiedzieć się więcej, możesz zbadać fascynującą dziedzinę psychoakustyki.

Jakość kompresji

Kiedy używamy bezstratnych algorytmów kompresji, zawsze możemy zrekonstruować 100% oryginalnych danych. Stosując stratne algorytmy kompresji, tracimy kilka procent oryginalnych danych; może 5%, może 10%, może 70%. Ile tracimy? Możemy o tym zdecydować na podstawie naszego przypadku użycia danych.
Rozważ wcześniejsze zdjęcie kota w kapeluszu. Jeśli plan jest taki, aby umieścić to zdjęcie w prezentacji na temat kociej mody i wyświetlić je na dużym ekranie, prawdopodobnie chcemy zachować jak najwięcej szczegółów. W takim przypadku możemy albo użyć algorytmu kompresji bezstratnej (jak PNG), albo możemy użyć algorytmu kompresji stratnej (jak JPEG) i określić wysoką jakość (np. 100%). Aplikacje do edycji zdjęć często dają takie możliwości.
Screenshot of File settings from Export menu for Adobe Photoshop. For "Format" option, "JPG" is selected. For "Quality" option, slider is set to "100%".
Przy 100% jakości, zdjęcie 400x300 zajmuje 169 KB:
Photo of a gray cat with green eyes sitting in a blue hat on a gray couch.
Co jeśli chcemy wykorzystać to zdjęcie na stronie internetowej, a nasi docelowi użytkownicy strony znajdują się w innym kraju na łączach o niskiej przepustowości? Im mniejszy plik, tym szybsze pobieranie. Chcemy, aby zobaczyli to zdjęcie, ale w tym przypadku wysoka jakość nie jest tak ważna jak szybkość pobierania. Na pewno będziemy chcieli skorzystać z algorytmu kompresji stratnej i możemy określić niższą jakość podczas eksportu. Algorytm może zmieniać swoje wewnętrzne ustawienia, aby jeszcze bardziej uprościć szczegóły.
Screenshot of File settings from Export menu for Adobe Photoshop. For "Format" option, "JPG" is selected. For "Quality" option, slider is set to "60%".
Przy jakości 60%, zdjęcie zajmuje 48 KB:
Photo of a gray cat with green eyes sitting in a blue hat on a gray couch.
To nadal wygląda całkiem nieźle - zdecydowanie nadaje się do wykorzystania na stronie internetowej o niskiej przepustowości. Jak nisko możemy zejść? Oto zdjęcie w jakości 1%:
Photo of a gray cat with green eyes sitting in a blue hat on a gray couch.
Zdecydowanie nie jest idealny - zieleń oczu zdaje się rozmazywać w futrze, a w miejscach, gdzie kapelusz spotyka się z krzesłem, występują artefakty. Ale to także tylko 12 KB, mniej niż jedna dziesiąta oryginalnego rozmiaru. To imponujące, ile informacji możemy stracić, ale i tak przekazujemy tak wiele szczegółów.
Możemy również określić jakość algorytmów kompresji stratnej, które przekształcają pliki audio i wideo. Prawdopodobnie widziałeś w Internecie filmy o niskiej jakości, poddane wysokiej kompresji; filmy są najbardziej podatne na kompresję, ponieważ są tak duże na początku.
Za każdym razem, gdy stosujemy kompresję stratną, zawsze dokonujemy kompromisu pomiędzy jakością i rozmiarem, a do nas należy znalezienie ustawień, które najlepiej sprawdzą się w naszym przypadku użycia.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.