Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78...

51
Wst ˛ ep LZ77 LZ78 Kodowanie informacji Tomasz Jurdzi´ nski Wyklad 4: kodowanie slownikowe Jurdzi ´ nski Kodowanie informacji

Transcript of Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78...

Page 1: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Kodowanie informacji

Tomasz Jurdzinski

Wykład 4: kodowanie słownikowe

Jurdzinski Kodowanie informacji

Page 2: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Motywacja

Motywacje1 kodowane dane nie tworza ciagu wartosci niezaleznych, rozkład

prawdopodobienstwa zalezy od symboli poprzedzajacych symbolkodowany;

2 pewne sekwencje (słowa) czesto sie powtarzaja.

Słowniki statyczne:

korzystamy z ustalonego słownika;tekst kodujemy jako ciag słów ze słownika, kazde słowokodowane przez jego pozycje w słowniku.Co z elementami, których brak w słowniku: mozna np. umiescicw nim pojedyncze litery.

Jurdzinski Kodowanie informacji

Page 3: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Przykład: kodowanie digramowe

Przykład: kodowanie digramowe

słownik o ustalonej wielkosci składa sie ze wszystkich liter i tylupar liter, ile sie w nim zmiesci (wybieramy najbardziejprawdopodobne pary).przykład: dla słownika o rozmiarze 256 i alfabetu złozonego zdrukowalnych znaków ASCII, których jest 95, w słowniku moznaumiescic161 par.

Jurdzinski Kodowanie informacji

Page 4: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Słowniki dynamiczne

Dlaczego słowniki statyczne nieskuteczne

Wrazliwe na zmiane charakteru danych.

Na czym polega słownik dynamiczny

dostosowany do charakteru danych;tworzony w trakcie kodowania;zmienia sie w trakcie kodowania;dekoder moze go odtworzyc w oparciu o odkodowana czescdanych (nie trzeba słownika dołaczac do danych);

Jurdzinski Kodowanie informacji

Page 5: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77 czyli nietypowy słownik

LZ77Ziv i Lempel, 1977;Idea: słownikiem jest zakodowana/odkodowana czesc tekstu.Dokładniej:

dla zakodowanej czesci x1 . . .xn i niezakodowanej xn+1 . . .xmszukamy najdłuzszego podsłowa x1 . . .xn, które jest prefiksemxn+1 . . .xm, czyli dopasowania... i kodujemy ten prefiks poprzez wskazanie jego pozycji w x1 . . .xn.

Jurdzinski Kodowanie informacji

Page 6: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Jak kodujemy dopasowanie

Kodowanie dopasowania

jako para (j ,k), gdziej to odległosc miedzy poczatkiem kodowanej czesci (pozycjan +1) a poczatkiem dopasowaniak to długosc dopasowania.

Przykład

tekst: ABXAXABAXAXBBABzakodowane: ABXAXABA, niezakodowane: XAXBBABnajdłuzsze dopasowanie ABXAXABAXAXBBABkodowanie: (6,3).

Jurdzinski Kodowanie informacji

Page 7: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Problem 1

Co z brakiem dopasowania

tekst: ABXAXABADAXBBABzakodowane: ABXAXABA, niezakodowane: DAXBBABnajdłuzsze dopasowanie: brak!rozwiazanie: (0,0,kod(D)).

gdzie kod jest pewnym ustalonym kodem prefiksowym dla alfabetuwejsciowego.

Ogólnie

Kodujemy dopasowanie przy pomocy trójkiprzesunieciedługosc dopasowaniakod symbolu wystepujacego za dopasowaniem wniezakodowanej czesci tekstu.

Jurdzinski Kodowanie informacji

Page 8: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Kodowanie: przykłady

Sytuacja typowa

tekst: ABXAXABAXAXBBABzakodowane: ABXAXABA, niezakodowane: XAXBBABnajdłuzsze dopasowanie ABXAXABAXAXBBABkodowanie: (6,3,kod(B)).

Sytuacja nietypowa

tekst: ABXAXABADAXBBABzakodowane: ABXAXABA, niezakodowane: DAXBBABnajdłuzsze dopasowanie: brak!kodowanie: (0,0,kod(D)).

Jurdzinski Kodowanie informacji

Page 9: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Kodowanie: przykłady

Sytuacja nietypowa

Zaczynamy kodowanie, czyli czesc zakodowana jest pusta: pierwszalitere x1 kodujemy jako

