Encoding method, decoding method and related apparatus

By combining VLC coding and arithmetic coding, quantization coefficients and control information are encoded separately, solving the problem of high encoding and decoding complexity in existing technologies and improving coding efficiency and speed.

CN122457771APending Publication Date: 2026-07-24HUAWEI TECH CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
HUAWEI TECH CO LTD
Filing Date
2025-07-10
Publication Date
2026-07-24

AI Technical Summary

Technical Problem

Existing encoding and decoding technologies are highly complex and difficult to reduce effectively.

Method used

A combination of VLC coding and arithmetic coding is used to encode quantization coefficients and control information separately. Taking advantage of the fast encoding and decoding speed of VLC coding and the high compression ratio of arithmetic coding, different syntax elements are encoded through VLC entropy coding and arithmetic coding, thereby reducing the encoding and decoding complexity.

Benefits of technology

It improves encoding efficiency, reduces encoding and decoding complexity, and increases encoding and decoding speed.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122457771A_ABST
    Figure CN122457771A_ABST
Patent Text Reader

Abstract

The application provides an encoding method, a decoding method and related devices, the method comprising: obtaining to-be-encoded data of an original image, the to-be-encoded data comprising quantization coefficients and control information; and obtaining an image code stream of the original image based on the to-be-encoded data. The image code stream comprises arithmetic encoding data and VLC encoding data. The arithmetic encoding data comprises quantization coefficients less than a first value and control information, and is obtained by using an arithmetic encoding mode for entropy encoding. The VLC encoding data comprises quantization coefficients greater than or equal to the first value, and is obtained by using a VLC entropy encoding mode for entropy encoding. The control information is used for decoding the image code stream. In the application, the characteristics of the VLC entropy encoding mode and the arithmetic encoding mode are combined to effectively reduce the encoding and decoding complexity.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims priority to Chinese Patent Application No. 202510122970.7, filed on January 24, 2025, entitled "Encoding Method, Decoding Method and Related Apparatus", the entire contents of which are incorporated herein by reference. Technical Field

[0003] This application relates to the field of image processing, and in particular to an encoding method, a decoding method, and related apparatus. Background Technology

[0004] Digital video capabilities can be applied to a wide variety of digital video devices, including digital television, digital live broadcasting systems, wireless broadcasting systems, personal digital assistants (PDAs), laptops or desktop computers, tablet computers, e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio phones (i.e., "smartphones"), video conferencing devices, video streaming devices, and the like. Digital video devices implement video compression technologies, such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4 Part 10 Advanced Video Coding (AVC), the H.265 / HEVC video coding standard, and extensions to such standards. By implementing such video compression technologies, digital video devices can transmit, receive, encode, decode, and / or store digital video information more efficiently.

[0005] Current encoding and decoding technologies suffer from high complexity. Summary of the Invention

[0006] This application provides an encoding method, a decoding method, and related apparatus to reduce encoding and decoding complexity.

[0007] Firstly, this application provides an encoding method, comprising: acquiring data to be encoded from an original image, the data to be encoded including quantization coefficients and control information; and acquiring an image bitstream of the original image based on the data to be encoded. The image bitstream includes arithmetic-coded data and variable-length coded (VLC) encoded data. The arithmetic-coded data includes entropy-encoded data obtained by entropy encoding of quantization coefficients less than a first value and control information using arithmetic encoding. The VLC-encoded data includes entropy-encoded data obtained by entropy encoding of quantization coefficients greater than or equal to the first value using VLC entropy encoding. The control information is used to decode the image bitstream. Thus, this application uses VLC encoding for some syntax elements and arithmetic encoding for others in the data to be encoded, allowing the decoding end to decode the VLC-encoded data and arithmetic-encoded data separately based on VLC decoding and arithmetic encoding to obtain the quantization coefficients and control information of the data to be encoded, thereby reducing the complexity of encoding and decoding. Furthermore, this application combines the fast encoding and decoding speed of VLC encoding with the high compression ratio of arithmetic encoding on the encoding side, achieving a better balance between compression ratio and complexity. Among them, the arithmetic coding method includes the CABAC coding method.

[0008] For example, the first value can be set according to actual needs.

[0009] For example, control information is used to decode an image bitstream, where "decoding" includes entropy decoding and at least one processing step following entropy decoding. In one example, the encoding / decoding architecture may include a prediction unit for performing prediction processing. The control information may include mode information indicating the prediction mode. In another example, the encoding architecture may include a block partitioning unit for performing block partitioning processing. The control information may include information indicating the block partitioning method. In yet another example, the control information may be used to obtain complete quantization coefficients during entropy decoding.

[0010] For example, VLC entropy coding can also be CAVLC entropy coding.

[0011] In one possible implementation, obtaining the data to be encoded from the original image includes: dividing the original image into sub-images to obtain N sub-images, where N is an integer greater than 1; quantizing the N sub-images to obtain quantization coefficients; wherein the quantization coefficients include the quantization coefficient of each of the N sub-images; and obtaining control information based on each of the N sub-images and at least one of the quantization coefficients of the sub-images. Thus, the encoding / decoding method in this application can be applied to an architecture including a sub-image partitioning unit to encode the quantization coefficients and control information of each sub-image separately, thereby reducing encoding / decoding complexity and improving encoding / decoding speed.

[0012] In one possible implementation, the image bitstream includes arithmetic-coded data and VLC-coded data for each of the N sub-images. This allows for independent encoding of each sub-image at the encoding end, improving encoding speed. Furthermore, employing both arithmetic and VLC encoding for each sub-image effectively enhances encoding efficiency.

[0013] In one possible implementation, the image bitstream also includes offset information, which indicates the positions of the arithmetic-coded data and the VLC-coded data within the image bitstream. Thus, the decoding side, based on the offset information, obtains the arithmetic-coded data and VLC-coded data and performs pipelined parallel decoding to improve decoding speed.

[0014] In one possible implementation, obtaining the data to be encoded from the original image includes: performing a wavelet transform on the original image to obtain wavelet coefficients for the low-frequency sub-band; quantizing the wavelet coefficients of the low-frequency sub-band to obtain quantization coefficients for the low-frequency sub-band; and obtaining control information based on at least one of the wavelet coefficients and quantization coefficients of the low-frequency sub-band. Thus, the encoding / decoding method of this application can be applied to a wavelet transform architecture to encode and decode the quantization coefficients and control information of the low-frequency sub-band, obtaining corresponding arithmetic-coded data and VLC-coded data, thereby reducing encoding / decoding complexity and improving encoding speed.

[0015] In one possible implementation, the arithmetic-coded data includes quantization coefficients less than a first value and control information in the low-frequency subband, encoded using arithmetic entropy coding; the VLC-coded data includes quantization coefficients greater than or equal to the first value in the low-frequency subband, encoded using VLC entropy coding. Thus, different syntax elements (including quantization coefficients and control information) are encoded using VLC entropy coding and arithmetic coding in the coding segment to obtain corresponding VLC-coded data and arithmetic-coded data, thereby reducing the coding complexity on the coding side. Furthermore, at the decoding end, it can be decoded using the corresponding entropy decoding method to obtain the syntax elements.

[0016] Secondly, this application provides a decoding method, comprising: acquiring an image bitstream of an original image, the image bitstream including arithmetic encoded data and variable-length encoded (VLC) data; wherein: the arithmetic encoded data includes quantization coefficients of the original image that are less than a first value and control information, and entropy encoding is performed using arithmetic encoding to obtain encoded data; the VLC encoded data includes quantization coefficients of the original image that are greater than or equal to the first value, and entropy encoding is performed using VLC entropy encoding to obtain encoded data; acquiring control information based on the arithmetic encoded data; acquiring the quantization coefficients of the original image based on the control information, the arithmetic encoded data and the VLC encoded data; and acquiring a reconstructed image of the original image based on the quantization coefficients.

[0017] In one possible implementation, the quantization coefficients include the quantization coefficients of each of the N sub-images of the original image.

[0018] In one possible implementation, the image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-images. For example, at the decoding end, the encoded data for each sub-image can be decoded independently.

[0019] In one possible implementation, the image bitstream also includes offset information, which indicates the position of the arithmetic encoded data and the VLC encoded data in the image bitstream.

[0020] In one possible implementation, the image bitstream includes high-frequency subband coded data and low-frequency subband coded data, the low-frequency subband coded data including arithmetic coded data and VLC coded data; before obtaining the reconstructed image of the original image based on the quantization coefficients, the method further includes: obtaining the quantization coefficients of the high-frequency subband based on the high-frequency subband coded data; obtaining the quantization coefficients of the original image based on control information, arithmetic coded data, and VLC coded data includes: obtaining the quantization coefficients of the low-frequency subband based on control information, arithmetic coded data, and VLC coded data; obtaining the reconstructed image of the original image based on the quantization coefficients includes: obtaining the reconstruction coefficients of the high-frequency subband and the low-frequency subband based on the quantization coefficients of the high-frequency subband and the low-frequency subband; performing an inverse wavelet transform on the reconstruction coefficients of the high-frequency subband and the low-frequency subband to obtain the reconstructed image of the original image.

[0021] Thirdly, this application provides an encoder, characterized in that it includes: an encoding module for acquiring data to be encoded of an original image, the data to be encoded including quantization coefficients and control information; the encoding module is further configured to acquire an image bitstream of the original image based on the data to be encoded; wherein the image bitstream includes arithmetic encoded data and variable-length encoded (VLC) data, the arithmetic encoded data including quantization coefficients less than a first value and control information, entropy encoded using arithmetic encoding; the VLC encoded data including quantization coefficients greater than or equal to the first value, entropy encoded using VLC entropy encoding, and the control information is used to decode the image bitstream.

[0022] In one possible implementation, the encoding module includes: a sub-image partitioning unit for partitioning the original image into N sub-images, where N is an integer greater than 1; a quantization unit for quantizing the N sub-images to obtain quantization coefficients, wherein the quantization coefficients include the quantization coefficient of each of the N sub-images; and a control unit for acquiring control information based on each of the N sub-images and at least one of the quantization coefficients of the sub-images.

[0023] In one possible implementation, the image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-graphs.

[0024] In one possible implementation, the image bitstream also includes offset information, which indicates the position of the arithmetic encoded data and the VLC encoded data in the image bitstream.

[0025] In one possible implementation, the encoding module includes: a wavelet transform unit for performing wavelet transform on the original image to obtain wavelet coefficients of the low-frequency sub-band; a quantization unit for quantizing the wavelet coefficients of the low-frequency sub-band to obtain quantization coefficients of the low-frequency sub-band; the quantization coefficients correspond to the quantization coefficients of the low-frequency sub-band; and a control unit for acquiring control information based on at least one of the wavelet coefficients and the quantization coefficients of the low-frequency sub-band.

[0026] In one possible implementation, the arithmetic-coded data includes quantization coefficients less than a first value and control information in the quantization coefficients of the low-frequency subband, and is encoded data obtained by entropy coding using arithmetic coding; the VLC-coded data includes quantization coefficients greater than or equal to the first value in the quantization coefficients of the low-frequency subband, and is encoded data obtained by entropy coding using VLC entropy coding.

[0027] Fourthly, this application provides a decoder, comprising: a decoding module for acquiring an image bitstream of an original image, the image bitstream including arithmetic-coded data and variable-length coded (VLC) data; wherein the arithmetic-coded data includes coded data obtained by entropy coding using arithmetic coding for quantization coefficients of the original image that are less than a first value and control information; the VLC-coded data includes coded data obtained by entropy coding using VLC entropy coding for quantization coefficients that are greater than or equal to the first value; the decoding module is further configured to acquire control information based on the arithmetic-coded data; the decoding module is further configured to acquire quantization coefficients of the original image based on the control information, the arithmetic-coded data, and the VLC-coded data; and the decoding module is further configured to acquire a reconstructed image of the original image based on the quantization coefficients and the control information.

[0028] In one possible implementation, the quantization coefficients include the quantization coefficients of each of the N sub-images of the original image.

[0029] In one possible implementation, the image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-graphs.

[0030] In one possible implementation, the image bitstream also includes offset information, which indicates the position of the arithmetic encoded data and the VLC encoded data in the image bitstream.

[0031] In one possible implementation, the image bitstream includes high-frequency subband coded data and low-frequency subband coded data, the low-frequency subband coded data including arithmetic coded data and VLC coded data; the decoding module is further configured to: obtain the quantization coefficients of the high-frequency subband based on the high-frequency subband coded data; obtain the quantization coefficients of the low-frequency subband based on control information, arithmetic coded data, and VLC coded data; obtain the reconstruction coefficients of the high-frequency subband and the low-frequency subband based on the quantization coefficients of the high-frequency subband and the low-frequency subband; and perform inverse wavelet transform on the reconstruction coefficients of the high-frequency subband and the low-frequency subband to obtain the reconstructed image of the original image.

[0032] Fifthly, this application provides an encoder, including: a memory and a processor, the memory being coupled to the processor; the memory storing program instructions, which, when executed by the processor, cause the encoder to perform the method in the first aspect or any possible implementation thereof.

[0033] In a sixth aspect, this application provides a decoder, comprising: a memory and a processor, the memory being coupled to the processor; the memory storing program instructions, which, when executed by the processor, cause the decoder to perform the method in the second aspect or any possible implementation thereof.

[0034] In a seventh aspect, this application provides a chip including one or more interface circuits and one or more processors; the one or more processors receive or transmit data through the one or more interface circuits, and when the one or more processors execute computer instructions, cause the electronic device to perform the method in the first aspect or any possible implementation of the first aspect.

[0035] Eighthly, this application provides a chip including one or more interface circuits and one or more processors; the one or more processors receive or transmit data through the one or more interface circuits, and when the one or more processors execute computer instructions, cause the electronic device to perform the method in the second aspect or any possible implementation of the second aspect.

[0036] Ninthly, this application provides a computer-readable storage medium storing a computer program that, when run on a computer or processor, causes the computer or processor to perform the method of the first aspect or any possible implementation thereof.

[0037] In a tenth aspect, this application provides a computer-readable storage medium storing a computer program that, when run on a computer or processor, causes the computer or processor to perform the method of the second aspect or any possible implementation thereof.

[0038] In one aspect, this application provides a computer program product, which includes computer instructions that, when executed by a computer or processor, cause the computer or processor to perform the method in the first aspect or any possible implementation thereof.

[0039] In a twelfth aspect, this application provides a computer program product including computer instructions that, when executed by a computer or processor, cause the computer or processor to perform the method in the second aspect or any possible implementation thereof.

[0040] In a thirteenth aspect, this application provides a computer-readable storage medium that stores a bitstream from the third aspect or any possible implementation thereof.

[0041] In a fourteenth aspect, this application provides an encoder including processing circuitry that can be used to perform the methods in the second aspect or any possible implementation thereof.

[0042] In a fifteenth aspect, this application provides a decoder including processing circuitry that can be used to perform the methods in the first aspect or any possible implementation thereof.

[0043] In a sixteenth aspect, this application provides a bitstream generated according to the first aspect and any implementation thereof.

[0044] In this embodiment, the electronic device, computer-readable storage medium, computer program product, chip, or codec are all used to execute the corresponding methods provided above. Therefore, the beneficial effects that can be achieved can be referred to the beneficial effects in the corresponding methods provided above. Attached Figure Description

[0045] Figure 1A This is a schematic block diagram illustrating an exemplary video encoding and decoding system;

[0046] Figure 1B This is a schematic block diagram illustrating an exemplary video decoding system;

[0047] Figure 2 A schematic block diagram of an encoder as an example is shown;

[0048] Figure 3 A schematic block diagram of a decoder as an example;

[0049] Figure 4 This is a schematic diagram of the structure of a video decoding device as an example.

[0050] Figure 5 This is a schematic diagram of the structure of an exemplary device;

[0051] Figure 6A A flowchart illustrating an exemplary encoding method;

[0052] Figure 6B This is a flowchart illustrating an exemplary decoding method;

[0053] Figure 7A A schematic block diagram of a wavelet transform-based encoder is shown as an example.

[0054] Figure 7B A schematic block diagram of a wavelet transform-based decoder is shown as an example.

[0055] Figures 8A-8B A schematic block diagram of an encoder as an example is shown;

[0056] Figure 9A This is an example of a subgraph partitioning diagram;

[0057] Figure 9B This is an example of a subgraph partitioning diagram;

[0058] Figure 10 This is an example of a wavelet transform schematic diagram;

