Image encoding device, image encoding method and image encoding program, image decoding device, image decoding method and image decoding program

By deriving time and history motion information candidates and applying affine transformation, the image encoding technique reduces processing load and enhances efficiency in handling deformations within moving images, addressing the inefficiencies of previous methods.

JP7910647B2Active Publication Date: 2026-08-25JVC KENWOOD CORP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2025107221
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-03-28
Filing Date
2025-06-25
Publication Date
2026-08-25
Estimated Expiration
2039-12-27

AI Technical Summary

Technical Problem

Existing image encoding techniques, such as those described in Patent Document 1, suffer from high processing loads due to image conversion processes, which affect encoding efficiency, particularly in handling deformations like enlargement, reduction, and rotation in moving images.

Method used

The proposed technique includes an image encoding apparatus that derives time and history motion information candidates without direct comparison, adding them to the motion information candidate list, and applies affine transformation for motion compensation in block units to reduce processing load and enhance efficiency.

Benefits of technology

This approach achieves highly efficient image encoding and decoding with reduced overhead by optimizing block division and prediction methods, specifically through the use of time and history motion information candidates and affine transformation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007910647000001
    Figure 0007910647000001
  • Figure 0007910647000002
    Figure 0007910647000002
  • Figure 0007910647000003
    Figure 0007910647000003
Patent Text Reader

Abstract

To provide a technique to improve encoding efficiency by deriving motion information candidates suitable for image encoding and decoding.SOLUTION: A moving image encoding device comprises: a spatial motion information candidate derivation unit that derives spatial motion information candidates from motion information of a block spatially adjacent to a decoding target block; a temporal motion information candidate derivation unit that derives temporal motion information candidates from the motion information of the block temporally adjacent to the decoding target block; and history motion information candidate derivation unit that derives history motion information candidates from a memory that holds motion information of a decoded block. The moving image encoding device adds the temporal motion information candidates to a motion information candidate list without a comparison in the motion information between the spatial motion information candidates and the temporal motion information candidates, and when the motion information of the spatial motion information candidates and the motion information of the history motion information candidates are not identical to each other, adds the history motion information candidates to the motion information candidate list.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to an image encoding and decoding technique for dividing an image into blocks and performing prediction.

Background Art

[0002] In image encoding and decoding, an image to be processed is divided into blocks, which are sets of a predetermined number of pixels, and processing is performed in block units. By appropriately dividing the image into blocks and appropriately setting intra prediction (intra prediction) and inter prediction (inter prediction), the encoding efficiency is improved. In the encoding and decoding of moving images, inter prediction that predicts from encoded and decoded pictures improves the encoding efficiency. Patent Document 1 describes a technique of applying an affine transformation during inter prediction. In moving images, it is not uncommon for an object to be accompanied by deformations such as enlargement, reduction, and rotation. By applying the technique of Patent Document 1, efficient encoding becomes possible.

[0003] In the encoding and decoding of moving images, encoding efficiency is improved by inter prediction that predicts from encoded and decoded pictures. Patent Document 1 describes a technique of applying an affine transformation during inter prediction. In moving images, it is not uncommon for an object to be accompanied by deformations such as enlargement, reduction, and rotation. By applying the technique of Patent Document 1, efficient encoding becomes possible.

Prior Art Documents

Patent Documents

[0004]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0005] However, since the technique of Patent Document 1 involves image conversion, there is a problem that the processing load is extremely large. In view of the above problems, the present invention provides an encoding technique with a low load and high efficiency.

Means for Solving the Problems

[0006] To solve the above problems, an image encoding apparatus in one embodiment of the present invention includes a time motion information candidate derivation unit that derives time motion information candidates from the motion information of blocks temporally adjacent to the block to be encoded, and a history motion information candidate derivation unit that derives history motion information candidates from a memory that holds the motion information of encoded blocks, and adds the time motion information candidate to the motion information candidate list without comparing the motion information of the spatial motion information candidate and the time motion information candidate, and if the motion information of the spatial motion information candidate and the motion information of the history motion information candidate are not the same, the history motion information candidate is added to the motion information candidate list. [Effects of the Invention]

[0007] According to the present invention, highly efficient image encoding and decoding can be achieved with low overhead. [Brief explanation of the drawing]

[0008] [Figure 1] This is a block diagram of an image encoding device according to the first embodiment. [Figure 2] This is a block diagram of an image decoding device according to the first embodiment. [Figure 3] This is a flowchart illustrating the process of splitting a tree block. [Figure 4] This diagram shows how an input image is divided into tree blocks. [Figure 5] This is a diagram illustrating the z-scan. [Figure 6] This diagram shows the division shape of the block. [Figure 7] This is a flowchart to explain the process of dividing a block into four parts. [Figure 8] This is a flowchart illustrating the process of dividing a block into two or three parts. [Figure 9] This is syntax for representing the shape of block divisions. [Figure 10] This diagram illustrates intranet prediction. [Figure 11] This is a diagram for explaining a reference block for inter prediction. [Figure 12] This is a syntax for expressing an encoding block prediction mode. [Figure 13] This is a diagram showing the correspondence between syntax elements and modes related to inter prediction. [Figure 14] This is a diagram for explaining affine transform motion compensation for two control points. [Figure 15] This is a diagram for explaining affine transform motion compensation for three control points. [Figure 16] This is a block diagram of the detailed configuration of the inter prediction unit 201 in FIG. 1. [Figure 17] This is a block diagram of the detailed configuration of the normal prediction motion vector mode derivation unit 301 in FIG. 16. [Figure 18] This is a block diagram of the detailed configuration of the normal merge mode derivation unit 302 in FIG. 16. [Figure 19] This is a flowchart for explaining the normal prediction motion vector mode derivation process of the normal prediction motion vector mode derivation unit 301 in FIG. 16. [Figure 20] This is a flowchart showing the processing procedure of the normal prediction motion vector mode derivation process having functions common to the normal prediction motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 401 according to an embodiment of the present invention. [Figure 21] This is a flowchart for explaining the procedure of the merge mode derivation process having functions common to the normal merge mode derivation unit 302 and the normal merge mode derivation unit 402 according to an embodiment of the present invention. [Figure 22] This is a block diagram of the detailed configuration of the inter prediction unit 203 in FIG. 2. [Figure 23] This is a block diagram of the detailed configuration of the normal prediction motion vector mode derivation unit 301 in FIG. 22. [Figure 24] This is a block diagram of the detailed configuration of the normal merge mode derivation unit 302 in FIG. 16. [Figure 25]Figure 22 is a flowchart illustrating the normal predicted motion vector mode derivation process of the normal predicted motion vector mode derivation unit 301. [Figure 26] This is a block diagram of the subblock predictive motion vector mode derivation unit 303 in the coding device of the present invention. [Figure 27] This is a block diagram of the subblock predictive motion vector mode derivation unit 403 in the decoding device of the present invention. [Figure 28] This is a block diagram of the subblock merge mode derivation unit 304 in the encoding device of the present invention. [Figure 29] This is a block diagram of the subblock merge mode derivation unit 404 in the decoding device of the present invention. [Figure 30] This figure illustrates the derivation of candidate motion vectors for affine inheritance prediction. [Figure 31] This figure illustrates the derivation of candidate motion vectors for affine construction prediction. [Figure 32] This diagram illustrates the derivation of affine inheritance merge candidates. [Figure 33] This diagram illustrates the derivation of affine construction merge candidates. [Figure 34] This is a flowchart for deriving candidate motion vectors for affine inheritance prediction. [Figure 35] This is a flowchart for deriving candidate motion vectors for affine construction prediction. [Figure 36] This is a flowchart for deriving candidates for affine inheritance merge. [Figure 37] This is a flowchart for deriving candidates for affine construction merge. [Figure 38] This flowchart illustrates the initialization and update process for the history prediction motion vector candidate list. Step S2101 in Figure 38 has been modified. [Figure 39] This is a flowchart of the identical element verification process in the historical prediction motion vector candidate derivation process. [Figure 40] This is a flowchart of the element shifting procedure in the process for deriving candidate motion vectors based on historical prediction. [Figure 41]This is a flowchart illustrating the procedure for deriving candidate motion vectors based on historical predictions. [Figure 42] This is a flowchart illustrating the procedure for deriving candidates for history merge. [Figure 43] This diagram illustrates the procedure for updating the list of candidate motion vectors predicted in the history. [Figure 44] This is a flowchart illustrating the operation of the subblock time merge candidate derivation unit 381. [Figure 45] This is a flowchart illustrating the process of deriving information about the adjacent movement of blocks. [Figure 46] This is a flowchart illustrating the process of deriving temporal motion vectors. [Figure 47] This is a flowchart to explain the derivation of interpretation prediction information. [Figure 48] This is a flowchart illustrating the process of deriving subblock movement information. [Figure 49] This is a diagram to explain the temporal relationships between pictures. [Figure 50] This is a flowchart illustrating the process of deriving time-predicted motion vector candidates in the normal prediction motion vector mode derivation unit 301. [Figure 51] This flowchart explains the derivation process of ColPic in the derivation process of time-predicted motion vector candidates in the normal prediction motion vector mode derivation unit 301. [Figure 52] This flowchart illustrates the process of deriving the encoding information of ColPic in the derivation process of time-predicted motion vector candidates in the normal prediction motion vector mode derivation unit 301. [Figure 53] This is a flowchart to explain the process of deriving interpretation prediction information. [Figure 54] This flowchart shows the procedure for deriving inter-prediction information for an encoded block when the inter-prediction mode of the encoded block colCb is bi-prediction (Pred_BI). [Figure 55]This is a flowchart illustrating the procedure for scaling motion vectors. [Figure 56] This is a flowchart explaining the process of deriving time merge candidates. [Figure 57] This diagram illustrates the prediction direction of motion-compensated prediction in the case of a simple prediction where the L0 reference picture (RefL0Pic) is at a time earlier than the picture to be encoded (CurPic). [Figure 58] This diagram illustrates the prediction direction of motion-compensated prediction when it is a single prediction and the reference picture for the L0 prediction is at a later time than the picture to be encoded. [Figure 59] This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction is at a time earlier than the picture to be encoded, and the reference picture for L1 prediction is at a time later than the picture to be encoded. [Figure 60] This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction and the reference picture for L1 prediction are at a time earlier than the picture to be encoded. [Figure 61] This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction and the reference picture for L1 prediction are at a later time than the picture to be encoded. [Figure 62] This table shows an example of historical prediction motion vector candidates that are added when the historical prediction motion vector candidate list is initialized. [Figure 63] This table shows another example of historical prediction motion vector candidates that are added by the initialization of the historical prediction motion vector candidate list. [Figure 64] This table shows another example of historical prediction motion vector candidates that are added by the initialization of the historical prediction motion vector candidate list. [Figure 65] This is a flowchart illustrating the procedure for deriving candidate motion vectors based on a modified example 2 of the first embodiment. [Figure 66] This figure illustrates an example of the hardware configuration of the encoding / decoding device according to the first embodiment. [Modes for carrying out the invention]

[0009] This section defines the technologies and technical terms used in this embodiment.

[0010] <Tree Block> In this embodiment, the image to be encoded and decoded is divided equally into predetermined units. We define this as a tree block. As shown in Figure 4, in this embodiment, the tree block is The size is set to 128x128 pixels, but the size of the tree block is limited to this. Instead, you can set any size. (In the case of encoding, this refers to the target of encoding.) In the decoding process, the tree block corresponds to the target to be decoded.) In other words, it switches from left to right and from top to bottom. Inside each tree block, Recursive partitioning is possible. The blocks to be encoded and decoded after tree block partitioning. We define this as an encoded block. Also, tree blocks and encoded blocks are collectively referred to as blocks. Defined as "ku". Efficient encoding becomes possible by performing appropriate block division. The block size can also be a fixed value predetermined by the encoding and decoding devices. Furthermore, a configuration in which the encoding device transmits the size of the tree block determined by the encoding device to the decoding device. You can also take it.

