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



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

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

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

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

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

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ą.

AKD Metody słownikowe

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

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

Cała prawda o plikach grafiki rastrowej

Kodowanie predykcyjne

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

Temat: Algorytm kompresji plików metodą Huffmana

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

Klasyfikacja metod kompresji

Klasyfikacja metod kompresji

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

dr inż. Piotr Odya dr inż. Piotr Suchomski

FORMATY GRAFICZNE. Dobra ilustracja przychodzi w małym pliku. David Siegel, Tworzenie stron WWW. 1. Rodzaje plików graficznych

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

Grafika na stronie www

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

Waldemar Izdebski - Wykłady z przedmiotu SIT / Mapa zasadnicza 30

Komunikacja człowiek-komputer

dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ

Kompresja video (MPEG)

Rozszerzenia plików graficznych do publkacji internetowych- Kasia Ząbek kl. 2dT

Formaty plików graficznych

Formaty plików graficznych

Formaty plików graficznych

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

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

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Rozdział 7. Przedstawienie formatu graficznego BMP.

Architektura komputerów

Promotor: dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

Księgarnia internetowa Lubię to!» Nasza społeczność

Podstawy Informatyki

Pomorski Czarodziej 2016 Zadania. Kategoria C

Kodowanie informacji

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

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

Podstawowe pojęcia. Teoria informacji

Kodowanie Shannona-Fano

Przetwarzanie obrazu cyfrowego

Formaty obrazów rastrowych biblioteki PBM

Technologie cyfrowe semestr letni 2018/2019

Teoria Informacji i Metody Kompresji Danych

Wymagania edukacyjne na ocenę z informatyki klasa 3

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

1. Operacje logiczne A B A OR B

Wykład VII. Systemy kryptograficzne Kierunek Matematyka - semestr IV. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Grafika komputerowa. Dla DSI II

Grafika rastrowa (bitmapa)-

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

FORMATY GRAFICZNE. Dobra ilustracja przychodzi w małym pliku. David Siegel, Tworzenie stron WWW. 1. Rodzaje plików graficznych

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

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

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

Projektowanie układów na schemacie

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

Kompresja sekwencji obrazów - algorytm MPEG-2

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Pracownia komputerowa. Dariusz Wardecki, wyk. XI

Wykład III: Kompresja danych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Logiczny model komputera i działanie procesora. Część 1.

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

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

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

dr inż. Jarosław Forenc

7. Dynamiczne generowanie grafiki

FORMATY PLIKÓW GRAFICZNYCH

Kompresja obrazów i formaty plików graficznych

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

8. Dynamiczne generowanie grafiki, cz. 2

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Struktura i działanie jednostki centralnej

Bitmapy - format i zastosowanie. Podstawowy format plików bitmapowych, dogodność zastosowania bitmap w prostych animacjach 2D.

KOMPRESJA STRATNA I BEZSTRATNA

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

GRAFIKA RASTROWA. WYKŁAD 2 Oprogramowanie i formaty plików. Jacek Wiślicki Katedra Informatyki Stosowanej

GRAFIKA SIECIOWA. WYKŁAD 2 Optymalizacja grafiki. Jacek Wiślicki Katedra Informatyki Stosowanej

Zadanie 1. Suma silni (11 pkt)

Podstawy grafiki komputerowej. Teoria obrazu.

Podstawy Informatyki

Przewodnik po soczewkach

Programowanie Aplikacji Sieciowych

Programowanie współbieżne Wykład 2. Iwona Kochańska

Podstawy kompresji danych

Zestaw A-1: Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.adb i.ads)!!! Zad. 1: 4,3,3 2,2,1 Zad. 2: 3,3,3 Zad.

Kwantyzacja wektorowa. Kodowanie różnicowe.

System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System.

Wymagania edukacyjne na ocenę z informatyki KLASA III

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Grafika komputerowa dziedzina informatyki zajmująca się wykorzystaniem technik komputerowych do celów wizualizacji artystycznej oraz wizualizacji i

