Image decoding device, image decoding method, and program

The image decoding device improves encoding efficiency in GPM by selecting motion vector candidates through template matching and control information, addressing the inefficiencies in existing technologies.

JP2025161961APending Publication Date: 2025-10-24KDDI CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025141093
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-08-27
Publication Date
2025-10-24

AI Technical Summary

Technical Problem

Existing image decoding technologies in geometric partitioning mode (GPM) do not effectively consider the positional relationship or shape of divided small regions when selecting motion vector candidates, leading to suboptimal encoding performance.

Method used

An image decoding device and method that expands and orders motion vector candidates based on template matching between the block to be decoded and neighboring regions, using control information to improve the selection process.

Benefits of technology

Enhances encoding efficiency by optimizing the selection of motion vectors, reducing the amount of coding required for motion vector information.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025161961000001_ABST
    Figure 2025161961000001_ABST
Patent Text Reader

Abstract

To improve a coding efficiency in a GPM.SOLUTION: In an image decoding device 200 according to the present invention, a selection part 205 executes at least one of an expansion of a motion vector candidates and a determination of an arrangement order of the motion vector candidates on the basis of a cost obtained by a template matching between a decoding target block or a sub-region of the decoding target block and a neighboring region.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to an image decoding device, an image decoding method, and a program. [Background technology]

[0002] Non-Patent Documents 1 and 2 disclose a geometric partitioning mode (GPM). In GPM, a rectangular block is divided diagonally into two parts, and each part is motion compensated. Specifically, the divided small areas are motion compensated using a motion vector and then combined using a weighted average. [Prior art documents] [Non-patent literature]

[0003] [Non-Patent Document 1] ITU-T H.266 / VVC [Non-patent document 2] CE4:Summary report on Inter prediction with geometric partitioning, JVET-Q0024 Summary of the Invention [Problem to be solved by the invention]

[0004] In Non-Patent Document 1 and Non-Patent Document 2, motion vector candidates are selected from neighboring blocks without considering the positional relationship or shape of the divided small regions, so there is room for improvement in encoding performance. Therefore, the present invention has been made in consideration of the above-mentioned problems, and an object of the present invention is to provide an image decoding device, an image decoding method, and a program that can improve encoding efficiency in GPM. [Means for solving the problem]

[0005] 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 first predicted image, the second predicted pixel, and the control information; and an adder that adds one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, wherein the selection unit at least one of expanding the motion vector candidates and determining an order of the motion vector candidates based on a cost obtained by template matching between a block to be decoded or a small region of the block to be decoded and a neighboring region.

[0006] a step of determining a motion vector based on the control information and motion vector candidates to obtain motion information; a step of generating a second predicted pixel based on the decoded pixels, the motion information, and the control information; a step of generating a third predicted pixel based on the first predicted image, the second predicted pixel, and the control information; and a step of obtaining a decoded pixel by adding one of the first to third predicted pixels and the prediction residual; wherein, in the step F, at least one of expanding the motion vector candidates or determining an order of the motion vector candidates is performed based on a cost obtained by template matching between a block to be decoded or a small region of the block to be decoded and a neighboring region.

[0007] A third aspect of the present invention is a program for causing a computer to function as an image decoding device, the image decoding device including a decoding unit that decodes control information and quantization values, an inverse quantization unit that inversely quantizes the quantization values ​​to obtain transform coefficients, an inverse transform unit that inversely 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, a storage unit that stores the decoded pixels, a selection unit that determines a motion vector based on the control information and motion vector candidates and sets the motion vector as motion information, and a selection unit that selects the decoded pixels, the motion information, and a previous the motion compensation unit generating a second predicted pixel based on the control information; a synthesis unit generating a third predicted pixel based on the first predicted image, the second predicted pixel, and the control information; and an adder adding one of the first to third predicted pixels to the prediction residual to obtain a decoded pixel, wherein the selection unit at least expands the motion vector candidates or determines the order of the motion vector candidates based on a cost obtained by template matching between the block to be decoded or a small region of the block to be decoded and a neighboring region. [Effects of the Invention]

[0008] According to the present invention, it is possible to provide an image decoding device, an image decoding method, and a program that can improve the coding efficiency in GPM. [Brief explanation of the drawings]