[0059] Figures 11A-11B A schematic block diagram of a decoder as an example;

[0060] Figure 12 A schematic block diagram of an encoder as an example is shown;

[0061] Figure 13 This is a schematic diagram illustrating the structure of an image bitstream as an example.

[0062] Figures 14A-14B This is a schematic diagram illustrating the structure of an image bitstream as an example.

[0063] Figure 15 This is a schematic diagram illustrating the structure of an image bitstream as an example.

[0064] Figure 16 A schematic block diagram of a decoder as an example;

[0065] Figure 17 A schematic block diagram of a decoder as an example;

[0066] Figure 18 This is a schematic diagram of the structure of an encoding device as an example.

[0067] Figure 19 This is a schematic diagram of the structure of an exemplary decoding device;

[0068] Figure 20 This is a schematic diagram of the structure of an exemplary device. Detailed Implementation

[0069] The embodiments of this application are described below with reference to the accompanying drawings. In the following description, reference is made to the accompanying drawings, which form part of this application and illustrate specific aspects of the embodiments of this application or to which specific aspects of the embodiments of this application may be used. It should be understood that the embodiments of this application may be used in other aspects and may include structural or logical variations not depicted in the drawings. Therefore, the following detailed description should not be construed in a limiting sense, and the scope of this application is defined by the appended claims. For example, it should be understood that the disclosure of the described methods is equally applicable to corresponding devices or systems for performing the methods, and vice versa. For example, if one or more specific method steps are described, the corresponding device may include one or more units, such as functional units, to perform the described one or more method steps (e.g., one unit performs one or more steps, or multiple units, each performing one or more of multiple steps), even if such one or more units are not explicitly described or illustrated in the drawings. On the other hand, for example, if a specific apparatus is described based on one or more units such as functional units, the corresponding method may include a step to perform the functionality of one or more units (e.g., a step to perform the functionality of one or more units, or multiple steps, each of which performs the functionality of one or more units among a plurality of units), even if such one or more steps are not explicitly described or illustrated in the accompanying drawings. Furthermore, it should be understood that, unless otherwise expressly stated, features of the various exemplary embodiments and / or aspects described herein can be combined with each other.

[0070] In the embodiments of this application, the modules / components shown in the framework diagram (or structural diagram or system diagram) are merely examples of this application. The actual framework (or structure or system) may include more or fewer modules / components than those shown in the diagram, or may have different component configurations. Furthermore, the various components / modules shown in the diagrams may be implemented in hardware, software, or a combination of hardware and software, including one or more signal processing and / or application-specific integrated circuits.

[0071] The terminology used in the implementation section of this application is for the purpose of explaining specific embodiments of this application only, and is not intended to limit this application.

[0072] The following is a brief introduction to some concepts that may be involved in the embodiments of this application. These concepts are only used to explain the specific embodiments of this application and are not intended to limit this application.

[0073] The residual is the difference between the reconstructed value and the predicted value of a sample or data element.

[0074] A residual block is an M×N residual matrix composed of the residuals corresponding to the coded blocks.

[0075] Dequantization is the process of scaling the quantized residual to obtain the reconstructed residual value.

[0076] A partition divides a set into subsets. Each element in the set belongs to one and only one subset.

[0077] Partition type: The way the subsets obtained from the partition are organized.

[0078] A decoded picture is an image reconstructed by the decoder based on the bitstream.

[0079] Prediction is the specific implementation of the prediction process.

[0080] The prediction process uses previously decoded samples to obtain the predicted value for the current sample.

[0081] Syntax element: The result of parsing data units in a bitstream.

[0082] A bitstream is a binary data stream that encodes all or part of an image sample.

[0083] Video coding generally refers to the processing of a sequence of images that form a video or video sequence. In the field of video coding, the terms "picture," "frame," or "image" can be used synonymously. Video coding is performed on the source side and typically involves processing (e.g., by compression) the raw video images to reduce the amount of data required to represent them, thus enabling more efficient storage and / or transmission. Video decoding is performed on the destination side and typically involves inverse processing relative to the encoder to reconstruct the video images. The combination of encoding and decoding is also known as encoding and decoding.

[0084] A video sequence consists of a series of pictures, which are further divided into slices, and slices into blocks. Video coding is performed on a block-by-block basis. In some newer video coding standards, the concept of a block has been further expanded. For example, the H.264 standard uses macroblocks (MBs), which can be further divided into multiple prediction blocks (partitions) for predictive coding. The High Efficiency Video Coding (HEVC) standard uses basic concepts such as coding units (CUs), prediction units (PUs), and transform units (TUs) to functionally divide various block units, and employs a novel tree-based structure for description. For instance, a CU can be divided into smaller CUs using a quadtree, and these smaller CUs can be further divided, forming a quadtree structure. The CU is the basic unit for partitioning and encoding the image. Similar tree structures exist for PUs and TUs. A PU corresponds to a prediction block and is the basic unit for predictive coding. CUs are further divided into multiple PUs according to partitioning patterns. TU can correspond to a transform block, which is the basic unit for transforming the prediction residual. However, whether it is CU, PU or TU, they all essentially belong to the concept of a block (or image block).

[0085] For example, in HEVC, the CTU is split into multiple CUs using a quadtree structure. At the CU level, a decision is made on whether to use inter-picture (temporal) or intra-picture (spatial) prediction to encode picture regions. Each CU can be further split into one, two, or four PUs based on the PU splitting type. The same prediction process is applied within a PU, and relevant information is transmitted to the decoder based on the PU. After obtaining residual blocks by applying the prediction process based on the PU splitting type, the CU can be segmented into transform units (TUs) according to other quadtree structures similar to those used for CUs. In the latest developments in video compression technology, quadtree and binary tree (QTBT) is used to segment frames to divide coded blocks. In the QTBT block structure, CUs can be square or rectangular in shape.

[0086] In this paper, for ease of description and understanding, the image block to be processed in the current image is referred to as the current block. For example, in encoding, it refers to the block currently being encoded; in decoding, it refers to the block currently being decoded. The decoded image block in the reference image used to predict the current block is called the reference block. That is, the reference block is the block that provides a reference signal for the current block, where the reference signal represents the pixel value within the image block. The block in the reference image that provides a prediction signal for the current block is called the prediction block, where the prediction signal represents the pixel value, sampled value, or sampled signal within the prediction block. For example, after traversing multiple reference blocks, an optimal reference block is found. This optimal reference block will provide prediction for the current block; this block is called the prediction block.

[0087] In lossless video coding, the original video image can be reconstructed, meaning the reconstructed video image has the same quality as the original (assuming no transmission loss or other data loss during storage or transmission). In lossy video coding, further compression is performed, for example, through quantization, to reduce the amount of data required to represent the video image. However, the decoder cannot fully reconstruct the video image, meaning the quality of the reconstructed video image is lower or worse than the original video image.

[0088] The system architecture used in the embodiments of this application is described below. See also Figure 1A , Figure 1A A schematic block diagram of the video encoding and decoding system 10 used in the embodiments of this application is provided as an example. Figure 1A As shown, the video encoding and decoding system 10 may include a source device 12 and a destination device 14. The source device 12 generates encoded video data; therefore, the source device 12 may be referred to as a video encoding device. The destination device 14 can decode the encoded video data generated by the source device 12; therefore, the destination device 14 may be referred to as a video decoding device. Various embodiments of the source device 12, the destination device 14, or both may include one or more processors and memory coupled to said one or more processors. The memory may include, but is not limited to, RAM, ROM, EEPROM, flash memory, or any other media that can be used to store desired program code in the form of computer-accessible instructions or data structures. The source device 12 and the destination device 14 may include a variety of devices, including desktop computers, mobile computing devices, notebook (e.g., laptop) computers, tablet computers, set-top boxes, handsets, televisions, cameras, display devices, digital media players, video game consoles, in-vehicle computers, wireless communication devices, or the like.

[0089] Source device 12 and destination device 14 can communicate via link 13, through which destination device 14 can receive encoded video data from source device 12. Link 13 may include one or more media or devices capable of transmitting encoded video data from source device 12 to destination device 14. In one example, link 13 may include one or more communication media enabling source device 12 to transmit encoded video data to destination device 14 in real time. In this example, source device 12 may modulate the encoded video data according to a communication standard (e.g., a wireless communication protocol) and transmit the modulated video data to destination device 14. The one or more communication media may include wireless and / or wired communication media, such as radio frequency (RF) spectrum or one or more physical transmission lines. The one or more communication media may form part of a packet-based network, such as a local area network, wide area network, or global network (e.g., the Internet). The one or more communication media may include routers, switches, base stations, or other devices facilitating communication from source device 12 to destination device 14.

[0090] The source device 12 includes an encoder 20. Optionally, the source device 12 may also include an image source 16, an image preprocessor 18, and a communication interface 22. In specific implementations, the encoder 20, image source 16, image preprocessor 18, and communication interface 22 may be hardware components or software programs within the source device 12. These are described below:

[0091] Image source 16 may include or be any type of image capture device for, for example, capturing real-world images, and / or any type of image or commentary (for screen content encoding, some text on the screen is also considered as an image to be encoded or part of an image) generation device, such as a computer graphics processor for generating computer-animated images, or any type of device for acquiring and / or providing real-world images, computer-animated images (e.g., screen content, virtual reality (VR) images), and / or any combination thereof (e.g., augmented reality (AR) images). Image source 16 may be a camera for capturing images or a memory for storing images. Image source 16 may also include any type of (internal or external) interface for storing previously captured or generated images and / or acquiring or receiving images. When image source 16 is a camera, image source 16 may be, for example, a local or integrated camera integrated into a source device; when image source 16 is a memory, image source 16 may be a local or integrated memory integrated into a source device. When the image source 16 includes an interface, the interface may be, for example, an external interface for receiving images from an external video source, such as an external image capture device, like a camera, external storage, or an external image generation device, such as an external computer graphics processor, computer, or server. The interface can be any type of interface according to any proprietary or standardized interface protocol, such as a wired or wireless interface, or an optical interface.

[0092] An image can be viewed as a two-dimensional array or matrix of pixels. Pixels in the array are also called sampling points. The number of sampling points in the array or image along the horizontal and vertical directions (or axes) defines the image's size and / or resolution. To represent color, three color components are typically used; that is, an image can be represented as or contain three sampling arrays. For example, in RBG format or color space, an image includes corresponding red, green, and blue sampling arrays. However, in video coding, each pixel is typically represented in a luma / chroma format or color space. For example, for a YUV format image, this includes a luma component indicated by Y (sometimes also indicated by L) and two chroma components indicated by U and V. The luma component Y represents the brightness or grayscale level intensity (e.g., both are the same in a grayscale image), while the two chroma components U and V represent chroma or color information components. Accordingly, a YUV format image includes a luma sampling array of luma sample values ​​(Y) and two chroma sampling arrays of chroma values ​​(U and V). An RGB format image can be converted or transformed to YUV format, and vice versa; this process is also called color transformation or conversion. If the image is black and white, it may only include a luminance sampling array. In this embodiment, the image transmitted from image source 16 to image processor can also be referred to as raw image data 17.

[0093] Image preprocessor 18 is configured to receive raw image data 17 and perform preprocessing on the raw image data 17 to obtain a preprocessed image 19 or preprocessed image data 19. For example, the preprocessing performed by image preprocessor 18 may include retouching, color format conversion (e.g., from RGB format to YUV format), color correction, or noise reduction.

[0094] Encoder 20 (or video encoder 20) is used to receive preprocessed image data 19 and process the preprocessed image data 19 using a relevant prediction mode (such as the prediction mode in the various embodiments herein) to provide encoded image data 21. In some embodiments, encoder 20 may be used to perform the various embodiments described below to implement the encoding method described herein on the encoding side.

[0095] Communication interface 22 can be used to receive encoded image data 21 and transmit the encoded image data 21 via link 13 to destination device 14 or any other device (such as a memory) for storage or direct reconstruction. The other device can be any device used for decoding or storage. Communication interface 22 can, for example, be used to encapsulate the encoded image data 21 into a suitable format, such as data packets, for transmission over link 13.

[0096] Destination device 14 includes decoder 30. Optionally, destination device 14 may also include communication interface 28, image post-processor 32, and display device 34. These are described below:

[0097] Communication interface 28 can be used to receive encoded image data 21 from source device 12 or any other source, such as a storage device, for example, an encoded image data storage device. Communication interface 28 can be used to transmit or receive encoded image data 21 via link 13 between source device 12 and destination device 14 or via any type of network, such as a wired or wireless connection, any type of network, such as a wired or wireless network or any combination thereof, or any type of private and public network, or any combination thereof. Communication interface 28 can be used, for example, to decapsulate data packets transmitted by communication interface 22 to obtain encoded image data 21.

[0098] Both communication interface 28 and communication interface 22 can be configured as unidirectional or bidirectional communication interfaces, and can be used, for example, to send and receive messages to establish connections, acknowledge and exchange any other information related to the communication link and / or data transmission, such as encoded image data transmission.

[0099] Decoder 30 (or video decoder 30) is used to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (hereinafter further based on...) Figure 3 or Figure 4 or Figure 5 (Description of structural details of decoder 30). In some embodiments, decoder 30 can be used to perform the various embodiments described below to implement the decoding method described in this application on the decoding side.

[0100] Image post-processor 32 is used to perform post-processing on decoded image data 31 (also referred to as reconstructed image data) to obtain post-processed image data 33. The post-processing performed by image post-processor 32 may include: color format conversion (e.g., from YUV format to RGB format), color correction, retouching or resampling, or any other processing, and may also be used to transmit the post-processed image data 33 to display device 34.

[0101] Display device 34 is used to receive post-processed image data 33 to display an image to, for example, a user or viewer. Display device 34 can be or may include any class of displays for presenting reconstructed images, such as integrated or external displays or monitors. For example, displays may include liquid crystal displays (LCDs), organic light emitting diode (OLED) displays, plasma displays, projectors, micro-LED displays, liquid crystal on silicon (LCoS), digital light processors (DLP), or any other class of displays.

[0102] Although, Figure 1A Source device 12 and destination device 14 are illustrated as separate devices, but device embodiments may also include the functionality of both source device 12 and destination device 14, or both; that is, the functionality of source device 12 or its corresponding features and the functionality of destination device 14 or its corresponding features. In such embodiments, the same hardware and / or software, or separate hardware and / or software, or any combination thereof, may be used to implement the functionality of source device 12 or its corresponding features and the functionality of destination device 14 or its corresponding features.

[0103] Both encoder 20 and decoder 30 can be implemented as any of a variety of suitable circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, or any combination thereof. If the technology is implemented in part in software, the device can store the software instructions in a suitable non-transitory computer-readable storage medium, and one or more processors can be used to execute the instructions in hardware to perform the technology of this disclosure. Any of the foregoing (including hardware, software, combinations of hardware and software, etc.) can be considered as one or more processors.

[0104] In some cases, Figure 1A The video encoding and decoding system 10 shown is merely an example, and the technology of this application can be applied to video encoding setups (e.g., video encoding or video decoding) that do not necessarily involve any data communication between the encoding and decoding devices. In other instances, data may be retrieved from local storage, streamed over a network, etc. A video encoding device may encode data and store it in storage, and / or a video decoding device may retrieve data from storage and decode it. In some instances, encoding and decoding are performed by devices that do not communicate with each other but only encode data to storage and / or retrieve data from storage and decode the data.

[0105] See Figure 1B , Figure 1B It is a inclusion according to an exemplary embodiment Figure 2 encoder 20 and / or Figure 3 The illustrated diagram shows an example of a video decoding system 40 with decoder 30. The video decoding system 40 can implement various combinations of technologies from the embodiments of this application. In the illustrated implementation, the video decoding system 40 may include an imaging device 41, an encoder 20, a decoder 30 (and / or a video encoder / decoder implemented by logic circuitry of a processing unit 46), an antenna 42, one or more processors 43, one or more memories 44, and a display device 45.

[0106] like Figure 1B As shown, the imaging device 41, antenna 42, processing unit 46, logic circuit, encoder 20, decoder 30, processor 43, memory 44, and display device 45 are capable of communicating with each other. As discussed, although the video decoding system 40 is described using encoder 20 and decoder 30 as examples, in different instances, the video decoding system 40 may contain only encoder 20 or only decoder 30.

