WO2024214435A1 - 画像復号装置、画像復号方法及びプログラム - Google Patents

画像復号装置、画像復号方法及びプログラム Download PDF

Info

Publication number
WO2024214435A1
WO2024214435A1 PCT/JP2024/008384 JP2024008384W WO2024214435A1 WO 2024214435 A1 WO2024214435 A1 WO 2024214435A1 JP 2024008384 W JP2024008384 W JP 2024008384W WO 2024214435 A1 WO2024214435 A1 WO 2024214435A1
Authority
WO
WIPO (PCT)
Prior art keywords
ibc
block
decoded
bvp
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2024/008384
Other languages
English (en)
French (fr)
Inventor
佳隆 木谷
晴久 加藤
圭 河村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to CN202480025440.4A priority Critical patent/CN120937368A/zh
Publication of WO2024214435A1 publication Critical patent/WO2024214435A1/ja
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51—Motion estimation or motion compensation
    • H04N19/513—Processing of motion vectors
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Definitions

  • the present invention relates to an image decoding device, an image decoding method, and a program.
  • Non-Patent Documents 1 and 2 disclose intra block copy (IBC) and intra template matching prediction (IntraTMP).
  • IBC and IntraTMP refer to pixels from the decoded pixel area of the frame to be decoded and use them as predicted pixels for the block to be decoded.
  • IBC explicitly signals a control signal for decoding a block vector that represents the coordinates it references
  • IntraTMP does not signal a control signal for decoding a block vector by searching for similar areas using nearby pixels as templates.
  • pixels are copied from the reference block indicated by the block vector of the block to be decoded as shown in Figure 2 and used as prediction pixels.
  • Non-Patent Documents 1 and 2 the block vector is limited to one, so there is room for improvement in improving the coding efficiency.
  • the blocks are simply copied, so there is also room for improvement in improving the coding efficiency.
  • the present invention has been made in consideration of the above-mentioned problems, and aims to provide an image decoding device, an image decoding method, and a program with high coding efficiency.
  • the first feature of the present invention is an image decoding device comprising: a decoding unit that decodes control information and quantized values; an inverse quantization unit that inversely quantizes the quantized values to obtain transform coefficients; an inverse transform unit that inversely transforms the transform coefficients to obtain predicted residuals; a first intra-frame prediction unit that generates a first predicted pixel based on decoded pixels and the control information; a second intra-frame prediction unit that generates a second predicted pixel from one or more corrected block vectors for a block to be decoded based on the decoded pixels and the control information; a storage unit that accumulates the decoded pixels; an inter-frame prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information; and an adder that adds the predicted residuals and the first to third predicted pixels to obtain the decoded pixels.
  • the second feature of the present invention is an image decoding method comprising the steps of: decoding control information and quantized values; inversely quantizing the quantized values to obtain transform coefficients; inversely transforming the transform coefficients to obtain predicted residuals; generating a first predicted pixel based on the decoded pixels and the control information; generating a second predicted pixel from one or more corrected block vectors for a block to be decoded based on the decoded pixels and the control information; accumulating the decoded pixels; generating a third predicted pixel based on the accumulated decoded pixels and the control information; and obtaining the decoded pixel by adding the predicted residuals to the first to third predicted pixels.
  • the third feature of the present invention is a program for making a computer function as an image decoding device, the image decoding device comprising: a decoding unit that decodes control information and quantized values; an inverse quantization unit that inversely quantizes the quantized values to obtain transform coefficients; an inverse transform unit that inversely transforms the transform coefficients to obtain predicted residuals; a first intra-frame prediction unit that generates a first predicted pixel based on decoded pixels and the control information; a second intra-frame prediction unit that generates a second predicted pixel from one or more corrected block vectors for a block to be decoded based on the decoded pixels and the control information; a storage unit that accumulates the decoded pixels; an inter-frame prediction unit that generates a third predicted pixel based on the accumulated decoded pixels and the control information; and an adder that adds the predicted residuals and the first to third predicted pixels to obtain the decoded pixels.
  • the present invention provides an image decoding device, an image decoding method, and a program with high coding efficiency.
  • FIG. 1 is a diagram showing an example of functional blocks of an image decoding device 200 according to an embodiment.
  • FIG. 2 is a diagram for explaining the IBC and the IntraTMP.
  • FIG. 3 is a diagram showing an example of functional blocks of the second intra-frame prediction unit 205 of the image decoding device 200 according to an embodiment.
  • FIG. 4 is a diagram illustrating an example of a BV derivation method in the BV derivation section 205A of the second intra-frame prediction section 205 of the image decoding device 200 according to an embodiment.
  • FIG. 5 is a diagram for explaining an example of a BV derivation method in the BV derivation section 205A of the second intra-frame prediction section 205 of the image decoding device 200 according to an embodiment.
  • FIG. 1 is a diagram showing an example of functional blocks of an image decoding device 200 according to an embodiment.
  • FIG. 2 is a diagram for explaining the IBC and the IntraTMP.
  • FIG. 3 is a diagram showing an example of
  • FIG. 6 is a diagram for explaining an example of a BV derivation method in the BV derivation section 205A of the second intra-frame prediction section 205 of the image decoding device 200 according to an embodiment.
  • FIG. 7 is a diagram illustrating an example of a BV derivation method in the BV derivation section 205A of the second intra-frame prediction section 205 of the image decoding device 200 according to an embodiment.
  • FIG. 8 is a diagram illustrating an example of a BV derivation method in the BV derivation section 205A of the second intra-frame prediction section 205 of the image decoding device 200 according to an embodiment.
  • Figure 9 is a diagram for explaining an example of a method of deriving a BV using IBC GPM in the BV derivation unit 205A of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • Figure 10 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second intra-frame predicted pixel generation unit 205B of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • Figure 11 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second intra-frame predicted pixel generation unit 205B of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • Figure 12 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second intra-frame predicted pixel generation unit 205B of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • Figure 13 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second intra-frame predicted pixel generation unit 205B of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • FIG. 14 is a diagram illustrating an example of a method for synthesizing predicted pixels of a block to be decoded in the second intra-frame predicted pixel generation unit 205B of the second intra-frame prediction unit 205 of an image decoding device 200 according to one embodiment.
  • FIG. 15 is a flowchart showing an example of a method for controlling decoding of a predetermined flag related to an IBC on a sequence-by-sequence basis.
  • FIG. 16 is a diagram showing an example of various flags related to the IBC.
  • FIG. 17 is a flowchart showing an example of a method for decoding a flag that controls whether or not bi-predictive IBC is applicable in the decoding unit 201 of the image decoding device 200 according to an embodiment.
  • FIG. 15 is a flowchart showing an example of a method for controlling decoding of a predetermined flag related to an IBC on a sequence-by-sequence basis.
  • FIG. 16 is a diagram showing an example of various flags
  • FIG. 18 is a flowchart showing an example of a method for decoding a flag that controls whether or not bi-predictive IBC is applicable in the decoding unit 201 of the image decoding device 200 according to an embodiment.
  • FIG. 19 is a flowchart showing an example of a decoding method of pred_mode_ibc_flag, which is a flag that controls whether or not to apply IBC for each block to be decoded in the decoding unit 201 of the image decoding device 200 according to one embodiment.
  • 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 device 200 according to an embodiment.
  • FIG. 21 is a flowchart showing an example of a method for decoding a flag for controlling whether or not bi-predictive IBC merging is enabled for each block to be decoded in the decoding unit 201 of the image decoding device 200 according to one embodiment.
  • FIG. 22 is a flowchart showing an example of a method for decoding control information related to IBC merging in the decoding unit 201 of the image decoding device 200 according to one embodiment.
  • FIG. 23 is a flowchart showing an example of a method for decoding control information related to IBC merging in the decoding unit 201 of the image decoding device 200 according to one embodiment.
  • Figure 24 is a flowchart showing an example of a method for decoding a flag for controlling whether or not IBC BVP/merge is enabled on a per-block basis to be decoded basis in a decoding unit 201 of an image decoding device 200 according to one embodiment.
  • Figure 25 is a flowchart showing an example of a method for decoding control information regarding IBC BVP/merge in a decoding unit 201 of an image decoding device 200 according to one embodiment.
  • FIG. 26 is a flowchart showing an example of a method for decoding control information related to the above-mentioned MBVD that corrects the BV of the IBC in the decoding unit 201 of the image decoding device 200 according to one embodiment.
  • FIG. 27 is a flowchart showing an example of a method for applying the second intra-frame prediction on a block-by-block basis in the decoding unit 201 of the image decoding device 200 according to an embodiment.
  • FIG. 28 is a flowchart showing a case where the corrected BV is applied to the BV in the decoding unit 201 of the image decoding device 200 according to an embodiment.
  • Figure 29 is a flowchart showing an example of a method for decoding a flag for controlling whether or not bi-predictive IBC BVP is enabled on a per-block basis to be decoded basis in a decoding unit 201 of an image decoding device 200 according to one embodiment.
  • Figure 30 is a flowchart showing an example of a method for decoding control information related to bi-predictive IBC BVP in a decoding unit 201 of an image decoding device 200 according to one embodiment.
  • FIG. 31 is a diagram showing an example of a binarization method of an IBC merge index in the decoding unit 201 of the image decoding device 200 according to an embodiment.
  • Figure 1 is a diagram showing an example of functional blocks of the image decoding device 200 according to this embodiment.
  • the image decoding device 200 has a code input unit 210, a decoding unit 201, an inverse quantization unit 202, an inverse transform unit 203, a first intra-frame prediction unit 204, a second intra-frame prediction unit 205, an inter-frame prediction unit 206, an adder 207, an accumulation unit 208, and an image output unit 220.
  • the code input unit 210 is configured to obtain code information encoded by the image encoding device.
  • the decoding unit 201 is configured to decode the control information and the quantization value from the code information input from the code input unit 210.
  • the decoding unit 201 is configured to output the control information and the quantization value by performing variable length decoding on the code information.
  • the quantized value is sent to the inverse quantization unit 202, and the control information is sent to the first intra-frame prediction unit 204, the second intra-frame prediction unit 205, and the inter-frame prediction unit 206.
  • control information includes information necessary for controlling the first intra-frame prediction unit 204, the second intra-frame prediction unit 205, and the inter-frame prediction unit 206, etc., and may include header information such as a sequence parameter set, a picture parameter set, a picture header, and a slice header.
  • the inverse quantization unit 202 is configured to inverse quantize the quantized values sent from the decoding unit 201 to generate transform coefficients. These transform coefficients are sent to the inverse transform unit 203.
  • the inverse transform unit 203 is configured to inversely transform the transform coefficients sent from the inverse quantization unit 202 to generate prediction residuals. These prediction residuals are sent to the adder 207.
  • the first intra-frame prediction unit 204 is configured to generate a first predicted pixel to be added to the prediction residual by 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 predicted pixel is sent to the adder 207.
  • the interframe prediction unit 206 is configured to generate a third predicted pixel to be added to the prediction residual by 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.
  • the third predicted pixel is sent to the adder 207.
  • 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.
  • the adder 207 is configured to add the prediction residual sent from the inverse transform unit 203 to any one of the first to third predicted pixels sent from the first intraframe prediction unit 204, the second intraframe prediction unit 205, and the interframe prediction unit 206 to obtain a decoded pixel. Such a decoded pixel is sent to the image output unit 220, the storage unit 208, and the interframe prediction unit 206.
  • the role of the second intra-frame prediction unit 205 is to derive one or more block vectors (hereinafter, BV: Block Vector) for a block to be decoded as shown in FIG. 2 and to predict pixels of a block referenced by the BV (second intra-frame prediction) in order to predict the block to be decoded with high accuracy in the adder 207 at the downstream stage.
  • BV Block Vector
  • Examples of such second intra-frame prediction include intra block copy (IBC) and intra template matching prediction (IntraTMP), which are disclosed in Non-Patent Documents 1 and 2.
  • Such second intra-frame prediction can be applied when the block to be decoded references other areas in the BV, but below, IBC will be described as an example of second intra-frame prediction.
  • Other examples include modes that reference predicted pixels within a frame, such as IntraTMP.
  • FIG. 3 shows an example of a functional block of the second intra-frame prediction unit 205.
  • the second intra-frame prediction unit 205 includes a block vector derivation unit (hereinafter, BV derivation unit) 205A and a second intra-frame predicted pixel generation unit 205B.
  • BV derivation unit block vector derivation unit
  • the BV derivation unit 205A is configured to derive one or more BVs for the block to be decoded.
  • 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 for deriving the BV will be described in detail in the signaling of the decoding unit 201 (decoding process of control information) described later.
  • IBC BVP/Merge D IBC GPM
  • the above-mentioned BV derivation methods A and B 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 one BV.
  • the purpose (effect) of the present invention is to improve the accuracy of second intra-frame prediction by deriving two or more BVs, and therefore to improve coding efficiency. Therefore, in the following explanation of BV derivation methods A and B, attention will be paid to the difference when two or more BVs are derived. Note that the above-mentioned BV derivation methods C and D are new techniques that are premised on the derivation of two or more BVs.
  • an IBC by deriving two BVs (bi-predictive IBC or bi-predictive IBC) will be explained below.
  • Figure 4 shows an example where BV is composed of block vector prediction (BVP) and block vector difference (BVD).
  • BVP block vector prediction
  • BVD block vector difference
  • the BV derivation unit 205A derives the block vector prediction (BVP) and block vector difference (BVD) based on the values of the control information related to the BVP and BVD decoded by the decoding unit 201, and derives the BV.
  • BVP block vector prediction
  • BVD block vector difference
  • the control information related to the BVP and BVD will be described in detail in the explanation of the signaling in the decoding unit 201.
  • step S1 the BV derivation unit 205A checks whether adjacent blocks of the block to be decoded shown in FIG. 5 have already been decoded, and if such adjacent blocks have already been decoded, checks whether they have a BV (whether the BV can be used).
  • step S2 the BV derivation unit 205A registers the BV of the adjacent block having the BV in a list (hereinafter, the BVP candidate list) as the BVP candidate shown in FIG. 6.
  • 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.
  • the control information IBC BVP flag or IBC BVP index
  • the number (position) of adjacent blocks checked in step S1 to see whether they have been decoded and whether they have a BV may be two types ("A” and “L” in FIG. 5) as in Non-Patent Document 1, or may be five types ("A”, “L”, “AR”, “LB”, and “AL” in FIG. 5) as in Non-Patent Document 2.
  • the BV derivation unit 205A can use the BVs of nearby blocks (referred to as spatial BVPs in Non-Patent Document 2) and BVs used in the past (referred to as history BVPs in Non-Patent Document 2) as BVP candidates.
  • step S1 if the BV for which availability is to be newly confirmed is the same as a BV that has already been confirmed as available, the BV for which availability is to be newly confirmed may be determined to be unavailable.
  • the order in which the BVs (BVP candidates) determined to be available in step S1 are registered in the BVP candidate list may be rearranged using a predetermined rearrangement method. Details of this rearrangement method will be described later.
  • step S1 the BV derivation unit 205A derives the BVD based on control information related to the BVD.
  • step S2 the BV derivation unit 205A rounds the BVD derived in step S1 based on control information related to the pixel precision of the BVD.
  • the method of deriving the BVD based on the control information related to the BVD can be configured in a manner similar to that described 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 related to the code of the BVD, and the BV derivation unit 205A derives the BVD from these values.
  • the BV derivation unit 205A adds the derived BVP and BVD to derive the BV.
  • the BVP and BVD required to derive each BV may be derived in the following manner.
  • step S1 the BV derivation unit 205A checks whether adjacent blocks of the block to be decoded shown in FIG. 5 have already been decoded, and if such adjacent blocks have already been decoded, checks whether they have a BV (whether the BV can be used).
  • step S2 the BV derivation unit 205A registers the BV of the adjacent block having the BV in a list (hereinafter, the BVP candidate list) as the BVP candidate shown in FIG. 6.
  • step S3 the BV derivation unit 205A selects two or more different BVPs from the BVP candidate list based on the values of the control information (IBC BVP flag or IBC BVP index) related to the two or more different BVPs decoded by the decoding unit 201.
  • the control information IBC BVP flag or IBC BVP index
  • the second and subsequent indexes be relative indexes that start from the previous index. Details will be described later.
  • the number (position) of adjacent blocks checked in step S1 to see whether they have been decoded and whether they have a BV may be two types ("A” and “L” in FIG. 5) as in Non-Patent Document 1, or may be five types ("A”, “L”, “AR”, “LB”, and “AL” in FIG. 5) as in Non-Patent Document 2.
  • the BV derivation unit 205A can use the BVs of nearby blocks (referred to as spatial BVPs in Non-Patent Document 2) and BVs used in the past (referred to as history BVPs in Non-Patent Document 2) as BVP candidates.
  • step S1 if the BV whose availability is to be newly confirmed is the same as the BV whose availability has already been confirmed as available, the BV derivation unit 205A may determine that the BV whose availability is to be newly confirmed is unavailable.
  • 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.
  • step S1 the BV derivation unit 205A derives a BVD based on control information relating to two or more different BVDs.
  • step S2 the BV derivation unit 205A rounds two or more different BVDs derived in step S1 based on control information related to the pixel precision of the BVDs.
  • the method of deriving the BVD based on the control information related to the BVD can be configured in a manner similar to that described 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 related to the code of the BVD, and the BV derivation unit 205A derives the BVD from these values.
  • the BV derivation unit 205A adds the derived two or more different BVPs and BVDs to derive two or more different BVs.
  • the BV derivation unit 205A does not derive the BVD, but only the BVP, and derives it as is as the BV.
  • step S1 the BV derivation unit 205A checks whether adjacent blocks of the block to be decoded shown in FIG. 5 have already been decoded, and if such adjacent blocks have already been decoded, checks whether they have a BV (whether the BV can be used).
  • step S2 the BV derivation unit 205A registers the BVs of the adjacent blocks having the BVs in a list (hereinafter referred to as the BVP candidate list or merge candidate list) as BVP candidates (or merge candidates) shown in FIG. 6 or FIG. 7.
  • a list hereinafter referred to as the BVP candidate list or merge candidate list
  • 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 the selected BVP as the BV.
  • IBC merge index the control information
  • the number (position) of adjacent blocks checked in step S1 to see whether they have been decoded and whether they have a BV may be two types ("A” and “L” in FIG. 5) as in Non-Patent Document 1, or may be five types ("A”, “L”, “AR”, “LB”, and “AL” in FIG. 5) as in Non-Patent Document 2.
  • the BVP candidates can use the BVs of nearby blocks (referred to as spatial merge in Non-Patent Document 2), BVs used in the past (referred to as history merge in Non-Patent Document 2), the average of the BVs (referred to as pairwise average merge in Non-Patent Document 2), etc.
  • step S1 if the BV whose availability is to be newly confirmed is the same as the BV whose availability has already been confirmed as available, the BV derivation unit 205A may determine that the BV whose availability is to be newly confirmed is unavailable.
  • 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.
  • the BV derivation unit 205A may derive the two or more BVs in the following manner.
  • the BV derivation unit 205A may create one BVP candidate list (or merge candidate list) as shown in FIG. 6, and then select two or more BVP candidates from the BVP candidate list according to the values of two or more pieces of control information (IBC merge indexes) indicating the BVP candidates (or merge candidates) in the BVP candidate list decoded by the decoding unit 201, and derive each of them as a BV.
  • IBC merge indexes two or more pieces of control information
  • the second and subsequent indexes be relative indexes that start from the previous index. Details will be described later.
  • the BV derivation unit 205A may derive a BV by fixedly selecting one or more of the top BVP candidates in the BVP candidate list. In this case, it is desirable for the BV derivation unit 205A to perform rearrangement of the BVP candidates in the BVP candidate list, which will be described later. With this configuration, by fixedly selecting some BVs out of two or more BVs, the coding amount of the index required to derive two or more BVs is not required, thereby improving coding efficiency.
  • the BV derivation unit 205A may construct BVP candidate lists individually for the number of BVs held by the block to be decoded, as shown in FIG. 7, and then derive two or more BVs using one index.
  • the BV derivation unit 205A registers each BV in the corresponding BVP candidate list. In this way, by constructing multiple BVP candidate lists and sharing the index, it is possible to derive one or more BVs from one index. For example, if the block to be decoded holds a maximum of two BVs, the BV derivation unit 205A may prepare two lists (e.g., an L0 list and an L1 list similar to normal intraframe prediction) and derive one BV from the L0 list and one BV from the L1 list corresponding to the index. If the BV corresponding to the index is in only one of the L0 list and the L1 list, the BV derivation unit 205A may use that one.
  • two lists e.g., an L0 list and an L1 list similar to normal intraframe prediction
  • 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 the remaining two or more) BVs based on the BV derivation method in IBC Merge described above.
  • the specific derivation method is as follows:
  • the BV derivation unit 205A derives the BVP and BVD based on the values of the control information for each of the BVP and BVD decoded by the decoding unit 201 using the same derivation method as for the IBC BVP, and then adds up the derived BVP and BVD to derive the first BV.
  • 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 it as the second BV, using the same derivation method as for the IBC BVP.
  • IBC merge index the control information
  • the BV derivation unit 205A may create a template (i.e., a specified neighboring pixel of the reference block referenced by the BV) based on the first derived BV, and evaluate (compare template costs) the similarity of each BVP candidate (each IBC merge candidate) in the BVP candidate list for the IBC merge with the template (a specified neighboring pixel of the reference block), thereby deriving the BVP candidate (IBC merge candidate) with the highest similarity (minimum template cost) as the second BV for the IBC BVP/merge.
  • a template i.e., a specified neighboring pixel of the reference block referenced by the BV
  • the BV derivation unit 205A may select a BVP from a BVP candidate list in the IBC merge based on the value of control information (IBC merge index) related to the BVP decoded by the decoding unit 201, and derive the selected BVP as the second BV.
  • IBC merge index control information
  • the BV derivation unit 205A may use a template of the block to be decoded, rather than a template based on the BV derived by the IBC BVP, as the target for similarity evaluation with the template of each IBC merge candidate.
  • the BV derivation unit 205A can use the sum of squared errors (SSE) or the sum of absolute differences (SAD) to evaluate the similarity of templates (comparison of template costs).
  • SSE sum of squared errors
  • SAD sum of absolute differences
  • the specified pixels of the template created in the template similarity evaluation may be decoded pixels of one pixel line adjacent to the left or top of each block.
  • the BV derivation unit 205A may use a decoded pixel in an available position to perform template similarity evaluation.
  • the BV derivation unit 205A may derive BVP candidates in order of increasing template similarity (in order of decreasing template cost).
  • step S1 the BV derivation unit 205A checks whether adjacent blocks of the block to be decoded shown in FIG. 5 have already been decoded, and if such adjacent blocks have already been decoded, checks whether they have a BV (whether the BV can be used).
  • step S2 the BV derivation unit 205A registers the BV of the adjacent block having the BV in a list (hereinafter, the BVP candidate list) as the BVP candidate shown in FIG. 6.
  • 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.
  • the control information IBC BVP flag or IBC BVP index
  • the number (position) of adjacent blocks checked in step S1 to see whether they have been decoded and whether they have a BV may be two types ("A” and “L” in FIG. 5) as in Non-Patent Document 1, or may be five types ("A”, “L”, “AR”, “LB”, and “AL” in FIG. 5) as in Non-Patent Document 2.
  • the BV derivation unit 205A can use the BVs of nearby blocks (referred to as spatial BVPs in Non-Patent Document 2) and BVs used in the past (referred to as history BVPs in Non-Patent Document 2) as BVP candidates.
  • step S1 if the BV whose availability is to be newly confirmed is the same as the BV whose availability has already been confirmed as available, the BV derivation unit 205A may determine that the BV whose availability is to be newly confirmed is unavailable.
  • 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.
  • step S1 the BV derivation unit 205A derives the BVD based on control information related to the BVD.
  • step S2 the BV derivation unit 205A rounds the BVD derived in step S1 based on control information related to the pixel precision of the BVD.
  • the method of deriving the BVD based on the control information related to the BVD can be configured in a manner similar to that described 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 related to the code of the BVD, and the BV derivation unit 205A derives the BVD from these values.
  • the BVD derivation unit 205A adds the derived BVP and BVD to derive the first BV.
  • the second method of deriving BV based on the IBC merge BV derivation method in IBC BVP/Merge is outlined below.
  • the BV derivation unit 205A may construct two different BV candidate lists (i.e., one is a BVP candidate list for the IBC BVP, and the other is a merge candidate list for the IBC BVP/merge) in the BV derivation of the IBC BVP and the BV derivation of the IBC merge.
  • the BV derivation unit 205A may derive the second BV by evaluating the similarity of the template based on the first BV described above, as follows:
  • step S1 the BV derivation unit 205A uses the block referenced by the first BV or neighboring pixels of the block to be decoded as a template.
  • step S2 the BV derivation unit 205A evaluates the similarity between the template derived in step S1 and corresponding pixels in the blocks referenced by each BVP candidate in the BVP candidate list.
  • step S3 the BV derivation unit 205A selects the BVP with the highest similarity and derives this BVP as the second BV.
  • the BV derivation unit 205A does not include the BVP candidate that matches the first BV among the BVP candidates in the BVP candidate list of step S2 in the similarity evaluation.
  • the BV derivation unit 205A does not register a BVP candidate that matches the first BV in the BVP candidate list in step S2 during the construction stage of the BVP candidate list.
  • the BV derivation unit 205A may rearrange the registration order of the BVP candidates in the BVP candidate list in order of high 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 the selected BVP as a BV.
  • IBC merge index the control information
  • the BV derivation unit 205A divides the block to be decoded into two parts by an arbitrary straight line (solid line in FIG. 9) selected from multiple different patterns of straight lines (geometric partitioning lines), in the same way as in the Geometric Partitioning Mode (GPM) disclosed in Non-Patent Document 1, and then derives one or more different BVs for each divided region, and calculates a weighted average of the reference destinations (pixels of the reference block) of each BV according to the distance from the partitioning line.
  • GPM Geometric Partitioning Mode
  • the BV derivation unit 205A may derive the BV required for such IBC GPM, similar to the IBC merge described above.
  • the BV derivation unit 205A may also identify candidates for the dividing line in the IBC GPM based on control information that identifies candidates for the dividing line of the GPM disclosed in Non-Patent Documents 1 or 2.
  • the BV derivation unit 205A can set the pixel accuracy of the derived BV to integer pixel accuracy or decimal pixel accuracy.
  • IBC was devised as an encoding technique for screen images, but when applied to natural images captured by a camera, the prediction accuracy can be improved by setting the pixel accuracy of the BV to decimal pixel accuracy (i.e., generating predicted pixels with an interpolation filter, as in normal interframe prediction).
  • the BV derivation unit 205A can also adaptively select from multiple different pixel precisions.
  • the BV derivation unit 205A may set the pixel precision of the BV to multiple different integer pixel precisions, or multiple different decimal pixel precisions.
  • the BV derivation unit 205A can change the pixel precision of the BV on a sequence basis and/or a picture basis and/or a slice basis and/or a block basis.
  • the BV derivation unit 205A may change the pixel precision of the BV for any combination of sequence units, picture units, slice units, and block units.
  • Non-Patent Document 1 discloses a technology that applies adaptive motion vector resolution (AMVR) to IBC.
  • AMVR adaptive motion vector resolution
  • this technology selects the pixel precision of the BVD from either 1-pixel precision or 4-pixel precision when deriving the BV in the IBC, and finally rounds the BV to the pixel precision of the selected BVD.
  • 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) as an option for this AMVR.
  • sub-pixel accuracy e.g. 1/4 pixel accuracy and/or 1/2 pixel accuracy
  • the BV derivation unit 205A can also change the pixel precision of the BV depending on the number of BVs in the block to be decoded.
  • the BV derivation unit 205A can set the pixel precision of the BV to decimal pixel precision, and when there are two or more BVs, the pixel precision of the BV can be integer pixel precision.
  • the second intra-frame prediction generally becomes more accurate, but the processing load required to derive the BVs increases. Therefore, by making the pixel accuracy of the BVs coarser as the number of BVs increases, it is possible to reduce the decoding processing load while maintaining the prediction accuracy of the second intra-frame prediction.
  • the BV derivation unit 205A may set the pixel precision of the BVs to integer precision (limiting the selectable pixel precision to integer precision only).
  • the BV derivation unit 205A may set the pixel precision of the BV to integer pixel precision or decimal pixel precision (selectable pixel precision does not have to be limited to integer precision).
  • the BV derivation unit 205A may configure the BVP candidate list as many times as the number of BVs held by the current block to be decoded.
  • the L0 list and the L1 list there are cases where only a single list (the L0 list) is used, and cases where multiple lists (for example, when the BV derivation unit 205A derives a maximum of two BVs, an L0 list and an L1 list) are used.
  • the BV derivation unit 205A may configure the BVP candidates to be registered in the BVP candidate list using the BVs of neighboring blocks of the block to be decoded as shown in Figure 5, BVs used in the past, the average of BVs, etc.
  • the BV derivation unit 205A may configure the BVP candidates to be registered in the BVP candidate list with BVs derived using IntraTMP as disclosed in Non-Patent Document 2.
  • the order in which BVP candidates are registered in these BVP candidate lists may conform to the order of registration disclosed in Non-Patent Documents 1 and 2.
  • the BV derivation unit 205A searches for and registers the above-mentioned BVP candidates until the BVP candidate list is filled with BVP candidates.
  • 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.
  • the BV derivation unit 205A may register the BVP candidates in the BVP candidate list in the order in which the list is searched, or may register the BVP candidates after rearranging the order of the BVP candidates that can be registered using a rearrangement method described below.
  • the maximum number of BVP candidates may be set to a fixed value, or may be adaptively set using control information for each sequence, picture, or slice, as described below.
  • the BV derivation unit 205A may or may not standardize the BVP candidate lists for each of the IBC BVP, IBC merge, and IBC BVP/merge (different BVP candidate lists may be used for each of the IBC BVP, IBC merge, and IBC BVP/merge).
  • the BV derivation unit 205A may set the maximum number of BVP candidates that can be registered in a BVP candidate list that derives a BVP using an IBC BVP or an IBC BVP flag or an IBC BVP index in an IBC BVP/merge to be the same as the maximum number of BVP candidates that can be registered in a BVP candidate list that derives a BVP (BV) using an IBC merge or an IBC merge index in an IBC BVP/merge.
  • BV BVP
  • the circuit scale of the image decoding device 200 can be reduced.
  • the BV derivation unit 205A may set the maximum number of BVP candidates (IBC merge candidates) that can be registered in a BVP candidate list (merge candidate list) that derives a BVP (merge candidate or BV) using an IBC merge or an IBC merge index in an IBC BVP/merge to be larger than the maximum number of BVP candidates that can be registered in a BVP candidate list that derives a BVP using an IBC BVP or an IBC BVP flag or an IBC BVP index in an IBC BVP/merge.
  • IBC merge candidates maximum number of BVP candidates that can be registered in a BVP candidate list (merge candidate list) that derives a BVP (merge candidate or BV) using an IBC merge or an IBC merge index in an IBC BVP/merge
  • the BV derivation unit 205A may fix the maximum number of BVP candidates that can be registered in the BVP candidate list to two, and set the maximum number of merge candidates that can be registered in the merge candidate list to six.
  • the BV derivation unit 205A checks the availability of BVs of neighboring blocks, etc., 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 newly checked is the same as a BVP candidate (or merge candidate) that has already been confirmed as available, the BV whose availability is to be newly checked may be determined (prune) as unavailable.
  • the BV derivation unit 205A can improve the coding efficiency of the control information related to the BVP for selecting a BVP from the BVP candidate list by preventing two or more completely matching BVP candidates from being registered in the BVP candidate list.
  • 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 to the pixel precision of the BV finally derived, 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.
  • the BV derivation unit 205A may round each BV in the BVP candidate list to 4 pixel accuracy and then determine whether to use it.
  • the BV derivation unit 205A may use two or more BVP candidate lists (or merge candidate lists) when deriving the 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 in the same way (to the same pixel precision) before constructing the BVP candidate list (or merge candidate list).
  • the BV derivation unit 205A may use two or more BVP candidate lists (or merge candidate lists) when deriving a 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 BVP candidate list (or merge candidate list) may be constructed without rounding the pixel precision of the BVP candidates (or merge candidates) in the other lists.
  • AMVR is a technology that reduces the amount of code in the BVD by coarsening the pixel precision of the BVD required to derive the BV of the IBC
  • IBC and AMVR are applied in combination, it is natural that the pixel precision of the BVP derived by the BV derivation method of the IBC BVP or IBC BVP in the IBC BVP/merge described above, and therefore the pixel precision of the BV, are rounded to the pixel precision of the BVD.
  • the pixel precision of the BVP (or merge candidate) derived by the BV derivation method of the IBC merge in the IBC BVP/merge, and therefore the BV, may or may not be rounded to the pixel precision of the BVD.
  • the BV derivation unit 205A may determine whether to use the pixel precision of each BVP candidate that can be registered in the BVP candidate list of IBC BVP/merge after rounding, but may also 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.
  • the BV derivation unit 205A may also rearrange the registration order of the BVP candidates in the BVP candidate list using a specified method.
  • the BV derivation unit 205A uses the neighboring pixels of the block to be decoded as a template to evaluate the similarity between the BV of each BVP candidate and the neighboring pixels (of the same size as the template of the block to be decoded) of the reference block referenced by the BV, and sorts the BVP candidates in the BVP candidate list in order of the highest similarity.
  • 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.
  • the BV derivation unit 205A can use the similarity between blocks referenced by the BV to sort the BVP candidates in the BVP candidate list.
  • the BV derivation unit 205A can use the Sum of Absolute Transformed Difference (SATD) as such a similarity.
  • SATD Sum of Absolute Transformed Difference
  • the BV derivation unit 205A uses multiple lists, such as the L0 list and the L1 list, it may combine the neighborhood of the blocks referenced by both lists and then evaluate the similarity.
  • the range in which the order of BVs to be registered in the BVP candidate list is rearranged may be all available BVP candidates or may be limited to a portion of them.
  • the BV derivation unit 205A can derive highly accurate BVPs from the BVP candidate list by registering the BVP candidates in the BVP candidate list in the order of similarity described above, which can result in higher accuracy of second intra-frame prediction and therefore improved coding efficiency.
  • the BV derivation unit 205A may correct the reference position of the BVP derived by the IBC BVP, the BVP (BV) derived by the IBC merge, or the BVP (BV) derived by the IBC BVP/merge, using a predetermined method.
  • the specified methods are broadly divided into a method in which BVD is added to the derived BVP (BV) as a correction block vector, and a method in which a new reference position is searched for using a specified search method described later starting from BVP (BV) without adding BVD.
  • the former BV correction method does not apply to IBC BVPs because the BV derivation unit 205A adds new BVDs, and may apply only to BVPs (BVs) that correspond to IBC merges or IBC BVP/merge IBC merge indexes.
  • the BV derivation unit 205A is a method that does not add BVD, so it may be applied to either IBC BVP, IBC merge, or IBC BVP/merge.
  • the BV derivation unit 205A may apply the merge mode with block vector difference (MBVD) disclosed in Non-Patent Document 2.
  • MVD block vector difference
  • the BV derivation unit 205A derives (identifies) the value of the correction block vector based on the control information.
  • the BV derivation unit 205A may set constraints on the possible values (reference positions) of the correction block vector in order to reduce the amount of code of the correction block vector.
  • the BV derivation unit 205A may limit the distance and direction of the possible values (reference position) 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 position) of the correction block vector to a power of 2, and/or may limit the possible values (reference position) of the correction block vector to the top, bottom, left, right, and so on.
  • the decoding unit 201 and the BV derivation unit 205A may control whether or not to include candidates for correction block vectors with decimal pixel accuracy (or whether to use only integer pixel accuracy) in the candidates for correction block vectors in MBVD using control information on a sequence basis and/or a picture basis and/or a slice basis.
  • the BV derivation unit 205A may set constraints on the value (reference position) of the correction block vector depending on the number of block vectors that the block to be decoded has.
  • the BV derivation unit 205A may limit the value (reference position) of the correction block vector to integer pixel accuracy only.
  • the BV derivation unit 205A may be controlled by control information that determines whether to enable derivation of multiple BVs for an IBC on a sequence basis and/or a picture basis and/or a slice basis.
  • the BV derivation unit 205A may apply template matching, which is disclosed in Non-Patent Document 2.
  • Template Matching is a method that uses the neighboring pixels of the block to be decoded as a template, and searches for the reference position of a new BVP (BV) starting from the derived BVP (BV) while checking the similarity with the neighboring pixels of the reference block.
  • BV new BVP
  • the BV derivation unit 205A may limit the search range to a size similar to that described in Non-Patent Document 2 (for example, a range of 8 pixels in the vertical and horizontal directions with the BVP (BV) as the origin).
  • the BV derivation unit 205A may also adaptively limit the pixel precision used in the search, taking into account the pixel precision selected by AMVR or the like for the above-mentioned IBC (for example, if one pixel precision is selected by AMVR or the like, the search pixel precision by Template Matching may also be adjusted to match the one pixel precision).
  • the BV derivation unit 205A may apply a BV search method such as the decoder-side motion vector refinement (DMVR) of Non-Patent Document 1, i.e., decoder-side block vector refinement (DBVR).
  • DMVR decoder-side motion vector refinement
  • DBVR decoder-side block vector refinement
  • the BV derivation unit 205A applies a preset group of correction block vector candidates to two or more derived BVPs (BVs) and corrects the BVs (BVPs) by searching for a correction block vector that has high similarity between multiple reference blocks.
  • BVs derived BVPs
  • the BV derivation unit 205A can use the above-mentioned sum of squared differences (SSE), sum of absolute differences (SAD), Hadamard transform sum of absolute differences (SATD), etc., to calculate the DBVR similarity. Also, since DBVR is based on a search method using two or more BVs, it is not applicable when one BV is derived.
  • SSE sum of squared differences
  • SAD sum of absolute differences
  • SATD Hadamard transform sum of absolute differences
  • the BV derivation unit 205A stores one or more BVs derived for the block to be decoded and the reference image in the memory of the image decoding device 200 in units of a predetermined number of pixels so that the subsequent block to be decoded can refer to them.
  • the BV derivation unit 205A stores the BV and reference image derived for the block to be decoded in memory, and can use the BV and reference image of the block to be decoded to apply IBC to another block to be decoded that is decoded after the block to be decoded. This increases the application rate of IBC and improves coding efficiency.
  • the BV derivation unit 205A may store in memory one or more BVs and reference images derived for the block to be decoded in a memory in a predetermined pixel unit, for example, a 4x4 pixel subblock obtained by subdividing the block to be decoded in 4x4 pixel units as described in Non-Patent Document 1.
  • the BV derivation unit 205A may store in memory one or more BVs and reference images derived for the block to be decoded in pixel units smaller or larger than a 4x4 pixel subblock (powers of 2 or 4).
  • the BV derivation unit 205A may store in memory one or more BVs and reference images derived for the block to be decoded, depending on the number of block vector candidate lists.
  • the BV derivation unit 205A For example, if the BV derivation unit 205A derives one BV, it stores the BV and the corresponding reference image in the L0 list used in normal inter-frame prediction.
  • the BV derivation unit 205A stores one such BV and one corresponding reference image in each of the L0 list and L1 list used in normal inter-frame prediction.
  • the BV derivation unit 205A adds an Ln list in addition to the L0 list and L1 list used in normal inter-frame prediction, and stores one such BV and one corresponding reference image in each list.
  • the BV derivation unit 205A expands it as a usable BVP candidate in the BVP candidate list as follows.
  • the BV derivation unit 205A expands the BV as one list number (one BVP candidate) to the BVP candidate.
  • the BV derivation unit 205A expands the BVs as two or more list numbers (two or more BVP candidates).
  • the BV derivation unit 205A may also store one or more BVs and reference images derived for the block to be decoded in a separate FIFO (First In First Out) memory (hereinafter, history) for reference in a history BVP or history BV merge that references a previously used BV as described above.
  • FIFO First In First Out
  • the BV derivation unit 205A stores the 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 store the BV.
  • the BV derivation unit 205A stores the two or more BVs and the corresponding reference images in the history. However, just as in the case where there is one derived BV, if the same BV already exists in the history, the BV derivation unit 205A does not register the BV.
  • the BV derivation unit 205A may store the corrected BV, or it may store the uncorrected BV.
  • the BV derivation unit 205A can determine in advance whether to register the corrected BV or the uncorrected BV, thereby obtaining the effect of being able to omit the symbols indicating before and after correction.
  • the BV derivation unit 205A can adaptively determine whether to register the corrected BV or the uncorrected BV, thereby improving the coding efficiency.
  • the second intra-frame predicted pixel generation unit 205B is configured to generate a second predicted pixel by synthesizing a predicted pixel of a block to be decoded using pixels (reference pixels) of a reference block referenced by one or more BVs.
  • the second intra-frame predicted pixel generation unit 205B may use the reference pixels of the reference block as they are as predicted pixels for the block to be decoded, or may correct the pixels of the reference block.
  • the second intra-frame predicted pixel generation unit 205B may perform such correction using a polynomial that uses the above-mentioned reference pixels.
  • the second intra-frame predicted pixel generation unit 205B may be configured to generate a correction value P(x, y) as a predicted pixel at coordinates (x, y) in the block to be decoded, using a polynomial (see the following equation) defined using the above-mentioned reference pixel Q(x, y) and weighting coefficients C1 and C2.
  • the second intra-frame predicted pixel generating unit 205B may define the above polynomial using a plurality of reference pixels Q1, Q2, . . . Qn in a block that one BV refers to for one predicted pixel. good.
  • 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 10 shows an example with 10 weighting factors, where Q(x+i,y+j) is represented as Qi ,j for simplicity of notation.
  • the second intra-frame predicted pixel generation unit 205B defines a polynomial using multiple reference pixels in this manner, it is preferable to use nearby pixels.
  • the second intra-frame predicted pixel generation unit 205B may define multiple polynomials based on the distribution of the reference pixels described above.
  • the following formula is an example of a polynomial with two types of coefficients defined at the threshold Th when the histogram of the reference pixels is bimodal.
  • the second intra-frame predicted pixel generation unit 205B may set the threshold value to a value that separates the two peaks.
  • the second intra-frame predicted pixel generation unit 205B may set the threshold value to a simplified value that separates the two peaks.
  • the average value can be used.
  • the second intra-frame predicted pixel generation unit 205B can also apply a polynomial with more types of coefficients if the distribution of the reference pixels described above is multi-peaked.
  • the second intra-frame predicted pixel generation unit 205B may be configured to generate a second predicted pixel by calculating a weighted average of pixels (reference pixels) of two reference blocks referenced by the BVs using a predetermined weight value when the block to be decoded has two BVs.
  • the second intra-frame predicted pixel generation unit 205B may be configured to generate the second predicted pixel by taking a simple 1:1 average of the reference pixels referenced by two or more BVs in the block to be decoded.
  • the second intra-frame predicted pixel generation unit 205B may fix the above-mentioned predetermined weighting value at 1:1, or may set it adaptively.
  • the second intra-frame predicted pixel generation unit 205B adaptively sets the above-mentioned predetermined weighting value, it can set a weighting value that is not 1:1 based on the length of the BV and an evaluation of the similarity between the block to be decoded and the neighboring pixels (templates) of each reference block.
  • the processing load can be reduced.
  • the coding efficiency can be improved.
  • reference blocks with a short BV length are considered to have a small error with the block to be decoded, so by increasing the weight of reference blocks with a short BV length, the prediction accuracy can be improved when generating predicted pixels based on two or more BVs.
  • a reference block with high similarity (low template cost) is considered to have a small error with the block to be decoded, so by increasing the weight of a reference block with a short BV length, the prediction accuracy can be improved when generating predicted pixels based on two or more BVs.
  • the second intra-frame predicted 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, BCW index) that specifies the weight value used in the weighted average, such as the bidirectional coding block-based weighted average (BCW: Bidirectional with CU based Weighting) disclosed in Non-Patent Document 1 and Non-Patent Document 2.
  • BCW index control information
  • BCW index bidirectional coding block-based weighted average
  • the decoding unit 201 may decode the BCW index for a bi-predictive IBC BVP (or an IBC BVP/merge), or may not decode the BCW index for a bi-predictive IBC merge (or an IBC BVP/merge), and may inherit the BCW index of the merge candidate in the merge candidate list.
  • the second intra-frame predicted pixel generation unit 205B may correct the weight value of the BCW corresponding to the value of the inherited BCW index by performing a similarity evaluation using a template for the block to be decoded and the reference block described above.
  • the second intra-frame predicted pixel generation unit 205B may be configured to generate the second predicted pixel by a polynomial defined using multiple reference pixels.
  • the second intra-frame predicted pixel generation unit 205B may be configured to generate a correction value P(x, y) as a predicted pixel at coordinates (x, y) in the block to be decoded, using a polynomial (see the following equation) defined using a plurality of different reference pixels Q(x, y), R(x, y) and weighting coefficients C1, C2, and C3.
  • the second intra-frame predicted pixel generation unit 205B may be configured to define a plurality of polynomials as the above-mentioned polynomial and to be selectable. With such a configuration, an appropriate polynomial can be used, and the effect of improving coding efficiency can be obtained.
  • the second intra-frame predicted pixel generation unit 205B may be configured to derive the coefficients (weighting coefficients) of the above-mentioned polynomial from neighboring pixels of the block to be decoded and neighboring pixels of the reference block.
  • the second intra-frame predicted pixel generation unit 205B derives a weighting coefficient C that causes a neighboring pixel P' of the block to be decoded and a neighboring pixel Q' of the reference block to match through correction (see X1 in FIG. 11).
  • the second intra-frame predicted pixel generation unit 205B defines an error function E shown in the following equation, and derives a weighting coefficient C that minimizes E.
  • the second intra-frame predicted pixel generating unit 205B can use the least squares method or the like to derive such weighting coefficients.
  • the second intra-frame predicted pixel generation unit 205B can derive such weight values using robust estimation such as principal component regression or partial least squares regression to reduce the influence of outliers.
  • the second intra-frame predicted pixel generation unit 205B applies the derived weighting coefficient C to the neighboring pixel Q of the reference block to obtain a correction value P (X2 in FIG. 11), and sets this as a predicted pixel (second predicted pixel) of the block to be decoded (X3 in FIG. 11).
  • the weighting coefficients are derived from neighboring pixels, eliminating the need to decode the weighting coefficients, resulting in improved coding efficiency.
  • weighting coefficients to multiple reference pixels is equivalent to adaptively deriving a BV with more precise decimal precision, which has the effect of improving coding efficiency by reducing the amount of coding for the BV.
  • the second intra-frame predicted pixel generation unit 205B may be configured to use nearby pixels P' and Q' within a certain range to derive the weighting coefficients (polynomial coefficients) described above.
  • the second intra-frame predicted pixel generation unit 205B may be configured to use neighboring pixels within four pixel lines from the block to be decoded to derive the weighting coefficients (polynomial coefficients) described above.
  • the second intra-frame predicted pixel generation unit 205B can also limit the neighboring pixels used to derive the weighting coefficients described above.
  • the second intra-frame predicted pixel generation unit 205B may derive weighting coefficients using only neighboring pixels in the area located above the block to be decoded, as shown in FIG. 12(b), or may derive weighting coefficients using only neighboring pixels in the area located to the left of the block to be decoded, as shown in FIG. 12(c).
  • the second intra-frame predicted pixel generator 205B may be configured to be able to select multiple ranges for specifying the above-mentioned neighboring pixels. With this configuration, it is possible to derive appropriate weighting coefficients, and the effect of improving coding efficiency can be obtained.
  • the second intra-frame predicted pixel generation unit 205B may perform correction to the reference pixels in the reference block of the block to be decoded by calculating a weighted average between the reference pixels in the reference block of the block to be decoded and nearby pixels in the reference block of an adjacent block, rather than the reference pixels themselves of the block to be decoded.
  • Figure 13 shows a case where an adjacent block to the block to be decoded has BV.
  • the second intra-frame predicted pixel generation unit 205B obtains neighboring pixels (hereinafter, adjacent reference neighboring pixels) that correspond to the relative position of the block to be decoded in the adjacent reference block referenced by the BV of the adjacent block.
  • neighboring pixels hereinafter, adjacent reference neighboring pixels
  • the adjacent block is located to the left of the block to be decoded, so the second intra-frame predicted pixel generation unit 205B obtains adjacent reference neighborhood pixels to the right of the adjacent reference block.
  • the range of adjacent reference neighborhood pixels may be set to a fixed value or may be set to a variable value.
  • the second intra-frame predicted pixel generation unit 205B may change the range of adjacent reference neighboring pixels depending on the block size and aspect ratio.
  • the second intra-frame predicted pixel generation unit 205B calculates a weighted average of the adjacent reference neighboring pixels and the reference pixels of the block to be decoded.
  • this process is referred to as "IBC OBMC”.
  • the second intra-frame predicted pixel generation unit 205B may determine whether or not to apply IBC OBMC on a block-to-be-decoded basis, or on a block-to-be-decoded-based basis (hereinafter, a sub-block) that is smaller than the block to be decoded within the block to be decoded, or may make the determination in two stages, on a decoded block basis and on a sub-block basis.
  • a sub-block block-to-be-decoded-based basis
  • the second intra-frame predicted pixel generation unit 205B may determine whether or not to apply IBC/OBMC for each 4 ⁇ 4 pixel subblock that faces the block boundary between the left and top of the block to be decoded, as disclosed in Non-Patent Document 2.
  • IBC OBMC can be applied to those parts of the block to be decoded where IBC OBMC works effectively, improving prediction accuracy.
  • the second intra-frame predicted pixel generation unit 205B may also apply IBC OBMC to blocks (hereinafter, sub-blocks) smaller than the block to be decoded within the block to be decoded, based on the result of determining whether or not IBC OBMC is applied.
  • the second intra-frame predicted pixel generation unit 205B may determine to apply IBC OBMC when a predetermined condition is satisfied for each block to be decoded and/or each sub-block, and may determine not to apply IBC OBMC when the predetermined condition is not satisfied.
  • the second intra-frame predicted pixel generation unit 205B may configure the predetermined condition to be at least one of the following conditions. 1. Control information (IBC OBMC flag) that enables IBC OBMC to be applied in units of sequences and/or pictures and/or slices is valid. 2. Control information (IBC OBMC flag) that enables IBC OBMC to be applied in units of blocks to be decoded is valid. 3. The area (number of pixels) of the block to be decoded is 32 pixels or more. * Here, condition 3 may be 16 pixels, 64 pixels, or 128 pixels instead of 32 pixels. 4. An adjacent block adjacent to the block (or sub-block) to be decoded has a BV or motion vector. 5.
  • the BV of the block (or sub-block) to be decoded is different from the BV or motion vector of the adjacent block. 6.
  • the local luminance compensation disclosed in Non-Patent Document 2 is not applied (is disabled) to the block to be decoded.
  • the maximum error between the reference pixel based on the BV of the block (or sub-block) to be decoded and the pixel value of the adjacent reference neighborhood pixel based on the BV or motion vector of the adjacent block is equal to or less than a predetermined threshold.
  • the block (or sub-block) to be decoded has one BV.
  • the adjacent block of the block (or sub-block) to be decoded has one BV or motion vector. Examples of modifications of the above-mentioned predetermined conditions are described below.
  • the second intra-frame predicted pixel generation unit 205B may determine that the BV of the block (or sub-block) to be decoded is different from the BV or motion vector of the adjacent block.
  • the second intra-frame predicted pixel generation unit 205B may use predicted pixels obtained by applying an interpolation filter to the reference pixels, rather than using the reference pixels themselves.
  • the second intra-frame predicted pixel generation unit 205B can set different application restrictions for IBC and OBMC depending on the number of derived BVs for the block (or sub-block) to be decoded or for an adjacent block. Specifically, they are as follows.
  • the second intra-frame predicted pixel generation unit 205B may add a condition that the block (or sub-block) to be decoded has one BV to the above-mentioned predetermined conditions.
  • the second intra-frame predicted pixel generation unit 205B limits the application of IBC OBMC only when the block (or subblock) to be decoded has one BV, thereby suppressing an increase in memory bandwidth required to obtain adjacent reference neighboring pixels required when applying IBC OBMC.
  • the second intra-frame predicted pixel generation unit 205B may add a condition to the above-mentioned predetermined conditions that the adjacent block to the block (or sub-block) to be decoded has one BV or motion vector.
  • the second intra-frame predicted pixel generation unit 205B limits the application of IBC OBMC only when the BV or motion vector of the adjacent block of the block (or subblock) to be decoded is one, thereby suppressing an increase in memory bandwidth for obtaining adjacent reference neighboring pixels required when applying IBC OBMC.
  • the second intra-frame predicted pixel generation unit 205B may select one BV or motion vector by comparing the size or template cost of the BVs or motion vectors of the adjacent blocks.
  • the second intra-frame predicted pixel generation unit 205B may select the BV or motion vector of the adjacent block that has the smallest magnitude of the BV or motion vector of the adjacent block or the smallest template cost.
  • edges are often clear in the original image, and block boundaries tend to be discontinuous. Therefore, in such images, it is easier to suppress prediction errors near block boundaries by not applying IBC/OBMC.
  • the second intra-frame predicted pixel generation unit 205B can apply IBC OBMC only in the case of specific slices or specific block sizes.
  • IBC applies slice restrictions
  • IntraTMP does not apply slice restrictions
  • IntraTMP has a smaller BV search processing amount and lower prediction accuracy than IBC, so by increasing the number of applicable targets, it is possible to obtain the effect of improving coding efficiency.
  • IBC OBMC weighted average the second intra-frame predicted pixel generation unit 205B may apply the correction used in the above-mentioned correction of the reference pixels to the above-mentioned neighboring pixels.
  • the second intra-frame predicted pixel generation unit 205B derives weighting coefficients from all or part of the pixels of the adjacent block and the pixels of the adjacent reference block.
  • the second intra-frame predicted pixel generation unit 205B designates the pixel of the adjacent block as P' and the pixel of the adjacent reference block as Q', derives a weighting coefficient C (Y1 in FIG. 14), applies it to the nearby pixel Q of the adjacent reference block to obtain a correction value P (Y2 in FIG. 14), and calculates a weighted average with the predicted pixel of the block to be decoded (Y3 in FIG. 14).
  • this configuration reduces prediction errors and improves coding efficiency by reflecting nearby pixels in adjacent reference blocks in the predicted pixels of the block to be decoded.
  • the second intra-frame predicted pixel generation unit 205B adjusts the number of BVs in the block with the greater number of BVs to the number of BVs in the block with the fewer number of BVs (reducing the number of BVs in the block to be decoded and the adjacent blocks to the minimum number of BVs).
  • the second intra-frame predicted pixel generation unit 205B adjusts the pixel precision of the BV with finer pixel precision to the pixel precision of the BV with coarser pixel precision (rounding the pixel precision of each BV of the block to be decoded and the adjacent block to the maximum pixel precision).
  • the second intra-frame predicted pixel generation unit 205B may perform a weighted average of reference pixels (reference pixels) of one or more BVs for each divided area divided into two by a dividing line of the IBC GPM, in accordance with the distance from the dividing line of the IBC GPM.
  • the second intra-frame predicted pixel generation unit 205B may set the number of pixels in the area in which such weighted averaging is performed, i.e., in the direction from the division line of the IBC GPM to each divided area, either fixedly or adaptively.
  • the second intra-frame predicted pixel generation unit 205B may set values such as 0 pixel, 1/4 pixel, 1/2 pixel, 1 pixel, 2 pixels, 4 pixels, and 8 pixels as a fixed setting method.
  • the division lines of the IBC GPM can be easily applied, and the pixel values of the edge boundaries specific to screen images can be maintained without excessive smoothing, making it easier to reduce prediction errors.
  • the second intra-frame predicted pixel generation unit 205B can use the GPM adaptive blending method disclosed in Non-Patent Document 2 as a method for adaptively setting.
  • Non-Patent Document 2 For example, for natural images, it is easy to reduce prediction errors near the dividing lines of the IBC GPM by adaptively setting the number of pixels for 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.
  • the inverse transform unit 203 may adaptively select one transform base from a plurality of different transform bases and apply an inverse transform process to the transform coefficients of the current block to which IBC (or IntraTMP) is applied.
  • the inverse transform unit 203 may use the multiple transform bases (MTS: Multiple Transform Selection) disclosed in Non-Patent Document 1.
  • MTS Multiple Transform Selection
  • the MTS disclosed in Non-Patent Document 1 includes an MTS for intra-frame prediction and an MTS for inter-frame prediction.
  • the inverse transform unit 203 may apply MTS for intraframe prediction disclosed in Non-Patent Document 1, or may apply MTS for interframe prediction disclosed in Non-Patent Document 1.
  • the inverse transform unit 203 may identify and apply a transform base based on the value of control information for identifying a candidate transform base of the MTS decoded or estimated by the decoding unit 201 from among the candidate transform bases in the MTS.
  • the inverse transform unit 203 may apply a two-stage inverse transform process using different or the same transform bases to the transform coefficients of the block to be decoded to which IBC (or IntraTMP) is applied.
  • the inverse transformation unit 203 may use the low-frequency non-separable transform (LFNST) disclosed in Non-Patent Document 1.
  • LNNST low-frequency non-separable transform
  • the decoding unit 201 may select one transformation base from among a plurality of different transformation bases and decode control information for specifying whether or not to inverse transform the transformation coefficients, and the inverse transformation unit 203 may identify and apply a transformation base based on the value of the control information for identifying a candidate transformation base for the LFNST decoded or estimated by the decoding unit 201 from among the candidates for the transformation base in the LFNST.
  • the blocks to which IBC (or IntraTMP) is applied often have complex image characteristics such as edges and stripes. Therefore, the transform coefficients derived after transforming the prediction error of the block to be decoded to which IBC (or IntraTMP) is applied tend to be distributed in the high-frequency components, or have a bias toward horizontal, vertical, or diagonal components.
  • Adaptively selecting and applying an effective inverse transform base from among multiple different transform bases to such a distribution of transform coefficients, or applying a two-stage inverse transform using different or the same transform bases is expected to reduce the redundancy between transform coefficients (and thus the spatial redundancy of prediction errors), and as a result, it is expected to improve coding efficiency.
  • the RGB signals that make up the moving images may be converted into a luminance signal (Y signal) and a color difference signal (UV signal or CbCr signal) and then decoded (or encoded).
  • Y signal luminance signal
  • CbCr signal color difference signal
  • the number of pixels of the color difference signal may be thinned out (downsampled) at a fixed interval (e.g., halved horizontally and/or vertically) relative to the number of pixels of the luminance signal.
  • Non-Patent Document 1 discloses a technique for making the division structure of the decoding (or encoding) tree blocks in the same decoding (or encoding) tree block the same (single tree structure) and a technique for changing the structure (dual tree structure) in a luminance signal image and a color difference signal image.
  • the BV derivation unit 205A may derive a BV for the block to be decoded of the color difference signal based on the magnitude (horizontal component and vertical component) 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 color difference signal.
  • the BV derivation unit 205A may reduce the size (horizontal and vertical components) of one or more BVs derived for a block to be decoded of the luminance signal in accordance with the downsampling ratio of the luminance signal and the color difference signal.
  • the BV derivation unit 205A does not need to derive a BV for the block to be decoded of the color difference signal.
  • BV mode The control information (syntax) used by the decoder 201 to decode the mode in which BV is held (hereinafter, BV mode) will be described below.
  • the coding information input to the decoding unit 201 may include a sequence parameter set (SPS) that summarizes the control information (syntax) for each sequence unit to be decoded.
  • SPS sequence parameter set
  • such coding information may include a picture parameter set (PPS) or a picture header (PH) that summarizes control information for each picture to be decoded.
  • PPS picture parameter set
  • PH picture header
  • such coding information may include a slice header (SH) that summarizes control information for each slice to be decoded.
  • SH slice header
  • FIG. 15 shows a method for controlling the decoding of a specific flag related to the IBC on a sequence-by-sequence basis.
  • the decoding unit 201 operates as follows.
  • step S100 the decoding unit 201 determines whether or not sps_ibc_enabled_flag (second syntax) is 1. If it is 1, the operation proceeds to step S101, and if it is not 1, the operation proceeds to step S102.
  • sps_ibc_enabled_flag second syntax
  • sps_ibc_enabled_flag is a flag that controls (specifies) whether IBC can be applied on a sequence-by-sequence basis, and the decoding unit 201 specifies that IBC can be applied when sps_ibc_enabled_flag is 1, and specifies that IBC cannot be applied when sps_ibc_enabled_flag is 0.
  • the decoding unit 201 decodes the specified flag in step S101, and ends this process without decoding the specified flag in step S102.
  • the decryption unit 201 may decrypt various flags related to the IBC as shown in FIG. 16 as the predetermined flag. Specifically, they are as follows.
  • the sps_biibc_enabled_flag shown in FIG. 16 is a flag (first syntax) that controls (specifies) whether or not bi-predictive IBC can be applied on a sequence-by-sequence basis.
  • sps_biibc_enabled_flag 1
  • the decoding unit 201 specifies that bi-predictive IBC can be applied
  • sps_biibc_enabled_flag is 0, the decoding unit 201 specifies that bi-predictive IBC cannot be applied.
  • the decoding unit 201 may decode sps_multiiibc_enabled_flag as a modified example of sps_biibc_enabled_flag.
  • sps_multiibc_enabled_flag is a flag that controls (specifies) whether or not multi-prediction IBC can be applied on a sequence-by-sequence basis.
  • sps_multiibc_enabled_flag 1
  • the decoding unit 201 specifies that multi-prediction IBC can be applied
  • sps_multiibc_enabled_flag 0
  • the decoding unit 201 specifies that multi-prediction IBC cannot be applied.
  • the sps_ibcmbvd_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether IBC MBVD is applicable on a sequence-by-sequence basis.
  • sps_ibcmbvd_enabled_flag 1
  • the decoding unit 201 specifies that IBC MBVD is applicable
  • sps_ibcmbvd_enabled_flag is 0, the decoding unit 201 specifies that IBC MBVD is not applicable.
  • the sps_six_minus_max_num_ibc_merge_cand shown in FIG. 16 is control information that sets the maximum value of the candidate list for the IBC merge (or IBC BVP) described above on a sequence-by-sequence basis.
  • the maximum value that can be set in the candidate list of an 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), the maximum value can be changed using such control information.
  • the decoding unit 201 may control (change the setting) the maximum value of the candidate list of the IBC merge (or IBC BVP) of the image decoding device 200 on a sequence-by-sequence basis as follows:
  • MaxNumIbcMergeCand is the maximum value of a block vector candidate list for deriving one or more block vectors used in IBC merge (or IBC BVP) set in units of a sequence (or a picture, a slice, or a block to be decoded). is an internal parameter in the decoder that represents
  • the sps_ibctm_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not TM (IBC TM) can be applied to IBC on a sequence-by-sequence basis.
  • IBC TM TM
  • the decoding unit 201 specifies that IBC TM can be applied, and when sps_ibctm_enabled_flag is 0, it specifies that IBC TM cannot be applied.
  • the sps_ibcdbvr_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether DBVR (IBC DBVR) can be applied to IBC on a sequence-by-sequence basis.
  • DBVR IBC DBVR
  • sps_ibcdbvr_enabled_flag 1
  • the decoding unit 201 specifies that IBC DBVR is applicable
  • sps_ibcdbvr_enabled_flag it specifies that IBC DBVR is not applicable.
  • the sps_ibcciip_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not combined intra-inter prediction (CIIP) (IBC CIIP) for IBC disclosed in Non-Patent Document 2 can be applied on a sequence-by-sequence basis.
  • CIIP intra-inter prediction
  • the decoding unit 201 specifies that IBC CIIP is applicable, and when sps_ibcciip_enabled_flag is 0, the decoding unit 201 specifies that IBC CIIP is inapplicable.
  • the sps_ibcgpm_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not IBC GPM can be applied on a sequence-by-sequence basis.
  • sps_ibcgpm_enabled_flag 1
  • the decoding unit 201 specifies that IBC GPM can be applied
  • sps_ibcgpm_enabled_flag it specifies that IBC GPM cannot be applied.
  • the sps_ibcobmc_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not IBC OBMC can be applied on a sequence-by-sequence basis.
  • sps_ibcobmc_enabled_flag 1
  • the decoding unit 201 specifies that OBMC for IBC (IBC OBMC) is applicable
  • sps_ibcobmc_enabled_flag it specifies that IBC OBMC is not applicable.
  • the sps_ibcflm_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not the weighting coefficient defined by the above-mentioned polynomial can be applied to IBC on a sequence-by-sequence basis (IBC FLM: IBC Filtered Linear Model).
  • IBC FLM IBC Filtered Linear Model
  • the sps_ibcmts_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not MTS (IBC MTS) can be applied to IBC on a sequence-by-sequence basis.
  • IBC MTS MTS
  • the decoding unit 201 specifies that IBC MTS is applicable, and when sps_ibcmts_enabled_flag is 0, the decoding unit 201 specifies that IBC MTS is not applicable.
  • the sps_ibclfnst_enabled_flag shown in FIG. 16 is a flag that controls (specifies) whether or not LFNST (IBC LFNST) can be applied to IBC on a sequence-by-sequence basis.
  • LFNST LFNST
  • the decoding unit 201 specifies that IBC LFNST is applicable, and when sps_ibclfnst_enabled_flag is 0, it specifies that IBC FLNST is not applicable.
  • the decryption unit 201 may specify their values as 0.
  • control may be performed on a finer unit, i.e., on a picture or slice basis. Also, control may be performed only on these specific hierarchical levels, or control may be performed in multiple stages across multiple hierarchical levels.
  • the correction method is set on a sequence, picture, or slice basis, but it is also possible to directly select the method on a block basis (described below) without setting these. In this case, the increase in header information mentioned above can be avoided.
  • a decoding method will be described using an IBC that uses two BVs (Bipredictive IBC) as an example, but a similar decoding method may be realized by interpreting it as an IBC that uses two or more BVs (Multipredictive IBC).
  • FIG. 17 is a diagram showing an example of a method for decoding a flag that controls (specifies) whether or not bi-predictive IBC can be applied in the decoding unit 201.
  • the decoding unit 201 may decode or estimate without decoding a flag that controls (specifies) whether or not bi-predictive IBC is applicable, as follows:
  • step S200 the decoding unit 201 determines whether sps_ibc_enabled_flag is 1 and sh_slice_type is I (I slice).
  • step S201 If the answer is Yes, the operation proceeds to step S201; if the answer is No, the operation proceeds to step S202.
  • sh_slice_type is control information (syntax) that indicates the type of slice that contains the block to be decoded on a slice-by-slice basis.
  • Slice types include I slices (slices to which first intraframe prediction or second intraframe prediction can be applied), B slices (slices to which first intraframe prediction, second intraframe prediction or interframe prediction can be applied), and P slices (slices to which first intraframe prediction, second intraframe prediction or interframe prediction can be applied; however, only one-way prediction is applicable for interframe prediction).
  • step S201 the decoding unit 201 decodes sh_biibc_enabled_flag and ends this process.
  • step S202 the decoding unit 201 ends this process without decoding sh_biibc_enabled_flag.
  • sh_biibc_enabled_flag (third syntax) is a flag that controls whether or not bi-predictive IBC can be applied on a slice-by-slice basis.
  • the decoding unit 201 may estimate the value of sh_biibc_enabled_flag according to the value of sh_slice_type.
  • the decoding unit 201 may estimate sh_biibc_enabled_flag to be 1, and when sh_slice_type is P (when it is a P slice), the decoding unit 201 may estimate sh_biibc_enabled_flag to be 0.
  • the decoding unit 201 may estimate sh_biibc_enabled_flag according to the following formula.
  • I slices may have image characteristics in which first intra-frame prediction is more effective than second intra-frame prediction such as IBC or IntraTMP. Therefore, by controlling whether or not bi-predictive IBC can be applied on a slice-by-slice basis, bi-predictive IBC can be applied to slices in which second intra-frame prediction is particularly effective, improving coding efficiency. On the other hand, bi-predictive IBC cannot be applied to slices in which second intra-frame prediction is not effective. This reduces the amount of coding required for the bi-predictive IBC (described later), and is expected to result in improved coding efficiency.
  • sh_biibc_enabled_flag The reason for not decoding sh_biibc_enabled_flag and instead estimating sh_biibc_enabled_flag to be 1 for B slices is that normal interframe prediction (including bi-prediction using two motion vectors) is applicable to B slices, so by making bi-predictive IBC always applicable, it is possible to standardize the design with normal interframe prediction and is also expected to improve coding efficiency.
  • FIG. 18 is a modified example of FIG. 17. The difference between FIG. 17 and FIG. 16 is step S200A.
  • step S200A the decoding unit 201 determines whether sps_ibc_enabled_flag is 1 and sh_slice_type is I or B (whether it is an I slice or a B slice).
  • step S201 If the answer is Yes, the operation proceeds to step S201; if the answer is No, the operation proceeds to step S202.
  • step S200A in addition to sh_slice_type being I (I slice), by adding that sh_slice_type is B (B slice), even if the slice that contains the block to be decoded is a B slice, the applicability of bi-predictive IBC can be controlled on a slice-by-slice basis, which is expected to improve coding efficiency.
  • FIG. 19 is a diagram showing an example of a decoding method of pred_mode_ibc_flag, which is a flag that controls whether or not IBC is applied to each block to be decoded (decoded block, predicted block, or transformed block) in the decoding unit 201.
  • the decoding unit 201 may determine that IBC is to be applied to the block to be decoded (decoded block, predicted block, or transformed block) when pred_mode_ibc_flag is 1, and may determine that IBC is not to be applied when pred_mode_ibc_flag is 0.
  • the decoding unit 201 may estimate pred_mode_ibc_flag to be 0.
  • the decoding unit 201 may determine whether or not to apply IBC to a block to be decoded (decoded block, predicted block, or transformed block) depending on whether or not the block to be decoded is a single tree.
  • the decoding unit 201 may determine that IBC should be applied in the case of a single tree, and may determine that IBC should not be applied in the case of a dual tree.
  • the decoding unit 201 may determine to apply IBC to luminance blocks even in a dual tree.
  • the decoding unit 201 may control whether the block to be decoded (decoded block, predicted block, or transformed block) is an IBC by using CuPredMode, an internal parameter that indicates the prediction mode of the block to be decoded, as in Non-Patent Document 1.
  • the decoding unit 201 may determine that the block to be decoded (decoded block, predicted block, or transformed block) is IBC, and if not, may determine that the block to be decoded (decoded block, predicted block, or transformed block) is not IBC.
  • step S300 the decryption unit 201 determines whether a predetermined condition is satisfied.
  • step S301 If the answer is Yes, the operation proceeds to step S301; if the answer is No, the operation proceeds to step S302.
  • step S301 the decoding unit 201 decodes pred_mode_ibc_flag and ends this process.
  • step S302 the decoding unit 201 does not decode pred_mode_ibc_flag and ends this process.
  • the predetermined condition may include at least one of the following conditions.
  • the width or height of the block to be decoded is not 128 pixels (the width or height of the block to be decoded is 64 pixels or less) *Here, the number of pixels that is 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.
  • the prediction mode of the block to be decoded is not inter-frame prediction or first intra-frame prediction.
  • the block to be decoded is not a chrominance block of a dual tree.
  • FIG. 20 shows an example of a method for selecting an IBC mode (the above-mentioned IBC BVP, IBC merge, or IBC BVP/merge) in the decoding unit 201.
  • the decryption unit 201 may select a unique mode from the IBC modes (IBC BVP, IBC merge, and IBC BVP/merge described above). Specifically, the mode is as follows.
  • step S400 the decoding unit 201 determines whether general_merge_flag is 1.
  • step S401 If the answer is Yes, the operation proceeds to step S401; if the answer is No, the operation proceeds to step S402.
  • general_merge_flag is a flag that controls (specifies) whether interframe prediction or IBC merging is applied for each block to be decoded.
  • step S401 the decoding unit 201 determines whether CuPredMode is MODE_IBC.
  • step S403 If the answer is Yes, the operation proceeds to step S403; if the answer is No, the operation proceeds to step S404.
  • step S403 the decoding unit 201 transitions to the decoding process related to the IBC merge, which will be described later (using Figures 21 to 23).
  • step S404 the decoding unit 201 transitions to a decoding process other than the IBC merge, which will be described later.
  • step S402 the decoding unit 201 determines whether CuPredMode is MODE_IBC.
  • step S405 If the answer is Yes, the operation proceeds to step S405; if the answer is No, the operation proceeds to step S406.
  • step S405 the decoding unit 201 transitions to the decoding process related to the IBC BVP, which will be described later (using FIG. 23).
  • step S406 the decoding unit 201 transitions to decoding processing other than the IBC BVP, which will be described later.
  • FIG. 21 is a diagram showing an example of a method for decoding a flag for controlling (determining) whether or not bi-predictive IBC merging is enabled for each block to be decoded in the decoding unit 201 (i.e., whether or not bi-predictive IBC merging is applied for each block to be decoded).
  • the decoding unit 201 may decode a flag for controlling (specifying) whether or not bi-predictive IBC merging is enabled for each block to be decoded (i.e., whether or not bi-predictive IBC merging is applied for each block to be decoded). Specifically, this is as follows.
  • step S500 the decryption unit 201 determines whether or not a predetermined condition 2 is satisfied.
  • step S501 If the answer is Yes, the operation proceeds to step S501; if the answer is No, the operation proceeds to step S502.
  • step S501 the decoding unit 201 decodes biibc_merge_flag and ends this process.
  • step S502 the decoding unit 201 ends this process without decoding biibc_merge_flag.
  • biibc_merge_flag is a flag (fourth syntax) that controls (specifies) whether or not bi-predictive IBC merging is applied for each block to be decoded.
  • biibc_merge_flag 1
  • the decoding unit 201 applies bi-predictive IBC merging to the block to be decoded
  • biibc_merge_flag 0
  • the decoding unit 201 specifies that bi-predictive IBC merging is not to be applied to the block to be decoded.
  • the decoding unit 201 may estimate biibc_merge_flag to be 0.
  • the predetermined condition 2 may include at least one of the conditions listed below.
  • 1. sps_ibc_enabled_flag is 1. 2.
  • sh_biibc_enabled_flag is 1 (and/or sps_biibc_enabled_flag is 1) 3.
  • general_merge_flag is 1;
  • CuPredMode is IBC;
  • sh_slice_type is I or B.
  • a condition based on the block size (product of the number of vertical and horizontal pixels) of the block to be decoded may be added to the predetermined condition 2.
  • a condition may be added that the block size of the block to be decoded is 16 pixels or more or 32 pixels or more (or the width or height of the block to be decoded is 8 pixels or more).
  • a condition may be added that the block size of the block to be decoded is 32 pixels or less or 16 pixels or less, i.e., the number of pixels is smaller than the threshold used in the decision criteria for determining whether or not to apply IBC merging for unidirectional prediction.
  • the decoding unit 201 decodes an IBC merge index (fifth syntax), which is control information for identifying a merge candidate in the merge candidate list, in order to select one or more merge candidates from the above-mentioned merge candidate list.
  • IBC merge index (fifth syntax)
  • FIG. 22 shows an example of a method for decoding control information related to IBC merging in the decoding unit 201.
  • the decoding unit 201 may control the decoding of control information related to the IBC merge. Specifically, this is as follows.
  • step S600 the decoding unit 201 determines whether biibc_merge_flag is 1.
  • step S601 If the answer is Yes, the operation proceeds to step S601; if the answer is No, the operation proceeds to step S602.
  • step S601 the decryption unit 201 determines whether MaxNumIbcMergeCand is greater than 2.
  • step S603 If the answer is Yes (MaxNumIbcMergeCand is greater than 2), the operation proceeds to step S603; if the answer is No (MaxNumIbcMergeCand is less than or equal to 2), the operation proceeds to step S607.
  • step S603 the decoding unit 201 decodes ibc_merge_idx0.
  • ibc_merge_idx0 is the first IBC merge index (sixth syntax) in bi-predictive IBC merging.
  • step S605 If the answer is Yes, the operation proceeds to step S605; if the answer is No, the operation proceeds to step S606.
  • step S605 the decoding unit 201 decodes ibc_merge_idx1 and ends this process.
  • step S606 the decoding unit 201 ends this process without decoding ibc_merge_idx1.
  • ibc_merge_idx1 is the second IBC merge index (seventh syntax) in bi-predictive IBC merging.
  • ibc_merge_idx0 is not MaxNumIbcMergeCand-2
  • ibc_merge_idx0 is MaxNumIbcMergeCand-2
  • ibc_merge_idx1 is MaxNumIbcMergeCand-1, as will be described later.
  • step S606 the decoding unit 201 is expected to reduce the amount of code by not decoding ibc_merge_idx1.
  • step S607 the decoding unit 201 ends this process without decoding ibc_merge_idx0 and ibc_merge_idx1.
  • MaxNumIbcMergeCand is the maximum number of merge candidates that can be registered in the merge candidate list in the IBC merge. If it is 2 or less in step S601, the IBC merge candidate to be used is self-evident even if the two merge indexes are not decoded in the bi-predictive IBC merge.
  • 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.
  • step S602 the decryption unit 201 determines whether MaxNumIbcMergeCand is greater than 1.
  • step S608 If the answer is Yes, the operation proceeds to step S608; if the answer is No, the operation proceeds to step S609.
  • step S608 the decoding unit 201 decodes ibc_merge_idx and ends this process.
  • step S609 the decoding unit 201 ends this process without decoding ibc_merge_idx.
  • step S602 if MaxNumIbcMergeCand is not greater than 1, i.e., if MaxNumIbcMergeCand is 1, the IBC merge candidate to be used is self-evident, even if the merge index selected in the unidirectional IBC merge is not decoded.
  • step S609 the decoding unit 201 does not decode ibc_merge_idx, which is expected to reduce the amount of code.
  • the bi-predictive IBC merge merge indexes ibc_merge_idx0 and ibc_merge_idx1
  • the uni-predictive IBC merge merge index ibc_merge_idx
  • ibc_merge_idx0 and ibc_merge_idx may be made common in the image decoding device 200.
  • context values for decoding encoding
  • methods for decoding from binary to multi-value encoding from multi-value to binary
  • truncated binarization may be standardized.
  • FIG. 23 shows a modified example of the method for decoding control information related to IBC merging described with reference to FIG. 22 (constructing different lists like those shown in FIG. 7 for each block vector).
  • the decoding unit 201 may decode control information related to IBC merging. Specifically, the information is as follows.
  • step S600 the decoding unit 201 determines whether biibc_merge_flag is 1.
  • step S601A If the answer is Yes, the operation proceeds to step S601A; if the answer is No, the operation proceeds to step S602.
  • step S601A the decryption unit 201 determines whether MaxNumIbcMergeCand is greater than 1.
  • step S608A If the answer is Yes, the operation proceeds to step S608A; if the answer is No (MaxNumIbcMergeCand is 1 or less), the operation proceeds to step S609A.
  • step S608A the decoding unit 201 decodes ibc_merge_idx and ends this process.
  • step S609A the decoding unit 201 ends this process without decoding ibc_merge_idx.
  • Steps S602, S608, and S609 are the same as those in FIG. 22.
  • FIG. 24 is a diagram showing an example of a method for decoding a flag to control (determine) whether or not 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).
  • the decoding unit 201 may decode a flag for controlling (specifying) whether or not IBC BVP/merge is enabled for each block to be decoded (i.e., whether or not IBC BVP/merge is applied for each block to be decoded). Specifically, it is as follows.
  • step S700 the decryption unit 201 determines whether or not the predetermined condition 3 is satisfied.
  • step S701 If the answer is Yes, the operation proceeds to step S701; if the answer is No, the operation proceeds to step S702.
  • step S701 the decoding unit 201 decodes ibc_bvpmerge_flag and ends this process.
  • step S702 the decoding unit 201 ends this process without decoding ibc_bvpmerge_flag.
  • ibc_bvpmerge_flag is a flag (8th syntax) that controls (specifies) whether or not IBC BVP/merge is enabled for each block to be decoded (i.e., whether or not IBC BVP/merge is applied for each block to be decoded).
  • ibc_bvpmerge_flag 1
  • the decoding unit 201 applies IBC BVP/merge to the block to be decoded
  • ibc_bvpmerge_flag 0
  • the decoding unit 201 may estimate that ibc_bvpmerge_flag is 0.
  • the predetermined condition 3 may include at least one of the conditions listed below. 6. sps_ibc_enabled_flag is 1; 7. general_merge_flag is 1; 8. CuPredMode is IBC; 9. sh_slice_type is I or B. As a modification, a condition based on the block size (product of the number of vertical and horizontal pixels) of the block to be decoded may be added to the predetermined condition 3.
  • a condition may be added that the block size of the block to be decoded is 16 pixels or more or 32 pixels or more (or the width or height of the block to be decoded is 8 pixels or more).
  • a condition may be added that the block size of the block to be decoded is 32 pixels or less or 16 pixels or less, i.e., the number of pixels is smaller than the threshold used in the decision criteria for determining whether or not to apply IBC merging for unidirectional prediction.
  • FIG. 25 shows an example of a method for decoding control information related to IBC BVP/merge in the decoding unit 201.
  • the decoding unit 201 may decode control information related to the IBC BVP/merge. Specifically, the information is as follows.
  • step S800 the decoding unit 201 determines whether ibc_bvpmerge_flag is 1.
  • step S801 If the answer is Yes, the operation proceeds to step S801; if the answer is No, the operation ends the process.
  • step S801 the decoding unit 201 decodes the control information related to the BVP and BVD, and proceeds to step S802.
  • step S802 the decryption unit 201 determines whether MaxNumIbcMergeCand is greater than 1.
  • step S803 If the answer is Yes, the operation proceeds to step S803; if the answer is No (MaxNumIbcMergeCand is 1 or less), the operation proceeds to step S804.
  • step S803 the decoding unit 201 decodes ibc_merge_idx, and ends this process.
  • step S804 the decoding unit 201 ends this process without decoding ibc_merge_idx.
  • MaxNumIbcMergeCand is the maximum number of merge candidates that can be registered in the merge candidate list in the IBC merge. If it is 1 or less in step S801, the IBC merge candidate to be used is self-evident, even if the merge index is not decoded in the IBC BVP/merge.
  • step S804 the decoding unit 201 does not decode ibc_merge_idx, which is expected to reduce the amount of code.
  • the following describes a method for decoding control information related to the above-mentioned MBVD, which corrects the BV of the IBC in the decoding unit 201, using FIG. 26.
  • FIG. 26 shows an example of a method for decoding control information related to the above-mentioned MBVD, which corrects the BV of the IBC in the decoding unit 201.
  • the decoding unit 201 may decode the control information related to the above-mentioned MBVD that corrects the BV of the IBC. Specifically, it is as follows.
  • step S901 the decoding unit 201 determines whether biibc_merge_flag is 1.
  • step S902 If the answer is Yes, the operation proceeds to step S902; if the answer is No, the operation proceeds to step S903.
  • step S902 the decoding unit 201 determines whether ibc_mbvd_flag is 1.
  • step S904 If the answer is Yes, the operation proceeds to step S904; if the answer is No, the operation proceeds to step S905.
  • ibc_mbvd_flag is a flag for controlling whether or not MBVD is applied for each block to be decoded.
  • ibc_mbvd_flag 1
  • the decoding unit 201 determines that MBVD is to be applied, and if ibc_mbvd_flag is 0, it determines that MBVD is not to be applied.
  • the decoding unit 201 may estimate that ibc_mbvd_flag is 0.
  • step S904 the decoding unit 201 determines whether bimbvd_flag is 1.
  • step S906 If the answer is Yes, the operation proceeds to step S906; if the answer is No, the operation proceeds to step S907.
  • bimbvd_flag is a flag for controlling whether or not to apply MBVD to two pairs of merge candidates (BVs) in bi-predictive IBC merging for each block to be decoded.
  • the decoding unit 201 determines that MBVD is to be applied to two sets of merge candidates (BVs), and if bimbvd_flag is 0, it determines that MBVD is not to be applied to two sets of merge candidates (BVs) (i.e., MBVD is to be applied to only one set of merge candidates (BVs) in a bi-predictive IBC merge).
  • the decoding unit 201 may estimate bimbvd_flag to be 0.
  • step S906 the decoding unit 201 decodes mbvd_merge_cand_idx0 and mbvd_merge_cand_idx1.
  • mbvd_merge_cand_idx0 is an index for selecting, for each block to be decoded, from the merge candidate list, the first set of merge candidates (BVs) to which MBVD is to be applied, out of two sets of merge candidates (BVs) in a bi-predictive IBC merge.
  • the decoding unit 201 may estimate mbvd_merge_cand_idx0 to be 0.
  • mbvd_merge_cand_idx1 is an index for selecting, from the merge candidate list, the second set of merge candidates (BVs) to which MBVD is applied, out of two sets of merge candidates (BVs) in a bi-predictive IBC merge, for each block to be decoded.
  • the decoding unit 201 may estimate mbvd_merge_cand_idx1 to be 0.
  • the decoding unit 201 may not assign a magnitude relationship between them in advance, or may assign a magnitude relationship such that mbvd_merge_cand_idx0 ⁇ mbvd_merge_cand_idx1.
  • the decoding unit 201 decodes mbvd_merge_cand_idx0, then removes the merge candidate corresponding to mbvd_merge_cand_idx0 from the merge candidate list, and then decodes mbvd_merge_cand_idx1, thereby being able to derive different merge candidates even if mbvd_merge_cand_idx0 and mbvd_merge_cand_idx1 are the same, which is expected to improve coding efficiency.
  • the decoding unit 201 may estimate mbvd_merge_cand_idx0 to be 0.
  • step S908 the decoding unit 201 decodes mbvd_idx0 and mbvd_idx1, and ends this process.
  • mbvd_idx0 and mbvd_idx1 are indexes for deriving correction vectors for the first and second pairs of merge candidates (BVs) of the two pairs of merge candidates in bi-predictive IBC merging.
  • mbvd_idx0 and mbvd_idx1 correspond to the discrete reference positions that the correction vector can take, as disclosed in Non-Patent Document 2.
  • the discrete reference position is defined by the direction and distance of the correction vector whose origin is the BV of the merge candidate.
  • the directions may be configured as up, down, left, right (a total of four directions, vertical and horizontal), as in Non-Patent Document 1, or as in Non-Patent Document 2, they may be configured as eight directions, adding four diagonal directions of 45 degrees, 135 degrees, 225 degrees, and 315 degrees to up, down, left, right, and four other directions.
  • the distance may be configured as follows: 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, as in Non-Patent Document 2.
  • the pixel precision of the IBC is not limited to integer precision for a sequence, picture, slice, or block to be decoded (i.e., both fractional pixel precision and integer pixel precision are selectable), 1/4 pixel and 1/8 pixel may be added to the integer pixel options mentioned above.
  • step S909 the decryption unit 201 proceeds to step S601 in FIG. 22, and when this operation is completed, this process ends.
  • step S907 the decoding unit 201 decodes mbvd_merge_cand_idx0.
  • step S910 the decoding unit 201 decodes mbvd_idx0.
  • step S911 the decryption unit 201 proceeds to step S601 in FIG. 22, and when this operation is completed, this process ends.
  • step S905 the decryption unit 201 proceeds to step S601 in FIG. 22, and when this operation is completed, this process ends.
  • step S903 the decryption unit 201 proceeds to step S602 in FIG. 22, and when this operation is completed, ends this process.
  • step S1001 the decoding unit 201 determines whether the block to be decoded is in a mode that retains the BV.
  • step S1002 If the answer is Yes, the operation proceeds to step S1002; if the answer is No, the operation ends.
  • step S1002 the decoding unit 201 decodes cu_ibc_flag, which is a control signal indicating the number of BVs used by the second intra-frame prediction.
  • the decoding unit 201 decodes the number of BVs as 1 when cu_ibc_flag is 0, and decodes the number of BVs as 2 when cu_ibc_flag is 1.
  • step S1003 the decoding unit 201 determines whether the BV is one or two.
  • step S1003 the decoding unit 201 determines whether cu_ibc_flag is 0 or not.
  • step S1004 the decoding unit 201 decodes cu_ibc_idx0, which is a control signal that specifies a BV from the BVP candidate list.
  • 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.
  • the decoding unit 201 decodes cu_ibc_idx0 + cu_ibc_idx1 as cu_ibc_idx1 in absolute coordinates.
  • Figure 28 shows a flowchart for applying a corrected BV to a BV.
  • step S1101 the decoding unit 201 determines whether the block to be decoded is in a mode that retains the BV.
  • step S1102 If the answer is Yes, the operation proceeds to step S1102; if the answer is No, the operation ends.
  • step S1102 the decoding unit 201 decodes cu_ibc_flag, which is a control signal indicating the number of BVs used by the second intra-frame prediction.
  • the decoding unit 201 decodes the number of BVs as 1 when cu_ibc_flag is 0, and decodes the number of BVs as 2 when cu_ibc_flag is 1.
  • step S1103 the decoding unit 201 determines whether the BV is one or two.
  • step S1103 the decoding unit 201 determines whether cu_ibc_flag is 0 or not.
  • step S1104 the decoding unit 201 decodes cu_ibc_idx0, which is a control signal that specifies a BV from the BVP candidate list.
  • step S1105 the decoding unit 201 decodes cu_ibc_dmv0, which is control information representing the correction BV, and adds cu_ibc_dmv0 to the BV.
  • 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.
  • the decoding unit 201 decodes cu_ibc_idx0 + cu_ibc_idx1 as cu_ibc_idx1 in absolute coordinates.
  • the decoding unit 201 decodes cu_ibc_dmv0 and cu_ibc_dmv1, which are control information representing the correction BV, and adds cu_ibc_dmv0 and cu_ibc_dmv1 to the corresponding BVs, respectively.
  • FIG. 29 is a flowchart showing an example of a method for decoding a flag for controlling (determining) whether or not bi-predictive IBC BVP is enabled for each block to be decoded in the decoding unit 201 (i.e., whether or not bi-predictive IBC BVP is applied for each block to be decoded).
  • the decoding unit 201 may decode a flag for controlling (specifying) whether or not the bi-predictive IBC BVP is enabled for each block to be decoded (i.e., whether or not the bi-predictive IBC BVP is applied for each block to be decoded). Specifically, it is as follows.
  • step S1200 the decryption unit 201 determines whether or not the predetermined condition 4 is satisfied.
  • step S1201 If the answer is Yes, the operation proceeds to step S1201; if the answer is No, the operation proceeds to step S1202.
  • step S1201 the decoding unit 201 decodes biibc_bvp_flag and ends this process.
  • step S1202 the decoding unit 201 ends this process without decoding biibc_bvp_flag.
  • biibc_bvp_flag is a flag (syntax 9) that controls (specifies) whether or not bi-predictive IBC BVP is applied for each block to be decoded.
  • biibc_bvp_flag 1
  • the decoding unit 201 applies a bi-predictive IBC BVP to the block to be decoded, and if biibc_bvp_flag is 0, it specifies that a bi-predictive IBC BVP is not to be applied to the block to be decoded.
  • the decoding unit 201 may estimate biibc_bvp_flag to be 0.
  • the predetermined condition 4 may include at least one of the conditions listed below.
  • 1. sps_ibc_enabled_flag is 1. 2.
  • sh_biibc_enabled_flag is 1 (and/or sps_biibc_enabled_flag is 1) 3.
  • general_merge_flag is 0; 4.
  • CuPredMode is IBC; 5.
  • sh_slice_type is I or B.
  • a condition based on the block size (product of the number of vertical and horizontal pixels) of the block to be decoded may be added to the predetermined condition 4.
  • a condition may be added that the block size of the block to be decoded is 16 pixels or more or 32 pixels or more (or the width or height of the block to be decoded is 8 pixels or more).
  • a condition may be added that the block size of the block to be decoded is 32 pixels or less or 16 pixels or less, i.e., the number of pixels is smaller than the threshold used in the determination criteria for determining whether or not to apply IBC BVP for unidirectional prediction.
  • FIG. 30 is a flowchart showing an example of a method for decoding control information related to an IBC BVP in the decoding unit 201.
  • the decoding unit 201 may control the decoding of control information related to the IBC BVP. Specifically, this is as follows.
  • step S1300 the decoding unit 201 determines whether biibc_bvp_flag is 1.
  • step S1301 If the answer is Yes, the operation proceeds to step S1301; if the answer is No, the operation proceeds to step S1302.
  • step S1301 the decoding unit 201 decodes control information related to the first pair of BVPs and BVDs out of the two pairs of BVPs and BVDs in the bi-predictive IBC BVP.
  • step S1303 the decoding unit 201 decodes the control information for the second pair of BVPs and BVDs out of the two pairs of BVPs and BVDs in the bi-predictive IBC BVP, and ends this process.
  • step S1302 the decoding unit 201 decodes the control information related to a pair of BVPs and BVDs in the IBC BVP, and ends this process.
  • FIG. 31 shows an example of a method for binarizing the above-mentioned IBC merge index in the decoding unit 201.
  • the decoding unit 201 may binarize the IBC merge index. Specifically, this is as follows.
  • the decryption unit 201 may set the value of cMax for ibc_merge_idx to MaxNumIbcMerge-1.
  • cMax is the maximum value that the target control information can have before binarization.
  • the decryption unit 201 may set the value of cMax for ibc_merge_idx0 to MaxNumIbcMerge-1.
  • the decoding unit 201 may change the value of cMax depending on whether biibc_merge_flag is 1 or not.
  • the decryption unit 201 may set the value of cMax to MaxNumIbcMerge-2.
  • the decoding unit 201 may set the value of cMax to MaxNumIbcMerge-ibc_merge_idx0-2.
  • the range of values that ibc_merge_idx1 can take is between 0 (minimum value) and the maximum value of the BVP candidate list (MaxNumIbcMerge-2 in the above example) minus the value of idx0.
  • the decoding unit 201 can decode the second and subsequent indexes as relative indexes starting from the previous index.
  • the image decoding device 200 described above may be realized as a program that causes a computer to execute each function (each process).
  • Image decoding device 201... Decoding unit 202... Inverse quantization unit 203... Inverse transform unit 204... First intra-frame prediction unit 205... Second intra-frame prediction unit 205A... Block vector derivation unit (BV derivation unit) 205B: second intra-frame predicted pixel generation unit 206: inter-frame prediction unit 207: adder 208: storage unit 210: code input unit 220: image output unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本発明に係る画像復号装置200は、復号済み画素と制御情報とに基づいて第1予測画素を生成する第1フレーム内予測部204と、復号済み画素と制御情報とに基づいて復号対象ブロックに対する補正された1つ以上のブロックベクトルから第2予測画素を生成する第2フレーム内予測部205と、復号済み画素を蓄積する蓄積部208と、蓄積された復号済み画素と制御情報とに基づいて第3予測画素を生成するフレーム間予測部206と、予測残差と第1乃至第3予測画素とを加算して復号済み画素を得る加算器207とを具備する。