[0009] [Figure 1] FIG. 1 is a diagram showing an example of functional blocks of an image decoding device 200 according to an embodiment. [Figure 2] FIG. 2 is a diagram showing an example of a case where a rectangular unit block is divided into two small regions A and B by a dividing boundary. [Figure 3] FIG. 3 is a diagram showing an example of neighboring blocks of a current block to be decoded. [Figure 4] FIG. 4 is a diagram showing an example of a case where neighboring blocks above a block to be decoded are divided into small regions. [Figure 5]FIG. 5 is a flowchart showing an example of the operation of the image decoding device 200 according to an embodiment. [Figure 6] FIG. 6 is a flowchart showing an example of the operation of the image decoding device 200 according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0010] 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.

[0011] First Embodiment An image decoding device 200 according to this embodiment will be described below with reference to Figures 1 to 6. Figure 1 is a diagram showing an example of functional blocks of the image decoding device 200 according to this embodiment.

[0012] As shown in FIG. 1, the image decoding device 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, a selection unit 205, an adder 206, a storage unit 207, a motion compensation unit 208, a synthesis unit 209, and an image output unit 220.

[0013] The code input unit 210 is configured to obtain code information coded by an image coding device.

[0014] The decoding unit 201 is configured to decode the control information and the quantized value from the code information input from the code input unit 210. For example, the decoding unit 201 is configured to output the control information and the quantized value by performing variable length decoding on the code information.

[0015] Here, the quantized value is sent to the inverse quantization unit 202, and the control information is sent to the intra prediction unit 204, the selection unit 205, the motion compensation unit 208, and the synthesis unit 209. Note that this control information includes information necessary for controlling the intra prediction unit 204, the selection unit 205, the motion compensation unit 208, the synthesis unit 209, etc., and may also include header information such as a sequence parameter set, a picture parameter set, a picture header, or a slice header.

[0016] The inverse quantization unit 202 is configured to inverse quantize the quantized values ​​sent from the decoding unit 201 to generate decoded transform coefficients. The transform coefficients are sent to the inverse transform unit 203.

[0017] The inverse transform unit 203 is configured to inverse transform the transform coefficients sent from the inverse quantization unit 202 to generate decoded prediction residuals. The prediction residuals are sent to an adder 206.

[0018] 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 stored in the storage unit 207. The first predicted pixel is a predicted pixel that is an approximation of an input pixel in a small region set by the synthesis unit 207. The first predicted pixel is sent to the adder 206 or the synthesis unit 209.

[0019] The storage unit 207 is configured to cumulatively store the decoded pixels sent from the adder 206. The motion compensation unit 208 references these decoded pixels via the storage unit 207.

[0020] The motion compensation unit 208 is configured to generate second predicted pixels based on the decoded pixels stored in the storage unit 207 and the motion information sent from the selection unit 205. Here, the second predicted pixels are predicted pixels as approximations of input pixels in the small regions set by the synthesis unit 207. The second predicted pixels are sent to the adder 206 or the synthesis unit 209.

[0021] The adder 206 is configured to obtain a decoded pixel by adding any one of the first to third predicted pixels generated from the decoded pixels, etc., to the prediction residual sent from the inverse transform unit 203. The decoded pixel is sent to the image output unit 220, the accumulation unit 207, and the intra prediction unit 204.

[0022] The synthesis unit 209 is configured to divide the block to be decoded into a plurality of shapes, synthesize a plurality of prediction pixels corresponding to the respective shapes, and generate a third prediction pixel to be added to the prediction residual in the adder 206, based on the first prediction pixel sent from the intra prediction unit, the second prediction pixel sent from the motion compensation unit 208, and control information (e.g., shape information indicating the division shape of the block to be decoded) sent from the selection unit 205. The generated third prediction pixel is sent to the adder 206.

[0023] Any method can be used for dividing and combining the block to be decoded into a plurality of shapes (small regions) in the combining unit 209, but the following describes the case where the geometric partitioning mode (GPM) is used as an example.

[0024] An example of a method for selecting a plurality of motion vector candidates by the selection unit 205, which is a characteristic component of the image decoding device 200 according to this embodiment, will be described below.

[0025] The selection unit 205 is configured to determine a motion vector based on the control information and the motion vector candidates, and set the determined motion vector as motion information.

[0026] Specifically, the selection unit 205 is configured to select motion vector candidates from motion vectors of blocks neighboring the current block based on the control information. As a result, it is possible to determine a motion vector using a small amount of data, cu_mv_idx.

