Kodowanie predykcyjne

Podobne dokumenty
Kodowanie predykcyjne

Kody Tunstalla. Kodowanie arytmetyczne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Kodowanie informacji

Algorytmy kodowania predykcyjnego

Kompresja bezstratna. Entropia. Kod Huffmana

Nierówność Krafta-McMillana, Kodowanie Huffmana

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

AKD Metody słownikowe

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Podstawowe pojęcia. Teoria informacji

Cyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając

Wybrane metody kompresji obrazów

Transformaty. Kodowanie transformujace

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Kodowanie informacji

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

Instrukcje dla zawodników

teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

Fundamentals of Data Compression

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Tematy projektów Algorytmy Kompresji Danych (2006)

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Temat: Algorytm kompresji plików metodą Huffmana

Przetwarzanie i transmisja danych multimedialnych. Wykład 3 Kodowanie Shannona Fano i Huffmana. Przemysław Sękalski.

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Algorytmy kodowania entropijnego

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Klasyfikacja metod kompresji

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Metody kompresji i przechowywania obrazów

dr inż. Piotr Odya Wprowadzenie

Klasyfikacja metod kompresji

Przetwarzanie obrazu cyfrowego

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Krótki przegląd pierwszych standardów kompresji obrazów

Przetwarzanie i transmisja danych multimedialnych. Wykład 2 Podstawy kompresji. Przemysław Sękalski.

Kodowanie Shannona-Fano

Kodowanie transformujace. Kompresja danych. Tomasz Jurdziński. Wykład 11: Transformaty i JPEG

Teoria informacji i kodowania Ćwiczenia

Podstawy kompresji danych

Kompresja Stratna i Bezstratna Przegląd Najważniejszych Formatów Graficznych

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

Kompresja video (MPEG)

Algorytmy i struktury danych. wykład 8

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

2 Kryptografia: algorytmy symetryczne

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

POB Odpowiedzi na pytania

Kody splotowe (konwolucyjne)

Algorytmy i Struktury Danych

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Teoria Informacji - wykład. Kodowanie wiadomości

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 1.

Programowanie Współbieżne. Algorytmy

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Algorytmy i struktury danych

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Kompresja sekwencji obrazów - algorytm MPEG-2

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Przetwarzanie i transmisja danych multimedialnych. Wykład 6 Metody predykcyjne. Przemysław Sękalski.

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Programowanie w VB Proste algorytmy sortowania

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Definicja. Jeśli. wtedy

Grafika rastrowa (bitmapa)-

Kompresja danych DKDA (7)

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Joint Photographic Experts Group

Transkrypt:

Kodowanie i kompresja informacji - Wykład 5 22 marca 2010

Motywacje W tekstach naturalnych symbole bardzo często zależa od siebie.

Motywacje W tekstach naturalnych symbole bardzo często zależa od siebie. W językach naturalnych na podstawie już przeczytanych symboli można z bardzo dużym prawdopodobieństwem przewidzieć następny symbol (mocna zależność od historii).

Motywacje W tekstach naturalnych symbole bardzo często zależa od siebie. W językach naturalnych na podstawie już przeczytanych symboli można z bardzo dużym prawdopodobieństwem przewidzieć następny symbol (mocna zależność od historii). Często zamiast kompresować ciag wejściowy kompresujemy różnicę miedzy tym ciagiem a ciagiem generowanym przez pewien zgadywacz.

Przykład wykorzystania kontekstu A B C A 0.1 0.3 0.6 B 0.6 0.1 0.3 C 0.3 0.6 0.1 Łatwo sprawdzić, że P(A) = P(B) = P(C) = 1, stad 3 normalny kod Huffmana będzie miał średnia długość 5. 3

Przykład wykorzystania kontekstu A B C A 0.1 0.3 0.6 B 0.6 0.1 0.3 C 0.3 0.6 0.1 Łatwo sprawdzić, że P(A) = P(B) = P(C) = 1, stad 3 normalny kod Huffmana będzie miał średnia długość 5. 3 Co będzie jeśli wykorzystamy informację o tym po jakiej literze występuje kolejna, czyli stworzymy trzy kodowania Huffmana, kolejno dla liter występujacych po A, B, C?

