[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

WO2024116691A1 - 動画像復号装置および動画像符号化装置 - Google Patents

動画像復号装置および動画像符号化装置 Download PDF

Info

Publication number
WO2024116691A1
WO2024116691A1 PCT/JP2023/039040 JP2023039040W WO2024116691A1 WO 2024116691 A1 WO2024116691 A1 WO 2024116691A1 JP 2023039040 W JP2023039040 W JP 2023039040W WO 2024116691 A1 WO2024116691 A1 WO 2024116691A1
Authority
WO
WIPO (PCT)
Prior art keywords
mode
template
timd
intra
prediction
Prior art date
Application number
PCT/JP2023/039040
Other languages
English (en)
French (fr)
Inventor
将伸 八杉
知宏 猪飼
友子 青野
Original Assignee
シャープ株式会社
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
Priority claimed from JP2022189022A external-priority patent/JP2024077148A/ja
Priority claimed from JP2022208682A external-priority patent/JP2024092612A/ja
Priority claimed from JP2023038230A external-priority patent/JP2024129196A/ja
Application filed by シャープ株式会社 filed Critical シャープ株式会社
Publication of WO2024116691A1 publication Critical patent/WO2024116691A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Definitions

  • Embodiments of the present invention relate to a video decoding device and a video encoding device.
  • a video encoding device that generates encoded data by encoding video
  • a video decoding device is used that generates a decoded image by decoding the encoded data
  • video coding methods include H.264/AVC, HEVC (High-Efficiency Video Coding), and VVC (Versatile Video Coding).
  • the images (pictures) that make up a video are managed in a hierarchical structure consisting of slices obtained by dividing the images, coding tree units (CTUs) obtained by dividing the slices, coding units (sometimes called coding units: CUs) obtained by dividing the coding tree units, and transform units (TUs) obtained by dividing the coding units, and are coded/decoded for each CU.
  • CTUs coding tree units
  • coding units sometimes called coding units: CUs
  • transform units TUs
  • a predicted image is usually generated based on a locally decoded image obtained by encoding/decoding an input image, and the prediction error (sometimes called a "difference image” or “residual image") obtained by subtracting the predicted image from the input image (original image) is coded.
  • the prediction error sometimes called a "difference image” or “residual image”
  • Methods for generating predicted images include inter-frame prediction (inter prediction) and intra-frame prediction (intra prediction).
  • Non-Patent Document 1 discloses template-based intra mode derivation (TIMD) prediction, in which a decoder generates a predicted image by deriving an intra direction prediction mode number using pixels in adjacent regions.
  • TMD template-based intra mode derivation
  • an image of a template reference region near the target block is used to generate a template predicted image from an adjacent image (template image) of the target block for an intra prediction mode candidate. Then, the intra prediction mode candidate that reduces the cost of the template image and template predicted image is selected as the intra prediction mode for the target block.
  • template predicted images and cost calculations for multiple intra prediction mode candidates which poses an issue of extremely large computational complexity.
  • the present invention aims to reduce the complexity of template-based intra-mode derivation.
  • the video decoding device of this embodiment is characterized in that it uses images of the template region and template reference region to generate a template predicted image for a template image and a predetermined intra prediction mode candidate, and in TIMD prediction that selects an intra prediction mode for a target block based on the template predicted image and a cost derived from the template image, it determines the positions of the template region and the template reference region by referring to a template-based intra mode derivation flag.
  • It is also characterized in that it divides the predetermined intra prediction mode candidates into a plurality of groups based on the prediction direction, generates a template predicted image for each intra prediction mode candidate selected from each group, evaluates the cost, and in the group to which the intra prediction mode candidate with the lowest cost belongs, it derives costs and selects candidates other than the selected intra prediction mode candidate.
  • the complexity of template-based intra-mode derivation can be reduced.
  • FIG. 1 is a schematic diagram showing a configuration of an image transmission system according to an embodiment of the present invention.
  • FIG. 2 is a diagram showing a hierarchical structure of data in an encoded stream.
  • FIG. 13 is a schematic diagram showing types of intra-prediction modes (mode numbers).
  • FIG. 1 is a schematic diagram showing a configuration of a video decoding device.
  • FIG. 13 is a diagram illustrating a configuration of an intra-prediction image generating unit.
  • 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • FIG. 2 is a diagram illustrating details of a TIMD prediction unit. 1 is an example of syntax for TIMD prediction.
  • FIG. 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • FIG. 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • FIG. FIG. 1 is a block diagram showing a configuration of a video encoding device. 13 is an example of the syntax for the ISP mode.
  • 11 is a diagram showing the relationship between a target block, a template region, and a template reference region.
  • FIG. 1 is a diagram showing an example of a group of TIMDs.
  • FIG. 1 is a schematic diagram showing the configuration of an image transmission system 1 according to this embodiment.
  • the image transmission system 1 is a system that transmits an encoded stream obtained by encoding an image to be encoded, and decodes the transmitted encoded stream to display an image.
  • the image transmission system 1 is composed of a video encoding device (image encoding device) 11, a network 21, a video decoding device (image decoding device) 31, and a video display device (image display device) 41.
  • An image T is input to the video encoding device 11.
  • the network 21 transmits the encoded stream Te generated by the video encoding device 11 to the video decoding device 31.
  • the network 21 is the Internet, a wide area network (WAN), a local area network (LAN), or a combination of these.
  • the network 21 is not necessarily limited to a bidirectional communication network, and may be a unidirectional communication network that transmits broadcast waves such as terrestrial digital broadcasting and satellite broadcasting.
  • the network 21 may also be replaced by a storage medium on which the encoded stream Te is recorded, such as a DVD (Digital Versatile Disc: registered trademark) or a BD (Blu-ray Disc: registered trademark).
  • the video decoding device 31 decodes each of the encoded streams Te transmitted by the network 21 and generates one or more decoded images Td.
  • the video display device 41 displays all or part of one or more decoded images Td generated by the video decoding device 31.
  • the video display device 41 is equipped with a display device such as a liquid crystal display or an organic EL (Electro-luminescence) display. Display forms include stationary, mobile, HMD, etc. Furthermore, when the video decoding device 31 has high processing power, it displays high quality images, and when it has only lower processing power, it displays images that do not require high processing power or display power.
  • x?y:z is a ternary operator that takes y if x is true (non-zero) and z if x is false (0).
  • BitDepthY is the luminance bit depth.
  • abs(a) is a function that returns the absolute value of a.
  • Int(a) is a function that returns the integer value of a.
  • Floor(a) is a function that returns the largest integer less than or equal to a.
  • Log2(a) is a function that returns the logarithm to the base 2.
  • Ceil(a) is a function that returns the smallest integer greater than or equal to a.
  • a/d represents the division of a by d (rounded down to nearest whole number).
  • Min(a,b) is a function that returns the smaller of a and b.
  • FIG. 2 is a diagram showing the hierarchical structure of data in an encoded stream Te.
  • the encoded stream Te illustratively includes a sequence and a number of pictures that make up the sequence.
  • FIG. 2 shows a coded video sequence that defines a sequence SEQ, a coded picture that specifies a picture PICT, a coded slice that specifies a slice S, coded slice data that specifies slice data, a coding tree unit included in the coded slice data, and a coding unit included in the coding tree unit.
  • the coded video sequence defines a set of data to be referred to by the video decoding device 31 in order to decode the sequence SEQ to be processed.
  • the sequence SEQ includes a video parameter set VPS (Video Parameter Set), a sequence parameter set SPS (Sequence Parameter Set), a picture parameter set PPS (Picture Parameter Set), a picture PICT, and supplemental enhancement information SEI (Supplemental Enhancement Information).
  • the video parameter set VPS specifies a set of coding parameters that are common to multiple videos, as well as a set of coding parameters related to multiple layers and individual layers included in the video.
  • the sequence parameter set SPS specifies a set of coding parameters that the video decoding device 31 references in order to decode the target sequence. For example, the width and height of a picture are specified. Note that there may be multiple SPSs. In that case, one of the multiple SPSs is selected from the PPS.
  • the picture parameter set PPS specifies a set of coding parameters that the video decoding device 31 references in order to decode each picture in the target sequence. For example, it includes the reference value of the quantization width used in decoding the picture (pic_init_qp_minus26) and a flag indicating the application of weighted prediction (weighted_pred_flag). Note that there may be multiple PPSs. In that case, one of the multiple PPSs is selected for each picture in the target sequence.
  • a coded picture defines a set of data to be referenced by the video decoding device 31 in order to decode a picture PICT to be processed. As shown in the coded picture of FIG. 2, the picture PICT includes slices 0 to NS-1 (NS is the total number of slices included in the picture PICT).
  • An encoded slice defines a set of data to be referenced by the video decoding device 31 in order to decode a slice S to be processed. As shown in the encoded slice of Fig. 2, a slice includes a slice header and slice data.
  • the slice header includes a set of coding parameters that the video decoding device 31 refers to in order to determine the decoding method for the target slice.
  • Slice type designation information (slice_type) that specifies the slice type is an example of a coding parameter included in the slice header.
  • Slice types that can be specified by the slice type specification information include (1) an I slice that uses only intra prediction when encoding, (2) a P slice that uses unidirectional prediction or intra prediction when encoding, and (3) a B slice that uses unidirectional prediction, bidirectional prediction, or intra prediction when encoding.
  • inter prediction is not limited to unidirectional or bidirectional prediction, and a predicted image may be generated using more reference pictures.
  • P or B slice it refers to a slice that includes a block for which inter prediction can be used.
  • the slice header may include a reference to the picture parameter set PPS (pic_parameter_set_id).
  • the coded slice data specifies a set of data to be referenced by the video decoding device 31 in order to decode the slice data to be processed.
  • the slice data includes a CTU, as shown in the coded slice header in Fig. 2.
  • a CTU is a block of a fixed size (e.g., 64x64) that constitutes a slice, and is also called a Largest Coding Unit (LCU).
  • LCU Largest Coding Unit
  • coding tree unit In the coding tree unit in Fig. 2, a set of data that the video decoding device 31 refers to in order to decode the CTU to be processed is specified.
  • the CTU is divided into coding units CU, which are basic units of the coding process, by recursive quad tree division (QT (Quad Tree) division), binary tree division (BT (Binary Tree) division), or ternary tree division (TT (Ternary Tree) division).
  • BT division and TT division are collectively called multi tree division (MT (Multi Tree) division).
  • a node of a tree structure obtained by recursive quad tree division is called a coding node.
  • the intermediate nodes of the quad tree, binary tree, and ternary tree are coding nodes, and the CTU itself is specified as the top coding node.
  • the CU is composed of a CU header CUH, prediction parameters, transformation parameters, quantization transformation coefficients, etc.
  • the CU header defines a prediction mode, etc.
  • the prediction process may be performed on a CU basis, or on a sub-CU basis, which is a further division of a CU. If the size of the CU and sub-CU are equal, there is one sub-CU in the CU. If the size of the CU is larger than the size of the sub-CU, the CU is divided into sub-CUs. For example, if the CU is 8x8 and the sub-CU is 4x4, the CU is divided into 2 parts horizontally and 2 parts vertically, into 4 sub-CUs.
  • Intra prediction is a prediction within the same picture
  • inter prediction refers to a prediction process performed between different pictures (for example, between display times or between layer images).
  • the transform and quantization process is performed on a CU basis, but the quantized transform coefficients may be entropy coded on a subblock basis, such as 4x4.
  • the predicted image is derived from prediction parameters associated with the block, which include intra-prediction and inter-prediction parameters.
  • the intra prediction parameters consist of a luminance prediction mode IntraPredModeY and a chrominance prediction mode IntraPredModeC.
  • Figure 3 is a schematic diagram showing the types of intra prediction modes (mode numbers). As shown in the figure, there are, for example, 67 types of intra prediction modes (0 to 66). These include planar prediction (0), DC prediction (1), and angular prediction (2 to 66).
  • linear model (LM: Linear Model) prediction such as cross component linear model (CCLM: Cross Component Linear Model) prediction and multi-mode linear model (MMLM: Multi Mode Linear Model) prediction may also be used.
  • LM Linear Model
  • CCLM Cross Component Linear Model
  • MMLM Multi Mode Linear Model
  • an LM mode may be added for chrominance.
  • the video decoding device 31 includes an entropy decoding unit 301, a parameter decoding unit (prediction image decoding device) 302, a loop filter 305, a reference picture memory 306, a prediction parameter memory 307, a prediction image generating unit (prediction image generating device) 308, an inverse quantization and inverse transform unit 311, an addition unit 312, and a prediction parameter derivation unit 320.
  • the video decoding device 31 may also be configured not to include the loop filter 305.
  • the parameter decoding unit 302 further includes a header decoding unit 3020, a CT information decoding unit 3021, and a CU decoding unit 3022 (prediction mode decoding unit), and the CU decoding unit 3022 further includes a TU decoding unit 3024. These may be collectively referred to as a decoding module.
  • the header decoding unit 3020 decodes parameter set information such as VPS, SPS, PPS, and APS, and slice headers (slice information) from the encoded data.
  • the CT information decoding unit 3021 decodes the CT from the encoded data.
  • the CU decoding unit 3022 decodes the CU from the encoded data.
  • the TU decoding unit 3024 decodes QP update information (quantization correction value) and quantization prediction error (residual_coding) from the encoded data when a prediction error is included in the TU.
  • the predicted image generating unit 308 includes an inter predicted image generating unit 309 and an intra predicted image generating unit 310.
  • the prediction parameter derivation unit 320 includes an inter prediction parameter derivation unit 303 and an intra prediction parameter derivation unit 304.
  • CTU and CU are used as processing units, but this is not limiting and processing may be performed in sub-CU units.
  • CTU and CU may be interpreted as blocks and sub-CU as sub-blocks, and processing may be performed in block or sub-block units.
  • the entropy decoding unit 301 performs entropy decoding on the externally input encoded stream Te to decode individual codes (syntax elements).
  • syntax elements There are two types of entropy coding: CABAC (Context Adaptive Binary Arithmetic Coding), which performs variable-length coding of syntax elements using a context (probability model) adaptively selected according to the type of syntax element and the surrounding circumstances, and a method of variable-length coding of syntax elements using a predetermined table or formula.
  • CABAC Context Adaptive Binary Arithmetic Coding
  • the entropy decoding unit 301 initializes all CABAC states at the beginning of a segment (tile, CTU row, slice).
  • the entropy decoding unit 301 converts syntax elements to a binary string (Bin String) and decodes each bit of the Bin String.
  • Bin String binary string
  • a context index ctxInc is derived for each bit of the syntax element, the bit is decoded using the context, and the CABAC state of the used context is updated. Bits without context are decoded with equal probability (EP, bypass), and ctxInc derivation and CABAC state are omitted.
  • the entropy decoding unit 301 outputs the decoded code to the parameter decoding unit 302.
  • the control of which code to decode is performed based on instructions from the parameter decoding unit 302.
  • the intra prediction parameter derivation unit 304 decodes intra prediction parameters, for example, an intra prediction mode IntraPredMode, with reference to prediction parameters stored in the prediction parameter memory 307, based on the code input from the entropy decoding unit 301.
  • the intra prediction parameter derivation unit 304 outputs the decoded intra prediction parameters to the predicted image generation unit 308, and also stores them in the prediction parameter memory 307.
  • the intra prediction parameter derivation unit 304 may derive different intra prediction modes for luminance and chrominance.
  • the loop filter 305 is a filter provided in the encoding loop that removes block distortion and ringing distortion and improves image quality.
  • the loop filter 305 applies filters such as a deblocking filter, sample adaptive offset (SAO), and adaptive loop filter (ALF) to the decoded image of the CU generated by the adder 312.
  • filters such as a deblocking filter, sample adaptive offset (SAO), and adaptive loop filter (ALF) to the decoded image of the CU generated by the adder 312.
  • the reference picture memory 306 stores the decoded image of the CU generated by the adder 312 in a predetermined location for each target picture and target CU.
  • the prediction parameter memory 307 stores prediction parameters at a predetermined location for each CTU or CU to be decoded. Specifically, the prediction parameter memory 307 stores the parameters decoded by the parameter decoding unit 302 and the prediction mode predMode separated by the entropy decoding unit 301.
  • the prediction mode predMode, prediction parameters, etc. are input to the prediction image generation unit 308.
  • the prediction image generation unit 308 also reads a reference picture from the reference picture memory 306.
  • the prediction image generation unit 308 generates a prediction image of a block or sub-block using the prediction parameters and the read reference picture (reference picture block) in the prediction mode indicated by the prediction mode predMode.
  • a reference picture block is a set of pixels on the reference picture (usually rectangular, so called a block), and is the area referenced to generate a prediction image.
  • the intra prediction image generation unit 310 performs intra prediction using the intra prediction parameters input from the intra prediction parameter derivation unit 304 and reference pixels read from the reference picture memory 306 .
  • the intra-prediction image generation unit 310 reads adjacent blocks in a predetermined range from the target block on the target picture from the reference picture memory 306.
  • the predetermined range refers to the adjacent blocks to the left, upper left, upper, and upper right of the target block, and the area to be referenced differs depending on the intra-prediction mode.
  • the intra-prediction image generation unit 310 generates a prediction image of the target block by referring to the read decoded pixel values and the prediction mode indicated by IntraPredMode.
  • the intra-prediction image generation unit 310 outputs the generated prediction image of the block to the addition unit 312.
  • reference region R a decoded surrounding area adjacent (close) to the block to be predicted is set as reference region R. Then, a predicted image is generated by extrapolating pixels in reference region R in a specific direction.
  • reference region R may be set as an L-shaped region that includes the left and top of the block to be predicted (or further, the top left, top right, and bottom left).
  • the intra-prediction image generation unit 310 includes a reference sample filter unit 3103 (second reference image setting unit), a prediction unit 3104, and a prediction image correction unit 3105 (prediction image correction unit, filter switching unit, and weighting coefficient changing unit).
  • the prediction unit 3104 generates a prediction image (pre-correction prediction image) of the block to be predicted based on each reference pixel (reference image) in the reference region R, a filtered reference image generated by applying a reference pixel filter (first filter), and the intra prediction mode, and outputs the prediction image to the prediction image correction unit 3105.
  • the prediction image correction unit 3105 corrects the prediction image according to the intra prediction mode, and generates and outputs a prediction image (corrected prediction image).
  • the following describes each component of the intra-prediction image generation unit 310.
  • the reference sample filter unit 3103 derives reference samples recSamples[x][y] at each position (x, y) on the reference region R by referring to the reference image.
  • the reference sample filter unit 3103 applies a reference pixel filter (first filter) to the reference samples recSamples[x][y] according to the intra prediction mode to update the reference samples recSamples[x][y] at each position (x, y) on the reference region R (derives filtered reference images recSamples[x][y]).
  • a low-pass filter is applied to the position (x, y) and the reference images therearound to derive a filtered reference image.
  • a low-pass filter may be applied to some intra prediction modes.
  • the filter applied to the reference image on the reference region R in the reference sample filter unit 3103 is referred to as the "reference pixel filter (first filter),” whereas the filter that corrects the predicted image in the predicted image correction unit 3105 described below is referred to as the "position-dependent filter (second filter).”
  • the prediction unit 3104 generates a prediction image of a prediction target block based on an intra prediction mode, a reference image, and a filtered reference pixel value, and outputs the prediction image to a prediction image correction unit 3105.
  • the prediction unit 3104 includes a planar prediction unit 31041, a DC prediction unit 31042, an angular prediction unit 31043, an LM prediction unit 31044, a matrix-based intra prediction unit 31045, and a template-based intra mode derivation (TIMD) prediction unit 31047.
  • the prediction unit 3104 selects a specific prediction unit according to the intra prediction mode, and inputs the reference image and the filtered reference image.
  • the relationship between the intra prediction mode and the corresponding prediction unit is as follows.
  • planar prediction unit 31041 generates a predicted image by linearly adding the reference samples recSamples[x][y] according to the distance between the pixel position to be predicted and the reference pixel position, and outputs the predicted image to the predicted image correction unit 3105.
  • the DC prediction unit 31042 derives a DC predicted value equivalent to the average value of the reference samples recSamples[x][y], and outputs a predicted image predSamples[x][y] whose pixel values are the DC predicted values.
  • refIdx may be set by decoding the syntax of the encoded data.
  • refIdx may be fixed at 0.
  • refIdx may be set to 2 or 4.
  • the LM prediction unit 31044 predicts pixel values of chrominance based on pixel values of luminance. Specifically, this is a method of generating a predicted image of a chrominance image (Cb, Cr) using a linear model based on a decoded luminance image.
  • LM prediction is a prediction method that uses a linear model to predict chrominance from luminance for one block.
  • the MIP unit 31045 generates a predicted image predSamples[x][y] by performing a product-sum operation on the reference samples recSamples[x][y] derived from the adjacent region and a weighting matrix, and outputs the generated image to the predicted image correction unit 3105.
  • the predicted image correction unit 3105 corrects the predicted image output from the prediction unit 3104 according to the intra prediction mode. Specifically, the predicted image correction unit 3105 derives a position-dependent weighting coefficient for each pixel of the predicted image according to the reference region R and the position of the target predicted pixel. Then, the predicted image correction unit 3105 derives a corrected predicted image (corrected predicted image) Pred[][] by performing weighted addition (weighted averaging) of the reference samples recSamples[][] and the predicted images predSamples[x][y]. Note that in some intra prediction modes, the predicted image correction unit 3105 may set the predicted image predSamples[x][y] to Pred without correcting it.
  • the intra prediction parameter derivation unit 304 derives a Most Probable Mode (MPM) list candModeList as follows: The upper left coordinates of the target block are (x0, y0), the block width is cbWidth, and the block height is cbHeight.
  • MPM Most Probable Mode
  • the intra prediction parameter derivation unit 304 may derive the intraPredMode of block A adjacent to the left of the target block as intraPredModeA, and the intraPredMode of block B adjacent above as intraPredModeB, as follows.
  • Block A (hereinafter A) is a block having coordinates (x0-1, y0+cbHeight-1).
  • Block B (hereinafter B) is a block having coordinates (x0+cbWidth-1, y0-1).
  • candModeList[] may be derived from candModePredModeA and candModePredModeB as follows:
  • candModeList[0] candIntraPredModeA
  • candModeList[1] candIntraPredModeB
  • minAB Min(candIntraPredModeA, candIntraPredModeB)
  • candModeList[2] 2 + ((minAB + 61) % 64)
  • candModeList[3] 2 + ((minAB - 1) % 64)
  • candModeList[4] 2 + ((minAB + 60) % 64
  • TIMD prediction is a prediction method that generates a predicted image using an intra prediction mode that is not explicitly signaled.
  • the TIMD prediction unit 31047 derives an intra prediction mode suitable for predicting an image (template image tempSamples) of a template region RT that is an adjacent region of the target block.
  • a predicted image tpredSamples (template predicted image) of the template region RT for multiple intra prediction mode candidates is generated using an image of a reference region (template reference region) RTRS near the template region.
  • the intra prediction mode candidate used to derive tpredSamples that minimizes the cost (e.g., the sum of absolute differences) between tempSamples and tpredSamples is selected as the intra prediction mode of the TIMD of the target block.
  • the TIMD prediction unit 31047 generates a predicted image predSamples using the intra prediction mode of this TIMD.
  • FIG. 8(a) shows an example of the syntax of the coded data related to TIMD.
  • the parameter decoding unit 302 decodes a flag timd_flag indicating whether or not TIMD is used for each block from the coded data.
  • the block may be a CU, a TU, a subblock, or the like.
  • timd_flag of the target block is 0, the parameter decoding unit 302 decodes a syntax element intra_luma_mpm_flag related to the intra prediction mode, and when intra_luma_mpm_flag is 0, the parameter decoding unit 302 further decodes intra_luma_mpm_reminder.
  • intra_luma_mpm_flag is a flag indicating whether or not an intra prediction mode is derived from the intra prediction candidate list candModeList[].
  • intra_luma_mpm_idx is an index specifying an intra prediction candidate when candModeList[] is used.
  • intra_luma_mpm_reminder is an index for selecting an intra prediction candidate not included in candModeList[].
  • the parameter decoding unit 302 does not need to decode syntax elements related to the intra prediction mode (intra_luma_mpm_flag, intra_luma_mpm_idx, intra_luma_mpm_reminder) from the encoded data.
  • the parameter decoding unit 302 further decodes the timd_ref_mode of the current block.
  • the timd_ref_mode indicates the position of the template reference region used to derive the intra prediction mode in TIMD prediction.
  • the meaning of the timd_ref_mode may be as follows:
  • Figure 6 shows the template region RT and template reference region (template reference sample region) RTRS referenced in TIMD prediction.
  • the template region is the region corresponding to the template image.
  • the template reference region RTRS is the region referenced when generating a template predicted image, which is a predicted image of the template image.
  • the TIMD prediction unit 31047 When timd_flag is 1, the TIMD prediction unit 31047 generates a template prediction image for an intra prediction mode candidate using an image of the template reference region RTRS near the target block, and selects a suitable intra prediction mode for the target block.
  • the entropy decoding unit 301 may parse, for example, the syntax element timd_ref_mode shown in the syntax table of FIG. 8 as follows.
  • timd_ref_mode is a syntax element that selects the template region of the TIMD.
  • timd_ref_mode is any of TIMD_MODE_TOP_LEFT mode, TIMD_MODE_TOP mode, and TIMD_MODE_LEFT, and may be 0, 1, or 2, respectively.
  • TIMD_MODE_TOP_LEFT uses the regions above and to the left of the target block as the template region.
  • TIMD_MODE_TOP mode uses the region above the target block as the template region.
  • TIMD_MODE_LEFT uses the region to the left of the target block as the template region.
  • Figure 9(a) shows an example of binarization of timd_ref_mode.
  • Bin0 A bit that selects between TIMD_MODE_TOP_LEFT and other modes. If it is 0, it indicates that it is TIMD_MODE_TOP_LEFT, and if it is 1, it indicates that it is not TIMD_MODE_TOP_LEFT mode.
  • timd_ref_mode timd_mode_flag + timd_mode_dir
  • 1 bit e.g., "0” is assigned to TIMD_MODE_TOP_LEFT
  • 1 bit e.g., "1” is assigned to TIMD_MODE_TOP and TIMD_MODE_LEFT
  • another bit to distinguish between TIMD_MODE_TOP and TIMD_MODE_LEFT e.g., "0" indicates TIMD_MODE_TOP and "1” indicates TIMD_MODE_LEFT).
  • TIMD_MODE_TOP_LEFT which has a high selection rate in the binarization of timd_ref_mode, shorter bits are assigned than when using TIMD_MODE_LEFT or TIMD_MODE_TOP, which has the effect of shortening the average code size and improving coding efficiency.
  • Figures 9(b) to (f) show the setting of the context (ctxInc) of timd_ref_mode in parsing.
  • a context is a variable area for holding the probability (state) of CABAC, and is identified by the value of the context index ctxIdx (0, 1, 2, ). The case where 0 and 1 are always equally probable, in other words, 0.5, 0.5, is called EP (Equal Probability) or bypass. In this case, no context is used because there is no need to hold a state for a specific syntax element.
  • ctxIdx is derived by referring to ctxInc.
  • Bin0 is a bit indicating whether TIMD_MODE_TOP_LEFT or not
  • Bin1 is a bit indicating whether TIMD_MODE_LEFT or TIMD_MODE_TOP or not.
  • the formulas and values are not limited to those described above, and the order of determination and values may be changed. For example, the following may be used.
  • ctxIdx (cbWidth > cbHeight) ? 1 : (cbWidth ⁇ cbHeight) ? 2 : 3
  • the formulas and values are not limited to those described above, and the order of determination and values may be changed. For example, the following may be used.
  • ctxIdx (cbWidth > cbHeight)? 1 : (cbWidth ⁇ cbHeight)? 2 : bypass
  • the TIMD mode (timd_ref_mode) is composed of a first bit and a second bit, where the first bit may select whether the TIMD template region is both above and to the left of the target block, and the second bit may select whether the TIMD template region is to the left or above the target block.
  • a predetermined context e.g., 1 may be used to parse timd_ref_mode, and otherwise a context different from the case when the shape of the block is square (e.g., 2) may be used to parse timd_ref_mode.
  • timd_ref_mode is decoded using the value obtained by swapping the binary value of Bin1 (1 to 0, 0 to 1, for example, 1-Bin1) depending on whether cbWidth>cbHeight or cbHeight ⁇ cbWidth.
  • timd_ref_mode may be derived as follows.
  • the above configuration uses different contexts depending on the shape of the target block, for example, whether the target block is square or not (and/or whether it is horizontal or vertical), making it possible to adaptively encode the block with a short code according to its characteristics, improving performance. Also, for example, in the case of a square, if no context is used at the same time, this has the effect of reducing memory.
  • timd_ref_mode TIMD_MODE_TOP
  • timd_ref_mode TIMD_MODE_LEFT
  • refIdxW and refIdxH may be set using intra_luma_ref_idx as shown in FIG. 8(c).
  • intra_luma_ref_idx is a syntax indicating the position of the reference sample, and is decoded from the encoded data by the parameter decoding unit 302.
  • timd_ref_mode TIMD_MODE_TOP
  • timd_ref_mode TIMD_MODE_LEFT
  • Timd_ref_mode decoding decision condition 1 The entropy decoding unit 301 may decode timd_ref_mode when the condition shown in FIG. 8(b) is satisfied.
  • timd_ref_mode is a syntax element for selecting a template region of TIMD.
  • THSIZE a predetermined threshold
  • the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE may be, for example, 16, 32, 64, etc.
  • the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE4 may be, for example, 128, 256, 512, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • timd_ref_mode when timd_ref_mode does not appear (when the product of cbWidth and cbHeight is less than THSIZE or greater than THSIZE4), the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows:
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • Timd_ref_mode decoding decision condition 2 (timd_ref_mode decoding decision condition 2) Instead of the above configuration, the following may be used.
  • the entropy decoding unit 301 decodes timd_ref_mode when the sum of cbWidth and cbHeight is equal to or greater than a predetermined threshold THSIZE2. Otherwise, when timd_ref_mode does not appear (when the sum of cbWidth and cbHeight is less than THSIZE2), the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE2 may be, for example, 8, 12, 16, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE5 may be, for example, 48, 64, 96, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows:
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • Timd_ref_mode decoding decision condition 3 The condition may be determined based on the logarithmic values of the width and height of the target block as follows.
  • the entropy decoding unit 301 decodes timd_ref_mode when the sum of Log2(cbWidth) and log2(cbHeight) is equal to or greater than a predetermined threshold THSIZE3. Otherwise, when timd_ref_mode does not appear (when the sum of log2(cbWidth) and log2(cbHeight) is less than THSIZE3), the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE3 may be, for example, 4, 5, 6, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • timd_ref_mode when timd_ref_mode does not appear (when the sum of Log2(cbWidth) and Log2(cbHeight) is greater than THSIZE6), the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE6 may be, for example, 7, 8, 9, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • timd_ref_mode when timd_ref_mode does not appear (when the sum of Log2(cbWidth) and Log2(cbHeight) is less than THSIZE3 or greater than THSIZE6), the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows:
  • Timing_ref_mode decoding decision condition 4 The condition may be determined based on the width and height of the target block as follows. When both cbWidth and cbHeight are equal to or greater than a predetermined threshold THSIZE7, the entropy decoding unit 301 decodes timd_ref_mode. Otherwise, when timd_ref_mode does not appear (when either cbWidth or cbHeight is less than THSIZE7), the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. For THSIZE7, 8, 16, 32, etc. may be used.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • the entropy decoding unit 301 decodes timd_ref_mode.
  • the entropy decoding unit 301 estimates timd_ref_mode as TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE8 may be, for example, 32, 48, 64, etc.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • cbWidth and cbHeight are both equal to or larger than a predetermined threshold value THSIZE7 and equal to or smaller than a predetermined threshold value THSIZE8
  • the entropy decoding unit 301 may decode timd_ref_mode. For example, this process may be expressed as follows.
  • timd_ref_mode TIMD_MODE_TOP_LEFT
  • Timing_ref_mode decoding decision condition 5 The condition may be determined based on the coordinates of the target block as follows.
  • the entropy decoding unit 301 decodes timd_ref_mode when both the top left coordinates x0 and y0 of the target block are greater than a predetermined threshold THSIZE9. Otherwise, when timd_ref_mode does not appear (when either x0 or y0 is equal to or smaller than THSIZE8), the entropy decoding unit 301 estimates timd_ref_mode to be TIMD_MODE_TOP_LEFT. For example, this process may be expressed as follows. THSIZE9 may be, for example, 4, 8, 16, etc.
  • TIMD_MODE_TOP_LEFT may be set and processing may be fixed. Note that (x0, y0) may be set as coordinates within a segment (screen, slice, tile) instead of coordinates within the screen, and the determination may be made based on the distance from the segment boundary.
  • isp_mode_dir indicates the direction of block division (direction of the boundary line) when ISP is used.
  • the meaning of isp_mode_dir may be as follows:
  • the areas within each subblock can be used as the template area in TIMD_MODE_TOP. These areas are different from the upper adjacent area of the target block when ISP division is not performed, which may lead to more accurate derivation of a predicted image.
  • the template area used in TIMD_MODE_LEFT for horizontal division of ISP is the same as the left adjacent area when ISP is not used, and the predicted image is unlikely to differ from when ISP is not used, i.e., it is a redundant option. Therefore, limiting isp_mode_dir according to the value of timd_ref_mode has the effect of improving coding efficiency. The same can be said for vertical division of ISP.
  • isp_mode_dir may be either HOR_INTRA_PARTIOTIONS indicating horizontal partitioning or VER_INTRA_PARTITIONS indicating vertical partitioning, and each may be 0 or 1.
  • the syntax elements isp_mode_flag and isp_mode_dir may be combined into one syntax element isp_mode.
  • the value of isp_mode may be as follows:
  • isp_mode 0
  • Use ISP split-horizon, ISP_HOR_SPLIT
  • isp_mode 2
  • Use ISP vertical split, ISP_VER_SPLIT
  • the entropy decoding unit 301 may derive isp_mode from isp_mode_flag and isp_mode_dir by the following formula.
  • the intra-prediction image generation unit 310 divides the current block into sub-blocks (e.g., into four) along horizontal or vertical boundaries, and derives a prediction image for each sub-block in sequence using common intra-prediction parameters within the current block.
  • isp_mode when isp_mode is 0 (ISP_NO_SPLIT), intra prediction is performed without further division of the CU.
  • isp_mode When isp_mode is 1 (ISP_HOR_SPLIT), the CU is divided into 2 to 4 subblocks vertically, and intra prediction, transform coefficient decoding, inverse quantization, and inverse transform are performed on a subblock basis.
  • isp_mode is 2 (ISP_VER_SPLIT)
  • the CU is divided into 2 to 4 subblocks horizontally, and intra prediction, transform coefficient decoding, inverse quantization, and inverse transform are performed on a subblock basis.
  • the number of subblock divisions, NumIntraSubPart is derived using the following formula.
  • the width nW and height nH of the subblock, and the number of horizontal and vertical divisions numPartsX and numPartY are derived as follows.
  • nTbW and nTbH are the width and height of a CU (or TU).
  • the parameter decoding unit 302 informs the entropy decoding unit 301 which syntax elements to parse.
  • the entropy decoding unit 301 outputs the syntax elements parsed by the entropy decoding unit 301 to the prediction parameter derivation unit 320.
  • the above configuration increases prediction efficiency and improves coding efficiency by signaling appropriate template regions.
  • the generation of inappropriate template prediction images and cost calculations can be omitted, reducing the amount of calculations.
  • FIG. 7 shows the configuration of the TIMD prediction unit 31047 in this embodiment.
  • the TIMD prediction unit 31047 is composed of a reference sample derivation unit 4701, a template derivation unit 4702, an intra prediction unit 4703, an intra prediction mode candidate derivation unit 4711, a template predicted image generation unit 4712, a template cost derivation unit 4713, and an intra prediction mode selection unit 4714.
  • the intra prediction mode candidate derivation unit 4711, the template predicted image generation unit 4712, and the template cost derivation unit 4713 may be collectively referred to as a template intra prediction mode derivation device 4710.
  • the TIMD prediction unit 31047 When timd_flag is 1, the TIMD prediction unit 31047 generates a template predicted image tpredSamples using an intra prediction mode that accurately predicts the template image tempSamples generated from the image of the template region RT. Specifically, the TIMD prediction unit 31047 executes the following procedure.
  • the predetermined prediction mode may include an angular prediction mode, a planar prediction mode, a DC prediction mode, and an intra prediction mode derived by decoder-side intra mode derivation (DIMD, Decoder-side Intra Mode Derivation) included in the MPM.
  • DIMD decoder-side intra mode derivation
  • the intra prediction mode corresponding to the tpredSamples that are determined to have a small cost value, i.e., high prediction accuracy, is selected as the prediction mode for the TIMD.
  • the amount of code can be reduced by signaling the appropriate template reference region RTRS using a syntax element.
  • the amount of processing can be reduced because it is no longer necessary to generate a template prediction image using pixels from an inappropriate template reference region or to calculate costs.
  • the intra-prediction mode candidate derivation unit 4711 first derives a list of intra-prediction mode candidates timdModeList[] from the intra-prediction modes of blocks adjacent to a target block.
  • the MPM list candModeList[] may be used as timdModeList.
  • the template derivation unit 4702 derives a template image tempSamples of the current block. As shown in Fig. 6, the template image may be derived from a template region RT adjacent to the current block.
  • the template region RT is an L-shaped set of decoded pixels recSamples with a width of one pixel.
  • the area on recSamples used to derive tempSamples is called the template area RT and is expressed as a set of coordinates (i, j).
  • Template image example 1 an example that does not include the upper left area of the target block
  • 10 to 14 are diagrams showing examples of the template region RT and the template reference region RTRS different from those in FIG.
  • the template image may be shaped other than L-shaped.
  • Figure 10 shows an example where the template region is the region RL on the left side of the target block (middle of the figure) or the region RT above the target block (right side of the figure) in addition to the L-shape (left side of the figure).
  • the template image is set using the following formula.
  • Template image example 2 Example including the upper left area of the target block
  • Figure 11 also shows an example where the template region is an area RL including the left side and upper left corner of the target block (middle of the figure), and an area RT including the upper side and upper left corner of the target block (right side of the figure).
  • the template image is set by the following formula.
  • Template image example 3 an example of extending the target block to the lower left and upper right without including the upper left area
  • Figure 12 also shows an example where the template region is the region RL_EXT (middle of the figure) that includes the left side and bottom left of the target block, and the region RT_EXT (right side of the figure) that includes the top side and top right of the target block.
  • the template image is set by the following formula.
  • tExtW and tExtH are the width and height of the template image extended to the upper right and lower left, respectively.
  • Fig. 13 shows an example where the template region is an area RL_EXT (middle of the figure) that includes the left side, upper left, and lower left of the target block, and an area RT_EXT (right side of the figure) that includes the upper side, upper left, and upper right of the target block.
  • the template image is set by the following formula.
  • timd_ref_mode indicates any of TIMD_MODE_TOP_LEFT, TIMD_MODE_LEFT, and TIMD_MODE_TOP
  • timd_ref_mode TIMD_MODE_TOP.
  • the template derivation unit 4702 refers to timd_ref_mode, selects one of the three template regions, and generates a template image.
  • the template derivation unit 4702 generates a template image as follows:
  • the reference sample derivation unit 4701 derives a reference sample refUnit from the template reference region RTRS. Note that the operation of the reference sample derivation unit 4701 may be performed by the reference sample filter unit 3103.
  • refUnit[x][y] recSamples[x0+x][y0+y]
  • Example 1 of template reference region RTRS Example that does not include the top left corner of the target block
  • timd_ref_mode is TIMD_MODE_LEFT or TIMD_MODE_TOP
  • the template reference region RTRS changes according to the template image.
  • the template reference region RTRS is only the region to the left of the target block.
  • timd_ref_mode is TIMD_MODE_TOP
  • the template reference region RTRS is only the region above the target block.
  • the reference sample derivation unit 4701 sets the template reference region as follows.
  • the reference sample derivation unit 4701 may use the following formula.
  • the template reference region may include the left and upper regions of the target block.
  • the reference sample derivation unit 4701 sets the template reference region as follows: rW is the width of the template reference region when timd_ref_mode is TIMD_MODE_LEFT, and rH is the height of the template reference region when timd_ref_mode is TIMD_MODE_TOP.
  • the reference sample derivation unit 4701 may use the following formula.
  • the above configuration expands the template reference area used to generate the template predicted image, thereby improving prediction accuracy, particularly from the upper left direction, and improving coding efficiency.
  • Example 1 of template reference region RTRS and (Example 2 of template reference region RTRS), we have explained examples where the template reference region RTRS touches the template image.
  • Example 3 of template reference region RTRS we will use Figure 14 to explain an example where the template reference region RTRS does not touch the template image.
  • Figure 14 is a diagram in which Figure 11(b) is applied so that the template reference region RTRS does not touch the template image. Therefore, this example can also be applied to each of Figures 10 to 13 other than Figure 11(b).
  • the reference sample derivation unit 4701 derives the image refUnit of the template reference area from a position that is refIdxW and refIdxH away from the template image in the horizontal and vertical directions, respectively.
  • the position of the template reference area near the target block is such that if the template area is located only to the left of the target block, the vertical position is equal to or greater than the minimum vertical coordinate of the template area, and if the template area is located only to the upper side of the target block, the horizontal position is equal to or greater than the minimum horizontal coordinate of the template area.
  • the location of the template reference region near the target block includes adjacent pixels located above and to the upper left of the template region, even if the template region is located only to the left of the target block, if adjacent blocks are available. Similarly, even if the template region is located only to the top of the target block, it includes adjacent pixels located to the left and to the upper left of the template region, if adjacent blocks are available. In other words, the template reference region includes the top left pixel positions of the 8 neighbors of the template region.
  • the position of the template reference area near the target block is located a predetermined distance away from the template area.
  • the reference sample derivation unit 4701 may filter the reference sample refUnit[x][y] to derive the reference sample p[x][y].
  • the template predicted image generation unit 4712 generates a predicted image (template predicted image tpredSamples) for the intra prediction mode IntraPredMode from the template reference region RTRS.
  • the operation of deriving a predicted image by the template predicted image generation unit 4712 may be performed by the prediction unit 3104.
  • the planar prediction unit 31041, the DC prediction unit 31042, and the angular prediction unit 31043 may perform both the derivation of a template predicted image and the derivation of a predicted image of a target block.
  • the TIMD prediction unit 31047 divides predetermined intra prediction mode candidates into a plurality of groups, generates a template prediction image for each intra prediction mode candidate selected from each group, evaluates the cost, and derives and selects the cost of candidates other than the selected intra prediction mode candidate in the group to which the intra prediction mode candidate with the lowest cost belongs. For example, the TIMD prediction unit 31047 divides intra prediction modes into numGr groups (numGr>1) and tests only the representative mode of each group (derives a template prediction image, calculates the cost, and compares it). For intra prediction modes included in the best group whose representative mode has the smallest cost, the intra prediction mode may be tested in more detail.
  • the search is divided into numGr searches of coarse granularity intra prediction modes and M-1 searches of fine granularity intra prediction modes.
  • numGr is the number of groups
  • M is the number of intra-modes contained in the group.
  • Figure 18(a) shows an example of dividing intra prediction modes into groups.
  • the intra prediction modes included in timdModeList which is a candidate list used in TIMD prediction, are classified into nine groups, Gr[0] to Gr[8].
  • the grouping of intra prediction modes may be determined using a certain threshold gTH[] and the magnitude relationship between the intra prediction modes.
  • the intra prediction mode selection unit 4714 may divide all angular prediction modes into groups. Alternatively, it may divide only candidates included in intra prediction modes timdModeList derived from the intra prediction modes of blocks adjacent to the target block into groups. An example of the latter is shown below.
  • the intra prediction mode selection unit 4714 initializes numGrList and nGrList.
  • the second search searches all intra prediction modes in the best group, which has the effect of performing a complete search.
  • a limited set of candidates such as intra prediction modes included in timdModeList
  • all intra prediction modes in the identified group are searched in the second search. Therefore, the effect of being able to search candidates in a specific direction without omission is achieved.
  • the groups are configured as exclusive groups with no overlaps, which allows for a waste-free search and reduces complexity.
  • modes that are equal to or close to the threshold value may be included in both groups on either side of the threshold value.
  • An appropriate number of overlaps is 1 to 2.
  • the representative mode may be the mode with the highest position in timdModeList among the intra prediction modes of each group, or the first mode. In other words, one representative mode is set from the modes stored in GrList[m][0].
  • the representative mode for each group is not limited to the above.
  • it may be the intra prediction mode with the smallest mode number within each group.
  • the representative mode of each group may be the maximum intra-prediction mode within each group.
  • the representative mode of each group may be the intra-prediction mode having the median value within each group.
  • the group includes a specific direction such as horizontal, vertical, 45 degrees, or 135 degrees, that direction can be set as the representative mode, and if not, another method, such as one of the methods mentioned above, can be used to set the representative mode.
  • the template prediction image generating unit 4712 generates ref[], for example, as follows (expression TIMD-ANGULAR-REF). The following generates tpredSamples[][] from p[][], but refUnit[][] may be used instead of p[][].
  • the template predicted image generation unit 4712 (intra prediction unit 4703) generates a template predicted image tpredSamples[][] corresponding to tIntraPredMode as in the following (equation TIMD-ANGULAR-PRED), for example.
  • filt is an interpolation filter coefficient for the template predicted image.
  • the number of taps MTAP of the interpolation filter used to derive the template predicted image is, for example, 4.
  • the intraPredAngle is an angle parameter for each intra prediction mode.
  • filt may be derived from iFast as follows: filtG[phase][j] is the coefficient of the interpolation filter for generating the template predicted image.
  • the template derivation unit 4702 derives the template image tempSamples of the target block using the above method.
  • the template predicted image generating unit 4712 generates a predicted image (template predicted image tpredSamplesR) of the representative mode repMode[m] from the template reference region RTRS using the above method.
  • the template cost derivation unit 4713 derives the cost tempGrCost[m] of the intra prediction mode candidate from the difference between the template predicted image tpredSamplesR of the representative mode candidate repMode[m] and the template image tempSamples.
  • the cost may be SAD (Sum of Absolute Difference).
  • tW and tH are the width and height of the template image.
  • the template cost derivation unit 4713 derives tempCost using the following formula.
  • tempGrCost ⁇ abs(tpredSamplesR[i][j] - tempSamples[i][j])
  • MAX_COST is a value that indicates that the cost value and its group are invalid, and is a value that will never be smaller than other cost values. For example, the maximum value of double type may be used.
  • the cost may be SATD (Sum of Absolute Transformed Difference) instead of SAD, or may be the weighted sum of multiple costs.
  • the intra-prediction mode selection unit 4714 derives the intra-prediction mode corresponding to the minimum value of tempGrCost as the intra-prediction mode IntraPredMode of the TIMD mode.
  • Steps (STEP1-1) and (STEP1-2) are executed for all intra prediction modes in group mm. If the intra prediction mode has a cost already derived, steps (STEP1-1) and (STEP1-2) can be omitted. The smallest value costMode1 and the second smallest value costMode2 in group mm, and the corresponding intra prediction mode candidates kMode1 and kMode2 are selected.
  • the prediction directions represented by kMode1 and kMode2 may be adjusted to more accurate direction representation.
  • kMode1 and kMode2 For the two derived modes kMode1 and kMode2, derive the weights weight1 and weight2 to be used in generating the predicted image according to the costs costMode1 and codeMode2. For example, they are derived as follows:
  • the group mm may be further recursively divided into smaller groups.
  • Gr[1] includes 33 intra prediction modes from 2 to 34, and the number of searches in the second search becomes too large.
  • the second search is performed on this best group. If the number of intra prediction modes in Gr[3] or Gr[4] is large, further division may be repeated. By limiting the number of modes to be searched in a stepwise manner in this way, it is possible to sequentially derive a highly accurate intra prediction mode IntraPredMode with a small amount of processing.
  • the intra prediction unit 4703 derives an intra predicted image predSamples[][] corresponding to IntraPredMode. Then, it outputs it as an intra predicted image of the current block. Note that these processes may be derived by the prediction unit 3104.
  • iIdx (((y + 1) * intraPredAngle) >> 5)
  • ref[] is as explained in the template predicted image generation unit.
  • fT is the interpolation filter coefficient for the intra-prediction image.
  • MTAP is the number of taps of the interpolation filter filt used to derive the template prediction image tpredSamples.
  • predSamples[x][y] (weight1*predSamples1[x][y] + weight2*predSamples2[x][y]) >> 8 Otherwise, if the first condition of (STEP 2) is not satisfied, predSamples[][] is generated using the intra-predicted image predSamples1[][] corresponding to kMode1. predSamples1[][] is generated by (the formula INTRA-ANGULAR-PRED).
  • predSamples[x][y] predSamples1[x][y]
  • Example 1 of Example 1 As another example of the first embodiment, another group division method will be described. In this method, the groups are divided so that the number of elements in each group including the angular prediction mode is approximately equal, and a large difference in the total number of modes to be processed, i.e., the amount of processing, does not occur depending on the group selected. In other words, intra prediction mode candidates in which the difference in the number of elements in the groups including the angular prediction mode is one or less are used.
  • the intra prediction mode selection unit 4714 may further separate non-directional modes (Planar or DC) from directional modes, and perform group division using the directional mode candidate timdAngModeList.
  • numAngCand is the number of elements in timdAngModeList.
  • the intra prediction mode selection unit 4714 divides timdAngModeList into (numGr-2) groups (Gr[1] to Gr[numGr-1]) so that the number of elements in each group is approximately numAngCand/(numGr-2).
  • numAngCand 23
  • numGr 5.
  • the number of elements in each of the groups Gr[1] to Gr[numGr-1] split from timdModeList differs from the other groups by at most 1.
  • the number of elements is almost the same, which has the effect of steadily reducing the amount of processing.
  • the intra prediction modes are not limited to this.
  • the intra prediction modes may take values from -14 to 80, as in the case of wide angle.
  • a new group may be assigned to the intra prediction modes from -14 to -1 or 67 to 80. Then, a representative mode or the best group may be identified.
  • the video decoding device of this embodiment includes a parameter decoding unit that decodes a template-based intra mode derivation flag from encoded data, a template derivation unit that generates a template image using an image of a template region adjacent to a target block, a reference sample derivation unit that generates a reference sample using an image of a template reference region near the target block, a template predicted image generation unit that generates a template predicted image for a predetermined intra prediction mode candidate using the reference sample, a template cost derivation unit that derives a cost from the template predicted image and the template image, and an intra prediction mode selection unit that selects the intra prediction mode of the target block based on the cost, the template derivation unit specifies the position of the template region by referring to the template-based intra mode derivation flag, and the reference sample derivation unit derives the reference sample by referring to the template-based intra mode derivation flag.
  • the template-based intra mode derivation flag indicates whether to use the upper and left sides of the target block, the left side of the target block, or the upper side of the target block as the template region.
  • the template area to the left of the target block has a vertical position that is greater than or equal to the minimum and less than or equal to the maximum vertical coordinate of the target block, and the template area above the target block has a horizontal position that is greater than or equal to the minimum and less than or equal to the maximum horizontal coordinate of the target block.
  • the template region to the left of the target block has a vertical position that is equal to or less than the maximum vertical coordinate of the target block, and the template region above the target block has a horizontal position that is equal to or less than the maximum horizontal coordinate of the target block; in other words, the template region to the left of the target block includes an area whose vertical position is equal to or less than the minimum vertical coordinate of the target block, and the template region above the target block includes an area whose horizontal position is equal to or less than the minimum horizontal coordinate of the target block.
  • the template region to the left of the target block has a vertical position equal to or greater than the minimum vertical coordinate of the target block, and the template region above the target block has a horizontal position equal to or greater than the minimum horizontal coordinate of the target block; in other words, the template region to the left of the target block includes an area whose vertical position is equal to or greater than the maximum vertical coordinate of the target block, and the template region above the target block includes an area whose horizontal position is equal to or greater than the maximum horizontal coordinate of the target block.
  • the template area to the left of the target block has no vertical position restrictions relative to the target block, and the template area above the target block has no horizontal position restrictions relative to the target block.
  • the distance from the target block may be changed in the horizontal and vertical directions.
  • the template predicted image generator 4712 may perform the following.
  • the above configuration allows the area referenced by the template predicted image to be variable depending on the size of the target block, improving the accuracy of the template predicted image and increasing the accuracy of the TIMD intra predicted image.
  • the adder 312 adds, for each pixel, the predicted image of the block input from the predicted image generation unit 308 and the prediction error input from the inverse quantization and inverse transform unit 311 to generate a decoded image of the block.
  • the adder 312 stores the decoded image of the block in the reference picture memory 306, and also outputs it to the loop filter 305.
  • FIG. 15 is a block diagram showing the configuration of the video encoding device 11 according to this embodiment.
  • the video encoding device 11 includes a prediction image generating unit 101, a subtraction unit 102, a transformation/quantization unit 103, an inverse quantization/inverse transformation unit 105, an addition unit 106, a loop filter 107, a prediction parameter memory (prediction parameter storage unit, frame memory) 108, a reference picture memory (reference image storage unit, frame memory) 109, an encoding parameter determining unit 110, a parameter encoding unit 111, a prediction parameter derivation unit 120, and an entropy encoding unit 104.
  • the predicted image generating unit 101 generates a predicted image for each CU, which is an area obtained by dividing each picture of the image T.
  • the predicted image generating unit 101 includes an intra predicted image generating unit 122 and an inter predicted image generating unit 123.
  • the predicted image generating unit 101 operates in the same way as the predicted image generating unit 308 already explained, and so a description thereof will be omitted.
  • the subtraction unit 102 subtracts the pixel values of the predicted image of the block input from the predicted image generation unit 101 from the pixel values of image T to generate a prediction error.
  • the subtraction unit 102 outputs the prediction error to the transformation and quantization unit 103.
  • the transform/quantization unit 103 calculates transform coefficients by frequency transforming the prediction error input from the subtraction unit 102, and derives quantized transform coefficients by quantizing the prediction error.
  • the transform/quantization unit 103 outputs the quantized transform coefficients to the parameter coding unit 111 and the inverse quantization/inverse transform unit 105.
  • the parameter coding unit 111 includes a header coding unit 1110, a CT information coding unit 1111, and a CU coding unit 1112 (prediction mode coding unit).
  • the CU coding unit 1112 further includes a TU coding unit 1114. The general operation of each module is explained below.
  • the header encoding unit 1110 performs encoding processing of parameters such as header information, splitting information, prediction information, and quantization transformation coefficients.
  • the CT information encoding unit 1111 encodes QT, MT (BT, TT) division information, etc.
  • the CU encoding unit 1112 encodes CU information, prediction information, split information, etc.
  • the TU encoding unit 1114 encodes the QP update information and the quantized prediction error.
  • the CT information encoding unit 1111 and the CU encoding unit 1112 supply syntax elements such as inter prediction parameters, intra prediction parameters, and quantized transform coefficients to the parameter encoding unit 111.
  • the entropy coding unit 104 receives the quantized transform coefficients and coding parameters from the parameter coding unit 111. The entropy coding unit 104 entropy codes these to generate and output the coded stream Te.
  • the prediction parameter derivation unit 120 is a means including an inter-prediction parameter coding unit 112 and an intra-prediction parameter coding unit 113, and derives intra-prediction parameters and intra-prediction parameters from the parameters input from the coding parameter determination unit 110.
  • the derived intra-prediction parameters and intra-prediction parameters are output to the parameter coding unit 111.
  • the intra prediction parameter encoding unit 113 encodes the IntraPredMode and the like input from the encoding parameter determination unit 110.
  • the intra prediction parameter encoding unit 113 includes a part of the same configuration as the configuration in which the intra prediction parameter derivation unit 304 derives intra prediction parameters.
  • the adder 106 generates a decoded image by adding, for each pixel, the pixel value of the predicted block input from the predicted image generation unit 101 and the prediction error input from the inverse quantization and inverse transform unit 105.
  • the adder 106 stores the generated decoded image in the reference picture memory 109.
  • the loop filter 107 applies a deblocking filter, SAO, and ALF to the decoded image generated by the adder 106.
  • SAO deblocking filter
  • ALF ALF
  • the loop filter 107 does not necessarily have to include the above three types of filters, and may be configured, for example, as only a deblocking filter.
  • the prediction parameter memory 108 stores the prediction parameters generated by the encoding parameter determination unit 110 in a predetermined location for each target picture and CU.
  • the reference picture memory 109 stores the decoded image generated by the loop filter 107 in a predetermined location for each target picture and CU.
  • the coding parameter determination unit 110 selects one set from among multiple sets of coding parameters.
  • the coding parameters are the above-mentioned QT, BT or TT division information, prediction parameters, or parameters to be coded that are generated in relation to these.
  • the predicted image generation unit 101 generates a predicted image using these coding parameters.
  • the coding parameter determination unit 110 calculates an RD cost value indicating the amount of information and the coding error for each of the multiple sets.
  • the coding parameter determination unit 110 selects the set of coding parameters that minimizes the calculated cost value.
  • the entropy coding unit 104 outputs the selected set of coding parameters as the coding stream Te.
  • the coding parameter determination unit 110 stores the determined coding parameters in the prediction parameter memory 108.
  • the video decoding device of this embodiment includes a template derivation unit that generates a template image using an image of a template region adjacent to a target block, a reference sample derivation unit that generates a reference sample using an image of a template reference region near the target block, a template predicted image generation unit that generates a template predicted image for a predetermined intra prediction mode candidate using the reference sample, a template cost derivation unit that derives a cost from the template predicted image and the template image, an intra prediction mode selection unit that selects the intra prediction mode of the target block based on the cost, and a parameter encoding unit that encodes a template-based intra mode derivation flag, the template derivation unit specifies the position of the template region by referring to the template-based intra mode derivation flag, and the reference sample derivation unit derives the reference sample by referring to the template-based intra mode derivation flag.
  • a part of the video encoding device 11 and video decoding device 31 in the above-mentioned embodiment for example, the entropy decoding unit 301, the parameter decoding unit 302, the loop filter 305, the predicted image generating unit 308, the inverse quantization and inverse transform unit 311, the addition unit 312, the predicted image generating unit 101, the subtraction unit 102, the transform and quantization unit 103, the entropy encoding unit 104, the inverse quantization and inverse transform unit 105, the loop filter 107, the encoding parameter determination unit 110, and the parameter encoding unit 111 may be realized by a computer.
  • a program for realizing this control function may be recorded on a computer-readable recording medium, and the program recorded on the recording medium may be read into and executed by a computer system.
  • the "computer system” referred to here is a computer system built into either the video encoding device 11 or the video decoding device 31, and includes hardware such as an OS and peripheral devices.
  • “computer-readable recording media” refers to portable media such as flexible disks, optical magnetic disks, ROMs, and CD-ROMs, as well as storage devices such as hard disks built into computer systems.
  • “computer-readable recording media” may also include devices that dynamically store a program for a short period of time, such as a communication line when transmitting a program via a network such as the Internet or a communication line such as a telephone line, and devices that store a program for a certain period of time, such as volatile memory within a computer system that serves as a server or client in such cases.
  • the above-mentioned program may be one that realizes part of the functions described above, or may be one that can realize the functions described above in combination with a program already recorded in the computer system.
  • part or all of the video encoding device 11 and video decoding device 31 in the above-mentioned embodiments may be realized as an integrated circuit such as an LSI (Large Scale Integration).
  • LSI Large Scale Integration
  • Each functional block of the video encoding device 11 and video decoding device 31 may be individually made into a processor, or part or all of them may be integrated into a processor.
  • the integrated circuit method is not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor. Furthermore, if an integrated circuit technology that can replace LSI appears due to advances in semiconductor technology, an integrated circuit based on that technology may be used.
  • Embodiments of the present invention can be suitably applied to a video decoding device that decodes coded data in which image data has been coded, and a video coding device that generates coded data in which image data has been coded.
  • the present invention can also be suitably applied to the data structure of coded data that is generated by a video coding device and referenced by the video decoding device.
  • Image Decoding Device 301 Entropy Decoding Unit 302 Parameter Decoding Unit 308 Prediction Image Generation Unit 310 Intra-prediction image generation unit 31047 TIMD Forecasting Department 4701 Reference sample derivation part 4702 Template Derivation Unit 4703 Intra prediction unit 4711 Intra prediction mode candidate derivation unit, 4712 Template Prediction Image Generation Unit 4713 Template Cost Derivation Unit 4714 Intra prediction mode selection unit 311 Inverse quantization and inverse transformation unit 312 Addition section 11 Image Encoding Device 101 Prediction image generation unit 102 Subtraction section 103 Transformation and Quantization Section 104 Entropy coding unit 105 Inverse quantization and inverse transformation section 107 Loop Filter 110 Encoding parameter determination unit 111 Parameter Encoding Unit 1110 Header encoding part 1111 CT information coding unit 1112 CU encoding unit (prediction mode encoding unit) 1114 TU encoding unit

Landscapes

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

Abstract

従来のイントラ予測モード単位のテンプレート予測画像とテンプレート画像の差分に基づいたテンプレートベースイントラ(TIMD)予測モード導出は、テンプレート画像の導出とコスト計算に多くの計算量を要するという課題があった。本実施例の動画像復号装置は、テンプレート予測画像とテンプレート画像から導出したコストに基づいて対象ブロックのイントラ予測モードを選択するTIMD予測において、所定のイントラ予測モード候補を予測方向に基づいて複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択した候補以外のモードについてもコストの導出と選択を行う。

Description

動画像復号装置および動画像符号化装置
 本発明の実施形態は、動画像復号装置および動画像符号化装置に関する。
 動画像を効率的に伝送または記録するために、動画像を符号化することによって符号化データを生成する動画像符号化装置、および、当該符号化データを復号することによって復号画像を生成する動画像復号装置が用いられている。
 具体的な動画像符号化方式としては、例えば、H.264/AVCやHEVC(High-Efficiency Video Coding)、VVC(Versatile Video Coding)方式などが挙げられる。
 このような動画像符号化方式においては、動画像を構成する画像(ピクチャ)は、画像を分割することにより得られるスライス、スライスを分割することにより得られる符号化ツリーユニット(CTU:Coding Tree Unit)、符号化ツリーユニットを分割することで得られる符号化単位(符号化ユニット(Coding Unit:CU)と呼ばれることもある)、及び、符号化単位を分割することより得られる変換ユニット(TU:Transform Unit)からなる階層構造により管理され、CU毎に符号化/復号される。
 また、このような動画像符号化方式においては、通常、入力画像を符号化/復号することによって得られる局所復号画像に基づいて予測画像が生成され、当該予測画像を入力画像(原画像)から減算して得られる予測誤差(「差分画像」または「残差画像」と呼ぶこともある)が符号化される。予測画像の生成方法としては、画面間予測(インター予測)、および、画面内予測(イントラ予測)が挙げられる。
 また、近年の動画像符号化及び復号の技術として非特許文献1が挙げられる。非特許文献1には、デコーダが隣接領域の画素を用いてイントラ方向予測モード番号を導出することにより予測画像を生成するテンプレートベースイントラモード導出(Template based Intra Mode Derivation, TIMD)予測が開示されている。
K. Cao, N. Hu, V. Seregin, M. Karczewicz, Y. Wang, K. Zhang,   L. Zhang, "EE2-related: Fusion for template-based intra mode derivation",   JVET-W0123, July 2021
 非特許文献1のようなテンプレートベースイントラモード導出では、対象ブロックの付近のテンプレート参照領域の画像を用いて、イントラ予測モード候補に対する対象ブロックの隣接画像(テンプレート画像)からテンプレート予測画像を生成する。そして、テンプレート画像とテンプレート予測画像のコストが小さくなるイントラ予測モード候補を、対象ブロックのイントラ予測モードとして選択する。しかしながら、複数のイントラ予測モード候補に対するテンプレート予測画像の導出とコスト計算が必要であり、計算量が非常に大きいという課題がある。
 本発明は、テンプレートベースイントラモード導出の複雑度を低減することを目的とする。
 本実施例の動画像復号装置は、テンプレート領域とテンプレート参照領域の画像を用いて、テンプレート画像と所定のイントラ予測モード候補に対するテンプレート予測画像を生成し、テンプレート予測画像とテンプレート画像から導出したコストに基づいて、対象ブロックのイントラ予測モードを選択するTIMD予測において、テンプレートベースイントラモード導出フラグを参照して、テンプレート領域とテンプレート参照領域の位置を決定することを特徴とする。また、所定のイントラ予測モード候補を予測方向に基づいて複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外の候補についてもコストの導出と選択を行うことを特徴とする。
 本発明の一態様によれば、テンプレートベースイントラモード導出の複雑度を低減することができる。
本実施形態に係る画像伝送システムの構成を示す概略図である。 符号化ストリームのデータの階層構造を示す図である。 イントラ予測モードの種類(モード番号)を示す概略図である。 動画像復号装置の構成を示す概略図である。 イントラ予測画像生成部の構成を示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 TIMD予測部の詳細を示す図である。 TIMD予測に関するシンタックスの例である。 timd_ref_modeのコンテキストを示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 動画像符号化装置の構成を示すブロック図である。 ISPモードに関するシンタックスの例である。 対象ブロック、テンプレート領域、テンプレート参照領域の関係を示す図である。 TIMDのグループの一例を示す図である。
  (第1の実施形態)
 以下、図面を参照しながら本発明の実施形態について説明する。
 図1は、本実施形態に係る画像伝送システム1の構成を示す概略図である。
 画像伝送システム1は、符号化対象画像を符号化した符号化ストリームを伝送し、伝送された符号化ストリームを復号し画像を表示するシステムである。画像伝送システム1は、動画像符号化装置(画像符号化装置)11、ネットワーク21、動画像復号装置(画像復号装置)31、及び動画像表示装置(画像表示装置)41を含んで構成される。
 動画像符号化装置11には画像Tが入力される。
 ネットワーク21は、動画像符号化装置11が生成した符号化ストリームTeを動画像復号装置31に伝送する。ネットワーク21は、インターネット(Internet)、広域ネットワーク(WAN:Wide Area Network)、小規模ネットワーク(LAN:Local Area Network)またはこれらの組み合わせである。ネットワーク21は、必ずしも双方向の通信網に限らず、地上デジタル放送、衛星放送等の放送波を伝送する一方向の通信網であってもよい。また、ネットワーク21は、DVD(Digital Versatile Disc:登録商標)、BD(Blu-ray Disc:登録商標)等の符号化ストリームTeを記録した記憶媒体で代替されてもよい。
 動画像復号装置31は、ネットワーク21が伝送した符号化ストリームTeのそれぞれを復号し、復号した1または複数の復号画像Tdを生成する。
 動画像表示装置41は、動画像復号装置31が生成した1または複数の復号画像Tdの全部または一部を表示する。動画像表示装置41は、例えば、液晶ディスプレイ、有機EL(Electro-luminescence)ディスプレイ等の表示デバイスを備える。ディスプレイの形態としては、据え置き、モバイル、HMD等が挙げられる。また、動画像復号装置31が高い処理能力を有する場合には、画質の高い画像を表示し、より低い処理能力しか有しない場合には、高い処理能力、表示能力を必要としない画像を表示する。
 <演算子>
 本明細書で用いる演算子を以下に記載する。
 >>は右ビットシフト、<<は左ビットシフト、&はビットワイズAND、|はビットワイズOR、^はビットワイズXOR、|=はOR代入演算子であり、!は論理否定(NOT)、&&は論理積(AND)、||は論理和(OR)を示す。
 x?y:zは、xが真(0以外)の場合にy、xが偽(0)の場合にzをとる3項演算子である。
 Clip3(a,b,c)は、cをa以上b以下の値にクリップする関数であり、c<aの場合にはaを返し、c>bの場合にはbを返し、その他の場合にはcを返す関数である(ただし、a<=b)。
 Clip1Y(c)は、Clip3(a,b,c)においてa=0、b=(1<<BitDepthY)-1に設定した演算子である。BitDepthYは輝度のビット深度である。
 abs(a)はaの絶対値を返す関数である。
 Int(a)はaの整数値を返す関数である。
 Floor(a)はa以下の最大の整数を返す関数である。
 Log2(a)は2を底とする対数を返す関数である。
 Ceil(a)はa以上の最小の整数を返す関数である。
 a/dはdによるaの除算(小数点以下切り捨て)を表す。
 Min(a,b)はaとbのうち小さい値を返す関数である。
  <符号化ストリームTeの構造>
 本実施形態に係る動画像符号化装置11および動画像復号装置31の詳細な説明に先立って、動画像符号化装置11によって生成され、動画像復号装置31によって復号される符号化ストリームTeのデータ構造について説明する。
 図2は、符号化ストリームTeにおけるデータの階層構造を示す図である。符号化ストリームTeは、例示的に、シーケンス、およびシーケンスを構成する複数のピクチャを含む。図2には、それぞれ、シーケンスSEQを既定する符号化ビデオシーケンス、ピクチャPICTを規定する符号化ピクチャ、スライスSを規定する符号化スライス、スライスデータを規定する符号化スライスデータ、符号化スライスデータに含まれる符号化ツリーユニット、符号化ツリーユニットに含まれる符号化ユニットを示す図が示されている。
  (符号化ビデオシーケンス)
 符号化ビデオシーケンスでは、処理対象のシーケンスSEQを復号するために動画像復号装置31が参照するデータの集合が規定されている。シーケンスSEQは、図2の符号化ビデオシーケンスに示すように、ビデオパラメータセットVPS(Video Parameter Set)、シーケンスパラメータセットSPS(Sequence Parameter Set)、ピクチャパラメータセットPPS(Picture Parameter Set)、ピクチャPICT、及び、付加拡張情報SEI(Supplemental Enhancement Information)を含んでいる。
 ビデオパラメータセットVPSは、複数のレイヤから構成されている動画像において、複数の動画像に共通する符号化パラメータの集合および動画像に含まれる複数のレイヤおよび個々のレイヤに関連する符号化パラメータの集合が規定されている。
 シーケンスパラメータセットSPSでは、対象シーケンスを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの幅や高さが規定される。なお、SPSは複数存在してもよい。その場合、PPSから複数のSPSの何れかを選択する。
 ピクチャパラメータセットPPSでは、対象シーケンス内の各ピクチャを復号するために動画像復号装置31が参照する符号化パラメータの集合が規定されている。例えば、ピクチャの復号に用いられる量子化幅の基準値(pic_init_qp_minus26)や重み付き予測の適用を示すフラグ(weighted_pred_flag)が含まれる。なお、PPSは複数存在してもよい。その場合、対象シーケンス内の各ピクチャから複数のPPSの何れかを選択する。
  (符号化ピクチャ)
 符号化ピクチャでは、処理対象のピクチャPICTを復号するために動画像復号装置31が参照するデータの集合が規定されている。ピクチャPICTは、図2の符号化ピクチャに示すように、スライス0~スライスNS-1を含む(NSはピクチャPICTに含まれるスライスの総数)。
 なお、以下、スライス0~スライスNS-1のそれぞれを区別する必要が無い場合、符号の添え字を省略して記述することがある。また、以下に説明する符号化ストリームTeに含まれるデータであって、添え字を付している他のデータについても同様である。
  (符号化スライス)
 符号化スライスでは、処理対象のスライスSを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスは、図2の符号化スライスに示すように、スライスヘッダ、および、スライスデータを含んでいる。
 スライスヘッダには、対象スライスの復号方法を決定するために動画像復号装置31が参照する符号化パラメータ群が含まれる。スライスタイプを指定するスライスタイプ指定情報(slice_type)は、スライスヘッダに含まれる符号化パラメータの一例である。
 スライスタイプ指定情報により指定可能なスライスタイプとしては、(1)符号化の際にイントラ予測のみを用いるIスライス、(2)符号化の際に単方向予測、または、イントラ予測を用いるPスライス、(3)符号化の際に単方向予測、双方向予測、または、イントラ予測を用いるBスライスなどが挙げられる。なお、インター予測は、単予測、双予測に限定されず、より多くの参照ピクチャを用いて予測画像を生成してもよい。以下、P、Bスライスと呼ぶ場合には、インター予測を用いることができるブロックを含むスライスを指す。
 なお、スライスヘッダは、ピクチャパラメータセットPPSへの参照(pic_parameter_set_id)を含んでいてもよい。
  (符号化スライスデータ)
 符号化スライスデータでは、処理対象のスライスデータを復号するために動画像復号装置31が参照するデータの集合が規定されている。スライスデータは、図2の符号化スライスヘッダに示すように、CTUを含んでいる。CTUは、スライスを構成する固定サイズ(例えば64x64)のブロックであり、最大符号化単位(LCU:Largest Coding Unit)と呼ぶこともある。
  (符号化ツリーユニット)
 図2の符号化ツリーユニットには、処理対象のCTUを復号するために動画像復号装置31が参照するデータの集合が規定されている。CTUは、再帰的な4分木分割(QT(Quad Tree)分割)、2分木分割(BT(Binary Tree)分割)あるいは3分木分割(TT(Ternary Tree)分割)により符号化処理の基本的な単位である符号化ユニットCUに分割される。BT分割とTT分割を合わせてマルチツリー分割(MT(Multi Tree)分割)と呼ぶ。再帰的な4分木分割により得られる木構造のノードのことを符号化ノード(Coding Node)と称する。4分木、2分木、及び3分木の中間ノードは、符号化ノードであり、CTU自身も最上位の符号化ノードとして規定される。
  (符号化ユニット)
 図2の符号化ユニットに示すように、処理対象の符号化ユニットを復号するために動画像復号装置31が参照するデータの集合が規定されている。具体的には、CUは、CUヘッダCUH、予測パラメータ、変換パラメータ、量子化変換係数等から構成される。CUヘッダでは予測モード等が規定される。
 予測処理は、CU単位で行われる場合と、CUをさらに分割したサブCU単位で行われる場合がある。CUとサブCUのサイズが等しい場合には、CU中のサブCUは1つである。CUがサブCUのサイズよりも大きい場合、CUは、サブCUに分割される。例えばCUが8x8、サブCUが4x4の場合、CUは水平2分割、垂直2分割からなる、4つのサブCUに分割される。
 予測の種類(予測モード)は、イントラ予測と、インター予測の2つがある。イントラ予測は、同一ピクチャ内の予測であり、インター予測は、互いに異なるピクチャ間(例えば、表示時刻間、レイヤ画像間)で行われる予測処理を指す。
 変換・量子化処理はCU単位で行われるが、量子化変換係数は4x4等のサブブロック単位でエントロピー符号化してもよい。
  (予測パラメータ)
 予測画像は、ブロックに付随する予測パラメータによって導出される。予測パラメータには、イントラ予測とインター予測の予測パラメータがある。
 以下、イントラ予測の予測パラメータについて説明する。イントラ予測パラメータは、輝度予測モードIntraPredModeY、色差予測モードIntraPredModeCから構成される。図3は、イントラ予測モードの種類(モード番号)を示す概略図である。図に示すように、イントラ予測モードは、例えば67種類(0~66)存在する。例えば、プレーナ予測(0)、DC予測(1)、Angular予測(2~66)である。この他、色成分間線形モデル(CCLM: Cross Component Linear Model)予測や、マルチモード線形モデル(MMLM: Multi Mode Linear Model)予測といったリニアモデル(LM: Linear Model)予測を用いてもよい。さらに、色差ではLMモードを追加してもよい。
  (動画像復号装置の構成)
 本実施形態に係る動画像復号装置31(図4)の構成について説明する。
 動画像復号装置31は、エントロピー復号部301、パラメータ復号部(予測画像復号装置)302、ループフィルタ305、参照ピクチャメモリ306、予測パラメータメモリ307、予測画像生成部(予測画像生成装置)308、逆量子化・逆変換部311、及び加算部312、予測パラメータ導出部320を含んで構成される。なお、後述の動画像符号化装置11に合わせ、動画像復号装置31にループフィルタ305が含まれない構成もある。
 パラメータ復号部302は、さらに、ヘッダ復号部3020、CT情報復号部3021、及びCU復号部3022(予測モード復号部)を備えており、CU復号部3022はさらにTU復号部3024を備えている。これらを総称して復号モジュールと呼んでもよい。ヘッダ復号部3020は、符号化データからVPS、SPS、PPS、APSなどのパラメータセット情報、スライスヘッダ(スライス情報)を復号する。CT情報復号部3021は、符号化データからCTを復号する。CU復号部3022は符号化データからCUを復号する。TU復号部3024は、TUに予測誤差が含まれている場合に、符号化データからQP更新情報(量子化補正値)と量子化予測誤差(residual_coding)を復号する。
 TU復号部3024は、スキップモード以外(skip_mode==0)の場合に、符号化データからQP更新情報と量子化予測誤差を復号する。より具体的には、TU復号部3024は、skip_mode==0の場合に、対象ブロックに量子化予測誤差が含まれているか否かを示すフラグcu_cbpを復号し、cu_cbpが1の場合に量子化予測誤差を復号する。cu_cbpが符号化データに存在しない場合は0と導出する。
 予測画像生成部308は、インター予測画像生成部309及びイントラ予測画像生成部310を含んで構成される。
 予測パラメータ導出部320は、インター予測パラメータ導出部303及びイントラ予測パラメータ導出部304を含んで構成される。
 また、以降では処理の単位としてCTU、CUを使用した例を記載するが、この例に限らず、サブCU単位で処理をしてもよい。あるいはCTU、CUをブロック、サブCUをサブブロックと読み替え、ブロックあるいはサブブロック単位の処理としてもよい。
 エントロピー復号部301は、外部から入力された符号化ストリームTeに対してエントロピー復号を行って、個々の符号(シンタックス要素)を復号する。エントロピー符号化には、シンタックス要素の種類や周囲の状況に応じて適応的に選択したコンテキスト(確率モデル)を用いてシンタックス要素を可変長符号化する方式CABAC(Context Adaptive Binary Arithmetic Coding)と、あらかじめ定められた表、あるいは計算式を用いてシンタックス要素を可変長符号化する方式がある。エントロピー復号部301は、セグメント(タイル、CTU行、スライス)の先頭で全てのCABAC状態を初期化する。エントロピー復号部301は、シンタックス要素をバイナリ列(Bin String)に変換し、Bin Stringの各ビットを復号する。コンテキストを用いる場合には、シンタックス要素の各ビットに対してコンテキストインデックスctxIncを導出し、コンテキストを用いてビットを復号し、用いたコンテキストのCABAC状態を更新する。コンテキストを用いないビットは、等確率(EP, bypass)で復号され、ctxInc導出やCABAC状態は省略される。
 エントロピー復号部301は、復号した符号をパラメータ復号部302に出力する。どの符号を復号するかの制御は、パラメータ復号部302の指示に基づいて行われる。
 (イントラ予測パラメータ導出部304の構成)
 イントラ予測パラメータ導出部304は、エントロピー復号部301から入力された符号に基づいて、予測パラメータメモリ307に記憶された予測パラメータを参照してイントラ予測パラメータ、例えば、イントラ予測モードIntraPredModeを復号する。イントラ予測パラメータ導出部304は、復号したイントラ予測パラメータを予測画像生成部308に出力し、また予測パラメータメモリ307に記憶する。イントラ予測パラメータ導出部304は、輝度と色差で異なるイントラ予測モードを導出してもよい。
 ループフィルタ305は、符号化ループ内に設けたフィルタで、ブロック歪やリンギング歪を除去し、画質を改善するフィルタである。ループフィルタ305は、加算部312が生成したCUの復号画像に対し、デブロッキングフィルタ、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)等のフィルタを施す。
 参照ピクチャメモリ306は、加算部312が生成したCUの復号画像を、対象ピクチャ及び対象CU毎に予め定めた位置に記憶する。
 予測パラメータメモリ307は、復号対象のCTUあるいはCU毎に予め定めた位置に予測パラメータを記憶する。具体的には、予測パラメータメモリ307は、パラメータ復号部302が復号したパラメータ及びエントロピー復号部301が分離した予測モードpredMode等を記憶する。
 予測画像生成部308には、予測モードpredMode、予測パラメータ等が入力される。また、予測画像生成部308は、参照ピクチャメモリ306から参照ピクチャを読み出す。予測画像生成部308は、予測モードpredModeが示す予測モードで、予測パラメータと読み出した参照ピクチャ(参照ピクチャブロック)を用いてブロックもしくはサブブロックの予測画像を生成する。ここで、参照ピクチャブロックとは、参照ピクチャ上の画素の集合(通常矩形であるのでブロックと呼ぶ)であり、予測画像を生成するために参照する領域である。
  (イントラ予測画像生成部310)
 予測モードpredModeがイントラ予測モードを示す場合、イントラ予測画像生成部310は、イントラ予測パラメータ導出部304から入力されたイントラ予測パラメータと参照ピクチャメモリ306から読み出した参照画素を用いてイントラ予測を行う。
 具体的には、イントラ予測画像生成部310は、対象ピクチャ上の、対象ブロックから予め定めた範囲にある隣接ブロックを参照ピクチャメモリ306から読み出す。予め定めた範囲とは、対象ブロックの左、左上、上、右上の隣接ブロックであり、イントラ予測モードによって参照する領域は異なる。
 イントラ予測画像生成部310は、読み出した復号画素値とIntraPredModeが示す予測モードを参照して、対象ブロックの予測画像を生成する。イントラ予測画像生成部310は生成したブロックの予測画像を加算部312に出力する。
 イントラ予測モードに基づく予測画像の生成について以下で説明する。Planar予測、DC予測、Angular予測では、予測対象ブロックに隣接(近接)する復号済みの周辺領域を参照領域Rとして設定する。そして、参照領域R上の画素を特定の方向に外挿することで予測画像を生成する。例えば、参照領域Rは、予測対象ブロックの左と上(あるいは、さらに、左上、右上、左下)を含むL字型の領域として設定してもよい。
  (予測画像生成部の詳細)
 次に、図5を用いてイントラ予測画像生成部310の構成の詳細を説明する。イントラ予測画像生成部310は、参照サンプルフィルタ部3103(第2の参照画像設定部)、予測部3104、および、予測画像補正部3105(予測画像補正部、フィルタ切替部、重み係数変更部)を備える。
 予測部3104は、参照領域R上の各参照画素(参照画像)、参照画素フィルタ(第1のフィルタ)を適用して生成したフィルタ済参照画像、イントラ予測モードに基づいて、予測対象ブロックの予測画像(補正前予測画像)を生成し、予測画像補正部3105に出力する。予測画像補正部3105は、イントラ予測モードに応じて予測画像を修正し、予測画像(補正済予測画像)を生成し、出力する。
 以下、イントラ予測画像生成部310が備える各部について説明する。
  (参照サンプルフィルタ部3103)
 参照サンプルフィルタ部3103は、参照画像を参照して参照領域R上の各位置(x,y)の参照サンプルrecSamples[x][y]を導出する。また、参照サンプルフィルタ部3103は、イントラ予測モードに応じて、参照サンプルrecSamples[x][y]に参照画素フィルタ(第1のフィルタ)を適用して、参照領域R上の各位置(x,y)の参照サンプルrecSamples[x][y]を更新する(フィルタ済参照画像recSamples[x][y]を導出する)。具体的には、位置(x,y)とその周辺の参照画像にローパスフィルタを適用し、フィルタ済参照画像を導出する。なお、必ずしも全イントラ予測モードにローパスフィルタを適用する必要はなく、一部のイントラ予測モードに対してローパスフィルタを適用してもよい。なお、参照サンプルフィルタ部3103において参照領域R上の参照画像に適用するフィルタを「参照画素フィルタ(第1のフィルタ)」と呼称するのに対し、後述の予測画像補正部3105において予測画像を補正するフィルタを「ポジション依存フィルタ(第2のフィルタ)」と呼称する。
  (予測部3104の構成)
 予測部3104は、イントラ予測モードと、参照画像、フィルタ済参照画素値に基づいて予測対象ブロックの予測画像を生成し、予測画像補正部3105に出力する。予測部3104は、内部にPlanar予測部31041、DC予測部31042、Angular予測部31043、LM予測部31044、MIP(Matrix-based Intra Prediction)部31045、TIMD予測部31047(Template-based Intra Mode Derivation, TIMD)を備えている。予測部3104は、イントラ予測モードに応じて特定の予測部を選択して、参照画像、フィルタ済参照画像を入力する。イントラ予測モードと対応する予測部との関係は次の通りである。
・Planar予測 ・・・・Planar予測部31041
・DC予測   ・・・・DC予測部31042
・Angular予測 ・・・・Angular予測部31043
・LM予測   ・・・・LM予測部31044
・行列イントラ予測・・MIP部31045
・TIMD予測・・・・・・TIMD予測部31047
  (Planar予測)
 Planar予測部31041は、予測対象画素位置と参照画素位置との距離に応じて参照サンプルrecSamples[x][y]を線形加算して予測画像を生成し、予測画像補正部3105に出力する。
  (DC予測)
 DC予測部31042は、参照サンプルrecSamples[x][y]の平均値に相当するDC予測値を導出し、DC予測値を画素値とする予測画像predSamples[x][y]を出力する。
  (Angular予測)
 Angular予測部31043は、イントラ予測モードの示す予測方向(参照方向)の参照サンプルrecSamples[x][y]を用いて予測画像predSamples[x][y]を生成し、予測画像補正部3105に出力する。
IntraPredMode >= DIRの場合、以下の処理を行う。
 ref[x] = recSamples[-1-refIdx+x][-1-refIdx] (x=0..cbWidth+refIdx+1)
 さらにx=0..cbWidth-1,y = 0..cbHeight-1に対して以下を行う
 iIdx = (((y+1+refIdx) * intraPredAngle) >> 5) + refIdx
 iFact = ((y + 1 + refIdx) * intraPredAngle) & 31
 predSamples[x][y] = Clip1(((Σ(fT[i]*ref[x+iIdx+i])) + 32) >> 6)
それ以外の場合(IntraPredMode < DIR)、以下の処理を行う。
 ref[x] = recSamples[-1-refIdx][-1-refIdx+x] (x=0..cbHeight+refIdx+1)
 さらにx=0..cbWidth-1,y = 0..cbHeight-1に対して以下を行う。
 iIdx = (((x+1+refIdx) * intraPredAngle) >> 5) + refIdx
 iFact = ((x+1+refIdx) * intraPredAngle) & 31
 predSamples[x][y] = Clip1(((Σ(fT[i]*ref[y+iIdx+i])) + 32) >> 6)
DIR, refIdxは所定の定数、例えばDIR=34, 66など。refIdx=0, 1, 2など。angular予測の場合、refIdxは、符号化データのシンタックスを復号して設定してもよい。
また、後述のTIMD予測の予測画像生成の場合にはrefIdx=0と固定としてもよい。またテンプレート予測画像の生成に用いる場合には、refIdx=2もしくは4を用いてもよい。
  (LM予測)
 LM予測部31044は、輝度の画素値に基づいて色差の画素値を予測する。具体的には、復号した輝度画像をもとに、線形モデルを用いて、色差画像(Cb、Cr)の予測画像を生成する方式である。LM予測の1つとして、CCLM(Cross-Component Linear Model)予測がある。CCLM予測は、1つのブロックに対し、輝度から色差を予測するための線形モデルを使用する予測方式である。
  (行列イントラ予測)
 MIP部31045は、隣接領域から導出した参照サンプルrecSamples[x][y]と重み行列の積和演算により予測画像predSamples[x][y]を生成し、予測画像補正部3105に出力する。
  (予測画像補正部3105の構成)
 予測画像補正部3105は、イントラ予測モードに応じて、予測部3104から出力された予測画像を修正する。具体的には、予測画像補正部3105は、予測画像の各画素に対し、参照領域Rと対象予測画素の位置に応じて、ポジションに依存した重み係数を導出する。そして、参照サンプルrecSamples[][]と予測画像predSamples[x][y]を重み付け加算(加重平均)することで、修正した予測画像(補正済予測画像)Pred[][]を導出する。なお、一部のイントラ予測モードでは、予測画像補正部3105で予測画像predSamples[x][y]を補正せずPredにセットしてもよい。
 (MPMの導出方法)
 イントラ予測パラメータ導出部304は、以下のようにMost Probable Mode(MPM)リストcandModeListを導出する。対象ブロックの左上座標を(x0,y0)、ブロック幅をcbWidth、ブロック高さをcbHeightとする。
 イントラ予測パラメータ導出部304は、対象ブロックの左に隣接するブロックAのintraPredModeをintraPredModeA、上に隣接するブロックBのintraPredModeをintraPredModeBとして、以下で導出してもよい。ブロックA(以下A)は座標(x0-1, y0+cbHeight-1)を含むブロックである。ブロックB(以下B)は座標(x0+cbWidth-1, y0-1)を含むブロックである。
 candModePredModeA = (Aが利用可能ではない || AがMODE_INTRA以外) ? INTRA_PLANAR: intraPredModeA
 candModePredModeB = (Bが利用可能ではない || BがMODE_INTRA以外 || Bの位置が対象ブロックの上側CTU境界より上) ? INTRA_PLANAR : intraPredModeB
なお、CTU境界より上は、y0-1 < ((y0>>CtbLog2SizeY)<<CtbLog2SizeY)が真か否かで判定できる。ここでCtbLog2SizeY=Log2(CTUサイズ)である。CTUサイズは、符号化データ中のシンタックス要素sps_log2_ctu_size_minus5を復号してCtbLog2SizeY=sps_log2_ctu_size_minus5+5で導出してもよい。candModeList[]はcandModePredModeAとcandModePredModeBから、以下のように導出してもよい。
 candModeList[0] = candIntraPredModeA
 candModeList[1] = candIntraPredModeB
 minAB = Min(candIntraPredModeA, candIntraPredModeB)
 candModeList[2] = 2 + ((minAB + 61) % 64)
 candModeList[3] = 2 + ((minAB - 1) % 64)
 candModeList[4] = 2 + ((minAB + 60) % 64
  (TIMD予測)
 TIMD予測は、明示的にシグナルされないイントラ予測モードを用いて予測画像を生成する予測方式である。TIMD予測部31047は、対象ブロックの隣接領域であるテンプレート領域RTの画像(テンプレート画像tempSamples)の予測に適したイントラ予測モードを導出する。具体的には、テンプレート領域の付近の参照領域(テンプレート参照領域)RTRSの画像を用いて、複数のイントラ予測モード候補に対する、テンプレート領域RTの予測画像tpredSamples(テンプレート予測画像)を生成する。そして、tempSamplesとtpredSamplesのコスト(例えば差分絶対値和)が最小となるtpredSamplesの導出に用いたイントラ予測モード候補を、対象ブロックのTIMDのイントラ予測モードとして選択する。TIMD予測部31047はこのTIMDのイントラ予測モードを用いて予測画像predSamplesを生成する。
  (実施例1)
 図8(a)は、TIMDに関する符号化データのシンタックス例を示している。パラメータ復号部302は、符号化データからブロック毎にTIMDを用いるかどうかを示すフラグtimd_flagを復号する。ブロックは、CU、TU、サブブロック等であってもよい。対象ブロックのtimd_flagが0の場合、パラメータ復号部302は、イントラ予測モードに関するシンタックス要素intra_luma_mpm_flagを復号し、intra_luma_mpm_flagが0の場合、さらにintra_luma_mpm_reminderを復号する。intra_luma_mpm_flagが1の場合、intra_luma_mpm_idxを復号する。これらのシンタックス要素は図示しない。intra_luma_mpm_flagはイントラ予測候補リストcandModeList[]からイントラ予測モードを導出するか否かを示すフラグである。intra_luma_mpm_idxはcandModeList[]を利用する場合にイントラ予測候補を指定するインデックスである。intra_luma_mpm_reminderはcandModeList[]を利用しない場合、candModeList[]に含まれないイントラ予測候補を選択するインデックスである。対象ブロックのtimd_flagが1の場合、パラメータ復号部302は、イントラ予測モードに関するシンタックス要素(intra_luma_mpm_flag、intra_luma_mpm_idx、intra_luma_mpm_reminder)を符号化データから復号しなくてもよい。
 パラメータ復号部302は、さらに対象ブロックのtimd_ref_modeを復号する。timd_ref_modeは、TIMD予測でのイントラ予測モード導出に用いるテンプレート参照領域の位置を示す。timd_ref_modeの意味は以下であってもよい。
 timd_ref_mode = 0 TIMD_MODE_TOP_LEFT(対象ブロックの上側と左側を使う)
 timd_ref_mode = 2 TIMD_MODE_LEFT(対象ブロックの左側を使う)
 timd_ref_mode = 3 TIMD_MODE_TOP(対象ブロックの上側を使う
 (参照領域の選択)
 図6は、TIMD予測で参照するテンプレート領域RTとテンプレート参照領域(テンプレート参照サンプル領域)RTRSを示す。テンプレート領域はテンプレート画像に対応する領域である。テンプレート参照領域RTRSはテンプレート画像の予測画像であるテンプレート予測画像を生成する時に参照する領域である。
 timd_flagが1の場合、TIMD予測部31047は、対象ブロック付近のテンプレート参照領域RTRSの画像を用いて、イントラ予測モード候補に対するテンプレート予測画像を生成し、対象ブロックの好適なイントラ予測モードを選択する。
 エントロピー復号部301は、例えば、図8のシンタックス表に示すシンタックス要素timd_ref_modeを以下のようにパースしてもよい。timd_ref_modeはTIMDのテンプレート領域を選択するシンタックス要素である。
 エントロピー復号部301は、timd_flagが1の場合、符号化データからtimd_ref_modeをパースする(syn1)。TIMDのテンプレート領域の位置を変更する構成において、timd_ref_modeは、TIMD_MODE_TOP_LEFTモード、TIMD_MODE_TOPモード、TIMD_MODE_LEFTのいずれかであり各々0、1、2であってもよい。TIMD_MODE_TOP_LEFTは対象ブロックの上側と左側の領域をテンプレート領域として用いる。TIMD_MODE_TOPモードは対象ブロックの上側の領域をテンプレート領域として用いる。TIMD_MODE_LEFTは対象ブロックの左側の領域をテンプレート領域として用いる。
 図9(a)はtimd_ref_modeのバイナリゼーションの例を示す図である。binIdxはシンタックス要素中のビットの位置を示す変数、Bin0(binIdx==0)、Bin1(binIdx==1)は先頭ビットと次のビットを指す。
 Bin0:TIMD_MODE_TOP_LEFTとそれ以外を選択するビット。0の場合、TIMD_MODE_TOP_LEFTであることを示し、1の場合、TIMD_MODE_TOP_LEFTモードでないことを示す。
 Bin1:TIMD_MODE_TOPとTIMD_MODE_LEFTを選択するビット。0の場合、TIMD_MODE_TOPであることを示し、1の場合、TIMD_MODE_LEFTであることを示す。なお、Bin0、Bin1で一つのシンタックス要素を構成するのではなく、Bin0、Bin1に別々のシンタックス要素を割り当て、timd_ref_modeの代わりに2つのシンタックス要素をパースしてもよい。例えば、Bin0に割り当てられたシンタックス要素をtimd_mode_flag、Bin1に割り当てられたシンタックス要素をtimd_mode_dirと呼んでもよい。この場合、エントロピー復号部301は、timd_mode_flag、timd_mode_dirからtimd_ref_modeを以下の式で導出してもよい。timd_mode_flag==0の場合、timd_mode_dirを復号せず、0に設定する。
 timd_ref_mode = ((timd_mode_flag == 0) ? 0 : 1) + timd_mode_dir
あるいは以下であってもよい。
 timd_ref_mode = timd_mode_flag + timd_mode_dir
 この例では、TIMD_MODE_TOP_LEFTに1bit(例えば"0")、TIMD_MODE_TOPとTIMD_MODE_LEFTでは1bit(例えば"1")の次にさらにTIMD_MODE_TOPとTIMD_MODE_LEFTを区別するための1bit(例えば"0"はTIMD_MODE_TOPで"1"はTIMD_MODE_LEFTを示す)を割り当てる。timd_ref_modeのバイナリゼーションにおいて、選択率の高いTIMD_MODE_TOP_LEFTを使う場合、TIMD_MODE_LEFTを使う場合とTIMD_MODE_TOPを使う場合よりも短いビットを割り当てることにより平均符号量を短くして符号化効率を向上させる効果を奏する。
 図9(b)~(f)はパースにおけるtimd_ref_modeのコンテキスト(ctxInc)の設定を示す図である。コンテキストとは、CABACの確率(状態)を保持するための変数領域であり、コンテキストインデックスctxIdxの値(0, 1, 2, …)によって識別される。また常に0と1が等確率、つまり0.5, 0.5の場合をEP(Equal Probability)もしくはbypassと呼ぶ。この場合、特定のシンタックス要素に対して状態を保持する必要がないのでコンテキストを用いない。ctxIdxはctxIncを参照して導出される。
 図9(b)に示すように、エントロピー復号部301は、先頭のBin0の復号に対してコンテキストを用い(ctxInc=0)、Bin1に対してbypassを用いてtimd_ref_modeをパースしてもよい。Bin0はTIMD_MODE_TOP_LEFTか否かを示すビット、Bin1はTIMD_MODE_LEFTかTIMD_MODE_TOPか否かを示すビットである。上記構成によれば、TIMD_MODE_LEFTとTIMD_MODE_TOPとの選択にコンテキストを用いないため、メモリを低減できる効果を奏する。
 図9(c)に示すように、エントロピー復号部301は、先頭のBin0の復号に対してコンテキストを用い(ctxInc=0)、Bin1に対して別のコンテキスト(ctxInc=1)を用いて、符号化データからtimd_ref_modeをパースしてもよい。上記構成によれば、全ての方向に対してコンテキストを用いるために適応的に符号化することが可能であり、性能が向上する効果を奏する。
 図9(d)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して複数のコンテキスト(ctxInc=1,2,3)を用い、符号化データからtimd_ref_modeをパースしてもよい。例えば以下のように対象ブロックの幅cbWidthと高さcbHeightが等しい場合、横長の場合、縦長の場合に異なるコンテキストの値を割り当ててもよい。
 ctxInc = (cbWidth == cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : 3
なお式および値は上記に限定されず、判定の順序や値を変更してもよい。例えば以下であってもよい。
 ctxIdx = (cbWidth > cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : 3
 上記構成によれば、ブロックの形状によって、例えば横長と縦長で、異なるコンテキストを用いるために適応的に符号化することが可能であり、性能が向上する効果を奏する。
 図9(e)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して図9(d)とは異なるコンテキスト(ctxInc=1,2)を用いて符号化データからtimd_ref_modeをパースしてもよい。ブロックの形状が正方形の場合にはbypassを用いて、timd_ref_modeをパースしてもよい。
 ctxIdx = (cbWidth == cbHeight) ? bypass : (cbWidth < cbHeight) ? 1 : 2
なお式および値は上記に限定されず、判定の順序や値を変更してもよい。例えば以下であってもよい。
 ctxIdx = (cbWidth > cbHeight) ? 1 : (cbWidth < cbHeight) ? 2 : bypass
 TIMDモード(timd_ref_mode)は、第1ビットと第2ビットから構成され、第1ビットはTIMDのテンプレート領域が対象ブロックの上側と左側の双方かどうか、第2ビットはTIMDのテンプレート領域が対象ブロックの左側もしくは上側かどうかを選択してもよい。
 図9(f)に示すように、エントロピー復号部301は、対象ブロックの形状に応じて、Bin1に対して図9(d)、(e)と異なるコンテキスト(ctxInc=1,2)を用い、符号化データからtimd_ref_modeをパースしてもよい。ブロックの形状が正方形の場合には所定のコンテキスト(例えば1)、それ以外の場合にブロック形状が正方形の場合とは異なるコンテキスト(例えば2)を用いて、timd_ref_modeをパースしてもよい。
 ctxIdx = (cbWidth == cbHeight) ? 1 : 2
 このとき、ブロック形状が正方形ではない場合には、cbWidth>cbHeightであるのか、cbHeight<cbWidthに応じて、Bin1のバイナリの値をスワップ(1を0に、0を1にする。たとえば1-Bin1)した値を使いtimd_ref_modeを復号する。つまり以下のようにtimd_ref_modeを導出してもよい。
 timd_ref_mode = ((Bin0 == 0) ? 0 : 1) + ((cbWidth == cbHeight) ? Bin1 : 1-Bin1)
上述の2つのシンタックスを用いる場合には以下のようにtimd_ref_modeを導出する。
 timd_ref_mode = ((timd_mode_flag == 0) ? 0 : 1) + ((cbWidth == cbHeight) ? timd_mode_dir : 1-timd_mode_dir)
なお、上述のcbWidth==cbHeightは、cbWidth!=cbHeightとしてもよい。
 上記構成によれば、対象ブロックの形状によって、例えば対象ブロックが正方形か否か(もしくは/かつ横長か縦長か)で異なるコンテキストを用いるため、ブロックの特徴に合わせて適応的に短い符号で符号化することが可能であり、性能が向上する。また例えば正方形の場合、同時にコンテキストを用いない場合はメモリを低減する効果を奏する。
 なお、エントロピー復号部301は、テンプレート領域の左参照位置(x0-refIdxW-1, y0)、上参照位置(x0, y0-refIdxH-1)が画面端、タイルの端、スライスの端などテンプレート領域が利用できない場合、timd_ref_modeの復号を省略し、timd_ref_mode=TIMD_MODE_TOP、あるいは、timd_ref_mode=TIMD_MODE_LEFTと設定してもよい。なおx0, y0は対象ブロックの左上位置、refIdxW, refIdxHはテンプレート予測領域のライン数(幅または高さ)に係る変数である。refIdxW, refIdxHは図8(c)に示すようにintra_luma_ref_idxを用いて設定してもよい。intra_luma_ref_idxは参照サンプルの位置を示すシンタックスであり、パラメータ復号部302が符号化データから復号する。
 refIdxW = refIdxH = intra_luma_ref_idx
 別の構成として、対象ブロックの上側隣接領域のみがテンプレート領域として利用できる場合はtimd_ref_mode=TIMD_MODE_TOPとし、対象ブロックの左側隣接領域のみがテンプレート領域として利用できる場合はtimd_ref_mode=TIMD_MODE_LEFTと設定してもよい。
 (timd_ref_modeの復号判定条件1)
 エントロピー復号部301は、timd_ref_modeを図8(b)に示す条件を満たす場合に復号してもよい。timd_ref_modeはTIMDのテンプレート領域を選択するシンタックス要素である。対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE以上の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZEは、例えば16,32,64などを使用してもよい。
 if (cbWidth * cbHeight >= THSIZE) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE4以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE4より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE4は、例えば128,256,512などを使用してもよい。
 if (cbWidth * cbHeight <= THSIZE4) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 さらに、これらの条件を組み合わせた例としては、対象ブロックの幅cbWidthと高さcbHeightの積が所定の閾値THSIZE以上かつTHSIZE4以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの積がTHSIZE未満またはTHSIZE4より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
 if (cbWidth * cbHeight >= THSIZE && cbWidth * cbHeight <= THSIZE4)
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 (timd_ref_modeの復号判定条件2)
 上記の構成の代わりに以下でもよい。エントロピー復号部301は、cbWidthとcbHeightの和が所定の閾値THSIZE2以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE2未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE2は、例えば8,12,16などを使用してもよい。
 if (cbWidth + cbHeight >= THSIZE2) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightの和が所定の閾値THSIZE5以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE5より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE5は、例えば48,64,96などを使用してもよい。
 if (cbWidth + cbHeight <= THSIZE5) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 さらに、これらの条件を組み合わせた例としては、対象ブロックの幅cbWidthと高さcbHeightの和が所定の閾値THSIZE2以上かつTHSIZE5以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightの和がTHSIZE2未満またはTHSIZE5より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
 if (cbWidth + cbHeight >= THSIZE2 && cbWidth + cbHeight <= THSIZE5)
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 (timd_ref_modeの復号判定条件3)
 以下のように対象ブロックの幅と高さの対数値をもとに条件判定してもよい。エントロピー復号部301は、Log2(cbWidth)とlog2(cbHeight)の和が所定の閾値THSIZE3以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(log2(cbWidth)とlog2(cbHeight)の和がTHSIZE3未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE3は、例えば4,5,6などを使用してもよい。
 if (log2(cbWidth) + log2(cbHeight) >= THSIZE3) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 上記と異なる条件式の例としては、Log2(cbWidth)とLog2(cbHeight)の和が所定の閾値THSIZE6以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(Log2(cbWidth)とLog2(cbHeight)の和がTHSIZE6より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE6は、例えば7,8,9などを使用してもよい。
 if (log2(cbWidth) + log2(cbHeight) <= THSIZE6) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 さらに、これらの条件を組み合わせた例としては、Log2(cbWidth)とLog2(cbHeight)の和が所定の閾値THSIZE3以上かつTHSIZE6以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(Log2(cbWidth)とLog2(cbHeight)の和がTHSIZE3未満またはTHSIZE6より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。
 if (log2(cbWidth) + log2(cbHeight) >= THSIZE3 && log2(cbWidth) + log2(cbHeight) <= THSIZE6)
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 (timd_ref_modeの復号判定条件4)
 以下のように対象ブロックの幅と高さをもとに条件判定してもよい。エントロピー復号部301は、cbWidthとcbHeightがともに所定の閾値THSIZE7以上の場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightのいずれかがTHSIZE7未満の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE7は、例えば8,16,32などを使用してもよい。
 if (cbWidth >= THSIZE7 && cbHeight >= THSIZE7) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 上記と異なる条件式の例としては、対象ブロックの幅cbWidthと高さcbHeightがともに所定の閾値THSIZE8以下の場合に、エントロピー復号部301はtimd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(cbWidthとcbHeightのいずれかがTHSIZE8より大きい場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE8は、例えば32,48,64などを使用してもよい。
 if (cbWidth <= THSIZE8 && cbHeight <= THSIZE8) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 さらに、これらの条件を組み合わせた例としては、cbWidthとcbHeightがともに所定の閾値THSIZE7以上かつTHSIZE8以下の場合に、エントロピー復号部301はtimd_ref_modeを復号するようにしてもよい。例えばこの処理は以下のように表してもよい。
 if (cbWidth >= THSIZE7 && cbWidth <= THSIZE8 && cbHeight >= THSIZE7 && cbHeight <= THSIZE8)
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 (timd_ref_modeの復号判定条件5)
 以下のように対象ブロックの座標をもとに条件判定してもよい。エントロピー復号部301は、対象ブロックの左上座標x0とy0がともに所定の閾値THSIZE9より大きい場合に、timd_ref_modeを復号する。そうではなくtimd_ref_modeが現れない場合(x0とy0のいずれかがTHSIZE8以下の場合)、エントロピー復号部301はtimd_ref_modeをTIMD_MODE_TOP_LEFTと推定する。例えばこの処理は以下のように表してもよい。THSIZE9は、例えば4,8,16などを使用してもよい。 
 if (x0 > THSIZE9 && y0 > THSIZE9) 
  timd_ref_modeを復号
 otherwise timd_ref_mode=TIMD_MODE_TOP_LEFT
 つまり、画面(またはセグメント)の境界に近い場合には、十分な参照領域が得られないので、TIMDの導出方法を選択するtimd_ref_modeの復号を行わず、TIMD_MODE_TOP_LEFTを設定して固定的に処理をしてもよい。なお、(x0, y0)を画面内座標ではなく、セグメント(画面、スライス、タイル)内座標とし、セグメント境界からの距離で判定をしてもよい。
 以上のように、1つ以上の閾値を用いて長さや面積、または座標を制限することで、条件に該当する対象ブロックにおけるテンプレートベースイントラ予測の処理を低減することができ、処理速度を高速化する効果を奏する。
 (イントラサブブロックパーティショニングと併用する構成例)
 動画像復号装置31がイントラサブブロックパーティショニング(Intra subblock partitioning, ISP)に対応している場合の、別の構成例を示す。
 パラメータ復号部302は、TIMDに関するシンタックス要素(timd_flag, timd_ref_mode)を復号した後で、対象ブロック毎にISPを適用するかどうかを示すフラグisp_mode_flagを符号化データから復号する。対象ブロックのisp_mode_flagが0の場合、パラメータ復号部302は、ISPに関するシンタックス要素(isp_mode_dir、ISPモード方向情報)を符号化データから復号しなくてもよい。そしてisp_mode_flag=0に設定する。対象ブロックのisp_mode_flagが1の場合、パラメータ復号部302は、図16(a)のシンタックス例に示すように、timd_mode==0またはtimd_ref_mode==0の場合にのみ、ISPに関するシンタックス要素isp_mode_dirを復号する。isp_mode_dirは、ISP使用時のブロック分割の方向(境界線の向き)を示す。isp_mode_dirの意味は以下であってもよい。
 isp_mode_dir = 0 HOR_INTRA_PARTITIONS(水平分割)
 isp_mode_dir = 1 VER_INTRA_PARTITIONS(垂直分割)
それ以外の場合、timd_mode==1かつtimd_ref_mode==1(TIMD_MODE_TOP)であればisp_mode_dir=0(HOR_INTRA_PARTITIONS、水平分割)とし、timd_mode==1かつtimd_ref_mode==2(TIMD_MODE_LEFT)であればtimd_mode_dir = 1(VER_INTRA_PARTITIONS、垂直分割)とする。すなわち、TIMD_MODE_TOPとTIMD_MODE_LEFTに対して選択可能なISP分割方向を、それぞれ、水平分割と垂直分割に限定してもよい。
 対象ブロックをISPで水平分割すれば、各サブブロック内の領域を、TIMD_MODE_TOPでテンプレート領域として用いることができる。これらの領域はISP分割をしない場合の対象ブロックの上側隣接領域とは異なるため、より精度の高い予測画像導出につながる可能性がある。一方、ISPの水平分割に対してTIMD_MODE_LEFTで用いられるテンプレート領域は、ISPを使わない場合の左隣接領域と同じであり、予測画像もISPを使わない場合と異なる可能性が低い、すなわち選択肢として冗長である。従って、timd_ref_modeの値に従ってisp_mode_dirを限定することにより符号化効率向上の効果を奏する。ISPの垂直分割についても同様のことが言える。
 エントロピー復号部301は、isp_mode_flagが1の場合、timd_modeが0またはtimd_ref_modeが0であれば、符号化データからisp_mode_dirをパースする。isp_mode_flagが1であっても、timd_mode!=0かつtimd_ref_mode==1の場合はisp_mode_dirをパースせずisp_mode_dir=0と推定する。timd_mode!=0かつtimd_ref_mode==2の場合はisp_mode_dirをパースせずisp_mode_dir=1と推定する。
 ISPを用いる構成において、isp_mode_dirは水平分割を示すHOR_INTRA_PARTIOTIONSまたは垂直分割を示すVER_INTRA_PARTITIONSのいずれかであり各々0,1であってもよい。シンタックス要素isp_mode_flagとisp_mode_dirをまとめて、一つのシンタックス要素isp_modeとしてもよい。isp_modeの値は、以下であってもよい。
 isp_mode = 0 ISPを用いない(ISP_NO_SPLIT)
 isp_mode = 1 ISPを用いる(水平分割、ISP_HOR_SPLIT)
 isp_mode = 2 ISPを用いる(垂直分割、ISP_VER_SPLIT)
一つのシンタックス要素isp_modeとして扱う場合には、isp_modeのBin0(binIdx=0)がisp_mode_flagに相当し、Bin0が1(ISPを用いる)の場合にのみBin1(binIdx=1)がisp_mode_dirに相当する。エントロピー復号部301は、isp_mode_flagおよびisp_mode_dirからisp_modeを以下の式で導出してもよい。
 isp_mode = ((isp_mode_flag == 0) ? 0 : 1) + isp_mode_dir
 isp_mode = isp_mode_flag + isp_mode_dir なお、水平ISPおよび垂直ISPが指定された場合、イントラ予測画像生成部310は、対象ブロックをそれぞれ水平または垂直方向の境界によりサブブロックに分割(例えば4分割)し、対象ブロック内で共通のイントラ予測パラメータを用いて順に各サブブロックの予測画像を導出する。
 具体的には、isp_modeが0(ISP_NO_SPLIT)の場合、CUをこれ以上分割せずにイントラ予測を行う。isp_modeが1(ISP_HOR_SPLIT)の場合、CUを垂直方向に2から4つのサブブロックに分割して、サブブロック単位でイントラ予測と変換係数復号、逆量子化・逆変換を行う。isp_modeが2(ISP_VER_SPLIT)の場合、CUを水平方向に2から4つのサブブロックに分割して、サブブロック単位でイントラ予測と変換係数復号、逆量子化・逆変換を行う。サブブロックの分割数NumIntraSubPartは以下の式で導出する。
 NumIntraSubPart = (nTbW == 4 && nTbH == 8) || (nTbW == 8 && nTbH == 4) ? 2 : 4 サブブロックの幅nWと高さnHと、水平方向、垂直方向の分割数numPartsX, numPartYは以下で導出する。
 nW = (isp_mode == ISP_VER_SPLIT) ? nTbW / NumIntraSubPart : nTbW
 nH = (isp_mode == ISP_HOR_SPLIT) ? nTbH / NumIntraSubPart : nTbH
 numPartsX = (isp_mode == ISP_VER_SPLIT) ? NumIntraSubPart : 1
 numPartsY = (isp_mode == ISP_HOR_SPLIT) ? NumIntraSubPart : 1
 ここでnTbW, nTbHはCU(あるいはTU)の幅と高さである。
 パラメータ復号部302は、エントロピー復号部301にどのシンタックス要素をパースするかを通知する。また、エントロピー復号部301がパースしたシンタックス要素を予測パラメータ導出部320に出力する。
 上記の構成(条件1、条件2、条件3)によれば、テンプレート領域が小さい小ブロックにおいて、TIMD_MODE_TOP_LEFTを用いることにより、コスト計算に使用する画素数を多くして、予測精度を向上させることができる。また小ブロックではtimd_ref_modeを符号化しないので、符号化データのビット量を削減することもできる。
 上記構成により、適切なテンプレート領域をシグナルすることにより、予測効率が高まり、符号化効率を向上させることができる。また、不適切なテンプレート予測画像の生成、コスト計算を省略することができるため、計算量を削減することができる。
 図7は、本実施形態におけるTIMD予測部31047の構成を示している。TIMD予測部31047は、参照サンプル導出部4701、テンプレート導出部4702、イントラ予測部4703、イントラ予測モード候補導出部4711、テンプレート予測画像生成部4712、テンプレートコスト導出部4713と、イントラ予測モード選択部4714から構成される。なお、イントラ予測モード候補導出部4711、テンプレート予測画像生成部4712、テンプレートコスト導出部4713を総称してテンプレートイントラ予測モード導出装置4710と呼んでもよい。
 timd_flagが1の場合、TIMD予測部31047は、テンプレート領域RTの画像から生成されたテンプレート画像tempSamplesを精度よく予測するイントラ予測モードを用いてテンプレート予測画像tpredSamplesを生成する。具体的には、TIMD予測部31047は以下の手順を実行する。
 (STEP1)所定の予測モード(イントラ予測候補)とテンプレート参照領域RTRSを用いて予測画像tpredSamplesを導出する。所定の予測モードは、MPMに含まれるAngular予測モード、planar予測モード、DC予測モード、デコード側イントラモード導出(DIMD、Decoder-side Intra Mode Derivation)により導出されたイントラ予測モードを含んでもよい。
  (STEP1-1)所定の予測モードに含まれる少なくとも一部のイントラ予測モードに対し、テンプレート予測画像tpredSamplesを導出する。
 (STEP1-2)導出された各tpredSamplesと、tempSamplesの差異の大きさを表すコスト値を導出する。
 (STEP2)導出したtpredSamplesのうちコスト値が小さい、すなわち予測精度が高いと判定されたtpredSamplesに対応するイントラ予測モードをTIMDの予測モードとして選択する。
 (STEP3) (STEP2)で選択されたイントラ予測モードを用いて予測画像predSamplesを生成する。
 上記構成によれば、適切なテンプレート参照領域RTRSをシンタックス要素によってシグナルすることにより、符号量を削減することができる。また、不適切なテンプレート参照領域の画素を用いたテンプレート予測画像の生成、コスト計算が不要になるので、処理量を削減することができる。
 以下では図7に示したTIMD予測部31047の各部における処理(STEP1)~(STEP3)について、より詳細に説明する。
  (STEP1)テンプレート領域の画像を予測
 イントラ予測モード候補導出部4711は、まず、対象ブロックの隣接ブロックのイントラ予測モードから、イントラ予測モード候補のリストtimdModeList[]を導出する。例えばtimdModeListとしてMPMリストcandModeList[]を用いてもよい。
 timdModeList[i] = candModeList[i] (i=0.. numCand-1)
 numCandはcandModeListの要素数である。
 テンプレート導出部4702は、対象ブロックのテンプレート画像tempSamplesを導出する。図6に示すように、対象ブロックに隣接するテンプレート領域RTから導出してもよい。ここでは、テンプレート領域RTは1画素幅のL字型の既復号画素recSamplesである。
 tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
 tempSamples導出に用いるrecSamples上の領域をテンプレート領域RTと呼び、座標(i, j)の集合で表現する。tW、tHはテンプレート画像の幅と高さである。つまりRT={{i=0..cbWidth-1, j=-tH..-1}, {i=-tW..-1, j=0..cbHeight-1}}。図6では(tW,tH)=(1,1)である。またtempSamplesを用いずに、テンプレート領域に対応する復号画像の配列recSamplesをテンプレート画像として用いてもよい(この場合、tempSamplesの位置する領域をテンプレート領域と呼ぶ。対象ブロック、テンプレート領域RTとテンプレート参照領域の関係を図17にも示す。
 (テンプレート画像の例1:対象ブロックの左上の領域を含まない例)
 図10~図14は、図6とは異なるテンプレート領域RTとテンプレート参照領域RTRSの例を示す図である。
 テンプレート画像はL字型の形状以外であってもよい。
 図10(はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側の領域RL(図の真ん中)、対象ブロックの上側の領域RT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
 RL:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight-1)
 RT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1
 (テンプレート画像の例2:対象ブロックの左上の領域を含む例)
 図11はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左上を含む領域RL(図の真ん中)、対象ブロックの上側と左上RTを含む領域(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
 RL:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight-1)
 RT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth-1, j=-tH..-1
 (テンプレート画像の例3:対象ブロックの左上の領域を含まず、左下、右上に拡張する例)
 図12はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左下を含む領域RL_EXT(図の真ん中)、対象ブロックの上側と右上を含む領域RT_EXT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
 RL_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight+tExtH-1)
 RT_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth+tExtW-1, j=-tH..-1)
tExtW、tExtHはテンプレート画像を右上に拡張した幅、左下に拡張した高さである。tExtWとtExtHは、例えば、(tExtW, tExtH)=(4, 4)などの定数値や(tExtW, tExtH)=(cbWidth,cbHeight)、(tExtW, tExtH)=(cbWidth<<1, cbHeight<<1)、あるいは、(tExtW, tExtH)=(cbWidth>>1, cbHeight>>1)などの対象ブロックサイズから導出する値であってもよい。
 (テンプレート画像の例4:対象ブロックの左上の領域を含み、左下、右上に拡張する例)
 図13はL字型の形状(図の左側)以外に、テンプレート領域が対象ブロックの左側と左上と左下を含む領域RL_EXT(図の真ん中)、対象ブロックの上側と左上と右上を含む領域RT_EXT(図の右側)である例を示す。この場合、テンプレート画像は下式で設定される。
 RL_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight+tExtH-1)
 RT_EXT:tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth+tExtW-1, j=-tH..-1
 (テンプレート画像を選択する例)
 テンプレート領域は1種類ではなく、timd_ref_modeを参照して複数のテンプレート領域から1つを選択してもよい。
 例えばtimd_ref_modeはTIMD_MODE_TOP_LEFT、TIMD_MODE_LEFT、TIMD_MODE_TOPのいずれかを示す場合を説明する。図10、図11、図12、図13において、timd_ref_mode=TIMD_MODE_TOP_LEFTは、テンプレート領域が図の左端のように対象ブロックの左側と上側の領域を含むことを示す。同様に、timd_ref_mode=TIMD_MODE_LEFTは、テンプレート領域が図の真ん中のように対象ブロックの少なくとも左側の領域を含むことを示す。同様に、timd_ref_mode=TIMD_MODE_TOPは、テンプレート領域が図の左端のように対象ブロックの少なくとも上側の領域を含むことを示す。テンプレート領域またはその参照サンプルが画像領域内に設定できない場合、画像領域内にあるテンプレート領域およびその参照サンプルだけを用いるよう、TIMD予測部31047は、timd_ref_modeの値を変更してもよい。たとえば、対象ブロックの左上座標が(x0,y0)=(8,0)などy座標が0の場合には、上側のテンプレート領域が使用できないため、timd_ref_mode = TIMD_MODE_LEFTとするとよい。同様に対象ブロックの左上座標が(x0,y0)=(0,8)などx座標が0の場合には、左側のテンプレート領域が使用できないため、timd_ref_mode = TIMD_MODE_TOPとするとよい。
 テンプレート導出部4702は、timd_ref_modeを参照して3つのテンプレート領域のいずれかを選択し、テンプレート画像を生成する。
 例えば図10の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1)
 例えば図11の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth-1, j=-tH..-1)
 例えば図12の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=0..cbHeight+tExtH-1)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth+tExtW-1, j=-tH..-1)
 例えば図13の場合、テンプレート導出部4702は、テンプレート画像を下式のように生成する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=0..cbWidth-1, j=-tH..-1、および、i=-tW..-1, j=0..cbHeight-1)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..-1, j=-tH..cbHeight+tExtH-1)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  tempSamples[i][j] = recSamples[x0+i][y0+j] (i=-tW..cbWidth+tExtW-1, j=-tH..-1)
tExtW、tExtHはテンプレート画像を右上に拡張した幅、左下に拡張した高さである。
 参照サンプル導出部4701は、テンプレート参照領域RTRSから、参照サンプルrefUnitを導出する。なお、参照サンプル導出部4701の動作を参照サンプルフィルタ部3103が行う構成であってもよい。
 refUnit[x][y] = recSamples[x0+x][y0+y]
 ここで、x=-tW-1, y=-1-tH..refH-1、および、x=-tW..refW-1, y=-1-tHの範囲をとる。tW、tHはテンプレート領域の幅、および、高さであり、図6ではtW=1、tH=1である。refW=cbWidth*2、refH=cbHeight*2であるが、これに限らず、refW=cbWidth、refH=cbHeight、あるいはrefW=cbWidth*4、refH=cbHeight*4であってもよい。
 (テンプレート参照領域RTRSの例1:対象ブロックの左上を含まない例)
 timd_ref_modeがTIMD_MODE_LEFTあるいはTIMD_MODE_TOPの場合、テンプレート参照領域RTRSは、テンプレート画像に従って変化する。
 図10(a)、図11(a)、図12(a)、図13(a)に示すように、timd_ref_modeがTIMD_MODE_LEFTの場合、テンプレート参照領域RTRSは対象ブロックの左側の領域だけである。timd_ref_modeがTIMD_MODE_TOPの場合、テンプレート参照領域RTRSは対象ブロックの上側の領域だけである。参照サンプル導出部4701はテンプレート参照領域を以下のように設定する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW-1, y=yRLTL..yRLTL+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTTL..xRTTL+refW, y=-tH-1)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。例えば、図10(a)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。あるいは参照サンプル導出部4701は下式を用いてもよい。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW-1, y=yRLETL..yRLETL+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTETL..xRTETL+refW, y=-tH-1)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。