[0027] The example in Fig. 2 shows a case where unit blocks are distributed in a diagonal shape. In the example in Fig. 2, a rectangular unit block (a block to be decoded) is divided into two small regions A and B by a division boundary.

[0028] In each small area A / B, a second predicted pixel is generated by motion compensation. In this case, to reduce the amount of coding for the motion vector itself used for motion compensation, a conventional method can be used in which the motion vector of a block adjacent to the block to be decoded is used.

[0029] According to this method, the amount of code required to represent the neighboring blocks that use the motion vector to be used is smaller than the amount of code required to represent the motion vector itself, thereby improving coding efficiency.

[0030] Specifically, as shown in Figure 3, there are multiple neighboring blocks, such as above, to the left, and above left, so a motion vector candidate list is constructed by listing the motion vectors of available neighboring blocks and eliminating similar motion vectors.

[0031] Then, only the index corresponding to the motion vector of the neighboring block used by the motion compensation unit 208 is decoded as control information (cu_mv_idx), and the motion vector is determined based on this control information.

[0032] However, since the motion vectors of multiple neighboring blocks are not selected with equal probability, there is a problem that the coding efficiency cannot be improved.

[0033] For example, small area A shown in FIG. 2 often has the same pixel distribution characteristics spread out to the left, so the neighboring blocks of the motion vectors used by small area B are more likely to be on the upper side than on the left side.

[0034] To solve this problem, the selection unit 205 may be configured to limit the above-mentioned motion vector candidates according to the partition shape of the block to be decoded.

[0035] FIG. 3 shows five neighboring blocks (upper left, left, lower left, upper, and upper right) of the block to be decoded.

[0036] In the example of FIG. 3, since small region B directly borders the neighboring block above, the selection unit 205 may be configured to add the motion vector of the neighboring block above to the motion vector candidates.

[0037] Furthermore, although small region B does not directly contact the neighboring block to the upper right, the selection unit 205 may be configured to assume that the same characteristics as small region B continue to exist, and add the motion vector of the neighboring block to the motion vector candidates.

[0038] The selection unit 205 may be configured not to add motion vectors of the other neighboring blocks, such as the upper left, left, and lower left blocks, to the motion vector candidates, assuming that the pixel distribution characteristics are different.

[0039] Since the motion vector candidates for small area B are selected into two, the motion vector of the neighboring block above and the motion vector of the neighboring block to the upper right, the selection unit 205 is configured to determine the motion vector to be used by the motion compensation unit 208 from the selected motion vector candidates based on the control information.

[0040] If no limitation is placed on the motion vector candidates, the motion vectors of all neighboring blocks become motion vector candidates, resulting in a large amount of coding required for the control information used to determine the motion vector to be used. However, by limiting the number to a small number of candidates that are likely to be selected, the amount of coding required for the control information can be reduced.

[0041] On the other hand, since small region A has a different adjacent region (neighboring block or small region) from small region B, the selection unit 205 can construct a motion vector candidate that is different from that of small region B, that is, can construct a different motion vector candidate for each small region.

[0042] Since sub-region A directly borders the neighboring block above and the neighboring block to the left, the culler 205 may be configured to add the motion vectors of both neighboring blocks to the motion vector candidates.

[0043] Furthermore, although small area A does not directly contact the neighboring blocks at the upper left and lower left, the selection unit 205 may be configured to assume that the neighboring blocks continue to have characteristics equivalent to those of small area A, and add the motion vectors of these neighboring blocks to the motion vector candidates.

[0044] As in the example above, there may be overlapping motion vectors of neighboring blocks among the motion vector candidates for each small area (small area A: left, top, top left, bottom left / small area B: top, top right), or the motion vector candidates for each small area may be constructed exclusively by adding the motion vectors of neighboring blocks that overlap among the motion vector candidates for each small area to the motion vector candidate with the fewer candidates (small area A: left, top left, bottom left / small area B: top, top right).

[0045] Alternatively, for the sake of simplicity, the selection unit 205 may be configured to select motion vector candidates only when the small region contacts only one of the upper neighboring block or the left neighboring block.

[0046] The selection unit 205 does not limit the motion vector candidates for small areas that border both the upper and left neighboring blocks (small area A: left, upper, upper left, lower left, upper right / small area B: upper, upper right), thereby eliminating additional processing.