[0011] <Prediction Mode> The processed (coded in the encoding process) of the image to be processed, in units of the encoding block to be processed. The decoded signal is used for images, image signals, etc., and in the decoding process, once decoding is complete... Used for images, pre-image signals, etc. Intra prediction (MODE) is performed from the surrounding image signals. _INTRA), and the interprediction (MODE_INTER) which performs prediction from the image signal of the processed image are turned off. Replace. This identifies the intra prediction (MODE_INTRA) and inter prediction (MODE_INTER). The mode is defined as Prediction Mode (PredMode). Prediction Mode (PredMode) is Intra Prediction (MO It can take DE_INTRA or MODE_INTER as its value and select which one to encode. .

[0012] <Interface Forecast> Interpretation, which makes predictions from the image signals of processed images, uses multiple processed images as references. It can be used as a reference picture. To manage multiple reference pictures, L0 (reference list) is used. Two types of lists are defined: (0) and L1 (reference list L1), and each has a reference index The reference picture is identified using this method. In P slices, L0 prediction (Pred_L0) is available. In B-slice, L0 prediction (Pred_L0), L1 prediction (Pred_L1), and biprediction (Pred_BI) are available. It is available. L0 prediction (Pred_L0) refers to a reference picture managed by L0. This is an interpretation, and the L1 prediction (Pred_L1) refers to a reference picture managed by L1. This is an interpretation method. In biprediction (Pred_BI), both L0 and L1 predictions are performed, and L0 This is an interface prediction that references one reference picture each managed by L1. The information that identifies the L0 prediction, L1 prediction, and dual prediction is defined as the reference mode. Subsequent processing In this case, constants and variables with the subscript LX in the output are processed separately for L0 and L1. It is assumed that it will be seen.

[0013] <Predictive motion vector mode> The predicted motion vector mode uses an index to identify the predicted motion vector, and the differential motion. Transmits vectors, reference modes, and reference indices, and predicts the interpretation of the blocks to be encoded. This is the mode for determining information. The predicted motion vector is the processed block adjacent to the block being processed. Blocks belonging to the processed image, or blocks in the same position as the block to be processed or Candidate predicted motion vectors derived from blocks located in the vicinity (nearby), and predicted motion vectors It is derived from an index used to identify the caller.

[0014] <Merge Mode> Merge mode does not transmit the differential motion vector or reference index, but processes the blocks to be processed. Processed blocks adjacent to the block, or blocks belonging to the processed image, are the blocks to be processed. Processing is performed using the interpretation information of blocks located at the same position as or near (in the vicinity of) the block in question. This mode derives inter-prediction information for the target block. Processed blocks adjacent to the block to be processed, and the interface of those processed blocks Predictive information is defined as spatial merge candidates. Blocks belonging to the processed image are the blocks to be processed. Blocks located in the same position as or near (near) a block, and the interface of that block - Interpretation information derived from prediction information is defined as a time merge candidate. Each merge candidate It is added to the merge candidate list, and the merge index predicts which blocks will be processed. Identify the merge candidates to be used.

[0015] <Nearby Block> Figure 11 shows how to derive interpredictive information in predictive motion vector mode and merge mode. This is a diagram illustrating the reference blocks used for referencing. A0, A1, A2, B0, B1, B2, B3 is a processed block adjacent to the block to be processed. T0 is the encoding / decoding block. Blocks belonging to the processed image are used for encoding / decoding the image. This block is located in the same position as or near (in the vicinity of) block K.

[0016] A1 and A2 are located to the left of the coding block to be processed, and adjacent to the coding block to be processed. These are adjacent blocks. B1 and B3 are located above the encoding block to be processed, and are the same as the processing block. These are blocks adjacent to the coded block. A0, B0, and B2 are the codes to be processed, respectively. These are the blocks located in the lower left, upper right, and upper left corners of the numbered block.

[0017] Details on how nearby blocks are handled in predictive motion vector mode and merge mode. Details will be explained later.

[0018] <Affine transformation motion compensation> Affine transformation motion compensation is performed by dividing the system into predetermined subblocks, and for each subblock, This system determines the motion vectors individually and performs motion compensation. The block is a processed block adjacent to the block to be processed, or a block belonging to the processed image. The interface of blocks located at the same position as or near the block being processed in the block. - Derived based on one or more control points derived from predictive information. In this embodiment, subblock The size of the block is set to 4x4 pixels, but the size of the subblock is not limited to this. Alternatively, motion vectors can be derived at the pixel level.

[0019] Figure 14 shows an example of affine transform motion compensation with two control points. In this case, the two Since the control point has two parameters, a horizontal component and a vertical component, the control point has two The affine transformation in this case is called a four-parameter affine transformation. (See Figure 14, CP1, CP2) These are the control points. Figure 15 shows an example of affine transform motion compensation with three control points. In this case, the three control points have two parameters: a horizontal component and a vertical component. An affine transformation with three control points is called a 6-parameter affine transformation. (Figure 15) CP1, CP2, and CP3 are control points.

[0020] Affine transformation motion compensation applies to both predictive motion vector modes and merged modes. It is also available in D. Apply affine transform motion compensation in predictive motion vector mode. We define the mode as the subblock prediction motion vector mode and the merge mode as the affine transformation. The mode to which motion compensation is applied is defined as subblock merge mode.

[0021] <Interpretation Syntax> Figures 12 and 13 are used to explain the syntax for interpretation. Figure 12 shows me rge_flag determines whether the target coding block is in merge mode or predictive motion vector mode. This is a flag that indicates whether to do so. merge_affine_flag is the encoding to be processed in merge mode. This flag indicates whether or not to apply subblock merge mode with the lock. _flag is the subblock of the coding block being processed in predictive motion vector mode. This flag indicates whether or not to apply the cu_affine_type_flag subblock. This is a flag used to determine the number of control points in the predictive motion vector mode. (Figure 1) Section 3 shows the values ​​of each syntax element and the corresponding prediction methods. merge_flag=1,m `erge_affine_flag=0` is a merge mode that is not a subblock merge, a normal merge mode. This corresponds to the `merge_flag=1` and `merge_affine_flag=1` options, which support subblock merge mode. Yes. merge_flag=0, inter_affine_flag=0 is the subblock predictive motion vector mode. This is a predictive motion vector merge, corresponding to the normal predictive motion vector mode. merge_flag =0,inter_affine_flag=1 corresponds to the subblock predictive motion vector mode. merge_fl If ag=0 and inter_affine_flag=1, then cu_affine_type_flag is also transmitted, and the number of control points To decide.

[0022] <poc> POC (Picture Order Count) is a variable associated with the picture being encoded. A value is set that increases by 1 in the order of the picture output. Depending on the value of POC, the same picture It can determine whether it is a picture, determine the order of pictures in the output order, and determine the order of pictures It is possible to derive the distance between two pictures. For example, if the POCs of two pictures have the same value... In this case, it can be determined that they are the same picture. If the two pictures have different POC values... The picture with the smaller POC value can be determined to be the picture that will be output first, 2 The difference in POC between the two pictures indicates the distance between the pictures in the time axis direction.

[0023] (First Embodiment) Regarding the image encoding device 100 and image decoding device 200 according to the first embodiment of the present invention I will explain.

[0024] Figure 1 is a block diagram of the image encoding device 100 according to the first embodiment. The motion image encoding device consists of an image encoding device 100, a block division unit 101, and an interpretation unit. Unit 102, Intra prediction unit 103, Decoded image memory 104, Prediction method determination unit 105, Residual Signal generation unit 106, orthogonal transformation / quantization unit 107, bit string encoding unit 108, inverse quantization / inverse It comprises an orthogonal transformation unit 109, a decoded image signal superposition unit 110, and an encoded information storage memory 111. El.

[0025] The block division unit 101 recursively divides the input image to generate encoded blocks. The block division section 101 divides the block to be divided in the horizontal and vertical directions, respectively. The four division points to be divided, and the blocks to be divided, are divided either horizontally or vertically. It includes a 2-3 division section. The image signal of the generated encoding block to be processed is interpreted. It is supplied to the measurement unit 102, the intra-prediction unit 103, and the residual signal generation unit 106. Information indicating the recursive partitioning structure is supplied to the bit string encoding unit 108. Block partitioning unit 10 The detailed operation of item 1 will be described later.

[0026] The interpretation unit 102 performs interpretation of the encoding block to be processed. Encoding information Prediction mode stored in storage memory, decoded image stored in decoded image memory 104 Multiple candidate interpretation information is derived from the image signal, and the most suitable one is selected from among the multiple candidates. Select the inter prediction mode, and the selected inter prediction mode and the selected inter prediction A prediction image signal corresponding to the measurement mode is supplied to the prediction method determination unit 105. Interpretation unit 10 The detailed configuration and operation of part 2 will be described later.

[0027] The intra prediction unit 103 performs intra prediction of the coding block to be processed. Predicted image signals are obtained from the decoded image signals stored in Mori 104 through intra-prediction. It generates and selects the most suitable intra-prediction mode from among multiple intra-prediction modes. The selected intra prediction mode and the predicted image signal corresponding to the selected intra prediction mode are predicted. It is supplied to the measurement method determination unit 105. Figure 10 shows an example of intra prediction. Figure 10(a) is This shows the correspondence between the prediction direction and prediction mode number for the prediction. For example, prediction mode 50 generates an intra-predictive image by copying pixels vertically. Mode 1 is DC mode, where all pixel values ​​of the block being processed are set to the average value of the reference pixels. This is the mode. Prediction mode 0 is Planar mode, which uses vertical and horizontal reference. This mode creates a two-dimensional intra-predictive image from pixels. Figure 10(b) shows the prediction mode. This is an example of generating an intra-predicted image for case 40. For each pixel of the block to be processed... Then, copy the value of the reference pixel in the direction indicated by the prediction mode. If the reference pixel is not available, the reference pixel value is determined by interpolation from the reference pixel values ​​at surrounding integer positions.

[0028] The decoded image memory 104 stores the decoded image generated by the decoded image signal superimposition unit 110. The decoded image stored in the decoded image memory is processed by the interpretation unit 102 and the interpretation unit 10 Supply to 3.

[0029] The prediction method determination unit 105 determines the coding amount of the coding information and residual signal, and the prediction image for each prediction. By evaluating using the amount of distortion between the image signal and the picture signal, the optimal prediction mode (in Determine whether to make a multi-prediction or intra-prediction. In the case of merge mode for intra-prediction, The index, information indicating whether or not it is in subblock merge mode (subblock merge flag) The encoded information of (g) is supplied to the bit string encoding unit 108, and the predicted motion vector of the interpretation is predicted. For mode, refer to the interpretation mode, predicted motion vector index, L0, and L1. Index, differential motion vector, information indicating whether or not it is in subblock mode (subblock Encoded information such as the predicted motion vector flag is supplied to the bit string encoding unit 108. The encoded information is supplied to the encoded information storage memory 111.

[0030] The residual signal generation unit 106 generates residual signals by subtracting the predicted image signal from the image signal to be processed. A difference signal is generated and supplied to the orthogonal transformation / quantization unit 107.

[0031] The orthogonal transformation / quantization unit 107 performs an orthogonal transformation on the residual signal according to the quantization parameters. The bit string encoding unit 108 performs quantization and generates an orthogonal transform and quantized residual signal, and the inverse This is supplied to the quantization / inverse orthogonal transformation unit 109.

[0032] The bit sequence encoding unit 108 encodes sequences, pictures, slices, and encoding blocks. In addition to the information, the prediction method determined by the prediction method determination unit 104 for each encoded block Encodes the corresponding encoding information. Specifically, the prediction mode PredMode for each encoding block, In split mode (PartMode) and inter prediction (PRED_INTER), determine whether it is merge mode. A flag to do so, a subblock merge flag, a merge index if in merge mode, and a merge flag. If not in motion mode, use the interpretation mode, predict motion vector index, and differential motion. Information regarding vectors, coded information such as subblock predicted motion vector flags, will be described later. Encode according to the prescribed syntax rules to generate the first encoded bit sequence. The string coding unit 108 encodes the orthogonal transform and quantized residual signals according to a defined syntax rule. Entropy coding is performed according to the first coded bit to generate a second coded bit sequence. The sequence and the second encoded bit sequence are multiplexed according to the specified syntax rules, and the bitstories Outputs "mu".

[0033] The inverse quantization / inverse orthogonal transformation unit 109 receives the orthogonal transformation supplied from the orthogonal transformation / quantization unit 107. The quantized residual signal is inversely quantized and inversely orthogonal transformed to calculate the residual signal, and the decoded image signal is obtained. It is supplied to the superimposed section 110.

[0034] The decoded image signal superimposition unit 110 superimposes the predicted image signal according to the determination made by the prediction method determination unit 105. The residual signals that have been inversely quantized and inversely orthogonal transformed by the inverse quantization / inverse orthogonal transformation unit 109 are superimposed and restored A decoded image is generated and stored in the decoded image memory 104. The decoded image is then encoded. After applying a filtering process to reduce distortions such as block distortion, the decoded image is stored in memory 104. It may be stored in [a different location].

[0035] The encoded information storage memory 111 stores the prediction mode (in) determined by the prediction method determination unit 105. It stores coded information such as (ter prediction or intra prediction). Coded information storage memory 111 The encoded information stored is, in the case of interpretation, the determined motion vector, reference list, In addition to the reference index, in the case of merge mode for interpretation, the merge index, Encoded information for the subblock merge flag, which indicates whether or not subblock merge mode is active. In the case of the interprediction motion vector mode, the interprediction mode, L0, L1 prediction Measured motion vector index, L0, L1 reference index, L0, L1 difference motion vector Information indicating whether or not it is in subblock mode (subblock predicted motion vector flag) In the case of intra-prediction, this is the determined intra-prediction mode, etc. Encoded information storage memory The construction of the history candidate list managed by 111 will be described later.

[0036] Figure 2 shows a video decoding device according to an embodiment of the present invention, corresponding to the video encoding device in Figure 1. This is a block showing the configuration. The video decoding device of this embodiment includes a bit sequence decoding unit 201, Lock division unit 202, inter prediction unit 203, intra prediction unit 204, coded information storage unit Mori 205, inverse quantization / inverse orthogonal transformation unit 206, decoded image signal superposition unit 207, and decoded image It is equipped with 208 image memory units.

[0037] The decoding process of the video decoding device in Figure 2 is located inside the video encoding device in Figure 1. Since it corresponds to the decoding process, the encoded information storage memory 205 in Figure 2, inverse quantization, inverse The configurations of the orthogonal transformation unit 206, the decoded image signal superimposition unit 207, and the decoded image memory 208 are as follows: Figure 1 shows the video encoding device, specifically the inverse quantization / inverse orthogonal transform unit 109 and the decoded image signal superposition unit 110. The configurations of the encoded information storage memory 111 and the decoded image memory 104 correspond to the respective configurations. It has the function of [doing something].

[0038] The bitstream supplied to the bit string decoding unit 201 follows the specified syntax rules. Then it is separated. The separated first encoded bit string is decoded, and the sequence, picture, slide To obtain information at the coding block level, and coded information at the coding block level. In terms of coding blocks, either inter-prediction (PRED_INTER) or intra-prediction (PRED_INTRA) is used. Prediction modes to determine whether it is PredMode, PartMode, or Interpretation (PRED_INTER) In this case, a flag to determine whether it is merge mode, and if it is merge mode, the merge index If the mode is predictive motion vector mode, then the interpredictive mode is also available. L0, L1 predicted motion vector index, L0, L1 reference index, L Encoding information related to the difference motion vector of 0 and L1, subblock predicted motion vector flags, etc. The information is decoded according to the syntax rules specified later, and the encoded information is processed by the interpretation unit 20 3 or supplied to the intra prediction unit 204 and the encoded information storage memory 205. Separated The second encoded bit sequence is decoded to calculate the orthogonal transformed and quantized residual signal, and then the orthogonal transform is applied. The quantized residual signal is supplied to the inverse quantization / inverse orthogonal transformation unit 208.

[0039] The interpretation unit 203 determines that the prediction mode PredMode of the coded block to be decoded is interpretation When prediction (PRED_INTER) is in prediction motion vector mode, the encoded information storage memory 205 Using the encoded information of already decoded image signals stored in the system, multiple predicted motion vectors Candidates for the vector are derived and registered in the list of predicted motion vector candidates described later. From among the multiple predicted motion vector candidates registered in the supplemental list, the first coded bit string decoding Predicted motion vector corresponding to the predicted motion vector index that is decoded and supplied in section 202 Select the difference vector decoded by the bit string decoding unit 201 and the selected predicted motion vector. The motion vector is calculated from the data and stored in the encoded information storage memory 205 along with other encoded information. The encoding information of the encoding block supplied and stored here is in Prediction Mode, minute PartMode, predFlagL0 (flag indicating whether to use L0 prediction and L1 prediction) [xP][yP], predFlagL1[xP][yP], L0, L1's reference index refIdxL0[xP][yP], refI dxL1[xP][yP], L0, L1 motion vectors mvL0[xP][yP], mvL1[xP][yP], etc. xP and yP are indices that indicate the position of the top-left pixel of the coded block within the picture. Prediction mode is set to Interpretation (MODE_INTER), and Interpretation mode is set to L0 Prediction. In the case of (Pred_L0), the flag predFlagL0, which indicates whether to use L0 prediction, is 1, L1 prediction The flag predFlagL1, which indicates whether to use measurement, is 0. Interpretation mode is L1 For measurement (Pred_L1), the flag predFlagL0, which indicates whether to use L0 prediction, is 0, L1 The flag predFlagL1, which indicates whether to use prediction, is 1. Interpretation mode is biprediction. For Pred_BI, the flag predFlagL0 indicates whether to use L0 prediction, and L1 prediction. The flag predFlagL1, which indicates whether to use it, is 1 in both cases. Furthermore, the encoding to be decoded... When the block prediction mode PredMode is set to interprediction (PRED_INTER) and merge mode, Derive the code candidates. The already decoded codes stored in the encoding information storage memory 205. Using the encoded information of the merged blocks, multiple merge candidates are derived, and the merge candidate list described later is... Registered in the stream, from among the multiple merge candidates registered in the merge candidate list, the bit string decoding unit Select a merge candidate corresponding to the merge index that is decrypted and supplied in 201, and the selected The flag predFlagL0[x] indicates whether to use the L0 and L1 predictions of the merge candidates. P][yP], predFlagL1[xP][yP], L0, L1's reference index refIdxL0[xP][yP], refIdx Interpretation information such as L1[xP][yP], L0, and L1 motion vectors mvL0[xP][yP], mvL1[xP][yP], etc. The report is supplied to the motion compensation prediction unit 206 and stored in the encoded information storage memory 205. Here, xP and yP are indices indicating the position of the top-left pixel of the encoded block within the picture. This is the case. The detailed configuration and operation of the interpretation unit will be described later.

[0040] The intra prediction unit 204 determines that the prediction mode PredMode of the coded block to be decoded is intra During prediction (PRED_INTRA), intra prediction is performed. The code decoded by the bit string decoding unit 201 The serialization information includes an intra-prediction mode, and the decoded image is determined according to the intra-prediction mode. Predicted image signals are obtained from the decoded image signals stored in the image memory 210 through intra-prediction. The intra-prediction unit 20 generates a signal and supplies the predicted image signal to the decoded image signal superimposition unit 209. Since 4 corresponds to the intra prediction unit 103 of the image coding device 100, The same processing as in the prediction unit 103 is performed.

[0041] The inverse quantization / inverse orthogonal transformation unit 208 converts the orthogonal bit sequence decoded by the first encoded bit sequence decoding unit 202. The transformed and quantized residual signal is subjected to an inverse orthogonal transform and inverse quantization, and the inverse orthogonal transform and inverse quantity Obtain the childized residual signal.

[0042] The decoded image signal superposition unit 209 superimposes the predicted image signal interpreted by the motion compensation prediction unit 206. The predicted image signal, or the predicted image signal intra-predicted by the intra-prediction unit 204, and inverse quantization / inverse quantization. By superimposing the inverse orthogonal transform and inversely quantized residual signal by the cross-transformation unit 208, The image signal is decoded and stored in the decoded image memory 210. When doing so, a filtering process is performed on the decoded image to reduce block distortion caused by encoding. After performing this process, the decoded image may be stored in the image memory 210.

[0043] Next, the operation of the block division unit 101 in the image encoding device 100 will be described. Figure 3 shows the process of dividing an image into tree blocks and then further dividing each tree block. This is a flowchart. First, the input image is divided into tree blocks of a predetermined size. (Step S1001). For each tree block, a predetermined order, i.e., raster Scan in the order of scanning (step S1002) and divide the interior of the tree block to be processed. (Step S1003).

[0044] Figure 7 is a flowchart showing the detailed operation of the splitting process in step S1003. Next, it is determined whether or not to divide the block to be processed into four parts (step S1101).

[0045] If it is determined that the block to be processed should be divided into four parts, then the block to be processed will be divided into four parts (S Step S1102). For each block into which the block to be processed has been divided, in Z-scan order, That is, scan in the order of upper left, upper right, lower left, and lower right (step S1103). Figure 5 shows Z This is an example of a can order, and Figure 6, 601, is an example where the processing block is divided into four parts. The numbers 0-3 in 601 indicate the order of processing. Then, in step S1101, it is divided. For each of the blocks, the flowchart in Figure 7 is called recursively.

[0046] If it is determined that the block to be processed should not be divided into 4 parts, then divide it into 2 or 3 parts (Step S1) 105).

[0047] Figure 8 is a flowchart detailing the operation of the 2-3 splitting process in step S1105. First, decide whether to divide the block to be processed into 2 or 3 parts, that is, whether to divide it into 2 or 3 parts. Determine whether or not to perform one of the actions (step S1201).

[0048] If it is not decided to divide the block to be processed into 2-3 parts, that is, if it is decided not to divide it. If necessary, the splitting is terminated (S1211), and the program returns to the higher-level block.

[0049] If it is determined that the block to be processed should be divided into 2-3 parts, then the block to be processed will be further divided into 2 parts. A decision is made as to whether or not to divide it (step S1202).

[0050] If it is determined that the block to be processed should be divided into two, the block to be processed will be divided vertically. A decision is made as to whether or not to proceed (step S1203), and based on the result, the block to be processed is lowered. Divide perpendicularly (step S1204), or divide the block to be processed horizontally. Step S1205). As a result of step S1204, the block to be processed is shown in Figure 602. As a result of step S1205, the block to be processed is divided into two vertical sections. As shown in Figure 604, it is divided into two horizontal sections.

[0051] If, in step S1202, it is not determined that the block to be processed should be divided into two parts, In other words, if it is decided to divide it into three parts, the question is whether to divide the block to be processed vertically or not. Determine (step S1206), and based on the result, divide the block to be processed vertically. Either divide it (step S1207) or divide the block to be processed horizontally (step S 1208). As a result of step S1207, the block to be processed is as shown in Figure 603, The block is divided into three perpendicular sections, and as a result of step S1208, the block to be processed is shown in Figure 605. As shown, it is divided into three horizontal sections.

[0052] After executing any of steps S1204 to S1205, the block to be processed For each divided block, scan from left to right and from top to bottom (step S1209). ). The numbers 0 to 3 in Figure 6, from 602 to 605, indicate the order of processing. Each of the divided parts For each block, the flowchart in Figure 8 is called recursively.

[0053] The recursive block partitioning described here depends on the number of times the block is partitioned, or the number of blocks being processed. The necessity of splitting may be restricted depending on the size, etc. The information restricting the necessity of splitting is the encoding device. Even if an agreement is made in advance between the decryption device and the system, it can be implemented in a configuration that does not involve the transmission of information. The encoding device determines the information that limits whether or not division is necessary and records it in the encoded bit sequence. This may be implemented by transmitting the data to the decoding device.

[0054] Next, the operation of the block division unit 202 in the image decoding device 200 will be described. The lock division unit 202 performs the same processing procedure as the block division unit 101 of the image encoding device 101. This divides the tree block. However, the block division of the image encoding device 101 In section 101, optimization methods such as estimating the optimal shape using image recognition and optimizing the strain rate are applied. In contrast to determining the optimal block division shape, the block division in the image decoding device 200 The splitting unit 202 decodes the block division information recorded in the encoded bit sequence, The difference lies in how the lock's split shape is determined.

[0055] Syntax (syntax rules for encoded bit sequences) relating to block partitioning in the first embodiment This is shown in Figure 9. coding_quadtree() represents the syntax for dividing a block into four parts. `multi_type_tree()` represents the syntax for splitting a block into two or three parts. qt_split is a flag that indicates whether or not to divide the block into four parts. If you want to split into four parts, set qt_split=1; if you don't want to split into four parts, set qt_split=0. If you want to split into four parts (qt_split= 1) For each of the four divided blocks, recursively perform the four division process (coding_quadtree(0), c coding_quadtree(1), coding_quadtree(2), coding_quadtree(3)). If not divided into 4 (qt_ `split=0)` determines the subsequent split according to `multi_type_tree()`. `mtt_split` further splits... This flag indicates whether or not to split. If further splitting is performed (mtt_split=1), then vertical splitting is performed. The `mtt_split_vertical` flag indicates whether to split horizontally or vertically, and the `mtt_split_vertical` flag indicates whether to split horizontally or vertically. Refer to mtt_split_binary, which is a flag that determines whether to split into three parts. al=1 indicates vertical splitting, and mtt_split_vertical=0 indicates horizontal splitting. This indicates that mtt_split_binary=1 splits into two, and mtt_split_binary=0 splits into three. This demonstrates the division process. The multi_type_tree is recursively called until mtt_split=0. Perform a more hierarchical block division.

[0056] <Interface Forecast> The inter prediction method according to the embodiment is shown in Figure 1, inter prediction unit 10 of the video encoding device. This is carried out in the inter-prediction unit 203 of the video decoding device shown in Figure 2.

[0057] The inter prediction method according to the embodiment will be explained with reference to the drawings. The method is performed in units of coded blocks, either by encoding or decoding.

[0058] (Explanation of the encoding side interpretation unit 102) Figure 16 shows a detailed configuration of the inter-prediction unit 102 of the video encoding device shown in Figure 1. The normal prediction motion vector derivation unit 301 derives a plurality of normal prediction motion vector candidates and makes predictions. Select a motion vector and calculate the difference vector between it and the detected motion vector. Interpretation mode, reference index, motion vector, and calculated difference vector are typically This becomes the interprediction information for the predicted motion vector mode. It is supplied to the measurement mode determination unit 305. The detailed configuration of the normal predicted motion vector derivation unit 301 and The processing will be explained later.

[0059] The normal merge mode derivation unit 302 derives multiple normal merge candidates and selects the normal merge candidates. Select and obtain interprediction information in normal merge mode. This interprediction information is inter This is supplied to the prediction mode determination unit 306. Detailed configuration and processing of the normal merge mode derivation unit 302 The reasoning will be explained later.

[0060] The subblock predicted motion vector derivation unit 303 derives multiple subblock predicted motion vectors Candidates are derived, a subblock predicted motion vector is selected, and the difference between it and the detected motion vector is calculated. Calculate the vector. Detected interpretation mode, reference index, motion vector. The calculated difference vector becomes the interprediction information for the normal predicted motion vector mode. Interpretation information is supplied to the interpretation mode determination unit 306. Subblock prediction The detailed configuration and processing of the motion vector derivation unit 303 will be described later.

[0061] The subblock merge mode derivation unit 304 derives multiple subblock merge candidates. Select subblock merge candidates and obtain interprediction information for the subblock merge mode. This inter-prediction information is supplied to the inter-prediction mode determination unit 306. Subblock The detailed configuration and processing of the merge mode derivation unit 304 will be described later.

[0062] The interpretation mode determination unit 305 normally uses the prediction motion vector derivation unit 301 and normal merge. Mode derivation unit 302, subblock predicted motion vector derivation unit 303, subblock merge Based on the interprediction information supplied from the mode derivation unit 304, the interprediction mode is determined. Determine. Interpretation information according to the determination result is received from the Interpretation Mode Determination Unit 305. It is supplied to the motion compensation prediction unit 306.

[0063] Based on the determined interprediction information, the motion compensation prediction unit 306 processes the decoded image memory 1 Interpretation is performed on the reference image signal stored in 04. For detailed configuration and processing... I will explain that later.

[0064] <Explanation of the decoding side interpretation unit 203> Figure 22 shows a detailed configuration of the inter-prediction unit 203 of the video decoding device shown in Figure 2.

