• Nie Znaleziono Wyników

Technologie Informacyjne i Komunikacyjne

N/A
N/A
Protected

Academic year: 2022

Share "Technologie Informacyjne i Komunikacyjne"

Copied!
60
0
0

Pełen tekst

(1)

Technologie Informacyjne i Komunikacyjne

Wykład 6

Kompresja danych, zapis obrazu

Jan Suffczyński

Jan.Suffczynski@fuw.edu.pl

(2)

Plan wykładów

Data Temat wykładu

1 15-10-2020 Technologia półprzewodnikowa stojąca za działaniem komputera (I) 2 29-10-2020 Technologia półprzewodnikowa stojąca za działaniem komputera (II) 3 26-11-2020 Systemy zapisu danych, kodowanie znaków

4 10-12-2020 Sztuczna inteligencja/deep learning

5 07-01-2021 Wprowadzenie do języka Wolfram Mathematica 6 21-01-2021 Cyfrowy zapis dźwięku i obrazu

28-01-2021 Test pisemny

(3)

Materiały z wykładu

• http://www.fuw.edu.pl/~jass/TIK2020.html

• Użytkownik: student

• Hasło: student (także do nagrań na vimeo)

(4)

Plan wykładu

Wprowadzenie

Kompresja danych

• Zasady kompresji

• Metody kompresji

– Kompresja bezstratna. Przykład: metoda Huffmana – Kompresja stratna. Przykład: JPEG

Sposoby kodowania obrazu

• Grafika rastrowa

• Grafika wektorowa

(5)
(6)
(7)
(8)

2010 2015 2020

(9)

Liczba godzin nagrań wideo przesyłanych na YouTube na minutę

2007 2010 2013 2019

Liczba godzin

(10)

Kompresja danych - fizyczna

Dysk IBM Model 350, 5 MB, 1956

Dysk twardy, 250 MB, 1979

Pamięć typu „flash”, 32 GB, 2020

(11)

• Ogromne ilości danych w postaci cyfrowej produkowane każdego dnia

+

• Potrzeba efektywnych metod gromadzenia,

przechowywania i indeksowania, przeglądania i wymiany tych danych

kompresja

Kompresja – software’owa

(12)

Początki

• Pismo spółgłoskowe –

zapisywane tylko (!) spółgłoski (języki: arabski, aramejski,

fenicki, hebrajski, syriacki)

• W alfabecie Braile’a , 6 bitów (64 kombinacje, zapis liter, cyfr i znaków przestankowych)

- skrótowe kodowanie

najczęściej występujących krótkich słów

(13)

Kompresja

• Kompresja: zmiana sposobu zapisu danych prowadząca do zmniejszenia liczby bitów koniecznych do zapisu

– Kompresja bezstratna: z postaci skompresowanej można odtworzyć całkowitą informację wejściową. Polega na zastąpieniu powtarzających się sekwencji danych innymi, krótszymi sekwencjami.

– Kompresja stratna: z postaci skompresowanej nie można uzyskać wyjściowego zestawu danych. Polega na usunięciu (utracie) części informacji, a następnie zastosowaniu

kompresji bezstratnej.

(14)

Kompresja

Współczynnik kompresji = |x| / |y|, gdzie |x| to długość x

Kompresja bezstratna, gdy x = x’

Pozwala odtworzyć oryginalną zawartość danych

Kompresja stratna, gdy x ≠ x’

nieodwracalna! Nie jest możliwe odzyskanie danych w oryginalnej postaci.

Koder Dekoder

x y x’

dane

przed kompresją

dane

skompresowane

dane

po dekompresji

(15)

Wydajność kompresji

• Miary wydajności kompresji

– Ile bitów po kompresji na bajt przed kompresją

• 8 bitów/ bajt  brak kompresji

• 2 bity / bajt  ¼ oryginalnego rozmiaru (czyli współczynnik kompresji)

– Miara procentowa, czyli stopień kompresji

Kompresja 75%  ¼ oryginalnego rozmiaru

(16)

Kompresja możliwa dzięki

• Powtarzalności elementów danych

– Metody słownikowe – Metody statystyczne

• Zaniedbaniu niektórych informacji dzięki wykorzystaniu efektów związanych z cechami ludzkiej percepcji

– Wrażliwość ludzkiego ucha niska w niektórych obszarach częstości