例えば、図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
 上記構成により、テンプレート参照領域の利用可能性をチェックする必要がない。従って、計算量を抑制することができる。
 (テンプレート参照領域RTRSの例2:対象ブロックの左上を含む例)
 図10(b)、図11(b)、図12(b)、図13(b)に示すように、テンプレート参照領域は対象ブロックの左側および上側の領域を含んでもよい。参照サンプル導出部4701はテンプレート参照領域を以下のように設定する。rWはtimd_ref_modeがTIMD_MODE_LEFTの場合のテンプレート参照領域の幅、rHはtimd_ref_modeがTIMD_MODE_TOPの場合のテンプレート参照領域の高さである。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRLTL..xRLTL+rW, y=yRLTL-1、および、x=xRLTL-1, y=yRLTL-1..yRLTL-1+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTTL..xRTTL+refW, y=yRTTL-1、および、x=xRTTL-1, y=yRTTL-1..yRTTL-1+rH)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。例えば、図10(b)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(b)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。あるいは参照サンプル導出部4701は下式を用いてもよい。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRLETL..xRLETL+rW, y=yRLETL-1、および、x=xRLETL-1, y=yRLETL-1..yRLETL-1+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x][y0+y] (x=xRTETL..xRTETL+refW, y=yRTETL-1、および、x=xRTETL-1, y=yRTETL-1..yRTETL-1+rH)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。
