Coding of saliency maps and transform coefficient blocks
By adjusting the scanning order and using context adaptive entropy decoding, identifying and encoding the significance graph in the transform coefficient block, the problem of low encoding efficiency in the prior art is solved, especially in large block sizes, which significantly improves the encoding efficiency.
Patent Information
- Application Number
- CN202110789141.6
- 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-01-17
- Estimated Expiration
- 2031-04-11
AI Technical Summary
When encoding the significance graph in transform coefficient blocks, existing video encoding techniques have problems with low encoding efficiency, especially in large block sizes, where too many context models lead to slow probability estimation and inaccurate encoding.
By adjusting the scan order and using context adaptive entropy decoding, identifying the location of significant transform coefficients, and using multiple context model groups to aggregate areas of significant transform coefficients within the transform coefficient block, the encoding process of the significance graph is optimized.
The encoding efficiency of transform coefficient blocks is improved, the number of encoding syntax elements is reduced, and the encoding efficiency is improved, especially in the case of large block sizes.
Smart Images

Figure CN113556559B_ABST
Abstract
Description
[0001] The present application is a divisional application of a PCT application with an application date of April 11, 2011, an international application number of PCT / EP2011 / 055644, and an invention name of “Encoding of saliency maps and transform coefficient blocks”, and a divisional application of a Chinese national phase application with an application number of 201810801490.3 and an invention name of “Device and method for decoding saliency maps, encoding device and method and storage medium”. The entry date of the Chinese national phase application into the Chinese national phase is December 13, 2012, and the application number is 201180029192.3, and all the contents are incorporated herein 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 transform coefficient block and the encoding of such a transform coefficient block. Such encoding may, for example, be used in, for example, image and video encoding. Background Art
[0003] In conventional video coding, the images of a video sequence are usually decomposed into blocks. The blocks or the color components of the blocks are predicted by motion compensated prediction or intra-image prediction. Blocks may have different sizes and may be square or rectangular. All samples of the block or the color components of the block are predicted using the same set of prediction parameters, e.g. a reference index (identifying a reference image in a group of images already coded), a motion parameter (specifying a measure for the movement of the block between the reference image and the current image), parameters for specifying interpolation filters, intra-image prediction models, etc. The motion parameters may be represented by displacement vectors of horizontal and vertical components or by higher order motion parameters, e.g. affine motion parameters consisting of 6 components. It is also possible that more than one set of prediction parameters (e.g. reference index and 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 the color components of the block is generated, and the final prediction signal is built using a weighted sum of these intermediate prediction signals. The weighting parameters, and possibly a fixed offset (which is added to the weighted sum), may be fixed for a picture, or a reference picture, or a group of reference pictures, or they may be included in the prediction parameter set of the corresponding block. Likewise, still images are often decomposed into blocks and the blocks are predicted using an intra prediction method (which can be a spatial intra prediction method or a simple intra prediction method that predicts the DC component of the block). In the case of corners, the prediction signal can also be zero.
[0004] The difference between the original block or color components of the original block and the corresponding prediction signal, also called 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, the block or color components of the block in which a specific set of prediction parameters is used can be further partitioned before applying the transform. The transform block can be equal to or smaller than the block used for prediction. It is also possible that the transform block contains more than one block used for prediction. Different transform blocks in a still image or an image of a video sequence can have different sizes 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 an entropy coding technique. Thus, blocks of transform coefficient levels are usually mapped onto vectors (i.e., ordered groups) of transform coefficient values using a scan, where different scans may be used for different blocks. Typically, a zigzag scan is used. For blocks containing only field samples of an interlaced frame (these blocks may be blocks in a coded field or blocks of fields in a coded frame), different scans specifically designed for blocks of fields are also typically used. An entropy coding algorithm typically used to encode the resulting ordered sequence of transform coefficients is run-level coding. Typically, a large number of transform coefficient levels are zero, and a group of consecutive transform coefficient levels equal to zero can be efficiently represented by encoding the number of consecutive transform coefficient levels equal to zero (the run). For the remaining (non-zero) transform coefficients, the actual level is encoded. There are various run-level codes. The run preceding a non-zero coefficient and the level of the non-zero transform coefficient may be encoded together using a single symbol or codeword. Typically, a special symbol is included at the end of the block that is transmitted after the last non-zero-valued transform coefficient. Alternatively, it is possible to first code the number of non-zero-valued transform coefficient levels, and based on this number, the level and the run are coded.
[0006] A slightly different approach is used in the highly efficient CABAC entropy coding in H.264. Here, the encoding of the transform coefficient levels is divided into three steps. In the first step, a binary syntax element coded_block_flag is sent for each transform block, which signals whether the transform block contains a significant transform coefficient level (i.e., a transform coefficient with a non-zero value). If the syntax element indicates that a significant transform coefficient level is present, a binary estimated significance map is encoded, which indicates which transform coefficient levels have non-zero values. And then, in reverse scanning order, the values of the non-zero transform coefficient levels are encoded. The significance map is encoded as described below. For each coefficient in the scanning order, a binary syntax element significant_coeff_flag is encoded, which indicates whether the corresponding transform coefficient level is equal to the zero value. If the significant_coeff_flag binary value is equal to one, i.e., if a non-zero-valued transform coefficient level is present at this scanning position, a further binary syntax element last_significant_coeff_flag is encoded. This binary value indicates whether the current significant transform coefficient level is the last significant transform coefficient level within the block or whether it is followed by a further significant transform coefficient level in the scanning order. If last_significant_coeff_flag indicates that no further significant transform coefficients follow, no further syntax elements are encoded for indicating the significance map of the block. In a following step, the value of the significant transform coefficient level is encoded, whose position within the block has been determined using the significance map. The values of the significant transform coefficient levels are encoded in reverse scanning order 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, a binary syntax element coeff_sign_flag, which indicates the sign of the transform coefficient value, is encoded for each significant transform coefficient level. Furthermore, it should be noted that syntax elements related to significance maps are coded in scan order, whereas syntax elements related to actual values of transform coefficient levels are coded in reverse scan order allowing the use of more appropriate context models.
[0007] In CABAC entropy coding in H.264, all syntax elements for transform coefficient levels are coded using a binary probability model. The non-binary syntax element coeff_abs_level_minus_one is first binarized, i.e., it is mapped to 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 binary syntax elements) is associated with a context. The context represents a probability model for a class of coded binary values. A measure of the probability of one of the two possible binary values is estimated for each context based on the binary values previously coded by the corresponding context. For several binary values related to transform coding, the context used for coding is selected based on the syntax element that has been sent or based on the position within a block.
[0008] The significance map indicates information about the significance (transform coefficient levels other than zero value) for a scan position. In CABAC entropy coding of H.264, for a 4x4 block size, a separate context is used for each scan position for encoding the binary syntax elements significant_coeff_flag and last_significant_coeff_flag, where different contexts are used for significant_coeff_flag and last_significant_coeff_flag of the scan position. For 8x8 blocks, the same context model is used for four consecutive scan positions, resulting in 16 context models for significant_coeff_flag and another 16 context models for last_significant_coeff_flag. This context model approach for significant_coeff_flag and last_significant_coeff_flag has some disadvantages 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 encoded. This increased number of context models leads to slow probability estimation adaptation and generally inaccurate probability estimates, both of which have a negative impact on coding efficiency. On the other hand, since non-zero transform coefficients are usually concentrated in certain regions of the transform block (regions are dependent on the main structure inside the block corresponding to the residual signal), the specification of context models for a few consecutive scan positions (such as for 8x8 blocks in H.264) is also not optimal for larger block sizes.
[0009] After encoding the significance map, the block is processed in reverse scanning order. If the scan position is significant, i.e. the coefficient is different from zero, the 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 set is selected. If the encoded value of any coeff_abs_greater_one syntax element inside the block is equal to one (i.e. the absolute coefficient is greater than 2), the context model switches back to the first context model of the set and this context model is used up to the end of the block. Otherwise (all encoded values of coeff_abs_greater_one inside the block are zero and the corresponding absolute coefficient level is equal to one), the context model is selected according to the number of coeff_abs_greater_one syntax elements equal to zero that were previously encoded / decoded in the reverse scanning order of the considered block. 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 According to the previous context model index C t and the value of the previously coded syntax element coeff_abs_greater_one (using bin in the equation t For the first syntax element coeff_abs_greater_one within a block, the context model index is set equal to C t =1.
[0010]
[0011] The second syntax element for encoding the absolute transform coefficient level, when the coeff_abs_greater_one syntax element for the same scan position is equal to one, then only coeff_abs_level_minus_one is encoded. The non-binary syntax element coeff_abs_level_minus_one is binarized into a sequence of binary values and used for the first binary value of the binarization; the context model index is selected as described below. The remaining binary values of the binarization are encoded with a fixed context. The context for the first binary 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 binary value of the coeff_abs_level_minus_one syntax element is selected and the corresponding context model index is set to C t= 0. For each further first binary value of the coeff_abs_level_minus_one syntax element, the context model is switched to the next context model in the set, where the number of context models in the set is limited to 5. The context model selection can be expressed using the following formula, where the current context model index C t+1 According to the previous context model index C t As mentioned above, for the first syntax element coeff_abs_level_minus_one within a block, the context model index is set to C t = 0. It should be noted that different context model sets 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] For large blocks, this approach has some disadvantages. The selection of the first context model for coeff_abs_greater_one (which is used if a value of coeff_abs_greater_one equal to 1 has been coded for the block) is usually done too early and the last context model for coeff_abs_level_minus_one is done too quickly because the number of significant coefficients is greater than the number in small blocks. Therefore, most binary values of coeff_abs_greater_one and coeff_abs_level_minus_one are coded using a single context model. But these binary values usually have different probabilities, and therefore the use of a single context model for a large number of binary values has a negative impact on coding efficiency.
[0014] Although, in general, large blocks increase the computational overhead of performing the spectral decomposition transform, the ability to efficiently encode small and large blocks allows for higher coding efficiency, for example, in encoding sample arrays such as images or sample arrays representing other spatially sampled information signals, such as depth maps. The reason for this is that, when transforming sample arrays within a block, the dependence between spatial and spectral resolution is such that the larger the block, the higher the spectral resolution of the transform. In general, it is best if possible to apply the corresponding transform locally to the sample array, so that within this individual transform region, the spectral composition of the sample array does not vary widely. Small blocks ensure that the content within the block is relatively consistent. On the other hand, if the block is too small, the spectral resolution is low and the ratio between insignificant and significant transform coefficients will be reduced.
[0015] Therefore, it is desirable to have a coding structure that enables blocks of transform coefficients and their significance maps to be efficiently coded even when the blocks are large. Summary of the invention
[0016] Therefore, an object of the present invention is to provide a coding structure for separately encoding a transform coefficient block and a significance map indicating positions of significant transform coefficients within the transform coefficient block in order to improve the coding efficiency.
[0017] This object is achieved by the subject matter of the independent claims.
[0018] According to a first aspect of the present application, the basic idea of the present application is that a higher coding efficiency for encoding a significance map indicating the positions of significant transform coefficients in a transform coefficient block can be achieved if a scanning order (indicated by sequentially extracted syntax elements, for the associated positions in a transform coefficient block, as to whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position) is sequentially associated to transform coefficient block positions in the transform coefficient block according to the significant transform coefficient positions indicated by the previously associated syntax elements. In particular, the inventors have found that in typical sample array content, such as image, video or depth map content, significant transform coefficients mainly form a group on one side of the transform coefficient block corresponding to non-zero frequencies in the vertical direction and low frequencies in the horizontal direction, or vice versa, so that considering the significant transform coefficient positions indicated by the previously associated syntax elements can control further causes of scanning, thereby increasing the probability of reaching the last significant transform coefficient in the transform coefficient block earlier than a predetermined procedure according to the scanning order regardless of the significant transform coefficient positions indicated so far by the previously associated syntax elements. This is especially true for larger blocks, although the above is also true for small blocks.
[0019] According to an embodiment of the present application, an entropy decoder is configured to extract information from a data stream, which information is able to identify whether the significant transform coefficient currently indicated by the currently associated syntax element is the last significant transform coefficient, regardless of its exact position within the transform coefficient block, wherein the entropy decoder is configured so that if the current syntax element regarding this last significant transform coefficient occurs, no further syntax elements will be expected. The information may include the number of significant transform coefficients within the block. Optionally, a second syntax element is inserted into the first syntax element, the second syntax element indicating, for the associated position where the significant transform coefficient is placed, whether the transform coefficient is the last transform coefficient in the transform coefficient block.
[0020] According to an embodiment of the present application, the associator adjusts the scanning order according to the significant transform coefficient positions that have been indicated only at predetermined positions within the transform coefficient block so far. For example, several sub-routes, which extend respectively from a pair of sides of the transform coefficient block corresponding to the minimum frequency along the first direction and the highest frequency along the other direction through a subset of positions disconnected from each other within the transform coefficient block, are substantially diagonally extended to a pair of sides of the transform coefficient block corresponding to the zero frequency along the second direction and the maximum frequency along the first direction. In this case, the associator is configured to select the scanning order so that the sub-routes are traversed in the order in which the distance of the sub-routes to the DC position within the transform coefficient block increases monotonically in the sub-routes, each sub-route is traversed without interruption along the direction of travel, and for each sub-route, the direction along which the sub-route passes is selected by the associator according to the significant transform coefficient positions traversed during the previous sub-route. By this measure, the probability that the last significant transform coefficient is located in the last sub-route traversed in one direction is increased, and thus, the last significant transform coefficient is more likely to be located in the first half of the last sub-route than in the second half of the last sub-route, thereby making it possible to reduce the number of syntax elements indicating whether a significant transform coefficient or a non-significant transform coefficient is located at a corresponding position. The effect is particularly significant in the case of a large transform coefficient block.
[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 encoded more efficiently if the aforementioned syntax elements (which indicate, for an associated position within a transform coefficient block, whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position) are context-adaptively entropy decoded using a context, wherein the context is selected for each syntax element separately depending on a number of significant transform coefficients in the neighborhood of the respective syntax element indicated as significant by any previous syntax element. In particular, the inventors have found that due to an increasing size of the transform coefficient block, significant transform coefficients are clustered in a certain way in certain areas within the transform coefficient block, so that a context adaptation, which is not only sensitive to the number of significant transform coefficients traversed in the currently predetermined scanning order but also takes into account the neighborhood of the significant transform coefficients, results in a better adaptation of the context and thus increases the coding efficiency of the entropy coding.
[0022] Of course, the two aspects outlined above can be combined in an advantageous manner.
[0023] Further, according to another aspect of the present application, the present application is based on the following discovery: wherein the coding efficiency for encoding a transform coefficient block can be improved in the following cases, for example: when a significance map indicating the positions of significant transform coefficients within the transform coefficient block is superior to the coding of the actual values of the significant transform coefficients within the transform coefficient block, and if the transform coefficient blocks in the sub-blocks are scanned using a sub-block scanning order in the sub-blocks following a predetermined scanning order in the transform coefficient block positions (which is used to sequentially associate the sequence of values of the significant transform coefficients with the positions of the significant transform coefficients), and the transform coefficient positions within the sub-blocks are assisted by scanning the coefficient positions within the sub-blocks in a coefficient scanning order, and if some groups of contexts selected from a plurality of groups of contexts are used for sequentially context-adapting the values of the significant transform coefficient values, the selection of the selection group is 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 scanning order or the values of the transform coefficients of the sub-blocks at the same location in the decoded transform coefficient block. In this way, context adaptation is very suitable for the significant transform coefficient properties outlined above that are clustered in certain areas within a transform coefficient block, especially when large transform coefficient blocks are considered.On the other hand, the values in the sub-blocks can be scanned and the context can be selected based on the sub-block statistics.
[0024] Furthermore, even the latter aspects may be combined with any one or both of the previously identified aspects of this application. BRIEF DESCRIPTION OF THE DRAWINGS
[0025] The preferred embodiments of the present application will be described with reference to the following related figures, wherein:
[0026] Figure 1 A block diagram showing an encoder according to an embodiment;
[0027] FIG. 2A to FIG. 2C A diagram schematically illustrates dividing a sample array (eg, an image) into blocks at different times;
[0028] Figure 3 A block diagram showing a decoder according to an embodiment;
[0029] Figure 4 A block diagram showing an encoder according to an embodiment of the present application in more detail;
[0030] Figure 5 A block diagram showing a decoder according to an embodiment of the present application in more detail;
[0031] Figure 6 is a block transformation diagram schematically showing the transformation from the spatial domain to the spectral domain;
[0032] Figure 7A block diagram showing an apparatus for decoding a significance map and significant transform coefficients of a transform coefficient block according to an embodiment;
[0033] Figure 8 schematically illustrates a subdivision of the scan order into subroutes and their different traversal directions;
[0034] Fig. 9 schematically illustrates the definition of neighboring areas for certain scanning positions within a transform block according to an embodiment;
[0035] Fig.10 schematically showing possible neighborhood definitions for some scanning positions within a transform block for a transform block boundary;
[0036] Fig.11 A possible transform block scan according to a further embodiment of the present application is shown. DETAILED DESCRIPTION
[0037] It is worth noting that in the description of the figures, components that appear in several of these figures are indicated by the same reference symbols in each of these figures, and in terms of functionality, repeated descriptions of these components are avoided in order to avoid unnecessary repetitions. However, the functions and descriptions provided by the figures are also applicable to other figures at the same time unless their counterparts are explicitly indicated.
[0038] Figure 1 An example of an encoder 10 is shown in which aspects of the present application may be implemented. The encoder encodes an array of information samples 20 as a data stream. The array of information samples may represent any type of spatially sampled information signal. For example, the array of samples 20 may be a still image or a video image. Thus, the information samples may correspond to brightness values, color values, luminance values, chrominance values, etc. However, the information samples may also be depth values, for example, in the case where the array of samples 20 is a depth map generated by, for example, a photo-temporal sensor.
[0039] The encoder 10 is a block-based encoder. That is, the encoder 10 encodes the sample array 20 into a data stream 30 in units of blocks 40. Encoding in units of blocks 40 does not necessarily mean that the encoder 10 encodes these blocks 40 completely independently of each other. Instead, the encoder 10 can use reconstruction of previously encoded blocks to extrapolate or introspect the remaining blocks, and can use block granularity to set encoding parameters, that is, to set the way to encode each sample array area corresponding to each block.
[0040] Further, the encoder 10 is a transform encoder. That is, the encoder 10 encodes the blocks 40 by using a transform so as to transform the information samples within each block 40 from the spatial domain to the spectral domain. A two-dimensional transform may be used, such as a DCT of an FFT, etc. Preferably, the blocks 40 are square or rectangular.
[0041] exist Figure 1 The subdivision of sample array 20 into blocks 40 shown in FIG. 1 is for illustration purposes only. Figure 1 The sample array 20 is shown to be subdivided into a regular two-dimensional arrangement of square or rectangular blocks 40 that are adjacent to each other in a non-overlapping manner. The size of the blocks 40 may be predetermined. That is, the encoder 10 may not need to transmit block size information of the blocks 40 to the decoding side within the data stream 30. For example, the decoder may expect a predetermined block size.
[0042] However, several options are possible. For example, the blocks may overlap each other. However, the overlap may be defined to the extent that each block has a portion that does not overlap with any adjacent block, or to have each block sampled to overlap, in a maximum manner, with a block in the adjacent blocks juxtaposed to the current block along a predetermined direction. The latter may mean that the left and right adjacent blocks may overlap with the current block so as to completely cover the current block, but they may not overlap each other, and the same applies to vertical and diagonal neighbors.
[0043] As a further option, the subdivision of the sample array 20 into blocks 40 is adapted by the encoder 10 to the content of the sample array 20 using subdivision information on the subdivision which is communicated to the decoder side via the bitstream 30 .
[0044] FIG. 2A to FIG. 2C Different examples of subdivision of sample array 20 into blocks 40 are shown. Figure 2A A quadtree-based subdivision of the sample array 20 is shown subdivided into blocks 40 of different sizes, with representative blocks indicated at 40a, 40b, 40c and 40d of increasing size. Figure 2A The sample array 20 is first divided into a regular two-dimensional arrangement of tree blocks 40d, which in turn have associated therewith respective sub-division information, according to which a tree block 40d may or may not be further sub-divided according to the quadtree structure. The tree blocks to the left of block 40d are illustratively sub-divided into smaller blocks according to the quadtree structure. The encoder 10 may Figure 2A In other words, the encoder 10 may transform the array 20 according to the block-level division unit.
[0045] Instead of a quadtree based sub-division, a more general multiple tree based sub-division may be used and the number of child nodes per level may vary between different levels.
[0046] Figure 2B Another example for sub-division is shown. Figure 2B , the sample array 20 is first divided into macroblocks 40b arranged in a regular two-dimensional arrangement in a non-overlapping, mutually adjacent manner, wherein each macroblock 40b has associated therewith subdivision information (according to which the macroblock is not subdivided, or, if subdivided, is subdivided in a regular two-dimensional manner into sub-blocks of equal size) so as to obtain different subdivision granularity sizes for different macroblocks. As a result, the subdivisions of the sample array 20 in the different-sized blocks 40 have different size representations indicated by 40a, 40b and 40a'. As shown in Figure 2A In the encoder 10 pairs Figure 2B The blocks shown by solid lines and dashed lines in the figure are transformed in two dimensions. Figure 2C This will be described in detail 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 blocks of transform coefficients for each block 40 from the data stream 30 and reconstructs the reconstructed version 60 by inverse transforming the blocks of transform coefficients.
[0048] The encoder 10 and the decoder 50 may be configured to perform entropy encoding / decoding so as to insert information about the transform coefficient blocks into the data stream and extract the information from the data stream, respectively. The details of this aspect will be described later. It should be noted that the data stream 30 does not necessarily have to contain information about the transform coefficient blocks for all blocks 40 of the sample array 20. Instead, a subset of the blocks 40 may be encoded as the bitstream 30 in another way. For example, the encoder 10 may decide to insert different encoding parameters into the bitstream 30 to avoid inserting the transform coefficient blocks for a certain block of the blocks 40, thereby enabling the decoder 50 to predict or otherwise fill each block into the reconstructed version 60. For example, the encoder 10 may perform texture analysis so as to place the blocks in the sample array 20, which may be filled in the decoder side via texture synthesis using the decoder and thus indicate this result in the bitstream.
[0049] As discussed in the following figures, a block of transform coefficients need not necessarily represent a spectral domain representation of the original information samples of each block 40 of the sample array 20. Instead, the block of transform coefficients may represent a spectral domain representation of the prediction residuals of each block 40. Figure 4 An embodiment of such an encoder is shown. Figure 4 The encoder includes a transform stage 100, an entropy encoder 102, an inverse transform stage 104, a predictor 106, a subtractor 108 and an adder 110. The subtractor 108, the transform stage 100 and the entropy encoder 102 are Figure 4The encoder is connected in series in the order mentioned between its input 112 and output 114. 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 subtractor 108, the output of the predictor 106 being also connected to a further input of the adder 110.
[0050] Figure 4 The encoder is a block encoder based on a predictive transform. That is, a block of the sample array 20 entering the input 112 is predicted from previously encoded and reconstructed parts of the same sample array 20 or from other previously encoded and reconstructed sample arrays, which may be before the current sample array 20 or may be immediately subsequent to the current sample array 20. The prediction is performed by a predictor 106. A subtractor 108 subtracts the prediction value from the original block and the transform stage 100 performs a two-dimensional transform on the prediction residue. The two-dimensional transform itself or subsequent measures within the transform stage 100 may result in quantization of the transform coefficients within the transform coefficient block. The quantized transform coefficient block is losslessly encoded by, for example, entropy coding within the entropy encoder 102, and the resulting data stream is output at the output 114. The inverse transform stage 104 reconstructs the quantized residue and the adder 110, in turn, combines the reconstructed residue with the corresponding prediction in order to obtain reconstruction information samples so that the predictor 106 can predict the currently encoded prediction block mentioned above based on the reconstruction information samples. The predictor 106 may use different prediction models, for example, an intra-image prediction model and an inter-image 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, according to Figure 4 In an embodiment, the transform coefficient block represents the spectral representation of the sample array residual rather than its actual information samples.
[0052] It should be noted that for Figure 4 There are several options for implementation, some of which have been described in the previous part of the specification, which is incorporated into Figure 4 For example, the prediction value generated by the predictor 106 may not be entropy encoded. Instead, the side information may be transmitted to the decoding side through another encoding scheme.
[0053] Figure 5 Show that it is possible to Figure 4 The data stream generated by the encoder is decoded by the decoder. Figure 5 The decoder of FIG. 1 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. Figure 5The entropy decoder 150 is connected between an input 158 and an output 160 of the decoder. A further output of the entropy decoder 150 is connected to a predictor 156 which in turn is connected between an output of the adder 154 and a further input thereof. Figure 5 The block of transform coefficients is extracted from the data stream of the decoder of the encoder, where an inverse transform is applied to the block of transform coefficients at stage 152 in order to obtain a residual signal. The residual signal is combined at adder 154 with the prediction values from predictor 156 in order to obtain a reconstructed block of a reconstructed version of the sample array at output 160. From these reconstructed versions, predictor 156 generates prediction values reconstructing the prediction performed by predictor 106 on the encoder side. To obtain the same prediction values as those used on the encoder side, predictor 156 uses prediction parameters obtained from the data stream by entropy decoder 150 also at input 158.
[0054] It should be noted that in the above described embodiments, the spatial granularity of residual prediction and transformation need not be equal to each other. This is shown in Figure 2C . The figure shows the subdivision of the prediction blocks with the prediction interval size in solid lines and the residual interval size in dashed lines. As can be seen, the subdivisions can be selected by the encoder independently of each other. More precisely, the data stream syntax can allow the definition of the residual subdivision independently of the prediction subdivision. Optionally, the residual subdivision can be an extension of the prediction subdivision, so that each residual block is equal to the prediction block or a proper subset of the prediction block. This is shown in Figure 2A as well as Figure 2B For example, again, the prediction interval size is shown in solid lines and the residual interval size is shown in dashed lines. FIG. 2A to FIG. 2C In FIG. 4 , all blocks having associated reference symbols are residual blocks that will be subjected to a two-dimensional transform, while the larger solid blocks surrounding the dashed block 40a, for example, will be prediction blocks for which prediction parameter settings may be made separately.
[0055] The above embodiments have in common that a block of (residual or original) samples will be transformed at the encoder side into a block of transform coefficients, which in turn will be inversely transformed at the decoder side into a reconstructed block of samples. Figure 6 In the description. Figure 6 A sampling block 200 is shown. Figure 6In this case, the block 200 is exemplarily square and has a size of 4x4 samples 202. The samples 202 are regularly arranged along the horizontal direction x and the vertical direction y. By means of the above-mentioned two-dimensional transform T, the block 200 is transformed into the spectral domain, i.e., into a block 204 of transform coefficients 206, the transform block 204 having the same size as the block 200. That is, the transform block 204 has as many transform coefficients 206 in the horizontal direction and in the vertical direction as the samples of the block 200. 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 the spatial positions, but to the spectral components of the content of the block 200. Specifically, the horizontal axis of the transform block 204 corresponds to an axis along which the spectral frequencies in the horizontal direction increase monotonically, and the vertical axis corresponds to an axis along which the spatial frequencies in the vertical direction increase monotonically, wherein the DC component transform coefficient is placed in the corner, here, exemplarily 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 the horizontal and vertical directions is placed. Ignoring the spatial direction, the spatial frequency to which a transform coefficient 206 belongs generally increases from the upper left corner to the lower right corner. -1 , the transformed block 204 is transformed again from the spectral domain to the spatial domain in order to obtain again a replica 208 of the block 200. In case no quantization / loss is involved during the transformation, the reconstruction will be perfect.
[0056] As mentioned above, from Figure 6 It can be seen that a larger block size of the block 200 increases the spectral resolution of the resulting spectral representation 204. On the other hand, the quantization noise tends to extend over the entire block 208, so that bursts and very small-scale events within the block 200 tend to result in errors of the retransformed block relative to the original block 200 due to the quantization noise. However, the main advantage of using larger blocks is that the significance, i.e. the ratio between the number of non-zero (quantized) transform coefficients on the one hand and the number of insignificant transform coefficients on the other hand, may be reduced within larger blocks compared to smaller blocks, thereby enabling better coding efficiency. In other words, typically, the significant transform coefficients, i.e. the transform coefficients that are not quantized to zero values, are sparsely distributed over the transform block 204. Due to this, according to an embodiment that will be explained in more detail below, the positions of the significant transform coefficients are signaled in the data stream via a significance map. Furthermore, the values of the significant transform coefficients, i.e. the transform coefficient levels in case the transform coefficients are quantized, are transmitted in the data stream.
[0057] Therefore, according to an embodiment of the present application, a device for decoding a significance map of a data stream or a device for decoding a significance map of a data stream and a corresponding significance transform coefficient value may be as follows: Figure 7, and each of the entropy decoders mentioned above, namely, decoder 50 and entropy decoder 150, may include Figure 7 The device shown in .
[0058] Figure 7 The apparatus of claim 1 comprises a map / coefficient entropy decoder 250 and an associator 252. The map / coefficient entropy decoder 250 is connected to an input 254 at which syntax elements representing a significance map and significant transform coefficient values enter. As described in more detail below, there are different possibilities regarding the order in which syntax elements describing a significance map on the one hand and significant transform coefficient values on the other hand enter the map / coefficient entropy decoder 250. The significance map syntax elements may be placed before the corresponding levels, or the two may be interleaved. However, preliminarily, it is assumed that the syntax elements representing the significance map precede the significant transform coefficient values (levels), so that the map / coefficient entropy decoder 250 first decodes the significance map and then decodes the transform coefficient levels of the significant transform coefficients.
[0059] Since the map / coefficient entropy decoder 250 sequentially decodes the syntax elements representing the significance map 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. Among other things, the associator 252 associates the sequentially decoded syntax elements representing the significance map and the significant transform coefficient levels to the scan order of the positions of the transform block 256, following a one-dimensional scan order in the positions of the transform block 256, which is the same order used at the encoding side to guide these elements into the data stream. As will be described in more detail below, the scan order for the significance map syntax elements can also be equal to the order used for the significant coefficient values, or not.
[0060] The picture / coefficient entropy decoder 250 may access the information available so far on the transform block 256 (e.g., generated by the associator 252 up to the syntax element / level to be decoded currently) in order to set the probability estimation context for entropy decoding of the syntax element / level to be decoded currently as indicated by the dashed line 258. For example, the associator 252 may log the information collected so far from the sequentially associated syntax elements, such as the level itself or information about whether a significant transform coefficient is located at the corresponding position, or whether the corresponding position of the transform block 256 in which the picture / coefficient entropy decoder 250 accesses the memory is not known. The just mentioned memory is not shown in FIG. Figure 7 , but the reference symbol 256 may also indicate this memory, as long as the memory or the entry buffer will be used to store the preliminary information obtained so far using the associator 252 and the entropy decoder 250. Therefore, Figure 7The positions of significant transform coefficients obtained by previously decoded syntax elements representing a significance map are shown by crosses, and a "1" will indicate that the significant transform coefficient level of the significant transform coefficient at the corresponding position has been decoded and is 1. In the case where the significance map syntax element precedes the significance value in the data stream, when decoding the corresponding value, before inputting a "1", the cross should have been recorded at the position of the "1" in the memory 256 (which would represent the entire significance map).
[0061] The following description focuses on specific embodiments of encoding transform coefficient blocks or significance maps, which are easily convertible to the embodiments described above. In these embodiments, a binary syntax element coded_block_flag may 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 this syntax element indicates that these significant transform coefficient levels are present, then these significance maps are encoded, i.e., proceed. The significance map indicates, as indicated above, which transform coefficient levels have non-zero values. Significance map encoding involves the encoding of binary syntax elements significant_coeff_flag, wherein each binary syntax element significant_coeff_flag indicates whether the corresponding transform coefficient level for each associated coefficient position is not equal to the value zero. Encoding is performed in a certain scanning order, which may change during the significance map encoding depending on the significant coefficient positions that have been identified as significant so far, as described in more detail below. Further, the significance map encoding involves the encoding of a binary syntax element last_significant_coeff_flag, wherein the binary syntax element last_significant_coeff_flag intersperses a sequence of significant_coeff_flags at its positions, wherein the significant_coeff_flag signals the significant coefficients. If the significant_coeff_flag binary value is equal to 1, i.e. if a non-zero-valued transform coefficient level is present in this scan position, a further binary syntax element last_significant_coeff_flag is encoded. This binary value indicates whether the current significant transform coefficient level is the last significant transform coefficient level within the block or whether further significant transform coefficient levels follow it in the scan order. If last_significant_coeff_flag indicates that no further significant transform coefficients follow, no further syntax elements are encoded for the significance map specified for the block. Optionally, the number of significant coefficient positions may be signaled within the data stream before the encoding of the sequence of significant_coeff_flags. In a next step, the significant transform coefficient level values are encoded. As described above, the transmission of the levels may optionally be interleaved with the transmission of the significance map. The significant transform coefficient level values are encoded 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 1, a further syntax element coeff_abs_level_minus_one is sent, which specifies the absolute value of the transform coefficient level minus 1. Finally, for each significant transform coefficient level, a binary syntax element coeff_sign_flag is coded which specifies the sign of the transform coefficient value.
[0062] The embodiments described below may further reduce the bit rate and thus increase coding efficiency. To achieve this, these embodiments use a specific approach to the context models of syntax elements related to transform coefficients. In particular, 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 may be used. Furthermore, adaptive switching of scanning during encoding / decoding of significance maps (specifying the locations of non-zero transform coefficient levels) is described. With regard to the meaning of the syntax elements that must be mentioned, reference may be made to the above-mentioned parts of this application.
[0063] The coding of the significant_coeff_flag and last_significant_coeff_flag syntax elements describing the significance map is improved based on a new context model and adaptive scanning of a defined neighborhood of an already coded scan position. 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 during significance map encoding / decoding, the scanning order (i.e., the mapping of blocks of transform coefficient values onto ordered sets (vectors) of transform coefficient levels) is adjusted based on the values of already encoded / decoded syntax elements of the significance map.
[0065] In a preferred embodiment, the scanning order is adaptively switched between two or more predetermined scanning modes. In a preferred embodiment, the switching may occur only at certain predetermined scanning positions. In a further preferred embodiment of the present invention, the scanning order is adaptively switched between two predetermined scanning modes. In a preferred embodiment, the switching between two predetermined scanning modes may occur only at certain predetermined scanning positions.
[0066] The advantage of switching between scanning modes is a reduction in bit rate, which is a result of having a smaller number of coded syntax elements. Figure 6 , since the residual block contains mainly horizontal or vertical structures, it is often the case that the values of the significant transform coefficients are concentrated on one of the block edges 270, 272, especially for large transform blocks. 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 from the side where the significant coefficients are not concentrated. In this case, a large number of syntax elements for transform coefficient levels equal to zero must be coded before the last non-zero transform coefficient value is reached. This can be avoided if the diagonal subscans often start on the side where the significant transform coefficient levels are concentrated.
[0067] The preferred embodiments of the present invention are described in more detail below.
[0068] As mentioned above, also for large block sizes it is preferred to keep the number of context models moderately small so that the context models can adapt quickly and can provide high coding efficiency. Therefore, a specific context should be used for more than one scanning position. However, since significant transform coefficient levels are usually concentrated in certain areas of the transform block (this concentration may be a result of certain major structures that are usually present in, for example, residual blocks), the idea of assigning the same context to several consecutive scanning positions, such as for the processing of 8x8 blocks in H.264, is usually not suitable. For designing the choice of context, the above-mentioned observation that significant transform coefficient levels tend to be concentrated in certain areas of the transform block can be used. In the following, an idea will be described in which this observation can be exploited.
[0069] In a preferred embodiment, large transform blocks (e.g., larger than 8x8) are partitioned into rectangular sub-blocks (e.g., into 16 sub-blocks) and each of these sub-blocks is associated with a separate context model for encoding significant_coeff_flag and last_significant_coeff_flag (where different context models are used for significant_coeff_flag and last_significant_coeff_flag). The partitioning into sub-blocks may be different for significant_coeff_flag and last_significant_coeff_flag. The same context model may be used for all scan positions located in a particular sub-block.
[0070] In a further preferred embodiment, large transform blocks (e.g. larger than 8x8) may 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 significant_coeff_flag and / or last_significant_coeff_flag. The partitioning into sub-regions may be different for significant_coeff_flag and last_significant_coeff_flag. The same context model may be used for all scan positions located in a particular sub-region.
[0071] In a further preferred embodiment, the context model used to encode significant_coeff_flag and / or last_significant_coeff_flag is selected based on symbols already encoded in a predetermined spatial neighborhood of the current scan position. The predetermined neighborhood may be different for different scan positions. In a preferred embodiment, the context model is selected based on the number of significant transform coefficient levels in the predetermined spatial neighborhood of the current scan position for which only the encoded significance indication is calculated.
[0072] Preferred embodiments of the present invention will be described in more detail below.
[0073] As mentioned above, for large block sizes, common context models encode a large number of binary values (which usually have different probabilities) through a single context model for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements. In order to avoid the disadvantages of large block sizes, according to one embodiment, the large block can be divided into small square or rectangular sub-blocks of a specific size, and a separate context model is applied to each sub-block. In addition, multiple sets of context models can be used, where 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 invention, the number of transform coefficients greater than 2 in the sub-blocks of the same block that were previously encoded (i.e., coeff_abs_level_minus_1>1) is used to obtain the context model set for the current sub-block. These enhancements to the context models for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements make the encoding of the two syntax elements more efficient, especially for large block sizes. In a preferred embodiment, the block size of the sub-block is 2x2. In another preferred embodiment, the block size of the sub-blocks is 4x4.
[0074] In a first step, blocks larger than a predetermined size may be split into smaller sub-blocks of a certain size. The encoding process of the absolute transform coefficient levels uses a scan (wherein different scans may be used for different blocks) to map the sub-blocks of a square or rectangular block onto an ordered set of sub-blocks (vectors). In a preferred embodiment, the sub-blocks are processed using a zigzag scan; the transform coefficient levels within a sub-block are processed with an inverse zigzag scan, i.e. a scan that loads from the highest frequency transform coefficient belonging to the vertical and horizontal directions to the lowest frequency coefficient in both directions. In a further preferred embodiment of the invention, an inverse zigzag scan is used for encoding the sub-blocks and for encoding the transform coefficient levels within the sub-blocks. In a further preferred embodiment of the invention, the whole block of transform coefficient levels is processed using the same adaptive scan that is used for encoding the significance map (see above).
[0075] The partitioning of large transform blocks into sub-blocks avoids the problem of using only one context model for most binary values of a large transform block. Inside a sub-block, a state-of-the-art context model (as specified in H.264) or a fixed context may be used depending on the actual size of the sub-block. Furthermore, the statistics for these sub-blocks (according to the probability model) are different from the statistics for transform blocks of the same size. These properties are revealed by extending the context model groups of the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements. Multiple groups of context models may be provided, and for each sub-block, one of these context model groups may be selected based on statistics of previously coded sub-blocks of the current transform block or in previously coded transform blocks. In a preferred embodiment of the invention, the selected context model group is obtained based on statistics of previously coded sub-blocks of the same block. In another preferred embodiment of the invention, the selected context model group is obtained based on statistics of the same sub-block of a previously coded block. In a preferred embodiment, the number of context model groups is set equal to 4, while in another preferred embodiment, the number of context model groups is set equal to 16. In a preferred embodiment, the statistic used to derive the context model set is the number of absolute transform coefficient levels in previously coded sub-blocks that are greater than 2. In another preferred embodiment, the statistic used to derive the context model set is different between the number of significant coefficients and the number of transform coefficient levels with an absolute value greater than 2.
[0076] The encoding of the saliency map can be performed as described below, ie by adaptive switching of the scanning order.
[0077] In a preferred embodiment, the scanning order for encoding the significance map is adapted by switching between two predetermined scanning modes. Switching between the scanning modes can be done only at certain predetermined scanning positions. The decision whether the scanning mode is switched depends on the values of the significance map syntax elements that have been encoded / decoded. In a preferred embodiment, the two predetermined scanning modes specify a scanning mode with diagonal subscans, similar to the scanning mode of a zigzag scan. These scanning modes are shown in Figure 8 The two scanning patterns 300 and 302 consist of a number of diagonal sub-scans for diagonal lines from the lower left to the upper right or vice versa. A scanning of the diagonal sub-scans from the upper left to the lower right for the two predetermined scanning patterns (not shown in the figure) is performed. However, the scanning within the diagonal sub-scans is different (as shown in the figure). For the first scanning pattern 300, the diagonal sub-scans are scanned from the lower left to the upper right ( Figure 8 ), and for the second scanning mode 302, the diagonal sub-scan is scanned from the upper right to the lower left ( Figure 8 In an embodiment, the encoding of the significance map starts with the second scanning mode. While encoding / decoding the syntax elements, the number of significant transform coefficient values is calculated using two counters c 1 and c 2 Calculate. The first counter c 1 The number of significant transform coefficients located in the lower left part of the transform block is counted; that is, when the horizontal coordinate x inside the transform block is smaller than the vertical coordinate y, the significant transform coefficient level is encoded / decoded, the counter is increased by 1. The second counter c 2 The significant transform coefficients located in the upper right part of the transform block are counted; that is, when a significant transform coefficient level is encoded / decoded for a horizontal coordinate x greater than a vertical coordinate y within the transform block, the counter is incremented by 1. The counter can be adapted using Figure 7 The associator 252 of FIG. 1 is executed and can be described by the following formula, where t represents the scan position index and both counters are initialized to zero:
[0078]
[0079]
[0080] At the end of each diagonal sub-scan, a decision is made by the correlator 252 whether the first predetermined scanning pattern 300 or the second predetermined scanning pattern 302 is to be used for the next diagonal sub-scan. This decision is dependent on the counter c 1 and c 2When the counter value for the lower left part of the transform block is greater than the counter value for the lower left part, a scanning mode of scanning diagonally from the lower left to the upper right is used; otherwise (the counter value for the lower left part of the transform block is less than or equal to the counter value for the lower left part), a scanning mode of scanning diagonally from the upper right to the upper left is used. This decision can be expressed by the following formula:
[0081]
[0082] It should be noted that the embodiments of the present invention described above can be easily applied to other scanning patterns. As an example, the scanning pattern for field macroblocks used in H.264 can also be decomposed into sub-scans. In a further preferred embodiment, a given but arbitrary scanning pattern is decomposed into sub-scans. For each sub-scan, two scanning patterns are defined: one from the lower left to the upper right and one from the upper right to the lower left (basic scanning direction). In addition, two counters are introduced, which count the number of significant coefficients in the first part (close to the lower left boundary of the transform block) and the second part (close to the upper right boundary of the transform block) inside the sub-scan. Finally, at the end of each sub-scan, it is decided (based on the counter value) whether the next sub-scan is to scan from the lower left to the upper right or from the upper right to the lower left.
[0083] In the following, an embodiment of how the entropy decoder 250 establishes a context model will be described.
[0084] In a preferred embodiment, the context model for significant_coeff_flag is processed as follows. For 4x4 blocks, the context model is processed as described 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 idea 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. for blocks larger than 8x8) is based on the number of already coded significant transform coefficients in a predetermined neighborhood (inside the transform block). An example of the definition of the neighborhood corresponding to the preferred implementation of the invention is given in Fig. 9 The crosses with circles around them are available neighborhoods that are usually considered for evaluation, and the crosses with triangles around them are neighborhoods that can be evaluated based on the current scan position and the current scan direction:
[0086] If the current scan position is inside the 2x2 left corner 304, separate context models are used for each scan position ( Fig. 9 , left figure).
[0087] If the current scan position is not inside the left corner of the 2x2 and is not on the first column or first row of the transform block, then Fig. 9 The neighborhood shown on the right is used to evaluate the number of significant transform coefficients in the neighborhood of the current scan position "x" which has nothing surrounding it.
[0088] If nothing around its current scan position "x" falls within the first column of the transform block, use Fig.10 The neighborhood indicated in the diagram to the right.
[0089] If the current scan position "x" falls in the first row of the block, use Fig.10 The neighborhood indicated in the diagram to the left.
[0090] In other words, the decoder 250 may be configured to sequentially extract the significance map syntax elements by using context adaptive entropy decoding, wherein the contexts are each selected according to a number of positions where previously extracted and respectively associated significance map syntax elements are located according to the significance transform coefficients, the positions being defined as being located at the positions where the corresponding current significance map syntax element is associated ( Fig. 9 Right hand side Fig.10 The "x" on both sides, and Fig. 9 As shown, the neighboring region of the position associated with the corresponding current syntax element may only include the following positions: the positions that are separated from or directly adjacent to the position associated with the corresponding significance map syntax element by a maximum of one position in the vertical direction and / or one position in the horizontal direction. Optionally, only the positions that are directly adjacent to the corresponding current syntax element may be considered. At the same time, the transform coefficient block size may be equal to or greater than 8x8 positions.
[0091] In a preferred embodiment, the context model for a particular significant_coeff_flag to be encoded is selected based on the number of significant transform coefficient levels that have been encoded in a defined neighborhood. Here, the number of context models available for use may be smaller than the possible values of the number of significant transform coefficient levels in the defined neighborhood. The encoder and decoder may include a table (or a different mapping mechanism) for mapping the number of significant transform coefficient levels in a defined neighborhood 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 a defined neighborhood and on one or more additional parameters as the neighborhood type used or the scanning position or a quantized value for the scanning position.
[0093] For the encoding 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 depends mainly on the distance from the current scan position to the upper left corner of the transform block. In a preferred embodiment, the context model used to encode last_significant_coeff_flag is selected based on the scan diagonal where the current scan position lies (i.e., on the upper left corner). Figure 8 In the case of an implementation of the invention, it is based on x+y selection, where x and y represent the horizontal and vertical position of the scan position inside the transform block, respectively, or based on how many subscans there are between the current subscan and the upper left DC position (e.g., the subscan index minus 1). In a preferred embodiment of the invention, the same context is used for different x+y values. The distance measure, i.e., x+y or the subscan index, is mapped to a set of context models in a way (e.g., by quantizing x+y or the subscan index), where the number of possible values for the distance measure is greater than the number of available context models for encoding last_significant_coeff_flag.
[0094] In a preferred embodiment, different context model structures are used for transform blocks of different sizes.
[0095] The encoding of absolute transform coefficient levels will be described below.
[0096] In a preferred embodiment, the subblock size is 2x2 and the context model inside the subblock is not available, i.e. a single context model is used for all transform coefficients inside the 2x2 subblock. Only blocks larger than 2x2 can be affected by the subdivision process. In a further preferred embodiment of the invention, the subblock size is 4x4 and the context model inside the subblock is done as in H.264; only blocks larger than 4x4 can be affected by the subdivision process.
[0097] With respect to the scanning order, in a preferred embodiment, a zigzag scan 320 is used to scan the sub-blocks 322 of the transform block 256, i.e., in a direction of generally increasing frequency, while the transform coefficients within the sub-blocks are scanned in a reverse zigzag scan 324 ( Fig.11In a further preferred embodiment of the present invention, sub-block 322 and the transform coefficient levels within sub-block 322 are scanned using a reverse zigzag scanning method (e.g. Fig.11 , where arrow 320 is in the opposite direction.) In a further 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 identical, so that exactly the same scan is used for encoding the significance map and encoding the transform coefficient level values. It should be noted that the scan itself does not generally depend on the selected statistics or number of context model sets, nor on the decision to make a context model inside a sub-block active or inactive.
[0098] Next, an implementation of the context model for coefficient levels will be described.
[0099] In a preferred embodiment, the context model for the sub-block is similar to the context model for the 4x4 block in H.264 described above. The number of context models used to encode the first binary value of the coeff_abs_greater_one syntax element and the coeff_abs_level_minus_one syntax element is equal to five, for example, different context model groups are used for the two syntax elements. In a further preferred embodiment, the context model inside the sub-block is not activated and only one predetermined context model is used inside each sub-block. For both embodiments, the context model group for the sub-block 322 is selected from a predetermined number of context model groups. The selection of the context model group for the sub-block 322 is based on certain statistics of one or more already encoded sub-blocks. In a preferred embodiment, the statistics used to select the context model group for the sub-block are obtained from one or more already encoded sub-blocks in the same block 256. It will be described below how the statistics are used to obtain the selected context model group. In a further preferred embodiment, the statistics are obtained from the same sub-block in a previously encoded block with the same block size (for example, Figure 2B In another preferred embodiment of the present invention, the statistical data is obtained from the adjacent 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 scanning order and how the statistical data is generated to obtain the context model group.
[0100] In a preferred embodiment, the number of context model groups is equal to four, and 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 selected statistics. In a preferred embodiment, the context model group for sub-block 322 is obtained based on the number of absolute transform coefficient levels greater than 2 in one or more coded sub-blocks. The index for the context model group is determined by mapping the number of absolute transform coefficient levels greater than 2 in the reference sub-block 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 the sub-block is obtained 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 coded sub-blocks. 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 a further preferred embodiment, when the same adaptive scan is used to process the absolute transform coefficient levels and the significance map, partial statistics of subblocks in the same block may be used to obtain the context model set for the current subblock. Alternatively, if possible, statistics of previously encoded subblocks in previously encoded transform blocks may be used. This means, for example, that instead of using the absolute number of absolute transform coefficient levels greater than 2 in the subblock for obtaining the context model, the value of the number of absolute transform coefficient levels greater than 2 that have been encoded multiplied by the ratio of the number of transform coefficients in the subblock to the number of transform coefficients that have been encoded in the subblock is used; 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, the difference between the number of significant transform coefficient levels that have been encoded in the subblock and the number of absolute transform coefficient levels that have been encoded greater than 2 multiplied by the ratio of the number of transform coefficients in the subblock to the number of transform coefficients that have been encoded is used.
[0102] For the context model inside the sub-block, basically, the inverse of the context model of the prior art for H.264 can be adopted. This means that when the same adaptive scan is used to process the absolute transform coefficient levels and the significance map, the transform coefficient levels are basically encoded in a forward scan order, instead of the reverse scan order as in H.264. Therefore, the context model switching must be adjusted. According to an embodiment, the encoding of the transform coefficient level starts with the first context model for the coeff_abs_greater_one and coeff_abs_level_minus_one syntax elements, and when two coeff_abs_greater_one syntax elements equal to zero have been encoded due to the last context model switch, it is switched to the next context model in the group. In other words, the context selection depends on the number of coeff_abs_greater_one syntax elements that have been encoded that are greater than zero in the scan order. The number of context models for coeff_abs_greater_one and for coeff_abs_level_minus_one can be the same as in H.264.
[0103] Therefore, the above embodiments can be applied to the field of digital signal processing, in particular, to image and video decoders and encoders. In particular, the above embodiments enable the encoding of syntax elements related to transform coefficients in block-based image and video codecs with an improved context model for syntax elements related to transform coefficients encoded by an entropy encoder using a probability model. Compared with the prior art, improved coding efficiency can be achieved, especially for large transform blocks.
[0104] Although some aspects have been described in the context of an apparatus, it should be understood that these aspects also represent the description of the corresponding method, where the blocks or components correspond to method steps or features of method steps. Similarly, the aspects described in the context of method steps also represent the description of the corresponding blocks or items or features of the corresponding apparatus.
[0105] The inventive coded signal representing the transform block or the 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] According to certain implementation requirements, embodiments of the present invention may be implemented in hardware or software. Implementation may be performed using a digital storage medium, such as a floppy disk, DVD, Blu-ray disc, CD, ROM, PROM, EPROM, EEPROM or FLASH memory, on which electronically readable control signals are stored, which cooperate (or can cooperate) with a programmable computer system so that the corresponding method is executed. Therefore, the digital storage medium may be computer readable.
[0107] Some embodiments according to the invention comprise a data carrier having electronically readable control signals, which are capable of cooperating with a programmable computer system, such that the methods described herein are performed.
[0108] Generally, the embodiments of the present invention can be implemented as a computer program product with a program code, when the computer program product is executed on a computer, the program code can be operated to perform one of the methods. The program code, for example, can 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 method is, therefore, a computer program with a program code for performing one of the various 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 method of the present invention is, therefore, a data stream or a sequence of signals representing a computer program for performing one of the various methods described herein. The data stream or the sequence of signals, for example, can be configured to be transmitted via a data communication connection, for example, via the Internet.
[0113] A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform 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) may be used to perform some or all of the functions of the various methods described herein. In some embodiments, a field programmable gate array may be coupled with a microprocessor to perform one of the various methods described herein. In general, these methods may preferably be performed by any hardware device.
[0116] The embodiments described above are only shown as the principles of the present invention. It will be appreciated by those skilled in the art that the arrangement and details of the present invention described herein may have different modifications and variations. Therefore, the present invention will only be limited by the scope of the pending application claims, and not by the specific details presented by the description and explanation of the embodiments herein.
[0117] The present invention can also be configured as follows.
[0118] 1. An apparatus for decoding a significance map indicating positions of significant transform coefficients within a transform coefficient block from a data stream, the apparatus comprising:
[0119] A decoder (250) configured to sequentially extract syntax elements of a first type from the data stream, the syntax elements of the first type indicating, for an associated position within the transform coefficient block (256), at least whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position; and
[0120] An associator (252) is configured to sequentially associate sequentially extracted first-type syntax elements to positions of the transform coefficient block in a scanning order, in positions of the transform coefficient block, which depends on the positions of the significant transform coefficients indicated by the first-type syntax elements previously extracted and associated.
[0121] 2. An apparatus according to item 1, wherein the decoder (250) is further configured to identify whether the last significant transform coefficient in the transform coefficient block is located at a position associated with a currently extracted first type syntax element based on information in the data stream and independently of the several positions of the non-significant transform coefficients indicated by the previously extracted and associated first type syntax element, wherein the currently extracted first type syntax element indicates that the significant transform coefficient is located at this position.
[0122] 3. An apparatus according to item 1 or 2, wherein the decoder (250) is further configured to extract a second type of syntax element from the bitstream between a first type of syntax element indicating that a significant transform coefficient is located at a corresponding associated position and a first type of syntax element immediately following the first type of syntax element, wherein the second type of syntax element indicates, for the associated position where the significant transform coefficient is located, whether the last significant transform coefficient in the transform coefficient block is located at the corresponding associated position.
[0123] 4. An apparatus according to any one of items 1 to 3, wherein the decoder (250) is further configured to, after extraction of all syntax elements of the first type in the transform coefficient block, continuously extract the values of the significant transform coefficients in the transform coefficient block from the data stream by context adaptive entropy decoding, wherein the associator (252) is configured to sequentially associate the sequentially extracted values with the positions of the significant transform coefficients in a predetermined coefficient scanning order in the positions of the transform coefficient block, and according to the result, the transform coefficient block is converted into a transform coefficient block (256) using a sub-block scanning order (320). ) is scanned in a manner of sub-blocks (322) of the transform coefficient blocks, and auxiliaryly, the positions of transform coefficients within the sub-blocks (322) are scanned in a position sub-scanning order (324), wherein the decoder is configured to use a selected group of several contexts selected from multiple groups of several contexts when sequentially context-adaptively entropy decoding the values of the significant transform coefficient values, and the selection of the selected group is performed for each sub-block based on the values of transform coefficients within sub-blocks of transform coefficient blocks that have been traversed in the sub-block scanning order (320) or based on the values of transform coefficients of a common location sub-block in a previously decoded transform coefficient block of equal size.
[0124] 5. An apparatus according to any one of items 1 to 4, wherein the decoder (250) is configured to sequentially extract the first type of syntax elements by context adaptive entropy decoding using a context, wherein the context is based on a number of positions at which significant transform coefficients are located according to previously extracted and associated first type syntax elements, and for each first type syntax element, the number of positions is selected individually, and the number of positions is in a neighborhood of a position associated with the corresponding first type syntax element.
[0125] 6. An apparatus according to item 5, wherein the decoder is further configured such that the neighboring area of the position associated with the corresponding first-type syntax element only includes: a position directly adjacent to the position associated with the corresponding first-type syntax element, or a position separated from the position associated with the corresponding first-type syntax element by a maximum of one position in the vertical direction and / or one position in the horizontal direction or a position directly adjacent to the position, wherein the size of the transform coefficient block is equal to or greater than 8x8 positions.
[0126] 7. An apparatus according to item 5 or 6, wherein the decoder is further configured to map significant transform coefficients in a neighborhood of a position associated with a corresponding first type of syntax element to context indices in a predetermined set of possible context indices, based on the number of positions at which the significant transform coefficients are located in a neighborhood of a position associated with a corresponding first type of syntax element according to previously extracted and associated first type of syntax elements, while weighting the positions by a number of available positions in the neighborhood of the position associated with the corresponding first type of syntax element.
[0127] 8. An apparatus according to any one of items 1 to 7, wherein the associator (252) is further configured to sequentially associate the sequentially extracted first type syntax elements to the positions of the transform coefficient block, which is performed along a sub-path sequence extending between a first pair of adjacent sides of the transform coefficient block and a second pair of adjacent sides of the transform coefficient block, wherein the position of the lowest frequency in the horizontal direction and the position of the highest frequency in the vertical direction are respectively placed along the first pair of adjacent sides of the transform coefficient block, and the position of the lowest frequency in the vertical direction and the position of the highest frequency in the horizontal direction are respectively placed along the second pair of adjacent sides of the transform coefficient block, and the sub-path has an increasing distance from the position of the lowest frequency in both vertical and horizontal directions, wherein the associator (252) is configured to determine a direction (300, 302) along which the sequentially extracted first type syntax elements are associated to the positions of the transform coefficient block based on the positions of significant transform coefficients in a previous sub-scan.
[0128] 9. An apparatus for decoding a significance map indicating positions of significant transform coefficients within a transform coefficient block from a data stream, the apparatus comprising:
[0129] A decoder (250) configured to extract a significance map indicating positions of significant transform coefficients within the transform coefficient block from the data stream, and then extract values of the significant transform coefficients within the transform coefficient block, wherein when extracting the significance map, first-type syntax elements are sequentially extracted 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 a corresponding position; and
[0130] an associator (252) configured to sequentially associate the sequentially extracted first type syntax elements to the positions of the transform coefficient block in a predetermined scanning order in the positions of the transform coefficient block,
[0131] The decoder is configured to use a context when performing context adaptive entropy decoding on the first type syntax element, wherein the context is selected for each first type syntax element individually based on a number of positions at which significant transform coefficients are located according to previously extracted and associated first type syntax elements, and the number of positions are in a neighborhood of a position associated with a current first type syntax element.
[0132] 10. An apparatus according to item 9, wherein the decoder (250) is further configured such that the neighboring area of the position associated with the corresponding first type syntax element only includes: a position directly adjacent to the position associated with the corresponding first type syntax element, or a position separated from the position associated with the corresponding first type syntax element by a maximum of one position in the vertical direction and / or one position in the horizontal direction or a position directly adjacent, wherein the size of the transform coefficient block is equal to or greater than 8x8 positions.
[0133] 11. An apparatus according to item 9 or 10, wherein the decoder (250) is further configured to map significant transform coefficients in a neighborhood of a position associated with a corresponding first type of syntax element to context indices from a predetermined set of possible context indices, based on the number of positions at which the significant transform coefficients are located in a neighborhood of a position associated with a corresponding first type of syntax element according to previously extracted and associated first type of syntax elements, while weighting the positions by a number of available positions in the neighborhood of the position associated with the corresponding first type of syntax element.
[0134] 12. An apparatus for decoding a transform coefficient block, the apparatus comprising:
[0135] A decoder (250) configured to extract a significance map indicating positions of significant transform coefficients within the transform coefficient block from the data stream, and then extract values of the significant transform coefficients within the transform coefficient block, wherein when extracting the values of the significant transform coefficients, the values are sequentially extracted 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 scanning order in the positions of the transform coefficient block, according to which the transform coefficient block is scanned in a sub-block (322) manner of the transform coefficient block (256) using a sub-block scanning order (320), and auxiliaryly, the positions of the transform coefficients within the sub-block are scanned in a position sub-scanning order (324),
[0137] The decoder (250) is configured to use a selected group of several contexts selected from multiple groups of several contexts when sequentially context-adaptively entropy decoding the values of the significant transform coefficient values, and the selection of the selected group is performed for each sub-block based on the values of transform coefficients within sub-blocks of transform coefficient blocks that have been traversed in a sub-block scanning order, or based on the values of transform coefficients of commonly located sub-blocks in previously decoded transform coefficient blocks of equal size.
[0138] 13. An apparatus according to item 12, wherein the decoder is configured such that the number of contexts of the plurality of context groups is greater than one, and is configured to uniquely assign the contexts of the selected group of the number of contexts to positions within the corresponding sub-block when sequentially context-adaptively decoding the values of the significant transform coefficient values within the sub-block using the selected group of the number of contexts for the corresponding sub-block.
[0139] 14. An apparatus according to item 12 or 13, wherein the associator (252) is configured so that the sub-block scanning order proceeds in a zigzag manner from the sub-block including the position with the lowest frequency in the vertical direction and the horizontal direction to the sub-block including the position with the highest frequency in both the vertical and horizontal directions, and at the same time, the position sub-scanning order in each sub-block proceeds in a zigzag manner from the position with the highest frequency in the vertical direction and the horizontal direction within the corresponding sub-block to the position with the lowest frequency in both the vertical and horizontal directions within the corresponding sub-block.
[0140] 15. A transform-based decoder configured to decode a transform coefficient block using a device (150) for decoding a significance map indicating positions of significant transform coefficients within a transform coefficient block from a data stream according to any one of items 1 to 11, and to perform (152) a transform from a spectral domain to a 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 from a data stream using means (150) for decoding a significance map indicating positions of significant transform coefficients within the transform coefficient block according to any one of items 1 to 11, and to perform (152) a transform from the spectral domain to the 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 an array of information samples representing a spatially sampled information signal; and
[0144] A combiner (154) is configured to combine the prediction of the block and the residual block to reconstruct an information sample array.
[0145] 17. A device for encoding a significance map indicating the position of significant transform coefficients within a transform coefficient block as a data stream, the device being configured to sequentially encode first-type syntax elements as the data stream by entropy coding, the first-type syntax elements indicating, for an associated position within the transform coefficient block, at least as to whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position, wherein the device is further configured to encode the first-type syntax elements as the data stream in a scanning order among the positions of the transform coefficient block, which depends on the position of the significant transform coefficient indicated by a previously encoded first-type syntax element.
[0146] 18. An apparatus for encoding a significance map indicating positions of significant transform coefficients within a transform coefficient block into a data stream, the apparatus being configured to encode a significance map indicating positions of significant transform coefficients within the transform coefficient block, and then to encode values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when encoding the significance map, first-type syntax elements are sequentially encoded into the data stream by context adaptive entropy coding, 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 corresponding position, wherein the apparatus is further configured to sequentially encode the first-type syntax elements into the data stream in a predetermined scanning order among the positions of the transform coefficient block, wherein the apparatus is configured to use a context when context adaptive entropy coding each of the first-type syntax elements, the context being selected for each of the first-type syntax elements according to a number of positions at which significant transform coefficients are located and associated with first-type syntax elements previously encoded into the data stream, the number of positions being in a neighborhood of a position associated with a current first-type syntax element.
[0147] 19. An apparatus for encoding a transform coefficient block, the apparatus being configured to encode a significance map indicating positions of significant transform coefficients within the transform coefficient block, and then to encode the values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when extracting the values of the significant transform coefficients, the values are sequentially encoded by context adaptive entropy coding, wherein the apparatus is configured to encode the values into the data stream in a predetermined coefficient scanning order in the positions of the transform coefficient block, according to which the transform coefficient block is scanned in a sub-block manner of the transform coefficient block using a sub-block scanning order, and auxiliaryly, the positions of the transform coefficients within the sub-blocks are scanned in a position sub-scanning order, wherein the apparatus is further configured to use a selected group of several contexts selected from a plurality of groups of several contexts when sequentially context adaptive entropy coding the values of the significant transform coefficient values, the selection of the selected group being performed for each sub-block based on the values of transform coefficients within sub-blocks of the transform coefficient block that have been traversed in the sub-block scanning order, or based on the values of transform coefficients of a common location sub-block in a previously encoded transform coefficient block of equal size.
[0148] 20. A method for decoding a significance map indicating positions of significant transform coefficients within a transform coefficient block from a data stream, the method comprising the steps of:
[0149] sequentially extracting syntax elements of a first type from the data stream, the syntax elements of the first type indicating, for an associated position within the transform coefficient block, at least whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position; and
[0150] Sequentially extracted first type syntax elements are sequentially associated to positions of the transform coefficient block in scanning order among the positions of the transform coefficient block, which depend on the positions of the significant transform coefficients indicated by the previously extracted and associated first type syntax elements.
[0151] 21. A method for decoding a significance map indicating positions of significant transform coefficients within a transform coefficient block from a data stream, the method comprising the steps of:
[0152] Extracting a significance map indicating positions of significant transform coefficients within the transform coefficient block from the data stream, and then extracting values of the significant transform coefficients within the transform coefficient block, wherein when extracting the significance map, sequentially extracting syntax elements of the first type from the data stream by context adaptive entropy decoding, the syntax elements of the first type indicating, for an associated position within the transform coefficient block, whether a significant transform coefficient or a non-significant transform coefficient is located at a corresponding position; and
[0153] sequentially associating sequentially extracted syntax elements of the first type to positions of the transform coefficient block in a predetermined scanning order in the positions of the transform coefficient block,
[0154] Wherein, when performing context adaptive entropy decoding on the first type syntax element, a context is used, wherein the context is selected individually for each first type syntax element based on a plurality of positions at which significant transform coefficients are located according to first type syntax elements that were previously extracted and associated, and the plurality of positions are in a neighborhood of a position associated with the corresponding first type syntax element.
[0155] 22. A method for decoding a transform coefficient block, the method comprising the steps of:
[0156] Extracting a saliency map indicating positions of significant transform coefficients within the transform coefficient block from a data stream, and then extracting values of the significant transform coefficients within the transform coefficient block, wherein when extracting the values of the significant transform coefficients, the values are sequentially extracted by context adaptive entropy decoding; and
[0157] sequentially associating sequentially extracted values with the positions of the significant transform coefficients in a predetermined coefficient scanning order in the positions of the transform coefficient block, according to which the transform coefficient block is scanned in a sub-block manner of the transform coefficient block using a sub-block scanning order, and auxiliaryly, scanning the positions of the transform coefficients within the sub-blocks in a position sub-scanning order,
[0158] Wherein, when sequentially performing context adaptive entropy decoding on the values of the significant transform coefficient values, a selected group of several contexts selected from multiple groups of several contexts is used, and the selection of the selected group is performed for each sub-block based on the values of transform coefficients within sub-blocks of transform coefficient blocks that have been traversed in a sub-block scanning order, or based on the values of transform coefficients of sub-blocks at common locations in previously decoded transform coefficient blocks of equal size.
[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] Sequentially encoding by entropy coding syntax elements of a first type into a data stream, the first type syntax elements indicating, for an associated position within the transform coefficient block, at least with respect to whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position, the first type syntax elements being encoded into the data stream in a scanning order among the positions of the transform coefficient block, which depends on the position of the significant transform coefficient indicated by a previously encoded syntax element of the first type.
[0161] 24. 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:
[0162] encoding a significance map indicating positions of significant transform coefficients within the transform coefficient block, and then encoding the values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when encoding the significance map, first-type syntax elements are sequentially encoded into the data stream by context adaptive entropy coding, 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 corresponding position, wherein the sequential encoding of the first-type syntax elements into the data stream is performed in a predetermined scanning order among the positions of the transform coefficient block, a context is used when performing the context adaptive entropy coding for each first-type syntax element, the context being selected for each first-type syntax element according to a number of positions at which significant transform coefficients are located and associated with first-type syntax elements previously encoded into the data stream, the number of positions being in a neighborhood of a position associated with a current first-type syntax element.
[0163] 25. A method for encoding a transform coefficient block, the method comprising the following steps:
[0164] encoding a significance map indicating positions of significant transform coefficients within the transform coefficient block, and then encoding the values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when encoding the values of the significant transform coefficients, the values are sequentially encoded by context adaptive entropy coding, wherein the step of encoding the values into the data stream is performed at the positions of the transform coefficient block in a predetermined coefficient scanning order, according to which the transform coefficient block is scanned in a sub-block manner of the transform coefficient block using a sub-block scanning order, and auxiliaryly, the positions of the transform coefficients within the sub-blocks are scanned in a position sub-scanning order, wherein when sequentially context adaptive entropy coding the values of the significant transform coefficient values, a selected group of several contexts selected from a plurality of groups of several contexts is used, the selection of the selected group being performed for each sub-block based on the values of transform coefficients within sub-blocks of the transform coefficient block that have been traversed in the sub-block scanning order or based on the values of transform coefficients of a common location sub-block in a previously encoded transform coefficient block of equal size.
[0165] 26. A data stream in which a significance map indicating positions of significant transform coefficients within a transform coefficient block is encoded, wherein first type syntax elements are sequentially encoded into the data stream by entropy coding, the first type syntax elements indicating, for an associated position within the transform coefficient block, at least with respect to whether a significant transform coefficient or a non-significant transform coefficient is located at the respective position, wherein the first type syntax elements are encoded into the data stream in a scanning order among the positions of the transform coefficient block, which depends on the positions of the significant transform coefficients indicated by previously encoded first type syntax elements.
[0166] 27. A data stream in which a significance map indicating positions of significant transform coefficients within a transform coefficient block is encoded, wherein the significance map indicating positions of significant transform coefficients within the transform coefficient block and values of the significant transform coefficients within the transform coefficient block immediately following the significant transform coefficients are encoded as the data stream, wherein within the significance map, first-type syntax elements are sequentially encoded as the data stream by context adaptive entropy coding, the first-type syntax elements indicating, for an associated position within the transform coefficient block, at least with respect to whether a significant transform coefficient or a non-significant transform coefficient is located at the corresponding position, wherein the first-type syntax elements are sequentially encoded as the data stream in a predetermined scanning order among the positions of the transform coefficient block, and the first-type syntax elements are context adaptive entropy coded as the data stream using a context, wherein the context is selected for each of the first-type syntax elements in dependence on a number of positions at which significant transform coefficients are located and associated with first-type syntax elements previously encoded as the data stream, the number of positions being in a neighborhood of a position associated with a current first-type syntax element.
[0167] 28. A data stream comprising a significance map indicating positions of significant transform coefficients within a transform coefficient block, followed by an encoding of values of the significant transform coefficients within the transform coefficient block, wherein the values of the significant transform coefficients are sequentially encoded into the data stream by context adaptive entropy coding in positions of the transform coefficient block in a predetermined coefficient scanning order, according to which the transform coefficient block is scanned in a sub-block manner of the transform coefficient block using a sub-block scanning order, and auxiliaryly, the positions of the transform coefficients within the sub-blocks are scanned in a position sub-scanning order, wherein the values of the significant transform coefficient values are sequentially context adaptive entropy encoded into the data stream using a selected group of several contexts selected from a plurality of groups of several contexts, the selection of the selected group being performed for each sub-block based on the values of the transform coefficients within the sub-blocks of the transform coefficient block, the values of the transform coefficients within the sub-blocks of the transform coefficient block that have been traversed in the sub-block scanning order, or the values of the transform coefficients of a common location sub-block in a previously encoded transform coefficient block of equal size.
[0168] 29. 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 items 23 to 25.
Claims
1. An apparatus for decoding a video from a data stream, the apparatus being configured to decode transform coefficients of a transform coefficient block from the data stream, the apparatus comprising: a decoder configured to extract from the data stream a significance map indicating positions of significant transform coefficients within the transform coefficient block, and to extract values of the significant transform coefficients within the transform coefficient block, and to sequentially extract syntax elements of the first type from the data stream by context adaptive arithmetic decoding while extracting the significance map; as well as an associator configured to sequentially associate sequentially extracted first-type syntax elements to positions of the transform coefficient block in a predetermined scanning order among the positions of the transform coefficient block, The decoder is configured to use a context when performing context adaptive arithmetic decoding on the first type syntax element, wherein the context is selected for each first type syntax element individually based on a number of positions at which significant transform coefficients are located according to previously extracted and associated first type syntax elements, the number of positions being in a neighborhood of a position associated with a current first type syntax element.
2. The device according to claim 1, wherein: The decoder is further configured to map, in a neighborhood of the position associated with the corresponding first type syntax element, a number of positions at which significant transform coefficients are located according to previously extracted and associated first type syntax elements to context indices from a predetermined set of possible context indices, weighted by a number of available positions in a neighborhood of the position associated with the corresponding first type syntax element.
3. The device according to claim 1, wherein: The neighborhood of the position with which the current syntax element of the first type is associated comprises positions within the transform coefficient block, the positions being adjacent to the position of the current syntax element of the first type.
4. The device according to claim 1, wherein: The neighboring area of the position with which the current first-type syntax element is associated comprises a position within the transform coefficient block, which is separated from the position of the current first-type syntax element by a position in the vertical direction and / or a position in the horizontal direction.
5. The device according to any one of claims 1 to 4, wherein: The decoder is configured to perform a transform from a spectral domain to a spatial domain on the transform coefficient block.
6. The apparatus according to any one of claims 1 to 4, the decoder being configured to perform a transform from the spectral domain to the spatial domain on the transform coefficient block to obtain a residual block, and wherein: The device also includes: a predictor configured to provide a prediction for a block of an array of information samples representing a spatially sampled information signal; and A combiner is configured to combine the prediction of the block and the residual block to reconstruct an array of information samples.
7. A device for encoding a video into a data stream, the device being configured to encode transform coefficients of a transform coefficient block into a data stream, the device comprising: A computer, a microprocessor or a programmable logic device, configured to encode a significance map indicating positions of significant transform coefficients within the transform coefficient block, and to encode values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when encoding the significance map, first-type syntax elements are sequentially encoded into the data stream by context adaptive arithmetic coding, wherein the apparatus is further configured to sequentially encode the first-type syntax elements into the data stream in a predetermined scanning order among the positions of the transform coefficient block, wherein the apparatus is configured to use a context when context adaptive arithmetic coding each of the first-type syntax elements, wherein the context is selected for each of the first-type syntax elements in dependence on a number of positions at which significant transform coefficients are located and associated with first-type syntax elements previously encoded into the data stream, the number of positions being within a neighborhood of a position associated with a current first-type syntax element.
8. A method for decoding video from a data stream, the method comprising decoding transform coefficients of a transform coefficient block from the data stream by: extracting from the data stream a significance map indicating positions of significant transform coefficients within the transform coefficient block, and extracting values of the significant transform coefficients within the transform coefficient block, wherein syntax elements of the first type are sequentially extracted from the data stream by context adaptive arithmetic decoding while extracting the significance map; and sequentially associating sequentially extracted syntax elements of the first type to positions of the transform coefficient block in a predetermined scanning order in the positions of the transform coefficient block, in, A context is used when performing context adaptive arithmetic decoding on the first type syntax element, wherein the context is selected for each first type syntax element individually according to a number of positions at which significant transform coefficients are located according to previously extracted and associated first type syntax elements, the number of positions being in a neighborhood of a position associated with a current first type syntax element.
9. A method for encoding a video into a data stream, the method comprising encoding transform coefficients of a transform coefficient block into the data stream by the following steps: encoding a significance map indicating positions of significant transform coefficients within the transform coefficient block, and encoding values of the significant transform coefficients within the transform coefficient block into a data stream, wherein when encoding the significance map, syntax elements of the first type are sequentially encoded into the data stream by context adaptive arithmetic coding, wherein The encoding of the first type of syntax elements into the data stream is performed sequentially in a predetermined scanning order in positions of the transform coefficient block, using a context when performing the context adaptive arithmetic coding of each of the first type of syntax elements, wherein the context is selected for each of the first type of syntax elements in dependence on a number of positions at which significant transform coefficients are located and which are associated with first type syntax elements previously encoded into the data stream, the number of positions being within a neighborhood of a position associated with a current first type of syntax element.
10. A computer-readable digital storage medium having a computer program containing program codes stored thereon, which program codes execute the method according to claim 8 or 9 when run on a computer.
11. A method for storing a video, the method comprising: A data stream is stored on a digital storage medium, and the video is encoded into the data stream by the following steps: A significance map indicating positions of significant transform coefficients within a transform coefficient block and values of the significant transform coefficients within the transform coefficient block are encoded into the data stream, wherein when encoding the significance map, first-type syntax elements are sequentially encoded into the data stream by context adaptive arithmetic coding, wherein the first-type syntax elements are sequentially encoded into the data stream in the positions of the transform coefficient block in a predetermined scanning order, and in context adaptive arithmetic coding of each of the first-type syntax elements, the context is respectively selected for the first-type syntax element in dependence on a number of positions at which significant transform coefficients are located and associated with previously encoded first-type syntax elements, the number of positions being within a neighborhood of a position associated with a current first-type syntax element.
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
Context adaptive position and amplitude coding of coefficients for video compression
US20090086815A1