the embedded block coding with optimized truncation in jpeg2000 蘇文鈺 prepared by 黃文彬...
TRANSCRIPT
The Embedded Block Coding with Optimized Truncation
in JPEG2000
蘇文鈺Prepared By 黃文彬
成大資訊
JPEG2000 Codec
(a) encoder
(b) decoder
SourceImage Data
ForwardWavelet
Transform
QuantizationCoefficient
bit modeling
Compressed Image Data
Arithmeticencoding
Compressed Image Data
Coefficientbit
modeling
De-Quantization
InverseWavelet
Transform
ReconstructedImage Data
Arithmeticdecoding
120 128 130 105 78 23 ... 129150 10 218 89 12 45 ... 110 98 104 38 204 239 89 ... 98 78 198 19 178 192 37 … 123109 45 23 106 76 12 … 67 ….. ….. 28 120 238 129 109 37 … 203
Original ImageLevel 2
Wavelet Image
DWT
Pixel Representation Wavelet Coefficients
9283 5721 -986 49 40 19 … 08785 3061 2083 29 -38 61 … -3 456 -440 108 23 37 31 … 1 148 621 51 29 -36 45 … -2 103 70 22 20 12 -19 … 4 …… …… 10 2 0 -3 -7 11 … 0
Wavelet Image
DWT
Quantization
...
Wavelet Compression
3 1 -16 9 10 0 … 0 5 3 3 0 0 1 … -0 6 -2 18 0 0 0 … 0 8 1 1 0 0 5 … -0 3 12 0 0 0 0 … 0 …… …… 0 0 0 -0 -0 0 … 0
A Zero-tree
Rough Image Header
Sequence of Zero-trees
Zero-tree Encoding File Structure
Rough Image
SPIHT Algorithm For Wavelet Compression
The JPEG2000 Encoder
The part of EBCOT
T1
Embedded Block Coding
Operates on block samples
T2
Coding of block contributions
To each quality layer
Operates on block summary info
Embedded block
bit-streams
Block of sub-band samples
Full-featured
bit-stream
Quantization
The quantization operation is defined by the step size parameter, ,through
Here, denotes the samples of sub-band , while denotes their quantization indices.
The step size for each sub-band is specified in terms of an exponent, , and a mantissa, , where
LL HL
LH HHHL
LH HH
HL
LH HH
b
b
bbb
nynysignnq
nyb b nqb
b b
11212 b
bb
520 b
1120 b
From “Sub band” to “code block” to “bit stream”
EBCOT Layered Formation
The Concept of EBCOT
Sub-Block Significance Coding Bit-Plan Coding Primitives
Zero Coding Run Length Coding Sign Coding Magnitude Refinement Coding
Fractional Bit-Planes and Scanning Order Significance Propagation Pass Magnitude Refinement Pass Cleanup Pass
Layer Formation and Representation Packet Header Coding Packet Body Coding
Sub-bank and Code Block and sub-block
Generally, Code Block size is 64*64 or 32*32 and sub-code block size is 16*16.
The scanning order of the sub block to be used.
Each code block is coded independently.
Code BlockCode Sub-Block
LL HL
LH HHHL
LH HH
LH HH
HL
Significant
Significance:當一個係數 bit-plane 的值,第一次由0變為1,則此 時這個係數將變為 Significance。
Refinement:當一個係數已經是 Significance,則這個係數接下來的bit皆稱之為 Refinement。
Sign:即係數的符號值。
The Bit Plan Coding Primitives
Scan coding
q = -2 11 0 -23 49 3 -10
sign
Bit plan 1
Bit plan 2
Bit plan 3
Bit plan 4
Bit plan 5
Bit plan 6
-2 1000010
11 0001011
0 0000000
-23 1010111
49 0110001
3 0000011
-10 1001010
Four Types of Coding Operation for Bit Plan Coding
Zero Coding Used to code new significance.
Run Length Coding Reduce the average number of symbols needed to be
coded. Sign Coding
Used to code the sign right after a coefficient is identified significant.
Magnitude Refinement Coding 3 context depending on the significance of its neighbors
and whether it is the first time for refinement.
Stripe Oriented Scanning Pattern Followed Within Each Coding Pass
Code block width J2
Context window
stripe
Zero Coding
The objective here is to code , given that
Run Length Coding
Specifically, each of the following conditions must hold: 1) Four consecutive samples must all be insignificant, i.e.,
2) The samples must have insignificant neighbors, i.e.,
3) The samples must reside within the same sub-block 4) The horizontal index of the first sample, , must be even.
0 0
0 0
0
0 0
0
0
1
0
1
Example for RLC
Sign Coding
當 symbol由 insignificance 變為 significance,此時必須將送出該 symbol 的 sign值,而 sign 值是由垂直及水平鄰近點的 sign 值和 significance 來查表決定 context states。
nmnmnmnmnm
v
nmnmnmnmnmh
jjjjj
jjjjj
,1,1,1,1,
1,1,1,1,,
jxjxsignjx hhh ,1min
jxjxsignjx vvv ,1min
1ˆ kxkx
1ˆ kxkx
0ksymbol
1ksymbol
Magnitude Refinement Coding
Specifically, is coded with context 0 if , with context 1 if and and with context 2 if
Three Coding Pass
The JPEG2000 standard other three pass Significance Propagation Pass Magnitude Refinement Pass Cleanup Pass
Significance Propagation Pass
The coding pass for each bit plane is the significance pass. This pass is used to convey significance and (as necessary) sign
information for samples that have not yet been found to be significant and are predicted to become significant during the processing of the current bit plane.
Magnitude Refinement Pass
During this pass we skip over all samples except those which are already significant, and for which no information has been coded in the previous two passes.
These samples are processed with the MR primitive.
Cleanup Pass
Here we code the least significant bit, of all samples not considered in the previous two coding passes, using the SC and RLC primitives as appropriate
if a sample is found to be significant in this process, its sign is coded immediately using the SC primitive.
Cleanup Pass Algorithm(cont.)
The EBCOT encoding procedures
Algorithm for encoderInitialize the MQ encoderInitialize the context states according to each coding
tableSet For each
Initialize all the variable For
If Perform Encoder-Pass0 (Significance
propagation pass)Perform Encoder-Pass1 (Magnitude
refinement pass)Perform Encoder-Pass2 (Cleanup pass)
0tmpv),0[),0[ 10 jjj
0,1,....,1Kp1 Kp
A Simple Example For Bit Plan Coding
1
0
0
0
0
0
0
1
1
0
1
1
0
1
1
1
bit plane1 bit plane2 bit plane3 bit plane4
Example :
10 = +1010
1 = +0001
3 = +0011
-7 = -0111
Block diagram of the embedded block coder
x
k
Code blocksample array
Significancestate
Delayedsignificance
First passmembership
Context AdaptiveBit Plane Coder
Context state file
MQ coder
k kS
jjv ,
j j j
Embedded bit stream
EBCOT Decoder
Algorithm for decoderInitialize the context states according to each coding
tableFor each
Initialize all the variable For
If Perform De-Significance propagation passPerform De-Magnitude refinement pass
Perform De-Cleanup pass
),0[),0[ 10 jjj
0,1,....,1Kp1 Kp
Redefine JPEG2000 Table
Context label in RLC: RLC(0),UNIFORM(18/0x1D)
Context
1 x 12 / 0xC
0 11 / 0xB
0 0 10 / 0xA
nm, vh
1
h v Context
1 1 1 17 / 11
1 0 1 16 / 10
1 -1 1 15 / F
0 1 1 14 / E
0 0 1 13 / D
0 -1 -1 14 / E
-1 1 -1
-1 0 -1
-1 -1 -1
x̂
15 / F
16 / 10
17 / 11
Context Context
LL, LH, HL Sub-bank HH Sub-bank
0
0
0
0
0
1
1
1
2
0
0
0
1
2
0
0
> 0
x
0
1
> 1
x
x
0
> 0
x
x
1
2
3
4
5
6
7
8
9
0
0
0
1
1
1
2
2
> 2
0
1
> 1
0
1
> 1
0
> 0
x
kd i kvkh ii khi kvi kd i
1
2
3
4
5
6
7
8
9
Example 1 For JPEG2000 Encoder(Only Cleanup Pass)
Example 1 For JPEG2000 Decoder (Only Cleanup Pass)
第一個讀入的值為 context label即 coding的方式 ,查表可知 00為 Run-length coding.
第二個讀入的值為 symbol即本身的二進位值 ,此例為 1
Example 2 For JPEG2000- Two Bit Plane
Example 2 For JPEG2000 – Bit Plane 1 Cleanup Pass (1)
Example 2 For JPEG2000 – Bit Plane 1 Cleanup Pass (2)
Example 2 For JPEG2000 – Bit Plane 2 Significance Pass (1)
Example 2 For JPEG2000 – Bit Plane 2 Significance Pass (2)
Example 2 For JPEG2000 – Bit Plane 2 Magnitude Refinement Pass
Example 2 For JPEG2000 – Bit Plane 2 Cleanup Pass (1)
Arithmetic Coding - MQ Coder
Before talking about MQ coder, we must understand the Arithmetic coding.
Because the MQ coder is almost the same as a binary arithmetic coding.
Just only one difference between them. Where is the probability of the zero or one from?
For binary arithmetic coding, the probability of zero or one is driven by the pre-processing.
In other words, before arithmetic coding, the probability of zero or one have been already known, and it’s through the statistic of all data.
In MQ coder, the probability of zero or one is by the dynamic decision.
Arithmetic Coding - MQ Coder
In JPEG2000 standard, there is a table for MQ coder. The table provides the new probability of zero or one. The table is shown in the next page. In the beginning, the probability of zero or one is 0.5, and it is
the start of table. And the next probability of zero or one depends on the input
context that is zero or one. If the input context is zero, the new probability of zero becomes
larger in the table. Otherwise, it becomes smaller.
Arithmetic Coding - MQ Coder
Arithmetic Coding - MQ Coder
Arithmetic Coding - MQ Coder
Arithmetic Coding - MQ Coder
Arithmetic Coding – Binary Arithmetic Coding Algorithm
Initialize , , ,
For eachSetIf
IfPropagate carry
WhileRenormalize
Set
0C NA 2 1r 0b
,.....1,0n
PNC 2
12 PNT
TA Pn
21
nApT ,01nx
TCC TAT P 2 Binary
arithmetic coder
nx
np ,0
Arithmetic codestream
Arithmetic Coding – Binary Arithmetic Coding Algorithm
Propagate carryEmit-bit(1)If ,
execute times, emit-bit(0)Set
ElseSet
RenormalizeIncrementShiftShiftIf
if ,emit-bit(1)
elseincrement
Else if
emit-bit(0)execute
times,emit-bit(1)Set
0r1r
0r
1r
1 bbTT 2CC 2
PNC 20r
1 rr
0r
r0r
Arithmetic Coding - MQ Coder algorithm
Initialize ,For each
and
If
If (encode an MPS)
else (encode an LPS)
If If (The symbol was a real MPS)
else (The symbol was a real LPS)
Whilerenormalization
nss
0C NA 2,.....1,0n
12 NA
sxn npCC
npA
nPAA nPA
ss 1
nkPP
12 NA
nn sx )( nn kNMPSk
)( nnn kswitchss )( nn kNLPSk
Arithmetic Coding - MQ Coder Example
We want to encode 1101 and the coding pass is always in context 1
(1) Initial
A = 0x8000 , C = 0x0000 , k = 0 , B = 0 , ct = 12 , Sn = 0 Encode 1
X = 1 , Sn = 0 , k = 0 P = 5601 , A = A – P = 29ff A(29ff) < P(5601) => S = 1 – Sn = 1 X = S => C = C + P = 5601 A(29ff) < 0x8000 and X != Sn => Sn = 1 and k = 1 A = a7fc , C = 15804 , ct = 10
While A < 0x8000 A = 2A , C = 2C , ct = ct -1 if ct = 0 Transfer-Byte
Arithmetic Coding - MQ Coder Example
Encode 1 X = 1 , Sn = 1 , k = 1 P = 3401 , A = A – P = 73fb A(73fb) > P(3401) X = S => C = C + P = 15804 + 3401 = 18c05 A(73fb) < 0x8000 and X = Sn => k = 2 A = e7f6 , C = 3180A , ct = 9
Encode 0 X = 0 , Sn = 1 , k = 2 P = 1801 , A = A – P = cff5 A(cff5) > P(1801) X != S => A = 1801 A(1801) < 0x8000 and X != Sn => Sn = 1 and k = 9 A = c008 , C = 18c050 , ct = 6
Arithmetic Coding - MQ Coder Example
Encode 1 X = 1 , Sn = 1 , k = 9 P = 3801 , A = A – P = 8807 A(8807) > P(3801) X = S => C = C + P = 18c050 + 3801 = 18f851 A(18f851) > 0x8000 and X != Sn => Sn = 1 and k = 9 A = c008 , C = 18c050 , ct = 6
Combined EBCOT with MQ Coder
Encoder-Pass0 Procedure (significance propagation) AlgorithmFor each location, j, following the stripe-based scan of above
figureif and ,
MQ-Encode( , )If ,
Encode-Sign( )
else
0j 0jk sig
jvx p jkk sig 1jv p
1j jjj vh ,,
1j
0j
Combined EBCOT with MQ Coder
Encode-Sign Procedure Algorithm Determine and from and using Table 2If ,
MQ-Encode( , )Else
MQ-Encode( , )
signkflip jh jv
1 flipj
0x
1x
signkk
signkk
signk
1
0
-1
1
0
-1
14
13
12
11
10
11
1
1
1
1
1
-1
jh jv flip
1
1
1
0
0
0
1
0
-1
12
13
14
-1
-1
-1
-1
-1
-1
Combined EBCOT with MQ Coder
Encoder-Pass1 Procedure (magnitude refinement) AlgorithmFor each location, j, following the stripe-based scan of above
FigureIf and ,
Find form and using table3MQ-Encode( , )
magkk jk sigmagk
1j 0j jG
jpvx
jj G
jk sig
0
> 0
15
16
17
0
0
1
mapk jG
ax
Combined EBCOT with MQ CoderEncoder-Pass2 Procedure (cleanup) AlgorithmFor each location, j, following the stripe-based scan of above
Figureif and ,(entering a full stripe column)
(signifies not using run mode)if for all ,(enter run mode)
while and ,
ifMQ-Encode( )
else (run interruption)MQ-Encode( )MQ-Encode( )
MQ-Encode( )
04mod1 j 411 Jj
1r
0r 0, 21 jijk sig 3,2,1,0i
4r 0, 21 jrjv p
1 rr
4rrunkkx ,0
runkkx ,1unikk
rx
,2
unikkrx ,2mod
Combined EBCOT with MQ Coder (cleanup pass cont.)
If and ,if ,
(no need to code significance)else
MQ-Encode( )if ,
Encode-Sign( )
0j 0j0r
1 rr
1jv p
1j
jkkjvx sigp ,
jjj vh ,,