[0107] In some instances, antenna 42 can be used to transmit or receive encoded video data streams. Additionally, in some instances, display device 45 can be used to present video data. In some instances, logic circuitry can be implemented using processing unit 46. Processing unit 46 can include an ASIC, graphics processor, general-purpose processor, etc. Video decoding system 40 can also include an optional processor 43, which can similarly include an ASIC, graphics processor, general-purpose processor, etc. In some instances, logic circuitry can be implemented in hardware, such as dedicated video encoding hardware, while processor 43 can be implemented in general-purpose software, operating system, etc. Furthermore, memory 44 can be any type of memory, such as volatile memory (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.). In a non-limiting instance, memory 44 can be implemented using cache memory. In some instances, logic circuitry can access memory 44 (e.g., for implementing an image buffer). In other instances, the logic circuitry and / or processing unit 46 may include memory (e.g., cache, etc.) for implementing image buffers, etc.

[0108] In some instances, the encoder 20 implemented via logic circuitry may include (e.g., implemented via processing unit 46 or memory 44) an image buffer and (e.g., implemented via processing unit 46) a graphics processing unit. The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the encoder 20 implemented via logic circuitry to implement a reference... Figure 2 And / or any other encoder system or subsystem described herein, and the various modules discussed herein. Logic circuits may be used to perform the various operations discussed herein.

[0109] In some instances, decoder 30 can be implemented via logic circuitry in a similar manner to implement the reference. Figure 3 The decoder 30 and / or any other decoder system or subsystem described herein are various modules discussed. In some instances, the logic circuit-implemented decoder 30 may include an image buffer (implemented via processing unit 46 or memory 44) and a graphics processing unit (e.g., implemented via processing unit 46). The graphics processing unit may be communicatively coupled to the image buffer. The graphics processing unit may include the logic circuit-implemented decoder 30 to implement reference Figure 3 And / or the various modules discussed in any other decoder system or subsystem described herein.

[0110] In some instances, antenna 42 can be used to receive an encoded stream of video data. As discussed herein, the encoded stream may contain data related to encoded video frames, indicators, index values, mode selection data, etc., such as data related to code segmentation (e.g., transform coefficients or quantized transform coefficients, optional indicators, and / or data defining code segmentation). Video decoding system 40 may also include a decoder 30 coupled to antenna 42 for decoding the encoded stream. Display device 45 is used to display the video frames.

[0111] It should be understood that, referring to the examples described for encoder 20 in the embodiments of this application, decoder 30 can be used to perform the reverse process. Regarding signaling syntax elements, decoder 30 can be used to receive and parse such syntax elements, and accordingly decode the associated video data. In some examples, encoder 20 can entropy-encode syntax elements into an encoded video stream. In such instances, decoder 30 can parse such syntax elements and accordingly decode the associated video data.

[0112] It should be noted that the encoding and decoding method described in the embodiments of this application is mainly used for the encoding and decoding process of video or images. This process exists in both the encoder 20 and the decoder 30. The encoder 20 and decoder 30 in the embodiments of this application can be, for example, the encoder / decoder corresponding to video standard protocols such as H.263, H.264, HEVV, MPEG-2, MPEG-4, VP8, VP9, ​​or next-generation video standard protocols (such as H.266).

[0113] See Figure 2 , Figure 2 A schematic / conceptual block diagram illustrating an example of encoder 20. Figure 2 In this example, encoder 20 includes a residual calculation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a buffer 216, a loop filter unit 220, a decoded picture buffer (DPB) 230, a prediction processing unit 260, and an entropy coding unit 270. Prediction processing unit 260 may include inter-frame prediction unit 244, intra-frame prediction unit 254, and mode selection unit 262. Inter-frame prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). Figure 2 The encoder 20 shown can also be called a hybrid video encoder or a video encoder based on a hybrid video codec.

[0114] See Figure 3 , Figure 3This is a schematic / conceptual block diagram illustrating an example instance of decoder 30. Decoder 30 is used to receive encoded image data (e.g., encoded bitstream) 21, for example, encoded by encoder 20, to obtain decoded image 331. During the decoding process, decoder 30 receives video data from encoder 20, such as encoded video bitstreams representing image blocks of encoded video stripes and associated syntax elements.

[0115] exist Figure 3 In one example, decoder 30 includes an entropy decoding unit 304, an inverse quantization unit 310, an inverse transform processing unit 312, a reconstruction unit 314 (e.g., a summer 314), a buffer 316, a loop filter 320, a decoded image buffer 330, and a prediction processing unit 360. Prediction processing unit 360 may include an inter-frame prediction unit 344, an intra-frame prediction unit 354, and a mode selection unit 362. In some instances, decoder 30 may perform substantially the same functions as... Figure 2 The video encoder 20 describes the encoding process as the inverse of the decoding process.

[0116] See Figure 4 , Figure 4 This is a schematic diagram of the structure of a video decoding device 400 (e.g., a video encoding device 400 or a video decoding device 400) provided in an embodiment of this application. The video decoding device 400 is suitable for implementing the embodiments described herein. In one embodiment, the video decoding device 400 may be a video decoder (e.g., ... Figure 1A decoder 30) or video encoder (e.g. Figure 1A The encoder 20). In another embodiment, the video decoding device 400 may be the one described above. Figure 1A decoder 30 or Figure 1A One or more components in encoder 20.

[0117] The video decoding device 400 includes: an input port 410 and a receiving unit (Rx) 420 for receiving data; a processor, logic unit, or central processing unit (CPU) 430 for processing data; a transmitter unit (Tx) 440 and an output port 450 for transmitting data; and a memory 460 for storing data. The video decoding device 400 may also include photoelectric conversion components and electro-optical (EO) components coupled to the input port 410, receiver unit 420, transmitter unit 440, and output port 450 for the input or output of optical or electrical signals.

[0118] Processor 430 is implemented in both hardware and software. Processor 430 can be implemented as one or more CPU chips, cores (e.g., multi-core processors), FPGAs, ASICs, and DSPs. Processor 430 communicates with ingress port 410, receiver unit 420, transmitter unit 440, egress port 450, and memory 460. Processor 430 includes either an encoding module 470 or a decoding module 470. The encoding / decoding module 470 implements the embodiments disclosed herein to implement the encoding or decoding methods provided in the embodiments of this application. For example, the encoding / decoding module 470 implements, processes, or provides various encoding operations. Therefore, the encoding / decoding module 470 provides a substantial improvement to the functionality of the video decoding device 400 and affects the transitions of the video decoding device 400 to different states. Alternatively, the encoding / decoding module 470 can be implemented with instructions stored in memory 460 and executed by processor 430.

[0119] Memory 460 includes one or more disks, tape drives, and solid-state drives, which can be used as overflow data storage devices to store programs while they are selectively executed, and to store instructions and data read during program execution. Memory 460 can be volatile and / or non-volatile, and can be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM), and / or static random access memory (SRAM).

[0120] See Figure 5 , Figure 5 It is available as an exemplary embodiment. Figure 1A A simplified block diagram of device 500 comprising one or both of the source device 12 and the destination device 14. Device 500 can implement the technology of this application. In other words, Figure 5 This is a schematic block diagram illustrating one implementation of an encoding or decoding device (referred to as decoding device 500) according to an embodiment of this application. The decoding device 500 may include a processor 510, a memory 530, and a bus system 550. The processor and memory are connected via the bus system. The memory stores instructions, and the processor executes the instructions stored in the memory. The memory of the decoding device stores program code, and the processor can call the program code stored in the memory to execute various video encoding or decoding methods described in this application. To avoid repetition, further details are omitted here.

[0121] In this embodiment, the processor 510 may be a central processing unit (CPU), or it may be other general-purpose processors, DSPs, ASICs, FPGAs, or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The general-purpose processor may be a microprocessor or any conventional processor.

[0122] The memory 530 may include a read-only memory (ROM) device or a random access memory (RAM) device. Any other suitable type of storage device may also be used as memory 530. Memory 530 may include code and data 531 accessed by processor 510 using bus 550. Memory 530 may further include an operating system 533 and an application program 535, which includes at least one program that allows processor 510 to execute the encoding or decoding methods described in this application. For example, application program 535 may include applications 1 to N, which further include video encoding or decoding applications that execute the encoding or decoding methods described in this application.

[0123] In addition to the data bus, the bus system 550 may also include a power bus, a control bus, and a status signal bus. However, for clarity, all buses are labeled as bus system 550 in the diagram.

[0124] Optionally, the decoding device 500 may also include one or more output devices, such as a display 570. In one example, the display 570 may be a haptic display that combines a display with a haptic unit capable of operatively sensing touch input. The display 570 may be connected to the processor 510 via a bus 550.

[0125] Reference Figure 6A , Figure 6A This is a flowchart illustrating an exemplary encoding method. The method includes, but is not limited to, the following steps:

[0126] S601, acquire the data to be encoded from the original image, which includes quantization coefficients and control information.

[0127] S602, Based on the data to be encoded, obtain the image bitstream of the original image; wherein: the image bitstream includes arithmetic encoded data and VLC encoded data, the arithmetic encoded data includes the encoded data obtained by entropy encoding using arithmetic encoding for quantization coefficients less than a first value and control information; the VLC encoded data includes the encoded data obtained by entropy encoding using VLC entropy encoding for quantization coefficients greater than or equal to the first value; the control information is used to decode the image bitstream.

[0128] In this embodiment, the encoder performs entropy encoding on the control information and quantization coefficients less than a first value using arithmetic encoding to obtain arithmetic encoded data. The arithmetic encoding method includes context adaptive binary arithmetic coding (CABAC).

[0129] The encoder performs entropy encoding on quantization coefficients greater than or equal to the first value using VLC entropy encoding to obtain VLC encoded data. VLC entropy encoding can also be CAVLC entropy encoding.

[0130] Optionally, the first value can be set according to actual needs.

[0131] On the encoding side, control information is used to indicate the encoding mode. Correspondingly, the decoding end can decode the image bitstream based on the control information.

[0132] Optionally, the control information may include, but is not limited to, syntax elements (e.g., sigflag) used to indicate whether a macroblock is all zeros. The syntax elements contained in the control information may be the same or different in different codec architectures.

[0133] Specifically, on the encoding side, the encoder encodes macroblocks (also called blocks to be encoded or code blocks) as the basic encoding unit. The quantization coefficients of a macroblock can be all zeros or not all zeros (i.e., including at least one non-zero value). In this embodiment, the encoder performs entropy encoding on macroblocks with non-all zero quantization coefficients and writes the corresponding encoded data into the image bitstream. For macroblocks with all zero quantization coefficients, they can be left unencoded. The quantization coefficients of a macroblock can be used to determine whether they are all zeros, thereby generating the corresponding sigflag. For example, a sigflag of 0 indicates that the corresponding macroblock has all zero quantization coefficients and is not encoded into the image bitstream. A sigflag of 1 indicates that the corresponding macroblock has non-zero quantization coefficients and its encoded data is written into the image bitstream. Correspondingly, the decoder can obtain the complete quantization coefficients based on the sigflag. In this way, by encoding only part of the quantization coefficients, the total amount of encoded data can be reduced, further improving the throughput between the encoder and decoder.

[0134] Optionally, the control information may also include other information for decoding the image bitstream, such as prediction mode information, to indicate the prediction mode. It should be noted that the "decoding" described in this application includes processing steps such as entropy decoding and inverse quantization.

[0135] Reference Figure 6B , Figure 6BThis is a schematic flowchart illustrating an exemplary decoding method. This application provides a decoding method, which includes, but is not limited to, the following steps:

[0136] S603, acquire the image bitstream of the original image, which includes arithmetic encoded data and VLC encoded data; wherein: the arithmetic encoded data includes the quantization coefficients of the original image that are less than the first value and control information, and the encoded data is obtained by entropy encoding using arithmetic encoding method; the VLC encoded data includes the quantization coefficients that are greater than or equal to the first value, and the encoded data is obtained by entropy encoding using VLC entropy encoding method.

[0137] S604 acquires control information based on arithmetic-coded data.

[0138] S605 obtains quantization coefficients based on control information, arithmetic coding data, and VLC coding data.

[0139] S606, based on the quantization coefficients, obtains the reconstructed image of the original image.

[0140] For example, during the decoding process, the decoder can use arithmetic entropy decoding to perform entropy decoding on the arithmetic encoded data to obtain control information. Entropy decoding is then performed on the encoded data (including arithmetic encoded data and VLC encoded data) corresponding to the quantization coefficients in the bitstream to obtain the quantization coefficients. As described above, in this embodiment, macroblocks with all 0 quantization coefficients may optionally not be encoded into the image bitstream and are represented by sigflag = 0. Accordingly, the decoder can determine, based on the control information, which macroblocks have all 0 quantization coefficients and which macroblocks have non-all 0 quantization coefficients, thereby obtaining the complete quantization coefficients. Of course, this embodiment only uses a syntax element indicating whether the quantization coefficients are all 0 as an example; the control information may also include other syntax elements to help the decoder correctly obtain the quantization coefficients.

[0141] In one example, Figure 6A The encoding methods in [the code] can be applied to Figure 2 In the encoder shown, Figure 6B The decoding method in [the document] can be applied to [the following]. Figure 3 In the decoder architecture shown, the quantization coefficients on the encoding side are... Figure 2 The quantization factor is 209. On the decoding side, the quantization factor is... Figure 3 The quantization coefficient is 309. Control information may include, but is not limited to, […]. Figure 2 and Figure 3 The syntax elements shown are as follows.

[0142] In another example, the encoding and decoding methods in this application embodiment can be applied to a wavelet transform architecture (i.e., an encoding and decoding architecture that uses wavelet transform).

[0143] In another example, the encoding and decoding methods in this application embodiment can be applied to an architecture including subgraph partitioning units. The architecture including subgraph partitioning units can be a wavelet transform architecture, or it can be... Figure 2 The architecture is shown below. The sub-image partitioning unit is used to partition the image to be encoded into N sub-images. The image to be encoded can be the original image or the original image after relevant processing. Correspondingly, the encoder can quantize each of the N sub-images to obtain quantization coefficients. Based on the sub-images and / or the quantization coefficients, the corresponding control information is determined. This application only uses a wavelet transform architecture including sub-image partitioning units as an example for illustration. Implementation methods of other architectures including sub-image partitioning units can refer to the application in the wavelet transform architecture, and this application will not provide detailed examples for each.

[0144] The encoding and decoding methods in the embodiments of this application will be described in detail below, taking into account the wavelet transform architecture:

[0145] For example, commonly used transform methods in image coding include discrete cosine transform and wavelet transform. Wavelet transform is a local transform method that can perform localized, multi-scale analysis of images, focusing on the details of signal changes, making it very suitable for image coding tasks.

[0146] See Figure 7A , Figure 7A This is a schematic / conceptual block diagram illustrating an encoder based on wavelet transform. Figure 7A In the example, encoder 60 includes, but is not limited to, a wavelet forward transform unit 610, a quantization unit 620, and an entropy coding unit 630. Specifically, the encoder acquires the original image 601 through an interface unit (also called an input interface, not shown in the figure). The original image 601 is input to the wavelet forward transform unit 610, and after wavelet transform (also called wavelet forward transform), wavelet transform coefficients 602 are obtained, which can also be simply referred to as wavelet coefficients in this embodiment. The quantization unit 620 quantizes the wavelet transform coefficients 602 to obtain quantization coefficients 603. The entropy coding unit 630 entropy codes the quantization coefficients 603 to obtain the image bitstream 604 of the original image, which can also be called a compressed bitstream or bitstream.

[0147] It should be noted that, Figure 7A The wavelet transform-based encoder architecture shown is for illustrative purposes only, and other examples may include more units or modules. For example, it may include, but is not limited to, prediction units, transform units, etc., and this application does not impose any limitations.

[0148] See Figure 7B , Figure 7B This is a schematic / conceptual block diagram illustrating an exemplary wavelet transform-based decoder. Figure 7B In the example, decoder 70 includes, but is not limited to, entropy decoding unit 710, inverse quantization unit 720, and wavelet inverse transform unit 730. Specifically, at the decoding end, the decoder receives image bitstream 701 through an input interface (also called an interface unit, not shown in the figure). Entropy decoding unit 710 performs entropy decoding on image bitstream 701 to obtain quantization coefficients 702. Here, image bitstream 701 can be based on... Figure 7A The encoder 60 generates a bitstream 604. The dequantization unit 720 dequantizes the quantization coefficients 702 to obtain dequantized coefficients 703 (also known as reconstructed coefficients, wavelet coefficients, etc.). The wavelet inverse transform unit 730 performs an inverse wavelet transform on the dequantized coefficients 703 to obtain the reconstructed image 704.

