Przetwarzanie obrazu cyfrowego

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

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

Kompresja obrazów w statycznych - algorytm JPEG

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Joint Photographic Experts Group

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

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

Klasyfikacja metod kompresji

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

Klasyfikacja metod kompresji

Wybrane metody kompresji obrazów

Kodowanie informacji

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

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

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.

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kodowanie informacji

AKD Metody słownikowe

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Temat: Algorytm kompresji plików metodą Huffmana

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kodowanie predykcyjne

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

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

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

Kody Tunstalla. Kodowanie arytmetyczne

Inżynieria obrazów cyfrowych. Ćwiczenie 5. Kompresja JPEG

dr inż. Piotr Odya Wprowadzenie

Metody kompresji i przechowywania obrazów

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Technologie cyfrowe semestr letni 2018/2019

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

Teoria informacji i kodowania Ćwiczenia

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

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Kompresja sekwencji obrazów

Kompresja danych DKDA (7)

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

Kompresja video (MPEG)

Podstawy kompresji danych

Kompresja sekwencji obrazów - algorytm MPEG-2

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

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Zastosowanie kompresji w kryptografii Piotr Piotrowski

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

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

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

Kodowanie predykcyjne

Sieci neuronowe - projekt

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

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

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

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

Kompresja dźwięku w standardzie MPEG-1

Zapis liczb binarnych ze znakiem

dr inż. Jacek Naruniec

Kompresja bezstratna. Entropia. Kod Huffmana

0 + 0 = 0, = 1, = 1, = 0.

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

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

Transformata Fouriera

Podstawowe pojęcia. Teoria informacji

Teoria Informacji - wykład. Kodowanie wiadomości

Technologie Informacyjne

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

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

0-0000, , , itd

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

Transformaty. Kodowanie transformujace

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

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

Dane obrazowe. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

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

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

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

Kodowanie podpasmowe. Plan 1. Zasada 2. Filtry cyfrowe 3. Podstawowy algorytm 4. Zastosowania

Teoria Informacji i Metody Kompresji Danych

Kodowanie informacji. Kody liczbowe

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

W11 Kody nadmiarowe, zastosowania w transmisji danych

Definicja. Jeśli. wtedy

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

Niezawodność i diagnostyka systemów cyfrowych projekt 2015

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 sortujące i wyszukujące

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

Algorytmy i struktury danych

Kodowanie Shannona-Fano

Algorytmy zachłanne. dr inż. Urszula Gałązka

ZESPÓŁ LABORATORIÓW TELEMATYKI TRANSPORTU ZAKŁAD TELEKOMUNIKACJI W TRANSPORCIE WYDZIAŁ TRANSPORTU POLITECHNIKI WARSZAWSKIEJ

Nierówność Krafta-McMillana, Kodowanie Huffmana

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

Transkrypt:

Kompresja

Kompresja Obrazu Po co kompresja Podstawowe pojęcia RLE LZ78 LZW Huffman JPEG

Po co kompresja Obraz FullHD 1920x1080 w kolorze RGB to 49766400 bity danych (5,94 MiB) Przeciętne zdjęcie 18Mpixel ~ 51,5MiB 1s filmu FullHD = 24kl * 5,94MiB = 142,56MiB Dwugodzinny film to ok 1TB 1CD (750MB) to 5s filmu BluRay (50GB) to aż 5,8 minut Dopiero dyski SATA i nowsze napędy BluRay oferują wystarczająco szybki (rzeczywisty) transfer danych. Z 4K (876MiB/s) ledwie poradzi sobie SATA 3

Kompresja Transformacja oryginalnej reprezentacji danych w inną reprezentację o mniejszej ilości bitów Główne cele kompresji Zredukowanie czasu transmisji Zawężenie wymaganego pasma przesyłania Umożliwienie archiwizacji większej ilości danych

Kompresja Rodzaje kompresji Bezstratna - Dane uzyskane z cyklu kompresja/dekompresja są identyczne z nieskompresowanym oryginałem. Stratna Dane uzyskane z cyklu kompresja/dekompresja różnią się w pewnym stopniu od nieskompresowanego oryginału. Kompresja stratna jest akceptowalna tam, gdzie tracone dane są mało istotne dla odbioru przekazu.

Kompresja

Kompresja bezstratna

Kompresja bezstratna Limit kompresji E=7,01 E=5,31

Kompresja stratna

Kompresja stratna

