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

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

If you can't read please download the document

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

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