[0149] It should be noted that, Figure 7B The wavelet transform-based decoder architecture shown is for illustrative purposes only, and other instances may include more units or modules. For example, it may include, but is not limited to, prediction units, etc., and this application does not impose any limitations.

[0150] For example, the wavelet coefficients obtained after wavelet transform include: wavelet coefficients of the high-frequency subband and wavelet coefficients of the low-frequency subband. Figure 7A and Figure 7B In the illustrated architecture, the encoder and decoder perform the same processing on the wavelet coefficients of the high-frequency subband and the low-frequency subband, resulting in high processing complexity. In this embodiment, the wavelet coefficients of the high-frequency subband can be simply referred to as the high-frequency subband, and the wavelet coefficients of the low-frequency subband can be simply referred to as the low-frequency subband. It can be understood that the high-frequency subband obtained after wavelet transform can optionally be a set of wavelet coefficients of the high-frequency subband, and the low-frequency subband obtained after wavelet transform can optionally be a set of wavelet coefficients of the low-frequency subband.

[0151] The higher frequency of the high-frequency sub-band is greater than that of the low-frequency sub-band. This can be understood as the higher frequency of the coefficients of the high-frequency sub-band (such as wavelet coefficients, reconstruction coefficients, inverse quantization coefficients, etc. involved in this application) than that of the coefficients of the low-frequency sub-band.

[0152] In one embodiment of this application, a wavelet transform-based codec is provided, which can independently encode and decode low-frequency subbands and high-frequency subbands, effectively reducing encoding and decoding complexity and improving encoding and decoding efficiency. Specifically, this application can independently encode and decode the quantization coefficients and control information of the low-frequency subbands, thereby improving the overall encoding and decoding efficiency of the bitstream by increasing the encoding and decoding efficiency of the low-frequency subbands. For example, an image undergoes wavelet transform to obtain low-frequency and high-frequency subbands, which are then encoded to generate low-frequency and high-frequency subband bitstreams, respectively. The low-frequency subband can be understood as a sub-image representing the low-frequency signal (or low-frequency information) of the original image, and the high-frequency subband can be understood as a sub-image representing the high-frequency signal (or high-frequency information) of the original image.

[0153] See Figure 8A , Figure 8A A schematic / conceptual block diagram of an encoder is shown as an example. Figure 8A In the encoder 80, the following are included but not limited to: sub-graph partitioning unit 810, wavelet forward transform unit 820, low-frequency sub-band processing path 830, and high-frequency sub-band processing path 840.

[0154] The low-frequency subband processing path 830 includes, but is not limited to: a transform / quantization unit 831 (also known as a low-frequency subband transform / quantization unit), a low-frequency subband entropy coding unit 832, and a control unit 833. The low-frequency subband entropy coding unit 832 includes, but is not limited to: a VLC entropy coding unit 832-1 and an arithmetic entropy coding unit 832-2.

[0155] The high-frequency subband processing path 840 includes, but is not limited to: a transform / quantization unit 841 (also known as a high-frequency subband transform / quantization unit) and a high-frequency subband entropy coding unit 842.

[0156] Specifically, encoder 80 can receive image 801 through an interface module (not shown in the figure). Image 801 can be an image in an image sequence that forms a video or video sequence. The image can be referred to as the current image or the image to be encoded. Image 801 can be the original image or an image obtained by processing the original image.

[0157] The sub-image partitioning unit 810 is used to acquire the current image and partition it to obtain at least one sub-image. Specifically, the sub-image partitioning unit 810 partitions the current image into N sub-images according to a sub-image partitioning method, where N is an integer greater than 0 (or an integer greater than 1). The sub-image partitioning method can include, but is not limited to, at least one of the following:

[0158] The width and / or height of the subgraph are multiples of 128;

[0159] The maximum width of the subimage is 1024 pixels;

[0160] The minimum height and / or width of the subimage is 256 pixels;

[0161] The original image resolution is less than or equal to 1080p, and N is an integer greater than 1 and less than or equal to 8; or,

[0162] The original image has a length greater than or equal to 4320 pixels, a width greater than or equal to 2160 pixels, and N is an integer greater than 1 and less than or equal to 16; or,

[0163] The original image has a length greater than or equal to 7680 pixels, a width greater than or equal to 4320 pixels, and N is an integer greater than 1 and less than or equal to 32.

[0164] In other words, the subgraph partitioning method can be related to the video resolution. Common video resolutions are as follows:

[0165]

[0166]

[0167] The values ​​mentioned above are merely illustrative examples and can be set according to actual needs.

[0168] For example, the subgraph partitioning unit 810 can set specific subgraph specifications (including width and height) based on the above subgraph partitioning method. The specific values ​​can be set according to actual needs within the range specified by the subgraph partitioning method.

[0169] Reference Figure 9A , Figure 9A This is a schematic diagram illustrating subgraph partitioning as an example. Figure 9A In the example, the subgraph partitioning unit 810 can partition the image 801 into m*n subgraphs according to the subgraph partitioning method. Optionally, in this example, the width and height of each subgraph are multiples of 128.

[0170] Reference Figure 9B , Figure 9B This is a schematic diagram illustrating subgraph partitioning as an example. Figure 9B In the example, the subgraph partitioning unit 810 can partition the image into m*n subgraphs according to the subgraph partitioning method. When the subgraph partitioning unit 810 partitions the boundary portion of the current image, the width and / or height of the boundary subgraphs may optionally not be a multiple of 128. Figure 9B This example only illustrates the situation where the width of some boundaries is not a multiple of 128. (Refer to...) Figure 9BIn this embodiment of the application, for sub-graphs whose width and height are not multiples of 128, the sub-graph partitioning unit 810 can pad these sub-graphs, for example... Figure 9B The gray area in the diagram. Taking subgraph 1_n as an example, the height of subgraph 1_n is a multiple of 128, but its width is not. Subgraph partitioning unit 810 fills subgraph 1_n.

[0171] In one possible implementation, the width and / or height of the filled subgraph can optionally be less than or equal to the subgraph size set by the subgraph partitioning method. For example, the size (i.e., width and height) of the filled subgraph 1_n can be the same as that of subgraph 1_1. As another example, the size of the filled subgraph 1_n can be less than the size of subgraph 1_1, where the width of subgraph 1_1 is a, the height is b, the width of subgraph 1_n before filling is c, the height is b, c is less than b, and c is not a multiple of 128. Subgraph partitioning unit 810 fills subgraph 1_n, and the width of the filled subgraph 1_n is d, and the height is b. Here, d is a multiple of 16, d is greater than c, and less than or equal to a.

[0172] In this way, by padding the sub-images, each macroblock can meet the 8x8 (pixel) partitioning requirement during the block division process of the encoding. Furthermore, by finding the least common multiple of the width and / or height of the sub-image before padding and 16, sub-images that do not meet the multiple of 16 are padded. This ensures that the size of the sub-image is a multiple of 16 while minimizing the size of the padded sub-image, thereby reducing the encoding complexity of the padded sub-image.

[0173] Optionally, the sub-image partitioning method can be the same for each image in the same video sequence.

[0174] Optionally, the sub-image division unit 810 can divide the image into sub-images along the horizontal and vertical directions, starting from the upper left corner, according to a preset sub-image size. The division order can be set according to actual needs. Typically, the sub-images that need to be filled are boundary sub-images, for example... Figure 9B As shown.

[0175] In this embodiment, each sub-image is encoded and decoded independently. Specifically, the image is divided into N sub-images, and the encoder 80 encodes each of the N sub-images separately. During the encoding process, a sub-image can also be referred to as the current sub-image or the sub-image to be encoded.

[0176] Still refer to Figure 8AThe wavelet forward transform unit 820 is used to perform wavelet transform (also called wavelet forward transform) on the subgraph to obtain low-frequency subbands and high-frequency subbands. The low-frequency subband (also called the first subband, the first frequency component, etc.) includes the low-frequency signal obtained by decomposing the subgraph through the low-frequency filter in the wavelet transform, and the high-frequency subband (also called the second subband, the second frequency component, etc.) includes the high-frequency signal obtained by decomposing the subgraph through the high-frequency filter in the wavelet transform.

[0177] Reference Figure 10 , Figure 10 This is a schematic diagram of wavelet transform as an example. Figure 10 In the example, the wavelet forward transform unit 820 acquires the current sub-image, for example, sub-image 1_1. The wavelet forward transform unit 820 performs a wavelet transform on the current sub-image to obtain wavelet coefficients for the low-low (LL) sub-band (LL sub-band), low-high (LH) sub-band (LH sub-band), high-high (HH) sub-band (HH sub-band), and high-low (HL) sub-band (HL sub-band). Specifically, the above wavelet transform can be a horizontal wavelet transform and a vertical wavelet transform.

[0178] In this embodiment, the low-frequency subband includes an LL subband, and the high-frequency subband includes an LH subband, an HH subband, and an HL subband. Optionally, the LL subband, LH subband, HH subband, and HL subband have the same dimensions (including width and height).

[0179] Still refer to Figure 8A The low-frequency subband processing path 830 is used to encode the low-frequency subband to obtain low-frequency subband encoded data 806, which can also be called coded low-frequency subband. The high-frequency subband processing path 840 is used to encode the high-frequency subband to obtain high-frequency subband encoded data 809, which can also be called coded high-frequency subband.

[0180] Specifically, the wavelet forward transform unit 820 outputs wavelet coefficients 803 of the low-frequency subband to the transform / quantization unit 831, and outputs wavelet coefficients 807 of the high-frequency subband to the transform / quantization unit 841.

[0181] For example, the transform / quantization unit 831 is used to obtain the wavelet coefficients 803 of the low-frequency sub-band, perform quantization processing on the wavelet coefficients 803 of the low-frequency sub-band, or perform transform and quantization processing, and output the quantized coefficients 804 of the low-frequency sub-band, or the quantized wavelet coefficients of the low-frequency sub-band.

[0182] The transform / quantization unit 831 outputs the quantization coefficients 804 of the low-frequency subband to the low-frequency subband entropy encoding unit 832. Optionally, the transform / quantization unit 831 may include, but is not limited to, a transform processing unit and a quantization processing unit (not shown in the figure).

[0183] The transform processing unit is used to transform the low-frequency subband and output transform coefficients, also known as low-frequency subband transform coefficients. The quantization processing unit is used to quantize the subband or the transformed transform coefficients and output quantized coefficients (also known as quantization results).

[0184] The control unit 833 generates control information 805 based on the wavelet coefficients 803 and / or the quantization coefficients 804 of the low-frequency sub-band, and outputs the control information 805 to the low-frequency sub-band entropy encoding unit 832.

[0185] In this embodiment of the application, the control information is used to indicate the encoding mode used by the low-frequency sub-band during the encoding process. Correspondingly, during the decoding process, the decoding end can determine the encoding mode of the low-frequency sub-band based on the control information, thereby selecting the corresponding decoding mode.

[0186] In the embodiments of this application, the control information may include, but is not limited to, one or more syntax elements. For example, it may include wavelet coefficients or quantization coefficients of low-frequency subband blocks (i.e., macroblocks, or blocks to be coded) in the low-frequency subband, indicating whether the coefficients of the low-frequency subband blocks are 0 (i.e., all coefficients in the block are 0). Furthermore, the control information may also include syntax elements indicating entropy coding methods, etc., which are not limited in this application.

[0187] The following example illustrates the use of a syntax element (e.g., sigflag) in the control information that indicates all coefficients of a low-frequency subband block are zero. In this embodiment, encoding and decoding are based on macroblocks as the basic unit. This can be understood as the wavelet coefficients of a low-frequency subband including wavelet coefficients of multiple low-frequency subband blocks. Each low-frequency subband block's wavelet coefficients can be understood as a set of wavelet coefficients, which may include one or more coefficients, or it may be an empty set. Each low-frequency subband block corresponds to a control information element used to indicate the encoding mode of that low-frequency subband block. For example, during the encoding process, the control information can determine the value of sigflag based on each low-frequency sub-band block. For instance, sigflag of 1 indicates that the quantization coefficients of the corresponding low-frequency sub-band block are all 0, that is, all quantization coefficients (for example, including 16 quantization coefficients) corresponding to the low-frequency sub-band block are 0 (of course, wavelet coefficients can also be understood as all 0). sigflag of 0 indicates that the quantization coefficients of the corresponding low-frequency sub-band block are not all 0, that is, all quantization coefficients corresponding to the low-frequency sub-band block include non-zero values.

[0188] The low-frequency subband entropy coding unit 832 is used to acquire the data to be encoded and perform entropy coding on the data to be encoded to obtain low-frequency subband encoded data 806. The data to be encoded may include, but is not limited to, the quantization coefficients 804 and control information 805 of the low-frequency subband. In some instances, the data to be encoded may also include parameters or information (or syntax elements) input from other modules not shown in the figure.

[0189] Specifically, the encoding mode adopted by the VLC entropy coding unit 832-1 includes: using VLC entropy coding, the quantization coefficients in the low-frequency subband quantization coefficients 804 that are greater than or equal to the first value are VLC entropy coded to obtain VLC coded data 806-1.

[0190] The coding mode adopted by the arithmetic entropy coding unit 832-2 includes: using arithmetic coding, the quantization coefficients of the low-frequency subband 804 that are less than the first value and the control information are arithmetically entropy encoded to obtain arithmetic coded data 806-2.

[0191] The specific value of the first value can be set according to actual needs; the first value can also be called the preset threshold.

[0192] Table 1 shows a schematic diagram of low-frequency subband coded data.

[0193] Table 1

[0194]

[0195]

[0196] Where ae(v) indicates that the corresponding data uses arithmetic coding, se(v) indicates that the corresponding data uses exponential Golomb coding, ll_mb_qp_delta indicates the difference between the current red-box quantization parameter and the predicted quantization parameter, mb_mode indicates the prediction mode of the currently encoded unit (e.g., macroblock), and inter_no_residual_flag indicates whether the quantization residual system of the inter-frame coding mode is all zero. Exponential Golomb coding is a type of VLC coding scheme.

[0197] The control information includes at least the size of the luma transform block (tb_size_luma), the first flag of the luma intra-prediction mode (intra_pred_mode_luma_first_flag), the second flag of the luma intra-prediction mode (intra_pred_mode_luma_second_flag), the first flag of the chroma intra-prediction mode (intra_pred_mode_chroma_first_flag), and the second flag of the chroma intra-prediction mode (intra_pred_mode_chroma_second_flag). Here, intra_pred_mode_luma_first_flag and intra_pred_mode_luma_second_flag together represent the luma component intra-prediction mode, and intra_pred_mode_chroma_first_flag and intra_pred_mode_chroma_second_flag together represent the chroma component intra-prediction mode.

[0198] The low-frequency subband coded data is decoded to obtain the low-frequency subband macroblock quantization coefficients (decode_coefficients). Table 2 shows a schematic diagram of the low-frequency subband macroblock quantization coefficients.

[0199] Table 2 Format of Quantization Coefficients for Low-Frequency Subband Macroblocks

[0200]

[0201]

[0202] Among them, `coded_block_flag` indicates whether the transform block includes non-zero coefficients; a value of "1" indicates that the transform block contains non-zero coefficients, and a value of "0" indicates that all coefficients in the transform block are 0. `last_coeff_nz_flag` indicates whether it is the last position in the scanning order during encoding; a value of "0" indicates that the last position in the scanning order during encoding is a non-zero coefficient, and a value of "1" indicates the position of the last non-zero coefficient to be decoded. `last_nz_pos` indicates the position of the last non-zero coefficient, and the position of the last non-zero coefficient is related to the transform block size. `significant_coeff_flag` indicates whether the absolute value of the current quantization coefficient is greater than 0; a value of "0" indicates that the absolute value is equal to 0, and a value of "1" indicates that the absolute value is greater than 0. `coeff_abs_level_greater1_flag` indicates whether the absolute value of the current quantization coefficient is greater than 1; a value of "0" indicates that the absolute value is greater than 1, and a value of "1" indicates that the absolute value is less than or equal to 1. `coeff_abs_level_remaining` indicates the remaining value of the current quantization coefficient, and `coeff_sign_flag` indicates whether the current quantization coefficient is an integer or a negative number.

