Kompresja

Współczynniki Kompresji

Jak mierzyć skuteczność kompresji i kompromisy w zakresie jakości.

Ocena kompresji według trzech kryteriów

Skuteczność kompresji ocenia się względem danych wejściowych i celu zastosowania. Algorytmy różnią się sposobem wykorzystania powtórzeń, kosztem obliczeń oraz wpływem na jakość wyniku. Wybór metody wymaga zestawienia pomiarów obiektywnych z kryteriami wynikającymi z percepcji użytkownika.

Trzy podstawowe kryteria to redukcja rozmiaru, szybkość kodowania i dekodowania oraz jakość odtworzonego wyniku. Rozmiar i czas można mierzyć bezpośrednio, natomiast jakość percepcyjna wymaga ocen obserwatorów albo modelu jakości. Metryki opisują te wielkości i pozwalają porównać zależność między rozmiarem pliku a jakością. Pomiar powinien obejmować ten sam zbiór wejściowy, format wyjściowy i warunki sprzętowe. Wyniki z różnych plików mogą mieć inną wartość praktyczną, nawet gdy ich współczynniki są równe.

Wyniki warto zestawiać dla tego samego materiału wejściowego i ustawień kodera. Zmiana profilu może wpływać na rozmiar, czas oraz jakość.

Metryka 1. Redukcja rozmiaru

Jednym z celów kompresji jest zmniejszenie liczby bajtów potrzebnych do przechowania danych. Redukcję opisuje się kilkoma powiązanymi miarami, ponieważ iloraz rozmiarów i procent zaoszczędzonego miejsca przedstawiają ten sam wynik w innej skali.

Współczynnik Kompresji

Często stosowaną miarą jest . Iloraz pokazuje, ile razy rozmiar wejścia przewyższa rozmiar strumienia skompresowanego.

Wspoˊłczynnik Kompresji=Rozmiar NieskompresowanyRozmiar Skompresowany\text{Współczynnik Kompresji} = \frac{\text{Rozmiar Nieskompresowany}}{\text{Rozmiar Skompresowany}}

Załóżmy, że surowy obraz ma 100 megabajtów (MB). Po kompresji bezstratnej z użyciem PNG plik wynikowy ma 40 MB. Współczynnik kompresji wynosi:

100 MB40 MB=2.5\frac{100 \text{ MB}}{40 \text{ MB}} = 2.5

Wynik zapisuje się jako 2.5:1. Oznacza to, że wejście ma 2.5 raza większy rozmiar od strumienia skompresowanego. Ten sam obraz o rozmiarze 100 MB może po kompresji stratnej JPEG mieć przykładowo 10 MB. Wtedy współczynnik wynosi:

100 MB10 MB=10\frac{100 \text{ MB}}{10 \text{ MB}} = 10

Otrzymujemy 10:1. Wyższy współczynnik oznacza większą redukcję rozmiaru w tym konkretnym pomiarze. Sam iloraz nie opisuje czasu działania ani jakości obrazu. Przy porównaniu formatów trzeba uwzględnić nagłówki, metadane i ewentualny koszt odtworzenia. Dla bardzo małych plików narzut może zmienić współczynnik na niekorzyść.

Redukcja procentowa

Redukcja procentowa określa część początkowego rozmiaru, która nie musi być przechowywana po kompresji. Jest to wygodna miara porównawcza dla tego samego wejścia.

Redukcja Procentowa=(1−Rozmiar SkompresowanyRozmiar Nieskompresowany)×100%\text{Redukcja Procentowa} = \left(1 - \frac{\text{Rozmiar Skompresowany}}{\text{Rozmiar Nieskompresowany}}\right) \times 100\%

Dla przykładu JPEG o rozmiarach 100 MB i 10 MB:

(1−10 MB100 MB)×100%=(1−0.1)×100%=0.9×100%=90%\left(1 - \frac{10 \text{ MB}}{100 \text{ MB}}\right) \times 100\% = (1 - 0.1) \times 100\% = 0.9 \times 100\% = 90\%

