Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

2.

Algoritmi de compresie pentru fluxuri de date multimedia

2.1 Noiuni fundamentale de compresie a datelor


2.2 Compresia imaginilor
2.3 Compresia secvenelo video
2.4 Compresia semnalelor audio

2.5 Fonturi i caractere


2.1 Notiuni fundamentale
Motivatia: volum mare de date
Text
1 pagina cu 80 caractere/line si 64 linii/pagina si
1 byte/char = 80 * 64 * 1 * 8 = 40 kbit/pagina

Imagini
24 bits/pixel, 512 x 512 pixel/image = 512 x 512 x 24 = 8 Mbit/imagine

Audio
CD quality, sampling rate 44,1 KHz, 16 bits per sample = 44,1 x 16 = 706 kbit/s stereo:
1,412 Mbit/s

Video
Full-size frame 1024 x 768 pixel/frame, 24 bit/pixel,
30 frames/s = 1024 x 768 x 24 x 30 = 566 Mbit/s.
Webcam: 360 x 240 pixel/frame, 360 x 240 x 24 x 30 = 60 Mbit/s

=> Stocarea si transmisia fluxurilor multimediale necesita compresie!


Principiile compresiei de date

1. Lossless Compression - compresie fara pierderi


Obiectul original poate fi reconstruit complet
Rate de compresie de la 2:1 la 50:1
De exemplu: codarea Huffman

2. Lossy Compression - compresie cu pierderi


Exista o diferenta intre obiectul original si cel reconstruit
Sunt exploatate pentru compresie diferite proprietati fiziologice si psihoacustice ale urechii / ochiului
Rate de compresie chiar si pana la 100:1
Algoritmi simpli de compresie fara pierderi: Pattern Substitution

Exemplul 1: ABC -> 1; EE -> 2

Exemplul 2:
Run Length Coding

Principiu
Toate repetitiile ale aceluiasi simbol (runs - curse) dintr-un text sunt inlocuite de un numar si de simbolul propriu-zis

Exemplu
Text:
AAAABBBAABBBBBCCCCCCCCDABCBAABBBBCCD

Codare:
4A3B2A5B8C1D1A1B1C1B2A4B2C1D

Ne putem astepta la rate de compresie bune doar pentru curse mai lungi ale aceluiasi caracter. De exemplu, spatii
goale intr-un text, sau siruri de pixeli de aceeasi culoare intr-o imagine.
Run Length Coding for Binary Files

Pt. fisiere binare, putem fi siguri ca dupa o succesiune de 1 va urma o succesiune de


0 si viceversa. Este deci suficienta stocarea numarului de repetitii!

Exemplu

000000000000000000000000000011111111111111000000000 28 14 9
000000000000000000000000001111111111111111110000000 26 18 7
000000000000000000000001111111111111111111111110000 23 24 4
000000000000000000000011111111111111111111111111000 22 26 3
000000000000000000001111111111111111111111111111110 20 30 1
000000000000000000011111110000000000000000001111111 19 7 18 7
000000000000000000011111000000000000000000000011111 19 5 22 5
000000000000000000011100000000000000000000000000111 19 3 26 3
000000000000000000011100000000000000000000000000111 19 3 26 3
000000000000000000011100000000000000000000000000111 19 3 26 3
000000000000000000011100000000000000000000000000111 19 3 26 3
000000000000000000001111000000000000000000000001110 20 4 23 3 1
000000000000000000000011100000000000000000000111000 22 3 20 3 3
011111111111111111111111111111111111111111111111111 1 50
011111111111111111111111111111111111111111111111111 1 50
011111111111111111111111111111111111111111111111111 1 50
011111111111111111111111111111111111111111111111111 1 50
011111111111111111111111111111111111111111111111111 1 50
011000000000000000000000000000000000000000000000011 1 2 46 2
Variable Length Coding - Codarea cu lungime variabila

Codarea clasica a caracterelor foloseste acelasi numar de biti pentru fiecare caracter.
Daca frecventa de aparitie difera de la caracter la caracter, am putea folosi mai putini biti
pentru caracterele frecvente si mai multi pentru cele mai putin frecvente.

Exemplu
Cod 1: A B C D E ...
1 2 3 4 5 (binar)

Codarea cuvantului ABRACADABRA cu o lungime constanta a caracterului (= 5 biti):


0000100010100100000100011000010010000001
000101001000001

Cod 2: A B R C D
0 1 01 10 11

Codare: 0 1 01 0 10 0 11 0 1 01 0
Delimitatori

Codul 2 poate fi decodat fara ambiguitati doar in cazul in care exista si delimitatori ce separa cuvintele de cod.
Acesti delimitatori maresc considerabil dimensiunea fisierelor.