例えば、図12(b)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(b)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
 rW=cbWidth>>1、rH=cbHeight>>2であるが、これに限らず、rW=cbWidth、rH=cbHeight、あるいはrefW=cbWidth*2、refH=cbHeight*2であってもよい。
 上記構成により、テンプレート予測画像の生成に用いるテンプレート参照領域を拡大することにより、特に左上方向からの予測精度が高まり、符号化効率が向上する。
 (テンプレート参照領域RTRSの例3:テンプレート画像に接しない例
 (テンプレート参照領域RTRSの例1)、(テンプレート参照領域RTRSの例2)ではテンプレート参照領域RTRSがテンプレート画像に接する例を説明した。(テンプレート参照領域RTRSの例3)では図14を用いて、テンプレート参照領域RTRSがテンプレート画像に接しない例を説明する。図14は、図11(b)においてテンプレート参照領域RTRSがテンプレート画像に接しないように適用した図である。従って、図11(b)以外の図10~図13の各図に対しても、本例を適用することができる。
 参照サンプル導出部4701は、テンプレート画像から水平方向、垂直方向に各々refIdxW、refIdxHだけ離れた位置からテンプレート参照領域の画像refUnitを導出する。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRLTL..xRLTL+rW, y=yRLTL-1、および、x=xRLTL-1, y=yRLTL-1..yRLTL-1+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRTTL..xRTTL+refW, y=yRTTL-1、および、x=xRTTL-1, y=yRTTL-1..yRTTL-1+rH)
