Inżynieria obrazów cyfrowych. Ćwiczenie 5. Kompresja JPEG
|
|
- Kazimiera Nowicka
- 7 lat temu
- Przeglądów:
Transkrypt
1 Doc. dr inż. Jacek Jarnicki Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej jacek.jarnicki@pwr.wroc.pl Inżynieria obrazów cyfrowych Ćwiczenie 5 Kompresja JPEG Zadaniem ćwiczenia jest przedstawienie algorytmu kompresji JPEG. W pierwszej części zostanie w miarę szczegółowo omówiony algorytm kompresji dla obrazów monochromatycznych i barwnych. Opisane zostaną kolejne kroki algorytmu od konwersji obrazu do modelu luminancja chrominancja, przez obliczenie transformaty kosinusowej, do kodowania entropijnego. Praktyczna część ćwiczenia będzie polegała na napisaniu uproszczonego kodeka (kodera i dekodera), który pozwoli na symulację prawie całego procesu kodowania i następnie odtwarzanie obrazu. Uproszczenia będą polegały na tym, że kodowanie będą jedynie obrazy monochromatyczne oraz (ze względu na zbyt dużą złożoność) pominięty zostanie fragment dotyczący kodowania entropijnego. W części trzeciej zaproponowano przeprowadzenie eksperymentu, polegającego na pomiarze stopnia kompresji i jakości obrazu uzyskanego w procesie kodowania i dekodowania. Rozważane będą, więc trzy zagadnienia: algorytm kompresji, implementacja w języku MATLAB uproszczonej wersji kodeka JPEG, wpływ stopnia kompresji na jakość odtwarzanego obrazu. 1. Algorytm kompresji i dekompresji obrazu JPEG jest algorytmem symetrycznym, co oznacza, że operacje wykonywane w dekoderze są odwróceniem odpowiednich operacji przeprowadzonych w koderze. W związku z tym na początku opisany zostanie w miarę szczegółowo proces kodowania, a w dalszej części już w sposób jedynie skrótowy dekoder. Zakłada się, że kompresowany jest obraz może być monochromatyczny lub barwny, czyli punkty obrazu opisane są przy pomocy odpowiednio jednej lub trzech liczb całkowitych. Ponadto zakłada się, że szerokość i wysokość obrazu, liczone w punktach są wielokrotnościami liczby 8. Jeśli warunek ten nie jest spełniony należy obraz uzupełnić przez dodanie właściwej liczby wierszy i (lub) kolumn.
2 Algorytm kodowania obrazu realizowany jest w sześciu krokach. Krok 1 - Konwersja do modelu luminancja chrominancja Krok ten wykonywany jest jedynie dla obrazów barwnych, zapisanych inaczej niż w kategoriach modelu luminancja - chrominancja. W przypadku, gdy kompresowany jest obraz monochromatyczny, niniejszy krok jest także pomijany. Jeśli założyć, że punkty obrazu źródłowego opisane są przy pomocy składowych R, G, B konwersja na model luminacja chrominancja n. p. model YUV, realizowana jest tak jak to pokazano w ćwiczeniu 3 a więc przez przeliczenie składowych opisujących barwę punktu przy pomocy wzoru: Y U V R G B (1) Jeśli, tak jak to zostało wcześniej założone, składowe R, G, B są liczbami całkowitymi to bezpośrednie zastosowanie wzoru (1) spowoduje, że składowe Y, U, V, już liczbami całkowitymi nie będą. Należy je, więc dalej przeliczyć na liczby całkowite przez n. p. zaokrąglenie, lub zastosować w miejsce wzoru (1) inną zależność dającą wynik bezpośrednio w postaci liczb całkowitych. Krok 2 Podział obrazu na bloki Na wstępie od wszystkich składowych obrazu odejmowana jest liczba całkowita równa połowie zakresu dla jej elementów. Dla przykładu, jeśli składowe Y, U, V zapisane są na 8 bitach to zakres wynosi 256, czyli odejmowana jest liczba 128. Po wykonaniu odejmowania obraz dzielony jest na tak zwane bloki (mniejsze obrazy) o rozmiarach 8x8 punktów. Następuje w ten sposób rozpad obrazu na części, które będą dalej przetwarzane już całkowicie niezależnie. Jeśli obraz jest monochromatyczny, blok opisywany jest jedną tablicą, w przypadku obrazu barwnego trzema tablicami zawierającymi odpowiednio składowe Y, U, V. Dla uproszczenia notacji i w jednym i w drugim przypadku blok będzie zapisywany jako tablica f : f f (i, j ) i 0, 1,, 7 j 0, 1,, 7 (2) Krok 3 Obliczenie transformaty kosinusowej dla bloków Dla każdego bloku obliczana jest transformata kosinusowa zadana wzorami (3) i (5). C( k )C(l ) F( k,l ) i 1 2 j 1 f (i, j )cos k cos l 16 i0 j0 16 (3)
3 f (i, j ) i 1 2 j 1 C( k )C(l )F( k,l )cos k cos l 16 k0 l0 16 (4) gdzie: 1 / 2 dla k 0 1 / 2 dla l 0 C ( k ) i C( l ) (5) 1 dla k 0 1 dla l 0 Jak widać przekształcenie polega na obliczeniu dla tablicy f o rozmiarze 88, innej tablicy F, o elementach F(k, l) również o rozmiarze 88. Wzór (4) opisuje natomiast tak zwaną transformatę odwrotną. Pozwala ona z tablicy F odtworzyć z powrotem tablicę, f, czyli blok danych opisujących obraz. Transformata odwrotna będzie wykorzystana w dekoderze. Krok 4 Kwantyzacja współczynników transformaty kosinusowej Wynikiem obliczeń z poprzedniego kroku jest tablica F, czyli transformata kosinusowa tablicy danych f opisujących blok. Elementy tablicy F są oczywiście liczbami rzeczywistymi. Przekształcenie zwane kwantyzacją ma dwa zadania. Po pierwsze usunięcie z danych, informacji opisującej szczegóły obrazu praktycznie niewidoczne dla oka ludzkiego. Po drugie zastąpienie liczb rzeczywistych przybliżeniami całkowitoliczbowymi. Kwantyzacja wykonywana jest według zależności opisanych wzorami (6), (7) i (8). Tak, więc zgodnie ze wzorem (6) efektem kwantyzacji jest tablica liczb całkowitych F = F (k, l), której wyliczenie sprowadza się do podzielenia współczynnika transformaty kosinusowej z tablicy F przez odpowiedni element tablicy kwantyzacji a następnie do zaokrągleniu wyniku do najbliższej liczby całkowitej. Do kwantyzacji współczynników transformaty dla składowych opisujących luminancje i chrominancję stosuje się zwykle różne tablice. Tablica, o elementach (k, l) zapisana przy pomocy zależności (7) jest przykładem tablicy stosowanej do kwantyzacji luminancji, natomiast zależność (8) pokazuje przykład tablicy kwantyzacji dla chrominancji. F( k,l ) F ( k,l ) Integer Round (6) ( k,l ) (k, l) (7)
4 ( k, l) (8) Dla typowych obrazów fotograficznych uzyskana w wyniku kwantyzacji tablica F = F (k, l) zawiera zwykle stosunkowo dużą liczbę zer rozmieszczonych zazwyczaj w obszarze prawego dolnego rogu tablicy. Oczywiście liczba i rozkład zer zależą od wartości współczynników transformaty F i od wartości liczb zapisanych w tablicach kwantyzacji. Jak widać we wzorach (7) i (8) liczby (k, l ) są znacznie większe w okolicy prawego dolnego rogu tablic kwantyzacji, tam, bowiem w tablicy współczynników transformaty F znajdują się współczynniki związane z praktycznie niewidocznymi dla oka ludzkiego szczegółami obrazu. Należy jeszcze raz podkreślić, że przedstawione tablice kwantyzacji (7), (8) zawierają jedynie wartości przykładowe, ilustrujące ideę eliminacji szczegółów obrazu przez całkowitoliczbowe przybliżenie jego transformaty. W praktyce wartości liczb (k, l) mogą być także inne. Dokładnie problem ten zostanie zilustrowany w praktycznej części ćwiczenia. Krok 5 Zamiana tablicy współczynników na wektor Następnym krokiem algorytmu, mającym za zadanie przygotowanie danych uzyskanych w wyniku kwantyzacji współczynników transformaty kosinusowej do kodowania, jest zamiana tablicy liczb całkowitych F = F (k, l) na wektor. Zamiana tablicy na wektor polega na zapisaniu elementów tablicy F w odpowiedniej kolejności określonej przez tak zwany algorytm zig-zag. Schemat wyjaśniający ideę algorytmy zig-zag pokazano poniżej. F F F ( k,l ) F ( 0, 0 ) ( 1, 0 ) ( 2, 0 ) F F F ( 0, 1) ( 11, ) ( 2, 1) F F F ( 0, 2 ) ( 1, 2 ) ( 2, 2 ) (9) Dla wygody dalszego opisu dogodnie jest wprowadzić następującą konwencje zapisu elementów tablicy F : F DC AC (10) 1 AC2 AC3 AC63
5 Pierwszy element wektora współczynników DC = F (0, 0) nosi nazwę składowej stałej, następne elementy AC 1 = F (0, 1), AC 2 = F (1, 0) itd. aż do AC 63 = F (7, 7), określone zgodnie z algorytmem zig-zag, nazywane są składowymi zmiennymi. Przekształcenie tablicy w wektor według schematu zig-zag ma sens, dlatego że zazwyczaj duża liczba zer znajdująca się w prawym dolnym rogu tablicy, zostanie przekształcona po zapisie w postaci wektora w długi ciąg zer. Taki ciąg jest obiektem stosunkowo prostym do oszczędnego zakodowania. Krok 6 Kodowanie entropijne wektora współczynników Ostatnim krokiem algorytmu kompresji jest kodowanie entropijne wektorów F zapisanych w postaci (10). Idea kodowania entropijnego polega na tym, że długość słowa kodowego służącego do zapisania kodowanego elementu jest powiązania z prawdopodobieństwem pojawienia się tego elementu. Żeby zminimalizować średnią długość ciągu kodowego (ciągu słów kodowych opisujących kolejne elementy), te elementy, które występują częściej kodowane są przy pomocy słów krótszych niż słowa kodowe przypisywane elementom występującym rzadziej. Kodowanie entropijne wektorów F wykonywane jest osobno dla składowych stałych DC i składowych zmiennych AC i. Kodowanie składowej stałej DC W typowym obrazie fotograficzny bliskie siebie bloki są zwykle dość podobne. Konsekwencją tego faktu jest to, że składowa stała transformaty kosinusowej dla bliskich bloków różni się zazwyczaj niewiele. W związku z tym w algorytmie JPEG zastosowano kodowanie składowej stałej nie bezpośrednio, lecz przy pomocy różnic. Po podziale na bloki przeprowadzonym w drugim punkcie algorytmu struktura obrazu jest taka jak pokazano na rysunku 1. 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 Rys. 1. Obraz podzielony na bloki
6 W poprzednich krokach algorytmu dla każdego z bloków została obliczona skwantowana składowa stała transformaty kosinusowej DC i (górny indeks określa kolejność bloku zgodnie ze schematem pokazanym na rysunku 1). Wyodrębniając z każdego bloku składowa stałą można, więc utworzyć wektor w postaci: DC k k 1 m DC DC DC,, DC DC,, DC (11) gdzie m jest liczbą bloków obrazu. Algorytm kodowania elementów wektora DC jest następujący: Zbudować wektor w postaci: gdzie: k 1,, k,, (12) m DC 0 DC 0 DC dla k 1, k k 1 k 2,,m (13) Dla kolejnych k określić liczby size przy pomocy zależności: size IntegerRound log 2 abs 1 (14) k Zakodować elementy wektora przy pomocy poniższej tabeli kodu Hoffmana. Tab. 1. Tablica kodowania dla składowej stałej Wartość k size Kod Huffmana dla size Bity dodatkowe , ,1-3,-2, 2, ,01,10,11-7,,-4,4, ,,011,100,,111-15,,-8,8,, ,,0111,1000,, , -1024,1024,, ,,
7 Ciąg bitów kodujący kolejny element k, wektora ustala się w następujący sposób. Po pierwsze dla k i liczby size obliczonej przy pomocy wzoru (14) odczytuje się z kolumny 3 w tabeli 1 bity kodu Huffmana dla size. Po drugie w zależności od pozycji k w kolumnie 1 dodaje się do odczytanych z kolumny 3 bitów kodu odpowiednie bity dodatkowe z kolumny 4. Analizując zawartość tabeli 1 można łatwo dostrzec, na czym polega idea kodowania entropijnego. Dla typowego obrazu fotograficznego prawdopodobieństwo, że blisko położone względem siebie bloki różnią się niewiele jest duże. W takim przypadku liczby k, będące różnicami składowych stałych dla bliskich bloków będą również z dużym prawdopodobieństwem niewielkie, a często będą wynosiły wręcz 0. W tabeli 1 liczbie k = 0 przypisano, więc najkrótszy kod (00). Widać także, że coraz większym wartościom k (są one coraz mniej prawdopodobne) przypisane zostały coraz dłuższe kody. Kodowanie składowych zmiennych AC 1 - AC 63 Kodowanie składowych zmiennych AC k przeprowadza się osobno dla każdego bloku. Składowa stała DC została już zapisana wcześniej. Dla każdego bloku kodowaniu podlega, więc wektor w postaci: AC 1 AC AC,, AC (15) Wykonana w kroku 4 kwantyzacja współczynników transformaty kosinusowej spowodowała, że stosunkowo dużo współczynników AC k przyjmuje wartość 0. Na wektor (15) można, więc spojrzeć jako na układ zbudowany z niektórych niezerowych współczynników AC k, przedzielonych ciągami współczynników o wartości zerowej, czyli: AC AC AC,, AC, AC,, 0 AC,, AC, k 1 0 k 0 k 1 Jeśli dwa niezerowe współczynniki AC k będą następowały bezpośrednio po sobie, przedzielający je ciąg zer można traktować jako ciąg pusty o długości 0. Przy takim sposobie podejścia dla zapisania wektora współczynników składowej zmiennej wystarczy określić regułę kodowania dla kolejnych ciągów współczynników w postaci 0,, 0, AC k. W metodzie kodowania przyjętej w algorytmie JPEG ciąg taki zapisywany jest przy pomocy pary tak zwanych symboli. W dalszym ciągu stosowana będzie następująca notacja, 0,, 0, AC k symbol _1, symbol _ 2 (16) przy czym poszczególne symbole określone są w następujący sposób: symbol _ 1 symbol _ 2 amplitude gdzie elementy runlength, size i amplitude to: runlength, size runlength liczba zer pomiędzy niezerowym współczynnikiem AC k i poprzednim niezerowym współczynnikiem AC k-1,
8 size liczba określającą zakres, w którym znajduje się wartość współczynnika AC k, amplitude liczba wyrażająca wartość współczynnika AC k. Do zakodowania ciągu współczynników w postaci 0,, 0, AC k używa się podobnie jak to miało miejsce przy kodowaniu składowej stałej metody entropijnej, wykorzystującej kod Huffmana. Jednak algorytm jest w tym przypadku trochę bardziej skomplikowany. Można go zapisać w czterech krokach: Obliczyć runlength, czyli liczbę pomiędzy niezerowym współczynnikiem AC k i poprzednim niezerowym współczynnikiem AC k-1 Dla niezerowego współczynnika AC k obliczyć size ze wzoru size IntegerRound log 2 abs 1 Zakodować parę (runlength, size) według tabeli kodu Huffmana. Fragment tabeli pokazano poniżej. k Tab. 2. Fragment tabeli kodu Huffmana dla par (runlength, size) (runlength, size) kod Huffmana (runlength, size) kod Huffmana (0, 1) 00 (0, 6) (0, 2) 01 (1, 3) (0, 3) 100 (5, 1) EOB 1010 (6, 1) (0, 4) 1011 (0, 7) (1, 1) 1100 (2, 2) (0, 5) (7, 1) (1, 2) (1, 4) (2, 1) (3, 1) ZRL (4, 1) Występujące w tabeli 2 oznaczenia EOB i ZRL służą do zapisania odpowiednio, EOB samych zer do końca bloku, ZRL ciągu 16 zer, które można traktować jako 15 zer i zerowy współczynnik AC k. Tabela 2 jest tylko fragmentem zwierającym najbardziej prawdopodobne kombinacje par (runlength, size) tabeli kodu Huffmana.
9 Pełna tabela kodowa liczy 162 wiersze i została dołączona w pliku AC_HUFFMAN.pdf Zakodować liczbę amplitude, używając liczby size obliczonej w kroku 2 posługując się następującą tablicą: Tab. 3. Tablica do zakodowania wartości współczynnika AC k jako amplitude size wartość AC k kod amplitude , 1 0, 1 2-3, -2, 2, 3 00, 01, 10, ,,-4, 4,,7 000,, 011, 100,, ,,-8, 8,, ,, 0111, 1000,, ,,-1024,1024,, ,, W ten sposób działa algorytm realizowany w koderze JPEG. Podsumowując proces kodowania można w pewnym uproszczeniu przedstawić tak jak to pokazano na rysunku 2. Bloki 8x8 danych źródłowych DCT Kwantyzator Koder bitowy Dane skompresowane Tablice kwantyzacji Tablice kodu Huffmana Rys. 2. Uproszczona struktura kodera JPEG Algorytm wykorzystuje dane opisujące kodowany obraz oraz dwa zestawy tablic, tablice kwantyzacji i tablice kodu Huffmana. W koderze po podziale obrazu na bloki następuje obliczenie transformaty kosinusowej dla poszczególnych bloków (3) a następnie kwantyzacja współczynników transformaty (6), (7), (8). Po skwantowaniu, tablice współczynników dla
10 poszczególnych bloków są przekształcane w wektory zgodnie z regułą zig-zag i kodowane entropijnie z wykorzystaniem tablic kodu Huffmana. Osobno kodowane są składowe stałe dla poszczególnych bloków i składowe zmienne w blokach. Operacje wykonywane w dekoderze są w zasadzie odwrotnością czynności wykonanych w koderze, tak jak pokazano to na rysunku 3. Skompresowane dane przekształcane są w dekoderze bitowym, wykorzystującym tablice kodu Huffmana w wektory F (10), które po zastosowaniu algorytmu odwrotnego do algorytmu zig-zag zamieniane są w tablice F (k, l) (9). Po operacji odwrotnej do kwantyzacji, czyli pomnożeniu poszczególnych elementów tablic F (k, l) przez odpowiednie elementy tablic (k, l) otrzymuje się przybliżenia tablic współczynników transformaty kosinusowej F. Kolejnym etapem jest obliczenie odwrotnej transformaty kosinusowej (4), czyli odtworzenie bloków danych. Dane skompresowane Dekoder bitowy Dekwantyzator DCT -1 Bloki 8x8 danych odtworzonych Tablice kodu Huffmana Tablice kwantyzacji Rys. 3. Uproszczona struktura dekodera JPEG
11 2. Uproszczony kodek JPEG W części praktycznej ćwiczenia należy napisać program realizujący kodek, czyli zestaw koder i dekoder, dla obrazów zapisanych według algorytmu JPEG. Kodowane będą obrazy monochromatyczne o rozmiarze 256 x 256 pikseli zapisanych na 8 bitach. Ze względu na to, że pełny proces kodowania i dekodowania jest dość skomplikowany (dotyczy to zwłaszcza kroku 6) przyjęte zostaną następujące założenia upraszczające: Kodowaniu i dekodowaniu podlegał będzie jedynie obraz monochromatyczny, czyli pominięty zostanie krok 1 polegający na zamianie opisu obrazu na model barw YUV lub YI. Ze względu na zbytnie skomplikowanie opuszczony będzie krok 5 (zamiana tablicy na wektor przy pomocy reguły zig-zag) i krok 6 (kodowanie entropijne). Wprowadzone ograniczenia spowodują, że wynikiem kodowania będzie jedynie tablica skwantowanych współczynników transformaty kosinusowej F = F (k, l) otrzymywana jako wynik kroku 4. Ponadto dla uzyskania możliwości doświadczalnego zbadania wpływu kwantyzacji na jakość kompresji wprowadzono dodatkowo zmienną nazwaną α i przyjmującą wartości całkowite 1, 2, określającą stopień kompresji. Zmieniając α można w prosty sposób wpływać na stopień kompresji w ten sposób, że przez wartość α mnożone są wszystkie elementy tablicy kwantyzacji. Zależność opisującą proces kwantyzacji przyjmuje, więc postać: F ( k, l) Integer Round F( k, l) ( k, l) (17) Wzór (17) jest, więc rozszerzoną wersją wzoru (6) a jego senes jest taki, że im większa będzie wartość zmiennej α tym elementy tablicy transformaty kosinusowej F(k, l) dzielone będą przez większe liczby i w tablicy F = F (k, l) uzyska się więcej zer. Schemat uproszczonego kodera uwzględniającego modyfikację polegającą na sterowaniu stopniem kompresji przy pomocy zmiennej α pokazano na rysunku 4. W dekoderze, którego schemat przedstawiony został na rysunku 5 operacja kwantyzacji odwrotnej dla danego stopnia kompresji α realizowana jest przy pomocy zależności: ~ przy czym F k, l ~ F k, l F ( k, l) ( k, l) (18) jest tablicą współczynników transformaty kosinusowej odtworzoną w dekoderze. Struktura uproszczonego dekodera zaprezentowana została na rysunku 5. Jak widać operacje wykonywane w koderze i dekoderze są praktycznie symetryczne.
12 Obraz źródłowy Odjęcie od wartości elementów obrazu liczby 128 Podział obrazu na bloki i obliczenie dla bloków transformaty kosinusowej, wzór (3) Tablica kwantyzacji,wzór (7) Kwantyzacja współczynników transformaty kosinusowej, wzór (17) Stopień kompresji α Obraz zakodowany F = F (k, l) Rys. 4. Schemat uproszczonego kodera JPEG Obraz zakodowany F = F (k, l) Tablica kwantyzacji, wzór (7) Odwrócenie kwantyzacji współczynników transformaty kosinusowej wzór (18) Stopień kompresji α Obliczenie dla bloków obrazu odwrotnej transformaty kosinusowej, wzór (4) Dodanie do wartości elementów obrazu liczby 128 Obraz zrekonstruowany Rys. 5. Schemat uproszczonego dekodera JPEG
13 Szkielet programu kodeka JPEG w języku MATLAB Program składał się będzie z trzech plików: Programu głównego realizującego koder i dekoder o nazwie na przykład jpeg_codec.m, funkcji quantization.m wykonującej kwantyzację według wzoru (17), funkcji dequantizatio.m służącej do odwrócenia operacji kwantyzacji, realizującej wzór (18) Funkcje quantization.m i dequantizatio.m wywoływane będą w odpowiednich miejscach programu jpeg_codec.m Wskazówki dla realizacji poszczególnych funkcji są następujące: Funkcja jpeg_codec.m Koder (realizacja procesu z rysunku 4) Utworzyć plik o nazwie jpeg_codec.m. Przeczytać z pliku Lena_gray_8.tif obraz źródłowy i umieścić go w tablicy. Przekonwertować elementy tablicy zawierającej przeczytany obraz do formatu double. Należy zastosować zwykłą konwersję tablicy liczb całkowitych do tablicy liczb typu double, czyli B = double(a) a nie B = im2double(a), która skaluje elementy do wartości z przedziału [0, 1]. Od elementów otrzymanej w poprzednim kroku tablicy należy odjąć liczbę 128. Podzielić tablicę zawierająca elementy obrazu na bloki i wykonać na elementach bloków transformatę kosinusową. Można to bardzo łatwo zrobić przy pomocy funkcji blkproc( )(patrz system pomocy Help), która wykonuje na blokach o zadanym rozmiarze w tablicy A, zadaną funkcję i wynik umieszcza w tablicy B. W programie kodeka należy po prostu wywołać funkcję w postaci: B = blkproc (A, [8,8], 'dct2'); Spowoduje to, że tablica A zostanie podzielona na bloki o rozmiarze 8 x 8, na każdym z bloków zostanie wykonana dwuwymiarowa transformata kosinusowa opisana wzorem (3), zrealizowana w pakiecie MATALB przy pomocy funkcji dct2 a wynik obliczeń umieszczony zostanie w tablicy B. Wykonać kwantyzację współczynników transformaty kosinusowej, stosując znów funkcje blkproc( ), przy czym trzecim argumentem funkcji powinna być tym razem funkcja realizująca kwantyzacje quantization. Funkcję ta należy napisać
14 samodzielnie a jej konstrukcja zostanie podana dalej. W efekcie powstanie tablica zawierająca kwantowane współczynniki transformaty kosinusowej a więc zgodnie z założeniami zakodowany obraz. Dekoder (realizacja procesu z rysunku 5) Wykonać odwrócenie kwantyzacji współczynników zakodowanego obrazu stosując jeszcze raz funkcję blkproc( ), trzecim argumentem funkcji powinna być teraz funkcja realizująca odwrócenie kwantyzacji dequantization. Podobnie jak funkcję quantization należy ja samodzielnie napisać. Stosując kolejny raz funkcję blkproc( ), tym razem z trzecim parametrem idct2 obliczyć odwrotną transformatę kosinusową dla bloków przetwarzanej tablicy. Funkcja idct2 służy w pakiecie MATLAB do obliczania odwrotnej transformaty kosinusowej opisanej wzorem (4). Do elementów otrzymanej w poprzednim kroku tablicy dodać liczbę 128. Znormalizować elementy tablicy do wartości z przedziału [0, 1] przez podzielenie ich przez liczbę 255. Wykonać konwersję tablicy na obraz w formacie uint8 przy pomocy funkcji im2uint8( )otrzymując w efekcie obraz zrekonstruowany ze skompresowanych danych. W oknie graficznym wyświetlić obraz źródłowy (przeczytany z pliku) i obraz zrekonstruowany. Funkcja qantization Zadaniem funkcji jest wykonanie kwantyzacji opisanej wzorem (17). Poszczególne etapy, jakie należy wykonać przy pisaniu funkcji są następujące: Utworzyć plik o nazwie quantization.m Zadeklarować postać funkcji wpisując w pierwszej linii pliku. function B = quantization(a) Zadeklarować zmienną alpha (współczynnik kompresji α ) i ustawić wartość tej zmiennej na przykład na 1. Zadeklarować tablicę o rozmiarze 8 x 8 zgodnie ze wzorem (7). Zakodować wzór (17) używając do zaokrąglenia funkcji round( )
15 Funkcja deqantization Funkcja ma realizować odwrócenie operacji kwantyzacji opisane wzorem (18). Struktura funkcji jest podobna do poprzednio opisanej funkcji quantization. Utworzyć plik o nazwie dequantization.m Zadeklarować postać funkcji wpisując w pierwszej linii pliku. function B = dequantization(a) Zadeklarować zmienną alpha (współczynnik kompresji) i ustawić wartość tej zmiennej na przykład na 1. Zadeklarować tablicę o rozmiarze 8 x 8 zgodnie ze wzorem (7). Zakodować wzór (18). Wykonanie programu jpeg_codec powinno spowodować wyświetlenie w oknie graficznym dwóch obrazów, obrazu źródłowego i obrazu zrekonstruowanego, czyli otrzymanego po przeprowadzeniu procesu kompresji i dekompresji. Obrazy powinny się różnić. Wiadomo, że wykonywana według powyżej opisanego algorytmu kompresja JPEG jest kompresją stratną a więc obraz zrekonstruowany nie jest już taki sam jak obraz źródłowy, bowiem z obrazu źródłowego usunięte zostały niektóre szczegóły. Zmieniając wartość współczynnika α (zrealizowanego w programie przy pomocy zmiennej alpha), przez podanie kolejnych wartości całkowitych 1, 2, itd. można wpływać na stopień kompresji i obserwować jak zmienia się jakość obrazu zrekonstruowanego. Przykłady obrazów źródłowego i zrekonstruowanego przy wartościach α = 1 i α = 10 pokazane zostały na rysunkach 6 i 7. Jak widać na rysunkach dla α = 1 obraz zrekonstruowany prawie nie różni się od źródłowego natomiast dla α = 10 można zaobserwować już znaczącą różnicę. Można przeprowadzić eksperyment polegający na zmianie współczynnik kompresji α i obserwacji obu obrazów. Ocena wizualna jest oczywiście w jakimś sensie miarodajna, jednak dla obiektywnego porównania obrazów i stwierdzenia wpływu stopnia kompresji na jakość jej rezultatu stosowane są pewne kryteria liczbowe. 3. Stopień kompresji i jakość obrazu zrekonstruowanego Stopień kompresji obrazu uzyskany w efekcie zastosowania dowolnego algorytmu kompresji można w oczywisty sposób zmierzyć porównując wielkość pliku zawierającego obraz źródłowy z wielkością pliku, w którym zapisano dane po wykonaniu kompresji. W przypadku uproszczonej wersji algorytmu, jaką zaproponowano w poprzednim punkcie nie jest to jednak bezpośrednio możliwe, bowiem algorytm jako wynik kompresji nie tworzy pliku a jedynie tablicę skwantowanych współczynników transformaty kosinusowej. Implementacja pomija, bowiem ostatni krok algorytmu, czyli kodowanie entropijne. Można jednak wprowadzić w miarę sensowne kryterium pomiaru stopnia kompresji. Kryterium takim może być na przykład liczba zer w tablicy skwantowanych współczynników transformaty kosinusowej. Można powiedzieć, że im więcej zer tym większa kompresja.
16 Rys. 6. Obraz źródłowy i zrekonstruowany dla α = 1 Rys. 7. Obraz źródłowy i zrekonstruowany dla α = 10
17 Ocena stopnia kompresji Przyjmując za kryterium oceny stopnia kompresji liczbę zer w tablicy skwantownych współczynników transformaty kosinusowej należy zmodyfikować poprzednio napisany program w sposób następujący: W programie jpeg_codec po części implementującej koder obliczyć liczbę zer w tablicy kwantowanych współczynników transformaty kosinusowej. Do obliczenia liczby zer w tablicy najlepiej jest użyć funkcji nnz( ) (patrz system pomocy Help). Dodać fragment kodu wyświetlający na konsoli liczbę odpowiadającą procentowej zawartości zer w tablicy skwantowanych współczynników transformaty kosinusowej. Po wprowadzeniu tych prostych modyfikacji należy zaobserwować jak zmienia się procentowa zawartość zer, dla różnych wartości współczynnika α. Ocena jakości obrazu zrekonstruowanego Ocenę jakości obrazu odtworzonego ze skompresowanych danych można przeprowadzić porównując obraz źródłowy i zrekonstruowany. Do porównania dwóch obrazów powszechnie stosuje się kryterium błędu średniokwadratowego MSE (Mean Square Error) wyrażonego w postaci: gdzie: n m 1 2 MSE( X, Y) xi, j yi, j (19) n m i1 j1 X tablica o elementach x(i, j) opisująca obraz źródłowy, Y tablica o elementach y(i, j) opisująca obraz zrekonstruowany, n, m rozmiary obrazów. Często także kryterium MSE przedstawia się dla wygody, w trochę innej postaci, w skali logarytmicznej. Kryterium nazywane jest wtedy PSNR (Peak Signal to Noise Ratio), co oznacza stosunek szczytowej wartości sygnału do szumu i opisane jest wzorem: 255 PSNRX, Y 20 log10 (20) MSE X, Y Jednostką PSNR jest tak zwany decybel oznaczany w skrócie jako db. Aby nie komplikować zadania w materiałach do ćwiczenia została dodana gotowa funkcja [mse, psnr] = mse_error(a, B) obliczająca dla dwóch kwadratowych obrazów wartości wskaźników MSE i PSNR.
18 Wykorzystując tą funkcję należy przeprowadzić eksperyment polegający na wyznaczeniu MSE i PSNR dla obrazów źródłowego i zrekonstruowanego dla różnych wartości współczynnika kompresji α a wyniki zestawić w tabelce lub zaprezentować na wykresie.
Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG
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
Bardziej szczegółowoKOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG
KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG Joint Photographic Expert Group - 1986 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et Télégraphie Standard
Bardziej szczegółowoKompresja obrazów w statycznych - algorytm JPEG
Kompresja obrazów w statycznych - algorytm JPEG Joint Photographic Expert Group - 986 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et Télégraphie Standard
Bardziej szczegółowoWedł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 transformacyjna. Opis standardu JPEG. Algorytm JPEG powstał w wyniku prac prowadzonych przez grupę ekspertów (ang. Joint Photographic Expert Group). Prace te zakończyły się w 1991 roku, kiedy
Bardziej szczegółowoTechniki wizualizacji. Ćwiczenie 2. Obraz cyfrowy w komputerze
Doc. dr inż. Jacek Jarnicki Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej jacek.jarnicki@pwr.wroc.pl Techniki wizualizacji Ćwiczenie 2 Obraz cyfrowy w komputerze Celem ćwiczenia
Bardziej szczegółowoKompresja sekwencji obrazów - algorytm MPEG-2
Kompresja sekwencji obrazów - algorytm MPEG- Moving Pictures Experts Group (MPEG) - 988 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et TélégraphieT
Bardziej szczegółowoKodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG
Kodowanie transformacyjne Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG Zasada Zasada podstawowa: na danych wykonujemy transformacje która: Likwiduje korelacje Skupia energię w kilku komponentach
Bardziej szczegółowoKompresja sekwencji obrazów
Kompresja sekwencji obrazów - algorytm MPEG-2 Moving Pictures Experts Group (MPEG) - 1988 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie T et TélégraphieT
Bardziej szczegółowoJoint Photographic Experts Group
Joint Photographic Experts Group Artur Drozd Uniwersytet Jagielloński 14 maja 2010 1 Co to jest JPEG? Dlaczego powstał? 2 Transformata Fouriera 3 Dyskretna transformata kosinusowa (DCT-II) 4 Kodowanie
Bardziej szczegółowoUKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH
Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Postać układu równań liniowych Układ liniowych równań algebraicznych
Bardziej szczegółowoKompresja danych DKDA (7)
Kompresja danych DKDA (7) Marcin Gogolewski marcing@wmi.amu.edu.pl Uniwersytet im. Adama Mickiewicza w Poznaniu Poznań, 22 listopada 2016 1 Kwantyzacja skalarna Wprowadzenie Analiza jakości Typy kwantyzatorów
Bardziej szczegółowoSieci neuronowe - projekt
Sieci neuronowe - projekt Maciej Barański, Kamil Dadel 15 stycznia 2015 Streszczenie W ramach projektu został zrealizowany algorytm kompresji stratnej bazujący na działaniu samoorganizującej się sieci
Bardziej szczegółowo3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
Bardziej szczegółowo12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:
PRZYPOMNIJ SOBIE! Matematyka: Dodawanie i odejmowanie "pod kreską". Elektronika: Sygnały cyfrowe. Zasadę pracy tranzystorów bipolarnych i unipolarnych. 12. Wprowadzenie 12.1. Sygnały techniki cyfrowej
Bardziej szczegółowoKodowanie informacji. Kody liczbowe
Wykład 2 2-1 Kodowanie informacji PoniewaŜ komputer jest urządzeniem zbudowanym z układów cyfrowych, informacja przetwarzana przez niego musi być reprezentowana przy pomocy dwóch stanów - wysokiego i niskiego,
Bardziej szczegółowoInżynieria obrazów cyfrowych. Ćwiczenie 3. Wybrane modele kolorów i ich zastosowania
Doc. dr inż. Jacek Jarnicki Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej jacek.jarnicki@pwr.wroc.pl Inżynieria obrazów cyfrowych Ćwiczenie 3 Wybrane modele kolorów i ich zastosowania
Bardziej szczegółowo2. Układy równań liniowych
2. Układy równań liniowych Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2017/2018 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 2. Układy równań liniowych zima 2017/2018 1 /
Bardziej szczegółowoKod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.
Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych. Jeśli bit znaku przyjmie wartość 0 to liczba jest dodatnia lub posiada wartość 0. Jeśli bit
Bardziej szczegółowo5. Rozwiązywanie układów równań liniowych
5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a
Bardziej szczegółowoKodowanie transformujace. Kompresja danych. Tomasz Jurdziński. Wykład 11: Transformaty i JPEG
Tomasz Wykład 11: Transformaty i JPEG Idea kodowania transformujacego Etapy kodowania 1 Wektor danych x 0,...,x N 1 przekształcamy (odwracalnie!) na wektor c 0,...,c N 1, tak aby: energia była skoncentrowana
Bardziej szczegółowo0 + 0 = 0, = 1, = 1, = 0.
5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,
Bardziej szczegółowoKodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,
1 Kwantyzacja skalarna Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11, 10.05.005 Kwantyzacja polega na reprezentowaniu dużego zbioru wartości (być może nieskończonego) za pomocą wartości
Bardziej szczegółowomgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. KOMPRESJA ALGORYTMEM ARYTMETYCZNYM, GOLOMBA I RICE'A Idea algorytmu arytmetycznego Przykład kodowania arytmetycznego Renormalizacja
Bardziej szczegółowoZastosowanie kompresji w kryptografii Piotr Piotrowski
Zastosowanie kompresji w kryptografii Piotr Piotrowski 1 Plan prezentacji I. Wstęp II. Kryteria oceny algorytmów III. Główne klasy algorytmów IV. Przykłady algorytmów selektywnego szyfrowania V. Podsumowanie
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Bardziej szczegółowoDef. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne
Załóżmy, że mamy źródło S, które generuje symbole ze zbioru S={x, x 2,..., x N } z prawdopodobieństwem P={p, p 2,..., p N }, symbolom tym odpowiadają kody P={c, c 2,..., c N }. fektywność danego sposobu
Bardziej szczegółowoKompresja Kodowanie arytmetyczne. Dariusz Sobczuk
Kompresja Kodowanie arytmetyczne Dariusz Sobczuk Kodowanie arytmetyczne (lata 1960-te) Pierwsze prace w tym kierunku sięgają początków lat 60-tych XX wieku Pierwszy algorytm Eliasa nie został opublikowany
Bardziej szczegółowoSortowanie zewnętrzne
Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często
Bardziej szczegółowoKodowanie i kompresja Streszczenie Studia dzienne Wykład 9,
1 Kody Tunstalla Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9, 14.04.2005 Inne podejście: słowa kodowe mają ustaloną długość, lecz mogą kodować ciągi liter z alfabetu wejściowego o różnej
Bardziej szczegółowoInstytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów
Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa Diagnostyka i niezawodność robotów Laboratorium nr 6 Model matematyczny elementu naprawialnego Prowadzący: mgr inż. Marcel Luzar Cele ćwiczenia:
Bardziej szczegółowoTransformaty. Kodowanie transformujace
Transformaty. Kodowanie transformujace Kodowanie i kompresja informacji - Wykład 10 10 maja 2009 Szeregi Fouriera Każda funkcję okresowa f (t) o okresie T można zapisać jako f (t) = a 0 + a n cos nω 0
Bardziej szczegółowoKlasyfikacja metod kompresji
dr inż. Piotr Odya Klasyfikacja metod kompresji Metody bezstratne Zakodowany strumień danych po dekompresji jest identyczny z oryginalnymi danymi przed kompresją, Metody stratne W wyniku kompresji część
Bardziej szczegółowoARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.
ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb
Bardziej szczegółowoAlgorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
Bardziej szczegółowoArytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI
Arytmetyka komputera Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka Opracował: Kamil Kowalski klasa III TI Spis treści 1. Jednostki informacyjne 2. Systemy liczbowe 2.1. System
Bardziej szczegółowoAproksymacja funkcji a regresja symboliczna
Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą
Bardziej szczegółowoPodstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.
ZAMIANA LICZB MIĘDZY SYSTEMAMI DWÓJKOWYM I DZIESIĘTNYM Aby zamienić liczbę z systemu dwójkowego (binarnego) na dziesiętny (decymalny) należy najpierw przypomnieć sobie jak są tworzone liczby w ww systemach
Bardziej szczegółowoDane obrazowe. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski
Dane obrazowe R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski www.il.pw.edu.pl/~rg s-rg@siwy.il.pw.edu.pl Przetwarzanie danych obrazowych! Przetwarzanie danych obrazowych przyjmuje trzy formy:! Grafikę
Bardziej szczegółowoObliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Bardziej szczegółowoWybrane metody kompresji obrazów
Wybrane metody kompresji obrazów Celem kodowania kompresyjnego obrazu jest redukcja ilości informacji w nim zawartej. Redukcja ta polega na usuwaniu informacji nadmiarowej w obrazie, tzw. redundancji.
Bardziej szczegółowoTransformata Fouriera
Transformata Fouriera Program wykładu 1. Wprowadzenie teoretyczne 2. Algorytm FFT 3. Zastosowanie analizy Fouriera 4. Przykłady programów Wprowadzenie teoretyczne Zespolona transformata Fouriera Jeżeli
Bardziej szczegółowoKodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości
Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład 13 1 Kody liniowe - kodowanie w oparciu o macierz parzystości Przykład Różne macierze parzystości dla kodu powtórzeniowego. Co wiemy z algebry
Bardziej szczegółowoWydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Instrukcja do pracowni specjalistycznej
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej Temat ćwiczenia: Badanie własności koderów PCM zastosowanych do sygnałów
Bardziej szczegółowoLABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q
LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q 1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone
Bardziej szczegółowoRijndael szyfr blokowy
Rijndael szyfr blokowy Andrzej Chmielowiec 24 lipca 2002 1 Podstawy matematyczne Kilka operacji w standardzie Rijndael jest zdefiniowanych na poziomie bajta, przy czym bajty reprezentują elementy ciała
Bardziej szczegółowoZad. 3: Układ równań liniowych
1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich
Bardziej szczegółowoMacierze. Rozdział Działania na macierzach
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy
Bardziej szczegółowoZajęcia wprowadzające W-1 termin I temat: Sposób zapisu wyników pomiarów
wielkość mierzona wartość wielkości jednostka miary pomiar wzorce miary wynik pomiaru niedokładność pomiaru Zajęcia wprowadzające W-1 termin I temat: Sposób zapisu wyników pomiarów 1. Pojęcia podstawowe
Bardziej szczegółowoNiezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
Bardziej szczegółowoPodstawy MATLABA, cd.
Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Przetwarzanie Sygnałów Studia Podyplomowe, Automatyka i Robotyka Podstawy MATLABA, cd. 1. Wielomiany 1.1. Definiowanie
Bardziej szczegółowoPrzedmowa 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.
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. Technika obrazu 24 W.3. Normalizacja w zakresie obrazu cyfrowego
Bardziej szczegółowoUKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH
Transport, studia I stopnia rok akademicki 2011/2012 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Uwagi wstępne Układ liniowych równań algebraicznych można
Bardziej szczegółowo8. Analiza widmowa metodą szybkiej transformaty Fouriera (FFT)
8. Analiza widmowa metodą szybkiej transformaty Fouriera (FFT) Ćwiczenie polega na wykonaniu analizy widmowej zadanych sygnałów metodą FFT, a następnie określeniu amplitud i częstotliwości głównych składowych
Bardziej szczegółowoKlasyfikacja metod kompresji
dr inż. Piotr Odya Klasyfikacja metod kompresji Metody bezstratne Zakodowany strumień danych po dekompresji jest identyczny z oryginalnymi danymi przed kompresją, Metody stratne W wyniku kompresji część
Bardziej szczegółowo2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,
2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d
Bardziej szczegółowoMetoda eliminacji Gaussa. Autorzy: Michał Góra
Metoda eliminacji Gaussa Autorzy: Michał Góra 9 Metoda eliminacji Gaussa Autor: Michał Góra Przedstawiony poniżej sposób rozwiązywania układów równań liniowych jest pewnym uproszczeniem algorytmu zwanego
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Nr 4 Algorytmy sortowania zewnętrznego 1 Wstęp Bardzo często przy rozwiązywaniu praktycznych
Bardziej szczegółowoLogiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Bardziej szczegółowoRozdział 1 PROGRAMOWANIE LINIOWE
Wprowadzenie do badań operacyjnych z komputerem Opisy programów, ćwiczenia komputerowe i zadania. T. Trzaskalik (red.) Rozdział 1 PROGRAMOWANIE LINIOWE 1.1 Opis programów Do rozwiązania zadań programowania
Bardziej szczegółowoProjekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie
Bardziej szczegółowoMetody numeryczne Wykład 4
Metody numeryczne Wykład 4 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Metody skończone rozwiązywania
Bardziej szczegółowoPython: JPEG. Zadanie. 1. Wczytanie obrazka
Python: JPEG Witajcie! Jest to kolejny z serii tutoriali uczący Pythona, a w przyszłości być może nawet Cythona i Numby Jeśli chcesz nauczyć się nowych, zaawansowanych konstrukcji to spróbuj rozwiązać
Bardziej szczegółowoStan wysoki (H) i stan niski (L)
PODSTAWY Przez układy cyfrowe rozumiemy układy, w których w każdej chwili występują tylko dwa (zwykle) możliwe stany, np. tranzystor, jako element układu cyfrowego, może być albo w stanie nasycenia, albo
Bardziej szczegółowoTechniki wizualizacji. Ćwiczenie 4. Podstawowe algorytmy przetwarzania obrazów
Doc. dr inż. Jacek Jarnicki Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej jacek.jarnicki@pwr.wroc.pl Techniki wizualizacji Ćwiczenie 4 Podstawowe algorytmy przetwarzania obrazów
Bardziej szczegółowoSystemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).
Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 1. Systemy liczbowe Cel dydaktyczny: Poznanie zasad reprezentacji liczb w systemach pozycyjnych o różnych podstawach. Kodowanie liczb dziesiętnych
Bardziej szczegółowoLICZBY ZMIENNOPRZECINKOWE
LICZBY ZMIENNOPRZECINKOWE Liczby zmiennoprzecinkowe są komputerową reprezentacją liczb rzeczywistych zapisanych w formie wykładniczej (naukowej). Aby uprościć arytmetykę na nich, przyjęto ograniczenia
Bardziej szczegółowoCyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając
Cyfrowe przetwarzanie i kompresja danych dr inż.. Wojciech Zając Wykład 7. Standardy kompresji obrazów nieruchomych Obraz cyfrowy co to takiego? OBRAZ ANALOGOWY OBRAZ CYFROWY PRÓBKOWANY 8x8 Kompresja danych
Bardziej szczegółowoKodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski
Kodowanie Huffmana Platforma programistyczna.net; materiały do laboratorium 24/5 Marcin Wilczewski Algorytm Huffmana (David Huffman, 952) Algorytm Huffmana jest popularnym algorytmem generującym optymalny
Bardziej szczegółowoLuty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
Bardziej szczegółowoSystemy liczbowe używane w technice komputerowej
Systemy liczbowe używane w technice komputerowej Systemem liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach.
Bardziej szczegółowoKwantyzacja wektorowa. Kodowanie różnicowe.
Kwantyzacja wektorowa. Kodowanie różnicowe. Kodowanie i kompresja informacji - Wykład 7 12 kwietnia 2010 Kwantyzacja wektorowa wprowadzenie Zamiast kwantyzować pojedyncze elementy kwantyzujemy całe bloki
Bardziej szczegółowoZADANIE 1. Rozwiązanie:
EUROELEKTR Ogólnopolska Olimpiada Wiedzy Elektrycznej i Elektronicznej Rok szkolny 200/20 Rozwiązania zadań dla grupy teleinformatycznej na zawody II. stopnia ZNIE ramka logiczna w technologii MOS składa
Bardziej szczegółowoRozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i,j) (i = 1,,n;j = 1,,m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F = R lub F = C, nazywamy macierzą (rzeczywistą, gdy F
Bardziej szczegółowoProgramowanie strukturalne i obiektowe. Funkcje
Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy
Bardziej szczegółowoSynteza strukturalna automatu Moore'a i Mealy
Synteza strukturalna automatu Moore'a i Mealy (wersja robocza - w razie zauważenia błędów proszę o uwagi na mail'a) Załóżmy, że mamy następujący graf automatu z 2 y 0 q 0 z 1 z 1 z 0 z 0 y 1 z 2 q 2 z
Bardziej szczegółowow analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.
Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą
Bardziej szczegółowo2 Kryptografia: algorytmy symetryczne
1 Kryptografia: wstęp Wyróżniamy algorytmy: Kodowanie i kompresja Streszczenie Wieczorowe Studia Licencjackie Wykład 14, 12.06.2007 symetryczne: ten sam klucz jest stosowany do szyfrowania i deszyfrowania;
Bardziej szczegółowoKompresja dźwięku w standardzie MPEG-1
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 7, strona 1. Kompresja dźwięku w standardzie MPEG-1 Ogólne założenia kompresji stratnej Zjawisko maskowania psychoakustycznego Schemat blokowy
Bardziej szczegółowoZestaw 3. - Zapis liczb binarnych ze znakiem 1
Zestaw 3. - Zapis liczb binarnych ze znakiem 1 Zapis znak - moduł (ZM) Zapis liczb w systemie Znak - moduł Znak liczby o n bitach zależy od najstarszego bitu b n 1 (tzn. cyfry o najwyższej pozycji): b
Bardziej szczegółowoPrzetwarzanie i transmisja danych multimedialnych. Wykład 8 Transformaty i kodowanie cz. 2. Przemysław Sękalski.
Przetwarzanie i transmisja danych multimedialnych Wykład 8 Transformaty i kodowanie cz. 2 Przemysław Sękalski sekalski@dmcs.pl Politechnika Łódzka Katedra Mikroelektroniki i Technik Informatycznych DMCS
Bardziej szczegółowoĆwiczenie 6. Transformacje skali szarości obrazów
Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 6. Transformacje skali szarości obrazów 1. Obraz cyfrowy Obraz w postaci cyfrowej
Bardziej szczegółowoTemat: Algorytm kompresji plików metodą Huffmana
Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik
Bardziej szczegółowoKompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu
Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu Mariusz Borawski Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Zbieranie danych Obraz sonarowy
Bardziej szczegółowo1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
Bardziej szczegółowoAKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ
KDEMI MORSK KTEDR NWIGCJI TECHNICZEJ ELEMETY ELEKTRONIKI LORTORIUM Kierunek NWIGCJ Specjalność Transport morski Semestr II Ćw. 4 Podstawy techniki cyfrowej Wersja opracowania Marzec 5 Opracowanie: mgr
Bardziej szczegółowoZadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Bardziej szczegółowoWykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki
Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład II Reprezentacja danych w technice cyfrowej 1 III. Reprezentacja danych w komputerze Rodzaje danych w technice cyfrowej 010010101010 001010111010
Bardziej szczegółowoSamodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =
Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,
Bardziej szczegółowoPętle. Dodał Administrator niedziela, 14 marzec :27
Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać
Bardziej szczegółowoteoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015
teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015 1 wczoraj Wprowadzenie matematyczne. Entropia i informacja. Kodowanie. Kod ASCII. Stopa kodu. Kody bezprefiksowe.
Bardziej szczegółowo; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...
Tekst na niebiesko jest komentarzem lub treścią zadania. Zadanie. Dane są macierze: A D 0 ; E 0 0 0 ; B 0 5 ; C Wykonaj poniższe obliczenia: 0 4 5 Mnożenia, transpozycje etc wykonuję programem i przepisuję
Bardziej szczegółowoZadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.
Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9
Bardziej szczegółowoLABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab
LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoArytmetyka liczb binarnych
Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1
Bardziej szczegółowoUkłady równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
Bardziej szczegółowoUrządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):
1. SYSTEMY LICZBOWE UŻYWANE W TECHNICE KOMPUTEROWEJ System liczenia - sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Do zapisu
Bardziej szczegółowoPolcode Code Contest PHP-10.09
Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania
Bardziej szczegółowoKsięgarnia internetowa Lubię to!» Nasza społeczność
Kup książkę Poleć książkę Oceń książkę Księgarnia internetowa Lubię to!» Nasza społeczność Spis treści Rozdział 1. Zastosowanie komputera w życiu codziennym... 5 Rozdział 2. Elementy zestawu komputerowego...13
Bardziej szczegółowoKilka prostych programów
Ćwiczenie 1 Kilka prostych programów Ćwiczenie to poświęcone jest tworzeniu krótkich programów, pozwalających na zapoznanie się z takimi elementami programowania jak: definiowanie stałych, deklarowanie
Bardziej szczegółowo