Ideea
Nici un cuvant de cod sa nu fie prefixul unui alt cuvant de cod! Astfel nu mai este nevoie de delimitatori.

Cod 3:

A 1 1
B 0 0
R 0 1 1
C 0 1 0
D 1 0

Rezultat: 1100011110101110110001111
Huffman Code

Se pune intrebarea cum se poate gasi odul OPTIM pentru o frecventa a caracterelor
(probabilitate) data. Algoritmul care rezolva aceasta problema a fost gasit de catre
David Huffman in 1952.

Algoritm Huffman-Code
Determina frecventele caracterelor si foloseste-le pentru nodurile terminale ale unui arbore
1. Din nodurile terminale care inca nu au fost marcate cu DONE, alege cele cu cea mai mica
frecventa si calculeaza suma lor.
2. Creeaza un nod parinte din ele si marcheaza-l cu suma celor doua noduri. Marcheaza nodurile
fiu cu 0 (stanga), si cu 1 (dreapta).
3. Marcheaza cele doua noduri finale cu DONE. Cand nu mai exista decat un singur nod marcat
cu DONE, stop (arborele este complet). Altfel, continua cu pasul 2.
Huffman Code, Exemplu

Probabilitatile caracterelor :
p(A) = 0.3; p(B) = 0.3; p(C) = 0.1; p(D) = 0.15; p(E) = 0.15

1 30% A 11
1
60
30% B 10
0

100
1 10% C
1 011
25
15% D 010
40 0
0
15% E 00
0
Codarea LZW

Abraham Lempel i Jacob Ziv au pus pe picioare un algoritm de compresie fr pierderi


bazat pe nlocuirea unor iruri de caractere i pe un dictionar dinamic att la codare ct i
la decodare
- varianta iniial n 1978
- variant ulterioar prelucrat n 1984 de ctre Terry A. Welch = LZW
- dimensiunea maxim a dicionarului = 4096 entry-uri (12 bii)
- dicionar predefinit pentru primele 256 poziii (caracterele din tabela ASCII de baz)
CODARE:
Input Model recunoscut New Entry in Dictionar
------- ---------------- -----------------------
LZWLZ78LZ77LZCLZMWLZAP L LZ (=256)
ZWLZ78LZ77LZCLZMWLZAP Z ZW (=257)
WLZ78LZ77LZCLZMWLZAP W WL (=258)
LZ78LZ77LZCLZMWLZAP LZ LZ7 (=259)
78LZ77LZCLZMWLZAP 7 78 (=260)
8LZ77LZCLZMWLZAP 8 8L (=261)
LZ77LZCLZMWLZAP LZ7 LZ77 (=262)
7LZCLZMWLZAP 7 7L (=263)
LZCLZMWLZAP LZ LZC (=264)
CLZMWLZAP C CL (=265)
LZMWLZAP LZ LZM (=266)
MWLZAP M MW (=267)
WLZAP WL WLZ (=268)
ZAP Z ZA (=269)
AP A AP (=270)
P P

Output: L Z W <256> 78 <259> 7 <256> C <256> M <258> Z A P


DECODARE:
Input Buffer New Entry in Dictionar Prefix/Output
-------------- - ----------------------- -
L L
Z Z LZ (=256) Z
W W ZW (=257) W
<256> L WL (=258) LZ
7 7 LZ7 (=259) 7
8 8 78 (=260) 8
<259> L 8L (=261) LZ7
7 7 LZ77 (=262) 7
<256> L 7L (=263) LZ
C C LZC (=264) C
<256> L CL (=265) LZ
M M LZM (=266) M
<258> W MW (=267) WL
Z Z WLZ (=268) Z
A A ZA (=269) A
P P AP (=270) P

Output: L Z W LZ 7 8 LZ7 7 LZ C LZ M WL W A P
2.5 Fonturi i caractere

Un set tipografic (typeface) este o familie de caractere grafice care n mod uzual include mai multe tipuri de mrimi i stiluri. Un font este un
set de caractere de o singur mrime i stil aparinnd unei fee tipografice particulare. Stiluri tipice pentru un font pot fi bold i italic. Alte
stiluri ca subliniere i pot fi caracteristice anumitor programe.

Mrimea caracterelor

Mrimea fonturilor este dat n mod uzual n puncte (dots)


Un punct este 1/72 sau .0138 dintr-un inch (2,54 cm) => Un font de dimensiunea 10 va avea o nlime n centimetri de 2.54 X 0.0138 X 10 =
0,35 cm.
Spaiere