(xRLTL,yRLTL)はテンプレート画像RLの左上座標、(xRTTL,yRTTL)はテンプレート画像RTの左上座標である。あるいは下式で設定してもよい。図10(a)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
 if (timd_ref_mode==TIMD_MODE_TOP_LEFT)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=-tW..-tW+refW, y=-tH-1、および、x=-tW-1, y=-tH-1..-tH-1+refH)
 else if (timd_ref_mode==TIMD_MODE_LEFT)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRLETL..xRLETL+rW, y=yRLETL-1、および、x=xRLETL-1, y=yRLETL-1..yRLETL-1+refH)
 else if (timd_ref_mode==TIMD_MODE_TOP)
  refUnit[x][y] = recSamples[x0+x-refIdxW][y0+y-refIdxH] (x=xRTETL..xRTETL+refW, y=yRTETL-1、および、x=xRTETL-1, y=yRTETL-1..yRTETL-1+rH)
(xRLETL,yRLETL)はテンプレート画像RL_EXTの左上座標であり、(xRTETL,yRTETL)はテンプレート画像RT_EXTの左上座標である。図10(b)では(xRLTL,yRLTL)=(-tW,0)、(xRTTL,yRTTL)=(0,-tH)である。図11(a)では(xRLTL,yRLTL)=(-tW,-tH)、(xRTTL,yRTTL)=(-tW,-tH)である。図12(a)では(xRLETL,yRLETL)=(-tW,0)、(xRTETL,yRTETL)=(0,-tH)である。図13(a)では(xRLETL,yRLETL)=(-tW,-tH)、(xRTETL,yRTETL)=(-tW,-tH)である。
 前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域が前記対象ブロックの左側だけに位置する場合、垂直方向の位置は前記テンプレート領域の垂直座標の最小値以上であり、前記テンプレート領域が前記対象ブロックの上側だけに位置する場合、水平方向の位置は前記テンプレート領域の水平座標の最小値以上である。
 別の例として、前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域が前記対象ブロックの左側だけに位置する場合であっても、隣接ブロックが利用可能であれば前記テンプレート領域の上側および左上側に位置する隣接画素を含む。同様に前記テンプレート領域が前記対象ブロックの上側だけに位置する場合であっても、隣接ブロックが利用可能であれば前記テンプレート領域の左側および左上側に位置する隣接画素を含む。つまり、テンプレート参照領域はテンプレート領域に対し8近傍の左上の画素位置を含む。
 テンプレート画像に接する領域を参照して予測することは、必ずしも符号化効率を向上させるものではない。上記構成により、テンプレート参照領域をテンプレート画像から適切な距離だけ離すことにより、予測効率を高め、符号化効率を向上させることができる。
 前記対象ブロック近傍のテンプレート参照領域の位置は、前記テンプレート領域から所定の距離だけ離れて位置する。
 参照サンプル導出部4701は、参照サンプルrefUnit[x][y]にフィルタをかけて参照サンプルp[x][y]を導出してもよい。
 テンプレート予測画像生成部4712は、イントラ予測モードIntraPredModeの予測画像(テンプレート予測画像tpredSamples)をテンプレート参照領域RTRSから生成する。テンプレート予測画像生成部4712の予測画像導出の動作は予測部3104で行ってもよい。例えば、Planar予測部31041、DC予測部31042、Angular予測部31043は、テンプレート予測画像の導出と対象ブロックの予測画像の導出の両方を行ってもよい。