Przykład wykorzystania kontekstu A B C A 0.1 0.3 0.6 B 0.6 0.1 0.3 C 0.3 0.6 0.1 Łatwo sprawdzić, że P(A) = P(B) = P(C) = 1, stad 3 normalny kod Huffmana będzie miał średnia długość 5. 3 Co będzie jeśli wykorzystamy informację o tym po jakiej literze występuje kolejna, czyli stworzymy trzy kodowania Huffmana, kolejno dla liter występujacych po A, B, C? Łatwo policzyć, że wtedy średnia długość kodu spadnie do 13. 10

Przykład wykorzystania kontekstu A B C A 0.1 0.3 0.6 B 0.6 0.1 0.3 C 0.3 0.6 0.1 Łatwo sprawdzić, że P(A) = P(B) = P(C) = 1, stad 3 normalny kod Huffmana będzie miał średnia długość 5. 3 Co będzie jeśli wykorzystamy informację o tym po jakiej literze występuje kolejna, czyli stworzymy trzy kodowania Huffmana, kolejno dla liter występujacych po A, B, C? Łatwo policzyć, że wtedy średnia długość kodu spadnie do 13. 10 Gdybyśmy wydłużyli historię (kontekst) moglibyśmy uzyskać większy stopień kompresji, ale ilość kodów rosłaby szybko.

Predykcja z częściowym dopasowaniem (PPM) Algorytm dynamiczny wykorzystujacy kontekst.

Predykcja z częściowym dopasowaniem (PPM) Algorytm dynamiczny wykorzystujacy kontekst. Specjalny symbol wyjścia oznaczajacy brak istniejacego kontekstu danej długości (<esc>).

Predykcja z częściowym dopasowaniem (PPM) Algorytm dynamiczny wykorzystujacy kontekst. Specjalny symbol wyjścia oznaczajacy brak istniejacego kontekstu danej długości (<esc>). Ustalamy maksymalny rozmiar kontekstu.

Predykcja z częściowym dopasowaniem (PPM) Algorytm dynamiczny wykorzystujacy kontekst. Specjalny symbol wyjścia oznaczajacy brak istniejacego kontekstu danej długości (<esc>). Ustalamy maksymalny rozmiar kontekstu. Dla danej litery szukamy maksymalnego kontekstu, jeśli nie wysyłamy symbol wyjścia i sprawdzamy krótszy kontekst. Jeśli istnieje to wysyłamy odpowiedni kod a ilość użycia litery w tym kontekście zwiększamy o 1.

Predykcja z częściowym dopasowaniem (PPM) Algorytm dynamiczny wykorzystujacy kontekst. Specjalny symbol wyjścia oznaczajacy brak istniejacego kontekstu danej długości (<esc>). Ustalamy maksymalny rozmiar kontekstu. Dla danej litery szukamy maksymalnego kontekstu, jeśli nie wysyłamy symbol wyjścia i sprawdzamy krótszy kontekst. Jeśli istnieje to wysyłamy odpowiedni kod a ilość użycia litery w tym kontekście zwiększamy o 1. Jeśli symbol pojawił się po raz pierwszy dodajemy go bez kontekstu, (kontekst -1) z prawdopodobieństwem równym dla każdej litery.

Przykład Kodujemy tekst: this-is-the-tithe.

Przykład Kodujemy tekst: this-is-the-tithe. Przyjmujemy, że najdłuższy kontekst ma długość 2 (mamy konteksty długości -1, 0, 1 i 2).

Przykład Kodujemy tekst: this-is-the-tithe. Przyjmujemy, że najdłuższy kontekst ma długość 2 (mamy konteksty długości -1, 0, 1 i 2). Po zakodowaniu this-is mamy następujace tabele kontekstów:

Przykład Kodujemy tekst: this-is-the-tithe. Przyjmujemy, że najdłuższy kontekst ma długość 2 (mamy konteksty długości -1, 0, 1 i 2). Po zakodowaniu this-is mamy następujace tabele kontekstów: Kontekst długości -1 Litera Licznik t 1 h 1 i 1 s 1-1

Przykład Kontekst długości 0 Litera Licznik <esc> 1 t 1 h 1 i 2 s 1-1

Przykład Kontekst długości 1 Kontekst Litera Licznik t <esc> 1 h 1 h <esc> 1 i 1 i <esc> 1 s 2 s <esc> 1-1 - <esc> 1 i 1

Przykład Kontekst długości 2 Kontekst Litera Licznik th <esc> 1 i 1 hi <esc> 1 s 1 is <esc> 1-1 s- <esc> 1 i 1 -i <esc> 1 s 1

