Image decoding device, image decoding method, and program

The image decoding device and method address the limitation of single block vectors by deriving multiple block vectors, improving encoding efficiency and prediction accuracy in image decoding.

JP7893778B2Active Publication Date: 2026-07-22KDDI CORP
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
KDDI CORP
Filing Date
2023-04-13
Publication Date
2026-07-22

AI Technical Summary

Technical Problem

Existing image decoding technologies, such as IBC and IntraTMP, limit encoding efficiency due to the restriction of block vectors to one, and only copying blocks without efficient signaling of block vectors.

Method used

An image decoding device and method that allows for the derivation of two or more block vectors with integer or decimal pixel precision, using methods like IBC BVP, IBC merge, IBC BVP/Merge, and IBC GPM to enhance prediction accuracy and encoding efficiency.

Benefits of technology

Improves encoding efficiency by accurately predicting image blocks using multiple block vectors, enhancing the accuracy and efficiency of image decoding processes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007893778000001
    Figure 0007893778000001
  • Figure 0007893778000002
    Figure 0007893778000002
  • Figure 0007893778000003
    Figure 0007893778000003
Patent Text Reader

Abstract

To improve coding efficiency.SOLUTION: An image decoding device 200 comprises: a first intra-frame prediction unit 204 that generates a first prediction pixel on the basis of decoded pixels and control information; a second intra-frame prediction unit 205 that generates, on the basis of the decoded pixels and the control information, a second prediction pixel from two or more block vectors that are an integer pixel accuracy or decimal pixel accuracy with respect to a to-be-decoded block; an accumulation unit 208 that accumulates the decoded pixels; an inter-frame prediction unit 206 that generates a third prediction pixel on the basis of the accumulated decoded pixels and the control information; and an adder 207 that adds a prediction residual and the first to third prediction pixels to obtain decoded pixels.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 Art

[0002] Non-Patent Documents 1 and 2 disclose Intra Block Copy (IBC) and Intra Template Matching Prediction (IntraTMP).

[0003] IBC and IntraTMP use pixels from the decoded pixel region of the frame to be decoded as predicted pixels for the block to be decoded.

[0004] The difference between IBC and IntraTMP is that IBC explicitly signals a control signal for decoding a block vector representing the coordinates it references, while IntraTMP does not signal a control signal for decoding a block vector by searching for a similar region using neighboring pixels as a template.

[0005] Although there is a difference in the signaling of the block vector, in both cases, pixels are copied from the reference block indicated by the block vector of the block to be decoded as shown in FIG. 2 and used as predicted pixels.

Prior Art Documents

Non-Patent Documents

[0006]

Non-Patent Document 1

Non-Patent Document 2

Summary of the Invention

[0007] However, since Non-Patent Documents 1 and 2 both limit the number of block vectors to one, there is room for improvement in terms of encoding efficiency. Furthermore, since Non-Patent Documents 1 and 2 only copy the block, there is room for improvement in terms of encoding efficiency.

[0008] Therefore, the present invention has been made in view of the above-mentioned problems, and aims to provide an image decoding device, an image decoding method, and a program with high encoding efficiency. [Means for solving the problem]

[0009] The first feature of the present invention is an image decoding device comprising: a decoding unit that decodes control information and quantization values; an inverse quantization unit that inversely quantizes the quantization values ​​to obtain conversion coefficients; an inverse transformation unit that inversely transforms the conversion coefficients to obtain prediction residuals; a first in-frame prediction unit that generates first prediction pixels based on decoded pixels and the control information; a second in-frame prediction unit that generates second prediction pixels from two or more block vectors with integer pixel precision or decimal pixel precision for a block to be decoded, based on the decoded pixels and the control information; an accumulation unit that accumulates the decoded pixels; an inter-frame prediction unit that generates third prediction pixels based on the accumulated decoded pixels and the control information; and an adder that adds the prediction residuals and the first to third prediction pixels to obtain the decoded pixels.

[0010] A second feature of the present invention is an image decoding method comprising the steps of: decoding control information and quantization values; inverse quantization of the quantization values ​​to obtain conversion coefficients; inverse transformation of the conversion coefficients to obtain prediction residuals; generating first prediction pixels based on decoded pixels and the control information; generating second prediction pixels from two or more block vectors with integer pixel precision or decimal pixel precision for a block to be decoded, based on the decoded pixels and the control information; accumulating the decoded pixels; generating third prediction pixels based on the accumulated decoded pixels and the control information; and adding the prediction residuals and the first to third prediction pixels to obtain the decoded pixels.

[0011] A third feature of the present invention is a program that causes a computer to function as an image decoding device, wherein the image decoding device comprises: a decoding unit that decodes control information and quantization values; an inverse quantization unit that inversely quantizes the quantization values ​​to obtain conversion coefficients; an inverse transformation unit that inversely transforms the conversion coefficients to obtain prediction residuals; a first in-frame prediction unit that generates first prediction pixels based on decoded pixels and the control information; a second in-frame prediction unit that generates second prediction pixels from two or more block vectors with integer pixel precision or decimal pixel precision for a block to be decoded, based on the decoded pixels and the control information; an accumulation unit that accumulates the decoded pixels; an inter-frame prediction unit that generates third prediction pixels based on the accumulated decoded pixels and the control information; and an adder that adds the prediction residuals and the first to third prediction pixels to obtain the decoded pixels. [Effects of the Invention]

[0012] According to the present invention, it is possible to provide an image decoding device, an image decoding method, and a program with high encoding efficiency. [Brief explanation of the drawing]

[0013] [Figure 1] Figure 1 shows an example of the functional block of an image decoding device 200 according to one embodiment. [Figure 2] Figure 2 is a diagram illustrating IBC and IntraTMP. [Figure 3] Figure 3 shows an example of the functional block of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 4] Figure 4 is a diagram illustrating an example of a method for deriving BV in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 5] Figure 5 is a diagram illustrating an example of a method for deriving BV in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 6] Figure 6 is a diagram illustrating an example of a method for deriving BV in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 7] Figure 7 is a diagram illustrating an example of a method for deriving BV in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 8] Figure 8 is a diagram illustrating an example of a method for deriving BV in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 9] Figure 9 is a diagram illustrating an example of a method for deriving BV using IBC GPM in the BV derivation unit 205A of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 10] Figure 10 is a diagram illustrating an example of a method for synthesizing predicted pixels of a decoding target block in the second frame prediction pixel generation unit 205B of the second frame prediction unit 205 of the image decoding device 200 according to one embodiment. [Figure 11] Figure 11 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second frame prediction pixel generation unit 205B of the second frame prediction unit 205 of an image decoding device 200 according to one embodiment. [Figure 12] FIG. 12 is a diagram for explaining an example of a method of synthesizing predicted pixels of a decoding target block in the second intra-prediction pixel generation unit 205B of the second intra-prediction unit 205 of the image decoding apparatus 200 according to an embodiment. [Figure 13] FIG. 13 is a diagram for explaining an example of a method of synthesizing predicted pixels of a decoding target block in the second intra-prediction pixel generation unit 205B of the second intra-prediction unit 205 of the image decoding apparatus 200 according to an embodiment. [Figure 14] FIG. 14 is a diagram for explaining an example of a method of synthesizing predicted pixels of a decoding target block in the second intra-prediction pixel generation unit 205B of the second intra-prediction unit 205 of the image decoding apparatus 200 according to an embodiment. [Figure 15] FIG. 15 is a flowchart showing an example of a method for decoding control of a predetermined flag related to IBC in a sequence unit. [Figure 16] FIG. 16 is a diagram showing an example of various flags related to IBC. [Figure 17] FIG. 17 is a flowchart showing an example of a method for decoding a flag that controls whether double-prediction IBC is applicable in the decoding unit 201 of the image decoding apparatus 200 according to an embodiment. [Figure 18] FIG. 18 is a flowchart showing an example of a method for decoding a flag that controls whether double-prediction IBC is applicable in the decoding unit 201 of the image decoding apparatus 200 according to an embodiment. [Figure 19] FIG. 19 is a flowchart showing an example of a method for decoding a pred_mode_ibc_flag, which is a flag that controls whether IBC is applied in units of decoding target blocks in the decoding unit 201 of the image decoding apparatus 200 according to an embodiment. [Figure 20] FIG. 20 is a flowchart showing an example of a method for selecting an IBC mode in the decoding unit 201 of the image decoding apparatus 200 according to an embodiment. [Figure 21]Figure 21 is a flowchart showing an example of a method for decoding a flag in the decoding unit 201 of an image decoding device 200 according to one embodiment, for controlling whether or not dual prediction IBC merging is enabled for each block to be decoded. [Figure 22] Figure 22 is a flowchart showing an example of a method for decoding control information related to IBC merging in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Figure 23] Figure 23 is a flowchart showing an example of a method for decoding control information related to IBC merging in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Figure 24] Figure 24 is a flowchart showing an example of a method for decoding a flag in the decoding unit 201 of an image decoding device 200 according to one embodiment, which controls whether or not IBC BVP / merge is enabled for each block to be decoded. [Figure 25] Figure 25 is a flowchart showing an example of a method for decoding control information related to IBC BVP / merge in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Figure 26] Figure 26 is a flowchart showing an example of a method for decoding control information related to the MBVD described above, which corrects the BV of the IBC in the decoding unit 201 of the image decoding device 200 according to one embodiment. [Figure 27] Figure 27 is a flowchart showing an example of a method for applying second-frame prediction in block units in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Figure 28] Figure 28 is a flowchart showing the case where a corrected BV is applied to the BV in the decoding unit 201 of the image decoding device 200 according to one embodiment. [Figure 29] Figure 29 is a flowchart showing an example of a method for decoding a flag in the decoding unit 201 of an image decoding device 200 according to one embodiment, for controlling whether or not dual prediction IBC BVP is enabled for each block to be decoded. [Figure 30]Figure 30 is a flowchart showing an example of a method for decoding control information related to dual prediction IBC BVP in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Figure 31] Figure 31 shows an example of a method for binarizing an IBC merge index in the decoding unit 201 of an image decoding device 200 according to one embodiment. [Modes for carrying out the invention]

[0014] Embodiments of the present invention will be described below with reference to the drawings. Note that the components in the following embodiments can be replaced with existing components as appropriate, and various variations are possible, including combinations with other existing components. Therefore, the description of the following embodiments does not limit the content of the invention as described in the claims.

[0015] <First Embodiment> The image decoding device 200 according to this embodiment will be described below with reference to Figures 1 to 29. Figure 1 is a diagram showing an example of the functional block of the image decoding device 200 according to this embodiment.

[0016] As shown in Figure 1, the image decoding device 200 includes a code input unit 210, a decoding unit 201, an inverse quantization unit 202, an inverse transformation unit 203, a first frame prediction unit 204, a second frame prediction unit 205, an interframe prediction unit 206, an adder 207, a storage unit 208, and an image output unit 220.

[0017] The code input unit 210 is configured to acquire code information encoded by the image encoding device.

[0018] The decoding unit 201 is configured to decode control information and quantization values ​​from the code 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 code information.

[0019] Here, the quantized values ​​are sent to the inverse quantization unit 202, and the control information is sent to the first frame prediction unit 204, the second frame prediction unit 205, and the inter-frame prediction unit 206. This control information includes information necessary for controlling the first frame prediction unit 204, the second frame prediction unit 205, and the inter-frame prediction unit 206, and may also include header information such as sequence parameter sets, picture parameter sets, picture headers, and slice headers.

[0020] The inverse quantization unit 202 is configured to inverse quantize the quantized values ​​sent from the decoding unit 201 to obtain conversion coefficients. These conversion coefficients are then sent to the inverse conversion unit 203.

[0021] The inverse transform unit 203 is configured to inversely transform the transformation coefficients sent from the inverse quantization unit 202 to obtain the predicted residual. This predicted residual is then sent to the adder 207.

[0022] The first frame prediction unit 204 is configured to generate a first prediction pixel for addition with the prediction residual in the adder 207, based on the decoded pixel obtained via the adder 207 and the control information decoded by the decoding unit 201. This first prediction pixel is sent to the adder 207.

[0023] The interframe prediction unit 206 is configured to generate a third prediction pixel for addition with the prediction residual in the adder 207, based on the decoded pixels obtained by referring to the storage unit 208 and the control information decoded by the decoding unit 201. This third prediction pixel is sent to the adder 207.

[0024] The storage unit 208 is configured to cumulatively store the decoded pixels sent from the adder 207. These decoded pixels are referenced by the inter-frame prediction unit 206 via the storage unit 208.

[0025] The adder 207 is configured to obtain a decoded pixel by adding the predicted residual sent from the inverse transform unit 203 to one of the first to third predicted pixels sent from the first frame prediction unit 204, the second frame prediction unit 205, and the inter-frame prediction unit 206. The decoded pixel is then sent to the image output unit 220, the storage unit 208, and the inter-frame prediction unit 206.

[0026] (Prediction unit 205 within the second frame) The following describes an example of a prediction method used by the prediction unit 205 within the second frame.

[0027] <Derivation of block vectors> The role of the second frame prediction unit 205 is to derive one or more block vectors (hereinafter referred to as BV: Block Vector) for the block to be decoded, as shown in Figure 2, in order to predict the block to be decoded with high accuracy in the subsequent adder 207, and to predict the pixels of the block referenced by the BV (second frame prediction).

[0028] Examples of such second-frame predictions include intrablock copy (IBC) and intratemplate matching prediction (IntraTMP), which are disclosed in Non-Patent Documents 1 and 2.

[0029] Such second-frame prediction can be applied when the decoded block references other regions in BV, but in the following, IBC will be used as an example of second-frame prediction. Other examples include modes such as IntraTMP, which reference predicted pixels within a frame.

[0030] Figure 3 shows an example of the functional blocks of the second frame prediction unit 205. As shown in Figure 3, the second frame prediction unit 205 comprises a block vector derivation unit (hereinafter referred to as the BV derivation unit) 205A and a second frame prediction pixel generation unit 205B.

[0031] The BV derivation unit 205A is configured to derive one or more BVs for the block to be decrypted.

[0032] In this embodiment, the BV derivation unit 205A may derive one or more BVs using at least one of the following four methods for deriving the BV of the IBC. The method used to derive the BV will be described in detail in the signaling (control information decoding process) of the decoding unit 201, which will be described later. A. IBC Block Vector Prediction (hereinafter referred to as IBC BVP) B. IBC merge C. IBC BVP / Merge D. IBC GPM Here, methods A and B for deriving BV described above are disclosed in Non-Patent Documents 1 and 2, but both of the derivation methods disclosed in Non-Patent Documents 1 and 2 are methods that assume the derivation of a single BV.

[0033] The objective (effect) of the present invention is to improve the accuracy of second-frame prediction by deriving two or more BVs, and consequently, to improve coding efficiency. Therefore, the following explanation of BV derivation methods A and B will focus on the difference when two or more BVs are derived. Note that BV derivation methods C and D described above are new methods that assume the derivation of two or more BVs. Furthermore, as an example of second-frame prediction using such two or more BV derivations (multiple prediction IBC or multiple prediction IBC), the following will explain IBC using two BV derivations (dual prediction IBC or dual prediction IBC).

[0034] (A. IBC BVP) Below, an example of the method for deriving BV using IBC BVP in the BV derivation unit 205A will be explained using Figures 4 to 6.

[0035] Figure 4 shows an example in which BV is composed of block vector prediction (BVP) and block vector difference (BVD).