(0,0,kod(x1))

czyli uznajemy, ze brakuje dopasowania.

Jurdzinski Kodowanie informacji

Page 10: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Kodowanie: sytuacje nietypowe

Dopasowanie wybiega poza zakodowana czesc

tekst: ADABRARRARRADzakodowane: ADABRAR, niezakodowane: RARRADnajdłuzsze dopasowanie “standardowo”: ADABRARRARRADstandardowe kodowanie: (3,3,kod(R))....mozna wydłuzyc do 5 znaków: (3,5,kod(D))

Jurdzinski Kodowanie informacji

Page 11: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Kodowanie ogólnie

Ogólnie

dla zakodowanej czesci x1 . . .xn i niezakodowanej xn+1 . . .xm

szukamy najdłuzszego podsłowa x1 . . .xm, które zaczyna sie wczesci x1 . . .xn i jest prefiksem xn+1 . . .xm

... i kodujemy ten prefiks poprzez wskazanie przesuniecia,dopasowania i znaku za dopasowaniem:

(p,d ,kod(xn+1+d ))

gdzie xn+1−p . . .xn+1−p+d−1 = xn+1 . . .xn+1+d−1.

Jurdzinski Kodowanie informacji

Page 12: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Problemy z kodowaniem

Problemy z kodowaniem trójek

wartosci przesuniecia z potencjalnie nieskonczonego zbioru;podobnie długosci dopasowania.

Efekty

nie mozemy stosowac kodów o stałej długosci;długi czas poszukiwania dopasowania!koniecznosc przechowywania (najlepiej) w pamieci operacyjnejcałej zakodowanej juz czesci tekstu.

Jurdzinski Kodowanie informacji

Page 13: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ 77

Jak na prawde wyglada LZ77

bufor słownikowy: sufiks juz zakodowanej czesci tekstu, oustalonym rozmiarze s;bufor kodowania: prefiks jeszcze nie zakodowanej czesci tekstu,o ustalonym rozmiarze t ;okno: bufor słownikowy + bufor kodowania; rozmiar okna s + t .

LZ77: jak kodujemy

dopasowan szukamy tylko w buforze słownikowymdopasowanie nie moze wybiegac poza bufor kodowania(wczesniejszy tekst):

(p,d ,kod(xn+1+d ))

gdzie xn+1−p . . .xn+1−p+d−1 = xn+1 . . .xn+1+d−1 orazn +1−p +d −1≤ n +1+ t−1 (t : rozmiar bufora kodowania).

Jurdzinski Kodowanie informacji

Page 14: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ 77: długosc reprezentacji trójek

Kodujemy trójke (p,d ,kod(a))

p ≤ s, a zatem mozna zapisac na dlogse bitach;d ≤ s + t , a zatem mozna zapisac na dlog(s +d)e bitach;

Jurdzinski Kodowanie informacji

Page 15: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77: ostateczny algorytm kodowania

Krok algorytmu LZ77

Znajdz najdłuzsze dopasowanie dla prefiksu bufora kodowania wbuforze słownikowym: szukamy w buforze słownikowym odkonca (zakładamy, ze bardziej prawdopodobne sa powtórzenia wmałej odległosci).Zakoduj dopasowanie przy pomocy trójki: (p,d ,C), gdzie:

p to przesuniecie (odległosc poczatku najlepszego dopasowaniaod bufora kodowania)d to długosc dopasowaniaC to kod symbolu wystepujacego za dopasowanym prefiksembufora kodowania

Przesun okno o d +1 pozycji w prawo.

Jurdzinski Kodowanie informacji

Page 16: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77: przykład kodowania

Przykład

bufor słownikowy: s = 4;bufor kodowania: t = 4;kodowany tekst: aaaabababaaab$

aaaabababaaab$ 〈0,0,a〉aaaabababaaab$ 〈1,3,b〉aaaabababaaab$ 〈2,5,a〉aaaabababaaab$ 〈4,2,$〉

zielony: bufor kodowania, czerwony: bufor słownikowy.

Jurdzinski Kodowanie informacji

Page 17: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77: dekodowanie

Dekodowanie

Dane: Ciag trójek (p1,d1,kod(c1)) . . .(pn,dn,kod(cn)).Odkodowany tekst x zainicjuj jako tekst pusty.Dla i = 1,2, . . . ,n