[0203] For example, the quantization coefficients of a high-frequency subband can be understood as a set of quantization coefficients, including one or more quantization coefficients corresponding to the high-frequency subband. Quantization coefficients optionally include a sign bit and a coefficient amplitude value. The sign bit can be entropy encoded by the VLC entropy coding unit. The coefficient amplitude value may be greater than or equal to a first value, or it may be less than a first value. The corresponding entropy coding method can be selected based on its specific value to entropy entropy encode it and obtain the corresponding coded data.

[0204] Still refer to Figure 8A The transform / quantization unit 841 is used to quantize the wavelet coefficients 807 of the high-frequency subband, or to perform both transform and quantization processing, to obtain the quantized coefficients 808 of the high-frequency subband, which can also be referred to as the quantized wavelet coefficients of the high-frequency subband. The transform / quantization unit 841 outputs the quantized coefficients 808 of the high-frequency subband to the high-frequency subband entropy coding unit 842. For details not described, please refer to the low-frequency subband transform / quantization unit 831; further details are omitted here.

[0205] The high-frequency subband entropy coding unit 842 is used to acquire the data to be encoded and perform entropy coding on the data to be encoded to obtain high-frequency subband encoded data 809, which can also be called encoded high-frequency subband. Optionally, the data to be encoded may include, but is not limited to, the quantization coefficients 808 of the high-frequency subband. In some instances, the data to be encoded may also include parameters or information (or syntax elements) input from other modules not shown in the figure. Table 3 shows a schematic diagram of one format of high-frequency subband encoded data.

[0206] Table 3

[0207]

[0208]

[0209] Among them, mb_has_coef_flag is the macroblock all-zero flag, with a value of "0" indicating that all coefficients of the macroblock are zero, and a value of "1" indicating that the macroblock has at least one non-zero coefficient; mb_all_one_flag is the macroblock all-one flag, with a value of "1" indicating that all 4x4 blocks in the macroblock contain non-zero coefficients, and a value of "0" indicating that at least one 4x4 block in the macroblock is an all-zero block; transform_skip_flag is the macroblock transform skip flag, with a value of "1" indicating that the macroblock skips the 2x2 Hadamard transform, and a value of "0" indicating that the macroblock performs the 2x2 Hadamard transform. If the bitstream does not have transform_skip_flag, the value of transform_skip_flag for the macroblock is 0, and the value of transform_skip_flag for the chroma macroblock is 0; significance_flag is the block importance flag, with a value of "0" indicating that all coefficients in the 4x4 block are zero, and a value of "1" indicating that the 4x4 block contains non-zero coefficients.

[0210] The high-frequency subband encoded data is decoded to obtain the high-frequency subband macroblock quantization coefficients decode_hf_coef. Table 4 shows a schematic diagram of the high-frequency subband macroblock quantization coefficients.

[0211] Table 4

[0212]

[0213]

[0214] Among them, `block_mode_flag` is the block sparsity flag; a value of "0" indicates that the corresponding 4x4 block coefficients are sparse, and a special mode is used to parse the coefficient values; a value of "1" indicates that the block coefficients are dense, and the 16 coefficient values ​​are parsed using direct mode. `table_idx_flag` is the block code table flag; a value of "0" indicates that the offset of the code table index number is 0, and a value of "1" indicates that the offset of the code table index number is 1. `coeff_level` represents the current quantization coefficient value. `sub_significance_flag` is the sub-block importance flag; a value of "0" indicates that the current sub-block has 4... All coefficients are zero; a value of "1" indicates that the four coefficients include a non-zero coefficient. `pattern_0001_flag` is the special pattern flag for the sub-block coefficients; a value of "0" indicates that the four coefficients are not in a special pattern, and a value of "1" indicates that the four coefficients are in a special pattern. `pattern_0001_code` is the special pattern value for the sub-block coefficients, representing the pattern index value of the four coefficient values ​​in the current sub-block. `max_grt1_flag` is the absolute value flag for the sub-block coefficients; a value of "0" indicates that the absolute values ​​of the four coefficients in the current sub-block are all less than or equal to 1, and a value of "1" indicates that the absolute value of at least one of the four coefficients is greater than 1.

[0215] Optionally, the high-frequency subband entropy coding unit 842 is used to encode the data to be encoded using an entropy coding algorithm or scheme. The aforementioned entropy coding scheme may be, for example, at least one of the following: variable length coding (VLC), context adaptive VLC (CAVLC), arithmetic coding, and context adaptive binary arithmetic coding (CABAC).

[0216] Optionally, the encoder 80 may also include, but is not limited to, a combining unit (not shown in the figure), which may also be called a multiplexer (MUX). The combining unit is used to generate an image bitstream based on the low-frequency subband coded data 806 and the high-frequency subband coded data 809.

[0217] Specifically, the combining unit writes low-frequency subband coded data 806 (including VLC coded data 806-1 and arithmetic coded data 806-2) into the image bitstream, and writes high-frequency subband coded data 809 into the image bitstream. In this embodiment, by encoding the low-frequency and high-frequency subbands separately, the low-frequency and high-frequency subband coded data can be decoded independently, that is, the low-frequency and high-frequency subband coded data in the image bitstream can be decoded independently at the decoding end, thereby improving decoding efficiency. Furthermore, in this embodiment, by performing VLC encoding on some quantization coefficients of the low-frequency subband and arithmetic encoding on other quantization coefficients and control information, some data in the low-frequency subband coded data can use VLC encoding, which has lower complexity and faster encoding / decoding speed, while other data, such as control information and other quantization coefficients, use arithmetic encoding to ensure the encoding efficiency of this part of the data. This reduces encoding / decoding complexity without affecting the compression ratio.

[0218] As mentioned above, a single image can be divided into multiple sub-images, for example, N sub-images. Each sub-image can be decomposed into wavelet coefficients of a high-frequency sub-band and wavelet coefficients of a low-frequency sub-band after wavelet forward transform. Encoder 80 independently encodes the low-frequency and high-frequency sub-bands of each sub-image to obtain the low-frequency sub-band encoded data and high-frequency sub-band encoded data of a single sub-image. In this way, the combining unit can obtain the high-frequency sub-band encoded data and low-frequency sub-band encoded data of each of the N sub-images, that is, obtain N high-frequency sub-band encoded data (optionally, the high-frequency sub-band encoded data of each sub-image includes the HL sub-band encoded data corresponding to the HL sub-band, the HH sub-band encoded data corresponding to the HH sub-band, and the LH sub-band encoded data corresponding to the LH sub-band) and N low-frequency sub-band encoded data. The combining unit can optionally write the low-frequency sub-band encoded data and high-frequency sub-band encoded data of the N sub-images into the image bitstream. The format (or structure) of the image bitstream will be described in detail below.

[0219] Reference Figure 8B , Figure 8B This is a schematic / conceptual block diagram illustrating another encoder as an example. This architecture is contrasted with... Figure 8A The architecture lacks sub-image partitioning units. Specifically, the wavelet forward transform unit 820 performs wavelet transform on image 801 to generate high-frequency and low-frequency sub-bands of image 801. Other unit descriptions are as follows... Figure 8A The same applies here, and will not be repeated. In this example, the high-frequency subband encoded data 809 includes the encoded data of the high-frequency subbands of the image, which includes, but is not limited to: HL subband encoded data, LH subband encoded data, and HH subband encoded data.

[0220] The coded data for the low-frequency subband includes, but is not limited to, the coded data for the LL subband, such as the coded data for each low-frequency subband block (i.e., macroblock). The coded data for each macroblock further includes: arithmetic coded data generated based on the control information of the macroblock and some quantization coefficients (e.g., less than a first value), and VLC coded data generated based on other partial quantization coefficients of the low-frequency subband block (e.g., greater than or equal to the first value).

[0221] In this embodiment, the coded data of the high-frequency subband and the coded data of the low-frequency subband can be decoded independently. The coded data of each high-frequency subband (including HH subband, LH subband and HL subband) can be decoded independently. The arithmetic coded data and VLC coded data of each low-frequency subband block can be decoded in a pipelined parallel manner.

[0222] For example, during the process of writing each encoded data into the image bitstream by the combining unit, a first position pointer and a second position pointer can be set. The first position pointer points to the starting position of the region containing the VLC encoded data (e.g., the first image data region in the following embodiment), and the second position pointer points to the starting position of the region containing the arithmetic encoded data (e.g., the second image data region in the following embodiment). For example, during the writing of the macroblock's encoded data, the first position pointer and / or the second position pointer move within the image bitstream along with the starting position of the pointed image region. Correspondingly, after the encoded data writing is complete, the combining unit can generate offset information corresponding to the positions of the arithmetic encoded data and the VLC encoded data in the image bitstream based on the current positions of the first and second position pointers. A detailed description of the offset information can be found in the following embodiment, and will not be repeated here.

[0223] In this way, by combining the fast encoding and decoding speed of VLC encoding with the high compression ratio of arithmetic encoding on the encoding side, this application can improve encoding and decoding efficiency while ensuring the compression ratio of encoded data.

[0224] See Figure 11A , Figure 11A The diagram is a schematic / conceptual block diagram of a decoder as an example. Decoder 110 is used to receive, for example, a bitstream encoded by an encoder (also referred to as the bitstream of the original image, or the image data of the original image) to obtain a decoded image, also referred to as a reconstructed image 1108.

[0225] exist Figure 11A In the example shown, the decoder 110 includes, but is not limited to: a high-frequency subband processing path 1120, a low-frequency subband processing path 1110, a wavelet inverse transform unit 1130, and a subgraph stitching unit 1140.

[0226] The low-frequency subband decoding path 1110 includes, but is not limited to: a low-frequency subband entropy decoding unit 1111 and an inverse quantization / inverse transform unit 1112 (also referred to as a low-frequency subband inverse quantization / inverse transform unit). The high-frequency subband decoding path 1120 includes, but is not limited to: a high-frequency subband entropy decoding unit 1121 and an inverse quantization / inverse transform unit 1122 (also referred to as a high-frequency subband inverse quantization / inverse transform unit).

[0227] For example, decoder 110 receives an image bitstream and obtains a reconstructed image 1108 (also known as a decoded image) based on high-frequency subband coded data 1102 and low-frequency subband coded data 1101 in the image bitstream.

[0228] For example, the low-frequency subband entropy decoding unit 1111 is used to obtain low-frequency subband encoded data 1101 in the image bitstream to obtain entropy decoding data, which includes, but is not limited to, the quantization coefficients 1103 of the low-frequency subband.

[0229] Specifically, the low-frequency subband entropy decoding unit 1111 performs entropy decoding processing on the low-frequency subband encoded data 1101 to obtain entropy-decoded data. The entropy-decoded data includes, but is not limited to, the quantization coefficients 1103 of the low-frequency subband.

[0230] For example, the low-frequency subband entropy decoding unit 1111 includes, but is not limited to, a VLC entropy decoding unit 1111-1 and an arithmetic entropy decoding unit 1111-2. Specifically, the VLC entropy decoding unit 1111-1 uses VLC entropy decoding to entropy decode the VLC encoded data of each low-frequency subband block of each low-frequency subband in each sub-graph of the low-frequency subband encoded data 1101, to obtain entropy-decoded data of some quantization coefficients of the low-frequency subband block. The arithmetic entropy decoding unit 1111-2 uses arithmetic entropy decoding to entropy decode the arithmetic encoded data of each low-frequency subband block of each low-frequency subband in each sub-graph of the low-frequency subband encoded data 1101, to obtain control information corresponding to each low-frequency subband block, as well as entropy-decoded data of other quantization coefficients of the low-frequency subband block.

[0231] Optionally, as mentioned above, low-frequency subband blocks with all 0 quantization coefficients are not encoded into the image bitstream. Accordingly, the quantization coefficients obtained based on VLC coded data and arithmetic coded data include the quantization coefficients of low-frequency subband blocks that are not all 0, but do not include the quantization coefficients of low-frequency subband blocks with all 0.

[0232] In one possible implementation, as described above, the control information is used to indicate the encoding mode of the quantization coefficients of the low-frequency subband block. The low-frequency subband entropy encoding unit 1111 can process the quantization coefficients (also called entropy decoding results) of the low-frequency subband block obtained by the VLC entropy decoding unit 1111-1 and the arithmetic entropy decoding unit 1111-2 based on the control information to obtain the complete quantization coefficients of the low-frequency subband block. For example, as described above, the control information may include, but is not limited to, syntax elements (e.g., sigflag) used to indicate whether the quantization coefficients of the low-frequency subband block are all zeros. Optionally, on the encoding side, the encoding mode uses the quantization coefficients of low-frequency subband blocks with non-all zero quantization coefficients encoded into the image bitstream, while the quantization coefficients of low-frequency subband blocks with all zero quantization coefficients are not encoded into the image bitstream. During the decoding process, the complete quantization coefficients of the low-frequency subband block can be obtained by first performing entropy decoding on the VLC-coded data and arithmetic-coded data to obtain the current quantization coefficients of the low-frequency subband block (including quantization coefficients greater than or equal to the first value and quantization coefficients less than the first value) and control information. The low-frequency subband entropy decoding unit 1111 can determine, based on the control information, which low-frequency subband blocks have all 0 quantization coefficients and which have non-all 0 quantization coefficients. Correspondingly, the low-frequency subband entropy decoding unit 1111 can process the current quantization coefficients of the low-frequency subband block based on the control information to obtain the complete quantization coefficients of the low-frequency subband block. The quantization coefficients 1103 of the low-frequency subband include the quantization coefficients of the low-frequency subband block with all 0 quantization coefficients and the quantization coefficients of the low-frequency subband block with non-all 0 quantization coefficients.

[0233] In other words, the quantization coefficients obtained by entropy decoding of VLC encoded data and arithmetic encoded data are partial quantization coefficients of the low-frequency subband. The decoder can further obtain the complete quantization coefficients of the low-frequency subband based on the control information.

[0234] The high-frequency subband entropy decoding unit 1121 is used to acquire the high-frequency subband encoded data 1102 in the image bitstream to obtain entropy-decoded data. The entropy-decoded data includes, but is not limited to, the quantization coefficients 1104 of the high-frequency subband. Specifically, the high-frequency subband entropy decoding unit 1121 performs entropy decoding processing on the high-frequency subband encoded data 1102 to obtain the entropy-decoded data. The high-frequency subband entropy decoding unit 1121 outputs the quantization coefficients 1104 of the high-frequency subband to the inverse quantization / inverse transform unit 1122.

[0235] The inverse quantization / inverse transform unit 1122 is used to obtain the quantization coefficients 1104 of the high-frequency subband, resulting in the reconstructed coefficients 1106 of the high-frequency subband, which can be simply referred to as the reconstructed high-frequency subband. In some instances, it can also be called the reconstructed value of the high-frequency subband, the reconstructed wavelet coefficients of the high-frequency subband, etc. The inverse quantization / inverse transform unit 1122 outputs the reconstructed high-frequency subband to the wavelet inverse transform unit 1130. Specifically, the inverse quantization / inverse transform unit 1122 performs inverse quantization processing on the quantization coefficients 1104 of the high-frequency subband, or performs inverse quantization and inverse transform processing, to obtain the reconstructed high-frequency subband. For example, this includes reconstructing the HH subband (e.g., the reconstructed coefficients of the HH subband), reconstructing the HL subband (e.g., the reconstructed coefficients of the HL subband), and reconstructing the LH subband (e.g., the reconstructed coefficients of the LH subband).

[0236] For example, the wavelet inverse transform unit 1130 is used to obtain the reconstruction coefficients 1105 of the low-frequency sub-band and the reconstruction coefficients 1106 of the high-frequency sub-band to obtain the reconstructed sub-map 1107. Specifically, the wavelet inverse transform unit 1130 can obtain the reconstructed low-frequency sub-band and the reconstructed high-frequency sub-band of each sub-map. The wavelet inverse transform unit performs wavelet inverse transform processing on the obtained reconstructed low-frequency sub-band and reconstructed high-frequency sub-band corresponding to the same sub-map to obtain the reconstructed sub-map. Its inverse transform process is the inverse of the wavelet forward transform process, which will not be described in detail here.

[0237] The sub-image stitching unit 1140, also known as the image reconstruction unit or sub-image combination unit, is used to acquire reconstructed sub-images to obtain the reconstructed image of the original image. Specifically, the sub-image stitching unit 1140 acquires N reconstructed sub-images corresponding to the current decoded image. Based on the N reconstructed sub-images, the sub-image stitching unit 1140 can obtain the reconstructed image (also known as the decoded image or the decoded image) of the current image.

