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

Podobne dokumenty
KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Kompresja obrazów w statycznych - algorytm JPEG

Inżynieria obrazów cyfrowych. Ćwiczenie 5. Kompresja 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 sekwencji obrazów - algorytm MPEG-2

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

Kompresja sekwencji obrazów

Joint Photographic Experts Group

Wybrane metody kompresji obrazów

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

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

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

Przetwarzanie obrazu cyfrowego

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

Klasyfikacja metod kompresji

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Klasyfikacja metod kompresji

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Transformaty. Kodowanie transformujace

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

Kody Tunstalla. Kodowanie arytmetyczne

Temat: Algorytm kompresji plików metodą Huffmana

Kompresja danych DKDA (7)

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kodowanie i kompresja Streszczenie Studia Wieczorowe Wykład 10, 2007

Zastosowanie kompresji w kryptografii Piotr Piotrowski

Kompresja video (MPEG)

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

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.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Podstawowe pojęcia. Teoria informacji

Python: JPEG. Zadanie. 1. Wczytanie obrazka

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

Kodowanie informacji

Zastosowania grafiki komputerowej

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

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

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

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

W11 Kody nadmiarowe, zastosowania w transmisji danych

Przetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.

Transformata Fouriera

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

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

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

dr inż. Piotr Odya Wprowadzenie

Obraz jako funkcja Przekształcenia geometryczne

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

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

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

Kodowanie źródeł sygnały video. Sygnał video definicja i podstawowe parametry

Bogusław Jackowski GRAFIKA DYSKRETNA BACHOTEK 1998

Inżynieria obrazów cyfrowych. Ćwiczenie 3. Wybrane modele kolorów i ich zastosowania

Pracownia Komputerowa wykład V

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

2 Kryptografia: algorytmy symetryczne

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Instrukcja do pracowni specjalistycznej

Fundamentals of Data Compression

Kompresja dźwięku w standardzie MPEG-1

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Podstawy transmisji multimedialnych podstawy kodowania dźwięku i obrazu Autor Wojciech Gumiński

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

Poradnik Kompresja JPEG r sekwencyjnej kompresji bazowej JPEG YCbCr RLE Baseline Optimized

dr inż. Jacek Naruniec

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

TECHNIKI MULTIMEDIALNE

Kodowanie predykcyjne

Program wykładu. 1. Systemy rejestracji obrazów technologie CCD, CMOS

ZADANIE 1. Rozwiązanie:

Teoria Informacji - wykład. Kodowanie wiadomości

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

Percepcyjne kodowanie dźwięku

Przetwarzanie i transmisja danych multimedialnych. Wykład 7 Transformaty i kodowanie. Przemysław Sękalski.

Technologie cyfrowe semestr letni 2018/2019

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

Podstawy kompresji danych

Kodowanie informacji. Kody liczbowe

Techniki wizualizacji. Ćwiczenie 2. Obraz cyfrowy w komputerze

Temat 7. Dekodery, enkodery

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

Nowoczesne metody emisji ucyfrowionego sygnału telewizyjnego

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

FFT i dyskretny splot. Aplikacje w DSP

Akwizycja obrazów. Zagadnienia wstępne

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

LABORATORIUM TELEMONITORINGU OBIEKTÓW I AGLOMERACJI. Temat: Metody anonimizacji obrazu

Formaty plików graficznych

Techniki multimedialne

Niezawodność i diagnostyka systemów cyfrowych projekt 2015

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

Przedstawiamy Państwu tekst będący

3. Macierze i Układy Równań Liniowych

Sieci neuronowe - projekt

Kody splotowe. Zastosowanie

Grafika Komputerowa Wykład 2. Przetwarzanie obrazów. mgr inż. Michał Chwesiuk 1/38

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

Transkrypt:

Założenia i obszar zastosowań KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG Plan wykładu: Geneza algorytmu Założenia i obszar zastosowań JPEG kroki algorytmu kodowania obrazu Założenia: Obraz monochromatyczny Tablica liczb całkowitych, opisujących jasność punktów obrazu. Obraz barwny Tablice liczb całkowitych (zazwyczaj trzy), opisujące obraz w języku przyjętego modelu barw n.p. dla modelu RGB trzy tablice określające zawartości trzech barw podstawowych. Zastosowanie algorytmu: Kompresja cyfrowych obrazów fotograficznych. Geneza algorytmu JPEG - algorytm kodowania obrazu Joint Photographic Expert Group - 1986 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et Télégraphie Standard ISO - 11 1. Konwersja obrazu do modelu luminancjachrominancja (obrazy barwne) 2. Podział obrazu na bloki 3. Obliczenie transformaty kosinusowej dla bloków 4. Kwantyzacja współczynników transformaty 5. Konwersja tablicy współczynników transformaty do postaci wektora 6. Kodowanie entropne wektora współczynników 1