Przetwarzaj trójke (pi ,di ,kod(ci)):do odkodowanego tekstu x = x1 . . .xm dołacz fragmentxm−pi+1 . . .xm−pi+di ci :

x ← x1 . . .xm xm−pi+1 . . .xm−pi+di ci .

Jurdzinski Kodowanie informacji

Page 18: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77: implementacja

DekodowanieNie ma potrzeby wyszukiwania dopasowania: dekodowanie duzoprostsze.

Kodowanie

jak szybko mozna szukac dopasowan?

Jurdzinski Kodowanie informacji

Page 19: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Szukanie dopasowan

ZIP i GZIProzmiar okna: bufor słownikowy 32KB, bufor kodowania 258bajtów;reprezentacja “słownika” (czyli zawartosci bufora słownikowego):

tablica hashujaca pozycji poczatkowych dla ciagów 3-literowych;elementy tablicy to listy, w których na przodzie najpózniejsze wpisy(najblizsze dopasowania);wpisy spoza bufora słownikowego usuwane (“leniwie”, poodwiedzeniu ich).

krotki kodowane przy pomocy algorytmu Huffmana(adaptacyjnie, dla unikniecia 2 przebiegów);kodowanie w blokach.

Jurdzinski Kodowanie informacji

Page 20: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Szukanie dopasowan

Storer, Szymanski (w opisie LZSS)

bufor kodowania w kolejce cyklicznej;wszystkie t-elementowe podsłowa bufora słownikowego wdrzewie binarnym: szczegóły na cwiczeniach.

Jurdzinski Kodowanie informacji

Page 21: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

Modyfikacje LZ77

Stopien kompresji

LZSS: usuwamy trzeci element, dodajemy flage bitowainformujaca do kazdej trójki, czy było niezerowe dopasowanie:

jesli nie, kodujemy tylko jeden znak jego standardowym kodem),jesli tak, kodujeym wartosci przesuniecia i długosci;

kompresje powstajacych trójek (Huffman, kodowaniearytmetyczne,...) lub trzeciego elementu trójki (np. w ZIP, ARJ),zmiana rozmiaru buforów w trakcie (de)kodowania.

Jurdzinski Kodowanie informacji

Page 22: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ77: podsumowanie

Podsumowanieoparty na załozeniu: powtórzenia wystepuja w nieduzejodległosci;wiele zastosowan: zip, gzip, PNG, PKzip, arj, rar, ...kodowanie bardziej kosztowne od dekodowania, mozliwykompromis miedzy stopniem kompresji a szybkoscia algorytmu.

Jurdzinski Kodowanie informacji

Page 23: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: idea

LZ78: idea

Cel: odejsc od załozenia, ze powtórzenia wystepuja w małejodległosci.Słownik: poindeksowany zbiór słów.Zawartosc słownika: tworzona w oparciu ozakodowana/odkodowana czesc tekstu.Kodowanie: ciag indeksów odowiadajacych słowom ze słownika.

Jurdzinski Kodowanie informacji

Page 24: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78

LZ78: Algorytm 1

Słownik← zbiór pustyAz do zakodowania całego tekstu:

znajdz w- najdłuzszy prefiks niezakodowanej czesci tekstuwystepujacy w słowniku,symbol wystepujacy w niezakodowanej czesci tekstu za woznaczmy przez a, pozycje w w słowniku przez n,zakoduj wa za pomoca pary (n,kod(a))UWAGA: jesli pierwszy znak niezakodowanej czesci tekstu niewystepuje w słowniku, to n = 0dodaj do słownika słowo wa.

Jurdzinski Kodowanie informacji

Page 25: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A T A TZakodowane:Słownik: pusty

Jurdzinski Kodowanie informacji

Page 26: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A T A TZakodowane: (0, T)

Słownik: 1 T

Jurdzinski Kodowanie informacji

Page 27: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A TZakodowane: (0, T) (0, A)

Słownik: 1 T2 A

Jurdzinski Kodowanie informacji

Page 28: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A T A TZakodowane: (0, T) (0, A) (1,A)

Słownik:1 T2 A3 TA

Jurdzinski Kodowanie informacji

Page 29: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A T A TZakodowane: (0, T) (0, A) (1,A) (3,T)

Słownik:

1 T2 A3 TA4 TAT

Jurdzinski Kodowanie informacji

Page 30: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: przykład

Tekst: T A T A T A T A T A TZakodowane: (0, T) (0, A) (1,A) (3,T) (2,T)

