CN116998150A - State transition for grid quantization in video coding and decoding - Google Patents
State transition for grid quantization in video coding and decoding Download PDFInfo
- Publication number
- CN116998150A CN116998150A CN202280019630.6A CN202280019630A CN116998150A CN 116998150 A CN116998150 A CN 116998150A CN 202280019630 A CN202280019630 A CN 202280019630A CN 116998150 A CN116998150 A CN 116998150A
- Authority
- CN
- China
- Prior art keywords
- state transition
- quantized
- transition diagram
- block
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007704 transition Effects 0.000 title claims abstract description 231
- 238000013139 quantization Methods 0.000 title claims abstract description 192
- 238000010586 diagram Methods 0.000 claims abstract description 222
- 238000000034 method Methods 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000004891 communication Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 38
- 230000000875 corresponding effect Effects 0.000 abstract description 26
- 230000002596 correlated effect Effects 0.000 abstract description 4
- 238000005259 measurement Methods 0.000 description 8
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 108010076504 Protein Sorting Signals Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003292 diminished effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
In some embodiments, a video encoder or decoder reconstructs blocks of video by correlated quantization. The video encoder or decoder accesses the quantized elements within the block and processes the quantized elements according to an order corresponding to the block to generate corresponding dequantized elements. The processing includes obtaining a current quantized element from quantized elements of the block, and determining a current state for quantization based on a previous state for quantization of an element preceding the current quantized element and a state transition diagram selected from two state transition diagrams. The process also includes determining a quantizer of the current quantized element based on a current state of the current quantized element, and dequantizing the current quantized element based on the quantizer to generate a dequantized element. A video encoder or decoder reconstructs the block based on the dequantized elements.
Description
Cross Reference to Related Applications
The present application claims the benefit of priority from U.S. provisional application No. 63/170,040, entitled "Improved State Transition Method for Trellis Quantization in Video Coding," filed on 4/2 of 2021, incorporated herein by reference in its entirety.
Technical Field
The present disclosure relates generally to computer-implemented methods and systems for video processing. In particular, the present disclosure relates to grid quantization for video codecs.
Background
The ubiquitous devices with camera functions, such as smartphones, tablet computers and computers, make capturing video or images easier than ever before. However, the data amount of even short video may be quite large. Video codec techniques (including video encoding and decoding) are capable of compressing video data into smaller amounts of data, allowing the storage and transmission of more types of video. Video codecs have been used in a wide range of applications such as digital television broadcasting, video transmission over the internet and mobile networks, real-time applications (e.g., video chat, video conferencing), DVD and blu-ray discs, etc. In order to reduce the storage space for storing video and/or the network bandwidth consumption for transmitting video, it is desirable to increase the efficiency of video codec schemes.
Disclosure of Invention
Some embodiments relate to related quantization for video codec. In one example, a method for reconstructing a block of video includes sequentially processing a plurality of quantized elements within the block to generate respective dequantized elements corresponding to the plurality of quantized elements. The processing includes obtaining a quantized element within a block from a plurality of quantized elements; determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained quantized element based on the state of the obtained quantized element; and dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element. The method further includes reconstructing a block based on each dequantized element corresponding to the plurality of quantized elements.
In another example, a non-transitory computer readable medium has program code stored therein and executable by one or more processing devices to perform operations comprising: processing a plurality of quantized elements within a block of video in accordance with a sequence to generate respective dequantized elements corresponding to the plurality of quantized elements, the processing comprising: obtaining a quantized element within a block from a plurality of quantized elements; determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained quantized element based on the state of the obtained quantized element; and dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element. The operations also include reconstructing the block based on each dequantized element corresponding to the plurality of quantized elements.
In yet another example, a system includes a processing device and a non-transitory computer readable medium capable of data transmission with the processing device. The processing device is configured to execute program code stored in a non-transitory computer readable medium to perform operations of: processing a plurality of quantized elements within a video block in accordance with a sequence to generate respective dequantized elements corresponding to the plurality of quantized elements, the processing comprising: obtaining a quantized element within a block from a plurality of quantized elements; determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained quantized element based on a current state of the obtained quantized element; and dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element. The operations also include reconstructing the block based on each dequantized element corresponding to the plurality of quantized elements.
In another example, a method for encoding a block of video includes sequentially processing a plurality of elements within the block of video to generate respective quantized elements corresponding to the plurality of elements. The process includes: obtaining an element within a block from a plurality of elements; determining a state for quantization of the obtained element based on a state for quantization of the element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained element based on the current state of the obtained element; and quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element. The method also includes encoding each quantized element corresponding to the plurality of elements into a bitstream of the video.
In yet another example, a non-transitory computer readable medium has program code stored therein and the program code is executable by one or more processing devices to: processing a plurality of elements of a block of video in accordance with a sequence to generate respective quantized elements corresponding to the plurality of elements, the processing comprising: obtaining an element within a block from a plurality of elements; determining a state for quantization of the obtained element based on a state for quantization of the element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained element based on the current state of the obtained element; and quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element. The operations also include encoding each quantized element corresponding to the plurality of elements into a bitstream of the video.
A system includes a processing device and a non-transitory computer readable medium capable of data transmission with the processing device. The processing device is configured to execute program code stored in a non-transitory computer readable medium to perform operations of: processing a plurality of elements of a video block in accordance with a sequence to generate respective quantized elements corresponding to the plurality of elements, the processing comprising: obtaining an element within a block from a plurality of elements; determining a state for quantization of the obtained element based on a state for quantization of the element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram; determining a quantizer of the obtained element based on the current state of the obtained element; and quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element. The operations also include encoding each quantized element corresponding to the plurality of elements into a bitstream of the video.
These illustrative embodiments are not mentioned to limit or define the disclosure, but to provide examples to aid understanding of the disclosure. Additional examples are discussed in the detailed description and further description is provided.
Drawings
The features, embodiments, and advantages of the present disclosure will be better understood from a reading of the following detailed description with reference to the accompanying drawings.
Fig. 1 illustrates a block diagram of an example of a video encoder configured to implement embodiments presented in the present disclosure.
Fig. 2 illustrates a block diagram of an example of a video decoder configured to implement embodiments presented in the present disclosure.
Fig. 3 depicts an example of coding tree unit partitioning of images in video according to some embodiments of the present disclosure.
Fig. 4 depicts an example of coding unit partitioning of coding tree units according to some embodiments of the present disclosure.
Fig. 5 depicts an example of a predetermined sequence for processing elements within an encoded block.
Fig. 6 depicts an example of two quantizers for correlated quantization in existing video codec technology.
Fig. 7 depicts an example of a state transition diagram and associated state transition table for related quantization in accordance with some embodiments of the present disclosure.
Fig. 8 depicts an example of a possible grid path employing grid quantization to quantize a plurality of consecutive coefficients in a block in accordance with some embodiments of the present disclosure.
Fig. 9A and 9B depict another example of a possible mesh path employing mesh quantization to quantize a plurality of consecutive coefficients in a block in accordance with some embodiments of the present disclosure.
Fig. 10 depicts another example of a state transition diagram and associated state transition table for grid quantization in accordance with some embodiments of the present disclosure.
Fig. 11 depicts an example of a possible mesh path for quantizing multiple consecutive coefficients in a block using a two-state transition diagram in some embodiments according to the present disclosure.
Fig. 12 depicts another example of a possible mesh path for quantizing multiple consecutive coefficients in a block using a two-state transition diagram in accordance with some embodiments of the present disclosure.
Fig. 13 depicts an example of a process of encoding blocks of video using grid quantization with a two-state transition diagram in some embodiments according to the present disclosure.
Fig. 14 depicts an example of a process of reconstructing a block of video quantized by grid quantization using a two-state transition diagram in accordance with some embodiments of the present disclosure.
FIG. 15 depicts an example of a computing system that may be used to implement some embodiments of the present disclosure.
Detailed Description
Various embodiments may provide grid quantization for video codecs. As described above, more and more video data is being generated, stored, and transmitted, so it is beneficial to improve the codec efficiency of video codec technology, which facilitates the presentation of video using less data, while not compromising the visual quality of the decoded video. One aspect of improving coding efficiency is improving the quantization scheme of video coding. Recent video codec standards, such as general purpose video codec (versatile video coding, VVC), have employed grid quantization techniques such as correlated quantization.
In grid quantization, more than one quantizer is available when quantizing elements (e.g., residual pixel values or residual transform coefficients) within a coded block (or "block"). The quantizer used to quantize the current element depends on the value of the previous element in the encoded block. In some examples, the value of the previously quantized element is used to determine a quantization state for quantizing the current element, which in turn is used to determine a quantizer of the current element (hereinafter, "quantization state for quantizing element" is also referred to as "state of element"). Since the existing mesh quantization method uses only one state transition diagram, a quantization path along consecutive elements in a block may follow a quantization path having a simple pattern. For example, the quantization path may indicate that multiple consecutive elements use the same scalar quantizer, or that two quantizers are used alternately for consecutive elements. These simple pattern quantization paths do not fully exploit the grid quantization, greatly impairing the advantage of grid quantization over scalar quantization, and thus reducing coding efficiency.
Various embodiments described in this disclosure address these problems by introducing a second state transition diagram and using both state transition diagrams in determining the state of an element of an encoded block and selecting a quantizer for that element. The element of the encoded block may be a residual after inter or intra prediction of the encoded block. The element may be a transform coefficient of the residual in the frequency domain or a value of the residual in the pixel domain. One of the two state transition diagrams may be used when determining a quantization state for selecting a quantizer for quantizing a current element. For example, the two state transition diagrams may be used in an alternating pattern such that a first state transition diagram is for N consecutive elements, a second state transition diagram is for the next M consecutive elements, and so on. M and N are integer values, M may be equal to or less than N.
The following non-limiting examples are provided to introduce some embodiments. In one example, a quantizer of a current element of an encoded block is determined based on a quantization state used to quantize the current element. The quantization state for quantizing the current element is determined based on the quantization state of the previous element and whether the quantized value of the previous element belongs to a subset of the quantized values and not another subset. In some implementations, if the elements are transform coefficients in the frequency domain, the elements in the encoded block are processed according to a predetermined order, e.g., from highest frequency to lowest frequency. In these examples, a video encoder or decoder determines a quantization state for quantizing a current element based on elements preceding the current element and their corresponding quantization states according to a predetermined order and based on a state transition diagram.
The state transition diagram is determined by alternating between a primary state transition diagram and a secondary state transition diagram following a repeating pattern of n+m. In other words, the primary state transition diagram may be for N consecutive elements, and then the secondary state transition diagram for the next M consecutive elements. This pattern may be repeated until all elements in the block have been processed. N and M are integers, N may be equal to or greater than M. Both encoder and decoder use the same N, M and repetition pattern n+m. Compared to existing grid quantization methods, which use only one state transition diagram to determine the state of the current element, the proposed method avoids that the quantized grid paths are limited to a limited number of simple paths, thereby enabling to fully exploit the advantages of grid quantization over scalar quantization to improve the coding efficiency.
The video encoder may quantize the current element using the selected quantizer, and may then encode the quantized element for the encoded block into a bitstream of video. On the decoder side or encoder side, when reconstructing a block for prediction purposes, the dequantization process may determine the quantization state of each quantized element in the block using the method described above, and then determine the quantizer. The determined quantizer may be used to dequantize elements, which may then be used to reconstruct blocks of video for display (at a decoder) or prediction of other blocks or images (at an encoder and decoder). The techniques presented in this disclosure may be an efficient codec tool in a variety of video codec standards.
Referring now to the drawings, FIG. 1 illustrates a block diagram of an example of a video encoder 100 configured to implement embodiments presented herein. In the example shown in fig. 1, video encoder 100 includes a partitioning module 112, a transform module 114, a quantization module 115, an inverse quantization module 118, an inverse transform module 119, an in-loop filter module 120, an intra-prediction module 126, an inter-prediction module 124, a motion estimation module 122, a decoded image buffer 130, and an entropy encoding module 116.
The input to the video encoder 100 is an input video 102 that contains a sequence of images (also referred to as frames or pictures). In a block-based video encoder, for each image, video encoder 100 employs a partitioning module 112 to partition the image into blocks 104, and each block contains a plurality of pixels. The block may be a macroblock, a coding tree unit, a coding unit, a prediction unit, and/or a prediction block. One image may include blocks of different sizes, and the block division of different images of the video may also be different. Different pictures may encode each block using different predictions (e.g., intra prediction or inter prediction or a hybrid of intra and inter prediction).
Typically, the first image of the video signal is an intra-coded image, which is coded using only intra-prediction. The intra prediction mode predicts a block of an image using only data encoded from the same image. Decoding intra-coded pictures can be done without information from other pictures. To perform intra prediction, the video encoder 100 shown in fig. 1 may employ an intra prediction module 126. The intra-prediction module 126 is configured to generate an intra-prediction block (prediction block 134) using reconstructed samples in reconstructed neighboring blocks 136 in the same image. Intra prediction is performed according to an intra prediction mode selected for a block. Then, the video encoder 100 calculates a difference between the original image block 104 and the intra prediction block 134. This difference is referred to as residual block 106.
To further remove redundancy from the block, the residual block 106 is transformed into the transform domain by a transform module 114 by applying a transform to the samples in the block. Examples of transforms may include, but are not limited to, discrete cosine transforms (discrete cosine transform, DCT) or discrete sine transforms (discrete sine transform, DST). The transformed values may be referred to as transform coefficients representing a residual block in the transform domain. In some examples, the residual block may be directly quantized without being transformed by the transform module 114. This is referred to as a transform skip mode.
The video encoder 100 may further quantize the transform coefficients using a quantization module 115 to obtain quantized coefficients. Quantization involves dividing the samples by a quantization step followed by rounding, while inverse quantization involves multiplying the quantized value by the quantization step. This quantization process is known as scalar quantization. Quantization is used to reduce the dynamic range of video samples (transformed or untransformed) in order to use fewer bits to render the video samples.
Quantization of intra coefficients/samples can be done independently and this quantization method is used in some existing video compression standards, such as h.264 and HEVC. For an nxm block, some scan order may be used to convert the 2D coefficients of the block into a 1-D array for coefficient quantization and encoding. Quantization of the intra-block coefficients may utilize scan order information. For example, the quantization of a given coefficient in a block may depend on the state of previously quantized values along the scan order. To further increase the codec efficiency, more than one quantizer may be used. Which quantizer is used to quantize the current coefficient depends on the codec information preceding the current coefficient along the scan order. This quantization method is called correlation quantization.
Quantization step sizes may be used to adjust the quantization levels. For example, for scalar quantization, different quantization steps may be applied to achieve finer or coarser quantization. A smaller quantization step corresponds to finer quantization, while a larger quantization step corresponds to coarser quantization. The quantization step size may be indicated by a quantization parameter (quantization parameter, QP). Quantization parameters are provided in the encoded bitstream of video so that the video decoder can access and apply the quantization parameters for decoding.
The quantized samples are then encoded by entropy encoding module 116 to further reduce the size of the video signal. The entropy encoding module 116 is configured to apply an entropy encoding algorithm to the quantized samples. In some examples, the quantized samples are binarized into binary codes (bins), and the encoding algorithm further compresses the binary codes into bits. Examples of binarization methods include, but are not limited to, combined Truncated Rice (TR) and finite k-th order exponential Golomb (k-th order Exp-Golomb, EGk) binarization, and k-th order exponential Golomb binarization. Examples of entropy encoding algorithms include, but are not limited to, variable length coding (variable length coding, VLC) schemes, context adaptive VLC schemes (context adaptive VLC scheme, CAVLC), arithmetic coding schemes, binarization, context adaptive binary arithmetic coding (context adaptive binary arithmetic coding, CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), probability interval partitioning entropy (probability interval partitioning entropy, PIPE) coding, or other entropy coding techniques. The entropy encoded data is then added to the encoded video 132 output bitstream.
As described above, reconstructed blocks 136 from neighboring blocks are used in intra prediction of a block of an image. The process of generating the reconstructed block 136 of a block involves calculating the reconstructed residual of the block. The reconstructed residual may be determined by applying inverse quantization and inverse transform to the quantized residual of the block. The inverse quantization module 118 is configured to apply inverse quantization to the quantized samples to obtain dequantized coefficients. The inverse quantization module 118 applies a scheme inverse to the quantization scheme applied by the quantization module 115 by using the same quantization step size as the quantization module 115. The inverse transform module 119 is configured to apply an inverse transform of the transform applied by the transform module 114 to the dequantized samples, such as an inverse DCT or an inverse DST. The output of inverse transform module 119 is the reconstructed residual of the block in the pixel domain. The reconstructed residual may be added to a prediction block 134 of the block to obtain a reconstructed block 136 in the pixel domain. For blocks that skip transforms, the inverse transform module 119 is not applied to those blocks. The dequantized samples are the reconstructed residuals of the block.
Blocks in subsequent pictures to the first intra-predicted picture may be encoded using inter-prediction or intra-prediction. In inter prediction, the prediction of a block in an image is from one or more previously encoded video images. The video encoder 100 uses the inter prediction module 124 to perform inter prediction. The inter prediction module 124 is configured to perform motion compensation on the block based on the motion estimation provided by the motion estimation module 122.
The motion estimation module 122 compares the current block 104 of the current image with the decoded reference image 108 for motion estimation. The decoded reference picture 108 is stored in a decoded picture buffer 130. The motion estimation module 122 selects a reference block from the decoded reference pictures 108 that best matches the current block. The motion estimation module 122 further identifies an offset between the location of the reference block (e.g., x, y coordinates) and the location of the current block. This offset is referred to as a Motion Vector (MV) and is provided to the inter prediction module 124 along with the selected reference block. In some cases, a plurality of reference blocks are identified for the current block in the plurality of decoded reference pictures 108. Accordingly, a plurality of motion vectors are generated and provided to the inter prediction module 124 along with the corresponding reference blocks.
The inter prediction module 124 performs motion compensation using the motion vector and other inter prediction parameters to generate a prediction of the current block (i.e., the inter prediction block 134). For example, based on the motion vectors, the inter prediction module 124 may locate the prediction block pointed to by the motion vector in the corresponding reference picture. If there is more than one prediction block, these prediction blocks are combined with some weights to generate the prediction block 134 for the current block.
For inter-predicted blocks, video encoder 100 may subtract inter-predicted block 134 from block 104 to generate residual block 106. The residual block 106 may be transformed, quantized, and entropy encoded in the same manner as the residual of the intra-predicted block discussed above. Likewise, a reconstructed block 136 of the inter predicted block may be obtained by inverse quantizing, inverse transforming the residual and then combining with the corresponding predicted block 134.
To obtain the decoded image 108 for motion estimation, the reconstructed block 136 is processed by the in-loop filter module 120. The in-loop filter module 120 is configured to smooth pixel transitions, thereby improving video quality. In-loop filter module 120 may be configured to implement one or more in-loop filters, such as deblocking filters, or sample-adaptive offset (SAO) filters, or adaptive loop filters (adaptive loop filter, ALF), or the like.
Fig. 2 depicts an example of a video decoder 200 configured to implement embodiments presented in the present disclosure. The video decoder 200 processes the encoded video 202 in the bitstream and generates decoded pictures 208. In the example shown in fig. 2, video decoder 200 includes entropy decoding module 216, inverse quantization module 218, inverse transform module 219, intra filter module 220, intra prediction module 226, inter prediction module 224, and decoded image buffer 230.
The entropy decoding module 216 is configured to entropy decode the encoded video 202. The entropy decoding module 216 decodes quantized coefficients, encoding parameters including intra-prediction parameters and inter-prediction parameters, and other information. In some examples, entropy decoding module 216 decodes the bitstream of encoded video 202 into a binary representation and then converts the binary representation into quantization levels of the coefficients. The entropy decoded coefficient levels are then inverse quantized by an inverse quantization module 218 and the inverse quantized coefficients are then inverse transformed to the pixel domain by an inverse transform module 219. The inverse quantization module 218 and the inverse transform module 219 function similarly to the inverse quantization module 118 and the inverse transform module 119, respectively, described above with respect to fig. 1. The inverse transformed residual block may be added to the corresponding prediction block 234 to generate a reconstructed block 236. For blocks that skip transforms, the inverse transform module 219 is not applied to those blocks. The dequantized samples generated by the dequantization module 118 are used to generate the reconstructed block 236.
A prediction block 234 of a particular block is generated based on the prediction mode of the block. If the encoding parameters of the block indicate that the block is intra-predicted, a reconstructed block 236 of a reference block in the same image may be fed into the intra-prediction module 226 to generate a predicted block 234 of the block. If the encoding parameters of the block indicate that the block is inter predicted, a prediction block 234 is generated by the inter prediction module 224. The intra-prediction module 226 and the inter-prediction module 224 function similarly to the intra-prediction module 126 and the inter-prediction module 124, respectively, of fig. 1.
As discussed above in fig. 1, inter prediction involves one or more reference pictures. The video decoder 200 generates a decoded image 208 of the reference image by applying an in-loop filter module 220 to the reconstructed block of the reference image. The decoded image 208 is stored in a decoded image buffer 230 for use by the inter prediction module 224 and also for output.
Referring now to fig. 3, fig. 3 depicts an example of coding tree unit partitioning of images in video according to some embodiments of the present disclosure. As discussed above in fig. 1 and 2, to encode an image of a video, the image is divided into blocks, for example, coding Tree Units (CTUs) 302 in VVC as shown in fig. 3. For example, CTU 302 may be a 128 x 128 pixel block. CTUs are processed according to an order such as the order shown in fig. 3. In some examples, as shown in fig. 4, each CTU 302 in an image may be partitioned into one or more Coding Units (CUs) 402, which may be used for prediction and transformation. CTU 302 may be partitioned into CUs 402 in different ways depending on the coding scheme. For example, in VVC, CU 402 may be rectangular or square, and may be encoded without being further divided into prediction units or transform units. Each CU 402 may be as large as its root CTU 302 or as small as 4 x 4 blocks into which the CTU 302 root block is subdivided. As shown in fig. 4, dividing CTU 302 into CUs 402 in VVC may be a quadtree split or a binary tree split or a trigeminal tree split. In fig. 4, the solid line represents a quadtree segmentation and the broken line represents a binary tree segmentation.
Correlation quantization
As discussed above with respect to fig. 1 and 2, quantization is used to reduce the dynamic range of elements of blocks (including transform blocks and transform skip blocks in a video signal) so that fewer bits are used to render the video signal. In some examples, the elements at the locations of the block are referred to as coefficients prior to quantization. After quantization, the quantized values of the coefficients are referred to as quantization levels or stages. Quantization typically consists of a step of dividing by a quantization step size and subsequent rounding, while inverse quantization consists of a step of multiplying by the quantization step size. This quantization process is also known as scalar quantization. Quantization of intra-block coefficients may be performed independently and such independent quantization methods are used in some existing video compression standards, e.g., h.264, HEVC, etc. In other examples, correlation quantization is employed, for example in VVC.
For an nxm block, some scan order may be used to convert the 2-D coefficients of the block into a 1-D array for coefficient quantization and encoding and decoding, and the same scan order is used for encoding and decoding. Fig. 5 shows an example of a coded block with a predetermined scanning order for processing coefficients of the coded block. In this example, the encoding block 500 has a size of 8×8, and processes the lower right corner L from the position 0 Beginning and at the upper left corner L 63 And (5) ending. If block 500 is a transformed block, the predetermined sequence shown in FIG. 5 begins at the highest frequency and ends at the lowest frequency. In some examples, processing (e.g., quantization) of the block begins with a first non-zero element of the block according to a predetermined scan order. For example, if position L 0 -L 17 The coefficients at all are zero, and L 18 Where the coefficients are non-zero, then the quantization is performed from L 18 Beginning with coefficients at and for L in scan order 18 Each coefficient thereafter is quantized. In the related quantization, quantization of the intra-block coefficients may use scan order information. For example, it may depend on the state of the previous quantization level along the scan order.
In addition, in order to further improve coding efficiency, more than one quantizer (e.g., two quantizers) is used in the associated quantization. For example, quantization methods using two quantizers and a lattice structure have been developed, such as lattice coded quantization (trellis coded quantization, TCQ) and correlated quantization (dependent quantization, DQ) in VVC. In general, when using grid-based quantization, the input signal may be quantized by different quantizers. The use of a specific quantizer for the current signal depends on the quantization result before the current signal and is controlled by and thus encoded by the paths constituting the trellis structure. When the quantization result of the current signal satisfies a predetermined condition, paths in the mesh quantization are allocated to quantizes a quantizer for quantizing a next signal. When quantizing the next signal, there are typically multiple paths leading to different quantizers. A Viterbi-like algorithm may be used to select the particular trellis path that provides the smallest rate distortion measure between the input and quantized output of the entire sequence. The collective effect of grid quantization typically results in better overall performance of the signal sequence than if only one scalar quantizer were used.
Fig. 6 shows an example of correlation quantization, in which two quantizers, Q0 and Q1, are used. The quantization step size delta is determined by a quantization factor embedded in the bitstream. Ideally, the quantizer used to quantize the current coefficient can be specified explicitly. However, the signal overhead for specifying the quantizer may reduce the codec efficiency. A possible alternative is to use a grid structure instead of explicit signaling, i.e. the quantizer of the current coefficient can be determined and derived from the information of the quantization level of the previous coefficient. For example, a grid structure with a four state model may be used, and the parity of the quantization levels of the previous coefficients may be used to guide the grid path and control state transitions to ultimately decide which quantizer will be used to quantize the current coefficient.
Table 1 state transition diagram for correlation quantization
Switching between the two scalar quantizers (Q0 and Q1) is achieved by a state machine with four states. Table 1 shows an example of a state transition diagram. The state of the coefficients may be one of four different values: 0. 1, 2 and 3. The state of the current coefficient may be unique by the parity of the quantization level immediately preceding the current coefficient in the encoding/decoding scan order Is determined. At the beginning of quantization on the encoding side or inverse quantization on the decoding side of a block, the state is set to a default value, e.g., 0. The coefficients are quantized or dequantized in a predetermined scan order (i.e., in the same order in which they are entropy decoded). After one coefficient is quantized or dequantized, the process moves to the next coefficient according to the scan order. The next coefficient becomes the new current coefficient and the just processed coefficient becomes the previous coefficient. Determining the state of the new current coefficient according to Table 1 i Wherein k is i-1 Representing the value of the quantization level of the previous coefficient. The index i indicates the position of the coefficients or quantization levels along the scan order. It should be noted that in this example, the state depends only on the state of the previous coefficient i-1 And the level k of the previous coefficient at position i-1 i-1 Parity (k) i-1 &1). The status update procedure may be formulated as
Status of i =stateTransTable [ State ] i-1 ][k i-1 &1] (1)
Wherein stateTransTable represents the table shown in Table 1, operator & specifies the bitwise AND operator in the two's complement algorithm. Alternatively, the state transitions may be specified without a look-up table, as follows:
status of i =(32040>>((State) i-1 <<2)+((k i-1 &1)<<1)))&3 (2)
Wherein a 16-bit value 32040 specifies the state transition diagram. The state uniquely determines the scalar quantizer used. In one example, if the state of the current coefficient is equal to 0 or 1, a scalar quantizer Q0 shown in fig. 6 is used. Otherwise (state equal to 2 or 3), scalar quantizer Q1 shown in fig. 6 is used.
The correlation quantization depicted by fig. 6 and table 1 can be extended to a more general form as shown in fig. 7, where subset a and subset B are disjoint subsets and include all the stages generated using quantizer Q0, and subset C and subset D are disjoint subsets and include all the stages generated using quantizer Q1. The stage generated using quantizer Q0 may belong to either subset a or subset B, but not both. Similarly, the stage generated using quantizer Q1 may belong to either subset C or subset D, but not both. For example, subset a may include all odd quantized values generated using quantizer Q0 and subset B may include all even quantized values generated using quantizer Q0. Similarly, subset C may include all odd quantized values generated using quantizer Q1 and subset B may include all even quantized values generated using quantizer Q1. The quantized values generated using the quantizer Q0 or Q1 may also be divided into two subsets in other ways.
In grid-based quantization, the quantization level controls the state transition, and the quantizer for the current coefficient is adjusted by the quantization level of the previous coefficient. Typically, there are two subsets of quantization levels at either Q0 or Q1. If the probability of the quantization level falling into one subset is stronger than the other subset, the overall quantization quality of the signal sequence may not be optimal. For example, when Q0 is used, two consecutive quantization levels of any input signal in the sequence may always have one level from subset a and another level from subset B, or when Q1 is used, two consecutive quantization levels of any input signal in the sequence come from one level of subset C and another level from subset D. In this case, the system has the best opportunity to select a trellis path that can provide better overall quantization quality for the entire sequence than if only one scalar quantizer were used. This is shown in FIG. 8, where C n To C n+8 Any input coefficient in between always has 8 possible paths from Q0 and Q1 onwards to the next coefficient. A mesh path representing the minimum of the predefined cost measurements is selected among all possible mesh paths, which is shown in fig. 8 as path 802. Such paths may be identified by calculating a cost measurement after quantization of each stage and identifying the next path that minimizes the cost measurement to the cost measurement determined by the current stage.
Depending on the definition of the subsets, sometimes even the best quantization level from one subset of Q0 or Q1 may still be much lower than the level from the other subset of the same quantizer. For example, if subset B and subset D are each defined to have only one particular level (e.g., a level equal to 1),the remaining stages in Q0 or Q1 are placed in subset a or subset C, respectively. This configuration works well in grid quantization when the input signal has small values. However, when the input signal is large and its corresponding quantization level is much greater than 1, the unique level 1 in subset B or subset D will typically generate a large quantization distortion, and thus a significantly larger Rate Distortion (RD) cost measure, than when using a level from the other subset (i.e., subset a or subset C). Thus, in this case, subset B of Q0 or subset D of Q1 is unlikely to contribute a trellis path segment to the final best trellis path selected for the sequence of input signals. In other words, the state transition caused by the previous stage falling in either subset B or subset D is rare, and the state transition is mainly dominated by the previous stage falling in either subset a or subset C. FIG. 9A shows a grid quantization example, wherein for C n+2 To C n+8 The best stage from subset a or subset C generates a much smaller RD cost measure than the RD cost measure from any stage in subset D of subset B or D1 of Q0. Thus, the best mesh path will be selected from the four paths (paths 902-908). The dashed lines in FIG. 9A represent paths generated by subset B or subset D that have significantly larger RD cost measurements relative to the RD cost measurements of paths 902-908. As a method of simplifying and accelerating the process of selecting a mesh path having the smallest RD cost measurement, the dotted path in fig. 9A may be omitted as shown in fig. 9B.
Fig. 9A and 9B have fewer possible Q0 and Q1 combinations for selecting the best path between cn+2 to cn+8 with minimal RD cost measurements than fig. 8. In addition, the four paths reserved in fig. 9A and 9B are simple paths: one using only a scalar quantizer Q0, one using a scalar quantizer Q1, and the other two simply alternating between Q0 and Q1. Thus, in this example, the advantages of grid quantization over scalar quantization are significantly diminished.
To avoid the quantizer that always uses the same pattern in the grid quantization to select a continuous signal, a method using a two-state transition diagram may be utilized. First, a first state is created by exchanging control signals for each state in the original state transition diagram And (5) a two-state transition diagram. As an example, the second state transition diagram shown in fig. 10 may be created with respect to the original state transition diagram shown in fig. 7. In FIG. 7, when the previous quantization level k i-1 From subset A or subset B, respectively, state S 0 Will proceed to state S 0 Or state S 2 . However, in FIG. 10, when the previous quantization level k i-1 From subset A or subset B, respectively, state S 0 Will proceed to state S 2 Or state S 0 . The other states in fig. 7 and 10 have similar relationships. The second map may be used to replace the first map in the process of trellis quantizing the sequence of input signals. For example, the use of two graphs may be described in terms of a repeating pattern of n+m. Where N represents the number of consecutive signals quantized with the first state transition diagram followed by M consecutive signals quantized with the second state transition diagram. The scheme of changing the state transition diagram is not limited to the above-described n+m mode. Note that the same pattern as that used in the quantization process is also used for the inverse quantization process, which can be achieved by encoding the actual N and M used and adding the encoded N and M to the bitstream. In this way, the decoder can extract the values of N and M from the bitstream to perform inverse quantization using the same n+m mode.
In one embodiment, the second state transition diagram shown in FIG. 10 is used as a complement to the first state transition diagram shown in FIG. 7. In other words, most state transitions are still performed by following the first graph, and the second graph is used to "break" the long quantization path, where the same quantizer is used for multiple consecutive signals. FIG. 11 shows when both graphs are at C n+1 The new state of fig. 9A is then transitioned with the fixed patterns n=2 and m=1 alternating. As shown, the second diagram shown in FIG. 10 is at C only n+3 And C n+6 For use in state transitions of (c), the remaining state transitions still follow the original graph shown in fig. 7. As can be seen from fig. 11, the two long paths in fig. 9A and 9B are no longer present in fig. 11.
In another embodiment, the second state transition diagram shown in fig. 10 alternates with the first state transition diagram shown in fig. 7, such that the two diagrams are used on average. FIG. 12 showsWhen two diagrams are at C n The new state of fig. 9 is then transitioned with n=2 and m=2 alternating. In this example, each graph is only for two consecutive signals at a time. As shown in fig. 12, the switching of the state transition diagram occurs at C n+2 、C n+4 And C n+6 Where it is located. At C n 、C n+1 、C n+4 、C n+5 And C n+8 The original graph shown in FIG. 7 is used in the state transition at C n+2 、C n+3 、C n+6 And C n+7 The second diagram shown in fig. 10 is used for the state transition at this point. The two long paths in fig. 9 are no longer present in fig. 12.
It is to be noted that although the first state transition diagram described above is the diagram shown in fig. 7, and the second state transition diagram is the diagram shown in fig. 10, other arrangements may be employed. For example, the graph shown in fig. 10 or other graph may be used as the first state transition graph, and the graph shown in fig. 7 or other graph may be used as the second state transition graph. The repeated alternating n+m mode of the dual state transition diagram may begin with any element of the block. Before using the two-state transition diagram, one of the state transition diagrams may be used as described above for correlation quantization. For example, the repeated alternating n+m pattern may be applied to a certain set of elements within a block (from the start element to the end element) or all elements in the block that need to be quantized. It is possible to indicate whether the alternating pattern applies to all elements or a group of elements by including a flag signal in the bitstream of the video at the slice level, the picture level, or the sequence level. If the alternating pattern is applied to a set of elements, then the start and end elements may also be indicated using flags in the bitstream of video at the slice, picture, or sequence level. In this way, blocks in a stripe, image or sequence may apply an alternating pattern in the same manner. Similarly, the repeated alternating n+m mode may also be applied to a particular image by starting after the particular image and ending at another particular image. A flag signal in the bitstream of the video may be used to indicate a start image and an end image. In other examples, the alternating pattern applies to an entire sequence in a group of pictures (GOP). One or more flag signals in the bitstream may be used to indicate whether the alternating pattern applies to the entire sequence or a portion of the sequence in the GOP.
Fig. 13 depicts an example of a process 1300 of encoding blocks of video via grid quantization with a dual state transition diagram, according to some embodiments of the present disclosure. One or more computing devices (e.g., a computing device implementing video encoder 100) implement the operations depicted in fig. 13 by executing appropriate program code (e.g., program code implementing quantization module 115). For purposes of illustration, the process 1300 is described with reference to some examples depicted in the drawings. However, other implementations are possible.
At block 1302, process 1300 involves accessing an encoded block (or block) of a video signal. The block may be a portion of an image of the input video, such as the encoding unit 402 discussed in fig. 4, or any type of block that is processed as a unit by the video encoder when quantization is performed.
At block 1304, which includes processes 1306-1312, process 1300 involves processing each element in the block according to a predetermined scan order of the block (e.g., the scan order shown in FIG. 5) to generate quantized elements. The element of the encoded block may be a residual after inter or intra prediction. The element may be a transform coefficient of the residual in the frequency domain or a value of the residual in the pixel domain.
At block 1306, the process 1300 involves retrieving the current element according to the scan order. If no element has been quantized for the current block, the current element will be the first element in the block according to the scan order. As discussed above in fig. 5, in some cases, the video encoder performs quantization starting from the first non-zero element in the block according to the scan order. In these cases, the current element will be the first non-zero element in the block. If there is already a quantized element in the block, the current element will be the element following the last processed element in the scan order.
At block 1308, process 1300 involves determining a current state of the current element based on the state of the element prior to the current element and the state transition diagram. As described in detail with respect to fig. 10-12, a state transition diagram may be selected from two alternative state transition diagrams. In some examples, the two state transition diagrams include the state transition diagram shown in fig. 7 and the state transition diagram shown in fig. 10. The current state transition diagram may start with a first state transition diagram and then select from the two state transition diagrams such that the first state transition diagram is for N consecutive elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive elements before switching back to the first state transition diagram. Where M and N are integer values, and M may be equal to N or less than N.
In one embodiment, the state transition diagram shown in fig. 7 is a first state transition diagram and the state transition diagram shown in fig. 10 is a second state transition diagram. If the current element is the first element in the block, a default state (e.g., state 0) may be set. If the current element is the second element in the block, the first state transition diagram may be used with the quantized value of the first element to determine the state. For example, according to the state transition diagram shown in FIG. 7, if the quantized value of the first element belongs to subset A and the state of the first element is S 0 The current state of the current element is state S 0 . The state of any subsequent element of the block may be determined by the state transition diagram in a similar manner, except that the state transition diagram is switched to the second state transition diagram after the first state transition diagram is used for N consecutive elements and the state transition diagram is switched back to the first state transition diagram after the second state transition diagram is used for M consecutive elements.
At block 1310, process 1300 involves determining a quantizer of the current element based on the state of the current element according to a mapping between states and quantizers. For example, if the state transition diagrams in FIGS. 7 and 10 are used to determine the current state of the current element, then if the current state is S 0 Or S 1 The quantizer may be determined to be Q0 if the current state is S 2 Or S 3 The quantizer may be determined as Q1. At block 1312, process 1300 involves quantizing the current element using the determined quantizer to generate a quantized element. At block 1314, process 1300 involves encoding quantized elements (quantization levels) of the block to include bits in the videoIn the stream. The encoding may include entropy encoding as discussed above in fig. 1.
Fig. 14 depicts an example of a process 1400 for reconstructing blocks of video via grid dequantization with a dual state transition diagram, according to some embodiments of the present disclosure. One or more computing devices implement the operations depicted in fig. 14 by executing suitable program code. For example, a computing device implementing the video encoder 100 may implement the operations depicted in fig. 14 by executing program code of the inverse quantization module 118. The computing device implementing the video decoder 200 may implement the operations depicted in fig. 14 by executing program code of the inverse quantization module 218. For purposes of illustration, the process 1400 is described with reference to some examples depicted in the figures. However, other implementations are possible.
At block 1402, process 1400 involves accessing quantized elements (quantization levels) of a coded block of a video signal. The block may be a portion of an image of the input video, such as the encoding unit 402 discussed in fig. 4, or any type of block that is processed as a unit by a video encoder or decoder when performing dequantization. For an encoder, quantized elements may be obtained by quantizing elements of a block. For a decoder, quantized elements may be obtained by performing entropy decoding on a binary string parsed from an encoded bitstream of video.
At block 1404 (including 1406-1412), process 1400 involves processing each quantized element of the block according to a predetermined scan order of the block (e.g., the scan order shown in FIG. 5) to generate dequantized elements. At block 1406, the process 1400 involves retrieving the currently quantized element according to a scan order. If no quantized elements in the current block have been dequantized, the current quantized element will be the first quantized element of the block according to the scan order. As discussed above in fig. 5, in some cases, the video encoder performs quantization starting from the first non-zero element in the block according to the scan order. In these cases, the first quantized element will be the first non-zero quantization level in the block. If there are already dequantized elements in the block, the current quantized element will be the quantization level after the last dequantized element in the scan order.
At block 1408, process 1400 involves determining a current state of the current quantized element based on the state transition diagram and the state of the quantized element prior to the current element. As described in detail in fig. 10-12, a state transition diagram may be selected from two alternative state transition diagrams. In some examples, the two state transition diagrams include the state transition diagram shown in fig. 7 and the state transition diagram shown in fig. 10. The state transition diagram may start with a first state transition diagram and then select from the two state transition diagrams such that the first state transition diagram is for N consecutive elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive elements before switching to the first state transition diagram. Where M and N are integer values, and M may be equal to N or less than N. In some examples, the values of M and N may be encoded in the bitstream of the video and transmitted to the decoder side.
In one embodiment, the state transition diagram shown in fig. 7 is a first state transition diagram and the state transition diagram shown in fig. 10 is a second state transition diagram. If the current quantized element is the first element in the block, a default state (e.g., state 0) may be set. If the current quantized element is the second element in the block, the first state transition diagram may be used with the quantized value of the first element to determine the state. For example, according to the state transition diagram shown in FIG. 7, if the quantized value of the first element belongs to subset A and the state of the first element is S 0 The current state of the current element is state S 0 . The states of any subsequently quantized elements of a block may be similarly determined, except that the state transition diagram is switched to the second state transition diagram after the first state transition diagram is used for N successively quantized elements and the state transition diagram is switched back to the first state transition diagram after the second state transition diagram is used for M successively quantized elements.
At block 1410, process 1400 involves determining a quantizer of a current quantized element based on a current state of the current element according to a mapping between states and quantizers. For example, if the state transition diagrams in FIGS. 7 and 10 are used to determine the currently quantized element Current state, if the current state is S 0 Or S 1 The quantizer may be determined as Q0, and if the current state is S2 or S3, the quantizer may be determined as Q1. At block 1412, process 1400 involves dequantizing the current quantized element using the determined quantizer to generate a dequantized element. At block 1414, process 1400 involves reconstructing the block in the pixel domain based on the elements of the dequantized block. The reconstruction may include an inverse transformation as discussed above with respect to fig. 1 and 2. As described above with respect to fig. 1 and 2, the reconstructed block may also be used to perform intra or inter prediction on other blocks or images in video by an encoder or decoder. The reconstructed block may be further processed to generate a decoded block, which is for display at the decoder side with other decoded blocks in the image.
It should be noted that state transition diagrams other than those shown in fig. 7 and 10 may be used during encoding and decoding of video. Furthermore, although in the above description, the related quantization is applied to video codec, the same technique may be applied to image codec. For example, as described above, when an image is compressed, the image may be divided into blocks, and the elements (transformed or not) of each block may be quantized. As described above, the decompression of the image may be performed by dequantizing the elements in each block.
Computing system examples for implementing related quantization of video codecs
Any suitable computing system may be used to perform the operations described in this disclosure. For example, fig. 15 depicts an example of a computing device 1500 that may implement video encoder 100 of fig. 1 or video decoder 200 of fig. 2. In some embodiments, the computing device 1500 may include a processor 1512, a memory 1514 coupled in data communication with the processor 1512, and execute computer-executable program code and/or access information stored in the memory 1514. The processor 1512 may include a microprocessor, application-specific integrated circuit (ASIC), state machine, or other processing device. The processor 1512 may include any number of processing devices (including one processing device). Such processors may include, or may be in data communication with, a computer-readable medium storing instructions that, when executed by the processor 1512, cause the processor to perform the operations described in the present disclosure.
Memory 1514 may include any suitable non-transitory computer-readable media. The computer readable medium may include any electronic, optical, magnetic, or other storage device that can provide computer readable instructions or other program code to a processor. Non-limiting examples of computer readable media include magnetic disks, memory chips, ROM, RAM, ASIC, configured processors, optical memory, magnetic tape or other magnetic memory, or any other medium from which a computer processor may read instructions. The instructions may include processor-specific instructions generated by a compiler and/or interpreter from code written in any suitable computer programming language including, for example, C, C ++, c#, visual Basic, java, python, perl, javaScript, and ActionScript.
Computing device 1500 may also include a bus 1516. Bus 1516 may enable data communication connections between one or more components of computing device 1500. Computing device 1500 may also include a number of external or internal devices, such as input or output devices. For example, computing device 1500 is shown having an input/output ("I/O") interface 1518, which interface 1518 may receive input from one or more input devices 1520 or provide output to one or more output devices 1522. One or more input devices 1520 and one or more output devices 1522 may be coupled by way of data communication to the I/O interface 1518. The data communication coupling may be achieved by any suitable means (e.g., connection through a printed circuit board, connection through a cable, communication through wireless transmission, etc.). Non-limiting examples of input devices 1520 include a touch screen (e.g., one or more cameras for imaging touch areas or pressure sensors for detecting pressure changes caused by touches), a mouse, a keyboard, or any other device that may be used to generate input events in response to physical actions of a user of a computing device. Non-limiting examples of output devices 1522 include an LCD screen, an external monitor, speakers, or any other device that may be used to display or otherwise present output generated by a computing device.
Computing device 1500 may execute program code that configures processor 1512 to perform one or more operations described above in fig. 1-14. The program code may include the video encoder 100 or the video decoder 200. The program code may reside in the memory 1514 or any suitable computer readable medium and may be executed by the processor 1512 or any other suitable processor.
Computing device 1500 may also include at least one network interface device 1524. The network interface device 1524 may comprise any device or group of devices suitable for establishing a wired or wireless data connection to one or more data networks 1528. Non-limiting examples of the network interface device 1524 include an ethernet network adapter, a modem, and the like. The computing device 1500 may transmit messages in the form of electrical or optical signals through the network interface device 1524.
General precautions
Numerous details are set forth herein to provide a thorough understanding of the claimed subject matter. However, it will be understood by those skilled in the art that the claimed subject matter may be practiced without these details. In other instances, methods, devices, or systems known by those of ordinary skill have not been described in detail so as not to obscure the claimed subject matter.
Unless specifically stated otherwise, it is appreciated that throughout the description, discussions utilizing terms such as "processing," "computing," "calculating," "determining," and "identifying," or the like, refer to the action and processes of a computing device, such as one or more computers or one or more similar electronic computing devices, that manipulate or transform actual electromagnetic data represented within the computing device's memory, registers, or other information storage device, transmission device, or display device.
The one or more systems discussed in this disclosure are not limited to any particular hardware architecture or configuration. A computing device may include components in any suitable arrangement to generate an output result in the case of one or more inputs. Suitable computing devices include multipurpose microprocessor-based computer systems that access stored software that programs or configures a computing system from a general-purpose computing device to a special-purpose computing device that implements one or more embodiments of the present subject matter. Any suitable programming, scripting, or other type of language or combination of languages may be used to implement the teachings contained herein in software that is used when programming or configuring a computing device.
Embodiments of the methods of the present disclosure may be performed in the operation of such a computing device. The order of the blocks presented in the above examples may be varied-e.g., blocks may be reordered, combined, and/or broken into sub-blocks. Some blocks or processes may be performed in parallel.
The use of "adapted" or "configured" herein means open and inclusive language that does not exclude apparatuses adapted or configured to perform additional tasks or steps. Furthermore, the use of "based on" is intended to mean open and inclusive in that a process, step, calculation, or other action "based on" one or more of the recited conditions or values may in practice be based on additional conditions or values other than the recited conditions or values. Headings, lists, and numbers included in this disclosure are for ease of explanation only and are not meant as limitations.
While the present subject matter has been described in detail with respect to specific embodiments thereof, it will be appreciated that those skilled in the art, upon attaining an understanding of the foregoing, may readily produce alterations to, variations of, and equivalents to such embodiments. Accordingly, it should be understood that the present disclosure has been presented for purposes of example and not limitation, and does not preclude inclusion of such modifications, variations and/or additions to the present subject matter as would be readily apparent to one of ordinary skill in the art.
Claims (40)
1. A method for reconstructing a block of video, the method comprising:
processing a plurality of quantized elements within the block in accordance with a sequence to generate respective dequantized elements corresponding to the plurality of quantized elements, the processing comprising:
obtaining quantized elements within the block from the plurality of quantized elements;
determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained quantized element based on the state of the obtained quantized element; and
dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element; and
the block is reconstructed based on the respective dequantized elements corresponding to the plurality of quantized elements.
2. The method of claim 1, wherein the plurality of quantized elements within the block comprise quantized pixels of the block or quantized transform coefficients of the block.
3. The method of claim 1, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern in which the first state transition diagram is for N consecutive quantized elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive quantized elements before switching to the first state transition diagram, wherein M and N are integer values.
4. A method according to claim 3, wherein the values of M and N are encoded in the bitstream of the video.
5. A method according to claim 3, wherein the alternating pattern is applied to a sequence of images of the video comprising images or to a part of the sequence of images comprising the images, the images comprising the blocks.
6. A method according to claim 3, wherein M < N or M = N.
7. A method according to claim 3, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0, …, 3 denotes the element preceding the current quantized element and the possible state of said current quantized element, and k i-1 A value representing an element preceding the current quantized element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
8. A non-transitory computer readable medium having stored therein program code executable by one or more processing devices to perform operations comprising:
processing a plurality of quantized elements within a block of video in accordance with a sequence to generate respective dequantized elements corresponding to the plurality of quantized elements, the processing comprising:
obtaining quantized elements within the block from the plurality of quantized elements;
determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained quantized element based on the current state of the obtained quantized element; and
dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element; and
The block is reconstructed based on the respective dequantized elements corresponding to the plurality of quantized elements.
9. The non-transitory computer-readable medium of claim 8, wherein the plurality of quantized elements within the block comprise quantized pixels of the block or quantized transform coefficients of the block.
10. The non-transitory computer-readable medium of claim 8, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern in which the first state transition diagram is for N consecutive quantized elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive quantized elements before switching to the first state transition diagram, wherein M and N are integer values.
11. The non-transitory computer readable medium of claim 10, wherein the values of M and N are encoded in a bitstream of the video.
12. The non-transitory computer-readable medium of claim 10, wherein the alternating pattern is applied to a sequence of images of the video comprising images or a portion of the sequence of images comprising the images, the images comprising the blocks.
13. The non-transitory computer-readable medium of claim 10, wherein M < N or M = N.
14. The non-transitory computer-readable medium of claim 10, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0, …, 3 denotes the element preceding the current quantized element and the possible state of said current quantized element, and k i-1 A value representing an element preceding the current quantized element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
15. A system, comprising:
a processing device; and
a non-transitory computer readable medium connected in data communication and exchange with the processing device, wherein the processing device is configured to execute program code stored in the non-transitory computer readable medium to:
processing a plurality of quantized elements within a block of video in accordance with a sequence to generate respective dequantized elements corresponding to the plurality of quantized elements, the processing comprising:
obtaining quantized elements within the block from the plurality of quantized elements;
Determining a state for quantization of the obtained quantized element based on a state for quantization of the quantized element preceding the obtained quantized element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained quantized element based on the current state of the obtained quantized element; and
dequantizing the obtained quantized element using the quantizer to generate a dequantized element corresponding to the obtained quantized element; and
the block is reconstructed based on the respective dequantized elements corresponding to the plurality of quantized elements.
16. The system of claim 15, wherein the plurality of quantized elements within the block comprise quantized pixels of the block or quantized transform coefficients of the block.
17. The system of claim 15, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern, wherein in the alternating pattern, the first state transition diagram is for N consecutive quantized elements before switching to the second state transition diagram, and the second state transition diagram is for M consecutive quantized elements before switching to the first state transition diagram, wherein M and N are integer values, and M < N or M = N.
18. The system of claim 17, wherein the values of M and N are encoded in a bitstream of the video.
19. The system of claim 17, wherein the alternating pattern is applied to a sequence of images of the video comprising images or a portion of the sequence of images comprising the images, the images comprising the blocks.
20. The system of claim 17, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0, …, 3 denotes the element preceding the current quantized element and the possible state of said current quantized element, and k i-1 A value representing an element preceding the current quantized element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
21. A method for encoding a block of video, the method comprising:
processing a plurality of elements of a block of the video in accordance with a sequence to generate respective quantized elements corresponding to the plurality of elements, the processing comprising:
obtaining an element of the block from the plurality of elements;
Determining a state for quantization of the obtained element based on a state for quantization of an element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained element based on a current state of the obtained element; and
quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element; and
the respective quantized elements corresponding to the plurality of elements are encoded into a bitstream of the video.
22. The method of claim 21, wherein the plurality of elements of the block comprise pixels of the block or transform coefficients of the block.
23. The method of claim 21, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern in which the first state transition diagram is for N consecutive elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive elements before switching to the first state transition diagram, wherein M and N are integer values.
24. The method of claim 23, further comprising:
the values of M and N are encoded into the bit stream of the video.
25. The method of claim 23, wherein the alternating pattern is applied to a sequence of images of the video comprising images or to a portion of the sequence of images comprising the images, the images comprising the blocks.
26. The method of claim 23, wherein m+.n.
27. The method of claim 23, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0, …, 3 denotes the element preceding the current element and the possible state of the current element, and k i-1 A value representing a quantization of the element preceding the current element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
28. A non-transitory computer readable medium having stored therein program code executable by one or more processing devices to perform operations comprising:
processing a plurality of elements of a block of video in accordance with a sequence to generate respective quantized elements corresponding to the plurality of elements, the processing comprising:
Obtaining an element of the block from the plurality of elements;
determining a state for quantization of the obtained element based on a state for quantization of an element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained element based on a current state of the obtained element; and
quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element; and
the respective quantized elements corresponding to the plurality of elements are encoded into a bitstream of the video.
29. The non-transitory computer-readable medium of claim 28, wherein the element associated with the block comprises a pixel of the block or a transform coefficient of the block.
30. The non-transitory computer-readable medium of claim 28, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern in which the first state transition diagram is for N consecutive elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive elements before switching to the first state transition diagram, wherein M and N are integer values.
31. The non-transitory computer-readable medium of claim 30, wherein the operations further comprise:
the values of M and N are encoded into the bit stream of the video.
32. The non-transitory computer-readable medium of claim 30, wherein M < N or M = N.
33. The non-transitory computer-readable medium of claim 30, wherein the alternating pattern is applied to a sequence of images of the video comprising images or a portion of the sequence of images comprising the images, the images comprising the blocks.
34. The non-transitory computer-readable medium of claim 30, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0,..3 represents the element preceding the current element and the possible state of said current element, and k i-1 A value representing a quantization of the element preceding the current element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
35. A system, comprising:
a processing device; and
a non-transitory computer readable medium connected in data communication and exchange with the processing device, wherein the processing device is configured to execute program code stored in the non-transitory computer readable medium to:
Processing a plurality of elements of a block of video in accordance with a sequence to generate respective quantized elements corresponding to the plurality of elements, the processing comprising:
obtaining an element of the block from the plurality of elements;
determining a state for quantization of the obtained element based on a state for quantization of an element preceding the obtained element and a state transition diagram selected from a first state transition diagram and a second state transition diagram, wherein the first state transition diagram is different from the second state transition diagram;
determining a quantizer of the obtained element based on a current state of the obtained element; and
quantizing the obtained element using the quantizer to generate a quantized element corresponding to the obtained element; and
the respective quantized elements corresponding to the plurality of elements are encoded into a bitstream of the video.
36. The system of claim 35, wherein the plurality of elements of the block comprise pixels of the block or transform coefficients of the block.
37. The system of claim 35, wherein the state transition diagram is selected from the first state transition diagram and the second state transition diagram according to an alternating pattern in which the first state transition diagram is for N consecutive elements before switching to the second state transition diagram and the second state transition diagram is for M consecutive elements before switching to the first state transition diagram, where M and N are integer values and m+.n.
38. The system of claim 37, wherein the operations further comprise:
the values of M and N are encoded into the bit stream of the video.
39. The system of claim 37, wherein the alternating pattern is applied to a sequence of images of the video comprising images or a portion of the sequence of images comprising the images, the images comprising the blocks.
40. The system of claim 37, wherein the first state transition diagram comprises:
and the second state transition diagram includes:
wherein S is i I=0, …, 3 denotes an element preceding a current element and the possibility of the current elementEnergy state, and k i-1 A value representing a quantization of the element preceding the current element; the subset a and the subset B are subsets of quantized values generated by the first quantizer; the subset C and the subset D are subsets of quantized values generated by the second quantizer.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163170040P | 2021-04-02 | 2021-04-02 | |
US63/170,040 | 2021-04-02 | ||
PCT/US2022/071502 WO2022213122A1 (en) | 2021-04-02 | 2022-04-01 | State transition for trellis quantization in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116998150A true CN116998150A (en) | 2023-11-03 |
Family
ID=83459941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280019630.6A Pending CN116998150A (en) | 2021-04-02 | 2022-04-01 | State transition for grid quantization in video coding and decoding |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116998150A (en) |
WO (1) | WO2022213122A1 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7580584B2 (en) * | 2003-07-18 | 2009-08-25 | Microsoft Corporation | Adaptive multiple quantization |
CN101107862B (en) * | 2005-03-14 | 2010-05-26 | 松下电器产业株式会社 | Encoding device and dynamic image recording system having the encoding device |
EP2661893B1 (en) * | 2011-01-04 | 2020-11-25 | BlackBerry Limited | Coding of residual data in predictive compression |
US11451840B2 (en) * | 2018-06-18 | 2022-09-20 | Qualcomm Incorporated | Trellis coded quantization coefficient coding |
-
2022
- 2022-04-01 CN CN202280019630.6A patent/CN116998150A/en active Pending
- 2022-04-01 WO PCT/US2022/071502 patent/WO2022213122A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022213122A1 (en) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9888249B2 (en) | Devices and methods for sample adaptive offset coding and/or selection of edge offset parameters | |
KR101947658B1 (en) | Method and apparatus for decoding image | |
WO2012134204A2 (en) | In-loop filtering method and apparatus for same | |
EP4246975A1 (en) | Video decoding method and apparatus, video coding method and apparatus, and device | |
JP2020537468A (en) | Spatial variation conversion for video coding | |
KR20130045151A (en) | Method and apparatus for generating reconstruction block | |
JP2024045346A (en) | Loop filtering method and device | |
JP2023169288A (en) | Encoder, decoder, and corresponding method of deblocking filter adaptation | |
JP2024534816A (en) | Expanded operating range for versatile video coding | |
WO2023028555A1 (en) | Independent history-based rice parameter derivations for video coding | |
CN116982262A (en) | State transition for dependent quantization in video coding | |
CN115086664A (en) | Decoding method, encoding method, decoder and encoder for unmatched pixels | |
CN116998150A (en) | State transition for grid quantization in video coding and decoding | |
CN116965028A (en) | Residual level binarization for video coding | |
WO2022217245A1 (en) | Remaining level binarization for video coding | |
CN117981323A (en) | Video encoding using alternative neural network-based encoding tools | |
KR20240137567A (en) | Generic Constraint Information Signaling for Video Coding | |
CN117981306A (en) | Independent history-based rice parameter derivation for video coding | |
CN118216153A (en) | Initialization process for video coding | |
JP2022548685A (en) | Encoding and decoding image data | |
CN118020294A (en) | History-based RICE parameter derivation for video coding | |
CN117837148A (en) | History-based rice coding parameter derivation for video coding | |
CN117837144A (en) | Operating range extension for multi-function video coding | |
WO2023212684A1 (en) | Subblock coding inference in video coding | |
CN118369922A (en) | Signaling generic constraint information for video coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240410 Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18 Applicant after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd. Country or region after: China Address before: 2479 Bay East Road, Palo Alto, California, USA, Room 110 Applicant before: Chuangfeng Technology Country or region before: U.S.A. |
|
TA01 | Transfer of patent application right |