[0065] The normal prediction motion vector derivation unit 401 derives multiple normal prediction motion vector candidates and makes predictions. Select a motion vector and calculate the difference vector between it and the detected motion vector. Interpretation mode, reference index, motion vector, difference vector are normal prediction motion vector This becomes the inter-prediction information in ctor mode. This inter-prediction information is transmitted via switch 408. The data is then supplied to the motion compensation prediction unit 406. The detailed structure of the normal predicted motion vector derivation unit 401 is shown below. The process of production and processing will be discussed later.

[0066] The normal merge mode derivation unit 402 derives multiple normal merge candidates and selects a normal merge candidate. Select and obtain interpredictive information in normal merge mode. This interpredictive information switches It is supplied to the motion compensation prediction unit 406 via 408. The detailed configuration and processing will be described later.

[0067] The subblock predicted motion vector derivation unit 403 derives multiple subblock predicted motion vectors Candidates are derived, a subblock predicted motion vector is selected, and the difference between it and the detected motion vector is calculated. Calculate the vector. Detected interpretation mode, reference index, motion vector. The calculated difference vector becomes the interprediction information for the normal predicted motion vector mode. The interpretation information is supplied to the motion compensation prediction unit 406 via switch 408. The detailed configuration and processing of the Bublock predicted motion vector derivation unit 403 will be described later.

[0068] The subblock merge mode derivation unit 404 derives multiple subblock merge candidates. Select subblock merge candidates and obtain interprediction information for the subblock merge mode. This interpretation information is supplied to the motion compensation prediction unit 406 via switch 408. The detailed configuration and processing of the subblock merge mode derivation unit 404 will be described later.

[0069] The motion compensation prediction unit 406 uses the determined interpretation prediction information to process the decoded image memory 1 Interpretation is performed on the reference image signal stored in 08. For detailed configuration and processing... The same applies to the encoding side.

[0070] <Normal Predictive Motion Vector Mode Derivation Unit (Normal AMVP)> The normal predicted motion vector mode derivation unit 301 in Figure 16 derives a candidate for spatial predicted motion vector. Unit 321, Time-predicted motion vector candidate derivation unit 322, History-predicted motion vector candidate derivation unit 3 23, Predicted motion vector candidate supplementation unit 325, Normal motion vector detection unit 326, Predicted motion vector It includes a candidate selection unit 327 and a motion vector subtraction unit 328.

[0071] The normal predicted motion vector mode derivation unit 402 in Figure 23 derives a candidate for spatial predicted motion vector. Unit 421, Time-predicted motion vector candidate derivation unit 422, History-predicted motion vector candidate derivation unit 4 23, Predicted motion vector candidate supplementation unit 425, Predicted motion vector candidate selection unit 426, motion vector Includes a culverter addition unit 428.

[0072] The encoding side's normal predicted motion vector mode derivation unit 301 and the decoding side's normal predicted motion vector The processing procedure for the Tormode Derivation Unit 401 is shown in the flowcharts in Figures 19 and 25, respectively. This will be explained using the following. Figure 19 shows the normal motion vector mode derivation unit 301 on the encoding side. This flowchart shows the procedure for deriving the predicted motion vector mode, and Figure 25 shows the decoding side. The procedure for deriving a normal predicted motion vector mode by the normal motion vector mode derivation unit 401 is shown. This is a flowchart.

[0073] <Explanation of the coding side: Typical predictive motion vector mode derivation unit (typical AMVP):> The procedure for deriving the normal predicted motion vector mode on the encoding side will be explained with reference to Figure 19.

[0074] First, the motion vector detection unit 326 detects each reference index in the interpretation mode. Normally, motion vectors are detected (step S100 in Figure 19).

[0075] Next, the spatial prediction motion vector candidate derivation unit 321, and the time prediction motion vector candidate derivation unit 3 22, History prediction motion vector candidate derivation unit 323, Prediction motion vector candidate supplementation unit 325, Pre The motion vector candidate selection unit 327 and the motion vector subtraction unit 328 select the normal predicted motion vector The difference motion vectors used in mode interpretation are L0 and L1 respectively. This is calculated (steps S101-S106 in Figure 19). Specifically, the blocks to be encoded are Prediction mode PredMode is Interpretation (MODE_INTER), and Interpretation mode is L0 Prediction ( In the case of Pred_L0), calculate the predicted motion vector candidate list mvpListL0 for L0, and then predict the motion vector Select the function mvpL0 and calculate the difference motion vector mvdL0 of the motion vector mvL0 of L0. If the interpretation mode of the block to be numbered is L1 prediction (Pred_L1), then the predicted movement of L1 The vector candidate list mvpListL1 is calculated, the predicted motion vector mvpL1 is selected, and the movement of L1 is calculated. Calculate the difference motion vector mvdL1 of vector mvL1. Interpretation of the block to be encoded. When the mode is dual prediction (Pred_BI), both L0 and L1 predictions are performed, and the L0 prediction movement is... The vector candidate list mvpListL0 is calculated, and the predicted motion vector mvpL0 of L0 is selected. The difference motion vector mvdL0 is calculated from the motion vector mvL0, and the predicted motion vector L1 is calculated. The candidate list mvpListL1 is calculated, the predicted motion vector mvpL1 of L1 is calculated, and the motion of L1 The difference motion vector mvdL1 is calculated for each of the motion vectors mvL1.

[0076] The differential motion vector calculation process is performed for both L0 and L1, but both L0 and L1 This is a common process. Therefore, in the following explanation, L0 and L1 will be represented as a common LX. In the process of calculating the differential motion vector of L0, X is 0, and the differential motion vector of L1 In the process of calculating the difference motion vector of LX, If you want to refer to information from the other list instead of LX, use LY for the other list. represent.

[0077] When calculating the difference motion vector mvdLX for LX (YES in step S102 of Figure 19) Calculate candidate predicted motion vectors for LX and create a list of candidate predicted motion vectors for LX (mvpListL). Construct X (step S103 in Figure 19). Normal predicted motion vector mode derivation unit 301 The spatial prediction motion vector candidate derivation unit 321 and the time prediction motion vector candidate derivation unit 322 are located within this unit. The history prediction motion vector candidate derivation unit 323 and the prediction motion vector candidate supplementation unit 325 generate multiple Candidate predicted motion vectors are derived, and a list of candidate predicted motion vectors, mvpListLX, is constructed. For a detailed explanation of the process in step S103 in Figure 19, please refer to the flowchart in Figure 20. More details will follow.

[0078] Next, the predicted motion vector candidate selection unit 327 selects the predicted motion vector candidate list for LX. Select the predicted motion vector mvpLX from mvpListLX (step S104 in Figure 19). Each predicted motion stored in the motion vector mvLX and the predicted motion vector candidate list mvpListLX The difference motion vectors are calculated, which are the differences between the candidate motion vectors in mvpListLX[i] and the current motion vector. The code value when these differential motion vectors are encoded is predicted in the motion vector candidate list mvpListL Calculated for each element of X, and within each element registered in the predicted motion vector candidate list mvpListLX , the candidate for the predicted motion vector that minimizes the sign amount for each candidate for the predicted motion vector is mvpListLX[i] Select the predicted motion vector mvpLX from the list of candidate predicted motion vectors mvpListLX. If there are multiple candidates for the predicted motion vector that yields the minimum generated code amount, then the predicted motion vector... The predicted motion vectors are represented by small numbers corresponding to index i in the candidate list mvpListLX. Select the candidate mvpListLX[i] as the optimal predicted motion vector mvpLX.

[0079] Next, the motion vector subtraction unit 328 subtracts the selected LX from the LX motion vector mvLX. The difference motion vector mvdLX is calculated by subtracting the predicted motion vector mvpLX. Step S105 in Figure 19.

[0080] (Explanation of the decoder side: Derivation of the normal predicted motion vector mode (normal AMVP):) Next, the normal predicted motion vector mode processing procedure on the decoding side will be explained with reference to Figure 25. On the other side, there is a spatial prediction motion vector candidate derivation unit 421 and a time prediction motion vector candidate derivation unit 4 22. History prediction motion vector candidate derivation unit 423, Prediction motion vector candidate supplementation unit 425, The motion vectors used in the interprediction of the normal predictive motion vector mode are L0 and L1 respectively. Each is calculated (steps S201-S206 in Figure 25). Specifically, the block to be decrypted Prediction mode is set to inter-prediction (MODE_INTER), and the inter-prediction is performed on the block to be decoded. If the mode is L0 prediction (Pred_L0), calculate the L0 prediction motion vector candidate list mvpListL0. Output, select the predicted motion vector mvpL0, and calculate the motion vector mvL0 of L0. Decoded pair If the prediction mode for the elephant block is L1 prediction (Pred_L1), the predicted motion vector of L1 The candidate list mvpListL1 is calculated, the predicted motion vector mvpL1 is selected, and the motion vector L1 Calculate mvL1. If the interpretation mode of the block to be decrypted is biprediction (Pred_BI) Both L0 and L1 predictions are performed, and the L0 prediction motion vector candidate list mvpListL0 is calculated. Then, select the predicted motion vector mvpL0 for L0 and calculate the motion vector mvL0 for L0. Together, we calculate the L1 predicted motion vector candidate list mvpListL1, and the L1 predicted motion vector The torque mvpL1 is calculated, and the motion vector mvL1 of L1 is calculated for each.

[0081] Similar to the encoding side, the decoding side also performs motion vector calculation processing for L0 and L1 respectively. This process is performed, but it is the same for both L0 and L1. Therefore, in the following explanation, L0, Let L1 be represented as a common LX. In the process of calculating the motion vector of L0, X is 0, and L In the process of calculating the motion vector of 1, X is 1. Also, the motion vector of LX is calculated. If, during the process, information from the other list is referenced instead of LX, then the other list... This is represented as LY.

[0082] When calculating the motion vector mvLX of LX (YES in step S202 of Figure 25), LX Calculate candidate predicted motion vectors and construct a list of LX predicted motion vector candidates, mvpListLX. To build (step S203 in Figure 25). In the normal predicted motion vector mode derivation unit 401 Spatial prediction motion vector candidate derivation unit 421, time prediction motion vector candidate derivation unit 422, history Multiple predicted motion vectors are generated in the predicted motion vector candidate derivation unit 423 and the predicted motion vector candidate supplementation unit 425. Candidate motion vectors are calculated, and a list of predicted motion vector candidates, mvpListLX, is constructed. (Figure 25) The detailed processing procedure for step S203 will be described later using the flowchart in Figure 20. ru.

[0083] Next, the predicted motion vector candidate selection unit 426 selects the predicted motion vector candidate list mvpListLX The index mv of the predicted motion vector, which is decoded and supplied by the bit sequence decoding unit 201. Candidate predicted motion vectors corresponding to pIdxLX are mvpListLX[mvpIdxLX] selected as predicted motion vectors Extract it as `mvpLX` (step S204 in Figure 25).

[0084] Next, the motion vector addition unit 427 decodes the bit string decoding unit 201 and supplies it. By adding the difference motion vector mvdLX of LX and the predicted motion vector mvpLX of LX, LX The motion vector mvLX is calculated (step S205 in Figure 25).

[0085] <Normal Predictive Motion Vector Mode Derivation Unit (Normal AMVP): Method for Predicting Motion Vectors> Figure 20 shows the normal predicted motion vector mode guide of the motion image encoding device according to an embodiment of the present invention. Common to the output unit 301 and the normal predicted motion vector mode derivation unit 401 of the motion image decoding device This flowchart represents the processing procedure for the normal predictive motion vector mode derivation process that has the necessary functionality. ru.

[0086] Normal prediction motion vector mode derivation unit 301 and Normal prediction motion vector mode derivation unit 40 In version 1, a list of candidate motion vectors, mvpListLXN (where N is A or B, and so on), is provided. The predicted motion vector candidate list mvpListLXN has a list structure and contains predicted motion vector candidates. A predicted motion vector index that indicates the location within the supplementary list, and the corresponding prediction A memory area is provided for storing candidate motion vectors as elements. Predicted motion vector The index numbers start from 0, and the memory of the predicted motion vector candidate list mvpListLXN The predicted motion vector candidates are stored in the region. Subsequent processing will store the predicted motion vector candidate list. The predicted motion vector index i registered in mvpListLXN is a candidate for the predicted motion vector. The encoded block will be represented by mvpListLXN[i], and the predicted motion vector candidate list mvpL istLXN will be distinguished by using array notation. In this embodiment, predictive motion The vector candidate list mvpListLXN contains a maximum of two predicted motion vector candidates (interpretation information). It shall be possible to register the report. Furthermore, the predicted motion vector candidate list mvpListL The variable numMvpCand, which indicates the number of predicted motion vector candidates registered in XN, is set to 0.

[0087] The spatial prediction motion vector candidate derivation units 321 and 421 are located in the coding block adjacent to the left. We derive candidate predicted motion vectors and the predicted motion vector of the coding block adjacent to the left. A flag (availableFlagLXA) indicating whether a candidate is available, and a motion vector (mvLXA). Derive reference index refIdxA, list A, and predict motion vector candidate list m Add to vpListLXA (step S301 in Figure 20). Note that when L0, X is 0, and L1 is Then X is set to 1 (the same applies below). Next, the predicted motion vector candidate generation units 121 and 221 This derives candidate predicted motion vectors from the coding blocks adjacent to the upper side, and the upper side adjacent The `availableF` flag indicates whether a predicted motion vector candidate for the coded block is available. Derive lagLXB, motion vector mvLXB, reference index refIdxB, and list ListB, mvL If XA and mvLXB are not equal, add mvLXB to the predicted motion vector candidate list mvpListLXB. (Step S302 in Figure 20). See the process in steps S301 and S302 in Figure 20. They are similar except for the difference in the position and number of adjacent blocks, and the predicted motion vector of the encoded block A flag (availableFlagLXN) indicating whether a candidate is available, and a motion vector (mvLXN), Derive the reference index refIdxN and ListN (where N is A or B, and so on).

[0088] Next, the time prediction motion vector candidate derivation units 322 and 422 use pictures of different time points. Derive candidate predicted motion vectors from coded blocks and encode pictures at different time points. availableFlagLXCol is a flag indicating whether a candidate predicted motion vector for a block is available. , and derive the motion vector mvLXCol, the reference index refIdxCol, and the list ListCol, mvL Add XCol to the predicted motion vector candidate list mvpListLX (step S303 in Figure 20). The derivation procedure for step S303 will be explained in detail later.

[0089] Here, time-predicted motion is measured in units of sequence (SPS), picture (PPS), or slice. The processing in the candidate deriving units 322 and 422 can be omitted.

[0090] Subsequently, the history prediction motion vector candidate derivation units 323 and 423 add the history prediction motion vector candidates registered in the history prediction motion vector candidate list HmvpCandList to the motion vector candidate list mvpListLX. (Step S304 in FIG. 20). The registration processing procedure of this step S304 will be described in detail later using the flowchart of FIG. 41. Subsequently, the prediction motion vector candidate supplementing units 325 and 425 add a motion vector with a predetermined value such as (0, 0) until the prediction motion vector candidate list mvpListLX is filled (S305 in FIG. 20).

[0091]

[0092] <Normal merge mode derivation unit (normal merge)> The normal merge mode derivation unit 302 in FIG. 18 includes a spatial merge candidate derivation unit 341, a temporal merge candidate derivation unit 342, an average merge candidate derivation unit 344, a history merge candidate derivation unit 345, a merge candidate supplementing unit 346, and a merge candidate selection unit 347.

[0093] The normal merge mode derivation unit 402 in FIG. 24 includes a spatial merge candidate derivation unit 441, a temporal merge candidate derivation unit 442, an average merge candidate derivation unit 444, a history merge candidate derivation unit 445, a merge candidate supplementing unit 446, and a merge candidate selection unit 447.

[0094] FIG. 21 is a flowchart for explaining the procedure of merge mode derivation processing having functions common to the normal merge mode derivation unit 302 of the moving image encoding device and the normal merge mode derivation unit 402 of the moving image decoding device according to the embodiment of the present invention.

[0095] Hereinafter, various processes will be described in order. In the following description, unless otherwise specified, ​​​​​​​​​​​This section explains the case where slice type is B slice, but what about the case of P slice? This can also be applied. However, if the slice type slice_type is a P slice, the interpretation model There is only L0 prediction (Pred_L0) as a code; L1 prediction (Pred_L1) and biprediction (Pred_BI) are not available. Since it is not present, the processing related to L1 can be omitted.

[0096] In the normal merge mode derivation unit 302 and the normal merge mode derivation unit 402, merge candidate It has a mergeCandList. The merge candidate list mergeCandList has a list structure, A merge index that shows the location within the merge candidate list, and the merge corresponding to the index. A memory area is provided to store merge candidates as elements. The merge index number is 0. Starting from there, the merge candidates are stored in the memory area of ​​the merge candidate list, mergeCandList. In subsequent processing, the merge index i registered in the merge candidate list mergeCandList will be used. The coding blocks that are candidates for merging will be represented by mergeCandList[i], and the merge candidate To distinguish it from `stra` and `mergeCandList`, we will use array notation. Therefore, the mergeCandList displays a maximum of 6 merge candidates (interface prediction information). It shall be possible to register. Furthermore, it shall be possible to register it in the merge candidate list mergeCandList. The variable numMergeCand, which indicates the number of merge candidates, is set to 0.

[0097] In the spatial merge candidate derivation unit 341 and the spatial merge candidate derivation unit 441, the video encoding device The encoded information storage memory 115 or the encoded information storage memory 210 of the video decoding device From the stored encoding information, each encoding block adjacent to the block to be encoded / decoded Derive spatial merge candidates A, B, C, D, E from locks A, B, C, D, E, and the derived Register the selected spatial merge candidates in the merge candidate list (step S in Figure 21). 401). Here, N represents one of A, B, C, D, E, or a time merge candidate Col. Define the interprediction information of coded block N, which can be used as spatial merge candidate N. A flag, availableFlagN, indicates whether or not; the reference index refI of L0 for the spatial merge candidate N. dxL0N and L1 reference index refIdxL1N, L0 prediction indicating whether L0 prediction is performed. The measurement flag predFlagL0N and the L1 prediction flag predFlagL, which indicates whether L1 prediction is performed, are included. Derive the motion vectors mvL0N for 1N and L0, and mvL1N for L1. However, in this implementation... In terms of form, the encoding block containing the encoding block to be processed is the same encoding block as the encoding block. Since merge candidates are derived without referring to the encoded blocks contained in the code, the code to be processed is... Spatial merge candidates included in the same coding block as the coding block containing the coding block are derived. do not.

[0098] Next, the time merge candidate derivation unit 342 and the time merge candidate derivation unit 442 consider different times Derive time merge candidates from the intermediate pictures, and use the derived time merge candidates as merge candidates. Register the mergeCandList (step S402 in Figure 21). Time merge candidates are used. A flag, `availableFlagCol`, indicates whether it is possible, and whether L0 predictions for time merge candidates are performed. The L0 prediction flag predFlagL0Col indicates whether or not prediction is performed, and the L1 prediction flag indicates whether or not prediction is performed. Derive the prediction flag predFlagL1Col, the motion vector mvL0Col of L0, and the motion vector mvL1 of L1. The detailed processing procedure of step S402 will be described later in detail using the flow charts of FIGS. 44 to 47. Col. It will be described in detail later using the chart.

[0099] Here, it is assumed that the processing of the sequence (SPS), picture (PPS), or slice unit time merge candidate derivation unit 342 and the time merge candidate derivation unit 442 can be omitted.

[0100] Subsequently, the average merge candidate derivation units 344 and 444 derive average merge candidates from the merge candidate list mergeCandList and register the derived average merge candidates in the merge candidate list mergeCandList (step S403 in FIG. 21). The average merge candidate is derived when two or more candidates are included in the merge candidate list.

[0101] Subsequently, the history merge candidate derivation units 345 and 445 add the history prediction motion vector candidates registered in the history prediction motion vector candidate list HmvpCandList to the merge candidate list mergeCandList (step S404 in FIG. 21). The detailed processing procedure of step S404 will be described in detail later using the flowchart of FIG. 41.

[0102] Subsequently, when the number of merge candidates numMergeCand registered in the merge candidate list mergeCandList is smaller than the maximum number of merge candidates maxNumMergeCand, the merge candidate supplement units 346 and 446... The number of candidates, numMergeCand, is limited to the maximum number of merge candidates, maxNumMergeCand, up to the limit for additional merge candidates. The result is derived and registered in the merge candidate list, mergeCandList (step S405 in Figure 21). With a maximum number of merge candidates, maxNumMergeCand, as the upper limit, P slices can use different reference indices. In the prediction mode, the motion vector has a value of (0,0) and is the zero-point prediction of L0 (Pred_L0). Add a slice candidate. In a B slice, the motion vector is (0, Prediction modes with a value of 0) add zero-merge candidates for dual prediction (Pred_BI).

