Method and system for context-based adaptive binary arithmetic coding
View Patent ↗A method and system for image coding, wherein an image is divided into a plurality of blocks for scanning. The pixels values in the scanned block are represented by a plurality of level-run value pairs, wherein the level value is indicative of a non-zero pixel value and the run value is indicative of the number of consecutive zero pixel values preceding the non-zero pixel value. A plurality of contexts indicative of the level-run value pairs are conveyed to a decoder for allowing the decoder to reconstruct the image based on the contexts. The assignment of the contexts is also based on the level value of a preceding level-run pair. Additionally, instead of an end-of-block symbol, the number of non-zero coefficients is provided to the decoder prior to conveying the contexts thereto.
1. A method of image coding, wherein an image is divided in an encoder into a plurality of blocks having a plurality of pixels, each pixel having a pixel value, and a transform coding operation is performed on a block of pixels to produce a corresponding block of transform coefficient values, the block of transform coefficient values being scanned in a given scanning order to produce a scanned array of coefficient values arranged according to the scanning order, the method comprising the steps of:
representing the coefficient values in the scanned array by a plurality of number pairs, each of said number pairs having a first number and a second number; and
assigning the first numbers to one of a plurality of contexts representative of the first numbers such that the first number of a first number pair is assigned to a context at least partly in dependence on a first number of a second number pair.
2. A method according to claim 1 , wherein the first number of the first number pair is assigned to a context at least partly in dependence on the first number of a preceding number pair in the scanning order.
3. A method according to claim 1 , wherein said plurality of contexts are contexts of a context-based arithmetic coder.
4. A method according to claim 1 , wherein said plurality of contexts are contexts of a context-based binary arithmetic coder.
5. A method according to claim 4 , further comprising the step of:
mapping the first numbers of said number pairs to a set of bins, each of which can be assigned one of either a first or a second value.
6. A method according to claim 5 , wherein mapping of a number to a given one of said set of bins is indicated by assigning the bin to the first value.
7. A method according to claim 5 , wherein the first value is 1 and the second value is 0.
8. A method according to claim 5 , wherein the first number of a number pairs is assigned to a context at least partly in dependence on the bin to which the first number of said number pair is mapped.
9. A method according to claim 1 , wherein said first number is indicative of a non-zero coefficient value and said second number is indicative of a number of consecutive zero coefficient values preceding said non-zero coefficient value.
10. A method of image coding, wherein an image is divided in an encoder into a plurality of blocks having a plurality of pixels, each pixel having a pixel value, and a transform coding operation is performed on a block of pixels to produce a corresponding block of transform coefficient values, the block of transform coefficient values is scanned in a given scanning order to produce a scanned array of coefficient values arranged according to the scanning order, the method comprising the steps of:
representing the coefficient values in the scanned array by a plurality of number pairs, each of said number pairs having a first number and a second number; and
assigning the second numbers to one of a plurality of contexts representative of the second numbers such that the second number of a number pair is assigned to a context at least partly in dependence on the first number of the number pair.
11. A method according to claim 10 , wherein said plurality of contexts are contexts of a context-based arithmetic coder.
12. A method according to claim 10 , wherein said plurality of contexts are contexts of a context-based binary arithmetic coder.
13. A method according to claim 12 , further comprising the step of:
mapping the second numbers of said number pairs to a set of bins, each of which can be assigned one of either a first value or a second value.
14. A method according to claim 13 , wherein mapping of a number to a given one of said set of bins is indicated by assigning the bin to the first value.
15. A method according to claim 13 , wherein the first value is 1 and the second value is 0.
16. A method according to claim 13 , wherein the second number of a number pair is assigned to a context at least partly in dependence on the bin to which the second number of the number pair is mapped.
17. A method according to claim 10 , wherein said first number is indicative of a non-zero coefficient value and said second number is indicative of a number of consecutive zero coefficient values preceding said non-zero coefficient value.
18. A system for image coding comprising:
an input for receiving an image as a plurality of blocks having a plurality of pixels, each pixel having a pixel value;
a transform coder for performing a transform coding operation on a block of pixels to produce a corresponding block of transform coefficient values;
a scanner for scanning the block of transform coefficient values in a given scanning order to produce a scanned array of coefficient values, arranged according to the scanning order;
a run-level coder for representing the coefficient values in the scanned array by a plurality of number pairs, said number pairs having a first number and a second number; and
a context-based coder for assigning the first numbers to one of a plurality of contexts representative of the first numbers and operative to assign the first number of a first number pair to a context at least partly in dependence on a first number of a second number pair.
19. A system according to claim 18 , wherein said context-based coder is a context-based arithmetic coder.
20. A system according to claim 18 , wherein said context-based coder is a context-based binary arithmetic coder.
21. A system according to claim 20 , wherein the context-based coder is operative to map the first numbers of said number pairs to a set of bins, each of which can be assigned to one of either a first or a second value.
22. A system according to claim 21 , wherein the context-based coder is operative to map a number to a given one of said set of bins by assigning the bin to the first value.
23. A system according to claim 21 , wherein the first value is 1 and the second value is 0.
24. A system according to claim 21 , wherein the context-based coder is operative to assign the first number of a number pair to a context at least partly in dependence on the bin to which the first number of said number pair is mapped.
25. A system according to claim 18 , wherein the context-based coder is operative to assign the first number of the first number pair to a context at least partly in dependence on the first number of a preceding number pair in the scanning order.
26. A system according to claim 18 , wherein said first number is indicative of a non-zero coefficient value and said second number is indicative of a number of consecutive zero coefficient values preceding said non-zero coefficient value.
27. A system for image coding comprising:
an input for receiving an image as a plurality of blocks having a plurality of pixels, each pixel having a pixel value;
a transform coder for performing a transform coding operation on a block of pixels to produce a corresponding block of transform coefficient values;
a scanner for scanning the block of transform coefficient values in a given scanning order to produce a scanned array of coefficient values arranged according to the scanning order;
a run-length coder for representing the coefficient values in the scanned array by a plurality of number pairs, said number pairs having a first number and a second number; and
a context-based coder for assigning the second numbers to one of a plurality of contexts representative of the second numbers, and operative to assign the second number of a number pair to a context at least partly in dependence on the first number of the number pair.
28. A system according to claim 27 , wherein said context-based coder is a context-based arithmetic coder.
29. A system according to claim 27 , wherein said context-based coder is a context-based binary arithmetic coder.
30. A system according to claim 29 , wherein the context-based coder is operative to map the second numbers of said number pairs to a set of bins, each of which can be assigned to one of either a first or a second value.
31. A system according to claim 30 , wherein the context-based coder is operative to map a number to a given one of said set of bins by assigning the bin to the first value.
32. A system according to claim 30 , wherein the first value is 1 and the second value is 0.
33. A system according to claim 30 , wherein the context-based coder is operative to assign the second number of a number pair to a context at least partly in dependence on the bin to which the second number of the number pair is mapped.
34. A system according to claim 27 , wherein said first number is indicative of a non-zero coefficient value and said second number is indicative of a number of consecutive zero coefficient values preceding said non-zero coefficient value.
35. A computer program embodied in a computer readable medium comprising:
machine-readable program code for dividing an image into a plurality of blocks having a plurality of pixels, each pixel having a pixel value;
machine-readable program code for performing a transform coding operation on a block of pixel values to produce a corresponding block of transform coefficient values;
machine-readable program code for scanning the block of transform coefficient values in a given scanning order to produce a scanned array of coefficient values arranged according to the scanning order;
machine-readable program code for representing the coefficient values in the scanned array by a plurality of number pairs, said number pairs having a first number and a second number; and
machine-readable program code for assigning the first numbers to one of a plurality of contexts representative of the first numbers such that the first number of a first number pair is assigned to a context at least partly in dependence on a first number of second number pair.
36. A computer program embodied in a computer readable medium comprising:
machine-readable program code for dividing an image into a plurality of blocks having a plurality of pixels, each pixel having a pixel value;
machine-readable program code for performing a transform coding operation on a block of pixel values to produce a corresponding block of transform coefficient values;
machine-readable program code for scanning the block of transform coefficient values in a given scanning order to produce a scanned array of coefficient values arranged according to the scanning order;
machine-readable program code for representing the coefficient values in the scanned array by a plurality of number pairs, said number pairs having a first number and a second number; and
machine-readable code for assigning the second numbers to one of a plurality of contexts representative of the second numbers such that the second number of a number pair is assigned to a context at least partly in dependence on the first number of the number pair.
37. A method of context-based arithmetic encoding in which an array of data symbols is represented with a code-word, the method comprising:
representing the data symbols in said array as number pairs comprising a first number and a second number; and
assigning the first number of a first number pair to a context selected from a plurality of contexts representative of the first numbers at least partly in dependence on a first number of a second number pair.
38. A method of context-based arithmetic encoding in which an array of data symbols is represented with a code-word, the method comprising:
representing the data symbols in said array as number pairs comprising a first number and a second number;
assigning the first number of a first number pair to a context selected from a plurality of contexts representative of the second numbers at least partly in dependence on the first number of the number pair.
39. A context-based arithmetic encoder operative to represent an array of data symbols with a code-word and comprising:
a run-level coder for representing the data symbols in said array as number pairs comprising a first number and a second number;
a context assigner for assigning the first number of a first number pair to a context selected from a plurality of contexts representative of the first numbers at least partly in dependence on a first number of a second number pair.
40. A context-based arithmetic encoder operative to represent an array of data symbols with a code-word and comprising:
a run-level coder for representing the data symbols in said array as number pairs comprising a first number and a second number;
a context assigner for assigning the second number of a number pair to a context selected from a plurality of contexts representative of the second numbers at least partly in dependence on the first number of the number pair.