Kompresja stratna Średnia różnica: Zawartość strukturalna (ang. Structual Content): Znormalizowana korelacja wzajemna (ang. Normalized Cross-Correlation): N M M x N y y x f y x f AD 1 1 ), ( ), ( M x N y y x f M x N y y x f AC 1 1 2 ), ( 1 1 2 ), ( M x N y y x f M x N y y x f y x f NK 1 1 2 ), ( 1 1 ), ( ), (

Kompresja stratna M x N y M x N y y x f y x f y x f CQ 1 1 1 1 ), ( ), ( ), ( ), ( ), ( y x f y x f Max MD M x N y M x N y y x f y x f y x f IF 1 1 2 1 1 2 ), ( ), ( ), ( 1 Jakość korelacji (Correlation Quality): Maksymalna różnica (Maximum Difference) / szczytowy błąd bezwzględny (Peak Absolute Error-PAE): Wierność obrazu (Image Fidelity):

Kompresja stratna Normalizowany błąd bezwzględny (Normalized Absolute Error): Znormalizowany błąd średniokwadratowy (Normalized Mean Square Error): M x N y M x N y y x f y x f y x f NAE 1 1 1 1 ), ( ), ( ), ( IF y x f y x f y x f NMSE M x N y M x N y 1 ), ( ), ( ), ( 1 1 2 1 1 2

Kompresja ogólna zasada Bezstratna Obraz x Transformata y=t(x) próbki y koder c=c(y) Wynik (bity) c bity c dekoder y=c -1 (c) próbki y Tr. odwrotna x=t -1 (y) Obraz x T i C są w odwracalne

Kompresja ogólna zasada Stratna Obraz x Transformata y=t(x) próbki y kwantyzator q=q(y) indeksy q koder c=c(y) Wynik (bity) c bity c dekoder q=c -1 (c) próbki y dekwantyzato r y'=q -1 (q) próbki y' Tr. odwrotna x'=t -1 (y) Obraz x' T i C są w odwracalne, Q wprowadza stratność

Kompresja stratna I 1 I 2 I 3 I 4

Run-Length Encoding kodowanie długości serii Jeden z najprostszych algorytmów kompresji bezstratnej. Nie wymaga transformacji przygotowującej Niezbyt duży stopień kompresji (ok. 2:1) Bardzo szybka kompresja i dekompresja, Zakodowany strumień danych jest mało czuły na zakłócenia

Run-Length Encoding przebieg Obraz jest przeglądany liniami Jeżeli w linii wykryto ciąg pikseli o takich samych wartościach, jest on zastępowany wartością koloru i liczbą wystąpień Kodowanie musi umożliwiać odróżnienie liczby wystąpień od wartości koloru W powyższym przypadku zrealizowano to stosując zasadę: Każdy ciąg jest skracany do dwóch wystąpień po których następuje liczba kolejnych wystąpień (może być 0). W ten sposób w ciągu skompresowanym liczba wystąpień pojawia się wyłącznie po każdym wystąpieniu 2 takich samych wartości

LZ78 Opracowany przez naukowców o nazwiskach Lempel i Ziv Bazuje na wyszukiwaniu powtórzeń Powtórzenia wyszukiwane są na bazie słownika ale nie ma potrzeby przechowywania słownika jest on tworzony / odtwarzany na podstawie ciągu kompresowanego / dekompresowanego

LZ78 przebieg Założenia początkowe: Słownik jest zbiorem pustym Obraz ułożony liniami w ciąg

LZ78 przebieg Od początku obrazu do osiągnięcia końca Szukaj elementu w najdłuższego słowa w słowniku zgodnego z początkiem niezakodowanej części ciągu Gdy został znaleziony (pod indeksem n w słowniku) dołącz do niego następny element w ciągu (a) i zapisz jako kolejny element słownika. Do ciągu wynikowego dopisz parę (n, a). Przesuń się w ciągu o length(w)+1. Gdy nic nie znaleziono zapisz a (pierwszy element ciągu) jako kolejny element słownika. Do ciągu wynikowego dopisz parę (0,a). Przesuń się w ciągu o 1.

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: null Kod: null

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 1 8 (0, 8)

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 1 2 8 210 (0, 8)(0, 210)

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 1 2 3 8 210 8 210 (0, 8)(0, 210)(1, 210)

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 1 2 3 4 8 210 8 210 8 210 8 (0, 8)(0, 210)(1, 210)(3, 8)

LZ78 Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 1 2 3 4 5 8 210 8 210 8 210 8 210 8 (0, 8)(0, 210)(1, 210)(3, 8)(2, 8)

LZ78 przebieg (dekompresja) Od początku skompresowanego ciągu do osiągnięcia końca Dla każdej pary (n, a) Do końca ciągu zdekompresowanego dodaj podciąg składający się ze słowa w (znalezionego pod indeksem n w słowniku) oraz wartości a. Gdy n=0 dodaj tylko a. Do słownika dodaj ciąg wa (lub tylko a dla n=0)

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: null Ciąg zdekompresowany: null

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 8 Ciąg zdekompresowany: 8

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 2 8 210 Ciąg zdekompresowany: 8 210

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 2 3 8 210 8 210 Ciąg zdekompresowany: 8 210 8 210

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 2 3 4 8 210 8 210 8 210 8 Ciąg zdekompresowany: 8 210 8 210 8 210 8

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 2 3 4 5 8 210 8 210 8 210 8 210 8 Ciąg zdekompresowany: 8 210 8 210 8 210 8 210 8

LZ78 Przykład Kod: (0, 8)(0, 210)(1, 210)(3, 8)(2, 8) Słownik: 1 2 3 4 5 8 210 8 210 8 210 8 210 8 Ciąg zdekompresowany: null

LZ78 problemy Jak zapisywać ciąg Kodu (pary) Indeksy jaki zakres? Wartości stała ilość bitów dla koloru (8 lub 24) Typowe rozwiązania Zakres indeksu ustalony odgórnie, gdy zapełnimy słownik to alternatywnie: Przestajemy zapisywać nowe słowa do słownika Czyścimy słownik i kontynuujemy od zera Nadpisujemy słowa od początku słownika

LZ78 problemy Czy musimy zawsze zapisywać drugi element pary? Konieczne na początku do zapisania nieistniejącego w słowniku poziomu jasności. Na dalszym etapie już niepotrzebne a zmniejsza stopień kompresji

LZW Modyfikacja LZ78 zaproponowana przez Welsha Do ciągu Kodu zapisujemy tylko indeksy słów w słowniku Na początku słownik napełniamy wszystkimi dostępnymi wartościami poziomu jasności (0-255). Powstaje w ten sposób alfabet, z którego algorytm może korzystać w przypadku znalezienia nowego znaku. Do słownika standardowo dopisywany jest znaleziony podciąg + kolejna wartość

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: null 9 211 8 210

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 9 9 211 257 8 210 8 210

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 9 211 257 258 8 210 8 210 210 8 9 211

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 9 211 257 258 259 8 210 8 210 210 8 8 210 8 9 211 257

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 9 211 257 258 259 260 8 210 8 210 210 8 8 210 8 8 210 8 210 9 211 257 259

LZW Przykład Ciąg kompresowany: 8 210 8 210 8 210 8 210 8 Słownik: Kod: 9 211 257 258 259 260 8 210 8 210 210 8 8 210 8 8 210 8 210 9 211 257 259 258

LZW dekompresja Dekompresja napotyka problem niewystarczających danych Koder zakodowuje w i dodaje do słownika wa Dekoder odkodowuje w ale nie może dodać wa do słownika bo nie zna jeszcze wartości a Rozwiązanie: Do słownika dodawane jest niepełne słowo w?. W następnym kroku? Zastępowany jest pierwszą literą kolejnego odkodowanego fragmentu

LZW dekompresja - przebieg Na wejściu ciąg liczb Kodu k 1,,k n W słowniku umieszczone wszystkie możliwe wartości jasności (0-255) Dla i=1,2,,n Jeżeli w poprzednim kroku dodano element w? to zamień go na ws[k i ][1]. (S[k i ] element w słowniku zapisany pod indeksem k i ) Do odkodowanego tekstu dodaj na końcu S[k i ] Do słownika dodaj S[k i ]?

LZW Przykład (dekompresja) Krok 1 A Kod: 9 211 257 259 258 S[k 1 ][1] = 8 Słownik: 9 211 8 210 Ciąg zdekompresowany: null

LZW Przykład (dekompresja) Krok 1 B Kod: 9 211 257 259 258 S[k 1 ][1] = 8 Słownik: 9 211 257 8 210 8? Ciąg zdekompresowany: 8

LZW Przykład (dekompresja) Krok 2 A Kod: 9 211 257 259 258 S[k 2 ][1] = 210 Słownik: 9 211 257 8 210 8 210 Ciąg zdekompresowany: 8

LZW Przykład (dekompresja) Krok 2 B Kod: 9 211 257 259 258 S[k 2 ][1] = 210 Słownik: 9 211 257 258 8 210 8 210 210? Ciąg zdekompresowany: 8 210

LZW Przykład (dekompresja) Krok 3 A Kod: 9 211 257 259 258 S[k 3 ][1] = 8 210 Słownik: 9 211 257 258 8 210 8 210 210 8 Ciąg zdekompresowany: 8 210

LZW Przykład (dekompresja) Krok 3 B Kod: 9 211 257 259 258 S[k 3 ][1] = 8 210 Słownik: 9 211 257 258 259 8 210 8 210 210 8 8 210? Ciąg zdekompresowany: 8 210 8 210

LZW Przykład (dekompresja) Krok 4 A Kod: 9 211 257 259 258 S[k 4 ][1] = 8 210? Słownik: 9 211 257 258 259 8 210 8 210 210 8 8 210 8 Ciąg zdekompresowany: 8 210 8 210

LZW Przykład (dekompresja) Krok 4 B Kod: 9 211 257 259 258 S[k 4 ][1] = 8 210 8 Słownik: 9 211 257 258 259 260 8 210 8 210 210 8 8 210 8 8 210 8? Ciąg zdekompresowany: 8 210 8 210 8 210 8

LZW Przykład (dekompresja) Krok 5 A Kod: 9 211 257 259 258 S[k 5 ][1] = 210 8 Słownik: 9 211 257 258 259 260 8 210 8 210 210 8 8 210 8 8 210 8 210 Ciąg zdekompresowany: 8 210 8 210 8 210 8

LZW Przykład (dekompresja) Krok 5 A Kod: 9 211 257 259 258 S[k 5 ][1] = 210 8 Słownik: 9 211 257 258 259 260 8 210 8 210 210 8 8 210 8 8 210 8 210 Ciąg zdekompresowany: 8 210 8 210 8 210 8 210 8

LZW w GIF Początkowo słownik ma rozmiar 2 b+1 gdzie b jest ilością bitów indeksu (1-8). 512 słów dla standardowego indeksu 256 kolorów z tego połowa zajęta na starcie Rozmiar słownika jest podwajany po wypełnieniu aż do osiągnięcia 4096 Po dotarciu do końca dostępnego zakresu słownik przestaje być uzupełniany

Huffman Algorytm Huffmana ogłoszono w 1952r. Główna idea polega na wytworzeniu słownika zawierającego wyłącznie litery alfabetu kodowanej informacji (w przypadku grafiki pojedyncze poziomy jasności) Indeksy dla poziomów nie mają stałej długości i są dobierane tak aby najczęściej występujący w obrazie otrzymał najkrótszy indeks (np. 1 bit) Dobór kolejności realizowany na podstawie histogramu

Huffman Ale Skoro indeksy mają różną długość to jak je rozróżnić w ciągu bitów zakodowanej wiadomości? Dodanie np. unikalnego przedrostka-znacznika niweluje nam cały zysk z metody taki znacznik musiałby być długi, inaczej mógłby się powtórzyć w ciągu bitów któregoś z indeksów Rozwiązanie wprowadzenie wymogu, że żadne słowo kodowe nie może być początkiem innego słowa (tzw kodowanie prefiksowe)

Huffman Jak maszynowo wygenerować kody prefiksowe na podstawie listy prawdopodobieństw? Zbudować drzewo binarne Do każdej wartości prowadzi tylko jedna droga. Jeżeli rozgałęzienia na prawą stronę oznaczone zostaną 0 a na lewą 1 to dla każdej wartości można określić unikatowy kod binarny. Dla danej serii danych można zbudować więcej niż jedno drzewo, co oznacza, że w czasie dekompresji potrzebne jest drzewo, według którego dane zostały zakodowane (wystarczy przesłać ciąg prawdopodobieństw / histogram i odbudować drzewo)

Huffman przykład generacji kodów Wstępne posortowanie prawdopodobieństw (opcja) Źródło: Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3

Huffman przykład generacji kodów Elementy ciągu są korzeniami n drzew Redukujemy kolejno ilość drzew zamieniając dwa korzenie na nowy o prawdopodobieństwie = sumie prawdopodobieństw usuniętych Usunięte korzenie stają się gałęziami/liściami nowego korzenia W tym przykładzie do redukcji wybieramy dwa najmniejsze prawdopodobieństwa z bieżącego ciągu Źródło: Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3

Huffman przykład generacji kodów W efekcie otrzymujemy jedno drzewo, którego korzeń ma prawdopodobieństwo 1 a liściami są wszystkie prawdopodobieństwa/poziomy jasności Opisujemy drzewo wartościami bitów (0 zawsze po tej samej stronie) Kod poziomu jasności to konkatenacja bitów od korzenia do odpowiedniego liścia Źródło: mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3

Huffman przykład generacji kodów Źródło: Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3

Huffman przykład generacji kodów (duża różnica prawdopodobieństw) Źródło: Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3

Huffman - jakość Dla tego przypadku entropia wynosi 1,68 a średnia ilość bitów kodu 1,694 (znowu dobry wynik) Jednak nie zawsze Huffman radzi sobie tak dobrze. W przypadku powtarzających się dłuższych sekwencji algorytm LZW/LZ78 wychwyci tą sekwencję i zapisze ją w słowniku (następnie sekwencje sekwencji ) Algorytm Huffmana będzie powtarzał kodowanie każdej podsekwencji z powodu braku słów wieloznakowych w słowniku

Huffman - jakość Z drugiej strony omawiany przykład przedstawia sytuację gdy prawdopodobieństwa wystąpienia poszczególnych stanów są zbliżone do siebie co spowodowało równomierne rozłożenie ilości bitów na poszczególne kody Gdyby tak było zawsze nie było by potrzeby generowania drzewa binarnego

JPEG Opracowanie formatu przez Joint Photographic Expert Group - 1986 Wprowadzenie jako standard ISO 1991 Kompresja stratna bazująca na dziedzinie częstotliwościowej

JPEG przebieg algorytmu 1. Konwersja obrazu kolorowego do składowej jasności i sk. Koloru (YIQ) 2. Podział obrazu na bloki (8x8) Dla każdego bloku 3. Obliczenie DCT dla bloku 4. Kwantyzacja wyników 5. Konwersja tablicy wyników na wektor 6. Zakodowanie wektora wyników

JPEG Konwersja obrazu kolorowego do składowej jasności i sk. Koloru (Y C b C r ) Konwersja RGB do Y C b C r jest dokonywana przekształceniem Y = 0.299R + 0.587G + 0.114B C b = 0.169R 0.331G + 0.500B = 0.564(B Y ) C r = 0.500R 0.418G 0.081B = 0.713(R Y ) Wynikiem są tablica luminancji Y i 2 tablice chrominancji C b C r Konwersja jest stratna bo wartości poszczególnych składowych są zaokrąglane Dodatkowo do C b i C r dodawana jest wartość 128

JPEG Podział obrazu na bloki (8x8) Każda z tablic jest dzielona na bloki (podtablice) o wymiarach 8x8 Indeksowanych x=(0,1,,7) y=(0,1,,7) Dalsze operacje przeprowadzane są dla każdego z bloków oddzielnie

JPEG Obliczenie DCT dla bloku Dyskretna Transformata Kosinusowa dla bloku 8x8 wyraża się wzorem u, v pozycja w tablicy 8x8 wyników Bardzo ważna cecha: DCT jest odwracalna

JPEG DCT - idea Zamiast rozłożenia przestrzennego wartości otrzymujemy rozkład częstotliwości tego kawałka obrazu Składowa stała Źródło: Jacek Jarnicki Kompresja obrazów statycznych algorytm JPEG

JPEG DCT - idea Zamiast rozłożenia przestrzennego wartości otrzymujemy rozkład częstotliwości tego kawałka obrazu Źródło: Jacek Jarnicki Kompresja obrazów statycznych algorytm JPEG

JPEG DCT Z reguły DCT bloku obrazu będzie przypominać taki wykres Źródło: Jacek Jarnicki Kompresja obrazów statycznych algorytm JPEG

JPEG Obliczenie DCT dla bloku - przykład f(x,y) F(u,v) Zakres wartości F(u,v) wielokrotnie większy od f(x,y) to gdzie kompresja?

JPEG przebieg algorytmu Kwantyzacja wyników Przykładowy efekt kwantyzacji

JPEG przebieg algorytmu Konwersja tablicy wyników na wektor Odczyt wartości z tablicy algorytmem Zig-Zag Powstaje wektor zawierający długie ciągi zer, pierwsza wartość to tzw. Składowa stała (DC)

Tak przygotowany ciąg koduje się metodą bezstratną Huffmana

Kod A Kod B Kod A Kod B Kod A Kod B

JPEG przebieg algorytmu Zakodowanie wektora składowych częstotliwościowych Kod A Kod B Kod A Kod B Kod A Kod B

JPEG przebieg algorytmu Zakodowanie wektora składowych częstotliwościowych

JPEG przebieg algorytmu Zakodowanie wektora składowych częstotliwościowych Kod A Kod B Kod A Kod B Kod A Kod B

Zadanie referatowe Kompresja PNG Kompresja JPG2000