Заметки Крикса об алгоритме декодирования jpeg

Download Заметки Крикса об алгоритме декодирования JPEG

If you can't read please download the document

Upload: trinhkiet

Post on 08-Dec-2016

219 views

Category:

Documents


4 download

TRANSCRIPT

CRYX's note about the JPEG decoding algorithm

JPEG. 1999 Cristi Cuturicu.

()

, . , . , , ( ), , - . , , , JPEG ISO. , - . , .

JPEG JPG

, , JPEG , JPG. ISO-ITU JPEG , itu-1150.ps (JPEG = ISO 10918-1 CCITT T.81: " - - "). , 186 , , JPG.

: - , JPG Baseline Sequential DCT, JFIF . JPG .( , itu-1150. www.wotsit.org - www.jpeg.org/jpeg)

, JPG, . ( , , )

JPEG

1) : [R G B] -> [Y Cb Cr]

(R,G,B - 8- )

| Y | | 0.299 0.587 0.114 | | R | | 0 || Cb | = | -0.1687 -0.3313 0.5 | * | G | + |128|| Cr | | 0.5 -0.4187 -0.0813 | | B | |128|

Y = 0.299*R + 0.587*G + 0.114*B . , , RGB. , RGB . , Y, : , - .

Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128 Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128 2 , ([], ). 2 .

[Y,Cb,Cr] [R,G,B] ( )

RGB- YCbCr (8- ) :

R = Y + 1.402 *(Cr-128)G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)B = Y + 1.772 *(Cb-128)

, Y,Cb,Cr

, , : , ( - -) , . , RGB, , Y. , , - , .

2)

JPEG , , . (- , )

, JPG, , 2x2 . , , , .

: JPEG , (, Y) 2 : . JPG ( ).

3)

8- (Y,Cb,Cr) - " ": 8- 128 .

4) 8x8 (DCT)

8x8 , 8x8 DCT-. , X 8, , ( X 8). , Y 8, . 8x8 .

: 8x8 3 (Y,Cb,Cr), DCT 8x8: 8x8 , 8x8; 8x8 , Cb;, , 8x8 Cr.

DCT- , , . . .

DCT- 2- , ( 8x8) ( 8x8=64, )

DCT (FDCT) DCT (IDCT):

FDCT:

u,v = 0,1...7

c(u,v)=1/2, u=v=0;c(u,v)= 1 .

IDCT:

x,y = 0,1...7

, , DCT. , AA&N, 5 29 . JPEG JPEG (IJG), C- www.ijg.org.

5) 64 DCT

, , DCT- 8x8, 8x8. , 8x8 :

( 8x8 , 2- 8x8)

0, 1, 5, 6,14,15,27,28, 2, 4, 7,13,16,26,29,42, 3, 8,12,17,25,30,41,43, 9,11,18,24,31,40,44,53, 10,19,23,32,39,45,52,54, 20,22,33,38,46,51,55,60, 21,34,37,47,50,56,59,61, 35,36,48,49,57,58,62,63

, - (0,0), (0,1), (1,0), (2,0), (1,1), (0,2), (0,3), (1,2), (2,1), (3,0) ..

, 8x8, 64 (0..63) , 8x8 DCT . , : ( 0) DC. , ( 63 8x8). DCT AC.

6)

, 64 , 64 8x8.

64 : , 64 - , .

(i = 0; i ( ) - , .

, , .

7) RunLength (RLC)

. , . : , ( DC), -. ( ) 64 63 ( - 64 )

, 57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0,0,0,0, 0,...,0

- RLC JPEG :

(0,57); (0,45); (4,23); (1,-30); (0,-16); (2,1); EOB

, , 0 , . : EOB - , - (). , , EOB RLC .

[, ( 0), EOB.]

(0,57); (0,45); (4,23); (1,-30); (0,-16); (2,1); (0,0)

: , - :57, , 3, 0,0 ,0,0 2, - , 895, EOB

JPG ( ), 4- - 15.

, :(0,57); (15,0) (2,3); (4,2); (15,0) (15,0) (1,895), (0,0)

(15,0) - , , 16 . : 16 15 .

8) -

: , JPEG , , ( ) :

0 0 - -1,1 1 0,1 -3,-2,2,3 2 00,01,10,11 -7,..,-4,4,..,7 3 000,001,010,011,100,101,110,111 -15,..,-8,8,..,15 4 0000,..,0111,1000,..,1111 -31,..,-16,16,..,31 5 00000,..,01111,10000,..,11111 -63,..,-32,32,..,63 6 . -127,..,-64,64,..,127 7 . -255,..,-128,128,..,255 8 . -511,..,-256,256,..,511 9 . -1023,..,-512,512,..,1023 10 . -2047,..,-1024,1024,..,2047 11 . -4095,..,-2048,2048,..,4095 12 . -8191,..,-4096,4096,..,8191 13 . -16383,..,-8192,8192,..,16383 14 .-32767,..,-16384,16384,..,32767 15 .

: (0,57); (0,45); (4,23); (1,-30); (0,-8); (2,1); (0,0)

, , (0,0) ( ) (15,0)

57 - 6 111001, (6,111001) 45, , (6,101101) 23 -> (5,10111) -30 -> (5,00001) -8 -> (4,0111) 1 -> (1,1)

, :

(0,6), 111001; (0,6), 101101; (4,5), 10111; (1,5), 00001; (0,4), 0111; (2,1), 1; (0,0)

2 , , , 2 4- ( - , 15 [ JPG - -32767..32767]). , , - , 0.

, JPG, , , .

, 6 ( (0,6)) = 111000; 69 = (4,5) () 1111111110011001 21 = (1,5) 11111110110 4 = (0,4) 1011 33 = (2,1) 11011 0 = EOB= (0,0) 1010

JPG 63 (, ) -

111000 111001 111000 101101 1111111110011001 10111 11111110110 00001 1011 0111 11011 1 1010

DC

DC ( - 0 ), ( ) - = ( 8x8 )/8. ( - ). , , 8x8. (, ). JPEG , DC , JPG DC 8x8 (: 8x8 , 8x8 Y, Cb, Cr)

Diff = DCi DCi-1; DC (DCi) : DCi = DCi-1 + Diff

JPG, 0 - DC = 0; DC0 = 0

, JPG (Diff )

, JPG, = DC , - AC.

- : (, Diff )

Diff , , , - . JPG , :

Diff = (, ) Diff (_ (), )

, Diff -511, Diff (9, 000000000), 9 = 1111110 ( JPG, 2 : DC AC)

JPG, DC : 1111110 000000000, DC AC, 64 , , JPG, : 1111110 000000000 111000 111001 111000 101101 1111111110011001 10111 11111110110 00001 1011 0111 11011 1 1010

( JPG, DC, AC)

( ) 64 ( ) ( Y)

, JPG, :

DC = 0.

1) DC:

) (, DC )) , ) N , , (, N) = Diff) DC + = Diff) DC 64 : "[0]=DC"

2) 63 AC:

- AC , (EOB_ AC_=64)

) ( )) : (__0,) [: EOB_ = , (__0, ) = (0,0)]) N , , (, N) = AC_) 64 , = __0) AC_ __0 ( )) AC_ : "[AC_]=AC_"

, 64 . .:

1) 64 : " (i=0; i