Krok 1 - Konwersja obrazu do modelu YIQ (YUV, YC b C r ) Przykładowo, dla modelu RGB obraz opisany jest przy pomocy trzech tablic: R r, G g, B b Konwersja polega na opisaniu obrazu przy pomocy trzech nowych tablic Y, I, Q, których elementy oblicza się według zależności: y i q 0.229 0.168 0.212 0.58 0.25 0.528 0.114 r 0.321 g 0.311 b Krok 3 - Obliczanie transformaty kosinusowej (DCT) dla bloków Transformata prosta (DCT): F( u,v ) f ( x, y ) C( u )C( v ) 4 1 4 u0 v0 x0 y0 Transformata odwrotna (DCT -1 ): 1 / gdzie C( u ) 1 C( u )C( v f ( x, y )cos )F( u,v )cos 2 dla u 0 i dla u 0 2x 1 2 y 1 u cos v 16 16 2x 1 2 y 1 u cos v 16 16 1 / C( v ) 1 2 dla v 0 dla v 0 Krok 2 Podział obrazu na bloki Własności transformaty kosinusowej Po wykonaniu konwersji obraz jest opisany przy pomocy trzech nowych tablic: Y y, I i, Q q Tablica Y określa tak zwaną luminancję, natomiast U i V chrominancję. Podział obrazu na bloki Tablice Y, U i V po przeskalowaniu tak, że ich elementy stają się liczbami całkowitymi dzieli się na bloki (mniejsze tablice) o rozmiarze 8x8, opisane funkcją. Fragment obrazu płaszczyzna Blok obrazu f ( x, y ) x 0,1,..., y 0,1,..., Blok jako funkcja Transformata DCT funkcji 2

Własności transformaty kosinusowej Funkcja i jej transformata dla obrazu fotograficznego - przykład Fragment obrazu szachownica Blok obrazu = 186 198 1 190 182 1 182 19 19 184 183 16 13 12 15 184 188 182 180 18 14 12 11 166 132 130 139 146 151 169 191 201 131 134 13 140 139 139 139 138 153 15 161 12 1 145 89 49 190 18 192 196 120 43 39 4 16 184 18 112 41 39 43 44 = 1.204 0.132-0.0212-0.0364 0.0023 0.0088 0.0023 0.0002 0.2165-0.158 0.0319 0.0240-0.0012-0.0143-0.0025-0.0002-0.008 0.1324 0.0194-0.0460-0.0065 0.0029 0.0046 0.0001 0.0169-0.0018-0.0613 0.0242 0.0146-0.0103-0.0063-0.0006-0.0315-0.0626 0.052-0.0192-0.0225 0.0000 0.0069-0.0004 0.028 0.0069-0.0122-0.0150 0.0260 0.0086-0.0065 0.0001 0.0123 0.0115-0.0166 0.0300-0.0216-0.005 0.0049 0.0004-0.0005 0.0352 0.0060-0.0166 0.0128 0.0052-0.0039-0.0005 * 1.0e+003 Blok jako funkcja Transformata DCT funkcji Własności transformaty kosinusowej Krok 4 - Kwantyzacja współczynników transformaty DCT Fragment obrazu fotograficznego Blok obrazu F Q ( u,v ) F Q (u,v) Integer F( u,v ) Round Q( u,v ) Q( u,v ) 16 12 14 14 18 24 49 2 11 12 13 1 22 35 64 92 10 14 16 22 3 55 8 95 16 19 24 29 56 64 8 98 24 26 40 51 68 81 103 112 40 58 5 8 109 104 121 100 51 60 69 80 103 113 120 103 61 56 56 62 92 101 1 18 24 4 Q( u,v ) 18 21 26 24 26 56 4 66 24 26 40 58 51 60 61 56 Blok jako funkcja Transformata DCT funkcji dla luminancji Y lub obrazów szarych dla chrominancji U i V 3

