Image decoding device, image decoding method, and image decoding program
The image decoding apparatus addresses high processing loads in existing technologies by deriving motion information candidates and using affine transformation for sub-block motion compensation, achieving efficient encoding and decoding with reduced computational demands.
Patent Information
- Application Number
- JP2024175006
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-28
- Filing Date
- 2024-10-04
- Publication Date
- 2025-07-23
- Estimated Expiration
- 2039-12-27
AI Technical Summary
Existing image encoding and decoding technologies, such as those using affine transformation, impose a heavy processing load on users due to complex image conversions.
An image decoding apparatus that derives spatial, temporal, and history motion information candidates without direct comparison, adding temporal motion information candidates to the list, and uses affine transformation for sub-block motion compensation to reduce processing load.
Enables highly efficient image encoding and decoding with reduced processing requirements, improving coding efficiency and reducing computational burden.
Smart Images

Figure 0007711828000001 
Figure 0007711828000002 
Figure 0007711828000003
Abstract
Description
[Technical field]
[0001] The present invention relates to an image encoding and decoding technique that divides an image into blocks and performs prediction. [Background technology]
[0002] In image encoding and decoding, the image to be processed is divided into blocks, which are groups of a predetermined number of pixels. Divide into appropriate blocks and process in blocks. By appropriately setting the inter-frame prediction and frame prediction, the coding efficiency is improved. do.
[0003] In video coding and decoding, inter-prediction is used to predict from previously coded or decoded pictures. In Patent Document 1, affine transformation is used in inter prediction, which improves coding efficiency. The technology to be applied is described. In moving images, objects undergo transformations such as enlargement, reduction, and rotation. It is not uncommon for this to happen, and by applying the technology of Patent Document 1, efficient coding This becomes possible. [Prior art documents] [Patent documents]
[0004] [Patent Document 1] Japanese Patent Application Publication No. 9-172644 Summary of the Invention [Problem to be solved by the invention]
[0005] However, the technology in Patent Document 1 involves image conversion, which places a heavy processing load on the user. In view of the above, the present invention provides an efficient encoding technique with a low load. . [Means for solving the problem]
[0006] To solve the above problems, an image decoding apparatus according to an aspect of the present invention includes a spatial motion information candidate derivation unit that derives a spatial motion information candidate from motion information of blocks spatially adjacent to a block to be decoded, a temporal motion information candidate derivation unit that derives a temporal motion information candidate from motion information of blocks temporally adjacent to the block to be decoded, and a history motion information candidate derivation unit that derives a history motion information candidate from a memory that holds motion information of decoded blocks. The temporal motion information candidate is added to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate. When 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.
Effect of the Invention
[0007] According to the present invention, highly efficient image encoding / decoding processing can be realized with a low load.
Brief Description of the Drawings
[0008]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Figure 45
Figure 46
Figure 47
Figure 48
Figure 49
Figure 50
Figure 51
Figure 52
Figure 53
Figure 54
Figure 55
Figure 56
Figure 57
Figure 58
Figure 59
Figure 60
Figure 61
Figure 62
Figure 63
Figure 64
Figure 65
Figure 66
Embodiments for Carrying Out the Invention
[0009] Define the technologies and technical terms used in this embodiment.
[0010] <Tree Block> In the embodiment, an image to be encoded / decoded is equally divided into predetermined sizes. This unit is defined as a tree block. As shown in FIG. 4, in this embodiment, the size of the tree block is set to 128×128 pixels, but the size of the tree block is not limited to this and any size may be set. The tree block of the processing target (corresponding to the encoding target in the encoding process and the decoding target in the decoding process) switches in raster scan order, that is, in the order from left to right and from top to bottom. The inside of each tree block can be further recursively divided. The block to be encoded / decoded after the tree block division is defined as an encoding block. Also, the tree block and the encoding block are collectively referred to as a block cluster. By performing appropriate block division, efficient encoding becomes possible. The size of the tree block can be a fixed value determined in advance by the encoding apparatus and the decoding apparatus, or a configuration can be adopted in which the size of the tree block determined by the encoding apparatus is transmitted to the decoding apparatus.
[0011] <Prediction Mode> In units of the processing target encoding block, the processed part of the processing target image (in the encoding process, the encoded It is used for the decoded image, image signal, etc. of the signal indicating that the decoding is complete. In the decoding process, it is used for the image, predicted image signal, etc. for which the decoding is complete.) Intra prediction (MODE _INTRA) that performs prediction from the image signals around it, and inter prediction (MODE_INTER) that performs prediction from the image signals of the processed image are switched . A mode for identifying this intra prediction (MODE_INTRA) and inter prediction (MODE_INTER) is defined as the prediction mode (PredMode). The prediction mode (PredMode) has intra prediction (MO DE_INTRA) or inter prediction (MODE_INTER) as its value and can be selected and encoded . .
[0012] <Inter prediction> In the inter prediction that performs prediction from the image signals of the processed image, a plurality of processed images can be used as reference pictures. To manage a plurality of reference pictures, two types of lists, L0 (reference list 0) and L1 (reference list L1), are defined, and the reference pictures are specified using the respective reference indices . In the P slice, L0 prediction (Pred_L0) is available . In the B slice, L0 prediction (Pred_L0), L1 prediction (Pred_L1), and bi-prediction (Pred_BI) are available. The L0 prediction (Pred_L0) is an inter prediction that refers to the reference picture managed by L0 , and the L1 prediction (Pred_L1) is an inter prediction that refers to the reference picture managed by L1 . The bi-prediction (Pred_BI) is an inter prediction in which both the L0 prediction and the L1 prediction are performed, and refers to one reference picture managed by each of L0 and L1 . Information for specifying the L0 prediction, L1 prediction, and bi-prediction is defined as the reference mode. In the subsequent processing Regarding constants and variables with subscript LX attached to the output, it is assumed that the processing is performed for each of L0 and L1. is performed.
[0013] <Predicted Motion Vector Mode> The predicted motion vector mode is a mode that transmits an index for specifying a predicted motion vector, a differential motion vector, a reference mode, and a reference index, and determines the inter-prediction information of the block to be encoded. The predicted motion vector is a processed block adjacent to the block to be processed, or a block belonging to the processed image at the same position as or in the vicinity (neighborhood) of the block to be processed. It is derived from a predicted motion vector candidate and an index for specifying the predicted motion vector.
[0014] <Merge Mode> The merge mode is a mode that derives the inter-prediction information of the block to be processed from the inter-prediction information of a processed block adjacent to the block to be processed or a block belonging to the processed image at the same position as or in the vicinity (neighborhood) of the block to be processed, without transmitting a differential motion vector and a reference index. The processed block adjacent to the block to be processed and its inter- prediction information are defined as spatial merge candidates. A block belonging to the processed image at the same position as or in the vicinity (neighborhood) of the block to be processed and the inter- prediction information derived from the block's inter-prediction information are defined as temporal merge candidates. Each merge candidate is registered in the merge candidate list, and the merge candidate to be used for the prediction of the block to be processed is specified by the merge index.
[0015] <Proximity block> FIG. 11 is a diagram for explaining reference blocks that are referred to in order to derive inter-prediction information in the predicted motion vector mode and the merge mode. A0, A1, A2, B0, B1, B2, B3 are processed blocks adjacent to the block to be processed. T0 is a block belonging to the encoded / decoded image and located at the same position as or in the vicinity (neighborhood) of the block to be encoded / decoded in the image to be encoded / decoded. A1, A2 are located on the left side of the encoding block to be processed and are adjacent to the encoding block to be processed. B1, B3 are located above the encoding block to be processed and are adjacent to the encoding block to be processed. A0, B0, B2 are located at the lower left, upper right, and upper left of the encoding block to be processed, respectively. The details of how to handle proximity blocks in the predicted motion vector mode and the merge mode will be described later.
[0016]
[0017]
[0018] <Affine transform motion compensation> Affine transform motion compensation divides into sub-blocks of a predetermined unit, and for each sub-block, individually determines a motion vector and performs motion compensation. The motion vector of each sub-block is derived based on one or more control points derived from the inter-prediction information of a processed block adjacent to the block to be processed or a block belonging to the processed image and located at the same position as or in the vicinity (neighborhood) of the block to be processed. In this embodiment, the size of the sub-block is 4x4 pixels, but the size of the sub-block is not limited to this, and a motion vector may be derived in pixel units.
[0019] FIG. 14 shows an example of affine transformation motion compensation for two control points. 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. are the control points. Figure 15 shows an example of affine transformation motion compensation when there are three control points. In the case of , the three control points have two parameters, a horizontal component and a vertical component, so An affine transformation with three control points is called a six-parameter affine transformation. CP1, CP2, and CP3 are control points.
[0020] Affine transformation motion compensation is available in both the predicted motion vector mode and the merge mode. It is also available in the predictive motion vector mode. The mode in which the affine transformation is performed is defined as the subblock prediction motion vector mode, and the merge mode is A mode in which motion compensation is applied is defined as a sub-block merging mode.
[0021] <Inter prediction syntax> The syntax related to inter prediction will be described with reference to FIG. 12 and FIG. 13. rge_flag indicates whether the coding block to be processed is in merge mode or in predicted motion vector mode. The merge_affine_flag is a flag indicating whether to use the merge mode. A flag that indicates whether to apply the sub-block merge mode in the lock. _flag is the sub-block predicted motion vector for the coding block to be processed in the predicted motion vector mode. A flag that indicates whether to apply vector mode. It is a flag for determining the number of control points in the chunk prediction motion vector mode. Figure 1 Figure 3 shows the values of each syntax element and the corresponding prediction method. merge_flag = 1, m erge_affine_flag = 0 corresponds to the normal merge mode which is not sub-block merge, the normal merge mode corresponds to. merge_flag = 1, merge_affine_flag = 1 corresponds to the sub-block merge mode to. merge_flag = 0, inter_affine_flag = 0 is the prediction motion vector merge that is not in the sub-block prediction motion vector mode, corresponding to the normal prediction motion vector mode corresponds to. merge_flag = 0, inter_affine_flag = 1 corresponds to the sub-block prediction motion vector mode. When merge_fl ag = 0, inter_affine_flag = 1, the cu_affine_type_flag is further transmitted to determine the number of control points to.
[0022] <poc> POC (Picture Order Count) is a variable associated with the picture to be encoded, and a value that increases by 1 in the output order of the picture is set. Depending on the value of POC, it is possible to determine whether it is the same picture, determine the order relationship between pictures in the output order, or derive the distance between pictures. For example, if the POCs of two pictures have the same value, it can be determined that they are the same picture. If the POCs of two pictures have different values, it can be determined that the picture with the smaller POC value is the picture that is output first, and the difference between the POCs of the two pictures indicates the distance between the pictures in the time axis direction.
[0023] (First Embodiment) The image encoding apparatus 100 and the image decoding apparatus 200 according to the first embodiment of the present invention will be described.
[0024] FIG. 1 is a block diagram of the image encoding apparatus 100 according to the first embodiment. The moving image encoding apparatus of the embodiment includes an image encoding apparatus 100, a block division unit 101, an inter prediction unit 102, an intra prediction unit 103, a decoded image memory 104, a prediction method determination unit 105, a residual signal generation unit 106, an orthogonal transform / quantization unit 107, a bit string encoding unit 108, an inverse quantization / inverse orthogonal transform unit 109, a decoded image signal superposition unit 110, and an encoded information storage memory 111.
[0025] The block division unit 101 recursively divides the input image to generate encoding blocks. The block division unit 101 divides the block to be divided into four parts in the horizontal and vertical directions respectively, and divides the block to be divided into either the horizontal or vertical direction. It includes 2 - 3 split parts to be segmented. The generated image signal of the processing target encoded block is supplied to the inter - prediction unit 102, the intra - prediction unit 103, and the residual signal generation unit 106. Also, the information indicating the determined recursive segmentation structure is supplied to the bit - sequence encoding unit 108. The detailed operation of the block splitting unit 101 will be described later. The inter - prediction unit 102 performs inter - prediction on the processing target encoded block. It derives a plurality of inter - prediction information candidates from the prediction mode stored in the encoding information storage memory and the decoded image signal stored in the decoded image memory 104, selects a suitable inter - prediction mode from among the plurality of candidates, and supplies the selected inter - prediction mode and the prediction image signal corresponding to the selected inter - prediction mode to the prediction method determination unit 105. The detailed configuration and operation of the inter - prediction unit 102 will be described later. The intra - prediction unit 103 performs intra - prediction on the processing target encoded block. It generates a prediction image signal by intra - prediction from the decoded image signal stored in the decoded image memory 104, selects a suitable intra - prediction mode from among the plurality of intra - prediction modes, and supplies the selected intra - prediction mode and the prediction image signal corresponding to the selected intra - prediction mode to the prediction method determination unit 105. An example of intra - prediction is shown in FIG. 10. FIG. 10(a) shows the correspondence between the intra - prediction direction and the prediction mode number. For example, prediction mode 50 generates an intra - prediction image by copying pixels in the vertical direction. Prediction mode 1 is the DC mode, in which the pixel values of all the processing target blocks are set to the average value of the reference pixels. Prediction mode 0 is the Planar mode, which refers to the vertical and horizontal directions. The detailed operation of the block splitting unit 101 will be described later.
[0026] The inter - prediction unit 102 performs inter - prediction on the processing target encoded block. It derives a plurality of inter - prediction information candidates from the prediction mode stored in the encoding information storage memory and the decoded image signal stored in the decoded image memory 104, selects a suitable inter - prediction mode from among the plurality of candidates, and supplies the selected inter - prediction mode and the prediction image signal corresponding to the selected inter - prediction mode to the prediction method determination unit 105. The detailed configuration and operation of the inter - prediction unit 102 will be described later. The inter - prediction unit 102 performs inter - prediction on the processing target encoded block. It derives a plurality of inter - prediction information candidates from the prediction mode stored in the encoding information storage memory and the decoded image signal stored in the decoded image memory 104, selects a suitable inter - prediction mode from among the plurality of candidates, and supplies the selected inter - prediction mode and the prediction image signal corresponding to the selected inter - prediction mode to the prediction method determination unit 105. The detailed configuration and operation of the inter - prediction unit 102 will be described later.
[0027] The intra - prediction unit 103 performs intra - prediction on the processing target encoded block. It generates a prediction image signal by intra - prediction from the decoded image signal stored in the decoded image memory 104, selects a suitable intra - prediction mode from among the plurality of intra - prediction modes, and supplies the selected intra - prediction mode and the prediction image signal corresponding to the selected intra - prediction mode to the prediction method determination unit 105. An example of intra - prediction is shown in FIG. 10. FIG. 10(a) shows the correspondence between the intra - prediction direction and the prediction mode number. For example, prediction mode 50 generates an intra - prediction image by copying pixels in the vertical direction. Prediction mode 1 is the DC mode, in which the pixel values of all the processing target blocks are set to the average value of the reference pixels. Prediction mode 0 is the Planar mode, which refers to the vertical and horizontal directions. It shows the correspondence between the intra - prediction direction and the prediction mode number. For example, prediction mode 50 generates an intra - prediction image by copying pixels in the vertical direction. Prediction mode 1 is the DC mode, in which the pixel values of all the processing target blocks are set to the average value of the reference pixels. Prediction mode 0 is the Planar mode, which refers to the vertical and horizontal directions. This is a mode for creating a two-dimensional intra prediction image from pixels. Figure 10(b) is an example of generating an intra prediction image in the case of prediction mode 40. For each pixel of the processing target block, the value of the reference pixel in the direction indicated by the prediction mode is copied. When the reference pixel of the prediction mode is not at an integer position, the reference pixel value is determined by interpolation from the reference pixel values at the surrounding integer positions.
[0028] The decoded image memory 104 stores the decoded image generated in the decoded image signal superposition unit 110. The decoded image stored in the decoded image memory is supplied to the inter prediction unit 102 and the inter prediction 10 3.
[0029] The prediction method determination unit 105 evaluates each prediction by using the encoded information, the coded amount of the residual signal, the distortion amount between the predicted image signal and the image signal, etc., and determines the optimal prediction mode (inter prediction or intra prediction). In the case of the merge mode of inter prediction, the merge index and the encoded information of the information indicating whether it is a sub-block merge mode (sub-block merge flag) are supplied to the bit sequence encoding unit 108. In the case of the prediction motion vector mode of inter prediction, the encoded information such as the inter prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and the information indicating whether it is a sub-block mode (sub-block prediction motion vector flag) is supplied to the bit sequence encoding unit 108. The determined encoded information is supplied to the encoded information storage memory 111.
[0030] The residual signal generation unit 106 generates a residual signal by subtracting the predicted image signal from the image signal to be processed, and supplies it to the orthogonal transform / quantization unit 107.
[0031] The orthogonal transform and quantization unit 107 performs orthogonal transform and quantization on the residual signal according to quantization parameters to generate an orthogonally transformed and quantized residual signal, and supplies it to the inverse quantization and inverse orthogonal transform unit 109 and the bit sequence encoding unit 108.
[0032] The bit sequence encoding unit 108 encodes encoding information corresponding to the prediction method determined by the prediction method determination unit 104 for each coding block, in addition to information in units of sequence, picture, slice, and coding block. Specifically, for the prediction mode PredMode, partition mode PartMode, and in the case of inter prediction (PRED_INTER), a flag for determining whether it is a merge mode, a sub-block merge flag, a merge index in the case of the merge mode, an inter prediction mode if it is not the merge mode, a prediction motion vector index, information regarding the differential motion vector, a sub-block prediction motion vector flag, and other encoding information are encoded according to the specified syntax rules described later to generate a first encoded bit sequence. Also, the bit sequence encoding unit 108 entropy-encodes the orthogonally transformed and quantized residual signal according to the specified syntax rules to generate a second encoded bit sequence. The first encoded bit sequence and the second encoded bit sequence are multiplexed according to the specified syntax rules to output a bit stream.
[0033] The inverse quantization and inverse orthogonal transform unit 109 inverse-quantizes and inverse-orthogonally transforms the orthogonally transformed and quantized residual signal supplied from the orthogonal transform and quantization unit 107 to calculate a residual signal, and supplies it to the decoded image signal superimposing unit 110.
[0034] The decoded image signal superposition unit 110 superimposes the predicted image signal according to the determination by the prediction method determination unit 105 and the residual signal that has been inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, which is stored in the decoded image memory 104. Note that after performing filtering processing to reduce distortion such as block distortion caused by encoding on the decoded image, it may be stored in the decoded image memory 104.
[0035] The encoding information storage memory 111 stores encoding information such as the prediction mode (inter prediction or intra prediction) determined by the prediction method determination unit 105. The encoding information stored in the encoding information storage memory 111 is, in the case of inter prediction, in addition to the determined motion vector, reference list, reference index, and in the case of the merge mode of inter prediction, the merge index, encoding information of information indicating whether it is a sub - block merge mode (sub - block merge flag), in the case of the predicted motion vector mode of inter prediction, the inter prediction mode, prediction motion vector indexes of L0 and L1, reference indexes of L0 and L1, differential motion vectors of L0 and L1, information indicating whether it is a sub - block mode (sub - block predicted motion vector flag), and in the case of intra prediction, it is the determined intra prediction mode, etc. The construction of the history candidate list managed by the encoding information storage memory 111 will be described later.
[0036] FIG. 2 is a block diagram showing the configuration of a moving image decoding apparatus according to an embodiment of the present invention corresponding to the moving image encoding apparatus of FIG. 1. The moving image decoding apparatus of the embodiment includes a bit - stream decoding unit 201, a block division unit 202, an inter prediction unit 203, an intra prediction unit 204, an encoding information storage memory 205, an inverse quantization and inverse orthogonal transformation unit 206, a decoded image signal superposition unit 207, and a decoded image memory. It includes an image memory 208.
[0037] The decoding process of the moving image decoder in FIG. 2 is provided inside the moving image encoder in FIG. 1. Since it corresponds to the decoding process, each component of the encoding information storage memory 205, the inverse quantization / inverse orthogonal transformation unit 206, the decoded image signal superimposing unit 207, and the decoded image memory 208 in FIG. 2 corresponds to each component of the inverse quantization / inverse orthogonal transformation unit 109, the decoded image signal superimposing unit 110 in the moving image encoder in FIG. 1, the encoding information storage memory 111, and the decoded image memory 104, respectively, and has corresponding functions.
[0038] The bit stream supplied to the bit string decoder 201 is separated according to the rules of a specified syntax. The separated first encoded bit string is decoded to obtain information on sequences, pictures, slices, encoding blocks, and encoding information for each encoding block unit. Specifically, the prediction mode PredMode for determining whether it is inter prediction (PRED_INTER) or intra prediction (PRED_INTRA) for each encoding block unit, the partition mode PartMode, in the case of inter prediction (PRED_INTER), a flag for determining whether it is the merge mode, in the case of the merge mode, the merge index, the sub-block merge flag, in the case of the prediction motion vector mode, the inter prediction mode, the prediction motion vector indices of L0 and L1, the reference indices of L0 and L1, the differential motion vectors of L0 and L1, the encoding information regarding the sub-block prediction motion vector flag, etc. are decoded according to the specified syntax rules described later, and the encoding information is supplied to the inter prediction unit 203 or the intra prediction unit 204 and the encoding information storage memory 205. After separation Decode the second encoded bit sequence to calculate the orthogonally transformed and quantized residual signal, and supply the orthogonally transformed ·quantized residual signal to the inverse quantization and inverse orthogonal transformation unit 208.
[0039] The inter prediction unit 203, when the prediction mode PredMode of the encoded block to be decoded is the inter prediction (PRED_INTER) and the prediction motion vector mode, uses the encoded information of the already decoded image signal stored in the encoded information storage memory 205 to derive candidates for a plurality of prediction motion vectors and register them in the prediction motion vector candidate list described later. From among the candidates for the plurality of prediction motion vectors registered in the prediction motion vector candidate list, a prediction motion vector corresponding to the prediction motion vector index decoded and supplied by the first encoded bit sequence decoder 202 is selected, and a motion vector is calculated from the difference vector decoded by the bit sequence decoder 201 and the selected prediction motion vector and stored in the encoded information storage memory 205 together with other encoded information. Here, the encoded information of the encoded block to be supplied and stored is the prediction mode PredMode, the partition mode PartMode, whether to use L0 prediction and L1 prediction, and the flags predFlagL0 [xP][yP], predFlagL1[xP][yP], the reference indexes refIdxL0[xP][yP], refI dxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1, etc. Here , xP and yP are indexes indicating the position of the upper left pixel of the encoded block within the picture . When the prediction mode PredMode is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction (Pred_L0), the flag predFlagL0 indicating whether to use L0 prediction is 1, and L1 prediction [xP][yP], predFlagL1[xP][yP], the reference indexes refIdxL0[xP][yP], refI dxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1, etc. Here , xP and yP are indexes indicating the position of the upper left pixel of the encoded block within the picture . When the prediction mode PredMode is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction (Pred_L0), the flag predFlagL0 indicating whether to use L0 prediction is 1, and L1 prediction The flag predFlagL1 indicating whether to use the L1 prediction is 0. When the inter prediction mode is the L1 prediction (Pred_L1), the flag predFlagL0 indicating whether to use the L0 prediction is 0, and the flag predFlagL1 indicating whether to use the L1 prediction is 1. When the inter prediction mode is the bi-prediction (Pred_BI), both the flag predFlagL0 indicating whether to use the L0 prediction and the flag predFlagL1 indicating whether to use the L1 prediction are 1. Furthermore, when the prediction mode PredMode of the coded block to be decoded is the inter prediction (PRED_INTER) in the merge mode, merge candidates are derived. Using the coding information of the already decoded coded blocks stored in the coding information storage memory 205, a plurality of merge candidates are derived and registered in the merge candidate list described later. A merge candidate corresponding to the merge index decoded and supplied by the bit sequence decoder 201 is selected from the plurality of merge candidates registered in the merge candidate list. The inter prediction information such as the flags predFlagL0[xP][yP], predFlagL1[xP][yP] indicating whether to use the L0 prediction and the L1 prediction of the selected merge candidate, the reference indexes refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1 are supplied to the motion compensation prediction unit 206 and stored in the coding information storage memory 205. Here, xP and yP are indexes indicating the position of the upper left pixel of the coded block within the picture. The detailed configuration and operation of the inter prediction unit will be described later. When the inter prediction mode is the L1 prediction (Pred_L1), the flag predFlagL0 indicating whether to use the L0 prediction is 0, and the flag predFlagL1 indicating whether to use the L1 prediction is 1. When the inter prediction mode is the bi-prediction (Pred_BI), both the flag predFlagL0 indicating whether to use the L0 prediction and the flag predFlagL1 indicating whether to use the L1 prediction are 1. When the inter prediction mode is the bi-prediction (Pred_BI), both the flag predFlagL0 indicating whether to use the L0 prediction and the flag predFlagL1 indicating whether to use the L1 prediction are 1. Furthermore, when the prediction mode PredMode of the coded block to be decoded is the inter prediction (PRED_INTER) in the merge mode, merge candidates are derived. Using the coding information of the already decoded coded blocks stored in the coding information storage memory 205, a plurality of merge candidates are derived and registered in the merge candidate list described later. A merge candidate corresponding to the merge index decoded and supplied by the bit sequence decoder 201 is selected from the plurality of merge candidates registered in the merge candidate list. The inter prediction information such as the flags predFlagL0[xP][yP], predFlagL1[xP][yP] indicating whether to use the L0 prediction and the L1 prediction of the selected merge candidate, the reference indexes refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1 are supplied to the motion compensation prediction unit 206 and stored in the coding information storage memory 205. Here, xP and yP are indexes indicating the position of the upper left pixel of the coded block within the picture. The detailed configuration and operation of the inter prediction unit will be described later. The flag predFlagL0 indicating whether to use the L0 prediction and the flag predFlagL1 indicating whether to use the L1 prediction of the selected merge candidate, the reference indexes refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1 are supplied to the motion compensation prediction unit 206 and stored in the coding information storage memory 205. Here, xP and yP are indexes indicating the position of the upper left pixel of the coded block within the picture. The inter prediction information such as the flags predFlagL0[xP][yP], predFlagL1[xP][yP] indicating whether to use the L0 prediction and the L1 prediction of the selected merge candidate, the reference indexes refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1, and the motion vectors mvL0[xP][yP], mvL1[xP][yP] of L0 and L1 are supplied to the motion compensation prediction unit 206 and stored in the coding information storage memory 205. Here, xP and yP are indexes indicating the position of the upper left pixel of the coded block within the picture. The detailed configuration and operation of the inter prediction unit will be described later. Here, xP and yP are indexes indicating the position of the upper left pixel of the coded block within the picture.
[0040] The intra prediction unit 204 performs intra prediction when the prediction mode PredMode of the encoded block to be decoded is intra. The encoded information decoded by the bit string decoding unit 201 includes the intra prediction mode. According to the intra prediction mode, an intra prediction is performed from the decoded image signal stored in the decoded image memory 210 to generate a predicted image signal, and the predicted image signal is supplied to the decoded image signal superposition unit 209. Since the intra prediction unit 204 corresponds to the intra prediction unit 103 of the image encoding apparatus 100, it performs the same processing as the intra prediction unit 103. When performing intra prediction (PRED_INTRA), intra prediction is carried out. The encoded information decoded by the bit string decoding unit 201 includes the intra prediction mode. According to the intra prediction mode, a predicted image signal is generated by intra prediction from the decoded image signal stored in the decoded image memory 210, and the predicted image signal is supplied to the decoded image signal superposition unit 209. The encoded information contains the intra prediction mode. Depending on the intra prediction mode, a predicted image signal is generated by intra prediction from the decoded image signal stored in the decoded image memory 210, and the predicted image signal is supplied to the decoded image signal superposition unit 209. The intra prediction unit 204 corresponds to the intra prediction unit 103 of the image encoding apparatus 100, so it performs the same processing as the intra prediction unit 103. The intra prediction unit 204 generates a predicted image signal by intra prediction from the decoded image signal stored in the decoded image memory 210 according to the intra prediction mode included in the encoded information decoded by the bit string decoding unit 201, and supplies the predicted image signal to the decoded image signal superposition unit 209. Since the intra prediction unit 204 corresponds to the intra prediction unit 103 of the image encoding apparatus 100, it performs the same processing as the intra prediction unit 103. The intra prediction unit 204 generates a predicted image signal by intra prediction from the decoded image signal stored in the decoded image memory 210 according to the intra prediction mode included in the encoded information decoded by the bit string decoding unit 201, and supplies the predicted image signal to the decoded image signal superposition unit 209. Since the intra prediction unit 204 corresponds to the intra prediction unit 103 of the image encoding apparatus 100, it performs the same processing as the intra prediction unit 103. The intra prediction unit 204 generates a predicted image signal by intra prediction from the decoded image signal stored in the decoded image memory 210 according to the intra prediction mode included in the encoded information decoded by the bit string decoding unit 201, and supplies the predicted image signal to the decoded image signal superposition unit 209. Since the intra prediction unit 204 corresponds to the intra prediction unit 103 of the image encoding apparatus 100, it performs the same processing as the intra prediction unit 103.
[0041] The inverse quantization and inverse orthogonal transformation unit 208 performs inverse orthogonal transformation and inverse quantization on the orthogonal transformation and quantized residual signal decoded by the first encoded bit string decoding unit 202 to obtain an inverse orthogonal transformation and inverse quantized residual signal. The inverse quantization and inverse orthogonal transformation unit 208 performs inverse orthogonal transformation and inverse quantization on the orthogonal transformation and quantized residual signal decoded by the first encoded bit string decoding unit 202 to obtain an inverse orthogonal transformation and inverse quantized residual signal. The inverse quantization and inverse orthogonal transformation unit 208 performs inverse orthogonal transformation and inverse quantization on the orthogonal transformation and quantized residual signal decoded by the first encoded bit string decoding unit 202 to obtain an inverse orthogonal transformation and inverse quantized residual signal.
[0042] The decoded image signal superposition unit 209 superimposes the predicted image signal inter-predicted by the motion compensation prediction unit 206 or the predicted image signal intra-predicted by the intra prediction unit 204 and the residual signal inverse orthogonally transformed and inverse quantized by the inverse quantization and inverse orthogonal transformation unit 208 to decode the encoded image signal and store it in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210. The decoded image signal superposition unit 209 superimposes the predicted image signal inter-predicted by the motion compensation prediction unit 206 or the predicted image signal intra-predicted by the intra prediction unit 204 and the residual signal inverse orthogonally transformed and inverse quantized by the inverse quantization and inverse orthogonal transformation unit 208 to decode the encoded image signal and store it in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210. The decoded image signal superposition unit 209 superimposes the predicted image signal inter-predicted by the motion compensation prediction unit 206 or the predicted image signal intra-predicted by the intra prediction unit 204 and the residual signal inverse orthogonally transformed and inverse quantized by the inverse quantization and inverse orthogonal transformation unit 208 to decode the encoded image signal and store it in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210. The decoded image signal superposition unit 209 superimposes the predicted image signal inter-predicted by the motion compensation prediction unit 206 or the predicted image signal intra-predicted by the intra prediction unit 204 and the residual signal inverse orthogonally transformed and inverse quantized by the inverse quantization and inverse orthogonal transformation unit 208 to decode the encoded image signal and store it in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210. When storing in the decoded image memory 210, filtering processing for reducing block distortion and the like due to encoding may be performed on the decoded image and then stored in the decoded image memory 210.
[0043] Next, the operation of the block division unit 101 in the image encoding apparatus 100 will be described. FIG. 3 shows the operation of dividing an image into tree blocks and further dividing each tree block. It is a flowchart. First, the input image is divided into tree blocks of a predetermined size (step S1001). For each tree block, it is scanned in a predetermined order, that is, the raster scan order (step S1002), and the inside of the tree block to be processed is divided (step S1003).
[0044] FIG. 7 is a flowchart showing the detailed operation of the splitting process in step S1003. First , it is determined whether to divide the block to be processed into four parts (step S1101).
[0045] If it is determined that the block to be processed is to be divided into four parts, the block to be processed is divided into four parts (step S1102). For each block obtained by dividing the block to be processed, it is scanned in the Z-scan order, that is, in the order of top left, top right, bottom left, and bottom right (step S1103). FIG. 5 is an example of the Z-scan order, and FIG. 6 shows an example where the block to be processed is divided into four parts. The numbers 0 to 3 in FIG. 6 of 601 indicate the order of processing. Then, for each block divided in step S1101, the flowchart of FIG. 7 is recursively called.
[0046] If it is determined that the block to be processed is not to be divided into four parts, a 2-3 split is performed (step S1 105).
[0047] FIG. 8 is a flowchart showing the detailed operation of the 2-3 split process in step S1105 . First, it is determined whether to perform a 2-3 split on the block to be processed, that is, whether to perform either a 2-way split or a 3-way split (step S1201).
[0048] If it is not determined that the block to be processed is to be 2-3 split, that is, if it is determined not to split If so, the division is terminated (S1211), and the process returns to the upper-level block.
[0049] If it is determined that the block to be processed is to be divided into two or three parts, it is further determined whether to divide the block to be processed into two parts (step S1202).
[0050] If it is determined that the block to be processed is to be divided into two parts, it is determined whether to divide the block to be processed vertically (step S1203), and based on the result, the block to be processed is divided vertically (step S1204) or the block to be processed is divided horizontally ( step S1205). As a result of step S1204, the block to be processed is divided into two vertical parts as shown in FIG. 602 and as a result of step S1205, the block to be processed is divided into two horizontal parts as shown in FIG. 604.
[0051] If it is not determined in step S1202 that the block to be processed is to be divided into two parts , that is, if it is determined that it is to be divided into three parts, it is determined whether to divide the block to be processed vertically (step S1206), and based on the result, the block to be processed is divided vertically (step S1207) or the block to be processed is divided horizontally (step S 1208). As a result of step S1207, the block to be processed is divided into three vertical parts as shown in FIG. 603 and as a result of step S1208, the block to be processed is divided into three horizontal parts as shown in FIG. 605.
[0052] After executing either step S1204 or step S1205, each block obtained by dividing the block to be processed is scanned in order from left to right and from top to bottom (step S1209 ). )。The numbers 0 to 3 from 602 to 605 in FIG. 6 indicate the order of processing. For each of the divided blocks, the flowchart in FIG. 8 is recursively called.
[0053] The recursive block division described here may limit the necessity of division according to the number of divisions or the size of the block to be processed, etc. The information for limiting the necessity of division may be realized in a configuration where information transmission is not performed by making a prior agreement between the encoding device and the decoding device, or it may be realized in a configuration where the encoding device determines the information for limiting the necessity of division and records it in the encoded bit sequence and transmits it to the decoding device.
[0054] Next, the operation of the block division unit 202 in the image decoding device 200 will be described. The block division unit 202 divides the tree block by the same processing procedure as the block division unit 101 of the image encoding device 101. However, in the block division unit 101 of the image encoding device 101, optimization methods such as estimation of the optimal shape by image recognition and distortion rate optimization are applied to determine the optimal block division shape, while the block division unit 202 in the image decoding device 200 determines the block division shape by decoding the block division information recorded in the encoded bit sequence. This is different.
[0055] The syntax (syntax rules of the encoded bit sequence) regarding the block division in the first embodiment is shown in FIG. 9. coding_quadtree() represents the syntax related to the 4-division processing of the block , and multi_type_tree() represents the syntax related to the 2-division or 3-division processing of the block. qt_split is a flag indicating whether to divide the block into 4 parts. When the block is divided into 4 parts When qt_split = 1 and it is not divided into 4 parts, set qt_split = 0. When dividing into 4 parts (qt_split = 1), for each of the 4 divided blocks, perform recursive 4 - division processing (coding_quadtree(0), c oding_quadtree(1), coding_quadtree(2), coding_quadtree(3)). When not dividing into 4 parts (qt_ split = 0), according to multi_type_tree(), determine subsequent division. mtt_split is a flag indicating whether to further divide. When further dividing (mtt_split = 1), refer to mtt_split_vertical, which is a flag indicating whether to divide vertically or horizontally, and mtt_split_binary, which is a flag for determining whether to divide into 2 parts or 3 parts. mtt_split_vertic al = 1 indicates dividing vertically, and mtt_split_vertical = 0 indicates dividing horizontally . mtt_split_binary = 1 indicates dividing into 2 parts, and mtt_split_binary = 0 indicates dividing into 3 parts . Until mtt_split = 0, hierarchically divide blocks by recursively calling multi_type_tree .
[0056] <Inter - prediction> The inter - prediction method according to the embodiment is implemented in the inter - prediction unit 10 2 of the moving - image encoding apparatus in FIG. 1 and the inter - prediction unit 203 of the moving - image decoding apparatus in FIG. 2.
[0057] The inter - prediction method according to the embodiment will be described with reference to the drawings. The inter - prediction method is implemented in both the encoding and decoding processes in units of encoding blocks.
[0058] (Explanation of the Inter Prediction Unit 102 on the Symbolic Side) FIG. 16 is a diagram showing a detailed configuration of the inter prediction unit 102 of the moving image encoding apparatus in FIG. 1 . The normal prediction motion vector derivation unit 301 derives a plurality of normal prediction motion vector candidates for prediction selects a motion vector, and calculates a difference vector from the detected motion vector. The detected inter prediction mode, reference index, motion vector, and calculated difference vector become the inter prediction information in the normal prediction motion vector mode. This inter prediction information is supplied to the inter prediction mode determination unit 305. The detailed configuration and processing of the normal prediction motion vector derivation unit 301 will be described later .
[0059] The normal merge mode derivation unit 302 derives a plurality of normal merge candidates and selects a normal merge candidate to obtain the inter prediction information in the normal merge mode. This inter prediction information is supplied to the inter prediction mode determination unit 306. The detailed configuration and processing of the normal merge mode derivation unit 302 will be described later . .
[0060] The sub-block prediction motion vector derivation unit 303 derives a plurality of sub-block prediction motion vector candidates, selects a sub-block prediction motion vector, and calculates a difference vector from the detected motion vector . The detected inter prediction mode, reference index, motion vector , and calculated difference vector become the inter prediction information in the normal prediction motion vector mode. This inter prediction information is supplied to the inter prediction mode determination unit 306. The detailed configuration and processing of the sub-block prediction motion vector derivation unit 303 will be described later .
[0061] The sub-block merge mode derivation unit 304 derives a plurality of sub-block merge candidates and Select sub-block merge candidates and obtain inter-prediction information in sub-block merge mode . This inter-prediction information is supplied to the inter-prediction mode determination unit 306. Details of the sub-block merge mode derivation unit 304 will be described later.
[0062] In the inter-prediction mode determination unit 305, the normal prediction motion vector derivation unit 301, the normal merge mode derivation unit 302, the sub-block prediction motion vector derivation unit 303, and the sub-block merge mode derivation unit 304 supply the inter-prediction information, and the inter-prediction mode is determined. Inter-prediction information corresponding to the determination result is supplied from the 305 of the inter-prediction mode determination unit to the motion compensation prediction unit 306.
[0063] Based on the determined inter-prediction information, the motion compensation prediction unit 306 performs inter-prediction on the reference image signal stored in the decoded image memory 1 04. Details of the configuration and processing will be described later.
[0064] <Explanation of the inter-prediction unit 203 on the decoding side> FIG. 22 is a diagram showing a detailed configuration of the inter-prediction unit 203 of the moving image decoding apparatus in FIG. 2.
[0065] The normal prediction motion vector derivation unit 401 derives a plurality of normal prediction motion vector candidates, selects a prediction motion vector, and calculates a difference vector from the detected motion vector. The detected inter-prediction mode, reference index, motion vector, and difference vector become the inter-prediction information in the normal prediction motion vector mode. This inter-prediction information is supplied to the motion compensation prediction unit 406 via the switch 408 . Details of the configuration and processing of the normal prediction motion vector derivation unit 401 will be described later.
[0066] In general, the merge mode derivation unit 402 derives a plurality of general merge candidates, selects a general merge candidate, and obtains inter prediction information in the general merge mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. The detailed configuration and processing of the general merge mode derivation unit 402 will be described later. 408. The detailed configuration and processing of the general merge mode derivation unit 402 will be described later. The detailed configuration and processing of the general merge mode derivation unit 402 will be described later.
[0067] The sub-block prediction motion vector derivation unit 403 derives a plurality of sub-block prediction motion vector candidates, selects a sub-block prediction motion vector, and calculates a difference vector from the detected motion vector. The detected inter prediction mode, reference index, motion vector , and the calculated difference vector serve as inter prediction information in the normal prediction motion vector mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. The detailed configuration and processing of the sub-block prediction motion vector derivation unit 403 will be described later.
[0068] The sub-block merge mode derivation unit 404 derives a plurality of sub-block merge candidates and selects a sub-block merge candidate to obtain inter prediction information in the sub-block merge mode. . This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408 . The detailed configuration and processing of the sub-block merge mode derivation unit 404 will be described later.
[0069] Based on the determined inter prediction information, the motion compensation prediction unit 406 performs inter prediction on the reference image signal stored in the decoded image memory 1 08. The detailed configuration and processing are the same as those on the encoding side. The detailed configuration and processing are the same as those on the encoding side.
[0070] <Normal Prediction Motion Vector Mode Derivation Unit (Normal AMVP)> The normal prediction motion vector mode derivation unit 301 in FIG. 16 derives spatial prediction motion vector candidates section 321, temporal prediction motion vector candidate derivation section 322, history prediction motion vector candidate derivation section 3 23, prediction motion vector candidate supplement section 325, normal motion vector detection section 326, prediction motion ve ctor candidate selection section 327, and motion vector subtraction section 328.
[0071] The normal prediction motion vector mode derivation unit 402 in FIG. 23 derives spatial prediction motion vector candidates section 421, temporal prediction motion vector candidate derivation section 422, history prediction motion vector candidate derivation section 4 23, prediction motion vector candidate supplement section 425, prediction motion vector candidate selection section 426, motion ve ctor addition section 428.
[0072] The processing procedures of the normal prediction motion vector mode derivation unit 301 on the encoding side and the normal prediction motion ve ctor mode derivation unit 401 on the decoding side will be described with reference to the flowcharts in FIGS. 19 and 25 respectively. FIG. 19 is a flowchart showing the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 301 on the encoding side, and FIG. 25 is a flowchart showing the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 401 on the decoding side. FIG. 25 shows the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 401 on the decoding side. FIG. 25 shows the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 401 on the decoding side. is a flowchart.
[0073] <Normal Prediction Motion Vector Mode Derivation Unit (Normal AMVP): Explanation on the Encoding Side> The normal prediction motion vector mode derivation processing procedure on the encoding side will be described with reference to FIG. 19.
[0074] First, the normal motion vector detection section 326 detects normal motion vectors for each inter prediction mode and reference index (step S100 in FIG. 19). (step S100 in FIG. 19).
[0075] Subsequently, the spatial prediction motion vector candidate derivation unit 321, the temporal prediction motion vector candidate derivation unit 3 22, the history prediction motion vector candidate derivation unit 323, the prediction motion vector candidate supplementation unit 325, and the prediction motion vector candidate selection unit 327, the motion vector subtraction unit 328 calculate the differential motion vectors of the motion vectors used in the inter prediction of the normal prediction motion vector mode for each of L0 and L1 (steps S101 to S106 in FIG. 19). Specifically, when the prediction mode PredMode of the block to be coded is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction ( Pred_L0), the prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. When the inter prediction mode of the block to be coded is L1 prediction (Pred_L1), the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 is selected, and the differential motion vector mvdL1 of the motion vector mvL1 for L1 is calculated. When the inter prediction mode of the block to be coded is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. For each of L0 and L1, the differential motion vector calculation process is performed, but for both L0 and L1 the differential motion vector mvdL0 of the motion vector mvL0 is calculated. When the inter prediction mode of the block to be coded is L1 prediction (Pred_L1), the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 is selected, and the differential motion vector mvdL1 of the motion vector mvL1 for L1 is calculated. When the inter prediction mode of the block to be coded is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 is selected, and the differential motion vector mvdL1 of the motion vector mvL1 for L1 is calculated. When the inter prediction mode of the block to be coded is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 is selected, and the differential motion vector mvdL1 of the motion vector mvL1 for L1 is calculated. When the inter prediction mode of the block to be coded is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. mode is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 for L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively. vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vector mvL1 for L1 are calculated respectively.
[0076] For each of L0 and L1, the differential motion vector calculation process is performed, but for both L0 and L1 Therefore, in the following explanation, L0 and L1 are represented as a common LX. In the process of calculating the difference motion vector of L0, X is 0, and the difference motion vector of L1 is In the process of calculating the difference motion vector of LX, X is 1. If you want to refer to information from another list, not LX, use LY as the other list. represent.
[0077] When calculating the differential motion vector mvdLX of LX (YES in step S102 of FIG. 19) , calculate candidates for the predicted motion vector of LX, and generate a predicted motion vector candidate list mvpListL of LX. X is constructed (step S103 in FIG. 19). The spatial prediction motion vector candidate derivation unit 321 and the temporal prediction motion vector candidate derivation unit 322 The history motion vector predictor candidate derivation unit 323 and the motion vector predictor candidate supplementation unit 325 Candidates for the motion vector predictor are derived to construct a motion vector predictor candidate list mvpListLX. The detailed process of step S103 in FIG. 19 will be described with reference to the flowchart in FIG. This will be explained later.
[0078] Next, the motion vector predictor candidate selection unit 327 selects a motion vector predictor candidate list for LX. Select a predicted motion vector mvpLX for LX from the mvpListLX (step S104 in FIG. 19). The motion vector mvLX and each predicted motion vector stored in the predicted motion vector candidate list mvpListLX are Calculate each differential motion vector, which is the difference between the candidate motion vector mvpListLX[i] and the candidate motion vector mvpListLX[i], and The amount of code when these differential motion vectors are encoded is calculated based on the predicted motion vector candidate list mvpListL. Calculated for each element of X, among the elements registered in the predicted motion vector candidate list mvpListLX , the candidate mvpListLX[i] of the predicted motion vector with the minimum sign amount for each candidate of the predicted motion vector is selected as the predicted motion vector mvpLX. Among the predicted motion vector candidate lists mvpListLX If there are multiple candidates for the predicted motion vector with the minimum generated sign amount, the predicted motion vector candidate mvpListLX[i] represented by the smaller index i in the predicted motion vector candidate list mvpListLX is selected as the optimal predicted motion vector mvpLX.
[0079] Subsequently, in the motion vector subtraction unit 328, the predicted motion vector mvpLX of LX selected from the motion vector mvLX of LX is subtracted to calculate the differential motion vector mvdLX of LX ( step S105 in FIG. 19).
[0080] (Normal predicted motion vector mode derivation unit (normal AMVP): Explanation on the decoding side) Next, the normal predicted motion vector mode processing procedure on the decoding side will be described with reference to FIG. 25. On the decoding side, the spatial predicted motion vector candidate derivation unit 421, the temporal predicted motion vector candidate derivation unit 4 22, the history predicted motion vector candidate derivation unit 423, and the predicted motion vector candidate supplementation unit 425 calculate the motion vectors used in the inter prediction of the normal predicted motion vector mode for each of L0 and L1 (steps S201 to S206 in FIG. 25). Specifically, when the prediction mode PredMode of the block to be decoded is inter prediction (MODE_INTER) and the inter prediction mode of the block to be decoded is L0 prediction (Pred_L0), the predicted motion vector candidate list mvpListL0 of L0 is calculated Output, select the predicted motion vector mvpL0, and calculate the motion vector mvL0 of L0. For the decoding target When the inter prediction mode of the block is L1 prediction (Pred_L1), calculate the predicted motion vector candidate list mvpListL1 of L1, select the predicted motion vector mvpL1, and calculate the motion vector mvL1 of L1. When the inter prediction mode of the decoding target block is dual prediction (Pred_BI) , both L0 prediction and L1 prediction are performed. Calculate the predicted motion vector candidate list mvpListL0 of L0 and select the predicted motion vector mvpL0 of L0, and calculate the motion vector mvL0 of L0. At the same time , calculate the predicted motion vector candidate list mvpListL1 of L1, calculate the predicted motion vector mvpL1 of L1, and calculate the motion vectors mvL1 of L1 respectively.
[0081] Similar to the encoding side, on the decoding side, for each of L0 and L1, perform the motion vector calculation process , but it is a common process for both L0 and L1. Therefore, in the following description, L0 and L1 are represented as a common LX. In the process of calculating the motion vector of L0, X is 0, and in the process of calculating the motion vector of L1, X is 1. Also, when referring to the information of the other list instead of LX during the process of calculating the motion vector of LX, the other list is represented as LY.
[0082] When calculating the motion vector mvLX of LX (YES in step S202 of FIG. 25), calculate the candidates of the predicted motion vector of LX and construct the predicted motion vector candidate list mvpListLX of LX (step S203 of FIG. 25). In the normal predicted motion vector mode derivation unit 401 , the spatial predicted motion vector candidate derivation unit 421, the temporal predicted motion vector candidate derivation unit 422, the history The prediction motion vector candidate derivation unit 423 and the prediction motion vector candidate supplement unit 425 calculate a plurality of prediction motion vector candidates and construct a prediction motion vector candidate list mvpListLX. The detailed processing procedure of step S203 in FIG. 25 will be described later with reference to the flowchart of FIG. 20.
[0083] Subsequently, the prediction motion vector candidate selection unit 426 selects the prediction motion vector candidate mvpListLX[mvpIdxLX] corresponding to the index mv pIdxLX of the prediction motion vector decoded and supplied by the bit string decoding unit 201 from the prediction motion vector candidate list mvpListLX as the selected prediction motion vector mvpLX (step S204 in FIG. 25).
[0084] Subsequently, the motion vector addition unit 427 adds the differential motion vector mvdLX of LX and the prediction motion vector mvpLX of LX decoded and supplied by the bit string decoding unit 201 to calculate the motion vector mvLX of LX (step S205 in FIG. 25).
[0085] <Normal prediction motion vector mode derivation unit (normal AMVP): Motion vector prediction method> FIG. 20 is a flowchart showing the processing procedure of the normal prediction motion vector mode derivation process having a common function in the normal prediction motion vector mode derivation unit 301 of the moving image encoding device and the normal prediction motion vector mode derivation unit 401 of the moving image decoding device according to the embodiment of the present invention.
[0086] The normal prediction motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 401 include a prediction motion vector candidate list mvpListLXN (N is A or B, the same applies hereinafter). exists. The predicted motion vector candidate list mvpListLXN has a list structure, and stores a predicted motion vector index indicating the location within the predicted motion vector candidate list and a storage area for storing predicted motion vector candidates corresponding to the index as elements. The number of the predicted motion vector index starts from 0, and the predicted motion vector candidates are stored in the storage area of the predicted motion vector candidate list mvpListLXN. In subsequent processing, the coded block that becomes the predicted motion vector candidate of the predicted motion vector index i registered in the predicted motion vector candidate list mvpListLXN is represented by mvpListLXN[i], and is distinguished from the predicted motion vector candidate list mvpListLXN by using tabular notation. In this embodiment, the predicted motion vector candidate list mvpListLXN can register a maximum of two predicted motion vector candidates (inter prediction information). Further, a variable numMvpCand indicating the number of predicted motion vector candidates registered in the predicted motion vector candidate list mvpListLXN is set to 0. The spatial prediction motion vector candidate derivation units 321 and 421 derive candidates for the predicted motion vector from the coded block adjacent to the left, and derive a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and add mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221
[0087] derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidates for the predicted motion vector from the coded block adjacent to the left, and derives a flag availableFlagLXA indicating whether the predicted motion vector candidate of the coded block adjacent to the left can be used, a motion vector mvLXA, a reference index refIdxA, and a list ListA, and adds mvLXA to the predicted motion vector candidate list mvpListLXA (step S301 in FIG. 20). When it is L0, X is 0, and when it is L1, X is 1 (the same applies hereinafter). Subsequently, the predicted motion vector candidate generation units 121 and 221 derives candidate prediction motion vectors from the encoding blocks adjacent above, and indicates whether the candidate prediction motion vectors of the encoding blocks adjacent above are available by flag availableF lagLXB, and derives motion vector mvLXB, reference index refIdxB, and list ListB. If mvL XA and mvLXB are not equal, mvLXB is added to the candidate prediction motion vector list mvpListLXB (step S302 in FIG. 20). The processes of steps S301 and S302 in FIG. 20 are common except that the positions and numbers of the reference adjacent blocks are different. A flag availableFlagLXN indicating whether the candidate prediction motion vectors of the encoding blocks are available, and a motion vector mvLXN, reference index refIdxN, and ListN (N is A or B, the same below) are derived. Subsequently, the temporal prediction motion vector candidate derivation units 322 and 422 derive candidate prediction motion vectors from the encoding blocks of pictures at different times, and a flag availableFlagLXCol indicating whether the candidate prediction motion vectors of the encoding blocks of pictures at different times are available, and a motion vector mvLXCol, reference index refIdxCol, and list ListCol are derived. mvL
[0088] XCol is added to the candidate prediction motion vector list mvpListLX (step S303 in FIG. 20) . The derivation processing procedure of this step S303 will be described in detail later. Here, it is assumed that the processing of the temporal prediction motion vector candidate derivation units 322 and 422 can be omitted in units of sequence (SPS), picture (PPS), or slice.
[0089]
[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.
[0091] Subsequently, the motion vector candidate replenishment units 325 and 425 add a motion vector of a predetermined value, such as (0, 0), until the motion vector candidate list mvpListLX is filled (S305 in FIG. 20).
[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 replenishment 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 replenishment unit 446, and a merge candidate selection unit 447.
[0094] FIG. 21 is a flowchart for explaining the procedure of the merge mode derivation process 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, The case where the slice type is B slice will be described, but it also applies to the case of P slice. However, when the slice type slice_type is P slice, there is only L0 prediction (Pred_L0) as the inter prediction mode, and there is no L1 prediction (Pred_L1) or bi-prediction (Pred_BI), so the processing related to L1
[0096] can be omitted. In the normal merge mode derivation units 302 and 402, a merge candidate list mergeCandList is provided. The merge candidate list mergeCandList has a list structure, and a merge index indicating the location inside the merge candidate list and a storage area for storing the merge candidate corresponding to the index as elements are provided. The number of the merge index starts from 0 , and the merge candidate is stored in the storage area of the merge candidate list mergeCandList. In the subsequent processing, the coded block that becomes the merge candidate of the merge index i registered in the merge candidate list mergeCandList is represented by mergeCandList[i], and the merge candidate list mergeCandList is distinguished by using tabular notation. In the present embodiment, it is assumed that the merge candidate list mergeCandList can register
[0097] at most six merge candidates (inter prediction information). Further, a variable numMergeCand indicating the number of merge candidates registered in the merge From the encoded information that has been input, spatial merge candidates A, B, C, D, and E are derived from the respective encoded blocks A, B, C, D, and E adjacent to the encoding / decoding target block, and the derived spatial merge candidates are registered in the merge candidate list mergeCandList (step S401 in FIG. 21). Here, N is defined to indicate any one of A, B, C, D, E, or the temporal merge candidate Col. A flag availableFlagN indicating whether the inter-prediction information of the encoded block N can be used as the spatial merge candidate N, the reference index refIdxL0N of L0 of the spatial merge candidate N, the reference index refIdxL1N of L1, an L0 prediction flag predFlagL0N indicating whether L0 prediction is performed, and an L1 prediction flag predFlagL1N indicating whether L1 prediction is performed, the motion vector mvL0N of L0, and the motion vector mvL1N of L1 are derived. However, in this embodiment, since the merge candidates are derived without referring to the encoded blocks included in the same encoded block as the encoded block including the encoded block to be processed, the spatial merge candidates included in the same encoded block as the encoded block including the encoded block to be processed are not derived. derived, and the derived spatial merge candidates are registered in the merge candidate list mergeCandList (step S 401) of FIG. 21. Here, N is defined to indicate any one of A, B, C, D, E, or the temporal merge candidate Col. A flag availableFlagN indicating whether the inter-prediction information of the encoded block N can be used as the spatial merge candidate N, the reference index refIdxL0N of L0 of the spatial merge candidate N, the reference index refIdxL1N of L1, an L0 prediction flag predFlagL0N indicating whether L0 prediction is performed, and an L1 prediction flag predFlagL 1N indicating whether L1 prediction is performed, the motion vector mvL0N of L0, and the motion vector mvL1N of L1 are derived. However, in this embodiment, since the merge candidates are derived without referring to the encoded blocks included in the same encoded block as the encoded block including the encoded block to be processed, the spatial merge candidates included in the same encoded block as the encoded block including the encoded block to be processed are not derived. In the form of this embodiment, without referring to the encoded blocks included in the same encoded block as the encoded block including the encoded block to be processed, the merge candidates are derived, so the spatial merge candidates included in the same encoded block as the encoded block including the encoded block to be processed are not derived. In the form of this embodiment, without referring to the encoded blocks included in the same encoded block as the encoded block including the encoded block to be processed, the merge candidates are derived, so the spatial merge candidates included in the same encoded block as the encoded block including the encoded block to be processed are not derived.
[0098] Subsequently, in the temporal merge candidate derivation unit 342 and the temporal merge candidate derivation unit 442, temporal merge candidates from different pictures are derived, and the derived temporal merge candidates are registered in the merge candidate list mergeCandList (step S402 in FIG. 21). A flag availableFlagCol indicating whether the temporal merge candidate can be used, an L0 prediction flag predFlagL0Col indicating whether L0 prediction of the temporal merge candidate is performed, and an L1 prediction flag predFlagL indicating whether L1 prediction is performed, are provided. an L0 prediction flag predFlagL0Col indicating whether L0 prediction of the temporal merge candidate is performed, and an L1 prediction flag predFlagL 1 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 in detail later 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 candidates are 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 predicted motion vector candidates registered in the history predicted 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... register the merge candidates registered in the merge candidate list mergeCandList... The number of candidate numMergeCand adds additional merge candidates with the maximum number of merge candidates maxNumMergeCand as the upper limit and registers them in the merge candidate list mergeCandList (step S405 in FIG. 21). With the maximum number of merge candidates maxNumMergeCand as the upper limit, in the P slice, different reference indices Zero merge candidates with a predicted mode where the motion vector has a value of (0, 0) for the prediction mode of L0 prediction (Pred_L0) are added for the prediction mode where the motion vector has a value of (0, 0) at different reference indices. In the B slice, zero merge candidates with a predicted mode where the motion vector has a value of (0, 0) and the prediction mode is bi - prediction (Pred_BI) are added for different reference indices.
[0103] Subsequently, in the merge candidate selection unit 347 and the merge candidate replenishment unit 447, merge candidates are selected from the merge candidates registered in the merge candidate list mergeCandList. On the encoding side, the merge candidate selection unit 347 calculates the coding amount and the distortion amount to select a merge candidate and supplies the merge index indicating the selected merge candidate and the inter - prediction information of the merge candidate to the motion compensation prediction unit 406. On the other hand, on the decoding side, the merge candidate replenishment unit 447 selects a merge candidate based on the decoded merge index and supplies the selected merge candidate to the motion compensation prediction unit 406.
[0104] <Average merge candidate> The average merge candidate will be described. The average merge candidate is derived using the first merge candidate and the second merge candidate, which are two merge candidates included in the merge candidate list. The average merge candidate is the average motion vector of L0 prediction obtained by averaging the motion vector of L0 prediction of the first merge candidate and the motion vector of L0 prediction of the second merge candidate, and the motion vector of L1 prediction of the first merge candidate The average motion vector of the L1 prediction obtained by averaging the motion vectors of the L1 prediction of the candidate and the second merge candidate is a merge candidate. The reference index of the L0 prediction of the average merge candidate is the reference index of the L0 prediction of the first merge candidate, and the reference index of the L1 prediction of the average merge candidate is the reference index of the L1 prediction of the first merge candidate. In the derivation of the average motion vector, the horizontal and vertical components of the motion vector are averaged independently respectively. That is, the horizontal component of the average motion vector of the L0 prediction of the average merge candidate is the average of the horizontal components of the motion vectors of the L0 prediction of the first merge candidate and the L0 prediction of the second merge candidate , and the vertical component of the average motion vector of the L0 prediction of the average merge candidate is the vertical component of the motion vectors of the L0 prediction of the first merge candidate and the L0 prediction of the second merge candidate respectively averaged. The same applies to the average motion vector of the L1 prediction of the average merge candidate . By deriving the average merge candidate after deriving the history merge candidate, the history merge candidate becomes the target of the average merge candidate, and even if the total of the spatial merge candidate and the temporal merge candidate is 1 or less, the average merge candidate can be derived using the history merge candidate , improving the coding efficiency . By deriving the average merge candidate after deriving the history merge candidate, the history merge candidate becomes the target of the average merge candidate, and even if the total of the spatial merge candidate and the temporal merge candidate is 1 or less, the average merge candidate can be derived using the history merge candidate , improving the coding efficiency . <Sub-block prediction motion vector mode derivation> The sub-block prediction motion vector mode derivation will be described
[0105] FIG. 26 is a block diagram of the sub-block prediction motion vector mode derivation unit 30 3 in the encoding apparatus of the present application
[0106] First, in the affine inheritance prediction motion vector candidate derivation unit 361, the affine inheritance prediction motion Derive the candidate vectors. Details of the affine inheritance prediction motion vector candidate derivation will be described later. As described later.
[0107] Subsequently, in the affine construction prediction motion vector candidate derivation unit 362, an affine construction prediction motion vector candidate is derived. Details of the affine construction prediction motion vector candidate derivation will be described later.
[0108] Subsequently, in the affine identity prediction motion vector candidate derivation unit 363, an affine identity prediction motion vector candidate is derived. Details of the affine identity prediction motion vector candidate derivation will be described later.
[0109] The sub-block motion vector detection unit 366 detects a sub-block motion vector suitable for the sub-block prediction motion vector mode, and supplies the detected vector to the sub-block prediction motion vector candidate selection unit 367 and the difference calculation unit 368. and supplies the detected vector to the sub-block prediction motion vector candidate selection unit 367 and the difference calculation unit 368. and supplies the detected vector to the sub-block prediction motion vector candidate selection unit 367 and the difference calculation unit 368.
[0110] The sub-block prediction motion vector candidate selection unit 367 selects a sub-block prediction motion vector candidate from among the sub-block prediction motion vector candidates derived by the affine inheritance prediction motion vector candidate derivation unit 361, the affine construction prediction motion vector candidate derivation unit 362, and the affine identity prediction motion vector candidate derivation unit 363, based on the motion vector supplied from the sub-block motion vector detection unit 366, and supplies information regarding the selected sub-block prediction motion vector candidate to the inter-prediction mode determination unit 305 and the difference calculation unit 368. and supplies information regarding the selected sub-block prediction motion vector candidate to the inter-prediction mode determination unit 305 and the difference calculation unit 368. and supplies information regarding the selected sub-block prediction motion vector candidate to the inter-prediction mode determination unit 305 and the difference calculation unit 368. and supplies information regarding the selected sub-block prediction motion vector candidate to the inter-prediction mode determination unit 305 and the difference calculation unit 368. and supplies information regarding the selected sub-block prediction motion vector candidate to the inter-prediction mode determination unit 305 and the difference calculation unit 368.
[0111] The difference calculation unit 368 subtracts the motion vector supplied from the sub-block motion vector detection unit 366 from the motion vector From the tor vector, the sub-block prediction motion vector candidate selection unit 367 selects the sub-block The differential prediction motion vector obtained by subtracting the prediction motion vector is supplied to the inter prediction mode determination unit 305.
[0112] Figure 27 is a block diagram of the sub-block prediction motion vector mode derivation unit 403 in the decoder of the present application is.
[0113] First, in the affine inheritance prediction motion vector candidate derivation unit 461, an affine inheritance prediction motion vector candidate is derived. The process of the affine inheritance prediction motion vector candidate derivation unit 461 is the same as that of the affine inheritance prediction motion vector candidate derivation unit 361 in the encoder of the present application is.
[0114] Subsequently, in the affine construction prediction motion vector candidate derivation unit 462, an affine construction prediction motion vector candidate is derived. The process of the affine construction prediction motion vector candidate derivation unit 462 is the same as that of the affine construction prediction motion vector candidate derivation unit 362 in the encoder of the present application is.
[0115] Subsequently, in the affine identical prediction motion vector candidate derivation unit 463, an affine identical prediction motion vector candidate is derived. The process of the affine identical prediction motion vector candidate derivation unit 463 is the same as that of the affine identical prediction motion vector candidate derivation unit 363 in the encoder of the present application is.
[0116] The sub-block prediction motion vector candidate selection unit 467 is the affine inheritance prediction motion vector candidate derivation unit 461, the affine construction prediction motion vector candidate derivation unit 462, the affine identical prediction motion Among the sub-block predicted motion vector candidates derived in the motion vector candidate derivation unit 463, Then, based on the predicted motion vector index transmitted from the encoding device and decoded, a sub-block predicted motion vector candidate is selected, and the selected sub-block predicted motion vector candidate is The information on the complement is supplied to the motion compensation prediction unit 406 and the addition operation unit 467 .
[0117] The addition operation unit 467 adds the sub-block predicted motion vector candidate selected by the sub-block predicted motion vector candidate selection unit 466. The differential motion vector transmitted from the encoding device and decoded is used as the subblock predicted motion vector. The motion vector generated by the addition is supplied to the motion compensation prediction unit 406 .
[0118] <Derivation of affine inheritance predicted motion vector candidates> The affine successive prediction motion vector candidate derivation unit 361 will be described. The motion vector candidate derivation unit 461 is also the same as the affine inheritance prediction motion vector candidate derivation unit 36 Same as 1.
[0119] The affine inherited predicted motion vector candidate inherits the motion vector information of the affine control point. .
[0120] FIG. 30 is a diagram for explaining derivation of affine inheritance predicted motion vector candidates.
[0121] The affine inheritance motion vector candidate predictor is a vector that is derived from the spatially adjacent encoded and decoded blocks. The motion vectors are obtained by searching for affine control points having the same vector.
[0122] Specifically, the block (A0, A1) adjacent to the left of the block to be coded and decoded, From the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded, Search for at most one affine mode and use it as the affine inheritance prediction motion vector.
[0123] Figure 34 is a flowchart for deriving affine inheritance prediction motion vector candidates.
[0124] First, set the blocks (A0, A1) adjacent to the left of the block to be encoded / decoded as the left group (S3101), and determine whether the block containing A0 is a block using affine protection (affine mode) (S3102). If A0 is in the affine mode (S3102: YES), obtain the affine model used by A0 (S3103) and move on to the process of the block adjacent above. If A0 is not in the affine mode (S3102: NO), set the target for deriving the affine inheritance prediction motion vector candidate as A0->A1 and attempt to obtain the affine mode from the block containing A1.
[0125] Subsequently, set the blocks (B0, B1, B2) adjacent to the upper side of the block to be encoded / decoded as the upper group (S3104), and determine whether the block containing B0 is in the affine mode (S3105). If B0 is in the affine mode (S3105: YES), obtain the affine model used by B0 (S3106) and end the process. If B0 is not in the affine mode (S3105: NO), set the target for deriving the affine inheritance prediction motion vector candidate as B0->B1 and attempt to obtain the affine mode from the block containing B1. Furthermore, if B1 is not in the affine mode (S3105: NO), set the target for deriving the affine inheritance prediction motion vector candidate as B1->B2 and attempt to obtain the affine mode from the block containing B2.
[0126] In this way, by dividing into the left block and the upper block, for the left block searches for an affine model in the order of the blocks from the lower left to the upper left, and for the left block, by searching for an affine model in the order of the blocks from the upper right to the upper left, two affine models that are as different as possible can be obtained, and any one of the affine predicted motion vectors can be used to derive an affine predicted motion vector candidate with a smaller differential motion vector.
[0127] <Derivation of Affine Construction Predicted Motion Vector Candidate> The affine construction predicted motion vector candidate derivation unit 362 will be described. The same applies to the affine construction predicted motion vector candidate derivation unit 462 as to the affine construction predicted motion vector candidate derivation unit 36 2.
[0128] The affine construction predicted motion vector candidate constructs the motion vector information of the affine control points from the motion information of spatially adjacent blocks.
[0129]
[0130]
[0131] The affine construction predicted motion vector candidate is obtained by constructing a new affine model by combining the motion vectors of spatially adjacent encoded / decoded blocks.
[0131] Specifically, the motion vector of the upper left affine control point CP0 is derived from the blocks (B2, B3, A 2) adjacent to the upper left side of the block to be encoded / decoded, and the motion vector of the upper right affine control point CP1 is derived from the blocks (B1, B0) adjacent to the upper right side of the block to be encoded / decoded Derive the motion vector of the lower left affine control point CP2.
[0132] Figure 35 is a flowchart for deriving affine construction prediction motion vector candidates.
[0133] First, 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 calculated by searching for a reference block having the same reference picture as the block to be encoded / decoded in the order of priority of the B2, B3, and A2 reference blocks. The upper right affine control point CP1 is calculated by searching for a reference block having the same reference picture as the block to be encoded / decoded in the order of priority of the B1 and B0 reference blocks. The lower left affine control point CP2 is calculated by searching for a reference block having the same reference picture as the block to be encoded / decoded in the order of priority of the A1 and A0 reference blocks. When selecting the three-affine-control-point mode as the affine construction prediction motion vector (S3202: YES), it is determined whether all three affine control points (CP0, CP1, CP2) have been derived (S3203). When all three affine control points (CP0, CP1, CP2) have been derived (S3203: YES), an affine model using the three affine control points (CP0, CP1, CP2) is used as the affine construction prediction motion vector (S3204). When not selecting the three-affine-control-point mode and selecting the two-affine-control-point mode (S3202: NO), it is determined whether both two affine control points (CP0, CP1) have been derived (S3205). When both two affine control points (CP0, CP1) have been derived (S3205: YES), the two affine control points (CP0, CP1) are used.
[0134] The obtained affine model is used as the affine construction prediction motion vector (S3206).
[0135] <Derivation of Affine Identical Prediction Motion Vector Candidates> The affine identical prediction motion vector candidate derivation unit 363 will be described. The affine identical prediction The motion vector candidate derivation unit 463 for the affine identical prediction motion vector is the same as the affine identical prediction motion vector candidate derivation unit 36 3.
[0136] The affine identical prediction motion vector candidates are obtained by deriving the same motion vector at each affine control point. Specifically, similar to the affine construction prediction motion vector candidate derivation units 362 and 462, the affine control point information is derived for each, and all the affine control points are set to be the same with any of CP0 to CP2.
[0137] It can also be obtained by setting the time motion vectors derived in the same way as the normal prediction motion vector mode for all the affine control points. It can also be obtained by setting the time motion vectors derived in the same way as the normal prediction motion vector mode for all the affine control points. Moreover, it can be obtained by setting the time motion vectors derived in the same way as the normal prediction motion vector mode for all the affine control points. It can also be obtained by setting the time motion vectors derived in the same way as the normal prediction motion vector mode for all the affine control points.
[0138] <Sub-block Merge Mode Derivation> The sub-block merge mode derivation will be described.
[0139] FIG. 28 is a block diagram of the sub-block merge mode derivation unit 304 in the encoding device of the present application. The sub-block merge mode derivation unit 304 includes a sub-block merge candidate list subblockMergeCandList. This is similar to the merge candidate list mergeCandList in the normal merge mode derivation unit 302, and the only difference is that it is a different candidate list in sub-block units. subblockMergeCandList. This is similar to the merge candidate list mergeCandList in the normal merge mode derivation unit 302, and the only difference is that it is a different candidate list in sub-block units. subblockMergeCandList. This is similar to the merge candidate list mergeCandList in the normal merge mode derivation unit 302, and the only difference is that it is a different candidate list in sub-block units. subblockMergeCandList. This is similar to the merge candidate list mergeCandList in the normal merge mode derivation unit 302, and the only difference is that it is a different candidate list in sub-block units.
[0140] First, in the sub-block time merge candidate derivation unit 381, the sub-block time merge candidate Derive the complement. Details of sub-block time merge candidate derivation will be described later.
[0141] Subsequently, in the affine inheritance merge candidate derivation unit 382, derive the affine inheritance merge candidates. Details of affine inheritance merge candidate derivation will be described later. Derive the affine inheritance merge candidates. Details of affine inheritance merge candidate derivation will be described later.
[0142] Subsequently, in the affine construction merge candidate derivation unit 383, derive the affine construction merge candidates. Details of affine construction merge candidate derivation will be described later. Derive the affine construction merge candidates. Details of affine construction merge candidate derivation will be described later.
[0143] Subsequently, in the affine fixed merge candidate derivation unit 384, derive the affine fixed merge candidates. Details of affine fixed merge candidate derivation will be described later. Derive the affine fixed merge candidates. Details of affine fixed merge candidate derivation will be described later.
[0144] The sub-block merge candidate selection unit 386 selects sub-block merge candidates from among the sub-block merge candidates derived in the sub-block time merge candidate derivation unit 381, the affine inheritance merge candidate derivation unit 382, the affine construction merge candidate derivation unit 383, and the affine fixed merge candidate derivation unit 384, and supplies information regarding the selected sub-block merge candidates to the inter- prediction mode determination unit 305. Supply the information regarding the selected sub-block merge candidates to the inter-prediction mode determination unit 305.
[0145] FIG. 29 is a block diagram of the sub-block merge mode derivation unit 404 in the decoder of the present application. The sub-block merge mode derivation unit 404 includes a sub-block merge candidate list sub blockMergeCandList. This is the same as the sub-block merge mode derivation unit 304. This is the same as the sub-block merge mode derivation unit 304.
[0146] First, in the sub-block time merge candidate derivation unit 481, the sub-block time merge candidates Derive the compensation. The process of the sub-block time merge candidate derivation unit 481 is the same as that of the sub-block time merge candidate derivation unit 381.
[0147] Subsequently, in the affine inheritance merge candidate derivation unit 482, derive the affine inheritance merge candidate. The process of the affine inheritance merge candidate derivation unit 482 is the same as that of the affine inheritance merge candidate derivation unit 382.
[0148] Subsequently, in the affine construction merge candidate derivation unit 483, derive the affine construction merge candidate. The process of the affine construction merge candidate derivation unit 483 is the same as that of the affine construction merge candidate derivation unit 383.
[0149] Subsequently, in the affine fixed merge candidate derivation unit 485, derive the affine fixed merge candidate. The process of the affine fixed merge candidate derivation unit 485 is the same as that of the affine fixed merge candidate derivation unit 485.
[0150] The sub-block merge candidate selection unit 486 selects a sub-block merge candidate from among the sub-block merge candidates derived by the sub-block time merge candidate derivation unit 481, the affine inheritance merge candidate derivation unit 482, the affine construction merge candidate derivation unit 483, and the affine fixed merge candidate derivation unit 484, based on the index transmitted from the encoding device and decoded, and supplies information regarding the selected sub-block merge candidate to the motion compensation prediction unit 406.
[0151] <Sub-block time merge candidate derivation> The operation of the sub-block 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 described. The affine inheritance merge candidate derivation unit 482 is the same as the affine inheritance merge candidate derivation unit 382.
[0153] The affine inheritance merge candidate inherits the affine model of the affine control points from the affine models of spatially adjacent blocks.
[0154] FIG. 32 is a diagram for explaining the derivation of the affine inheritance merge candidate. The derivation of the affine merge inheritance merge mode candidate is obtained by searching for the motion vectors of the affine control points of the encoded / decoded blocks that are spatially adjacent, similar to the derivation of the affine inheritance predicted motion vectors.
[0155] Specifically, from the blocks (A0, A1) adjacent to the left side of the block to be encoded / decoded and the blocks (B0, B1, B2) adjacent to the upper side of the block to be encoded / decoded, one affine mode is searched for each, respectively, and used for the affine merge mode.
[0156] FIG. 36 is a flowchart of the affine inheritance merge candidate derivation.
[0157] First, the blocks (A0, A1) adjacent to the left side of the block to be encoded / decoded are set as the left group (S3301), and it is determined whether the block including A0 is in the affine mode ( S3302). If A0 is in the affine mode (S3102: YES), the affine model used by A0 is obtained (S3303), and the process proceeds to the processing of the blocks adjacent to the upper side. If A0 is not in the affine mode (S3302: NO), the target of the affine inheritance merge candidate derivation is set as A0->A1, and an attempt is made to obtain the affine mode from the block including A1.
[0158] Subsequently, the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded are set as the upper group (S3304), and it is determined whether the block including B0 is in the affine mode (S3305). If B0 is in the affine mode (S3305: YES), the affine model used by B0 is obtained (S3306), and the process ends. If B0 is not in the affine mode (S3305: NO), the target for deriving the affine inheritance merge candidate is set as B0->B 1, and an attempt is made to obtain the affine mode from the block including B1. Further, if B1 is not in the affine mode (S3305: NO), the target for deriving the affine inheritance merge candidate is set as B1- >B2, and an attempt is made to obtain the affine mode from the block including B2. 1 and an attempt is made to obtain the affine mode from the block including B1. Further, if B1 is not in the affine mode (S3305: NO), the target for deriving the affine inheritance merge candidate is set as B1->B2, and an attempt is made to obtain the affine mode from the block including B2.
[0159] <Derivation of Affine Construction Merge Candidate> The affine construction merge candidate derivation unit 383 will be described. The affine construction merge candidate derivation unit 483 is the same as the affine construction merge candidate derivation unit 383.
[0160] FIG. 33 is a diagram for explaining the derivation of the affine construction merge candidate. The affine construction merge candidate constructs an affine model of the affine control points from the motion information of spatially adjacent blocks and the time-coded blocks.
[0161] Specifically, the motion vector of the upper left affine control point CP0 is derived from the blocks (B2, B3, A 2) adjacent to the upper left side of the block to be coded / decoded, and the motion vector of the upper right affine control point CP1 is derived from the blocks (B1, B0) adjacent to the upper right side of the block to be coded / decoded. The motion vector of the upper right affine control point CP1 is derived from the blocks (B1, B0) adjacent to the upper right side of the block to be coded / decoded, and the motion vector of the lower left affine control point is derived from the blocks (A1, A0) adjacent to the lower left side of the block to be coded / decoded. The motion vector of the lower left affine control point is derived from the blocks (A1, A0) adjacent to the lower left side of the block to be coded / decoded, and from Derive the motion vector of the lower left affine control point CP2, and on the lower right side of the block to be encoded / decoded derive the motion vector of the lower right affine control point CP3 from the temporal encoded block (T0) adjacent to it.
[0162] Figure 37 is a flowchart for deriving affine construction merge candidates.
[0163] First, derive the upper left affine control point CP0, upper right affine control point CP1, lower left affine control point C P2, and lower right affine control point CP3 (S3401). The upper left control point CP0 is calculated by searching for the block with motion information in the order of priority of blocks B2, B3, and A2. The upper right control point CP1 is calculated by searching for the block with motion information in the order of priority of blocks B1 and B0. The lower left control point CP2 is calculated by searching for the block with motion information in the order of priority of blocks A1 and A0. The lower right control point CP3 is calculated by searching for the motion information of the temporal block.
[0164] Subsequently, determine whether an affine model with three affine control points can be constructed using the derived CP0, CP1, and CP2 (S3402). If it can be constructed (S340 2: YES), set the three-affine control point affine model using CP0, CP1, and CP2 as an aff ine merge candidate (S3403).
[0165] Subsequently, determine whether an affine model with three affine control points can be constructed using the derived CP0, CP1, and CP3 (S3404). If it can be constructed (S340 4: YES), set the three-affine control point affine model using CP0, CP1, and CP3 as an aff ine merge candidate (S3405).
[0166] Subsequently, it is determined whether an affine model using three affine control points can be constructed based on the derived CP0, CP2, and CP3 (S3406). If it can be constructed (S340 6: YES), the affine model with three affine control points CP0, CP2, and CP3 is set as an affine merge candidate (S3407).
[0167] Subsequently, it is determined whether an affine model using three affine control points can be constructed based on the derived CP1, CP2, and CP3 (S3408). If it can be constructed (S340 8: YES), the affine model with three affine control points CP1, CP2, and CP3 is set as an affine merge candidate (S3409).
[0168] Subsequently, it is determined whether an affine model using two affine control points can be constructed based on the derived CP0 and CP1 (S3410). If it can be constructed (S3410: YE S), the affine model with two affine control points CP0 and CP1 is set as an affine merge candidate (S3411).
[0169] Subsequently, it is determined whether an affine model using two affine control points can be constructed based on the derived CP0 and CP2 (S3412). If it can be constructed (S3412: YE S), the affine model with two affine control points CP0 and CP2 is set as an affine merge candidate (S3413).
[0170]
[0171] Here, whether an affine model can be constructed is determined based on the following conditions.
[0171] 1. The reference images of all affine control points are the same. (Affine transformation is possible) 2. Have different motion vectors at at least one affine control point. (Cannot be represented by translation) (Cannot be done) Also, affine models other than the three-affine control point affine model by CP0, CP1, CP2 and the two-affine control point affine model by CP0, CP1 are converted into the three-affine control point affine model by CP0, CP1, CP2 for the three-control affine model, and into the two-affine control point affine model by CP0, CP1 for the two-control affine model. For the three-affine control point affine model, it is converted into the three-affine control point affine model by CP0, CP1, CP2 For the two-control affine model, it is converted into the two-affine control point affine model by CP0, CP1 .[[]END]]
[0172] <Derivation of Affine Fixed Merge Candidate> The affine fixed merge candidate derivation unit 385 will be described. The affine fixed merge candidate derivation unit 485 is the same as the affine fixed merge candidate derivation unit 385.
[0173] The affine fixed merge candidate fixes the motion information of the affine control points with the fixed motion information. .
[0174] Specifically, the motion vector of each affine control point is fixed to (0, 0).
[0175] <Temporal Predicted Motion Vector> Prior to the description of the temporal predicted motion vector, the temporal context of the picture will be described. FIG. 49(a) shows the relationship between the encoding block to be encoded and the encoded picture that is temporally different from the picture to be encoded. In the picture to be encoded, a specific encoded picture to be referred to for encoding is defined as ColPic. ColPic is specified by the syntax .
[0176] Also, FIG. 49(b) shows, in ColPic, the same position as the encoding block to be encoded, and also shows the encoded coded blocks that exist in and near it. These coded blocks T 0 and T1 are coded blocks at substantially the same position in pictures that are temporally different from the picture to be coded.
[0177] The above description of the temporal relationship of the pictures is for the encoding time, but it is the same also during decoding. That is, during decoding, replace the encoding in the above description with decoding and explain it in the same way is done.
[0178] The operation of the temporal prediction motion vector candidate derivation unit 322 in the normal prediction motion vector mode derivation unit 301 of FIG. 17 will be described with reference to FIG. 50. will be described with reference to FIG. 50.
[0179] First, ColPic is derived (step S4201). The derivation of ColPic will be described with reference to FIG. 51. will be described with reference to FIG. 51.
[0180] When the slice type slice_type is a B slice and the flag collocated_from_l0_flag is 0 (YES in step S4211, YES in step S4212), RefPicList1[0], that is, the picture with the reference index 0 in the reference list L1 is the picture colPic at a different time (step S4213). Otherwise, that is, when the slice type slice_type is a B slice and the above-mentioned flag collocated_from_l0_flag is 1 (YES in step S4211, NO in step S4212), or when the slice type slice_type is a P slice (NO in step S4211, YES in step S4214), RefPicList0[0], that is, the picture with the reference index 0 in the reference list L0 is the picture colPic at a different time (YES in step S4211, NO in step S4212), or when the slice type slice_type is a P slice (NO in step S4211, YES in step S4214), RefPicList0[0], that is, the picture with the reference index 0 in the reference list L0 is the picture colPic at a different time (NO in step S4211, YES in step S4214), RefPicList0[0], that is, the picture with the reference index 0 in the reference list L0 is the picture colPic at a different time becomes. is performed (step S4215). If slice_type is not a P slice (step S4214: NO), the process ends.
[0181] Referring to FIG. 50 again, after deriving ColPic, the encoded block colCb is derived and encoding information is obtained (step S4202). This process will be described with reference to FIG. 52.
[0182] First, the encoded block located at the lower right (outer side) of the same position as the encoded block to be processed within the pictures colPic at different times is set as the encoded block colCb at different times (step S4221). This encoded block corresponds to the encoded block T0 in FIG. 49.
[0183] Next, the encoding information of the encoded block colCb at different times is obtained (step S422 2). If the PredMode of the encoded block colCb at different times is not available, or if the prediction mode PredMode of the encoded block colCb at different times is intra prediction (MODE_INTRA) (step S4223: NO, step S4224: YES), the encoded block located at the lower right of the center of the same position as the encoded block to be processed within the pictures colPic at different times is set as the encoded block colCb at different times (step S4225). This encoded block corresponds to the encoded block T1 in FIG. 49.
[0184] Referring to FIG. 50 again, next, for each reference list, inter prediction information is derived (S 4203, S4204). Here, for the encoded block colCb, the motion Derive the motion vector mvLXCol and the flag availableFlagLXCol indicating whether the encoded information is valid. LX indicates a reference list. In the derivation of reference list 0, LX becomes L0, and in the derivation of reference list 1, LX becomes L1. The derivation of inter-prediction information will be described with reference to FIG. 53.
[0185] If coded blocks colCb at different times are not available (S4231S4231: NO) , or if the prediction mode PredMode is intra prediction (MODE_INTRA) (S4232: NO) , set both the flag availableFlagLXCol and the flag predFlagLXCol to 0 (step S4233) , set the motion vector mvLXCol to (0, 0) (S4234), and end the process.
[0186] If the coded block colCb is available (S4231: Yes) and the prediction mode PredMode is not intra prediction (MODE_INTRA) (S4232: YES), calculate mvCol, refIdxCol and availableFlagCol according to the following procedure.
[0187] If the flag PredFlagL0[xP Col][yPCol] indicating whether L0 prediction of the coded block colCb is used is 0 (YES in S4235), the prediction mode of the coded block colCb is Pr ed_L1. Therefore, the motion vector mvCol is set to the same value as MvL1[xPCol][yPCol] which is the motion vector of L1 of the coded block colCb (S4236), and the reference index refIdxCol is set to the same value as RefIdxL1[xPCol][yPCol] which is the reference index of L1 (S4237). List ListCol is set to L1 (S4238). Here, xPCol and yPCol are different times within the picture colPic, and are indexes indicating the position of the top - left pixel of the encoded block colCb there is.
[0188] On the other hand, when the L0 prediction flag PredFlagL0[xPCol][yPCol] of the encoded block colCb is not 0 (NO in S4235), it is determined whether the L1 prediction flag PredFlagL1[xPCol][yPC ol] of the encoded block colCb is 0. When the L1 prediction flag PredFlagL1[xPCol] yPCol] of the encoded block colCb is 0 (YES in S4239), the motion vector mvCol is set to the same value as the L0 motion vector MvL0[xPCol][yPCol] of the encoded block colCb (S4240), and the reference index refIdxCol is set to the same value as the L0 reference index RefIdxL0[xPCol][yPCol] (S4241), and the list ListCol is set to L0 (S4242).
[0189] When both the L0 prediction flag PredFlagL0[xPCol][yPCol] and the L1 prediction flag PredFlagL1[xPCol][yPCol] of the encoded block colCb are not 0 (NO in S4235, NO in S4239), since the inter - prediction mode of the encoded block colCb is bi - prediction (Pred_BI), one of the two motion vectors of L0 and L1 is selected (S4243).
[0190] FIG. 54 is a flowchart showing the derivation processing procedure of the inter - prediction information of the encoded block when the inter - prediction mode of the encoded block colCb is bi - prediction (Pred_BI).
[0191] First, determine whether the POC of all pictures registered in all reference lists is smaller than the POC of the target picture (S4251). For all reference lists L0 and L1 of the coding block colC b, if the POC of all pictures registered in them is smaller than the POC of the current picture to be coded (YES in S4251), and if LX is deriving the prediction vector candidate of the motion vector of L0 of the coding block to be coded, that is, L0 (YES in S4252), select the inter-prediction information of L0 of the coding block colCb. If LX is L1, that is, deriving the prediction vector candidate of the motion vector of L1 of the coding block to be coded (NO in S4252), select the inter-prediction information of L1 of the coding block colCb. On the other hand, if at least one of the POCs of the pictures registered in all reference lists L0 and L1 of the coding block colCb is larger than the POC of the current picture to be coded (NO in S4251), and if the flag collocated_from_l0_fla g is 0 (YES in S4253), select the inter-prediction information of L0 of the coding block colCb. If the flag collocated_from_l0_flag is 1 (NO in S4253), select the inter-prediction information of L1 of the coding block colCb. When selecting the inter-prediction information of L0 of the coding block colCb (YES in S4252 ES, YES in S4253), the motion vector mvCol is set to the same value as MvL0[xPCol][yPCol] (S4254), and the reference index refIdxCol is set to the same value as RefIdxL0[xPCol][yPCol]. At least one of the POCs of the pictures registered in all reference lists L0 and L1 of the coding block colCb is larger than the POC of the current picture to be coded (NO in S4251), and if the flag collocated_from_l0_fla g is 0 (YES in S4253), select the inter-prediction information of L0 of the coding block colCb. If the flag collocated_from_l0_flag is 1 (NO in S4253), select the inter-prediction information of L1 of the coding block colCb. When selecting the inter-prediction information of L0 of the coding block colCb (YES in S4252 ES, YES in S4253), the motion vector mvCol is set to the same value as MvL0[xPCol][yPCol] (S4254), and the reference index refIdxCol is set to the same value as RefIdxL0[xPCol][yPCol].
[0192] When selecting the inter-prediction information of L0 of the coding block colCb (YES in S4252 ES, YES in S4253), the motion vector mvCol is set to the same value as MvL0[xPCol][yPCol] (S4254), and the reference index refIdxCol is set to the same value as RefIdxL0[xPCol][yPCol]. is set (S4254), and the reference index refIdxCol is set to the same value as RefIdxL0[xPCol][yPCol]. It is set (S4255), and the list ListCol is set to L0 (S4256).
[0193] When selecting the inter-prediction information of the L1 side of the encoded block colCb (NO in S4252 O, NO in 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] is set (S4258), and the list ListCol is set to L1 (S4259).
[0194] Return to Figure 53. If the inter-prediction information can be obtained from the encoded block colCb, both the flag ava ilableFlagLXCol and the flag predFlagLXCol are set to 1 (S4244).
[0195] Subsequently, the motion vector mvCol is scaled to obtain the motion vector mvLXCol (S42 45S4245). The scaling operation procedure of this motion vector mvLXCol will be described with reference to Figure 55 .
[0196] Subtract the POC of the reference picture corresponding to the reference index refIdxCol referred to by the list ListCol of the encoded block colCb from the POC of the picture colPic at different times to calculate the picture interval td (S4261). Note that if the POC of the reference picture referred to by the list ListCol of the encoded block colCb is earlier in the display order than the picture colPic at different times , the picture interval td is a positive value. If the POC of the reference picture referred to by the list ListCol of the encoded block colCb is later in the display order than the picture colPic at different times , In this case, the picture interval td is a negative value. The picture interval distance td becomes a negative value. td = POC of the reference picture referred to by the picture colPic at different times - POC of the reference picture referred to by the list ListCol of the coded blocks colCb POC of the reference picture The POC of the reference picture referred to by the list LX of the current picture to be coded is subtracted from the POC of the current picture to be coded to calculate the picture interval distance tb (S4262). Also, when the reference picture referred to by the list LX of the current picture to be coded is earlier in the display order than the current picture to be coded, the picture interval distance tb becomes a positive value, and when the reference picture referred to by the list LX of the current picture to be coded is later in the display order than the current picture to be coded, the picture interval distance tb becomes a negative value. tb = POC of the current picture to be coded / decoded - POC of the reference picture corresponding to the reference index of LX of the temporal merge candidate Subsequently, the picture interval distances td and tb are compared (S4263). When the picture interval distances td and tb are equal (YES in S4263), the motion vector mvLXCol is calculated by the following formula ( S4264), and this scaling operation process ends. mvLXCol = mvCol On the other hand, when the picture interval distances td and tb are not equal (NO in S4263), the variable tx is calculated by the following formula (S4265). tx = (16384 + Abs(td) >> 1) / td Subsequently, the scaling coefficient distScaleFactor is calculated by the following formula (S4266). distScaleFactor = Clip3(-4096, 4095, (tb * tx + 32) >> 6) Here, Clip3(x, y, z) is a function that limits the value z to the minimum value x and the maximum value y. Next, the motion vector mvLXCol is calculated by the following formula (S4267), and the scaling calculation is completed. The calculation process ends. 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. do.
[0197] Again, refer to FIG. 50. Then, the motion vector mvL0Col of L0 is calculated by the normal prediction motion vector mvL0Col. The motion vector predictor candidate list mvpListLXN in the motion vector mode derivation unit 301 is added as a candidate. However, this addition is performed for the coding block colCb This is only possible when the flag indicating whether L1 is available or not is availableFlagL0Col=1. The vector mvL1Col is calculated based on the predicted motion vector in the normal predicted motion vector mode derivation unit 301. The candidate is added to the list of candidates mvpListLXN (S4205). Flag indicating whether the coding block colCb of reference list 1 is available or not: availableFlagL1Col=1 This is the only step. The process of the temporal motion vector predictor candidate derivation unit 322 is then completed.
[0198] The above description of the normal predicted motion vector mode derivation unit 301 is for the encoding process. That is, in the normal predicted motion vector mode derivation unit 401 in FIG. The operation of the temporal motion vector predictor candidate derivation unit 422 in this embodiment is the same as that of the encoding described above. and is explained in the same manner.
[0199] <Time merge> Regarding the operation of the time merge candidate derivation unit 342 in the normal merge mode derivation unit 302 of FIG. 18, it will be described with reference to FIG. 56.
[0200] First, ColPic is derived (step S4301). Next, the encoded block colCb is derived and the encoding information is obtained (step S4302). Further, for each reference list, the inter - prediction information is derived (S4303, S4304). The above processing is the same as S4201 to S4204 in the time prediction motion vector candidate derivation unit 322, so the description will be omitted.
[0201] Next, a flag availableFlagCol indicating whether the encoded block colCb is valid is calculated ( S4305). When the flag availableFlagL0Col or the flag availableFlagL1Col is 1 availableFlagCol becomes 1. Otherwise, availableFlagCol becomes 0.
[0202] Then, the motion vector mvL0Col of L0 and the motion vector mvL1Col of L1 are added as candidates to the merge candidate list mergeCandList in the aforementioned normal - merge mode derivation unit 302 ( S4306). However, this addition is only when the flag a vailableFlagCol indicating whether the encoded block colCb is valid = 1. Thus, the processing of the time merge candidate derivation unit 342 is completed.
[0203] The above description of the time merge candidate derivation unit 342 is for the encoding time, but it is the same during decoding. It becomes like this. That is, the time merge candidate derivation in the normal merge mode derivation unit 402 of FIG. 24 The operation of the unit 442 is similarly described by replacing the encoding in the above description with decoding.
[0204] <Update of the history prediction motion vector candidate list> Next, a method for updating the history prediction motion vector candidate list HmvpCandList provided in the encoding information storage memory 111 on the encoding side and the encoding information storage memory 20 5 will be described in detail. FIG. 38 is a flowchart for explaining the history prediction motion vector candidate derivation processing procedure is. .
[0205] In the present embodiment, it is assumed that the update of the history prediction motion vector candidate list HmvpCandList is performed in the encoding information storage memory 111 and the encoding information storage memory 205. A history candidate list update unit may be installed in the inter prediction unit 102 and the inter prediction unit 203 to perform the update of the history prediction motion vector candidate list HmvpCandList.
[0206] The history prediction motion vector candidate list HmvpCandList is initially set at the start of the slice, and the history prediction motion vector candidate list HmvpCandList is updated when the prediction method determination unit 106 selects the normal prediction vector mode or the normal merge mode on the encoding side, and on the decoding side, the history prediction motion vector candidate list HmvpCandList is updated when the inter prediction mode decoded by the bit stream decoding unit 201 is the normal prediction vector mode or the normal merge mode. The inter prediction information hMvpCand to be registered for the inter prediction information used when performing inter prediction in the normal prediction vector mode or the normal merge mode is used as the inter prediction information candidate, and the encoding information storage memo on the encoding side ry 111 The history prediction motion vector candidate list HmvpCandList provided in the encoding information storage memory 111 on the encoding side and the decoding side Among the inter prediction information registered in the list HmvpCandList of the history prediction motion vector candidates, if there is an inter prediction with the same value as the inter prediction information candidate hMvpCand to be registered exists, the element (inter prediction information) is deleted from the history prediction motion vector candidate list HmvpCandList, and if there is no inter prediction with the same value as the inter prediction information candidate hMvpCand to be registered exists, the element (inter prediction information) at the head of the history prediction motion vector candidate list HmvpCandList is deleted, and the inter prediction information candidate hMvpCand to be registered is added to the end of the history prediction motion vector candidate list HmvpCandList. .
[0207] The number of elements in the history prediction motion vector candidate list HmvpCandList provided in the encoding information storage memory 111 on the encoding side and the decoding side 05 of the present invention is set to 6.
[0208] First, initialize the history prediction motion vector candidate list HmvpCandList in units of slices. . Add history prediction motion vector candidates to all elements of the history prediction motion vector candidate list HmvpCandList at the start of the slice, and set the value of the number NumHmvpCand of the history prediction motion vector candidates registered in the history prediction motion vector candidate list HmvpCandList to 6 (step S2101 in FIG. 38).
[0209] Here, the initialization of the history prediction motion vector candidate list HmvpCandList is performed in units of slices (the first encoded block of the slice), but it can also be performed in units of pictures, tiles, or tree block rows.
[0210] Figure 62 is a table showing an example of a history prediction motion vector candidate added by initializing the history prediction motion vector candidate list HmvpCandList. An example is shown when the slice type is a B slice and the number of reference pictures is 4. The history prediction motion vector index ranges from (the number of history prediction motion vector candidates NumHmvpCand - 1) to 0, and the inter prediction information with the motion vector value of (0, 0) according to the slice type is used as the history prediction motion vector candidate and added to the history prediction motion vector candidate list HmvpCandList to fill the history prediction motion vector candidate list with history candidates. At this time, the history prediction motion vector index starts from (the number of history prediction motion vector candidates NumHmvpCand - 1), and the reference index refIdxLX (X is 0 or 1) is set to the value incremented by 1 from 0 to (the number of reference pictures numRefIdx - 1). After that, duplicates among the history prediction motion vector candidates are allowed, and the value of 0 is set to refIdxLX. Set all the values to the number of history prediction motion vector candidates NumHmvpCand, and by fixing the value of the number of history prediction motion vector candidates NumHmvpCand to a fixed value, invalid history prediction motion vector candidates are eliminated. In this way, by generally assigning a small value of the reference index with a high selection rate to the history prediction motion vector index with a high probability of being added to the prediction motion vector candidate list and the merge candidate list, the coding efficiency can be improved. Also, for each slice, the history prediction motion vector candidate list is filled with history prediction motion vector candidates.
[0211] By pre-filling, the number of candidate history prediction motion vectors can be treated as a fixed value, so that, for example, the candidate history prediction motion vector derivation process and the candidate history merge derivation process can be simplified. This is possible.
[0212] Here, the value of the motion vector was generally set to (0, 0) with a high selection probability, but any predetermined value is acceptable. For example, values such as (4, 4), (0, 32), (-128, 0), etc. can be used to improve the encoding efficiency of the differential motion vector, or multiple predetermined values can be set to improve the encoding efficiency of the differential motion vector.
[0213] Also, the history prediction motion vector index starts from (the number of candidate history prediction motion vectors NumHmvpC and - 1), and the reference index refIdxLX (X is 0 or 1) is set to values incremented by 1 from 0 to (the number of reference pictures numRefIdx - 1), but the history prediction motion vector index may start from 0.
[0214] Figure 63 is a table showing another example of the candidate history prediction motion vectors added by initializing the candidate history prediction motion vector list HmvpCandList. It shows an example when the slice type is a B slice and the number of reference pictures is 2. In this example, to ensure that there are no duplicates among the candidate history prediction motion vectors in each element of the candidate history prediction motion vector list Hmv pCandList, inter-prediction information with different reference indices or motion vector values is added as candidate history prediction motion vectors to fill the candidate history prediction motion vector list. At this time, the history prediction motion vector index starts from (the number of candidate history prediction motion vectors NumHmvpCand - 1). First, set the value incremented by 1 from 0 to (numRefI - 1 of the reference pictures) for the reference index refIdxLX (X is 0 or 1). After that, add a motion vector with a value different from 0 to refIdxLX as a candidate for the history prediction motion vector. Set all values to the number NumHmvpCand of candidates for the history prediction motion vector, and eliminate invalid candidates for the history prediction motion vector by fixing the value of the number NumHmvpCand of candidates for the history prediction motion vector to a fixed value. Then, add a motion vector with a value different from 0 to refIdxLX as a candidate for the history prediction motion vector. Set all values to the number NumHmvpCand of candidates for the history prediction motion vector, and eliminate invalid candidates for the history prediction motion vector by fixing the value of the number NumHmvpCand of candidates for the history prediction motion vector to a fixed value. By filling the candidate list for the history prediction motion vector with non - overlapping candidates for the history prediction motion vector in units of slices in this way, further, the processing of the candidate supplement part 346 after the history merge candidate derivation part 345 in the normal merge mode derivation part 302 performed in units of coded blocks can be omitted, and the processing amount can be reduced. Here, the values of the motion vectors are set to small values such as (0, 0) or (1, 0), but if there is no overlap between the candidates for the history prediction motion vectors, the values of the motion vectors may be increased. Also, although it was assumed that the history prediction motion vector index starts from (NumHmvpCand - 1) and the reference index refIdxLX (X is 0 or 1) is set to a value incremented by 1 from 0 to (numRefIdx - 1 of the reference pictures), the history prediction motion vector index may start from 0.
[0215] In this way, by filling the candidate list for the history prediction motion vector with non - overlapping candidates for the history prediction motion vector in units of slices, further, the processing of the candidate supplement part 346 after the history merge candidate derivation part 345 in the normal merge mode derivation part 302 performed in units of coded blocks can be omitted, and the processing amount can be reduced. Here, the values of the motion vectors are set to small values such as (0, 0) or (1, 0), but if there is no overlap between the candidates for the history prediction motion vectors, the values of the motion vectors may be increased. Also, although it was assumed that the history prediction motion vector index starts from (NumHmvpCand - 1) and the reference index refIdxLX (X is 0 or 1) is set to a value incremented by 1 from 0 to (numRefIdx - 1 of the reference pictures), the history prediction motion vector index may start from 0. Figure 64 is a table showing another example of the candidates for the history prediction motion vector added by the initialization of the candidate list HmvpCandList for the history prediction motion vector.
[0216] First, set the value incremented by 1 from 0 to (numRefI - 1 of the reference pictures) for the reference index refIdxLX (X is 0 or 1). After that, add a motion vector with a value different from 0 to refIdxLX as a candidate for the history prediction motion vector. Set all values to the number NumHmvpCand of candidates for the history prediction motion vector, and eliminate invalid candidates for the history prediction motion vector by fixing the value of the number NumHmvpCand of candidates for the history prediction motion vector to a fixed value. Here, the values of the motion vectors are set to small values such as (0, 0) or (1, 0), but if there is no overlap between the candidates for the history prediction motion vectors, the values of the motion vectors may be increased.
[0217] Also, although it was assumed that the history prediction motion vector index starts from (NumHmvpCand - 1) and the reference index refIdxLX (X is 0 or 1) is set to a value incremented by 1 from 0 to (numRefIdx - 1 of the reference pictures), the history prediction motion vector index may start from 0. First, set the value incremented by 1 from 0 to (numRefI - 1 of the reference pictures) for the reference index refIdxLX (X is 0 or 1). After that, add a motion vector with a value different from 0 to refIdxLX as a candidate for the history prediction motion vector. Set all values to the number NumHmvpCand of candidates for the history prediction motion vector, and eliminate invalid candidates for the history prediction motion vector by fixing the value of the number NumHmvpCand of candidates for the history prediction motion vector to a fixed value. Then, add a motion vector with a value different from 0 to refIdxLX as a candidate for the history prediction motion vector. Set all values to the number NumHmvpCand of candidates for the history prediction motion vector, and eliminate invalid candidates for the history prediction motion vector by fixing the value of the number NumHmvpCand of candidates for the history prediction motion vector to a fixed value. By filling the candidate list for the history prediction motion vector with non - overlapping candidates for the history prediction motion vector in units of slices in this way, further, the processing of the candidate supplement part 346 after the history merge candidate derivation part 345 in the normal merge mode derivation part 302 performed in units of coded blocks can be omitted, and the processing amount can be reduced.
[0218] Figure 64 is a table showing another example of the candidates for the history prediction motion vector added by the initialization of the candidate list HmvpCandList for the history prediction motion vector. Figure 64 is a table showing another example of the candidates for the history prediction motion vector added by the initialization of the candidate list HmvpCandList for the history prediction motion vector.
[0219] An example in which the slice type is a B slice is shown. In this example, the history of motion vector predictor candidates The elements of the list HmvpCandList are sorted so that there is no overlap between the historical motion vector predictor candidates. If the index is 0, the inter prediction information with different motion vector values is stored in the history prediction motion vector. The motion vector prediction candidate list is filled with the motion vector prediction candidate. The predicted motion vector index is calculated by starting with (the number of historical predicted motion vector candidates NumHmvpCand-1). First, the reference index refIdxLX (X is 0 or 1) is set to 0. All values are set in the number of motion vector predictor candidates NumHmvpCand, and the number of historical motion vector predictor candidates NumHmvpCa By setting the value of nd to a fixed value, invalid historical motion vector predictor candidates are eliminated.
[0220] In this way, by setting the reference index to 0, the number of reference pictures is further taken into consideration. Since the initialization can be performed without any need for rewriting, the processing can be simplified.
[0221] Here, the value of the motion vector is a multiple of 2. Other values are acceptable as long as there is no overlap between the vector candidates.
[0222] In addition, the history prediction motion vector index is expressed as the number of history prediction motion vector candidates NumHmvpC and-1), and the reference index refIdxLX (X is 0 or 1) starts from 0 (reference picture The number of objects (numRefIdx-1) is incremented by 1, but the historical prediction behavior is Vector indices may start at 0.
[0223] Subsequently, for each encoded block in the slice, the following history prediction motion vector candidate list Hmvp Repeatedly perform the update process of CandList (steps S2102 to S2111 in FIG. 38).
[0224] First, perform initial settings for each encoded block. A flag identicalCandExist indicating whether there is an identical candidate is set to FALSE (false), and the deletion target index removeIdx is set to 0 (step S2103 in FIG. 38).
[0225] Determine whether there is a candidate hMvp Cand of the inter prediction information to be registered in the history prediction motion vector candidate list HmvpCandList (step S2104 in FIG. 38). If the prediction method on the encoding side is determined to be the normal prediction motion vector mode or the normal merge mode by the prediction method determination unit 105, or if it is decoded as the normal prediction motion vector mode or the normal merge mode by the bit string decoder on the decoding side then set the inter prediction mode to hMvpCand. If the prediction method determination on the encoding side is determined to be the intra prediction mode, the sub-block prediction motion vector mode, or the sub-block merge mode, or if it is decoded as the intra prediction mode, the sub-block prediction motion vector mode, or the sub-block merge mode by the bit string decoder on the decoding side then no update process of the history prediction motion vector candidate list HmvpCandList is performed, and there is no candidate hMvpCand of the inter prediction information to be registered. If there is no candidate hMvpCand of the inter prediction information to be registered, skip steps S2105 to S2110 (NO in step S2104 of FIG. 38). If there is a candidate hMvpCand of the inter prediction information to be registered, then perform steps S2105 to S2110. (step S2104 of FIG. 38). If there is a candidate hMvpCand of the inter prediction information to be registered, then skip steps S2105 to S2110 (NO in step S2104 of FIG. 38). If there is a candidate hMvpCand of the inter prediction information to be registered, then perform steps S2105 to S2110. (step S2104 of FIG. 38). If there is a candidate hMvpCand of the inter prediction information to be registered, then Perform the following processing for S2105 (YES in step S2104 of FIG. 38).
[0226] Subsequently, it is determined whether there is an element identical to the candidate inter-prediction information hMvpCand to be registered among the elements of the history prediction motion vector candidate list HmvpCandList (step S2105 in FIG. 38). FIG. 39 is a flowchart of this identical element confirmation processing procedure. When the value of the number NumHmvpCand of history prediction motion vector candidates is 0 (NO in step S2121 of FIG. 39), the history prediction motion vector candidate list HmvpCandList is empty and there is no identical candidate, so steps S2122 to S2125 in FIG. 39 are skipped and this identical element confirmation processing procedure is terminated. When the value of the number NumHmvpCand of history prediction motion vector candidates is greater than 0 (YES in step S2121 of FIG. 39), the history prediction motion vector index hMvpIdx ranges from 0 to NumHmvpCand - 1, and the processing in steps S2122 to S2125 is repeated (steps S2121 to S2125 in FIG. 39). First, it is compared whether the element HmvpCandList[MvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is identical to the candidate inter-prediction information hMvpCand (step S2123 in FIG. 39). If they are identical (YES in step S2123 of FIG. 39), a flag identicalCandExist indicating whether there is an identical candidate is set to the value TRUE (true), the value of hMVpIndex is set to the deletion target index removeIdx, and this identical element confirmation processing is terminated When they are not identical (NO in step S2123 of FIG. 39), hMvpIdx is incremented by 1 (steps S2121 and S2125 in FIG. 39), and the processing after step S2123 is performed Skip steps S2122~S2125 in FIG. 39 and end this identical element confirmation processing procedure. When the value of the number NumHmvpCand of history prediction motion vector candidates is greater than 0 (YES in step S2121 of FIG. 39), the history prediction motion vector index hMvpIdx ranges from 0 to NumHmvpCand - 1, and the processing in steps S2122 to S2125 is repeated (steps S2121 to S2125 in FIG. 39). First, it is compared whether the element HmvpCandList[MvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is identical to the candidate inter-prediction information hMvpCand (step S2123 in FIG. 39). If they are identical (YES in step S2123 of FIG. 39), a flag identicalCandExist indicating whether there is an identical candidate is set to the value TRUE (true), the value of hMVpIndex is set to the deletion target index removeIdx, and this identical element confirmation processing is terminated When they are not identical (NO in step S2123 of FIG. 39), hMvpIdx is incremented by 1 (steps S2121 and S2125 in FIG. 39), and the processing after step S2123 is performed Skip steps S2122~S2125 in FIG. 39 and end this identical element confirmation processing procedure. When the value of the number NumHmvpCand of history prediction motion vector candidates is greater than 0 (YES in step S2121 of FIG. 39), the history prediction motion vector index hMvpIdx ranges from 0 to NumHmvpCand - 1, and the processing in steps S2122 to S2125 is repeated (steps S2121 to S2125 in FIG. 39). First, it is compared whether the element HmvpCandList[MvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is identical to the candidate inter-prediction information hMvpCand (step S2123 in FIG. 39). If they are identical (YES in step S2123 of FIG. 39), a flag identicalCandExist indicating whether there is an identical candidate is set to the value TRUE (true), the value of hMVpIndex is set to the deletion target index removeIdx, and this identical element confirmation processing is terminated When they are not identical (NO in step S2123 of FIG. 39), hMvpIdx is incremented by 1 (steps S2121 and S2125 in FIG. 39), and the processing after step S2123 is performed Skip steps S2122~S2125 in FIG. 39 and end this identical element confirmation processing procedure. When the value of the number NumHmvpCand of history prediction motion vector candidates is greater than 0 (YES in step S2121 of FIG. 39), the history prediction motion vector index hMvpIdx ranges from 0 to NumHmvpCand - 1, and the processing in steps S2122 to S2125 is repeated (steps S2121 to S2125 in FIG. 39). First, it is compared whether the element HmvpCandList[MvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is identical to the candidate inter-prediction information hMvpCand (step S2123 in FIG. 39). If they are identical (YES in step S2123 of FIG. 39), a flag identicalCandExist indicating whether there is an identical candidate is set to the value TRUE (true), the value of hMVpIndex is set to the deletion target index removeIdx, and this identical element confirmation processing is terminated When they are not identical (NO in step S2123 of FIG. 39), hMvpIdx is incremented by 1 (steps S2121 and S2125 in FIG. 39), and the processing after step S2123 is performed
[0227] Here, fill the historical prediction motion vector candidate list with historical prediction motion vector candidates. By doing so, step S2121 in FIG. 39 can be omitted.
[0228] Return to the flowchart of FIG. 38 again, and perform the element shift and addition process of the historical prediction motion vector candidate list HmvpCandList (step S2106 in FIG. 38). FIG. 40 is the flowchart of the element shift / addition process of the historical prediction motion vector candidate list HmvpCandList in step S2106 of FIG. 38. First, determine whether to add a new element after removing the elements stored in the historical prediction motion vector candidate list HmvpCandList or add a new element without removing the elements. Specifically, compare whether the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) or whether NumHmvpCand is 6 (step S2141 in FIG. 40). When either the condition that the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) or NumHmvpCand is 6 is satisfied (YES in step S2141 of FIG. 40), add a new element after removing the elements stored in the historical prediction motion vector candidate list HmvpCandList. Set the initial value of the index i to the value of removeIdx + 1. From this initial value to NumHmvpCand, repeat the element shift process in step S2143. (Steps S2142 to S2144 in FIG. 40). Shift the elements forward by copying the elements of HMVPCandList[i] to HMVPCandList[i - 1] (step S2143 in FIG. 40), and increment i. 1 Increment (steps S2142 and S2145 in FIG. 40). Subsequently, history prediction From 0 corresponding to the last of the motion vector candidate list (NumHmvpCand - 1)th HMVPCandLis Add the inter - prediction information candidate hMvpCand to t[NumHmvpCand - 1] (step S214 5) in FIG. 40, and end the element shift and addition process of the present history prediction motion vector candidate list HMVPCandList. On the other hand, when neither the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) nor NumHmvpCand satisfies the condition of 6 (NO in step S2141 of FIG. 40) Add a new element without removing the elements stored in the history prediction motion vector candidate list HmvpCandList. From 0 corresponding to the last of the history prediction motion vector candidate list Add the inter - prediction information candidate hMvpCand to the (NumHmvpCand - 1)th HMVPCandList[NumHmvpCand], increment NumHmvpCand by 1 (step S2145 in FIG. 40), and end the element shift and addition process of the present history prediction motion vector candidate list HMVPCandList.
[0229] Here, the history prediction motion vector candidate list is applicable to both the prediction motion vector mode and the merge mode although it may be applied to only one of them.
[0230] As described above, in the update of the history prediction motion vector candidate list, since new elements are added after removing the same elements stored in the history prediction motion vector candidate list there are no duplicate elements in the history prediction motion vector candidate list, and the history prediction motion vector candidate list is composed of all different elements.
[0231] <Historical Prediction Motion Vector Candidate Derivation Process> Next, the history of predicted motion vector candidates in the normal predicted motion vector mode derivation unit 301 on the encoding side is The prediction motion vector mode derivation unit 323 and the history prediction motion vector mode derivation unit 401 on the decoding side The process of step S304 in FIG. 20 is common to all the torque candidate derivation units 423. Method for deriving historical predicted motion vector candidates from the historical predicted motion vector candidate list HMVPCandList FIG. 41 is a flowchart for explaining a procedure for deriving a historical motion vector predictor candidate. This is a low chart.
[0232] The current number of motion vector predictor candidates, numCurrMvpCand, is the maximum number of motion vector predictor candidates in the list. The number of elements (here, 2) or more, or the number of history motion vector predictor candidates is 0. In this case (NO in step S2201 in FIG. 41), steps S2202 to S220 8 is omitted, and the procedure for deriving the historical predicted motion vector candidate is terminated. When is smaller than 2, which is the maximum number of elements in the motion vector predictor candidate list (step If the answer is YES in S2201, the process goes to steps S2202 to S2208 in FIG.
[0233] Next, for index i, from 1 to the smaller of 4 and NumHmvpCand, Fig. 41 The processes of steps S2203 to S2207 are repeated (steps S2202 to S2207 in FIG. 41). S2208). numCurrMvpCand is equal to or greater than 2, which is the maximum number of elements in the motion vector predictor candidate list. In this case (NO in step S2203 in FIG. 41), steps S2204 to S22 Omit the process of 08 and end the processing procedure for deriving the candidate of the historical prediction motion vector. numCurrMvp If Cand is less than 2, which is the maximum number of elements in the prediction motion vector candidate list (YES in step S2203 of FIG. 41), perform the processing after step S2204 of FIG. 41.
[0234] Subsequently, perform the processing from step S2205 to S2206 for variables Y being 0 and 1 (L0 and L1 ). numCurrMvpCand If numCurrMvpCand is 2 or more, which is the maximum number of elements in the prediction motion vector candidate list (NO in step S2205 of FIG. 41), omit the processing from step S2206 to S2208 of FIG. 41 and end the processing procedure for deriving the candidate of the historical prediction motion vector. If numCurrMvpCand is less than 2, which is the maximum number of elements in the prediction motion vector candidate list (YES in step S2205 of FIG. 41), perform the processing after step S2206 of FIG. 41. If numCurrMvpCand is less than 2, which is the maximum number of elements in the prediction motion vector candidate list (YES in step S2205 of FIG. 41), perform the processing after step S2206 of FIG. 41.
[0235] Subsequently, add the motion vector of LY of the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] to the element mvpListLY[numCurrMvpCand ] at the numCurrMvpCand-th position counted from 0 in the prediction motion vector candidate list of the LY prediction, and increment numCurrMvpCand by 1 (step S2206 of FIG. 41).
[0236] Perform the processing from step S2205 to S2206 of FIG. 41 above for both L0 and L1 (steps S2204 to S2207 of FIG. 41).
[0237] Increment index i by 1 (steps S2202 and S2208 of FIG. 41), When the index i is less than or equal to the smaller value of 4 and NumHmvpCand, step S22 is performed again. Perform the processing after step 03 (steps S2202 to S2208 in FIG. 41).
[0238] In the present embodiment, as described above, in the historical prediction motion vector candidate derivation process , without comparing the motion vectors of the elements of the historical prediction motion vector candidate list with the motion vectors of the elements of the prediction motion vector candidate list , the motion vectors of the elements of the historical prediction motion vector candidate list are added to the prediction motion vector candidate list.
[0239] By adopting such a configuration, if the number of historical prediction motion vector candidates is 2 or more, after the historical prediction motion vector candidate list candidate derivation process is completed, it can be guaranteed that the prediction motion vector candidate list reaches the maximum number of elements. In addition, the processing amount and circuit scale for checking whether the motion vectors are the same can be reduced.
[0240] The normal prediction motion vector mode is a mode in which the motion information of the processing target block is determined by the prediction motion vector candidates and the difference vector included in the prediction motion vector candidate list. Since there is room to determine an appropriate motion vector by the difference vector, even when the elements of the prediction motion vector candidate list overlap, the reduction in coding efficiency due to the decrease in options can be minimized. In addition, the normal prediction motion vector mode processes the prediction motion vector candidate list separately for L0 prediction and L1 prediction. Therefore, even when the elements overlap in the prediction motion vector candidate list of L0 prediction, the elements do not overlap in the prediction motion vector candidate list of L1 prediction.
[0241] Also, the normal prediction motion vector mode processes the prediction motion vector candidate list separately for L0 prediction and L1 prediction. Therefore, even when the elements overlap in the prediction motion vector candidate list of L0 prediction, the elements do not overlap in the prediction motion vector candidate list of L1 prediction. Even when the elements overlap in the prediction motion vector candidate list of L0 prediction, the elements do not overlap in the prediction motion vector candidate list of L1 prediction. There is also a combination.
[0242] In addition, in the normal prediction motion vector mode, the prediction motion vector candidates and the reference index are processed separately. Therefore, even if there are overlapping elements in the prediction motion vector candidate list, it does not affect the reference index.
[0243] In addition, since the prediction motion vector candidate list contains at most two elements, even if there are overlapping elements in the prediction motion vector candidate list, the number of options that decrease is only 1.
[0244] In addition, since the history prediction motion vector candidate list does not contain the same elements, the comparison between the elements of the history prediction motion vector candidate list and the elements of the prediction motion vector candidate list is substantially meaningful only when only one element is generated in the prediction motion vector candidate list by the spatial prediction motion vector candidate derivation unit 421 and the temporal prediction motion vector candidate derivation unit 422. Therefore, the frequency is extremely low. In addition, generally, the normal prediction motion vector mode is selected when the motion with adjacent blocks is not similar, and the elements of the history prediction motion vector candidate list are unlikely to overlap with the elements already added to the prediction motion vector candidate list.
[0245] For the above reasons, even when there are overlapping elements in the prediction motion vector candidate list, while suppressing the decrease in coding efficiency due to the reduction of options, the comparison process between the motion vector of the history prediction motion vector candidate and the motion vector of the prediction motion vector candidate can be reduced.
[0246] Also, fill the history prediction motion vector candidate list with non-duplicate history prediction motion vector candidates and, without comparing the elements of the history prediction motion vector candidate list with the elements of the prediction motion vector candidate list add the elements of the history prediction motion vector candidate list to the prediction motion vector candidate list, thereby omitting the processing of the prediction motion vector supplementing unit 325 after the history prediction motion vector candidate deriving unit 323 in the normal prediction motion vector mode deriving unit 301 can be done.
[0247] <History merge candidate derivation process> Next, a detailed explanation will be given of the method for deriving history merge candidates from the history prediction motion vector candidate list HmvpCandList, which is the processing procedure of step S304 in FIG. 20 and is a common process in the history merge candidate deriving unit 345 of the normal merge mode deriving unit 302 on the encoding side and the history merge candidate deriving unit 423 of the normal merge mode deriving unit 401 on the decoding side. FIG. 42 is a flowchart for explaining the history merge candidate derivation processing procedure. First, perform initialization processing (step S2301 in FIG. 42). Set the value of FALSE for each element from 0 to (numCu rrMergeCand - 1) of isPruned[i], and set the number numCurrMergeCand of elements registered in the current merge candidate list to the variable numOrigMergeCand.
[0248]
[0249] Subsequently, add elements that are not included in the merge candidate list among the elements of the history prediction motion vector candidate list to the merge candidate list. At this time, check in descending order from the end of the history prediction motion vector candidate list and add them one by one. Set the initial value of the index hMvpIdx to 1, and at this first From the future value to NumHmvpCand - 1, repeat the additional processing from step S2303 to step S2328 in FIG. 42 (steps S2302 to S2329 in FIG. 42). If the number numCurrMergeCand of elements registered in the current merge candidate list is not less than (the maximum number of merge candidates MaxNumMergeCand - 1), since merge candidates have been added to all elements of the merge candidate list, end this historical merge candidate derivation process (NO in step S2303 of FIG. 42). If the number numCurrMergeCand of elements registered in the current merge candidate list is less than (the maximum number of merge candidates MaxNumM ergeCand - 1), perform the processing after step S2304. Set FALSE (false) to sameMotion (step S2304 in FIG. 42). Subsequently, set the initial value of index i to 0 and perform the processing of steps S2306 and S23 07 from this initial value to numOrigMergeCand - 1 (S2305 to S2308 in FIG. 42). Compare whether the (NumHmvpCand - hMvpIdx)-th element HmvpCandList[NumHmvpCand - hMvpI dx] of the historical motion vector prediction candidate list, counted from 0, is the same as the i-th element mergeCandList[i] of the merge candidate list, counted from 0 (step S2306 in FIG. 42). The same value of the merge candidate means that all constituent elements (inter prediction mode, reference index, motion vector) of the merge candidate have the same value in which case the merge candidate is considered to have the same value. If they have the same value (YES in step S2306 of FIG. 39) , set both sameMotion and isPruned[i] to TRUE (true) (step S230 7 in FIG. 42). If they do not have the same value (NO in step S2306 of FIG. 39), step S2307 is executed. Skip the process. When the iterative process from step S2305 to step S2308 in FIG. 42 is completed compare whether sameMotion is FALSE (false) (step S2 in FIG. 42 309). If sameMotion is FALSE (false) (YES in step S2309 of FIG. 42), that is, the (NumHmvpCand - hMvpIdx)-th element HmvpCandList[NumHmvpCand - hMvpIdx] counted from 0 in the history prediction motion vector candidate list does not exist in the merge candidate list. So, add the (NumHmvpCand - hMvpIdx)-th element HmvpCandList[NumHmvpCand - hMvpIdx] counted from 0 in the history prediction motion vector candidate list to the numCurrMergeCand-th mergeCandList[numCurrMergeCand] of the merge candidate list and increment numCurrMergeCand by 1 (step S2310 in FIG. 42). Increment the index hMvpIdx by 1 (step S 2302 in FIG. 42) and perform the iterative process from step S2302 to S2311 in FIG. 42. mHmvpCand - hMvpIdx] and increment numCurrMergeCand by 1 (step S2310 in FIG. 42). Increment the index hMvpIdx by 1 (step S 2302 in FIG. 42) and perform the iterative process from step S2302 to S2311 in FIG. 42. 2302) and perform the iterative process from step S2302 to S2311 in FIG. 42.
[0250] When the confirmation of all elements in the history prediction motion vector candidate list is completed or when merge candidates are added to all elements of the merge candidate list, complete the derivation process of the present history merge candidate . In the present embodiment, as described above, in the history merge candidate derivation process, compare the elements in the history prediction motion vector candidate list with the elements in the current merge candidate list, and only add the elements in the history prediction motion vector candidate list that do not exist in the current merge candidate list to the merge candidate list . In general, the merge mode, unlike the normal predictive motion vector mode, directly determines the motion information of the block to be processed without using a differential vector. Therefore, by prohibiting the addition of elements in the history merge candidate list that overlap with the elements in the current merge candidate list, the coding efficiency can be improved. Here, although all candidates in the history predictive motion vector candidate list are compared with all candidates in the current merge candidate list, it is not limited to this as long as the coding efficiency can be improved by comparing at least the elements in the history predictive motion vector candidate list with the elements in the current merge candidate list. For example, the number of elements in the history predictive motion vector candidate list to be compared may be limited to 1, 2, etc. Also, the number of elements in the current merge candidate list to be compared may be limited to 1 or 2. In the normal merge mode, both the motion vector of L0 prediction and the motion vector of L1 prediction are included in the merge candidate list. Therefore, like in the normal predictive motion vector mode, the predictive motion vector of L0 prediction and the predictive motion vector of L1 prediction cannot be adjusted separately. Also, in the normal merge mode, both the reference index of L0 prediction and the reference index of L1 prediction are included in the merge candidate list. Therefore, like in the normal predictive motion vector mode, the reference index of L0 prediction and the reference index of L1 prediction cannot be adjusted separately. In addition, since the merge candidate list contains at most 6 elements, which is more than the predictive motion vector candidate list, if duplicate elements are added to the merge candidate list, the number of duplicate elements in the merge candidate list increases and the merge candidate list cannot be used efficiently. Moreover, the elements of the history predictive motion vector candidate list added to the merge candidate list are the history predictive motion vector candidates. For example, restricting the number of elements in the history predictive motion vector candidate list to be compared to 1, 2, etc. is also acceptable. Also, restricting the number of elements in the current merge candidate list to be compared to 1 or 2 is also acceptable. In the normal merge mode, both the motion vector of L0 prediction and the motion vector of L1 prediction are included in the merge candidate list. So, like in the normal predictive motion vector mode, the predictive motion vector of L0 prediction and the predictive motion vector of L1 prediction cannot be adjusted separately. That is, unlike the normal predictive motion vector mode, the predictive motion vectors of L0 prediction and L1 prediction cannot be adjusted separately. Moreover, in the normal merge mode, both the reference index of L0 prediction and the reference index of L1 prediction are included in the merge candidate list. Therefore, like in the normal predictive motion vector mode, the reference index of L0 prediction and the reference index of L1 prediction cannot be adjusted separately. That is, unlike the normal predictive motion vector mode, the reference indices of L0 prediction and L1 prediction cannot be adjusted separately. In addition, since the merge candidate list contains at most 6 elements, which is more than the predictive motion vector candidate list, if duplicate elements are added to the merge candidate list, the number of duplicate elements in the merge candidate list increases and the merge candidate list cannot be used efficiently. That is, when duplicate elements are added to the merge candidate list, the number of duplicate elements in the merge candidate list increases, making it impossible to use the merge candidate list efficiently. Also, the elements of the history predictive motion vector candidate list added to the merge candidate list are the history predictive motion vector candidates. That is, the elements of the history predictive motion vector candidate list added to the merge candidate list are the history predictive motion vector candidates. In addition, since the merge candidate list contains a maximum of 6 elements, which is more than the predictive motion vector candidate list, if duplicate elements are added to the merge candidate list, the number of duplicate elements in the merge candidate list increases, and the merge candidate list cannot be used efficiently. That is, when duplicate elements are added to the merge candidate list, the number of duplicate elements in the merge candidate list increases, making it impossible to use the merge candidate list efficiently. Also, the elements of the history predictive motion vector candidate list added to the merge candidate list are the history predictive motion vector candidates. Also, the elements of the history predictive motion vector candidate list added to the merge candidate list are the history predictive motion vector candidates. It is the element that was most recently added among the elements of the motion vector candidate list. Therefore, the element of the history prediction motion vector candidate list added to the merge candidate list is the motion information that is spatially closest to the encoding block to be processed. Generally, the normal merge mode is selected when the motion with adjacent blocks is similar, and the elements of the history prediction motion vector candidate list are likely to overlap with the elements that have already been added to the merge candidate list. . To address the above issues, by prohibiting the addition of elements of the history prediction motion vector candidate list that overlap with the elements of the merge candidate list and increasing the effective selection elements, the encoding efficiency can be improved.
[0251] Also, by making the maximum number of elements that can be included in the merge candidate list, which is 6, larger than the maximum number of elements that can be included in the prediction motion vector candidate list, which is 2, the selection probability of the normal merge mode is increased, and while suppressing the decrease in encoding efficiency due to the overlap of elements in the prediction motion vector candidate list, the comparison process of the motion vectors of the history prediction motion vector candidates and the prediction motion vector candidates can be reduced. Also, in addition to the spatial merge candidates, by including various merge candidates such as temporal merge candidates, history merge candidates, average merge candidates, and zero merge candidates, the selection probability of the normal merge mode is increased, and while suppressing the decrease in encoding efficiency due to the overlap of elements in the prediction motion vector candidate list, the comparison process of the motion vectors of the history prediction motion vector candidates and the prediction motion vector candidates can be reduced.
[0252] <Sub-block temporal merge candidate derivation> Sub-block time merge candidates in sub-block merge mode derivation unit 304 of FIG. 16 The operation of derivation unit 381 will be described with reference to FIG. 44.
[0253] First, it is determined whether the coded block is less than 8x8 pixels (S4002).
[0254] If the coded block is less than 8x8 pixels (S4002: Yes), the flag availableFlagSbCol indicating the existence of sub-block time merge candidates is set to 0 (S4003), and the processing of the sub-block time merge candidate derivation unit is terminated. Here, if temporal motion vector prediction is prohibited by syntax, or if sub-block time merge is prohibited, the same processing as when the coded block is less than 8x8 pixels (S4002: Yes) is performed.
[0255] On the other hand, if the coded block is 8x8 pixels or more (S4002: No), the adjacent motion information of the coded block in the coded picture is derived (S4004).
[0256] The process of deriving the adjacent motion information will be described with reference to FIG. 45. The process of deriving the adjacent motion information is similar to the process of the spatial prediction motion vector candidate derivation unit 321 described above. However, the order of searching for adjacent blocks is A0, B0, B1, A1, and B2 is not searched. First, with the adjacent block n = A0, the coding information is acquired (S4052). The coding information indicates the flag availableFlagN indicating whether the adjacent block can be used, the reference index refIdxLXN for each reference list, and the motion vector mvLXN.
[0257] Next, it is determined whether the adjacent block n is valid or invalid (S4054). If the flag indicating whether or not the request can be made is "availableFlagN=1", the request is valid; otherwise, the request is invalid.
[0258] If adjacent block n is valid (S4054: Yes), the reference index refIdxLXN is The reference index of the adjacent block n is refIdxLXn (S4056). LXN is set as the motion vector mvLXn of the adjacent block n (S4056), The process of deriving information is completed.
[0259] On the other hand, if the adjacent block n is invalid (S4106: No), the adjacent block n is set as B0 and the code is The encryption information is obtained (S4104). The same process is repeated thereafter, looping through B1 and A1 in that order. The process of deriving neighboring motion information loops until the neighboring blocks are valid, and all neighbors are If the adjacent blocks A0, B0, B1, and A1 are invalid, the process of deriving adjacent motion information of the blocks is terminated. do.
[0260] Referring again to FIG. 44, after the adjacent motion information is derived (S4004), the temporal motion A vector is derived (S4006).
[0261] The process of deriving a temporal motion vector will be described with reference to FIG. The temporal motion vector tempMv is initialized as (0,0) (S4062).
[0262] Next, it is determined whether the adjacent motion information is valid or invalid (S4064). If the flag indicating whether the neighboring motion is available or not is set to availableFlagN=1, it is valid, otherwise it is invalid. If the information is invalid (S4064: No), the process of deriving the temporal motion vector is terminated. do.
[0263] On the other hand, if the adjacent motion information is valid (S4064: Yes), L1 prediction is performed on the adjacent block N. It is determined whether the flag predFlagL1N indicating whether or not the p is being used is 1 (S4066). If redFlagL1N=0 (S4066: No), proceed to the next process (S4078). If (S4066: Yes), the P of all pictures registered in all reference lists It is determined whether the OC is equal to or smaller than the POC of the current picture to be coded (S4068). If the determination is true (S4068: Yes), the process proceeds to the next step (S4070).
[0264] If the slice type slice_type is a B slice and the flag collocated_from_l0_flag is 0, If (S4070: Yes and S4072: Yes), ColPic and reference picture RefPicList1[refIdx L1N] (pictures with reference index refIdxL1N in reference list L1) are the same. If this determination is true (S4074: Yes), the temporal motion vector t Let empMv=mvL1N (S4076). If this determination is false (S4074: No), the next process (S4 078). The slice type slice_type is not a B slice and the flag collocated_fro If m_l0_flag is not 0 (S4070: No, or S4072: No), the next process (S40 Continue with 78).
[0265] A flag predFlagL0N indicating whether L0 prediction is used in the adjacent block N Determine whether it is 1 (S4078). If predFlagL0N = 1 (S4078: Yes), ColPi Determine whether c is the same as the reference picture RefPicList0[refIdxL0N] (reference index refIdxL0N of reference list L0 of the picture) (S4080). If this determination is true (S4080 : Yes), set the temporal motion vector tempMv = mvL0N (S4082). If this determination is false (S4080: No), end the process of deriving the temporal motion vector.
[0266] Refer to Figure 44 again. Next, derive ColPic (S4016). This process is the same as S4201 in the temporal prediction motion vector candidate derivation unit 322, so the description is omitted here.
[0267] Then, set the encoded block colCb at different times (S4017). This is to set the encoded block located at the lower right center at the same position as the encoded block to be processed within the pictures ColPic at different times as colCb. This encoded block corresponds to the encoded block T1 in Figure 49.
[0268] Next, set the position obtained by adding the temporal motion vector tempMv to the encoded block colCb as the new colCb (S4018). Let the upper left position of the encoded block colCb be (xColCb, yColCb), and set the temporal motion vector tempMv as (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy. Then, the upper left position of the new 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 upper left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbS izeY. As shown in the above formula, the position after adding tempMv is corrected to within the range of the size of the tree block so that it does not become larger than before adding tempMv. If this position is outside the screen , it is corrected to be within the screen.
[0269] Then, it is determined whether the prediction mode PredMode of this encoded block colCb is inter prediction (MODE_INTER ). If the prediction mode of colCb is not inter prediction (S 4020:No), the flag availableFlagSbCol indicating the existence of sub-block temporal merge candidates is set to 0 (S4003), and the processing of the sub-block temporal merge candidate derivation unit is terminated.
[0270] On the other hand, when the prediction mode of colCb is inter prediction (S4020:Yes), inter prediction information is derived for each reference list (S4022, S4023). Here, for colCb, the central motion vector ctrMvLX for each reference list and the flag ctrPredFlagLX indicating whether LX prediction is used are derived. LX indicates the reference list. In the derivation of reference list 0, LX becomes L0 , and in the derivation of reference list 1, LX becomes L1. The derivation of inter prediction information will be described with reference to FIG. 47 .
[0271] If encoded blocks colCb at different times are not available (S4112:NO), or if the prediction When the prediction mode PredMode is intra prediction (MODE_INTRA) (S4114: NO), the flags ava ilableFlagLXCol and predFlagLXCol are both set to 0 (step S4116), and the motion vector tor mvCol is set to (0, 0) (S4118), and the process of deriving the inter prediction information ends. .
[0272] If the coded block colCb is available (S4112: Yes) and the prediction mode PredMode is not intra prediction (MODE_INTRA) (S4114: YES), mvCol, refIdxCol and availableFlagCol are calculated in the following procedure.
[0273] If the flag PredFlagLX[xP Col][yPCol] indicating whether the LX prediction of the coded block colCb is used is 1 (YES in S4120), the motion vector mvCol is set to the same value as the motion vector MvLX[xPCol][yPCol] of the LX of the coded block col Cb (S4122), the reference index refIdxCol is set to the same value as the reference index RefIdxLX[xPCol][yPCol] of LX (S4124), and the list listCol is set to LX (S4126). Here , xPCol and yPCol are indexes indicating the positions of the top - left pixels of the coded block colCb in different - time pictures colPic.
[0274] On the other hand, if the flag PredFla gLX[xPCol][yPCol] indicating whether the LX prediction of the coded block colCb is used is 0 (NO in S4120), the following processing is performed. First, all The POC of all pictures registered in the reference list is the same as that of the current picture to be coded. It is judged whether it is below POC or not (S4128). And, LY prediction of colCb is used. It is determined whether the flag PredFlagLY[xPCol][yPCol] indicating whether the poling address is 1 or not (S4128). Here, we define LY prediction as a reference list different from LX prediction. That is, when LX=L0, LY=L1, When LX=L1, LY=L0.
[0275] If this determination is true (S4128: Yes), the motion vector mvCol is The motion vector MvLY[xPCol][yPCol] of the reference LY is set to the same value (S4130). The reference index refIdxCol is set to the same value as the reference index RefIdxLY[xPCol][yPCol] of LY. The list listCol is set to LX (S4132), and the list listCol is set to LX (S4134).
[0276] On the other hand, if this determination is false (S4128: No), the flag availableFlagLXCol and the flag pr edFlagLXCol are both set to 0 (step S4116), and the motion vector mvCol is set to (0,0). Then, the process of deriving the inter prediction information is completed (S4118).
[0277] When inter prediction information is obtained from the coding block colCb, the flag availableFlagLXCo Both l and flag predFlagLXCol are set to 1 (S4136).
[0278] Next, the motion vector mvCol is scaled to obtain a motion vector mvLXCol (S41 38). This process is the same as S4245 in the temporal motion vector predictor candidate derivation unit 322. Therefore, the description will be omitted.
[0279] Refer again to FIG. 44. After deriving the inter prediction information for each reference list, The calculated motion vector mvLXCol is the center motion vector ctrMvLX, and the calculated flag predFlagLXCol is The flag is set to ctrPredFlagLX (S4022, S4023).
[0280] Then, it is determined whether the central motion vector is valid or invalid (S4024). If 0 and ctrPredFlagL1=0, it is invalid. Otherwise, it is invalid. If the sub-block time merge candidate is available (S4024: No), the flag "available" is set to indicate the existence of the sub-block time merge candidate. Set FlagSbCol=0 (S4003) to end the processing of the sub-block time merge candidate derivation part. Complete.
[0281] On the other hand, if the central motion vector is valid (S4024: Yes), the sub-block temporal merge candidate The flag indicating the presence of a complement is set to availableFlagSbCol=1 (S4025), and the sub-block operation is started. This process will be described with reference to FIG.
[0282] First, the number of sub-blocks in the width direction is calculated from the width cbWidth and height cBheight of the coding block colCb. numSbX and the number of sub-blocks in the height direction numSbY are calculated (S4152). LXSbCol=0 (S4152). After this process, the process is repeated in units of the prediction sub-block colSb. This iteration repeats the process of changing the height index ySbIdx from 0 to numSbY. Processing is performed while changing the width direction index xSbIdx from 0 to numSbX.
[0283] Assuming that the upper left position of the symbolized block colCb is (xCb, yCb), the upper left position (xSb, ySb) of the predicted sub-block colSb is calculated as follows. The upper left 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 predicted sub-block colSb is defined as the new colSb (S4154). Assuming that the upper left position of the predicted sub-block colSb is (xColSb, yColSb) and the temporal motion vector tempMv is (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy, the upper left position of the new colSb is as follows. The upper left position of the predicted sub-block colSb is (xColSb, yColSb), and when the temporal motion vector tempMv is (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy, the upper left position of the new colSb is as follows. The upper left position of the predicted sub-block colSb is (xColSb, yColSb), and when the temporal motion vector tempMv is (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy, the upper left position of the new colSb is as follows. The upper left position of the new 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 upper left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbSizeY. As shown in the above formula, the position after adding tempMv is corrected to within the range of the size of the tree block so that it does not become larger than before adding tempMv. If this position is outside the screen, it is corrected to be within the screen. The position after adding tempMv is corrected to within the range of the size of the tree block so that it does not become larger than before adding tempMv. If this position is outside the screen, it is corrected to be within the screen. The position after adding tempMv is corrected to within the range of the size of the tree block so that it does not become larger than before adding tempMv. If this position is outside the screen, it is corrected to be within the screen. If this position is outside the screen, it is corrected to be within the screen.
[0284] Then, inter-prediction information is derived for each reference list (S4156, S4158). Here, for the predicted sub-block colSb, the motion for each reference list is obtained in sub-block units. The vector mvLXSbCol and the flag availableFlagLXSbCo indicating whether the prediction sub-block is valid are derived. LX indicates the reference list. In the derivation of reference list 0, LX becomes L0, and in the derivation of reference list 1, LX becomes L1. Since the derivation of the inter-prediction information is the same as S4022 and S4023 in FIG. 47, the description is omitted. After deriving the inter-prediction information (S4156, S4158), it is determined whether the prediction sub-block colSb is valid (S4160). If availableFlagL0SbCol = 0 and availableFlagL1SbCol = 0, then colSb is determined to be invalid; otherwise, it is determined to be valid. If colSb is invalid (S4160: No), the motion vector mvLXSbCol is set to the central motion vector ctrMvLX (S4162). Further, the flag predFlagLXSbCol indicating whether LX prediction is used is set to the flag ctrPredFlagLX in the central motion vector (S4162). Thus, the derivation of the sub-block motion information is completed. Again, referring to FIG. 44. Then, the motion vector mvL0SbCol of L0 and the motion vector mvL1SbCol of L1 are added as candidates to the sub-block merge candidate list subblockMergeCandList in the sub-block merge mode derivation unit 304 described above (S4028). However, this addition is only performed when the flag availableSbCol indicating the existence of the sub-block temporal merge candidate is 1. Thus, the processing of the temporal merge candidate derivation unit 342 is completed.
[0285]
[0286]
[0287] The description of the sub-block time merge candidate derivation unit 381 described above is for the encoding process, but the same applies to the decoding process. That is, in the sub-block merge mode derivation unit 404 of FIG. 22, the operation of the sub-block time merge candidate derivation unit 481 is described in the same way by replacing "encoding" in the above description with "decoding".
[0288] <Motion Compensation Prediction Processing> The motion compensation prediction unit 306 acquires the position and size of the block that is currently the target of the prediction process in the encoding. Also, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. The reference index and motion vector are derived from the acquired inter prediction information, and the reference picture specified by the reference index in the decoded image memory is moved from the same position as the image signal of the prediction block by the amount of the motion vector, and then the prediction signal is generated after acquiring the image signal at the moved position.
[0289] In the case of prediction from a single reference picture, such as L0 prediction or L1 prediction, as the reference mode in inter prediction, the prediction signal obtained from one reference picture is used as the motion compensation prediction signal. In the case of prediction from two reference pictures, such as BI prediction, as the reference mode, the prediction signal obtained from two reference pictures is weighted and averaged to obtain the motion compensation prediction signal, and the motion compensation prediction signal is supplied to the prediction method determination unit. Here, the weighting average ratio for dual prediction is set to 1:1, but other ratios may be used for the weighting average. For example, the weighting ratio may be increased for those with a closer picture interval between the picture to be predicted and the reference picture. Also, the calculation of the weighting ratio may be based on the combination of picture intervals, It may be performed using a correspondence table with the weighting ratio.
[0290] The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. Motion The compensation prediction unit 406 obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, the normal merge mode derivation unit 402, the sub-block prediction motion vector mode derivation unit 403, and the s ub-block merge mode derivation unit 404 via the switch 408.
[0291] The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207. Supply.
[0292] <Regarding the prediction direction> Figures 57 to 61 are diagrams for explaining the prediction direction of motion compensation prediction. A single reference The process of performing prediction from a picture is defined as single prediction. In the case of single prediction, either L0 prediction or L1 prediction is performed using one of the two reference pictures registered in the reference list. Perform prediction.
[0293] Figure 57 shows the case where the reference picture (RefL0Pic) of L0 in single prediction is at a time earlier than the picture to be encoded The picture (CurPic). Figure 58 shows the case where the reference picture of L0 in single prediction is at a time later than the picture to be encoded. Similarly Single prediction can also be performed by replacing the reference picture of L0 prediction in Figures 57 and 58 with the reference picture of L1 prediction (RefL1 Pic). Pic).
[0294] The process of performing prediction from two reference pictures is defined as double prediction. In the case of double prediction, both L0 prediction and L1 prediction are used and expressed as BI prediction. Figure 59 shows double prediction where the reference of L0 prediction The reference picture for L1 prediction is before the current picture and the reference picture for L2 prediction is not coded. FIG. 60 shows a case where the L0 prediction is performed after the current picture. When the reference picture for L1 prediction and the reference picture for L2 prediction are located at a time earlier than the picture to be coded, FIG. 61 shows a bi-prediction example in which a reference picture for L0 prediction and a reference picture for L1 prediction are used. In this way, the L0 / L1 picture is at a later time than the picture to be coded. The relationship between the prediction type and time is not limited to L0 being the past direction and L1 being the future direction. In the case of bi-prediction, it is possible to perform L0 prediction and L1 prediction using the same reference picture. In addition, the judgment of whether to perform the motion compensation prediction in a uni-predictive manner or in a bi-predictive manner may be performed. The decision may include, for example, information indicating whether or not L0 prediction is used and whether or not L1 prediction is used (e.g., For example, the decision is based on the flag.
[0295] <About reference indexes> In the embodiment of the present invention, in order to improve the accuracy of the motion compensation prediction, This makes it possible to select the most suitable reference picture from among a number of reference pictures. The reference picture used in the motion compensation prediction is used as a reference index, and The index is encoded into the encoded stream along with the encoded vector.
[0296] <Motion compensation process based on normal predicted motion vector mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. As described above, in the inter prediction mode determination unit 305, the normal prediction motion vector mode derivation unit 3 When the inter prediction information according to 01 is selected, this inter prediction information is treated as inter prediction. Obtained from the measurement mode determination unit 305, the reference mode, reference index, and motion vector of the block currently being processed 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. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207.
[0297] Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal prediction motion vector mode derivation unit 401 during the decoding process, obtains the inter prediction information from the normal prediction motion vector mode derivation unit 401, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207.
[0298] <Motion Compensation Processing Based on Normal Merge Mode> The motion compensation unit 306, as shown in the inter prediction unit 102 on the encoding side of FIG. 16, when the inter prediction information from the normal merge mode derivation unit 302 is selected in the inter prediction mode determination unit 305, obtains this inter prediction information from the inter prediction mode determination unit 305, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207.
[0299] Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Similarly, the motion compensation unit 406, as shown in the inter prediction unit 203 on the decoding side of FIG. 22, when the switch 408 is connected to the normal merge mode derivation unit 402 during the decoding process, obtains the inter prediction information from the normal merge mode derivation unit 402, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. Derive the reference mode, reference index, and motion vector of the block that has become an elephant, and perform motion compensation prediction signal generation. The generated motion compensation prediction signal is sent to the decoded image signal superposition unit 207 for supply.
[0300] <Motion Compensation Processing Based on Sub-Block Prediction Motion Vector Mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side of FIG. 16, In the inter prediction mode determination unit 305, when the inter prediction information by the sub-block prediction motion vector mode derivation unit 303 is selected, this inter prediction information is obtained from the inter prediction mode determination unit 305, and the reference mode, reference index, and motion vector of the block currently being processed 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. Similarly, the motion compensation unit 406 is also shown in the inter prediction unit 203 on the decoding side of FIG. 22.
[0301] When the switch 408 is connected to the sub-block prediction motion vector mode derivation unit 403 during the decoding process, the motion compensation unit 406 obtains the inter prediction information by the sub-block prediction motion vector mode derivation unit 403, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207.
[0302] <Motion Compensation Processing Based on Sub-Block Merge Mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side of FIG. 16, In the inter prediction mode determination unit 305, when the sub-block merge mode derivation unit 30 When the inter prediction information according to 4 is selected, this inter prediction information is obtained from the inter prediction mode determination unit 305, and the reference mode, reference index, and motion vector of the block currently being processed 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.
[0303] Similarly, when the switch 408 is connected to the sub-block merge mode derivation unit 404 in the decoding process as shown in the inter prediction unit 203 on the decoding side of FIG. 22, the motion compensation unit 406 obtains the inter prediction information from the sub-block merge mode derivation unit 404, and derives the reference mode, reference index, and motion vector of the block currently being processed, and generates a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207. <Motion Compensation Processing Based on Affine Transformation Prediction> In the normal prediction motion vector mode and the normal merge mode, motion compensation using an affine model can be performed based on the following flags. The following flags are reflected in the following flags
[0304] based on the conditions of inter prediction determined by the inter prediction mode determination unit 305 in the encoding process, and are encoded in the encoded stream. In the decoding process, it is determined whether to perform motion compensation using an affine model based on the following flags in the encoded stream . The sps_affine_enabled_flag indicates whether motion compensation using an affine model can be used in inter prediction. If the sps_affine_enabled_flag is 0, at the sequence level
[0305] It is suppressed so as not to perform motion compensation using an affine model. Also, inter_affine_flag and cu_affine_type_flag are not transmitted in the CU syntax of the encoded video sequence If sps_affine_enabled_flag is 1, motion compensation using an affine model can be used in the encoded video sequence sequence.
[0306] sps_affine_type_flag indicates whether motion compensation using a six-parameter affine model can be used in inter prediction If sps_affine_type_flag is 0, motion compensation using a six-parameter affine model is suppressed so that it cannot be used. Also, cu_affine_type_flag is not transmitted in the CU syntax of the encoded video sequence. If sps_affine_type_flag is 1, motion compensation using a six-parameter affine model can be used in the encoded video sequence
[0307] If sps_affine_type_flag does not exist, it is assumed to be 0 When decoding a P or B slice, if inter_affine_flag is 1 in the currently processed CU, motion compensation using an affine model is used to generate the motion compensation prediction signal for the currently processed CU If inter_affine_flag is 0, the affine model is not used for the currently processed CU sequence.
[0308] If sps_affine_type_flag does not exist, it is assumed to be 0
[0309] When decoding a P or B slice, if inter_affine_flag is 1 in the currently processed CU, motion compensation using an affine model is used to generate the motion compensation prediction signal for the currently processed CU If inter_affine_flag is 0, the affine model is not used for the currently processed CU If inter_affine_flag is 0, the affine model is not used for the currently processed CU
[0310] If inter_affine_flag is 0, the affine model is not used for the currently processed CU If inter_affine_flag is 0, the affine model is not used for the currently processed CU
[0311] If the inter_affine_flag does not exist, it shall be 0.
[0312] When decoding a P or B slice, in the CU currently being processed, cu_a If the ffine_type_flag is 1, for generating the motion compensation prediction signal of the CU currently being processed, motion compensation using a 6-parameter affine model is used.
[0313] If the cu_affine_type_flag is 0, for generating the motion compensation prediction signal of the CU currently being processed, motion compensation using a 4-parameter affine model is used.
[0314] In motion compensation using an affine model, since the reference index and motion vector are derived in sub-block units, a motion compensation prediction signal is generated using the reference index and motion vector that are the processing targets in sub-block units.
[0315] <Modification Example 1> Modification Example 1 of the present embodiment will be described. This modification example is different from the present embodiment in that the merge differential motion vector mode is added, and only the differences from the present embodiment will be described. If the umve_flag in Fig. 12 is 1, it becomes the merge differential motion vector mode, and if the umve_flag is 0, it becomes the normal merge mode.
[0316] Subsequently, the operation of the merge differential motion vector mode will be described. For each of the motion vectors of the L0 prediction and the motion vectors of the L1 prediction of any one of the top 2 (the merge candidates with merge indices 0 and 1 in the merge candidate list) of the merge candidates, It is a mode in which one merged differential motion vector can be added.
[0317] In the case of the merged differential motion vector mode, the merged differential motion vector is a bit string encoded by the encoding unit 108 and decoded by the bit string decoding unit 201.
[0318] As described above, since the merge candidate list is also used in the merged differential motion vector mode , adding elements of the history predicted motion vector candidate list that overlap with the elements of the merge candidate list is prohibited to increase effective selection elements, thereby improving the encoding efficiency. .
[0319] Also, by adding the merged differential motion vector mode and reducing the selection probability of the normal predicted motion vector mode , while suppressing the decrease in encoding efficiency due to the overlap of elements in the predicted motion vector candidate list , the comparison process of the motion vector of the history predicted motion vector candidate and the motion vector of the predicted motion vector candidate can be reduced. <Modification Example 2> A second modification of the present embodiment will be described. This modification differs from the present embodiment in the operations of the history predicted motion vector candidate derivation units 323 and 423 shown in FIG. 41, and only the differences from the present embodiment will be described. FIG. 65 is a flowchart for explaining the history predicted motion vector candidate derivation processing procedure of the second modification. FIG. 65 differs from FIG. 41 in that step S2209 is added. FIG. 65 has the same operations as FIG. 41 except for step S2209. The operations of the history predicted motion vector candidate derivation units 323 and 423 shown in FIG. 41 are different, and only the differences from the present embodiment will be described. FIG. 65 is a flowchart for explaining the history predicted motion vector candidate derivation processing procedure of the second modification. FIG. 65 differs from FIG. 41 in that step S2209 is added. FIG. 65 has the same operations as FIG. 41 except for step S2209. FIG. 65 is a flowchart for explaining the history predicted motion vector candidate derivation processing procedure of the second modification. FIG. 65 differs from FIG. 41 in that step S2209 is added. FIG. 65 has the same operations as FIG. 41 except for step S2209. The case where numCurrMvpCand is smaller than 2, which is the maximum number of elements in the predicted motion vector candidate list (YES in step S2205 of FIG. 65), will be described. The case where numCurrMvpCand is smaller than 2, which is the maximum number of elements in the predicted motion vector candidate list (YES in step S2205 of FIG. 65), will be described.
[0320] When numCurrMvpCand is smaller than 2, which is the maximum number of elements in the predicted motion vector candidate list (YES in step S2205 of FIG. 65), the process will be described. The case where numCurrMvpCand is smaller than 2, which is the maximum number of elements in the predicted motion vector candidate list (YES in step S2205 of FIG. 65), will be described.
[0321] Check whether the reference index of LY of the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] and the reference index of LY of the encoding block to be processed is the same (step S2209 in FIG. 65 ), if the reference index of LY of the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] and the reference index of LY of the encoding block to be processed are the same (YES in step S2209 of FIG. 65), proceed to S2206. If the reference index of LY of the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] and the reference index of LY of the encoding block to be processed are not the same (NO in step S2209 of FIG. 65), proceed to S2207.
[0322] As described above, when the reference index of LY of the historical prediction motion vector candidate and the reference index of LY of the encoding block to be processed are the same, by adding the motion vector of the historical prediction motion vector candidate to the prediction motion vector candidate list for LY prediction, a highly accurate historical prediction motion vector candidate can be added to the prediction motion vector candidate list without comparing the motion vector of the historical prediction motion vector candidate with the motion vector of the prediction motion vector candidate.
[0323] In this embodiment, in the historical prediction motion vector candidate derivation process, without comparing the elements of the historical prediction motion vector candidate list with the elements of the prediction motion vector candidate list, the elements of the historical prediction motion vector candidate list are added to the prediction motion vector candidate list. On the other hand, in the historical merge candidate derivation process, the elements of the historical merge candidate list are compared with the elements of the merge list. Perform the comparison, and add only the history merge candidate lists that do not exist in the merge list to the merge list. By adopting the above configuration, the following effects can be obtained.
[0324] 1. In the history prediction motion vector candidate list candidate derivation process, there is no need to perform additional candidate derivation processing, which can reduce the processing amount and circuit scale. Moreover, even when the elements of the prediction motion vector candidate list unavoidably overlap, the reduction in the coding efficiency due to the decrease in options can be minimized.
[0325] 2. In the history merge candidate derivation process, by prohibiting the addition of elements of the history merge candidate list that overlap with the elements of the merge list, an appropriate merge candidate list can be constructed in the normal merge mode for determining the motion information of the processing target block without using the difference vector, and the coding efficiency can be improved.
[0326] 3. Filling the history prediction motion vector candidate list with non-overlapping history prediction motion vector candidates, and omitting the processing of the merge candidate supplement part 346 after the history merge candidate derivation part 345 in the normal merge mode derivation part 302, the processing amount can be reduced.
[0327] 4. Filling the history prediction motion vector candidate list with non-overlapping history prediction motion vector candidates, and adding the elements of the history prediction motion vector candidate list to the prediction motion vector candidate list without comparing the elements of the history prediction motion vector candidate list with the elements of the prediction motion vector candidate list, so that in the normal prediction motion vector mode derivation part 301, the history prediction The processing of the predicted motion vector supplementing unit 325 after the motion vector candidate derivation unit 323 can be omitted. This is possible.
[0328] All of the above-described embodiments may be combined in plural.
[0329] In all of the above-described embodiments, the encoded bit stream output by the image encoding apparatus is specified to have a data format that can be decoded according to the encoding method used in the embodiment. Further, an image decoding apparatus corresponding to this image encoding apparatus can decode the encoded bit stream of this specific data format. When a wired or wireless network is used to exchange the encoded bit stream between the image encoding apparatus and the image decoding apparatus, the encoded bit stream may be converted into a data format suitable for the transmission form of the communication path and transmitted. In that case, a transmission apparatus that converts the encoded bit stream output by the image encoding apparatus into encoded data in a data format suitable for the transmission form of the communication path and transmits it to the network, and a reception apparatus that receives the encoded data from the network, restores it to the encoded bit stream, and supplies it to the image decoding apparatus are provided.
[0330] When exchanging the encoded bit stream between the image encoding apparatus and the image decoding apparatus, when a wired or wireless network is used, the encoded bit stream may be converted into a data format suitable for the transmission form of the communication path and transmitted. In that case, the encoded bit stream output by the image encoding apparatus is converted into encoded data in a data format suitable for the transmission form of the communication path and transmitted to the network. A transmission apparatus and a reception apparatus are provided. The transmission apparatus includes a memory that buffers the encoded bit stream output by the image encoding apparatus, a packet processing unit that packetizes the encoded bit stream, and a transmission unit that transmits the packetized encoded data via the network. The reception apparatus includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a unit that packet-processes the encoded data to generate an encoded bit stream and supplies it to the image decoding apparatus.
[0331] The transmission apparatus includes a memory that buffers the encoded bit stream output by the image encoding apparatus, a packet processing unit that packetizes the encoded bit stream, and a transmission unit that transmits the packetized encoded data via the network. The reception apparatus includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a unit that packet-processes the encoded data to generate an encoded bit stream and supplies it to the image decoding apparatus. The reception apparatus includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a unit that packet-processes the encoded data to generate an encoded bit stream and supplies it to the image decoding apparatus. and includes a packet processing unit provided to the image decoding device.
[0332] Also, by adding a display unit for displaying the image decoded by the image decoding device to the configuration, it can also be used as a display device. In that case, the display unit reads out the decoded image signal generated by the decoded image signal superimposing unit 205 and stored in the decoded image memory 206 and displays it on the screen.
[0333] Also, by adding an imaging unit to the configuration and inputting the captured image into the image encoding device, it can also be used as an imaging device. In that case, the imaging unit inputs the captured image signal to the block dividing unit 101.
[0334] FIG. 66 shows an example of the hardware configuration of the encoding / decoding device of the present application. The encoding / decoding device includes the configurations of the image encoding device and the image decoding device according to the embodiments of the present invention. The related encoding / decoding device 9000 has a CPU 9001, a codec IC 9002, an I / O interface 9003, a memory 9004, an optical disk drive 9005, a network interface 9006, and a video interface 9009, and each unit is connected by a bus 9010.
[0335] The image encoding unit 9007 and the image decoding unit 9008 are typically implemented as the codec IC 9002. The image encoding process of the image encoding device according to the embodiments of the present invention is executed by the image encoding unit 9007, and the image decoding process in the image decoding device according to the embodiments of the present invention is executed by the image encoding unit 9007. The I / O interface 9003 is realized by, for example, a USB interface, and is connected to an external keyboard 9104, a mouse 9 105, etc. The CPU 9001 receives input via the I / O interface 9003. The encoding / decoding device 9 is controlled to execute an operation desired by the user based on the user's operation. 000. As a user's operation using the keyboard 9104, mouse 9105, etc. allows you to select whether to perform encoding or decoding functions, set the encoding quality, and There are input / output destinations for frames, and input / output destinations for images, etc.
[0336] When the user desires to play back the images recorded on the disk recording medium 9100 The optical disk drive 9005 reads the encoded video from the inserted disk recording medium 9100. The read encoded stream is then transmitted to the decoder 9010 via the bus 9010. The image decoding unit 9008 of the block IC 9002 receives the encoded image data and sends it to the image decoding unit 9008 of the block IC 9002. The image decoding process in the image decoding device according to the embodiment of the present invention is performed on the data stream. The decoded image is then displayed on an external monitor 9103 via a video interface 9009. The encoding / decoding device 9000 also includes a network interface 9006. 9101, the system is connected to an external distribution server 9106 and a mobile terminal 9107 via a network 9101. The user can change the image recorded on the disk recording medium 9100 to a distribution service. When it is desired to play back images recorded on the server 9106 or the mobile terminal 9107, The network interface 9006 receives the code from the input disk recording medium 9100. Instead of reading the encoded bitstream, the network 9101 receives the encoded stream. Also, when the user desires to play back the image recorded in the memory 9004, In this case, the embodiment of the present invention is applied to the coded stream recorded in the memory 9004. Execute the image decoding process in the image decoding device according to this.
[0337] The user encodes the image captured by the external camera 9102 and records it in the memory 9004. When the user desires the operation, the video interface 9009 inputs the image from the camera 9102 and sends it via the bus 9010 to the image encoding unit 9007 of the codec IC 9002. The image encoding unit 9007 executes the image encoding process in the image encoding device according to the embodiment of the present invention on the image input via the video interface 9009 and creates an encoded bit stream. Then, the encoded bit stream is sent via the bus 9010 to the memory 9004. When the user desires to record the encoded stream on the disk recording medium 9100 instead of in the memory 9004, the optical disk drive 9005 writes the encoded stream to the inserted disk recording medium 9100. It is also possible to realize a hardware configuration that has an image encoding device and does not have an image decoding device, or a hardware configuration that has an image decoding device and does not have an image encoding device. Such a hardware configuration is realized, for example, by replacing the codec IC 9002 with the image encoding unit 9007 or the image decoding unit 9008 respectively.
[0338] Of course, the above processes related to encoding and decoding may be realized by using hardware for transmission, storage, and reception devices. They may also be realized by firmware stored in a ROM (Read Only Memory), flash memory, etc., or software such as a computer. The firmware program and the software program are run on a computer. memory, etc., or software such as a computer. The firmware program and the software program are run on a computer. memory, etc., or software such as a computer. The firmware program and the software program are run on a computer.
[0339] Of course, the above processes related to encoding and decoding may be realized by using hardware for transmission, storage, and reception devices. They may also be realized by firmware stored in a ROM (Read Only Memory), flash memory, etc., or software such as a computer. The firmware program and the software program are run on a computer. memory, etc., or software such as a computer. The firmware program and the software program are run on a computer. memory, etc., or software such as a computer. The firmware program and the software program are run on a computer. It may be recorded on a recordable medium that can be read by etc. and provided, or provided from a server through a wired or wireless network -work, or provided as data broadcast of terrestrial wave or satellite digital broadcast.
[0340] The present invention has been described based on the embodiments. The embodiments are examples, and various modifications are possible for each of their constituent elements and combinations of each processing process, and it is understood by those skilled in the art that such modifications are also within the scope of the present invention.
Explanation of Reference Numerals
[0341] 100 Image Encoding Device, 101 Block Division Unit, 102 Inter-Prediction 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 Transformation Unit, 110 Decoded Image Signal Superposition Unit, 111 Encoded Information Storage Memory, 200 Image Decoding Device, 201 Bit Sequence Decoding Unit, 202 Block Division Unit, 203 Inter-Prediction Unit 204 Intra-Prediction Unit, 205 Encoded Information Storage Memory205 Inverse Quantization / Inverse Orthogonal Transformation Unit, 207 Decoded Image Signal Superposition Unit, 208 Decoded Image Memory.< / poc>
Claims
1. A spatial motion information candidate derivation unit that derives a spatial motion information candidate from motion information of blocks that are spatially close to a block to be encoded, A temporal motion information candidate derivation unit that derives a temporal motion information candidate from motion information of blocks that are temporally close to a block to be encoded, A history motion information candidate derivation unit that derives a history motion information candidate from a memory that holds motion information of encoded blocks, comprising: adding the temporal motion information candidate to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate; when the motion information of the spatial motion information candidate and the motion information of the history motion information candidate are not the same, adding the history motion information candidate to the motion information candidate list A moving image encoding apparatus characterized by the above.
2. A step of deriving a spatial motion information candidate from motion information of blocks that are spatially close to a block to be encoded, A step of deriving a temporal motion information candidate from motion information of blocks that are temporally close to a block to be encoded, A step of deriving a history motion information candidate from a memory that holds motion information of encoded blocks, comprising: adding the temporal motion information candidate to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate; when the motion information of the spatial motion information candidate and the motion information of the history motion information candidate are not the same, adding the history motion information candidate to the motion information candidate list A moving image encoding method characterized by the above.
3. A moving image encoding program for causing a computer to perform a step of deriving a spatial motion information candidate from motion information of blocks that are spatially close to a block to be encoded, perform a step of deriving a temporal motion information candidate from motion information of blocks that are temporally close to a block to be encoded, perform a step of deriving a history motion information candidate from a memory that holds motion information of encoded blocks, wherein: the temporal motion information candidate is added to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate; when 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 A moving image encoding program characterized by the above.
4. A spatial motion information candidate derivation unit that derives a spatial motion information candidate from motion information of blocks that are spatially close to a block to be decoded, A temporal motion information candidate derivation unit that derives a temporal motion information candidate from motion information of blocks temporally adjacent to a block to be decoded; A history motion information candidate derivation unit that derives a history motion information candidate from a memory that holds motion information of decoded blocks; comprising: adding the temporal motion information candidate to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate; when the motion information of the spatial motion information candidate and the motion information of the history motion information candidate are not the same, adding the history motion information candidate to the motion information candidate list A moving image decoding apparatus characterized by the above.
5. A step of deriving a spatial motion information candidate from motion information of blocks spatially adjacent to a block to be decoded; A step of deriving a temporal motion information candidate from motion information of blocks temporally adjacent to a block to be decoded; A step of deriving a history motion information candidate from a memory that holds motion information of decoded blocks; comprising: adding the temporal motion information candidate to a motion information candidate list without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate; when the motion information of the spatial motion information candidate and the motion information of the history motion information candidate are not the same, adding the history motion information candidate to the motion information candidate list A moving image decoding method characterized by the above.
6. A moving image decoding program for causing a computer to perform a step of deriving a spatial motion information candidate from motion information of blocks spatially adjacent to a block to be decoded; perform a step of deriving a temporal motion information candidate from motion information of blocks temporally adjacent to a block to be decoded; perform a step of deriving a history motion information candidate from a memory that holds motion information of decoded blocks; wherein, without comparing the motion information of the spatial motion information candidate and the temporal motion information candidate, the temporal motion information candidate is added to a motion information candidate list, and when 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 A moving image decoding program characterized by the above.
7. A storing method for storing a bitstream generated by the moving image encoding method according to claim 2 in a recording medium.
8. A transmitting method for transmitting a bitstream generated by the moving image encoding method according to 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
Cited By
Image encoding device, image encoding method, and image encoding program, image decoding device, image decoding method, and image decoding program
JP2025129212A