PPM Dla każdego kontekstu możemy teraz utworzyć dynamiczne kody Huffmana.

PPM Dla każdego kontekstu możemy teraz utworzyć dynamiczne kody Huffmana. Albo wykorzystać dany kontekst z ilościa wystapień jako prawdopodobieństwa do podziału odcinka w kodowaniu arytmetycznym.

PPM Dla każdego kontekstu możemy teraz utworzyć dynamiczne kody Huffmana. Albo wykorzystać dany kontekst z ilościa wystapień jako prawdopodobieństwa do podziału odcinka w kodowaniu arytmetycznym. Najczęściej za maksymalna długość kontekstu przyjmuje się 5.

CALIC - Context Adaptative Lossless Image Compresion NN NNE NW N NE WW W X Sprawdzamy czy w sasiedztwie sa krawędzie pionowe lub poziome, w tym celu liczymy wartości pomocnicze d h = W WW + N NW + NE N d v = W NW + N NN + NE NNE

CALIC - Context Adaptative Lossless Image Compresion Pseudokod algorytmu:

CALIC - Context Adaptative Lossless Image Compresion Pseudokod algorytmu: if d h d v > 80 then X N else if d v d h > 80 then X W else X (N + W )/2 + (NE NW )/4 if d h d v > 32 then X ( X + N)/2 else if d v d h > 32 then X ( X + W )/2 else if d h d v > 8 then X (3 X + N)/4 else if d v d h > 8 then X (3 X + W )/4

CALIC - Context Adaptative Lossless Image Compresion Pseudokod algorytmu: if d h d v > 80 then X N else if d v d h > 80 then X W else X (N + W )/2 + (NE NW )/4 if d h d v > 32 then X ( X + N)/2 else if d v d h > 32 then X ( X + W )/2 else if d h d v > 8 then X (3 X + N)/4 else if d v d h > 8 then X (3 X + W )/4 Predykcję X można jeszcze bardziej uszczegółowić.

CALIC - Context Adaptative Lossless Image Compresion Pseudokod algorytmu: if d h d v > 80 then X N else if d v d h > 80 then X W else X (N + W )/2 + (NE NW )/4 if d h d v > 32 then X ( X + N)/2 else if d v d h > 32 then X ( X + W )/2 else if d h d v > 8 then X (3 X + N)/4 else if d v d h > 8 then X (3 X + W )/4 Predykcję X można jeszcze bardziej uszczegółowić. Kodujemy ciag różnic X X.

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N 3 X = NW

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N 3 X = NW 4 X = N + W NW

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N 3 X = NW 4 X = N + W NW 5 X = N + (W NW )/2

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N 3 X = NW 4 X = N + W NW 5 X = N + (W NW )/2 6 X = W + (N NW )/2

JPEG-LS (bezstratny) NW W N X 7 schematów predykcji: 1 X = W 2 X = N 3 X = NW 4 X = N + W NW 5 X = N + (W NW )/2 6 X = W + (N NW )/2 7 X = (N + W )/2

JPEG-LS (bezstratny) NW W N X Nowy standard: if NW max(w, N) then X max(w, N) else if NW max(w, N) then X min(w, N) else X W + N NW

Wykorzystanie poziomów rozdzielczości Kodujemy obraz wysyłajac najpierw średni kolor kwadratów 2 k x2 k a następnie różnice między ta średnia a kwadratami o rozmiarach 2 k 1 x2 k 1.

Wykorzystanie poziomów rozdzielczości Kodujemy obraz wysyłajac najpierw średni kolor kwadratów 2 k x2 k a następnie różnice między ta średnia a kwadratami o rozmiarach 2 k 1 x2 k 1. Kończymy na pikslach (kwadraty 2 0 x2 0 ).

Wykorzystanie poziomów rozdzielczości Kodujemy obraz wysyłajac najpierw średni kolor kwadratów 2 k x2 k a następnie różnice między ta średnia a kwadratami o rozmiarach 2 k 1 x2 k 1. Kończymy na pikslach (kwadraty 2 0 x2 0 ). Różnice nie sa dużymi liczbami i łatwo poddaja się kompresji.

Hierarchical INTerpolation (HINT)

Piramida transmisji progresywnej

JBIG idea Obraz przesyłamy progresywnie, coraz wyższa rozdzielczość.

