Download - V 0601 Jpeg Mpeg
-
7/21/2019 V 0601 Jpeg Mpeg
1/22
JPEG/MPEG Kompresija
-
7/21/2019 V 0601 Jpeg Mpeg
2/22
Postupak kreiranja JPEG-a Iako JPEG fajl moe biti kreiran (kodovan na ra!li"ite na"ine#
najkori$%eniji je t!v&'JI en)odin*'& Pro)es kodiranja se odvija kro!slede%e korake+, ransforma)ija modela boja i! .G u 01b1r, roj boja se redukuje (naj"e$%e se 234 ini)ijalno kori$%eni5 boja
elimini$e& 6vo je mo*u%e# ali nije neop5odno# raditi i! ra!lo*a $to je okomanje osetljivo na fine nijanse ne*o na kontrast ili osvetljaj&
, 7lika se onda podeli na blokove od po 898 piksela& : svakom bloku seprimeni ;1 (dis)rete )osine transform transforma)ija nad svakom od0# 1b i 1r komponenti&
, a prika! implementa)ije navedeni5 koraka koristi%emo
MPEGuilder aplika)iju koju moete preu!eti sa
???&)iitlab&elfak&ni&a)&@u
http://en.wikipedia.org/wiki/Discrete_cosine_transformhttp://en.wikipedia.org/wiki/Discrete_cosine_transform -
7/21/2019 V 0601 Jpeg Mpeg
3/22
Korak A+ Konver!ija boja
7tartujemoMPEGuilderaplika)iju
Kliknemo na ile#6pen i u"itamoneku sliku koja bimo*le da se
konvertuje u JPEG Bajbolje je odabratiCD-bitnu MP sliku
-
7/21/2019 V 0601 Jpeg Mpeg
4/22
Kliknemo dalje ne*de na sliku da bismo i!abralideo veli"ine A9A na kome %emo demonstriratikorake JPEG al*oritma
6dabrani se*ment se moe videti u desnomdelu pro!ora (ispod se*menta je du*me lo)k;etails
Kliknemo na du*me Flo)k ;etails'
Ba dobijenom dijalo*u moemo videti sve .# G i vrednosti !a svaki od 898 blokova
rednosti su prika!ane u *ridu (*ore desno
-
7/21/2019 V 0601 Jpeg Mpeg
5/22
double Y, Pr, Pb;
double pixelR, pixelG, pixelB;
Bitmap img = new Bitmap(pictureBox1.Image);
or (i=!uadY; i"!uadY#$; i##)
%
or (&=!uad'; &"!uad'#$; #)
%
pixelR = img.GetPixel(&,i).R;
pixelG = img.GetPixel(&,i).G;
pixelB = img.GetPixel(&,i).B;
Y = (1.*+(*.+pixelR # *.-*+pixelG # *.11+pixelB) .*) # 1/.*;
Pr = (0.*+(*.*+pixelR *.0+pixelG *.*$+pixelB) .*) # 1$.*;
Pb = (0.*+(*.12+pixelR *.--+pixelG # *.*+pixelB) .*) # 1$.*;
3etY3pace(i, &, Y, Pr, Pb);
4
4
-
7/21/2019 V 0601 Jpeg Mpeg
6/22
-
7/21/2019 V 0601 Jpeg Mpeg
7/22
Klikom na du*me F1onvert to 0PrPb'dobi%emo prika! novodobijeni5 vrednosti u
novom modelu !a prika! boja
-
7/21/2019 V 0601 Jpeg Mpeg
8/22
Korak C+ F;o?nsamplin*'
6vaj korak je u na$oj demonstra)iji i!ostavljen#$to !na"i da %emo dobiti slike najbolje* kvaliteta
Kao $to je napomenuto ranije# ljudsko oko je
najosetljivije na ono $to se nala!i u 0komponenti transformisano* modela boja&Koriste%i ovo moemo kompresovati 1b i 1rkomponentu# tj& eliminisati pola ili vi$e vrednosti
i! nji5ovi5 matri)a i$e o tome se moe na%i na5ttp+//???&?fu&edu/Hmatt5e?s/mis)/jp*vs*if/Jp*1ompest/Jp*15roma7ub&5tml
http://www.wfu.edu/~matthews/misc/jpg_vs_gif/JpgCompTest/JpgChromaSub.htmlhttp://www.wfu.edu/~matthews/misc/jpg_vs_gif/JpgCompTest/JpgChromaSub.htmlhttp://www.wfu.edu/~matthews/misc/jpg_vs_gif/JpgCompTest/JpgChromaSub.htmlhttp://www.wfu.edu/~matthews/misc/jpg_vs_gif/JpgCompTest/JpgChromaSub.html -
7/21/2019 V 0601 Jpeg Mpeg
9/22
-
7/21/2019 V 0601 Jpeg Mpeg
10/22
Korak + ;1 nad jednim blokom898
: slede%em dijalo*u odaberemo neku 898*rupu bajtova i kliknemo na F1al)ulate;1'
-
7/21/2019 V 0601 Jpeg Mpeg
11/22
.e!ultat ;1 je prika!an u donjem*ridu (i!vor je u *ornjem
-
7/21/2019 V 0601 Jpeg Mpeg
12/22
;1 ($ta se desilo
:la! u ;1 su blokovi 898 biloko* od kanala i! 01r1b modela
Elementi blokova su bajtovi& >a;1 vrednost svako* elementabloka treba transformisati i! (3do C22 u (-AC8 do AC
-
7/21/2019 V 0601 Jpeg Mpeg
13/22
;1 ($ta se desilo - C
>a svaki piskel se i!ra"una ova formula *(L#@ je vrednost piksela (po"etna vrednost u
ra"uni)i u i v su 5ori!ontalna i vertikalna frekven)ija ()eli
brojevi i! intervala od 3 do
-
7/21/2019 V 0601 Jpeg Mpeg
14/22
evo je matri)a (deo neko* od kanala u 01r1bdomenu vrednosti u Frealnom'# a desno ufrekventnom domenu
Polje desne matri)e !a u N 3 i v N 3(*ore levo je jednosmernakomponenta# a ostalo su
5armoni)i
-
7/21/2019 V 0601 Jpeg Mpeg
15/22
Perorm t5e 678 on t5e 9 bloc:
public double,< calculate678 (bte,< 9)
%
int :1, :, i, &;
double 7u, 7>;
double,< B = new double$,$= 1.*;
B:1,:< += (*.+7u+7>);
4
return B; Return Are!uenc 7omponent matrix
4
-
7/21/2019 V 0601 Jpeg Mpeg
16/22
for (iN3O i8O iQQ for (jN3O j8O jQQ
)osineRj#iS N Mat5&1os(Mat5&PITjT(C&3Ti Q A/A&3O
private double 7U.CoC N Mat5&7Vrt(C&3 / C&3O
-
7/21/2019 V 0601 Jpeg Mpeg
17/22
Korak D+ Kvanti!a)ija
Bakon ;1 transforma)ije sledi kvanti!a)ija Klik na Uuanti!e ;efault %e nam i!ra"unati kvanti!a)iju !a piksele i! *ornje*
*rida .e!ultat kvanti!a)ije %e biti prika!an u donjem *ridu Ideja kvanti!a)ije je eliminasti visoke frekven)ije# po$to je oko osetljivije na
niske
-
7/21/2019 V 0601 Jpeg Mpeg
18/22
Wta se desilo
F
-
7/21/2019 V 0601 Jpeg Mpeg
19/22
Korak 2+ Kodovanje
Bajpre se uradi t!v >i*!a* transforma)ija
-
7/21/2019 V 0601 Jpeg Mpeg
20/22
Mesto od ko*a svi elementi po"inju dabudu nule !ameni se spe)ijalnim !nakom
!a kraj bloka 6vo doprinosi u realnosti u$tedi od oko24
Bije problem uvesti o!naku !a kraj blokapo$to su svi blokovi od po D bajta
-
7/21/2019 V 0601 Jpeg Mpeg
21/22
publi) intRS >i*!a* (intR#S 7AX intRS indeL N ne? intRDS X3#A##8#-#-#A####8# -#-#-#-#A######8#
-#-#-#-#-#-#A########A#-#-#-#-#-#-#8######A#-#-#-#-#8####A#-#-#8##AYO
int iO intRS !! N ne? intRDSO int a# bO
int 7Apointer N 3O
for (iN3O iDO iQQ X
7Apointer QN indeLRiSOa N 7Apointer/8O
b N 7Apointer48O!!RiS N 7ARa#bSO
Y
return !!O // .eturn sorted arra@ ?it5 ;1 value at position 3Y
-
7/21/2019 V 0601 Jpeg Mpeg
22/22
.e!ultat >i*!a*-a se koduje=uffmanovim kodom