– Ludzkie oko „uśrednia” obraz

(17)

Kompresja bezstratna

• Zastosowania: teksty, kod programu (wykonywalny); ostatni etap w kompresji stratnej

• Najprostsza metoda to tzw. kodowanie długości serii (ang. Run Length Encoding, RLE):

– sekwencja oryginalna: aaaabbbbbb – bajtów: 10 x 1= 10

– sekwencja skompresowana: 4a6b – bajtów: 4 x 1 = 4

– stopień kompresji: 1- 4/10 = 60%

• Metody słownikowe – poszukiwanie dokładnych wystąpień danego ciągu znaków odpowiadających np. słowom i zastępowanie ich mniejszą liczbą bitów niż jest potrzebna na zakodowanie niezwiązanych znaków tworzących słowo.

(18)

Kompresja bezstratna

• Metody statystyczne: im częściej występuje dany znak, tym mniejszej liczby bitów używa się do jego zapisu

• Przykład metody statystycznej - kodowanie Huffmana

(19)

Kodowanie Huffmana

Założenia:

• Kodowanie różnych symboli bitami o różnym rozmiarze

• Wykorzystanie statystycznego rozkładu występowania symboli

• Metoda wydajna, gdy prawdopodobieństwo wystąpienia różnych symboli jest różne

• Mniejsza liczba bitów do reprezentacji częstych symboli

• Większa liczba bitów do reprezentowania rzadkich symboli

A A B A

A A B A

Wg. www.ubc.ca / huffman.ppt

(20)

Kodowanie Huffmana - przykład

• Spodziewany rozmiar kompresji

– Oryginalnie  1/82 + 1/42 + 1/22 + 1/82 = średnio 2 bity / symbol

– Kod. Huffmana  1/83 + 1/42 + 1/21 + 1/83 = średnio 1.75 bitu / symbol

Symbol A B C D

Częstość 13% 25% 50% 12%

Oryginalny Zapis

00 01 10 11

2 bity 2 bity 2 bity 2 bity Kodowanie

Huffmana

110 10 0 111

3 bity 2 bity 1 bit 3 bity

(21)

Procedura

o Obliczanie częstotliwości występowania symboli w pliku o Tworzenie tzw. drzewa binarnego reprezentującego

"najlepsze" kodowanie

o Użycie drzewa binarnego do zakodowania (=

wytworzenia) skompresowanego pliku

o Dla każdego symbolu, określenie tzw. ścieżki od korzenia do liścia

o Rozmiar kodowania = długość ścieżki

o Zapis drzewa binarnego

Kodowanie Huffmana - algorytm

(22)

Huffman Code – Creating Tree

• Algorithm

– Place each symbol in leaf

• Weight of leaf = symbol frequency

– Select two trees L and R (initially leafs)

• Such that L, R have lowest frequencies in tree

– Create new (internal) node

• Left child  L

• Right child  R

• New frequency  frequency( L ) + frequency( R )

– Repeat until all nodes merged into one tree

(23)

Huffman Code Data Structures – Example 1

• Binary (Huffman) tree

– Represents Huffman code – Edge  code (0 or 1)

– Leaf  symbol

– Path to leaf  encoding – Example

• A = „110”, B = „10”, C = „0”, D =„111”

• Priority queue

– To efficiently build binary tree

1

1 0

0 D

C B

A

0 1

Symbol A B C D Częstość 13% 25% 50% 12%

(24)

Huffman Tree Construction 1 – Example 2

3 5 8 2 7

A C E H I symbol

number of occurences

(25)

Huffman Tree Construction 2

3 2 5 8 7

5

A H C E I

(26)

Huffman Tree Construction 3

3

5

8 2

7

5

10 A

C

H E I

(27)

Huffman Tree Construction 4

3

5

8 2

7

5

10

15 A

C

H E I

(28)

Huffman Tree Construction 5

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

E = 01

I = 00

C = 10

A = 111

H = 110

(29)

Huffman Coding Example

• Huffman code

Example:

• Input

– ACE

• Output

– (111)(10)(01) = 1111001

E = 01

I = 00

C = 10

A = 111

H = 110

(30)

Huffman Code Algorithm - decoding

– Read compressed file & binary tree – Use binary tree to decode file

• Follow path from root to leaf

(31)

Huffman Decoding 1

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

1 111001