[0238] See Figure 11B , Figure 11B This is a schematic / conceptual block diagram of a decoder, as exemplarily shown. The decoder corresponds to... Figure 8B The encoder architecture.

[0239] In this example, the wavelet inverse transform unit 1130 obtains the reconstructed image of the original image based on the reconstruction coefficients 1105 of the low-frequency sub-band and 1106 of the high-frequency sub-band, without requiring a sub-image stitching process. Descriptions of other units can be found in [reference needed]. Figure 11A This will not be elaborated upon here.

[0240] exist Figure 8A , 8B , Figure 11A and Figure 11B Based on the encoder and decoder shown, there can be many more variations of the encoder and decoder, such as including more processing units or modules.

[0241] Reference Figure 12 , Figure 12 A schematic / conceptual block diagram of an encoder is shown as an example. Figure 12 In the example, the encoder includes, but is not limited to: subgraph partitioning unit 1210, wavelet forward transform unit 1220, low-frequency subband processing path 1230, and high-frequency subband processing path 1240.

[0242] The descriptions of subgraph partitioning unit 1210 and wavelet forward transform unit 1220 can be found in [reference]. Figure 8A The relevant content will not be repeated here.

[0243] The low-frequency subband processing path 1230 is used to obtain the wavelet coefficients 1203 of the low-frequency subband to obtain the low-frequency subband coded data 1213. The low-frequency subband processing path 1230 includes, but is not limited to: a block partitioning unit 1231 (also called a low-frequency subband block partitioning unit), a residual calculation unit 1232, a prediction unit 1237, a control unit 1238, a transform / quantization unit 1233 (also called a low-frequency subband transform / quantization unit), an inverse quantization / inverse transform unit 1234 (also called a low-frequency subband inverse quantization / inverse transform unit 1234), a low-frequency subband splicing unit 1236, and a low-frequency subband entropy coding unit 1239. The low-frequency subband entropy coding unit 1239 may include, but is not limited to: a VLC entropy coding unit and an arithmetic entropy coding unit, the structure of which can be referenced. Figure 8A This will not be elaborated upon here.

[0244] The high-frequency subband processing path 1240 is used to obtain the wavelet coefficients 1214 of the high-frequency subband in order to obtain the high-frequency subband encoded data 1217. The high-frequency subband processing path 1240 includes, but is not limited to: block partitioning unit 1241 (also known as high-frequency subband block partitioning unit), transform / quantization unit 1242 (also known as high-frequency subband transform / quantization unit), high-frequency subband entropy coding unit 1243, etc.

[0245] Alternatively, in some instances, the encoder may also include a... Figure 12 The structure shown may contain more or fewer units or modules.

[0246] The following is combined Figure 12 The encoder shown provides a detailed description of the encoding method provided in this application:

[0247] The codec receives image 1201. A description of image 1201 can be found above and will not be repeated here.

[0248] Sub-image partitioning unit 1210 partitions image 1201 into sub-images and outputs N sub-images. N is an integer greater than 0. In this embodiment, each sub-image is encoded and decoded independently. During the encoding process, sub-image 1202 can be referred to as the current sub-image or the sub-image to be encoded.

[0249] Wavelet forward transform unit 1220 performs wavelet forward transform on the current sub-image to obtain wavelet coefficients 1203 (hereinafter referred to as low-frequency sub-band) and wavelet coefficients 1214 (hereinafter referred to as high-frequency sub-band) of the current sub-image. The wavelet coefficients 1203 of the low-frequency sub-band include the wavelet coefficients of the LL sub-band, and the wavelet coefficients 1214 of the high-frequency sub-band include the wavelet coefficients of the LH, HL, and HH sub-bands. In this embodiment, each sub-image of the image can be independently encoded and decoded, and the high-frequency sub-band and low-frequency sub-band of each sub-image are independently encoded and decoded. The LH, HL, and HH sub-bands in the high-frequency sub-band can also be independently encoded and decoded.

[0250] The block partitioning unit 1231 (which may be called the low-frequency sub-band block partitioning unit) is used to obtain the wavelet coefficients 1203 of the low-frequency sub-band of the current sub-graph 1202, so as to obtain at least one macroblock 1204 of the low-frequency sub-band of the sub-graph 1202, wherein the macroblock can also be understood as a set of partial coefficients in the wavelet coefficients of the low-frequency sub-band.

[0251] Specifically, the block partitioning unit 1231 partitions the wavelet coefficients 1203 of the low-frequency sub-band of the current subgraph 1202 into blocks based on the block partitioning method, to obtain at least one macroblock 1204 of the low-frequency sub-band of the current subgraph, for example, M macroblocks, where M is an integer greater than 0 (or greater than 1). The low-frequency block partitioning unit 1231 outputs the macroblocks 1204 of the current low-frequency sub-band one by one to the residual calculation unit 1232 and the control unit 1238.

[0252] In the embodiments of this application, a macroblock is a basic encoding / decoding unit. During the encoding process, a macroblock may also be referred to as the current block, the current image block, or the macroblock to be encoded, the block to be encoded, or the image block to be encoded, etc.

[0253] Alternatively, the block partitioning method includes, but is not limited to:

[0254] The wavelet coefficients of both the high-frequency and low-frequency subbands are divided into basic coding units of 8x8 macroblocks (in pixels).

[0255] For example, as described above, each subband uses a macroblock as the basic coding unit. The macroblock to be encoded is referred to as the current macroblock. Specifically, the low-frequency subband processing path 1240 encodes each macroblock of the low-frequency subband block by block. For example, it performs encoding and prediction for each macroblock. The encoding process for the current macroblock 1204 is described below; the processing flow for other macroblocks is the same, and will not be illustrated individually in this application. The decoded macroblock in the reference image used for prediction of the current macroblock is called the reference block (i.e., the low-frequency subband reconstruction block 1209 in the figure). The reference block provides a reference signal for the current block, where the reference signal represents the pixel value within macroblock 1204. The block in the reference image that provides the prediction signal for the current block can be called the prediction block 1205, where the prediction signal represents the pixel value, sampled value, or sampled signal within prediction block 1205. For example, after traversing multiple reference blocks, an optimal reference block is found. This optimal reference block will provide prediction for the current block; this block is called prediction block 1205.

[0256] Specifically, still refer to Figure 12 The residual calculation unit 1232 is used to obtain the current macroblock 1204 and the prediction block 1205 (further details of the prediction block 1205 are provided below) to obtain the residual block 1206. Specifically, the residual calculation unit performs residual calculation on the current macroblock 1204 and the prediction block 1205 to obtain the residual block 1206. The residual calculation unit 1232 outputs the residual block 1206 to the transform / quantization unit 1233.

[0257] The transform / quantization unit 1233 is used to acquire the residual block 1206 to obtain the residual coefficients 1207. Specifically, the transform / quantization unit 1233 performs transform and / or quantization processing on the residual block 1206 to obtain the residual coefficients 1207, which can also be called the quantization coefficients of the residual block, or the quantized residual block. The transform / quantization unit 1233 outputs the residual coefficients 1207 to the inverse quantization single / inverse transform unit 1234 and the low-frequency subband entropy coding unit 1239.

[0258] The inverse quantization / inverse transform unit 1234, also known as the inverse quantization / inverse transform unit, is used to obtain the residual coefficients 1207 to obtain the residual reconstruction block 1208. Specifically, the inverse quantization / inverse transform unit 1234 performs inverse quantization and / or inverse transform processing on the residual coefficients 1207 to obtain the residual reconstruction block 1208, which can also be referred to as the inverse quantization coefficients of the residual block, the inverse quantized residual block, etc. The inverse quantization / inverse transform unit 1234 outputs the residual reconstruction block 1208 to the low-frequency subband splicing unit 1236.

[0259] The dequantization / inverse transform unit 1234 may include a dequantization unit and an inverse transform unit (not shown in the figure). The dequantization unit is used to dequantize the input coefficients, and the inverse transform unit is used to inverse transform the input coefficients.

[0260] The low-frequency subband reconstruction unit 1235 is used to obtain a low-frequency subband reconstruction block 1209 based on the prediction block 1205 and the residual reconstruction block 1208. Specifically, the low-frequency subband reconstruction unit 1235 adds the residual reconstruction block 1208 to the prediction block 1205 to obtain the low-frequency subband reconstruction block 1209, which can also be referred to as the reconstructed low-frequency subband macroblock. Optionally, the low-frequency subband reconstruction unit 1235 outputs the low-frequency subband reconstruction block 1209 to the prediction unit 1237 and the low-frequency subband splicing unit 1236. Optionally, the low-frequency subband reconstruction unit 1235 outputs the low-frequency subband reconstruction block 1209 to the control unit 1238.

[0261] The low-frequency subband stitching unit 1236 is used to obtain the reconstructed low-frequency subband 1211, which can also be referred to as the reconstructed value or reconstructed data of the low-frequency subband, based on the low-frequency subband reconstruction block 1209. Optionally, the low-frequency subband stitching unit 1236 outputs the reconstructed low-frequency subband 1211 to the prediction unit 1237. Optionally, the low-frequency subband stitching unit 1236 outputs the reconstructed low-frequency subband 1211 to the control unit 1238.

[0262] Specifically, as described above, the low-frequency subband uses macroblocks as the basic coding unit, and the low-frequency subband splicing unit 1236 can obtain M low-frequency subband reconstruction blocks of a low-frequency subband. The low-frequency subband splicing unit 1236 can reconstruct the corresponding low-frequency subband based on the M low-frequency subband reconstruction blocks, that is, obtain the reconstructed low-frequency subband 1211.

[0263] Control unit 1238 is used to acquire control information. In this example, the control information includes, but is not limited to: mode information 1212 for indicating the prediction mode, first indication information (not shown in the figure) for indicating whether the quantization coefficients are all 0, and second indication information (not shown in the figure) for indicating the block partitioning method. All of the above control information is entropy encoded using arithmetic coding. Optionally, in some instances, the image bitstream may also include at least one other encoded data corresponding to parameters or information used for decoding, in addition to the control information.

[0264] In one example, the control unit 1238 can generate second indication information based on a preset block partitioning method and transmit the second indication information to the block partitioning unit 1231, so that the block partitioning unit 1231 performs block partitioning based on the block partitioning method. Accordingly, during the decoding process, the block partitioning method can be determined based on the second indication information in the control information, and when performing block splicing, each macroblock is spliced ​​according to the block partitioning method.

[0265] In another example, the control unit 1238 can obtain a first indication information (e.g., denoted as sigflag) based on the macroblock 1204 or the residual coefficients 1207 (i.e., the quantization coefficients of the residual block corresponding to the current block) to indicate whether the quantization coefficients of the current macroblock (i.e., the low-frequency subband block) are all 0. Accordingly, the complete quantization coefficients can be decoded based on the first indication information during the decoding process.

[0266] In another example, the control unit 1238 can determine the mode information 1212 based on macroblock 1204 (i.e., the current block); or it can determine the mode information 1212 based on the current macroblock 1204, the low-frequency subband reconstruction block 1209, and the reconstructed low-frequency subband 1211. Accordingly, during prediction, the decoding side can determine the prediction mode based on the mode information in the control information and perform the corresponding prediction processing.

[0267] This can be understood as the low-frequency subband control information being used to decode the low-frequency subband. The decoding process includes, but is not limited to, entropy decoding, prediction, low-frequency subband splicing, and other processing steps. Accordingly, the control information may include information used for entropy decoding to obtain complete quantization coefficients, as well as information used in other decoding processes, such as mode information.

[0268] Optionally, the control unit 1238 can transmit the generated set of syntax elements (including pattern information 1212) to the low-frequency subband entropy coding unit 1239. The low-frequency subband entropy coding unit 1239 can entropy encode the control information, i.e., the syntax elements used to decode the quantization coefficients, using arithmetic coding.

[0269] The prediction unit 1237, also known as the prediction processing unit, is used to acquire mode information 1212 and perform prediction processing based on the mode information 1212. Specifically, the prediction unit 1237 can select a prediction mode based on the mode information 1212. In one example, the prediction unit 1237 can acquire a low-frequency sub-band reconstruction block 1209 based on the mode information 1212 to obtain prediction block 1205. Specifically, the prediction unit 1237 can perform intra-frame prediction based on the low-frequency sub-band reconstruction block 1209 to obtain prediction block 1205. In another example, the prediction unit 1237 can acquire a reconstructed low-frequency sub-band 1211 based on the mode information 1212 to obtain prediction block 1205.

[0270] The prediction unit 1237 outputs prediction block 1205 to the residual calculation unit 1232 and the low-frequency sub-band splicing unit 1236.

[0271] The low-frequency subband entropy coding unit 1239 is used to acquire the data to be encoded, which includes, but is not limited to, residual coefficients 1207 and control information 1218. Based on the data to be encoded, the low-frequency subband acquires low-frequency subband encoded data 1213, which can also be called the encoded low-frequency subband. The residual coefficients 1207 are the quantization coefficients mentioned above; for specific entropy coding methods, please refer to... Figure 8A This will not be elaborated upon here.

[0272] Still refer to Figure 12 The block partitioning unit 1241, also known as the high-frequency subband block partitioning unit, is used to obtain the high-frequency subband of the current subgraph 1202 to obtain at least one macroblock 1215 of the high-frequency subband of the subgraph 1202. For a detailed description, please refer to the low-frequency subband section; it will not be repeated here. Specifically, the block partitioning unit 1241, based on the block partitioning method, partitions the wavelet coefficients 1214 of the high-frequency subband of the current subgraph 1202 (hereinafter referred to as the current high-frequency subband) into blocks to obtain at least one macroblock 1215 of the current subgraph 1202, for example, M macroblocks, where M is an integer greater than 0 (or an integer greater than 1). Other undescribed parts can be referred to the relevant description of the block partitioning unit 1231; it will not be repeated here.

[0273] The block partitioning unit 1241 outputs the macroblocks 1215 of the current high-frequency subband one by one to the quantization / conversion unit 1242.

[0274] The transform / quantization unit 1242 is used to transform and / or quantize the macroblock 1215 to obtain the quantization coefficients 1216 of the high-frequency subband block (i.e., the quantization coefficients of the current macroblock). The transform / quantization unit 1242 outputs the quantization coefficients 1216 of the high-frequency subband block to the high-frequency subband entropy coding unit 1243.

[0275] The high-frequency subband entropy coding unit 1243 is used to perform entropy coding on the data to be encoded to obtain high-frequency subband encoded data 1217. The data to be encoded may include, but is not limited to, the quantization coefficients and syntax elements of each high-frequency subband block. The high-frequency subband encoded data 1217 includes, but is not limited to, HH subband encoded data, HL subband encoded data, and LH subband encoded data.

[0276] Optionally, in Figure 12 Based on this, variations of the decoder in this application may also include a decoder architecture that does not include the sub-image partitioning unit 1210, wherein the macroblock partitioning units for the low-frequency subband and high-frequency subband can partition the wavelet coefficients of the image. Further descriptions can be found in [reference needed]. Figure 8B and Figure 12 This will not be elaborated upon here.

[0277] The encoding / decoding method provided in this application supports both full I-frame configuration and I / P frame alternating encoding configuration. Figure 12 The encoder architecture shown in Figure 8 adds relevant modules required for the prediction process to the wavelet transform architecture shown in Figure 8, which can improve the compression efficiency of I / P frame alternating encoding for scenarios with fixed camera positions and slow camera movement.

[0278] Optionally, the encoder may also include a combination unit (not shown in the figure) for generating an image bitstream based on low-frequency subband coded data and high-frequency subband coded data. The specific process can be referred to the relevant description in Figure 8 above.

[0279] The following provides a detailed description of the bitstream output by the encoder in the embodiments of this application. The bitstream structure described below can be applied to... Figure 8A , Figure 8B and Figure 12 The encoder shown can, of course, also be applied to other encoders based on... Figure 8A , Figure 8B or Figure 12 Encoder variant.

[0280] For example, as described above, the low-frequency subband entropy coding unit 1239 and the high-frequency subband entropy coding unit 1243 output low-frequency subband coded data 1213 and high-frequency subband coded data 1217, respectively. This can be understood as the encoder 120 independently encoding the low-frequency and high-frequency subbands of each subgraph, outputting low-frequency and high-frequency subband coded data corresponding to the current subgraph.

