Prediction value determining method, encoder, decoder, and computer storage medium
By employing filtering and mapping table-based methods to determine predicted values, the method enhances prediction accuracy and encoding efficiency in MIP video encoding and decoding.
Patent Information
- Application Number
- JP2025177983
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2025-10-22
- Publication Date
- 2026-01-21
AI Technical Summary
Conventional methods for determining predicted values in video encoding and decoding using matrix-based intra prediction (MIP) face challenges in accurately representing the dynamic range of prediction values, leading to reduced prediction accuracy and encoding efficiency due to limitations in setting the bit-right shift parameter.
A method for determining predicted values that involves obtaining reconstructed sample values, performing filtering processes, calculating constant values based on bit depth, and using pre-stored mapping tables to determine MIP matrices and bit shift parameters, thereby enhancing prediction accuracy and efficiency.
The proposed method improves prediction accuracy and encoding efficiency by accurately representing the dynamic range of predicted values, reducing errors in MIP mode calculations.
Smart Images

Figure 2026010167000001_ABST
Abstract
Description
[Technical Field]
[0001] The present application relates to a matrix-based intra prediction (MIP) technique in intra prediction in the field of video coding, and more particularly to a method for determining a predicted value, an encoder, a decoder, and a computer storage medium. [Background technology]
[0002] Currently, when MIP is used to determine a predicted value in video encoding and decoding, three related values are involved: the MIP matrix, the weighting parameter, and the bit-right shift parameter. These three values must be obtained when calculating a predicted value. In conventional methods for determining predicted values, the bit-right shift parameter cannot be set too large to ensure full representation of the numerical range. As a result, when determining a predicted value, the value range of the predicted input value is too large, which affects the prediction accuracy of the predicted value and further affects the efficiency of encoding and decoding. Therefore, the prediction accuracy of conventional prediction methods in video encoding and decoding is low. Summary of the Invention
[0003] The embodiments of the present application provide a method for determining a predicted value, an encoder, a decoder, and a computer storage medium, which can improve the prediction accuracy of the prediction method in video encoding and decoding, and improve the efficiency of encoding and decoding.
[0004] The technical solutions of the embodiments of the present application can be realized through the following operations or configurations.
[0005] In a first aspect, an embodiment of the present application provides a method for determining a predicted value applied to an encoder, the method for determining a predicted value includes: obtaining reconstructed values of samples adjacent to a current block; performing a filtering process on the reconstructed values of the adjacent samples to obtain a set of reference values for the current block; when a size of the current block is smaller than a predetermined threshold, calculating a first constant value based on a bit depth value of a luma component of a sample in the current block; determining a first predicted input value in the set of predicted input values as a difference between the first constant value and a first reference value in the set of reference values; determining other predicted input values in the set of predicted input values other than the first predicted input value based on the set of reference values; calculating a predicted value of a sample at a specific position of the current block based on the set of predicted input values; and performing a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block.
[0006] In a second aspect, an embodiment of the present application provides a method for determining a predicted value applied to a decoder, the method for determining a predicted value including: analyzing a bitstream to obtain a size and a coding mode of a current block; if the coding mode of the current block is a matrix-based intra prediction (MIP) mode, obtaining reconstructed values of samples adjacent to the current block and performing a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set of the current block; if the size of the current block is smaller than a predetermined threshold, calculating a second constant value based on a bit depth value of a luma component of a sample in the current block; determining that a first predicted input value of the set of predicted input values is a difference between the second constant value and a first reference value of the set of reference values; determining other predicted input values in the set of predicted input values other than the first predicted input value according to the set of reference values; calculating a predicted value of a sample at a specific position of the current block based on the set of predicted input values; and performing an interpolation filtering process on the predicted value of the sample at the specific position to obtain a predicted value of a sample at a position other than the sample at the specific position of the current block.
[0007] In a third aspect, an embodiment of the present application provides an encoder. The encoder includes a first acquisition module, a first processing module, a first calculation module, a first determination module, a second calculation module, a third calculation module, and a second processing module. The first acquisition module is used to obtain reconstructed values of samples adjacent to a current block. The first processing module is used to perform a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set for the current block. The first calculation module is used to calculate a first constant value based on a bit depth value of a luma component of a sample in the current block when the size of the current block is smaller than a predetermined threshold. The first determination module is used to determine that a first predicted input value in the set of predicted input values is the difference between the first constant value and a first reference value in the set of reference values. The second calculation module is used to determine another predicted input value other than the first predicted input value in the set of predicted input values based on the reference value set. The third calculation module is used to calculate a predicted value of a sample at a specific position in the current block based on the set of predicted input values. The second processing module is used to perform a filtering process on the predicted value of the sample at the specific position to obtain predicted values for all samples in the current block.
[0008] In a fourth aspect, an embodiment of the present application provides a decoder. The decoder includes a second acquisition module, a third processing module, a fourth calculation module, a second determination module, a fifth calculation module, a sixth calculation module, and a fourth processing module. The second acquisition module is used to analyze a bitstream to obtain the size and coding mode of a current block. If the coding mode of the current block is matrix-based intra prediction (MIP) mode, the third processing module is used to obtain reconstructed values of samples adjacent to the current block and perform a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set for the current block. If the size of the current block is smaller than a predetermined threshold, the fourth calculation module is used to calculate a second constant value based on the bit depth value of the luma component of the sample in the current block. The second determination module is used to determine that a first predicted input value in the set of predicted input values is the difference between the second constant value and a first reference value in the set of reference values. The fifth calculation module is used to determine predicted input values other than the first predicted input value in the set of predicted input values based on the reference value set. The sixth calculation module is used to calculate a predicted value of the sample at the specific position of the current block based on the set of predicted input values, and the fourth processing module is used to perform an interpolation filtering process on the predicted value of the sample at the specific position to obtain a predicted value of the sample at another position in the current block other than the sample at the specific position.
[0009] In a fifth aspect, an embodiment of the present application provides an encoder, the encoder comprising: a processor; and a storage medium storing instructions executable by the processor, the storage medium being operable by the processor via a communication bus, the instructions, when executed by the processor, performing a method for determining a predicted value according to one or more of the embodiments described above.
[0010] In a sixth aspect, an embodiment of the present application provides a decoder, the decoder comprising: a processor; and a storage medium storing instructions executable by the processor, the storage medium being operable by the processor via a communication bus, the instructions, when executed by the processor, performing a method for determining a predicted value according to one or more of the embodiments described above.
[0011] In a seventh aspect, an embodiment of the present application provides a computer-readable storage medium storing executable instructions that, when executed by one or more processors, cause the processors to perform a method for determining a predicted value according to one or more embodiments described above.
[0012] The present application provides a method for determining a predicted value, an encoder, a decoder, and a computer storage medium, in which the method for determining a predicted value includes: an encoder obtaining reconstructed values of samples adjacent to a current block, performing a filtering process on the reconstructed values of the adjacent samples to obtain a set of reference values for the current block; if the size of the current block is smaller than a predetermined threshold, calculating a first constant value based on a bit depth value of a luma component of a sample in the current block, determining a first predicted input value in the set of predicted input values as a difference between the first constant value and a first reference value in the set of reference values; determining other predicted input values in the set of predicted input values other than the first predicted input value based on the set of reference values; calculating a predicted value of a sample at a specific position in the current block based on the set of predicted input values; and performing a filtering process on the predicted value of the sample at the specific position to obtain predicted values for all samples in the current block. In other words, in the embodiment of the present application, a first constant value is calculated, and the difference between the first constant value and the first reference value of the reference value set is determined to be the first predicted input value of the predicted input value set, and the predicted value of the current block is calculated based on the predicted input value set, thereby effectively reducing the dynamic value range of the predicted input value when predicting in MIP mode. Therefore, compared with the prior art, when the predicted input value set and the MIP matrix are represented with the same number of bits, the dynamic range data can be represented more accurately, and the accuracy during the calculation of the predicted value in MIP mode is increased, thereby improving the coding efficiency. [Brief explanation of the drawings]
[0013] [Figure 1] FIG. 1 is a schematic structural diagram of a video encoding system. [Figure 2] FIG. 2 is a schematic structural diagram of a video decoding system. [Figure 3] FIG. 3 is a schematic diagram illustrating the process of encoding samples in MIP mode. [Figure 4] FIG. 4 is a schematic diagram illustrating the process of encoding in MIP mode. [Figure 5]FIG. 5 is a flowchart of a method for determining a predicted value according to an embodiment of the present application. [Figure 6] FIG. 6 is a flowchart of a method for determining a predicted value according to another embodiment of the present application. [Figure 7] FIG. 7 is a schematic diagram showing the structure of an encoder according to an embodiment of the present application. [Figure 8] FIG. 8 is a schematic diagram showing the structure of a decoder according to an embodiment of the present application. [Figure 9] FIG. 9 is a schematic diagram showing the structure of an encoder according to another embodiment of the present application. [Figure 10] FIG. 10 is a schematic diagram showing the structure of a decoder according to another embodiment of the present application. DETAILED DESCRIPTION OF THE INVENTION
[0014] The technical solutions of the embodiments of the present application will be described clearly and completely below with reference to the drawings of the embodiments of the present application. It is understood that the specific embodiments described in this specification are used to describe the related applications and do not limit the present application. For ease of description, only the parts relevant to the related applications are shown in the drawings.
[0015] In the field of video encoding, the latest versatile video coding (VVC) adopts the affine linear weighted intra prediction proposed by HHI in JVET (Joint Video Experts Team)-N0217 and renames it MIP technology. In MIP technology, different quantities of MIP modes are added in the intra luma prediction process based on different sizes of intra luma coding blocks (abbreviated as "luma blocks").
[0016] In MIP technology, luma blocks are classified into three types depending on their size. If the size of a luma block is W*H, the luma blocks can be classified into three types depending on their size. Luma blocks with a size of 4x4 belong to the first class of luma blocks, luma blocks with sizes of 8x4, 4x8, and 8x8 belong to the second class of luma blocks, and luma blocks of other sizes belong to the third class of luma blocks. For these three types of intra-luma blocks, MIP technology adds M MIP modes based on the 67 conventional intra-prediction modes.
[0017] 1 is a schematic structural diagram of a video encoding system. As shown in FIG. 1, the video encoding system 100 includes a transform and quantization module 101, an intra estimation module 102, an intra prediction module 103, a motion compensation module 104, a motion estimation module 105, an inverse transform and inverse quantization module 106, a filter control analysis module 107, a deblocking (DBK) filtering and sample adaptive offset (SAO) filtering module 108, a header information coding and context-based adaptive binary arithmetic coding (CABAC) coding module 109, a decoded image cache module 110, etc.
[0018] 2 is a schematic structural diagram of a video decoding system. As shown in FIG. 2, the video decoding system 200 includes a header information decoding and CABAC decoding module 201, an inverse transform and inverse quantization module 202, an intra prediction module 203, a motion compensation module 204, a DBK filtering and SAO filtering module 205, and a decoded image cache module 206. After a video image is processed by the transform and quantization module 101, the intra estimation module 102, the intra prediction module 103, the motion compensation module 104, the motion estimation module 105, the DBK filtering and SAO filtering module 108, and the header information coding and CABAC coding module 109 of the video encoding system 100, the video image is output as a bitstream. The bitstream is input to a video decoding system 200, and is processed by a header information decoding and CABAC decoding module 201, an inverse transform and inverse quantization module 202, an intra prediction module 203, a motion compensation module 204, etc. of the video decoding system 200, and finally restored to the original video image.
[0019] When encoding and decoding using the MIP mode provided by the embodiments of the present application, the method for determining the predicted value is mainly applied to the intra prediction module 103 of the video encoding system and the intra prediction module 203 of the video decoding system, and is applied to both the encoding side and the decoding side.
[0020] For luma blocks of the first class, M=35, for luma blocks of the second class, M=19, and for luma blocks of the third class, M=11.
[0021] Specifically, the MIP technique is only applicable to intra-luminance prediction. Similar to the conventional mode, the input of MIP prediction is the data of the top row and left column of the current block (corresponding to the image block to be coded below), and the output is the predicted value of the current block. The specific prediction process includes three steps: averaging, matrix vector multiplication, and interpolation. That is, the predicted luminance value of the current block can be obtained by performing the above three operations on the reconstructed luminance values of the samples adjacent to the top row and left column of the input current block.
[0022] 3 is a schematic diagram showing the process of encoding a sample in MIP mode. As shown in FIG. 3, the process includes the following steps:
[0023] Step 1: Perform an average operation on the upper neighboring reference points of the current luma block to obtain a vector redT containing N values. Perform an average operation on the left neighboring reference points of the current luma block to obtain a vector redL containing N values. If the luma block belongs to the first class of luma blocks, N=2, and if the luma block belongs to the second class of luma blocks or the third class of luma blocks, N=4. The vector redT and the vector redL constitute a new vector pTemp to be used for subsequent operations.
[0024] Step 2: Obtain the matrix mWeight, the weighting parameter fO and the bit right shift parameter sW, and calculate the partial predicted value of the current block identified by the cross line in FIG.
number
[0025] If MipSizeId=0 or 1, the calculation is performed using the following formula:
number
[0026] If MipSizeId=2, the calculation is performed using the following formula:
number
[0027] predMip[x,y] represents the predicted value of the sample at position (x,y). pTemp[i] represents the i-th reference value of the reference value set of the current block when predicting in MIP mode. p[x] represents the i-th predicted input value when predicting in MIP mode. inSize is determined based on MipSizeId, which is the MIP serial number. If MipSizeId=0, inSize=4; if MipSizeId=1, inSize=8; and if MipSizeId=2, inSize=7. The value of MipSizeId is determined by the size of the current block. If the size of the current block is 4x4, MipSizeId=0; if the size of the current block is 4x8, 8x4, or 8x8, MipSizeId=1; and if the size of the current block is larger than 8x8, MipSizeId=2. BitDepth represents the bit depth of the luma component (i.e., the number of binary bits used to represent the sample value of the luma component). mWeight represents the MIP matrix. predC, incH, and incW are used to determine the parameters of the matrix element corresponding to the sample position (x, y). ">>" is the bitwise right shift operator. oW represents the shift offset used in the bitwise right shift operation. sW represents the bits of the right shift. fO represents the weighting parameter. sW and fO can be determined based on at least the size of the current block or the value of MipSizeId. For example, the values of sW and fO can be determined using a mapping table associated with the value of MipSizeId. The mapping table records at least the values of sW and fO corresponding to different values of MipSizeId.
[0028] Step 3: The remaining predicted values in the current block can be obtained by linear interpolation, that is, the partial predicted values in the current block identified by the dots in FIG.
[0029] Three values related to the MIP technique, mWeight, fO, and sW, need to be obtained when determining the predicted value. The value of mWeight is related to both the prediction mode and the sample space position, while the values of fO and sW are related only to the prediction mode. p[i] is obtained by calculating equations (3), (4), and (5). The values of mWeight and fO are all stored as unsigned 7-digit binary numbers. sW represents the offset corresponding to the prediction mode. Depending on the prediction mode (shown in Table 1 below), it takes one of the values 5, 6, or 7 and can be obtained by referring to Table 1. The sample value of the sample can be obtained by calculating the matrix-vector product, and the overall memory requirement is 4.5395 KB. [Table 1]
[0030] When predicting in MIP mode, first determine the index of the prediction mode for the current block. Based on the index of the prediction mode, look up the table to obtain the fixed sW value of the current block and obtain mWeight-fO. Right shift by sW bits to obtain the original floating-point number matrix used to calculate the predicted value. Figure 4 is a schematic diagram showing the encoding process in MIP mode.
[0031] As shown in Figure 4, first, obtain the index number of the MIP mode. Then, obtain the machine-trained mWeight and fO from the mapping table based on the index number of the MIP mode. Then, obtain sW from the mapping table based on the index number of the MIP mode. Finally, for prediction,
number
[0032] In other words, in existing VVC MIP technology, the primitive floating-point number mWeightf[x][y] for all values of mWeight is represented as a fixed-point value with an offset starting from the minimum value (often a negative value, represented by fO).
number
[0033] Since mWeight[x][y] is stored as an unsigned 7-digit binary number, the representation precision is reduced. The larger sW, the higher the precision, but sW cannot be too large to fully represent the value range. Because the same sW value is used indiscriminately throughout the matrix, parameters with a small value range require further reduction in representation precision to accommodate the common value change range of all parameters throughout the matrix. The parameter variation range of the original matrix is also related to the method of obtaining the p[i] data. The calculation method of p[i] in related art causes the parameter variation range to expand, reducing the precision of the data in the weight matrix, increasing the prediction error in MIP mode, and therefore reducing coding efficiency.
[0034] In order to improve the prediction accuracy of MIP mode and improve the coding efficiency, an embodiment of the present application provides a method for determining a predicted value. Figure 5 is a flowchart of the method for determining a predicted value according to an embodiment of the present application. As shown in Figure 5, this method can be applied to an encoder. The method includes the following steps:
[0035] Block S501 obtains the reconstructed values of the samples adjacent to the current block.
[0036] Specifically, in the encoding process, the encoder first needs to obtain the reconstructed values of samples adjacent to the current block to determine the predicted value of the current block, where the adjacent samples include the top row and left column samples of the current block.
[0037] Block S502 performs a filtering process on the reconstructed values of neighboring samples to obtain a set of reference values for the current block.
[0038] After obtaining the reconstructed values of the adjacent samples, for example, the reconstructed value of the sample in the top row of the current block obtained is redT (containing N values), and the reconstructed value of the sample in the left column of the current block obtained is redL (containing N values), and redT and redL constitute a new vector pTemp, which is the reference value set of the current block.
[0039] To perform the filtering process to obtain the reference value set of the current block, in one alternative embodiment, the operation of block S502 includes: dividing the reconstructed values of adjacent samples into N groups, calculating the average value of the reconstructed values of each group, and taking the average value as the reference value of the reference value set, where N is a positive integer.
[0040] N is set to a positive integer value corresponding to the preset size of the current block. In other words, performing a filtering process on the reconstructed values of adjacent samples in block S502 specifically involves dividing redT and redL into N groups, calculating the average value of the reconstructed values of each group to obtain N average values, and using the N average values as the reference values of the reference value set.
[0041] For example, if the size of the current block is 4x4, then inSize=4; if the size of the current block is 4x8, 8x4 or 8x8, then inSize=8; if the size of the current block is greater than 8x8, then inSize=7.
[0042] Block S503: if the size of the current block is smaller than the preset threshold, calculate a first constant value according to the bit depth value of the luminance component of the samples in the current block.
[0043] In practice, the size of the current block can be represented by MipSizeId. If MipSizeId is a number less than 2, i.e., if MipSizeId is equal to 0 or 1, the first constant value is calculated based on the bit depth value of the luma component of the samples in the current block.
[0044] To calculate the first constant value, in one alternative embodiment, the operations of block S503 include: setting the first constant value to a value obtained by performing a binary bit left shift operation on the number 1, where the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus 1.
[0045] Specifically, the first constant value is a value obtained by performing a bit left shift operation on the numeric value 1, and the number of left shift bits is equal to the bit depth minus 1.
[0046] Block S504 determines that a first predicted input value of the set of predicted input values is the difference between a first constant value and a first reference value of the set of reference values.
[0047] The predicted input value set is used to calculate a predicted value of the current block based on MIP. After obtaining the first constant value, in S504, the difference between the first constant value and the first reference value of the reference value set can be determined as a first predicted input value. The first predicted input value p[0] can be calculated and obtained using the following formula:
number
[0048] Block S505 determines other predicted input values in the set of predicted input values other than the first predicted input value based on the set of reference values.
[0049] The other predicted input value p[i] includes a predicted input value other than the first predicted input value when the size of the current block is smaller than a preset threshold. The other predicted input value p[i] may further include a predicted input value when the size of the current block is equal to or larger than a preset threshold. The other predicted input value p[i] may be obtained by calculating using the following formula:
number
[0050] Block S506 calculates a predicted value for a sample at a particular position in the current block based on the set of predicted input values.
[0051] Specifically, after all predicted input values are determined, a set of predicted input values can be obtained, and prediction can be performed based on the set of predicted input values to obtain a predicted value of a sample at a specific position of the current block, for example, a predicted value of a sample at a position identified by a crosshair in FIG.
[0052] To determine a predicted value of a sample at a specific position of the current block, in one alternative embodiment, the operation of block S506 includes: determining a MIP matrix of the current block, a bit right shift parameter of the current block, and a weighting parameter of the current block from one or more pre-stored mapping tables; calculating a predicted value of a sample at a specific position of the current block based on a set of predicted input values, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block;
[0053] In other words, one or more mapping tables are pre-stored in the encoder, which can determine the MIP matrix (mWeit) of the current block, the bit right shift parameter (sW) of the current block, and the weighting parameter (fO) of the current block.
[0054] sW and fO can be determined based on at least the size of the current block or the value of MipSizeId. For example, the values of sW and fO can be determined by a mapping table associated with the value of MipSizeId. The mapping table records at least the values of sW and fO corresponding to different values of MipSizeId.
[0055] The values in the above mapping table are constants. That is, the values in the mapping table are not updated during the calculation of the MIP predicted value. The values of the constants in the mapping table can be obtained using an offline training method based on the above equation (7). Alternatively, the values of the constants in the mapping table can be derived from a mapping table corresponding to a different method of calculating p[0] based on the above equation (7). In particular, in an embodiment of the present application, the mapping table derived from the MIP mapping table of the VVC Committee Draft (CD) is as follows:
[0056] If MipSizeId=0 and modeId=0, mWeight[x][y]= { {31,59,77,28},{36,92,85,25},{37,69,100,24},{35,36,106,29},{44,49,104,48},{44,21,94,59},{39,0,80,72},{33,2,66,84},{36,13,35,99},{29,11,34,103},{23,21,34,106},{17,24,40,105},{18,28,43,101},{12,32,49,101},{7,31,53,102},{7,32,54,100} },
[0057] If MipSizeId=0 and modeId=1, mWeight[x][y]= {{22,14,70,0},{24,17,53,5},{28,70,32,12},{40,82,11,19},{20,17,63,52},{22,17,46,63},{25,21,29,71},{30,25,16,74},{20,19,16,85},{21,19,17,85},{20,18,20,83},{20,18,23,82},{20,19,22,80},{20,18,22,80},{20,20,22,80},{21,21,22,80}},
[0058] When MipSizeId=0 and modeId=2, mWeight[x][y]= {{6,7,62,10},{7,0,33,9},{7,12,2,6},{7,63,3,6},{7,7,73,6},{7,8,71,9},{7,1,50,9},{7,9,14,7},{6,7,55,22},{7,7,72,5},{7,9,74,7},{7,3,62,9},{8,6,2,77},{7,6,33,45},{7,7,62,14},{7,8,70,8}},
[0059] When MipSizeId=0 and modeId=3, mWeight[x][y]= {{32,32,54,34},{32,38,34,34},{32,94,38,30},{34,110,40,28},{32,30,80,32},{32,52,56,30},{34,106,48,30},{44,104,38,40},{32,30,56,72},{48,64,38,80},{68,90,20,86},{76,78,8,90},{50,32,0,122},{76,68,4,106},{86,74,8,96},{82,74,8,94}},
[0060] When MipSizeId=0 and modeId=4, mWeight[x][y]= {{27,19,44,22},{27,35,23,27},{26,88,29,28},{28,91,27,27},{32,21,87,25},{35,22,46,20},{32,69,26,20},{29,87,29,23},{32,23,40,81},{44,16,46,66},{53,17,17,50},{46,37,3,40},{31,25,21,92},{36,24,24,91},{43,16,23,88},{52,11,0,81}},
[0061] When MipSizeId=0 and modeId=5, mWeight[x][y]= {{24,24,82,26},{24,22,76,26},{24,32,66,24},{24,58,56,24},{24,26,88,22},{24,28,88,26},{26,26,88,26},{24,26,86,28},{24,26,72,40},{24,26,84,24},{22,28,86,22},{26,34,82,24},{26,24,0,110},{26,24,14,98},{42,26,44,62},{80,38,76,8}},
[0062] When MipSizeId=0 and modeId=6, mWeight[x][y]= {{20,22,48,19},{22,20,43,18},{21,35,35,19},{30,62,25,17},{21,22,47,29},{22,21,48,27},{23,31,45,24},{55,44,24,8},{21,21,25,48},{18,23,25,51},{39,19,23,38},{76,27,22,0},{22,21,20,53},{23,19,18,54},{60,5,12,35},{77,25,19,3}},
[0063] When MipSizeId=0 and modeId=7, mWeight[x][y]= {{13,10,73,12},{13,3,54,15},{13,0,29,14},{13,22,13,13},{13,13,80,10},{14,14,86,7},{15,11,84,8},{14,3,68,11},{13,12,30,59},{14,10,45,43},{15,11,63,26},{17,11,75,15},{16,10,6,83},{18,9,6,83},{19,8,9,78},{24,5,21,63}},
[0064] If MipSizeId=0 and modeId=8, mWeight[x][y]= {{24,22,74,30},{24,20,22,44},{26,68,6,32},{26,90,20,28},{24,26,46,66},{24,20,36,74},{24,44,10,58},{38,82,6,30},{24,24,34,76},{24,24,40,74},{24,26,32,78},{86,42,10,32},{26,22,38,74},{22,26,38,74},{40,16,36,72},{118,0,34,32}},
[0065] If MipSizeId=0 and modeId=9, mWeight[x][y]= {{14,39,85,0},{15,49,42,39},{17,30,22,66},{17,18,19,74},{18,19,24,73},{17,11,13,83},{17,12,18,78},{17,15,19,75},{16,15,14,78},{16,16,19,75},{17,17,18,75},{18,17,18,75},{16,16,19,75},{17,16,18,76},{17,16,18,76},{18,16,19,75}},
[0066] If MipSizeId=0 and modeId=10, mWeight[x][y]= {{26,24,57,22},{30,14,30,24},{28,61,25,25},{26,100,29,27},{29,27,92,30},{31,19,72,25},{40,15,37,21},{46,70,24,18},{29,26,30,89},{30,26,34,87},{41,14,27,81},{67,12,0,65},{29,26,24,92},{29,27,24,92},{28,29,27,93},{36,22,25,89}},
[0067] When MipSizeId=0 and modeId=11, mWeight[x][y]= {{21,19,60,7},{26,12,35,9},{26,14,27,11},{22,50,24,13},{24,18,75,38},{29,16,60,39},{38,6,30,41},{41,0,3,45},{22,19,21,84},{23,19,21,85},{25,20,22,84},{28,18,16,83},{20,20,20,83},{20,21,21,82},{19,21,21,83},{19,22,22,82}},
[0068] When MipSizeId=0 and modeId=12, mWeight[x][y]= {{16,14,75,3},{16,43,57,16},{18,63,20,43},{14,46,0,65},{15,20,54,52},{15,22,23,76},{13,17,15,83},{10,17,17,82},{14,17,11,84},{12,18,14,83},{11,20,16,81},{9,21,16,81},{12,18,18,80},{10,19,17,81},{9,20,16,82},{8,20,16,82}},
[0069] When MipSizeId=0 and modeId=13, mWeight[x][y]= {{7,6,82,0},{7,4,83,0},{7,2,83,0},{7,3,80,0},{7,8,59,16},{7,8,58,17},{7,8,58,17},{7,7,57,18},{7,7,7,70},{7,7,7,71},{7,7,6,71},{7,8,7,70},{6,7,8,71},{6,7,8,70},{6,7,8,70},{6,7,9,69}},
[0070] When MipSizeId=0 and modeId=14, mWeight[x][y]= {{21,16,39,18},{19,35,27,17},{19,56,17,28},{30,46,8,40},{17,26,47,25},{21,40,24,40},{41,31,9,46},{57,13,10,41},{22,25,15,55},{49,14,12,46},{65,3,18,36},{63,4,19,35},{49,8,13,46},{65,0,19,33},{63,1,19,35},{61,3,18,36}},
[0071] When MipSizeId=0 and modeId=15, mWeight[x][y]= {{23,43,54,26},{23,56,50,24},{22,57,49,25},{23,61,47,24},{24,51,57,20},{21,55,51,27},{23,56,52,24},{24,59,51,23},{23,43,60,24},{27,55,58,12},{23,58,52,23},{24,59,52,23},{64,26,13,80},{89,48,51,0},{43,57,59,7},{24,57,54,22}},
[0072] When MipSizeId=0 and modeId=16, mWeight[x][y]= {{20,20,51,22},{21,22,51,22},{21,29,50,22},{21,32,48,22},{21,23,53,22},{21,24,53,22},{21,23,53,22},{21,24,53,22},{18,24,47,28},{18,24,48,27},{19,25,48,26},{20,25,48,26},{30,16,0,71},{35,14,1,67},{38,14,2,64},{38,13,4,63}},
[0073] When MipSizeId=0 and modeId=17, mWeight[x][y]= {{25,21,34,25},{27,34,3,39},{30,55,24,23},{26,41,40,18},{28,22,13,48},{44,38,6,29},{35,44,43,10},{25,30,45,21},{35,29,12,44},{56,34,31,2},{33,30,47,14},{24,28,44,25},{39,37,33,19},{48,29,40,0},{31,25,44,19},{25,28,44,24}},
[0074] If MipSizeId=1 and modeId=0, mWeight[x][y]= {{18,22,18,20,72,43,9,19},{18,8,22,26,56,58,5,20},{19,21,10,35,35,72,3,20},{21,21,21,29,18,78,7,18},{19,16,16,19,3,70,46,8},{21,18,15,20,4,58,61,4},{25,16,18,18,8,42,73,3},{28,14,20,18,13,30,76,6},{ 20,18,17,17,19,4,69,40},{24,18,17,16,19,3,55,51},{30,14,18,15,17,5,39,63,{31,14,18,16,16,8,28,70},{22,15,18,16,16,20,2,92},{26,14,18,15,15,19,0,91},{29,15,18,16,14,19,3,88},{29,16,17,17,15,17,7,84}},
[0075] When MipSizeId=1 and modeId=1, mWeight[x][y]= {{20,35,18,20,58,35,18,20},{20,75,26,19,32,31,20,20},{21,6,93,22,20,25,21,20},{24,25,0,99,18,21,21,18},{20,28,20,20,8,78,30,19},{20,67,22,20,10,59,27,19},{22,7,93,18,15,30,25,20},{26,25,1,97,20,18,22,18}, {20,28,19,20,15,14,81,25},{20,59,20,20,12,22,65,23},{23,7,93,16,14,24,34,22},{30,24,3,95,19,20,20,18},{20,29,20,20,14,23,8,90},{20,51,19,21,14,19,15,77},{24,7,88,16,14,20,21,43},{33,22,6,91,19,18,20,21}},
[0076] When MipSizeId=1 and modeId=2, mWeight[x][y]= {{10,19,10,12,81,14,10,11},{10,26,15,10,79,6,12,11},{11,16,31,12,69,2,14,10},{11,13,8,44,54,3,14,10},{11,11,12,11,1,83,13,9},{11,12,12,12,11,83,4,12},{11,15,11,13,24,77,0,12},{11,14,13,16,38,63,2,12} ,{11,12,11,11,14,2,82,12},{11,13,12,12,10,14,79,5},{11,12,12,13,6,29,70,3},{11,12,11,16,3,45,55,4},{11,12,11,12,10,12,1,84},{11,13,11,12,12,8,13,76},{11,12,12,13,14,3,29,64},{11,13,10,17,15,0,45,49}},
[0077] When MipSizeId=1 and modeId=3, mWeight[x][y]= {{21,50,24,20,19,38,22,24},{22,53,41,23,14,22,27,27},{22,22,66,37,19,17,25,28},{27,19,12,92,19,18,21,28},{21,51,25,20,19,23,48,27},{21,41,48,24,17,11,36,37},{24,17,58,43,14,17,23,39},{39,22,4,91,15,20,16,33},{20,44,27,21,16,20,35,54},{22,31,53,24,13,19,21,55},{30,14,47,50,10,20,16,48},{57,28,0,82,19,14,18,30},{22,34,30,21,15,22,21,70,{24,22,52,26,12,24,16,61},{38,17,33,56,14,18,16,49},{66,32,0,75,26,4,22,30}},
[0078] When MipSizeId=1 and modeId=4, mWeight[x][y]= {{18,32,15,16,60,34,10,19},{18,68,28,13,31,37,11,,17},{19,8,73,23,15,30,22,14},{19,18,0,85,11,17,33,15},{18,18,19,17,9,56,56,9},{19,19,20,16,13,30,73,12},{19,20,20,18,13,13,71,28},{18,18,16,26,12,8,54,47},{ 17,16,17,17,17,10,54,51},{16,17,16,18,16,15,28,73},{16,18,15,18,16,20,14,83},{15,19,17,18,15,21,14,82},{16,17,16,18,17,18,7,90},{15,18,16,19,16,17,11,87},{14,18,16,20,17,15,15,84},{13,19,16,22,17,15,18,81}},
[0079] When MipSizeId=1 and modeId=5, mWeight[x][y]= {{11,6,13,11,75,6,12,11},{12,3,8,13,48,2,13,10},{12,45,1,13,19,9,12,10},{12,42,37,8,10,12,11,10},{11,11,10,12,18,74,6,11},{11,12,10,12,53,47,2,12},{12,6,10,12,71,16,9,11},{12,15,6,13,53,5,13,10} ,{12,12,10,11,9,17,77,5},{12,11,9,12,3,51,50,2},{12,11,9,12,11,72,18,8},{12,11,9,12,36,57,7,10},{12,10,10,11,10,10,16,71},{13,11,10,11,14,0,56,39},{13,11,9,12,12,8,76,13},{13,12,9,12,8,35,57,7}},
[0080] When MipSizeId=1 and modeId=6, mWeight[x][y]= {{23,21,23,23,101,30,19,25},{24,13,23,24,101,29,19,25},{24,24,14,23,101,29,18,24},{24,23,25,17,98,29,18,24},{23,24,23,23,0,97,36,17},{24,25,24,22,1,97,35,17},{24,22,25,23,1,96,36,17},{24,22,23,24,3,94,36,17},{24,23,23,22,31,0,93,34},{24,23,24,23,31,2,93,33},{24,22,24,23,31,1,92,34},{24,22,23,23,30,3,90,35},{23,24,23,23,19,31,2,102},{23,23,23,24,19,30,3,101},{23,23,24,24,19,30,3,101},{23,23,23,24,19,31,4,100}}
[0081] When MipSizeId=1 and modeId=7, mWeight[x][y]= {{10,5,10,10,56,4,11,9},{11,22,6,10,13,9,10,10},{11,67,22,6,10,10,10,10},{11,6,68,18,11,9,11,9},{10,10,10,10,40,53,3,11},{11,6,10,9,61,9,10,9},{11,17,6,10,23,7,9,10},{11,56,15,8,10,11,9,10}, {10,9,11,9,4,42,54,3},{11,10,11,9,22,67,8,8},{10,7,11,9,57,23,7,10},{11,11,10,10,36,8,10,9},{10,10,11,9,13,0,41,50},{11,9,11,9,8,24,64,8},{10,10,11,9,15,63,18,10},{11,10,11,10,44,33,10,11}},
[0082] When MipSizeId=1 and modeId=8, mWeight[x][y]= {{21,44,37,20,24,68,10,23},{21,1,55,39,14,39,41,18},{21,25,0,68,18,18,42,39},{22,24,19,36,19,14,25,72},{21,11,28,30,18,23,80,19},{22,25,8,38,21,13,45,62},{22,22,18,25,19,18,16,90},{23,21,21,24,19,21,12,91},{ 21,22,15,28,21,20,23,82},{22,21,19,24,20,22,9,95},{23,21,21,22,20,21,13,92},{23,22,21,22,19,21,15,90},{22,21,20,22,21,22,15,90},{22,21,21,22,20,21,16,89},{23,21,20,23,19,22,15,89},{24,21,20,23,19,23,15,87}},
[0083] When MipSizeId=1 and modeId=9, mWeight[x][y]= {{8,15,18,15,51,68,39,23},{7,4,10,20,22,76,51,27},{7,16,1,17,13,78,55,29},{7,13,24,0,12,76,55,27},{7,8,10,14,10,66,72,25},{6,12,8,14,12,59,75,27},{5,13,9,12,13,58,75,28},{4,14,8,13,14,60,71,29},{ 7,10,11,12,12,42,79,41},{4,14,8,14,13,45,79,39},{3,14,8,14,12,44,81,38},{2,15,10,14,13,45,78,36},{7,11,12,13,13,24,73,62},{4,15,8,13,15,28,89,43},{1,14,10,14,16,29,85,45},{1,16,9,15,17,33,78,46}},
[0084] If MipSizeId=2 and modeId=0, mWeight[x][y]= {{46,7,14,92,23,20,10},{32,22,17,52,50,25,12},{1,36,21,27,61,30,14},{0,30,27,17,61,32,17},{13,12,37,13,59,35,18},{14,13,38,11,56,38,18},{10,27,29,9,55,39,17},{10,27,32,7,53,38,17},{8,17,14,15,92,27,13},{2,16,18,8,84,38,15},{4,12,22,7,76,44,17},{8,8,25,7,72,46,18},{8,8,26,8,69,46,19},{10,11,23,9,68,47,17},{10,11,23,8,67,47,18},{10,12,26,9,64,43,20},{7,10,16,11,86,37,17},{7,9,18,9,73,47,20},{8,8,21,9,67,50,22},{7,9,22,9,66,50,22},{7,9,23,8,67,48,22},{8,9,24,8,67,48,21},{8,9,26,8,66,49,20},{9,8,29,8,64,48,20},{8,8,16,8,69,56,19},{6,9,17,8,64,55,25},{7,8,19,8,62,53,27},{7,8,21,8,61,52,28},{7,9,22,7,62,52,25},{7,9,23,6,62,53,24},{8,7,26,6,62,52,23},{8,8,28,6,61,51,22},{7,9,14,7,49,74,23},{7,7,17,7,51,65,30},{7,8,18,6,53,57,33},{7,8,20,5,56,57,31},{7,8,22,6,56,57,29},{8,8,23,5,57,57,27},{8,7,26,5,57,56,26},{8,6,27,5,57,55,25},{7,8,14,6,36,65,47},{7,7,18,5,44,59,44},{7,7,19,5,47,59,40},{7,7,20,5,50,59,35},{8,6,22,5,51,58,33},{8,5,25,5,51,59,30},{7,6,26,5,51,59,29},{9,6,27,5,50,59,28},{7,8,14,6,27,44,76},{6,8,16,5,38,57,53},{6,7,19,4,44,63,40},{7,6,21,4,47,62,37},{8,6,22,4,47,62,35},{8,6,24,5,46,64,32},{8,6,26,5,46,63,31},{8,6,28,6,45,62,30},{8,7 ,15,6,22,43,81},{6,8,16,5,32,64,51},{8,8,19,5,37,66,41},{9,5,21,4,41,67,36},{8,7,22,5,42,65,35},{8,6,25,6,42,64,34},{9,5,27,7,43,63,32},{9,5,29,8,40,60,34}},
[0085] When MipSizeId=2 and modeId=1, mWeight[x][y]= {{50,47,46,61,50,45,46},{59,49,47,57,51,45,46},{64,52,48,55,51,46,46},{58,61,50,53,51,46,46},{52,66,53,52,51,46,46},{48,62,62,50,51,46,46},{47,49,76,49,51,46,46},{45,33,92,49,52,46,46},{50,48,46,57,63,45,46},{55,52,48,55,63,45,46},{57,56,50,53,63,45,46},{55,60,53,51,63,46,46},{51,60,59,51,63,46,46},{48,55,69,49,63,46,46},{46,42,84,48,62,46,46},{43,28,99,48,61,47,46},{49,49,47,48,73,47,46},{52,52,49,47,73,48,46},{52,55,53,47,72,48,46},{51,56,58,46,72,48,46},{48,54,65,46,71,48,46},{46,47,76,45,71,49,46},{44,34,91,44,70,49,46},{41,23,04,45,68,50,46},{48,48,48,44,68,59,45},{50,51,51,43,69,58,45},{49,52,56,43,68,58,45},{48,52,62,42,68,58,45},{45,48,71,42,68,58,45},{43,38,84,41,68,59,45},{41,27,98,41,67,59,45},{38,19,109,42,66,59,45},{47,47,49,44,52,74,45},{48,48,53,43,54,74,45},{47,48,60,43,55,73,45},{45,46,68,43,55,73,45},{43,40,78,42,56,72,45},{41,30,91,42,57,72,45},{38,20,105,41,57,71,45},{36,13,114,41,57,70,46},{46,47,50,45,43,77,51},{46,46,56,44,44,78,51},{45,43,64,43,45,77,51},{43,39,73,43,45,77,51},{40,31,85,42,46,77,51},{38,22,98,42,46,77,51},{35,12,111,42,47,76,51},{33,7,19,41,48,75,52},{46,46,51,45,44,57,71},{45,43,59,44,44,58,70},{43,37,68,43,45,58,70},{40,31,80,43,45,58,70},{38,22,92,43,46,58,70},{36,13,105,43,46 ,58,70},{33,5,117,42,47,58,70},{31,2,123,42,48,57,71},{45,41,55,45,51,24,96},{44,36,64,44,52,23,97},{42,29,75,43,53,23,97},{39,22,86,43,52,24,97},{37,14,98,43,53,24,97},{34,7,109,42,53,25,97},{32,1,118,41,53,25,97},{30,0,123,41,53,26,96}},
[0086] When MipSizeId=2 and modeId=2, mWeight[x][y]= {{20,16,16,76,9,8,16},{37,15,16,71,11,17,16},{65,13,17,67,12,17,16},{63,30,15,63,14,17,16},{30,62,13,57,16,17,16},{14,62,28,52,18,16,16},{21,22,64,46,21,15,16},{26,0,81,40,24,15,17},{23,16,16,69,48,8,18},{28,18,16,66,50,8,17},{36,17,17,61,54,7,18},{40,20,17,56,57,7,18},{34,29,18,50,61,6,18},{27,34,22,44,64,5,18},{25,22,37,37,67,5,18},{26,9,51,31,68,6,18},{18,17,17,17,87,9,17},{19,17,17,15,88,9,17},{20,18,17,14,88,10,17},{22,17,18,12,87,12,17},{23,18,19,11,85,15,16},{23,20,19,11,83,18,16},{22,19,22,10,79,22,16},{22,16,28,11,74,26,15},{16,17,16,7,58,50,10},{17,17,16,8,53,55,10},{18,17,17,10,47,60,9},{18,16,17,11,43,64,9},{19,16,17,12,38,68,9},{20,17,18,13,35,72,9},{20,17,19,14,31,74,9},{20,16,21,13,29,74,11},{17,16,16,16,15,86,11},{18,15,17,16,13,86,13},{18,16,16,16,13,84,15},{18,15,17,16,12,82,18},{19,16,17,16,12,79,21},{18,16,17,16,12,76,24},{18,16,17,15,12,73,28},{19,16,19,15,14,68,31},{17,17,16,17,10,59,43},{17,16,16,17,10,54,47},{18,16,16,17,11,48,52},{18,16,16,16,12,44,56},{17,17,16,16,13,40,59},{17,17,16,16,13,37,62},{17,17,17,15,14,34,65},{18,16,18,16,14,32,66},{17,16,16,15,16,17,79},{17,16,16,16,16,15,81},{18,16,16,16,16,14,82},{18,16,16,15,16,13,83},{17,18,16,15,16,13,83},{17,17,17,15,16,13,84}, {17,17,17,15,16,13,84},{17,16,18,15,16,13,83},{16,16,16,16,17,3,92},{17,16,16,15,17,4,91},{18,17,17,14,18,4,90},{18,17,16,14,18,4,91},{17,18,17,15,18,4,90},{17,17,18,14,18,4,90},{18,16,19,15,18,5,89}},
[0087] When MipSizeId=2 and modeId=3, mWeight[x][y]= {{13,9,10,43,11,12,9},{43,2,11,22,15,12,10},{73,2,11,16,16,12,9},{52,38,5,13,16,12,10},{11,71,6,12,14,13,10},{3,50,35,10,14,13,9},{11,12,68,11,13,13,10},{13,3,74,12,11,15,10},{20,9,10,51,29,11,10},{41,5,10,37,26,13,10},{58,9,10,23,27,14,9},{41,36,6,15,24,16,10},{14,57,11,11,21,18,9},{7,39,37,9,18,19,9},{12,9,63,10,15,20,9},{15,2,68,11,12,21,10},{16,11,11,19,60,11,11},{27,11,11,20,50,16,10},{35,15,11,17,42,20,10},{29,29,11,12,35,23,10},{17,37,18,8,29,26,9},{13,26,35,6,24,27,9},{15,8,53,7,19,27,10},{16,4,57,9,14,28,11},{12,11,11,5,51,36,8},{15,13,12,8,45,36,9},{19,16,14,9,38,38,9},{19,21,16,8,32,39,10},{18,22,21,7,27,39,10},{18,16,31,7,22,39,11},{18,9,41,6,18,39,11},{19,7,44,7,15,37,13},{11,12,11,9,18,64,10},{11,12,13,10,18,61,11},{13,13,15,10,17,58,12},{15,14,17,10,16,56,13},{17,14,20,9,14,55,13},{18,11,26,9,13,52,14},{19,9,31,8,11,50,15},{19,9,33,8,10,46,17},{10,11,12,11,4,59,28},{11,10,13,11,4,60,26},{12,10,15,11,5,59,25},{14,10,16,11,5,58,24},{15,10,18,11,4,57,24},{17,9,21,11,4,56,24},{19,9,23,10,4,53,24},{19,9,26,10,5,49,25},{10,10,12,11,5,27,60},{11,8,14,11,3,34,54},{13,8,15,12,2,38,50},{13,8,15,13,1,41,47},{15,8,17,13,0,42,45},{16,8,18,13,0,44,43},{18,8,19,12,0,44,4 1},{19,9,21,12,1,43,39},{11,8,12,11,6,9,77},{13,7,13,12,4,16,72},{15,6,14,13,2,21,67},{15,6,14,13,1,25,63},{15,7,15,14,0,27,61},{16,8,15,14,0,29,58},{17,8,17,14,0,29,56},{18,8,18,14,1,30,53}},
[0088] When MipSizeId=2 and modeId=4, mWeight[x][y]= {{15,13,13,55,12,13,13},{21,13,13,34,14,13,13},{39,12,13,22,14,13,13},{55,18,12,18,14,14,13},{48,37,11,16,14,14,13},{23,62,13,14,14,13,13},{11,53,35,14,14,13,12},{15,13,72,14,14,13,12},{16,13,13,63,27,12,13},{17,13,13,58,19,13,13},{22,13,13,43,18,13,13},{33,14,12,31,17,14,13},{45,18,12,24,16,14,12},{44,32,12,19,15,14,13},{29,49,15,17,14,14,12},{18,44,33,16,15,13,12},{15,13,13,32,60,10,13},{16,13,13,45,44,12,13},{17,14,13,49,32,13,12},{21,14,13,44,25,14,12},{30,14,13,37,21,14,12},{39,16,13,30,18,14,12},{39,27,13,24,17,14,12},{31,38,16,21,17,13,12},{13,13,13,13,64,27,11},{14,13,13,23,61,19,12},{15,14,13,34,51,16,12},{17,14,13,40,42,15,12},{20,14,13,40,34,14,12},{27,14,13,37,29,14,12},{33,16,13,32,25,13,12},{33,24,14,27,23,13,12},{13,13,13,13,33,61,9},{13,13,13,15,47,44,10},{14,13,13,20,54,31,11},{15,13,13,27,53,23,11},{16,14,13,32,49,18,12},{19,14,13,34,43,15,12},{24,14,13,34,37,14,12},{28,17,13,31,32,14,12},{13,14,13,15,10,71,20},{13,13,13,15,22,66,13},{14,13,13,15,37,53,11},{14,13,13,18,47,40,11},{14,13,13,23,52,29,11},{15,14,13,27,51,23,11},{18,14,13,30,47,19,11},{22,15,13,30,42,17,12},{13,13,13,14,12,34,57},{13,13,13,15,14,50,38},{13,13,13,15,21,58,23},{14,13,13,16,32,54,16},{13,13,13,18,41,45,13},{13,14,13,21,47, 36,12},{14,14,13,24,49,28,12},{17,14,13,26,46,24,12},{13,13,13,13,19,0,85},{13,13,13,13,20,12,72},{13,13,13,15,20,30,53},{13,13,13,16,23,44,35},{13,14,12,17,29,47,24},{13,14,13,18,36,44,18},{13,14,13,20,41,38,16},{15,14,14,22,42,33,15}},
[0089] When MipSizeId=2 and modeId=5, mWeight[x][y]= {{24,9,10,52,13,10,12},{53,9,10,25,26,6,13},{48,30,9,11,30,7,13},{15,59,12,6,25,13,11},{5,48,34,7,18,19,10},{10,15,62,8,12,20,13},{13,2,70,8,9,19,19},{13,3,62,9,6,16,30},{25,14,10,40,51,0,14},{20,28,11,16,55,5,13},{8,38,18,6,41,20,11},{5,28,34,6,23,31,12},{9,12,48,8,12,33,18},{12,2,53,9,6,30,28},{14,1,50,9,4,23,40},{14,5,42,8,4,15,51},{8,20,12,5,72,12,12},{2,24,19,5,46,35,9},{5,16,29,9,21,48,13},{9,6,36,10,9,45,25},{12,3,37,11,5,36,38},{13,4,34,11,4,25,51},{13,6,29,10,4,16,61},{13,9,26,10,6,11,66},{6,14,15,6,31,60,6},{7,10,22,11,12,64,15},{10,6,26,13,6,50,32},{11,4,27,12,5,33,49},{12,5,25,11,6,20,62},{12,7,22,11,7,13,69},{12,9,19,11,7,8,74},{12,10,19,10,8,7,74},{10,9,16,12,6,67,20},{11,6,20,13,5,46,41},{11,5,21,12,7,26,59},{11,7,19,12,9,14,70},{11,8,18,11,10,8,75},{11,9,16,11,10,5,78},{12,10,15,11,10,4,80},{11,10,15,10,10,4,78},{11,9,15,12,8,34,54},{11,7,17,11,10,16,69},{11,7,17,11,11,7,76},{11,8,16,11,11,4,80},{10,10,14,11,11,3,81},{11,10,13,11,12,2,82},{11,10,13,11,12,2,82},{11,11,13,10,12,3,80},{11,9,14,11,11,8,77},{11,8,14,11,12,3,81},{11,9,14,11,12,1,83},{10,10,13,11,12,2,83},{10,11,12,11,12,2,82},{10,11,12,11,12,3,82},{11,11,11,11,12,3,81},{11,11,11,11,13,5, 79},{11,10,13,11,13,2,82},{11,9,13,11,13,1,83},{11,10,12,11,13,2,82},{10,11,12,11,12,3,81},{10,11,12,11,12,4,80},{10,11,11,11,12,5,80},{11,11,11,11,13,5,79},{11,11,11,11,12,6,77}}.,
[0090] After obtaining the above parameters (i.e., mWeight, sW, and fO) from the mapping table, the above parameters and the predicted input value set can be input into Equation (1) and Equation (2) to calculate and obtain the predicted value of the sample at a specific position of the current block.
[0091] In an alternative embodiment, determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables to obtain the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block includes: The method includes determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables based on the size of the current block.
[0092] In other words, according to the size of the current block, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block corresponding to the size of the current block are obtained from the mapping table. For example, if the size of the current block is 4x4, MipSizeId=0; if the size of the current block is 4x8, 8x4, or 8x8, MipSizeId=1; if the size of the current block is larger than 8x8, MipSizeId=2. According to the value of MipSizeId, the MIP matrix of the current block and the bit right shift parameter of the current block corresponding to the size of the current block can be found from the mapping table.
[0093] Block S507 performs a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block.
[0094] After determining the predicted value of the sample at the specific position in block S506, a filtering process can be performed on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block.
[0095] In order to obtain predicted values of all samples in the current block, in one optional embodiment, block S507 may include the following content: perform an interpolation filtering process on the predicted value of the sample at a specific position to obtain predicted values of samples at other positions in the current block other than the sample at the specific position;
[0096] Here, by performing an interpolation filtering process mainly on the predicted values of samples at specific positions, predicted values of samples at positions other than the samples at the specific positions can be obtained, and predicted values of all samples in the current block can be obtained.
[0097] In other words, the prediction method based on the MIP technique performed by the encoder according to the embodiment of the present application differs from the conventional prediction method of equations (1) to (5) in that the calculation sign of p[0] in equation (7) is reversed from that of equation (3). Therefore, all p[x] values in equations (3) and (7) achieve a more unified effect in form. That is, pTemp[0] is subtracted in both equations (3) and (7), and the average compensation in equation (1) directly uses pTemp[0], so that the pTemp[0] coefficient in the calculation formula of predMip[x][y] is unified as follows:
number
[0098] The coefficients of the conventional prediction method are as follows: If y=0:
number
number
[0099] JPEG2026010167000013.jpg45150
[0100] Based on this, the parameter values in the first column of the MIP matrix mWeightf obtained by training are the values obtained by inverting the parameter values in the first column of the original MIP matrix mWeightf. In this way, the range of parameter values in the entire MIP matrix mWeightf is smaller than the range of parameter values in the original MIP matrix mWeightf, which helps to improve the accuracy of representation and therefore the accuracy of prediction.
[0101] Regarding the change in the value range after the first column of data in the original MIP matrix mWeightf is inverted, for example, for the 28 original floating-point matrices with MipSizeId of 0 and 1 shown in Table 1, the value range obtained by inverting the first column is either unchanged or reduced. As shown in Table 2 below, among the 28 matrices, the value range of 11 matrices is reduced, and the value range of the remaining 17 matrices is unchanged. Among the 11 matrices with reduced value ranges, there are four matrices that can improve the accuracy of the weighted representation obtained by currently known training. [Table 2]
[0102] As can be seen, Table 2 shows the matrix IDs for matrices with MipSizeId=0 and 1 that have a reduced value range after inversion, and matrices that have a reduced value range and larger sW values after inversion.
[0103] Tables 3 to 5 below are specific examples. Each table is divided into two parts (left and right). In Tables 3 and 5, the left part is mWeightf, and the right part is mWeightf'. In Table 4, the left part is mWeightf'' and the right part is mWeight. In Tables 3 and 5, the first column represents the value of mWeightf[x][0], and the first column on the right represents the value after inverting mWeightf[x][0].
[0104] Tables 3 and 4 show the changes after adopting this technology in the same MIP mode. After inverting mWeightf[x][0], the value range becomes smaller, and the original sW value changes from 5 to 6. Each value of mWeight[x][y] obtained by equation (6) is 127 or less, which is within the valid display range of 7 bits. Table 5 shows an example where the value range remains unchanged after inverting mWeightf[x][0]. [Table 3]
[0105] Table 3 shows an example where the first column of the primitive floating-point matrix with MipSizeId=0 and modeId=3 is reversed (the left part shows the original values, the right part shows the reversed values). [Table 4]
[0106] Table 4 shows a matrix where MipSizeId=0 and modeId=3. Here, by adopting the technical solution of this application, right The shift bit is sW=6, which does not exceed the 7-bit display range. [Table 5]
[0107] Table 5 shows an example where the first column of a primitive floating-point matrix with MipSizeId=0 and modeId=16 is reversed (the left part shows the original values, the right part shows the reversed values).
[0108] As can be seen from the examples in Tables 3 to 5, the method for determining predicted values according to the embodiments of the present application can reduce the value range of the floating-point number matrix obtained by MIP training, improve the accuracy of fixed-point processing, and thus improve prediction accuracy and ultimately increase encoding efficiency.
[0109] An embodiment of the present application provides a method for determining a predicted value, which is applied to an encoder. In this embodiment, a first constant value is calculated, and the difference between the first constant value and a first reference value in a reference value set is determined to be a first predicted input value in a predicted input value set. The predicted input value set is used to calculate a predicted value for a current block, which can effectively reduce the dynamic value range of the predicted input value when predicting in MIP mode. Therefore, compared with the prior art, when the predicted input value set and the MIP matrix are represented with the same number of bits, the dynamic range of data can be more accurately represented, which improves the accuracy of the predicted value calculation in MIP mode and improves coding efficiency.
[0110] In order to improve the prediction accuracy of MIP mode and improve the coding efficiency, an embodiment of the present application provides a method for determining a predicted value. Figure 6 is a flowchart of a method for determining a predicted value according to another embodiment of the present application. As shown in Figure 6, this method can be applied to a decoder. This method includes the following steps:
[0111] Block S601 parses the bitstream to obtain the size of the current block and the coding mode of the current block.
[0112] Specifically, when a decoder receives a bitstream, it first analyzes the bitstream to obtain the size and coding mode of the current block. The coding mode can be one of conventional intra prediction modes or one of MIP modes. Here, the coding mode mainly refers to one of MIP modes.
[0113] Block S602: if the coding mode of the current block is MIP mode, obtain the reconstructed values of the samples adjacent to the current block, and perform a filtering process on the reconstructed values of the adjacent samples to obtain a set of reference values of the current block.
[0114] For example, the size of the current block can be 4x4, 4x8, 8x4, or 8x8. If the size of the current block is 4x4, the coding mode is one of M=35 coding modes. If the size of the current block is 4x8, 8x4, or 8x8, the coding mode is one of M=19 coding modes. If the current block is any other size, the coding mode is one of M=11 coding modes.
[0115] In other words, if the coding mode of the current block is MIP mode, the decoder first obtains the reconstructed values of the samples adjacent to the current block, where the reconstructed values of the samples adjacent to the current block include the reconstructed values of the samples in the top row of the current block and the reconstructed values of the samples in the left column of the current block.
[0116] After obtaining the reconstructed values of the adjacent samples, for example, the reconstructed value of the sample in the top row of the current block obtained is redT (containing N values), and the reconstructed value of the sample in the left column of the current block obtained is redL (containing N values), and redT and redL constitute a new vector pTemp, which is the reference value set of the current block.
[0117] To perform a filtering process to obtain a reference value set for the current block, in an optional embodiment, in S602, performing a filtering process on the reconstructed values of adjacent samples to obtain a reference value set for the current block includes: dividing the reconstructed values of the adjacent samples into N groups, calculating an average value of the reconstructed values of each group, and setting the average value as the reference value of the reference value set, where N is a positive integer.
[0118] N is set to a positive integer value corresponding to the preset size of the current block.
[0119] In other words, performing a filtering process on the reconstructed values of adjacent samples in block S602 specifically involves dividing redT and redL into N groups, calculating the average value of the reconstructed values of each group to obtain N average values, and using the N average values as the reference values of the reference value set.
[0120] For example, if the size of the current block is 4x4, then inSize=4; if the size of the current block is 4x8, 8x4 or 8x8, then inSize=8; if the size of the current block is greater than 8x8, then inSize=7.
[0121] Block S603: if the size of the current block is smaller than the preset threshold, calculate a second constant value based on the bit depth value of the luminance component of the samples in the current block.
[0122] In practice, the size of the current block can be represented by MipSizeId. If MipSizeId is a number less than 2, i.e., if MipSizeId is equal to 0 or 1, the second constant value is calculated based on the bit depth value of the luma component of the samples in the current block.
[0123] To calculate the second constant value, in one optional embodiment, in block S603, calculating the second constant value based on the bit depth values of the luma components of the samples in the current block includes: The second constant value may be set to a value obtained by performing a binary bit left shift operation on the numeric value 1, where the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus 1.
[0124] Specifically, two The constant value is the value obtained by performing a bitwise left shift operation on the number 1, where the number of bits shifted left is equal to the bit depth minus 1.
[0125] Block S604 determines that the first predicted input value of the set of predicted input values is the difference between the second constant value and the first reference value of the set of reference values.
[0126] The set of predicted input values is used to calculate the prediction value of the current block based on the MIP.
[0127] After obtaining the second constant value, in S604, the difference between the second constant value and the first reference value in the reference value set can be determined as a first predicted input value, which can be obtained by calculating using the above formula (7).
[0128] Block S605 determines other predicted input values in the predicted input value set other than the first predicted input value based on the reference value set.
[0129] The other predicted input value p[i] includes a predicted input value other than the first predicted input value when the size of the current block is smaller than a preset threshold. The other predicted input value p[i] may further include a predicted input value when the size of the current block is equal to or larger than a preset threshold. The other predicted input value can be obtained by calculation using the above equation (8).
[0130] Block S606 calculates a predicted value for a sample at a particular position in the current block based on the set of predicted input values.
[0131] Specifically, after all predicted input values are determined, a set of predicted input values can be obtained, and prediction can be performed based on the set of predicted input values to obtain a predicted value of a sample at a specific position of the current block, for example, a predicted value of a sample at a position identified by a crosshair in FIG.
[0132] To determine a predicted value of a sample at a specific position of the current block, in one alternative embodiment, block S606 includes the following steps: Determine a MIP matrix of the current block, a bit right shift parameter of the current block, and a weighting parameter of the current block from one or more pre-stored mapping tables; Calculate a predicted value of a sample at a specific position of the current block based on a set of predicted input values, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block.
[0133] In other words, one or more mapping tables are pre-stored in the encoder, which can determine the MIP matrix (mWeit) of the current block, the bit right shift parameter (sW) of the current block, and the weighting parameter (fO) of the current block.
[0134] After obtaining the above parameters from the mapping table, the above parameters and the predicted input value set can be input into equations (1) and (2) to calculate and obtain the predicted value of the sample at a specific position of the current block.
[0135] In an alternative embodiment, determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables to obtain the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block includes: The method includes determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables based on the size of the current block.
[0136] In other words, according to the size of the current block, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block corresponding to the size of the current block are obtained from the mapping table. For example, if the size of the current block is 4x4, MipSizeId=0; if the size of the current block is 4x8, 8x4, or 8x8, MipSizeId=1; if the size of the current block is larger than 8x8, MipSizeId=2. According to the value of MipSizeId, the MIP matrix of the current block and the bit right shift parameter of the current block corresponding to the size of the current block can be found from the mapping table.
[0137] Block S607 performs a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block.
[0138] After determining the predicted value of the sample at the specific position in block S606, a filtering process can be performed on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block.
[0139] To obtain predicted values for all samples in the current block, in one optional embodiment, block S60 may include the following: performing an interpolation filtering process on the predicted values of samples at specific positions to obtain predicted values for samples at positions other than the samples at specific positions in the current block;
[0140] Here, by performing an interpolation filtering process mainly on the predicted values of samples at specific positions, predicted values of samples at positions other than the samples at the specific positions can be obtained, and predicted values of all samples in the current block can be obtained.
[0141] An embodiment of the present application provides a method for determining a predicted value, which is applied to a decoder. In this embodiment, a second constant is calculated, and the difference between the second constant value and a first reference value in a reference value set is determined to be a first predicted input value in a predicted input value set. The predicted input value set is used to calculate a predicted value for a current block, which can effectively reduce the dynamic value range of the predicted input value when predicting in MIP mode. Therefore, compared with the prior art, when the predicted input value set and the MIP matrix are represented with the same number of bits, the dynamic range of data can be more accurately represented, which improves the accuracy of the predicted value calculation in MIP mode and improves coding efficiency.
[0142] Second Example
[0143] Based on the same inventive concept, an embodiment of the present application provides an encoder. FIG. 7 is a schematic diagram illustrating the structure of an encoder according to an embodiment of the present application. As shown in FIG. 7, the encoder includes a first acquisition module 71, a first processing module 72, a first calculation module 73, a first determination module 74, a second calculation module 75, a third calculation module 76, and a second processing module 77. The first acquisition module 71 is used to obtain reconstructed values of samples adjacent to a current block. The first processing module 72 is used to perform a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set for the current block. The first calculation module 73 is used to calculate a first constant value based on the bit depth value of the luminance component of the samples in the current block when the size of the current block is smaller than a predetermined threshold. The first determination module 74 is used to determine that a first predicted input value in the set of predicted input values is the difference between the first constant value and a first reference value in the set of reference values. The second calculation module 75 is used to determine predicted input values other than the first predicted input value in the set of predicted input values based on the reference value set. The third calculation module 76 is used to calculate a predicted value of a sample at a specific position of the current block based on a set of predicted input values, and the second processing module 77 is used to perform a filtering process on the predicted value of the sample at the specific position to obtain predicted values for all samples in the current block.
[0144] In one optional embodiment, the first processing module 72 is specifically used to divide the reconstructed values of adjacent samples into N groups, calculate the average value of the reconstructed values of each group, and set the average value as the reference value of the reference value set, where N is a positive integer.
[0145] N is set to a positive integer value corresponding to the preset size of the current block.
[0146] In one alternative embodiment, the first calculation module 73 calculating a first constant value based on the bit depth value of the luma component of the sample in the current block includes setting the first constant value to a value obtained by performing a binary bit left shift operation on the number 1, where the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus 1.
[0147] In an alternative embodiment, the third calculation module 76 is specifically used to determine the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables, and calculate a predicted value of a sample at a specific position of the current block based on the predicted input value set, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block.
[0148] In an alternative embodiment, the third calculation module 76 determines the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables by: The method includes determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables based on the size of the current block.
[0149] In one alternative embodiment, the second processing module 77 is specifically used to perform an interpolation filtering process on the predicted value of a sample at a specific position to obtain the predicted value of a sample at a position other than the sample at the specific position in the current block.
[0150] An embodiment of the present application provides a decoder. FIG. 8 is a schematic diagram illustrating the structure of a decoder according to an embodiment of the present application. As shown in FIG. 8, the decoder includes a second acquisition module 81, a third processing module 82, a fourth calculation module 83, a second determination module 84, a fifth calculation module 85, a sixth calculation module 86, and a fourth processing module 87. The second acquisition module 81 is used to analyze the bitstream to obtain the size and coding mode of a current block. If the coding mode of the current block is matrix-based intra prediction (MIP) mode, the third processing module 82 is used to obtain reconstructed values of samples adjacent to the current block and perform a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set for the current block. If the size of the current block is smaller than a predetermined threshold, the fourth calculation module 83 is used to calculate a second constant value based on the bit depth value of the luma component of a sample in the current block. The second determination module 84 is used to determine that a first predicted input value of the predicted input value set is the difference between the second constant value and a first reference value of the reference value set. The fifth calculation module 85 is used to determine other predicted input values in the predicted input value set than the first predicted input value based on the reference value set. The sixth calculation module 86 is used to calculate a predicted value of a sample at a specific position in the current block based on the predicted input value set. The fourth processing module 87 is used to perform an interpolation filtering process on the predicted value of the sample at the specific position to obtain a predicted value of a sample at a position other than the sample at the specific position in the current block.
[0151] In an alternative embodiment, the third processing module 82 performs a filtering operation on the reconstructed values of neighboring samples to obtain a set of reference values for the current block, the filtering operation comprising: The method includes dividing the reconstructed values of adjacent samples into N groups, calculating the average value of the reconstructed values of each group, and setting the average value as the reference value of the reference value set, where N is a positive integer.
[0152] N is set to a positive integer value corresponding to the preset size of the current block.
[0153] In one alternative embodiment, the fourth calculation module 83 calculates the second constant value based on the bit depth values of the luminance components of the samples in the current block by: The second constant value may be set to a value obtained by performing a binary bit left shift operation on the numeric value 1, where the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus 1.
[0154] In an alternative embodiment, Six Calculation Module 8 6 Specifically, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block are determined from one or more mapping tables stored in advance, and a predicted value of a sample at a specific position of the current block is calculated based on the predicted input value set, the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block.
[0155] In an alternative embodiment, Six Calculation Module 8 6 determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables; The method includes determining the MIP matrix of the current block, the bit right shift parameter of the current block, and the weighting parameter of the current block from one or more pre-stored mapping tables based on the size of the current block.
[0156] In one optional embodiment, the fourth processing module 87 is specifically used to perform an interpolation filtering process on the predicted value of a sample at a specific position to obtain the predicted value of a sample at a position other than the sample at the specific position in the current block.
[0157] 9 is a schematic diagram illustrating the structure of an encoder according to another embodiment of the present application. As shown in FIG. 9, the encoder 900 according to the embodiment of the present application includes a processor 91 and a storage medium 92 storing instructions executable by the processor 91. The storage medium 92 is operable by the processor 91 via a communication bus 93. When executed by the processor 91, the instructions perform the method for determining a predicted value according to one or more of the above-described embodiments.
[0158] In practice, each component of the encoder is coupled together via a communication bus 93. It can be understood that the communication bus 93 is used to realize the connection communication between these components. In addition to a data bus, the communication bus 93 further includes a power bus, a control bus, and a status signal bus. For clarity of explanation, various buses are marked as the communication bus 93 in FIG. 9.
[0159] 10 is a schematic diagram illustrating the structure of a decoder according to another embodiment of the present application. As shown in FIG. 10, the decoder 1000 according to the embodiment of the present application includes a processor 101 and a storage medium 102 storing instructions executable by the processor 101. The storage medium 102 is operable by the processor 101 via a communication bus 103. When executed by the processor 101, the instructions perform a method for determining a prediction value according to one or more of the above-described embodiments, including determining a weighting parameter for a block.
[0160] In practice, each component of the encoder is coupled together via a communication bus 103. It can be understood that the communication bus 103 is used to realize the connection communication between these components. In addition to a data bus, the communication bus 103 further includes a power bus, a control bus, and a status signal bus. For clarity of explanation, various buses are marked as the communication bus 103 in FIG. 10.
[0161] An embodiment of the present application provides a computer-readable storage medium that stores executable instructions that, when executed by one or more processors, cause the processors to perform a method for determining a predicted value according to one or more of the embodiments described above.
[0162] The memory of the embodiments of the present application can be volatile memory or nonvolatile memory, or can include both volatile and nonvolatile memory. The nonvolatile memory can be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. The volatile memory can be random access memory (RAM) that functions as an external high-speed cache. By way of illustrative, but not limiting example, many types of RAM are available, such as Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), Synchronous Dynamic Random Access Memory (SDRAM), Double Data Rate Synchronous Dynamic Random Access Memory (DDRSDRAM), Enhanced Synchronous Dynamic Random Access Memory (ESDRAM), Synch-link Dynamic Random Access Memory (SLDRAM), and Direct Rambus Random Access Memory (DRRAM).The memory of the systems and methods described herein may comprise, without being limited to, these and any other suitable types of memory.
[0163] The processor may be an integrated circuit chip having signal processing capabilities. In the implementation process, each step of the above-described method embodiments may be completed by an integrated logic circuit in the form of hardware of the processor or by instructions in the form of software. The above-described processor may be a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, a discrete gate or transistor logic device, or a discrete hardware component. The processor may implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of the present application. The general-purpose processor may be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of the present application may be performed and completed directly by a hardware decoding processor, or may be performed and completed by a combination of hardware and software modules in the decoding processor. The software module can be stored in a storage medium well-known in the art, such as a random access memory, a flash memory, a read-only memory, a programmable read-only memory, an electrically erasable programmable memory, a register, etc. The storage medium is stored in the memory. The processor reads the information stored in the memory and performs the steps of the above-described method together with the processor hardware.
[0164] It may be understood that the embodiments described herein may be implemented by hardware, software, firmware, middleware, microcode, or a combination thereof. When implemented by hardware, a processing unit may be implemented by one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processing (DSPs), DSP devices, Programmable Logic Devices (PLDs), Field-Programmable Gate Arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units, or a combination thereof.
[0165] For a software implementation, the techniques described herein may be implemented with modules (e.g., procedures, functions, etc.) that perform the functions described herein. The software code is stored in a memory and executed by a processor. The memory may be within the processor or external to the processor.
[0166] As used herein, the terms "comprises," "includes," or variations thereof are intended to cover a non-exclusive inclusion, such that a process, method, object, or apparatus comprising a series of steps or units may include not only the listed steps or units, but also other steps or units not listed, or may include other steps or units inherent to the process, method, object, or apparatus. Absent more limitations, a process, method, object, or apparatus that includes an element limited by a statement "comprising..." does not exclude the presence of other identical elements.
[0167] The sequence numbers of the above-described embodiments are used for explanation purposes only and do not represent the superiority or inferiority of the embodiments.
[0168] From the description of the above embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by software and a necessary universal hardware platform. Of course, they can also be implemented by hardware alone, but the former is a preferred embodiment. Based on this understanding, an essential part of the technical solution of the present application or a part that contributes to the prior art can be embodied as a software product. The computer software product can be stored in a storage medium (such as a ROM / RAM, a magnetic disk, or an optical disk) and includes a plurality of instructions that cause a terminal (such as a mobile phone, a computer, a server, or a network device) to execute the method of each embodiment of the present application.
[0169] In practice, each component of the decoder is coupled together via a communication bus 103. It can be understood that the communication bus 103 is used to realize the connection communication between these components. In addition to a data bus, the communication bus 103 further includes a power bus, a control bus and a status signal bus. For clarity of explanation, various buses are marked as communication bus 103 in Fig. 10.
[0170] Industrial Applicability
[0171]
[0009] The present application provides a method for determining a predicted value, an encoder, a decoder, and a computer storage medium. The method for determining a predicted value applied to an encoder includes: obtaining reconstructed values of samples adjacent to a current block; performing a filtering process on the reconstructed values of the adjacent samples to obtain a reference value set for the current block; calculating a first constant value based on a bit depth value of a luma component of a sample in the current block if the size of the current block is smaller than a predetermined threshold; determining a first predicted input value in the set of predicted input values as a difference between the first constant value and a first reference value in the set of reference values; determining other predicted input values in the set of predicted input values based on the reference value set; calculating a predicted value of a sample at a specific position in the current block based on the set of predicted input values; and performing a filtering process on the predicted value of the sample at the specific position to obtain predicted values for all samples in the current block. This can improve prediction accuracy in video encoding and decoding, thereby improving encoding and decoding efficiency.
Claims
1. an encoder, a first obtaining module, a first processing module, a first calculating module, a first determining module, a second calculating module, a third calculating module, and a second processing module; the first acquisition module is used to acquire reconstructed values of samples adjacent to the current block; The first processing module is used to obtain a set of reference values of the current block by filtering the reconstructed values of the adjacent samples, and the number of reference values obtained by filtering the samples in the top row is equal to the number of reference values obtained by filtering the samples in the left column; The first calculation module is used to calculate a first constant value according to a bit depth value of a luminance component of a sample in the current block when the size of the current block is smaller than a predetermined threshold; the first determination module is used to determine that a first predicted input value of the set of predicted input values is a difference value obtained by subtracting a first reference value of the set of reference values from the predetermined value; the second calculation module is used to determine, based on the reference value set, other predicted input values in the set of predicted input values than the first predicted input value; the third calculation module is used to calculate a predicted value of a sample at a specific position of the current block based on the set of predicted input values; the second processing module is used to perform a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block; An encoder characterized by:
2. The first processing module performs a filtering process on the reconstructed values of neighboring samples to obtain a set of reference values of the current block, dividing the reconstructed values of the adjacent samples into N groups; Calculating the mean reconstruction value for each group; setting the average value as a reference value of the reference value set; where N is a positive integer.
2. The encoder of claim 1.
3. N is set to a positive integer value corresponding to a preset size of the current block; 3. The encoder of claim 2.
4. The first calculation module calculates a first constant value based on the bit depth values of the luminance components of the samples in the current block, The constant value is set to a value obtained by performing a binary bit left shift operation on a numeric value of 1; the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus one; 2. The encoder of claim 1.
5. The second processing module performs a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block, performing an interpolation filtering process on the predicted value of the sample at the specific position to obtain predicted values of samples at positions other than the sample at the specific position in the current block; 2. The encoder of claim 1.
6. a decoder, a second obtaining module, a third processing module, a fourth calculating module, a second determining module, a fifth calculating module, a sixth calculating module, and a fourth processing module; the second obtaining module is used to analyze the bitstream to obtain a size of a current block and a coding mode of the current block; When the coding mode of the current block is a matrix-based intra prediction (MIP) mode, the third processing module is used to obtain reconstructed values of samples adjacent to the current block, and perform a filtering process on the reconstructed values of the adjacent samples to obtain a set of reference values of the current block, wherein the number of reference values obtained by performing the filtering process on the samples in the top row is equal to the number of reference values obtained by performing the filtering process on the samples in the left column; the fourth calculation module is used to calculate a second constant value according to a bit depth value of a luminance component of a sample in the current block when the size of the current block is smaller than a predetermined threshold; the second determination module is used to determine that a first predicted input value of the set of predicted input values is a difference value obtained by subtracting a first reference value of the set of reference values from the second constant value; the fifth calculation module is used to determine, based on the reference value set, other predicted input values in the set of predicted input values than the first predicted input value; the sixth calculation module is used to calculate a predicted value of a sample at a specific position of the current block based on the set of predicted input values; the fourth processing module is used to perform a filtering process on the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block; A decoder characterized by:
7. The third processing module performs a filtering process on the reconstructed values of the neighboring samples to obtain a set of reference values of the current block, dividing the reconstructed values of the adjacent samples into N groups; Calculating the mean reconstruction value for each group; setting the average value as a reference value of the reference value set; where N is a positive integer.
7. A decoder according to claim 6.
8. N is set to a positive integer value corresponding to a preset size of the current block; 8. A decoder according to claim 7.
9. The fourth calculation module calculates a second constant value based on a bit depth value of a luminance component of a sample in a current block, the second constant value is set to a value obtained by performing a binary bit left shift operation on a numeric value 1; the number of left shift bits used in the binary bit left shift operation is equal to the bit depth value minus one; 7. A decoder according to claim 6.
10. The fourth processing module performs a filtering process on the predicted value of the sample at a specific position to obtain predicted values of all samples in the current block. performing an interpolation filtering process on the predicted value of the sample at the specific position to obtain predicted values of samples at positions other than the sample at the specific position in the current block; 7. A decoder according to claim 6.
11. 1. A computer-readable storage medium, comprising: the computer-readable storage medium storing executable instructions and a bitstream, the executable instructions, when executed by one or more processors, causing the processors to perform steps of an encoding method to generate the bitstream; The encoding method comprises: Obtaining reconstructed values of samples adjacent to the current block; filtering the reconstructed values of the adjacent samples to obtain a set of reference values of the current block, where the number of reference values obtained by filtering the samples in the top row is equal to the number of reference values obtained by filtering the samples in the left column; If the size of the current block is smaller than a predetermined threshold, calculating a first constant value based on bit depth values of luminance components of samples in the current block; determining a first predicted input value of the set of predicted input values as a difference value obtained by subtracting a first reference value of the set of reference values from the predetermined value; determining other predicted input values in the set of predicted input values other than the first predicted input value based on the set of reference values; calculating a predicted value for a sample at a particular position of the current block based on the set of predicted input values; filtering the predicted value of the sample at the specific position to obtain predicted values of all samples in the current block; Including, A computer-readable storage medium comprising:
Citation Information
Patent Citations
Method for determining predicted value, encoder, decoder, and computer storage medium
JP7579472B2
Coding of intra-prediction modes
WO2020249633A1