Description

画像復号装置、画像復号方法及びプログラム
 本発明は、画像復号装置、画像復号方法及びプログラムに関する。
 非特許文献1及び2には、イントラブロックコピー(IBC:Intra Block Copy)及びイントラテンプレートマッチング予測(IntraTMP:Intra Template Matcing Prediction)が開示されている。
 IBC及びIntraTMPは、復号対象フレームの復号済み画素領域から画素を参照し復号対象ブロックの予測画素とする。
 IBCとIntraTMPとの違いは、IBCが参照する座標を表すブロックベクトルを復号するための制御信号を明示的にシグナリングするのに対し、IntraTMPは近傍画素をテンプレートとして類似する領域を探索することでブロックベクトルを復号するための制御信号をシグナリングしない点にある。
 ブロックベクトルのシグナリングに違いはあるが、いずれも図2に示すように復号対象ブロックのブロックベクトルが示す参照ブロックから画素をコピーすることで予測画素として利用する。
ITU-T H.266/VVC M.Coban他、「Algorithm description of Enhanced Compression Model 7(ECM 7)」、JVET-AB2025、2022年
 しかしながら、非特許文献1及び2では、いずれもブロックベクトルが1本に限定されているため、符号化効率の向上には改善の余地がある。また、非特許文献1及び2では、ブロックをコピーするだけであるため、符号化効率の向上には改善の余地がある。
 そこで、本発明は、上述の課題に鑑みてなされたものであり、符号化効率の高い画像復号装置、画像復号方法及びプログラムを提供することを目的とする。
 本発明の第1の特徴は、画像復号装置であって、制御情報並びに量子化値を復号する復号部と、前記量子化値を逆量子化して変換係数とする逆量子化部と、前記変換係数を逆変換して予測残差とする逆変換部と、復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する第1フレーム内予測部と、前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する第2フレーム内予測部と、前記復号済み画素を蓄積する蓄積部と、前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成するフレーム間予測部と、前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る加算器とを具備することを要旨とする。
 本発明の第2の特徴は、画像復号方法であって、制御情報並びに量子化値を復号する工程と、前記量子化値を逆量子化して変換係数とする工程と、前記変換係数を逆変換して予測残差とする工程と、復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する工程と、前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する工程と、前記復号済み画素を蓄積する工程と、前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成する工程と、前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る工程とを有することを要旨とする。
 本発明の第3の特徴は、コンピュータを、画像復号装置として機能させるプログラムであって、前記画像復号装置は、制御情報並びに量子化値を復号する復号部と、前記量子化値を逆量子化して変換係数とする逆量子化部と、前記変換係数を逆変換して予測残差とする逆変換部と、復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する第1フレーム内予測部と、前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する第2フレーム内予測部と、前記復号済み画素を蓄積する蓄積部と、前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成するフレーム間予測部と、前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る加算器とを具備することを要旨とする。
 本発明によれば、符号化効率の高い画像復号装置、画像復号方法及びプログラムを提供することができる。