[0036] In IBC BVP, the BV derivation unit 205A derives the Block Vector Prediction (BVP) and Block Vector Difference (BVD) based on the control information values ​​related to the BVP and BVD decoded by the decoding unit 201, and derives the BV. Here, the control information related to the BVP and BVD will be described in detail in the explanation of signaling in the decoding unit 201.

[0037] The following is an overview of the BVP derivation method in IBC BVP.

[0038] In step S1, the BV derivation unit 205A checks whether the adjacent blocks to the decryption target block shown in Figure 5 have been decrypted, and if such adjacent blocks have been decrypted, it checks whether they have a BV (whether the BV is usable).

[0039] In step S2, the BV derivation unit 205A registers the BVs of adjacent blocks that have BVs as BVP candidates in a list (hereinafter referred to as the BVP candidate list) as shown in Figure 6.

[0040] In step S3, the BV derivation unit 205A selects a BVP from the BVP candidate list based on the value of the control information (IBC BVP flag or IBC BVP index) related to the BVP decoded by the decoding unit 201.

[0041] Here, the number (position) of adjacent blocks to check in step S1 whether or not they are decoded and whether or not they have a BV may be two types ("A" and "L" in Figure 5), as in Non-Patent Literature 1, or it may be five types ("A", "L", "AR", "LB", and "AL" in Figure 5), as in Non-Patent Literature 2.

[0042] The order in which adjacent blocks are checked may be the same as in Non-Patent Documents 1 and 2, respectively. Here, "A", "L", "AR", "LB", and "AL" correspond to "Above", "Left", "AboveRight", "LeftBottom", and "AboveLeft" in Non-Patent Documents 1 and 2, respectively.

[0043] Here, the BV derivation unit 205A can utilize BVs of neighboring blocks (referred to as spatial BVPs in Non-Patent Literature 2) and BVs used in the past (referred to as history BVPs in Non-Patent Literature 2) as BVP candidates.

[0044] Furthermore, if the BV whose availability is to be checked in step S1 is the same as the BV whose availability has already been confirmed to be available, the BV whose availability is to be checked may be determined to be unavailable.

[0045] Furthermore, the order in which BVs (BVP candidates) determined to be available in step S1 are registered in the BVP candidate list may be rearranged using a predetermined sorting method. Details of this sorting method will be described later.

[0046] The following is an overview of the BVD derivation method in IBC BVP.

[0047] In step S1, the BV derivation unit 205A derives BVD based on control information relating to BVD.

[0048] In step S2, the BV derivation unit 205A rounds the BVD derived in step S1 based on control information relating to the pixel accuracy of the BVD.

[0049] Here, the method for deriving the BVD based on control information relating to the BVD can be configured in the same way as in Non-Patent Document 1. Specifically, the decoding unit 201 decodes (or estimates) the magnitude (absolute value) of the BVD and the control information values ​​relating to the BVD's sign, and the BV derivation unit 205A derives the BVD from these values.

[0050] Finally, the BV derivation unit 205A derives BV by adding the derived BVP and BVD.

[0051] The above is an overview of the method for deriving BV in IBC BVP.

[0052] As another example, in IBC BVP, if the BV derivation unit 205A derives two or more BVs, it may derive the BVP and BVD required for each BV in the following way.

[0053] In step S1, the BV derivation unit 205A checks whether the adjacent blocks to the decryption target block shown in Figure 5 have been decrypted, and if such adjacent blocks have been decrypted, it checks whether they have a BV (whether the BV is usable).

[0054] In step S2, the BV derivation unit 205A registers the BVs of adjacent blocks that have BVs as BVP candidates in a list (hereinafter referred to as the BVP candidate list) as shown in Figure 6.

[0055] In step S3, the BV derivation unit 205A selects two or more different BVPs from the BVP candidate list based on the values ​​of control information (IBC BVP flag or IBC BVP index) related to two or more different BVPs decoded by the decoding unit 201.

[0056] Furthermore, when the BV derivation unit 205A derives a BV corresponding to one or more indices on the BVP candidate list, it is desirable that the second and subsequent indices be relative indices starting from the immediately preceding index. Details will be described later.

[0057] Here, the number (position) of adjacent blocks to check in step S1 whether or not they are decoded and whether or not they have a BV may be two types ("A" and "L" in Figure 5), as in Non-Patent Literature 1, or it may be five types ("A", "L", "AR", "LB", and "AL" in Figure 5), as in Non-Patent Literature 2.

[0058] The order in which adjacent blocks are checked may be the same as in Non-Patent Documents 1 and 2, respectively. Here, "A", "L", "AR", "LB", and "AL" correspond to "Above", "Left", "AboveRight", "LeftBottom", and "AboveLeft" in Non-Patent Documents 1 and 2, respectively.

[0059] Here, the BV derivation unit 205A can utilize BVs of neighboring blocks (referred to as spatial BVPs in Non-Patent Literature 2) and BVs used in the past (referred to as history BVPs in Non-Patent Literature 2) as BVP candidates.

[0060] Furthermore, if the BV whose availability is to be checked in step S1 is the same as the BV whose availability has already been confirmed to be available, the BV derivation unit 205A may determine that the BV whose availability is to be checked is unavailable.

[0061] Furthermore, the BV derivation unit 205A may rearrange the order in which the BVs (BVP candidates) determined to be available in step S1 are registered in the BVP candidate list using a predetermined rearrangement method. Details of this rearrangement method will be described later.

[0062] The following is an overview of the BVD derivation method in IBC BVP.

[0063] In step S1, the BV derivation unit 205A derives a BVD based on control information relating to two or more different BVDs.

[0064] In step S2, the BV derivation unit 205A rounds two or more different BVDs derived in step S1 based on control information relating to the pixel accuracy of the BVDs.

[0065] Here, the method for deriving the BVD based on control information relating to the BVD can be configured in the same way as in Non-Patent Document 1. Specifically, the decoding unit 201 decodes or estimates the magnitude (absolute value) of the BVD and the value of the control information relating to the BVD's sign, and the BV derivation unit 205A derives the BVD from these values.

[0066] Finally, the BV derivation unit 205A adds the derived BVP and BVD to derive two or more different BV values.

[0067] The above is an overview of the method for deriving BV in IBC BVP for dual prediction (or multiple prediction) that derives two or more BVs.

[0068] (B. IBC merge) Below, an example of a method for deriving BV by IBC merging in the BV derivation unit 205A will be explained using Figures 4 to 7.

[0069] In IBC merging, unlike IBC BVP, the BV derivation unit 205A does not derive BVD, but only BVP, which is then derived as BV.

[0070] The following is an overview of how BV is derived in IBC merging.

[0071] In step S1, the BV derivation unit 205A checks whether the adjacent blocks to the decryption target block shown in Figure 5 have been decrypted, and if such adjacent blocks have been decrypted, it checks whether they have a BV (whether the BV is usable).

[0072] In step S2, the BV derivation unit 205A registers the BVs of adjacent blocks that have BVs in a list (hereinafter referred to as the BVP candidate list or merge candidate list) as BVP candidates (or merge candidates) as shown in Figure 6 or Figure 7.

[0073] In step S3, the BV derivation unit 205A selects a BVP from the BVP candidate list based on the value of the control information (IBC merge index) related to the BVP decoded by the decoding unit 201, and derives such a BVP as the BV.

[0074] Here, the number (position) of adjacent blocks to check in step S1 whether or not they are decoded and whether or not they have a BV may be two types ("A" and "L" in Figure 5), as in Non-Patent Literature 1, or it may be five types ("A", "L", "AR", "LB", and "AL" in Figure 5), as in Non-Patent Literature 2.

[0075] The order in which adjacent blocks are checked may be the same as in Non-Patent Documents 1 and 2, respectively. Here, "A", "L", "AR", "LB", and "AL" correspond to "Above", "Left", "AboveRight", "LeftBottom", and "AboveLeft" in Non-Patent Documents 1 and 2, respectively.

[0076] Here, BVP candidates can utilize BVs of neighboring blocks (referred to as spatial merge in Non-Patent Literature 2), BVs used in the past (referred to as history merge in Non-Patent Literature 2), or the average of BVs (referred to as pairwise average merge in Non-Patent Literature 2).

[0077] Furthermore, if the BV whose availability is to be checked in step S1 is the same as the BV whose availability has already been confirmed to be available, the BV derivation unit 205A may determine that the BV whose availability is to be checked is unavailable.

[0078] Furthermore, the BV derivation unit 205A may rearrange the order in which the BVs (BVP candidates) determined to be available in step S1 are registered in the BVP candidate list using a predetermined rearrangement method. Details of this rearrangement method will be described later.

[0079] The above is an overview of the method for deriving BV in IBC merging.

[0080] Here, if the BV derivation unit 205A derives two or more BVs in the IBC merge, it may derive two or more BVs in the following manner.

[0081] As an example, the BV derivation unit 205A may, as shown in Figure 6, create one BVP candidate list (or merge candidate list), and then, according to the values ​​of two or more control information (IBC merge index) that indicate the BVP candidates (or merge candidates) in the BVP candidate list decoded by the decoding unit 201, select two or more BVP candidates from the BVP candidate list and derive each as a BV.

[0082] Furthermore, when the BV derivation unit 205A derives a BV corresponding to one or more indices on the BVP candidate list, it is desirable that the second and subsequent indices be relative indices starting from the immediately preceding index. Details will be described later.

[0083] Alternatively, the BV derivation unit 205A may derive a BV by fixedly selecting one or more of the top BVP candidates from the BVP candidate list. In this case, it is desirable for the BV derivation unit 205A to perform a rearrangement of the BVP candidates in the BVP candidate list, as described later. With this configuration, by fixedly selecting some of the BVs from two or more BVs, the amount of code required for the index necessary to derive two or more BVs becomes unnecessary, thus improving coding efficiency.

[0084] As another example, the BV derivation unit 205A may, as shown in Figure 7, individually configure a BVP candidate list for each BV held by the block to be decrypted, and then derive two or more BVs using a single index.

[0085] For example, if a neighboring block holds multiple BVs as BVP candidates, the BV derivation unit 205A registers each BV in its corresponding BVP candidate list. By constructing multiple BVP candidate lists in this way and sharing an index, it is possible to derive one or more BVs from a single index. For example, if a block to be decoded holds a maximum of two BVs, the BV derivation unit 205A may prepare two lists (for example, an L0 list and an L1 list similar to normal in-frame prediction) and derive one BV corresponding to the index from the L0 list and one from the L1 list. If the BV corresponding to the index is only in one of the L0 list and L1 list, the BV derivation unit 205A may use that one.

[0086] (C. IBC BVP / Merge) Below, an example of the BV derivation method using IBC BVP / merge in the BV derivation unit 205A will be explained using Figures 4 to 6 and Figure 8.

[0087] IBC BVP / Merge is a method for deriving two (or more) BVs by first deriving the first BV based on the BV derivation method in IBC BVP described above, and then deriving the other (or more than two) BVs based on the BV derivation method in IBC Merge described above. The specific derivation method is as follows:

[0088] Firstly, in IBC BVP / Merge, the BV derivation unit 205A derives BVP and BVD based on the control information values ​​for BVP and BVD, respectively, that are decoded by the decoding unit 201, using the same derivation method as IBC BVP, and then adds the derived BVP and BVD to derive the first BV.

[0089] Secondly, in IBC BVP / Merge, the BV derivation unit 205A uses the same derivation method as for IBC BVP to select a BVP from a BVP candidate list based on the value of the control information (IBC merge index) related to the BVP decoded by the decoding unit 201, and derives it as the second BV.

[0090] As another example, as shown in Figure 8, the BV derivation unit 205A may create a template (i.e., a predetermined neighboring pixel of the referenced block referenced by the BV) based on the first derived BV, and evaluate the similarity of each BVP candidate (each IBC merge candidate) in the IBC merge BVP candidate list with the template (a predetermined neighboring pixel of the referenced block referenced by the reference) (by comparing template costs), thereby deriving the BVP candidate (IBC merge candidate) with the highest similarity (minimum template cost) as the second BV for the IBC BVP / merge.

[0091] Alternatively, as another example, the BV derivation unit 205A may select a BVP from the BVP candidate list in the IBC merge based on the value of the control information (IBC merge index) related to the BVP decoded by the decoding unit 201, and derive such a BVP as the second BV.

[0092] Here, the BV derivation unit 205A may use the template of the block to be decrypted, rather than the template based on the BV derived by IBC BVP, as the target of the similarity evaluation with the template of each IBC merge candidate.

[0093] Furthermore, the BV derivation unit 205A can utilize methods such as the sum of squared errors (SSE) and the sum of absolute differences (SAD) to evaluate the similarity of templates (comparison of template costs).

[0094] Furthermore, the predetermined pixels of the template created in the template similarity evaluation may be the decoded pixels of a single pixel line adjacent to the left or top of each block.

[0095] The BV derivation unit 205A may perform a template similarity evaluation using a decoded pixel at an available position if there are no decoded pixels adjacent to the left or top of the picture boundary or slice boundary.

[0096] Furthermore, if there are two or more BVs to be derived, the BV derivation unit 205A may derive BVP candidates in order of template similarity (in order of lowest template cost).

[0097] The more detailed procedure for deriving BV using IBC BVP / Merge is as follows:

[0098] The following is an overview of the BVP derivation method based on the BVP derivation method using IBC BVP in IBC BVP / Merge.

[0099] In step S1, the BV derivation unit 205A checks whether the adjacent blocks to the decryption target block shown in Figure 5 have been decrypted, and if such adjacent blocks have been decrypted, it checks whether they have a BV (whether the BV is usable).

[0100] In step S2, the BV derivation unit 205A registers the BVs of adjacent blocks that have BVs as BVP candidates in a list (hereinafter referred to as the BVP candidate list) as shown in Figure 6.

[0101] In step S3, the BV derivation unit 205A selects a BVP from the BVP candidate list based on the value of the control information (IBC BVP flag or IBC BVP index) related to the BVP decoded by the decoding unit 201.

[0102] Here, the number (position) of adjacent blocks to check in step S1 whether or not they are decoded and whether or not they have a BV may be two types ("A" and "L" in Figure 5), as in Non-Patent Literature 1, or it may be five types ("A", "L", "AR", "LB", and "AL" in Figure 5), as in Non-Patent Literature 2.

[0103] The order in which adjacent blocks are checked may be the same as in Non-Patent Documents 1 and 2, respectively. Here, "A", "L", "AR", "LB", and "AL" correspond to "Above", "Left", "AboveRight", "LeftBottom", and "AboveLeft" in Non-Patent Documents 1 and 2, respectively.

[0104] Here, the BV derivation unit 205A can utilize BVs of neighboring blocks (referred to as spatial BVPs in Non-Patent Literature 2) and BVs used in the past (referred to as history BVPs in Non-Patent Literature 2) as BVP candidates.

[0105] Furthermore, if the BV whose availability is to be checked in step S1 is the same as the BV whose availability has already been confirmed to be available, the BV derivation unit 205A may determine that the BV whose availability is to be checked is unavailable.

[0106] Furthermore, the BV derivation unit 205A may rearrange the order in which the BVs (BVP candidates) determined to be available in step S1 are registered in the BVP candidate list using a predetermined rearrangement method. Details of this rearrangement method will be described later.

[0107] The following is an overview of the BVD derivation method based on the BV derivation method using IBC BVP in IBC BVP / Merge.

[0108] In step S1, the BV derivation unit 205A derives BVD based on control information relating to BVD.

