Image decoding device, image decoding method, and program
By reconfiguring motion vector indexes based on their magnitude relationship, the image decoding technology optimizes coding efficiency in GPM by minimizing redundant coding, especially when cu_mv_idx0 and cu_mv_idx1 have specific differences, enhancing overall performance.
Patent Information
- Application Number
- JP2022107166
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2022-07-01
- Publication Date
- 2025-07-03
- Estimated Expiration
- 2042-07-01
AI Technical Summary
Existing image decoding technologies in Geometric Partitioning Mode (GPM) face inefficiencies due to constraints on motion vector indexes (cu_mv_idx0 and cu_mv_idx1) that limit coding performance when they have the same value, leading to suboptimal coding efficiency.
The solution involves reconfiguring motion vector indexes based on their magnitude relationship, adapting the coding process to reduce redundant coding by adding or subtracting 1 from the larger index, thereby ensuring different values for cu_mv_idx0 and cu_mv_idx1, and optimizing the motion vector candidate list construction.
This approach enhances coding efficiency by reducing the amount of code required for motion vector representation, particularly in scenarios where cu_mv_idx0 and cu_mv_idx1 differ by specific margins, thus improving overall image decoding performance.
Smart Images

Figure 0007702228000001 
Figure 0007702228000002 
Figure 0007702228000003
Abstract
Description
Technical Field
[0001] The present invention relates to an image decoding apparatus, an image decoding method, and a program.
Background Art
[0002] Non-Patent Document 1 and Non-Patent Document 2 disclose a Geometric Partitioning Mode (GPM). GPM diagonally divides a rectangular block into two parts and performs motion compensation on each part. Specifically, the divided small regions are motion-compensated by motion vectors respectively and synthesized by weighted averaging.
Prior Art Documents
Non-Patent Documents
[0003]
Non-Patent Document 1
Non-Patent Document 2
Summary of the Invention
Problems to be Solved by the Invention
[0004] In Non-Patent Document 1 and Non-Patent Document 2, two indexes (cu_mv_idx0 and cu_mv_idx1) for one motion vector candidate list are used to specify the motion vectors of the two divided small regions.
[0005] At this time, if the same motion vector is adopted, the meaning of dividing the block is lost. Therefore, there is a constraint that cu_mv_idx0 and cu_mv_idx1 do not take the same value.
[0006] In order to improve the coding efficiency by using such constraints, in Non-Patent Document 1 and Non-Patent Document 2, when decoding cu_mv_idx1, a technique is devised to shorten the code length representing cu_mv_idx1 by treating the value selected by cu_mv_idx0 as having disappeared from the motion vector candidate list.
[0007] However, when cu_mv_idx1 is smaller than cu_mv_idx0, there is no effect, so there is room for improvement in improving the coding performance. Therefore, the present invention has been made in view of the above problems, and an object thereof is to provide an image decoding apparatus, an image decoding method, and a program capable of improving the coding efficiency in GPM.
Means for Solving the Problems
[0008] The first feature of the present invention is an image decoding apparatus, comprising: a decoding unit that decodes control information and quantization values; an inverse quantization unit that inverse quantizes the quantization values to obtain transform coefficients; an inverse transform unit that inverse transforms the transform coefficients to obtain a prediction residual; an intra prediction unit that generates a first predicted pixel based on the decoded pixel and the control information; an accumulation unit that accumulates the decoded pixels; an MV decoding unit that determines a motion vector based on a plurality of indexes included in the control information and a motion vector candidate list and uses it as motion information; a motion compensation unit that generates a second predicted pixel based on the decoded pixel, the motion information, and the control information; a synthesis unit that generates a third predicted pixel based on the second predicted pixel and the control information; and an adder that adds any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, wherein the MV decoding unit reconfigures the plurality of indexes according to the magnitude relationship of the plurality of indexes.
[0009] A second feature of the present invention is an image decoding method, which includes step A of decoding control information and quantization values, step B of inverse quantizing the quantization values to obtain transform coefficients, step C of inverse transforming the transform coefficients to obtain prediction residuals, step D of generating a first predicted pixel based on the decoded pixels and the control information, step E of accumulating the decoded pixels, step F of determining a motion vector based on a plurality of indexes and a motion vector candidate list included in the control information to obtain motion information, step G of generating a second predicted pixel based on the decoded pixels, the motion information, and the control information, step H of generating a third predicted pixel based on the second predicted pixel and the control information, and step I of adding any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel. In step F, the gist is to reconfigure the plurality of indexes according to the magnitude relationship of the plurality of indexes.
[0010] A third feature of the present invention is a program for causing a computer to function as an image decoding apparatus. The image decoding apparatus includes a decoding unit that decodes control information and quantization values, an inverse quantization unit that inverse quantizes the quantization values to obtain transform coefficients, an inverse transformation unit that inverse transforms the transform coefficients to obtain prediction residuals, an intra prediction unit that generates a first predicted pixel based on the decoded pixels and the control information, an accumulation unit that accumulates the decoded pixels, an MV decoding unit that determines a motion vector based on a plurality of indexes and a motion vector candidate list included in the control information to obtain motion information, a motion compensation unit that generates a second predicted pixel based on the decoded pixels, the motion information, and the control information, a synthesis unit that generates a third predicted pixel based on the second predicted pixel and the control information, and an adder that adds any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel. The gist of the MV decoding unit is to reconfigure the plurality of indexes according to the magnitude relationship of the plurality of indexes.
Advantages of the Invention
[0011] According to the present invention, it is possible to provide an image decoding apparatus, an image decoding method, and a program that can improve the encoding efficiency in GPM.
Brief Description of the Drawings
[0012]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Embodiments for Carrying Out the Invention
[0013] Hereinafter, embodiments of the present invention will be described with reference to the drawings. Note that the components in the following embodiments can be appropriately replaced with existing components, etc., and various variations including combinations with other existing components are possible. Therefore, the description of the following embodiments does not limit the content of the invention described in the claims.
[0014] <First Embodiment> Hereinafter, with reference to FIGS. 1 to 8, the image decoding apparatus 200 according to the present embodiment will be described. FIG. 1 is a diagram showing an example of the functional blocks of the image decoding apparatus 200 according to the present embodiment.
[0015] As shown in FIG. 1, the image decoding apparatus 200 includes a code input unit 210, a decoding unit 201, an inverse quantization unit 202, an inverse transform unit 203, an intra prediction unit 204, an MV decoding unit 205, an adder 206, an accumulation unit 207, a motion compensation unit 208, a synthesis unit 209, and an image output unit 220.
[0016] The code input unit 210 is configured to acquire coded information encoded by an image encoding apparatus.
[0017] The decoding unit 201 is configured to decode control information and quantization values from the coded information input from the code input unit 210. For example, the decoding unit 201 is configured to output control information and quantization values by performing variable length decoding on such coded information.
[0018] Here, the quantization values are sent to the inverse quantization unit 202, and the control information is sent to the intra prediction unit 204, the MV decoding unit 205, the motion compensation unit 208, and the synthesis unit 209. Note that such control information includes information necessary for controlling the intra prediction unit 204, the MV decoding unit 205, the motion compensation unit 208, the synthesis unit 209, etc., and may include header information such as a sequence parameter set, a picture parameter set, a picture header, and a slice header.
[0019] The inverse quantization unit 202 is configured to inverse quantize the quantization values sent from the decoding unit 201 to obtain decoded transform coefficients. Such transform coefficients are sent to the inverse transform unit 203.
[0020] The inverse transform unit 203 is configured to inverse transform the transform coefficients sent from the inverse quantization unit 202 to obtain decoded prediction residuals. Such prediction residuals are sent to the adder 206.
[0021] The intra prediction unit 204 is configured to generate a first predicted pixel based on the decoded pixel and the control information sent from the decoding unit 201. Here, the decoded pixel is obtained via the adder 206 and accumulated in the accumulation unit 207. Also, the first predicted pixel is a predicted pixel as an approximation of the input pixel in the small area set by the synthesis unit 207. Note that the first predicted pixel is sent to the adder 206.
[0022] The accumulation unit 207 is configured to cumulatively accumulate the decoded pixels sent from the adder 206. Such decoded pixels receive a reference from the motion compensation unit 208 via the accumulation unit 207.
[0023] The motion compensation unit 208 is configured to generate a second predicted pixel based on the decoded pixel accumulated in the accumulation unit 207 and the motion information sent from the MV decoding unit 205. Here, the second predicted pixel is a predicted pixel as an approximation of the input pixel in the small area set by the synthesis unit 207. Note that the second predicted pixel is sent to the synthesis unit 209.
[0024] The adder 206 is configured to add any one of the first to third predicted pixels generated from the decoded pixel etc. and the prediction residual sent from the inverse transform unit 203 to obtain the decoded pixel. Such decoded pixel is sent to the image output unit 220, the accumulation unit 207, and the intra prediction unit 204.
[0025] The synthesis unit 209 is configured to divide the decoding target block into a plurality of shapes based on the second predicted pixel sent from the motion compensation unit 208 and the control information decoded by the decoding unit 201, synthesize a plurality of predicted pixels corresponding to each of them, and generate a third predicted pixel for adding to the prediction residual by the adder 206. The generated third predicted pixel is sent to the adder 206.
[0026] As a method of dividing and synthesizing a block to be decoded into a plurality of shapes (small regions) in the synthesis unit 209, any method can be used. Hereinafter, as an example, the case of using the geometric partitioning mode (GPM) will be described.
[0027] Hereinafter, the reconstruction of the indexes in the motion vector candidate list by the MV decoding unit 205 will be described.
[0028] The MV decoding unit 205 is configured to determine a motion vector from the control information from the decoding unit 201 and send such a motion vector to the motion compensation unit 208 as motion information.
[0029] Here, the MV decoding unit 205 is configured to determine a motion vector based on a plurality (two in this embodiment) of indexes (cu_mv_idx0 and cu_mv_idx1 described later) included in the control information and a motion vector candidate list (see FIG. 4 etc.) and use it as motion information.
[0030] Specifically, as will be described later, the MV decoding unit 205 is configured to reconstruct the two indexes according to the magnitude relationship between the two indexes.
[0031] In the example of FIG. 2, it represents an example of a case where unit blocks are distributed in a diagonal shape. In the example of FIG. 2, a rectangular unit block (block to be decoded) is divided into small region A and small region B by a division boundary.
[0032] In each of the small regions A / B, a second predicted pixel is generated by motion compensation. At this time, in order to reduce the amount of code of the motion vector itself used for motion compensation, a method of diverting the motion vector of a neighboring block of the block to be decoded can be used as a conventional method.
[0033] According to such a method, the amount of code when expressing with the index corresponding to the motion vector of the neighboring block to be used is smaller than the amount of code when expressing the motion vector itself, so the coding efficiency can be improved.
[0034] Specifically, as shown in FIG. 3, since there are a plurality of neighboring blocks, such as those above, to the left, or to the upper left, a list of motion vectors of available neighboring blocks is listed up, and a motion vector candidate list is constructed by excluding similar motion vectors.
[0035] Then, only the index corresponding to the motion vector of the neighboring block used in the motion compensation unit 208 is decoded as control information, and the motion vector is determined based on such control information.
[0036] However, in the synthesis unit 209, since there are a plurality of small regions A / B, and motion vectors are used in each small region A / B, two indexes (cu_mv_idx0 and cu_mv_idx1) are required.
[0037] Hereinafter, in the present embodiment, the index corresponding to the motion vector of the neighboring block selected for the small region A is referred to as "cu_mv_idx0 (first index)", and the index corresponding to the motion vector of the neighboring block selected for the small region B is referred to as "cu_mv_idx1 (second index)".
[0038] Here, if the plurality of motion vectors (the motion vector of the small region A and the motion vector of the small region B) used in the synthesis unit 209 are the same, the significance of the division into the small regions A / B is lost. Therefore, there is a constraint that the two indexes (cu_mv_idx0 and cu_mv_idx1) selected for the small regions A / B must be different.
[0039] Conventionally, in order to reduce the code length representing cu_mv_idx1 among the two indexes, it was configured to exclude the motion vector selected by cu_mv_idx0 from the motion vector candidate list and then encode cu_mv_idx1.
[0040] Hereinafter, with reference to FIG. 4, an example of a method for reconstructing the motion vector candidate list in the present embodiment will be described.
[0041] Here, as shown in FIG. 4, when the first motion vector in the motion vector candidate list is selected as cu_mv_idx0, such first motion vector is excluded from the motion vector candidate list, and the second and subsequent motion vectors in the motion vector candidate list are each moved up one position.
[0042] Therefore, when the fourth motion vector before the exclusion of the first motion vector is selected as cu_mv_idx1, as control information, the index corresponding to the third motion vector can be encoded and decoded.
[0043] That is, when cu_mv_idx0 is smaller than cu_mv_idx1, cu_mv_idx1 becomes a number one smaller, so the amount of code for cu_mv_idx1 encoded with a variable-length code is reduced.
[0044] However, when cu_mv_idx0 is larger than cu_mv_idx1, even if cu_mv_idx0 is excluded from the motion vector candidate list, it has no effect on cu_mv_idx1, so there is a problem that the amount of code for cu_mv_idx1 is not reduced.
[0045] To solve such a problem, in the present embodiment, the MV decoding unit 205 may be configured to determine the motion vector corresponding to the larger of the two indexes after excluding the smaller of the two indexes from the motion vector candidate list.
[0046] Specifically, on the side of the image encoding device, the two indexes, that is, cu_mv_idx0 and cu_mv_idx1, are compared, and 1 is subtracted from the larger index to perform reconfiguration of the two indexes.
[0047] On the side of the image decoding device 200, the MV decoding unit 205 is configured to perform reconfiguration of the two indexes by comparing the two indexes, namely cu_mv_idx0 and cu_mv_idx1, and adding 1 to the larger index.
[0048] At this time, on the side of the image encoding device, when the difference between the indexes is 1 or -1, if 1 is subtracted from the larger index, the two indexes will become the same value, and on the side of the image decoding device 200, it will be impossible to know which of the two indexes should have 1 added to it.
[0049] Therefore, on the side of the image encoding device, a code representing the index to which 1 is added (i.e., the index to which the addition process is applied) is assigned, and on the side of the image decoding device 200, the MV decoding unit 205 is configured to decode the code representing the index to which 1 is added.
[0050] However, since the combination of "cu_mv_idx0 = 0" and "cu_mv_idx1 = 1" is most likely to be selected, in order to avoid an increase in the code representing the index to which the addition process is applied, the MV decoding unit 205 is not in the case of the combination of indexes where the difference between cu_mv_idx0 and cu_mv_idx1 is -1 or 1, but in the case of the combination of indexes where the difference between cu_mv_idx0 and cu_mv_idx1 is 1 or 2, it is set to be in the situation of decoding the code representing the index to which the addition process is applied.
[0051] Specifically, on the side of the image decoding device 200, when the difference obtained by subtracting cu_mv_idx1 from cu_mv_idx0 is 1 or 2, the MV decoding unit 205 decodes a 1-bit code representing the target to which the addition process is applied to determine the index to which the addition process is applied, and adds 1 to the determined index to determine the two motion vectors.
[0052] Fig. 5 shows an example of combinations that two indexes (cu_mv_idx0 and cu_mv_idx1) can take and codes transmitted as control information in each combination.
[0053] The numerical values in the table shown in Fig. 5 represent control information when cu_mv_idx0 and cu_mv_idx1 take values from 0 to 9 respectively.
[0054] Since diagonal components corresponding to the case where cu_mv_idx0 and cu_mv_idx1 have the same value cannot exist, such diagonal components are marked with x instead of a code.
[0055] In the upper triangular matrix corresponding to the case where cu_mv_idx0 is smaller than cu_mv_idx1, the value of cu_mv_idx0 itself and the value obtained by subtracting 1 from cu_mv_idx1 are encoded as control information.
[0056] Conversely, in the lower triangular matrix corresponding to the case where cu_mv_idx0 is larger than cu_mv_idx1, the value obtained by subtracting 1 from cu_mv_idx0 and the value of cu_mv_idx1 itself are encoded as control information.
[0057] However, in the case of combinations of indexes where "cu_mv_idx0 - cu_mv_idx1 = 1" or "cu_mv_idx0 - cu_mv_idx1 = 2", a code representing an index to which an addition process is applied is additionally given to the control information.
[0058] For example, in the case of a combination of indexes where "cu_mv_idx0 - cu_mv_idx1 = 1", "cu_mv_idx0 - 1", "cu_mv_idx1", and "0" are encoded as control information in the image encoding device.
[0059] In addition, in the case of an index combination where "cu_mv_idx0 - cu_mv_idx1 = 2", "cu_mv_idx0", "cu_mv_idx1 - 1", and "1" are encoded as control information in the image encoding device.
[0060] Here, on the side of the image decoding device 200, a process reverse to that in the image encoding device is performed.
[0061] That is, when cu_mv_idx0 is less than or equal to cu_mv_idx1 in the MV decoding unit 205 in the image decoding device 200, 1 is added to cu_mv_idx1, and the motion vectors indicated by the respective indexes are determined from the motion vector candidate list.
[0062] On the other hand, when cu_mv_idx0 is greater than cu_mv_idx1 in the MV decoding unit 205, first, the difference between cu_mv_idx0 and cu_mv_idx1 is obtained.
[0063] Next, when the difference between cu_mv_idx0 and cu_mv_idx1 is 1 in the MV decoding unit 205, an additional 1 bit (a code representing the index to which the addition process is applied) is decoded from the control information. If such 1 bit is 0, cu_mv_idx0 and cu_mv_idx1 are used as they are, and the motion vectors indicated by the respective indexes are determined from the motion vector candidate list.
[0064] In addition, when the difference between cu_mv_idx0 and cu_mv_idx1 is 1 and the above - mentioned 1 bit is 1, or when the difference between cu_mv_idx0 and cu_mv_idx1 is 2 or more in the MV decoding unit 205, 1 is added to cu_mv_idx0, and the motion vectors indicated by the respective indexes are determined from the motion vector candidate list.
[0065] However, even when cu_mv_idx0 is greater than cu_mv_idx1 and the difference between cu_mv_idx0 and cu_mv_idx1 is 1, if cu_mv_idx0 includes the maximum value of the index (「9」 in the example of FIG. 5), it is not necessary to decode the above-mentioned 1 bit. Instead, cu_mv_idx0 and cu_mv_idx1 are used as they are, and the motion vectors indicated by their respective indexes are determined from the motion vector candidate list.
[0066] As another example, as shown in FIG. 6, when cu_mv_idx0 and cu_mv_idx1 include the value of 「maximum value - 1 (「8」 in the example of FIG. 6)」, the MV decoding unit 205 may be configured to decode the above-mentioned 1 bit (the code indicating the index to which the addition process is applied) from the control information.
[0067] According to such a configuration, when cu_mv_idx0 and cu_mv_idx1 include the maximum value of the index (「9」 in the example of FIG. 6), on the side of the image encoding device, it is possible to obtain the effect that the maximum value of cu_mv_idx0 and cu_mv_idx1 can be reduced by one by deliberately adding 1 bit.
[0068] That is, when all of cu_mv_idx0, cu_mv_idx1, and 「maximum value - 1 (「8」 in the example of FIG. 6)」 match, the MV decoding unit 205 decodes an additional 1 bit from the control information. If such 1 bit is 1, 1 is added to cu_mv_idx0, and the motion vectors indicated by their respective indexes are determined from the motion vector candidate list.
[0069] On the other hand, when all of cu_mv_idx0, cu_mv_idx1, and 「maximum value - 1 (「8」 in the example of FIG. 6)」 match and the above-mentioned 1 bit is 0, 1 is added to cu_mv_idx1, and the motion vectors indicated by their respective indexes are determined from the motion vector candidate list.
[0070] In any of the examples of FIGS. 5 and 6, the amount of code can be adaptively reduced according to the magnitude relationship between cu_mv_idx0 and cu_mv_idx1, and the coding efficiency can be improved by avoiding additional bits for combinations of indexes with a high selection rate.
[0071] Hereinafter, with reference to FIGS. 7 and 8, an example of the operation of the image decoding apparatus 200 according to the present embodiment will be described.
[0072] Specifically, the decoding method of the motion vector and the control information to be decoded by the decoding unit 201 and the MV decoding unit 205 of the image decoding apparatus 200 according to the present embodiment will be described.
[0073] The coded information input to the decoding unit 201 can include a sequence parameter set (SPS) that aggregates control information in units of sequences. Further, such coded information can include a picture parameter set (PPS) or a picture header (PH) that aggregates control information in units of pictures. Such coded information may include a slice header (SH) that aggregates control information in units of slices.
[0074] First, an example of the operation of the image decoding apparatus 200 according to the present embodiment shown in FIG. 7 will be described.
[0075] As shown in FIG. 7, in step S101, the decoding unit 201 determines whether any of sps_div_enabled_flag, pps_div_enabled_flag, and sh_div_enabled_flag is 1.
[0076] If none of them is 1, this operation proceeds to step S102 and ends without applying the technology according to the present embodiment.
[0077] If any of them is 1, in step S101, the decoding unit 201 determines whether the block to be decoded is in the split mode.
[0078] If the block to be decoded is not in the split mode, this operation proceeds to step S102 and ends without applying the technology according to this embodiment.
[0079] If the block to be decoded is in the split mode, in step S103, the decoding unit 201 determines whether it is MMVD (Merge mode with Motion Vector Difference) that adds a discrete differential motion vector to the motion vector derived from the small area split from the block to be decoded with respect to the intra prediction or the motion vector candidate list disclosed in Non-Patent Document 1.
[0080] If Yes, this operation proceeds to step S102 and ends without applying the technology according to this embodiment.
[0081] The reason is that when any one of the above-mentioned small areas is intra prediction, the comparison of the above-mentioned indexes becomes unnecessary.
[0082] Also, when at least any one of the above-mentioned small areas is MMVD, even if the index points to the same motion vector candidate, a discrete differential motion vector is added to the motion vector by MMVD and the motion vectors of each small area do not match, so the comparison of the indexes becomes unnecessary.
[0083] If No, in step S104, the MV decoding unit 205 decodes cu_mv_idx0, which is a signal specifying the index of the motion vector candidate list, from the control information.
[0084] In step S105, the MV decoding unit 205 determines whether the maximum number (MaxNumGpmMergeCand) of the motion vector candidate list is greater than 2.
[0085] If it is 2 or less, this operation proceeds to step S102 and ends without applying the technology according to this embodiment.
[0086] If it is greater than 2, in step S106, the MV decoding unit 205 decodes cu_mv_idx1, which is a signal for specifying an index of the motion vector candidate list, from the control information.
[0087] In step S107, the MV decoding unit 205 determines whether cu_mv_idx0 is less than or equal to cu_mv_idx1.
[0088] If Yes, this operation proceeds to step S114. If No, this operation proceeds to step S108.
[0089] In step S114, the MV decoding unit 205 adds 1 to cu_mv_idx1, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0090] In step S108, the MV decoding unit 205 determines whether the difference between cu_mv_idx0 and cu_mv_idx1 is 1.
[0091] If Yes, this operation proceeds to step S110. If No, this operation proceeds to step S109.
[0092] In step S109, the MV decoding unit 205 adds 1 to cu_mv_idx0, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0093] In step S110, the MV decoding unit 205 determines whether cu_mv_idx0 matches MAX_IDX indicating the maximum value of the index (the number of elements in the motion vector candidate list - 1).
[0094] If Yes, this operation proceeds to step S113. If No, this operation proceeds to step S111.
[0095] In step S113, the MV decoder 205 determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0096] In step S111, the MV decoder 205 decodes cu_add_idx, which is a signal (a code representing an index to which an addition process is applied) that specifies whether to add 1.
[0097] In step S112, the MV decoder 205 determines whether cu_add_idx is 1.
[0098] In the case of Yes (when it is 1), this operation proceeds to step S113, and in the case of No (when it is 0), this operation proceeds to step S109.
[0099] Note that cu_add_idx takes a value of 0 or 1 and is added to cu_mv_idx0, and the conditional separation in step S112 may be omitted. The conditional expression in this case is as follows. if (cu_mv_idx0 <= cu_mv_idx1){ cu_mv_idx1 += 1 } else { if (cu_mv_idx0 - cu_mv_idx1 != 1){ cu_mv_idx0 += 1 } else { if (cu_mv_idx0 != MAX_IDX){ Decode cu_add_idx cu_mv_idx0 += cu_add_idx } }
[0100] Second, an example of the operation of the image decoder 200 according to the present embodiment shown in FIG. 8 will be described by focusing on the differences from the operation of the image decoder 200 according to the present embodiment shown in FIG. 7 described above.
[0101] Steps S201 to S206 shown in FIG. 8 are the same as steps S101 to S106 shown in FIG. 7.
[0102] As shown in FIG. 8, in step S207, the MV decoding unit 205 determines whether cu_mv_idx0 and cu_mv_idx1 match "MAX_IDX - 1".
[0103] If Yes, this operation proceeds to step S214; if No, this operation proceeds to step S208.
[0104] In step S208, the MV decoding unit 205 determines whether cu_mv_idx0 is greater than cu_mv_idx1.
[0105] If Yes, this operation proceeds to step S210; if No, this operation proceeds to step S209.
[0106] In step S209, the MV decoding unit 205 adds 1 to cu_mv_idx1, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0107] In step S210, the MV decoding unit 205 determines whether the difference between cu_mv_idx0 and cu_mv_idx1 is 1.
[0108] If Yes, this operation proceeds to step S212; if No, this operation proceeds to step S211.
[0109] In step S211, the MV decoding unit 205 adds 1 to cu_mv_idx0, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0110] In step S212, the MV decoding unit 205 decodes cu_add_idx, which is a signal (a code representing an index to which addition processing is applied) that specifies whether to add 1.
[0111] In step S213, the MV decoding unit 205 adds cu_add_idx (0 or 1) to cu_mv_idx0, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0112] In step S214, the MV decoding unit 205 decodes cu_add_idx.
[0113] In step S215, the MV decoding unit 205 determines whether cu_add_idx is 1.
[0114] In the case of Yes (when it is 1), this operation proceeds to step S217, and in the case of No (when it is 0), it proceeds to step S216.
[0115] In step S216, the MV decoding unit 205 adds 1 to cu_mv_idx1, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0116] In step S217, the MV decoding unit 205 adds 1 to cu_mv_idx0, determines the motion vectors indicated by cu_mv_idx0 and cu_mv_idx1 from the motion vector candidate list, and ends this operation.
[0117] Note that cu_add_idx takes a value of 0 or 1 and is added to cu_mv_idx0, and the conditional separation in step S112 may be omitted. The conditional expression in this case is as follows. if (cu_mv_idx0 == MAX_IDX-1 && cu_mv_idx1 == MAX_IDX-1){ Decode cu_add_idx if (cu_add_idx) { cu_mv_idx0 += 1 } else { cu_mv_idx1 += 1 } } else { if (cu_mv_idx0 > cu1_mv_idx1){ if (cu_mv_idx0 - cu_mv_idx1 == 1){ Decode cu_add_idx cu_mv_idx0 += cu_add_idx } else { cu_mv_idx0 += 1 } } else { cu_mv_idx1 += 1 } }
[0118] According to the image decoding apparatus 200 according to the present embodiment, by adaptively dividing a block and decoding a motion vector according to the divided shape, the coding efficiency can be improved.
[0119] The above-described image decoding apparatus 200 may be realized by a program that causes a computer to execute each function (each process).
Industrial Applicability
[0120] Note that according to the present embodiment, for example, since an overall improvement in service quality can be realized in moving image communication, it is possible to contribute to Goal 9 of the Sustainable Development Goals (SDGs) led by the United Nations, "Build resilient infrastructure, promote sustainable industrialization and foster innovation."
Description of Signs
[0121] 200... Image decoding apparatus 201... Decoding unit 202... Inverse quantization unit 203... Inverse transformation unit 204... Intra prediction unit 205... MV decoding unit 206... Adder 207... Accumulation unit 208... Motion compensation unit 209... Synthesis unit 210... Sign input unit 220... Image output unit
Claims
1. An image decoding apparatus, comprising: a decoding unit that decodes control information and quantization values; an inverse quantization unit that inverse quantizes the quantization values to obtain transform coefficients; an inverse transform unit that inverse transforms the transform coefficients to obtain prediction residuals; an intra prediction unit that generates a first predicted pixel based on decoded pixels and the control information; an accumulation unit that accumulates the decoded pixels; an MV decoding unit that determines a motion vector based on a plurality of indexes included in the control information and a motion vector candidate list, and uses the motion vector as motion information; a motion compensation unit that generates a second predicted pixel based on the decoded pixels, the motion information, and the control information; a synthesis unit that generates a third predicted pixel based on the second predicted pixel and the control information; an adder that adds any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, wherein the MV decoding unit reconfigures the plurality of indexes according to the magnitude relationship of the plurality of indexes.
2. The plurality of indexes are two indexes, wherein the MV decoding unit excludes the smaller index of the two indexes from the motion vector candidate list, and then determines the motion vector corresponding to the larger index of the two indexes. The image decoding apparatus according to claim 1.
3. The plurality of indexes are two indexes, wherein the MV decoding unit adds 1 to the larger index of the two indexes. The image decoding apparatus according to claim 1.
4. The MV decoding unit decodes a code representing an index to which an addition process is applied from the control information. The image decoding apparatus according to claim 1.
5. The plurality of indexes include a first index and a second index, wherein when the first index is larger than the second index and the difference between the first index and the second index is 1, the MV decoding unit decodes a code representing an index to which an addition process is applied from the control information. The image decoding apparatus according to claim 4.
6. The plurality of indexes include a first index and a second index, The image decoding apparatus according to claim 1, wherein the MV decoding unit adds 1 to the second index when the first index is less than or equal to the second index.
7. The image decoding apparatus according to claim 5, wherein the MV decoding unit uses the first index and the second index as they are when a code representing an index to which the addition process is applied is 0.
8. The image decoding apparatus according to claim 5, wherein the MV decoding unit adds 1 to the first index when a code representing an index to which the addition process is applied is 1.
9. The image decoding apparatus according to claim 2, wherein the MV decoding unit adds 1 to the larger one of the two indexes when the difference between the two indexes is 2 or more.
10. The plurality of indexes includes a first index and a second index, The image decoding apparatus according to claim 1, wherein the MV decoding unit uses the first index and the second index as they are when the first index matches the maximum value.
11. The image decoding apparatus according to claim 4, wherein the MV decoding unit decodes a code representing an index to which the addition process is applied from the control information when the first index and the second index include a value of maximum value - 1.
12. An image decoding method, comprising: Step A of decoding control information and quantization values; Step B of inverse quantizing the quantization values to obtain transform coefficients; Step C of inverse transforming the transform coefficients to obtain prediction residuals; Step D of generating a first predicted pixel based on the decoded pixels and the control information; Step E of accumulating the decoded pixels; Step F of determining a motion vector based on a plurality of indexes included in the control information and a motion vector candidate list and using it as motion information; Step G of generating a second predicted pixel based on the decoded pixels, the motion information, and the control information; Step H of generating a third predicted pixel based on the second predicted pixel and the control information; Step I of adding any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, In the step F, the plurality of indexes are reconfigured according to the magnitude relationship of the plurality of indexes.
13. A program that causes a computer to function as an image decoding device, wherein the image decoding device includes: a decoding unit that decodes control information and quantization values; an inverse quantization unit that inverse quantizes the quantization values to obtain transform coefficients; an inverse transform unit that inverse transforms the transform coefficients to obtain prediction residuals; an intra prediction unit that generates a first predicted pixel based on decoded pixels and the control information; an accumulation unit that accumulates the decoded pixels; an MV decoding unit that determines a motion vector based on a plurality of indexes included in the control information and a motion vector candidate list, and uses the motion vector as motion information; a motion compensation unit that generates a second predicted pixel based on the decoded pixels, the motion information, and the control information; a synthesis unit that generates a third predicted pixel based on the second predicted pixel and the control information; an adder that adds any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, and the MV decoding unit is characterized by reconfiguring the plurality of indexes according to the magnitude relationship of the plurality of indexes.
Citation Information
Patent Citations
ITTH.266/
Image decoding device, image decoding method, and program
JP2022000949A
Video signal encoding / decoding method and device
JP2022506269A
Method, apparatus and program for video encoding and decoding
JP2022509086A