図1は、一実施形態に係る画像復号装置200の機能ブロックの一例を示す図である。 図2は、IBC及びIntraTMPについて説明するための図である。 図3は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の機能ブロックの一例を示す図である。 図4は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるBVの導出方法の一例について説明するための図である。 図5は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるBVの導出方法の一例について説明するための図である。 図6は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるBVの導出方法の一例について説明するための図である。 図7は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるBVの導出方法の一例について説明するための図である。 図8は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるBVの導出方法の一例について説明するための図である。 図9は、一実施形態に係る画像復号装置200の第2フレーム内予測部205のBV導出部205AにおけるIBC GPMによるBVの導出方法の一例について説明するための図である。 図10は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の第2フレーム内予測画素生成部205Bにおける復号対象ブロックの予測画素を合成する方法の一例を説明するための図である。 図11は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の第2フレーム内予測画素生成部205Bにおける復号対象ブロックの予測画素を合成する方法の一例を説明するための図である。 図12は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の第2フレーム内予測画素生成部205Bにおける復号対象ブロックの予測画素を合成する方法の一例を説明するための図である。 図13は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の第2フレーム内予測画素生成部205Bにおける復号対象ブロックの予測画素を合成する方法の一例を説明するための図である。 図14は、一実施形態に係る画像復号装置200の第2フレーム内予測部205の第2フレーム内予測画素生成部205Bにおける復号対象ブロックの予測画素を合成する方法の一例を説明するための図である。 図15は、シーケンス単位でのIBCに関連する所定フラグの復号制御方法の一例を示すフローチャートである。 図16は、IBCに関連する各種フラグの一例を示す図である。 図17は、一実施形態に係る画像復号装置200の復号部201における双予測IBCの適用可不可を制御するフラグの復号方法の一例を示すフローチャートである。 図18は、一実施形態に係る画像復号装置200の復号部201における双予測IBCの適用可不可を制御するフラグの復号方法の一例を示すフローチャートである。 図19は、一実施形態に係る画像復号装置200の復号部201における復号対象ブロック単位でのIBCの適用有無を制御するフラグであるpred_mode_ibc_flagの復号方法の一例を示すフローチャートである。 図20は、一実施形態に係る画像復号装置200の復号部201におけるIBCのモードの選択方法の一例を示すフローチャートである。 図21は、一実施形態に係る画像復号装置200の復号部201における復号対象ブロック単位で双予測のIBCマージが有効であるか否かを制御するためのフラグの復号方法の一例を示すフローチャートである。 図22は、一実施形態に係る画像復号装置200の復号部201におけるIBCマージに関する制御情報の復号方法の一例を示すフローチャートである。 図23は、一実施形態に係る画像復号装置200の復号部201におけるIBCマージに関する制御情報の復号方法の一例を示すフローチャートである。 図24は、一実施形態に係る画像復号装置200の復号部201における復号対象ブロック単位でIBC BVP/マージが有効であるか否かを制御するためのフラグの復号方法の一例を示すフローチャートである。 図25は、一実施形態に係る画像復号装置200の復号部201におけるIBC BVP/マージに関する制御情報の復号方法の一例を示すフローチャートである。 図26は、一実施形態に係る画像復号装置200の復号部201におけるIBCのBVを補正する上述のMBVDに関する制御情報の復号方法の一例を示すフローチャートである。 図27は、一実施形態に係る画像復号装置200の復号部201におけるブロック単位で第2フレーム内予測を適用する方法の一例を示すフローチャートである。 図28は、一実施形態に係る画像復号装置200の復号部201におけるBVに補正BVを適用する場合のフローチャートである。 図29は、一実施形態に係る画像復号装置200の復号部201における復号対象ブロック単位で双予測のIBC BVPが有効であるか否かを制御するためのフラグの復号方法の一例を示すフローチャートである。 図30は、一実施形態に係る画像復号装置200の復号部201における双予測のIBC BVPに関する制御情報の復号方法の一例を示すフローチャートである。 図31は、一実施形態に係る画像復号装置200の復号部201におけるIBCマージインデックスの2値化方法の一例を示す図である。
 以下、本発明の実施の形態について、図面を参照しながら説明する。なお、以下の実施形態における構成要素は、適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、以下の実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
