Współczynniki Kompresji
Jak mierzyć skuteczność kompresji i kompromisy w zakresie jakości.
Ewaluacja Kompresji: Trzy Filary Wydajności
Gdy już wiemy, że dane można kompresować, natychmiast pojawia się pytanie: jak dobrze je skompresowaliśmy? Świat kompresji jest pełen setek różnych algorytmów, z których każdy ma swoje mocne i słabe strony. Wybór "najlepszego" z nich nie jest prostym zadaniem, ponieważ prawie zawsze wiąże się z kompromisem. Aby podjąć świadomą decyzję, musimy oceniać algorytmy na podstawie zbioru obiektywnych i subiektywnych kryteriów.
Wydajność każdej metody kompresji można ocenić na podstawie trzech głównych czynników: jej skuteczności w redukcji rozmiaru, szybkości działania oraz jakości końcowego, zdekompresowanego wyniku. Podczas gdy niektóre kryteria łatwo jest zmierzyć za pomocą prostej matematyki, inne, zwłaszcza jakość, mogą być znacznie bardziej ulotne i zależne od ludzkiego obserwatora. W tej sekcji zbadamy kluczowe metryki używane do porównywania metod kompresji i zrozumiemy kluczowe kompromisy, w szczególności zależność między rozmiarem pliku a jakością percepcyjną.
Metryka 1: Pomiar Redukcji Rozmiaru
Najbardziej bezpośrednim i fundamentalnym celem kompresji jest zmniejszenie danych. Skuteczność tej redukcji mierzy się na kilka powiązanych sposobów, z których każdy oferuje inną perspektywę na wydajność algorytmu.
Współczynnik Kompresji
Najpowszechniejszą metryką do wyrażania wydajności kompresji jest . Odpowiada on bezpośrednio na pytanie: "Ile razy mniejszy jest skompresowany plik w porównaniu z oryginałem?"
Na przykład, wyobraźmy sobie plik z surowym obrazem o rozmiarze 100 megabajtów (MB). Po skompresowaniu go algorytmem bezstratnym, takim jak PNG, wynikowy plik ma 40 MB. Współczynnik kompresji wyniósłby:
Zazwyczaj jest to wyrażane jako stosunek, 2.5:1, i czytane jako "dwa i pół do jednego". Oznacza to, że oryginalne dane były 2.5 raza większe niż ich skompresowana forma. Jeśli skompresujemy ten sam obraz 100 MB za pomocą algorytmu stratnego, takiego jak JPEG, możemy osiągnąć rozmiar skompresowany wynoszący zaledwie 10 MB. Współczynnik kompresji wyniósłby wtedy:
Lub 10:1. Wyższy współczynnik kompresji zawsze oznacza większą redukcję rozmiaru pliku, a zatem wydajniejszą kompresję pod względem oszczędności miejsca.
Redukcja Procentowa
Innym intuicyjnym sposobem wyrażania wydajności jest procent zaoszczędzonego miejsca. Odpowiada to na pytanie: "O jaki procent zmniejszono oryginalny plik?"
Korzystając z naszego przykładu JPEG (100 MB do 10 MB):
Współczynnik kompresji 10:1 jest równoznaczny z redukcją rozmiaru o 90%. Obie metryki opisują ten sam wynik, ale z nieco innej perspektywy.
Średnia Liczba Bitów (Bity na Symbol)
Ta metryka łączy praktyczne wyniki kompresji z teoretycznymi granicami zdefiniowanymi przez Teorię Informacji. Zamiast patrzeć na cały plik, mierzy ona średnią liczbę bitów użytych do reprezentacji pojedynczej podstawowej jednostki, czyli symbolu, oryginalnych danych. "Symbol" może być znakiem tekstu, pikselem w obrazie lub próbką fali dźwiękowej.
Na przykład standardowy 24-bitowy obraz kolorowy używa 24 bitów na każdy piksel. Jeśli po kompresji bezstratnej PNG rozmiar pliku sugeruje, że średnio używanych jest tylko 14.5 bitów na piksel, to średnia liczba bitów wynosi 14.5 bita/piksel. Ta metryka jest niezwykle przydatna, ponieważ można ją bezpośrednio porównać z źródła danych, aby ocenić, jak blisko algorytm jest teoretycznie najlepszej możliwej kompresji.
Metryka 2: Szybkość i Zużycie Zasobów
Wysoce skuteczny algorytm kompresji jest mało praktyczny, jeśli kompresja jednego pliku zajmuje kilka dni. Szybkość działania jest krytycznym czynnikiem, zwłaszcza w zastosowaniach czasu rzeczywistego. Zazwyczaj bierzemy pod uwagę dwa rodzaje szybkości:
- Szybkość Kompresji: Jak szybko algorytm może wziąć nieskompresowany plik i wygenerować skompresowane wyjście. Jest to kluczowe w zastosowaniach takich jak transmisje wideo na żywo, gdzie dane muszą być kompresowane na bieżąco przed wysłaniem przez sieć, lub przy archiwizacji dużych ilości danych, gdzie liczy się czas.
- Szybkość Dekompresji: Jak szybko algorytm może wziąć skompresowany plik i go odtworzyć. W wielu scenariuszach jest to nawet ważniejsze niż szybkość kompresji. Plik może być skompresowany tylko raz, ale będzie dekompresowany za każdym razem, gdy użytkownik zechce go obejrzeć, odtworzyć lub użyć. Szybka dekompresja jest niezbędna dla płynnego doświadczenia użytkownika, czy to przy szybkim ładowaniu obrazów na stronie internetowej, czy przy odtwarzaniu filmu w wysokiej rozdzielczości bez zacinania.
Prawie zawsze istnieje kompromis między szybkością a współczynnikiem kompresji. Bardziej złożone algorytmy, takie jak bzip2 lub LZMA (używane w archiwach 7z), często mogą osiągnąć lepsze współczynniki kompresji niż prostsze, takie jak Deflate w gzip, ale są znacznie wolniejsze zarówno w kompresji, jak i dekompresji. Ponadto procesy te zużywają zasoby obliczeniowe, głównie czas procesora i pamięć systemową (RAM). Algorytm, który wymaga dużej ilości pamięci RAM, może nie być odpowiedni dla urządzeń o niskiej mocy, takich jak smartfony czy systemy wbudowane.
Metryka 3: Pomiar Jakości w Kompresji Stratnej
W przypadku kompresji bezstratnej metryka jakości jest binarna: wynik jest albo idealną repliką wejścia, albo nie. W przypadku kompresji stratnej pojęcie jakości staje się znacznie bardziej złożone i centralne dla oceny. Skoro celowo odrzucamy dane, kluczowe pytanie brzmi: "Jak duże szkody zostały wyrządzone i czy są one zauważalne?"
Subiektywna Ocena Jakości
Ostatecznym sędzią jakości skompresowanego obrazu lub pliku audio jest ludzki system zmysłów. opiera się na ocenie postrzeganej jakości przez ludzkich obserwatorów.
Najpowszechniejszą metodą jest test MOS (Mean Opinion Score). W kontrolowanym środowisku grupie osób testujących pokazuje się lub odtwarza skompresowane media obok oryginału. Następnie są oni proszeni o ocenę jakości wersji skompresowanej w skali, zwykle od 1 (źle) do 5 (doskonale). Oceny są następnie uśredniane, aby uzyskać pojedynczą wartość MOS.
Chociaż MOS jest uważany za "złoty standard", ponieważ bezpośrednio mierzy ludzką percepcję, ma on znaczące wady. Jest niezwykle kosztowny, czasochłonny, a wyniki mogą się różnić w zależności od obserwatorów i warunków testowych. Nie można go zautomatyzować w ramach procesu rozwoju oprogramowania.
Obiektywna Ocena Jakości
Aby przezwyciężyć ograniczenia testów subiektywnych, inżynierowie używają , która wykorzystuje formuły matematyczne do porównywania skompresowanego pliku z oryginałem.
Podstawową metryką jest Średni Błąd Kwadratowy (MSE), który oblicza średnią kwadratów różnic między oryginalnymi a skompresowanymi punktami danych (np. wartościami pikseli). Chociaż przydatny, MSE nie jest zbyt intuicyjny.
Najpowszechniej stosowaną metryką obiektywną dla obrazów i wideo jest Szczytowy Stosunek Sygnału do Szumu (PSNR). PSNR wywodzi się z MSE, ale jest przedstawiany na logarytmicznej skali decybelowej (dB), co lepiej odzwierciedla sposób, w jaki ludzie postrzegają zmiany jakości.
Tutaj to maksymalna możliwa wartość dla punktu danych (np. 255 dla 8-bitowego piksela). Wyższa wartość PSNR oznacza obraz o lepszej jakości, co oznacza, że "sygnał" (oryginalny obraz) jest znacznie silniejszy niż "szum" (błąd kompresji). PSNR powyżej 35-40 dB zazwyczaj oznacza, że skompresowany obraz jest wizualnie nie do odróżnienia od oryginału dla większości widzów. Jednak PSNR ma swoje ograniczenia; mierzy on bezwzględny błąd matematyczny i nie zawsze idealnie oddaje postrzeganą jakość wizualną. Algorytm może osiągnąć wysoki PSNR, ale generować artefakty, które są bardziej rażące dla ludzkiego oka niż w przypadku innego algorytmu z nieco niższym PSNR. Doprowadziło to do rozwoju bardziej zaawansowanych metryk, takich jak SSIM (Indeks Podobieństwa Strukturalnego), które próbują lepiej modelować ludzką percepcję.
Wizualna Cena Kompresji Stratnej:
Gdy kompresja stratna jest zbyt intensywna (tzn. wybrano bardzo wysoki współczynnik kompresji), odrzucone informacje stają się zauważalne dla użytkownika. Te dostrzegalne zniekształcenia są znane jako artefakty kompresji.
Eksplorator jakości JPEG
Przesuwaj suwak, aby zobaczyć jak mocna kwantyzacja zmniejsza plik i wprowadza znane artefakty.
Symulacja zmniejsza rozdzielczość sceny, podkreśla granice bloków 8x8 i dodaje lekkie dzwonienie jak w JPEG.
Krzywa przedstawia szacowany współczynnik kompresji dla typowego zdjęcia 12 MP zapisanego jako JPEG.
Przesun suwak, aby zobaczyc jak jakosc JPEG decyduje o wielkosci pliku i sile artefaktow zanim przejdziesz do listy najczestszych znieksztalcen.
Powszechne artefakty to:
- Blokowość: Najczęstszy artefakt w kompresji opartej na DCT (jak JPEG). Obraz wydaje się podzielony na siatkę bloków 8x8 pikseli, ponieważ kompresja każdego bloku jest obsługiwana niezależnie, a nieciągłości na krawędziach bloków stają się widoczne.
- Dzwonienie (lub szum komarów): Pojawia się jako widmowe aureole lub szum wokół ostrych krawędzi i konturów w obrazie. Jest spowodowane niedokładną reprezentacją składowych o wysokiej częstotliwości, które definiują te krawędzie.
- Rozmycie: Utrata drobnych szczegółów i tekstur, sprawiająca, że obraz wydaje się miękki lub nieostry. Jest to bezpośredni wynik agresywnej kwantyzacji współczynników o wysokiej częstotliwości.
- Pasmowanie (Posteryzacja): Gładkie gradienty kolorów są zastępowane wyraźnymi pasmami lub stopniami jednolitego koloru. Dzieje się tak, gdy liczba dostępnych kolorów jest drastycznie zredukowana. Jest to powszechny artefakt w plikach GIF ze zbyt małą liczbą kolorów w palecie.
Eksplorator palety GIF
Zmniejszaj liczbę dostępnych kolorów, aby zobaczyć pojawiające się pasma i posteryzacje w scenie testowej.
Piksele są kwantyzowane z użyciem 4x4 macierzy Bayera, podobnie jak w enkoderze GIF.
Dla dużych palet pokazujemy tylko pierwsze 24 odcienie.
Reguluj liczbe kolorow, aby zobaczyc jak redukcja palety prowadzi do pasmowania i utraty drobnych przejsc tonalnych.
Trylemat Kompresji: Nie Można Mieć Wszystkiego
Ostatecznie, ocena algorytmów kompresji polega na zrównoważeniu trójstronnego kompromisu między współczynnikiem kompresji, szybkością a jakością. Zasadniczo niemożliwe jest jednoczesne zmaksymalizowanie wszystkich trzech. Poprawa jednego niemal zawsze odbywa się kosztem co najmniej jednego z pozostałych. "Najlepszy" algorytm to ten, który znajduje odpowiednią równowagę dla danego zastosowania. Do celów archiwalnych można wybrać bardzo wolny algorytm, który zapewnia najwyższy możliwy współczynnik kompresji bezstratnej. W przypadku czatu wideo na żywo szybkość jest najważniejsza, więc osiąga się równowagę między akceptowalną jakością a na tyle niskim współczynnikiem kompresji, aby można było kodować w czasie rzeczywistym. W fotografii profesjonalnej najważniejsza jest jakość, a większe rozmiary plików są akceptowalną konsekwencją.