Prediction value determination method, encoder, decoder and computer storage medium
By acquiring and filtering the reconstructed values of adjacent pixels, calculating the difference between the predicted input value set and the reference value set, and combining the MIP matrix and the bit right shift parameter, the problem of low accuracy caused by the excessively large range of predicted values in the existing technology is solved, thereby improving the prediction accuracy and coding efficiency of video encoding and decoding.
Patent Information
- Application Number
- CN202511855018.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2019-09-24
- Publication Date
- 2026-02-13
AI Technical Summary
In existing video encoding and decoding methods, matrix-based intra-frame prediction methods suffer from low prediction accuracy and reduced encoding and decoding efficiency due to the large range of predicted input values.
By obtaining the reconstructed values of adjacent pixels in the current block, filtering is performed to obtain a reference value set. The value of the first constant is calculated, and the difference in the prediction input value set is determined. Combining the MIP matrix and the bit right shift parameter, the prediction value at a specific position in the current block is calculated, and filtering is performed to improve accuracy.
It improves the calculation accuracy of predicted values in MIP mode, enhances coding efficiency, reduces the dynamic range of predicted input value set, and improves coding efficiency.
Smart Images

Figure CN121531145A_ABST
Abstract
Description
Technical Field
[0001] This application relates to matrix-based intra-prediction (MIP) technology in the field of video coding, and more particularly to a method for determining prediction values, an encoder, a decoder, and a computer storage medium. Background Technology
[0002] Currently, in video encoding and decoding, three values are involved in determining the predicted value using MIP (Multi-Input Prediction Method), which need to be obtained during the calculation of the predicted value: the MIP matrix, the weighting parameter, and the bit right shift parameter. In existing methods for determining the predicted value, the value of the bit right shift parameter cannot be too large in order to ensure a complete representation of the numerical range. As a result, the range of predicted input values is too large when determining the predicted value, which affects the prediction accuracy and thus the efficiency of encoding and decoding. It can be seen that the prediction accuracy of existing prediction methods in video encoding and decoding is low. Summary of the Invention
[0003] This application provides a method for determining prediction values, an encoder, a decoder, and a computer storage medium, which can improve prediction accuracy and increase encoding / decoding speed in video encoding and decoding.
[0004] The technical solution of this application embodiment can be implemented as follows: In a first aspect, embodiments of this application provide a method for determining a predicted value, the method being applied in an encoder, the method comprising: Obtain the reconstructed values of neighboring pixels in the current block; filter the reconstructed values of the neighboring pixels to obtain a reference value set for the current block; when the size of the current block is less than a preset threshold, calculate the value of a first constant based on the bit depth of the pixel luminance component in the current block; determine the first predicted input value in the prediction input value set as the difference between the value of the first constant and the first reference value in the reference value set; based on the reference value set, determine the other predicted input values in the prediction input value set besides the first predicted input value; based on the prediction input value set, calculate the predicted value of a pixel at a specific position in the current block; filter the predicted value of the pixel at the specific position to obtain the predicted values of all pixels in the current block.
[0005] Secondly, embodiments of this application provide a method for determining a predicted value, the method being applied in a decoder, the method comprising: The code stream is parsed to obtain the size and encoding mode of the current block. When the encoding mode of the current block is Matrix Intra-Prediction (MIP), the reconstructed values of the adjacent pixels of the current block are obtained, and the reconstructed values of the adjacent pixels are filtered to obtain a reference value set for the current block. When the size of the current block is less than a preset threshold, the value of a second constant is calculated based on the bit depth of the pixel luminance component in the current block. The first predicted input value in the preset input value set is determined to be the difference between the value of the second constant and the first reference value in the reference value set. Based on the reference value set, other predicted input values in the predicted input value set, excluding the first predicted input value, are determined. Based on the predicted input value set, the predicted value of a pixel at a specific position in the current block is calculated. The predicted value of the pixel at the specific position is interpolated and filtered to obtain the predicted values of pixels at other positions in the current block, excluding the specific position.
[0006] Thirdly, embodiments of this application provide an encoder, the encoder comprising: A first acquisition module is used to acquire the reconstructed values of adjacent pixels in the current block; a first processing module is used to filter the reconstructed values of the adjacent pixels to obtain a reference value set for the current block; a first calculation module is used to calculate the value of a first constant based on the bit depth of the pixel luminance component in the current block when the size of the current block is less than a preset threshold; a first determination module is used to determine the difference between the first prediction input value in the preset input value set and the first reference value in the reference value set; a second calculation module is used to determine other prediction input values in the prediction input value set besides the first prediction input value based on the reference value set; a third calculation module is used to calculate the prediction value of a pixel at a specific position in the current block based on the prediction input value set; and a second processing module is used to filter the prediction value of the pixel at the specific position to obtain the prediction values of all pixels in the current block.
[0007] Fourthly, embodiments of this application provide a decoder, the decoder comprising: The second acquisition module is used to parse the bitstream to obtain the size and encoding mode of the current block; the third processing module is used to obtain the reconstructed values of the adjacent pixels of the current block when the encoding mode of the current block is matrix-based intra-prediction mode (MIP), and to filter the reconstructed values of the adjacent pixels to obtain a reference value set for the current block; the fourth calculation module is used to calculate the value of the second constant based on the bit depth of the pixel luminance component in the current block when the size of the current block is less than a preset threshold; the second determination module is used to determine the difference between the value of the second constant and the first reference value in the reference value set as the first prediction input value in the preset input value set; the fifth calculation module is used to determine other prediction input values in the prediction input value set other than the first prediction input value based on the reference value set; the sixth calculation module is used to calculate the prediction value of the pixel at a specific position in the current block based on the prediction input value set; the fourth processing module is used to perform interpolation filtering on the prediction value of the pixel at the specific position to obtain the prediction values of the pixels at other positions in the current block other than the specific position.
[0008] Fifthly, embodiments of this application provide an encoder, the encoder comprising: a processor and a storage medium storing processor-executable instructions, the storage medium performing operations dependent on the processor via a communication bus, wherein when the instructions are executed by the processor, the method for determining the predicted value described in one or more of the above embodiments is executed.
[0009] In a sixth aspect, embodiments of this application provide a decoder, the decoder comprising: a processor and a storage medium storing processor-executable instructions, the storage medium performing operations dependent on the processor via a communication bus, and when the instructions are executed by the processor, performing the prediction value determination method described in one or more of the above embodiments.
[0010] In a seventh aspect, embodiments of this application provide a computer-readable storage medium storing executable instructions, which, when executed by one or more processors, execute the method for determining the predicted value described in one or more of the above embodiments.
[0011] This application provides a method for determining prediction values, an encoder, a decoder, and a computer storage medium. The method may include: the encoder acquiring the reconstructed values of neighboring pixels in the current block; filtering the reconstructed values of neighboring pixels to obtain a reference value set for the current block; when the size of the current block is less than a preset threshold, calculating the value of a first constant based on the bit depth of the pixel luminance component in the current block; determining the difference between the first predicted input value in the preset input value set and the first reference value in the reference value set; determining other predicted input values in the predicted input value set besides the first predicted input value based on the reference value set; and calculating the predicted value of a pixel at a specific position in the current block based on the predicted input value set. The predicted values of pixels at specific locations are filtered to obtain the predicted values of all pixels in the current block. In other words, in this embodiment, a first constant is calculated, and the difference between the value of the first constant and the first reference value in the reference value set is determined as the first predicted input value in the predicted input value set. The predicted input value set is then used to calculate the predicted value of the current block. This effectively reduces the dynamic range of the predicted input value set during MIP mode prediction. Therefore, compared with the prior art, when using the same number of bits to represent the predicted input value set and the MIP matrix, the data in the dynamic range can be represented more accurately, improving the accuracy of the predicted value calculation process in MIP mode and thus improving coding efficiency. Attached Figure Description
[0012] Figure 1 This is a schematic diagram of the structure of a video encoding system; Figure 2 This is a schematic diagram of the video decoding system. Figure 3 This is a schematic diagram illustrating the process of encoding pixels using the MIP mode; Figure 4 This is a flowchart illustrating the encoding process using the MIP mode. Figure 5 A flowchart illustrating an optional method for determining predicted values provided in an embodiment of this application; Figure 6 A flowchart illustrating another optional method for determining predicted values provided in an embodiment of this application; Figure 7 A schematic diagram of an optional encoder provided for an embodiment of this application; Figure 8 A schematic diagram of an optional decoder provided in an embodiment of this application; Figure 9 This is a schematic diagram of another optional encoder proposed in an embodiment of this application; Figure 10 This is a schematic diagram of another optional decoder proposed in an embodiment of this application. Detailed Implementation
[0013] The technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. It is understood that the specific embodiments described herein are merely for explaining the relevant application and not for limiting the application. Furthermore, it should be noted that, for ease of description, only the parts relevant to the application are shown in the accompanying drawings.
[0014] In video images, the latest Versatile Video Coding (VVC) has adopted AffineLinear Weighted Intra Prediction, proposed by HHI in the Joint Video Explore Team (JVET)-N0217, and renamed it MIP technology. This technology adds different numbers of matrix-based intra-prediction modes to the intra-luminance prediction process for different intra-luminance coding block sizes.
[0015] MIP technology divides luminance blocks into three categories based on the size of the intra-frame luminance coding block. Let the size of the luminance block be W. Based on their size, luma blocks can be divided into three categories: 4×4 luma blocks are classified as Category 1; 8×4, 4×8, and 8×8 luma blocks are classified as Category 2; and other sizes are classified as Category 3. For these three types of intra-frame luma coding blocks, the MIP technology adds M MIP modes to the existing 67 traditional intra-frame prediction modes.
[0016] Figure 1 This is a schematic diagram of the structure of a video encoding system, such as... Figure 1 As shown, the video coding system 100 includes components such as a transform and quantization module 101, an intra-frame estimation module 102, an intra-frame prediction module 103, a motion compensation module 104, a motion estimation module 105, an inverse transform and inverse quantization module 106, a filter control and analysis module 107, a deblocking filtering and sample adaptive offset (SAO) filtering module 108, a header information encoding and context-based adaptive binary arithmetic coding (CABAC) encoding module 109, and a decoding image buffer module 110.
[0017] Figure 2 This is a schematic diagram of the structure of a video decoding system, such as... Figure 2As shown, the video decoding system 200 includes components such as a header information decoding and CABAC decoding module 201, an inverse transform and inverse quantization module 202, an intra-frame prediction module 203, a motion compensation module 204, a deblocking and SAO filtering module 205, and a decoded image buffer module 206. After the video image is processed by the transform and quantization module 101, the intra-frame estimation module 102, the intra-frame prediction module 103, the motion compensation module 104, the motion estimation module 105, the deblocking and SAO filtering module 108, and the header information encoding and CABAC encoding module 109 in the video encoding system 100, the bitstream of the video image is output. The bitstream is input into the video decoding system 200, and after being processed by the header information decoding and CABAC decoding module 201, the inverse transform and inverse quantization module 202, the intra-frame prediction module 203, and the motion compensation module 204 in the video decoding system 200, the original video image is finally recovered.
[0018] The method for determining the prediction value when using MIP mode for encoding and decoding provided in this application embodiment is mainly applied to the intra-frame prediction module 103 in video encoding and the intra-frame prediction module 203 in video decoding, and works on both the encoding and decoding ends simultaneously.
[0019] For the first type of luminance block, M=35; for the second type of luminance block, M=19; and for the third type of luminance block, M=11.
[0020] Specifically, MIP technology is only applied to intra-frame luminance prediction. Similar to the traditional mode, the input of MIP prediction is the data of the previous row and the left column of the current block (equivalent to the image block to be encoded below), and the output is the predicted value of the current block. The specific prediction process is divided into three steps: averaging, matrix-vector multiplication, and interpolation. That is, by performing these three operations on the reconstructed luminance values of the adjacent pixels in the previous row and the left column of the input, the luminance prediction value of the current block can be obtained.
[0021] Figure 3 This is a flowchart illustrating the process of encoding pixels using the MIP mode, as shown below. Figure 3 As shown, the specific implementation is as follows: Step 1: Average the values of the upper adjacent reference points of the current luminance block to obtain vector redT, resulting in N values; average the values of the left adjacent reference points of the current luminance block to obtain vector redL, resulting in N values. When the luminance block size is a Class I block, N=2; when the luminance block size is a Class II or Class III block, N=4. Vectors redT and redL are combined to form a new vector pTemp and subsequent operations are performed. Step 2: Obtain the matrix mWeight and weighting parameters. fO The bit right shift parameter sW is obtained by calculating the following formula: Figure 3The partial predicted values of the current block, indicated by cross lines: (1) (2) When MipSizeId = 0 or 1, the following formula is used for calculation: (3) (4) When MipSizeId=2, the following formula is used for calculation: (5) Where predMip[x,y] is the predicted value at pixel position (x,y); pTemp[i] is the i-th reference value in the reference value set of the current block when using MIP mode for prediction, and p[x] is the i-th predicted input value when using MIP mode for prediction; inSize is determined according to the MIP mode number MipSizeId. When MipSizeId is equal to 0, inSize is equal to 4; when MipSizeId is equal to 1, inSize is equal to 8; when MipSizeId is equal to 2, inSize is equal to 7. The value of MipSizeId is determined according to the current block size. When the block size is 4x4, MipSizeId is equal to 0. When the current block size is 4x8, 8x4, or 8x8, MipSizeId is equal to 1. When the current block size is greater than 8x8, MipSizeId is equal to 2. BitDepth is the bit depth of the luminance component (i.e., how many bits are used to represent the luminance component sample value). mWeight represents the MIP matrix. predC, incH, and incW are used to determine the parameters of the matrix element corresponding to the (x, y) pixel position. ">>" is the bit right shift operator. oW represents the shift offset used in the bit right shift operation, and sW represents the number of bits for the bit right shift. fO Represents the weighted parameters, sW and fO At least it can be determined based on the current block size or the value of MipSizeId, for example, by using a mapping table related to the value of MipSizeId to determine sW and fO The value of sW recorded in the mapping table at least for different MipSizeId values. fO The value of .
[0022] Step 3: Obtain the remaining predicted values in the current block through linear interpolation, thus obtaining... Figure 3 The predicted values of the current block are indicated by multiple small dots.
[0023] It is evident that three values need to be obtained in the process of determining the predicted value in MIP technology: mWeight, fO And sW, where the value of mWeight is related to both the prediction mode and the pixel spatial location, while fO Both sW and mWeight are only related to the prediction pattern. p[i] is calculated using formulas (3), (4), and (5), and the values of mWeight and mWeight are... fO All values are stored as unsigned 7-bit binary numbers. sW is the offset corresponding to the prediction mode, which takes the value of 5, 6, or 7 depending on the prediction mode (as shown in Table 1 below). The pixel value can be obtained by calculating the matrix-vector product, and the final overall memory requirement is 4.5395 kilobytes.
[0024] Table 1
[0025] When using the MIP mode for prediction, for the current block, the index of the mode to be used is first determined. Based on this mode index, a fixed SW value for the current block is obtained by looking up a table, and then mWeight- fO Then, after right shifting by sW bits, the original floating-point matrix is obtained and used for calculating the predicted value. Figure 4 This is a flowchart illustrating the encoding process using the MIP mode, such as... Figure 4 As shown: First, obtain the index number of the MIP mode. Then, based on the MIP mode index number, retrieve the machine-trained mWeight and... fO Based on the pattern index number of the MIP, retrieve sW from the mapping table, and finally, execute. Make a prediction and obtain the predicted value.
[0026] In other words, in the existing MIP technology in VVC, the original floating-point number mWeightf[x][y] of all values of mWeight is derived from its minimum value (often a negative value). fO The fixed-point representation of the initial offset: (6) Here, mWeight[x][y] is stored as an unsigned 7-bit binary number, which results in a certain loss of precision. The larger the value of sW, the higher the precision. However, to ensure the complete representation of the numerical range, the value of sW cannot be too large. Since the same value of sW is used indiscriminately throughout the matrix, the precision of parameters with smaller original value ranges must be further reduced to adapt to the common value range of all parameters in the matrix. The range of parameter variation in the original matrix is also related to the way p[i] data is obtained. The calculation method of p[i] data in the existing method has expanded the range of parameter variation, reduced the precision of the data in the weight matrix, increased the prediction error of the MIP mode, and reduced the coding efficiency.
[0027] To improve the prediction accuracy of MIP mode and thus increase coding efficiency, embodiments of this application provide a method for determining prediction values. Figure 5 A flowchart illustrating an optional method for determining predicted values provided in this application embodiment is shown below. Figure 5 As shown, this method is applied to an encoder, and the method may include: S501: Obtain the reconstructed values of the adjacent pixels of the current block; Specifically, in order to determine the predicted value of the current block during the encoding process, the encoder first needs to obtain the reconstructed values of the adjacent pixels of the current block. Here, adjacent pixels include the reconstructed values of the pixels in the previous row and the pixels in the left column of the current block.
[0028] S502: Filter the reconstructed values of adjacent pixels to obtain the reference value set of the current block; After obtaining the reconstructed values of adjacent pixels, for example, the reconstructed values of the previous row of pixels are redT, totaling N values, and the reconstructed values of the left column of pixels are redL, totaling N values. redT and redL form a new vector pTemp as the reference value set for the current block. To obtain the reference value set for the current block through filtering, in an optional embodiment, S502 may include: Divide the reconstructed values of adjacent pixels into N groups, calculate the mean of the reconstructed values of adjacent pixels in each group, and use the mean as the reference value in the reference value set, where N is a positive integer.
[0029] Here, N is set to a positive integer value corresponding to the pre-defined current block size. That is to say, the process of filtering the reconstructed values of adjacent pixels in S502 can be specifically as follows: first, redT and redL are divided into N groups, then the mean of each group is calculated to obtain N mean values, and the N mean values are used as reference values in the reference set.
[0030] For example, when the current block size is 4x4, the value of inSize is 4; when the current block size is 4x8, 8x4, or 8x8, the value of inSize is 8; and when the current block size is greater than 8x8, the value of inSize is 7.
[0031] S503: When the size of the current block is less than the preset threshold, calculate the value of the first constant based on the bit depth of the pixel luminance component in the current block. In practical applications, when the size of the current block can be represented by MipSizeId, and MipSizeId is a number less than 2, that is, when MipSizeId is equal to 0 or 1, the value of the first constant is first calculated based on the bit depth of the pixel luminance component in the current block.
[0032] In order to calculate the value of the first constant, in an optional embodiment, S503 may include: The value of the first constant is set to the value obtained by performing a binary left shift operation on the value 1, where the number of bits used in the binary left shift operation is equal to the value of the bit depth minus 1.
[0033] Specifically, the first constant is the value obtained by left-shifting 1, and the number of bits shifted is the bit depth minus 1.
[0034] S504: Determine the difference between the first predicted input value in the predicted input value set and the first reference value in the reference value set; The prediction input value set is used to calculate the prediction value of the current block based on the MIP. After the first constant is calculated by S504, the difference between the value of the first constant and the first reference value in the reference values can be used to determine the first prediction input value. The first prediction input value p[0] can be calculated using the following formula: (7) S505: Based on the reference value set, determine the other predicted input values in the predicted input value set, excluding the first predicted input value; Among them, other predicted input values p[i] include predicted input values other than the first predicted input value when the size of the current block is less than the preset threshold. Other predicted input values p[i] can also include predicted input values when the size of the current block is greater than or equal to the preset threshold, which can be calculated using the following formula: (8) S506: Calculate the predicted value of a pixel at a specific location in the current block based on the predicted input value set; Specifically, after determining all the prediction input values, a prediction input value set can be obtained. Based on this set, prediction can be performed to obtain the predicted value of a pixel at a specific location in the current block. For example... Figure 3 The predicted value of the pixel position marked by the cross line.
[0035] In order to determine the predicted value of a pixel at a specific location in the current block, in an optional embodiment, S506 may include: Determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables; calculate the predicted value of a specific pixel position in the current block based on the input value set, the MIP matrix, bit right shift parameter, and weighting parameter.
[0036] In other words, the encoder pre-stores one or more mapping tables. Through these mapping tables, the MIP matrix of the current block, denoted by mWeight, the bit right shift parameter sW of the current block, and the weighting parameters of the current block can be determined. fO .
[0037] Among them, sW and fO At least it can be determined based on the current block size or the value of MipSizeId, for example, by using a mapping table related to the value of MipSizeId to determine sW and fO The value of sW recorded in the mapping table at least for different MipSizeId values. fO The value of .
[0038] It should be noted that the values in the above mapping table are constants, meaning that the values in the mapping table are not updated during the calculation of the MIP prediction value. The constant values in the mapping table can be obtained using the offline training method according to the calculation method of the above formula (7). Optionally, the constant values in the mapping table can be derived from the mapping tables corresponding to other different p[0] calculation methods according to the calculation method of the above formula (7). In particular, in the embodiments of this application, the mapping table derived from the MIP mapping table of VVCCD is as follows: If MipSizeId=0, 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} }, If MipSizeId=0, 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}} If MipSizeId=0, 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}}, If MipSizeId=0, 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}}, If MipSizeId=0, 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}} If MipSizeId=0, 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}}, If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=0, 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}}, If MipSizeId=0, 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}} If MipSizeId=0, 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}}, If MipSizeId=0, 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}} If MipSizeId=0, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}, {1 {7, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}} If MipSizeId=1, 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}}, If MipSizeId=1, 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}} If MipSizeId=1, 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}} If MipSizeId=2, 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}} If MipSizeId=2, 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} {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}} If MipSizeId=2, 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, 17, 17, 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, 16, 15, 18, 4, 91}, {17, 18, 17, 15, 18, 4, 90}, {17, 17, 18, 14, 18, 4, 90}, {18, 16, 19, 15, 18, 5, 89}} If MipSizeId=2, 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}} If MipSizeId=2, 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}} If MipSizeId=2, 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}}.
[0039] After obtaining the above parameters from the mapping table, the above parameters and the input value set can be input into formula (1) and formula (2) to calculate the predicted value of a specific pixel position in the current block.
[0040] In addition, 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, in an optional embodiment, the MIP matrix and the bit right shift parameter of the current block are determined from one or more pre-stored mapping tables, including: Based on the size of the current block, determine the MIP matrix, the bit right shift parameter, and the weighting parameter of the current block from one or more pre-stored mapping tables.
[0041] In other words, based on the current block size, the MIP matrix corresponding to the current block size, the bit right shift parameter of the current block, and the weighting parameter of the current block are obtained from the mapping table. For example, when the current block size is 4x4, the value of MipSizeId is 0; when the current block size is 4x8, 8x4, or 8x8, the value of MipSizeId is 1; and when the current block size is greater than 8x8, the value of MipSizeId is 2. The MIP matrix and bit right shift parameter of the current block corresponding to the current block size can be found in the mapping table based on the value of MipSizeId.
[0042] S507: Filter the predicted value at a specific location to obtain the predicted value of all pixels in the current block.
[0043] After determining the predicted value at a specific location through S506, the predicted value at that specific location can be further filtered to obtain the predicted values of all pixels in the current block.
[0044] In order to obtain the predicted values of all pixels in the current block, in an optional embodiment, S507 may include: Interpolate and filter the predicted value of the pixel at a specific location to obtain the predicted values of the pixels at other locations in the current block, excluding the specific location.
[0045] Here, the main process is to interpolate and filter the predicted value of a pixel at a specific location to obtain the predicted value of pixels at other locations besides that specific location, thereby obtaining the predicted value of all pixels in the current block.
[0046] In other words, the difference between the prediction method using MIP technology on the encoder side provided in this application embodiment and the formulas (1)-(5) in the traditional method is that the calculation sign of p[0] in formula (7) is reversed compared to that in formula (3). At this time, all p[x] values in formulas (3) and (7) achieve a more unified effect in form, that is, all are subtracting pTemp[0]. The mean compensation in formula (1) directly uses pTemp[0], so that the coefficient of pTemp[0] in the predMip[x][y] calculation formula is unified as follows: (9) The original coefficients were: When y=0: (10) Other situations: (11) Considering the filter nature of MIP, this coefficient is more likely to take values in the range of -1 to 1; therefore, it is unified as follows: After the expression, The value of is more likely to be positive, and the overall range of variation is smaller.
[0047] Based on this, the trained MIP matrix mWeight f The first column parameter will become mWeight f The first column of parameters is inverted, and the corresponding values are then used to invert the sign of the entire MIP matrix mWeight. f The range of values for the intermediate parameters will be greater than that of the original MIP matrix mWeight. f The smaller range of values makes it easier to improve representation accuracy, thereby improving prediction accuracy.
[0048] In the original MIP matrix mWeight fIn Table 1, for the 28 original floating-point matrices with MipSizeId values of 0 and 1, inverting the first column changes the range of data values. After inversion, the range of matrix data either remains unchanged or shrinks, as shown in Table 2. In 11 patterns, the range of values in the matrices shrinks, while in the other 17, the range remains unchanged. Among the patterns where the range of values shrinks, four can improve the accuracy of the weights obtained from current training.
[0049] Table 2
[0050] As can be seen in Table 2, the matrix numbers for MipSizeId=0 and 1, after inverting the matrix, result in reduced interval and increased sW.
[0051] Tables 3-5 below provide specific examples. Each table is divided into left and right parts. The left side of Tables 3 and 5 is mWeight. f The right side is mWeight f’ The left side of Table 4 shows mWeight. f’’ The right side represents mWeight, and the first column in Tables 3 and 5 represents mWeight. f The value of [x][0], the first column on the right is mWeight f [x][0] is the inverted value.
[0052] Tables 3 and 4 show the variations in the application of this technology under the same MIP specific modes, mWeight f After inverting [x][0], the data range becomes smaller, and the original sW value is changed from 5 to 6. The values of mWeight[x][y] calculated by formula (6) are all no greater than 127, which is within the effective representation range of 7 bits; Table 5 gives an mWeight f Examples of specific patterns where the data range remains unchanged after inverting [x][0].
[0053] Table 3
[0054] Table 3 shows the inverted first column of the original floating-point matrix with MipSizeId=0 and modeId=3 (left is the original, right is the inverted).
[0055] Table 4
[0056] Table 4 shows the matrix where MipSizeId=0 and modeId=3. By applying the proposed technique, the number of bits shifted right by sW=6 can be taken without exceeding the 7-bit representation range.
[0057] Table 5
[0058] Table 5 shows the inverted first column of the original floating-point matrix with MipSizeId=0 and modeId=16 (left is the original, right is the inverted).
[0059] As can be seen from the examples in Tables 3 to 5 above, the method for determining the predicted value provided in this application embodiment can narrow the range of floating-point matrix values obtained from MIP training, improve the accuracy of its fixed-point representation, thereby improving prediction accuracy and ultimately improving coding efficiency.
[0060] This application provides a method for determining prediction values. This method is applied in an encoder. In this application, a first constant is calculated, and the difference between the value of the first constant and the first reference value in the reference value set is determined as the first prediction input value in the prediction input value set. The prediction input value set is then used to calculate the prediction value of the current block. This effectively reduces the dynamic range of the prediction input value set during MIP mode prediction. Therefore, compared with the prior art, when using the same number of bits to represent the prediction input value set and the MIP matrix, the data in the dynamic range can be represented more accurately, improving the accuracy of the prediction value calculation process in MIP mode and thus improving coding efficiency.
[0061] To improve the prediction accuracy of MIP mode and thus enhance decoding efficiency, embodiments of this application provide a method for determining prediction values. Figure 6 A flowchart illustrating another optional method for determining predicted values provided in this application embodiment is shown below. Figure 6 As shown, this method is applied to a decoder, and the method may include: S601: Parse the bitstream to obtain the size and encoding mode of the current block; Specifically, in the decoder, after receiving the bitstream, the first step is to parse the bitstream to obtain the size and encoding mode of the current block. The encoding mode can be one of the traditional intra-frame prediction modes or one of the MIP modes. Here, we mainly focus on one of the MIP modes.
[0062] S602: When the encoding mode of the current block is MIP, obtain the reconstructed values of the adjacent pixels of the current block, filter the reconstructed values of the adjacent pixels, and obtain the reference value set of the current block. For example, if the current block size is 4x4, 4x8, 8x4, or 8x8, when the current block size is 4x4, one of the encoding modes M=35 is used; when the current block size is 4x8, 8x4, or 8x8, one of the encoding modes M=19 is used; and when the current block size is other, one of the encoding modes M=11 is used.
[0063] In other words, when the encoding mode of the current block is MIP mode, the decoder first obtains the reconstructed values of the adjacent pixels of the current block. The adjacent pixels include the reconstructed values of the pixels in the previous row and the pixels in the left column of the current block.
[0064] After obtaining the reconstructed values of adjacent pixels, for example, the reconstructed value of the previous row of pixels is redT, with a total of N values, and the reconstructed value of the left column of pixels is redL, with a total of N values, redT and redL form a new vector pTemp as the reference value set for the current block.
[0065] In order to obtain a reference value set for the current block through filtering, in an optional embodiment, in S602, the reconstructed values of adjacent pixels are filtered to obtain a reference value set for the current block, including: Divide the reconstructed values of adjacent pixels into N groups, calculate the mean of the reconstructed values of adjacent pixels in each group, and use the mean as the reference value in the reference value set. N is a positive integer.
[0066] Here, N is set to a positive integer value corresponding to the pre-defined current block size.
[0067] In other words, the process of filtering the reconstructed values of adjacent pixels in S602 can be specifically as follows: first, divide redT and redL into N groups, then calculate the mean of each group to obtain N mean values, and use the N mean values as reference values in the reference set.
[0068] For example, when the current block size is 4x4, the value of inSize is 4; when the current block size is 4x8, 8x4, or 8x8, the value of inSize is 8; and when the current block size is greater than 8x8, the value of inSize is 7.
[0069] S603: When the size of the current block is less than the preset threshold, calculate the value of the second constant based on the bit depth of the pixel luminance component in the current block. In practical applications, when the size of the current block can be represented by MipSizeId, and MipSizeId is a number less than 2, that is, when MipSizeId is equal to 0 or 1, the value of the second constant is first calculated based on the bit depth of the pixel luminance component in the current block.
[0070] To calculate the value of the second constant, in an optional embodiment, in S603, the value of the second constant is calculated based on the bit depth of the pixel luminance component in the current block, including: The value of the second constant is set to the value obtained by performing a binary left shift operation on the value 1, where the number of bits used in the binary left shift operation is equal to the value of the bit depth minus 1.
[0071] Specifically, the value of the second constant is the result of shifting 1 to the left, and the number of bits shifted is the bit depth minus 1.
[0072] S604: Determine the difference between the first predicted input value in the predicted input value set and the value of the second constant, and the first reference value in the reference value set; The prediction input value set is used by MIP to calculate the prediction value of the current block; After obtaining the second constant through S604, the difference between the value of the second constant and the first reference value in the reference values can be used to determine the first predicted input value. The first predicted input value can be calculated using the above formula (7).
[0073] S605: Based on the reference value set, determine the other predicted input values in the predicted input value set, excluding the first predicted input value; Among them, other predicted input values p[i] include the predicted input values other than the first predicted input value when the size of the current block is less than the preset threshold. Other predicted input values p[i] may also include the predicted input values when the size of the current block is greater than or equal to the preset threshold. They can be calculated using the above formula (8).
[0074] S606: Calculate the predicted value of a pixel at a specific location in the current block based on the predicted input value set; Specifically, after determining all the prediction input values, a prediction input value set can be obtained. Based on this set, prediction can be performed to obtain the predicted value of a pixel at a specific location in the current block. For example... Figure 3 The predicted value of the pixel position marked by the cross line.
[0075] In order to determine the predicted value of a pixel at a specific location in the current block, in one optional embodiment, S606 may include: Determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables; Calculate the predicted value for a specific pixel position in the current block based on the 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.
[0076] In other words, the encoder pre-stores one or more mapping tables. Through these mapping tables, the MIP matrix of the current block, denoted by mWeight, the bit right shift parameter sW of the current block, and the weighting parameters of the current block can be determined. fO .
[0077] After obtaining the above parameters from the mapping table, the above parameters and the input value set can be input into formula (1) and formula (2) to calculate the predicted value of a specific pixel position in the current block.
[0078] In addition, 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, in an optional embodiment, 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 pre-stored mapping tables, including: Based on the size of the current block, determine the MIP matrix, the bit right shift parameter, and the weighting parameter of the current block from one or more pre-stored mapping tables.
[0079] In other words, based on the current block size, the MIP matrix, bit right shift parameter, and weighting parameter of the current block corresponding to the current block size are obtained from the mapping table. For example, when the current block size is 4x4, MipSizeId is equal to 0; when the current block size is 4x8, 8x4, or 8x8, MipSizeId is equal to 1; and when the current block size is greater than 8x8, MipSizeId is equal to 2. The MIP matrix and bit right shift parameter of the current block corresponding to the current block size can be found in the mapping table based on the value of MipSizeId.
[0080] S607: Filter the predicted value of a pixel at a specific location to obtain the predicted values of all pixels in the current block.
[0081] After determining the predicted value at a specific location through S606, the predicted value at that specific location can be further filtered to obtain the predicted values of all pixels in the current block.
[0082] In order to obtain the predicted values of all pixels in the current block, in an optional embodiment, S607 may include: Interpolate and filter the predicted value at a specific location to obtain the predicted values of pixels at other locations in the current block, excluding the specific location.
[0083] Here, the main process is to interpolate and filter the predicted value of a pixel at a specific location to obtain the predicted value of pixels at other locations besides that specific location, thereby obtaining the predicted value of all pixels in the current block.
[0084] This application provides a method for determining prediction values. This method is applied in a decoder. In this application, a second constant is calculated, and the difference between the value of the second constant and the first reference value in the reference value set is determined as the first prediction input value in the prediction input value set. The prediction input value set is then used to calculate the prediction value of the current block. This effectively reduces the dynamic range of the prediction input value set during MIP mode prediction. Therefore, compared with the prior art, when using the same number of bits to represent the prediction input value set and the MIP matrix, the data in the dynamic range can be represented more accurately, improving the accuracy of the prediction value calculation process in MIP mode and thus improving coding efficiency.
[0085] Example 2 Based on the same inventive concept, this application provides an encoder. Figure 7 A schematic diagram of an optional encoder provided for an embodiment of this application is shown below. Figure 7 As shown, the encoder may include: The first acquisition module 71 is used to acquire the reconstructed values of adjacent pixels in the current block; the first processing module 72 is used to filter the reconstructed values of adjacent pixels to obtain a reference value set for the current block; the first calculation module 73 is used to calculate the value of a first constant based on the bit depth of the pixel luminance component in the current block when the size of the current block is less than a preset threshold; the first determination module 74 is used to determine the difference between the first predicted input value in the prediction input value set and the first reference value in the reference value set; the second calculation module 75 is used to determine the other predicted input values in the prediction input value set except for the first predicted input value based on the reference value set; the third calculation module 76 is used to calculate the predicted value of a pixel at a specific position in the current block based on the prediction input value set; and the second processing module 77 is used to filter the predicted value of the pixel at the specific position to obtain the predicted values of all pixels in the current block.
[0086] In an optional embodiment, the first processing module 72 is specifically used for: The reconstructed values of adjacent pixels are divided into N groups. The mean value of the reconstructed values of adjacent pixels in each group is calculated and used as the reference value in the reference value set. N is a positive integer.
[0087] Here, N is set to a positive integer value corresponding to the pre-defined current block size.
[0088] In an optional embodiment, the first calculation module 73 may calculate the value of the first constant based on the bit depth of the pixel luminance component in the current block, which may include setting the value of the first constant to the value after performing a binary bit left shift operation on the value 1, wherein the number of left shift bits used in the binary bit left shift operation is equal to the value of the bit depth minus 1.
[0089] In an optional embodiment, the third calculation module 76 is specifically used for: Determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables; calculate the predicted value of a specific pixel position in the current block based on the input value set, the MIP matrix, bit right shift parameter, and weighting parameter.
[0090] In an optional embodiment, the third calculation module 76 may determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables, which may include: determining the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables according to the size of the current block.
[0091] In an optional embodiment, the second processing module 77 is specifically used for: Interpolate and filter the predicted value of the pixel at a specific location to obtain the predicted values of the pixels at other locations in the current block, excluding the specific location.
[0092] This application provides a decoder. Figure 8 A schematic diagram of an optional decoder provided in an embodiment of this application is shown below. Figure 8 As shown, the decoder may include: The second acquisition module 81 is used to parse the bitstream to obtain the size and encoding mode of the current block; the third processing module 82 is used to obtain the reconstructed values of the adjacent pixels of the current block when the encoding mode of the current block is matrix-based intra-prediction mode (MIP), and to filter the reconstructed values of the adjacent pixels to obtain the reference value set of the current block; the fourth calculation module 83 is used to calculate the value of the second constant based on the bit depth of the pixel luminance component in the current block when the size of the current block is less than a preset threshold; the second determination module 84 is used to determine the difference between the first predicted input value in the predicted input value set and the value of the second constant and the first reference value in the reference value set; the fifth calculation module 85 is used to determine the other predicted input values in the predicted input value set except for the first predicted input value based on the reference value set; the sixth calculation module 86 is used to calculate the predicted value of the pixel at a specific position in the current block based on the predicted input value set; the fourth processing module 87 is used to perform interpolation filtering on the predicted value of the pixel at the specific position to obtain the predicted value of the pixel at other positions in the current block except for the specific position.
[0093] In an optional embodiment, the third processing module 82 performs filtering processing on the reconstructed values of adjacent pixels to obtain a reference value set for the current block, which may include: dividing the reconstructed values of adjacent pixels into N groups, calculating the mean value of the reconstructed values of adjacent pixels in each group, and using the mean value as a reference value in the reference value set, where N is a positive integer.
[0094] Here, N is set to a positive integer value corresponding to the pre-defined current block size.
[0095] In an optional embodiment, the fourth calculation module 83 may calculate the value of the second constant based on the bit depth of the pixel luminance component in the current block, which may include setting the value of the second constant to the value after performing a binary bit left shift operation on the value 1, wherein the number of bits used in the binary bit left shift operation is equal to the value of the bit depth minus 1.
[0096] In an optional embodiment, the sixth calculation module 86 is specifically used for: Determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables; calculate the predicted value of the pixel at a specific position in the current block based on the input value set, the MIP matrix, bit right shift parameter, and weighting parameter.
[0097] In an optional embodiment, the sixth calculation module 86 may determine the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables, which may include: determining the MIP matrix, bit right shift parameter, and weighting parameter of the current block from one or more pre-stored mapping tables based on the size of the current block.
[0098] In an optional embodiment, the fourth processing module 87 is specifically used to: perform interpolation filtering on the predicted value of a pixel at a specific location to obtain the predicted values of pixels at other locations in the current block besides the specific location.
[0099] Figure 9 This is a schematic diagram of another optional encoder structure proposed in an embodiment of this application, as shown below. Figure 9 As shown, the encoder 900 proposed in this application embodiment may further include a processor 91 and a storage medium 92 storing instructions executable by the processor 91. The storage medium 92 performs operations in reliance on the processor 91 via a communication bus 93. When the instructions are executed by the processor 91, the method for determining the predicted value described in one or more of the above embodiments is executed.
[0100] It should be noted that in practical applications, the various components in the encoder are coupled together via the communication bus 93. The communication bus 93 is used to achieve communication between these components. In addition to the data bus, the communication bus 93 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 9 The general labeled all buses as communication bus 93.
[0101] Figure 10 This is a schematic diagram of another optional decoder structure proposed in an embodiment of this application, as shown below. Figure 10 As shown, the decoder 1000 proposed in this application embodiment may further include a processor 101 and a storage medium 102 storing instructions executable by the processor 101. The storage medium 102 performs operations in reliance on the processor 101 via a communication bus 103. When the instructions are executed by the processor 101, the method for determining the predicted value described in one or more of the above embodiments is executed.
[0102] It should be noted that in practical applications, the various components in the decoder are coupled together via the communication bus 103. It can be understood that the communication bus 103 is used to achieve communication between these components. In addition to the data bus, the communication bus 103 also includes a power bus, a control bus, and a status signal bus. However, for clarity, in... Figure 10 The general labeled all buses as communication bus 103.
[0103] This application provides a computer storage medium storing executable instructions. When the executable instructions are executed by one or more processors, the processors execute the method for determining the predicted value described in one or more of the above embodiments.
[0104] It is understood that the memory in the embodiments of this application can be volatile memory or non-volatile memory, or may include both volatile and non-volatile memory. The non-volatile 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), which is used as an external cache. By way of example, but not limitation, many forms of RAM are available, such as Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDRSDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchlink DRAM (SLDRAM), and Direct Rambus RAM (DRRAM). The memory of the systems and methods described herein is intended to include, but is not limited to, these and any other suitable types of memory.
[0105] The processor may be an integrated circuit chip with signal processing capabilities. In implementation, each step of the above method can be completed by integrated logic circuits in the processor's hardware or by instructions in software form. The processor can 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 devices, discrete gate or transistor logic devices, or discrete hardware components. It can implement or execute the methods, steps, and logic block diagrams disclosed in the embodiments of this application. The general-purpose processor can be a microprocessor or any conventional processor. The steps of the methods disclosed in the embodiments of this application can be directly embodied in the execution of a hardware decoding processor, or executed by a combination of hardware and software modules in the decoding processor. The software modules can reside in random access memory, flash memory, read-only memory, programmable read-only memory, electrically erasable programmable memory, registers, or other mature storage media in the art. This storage medium is located in memory; the processor reads information from the memory and, in conjunction with its hardware, completes the steps of the above method.
[0106] It is understood that the embodiments described herein can be implemented in hardware, software, firmware, middleware, microcode, or a combination thereof. For hardware implementation, the processing unit can be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), general-purpose processors, controllers, microcontrollers, microprocessors, other electronic units for performing the functions described herein, or combinations thereof.
[0107] For software implementation, the techniques described herein can be achieved through modules (e.g., procedures, functions, etc.) that perform the functions described herein. The software code can be stored in memory and executed by a processor. The memory can be implemented within the processor or externally.
[0108] It should be noted that, in this document, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements includes not only those elements but also other elements not expressly listed, or elements inherent to such a process, method, article, or apparatus. Unless otherwise specified, an element defined by the phrase "comprising one..." does not exclude the presence of other identical elements in the process, method, article, or apparatus that includes that element.
[0109] The sequence numbers of the embodiments in this application are for descriptive purposes only and do not represent the superiority or inferiority of the embodiments.
[0110] Through the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of software plus necessary general-purpose hardware platforms. Of course, they can also be implemented by hardware, but in many cases the former is a better implementation method. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes several instructions to cause a terminal (which may be a mobile phone, computer, server, or network device, etc.) to execute the methods described in the various embodiments of this application.
[0111] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other forms under the guidance of this application without departing from the spirit and scope of the claims. All of these forms are within the protection scope of this application.
[0112] Industrial applicability This application provides a method for determining prediction values, an encoder, a decoder, and a computer storage medium. The method, applied to an encoder, includes: acquiring reconstructed values of neighboring pixels in the current block; filtering the reconstructed values of the neighboring pixels to obtain a reference value set for the current block; when the size of the current block is less than a preset threshold, calculating the value of a first constant based on the bit depth of the pixel luminance component in the current block; determining the difference between the first prediction input value in the prediction input value set and the first reference value in the reference value set; determining other prediction input values in the prediction input value set besides the first prediction input value based on the reference value set; calculating the prediction value of a pixel at a specific location in the current block based on the prediction input value set; filtering the prediction value of the pixel at the specific location to obtain the prediction values of all pixels in the current block. This improves the prediction accuracy and increases the encoding / decoding rate in video encoding and decoding.
Claims
1. A method for transmitting a bitstream, wherein, The method is applied to an encoder and includes: Perform a method for determining prediction values to generate a bitstream; and Transmit the bitstream; The method for determining the predicted value includes: Obtain the reconstructed values of the neighboring pixels of the current block, wherein the neighboring pixels of the current block are the pixels in the previous row and the left column of the current block; The reconstructed values of the adjacent pixels are filtered to obtain a reference value set for the current block; When the size of the current block is less than a preset threshold, the value of the first constant is calculated based on the bit depth of the pixel luminance component in the current block. The first predicted input value in the predicted input value set is determined to be the difference between the value of the first constant and the first reference value in the reference value set. Based on the reference value set, determine the other predicted input values in the predicted input value set besides the first predicted input value; Based on the predicted input value set, calculate the predicted value of the pixel at a specific position in the current block; The predicted values of the pixels at the specific locations are filtered to obtain the predicted values of all pixels in the current block.
2. The method according to claim 1, wherein, The step of filtering the reconstructed values of the adjacent pixels to obtain the reference value set of the current block includes: The reconstructed values of the adjacent pixels are divided into N groups, and the mean value of the reconstructed values of the adjacent pixels in each group is calculated. The mean value is used as the reference value in the reference value set, where N is a positive integer.
3. The method according to claim 2, wherein, Set N to a positive integer value corresponding to the pre-defined current block size.
4. The method according to claim 1, wherein, The step of calculating the value of the first constant based on the bit depth of the pixel luminance component in the current block includes: The value of the first constant is set to the value obtained by performing a binary left shift operation on the value 1, wherein the number of bits used in the binary left shift operation is equal to the value of the bit depth minus 1.
5. The method according to claim 1, wherein, The step of filtering the predicted value of the pixel at the specific location to obtain the predicted values of all pixels in the current block includes: Interpolation filtering is performed on the predicted value of the pixel at the specific location to obtain the predicted values of the pixels at other locations in the current block, excluding the specific location.
6. A method for receiving a bitstream, wherein, The method is applied to the decoder and includes: Received bitstream; and Decode the bitstream to generate video or image by performing a method for determining prediction values; The method for determining the predicted value includes: Parse the bitstream to obtain the size and encoding mode of the current block; When the encoding mode of the current block is matrix-based intra-prediction mode (MIP), the reconstructed values of the neighboring pixels of the current block are obtained, and the reconstructed values of the neighboring pixels are filtered to obtain the reference value set of the current block, wherein the neighboring pixels of the current block are the pixels in the previous row and the left column of the current block. When the size of the current block is less than a preset threshold, the value of the second constant is calculated based on the bit depth of the pixel luminance component in the current block. The first predicted input value in the predicted input value set is determined to be the difference between the value of the second constant and the first reference value in the reference value set. Based on the reference value set, determine the other predicted input values in the predicted input value set besides the first predicted input value; Based on the predicted input value set, calculate the predicted value of the pixel at a specific position in the current block; The predicted values of the pixels at the specific locations are filtered to obtain the predicted values of all pixels in the current block.
7. The method according to claim 6, wherein, The step of filtering the reconstructed values of the adjacent pixels to obtain the reference value set of the current block includes: The reconstructed values of the adjacent pixels are divided into N groups, and the mean value of the reconstructed values of the adjacent pixels in each group is calculated. The mean value is used as the reference value in the reference value set, where N is a positive integer.
8. The method according to claim 7, wherein, Set N to a positive integer value corresponding to the pre-defined current block size.
9. The method according to claim 6, wherein, The step of calculating the value of the second constant based on the bit depth value of the pixel luminance component in the current block includes: The value of the second constant is set to the value obtained by performing a binary left shift operation on the value 1, wherein the number of bits used in the binary left shift operation is equal to the value of the bit depth minus 1.
10. The method according to claim 6, wherein, The step of filtering the predicted value of the pixel at the specific location to obtain the predicted values of all pixels in the current block includes: Interpolation filtering is performed on the predicted value of the pixel at the specific location to obtain the predicted values of the pixels at other locations in the current block, excluding the specific location.
11. An encoder, wherein, The encoder includes: A processor and a storage medium storing processor-executable instructions, the storage medium performing operations via a communication bus dependent on the processor, wherein when the instructions are executed by the processor, the method for transmitting a code stream as described in any one of claims 1 to 5 is performed.
12. A decoder, wherein, The decoder includes: The processor and a storage medium storing processor-executable instructions, the storage medium performing operations via a communication bus dependent on the processor, wherein when the instructions are executed by the processor, the method for receiving a bitstream as described in any one of claims 6 to 10 is performed.
13. A computer-readable storage medium, wherein, The computer-readable storage medium stores executable instructions and a bitstream, which, when executed by one or more processors, perform the steps of the method for transmitting the bitstream according to any one of claims 1 to 5 to transmit the bitstream.