(32)

Huffman Decoding 2

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

11 11001

(33)

Huffman Decoding 3

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

111 1001

A

(34)

Huffman Decoding 4

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

111 1001

A

(35)

Huffman Decoding 5

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

111 1001

AC

(36)

Huffman Decoding 6

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

1111001

AC

(37)

Huffman Decoding 7

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

1111001

ACE

(38)

Huffman Decoding 7

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

1111001

ACE

1100110111

(39)

Huffman Decoding 7

3

5 8

2

5 7

10 15

25 1

1 1

1

0

0 0

0 A

C E

H

I

1111001

ACE

1100110111

HECA

(40)

Konwersja stratna – algortym kompresji JPEG

CPU

Podział na bloki 8 x 8 Konwersja koloru

DCT

Kwantyzacja Zigzag reordering

Kodowanie Obraz

Obraz.jpg

(41)

Działanie algorytmu JPEG

(42)

Działanie algorytmu JPEG

Podział na bloki 8 x 8 pikseli

(43)

Przykładowy blok 8 x 8 pikseli

Działanie algorytmu JPEG

(44)

RGB Działanie algorytmu JPEG - konwersja koloru s. YCC

Y = Jasność

Cb = Zawartość niebieskiego Cr = Zawartość czerwonego

• Dla ludzkiego oka ważniejsza jest precyzja

konturów (= kontrast jasności) niż precyzja kolorów

• Konwersja przestrzeni kolorów:

[R,G,B] dla piksela -> [Y, Cb, Cr] dla piksela

(45)

Convert RGB to YCC

8x8 pikseli

1 piksel = 3 kolory (R,G,B)

Próbkowanie = (1,1,1)

(46)

Y – luminancja

Cb – różnica między luminancją a niebieskim (Y-B) Cr – różnica między luminancją a czerwonym (Y-R)

Y' w [0,1]

Cb w [-0.5, 0.5]

Cr w [-0.5, 0.5]

R', G', B' w [0, 1]

(47)

Cr Cr

Cr Cr

Cb Cb

Cb Cb

Y Y

Y Y

Cb

Cr

Obniżenie rozmiaru (downsampling)

Y wciąż określane dla każdego piksela, ale Cb i Cr dla bloku pikseli 2 x 2

Y Y

Y Y Rozmiar danych

zmniejsza się dwukrotnie

(48)

Procedura DCT (discrete cosine transform)

G(k) - transformata

(49)

Procedura DCT (discrete cosine transform)

Przesunięcie od [0, 255]

do [-128, 127]

Wynik DCT

Znaczenie każdej pozycji

w macierzy DCT

(50)

Kwantyzacja

Wynik DCT

Macierz kwantyzacji dobierana w zależności od oczekiwanego stopnia kompresji

Wynik kwantyzacji

(51)

Oryginał Po usunięciu wysokich częstości Po usunięciu niskich częstości

(52)

Zigzag reordering lub kompresja RLE (Run Length Encoding)

197 10 0 0 23 5 0 0 9 0 0 0 0 0 0 0

RLE dałoby : 197 10 0 0 23 5 0 0 9 EOB

0 1 5 6 2 4 7 12 3 8 11 13 9 10 14 15 Po przekształceniu typu zygzag:

197 10 23 9 5 EOB RLE daje:

Przykładowa macierz

(53)

Zigzag reordering lub kompresja RLE (Run Length Encoding)

197 10 0 0 23 5 0 0 9 0 0 0 0 0 0 0

RLE dałoby : 197 10 0 0 23 5 0 0 9 EOB

0 1 5 6 2 4 7 12 3 8 11 13 9 10 14 15 Po przekształceniu typu zygzag:

197 10 23 9 5 EOB RLE daje:

Przykładowa macierz

Kolejność odczytywania

komórek

(54)

Grafika rastrowa – gdy obraz zapisywany w postaci macierzy punktów, reprezentujących kolory poszczególnych punktów obrazu.

Jakość wynikowego obrazu zależy od liczby punktów, na które podzielony jest cały obraz.

Grafika wektorowa (obiektowa) - gdy obraz zapisywany w postaci figur (brył) geometrycznych i ich umiejscowienia w przestrzeni.

Skalowalna - dowolne powiększenie obrazu nie powoduje efektów rozmycia.

Kodowanie obrazu