[0103] Next, the merge candidate selection unit 347 and the merge candidate supplementation unit 447 select the merge candidate list. Select a merge candidate from the merge candidates registered in mergeCandList. (Encoding side) The merge candidate selection unit 347 selects a merge candidate by calculating the sign amount and strain amount. , a merge index showing the selected merge candidates, and predictive information for the merge candidates It is supplied to the motion compensation prediction unit 406. Meanwhile, the merge candidate replenishment unit 447 on the decoding side is decoded Based on the selected merge index, select merge candidates and move the selected merge candidates. It is supplied to the compensation prediction unit 406.

[0104] <Average merge candidate> This section explains the average merge candidate. The average merge candidate is the number of merge candidates that are included in the merge candidate list. It is derived using two merge candidates, the first merge candidate and the second merge candidate. The merge candidate is the movement vector of the L0 prediction of the first merge candidate and the movement of the L0 prediction of the second merge candidate. The average motion vector of the L0 prediction, which is the average of the vectors, and the motion vector of the L1 prediction of the first merge candidate. The average L1 prediction motion vector is obtained by averaging the L1 prediction motion vectors of the lead and the second merge candidate. This is a merge candidate with a . The reference index for the L0 prediction of the average merge candidate is the first . This is the reference index for the L0 prediction of the merge candidate, and the reference index for the L1 prediction of the average merge candidate. 'ks' is the reference index for the L1 prediction of the first merge candidate. Note that the average movement vector is In the derivation, the horizontal and vertical components of the motion vector are considered independently. And average it. That is, the horizontal component of the average motion vector of the L0 prediction of the average merge candidate is , the motion vector of the L0 prediction for the first merge candidate and the motion vector of the L0 prediction for the second merge candidate This is the average of each horizontal component, representing the average movement of the L0 prediction for the average merge candidate. The vertical component of the vector is the motion vector of the L0 prediction of the first merge candidate and the second merge candidate This is the average of the vertical components of each L0 predicted motion vector. The same applies to the average motion vector of the supplemental L1 prediction. By deriving the average merge candidate after the historical merge candidate, the historical merge candidate is average It becomes a candidate for merge, and even if the total number of spatial and temporal merge candidates is 1 or less, the history merge By using merge candidates, it becomes possible to derive the average merge candidate, improving encoding efficiency. . <Derivation of subblock predicted motion vector modes> This section explains the derivation of the subblock predicted motion vector mode.

[0105] Figure 26 shows the subblock predictive motion vector mode derivation unit 30 in the coding device of the present invention. This is a block diagram of 3.

[0106] First, in the affine inheritance prediction motion vector candidate derivation unit 361, the affine inheritance prediction motion We derive candidate vectors. Details on deriving candidate motion vectors for affine inheritance prediction will follow later. To state.

[0107] Next, in the affine construction prediction motion vector candidate derivation unit 362, affine construction prediction Derive candidate motion vectors. For details on deriving candidate motion vectors for affine construction, see below. More details will follow.

[0108] Next, in the affine identical prediction motion vector candidate derivation unit 363, affine identical prediction We derive candidate motion vectors. For details on deriving candidate motion vectors for affine identical predictions, see below. More details will follow.

[0109] The subblock motion vector detection unit 366 is suitable for the subblock predicted motion vector mode. It detects the subblock motion vector and uses the detected vector as the subblock predicted motion vector. This is supplied to the candidate selection unit 367 and the difference calculation unit 368.

[0110] The subblock prediction motion vector candidate selection unit 367 selects affine inheritance prediction motion vector candidates. Supplementary derivation unit 361, affine construction prediction motion vector candidate derivation unit 362, affine identical prediction motion Among the subblock predicted motion vector candidates derived in the vector candidate derivation unit 363 Based on the motion vector supplied from the subblock motion vector detection unit 366, Select a candidate subblock predicted motion vector, and the selected subblock predicted motion vector Information regarding the candidates is supplied to the interpretation mode determination unit 305 and the difference calculation unit 368.

[0111] The difference calculation unit 368 receives the motion vector supplied from the subblock motion vector detection unit 366. From the toll vector, the subblock predicted motion vector candidate selection unit 367 selects the subblock The difference prediction motion vector obtained by subtracting the lock prediction motion vector is used in the interpretation mode determination unit. It will supply to 305.

[0112] Figure 27 shows the subblock predicted motion vector mode derivation unit 403 in the decoding device of the present invention. This is a block diagram.

[0113] First, in the affine inheritance prediction motion vector candidate derivation unit 461, the affine inheritance prediction motion The vector candidate is derived. The processing of the affine inheritance prediction motion vector candidate derivation unit 461 is as follows: The processing is the same as that of the affine inheritance prediction motion vector candidate derivation unit 361 in the coding device of the invention. be.

[0114] Next, in the affine construction prediction motion vector candidate derivation unit 462, affine construction prediction The motion vector candidates are derived. The processing of the affine construction prediction motion vector candidate derivation unit 462 is as follows: The processing is identical to that of the affine construction prediction motion vector candidate derivation unit 362 in the encoding device of the present invention. That is the case.

[0115] Next, in the affine identical prediction motion vector candidate derivation unit 463, affine identical prediction The motion vector candidates are derived. The processing of the affine identical predicted motion vector candidate derivation unit 463 is as follows: The processing is the same as that of the affine identical predictive motion vector candidate derivation unit 363 in the encoding device of the present invention. That is the case.

[0116] The subblock prediction motion vector candidate selection unit 467 selects affine inheritance prediction motion vector candidates. Supplemental derivation unit 461, affine construction predicted motion vector candidate derivation unit 462, affine identical predicted motion Among the subblock predicted motion vector candidates derived in the vector candidate derivation unit 463 Based on the predicted motion vector index transmitted and decoded from the encoding device, Select a block predictive motion vector candidate, and then select a subblock predictive motion vector candidate. Information regarding compensation is supplied to the motion compensation prediction unit 406 and the addition calculation unit 467.

[0117] The addition unit 467 performs an addition operation on the subblock predicted motion vector candidate selection unit 466. The block predictive motion vector is converted to the differential motion vector transmitted from the encoding device and decoded. The motion vector generated by summing is supplied to the motion compensation prediction unit 406.

[0118] <Affine inheritance prediction motion vector candidate derivation> The affine inheritance prediction motion vector candidate derivation unit 361 will be explained. Regarding the motion vector candidate derivation unit 461, the affine inheritance prediction motion vector candidate derivation unit 36 It is the same as 1.

[0119] The affine inheritance prediction motion vector candidate inherits the motion vector information of the affine control point. .

[0120] Figure 30 illustrates the derivation of candidate motion vectors for affine inheritance prediction.

[0121] Affine inheritance predictive motion vector candidates are based on spatially adjacent encoded and decoded blocks. This is obtained by searching for the motion vectors of the affine control points.

[0122] Specifically, the blocks adjacent to the left of the block to be encoded / decoded (A0, A1), From the blocks adjacent to the block to be encoded and decoded (B0, B1, B2), each Then, we search for at most one affine mode and use it as the affine inheritance predicted motion vector.

[0123] Figure 34 is a flowchart for deriving candidate motion vectors for affine inheritance prediction.

[0124] First, the blocks adjacent to the left of the block to be encoded / decoded (A0, A1) are left-glued. Blocks containing A0 (S3101) are blocks that use affine guarantees (affine Determine whether or not it is in affine mode (S3102). 3102:YES), obtain the affine model used by A0 (S3103), and the adjacent one on the upper side. The process moves on to the adjacent blocks. If A0 is not in affine mode (S3102:NO), The target for deriving candidate motion vectors for affine inheritance prediction is A0->A1, and the block containing A1 is defined as the block. Attempting to acquire affine mode.

[0125] Next, the blocks adjacent to the top of the block to be encoded / decoded (B0, B1, B2) The upper group (S3104) determines whether the block containing B0 is in affine mode. Dismiss (S3105). If B0 is in affine mode (S3105: YES), B0 The affine model used is obtained (S3106), and the process is terminated. B0 is the affine model If it is not a code (S3105:NO), the target of the affine inheritance prediction motion vector candidate derivation is Set B0 to B1 and attempt to obtain the affine mode from the block containing B1. Furthermore, B If 1 is not in affine mode (S3105:NO), then the affine inheritance prediction motion vector candidate The target of the supplementary derivation is B1->B2, and we attempt to obtain the affine mode from the block containing B2. ru.

[0126] In this way, we divide the group into a left block and an upper block, and then we discuss the left block. The affine model is explored in the order of the blocks from bottom left to top left, and for the leftmost block, By exploring affine models in the order of the blocks from the top right to the top left, we can find two as different as possible. We can obtain an affine model, and either of the affine predicted motion vectors is a difference motion Candidate affine prediction motion vectors with small y vectors can be derived.

[0127] <Affine Construction Prediction: Derivation of Candidate Motion Vectors> The affine construction prediction motion vector candidate derivation unit 362 will be explained. Regarding the motion vector candidate derivation unit 462, the affine construction prediction motion vector candidate derivation unit 36 It is the same as in 2.

[0128] Affine construction prediction motion vector candidates are derived from the motion information of spatially adjacent blocks. The motion vector information of the control point is constructed.

[0129] Figure 31 illustrates the derivation of candidate motion vectors for affine construction prediction.

[0130] Affine construction predicts motion vector candidates for spatially adjacent encoded and decoded blocks. This is obtained by combining existing motion vectors to construct a new affine model.

[0131] Specifically, the block adjacent to the upper left of the block to be encoded / decoded (B2, B3, A 2) Derive the motion vector of the upper-left affine control point CP0, and the block to be encoded / decoded. The movement vector of the upper right affine control point CP1 from the adjacent block (B1, B0) on the upper right side. The code is derived from the block adjacent to the lower left side of the block to be encoded / decoded (A1, A0). Derive the motion vector of the lower left affine control point CP2.

[0132] Figure 35 is a flowchart for deriving candidate motion vectors for affine construction prediction.

[0133] First, we derive the upper left control point CP0, the upper right control point CP1, and the lower left affine control point CP2. S3201). The upper left affine control point CP0 is the same reference drawing as the block to be encoded / decoded. The calculation is performed by searching for reference blocks that have an image, in the order of priority of B2, B3, and A2 reference blocks. The upper right affine control point CP1 is the same reference image as the block to be encoded / decoded. It is calculated by searching for reference blocks in the order of priority of B1 and B0 reference blocks. Bottom left Affine control point CP2 is a reference block that has the same reference image as the block to be encoded / decoded. The value of 'ku' is calculated by searching for the A1 and A0 reference blocks in order of priority.

[0134] When selecting the 3-point affine control mode as the affine construction prediction motion vector (S 3202:YES), all three affine control points (CP0, CP1, CP2) are derived. Determine whether or not it was done (S3203). Three affine control points (CP0, CP1, CP2 If all of the above are derived (S3203:YES), then the three affine control points (CP0, C The affine model using P1, CP2) is used as the affine construction prediction motion vector (S32 04) If you select the 2-point affine control mode instead of the 3-point affine control mode. As a result (S3202:NO), both affine control points (CP0, CP1) were derived. Determine whether or not (S3205). Both affine control points (CP0, CP1) are led. If this is issued (S3205:YES), two affine control points (CP0, CP1) will be used. The resulting affine model is used as the affine construction predictive motion vector (S3206).

[0135] <Derivation of candidate affine identical predictive motion vectors> The affine identical prediction motion vector candidate derivation unit 363 will be explained. The motion vector candidate derivation unit 463 also corresponds to the affine identical predicted motion vector candidate derivation unit 36 It is the same as 3.

[0136] Candidate affine identical predicted motion vectors are derived by deriving the same motion vector at each affine control point. It can be obtained by doing so.

[0137] Specifically, similar to the affine construction prediction motion vector candidate derivation units 362 and 462, each A The fin control point information is derived, and all affine control points are set to be the same in one of CP0 to CP2. This can be obtained by setting it to [this value]. Also, the time motion derived in the same way as the normal predicted motion vector mode is obtained. This can also be obtained by setting the vector to all affine control points.

[0138] <Derivation of subblock merge mode> The derivation of the subblock merge mode will be explained.

[0139] Figure 28 shows the subblock merge mode derivation unit 304 in the encoding device of the present invention. This is a diagram. The subblock merge mode derivation unit 304 is a subblock merge candidate list. It includes a subblockMergeCandList. This is in the normal merge mode derivation unit 302. Similar to mergeCandList, this is a list of merge candidates, but with different candidate lists for each subblock. The only difference is that it becomes a strike.

[0140] First, in the subblock time merge candidate derivation unit 381, The supplement is derived. Details of the derivation of subblock time merge candidates will be described later.

[0141] Next, the affine inheritance merge candidate derivation unit 382 derives the affine inheritance merge candidate. To generate. Details on deriving affine inheritance merge candidates will be discussed later.

[0142] Next, in the affine construction merge candidate derivation unit 383, the affine construction merge candidates are derived. To generate. Details on deriving affine construction merge candidates will be discussed later.

[0143] Next, the affine fixed merge candidate derivation unit 384 derives the affine fixed merge candidate. To generate. Details on deriving affine fixed merge candidates will be discussed later.

[0144] The subblock merge candidate selection unit 386 is a subblock time merge candidate derivation unit 381, Affine inheritance merge candidate derivation unit 382, ​​Affine construction merge candidate derivation unit 383, Affine From among the subblock merge candidates derived in the fixed merge candidate derivation unit 384, Select block merge candidates and interact with the selected subblock merge candidates. - Supplied to the prediction mode determination unit 305.

[0145] Figure 29 shows the blocks of the subblock merge mode derivation unit 404 in the decoding device of the present invention. This is a diagram. The subblock merge mode derivation unit 404 is a subblock merge candidate list su It includes bblockMergeCandList, which is a subblock merge mode derivation unit 304 and They are the same thing.

[0146] First, in the subblock time merge candidate derivation unit 481, The supplement is derived. The processing of the subblock time merge candidate derivation unit 481 is the subblock time merge. This is the same process as the candidate derivation unit 381.

[0147] Next, in the affine inheritance merge candidate derivation unit 482, the affine inheritance merge candidates are derived. Output. The processing of the affine inheritance merge candidate derivation unit 482 is performed by the affine inheritance merge candidate derivation unit 3 This is the same process as in 82.

[0148] Next, in the affine construction merge candidate derivation unit 483, the affine construction merge candidates are derived. Output. The processing of the affine construction merge candidate derivation unit 483 is performed by the affine construction merge candidate derivation unit 3 This is the same process as in 83.

[0149] Next, the affine fixed merge candidate derivation unit 485 derives the affine fixed merge candidate. Output. The processing of the affine fixed merge candidate derivation unit 485 is performed by the affine fixed merge candidate derivation unit 4 This is the same process as in step 85.

[0150] The subblock merge candidate selection unit 486 is a subblock time merge candidate derivation unit 481, Affine inheritance merge candidate derivation unit 482, Affine construction merge candidate derivation unit 483, Affine From among the subblock merge candidates derived in the fixed merge candidate derivation unit 484, Select subblock merge candidates based on the index transmitted and decoded from the processing device. The system then supplies information about the selected subblock merge candidates to the motion compensation prediction unit 406. .

[0151] <Derivation of subblock time merge candidates> The operation of the subblock time merge candidate derivation unit 381 will be described later.

[0152] <Affine inheritance merge candidate derivation> The affine inheritance merge candidate derivation unit 382 will be explained. Section 482 is the same as section 382 for affine inheritance merge candidate derivation.

[0153] Affine inheritance merge candidates are derived from the affine models of spatially adjacent blocks. The affine model of the fin control points is inherited.

[0154] Figure 32 is a diagram illustrating the derivation of affine inheritance merge candidates. The derivation of the zimode candidate, similar to the derivation of the affine inheritance predictive motion vector, involves spatially adjacent elements. This is obtained by searching for the motion vectors of the affine control points in the encoded and decoded blocks. It is possible.

[0155] Specifically, the blocks adjacent to the left of the block to be encoded / decoded (A0, A1), From the blocks adjacent to the block to be encoded and decoded (B0, B1, B2), each It explores at most one affine mode and uses it for the affine merge mode.

[0156] Figure 36 is a flowchart for deriving candidates for affine inheritance merge.

[0157] First, the blocks adjacent to the left of the block to be encoded / decoded (A0, A1) are left-glued. (S3301) The program determines whether the block containing A0 is in affine mode. S3302). If A0 is in affine mode (S3102: YES), A0 is used The affine model is obtained (S3303), and processing of the adjacent block above is initiated. A0 If it is not in affine mode (S3302:NO), it is subject to affine inheritance merge candidate derivation. Let A0 be A1, and attempt to obtain the affine mode from the block containing A1.

[0158] Next, the blocks adjacent to the top of the block to be encoded / decoded (B0, B1, B2) The upper group (S3304) determines whether the block containing B0 is in affine mode. Dismiss (S3305). If B0 is in affine mode (S3305: YES), B0 The affine model used is obtained (S3306), and the process is terminated. B0 is the affine model If not (S3305:NO), the target of the affine inheritance merge candidate derivation is B0->B Assuming 1, we attempt to obtain the affine mode from the block containing B1. Furthermore, if B1 is affine If not in n-mode (S3305:NO), the target of the affine inheritance merge candidate derivation is B1- Let's call it B2, and attempt to obtain the affine mode from the block containing B2.

[0159] <Affine construction merge candidate derivation> The affine construction merge candidate derivation unit 383 will be explained. Section 483 is the same as the affine construction merge candidate derivation section 383.

[0160] Figure 33 is a diagram illustrating the derivation of affine construction merge candidates. Affine construction merge candidates This involves affine generation from the motion information of spatially adjacent blocks and time-coded blocks. Construct an affine model of the point.

[0161] Specifically, the block adjacent to the upper left of the block to be encoded / decoded (B2, B3, A 2) Derive the motion vector of the upper-left affine control point CP0, and the block to be encoded / decoded. The movement vector of the upper right affine control point CP1 from the adjacent block (B1, B0) on the upper right side. The code is derived from the block adjacent to the lower left side of the block to be encoded / decoded (A1, A0). The motion vector of the lower left affine control point CP2 is derived, and the lower right side of the block to be encoded / decoded The motion vector of the lower-right affine control point CP3 is obtained from the adjacent time-coded block (T0). Derive.

[0162] Figure 37 is a flowchart for deriving candidates for affine construction merge.

[0163] First, the upper left affine control point CP0, the upper right affine control point CP1, and the lower left affine control point C P2 derives the lower right affine control point CP3 (S3401). The upper left control point CP0 is the movement The information is calculated by searching for blocks containing the information in the priority order of B2, B3, and A2. The upper right control point CP1 controls blocks containing motion information in the order of priority of blocks B1 and B0. It is calculated by searching. The lower left control point CP2 is a block that has motion information, A1, It is calculated by searching in the priority order of the A0 block. The lower right control point CP3 is a time block. It is calculated by searching for movement information.

[0164] Next, the derived CP0, CP1, and CP2 are used to create an affine control using three affine control points. Determine whether the model can be constructed (S3402), and if it can be constructed (S340 2:YES), a three-point affine control point affine model using CP0, CP1, and CP2 Select as a candidate for merge (S3403).

[0165] Next, the derived CP0, CP1, and CP3 are used to create an affine control using three affine control points. Determine whether the model can be constructed (S3404), and if it can be constructed (S340 4:YES), a three-point affine control point affine model using CP0, CP1, and CP3 Select as a candidate for merge (S3405).

[0166] Next, the derived CP0, CP2, and CP3 are used to create an affine control using three affine control points. Determine whether the model can be constructed (S3406), and if it can be constructed (S340 6:YES), a three-point affine control point affine model using CP0, CP2, and CP3 Select as a candidate for merge (S3407).

[0167] Next, the derived CP1, CP2, and CP3 are used to create an affine control using three affine control points. Determine whether the model can be constructed (S3408), and if it can be constructed (S340 8:YES), a three-point affine control point affine model using CP1, CP2, and CP3 Select as a candidate for merge (S3409).