<ステップサーチ構成の例>
 TIMD予測部31047は、所定のイントラ予測モード候補を複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外の候補についてもコストの導出と選択を行う。例えば、TIMD予測部31047は、イントラ予測モードをnumGr個(numGr>1)のグループに分けて、各グループの代表モードだけをテスト(テンプレート予測画像を導出しコストを計算し比較)する。代表モードが最小コストをもつベストなグループに含まれるイントラ予測モードに対しては、さらに詳細にイントラ予測モードをテストする構成であってもよい。この構成によれば、粗い粒度のイントラ予測モードの探索numGr回と細かい粒度のイントラ予測モードの探索M-1回と分けて行う。例えば候補数numCand(=numGr*M)回実施していた予測画像導出及びコスト導出をグループ数とグループ内候補数の和(numGr+M-1回)に削減することができ、大幅に複雑度が削減できる。ここでnumGrはグループ数、Mはグループに含まれるイントラモード数である。
 図18(a)はイントラ予測モードをグループに分割する例である。ここではTIMD予測で利用する候補リストであるtimdModeListに含まれるイントラ予測モードを、Gr[0]~Gr[8]の9個のグループに分類する。イントラ予測モードのグループ化はある閾値gTH[]とイントラ予測モードの大小関係を用いて判定してもよい。イントラ予測モードが0~66の場合、グループを分ける閾値は、例えば{gTH[0],gTH[1],gTH[2],gTH[3],gTH[4],gTH[5],gTH[6],gTH[7]}={1,10,18,26,34,42,50,58}であってもよい。この場合、Gr[1]~Gr[8]には各々、2-10、11-18、19-26、27-34、35-42、43-50、51-58、59-66のイントラAngular予測モードが含まれる。なお、予測方向の傾きが近いことから、Angular予測モードの最後のグループ(Gr[8])をAngular予測モードの最初のグループ(Gr[1])と統合するようにしてもよい。イントラ予測モード数をnumMode、グループ数をnumGrとすると、図18(a)はnumMode=67、numGr=9の例である。
 イントラ予測モード選択部4714は、予め定められたグループ毎に含まれるイントラ予測モード候補を格納するリストGrList[m][n](m=0..numGr-1、n=0..numCand-1)と各グループに含まれるイントラ予測モード候補の個数を格納するリストnumGrList[m](m=0..numGr-1)を用いて、TIMDのイントラ予測モードを導出してもよい。
 イントラ予測モード選択部4714は、全てのAngular予測モードを対象にグループに分割してもよい。対象ブロックに隣接するブロックのイントラ予測モードなどから導出されるイントラ予測モードtimdModeListに含まれる候補のみを対象にしてグループに分割するようにしてもよい。以下では後者の例を示す。
 イントラ予測モード選択部4714は、timdModeListに含まれる候補(timdModeList[k]、k=0..numCand-1)を大きさに応じて分類し、各グループ内の候補を示すリスト(グループリスト)GrList[m][n]とグループの数numGrList[m](m=0..numGr-1)を導出してもよい。例えば以下のように処理してもよい。gTH[m](m=0..numGr-2)はグループを分ける閾値である。
 まずイントラ予測モード選択部4714は、numGrListとnGrListを初期化する。
 for (m=0; m<numGr; m++)
  numGrList[m] = 0
 for (m=0; m<numGr; m++)
  for (n=0; n<numCand; n++)
   GrList[m][n] = 0
 続いて、イントラ予測モード選択部4714は、各k(k=0..numCand-1)に対し、timdModeList[k]が図18(a)のGr[0]~Gr[8]のいずれのグループに属するかを判定してもよい。
 for (k=0; k<numCand; k++) {
  m=0
  do {
   if (timdModeList[k]<=gTH[m]) {
    GrList[m][numGrList[m]] = timdModeList[k]
    numGrList[m]++
    break
   }
   else m++
  } while (m<numGr-1)
  if (m==numGr-1) { // last Group
    GrList[m][numGrList[m]] = timdModeList[k]
    numGrList[m]++
  }
 }
 上記の構成によれば、1回目の探索で最小の代表モードとそれが属するベストなグループを特定する。グループ内のイントラ予測モードは方向が連続しているため、2回目の探索において、ベストなグループ内の全てのイントラ予測モードを探索することで、漏れのない探索が行える効果を奏する。また、例えばtimdModeListに含まれるイントラ予測モードなど、限定された候補の集合を対象としてグループに分割し、代表モードを特定しても、2回目の探索においては特定されたグループの全てのイントラ予測モードを探索する。そのため、特定方向の候補を漏れなく探索できる効果を奏する。さらに、上記構成では、グループを重複がない排他な構成とすることにより、無駄のない探索が可能であり複雑度を低減できる。
 なお、閾値に等しいあるいは近いモードは、閾値の両側のグループどちらにも含めるようにしてもよい。このような一部のイントラ予測モードを重複させることにより、複雑度を低減しながら安定した探索を実現できる。重複する個数は1から2が適当である。
 イントラ予測モード選択部4714は、timdModeListのイントラ予測モード候補を1つ以上含むグループに対し、代表モードrepMode[m](m=0..numGr-1)を1つ設定する。例えば代表モードは各グループのイントラ予測モードの中でtimdModeList内の位置が最も上位のモードや、先頭のモードであってもよい。つまりGrList[m][0]に格納されたモードから代表モードを1つ設定する。
 for (m=0; m<numGr; m++)
  if (numGrList[m]!=0)
   repMode[m] = GrList[m][0]
  else repMode[m] = NO_REP