[0047] Conversely, to improve accuracy, the selection unit 205 may be configured to generate a new motion vector and add it to the motion vector candidates when the number of selected motion vector candidates is less than a predetermined number.

[0048] For example, in the small area B shown in Figure 3, the motion vector candidates are limited to two, the motion vectors of the neighboring blocks above and to the right, so in order to compensate for the reduced number of motion vector candidates, new motion vectors can be derived from the motion vectors of the neighboring blocks above and to the right, thereby expanding the motion vector candidates.

[0049] A new motion vector can be derived by taking a weighted average of a plurality of motion vector candidates.

[0050] The weights can be the inverse of the cost obtained by template matching of the neighboring regions, or fixed weights can be assigned (for example, small region B: top, top right, (top + top right) / 2, (top + 3 * top right) / 4, (3 * top + top right) / 4, etc.).

[0051] In addition, in the case of a small region that is not adjacent to either the left neighboring block or the upper neighboring block, the selection unit 205 may not limit the motion vector candidates, or may be configured to limit specific motion vector candidates depending on the division shape.

[0052] For example, the selection unit 205 may limit the motion vector candidates to the top N in descending order of the shortest distance between the coordinates of the neighboring blocks included in the motion vector candidates and the division line.

[0053] In addition, although GPM does not allow bidirectional prediction in small regions, the selection unit 205 may be configured to determine two motion vectors from the selected motion vector candidates using control information, even when bidirectional prediction is possible in small regions.

[0054] Furthermore, when both the block to be decoded and the neighboring block are divided into small regions, the selection unit 205 may be configured to add the motion vector of the small region of the neighboring block that has a longer length of contact with the small region of the block to be decoded to the motion vector candidates.

[0055] FIG. 4 shows an example of a case where neighboring blocks above the current block are divided into small regions.

[0056] 4, the length of the side where small region A meets small region Y on the right side of the neighboring block above is shorter than the length of the side where small region A meets small region X on the left side of the neighboring block above. In this case, the selection unit 205 may be configured to add the motion vector of small region X to the motion vector candidates.

[0057] According to this configuration, by selecting motion vectors that are likely to be selected as motion vector candidates, it is expected that the coding efficiency can be improved.

[0058] Furthermore, the selection unit 205 may be configured to change the order (how) the motion vector candidates are arranged depending on the division shape.

[0059] For example, in small area A in Figure 3, if there are motion vector candidates for four neighboring blocks: above, above-left, left, and below-left, the probability (selection probability) of selecting the motion vector for the left neighboring block is higher than the motion vector for the upper neighboring block, so it is desirable to arrange the motion vector candidates in the order of motion vector for the left neighboring block → motion vector for the upper neighboring block.

[0060] That is, by arranging the motion vector candidates in order of the highest selection probability, the average code length of the control information can be shortened.

[0061] Specifically, the selection unit 205 may be configured to prioritize the motion vectors of neighboring blocks that directly contact the block to be decoded over the motion vectors of neighboring blocks that indirectly contact the block to be decoded when sorting the motion vector candidates.

[0062] The selection unit 205 may also be configured to prioritize the order of motion vector candidates, in which small regions obtained by dividing the current block to be decoded have longer sides that contact neighboring blocks (or small regions).

[0063] Alternatively, the selection unit 205 can arrange the motion vector candidates in ascending order of costs obtained by template matching of nearby regions (neighboring blocks or small regions).

[0064] The coded information input to the decoding unit 201 may include a sequence parameter set (SPS) that summarizes control information for each sequence. The coded information may also include a picture parameter set (PPS) or a picture header (PH) that summarizes control information for each picture. The coded information may also include a slice header (SH) that summarizes control information for each slice.

[0065] An example of a method for selecting motion vector candidates in units of sequences will be described below with reference to FIGS.

[0066] As shown in FIG. 5, in step S101, the decoding unit 201 determines whether sps_div_enabled_flag is 1 in the SPS.

[0067] Here, sps_div_enabled_flag is a syntax that controls whether or not split mode is enabled. When sps_div_enabled_flag is 1, it indicates that split mode is enabled, and when sps_div_enabled_flag is 0, it indicates that split mode is disabled.

[0068] If Yes (if 1), the operation proceeds to step S102, and if No (if 0), the operation ends without applying the technology according to this embodiment.

[0069] In step S102, the decoding unit 201 decodes sps_div_selecting_flag and determines whether sps_div_selecting_flag is 1 or not.

