Jak działa kompresja JPEG
Prosty podział kroków stojących za wydajną kompresją obrazu
24. January 2025 przez Bianca Palmer
Czy kiedykolwiek zastanawiałeś się, jak Twój telefon lub aparat robi zdjęcie i w kilka chwil zapisuje je jako JPEG, mniejsze, szybsze i wciąż ostre? Za kulisami działa zaawansowany proces, który zmniejsza duże pliki graficzne do ułamka ich pierwotnego rozmiaru, jednocześnie zachowując wysoką jakość. Ale jak to tak naprawdę działa? W tym przewodniku przyjrzymy się szczegółom Kompresja JPEGi rozłożymy każdy krok na proste elementy, abyś mógł zrozumieć, jak działa ten proces kompresji obrazu.
Czym jest JPEG?
JPEG (skrót od Joint Photographic Experts Group) to jeden z najpopularniejszych formatów obrazu. Jest najczęściej wybierany do przechowywania zdjęć cyfrowych. Główną zaletą JPEG jest możliwość kompresji plików graficznych, dzięki czemu stają się one znacznie mniejsze bez zauważalnej utraty jakości.
Na przykład wysokiej jakości nieskompresowany obraz może mieć 46 MB. Po zapisaniu jako JPEG ten sam obraz może zmniejszyć się do zaledwie 4,1 MB. Jak udaje się to osiągnąć przy zachowaniu ostrości obrazu?
Odpowiedź kryje się w compression process, procesie kompresji, który wykorzystuje sposób działania naszego wzroku i usuwa zbędne dane.
Co robi JPEG?
W prostych słowach, JPEG analizuje obraz i usuwa elementy, których nasz wzrok łatwo nie dostrzega. Gdy kompresujesz obraz w formacie JPEG, możesz kontrolować, jak silna ma być kompresja. Regulując ustawienie „jakości”, decydujesz, ile miejsca chcesz zaoszczędzić. Gdy jakość spada ze 100% do 0%, rozmiar pliku również się zmniejsza.
Wraz ze wzrostem kompresji rozdzielczość obrazu pozostaje taka sama, ale mogą pojawić się pewne defekty lub „artefakty”, które wyglądają jak małe kwadraty i często są trudne do zauważenia bez powiększenia. Celem JPEG jest zminimalizowanie rozmiaru pliku bez pogorszenia wyglądu obrazu w oczach człowieka.
Etapy kompresji JPEG
Kompresja JPEG to nie tylko jeden proces; jest to seria kroków zaprojektowanych tak, aby zmniejszyć rozmiar obrazu. Oto pięć kluczowych etapów, które sprawiają, że JPEG jest tak wydajny.
Krok 1: Konwersja przestrzeni barw
Obrazy składają się z pikseli, a każdy piksel ma składowe czerwieni, zieleni i niebieskiego (RGB), które łączą się, aby tworzyć kolory. JPEG zaczyna od konwersji tych wartości RGB na inną przestrzeń barw:
- Luminancja (jasność): To jasność piksela, istotna dla ogólnego kontrastu obrazu.
- Chrominancja (kolor): To informacja o kolorze, obejmująca zarówno odcień, jak i nasycenie.
Ta konwersja wykorzystuje fakt, że ludzkie oko jest bardziej wrażliwe na jasność (luminancję) niż kolor (chrominancję). Oddzielając jasność od koloru, JPEG umożliwia ukierunkowaną redukcję danych w kolejnych krokach, zachowując przy tym najważniejsze szczegóły wizualne.
Na tym etapie nie traci się danych, ale przygotowuje obraz do efektywnej kompresji.
Krok 2: Zmniejszanie próbkowania chrominancji / Chroma Subsampling
Chroma Subsampling jest to technika stosowana po konwersji przestrzeni barw. Pamiętasz, jak wspomnieliśmy, że nasz wzrok słabiej dostrzega kolory (chrominancję) niż jasność (luminancję)?
JPEG wykorzystuje ten fakt, zmniejszając ilość danych o kolorze. Zmniejsza niebieski i czerwony kanał chrominancji przez uśrednianie ich w blokach po cztery piksele. Dzięki temu dane o kolorze są znacznie mniejsze, przy jednoczesnym zachowaniu luminancji (jasności) bez zmian. Na tym etapie obraz jest już znacząco skompresowany.
Krok 3: Dyskretna transformata kosinusowa (DCT)
Dyskretna transformata kosinusowa (DCT) to technika matematyczna służąca do przekształcania danych obrazu z dziedziny przestrzennej (gdzie obraz jest siatką pikseli) do dziedziny częstotliwości. Ten proces pomaga określić, które części obrazu zawierają najważniejsze informacje wizualne, a które można odrzucony.
DCT dzieli obraz na bloki 8x8 i przekształca każdy blok w zbiór wartości częstotliwości. Wyższe częstotliwości, które reprezentują szybkie zmiany wartości pikseli, jak krawędzie lub szum, są często mniej zauważalne dla ludzkiego oka i mogą zostać uproszczone lub usunięte.
Krok 4: Kwantyzacja
Po zastosowaniu DCT, uzyskane dane częstotliwości przechodzą przez kwantyzację. W tym kroku zakres wartości częstotliwości jest zmniejszany przez podzielenie ich przez zestaw stałych zwanych tablicą kwantyzacji. Proces w zasadzie zaokrągla wartości częstotliwości, aby je uprościć.
Wyższe częstotliwości są kwantyzowane silniej, co oznacza, że tracą więcej precyzji, ponieważ są mniej istotne dla ogólnej jakości obrazu. Ten czwarty krok zmniejsza ilość danych potrzebnych do reprezentacji obrazu, dzięki czemu plik jest mniejszy. Jednak zbyt silna kwantyzacja może prowadzić do widocznych artefaktów, takich jak blokowość lub rozmycie, zwłaszcza przy wyższych poziomach kompresji.
Krok 5: Kodowanie RLE i Huffmana
Po kwantyzacji dane nadal nie są wystarczająco zwarte do efektywnego przechowywania. W tym miejscu wchodzą w grę Run Length Encoding (RLE) i Kodowanie Huffmana są używane.
Najpierw RLE służy do uproszczenia długich sekwencji powtarzających się danych (jak zera) poprzez zapisywanie liczby powtórzeń zamiast każdej pojedynczej wartości. Następnie stosuje się kodowanie Huffmana, technikę, która zastępuje często występujące wartości krótszymi kodami bitowymi, dodatkowo zmniejszając rozmiar pliku.
These two metody kodowania współpracują ze sobą, aby drastycznie zmniejszyć rozmiar pliku bez poświęcania zbyt wiele z jakości obrazu.
Dodatkowe uwagi
Choć JPEG jest bardzo wydajnym formatem, warto wziąć pod uwagę kilka istotnych kwestii:
- Poziom kompresji: JPEG pozwala użytkownikom wybrać poziom kompresji, ale wyższa kompresja zmniejsza rozmiar pliku i może wprowadzać widoczne artefakty, takie jak rozmyte krawędzie lub pikselizacja. Dzieje się tak, gdy wartości w tablicy kwantyzacji są zbyt wysokie, co prowadzi do dodania większej liczby zer. Zmniejsza to rozmiar pliku, ale kosztem jakości obrazu.
- Utrata danych wysokoczęstotliwościowych: Kwantyzacja zmniejsza precyzję danych wysokoczęstotliwościowych (detali, takich jak ostre krawędzie), dlatego JPEG świetnie sprawdza się przy gładkich teksturach, ale może mieć problemy z ostrymi liniami i grafiką wektorową.
- Niezbyt dobry dla grafiki wektorowej: JPEG nie jest najlepszym wyborem do kompresowania grafiki wektorowej, ponieważ może powodować widoczne artefakty na granicach kształtów lub linii.
Mimo tych ograniczeń JPEG pozostaje najpopularniejszym formatem obrazu, częściowo dlatego, że jest stary, dobrze poznany i wolny od opłat licencyjnych. Jednak nowsze formaty, takie jak WebP lub HEIF oferują jeszcze lepsze współczynniki kompresji bez pogorszenia jakości, co czyni je atrakcyjnymi alternatywami w niektórych zastosowaniach.
Podsumowanie
Algorytm kompresji JPEG jest znaczącym osiągnięciem w zarządzaniu danymi graficznymi. Dzieląc obrazy na mniejsze bloki, stosując przekształcenia matematyczne i wykorzystując wydajne techniki kodowania, takie jak Run Length i kodowanie Huffmana, pozwala przechowywać obrazy wysokiej jakości w znacznie mniejszych plikach.
Chociaż JPEG ma pewne ograniczenia, szczególnie przy wysokich poziomach kompresji lub w przypadku grafiki wektorowej, jego powszechne zastosowanie i zdolność do zapewniania dobrych rezultatów dla zdjęć sprawiają, że pozostaje trwałym standardem.