Główna zawartość
Kurs: Podstawy informatyki - program rozszerzony > Rozdział 1
Lekcja 7: Kompresja stratnaKompresja 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:
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:
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.
Przy 100% jakości, zdjęcie 400x300 zajmuje 169 KB:
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.
Przy jakości 60%, zdjęcie zajmuje 48 KB:
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%:
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