<第1実施形態>
 以下、図1~図29を参照して、本実施形態に係る画像復号装置200について説明する。図1は、本実施形態に係る画像復号装置200の機能ブロックの一例について示す図である。
 図1に示すように、画像復号装置200は、符号入力部210と、復号部201と、逆量子化部202と、逆変換部203と、第1フレーム内予測部204と、第2フレーム内予測部205と、フレーム間予測部206と、加算器207と、蓄積部208と、画像出力部220とを有する。
 符号入力部210は、画像符号化装置によって符号化された符号情報を取得するように構成されている。
 復号部201は、符号入力部210から入力された符号情報から、制御情報並びに量子化値を復号するように構成されている。例えば、復号部201は、かかる符号情報に対して可変長復号を行うことで制御情報及び量子化値を出力するように構成されている。
 ここで、量子化値は、逆量子化部202に送られ、制御情報は、第1フレーム内予測部204、第2フレーム内予測部205及びフレーム間予測部206に送られる。なお、かかる制御情報は、第1フレーム内予測部204、第2フレーム内予測部205及びフレーム間予測部206等の制御に必要な情報を含み、シーケンスパラメータセットやピクチャパラメータセットやピクチャヘッダやスライスヘッダ等のヘッダ情報を含んでもよい。
 逆量子化部202は、復号部201から送られた量子化値を逆量子化して変換係数とするように構成されている。かかる変換係数は、逆変換部203に送られる。
 逆変換部203は、逆量子化部202から送られた変換係数を逆変換して予測残差とするように構成されている。かかる予測残差は、加算器207に送られる。
 第1フレーム内予測部204は、加算器207を介して得られる復号済み画素及び復号部201で復号された制御情報に基づいて、加算器207で予測残差と加算するための第1予測画素を生成するように構成されている。かかる第1予測画素は、加算器207に送られる。
 フレーム間予測部206は、蓄積部208を参照して得られる復号済み画素及び復号部201で復号された制御情報に基づいて、加算器207で予測残差と加算するための第3予測画素を生成するように構成されている。かかる第3予測画素は、加算器207に送られる。
 蓄積部208は、加算器207から送られた復号済み画素を累積的に蓄積するように構成されている。かかる復号済み画素は、蓄積部208を介してフレーム間予測部206からの参照を受ける。
 加算器207は、逆変換部203から送られる予測残差と、第1フレーム内予測部204、第2フレーム内予測部205及びフレーム間予測部206から送られる第1乃至第3予測画素のいずれかとを加算して復号済み画素を得るように構成されている。かかる復号済み画素は、画像出力部220、蓄積部208及びフレーム間予測部206へ送られる。
(第2フレーム内予測部205)
 以下、第2フレーム内予測部205による予測方法の一例について説明する。
<ブロックベクトルの導出>
 第2フレーム内予測部205の役割は、後段の加算器207において復号対象ブロックを高精度に予測するために、図2に示すような復号対象ブロックに対して1つ以上のブロックベクトル(以下、BV:Block Vector)を導出して、BVが参照するブロックの画素を予測すること(第2フレーム内予測)にある。
 かかる第2フレーム内予測の例には、非特許文献1及び2で開示されている、イントラブロックコピー(以下、IBC:Intra Block Copy)及びイントラテンプレートマッチング予測(以下、IntraTMP:Intra Template Matching Prediction)がある。
 かかる第2フレーム内予測は、復号対象ブロックがBVで他の領域を参照する場合に適用できるが、以下では、IBCを第2フレーム内予測の一例として説明する。なお、他の例には、IntraTMP等、フレーム内で予測画素を参照するモードがある。
 図3に、第2フレーム内予測部205の機能ブロックの一例を示す。図3に示すように、第2フレーム内予測部205は、ブロックベクトル導出部(以下、BV導出部)205Aと、第2フレーム内予測画素生成部205Bとを備える。
 BV導出部205Aは、復号対象ブロックに対する1つの以上のBVを導出するように構成されている。
 本実施形態において、BV導出部205Aは、IBCのBVの導出方法としての以下の4種類の方法のうち少なくともいずれか1つを用いて、1つ以上のBVを導出してもよい。なお、いずれの方法でBVを導出するかは、後述する復号部201のシグナリング(制御情報の復号処理)にて詳述する。
A. IBCブロックベクトル予測(以下、IBC BVP:IBC Block Vector Prediction)
B. IBCマージ
C. IBC BVP/マージ
D. IBC GPM
 ここで、上述のBVの導出方法のA及びBについては、非特許文献1及び2に開示されているが、非特許文献1及び2に開示されている導出方法のいずれも、1つのBVの導出を前提とした方法である。
 本発明の目的(効果)は、2つ以上のBV導出による第2フレーム内予測の高精度化、ひいては、符号化効率の向上であるため、以降のBVの導出方法のA及びBに関する説明では、2つ以上のBVを導出する場合の差分に着目して説明する。なお、上述のBVの導出方法のC及びDは、2つ以上のBVの導出を前提とした新たな手法である。また、かかる2つ以上のBV導出による第2フレーム内予測(複数予測のIBC又は複数予測IBC)の一例として、以下では、2つのBV導出によるIBC(双予測のIBC又は双予測IBC)を説明する。
(A. IBC BVP)
 以下、図4~図6を用いて、BV導出部205AにおけるIBC BVPによるBVの導出方法の一例について説明する。
 図4は、BVがブロックベクトル予測(BVP)とブロックベクトル差分(BVD)とから構成される一例を示している。
 IBC BVPでは、BV導出部205Aは、復号部201で復号されたBVP及びBVDに関する制御情報の値に基づき、ブロックベクトル予測(BVP:Block Vector Prediction)及びブロックベクトル差分(BVD:Block Vector Difference)を導出して、BVを導出する。ここで、BVP及びBVDに関する制御情報については、復号部201におけるシグナリングの説明で詳述する。
 IBC BVPにおけるBVPの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、図5に示す復号対象ブロックの隣接ブロックが復号済みであるか否かを確認し、かかる隣接ブロックが復号済みであれば、BVを有するか否か(BVの利用可否)を確認する。
 ステップS2において、BV導出部205Aは、BVを有する隣接ブロックのBVを、図6に示すBVP候補としてリスト(以下、BVP候補リスト)に登録する。
 ステップS3において、BV導出部205Aは、BVP候補リストから、復号部201で復号されたBVPに関する制御情報(IBC BVPフラグ又はIBC BVPインデックス)の値に基づき、BVPを選択する。
 ここで、ステップS1における復号済みであるか否か及びBVを有する否かを確認する隣接ブロックの数(位置)は、非特許文献1と同様に、2種類(図5の「A」及び「L」)であってもよいし、或いは、非特許文献2と同様に、5種類(図5の「A」、「L」、「AR」、「LB」及び「AL」)であってもよい。
 隣接ブロックを確認する順序は、それぞれ非特許文献1及び2と同じであってもよい。ここで、「A」、「L」、「AR」、「LB」及び「AL」は、それぞれ非特許文献1及び2における「Above」「Left」、「AboveRight」、「LeftBottom」及び「AboveLeft」である。
 ここで、BV導出部205Aは、BVP候補として、近傍ブロックのBV(非特許文献2で空間BVPと呼称)や過去に使用したBV(非特許文献2でヒストリーBVPと呼称)等を利用できる。
 また、ステップS1で、新たに利用可否を確認するBVが、既に利用可能と確認したBVと同一である場合、新たに利用可否を確認するBVを利用不可と判定してもよい。
 さらに、ステップS1で利用可能と判定したBV(BVP候補)のBVP候補リストへの登録順を所定の並び替え方法で並び替えてもよい。この並び替え方法の詳細は、後述する。
 IBC BVPにおけるBVDの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、BVDに関する制御情報に基づき、BVDを導出する。
 ステップS2において、BV導出部205Aは、ステップS1で導出したBVDを、BVDの画素精度に関する制御情報に基づき、丸める。
 ここで、BVDに関する制御情報に基づくBVDの導出方法は、非特許文献1と同様の方法で構成できる。具体的に、復号部201が、BVDの大きさ(絶対値)及びBVDの符号に関する制御情報の値を復号(又は、推定)し、BV導出部205Aが、それらの値からBVDを導出する。
 最後に、BV導出部205Aは、導出したBVPとBVDとを加算してBVを導出する。
 以上が、IBC BVPにおけるBVの導出方法の概要である。
 他の例として、IBC BVPにおいて、BV導出部205Aは、2つ以上のBVを導出する場合は、各BVの導出に必要なBVP及びBVDを、以下の方法で導出してもよい。
 ステップS1において、BV導出部205Aは、図5に示す復号対象ブロックの隣接ブロックが復号済みであるか否かを確認し、かかる隣接ブロックが復号済みであれば、BVを有するか否か(BVの利用可否)を確認する。
 ステップS2において、BV導出部205Aは、BVを有する隣接ブロックのBVを、図6に示すBVP候補としてリスト(以下、BVP候補リスト)に登録する。
 ステップS3において、BV導出部205Aは、BVP候補リストから、復号部201で復号された異なる2つ以上のBVPに関する制御情報(IBC BVPフラグ又はIBC BVPインデックス)の値に基づき、異なる2つ以上のBVPを選択する。
 なお、BV導出部205Aが、かかるBVP候補リストに対する1つ以上のインデックスに対応するBVを導出する際に、2つ目以降のインデックスは、直前のインデックスを起点とした相対的なインデックスであることが望ましい。詳細は後述する。
 ここで、ステップS1における復号済みであるか否か及びBVを有する否かを確認する隣接ブロックの数(位置)は、非特許文献1と同様に、2種類(図5の「A」及び「L」)であってもよいし、或いは、非特許文献2と同様に、5種類(図5の「A」、「L」、「AR」、「LB」及び「AL」)であってもよい。
 隣接ブロックを確認する順序は、それぞれ非特許文献1及び2と同じであってもよい。ここで、「A」、「L」、「AR」、「LB」及び「AL」は、それぞれ非特許文献1及び2における「Above」「Left」、「AboveRight」、「LeftBottom」及び「AboveLeft」である。
 ここで、BV導出部205Aは、BVP候補として、近傍ブロックのBV(非特許文献2で空間BVPと呼称)や過去に使用したBV(非特許文献2でヒストリーBVPと呼称)等を利用できる。
 また、ステップS1で、新たに利用可否を確認するBVが、既に利用可能と確認したBVと同一である場合、BV導出部205Aは、新たに利用可否を確認するBVを利用不可と判定してもよい。
 さらに、BV導出部205Aは、ステップS1で利用可能と判定したBV(BVP候補)のBVP候補リストへの登録順を所定の並び替え方法で並び替えてもよい。この並び替え方法の詳細は、後述する。
 IBC BVPにおけるBVDの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、異なる2つ以上のBVDに関する制御情報に基づき、BVDを導出する。
 ステップS2において、BV導出部205Aは、ステップS1で導出した異なる2つ以上のBVDを、BVDの画素精度に関する制御情報に基づき、丸める。
 ここで、BVDに関する制御情報に基づくBVDの導出方法は、非特許文献1と同様の方法で構成できる。具体的に、復号部201が、BVDの大きさ(絶対値)及びBVDの符号に関する制御情報の値を復号する乃至は推定し、BV導出部205Aが、それらの値からBVDを導出する。
 最後に、BV導出部205Aは、導出した異なる2つ以上のBVPとBVDとを加算して異なる2つ以上のBVを導出する。
 以上が、2つ以上のBVを導出する双予測(又は、複数予測)のIBC BVPにおけるBVの導出方法の概要である。