[0168] Next, using the derived CP0 and CP1, we obtain an affine model with two affine control points. Determine whether it is constructible or not (S3410), and if it is constructible (S3410: YE S) A two-point affine control point affine model using CP0 and CP1 is a candidate for affine merge. Do (S3411).

[0169] Next, using the derived CP0 and CP2, we obtain an affine model with two affine control points. Determine whether it is constructible or not (S3412), and if it is constructible (S3412: YE S) A two-point affine control point affine model using CP0 and CP2 is a candidate for affine merge. (S3413).

[0170] Here, whether or not to construct an affine model is determined by the following conditions.

[0171] 1. The reference images for all affine control points are identical. (Affine transformation is possible.) 2. At least one affine control point has a different motion vector. (Represented by translation) (Cannot do) Furthermore, a three-point affine control point affine model using CP0, CP1, and CP2, CP0, C Affine models other than the two-point affine control point affine model using P1 include the three-point control point affine model. The model is an affine model with three affine control points: CP0, CP1, and CP2. For the two-control affine model, the two affine control points CP0 and CP1 are... Convert to a finite model.

[0172] <Derivation of Affine Fixed Merge Candidates> The affine fixed merge candidate derivation unit 385 will be explained. The same applies to section 485 as to section 385, which is the affine fixed merge candidate derivation section.

[0173] Affine fixed merge candidates fix the motion information of affine control points with fixed motion information. ru.

[0174] Specifically, the motion vector of each affine control point is fixed to (0,0).

[0175] <Time-predicted motion vector> Before explaining the time-predicted motion vector, we will explain the temporal relationships between pictures. Figure 49(a) shows that the encoding block to be encoded and the encoding picture are at different times. This shows the relationship of the encoded picture. In the picture to be encoded, the references in the encoding A specific encoded picture is defined as ColPic. ColPic is identified by syntax. It can be done.

[0176] Furthermore, Figure 49(b) shows that in ColPic, the same position as the encoding block to be encoded, and This shows the encoded coding blocks that exist in the vicinity of it. These coding blocks T 0 and T1 are at approximately the same position in the picture to be encoded and in a picture that is temporally different. This is the coded block.

[0177] The above explanation of the temporal sequence of the pictures pertains to the encoding process, but the same applies to the decoding process. This is how it works. In other words, when decoding, replace encoding with decoding in the above explanation, and explain similarly. It will be revealed.

[0178] Figure 17 shows the time-predicted motion vector candidate in the normal predicted motion vector mode derivation unit 301. The operation of the outlet 322 will be explained with reference to Figure 50.

[0179] First, we derive ColPic (step S4201). Refer to Figure 51 for the derivation of ColPic. I will explain by referring to it.

[0180] If slice type is B slice and flag collocated_from_l0_flag is 0 (YES in step S4211, YES in step S4212), RefPicList1[0], In other words, the picture with reference index 0 in reference list L1 is a picture from a different time period (colPic). This is the case (step S4213). Otherwise, i.e., if slice type slice_type is B If the aforementioned flag collocated_from_l0_flag is 1 in Rice (YE in step S4211) If S, step S4212 NO), or slice type slice_type is P slice (NO in step S4211, YES in step S4214), RefPicList0[0], in other words The reference index 0 of the reference list L0 corresponds to a different time frame, colPic. (Step S4215). If slice_type is not P slice (Step S4214: N O), terminate the process.

[0181] Refer to Figure 50 again. After deriving ColPic, derive the coding block colCb, and the code Acquire conversion information (step S4202). This process will be explained with reference to Figure 52. ru.

[0182] First, in the picture colPic at different time points, the bottom right corner is the same position as the encoding block to be processed. Let the coding block located on the outside be the coding block colCb at a different time (step S4221). This coding block corresponds to coding block T0 in Figure 49.

[0183] Next, obtain the encoding information of the encoding block colCb at different time points (step S422) 2) PredMode is unavailable for coding blocks colCb of different time zones, or different time zones If the prediction mode PredMode of the numbered block colCb is intra prediction (MODE_INTRA) ( Step S4223: NO, Step S4224: YES), within the picture colPic of different times The encoding block located in the same position as the encoding block to be processed, in the lower right center, is processed at different times. Let this be the encoded block colCb (step S4225). This encoded block is shown in Figure 49. This corresponds to coding block T1.

[0184] Refer to Figure 50 again. Next, derive the interpretation information for each reference list (S 4203, S4204). Here, for the encoded block colCb, the movement for each reference list. The vector mvLXCol and the flag availableFlagLXCol, which indicates whether the encoded information is valid, are derived. LX represents a reference list, and in the derivation of reference list 0, LX becomes L0, and in the derivation of reference list 1... Therefore, LX becomes L1. The derivation of the interpretation information will be explained with reference to Figure 53.

[0185] If a coding block colCb of a different time is unavailable (S4231S4231:NO) , or if the prediction mode PredMode is intraprediction (MODE_INTRA) (S4232:NO) , set both the availableFlagLXCol and predFlagLXCol flags to 0 (step S4233) ), set the motion vector mvLXCol to (0,0) (S4234), and terminate the process.

[0186] The coding block colCb is available (S4231:Yes), and the prediction mode PredMode is intra If it is not a prediction (MODE_INTRA) (S4232:YES), use the following procedure to obtain mvCol and refIdxCol. And calculate availableFlagCol.

[0187] PredFlagL0[xP] is a flag indicating whether the L0 prediction for the coded block colCb is being used. If [Col][yPCol] is 0 (YES in S4235), the prediction mode of the coded block colCb is Pr Since it is ed_L1, the motion vector mvCol is the L1 motion vector of the encoded block colCb. It is set to the same value as MvL1[xPCol][yPCol] (S4236), and the reference index refIdxCol The reference index RefIdxL1[xPCol][yPCol] of L1 is set to the same value (S4237), ListCol is set to L1 (S4238). Here, xPCol and yPCol are different times. An index indicating the position of the top-left pixel of the coded block colCb within the picture colPic. be.

[0188] On the other hand, if the L0 prediction flag PredFlagL0[xPCol][yPCol] of the coded block colCb is not 0 (NO of S4235), PredFlagL1[xPCol][yPC Determines whether [ol] is 0. PredFlagL1[xPCol][ If yPCol] is 0 (YES in S4239), the motion vector mvCol is the encoded block colCb It is set to the same value as the motion vector of L0, MvL0[xPCol][yPCol] (S4240), and reference The index refIdxCol is set to the same value as the reference index RefIdxL0[xPCol][yPCol] of L0. The value is set (S4241), and the list ListCol is set to L0 (S4242).

[0189] The L0 prediction flag PredFlagL0[xPCol][yPCol] of the coded block colCb and the coded block col If the L1 prediction flags PredFlagL1[xPCol][yPCol] for Cb are both not 0 (NO in S4235), For S4239 (NO), the interprediction mode of the coded block colCb is biprediction (Pred_BI). Therefore, one of the two motion vectors, L0 and L1, is selected (S4243).

[0190] Figure 54 shows the code when the interprediction mode of the coded block colCb is biprediction (Pred_BI). This is a flowchart showing the procedure for deriving interpretation information for a numbered block.

[0191] First, the POC of all pictures registered in all reference lists is the current encoding Determine if it is smaller than the POC of the target picture (S4251), and encode block colC POC of all pictures registered in L0 and L1, which are all reference lists of b If LX is smaller than the POC of the currently encoded picture (YES in S4251), then LX is Derive candidate prediction vectors for L0, i.e., the motion vector of L0 of the coding block to be coded. If this is the case (YES in S4252), predict the interpoint on the L0 side of the coded block colCb. Select the information, and LX is the predicted motion vector of L1, i.e., the L1 of the coding block to be coded. If a candidate measurement vector is being derived (NO in S4252), L1 of the coding block colCb Select the interpretation information for the latter. Meanwhile, the entire reference list of the coded block colCb. At least one of the POCs of the pictures registered in L0 and L1 is the currently encoded picture If it is greater than the POC of Kucha (NO of S4251), the flag collocated_from_l0_fla If g is 0 (YES in S4253), the interpretation information for L0 of the coded block colCb is Select and if the flag collocated_from_l0_flag is 1 (NO in S4253), the encoded Select the interpretation information for L1 of lock colCb.

[0192] When selecting the interpretation prediction information for L0 of the coded block colCb (Y in S4252) ES, S4253 (YES), motion vector mvCol is set to the same value as MvL0[xPCol][yPCol] (S4254) The reference index refIdxCol has the same value as RefIdxL0[xPCol][yPCol]. The setting is configured (S4255), and the list ListCol is set to L0 (S4256).

[0193] When selecting the interpretation information for L1 of the coded block colCb (N in S4252) O, NO of S4253, the motion vector mvCol is set to the same value as MvL1[xPCol][yPCol] (S4257) The reference index refIdxCol is set to the same value as RefIdxL1[xPCol][yPCol]. Then (S4258), the list ListCol is set to L1 (S4259).

[0194] Returning to Figure 53, once the interpretation information is obtained from the coded block colCb, the flag ava Set both ilableFlagLXCol and the flag predFlagLXCol to 1 (S4244).

[0195] Next, the motion vector mvCol is scaled to obtain the motion vector mvLXCol (S42). (45S4245). Figure 55 shows the scaling calculation procedure for this motion vector mvLXCol. I will explain.

[0196] From the POC of the picture colPic at different time points, the list of encoded blocks colCb, ListCol, is used. Subtract the POC of the reference picture corresponding to the reference index refIdxCol and the picture. The distance td is calculated (S4261). Note that the encoding is performed using pictures colPic from different time periods. If the POC of the referenced picture referenced in the list ListCol of block colCb is displayed earlier in the display order... In total, the distance between pictures td becomes a positive value, and the encoding block is greater than that of pictures colPic at different times. If the POC of the referenced picture referenced in the list ListCol of colCb is displayed later in the display order, The distance between pictures, td, will be a negative value. td = POC of different time pictures colPic - List of encoded blocks colCb ListCol POC of the reference picture to be referenced The list LX of the currently encoded picture is referenced from the POC of the currently encoded picture. The picture distance tb is calculated by subtracting the POC of the reference picture (S4262). Oh, instead of the current picture to be encoded, it's referenced in the list LX of the current picture to be encoded. If the referenced picture is displayed earlier, the distance between pictures, tb, will be a positive value, and the current sign If the referenced picture in the LX list of pictures to be numbered is displayed later in the list, The distance between chats, tb, will be a negative value. tb = Current encoding / decoding target picture POC - Reference LX of time merge candidate POC of the reference picture corresponding to the index Next, the distances between pictures td and tb are compared (S4263), and the distances between pictures td and t If b is equal (YES in S4263), the motion vector mvLXCol is calculated using the following formula: S4264) This scaling calculation process is terminated. mvLXCol = mvCol On the other hand, if the distances between pictures td and tb are not equal (NO in S4263), then the following formula Calculate the variable tx (S4265). tx = ( 16384 + Abs( td ) >> 1 ) / td Next, the scaling factor distScaleFactor is calculated using the following formula (S4266). distScaleFactor = Clip3( -4096, 4095, ( tb * tx + 32 ) >> 6 ) Here, Clip3(x,y,z) is a function that restricts the value z to have a minimum value of x and a maximum value of y. Next, the motion vector mvLXCol is calculated using the following formula (S4267), and the scaling operation is performed. The calculation process will now end. mvLXCol = Clip3( -32768, 32767, Sign( distScaleFactor * mvLXCol ) * ((Abs( distScaleFactor * mvLXCol ) + 127 ) >> 8 ) ) Here, Sign(x) is a function that returns the sign of the value x, and Abs(x) is a function that returns the absolute value of the value x. ru.

[0197] Refer to Figure 50 again. Then, the motion vector of L0 mvL0Col is the same as the previously mentioned normal predicted motion. In the vector mode derivation unit 301, the predicted motion vector candidate list mvpListLXN contains candidates and Add it (S4205). However, this addition is to the coded block colCb in reference list 0. This is only the case when the flag availableFlagL0Col=1, which indicates whether it is enabled or not. Also, the movement vector of L1 TormvL1Col is the predicted motion vector in the aforementioned normal predicted motion vector mode derivation unit 301 Add as a candidate to the candidate list mvpListLXN (S4205). However, this addition is... If the flag availableFlagL1Col=1 indicates whether the coded block colCb in list 1 is valid or not, That is all. With the above, the processing of the time-predicted motion vector candidate derivation unit 322 is terminated.

[0198] The above description of the normal predicted motion vector mode derivation unit 301 pertains to the encoding process. The same applies during decoding. In other words, in the normal predicted motion vector mode derivation unit 401 of Figure 23, The operation of the time prediction motion vector candidate derivation unit 422 is to decode the encoding described above. It can be replaced with the same explanation.

[0199] <Time merge> In the operation of the time merge candidate derivation unit 342 in the normal merge mode derivation unit 302 in Figure 18, This will be explained with reference to Figure 56.

[0200] First, ColPic is derived (step S4301). Next, the encoded block colCb is derived. Then, the encoding information is obtained (step S4302). Furthermore, for each reference list, the interface - Derive prediction information (S4303, S4304). The above process is time prediction motion vector Since this is the same as S4201 to S4204 in the candidate derivation section 322, the explanation is omitted. ru.

[0201] Next, calculate the flag availableFlagCol which indicates whether the coded block colCb is valid or not. S4305). If flag availableFlagL0Col or flag availableFlagL1Col is 1. If this is the case, availableFlagCol will be 1. Otherwise, availableFlagCol will be 0.

[0202] Then, the motion vector mvL0Col of L0 and the motion vector mvL1Col of L1 are given the aforementioned normal... The merge candidate is added to the merge candidate list mergeCandList in the merge mode derivation unit 302. (S4306). However, this addition requires flag a to indicate whether the coded block colCb is valid. This applies only when vailableFlagCol=1. Therefore, the processing of the time merge candidate derivation unit 342 is as follows: Ending.

[0203] The above explanation of the time merge candidate derivation unit 342 pertains to the encoding process, but the same applies to the decoding process. This is how it works. In other words, the time merge candidate derivation in the normal merge mode derivation unit 402 of Figure 24 The operation of section 442 is similarly described above, with encoding replaced by decoding.

[0204] <Update to the list of candidate motion vectors for historical prediction> Next, the encoding information storage memory 111 on the encoding side and the encoding information storage memory 20 on the decoding side This document provides a detailed explanation of how to update the HmvpCandList, a list of candidate motion vectors for historical prediction, in preparation for step 5. Figure 38 is a flowchart illustrating the procedure for deriving candidate motion vectors based on historical predictions. .

[0205] In this embodiment, updating the history prediction motion vector candidate list HmvpCandList is performed by encoding information This shall be carried out in the information storage memory 111 and the encoded information storage memory 205. A history candidate list update unit is installed within the prediction unit 102 and the interpretation unit 203 to perform history prediction. You may also want to update the motion vector candidate list HmvpCandList.

[0206] At the beginning of the slice, the history prediction motion vector candidate list HmvpCandList is initialized, and On the generation side, the prediction method determination unit 106 selects either the normal prediction vector mode or the normal merge mode. If selected, the history prediction motion vector candidate list HmvpCandList is updated, and on the decoding side, The prediction mode decoded by the string decoding unit 201 is either the normal prediction vector mode or In normal merge mode, the history prediction motion vector candidate list HmvpCandList is updated. Interpretation used when performing interpretation in prediction vector mode or normal merge mode The measurement information should be registered as the interpretation information candidate hMvpCand, and the encoding information storage memo on the encoding side. The history prediction motion vector candidate provided in the coding information storage memory 205 on the decoding side and Ri 111 and Ri Among the network prediction information registered in the HmvpCandList, the network prediction information that should be registered If an inter-prediction with the same value as the candidate hMvpCand exists, then the historical prediction motion vector candidate list Remove that element (interface prediction information) from HmvpCandList and register the interface prediction information to be registered. If no interpretation exists with the same value as the candidate hMvpCand, then the historical prediction motion vector candidate... Remove the first element (interface prediction information) from the list HmvpCandList, and then remove the historical prediction motion vector. Add the candidate hMvpCand for the inter-prediction information to be registered to the end of the candidate list HmvpCandList. .

[0207] The encoding information storage memory 111 on the encoding side and the encoding information storage memory 2 on the decryption side of the present invention The number of elements in the history prediction motion vector candidate list HmvpCandList, which is prepared for 05, will be 6.

[0208] First, initialize the HmvpCandList, a list of candidate motion vectors for historical prediction at the slice level. At the beginning of the slice, the history of all elements in the history prediction motion vector candidate list HmvpCandList is entered. Add a candidate for predicted motion vector and register it in the historical candidate list HmvpCandList. The value of NumHmvpCand, which is the number of historical prediction motion vector candidates, is set to 6 (Step 38) (P2101).