JBIG idea Obraz przesyłamy progresywnie, coraz wyższa rozdzielczość. Prawdopodobieństwo wystapienia czarnego punktu w białym sasiedztwie jest zdecydowanie niższe niż w sasiedztwie zawierajacym już czarne piksele.

JBIG idea Obraz przesyłamy progresywnie, coraz wyższa rozdzielczość. Prawdopodobieństwo wystapienia czarnego punktu w białym sasiedztwie jest zdecydowanie niższe niż w sasiedztwie zawierajacym już czarne piksele. Sasiedztwo stanowia zakodowane wcześniej piksele (np. kilka poprzednich wierszy obrazu) wraz z wyszczególnionym pikselem A (zmiany jego położenia sa przesyłane do de kodera).

JBIG idea Obraz przesyłamy progresywnie, coraz wyższa rozdzielczość. Prawdopodobieństwo wystapienia czarnego punktu w białym sasiedztwie jest zdecydowanie niższe niż w sasiedztwie zawierajacym już czarne piksele. Sasiedztwo stanowia zakodowane wcześniej piksele (np. kilka poprzednich wierszy obrazu) wraz z wyszczególnionym pikselem A (zmiany jego położenia sa przesyłane do de kodera). Algorytm wykorzystuje od 1024 do 4096 różnych koderów (tzn. dla różnych kontekstów kodowanego piksela).

JBIG idea Obraz przesyłamy progresywnie, coraz wyższa rozdzielczość. Prawdopodobieństwo wystapienia czarnego punktu w białym sasiedztwie jest zdecydowanie niższe niż w sasiedztwie zawierajacym już czarne piksele. Sasiedztwo stanowia zakodowane wcześniej piksele (np. kilka poprzednich wierszy obrazu) wraz z wyszczególnionym pikselem A (zmiany jego położenia sa przesyłane do de kodera). Algorytm wykorzystuje od 1024 do 4096 różnych koderów (tzn. dla różnych kontekstów kodowanego piksela). W procesie kodowania wykorzystywane jest kodowanie arytmetyczne.

JBIG sasiedztwo Sasiedztwo 3- i 2-wierszowe Piksele O i A stanowia sasiedztwo kodowanego piksela X. Położenie A może być zmieniane, tak by oddać charakter danych (np. pionowe pasy co 50 pikseli).

Standard transmisji faksów Grupa 1 6 minut na stronę A4 przez analogowa linię telefoniczna (urzadzenia opisane w T.2)

Standard transmisji faksów Grupa 1 6 minut na stronę A4 przez analogowa linię telefoniczna (urzadzenia opisane w T.2) Grupa 2 3 minuty jw. także bez kompresji (T.3)

Standard transmisji faksów Grupa 1 6 minut na stronę A4 przez analogowa linię telefoniczna (urzadzenia opisane w T.2) Grupa 2 3 minuty jw. także bez kompresji (T.3) Grupa 3 1 minuta wykorzystuja reprezentację cyfrowa, możliwa kompresja (T.4)

Standard transmisji faksów Grupa 1 6 minut na stronę A4 przez analogowa linię telefoniczna (urzadzenia opisane w T.2) Grupa 2 3 minuty jw. także bez kompresji (T.3) Grupa 3 1 minuta wykorzystuja reprezentację cyfrowa, możliwa kompresja (T.4) Grupa 4 podobnie jak wyżej (T.6, T.503, T.521, T.563)

Kodowanie obrazów czarno-białych (faksy) MH Linie takich obrazów zawieraja na przemian bloki białe i czarne.

Kodowanie obrazów czarno-białych (faksy) MH Linie takich obrazów zawieraja na przemian bloki białe i czarne. Możemy przesyłać więc tylko długości takich bloków (zakładajac, że pierwszy jest biały).

Kodowanie obrazów czarno-białych (faksy) MH Linie takich obrazów zawieraja na przemian bloki białe i czarne. Możemy przesyłać więc tylko długości takich bloków (zakładajac, że pierwszy jest biały). Dodatkowo każda liczbę przedstawiamy jako parę m, t, gdzie l = 64m + t dla t = 0,..., 63 i m = 0,..., 27.

Kodowanie obrazów czarno-białych (faksy) MH Linie takich obrazów zawieraja na przemian bloki białe i czarne. Możemy przesyłać więc tylko długości takich bloków (zakładajac, że pierwszy jest biały). Dodatkowo każda liczbę przedstawiamy jako parę m, t, gdzie l = 64m + t dla t = 0,..., 63 i m = 0,..., 27. Do kodowania białych i czarnych serii używamy różnych koderów.