[0070] Here, sps_div_selecting_flag is a syntax that controls whether or not to select motion vector candidates. When sps_div_selecting_flag is 1, it indicates that selection of motion vector candidates is enabled, and when sps_div_selecting_flag is 0, it indicates that selection of motion vector candidates is disabled.

[0071] If Yes (if 1), the operation proceeds to step S103, and if No (if 0), the operation ends without applying the technology according to this embodiment.

[0072] In step S103, the decoding unit 201 decodes sps_div_selecting_mode.

[0073] Here, sps_div_selecting_mode is a syntax that controls the method of selecting motion vector candidates.

[0074] By using sps_div_selecting_mode, the setting of the motion vector candidate selection method according to the image characteristics can be changed on a sequence-by-sequence basis, which is expected to maximize coding efficiency.

[0075] For example, for a sequence consisting of images with complex motion, it is possible to set motion vector candidates for each small region to be allowed to overlap, and for a sequence consisting of images with monotonous motion, it is possible to set motion vector candidates for each small region exclusively, thereby maximizing coding efficiency.

[0076] When the motion vector candidate selection method is set on a picture-by-picture basis, the decoding unit 201 decodes pps_div_enabled_flag, pps_div_selecting_flag, and pps_div_selecting_mode in the picture parameter set or picture header in the same manner as in the operation of FIG.

[0077] By using pps_div_selecting_mode, the setting of the motion vector candidate selection method according to the image characteristics can be changed on a picture-by-picture basis, which is expected to maximize coding efficiency.

[0078] For example, for image pictures with complex motion, it is possible to allow overlapping of motion vector candidates for each small region, and for pictures with monotonous motion, it is possible to set exclusive motion vector candidates for each small region, thereby maximizing coding efficiency.

[0079] Furthermore, when the motion vector candidate selection method is set on a slice-by-slice basis, the decoding unit 201 decodes sh_div_enabled_flag, sh_div_selecting_flag, and sh_div_selecting_mode in the slice header in the same manner as in the operation of FIG.

[0080] By using sh_div_selecting_mode, the setting of the motion vector candidate selection method according to the image characteristics can be changed on a slice-by-slice basis, which is expected to maximize coding efficiency.

[0081] For example, for slice areas containing partial images with complex motion, it is possible to allow overlapping of motion vector candidates for each small area, and for slice areas containing partial images with monotonous motion, it is possible to set exclusive motion vector candidates for each small area, thereby maximizing coding efficiency.

[0082] By setting the motion vector candidate selection method only in the upper layer, it is possible to suppress an increase in the amount of coding, and by setting the motion vector candidate selection method in the lower layer as well and then prioritizing the setting in the lower layer, adaptive control is possible.

[0083] Alternatively, if the method for selecting motion vector candidates is set in advance, the decoding of the method for selecting motion vector candidates can be omitted.

[0084] In the above example, a method for setting a motion vector candidate selection method on a sequence basis, a picture basis, or a slice basis has been described. However, instead of setting these motion vector candidate selection methods, a pattern for directly selecting motion vector candidates on a block basis may be selected, as will be described later.

[0085] In this case, the number of weighting coefficient patterns and the degree of freedom in setting the pattern types are reduced, but the increase in the header information described above can be avoided.

[0086] A method for selecting motion vector candidates on a block-by-block basis will be described below with reference to FIG.

[0087] As shown in FIG. 6, in step S201, the decoding unit 201 determines whether any one of sps_div_enabled_flag, pps_div_enabled_flag, and sh_div_enabled_flag is 1 or not.

[0088] If neither is 1, the operation proceeds to step S202 and ends without applying the technology according to this embodiment.

[0089] If either of them is 1, in step S203, the decoding unit 201 determines whether the current block to be decoded is in the partition mode.

[0090] If the block to be decoded is not in the divided mode, the operation proceeds to step S202 and ends without applying the technology according to this embodiment.

[0091] If the current block is in the division mode, in step S204, the decoding unit 201 decodes cu_div_mode, which is a control signal indicating the division mode.

[0092] In step S205, the decoding unit 201 determines, based on cu_div_mode, whether the small region to be decoded is in motion compensation mode.

[0093] If No, the operation proceeds to step S206 and ends without applying the technology according to this embodiment.

[0094] If the answer is YES, in step S207, the decoding unit 201 decodes cu_mv_idx, which is a control signal that specifies a motion vector from among the motion vector candidates.