[0209] Here, the initialization of the historical prediction motion vector candidate list HmvpCandList is done in slice units ( It was stated that this would be done in the first encoding block of Rice, but on a picture-by-picture, tile-by-tile, or tree-by-tree basis. - This can also be done on a block row basis.

[0210] Figure 62 shows the history added by the initialization of the history prediction motion vector candidate list HmvpCandList. This table shows an example of a candidate for historically predicted motion vectors. The slice type is B slice, and the reference pitch is Here is an example where the number of Kucha is 4. The historical prediction motion vector index is (historical prediction motion The number of candidate vectors ranges from NumHmvpCand-1 to 0, depending on the slice type. Interpretation information with a value of (0, 0) is used as a candidate for historical prediction motion vector, and the historical prediction motion vector Add to the candidate list HmvpCandList and the historical prediction motion vector candidate list with historical candidates Fill in. At this time, the historical prediction motion vector index is (historical prediction motion vector candidate The number NumHmvpCand (where X is 0 or 1) starts from 0, and the reference index refIdxLX (where X is 0 or 1) starts from 0. Set the value by incrementing by 1 up to (the number of referenced pictures, numRefIdx-1). This allows overlaps between candidate motion vectors for historical prediction, and sets refIdxLX to a value of 0. Set all values ​​in NumHmvpCand to the number of historical prediction motion vector candidates, and the historical prediction motion vector By fixing the value of the number of candidate NumHmvpCand, invalid historical prediction motion vector candidates are eliminated. Remove. This is the probability of adding to the predicted motion vector candidate list or merge candidate list. From the candidates with a high historical prediction motion vector index and a large value, generally a high selection rate By assigning smaller reference index values, coding efficiency can be improved. .

[0211] Furthermore, the list of candidate historical motion vectors is displayed on a slice-by-slice basis. By pre-filling the data, the number of candidates for historical motion vector prediction can be treated as a fixed value. For example, this simplifies processes such as the derivation of candidate motion vectors based on historical predictions and the derivation of candidate merged motion vectors based on historical changes. It is possible.

[0212] Here, the value of the motion vector was generally set to (0, 0), which has a high probability of selection, but if it is a predetermined value... For example, you can encode the difference motion vector using values ​​such as (4,4), (0,32), and (-128,0). You can improve efficiency, or you can set multiple predetermined values ​​to improve the encoding efficiency of the differential motion vector. You can.

[0213] Furthermore, the historical prediction motion vector index (number of historical prediction motion vector candidates NumHmvpC) Starting from (and - 1), the reference index refIdxLX (where X is 0 or 1) starts from 0 (reference pict The setting was to increment the value by 1 up to the number of 'ja's (numRefIdx-1), but the historical prediction movement You may start the vector index from 0.

[0214] Figure 63 shows the history added by the initialization of the history prediction motion vector candidate list HmvpCandList. This table shows another example of a historical prediction motion vector candidate. The slice type is B slice, and the references are as follows: An example is shown where the number of illuminated pictures is 2. In this example, the historical prediction motion vector candidate list Hmv Each element of pCandList is indexed to ensure there are no overlaps between candidate historical motion vectors. Interpretation information where either the ks or motion vector value differs historical prediction motion vector Add it as a candidate and fill the list of candidate historical prediction motion vectors. Open the measured motion vector index from (number of historical predicted motion vector candidates NumHmvpCand-1) Initially, the reference index refIdxLX (where X is 0 or 1) starts from 0 (the number of referenced pictures numRefI Set the value by incrementing by 1 up to dx-1). After that, refIdxLX will be 0 and different. Add the value movement vector as a candidate for historical prediction movement vector. Set all values ​​in the complement NumHmvpCand, and the number of historical prediction motion vector candidates NumHmvpCand By fixing the values, invalid historical prediction motion vector candidates are eliminated.

[0215] In this way, the list of candidate historical prediction motion vectors is generated on a slice-by-slice basis, ensuring that there are no duplicate historical prediction motions. By filling with candidate vectors, the following process, which is performed on a coding block basis, can be further implemented. Merger candidate candidates after the history merge candidate derivation unit 345 in the normal merge mode derivation unit 302 The processing in the filling unit 346 can be omitted, thereby reducing the processing volume.

[0216] Here, the motion vector values ​​were set to small values ​​such as (0, 0) and (1, 0), but the historical prediction motion vector If there is no overlap between candidate figures, the value of the motion vector can be increased.

[0217] Furthermore, the historical prediction motion vector index (number of historical prediction motion vector candidates NumHmvpC) Starting from (and - 1), the reference index refIdxLX (where X is 0 or 1) starts from 0 (reference pict The setting was to increment the value by 1 up to the number of 'ja's (numRefIdx-1), but the historical prediction movement You may start the vector index from 0.

[0218] Figure 64 shows the history added by the initialization of the history prediction motion vector candidate list HmvpCandList. This table shows another example of a candidate for historically predicted motion vectors.

[0219] An example is shown where the slice type is B-slice. In this example, the candidate is a historically predicted motion vector. Each element in the list HmvpCandList should be referenced to ensure there are no overlaps between candidates for historical prediction motion vectors. Index 0, different motion vector values, interpretation information, historical prediction motion vector Add it as a candidate and fill the list of candidate historical prediction motion vectors. Open the measured motion vector index from (number of historical predicted motion vector candidates NumHmvpCand-1) To begin, the reference index refIdxLX (where X is 0 or 1) is set to 0. Historical predicted motion vector Set all values ​​to the number of candidate values ​​NumHmvpCand, and the number of candidate values ​​for the historical prediction motion vector NumHmvpCa By fixing the value of nd, invalid historical prediction motion vector candidates are eliminated.

[0220] In this way, by setting the reference index to 0, we can further consider the number of referenced pictures. Since initialization can be performed without any additional steps, the process can be simplified.

[0221] Here, the motion vector values ​​were set to multiples of 2, but the reference index is 0 and the historical prediction motion Other values ​​are acceptable as long as there is no overlap between the candidate vectors.

[0222] Furthermore, the historical prediction motion vector index (number of historical prediction motion vector candidates NumHmvpC) Starting from (and - 1), the reference index refIdxLX (where X is 0 or 1) starts from 0 (reference pict The setting was to increment the value by 1 up to the number of 'ja's (numRefIdx-1), but the historical prediction movement You may start the vector index from 0.

[0223] Next, for each encoded block within the slice, the following list of candidate historical motion vectors (Hmvp) is presented. The CandList update process is repeated (steps S2102 to S2111 in Figure 38).

[0224] First, initial settings are performed on a coding block basis. A flag is used to indicate whether or not identical candidates exist. Set the value of `identicalCandExist` to FALSE and set the index to be deleted, `removeIdx`, to 0. Set this (step S2103 in Figure 38).

[0225] Candidate Interpretation Information hMvp to be registered in the Historical Prediction Motion Vector Candidate List HmvpCandList Determine whether or not a Cand exists (step S2104 in Figure 38). Prediction method on the encoding side. If the determination unit 105 determines that it is in normal predicted motion vector mode or normal merge mode, Alternatively, the bit sequence decoding unit on the decoding side uses either the normal predicted motion vector mode or the normal merge mode. If decoded, the interpretation mode will be set to hMvpCand. The prediction method on the encoding side is determined. In the fixed section 105, intra prediction mode, subblock prediction motion vector mode or subblock If it is determined to be in hack merge mode, or if the bit string decoding unit on the decoding side is in intra prediction mode Decoded as subblock predictive motion vector mode or subblock merge mode. If this occurs, the historical prediction motion vector candidate list HmvpCandList will not be updated, and the registration target will not be updated. The inter-prediction information candidate hMvpCand does not exist. The inter-prediction information candidate to be registered is hMvpCa If nd does not exist, skip steps S2105 to S2110 (steps in Figure 38) (NO. of S2104). If there is a candidate for the target internet prediction information hMvpCand to register, then Perform the following steps (step S2104 YES in Figure 38).

[0226] Next, the elements to be registered in the historical prediction motion vector candidate list HmvpCandList Determine whether or not the same elements exist as the candidate for the predictive information hMvpCand (steps in Figure 38). S2105). Figure 39 is a flowchart of this identical element confirmation process procedure. History prediction movement If the value of the number of vector candidates NumHmvpCand is 0 (NO in step S2121 in Figure 39), The historical prediction motion vector candidate list HmvpCandList is empty, and there are no identical candidates, as shown in Figure 39. Steps S2122 to S2125 are skipped, and this identical element verification process is terminated. If the value of the number of historical prediction motion vector candidates, NumHmvpCand, is greater than 0 (step S2 in Figure 39) 121 (YES), historical prediction motion vector index hMvpIdx is from 0 to NumHmvpCand-1 Then, the process from steps S2122 to S2125 is repeated (from step S2121 in Figure 39) S2125). First, counting from 0 in the list of candidate historical motion vectors, the hMvpIdxth element... Compare whether the raw HmvpCandList[MvpIdx] is identical to the interpretation information candidate hMvpCand (Figure) Step S2123 of Figure 39). If they are the same (YES in step S2123 of Figure 39), they are the same Set the flag `identicalCandExist`, which indicates whether or not a candidate exists, to TRUE. Then, set the value of hMVpIndex to the index to be deleted (removeIdx) and terminate this identical element verification process. If they are not the same (NO in step S2123 of Figure 39), increment hMvpIdx by 1. (Steps S2121 and S2125 in Figure 39), and then the processing from step S2123 onwards is carried out. cormorant.

[0227] Here, we populate the list of historical prediction motion vector candidates with historical prediction motion vector candidates. Therefore, step S2121 in Figure 39 can be omitted.

[0228] Returning to the flowchart in Figure 38, the historical prediction motion vector candidate list HmvpCandList Element shifting and addition processing is performed (step S2106 in Figure 38). Figure 40 shows the same process as in Figure 38. Element shift / addition processing for the history prediction motion vector candidate list HmvpCandList of step S2106. This is a flowchart of the procedure. First, the history prediction motion vector candidate list HmvpCandList You can either remove the stored elements before adding a new element, or add a new element without removing the existing elements. Determine whether to add it. Specifically, the flag `identicalCandE` indicates whether or not an identical candidate exists. Compare xist to see if it is TRUE or if NumHmvpCand is 6 (Step S2 in Figure 40). 141). The flag `identicalCandExist`, which indicates whether or not identical candidates exist, is set to TRUE. Or if NumHmvpCand satisfies any of the conditions of 6 (Y in step S2141 of Figure 40) ES), excluding elements stored in the historical prediction motion vector candidate list HmvpCandList Next, we add a new element. We set the initial value of index i to removeIdx + 1. The element shift process in step S2143 is repeated from the initial value to NumHmvpCand. (Figure 4) Step 0 (S2142~S2144). HMVPCandList[i - 1] to HMVPCandList[i] The element is shifted forward by copying the element (step S2143 in Figure 40), i Increment by 1 (steps S2142 and S2145 in Figure 40). Next, predict the history. The (NumHmvpCand-1)th HMVPCandLis, which corresponds to the last candidate in the motion vector candidate list, counting from 0. The interpretation information candidate hMvpCand is added to t[NumHmvpCand-1] (step S214 in Figure 40). 5) The process of shifting and adding elements to the history prediction motion vector candidate list HMVPCandList is completed. On the other hand, the flag `identicalCandExist`, which indicates whether or not identical candidates exist, is set to TRUE. And if NumHmvpCand does not satisfy any of the conditions in 6 (step S2141 in Figure 40) NO), without removing elements stored in the historical prediction motion vector candidate list HmvpCandList. Add a new element. Starting from 0, which corresponds to the end of the list of candidate motion vectors for historical prediction. Add the candidate hMvpCand for the (NumHmvpCand-1)th HMVPCandList[NumHmvpCand] to the interpretation information candidate hMvpCand. In addition, NumHmvpCand is incremented by 1 (step S2145 in Figure 40), and this history is predetermined. The process of shifting and adding elements to the motion vector candidate list HMVPCandList is terminated.

[0229] Here, the list of historical predicted motion vector candidates includes the predicted motion vector mode and the merge mode. This shall apply to both, but it may also apply to only one of them.

[0230] As described above, in updating the list of candidate historical motion vectors, the historical motion vectors Because it removes identical elements stored in the list of potential candidates before adding new elements. There are no duplicate elements in the list of candidate historical motion vectors. Each supplementary list is composed of different elements.

[0231] <Historical prediction motion vector candidate derivation process> Next, the history prediction motion vector candidate of the encoding side normal prediction motion vector mode derivation unit 301 Supplementary derivation unit 323, history predicted motion vector of the normal predicted motion vector mode derivation unit 401 on the decoding side The processing procedure for step S304 in Figure 20, which is a common process in the candidate derivation unit 423, is as follows: Method for deriving historical prediction motion vector candidates from the historical prediction motion vector candidate list HMVPCandList This will be explained in detail. Figure 41 illustrates the procedure for deriving candidate motion vectors based on historical predictions. This is a low-level chart.

[0232] The current number of predicted motion vector candidates, numCurrMvpCand, is the maximum number in the list of predicted motion vector candidates. The number of elements (in this case, 2) or the number of historical prediction motion vector candidates is greater than or equal to the value of NumHmvpCand = In the case of step S2201 in Figure 41, steps S2202 to S220 in Figure 41 The process in step 8 is omitted, and the procedure for deriving candidate motion vectors based on historical predictions is terminated. numCurrMvpCand If the number is less than 2, which is the maximum number of elements in the list of predicted motion vector candidates (steps in Figure 41) If the answer to S2201 is YES, then the process from steps S2202 to S2208 in Figure 41 is performed.

[0233] Next, the index i ranges from 1 to the smaller of 4 and NumHmvpCand, as shown in Figure 41. The process from step S2203 to S2207 is repeated (from step S2202 to S2207 in Figure 41). S2208). numCurrMvpCand is 2 or greater, which is the maximum number of elements in the predicted motion vector candidate list. In this case (NO in step S2203 of Figure 41), steps S2204 to S22 The process in step 08 is omitted, and the procedure for deriving candidate motion vectors based on historical predictions is terminated. numCurrMvp If Cand is less than 2, which is the maximum number of elements in the list of candidate motion vectors (Figure 41) If step S2203 is YES, then the process from step S2204 onwards in Figure 41 is performed.

[0234] Next, the process from step S2205 to S2206 is performed with the variable Y being 0 and 1 (L0 and L1 Perform the following steps for each of the following (steps S2204~S2207 in Figure 41): numCurrMvpCand If the number of elements in the predicted motion vector candidate list is 2 or greater (step S2 in Figure 41) (NO. 205), the processing from steps S2206 to S2208 in Figure 41 is omitted, and this history is The process for deriving candidate motion vectors is terminated. numCurrMvpCand is the predicted motion vector candidate. If the number of elements in the string is less than 2 (YES in step S2205 in Figure 41), Perform the processing from step S2206 onwards for step 41.

[0235] Next, counting from 0, we find the numCurrMvpCandth of the LY prediction motion vector candidate list. The element mvpListLY[numCurrMvpCand ] contains the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - Add the motion vector of LY in i] and increment numCurrMvpCand by 1 (Figure 41) Step S2206).

[0236] The processes from steps S2205 to S2206 in Figure 41 are performed on both L0 and L1. (Steps S2204-S2207 in Figure 41).

[0237] Increment index i by 1 (steps S2202 and S2208 in Figure 41), If index i is less than or equal to the smaller of 4 and NumHmvpCand, then step S22 again. Perform the processing from step 03 onwards (steps S2202 to S2208 in Figure 41).

[0238] In this embodiment, as described above, in the process of deriving candidate motion vectors based on historical predictions, , motion vectors of elements in the historical predicted motion vector candidate list and predicted motion vector candidate list Without comparing the elements' motion vectors, the elements of the historical prediction motion vector candidate list Add the motion vector to the list of predicted motion vector candidates.

[0239] By adopting this configuration, if the number of historical prediction motion vector candidates is 2 or more, After the process of deriving candidate lists for historical prediction motion vectors is completed, the predicted motion vector candidate list It can be guaranteed that the number of elements reaches the maximum number. Also, the motion vectors are the same. This reduces the processing load and circuit size required to check whether or not something is true.

[0240] The normal predictive motion vector mode includes a list of predictive motion vector candidates. This mode determines the movement information of the block to be processed using candidate blocks and difference vectors. Since there is room to determine the appropriate motion vector using the difference vector, predicting motion is unavoidable. Even if there are duplicate elements in the list of candidate vectors, the number of choices will decrease. This minimizes the decrease in chemical efficiency.

[0241] In addition, the normal prediction motion vector mode uses the list of prediction motion vector candidates as L0 prediction and L1 The predictions are processed separately. Therefore, the list of candidate motion vectors for L0 predictions contains overlapping elements. Even in cases where there are multiple elements, the L1 prediction's predicted motion vector candidate list does not contain duplicate elements. There are also combinations.

[0242] Furthermore, the normal predictive motion vector mode separates the predicted motion vector candidate and the reference index. They are processed one by one. Therefore, in the predicted motion vector candidate list, if there are duplicate elements, However, this does not affect the reference index.

[0243] Furthermore, the list of predicted motion vector candidates contains a maximum of two elements, so the prediction Even if elements in the motion vector candidate list are duplicated, the number of choices decreases. Only 1.

[0244] Furthermore, the list of candidate motion vectors for historical prediction does not contain identical elements, therefore, historical prediction motion The comparison between the elements of the candidate vector list and the elements of the candidate motion vector list is essentially meaningful. The parts that have flavor are the spatial prediction motion vector candidate derivation unit 421 and the time prediction motion vector candidate derivation unit Only if only one element is generated in the predicted motion vector candidate list in section 422 Because it is fixed, its frequency is extremely low. Also, generally, the normal predictive motion vector mode is selected. This occurs when the movements of adjacent blocks are not similar, and the historical predicted motion vector is used. Elements in the candidate list may overlap with elements already added to the predicted motion vector candidate list. The probability is low.

[0245] For the reasons stated above, even if there are duplicate elements in the list of predicted motion vector candidates, the selection will still be made. While suppressing the decrease in coding efficiency due to the reduction in limbs, the motion vector of the historical prediction motion vector candidate This reduces the process of comparing the motion vector of the torpedo with the motion vector of the predicted motion vector candidate.

[0246] Furthermore, the list of historical prediction motion vector candidates is filled with unique historical prediction motion vector candidates. Then, the elements of the historical predicted motion vector candidate list and the elements of the predicted motion vector candidate list Without making a comparison with the historical prediction motion vector candidate list, the elements of the prediction motion vector candidate list are selected. By adding to the supplementary list, the history prediction in the normal prediction motion vector mode derivation unit 301 is improved. The processing of the predicted motion vector supplementation unit 325 after the motion vector candidate derivation unit 323 is omitted. It is possible.

[0247] <History merge candidate derivation process> Next, the history merge candidate derivation unit 345 of the encoding side normal merge mode derivation unit 302, decoding The diagram shows the common processing in the history merge candidate derivation unit 423 of the normal merge mode derivation unit 401 on the side. The 20-step processing procedure S304 is the historical prediction motion vector candidate list HmvpCandList. This section details how to derive the history merge candidates. Figure 42 shows the history merge candidate derivation process. This is a flowchart explaining the processing procedure.

[0248] First, the initialization process is performed (step S2301 in Figure 42). isPruned[i] is set from 0 (numCu Set the value of FALSE to each of the (-1)th elements of rrMergeCand and store the result in the variable numOrigMergeCand Sets numCurrMergeCand to the number of elements currently registered in the merge candidate list.

[0249] Next, among the elements of the historical prediction motion vector candidate list, those included in the merge candidate list Add missing elements to the merge candidate list. At this time, after the historical prediction motion vector candidate list. Check and add in descending order from 'r'. Set the initial value of index hMvpIdx to 1, and this initial From the time value to NumHmvpCand-1, steps S2303 to S2328 in Figure 42 Repeat the additional processing (steps S2302-S2329 in Figure 42). Current merge candidates The number of elements registered in the list numCurrMergeCand is (the maximum number of merge candidates MaxNumMergeCand) -1) If not less than or equal to -1, a merge candidate has been added to all elements in the merge candidate list. This history merge candidate derivation process is terminated (NO in step S2303 of Figure 42). The number of elements registered in the merge candidate list numCurrMergeCand is (MaxNumM) If ergeCand-1) is below, perform the processing from step S2304 onwards. Set sameMotion to FALSE (false) Set the value of (step S2304 in Figure 42). Then, set the initial value of index i to 0 Set to this initial value and from numOrigMergeCand-1 to step S2306, S2306 in Figure 42. Perform the process described in 07 (S2305~S2308 in Figure 42). List of candidate historical motion vector predictions. The (NumHmvpCand - hMvpIdx)th element starting from 0 is HmvpCandList[NumHmvpCand- hMvpI Whether dx] is the same value as mergeCandList[i], the i-th element of the merge candidate list counting from 0. Compare (step S2306 in Figure 42). The same value for merge candidates means that the merge candidates have If all the components (interpretation mode, reference index, motion vector) have the same value The merge candidates are assumed to have the same value. If they have the same value (YES in step S2306 of Figure 39) Set both sameMotion and isPruned[i] to TRUE (step S230 in Figure 42) 7) If the values ​​are not the same (NO in step S2306 in Figure 39), then in step S2307 Skip the process. Repeat steps S2305 to S2308 in Figure 42. Once the process is complete, compare whether sameMotion is FALSE (step S2 in Figure 42). 309) If sameMotion is FALSE (YES in step S2309 in Figure 42), That is, the (NumHmvpCand - hMvpIdx)th candidate from the list of historical prediction motion vectors, counting from 0. The element HmvpCandList[NumHmvpCand - hMvpIdx] does not exist in mergeCandList, therefore merge The mergeCandList[numCurrMergeCand] at the numCurrMergeCand position in the candidate list contains historical predictions. The (NumHmvpCand - hMvpIdx)th element from the vector candidate list, counting from 0, is HmvpCandList[Nu Add `mHmvpCand - hMvpIdx` and increment `numCurrMergeCand` by 1 (see Figure 42) Step S2310). Increment index hMvpIdx by 1 (Step S in Figure 42). 2302) Repeat the steps S2302 to S2311 in Figure 42.

[0250] Once all elements in the historical prediction motion vector candidate list have been reviewed, the merge candidate list will be finalized. Once merge candidates have been added to all elements of the history, the derivation process for these merge candidates is complete. . In this embodiment, as described above, in the history merge candidate derivation process, the history prediction movement The elements of the vector candidate list are compared with the elements of the current merge candidate list, and the current merge candidate list is then evaluated. Only elements from the historical prediction motion vector candidate list that are not present in the merge candidate list will be merged into the candidate list. Add to the stock. Unlike the normal predictive motion vector mode, the normal merge mode does not use difference vectors. Because this mode directly determines the movement information of the block to be analyzed, the current merge candidate list By prohibiting the addition of elements to the history merge candidate list that overlap with the elements, encoding efficiency is improved. This can be improved. Here, the elements of the historical prediction motion vector candidate list and the current Although it was stated that all candidates in the merge candidate list were compared, at least the historical predicted movement vector Compare the elements of the merge candidate list with the elements of the current merge candidate list to improve encoding efficiency. If possible, this is not limited to this. For example, even if you limit the number of elements in the list of candidate historical motion vectors to be compared to 1 or 2, Good. You can also limit the number of elements in the current merge candidate list to one or two. In addition, in normal merge mode, the merge candidate list includes the motion vector of the L0 prediction and the L1 prediction. Both motion vectors are included. Therefore, as is typical with predictive motion vector modes, L It is not possible to adjust the predicted motion vector for prediction 0 and the predicted motion vector for prediction L1 separately. stomach. In addition, the normal merge mode includes the L0 prediction reference index and L1 prediction in the merge candidate list. It includes both the reference index of the measurement. Therefore, it is usually like the predictive motion vector mode. This allows for separate adjustment of the reference index for L0 prediction and the reference index for L1 prediction. It's not possible. Furthermore, the merge candidate list contains up to 6 elements, which is more than the predicted motion vector candidate list. Because it is included, if you add a duplicate element to the merge candidate list, The number of duplicate elements increases, making it difficult to efficiently utilize the merge candidate list. Additionally, the elements of the historical prediction motion vector candidate list that are added to the merge candidate list are historical prediction It is the most recently added element in the list of candidate motion vectors. Therefore, The elements of the historical prediction motion vector candidate list added to the candidate list are the encoding to be processed. This provides the spatially closest motion information to the block. Generally, the normal merge mode is selected. This is the case when the movement is similar to that of adjacent blocks, and the historical predicted motion vector candidate The elements in the list are likely to overlap with elements already added to the merge candidate list. . To address the above issues, the historical prediction motion vector overlaps with the elements of the merge candidate list. By prohibiting the addition of elements to the candidate list and increasing the number of valid selection elements, the code This can improve chemical efficiency.