[0109] In step S2, the BV derivation unit 205A rounds the BVD derived in step S1 based on control information relating to the pixel accuracy of the BVD.

[0110] Here, the method for deriving the BVD based on control information relating to the BVD can be configured in the same way as in Non-Patent Document 1. Specifically, the decoding unit 201 decodes or estimates the magnitude (absolute value) of the BVD and the value of the control information relating to the BVD's sign, and the BV derivation unit 205A derives the BVD from these values.

[0111] The BVD derivation unit 205A derives the first BV by adding the derived BVP and BVD.

[0112] The following is an overview of the second BV derivation method based on the BV derivation method using IBC merge in IBC BVP / Merge.

[0113] In addition, in IBC BVP / Merge, the BV derivation unit 205A may construct two different BV candidate lists (i.e., one is a BVP candidate list for IBC BVP, and the other is a merge candidate list for IBC BVP / Merge).

[0114] As another example, the BV derivation unit 205A may derive the second BV by evaluating the similarity of templates based on the first BV described above, as follows:

[0115] In step S1, the BV derivation unit 205A uses the neighboring pixels of the block referenced by the first BV or the block to be decoded as a template.

[0116] In step S2, the BV derivation unit 205A evaluates the similarity between the template derived in step S1 and the corresponding pixels in the blocks referenced by each BVP candidate in the BVP candidate list.

[0117] In step S3, the BV derivation unit 205A selects the BVP with the highest similarity and derives this BVP as the second BV.

[0118] Here, the BV derivation unit 205A excludes from the similarity evaluation any BVP candidate that matches the first BV among the BVP candidate list in step S2.

[0119] Alternatively, the BV derivation unit 205A does not register in the BVP candidate list if the BVP candidate matches the first BV in the BVP candidate list of step S2.

[0120] Alternatively, the BV derivation unit 205A may, in step S3, rearrange the registration order of the BVP candidates in the BVP candidate list in order of similarity, select a BVP based on the value of the control information (IBC merge index) related to the BVP decoded by the decoding unit 201, and derive such a BVP as the BV.

[0121] The above is an overview of how BV is derived in IBC BVP / Merge.

[0122] (D. IBC GPM) Below, using Figure 9, an example of the method for deriving BV using IBC GPM in the BV derivation unit 205A will be explained.

[0123] In IBC GPM, as shown in Figure 9, the BV derivation unit 205A divides the block to be decoded into two sections by an arbitrary straight line (solid line in Figure 9) selected from a list of candidate straight lines (geometric partitioning lines) of different patterns, similar to the Geometric Partitioning Mode (GPM) disclosed in Non-Patent Document 1. Then, it derives one or more different BVs for each divided region and performs a weighted average of the reference points (pixels of the reference block) of each BV according to their distance from the partitioning line.

[0124] Here, the BV derivation unit 205A may derive the BV required for such IBC GPM, similar to the IBC merge described above.

[0125] Furthermore, the BV derivation unit 205A may identify candidate dividing lines in the IBC GPM based on control information that identifies candidate dividing lines for the GPM as disclosed in Non-Patent Document 1 or 2.

[0126] <Pixel accuracy> Furthermore, the BV derivation unit 205A can set the pixel precision of the derived BV to integer pixel precision or decimal pixel precision.

[0127] Although IBC was devised as an encoding technique for screen images, when applied to natural images captured by a camera, the prediction accuracy can be improved by setting the pixel precision of BV to fractional pixel precision (i.e., generating predicted pixels with interpolation filters, similar to normal interframe prediction).

[0128] Furthermore, the BV derivation unit 205A can adaptively select multiple different pixel accuracies.

[0129] In other words, the BV derivation unit 205A may set the pixel precision of BV to multiple different integer pixel precisions, or to multiple different decimal pixel precisions.

[0130] For example, the BV derivation unit 205A can also change the pixel accuracy of the BV on a sequence basis and / or on a picture basis and / or on a slice basis and / or on a block basis.

[0131] In other words, the BV derivation unit 205A may change the pixel accuracy of the BV for any combination of sequence units, picture units, slice units, and block units.

[0132] Regarding the selection of pixel accuracy for block-level BV, Non-Patent Document 1 discloses a technique for applying Adaptive Motion Vector Resolution (AMVR) to IBC.

[0133] Specifically, this technique involves selecting either a 1-pixel or 4-pixel pixel precision for the BVD when deriving BV in IBC, and then rounding the BV to the selected BVD pixel precision.

[0134] As an option for this AMVR, the BV derivation unit 205A may add the above-mentioned sub-pixel accuracy (e.g., 1 / 4 pixel accuracy and / or 1 / 2 pixel accuracy).

[0135] As another example, the BV derivation unit 205A can also change the pixel accuracy of the BV according to the number of BVs of the block to be decoded.

[0136] For example, when there is one BV, the BV derivation unit 205A can set the pixel accuracy of the BV to sub-pixel accuracy, and when there are two or more BVs, the pixel accuracy of the BV can be set to integer pixel accuracy.

[0137] As the number of BVs increases, the intra-frame prediction in the second frame generally becomes more accurate, while the processing load required for BV derivation increases. Therefore, as the number of BVs increases, by coarsening the pixel accuracy of the BV, an effect can be obtained of suppressing the decoding processing load while maintaining the prediction accuracy of the intra-frame prediction in the second frame.

[0138] For example, when there are two or more BVs, the BV derivation unit 205A may set (limit the selectable pixel accuracy to only integer accuracy) the pixel accuracy of the BV to integer accuracy.

[0139] On the other hand, when there is one BV, the BV derivation unit 205A may set the pixel accuracy of the BV to integer pixel accuracy or sub-pixel accuracy (it is not necessary to limit the selectable pixel accuracy to only integer accuracy).

[0140] <BVP candidate list> As described above, the BV derivation unit 205A may configure the BVP candidate list by the number of BVs held by the block to be decoded.

[0141] Reproducing examples of the L0 list and the L1 list, it can be divided into cases where only a single list (L0 list) is used and cases where a plurality of lists (for example, when the BV derivation unit 205A derives a maximum of two BVs, the L0 list and the L1 list) are used.

[0142] In either case, the BV derivation unit 205A may use BVs of neighboring blocks as shown in Figure 5 of the block to be decoded, BVs used in the past, the average of BVs, etc., for the BVP candidates to be registered in the BVP candidate list.

[0143] Alternatively, the BV derivation unit 205A may be composed of BVs derived using IntraTMP as disclosed in Non-Patent Document 2 for the BVP candidates to be registered in the BVP candidate list.

[0144] The order in which BVP candidates are registered within these BVP candidate lists may follow the registration order disclosed in Non-Patent Documents 1 and 2.

[0145] The BV derivation unit 205A searches for and registers the aforementioned BVP candidates until the BVP candidate list is filled with BVP candidates.

[0146] As another example, the BV derivation unit 205A may check the availability of BVP candidates that exceed the maximum number of BVP candidates that can be registered in the BVP candidate list, and select BVP candidates to register in the BVP candidate list from among those candidates.

[0147] For example, the BV derivation unit 205A may register the BVP candidates in the search order of the BVP candidate list, or it may register them after rearranging the order of the registerable BVP candidates using the rearrangement method described later.

[0148] Furthermore, the maximum number of BVP candidates may be set as a fixed value, or it may be set adaptively using control information on a sequence, picture, or slice basis, as described later.

[0149] Furthermore, the BV derivation unit 205A may or may not use common BVP candidate lists for IBC BVP, IBC Merge, and IBC BVP / Merge (it is also possible to use different BVP candidate lists for IBC BVP, IBC Merge, and IBC BVP / Merge).

[0150] As an example of the former, the BV derivation unit 205A may set the maximum number of BVP candidates that can be registered in the BVP candidate list for which BVP (BV) is derived using the IBC merge index in IBC merge or IBC BVP / merge to be the same as the maximum number of BVP candidates that can be registered in the BVP candidate list for which BVP (BV) is derived using the IBC merge index in IBC merge or IBC BVP / merge.

[0151] In this way, by standardizing the BVP candidate list, the circuit size of the image decoding device 200 can be reduced.

[0152] As an example of the latter, the BV derivation unit 205A may set the maximum number of BVP candidates (IBC merge candidates) that can be registered in the BVP candidate list (merge candidate list) that derives BVP (merge candidates or BV) using the IBC merge index in IBC merge or IBC BVP / merge to be larger than the maximum number of BVP candidates that can be registered in the BVP candidate list that derives BVP using the IBC BVP flag or IBC BVP index in IBC BVP or IBC BVP / merge.

[0153] For example, as described in Non-Patent Document 2, the BV derivation unit 205A may fix the maximum number of BVP candidates that can be registered in the BVP candidate list to 2, and set the maximum number of merge candidates that can be registered in the merge candidate list to 6.

[0154] In this way, by setting a larger maximum number of merge candidates that can be registered in the merge candidate list than in the BVD candidate list, the number of decryptable BV patterns increases, and thus an improvement in encoding efficiency can be expected.

[0155] When the BV derivation unit 205A checks the availability of BVs such as neighboring blocks in order to search for BVP candidates (or merge candidates) that can be registered in the BVP candidate list (or merge candidate list), if the BV whose availability is to be checked for the newest is the same as a BVP candidate (or merge candidate) whose availability has already been confirmed to be available, the BV whose availability is to be checked for the newest may be determined to be unavailable (pruned).

[0156] The BV derivation unit 205A can improve the encoding efficiency of control information related to BVP for selecting a BVP from the BVP candidate list by ensuring that no more than two BVP candidates that are a perfect match are registered in the BVP candidate list.

[0157] Furthermore, if the pixel precision of the BV finally derived by applying AMVR or the like to modify the pixel precision of the BV to the block to be decoded is greater than the case where AMVR or the like is not applied, the BV derivation unit 205A may determine whether or not to use the pixel precision of the BVP candidates extracted from neighboring blocks of the block to be decoded, after rounding it to the pixel precision of the BV finally derived, in order to determine whether or not they can be used in the BVP candidate list.

[0158] For example, if each BV (1-pixel precision) of a neighboring block extracted to determine whether it is usable from the BVP candidate list is ultimately rounded to 4-pixel precision by AMVR or the like, the BV derivation unit 205A may determine whether to use each BV in the BVP candidate list after rounding it to 4-pixel precision.

[0159] Furthermore, the BV derivation unit 205A may use two or more BVP candidate lists (or merge candidate lists) when deriving BV, and if the pixel precision of the BVP candidates (or merge candidates) in at least one list is rounded by AMVR or the like, the pixel precision of the BVP candidates (or merge candidates) in the other lists may also be rounded similarly (to the same pixel precision) before constructing the BVP candidate list (or merge candidate list).

[0160] As another example, the BV derivation unit 205A may use two or more BVP candidate lists (or merge candidate lists) when deriving BV, and if the pixel precision of the BVP candidates (or merge candidates) in at least one list is rounded by AMVR or the like, it may construct the BVP candidate list (or merge candidate list) without rounding the pixel precision of the BVP candidates (or merge candidates) in the other lists.

[0161] For example, AMVR is a technique that reduces the code amount of the BVD by coarsening the pixel precision of the BVD required for the BV derivation of the IBC. Therefore, when IBC and AMVR are applied together, it is natural that the pixel precision of the BVP, and consequently the BV, derived by the IBC BVP derivation method in the aforementioned IBC BVP and IBC BVP / Merge, is rounded to the pixel precision of the BVD.

[0162] On the other hand, the pixel precision of the BVP (or merge candidate) derived by the BV derivation method for IBC merge in IBC BVP / merge, and consequently the BV, may or may not be rounded to the pixel precision of the BVD.

[0163] Therefore, with respect to IBC BVP / merge, the BV derivation unit 205A may determine whether to round the pixel precision of each BVP candidate that can be registered in the IBC BVP / merge BVP candidate list before using it, when AMVR or the like is applied to the block to be decoded, or it may determine whether to use the pixel precision of the BVP candidate (or merge candidate) that can be registered in the merge candidate list without rounding it.

[0164] Furthermore, the BV derivation unit 205A may rearrange the registration order of BVP candidates in the BVP candidate list in a predetermined manner.

[0165] Specifically, the BV derivation unit 205A uses neighboring pixels of the block to be decoded as a template to evaluate the similarity of each BVP candidate's BV to neighboring pixels of the reference block it refers to (which are the same size as the template of the block to be decoded), and then sorts the BVP candidates in the BVP candidate list in order of their similarity.

[0166] Here, the BV derivation unit 205A may evaluate the similarity of such templates using the sum of squared differences (SSE) or the sum of absolute differences (SAD), etc.

[0167] Alternatively, the BV derivation unit 205A can use the similarity between the blocks referenced by the BV to sort the BVP candidates in the BVP candidate list.

[0168] The BV derivation unit 205A can utilize the Sum of Absolute Transformed Difference (SATD) or the like as such similarities.

[0169] When the BV derivation unit 205A uses multiple lists such as the L0 list and the L1 list, it may evaluate the similarity after composing the neighborhoods of the blocks referenced by both lists.

[0170] Furthermore, the order in which BVs are registered in the BVP candidate list can be sorted to include all available BVP candidates or limited to only a portion of them.

[0171] The BV derivation unit 205A can derive a highly accurate BVP from the BVP candidate list by registering BVP candidates in the order of similarity described above. As a result, it is expected that the accuracy of prediction within the second frame will be improved, and consequently, the coding efficiency will be improved.

[0172] <Correction> The BV derivation unit 205A may correct the reference position of the BVP derived by the aforementioned IBC BVP, the BVP(BV) derived by IBC merge, or the BVP(BV) derived by IBC BVP / merge in a predetermined manner.

[0173] The prescribed methods can be broadly divided into two categories: one in which BVD is added to the derived BVP(BV) as a correction block vector, and another in which a new reference position is searched for starting from BVP(BV) using a predetermined search method described later, without adding BVD.

[0174] Regarding the former method of correcting BV (hereinafter referred to as the BVD addition method), the BV derivation unit 205A, due to its nature of adding a new BVD, may not be applied to IBC BVP, but only to BVP (BV) associated with the IBC merge index of IBC merge or IBC BVP / merge.

[0175] Regarding the latter BV correction method (hereinafter referred to as the BV search method), since the BV derivation unit 205A does not add BVD, it can be applied to IBC BVP, IBC merge, or IBC BVP / merge.

[0176] As an example of a BVD addition method, the BV derivation unit 205A may apply the merge mode with block vector difference (MBVD) disclosed in Non-Patent Literature 2.

[0177] Specifically, when MBVD is applied, the BV derivation unit 205A derives (specifies) the value of the correction block vector based on the control information.

[0178] Furthermore, when MBVD is applied, the BV derivation unit 205A may set constraints on the possible values ​​(reference positions) of the correction block vector in order to suppress the sign amount of the correction block vector.

[0179] For example, when MBVD is applied, the BV derivation unit 205A may limit the distance and direction of the possible values ​​(reference positions) of the correction block vector to discrete values. For example, when MBVD is applied, the BV derivation unit 205A may limit the distance of the possible values ​​(reference positions) of the correction block vector to a power of 2, and / or limit the possible values ​​(reference positions) of the correction block vector to the up, down, left, and right directions.

[0180] Furthermore, the decoding unit 201 and the BV derivation unit 205A may control whether to include candidates for correction block vectors with fractional pixel precision in the MBVD (or to limit them to integer pixels only) using control information on a sequence-by-sequence and / or picture-by-picture and / or slice-by-slice basis.

