Podręcznik

2. Kompresja i porządkowanie danych

2.4. Możliwości udoskonaleń

Możliwe jest bardziej ogólne podejście do zagadnień informacji, kompresji, granic efektywności kodowania, indeksowania. Informacja definiowana jest wtedy jako w dużym stopniu odwołanie do ogólnej wiedzy odbiorcy, pojęcie nadmiarowości konstruowane jest nie jako przewidywalna statystyczna zależność danych w obrębie przekazywanego zbioru (strumienia), ale w znacznie szerszej skali - jako nawiązanie do zasobów wiedzy i środków dostępnych odbiorcy, do realnej semantyki danych. Takie podejście pozwala opracować doskonalsze narzędzia kompresji, czego przykładem są próby optymalizacji kompresji obrazów w ramach standardu JPEG2000.

Zasadniczą cechą współczesnych metod kompresji jest elastyczność, zdolność doboru ilości, jakości i postaci informacji wynikowej (wyjściowej) w zależności od definiowanych potrzeb odbiorcy. Opracowanie skutecznego algorytmu kodowania wymaga zwykle optymalizacji wielokryterialnej, wykorzystania mechanizmów adaptacji do lokalnych cech sygnału (zbioru danych), a czasami nawet interakcji zmieniających procedurę kompresji w czasie rzeczywistym.

Dla obrazów stosuje się szereg metod eliminacji nadmiarowości przestrzennej poprzez dekompozycję obrazu do postaci, która jest bardziej podatna na kodowanie binarne. Są wśród nich metody predykcyjne, dekompozycji falkowej i pasmowej, blokowej, skanujące piksele według określonego porządku, dzielące wartości pikseli obrazu na szereg map bitowych (bit plane encoding) z największą korelacją wśród najstarszych bitów i inne. 

Ważną grupę stanowią algorytmy predykcyjne: dana (tj. wartość piksela) przeznaczona aktualnie do zakodowania jest przewidywana na podstawie danych z sąsiedztwa (najczęściej najbliższych w przestrzeni obrazu, które  są potencjalnie najbardziej z nią skorelowane), które pojawiły się już wcześniej w kodowanej sekwencji (warunek przyczynowości, konieczny do rekonstrukcji obrazu źródłowego podczas dekodowania). Kodowana jest jedynie niedokładność tego przewidywania. Sposób kodowania predykcyjnego prowadzący do praktycznych implementacji nazywany jest DPCM (differential pulse code modulation). Początki metod DPCM związane są z pracami prowadzonymi w Bell Laboratories. Poważnym ograniczeniem ich efektywności jest niedoskonałość predykcji powodowana m.in. brakiem możliwości ukształtowania kontekstu (sąsiedztwa) predykcji otaczającego kodowany piksel z każdej strony (konieczność zachowania warunku przyczynowości).

Modyfikacją metod predykcyjnych są algorytmy interpolacyjne HINT (Hierarchical Interpolation), w których zastosowano kodowanie kolejnych wersji obrazu o rosnącej rozdzielczości. Dzięki temu do predykcji wykorzystane są wartości pikseli otaczające dany piksel z każdej strony, jednak nie zawsze leżące w najbliższej odległości. Otrzymane w wyniku predykcji obrazy różnicowe są kodowane z wykorzystaniem metod entropijnych (na podstawie probabilistycznych modeli źródeł informacji).

Nowsze rozwiązania zawierają także rozbudowaną fazę modelowania statystycznych zależności danych w określonym kontekście (np. metoda CALIC), które bezpośrednio sterują pracą koderów entropijnych. Wykorzystuje się także adaptacyjne kodery binarne, dostosowane do charakterystyki danych za pomocą alfabetu binarnego, w tym binarne kodery arytmetyczne, metody kodowania serii jedynek, kody Golomba. 

W grupie najbardziej efektywnych bezstratnych metod kodowania obrazów wymienić należy przede wszystkim wspomniany koder CALIC oraz standardy JPEG-LS, JPEG2000, JBIG , JBIG2 oraz AVC z MPEG-4.

Podsumowując, zbiór stosowanych rozwiązań fazy modelowania można podzielić na cztery zasadnicze grupy:

  • z prostym modelem statycznym w metodach: RLE dla serii bitów (np. koder Z) i bajtów (format PCX), Golomba, Huffmana i w kodowaniu arytmetycznym do kodowania reszt predykcyjnych;
  • z rozbudowanym modelem probabilistycznym wyższych rzędów (np. w koderach arytmetycznych map bitowych),
  • ze słownikiem (metody słownikowe np. w formatach GIF i PNG);
  • ze wstępną dekompozycją danych, gdy tworzona jest pośrednia reprezentacja: metody predykcyjne i interpolacyjne, kodowanie map bitowych, skanowanie danych według określonego porządku (np. po krzywej Peano), całkowitoliczbowe kodowanie transformacyjne (np. w AVC), całkowitoliczbowe  dekompozycje falkowe i pasmowe (np. w JPEG2000).

Faza binarnego kodowania jest najczęściej realizowana w trzech wariantach: 

  • przypisanie słów kodowych pojedynczym symbolom alfabetu źródła (metody Huffmana i Shannona-Fano) - kody o zmiennej długości słów;
  • przypisanie słów kodowych (często o stałej długości) ciągom symboli wejściowych o zmiennej długości (RLE, kodowanie słownikowe); modyfikacją tych metod są adaptacyjne kodery słownikowe o zmiennym rozmiarze słownika (a więc także indeksów), jak również RLE z kodem Golomba, gdzie różnej długości ciągom symboli odpowiadają sekwencje (słowa) o zmiennej liczbie bitów;
  • utworzenie sekwencji kodowej w postaci jednego binarnego słowa kodowego wyznaczanego sukcesywnie dla całego ciągu wejściowego (kodowanie arytmetyczne).