NO_REPは代表モードがないことを表す定数であり、他のイントラ予測モード番号と重複しない値を用いる。
 各グループの代表モードは上記に限らない。例えば、各グループ内で最小のモード番号を持つイントラ予測モードであってもよい。
  repMode[m] = argmin(GrList[m][n]) (n=0..numCand-1)
 あるいは、各グループの代表モードは各グループ内で最大のイントラ予測モードであってもよい。
  repMode[m] = argmax(GrList[m][n]) (n=0..numCand-1)
 あるいは、各グループの代表モードは各グループ内で中央値を持つイントラ予測モードであってもよい。
 あるいは、グループに水平や垂直、45度、135度など所定の方向が含まれていれば、その方向を代表モードとして設定し、含まれていなければ他の方法、例えば前記のいずれかの方法で代表モードを設定してもよい。
 (STEP1-1)テンプレート領域の画像を予測
 具体的には、repMode[m](timdModeList[i])に含まれる各イントラ予測モードの各々(tIntraPredMode= repMode[m](timdModeList[i]))に対して、参照サンプルrefUnit[x][y]あるいはフィルタリング後の参照サンプルp[x][y]から、1次元の参照画素配列ref[]を生成する。そして、tIntraPredModeとref[]をイントラ予測部4703に伝送する。イントラ予測部4703はtIntraPredModeに対応するテンプレート予測画像tpredSamples[][]を生成し、テンプレート予測画像生成部4712に出力する。
 テンプレート予測画像生成部4712は、たとえば、以下の(式TIMD-ANGULAR-REF)のようにref[]を生成する。以下はp[][]からtpredSamples[][]を生成するが、p[][]の代わりにrefUnit[][]を用いてもよい