(B. IBCマージ)
 以下、図4~図7を用いて、BV導出部205AにおけるIBCマージによるBVの導出方法の一例について説明する。
 IBCマージでは、BV導出部205Aは、IBC BVPとは異なり、BVDを導出せず、BVPのみを導出して、BVとしてそのまま導出する。
 IBCマージにおけるBVの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、図5に示す復号対象ブロックの隣接ブロックが復号済みであるか否かを確認し、かかる隣接ブロックが復号済みであれば、BVを有するか否か(BVの利用可否)を確認する。
 ステップS2において、BV導出部205Aは、BVを有する隣接ブロックのBVを、図6或いは図7に示すBVP候補(又は、マージ候補と呼称)としてリスト(以下、BVP候補リスト又はマージ候補リストと呼称)に登録する。
 ステップS3において、BV導出部205Aは、BVP候補リストから、復号部201で復号されたBVPに関する制御情報(IBCマージインデックス)の値に基づき、BVPを選択し、かかるBVPをBVとして導出する。
 ここで、ステップS1における復号済みであるか否か及びBVを有する否かを確認する隣接ブロックの数(位置)は、非特許文献1と同様に、2種類(図5の「A」及び「L」)であってもよいし、或いは、非特許文献2と同様に、5種類(図5の「A」、「L」、「AR」、「LB」及び「AL」)であってもよい。
 隣接ブロックを確認する順序は、それぞれ非特許文献1及び2と同じであってもよい。ここで、「A」、「L」、「AR」、「LB」及び「AL」は、それぞれ非特許文献1及び2における「Above」「Left」、「AboveRight」、「LeftBottom」及び「AboveLeft」である。
 ここで、BVP候補は、近傍ブロックのBV(非特許文献2で空間マージと呼称)や過去に使用したBV(非特許文献2でヒストリーマージと呼称)、BVの平均(非特許文献2でペアワイズ平均マージと呼称)などを利用できる。
 また、ステップS1で、新たに利用可否を確認するBVが、既に利用可能と確認したBVと同一である場合、BV導出部205Aは、新たに利用可否を確認するBVを利用不可と判定してもよい。
 さらに、BV導出部205Aは、ステップS1で利用可能と判定したBV(BVP候補)のBVP候補リストへの登録順を所定の並び替え方法で並び替えてもよい。この並び替え方法の詳細は、後述する。
 以上が、IBCマージにおけるBVの導出方法の概要である。
 ここで、BV導出部205Aは、IBCマージにおいて2つ以上のBVを導出する場合は、以下のような方法で、2つ以上のBVを導出してもよい。
 一例として、BV導出部205Aは、図6に示すように、1つのBVP候補リスト(又は、マージ候補リスト)を作成した上で、復号部201が復号したBVP候補リスト内のBVP候補(又は、マージ候補)を示す2つ以上の制御情報(IBCマージインデックス)の値に応じて、BVP候補リスト内から2つ以上のBVP候補を選択し、それぞれBVとして導出してもよい。
 なお、BV導出部205Aが、かかるBVP候補リストに対する1つ以上のインデックスに対応するBVを導出する際に、2つ目以降のインデックスは、直前のインデックスを起点とした相対的なインデックスであることが望ましい。詳細は後述する。
 或いは、BV導出部205Aは、BVP候補リストの上位を1つ以上固定的に選択することでBVを導出してもよい。この場合、BV導出部205Aは、後述するBVP候補リスト内のBVP候補の並べ替えを実施することが望ましい。かかる構成によれば、2つ以上のBVのうち、一部のBVを固定的に選択することで、2つ以上のBVを導出するために必要なインデックスの符号量が不要となるため、符号化効率を向上させることができる。
 他の例として、BV導出部205Aは、図7に示すように、BVP候補リストを復号対象ブロックが保持するBVの数だけ個別に構成した上で、1つのインデックスにより、2つ以上のBVを導出してもよい。
 例えば、BV導出部205Aは、BVP候補として近傍ブロックが複数のBVを保持している場合、各BVをそれぞれ対応するBVP候補リストに登録する。このように、BVP候補リストを複数構築しておき、インデックスを共通化しておくことで、1つのインデックスから1つ以上のBVを導出することができる。例えば、復号対象ブロックが最大2つのBVを保持する場合、BV導出部205Aは、2つのリスト(例えば、通常のフレーム内予測と同様のL0リスト及びL1リスト)を用意し、インデックスに対応するBVを、L0リストから1つ導出し、L1リストから1つ導出してもよい。インデックスに対応するBVがL0リスト及びL1リストの片方にしかなければ、BV導出部205Aは、その1つを用いてもよい。
(C. IBC BVP/マージ)
 以下、図4~図6及び図8を用いて、BV導出部205AにおけるIBC BVP/マージによるBVの導出方法の一例について説明する。
 IBC BVP/マージは、2つ(或いは、2つ以上)のBVを導出するために、上述のIBC BVPにおけるBVの導出方法に基づいて、1つ目のBVを導出し、上述のIBCマージにおけるBVの導出方法に基づいて、もう1つの(或いは、2つ以上の残りの)BVを導出する方法である。具体的な導出方法は、以下の通りである。
 第1に、IBC BVP/マージでは、BV導出部205Aは、IBC BVPと同じ導出方法で、復号部201で復号されるBVP及びBVDのそれぞれに関する制御情報の値に基づいてBVPとBVDを導出し、それら導出されたBVPとBVDを加算して1つ目のBVを導出する。
 第2に、IBC BVP/マージでは、BV導出部205Aは、IBC BVPと同じ導出方法で、復号部201で復号されるBVPに関する制御情報(IBCマージインデックス)の値に基づいてBVP候補リストからBVPを選択して2つ目のBVとして導出する。
 他の例として、図8に示すように、BV導出部205Aは、導出した1つ目のBVに基づいて、テンプレート(すなわち、BV参照先の参照ブロックの所定の近傍画素)を作成し、IBCマージのBVP候補リスト内の各BVP候補(各IBCマージ候補)のテンプレート(参照先の参照ブロックの所定の近傍画素)との類似性を評価する(テンプレートコストを比較する)ことで、類似性が最も高い(テンプレートコストが最小となる)BVP候補(IBCマージ候補)をIBC BVP/マージの2つ目のBVとして導出してもよい。
 或いは、別の例として、BV導出部205Aは、復号部201で復号されたBVPに関する制御情報(IBCマージインデックス)の値に基づき、IBCマージにおけるBVP候補リスト内からBVPを選択し、かかるBVPを2つ目のBVとして導出してもよい。
 ここで、BV導出部205Aは、各IBCマージ候補のテンプレートとの類似性評価の対象として、IBC BVPで導出したBVに基づくテンプレートではなく、復号対象ブロックのテンプレートを用いてもよい。
 なお、BV導出部205Aは、テンプレートの類似性の評価(テンプレートコストの比較)には、差分二乗和(SSE:Sum of Squared Error)や差分絶対値和(SAD:Sum of Absolute Difference)等を利用できる。
 また、テンプレートの類似性評価において作成するテンプレートの所定画素は、各ブロックの左部又は上部に隣接する1画素ラインの復号済み画素でもよい。
 BV導出部205Aは、ピクチャ境界やスライス境界で、左部又は上部に隣接する復号済み画素がない場合は、利用可能な位置の復号済み画素を用いて、テンプレートの類似性評価を実施してもよい。
 また、BV導出部205Aは、導出対象のBVが2つ以上ある場合は、テンプレートの類似性が高い順(テンプレートコストの小さい順)にBVP候補を導出してもよい。
 IBC BVP/マージによるBVの導出方法のより詳細な手順は、以下の通りである。
 IBC BVP/マージにおけるIBC BVPによるBVの導出方法に基づくBVPの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、図5に示す復号対象ブロックの隣接ブロックが復号済みであるか否かを確認し、かかる隣接ブロックが復号済みであれば、BVを有するか否か(BVの利用可否)を確認する。
 ステップS2において、BV導出部205Aは、BVを有する隣接ブロックのBVを、図6に示すBVP候補としてリスト(以下、BVP候補リスト)に登録する。
 ステップS3において、BV導出部205Aは、BVP候補リストから、復号部201で復号されたBVPに関する制御情報(IBC BVPフラグ又はIBC BVPインデックス)の値に基づき、BVPを選択する。
 ここで、ステップS1における復号済みであるか否か及びBVを有する否かを確認する隣接ブロックの数(位置)は、非特許文献1と同様に、2種類(図5の「A」及び「L」)であってもよいし、或いは、非特許文献2と同様に、5種類(図5の「A」、「L」、「AR」、「LB」及び「AL」)であってもよい。
 隣接ブロックを確認する順序は、それぞれ非特許文献1及び2と同じであってもよい。ここで、「A」、「L」、「AR」、「LB」及び「AL」は、それぞれ非特許文献1及び2における「Above」「Left」、「AboveRight」、「LeftBottom」及び「AboveLeft」である。
 ここで、BV導出部205Aは、BVP候補として、近傍ブロックのBV(非特許文献2で空間BVPと呼称)や過去に使用したBV(非特許文献2でヒストリーBVPと呼称)等を利用できる。
 また、ステップS1で、新たに利用可否を確認するBVが、既に利用可能と確認したBVと同一である場合、BV導出部205Aは、新たに利用可否を確認するBVを利用不可と判定してもよい。
 さらに、BV導出部205Aは、ステップS1で利用可能と判定したBV(BVP候補)のBVP候補リストへの登録順を所定の並び替え方法で並び替えてもよい。この並び替え方法の詳細は、後述する。
 IBC BVP/マージにおけるIBC BVPによるBVの導出方法に基づくBVDの導出方法の概要は、以下の通りである。
 ステップS1において、BV導出部205Aは、BVDに関する制御情報に基づき、BVDを導出する。
 ステップS2において、BV導出部205Aは、ステップS1で導出したBVDを、BVDの画素精度に関する制御情報に基づき、丸める。
 ここで、BVDに関する制御情報に基づくBVDの導出方法は、非特許文献1と同様の方法で構成できる。具体的に、復号部201が、BVDの大きさ(絶対値)及びBVDの符号に関する制御情報の値を復号する乃至は推定し、BV導出部205Aが、それらの値からBVDを導出する。
 BVD導出部205Aは、導出したBVPとBVDとを加算して1つ目のBVを導出する。
 IBC BVP/マージにおけるIBCマージによるBVの導出方法に基づく2つ目のBVの導出方法の概要は、以下の通りである。
 なお、IBC BVP/マージにおいては、IBC BVPのBV導出及びIBCマージのBV導出において、BV導出部205Aは、異なる2つのBV候補リスト(すなわち、片方は、IBC BVP向けのBVP候補リスト、もう片方は、IBC BVP/マージ向けのマージ候補リスト)を構築してもよい。
 他の例として、BV導出部205Aは、2つ目のBVを導出するために、上述した1つ目のBVに基づくテンプレートの類似性評価により、以下のように二つ目のBVを導出してもよい。
 ステップS1において、BV導出部205Aは、1つ目のBVが参照するブロック或いは復号対象ブロックの近傍画素をテンプレートとする。
 ステップS2において、BV導出部205Aは、ステップS1で導出したテンプレートとBVP候補リストの各BVP候補が参照するブロックで対応する画素との類似性を評価する。
 ステップS3において、BV導出部205Aは、類似性が最も高いBVPを選択し、かかるBVPを2つ目のBVとして導出する。
 ここで、BV導出部205Aは、ステップS2のBVP候補リストの各BVP候補のうち、1つ目のBVと一致するBVP候補については、類似性評価の対象に含めない。
 或いは、BV導出部205Aは、ステップS2のBVP候補リストのうち、1つ目のBVと一致するBVP候補については、BVP候補リストの構築段階でリスト内に登録しない。
 或いは、BV導出部205Aは、ステップS3で類似性の高い順序でBVP候補リスト内のBVP候補の登録順を並べ替え、復号部201で復号されたBVPに関する制御情報(IBCマージインデックス)の値に基づき、BVPを選択し、かかるBVPをBVとして導出してもよい。
 以上が、IBC BVP/マージにおけるBVの導出方法の概要である。
(D. IBC GPM)
 以下、図9を用いて、BV導出部205AにおけるIBC GPMによるBVの導出方法の一例について説明する。
 IBC GPMでは、BV導出部205Aは、図9に示すように、復号対象ブロックが非特許文献1に開示されている幾何学ブロック分割モード(GPM:Geometric Paritioning Mode)と同様に、異なる複数パターンの直線(幾何学分割線)の候補から選択された任意の直線(図9における実線)で2分割された上で、各分割領域のそれぞれに異なる1つ以上のBVを導出し、各BVの参照先(参照ブロックの画素)を分割線からの距離に応じて加重平均する。
 ここで、BV導出部205Aは、上述のIBCマージと同様に、かかるIBC GPMに必要なBVを導出してもよい。
 また、BV導出部205Aは、非特許文献1又は2で開示されているGPMの分割線の候補を特定する制御情報に基づいて、IBC GPMにおける分割線の候補を特定してもよい。
<画素精度>
 なお、BV導出部205Aは、導出するBVの画素精度について、整数画素精度で設定することができるし、小数画素精度で設定することもできる。
 IBCは、スクリーン画像に対する符号化技術として考案されたが、カメラで撮影した自然画像に適用する場合は、BVの画素精度を小数画素精度で設定する(すなわち、通常のフレーム間予測と同様に、補間フィルタを伴いて予測画素を生成する)ことで、予測精度を高精度化することができる。
 また、BV導出部205Aは、複数の異なる画素精度を適応的に選択することができる。
 すなわち、BV導出部205Aは、BVの画素精度について複数の異なる整数画素精度で設定してもよいし、複数の異なる小数画素精度で設定してもよい。
 例えば、BV導出部205Aは、シーケンス単位及び/又はピクチャ単位及び/又はスライス単位及び/又はブロック単位に、BVの画素精度を変更することもできる。
 すなわち、BV導出部205Aは、BVの画素精度について、シーケンス単位、ピクチャ単位、スライス単位、ブロック単位の任意の組み合わせ毎に変更してもよい。
 ブロック単位のBVの画素精度の選択については、非特許文献1において、適応動きベクトル解像度(AMVR:Adaptive Motion Vector Resolution)をIBCに適用する技術が開示されている。
 具体的には、かかる技術は、IBCにおけるBVの導出において、BVDの画素精度を1画素精度或いは4画素精度のいずれかから選択し、選択されたBVDの画素精度にBVを最終的に丸める技術である。
 BV導出部205Aは、このAMVRの選択肢として、上述の小数画素精度(例えば、1/4画素精度及び/又は1/2画素精度)を加えてもよい。
 他の例として、BV導出部205Aは、復号対象ブロックのBVの数に応じて、BVの画素精度を変更することもできる。
 例えば、BV導出部205Aは、BVが1つの場合は、BVの画素精度を小数画素精度とし、BVが2つ以上の場合は、BVの画素精度を整数画素精度とすることができる。
 BVの数が増えるほど、第2フレーム内予測が一般に高精度化する一方で、BV導出に要する処理負荷が増大する。そのため、BVの数が増えるほど、BVの画素精度を粗くすることで、第2フレーム内予測の予測精度を維持しつつ、復号処理負荷を抑制できる効果が得られる。
 例えば、BV導出部205Aは、BVが2つ又は2つ以上の場合は、BVの画素精度を整数精度に設定(選択可能な画素精度を整数精度のみに限定)してもよい。
 他方、BV導出部205Aは、BVが1つの場合は、BVの画素精度を整数画素精度又は小数画素精度に設定してもよい(選択可能な画素精度として整数精度のみに限定しなくてもよい)。
<BVP候補リスト>
 上述したように、BV導出部205Aは、BVP候補リストを復号対象ブロックが保持するBVの数だけ構成してもよい。
 L0リスト及びL1リストの例を再掲すると、単一のリスト(L0リスト)だけを利用するケースと、複数のリスト(例えば、BV導出部205Aが最大2つのBVを導出する場合は、L0リスト及びL1リスト)を利用するケースとに分けられる。
 いずれのケースでも、BV導出部205Aは、BVP候補リストに登録するBVP候補について、復号対象ブロックの図5に示すような近傍ブロックのBVや、過去に利用したBV、BVの平均等で構成してもよい。
 或いは、BV導出部205Aは、BVP候補リストに登録するBVP候補について、非特許文献2で開示されているIntraTMPで導出したBVで構成してもよい。
 これらのBVP候補リスト内に登録するBVP候補の登録順は、非特許文献1及び2に開示されている登録順序に準じてもよい。
 なお、BV導出部205Aは、BVP候補リストがBVP候補で埋まるまで、上述のBVP候補を探して登録する。
 他の例として、BV導出部205Aは、BVP候補リストに登録可能なBVP候補の最大数を超えるBVP候補の利用可否を確認し、その候補の中からBVP候補リストに登録するBVP候補を選択してもよい。
 例えば、BV導出部205Aは、BVP候補リストの探索順にBVP候補リストに登録してもよいし、後述する並び替え方法で登録可能なBVP候補の順序を並び替えた上で登録してもよい。
 また、BVP候補の最大数は、固定値で設定されてもよいし、後述するシーケンス単位或いはピクチャ単位或いはスライス単位の制御情報で適応的に設定されてもよい。
 また、BV導出部205Aは、IBC BVP、IBCマージ、IBC BVP/マージのそれぞれのBVP候補リストを、共通化してもよいし、共通化しなくてもよい(IBC BVP、IBCマージ、IBC BVP/マージのそれぞれで異なるBVP候補リストを用いてもよい)。
 前者の例としては、例えば、BV導出部205Aは、IBC BVPやIBC BVP/マージにおけるIBC BVPフラグ又はIBC BVPインデックスを用いてBVPを導出するBVP候補リストに登録可能なBVP候補の最大数に対して、IBCマージやIBC BVP/マージにおけるIBCマージインデックスを用いてBVP(BV)を導出するBVP候補リストに登録可能なBVP候補の最大数を同じに設定してもよい。
 このように、BVP候補リストを共通化することで、画像復号装置200の回路規模を削減できる。
 後者の例としては、例えば、BV導出部205Aは、IBC BVPやIBC BVP/マージにおけるIBC BVPフラグ又はIBC BVPインデックスを用いてBVPを導出するBVP候補リストに登録可能なBVP候補の最大数に対して、IBCマージやIBC BVP/マージにおけるIBCマージインデックスを用いてBVP(マージ候補又はBV)を導出するBVP候補リスト(マージ候補リスト)に登録可能なBVP候補(IBCマージ候補)の最大数を大きく設定してもよい。
 例えば、非特許文献2のように、BV導出部205Aは、BVP候補リストに登録可能なBVP候補数の最大値を2個に固定し、マージ候補リストに登録可能なマージ候補数の最大値を6個に設定してもよい。
 このように、BVD候補リストよりもマージ候補リストに登録可能なマージ候補数の最大値を大きく設定することで、復号可能なBVのパターン数が増えるため、符号化効率の向上が期待できる。
 BV導出部205Aは、BVP候補リスト(又は、マージ候補リスト)に登録可能なBVP候補(又は、マージ候補)を探索するために、近傍ブロック等のBVの利用可否を確認する際、新たに利用可否を確認するBVが既に利用可能と確認したBVP候補(又は、マージ候補)と同一である場合、新たに利用可否を確認するBVを利用不可と判定(剪定)してもよい。
 BV導出部205Aは、BVP候補リスト内に完全に一致するBVP候補が2つ以上登録されないようにすることで、BVP候補リストからBVPを選択するためのBVPに関する制御情報の符号化効率を向上することができる。
 また、BV導出部205Aは、復号対象ブロックにBVの画素精度を変更するAMVR等が適用されて最終的に導出されるBVの画素精度が、AMVR等が非適用の場合よりも大きい場合、BVP候補リストへの利用可否を判定するために復号対象ブロックの近傍ブロック等から抽出したBVP候補の画素精度を、最終的に導出されるBVの画素精度に丸めた上で利用するか否かを判定してもよい。
 例えば、BV導出部205Aは、BVP候補リストに対して利用可否を判定するために抽出した近傍ブロックの各BV(1画素精度)が、AMVR等によって最終的に4画素精度に丸められる場合、BVP候補リストの各BVを4画素精度に丸めた上で利用するか否かを判定してもよい。
 また、BV導出部205Aは、BV導出にあたり、2つ以上のBVP候補リスト(又は、マージ候補リスト)を使用し、少なくとも1つのリストのBVP候補(又は、マージ候補)の画素精度がAMVR等によって丸められる場合、他のリストのBVP候補(又は、マージ候補)の画素精度も同様に(同じ画素精度に)丸めた上で、BVP候補リスト(又は、マージ候補リスト) を構築してもよい。
 他の例として、BV導出部205Aは、BV導出にあたり、2つ以上のBVP候補リスト(又は、マージ候補リスト)を使用し、少なくとも1つのリストのBVP候補(又は、マージ候補)の画素精度がAMVR等によって丸められる場合、他のリストのBVP候補(または、マージ候補)の画素精度については丸めずに、BVP候補リスト(又は、マージ候補リスト) を構築してもよい。
 例えば、AMVRはIBCのBV導出に必要なBVDの画素精度を粗くしてBVDの符号量を削減する技術であるため、IBC及びAMVRが併用して適用される場合、上述のIBC BVPやIBC BVP/マージにおけるIBC BVPのBV導出方法により導出されるBVP、ひいては、BVの画素精度は、BVDの画素精度に丸められるのが自然である。
 他方、IBC BVP/マージにおけるIBC マージのBV導出方法により導出されるBVP(又は、マージ候補)、ひいては、BVの画素精度は、BVDの画素精度に丸められてもよいし、丸められなくてもよい。
 そのため、BV導出部205Aは、IBC BVP/マージについては、復号対象ブロックに対して、AMVR等が適用される場合、IBC BVP/マージのBVP候補リストに登録可能な各BVP候補の画素精度を丸めた上で利用するか否かを判定してもよいが、マージ候補リストに登録可能なBVP候補(又は、マージ候補)の画素精度は丸めずに利用するか否かを判定してもよい。
 また、BV導出部205Aは、BVP候補リスト内のBVP候補の登録順番を所定の方法で並べ替えてもよい。
 具体的には、BV導出部205Aは、復号対象ブロックの近傍画素をテンプレートとして、各BVP候補のBVが参照する参照ブロックの近傍画素(復号対象ブロックのテンプレートと同一サイズ)との類似性を評価し、かかる類似性の高い順序でBVP候補リスト内のBVP候補を並べ替える。
 ここで、BV導出部205Aは、差分二乗和(SSE)や差分絶対値和(SAD)等を利用して、かかるテンプレートの類似性について評価してもよい。
 或いは、BV導出部205Aは、BVが参照するブロック同士の類似性を、BVP候補リスト内のBVP候補の並べ替えに利用することができる。
 BV導出部205Aは、かかる類似性として、アダマール変換差分絶対値和(SATD:Sum of Absolute Transformed Difference)等を利用することができる。
 BV導出部205Aは、L0リスト及びL1リスト等の複数のリストを利用する場合は、両リストが参照するブロックの近傍を合成した上で、かかる類似性を評価してもよい。
 なお、BVP候補リストに登録するBVの登録順序を並べ替える範囲は、利用可能なBVP候補全てでもよいし、一部に限定されてもよい。
 BV導出部205Aは、上述の類似性の高い順序で、BVP候補リストBVP候補を登録することで、BVP候補リストから高精度なBVPを導出できるため、結果として、第2フレーム内予測の高精度化、ひいては、符号化効率の向上が期待できる。
