Encoding / decoding method and apparatus, and communications system
By employing smaller prediction blocks with fixed shift parameters for intra-prediction, the computational and storage inefficiencies of VVC are addressed, enhancing video compression efficiency.
Patent Information
- Application Number
- JP2025166489
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2019-10-04
- Filing Date
- 2025-10-02
- Publication Date
- 2026-01-14
AI Technical Summary
The existing Versatile Video Coding (VVC) standard requires significant computational resources and storage space due to the use of matrix-based intra-prediction modes, particularly in the intra-prediction block derivation process, which is inefficient.
A method is introduced that uses smaller prediction blocks for intra-prediction, performing matrix calculations on these blocks and then upsampling to achieve the same size as the original block, with fixed shift parameters to reduce computational requirements and storage needs.
This approach significantly reduces computation time and storage space without compromising encoding/decoding accuracy, improving efficiency in video compression processes.
Smart Images

Figure 2026004482000001_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority to U.S. Provisional Patent Application No. 62 / 911,166, filed October 4, 2019, which is incorporated herein by reference in its entirety.
[0002] The present disclosure relates to the field of telecommunications technology, and more particularly to methods for encoding and decoding images, such as still images and video. [Background technology]
[0003] Versatile Video Coding (VVC) is a next-generation video compression standard used to replace current standards such as the High Efficiency Video Coding standard (H.265 / HEVC). The VVC coding standard provides higher coding quality than current standards. To achieve this goal, various intra- and inter-prediction modes are considered. When using these prediction modes, video can be compressed so that less data is transmitted in the bitstream (binary format). Matrix-based intra-prediction (MIP) is one such mode. MIP is an intra-prediction mode. When operating in MIP mode, an encoder or decoder can derive an intra-prediction block based on a current coding block (e.g., a collection of bits or digits that can be coded and / or decoded together and transmitted as a unit). However, deriving such a prediction block can require a significant amount of computational resources and additional storage space. Therefore, an improved method for addressing this issue is beneficial and desirable. Summary of the Invention
[0004] When performing an MIP process, various prediction parameters are determined and utilized. Conventionally, some of these prediction parameters can be determined by multiple lookup tables. These lookup tables must be stored in encoder and / or decoder components (e.g., memory, cache, etc.), thus requiring storage space. Furthermore, accessing these lookup tables consumes computation time and resources. Therefore, it would be beneficial to have improved methods, apparatus, and systems to address the aforementioned problems.
[0005] The present disclosure provides a method for predicting, encoding, and / or decoding an image based on a MIP process. The MIP process can generate a prediction block of a current block, where the size of the prediction block is smaller than the size of the current block. For example, an 8x8 current block can have a 4x4 prediction block. The MIP prediction block, which is smaller in size than the current block, is derived by performing matrix calculations, which consume fewer computational resources than performing matrix calculations on a larger block. After the matrix calculations, an upsampling process is applied to the MIP prediction block to derive an intra prediction block of the same size as the current block. For example, an 8x8 intra prediction block can be derived from a 4x4 MIP prediction block by invoking an interpolation and / or extrapolation upsampling process.
[0006] More specifically, the method includes, for example, (i) determining prediction parameters for a current block in a bitstream; (ii) determining MIP input samples for the current block (e.g., “p[x]” in equations (P-1), (P-2), and (P-3) discussed in detail below) based on neighboring samples of the current block and the prediction parameters; (iii) setting a numerical shift parameter (e.g., “s” in equation (B) discussed in detail below) to a first fixed value; (iv) setting an offset shift parameter (e.g., “f” in equation (B) discussed in detail below) to a second fixed value; (v) determining a MIP weighting matrix for the current block based on the prediction parameters; (vi) determining MIP predicted samples (e.g., "predMip[x][y]" in equation (C) discussed in detail below) for the current block based on the MIP weighting matrix, MIP input samples, an offset shift parameter "fO", and a numerical shift parameter (sW); and (vii) performing an upsampling process on the MIP predicted samples to generate intra predicted samples (e.g., "predSamples[x][y]" in equation (G) discussed in detail below).
[0007] Without wishing to be bound by theory, setting either or both of the numerical shift parameters and the offset shift parameters to fixed values improves the overall encoding / decoding efficiency without significantly affecting the accuracy of the encoding / decoding process. With this arrangement, the present method provides a solution that significantly reduces the computation time and storage space required when performing the MIP process.
[0008] Another aspect of the present disclosure includes a system for encoding / decoding images and videos. The system may include an encoding subsystem (or encoder) and a decoding subsystem (or decoder). The encoding subsystem includes a partitioning unit, a first prediction unit, and an entropy coding unit. The partitioning unit is configured to receive an input video and partition the input video into one or more coding units (CUs). The first intra prediction unit is configured to generate prediction blocks corresponding to each CU based on prediction parameters derived from encoding the input video. The entropy coding unit is configured to convert parameters for deriving the prediction blocks into a bitstream. The decoding subsystem includes a parser and a second intra prediction unit. The parser is configured to parse the bitstream to obtain numerical values (e.g., values associated with one or more CUs). The second intra prediction unit is configured to convert the numerical values into an output video based on the prediction parameters. [Brief explanation of the drawings]
[0009] In order to make the technical solutions described in the embodiments of the present disclosure clearer, the drawings used to describe the embodiments will be briefly described. Obviously, the drawings described below are for illustration only, not for limitation. It should be understood that those skilled in the art can obtain other drawings based on these drawings without original work.
[0010] [Figure 1A] FIG. 1 is a schematic diagram of a system according to an embodiment of the present disclosure. [Figure 1B] FIG. 1 is a schematic diagram illustrating a MIP process according to an embodiment of the present disclosure. [Figure 2] FIG. 1 is a schematic diagram of an encoding system according to an embodiment of the present disclosure. [Figure 3] FIG. 2 is a schematic diagram illustrating the derivation of intra-predicted blocks using MIP mode according to an embodiment of the present disclosure. [Figure 4] FIG. 1 is a schematic diagram of a decoding system according to an embodiment of the present disclosure. [Figure 5]1 is a flowchart illustrating a method of an embodiment of the present disclosure. [Figure 6] 1 is a flowchart illustrating a method according to an embodiment of the present disclosure. [Figure 7] 1 is a schematic diagram of an apparatus (e.g., an encoder) according to an embodiment of the present disclosure. [Figure 8] 1 is a schematic diagram of an apparatus (e.g., an encoder) according to an embodiment of the present disclosure. [Figure 9] 1 is a schematic diagram of an apparatus (e.g., a decoder) according to an embodiment of the present disclosure. [Figure 10] 1 is a schematic diagram of an apparatus (e.g., a decoder) according to an embodiment of the present disclosure. [Figure 11] 1 is a schematic diagram of an apparatus (e.g., an encoder) according to an embodiment of the present disclosure. [Figure 12] 1 is a schematic diagram of an apparatus (e.g., a decoder) according to an embodiment of the present disclosure. [Figure 13] 1 is a schematic diagram of a communication system according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION
[0011] To facilitate understanding of the present disclosure, the disclosure will now be described in more detail below with reference to the accompanying drawings.
[0012] 1A is a schematic diagram of a system 100 according to an embodiment of the present disclosure. The system 100 can encode, transmit, and decode images. The system 100 can also be applied to encode, transmit, and decode video, which is composed of a sequence of images. More specifically, the system 100 can receive input images and process the input images to generate output images. The system 100 includes an encoding device 100a and a decoding device 100b. The encoding device 100a includes a segmentation unit 101, a first intra prediction unit 103, and an entropy coding unit 105. The decoding device 100b includes a parsing unit 107 and a second intra prediction unit 109.
[0013] The divider 101 is configured to receive an input video 10 and divide the input video 10 into one or more coding tree units (CTUs) or coding units (CUs) 12. The one or more CUs 12 are sent to a first intra predictor 103. The first intra predictor 103 is configured to derive prediction blocks for each of the one or more CUs 12 by performing a MIP process. In some embodiments, the MIP process has different approaches based on the size of the CUs 12 to handle CUs 12 of different sizes. For example, for each type of one or more CUs 12, the MIP process has a designated MIP size identifier (e.g., 0, 1, 2, etc.).
[0014] The first intra predictor 103 first determines prediction parameters (e.g., width, height, size, etc.) of CU12. Accordingly, the first intra predictor 103 can determine a MIP size identifier for CU12. The first intra predictor 103 further derives reference samples for CU12 (e.g., using neighboring samples of CU12, such as upper neighboring samples and left neighboring samples, which will be discussed in detail with reference to FIG. 3). Then, the first intra predictor 103 derives a MIP prediction for CU12 based on the reference samples and the corresponding MIP weighting matrix. The first intra predictor 103 can use the MIP prediction as an intra prediction 14 for CU12. The intra prediction 14 and the prediction parameters for deriving the intra prediction 14 are then sent to the entropy encoder 105 for further processing.
[0015] The entropy coding unit 105 is configured to convert the prediction parameters into a binary format for deriving the intra prediction 14. In response, the entropy coding unit 105 generates a bitstream 16 based on the intra prediction 14. In some embodiments, the bitstream 16 can be transmitted over a communication network or stored on a disk or server.
[0016] The decoding device 100b receives the bitstream 16 as an input bitstream 17. The parser 107 parses the input bitstream 17 (in binary format) and converts it into numerical values 18. The numerical values 18 indicate characteristics of the input video 10 (e.g., color, brightness, depth, etc.). The numerical values 18 are transmitted to the second intrapredictor 109. The second intrapredictor 109 can then convert these numerical values 18 into an output video 19 (e.g., based on a process similar to that performed by the first intrapredictor 103; related embodiments will be discussed in detail with reference to FIG. 4). The output video 19 can then be stored, transmitted, and / or rendered by an external device (e.g., a storage device, a transmitter, etc.). The stored video can then be displayed by a display device.
[0017] FIG. 1B is a schematic diagram illustrating a MIP process S100 according to an embodiment of the present disclosure. The MIP process includes four major steps: S101, S102, S103, and S104. In step S101, prediction parameters for the MIP process S100 are determined. The prediction parameters include the type or size of the current block (e.g., indicated by a MIP size identifier such as “mipSizeId”), the number of reference samples within each boundary (e.g., “boundySize”), the number of MIP input samples (e.g., “inSize”), and the dimensions of the MIP prediction block generated by matrix multiplication (e.g., “predSize×predSize”). Based on the size of the current block, the MIP size identifier can be “0,” “1,” or “2,” and the MIP size identifier is recorded in the parameter “mipSizeId.” Different blocks may have different prediction parameters.
[0018] In step S102, the MIP process obtains reference pixels. The reference pixels can be from the upper neighboring block and / or the left neighboring block. The pixel from the upper neighboring block is stored as a parameter "refT" and the pixel from the left neighboring block is stored as a parameter "refL".
[0019] In step S103, input samples for the MIP process are determined. The input samples can be determined by three sub-steps: S1031, S1032, and S1033. In sub-step S1031, a downsampling process is performed based on reference pixels (e.g., from step S102) to generate reference samples. In sub-step S1031, a reference sampling area (or buffer sampling area) is determined. In some embodiments, a matrix transposition process may be included in sub-step S1032. In sub-step S1033, a matrix multiplication calculation is performed based on the input samples.
[0020] In step S104, intra MIP prediction samples are generated. Step S104 includes four sub-steps: S1041, S1042, S1043, and S1044. In sub-step S1041, a MIP prediction block is generated based on a MIP weighting matrix, an offset shift parameter (e.g., "fO"), and a numerical shift parameter (e.g., "sW"). In the present disclosure, the offset shift parameter and the numerical shift parameter are set to fixed values. In sub-step S1042, an interpolation process is performed on the MIP prediction block. In sub-step S1043, the MIP prediction block is transposed. In sub-step S1044, intra MIP prediction samples are generated. In some embodiments, the intra MIP prediction samples can be generated by considering prediction samples from upper neighboring pixels. In other embodiments, the intra MIP prediction samples can be generated without considering prediction samples from upper neighboring pixels (e.g., only considering prediction samples from left neighboring pixels). Details of the MIP process are discussed below with reference to FIG. 3 and corresponding equations.
[0021] FIG. 2 is a schematic diagram of an encoding system 200 according to one embodiment of the present disclosure. The encoding system 200 is configured to encode, compress, and / or process an input image 20 to generate an output bitstream 21 in binary format. The encoding system 200 includes a divider 201 configured to divide the input image 20 into one or more coding tree units (CTUs) 22. In some embodiments, the divider 201 can divide the image into slices, tiles, and / or bricks. Each of the bricks may include one or more integral and / or partial CTUs 22. In some embodiments, the divider 201 can also form one or more subpictures, each of which may include one or more slices, tiles, or bricks. The divider 201 sends the CTUs 22 to a predictor 202 for further processing.
[0022] The prediction unit 202 is configured to generate a prediction block 23 for each of the CTUs 22. The prediction block 23 can be generated using various interpolation and / or extrapolation methods based on one or more inter- or intra-prediction methods. As shown in FIG. 2, the prediction unit 202 may further include a block division unit 203, a motion estimation (ME) unit 204, a motion compensation (MC) unit 205, and an intra-prediction unit 206. The block division unit 203 is configured to divide the CTUs 22 into smaller coding units (CUs) or coding blocks (CBs). In some embodiments, the CUs can be generated from the CTUs 22 using various methods, such as quadtree division, binary tree division, or ternary tree division. The ME unit 204 is configured to estimate changes caused by the motion of an object shown in the input image 20 or the motion of an image capture device that generates the input image 20. The MC unit 205 is configured to adjust and compensate for the changes caused by the motion. Both the ME unit 204 and the MC unit 205 are configured to derive inter-predicted blocks (at different times) for a CU (or a portion of a CU). In some embodiments, the ME unit 204 and the MC unit 205 can derive the inter-predicted blocks using a rate-distortion optimized motion estimation method.
[0023] The intra predictor 206 is configured to derive (at the same time) intra-predicted blocks of a CU (or a portion of a CU) using various intra-prediction modes, including the MIP mode. Details of the derivation of intra-predicted blocks using the MIP mode (hereinafter referred to as the "MIP process") are discussed with reference to Figures 1B and 3. During the MIP process, the intra predictor 206 first derives one or more reference samples from neighboring samples of the CU, for example, by directly using the neighboring samples as reference samples, downsampling the neighboring samples, or directly extracting from the neighboring samples (e.g., step 301 of Figure 3).
[0024] Second, the intra predictor 206 derives prediction samples at multiple sample positions within the CU using the reference samples, the MIP matrix, and the shifting parameters. The sample positions may be preset sample positions within the CU. For example, the sample positions may be positions within the CU with odd horizontal and vertical coordinate values (e.g., x=1, 3, 5, etc., and y=1, 3, 5, etc.). The shifting parameters include an offset shift parameter and a numeric shift parameter, which can be used in the shifting operation when generating the prediction samples. This arrangement allows the intra predictor 206 to generate prediction samples in the CU (i.e., the term "MIP prediction" or "MIP prediction block" refers to a group of such prediction samples) (e.g., step 302 in FIG. 3). In some embodiments, the sample positions may be positions within the CU with even horizontal and vertical coordinate values.
[0025] Third, the intra predictor 206 can derive prediction samples at the remaining positions (e.g., that are not sample positions) of the CU (e.g., step 303 of FIG. 3). In some embodiments, the intra predictor 206 can derive the prediction samples at the remaining positions using an interpolation filter. Through the above process, the intra predictor 206 can generate a prediction block 23 for the CU within the CTU 22.
[0026] Referring to FIG. 2 , the prediction unit 202 outputs a prediction block 23 to an adder 207. The adder 207 calculates a difference (e.g., a residual R) between the output of the splitter 201 (e.g., a CU in the CTU 22) and the output of the prediction block 202 (i.e., the prediction block 23 of the CU). The transform unit 208 reads the residual R and performs one or more transform operations on the prediction block 23 to obtain coefficients 24 for further use. The quantization unit 209 can quantize the coefficients 24 and output quantized coefficients 25 (e.g., levels) to an inverse quantization unit 210. The inverse quantization unit 210 performs a scaling operation on the quantized coefficients 25 and outputs reconstructed coefficients 26 to an inverse transform unit 211. The inverse transform unit 211 performs one or more inverse transforms corresponding to the transform performed by the transform unit 208 and outputs a reconstructed residual 27.
[0027] The adder 212 then calculates a reconstructed CU by adding the CU's prediction block 23 from the predictor 202 to the reconstructed residual 27. The adder 212 also sends its output 28 to the predictor 202 to be used as an intra-prediction reference. After all CUs in the CTU 22 are reconstructed, the filter 213 can perform in-loop filtering on the reconstructed picture 29. The filter 213 can include one or more filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, an adaptive loop filter (ALF), a luma mapping with chroma scaling (LMCS) filter, a neural network-based filter, and other suitable filters that reduce coding artifacts or improve the coding quality of the picture.
[0028] The filtering unit 213 can then send the decoded picture 30 (or sub-picture) to a decoded picture buffer (DPB) 214. The DPB 214 outputs the decoded picture 31 based on the control information. The picture 31 stored in the DPB 214 may also be used as a reference picture for inter-prediction or intra-prediction by the predictor 202.
[0029] The entropy coder 215 is configured to convert the pictures 31, parameters from various parts of the coding system 200, and supplemental information (e.g., information for controlling or communicating with the system 200) into a binary format, so that the entropy coder 215 can generate the output bitstream 21 accordingly.
[0030] In some embodiments, the encoding system 200 may be a computing device including a processor and a storage medium having one or more encoding programs. When the processor reads and executes the encoding programs, the encoding system 200 may receive an input image 20 and generate an output bitstream 21 in response. In some embodiments, the encoding system 200 may be a computing device including a single chip. Each part or element of the encoding system 200 may be implemented as an integrated circuit on a chip.
[0031] 3 is a schematic diagram illustrating a MIP process according to an embodiment of the present disclosure. The MIP process may be performed by an intra predictor (e.g., the intra predictor 206). As shown in FIG. 3, the intra predictor may include a prediction module 301 and a filtering module 302. As also shown in FIG. 3, the MIP process includes three steps 301, 302, and 303. The MIP process may generate a prediction block based on a current block or coding block 300 (e.g., a CU or multiple partitions of a CU).
[0032] Step 301 In step 301, the intra predictor 206 may generate reference samples 32 and 34 using neighboring samples 31 and 33 of the coding block 300. In the illustrated embodiment, the neighboring sample 31 is an upper neighboring sample, and the neighboring sample 33 is a left neighboring sample. The intra predictor 206 may calculate the average of the values of every two of the neighboring samples 31 and 33 and set this average as the value of the reference sample 32 and 34, respectively. In some embodiments, the intra predictor 206 may select one value of each of the two neighboring samples 31 and 33 as the value of the reference sample 32 or 34. In the illustrated embodiment, the intra predictor 206 derives four reference samples 32 from the eight upper neighboring samples 31 of the coding block 300 and another four reference samples 34 from the eight left neighboring samples 33 of the coding block 300.
[0033] In step 301, the intra predictor determines the width and height of the coding block 300, denoted by the variables "cbWidth" and "cbHeight," respectively. In some embodiments, the intra predictor 206 may employ a rate-distortion optimized mode decision process to determine the intra prediction mode (e.g., whether MIP mode is used). In such embodiments, the coding block 300 may be divided into one or more transform blocks, the widths and heights of which are denoted by the variables "nTbW" and "nTbH," respectively. If MIP mode is used as the intra prediction mode, the intra predictor determines the MIP size identifier (denoted by the variable "mipSizeId") based on the following conditions A to C: [Condition A] If both "nTbW" and "nTbH" are 4, set "mipSizeId" to 0. [Condition B] Otherwise, if "cbWidth" or "cbHeight" is 4, set "mipSizeId" to 1. [Condition C] If neither of these conditions is met, set "mipSizeId" to 2.
[0034] As an example, if the size of the coding block 300 is "8x8" (i.e., "cbWidth" and "cbHeight" are both 8), "mipSizeId" is set to 2. As another example, if the size of the transformed block of the coding block 300 is "4x4" (i.e., "nTbW" and "nTbH" are both 4), "mipSizeId" is set to 0. As yet another example, if the size of the coding block 300 is "4x8", "mipSizeId" is set to 1.
[0035] In the embodiment shown, there are three types of "mipSizeId": "0", "1", and "2". Each type of MIP size identifier (i.e., the variable "mipSizeId") corresponds to a particular way of performing the MIP process (e.g., using a different MIP matrix). In other embodiments, there may be more than three types of MIP size identifiers.
[0036] Based on the MIP size identifier, the intra predictor can determine the variables (“Size” and “predSize”) based on conditions D through F below. [Condition D] If "mipSizeId" is 0, set "boundarySize" to 2 and "predSize" to 4. [Condition E] If "mipSizeId" is 1, set "boundarySize" to 4 and "predSize" to 4. [Condition F] If "mipSizeId" is 2, set "boundarySize" to 4 and "predSize" to 8.
[0037] In the illustrated embodiment, "boundarySize" represents the number of reference samples 32, 34 derived from the upper and left neighboring samples 31, 33, respectively, of the coding block 300. The variable "predSize" is used in subsequent calculations (i.e., in equation (C) below).
[0038] In some embodiments, the intra predictor may also derive a variable "isTransposed" to indicate the order in which the reference samples 32, 34 are stored in the temporal array. For example, "isTransposed" equal to "0" indicates that the intra predictor should present the reference sample 32 derived from the upper neighboring sample 31 of the coding block 300 before the reference sample 34 derived from the left neighboring sample 33. Alternatively, "isTransposed" equal to "1" indicates that the intra predictor should present the reference sample 34 derived from the left neighboring sample 33 of the coding block 300 before the reference sample 32 derived from the upper neighboring sample 31. In the implementation of the coding system 200, the value of "isTransposed" is sent to an entropy coder (e.g., the entropy coder 215) as one of the parameters of the MIP process to be coded and written into a bitstream (e.g., the output bitstream 21). Accordingly, in the implementation of the decoding system 400 of FIG. 4 described in this disclosure, the value of “isTransposed” can be received from a parser (e.g., parser 401) by parsing the input bitstream (which may be output bitstream 21).
[0039] The intra prediction unit may further determine a variable "inSize" to indicate the number of reference samples 32, 34 used in deriving the MIP prediction. The value of "inSize" is determined by the following equation (A): In this disclosure, the meaning and operation of all operators in the equation are identical to the corresponding operators specified in the ITU-T H.265 standard.
[0040] inSize = (2 * boundarySize) - (mipSizeId = = 2) ? 1:0; (A) For example, "==" is the comparison operator, which means "equal to." For example, if "mipSizeId" is 2, then "inSize" is 7 (calculated by (2 x 4) - 1). For example, if "mipSizeId" is 1, then "inSize" is 8 (calculated by (2 x 4) - 0). In some embodiments, the parameter "inSize" can be found in the Size-Id table below.
[0041] [Table 1]
[0042] The intra predictor may invoke the following process to derive the reference samples 32, 34 stored in the array p[x] (where "x" ranges from "0" to "inSize-1"). The intra predictor may derive "nTbW" samples from the upper neighboring samples 31 of the coding block 300 (and store them in the array "refT") and may derive "nTbH" samples from the left neighboring samples 33 of the coding block 300 (and store them in the array "refL").
[0043] The intra predictor may initiate a downsampling process on "refT" to obtain "boundarySize" samples and store "boundarySize" samples in "refT." The intra predictor 206 may initiate a downsampling process on "refL" to obtain "boundarySize" samples and store "boundarySize" samples in "refL."
[0044] In some embodiments, the intra predictor can combine the arrays "refT" and "refL" into a single array "pTemp" based on the order indicated by the variable "isTransposed." The intra predictor can derive "isTransposed" to indicate the order of reference samples stored in the temporal array "pTemp." For example, "isTransposed" being "0" (or FALSE) indicates that the intra predictor presents reference sample 32 derived from upper neighboring sample 31 of coding block 300 before reference sample 34 derived from left neighboring sample 33. In another case, "isTransposed" being "1" (or TRUE) indicates that the intra predictor presents reference sample 34 derived from left neighboring sample 33 of coding block 300 before reference sample 32 derived from upper neighboring sample 31. In some embodiments, in the implementation of coding system 200, the intra predictor can determine the value of "isTransposed" using a rate-distortion optimal method. In some embodiments, in an implementation of the encoding system 200, the intra predictor can determine the value of "isTransposed" based on a comparison and / or correlation between neighboring samples 32, 34 and the coding block 300. In an implementation of the encoding system 200, the value of "isTransposed" can be sent to an entropy coder (e.g., the entropy coder 215) as one of the parameters of the MIP process to be written to a bitstream (e.g., the output bitstream 21). Accordingly, in an implementation of the decoding system 400 of FIG. 4 described in this disclosure, the value of "isTransposed" can be received from a parser (e.g., the parser 401) by parsing an input bitstream (which may be the output bitstream 21).
[0045] In some embodiments, the parameter "mipSizeId" can be used to determine whether the selected size parameter of the current block is within a predetermined range. More specifically, "mipSizeId" equal to "0" or "1" means that the selected size parameter is within the predetermined range. "mipSizeId" equal to "2" means that the selected size parameter is not within the predetermined range. That is, the MIP input sample can be determined based on the buffer space (e.g., "pTemp"), the MIP size identifier (e.g., "mipSizeId"), and the bit depth of the neighboring samples (e.g., "BitDepth"), as discussed in more detail below.
[0046] The intra prediction unit can determine the array "p[x]" (x is from "0" to "inSize-1") based on the following conditions G and H. [Condition G] If "mipSizeId" is 2, p[x] = pTemp[x+1] - pTemp[0]. [Condition H] Otherwise (e.g., "mipSizeId" is less than 2), then p[0] = pTemp[0] - (1 << (BitDepth-1)) and p[x] = pTemp[x] - pTemp[0] (for x from 1 to "inSize-1").
[0047] In the above condition H, "BitDepth" is the bit depth of the color component (e.g., Y component) of the sample in the coding block 300. The symbol "<<" is the bit shift operation symbol used in the ITU-T H.265 standard.
[0048] Alternatively, the intra predictor can derive the array p[x] (for x from "0" to "inSize-1") based on the following conditions I and J: [Condition I] If "mipSizeId" is 2, p[x] = pTemp[x+1] - pTemp[0]. [Condition J] Otherwise (e.g., "mipSizeId" is less than 2), then p[0] = (1<<(BitDepth-1)) - pTemp[0] and p[x] = pTemp[x] - pTemp[0] (for x from 1 to "inSize-1").
[0049] In some embodiments, the intra predictor can determine the value of the array p[x] using a unified calculation method without determining the value of "mipSizeId." For example, the intra predictor can add "(1<<(BitDepth-1))" as an additional element in "pTemp" and calculate p[x] as "pTemp[x]-pTemp[0]."
[0050] In some embodiments, the parameter "(1<<(BitDepth-1))" may be a constant. In some embodiments, the parameter "(1<<(BitDepth-1))" may be denoted as "2^(BitDepth-1)". Accordingly, the parameters "p[0]" and "p[x]" may be calculated based on the following equations P-1, P-2, and P-3:
[0051]
number
number
number
[0052] Equations P-1 and P-2 apply when "mipSizeId" is equal to "0" or "1," meaning the selected size parameter is within a predetermined range. After determining that the selected size parameter of the current block is within the predetermined range, "1<<(BitDepth-1)" can be determined. Then, the difference between "1<<(BitDepth-1)" and "pTemp[0]" can be determined. The difference is set to p[0]. Then, p[x] can be calculated based on the above equations P-1 and P-2.
[0053] Formula P-3 applies when "mipSizeId" is equal to "2", which means the selected size parameter is not within the predetermined range. Assume the current block is a 4x4 block, which means there are four values in the buffer area "pTemp". These four values are pTemp[0], pTemp[1], pTemp[2], and pTemp[3]. Based on the above formula P-3 and these four values, the array "p[x]" can be determined. The values in the array "p[x]" are sometimes called MIP input samples.
[0054] Step 302 In step 302, the intra predictor (or prediction module 301) derives a MIP prediction for the coding block 300 by using the reference samples 32, 34 and a MIP matrix. The MIP matrix is selected from a set of predefined MIP matrices based on its corresponding MIP mode identifier (i.e., variable "mipModeId") and MIP size identifier (i.e., variable "mipSizeId").
[0055] The MIP prediction derived by the intra predictor includes partial predicted samples 35 for all or some sample positions within the coding block 300. The MIP prediction is represented as "predMip[x][y]".
[0056] 3, the partial predicted samples 35 are the samples indicated by grey squares in the current block 300. The reference samples 32, 34 in the array "p[x]" derived in step 301 are used as input to the prediction module 301. The prediction module 301 calculates the partial predicted samples 35 by using the MIP matrix and shifting parameters. The shifting parameters include an offset shifting parameter ("fO") and a value shifting parameter ("sW"). In some embodiments, the prediction module 301 derives the partial prediction sample 35 having coordinates (x, y) based on the following equations (B) and (C):
[0057]
number
[0058]
number
[0059] In the above equation (B), the parameter "fO" is an offset shift parameter used to determine the parameter "oW" or offset value. The parameter "sW" is a numeric shift parameter. "p[i]" is the reference sample. The symbol ">>" is the binary right shift operator specified in the H.265 standard.
[0060] In the above formula (C), "mWeight[i][j]" is a MIP weighting matrix, and the matrix elements are fixed constants for both encoding and decoding. Alternatively, in some embodiments, the encoding system 200 is implemented using an adaptive MIP matrix. For example, the MIP weighting matrix can be updated by various training methods using one or more coded pictures as input or using images provided to the encoding system 200 by external means. The intra predictor can send "mWeight[i][j]" to an entropy encoder (e.g., entropy encoder 215) when a MIP mode is determined. The entropy encoder can then write "mWeight[i][j]" into the bitstream, for example, into one or more special data units in the bitstream containing MIP data. Accordingly, in some embodiments, an implementation of the decoding system 400 using an adaptive MIP matrix may update the MIP matrix using a training method that inputs, for example, one or more coded pictures or blocks or pictures from other bitstreams that are provided by external semantics or that the parser 401 obtains by parsing special data units in the input bitstream that contain MIP matrix data.
[0061] The predictor 301 may determine the values of "sW" and "fO" based on the size of the current block 300 and the MIP mode used for the current block 300. In some embodiments, the predictor 301 may obtain the values of "sW" and "fO" by using a lookup table. For example, "sW" may be determined using Table 1 below.
[0062] [Table 2]
[0063] In some embodiments, the numerical shifting parameter “sW” can be set to a first fixed value, such as 5 or 6. In such embodiments, it is not necessary to use Table 1 above to look up the value of the numerical shifting parameter “sW.” For example, if “mipSizeId” is equal to “0” or “2,” the numerical shifting parameter “sW” can be set to “5.” As another example, if “mipSizeId” is equal to “2,” the numerical shifting parameter “sW” can be set to “5.” Table 2 below illustrates different settings of the numerical shifting parameter “sW.” In some embodiments, the numerical shifting parameter “sW” can be set by the prediction module 301.
[0064] [Table 3]
[0065] In some embodiments, the prediction module may set "sW" to a constant. For example, the prediction module may set "sW" to "5" for blocks of various sizes having different MIP modes. As another example, the prediction module 301 may set "sW" to "6" for blocks of various sizes having different MIP modes. As yet another example, the prediction module may set "sW" to "7" for blocks of various sizes having different MIP modes.
[0066] In some embodiments, the predictor 301 may determine the offset shift parameter "fO" using Table 3 below.
[0067] [Table 4]
[0068] In some embodiments, the offset shift parameter “fO” can be set to a second fixed value, such as 23, 32, 46, 56, or 66. The second fixed value has a preferred range of 1 to 100. In such embodiments, it is not necessary to use Table 3 above to look up the value of the offset shift parameter “fO.” In some embodiments, the offset shift parameter “fO” can be set based on the parameter “mipSizeId.” For example, if “mipSizeId” is equal to “0,” the offset shift parameter “fO” can be set to “34.” As another example, if “mipSizeId” is equal to “1,” the offset shift parameter “fO” can be set to “23.” As yet another example, if “mipSizeId” is equal to “1,” the offset shift parameter “fO” can be set to “46.” Table 4 below illustrates different settings for the offset shift parameter “fO.” In some embodiments, the offset shift parameter “fO” can be set by the prediction module 301.
[0069] [Table 5]
[0070] Referring to equation (B) above, if the numerical shift parameter "sW" and the offset shift parameter "fO" are set to fixed values, the parameter "oW" can also be a constant, which will improve the computation speed of the entire MIP process.
[0071] In some embodiments, the intra prediction unit can perform a clipping operation on the values of the MIP predicted samples stored in the array "predMip". If "isTransposed" is 1 (or TRUE), the "predSize x preSize" array "predMip[x][y]" (for x from 0 to "predSize-1" and for y from 0 to "predSize-1") is transposed as "predTemp[y][x] = predMip[x][y]" to become "predMip = predTemp".
[0072] More specifically, if the size of the coding block 303 is "8x8" (i.e., "cbWidth" and "cbHeight" are both 8), the intra predictor can derive an "8x8" "predMip" array.
[0073] Step 303 In step 303 of FIG. 3 , the intra predictor derives predicted samples 37 of the residual samples other than the fractional samples 35 in the coding block 300. As shown in FIG. 3 , the intra predictor may use a filtering module 302 to derive the predicted samples 37 of the residual samples other than the fractional samples 35 in the coding block 300. The input to the filtering module 302 may be the fractional samples 35 in step 302. The filtering module 302 may use one or more interpolation filters to derive the predicted samples 37 of the residual samples other than the fractional samples 35 in the coding block 300. The intra predictor (or filtering module 302) may generate a prediction (including multiple predicted samples 37) of the coding block 300 and store the predictions 37 in an array “predSamples[x][y]” (for x from 0 to “nTbW−1” and for y from 0 to “nTbH−1”) based on the following conditions K and L:
[0074] [Condition K] If the intra predictor determines that "nTbW" is greater than "predSize" or "nTbH" is greater than "predSize", the intra predictor starts the upsampling process and derives "predSamples" based on "predMip".
[0075] [Condition L] Otherwise, the intra prediction unit sets the prediction of the coding block 300 to MIP prediction of the coding block.
[0076] That is, the intra predictor can set "predSamples[x][y]" (for x from 0 to "nTbW-1" and for y from 0 to "nTbH-1") equal to "predMip[x][y]". For example, the intra predictor can set "predSamples" for a coding block whose size is equal to "8x8" (i.e., "cbWidth" and "cbHeight" are both 8) to its "predMip[x][y]".
[0077] Through steps 301-303, the intra predictor can generate a prediction for the current block 300. The generated prediction can be used in further processes (e.g., prediction block 23 described above with reference to FIG. 2).
[0078] 4 is a schematic diagram of a decoding system 400 according to one embodiment of the present disclosure. The decoding system 400 is configured to receive, process, and convert an input bitstream 40 into an output video 41. The input bitstream 40 may be a bitstream representing compressed / encoded pictures / video. In some embodiments, the input bitstream 40 may be from an output bitstream (e.g., output bitstream 21) generated by an encoding system (e.g., encoding system 200).
[0079] The decoding system 400 includes a parser 401 configured to parse the input bitstream 40 to obtain values of its syntax elements. The parser 401 also converts the binary representations of the syntax elements into numeric values (i.e., decoding block 42) and sends the numeric values to the predictor 402 (e.g., for decoding). In some embodiments, the parser 401 may also send one or more variables and / or parameters to the predictor 402 for decoding the numeric values.
[0080] The prediction unit 402 is configured to determine a decoded block 42 (e.g., a prediction block 43 of a CU or a portion of a CU such as a transform block). If it is indicated that an inter-coding mode is used to decode the decoded block 42, an MC (motion compensation) unit 403 of the prediction unit 402 can receive related parameters from the parser 401 and perform decoding in the inter-coding mode accordingly. If it is indicated that an intra-prediction mode (e.g., MIP mode) is used to decode the decoded block 42, an intra-prediction unit 404 of the prediction unit 402 can receive related parameters from the parser 401 and perform decoding in the intra-coding mode accordingly. In some embodiments, the intra-prediction mode (e.g., MIP mode) can be identified by a specific flag (e.g., MIP flag) embedded in the input bitstream 40.
[0081] For example, if MIP mode is specified, the intra prediction unit 404 can determine the prediction block 43 (including multiple prediction samples) based on the following method (similar to steps 301 to 303 described in Figure 3).
[0082] First, the intra predictor 404 derives one or more reference samples from neighboring samples of the decoded block 42 (similar to step 301 in FIG. 3). For example, the intra predictor 404 can generate the reference samples by downsampling the neighboring samples or by directly extracting a portion from the neighboring samples.
[0083] The intra predictor 404 can then use the reference samples, the MIP matrix, and the shifting parameters to derive partial prediction samples in the decoding block 42 (similar to step 302 in FIG. 3). In some embodiments, the positions of the partial prediction samples can be preset in the decoding clock 42. For example, the positions of the partial prediction samples can be positions with odd horizontal and vertical coordinate values in the coding block. The shifting parameters can include an offset shift parameter and a numeric shift parameter, which can be used in the shifting operation to generate the partial prediction samples.
[0084] Finally, once the partial prediction samples for the decoded block 42 have been derived, the intra prediction unit 404 derives prediction samples for the remaining samples other than the partial prediction samples in the decoded block 42 (similar to step 303 in FIG. 3 ). For example, the intra prediction unit 404 can use an interpolation filter to derive the prediction samples by using the partial prediction samples and neighboring samples as inputs to the interpolation filter.
[0085] The decoding system 400 includes a scaling unit 405 that has functionality similar to that of the inverse quantization unit 210 of the encoding system 200. The scaling unit 405 performs a scaling operation on the quantized coefficients 44 (e.g., levels) from the parser 401 to generate reconstructed coefficients 45.
[0086] The transform unit 406 has functionality similar to that of the inverse transform unit 211 of the encoding system 200. The transform unit 406 performs one or more transform operations (e.g., the inverse of one or more transform operations performed by the inverse transform unit 211) to obtain a reconstructed residual 46.
[0087] Adder 407 adds predicted block 43 from predictor 402 and reconstructed residual 46 from transformer 406 to obtain reconstructed block 47 of decoded block 42. Reconstructed block 47 is also sent to predictor 402 to be used as a reference (e.g., for other blocks coded in intra-prediction mode).
[0088] After all decoded blocks 42 in a picture or subpicture are reconstructed (i.e., forming a reconstructed block 48), a filter 408 may perform in-loop filtering on the reconstructed block 49. The filter 408 may include one or more filters, such as a deblocking filter, a sample adaptive offset (SAO) filter, an adaptive loop filter (ALF), a luma mapping with chroma scaling (LMCS) filter, a neural network-based filter, etc. In some embodiments, the filter 408 may perform in-loop filtering on only one or more target pixels in the reconstructed block 48.
[0089] The filtering unit 408 then transmits the decoded picture 49 (or picture) or sub-picture to a DPB (Decoded Picture Buffer) 409. The DPB 409 outputs the decoded picture based on the timing and control information as the output video 41. The decoded picture 49 stored in the DPB 409 can also be used as a reference picture by the predictor 402 when performing inter-prediction or intra-prediction.
[0090] In some embodiments, the decoding system 400 may be a computer device including a processor and a storage medium having one or more decoding programs recorded thereon. When the processor reads and executes the decoding programs, the decoding system 400 can receive an input video bitstream and generate corresponding decoded video.
[0091] In some embodiments, the decoding system 400 may be a computing device comprising one or more chips. Each portion or element of the decoding system 400 may be implemented as an integrated circuit on a chip.
[0092] 5 is a flowchart illustrating a method 500 according to one embodiment of the present disclosure. Method 500 begins at block 501 by determining prediction parameters for a current block. In some embodiments, the prediction parameters include a parameter for prediction (e.g., "predModeIntra" as defined in the H.265 standard) and a size identifier (e.g., "mipSizeId"). At block 502, if the prediction parameters indicate that a MIP mode is applicable, method 500 continues by determining MIP input samples (e.g., values in array "p[x]") based on neighboring samples. In some embodiments, the neighboring samples may include upper neighboring samples and / or left neighboring samples.
[0093] At block 503, the method 500 continues by determining the product of the offset shift parameter (fO) and the sum of the MIP input samples. As shown in equation (B) above, the sum of the MIP input samples is
[0094]
number
[0095]
number
[0096] At block 503, the method 500 continues with determining a first constant based on the numerical shift parameter (sW). As shown in equation (B) above, the first constant may be 1<<(sW-1). At block 504, the method 500 continues with determining an offset value (oW) by multiplying the first constant and a product. As shown in equation (B) above, the first offset value (oW) is
number
[0097] At block 505, method 500 determines a MIP weighting matrix based on the prediction parameters. In equation (B) above, the MIP weighting matrix is the matrix "mWeight." In some embodiments, the MIP weighting matrix can be generated based on various methods, such as a training process involving machine learning (ML) or artificial intelligence (AI).
[0098] At block 507, the method 500 continues by determining a MIP prediction based on the MIP weighting matrix, the numerical shift parameter (sW), and the offset value (oW). The MIP prediction may be the matrix "predMip[x][y]" shown in equation (C) above. In some embodiments, the MIP prediction may be determined as described in equation (C) above. In some embodiments, the MIP prediction may be determined based on equation (D) below:
[0099]
number
[0100] In the above equation (D), "[x][y]" are the coordinates of the pixel location. "x" is for the horizontal direction of the MIP prediction matrix, and "y" is for the vertical direction of the MIP prediction matrix. The parameters "incH", "predC", and "incW" are parameters for obtaining the matrix values from the MIP weighting matrix. The other parameters in equation (D) were described above with reference to equation (C).
[0101] In some embodiments, the offset shift parameter (fO) may be set to "32" and the value shift parameter (sW) may be set to 6. In such embodiments, the MIP prediction matrix may be determined based on the following equations (E) and (F):
[0102]
number
[0103]
number
[0104] At block 508, method 500 generates an intra prediction of the current block by a filtering process based on the MIP prediction matrix. If the size of the MIP prediction matrix is the same as the size of the current block, method 500 may set values in the MIP prediction matrix as MIP intra prediction samples (e.g., "preSamples[x][y]") for the current block, as shown in equation (G) below. Otherwise, method 500 may perform a filtering process to adjust the size of the MIP prediction matrix. In some embodiments, the filtering process may be an upsampling process or a low-pass filtering process. Examples of upsampling processes are discussed in detail above with reference to FIG. 3 (e.g., step 303). predSamples[x][y]=predMip[x][y] (G)
[0105] 6 is a flowchart illustrating a method 600 according to one embodiment of the present disclosure. The method 600 begins with determining prediction parameters for a current block in a bitstream at block 601. In some embodiments, the prediction parameters may include "predModeIntra" and "mipSizeId" as defined in the H.265 standard.
[0106] At block 602, the method 600 continues by determining matrix-based intra-prediction (MIP) input samples for the current block based on neighboring samples and prediction parameters for the current block. In some embodiments, the MIP input samples may be values in an array "p[x]." In some embodiments, the neighboring samples include left neighboring samples and / or upper neighboring samples.
[0107] 3 (e.g., step 301). For example, method 600 may include performing a downsampling process on adjacent samples to generate a temporary reference array (pTemp[x]) based on a size identifier.
[0108] At block 603, the method 600 continues by setting a parameter for a numerical shift (sW) to a first fixed value. In some embodiments, the first fixed value may be 5 or 6. At block 604, the method 600 continues by setting a parameter for an offset shift (fO) to a second fixed value. In some embodiments, the second fixed value may be 23, 34, or 46.
[0109] Once the first and second fixed values are set, the first constant “1<<(sW-1)” can be determined. The offset value (oW) can also be calculated (for example, equation (B)).
[0110] The method 600 continues with determining a MIP weighting matrix for the current block based on the prediction parameters at block 605. Examples of MIP weighting matrices are described above with reference to Figure 3 (e.g., step 302).
[0111] At block 606, the method 600 continues by determining MIP predicted samples (e.g., values in the array "predMip[x][y]") for the current block based on the MIP weighting matrix, the MIP input samples, the offset shift parameter (fO), and the value shift parameter (sW). Examples of MIP predicted samples are discussed in detail above with reference to equations (C), (D), (E), and (F).
[0112] At block 607, method 600 continues by performing an upsampling process on the MIP predicted samples of the current block to generate intra-predicted samples (e.g., "predSamples[x][y]") for the current block. In some embodiments, the MIP predicted samples of the current block may include predicted samples for at least some of the sampling points of the current block. Examples of MIP predicted samples and MIP weighting matrices are discussed in detail above with reference to equation (G) and FIG. 3 (e.g., step 303).
[0113] FIG. 7 is a schematic diagram of an encoder 700 according to an embodiment of the present disclosure. As shown, the encoder 700 includes a first determination unit 701, a first operation unit 702, and a first prediction unit 703. The first determination unit 701 sets prediction parameters for the current block and determines MIP input samples (e.g., values in the array “p[x]”). In some embodiments, the MIP input samples can be determined based on neighboring samples. The prediction parameters include parameters indicating which prediction model (e.g., MIP model) is used and corresponding parameters (e.g., size identifiers). The first determination unit 701 can also determine a MIP metric matrix. The first operation unit 702 is configured to calculate an offset value (e.g., “oW” described above) based on a numerical shift parameter (e.g., “sW”) and an offset shift parameter (e.g., “fO”). The first prediction unit 703 generates a MIP prediction for the current block based on the MIP metric matrix, the offset value, the numerical shift parameter, and the offset shift parameter.
[0114] In some embodiments, the encoder 700 includes a first lookup unit 704 configured to determine a MIP model of the current block. In such embodiments, the first lookup unit 701 determines a MIP model index of the current block. The first lookup unit 704 can then obtain corresponding parameters (e.g., sW, fO, MIP size identifier, etc.) based on the MIP model index.
[0115] In this disclosure, the term "unit" may be a processor, a circuit, software, a module, or a combination thereof. In some embodiments, a "unit" may be an integrated component such as a system on a chip (SoC). In some embodiments, a "unit" may include a set of instructions stored on a storage medium such as a disk, hard drive, memory, etc.
[0116] 8 is a schematic diagram of an encoder 800 according to one embodiment of the present disclosure. The encoder 800 may include a first communication interface 801, a first storage device 802, and a first processor 803 coupled by a first system bus 804. The first system bus 804 may include power, control, and / or signal lines. The first communication interface 801 is configured to communicate with other external devices by sending and receiving signals. The first storage device 802 is configured to store data, information, and / or instructions (e.g., steps discussed in FIGS. 5 and 6) that may be executed by the first processor 803.
[0117] The first processor 803 may be a chip, integrated circuit, or other device capable of processing signals. The first processor 803 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), or other suitable logic component.
[0118] FIG. 9 is a schematic diagram of a decoder 900 according to an embodiment of the present disclosure. As shown, the decoder 900 includes an analysis unit 901, a second calculation unit 902, a second prediction unit 903, a second prediction unit 904, and a second search unit 905. The analysis unit 901 is configured to analyze the bitstream to obtain prediction parameters for the current block. The second determination unit 902 sets appropriate prediction parameters for the current block and determines MIP input samples (e.g., values in the array “p[x]”). In some embodiments, the MIP input samples can be determined based on neighboring samples. The prediction parameters include parameters indicating which prediction model (e.g., MIP model) was used and corresponding parameters (e.g., size identifier). The second determination unit 903 can also determine a MIP metric matrix. The second calculation unit 904 is configured to calculate an offset value (e.g., “oW”) based on a value shift parameter (e.g., “sW”) and an offset shift parameter (e.g., “fO”). The second predictor 904 generates a MIP prediction of the current block based on the MIP metric matrix, the offset value, the numerical shift parameter, and the offset shift parameter.
[0119] In some embodiments, the second lookup unit 905 is configured to determine a MIP model of the current block. In such embodiments, the second determiner 902 determines a MIP model index of the current block. The second lookup unit 904 can then obtain corresponding parameters (e.g., sW, fO, MIP size identifier, etc.) based on the MIP model index.
[0120] 10 is a schematic diagram of a decoder 1000 according to one embodiment of the present disclosure. The decoder 1000 may include a second communication interface 1001, a second storage device 1002, and a second processor 1003 coupled by a second system bus 1004. The second system bus 1004 may include power lines, control lines, and / or signal lines. The second communication interface 1001 is configured to communicate with other external devices by sending and receiving signals. The second storage device 1002 is configured to store data, information, and / or instructions that may be executed by the second processor 1003 (such as the steps discussed in FIGS. 5 and 6).
[0121] The second processor 1003 may be a chip, integrated circuit, or other device capable of processing signals. The second processor 1003 may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a programmable logic device (PLD), or other suitable logic component.
[0122] 11 is a schematic diagram of an apparatus 1100 according to an embodiment of the present disclosure. The apparatus 1100 may be a "transmitting" apparatus. More specifically, the apparatus 1100 is configured to acquire, encode, and store / transmit one or more images. The apparatus 1100 includes an acquiring unit 1101, an encoder 1102, and a storing / transmitting unit 1103.
[0123] The acquirer 1101 is configured to acquire or receive images and send the images to the encoder 1102. The acquirer 1101 may also be configured to acquire or receive video consisting of a series of images and send the video to the encoder 1102. In some embodiments, the acquirer 1101 may be a device including one or more cameras (e.g., image cameras, depth cameras, etc.). In some embodiments, the acquirer 1101 may be a device capable of partially or fully decoding a video bitstream to generate images or video. The acquirer 1101 may also include one or more elements for capturing an audio signal.
[0124] The encoder 1102 is configured to encode images from the acquisition unit 1101 to generate a video bitstream. The encoder 1102 may also be configured to encode video from the acquisition unit 1101 to generate a bitstream. In some embodiments, the encoder 1102 may be implemented as the encoding system 200 illustrated in Figure 2. In some embodiments, the encoder 1102 may include one or more audio encoders for encoding audio signals to generate an audio bitstream.
[0125] The storage / transmission unit 1103 is configured to receive one or both of the video and audio bitstreams from the encoder 1102. The storage / transmission unit 1103 can encapsulate the video bitstream with the audio bitstream to form a media file (e.g., an ISO-based media file) or a transport stream. In some embodiments, the storage / transmission unit 1103 can write or store this media file or transport stream to a storage unit such as a hard drive, disk, DVD, cloud storage, portable memory device, etc. In some embodiments, the storage / transmission unit 1103 can transmit the video / audio bitstreams to an external device via a transport network such as the Internet, a wired network, a cellular network, a wireless local area network, etc.
[0126] 12 is a schematic diagram of an apparatus 1200 according to an embodiment of the present disclosure. The apparatus 1200 may be a "destination" apparatus. More specifically, the apparatus 1200 is configured to receive, decode, and render images or videos. The apparatus 1200 includes a receiver 1201, a decoder 1202, and a renderer 1203.
[0127] The receiver 1201 is configured to receive a media file or a transport stream, for example, from a network or a storage device. The media file or transport stream includes a video bitstream and / or an audio bitstream. The receiver 1201 can separate the video bitstream and the audio bitstream. In some embodiments, the receiver 1201 can extract the video / audio bitstream to generate a new video / audio bitstream.
[0128] The decoder 1202 includes one or more video decoders, such as the above-described decoding system 400. The decoder 1202 may also include one or more audio decoders. The decoder 1202 decodes the video and / or audio bitstreams from the receiver 1201 to obtain a decoded video file and / or one or more decoded audio files (corresponding to one or multiple channels).
[0129] The renderer 1203 receives the decoded video / audio files and processes the video / audio files to obtain video / audio signals suitable for display / playback. Such adjustment / reconstruction operations may include one or more of noise removal, synthesis, color space conversion, upsampling, downsampling, etc. The renderer 1203 can improve the quality of the decoded video / audio files.
[0130] FIG. 13 is a schematic diagram of a communication system 1300 according to one embodiment of the present disclosure. The communication system 1300 includes an originating device 1301, a storage medium or transfer network 1302, and a destination device 1303. In some embodiments, the originating device 1301 may be the apparatus 1100 described above with reference to FIG. 11. The originating device 1301 transmits media files to the storage medium or transfer network 1302 for storage or transport. The destination device 1303 may be the apparatus 1200 described above with reference to FIG. 12. The communication system 1300 is configured to encode media files, transport or store the encoded media files, and decode the encoded media files. In some embodiments, the originating device 1301 may be a first smartphone, the storage medium 1302 may be cloud storage, and the destination device may be a second smartphone.
[0131] The above-described embodiments merely illustrate some embodiments of the present disclosure, and the descriptions are specific and detailed. The above embodiments cannot be construed as limiting the present disclosure. It should be noted that many variations and modifications can be made by those skilled in the art without departing from the spirit and scope of the present disclosure. Therefore, the scope of the present disclosure should be determined by the appended claims.
Claims
1. 1. A method for decoding an image, applied to a decoding device, comprising: determining prediction mode parameters for a current block; If the prediction mode parameter indicates that matrix-based intra prediction (MIP) is applicable, determining a size identifier of the current block based on a size parameter of the current block; determining MIP input samples for the current block based on neighboring samples of the current block and a size identifier for the current block; determining a product of the sum of the MIP input samples and an offset shift parameter, wherein the value of the offset shift parameter is a first fixed value for blocks having a given MIP mode identifier and a given size identifier; determining a first offset value as the difference between a first constant value and the product, the first constant value being equal to 32; determining a MIP weighting matrix for the current block based on a MIP mode identifier for the current block and a size identifier for the current block; determining MIP predicted samples of the current block based on the MIP weighting matrix, the MIP input samples, a numerical shift parameter, and the first offset, where, for a block having a given MIP mode identifier and a given size identifier, values of the numerical shift parameter are all second fixed values, and the MIP predicted samples are predicted samples for a portion of sampling points of the current block; filtering the MIP predicted samples to determine intra predicted samples of the current block.
2. Determining a size identifier for the current block based on a size parameter of the current block includes: determining that the size identifier of the current block is equal to 0 if the width and height of the current block are both equal to 4; determining that the size identifier of the current block is equal to 1 if both the width and height of the current block are equal to 8, or if one of the width and height of the current block is equal to 4; If the width and height of the current block are not the above cases, determining that the size identifier of the current block is equal to 2. The method of claim 1.
3. determining MIP input samples for the current block based on neighboring samples of the current block and a size identifier of the current block; performing downsampling filtering on adjacent samples of the current block to determine a first temporary reference sequence; determining that, if the size identifier of the current block is within a predetermined range, a value corresponding to index 0 in the MIP input sample is equal to the difference between a second constant value and the value corresponding to index 0 in the first temporary reference array, and a value corresponding to index i in the MIP input sample is equal to the difference between the value corresponding to index i in the first temporary reference array and the value corresponding to index 0 in the first temporary reference array, wherein the second constant value is equal to a value obtained by binary left-shifting "1", and the number of left-shifted bits is equal to the bit depth of the current block minus 1; if the size identifier of the current block is not within a predetermined range, determining that a value corresponding to index j in the MIP input sample is equal to a difference between a value corresponding to index (j+1) in the first temporary reference array and a value corresponding to index 0 in the first temporary reference array, where j is an integer greater than or equal to 0; The method of claim 2.
4. the value of the numerical shift parameter is 6; The method of claim 1.
5. determining a MIP predicted sample for the current block based on the MIP weighting matrix, the MIP input sample, the numerical shift parameter, and the first offset, determining a first weighted sum of the MIP weighting matrix and the MIP input samples; determining a first sum of the first weighted sum and the first offset; binary right-shifting the first sum to obtain a first right-shifted value, the number of bits right-shifted equal to the value of the numerical shift parameter; determining that the MIP predicted sample of the current block is equal to the sum of the first right shift value and a value corresponding to index 0 in a first temporary reference array; The method of claim 3.
6. 1. A method for encoding an image, applied to an encoding device, comprising: determining prediction mode parameters for a current block; If the prediction mode parameter indicates that matrix-based intra prediction (MIP) is applicable, determining a size identifier of the current block based on a size parameter of the current block; determining MIP input samples for the current block based on neighboring samples of the current block and a size identifier for the current block; determining a product of the sum of the MIP input samples and an offset shift parameter, wherein the value of the offset shift parameter is a first fixed value for blocks having a given MIP mode identifier and a given size identifier; determining a first offset value as the difference between a first constant value and the product, the first constant value being equal to 32; determining a MIP weighting matrix for the current block based on a MIP mode identifier for the current block and a size identifier for the current block; determining MIP predicted samples of the current block based on the MIP weighting matrix, the MIP input samples, a numerical shift parameter, and the first offset, where, for a block having a given MIP mode identifier and a given size identifier, values of the numerical shift parameter are all second fixed values, and the MIP predicted samples are predicted samples for a portion of sampling points of the current block; filtering the MIP predicted samples to determine intra predicted samples of the current block.
7. Determining a size identifier for the current block based on a size parameter of the current block includes: determining that the size identifier of the current block is equal to 0 if the width and height of the current block are both equal to 4; determining that the size identifier of the current block is equal to 1 if both the width and height of the current block are equal to 8, or if one of the width and height of the current block is equal to 4; If the width and height of the current block are not the above cases, determining that the size identifier of the current block is equal to 2. The method of claim 6.
8. determining MIP input samples for the current block based on neighboring samples of the current block and a size identifier of the current block; performing downsampling filtering on adjacent samples of the current block to determine a first temporary reference sequence; determining that, if the size identifier of the current block is within a predetermined range, a value corresponding to index 0 in the MIP input sample is equal to the difference between a second constant value and the value corresponding to index 0 in the first temporary reference array, and a value corresponding to index i in the MIP input sample is equal to the difference between the value corresponding to index i in the first temporary reference array and the value corresponding to index 0 in the first temporary reference array, wherein the second constant value is equal to a value obtained by binary left-shifting "1", and the number of left-shifted bits is equal to the bit depth of the current block minus 1; if the size identifier of the current block is not within a predetermined range, determining that a value corresponding to index j in the MIP input sample is equal to a difference between a value corresponding to index (j+1) in the first temporary reference array and a value corresponding to index 0 in the first temporary reference array, where j is an integer greater than or equal to 0; The method of claim 7.
9. the value of the numerical shift parameter is 6; The method of claim 6.
10. determining a MIP predicted sample for the current block based on the MIP weighting matrix, the MIP input sample, the numerical shift parameter, and the first offset, determining a first weighted sum of the MIP weighting matrix and the MIP input samples; determining a first sum of the first weighted sum and the first offset; binary right-shifting the first sum to obtain a first right-shifted value, the number of bits right-shifted equal to the value of the numerical shift parameter; determining that the MIP predicted sample of the current block is equal to the sum of the first right shift value and a value corresponding to index 0 in a first temporary reference array; The method of claim 8.
11. An encoding device, comprising: a first determination unit, a first calculation unit, and a first prediction unit; the first determination unit is configured to determine a prediction mode parameter of a current block; if the prediction mode parameter indicates that matrix-based intra prediction (MIP) is applicable, determine a size identifier of the current block based on a size parameter of the current block; and determine MIP input samples of the current block based on neighboring samples of the current block and the size identifier of the current block; the first calculation unit is configured to determine a product of the sum of the MIP input samples and an offset shift parameter, where the values of the offset shift parameter are all a first fixed value for blocks having a given MIP mode identifier and a given size identifier; and to determine a first offset value as a difference between a first constant value and the product, where the first constant value is equal to 32; the first determination unit is further configured to determine a MIP weighting matrix for the current block based on a MIP mode identifier for the current block and a size identifier for the current block; the first prediction unit is configured to: determine MIP predicted samples of the current block based on the MIP weighting matrix, the MIP input samples, a numerical shift parameter, and the first offset, where, for blocks having any MIP mode identifier and any size identifier, values of the numerical shift parameters are all second fixed values, and the MIP predicted samples are predicted samples for a portion of sampling points of the current block; and perform filtering on the MIP predicted samples to determine intra predicted samples of the current block.
12. 1. An encoding device, comprising: Encoding device comprising a first processor configured to perform the method of any one of claims 6 to 10.
13. A decoding device including: an analysis unit, a second determination unit, a second calculation unit, and a second prediction unit; the analysis unit is configured to determine a prediction mode parameter for a current block; the second determination unit is configured to, when the prediction mode parameter indicates that matrix-based intra prediction (MIP) is applicable, determine a size identifier of the current block based on a size parameter of the current block, and determine MIP input samples of the current block based on neighboring samples of the current block and the size identifier of the current block; the second calculation unit is configured to determine a product of the sum of the MIP input samples and an offset shift parameter, where the values of the offset shift parameter are all a first fixed value for blocks having any MIP mode identifier and any size identifier; and to determine a first offset value as a difference between a first constant value and the product, where the first constant value is equal to 32; the second determination unit is further configured to determine a MIP weighting matrix for the current block based on a MIP mode identifier for the current block and a size identifier for the current block; the second prediction unit is configured to determine MIP predicted samples of the current block based on the MIP weighting matrix, the MIP input samples, a numerical shift parameter, and the first offset, where, for blocks having any MIP mode identifier and any size identifier, the values of the numerical shift parameters are all second fixed values, and the MIP predicted samples are predicted samples for a portion of the sampling points of the current block; and to perform filtering on the MIP predicted samples to determine intra predicted samples of the current block.
14. A decoding device, comprising: A decoding device comprising a second processor configured to perform the method of any one of claims 1 to 5.
15. A computer storage medium having a computer program and a bitstream stored thereon, A computer storage medium, the computer program, when executed by a processor, performs the steps of the method according to any one of claims 6 to 10 to generate the bitstream.