[0095] The example in Figure 6 shows a case where one cu_mv_idx is decoded, but if two small regions are in motion compensation mode or one small region is in bidirectional motion compensation mode, the decoding unit 201 may decode both cu_mv_idx0 and cu_mv_idx1.

[0096] cu_mv_idx is decoded to identify one of the motion vector candidates selected by the div_selecting_mode at the lowest layer applied to the block to be decoded.

[0097] According to the image decoding device 200 of this embodiment, coding efficiency can be improved by adaptively dividing blocks and decoding motion vectors according to the division shape.

[0098] The above-described image decoding device 200 may be realized as a program that causes a computer to execute each function (each step). [Industrial Applicability]

[0099] According to this embodiment, for example, it is possible to improve the overall service quality in video communication, which makes it possible to contribute to Goal 9 of the Sustainable Development Goals (SDGs) led by the United Nations, which is to "Develop resilient infrastructure, promote sustainable industrialization and foster innovation." [Explanation of symbols]

[0100] 200...Image decoding device 201...Decoding unit 202...Inverse quantization section 203...Inverse conversion unit 204...Intra prediction unit 205...Sorting Department 206...adder 207...Storage section 208...Motion compensation unit 209...Synthesis section 210...Code input section 220...Image output unit

Claims

1. An image decoding device, a decoding unit that decodes the control information and the quantized value; an inverse quantization unit that inversely quantizes the quantized values ​​to generate transform coefficients; an inverse transform unit that inversely transforms the transform coefficients to generate prediction residuals; an intra prediction unit that generates a first predicted pixel based on a decoded pixel and the control information; a storage unit that stores the decoded pixels; a selection unit that determines a motion vector based on the control information and the motion vector candidates, and sets the motion vector 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 synthesizing unit that generates a third predicted pixel based on the first predicted image, 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, The image decoding device is characterized in that the selection unit performs at least one of expanding the motion vector candidates or determining the order of the motion vector candidates based on a cost obtained by template matching between the block to be decoded or a small area of ​​the block to be decoded and a neighboring area.

2. 2. The image decoding device according to claim 1, wherein the selection unit determines the order of the motion vector candidates in ascending order of costs obtained by template matching in the neighboring region.

3. 3. The image decoding device according to claim 1, wherein the selection unit calculates a weighted average of the plurality of motion vector candidates, using the inverse of a cost obtained by template matching of the neighboring area as a weight, and adds the weighted average as a new motion vector candidate.

4. An image decoding method, comprising: a step A of decoding control information and quantization values; step B of dequantizing the quantized values ​​to obtain transform coefficients; a step C of inversely transforming the transform coefficients to obtain prediction residuals; a step D of generating a first predicted pixel based on the decoded pixel and the control information; a step E of storing said decoded pixels; a step F of determining a motion vector based on the control information and the motion vector candidate, and setting the motion vector as motion information; a step G of generating a second predicted pixel based on the decoded pixel, the motion information, and the control information; a step H of generating a third predicted pixel based on the first predicted image, the second predicted pixel, and the control information; a step I of adding any one of the first to third predicted pixels and the prediction residual to obtain a decoded pixel, An image decoding method characterized in that in step F, at least one of expanding the motion vector candidates or determining the sorting order of the motion vector candidates is performed based on a cost obtained by template matching between the block to be decoded or a small area of ​​the block to be decoded and a neighboring area.

5. A program that causes a computer to function as an image decoding device, The image decoding device comprises: a decoding unit that decodes the control information and the quantized value; an inverse quantization unit that inversely quantizes the quantized values ​​to generate transform coefficients; an inverse transform unit that inversely transforms the transform coefficients to generate prediction residuals; an intra prediction unit that generates a first predicted pixel based on a decoded pixel and the control information; a storage unit that stores the decoded pixels; a selection unit that determines a motion vector based on the control information and the motion vector candidates, and sets the motion vector 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 synthesizing unit that generates a third predicted pixel based on the first predicted image, 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, The program is characterized in that the selection unit performs at least one of expanding the motion vector candidates or determining the order of the motion vector candidates based on a cost obtained by template matching between the block to be decoded or a small area of ​​the block to be decoded and a neighboring area.

Citation Information

Patent Citations

  • Method and apparatus of pattern-based motion vector derivation for video coding

    US20190082192A1

  • ITTH.266/