[0181] Alternatively, the BV derivation unit 205A may set constraints on the value (reference position) of the correction block vector according to the number of block vectors in the block to be decoded.

[0182] For example, if the block to be decoded has two or more block vectors, the BV derivation unit 205A may limit the value (reference position) of the correction block vector to integer pixel precision only.

[0183] As another example, the BV derivation unit 205A may be controlled by control information that determines whether to enable the derivation of multiple BVs for the IBC on a sequence-by-sequence and / or picture-by-picture and / or slice-by-slice basis.

[0184] As an example of a BVD addition method, the BV derivation unit 205A may apply template matching as disclosed in Non-Patent Document 2.

[0185] Template Matching, similar to the BVP candidate rearrangement method described above, uses neighboring pixels of the block to be decoded as a template. Starting from the derived BVP (BV), it searches for the reference position of a new BVP (BV) while checking its similarity to neighboring pixels of the reference block.

[0186] The BV derivation unit 205A may limit the search range to the same size as in Non-Patent Document 2 (for example, a range of 8 pixels in the up, down, left, and right directions with BVP (BV) as the origin).

[0187] Furthermore, the BV derivation unit 205A may adaptively limit the pixel accuracy during the search, taking into consideration the pixel accuracy selected by AMVR or the like for the IBC mentioned above (for example, if 1 pixel accuracy is selected by AMVR or the like, the search pixel accuracy by Template Matching may also be adjusted to 1 pixel accuracy).

[0188] As an example of another BVD addition method, if there are two or more derived BVs, the BV derivation unit 205A may apply a BV search method such as Decoder-side Motion Vector Refinement (DMVR) described in Non-Patent Literature 1, i.e., Decoder-side Block Vector Refinement (DBVR).

[0189] Specifically, the BV derivation unit 205A applies a pre-set group of candidate correction block vectors to two or more derived BVPs (BVs) and corrects the BVs (BVPs) by searching for correction block vectors with high similarity between multiple reference blocks.

[0190] Here, the BV derivation unit 205A can utilize the aforementioned sum of squared differences (SSE), sum of absolute differences (SAD), and sum of absolute differences (SATD) for calculating the similarity of DBVR. Furthermore, since DBVR assumes a search method using two or more BVs, it is not applicable when only one BV is derived.

[0191] <Save> The BV derivation unit 205A stores one or more BVs and reference images derived for a target block for decoding in the memory of the image decoding device 200 in predetermined pixel units so that subsequent target blocks for decoding can refer to them.

[0192] The BV derivation unit 205A stores the derived BV and reference image for the decryption target block in memory. This allows the IBC to be applied to other decryption target blocks that are decrypted after the decryption target block using the BV and reference image of the decryption target block. As a result, the IBC application rate increases, and the encoding efficiency can be improved.

[0193] The BV derivation unit 205A may store one or more BVs derived for the decryption target block and a reference image in memory as a predetermined pixel unit, for example, as in Non-Patent Document 1, in 4x4 pixel subblocks obtained by subdividing the decryption target block into 4x4 pixel units.

[0194] Alternatively, the BV derivation unit 205A may store in memory one or more BVs and reference images derived for the decryption target block in pixel units smaller or larger than a 4x4 pixel subblock (2 or a power of 4).

[0195] The BV derivation unit 205A may store one or more BVs derived for the block to be decoded and a reference image in memory, depending on the number of block vector candidates in the list.

[0196] For example, if the BV derivation unit 205A has derived only one BV, it stores that BV and the corresponding reference image in the L0 list used for normal interframe prediction.

[0197] Furthermore, if there are two derived BVs, the BV derivation unit 205A stores one of each BV and corresponding reference image in the L0 list and L1 list, respectively, which are used for normal inter-frame prediction.

[0198] Furthermore, if the derived BV is three or more, the BV derivation unit 205A adds an Ln list in addition to the L0 list and L1 list used for normal interframe prediction, and stores one such BV and corresponding reference image in each list.

[0199] When the BV derivation unit 205A references the BV stored in memory as described above as a BVP candidate in another block to be decoded, it expands it into the BVP candidate list as an available BVP candidate, as follows.

[0200] The BV derivation unit 205A, if there is only one BV stored in memory, expands the BV into a BVP candidate as one list number (one BVP candidate).

[0201] On the other hand, if there are two or more BVs stored in memory, the BV derivation unit 205A expands the BVs as two or more list numbers (two or more BVP candidates).

[0202] Furthermore, the BV derivation unit 205A may store one or more BVs and reference images derived for the decryption target block in a separate memory (hereinafter referred to as "history") using a FIFO (First In First Out) method for referencing the history BVP or history BV merge described above, which reference previously used BVs.

[0203] Here, if the BV derivation unit 205A has derived only one BV, it saves that BV and the corresponding reference image in the history as is. However, if the same BV already exists in the history, the BV derivation unit 205A does not save that BV.

[0204] On the other hand, if the BV derivation unit 205A has derived two or more BVs, it saves those two or more BVs and their corresponding reference images in the history. However, just as with the case where there is only one BV, the BV derivation unit 205A does not register a BV if the same BV already exists in the history.

[0205] Furthermore, if the BV stored in the memory or history as described above has been corrected as described above, the BV derivation unit 205A may save the corrected BV or save the uncorrected BV.

[0206] In such cases, the BV derivation unit 205A can omit the symbols indicating the pre- and post-correction values ​​by predetermining in advance whether to register the corrected BV or the pre-correction BV.

[0207] Conversely, the BV derivation unit 205A can improve coding efficiency by adaptively deciding whether to register the corrected BV or the uncorrected BV.

[0208] <Synthesis> The second frame prediction pixel generation unit 205B is configured to generate a second prediction pixel by combining the prediction pixels of the decoding target block with the pixels of the reference block (reference pixels) referenced by one or more BVs.

[0209] The second frame prediction pixel generation unit 205B, when there is only one BV, may use the reference pixels of the reference block as they are, or it may correct the pixels of the reference block, as the prediction pixels of the block to be decoded.

[0210] For example, the second frame prediction pixel generation unit 205B may perform such correction using a polynomial that utilizes the aforementioned reference pixels.

[0211] Specifically, the second frame prediction pixel generation unit 205B may be configured to generate a correction value P(x,y) as a prediction pixel at coordinate (x,y) within the block to be decoded, using a polynomial (see the following equation) defined using the above-mentioned reference pixel Q(x,y) and weight coefficients C1 and C2.

[0212] P(x,y) = C1 × Q(x,y) + C2 Alternatively, the second frame prediction pixel generation unit 205B may define the above polynomial using multiple reference pixels Q1, Q2, ... Qn in a block referenced by one BV for each prediction pixel.

[0213] The following equation is an example of defining a polynomial in a 3x3 region centered at coordinates (x,y).

[0214] P(x,y)=C1×Q(x-1,y-1)+C2×Q(x,y-1)+C3×Q(x+1,y-1)+C4×Q(x-1,y)+C5× Q(x,y)+C6×Q(x+1,y)+C7×Q(x-1,y+1)+C8×Q(x,y+1)+C9×Q(x+1,y+1)+C10 Figure 10 shows an example with 10 weight coefficients. However, for simplicity of notation, Q(x+i,y+j) is written as Q i,j It is represented as follows.

[0215] When the second frame prediction pixel generation unit 205B defines a polynomial using multiple reference pixels in this manner, it is preferable to use nearby pixels.

[0216] Alternatively, the second frame prediction pixel generation unit 205B may define multiple polynomials based on the distribution of the reference pixels described above.

[0217] The following equation is an example of defining a polynomial with two types of coefficients at a threshold Th when the histogram of the reference pixels is bimodal.

[0218] P(x,y)=C1×Q(x,y)+C2 P(x,y)>Th P(x,y)=C3×Q(x,y)+C4 P(x,y)<=Th Here, the second frame prediction pixel generation unit 205B may set the threshold to a value that separates the two peaks. Alternatively, the second frame prediction pixel generation unit 205B may simplify the threshold and use the average value.

[0219] The second frame prediction pixel generation unit 205B can also apply a polynomial with more types of coefficients if the distribution of the reference pixels described above is multimodal.

[0220] The second frame prediction pixel generation unit 205B may be configured to generate a second prediction pixel by weighting the pixels of the two reference blocks referenced by the two BVs (reference pixels) of the BVs, using predetermined weight values, if the block to be decoded has two BVs.

[0221] For example, the second frame prediction pixel generation unit 205B may be configured to generate a second prediction pixel by simply averaging in a 1:1 ratio the reference pixels referenced by two or more BVs in the block to be decoded.

[0222] In other words, the second frame prediction pixel generation unit 205B may fix the predetermined weight values ​​mentioned above at a 1:1 ratio, or it may set them adaptively.

[0223] When the second frame prediction pixel generation unit 205B adaptively sets the predetermined weight values ​​mentioned above, it can set weight values ​​that are not 1:1 based on the length of the BV and an evaluation of the similarity between the decoded block and the neighboring pixels (templates) of each reference block.

[0224] Here, a simple 1:1 average is applied to predetermined weight values, which reduces the processing load. On the other hand, adaptively setting predetermined weight values ​​improves encoding efficiency.

[0225] Furthermore, among multiple BVs, reference blocks with shorter BV lengths are considered to have smaller errors with the blocks to be decoded. Therefore, by increasing the weight of reference blocks with shorter BV lengths, the prediction accuracy when generating predicted pixels based on two or more BVs can be improved.

[0226] Furthermore, in the template similarity evaluation, reference blocks with high similarity (low template cost) are considered to have a small error with the block to be decoded. Therefore, by increasing the weight of reference blocks with small BV lengths, the prediction accuracy when generating predicted pixels based on two or more BVs can be improved.

[0227] As another example, the second frame prediction pixel generation unit 205B may perform a weighted average of the reference pixels of the reference blocks referenced by the two BVs, according to control information (hereinafter referred to as the BCW index) that specifies the weight values ​​used in the weighted average, as disclosed in Non-Patent Document 1 and Non-Patent Document 2, such as the Bidirectional Coding Block Unit Weighted Average (BCW: Bidirectional with CU based Weighting).

[0228] The decoding unit 201 may decode the BCW index for dual prediction IBC BVP (or IBC BVP / Merge), or it may not decode the BCW index for dual prediction IBC Merge (or IBC BVP / Merge), but instead inherit the BCW index held by the merge candidates in the merge candidate list.

[0229] Furthermore, the second frame prediction pixel generation unit 205B may correct the BCW weight values ​​corresponding to the inherited BCW index values ​​by similarity evaluation using the templates for the decoded target block and reference block described above, as described in Non-Patent Document 2.

[0230] Alternatively, the second frame prediction pixel generation unit 205B may be configured to generate the second prediction pixel using a polynomial defined with respect to multiple reference pixels.

[0231] Specifically, the second frame prediction pixel generation unit 205B may be configured to generate a correction value P(x,y) as a prediction pixel at coordinate (x,y) within the decoding target block using a polynomial (see the following equation) defined using a plurality of different reference pixels Q(x,y), R(x,y) and weight coefficients C1, C2, C3.

[0232] P(x,y)=C1×Q(x,y)+C2×R(x,y)+C3 According to the above configuration, simplifying the polynomial reduces the computational load. Conversely, making the polynomial more complex improves prediction accuracy.

[0233] The second frame prediction pixel generation unit 205B may be configured to define and select from multiple polynomials as described above. With such a configuration, an appropriate polynomial can be used, resulting in improved coding efficiency.

[0234] The second frame prediction pixel generation unit 205B may be configured to derive the coefficients (weight coefficients) of the above-mentioned polynomial from neighboring pixels of the block to be decoded and neighboring pixels of the reference block.

[0235] Specifically, as shown in Figure 11, the second frame prediction pixel generation unit 205B derives a weight coefficient C such that the neighboring pixels P' of the decoding target block and the neighboring pixels Q' of the reference block match after correction (see X1 in Figure 11).

[0236] For example, the second frame prediction pixel generation unit 205B defines an error function E shown in the following equation and derives a weight coefficient C that minimizes E.

[0237] E=Σ(P'(x,y)-(C1×Q'(x-1,y-1)+C2×Q'(x,y-1)+C3×Q'(x+1,y-1)+C4×Q'(x-1,y)+C 5×Q'(x,y)+C6×Q'(x+1,y)+C7×Q'(x-1,y+1)+C8×Q'(x,y+1)+C9×Q'(x+1,y+1)+C10)) 2 The second frame prediction pixel generation unit 205B can utilize the least squares method or the like to derive such weight coefficients.

[0238] Alternatively, the second frame prediction pixel generation unit 205B can derive these weight values ​​using robust estimation methods such as principal component regression or partial least squares regression to reduce the influence of outliers.

[0239] The second frame prediction pixel generation unit 205B applies the derived weight coefficient C to the neighboring pixel Q of the reference block to obtain a correction value P (X2 in Figure 11), which is then used as the prediction pixel (second prediction pixel) of the block to be decoded (X3 in Figure 11).

[0240] With this configuration, compared to the case where such weight coefficients are stored as control information, the weight coefficients can be derived from neighboring pixels, eliminating the need to decode them, thus improving coding efficiency.

[0241] Furthermore, applying weight coefficients to multiple reference pixels is equivalent to adaptively deriving a more precise fractional BV, thus improving coding efficiency by reducing the code size of the BV.

[0242] Here, the second frame prediction pixel generation unit 205B may be configured to use neighboring pixels P' and Q' within a certain range to derive the weight coefficients (polynomial coefficients) described above.

[0243] For example, as shown in Figure 12(a), the second frame prediction pixel generation unit 205B may be configured to use neighboring pixels within 4 pixel lines from the block to be decoded in order to derive the weight coefficients (polynomial coefficients) described above.

[0244] Conversely, the second frame prediction pixel generation unit 205B can also limit the neighboring pixels used to derive the weight coefficients described above.

[0245] For example, the second frame prediction pixel generation unit 205B may derive the weight coefficient using only neighboring pixels in the region located above the block to be decoded, as shown in Figure 12(b), or it may derive the weight coefficient using only neighboring pixels in the region located to the left of the block to be decoded, as shown in Figure 12(c).

[0246] Furthermore, the second frame prediction pixel generation unit 205B may be configured to allow selection of multiple ranges for specifying the aforementioned neighboring pixels. With such a configuration, appropriate weight coefficients can be derived, resulting in improved coding efficiency.

[0247] (Basic concepts of IBC OBMC) The second frame prediction pixel generation unit 205B may perform a correction to the reference pixels in the reference blocks of the blocks to be decoded by calculating a weighted average of the reference pixels in the reference blocks of the blocks to be decoded and the neighboring pixels in the reference blocks of adjacent blocks, rather than the reference pixels of the blocks to be decoded themselves.

[0248] This provides the effect of smoothly connecting the block boundaries between predicted blocks generated by IBC and adjacent blocks, similar to the Overlapped Block Motion Compensation (OBMC) for interframe prediction means disclosed in Non-Patent Document 2.

[0249] Figure 13 shows the case where the adjacent blocks to be decrypted have a BV (block number).

[0250] As shown in Figure 13, firstly, the second frame prediction pixel generation unit 205B acquires neighboring pixels (hereinafter referred to as neighboring reference neighbor pixels) that correspond to the relative position of the decoded block in the adjacent reference block referenced by the BV of the adjacent block.