<補正>
 BV導出部205Aは、所定の方法で、前述したIBC BVPによって導出されたBVP、IBCマージによって導出されたBVP(BV)或いはIBC BVP/マージによって導出されたBVP(BV)の参照位置を補正してもよい。
 所定の方法としては、導出されたBVP(BV)に対してBVDを補正ブロックベクトルとして加算する方法と、BVDを加算せずにBVP(BV)を起点に後述する所定の探索方法で新たな参照位置を探索する方法とに大別される。
 前者のBVの補正方法(以下、BVD加算方法)については、BV導出部205Aは、新たなBVDを加算するという性質上、IBC BVPには適用せず、IBCマージ或いはIBC BVP/マージのIBCマージインデックスに対応付けられるBVP(BV)に対してのみ適用してもよい。
 後者のBVの補正方法(以下、BV探索方法)については、BV導出部205Aは、BVDを加算しない方法であるため、IBC BVP或いはIBCマージ或いはIBC BVP/マージのいずれに適用してもよい。
 BVD加算方法の一例として、BV導出部205Aは、非特許文献2で開示されているマージモードブロックベクトル差分(MBVD:Merge mode with Block Vector Difference)を適用してもよい。
 具体的に、BV導出部205Aは、MBVDが適用される場合、制御情報に基づき、補正ブロックベクトルの値を導出(特定)する。
 また、BV導出部205Aは、MBVDが適用される場合、補正ブロックベクトルの符号量を抑制するために、補正ブロックベクトルの取り得る値(参照位置)に制約を設定してもよい。
 例えば、BV導出部205Aは、MBVDが適用される場合、補正ブロックベクトルの取り得る値(参照位置)の距離及び方向をそれぞれ離散的な値に限定してもよい。例えば、BV導出部205Aは、MBVDが適用される場合、補正ブロックベクトルの取り得る値(参照位置)の距離を2のべき乗に限定してもよいし、及び/又は、補正ブロックベクトルの取り得る値(参照位置)の上下左右に限定してもよい。
 なお、復号部201及びBV導出部205Aは、MBVDにおける補正ブロックベクトルの候補に、小数画素精度の補正ブロックベクトルの候補を含めるかどうか(或いは、整数画素のみとするか)どうかを、シーケンス単位及び/又はピクチャ単位及び/又はスライス単位の制御情報で制御してもよい。
 或いは、BV導出部205Aは、復号対象ブロックが有するブロックベクトルの数に応じて、補正ブロックベクトルの値(参照位置)に制約を設定してもよい。
 例えば、BV導出部205Aは、復号対象ブロックが有するブロックベクトルが2つ以上の場合は、補正ブロックベクトルの値(参照位置)を整数画素精度のみに制限してもよい。
 他の例として、BV導出部205Aは、シーケンス単位及び/又はピクチャ単位及び/又はスライス単位で、IBCに対する複数のBVの導出を可能にするかどうかを判定する制御情報で制御してもよい。
 BVD加算方法の例として、BV導出部205Aは、非特許文献2に開示されているテンプレートマッチング(Template Matching)を適用してもよい。
 Template Matchingは、上述のBVP候補の並び替え方法と同様に、復号対象ブロックの近傍画素をテンプレートとして、導出されたBVP(BV)を起点に、新たなBVP(BV)の参照位置を参照ブロックの近傍画素との類似性を確認しながら探索する方法である。
 BV導出部205Aは、かかる探索範囲について、非特許文献2と同様のサイズ(例えば、BVP(BV)を原点して、上下左右方向に8画素の範囲)に限定してもよい。
 また、BV導出部205Aは、探索する際の画素精度について、上述のIBCに対するAMVR等で選択された画素精度を考慮して、適応的に限定してもよい(例えば、AMVR等で1画素精度が選択された場合は、Template Matchingによる探索画素精度も1画素精度に整合させてもよい)。
 他のBVD加算方法の例として、導出されたBVが2つ以上ある場合は、BV導出部205Aは、非特許文献1のデコーダ側動きベクトル補正(DMVR:Decoder-side Motion Vector Refinement)のようなBV探索手法、すなわち、デコーダ側ブロックベクトル補正(DBVR:Decoder-side Block Vector Refinement)を適用してもよい。
 具体的には、BV導出部205Aは、導出された2つ以上のBVP(BV)において、予め設定した補正ブロックベクトル候補群を適用し、複数の参照ブロック同士の類似性が高い補正ブロックベクトルを探索することでBV(BVP)を補正する。
 ここで、BV導出部205Aは、DBVRの類似性の算出については、上述の差分二乗和(SSE)や差分絶対値和(SAD)やアダマール変換差分絶対値和(SATD)等を利用できる。また、DBVRは、2つ以上のBVを用いた探索方法を前提としているため、1つのBVが導出される場合は適用されない。
<保存>
 BV導出部205Aは、復号対象ブロックに対して導出された1つ以上のBV及び参照画像を後続の復号対象ブロックが参照できるように、所定の画素単位で画像復号装置200のメモリに保存する。
 BV導出部205Aが、復号対象ブロックに対して導出されたBV及び参照画像をメモリに保存することで、復号対象ブロックのBV及び参照画像を用いて、復号対象ブロックより後に復号される別の復号対象ブロックにIBCを適用できるため、IBCの適用率が増加し、符号化効率を向上させることができる。
 BV導出部205Aは、所定の画素単位として、例えば、非特許文献1のように、復号対象ブロックを4×4画素単位で細分割した4×4画素のサブブロックで、復号対象ブロックに対して導出された1つ以上のBV及び参照画像をメモリに保存してもよい。
 或いは、BV導出部205Aは、4×4画素のサブブロックよりも小さな画素単位或いは大きな画素単位(2或いは4のべき乗)で、復号対象ブロックに対して導出された1つ以上のBV及び参照画像をメモリに保存してもよい。
 BV導出部205Aは、ブロックベクトル候補リストの数に応じて、復号対象ブロックに対して導出された1つ以上のBV及び参照画像をメモリに保存してもよい。
 例えば、BV導出部205Aは、導出したBVが1つの場合は、通常のフレーム間予測で使用されるL0リストに、かかるBV及び対応する参照画像を保存する。
 また、BV導出部205Aは、導出したBVが2つの場合は、通常のフレーム間予測で使用されるL0リスト及びL1リストのそれぞれに、かかるBV及び対応する参照画像を1つずつ保存する。
 さらに、BV導出部205Aは、導出したBVが3つ以上の場合は、通常のフレーム間予測で使用されるL0リスト及びL1リストに加えて、Lnリストを追加し、それぞれに、かかるBV及び対応する参照画像を1つずつ保存する。
 BV導出部205Aは、上述のようにメモリに保存したBVを、別の復号対象ブロックでBVP候補として参照する場合は、以下のように、BVP候補リストに対して利用可能なBVP候補として展開する。
 BV導出部205Aは、メモリに保存されたBVが1つの場合は、BVP候補に1つのリスト番号(1つのBVP候補)としてBVを展開する。
 一方、BV導出部205Aは、メモリに保存されたBVが2つ以上の場合は、2つ以上のリスト番号(2つ以上のBVP候補)として、BVを展開する。
 また、BV導出部205Aは、復号対象ブロックに対して導出された1つ以上のBV及び参照画像を、上述の過去に使用したBVを参照するヒストリーBVP或いはヒストリーBVマージで参照するために、FIFO(First In First Out)式の別のメモリ(以下、ヒストリー)に保存してもよい。
 ここで、BV導出部205Aは、導出したBVが1つの場合は、ヒストリーに、かかるBV及び対応する参照画像をそのまま保存する。ただし、BV導出部205Aは、ヒストリー内に既に同じBVが存在する場合は、かかるBVを保存しない。
 一方、BV導出部205Aは、導出したBVが2つ以上の場合は、かかる2つ以上のBV及び対応する参照画像をヒストリーにそれぞれ保存する。ただし、BV導出部205Aは、導出したBVが1つの場合と同様に、ヒストリー内に既に同じBVが存在する場合は、かかるBVを登録しない。
 なお、上述のメモリ或いはヒストリーに保存されるBVが、上述したように補正されている場合は、BV導出部205Aは、補正後のBVを保存してもよいし、補正前のBVを保存することもできる。
 かかる場合、BV導出部205Aは、補正後のBV及び補正前のBVのどちらを登録するかについて予め決定しておくことで、補正前後を表す符号を省略できる効果が得られる。
 逆に、BV導出部205Aは、補正後のBV及び補正前のBVのどちらを登録するかについて適応的に決定することで、符号化効率を向上させる効果が得られる。
<合成>
 第2フレーム内予測画素生成部205Bは、1つ又は複数のBVが参照する参照ブロックの画素(参照画素)を用いて復号対象ブロックの予測画素を合成することで第2予測画素を生成するように構成されている。
 第2フレーム内予測画素生成部205Bは、BVが1つの場合は、復号対象ブロックの予測画素として、参照ブロックの参照画素をそのまま利用してもよいし、参照ブロックの画素を補正してもよい。
 例えば、第2フレーム内予測画素生成部205Bは、上述の参照画素を用いた多項式によって、かかる補正を実行してもよい。
 具体的には、第2フレーム内予測画素生成部205Bは、上述の参照画素Q(x,y)及び重み係数C1、C2を用いて定義された多項式(次式参照)によって、復号対象ブロック内の座標(x,y)における予測画素としての補正値P(x,y)を生成するように構成されていてもよい。
 P(x,y)=C1×Q(x,y)+C2
 或いは、第2フレーム内予測画素生成部205Bは、1つの予測画素に対して1つのBVが参照するブロックにおける複数の参照画素Q1,Q2,…Qnを用いて、上述の多項式を定義してもよい。
 次式は、座標(x,y)を中心とした3×3の領域で多項式を定義した例である。
 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
 図10は、重み係数が10個の例を示す。ただし、表記を簡潔にするために、Q(x+i,y+j)をQi,jで表している。
 第2フレーム内予測画素生成部205Bは、このように複数の参照画素を利用して多項式を定義する場合は、近くの画素を利用することが好ましい。
 或いは、第2フレーム内予測画素生成部205Bは、上述の参照画素の分布によって複数の多項式を定義してもよい。
 次式は、参照画素のヒストグラムが2峰性である場合に、閾値Thで2種類の係数を持つ多項式を定義した例である。
 P(x,y)=C1×Q(x,y)+C2 P(x,y)>Th
 P(x,y)=C3×Q(x,y)+C4 P(x,y)<=Th
 ここで、第2フレーム内予測画素生成部205Bは、かかる閾値について、2峰を分離する値に設定してもよい。或いは、第2フレーム内予測画素生成部205Bは、かかる閾値について、単純化して平均値を用いることもできる。
 第2フレーム内予測画素生成部205Bは、上述の参照画素の分布が多峰性であれば、より多くの種類の係数を持つ多項式を適用することもできる。
 第2フレーム内予測画素生成部205Bは、復号対象ブロックが持つBVが2つの場合は、かかるBVが参照する2つの参照ブロックの画素(参照画素)を所定の重み値を用いて加重平均することで、第2予測画素を生成するように構成されていてもよい。
 例えば、第2フレーム内予測画素生成部205Bは、復号対象ブロックが持つ2つ以上のBVが参照する参照画素を1:1で単純平均することで、第2予測画素を生成するように構成されていてもよい。
 すなわち、第2フレーム内予測画素生成部205Bは、上述の所定の重み値について、1:1で固定してもよいし、適応的に設定してもよい。
 第2フレーム内予測画素生成部205Bは、上述の所定の重み値について適応的に設定する場合は、BVの長さや、復号対象ブロックと各参照ブロックの近傍画素(テンプレート)との類似性の評価に基づき、1:1ではない重み値を設定することができる。
 ここで、所定の重み値について1:1の単純平均にすることで処理負荷を低減する効果が得られる。一方、所定の重み値について適応的に設定することで符号化効率を向上させる効果が得られる。
 また、複数のBVのうち、BVの長さが小さい参照ブロックは、復号対象ブロックとの誤差が小さいと考えられるため、BVの長さが小さい参照ブロックの重みを大きくすることで、2つ以上のBVに基づいて予測画素を生成する場合の予測精度を向上させられる。
 また、テンプレートの類似性評価で、類似性が高い(テンプレートコストが小さい)参照ブロックは、復号対象ブロックとの誤差が小さいと考えられるため、BVの長さが小さい参照ブロックの重みを大きくすることで、2つ以上のBVに基づいて予測画素を生成する場合の予測精度を向上させられる。
 他の例として、第2フレーム内予測画素生成部205Bは、非特許文献1や非特許文献2に開示されている双方向符号化ブロック単位加重平均(BCW:Bidrectional with CU based Weighting)のように、加重平均で用いる重み値を特定する制御情報(以下、BCWインデックス)に応じて、2つのBVが参照する参照ブロックの参照画素を加重平均してもよい。
 復号部201は、双予測のIBC BVP(又は、IBC BVP/マージ)についてはBCWインデックスを復号してもよいし、双予測のIBCマージ(又は、IBC BVP/マージ)についてはBCWインデックスを復号せず、マージ候補リストのマージ候補が有するBCWインデックスを継承してもよい。
 さらに、第2フレーム内予測画素生成部205Bは、非特許文献2のように、継承するBCWインデックスの値に対応するBCWの重み値を、上述した復号対象ブロック及び参照ブロックに対するテンプレートを用いた類似性評価により補正してもよい。
 或いは、第2フレーム内予測画素生成部205Bは、複数の参照先の画素を用いて定義された多項式によって、第2予測画素を生成するように構成されていてもよい。
 具体的には、第2フレーム内予測画素生成部205Bは、異なる複数の参照画素Q(x,y)、R(x,y)及び重み係数C1、C2、C3を用いて定義された多項式(次式参照)によって、復号対象ブロック内の座標(x,y)における予測画素としての補正値P(x,y)を生成するように構成されていてもよい。
 P(x,y)=C1×Q(x,y)+C2×R(x,y)+C3
 上述の構成によれば、多項式を単純化することで計算負荷を軽減する効果が得られる。逆に、多項式を複雑にすることで予測精度を向上させる効果が得られる。
 第2フレーム内予測画素生成部205Bは、上述の多項式として複数の多項式を定義しておき選択可能とするように構成されていてもよい。かかる構成によれば、適切な多項式を利用することができ、符号化効率向上の効果が得られる。
 第2フレーム内予測画素生成部205Bは、復号対象ブロックの近傍画素及び参照ブロックの近傍画素から、上述の多項式の係数(重み係数)を導出するように構成されていてもよい。
 具体的には、図11に示すように、第2フレーム内予測画素生成部205Bは、復号対象ブロックの近傍画素P’と参照ブロックの近傍画素Q’とが補正によって一致するような重み係数Cを導出する(図11におけるX1参照)。
 例えば、第2フレーム内予測画素生成部205Bは、次式に示す誤差関数Eを定義し、Eを最小化するような重み係数Cを導出する。
 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)+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))2
 第2フレーム内予測画素生成部205Bは、かかる重み係数の導出に、最小二乗法等を利用することができる。
 或いは、第2フレーム内予測画素生成部205Bは、外れ値の影響を低減するため、主成分回帰や部分最小二乗回帰等のロバスト推定を用いて、かかる重み値を導出することもできる。
 第2フレーム内予測画素生成部205Bは、導出した重み係数Cを参照ブロックの近傍画素Qに適用して補正値Pを求め(図11におけるX2)、復号対象ブロックの予測画素(第2予測画素)とする(図11におけるX3)。
 かかる構成によれば、かかる重み係数が制御情報として保持される場合と比較すると、かかる重み係数を近傍画素から導出することで、かかる重み係数を復号しなくても済むため、符号化効率向上の効果が得られる。
 また、複数の参照画素に重み係数を適用することは、より精緻な小数精度のBVを適応的に導出することに相当するため、BVの符号量削減による符号化効率向上の効果が得られる。
 ここで、第2フレーム内予測画素生成部205Bは、上述の重み係数(多項式の係数)の導出に、一定範囲内にある近傍画素P’及びQ’を用いるように構成されていてもよい。
 例えば、図12(a)に示すように、第2フレーム内予測画素生成部205Bは、上述の重み係数(多項式の係数)の導出に、復号対象ブロックから4画素ライン以内の近傍画素を用いるように設定してもよい。
 逆に、第2フレーム内予測画素生成部205Bは、上述の重み係数の導出に用いる近傍画素を限定することもできる。
 例えば、第2フレーム内予測画素生成部205Bは、図12(b)に示すように、復号対象ブロックの上に位置する領域の近傍画素だけを利用して重み係数を導出してもよいし、図12(c)に示すように、復号対象ブロックの左に位置する領域の近傍画素だけを利用して重み係数を導出してもよい。
 なお、第2フレーム内予測画素生成部205Bは、上述の近傍画素を指定する複数の範囲を選択可能とするように構成されていてもよい。かかる構成によれば、適切な重み係数を導出することができ符号化効率向上の効果が得られる。
(IBC OBMCの基本概念)
 第2フレーム内予測画素生成部205Bは、復号対象ブロックの参照画素そのものではなく、復号対象ブロックの参照ブロックにおける参照画素と隣接ブロックの参照ブロックにおける近傍画素との加重平均を計算することで、復号対象ブロックの参照ブロックにおける参照画素に対する補正を実行してもよい。
 これにより、非特許文献2で開示されているフレーム間予測手段に対する重複ブロック動き補償(OBMC:Overlapped Block Motion Compensation)のように、IBCで生成する予測ブロックとそれに隣接する隣接ブロックとの間のブロック境界を滑らかに接続する効果が得られる。
 図13に、復号対象ブロックの隣接ブロックがBVを持つ場合を示す。
 図13に示すように、第1に、第2フレーム内予測画素生成部205Bは、隣接ブロックのBVが参照する隣接参照ブロックにおいて復号対象ブロックの相対位置に相当する近傍画素(以下、隣接参照近傍画素)を取得する。
 図13の例では、隣接ブロックは、復号対象ブロックの左に位置するので、第2フレーム内予測画素生成部205Bは、隣接参照ブロックの右側の隣接参照近傍画素を取得する。
 隣接参照近傍画素の範囲は、固定的に設定されてもよいし、可変に設定されてもよい。
 例えば、第2フレーム内予測画素生成部205Bは、ブロックサイズやアスペクト比に応じて、隣接参照近傍画素の範囲を変化させてもよい。
 第2に、第2フレーム内予測画素生成部205Bは、隣接参照近傍画素と復号対象ブロックの参照画素との加重平均を計算する。以降では、かかる処理を「IBC OBMC」と呼称する。
(IBC OBMCの適用判定及び適用処理単位)
 第2フレーム内予測画素生成部205Bは、IBC OBMCの適用有無について、復号対象ブロック単位で判定してもよいし、復号対象ブロック内の復号対象ブロックよりも小さいブロック(以下、サブブロック)単位で判定してもよいし、復号ブロック単位及びサブブロック単位の二段階で判定してもよい。
 第2フレーム内予測画素生成部205Bは、サブブロック単位での判定の一例として、非特許文献2に開示されているように、復号対象ブロックの左部と上部とのブロック境界に面する4×4画素のサブブロックごとに、IBC OBMCの適用有無について判定してもよい。
 このように、IBC OBMCの適用有無について、復号対象ブロック単位で判定することで、判定に必要な処理量の増加を抑制できる。
 他方、IBC OBMCの適用有無について、サブブロック単位で判定することで、IBCが復号対象ブロックに適用される場合において、かかる復号対象ブロック内でIBC OBMCが有効に働く箇所でIBC OBMCが適用できるようになるため、予測精度が向上する。
 また、第2フレーム内予測画素生成部205Bは、IBC OBMCの適用有無の判定結果に基づいて、復号対象ブロック内の復号対象ブロックよりも小さいブロック(以下、サブブロック)単位で、IBC OBMCを適用してもよい。
(IBC OBMCの適用条件)
 第2フレーム内予測画素生成部205Bは、復号対象ブロック単位及び/又はサブブロック単位で、所定条件が満たされる場合に、IBC OBMCを適用すると判定し、所定条件が満たされない場合は、IBC OBMCを適用しないと判定してもよい。
 第2フレーム内予測画素生成部205Bは、かかる所定条件を、以下に示す少なくとも1つの条件で構成してもよい。
1.シーケンス及び/又はピクチャ及び/又はスライス単位でIBC OBMCを適用可能とする制御情報(IBC OBMCフラグ)が有効であること
2.復号対象ブロック単位でIBC OBMCを適用可能とする制御情報(IBC OBMCフラグ)が有効であること
3.復号対象ブロックの面積(画素数)が32画素以上であること
※ ここで、条件3については、32画素ではなく、16画素、64画素、128画素であってもよい。
4.復号対象ブロック(又は、サブブロック)に隣接する隣接ブロックがBV又は動きベクトルを有すること
5.復号対象ブロック(又は、サブブロック)のBVと隣接ブロックのBV又は動きベクトルとが異なること
6.復号対象ブロックにおいて、非特許文献2で開示されているローカル輝度補償が適用されない(無効である)こと
7.復号対象ブロック(又は、サブブロック)のBVに基づく参照画素と隣接ブロックのBV又は動きベクトルに基づく隣接参照近傍画素の画素値との最大誤差が所定の閾値以下であること
8.復号対象ブロックの参照画素の勾配ヒストグラムにおいて、主要な勾配が多いこと
9.復号対象ブロック(又は、サブブロック)のBVが1つであること
10.復号対象ブロック(又は、サブブロック)の隣接ブロックのBV又は動きベクトルが1つであること
 以下に、上述の所定条件の変更例について記載する。
 第2フレーム内予測画素生成部205Bは、上述の条件5については、復号対象ブロック(又は、サブブロック)のBVが参照する参照フレームと隣接ブロックのBV又は動きベクトルが参照する参照フレームとが異なる場合は、復号対象ブロック(又は、サブブロック)のBVと隣接ブロックのBV又は動きベクトルとが異なると判定してもよい。
 第2フレーム内予測画素生成部205Bは、上述の条件6及び条件7については、参照画素そのものを用いるのではく、参照画素に補間フィルタをかけた後の予測画素を用いてもよい。
 さらに、第2フレーム内予測画素生成部205Bは、復号対象ブロック(又は、サブブロック)又は隣接ブロックに対するBVの導出数に応じて、IBC OBMCについての異なる適用制限を設定することができる。具体的には、以下の通りである。
 第2フレーム内予測画素生成部205Bは、上述の所定条件に、復号対象ブロック(又は、サブブロック)のBVが1つであるという条件を追加してもよい。
 第2フレーム内予測画素生成部205Bは、復号対象ブロック(又は、サブブロック)のBVが1つである場合にのみ、IBC OBMCの適用を制限することで、IBC OBMCを適用する際に必要な隣接参照近傍画素を取得するためのメモリバンド幅の増加を抑制することができる。
 第2フレーム内予測画素生成部205Bは、上述の所定条件に、復号対象ブロック(又は、サブブロック)の隣接ブロックのBV又は動きベクトルが1つであるという条件を追加してもよい。
 第2フレーム内予測画素生成部205Bは、復号対象ブロック(又は、サブブロック)の隣接ブロックのBV又は動きベクトルが1つである場合にのみ、IBC OBMCの適用を制限することで、IBC OBMCを適用する際に必要な隣接参照近傍画素を取得するためのメモリバンド幅の増加を抑制することができる。
 第2フレーム内予測画素生成部205Bは、復号対象ブロック(又は、サブブロック)の隣接ブロックのBV又は動きベクトルが2つ以上ある場合、かかる隣接ブロックのBV又は動きベクトルの大きさ或いはテンプレートコストの比較により、1つのBV又は動きベクトルを選択してもよい。
 例えば、第2フレーム内予測画素生成部205Bは、隣接ブロックのBV又は動きベクトルの大きさが最小或いはテンプレートコストが最小となる隣接ブロックのBV又は動きベクトルを選択してもよい。
 上述のような復号対象ブロック単位及び/又はサブブロック単位のIBC OBMCの適用条件を設けることには、以下のような狙い(期待効果)がある。
 例えば、CGで描画された画像やスクリーン画像は、エッジが原画像においてはっきりとしている場合が多く、ブロック境界が不連続な画像になりやすい。したがって、このような画像では、IBC OBMCを適用しない方が、ブロック境界付近の予測誤差を抑制しやすい。
 また、第2フレーム内予測画素生成部205Bは、特定のスライスや特定のブロックサイズの場合のみ、IBC OBMCを適用することができる。
 このように、スライス及び/又はブロックサイズに応じて、IBC OBMCの適用を制限することで、符号化の処理量を削減できる効果が得られる。
 例えば、IBCは、スライスによる制限を適用し、IntraTMPは、スライスによる制限を適用しない。
 IntraTMPは、IBCと比較してBVの探索処理量が軽く予測精度が低いため、適用対象を増加させることで符号化効率を向上できる効果が得られる。
(IBC OBMCの加重平均)
 或いは、第2フレーム内予測画素生成部205Bは、上述の近傍画素として、上述の参照画素の補正で用いた補正を適用してもよい。
 第2フレーム内予測画素生成部205Bは、隣接ブロックの画素及び隣接参照ブロックの画素の全部或いは一部から、重み係数について導出する。
 すなわち、図14に示すように、第2フレーム内予測画素生成部205Bは、隣接ブロックの画素をP’とし、隣接参照ブロックの画素をQ’とし、重み係数Cを導出した上で(図14におけるY1)、隣接参照ブロックの近傍画素Qに適用して補正値Pを求め(図14におけるY2)、復号対象ブロックの予測画素と加重平均を計算する(図14におけるY3)。
 かかる構成によれば、いずれも隣接参照ブロックの近傍画素を復号対象ブロックの予測画素に反映させることで予測誤差が低減され符号化効率向上の効果が得られる。
 なお、第2フレーム内予測画素生成部205Bは、復号対象ブロックと参照ブロックとでBVの数が異なる場合は、BVの数が多い方のBVの数を、BVの数が少ない方のBV数に合わせる(復号対象ブロック及び隣接ブロックの各BVの数を最小のBV数に削減する)。
 同様に、第2フレーム内予測画素生成部205Bは、復号対象ブロックと参照ブロックとでBVの画素精度が異なる場合は、BVの画素精度が細かい方のBVの画素精度を、BVの画素精度が粗い方のBVの画素精度に合わせる(復号対象ブロック及び隣接ブロックの各BVの画素精度を最大の画素精度に丸める)。
(IBC GPM)
 第2フレーム内予測画素生成部205Bは、復号対象ブロックにIBC GPMが適用される場合、IBC GPMの分割線によって2分割された各分割領域に対する1つ以上のBVの参照先の画素(参照画素)を、IBC GPMの分割線からの距離に応じて加重平均してもよい。
 変更例として、第2フレーム内予測画素生成部205Bは、かかる加重平均がなされる領域、すなわち、IBC GPMの分割線から各分割領域方向に対する画素数を固定的に設定してもよいし、適応的に設定してもよい。
 第2フレーム内予測画素生成部205Bは、固定的に設定する方法としては、0画素、1/4画素、1/2画素、1画素、2画素、4画素、8画素のような値を設定してもよい。
 例えば、スクリーン画像に対しては、IBC GPMの加重平均領域幅の画素数を0画素や1/4画素といった小さい画素数を用いることで、IBC GPMの分割線が適用されやすく、スクリーン画像特有のエッジ境界の画素値を過剰に平滑化することなく維持できるため、予測誤差を低減しやすい。
 また、第2フレーム内予測画素生成部205Bは、適応的に設定する方法としては、非特許文献2で開示されているGPM適応ブレンディングによる方法が適用できる。
 例えば、自然画像に対しては、非特許文献2で開示されているGPMの適応ブレンディングの方法のように、制御情報やブロックサイズに基づいて適応的にIBC GPMの加重平均領域幅の画素数を設定することで、IBC GPMの分割線付近の予測誤差を低減しやすい。
<変換>
 逆変換部203は、IBC(又は、IntraTMP)が適用される復号対象ブロックの変換係数に対して、複数の異なる変換基底から1つの変換基底を適応的に選び、逆変換処理を適用してもよい。
 ここで、複数の異なる変換基底の一例として、逆変換部203は、非特許文献1で開示されている複数変換基底(MTS:Multiple Transform Selection)を用いてもよい。
 また、非特許文献1で開示されているMTSには、フレーム内予測に対するMTS及びフレーム間予測向けのMTSが存在する。
 逆変換部203は、非特許文献1で開示されているフレーム内予測に対するMTSを適用してもよいし、非特許文献1で開示されているフレーム間予測に対するMTSを適用してもよい。
 逆変換部203は、MTSにおける変換基底の候補のうち、復号部201が復号或いは推定したMTSの変換基底の候補を特定するための制御情報の値に基づいて、変換基底を特定して適用してもよい。
 変更例として、逆変換部203は、IBC(又は、IntraTMP)が適用される復号対象ブロックの変換係数に対して、異なる又は同じ変換基底を用いた2段階の逆変換処理を適用してもよい。
 ここで、異なる変換基底を用いた2段階の逆変換処理の一例として、逆変換部203は、非特許文献1で開示されている低周波数非分離二次変換(LFNST:Low-Frequency Non-Separable Transform)を用いてもよい。
 復号部201は、異なる複数の変換基底の中から1つの変換基底を選択し、変換係数を逆変換するか否かを特定するための制御情報を復号し、逆変換部203は、LFNSTにおける変換基底の候補のうち、復号部201が復号或いは推定したLFNSTの変換基底の候補を特定するための制御情報の値に基づいて、変換基底を特定して適用してもよい。
 IBC(又は、IntraTMP)が適用される復号対象ブロックに対してMTSやLFNSTを適用する理由は、以下の通りである。
 IBC(又は、IntraTMP)では、上述した信号処理的な性質上、適用されるブロックは、エッジや縞模様等の複雑な画像特性を持つ場合が多い。そのため、IBC(又は、IntraTMP)が適用される復号対象ブロックの予測誤差を変換した後に導出される変換係数は、高周波成分に分布しやすい、或いは、水平方向成分或いは垂直成分或いは斜め成分に偏りを持つ。
 このような変換係数の分布に対して、異なる複数の変換基底から有効な逆変換基底を適応的に選択して適用すること、或いは、異なる又は同じ変換基底を用いた2段階の逆変換を適用することは、変換係数間の冗長性(ひいては、予測誤差の空間的な冗長性)を削減する効果が期待でき、結果として、符号化効率の向上が期待できる。