Transformata dla obrazu fotograficznego po kwantyzacji - przykład Kodowanie i dekodowanie bloku dwa przykłady = 1.204 0.132-0.0212-0.0364 0.0023 0.0088 0.0023 0.0002 0.2165-0.158 0.0319 0.0240-0.0012-0.0143-0.0025-0.0002-0.008 0.1324 0.0194-0.0460-0.0065 0.0029 0.0046 0.0001 0.0169-0.0018-0.0613 0.0242 0.0146-0.0103-0.0063-0.0006-0.0315-0.0626 0.052-0.0192-0.0225 0.0000 0.0069-0.0004 0.028 0.0069-0.0122-0.0150 0.0260 0.0086-0.0065 0.0001 0.0123 0.0115-0.0166 0.0300-0.0216-0.005 0.0049 0.0004-0.0005 0.0352 0.0060-0.0166 0.0128 0.0052-0.0039-0.0005 * 1.0e+003 Dla obrazu fotograficznego przed kompresją po kompresji i dekompresji f * (x,y) F Q (u,v) = 5 12-2 -2 0 0 0 0 18 15 2 1 0 0 0 0-1 0 1-2 0 0 0 0 1 0-3 1 0 0 0 0-2 -3 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Dla obrazu szachownica przed kompresją po kompresji i dekompresji f * (x,y) Odwrócenie wykonanych operacji - dekodowanie Integer Round (DCT -1 ( F Q (u,v)*q(u,v) )) f * (x,y) Krok 5 - Konwersja tablicy współczynników do postaci wektora F Q (u,v) [DC, AC 1, AC 2,..., AC 63 ] = f*(x,y) = 186 198 1 190 182 1 182 19 19 184 183 16 13 12 15 184 188 182 180 18 14 12 11 166 132 130 139 146 151 169 191 201 131 134 13 140 139 139 139 138 153 15 161 12 1 145 89 49 190 18 192 196 120 43 39 4 16 184 18 112 41 39 43 44 183 186 18 182 16 18 188 198 18 188 196 192 180 169 168 11 169 14 18 15 10 10 16 183 14 140 133 135 148 168 186 19 131 126 126 135 149 153 146 136 150 160 13 18 163 12 82 51 16 190 195 12 125 5 44 31 181 185 168 114 50 19 32 58 Algorytm zig-zag (A. G. Tescher 198) F Q (u,v) = 5 12-2 -2 0 0 0 0 18 15 2 1 0 0 0 0-1 10 1-2 0 0 0 0 1 0-3 1 0 0 0 0-2 -3 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [DC, AC 1,...,AC 63 ] = [5, 12, 18, -1, 15, -2, -2, 2, 10, 1, -2, 0, 1, 1, 0, 0, 0, -2, -3, -3, 1, 0, 0,..., 0] 4

Krok 6 Kodowanie wektora współczynników Kodowanie współczynników DC - algorytm wektor - [DC, AC 1, AC 2,..., AC 63 ] kodowanie DC dla bloków obrazu (tablicy bloków) kodowanie AC 1, AC 2,..., AC 63 dla bloku Kodowanie entropne - długość słowa kodowego odpowiadającego kodowanemu elementowi (symbolowi) jest różna dla różnych elementów. Elementy, które statystycznie występują częściej mają krótsze słowa kodowe. Powoduje to, że średnia długość całego ciągu kodowego jest mniejsza. 1. Zbudować wektor DC = [ DC 0, DC 1, DC 2,..., DC k, DC k+1,..., DC m ] 2. Wyliczyć wektor Δ = [ Δ 0, Δ 1,..., Δ i,..., Δ m ] ze wzoru: Δ 0 = DC 0 Δ i = DC i -DC i-1 i = 1,2,...,m 3. Elementy wektora Δ = [ Δ 0, Δ 1,..., Δ i,..., Δ m ] zakodować przy pomocy tabeli kodu Huffmana (tabela 1): Kodowanie współczynników DC Kodowanie współczynników DC - algorytm W kroku 2 obraz został podzielony na bloki o rozmiarze 8x8 pikseli. DC 0 DC 1 DC 2 blok 0 blok 1 blok 2 DC k DC k+1 blok k blok k+1 DC 2k blok 2k............ DC i -składowa stała dla bloku i, i = 0, 1,..., m m - liczba bloków obrazu Do kodowania składowej stałej stosuje się algorytm DPCM. Tabela 1. Wartość Δ i Size Typowy kod Huffmana Bity dodatkowe dla Size 0 0 00 - -1, 1 1 010 0,1-3,-2, 2, 3 2 011 00,01,10,11 -,,-4,4, 3 100 000,,011,100,,111-15,,-8,8,,15 4 101 0000,,0111,1000,,1111-204, -1024,1024,,204 11 1 1111 1110 000 0000 0000,,111 1111 1111 Kodowanie przebiega następująco: 5