[0251] In the example shown in Figure 13, the adjacent block is located to the left of the block to be decoded, so the second frame prediction pixel generation unit 205B acquires the adjacent reference neighbor pixels to the right of the adjacent reference block.

[0252] The range of neighboring pixels for adjacent reference may be fixed or variable.

[0253] For example, the second frame prediction pixel generation unit 205B may change the range of adjacent reference neighbor pixels according to the block size and aspect ratio.

[0254] Secondly, the second frame prediction pixel generation unit 205B calculates a weighted average of adjacent reference neighbor pixels and reference pixels of the block to be decoded. Hereafter, this process will be referred to as "IBC OBMC".

[0255] (IBC OBMC application determination and application processing unit) The second frame prediction pixel generation unit 205B may determine whether or not to apply IBC OBMC on a per-decoded block basis, or on a per-block basis smaller than the decoded block within the decoded block (hereinafter referred to as a subblock), or it may determine in two stages: on a per-decoded block basis and on a per-subblock basis.

[0256] As an example of determination on a subblock basis, the second frame prediction pixel generation unit 205B may determine whether or not IBC OBMC is applicable for each 4x4 pixel subblock facing the block boundary between the left and upper parts of the block to be decoded, as disclosed in Non-Patent Document 2.

[0257] In this way, by determining whether or not to apply IBC OBMC on a per-block basis, the increase in the processing load required for the determination can be suppressed.

[0258] On the other hand, by determining whether or not IBC OBMC is applicable on a subblock basis, when IBC is applied to the block to be decrypted, IBC OBMC can be applied to the parts of that block where IBC OBMC is effective, thus improving prediction accuracy.

[0259] Furthermore, the second frame prediction pixel generation unit 205B may apply IBC OBMC in units of smaller blocks (hereinafter referred to as subblocks) within the decoded block, based on the determination result of whether or not IBC OBMC is applied.

[0260] (Applicable Conditions for IBC OBMC) When a predetermined condition is satisfied in units of a decoding target block and / or a sub-block, the in-frame prediction pixel generation unit 205B in the second frame may determine to apply IBC OBMC, and when the predetermined condition is not satisfied, it may determine not to apply IBC OBMC.

[0261] The in-frame prediction pixel generation unit 205B in the second frame may configure such a predetermined condition with at least one of the following conditions. 1. Control information (IBC OBMC flag) enabling the application of IBC OBMC in units of sequence and / or picture and / or slice is valid. 2. Control information (IBC OBMC flag) enabling the application of IBC OBMC in units of a decoding target block is valid. 3. The area (number of pixels) of the decoding target block is 32 pixels or more. ※ Here, for condition 3, it may be 16 pixels, 64 pixels, or 128 pixels instead of 32 pixels. 4. An adjacent block adjacent to the decoding target block (or sub-block) has a BV or a motion vector. 5. The BV of the decoding target block (or sub-block) is different from the BV of the adjacent block or the motion vector of the adjacent block. 6. In the decoding target block, the local luminance compensation disclosed in Non-Patent Document 2 is not applied (invalid). 7. The maximum error between the reference pixel based on the BV of the decoding target block (or sub-block) and the pixel value of the adjacent reference neighboring pixel based on the BV of the adjacent block or the motion vector is equal to or less than a predetermined threshold. 8. In the gradient histogram of the reference pixels of the decoding target block, there are many main gradients. 9. The decoding target block (or sub-block) has one BV. 10. The adjacent block of the decoding target block (or sub-block) has one BV or one motion vector. The following describes a modification example of the above-mentioned predetermined condition.

[0262] The second frame prediction pixel generation unit 205B may, with respect to condition 5 described above, determine that the BV of the decoded block (or subblock) and the BV or motion vector of the adjacent block are different if the reference frame referenced by the BV of the decoded block (or subblock) and the reference frame referenced by the BV or motion vector of the adjacent block are different.

[0263] For conditions 6 and 7 described above, the second frame prediction pixel generation unit 205B may use prediction pixels obtained by applying an interpolation filter to the reference pixels, rather than using the reference pixels themselves.

[0264] Furthermore, the second frame prediction pixel generation unit 205B can set different application restrictions for IBC OBMC depending on the number of BVs derived for the decoded block (or subblock) or adjacent block. Specifically, these are as follows:

[0265] The second frame prediction pixel generation unit 205B may add the condition that there is one BV of the block (or subblock) to be decoded to the predetermined conditions described above.

[0266] The second frame prediction pixel generation unit 205B can suppress the increase in memory bandwidth required to acquire adjacent reference neighbor pixels when applying IBC OBMC by restricting the application of IBC OBMC only when there is one BV of the block (or subblock) to be decoded.

[0267] The second frame prediction pixel generation unit 205B may add to the above-mentioned predetermined conditions the condition that there is one BV or motion vector of an adjacent block to the block (or subblock) to be decoded.

[0268] The second frame prediction pixel generation unit 205B can suppress the increase in memory bandwidth required to acquire adjacent reference neighbor pixels when applying IBC OBMC by restricting the application of IBC OBMC only when there is one BV or motion vector of an adjacent block of the block (or subblock) to be decoded.

[0269] The second frame prediction pixel generation unit 205B may, if there are two or more BVs or motion vectors of adjacent blocks to the block (or subblock) to be decoded, select one BV or motion vector by comparing the magnitude or template cost of such adjacent blocks' BVs or motion vectors.

[0270] For example, the second frame prediction pixel generation unit 205B may select the adjacent block's BV or motion vector that has the smallest magnitude or template cost.

[0271] The following aims (expected effects) are achieved by setting the application conditions for IBC OBMC at the block and / or subblock level for decryption, as described above.

[0272] For example, computer-generated images and screen images often have sharp edges in the original image, making them prone to discontinuous block boundaries. Therefore, in such images, not applying IBC OBMC can help suppress prediction errors near block boundaries.

[0273] Furthermore, the second frame prediction pixel generation unit 205B can apply IBC OBMC only in the case of specific slices or specific block sizes.

[0274] Thus, by limiting the application of IBC OBMC depending on the slice and / or block size, it is possible to reduce the amount of encoding required.

[0275] For example, IBC applies restrictions by slices, while IntraTMP does not apply restrictions by slices.

[0276] Since the search processing amount of BV in IntraTMP is lighter and the prediction accuracy is lower compared to IBC, an effect of improving the coding efficiency can be obtained by increasing the application target.

[0277] (Weighted average of IBC OBMC) Alternatively, the second intra-frame predicted pixel generation unit 205B may apply the correction used in the correction of the above-mentioned reference pixel as the above-mentioned neighboring pixel.

[0278] The second intra-frame predicted pixel generation unit 205B derives the weight coefficient from all or part of the pixels of the adjacent block and the pixels of the adjacent reference block.

[0279] That is, as shown in FIG. 14, the second intra-frame predicted pixel generation unit 205B designates the pixels of the adjacent block as P', the pixels of the adjacent reference block as Q', and after deriving the weight coefficient C (Y1 in FIG. 14), it applies it to the neighboring pixel Q of the adjacent reference block to obtain the correction value P (Y2 in FIG. 14), and calculates the weighted average with the predicted pixel of the block to be decoded (Y3 in FIG. 14).

[0280] According to such a configuration, in any case, the prediction error is reduced and the effect of improving the coding efficiency is obtained by reflecting the neighboring pixels of the adjacent reference block in the predicted pixels of the block to be decoded.

[0281] Note that when the number of BVs in the block to be decoded and the reference block is different, the second intra-frame predicted pixel generation unit 205B adjusts the number of BVs of the one with more BVs to match the number of BVs of the one with fewer BVs (reduces the number of BVs of each of the block to be decoded and the adjacent block to the minimum number of BVs).

[0282] Similarly, the second frame prediction pixel generation unit 205B adjusts the pixel precision of the BV to match the pixel precision of the BV with finer pixel precision to that of the BV with coarser pixel precision if the BV of the block to be decoded and the reference block have different pixel precisions (rounding the pixel precision of each BV in the block to be decoded and adjacent blocks to the maximum pixel precision).

[0283] (IBC GPM) The second frame prediction pixel generation unit 205B may, when IBC GPM is applied to the block to be decoded, weight the reference pixels (reference pixels) of one or more BVs for each divided region divided into two by the IBC GPM dividing line, according to their distance from the IBC GPM dividing line.

[0284] As an example of modification, the second frame prediction pixel generation unit 205B may either fix the number of pixels in the region where such weighted averaging is performed, i.e., the number of pixels in each division region direction from the division line of the IBC GPM, or it may set it adaptively.

[0285] The second frame prediction pixel generation unit 205B may be fixedly set to values ​​such as 0 pixels, 1 / 4 pixels, 1 / 2 pixels, 1 pixel, 2 pixels, 4 pixels, or 8 pixels.

[0286] For example, for screen images, using a small number of pixels, such as 0 or 1 / 4 pixels, for the weighted average region width of IBC GPM makes it easier to apply the IBC GPM division lines. This allows the pixel values ​​at the edge boundaries, which are unique to screen images, to be maintained without excessive smoothing, thus reducing prediction errors.

[0287] Furthermore, as a method for adaptively setting the second frame prediction pixel generation unit 205B, the GPM adaptive blending method disclosed in Non-Patent Document 2 can be applied.

[0288] For example, for natural images, it is easier to reduce prediction errors near the division lines of the IBC GPM by adaptively setting the number of pixels in the weighted average region width of the IBC GPM based on control information and block size, as in the adaptive blending method of GPM disclosed in Non-Patent Document 2.

[0289] <Conversion> The inverse transform unit 203 may adaptively select one transformation basis from a plurality of different transformation basis sets for the transformation coefficients of the decoded block to which IBC (or IntraTMP) is applied, and apply the inverse transform process.

[0290] Here, as an example of multiple different transformation bases, the inverse transformation unit 203 may use the Multiple Transform Selection (MTS) disclosed in Non-Patent Document 1.

[0291] Furthermore, Non-Patent Document 1 discloses MTS for intra-frame prediction and MTS for inter-frame prediction.

[0292] The inverse transform unit 203 may apply MTS for intra-frame prediction as disclosed in Non-Patent Literature 1, or it may apply MTS for inter-frame prediction as disclosed in Non-Patent Literature 1.

[0293] The inverse transform unit 203 may identify and apply a transform basis from among the candidate transform basis in the MTS based on the value of control information used to identify the candidate transform basis of the MTS that the decoding unit 201 has decoded or estimated.

[0294] As an example of modification, the inverse transform unit 203 may apply a two-stage inverse transform process using different or the same transform basis to the transform coefficients of the decoded block to which IBC (or IntraTMP) is applied.

[0295] Here, as an example of a two-stage inverse transform process using different transform bases, the inverse transform unit 203 may use the Low-Frequency Non-Separable Transform (LFNST) disclosed in Non-Patent Literature 1.

[0296] The decoding unit 201 selects one transformation basis from among several different transformation basis sets and decodes control information to determine whether or not to perform an inverse transformation on the transformation coefficients. The inverse transformation unit 203 may then identify and apply a transformation basis from among the candidate transformation basis sets in the LFNST based on the value of the control information used to identify the candidate LFNST transformation basis set that the decoding unit 201 has decoded or estimated.

[0297] The reasons for applying MTS or LFNST to decryption blocks to which IBC (or IntraTMP) is applied are as follows:

[0298] In IBC (or IntraTMP), due to the signal processing properties described above, the blocks to which it is applied often have complex image characteristics such as edges and stripes. Therefore, the conversion coefficients derived after transforming the prediction error of the decoding target block to which IBC (or IntraTMP) is applied tend to be distributed in high-frequency components, or have a bias towards horizontal, vertical, or diagonal components.

[0299] Applying an effective inverse transform basis from multiple different transform basis sets to such a distribution of transform coefficients, or applying a two-stage inverse transform using different or the same transform basis, is expected to reduce redundancy between transform coefficients (and consequently, spatial redundancy of prediction errors), and as a result, improve coding efficiency.

[0300] <Color difference> In decoding (or encoding) video, in order to reduce the amount of information, the RGB signals that make up the video may be converted into a luminance signal (Y signal) and a chrominance signal (UV signal or CbCr signal) before decoding (or encoding).

[0301] Furthermore, to further reduce the amount of information, the number of pixels in the color difference signal may be reduced (downsampled) by a certain interval (for example, by half horizontally and / or vertically) relative to the number of pixels in the luminance signal.

[0302] Furthermore, Non-Patent Document 1 discloses techniques for making the partition structure of decoding (or encoding) tree blocks within the same decoding (or encoding) tree block identical (single-tree structure) and techniques for changing it (dual-tree structure) in images of luminance signals and images of chrominance signals.

[0303] In the above cases, for example, if the image of the chrominance signal is downsampled relative to the image of the luminance signal and the decoding (or encoding) tree block containing the block to be decoded has a single-tree structure, the BV derivation unit 205A may derive the BV for the block to be decoded of the chrominance signal based on the magnitude (horizontal and vertical components) of one or more BVs derived for the block to be decoded of the luminance signal and the downsampling ratio of the luminance signal and the chrominance signal.

[0304] More specifically, the BV derivation unit 205A may reduce the size (horizontal component and vertical component) of one or more BVs derived for the decoding target block of the luminance signal according to the downsampling ratio of the luminance signal and the chrominance signal.

[0305] Furthermore, in the cases described above, for example, if the chrominance signal image is downsampled relative to the luminance signal image and the decoding (or encoding) tree block containing the decoding target block has a dual-tree structure, the BV derivation unit 205A does not need to derive the BV for the decoding target block of the chrominance signal.

[0306] <Signaling> The following describes the control information (syntax) that the decoding unit 201 decodes in the mode that retains BV (hereinafter referred to as BV mode).

[0307] The code information input to the decoding unit 201 may include a sequence parameter set (SPS) that summarizes the control information (syntax) for each sequence to be decoded.

[0308] Furthermore, such coded information may include a picture parameter set (PPS) or picture header (PH) that summarizes the control information for each picture to be decoded.

[0309] Alternatively, such coded information may include a slice header (SH) that summarizes the control information for each slice to be decoded.

[0310] The decoding control method for various IBC-related flags in the decoding unit 201 at the sequence, picture, or slice level, and the definitions (meanings) of these flags will be explained below using Figures 15 and 16.

[0311] Figure 15 shows a method for controlling the decoding of predetermined flags related to IBC on a sequence-by-sequence basis. The decoding unit 201 operates specifically as follows.

[0312] As shown in Figure 15, in step S100, the decoding unit 201 determines whether sps_ibc_enabled_flag (second syntax) is 1 or not. If it is 1, the operation proceeds to step S101; otherwise, the operation proceeds to step S102.

[0313] Here, sps_ibc_enabled_flag is a flag that controls (specifies) whether IBC can be applied or not on a sequence-by-sequence basis. The decoding unit 201 determines that IBC can be applied if sps_ibc_enabled_flag is 1, and determines that IBC cannot be applied if sps_ibc_enabled_flag is 0.

[0314] The decoding unit 201 decodes a predetermined flag in step S101, and terminates the process in step S102 without decoding the predetermined flag.

[0315] Here, the decoding unit 201 may decode various IBC-related flags as such predetermined flags, as shown in Figure 16. Specifically, these are as follows.

[0316] The sps_biibc_enabled_flag shown in Figure 16 is a flag (first syntax) that controls (specifies) whether or not bipredictive IBC can be applied on a sequence-by-sequence basis. The decoding unit 201 determines that bipredictive IBC can be applied if sps_biibc_enabled_flag is 1, and determines that bipredictive IBC cannot be applied if sps_biibc_enabled_flag is 0.