<色差>
 動画像の復号(又は、符号化)において、情報量を削減するために、動画像を構成するRGB信号を、輝度信号(Y信号)及び色差信号(UV信号或いはCbCr信号)に変換して復号(又は、符号化)する場合がある。
 また、さらに情報量を削減するために、輝度信号の画素数に対して、色差信号の画素数を一定間隔(例えば、水平方向及び/又は垂直方向に半分に)間引く(ダウンサンプリングする)場合がある。
 さらに、非特許文献1では、輝度信号の画像及び色差信号の画像において、同一の復号(又は、符号化)ツリーブロック内の復号(又は、符号化)ツリーブロックの分割構造を同一にする技術(シングルツリー構造)と変更する技術(デュアルツリー構造)が開示されている。
 以上のようなケースのうち、例えば、輝度信号の画像に対して色差信号の画像がダウンサンプリングされ且つ復号対象ブロックが含まれる復号(又は、符号化)ツリーブロックがシングルツリー構造である場合は、BV導出部205Aは、輝度信号の復号対象ブロックに対して導出した1つ又は2つ以上のBVの大きさ(水平成分及び垂直成分)と輝度信号及び色差信号のダウンサンプリング比率とに基づき、色差信号の復号対象ブロックに対するBVを導出してもよい。
 より具体的には、BV導出部205Aは、輝度信号の復号対象ブロックに対して導出した1つ又は2つ以上のBVの大きさ(水平成分及び垂直成分)を、輝度信号及び色差信号のダウンサンプリング比率に応じて縮小してもよい。
 さらに、以上のようなケースのうち、例えば、輝度信号の画像に対して色差信号の画像がダウンサンプリングされ且つ復号対象ブロックが含まれる復号(又は、符号化)ツリーブロックがデュアルツリー構造である場合は、BV導出部205Aは、色差信号の復号対象ブロックに対するBVを導出しなくてもよい。
<シグナリング>
 以下、BVを保持するモード(以下、BVモード)を復号部201が復号する制御情報(シンタックス)について説明する。
 復号部201に入力される符号情報は、復号対象シーケンス単位の制御情報(シンタックス)をまとめたシーケンスパラメータセット(SPS)を含むことができる。
 また、かかる符号情報は、復号対象ピクチャ単位の制御情報をまとめたピクチャパラメータセット(PPS)或いはピクチャヘッダ(PH)を含むことができる。
 或いは、かかる符号情報は、復号対象スライス単位の制御情報をまとめたスライスヘッダ(SH)を含むことができる。
 以下、図15及び図16を用いて、復号部201におけるシーケンス単位又はピクチャ単位又はスライス単位でのIBCに関連する各種フラグの復号制御方法及び各種フラグの定義(意味)について説明する。
 図15は、シーケンス単位でのIBCに関連する所定フラグの復号制御方法を示す図である。復号部201は、具体的に以下のように動作する。
 図15に示すように、ステップS100において、復号部201は、sps_ibc_enabled_flag(第2シンタックス)が1であるか否かを判定する。1であれば、本動作は、ステップS101に進み、1でなければ、本動作は、ステップS102に進む。
 ここで、sps_ibc_enabled_flagは、シーケンス単位でのIBCの適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibc_enabled_flagが1の場合は、IBCを適用可能と特定し、sps_ibc_enabled_flagが0の場合は、IBCを適用不可と特定する。
 復号部201は、ステップS101において所定フラグを復号し、ステップS102において所定フラグを復号せずに、それぞれ本処理を終了する。
 ここで、復号部201は、かかる所定フラグとして、図16に示すようなIBCに関連する各種フラグを復号してもよい。具体的には、以下の通りである。
 図16に示すsps_biibc_enabled_flagは、シーケンス単位での双予測IBCの適用可不可を制御(特定)するフラグ(第1シンタックス)であり、復号部201は、sps_biibc_enabled_flagが1の場合は、双予測IBCを適用可能と特定し、sps_biibc_enabled_flagが0の場合は、双予測IBCを適用不可と特定する。
 復号部201は、sps_biibc_enabled_flagの変更例として、sps_multiibc_enabled_flagを復号してもよい。
 sps_multiibc_enabled_flagは、シーケンス単位での複数予測IBCの適用可不可を制御(特定)するフラグであり、復号部201は、sps_multiibc_enabled_flagが1の場合は、複数予測IBCを適用可能と特定し、sps_multiibc_enabled_flagが0の場合は、複数予測IBCを適用不可と特定する。
 図16に示すsps_ibcmbvd_enabled_flagは、シーケンス単位でのIBC MBVDの適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcmbvd_enabled_flagが1の場合は、IBC MBVDを適用可能と特定し、sps_ibcmbvd_enabled_flagが0の場合は、IBC MBVDを適用不可と特定する。
 図16に示すsps_six_minus_max_num_ibc_merge_candは、シーケンス単位で前述したIBCマージ(又は、IBC BVP)の候補リストの最大値を設定する制御情報である。
 例えば、画像復号装置200で設計したIBCマージ(又は、IBC BVP)の候補リストの設定可能な最大値が6(sps_six_minus_max_num_ibc_merge_candにおける「six」に対応)である場合、かかる制御情報を用いて、かかる最大値を変更できる。
 具体的には、復号部201は、以下のように、シーケンス単位で、画像復号装置200のIBCマージ(又は、IBC BVP)の候補リストの最大値を制御(設定変更)してもよい。
 if(sps_ibc_enabled_flag)
 MaxNumIbcMergeCand=6-sps_six_minus_max_num_ibc_merge_cand
 else
 MaxNumIbcMergeCand=0
 ここで、MaxNumIbcMergeCandは、シーケンス(又は、ピクチャ又はスライス又は復号対象ブロック)単位で設定したIBCマージ(又は、IBC BVP)に用いる1つ以上のブロックベクトルを導出するためのブロックベクトル候補リストの最大値を表す復号装置内の内部パラメータである。
 図16に示すsps_ibctm_enabled_flagは、シーケンス単位でのIBCに対するTM(IBC TM)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibctm_enabled_flagが1の場合は、IBC TMを適用可能と特定し、sps_ibctm_enabled_flagが0の場合は、IBC TMを適用不可と特定する。
 図16に示すsps_ibcdbvr_enabled_flagは、シーケンス単位でのIBCに対するDBVR(IBC DBVR)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcdbvr_enabled_flagが1の場合は、IBC DBVRを適用可能と特定し、sps_ibcdbvr_enabled_flagが0の場合は、IBC DBVRを適用不可と特定する。
 図16に示すsps_ibcciip_enabled_flagは、シーケンス単位での非特許文献2で開示されているIBCに対するイントラ・インター結合予測(CIIP:Combined Intra Inter Prediction)(IBC CIIP)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcciip_enabled_flagが1の場合は、IBC CIIPを適用可能と特定し、sps_ibcciip_enabled_flagが0の場合は、IBC CIIPを適用不可と特定する。
 図16に示すsps_ibcgpm_enabled_flagは、シーケンス単位でのIBC GPMの適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcgpm_enabled_flagが1の場合は、IBC GPMを適用可能と特定し、sps_ibcgpm_enabled_flagが0の場合は、IBC GPMを適用不可と特定する。
 図16に示すsps_ibcobmc_enabled_flagは、シーケンス単位でのIBC OBMCの適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcobmc_enabled_flagが1の場合は、IBCに対するOBMC(IBC OBMC)を適用可能と特定し、sps_ibcobmc_enabled_flagが0の場合は、IBC OBMCを適用不可と特定する。
 図16に示すsps_ibcflm_enabled_flagは、シーケンス単位でのIBCに対する上述の多項式で定義された重み係数の適用(IBC FLM:IBC Filterd Linear Model)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcflm_enabled_flagが1の場合は、IBC FLMを適用可能と特定し、sps_ibcflm_enabled_flagが0の場合は、IBC FLMを適用不可と特定する。
 図16に示すsps_ibcmts_enabled_flagは、シーケンス単位でのIBCに対するMTS(IBC MTS)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibcmts_enabled_flagが1の場合は、IBC MTSを適用可能と特定し、sps_ibcmts_enabled_flagが0の場合は、IBC MTSを適用不可と特定する。
 図16に示すsps_ibclfnst_enabled_flagは、シーケンス単位でのIBCに対するLFNST(IBC LFNST)の適用可不可を制御(特定)するフラグであり、復号部201は、sps_ibclfnst_enabled_flagが1の場合は、IBC LFNSTを適用可能と特定し、sps_ibclfnst_enabled_flagが0の場合は、IBC FLNSTを適用不可と特定する。
 復号部201は、上述した各種フラグが復号されない場合は、それらの値を0と特定してもよい。
 ここで、図15及び図16では、シーケンス単位での各種フラグの復号制御方法を説明したが、これよりも細かい単位、すなわち、ピクチャ単位やスライス単位で同様に制御してもよい。また、これら特定の階層のみで制御してもよいし、複数の階層にわたって多段階で制御してもよい。
 例えば、上位層でのみ設定することで符号量の増大を抑制することもできるし、下位層でも設定した上で下位層での設定を優先することで適応的な制御ができる。
 なお、上述の例では、シーケンス単位、ピクチャ単位或いはスライス単位で補正の方法の設定方法を述べたが、これらを設定せずに、後述のブロック単位で直接方法を選択してもよい。この場合、上述のヘッダ情報増加を回避できる。
 以下、図17及び図18を用いて、復号部201におけるスライス単位(又は、ピクチャ単位又はシーケンス単位)でのBVを2つ用いるIBC(双予測IBC、Bipredictional IBC)の適用可不可を制御するフラグの復号方法及び当該フラグの定義(意味)について説明する。
 なお、以降では、BVを2つ用いるIBC(双予測IBC、Bipredictional IBC)を一例とした復号方法を説明するが、BVを2つ以上用いるIBC(複数予測IBC、Multipredictional IBC)と読み替えて、同様の復号方法を実現してもよい。
 図17は、復号部201における双予測IBCの適用可不可を制御(特定)するフラグの復号方法の一例を示す図である。
 図17において、復号部201は、以下のように、双予測IBCの適用可不可を制御(特定)するフラグを復号或いは復号せずに推定してもよい。
 図17に示すように、ステップS200において、復号部201は、sps_ibc_enabled_flagが1であり、且つ、sh_slice_typeがIであるか(Iスライスであるか)否かを判定する。
 Yesであれば、本動作は、ステップS201に進み、Noであれば、本動作は、ステップS202に進む。
 ここで、sh_slice_typeは、スライス単位で復号対象ブロックを含むスライスの種類を表す制御情報(シンタックス)である。
 スライスの種類として、Iスライス(第1フレーム内予測又は第2フレーム内予測が適用可能なスライス)、Bスライス(第1フレーム内予測、第2フレーム内予測又はフレーム間予測が適用可能なスライス)、Pスライス(第1フレーム内予測、第2フレーム内予測又はフレーム間予測が適用可能なスライス。ただし、フレーム間予測は、片予測のみが適用可能)がある。
 ステップS201において、復号部201は、sh_biibc_enabled_flagを復号し、本処理を終了する。
 ステップS202において、復号部201は、sh_biibc_enabled_flagを復号せずに、本処理を終了する。
 ここで、sh_biibc_enabled_flag(第3シンタックス)は、スライス単位で、双予測IBCの適用可不可を制御するフラグである。
 復号部201は、sh_biibc_enabled_flagが1である場合は、双予測IBCを適用可能と特定し、sh_biibc_enabled_flagが0である場合は、双予測IBCを適用不可と特定する。
 復号部201は、sh_biibc_enabled_flagが復号されていない場合は、sh_slice_typeの値に応じて、sh_biibc_enabled_flagの値を推定してもよい。
 具体的には、復号部201は、sh_slice_typeがBである場合(Bスライスである場合)は、sh_biibc_enabled_flagを1と推定してもよいし、sh_slice_typeがPである場合(Pスライスである場合)は、sh_biibc_enabled_flagを0と推定してもよい
 復号部201は、以下の式に従って、sh_biibc_enabled_flagの推定を行ってもよい。
 sh_biibc_enabled_flag=(sh_slice_type==B?):1 or 0
 ここで、上述のように、スライス単位で、双予測IBCの適用可不可を制御するフラグを復号或いは推定する理由は、以下の通りである。
 Iスライスは、IBCやIntraTMPのような第2フレーム内予測よりも第1フレーム内予測が有効な画像特性を持つ場合があるため、スライス単位で双予測IBCの適用可不可を制御することで、第2フレーム内予測が特に有効なスライスに対しては双予測IBCを適用可能として符号化効率を向上させられ、他方、第2フレーム内予測が有効ではないスライスに対しては双予測IBCを適用不可とし、後述する双予測IBCに必要な制御情報の符号量を削減できるため、結果として符号化効率の向上が期待できる。
 Bスライスで、sh_biibc_enabled_flagを復号せずに、sh_biibc_enabled_flagを1と推定する理由は、Bスライスでは、通常のフレーム間予測(動きベクトルを2本用いる双予測も含めて)適用可能であるため、双予測IBCを常時適用可能とすることで、通常のフレーム間予測との設計の共通化が図れ、また、符号化効率の向上が期待できる。
 Pスライスで、sh_biibc_enabled_flagを復号せずに、sh_biibc_enabled_flagを0と推定する理由は、Pスライスでは、通常のフレーム間予測で双予測が適用不可であるため、同様に、双予測IBCも適用不可とすることで、通常のフレーム間予測との設計の共通化が図れ、また、符号化効率の向上が期待できる。
 図18は、図17の変更例である。図17の図16に対する差分は、ステップS200Aである。
 具体的に、図18に示すように、ステップS200Aにおいて、復号部201は、sps_ibc_enabled_flagが1であり、且つ、sh_slice_typeがI又はBであるか(Iスライス又はBスライスであるか)を判定する。
 Yesであれば、本動作は、ステップS201に進み、Noであれば、本動作は、ステップS202に進む。
 ここで、ステップS200Aにおいて、sh_slice_typeがI(Iスライス)であることに加えて、sh_slice_typeがB(Bスライス)であることを追加することで、復号対象ブロックが含まれるスライスがBスライスである場合であっても、双予測IBCの適用可不可をスライス単位で制御することができるため、符号化効率の向上効果が期待できる。
 以降では、図19~図24を用いて、復号部201における復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)単位でのIBCに関連する各種フラグの復号制御方法及び各種フラグの定義(意味)について説明する。
 図19は、復号部201における復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)単位でのIBCの適用有無を制御するフラグであるpred_mode_ibc_flagの復号方法の一例を示す図である。
 ここで、復号部201は、pred_mode_ibc_flagが1の場合は、復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)単位でIBC を適用すると特定し、pred_mode_ibc_flagが0の場合は、IBCを適用しないと特定してもよい。
 復号部201は、pred_mode_ibc_flagが復号されていない場合は、pred_mode_ibc_flagを0と推定してもよい。
 或いは、復号部201は、復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)単位でのIBC の適用有無をpred_mode_ibc_flagが1である場合に、さらに復号対象ブロックがシングルツリーであるか否かに応じて判定してもよい。
 具体的に、復号部201は、シングルツリーの場合は、IBCを適用すると判定とし、デュアルツリーの場合は、IBCを適用しないと判定してもよい。
 変更例として、復号部201は、デュアルツリーであっても、輝度ブロックの場合は、IBCを適用すると判定してもよい。
 また、復号部201は、復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)がIBCであるか否かは、非特許文献1と同様に、復号対象ブロックの予測モードを表す内部パラメータであるCuPredModeを用いて制御してもよい。
 具体的には、復号部201は、CuPredModeがMODE_IBCである場合、復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)がIBCであると判定し、そうでない場合は、復号対象ブロック(復号ブロック、予測ブロック又は変換ブロック)がIBCではないと判定してもよい。
 以下、図19の動作について示す。
 図19に示すように、ステップS300において、復号部201は、所定条件が満たされているかどうかを判定する。
 Yesの場合、本動作は、ステップS301に進み、Noの場合は、本動作は、ステップS302に進む。
 ステップS301において、復号部201は、pred_mode_ibc_flagを復号し、本処理を終了する。
 ステップS302において、復号部201は、pred_mode_ibc_flagを復号せず、本処理を終了する。
 ここで、所定条件は、以下の条件のうち、少なくとも1の条件を含んでいてもよい。
1.復号対象ブロックの横幅又は高さが128画素ではないこと(復号対象ブロックの横幅又は高さが64画素以下であること)
※ここで、条件1の閾値となる画素数は、64画素の代わりに、128画素以下、256画素以下、32画以下素等の2のべき乗の画素数に変更してもよい。
2.復号対象ブロックの予測モードがフレーム間予測又は第1フレーム内予測ではないこと
3.復号対象ブロックがデュアルツリーの色差ブロックではないこと
 以降では、図20~図23を用いて、復号部201における図19の復号処理後のIBCのモード選択(上述したIBC BVP、IBCマージ、IBC BVP/マージ)の選択方法について説明する。
 図20は、復号部201におけるIBCのモード(上述したIBC BVP、IBCマージ、IBC BVP/マージ)の選択方法の一例を示す図である。
 図20に示すように、復号部201は、IBCのモード(上述したIBC BVP、IBCマージ、IBC BVP/マージ)から一意のモードを選択してもよい。具体的には、以下の通りである。
 図20に示すように、ステップS400において、復号部201は、general_merge_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS401に進み、Noの場合、本動作は、ステップS402に進む。
 ここで、general_merge_flagは、復号対象ブロック単位で、フレーム間予測又はIBCのマージの適用有無を制御(特定)するフラグである。
 general_merge_flagが1の場合は、フレーム間予測又はIBCのマージの適用が有効であることを示し、general_merge_flagが0の場合は、フレーム間予測又はIBCのマージの適用が無効であることを示す。
 ステップS401において、復号部201は、CuPredModeがMODE_IBCであるか否かを判定する。
 Yesである場合、本動作は、ステップS403に進み、Noの場合、本動作は、ステップS404に進む。
 ステップS403において、復号部201は、後述する(図21~図23を用いて説明する)IBCマージに関する復号処理に遷移する。
 ステップS404において、復号部201は、後述するIBCマージ以外に関する復号処理に遷移する。
 ステップS402において、復号部201は、CuPredModeがMODE_IBCであるか否かを判定する。
 Yesである場合、本動作は、ステップS405に進み、Noの場合、本動作は、ステップS406に進む。
 ステップS405において、復号部201は、後述する(図23を用いて説明する)IBC BVPに関する復号処理に遷移する。
 ステップS406において、復号部201は、後述するIBC BVP以外に関する復号処理に遷移する。
 以降では、図21を用いて、復号部201における復号対象ブロック単位で双予測のIBCマージが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBCマージの適用有無)を制御(特定)するためのフラグの復号方法について説明する。
 図21は、復号部201における復号対象ブロック単位で双予測のIBCマージが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBCマージの適用有無)を制御(特定)するためのフラグの復号方法の一例を示す図である。
 図21に示すように、復号部201は、復号対象ブロック単位で双予測のIBCマージが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBCマージの適用有無)を制御(特定)するためのフラグを復号してもよい。具体的には、以下の通りである。
 図21に示すように、ステップS500において、復号部201は、所定条件2が満たされているか否かを判定する。
 Yesである場合、本動作は、ステップS501に進み、Noの場合、本動作は、ステップS502に進む。
 ステップS501において、復号部201は、biibc_merge_flagを復号し、本処理を終了する。
 ステップS502において、復号部201は、biibc_merge_flagを復号せずに、本処理を終了する。
 ここで、biibc_merge_flagは、復号対象ブロック単位で双予測のIBCマージの適用有無を制御(特定)するフラグ(第4シンタックス)である。
 復号部201は、biibc_merge_flagが1である場合は、復号対象ブロックに双予測のIBCマージを適用し、biibc_merge_flagが0である場合は、復号対象ブロックに双予測のIBCマージを適用しないと特定する。
 復号部201は、biibc_merge_flagが復号されていない場合は、biibc_merge_flagを0と推定してもよい。
 また、所定条件2は、以下に示す条件のうち、少なくとも1つの条件を含んでいてもよい。
1.sps_ibc_enabled_flagが1であること
2.sh_biibc_enabled_flagが1であること(及び/又は、sps_biibc_enabled_flagが1であること)
3.general_merge_flagが1であること
4.CuPredModeがIBCであること
5.sh_slice_typeがI又はBであること
 変更例として、所定条件2に復号対象ブロックのブロックサイズ(縦及び横の画素数の積)に基づく条件を追加してもよい。
 例えば、復号対象ブロックのブロックサイズが16画素以上或いは32画素以上である(或いは、復号対象ブロックの横幅又は縦幅が8画素以上である)という条件を追加してもよい。
 これにより、比較的小サイズの復号対象ブロックに対する双予測のIBCマージの適用を抑制できるため、処理量の削減が期待できる。
 他方、復号対象ブロックのブロックサイズが32画素以下或いは16画素以下であるというような片予測のIBCマージの適用有無を判定する判定条件で使用される閾値よりも画素数が小さいという条件を追加してもよい。
 これにより、比較的大きいサイズの復号対象ブロックに対する双予測のIBCマージの適用を抑制できるため、処理量の削減が期待できる。
 以降では、図22を用いて、復号部201におけるIBCマージに関する制御情報の復号方法について説明する。
 IBCマージにおいて、復号部201は、上述のマージ候補リストから1つ以上のマージ候補を選択するために、マージ候補リスト内のマージ候補を特定するための制御情報であるIBCマージインデックス(第5シンタックス)を復号する。
 図22は、復号部201におけるIBCマージに関する制御情報の復号方法の一例を示す図である。
 図22に示すように、復号部201は、IBCマージに関する制御情報の復号を制御してもよい。具体的には、以下の通りである。
 図22に示すように、ステップS600において、復号部201は、biibc_merge_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS601に進み、Noの場合、本動作は、ステップS602に進む。
 ステップS601において、復号部201は、MaxNumIbcMergeCandが2より大きいかどうかを判定する。
 Yesである場合(MaxNumIbcMergeCandが2より大きい場合)、本動作は、ステップS603に進み、Noの場合(MaxNumIbcMergeCandが2以下である場合)、本動作は、ステップS607に進む。
 ステップS603において、復号部201は、ibc_merge_idx0を復号する。
 ここで、ibc_merge_idx0は、双予測のIBCマージにおける1つ目のIBCマージインデックス(第6シンタックス)である。
 ステップS604において、復号部201は、ibc_merge_idx0がMaxNumIbcMergeCand-2ではない(ibc_merge_idx0!=MaxNumIbcMergeCand-2)であるか否かを判定する。
 Yesである場合、本動作は、ステップS605に進み、Noの場合、本動作は、ステップS606に進む。
 ステップS605において、復号部201は、ibc_merge_idx1を復号し、本処理を終了する。
 ステップS606において、復号部201は、ibc_merge_idx1を復号せずに、本処理を終了する。
 ここで、ibc_merge_idx1は、双予測のIBCマージにおける2つ目のIBCマージインデックス(第7シンタックス)である。
 ここで、ステップS604でibc_merge_idx0がMaxNumIbcMergeCand-2ではないという条件を満たさない、すなわち、ibc_merge_idx0がMaxNumIbcMergeCand-2である場合、後述するが、ibc_merge_idx1はMaxNumIbcMergeCand-1であることが自明である。
 そのため、ステップS606において、復号部201は、ibc_merge_idx1を復号しないことで符号量の削減が期待できる。
 ステップS607において、復号部201は、ibc_merge_idx0及びibc_merge_idx1を復号せずに、本処理を終了する。
 ここで、MaxNumIbcMergeCandは、上述の通り、IBCマージにおけるマージ候補リストに登録可能なマージ候補数の最大値であり、ステップS601で、2以下であれば、双予測のIBCマージにおいて2つのマージインデックスは復号せずとも、使用するIBCマージ候補は自明である。
 そのため、ステップS607において、復号部201が、ibc_merge_idx0及びibc_merge_idx1を復号しないことで、符号量の削減が期待できる。
 ステップS602において、復号部201は、MaxNumIbcMergeCandが1より大きいか否かを判定する。
 Yesである場合、本動作は、ステップS608に進み、Noの場合、本動作は、ステップS609に進む。
 ステップS608において、復号部201は、ibc_merge_idxを復号し、本処理を終了する。
 ステップS609において、復号部201は、ibc_merge_idxを復号せずに、本処理を終了する。
 ここで、ステップS602においてMaxNumIbcMergeCandが1より大きくない、すなわち、MaxNumIbcMergeCandが1であれば、片予測のIBCマージにおいて選択されるマージージインデックスは復号せずとも、使用するIBCマージ候補は自明である。
 そのため、ステップS609において、復号部201が、ibc_merge_idxを復号しないことで、符号量の削減が期待できる。
 なお、上述では、双予測のIBCマージのマージインデックス(ibc_merge_idx0及びibc_merge_idx1)及び片予測のIBCマージのマージインデックス(ibc_merge_idx)を別々に説明したが、画像復号装置200においてibc_merge_idx0及びibc_merge_idxを共通化してもよい。
 すなわち、復号(符号化)するためのコンテキスト値の設計、Truncated binalization等の2値から多値への復号(多値から2値への符号化)方法を共通化してもよい。
 図23は、図22を用いて説明したIBCマージに関する制御情報の復号方法の変更例(ブロックベクトルの数だけ、図7に示すような異なるリストを構築)を示す図である。
 図23に示すように、復号部201は、IBCマージに関する制御情報を復号してもよい。具体的には、以下の通りである。
 図23に示すように、ステップS600において、復号部201は、biibc_merge_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS601Aに進み、Noの場合、本動作は、ステップS602に進む。
 ステップS601Aにおいて、復号部201は、MaxNumIbcMergeCandが1より大きいかどうかを判定する。
 Yesである場合、本動作は、ステップS608Aに進み、Noの場合(MaxNumIbcMergeCandが1以下の場合)、本動作は、ステップS609Aに進む。
 ステップS608Aにおいて、復号部201は、ibc_merge_idxを復号し、本処理を終了する。
 ステップS609Aにおいて、復号部201は、ibc_merge_idxを復号せずに、本処理を終了する。
 ステップS602、ステップS608及び ステップS609は、図22と同じである。
 以降では、図24を用いて、復号部201における復号対象ブロック単位でIBC BVP/マージが有効であるか否か(すなわち、復号対象ブロック単位でのIBC BVP/マージの適用有無)を制御(特定)するためのフラグの復号方法について説明する。
 図24は、復号部201における復号対象ブロック単位でIBC BVP/マージが有効であるか否か(すなわち、復号対象ブロック単位でのIBC BVP/マージの適用有無)を制御(特定)するためのフラグの復号方法の一例を示す図である。
 図24に示すように、復号部201は、復号対象ブロック単位でIBC BVP/マージが有効であるか否か(すなわち、復号対象ブロック単位でのIBC BVP/マージの適用有無)を制御(特定)するためのフラグを復号してもよい。具体的には、以下の通りである。
 図24に示すように、ステップS700において、復号部201は、所定条件3が満たされているか否かを判定する。
 Yesである場合、本動作は、ステップS701に進み、Noの場合、本動作は、ステップS702に進む。
 ステップS701において、復号部201は、ibc_bvpmerge_flagを復号し、本処理を終了する。
 ステップS702において、復号部201は、ibc_bvpmerge_flagを復号せずに、本処理を終了する。
 ここで、ibc_bvpmerge_flagは、復号対象ブロック単位でIBC BVP/マージが有効であるか否か(すなわち、復号対象ブロック単位でのIBC BVP/マージの適用有無)を制御(特定)するフラグ(第8シンタックス)である。
 復号部201は、ibc_bvpmerge_flagが1である場合は、復号対象ブロックIBC BVP/マージを適用し、ibc_bvpmerge_flagが0である場合は、復号対象ブロックにIBC BVP/マージを適用しないと特定する。
 復号部201は、ibc_bvpmerge_flagが復号されていない場合は、ibc_bvpmerge_flagを0と推定してもよい。
 また、所定条件3は、以下に示す条件のうち、少なくとも1つの条件を含んでいてもよい。