[0251] Furthermore, the predicted movement vector predicts the maximum number of elements that can be included in the merge candidate list, which is 6. By making the number of elements that can be included in the candidate list greater than 2, the usual number of elements By increasing the probability of selecting the phase mode, the overlap of elements in the predicted motion vector candidate list is reduced. While suppressing the decrease in coding efficiency, the motion vector of the historical prediction motion vector candidate and the predicted motion This reduces the process of comparing motion vectors of candidate vectors. In addition to spatial merge candidates, there are also temporal merge candidates, historical merge candidates, average merge candidates, and ze This increases the probability of selecting the normal merge mode, including a variety of merge candidates such as romerge candidates. This suppresses the decrease in coding efficiency due to duplication of elements in the predicted motion vector candidate list. The ratio of the motion vector of the historically predicted motion vector candidate to the motion vector of the predicted motion vector candidate. Comparison processing can be reduced.

[0252] <Derivation of subblock time merge candidates> Subblock time merge candidates in the subblock merge mode derivation unit 304 in Figure 16 The operation of the derivation unit 381 will be explained with reference to Figure 44.

[0253] First, it is determined whether the encoded block is less than 8x8 pixels (S4002).

[0254] If the encoded block is less than 8x8 pixels (S4002:Yes), subblock time merge candidate The flag availableFlagSbCol=0 is set to indicate the existence of a supplement (S4003), when a subblock is in place. The processing of the inter-merge candidate derivation unit is terminated. Here, the temporal motion vector is obtained by syntax. If Tor prediction is prohibited, or if subblock time merging is prohibited. This performs the same processing as when the encoded block is less than 8x8 pixels (S4002:Yes).

[0255] On the other hand, if the encoding block is 8x8 pixels or larger (S4002: No), the encoding picture will The adjacent movement information of the encoded block is derived (S4004).

[0256] The process for deriving adjacent movement information of encoded blocks will be explained with reference to Figure 45. The process for deriving adjacent motion information is in conjunction with the process of the spatial prediction motion vector candidate derivation unit 321 described above. They are similar. However, the order in which adjacent blocks are searched is A0, B0, B1, A1, and B2 is not searched. No. First, we obtain the encoding information for the adjacent block n=A0 (S4052). The report includes a flag, availableFlagN, indicating whether adjacent blocks are available, and each reference list. The reference index refIdxLXN and the motion vector mvLXN are shown.

[0257] Next, determine whether the adjacent block n is valid or invalid (S4054). Use the adjacent block. If the flag availableFlagN=1, it is enabled; otherwise, it is disabled.

[0258] If adjacent block n is valid (S4054: Yes), the reference index refIdxLXN is used next to Let refIdxLXn be the reference index of the tangent block n (S4056). Also, the motion vector mv Let LXN be the motion vector mvLXn of the adjacent block n (S4056), and the adjacent block motion The process of deriving information is terminated.

[0259] On the other hand, if adjacent block n is invalid (S4106: No), then adjacent block n = B0, Obtain serial number information (S4104). Repeat the same process in the following steps, looping through B1 and A1 in that order. The process of deriving adjacent movement information loops until adjacent blocks become valid, and all adjacent If adjacent blocks A0, B0, B1, and A1 are invalid, the process of deriving adjacent movement information for the blocks is terminated. do.

[0260] Refer to Figure 44 again. Once the adjacent motion information has been derived (S4004), the temporal motion Derive the vector (S4006).

[0261] The process for deriving the temporal motion vector will be explained with reference to Figure 46. First, The temporal motion vector tempMv is initialized as (0,0) (S4062).

[0262] Next, it is determined whether the adjacent movement information is valid or invalid (S4064). Using adjacent blocks The flag availableFlagN=1 indicates whether it is possible or not; otherwise, it is enabled, and it is disabled. If the information is invalid (S4064: No), the process of deriving the temporal motion vector is terminated. do.

[0263] On the other hand, if adjacent movement information is enabled (S4064:Yes), L1 prediction is performed in adjacent block N. It is determined whether the flag predFlagL1N, which indicates whether or not it is being used, is 1 (S4066). If redFlagL1N=0 (S4066:No), proceed to the next process (S4078). predFlagL1N=1 In this case (S4066:Yes), P for all pictures registered in all reference lists It is determined whether the OC is less than or equal to the POC of the currently encoded picture (S4068). If the judgment is true (S4068: Yes), proceed to the next process (S4070).

[0264] If slice type is B slice and flag collocated_from_l0_flag is 0 (S4070:Yes, and S4072:Yes), ColPic and reference picture RefPicList1[refIdx Determine whether L1N (the picture at reference index refIdxL1N in reference list L1) is the same. (S4074). If this judgment is true (S4074: Yes), the temporal motion vector t Set empMv=mvL1N (S4076). If this judgment is false (S4074: No), proceed to the next step (S4 Proceed to 078). If the slice type slice_type is not a B slice, the flag collocated_fro If m_l0_flag is not 0 (S4070:No, or S4072:No), the next process (S40 Proceed to 78).

[0265] Then, there is a flag, predFlagL0N, which indicates whether or not L0 prediction is being used in the adjacent block N. Determine whether it is 1 or not (S4078). If predFlagL0N=1 (S4078:Yes), ColPi c and the referenced picture RefPicList0[refIdxL0N](reference index of reference list L0, refIdxL0N) Determine whether the pictures are the same (S4080). If this determination is true (S4080 Yes), let the temporal motion vector tempMv = mvL0N (S4082). If this judgment is false If case (S4080: No), the process of deriving the temporal motion vector is terminated.

[0266] Refer to Figure 44 again. Next, ColPic is derived (S4016). This process takes time. Since this is the same as S4201 in the predicted motion vector candidate derivation unit 322, the explanation is omitted. ru.

[0267] Then, we set up coding blocks colCb of different time (S4017). This is different Located in the lower right center of the picture ColPic at the same position as the encoding block to be processed. The coding block is set as colCb. This coding block is the code shown in Figure 49. This corresponds to block T1.

[0268] Next, the position obtained by adding the temporal motion vector tempMv to the encoded block colCb is newly Let colCb be (S4018). The top-left position of the encoded block colCb is (xColCb, yColCb), If we define the temporal motion vector tempMv as (tempMv[0], tempMv[1]) with 1 / 16 pixel precision, then a new... The upper left position of colCb is as follows: xColCb = Clip3( xCtb, xCtb + CtbSizeY + 3, xcolCb + ( tempMv[0] >> 4 ) ) yColCb = Clip3( yCtb, yCtb + CtbSizeY - 1, ycolCb + ( tempMv[1] >> 4 ) ) Here, the top-left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbS. Let izeY. As shown in the above equation, the position after adding tempMv is significantly different from the position before adding tempMv. To prevent this from happening, the size is adjusted to fit within a range roughly equivalent to the size of the tree block. If this happens, the image will be corrected within the screen.

[0269] And the prediction mode of this coding block colCb is PredMode (MODE_INTER Determine whether or not (S4020). If the prediction mode of colCb is not interprediction (S 4020: No), flag availableFlagSbCol=0 indicating the presence of a subblock time merge candidate. Set to (S4003) and terminate the processing of the subblock time merge candidate derivation unit.

[0270] On the other hand, if the prediction mode of colCb is interprediction (S4020:Yes), then for each reference list Interpretation information is derived (S4022, S4023). Here, for colCb, The central motion vector ctrMvLX for each reference list, and a flag indicating whether or not LX prediction is being used. Derive ctrPredFlagLX. LX represents a reference list, and in the derivation of reference list 0, LX is L0 and Therefore, in the derivation of reference list 1, LX becomes L1. Figure 47 shows the derivation of interpretation information. See the explanation below.

[0271] If a coding block colCb of a different time is unavailable (S4112:NO), or if If the measurement mode PredMode is intraprediction (MODE_INTRA) (S4114:NO), the flag ava Set both ilableFlagLXCol and flag predFlagLXCol to 0 (step S4116), and the motion vector Set TormvCol to (0,0) (S4118) and terminate the derivation process of interpretation information. .

[0272] The coding block colCb is available (S4112:Yes), and the prediction mode PredMode is intra If it is not a prediction (MODE_INTRA) (S4114:YES), use the following procedure to obtain mvCol and refIdxCol. And calculate availableFlagCol.

[0273] PredFlagLX[xP] is a flag indicating whether the LX prediction for the coded block colCb is being used. If [Col][yPCol] is 1 (YES in S4120), the motion vector mvCol is encoded by block col It is set to the same value as MvLX[xPCol][yPCol], which is the motion vector of Cb's LX (S4122), The reference index refIdxCol is the same value as the reference index RefIdxLX[xPCol][yPCol] of LX. It is set to (S4124), and the list listCol is set to LX (S4126). xPCol and yPCol are the top-left pixel of the encoded block colCb within the picture colPic at different times. This is an index indicating the position.

[0274] On the other hand, the flag PredFla indicates whether the LX prediction for the coded block colCb is being used. If gLX[xPCol][yPCol] is 0 (NO in S4120), the following process is performed. First, all The POCs of all pictures registered in the reference list are for the currently encoded picture. Determine whether it is below the POC (S4128). Furthermore, the LY prediction of colCb is used. Determine whether the flag PredFlagLY[xPCol][yPCol], which indicates whether or not, is 1 (S4128). Here, we define LY prediction as a different reference list from LX prediction. That is, if LX=L0, then LY=L1, When LX=L1, then LY=L0.

[0275] If this judgment is true (S4128: Yes), the motion vector mvCol is encoded by the block colCb The motion vector of LY, MvLY[xPCol][yPCol], is set to the same value (S4130), and The reference index refIdxCol is the same value as the reference index RefIdxLY[xPCol][yPCol] of LY. The setting is configured (S4132), and the list listCol is set to LX (S4134).

[0276] On the other hand, if this judgment is false (S4128: No), the flag availableFlagLXCol and the flag pr Set edFlagLXCol to 0 (step S4116), and set the motion vector mvCol to (0,0). (S4118) The process of deriving interpretation information is terminated.

[0277] If interpretation information can be obtained from the coded block colCb, the flag availableFlagLXCo Set both l and the flag predFlagLXCol to 1 (S4136).

[0278] Next, the motion vector mvCol is scaled to obtain the motion vector mvLXCol (S41 38) This process is the same as S4245 in the time prediction motion vector candidate derivation unit 322. Therefore, I will omit the explanation.

[0279] Refer to Figure 44 again. Once the interpretation information has been derived for each reference list, the calculation is The motion vector mvLXCol is the central motion vector ctrMvLX, and the calculated flag predFlagLXCol is Set the flag to ctrPredFlagLX (S4022, S4023).

[0280] Then, it is determined whether the central motion vector is valid or invalid (S4024). ctrPredFlagL0= If 0 and ctrPredFlagL1=0, it is invalid; otherwise, it is considered invalid. The center motion vector is not If effective (S4024:No), the flag "available" indicates the presence of a candidate for subblock time merge. Set FlagSbCol=0 (S4003) and terminate the processing of the subblock time merge candidate derivation unit. I'm done.

[0281] On the other hand, if the central motion vector is enabled (S4024:Yes), subblock time merge candidate The flag availableFlagSbCol=1 is set to indicate the existence of a subblock (S4025), and the subblock moves The following information is derived (S4026). This process will be explained with reference to Figure 48.

[0282] First, from the width cbWidth and height cBheight of the encoded block colCb, we get the number of subblocks in the width direction. Calculate numSbX and the number of subblocks in the height direction, numSbY (S4152). Also, refIdx Set LXSbCol=0 (S4152). From this point onward, iteration occurs in units of the predicted subblock colSb. Perform the return process. This iteration sets the height index ySbIdx from 0 to numSbY. The process is carried out while changing the width index xSbIdx from 0 to numSbX.

[0283] If the top-left position of the encoded block colCb is (xCb, yCb), then the left of the prediction subblock colSb is... The upper position (xSb, ySb) is calculated as follows: xSb = xCb + xSbIdx * sbWidth ySb = yCb + ySbIdx * sbHeight Next, the position obtained by adding the temporal motion vector tempMv to the prediction subblock colSb is the new Let the cell be colSb (S4154). The top-left position of the predicted subblock colSb is (xColSb, yColSb), If we define the temporal motion vector tempMv as (tempMv[0], tempMv[1]) with 1 / 16 pixel precision, then a new... The top-left position of colSb is as follows: xColSb = Clip3( xCtb, xCtb + CtbSizeY + 3, xSb + ( tempMv[0] >> 4 ) ) yColSb = Clip3( yCtb, yCtb + CtbSizeY - 1, ySb + ( tempMv[1] >> 4 ) ) Here, the top-left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbS. Let izeY. As shown in the above equation, the position after adding tempMv is significantly different from the position before adding tempMv. To prevent this from happening, the size is adjusted to fit within a range roughly equivalent to the size of the tree block. If this happens, the image will be corrected within the screen.

[0284] Then, interpretation information is derived for each reference list (S4156, S4158). Here, we will discuss the behavior of each reference list for each prediction subblock colSb, on a subblock-by-subblock basis. The vector mvLXSbCol and the flag availableFlagLXSbCo indicating whether the prediction subblock is valid. We derive l. LX represents a reference list, and in the derivation of reference list 0, LX becomes L0, and reference list In the derivation of T1, LX becomes L1. The derivation of the interpretation information is shown in S4022 and S402 in Figure 47. Since it is the same as 3, the explanation will be omitted.

[0285] After deriving the interpretation prediction information (S4156, S4158), the prediction subblock colSb becomes active. Determine whether or not (S4160). availableFlagL0SbCol=0 and availableFlagL1SbCol=0 If colSb is invalid, it is considered invalid; otherwise, it is considered valid. If colSb is invalid (S4160: No ), let the motion vector mvLXSbCol be the central motion vector ctrMvLX (S4162). The flag predFlagLXSbCol, which indicates whether or not LX prediction is being used, is placed on the central motion vector. The flag ctrPredFlagLX is set (S4162). Thus, the subblock movement information End of derivation.

[0286] Refer to Figure 44 again. Then, the motion vector of L0 mvL0SbCol and the motion vector of L1 TormvL1SbCol is used in the subblock of the subblock merge mode derivation unit 304 mentioned above. Add as a candidate to the merge candidate list subblockMergeCandList (S4028). However, This addition is for cases where the flag availableSbCol=1 indicates the presence of a subblock time merge candidate. That is all. With that, the processing of the time merge candidate derivation unit 342 is terminated.

[0287] The above explanation of the subblock time merge candidate derivation unit 381 is for the time of encoding, The same applies during decoding. In other words, in the subblock merge mode derivation unit 404 of Figure 22 The operation of the subblock time merge candidate derivation unit 481 is to decode the encoding described above. It can be replaced with the same explanation.

[0288] <Motion compensation prediction processing> The motion compensation prediction unit 306 predicts the block that is currently being processed in the coding process. The position and size are obtained. The motion compensation prediction unit 306 also inputs the prediction information. The prediction mode determination unit 305 obtains the information. The reference index is obtained from the acquired prediction information. The coordinates and motion vectors are derived and identified by the reference index in the decoded image memory. The illuminated picture was moved from the same position as the image signal of the prediction block by the amount of the motion vector. After acquiring the image signal of the location, a prediction signal is generated.

[0289] In interpretation, the reference mode is different from L0 prediction or L1 prediction, which use a single reference picture. In the case of prediction, the prediction signal obtained from one reference picture is used as the motion-compensated prediction signal. If the reference mode is BI forecasting, and the forecasting mode is forecasting from two reference pictures, The motion-compensated prediction signal is obtained by weighting and averaging the prediction signals acquired from two reference pictures. Then, the motion compensation prediction signal is supplied to the prediction method determination unit. Here, the ratio of the weighted average of the two predictions The ratio is set to 1:1, but a weighted average can also be performed using other ratios. For example, the target of prediction. The closer the distance between the picture and the reference picture, the higher the weighting ratio. It may also be made larger. Furthermore, the weighting ratio can be calculated using combinations of picture intervals. Alternatively, this can be done using a correspondence table with weighting ratios.

[0290] The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The compensation prediction unit 406 uses the interpretation information to determine the normal prediction motion vector mode derivation unit 401. Normal merge mode derivation unit 402, subblock predictive motion vector mode derivation unit 403, The block merge mode is obtained from the block merge mode derivation unit 404 via the switch 408.

[0291] The motion compensation prediction unit 406 sends the obtained motion compensation prediction signal to the decoded image signal superimposition unit 207. To supply.

[0292] <Regarding the predicted direction> Figures 57-61 are diagrams illustrating the prediction direction of motion compensation prediction. The process of making predictions from a picture is defined as single prediction, and in the case of single prediction, it is either L0 prediction or L1 A prediction that uses one of the two reference pictures registered in the reference list. Perform.

[0293] Figure 57 shows a simple prediction where the reference picture of L0 (RefL0Pic) is the picture to be encoded. This shows the case where the time is before (CurPic). Figure 58 is a simple prediction and L0 This indicates that the reference picture for the prediction is at a later time than the picture to be encoded. The reference picture for L0 prediction in Figures 57 and 58 is used as the reference picture for L1 prediction (RefL1 You can also perform a single prediction by replacing it with Pic).

[0294] The process of making predictions from two reference pictures is defined as dual prediction, and in the case of dual prediction, L0 prediction is used. The BI prediction is expressed using both the L1 and L0 predictions. Figure 59 is a dual prediction, and the L0 prediction is used as a reference. The reference picture is at a time earlier than the picture to be encoded, and the reference picture for L1 prediction is coded. This shows the case where the time is later than the target picture. Figure 60 is a dual prediction, and L0 prediction. If the reference picture and the reference picture for L1 prediction are at a time earlier than the picture to be encoded. This shows that Figure 61 is a dual prediction with a reference picture for the L0 prediction and a reference picture for the L1 prediction. This indicates that the time is later than the time of the picture to be encoded. In this way, L0 / L1 The relationship between the prediction type and time is not limited to L0 being in the past direction and L1 being in the future direction; it can be used in this way. This is possible. Also, in the case of dual prediction, L0 prediction and L1 prediction can be performed using the same reference picture. Each of the measurements may be performed. Furthermore, the decision of whether to perform motion compensation prediction using single prediction or dual prediction is also made. The decision is information that indicates, for example, whether or not to use L0 prediction and whether or not to use L1 prediction (for example) The decision is made based on the flag.

[0295] <About Reference Indexes> In embodiments of the present invention, in order to improve the accuracy of motion compensation prediction, multiple motion compensation predictions are performed. This makes it possible to select the optimal reference picture from among a number of reference pictures. Therefore, The reference picture used in motion compensation prediction is used as the reference index, and the reference The index is encoded along with the encoding vector within the encoding stream.

[0296] <Motion compensation processing based on the normal predictive motion vector mode> The motion compensation unit 306 is also shown in the interpretation unit 102 on the encoding side in Figure 16. In the interpretation mode determination unit 305, the normal prediction motion vector mode derivation unit 3 If the interpretation information by 01 is selected, this interpretation information will be used for interpretation The reference mode of the block currently being processed is obtained from the measurement mode determination unit 305. The illumination index and motion vector are derived, and a motion compensation prediction signal is generated. The compensation prediction signal is supplied to the prediction method determination unit 105.

[0297] Similarly, the motion compensation unit 406 is also shown in the interpretation unit 203 on the decoding side in Figure 22. In the decoding process, switch 408 normally predicts the motion vector mode derivation unit 401. When connected, the interpredictive information from the normally predicted motion vector mode derivation unit 401 is normally generated. It retrieves the reference mode, reference index, and motion vector of the block currently being processed. The function is derived and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is then decoded. It is supplied to the image signal superposition unit 207.

[0298] <Motion compensation processing based on normal merge mode> The motion compensation unit 306 is also shown in the interpretation unit 102 on the encoding side in Figure 16. In the inter prediction mode determination unit 305, the normal merge mode derivation unit 302 If interpretation prediction information is selected, this interpretation prediction information will be interpreted in interpretation prediction mode. Obtained from unit 305, the reference mode and reference index of the block currently being processed. Next, the motion vector is derived and a motion compensation prediction signal is generated. The signal is supplied to the prediction method determination unit 105.

[0299] Similarly, the motion compensation unit 406 is also shown in the interpretation unit 203 on the decoding side in Figure 22. To enable this, during the decoding process, switch 408 is connected to the normal merge mode derivation unit 402. In this case, the normal merge mode derivation unit 402 obtains inter prediction information and the current processing Derive the reference mode, reference index, and motion vector of the block that is represented as an elephant, and the motion A compensation prediction signal is generated. The generated motion compensation prediction signal is superimposed on the decoded image signal 207. It will be supplied.

[0300] <Motion compensation processing based on subblock predicted motion vector modes> The motion compensation unit 306 is also shown in the interpretation unit 102 on the encoding side in Figure 16. In the inter-prediction mode determination unit 305, the sub-block prediction motion vector mode If the inter prediction information from the derivation unit 303 is selected, this inter prediction information is used The reference mode of the block currently being processed is obtained from the center prediction mode determination unit 305. The code, reference index, and motion vector are derived, and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.

[0301] Similarly, the motion compensation unit 406 is also shown in the interpretation unit 203 on the decoding side in Figure 22. In the decoding process, switch 408 is used in the subblock predicted motion vector mode derivation section. When connected to 403, the subblock predictive motion vector mode derivation unit 403 Interpretation information is obtained, and the reference mode and reference input of the block currently being processed are obtained. DEX derives motion vectors and generates motion compensation prediction signals. The measured signal is supplied to the decoded image signal superimposition unit 207.

[0302] <Motion compensation processing based on subblock merge mode> The motion compensation unit 306 is also shown in the interpretation unit 102 on the encoding side in Figure 16. In the inter prediction mode determination unit 305, the subblock merge mode derivation unit 30 If interpretation information is selected by method 4, this interpretation information will be used for interpretation prediction. The mode determination unit 305 obtains the reference mode of the block currently being processed, and the reference The index and motion vector are derived, and a motion compensation prediction signal is generated. The correct prediction signal is supplied to the prediction method determination unit 105.

[0303] Similarly, the motion compensation unit 406 is also shown in the interpretation unit 203 on the decoding side in Figure 22. In order to enable this, during the decoding process, switch 408 is connected to subblock merge mode derivation unit 404. If the connection is maintained, the inter-prediction information from the sub-block merge mode derivation unit 404 is obtained. The reference mode, reference index, and motion vector of the block currently being processed are obtained. The signal is derived and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is used in the decoded image signal. It is supplied to the superimposed section 207.

[0304] <Motion compensation processing based on affine transformation prediction> In normal predictive motion vector mode and normal merge mode, based on the following flags Motion compensation using an affine model can be used. The following flags are used in the encoding process. Based on the conditions for inter-prediction determined by the inter-prediction mode determination unit 305, the following flags It is reflected in the encoding stream and encoded during the decoding process. Based on the following flags within the system, it is determined whether or not to perform motion compensation using an affine model. .

[0305] The sps_affine_enabled_flag enables motion compensation using an affine model in interpretation. Indicates whether it is available. If sps_affine_enabled_flag is 0, it is a sequence unit. This suppresses motion compensation by the affine model. Also, inter_affine_flag cu_affine_type_flag is transmitted in the CU syntax of the encoded video sequence. It cannot be done. If sps_affine_enabled_flag is 1, then affine will be used in the encoded video sequence. Motion compensation using a fin model is available.

[0306] sps_affine_type_flag indicates that the 6-parameter affine model is used in interpretation. This indicates whether motion compensation is available.

[0307] If sps_affine_type_flag is 0, motion compensation using a 6-parameter affine model will It is suppressed so as not to happen. Also, cu_affine_type_flag is the CU of the encoded video sequence. Not transmitted in the syntax. If sps_affine_type_flag is 1, encoded video Motion compensation using a 6-parameter affine model can be used in the sequence.

[0308] If sps_affine_type_flag does not exist, it is assumed to be 0.

[0309] When decoding a P or B slice, in the CU currently being processed, If r_affine_flag is 1, generate a motion compensation prediction signal for the currently processed CU. To achieve this, motion compensation using an affine model is employed.

[0310] If inter_affine_flag is 0, the affine model will not be applied to the currently processed CU. It is not used.

[0311] If inter_affine_flag does not exist, it is assumed to be 0.

[0312] When decoding a P or B slice, in the CU currently being processed, cu_a If ffine_type_flag is 1, the motion compensation prediction signal for the currently processed CU is generated. To achieve this, motion compensation using a 6-parameter affine model is employed.

[0313] If cu_affine_type_flag is 0, then the motion compensation prediction signal for the CU currently being processed is... Motion compensation using a four-parameter affine model is employed to generate the signal.

[0314] In motion compensation using the affine model, the reference index and motion vector are used at the subblock level. Since Torr is derived, the reference index being processed is at the subblock level. A motion compensation prediction signal is generated using motion vectors.

[0315] <Example 1> Modification 1 of this embodiment will be described. This modification differs from the embodiment in terms of merge differences. The only difference from this embodiment is the addition of a vector mode. If umve_flag in Figure 12 is 1, it becomes merge difference motion vector mode, and umve_flag If the value is 0, it enters normal merge mode.

[0316] Next, we will explain the operation of the merge difference motion vector mode. The top 2 merge candidates (One of the merge candidates with merge indices of 0 and 1 in the merge candidate list) For each of the L0 predicted motion vectors and L1 predicted motion vectors of the two merge candidates This mode allows for the addition of a single merge difference motion vector.

[0317] In the case of merge-difference motion vector mode, the merge-difference motion vector is a bit string. The data is encoded by the encoding unit 108 and decoded by the bit sequence decoding unit 201.

[0318] As described above, the merge candidate list is also used in the merge difference motion vector mode. Adding elements to the history prediction motion vector candidate list that overlap with elements in the merge candidate list is prohibited. By stopping and increasing the number of valid selection elements, encoding efficiency can be improved. .

[0319] Additionally, a merged differential motion vector mode has been added to ensure selection of the normal predictive motion vector mode. By lowering the rate, the coding efficiency decreases due to the duplication of elements in the predicted motion vector candidate list. While suppressing, the motion vector of the historical prediction motion vector candidate and the motion of the prediction motion vector candidate This reduces the amount of vector comparison processing required. <Modification 2> A second modification of this embodiment will be described. This modification is different from the embodiment shown in Figure 41. The operation of the history prediction motion vector candidate derivation units 323 and 423 differs from that of this embodiment. Only the differences will be explained. Figure 65 shows the procedure for deriving candidate motion vectors based on modified example 2. This is an explanatory flowchart. Figure 65 is different from Figure 41 in that step S2209 has been added. The process is different. Figure 65 shows the same operation as Figure 41 except for step S2209.

[0320] If numCurrMvpCand is less than 2, which is the maximum number of elements in the list of predicted motion vector candidates, The process of step S2205 (YES) in Figure 65 will be explained below.

[0321] The reference index of LY in the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] and Check whether the LY reference indexes of the encoding blocks to be processed are the same (Figure 65). Step S2209), historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i]L Even if the reference index of Y and the reference index of LY of the coded block to be processed are the same If (YES in step S2209 in Figure 65), proceed to S2206. Historical predicted motion vector The reference index of the LY in candidate HmvpCandList[NumHmvpCand - i] and the encoded block to be processed. If the reference index of LY is not the same (NO in step S2209 of Figure 65), S Proceed to 2207.