Transkrypt:

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 1. PROSTE ALGORYTMY KOMPRESJI BEZSTRATNEJ Wprowadze Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 2. Wprowadze do prostych algorytmów kompresji bezstratnej Przez algorytmy proste, będziemy rozumieli ie, które dokonują analizy strumienia danych przed kompresją. Dzięki temu algorytmy te są po pierwsze proste, po drugie mają minimalne wymagania pamięciowe (możliwa jest np. bezproblemowa implementacja sprzętowa), poważ wymagają bufora danych. Oczywistą wadą tych algorytmów jest mjszy stopień kompresji, w porównaniu do algorytmów analizujących. Przykładami ich prostych algorytmów są ByteRun, zastosowany między innymi w formacie zapisu obrazów IFF ILBM w 1985 roku, oraz RunLengthEncoding (RLE) zastosowany w formacie BMP. Oba te proste algorytmy potrafią jedy skompresować powtarzające się ciągi jednakowych znaków, stąd ich zastosowa ogranicza się w praktyce do kompresji obrazów o wielkiej (<= 256) ilości kolorów. Nieco bardzie zaawansowanym algorytmem jest LZW, nazwany od nazwisk twórców, Lempela i Ziva, którzy opracowali podstawy teoretyczne, oraz Welsha, który w 1984 roku opisał implementację, sprzętową zresztą. Algorytm LZW potrafi wykorzystać tylko powtarzalność pojedynczych znaków, ale rówż ich różnych zbitek, dzięki budowie tzw. słownika w czasie pracy algorytmu. Dzięki temu szczegól dobrze LZW spisuje się przy kompresji tekstu, a zwłaszcza tekstów ich jak np. kody źródłowe programów. Co ciekawe słownik kodera musi być przesyłany wraz ze skompresowanymi danymi, bowiem dekoder jest w sta go odtworzyć w czasie dekompresji. To dodatkowo podnosi efektywność metody. Algorytm LZW znalazł szerokie zastosowa w praktyce: Format zapisu obrazów GIF, Formaty zapisu dokumentów PostScript i PDF (kompresja bitmap), Programy do kompresji plików (ARC, compress). Transmisja modemowa (V.42bis, zmodyfikowany LZW). Warto zaznaczyć, że przez dłuższy czas algorytm LZW był objęty patentem, co ograniczało jego stosowa (patent zgłosiła firma Unisys, autor formatu GIF). Obec patent ten już obowiązuje.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 3. Algorytm ByteRun Algorytm ten daje kompresję tylko i wyłącz w obecności powtarzających się symboli. Z założenia algorytm ten operuje na symbolach o rozmiarze bajtu. W algorytmie tym mamy do czynia z dwoma sekwencjami: sekwencja kopiowania bajtów n b0 b1 b2 b3 b4 b5... b(n) Pierwszy bajt, to liczba n z zakresu <0, 127>, określa ona ilość następujących n+1 bajtów, które mają być przy dekompresji skopiowane bez zmian. sekwencja powtarzania bajtów n b Tym razem n jest z przedziału <-1, -127>, co łatwo poznać po ustawionym najstarszym bicie. Bajt b jest przy dekompresji powtarzany (-n+1) razy, co pozwala na liczbę powtórzeń od 2 do 128. Pozostała, przydzielona wartość n = -128, jest traktowana jako kod pusty (no-op). Warto zauważyć że dla wielu strumieni danych kompresja ByteRun może dać zysk ujemny, na przykład w przypadku sekwencji ABABABABAB... skompresowany strumień będzie o 1 bajt dłuższy niż oryginał. Algorytm ByteRun stosowany był do kompresji obrazków w formacie IFF ILBM.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 4. Przykład działania algorytmu ByteRun Oto linia czterokolorowego obrazka, którą poddamy kompresji ByteRun: Nadajmy numery kolorom z palety: 0 = bieski, 1 = czerwony, 2 = zielony, 3 = szary. Pierwsze powtórze 3 bieskich pikseli to oczywiście sekwencja [-2, 0], następ 4 czerwone to [-3, 1]. Następ mamy sytuację szczególną, mianowicie dwa piksele tego samego koloru (bieskie) będą miały przed sobą (zielony piksel) i za sobą (szary, czerwony, szary) sekwencje kopiowania. W im przypadku bardziej opłaca się po całości dać jedną sekwencję kopiowania. Oto dowód: klasycz mielibyśmy: [0, 2] (kopiowa zielonego piksela), [-1, 0] (dwa bieskie) i [2, 3, 1, 3] (kopiowa 3 pikseli), łącz 8 bajtów. Zapisa tego jako jednej sekwencji kopiowania daje nam [5, 2, 0, 0, 3, 1, 3] o jeden bajt mj. Dalej prosto, dwa zielone [1, 2], trzy bieskie [2, 0], cztery szare [3, 3], późj jest 7 pikseli do skopiowania [6, 1, 2, 1, 2, 3, 1, 2], dwa bieskie [1, 0], trzy czerwone [2, 1] i dwa szare [1, 3]. Ostatecz z 36 pikseli otrzymaliśmy ciąg [-2, 0, -3, 1, 5, 2, 0, 0, 3, 1, 3, 1, 2, 2, 0, 3, 3, 6, 1, 2, 1, 2, 3, 1, 2, 1, 0, 2, 1, 1, 3] składający się z 31 bajtów kompresja zmjszyła rozmiar danych do 86,1 % oryginału. Dekodowa jest bardzo proste, badamy znak liczby, jeżeli dodatni, to kopiujemy na wyjście następne n+1 bajtów, jeżeli ujemny, to powtarzamy następny bajt -n+1 razy (chyba, że n=-128, wtedy pomijamy ten bajt).

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 5. Algorytm RLE (Run Length Encoding) Idea tego algorytmu jest identyczna jak ByteRun eliminacja redundancji informacyjnej w postaci powtarzających się bajtów. Jest jednak kilka różnic, przede wszystkim założem jest przetwarza danych po 2 bajty, oprócz tego RLE posiada kilka sekwencji sterujących umożliwiających przeskakiwa większych bloków danych. Sekwencja kopiowania danych wygląda następująco: 0x00 n b0 b1 b2 b3 b4 b5... b(n-1) Gdzie n przyjmuje wartości od 3 do 255. Warto zauważyć, że jeden bajt lub dwa bajty muszą być zapisane jako jedna lub dwie sekwencje powtarzania. Sekwencja powtarzania wygląda następująco: n b Gdzie n jest dowolną liczbą od 1 do 255, a b powtarzanym bajtem. Pozostały nam jeszcze sekwencje specjalne. Sekwencje te są specyficzne dla formatu BMP i używane są przy kompresji maski przezroczystości: [0x00, 0x00] oznacza koc linii obrazu, [0x00, 0x01] to koc całego obrazu, [0x00, 0x02, x, y] to przesunięcie się w obrazie o wektor [x, y]. Przeskakiwane dane są traktowane jako przezroczyste. RLE jest general co mj efektywny niż ByteRun, choć dzięki przetwarzaniu po 2 bajty, może być co szybszy. Na współczesnych procesorach jednak, różnica jest specjal widoczna.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 6. Algorytm RLE przykład działania Kompresją RLE potraktujemy tę samą linię, co poprzednio. Zaczynamy od sekwencji powtarzania: [3, 0], [4, 1]. Następ mamy drobny dylemat, czy dwa bieskie zapisać jako powtórze, czy... Przy powtórzeniu będziemy mieli [1, 2], [2, 0], i późj albo 6 bajtów na powtórzeniach, albo też 6 na sekwencji kopiowania ([0, 3, 3, 1, 3, 0], końcowe, zbędne zdawałoby się, zero jest skutkiem założenia przetwarzania danych 2-bajtowymi porcjami, każda sekwencja musi mieć parzystą liczbę bajtów). Tak czy 10 bajtów. Jedna długa sekwencja kopiowania [0, 6, 2, 0, 0, 3, 1, 3] ma tylko 8 bajtów. Następ mamy proste sekwencje powtarzania [2, 2], [3, 0] i [4, 3], po j zaś sekwencję skopiowania 7 bajtów [0, 7, 1, 2, 1, 2, 3, 1, 2]. I znów powtórzenia [2, 0], [3, 1] i [2, 3]. Ostatecz otrzymujemy 33-bajtową sekwencję [3, 0, 4, 1, 0, 6, 2, 0, 0, 3, 1, 3, 2, 2, 3, 0, 4, 3, 0, 7, 1, 2, 1, 2, 3, 1, 2, 2, 0, 3, 1, 2, 3]. To więcej niż dla RunLength (winne jest tu przede wszystkim 2-bajtowe wejście do sekwencji kopiowania), skompresowany ciąg ma długość 91,6% oryginału. Dekodowa RLE nastręcza większych trudności. Typowe obrazki BMP zawierają sekwencji specjalnych zaczynających się od 0, a wyłącz sekwencje powtarzania i kopiowania. Należy jedy pamiętać o tym, żeby pominąć nadmiarowe zera wyrównujące sekwencje kopiowania do parzystej liczby bajtów. Kompresja RLE posiada rówż odmianę RLE4 przeznaczoną do kompresji obrazków 16-kolorowych (w bajcie mieszczą się 2 piksele), kompresji ulegają wtedy tylko ciągi jednakowych pikseli, ale rówż rastry typu ABABAB, często używane do symulacji większej ilości kolorów.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 7. Alfabet i słownik kompresora LZW Przed omówiem algorytmu kompresji LZW, zdefiniujmy dwa pojęcia, szeroko używane w teorii kompresji bezstratnej. Alfabet danego kompresora, to zestaw wszystkich znaków, jakie mogą się pojawić na jego wejściu (w danych skompresowanych). Przykładowo dla 4-kolorowego obrazka alfabet to [0, 1, 2, 3], dla tekstu zaś alfabet składał się będzie z użytego zestawu znaków. W danym zastosowaniu kompresora alfabet jest najczęściej stały i znany z góry. Słownik kompresora to tablica (lub inna struktura) zawierająca fragmenty wiadomości wejściowej i przypisane im kody na wyjściu kompresora. Słownik z reguły zależy od treści kompresowanej wiadomości i powstaje dynamicz w czasie kompresji (wyjątkiem są algorytmy RLE i ByteRun, gdzie słownik jest stały i znany z góry). Niektóre algorytmy kompresji wymagają przesłania słownika w skompresowanej wiadomości, inne (jak np. LZW) są w sta dynamicz odtworzyć słownik w czasie dekompresji. Inicjalizacja słownika w algorytmie LZW polega na: 1. Określeniu ilości bitów zbędnych do zakodowania wszsystkich symboli z alfabetu. 2. Wstawieniu całego alfabetu do słownika. Poważ alfabet jest znany zarówno przez kompresor jak i dekompresor, zachodzi potrzeba przesyłania części słownika zawierającej alfabet. Pozostała część słownika (zawierająca symbole złożone) jest odtwarzana przez dekoder na bieżąco, więc rówż trzeba jej przesyłać.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 7. Kompresja LZW w akcji (1) Algorytmem LZW skompresujemy tę samą linię obrazu, która posłużyła nam przy poprzednich algorytmach. Alfabetem będą tu poszczególne kolory, zakodowane jak poprzednio [0, 1, 2, 3]. Do zakodowania alfabetu wystarczą nam 2 bity. Tak więc pierwsze wolne miejsce w słowniku będzie miało kod 4. Oto więc słownik na starcie pracy algorytmu: 0 1 2 3 W czasie pracy algorytm wykonuje sekwencję czynności. Dane są przetwarzane znak po znaku, a więc jest wymagany swobodny dostęp do dowolnego elementu kompresowanej wiadomości. START słowo='' wypisz kod słowa STOP koc danych pobierz znak słowo+znak w słowniku? wypisz kod słowa słowo+znak do słownika słowo = znak słowo = słowo+znak

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 7. Kompresja LZW w akcji (2) A oto kolejne etapy kompresji linii przedstawione w formie tabeli: znak słowo słownik? do słownika 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 na wyjście 0 4 1 6 1 2 4 3 1 3 2 9 10 3 17

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 2, strona 7. Kompresja LZW w akcji (3) znak koc słowo słownik? do słownika na wyjście 19 8 20 8 21 11 22 9 23 0 24 7 17 Na wyjście został wyemitowany ciąg [0, 4, 1, 6, 1, 2, 4, 3, 1, 3, 2, 9, 10, 3, 17, 8, 8, 11, 9, 0, 7, 17], liczący sobie 22 bajty. Ciąg został skompresowany do 61,1% oryginalnej wielkości. Skuteczność kompresji rosłaby wraz ze wzrostem długości ciągu (i wielkości słownika). W praktyce ogranicza się wielkość słownika, że najdłuższy kod zajmuje 12 bitów, co daje 4096 elementów słownika. Dalsza kompresja przebiega samo, ale do słownika są już dopisywane kolejne pozycje. Najczęściej też kody skompresowane są zapisywane na polach bitowych o minimalnej długości, co dodatkowo w istotny sposób polepsza kompresję, szczegól dla małych alfabetów.