Se folosete un caracter de o anumit mrime, de exemplu 10 puncte.


Se adaug dedesubt o fie imaginar de plumb, de exemplu de 2 puncte.
Se adaug la cele 10 puncte constituind mrimea cele 2 puncte spaiere pe vertical
constituind spaiul i se obine valoarea leading-ului de 12 puncte.

Condensed
spaiere pe orizontal
Regular
Expanded

AVATAR Yo kerning
AVATAR Yo

n acest paragraf, se folosete fontul Courier, un font monospaiat,


emulnd maina de scris. Alte fonturi monospaiate sunt Monaco, Pica sau
Elite. Literele se aliniaz una sub alta, pe coloane. Tehnica de kerning
nu are efect asupra acestor fonturi.
Aliniere

Alinierea textului joac un rol important n aspectul i lizibilitatea unui text, nefiind ns singurul
factor determinant. Un text uor de citit i plcut ochiului ncurajeaz cititorul la citit, putndu-l
ns foarte uor ndeprta dac nite criterii estetice i practice de baz nu sunt ndeplinite.

Aliniere la stnga creaz, conform studiilor, cel mai lizibil text. Spaierea ntre cuvinte i litere este
optim, fiind cea natural, adic cea gndit de creatorului respectivului font. Deasemenea, n
procesul de citire, ochii tiu unde ncepe urmtoarea linie, astfel nct parcurgerea unui text
devine mai uoar.

Alinierea la deapta creaz o impresie deosebit din punct de vedere estetic. Spaierea cuvintelor
i a literelor este tot cea ideal, dar lizibilitatea are de suferit din cauza inconsistenei marginii din
stnga, nealiniat, care obig ochiul la munc suplimentar n gsirea nceputului liniei. Pentru
cantiti mici de text, lizibilitatea poate fi ns neglijat n favoarea acestui stil distinct.

Alinierea centrat confer textului mai mult formalitate, siguran, dar i banalitate. n general
nceptorii sunt adepii acestui tip de aliniere pentru c este mai sigur, mai simetric i umple tot
spaiul, balansnd totul automat. Trebuie avut ns atenie la a nu cdea n banal i amatoricesc,
putndu-se evita aceste pericole prin varierea lungimii liniilor, eventual chiar gradat.

Alinierea de tip justified foreaz liniile de text s umple tot spaiul alocat paragrafului, prin
adugarea sau tergerea de spaiu ntre cuvinte i uneori chiar ntre litere. Cea mai mare
problem a textului aliniat justified, att din punct de vedere al lizibilitii ct i estetic, este
spaierea inegal a cuvintelor: unele linii au mai mult spaiu liber, altele mai puin. Aceste
iregulariti sunt enervante vizual i ntrerup procesul citirii, devenind cu att mai pregnante cu
ct lungimea liniei este mai mic dearece computerul nu mai are unde s adauge sau de unde
s tearg spaii goale.
Considerente estetice

cnd trebuie s folosii fonturi de dimensiuni mici, ncercai s le gsii pe cele mai lizibile disponibile. Fonturile decorative care
nu pot fi citite nu folosesc nimnui.

Ce scrie aici?
folosii ct mai puine fonturi posibil n cadrul aceluiai document sau proiect. Variaia poate fi obinut prin diferene de
dimensiuni i prin folosirea stilurilor bold i italic.

n blocuri mai lungi de text ajustai leading-ul la valoarea cea mai plcut pentru citit. Liniile de text prea apropiate sunt greu de
citit.

Variai dimensiunea unui font n funcie de importana mesajului de exprimat.

pentru titlurile de dimensiuni mari, ajustai spaiul dintre litere (kerning) pn cnd ntreg titlul capt un aspect legat. Golurile
din text pot tirbi la propriu un titlu!

pentru sublinierea i mrirea lizibilitii unor pasaje de text, ncercai folosirea mai multor culori i mai multor fundaluri. Pentru
mesaje clare, ncercai folosirea unui text alb pe fundal negru. Nu folosii text colorat pe fundal de culoare nchis.

dac folosii paragrafe de text aliniate central, ncercai s meninei mic numrul de linii.

pentru captarea ateniei privitorului, ncercai distorsionarea formei i a culorii textului.

nconjurai titlurile cu mult spaiu.

pentru titluri ce se ntind pe mai mult de un rnd, ncercai gruparea cuvintelor n linii pe seciuni gramaticale logice, chiar dac
acest procedeu duce la apariia unui rnd suplimentar.

Premiera operei Vaduva Premiera operei


Vesel a fost un succes VaduvaVesel
a fost un succes
Post Script

You might also like