Współczynnik 10:1 odpowiada redukcji rozmiaru o 90%. Obie metryki opisują ten sam wynik, lecz ułatwiają inne porównania.

Średnia liczba bitów na symbol

Ta miara łączy wynik pomiaru z granicą opisaną przez teorię informacji. Określa średnią liczbę bitów użytych do przedstawienia jednej jednostki danych, czyli symbolu. Symbolem może być znak tekstu, piksel obrazu albo próbka fali dźwiękowej.

Obraz RGB z 8 bitami na każdą składową ma 24 bity na piksel. Jeśli po bezstratnej kompresji PNG rozmiar pliku odpowiada średniej 14.5 bitów na piksel, taka jest zmierzona liczba 14.5 bitów na symbol przy tym modelu. Wynik można porównać z źródła, pod warunkiem użycia tego samego modelu symboli. Współczynnik zależy od tego, czy symbole oznaczają piksele, składowe koloru, próbki po filtracji, czy bajty pliku PNG. Porównanie ma sens wtedy, gdy jednostka i kolejność modelowania są zdefiniowane identycznie.

Metryka 2. Szybkość i zasoby

Wysoki współczynnik kompresji może mieć małą wartość użytkową, jeśli kodowanie jednego pliku trwa kilka dni. Czas działania ma szczególne znaczenie w transmisji i przetwarzaniu w czasie rzeczywistym. Rozróżnia się dwa podstawowe pomiary:

  • Szybkość kompresji: Czas potrzebny do przetworzenia wejścia i utworzenia strumienia skompresowanego. Parametr jest istotny przy transmisji wideo na żywo, gdy dane są kodowane przed wysłaniem, oraz przy archiwizacji dużych zbiorów.
  • Szybkość dekompresji: Czas potrzebny do odtworzenia danych ze strumienia skompresowanego. W usłudze, w której plik jest kodowany raz i odczytywany wielokrotnie, szybkość dekodowania może mieć większe znaczenie. Dotyczy to między innymi obrazów ładowanych na stronie oraz filmu wysokiej rozdzielczości.

Współczynnik kompresji i czas działania są zwykle powiązane z kosztem obliczeń. bzip2 oraz LZMA lub LZMA2 wybrane jako metody w archiwum 7z mogą uzyskać lepszy współczynnik niż Deflate w gzip przy ustawieniach nastawionych na rozmiar, lecz wybór ustawień wpływa na czas kompresji, dekompresji i użycie pamięci. Duży bufor RAM może ograniczać zastosowanie metody na smartfonie albo w systemie wbudowanym. W praktycznym benchmarku warto mierzyć oba kierunki osobno, ponieważ koder może wykorzystywać znacznie więcej pamięci niż dekoder. Dla transmisji istotny jest też czas oczekiwania na pierwszy fragment danych.

Metryka 3. Jakość kompresji stratnej

W kompresji bezstratnej można sprawdzić zgodność wyniku z wejściem. W kompresji stratnej trzeba określić rozmiar zniekształcenia i jego wpływ na odbiór. Ocena zależy od rodzaju danych, warunków obserwacji oraz celu zastosowania.

Subiektywna Ocena Jakości

polega na zbieraniu ocen postrzeganej jakości obrazu, dźwięku albo filmu od obserwatorów.

Jedną z metod jest test MOS (Mean Opinion Score). W kontrolowanej procedurze obserwatorzy oceniają materiał według określonej skali. W zależności od testu widzą wersję odniesienia, kilka wariantów albo sam materiał badany. Często stosuje się skalę od 1 (źle) do 5 (doskonale), a średnia ocen daje wartość MOS.