[0322] As described above, the reference index of the LY of the historical prediction motion vector candidate and the encoding of the target to be processed. When the reference index of the block's LY is the same, the movement of the historical prediction motion vector candidate. By adding the vector to the list of candidate predicted motion vectors for LY prediction, the historical predicted motion vector Without comparing the motion vector of the candidate motion vector with the motion vector of the predicted motion vector candidate, Highly accurate historical motion vector candidates can be added to the predicted motion vector candidate list.

[0323] In this embodiment, in the process of deriving candidate historical motion vectors, the historical motion vector Without comparing the elements of the candidate list for the trap with the elements of the candidate list for the predicted motion vector, While adding elements from the historical prediction motion vector candidate list to the prediction motion vector candidate list, In the history merge candidate derivation process, the elements of the history merge candidate list and the elements of the merge list are used. The system performs a comparison and adds only the history merge candidate list that does not exist in the merge list to the merge list. In addition, the following effects can be obtained by adopting the above configuration.

[0324] 1. In the process of deriving candidate lists for historical prediction motion vectors, additional candidate derivation processing is performed. This eliminates the need for predictive movement, reducing processing load and circuit size, and also eliminates the need for predictive movement. Even if elements in the vector candidate list are duplicated, encoding by reducing the number of choices This minimizes the decrease in efficiency.

[0325] 2. In the history merge candidate derivation process, the history merge candidates that overlap with the elements of the merge list are considered. By prohibiting the addition of elements to the supplemental list, the blocks to be processed can be handled without using difference vectors. In the normal merge mode, which determines the movement information, it is necessary to build an appropriate list of merge candidates. This allows for improved coding efficiency.

[0326] 3. Fill the list of historical prediction motion vector candidates with non-duplicate historical prediction motion vector candidates. This should be done after the history merge candidate derivation unit 345 in the normal merge mode derivation unit 302. The processing of the merge candidate supplementation unit 346 can be omitted, thereby reducing the amount of processing required. .

[0327] 4. Fill the list of historical prediction motion vector candidates with non-duplicate historical prediction motion vector candidates. Furthermore, the elements of the historical prediction motion vector candidate list and the key elements of the prediction motion vector candidate list Without comparing with the raw data, the elements of the historical prediction motion vector candidate list are used as predicted motion vectors. By adding it to the candidate list, the history prediction in the normal prediction motion vector mode derivation unit 301 The processing of the predicted motion vector supplementation unit 325 after the measured motion vector candidate derivation unit 323 is omitted. It is possible.

[0328] All of the embodiments described above may be combined in any way.

[0329] In all the embodiments described above, the encoded bitst output by the image encoding device Reem is specified to be decodeable according to the encoding method used in the embodiment. It has the data format. Furthermore, this image encoding device is compatible with the image decoding device. It can decode the encoded bitstream of this particular data format.

[0330] In order to exchange encoded bitstreams between the image encoding device and the image decoding device, When a wired or wireless network is used, the data format should be appropriate for the transmission method of the communication channel. The encoded bitstream may be converted and transmitted. In that case, the image encoding device will output Convert the encoded bitstream into encoded data in a data format suitable for the transmission method of the communication channel. A transmitting device that converts and transmits data to the network, and a device that receives encoded data from the network and encodes it. A receiving device is provided that restores the data into a numbered bitstream and supplies it to an image decoding device.

[0331] The transmitting device has a memory that buffers the encoded bitstream output by the image encoding device. The packet processing unit packets the encoded bitstream, and the network It includes a transmitting unit that transmits packetized encoded data. The receiving device connects the network A receiving unit that receives encoded data that has been packetized via a receiving unit, and a receiving unit that receives the encoded data It uses memory to process the encoded data and generates an encoded bitstream by packet processing. , including a packet processing unit that provides packets to an image decoding device.

[0332] Furthermore, by adding a display unit to the configuration that displays the image decoded by the image decoding device, the display It can also be used as a device. In that case, the display unit is generated by the decoded image signal superimposition unit 205, and The decoded image signal stored in the image memory 206 is read out and displayed on the screen.

[0333] Furthermore, by adding an imaging unit to the configuration and inputting the captured image into an image encoding device, It can also be used as a device. In that case, the imaging unit inputs the captured image signal into the block division unit 101. To exert force.

[0334] Figure 66 shows an example of the hardware configuration of the encoding / decoding device of the present invention. The encoding / decoding device This includes the configuration of an image encoding device and an image decoding device according to embodiments of the present invention. The encoding / decoding device 9000 consists of a CPU 9001, a codec IC 9002, and an I / O interface. -Face 9003, Memory 9004, Optical Disc Drive 9005, Network It has an interface 9006 and a video interface 9009, and each part is connected to bus 9010 It is connected by.

[0335] The image encoding unit 9007 and the image decoding unit 9008 are typically connected to the codec IC 9002. It is implemented as follows. The image coding process of the image coding device according to an embodiment of the present invention is an image code This is performed by the coding unit 9007, and is an image decoding in an image decoding device according to an embodiment of the present invention. The processing is performed by the image encoding unit 9007. The I / O interface 9003 is For example, this is achieved via a USB interface, and external keyboard 9104, mouse 9 Connects to 105, etc. CPU9001 receives input via I / O interface 9003. Based on the user's input, the encoding / decoding device 9 performs the action desired by the user. Control 000. User operation via keyboard 9104, mouse 9105, etc. This includes selecting whether to perform encoding or decoding, setting the encoding quality, and encoding stream. This includes input / output destinations for software, image input / output destinations, etc.

[0336] When the user wishes to play back images recorded on the disk recording medium 9100 The optical disc drive 9005 encodes video from the inserted disc recording medium 9100. The readout stream is read, and the readout encoded stream is coded via bus 9010. The image is sent to the image decoding unit 9008 of IC9002. The image decoding unit 9008 processes the input encoded video. The image decoding process in the image decoding apparatus according to the embodiment of the present invention is applied to the stream. The process is executed, and the decoded image is sent to the external monitor 9103 via the video interface 9009. Send. Furthermore, the encoding / decoding device 9000 has a network interface 9006. via network 9101, it connects to external distribution servers 9106 and mobile terminals 9107. It is possible to continue using the image recorded on the disk recording medium 9100. If you wish to play back images recorded on the receiver 9106 or mobile terminal 9107, The network interface 9006 receives data from the input disk recording medium 9100. Instead of reading the encoded bitstream, the encoded stream is read from network 9101. Obtain it. Also, if the user wishes to play back the image recorded in memory 9004. In this case, the encoded stream recorded in memory 9004 is used in the embodiment of the present invention. The image decoding process is performed in the image decoding device.

[0337] The image captured by the user with the external camera 9102 is encoded and recorded in memory 9004. If operation is desired, the video interface 9009 receives images from camera 9102. The image is then sent via bus 9010 to the image encoding unit 9007 of codec IC 9002. The image encoding unit 9007 processes the image input via the video interface 9009. The image encoding process is performed in the image encoding device according to an embodiment of the present invention, and the encoded bit Create a bitstream. Then, encode the bitstream and send it via bus 9010. Send to memory 9004. The user changes to memory 9004 and writes to disk storage medium 9100. If you wish to record the stream, the optical disc drive 9005 is inserted The encoded stream is written to the inserted disk recording medium 9100.

[0338] Hardware configurations that have an image encoding device but no image decoding device, or hardware configurations that have an image decoding device It is also possible to realize a hardware configuration that does not include an image encoding device. The hardware configuration is such that, for example, the codec IC9002 is the image encoding unit 9007, or This is achieved by replacing each of the image decoding units 9008 with their respective components.

[0339] The above encoding and decoding processes are performed using hardware-based transmission, storage, and receiving devices. Of course, it would be fine to implement this using ROM (Read-Only Memory) and flash memory. The firmware stored in memory, etc., and the software of the computer, etc. It is acceptable to reveal the firmware program, the software program, on the computer. It may be recorded and provided on a recording medium that can be read by, for example, a wired or wireless network. It can be provided from the server via the network, or data from terrestrial or satellite digital broadcasting. It's acceptable to offer it as a broadcast.

[0340] The present invention has been described above based on embodiments. The embodiments are illustrative and their respective components The combination of constituent elements and each processing process can be varied in many ways, and such variations Those skilled in the art will understand that the examples also fall within the scope of the present invention. [Explanation of symbols]

[0341] 100 Image encoding device, 101 Block division unit, 102 Interpretation unit, 103 Intra prediction unit, 104 Decoded image memory, 105 Prediction method determination unit, 10 6 Residual signal generation unit, 107 Orthogonal transformation / quantization unit, 108 Bit sequence encoding unit, 109 Inverse quantization / inverse orthogonal transform section, 110 Decoded image signal superposition section, 111 Encoded information Information storage memory, 200 Image decoding device, 201 Bit sequence decoding unit, 202 Block 203 Interpretation unit, 204 Intraprediction unit, 205 Encoded information Storage memory 205 Inverse quantization / inverse orthogonal transform unit, 207 Decoded image signal superposition unit, 208 Decoded image memory.< / poc>

Claims

1. A spatial motion information candidate derivation unit that derives spatial motion information candidates from the motion information of blocks spatially adjacent to the block to be encoded, A time motion information candidate derivation unit that derives time motion information candidates from the motion information of blocks that are temporally adjacent to the block to be encoded, A history motion information candidate derivation unit that derives history motion information candidates from memory that holds the motion information of encoded blocks, Equipped with, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A video encoding device characterized by the following features.

2. The steps include: deriving candidate spatial motion information from the motion information of blocks spatially adjacent to the block to be encoded; The steps include: deriving candidate time-motion information from the time-adjacent motion information of blocks adjacent to the block to be encoded; The steps include: deriving candidate historical motion information from memory that holds motion information of encoded blocks, Equipped with, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A method for encoding moving images characterized by the present invention.

3. Computers, The steps include: deriving candidate spatial motion information from the motion information of blocks spatially adjacent to the block to be encoded; The steps include: deriving candidate time-motion information from the time-adjacent motion information of blocks adjacent to the block to be encoded; The steps include: deriving candidate historical motion information from memory that holds motion information of encoded blocks, A video encoding program for making this function work, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A video encoding program characterized by the following features.

4. A spatial motion information candidate derivation unit that derives spatial motion information candidates from the motion information of blocks spatially adjacent to the block to be decrypted, A time motion information candidate derivation unit that derives time motion information candidates from the motion information of blocks that are temporally close to the block to be decoded, A history motion information candidate derivation unit that derives history motion information candidates from memory that holds the motion information of decoded blocks, Equipped with, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A video decoding device characterized by the following features.

5. The steps include: deriving candidate spatial motion information from the motion information of blocks spatially adjacent to the block to be decrypted; The steps include: deriving candidate time-motion information from the time-adjacent motion information of blocks adjacent to the block to be decrypted; The steps include: deriving candidate historical movement information from memory that holds the movement information of the decoded block; Equipped with, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A method for decoding moving images, characterized by the features described above.

6. Computers, The steps include: deriving candidate spatial motion information from the motion information of blocks spatially adjacent to the block to be decrypted; The steps include: deriving candidate time-motion information from the time-adjacent motion information of blocks adjacent to the block to be decrypted; The steps include: deriving candidate historical movement information from memory that holds the movement information of the decoded block; A video decoding program for making it work, The aforementioned historical motion information candidate is compared with the aforementioned spatial motion information candidate with respect to motion information, but is not compared with the aforementioned temporal motion information candidate with respect to motion information. The candidate spatial motion information, the candidate temporal motion information, and the candidate historical motion information are added to the motion information candidate list in that order. A video decoding program characterized by the following features.

7. A storage method for storing a bitstream generated by the video encoding method described in claim 2 into a recording medium.

8. A transmission method for transmitting a bitstream generated by the video encoding method described in claim 2.

Citation Information

Patent Citations

  • Moving image coding / decoding device using moving compensation inter-frame prediction system employing affine transformation

    JP1997172644A

  • Method and apparatus for processing video signal based on inter prediction

    US20200137398A1

  • Partial / full pruning when adding a HMVP candidate to merge / amvp

    WO2020003275A1

  • Simplified history based motion vector prediction

    WO2020065517A1