Kodowanie obrazów czarno-białych (faksy) MH Linie takich obrazów zawieraja na przemian bloki białe i czarne. Możemy przesyłać więc tylko długości takich bloków (zakładajac, że pierwszy jest biały). Dodatkowo każda liczbę przedstawiamy jako parę m, t, gdzie l = 64m + t dla t = 0,..., 63 i m = 0,..., 27. Do kodowania białych i czarnych serii używamy różnych koderów.... ale możemy wykorzystać korelację pomiędzy kolejnymi liniami obrazu.

Kodowanie faksów MR a 0 ostatni piksel znany koderowi i dekoderowi (lub fikcyjny biały piksel).

Kodowanie faksów MR a 0 ostatni piksel znany koderowi i dekoderowi (lub fikcyjny biały piksel). a 1 pierwszy piksel przejścia na prawo od a 0 (innego koloru!).

Kodowanie faksów MR a 0 ostatni piksel znany koderowi i dekoderowi (lub fikcyjny biały piksel). a 1 pierwszy piksel przejścia na prawo od a 0 (innego koloru!). a 2 drugi piksel przejścia na prawo od a 0.

Kodowanie faksów MR a 0 ostatni piksel znany koderowi i dekoderowi (lub fikcyjny biały piksel). a 1 pierwszy piksel przejścia na prawo od a 0 (innego koloru!). a 2 drugi piksel przejścia na prawo od a 0. b 1 pierwszy piksel przejścia na prawo i powyżej od a 0 o kolorze przeciwnym.

Kodowanie faksów MR a 0 ostatni piksel znany koderowi i dekoderowi (lub fikcyjny biały piksel). a 1 pierwszy piksel przejścia na prawo od a 0 (innego koloru!). a 2 drugi piksel przejścia na prawo od a 0. b 1 pierwszy piksel przejścia na prawo i powyżej od a 0 o kolorze przeciwnym. b 2 pierwszy piksel przejścia na prawo od b 1.

Kodowanie faksów MR (2) Jeżeli b 1 i b 2 znajduja się pomiędzy a 1 i a 2, to wysyłamy kod 0001, nowym pikselem a 0 staje się piksel pod b 2, pozostałe aktualizujemy zgodnie z definicja.

Kodowanie faksów MR (2) Jeżeli b 1 i b 2 znajduja się pomiędzy a 1 i a 2, to wysyłamy kod 0001, nowym pikselem a 0 staje się piksel pod b 2, pozostałe aktualizujemy zgodnie z definicja. Niektóre wiersze (co pewna wartość) sa kodowane bez uwzględnienia wartości poprzedniego wiersza, aby zapobiec propagacji błędów.

Kodowanie faksów MR (3) Jeżeli a 1 znajduje się przed b 2 rozpatrujemy 2 przypadki:

Kodowanie faksów MR (3) Jeżeli a 1 znajduje się przed b 2 rozpatrujemy 2 przypadki: jeżeli odległość od a 1 do b 2 mniejsza lub równa trzy, to przesyłamy odpowiedni kod do dekodera i aktualizujemy pozycje (a 0 na a 1 itd.) tzw. tryb pionowy,

Kodowanie faksów MR (3) Jeżeli a 1 znajduje się przed b 2 rozpatrujemy 2 przypadki: jeżeli odległość od a 1 do b 2 mniejsza lub równa trzy, to przesyłamy odpowiedni kod do dekodera i aktualizujemy pozycje (a 0 na a 1 itd.) tzw. tryb pionowy, jeżeli odległość jest większa, to postępujemy podobnie jak w przypadku kodowania jednowymiarowego (MH).

bzip2 Algorytm kompresji popularny w systemach Linux-owych.

bzip2 Algorytm kompresji popularny w systemach Linux-owych. Standardowa implementacja kompresuje bloki danych o rozmiarach do 100 do 900 kb.

bzip2 Algorytm kompresji popularny w systemach Linux-owych. Standardowa implementacja kompresuje bloki danych o rozmiarach do 100 do 900 kb. Blok jest przekształcany transformata Burrowsa-Wheelera, następnie kodowany algorytmem Move-To-Front i kompresowany algorytmem Huffmana.