MOS bezpośrednio zbiera oceny percepcyjne, lecz wynik zależy od doboru obserwatorów, materiału i warunków testu. Badanie jest kosztowne i czasochłonne. Proces prezentacji można zautomatyzować, jednak samych ocen nie wyznacza się bez udziału obserwatorów. Wartość MOS jest średnią dla konkretnej procedury i grupy. Nie powinno się jej traktować jako stałej jakości dla każdego ekranu, odległości obserwacji i rodzaju treści.

Obiektywna ocena jakości

wykorzystuje formułę lub model do porównania sygnału oryginalnego z odtworzonym.

Podstawową metryką jest Średni błąd kwadratowy (MSE). Jest to średnia kwadratów różnic między punktami danych oryginalnych i odtworzonych, na przykład wartościami pikseli. MSE jest łatwy do obliczenia, lecz jego skala nie jest bezpośrednio percepcyjna.

Szczytowy stosunek sygnału do szumu (PSNR) wyznacza się z MSE i przedstawia w logarytmicznej skali decybelowej (dB). Skala ułatwia porównywanie błędów o różnej wielkości, lecz sama nie jest pełnym modelem percepcji.

PSNR=10⋅log⁡10(MAXI2MSE)PSNR = 10 \cdot \log_{10}\left(\frac{MAX_I^2}{MSE}\right)

MAXIMAX_I oznacza maksymalną możliwą wartość punktu danych, na przykład 255 dla piksela 8-bitowego. Wyższa wartość PSNR oznacza mniejszy błąd MSE przy tym samym zakresie sygnału. Widoczność artefaktu zależy od zakresu sygnału, treści i warunków obserwacji, dlatego pojedynczy próg PSNR nie wyznacza jej uniwersalnie. PSNR mierzy błąd matematyczny i może słabo odwzorować artefakty ważne dla obserwatora. Z tego powodu stosuje się także SSIM (Indeks podobieństwa strukturalnego), który porównuje lokalną luminancję, kontrast i strukturę. Obie metryki wymagają zgodnego wyrównania obrazu oryginalnego i odtworzonego. Zmiana rozdzielczości, przestrzeni barw albo zakresu próbek może zmienić wynik bez zmiany subiektywnej oceny.

Artefakty kompresji stratnej

Przy silnej kompresji stratnej utracone składowe mogą stać się widoczne albo słyszalne. Takie zniekształcenia określa się jako .

Przesuń suwak, aby zobaczyć, jak ustawienie jakości JPEG wpływa na rozmiar pliku i widoczność artefaktów.

Do często spotykanych artefaktów należą:

  • 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 zredukowana. Jest to powszechny artefakt w plikach GIF ze zbyt małą liczbą kolorów w palecie.

Reguluj liczbę kolorów, aby zobaczyć, jak redukcja palety prowadzi do pasmowania i utraty drobnych przejść tonalnych.

Kompromis między rozmiarem, czasem i jakością

Ocena algorytmu obejmuje współczynnik kompresji, szybkość oraz jakość. Zwiększenie poziomu kompresji może zmniejszyć plik, lecz zwykle zmienia czas obliczeń albo jakość. Archiwizacja może preferować wolne kodowanie i wysoki współczynnik bezstratny. Czat wideo wymaga krótkiego opóźnienia, stabilnego dekodowania i jakości wystarczającej dla rozmowy. Fotografia profesjonalna może przyjąć większy plik w zamian za zachowanie szczegółów. W benchmarku trzeba zapisać rozmiar wejścia i wyjścia, czas ścienny, czas CPU oraz użycie pamięci. Dla obrazu i wideo należy podać rozdzielczość, przestrzeń barw i sposób wyrównania próbek. Takie dane umożliwiają powtórzenie pomiaru i wyjaśniają różnice między implementacjami. Dla danych praktycznie nieściśliwych wynik może mieć współczynnik poniżej 1, gdy nagłówki i znaczniki zwiększają rozmiar. Dla małych danych taki przypadek jest częsty, dlatego sam współczynnik nie powinien decydować o wyborze formatu. W aplikacji sieciowej liczy się również opóźnienie pierwszego fragmentu.

Powiązane artykuły