[0317] The decoding unit 201 may decode sps_multiibc_enabled_flag as an example of a modification of sps_biibc_enabled_flag.

[0318] sps_multiibc_enabled_flag is a flag that controls (specifies) whether or not multiple prediction IBC can be applied on a sequence-by-sequence basis. The decoding unit 201 determines that multiple prediction IBC can be applied if sps_multiibc_enabled_flag is 1, and determines that multiple prediction IBC cannot be applied if sps_multiibc_enabled_flag is 0.

[0319] The sps_ibcmbvd_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether IBC MBVD can be applied on a sequence-by-sequence basis. The decoding unit 201 determines that IBC MBVD can be applied if sps_ibcmbvd_enabled_flag is 1, and determines that IBC MBVD cannot be applied if sps_ibcmbvd_enabled_flag is 0.

[0320] The sps_six_minus_max_num_ibc_merge_cand shown in Figure 16 is control information that sets the maximum value of the candidate list for the aforementioned IBC merge (or IBC BVP) on a sequence-by-sequence basis.

[0321] For example, if the maximum configurable value of the candidate list for IBC merge (or IBC BVP) designed by the image decoding device 200 is 6 (corresponding to "six" in sps_six_minus_max_num_ibc_merge_cand), this maximum value can be changed using such control information.

[0322] Specifically, the decoding unit 201 may control (change the setting of) the maximum value of the candidate list for IBC merge (or IBC BVP) of the image decoding device 200 on a sequence-by-sequence basis, as follows:

[0323] if(sps_ibc_enabled_flag) MaxNumIbcMergeCand=6-sps_six_minus_max_num_ibc_merge_cand else MaxNumIbcMergeCand=0 Here, MaxNumIbcMergeCand is an internal parameter within the decoder that represents the maximum value of the block vector candidate list used to derive one or more block vectors to be used for IBC merging (or IBC BVP) set on a sequence (or picture or slice or decryption target block) basis.

[0324] The sps_ibctm_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether or not IBC TM (IBC TM) can be applied to IBC on a sequence-by-sequence basis. The decoding unit 201 specifies that IBC TM can be applied if sps_ibctm_enabled_flag is 1, and specifies that IBC TM cannot be applied if sps_ibctm_enabled_flag is 0.

[0325] The sps_ibcdbvr_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether DBVR (IBC DBVR) can be applied to IBC on a sequence-by-sequence basis. The decoding unit 201 determines that IBC DBVR can be applied if sps_ibcdbvr_enabled_flag is 1, and determines that IBC DBVR cannot be applied if sps_ibcdbvr_enabled_flag is 0.

[0326] The sps_ibcciip_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether or not Combined Intra Inter Prediction (CIIP) (IBC CIIP) for IBCs, as disclosed in Non-Patent Literature 2 on a sequence-by-sequence basis, is applicable. The decoding unit 201 determines that IBC CIIP is applicable if sps_ibcciip_enabled_flag is 1, and determines that IBC CIIP is not applicable if sps_ibcciip_enabled_flag is 0.

[0327] The sps_ibcgpm_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether IBC GPM can be applied on a sequence-by-sequence basis. The decoding unit 201 determines that IBC GPM can be applied if sps_ibcgpm_enabled_flag is 1, and determines that IBC GPM cannot be applied if sps_ibcgpm_enabled_flag is 0.

[0328] The sps_ibcobmc_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether IBC OBMC can be applied on a sequence-by-sequence basis. The decoding unit 201 determines that OBMC for IBC (IBC OBMC) can be applied if sps_ibcobmc_enabled_flag is 1, and determines that IBC OBMC cannot be applied if sps_ibcobmc_enabled_flag is 0.

[0329] The sps_ibcflm_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether or not the application of the weight coefficients defined by the polynomial described above to the IBC (IBC FLM: IBC Filtered Linear Model) is applicable to the IBC at the sequence level. The decoding unit 201 specifies that IBC FLM is applicable if sps_ibcflm_enabled_flag is 1, and specifies that IBC FLM is not applicable if sps_ibcflm_enabled_flag is 0.

[0330] The sps_ibcmts_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether or not MTS (IBC MTS) can be applied to IBC on a sequence-by-sequence basis. The decoding unit 201 determines that IBC MTS can be applied if sps_ibcmts_enabled_flag is 1, and determines that IBC MTS cannot be applied if sps_ibcmts_enabled_flag is 0.

[0331] The sps_ibclfnst_enabled_flag shown in Figure 16 is a flag that controls (specifies) whether or not LFNST (IBC LFNST) can be applied to IBC on a sequence-by-sequence basis. The decoding unit 201 determines that IBC LFNST can be applied if sps_ibclfnst_enabled_flag is 1, and determines that IBC LFNST cannot be applied if sps_ibclfnst_enabled_flag is 0.

[0332] The decoding unit 201 may set the values ​​of the various flags mentioned above to 0 if they are not decoded.

[0333] Here, Figures 15 and 16 illustrate the decoding control method for various flags at the sequence level, but similar control may be applied at finer units, i.e., at the picture level or slice level. Furthermore, control may be applied only at these specific levels, or it may be applied in multiple stages across multiple levels.

[0334] For example, the increase in code size can be suppressed by setting it only in the upper layers, or adaptive control can be achieved by setting it in the lower layers as well and prioritizing the settings in the lower layers.

[0335] In the examples above, we described how to set the correction method on a sequence, picture, or slice basis. However, you can also directly select the method on a block basis, as described later, without setting these parameters. In this case, you can avoid the increase in header information mentioned above.

[0336] The decoding method for a flag that controls whether or not IBC (Bipredictional IBC) using two BVs at the slice level (or picture level or sequence level) in the decoding unit 201 is applicable, and the definition (meaning) of the flag, will be explained below using Figures 17 and 18.

[0337] In the following, we will explain a decoding method using a bipredictional IBC (IBC) that uses two BVs as an example. However, you may substitute this with a multipredictional IBC (IBC) that uses two or more BVs to implement a similar decoding method.

[0338] Figure 17 shows an example of a method for decoding a flag that controls (specifies) whether or not the dual-prediction IBC can be applied in the decoding unit 201.

[0339] In Figure 17, the decoding unit 201 may decode or estimate without decoding a flag that controls (specifies) whether or not the dual-prediction IBC is applicable, as described below.

[0340] As shown in Figure 17, in step S200, the decoding unit 201 determines whether sps_ibc_enabled_flag is 1 and sh_slice_type is I (i.e., whether it is an I slice).

[0341] If the answer is Yes, the operation proceeds to step S201; if the answer is No, the operation proceeds to step S202.

[0342] Here, sh_slice_type is control information (syntax) that represents the type of slice containing the block to be decrypted on a slice-by-slice basis.

[0343] The types of slices include I-slice (a slice to which either first-frame prediction or second-frame prediction can be applied), B-slice (a slice to which first-frame prediction, second-frame prediction, or inter-frame prediction can be applied), and P-slice (a slice to which first-frame prediction, second-frame prediction, or inter-frame prediction can be applied; however, only one-sided prediction is applicable for inter-frame prediction).

[0344] In step S201, the decoding unit 201 decodes sh_biibc_enabled_flag and terminates the process.

[0345] In step S202, the decoding unit 201 terminates the process without decoding sh_biibc_enabled_flag.

[0346] Here, sh_biibc_enabled_flag (third syntax) is a flag that controls whether or not bipredictive IBC can be applied on a slice-by-slice basis.

[0347] The decoding unit 201 determines that bipredictive IBC is applicable if sh_biibc_enabled_flag is 1, and determines that bipredictive IBC is not applicable if sh_biibc_enabled_flag is 0.

[0348] If sh_biibc_enabled_flag has not been decrypted, the decoding unit 201 may estimate the value of sh_biibc_enabled_flag according to the value of sh_slice_type.

[0349] Specifically, the decoding unit 201 may estimate sh_biibc_enabled_flag to be 1 if sh_slice_type is B (i.e., it is a B slice), or it may estimate sh_biibc_enabled_flag to be 0 if sh_slice_type is P (i.e., it is a P slice). The decoding unit 201 may estimate sh_biibc_enabled_flag according to the following formula.

[0350] sh_biibc_enabled_flag=(sh_slice_type==B?):1 or 0 Here, as mentioned above, the reason for decoding or estimating the flag that controls the applicability of bipredictive IBC at the slice level is as follows:

[0351] Since I-slices may have image characteristics where first-frame prediction is more effective than second-frame prediction, such as IBC or IntraTMP, controlling the applicability of dual-prediction IBC on a slice-by-slice basis allows for the application of dual-prediction IBC to slices where second-frame prediction is particularly effective, thereby improving coding efficiency. On the other hand, dual-prediction IBC cannot be applied to slices where second-frame prediction is not effective, reducing the amount of coding required for the control information necessary for dual-prediction IBC (described later), and consequently, an improvement in coding efficiency can be expected.

[0352] The reason for estimating sh_biibc_enabled_flag as 1 in the B slice without decoding it is that in the B slice, normal inter-frame prediction (including biprediction using two motion vectors) can be applied. By making biprediction IBC always applicable, the design can be standardized with normal inter-frame prediction, and an improvement in coding efficiency can be expected.

[0353] The reason for not decoding sh_biibc_enabled_flag in P-slices and instead estimating sh_biibc_enabled_flag as 0 is that, since biprediction is not applicable to normal inter-frame prediction in P-slices, similarly, biprediction IBC is also not applicable. This allows for design consistency with normal inter-frame prediction and is expected to improve coding efficiency.

[0354] Figure 18 shows an example of a modification to Figure 17. The difference between Figure 17 and Figure 16 is step S200A.

[0355] Specifically, as shown in Figure 18, in step S200A, the decoding unit 201 determines whether sps_ibc_enabled_flag is 1 and sh_slice_type is I or B (i.e., whether it is an I slice or a B slice).

[0356] If the answer is Yes, the operation proceeds to step S201; if the answer is No, the operation proceeds to step S202.

[0357] Here, in step S200A, by adding the option that sh_slice_type is B (B slice) in addition to sh_slice_type being I (I slice), it becomes possible to control the applicability of bipredictive IBC on a slice-by-slice basis, even when the slice containing the block to be decoded is a B slice, thus improving coding efficiency.

[0358] In the following sections, using Figures 19 to 24, we will explain the decoding control method for various flags related to IBC at the decoding target block (decoded block, prediction block, or transformation block) level in the decoding unit 201, as well as the definitions (meanings) of the various flags.

[0359] Figure 19 shows an example of a decoding method for the pred_mode_ibc_flag, which is a flag that controls whether or not IBC is applied to each decoded block (decoded block, prediction block, or transformation block) in the decoding unit 201.

[0360] Here, the decoding unit 201 may specify that IBC should be applied on a per-block basis (decoded block, predicted block, or transformed block) if pred_mode_ibc_flag is 1, and that IBC should not be applied if pred_mode_ibc_flag is 0.

[0361] The decoding unit 201 may estimate pred_mode_ibc_flag to be 0 if pred_mode_ibc_flag has not been decoded.

[0362] Alternatively, the decoding unit 201 may determine whether or not to apply IBC on a per-block decryption basis (decryption block, prediction block, or transformation block) basis, if pred_mode_ibc_flag is 1, and further depending on whether or not the decryption block is a single tree.

[0363] Specifically, the decoding unit 201 may determine whether to apply IBC in the case of a single tree, and whether to not apply IBC in the case of a dual tree.

[0364] As an example of a modification, the decoding unit 201 may determine to apply IBC in the case of a luminance block, even if it is a dual tree.

[0365] Furthermore, the decoding unit 201 may control whether or not the block to be decoded (decoded block, prediction block, or transformation block) is an IBC using CuPredMode, an internal parameter representing the prediction mode of the block to be decoded, similar to Non-Patent Document 1.

[0366] Specifically, the decoding unit 201 may determine that the block to be decoded (decoded block, prediction block, or transformed block) is IBC if CuPredMode is MODE_IBC, and otherwise determine that the block to be decoded (decoded block, prediction block, or transformed block) is not IBC.

[0367] The operation shown in Figure 19 is described below.

[0368] As shown in Figure 19, in step S300, the decoding unit 201 determines whether predetermined conditions are met.

[0369] If the answer is Yes, the process proceeds to step S301; if the answer is No, the process proceeds to step S302.

[0370] In step S301, the decoding unit 201 decodes pred_mode_ibc_flag and terminates the process.

[0371] In step S302, the decoding unit 201 does not decode pred_mode_ibc_flag and terminates the process.

[0372] Here, the specified conditions may include at least one of the following conditions. 1. The width or height of the block to be decrypted is not 128 pixels (the width or height of the block to be decrypted is 64 pixels or less). *Here, the number of pixels that serves as the threshold for condition 1 may be changed from 64 pixels to a power of 2, such as 128 pixels or less, 256 pixels or less, or 32 pixels or less. 2. The prediction mode of the block to be decoded is not inter-frame prediction or intra-first-frame prediction. 3. The block to be decoded is not a dual-tree color difference block. In the following sections, Figures 20 to 23 will be used to explain how to select the mode of the IBC after the decoding process shown in Figure 19 in the decoding unit 201 (the IBC BVP, IBC Merge, and IBC BVP / Merge mentioned above).

[0373] Figure 20 shows an example of how to select the IBC mode (IBC BVP, IBC Merge, IBC BVP / Merge as described above) in the decoding unit 201.

[0374] As shown in Figure 20, the decoding unit 201 may select a unique mode from the IBC modes (IBC BVP, IBC Merge, IBC BVP / Merge as described above). Specifically, these are as follows:

[0375] As shown in Figure 20, in step S400, the decoding unit 201 determines whether or not general_merge_flag is 1.

[0376] If the answer is Yes, the process proceeds to step S401; if the answer is No, the process proceeds to step S402.

[0377] Here, general_merge_flag is a flag that controls (specifies) whether or not inter-frame prediction or IBC merging is applied on a per-block basis to be decoded.

[0378] A general_merge_flag value of 1 indicates that inter-frame prediction or IBC merging is enabled, while a general_merge_flag value of 0 indicates that inter-frame prediction or IBC merging is disabled.

[0379] In step S401, the decoding unit 201 determines whether CuPredMode is MODE_IBC or not.

[0380] If the answer is Yes, the process proceeds to step S403; if the answer is No, the process proceeds to step S404.

[0381] In step S403, the decoding unit 201 transitions to the decoding process related to IBC merging, which will be described later (using Figures 21 to 23).

[0382] In step S404, the decoding unit 201 transitions to decoding processing other than IBC merging, which will be described later.

[0383] In step S402, the decoding unit 201 determines whether CuPredMode is MODE_IBC or not.

[0384] If the answer is Yes, the process proceeds to step S405; if the answer is No, the process proceeds to step S406.

[0385] In step S405, the decoding unit 201 transitions to the decoding process for IBC BVP, which will be described later (using Figure 23).

[0386] In step S406, the decoding unit 201 transitions to decoding processing for data other than IBC BVP, which will be described later.

[0387] In the following section, using Figure 21, we will explain how to decode a flag for controlling (identifying) whether or not IBC merging of biprediction is effective on a per-block basis in the decoding unit 201 (i.e., whether or not IBC merging of biprediction is applied on a per-block basis).