Słownik:

1 T2 A3 TA4 TAT5 AT

Jurdzinski Kodowanie informacji

Page 31: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: dekodowanie

LZ78: Algorytm dekodowania

Słownik← zbiór pustyOdkodowujemy pary na podstawie zawartosci słownika:

dla kolejnej pary (n,kod(a)) na koniec odkodowanej czesci tekstudodajemy xa, gdzie x to element słownika na pozycji n;jesli słownik nie jest pełen: po odkodowaniu xa (x - elementsłownika, a - znak za nim wystepujacy), dodajemy xa do słownika.

LZ78: kodowanie a dekodowaniekodowanie: szukamy najdłuzszego dopasowania do pozycji wsłowniku;dekodowanie: bez szukania dopasowan, kopiujemy odpowiedniefragmenty.

Jurdzinski Kodowanie informacji

Page 32: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: stary problem...

Jak reprezentowac pary

pozycje w słowniku: jaki zakres? na ilu bitach?litery: ustalony kod stały.

LZ78: standardowe rozwiazanie

rozmiar słownika z góry ustalony;po wypełnieniu słownika, kodujemy kolejne dopasowania bezmodyfikacji słownika.

Jurdzinski Kodowanie informacji

Page 33: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZ78: inny stary problem...

Co z drugim elementem kazdej pary

potrzebny dla pierwszych wystapien liter w tekscie;zmniejsza stopien kompresji: czesc tekstu kodowana bezwykorzystania kontekstu!

Jurdzinski Kodowanie informacji

Page 34: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW, czyli optymalizujemy...

LZW: ideazamiast pary (pozycja, litera), kodujemy tylko pozycje w słownikuznalezionego w nim prefiksu niezakodowanej czesci tekstu w ,ALEna poczatku w słowniku umieszczamy wszystkie symbolealfabetu, bo ...w przeciwnym razie nie moglibysmy zaczac kodowania ikontynuowac w momencie napotkania symbolu, od którego niezaczyna sie zadna pozycja słownika.

LZW: jak rozszerzamy słownik

zgodnie z LZ78: do słownika dodajemy konkatenacje zakodowanegoelementu słownika w i wystepujacego za nim znaku a.

Jurdzinski Kodowanie informacji

Page 35: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: kodowanie

LZW: algorytm kodowania

Umiesc w słowniku wszystkie mozliwe ciagi jednoliterowe (czylilitery alfabetu).Dopóki niezakodowana czesc tekstu nie jest pusta:

znajdz w najdłuzszy prefiks niezakodowanej czesci tekstu, którywystepuje w słowniku;zakoduj w jako n, jego pozycje w słowniku;dodaj do słownika wa, gdzie a jest symbolem wystepujacym zaprefiksem w w niezakodowanej czesci tekstu.

Jurdzinski Kodowanie informacji

Page 36: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład kodowania

Tekst: T A T A T A T A TZakodowane:

Słownik: 1 T2 A

Jurdzinski Kodowanie informacji

Page 37: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład kodowania

Tekst: T A T A T A T A TZakodowane: 1

Słownik:1 T2 A3 TA

Jurdzinski Kodowanie informacji

Page 38: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład kodowania

Tekst: T A T A T A T A TZakodowane: 1 2

Słownik:

1 T2 A3 TA4 AT

Jurdzinski Kodowanie informacji

Page 39: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład kodowania

Tekst: T A T A T A TZakodowane: 1 2 3

Słownik:

1 T2 A3 TA4 AT5 TAT

Jurdzinski Kodowanie informacji

Page 40: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład kodowania

Tekst: T A T A T A TZakodowane: 1 2 3 5

Słownik:

1 T2 A3 TA4 AT5 TAT

Jurdzinski Kodowanie informacji

Page 41: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: problemy z dekodowaniem

LZW: dekoder wie za mało?W jednym kroku:

koder dodaje do słownika słowo wa i koduje wdekoder dekoduje w , ale nie zna jeszcze a !

Rozwiazanie

brakujaca litere odkodujemy w nastepnym kroku... jest nia pierwszalitera nastepnego odkodowanego fragmenty ... czyli pierwsza literapozycji słownika, która odkodujemy jako nastepna.

Jurdzinski Kodowanie informacji

Page 42: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład dekodowania

Tekst:Zakodowane: 1 2 3 5