bzip2 Algorytm kompresji popularny w systemach Linux-owych. Standardowa implementacja kompresuje bloki danych o rozmiarach do 100 do 900 kb. Blok jest przekształcany transformata Burrowsa-Wheelera, następnie kodowany algorytmem Move-To-Front i kompresowany algorytmem Huffmana. Algorytm osiaga o 10%-20% lepsze wyniki niż najczęściej stosowane algorytmy strumieniowe ale nie może być używany do kodowania strumieni.

Transformata Burrowsa-Wheelera Na poczatku mamy blok danych o rozmiarze N, np. a l a - m a - k o t a

Transformata Burrowsa-Wheelera Na poczatku mamy blok danych o rozmiarze N, np. a l a - m a - k o t a Generujemy wszystkie N rotacji kompresowanego bloku 0 a l a - m a - k o t a 1 l a - m a - k o t a a 2 a - m a - k o t a a l 3 - m a - k o t a a l a 4 m a - k o t a a l a - 5 a - k o t a a l a - m 6 - k o t a a l a - m a 7 k o t a a l a - m a - 8 o t a a l a - m a - k 9 t a a l a - m a - k o 10 a a l a - m a - k o t

Transformata Burrowsa-Wheelera Sortujemy powstałe łańcuchy leksykograficznie 0 - k o t a a l a - m a 1 - m a - k o t a a l a 2 a - k o t a a l a - m 3 a - m a - k o t a a l 4 a a l a - m a - k o t 5 a l a - m a - k o t a 6 k o t a a l a - m a - 7 l a - m a - k o t a a 8 m a - k o t a a l a - 9 o t a a l a - m a - k 10 t a a l a - m a - k o

Transformata Burrowsa-Wheelera Sortujemy powstałe łańcuchy leksykograficznie 0 - k o t a a l a - m a 1 - m a - k o t a a l a 2 a - k o t a a l a - m 3 a - m a - k o t a a l 4 a a l a - m a - k o t 5 a l a - m a - k o t a 6 k o t a a l a - m a - 7 l a - m a - k o t a a 8 m a - k o t a a l a - 9 o t a a l a - m a - k 10 t a a l a - m a - k o Wynik transformacji: numer wiersza z pierwotnym tekstem i ostatnia kolumna tabeli. 5 a a m l t a - a - k o

Odwracanie transformacji Mamy numer wiersza 5 i tekst a a m l t a - a - k o

Odwracanie transformacji Mamy numer wiersza 5 i tekst a a m l t a - a - k o Dopisujemy do tekstu indeksy 7 8 9 10 a a m l t a - a - k o 7 8 9 10

Odwracanie transformacji Mamy numer wiersza 5 i tekst a a m l t a - a - k o Dopisujemy do tekstu indeksy 7 8 9 10 a a m l t a - a - k o 7 8 9 10 I sortujemy tekst (stabilnie) 7 8 9 10 - - a a a a k l m o t 6 8 0 1 5 7 9 3 2 10 4

Odwracanie transformacji Mamy numer wiersza 5 i tekst a a m l t a - a - k o Dopisujemy do tekstu indeksy 7 8 9 10 a a m l t a - a - k o 7 8 9 10 I sortujemy tekst (stabilnie) 7 8 9 10 - - a a a a k l m o t 6 8 0 1 5 7 9 3 2 10 4 Teraz zaczynajac od pozycji 5 wypisujemy kolejno znaki zgodnie z indeksami 5 7 3 1 8 2 0 6 9 10 4 i otrzymujemy a l a - m a - k o t a

Move-To-Front Transformacja strumienia danych mogaca spowodować zmniejszenie entropii.

Move-To-Front Transformacja strumienia danych mogaca spowodować zmniejszenie entropii. Zyski gdy symbole wykazuja tendencję do lokalnego grupowania się.

Move-To-Front Transformacja strumienia danych mogaca spowodować zmniejszenie entropii. Zyski gdy symbole wykazuja tendencję do lokalnego grupowania się. Dane o takiej charakterystyce sa często wynikiem transformaty Burrowsa-Wheelera.

Transformacja Na poczatku mamy tablicę N posortowanych symboli. Kodem symbolu jest numer pozycji w tablicy (numery od 0 do N 1).

Transformacja Na poczatku mamy tablicę N posortowanych symboli. Kodem symbolu jest numer pozycji w tablicy (numery od 0 do N 1). W każdym kroku bierzemy pojedynczy symbol, wypisujemy jego numer z tablicy i modyfikujemy tablicę przesuwajac rozpatrywany symbol na poczatek tablicy.