(式TIMD-ANGULAR-REF)
tIntraPredMode>=DIRの場合、以下で導出する。
 ref[x] = p[x][-1-tH](x=0..cbWidth+refIdx+1)
それ以外の場合(tIntraPredMode<DIR)、以下で導出する。
 ref[x] = p[-1-tW][x], (x=0..cbHeight+refIdx+1)
DIRは所定の定数、例えばDIR=34, 66など。ここでrefIdxは対象ブロックからの距離である。テンプレート領域の画像を予測に用いるテンプレート参照領域はrefIdx>0(例えば、refIdx=2, 4など)を用いてもよい。refIdxはブロックサイズによって変更してもよい。
 refIdx = (cbWidth >= 8) && (cbHeight >= 8) ? 4 : 2
 テンプレート予測画像生成部4712(イントラ予測部4703)は、たとえば、以下の(式TIMD-ANGULAR-PRED)のようにtIntraPredModeに対応するテンプレート予測画像tpredSamples[][]を生成する。
tIntraPredMode>=DIRの場合、 (式TIMD-ANGULAR-PRED)
 iIdx = (((y + 1 + refIdx) * intraPredAngle) >> 5) + refIdx
 iFact = ((y + 1 + refIdx) * intraPredAngle) & 31
 tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[x+iIdx+i]) + 32) >> 6)
それ以外の場合(tIntraPredMode<DIR)、
 iIdx = (((x + 1 + refIdx) * intraPredAngle) >> 5) + refIdx
 iFact = ((x + 1 + refIdx) * intraPredAngle) & 31
 tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[y+iIdx+i]) + 32) >> 6)
x=0..cbWidth-1,y=0..tH-1およびx=0..tW-1、y=0..cbHeight-1。
 ここでΣはi=0..MTAP-1までの総和、filtはテンプレート予測画像用の補間フィルタ係数である。テンプレート予測画像の導出に用いる補間フィルタのタップ数MTAPは例えば4。
intraPredAngleは各イントラ予測モードの角度パラメータである。
filtは、以下のようにiFastから導出してもよい。filtG[phase][j]はテンプレート予測画像を生成するための補間フィルタの係数である。
 filt[j] = filtG[iFact][j]
 テンプレート導出部4702は、上記の方法で対象ブロックのテンプレート画像tempSamplesを導出する。
 テンプレート予測画像生成部4712は、上記の方法で代表モードrepMode[m]の予測画像(テンプレート予測画像tpredSamplesR)をテンプレート参照領域RTRSから生成する。
 for (m=0; m<numGr; m++)
  if (numGrList[m]!=0) {
   tIntraPredMode = repMode[m]
   (式TIMD-ANGULAR-PRED)の方法でtpredSamplesR[x][y]を生成
  }
  (STEP1-2)コスト導出
 テンプレートコスト導出部4713は、代表モード候補repMode[m]のテンプレート予測画像tpredSamplesRとテンプレート画像tempSamplesの差分から、イントラ予測モード候補のコストtempGrCost[m]を導出する。コストはSAD(Sum of Absolute Differnce)であってもよい。
 for (m=0; m<numGr; m++)
  if (numGrList[m]!=0)
   tempGrCost[m] = Σabs(tpredSamplesR[i][j] - tempSamples[i][j])
  else
   tempGrCost[m] = MAX_COST
(i, j)は、例えば(i=0..cbWidth-1, j=0..tH-1), (i=0..tW-1, j=0..cbHeight-1))。tW、tHはテンプレート画像の幅と高さである。
 テンプレートコスト導出部4713は、tW=1、tH=1の場合、下式でtempCostを導出する。
 tempGrCost = Σabs(tpredSamplesR[i][j] - tempSamples[i][j])
(i, j)は例えば、(i=-1..cbWidth-1, j=-1), (i=-1, j=-1..cbHeight-1))。
MAX_COSTはコスト値およびそのグループが無効であることを表す値であり、他のコスト値よりも小さくなることがない値とする。例えばdouble型の最大値などを用いるとよい。コストはSADではなく、SATD(Sum of Absolute Transformed Difference)であってもよいし、複数のコストの重み付き和であってもよい。
 (STEP2)グループおよびモードの選択と重み導出
 イントラ予測モード選択部4714は、tempGrCostの最小値に対応するイントラ予測モードを、TIMDモードのイントラ予測モードIntraPredModeとして導出する。
 イントラ予測モード選択部4714は、(STEP1-2)で導出したtempGrCost[m](m=0..numGr-1)の中から、コストが最小となるmを導出し、mmとする。
 mm = argmin(tempGrCost[m]) (m=0..numGr-1)
 グループmmの全てのイントラ予測モードに対し、(STEP1-1)、(STEP1-2)を実行する。コストが導出済みのイントラ予測モードであれば、(STEP1-1)と(STEP1-2)は省略することができる。グループmmの中で最小値costMode1と2番目に小さな値costMode2、およびそれに対応するイントラ予測モード候補kMode1とkMode2を選択する。
 kMode1 = argmin(tempCost[k]) (k=0..numGrList[mm]-1)
 costMode1 = tempCost[kMode1]
 kMode2 = argmin(tempCost[k]) (k=0..kMode1-1, kMode+1..numGrList[mm] -1)
 costMode2 = tempCost[kMode2]
 例えば、最小値、2番目に小さいコストと対応するイントラ予測モードIntraPredModeは以下の疑似コードでもよい
 for (k = 0; k < numGrList[mm]; k++) {
  if (tempCost[k] < costMode1) {
   costMode2 = costMode1
   kMode2 = kMode1
   costMode1 = tempCost[k]
   kMode1 = k
  }
 }
 ここで、kMode1とkMode2の表す予測方向をさらに高精度な方向の表現で調整してもよい。たとえば、kMode1=15の場合、モード14とモード15の中間方向(モードkMode1aとする)およびモード15とモード16の中間方向(モードkMode1bとする)についてもAngular予測画像を導出し、コストを導出する。導出された2つのコストをcostMode1と比較し、最小のコストを与えるモードを新たにkMode1とし、costMode1は最小値に更新する。kMode2についても同様の調整を行ってもよい。
 導出された2つのモードkMode1とkMode2に対し、コストcostMode1とcodeMode2に応じて予測画像生成に用いる重みweight1とweight2を導出する。例えば次のように導出する。
 costMode1とcostMode2を閾値ThCostと比較し、costMode2がThCost*costMode1より小さい(第1の条件)場合、予測画像生成に用いる重みweight1とweight2を導出する。
 if (costMode2 < ThCost*costMode1) {
  weight1 = (1<<8) * costMode2 / (costMode1+costMode2)
  weight2 = (1<<8) - weight1
 }
 あるいは、グループmmをさらに再帰的に小さなグループに分割してもよい。例えば、図18(b)のように、イントラ予測モードを3つのグループにGr[0]、Gr[1]、Gr[2]に分け、閾値を{gTH[0],gTH[1]}={1,34}とする。1回目の探索で最小の代表モードrepMode[m]とそれが属するベストなグループをm=1、Gr[1]に特定したとする。Gr[1]は2-34の33個のイントラ予測モードを含み、2回目の探索数が多くなりすぎる。このような場合、図18(c)のように、Gr[1]をさらに分割したGr[3]とGr[4]に対して、最小の代表モードrepMode[m](m=3,4)とそれが属するベストなグループを特定する。このベストなグループに対し、上記2回目の探索を実施する。Gr[3]あるいはGr[4]のイントラ予測モード数が多い場合、さらに分割をくりかえしてもよい。このように探索対象のモード数を段階的に限定することにより、少ない処理量で精度の高いイントラ予測モードIntraPredModeを逐次的に導出することができる。
 なお、Angular予測でないGr[0]については、常に全てのモードについてコストを導出してkMode1とkMode2を更新するようにしてもよい。さらに、Gr[0]以外でも、例えば水平方向や垂直方向など、所定のモードについては常にコストを導出するようにしてもよい。
  (STEP3)TIMD予測画像導出
 イントラ予測部4703は、IntraPredModeに対応するイントラ予測画像predSamples[][]を導出する。そして、対象ブロックのイントラ予測画像として出力する。なお、これらの処理は予測部3104で導出してもよい。イントラ予測モード候補intraPredModeに対応する予測画像predSamples[x][y](x=0..cbWidth-1, y=0..cbHeight-1)は、下記で生成される。
 if (intraPredMode >= DIR) (式INTRA-ANGULAR-PRED)
  iIdx = (((y + 1) * intraPredAngle) >> 5)
  iFact = ((y + 1) * intraPredAngle) & 31
  predSamples[x][y] = Clip1((Σ(fT[i] * ref[x+iIdx+i]) + 32) >> 6)
 else /* intraPredMode < DIR*/
  iIdx = (((x + 1) * intraPredAngle) >> 5)
  iFact = ((x + 1) * intraPredAngle) & 31
  predSamples[x][y] = Clip1((Σ(fT[i] * ref[y+iIdx+i]) + 32) >> 6)
 ここでref[]はテンプレート予測画像生成部で説明した通りである。
 ここでΣはi=0..NTAP-1までの和、fTはイントラ予測画像用の補間フィルタ係数である。イントラ予測画像の導出に用いる補間フィルタのタップ数NTAPは例えば6で、NTAP>=MTAPに設定する。MTAPはテンプレート予測画像tpredSamplesを導出するための補間フィルタfiltのタップ数である。
 fTは、以下のようにiFastから導出してもよい。fG[phase][j]はイントラ予測画像を生成するための補間フィルタの係数である。