Słownik: 1 T2 A

Jurdzinski Kodowanie informacji

Page 43: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład dekodowania

Tekst: TZakodowane: 1 2 3 5

Słownik:1 T2 A3 T ?

Jurdzinski Kodowanie informacji

Page 44: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład dekodowania

Tekst: T AZakodowane: 1 2 3 5

Słownik:

1 T2 A3 T A4 A ?

Jurdzinski Kodowanie informacji

Page 45: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład dekodowania

Tekst: T A T AZakodowane: 1 2 3 5

Słownik:

1 T2 A3 T A4 A T5 T A ?

Problem:odkodowujemy pozycje 5, która nie jest do konca znana!ale zgodnie z reguła, ta pozycja jest równa pierwszej pozycjiwłasnie odkodowanej pozycji słownika, czyli T;zatem pozycja 5 jest równa T A T!

Jurdzinski Kodowanie informacji

Page 46: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: przykład dekodowania

Tekst: T A T A T A TZakodowane: 1 2 3 5

Słownik:

1 T2 A3 T A4 A T5 T A T6 T A T ?

Jurdzinski Kodowanie informacji

Page 47: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: dekodowanie

LZW: algorytm dekodowania

Dane: ciag liczb p1, . . . ,pn.Algorytm:

Umieszczamy w słowniku S wszystkie mozliwe ciagijednoliterowe (czyli litery alfabetu).Dla i = 1,2, . . . ,n,

Jesli w poprzednim kroku do słownika dodany był element w?, tozamien go na wSpi [1] (czyli pierwsza litere ze słowa o numerze pi )Do tekstu odkodowanego dołacz na koniec element słownika zpozycji pi , czyli Spi

do słownika dodaj element Spi ?.

Jurdzinski Kodowanie informacji

Page 48: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: implementacja

Jak przyspieszyc wyszukiwanie

Wszystkie elementy słownika przechowujemy w strukturze trie.

Jurdzinski Kodowanie informacji

Page 49: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: zastosowania

compress - Unix

Modyfikacje LZW:rozmiar słownika zmienny (od 512 do 2max, gdzie max≤ 16),na poczatku rozmiar słownika to 512 (gdy słownik jest mniejszy,stosujemy krótsze słowa kodowe!)gdy słownik pełny i spada stopien kompresji - oczyszczaniesłownika.

Strategie oczyszczania słownika

usuniecie wszystkiego i tworzenie od nowa;usuwanie najdawniej uzytej pozycji;usuwanie pozycji najwczesniej wstawionej do słownika.

Jurdzinski Kodowanie informacji

Page 50: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: zastosowania

GIF=Graphics Interchange Format

Modyfikacje algorytmu LZW i format danych:pierwszy bajt pliku okresla b, minimalna liczbe bitów na piksel (wpostaci zakodowanej)poczatkowy rozmiar słownika to 2b+1, liczba 2b oznacza kodoczyszczajacy (wystapienie go oznacza operacje czyszczeniasłownika)rozmiar słownika podwajany po wypełnieniu, do rozmiaru 4096pozycji (mało!); potem słownik statycznyorganizacja danych: podział na bloki znaków (o długosci conajwyzej 255), blok zakonczony kodem konca bloku,poprzedzony informacja o jego długosci (mozliwosc pomijaniafragmentów, korekcja błedów).

Jurdzinski Kodowanie informacji

Page 51: Wstep˛ LZ77 LZ78tju/KodWiecz07/KodWiecz07-Wyklad04.pdf · 2007-03-21 · Wstep˛ LZ77 LZ78 Motywacja Motywacje 1 kodowane dane nie tworza˛ciagu˛ warto´sci niezale znych, rozkład˙

WstepLZ77LZ78

LZW: zastosowania

Kompresja danych przesyłanych przez modem - V.42 bis

Modyfikacje LZW:rezygnacja z uzywania pozycji słownika, które nie jest znana wmomencie dekodowania;słownik o dynamicznym rozmiarze (od 512 do 2048 lub wiecej)kody sterujace umozliwiajace operacje: przejscie do trybuprzezroczystego (bez kompresji -np. dla danychskompresowanych, losowych); oczyszczenie słownika;zwiekszenie rozmiaru słownika - oczyszczanie słownikastopniowe, zaczyna sie od “najstarszych” wpisów.

Jurdzinski Kodowanie informacji