Prediction value determination method, encoder, decoder and computer storage medium
By acquiring and filtering the reconstructed values of adjacent pixels and calculating the difference between the predicted input value sets, the problem of low accuracy caused by the excessively large range of predicted values in MIP mode is solved, thereby improving the prediction accuracy and coding efficiency of video encoding and decoding.
Patent Information
- Application Number
- CN202511855024.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2019-09-24
- Publication Date
- 2026-01-20
AI Technical Summary
In existing video codecs, the MIP mode has an excessively large range of predicted input values when the predicted value is determined, resulting in low prediction accuracy and affecting codec efficiency.
By obtaining the reconstructed values of the adjacent pixels of 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. The prediction value of the current block is calculated based on the prediction input value set, and filtering is performed to improve accuracy.
Using the same number of bits to represent the predicted input value set and the MIP matrix, the data in the dynamic range is represented more accurately, improving the accuracy of the predicted value calculation process in MIP mode, and thus improving coding efficiency.
Smart Images

Figure CN121367784A_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The embodiment of the present application relates to the matrix-based intra prediction (MIP) technology in the field of video coding, in particular to a prediction value determination method, an encoder, a decoder and a computer storage medium. BACKGROUND
[0002] At present, in video coding, three values are involved in determining the prediction value by using the MIP, which need to be obtained when the prediction value is calculated, and the three values are the MIP matrix, the weighting parameter and the bit right shift parameter, in the existing prediction value determination method, in order to ensure the complete representation of the numerical range, the value of the bit right shift parameter cannot be too large, so that the value range of the prediction input value is too large when the prediction value is determined, thereby affecting the prediction accuracy of the prediction value, and further affecting the coding efficiency, so it can be seen that the prediction accuracy of the existing prediction method in video coding is low. SUMMARY
[0003] The embodiment of the present application provides a prediction value determination method, an encoder, a decoder and a computer storage medium, which can improve the prediction accuracy in video coding and improve the coding rate.
[0004] The technical scheme of the embodiment of the present application can be implemented as follows: In a first aspect, the embodiment of the present application provides a prediction value determination method, which is applied to an encoder, and the method comprises the following steps: obtaining the reconstructed values of the neighboring pixels of a current block; performing filtering processing on the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; when the size of the current block is smaller than a preset threshold, calculating the value of a first constant according to the value of the bit depth of the luminance component of the pixel in the current block; determining the first prediction input value in a prediction input value set as the difference value between the value of the first constant and the first reference value in the reference value set; determining the other prediction input values in the prediction input value set except the first prediction input value according to the reference value set; calculating the prediction value of the pixel at a specific position in the current block according to the prediction input value set; and performing filtering processing on the prediction value of the pixel at the specific position to obtain the prediction value of all the pixels in the current block.
[0005] In a second aspect, the embodiment of the present application provides a prediction value determination method, which is applied to a decoder, and the method comprises the following steps: The code stream is parsed to obtain a size and an encoding mode of a current block; when the encoding mode of the current block is a matrix-based intra prediction mode (MIP), reconstructed values of neighboring pixels of the current block are obtained, the reconstructed values of the neighboring pixels are filtered to obtain a reference value set of the current block; when the size of the current block is smaller than a preset threshold, a value of a second constant is calculated according to a value of a bit depth of a luminance component of a pixel in the current block; a first prediction input value in a preset input value set is determined as a difference between the value of the second constant and a first reference value in the reference value set; other prediction input values in the prediction input value set except the first prediction input value are determined according to the reference value set; a prediction value of a pixel at a specific position in the current block is calculated according to the prediction input value set; and the prediction value of the pixel at the specific position is filtered by interpolation to obtain prediction values of pixels at other positions in the current block except the specific position.
[0006] In a third aspect, an embodiment of the present application provides an encoder, which comprises: A first obtaining module is configured to obtain reconstructed values of neighboring pixels of a current block; a first processing module is configured to filter the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; a first calculating module is configured to calculate a value of a first constant according to a value of a bit depth of a luminance component of a pixel in the current block when a size of the current block is smaller than a preset threshold; a first determining module is configured to determine a first prediction input value in a preset input value set as a difference between the value of the first constant and a first reference value in the reference value set; a second calculating module is configured to determine other prediction input values in the prediction input value set except the first prediction input value according to the reference value set; a third calculating module is configured to calculate a prediction value of a pixel at a specific position in the current block according to the prediction input value set; and a second processing module is configured to filter the prediction value of the pixel at the specific position to obtain prediction values of all pixels in the current block.
[0007] In a fourth aspect, an embodiment of the present application provides a decoder, which comprises: The second obtaining module is configured to parse a code stream to obtain a size and an encoding mode of a current block; the third processing module is configured to, when the encoding mode of the current block is a matrix-based intra prediction mode (MIP), obtain reconstructed values of neighboring pixels of the current block, filter the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; the fourth calculating module is configured to, when the size of the current block is smaller than a preset threshold, calculate a value of a second constant according to a value of a bit depth of a luminance component of a pixel in the current block; the second determining module is configured to determine a first prediction input value in a preset input value set as a difference between the value of the second constant and a first reference value in the reference value set; the fifth calculating module is configured to determine other prediction input values in the prediction input value set except the first prediction input value according to the reference value set; the sixth calculating module is configured to calculate a prediction value of a pixel at a specific position in the current block according to the prediction input value set; and the fourth processing module is configured to perform interpolation filtering on the prediction value of the pixel at the specific position to obtain prediction values of pixels at other positions in the current block except the specific position.
[0008] In a fifth aspect, an embodiment of the present application provides an encoder, which comprises a processor and a storage medium having instructions executable by the processor, and the storage medium performs operations in dependence on the processor through a communication bus, and when the instructions are executed by the processor, the method for determining a prediction value in any one or more of the above embodiments is performed.
[0009] In a sixth aspect, an embodiment of the present application provides a decoder, which comprises a processor and a storage medium having instructions executable by the processor, and the storage medium performs operations in dependence on the processor through a communication bus, and when the instructions are executed by the processor, the method for determining a prediction value in any one or more of the above embodiments is performed.
[0010] In a seventh aspect, an embodiment of the present application provides a computer-readable storage medium having executable instructions, and when the executable instructions are executed by one or more processors, the processors perform the method for determining a prediction value in any 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 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 deblocking filter and SAO filter module 205, and a decoded image buffer module 206. 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 deblocking filter and SAO filter module 108, and the header information encoding and CABAC encoding module 109 in the video encoding system 100, and the code stream of the video image is output. The code stream is input into the video decoding system 200, and is processed by the header information decoding and CABAC decoding module 201, the inverse transform and inverse quantization module 202, the intra prediction module 203, and the motion compensation module 204 in the video decoding system 200, and finally the original video image is recovered.
[0018] The method for determining the prediction value when the MIP mode is used for encoding and decoding provided by the embodiments of the present application is mainly applied to the intra prediction module 103 in the video encoding and the intra prediction module 203 in the video decoding, and simultaneously acts on the encoding end and the decoding end.
[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, the MIP technology is only applied to the intra luminance prediction. The input of the MIP prediction is also the upper row and the left column data of the current block (equivalent to the to-be-encoded image block) as in the traditional mode, and the output is the prediction value of the current block. The specific prediction process includes three steps: averaging, matrix-vector multiplication, and interpolation. That is, the luminance prediction value of the current block can be obtained by performing the three steps on the reconstructed luminance values of the adjacent pixel points in the input upper row and left column.
[0021] Figure 3 A flowchart of the process of encoding pixels using the MIP mode is shown in FIG. 4. Figure 3 As shown, the specific implementation is as follows: First step: perform averaging operation on the adjacent reference points on the upper side of the current luminance block to obtain a vector redT, which has N values; perform averaging operation on the adjacent reference points on the left side of the current luminance block to obtain a vector redL, which also has N values. When the size of the luminance block is the first type of block, N=2; when the size of the luminance block is the second type or the third type of block, N=4. The vector redT and the vector redL form a new vector pTemp and are used for subsequent operations. Second step: obtain the matrix mWeight, the weighting parameter fO and the bit right shift parameter sW, which are calculated by the following formula: Figure 3The partial prediction value of the current block marked by the 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) Wherein, predMip[x, y] is the prediction value of the pixel position (x, y); pTemp[i] is the i-th reference value in the reference value set of the current block when the MIP mode is used for prediction, p[x] is the i-th prediction input value when the MIP mode is used for prediction; inSize is determined according to the mode number MipSizeId of MIP, when the value of MipSizeId is equal to 0, the value of inSize is equal to 4, when the value of MipSizeId is equal to 1, the value of inSize is equal to 8, when the value of MipSizeId is equal to 2, the value of inSize is equal to 7, the value of MipSizeId is determined according to the size of the current block, when the size of the current block is 4x4, the value of MipSizeId is equal to 0, when the size of the current block is 4x8, 8x4 or 8x8, the value of MipSizeId is equal to 1, when the size of the current block is greater than 8x8, the value of MipSizeId is equal to 2, BitDepth is the bit depth (bitdepth, i.e. the number of binary numbers used to represent the sample value sample of the luminance component) of the luminance component, mWeight represents the MIP matrix, predC, incH and incW are used to determine the parameters of the matrix element corresponding to the pixel position (x, y), ">>" is the bit right shift operator, oW represents the shift offset used in the bit right shift operation, sW represents the bit right shift number, fO represents the weighting parameter, sW and fO At least can be determined according to the size of the current block or the value of MipSizeId, for example, the values of sW and fO are determined using a mapping table related to the value of MipSizeId, at least the values of sW and fO under different values of MipSizeId are recorded in the mapping table.
[0022] Third step: through linear interpolation, the remaining prediction values in the current block are obtained, i.e. the partial prediction values of the current block marked by multiple small dots in Figure 3 are obtained.
[0023] It can be seen that in the MIP technique, three values need to be obtained in the process of determining the predicted value, which are mWeight, fO and sW, wherein the value of mWeight is related to the prediction mode and the spatial position of the pixel, and fO sW is only related to the prediction mode. p[i] is calculated by formulas (3), (4) and (5), the value of mWeight and fO sW are saved in the form of unsigned 7-bit binary numbers. sW is an offset corresponding to the prediction mode, and its value is one of 5, 6 and 7 according to the prediction mode (as shown in Table 1). The pixel value of the pixel can be obtained by looking up Table 1 and calculating the matrix vector product. The final overall memory requirement is 4.5395 kilobytes.
[0024] Table 1
[0025] When the MIP mode is used for prediction, the index of the used mode is first determined for the current block, and according to the mode index, a fixed sW value for the current block is obtained by looking up the table, and then mWeight- fO is right-shifted by sW bits to obtain the original floating-point matrix for the calculation of the predicted value, Figure 4 The flowchart of the process of using the MIP mode for encoding is shown in Figure 4 . First, the index number of the MIP mode is obtained, then according to the index number of the MIP mode, the mWeight and fO trained by the machine are obtained from the mapping table, according to the index number of the MIP mode, sW is obtained from the mapping table, and finally prediction is performed to obtain the predicted value.
[0026] That is, in the existing MIP technique in VVC, the original floating-point number mWeightf[x][y] of all values of mWeight is represented in the form of a fixed-point value with an offset from its minimum value (often negative, represented by fO ). (6) Wherein, mWeight[x][y] is saved in an unsigned 7-bit binary number, resulting in a certain loss of representation accuracy, here the greater sW is, the higher the accuracy is, but to ensure the complete representation of the numerical range, the value of sW cannot be too large, since the same sW value is used in the entire matrix without distinction, the parameters with a smaller value range also have to be further reduced in representation accuracy to adapt to the value range of all parameters in the entire matrix, the change range of the parameters in the original matrix is also related to the acquisition method of p[i] data. The calculation method of p[i] data in the existing method causes the expansion of the parameter change range, reduces the accuracy of the data in the weight matrix, increases the prediction difference of the MIP mode, and reduces the coding efficiency.
[0027] To improve the prediction accuracy of the MIP mode and improve the coding efficiency, an embodiment of the present application provides a method for determining a prediction value, Figure 5 An optional flowchart of a method for determining a prediction value provided by an embodiment of the present application is shown in Figure 5 The method is applied in an encoder, and the method can include: S501: obtaining reconstructed values of neighboring pixels of a current block; Specifically, in the process of encoding, in order to determine the prediction value of the current block, the encoder first needs to obtain the reconstructed values of the neighboring pixels of the current block, where the neighboring pixels include the reconstructed values of the pixel positions in the previous row of the current block and the reconstructed values of the pixel positions in the left column of the current block.
[0028] S502: performing filtering processing on the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; After obtaining the reconstructed values of the neighboring pixels, for example, the reconstructed values of the N pixels in the previous row are redT, and the reconstructed values of the N pixels in the left column are redL, redT and redL form a new vector pTemp as the reference value set of the current block. In order to obtain the reference value set of the current block through filtering processing, in an optional embodiment, S502 can include: The reconstructed values of the neighboring pixels are divided into N groups, the mean value of the reconstructed values of the neighboring pixels in each group is calculated, and the mean value is taken as a reference value in the reference value set, N is a positive integer.
[0029] Wherein, N is set as a positive integer value corresponding to the size of the current block. That is, the filtering processing of the reconstructed values of the neighboring pixels in S502 can be: first, redT and redL are divided into N groups, then the mean value of each group is calculated, and N mean values are obtained as the reference values in the reference set.
[0030] For example, when the size of the current block is 4x4, the value of inSize is equal to 4, when the size of the current block is 4x8, 8x4 or 8x8, the value of inSize is equal to 8, and when the size of the current block is greater than 8x8, the value of inSize is equal to 7.
[0031] S503: When the size of the current block is less than the preset threshold, the value of the first constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block. In actual application, when the size of the current block can be represented by MipSizeId, MipSizeId is less than 2, i.e. MipSizeId is equal to 0 or 1, the value of the first constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block.
[0032] In order to calculate the value of the first constant, in an optional embodiment, S503 can include: The value of the first constant is set to the value of the binary bit left shift operation on the value 1, wherein the left shift number used in the binary bit left shift operation is equal to the value of the bit depth minus 1.
[0033] Specifically, the value of the first constant is the value of the left shift operation on 1, and the left shift number is the bit depth minus 1.
[0034] S504: The first prediction input value in the prediction input value set is determined as the difference between the value of the first constant and the first reference value in the reference value set. Wherein, the prediction input value set is used to calculate the prediction value of the current block according to MIP, and after the first constant is calculated by S504, the first prediction input value can be determined as the difference between the value of the first constant and the first reference value in the reference value set, and the first prediction input value p[0] can be calculated by the following formula: (7) S505: According to the reference value set, the prediction input values in the prediction input value set except the first prediction input value are determined. Wherein, the other prediction input values p[i] include the prediction input values except the first prediction input value when the size of the current block is less than the preset threshold, and the other prediction input values p[i] can also include the prediction input values when the size of the current block is greater than or equal to the preset threshold, which can be calculated by the following formula: (8) S506: According to the prediction input value set, the prediction value of the pixel at a specific position in the current block is calculated. Specifically, after determining all the prediction input values, a prediction input value set can be obtained, and according to the prediction input value set, prediction can be performed to obtain the prediction value of the pixel at the specific position in the current block, for example, Figure 3 the prediction value of the pixel position marked by the cross line.
[0035] To determine the prediction value of the pixel at the specific position in the current block, in an optional embodiment, S506 can include: 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 mapping tables stored in advance; and calculating the prediction value of the pixel at the specific position in the current block according to 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.
[0036] That is, one or more mapping tables are stored in advance in the encoder, and through the one or more mapping tables, the MIP matrix of the current block, denoted as mWeight, the bit right shift parameter sW of the current block and the weighting parameter of the current block fO .
[0037] wherein sW and fO at least can be determined according to the size of the current block or the value of MipSizeId, for example, the values of sW and fO are determined using a mapping table related to the value of MipSizeId, and the mapping table records at least the values of sW and fO under different values of MipSizeId.
[0038] It should be noted that the values in the above mapping table are constants, that is, the values in the mapping table are not updated in the calculation process of the MIP prediction value, and the constant values in the mapping table can be obtained by using an offline training method according to the calculation method of the above formula (7); alternatively, the constant values in the mapping table can be derived from mapping tables corresponding to other different calculation methods of p[0] according to the calculation method of the above formula (7). In particular, in the embodiments of the present 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] = { 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 = 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] = { 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}, {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}}, 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, 41}, {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 parameters from the mapping table, the parameters and the input value set can be input into formula (1) and formula (2) to calculate the prediction value of the specific pixel position in the current block.
[0040] In addition, in order 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: 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 are determined from one or more pre-stored mapping tables.
[0041] That is, 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 in combination with the size of the current block, for example, when the size of the current block is 4x4, the value of MipSizeId is equal to 0, when the size of the current block is 4x8, 8x4 or 8x8, the value of MipSizeId is equal to 1, and when the size of the current block is greater than 8x8, the value of MipSizeId is equal to 2. The MIP matrix of the current block, the bit right shift parameter of the current block corresponding to the size of the current block can be found from the mapping table according to the value of MipSizeId.
[0042] S507: filtering the prediction value of the specific position to obtain the prediction value of all pixels in the current block.
[0043] After the prediction value of the specific position is determined by S506, the prediction value of the specific position can be filtered to obtain the prediction values of all pixels in the current block.
[0044] To obtain the prediction values of all pixels in the current block, S507 can include, in an alternative embodiment: The prediction value of the specific position is interpolated to obtain the prediction values of pixels in the current block except the specific position.
[0045] Here, the prediction value of the specific position is interpolated to obtain the prediction values of pixels in the current block except the specific position, thereby obtaining the prediction values of all pixels in the current block.
[0046] That is, the prediction method of the encoder side using the MIP technology provided by the embodiment of the application is different from the formulas (1)-(5) in the traditional method in that the calculation of p[0] in formula (7) is opposite to the calculation symbol in formula (3). At this time, all p[x] in formulas (3) and (7) achieve a more unified effect in form, that is, all are subtracted by pTemp[0]. The mean compensation in formula (1) directly uses pTemp[0], thereby making the coefficient of pTemp[0] in the predMip[x][y] calculation formula uniform as: (9) And the original coefficient is: When y=0: (10) Other cases: (11) Considering the essence of the MIP filter, the probability of the coefficient taking a value in the range of-1~1 is higher. Therefore, after the expression is unified as , the value of tends to be positive, and the overall change range tends to be smaller.
[0047] On this basis, the MIP matrix mWeight f trained will change the first column parameter of mWeight f to the corresponding value of the first column parameter of mWeight f with the opposite sign. At this time, the parameter value range of the entire MIP matrix mWeight f is smaller than that of the original MIP matrix mWeight f , which is more conducive to improving the representation precision and thus improving the prediction precision.
[0048] In the original MIP matrix mWeight fIn the first column of the data, the change of the data value range after taking the inverse of the data is shown in Table 1. For the 28 original floating-point matrices with MipSizeId of 0 and 1, the first column of the matrix is taken as the inverse, and the data range of the inverse matrix is either unchanged or reduced, as shown in Table 2. Among the 11 modes corresponding to the matrix, the value range of the matrix will be reduced, and the value range of the other 17 matrices will not change. Among the modes with reduced value range, 4 can improve the expression accuracy of the currently known training weights.
[0049] Table 2
[0050] It can be seen that Table 2 shows the matrix interval reduction and sW improvement of the matrix with MipSizeId=0 and 1 after taking the inverse.
[0051] Tables 3-5 below are specific examples, each table is divided into left and right two parts, the left of Table 3, Table 5 is mWeight f , the right is mWeight f’ , the left of Table 4 is mWeight f’’ , the right is mWeight, the first column of Table 3, Table 5 is the value of mWeight f [x][0], the first column on the right is the value of mWeight f [x][0] after taking the inverse.
[0052] Tables 3-4 give the changes of the application of the present technology under the specific mode of the same MIP, mWeight f [x][0] after taking the inverse, the data range is reduced, and the original sW value is changed from 5 to 6, the value of mWeight[x][y] calculated by formula (6) is not greater than 127, which is within the effective representation range of 7 bits; Table 5 gives an example of a specific mode of mWeight f [x][0] after taking the inverse, the data range is unchanged.
[0053] Table 3
[0054] Among them, Table 3 shows the original floating-point matrix with MipSizeId=0 and modeId=3, the first column of which is taken as the inverse (left is original, right is inverse).
[0055] Table 4
[0056] Among them, Table 4 shows the matrix with MipSizeId=0 and modeId=3, which can take the right shift number sW=6 without exceeding the 7-bit representation range by applying the proposed technology.
[0057] Table 5
[0058] In Table 5, the first column of the original floating-point matrix with MipSizeId = 0 and modeId = 16 is negated (the left is the original, and the right is the negated).
[0059] As can be seen from the above examples of Table 3 to Table 5, the method for determining a prediction value provided in the embodiments of the present application can reduce the numerical range of the floating-point matrix obtained by MIP training, improve the accuracy of the fixed-point expression, and thus improve the prediction accuracy and ultimately improve the coding efficiency.
[0060] The embodiments of the present application provide a method for determining a prediction value, which is applied to an encoder. In the embodiments of the present application, the 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 used to calculate the prediction value of the current block. This can effectively reduce the dynamic value range of the prediction input value set in the MIP mode prediction. Therefore, compared with the prior art, in the case of 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 more accurately represented, the accuracy in the prediction value calculation process in the MIP mode is improved, and thus the coding efficiency is improved.
[0061] In order to improve the prediction accuracy of the MIP mode and improve the decoding efficiency, the embodiments of the present application provide a method for determining a prediction value, Figure 6 For another optional method for determining a prediction value provided in the embodiments of the present application, refer to Figure 6 As shown in the flowchart, the method is applied to a decoder. The method can include the following steps. S601: parsing a code stream to obtain the size and coding mode of a current block; Specifically, in the decoder, after receiving the code stream, first, the code stream is parsed, so that the size and coding mode of the current block can be obtained. The coding mode can be one of the traditional intra prediction modes, or one of the MIP modes. Here, the method is mainly for one of the MIP modes.
[0062] S602: when the coding mode of the current block is MIP, obtaining the reconstructed values of the neighboring pixels of the current block, filtering the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; For example, when the size of the current block is 4x4, 4x8, 8x4 or 8x8, when the size of the current block is 4x4, one of the coding modes M=35, when the size of the current block is 4x8, 8x4 or 8x8, one of the coding modes M=19, and when the size of the current block is other sizes, one of the coding modes M=11.
[0063] That is, when the coding mode of the current block is the MIP mode, the decoder first acquires the reconstructed values of the neighboring pixels of the current block, where the neighboring pixels include the reconstructed values of the pixel positions in the previous row of the current block and the reconstructed values of the pixel positions in the left column of the current block.
[0064] After the reconstructed values of the neighboring pixels are acquired, for example, the reconstructed values of the pixel positions in the previous row are redT, and there are N values, and the reconstructed values of the pixel positions in the left column are redL, and there are N values, and redT and redL form a new vector pTemp as the reference value set of the current block.
[0065] In order to obtain the reference value set of the current block through filtering processing, in an optional embodiment, in S602, the filtering processing is performed on the reconstructed values of the neighboring pixels to obtain the reference value set of the current block, including: The reconstructed values of the neighboring pixels are divided into N groups, the mean values of the reconstructed values of the neighboring pixels in each group are calculated, and the mean values are taken as the reference values in the reference value set, where N is a positive integer.
[0066] Herein, N is set as a positive integer value corresponding to the size of the current block.
[0067] That is, the filtering processing on the reconstructed values of the neighboring pixels in S602 can be specifically: redT and redL are first divided into N groups, then the mean values of each group are calculated, and the N mean values are taken as the reference values in the reference set.
[0068] For example, when the size of the current block is 4x4, the value of inSize is equal to 4, when the size of the current block is 4x8, 8x4 or 8x8, the value of inSize is equal to 8, and when the size of the current block is greater than 8x8, the value of inSize is equal to 7.
[0069] S603: When the size of the current block is less than a preset threshold, the value of the second constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block. In actual application, when the size of the current block can be represented by MipSizeId, and MipSizeId is less than 2, that is, MipSizeId is equal to 0 or 1, the value of the second constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block.
[0070] To calculate the value of the second constant, in an optional embodiment, S603, the value of the second constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block, including: The value of the second constant is set to the value of the logarithmic value 1 after a binary bit left shift operation, wherein the left shift number used in the binary bit left shift operation is equal to the value of the bit depth minus 1.
[0071] Specifically, the value of the second constant is the value of 1 after a left shift, and the left shift number is the bit depth minus 1.
[0072] S604: Determine the first prediction input value in the prediction input value set as the difference between the value of the second constant and the first reference value in the reference value set; Wherein, the prediction input value set is used to calculate the prediction value of the current block by MIP; After calculating the second constant by S604, the difference between the value of the second constant and the first reference value in the reference value set can be used to determine the first prediction input value, which can be calculated by the above formula (7).
[0073] S605: According to the reference value set, determine the other prediction input values in the prediction input value set except the first prediction input value; Wherein, the other prediction input values p[i] include the prediction input values except the first prediction input value when the size of the current block is less than the preset threshold, and the other prediction input values p[i] can also include the prediction input values when the size of the current block is greater than or equal to the preset threshold, which can be calculated by the above formula (8).
[0074] S606: According to the prediction input value set, calculate the prediction value of the pixel at a specific position in the current block; Specifically, after determining all the prediction input values, the prediction input value set can be obtained, and according to the prediction input value set, the prediction value of the pixel at a specific position in the current block can be obtained, for example, Figure 3 The prediction value of the pixel position marked with cross lines in the figure.
[0075] In order to determine the prediction value of the pixel at a specific position in the current block, in an optional embodiment, S606 can include: 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 mapping tables stored in advance; According to 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, calculate the prediction value of the pixel at a specific position in the current block.
[0076] That is, one or more mapping tables are pre-stored in the encoder, and through the one or more mapping tables, the MIP matrix of the current block, denoted as mWeight, the bit right shift parameter sW of the current block, and the weighting parameter of the current block 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 prediction value of the specific pixel position in the current block.
[0078] In addition, in order 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 the pre-stored one or more mapping tables, comprising: 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 are determined from the pre-stored one or more mapping tables.
[0079] That is, 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 in combination with the size of the current block, for example, when the size of the current block is 4x4, the value of MipSizeId is equal to 0, when the size of the current block is 4x8, 8x4 or 8x8, the value of MipSizeId is equal to 1, and when the size of the current block is greater than 8x8, the value of MipSizeId is equal to 2. According to the value of MipSizeId, the MIP matrix of the current block, the bit right shift parameter of the current block corresponding to the size of the current block can be found from the mapping table.
[0080] S607: filtering the prediction value of the specific position pixel to obtain the prediction value of all pixels in the current block.
[0081] After determining the prediction value of the specific position by S606, the prediction value of the specific position can be further filtered to obtain the prediction value of all pixels in the current block.
[0082] In order to obtain the prediction value of all pixels in the current block, in an optional embodiment, S607 can comprise: interpolation filtering the prediction value of the specific position to obtain the prediction value of the pixels at other positions except the specific position in the current block.
[0083] Here, interpolation filtering the prediction value of the specific position pixel can obtain the prediction value of the pixels at other positions except the specific position, so as to obtain the prediction value of all pixels in the current block.
[0084] The embodiment of the present application provides a method for determining a predicted value, which is applied to a decoder, in the embodiment of the present application, a second constant is calculated, a difference between a value of the second constant and a first reference value in a reference value set is determined as a first predicted input value in a predicted input value set, and the predicted input value set is used to calculate a predicted value of a current block, so that a dynamic value range of the predicted input value set in MIP mode prediction can be effectively reduced, therefore, compared with the prior art, in the case that the predicted input value set and the MIP matrix are represented by the same number of bits, data in the dynamic range can be more accurately represented, the accuracy in the predicted value calculation process in the MIP mode is improved, and then the coding efficiency is improved.
[0085] Embodiment two Based on the same inventive concept, the embodiment of the present application provides an encoder, Figure 7 An optional encoder provided by the embodiment of the present application has a structure diagram as shown in the figure, Figure 7 The encoder can include: A first acquisition module 71 is configured to acquire reconstructed values of neighboring pixels of a current block, a first processing module 72 is configured to perform filtering processing on the reconstructed values of the neighboring pixels to obtain a reference value set of the current block, a first calculation module 73 is configured to calculate a value of a first constant according to a value of a bit depth of a luminance component of a pixel in the current block when a size of the current block is smaller than a preset threshold, a first determination module 74 is configured to determine a first predicted input value in a predicted input value set as a difference between the value of the first constant and a first reference value in the reference value set, a second calculation module 75 is configured to determine other predicted input values in the predicted input value set except the first predicted input value according to the reference value set, a third calculation module 76 is configured to calculate a predicted value of a pixel at a specific position in the current block according to the predicted input value set, and a second processing module 77 is configured to perform filtering processing on the predicted value of the pixel at the specific position to obtain predicted values of all pixels in the current block.
[0086] In an optional embodiment, the first processing module 72 is specifically configured to: divide the reconstructed values of the neighboring pixels into N groups, calculate mean values of the reconstructed values of the neighboring pixels in each group, and take the mean values as the reference values in the reference value set, and N is a positive integer.
[0087] In the embodiment, N is set as a positive integer value corresponding to a preset size of the current block.
[0088] In an optional embodiment, the first calculating module 73, in calculating the value of the first constant according to the value of the bit depth of the luminance component of the pixels in the current block, can comprise: setting the value of the first constant as the value after a binary bit left shift operation on the value 1, wherein the number of left shifts 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 calculating module 76 is specifically configured 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 the prediction value of the specific pixel position in the current block according to 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.
[0090] In an optional embodiment, the third calculating module 76, in 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, can comprise: 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 according to the size of the current block.
[0091] In an optional embodiment, the second processing module 77 is specifically configured to: perform interpolation filtering on the prediction value of the specific position pixel to obtain the prediction values of the pixels in the current block other than the specific position.
[0092] The embodiments of the present application provide a decoder, Figure 8 An optional structure schematic diagram of a decoder provided by the embodiments of the present application is shown in Figure 8 The decoder can comprise: 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 alternative embodiment, the sixth calculating module 86 is configured 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 the one or more mapping tables stored in advance, and the 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 can include: 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 the one or more mapping tables stored in advance according to the size of the current block.
[0098] In an alternative embodiment, the fourth processing module 87 is specifically configured to perform interpolation filtering on the prediction value of the pixel at the specific position to obtain the prediction value of the pixel at the position other than the specific position in the current block.
[0099] Figure 9 Another alternative structure of an encoder according to an embodiment of the present application is shown in FIG. 9. The encoder 900 can further include a processor 91 and a storage medium 92 having instructions executable by the processor 91, and the storage medium 92 performs operations in dependence on the processor 91. When the instructions are executed by the processor 91, the method for determining a prediction value according to one or more embodiments described above is performed. Figure 9
[0100] It should be noted that in actual applications, the components in the encoder are coupled together through the communication bus 93. It can be understood that the communication bus 93 is used to realize the connection and communication between the components. The communication bus 93 includes not only a data bus, but also a power bus, a control bus and a state signal bus. However, for the purpose of clear illustration, all kinds of buses are marked as the communication bus 93 in the drawings. Figure 9
[0101] Figure 10 Another alternative structure of a decoder according to an embodiment of the present application is shown in FIG. 10. The decoder 1000 can further include a processor 101 and a storage medium 102 having instructions executable by the processor 101, and the storage medium 102 performs operations in dependence on the processor 101. When the instructions are executed by the processor 101, the method for determining a prediction value according to one or more embodiments described above is performed. Figure 10
[0102] It should be noted that in actual applications, the components in the decoder are coupled together through the communication bus 103. It can be understood that the communication bus 103 is used to realize the connection and communication between the components. The communication bus 103 includes not only a data bus, but also a power bus, a control bus and a state signal bus. However, for the purpose of clear illustration, all kinds of buses are marked as the communication bus 103 in the drawings. Figure 10
[0103] The embodiment of the present application provides a computer storage medium, which stores executable instructions, when the executable instructions are executed by one or more processors, the processor executes the prediction value determination method in the one or more embodiments.
[0104] It can be understood that the memory in the embodiment of the present application can be a volatile memory or a non-volatile memory, or can include both volatile and non-volatile memories. Wherein, the non-volatile memory can be a read-only memory (Read-Only Memory, ROM), a programmable read-only memory (Programmable ROM, PROM), an erasable programmable read-only memory (Erasable PROM, EPROM), an electrically erasable programmable read-only memory (Electrically EPROM, EEPROM) or a flash memory. The volatile memory can be a random access memory (Random Access Memory, RAM) used as an external cache. By way of example, but not limitation, many forms of RAM are available, for example, static random access memory (Static RAM, SRAM), dynamic random access memory (Dynamic RAM, DRAM), synchronous dynamic random access memory (Synchronous DRAM, SDRAM), double data rate synchronous dynamic random access memory (Double Data Rate SDRAM, DDR SDRAM), enhanced synchronous dynamic random access memory (Enhanced SDRAM, ESDRAM), synchronous link dynamic random access memory (Synchlink DRAM, SLDRAM) and direct memory bus random access memory (Direct Rambus RAM, DRRAM). The memory of the system and method described herein is intended to include, but not limited to, these and any other suitable types of memory.
[0105] The processor can be an integrated circuit chip, having a signal processing capability. In implementation process, each step of the above method can be completed by integrated logic circuits or instructions in the form of software in the processor. 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, discrete hardware components. Each method, step and logic block in the embodiments disclosed in the present application can be implemented or executed. The general-purpose processor can be a microprocessor or the processor can also be any conventional processor. The steps of the method disclosed in conjunction with the embodiments of the present application can be directly embodied as a hardware code processor to execute, or a combination of hardware and software modules in the code processor to execute. The software module can be located in a random access memory, a flash memory, a read-only memory, a programmable read-only memory or an electrically erasable programmable memory, a register, or other mature storage medium in the art. The storage medium is located in the storage, and the processor reads the information in the storage and combines the hardware to complete the steps of the above method.
[0106] It can be 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 within 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, micro-controllers, microprocessors, other electronic units designed to perform the functions described herein, or a combination thereof.
[0107] For software implementation, the techniques described herein can be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. The software codes can be stored in the memory and executed by the processor. The memory can be implemented within the processor or external to the processor.
[0108] It should be noted that, in this document, the terms "comprises", "comprising", or any other variation thereof are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but can include other elements not expressly listed or inherent to such process, method, article, or apparatus. An element proceeded by "comprises a", "comprising", or "comprises" does not, without more constraints, preclude the existence of additional identical elements in the process, method, article, or apparatus that comprises the element.
[0109] The above-mentioned sequence numbers of the embodiments of the present application are only for description, and do not represent the advantages and disadvantages of the embodiments.
[0110] From the above description of the embodiments, those skilled in the art can clearly understand that the above-mentioned embodiment method can be realized by means of software and a necessary general hardware platform, of course, it can also be realized by hardware, but in many cases the former is a better embodiment. Based on such understanding, the technical solutions of the present application can be embodied in the form of a software product, which is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes a plurality of instructions for causing a terminal (which can be a mobile phone, computer, server, or network device) to execute the methods described in the various embodiments of the present application.
[0111] The embodiments of the present application are described above in combination with the drawings, but the present application is not limited to the above-mentioned specific embodiments, the above-mentioned specific embodiments are only illustrative, not restrictive, and those skilled in the art can make many forms without departing from the purpose of the present application and the scope protected by the claims under the inspiration of the present application, which are all within the protection of the present application.
[0112] Industrial applicability The embodiment of the present application provides a prediction value determination method, an encoder, a decoder and a computer storage medium. The method is applied to the encoder and includes the following steps: obtaining a reconstructed value of a neighboring pixel of a current block, performing filtering processing on the reconstructed value of the neighboring pixel to obtain a reference value set of the current block, when the size of the current block is smaller than a preset threshold, calculating a value of a first constant according to the value of the bit depth of the luminance component of the pixel in the current block, determining a first prediction input value in a prediction input value set as the difference between the value of the first constant and a first reference value in the reference value set, determining other prediction input values in the prediction input value set except the first prediction input value according to the reference value set, calculating a prediction value of a pixel at a specific position in the current block according to the prediction input value set, and performing filtering processing on the prediction value of the pixel at the specific position to obtain prediction values of all pixels in the current block. In this way, the prediction accuracy in video coding and decoding is improved, and the coding and decoding rate is improved.
Claims
1. A method of transmitting a code stream, wherein, The method is applied to an encoder, comprising: performing a prediction value determination method to generate a code stream; and transmitting the code stream; wherein the prediction value determination method comprises: obtaining reconstructed values of neighboring pixels of a current block; performing filtering processing on the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; when a size of the current block is smaller than a preset threshold, calculating a value of a first constant according to a value of a bit depth of a luminance component of a pixel in the current block; determining a first prediction input value in a prediction input value set as a difference value obtained by subtracting a first reference value in the reference value set from the value of the first constant; determining other prediction input values in the prediction input value set except the first prediction input value according to the reference value set; calculating a prediction value of a pixel at a specific position in the current block according to the prediction input value set; and performing filtering processing on the prediction value of the pixel at the specific position to obtain prediction values of all pixels in the current block.
2. The method of claim 1, wherein, The filtering processing on the reconstructed values of the neighboring pixels to obtain the reference value set of the current block comprises: dividing the reconstructed values of the neighboring pixels into N groups, calculating a mean value of the reconstructed values of the neighboring pixels in each group, and taking the mean value as a reference value in the reference value set, N being a positive integer.
3. The method of claim 2, wherein, N is set as a positive integer value corresponding to the size of the current block.
4. The method of claim 1, wherein, The calculating of the value of the first constant according to the value of the bit depth of the luminance component of the pixel in the current block comprises: setting the value of the first constant as a value obtained by performing a binary bit left shift operation on a logarithm value 1, wherein a left shift number used in the binary bit left shift operation is equal to the value of the bit depth minus 1.
5. The method of claim 1, wherein, The filtering processing on the prediction value of the pixel at the specific position to obtain the prediction values of all pixels in the current block comprises: performing interpolation filtering on the prediction value of the pixel at the specific position to obtain prediction values of pixels at other positions except the specific position in the current block.
6. A method of receiving a code stream, wherein, The method is applied to a decoder, comprising: receiving a code stream; and performing a prediction value determination method to decode the code stream to generate a video or an image; wherein the prediction value determination method comprises: parsing the code stream to obtain a size and a coding mode of a current block; when the coding mode of the current block is a matrix-based intra prediction mode (MIP), obtaining reconstructed values of neighboring pixels of the current block, performing filtering processing on the reconstructed values of the neighboring pixels to obtain a reference value set of the current block; when the size of the current block is smaller than a preset threshold, calculating a value of a second constant according to a value of a bit depth of a luminance component of a pixel in the current block; determining a first prediction input value in a prediction input value set as a difference value obtained by subtracting a first reference value in the reference value set from the value of the second constant; determining other prediction input values in the prediction input value set except the first prediction input value according to the reference value set; calculating a prediction value of a pixel at a specific position in the current block according to the prediction input value set; and performing filtering processing on the prediction value of the pixel at the specific position to obtain prediction values of all pixels in the current block.
7. The method of claim 6, wherein, The filtering processing on the reconstructed values of the adjacent pixels obtains a reference value set of the current block, and the filtering processing on the predicted value of the pixel at the specific position obtains predicted values of all pixels in the current block. 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, and the mean value is taken as a reference value in the reference value set, and N is a positive integer.
8. The method of claim 7, wherein, N is set as a positive integer value corresponding to the current block size.
9. The method of claim 6, wherein, The value of the second constant is calculated according to the value of the bit depth of the luminance component of the pixel in the current block, and the value of the second constant is set as the value after a binary bit left shift operation on a logarithmic value 1, wherein the number of left shifts used in the binary bit left shift operation is equal to the value of the bit depth minus 1. The filtering processing on the predicted value of the pixel at the specific position obtains predicted values of all pixels in the current block.
10. The method of claim 6, wherein, The predicted value of the pixel at the specific position is subjected to interpolation filtering to obtain predicted values of pixels at positions other than the specific position in the current block. The encoder comprises:
11. An encoder, wherein, A processor and a storage medium having instructions executable by the processor, the storage medium being dependent on the processor to perform operations, and when the instructions are executed by the processor, the method for transmitting the code stream in any one of claims 1 to 5 is performed. The decoder comprises:
12. A decoder, wherein, A processor and a storage medium having instructions executable by the processor, the storage medium being dependent on the processor to perform operations, and when the instructions are executed by the processor, the method for receiving the code stream in any one of claims 6 to 10 is performed. The computer readable storage medium stores executable instructions and code streams, and when the executable instructions are executed by one or more processors, the processor performs the steps in the method for transmitting the code stream in any one of claims 1 to 5 to transmit the code stream.
13. A computer readable storage medium, wherein,