[0281] Reference Figure 13 , Figure 13 This is a schematic diagram illustrating the structure of an image bitstream as an example. Figure 13 In the example, the image bitstream includes, but is not limited to: image header information and image data (also referred to as image data region).

[0282] For example, the image data includes at least one image data region (also referred to as an image data sub-region), such as, but not limited to, a first image data region and a second image data region. During the encoding process, the encoder (e.g., through a combination unit) writes VLC-coded data and arithmetic-coded data into the image bitstream. Specifically, the encoder writes VLC-coded data into the first image data region and arithmetic-coded data into the second image data region (the order is only illustrative).

[0283] For example, image header information includes, but is not limited to, offset information.

[0284] For example, offset information is used to indicate the position of a data region in the image bitstream. When decoding encoded data (i.e., the image bitstream) according to this application, the offset information stored in the image header information can be used to obtain the encoded data and perform decoding operations on it. Encoded data that can be decoded independently (e.g., high-frequency subband encoded data and low-frequency subband encoded data) can be decoded synchronously during decoding to improve decoding speed.

[0285] In one example, the offset information can be the difference between the start position of the image region containing independently decodeable encoded data and the end position of the image header information (also called the offset, which is typically measured in x bytes). For example, in Figure 13 In the example shown, the offset information may include, but is not limited to: the difference between the starting position of the first image data region and the ending position of the image head information, and the difference between the starting position of the second image data region and the ending position of the image head information.

[0286] In another example, the offset information could be the length of the image data region. For example, in Figure 13 In the example shown, the offset information may include, but is not limited to, the length of the first image data region and the length of the second image data region.

[0287] The decoder can obtain VLC encoded data in the first image data region based on the length of the first image data region or the difference between the start position of the first image data region and the end position of the image header information. It can also obtain the start position of the second image data region based on the length of the second image data region or the difference between the start position of the second image data region and the end position of the image header information, and read the arithmetic encoded data within it. For example, as described above, the encoder sets a corresponding pointer for the start position of each data region during the encoding process. Taking the pointer for the start position of the second image data region as an example, each time the encoder writes encoded data for a macroblock into the first image data region, the length of the first image data region increases, and the pointer for the start position of the second image data region moves backward according to the length of the field occupied by the encoded data of the macroblock (which can be greater than or equal to the length of the encoded data). After all encoded data has been written into the image data stream, the encoder can determine the offset information of the start position of the second image data region based on the position pointed to by the current pointer of the second image data region.

[0288] It should be noted that the embodiments in this application only use the image bitstream of a single image as an example for illustration, that is, the bitstream includes only one image data. In the process of encoding video images, the encoder can generate an encoded image bitstream for each image, that is, the image bitstream includes multiple image data, and each image data carries the encoded data of the corresponding image.

[0289] As described above, the encoding / decoding method in this embodiment can also be applied to architectures containing subgraph partitioning units. The structure of the image bitstream generated based on this architecture can be as follows: Figure 14A As shown. In Figure 14A In the example, the image bitstream includes, but is not limited to: image header information and image data (also referred to as image data region).

[0290] In this image bitstream, the encoded data of each sub-image can be encoded and decoded independently. Taking sub-image 1 as an example, the encoded data of sub-image 1 includes VLC encoded data and arithmetic encoded data. The VLC encoded data of sub-image 1 includes the VLC encoded data of each macroblock of sub-image 1, wherein the VLC encoded data of the macroblock includes encoded data generated based on the quantization coefficients of the macroblock that are greater than or equal to a first value.

[0291] The arithmetic coding data of sub-Figure 1 includes, but is not limited to: the arithmetic coding data of each macroblock of sub-Figure 1, wherein the arithmetic coding data of the macroblock includes the coding data generated by the control information corresponding to the macroblock, and the coding data generated based on the quantization coefficient of the macroblock which is less than a first value.

[0292] in, Figure 14A In this context, MBm-VLC represents the VLC-coded data of the m-th macroblock in the subgraph. MBm-CABAC represents the arithmetic-coded data of the m-th macroblock in the subgraph, which is CABAC-coded. This will not be repeated below.

[0293] Figure 14B This is a schematic diagram illustrating the structure of an image stream, which includes, but is not limited to, image header information and image data. Figure 14B Provides another method for interleaving the encoded data of macroblocks in the subgraph, such as... Figure 14B As shown. The VLC encoded data includes the VLC encoded data of each subgraph, and the arithmetic encoded data includes the arithmetic encoded data of each subgraph. The encoded data of each subgraph can be decoded independently.

[0294] In one example, multiple independent encoded data sets can be decoded in parallel. Figure 14A Taking the image bitstream shown as an example, the decoder can decode the encoded data of sub-images 1 to N in parallel. Taking sub-image 1 as an example, the decoder can obtain MB0-VLC and MB0-CABAC of sub-image 1 based on offset information, and decode them in parallel to obtain the VLC decoded data and arithmetic decoded data of MB0 in sub-image 1. The VLC decoded data includes, but is not limited to, quantization coefficients of MB0 greater than or equal to a first value, and the arithmetic decoded data includes, but is not limited to, quantization coefficients of MB0 less than the first value and control information.

[0295] In another example, interdependent encoded data can be decoded in a pipelined parallel manner. For instance, MB0-CABAC can be decoded first to obtain control information, and then MB0-VLC can be decoded based on the control information. Alternatively, MB0-VLC can be decoded first, and when control information is needed, MB0-CABAC can be decoded first, and then MB0-VLC can be decoded again.

[0296] Reference Figure 15 , Figure 15 This is a schematic diagram illustrating the structure of an image bitstream as an example. Figure 15 In the example, the image bitstream includes, but is not limited to, image header information and image data. This image bitstream includes high-frequency subband coded data written to the first image data region and low-frequency subband coded data written to the second image data region. The low-frequency subband coded data includes, but is not limited to, VLC coded data written to the third image data region and arithmetic coded data written to the fourth image data region. The structures of the VLC coded data and the arithmetic coded data can be referenced... Figure 14A or Figure 14B This will not be elaborated upon here.

[0297] Reference Figure 16 , Figure 16 A schematic / conceptual block diagram of a decoder is shown as an example. Figure 16 In the example, the decoder receives, for example, an image bitstream encoded by the encoder to obtain a decoded image of the original image, also known as a decoded image, reconstructed image, etc. During the decoding process, the decoder receives the image bitstream from the encoder, which includes, but is not limited to, image header information and image data.

[0298] exist Figure 16 In the example shown, the decoder includes, but is not limited to: low-frequency subband processing path 1610, high-frequency subband processing path 1620, wavelet inverse transform unit 1630, image combination unit 1640 (also known as image stitching unit), etc.

[0299] For example, the low-frequency subband processing path 1610 is used to acquire low-frequency subband encoded data 1601 to acquire reconstructed low-frequency subband 1606 (also referred to as decoded low-frequency subband). The low-frequency subband processing path 1610 includes, but is not limited to: low-frequency subband entropy decoding unit 1611, inverse quantization / inverse transform unit 1612 (also referred to as low-frequency subband inverse quantization / inverse transform unit), low-frequency subband reconstruction unit 1613, low-frequency subband splicing unit 1615, prediction unit 1614, etc.

[0300] The high-frequency subband processing path 1620 is used to acquire high-frequency subband encoded data 1602 in order to acquire reconstructed high-frequency subband 1631 (also referred to as reconstructed value of high-frequency subband or reconstructed data of high-frequency subband, etc.). The high-frequency subband processing path 1620 includes, but is not limited to: high-frequency subband entropy decoding unit 1621, inverse quantization / inverse transform unit 1622 (also referred to as high-frequency subband inverse quantization / inverse transform unit), high-frequency subband reconstruction unit 1623, etc.

[0301] In some instances, Figure 16 The decoder shown can perform largely the same functions as the reference. Figure 12 The encoder describes the encoding process as the inverse of the decoding process.

[0302] The following is combined Figure 16 The decoder 160 shown herein provides a detailed description of the decoding method in the embodiments of this application.

[0303] For example, the decoder 160 can obtain high-frequency subband encoded data and low-frequency subband encoded data in the image bitstream based on the image header information in the image bitstream. Furthermore, as described above, during the encoding process, the encoder uses macroblocks as the basic encoding unit, and correspondingly, during the decoding process, the decoder also uses macroblocks (e.g., encoded macroblocks) as the basic decoding unit for decoding.

[0304] For example, the low-frequency subband entropy decoding unit 1611 performs entropy decoding on the low-frequency subband encoded data 1601 in the image bitstream, using macroblocks as the basic decoding unit, to obtain the quantization coefficients 1602 (i.e., the quantization coefficients of the current macroblock) and mode information 1607 of the low-frequency subband block.

[0305] The low-frequency subband entropy decoding unit 1611 may optionally include, but is not limited to, a VLC entropy decoding unit and an arithmetic entropy decoding unit, to decode the VLC encoded data and the arithmetic encoded data respectively to obtain the quantization coefficients 1602 and other information or parameters. A detailed description can be found in Figure 11, and will not be repeated here.

[0306] The description of the quantization coefficients 1602 of the low-frequency subband can be found on the encoder side and will not be repeated here. Specifically, the low-frequency subband entropy decoding unit 1611 acquires the coded macroblocks (i.e., the coded data of the macroblocks) of the low-frequency subbands (e.g., LL subbands) of each sub-image in the image bitstream, and performs entropy decoding on each coded macroblock to obtain the quantization coefficients 1602 (which can be simply referred to as the quantization coefficients of the macroblock of the low-frequency subband) and mode information 1607 of the low-frequency subband corresponding to each coded macroblock. During the decoding process, the currently decoded coded macroblock can be referred to as the current block.

[0307] The low-frequency subband entropy decoding unit 1611 is used to output the quantization coefficients 1602 of the low-frequency subband block to the inverse quantization / inverse transform unit 1612, and to output the syntax elements 1607 to the prediction unit 1614.

[0308] The inverse quantization / inverse transform unit 1612 is used to obtain the quantization coefficients 1602 of the low-frequency subband block to obtain the inverse quantization coefficients 1603 of the low-frequency subband block (or it can be the inverse transform coefficients of the current block of the low-frequency subband (depending on whether inverse transform processing has been performed)). Specifically, the inverse quantization / inverse transform unit 1612 performs inverse quantization on the quantization coefficients of the current block of the low-frequency subband, or performs both inverse quantization and inverse transform, to obtain the inverse quantization coefficients of the current block of the low-frequency subband. The inverse quantization / inverse transform unit 1612 outputs the inverse quantization coefficients 1603 of the low-frequency subband block to the low-frequency subband reconstruction unit 1613.

[0309] The low-frequency subband reconstruction unit 1613 is used to obtain the low-frequency subband reconstruction block 1604, which can also be called the reconstruction coefficient of the low-frequency subband block, based on the inverse quantization coefficients 1603 and the prediction block 1605 of the low-frequency subband. Specifically, the low-frequency subband reconstruction unit 1613 adds a prediction block to the inverse quantization coefficients of the current block of the low-frequency subband to obtain the low-frequency subband reconstruction block 1604 corresponding to the current macroblock.

[0310] The prediction unit 1614 is used to acquire mode information 1607 and perform corresponding prediction processing according to the mode information 1607. For example, intra-frame prediction can be performed based on the low-frequency sub-band reconstruction block 1604, or inter-frame prediction can be performed based on the reconstructed low-frequency sub-band 1606. Its execution method can be referred to the coding side, and will not be elaborated here. The prediction unit 1614 outputs prediction block 1605 to the low-frequency sub-band reconstruction block 1604 unit.

[0311] For example, the high-frequency subband entropy decoding unit 1621 acquires the high-frequency subband encoded data 1602 in the image bitstream, and, using macroblocks as the basic decoding unit, acquires the quantization coefficients 1608 (which are the quantization coefficients of the current macroblock) of each high-frequency subband block. Specifically, the high-frequency subband entropy decoding unit 1621 performs entropy decoding on the current block of the high-frequency subband encoded data 1602 to obtain the quantization coefficients of the current block of the high-frequency subband. Optionally, based on entropy decoding, the syntax elements corresponding to the current block can also be obtained. The high-frequency subband entropy decoding unit 1621 outputs the quantization coefficients 1608 of the high-frequency subband block to the inverse quantization / inverse transform unit 1622.

[0312] The inverse quantization / inverse transform unit 1622, also known as the high-frequency subband inverse quantization / inverse transform unit, is used to obtain the quantization coefficients 1608 of the high-frequency subband block to obtain the reconstruction coefficients 1609 of the high-frequency subband block. The reconstruction coefficients 1609 of the high-frequency subband block can be either inverse quantization coefficients after inverse quantization processing or inverse transform coefficients after inverse quantization and inverse transform processing.

[0313] The high-frequency subband reconstruction unit 1623 (also known as the high-frequency subband splicing unit) is used to obtain the reconstruction coefficients 1609 of the high-frequency subband block to obtain the reconstructed high-frequency subband 1631, which can also be referred to as the reconstructed value or reconstructed data of the high-frequency subband. Specifically, the high-frequency subband reconstruction unit 1623 can obtain the reconstruction coefficients corresponding to each macroblock of the high-frequency subband, that is, reconstruct the high-frequency subband block. The high-frequency subband reconstruction unit 1623 can splice the obtained multiple macroblocks to obtain the corresponding high-frequency subband. Among them, the reconstructed high-frequency subband may optionally include the reconstruction of HL subband (e.g., the reconstruction coefficients of HL subband), the reconstruction of HH subband (e.g., the reconstruction coefficients of HH subband), and the reconstruction of LH subband (e.g., the reconstruction coefficients of LH subband).

[0314] The inverse wavelet transform unit 1630 is used to acquire the reconstructed high-frequency subband 1631 and the reconstructed low-frequency subband 1606 to obtain the reconstructed sub-image 1632. Specifically, the inverse wavelet transform unit 1630 acquires the reconstructed low-frequency subband 1606 output by the low-frequency subband stitching unit 1615 and the reconstructed high-frequency subband 1631 output by the high-frequency subband reconstruction unit 1623, and performs an inverse wavelet transform on the reconstructed low-frequency subband 1606 and the reconstructed high-frequency subband 1631 to obtain the reconstructed sub-image 1632. The inverse wavelet transform unit 1630 outputs the reconstructed sub-image 1632 to the image combining unit 1640 (which may also be called the image stitching unit, etc.).

[0315] Image combining unit 1640 is used to acquire reconstructed sub-images 1632 to obtain a reconstructed image 1633 of the original image, which can also be called a decoded image or a decoded image, etc. Specifically, image combining unit 1640 can acquire N reconstructed sub-images (N is an integer greater than 0) of the image (referring to the original image), and stitch (or combine) the N reconstructed sub-images according to the division method (including size and position) of each reconstructed sub-image during encoding to obtain the reconstructed image 1633.

[0316] Optionally, after obtaining the reconstructed image, the image combining unit 1640 can determine whether the reconstructed image contains a padding portion based on the image size information in the image header information and the size information of the current reconstructed image. In one example, if the size of the current reconstructed image is the same as the size indicated by the image size information (i.e., the same as the original image size), the image combining unit 1640 can send the reconstructed image to the display device. In this case, the sizes of the displayed image, the original image, and the reconstructed image are all the same. In another example, if the size of the current reconstructed image is not the same as the size indicated by the image size information (e.g., larger than the original image size), the image combining unit 1640 can remove the padding portion of the current reconstructed image based on the size indicated by the image size information to obtain the displayed image. The size of the displayed image is the same as the size of the original image. Specifically, in the embodiments of this application, when the encoding side performs sub-image division, the division order is preset, usually from left to right in the horizontal direction and from top to bottom in the vertical direction. Correspondingly, at least one sub-image that is filled is usually located at the edge of the image, such as... Figure 9B As shown. For example, the image combining unit 1640 can crop the vertical and / or horizontal edges of the image according to size information to remove the fill portion of the edge sub-image.

[0317] Optionally, in some instances, the image combining unit 1640 may also perform the above-described operation of removing the padding portion during the process of acquiring the reconstructed image, so that the size of the reconstructed image is the same as the size of the original image.

[0318] Optionally, the decoder is used, for example, to output a reconstructed image via the decoder's output port (or output interface) for presentation to or viewing by the user.