[0388] Figure 21 shows an example of a method for decoding a flag used to control (specify) whether or not IBC merging of biprediction is effective on a per-block basis in the decoding unit 201 (i.e., whether or not IBC merging of biprediction is applied on a per-block basis).

[0389] As shown in Figure 21, the decoding unit 201 may decode a flag to control (specify) whether or not IBC merging of biprediction is enabled on a per-block-to-decode unit basis (i.e., whether or not IBC merging of biprediction is applied on a per-block-to-decode unit basis). Specifically, it is as follows:

[0390] As shown in Figure 21, in step S500, the decoding unit 201 determines whether or not predetermined condition 2 is met.

[0391] If the answer is Yes, the process proceeds to step S501; if the answer is No, the process proceeds to step S502.

[0392] In step S501, the decoding unit 201 decodes biibc_merge_flag and terminates the process.

[0393] In step S502, the decoding unit 201 terminates the process without decoding biibc_merge_flag.

[0394] Here, biibc_merge_flag is a flag (fourth syntax) that controls (specifies) whether or not to apply bipredictive IBC merging on a per-block basis to be decrypted.

[0395] The decoding unit 201 determines that if biibc_merge_flag is 1, it will apply a bipredictive IBC merge to the block to be decoded, and if biibc_merge_flag is 0, it will not apply a bipredictive IBC merge to the block to be decoded.

[0396] The decoding unit 201 may estimate biibc_merge_flag to be 0 if biibc_merge_flag has not been decoded.

[0397] Furthermore, condition 2 may include at least one of the following conditions. 1. sps_ibc_enabled_flag must be 1. 2. sh_biibc_enabled_flag is 1 (and / or sps_biibc_enabled_flag is 1) 3. general_merge_flag must be 1. 4. The CupredMode must be IBC. 5. sh_slice_type must be I or B. As an example of a modification, a condition based on the block size (product of the number of pixels vertically and horizontally) of the block to be decoded may be added to predetermined condition 2.

[0398] For example, a condition may be added that the block size of the block to be decrypted is 16 pixels or more, or 32 pixels or more (or the width or height of the block to be decrypted is 8 pixels or more).

[0399] This allows for a reduction in processing load by limiting the application of bipredictive IBC merging to relatively small decryption blocks.

[0400] On the other hand, a condition may be added that the number of pixels is smaller than the threshold used in the determination criteria for whether or not to apply IBC merging for one-sided prediction, such as the block size of the block to be decoded being 32 pixels or less or 16 pixels or less.

[0401] This allows for a reduction in processing load by suppressing the application of bipredictive IBC merging to relatively large decryption blocks.

[0402] In the following section, Figure 22 will be used to explain the method for decoding control information related to IBC merging in the decoding unit 201.

[0403] In IBC merging, the decoding unit 201 decodes the IBC merge index (5th syntax), which is control information for identifying merge candidates within the merge candidate list, in order to select one or more merge candidates from the merge candidate list mentioned above.

[0404] Figure 22 shows an example of a method for decoding control information related to IBC merging in the decoding unit 201.

[0405] As shown in Figure 22, the decoding unit 201 may control the decoding of control information related to IBC merging. Specifically, this is as follows:

[0406] As shown in Figure 22, in step S600, the decoding unit 201 determines whether or not biibc_merge_flag is 1.

[0407] If the answer is Yes, the process proceeds to step S601; if the answer is No, the process proceeds to step S602.

[0408] In step S601, the decoding unit 201 determines whether MaxNumIbcMergeCand is greater than 2.

[0409] If the answer is Yes (MaxNumIbcMergeCand is greater than 2), the process proceeds to step S603. If the answer is No (MaxNumIbcMergeCand is 2 or less), the process proceeds to step S607.

[0410] In step S603, the decoding unit 201 decodes ibc_merge_idx0.

[0411] Here, ibc_merge_idx0 is the first IBC merge index (sixth syntax) in the bipredictive IBC merge.

[0412] In step S604, the decoding unit 201 determines whether ibc_merge_idx0 is not MaxNumIbcMergeCand-2 (ibc_merge_idx0 != MaxNumIbcMergeCand-2).

[0413] If the answer is Yes, the process proceeds to step S605; if the answer is No, the process proceeds to step S606.

[0414] In step S605, the decoding unit 201 decodes ibc_merge_idx1 and terminates the process.

[0415] In step S606, the decoding unit 201 terminates the process without decoding ibc_merge_idx1.

[0416] Here, ibc_merge_idx1 is the second IBC merge index (seventh syntax) in the bipredictive IBC merge.

[0417] Here, in step S604, the condition that ibc_merge_idx0 is not MaxNumIbcMergeCand-2 is not satisfied, that is, if ibc_merge_idx0 is MaxNumIbcMergeCand-2, then, as will be discussed later, it is obvious that ibc_merge_idx1 is MaxNumIbcMergeCand-1.

[0418] Therefore, in step S606, the decoding unit 201 can be expected to reduce the amount of code by not decoding ibc_merge_idx1.

[0419] In step S607, the decoding unit 201 terminates the process without decoding ibc_merge_idx0 and ibc_merge_idx1.

[0420] Here, MaxNumIbcMergeCand is the maximum number of merge candidates that can be registered in the merge candidate list in IBC merging, as described above. If it is 2 or less in step S601, the IBC merge candidates to be used in a bipredictive IBC merge are trivial, even without decoding the two merge indices.

[0421] Therefore, in step S607, the decoding unit 201 does not decode ibc_merge_idx0 and ibc_merge_idx1, which is expected to reduce the amount of code.

[0422] In step S602, the decoding unit 201 determines whether MaxNumIbcMergeCand is greater than 1.

[0423] If the answer is Yes, the process proceeds to step S608; if the answer is No, the process proceeds to step S609.

[0424] In step S608, the decoding unit 201 decodes ibc_merge_idx and terminates the process.

[0425] In step S609, the decoding unit 201 terminates the process without decoding ibc_merge_idx.

[0426] Here, if MaxNumIbcMergeCand is not greater than 1 in step S602, i.e., if MaxNumIbcMergeCand is 1, the IBC merge candidate to be used is obvious without decoding the merge index selected in the one-sided IBC merge.

[0427] Therefore, in step S609, the decoding unit 201 does not decode ibc_merge_idx, which is expected to reduce the amount of code.

[0428] Although the merge indexes for bipredictive IBC merges (ibc_merge_idx0 and ibc_merge_idx1) and unipredictive IBC merges (ibc_merge_idx) were described separately above, ibc_merge_idx0 and ibc_merge_idx may be shared in the image decoding device 200.

[0429] In other words, the design of context values ​​for decoding (encoding) and methods for decoding from binary to multi-valued (encoding from multi-valued to binary), such as truncated binaryization, may be standardized.

[0430] Figure 23 shows an example of changing the method for decoding control information related to IBC merging, as explained using Figure 22 (constructing different lists as shown in Figure 7, for each block vector).

[0431] As shown in Figure 23, the decoding unit 201 may decode control information related to IBC merging. Specifically, this is as follows:

[0432] As shown in Figure 23, in step S600, the decoding unit 201 determines whether or not biibc_merge_flag is 1.

[0433] If the answer is Yes, the process proceeds to step S601A; if the answer is No, the process proceeds to step S602.

[0434] In step S601A, the decoding unit 201 determines whether MaxNumIbcMergeCand is greater than 1.

[0435] If the answer is Yes, the process proceeds to step S608A; if the answer is No (MaxNumIbcMergeCand is 1 or less), the process proceeds to step S609A.

[0436] In step S608A, the decoding unit 201 decodes ibc_merge_idx and terminates the process.

[0437] In step S609A, the decoding unit 201 terminates the process without decoding ibc_merge_idx.

[0438] Steps S602, S608, and S609 are the same as in Figure 22.

[0439] In the following section, using Figure 24, we will explain how to decode the flag used to control (identify) whether IBC BVP / merge is enabled for each block to be decoded in the decoding unit 201 (i.e., whether or not IBC BVP / merge is applied for each block to be decoded).

[0440] Figure 24 shows an example of a method for decoding a flag used to control (specify) whether IBC BVP / merge is enabled on a per-block basis in the decoding unit 201 (i.e., whether or not IBC BVP / merge is applied on a per-block basis).

[0441] As shown in Figure 24, the decoding unit 201 may decode a flag to control (identify) whether IBC BVP / merge is enabled on a per-block-to-decode basis (i.e., whether or not IBC BVP / merge is applied on a per-block-to-decode basis). Specifically, it is as follows:

[0442] As shown in Figure 24, in step S700, the decoding unit 201 determines whether or not predetermined condition 3 is met.

[0443] If the answer is Yes, the process proceeds to step S701; if the answer is No, the process proceeds to step S702.

[0444] In step S701, the decoding unit 201 decodes ibc_bvpmerge_flag and terminates the process.

[0445] In step S702, the decoding unit 201 terminates the process without decoding ibc_bvpmerge_flag.

[0446] Here, ibc_bvpmerge_flag is a flag (syntax 8) that controls (specifies) whether IBC BVP / merge is enabled on a per-block-to-decryption basis (i.e., whether or not IBC BVP / merge is applied on a per-block-to-decryption basis).

[0447] The decoding unit 201 determines that if ibc_bvpmerge_flag is 1, it will apply IBC BVP / merge to the block to be decoded, and if ibc_bvpmerge_flag is 0, it will not apply IBC BVP / merge to the block to be decoded.

[0448] The decoding unit 201 may estimate ibc_bvpmerge_flag to be 0 if ibc_bvpmerge_flag has not been decoded.

[0449] Furthermore, condition 3 may include at least one of the following conditions. 6. sps_ibc_enabled_flag must be 1. 7. general_merge_flag must be 1. 8. The CupredMode must be IBC. 9. sh_slice_type must be I or B. As an example of a modification, a condition based on the block size (product of the number of pixels vertically and horizontally) of the block to be decoded may be added to predetermined condition 3.

[0450] For example, a condition may be added that the block size of the block to be decrypted is 16 pixels or more, or 32 pixels or more (or the width or height of the block to be decrypted is 8 pixels or more).

[0451] This allows for reduced application of IBC BVP / merge to relatively small decryption blocks, thus reducing processing load.

[0452] On the other hand, a condition may be added that the number of pixels is smaller than the threshold used in the determination criteria for whether or not to apply IBC merging for one-sided prediction, such as the block size of the block to be decoded being 32 pixels or less or 16 pixels or less.

[0453] This allows for the suppression of the application of IBC BVP / merge to relatively large decryption target blocks, thus reducing processing load. Later, Figure 25 will be used to explain the decryption method for control information related to IBC BVP / merge in the decryption unit 201.

[0454] Figure 25 shows an example of a method for decoding control information related to IBC BVP / merge in the decoding unit 201.

[0455] As shown in Figure 25, the decoding unit 201 may decode control information related to IBC BVP / merge. Specifically, this is as follows:

[0456] As shown in Figure 25, in step S800, the decoding unit 201 determines whether or not ibc_bvpmerge_flag is 1.

[0457] If the answer is Yes, the process proceeds to step S801; if the answer is No, the process terminates.

[0458] In step S801, the decoding unit 201 decodes the control information related to BVP and BVD, and proceeds to step S802.

[0459] In step S802, the decoding unit 201 determines whether MaxNumIbcMergeCand is greater than 1.

[0460] If the answer is Yes, the process proceeds to step S803; if the answer is No (MaxNumIbcMergeCand is 1 or less), the process proceeds to step S804.

[0461] In step S803, the decoding unit 201 decodes ibc_merge_idx and terminates the process.

[0462] In step S804, the decoding unit 201 terminates the process without decoding ibc_merge_idx.

[0463] Here, MaxNumIbcMergeCand, as described above, is the maximum number of merge candidates that can be registered in the merge candidate list in IBC merging. If it is 1 or less in step S801, the IBC merge candidates to be used are obvious even without decoding the merge index in IBC BVP / merging.

[0464] Therefore, in step S804, the decoding unit 201 does not decode ibc_merge_idx, which is expected to reduce the amount of code.

[0465] In the following section, Figure 26 will be used to explain the method for decoding the control information related to the MBVD described above, which corrects the BV of the IBC in the decoding unit 201.

[0466] Figure 26 shows an example of a method for decoding control information related to the MBVD described above, which corrects the BV of the IBC in the decoding unit 201.

[0467] As shown in Figure 26, the decoding unit 201 may decode the control information relating to the MBVD described above for correcting the BV of the IBC. Specifically, it is as follows:

[0468] As shown in Figure 26, in step S901, the decoding unit 201 determines whether or not biibc_merge_flag is 1.

[0469] If the answer is Yes, the process proceeds to step S902; if the answer is No, the process proceeds to step S903.

[0470] In step S902, the decoding unit 201 determines whether ibc_mbvd_flag is 1 or not.

[0471] If the answer is Yes, the process proceeds to step S904; if the answer is No, the process proceeds to step S905.

[0472] Here, ibc_mbvd_flag is a flag used to control whether or not MBVD is applied on a per-block basis for decryption.

[0473] The decoding unit 201 determines that MBVD should be applied if ibc_mbvd_flag is 1, and determines that MBVD should not be applied if ibc_mbvd_flag is 0.

[0474] The decoding unit 201 may estimate ibc_mbvd_flag to be 0 if ibc_mbvd_flag has not been decoded.

[0475] In step S904, the decoding unit 201 determines whether bimbvd_flag is 1 or not.

[0476] If the answer is Yes, the process proceeds to step S906; if the answer is No, the process proceeds to step S907.

[0477] Here, bimbvd_flag is a flag that controls whether or not MBVD is applied to the two sets of merge candidates (BVs) in the IBC merge of biprediction on a per-block-to-decryption basis.

[0478] The decoding unit 201 determines that if bimbvd_flag is 1, MBVD will be applied to two pairs of merge candidates (BVs), and if bimbvd_flag is 0, MBVD will not be applied to two pairs of merge candidates (BVs) (i.e., MBVD will be applied to only one pair of merge candidates (BVs) in the IBC merge of bipredictions).

[0479] The decoding unit 201 may estimate bimbvd_flag to be 0 if bimbvd_flag has not been decoded.

[0480] In step S906, the decoding unit 201 decodes mbvd_merge_cand_idx0 and mbvd_merge_cand_idx1.

[0481] Here, mbvd_merge_cand_idx0 is an index used to select the first set of merge candidates (BVs) to which MBVD should be applied, from the list of merge candidates, for each block to be decrypted, in a bipredictive IBC merge.

[0482] The decoding unit 201 may estimate mbvd_merge_cand_idx0 to be 0 if mbvd_merge_cand_idx0 has not been decoded.

[0483] Furthermore, mbvd_merge_cand_idx1 is an index used to select the second set of merge candidates (BVs) to which MBVD should be applied in a bipredictive IBC merge, on a per-block decryption basis, from the list of merge candidates.

[0484] If mbvd_merge_cand_idx1 is not decoded, the decoding unit 201 may estimate mbvd_merge_cand_idx1 as 0.

[0485] Note that when decoding mbvd_merge_cand_idx0 and mbvd_merge_cand_idx1, the decoding unit 201 does not have to give a magnitude relationship to them in advance, or may give a magnitude relationship such that mbvd_merge_cand_idx0 < mbvd_merge_cand_idx1.