Transformacja Na poczatku mamy tablicę N posortowanych symboli. Kodem symbolu jest numer pozycji w tablicy (numery od 0 do N 1). W każdym kroku bierzemy pojedynczy symbol, wypisujemy jego numer z tablicy i modyfikujemy tablicę przesuwajac rozpatrywany symbol na poczatek tablicy. Jeśli symbole sa lokalnie pogrupowane to sa przesuwane na poczatek tablicy i w kodzie wynikowym pojawiaja się częściej małe liczby.

Transformacja Na poczatku mamy tablicę N posortowanych symboli. Kodem symbolu jest numer pozycji w tablicy (numery od 0 do N 1). W każdym kroku bierzemy pojedynczy symbol, wypisujemy jego numer z tablicy i modyfikujemy tablicę przesuwajac rozpatrywany symbol na poczatek tablicy. Jeśli symbole sa lokalnie pogrupowane to sa przesuwane na poczatek tablicy i w kodzie wynikowym pojawiaja się częściej małe liczby. Odwrócenie transformacji jest praktycznie identyczne jak algorytm transformacji.

Przykład transformacji a a m l t a - a - k o - a k l m o t

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o 1 0 4 4 6 3 4 a - k o - a t l m k o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o 1 0 4 4 6 3 4 a - k o - a t l m k o 1 0 4 4 6 3 4 1 - k o a - t l m k o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o 1 0 4 4 6 3 4 a - k o - a t l m k o 1 0 4 4 6 3 4 1 - k o a - t l m k o 1 0 4 4 6 3 4 1 1 k o - a t l m k o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o 1 0 4 4 6 3 4 a - k o - a t l m k o 1 0 4 4 6 3 4 1 - k o a - t l m k o 1 0 4 4 6 3 4 1 1 k o - a t l m k o 1 0 4 4 6 3 4 1 1 5 o k - a t l m o

Przykład transformacji a a m l t a - a - k o - a k l m o t 1 a m l t a - a - k o a - k l m o t 1 0 m l t a - a - k o a - k l m o t 1 0 4 l t a - a - k o m a - k l o t 1 0 4 4 t a - a - k o l m a - k o t 1 0 4 4 6 a - a - k o t l m a - k o 1 0 4 4 6 3 - a - k o a t l m - k o 1 0 4 4 6 3 4 a - k o - a t l m k o 1 0 4 4 6 3 4 1 - k o a - t l m k o 1 0 4 4 6 3 4 1 1 k o - a t l m k o 1 0 4 4 6 3 4 1 1 5 o k - a t l m o 1 0 4 4 6 3 4 1 1 5 6 o k - a t l m

Przykład transformacji Dla ciagu a a m l t a - a - k o entropia wynosi 2, 550.

Przykład transformacji Dla ciagu a a m l t a - a - k o entropia wynosi 2, 550. Dla ciagu 1 0 4 4 6 3 4 1 1 5 6 entropia wynosi 2, 413.

Przykład transformacji Dla ciagu a a m l t a - a - k o entropia wynosi 2, 550. Dla ciagu 1 0 4 4 6 3 4 1 1 5 6 entropia wynosi 2, 413. Dla długich ciagów zyski moga być dużo większe i kodowanie Huffmana efektywniejsze.

Kompresja bezstratna podsumowanie Techniki oparte na prawdopodobieństwach: kody Huffmana, Tunstalla, kodowanie arytmetyczne.

Kompresja bezstratna podsumowanie Techniki oparte na prawdopodobieństwach: kody Huffmana, Tunstalla, kodowanie arytmetyczne. Metody słownikowe: LZ77, LZ78, LZW.

Kompresja bezstratna podsumowanie Techniki oparte na prawdopodobieństwach: kody Huffmana, Tunstalla, kodowanie arytmetyczne. Metody słownikowe: LZ77, LZ78, LZW. : PPM, CALIC, JPEG-LS, run-length encoding.

Kompresja bezstratna podsumowanie Techniki oparte na prawdopodobieństwach: kody Huffmana, Tunstalla, kodowanie arytmetyczne. Metody słownikowe: LZ77, LZ78, LZW. : PPM, CALIC, JPEG-LS, run-length encoding. Stosowanie kilku metod po kolei.