Significance map and transform coefficient block encoding
By adjusting the scanning order and context-adaptive entropy decoding, the encoding of the saliency map is optimized, solving the problem of low encoding efficiency under large block size and achieving more efficient encoding performance.
Patent Information
- Application Number
- CN202110788806.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2010-04-13
- Filing Date
- 2011-04-11
- Publication Date
- 2025-12-23
- Estimated Expiration
- 2031-09-21
AI Technical Summary
Existing video coding technologies suffer from inappropriate selection of context models for significant transform coefficients when encoding large blocks, leading to low coding efficiency. This is especially true in CABAC entropy coding in H.264, where the number of context models is excessive and inaccurate, further impacting coding efficiency.
By adjusting the scan order and using context-adaptive entropy decoding, the encoding of the saliency map is optimized based on the location and neighboring regions of the saliency transform coefficients. Combining sub-block scan order and context selection improves encoding efficiency.
It effectively reduces the number of syntax elements indicating the positions of significant transformation coefficients, improving coding efficiency, especially in the case of large block sizes, thus enhancing coding performance.
Smart Images

Figure CN114143553B_ABST
Abstract
Description
[0001] This application is a divisional application of the Chinese national stage application of the PCT application with the international application number PCT / EP2011 / 055644, the title of "Encoding of a significance map and a block of transform coefficients", the filing date of April 11, 2011, the title of the invention of "Apparatus and method of decoding a significance map, encoding apparatus and method and storage medium", the entering date of the Chinese national stage of December 13, 2012, the application number of 201180029192.3, the entire contents of which are hereby incorporated by reference. TECHNICAL FIELD
[0002] The present application is directed to the encoding of a significance map indicating the positions of significant transform coefficients within a block of transform coefficients and the encoding of such a block of transform coefficients. This encoding can, for example, be used in image and video coding, for example. BACKGROUND
[0003] In conventional video coding, the pictures of a video sequence are usually decomposed into blocks. The blocks or color components of the blocks are predicted by motion compensated prediction or intra picture prediction. The blocks can have different sizes and can be square or rectangular. All samples of a block or color component of a block are predicted using the same set of prediction parameters, e.g. a reference index (identifying a reference picture in a set of pictures that has been coded), motion parameters (specifying a measure of the motion between the block and the reference picture as well as the current picture), parameters for specifying interpolation filtering, an intra picture prediction model, etc. The motion parameters can be represented by displacement vectors of horizontal and vertical components or by higher order motion parameters, e.g. an affine motion parameter consisting of 6 components. It is also possible that more than one set of prediction parameters (e.g. a reference index as well as motion parameters) is associated with a single block. In this case, for each set of prediction parameters, a single intermediate prediction signal for the block or color component of the block is generated and the final prediction signal is established using a weighted sum of these intermediate prediction signals. The weighting parameters as well as possibly a fixed offset (which is added to the weighted sum) can be fixed for a picture, or for a reference picture, or for a set of reference pictures, or they can be included in the prediction parameter set of the corresponding block. Likewise, still images are often decomposed into blocks as well and the blocks are predicted using an intra picture prediction method, which can be a spatial intra picture prediction method or a simple intra picture prediction method predicting the DC component of the block. In the case of a corner, the prediction signal can also be zero.
[0004] The difference between the original block or color component of the original block and the corresponding prediction signal, also referred to as the residual signal, is usually transformed and quantized. A two-dimensional transform is applied to the residual signal and the resulting transform coefficients are quantized. For the transform coding, for a set of specific prediction parameters used for a block or color component of the block in which it is used, the block can be further split before the transform is applied. The transform block can be equal to or smaller than the block used for the prediction. It is also possible that the transform block contains more than one block used for the prediction. Different transform blocks can have different sizes in a picture of a still image or video sequence, and the transform blocks can be represented as square or rectangular blocks.
[0005] The resulting quantized transform coefficients, also referred to as transform coefficient levels, are then transmitted using entropy coding techniques. Thus, the blocks of transform coefficient levels are usually mapped onto vectors (i.e. ordered sets) of transform coefficient values using a scan, where different scans can be used for different blocks. Usually, a zigzag scan is used. For blocks containing only interlaced field samples (these blocks can be blocks in a coded field or field blocks in a coded frame), it is also common to use a different scan that is specifically designed for field blocks. A common entropy coding algorithm used to code the resulting ordered sequence of transform coefficients is run-level coding. Usually, a large number of transform coefficient levels is zero, and a group of consecutive transform coefficient levels equal to zero can be efficiently represented by coding the number of consecutive transform coefficient levels equal to zero (run). For the remaining (non-zero) transform coefficients, the actual levels are coded. There are various different run-level codes. The run before a non-zero coefficient and the level of the non-zero transform coefficient can be coded together using a single symbol or code word. Usually, a special symbol is transmitted at the end of the block containing the last non-zero value transform coefficient. Or it is possible that the number of non-zero value transform coefficient levels is coded first, and depending on this number, the levels and the runs are coded.
[0006] A slightly different approach is used in the high-efficiency CABAC entropy coding in H.264. Here, the coding of the transform coefficient levels is split into three steps. In the first step, one binary syntax element coded_block_flag is transmitted for each transform block, which signals whether the transform block contains significant transform coefficient levels (i.e., transform coefficients with non-zero values). If the syntax element indicates that significant transform coefficient levels are present, one binary significance map is coded, which indicates which transform coefficient levels have non-zero values. And then, in inverse scan order, the values of the non-zero transform coefficient levels are coded. The significance map is coded as follows. For each coefficient in the scan order, one binary syntax element significant_coeff_flag is coded, which indicates whether the corresponding transform coefficient level is equal to zero. If the significant_coeff_flag binary value is equal to one, i.e., if a non-zero value transform coefficient level exists at this scan position, a further binary syntax element last_significant_coeff_flag is coded. This binary value indicates whether the present significant transform coefficient level is the last significant transform coefficient level within the block or whether it is followed by further significant transform coefficient levels in scan order. If the last_significant_coeff_flag indicates that no further significant transform coefficient follows, no further syntax elements are coded for indicating the significance map of the block. In the next step, the values of the significant transform coefficient levels are coded, whose positions within the block have been determined by using the significance map. The values of the significant transform coefficient levels are coded in inverse scan order by using the following three syntax elements. The binary syntax element coeff_abs_greater_one indicates whether the absolute value of the significant transform coefficient level is greater than one. If the binary syntax element coeff_abs_greater_one indicates that the absolute value is greater than one, a further syntax element coeff_abs_level_minus_one is transmitted, which indicates the absolute value of the transform coefficient level minus one. Finally, the binary syntax element coeff_sign_flag, which indicates the sign of the transform coefficient value, is coded for each significant transform coefficient level. It should be further noted that the syntax elements regarding the significance map are coded in scan order, while the syntax elements regarding the actual values of the transform coefficient levels are coded in inverse scan order to allow for a more suitable context model usage.
[0007] In CABAC entropy coding in H.264, all syntax elements for the transform coefficient levels are coded using one binary probability model. The non-binary syntax element coeff_abs_level_minus_one is first binarized, i.e. it is mapped onto a sequence of binary decisions (binary values), and these binary values are coded sequentially. The binary syntax elements significant_coeff_flag, last_significant_coeff_flag, coeff_abs_greater_one, and coeff_sign_flag are coded directly. Each coded binary value (including the binary syntax elements) is associated to a context. A context represents a probability model for a class of coded binary values. The measure of the probability for one of the two possible binary values is estimated for each context from the binary values that have been coded previously through the corresponding context. For several binary values related to the transform coding, the context used for coding is selected depending on the syntax elements that have been sent or depending on the position within a block.
[0008] The significance map indicates information about the significance (transform coefficient level is not zero) for the scan positions. In the CABAC entropy coding of H.264, for a 4x4 block size, separate contexts are used for each scan position for coding the binary syntax elements significant_coeff_flag and last_significant_coeff_flag, where different contexts are used for the significant_coeff_flag and last_significant_coeff_flag of the scan positions. For 8x8 blocks, the same context model is used for four consecutive scan positions, resulting in 16 context models for the significant_coeff_flag and another 16 context models for the last_significant_coeff_flag. This context model approach for the significant_coeff_flag and last_significant_coeff_flag has some drawbacks for large block sizes. On the other hand, if each scan position is associated with a separate context model, the number of context models increases significantly when blocks larger than 8x8 are coded. This increased number of context models results in slow probability estimation adaptation and often inaccurate probability estimation, both of which have a negative impact on coding efficiency. On the other hand, the assignment of context models for some consecutive scan positions (as in H.264 for 8x8 blocks) is also not optimal for larger block sizes, since the non-zero transform coefficients are usually concentrated in certain areas of the transform block (the areas are dependent on the dominant structure within the block to which the residual signal corresponds).
[0009] After encoding the significance map, the block is processed in reverse scan order. If the scan position is significant, i.e. the coefficient is different from zero, a binary syntax element coeff_abs_greater_one is sent. Initially, for the coeff_abs_greater_one syntax element, the second context model of the corresponding context model group is selected. If the value of any coeff_abs_greater_one syntax element inside the block that is coded equals one (i.e. the absolute coefficient is greater than two), the context model switches back to the first context model of the group and uses this context model up to the end of the block. Otherwise (all coded values of coeff_abs_greater_one inside the block are zero and the corresponding absolute coefficient level equals one), the context model is selected according to the number of coeff_abs_greater_one syntax elements equal to zero that have been coded / decoded previously in the reverse scan order of the block under consideration. The context model selection for the syntax element coeff_abs_greater_one can be summarized by the following equation, where the current context model index C t+1 is selected according to the previous context model index C t and the value of the previously coded syntax element coeff_abs_greater_one (denoted by bin t in the equation). For the first syntax element coeff_abs_greater_one inside the block, the context model index is set equal to C t = 1.
[0010]
[0011] The second syntax element used for encoding the absolute transform coefficient level, coeff_abs_level_minus_one, is only coded when the coeff_abs_greater_one syntax element for the same scan position is equal to one. The non-binary syntax element coeff_abs_level_minus_one is binarized into a sequence of bin values and the first bin value used for binarization; the context model index is selected as described below. The remaining bin values of the binarization are coded using a fixed context. The context used for the first bin value of the binarization is selected as described below. For the first coeff_abs_level_minus_one syntax element, the first context model of the context model group for the first bin value of the coeff_abs_level_minus_one syntax element is selected, the corresponding context model index is set to C t= 0. For each further first bin value of the coeff_abs_level_minus_one syntax element, the context model switches to the next context model in the group, wherein the number of context models in the group is limited to 5. The context model selection can be expressed by the following equation, wherein the current context model index C t+1 According to the previous context model index C t is selected. As mentioned above, for the first syntax element coeff_abs_level_minus_one within a block the context model index can be set to C t = 0. It should be noted that different context model groups are used for the syntax elements coeff_abs_greater_one and coeff_abs_level_minus_one.
[0012] C t+1 (C t ) = min(C t + 1, 4)
[0013] This approach has some drawbacks for large blocks. The selection of the first context model for coeff_abs_greater_one (if a value of coeff_abs_greater_one equal to 1 has been coded for the block, it is used) is usually done too early and the last context model for coeff_abs_level_minus_one is done too fast because the number of significant coefficients is larger than in small blocks. Therefore, most bin values of coeff_abs_greater_one and coeff_abs_level_minus_one are coded with a single context model. But these bin values usually have different probabilities and therefore the use of a single context model for a large number of bin values has a negative impact on the coding efficiency.
[0014] While, in general, large blocks increase the computational effort to perform a spectral decomposition transform, the ability to efficiently code small and large blocks would enable a higher coding efficiency, e.g., when coding a sample array like an image or a sample array representing another spatially sampled information signal, e.g., a depth map, etc. The reason is that when transforming a sample array within a block, the spectral resolution of the transform is higher the larger the block is, depending on the dependency between spatial and spectral resolution. In general, it is preferable to apply a corresponding transform locally on the sample array, so that within one respective transform region the spectral composition of the sample array does not vary widely. Small blocks ensure that the content within the block is relatively uniform. On the other hand, if the blocks are too small, the spectral resolution is low and the ratio between non-significant and significant transform coefficients will decrease.
[0015] Therefore, it is desirable to have an encoding structure which enables an efficient encoding of transform coefficient blocks and their significance map even when the blocks are large. SUMMARY
[0016] Thus, it is an object of the present application to provide an encoding structure for separately encoding transform coefficient blocks and a significance map indicating the positions of significant transform coefficients within the transform coefficient blocks in order to improve the encoding efficiency.
[0017] This object is achieved by the independent claims.
[0018] According to a first aspect of the present application, the basic idea of the present application is that a higher encoding efficiency for encoding a significance map indicating the positions of significant transform coefficients within a transform coefficient block can be achieved if the scan order by which the syntax elements indicating for the associated positions within the transform coefficient block whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position are sequentially associated to the transform coefficient block positions within the transform coefficient block positions according to the positions of significant transform coefficients indicated by previously associated syntax elements. In particular, the inventors found that in typical sample array content, e.g. image, video or depth map content, significant transform coefficients mainly form a group at one side of the transform coefficient blocks corresponding to non-zero frequencies in vertical direction and low frequencies in horizontal direction or vice versa, so that considering the positions of significant transform coefficients indicated by previously associated syntax elements can control the further cause of the scan, so that the probability of reaching the last significant transform coefficient within the transform coefficient block earlier is increased with respect to a predetermined procedure according to the scan order which is independent of the positions of significant transform coefficients indicated by previously associated syntax elements so far. This is especially true for larger blocks, although it is true for small blocks as well as mentioned above.
[0019] According to an embodiment of the present application, the entropy decoder is configured to extract from the data stream information which enables to identify whether the significant transform coefficient indicated by the currently associated syntax element is the last significant transform coefficient within the transform coefficient block independent of its exact position within the transform coefficient block, wherein the entropy decoder is configured such that if the current syntax element occurs with respect to this last significant transform coefficient, no further syntax element is expected. The information can comprise the number of significant transform coefficients within the block. Alternatively, a second syntax element is inserted into the first syntax element, the second syntax element indicating for the associated position at which the significant transform coefficient is placed whether this transform coefficient is the last transform coefficient in the transform coefficient block.
[0020] According to an embodiment of the present application, the correlator adjusts the scan order in dependence on the significant transform coefficient positions which are indicated so far only at predetermined positions within the transform coefficient block. For example, several sub-paths, which extend diagonally from one pair of sides of the transform coefficient block corresponding to the smallest frequency along a first direction and the highest frequency along another direction, respectively, to another pair of sides of the transform coefficient block corresponding to the zero frequency along a second direction and the largest frequency along the first direction, respectively, are disconnected from each other by sub-sets of positions within the transform coefficient block. In this case, the correlator is configured to select the scan order such that the sub-paths are traversed in an order in which the distance of a sub-path to the DC position within the transform coefficient block increases monotonically along the sub-path, each sub-path is traversed without interruption along the direction of travel, and the direction along which the sub-path of each sub-path is traversed is selected with the correlator in dependence on the significant transform coefficient positions which are traversed during the preceding sub-paths. By this measure, the probability that the last significant transform coefficient is located at the end of the last sub-path traversed in one direction is increased, so that the last significant transform coefficient is more likely to be located within the first half of the last sub-path than within the second half of the last sub-path, so that the number of syntax elements indicating whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position can be reduced. The effect is particularly pronounced in case of large transform coefficient blocks.
[0021] According to another aspect of the present application, the present application is based on the finding that a significance map indicating the positions of significant transform coefficients within a transform coefficient block can be more efficiently encoded if the aforementioned syntax elements indicating, for the respective position within the transform coefficient block, whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position are context-adaptively entropy decoded using a context which is selected for each syntax element separately in dependence on some significant transform coefficients in the neighborhood of the respective syntax element which are indicated as significant with any previous syntax element. In particular, the inventors found that due to the increasing size of the transform coefficient blocks, significant transform coefficients are in some way clustered in certain regions within the transform coefficient blocks, so that a context adaptation which is not only sensitive to the number of significant transform coefficients which are traversed with the currently predetermined scan order but also takes into account the neighborhood of the significant transform coefficients leads to a better adaptation of the context and thus to an increased coding efficiency of the entropy coding.
[0022] Of course, the two aspects outlined above can be combined in an advantageous way.
[0023] Further, according to yet another aspect of the present application, the present application is based on the finding that the coding efficiency with which a transform coefficient block is coded can be improved, for example, when a significance map indicating the positions of significant transform coefficients within the transform coefficient block outperforms the coding of the actual values of the significant transform coefficients within the transform coefficient block, and if the transform coefficient block is scanned in sub-blocks using a sub-block scan order in the sub-blocks, and additionally in a coefficient scan order scanning the transform coefficient positions within the sub-blocks, and if a group of contexts selected from a plurality of groups of contexts is used for sequentially context-adapting entropy decoding the values of the significant transform coefficient values, the selection of the group of contexts is based on the values of the transform coefficients within the transform coefficient block sub-block that have been traversed in the sub-block scan order or the values of the transform coefficients of the sub-block at the same location in the transform coefficient block that have been decoded. In this way, the context adaptation is well suited to the nature of the significant transform coefficients that are clustered in certain areas within the transform coefficient block as outlined above, especially when considering large transform coefficient blocks. On the other hand, the values in the sub-blocks can be scanned and the context can be selected based on sub-block statistics.
[0024] Further, even the latter aspect can be combined with any one or both of the previously identified aspects of the present application. BRIEF DESCRIPTION OF DRAWINGS
[0025] The preferred embodiments of the present application will be described with reference to the following drawings, in which:
[0026] Figure 1 A block diagram of an encoder according to an embodiment is shown;
[0027] Figures 2A-2C A diagram schematically showing a sample array, e.g. an image, being sub-divided into blocks in different ways;
[0028] Figure 3 A block diagram of a decoder according to an embodiment is shown;
[0029] Figure 4 A block diagram of an encoder according to an embodiment of the present application is shown in more detail;
[0030] Figure 5 A block diagram of a decoder according to an embodiment of the present application is shown in more detail;
[0031] Figure 6 is a block transform diagram schematically showing a transform from a spatial domain into a spectral domain;
[0032] Figure 7A block diagram of an apparatus for decoding a significance map and significant transform coefficients of a transform coefficient block according to an embodiment is shown;
[0033] Figure 8 A sub-division of a scan order into sub-routes is schematically shown as well as their different traversal directions;
[0034] Figure 9 A definition of neighboring regions for certain scan positions within a transform block according to an embodiment is schematically shown;
[0035] Figure 10 A possible definition of neighboring regions for certain scan positions within a transform block for a transform block boundary is schematically shown;
[0036] Figure 11 A possible transform block scan according to a further embodiment of the present application is shown. DETAILED DESCRIPTION
[0037] It is noted that in the description of the figures, components occurring in several of these figures are indicated by the same reference signs in each of these figures and a repeated description of these components in terms of functionality is avoided in order to avoid unnecessary repetition. However, the functionality provided by the figures and the description applies to the other figures as well, unless the opposite is explicitly indicated.
[0038] Figure 1 An example of an encoder 10 in which aspects of the present application can be implemented is shown. The encoder encodes an information sample array 20 into a data stream. The information sample array can represent any kind of spatial sample information signal. For example, the sample array 20 can be a still image or a video image. Thus, the information samples can correspond to luminance values, color values, lightness values, chroma values, etc. However, the information samples can also be depth values, e.g. in case the sample array 20 is a depth map generated by a light time sensor or the like.
[0039] The encoder 10 is a block-based encoder. That is, the encoder 10 encodes the sample array 20 into the data stream 30 in units of blocks 40. The encoding in units of blocks 40 does not necessarily mean that the encoder 10 encodes these blocks 40 completely independently from each other. Rather, the encoder 10 can interpolate the remaining blocks using a reconstruction of previously encoded blocks and can set encoding parameters using a block granularity, i.e. a way to set the way in which each sample array region corresponding to a respective block is encoded.
[0040] Further, the encoder 10 is a transform encoder. That is, the encoder 10 transforms the information samples within each block 40 from the spatial domain to the spectral domain by using a transform 40. A two-dimensional transform, such as a DCT, an FFT, or the like, can be used. Preferably, the blocks 40 are square or rectangular.
[0041] In Figure 1 The sub-division of the sample array 20 into blocks 40 shown in Fig. 1 is for illustrative purposes only. Figure 1 A regular two-dimensional arrangement of the sample array 20 sub-divided into square or rectangular blocks 40 immediately adjacent to each other in a non-overlapping manner is shown. The block 40 size can be predetermined. That is, the encoder 10 can not need to transmit the block size information of the blocks 40 to the decoding side within the data stream 30. For example, the decoder can expect a predetermined block size.
[0042] However, several alternatives are possible. For example, the blocks can overlap each other. However, the overlap can be limited to the extent that each block has a portion that does not overlap any neighboring block, or each block is sampled to overlap, in a maximum manner, blocks in neighboring blocks that are immediately adjacent to the present block along a predetermined direction. The latter can mean that the left and right neighboring blocks can overlap the present block so as to completely cover the present block, but they can not overlap each other, and the same applies to the vertical and diagonal direction neighbors.
[0043] As a further alternative, the sub-division of the sample array 20 into blocks 40 is adapted by the encoder 10 to the content of the sample array 20 by means of sub-division information on the sub-division transmitted to the decoding side via the bit stream 30.
[0044] Figures 2A-2C Different examples of the sub-division of the sample array 20 into blocks 40 are shown. Figure 2A A quad-tree based sub-division of the sample array 20 into blocks 40 of different sizes is shown, with the blocks 40a, 40b, 40c, and 40d indicated as representative blocks. In accordance with the sub-division of Figure 2A The sample array 20 is first sub-divided into a regular two-dimensional arrangement of tree blocks 40d, in accordance with the sub-division of Fig. 2, with each sub-division information associated therewith, according to which a certain tree block 40d can be further sub-divided according to a quad-tree structure or not. The left tree block of the blocks 40d is exemplarily sub-divided into smaller blocks in accordance with a quad-tree structure. The encoder 10 can perform one two-dimensional transform for each block shown in Fig. 2 with solid and dashed lines. In other words, the encoder 10 can transform the array 20 in block sub-division units. Figure 2A
[0045] Instead of the quad-tree based sub-division, a more general multi-tree based sub-division can be used and the number of child nodes can be different between different levels.
[0046] Figure 2B Another example for sub-division is shown. In accordance with Figure 2B the sample array 20 is first divided into macroblocks 40b arranged in a regular two-dimensional array in a non-overlapping, mutually adjacent manner, in which each macroblock 40b has sub-division information associated therewith according to which the macroblock is not sub-divided or, if sub-divided, is sub-divided into equally sized sub-blocks in a regular two-dimensional manner, so that different sub-division interval sizes are obtained for different macroblocks. As a result, the sub-division of the sample array 20 in blocks 40 of different sizes is represented by different sizes indicated by 40a, 40b and 40a'. As in Figure 2A the encoder 10 performs a two-dimensional transform on the blocks shown in solid and dashed lines in Figure 2B . Figure 2C Details will be described later.
[0047] Figure 3 A decoder 50 is shown, which can decode the data stream 30 produced by the encoder 10 to reconstruct a reconstructed version 60 of the sample array 20. The decoder 50 extracts the transform coefficient blocks of each block 40 from the data stream 30 and reconstructs the reconstructed version 60 by performing an inverse transform on the transform coefficient blocks.
[0048] The encoder 10 and the decoder 50 can be configured to perform entropy encoding / decoding in order to insert information about the transform coefficient blocks into the data stream and extract the information from the data stream, respectively. Details in this respect will be described later. It should be noted that the data stream 30 does not necessarily contain information about the transform coefficient blocks of all blocks 40 of the sample array 20. Instead, a subset of the blocks 40 can be encoded into the bit stream 30 in a different manner. For example, the encoder 10 can decide to insert different encoding parameters into the bit stream 30 to avoid inserting the transform coefficient blocks for certain blocks 40 of the blocks 40, so that the decoder 50 can predict or in another way fill the respective blocks into the reconstructed version 60. For example, the encoder 10 can perform a texture analysis in order to place blocks within the sample array 20, which can be filled in at the decoder side by means of texture synthesis and which are therefore indicated in the bit stream.
[0049] As will be discussed in the following figures, the transform coefficient blocks do not necessarily have to be spectral domain representations of the original information samples of the respective blocks 40 of the sample array 20. Instead, the transform coefficient blocks can represent spectral domain representations of prediction residuals of the respective blocks 40. Figure 4 An embodiment of such an encoder is shown. Figure 4 The encoder of Fig. 1 comprises a transform stage 100, an entropy encoder 102, an inverse transform stage 104, a predictor 106 and a subtracter 108 and an adder 110. The subtracter 108, the transform stage 100 and the entropy encoder 102 are in Figure 4The input 112 and the output 114 of the encoder are connected in series in the order mentioned. The inverse transform stage 104, the adder 110 and the predictor 106 are connected in the order mentioned between the output of the transform stage 100 and the inverse input of the subtracter 108, the output of the predictor 106 being connected to a further input of the adder 110 as well.
[0050] Figure 4 The encoder of the application is a block encoder based on predictive transform. That is, a block of the array 20 of samples entering the input 112 is predicted from a previously encoded and reconstructed part of the same array 20 of samples or from other arrays of samples previously encoded and reconstructed, which can precede or succeed the current array 20 of samples in time. The prediction is performed by the predictor 106. The subtracter 108 subtracts the predicted value from the original block and the transform stage 100 performs a two-dimensional transform on the prediction residual. The two-dimensional transform itself or subsequent measures within the transform stage 100 can result in a quantization of the transform coefficients within the block of transform coefficients. The quantized block of transform coefficients is losslessly encoded by the entropy encoder 102, for example, and the resulting data stream is output at the output 114. The inverse transform stage 104 reconstructs the quantized residual, the adder 110, in turn, combines the reconstructed residual with the corresponding prediction in order to obtain a reconstructed information sample, from which the predictor 106 can predict the previously mentioned current encoding prediction block. The predictor 106 can use different prediction models, for example, an intra-picture prediction model and an inter-picture prediction model, in order to predict the block, and the prediction parameters are forwarded to the entropy encoder 102 for insertion into the data stream.
[0051] That is, in accordance with an embodiment of the application, the block of transform coefficients represents a spectral representation of the residual of the array of samples rather than the actual information samples thereof. Figure 4
[0052] It is to be noted that for embodiments of the application several options exist, some of which have been described in the preceding part of the description, which is incorporated into the description of the application of the Figure 4 For example, the predicted value generated by the predictor 106 can not be entropy encoded. Instead, side information can be transmitted to the decoding side by a further encoding scheme. Figure 4
[0053] Figure 5 A decoder is shown which is capable of decoding the data stream generated by the encoder of the application. Figure 4 The decoder of the application comprises an entropy decoder 150, an inverse transform stage 152, an adder 154 and a predictor 156. The entropy decoder 150, the inverse transform stage 152 and the adder 154 are connected in series in the order mentioned between the input 152 and the output 154 of the decoder. Figure 5 Figure 5 The further output of the entropy decoder 150 is connected to the predictor 156, which in turn is connected between the output of the adder 154 and its further input. The entropy decoder 150 extracts transform coefficient blocks from the data stream at the input 158, in which the inverse transform is applied at the stage 152 to the transform coefficient blocks in order to obtain residual signals. The residual signals are combined at the adder 154 with prediction values from the predictor 156 in order to obtain at the output 160 a reconstructed block of a reconstructed version of the array of samples. The predictor 156 generates the prediction values from the reconstructed version in order to reconstruct the prediction performed at the encoder side by the predictor 106. In order to obtain the same prediction values as those used at the encoder side, the predictor 156 uses prediction parameters also obtained from the data stream at the input 158 by the entropy decoder 150. Figure 5
[0054] It should be noted that in the embodiments explained above, the spatial interval size in which the residual prediction and the transform are performed need not to be equal to each other. This is shown in Figure 2C The figure shows a sub-division of a prediction block with a prediction interval size in solid lines and a residual interval size in dashed lines. As seen, the sub-division can be chosen independently from each other by the encoder. More precisely, the data stream syntax can allow a definition of the residual sub-division independent from the prediction sub-division. Alternatively, the residual sub-division can be an extension of the prediction sub-division, such that each residual block equals a prediction block or is a proper subset of a prediction block. This is shown in Figure 2A and Figure 2B , for example, again, the prediction interval size is shown in solid lines and the residual interval size is shown in dashed lines. Here, in Figures 2A-2C all blocks with associated reference symbols are residual blocks to be subjected to one two-dimensional transform, while the larger solid line blocks surrounding the dashed line block 40a, for example, are prediction blocks to which prediction parameter settings can be applied separately.
[0055] The embodiments above have in common that the blocks of (residual or original) samples will be transformed at the encoder side into transform coefficient blocks, which in turn will be inverse transformed at the decoder side into reconstructed blocks of samples. This will be explained in Figure 6 Figure 6 A block of samples 200 is shown. In Figure 6 In this case, the block 200 is exemplary square and has a size of 4x4 samples 202. The samples 202 are regularly arranged along a horizontal direction x and a vertical direction y. By the above-mentioned two-dimensional transform T, the block 200 is transformed into the spectral domain, i.e. becomes a block 204 of transform coefficients 206, the transform block 204 having the same size as the block 200. I.e. the transform block 204 has as many transform coefficients 206 as the block 200 has samples, both in horizontal and vertical direction. However, since the transform T is a spectral transform, the positions of the transform coefficients 206 within the transform block 204 do not correspond to spatial positions, but to spectral components of the content of the block 200. In particular, the horizontal axis of the transform block 204 corresponds to an axis along which the spectral frequencies in horizontal direction monotonically increase, and the vertical axis corresponds to an axis along which the spatial frequencies in vertical direction monotonically increase, with the DC component transform coefficient being placed in the corner, here exemplary in the upper left corner of the block 204, so that in the lower right corner, the transform coefficient 206 corresponding to the highest frequency in horizontal and vertical direction is placed. Neglecting the spatial direction, the spatial frequency a certain transform coefficient 206 belongs to increases generally from the upper left corner to the lower right corner. By the inverse transform T -1 , the transform block 204 is transformed back from the spectral domain into the spatial domain, so as to obtain a replica 208 of the block 200. In case no quantization / loss is involved during the transform, the reconstruction would be perfect.
[0056] As mentioned above, from Figure 6 It can be seen that the larger block size of the block 200 increases the spectral resolution of the spectral representation 204. On the other hand, the quantization noise tends to spread over the entire block 208, so that sudden and very small range things within the block 200 tend to lead to errors of the re-transformed block with respect to the original block 200 due to the quantization noise. However, the main advantage of using larger blocks is that the ratio between the number of significant, i.e. non-zero (quantized) transform coefficients on the one hand and the number of non-significant transform coefficients on the other hand can be reduced within larger blocks compared to smaller blocks, so that a better coding efficiency can be obtained. In other words, typically, the significant transform coefficients, i.e. the transform coefficients which are not quantized to zero, are sparsely distributed over the transform block 204. Due to this, in accordance with embodiments which will be explained in more detail below, the positions of the significant transform coefficients are signaled within the data stream via a significance map. Furthermore, the values of the significant transform coefficients, i.e. the transform coefficient levels in case of quantized transform coefficients, are transmitted within the data stream.
[0057] Thus, in accordance with embodiments of the present application, the apparatus for decoding a significance map of a data stream or the apparatus for decoding a significance map of a data stream and corresponding significant transform coefficient values can be as Figure 7The apparatus shown in Fig. 2 is implemented as described above and the respective entropy decoders, i.e. the decoder 50 and the entropy decoder 150, mentioned above can comprise Figure 7 the apparatus shown in Fig. 2.
[0058] Figure 7 The apparatus of Fig. 2 comprises a graph / coefficient entropy decoder 250 and an associator 252. The graph / coefficient entropy decoder 250 is connected to an input 254 at which syntax elements representing a significance graph and significant transform coefficient values enter. As will be described in more detail below, there are different possibilities as to the order in which syntax elements representing a significance graph and significant transform coefficient values enter the graph / coefficient entropy decoder 250 in the aspect described therein. The significance graph syntax elements can precede the corresponding levels or both can be interleaved. However, initially, it is assumed that the syntax elements representing the significance graph precede the significant transform coefficient values (levels) such that the graph / coefficient entropy decoder 250 first decodes the significance graph and then the transform coefficient levels of the significant transform coefficients.
[0059] Since the graph / coefficient entropy decoder 250 sequentially decodes the syntax elements representing a significance graph and the significant transform coefficient values, the associator 252 is configured to associate these sequentially decoded syntax elements / values to positions within the transform block 256. Therein, the associator 252 associates the sequentially decoded syntax elements representing a significance graph and the significant transform coefficient levels to a scan order of positions of the transform block 256, which follows a one-dimensional scan order in the positions of the transform block 256, which is identical to the order in which these elements are used at the encoding side to lead them into the data stream. As will be described in more detail below, the scan order for the significance graph syntax elements can also be equal to the order used for the significant coefficient values or not.
[0060] The graph / coefficient entropy decoder 250 can access information available so far on the transform block 256 (as produced by the associator 252 up to the syntax elements / levels to be decoded so far) in order to set the probability estimation contexts for entropy decoding the syntax elements / levels to be decoded so far as indicated by the dashed line 258. For example, the associator 252 can log information collected so far from the sequentially associated syntax elements, e.g. the levels themselves or information about whether a significant transform coefficient is located at the respective position or not or about whether the respective position of the transform block 256 is not known yet, which is accessed by the graph / coefficient entropy decoder 250. The just mentioned memory is not shown in Figure 7 Fig. 2, but the reference sign 256 can also indicate this memory, too, as long as a memory or a log buffer will be used to store preliminary information obtained so far with the associator 252 and the entropy decoder 250. Thus, Figure 7The position of the significant transform coefficients obtained from the previously decoded syntax elements representing the significance map is shown by the cross, "1" will indicate that the significant transform coefficient level of the significant transform coefficient at the respective position has been decoded and is 1. In case the significance map syntax elements are in the data stream before the significant values, at the time of decoding the respective values, the cross should have been already recorded in the memory 256 at the position of "1" (which case will represent the entire significance map) before inputting "1".
[0061] The following description focuses on specific implementations of coding transform coefficient blocks or significance maps, which are easily transformable to the implementations explained above. In these implementations, a binary syntax element coded_block_flag can be sent for each transform block, which signals whether the transform block contains any significant transform coefficient levels (i.e., transform coefficients that are non-zero). If the syntax element indicates that these significant transform coefficient levels exist, the significance map is coded, i.e., followed. The significance map indicates, as indicated above, which transform coefficient levels have non-zero values. The significance map coding involves the coding of binary syntax elements significant_coeff_flag, where each binary syntax element significant_coeff_flag indicates whether the transform coefficient level corresponding to the respective coefficient position is unequal to zero. The coding is done in a certain scan order, which can change during the significance map coding depending on the significant coefficient positions that have been identified as significant so far, as described in more detail below. Further, the significance map coding involves the coding of binary syntax elements last_significant_coeff_flag, where the binary syntax element last_significant_coeff_flag scatters through its position the sequence of significant_coeff_flag, where significant_coeff_flag signals a significant coefficient. If the significant_coeff_flag binary value is equal to 1, i.e., if a non-zero value transform coefficient level exists in the scan position, a further binary syntax element last_significant_coeff_flag is coded. This binary value indicates whether the current significant transform coefficient level is the last significant transform coefficient level within the block or whether a further significant transform coefficient level follows in scan order. If last_significant_coeff_flag indicates that no further significant transform coefficient follows, no further syntax element is coded for the significance map assigned to the block. Alternatively, the number of significant coefficient positions can be signaled in the data stream before the sequence significant_coeff_flag coding. In a next step, the significant transform coefficient level values are coded. As described above, the transfer of levels can be optionally interleaved with the transfer of the significance map. The significant transform coefficient level values are coded in a further scan order, an example of which is described below. The following three syntax elements are used. The binary syntax element coeff_abs_greater_one indicates whether the absolute value of the significant transform coefficient level is greater than 1.If the binary syntax element coeff_abs_greater_one indicates that the absolute value is greater than one, a further syntax element coeff_abs_level_minus_one is transmitted, which indicates the absolute value of the transform coefficient level minus one. Finally, for each significant transform coefficient level, a binary syntax element coeff_sign_flag is coded, which indicates the sign of the transform coefficient value.
[0062] The embodiments described below can further reduce the bit rate and thus increase the coding efficiency. To achieve this, the embodiments use a specific approach for the context model of the syntax elements related to the transform coefficients. Specifically, for the syntax elements significant_coeff_flag, last_significant_coeff_flag, coeff_abs_greater_one and coeff_abs_level_minus_one, a new context model selection can be used. Further, an adaptive switching of the scan during the coding / decoding of the significance map (which specifies the positions of the non-zero transform coefficient levels) is described. For the meaning of the syntax elements to be mentioned, reference is made to the above sections of the present application.
[0063] The coding of the significant_coeff_flag and last_significant_coeff_flag syntax elements of the significance map is improved based on a new context model of a defined neighborhood of the already coded scan position and an adaptive scan. These new concepts make the coding of the significance map more efficient (i.e. the corresponding bit rate is reduced), especially for large block sizes.
[0064] One aspect of the embodiments outlined below is that the scan order (i.e. the mapping of the block of transform coefficient values onto an ordered set (vector) of transform coefficient levels) during the coding / decoding of the significance map is adjusted based on the values of the already coded / decoded syntax elements of the significance map.
[0065] In a preferred embodiment, the scan order is adaptively switched between two or more predetermined scan patterns. In a preferred embodiment, the switching can only occur at certain predetermined scan positions. In a further preferred embodiment of the present application, the scan order is adaptively switched between two predetermined scan patterns. In a preferred embodiment, the switching between the two predetermined scan patterns can only occur at certain predetermined scan positions.
[0066] The advantage of switching between scan patterns is a reduction of the bit rate, which is a result of a smaller number of coded syntax elements. As an intuitive example and with reference toFigure 6 Since the residual block mainly contains horizontal or vertical structures, it is often the case that the values of the significant transform coefficients, especially for large transform blocks, are concentrated at one of the block edges 270, 272. With the most commonly used zigzag scan 274, there is a probability of about 0.5 that the last diagonal subscan of the zigzag scan, in which the last significant coefficient is encountered, starts at the side where the significant transform coefficients are not concentrated. In this case, a large number of syntax elements with a value equal to zero have to be coded before the last non-zero transform coefficient value is reached. This can be avoided if the diagonal subscan often starts at the side where the significant transform coefficients are concentrated.
[0067] In the following, preferred embodiments of the present application will be explained in more detail.
[0068] As mentioned above, also for large block sizes, it is preferred that a moderate small number of context models is retained in order to enable fast adaptation of the context models and to provide a high coding efficiency. Therefore, a particular context should be used for more than one scan position. But since the significant transform coefficient levels are often concentrated in certain areas of the transform block (this concentration can be a result of certain dominating structures that often occur, e.g., in residual blocks), the assumption that the same context is assigned to a number of consecutive scan positions, as it is done, e.g., for the processing of 8x8 blocks in H.264, is often not suitable. For the selection of the context, the observation that the significant transform coefficient levels tend to be concentrated in certain areas of the transform block can be used. In the following, assumptions will be explained in which this observation can be exploited.
[0069] In a preferred embodiment, a large transform block (e.g., larger than 8x8) is split into a number of rectangular sub-blocks (e.g., into 16 sub-blocks) and each of these sub-blocks is associated to a separate context model for coding the significant_coeff_flag and the last_significant_coeff_flag (where different context models are used for the significant_coeff_flag and the last_significant_coeff_flag). The splitting into sub-blocks can be different for the significant_coeff_flag and the last_significant_coeff_flag. The same context model can be used for all scan positions that are located in a particular sub-block.
[0070] In a further preferred embodiment, a large transform block (e.g. larger than 8x8) can be partitioned into a number of rectangular and / or non-rectangular sub-regions and each of these sub-regions is associated to a separate context model for encoding the significant_coeff_flag and / or the last_significant_coeff_flag. The partitioning into sub-regions can be different for the significant_coeff_flag and the last_significant_coeff_flag. The same context model can be used for all scan positions located in a certain sub-region.
[0071] In a further preferred embodiment, the context model for encoding the significant_coeff_flag and / or the last_significant_coeff_flag is selected based on the symbols that have been encoded in a predetermined spatial neighborhood of the current scan position. The predetermined neighborhood can be different for different scan positions. In a preferred embodiment, the context model is selected based on the number of significant transform coefficients levels only in a predetermined spatial neighborhood of the current scan position that have been encoded for the significant flag.
[0072] Preferred embodiments of the present application will be explained in more detail in the following.
[0073] As mentioned above, for large block sizes, the common context model encodes a large number of binary values (which usually have different probabilities) by a single context model for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements. To avoid the drawbacks of large block sizes, according to an embodiment, a large block can be partitioned into small square or rectangular sub-blocks of a certain size and a separate context model is applied to each sub-block. Furthermore, a plurality of sets of context models can be used, wherein for each sub-block one of these context models is selected based on an analysis of the statistics of previously encoded sub-blocks. In a preferred embodiment of the present application, the number of transform coefficients larger than 2 (i.e. coeff_abs_level_minus_1 > 1) in the same block's sub-blocks that have been previously encoded is used to derive the context model set for the current sub-block. These enhancements of the context models for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements make the encoding of both syntax elements more efficient, in particular for large block sizes. In a preferred embodiment, the block size of the sub-blocks is 2x2. In a further preferred embodiment, the block size of the sub-blocks is 4x4.
[0074] In a first step, blocks larger than a predetermined size can be split into smaller sub-blocks of a certain size. The coding process of the absolute transform coefficient levels uses a scan (where different scans can be used for different blocks) to map the sub-blocks of a square or rectangular block onto an ordered sub-block group (vector). In a preferred embodiment, the sub-blocks are processed using a zigzag scan; the transform coefficient levels inside a sub-block are processed with an inverse zigzag scan, i.e. the transform coefficients belonging to the highest frequencies in the vertical and horizontal directions are loaded to the scan of the lowest frequency coefficients in the respective two directions. In a further preferred embodiment of the present application, the inverse zigzag scan is used for coding the sub-blocks and for coding the transform coefficient levels inside the sub-blocks. In a further preferred embodiment of the present application, the entire block of transform coefficient levels is processed using the same adaptive scan used for coding the significance map (see above).
[0075] The splitting of the large transform blocks into sub-blocks avoids the problem of using only one context model for the majority of the binary values of a large transform block. Inside the sub-blocks, the context model of the current technology (as specified in H.264) or a fixed context can be used depending on the actual size of the sub-block. Furthermore, the statistics (according to the probability model) for these sub-blocks are different from the statistics of a transform block having the same size. These properties can be exploited by extending the context model groups for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements. A number of context model groups can be provided, and for each sub-block, one of these context model groups can be selected based on the statistics of the previously coded sub-blocks of the current transform block or in the previously coded transform blocks. In a preferred embodiment of the present application, the selected context model group is based on the previously coded sub-block statistics of the same block. In a further preferred embodiment of the present application, the selected context model group is based on the same sub-block statistics of the previously coded blocks. In a preferred embodiment, the number of context model groups is set equal to 4, while in a further preferred embodiment, the number of context model groups is set equal to 16. In a preferred embodiment, the statistics used to derive the context model group is the number of absolute transform coefficient levels greater than 2 in the previously coded sub-blocks. In another preferred embodiment, the statistics used to derive the context model group is different between the number of significant coefficients and the number of transform coefficient levels having an absolute value greater than 2.
[0076] The coding of the significance map can be performed as described below, i.e. by adaptive switching of the scan order.
[0077] In a preferred embodiment, the scan order used to encode the saliency map is adapted by switching between two predetermined scan patterns. The switching between the scan patterns can be done only at certain predetermined scan positions. The decision whether to switch or not depends on the saliency map syntax element values that have been encoded / decoded. In a preferred embodiment, the two predetermined scan patterns specify a scan pattern with diagonal sub-scans from bottom left to top right or vice versa, similar to zigzag scan. These scan patterns are shown in Figure 8 Fig. 3. Both scan patterns 300 and 302 consist of diagonal sub-scans from bottom left to top right or vice versa. The scanning of the diagonal sub-scans from top left to bottom right (not shown in the figures) is done for both predetermined scan patterns. But the scanning within the diagonal sub-scans is different (as shown in the figures). For the first scan pattern 300, the diagonal sub-scans are scanned from bottom left to top right (left-hand figure of Figure 8 ), and for the second scan pattern 302, the diagonal sub-scans are scanned from top right to bottom left (right-hand figure of Figure 8 ). In an embodiment, the encoding of the saliency map starts with the second scan pattern. While encoding / decoding the syntax elements, the number of significant transform coefficient values is calculated with two counters cl and c2. The first counter cl counts the number of significant transform coefficients located in the bottom left part of the transform block; i.e. the counter is increased by one when a significant transform coefficient is encoded / decoded horizontally for a horizontal coordinate x within the transform block that is smaller than the vertical coordinate y. The second counter c2 counts the number of significant transform coefficients located in the top right part of the transform block; i.e. the counter is increased by one when a significant transform coefficient is encoded / decoded horizontally for a horizontal coordinate x within the transform block that is greater than the vertical coordinate y. The adaptation of the counters can be performed with the correlator 252 of Figure 7 and can be described with the following equations, where t denotes the scan position index and both counters are initialized with zero:
[0078]
[0079]
[0080] At the end of each diagonal sub-scan, it is decided with the correlator 252 whether the first predetermined scan pattern 300 or the second predetermined scan pattern 302 is used for the next diagonal sub-scan. The decision depends on the values of the counters cl and c2. When the counter value for the bottom left part of the transform block is greater than the counter value for the bottom left part, the scan pattern scanning the diagonal sub-scans from bottom left to top right is used; otherwise (the counter value for the bottom left part of the transform block is smaller than or equal to the counter value for the bottom left part), the scan pattern scanning the diagonal sub-scans from top right to bottom left is used. The decision can be expressed with the following equation:
[0081]
[0082] It should be noted that the embodiments of the present invention described above can be readily applied to other scanning modes. As an example, the scanning mode used for image field macroblocks in H.264 can also be decomposed into subscans. In a further preferred embodiment, the given, but arbitrary, scanning mode is decomposed into subscans. For each subscan, two scanning modes are defined: one from the lower left to the upper right, and the other from the upper right to the lower left (basic scanning direction). In addition, two counters are introduced to count the number of significant coefficients in the first part (near the lower left boundary of the transform block) and the second part (near the upper right boundary of the transform block) within the subscan. Finally, at the end of each subscan, it is determined (based on the counter values) whether the next subscan will scan from the lower left to the upper right or from the upper right to the lower left.
[0083] Below, an example of how the entropy decoder 250 builds a context model will be described.
[0084] In a preferred embodiment, the context model for significant_coeff_flag is processed as described below. For 4x4 blocks, the context model is processed as illustrated in H.264. For 8x8 blocks, the transform block is decomposed into 16 2x2 sampled sub-blocks, and each of these sub-blocks is associated with a separate context. Note that this approach can also be extended to larger block sizes, different numbers of sub-blocks, and non-rectangular sub-regions as described above.
[0085] In a further preferred embodiment, the context model selection for larger transform blocks (e.g., blocks larger than 8x8) is based on the number of significant transform coefficients already encoded in a predetermined neighborhood region (within the transform block). Examples corresponding to the definition of the neighborhood region in the preferred embodiment of the invention will be... Figure 9 The diagram describes the area marked with a cross surrounded by a circle as an available neighborhood region, which is typically considered for evaluation. The cross-shaped marking surrounded by a triangle is also a neighborhood region, which can be evaluated based on the current scan position and current scan orientation.
[0086] • If the current scan position is inside the left corner 304 of a 2x2 grid, then the respective context model is used for each scan position. Figure 9 (See diagram on the left).
[0087] • If the current scan position is not inside the left corner of a 2x2 grid and is not in the first column or first row of the transform block, then in Figure 9 The neighborhood shown on the right is used to evaluate the number of significant transformation coefficients in the neighborhood of the current scan position "x" where nothing surrounds it.
[0088] • if nothing is falling in the first column of the transform block around its current scan position "x", use Figure 10 the neighboring region indicated in the right-hand side illustration.
[0089] • if the current scan position "x" falls in the first row of the block, use Figure 10 the neighboring region indicated in the left-hand side illustration.
[0090] In other words, the decoder 250 can be configured to sequentially extract the significance map syntax elements by context-adaptive entropy decoding with contexts, wherein these contexts are each selected depending on the number of significant transform coefficient levels in the defined neighboring region of the position of the previously extracted and otherwise associated significance map syntax element, which is defined as the positions located in the neighboring region of the position of the respective current significance map syntax element being associated. Figure 9 the "x" in the right-hand side and Figure 10 both sides, and Figure 9 any notation position in the left-hand side). As illustrated, the neighboring region of the position of the respective current syntax element can only contain positions which are separated by at most one position in vertical direction and / or one position in horizontal direction from the position of the respective significance map syntax element being associated or directly adjacent to it. Alternatively, only positions directly adjacent to the respective current syntax element can be considered. At the same time, the transform coefficient block size can be equal to or larger than 8x8 positions.
[0091] In a preferred embodiment, the context model for encoding the particular significant_coeff_flag is selected based on the number of significant transform coefficient levels already encoded in the defined neighboring region. Here, the number of context models available for use can be smaller than the possible values of the number of significant transform coefficient levels in the defined neighboring region. The encoder and the decoder can contain a table (or a different mapping mechanism) to map the number of significant transform coefficient levels in the defined neighboring region to a context model index.
[0092] In a further preferred embodiment, the selected context model index depends on the number of significant transform coefficient levels in the defined neighboring region and on one or more additional parameters being the type of neighboring region used or the scan position or a quantization value for the scan position.
[0093] For the coding of last_significant_coeff_flag, a similar context model as for significant_coeff_flag can be used. However, the probability measure for last_significant_coeff_flag mainly depends on the distance of the current scan position to the top-left corner of the transform block. In a preferred embodiment, the context model used for coding last_significant_coeff_flag is selected based on the scan diagonal line in which the current scan position is located (i.e., in the above Figure 8 mentioned implementation, it is based on x+y, where x and y each represent the horizontal and vertical position of the scan position within the transform block, or on how many sub-scans there are between the current sub-scan and the top-left DC position (e.g., sub-scan index minus 1). In a preferred embodiment of the present application, the same context is used for different x+y values. The distance measure, i.e., x+y or sub-scan index, is mapped onto the context model set in a certain way (e.g., by quantizing x+y or sub-scan index), where the number of possible values for the distance measure is larger than the number of available context models used for coding last_significant_coeff_flag.
[0094] In a preferred embodiment, different context model structures are used for different sizes of transform blocks.
[0095] The coding of absolute transform coefficient levels will be explained in the following.
[0096] In a preferred embodiment, the sub-block size is 2x2 and no context model is available within the sub-block, i.e., a single context model is used for all transform coefficients within a 2x2 sub-block. Only blocks larger than 2x2 can be affected by the sub-division process. In a further preferred embodiment of the present application, the sub-block size is 4x4 and the context model within the sub-block is done as in H.264; only blocks larger than 4x4 are affected by the sub-division process.
[0097] With respect to the scan order, in a preferred embodiment, the zigzag scan 320 is used to scan the sub-blocks 322 of the transform block 256, i.e., along a direction of generally increasing frequency, while the transform coefficients within the sub-blocks are scanned in reverse zigzag scan 324 Figure 11 ). In a further preferred embodiment of the present application, both the sub-blocks 322 and the transform coefficient levels within the sub-blocks 322 are scanned using reverse zigzag scan (as Figure 11In another preferred embodiment, the same adaptive scan as used for encoding the significance map is used for processing the transform coefficient levels, wherein the adaptation decision is the same, so that exactly the same scan is used for encoding the significance map and for encoding the transform coefficient levels. It should be noted that the scan itself is usually not dependent on the selected number of statistical data or context model groups, nor on the decision to make the context models inside the sub-blocks active or inactive.
[0098] Next, embodiments for the context models for the coefficient levels will be explained.
[0099] In a preferred embodiment, the context models for the sub-blocks are similar to the context models for the 4x4 blocks in H.264 already described above. The number of context models used for encoding the first bin value of the coeff_abs_greater_one syntax element and the coeff_abs_level_minus_one syntax element is equal to five, e.g. a different group of context models is used for both syntax elements. In a further preferred embodiment, the context models inside the sub-blocks are inactive and only one predetermined context model is used inside each sub-block. For both embodiments, the group of context models for the sub-block 322 is selected among a predetermined number of groups of context models. The selection of the group of context models for the sub-block 322 is based on certain statistical data of one or more already encoded sub-blocks. In a preferred embodiment, the statistical data used for selecting the group of context models for the sub-block is obtained from one or more already encoded sub-blocks of the same block 256. How the statistical data is used to obtain the selected group of context models will be explained below. In a further preferred embodiment, the statistical data is obtained from the same sub-blocks in previously encoded blocks having the same block size, e.g. from the blocks 40a and 40a' in Fig. 4. In a further preferred embodiment of the application, the statistical data is obtained from neighboring sub-blocks defined in the same block, which depends on the scan selected for the sub-block. At the same time, it is important to note that the source of the statistical data should be independent of the scan order, and how the statistical data is generated to obtain the group of context models. Figure 2B
[0100] In a preferred embodiment, the number of context model groups is equal to four, in another preferred embodiment, the number of context model groups is equal to 16. In general, the number of context model groups is not fixed and will be adjusted according to the chosen statistics. In a preferred embodiment, the context model group for a subblock 322 is based on the number of absolute transform coefficient levels greater than 2 in one or more already coded subblocks. The index for the context model group is determined by mapping the number of absolute transform coefficient levels greater than 2 in the reference subblock to a set of predetermined context model indices. The mapping can be implemented by quantizing the number of absolute transform coefficient levels greater than 2 or by a predetermined list. In a further preferred embodiment, the context model group for a subblock is based on the difference between the number of significant transform coefficient levels and the number of absolute transform coefficient levels greater than 2 in one or more already coded subblocks. The index for the context model group is determined by mapping the difference to a set of predetermined context model indices. The mapping can be implemented by quantizing the difference between the number of significant transform coefficient levels and the number of absolute transform coefficient levels greater than 2 or by a predetermined list.
[0101] In another preferred embodiment, when the same adaptive scan is used to process the absolute transform coefficient levels and the significance map, the partial statistics of the subblocks in the same block can be used to derive the context model group for the current subblock. Alternatively, if possible, the statistics of the previously coded subblocks in the previously coded transform block can be used. This means, for example, instead of using the absolute number of absolute transform coefficient levels greater than 2 in the subblock used to derive the context model, using the number of absolute transform coefficient levels greater than 2 that have been coded multiplied by the ratio of the number of transform coefficients in the subblock to the number of transform coefficients that have been coded in the subblock; or instead of using the difference between the number of significant transform coefficient levels and the number of absolute transform coefficient levels greater than 2 in the subblock, using the difference between the number of significant transform coefficient levels and the number of absolute transform coefficient levels greater than 2 that have been coded in the subblock multiplied by the ratio of the number of transform coefficients in the subblock to the number of transform coefficients that have been coded.
[0102] For the context model inside a sub-block, basically, the inverse of the context model of the state-of-the-art for H.264 can be employed. This means that when the same adaptive scan is used to process the absolute transform coefficient levels as well as the significance map, the transform coefficient levels are basically encoded in the forward scan order instead of the inverse scan order as in H.264. Therefore, the context model switching has to be adjusted accordingly. According to an embodiment, the encoding of the transform coefficient levels starts with the first context model for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements and is switched to the next context model in the group when two coeff_abs_greater_one syntax elements equal to zero have been encoded due to the last context model switch. In other words, the context selection depends on the number of coeff_abs_greater_one syntax elements greater than zero that have been encoded in the scan order. The number of context models for coeff_abs_greater_one as well as for coeff_abs_level_minus_one can be the same as in H.264.
[0103] Therefore, the above embodiments can be applied in the field of digital signal processing, in particular, to image and video decoders and encoders. In particular, the above embodiments enable an improved encoding of syntax elements on transform coefficients encoded by an entropy coder employing a probability model with respect to block-based image and video codecs with improved context models for syntax elements on transform coefficients encoded by an entropy coder employing a probability model. An increase in coding efficiency can be achieved, in particular, for large transform blocks, compared to the state-of-the-art.
[0104] While some aspects have been described in the context of an apparatus, it is clear that these aspects also represent a description, albeit a contextual one, of corresponding methods, wherein blocks or components correspond to method steps or features of method steps. Similarly, aspects described in the context of a method step also represent a description of corresponding blocks or items or features of corresponding apparatuses.
[0105] The inventive encoded signal representing a transform block or a significance map, respectively, can be stored on a digital storage medium or can be transmitted on a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet.
[0106] Depending on certain implementation requirements of the inventive methods, embodiments of the application can be implemented in hardware or in software. The implementation can be triggered with the use of a digital storage medium, such as a floppy disk, a DVD, a Blu-Ray, a CD, a ROM, a PROM, an EPROM, an EEPROM or a FLASH memory, having electronically readable control signals stored thereon, which cooperate with a programmable computer system such that the respective method is performed. Therefore, the digital storage medium can be computer readable.
[0107] Some embodiments according to the application comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that one of the methods described herein is performed.
[0108] Generally, embodiments of the present application can be implemented as a computer program product with a program code, the program code being operative for performing one of the methods when the computer program product runs on a computer. The program code can for example be stored on a machine readable carrier.
[0109] Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0110] In other words: an embodiment of the inventive methods is, therefore, a computer program for performing one of the methods described herein, when the computer program runs on a computer.
[0111] A further embodiment of the inventive methods is, therefore, a data carrier (or a digital storage medium, or a computer-readable medium) comprising, recorded thereon, the computer program for performing one of the methods described herein.
[0112] A further embodiment of the inventive method is, therefore, a data stream or a sequence of signals representing the computer program for performing one of the methods described herein. The data stream or the sequence of signals can for example be configured to be transferred via a data communication connection, e.g. a
[0113] A further embodiment comprises a processing means, such as a computer, or a programmable logic device, configured to or adapted for performing one of the methods described herein.
[0114] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0115] In some embodiments, a programmable logic device (e.g., a field programmable gate array) can be used to perform some or all of the functionalities of the various methods described herein. In some embodiments, a field programmable gate array can cooperate with a microprocessor in order to perform one of the various methods described herein. Generally, the methods are preferably performed by any hardware apparatus.
[0116] The implementations described above are only illustrative of the principles of the present application. Those skilled in the art will appreciate that the arrangements and details of the application described herein can vary significantly without departing from the scope of the present application. Accordingly, the present application is defined only by the scope of the claims that follow, and not by the examples and descriptions presented herein.
[0117] The present application can also be configured in the following way.
[0118] 1. An apparatus for decoding a significance map from a data stream that indicates positions of significant transform coefficients within a block of transform coefficients, the apparatus comprising:
[0119] a decoder (250) configured to sequentially extract, from the data stream, first type syntax elements that indicate, for an associated position within the block of transform coefficients (256), whether at least one of a significant transform coefficient or a non-significant transform coefficient is located at the respective position; and
[0120] an associator (252) configured to sequentially associate the sequentially extracted first type syntax elements to positions of the block of transform coefficients in a scan order that depends on positions of the significant transform coefficients indicated by previously extracted and associated first type syntax elements.
[0121] 2. The apparatus according to item 1, wherein the decoder (250) is further configured to identify, based on information in the data stream and without regard to the number of positions of the non-significant transform coefficients indicated by the previously extracted and associated first type syntax elements, whether a last significant transform coefficient in the block of transform coefficients is located at a position associated with a currently extracted first type syntax element, wherein the currently extracted first type syntax element indicates that a significant transform coefficient is located at the position.
[0122] 3. The apparatus according to item 1 or 2, wherein the decoder (250) is further configured to extract, from the bitstream, between a first type syntax element that indicates that a significant transform coefficient is located at a respective associated position and an immediately succeeding first type syntax element, a second type syntax element that indicates, for the associated position at which the significant transform coefficient is located, whether a last significant transform coefficient in the block of transform coefficients is located at the respective associated position.
[0123] 4. The apparatus of any of the items 1 to 3, wherein the decoder (250) is further configured to, after the extraction of all first type syntax elements of the transform coefficient block, successively extract the values of the significant transform coefficients within the transform coefficient block from the data stream by context-adaptive entropy decoding, wherein the correlator (250) is configured to, in the order of the extraction, sequentially correlate the extracted values with the positions of the significant transform coefficients in the predetermined coefficient scan order, according to which result the transform coefficient block is scanned in the manner of sub-blocks (322) of the transform coefficient block (256) using a sub-block scan order (320), and, in addition, the positions of the transform coefficients within the sub-blocks (322) are scanned in a position sub-scan order (324), wherein the decoder is configured to, when context-adaptively entropy decoding the values of the significant transform coefficient values, use a selection group of several contexts selected from a plurality of groups of contexts, the selection of the selection group being based on the values of the transform coefficients within the sub-blocks of the transform coefficient block that have been traversed in the sub-block scan order (320), or on the values of the transform coefficients of the co-located sub-blocks in previously decoded transform coefficient blocks of equal size for each sub-block.
[0124] 5. The apparatus of any of the items 1 to 4, wherein the decoder (250) is configured to successively extract the first type syntax elements by context-adaptive entropy decoding using a context that is individually selected for each of the first type syntax elements depending on several positions in which a significant transform coefficient is located according to previously extracted and correlated first type syntax elements, the several positions being within a neighborhood of the position associated with the respective first type syntax element.
[0125] 6. The apparatus of item 5, wherein the decoder is further configured such that the neighborhood of the position associated with the respective first type syntax element comprises only positions that are directly adjacent to the position associated with the respective first type syntax element, or positions that are separated by at most one position in the vertical direction and / or one position in the horizontal direction from the position associated with the respective first type syntax element, wherein the size of the transform coefficient block is equal to or larger than 8x8 positions.
[0126] 7. The apparatus of any of the items 5 or 6, wherein the decoder is further configured to, in case of weighting a number of available positions in a neighborhood of a position associated with a respective first type syntax element, map a significant transform coefficient within the neighborhood of the position associated with the respective first type syntax element to a context index of a predetermined set of possible context indices depending on a number of positions, in which a previously extracted and associated first type syntax element is located, of the significant transform coefficient.
[0127] 8. The apparatus of any of the items 1 to 7, wherein the associator (252) is further configured to sequentially associate the sequentially extracted first type syntax elements to positions of the transform coefficient block along a sub-line sequence extending between a first pair of adjoining sides of the transform coefficient block and a second pair of adjoining sides of the transform coefficient block, wherein a position of lowest frequency in horizontal direction and a position of highest frequency in vertical direction are placed along the first pair of adjoining sides of the transform coefficient block, respectively, and a position of lowest frequency in vertical direction and a position of highest frequency in horizontal direction are placed along the second pair of adjoining sides of the transform coefficient block, respectively, the sub-line sequence having an increasing distance to the positions of lowest frequency in both vertical and horizontal direction, wherein the associator (252) is configured to determine a direction (300, 302) along which the sequentially extracted first type syntax elements are associated to positions of the transform coefficient block based on positions of significant transform coefficients within a previous scan.
[0128] 9. An apparatus for decoding a significance map from a data stream indicating positions of significant transform coefficients within a transform coefficient block, the apparatus comprising:
[0129] a decoder (250) configured to extract from the data stream a significance map indicating positions of significant transform coefficients within the transform coefficient block and then extract values of the significant transform coefficients within the transform coefficient block, while extracting the significance map, sequentially extract first type syntax elements from the data stream by context-adaptive entropy decoding, the first type syntax elements indicating, for an associated position within the transform coefficient block, whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position; and
[0130] an associator (250) configured to sequentially associate the sequentially extracted first type syntax elements to positions of the transform coefficient block in a predetermined scan order among the positions of the transform coefficient block,
[0131] wherein the decoder is configured to use, when context-adaptive entropy decoding the first type syntax elements, a context that is individually selected for each of the first type syntax elements depending on a number of positions within a neighborhood of a position associated with the respective first type syntax element at which significant transform coefficients according to previously extracted and associated first type syntax elements are located.
[0132] 10. The apparatus of item 9, wherein the decoder (250) is further configured such that the neighborhood of a position associated with a respective first type syntax element comprises only positions that directly adjoin the position associated with the respective first type syntax element or positions that are separated by a maximum of one position in vertical direction and / or one position in horizontal direction from the position associated with the respective first type syntax element, wherein the size of the transform coefficient block is equal to or larger than 8x8 positions.
[0133] 11. The apparatus of item 9 or 10, wherein the decoder (250) is further configured to, in case of weighting a number of available positions within the neighborhood of a position associated with a respective first type syntax element, map the number of positions within the neighborhood of a position associated with a respective first type syntax element at which significant transform coefficients according to previously extracted and associated first type syntax elements are located to a context index out of a predetermined set of possible context indices.
[0134] 12. An apparatus for decoding a transform coefficient block, the apparatus comprising:
[0135] a decoder (250) configured to extract from the data stream a significance map indicating positions of significant transform coefficients within the transform coefficient block and then to extract values of the significant transform coefficients within the transform coefficient block, when extracting the values of the significant transform coefficients, sequentially extracting the values by context-adaptive entropy decoding; and
[0136] an associator (252) configured to sequentially associate the sequentially extracted values with the positions of the significant transform coefficients in a predetermined coefficient scan order among the positions of the transform coefficient block, as a result of which the transform coefficient block is scanned in a sub-block scan order (320) in a manner of sub-blocks (322) of the transform coefficient block (256), and, in addition, the positions of transform coefficients within the sub-blocks are scanned in a position sub-scan order (324),
[0137] wherein the decoder (250) is configured to use, when sequentially context-adaptive entropy decoding values of the significant transform coefficient values, a selected set of a number of contexts selected from a plurality of groups of contexts, the selection of the selected set of contexts being based on values of transform coefficients within sub-blocks of the transform coefficient block that have been traversed in a sub-block scan order, or on values of transform coefficients of co-located sub-blocks within previously decoded transform coefficient blocks of equal size for each sub-block.
[0138] 13. The apparatus of item 12, wherein the decoder is configured such that the number of contexts of the plurality of groups of contexts is greater than one, and configured to, when sequentially context-adaptive decoding values of the significant transform coefficient values within a sub-block using a selected set of the number of contexts for the respective sub-block, uniquely assign contexts of the selected set of the number of contexts to locations within the respective sub-block.
[0139] 14. The apparatus of item 12 or 13, wherein the correlator (252) is configured such that the sub-block scan order proceeds in a zigzag manner from a sub-block comprising a location of lowest frequency in both vertical and horizontal direction to a sub-block comprising a location of highest frequency in both vertical and horizontal direction, while the position sub-scan order proceeds in a zigzag manner within each sub-block from a location within the respective sub-block related to highest frequency in both vertical and horizontal direction to a location within the respective sub-block related to lowest frequency in both vertical and horizontal direction.
[0140] 15. A transform-based decoder, the decoder being configured to decode a transform coefficient block using the apparatus (150) of any one of items 1 to 11 for decoding a significance map from a data stream indicating positions of significant transform coefficients within the transform coefficient block, and to perform (152) a transform from spectral domain to spatial domain on the transform coefficient block.
[0141] 16. A predictive decoder, comprising:
[0142] a transform-based decoder (150, 152) configured to decode a transform coefficient block using the apparatus (150) of any one of items 1 to 11 for decoding a significance map from a data stream indicating positions of significant transform coefficients within the transform coefficient block, and to perform (152) a transform from spectral domain to spatial domain on the transform coefficient block to obtain a residual block;
[0143] a predictor (156) configured to provide a prediction for a block of information sample arrays representing a spatial sample information signal; and
[0144] a combiner (154) configured to combine the prediction for the block and the residual block to reconstruct an information sample array.
[0145] 17. Apparatus for encoding a significance map indicating positions of significant transform coefficients within a block of transform coefficients into a data stream, the apparatus being configured to sequentially encode first type syntax elements into the data stream by entropy encoding, the first type syntax elements being indicative of, for an associated position within the block of transform coefficients, whether a significant or non-significant transform coefficient is located at the respective position, wherein the apparatus is further configured to encode the first type syntax elements into the data stream in a scan order of positions of the block of transform coefficients depending on positions of the significant transform coefficients indicated by previously encoded first type syntax elements.
[0146] 18. Apparatus for encoding a significance map indicating positions of significant transform coefficients within a block of transform coefficients into a data stream, the apparatus being configured to encode a significance map indicating positions of significant transform coefficients within the block of transform coefficients and then to encode values of the significant transform coefficients within the block of transform coefficients into the data stream, in encoding the significance map first type syntax elements are sequentially encoded into the data stream by context adaptive entropy encoding, the first type syntax elements being indicative of, for an associated position within the block of transform coefficients, whether a significant or non-significant transform coefficient is located at the respective position, wherein the apparatus is further configured to sequentially encode the first type syntax elements into the data stream in a predetermined scan order of positions of the block of transform coefficients, wherein the apparatus is configured to use, in context adaptive entropy encoding of each of the first type syntax elements, a context depending on a number of positions within a neighborhood of a position associated with the current first type syntax element at which a significant transform coefficient is located and for which a first type syntax element has been previously encoded into the data stream, the number of positions being individually selected for the first type syntax element.
[0147] 19. Apparatus for encoding a block of transform coefficients, the apparatus being configured to encode a significance map indicative of positions of significant transform coefficients within the block of transform coefficients, and then to encode values of the significant transform coefficients within the block of transform coefficients into a data stream, the values of the significant transform coefficients being sequentially encoded by context-adaptive entropy encoding while being extracted from the data stream, wherein the apparatus is configured to encode the values into the data stream in a predetermined coefficient scan order among positions of the block of transform coefficients, as a result of which the block of transform coefficients is scanned in a sub-block scan order in a manner of sub-blocks of the block of transform coefficients, and, in addition, positions of transform coefficients within the sub-blocks are scanned in a position sub-scan order, wherein the apparatus is further configured to use, while sequentially context-adaptive entropy encoding the values of the significant transform coefficients, a selected group of several contexts selected from a plurality of groups of several contexts, the selection of the selected group of several contexts being based on values of transform coefficients within a sub-block of the block of transform coefficients that has been traversed in the sub-block scan order, or on values of transform coefficients of a common position sub-block within previously encoded blocks of transform coefficients of equal size for each sub-block.
[0148] 20. Method for decoding a significance map indicative of positions of significant transform coefficients within a block of transform coefficients from a data stream, the method comprising the steps of:
[0149] sequentially extracting first type syntax elements from the data stream, the first type syntax elements being indicative of, for an associated position within the block of transform coefficients, whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position; and
[0150] sequentially associating the sequentially extracted first type syntax elements to positions of the block of transform coefficients in a scan order among positions of the block of transform coefficients depending on positions of the significant transform coefficients indicated by previously extracted and associated first type syntax elements.
[0151] 21. Method for decoding a significance map indicative of positions of significant transform coefficients within a block of transform coefficients from a data stream, the method comprising the steps of:
[0152] extracting a significance map indicative of positions of significant transform coefficients within the block of transform coefficients from the data stream, and then extracting values of the significant transform coefficients within the block of transform coefficients, the significance map being extracted by context-adaptive entropy decoding from the data stream, while sequentially extracting first type syntax elements from the data stream, the first type syntax elements being indicative of, for an associated position within the block of transform coefficients, whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position; and
[0153] sequentially associating the sequentially extracted first type syntax elements to the positions of the transform coefficient block in a predetermined scan order,
[0154] wherein, when context-adaptively entropy decoding the first type syntax elements, a context is used which is individually selected for each of the first type syntax elements depending on the positions of significant transform coefficients from which the first type syntax elements have been previously extracted and associated, the positions being within a neighborhood of the position to which the respective first type syntax element is associated.
[0155] 22. A method for decoding a transform coefficient block, the method comprising the steps of:
[0156] extracting from a data stream a significance map indicating positions of significant transform coefficients within the transform coefficient block, and then extracting values of the significant transform coefficients within the transform coefficient block, the values of the significant transform coefficients being sequentially extracted by context-adaptive entropy decoding;
[0157] sequentially associating the sequentially extracted values with the positions of the significant transform coefficients in a predetermined coefficient scan order, as a result of which the transform coefficient block is scanned in a sub-block scan order in the manner of sub-blocks of the transform coefficient block, and, in addition, the positions of transform coefficients within the sub-blocks are scanned in a position sub-scan order,
[0158] wherein, when context-adaptively entropy decoding the values of the significant transform coefficient values sequentially, a selected group of contexts is used selected from a plurality of groups of contexts, the selection of the selected group of contexts being based on the values of transform coefficients within the sub-blocks of the transform coefficient block that have been traversed in the sub-block scan order, or on the values of transform coefficients of co-located sub-blocks within previously decoded transform coefficient blocks of equal size for each sub-block.
[0159] 23. A method for encoding a significance map indicating positions of significant transform coefficients within a transform coefficient block into a data stream, the method comprising the steps of:
[0160] encoding first type syntax elements by entropy encoding sequentially into the data stream, the first type syntax elements indicating, for associated positions within the transform coefficient block, at least whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position, the encoding of the first type syntax elements into the data stream in a scan order among the positions of the transform coefficient block depending on the positions of the significant transform coefficients indicated by previously encoded first type syntax elements.
[0161] 24. A method for encoding a significance map indicating positions of significant transform coefficients within a block of transform coefficients into a data stream, the method comprising the steps of:
[0162] encoding a significance map indicating positions of significant transform coefficients within the block of transform coefficients, and then encoding values of the significant transform coefficients within the block of transform coefficients into a data stream, in encoding the significance map, the first type of syntax elements indicating, for associated positions within the block of transform coefficients, whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position are sequentially encoded into the data stream using context-adaptive entropy coding, wherein the sequentially encoding the first type of syntax elements into the data stream is performed in a predetermined scan order of positions of the block of transform coefficients, a context used in the context-adaptive entropy coding of each of the first type of syntax elements being dependent on a number of positions at which significant transform coefficients are located and associated with previously encoded first type of syntax elements into the data stream, the number of positions being within a neighborhood of the position associated with the current first type of syntax elements, the first type of syntax elements being individually selected for.
[0163] 25. A method for encoding a block of transform coefficients, the method comprising the steps of:
[0164] encoding a significance map indicating positions of significant transform coefficients within the block of transform coefficients, and then encoding values of the significant transform coefficients within the block of transform coefficients into a data stream, in encoding the values of the significant transform coefficients, the values are sequentially encoded using context-adaptive entropy coding, wherein the step of encoding the values into the data stream is performed in a predetermined coefficient scan order of positions of the block of transform coefficients, as a result of which the block of transform coefficients is scanned in a sub-block scan order using the block of transform coefficients in a manner of sub-blocks of transform coefficients, and, in addition, positions of transform coefficients within the sub-blocks are scanned in a position sub-scan order, wherein in sequentially context-adaptive entropy coding the values of the significant transform coefficients, a selected group of a number of contexts is used selected from a plurality of groups of a number of contexts, the selection of the selected group of a number of contexts being based on values of transform coefficients within a sub-block of transform coefficients of the block of transform coefficients that have been traversed in the sub-block scan order, or on values of transform coefficients of a common sub-block in previously encoded blocks of transform coefficients of equal size performed for each sub-block.
[0165] 26. A data stream in which a significance map is encoded that indicates positions of significant transform coefficients within a block of transform coefficients, wherein first type syntax elements that indicate, for an associated position within the block of transform coefficients, at least whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position are sequentially encoded into the data stream by entropy coding, wherein the first type syntax elements are encoded into the data stream in a scan order of positions of the block of transform coefficients that depends on positions of the significant transform coefficients indicated by first type syntax elements that have been encoded previously.
[0166] 27. A data stream in which a significance map is encoded that indicates positions of significant transform coefficients within a block of transform coefficients, wherein the significance map that indicates positions of significant transform coefficients within the block of transform coefficients and values of the significant transform coefficients within the block of transform coefficients immediately following the significance map are encoded into the data stream, wherein within the significance map the first type syntax elements that indicate, for an associated position within the block of transform coefficients, at least whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position are sequentially encoded into the data stream by context adaptive entropy coding, wherein the first type syntax elements are sequentially encoded into the data stream in a predetermined scan order of positions of the block of transform coefficients and the first type syntax elements are context adaptive entropy coded into the data stream using a context that is individually selected for the first type syntax element depending on a number of positions within which a significant transform coefficient is located and which are associated with first type syntax elements that have been encoded into the data stream previously, the number of positions being within a neighborhood of the position associated with the current first type syntax element.
[0167] 28. A data stream comprising an encoding of a significance map that indicates positions of significant transform coefficients within a block of transform coefficients, values of the significant transform coefficients within the block of transform coefficients immediately following the encoding of the significance map, wherein the values of the significant transform coefficients are sequentially encoded into the data stream by context adaptive entropy coding in a predetermined coefficient scan order of positions of the block of transform coefficients as a result of which the block of transform coefficients is scanned in a subblock scan order in a manner of subblocks of the block of transform coefficients, and, in addition, positions of transform coefficients within the subblocks are scanned in a position subblock scan order, wherein the values of the significant transform coefficients are sequentially context adaptive entropy encoded into the data stream using a selected group of a number of contexts selected from a number of groups of a number of contexts, the selection of the selected group being based on values of the transform coefficients within the subblock of the block of transform coefficients, values of transform coefficients within the subblock of the block of transform coefficients that have been traversed in the subblock scan order, or values of transform coefficients at a common subblock location within previously encoded blocks of transform coefficients of equal size.
[0168] 29. Computer-readable digital storage medium having stored thereon a computer program comprising program code which, when loaded into a computer, executes the method according to any one of claims 23 to 25.
Claims
1. An apparatus for decoding a block of transform coefficients encoded in a data stream, the apparatus comprising: The decoder is configured to extract the last significant syntax element from the data stream via context-adaptive entropy decoding, each of the last significant syntax elements being associated with a corresponding position within the transform coefficient block and indicating whether the transform coefficient at that position is the last significant transform coefficient in the transform coefficient block; and The correlator is configured to associate each of the last significant syntax elements with the corresponding position of the transform coefficient block in scan order; in, The decoder is configured to use a context for selecting the current last salient syntax element when decoding the last salient syntax element using context adaptive entropy. The context is selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element. The decoder is configured to use entropy decoding to extract information about the subdivision of the transform coefficient block from the data stream.
2. The apparatus according to claim 1, wherein, The context of the current last significant syntax element is further selected based on the scanning order.
3. The apparatus according to claim 1, wherein, The neighborhood of the current last significant syntax element includes at least one location adjacent to the current last significant syntax element.
4. The apparatus according to claim 3, wherein, The neighboring region includes at least one location that is adjacent to the level of the current last significant syntax element.
5. The apparatus according to claim 3, wherein, The neighboring region includes at least one position that is vertically adjacent to the current last significant syntax element.
6. The apparatus according to claim 1, wherein, The data stream includes at least a portion associated with color sampling.
7. An apparatus for encoding a block of transform coefficients into a data stream, the apparatus being configured to encode a last significant syntax element into the data stream via context-adaptive entropy coding, wherein each of the last significant syntax elements is associated with a corresponding position within the transform coefficient block and indicates whether the transform coefficient at the corresponding position is the last significant transform coefficient in the transform coefficient block. in, The apparatus is configured to encode the last significant syntax element into the data stream in scan order; The apparatus is configured to use a context for the current last salient syntax element when context-adaptive entropy encoding the last salient syntax element, the context being selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element. The device is configured to use entropy coding to encode information about the subdivision of the transform coefficient block into the data stream.
8. The apparatus according to claim 7, wherein, The context of the current last significant syntax element is further selected based on the scanning order.
9. The apparatus according to claim 7, wherein, The neighborhood of the current last significant syntax element includes at least one location adjacent to the current last significant syntax element.
10. The apparatus according to claim 7, wherein, The number of positions corresponds to a context index that points to a set of possible context indexes.
11. The apparatus according to claim 9, wherein, The neighboring region includes at least one location that is adjacent to the level of the current last significant syntax element.
12. The apparatus according to claim 9, wherein, The neighboring region includes at least one position that is vertically adjacent to the current last significant syntax element.
13. The apparatus according to claim 7, wherein, The data stream includes at least a portion associated with color sampling.
14. A method for decoding a block of transform coefficients encoded in a data stream, the method comprising: The last significant syntax element is extracted from the data stream by context-adaptive entropy decoding. Each of the last significant syntax elements is associated with a corresponding position within the transform coefficient block and indicates whether the transform coefficient at the corresponding position is the last significant transform coefficient in the transform coefficient block. The last significant syntax element is associated with the corresponding position of the transform coefficient block according to the scanning order; and When the last salient syntax element is decoded in context-adaptive entropy, a context for the current last salient syntax element is used, which is selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element. Entropy decoding is used to extract information about the subdivisions of the transform coefficient blocks from the data stream.
15. The method according to claim 14, wherein, The context of the current last significant syntax element is further selected based on the scanning order.
16. The method of claim 14, wherein, The neighborhood of the current last significant syntax element includes at least one location adjacent to the current last significant syntax element.
17. The method according to claim 14, wherein, The data stream includes at least a portion associated with color sampling.
18. A method for encoding a block of transform coefficients into a data stream, the method comprising: The last significant syntax elements are encoded into the data stream via context-adaptive entropy coding, each of which is associated with a corresponding position within the transform coefficient block and indicates whether the transform coefficient at that position is the last significant transform coefficient in the transform coefficient block. The method includes encoding the last significant syntax element into the data stream in scan order. The method includes using a context for the current last salient syntax element in context-adaptive entropy encoding of the last salient syntax element, the context being selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element; The method includes using entropy coding to encode information about the subdivision of the transform coefficient block into the data stream.
19. A computer-readable digital storage medium having a computer program containing program code stored thereon, which, when run on a computer, performs the method according to any one of claims 14 to 18.
20. A method for storing a block of transform coefficients, the method comprising: A data stream is stored on a digital storage medium, and the transform coefficient blocks are encoded into the data stream through the following steps: The last significant syntax elements are encoded into the data stream via context-adaptive entropy coding, each of which is associated with a corresponding position within the transform coefficient block and indicates whether the transform coefficient at that position is the last significant transform coefficient in the transform coefficient block. The method includes encoding the last significant syntax element into the data stream in scan order. The method includes using a context for the current last salient syntax element in context-adaptive entropy encoding of the last salient syntax element, the context being selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element; The method includes using entropy coding to encode information about the subdivision of the transform coefficient block into the data stream.
21. A method for storing a data stream, wherein the data stream is stored on a digital storage medium, the data stream being encoded into transform coefficient blocks via the following steps: The last significant syntax elements are encoded into the data stream via context-adaptive entropy coding, each of which is associated with a corresponding position within the transform coefficient block and indicates whether the transform coefficient at that position is the last significant transform coefficient in the transform coefficient block. in, The method includes encoding the last significant syntax element into the data stream in scan order. The method includes using a context for the current last salient syntax element in context-adaptive entropy encoding of the last salient syntax element, the context being selected based on the position of the current last salient syntax element within the transform coefficient block and the number of salient transform coefficients in the neighborhood of the current last salient syntax element; The method includes using entropy coding to encode information about the subdivision of the transform coefficient block into the data stream.
Citation Information
Patent Citations
Apparatus for decoding significance map
CN108881922A
Method and arrangement for coding transform coefficients in picture and / or video coders and decoders and a corresponding computer program and a corresponding computer-readable storage medium
US20040114683A1
Method of CABAC Coefficient Magnitude and Sign Decoding Suitable for Use on VLIW Data Processors
US20080266151A1