Download presentation
Presentation is loading. Please wait.
1
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Variable Length Coding Information entropy Huffman code vs. arithmetic code Arithmetic coding Why CABAC? Rescaling and integer arithmetic coding Golomb codes Binary arithmetic coding CABAC
2
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Information Entropy Claude E. Shannon Information entropy: Claude E. Shannon 1948, “A Mathematical Theory of Communication” The information contained in a statement asserting the occurrence of an event depends on the probability p(f), of occurrence of the event f. - lg p(f) The unit of the above information quantity is referred as a bit, since it is the amount of information carried by one (equally likely) binary digit. Entropy H is a measure of uncertainty or information content - Very uncertain high information content
3
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Entropy Rate Conditional entropy H(F|G) between F and G: uncertainty of F given G N th order entropy M th order conditional entropy Entropy rate (lossless coding bound)
4
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Bound for Lossless Coding Scalar coding: could differ from the entropy by up to 1 bit/symbol Vector (block) coding: assign one codeword for each group of N symbols Conditional coding (predictive coding, context-based coding): The codeword of the current symbol depends on the pattern (context) formed by the previous M symbol
5
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Huffman Coding Huffman coding for pdf: (a 1, a 2, a 3 ) = (0.5, 0.25, 0.25) ––lg0.5 = 1, –lg 0.25 = 2 –a 1 = 0, a 2 = 10, a 3 = 11 If the self information is not integer? –pdf: (a 1, a 2, a 3, a 4 ) = (0.6, 0.2, 0.125, 0.075) ––lg 0.6 = 0.737, –lg 0.2 = 2.32, –lg 0.125 = 3, –lg 0.075 = 3.74 –a 1 = 0, a 2 = 10, a 3 = 110, a 4 = 111 a 1 = 0.5 a 2 = 0.25 a 3 = 0.25 0 1 0 1 a 1 = 0.6 a 2 = 0.2 a 3 = 0.125 a 4 = 0.075 0101 0101 0101
6
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Huffman vs. Arithmetic Coding Huffman coding: convert a fixed number of symbols into a variable length codeword Efficiency The usage of fixed VLC tables does not allow an adaptation to the actual symbol statistics. Arithmetic Coding: convert a variable number of symbols into a variable length codeword Efficiency Process one symbol at a time Easy to adapt to changes in source statistics Integer implementation is available
7
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Arithmetic Coding The bits allocated for each symbol can be non-integer –If pdf(a) = 0.6, then the bits to encode ‘a’ is 0.737 For the optimal pdf, the coding efficiency is always better than or equal to the Huffman coding Huffman coding for a 2 a 1 a 4 a 1 a 1 a 3, total 11 bits: Arithmetic coding for a 2 a 1 a 4 a 1 a 1 a 3, total 11.271 bits: 2 + 1 + 3 + 1 + 1 + 3 2.32 +0.737+ 3.74 +0.737+0.737+ 3 The exact probs are preserved
8
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Arithmetic Coding Basic idea: – Represent a sequence of symbols by an interval with length equal to its probability – The interval is specified by its lower boundary (l), upper boundary (u) and length d (= probability) – The codeword for the sequence is the common bits in binary representations of l and u The interval is calculated sequentially starting from the first symbol – The initial interval is determined by the first symbol – The next interval is a subinterval of the previous one, determined by the next symbol
9
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 An Example Any binary value between l and u can unambiguously specify the input message. ½=(10…)=(01…1…) ¼ =(010…)=(001…1…) d( ab )=1/8
10
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Why CABAC? The first standard that uses arithmetic entropy coder is given by Annex E of H.263 Drawbacks: 1.Annex E is applied to the same syntax elements as the VLC elements of H.263 2.All the probability models are non-adaptive that their underlying probability as assumed to be static. 3.The generic m-ary arithmetic coder used involves a considerable amount of computational complexity.
11
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 CABAC: Technical Overview Context modeling Binarization Probability estimation Coding engine update probability estimation Adaptive binary arithmetic coder Chooses a model conditioned on past observations Maps non-binary symbols to a binary sequence Uses the provided model for the actual encoding and updates the model
12
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 CABAC
13
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Context-based Adaptive Binary Arithmetic Code (CABAC) Usage of adaptive probability models Exploiting symbol correlations by using contexts Non-integer number of bits per symbol by using arithmetic codes Restriction to binary arithmetic coding Simple and fast adaptation mechanism But: Binarization is needed for non-binary symbols Binarization enables partitioning of state space
14
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Implementation of Arithmetic Coding Rescaling and Incremental coding Integer arithmetic coding Binary arithmetic coding Hoffman Trees Exp-Golomb Codes
15
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Issues Finite precision (underflow & overflow): As n gets larger, these two values, l (n) and u (n) come closer and closer together. This means that in order to represent all the subintervals uniquely we need to increase the precision as the length of the sequence increases. Incremental transmission: transmit portions of the code as the sequence is being observed. Integer implementation
16
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Rescaling & Incremental Coding
17
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Incremental Encoding U L L L U U
18
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Question for Decoding How do we start decoding? decode the first symbol unambiguously How do we continue decoding? mimic the encoder How do we stop decoding?
19
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Incremental Decoding Top 18% of [0,0.8) U 0.8 0.82 1.0
20
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Issues in the Incremental Coding
21
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Solution
22
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Solution (2)
23
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Incremental Encoding
24
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Incremental Decoding
25
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Integer Implementation
26
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Integer Implementation n j : the # of times the symbol j occurs in a sequence of length Total Count. F X (k) can be estimated by Define we have E 3 : if (E 3 holds) Shift l to the left by 1 and shift 0 into LSB Shift u to the left by 1 and shift 0 into LSB Complement (new) MSB of l and u Increment Scale3
27
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Golomb Codes Golomb-Rice code: a family of codes designed to encode integers with the assumption that the larger an integer, the lower its probability of occurrence. An example (the simplest, unary code): for integer n, codes as n 1s followed by a 0. This code is the same as the Huffman code for {1, 2, …} with probability model Golomb code with m: code n > 0 using two numbers q and r: Q is coded by unary code of q; r is represented by binary code using bits. the first – m values, uses bits the rest values: uses bits Golomb code for m = 5: nqrcodenqr 0000005101000 1010016111001 2020107121010 303011081310110 404011191410111 3+3=110
28
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 Golomb Codes Golomb code is optimal for the probability model exp-Golomb code: variable length codes with regular construction: [m zeros] [1] [info]. code_num: index info: is an m-bit field carrying information Mapping types: ue, te, se, and me designed to produce short codewords for frequently-occurring values and longer codewords for less common parameter values.
29
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 exp-Golomb Codes exp-Golomb code Decode: 1. Read in m leading zeros followed by 1. 2. Read m -bit info field. 3. ﹝ m zeros ﹞﹝ 1 ﹞﹝ info ﹞
30
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 exp-Golomb Entropy Coding A parameter k to be encoded is mapped to code_num in one of the following ways:
31
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 exp-Golomb Entropy Coding
32
2015/6/15VLC 2006 PART 1 Introduction on Video Coding StandardsVLC 2006 PART 1 H.264 Coding Parameters
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.