Podstawowe formaty plików graficznych:

(55)

obraz wektorowy obraz rastrowy

(56)

Raster vs wektor

Grafika Rastrowa Wektorowa

Głębokość detali duża mała

Rozmiar pliku duży mały

Precyzja edycji duża mała

Edytowalność nie tak

Skalowanie brak pełne

Efekty (np. cień) tak nie

(57)

Formaty graficzne

Grafika rastrowa – formaty stratne:

JPEG (Joint Photographic Experts Group) najpopularniejszy format plików graficznych z kompresją stratną

TIFF (Tagged Image File Format) - popularny format plików graficznych udostępniający wiele rodzajów kompresji

Grafika rastrowa – formaty bezstratne:

PNG (Portable Network Graphics) GIF (Graphics Interchange Format)

BMP (BitMap) oraz TIFF (bez kompresji) Grafika Wektorowa

SVG (Scalable Vector Graphics) - format oparty na języku XML;

promowany jako standard grafiki wektorowej

Macromedia Flash – były, najpopularniejszy format grafiki wektorowej Adobe Animate

PS i EPS – PostScript i Encapsulated PS - uniwersalny format, będący obecnie standardem w zastosowaniach poligraficznych PDF - Portable Document Format

(58)

Czy zawsze więcej pikseli znaczy lepiej?

(59)

PPI (Pixels Per Inch) - liczba pikseli na cal długości wyświetlacza.

Model telefonu Prod. d w x h rozdzielczość PPI

Sony Xperia Z5 Premium 2015 5.5″ 12.93 square inches

(4.8″x2.7″) 3840×2160, UHD-1 801.06 Samsung Galaxy S6 2015 5.1″ 11.11 square inches

(4.4″x2.5″) 2560×1440, QHD 575.92 Apple iPhone X 2017 5.8″ 12.8 square inches

(5.3″x2.4″) 2436×1125 462.63 Apple iPhone 4 2010 3.5″ 5.65 square inches

(1.9″x2.9″) 640×960 329.65

Rozdzielczość ekranów a zdolność rozdzielcza ludzkiego oka

Im wyższa wartość PPI, tym lepiej, aż do

osiągnięcia zdolności rozdzieczej ludzkiego oka

w h

w, h - liczby pikseli w dwóch kierunkach ekranu d – przekątna w calach

(60)

Podsumowanie

• Kompresja danych: stratna i bezstratna, wydajność kompresji.

– Przykłady: metoda Huffmana i JPEG

• Sposoby kodowania obrazu – Grafika rastrowa

– Grafika wektorowa

Cytaty

Powiązane dokumenty

f) wyświetl na jednym wykresie dane i dopasowaną funkcję, wykres obejmij ramką oraz ustaw na wykresie legendę, pozwalającą na rozróżnienie danych od dopasowanej funkcji [1 pkt].

Wczytaj dane z pliku dane gr1.dat do macierzy o nazwie dane i sprawdź rozmiar macierzy [1 pkt]. Przyjmij, że w pierwszej kolumnie powstałej macierzy znajdują się współrzędne x, a

Po instalacji wtyczki, będzię ona dostępna z zakładce “Apps”, dodatkowo na górze okna Chrome pojawi się ikona terminala (czarny prostokąt w prawym rogu przeglądarki)..

Korzystając z polecenia cd przejdź do swojego katalogu robo- czego ( work ) i sprawdź, gdzie znajdujesz się LOGICZNIE i FIZYCZNIE.. Następnie wróć do katalogu domowego (w tym

Korzystając ze środowiska table i tabular zapisz w pliku nobliści.tex ta- belę zawierającą listę 5 wybranych noblistów w dziedzinie fizyki z ostatnich 5 lat, wraz z

1 punkt - jeżeli w mailu liczba błędnie napisanych wyrazów (zawierających błędy gramatyczne, leksykalne lub ortograficzne) nie przekracza 20% liczby wszystkich wyrazów. 0 punktów

Maksymalnie 1 punkt za poprawność gramatyczno-leksykalną, jeżeli w mailu liczba błędnie napisanych wyrazów (zawierających błędy gramatyczne, leksykalne lub

FAŁSZ W algorytmie z-bufora konieczne jest wstępne sortowanie wielokątów PRAWDA.. W celu przyśpieszenia rysowania okręgu wykorzystuje się własność