fT[j] = fG[iFact][j]
 (STEP2)の第1の条件が成立する場合、IntraPredMode=kMode1, kMode2に対応するイントラ予測画像predSamples1[][]、predSamples2[][]を(式INTRA-ANGULAR-PRED)を用いて生成する。そして、対象ブロックの予測画像predSamples[][]はpredSamples1[][]とpredSamples2[][]の重み付け和で生成される。
 predSamples[x][y] = (weight1*predSamples1[x][y] + weight2*predSamples2[x][y])
>> 8
 そうではなく、(STEP2)の第1の条件が成立しない場合、predSamples[][]はkMode1に対応するイントラ予測画像predSamples1[][]を用いて生成される。predSamples1[][]は(式INTRA-ANGULAR-PRED)により生成される。
 predSamples[x][y] = predSamples1[x][y]
 上述の構成によれば、テンプレート予測画像およびコスト計算を、特定のグループに属するイントラ予測モードに限定して実施するため、テンプレート予測画像導出の処理量を削減する効果を奏する。
 (実施例1の別の例1)
 実施例1の別の例として、他のグループ分割方法を示す。この方法では、Angular予測モードを含む各グループの要素数がほぼ均等になるように分割し、選択するグループによって処理するモードの総数すなわち処理量に大きな差が生じないようにする。つまり、Angular予測モードを含むグループの要素数の違いが1個以下となるイントラ予測モードの候補を用いる。
 イントラ予測モード選択部4714は、さらに、方向性のないモード(PlanarまたはDC)と方向性のあるモードに分けて、方向性のあるモードの候補timdAngModeListを用いて、グループ分割を行ってもよい。なお、方向性のないモードはPlanar、PlanarHor、PlanarVerなど複数のモードを備えていてもよい。具体的には、各kに対し、timdModeList[k](k=0..numCand-1)がGr[0]~Gr[m](m=numGr-1)のいずれのグループに属するかを判定する。timdModeList[k]がPlanarまたはDCの場合はGr[0]である。これら以外、すなわちtimdModeListに含まれるAngular予測モードだけをモード番号順にソートしたリストをtimdAngModeList[k](k=0..numAngCand-1)とする。numAngCandはtimdAngModeListの要素数である。
 イントラ予測モード選択部4714は、各グループの要素数がそれぞれ概ねnumAngCand/(numGr-2)個となるように、timdAngModeListを(numGr-2)個のグループ(Gr[1]~Gr[numGr-1])に分ける。以下に処理の例を示す。ここでnumAngCand=23, numGr=5とする。
 for (m=0; m<numGr; m++)
  numGrList[m] = 0
 m=0
 th=0
 GrList[0][numGrList[0]++] = 0 (=DC)
 GrList[0][numGrList[0]++] = 1 (=Planar)
 for (k=0; k<numAngCand; k++) {
  if (k >= th) {
   m++
   th=numAngCand*m/(numGr-1)
  }
  GrList[m][numGrList[m]] = timdAngModeList[k]
  numGrList[m]++
 }
 以降の処理は実施例1と同様にできる。グループmmを再度分割する際にも、ここで説明した分割と同様の方法を用いてよい。
 上述の構成によれば、timdModeListから分割されたどのグループGr[1]~Gr[numGr-1]も、他のグループとの要素数の差は高々1個である。つまりどのグループがグループmmとして選択されても要素数がほぼ等しいため、処理量が安定的に削減できる効果を奏する。
 なお、上記ではイントラ予測モードは0~numCand-1(例えばnumCand=67)の例を記載したが、イントラ予測モードはこれに限らない。例えば、numCand=35であってもよい。あるいはwide angleのようにイントラ予測モードが-14~80の値をとってもよい。wide angleの場合は、-14~-1、あるいは67~80のイントラ予測モードに対して新たなグループを1つ割り当ててもよい。そして、代表モードやベストなグループを同定してもよい。
 本実施例の動画像復号装置は、符号化データからテンプレートベースイントラモード導出フラグを復号するパラメータ復号部と、対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部を備え、前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出する。
 そして、前記テンプレートベースイントラモード導出フラグは、前記テンプレート領域として、前記対象ブロックの上側と左側を使うか、前記対象ブロックの左側を使うか、前記対象ブロックの上側を使うか、を示す。
 前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以上、最大値以下であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以上、最大値以下である。
 別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最大値以下であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最大値以下である、つまり、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以下の領域を含み、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以下の領域を含む。
 別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最小値以上であり、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最小値以上である、つまり、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックの垂直座標の最大値以上の領域を含み、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックの水平座標の最大値以上の領域を含む。
 別の例として、前記対象ブロックの左側のテンプレート領域は、垂直方向の位置が前記対象ブロックに対し制限を設けず、前記対象ブロックの上側のテンプレート領域は、水平方向の位置が前記対象ブロックに対し制限を設けない。
 (ブロックサイズ別テンプレート参照領域)
 別の構成として、参照サンプル導出部4701のテンプレート参照領域RTRSおよびテンプレート予測画像生成部4712のrefの導出において対象ブロックからの距離を水平方向、垂直方向でかえてもよい。
 refIdxW = (cbWidth >= 8) ? 4 : 2
 refIdxH = (cbHeight >= 8) ? 4 : 2
tIntraPredMode>=DIRの場合
 ref[x] = p[-1-refIdxW+x][-1-refIdxH], (x=0..cbWidth+refIdxW+1)
それ以外の場合(tIntraPredMode<DIR)
 ref[x] = p[-1-refIdxW][-1-refIdxH+x], (x=0..cbHeight+refIdxH+1)
テンプレート予測画像生成部4712は以下を実行してもよい。
tIntraPredMode>=DIRの場合 (式TIMD-ANGULAR-PRED)
 iIdx = (((y + 1 + refIdxH) * intraPredAngle) >> 5) + refIdxH
 iFact = ((y + 1 + refIdxH) * intraPredAngle) & 31
 tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[x+iIdx+i]) + 32) >> 6)
それ以外の場合(tIntraPredMode < DIR)
 iIdx = (((x + 1 + refIdxW) * intraPredAngle) >> 5) + refIdxW
 iFact = ((x + 1 + refIdxW) * intraPredAngle) & 31
 tpredSamples[x][y] = Clip1((Σ(filt[i] * ref[y+iIdx+i]) + 32) >> 6)
x=-1..cbWidth-1,y=-1およびx=-1、y=-1..cbHeight-1。
 上記構成によれば、対象ブロックのサイズに応じて、テンプレート予測画像で参照する領域を可変にするため、テンプレート予測画像の精度が向上し、TIMDのイントラ予測画像の精度が高まる効果を奏する。
 上述の構成によれば、対象ブロックに対して複数のイントラ予測候補を用いて繰り返しテンプレート予測画像(イントラ予測画像)の導出を行うTIMD予測において、テンプレート画像の予測画像導出の処理量を削減する効果を奏する。
 加算部312は、予測画像生成部308から入力されたブロックの予測画像と逆量子化・逆変換部311から入力された予測誤差を画素毎に加算して、ブロックの復号画像を生成する。加算部312はブロックの復号画像を参照ピクチャメモリ306に記憶し、また、ループフィルタ305に出力する。
  (動画像符号化装置の構成)
 次に、本実施形態に係る動画像符号化装置11の構成について説明する。図15は、本実施形態に係る動画像符号化装置11の構成を示すブロック図である。動画像符号化装置11は、予測画像生成部101、減算部102、変換・量子化部103、逆量子化・逆変換部105、加算部106、ループフィルタ107、予測パラメータメモリ(予測パラメータ記憶部、フレームメモリ)108、参照ピクチャメモリ(参照画像記憶部、フレームメモリ)109、符号化パラメータ決定部110、パラメータ符号化部111、予測パラメータ導出部120、エントロピー符号化部104を含んで構成される。
 予測画像生成部101は画像Tの各ピクチャを分割した領域であるCU毎に予測画像を生成する。予測画像生成部101はイントラ予測画像生成部122とインター予測画像生成部123を含む。予測画像生成部101は既に説明した予測画像生成部308と同じ動作であり、説明を省略する。
 減算部102は、予測画像生成部101から入力されたブロックの予測画像の画素値を、画像Tの画素値から減算して予測誤差を生成する。減算部102は予測誤差を変換・量子化部103に出力する。
 変換・量子化部103は、減算部102から入力された予測誤差に対し、周波数変換によって変換係数を算出し、量子化によって量子化変換係数を導出する。変換・量子化部103は、量子化変換係数をパラメータ符号化部111及び逆量子化・逆変換部105に出力する。
 逆量子化・逆変換部105は、動画像復号装置31における逆量子化・逆変換部311(図4)と同じであり、説明を省略する。算出した予測誤差は加算部106に出力される。
 パラメータ符号化部111は、ヘッダ符号化部1110、CT情報符号化部1111、CU符号化部1112(予測モード符号化部)を備えている。CU符号化部1112はさらにTU符号化部1114を備えている。以下、各モジュールの概略動作を説明する。
 ヘッダ符号化部1110はヘッダ情報、分割情報、予測情報、量子化変換係数等のパラメータの符号化処理を行う。
 CT情報符号化部1111は、QT、MT(BT、TT)分割情報等を符号化する。
 CU符号化部1112はCU情報、予測情報、分割情報等を符号化する。
 TU符号化部1114は、TUに予測誤差が含まれている場合に、QP更新情報と量子化予測誤差を符号化する。
 CT情報符号化部1111、CU符号化部1112は、インター予測パラメータ、イントラ予測パラメータ、量子化変換係数等のシンタックス要素をパラメータ符号化部111に供給する。
 エントロピー符号化部104には、パラメータ符号化部111から量子化変換係数と符号化パラメータが入力される。エントロピー符号化部104は、これらをエントロピー符号化して符号化ストリームTeを生成し、出力する。
 予測パラメータ導出部120は、インター予測パラメータ符号化部112、イントラ予測パラメータ符号化部113を含む手段であり、符号化パラメータ決定部110から入力されたパラメータからイントラ予測パラメータ及びイントラ予測パラメータを導出する。導出されたイントラ予測パラメータ及びイントラ予測パラメータは、パラメータ符号化部111に出力される。
  (イントラ予測パラメータ符号化部113の構成)
 イントラ予測パラメータ符号化部113は、符号化パラメータ決定部110から入力されたIntraPredMode等を符号化する。イントラ予測パラメータ符号化部113は、イントラ予測パラメータ導出部304がイントラ予測パラメータを導出する構成と、一部同一の構成を含む。
 加算部106は、予測画像生成部101から入力された予測ブロックの画素値と逆量子化・逆変換部105から入力された予測誤差を画素毎に加算して復号画像を生成する。加算部106は生成した復号画像を参照ピクチャメモリ109に記憶する。
 ループフィルタ107は加算部106が生成した復号画像に対し、デブロッキングフィルタ、SAO、ALFを施す。なお、ループフィルタ107は、必ずしも上記3種類のフィルタを含まなくてもよく、例えばデブロッキングフィルタのみの構成であってもよい。
 予測パラメータメモリ108は、符号化パラメータ決定部110が生成した予測パラメータを、対象ピクチャ及びCU毎に予め定めた位置に記憶する。
 参照ピクチャメモリ109は、ループフィルタ107が生成した復号画像を対象ピクチャ及びCU毎に予め定めた位置に記憶する。
 符号化パラメータ決定部110は、符号化パラメータの複数のセットのうち、1つのセットを選択する。符号化パラメータとは、上述したQT、BTあるいはTT分割情報、予測パラメータ、あるいはこれらに関連して生成される符号化の対象となるパラメータである。予測画像生成部101は、これらの符号化パラメータを用いて予測画像を生成する。
 符号化パラメータ決定部110は、複数のセットの各々について情報量の大きさと符号化誤差を示すRDコスト値を算出する。符号化パラメータ決定部110は、算出したコスト値が最小となる符号化パラメータのセットを選択する。これにより、エントロピー符号化部104は、選択した符号化パラメータのセットを符号化ストリームTeとして出力する。符号化パラメータ決定部110は決定した符号化パラメータを予測パラメータメモリ108に記憶する。
 本実施例の動画像復号装置は、対象ブロックに隣接するテンプレート領域の画像を用いて、テンプレート画像を生成するテンプレート導出部と、前記対象ブロック近傍のテンプレート参照領域の画像を用いて、参照サンプルを生成する参照サンプル導出部と、前記参照サンプルを用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、前記テンプレート予測画像と前記テンプレート画像からコストを導出するテンプレートコスト導出部と、前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部と、テンプレートベースイントラモード導出フラグを符号化するパラメータ符号化部とを備え、前記テンプレート導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記テンプレート領域の位置を指定し、前記参照サンプル導出部は、前記テンプレートベースイントラモード導出フラグを参照して、前記参照サンプルを導出する。
 なお、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、例えば、エントロピー復号部301、パラメータ復号部302、ループフィルタ305、予測画像生成部308、逆量子化・逆変換部311、加算部312、予測画像生成部101、減算部102、変換・量子化部103、エントロピー符号化部104、逆量子化・逆変換部105、ループフィルタ107、符号化パラメータ決定部110、パラメータ符号化部111をコンピュータで実現するようにしてもよい。その場合、この制御機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、動画像符号化装置11、動画像復号装置31のいずれかに内蔵されたコンピュータシステムであって、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
 また、上述した実施形態における動画像符号化装置11、動画像復号装置31の一部、または全部を、LSI(Large Scale Integration)等の集積回路として実現してもよい。動画像符号化装置11、動画像復号装置31の各機能ブロックは個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はLSIに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりLSIに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
 以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
 本発明の実施形態は、画像データが符号化された符号化データを復号する動画像復号装置、および、画像データが符号化された符号化データを生成する動画像符号化装置に好適に適用することができる。また、動画像符号化装置によって生成され、動画像復号装置によって参照される符号化データのデータ構造に好適に適用することができる。
31 画像復号装置
301 エントロピー復号部
302 パラメータ復号部
308 予測画像生成部
310 イントラ予測画像生成部
31047 TIMD予測部
4701 参照サンプル導出部
4702 テンプレート導出部
4703 イントラ予測部
4711 イントラ予測モード候補導出部、
4712 テンプレート予測画像生成部
4713 テンプレートコスト導出部
4714 イントラ予測モード選択部
311 逆量子化・逆変換部
312 加算部
11 画像符号化装置
101 予測画像生成部
102 減算部
103 変換・量子化部
104 エントロピー符号化部
105 逆量子化・逆変換部
107 ループフィルタ
110 符号化パラメータ決定部
111 パラメータ符号化部
1110 ヘッダ符号化部
1111 CT情報符号化部
1112 CU符号化部(予測モード符号化部)
1114 TU符号化部

Claims (4)

  1.  対象ブロック近傍のテンプレート参照領域の画像を用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、
     前記テンプレート予測画像とテンプレート画像からコストを導出するテンプレートコスト導出部と、
     前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部を備え、
     前記イントラ予測モード選択部は、所定のイントラ予測モード候補を複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外のモードについてもコストの導出と選択を行うことを特徴とする動画像復号装置。
  2.  前記イントラ予測モード導出部は、所定のイントラ予測モード候補を予測方向に基づいて複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外のモードについてもコストの導出と選択を行うことを特徴とする請求項1に記載の動画像復号装置。
  3.  前記イントラ予測モード導出部は、所定のイントラ予測モード候補をグループの要素数の差が高々1個になるように複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外のモードについてもコストの導出と選択を行うことを特徴とする請求項1に記載の動画像復号装置。
  4.  対象ブロック近傍のテンプレート参照領域の画像を用いて、所定のイントラ予測モード候補に対するテンプレート予測画像を生成するテンプレート予測画像生成部と、
     前記テンプレート予測画像とテンプレート画像からコストを導出するテンプレートコスト導出部と、
     前記コストに基づいて前記対象ブロックのイントラ予測モードを選択するイントラ予測モード選択部を備え、
     前記イントラ予測モード選択部は、所定のイントラ予測モード候補を複数のグループに分割し、各グループから選択したイントラ予測モード候補毎にテンプレート予測画像を生成してコストを評価し、最もコストが低いイントラ予測モード候補が属するグループでは、前記選択したイントラ予測モード候補以外のモードについてもコストの導出と選択を行うことを特徴とする動画像符号化装置。
PCT/JP2023/039040 2022-11-28 2023-10-30 動画像復号装置および動画像符号化装置 WO2024116691A1 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2022189022A JP2024077148A (ja) 2022-11-28 2022-11-28 動画像復号装置および動画像符号化装置
JP2022-189022 2022-11-28
JP2022-208682 2022-12-26
JP2022208682A JP2024092612A (ja) 2022-12-26 2022-12-26 動画像復号装置および動画像符号化装置
JP2023038230A JP2024129196A (ja) 2023-03-13 2023-03-13 動画像復号装置および動画像符号化装置
JP2023-038230 2023-03-13

Publications (1)

Publication Number Publication Date
WO2024116691A1 true WO2024116691A1 (ja) 2024-06-06

Family

ID=91323742

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/039040 WO2024116691A1 (ja) 2022-11-28 2023-10-30 動画像復号装置および動画像符号化装置

Country Status (1)

Country Link
WO (1) WO2024116691A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190166370A1 (en) * 2016-05-06 2019-05-30 Vid Scale, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
US20220224913A1 (en) * 2021-01-13 2022-07-14 Lemon Inc. Techniques for decoding or coding images based on multiple intra-prediction modes
WO2022232784A1 (en) * 2021-04-26 2022-11-03 Tencent America LLC Template matching based intra prediction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190166370A1 (en) * 2016-05-06 2019-05-30 Vid Scale, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
US20220224913A1 (en) * 2021-01-13 2022-07-14 Lemon Inc. Techniques for decoding or coding images based on multiple intra-prediction modes
WO2022232784A1 (en) * 2021-04-26 2022-11-03 Tencent America LLC Template matching based intra prediction

Similar Documents

Publication Publication Date Title
KR102595069B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102688470B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102658040B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102704683B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102678729B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20240132433A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20230132420A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20220127801A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR102617953B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20170113384A (ko) 픽쳐 분할 정보를 사용하는 비디오의 부호화 및 복호화를 위한 방법 및 장치
KR102654647B1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2024116691A1 (ja) 動画像復号装置および動画像符号化装置
JP2024129196A (ja) 動画像復号装置および動画像符号化装置
JP2024092612A (ja) 動画像復号装置および動画像符号化装置
JP2024077148A (ja) 動画像復号装置および動画像符号化装置
JP2024047922A (ja) 画像復号装置および画像符号化装置
JP2024047921A (ja) 画像復号装置
EP4378163A1 (en) Coding enhancement in cross-component sample adaptive offset

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: 23897347

Country of ref document: EP

Kind code of ref document: A1