6.sps_ibc_enabled_flagが1であること
7.general_merge_flagが1であること
8.CuPredModeがIBCであること
9.sh_slice_typeがI又はBであること
 変更例として、所定条件3に復号対象ブロックのブロックサイズ(縦及び横の画素数の積)に基づく条件を追加してもよい。
 例えば、復号対象ブロックのブロックサイズが16画素以上或いは32画素以上である(或いは、復号対象ブロックの横幅又は縦幅が8画素以上である)という条件を追加してもよい。
 これにより、比較的小サイズの復号対象ブロックに対するIBC BVP/マージの適用を抑制できるため、処理量の削減が期待できる。
 他方、復号対象ブロックのブロックサイズが32画素以下或いは16画素以下であるというような片予測のIBCマージの適用有無を判定する判定条件で使用される閾値よりも画素数が小さいという条件を追加してもよい。
 これにより、比較的大サイズの復号対象ブロックに対するIBC BVP/マージの適用を抑制できるため、処理量の削減が期待できる。以降では、図25を用いて、復号部201におけるIBC BVP/マージに関する制御情報の復号方法について説明する。
 図25は、復号部201におけるIBC BVP/マージに関する制御情報の復号方法の一例を示す図である。
 図25に示すように、復号部201は、IBC BVP/マージに関する制御情報を復号してもよい。具体的には、以下の通りである。
 図25に示すように、ステップS800において、復号部201は、ibc_bvpmerge_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS801に進み、Noの場合、本動作は、本処理を終了する。
 ステップS801において、復号部201は、BVP及びBVDに関する制御情報を復号し、ステップS802に進む。
 ステップS802において、復号部201は、MaxNumIbcMergeCandが1より大きいかどうかを判定する。
 Yesである場合、本動作は、ステップS803に進み、Noの場合(MaxNumIbcMergeCandが1以下である場合)、本動作は、ステップS804に進む。
 
 ステップS803において、復号部201は、ibc_merge_idxを復号し、本処理を終了する。
 ステップS804において、復号部201は、ibc_merge_idxを復号せずに、本処理を終了する。
 ここで、MaxNumIbcMergeCandは、上述の通り、IBCマージにおけるマージ候補リストに登録可能なマージ候補数の最大値であり、ステップS801で1以下であれば、IBC BVP/マージにおいてマージインデックスは復号せずとも、使用するIBCマージ候補は自明である。
 そのため、ステップS804において、復号部201が、ibc_merge_idxを復号しないことで、符号量の削減が期待できる。
 以降では、図26を用いて、復号部201におけるIBCのBVを補正する上述のMBVDに関する制御情報の復号方法について説明する。
 図26は、復号部201におけるIBCのBVを補正する上述のMBVDに関する制御情報の復号方法の一例を示す図である。
 図26に示すように、復号部201は、IBCのBVを補正する上述のMBVDに関する制御情報を復号してもよい。具体的には、以下の通りである。
 図26に示すように、ステップS901において、復号部201は、biibc_merge_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS902に進み、Noの場合、本動作は、ステップS903に進む。
 ステップS902において、復号部201は、ibc_mbvd_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS904に進み、Noの場合、本動作は、ステップS905に進む。
 ここで、ibc_mbvd_flagは、復号対象ブロック単位で、MBVDの適用有無を制御するためのフラグである。
 復号部201は、ibc_mbvd_flagが1である場合、MBVDを適用すると特定し、ibc_mbvd_flagが0である場合、MBVDを適用しないと特定する。
 復号部201は、ibc_mbvd_flagが復号されていない場合は、ibc_mbvd_flagを0と推定してもよい。
 ステップS904において、復号部201は、bimbvd_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS906に進み、Noの場合、本動作は、ステップS907に進む。
 ここで、bimbvd_flagは、復号対象ブロック単位で、双予測のIBCマージにおける2組のマージ候補(BV)に対するMBVDの適用有無を制御するためのフラグである。
 復号部201は、bimbvd_flagが1である場合、2組のマージ候補(BV)に対してMBVDを適用すると特定し、bimbvd_flagが0である場合、2組のマージ候補(BV)に対してMBVDを適用しない(すなわち、双予測のIBCマージにおける1組のマージ候補(BV)のみにMBVDを適用する)と特定する。
 復号部201は、bimbvd_flagが復号されていない場合は、bimbvd_flagを0と推定してもよい。
 ステップS906において、復号部201は、mbvd_merge_cand_idx0及びmbvd_merge_cand_idx1を復号する。
 ここで、mbvd_merge_cand_idx0は、復号対象ブロック単位で、双予測のIBCマージにおける2組のマージ候補(BV)のうち、MBVDを適用する1組目のマージ候補(BV)をマージ候補リストから選択するためのインデックスである。
 復号部201は、mbvd_merge_cand_idx0が復号されていない場合、mbvd_merge_cand_idx0を0と推定してもよい。
 また、mbvd_merge_cand_idx1は、復号対象ブロック単位で、双予測のIBCマージにおける2組のマージ候補(BV)のうち、MBVDを適用する2組目のマージ候補(BV)をマージ候補リストから選択するためのインデックスである。
 復号部201は、mbvd_merge_cand_idx1が復号されていない場合、mbvd_merge_cand_idx1を0と推定してもよい。
 なお、復号部201は、mbvd_merge_cand_idx0とmbvd_merge_cand_idx1を復号する際に、予め、これらに大小関係を与えなくてもよいし、mbvd_merge_cand_idx0<mbvd_merge_cand_idx1となる大小関係を与えてもよい。
 大小関係を与えない場合は、復号部201は、mbvd_merge_cand_idx0を復号した後、mbvd_merge_cand_idx0に対応するマージ候補をマージ候補リスト内から除外した後、mbvd_merge_cand_idx1を復号することで、mbvd_merge_cand_idx0とmbvd_merge_cand_idx1が同一であっても異なるマージ候補を導出できるため、符号化効率の向上が期待できる。
復号対象ブロック単位で、双予測のIBCマージにおける2組のマージ候補(BV)のうち、MBVDを適用する1組目のマージ候補(BV)をマージ候補リストから選択するためのインデックスである。
 復号部201は、mbvd_merge_cand_idx0が復号されていない場合、mbvd_merge_cand_idx0を0と推定してもよい。
 ステップS908において、復号部201は、mbvd_idx0及びmbvd_idx1を復号し、本処理を終了する。
 ここで、mbvd_idx0とmbvd_idx1は、双予測IBCマージにおける2組のマージ候補のうち、それぞれ1組目と2組目のマージ候補(BV)に対する補正ベクトルを導出するためのインデックスである。
 具体的に、mbvd_idx0及びmbvd_idx1の値は、非特許文献2に開示されているように、補正ベクトルが取りうる離散的な参照位置に対応する。
 離散的な参照位置は、マージ候補のBVを原点とした補正ベクトルの方向及び距離から定義される。
 方向は、非特許文献1のように、上下左右(垂直と水平の合計4方向)で構成してもよいし、非特許文献2のように、上下左右に45度、135度、225度、315度の斜め4方向を加えた8方向で構成してもよい。
 また、距離については、シーケンス、ピクチャ、スライス或いは復号対象ブロック単位で、IBCの画素精度が整数精度に限定されている(すなわち、整数精度画素のみが選択可能な)場合は、非特許文献2のように、1画素、4画素、8画素、12画素、16画素、24画素、32画素、40画素、48画素、56画素、72画素、80画素、88画素、96画素、104画素、112画素、120画素、128画素のように構成してもよい。
 他の例として、シーケンス或いはピクチャ或いはスライス或いは復号対象ブロック単位で、IBCの画素精度が整数精度に限定されていない場合(すなわち小数精度画素または整数画素精度の双方が選択可能な)場合は、上述の整数画素の選択肢に加え、1/4画素、1/8画素を追加してもよい。
 ステップS909において、復号部201は、図22のステップS601に進み、本動作が終了すれば、本処理を終了する。
 ステップS907において、復号部201は、mbvd_merge_cand_idx0を復号する。
 ステップS910において、復号部201は、mbvd _idx0を復号する。
 ステップS911において、復号部201は、図22のステップS601に進み、本動作が終了すれば、本処理を終了する。
 ステップS905において、復号部201は、図22のステップS601に進み、本動作が終了すれば、本処理を終了する。
 ステップS903において、復号部201は、図22のステップS602に進み、本動作が終了すれば、本処理を終了する。
 以下、図27を参照して、ブロック単位で第2フレーム内予測を適用する方法の変更例について説明する。
 図27に示すように、ステップS1001において、復号部201は、復号対象ブロックがBVを保持するモードか否かを判断する。
 Yesである場合、本動作は、ステップS1002に進み、Noの場合、本動作は、終了する。
 ステップS1002において、復号部201は、第2フレーム内予測が用いるBVの本数を表す制御信号であるcu_ibc_flagを復号する。
 ここでは、BVの本数の最大数を2に設定することで、復号部201は、cu_ibc_flagが0の場合は、BVの本数を1本として復号し、cu_ibc_flagが1の場合は、BVの本数を2本として復号する。
 ステップS1003において、復号部201は、BVが1本であるか2本であるかを判断する。
 換言すると、ステップS1003において、復号部201は、cu_ibc_flagが0であるか否かについて判定する。
 BVが1本である場合(cu_ibc_flag==0)又はBVP候補リストがL0リスト及びとL1リストを利用する場合は、ステップS1004において、復号部201は、BVP候補リストの中からBVを指定する制御信号であるcu_ibc_idx0を復号する。
 BVが1本ではない場合(cu_ibc_flag!=0)で且つBVP候補リストがL0リストだけで構成する場合は、ステップS1004及びステップS1005において、復号部201は、BVP候補リストの中からBVを指定する制御信号であるcu_ibc_idx0及びcu_ibc_idx1を復号する。
 cu_ibc_idx1が相対座標で表現されている場合は、復号部201は、cu_ibc_idx0+cu_ibc_idx1を絶対座標としてのcu_ibc_idx1として復号する。
 図28は、BVに補正BVを適用する場合のフローチャートを示す。
 図28に示すように、ステップS1101において、復号部201は、復号対象ブロックがBVを保持するモードか否かを判断する。
 Yesである場合、本動作は、ステップS1102に進み、Noの場合、本動作は、終了する。
 ステップS1102において、復号部201は、第2フレーム内予測が用いるBVの本数を表す制御信号であるcu_ibc_flagを復号する。
 ここでは、BVの本数の最大数を2に設定することで、復号部201は、cu_ibc_flagが0の場合は、BVの本数を1本として復号し、cu_ibc_flagが1の場合は、BVの本数を2本として復号する。
 ステップS1103において、復号部201は、BVが1本であるか2本であるかを判断する。
 換言すると、ステップS1103において、復号部201は、cu_ibc_flagが0であるか否かについて判定する。
 BVが1本である場合(cu_ibc_flag==0)又はBVP候補リストがL0リスト及びとL1リストを利用する場合は、ステップS1104において、復号部201は、BVP候補リストの中からBVを指定する制御信号であるcu_ibc_idx0を復号する。
 ステップS1105において、復号部201は、補正BVを表す制御情報であるcu_ibc_dmv0を復号して、BVにcu_ibc_dmv0を加算する。
 BVが1本ではない場合(cu_ibc_flag!=0)で且つBVP候補リストがL0リストだけで構成する場合は、ステップS1106及びステップS1107において、復号部201は、BVP候補リストの中からBVを指定する制御信号であるcu_ibc_idx0及びcu_ibc_idx1を復号する。
 cu_ibc_idx1が相対座標で表現されている場合は、復号部201は、cu_ibc_idx0+cu_ibc_idx1を絶対座標としてのcu_ibc_idx1として復号する。
 ステップS1108及びステップS1109において、復号部201は、補正BVを表す制御情報であるcu_ibc_dmv0及びcu_ibc_dmv1を復号し、それぞれ対応するBVにcu_ibc_dmv0及びcu_ibc_dmv1を加算する。
 以降では、図29を用いて、復号部201における復号対象ブロック単位で双予測のIBC BVPが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBC BVPの適用有無)を制御(特定)するためのフラグの復号方法について説明する。
 図29は、復号部201における復号対象ブロック単位で双予測のIBC BVPが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBC BVPの適用有無)を制御(特定)するためのフラグの復号方法の一例を示すフローチャートである。
 図29に示すように、復号部201は、復号対象ブロック単位で双予測のIBC BVPが有効であるか否か(すなわち、復号対象ブロック単位での双予測のIBC BVPの適用有無)を制御(特定)するためのフラグを復号してもよい。具体的には、以下の通りである。
 図29に示すように、ステップS1200において、復号部201は、所定条件4が満たされているか否かを判定する。
 Yesである場合、本動作は、ステップS1201に進み、Noの場合、本動作は、ステップS1202に進む。
 ステップS1201において、復号部201は、biibc_bvp_flagを復号し、本処理を終了する。
 ステップS1202において、復号部201は、biibc_bvp_flagを復号せずに、本処理を終了する。
 ここで、biibc_bvp_flagは、復号対象ブロック単位で双予測のIBC BVPの適用有無を制御(特定)するフラグ(第9シンタックス)である。
 復号部201は、biibc_bvp_flagが1である場合は、復号対象ブロックに双予測のIBC BVPを適用し、biibc_bvp_flagが0である場合は、復号対象ブロックに双予測のIBC BVPを適用しないと特定する。
 復号部201は、biibc_bvp_flagが復号されていない場合は、biibc_bvp_flagを0と推定してもよい。
 また、所定条件4は、以下に示す条件のうち、少なくとも1つの条件を含んでいてもよい。
1.sps_ibc_enabled_flagが1であること
2.sh_biibc_enabled_flagが1であること(及び/又は、sps_biibc_enabled_flagが1であること)
3.general_merge_flagが0であること
4.CuPredModeがIBCであること
5.sh_slice_typeがI又はBであること
 変更例として、所定条件4に復号対象ブロックのブロックサイズ(縦及び横の画素数の積)に基づく条件を追加してもよい。
 例えば、復号対象ブロックのブロックサイズが16画素以上あるいは32画素以上である(あるいは復号対象ブロックの横幅或いは縦幅が8画素以上である)という条件を追加してもよい。
 これにより、比較的小サイズの復号対象ブロックに対する双予測のIBCマージの適用を抑制できるため、処理量の削減が期待できる。
 他方、復号対象ブロックのブロックサイズが32画素以下或いは16画素以下であるというような片予測のIBC BVPの適用有無を判定する判定条件で使用される閾値よりも画素数が小さいという条件を追加してもよい。
 これにより、比較的大サイズの復号対象ブロックに対する双予測のIBC BVPの適用を抑制できるため、処理量の削減が期待できる。
 以降では、図30を用いて、復号部201におけるIBC BVPに関する制御情報の復号方法について説明する。
 図30は、復号部201におけるIBC BVPに関する制御情報の復号方法の一例を示すフローチャートである。
 図30に示すように、復号部201は、IBC BVPに関する制御情報の復号を制御してもよい。具体的には、以下の通りである。
 図30に示すように、ステップS1300において、復号部201は、biibc_bvp_flagが1であるか否かを判定する。
 Yesである場合、本動作は、ステップS1301に進み、Noの場合、本動作は、ステップS1302に進む。
 ステップS1301において、復号部201は、双予測IBC BVPにおける2組のBVPとBVDのうち、1組目のBVPとBVDに関する制御情報を復号する。
 ステップS1303において、復号部201は、双予測IBC BVPにおける2組のBVPとBVDのうち、2組目のBVPとBVDに関する制御情報を復号して、本処理を終了する。
 ステップS1302において、復号部201は、IBC BVPにおける1組のBVPとBVDに関する制御情報を復号して、本処理を終了する。
(双予測IBCのバイナリゼーション)
 図31を用いて、復号部201における上述したIBCマージインデックスの2値化方法について説明する。
 図31は、復号部201における上述したIBCマージインデックスの2値化方法の一例を示す図である。
 図31に示すように、復号部201は、IBCマージインデックスを2値化してもよい。具体的には、以下の通りである。
 第1に、復号部201は、ibc_merge_idxについては、cMaxの値をMaxNumIbcMerge-1としてもよい。
 ここで、cMaxは、対象の制御情報が取りうる2値化前の多値の最大値である。
 第2に、復号部201は、ibc_merge_idx0については、cMaxの値をMaxNumIbcMerge-1としてもよい。
 第3に、復号部201は、ibc_merge_idx1については、biibc_merge_flagが1であるか否かに応じて、cMaxの値を変更してもよい。
 具体的に、復号部201は、biibc_merge_flagが1ではない場合は、cMaxの値をMaxNumIbcMerge-2としてもよい。
 一方、復号部201は、biibc_merge_flagが1である場合は、cMaxの値をMaxNumIbcMerge-ibc_merge_idx0-2としてもよい。
 すなわち、2つのBVを導出するために異なる2つのインデックス(ibc_merge_idx0及びibc_merge_idx1)を用いる場合、ibc_merge_idx1が取りうる値の範囲は、0(最小値)~BVP候補リストの最大値(上述の例では、MaxNumIbcMerge-2)からidx0の値を減算した値になる。
 以上のように、2値化方法を設計することで、復号部201は、上述した2つ目以降のインデックスについて、直前のインデックスを起点とした相対的なインデックスとして復号できる。
 上述の画像復号装置200は、コンピュータに各機能(各工程)を実行させるプログラムであって実現されていてもよい。
 なお、本実施形態によれば、例えば、動画像通信において総合的なサービス品質の向上を実現できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
200…画像復号装置
201…復号部
202…逆量子化部
203…逆変換部
204…第1フレーム内予測部
205…第2フレーム内予測部
205A…ブロックベクトル導出部(BV導出部)
205B…第2フレーム内予測画素生成部
206…フレーム間予測部
207…加算器
208…蓄積部
210…符号入力部
220…画像出力部

Claims (14)

  1.  画像復号装置であって、
     制御情報並びに量子化値を復号する復号部と、
     前記量子化値を逆量子化して変換係数とする逆量子化部と、
     前記変換係数を逆変換して予測残差とする逆変換部と、
     復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する第1フレーム内予測部と、
     前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する第2フレーム内予測部と、
     前記復号済み画素を蓄積する蓄積部と、
     前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成するフレーム間予測部と、
     前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る加算器とを具備することを特徴とする画像復号装置。
  2.  前記第2フレーム内予測部は、前記1つ以上のブロックベクトルにそれぞれ対応する補正ブロックベクトルを加算することで前記ブロックベクトルを補正することを特徴とする請求項1に記載の画像復号装置。
  3.  前記第2フレーム内予測部は、前記1つ以上のブロックベクトルに対応する単一の補正ブロックベクトルを加算することで前記ブロックベクトルを補正することを特徴とする請求項1に記載の画像復号装置。
  4.  前記第2フレーム内予測部は、制御情報に基づいて、前記補正ブロックベクトルの値を導出することを特徴とする請求項2又は3に記載の画像復号装置
  5.  前記第2フレーム内予測部は、前記補正ブロックベクトルの取り得る値に制約を設定することを特徴とする請求項2又は3に記載の画像復号装置。
  6.  前記第2フレーム内予測部は、前記1つ以上のブロックベクトルを原点に前記補正ブロックベクトルの取り得る方向及び距離に制約を設定することを特徴とする請求項2又は3に記載の画像復号装置。
  7.  前記第2フレーム内予測部は、前記補正ブロックベクトルの取り得る値の画素精度をシーケンス単位、ピクチャ単位、スライス単位、ブロック単位の任意の組み合わせ毎に変更することを特徴とする請求項2又は3に記載の画像復号装置。
  8.  前記第2フレーム内予測部は、前記補正ブロックベクトルの取り得る値の画素精度を前記復号対象ブロックが持つブロックベクトルの数に応じて変更することを特徴とする請求項2又は3に記載の画像復号装置。
  9.  前記第2フレーム内予測部は、前記復号対象ブロックが持つブロックベクトルが2つ以上の場合は、前記補正ブロックベクトルの取り得る値を整数画素精度のみに限定することを特徴とする請求項2又は3に記載の画像復号装置。
  10.  前記第2フレーム内予測部は、前記補正ブロックベクトルを前記画像復号装置側で探索することを特徴とする請求項2又は3に記載の画像復号装置。
  11.  前記第2フレーム内予測部は、前記1つ以上のブロックベクトルに対する補正ブロックベクトルの参照位置を、前記1つ以上のブロックベクトルを原点として予め設定した画素範囲内で、前記復号対象ブロックの近傍画素を用いて、
    類似度を評価して探索することを特徴とする請求項1に記載の画像復号装置。
  12.  前記第2フレーム内予測部は、前記1つ以上のブロックベクトルに対する補正ブロックベクトルの参照位置を、前記1つ以上のブロックベクトルを原点として予め設定した画素範囲内で、前記復号対象ブロックを用いて、類似度を評価して探索することを特徴とする請求項1に記載の画像復号装置。
  13.  画像復号方法であって、
     制御情報並びに量子化値を復号する工程と、
     前記量子化値を逆量子化して変換係数とする工程と、
     前記変換係数を逆変換して予測残差とする工程と、
     復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する工程と、
     前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する工程と、
     前記復号済み画素を蓄積する工程と、
     前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成する工程と、
     前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る工程とを有することを特徴とする画像復号方法。
  14.  コンピュータを、画像復号装置として機能させるプログラムであって、
     前記画像復号装置は、
      制御情報並びに量子化値を復号する復号部と、
      前記量子化値を逆量子化して変換係数とする逆量子化部と、
      前記変換係数を逆変換して予測残差とする逆変換部と、
      復号済み画素と前記制御情報とに基づいて、第1予測画素を生成する第1フレーム内予測部と、
      前記復号済み画素と前記制御情報とに基づいて、復号対象ブロックに対する補正された1つ以上のブロックベクトルから、第2予測画素を生成する第2フレーム内予測部と、
      前記復号済み画素を蓄積する蓄積部と、
      前記蓄積された復号済み画素と前記制御情報とに基づいて、第3予測画素を生成するフレーム間予測部と、
      前記予測残差と前記第1乃至第3予測画素とを加算して前記復号済み画素を得る加算器とを具備することを特徴とするプログラム。
PCT/JP2024/008384 2023-04-13 2024-03-05 画像復号装置、画像復号方法及びプログラム Ceased WO2024214435A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202480025440.4A CN120937368A (zh) 2023-04-13 2024-03-05 图像解码装置、图像解码方法以及程序

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2023-065992 2023-04-13
JP2023065992A JP2024152064A (ja) 2023-04-13 2023-04-13 画像復号装置、画像復号方法及びプログラム

Publications (1)

Publication Number Publication Date
WO2024214435A1 true WO2024214435A1 (ja) 2024-10-17

Family

ID=93059041

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2024/008384 Ceased WO2024214435A1 (ja) 2023-04-13 2024-03-05 画像復号装置、画像復号方法及びプログラム

Country Status (3)

Country Link
JP (1) JP2024152064A (ja)
CN (1) CN120937368A (ja)
WO (1) WO2024214435A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022502972A (ja) * 2018-10-12 2022-01-11 ウィルス インスティテュート オブ スタンダーズ アンド テクノロジー インコーポレイティド 多重仮定予測を用いるビデオ信号処理方法及び装置
WO2023034782A1 (en) * 2021-09-01 2023-03-09 Tencent America LLC Template matching on ibc merge candidates

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022502972A (ja) * 2018-10-12 2022-01-11 ウィルス インスティテュート オブ スタンダーズ アンド テクノロジー インコーポレイティド 多重仮定予測を用いるビデオ信号処理方法及び装置
WO2023034782A1 (en) * 2021-09-01 2023-03-09 Tencent America LLC Template matching on ibc merge candidates

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WANG YINGBIN; XU XIAOZHONG; LIU SHAN: "Intra Block Copy in Avs3 Video Coding Standard", 2020 IEEE INTERNATIONAL CONFERENCE ON MULTIMEDIA & EXPO WORKSHOPS (ICMEW), IEEE, 6 July 2020 (2020-07-06), pages 1 - 6, XP033808386, DOI: 10.1109/ICMEW46912.2020.9105966 *
Y. WANG (BYTEDANCE), K. ZHANG (BYTEDANCE), L. ZHANG (BYTEDANCE), N. ZHANG (BYTEDANCE): "Non-EE2: Extensions of intra block copy", 28. JVET MEETING; 20221021 - 20221028; MAINZ; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ), 15 October 2022 (2022-10-15), pages 1 - 3, XP030304797 *

Also Published As

Publication number Publication date
JP2024152064A (ja) 2024-10-25
CN120937368A (zh) 2025-11-11

Similar Documents

Publication Publication Date Title
US12323582B2 (en) Intra-picture prediction using non-adjacent reference lines of sample values
US11930210B2 (en) Intra-frame prediction method and device
US12368847B2 (en) Method and device for filtering
US11503286B2 (en) Method and device for filtering
US20210112268A1 (en) Video signal processing method and apparatus using adaptive motion vector resolution
US11729410B2 (en) Image decoding method/apparatus, image encoding method/apparatus, and recording medium storing bitstream
CN113709460B (zh) 一种编解码方法、装置及其设备
JP7527261B2 (ja) 画像復号装置、画像復号方法及びプログラム
CN113873249A (zh) 一种编解码方法、装置及其设备
CN117917076A (zh) 图像解码装置、图像解码方法及程序
WO2024214438A1 (ja) 画像復号装置、画像復号方法及びプログラム
CN112075078A (zh) 合成式预测及限制性合并
WO2024214436A1 (ja) 画像復号装置、画像復号方法及びプログラム
WO2024214433A1 (ja) 画像復号装置、画像復号方法及びプログラム
WO2024214434A1 (ja) 画像復号装置、画像復号方法及びプログラム
WO2024214432A1 (ja) 画像復号装置、画像復号方法及びプログラム
WO2024214437A1 (ja) 画像復号装置、画像復号方法及びプログラム
JP2024152064A (ja) 画像復号装置、画像復号方法及びプログラム
WO2024175831A1 (en) A method, an apparatus and a computer program product for video encoding and decoding
JP2024058004A (ja) 画像復号装置、画像復号方法及びプログラム
HK40064022B (en) Coding and decoding method, device and equipment
CN121176005A (zh) 基于非线性建模的模板匹配预测
KR20190124333A (ko) 화면 내 예측 방법 및 이러한 방법을 사용하는 장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 24788465

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 24788465

Country of ref document: EP

Kind code of ref document: A1