Kodowanie współczynników DC - algorytm Kodowanie współczynników AC Dla kolejnego Δ i określić Size np. przy pomocy wzoru: Size = Integer Round [log 2 ( abs(δ i ) ) +1] Dla wyznaczonego Size z tabeli odczytać odpowiedni kod Huffmana i w zależności od wartości Δ i bity dodatkowe. Kodem Δ i jest ciąg bitów złożony z kodu Huffmana dla Size i bitów dodatkowych. Przykład: Dla kolejnego bloku ciąg współczynników ma postać: [DC, AC 1,...,AC 63 ] = [5, 12, 18, -1, 15, ] Dla poprzedniego bloku składowa stała DC wynosi 1. Przykładowa postać wektora współczynników AC: [ AC 1,...,AC 63 ] = [2, 18, -1, 5, -2, -2, 2, 10, 1, -2, 0, 1, 1, 0, 0,.., 0] Wektor zawiera elementy niezerowe, przedzielone niekiedy ciągami zer. [..., AC i-1, 0,..., 0, AC i, 0,..., 0, AC i+1, 0,... ] Ciąg elementów koduje się przy pomocy następującej zasady. gdzie... Symbol-1 Symbol-2 Symbol-1 Symbol-2... 0,..., 0, AC i = Symbol-1 Symbol-2 Kodowanie współczynników DC - przykład Kodowanie współczynników AC Rozwiązanie: Oblicza się Δ i ze wzoru: Δ i = DC i -DC i-1 = 5 1 = 4 Dla Δ i wyznacza się Size Size = Integer Round [log 2 ( abs(4)) +1] = 3 W tabeli dla Size = 3 kod Huffmana wynosi 100, a bity dodatkowe dla Δ i = 4 mają wartość 011 Ostatecznie kod dla współczynnika Δ i = 5 jest ciągiem bitów 100 011 Symbol-1 Symbol-2 = (Runlength, Size) = (Amplitude) Runlength liczba zer pomiędzy AC i i poprzednim niezerowym AC i-1 Size liczba określająca zakres AC i Amplitude liczba wyrażajaca wartość AC i Do kodowania współczynników AC i używa się podobnie jak dla współczynników DC kodu Huffmana. 6

Kodowanie współczynników AC - algorytm Kodowanie współczynników AC - algorytm 1. Obliczyć Runlength, czyli liczbę zer pomiędzy poprzednim niezerowym AC i-1 a aktualnie kodowanym współczynnikiem AC i 2. Dla kodowanego współczynnika AC i obliczyć Size ze wzoru: Size = Integer Round [log 2 ( abs(ac i )) + 1] 3. Zakodować parę (Runlength, Size) według tabeli kodu Huffmana (tabela 2). Pokazano fragment tabeli zawierający najbardziej prawdopodobne układy (Runlength, Size).Pełna tablica ma 162 wiersze. 4. Zakodować Amplitude (używając wielkości Size obliczonej wkroku2),posługując się tabelą 3. Tabela 3. Size wartość AC i kod Amplitude 0 0 --- 1-1, 1 0, 1 2-3, -2, 2, 3 00, 01, 10, 11 3 -,,-4, 4,, 000,, 011, 100,,111 4-15,,-8, 8,,15 0000,, 0111, 1000,, 1111 11-204,,-1024,1024,,204 000 0000 0000,,111 1111 1111 Kodowanie współczynników AC - algorytm Kodowanie współczynników AC - przykład Tabela 2. (Runlength, Size) Typowy kod Huffmana (Runlength, Size) Typowy kod Huffmana (0,1) 00 (0,6) 1111000 (0,2) 01 (1,3) 1111001 (0,3) 100 (5,1) 1111010 EOB 1010 (6,1) 1111011 (0,4) 1011 (0,) 11111000 (1,1) 1100 (2,2) 11111001 (0,5) 11010 (,1) 11111010 (1,2) 11011 (1,4) 111110110 (2,1) 11100 (3,1) 111010 ZRL 11111111001 (4,1) 111011 EOB same zera do końca bloku ZRL ciąg 16 zer (15 zer i AC i = 0) Przykład: Zakodować zaznaczony fragment wektora współczynników AC dla bloku obrazu [ AC 1,..., AC 63 ] = [ 1, 0, 0, -2, -3, ] Kodowanie jest więc ciąg, 0, 0, -2, (dwa zera i liczba -2) dla AC i = 2 wartość Size wynosi 2, z tabeli 2 dla pary (Runlength, Size) = (2, 2) odczytuje się kod 11111001, z tabeli 3 dla Size = 2 i AC i = -2 odczytuje się kod 01, Ostatecznie ciągowi, 0, 0, -2, odpowiada kod binarny 11111001 01

Koder JPEG (uproszczony) Obraz testowy 256 x 256 x 8 = 524.288 bitów = 64kB Bloki 8x8 danych źródłowych DCT Kwantyzator Koder bitowy Dane skompresowane Tablice kwantyzacji Tablice kodu Huffmana Obraz w formacie BMP (66.616 B) Dekoder JPEG (uproszczony) Kompresja JPEG - porównanie obrazów po kompresji Dane skompresowane Dekoder bitowy Dekwantyzator DCT -1 Bloki 8x8 danych odtworzonych Tablice kodu Huffmana Tablice kwantyzacji Duża kompresja (24.295 B) Średnia kompresja (31.526 B) Mała kompresja (56.956 B) 8

Kompresja JPEG - porównanie szczegółów Obraz oryginalny (66.616 B) Duża kompresja (24.295 B) 9