[0319] Other variations of the decoder can be used to decode compressed image bitstreams.

[0320] For example, as described above, each sub-image in the image bitstream can include multiple independently decodeable coded data. Specifically, the coded data of the high-frequency subbands of each sub-image, including the coded data of the HH, LH, and HL subbands, can be independently decoded, as can the coded data of the low-frequency subbands, i.e., the LL subbands. Furthermore, the VLC and arithmetic coded data of the low-frequency subbands of each sub-image can be independently decoded. In this scenario, the high-frequency subband entropy decoding unit can obtain each independently decodeable image data region based on the offset information in the image header information, and then obtain the coded data within that image data region. The high-frequency subband entropy decoding unit can decode the coded data of one or more independently decoded image data regions in parallel or serially. Similarly, the low-frequency subband entropy decoding unit can also obtain each independently decoded coded data based on the offset information and decode it in parallel or serial manner.

[0321] Optionally, in the above scenario, the high-frequency subband processing path and / or the low-frequency subband processing path may include at least one processing subpath (not shown in the figure). For example, the high-frequency subband processing path may include three high-frequency processing subpaths to process three coded subbands of a subgraph simultaneously. Of course, in some instances, there may be more than three or fewer high-frequency subband processing subpaths. The more high-frequency subband processing paths there are, the faster the decoding speed. The fewer the paths, the lower the hardware design complexity requirements.

[0322] Reference Figure 17 , Figure 17 A schematic / conceptual block diagram of a decoder is shown as an example. Figure 17 In the example, the wavelet inverse transform unit 1630 can obtain the reconstruction block 1631 of the current block, which can also be called the reconstruction coefficients of the current macroblock, based on the reconstruction coefficients 1609 of the high-frequency sub-band block and the reconstruction coefficients of the low-frequency sub-band block (i.e., the low-frequency sub-band reconstruction block 1606). The sub-graph combination unit 1650 can obtain the reconstructed sub-graph 1632, which can also be called the reconstructed data of the current sub-graph, based on multiple reconstruction blocks 1631 of the sub-graph. Specifically, the sub-graph combination unit 1640 stitches together multiple reconstruction blocks of the sub-graph to obtain the corresponding reconstructed sub-graph 1632. Descriptions of other modules and parameters can be found in [reference needed]. Figure 16 This will not be elaborated upon here.

[0323] This application embodiment can divide the encoding / decoding device (including encoding and decoding devices) into functional modules according to the above method examples. For example, each function can be divided into its own functional modules, or two or more functions can be integrated into one processing module. The integrated modules can be implemented in hardware or as software functional modules. It should be noted that the module division in this application embodiment is illustrative and only represents one logical functional division; other division methods may be used in actual implementation.

[0324] When each function is divided into its own modules, the remaining modules are defined according to their respective functions. Figure 18 A possible structural schematic diagram of the encoding device 1800 involved in the above embodiments is shown, such as... Figure 18As shown, the encoding device may include: an encoding module 1801, used to acquire the data to be encoded of the original image, the data to be encoded including quantization coefficients and control information; the encoding module 1801 is also used to acquire the image bitstream of the original image based on the data to be encoded; wherein, the image bitstream includes arithmetic encoded data and variable-length encoded (VLC) data, the arithmetic encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients less than a first value and control information using arithmetic encoding; the VLC encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients greater than or equal to the first value using VLC entropy encoding, and the control information is used to decode the image bitstream.

[0325] Figure 19 A possible structural schematic diagram of the decoding device 1900 involved in the above embodiments is shown, such as... Figure 19 As shown, the decoding device may include: a decoding module 1901, used to acquire the image bitstream of the original image, the image bitstream including arithmetic encoded data and variable-length encoded (VLC) data; wherein, the arithmetic encoded data is obtained by entropy encoding of the quantization coefficients of the original image that are less than a first value and control information using arithmetic encoding; the VLC encoded data includes encoded data obtained by entropy encoding of the quantization coefficients that are greater than or equal to the first value using VLC entropy encoding; the decoding module 1901 is also used to acquire control information based on the arithmetic encoded data; the decoding module 1901 is also used to acquire the quantization coefficients of the original image based on the control information, arithmetic encoded data and VLC encoded data; the decoding module 1901 is also used to acquire the reconstructed image of the original image based on the quantization coefficients and control information.

[0326] In one example, Figure 20 A schematic block diagram of an apparatus 2000 according to an embodiment of this application is shown. The apparatus 2000 may include a processor 2001 and a transceiver 2002, and optionally, a memory 2003.

[0327] The various components of device 2000 are coupled together via bus 2004, which includes a data bus, a power bus, a control bus, and a status signal bus. However, for clarity, all buses are referred to as bus 2004 in the figure.

[0328] Optionally, the memory 2003 can be used to store instructions for implementing the foregoing method embodiments. The processor 2001 can be used to execute the instructions in the memory 2003, control the transceiver 2002 to receive signals, and control the transceiver 2002 to transmit signals.

[0329] The device 2000 may be an encoder and / or decoder as described in the above method embodiments. Exemplarily, the device may be a terminal device or a server.

[0330] All relevant content of each step involved in the above method embodiments can be referenced from the functional description of the corresponding functional module, and will not be repeated here.

[0331] This application also provides a chip, including one or more interface circuits and one or more processors; the one or more processors receive or send data through the one or more interface circuits, and when the one or more processors execute computer instructions, the steps of the above-described related method steps that implement the method in the above embodiments are executed.

[0332] This embodiment also provides a computer-readable storage medium storing computer instructions. When these computer instructions are executed on an electronic device, the electronic device performs the aforementioned method steps to implement the methods described in the above embodiments. Exemplarily, the computer-readable storage medium includes various media capable of storing program code, such as a USB flash drive, a portable hard drive, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.

[0333] This embodiment also provides a computer program product containing computer instructions that, when executed by a computer or processor, cause the computer to perform the aforementioned related steps to implement the methods in the above embodiments. Exemplarily, the computer program product can be stored in random access memory (RAM), flash memory, read-only memory (ROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), registers, hard disks, portable hard disks, CD-ROMs, or any other form of storage medium known in the art.

[0334] In addition, embodiments of this application also provide an apparatus, which may specifically be a chip, component, or module. The apparatus may include a connected processor and a memory; wherein the memory is used to store computer execution instructions, and when the apparatus is running, the processor may execute the computer execution instructions stored in the memory to cause the chip to execute the methods in the above-described method embodiments.

[0335] In this embodiment, the device, computer-readable storage medium, computer program product, or chip are all used to execute the corresponding methods provided above. Therefore, the beneficial effects they can achieve can be referred to the beneficial effects in the corresponding methods provided above, and will not be repeated here.

[0336] Through the above description of the embodiments, those skilled in the art will understand that, for the sake of convenience and brevity, only the division of the above functional modules is used as an example. In actual applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device can be divided into different functional modules to complete all or part of the functions described above.

[0337] In the several embodiments provided in this application, it should be understood that the disclosed apparatus and methods can be implemented in other ways. For example, the apparatus embodiments described above are merely illustrative; for instance, the division of modules or units is only a logical functional division, and in actual implementation, there may be other division methods. For example, multiple units or components may be combined or integrated into another apparatus, or some features may be ignored or not executed. Furthermore, the mutual coupling or direct coupling or communication connection shown or discussed may be through some interfaces; the indirect coupling or communication connection between apparatuses or units may be electrical, mechanical, or other forms.

[0338] The units described as separate components may or may not be physically separate. A component shown as a unit can be one or more physical units; that is, it can be located in one place or distributed in multiple different locations. Some or all of the units can be selected to achieve the purpose of this embodiment according to actual needs.

[0339] Furthermore, the functional units in the various embodiments of this application can be integrated into one processing unit, or each unit can exist physically separately, or two or more units can be integrated into one unit. The integrated unit can be implemented in hardware or as a software functional unit.

[0340] Any content in the various embodiments of this application, as well as any content in the same embodiment, can be freely combined. Any combination of the above content is within the scope of this application.

[0341] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other forms under the guidance of this application without departing from the spirit and scope of the claims, and all of these forms are within the protection scope of this application.

Claims

1. An encoding method, characterized in that, include: Obtain the data to be encoded from the original image, the data to be encoded including quantization coefficients and control information; Based on the data to be encoded, an image bitstream of the original image is obtained; wherein: the image bitstream includes arithmetic encoded data and variable-length encoded (VLC) data, the arithmetic encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients less than a first value and control information using arithmetic encoding; the VLC encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients greater than or equal to the first value using VLC entropy encoding; the control information is used to decode the image bitstream.

2. The method according to claim 1, characterized in that, The process of obtaining the data to be encoded from the original image includes: The original image is divided into sub-images to obtain N sub-images of the original image, where N is an integer greater than 1; The N subgraphs are quantized to obtain the quantization coefficients; wherein the quantization coefficients include the quantization coefficients of each of the N subgraphs. The control information is obtained based on at least one of the quantization coefficients of each of the N subgraphs.

3. The method according to claim 2, characterized in that, The image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-images.

4. The method according to any one of claims 1-3, characterized in that, The image bitstream also includes offset information, which is used to indicate the positions of the arithmetic encoded data and the VLC encoded data in the image bitstream.

5. The method according to claim 1, characterized in that, The process of obtaining the data to be encoded from the original image includes: Perform wavelet transform on the original image to obtain the wavelet coefficients of the low-frequency subband; The wavelet coefficients of the low-frequency sub-band are quantized to obtain the quantization coefficients of the low-frequency sub-band. The control information is obtained based on at least one of the wavelet coefficients of the low-frequency sub-band and the quantization coefficients of the low-frequency sub-band.

6. The method according to claim 5, characterized in that, The arithmetic-coded data includes quantization coefficients of the low-frequency sub-band that are less than the first value and the control information, and is obtained by entropy coding using arithmetic coding. The VLC-coded data includes quantization coefficients of the low-frequency sub-band that are greater than or equal to the first value, and is obtained by entropy coding using VLC entropy coding.

7. A decoding method, characterized in that, include: The image bitstream of the original image is obtained, and the image bitstream includes arithmetic encoded data and variable-length encoded (VLC) data; wherein: the arithmetic encoded data includes quantization coefficients of the original image that are less than a first value and control information, and entropy encoded data is obtained by using arithmetic encoding; the VLC encoded data includes quantization coefficients of the original image that are greater than or equal to the first value, and entropy encoded data is obtained by using VLC entropy encoding. The control information is obtained based on the arithmetic code data; Based on the control information, the arithmetic coding data, and the VLC coding data, the quantization coefficients of the original image are obtained; Based on the quantization coefficients, a reconstructed image of the original image is obtained.

8. The method according to claim 7, characterized in that, The quantization coefficients include the quantization coefficients of each of the N sub-images of the original image.

9. The method according to claim 8, characterized in that, The image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-images.

10. The method according to any one of claims 7-9, characterized in that, The image bitstream also includes offset information, which is used to indicate the positions of the arithmetic encoded data and the VLC encoded data in the image bitstream.

11. The method according to any one of claims 8-10, characterized in that, The image bitstream includes high-frequency subband coded data and low-frequency subband coded data, wherein the low-frequency subband coded data includes the arithmetic coded data and the VLC coded data; before obtaining the reconstructed image of the original image based on the quantization coefficients, the method further includes: Based on the high-frequency subband coded data, the quantization coefficients of the high-frequency subband are obtained; The process of obtaining the quantization coefficients of the original image based on the control information, the arithmetic coding data, and the VLC coding data includes: Based on the control information, the arithmetic coding data, and the VLC coding data, the quantization coefficients of the low-frequency subband are obtained; The step of obtaining the reconstructed image of the original image based on the quantization coefficient includes: Based on the quantization coefficients of the high-frequency sub-band and the low-frequency sub-band, the reconstruction coefficients of the high-frequency sub-band and the low-frequency sub-band are obtained. The reconstruction coefficients of the high-frequency subband and the low-frequency subband are subjected to inverse wavelet transform to obtain the reconstructed image of the original image.

12. An encoding device, characterized in that, include: The encoding module is used to acquire the data to be encoded from the original image, the data to be encoded including quantization coefficients and control information; The encoding module is further configured to obtain an image bitstream of the original image based on the data to be encoded; wherein the image bitstream includes arithmetic encoded data and variable-length coded (VLC) encoded data, the arithmetic encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients less than a first value and the control information using arithmetic encoding; the VLC encoded data includes entropy encoded data obtained by entropy encoding of quantization coefficients greater than or equal to the first value using VLC entropy encoding, and the control information is used to decode the image bitstream.

13. The encoding device according to claim 12, characterized in that, The encoding module includes: The sub-image partitioning unit is used to partition the original image into N sub-images, where N is an integer greater than 1. A quantization unit is used to quantize the N subgraphs to obtain the quantization coefficients; wherein the quantization coefficients include the quantization coefficients of each of the N subgraphs; A control unit is configured to acquire the control information based on at least one of the quantization coefficients of each of the N subgraphs.

14. The encoding device according to claim 13, characterized in that, The image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-images.

15. The encoding device according to any one of claims 12-14, characterized in that, The image bitstream also includes offset information, which is used to indicate the positions of the arithmetic encoded data and the VLC encoded data in the image bitstream.

16. The encoding device according to claim 11, characterized in that, The encoding module includes: The wavelet transform unit is used to perform wavelet transform on the original image to obtain the wavelet coefficients of the low-frequency subband. A quantization unit is used to quantize the wavelet coefficients of the low-frequency sub-band to obtain the quantization coefficients of the low-frequency sub-band. The control unit is configured to acquire the control information based on at least one of the wavelet coefficients of the low-frequency sub-band and the quantization coefficients of the low-frequency sub-band.

17. The encoding device according to claim 11, characterized in that, The arithmetic-coded data includes quantization coefficients of the low-frequency sub-band that are less than the first value and the control information, and is obtained by entropy coding using arithmetic coding. The VLC-coded data includes quantization coefficients of the low-frequency sub-band that are greater than or equal to the first value, and is obtained by entropy coding using VLC entropy coding.

18. A decoding device, characterized in that, include: A decoding module is used to acquire the image bitstream of the original image, wherein the image bitstream includes arithmetic encoded data and variable-length coded (VLC) encoded data; wherein, the arithmetic encoded data includes quantization coefficients of the original image that are less than a first value and control information, and entropy encoded data obtained by using arithmetic encoding; the VLC encoded data includes quantization coefficients of the original image that are greater than or equal to the first value, and entropy encoded data obtained by using VLC entropy encoding. The decoding module is also used to obtain the control information based on the arithmetic encoded data; The decoding module is also used to obtain the quantization coefficients of the original image based on the control information, the arithmetic coding data, and the VLC coding data; The decoding module is also used to obtain a reconstructed image of the original image based on the quantization coefficients.

19. The decoding apparatus according to claim 18, characterized in that, The quantization coefficients include the quantization coefficients of each of the N sub-images of the original image.

20. The decoding apparatus according to claim 19, characterized in that, The image bitstream includes arithmetic encoded data and VLC encoded data for each of the N sub-images.

21. The decoding apparatus according to any one of claims 18-20, characterized in that, The image bitstream also includes offset information, which is used to indicate the positions of the arithmetic encoded data and the VLC encoded data in the image bitstream.

22. The decoding apparatus according to claim 18, characterized in that, The image bitstream includes high-frequency subband coded data and low-frequency subband coded data, wherein the low-frequency subband coded data includes the arithmetic coded data and the VLC coded data; the decoding module is further configured to: Based on the high-frequency subband coded data, the quantization coefficients of the high-frequency subband are obtained; Based on the control information, the arithmetic coding data, and the VLC coding data, the quantization coefficients of the low-frequency subband are obtained; Based on the quantization coefficients of the high-frequency sub-band and the low-frequency sub-band, the reconstruction coefficients of the high-frequency sub-band and the low-frequency sub-band are obtained; wavelet inverse transform is performed on the reconstruction coefficients of the high-frequency sub-band and the low-frequency sub-band to obtain the reconstructed image of the original image.

23. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a computer program that, when executed on a computer or processor, causes the computer or processor to perform the method as described in any one of claims 1 to 11.

24. A computer program product, characterized in that, The computer program product includes computer instructions that, when executed by a computer or processor, cause the steps of the method as described in any one of claims 1 to 11 to be performed.

25. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a bitstream that is generated according to the encoding method described in any one of claims 1 to 7.