[0486] When no magnitude relationship is given, after the decoding unit 201 decodes mbvd_merge_cand_idx0, excludes the merge candidate corresponding to mbvd_merge_cand_idx0 from the merge candidate list, and then decodes mbvd_merge_cand_idx1, different merge candidates can be derived even if mbvd_merge_cand_idx0 and mbvd_merge_cand_idx1 are the same, so an improvement in coding efficiency can be expected. It is an index for selecting the first set of merge candidates (BV) to which MBVD is applied from the merge candidate list among two sets of merge candidates (BV) in double-prediction IBC merge in terms of the decoding target block unit.

[0487] If mbvd_merge_cand_idx0 is not decoded, the decoding unit 201 may estimate mbvd_merge_cand_idx0 as 0.

[0488] In step S908, the decoding unit 201 decodes mbvd_idx0 and mbvd_idx1 and ends this process.

[0489] Here, mbvd_idx0 and mbvd_idx1 are indexes for deriving correction vectors for the first and second sets of merge candidates (BV) among two sets of merge candidates in double-prediction IBC merge, respectively.

[0490] Specifically, the values ​​of mbvd_idx0 and mbvd_idx1 correspond to the discrete reference positions that the correction vector can take, as disclosed in Non-Patent Document 2.

[0491] Discrete reference positions are defined by the direction and distance of a correction vector with the BV of the merge candidate as the origin.

[0492] The directions may consist of up, down, left, and right (a total of four directions including vertical and horizontal), as in Non-Patent Document 1, or they may consist of eight directions, adding four diagonal directions of 45 degrees, 135 degrees, 225 degrees, and 315 degrees to the up, down, left, and right, as in Non-Patent Document 2.

[0493] Furthermore, regarding distance, if the pixel precision of the IBC is limited to integer precision (i.e., only integer precision pixels are selectable) at the sequence, picture, slice, or decoded block level, the pixels may be configured as follows, as in Non-Patent Document 2: 1 pixel, 4 pixels, 8 pixels, 12 pixels, 16 pixels, 24 pixels, 32 pixels, 40 pixels, 48 ​​pixels, 56 pixels, 72 pixels, 80 pixels, 88 pixels, 96 pixels, 104 pixels, 112 pixels, 120 pixels, 128 pixels.

[0494] As another example, if the pixel precision of the IBC is not limited to integer precision at the sequence, picture, slice, or decoded block level (i.e., both fractional-precision and integer pixel precision are selectable), then in addition to the integer pixel options described above, quarter-pixel and eighth-pixel options may be added.

[0495] In step S909, the decoding unit 201 proceeds to step S601 in Figure 22, and once this operation is completed, the process is terminated.

[0496] In step S907, the decoding unit 201 decodes mbvd_merge_cand_idx0.

[0497] In step S910, the decoding unit 201 decodes mbvd_idx0.

[0498] In step S911, the decoding unit 201 proceeds to step S601 in Figure 22, and once this operation is completed, the process is terminated.

[0499] In step S905, the decoding unit 201 proceeds to step S601 in Figure 22, and once this operation is completed, the process is terminated.

[0500] In step S903, the decoding unit 201 proceeds to step S602 in Figure 22, and once this operation is completed, the process is terminated.

[0501] The following section, referring to Figure 27, describes an example of how to modify the method for applying predictions within the second frame on a block-by-block basis.

[0502] As shown in Figure 27, in step S1001, the decoding unit 201 determines whether the block to be decoded is in a mode that holds BV.

[0503] If the answer is Yes, the process proceeds to step S1002; if the answer is No, the process terminates.

[0504] In step S1002, the decoding unit 201 decodes cu_ibc_flag, which is a control signal representing the number of BVs used in the second frame prediction.

[0505] Here, by setting the maximum number of BV lines to 2, the decoding unit 201 decodes with 1 BV line if cu_ibc_flag is 0, and decodes with 2 BV lines if cu_ibc_flag is 1.

[0506] In step S1003, the decoding unit 201 determines whether there is one BV or two BVs.

[0507] In other words, in step S1003, the decoding unit 201 determines whether cu_ibc_flag is 0 or not.

[0508] If there is only one BV (cu_ibc_flag==0) or if the BVP candidate list uses the L0 list and the L1 list, in step S1004, the decoding unit 201 decodes cu_ibc_idx0, which is a control signal that specifies a BV from the BVP candidate list.

[0509] If there is more than one BV (cu_ibc_flag!=0) and the BVP candidate list consists only of the L0 list, in steps S1004 and S1005, the decoding unit 201 decodes cu_ibc_idx0 and cu_ibc_idx1, which are control signals that specify a BV from the BVP candidate list.

[0510] If cu_ibc_idx1 is expressed in relative coordinates, the decoding unit 201 decodes cu_ibc_idx0 + cu_ibc_idx1 as cu_ibc_idx1 in absolute coordinates.

[0511] Figure 28 shows a flowchart for applying a corrected BV to a BV.

[0512] As shown in Figure 28, in step S1101, the decoding unit 201 determines whether the block to be decoded is in a mode that holds BV.

[0513] If the answer is Yes, the process proceeds to step S1102; if the answer is No, the process terminates.

[0514] In step S1102, the decoding unit 201 decodes cu_ibc_flag, which is a control signal representing the number of BVs used in the second frame prediction.

[0515] Here, by setting the maximum number of BV lines to 2, the decoding unit 201 decodes with 1 BV line if cu_ibc_flag is 0, and decodes with 2 BV lines if cu_ibc_flag is 1.

[0516] In step S1103, the decoding unit 201 determines whether there is one BV or two BVs.

[0517] In other words, in step S1103, the decoding unit 201 determines whether cu_ibc_flag is 0 or not.

[0518] If there is only one BV (cu_ibc_flag==0) or if the BVP candidate list uses the L0 list and the L1 list, in step S1104, the decoding unit 201 decodes cu_ibc_idx0, which is a control signal that specifies a BV from the BVP candidate list.

[0519] In step S1105, the decoding unit 201 decodes cu_ibc_dmv0, which is control information representing the corrected BV, and adds cu_ibc_dmv0 to BV.

[0520] If there is more than one BV (cu_ibc_flag!=0) and the BVP candidate list consists only of the L0 list, in steps S1106 and S1107, the decoding unit 201 decodes cu_ibc_idx0 and cu_ibc_idx1, which are control signals that specify a BV from the BVP candidate list.

[0521] If cu_ibc_idx1 is expressed in relative coordinates, the decoding unit 201 decodes cu_ibc_idx0 + cu_ibc_idx1 as cu_ibc_idx1 in absolute coordinates.

[0522] In steps S1108 and S1109, the decoding unit 201 decodes the control information cu_ibc_dmv0 and cu_ibc_dmv1, which represent the corrected BV, and adds cu_ibc_dmv0 and cu_ibc_dmv1 to the corresponding BV, respectively.

[0523] In the following section, using Figure 29, we will explain how to decode a flag for controlling (identifying) whether or not bipredictive IBC BVP is enabled on a per-block basis in the decoding unit 201 (i.e., whether or not bipredictive IBC BVP is applied on a per-block basis).

[0524] Figure 29 is a flowchart illustrating an example of a method for decoding a flag used to control (specify) whether or not bipredictive IBC BVP is enabled on a per-block basis in the decoding unit 201 (i.e., whether or not bipredictive IBC BVP is applied on a per-block basis).

[0525] As shown in Figure 29, the decoding unit 201 may decode a flag to control (identify) whether or not dual prediction IBC BVP is enabled on a per-block-to-decode unit basis (i.e., whether or not dual prediction IBC BVP is applied on a per-block-to-decode unit basis). Specifically, it is as follows:

[0526] As shown in Figure 29, in step S1200, the decoding unit 201 determines whether or not predetermined condition 4 is met.

[0527] If the answer is Yes, the process proceeds to step S1201; if the answer is No, the process proceeds to step S1202.

[0528] In step S1201, the decoding unit 201 decodes biibc_bvp_flag and terminates the process.

[0529] In step S1202, the decoding unit 201 terminates the process without decoding biibc_bvp_flag.

[0530] Here, biibc_bvp_flag is a flag (9th syntax) that controls (specifies) whether or not to apply bipredictive IBC BVP on a per-block basis to be decrypted.

[0531] The decoding unit 201 determines that if biibc_bvp_flag is 1, it will apply bipredictive IBC BVP to the block to be decoded, and if biibc_bvp_flag is 0, it will not apply bipredictive IBC BVP to the block to be decoded.

[0532] The decoding unit 201 may estimate biibc_bvp_flag to be 0 if biibc_bvp_flag has not been decoded.

[0533] Furthermore, the specified condition 4 may include at least one of the following conditions. 1. sps_ibc_enabled_flag must be 1. 2. sh_biibc_enabled_flag is 1 (and / or sps_biibc_enabled_flag is 1) 3. general_merge_flag is 0. 4. The CupredMode must be IBC. 5. sh_slice_type must be I or B. As an example of a modification, a condition based on the block size (product of the number of pixels vertically and horizontally) of the block to be decoded may be added to predetermined condition 4.

[0534] For example, a condition may be added that the block size of the block to be decrypted is 16 pixels or more, or 32 pixels or more (or the width or height of the block to be decrypted is 8 pixels or more).

[0535] This allows for a reduction in processing load by limiting the application of bipredictive IBC merging to relatively small decryption blocks.

[0536] On the other hand, a condition may be added that the number of pixels is smaller than the threshold used in the criteria for determining whether to apply IBC BVP for one-sided prediction, such as the block size of the block to be decoded being 32 pixels or less or 16 pixels or less.

[0537] This allows for a reduction in processing load by suppressing the application of bipredictive IBC BVP to relatively large decryption blocks.

[0538] In the following section, Figure 30 will be used to explain the method for decoding control information related to IBC BVP in the decoding unit 201.

[0539] Figure 30 is a flowchart showing an example of a method for decoding control information related to IBC BVP in the decoding unit 201.

[0540] As shown in Figure 30, the decoding unit 201 may control the decoding of control information related to IBC BVP. Specifically, this is as follows:

[0541] As shown in Figure 30, in step S1300, the decoding unit 201 determines whether or not biibc_bvp_flag is 1.

[0542] If the answer is Yes, the process proceeds to step S1301; if the answer is No, the process proceeds to step S1302.

[0543] In step S1301, the decoding unit 201 decodes the control information relating to the first set of BVP and BVD among the two sets of BVP and BVD in the dual-prediction IBC BVP.

[0544] In step S1303, the decoding unit 201 decodes the control information relating to the second set of BVP and BVD among the two sets of BVP and BVD in the dual-prediction IBC BVP, and then terminates the process.

[0545] In step S1302, the decoding unit 201 decodes the control information relating to one set of BVP and BVD in the IBC BVP and terminates the process.

[0546] (Binaryization of bipredictive IBC) Using Figure 31, the method for binarizing the IBC merge index described above in the decoding unit 201 will be explained.

[0547] Figure 31 shows an example of the method for binarizing the IBC merge index described above in the decoding unit 201.

[0548] As shown in Figure 31, the decoding unit 201 may binarize the IBC merge index. Specifically, this is done as follows:

[0549] Firstly, the decoding unit 201 may set the value of cMax to MaxNumIbcMerge-1 for ibc_merge_idx.

[0550] Here, cMax is the maximum multi-value value that the control information of the target can take before binarization.

[0551] Secondly, the decoding unit 201 may set the value of cMax to MaxNumIbcMerge-1 for ibc_merge_idx0.

[0552] Thirdly, the decoding unit 201 may change the value of cMax for ibc_merge_idx1 depending on whether biibc_merge_flag is 1 or not.

[0553] Specifically, the decoding unit 201 may set the value of cMax to MaxNumIbcMerge-2 if biibc_merge_flag is not 1.

[0554] On the other hand, if biibc_merge_flag is 1, the decoding unit 201 may set the value of cMax to MaxNumIbcMerge-ibc_merge_idx0-2.

[0555] In other words, when using two different indices (ibc_merge_idx0 and ibc_merge_idx1) to derive two BVs, the range of values ​​that ibc_merge_idx1 can take is from 0 (minimum value) to the maximum value of the BVP candidate list (MaxNumIbcMerge-2 in the example above) minus the value of idx0.

[0556] As described above, by designing the binarization method, the decoding unit 201 can decode the second and subsequent indices as relative indices starting from the immediately preceding index.

[0557] The image decoding device 200 described above may be implemented as a program that causes a computer to execute each function (each process). [Industrial applicability]

[0558] Furthermore, according to this embodiment, for example, it is possible to achieve an overall improvement in service quality in video communication, thereby contributing to Goal 9 of the United Nations-led Sustainable Development Goals (SDGs), "Build resilient infrastructure, promote sustainable industrialization and foster innovation." [Explanation of symbols]

[0559] 200…Image decoding device 201...Decoding section 202...Inverse quantization section 203...Inverse Transformation Section 204...Prediction unit within the first frame 205...Prediction unit within the second frame 205A...Block vector derivation section (BV derivation section) 205B...Predictive pixel generation unit within the second frame 206...Interframe prediction unit 207... Adder 208...Storage section 210... Code input section 220...Image output unit

Claims

1. An image decoding device, A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit generates a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information. A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, The system comprises an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The image decoding device is characterized in that the second frame prediction unit sets the pixel precision of the block vector to a plurality of different fractional pixel precisions.

2. An image decoding device, A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit generates a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information. A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, The system comprises an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The image decoding device is characterized in that the second frame prediction unit changes the pixel accuracy of the block vector for any combination of sequence units, picture units, slice units, and block units.

3. An image decoding device, A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit generates a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information. A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, The system comprises an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The image decoding device is characterized in that the second frame prediction unit changes the pixel precision of the block vectors according to the number of block vectors of the block to be decoded.

4. An image decoding device, A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit generates a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information. A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, The system comprises an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The image decoding device is characterized in that the second frame prediction unit reduces the pixel accuracy of the block vectors as the number of block vectors increases.

5. An image decoding device, A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit that uses neighboring blocks to the block to be decoded as a template to derive two or more block vectors with integer or decimal pixel precision for the block to be decoded, and generates a second predicted pixel from the two or more block vectors based on the decoded pixels, A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, An image decoding device characterized by comprising an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels.

6. An image decoding method, A process for decoding control information and quantization values, The process involves inverse quantization of the quantized value to obtain a conversion coefficient, The process involves inversely transforming the aforementioned transformation coefficient to obtain the predicted residual, A step of generating a first predicted pixel based on the decoded pixel and the control information, A step of generating a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information, The process of accumulating the decoded pixels, A step of generating a third predicted pixel based on the accumulated decoded pixels and the control information, The process includes adding the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The image decoding method is characterized in that the step of generating the second predicted pixel includes setting the pixel precision of the block vector to a plurality of different decimal pixel precisions.

7. A program that makes a computer function as an image decoding device, The aforementioned image decoding device is A decoding unit that decodes control information and quantization values, An inverse quantization unit that inversely quantizes the quantized value to obtain a conversion coefficient, An inverse transform unit that performs an inverse transform on the aforementioned transformation coefficient to obtain the predicted residual, A first-frame prediction unit that generates a first prediction pixel based on the decoded pixel and the control information, A second in-frame prediction unit generates a second predicted pixel from two or more block vectors with integer pixel precision or fractional pixel precision for the block to be decoded, based on the decoded pixels and the control information. A storage unit for storing the decoded pixels, An interframe prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information, The system comprises an adder that adds the predicted residual and the first to third predicted pixels to obtain the decoded pixels, The program is characterized in that the second frame prediction unit sets the pixel precision of the block vector to a plurality of different decimal pixel precisions.