Image Encoding Device, Image Encoding Method, Image Encoding Program, Image Decoding Device, Image Decoding Method, and Image Decoding Program
By utilizing a motion information history memory and sub-block merge candidate derivation, the technique addresses processing load issues in image encoding, achieving efficient encoding and decoding with reduced computational requirements.
Patent Information
- Application Number
- JP2025075283
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2025-04-30
- Publication Date
- 2025-07-23
- Estimated Expiration
- 2039-12-27
AI Technical Summary
Existing image encoding techniques, such as those described in Patent Document 1, involve significant processing loads due to image conversion, which affects encoding efficiency.
The technique involves a motion information history memory that stores the history of motion information, a predicted motion vector candidate derivation unit, and a sub-block merge candidate derivation unit that selectively stores motion information based on encoding mode, reducing processing load and enhancing efficiency.
This approach enables highly efficient image encoding and decoding with reduced processing load by optimizing motion information storage based on encoding mode.
Smart Images

Figure 0007711858000001_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to an image encoding and decoding technique for dividing an image into blocks and performing prediction.
Background Art
[0002] In image encoding and decoding, the image to be processed is divided into blocks, which are sets of a predetermined number of pixels, and processing is performed in units of blocks. By appropriately dividing into blocks and appropriately setting intra prediction (intra prediction) and inter prediction (inter prediction) within the screen, the encoding efficiency is improved. In the encoding and decoding of moving images, the encoding efficiency is improved by inter prediction that predicts from encoded and decoded pictures. Patent Document 1 describes a technique of applying an affine transformation during inter prediction. In moving images, it is not uncommon for an object to be deformed such as enlarged, reduced, or rotated. By applying the technique of Patent Document 1, efficient encoding becomes possible.
[0003]
[0004]
Prior Art Documents
Patent Documents
[0004]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0005] However, since the technique of Patent Document 1 involves image conversion, there is a problem of a large processing load. In view of the above problems, the present invention provides an encoding technique with low load and high efficiency.
Means for Solving the Problems
[0006] A motion information history memory that stores the history of a plurality of pieces of motion information, a predicted motion vector candidate derivation unit that derives a predicted motion vector candidate including a history predicted motion vector, and a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size A sub-block merge candidate derivation unit that derives the sub-block merge candidate, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding apparatus is disclosed. A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A moving image encoding apparatus is disclosed.
[0007] A motion information history memory that stores the history of a plurality of pieces of motion information, a predicted motion vector candidate derivation step that derives a predicted motion vector candidate including a history predicted motion vector, and a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A moving image encoding method is disclosed.
[0008] A motion information history memory that stores the history of a plurality of pieces of motion information, a predicted motion vector candidate derivation step that derives a predicted motion vector candidate including a history predicted motion vector, and a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. A sub-block merge candidate derivation step that derives a sub-block merge candidate in which motion information is different in sub-block units obtained by dividing an encoding block into a predetermined size, and when the predicted motion vector candidate is encoded, stores the motion information in the motion information history memory, and when the sub-block merge candidate is encoded, does not store the motion information in the motion information history memory. A moving image encoding method is disclosed. When the predicted motion vector candidate is encoded, store the motion information in the motion information history memory When the sub-block merge candidate is encoded, do not store the motion information in the motion information history memory, and disclose a moving image encoding program characterized by this
[0009] A motion information history memory that stores the history of a plurality of motion information, a predicted motion vector candidate derivation unit that derives a predicted motion vector candidate including a history predicted motion vector candidate, and a decoding block are divided into sub-blocks of a predetermined size. A sub-block merge candidate derivation unit that derives sub-block merge candidates with different motion information in units, and when the predicted motion vector candidate is decoded, store the motion information in the motion information history memory, and the sub-block merge candidate is decoded. Disclose a moving image decoding device characterized by not storing motion information in the motion information history memory
[0010] A motion information history memory that stores the history of a plurality of motion information, a predicted motion vector candidate derivation step that derives a predicted motion vector candidate including a history predicted motion vector candidate, and a decoding block are divided into sub-blocks of a predetermined size. A sub-block merge candidate derivation step for deriving sub-block merge candidates with different motion information in units, and when the predicted motion vector candidate is decoded, store the motion information in the motion information history memory, and the sub-block merge candidate is decoded. Disclose a moving image decoding method characterized by not storing motion information in the motion information history memory
[0011] A motion information history memory that stores the history of a plurality of motion information, a predicted motion vector candidate including a history predicted motion vector candidate A predicted motion vector candidate derivation step for deriving predicted motion vector candidates including, and a computer is caused to execute: a predicted motion vector candidate derivation step for deriving predicted motion vector candidates including historical predicted motion vector candidates from a memory that holds motion information of decoded blocks. When the predicted motion vector candidates are decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidates are decoded, motion information is not stored in the motion information history memory. A moving image decoding program is disclosed. A predicted motion vector candidate derivation step for deriving predicted motion vector candidates including historical predicted motion vector candidates from a memory that holds motion information of decoded blocks. and a computer is caused to execute: When the predicted motion vector candidates are decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidates are decoded, motion information is not stored in the motion information history memory. A moving image decoding program is disclosed. When the predicted motion vector candidates are decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidates are decoded, motion information is not stored in the motion information history memory. A moving image decoding program is disclosed. A moving image decoding program is disclosed.
[0012] Note that this description is illustrative. The scope of the present application and the present invention is not limited or restricted by this description. Also, in this specification, the description "the present invention" is used for illustration and is not intended to limit the scope of the present invention or the present application. Note that this description is illustrative. The scope of the present application and the present invention is not limited or restricted by this description. Also, in this specification, the description "the present invention" is used for illustration and is not intended to limit the scope of the present invention or the present application. It should be understood that it is used for illustration and does not limit the scope of the present invention or the present application. It should be understood that it is used for illustration and does not limit the scope of the present invention or the present application.
Effects of the Invention
[0013] According to the present invention, highly efficient image encoding / decoding processing can be realized with a low load.
Brief Description of the Drawings
[0014]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6A
Figure 6B
Figure 6C
Figure 6D
Figure 6E
Figure 7
Figure 8
Figure 9
Figure 10A
Figure 10B
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 31A
Figure 31B
Figure 31C
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Figure 37
Figure 38A
Figure 38B
Figure 39
Figure 40
Figure 41
Figure 42
Figure 43
Figure 44
Embodiment for Carrying Out the Invention
[0015] Define the technologies and technical terms used in this embodiment.
[0016] <Tree block> In the embodiment, the image to be encoded / decoded is evenly divided into blocks of a predetermined size. This unit is defined as a tree block. In FIG. 4, the size of the tree block is 128x128 pixels However, the size of the tree block is not limited to this, and any size may be set. The tree block corresponding to the processing target (the encoding target in the encoding process and the decoding target in the decoding process) switches in raster scan order, that is, from left to right and from top to bottom. The inside of each tree block can be further recursively divided. After recursively dividing the tree block, the block to be encoded / decoded is defined as an encoding block Also, the tree block and the encoding block are collectively defined as a block 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 device and the decoding device, or a configuration can be adopted in which the size of the tree block determined by the encoding device is transmitted to the decoding device Here, the maximum size of the tree block is 128x128 pixels, and the minimum size of the tree block is 16x16 pixels. Also, the maximum size of the encoding block is 64x64 pixels, and the minimum size of the encoding block is 4x4 pixels.
[0017] <Prediction mode> Perform prediction from the processed image signal of the image to be processed in units of processing target coded blocks, and switch between intra prediction (MODE_INTRA) and inter prediction (MO DE_INTER) that performs prediction from the image signal of the processed image. The processed image is used for the image obtained by decoding the signal for which encoding has been completed in the encoding process, the image signal, the tree block, the block, the coded block, etc., and in the decoding process, it is used for the image, the image signal, the tree block, the block, the coded block, etc. for which decoding has been completed. . Define the mode for identifying this intra prediction (MODE_INTRA) and inter prediction (MODE_INTER) as the prediction mode (PredMode). The prediction mode (PredMode) has intra prediction (MODE_INTRA ) or inter prediction (MODE_INTER) as its value.
[0018] <Inter prediction> In inter prediction that performs prediction from the image signal 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 reference lists, L0 (reference list 0) and L1 (reference list 1), are defined, and reference pictures are specified using reference indices respectively. In a P slice, L0 prediction (Pred_L0) is available . In a B slice, L0 prediction (Pred_L0), L1 prediction (Pred_L1), and bi-prediction (Pred_BI ) are available. L0 prediction (Pred_L0) is an inter prediction that refers to the reference picture managed by L0, and L1 prediction (Pred_L1) is an inter prediction that refers to the reference picture managed by L1. Bi-prediction (Pred_BI) is performed with both L0 prediction and L1 prediction, Inter prediction that refers to one reference picture managed by each of L0 and L1 is defined as the inter prediction mode with information for identifying L0 prediction, L1 prediction, and dual prediction . For constants and variables with subscript LX attached to the output in subsequent processing, it is assumed that the processing is performed for each of L0 and L1 .
[0019] <Predicted motion vector mode> The predicted motion vector mode is a mode that transmits an index for identifying a predicted motion vector, a differential motion vector, an inter prediction mode, and a reference index, and determines the inter prediction information of a processing target block. The predicted motion vector is derived from a predicted motion vector candidate derived from a processed block adjacent to the processing target block or a block located at the same position or in its vicinity (neighborhood) in a block belonging to the processed image, and an index for identifying the predicted motion vector .
[0020] <Merge mode> The merge mode is a mode that derives the inter prediction information of a processing target block from the inter prediction information of a processed block adjacent to the processing target block or a block located at the same position or in its vicinity (neighborhood) in a block belonging to the processed image without transmitting a differential motion vector and a reference index
[0021] A processed block adjacent to the processing target block and the inter prediction information of the processed block are defined as spatial merge candidates. A block located at the same position or in its vicinity (neighborhood) in a block belonging to the processed image and the inter prediction information of the block Inter prediction information derived from the ter prediction information is defined as a time merge candidate. Each merge cand idate is registered in the merge candidate list, and the merge candidate to be used for predicting the block to be processed is specified by the merge index.
[0022] <Adjacent block> FIG. 11 is a diagram for explaining reference blocks referred to for deriving inter prediction information in the predictive 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 processed image and is a block located at the same position as or in the vicinity ( nearby) of the block to be processed in the image to be processed.
[0023] A1 and A2 are blocks located on the left side of the block to be processed and adjacent to the block to be processed. B1 and B3 are blocks located above the block to be processed and adjacent to the block to be processed. A0, B0, and B2 are blocks located at the lower left, upper right, and upper left of the block to be processed, respectively.
[0024] Details of how adjacent blocks are handled in the predictive motion vector mode and the merge mode will be described later.
[0025] <Affine transform motion compensation> Affine transform motion compensation divides an encoded block into sub-blocks of a predetermined unit, determines a motion vector for each divided sub-block individually, and performs motion compensation. The motion vector of each sub-block is 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 (nearby) of the block to be processed. Derivation is based on one or more control points derived from the inter-prediction information of the blocks located at 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 motion vectors may be derived in pixel units.
[0026] Fig. 14 shows an example of affine transform motion compensation when there are two control points. In this case, the two control points have two parameters, namely the horizontal component and the vertical component. Therefore, the affine transform when there are two control points is referred to as a 4-parameter affine transform. CP1 and CP2 in Fig. 14 are the control points. Fig. 15 shows an example of affine transform motion compensation when there are three control points. In this case, the three control points have two parameters, namely the horizontal component and the vertical component. Therefore, the affine transform when there are three control points is referred to as a 6-parameter affine transform. CP1, CP2, and CP3 in Fig. 15 are the control points.
[0027] Affine transform motion compensation is available in both the predictive motion vector mode and the merge mode. The mode in which affine transform motion compensation is applied in the predictive motion vector mode is defined as the sub-block predictive motion vector mode, and the mode in which affine transform motion compensation is applied in the merge mode is defined as the sub-block merge mode.
[0028] <Syntax of Inter-Prediction> The syntax related to inter-prediction will be described with reference to Figs. 12 and 13. The merge_flag in Fig. 12 is a flag indicating whether the coding block to be processed is in the merge mode or the predictive motion vector mode. The merge_affine_flag is for the processing in the merge mode It is a flag indicating whether to apply the sub-block merge mode to the target coded block. inter_affine_flag is a flag indicating whether to apply the sub-block predictive motion vector mode to the coded block to be processed in the predictive motion vector mode. cu_affine_type_flag is a flag for determining the number of control points in the sub-block predictive motion vector mode is. Fig. 13 shows the values of each syntax element and the corresponding prediction method. merge_fl ag = 1, merge_affine_flag = 0 corresponds to the normal merge mode. The normal merge mode is a merge mode that is not sub-block merge. merge_flag = 1, merge_affine_flag = 1 corresponds to the sub-block merge mode. merge_flag = 0, inter_affine_flag = 0 corresponds to the normal predictive motion vector mode. The normal predictive motion vector mode is a predictive motion vector merge that is not the sub-block predictive motion vector mode. merge_flag = 0, inter_affine_flag = 1 corresponds to the sub-block predictive motion vector mode. When merge_flag = 0, inter_affine_flag = 1, cu_affine_type_flag is further transmitted to determine the number of control points.
[0029] <poc> POC (Picture Order Count) is a variable associated with a picture to be encoded , and a value that increases by one according to the output order of the picture is set. Depending on the value of the 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.
[0030] (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 .
[0031] FIG. 1 is a block diagram of the image encoding apparatus 100 according to the first embodiment. The image encoding apparatus 100 of the embodiment includes 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 generation unit 106, an orthogonal transformation / quantization unit 107, a bit string encoding unit 108, an inverse quantization / inverse orthogonal transformation unit 109, a decoded image signal superimposing unit 110, and an encoded information storage memory 111.
[0032] The block division unit 101 recursively divides the input image to generate encoding blocks . The block division unit 101 includes a four-division unit that divides the block to be divided in the horizontal and vertical directions respectively , and a unit that divides the block to be divided either in the horizontal direction or the vertical direction It includes two to three split parts to be split. The block splitting unit 101 uses the generated encoded block as the encoded block to be processed, and supplies the image signal of the encoded block to be processed to the inter prediction unit 102, the intra prediction unit 103, and the residual generation unit 106. Also, the block splitting unit 101 supplies information indicating the determined recursive splitting structure 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 encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. It includes two to three split parts to be split. The block splitting unit 101 uses the generated encoded block as the encoded block to be processed, and supplies the image signal of the encoded block to be processed to the inter prediction unit 102, the intra prediction unit 103, and the residual generation unit 106. Also, the block splitting unit 101 supplies information indicating the determined recursive splitting structure 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 encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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.
[0033] The inter prediction unit 102 performs inter prediction on the encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. It includes two to three split parts to be split. The block splitting unit 101 uses the generated encoded block as the encoded block to be processed, and supplies the image signal of the encoded block to be processed to the inter prediction unit 102, the intra prediction unit 103, and the residual generation unit 106. Also, the block splitting unit 101 supplies information indicating the determined recursive splitting structure 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 encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. The inter prediction unit 102 performs inter prediction on the encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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.
[0034] The intra prediction unit 103 performs intra prediction on the encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. The inter prediction unit 102 performs inter prediction on the encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. The inter prediction unit 102 performs inter prediction on the encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. The inter prediction unit 102 performs inter prediction on the encoded block to be processed. The inter prediction unit 102 derives a plurality of candidate inter prediction information from the inter prediction information stored in the encoding information storage memory 111 and the decoded image signal stored in the decoded image memory 104, selects a suitable inter prediction mode from the derived 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 encoded block to be processed. The intra prediction unit 103 refers to the decoded image signal stored in the decoded image memory 104 as a reference pixel, and generates a prediction image signal by intra prediction based on the encoded information such as the intra prediction mode stored in the encoding information storage memory 111. In intra prediction, the intra prediction unit 103 selects a suitable intra prediction mode from a 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. Examples of intra prediction are shown in FIGS. 10A and 10B. FIG. 10A shows the correspondence between the prediction direction of intra prediction and the intra prediction mode number. For example, intra prediction mode 5 0 generates an intra prediction image by copying reference pixels in the vertical direction. Intra prediction mode 1 is the DC mode, which is a mode where all pixel values of the block to be processed are set to the average value of the reference pixels. Intra prediction mode 0 is the Planar mode, which is a mode for creating a two-dimensional intra prediction image from reference pixels in the vertical direction and horizontal direction. FIG. 10B is an example of generating an intra prediction image in the case of intra prediction mode 40. The intra prediction unit 103 copies the values of the reference pixels in the direction indicated by the intra prediction mode for each pixel of the block to be processed. When the reference pixel of the intra prediction mode is not at an integer position, the intra prediction unit 103 determines the reference pixel value by interpolation from the reference pixel values at the surrounding integer positions. The decoded image memory 104 stores the decoded image generated by the decoded image signal superposition unit 110. The decoded image memory 104 supplies the stored decoded image to the inter prediction unit 102 and the intra prediction unit 103. The prediction method determination unit 105 evaluates each of the intra prediction and the inter prediction using encoding information, the coded amount of the residual, the distortion amount between the predicted image signal and the image signal to be processed, etc., and determines the optimal prediction mode. In the case of intra prediction, the prediction method determination unit 10 5 supplies intra prediction information such as the intra prediction mode as encoding information to the bit sequence encoding unit 1
[0035] 08. In the case of the merge mode of inter prediction, the prediction method determination unit 105 performs the merge ... ...
[0036] ... ... ... ... ... Information indicating whether it is a direct index or sub-block merge mode (sub-block merge flag), etc., of the inter prediction information is supplied to the bit sequence encoding unit 108 as encoding information. In the case of the prediction motion vector mode of inter prediction, the prediction method determination unit 105 determines the inter prediction mode, prediction motion vector index, reference indexes of L0 and L1, differential motion vector, information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag), etc., of the inter prediction information is supplied to the bit sequence encoding unit 108 as encoding information. Further, the prediction method determination unit 105 supplies the determined encoding information to the encoding information storage memory 111. The prediction method determination unit 105 supplies the residual generation unit 106 and the predicted image signal to the decoded image signal superposition unit 110. For example, the inter prediction information such as the sub-block merge flag is supplied to the bit sequence encoding unit 108 as encoding information. In the case of the prediction motion vector mode of inter prediction, the prediction method determination unit 105 determines the inter prediction mode, prediction motion vector index, reference indexes of L0 and L1, differential motion vector, information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag), etc., of the inter prediction information is supplied to the bit sequence encoding unit 108 as encoding information. For example, the inter prediction information such as the sub-block merge flag is supplied to the bit sequence encoding unit 108 as encoding information. In the case of the prediction motion vector mode of inter prediction, the prediction method determination unit 105 determines the inter prediction mode, prediction motion vector index, reference indexes of L0 and L1, differential motion vector, information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag), etc., of the inter prediction information is supplied to the bit sequence encoding unit 108 as encoding information. For example, the inter prediction information such as the sub-block merge flag is supplied to the bit sequence encoding unit 108 as encoding information. Furthermore, the prediction method determination unit 105 supplies the determined encoding information to the encoding information storage memory 111. The prediction method determination unit 105 supplies the residual generation unit 106 and the predicted image signal to the decoded image signal superposition unit 110. The prediction method determination unit 105 supplies the residual generation unit 106 and the predicted image signal to the decoded image signal superposition unit 110. The residual generation unit 106 generates a residual by subtracting the predicted image signal from the image signal to be processed, and supplies it to the orthogonal transform / quantization unit 107.
[0037] The residual generation unit 106 generates a residual by subtracting the predicted image signal from the image signal to be processed, and supplies it to the orthogonal transform / quantization unit 107. The orthogonal transform / quantization unit 107 performs orthogonal transform and quantization on the residual according to the quantization parameter, generates an orthogonally transformed / quantized residual, and supplies the generated residual to the bit sequence encoding unit 108 and the inverse quantization / inverse orthogonal transform unit 109.
[0038] The orthogonal transform / quantization unit 107 performs orthogonal transform and quantization on the residual according to the quantization parameter, generates an orthogonally transformed / quantized residual, and supplies the generated residual to the bit sequence encoding unit 108 and the inverse quantization / inverse orthogonal transform unit 109. The orthogonal transform / quantization unit 107 performs orthogonal transform and quantization on the residual according to the quantization parameter, generates an orthogonally transformed / quantized residual, and supplies the generated residual to the bit sequence encoding unit 108 and the inverse quantization / inverse orthogonal transform unit 109. The bit sequence encoding unit 108 encodes the encoding information corresponding to the prediction method determined by the prediction method determination unit 105 for each encoding block, in addition to the information in units of sequence, picture, slice, and encoding block. Specifically, the bit sequence encoding unit 108 encodes the prediction mode PredMode for each encoding block. When the prediction mode is inter prediction (MODE_INTER),
[0039] The bit sequence encoding unit 108 encodes the encoding information corresponding to the prediction method determined by the prediction method determination unit 105 for each encoding block, in addition to the information in units of sequence, picture, slice, and encoding block. The bit sequence encoding unit 108 encodes the encoding information corresponding to the prediction method determined by the prediction method determination unit 105 for each encoding block, in addition to the information in units of sequence, picture, slice, and encoding block. Specifically, the bit sequence encoding unit 108 encodes the prediction mode PredMode for each encoding block. When the prediction mode is inter prediction (MODE_INTER), the bit sequence encoding unit 108 encodes the prediction mode PredMode for each encoding block. When the prediction mode is inter prediction (MODE_INTER), When merging, the bit string encoding unit 108 encodes encoding information (inter prediction information) such as a flag for determining whether it is in merge mode, a sub-block merge flag, a merge index in the case of merge mode, an intra prediction mode in the case of not in merge mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a prescribed syntax (syntax of a bit string), and generates a first bit string. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream. When not in merge mode, the encoding information (inter prediction information) such as an intra prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. When the prediction mode is intra prediction (MODE_INTRA), the encoding information (intra prediction information) such as the intra prediction mode is encoded according to a prescribed syntax (syntax of a bit string), and a first bit string is generated. Also, the bit string encoding unit 108 entropy-encodes the orthogonally transformed and quantized residuals according to a prescribed syntax to generate a second bit string. The bit string encoding unit 108 multiplexes the first bit string and the second bit string according to a prescribed syntax, and outputs a bit stream.
[0040] The inverse quantization and inverse orthogonal transformation unit 109 inverse quantizes and inverse orthogonally transforms the orthogonally transformed and quantized residuals supplied from the orthogonally transformed and quantized unit 107 to calculate residuals, and supplies the calculated residuals to the decoded image signal superposition unit 110. The inverse quantization and inverse orthogonal transformation unit 109 inverse quantizes and inverse orthogonally transforms the orthogonally transformed and quantized residuals supplied from the orthogonally transformed and quantized unit 107 to calculate residuals, and supplies the calculated residuals to the decoded image signal superposition unit 110. The inverse quantization and inverse orthogonal transformation unit 109 inverse quantizes and inverse orthogonally transforms the orthogonally transformed and quantized residuals supplied from the orthogonally transformed and quantized unit 107 to calculate residuals, and supplies the calculated residuals to the decoded image signal superposition unit 110.
[0041] 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 residuals inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, and stores it in the decoded image memory 104. Note that the decoded image signal superposition unit 110 may perform filtering processing for reducing distortion such as block distortion due to encoding on the decoded image, and then store it in the decoded image memory 104. 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 residuals inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, and stores it in the decoded image memory 104. Note that the decoded image signal superposition unit 110 may perform filtering processing for reducing distortion such as block distortion due to encoding on the decoded image, and then store it in the decoded image memory 104. 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 residuals inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, and stores it in the decoded image memory 104. Note that the decoded image signal superposition unit 110 may perform filtering processing for reducing distortion such as block distortion due to encoding on the decoded image, and then store it in the decoded image memory 104. 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 residuals inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, and stores it in the decoded image memory 104. Note that the decoded image signal superposition unit 110 may perform filtering processing for reducing distortion such as block distortion due to encoding on the decoded image, and then store it in the decoded image memory 104. 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 residuals inverse quantized and inverse orthogonally transformed by the inverse quantization and inverse orthogonal transformation unit 109 to generate a decoded image, and stores it in the decoded image memory 104. Note that the decoded image signal superposition unit 110 may perform filtering processing for reducing distortion such as block distortion due to encoding on the decoded image, and then store it in the decoded image memory 104.
[0042] The coding information storage memory 111 stores the prediction mode (inference mode) determined by the prediction method determination unit 105. In the case of inter prediction, the code is stored. The coding information stored in the coding information storage memory 111 includes the determined motion vector, the reference list, Inter prediction information such as L0 and L1 reference indexes, and historical prediction motion vector candidate list In the case of the merge mode of the inter prediction, the coding information storage memory 111 includes The encoded information to be stored includes the merge index, sub-block markers, and the above information. The inter prediction information is included, such as the sub-block merge flag indicating whether the sub-block is in the multi-mode or not. In the case of the inter-prediction predicted motion vector mode, the coding information storage memory 111 The stored coding information includes the above information as well as inter prediction mode, predicted motion vector, etc. An index, a differential motion vector, and information indicating whether or not the sub-block prediction motion vector mode is used. It includes inter prediction information such as intra block prediction information (sub-block prediction motion vector flag). In the case of prediction, the coding information stored in the coding information storage memory 111 includes the determined input. The JPEG 2000 includes intra prediction information such as intra prediction mode.
[0043] FIG. 2 shows the configuration of an image decoding device according to an embodiment of the present invention, which corresponds to the image encoding device of FIG. The image decoding device according to the embodiment includes a bit stream decoding unit 201, a block diagram showing a configuration of the image decoding device. A block division unit 202, an inter prediction unit 203, an intra prediction unit 204, and a coding information storage memory 205, an inverse quantization and inverse orthogonal transformation unit 206, a decoded image signal superimposition unit 207, and a decoded image memory unit 208. Equipped with 208 harpoons.
[0044] The decoding process of the image decoder in FIG. 2 corresponds to the decoding process provided inside the image encoder in FIG. 1. Therefore, the components of the encoding information storage memory 205, inverse quantization and inverse orthogonal transformation unit 206, decoded image signal superposition unit 207, and decoded image memory 208 in FIG. 2 respectively correspond to the encoding information storage memory 111, inverse quantization and inverse orthogonal transformation unit 109, decoded image signal superposition unit 110, and decoded image memory 104 in the image encoder in FIG. 1 and have corresponding functions. The bit stream supplied to the bit string decoder 201 is separated according to the rules of a specified syntax. The bit string decoder 201 decodes the separated first bit string to obtain information such as sequence, picture, slice, encoding block unit, and encoding information of the encoding block unit. Specifically, the bit string decoder 201 decodes a prediction mode PredMode for determining whether it is an inter prediction (MODE_INTER) or an intra prediction (MODE_INTRA) in terms of the encoding block unit. When the prediction mode is an inter prediction (MODE_INTER), the bit string decoder 201 decodes encoding information (inter prediction information) regarding a flag for determining whether it is a merge mode, the merge index in the case of the merge mode, a sub-block merge flag, the inter prediction mode in the case of the prediction motion vector mode, the prediction motion vector index, the differential motion vector, the sub-block prediction motion vector flag, etc. according to the specified syntax, and supplies the encoding information (inter prediction information) to the encoding information storage memory 205 via the inter prediction unit 203 and the block division unit 202. When the prediction mode is an intra prediction (MODE_INTRA), etc. each have corresponding functions. The bit stream supplied to the bit string decoder 201 is separated according to the rules of a specified syntax. The bit string decoder 201 decodes the separated first bit string to obtain information such as sequence, picture, slice, encoding block unit, and encoding information of the encoding block unit.
[0045] Specifically, the bit string decoder 201 decodes a prediction mode PredMode for determining whether it is an inter prediction (MODE_INTER) or an intra prediction (MODE_INTRA) in terms of the encoding block unit. When the prediction mode is an inter prediction (MODE_INTER), the bit string decoder 201 decodes encoding information (inter prediction information) regarding a flag for determining whether it is a merge mode, the merge index in the case of the merge mode, a sub-block merge flag, the inter prediction mode in the case of the prediction motion vector mode, the prediction motion vector index, the differential motion vector, the sub-block prediction motion vector flag, etc. according to the specified syntax, and supplies the encoding information (inter prediction information) to the encoding information storage memory 205 via the inter prediction unit 203 and the block division unit 202. When the prediction mode is an intra prediction (MODE_INTRA), the bit string decoder 201 decodes encoding information (intra prediction information) regarding the intra prediction mode, the intra prediction index, etc. according to the specified syntax, and supplies the encoding information (intra prediction information) to the encoding information storage memory 205 via the intra prediction unit 204 and the block division unit 202. The encoding information storage memory 205 stores the encoding information (inter prediction information or intra prediction information) supplied from the bit string decoder 201, and supplies the encoding information to the inverse quantization and inverse orthogonal transformation unit 206. The inverse quantization and inverse orthogonal transformation unit 206 inverse quantizes and inverse orthogonally transforms the encoding information supplied from the encoding information storage memory 205 to obtain a decoded image signal, and supplies the decoded image signal to the decoded image signal superposition unit 207. The decoded image signal superposition unit 207 superposes the decoded image signal supplied from the inverse quantization and inverse orthogonal transformation unit 206 In this case, coding information (intra prediction information) such as the intra prediction mode is converted into a prescribed syntax and thus decoded, and the coding information (intra prediction information) is supplied to the coding information storage memory 205 via the inter prediction unit 203 or the intra prediction unit 204 and the block division unit 202. The bit string decoding unit 201 decodes the separated second bit string to calculate a residual that has been orthogonally transformed and quantized, and supplies the orthogonally transformed and quantized residual to the inverse quantization and inverse orthogonal transformation unit 206
[0046] When the prediction mode PredMode of the coding block to be processed is the inter prediction (MODE_INTER) and the prediction motion vector mode, the inter prediction unit 203 uses the coding information of the already decoded image signal stored in the coding information storage memory 205 to derive candidates for a plurality of prediction motion vectors, and registers the derived candidates for the plurality of prediction motion vectors in a prediction motion vector candidate list described later. The inter prediction unit 203 selects a prediction motion vector corresponding to the prediction motion vector index decoded and supplied by the bit string decoding unit 201 from among the candidates for the plurality of prediction motion vectors registered in the prediction motion vector candidate list, calculates a motion vector from the differential motion vector decoded by the bit string decoding unit 201 and the selected prediction motion vector, and stores the calculated motion vector in the coding information storage memory 205 together with other coding information. Here, the coding information of the coding block to be supplied and stored includes flags predFlagL0[xP][yP], predFlag indicating whether or not to use the prediction mode PredMode, L0 prediction, and L1 prediction, reference indexes refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1, and L0 , such as the motion vectors mvL0[xP][yP] and mvL1[xP][yP] of L1. Here, xP and yP are the indices indicating the position of the upper left pixel of the coded block within the picture. When the prediction mode PredMo de 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 the flag predFlagL1 indicating whether to use L1 prediction is 0. When the inter prediction mode is L1 prediction (Pred_L1), the flag predFlagL0 indicating whether to use L0 prediction is 0, and the flag predFlagL1 indicating whether to use L1 prediction is 1. When the inter prediction mode is bi-prediction (Pred_BI), the flag predFlagL0 indicating whether to use L0 prediction and the flag predFlagL1 indicating whether to use L1 prediction are both 1. Further, when the prediction mode PredMode of the coded block to be processed is inter prediction (MODE_INTER) and 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. Among the plurality of merge candidates registered in the merge candidate list, the merge candidate corresponding to the merge index decoded and supplied by the bit sequence decoder 201 is selected, and the L0 prediction of the selected merge candidate, and the flags predFlagL0[xP][yP] and predFlagL1[xP][yP] indicating whether to use L1 prediction, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 are obtained. From among the plurality of merge candidates registered in the merge candidate list, the merge candidate corresponding to the merge index decoded and supplied by the bit sequence decoder 201 is selected, and the L0 prediction of the selected merge candidate, and the flags predFlagL0[xP][yP] and predFlagL1[xP][yP] indicating whether to use L1 prediction, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 are obtained. are obtained. Store the inter-prediction information such as tor mvL0[xP][yP] and mvL1[xP][yP] in the encoding information storage memory 205. Here, xP and yP are indices indicating the position of the upper left pixel of the encoding block within the picture. The detailed configuration and operation of the inter-prediction unit 203 will be described later.
[0047] When the prediction mode PredMode of the encoding block to be processed is intra-prediction (MODE_INTRA), the intra-prediction unit 204 performs intra-prediction. The encoded information decoded by the bit sequence decoding unit 201 includes the intra-prediction mode. The intra-prediction unit 204 generates a predicted image signal by intra-prediction from the decoded image signal stored in the decoded image memory 208 according to the intra-prediction mode included in the encoded information decoded by the bit sequence decoding unit 201, and supplies the generated predicted image signal to the decoded image signal superposition unit 207. 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 inverse quantization and inverse orthogonal transformation unit 206 performs inverse orthogonal transformation and inverse quantization on the orthogonally transformed and quantized residuals decoded by the bit sequence decoding unit 201 to obtain the inverse orthogonally transformed and inverse quantized residuals. The decoded image signal superposition unit 207 superimposes the predicted image signal inter-predicted by the inter-prediction unit 203 or the predicted image signal intra-predicted by the intra-prediction unit 204 and the residuals inverse orthogonally transformed and inverse quantized by the inverse quantization and inverse orthogonal transformation unit 206 to decode the decoded image signal, and stores the decoded decoded image signal in the decoded image memory 208.
[0048]
[0049] When storing in the memory 208, the decoded image signal superposition unit 207 may perform filtering processing to reduce block distortion or the like due to encoding on the decoded image, and then store it in the decoded image memory 208.
[0050] Next, the operation of the block division unit 101 in the image encoding apparatus 100 will be described. FIG. 3 is a flowchart showing an operation of dividing an image into tree blocks and further dividing each tree block. First, the input image is divided into tree blocks of a predetermined size (step S1001). For each tree block, scanning is performed in a predetermined order, that is, in raster scan order (step S1002), and the inside of the tree block to be processed is divided (step S1003).
[0051] FIG. 7 is a flowchart showing the detailed operation of the division process in step S1003. First, it is determined whether to divide the block to be processed into four parts (step S1101).
[0052] 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, scanning is performed in Z-scan order, that is, in the order of upper left, upper right, lower left, and lower right (step S1103). FIG. 5 is an example of Z-scan order, and 601 in FIG. 6A is an example of dividing the block to be processed into four parts. The numbers 0 to 3 in 601 of FIG. 6A indicate the order of processing. Then, for each block divided in step S1101, the division process in FIG. 7 is recursively executed (step S1104).
[0053] If it is determined that the block to be processed is not to be divided into four parts, 2-3 division is performed (step S1 105).
[0054] FIG. 8 is a flowchart showing the detailed operation of the 2-3 splitting process in step S1105. . First, it is determined whether to perform 2-3 splitting on the block to be processed, that is, whether to perform either 2-way or 3-way splitting (step S1201).
[0055] If it is determined not to perform 2-3 splitting on the block to be processed, that is, if it is determined not to split, the splitting is terminated (step S1211). That is, no further recursive splitting process is performed on the block split by the recursive splitting process.
[0056] If it is determined to perform 2-3 splitting on the block to be processed, it is further determined whether to perform 2-way splitting on the block to be processed (step S1202).
[0057] If it is determined to perform 2-way splitting on the block to be processed, it is determined whether to split the block to be processed vertically (step S1203). Based on the result, the block to be processed is split vertically into two parts (step S1204), or the block to be processed is split horizontally into two parts (step S1205). As a result of step S1204, the block to be processed is split vertically into two parts as shown in 602 of FIG. 6B, and as a result of step S1205, the block to be processed is split horizontally into two parts as shown in 604 of FIG. 6D.
[0058] If it is not determined to perform 2-way splitting on the block to be processed in step S1202, that is, if it is determined to perform 3-way splitting, the block to be processed is split into upper, middle, and lower parts (vertically). Determine whether to do so (step S1206), and based on the result, divide the processing target block into three parts vertically as upper, middle, and lower (step S1207), or divide the processing target block into three parts horizontally as left, middle, and right ( step S1208). As a result of step S1207, the processing target block is divided into three parts vertically as upper, middle, and lower as shown in 603 of FIG. 6C, and as a result of step S1208, the processing target block is divided into three parts horizontally as left, middle, and right as shown in 605 of FIG. 6E. After executing any one of step S1204, step S1205, step S1207, and step S1208, for each block obtained by dividing the processing target block, scan from left to right and from top to bottom in order (step S1209). The numbers 0 to
[0059] 2 of 602 to 605 in FIGS. 6B to 6E indicate the order of processing. For each divided block, recursively execute the 2-3 division processing of FIG. 8 (step S1210). 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 is not transmitted by making a prior agreement between the encoding device and the decoding device, or may be realized in a configuration where the encoding device determines the information for limiting the necessity of division and records it in a bit string to transmit it to the decoding device. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block.
[0060] 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 is not transmitted by making a prior agreement between the encoding device and the decoding device, or may be realized in a configuration where the encoding device determines the information for limiting the necessity of division and records it in a bit string to transmit it to the decoding device. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block.
[0061] When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block. When a certain block is divided, the block before division is called the parent block, and each block after division is called the child block.
[0062] Next, the operation of the block division unit 202 in the image decoding apparatus 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 apparatus 100. However, the block division unit 101 of the image encoding apparatus 100 applies optimization techniques such as estimation of the optimal shape by image recognition and distortion rate optimization to determine the optimal block division shape, whereas the block division unit 202 in the image decoding apparatus 200 determines the block division shape by decoding the block division information recorded in the bit string, which is different. The syntax (syntax rules of the bit string) regarding the block division of the first embodiment is shown in FIG. 9. coding_quadtree() represents the syntax related to the 4-division process of the block. multi _type_tree() represents the syntax related to the 2-division or 3-division process of the block. qt_spl
[0063] it is a flag indicating whether to divide the block into 4 parts. When dividing the block into 4 parts, qt _split = 1, and when not dividing into 4 parts, qt_split = 0. When dividing into 4 parts (qt_split = 1), for each of the 4-divided blocks, the 4-division process is recursively performed (coding_quadtree(0), codin g_quadtree(1), coding_quadtree(2), coding_quadtree(3), and the arguments 0 to 3 correspond to the numbers in 6 01 in FIG. 6A). When not dividing into 4 parts (qt_split = 0), subsequent division is determined according to multi_type_tree(). mtt_split is a flag indicating whether to further divide. When further dividing (mtt_split = 1), it indicates whether to divide vertically or horizontally. The flag mtt_split_vertical, which is a yes flag, and the flag mtt_split_binary that determines whether to perform a two-way split or a three-way split are transmitted. mtt_split_vertical = 1 indicates splitting in the vertical direction, and mtt_split_vertical = 0 indicates splitting in the horizontal direction. mtt_split_binary = 1 indicates a two-way split, and mtt_split_binary = 0 indicates a three-way split. In the case of a two-way split (mtt_split_binary = 1), for each of the two split blocks, a recursive splitting process is performed (multi_type_tree(0), multi_type_tree(1), where the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to 6D).). In the case of a three-way split (mtt_split_binary = 0), for each of the three split blocks, a recursive splitting process is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), where 0 to 2 correspond to the numbers 603 in FIG. 6B or 605 in FIG. 6E).). Hierarchical block splitting is performed by recursively calling multi_type_tree until mtt_split = 0. is transmitted. mtt_split_vertical = 1 indicates splitting in the vertical direction, and mtt_split_vertical = 0 indicates splitting in the horizontal direction. mtt_split_binary = 1 indicates a two-way split, and mtt_split_binary = 0 indicates a three-way split. In the case of a two-way split (m tt_split_binary = 1), for each of the two split blocks, a recursive splitting process is performed (multi_t ype_tree(0), multi_type_tree(1), where the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to 6D ).). In the case of a three-way split (mtt_split_binary = 0), for each of the three split blocks a recursive splitting process is performed (multi_type_tree(0), multi_type_tree(1), multi_type_ tree(2), where 0 to 2 correspond to the numbers 603 in FIG. 6B or 605 in FIG. 6E).). mtt_spli t is recursively called until mtt_split = 0 to perform hierarchical block splitting .
[0064] <Inter-prediction> The inter-prediction method according to the embodiment is implemented in the inter-prediction unit 102 of the image encoding apparatus in FIG. 1 and the inter-prediction unit 203 of the image decoding apparatus in FIG. 2.
[0065] 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.
[0066] <Explanation of the inter-prediction unit 102 on the encoding side> FIG. 16 is a diagram showing a detailed configuration of the inter prediction unit 102 of the image encoding apparatus in FIG. 1. The normal prediction motion vector mode derivation unit 301 derives a plurality of normal prediction motion vector candidates and selects a prediction motion vector, and calculates a differential motion vector between the selected prediction motion vector and the detected motion vector. The detected inter prediction mode, reference index, motion vector, and the calculated differential motion vector serve as 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. Details of the configuration and processing of the normal prediction motion vector mode derivation unit 301 will be described later.
[0067] 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 305. Details of the configuration and processing of the normal merge mode derivation unit 302 will be described later.
[0068] The sub-block prediction motion vector mode derivation unit 303 derives a plurality of sub-block prediction motion vector candidates and selects a sub-block prediction motion vector, and calculates a differential motion vector between the selected sub-block prediction motion vector and the detected motion vector. The detected inter prediction mode, reference index, motion vector, and the calculated differential motion vector serve as the inter prediction information in the sub-block prediction motion vector mode. This inter prediction information is supplied to the inter prediction mode determination unit 305.
[0069] 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 the sub-block merge mode This inter-prediction information is supplied to the inter-prediction mode determination unit 305.
[0070] In the inter-prediction mode determination unit 305, the normal prediction motion vector mode derivation unit 301, normal merge mode derivation unit 302, sub-block prediction motion vector mode derivation unit 303, sub-block lock merge mode derivation unit 304, based on the inter-prediction information supplied from these units, inter prediction information is determined. Inter-prediction information corresponding to the determination result is supplied from the inter-prediction mode determination unit 305 to the motion compensation prediction unit 306.
[0071] 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 of the motion compensation prediction unit 306 will be described later.
[0072] <Explanation of the inter-prediction unit 203 on the decoding side> FIG. 22 is a diagram showing the detailed configuration of the inter-prediction unit 203 of the image decoding apparatus in FIG. 2.
[0073] The normal prediction motion vector mode derivation unit 401 derives a plurality of normal prediction motion vector candidates to select a prediction motion vector, and calculates the sum of the selected prediction motion vector and the decoded differential motion vector as the motion vector. The decoded inter-prediction mode, reference index and motion 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 mode derivation unit 401 will be described later.
[0074] 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. 408. The detailed configuration and processing of the general merge mode derivation unit 402 will be described later.
[0075] In the sub-block prediction motion vector mode derivation unit 403, a plurality of sub-block prediction motion vector candidates are derived, a sub-block prediction motion vector is selected, and the addition value of the selected sub-block prediction motion vector and the decoded differential motion vector is calculated to obtain a motion vector. The decoded inter prediction mode, reference index, and motion vector become the inter prediction information in the sub-block prediction motion vector mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. motion vector mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. motion vector mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408.
[0076] In the sub-block merge mode derivation unit 404, a plurality of sub-block merge candidates are derived, a sub-block merge candidate is selected, and inter prediction information in the sub-block merge mode is obtained. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408.
[0077] 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 2 08. The detailed configuration and processing of the motion compensation prediction unit 406 are the same as those of the motion compensation prediction unit 306 on the encoding side. 08. The detailed configuration and processing of the motion compensation prediction unit 406 are the same as those of the motion compensation prediction unit 306 on the encoding side.
[0078] <Normal prediction motion vector mode derivation unit (Normal AMVP)> The normal prediction motion vector mode derivation unit 301 in FIG. 17 derives spatial prediction motion vector candidates unit 321, temporal prediction motion vector candidate derivation unit 322, history prediction motion vector candidate derivation unit 3 23, prediction motion vector candidate supplementation unit 325, normal motion vector detection unit 326, prediction motion ve ctor candidate selection unit 327, and motion vector subtraction unit 328.
[0079] The normal prediction motion vector mode derivation unit 401 in FIG. 23 derives spatial prediction motion vector candidates unit 421, temporal prediction motion vector candidate derivation unit 422, history prediction motion vector candidate derivation unit 4 23, prediction motion vector candidate supplementation unit 425, prediction motion vector candidate selection unit 426, and motion ve ctor addition unit 427.
[0080] Regarding 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, the flowcharts in FIGS. 19 and 25 will be used to explain them 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. It shows the flowchart of the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 401 on the decoding side. It is a flowchart.
[0081] <Explanation of the normal prediction motion vector mode derivation unit (normal AMVP) on the encoding side> Referring to FIG. 19, the normal prediction motion vector mode derivation processing procedure on the encoding side will be explained. In the explanation of the processing procedure in FIG. 19, the word "normal" shown in FIG. 19 may be omitted.
[0082] First, the normal motion vector detection unit 326 determines the inter prediction mode and for each reference index Detect normal motion vectors (step S100 in FIG. 19).
[0083] 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, and 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 processing target block is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction (Pr ed_L0), calculate the prediction motion vector candidate list mvpListL0 for L0, select the prediction motion vector mvpL0, and calculate the differential motion vector mvdL0 of the motion vector mvL0 of L0. When the inter prediction mode of the processing target block is L1 prediction (Pred_L1), calculate the prediction motion vector candidate list mvpListL1 for L1, select the prediction motion vector mvpL1, and calculate the differential motion vector mvdL1 of the motion vector mvL1 of L1. When the inter prediction mode of the processing target block is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. Calculate the prediction motion vector candidate list mvpListL0 for L0, select the prediction motion vector mvpL0 for L0, and calculate the differential motion vector mvdL0 of the motion vector mvL0 of L0. At the same time, calculate the prediction motion vector candidate list mvpListL1 for L1, calculate the prediction motion vector mvpL1 for L1, and calculate the differential motion vectors mvdL1 of the motion vector mvL1 of L1 respectively. list mvpListL1 for L1, select the prediction motion vector mvpL1, and calculate the differential motion vector mvdL1 of the motion vector mvL1 of L1. When the inter prediction mode of the processing target block is bi-prediction (Pred_BI), both L0 prediction and L1 prediction are performed. Calculate the prediction motion vector candidate list mvpListL0 for L0, select the prediction motion vector mvpL0 for L0, and calculate the differential motion vector mvdL0 of the motion vector mvL0 of L0. At the same time, calculate the prediction motion vector candidate list mvpListL1 for L1, calculate the prediction motion vector mvpL1 for L1, and calculate the differential motion vectors mvdL1 of the motion vector mvL1 of L1 respectively. list mvpListL0 for L0, select the prediction motion vector mvpL0 for L0, and calculate the differential motion vector mvdL0 of the motion vector mvL0 of L0. At the same time, calculate the prediction motion vector candidate list mvpListL1 for L1, calculate the prediction motion vector mvpL1 for L1, and calculate the differential motion vectors mvdL1 of the motion vector mvL1 of L1 respectively. list mvpListL1 for L1, calculate the prediction motion vector mvpL1 for L1, and calculate the differential motion vector mvdL1 of the motion vector mvL1 of L1 respectively. Calculate the differential motion vector mvdL1 of the motion vector mvL1 of L1 respectively.
[0084] For each of L0 and L1, differential motion vector calculation processing is performed, but both L0 and L1 have common processing. Therefore, in the following description, L0 and L1 are represented as a common LX . In the process of calculating the differential motion vector of L0, X of LX is 0, and in the process of calculating the differential motion vector of L1, X of LX is 1. Also, when referring to the information of the other list instead of LX during the process of calculating the differential motion vector of LX, the other list is represented as LY.
[0085] When using the motion vector mvLX of LX (step S102 in FIG. 19: YES), candidates for the predicted motion vector of LX are calculated to construct the predicted motion vector candidate list mvpListLX of LX (step S103 in FIG. 19). In the normal predicted motion vector mode derivation unit 301, the spatial predicted motion vector candidate derivation unit 321, the temporal predicted motion vector candidate derivation unit 322, the history predicted motion vector candidate derivation unit 323, and the predicted motion vector candidate supplement unit 325 derive candidates for a plurality of predicted motion vectors to construct the predicted motion vector candidate list mvpListLX. The detailed processing procedure of step S103 in FIG. 19 will be described later using the flowchart of FIG. 20.
[0086] Subsequently, the predicted motion vector candidate selection unit 327 selects the predicted motion vector mvpLX of LX from the predicted motion vector candidate list mvpListLX of LX (step S104 in FIG. 19). Here, in the predicted motion vector candidate list mvpListLX, one element (the i-th element counted from 0) is represented as mvpListLX[i]. The motion vector mvLX and the predicted The difference between each predicted motion vector candidate mvpListLX[i] stored in the list mvpListLX is calculated for each of the resulting differential motion vectors. When these differential motion vectors are encoded the amount of code is calculated for each element (predicted motion vector candidate) of the predicted motion vector candidate list mvpListLX And among each element registered in the predicted motion vector candidate list mvpListLX the predicted motion vector candidate mvpListLX[i] with the minimum amount of code for each candidate of the predicted motion vector is selected as the predicted motion vector mvpLX, and its index i is obtained. Among the predicted motion vector candidates in the candidate list mvpListLX, if there are multiple candidates for the predicted motion vector with the minimum generated code amount then the predicted motion vector candidate mvpListLX[i] represented by the smaller number of the index i in the predicted motion vector candidate list mvpListLX is selected as the optimal predicted motion vector mvpLX, and its index i is obtained.
[0087] 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 as mvdLX = mvLX - mvpLX (step S105 in FIG. 19).
[0088] <Normal Predicted Motion Vector Mode Derivation Unit (Normal AMVP): Explanation on the Decoding Side> Next, with reference to FIG. 25, the normal predicted motion vector mode processing procedure on the decoding side will be described. 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 The motion vectors used in the inter prediction of the normal prediction motion vector mode are calculated for each of L0 and L1 respectively (Steps S201 to S206 in FIG. 25). Specifically, when the prediction mode PredMode of the block to be processed is inter prediction (MODE_INTER) and the inter prediction mode of the block to be processed is L0 prediction (Pred_L0), a prediction motion vector candidate list mvpListL0 for L0 is calculated and a prediction motion vector mvpL0 is selected, and a motion vector mvL0 for L0 is calculated. When the inter prediction mode of the block to be processed is L1 prediction (Pred_L1), a prediction motion vector candidate list mvpListL1 for L1 is calculated and a prediction motion vector mvpL1 is selected, and a motion vector mvL1 for L1 is calculated. When the inter prediction mode of the block to be processed is bi-prediction (Pred_BI) , both L0 prediction and L1 prediction are performed. A prediction motion vector candidate list mvpListL0 for L0 is calculated and a prediction motion vector mvpL0 for L0 is selected, and a motion vector mvL0 for L0 is calculated. At the same time a prediction motion vector candidate list mvpListL1 for L1 is calculated, a prediction motion vector mvpL1 for L1 is calculated, and a motion vector mvL1 for L1 is calculated respectively. Similar to the encoding side, on the decoding side, motion vector calculation processing is performed for each of L0 and L1 , but it is common processing for both L0 and L1. Therefore, in the following description, L0 and
[0089] L1 are represented as a common LX. LX represents the inter prediction mode used for the inter prediction of the encoded block to be processed. 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, in the process of calculating the motion vector of LX it is common processing for both L0 and L1. Therefore, in the following description, L0 and L1 are represented as a common LX. LX represents the inter prediction mode used for the inter prediction of the encoded block to be processed. 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, in the process of calculating the motion vector of LX During the process, instead of using the same reference list as LX to be calculated, the information of the other reference list is referred to, and the other reference list is represented as LY. When using the motion vector mvLX of LX (step S202 in FIG. 25: YES), candidates for the predicted motion vector of LX are calculated, and a predicted motion vector candidate list mvpListLX for LX is constructed (step S203 in FIG. 25). In the normal predicted motion vector mode derivation unit 401, a spatial predicted motion vector candidate derivation unit 421, a temporal predicted motion vector candidate derivation unit 422, a history predicted motion vector candidate derivation unit 423, and a predicted motion vector candidate supplement unit 425 calculate candidates for a plurality of predicted motion vectors and construct a predicted 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.
[0090] When using the motion vector mvLX of LX (step S202 in FIG. 25: YES), candidates for the predicted motion vector of LX are calculated, and a predicted motion vector candidate list mvpListLX for LX is constructed (step S203 in FIG. 25). Candidates for the predicted motion vector of LX are calculated, and a predicted motion vector candidate list mvpListLX for LX is constructed (step S203 in FIG. 25). In the normal predicted motion vector mode derivation unit 401, a spatial predicted motion vector candidate derivation unit 421, a temporal predicted motion vector candidate derivation unit 422, a history predicted motion vector candidate derivation unit 423, and a predicted motion vector candidate supplement unit 425 calculate candidates for a plurality of predicted motion vectors and construct a predicted motion vector candidate list mvpListLX. In the normal predicted motion vector mode derivation unit 401, a spatial predicted motion vector candidate derivation unit 421, a temporal predicted motion vector candidate derivation unit 422, a history predicted motion vector candidate derivation unit 423, and a predicted motion vector candidate supplement unit 425 calculate candidates for a plurality of predicted motion vectors and construct a predicted motion vector candidate list mvpListLX. In the normal predicted motion vector mode derivation unit 401, a spatial predicted motion vector candidate derivation unit 421, a temporal predicted motion vector candidate derivation unit 422, a history predicted motion vector candidate derivation unit 423, and a predicted motion vector candidate supplement unit 425 calculate candidates for a plurality of predicted motion vectors and construct a predicted motion vector candidate list mvpListLX. In the normal predicted motion vector mode derivation unit 401, a spatial predicted motion vector candidate derivation unit 421, a temporal predicted motion vector candidate derivation unit 422, a history predicted motion vector candidate derivation unit 423, and a predicted motion vector candidate supplement unit 425 calculate candidates for a plurality of predicted motion vectors and construct a predicted 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. The detailed processing procedure of step S203 in FIG. 25 will be described later with reference to the flowchart of FIG. 20.
[0091] Subsequently, the predicted motion vector candidate selection unit 426 selects the candidate mvpListLX[mvpIdxLX] of the predicted motion vector corresponding to the index mv pIdxLX of the predicted motion vector decoded and supplied by the bit sequence decoding unit 201 from the predicted motion vector candidate list mvpListLX as the selected predicted motion vector mvpLX (step S204 in FIG. 25). Subsequently, the predicted motion vector candidate selection unit 426 selects the candidate mvpListLX[mvpIdxLX] of the predicted motion vector corresponding to the index mv pIdxLX of the predicted motion vector decoded and supplied by the bit sequence decoding unit 201 from the predicted motion vector candidate list mvpListLX as the selected predicted motion vector mvpLX (step S204 in FIG. 25). Subsequently, the predicted motion vector candidate selection unit 426 selects the candidate mvpListLX[mvpIdxLX] of the predicted motion vector corresponding to the index mv pIdxLX of the predicted motion vector decoded and supplied by the bit sequence decoding unit 201 from the predicted motion vector candidate list mvpListLX as the selected predicted motion vector mvpLX (step S204 in FIG. 25). Subsequently, the predicted motion vector candidate selection unit 426 selects the candidate mvpListLX[mvpIdxLX] of the predicted motion vector corresponding to the index mv pIdxLX of the predicted motion vector decoded and supplied by the bit sequence decoding unit 201 from the predicted motion vector candidate list mvpListLX as the selected predicted motion vector mvpLX (step S204 in FIG. 25).
[0092] Subsequently, the motion vector addition unit 427 adds the differential motion vector mvdLX of LX and the predicted motion vector mvpLX of LX decoded and supplied by the bit sequence decoding unit 201, and calculates the motion vector mvLX of LX as mvLX = mvpLX + mvdLX (step S205 in FIG. 25).
[0093] <Normal predicted motion vector mode derivation part (normal AMVP): Motion vector prediction method> FIG. 20 shows a normal prediction motion vector mode derivation process of the image coding apparatus according to the embodiment of the present invention. Functions common to the motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 401 of the image decoding device 13 is a flowchart showing a processing procedure of a normal predicted motion vector mode derivation process having the above-mentioned steps.
[0094] The normal prediction motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 40 1, a motion vector predictor candidate list mvpListLX is provided. The mvpListLX has a list structure and is a prediction vector that indicates the location within the predicted motion vector candidate list. A motion vector index and a motion vector predictor candidate corresponding to the index are used as elements. The predicted motion vector index number starts from 0. The motion vector predictor candidate list mvpListLX is stored in a storage area of the motion vector predictor candidate list mvpListLX. In this embodiment, the motion vector predictor candidate list mvpListLX stores at least At least two predicted motion vector candidates (inter prediction information) can be registered. In addition, the motion vector predictor registered in the motion vector predictor candidate list mvpListLX is The variable numCurrMvpCand, which indicates the number of candidates, is set to 0.
[0095] The spatial prediction motion vector candidate derivation units 321 and 421 derive the spatial prediction motion vector candidate from the adjacent block on the left. In this process, a candidate predicted motion vector is derived from the adjacent block on the left ( Whether inter prediction information (A0 or A1), i.e., whether a predicted motion vector candidate is available A flag indicating whether the motion vector is a predicted motion vector mv Derive LXA, and add the derived mvLXA to the predicted motion vector candidate list mvpListLX (step S301 in FIG. 20). Note that X is 0 for L0 prediction and X is 1 for L1 prediction (the same applies hereinafter). Subsequently, the spatial predicted motion vector candidate derivation units 321 and 421 derive candidates for the predicted motion vector from the blocks adjacent above. In this process, with reference to the inter-prediction information of the blocks adjacent above (B0, B1, or B2 in FIG. 11), that is, a flag indicating whether the predicted motion vector candidate is available, as well as the motion vector, reference index, etc., the predicted motion vector mvLXB is derived. If the derived mvLXA and mvLXB are not equal, mvLXB is added to the predicted motion vector candidate list mvpListLX (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 adjacent blocks to be referred to are different. A flag availableFlagLXN indicating whether the predicted motion vector candidate of the coded block is available, and the motion vector mvLXN, reference index refIdxN (N indicates A or B, the same applies hereinafter) are derived. Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m
[0096] Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Subsequently, the temporal predicted motion vector candidate derivation units 322 and 422 derive candidates for the predicted motion vector from the blocks in pictures with different times from the current picture to be processed. In this process, a flag availableFlagLXCol indicating whether the predicted motion vector candidate of the coded block in a picture at a different time is available, and the motion vector mvLXCol, reference index refIdxCol, reference list listCol are derived, and mvLXCol is added to the predicted motion vector candidate list m Add it to vpListLX (step S303 in FIG. 20).
[0097] Note that time prediction is performed in units of sequence (SPS), picture (PPS), or slice It is assumed that the processing of the motion vector candidate derivation units 322 and 422 can be omitted.
[0098] 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 details of the registration processing procedure in this step S304 will be described later using the flowchart in FIG. 29.
[0099] Subsequently, the motion vector candidate replenishment units 325 and 425 add motion vector candidates with a predetermined value such as (0, 0) until the motion vector candidate list mv pListLX is filled (S305 in FIG. 20).
[0100] <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.
[0101] 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.
[0102] FIG. 21 is a flowchart for explaining the procedure of the normal merge mode derivation process, which has common functions in the normal merge mode derivation unit 302 of the image encoding apparatus and the normal merge mode derivation unit 402 of the image decoding apparatus according to the embodiment of the present invention. The following describes the procedure of the normal merge mode derivation process. In the following description, unless otherwise specified, the case where the slice type slice_type is a B slice will be described, but it is also applicable to the case of a P slice. However, when the slice type slice_type is a 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). Therefore, the processing related to L1 can be omitted. The normal merge mode derivation unit 302 and the normal merge mode derivation unit 402 are provided with a merge candidate list mergeCandList. The merge candidate list mergeCandList has a list structure, and is provided with a merge index indicating the location inside the merge candidate list and a storage area for storing merge candidates corresponding to the index as elements. 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 merge candidate at the merge index i registered in the merge candidate list mergeCandList will be represented as mergeCandList[i]. In this embodiment, it is assumed that the merge candidate list mergeCandList can register at least six merge candidates (inter prediction information). Further, the merge candidates registered in the merge candidate list mergeCandList
[0103] The following will explain each process in sequence. In the following explanation, unless otherwise specified, the case where the slice type slice_type is a B slice will be described, but it is also applicable to the case of a P slice. However, when the slice type slice_type is a 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). Therefore, the processing related to L1 can be omitted. The following will explain the case where the slice type slice_type is a B slice, but it is also applicable to the case of a P slice. However, when the slice type slice_type is a 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). Therefore, the processing related to L1 can be omitted. However, when the slice type slice_type is a 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). Therefore, the processing related to L1 can be omitted. As the inter prediction mode, there is only L0 prediction (Pred_L0), and there is no L1 prediction (Pred_L1) or bi-prediction (Pred_BI). Therefore, the processing related to L1 can be omitted. As the inter prediction mode, there is only L0 prediction (Pred_L0), and there is no L1 prediction (Pred_L1) or bi-prediction (Pred_BI). Therefore, the processing related to L1 can be omitted.
[0104] The normal merge mode derivation unit 302 and the normal merge mode derivation unit 402 are provided with a merge candidate list mergeCandList. The merge candidate list mergeCandList has a list structure, and is provided with a merge index indicating the location inside the merge candidate list and a storage area for storing merge candidates corresponding to the index as elements. The merge candidate list mergeCandList has a list structure, and is provided with a merge index indicating the location inside the merge candidate list and a storage area for storing merge candidates corresponding to the index as elements. 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. 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 merge candidate at the merge index i registered in the merge candidate list mergeCandList will be represented as mergeCandList[i]. In this embodiment, the merge candidate list mergeCandList can register at least six merge candidates (inter prediction information). In this embodiment, the merge candidate list mergeCandList can register at least six merge candidates (inter prediction information). Furthermore, the merge candidates registered in the merge candidate list mergeCandList Set 0 to the variable numCurrMergeCand indicating the number of merge candidates.
[0105] In the spatial merge candidate derivation units 341 and 441, from the encoded information stored in the encoded information storage memory 111 of the image encoding apparatus or the encoded information storage memory 205 of the image decoding apparatus, for each block adjacent to the processing target block (B1, A1, B0, A0, B2 in FIG. 11), derive spatial merge candidates from B1, A1, B0, A0, B2 in this order, and register the derived spatial merge candidates in the merge candidate list mergeCandList (step S401 in FIG. 21). Here, define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. (step S401 in FIG. 21). Here, define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. Define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. Define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. Define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. Define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. Define N that indicates any of B1, A1, B0, A0, B2 or the temporal merge candidate Col. Derive a flag availableFlagN indicating whether the inter prediction information of block N can be used as a spatial merge candidate, a reference index refIdxL0N of L0 of the spatial merge candidate N and a 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, and a motion vector mvL0N of L0 and a motion vector mvL1N of L1. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived. However, in the present embodiment, since merge candidates are derived without referring to the inter prediction information of the blocks included in the encoding block to be processed, spatial merge candidates using the inter prediction information of the blocks included in the encoding block to be processed are not derived.
[0106] Subsequently, in the temporal merge candidate derivation units 342 and 442, derive temporal merge candidates from pictures at different times, and add the derived temporal merge candidates to the merge candidate Subsequently, in the temporal merge candidate derivation units 342 and 442, derive temporal merge candidates from pictures at different times, and add the derived temporal merge candidates to the merge candidate Register it in the list mergeCandList (step S402 in FIG. 21). Whether the time merge candidate can be used is indicated by the flag availableFlagCol, whether the L0 prediction of the time merge candidate is performed is indicated by the L0 prediction flag predFlagL0Col and whether the L1 prediction is performed is indicated by the L1 prediction flag predFlagL1Col, and the motion vector mvL0Col of L0 and the motion vector mvL1Col of L1 are derived.
[0107] Note that the processing of the time merge candidate derivation unit 342 and the time merge candidate derivation unit 442 can be omitted in units of sequence (SPS), picture (PPS), or slice which is assumed.
[0108] Subsequently, in the history merge candidate derivation unit 345 and the history merge candidate derivation unit 445, the history prediction motion vector candidates registered in the history prediction motion vector candidate list HmvpCandList are merged and registered in the candidate list mergeCandList (step S403 in FIG. 21). Note that when the number of merge candidates numCurrMergeC and registered in the merge candidate list mergeCandList is smaller than the maximum number of merge candidates MaxNumMergeCand, the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandL ist is used as the upper limit of the maximum number of merge candidates MaxNumMergeCa nd, and the history merge candidates are derived and registered in the merge candidate list mergeCandList. That is.
[0109] Subsequently, in the average merge candidate derivation unit 344 and the average merge candidate derivation unit 444, average merge candidates are derived from the merge candidate list mergeCandList, and the derived average merge candidates are merged Add it to the frame candidate list mergeCandList (step S404 in FIG. 21). Note that when the number of merge candidates numCurrMergeC and registered in the merge candidate list mergeCandList is smaller than the maximum number of merge candidates MaxNumMergeCand, the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandL ist is used as the upper limit to derive the average merge candidate, which is then registered in the merge candidate list mergeCandList. Here, the average merge candidate is a new merge candidate having a motion vector obtained by averaging the motion vectors of the first merge candidate and the second merge candidate registered in the merge candidate list mergeCandList for each of L0 prediction and L1 prediction. Here, the average merge candidate is a new merge candidate having a motion vector obtained by averaging the motion vectors of the first merge candidate and the second merge candidate registered in the merge candidate list mergeCandList for each of L0 prediction and L1 prediction. Here, the average merge candidate is a new merge candidate having a motion vector obtained by averaging the motion vectors of the first
[0110] Subsequently, in the merge candidate replenishment unit 346 and the merge candidate replenishment unit 446, when the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList is smaller than the maximum number of merge candidates M axNumMergeCand, additional merge candidates are derived with the number of merge candidates numCurrMergeCand registered in the merge candidate list mergeCandList as the upper limit of the maximum number of merge candidates MaxNumMergeCand, and are registered in the merge candidate list mergeCandList (step S4 05 in FIG. 21). With the maximum number of merge candidates MaxNumMergeCand as the upper limit, in the P slice, a merge candidate with a prediction mode of L0 prediction (Pred_L0) where the motion vector has a value of (0, 0) is added. In the B slice, a merge candidate with a prediction mode of bi-prediction (Pred_BI) where the motion vector has a value of (0, 0) is added. In the B slice, a merge candidate with a prediction mode of bi-prediction (Pred_BI) where the motion vector has a value of (0, 0) Add merge candidates. The reference index when adding merge candidates is different from the reference index that has already been added.
[0111] Subsequently, the merge candidate selection unit 347 and the merge candidate selection unit 447 select merge candidates from the merge candidates registered in the merge candidate list mergeCandList. The merge candidate selection unit 347 on the encoding side selects merge candidates by calculating the code amount and the distortion amount, 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 306 via the inter-prediction mode determination unit 305. On the other hand, the merge candidate selection unit 447 on the decoding side selects a merge candidate based on the decoded merge index and supplies the selected merge candidate to the motion compensation prediction unit 406.
[0112] <Temporal prediction motion vector> Prior to the description of the temporal prediction motion vector, the temporal context of the picture will be described. Fig. 38A shows the relationship between pictures when the processing target encoded block and the processing target picture are temporally different. For the processing of the temporal prediction motion vector for the processing target picture, a specific processed picture referred to is defined as ColPic. ColPic is specified by the syntax. Also, Fig. 38B shows the processed encoded blocks existing at the same position as the processing target encoded block and in its vicinity in ColPic.
[0113] Next, 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. 39.
[0114] First, derive ColPic (step S4201). Next, derive the encoded block colCb and obtain the encoding information (step S4202). colCb is the encoded block that exists at the lower right of the same position as the processing target encoded block within ColPic. This encoded block corresponds to the encoded block T0 in FIG. 38B. However, if the prediction mode PredMode of this colCb is not available or is intra prediction (MODE_INTRA), the encoded block that exists at the center lower right of the same position as the processing
[0115] Next, for each reference list, derive the inter prediction information (S4203, S4204). Here, for the encoded block colCb, derive the motion vector mvLXCol for each reference list and the flag availableFlagLXCol indicating whether the encoding information is valid. LX indicates the reference list, where LX becomes L0 for the derivation of reference list 0 and LX becomes L1 for the derivation of reference list 1. When the inter prediction information is not available, availableFlagLXCol = 0 and mvLXCol = (0, 0). On the other hand, when the inter prediction information is available, availableFlagLXCol = 1. Also, depending on the prediction mode of the encoded block colCb, etc., select the motion vector of L0 or L1 of colCb, and the scaled version of that motion
[0116] If availableFlagLXCol=1, mvLXCol is set to the normal predicted motion vector mode. The motion vector predictor candidate list mvpListLX is added as a candidate in the motion vector predictor derivation unit 301 ( S4205). With the above, the process of the temporal motion vector predictor candidate derivation unit 322 ends.
[0117] Temporal motion vector predictor candidate in the normal motion vector predictor mode derivation unit 401 in FIG. The operation of the derivation unit 422 is the same as that of the temporal motion vector predictor candidate derivation unit 322 described above. , explanation will be omitted.
[0118] The operation of the temporal merge candidate derivation unit 342 in the normal merge mode derivation unit 302 in FIG. The operation is almost the same as that of the temporal motion vector predictor candidate derivation unit 322 described above. The only difference is that S4205 of 39 operates as follows: Flag availableFlagL0C ol, or if flag availableFlagL1Col is 1, mvL0Col and mvL1Col are Add it as a candidate to the merge candidate list mergeCandList in the merge mode derivation part ( S4205).
[0119] The operation of the temporal merge candidate derivation unit 442 in the normal merge mode derivation unit 402 in FIG. , is the same as the temporal merge candidate derivation unit 342 described above, and therefore a description thereof will be omitted.
[0120] <Update of historical motion vector prediction candidate list> Next, the coding information storage memory 111 on the coding side and the coding information storage memory 20 on the decoding side Methods for initializing and updating the historical motion vector predictor candidate list (HmvpCandList) in preparation for 5 This will be described in detail. FIG. 26 is a flowchart for explaining the initialization / updating procedure of the history prediction motion vector candidate list.
[0121] In this embodiment, the update of the history prediction motion vector candidate list HmvpCandList is assumed to be performed in the coded information storage memory 111 and the coded information storage memory 205. An update unit for the history prediction motion vector candidate list may be provided in the inter prediction unit 102 and the inter prediction unit 203 to update the history prediction motion vector candidate list HmvpCandList.
[0122] At the start of a slice, the history prediction motion vector candidate list HmvpCandList is initially set. On the encoding side, when the prediction method determination unit 105 selects the normal prediction motion vector mode or the normal merge mode, the history prediction motion vector candidate list HmvpCandList is updated. On the decoding side, when the prediction information decoded by the bit sequence decoding unit 201 is in the normal prediction motion vector mode or the normal merge mode, the history prediction motion vector candidate list HmvpCandList is updated.
[0123] The inter prediction information used when performing inter prediction in the normal prediction motion vector mode or the normal merge mode is registered as the inter prediction information candidate hMvpCand in the history prediction motion vector candidate list HmvpCandList. The inter prediction information candidate hMvpCand includes the reference index refIdxL0 of L0 and the reference index refIdxL1 of L1, the L0 prediction flag predFlagL0 indicating whether L0 prediction is performed, the L1 prediction flag predFlagL1 indicating whether L1 prediction is performed, the motion vector mvL0 of L0, and the motion vector mvL1 of L1.
[0124] Stored in the encoding information storage memory 111 on the encoding side and the encoding information storage memory 205 on the decoding side The elements registered in the history prediction motion vector candidate list HmvpCandList (that is, the inter-prediction information), among which there is inter-prediction information with the same value as the inter-prediction information candidate hMvpCand If there is inter-prediction information with the same value as the inter-prediction information candidate hMvpCand, delete that element from the history prediction motion vector candidate list HmvpCandList On the other hand, if there is no inter-prediction information with the same value as the inter-prediction information candidate hMvpCand Delete the element at the head of the history prediction motion vector candidate list HmvpCandList, and add the inter-prediction information candidate hMvpCand to the end of the history prediction motion vector candidate list HmvpCandList
[0125] 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 encoding information storage memory 205 on the decoding side of the present invention is set to 6
[0126] First, initialize the history prediction motion vector candidate list HmvpCandList in units of slices At the head of the slice, add history prediction motion vector candidates to all elements of the history prediction motion vector candidate list HmvpCandList, 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. 26). Note that such numerical values are for example only. In an actual implementation on, for example, a computer system, the numerical values may be changed as necessary. The same applies to other numerical values
[0127] Note that the initialization of the history prediction motion vector candidate list HmvpCandList is performed in units of slices (the first coded block of the slice), but it may also be performed in units of pictures, tiles, or tree blocks rows.
[0128] Figure 40 is a table showing an example of the history prediction motion vector candidates added by the initialization of 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. For the history prediction motion vector index from (the number of history prediction motion vector candidates NumHmvpCand - 1) to 0, 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 is 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 , duplication between history prediction motion vector candidates is permitted, and the value of 0 is set for refIdxLX. Values are set for all of 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 assigning a small value of the reference index with a generally 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, starting from candidates with large values, the coding efficiency can be improved. .
[0129] In addition, by filling the history prediction motion vector candidate list in units of slices with history prediction motion vector candidates, the number of history prediction motion vector candidates can be treated as a fixed value, so that, for example, the history prediction motion vector candidate derivation process and the history merge candidate derivation process can be simplified. Here, the value of the motion vector is generally set to (0, 0) with a high selection probability, but any predetermined value may be used. For example, values such as (4, 4), (0, 32), (-128, 0), etc. may be used to improve the encoding efficiency of the differential motion vector, or multiple predetermined values may be set to improve the encoding efficiency of the differential motion vector.
[0130] Here, the value of the motion vector is generally set to (0, 0) with a high selection probability, but any predetermined value may be sufficient. For example, values such as (4, 4), (0, 32), (-128, 0), etc. may be used to improve the encoding efficiency of the differential motion vector, or multiple predetermined values may be set to improve the encoding efficiency of the differential motion vector. or multiple predetermined values may be set to improve the encoding efficiency of the differential motion vector.
[0131] In addition, the history prediction motion vector index starts from (the number of history prediction motion vector candidates NumHmvpC and - 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). However, the history prediction motion vector index may start from 0.
[0132] FIG. 41 is a table showing another example of the history prediction motion vector candidates added by the initialization of 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 2. In this example, in each element of the history prediction motion vector candidate list Hmv pCandList, so that there is no duplication between the history prediction motion vector candidates, the inter - prediction information with different reference indices or motion vector values is used as the history prediction motion vector so that each element of the list HmvpCandList has no duplication between the history prediction motion vector candidates, and the inter - prediction information with different reference indices or motion vector values is used as the history prediction motion vector Add it as a candidate for the history prediction motion vector to fill the history prediction motion vector candidate list. 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 a value incremented by 1 from 0 to (the number of reference pictures numRefI dx - 1). 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 history prediction motion vector candidates, and set the value of the number NumHmvpCand of history prediction motion vector candidates to a fixed value to eliminate invalid history prediction motion vector candidates. 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 history prediction motion vector candidates, and set the value of the number NumHmvpCand of history prediction motion vector candidates to a fixed value to eliminate invalid history prediction motion vector candidates. 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 history prediction motion vector candidates, and set the value of the number NumHmvpCand of history prediction motion vector candidates to a fixed value to eliminate invalid history prediction motion vector candidates. Set all values to the number NumHmvpCand of history prediction motion vector candidates, and set the value of the number NumHmvpCand of history prediction motion vector candidates to a fixed value to eliminate invalid history prediction motion vector candidates. By filling the history prediction motion vector candidate list with non - overlapping history prediction motion vector candidates in units of slices in this way, further, 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 implemented in units of coded blocks can be omitted, and the processing amount can be reduced.
[0133] In this way, by filling the history prediction motion vector candidate list with non - overlapping history prediction motion vector candidates in units of slices, further, 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 implemented 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) and (1, 0), but if there is no overlap between the history prediction motion vector candidates, the values of the motion vectors can be made larger. Here, the values of the motion vectors are set to small values such as (0, 0) and (1, 0), but if there is no overlap between the history prediction motion vector candidates, the values of the motion vectors can be made larger. By filling the history prediction motion vector candidate list with non - overlapping history prediction motion vector candidates in units of slices in this way, further, 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 implemented in units of coded blocks can be omitted, and the processing amount can be reduced.
[0134] Here, the values of the motion vectors are set to small values such as (0, 0) and (1, 0), but if there is no overlap between the history prediction motion vector candidates, the values of the motion vectors can be made larger. Here, the values of the motion vectors are set to small values such as (0, 0) and (1, 0), but if there is no overlap between the history prediction motion vector candidates, the values of the motion vectors can be made larger.
[0135] Also, although it is said that the history prediction motion vector index starts from (the number of history prediction motion vector candidates NumHmvpC and - 1) and the reference index refIdxLX (X is 0 or 1) is set to a value incremented by 1 from 0 to (the number of reference pictures numRefIdx - 1), the history prediction motion vector index may start from 0. Also, although it is said that 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 a value incremented by 1 from 0 to (the number of reference pictures numRefIdx - 1), the history prediction motion vector index may start from 0.
[0136] Figure 42 is a table showing another example of the history prediction motion vector candidate added by the initialization of the history prediction motion vector candidate list HmvpCandList.
[0137] An example in the case where the slice type is a B slice is shown. In this example, in order to avoid duplication between the history prediction motion vector candidates in each element of the history prediction motion vector candidate list HmvpCandList, inter prediction information with a reference index of 0 and different motion vector values is added as a history prediction motion vector candidate to fill the history prediction motion vector candidate list. 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 0. By setting all values to the number NumHmvpCand of the history prediction motion vector candidates and setting the value of the number NumHmvpCand of the history prediction motion vector candidates to a fixed value, invalid history prediction motion vector candidates are eliminated.
[0138] In this way, by setting the reference index to 0, the process can be simplified because it can be initialized without considering the number of reference pictures.
[0139] Here, the value of the motion vector is a multiple of 2, but other values may also be used as long as the reference index is 0 and there is no duplication between the history prediction motion vector candidates.
[0140] Also, 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) ranges from 0 to (the number of reference pictures It was assumed that the value incremented by 1 up to the number numRefIdx of [ja], but the history prediction motion The vector index may start from 0.
[0141] Subsequently, for each encoded block in the slice, the following history prediction motion vector candidate list Hmvp The update process of the CandList is repeatedly performed (steps S2102 to S2107 in FIG. 26).
[0142] First, initial settings are made for each encoded block. A flag identicalCandExist indicating whether there is an identical candidate is set to FALSE (false), and a deletion target index removeIdx indicating the candidate to be deleted is set to 0 (step S2103 in FIG. 26).
[0143] It is determined whether there is a candidate hMvpCand for inter prediction information to be registered (step S2104 in FIG. 26). When it is determined by the prediction method determination unit 105 on the encoding side that it is in the normal prediction motion vector mode or the normal merge mode, or when it is decoded by the bit sequence decoder 201 on the decoding side in the normal prediction motion vector mode or the normal merge mode, the inter prediction information is set as the candidate hMvpCand for inter prediction information to be registered. When it is determined by the prediction method determination unit 105 on the encoding side that it is in the intra prediction mode, the sub-block prediction motion vector mode or the sub-block merge mode, or when it is decoded by the bit sequence decoder 201 on the decoding side in the intra prediction mode, the sub-block prediction motion vector mode or the sub-block merge mode, the update process of the history prediction motion vector candidate list HmvpCandList is not performed, and there is no candidate hMvpCand for inter prediction information to be registered. Whether there is a candidate hMvpCand for inter prediction information to be registered When it is determined by the prediction method determination unit 105 on the encoding side that it is in the intra prediction mode, the sub-block prediction motion vector mode or the sub-block merge mode, or when it is decoded by the bit sequence decoder 201 on the decoding side in the intra prediction mode, the sub-block prediction motion vector mode or the sub-block merge mode, the update process of the history prediction motion vector candidate list HmvpCandList is not performed, and there is no candidate hMvpCand for inter prediction information to be registered. Whether there is a candidate hMvpCand for inter prediction information to be registered is not performed, and there is no candidate hMvpCand for inter prediction information to be registered. Whether there is a candidate hMvpCand for inter prediction information to be registered hMvpCand exists If not, skip steps S2105 to S2106 (step S 2104: NO in Fig. 26). If there is an inter-prediction information candidate hMvpCand for registration, perform the processing below step S2105 (step S2104: YES in Fig. 26).
[0144] Here, in this embodiment, when encoded and decoded in the normal prediction motion vector mode, set the inter-prediction mode to hMvpCand and update the history prediction motion vector candidate list HmvpCand List. When encoded and decoded in the normal merge mode, configure not to update the history prediction motion vector candidate list HmvpCandList. Step S2104 in Fig. 26 may separate the determination process as in steps S2404 and S240 5 in the flowchart of Fig. 43. In step S2404, if it is not in the normal merge mode, proceed to step S2405; if it is in the normal merge mode, proceed to step S2408. In step S2405 of Fig. 43, if determined to be in the normal prediction motion vector mode by the prediction method determination unit 105 on the encoding side, or decoded as the normal prediction motion vector mode by the bit sequence decoding unit on the decoding side, set the inter-prediction mode to hMvpCand. If determined to be in the intra-prediction mode, sub-block prediction motion vector mode, or
[0145] sub-block merge mode by the prediction method determination unit 105 on the encoding side, or decoded as the intra-prediction mode, sub-block prediction motion vector mode, or sub-block merge mode by the bit sequence decoding unit on the decoding side, do not update the history prediction motion vector candidate list HmvpCandList, and There is no candidate hMvpCand for the inter-prediction information to be registered. If there is no candidate hMvpCand for the inter-prediction information to be registered, the process proceeds to step S2408. If there is a candidate hMvpCand for the inter-prediction information to be registered, the processing below step S2406 is performed. From step S2101 to step S2103 in FIG. 26 and from step S2401 to step S2403 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted. If there is no candidate hMvpCand for the inter-prediction information to be registered, the process proceeds to step S2408. If there is a candidate hMvpCand for the inter-prediction information to be registered, the processing below step S2406 is performed. From step S2101 to step S2103 in FIG. 26 and from step S2401 to step S2403 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2101 to step S2103 in FIG. 26 and from step S2401 to step S2403 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2101 to step S2103 in FIG. 26 and from step S2401 to step S2403 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted. From step S2105 to step S2107 in FIG. 26 and from step S2406 to step S2408 in FIG. 43, the same processing may be performed, so the description is omitted.
[0146] In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information. In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information. In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information. In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information. In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information. In this way, only when encoded and decoded as the normal prediction motion vector mode, the history prediction motion vector candidate list is updated, so there is no need to compare the motion information with the existing candidates in the history prediction motion vector candidate list, and the processing load is reduced. Since the normal prediction motion vector mode generates new motion information that is not present in the surrounding blocks by adding differential motion vectors, the possibility of duplication of motion information with the existing history prediction motion vector candidates is low even without performing the comparison of motion information.
[0147] Return to the description after step S2104 in FIG. 26.
[0148] Subsequently, it is determined whether there is an element (inter-prediction information) with the same value as the candidate hMvpCand for the inter-prediction information to be registered, that is, the same element, among the elements of the history prediction motion vector candidate list HmvpCandList (step S2105 in FIG. 26). FIG. 27 is a flowchart of this same element confirmation processing procedure. If the value of the number NumHmvpCand of the history prediction motion vector candidates is 0 Subsequently, it is determined whether there is an element (inter-prediction information) with the same value as the candidate hMvpCand for the inter-prediction information to be registered, that is, the same element, among the elements of the history prediction motion vector candidate list HmvpCandList (step S2105 in FIG. 26). FIG. 27 is a flowchart of this same element confirmation processing procedure. If the value of the number NumHmvpCand of the history prediction motion vector candidates is 0 Subsequently, it is determined whether there is an element (inter-prediction information) with the same value as the candidate hMvpCand for the inter-prediction information to be registered, that is, the same element, among the elements of the history prediction motion vector candidate list HmvpCandList (step S2105 in FIG. 26). FIG. 27 is a flowchart of this same element confirmation processing procedure. If the value of the number NumHmvpCand of the history prediction motion vector candidates is 0 Subsequently, it is determined whether there is an element (inter-prediction information) with the same value as the candidate hMvpCand for the inter-prediction information to be registered, that is, the same element, among the elements of the history prediction motion vector candidate list HmvpCandList (step S2105 in FIG. 26). FIG. 27 is a flowchart of this same element confirmation processing procedure. If the value of the number NumHmvpCand of the history prediction motion vector candidates is 0 In the case (step S2121 in FIG. 27: NO), the history prediction motion vector candidate list HmvpCa ndList is empty and there is no identical candidate, so steps S2122 to S2125 in FIG. 27 are skipped , and this identical element confirmation processing procedure is terminated. If the number NumHmvpC and of history prediction motion vector candidates is greater than 0 (YES in step S2121 of FIG. 27), the history prediction motion vec tor index hMvpIdx is from 0 to NumHmvpCand - 1, and the process of step S2123 is repeated (steps S2122 to S2125 in FIG. 27). First, the element HmvpCandList[hMvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is compared with the inter-prediction information candidate hM vpCand to check if they are the same (step S2123 in FIG. 27). If they are the same (step S2123 in FIG. 27: YES), the flag identicalCandE xist indicating whether there is an identical candidate is set to TRUE (true), the deletion target index remo veIdx indicating the position of the element to be deleted is set to the value of the current history prediction motion vector index hMvpIdx, and this identical element confirmation processing is terminated. If they are not the same (step S2123 in FIG. 27: NO), hMvpIdx is incremented by 1, and if the history prediction motion vector index hMvpIdx is less than or equal to NumHmvpCand - 1 , the processing after step S2123 is performed. Here, by filling the history prediction motion vector candidate list with history prediction motion vectors, step S2121 in FIG. 27 can be omitted. Returning to the flowchart of FIG. 26 again, the history prediction motion vector candidate list HmvpCandList of
[0149] Here, by filling the history prediction motion vector candidate list with history prediction motion vectors, step S2121 in FIG. 27 can be omitted. Thus, step S2121 in FIG. 27 can be omitted.
[0150] Returning to the flowchart of FIG. 26 again, the history prediction motion vector candidate list HmvpCandList Perform element shift and addition processing (step S2106 in FIG. 26). FIG. 28 shows the element shift / addition processing procedure flowchart of the history prediction motion vector candidate list HmvpCandList in step S2106 of FIG. 26. First, determine whether to add a new element after removing the elements stored in the history prediction motion vector candidate list HmvpCandList, or to 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. 28 ). If either the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) or the current number of candidates NumHmvpCand satisfies the condition of 6 (step S2141 in FIG. 28: YES), add a new element after removing the elements stored in the history 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 processing in step S2143. (Steps S2142~S2144 in FIG. 28 ). Copy the element of HmvpCandList[i] to HmvpCandList[i - 1] to shift the element forward (step S2143 in FIG. 28), and increment i by 1 (steps S2142~S2144 in FIG. 28). Subsequently, add the inter-prediction information candidate hMvpCand to HmvpCandList[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28). ). If either the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) or the current number of candidates NumHmvpCand satisfies the condition of 6 (step S2141 in FIG. 28: YES), add a new element after removing the elements stored in the history 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 processing in step S2143. (Steps S2142~S2144 in FIG. 28 ). Copy the element of HmvpCandList[i] to HmvpCandList[i - 1] to shift the element forward (step S2143 in FIG. 28), and increment i by 1 (steps S2142~S2144 in FIG. 28). Subsequently, add the inter-prediction information candidate hMvpCand to HmvpCandList[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28). ). Copy the element of HmvpCandList[i] to HmvpCandList[i - 1] to shift the element forward (step S2143 in FIG. 28), and increment i by 1 (steps S2142~S2144 in FIG. 28). Subsequently, add the inter-prediction information candidate hMvpCand to HmvpCandList[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28). 4). Add the inter-prediction information candidate hMvpCand to HmvpCandList[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 5) End the element shift and addition process of the history prediction motion vector candidate list HmvpCandList. On the other hand, if the flag identicalCandExist indicating whether the same candidate exists is TRUE (true) and neither condition of NumHmvpCand being 6 is satisfied (step S2141 in Figure 28: NO) , without removing the elements stored in the history prediction motion vector candidate list HmvpCandList, add the inter-prediction information candidate hMvpCand to the end of the history prediction motion vector candidate list (step S2146 in Figure 28). Here, the end of the history prediction motion vector candidate list refers to HmvpCandList[NumHmvpCand] at the NumHmvpCand-th position counted from 0. Also, increment NumHmvpCand by 1 and end the element shift and addition process of the history prediction motion vector candidate list HmvpCandList.
[0151] Here, the history prediction motion vector candidate list is applicable to both the prediction motion vector mode and the merge mode, but it may also be applicable to only one of them.
[0152] Figure 31 is a diagram for explaining an example of the update process of the history prediction motion vector candidate list. When adding a new element to the history prediction motion vector candidate list HmvpCandList with 6 registered elements (inter-prediction information), compare the new element with the elements in the history prediction motion vector candidate list HmvpCandList in order from the front element (Figure 31A). If the new element has the same value as the third element HMVP2 from the top of the history prediction motion vector candidate list HmvpCandList, delete the element HMVP2 from the history prediction motion vector candidate list HmvpCandList and move the subsequent elements HMVP3~HM Shift (copy) VP5 forward one by one, and add a new element to the end of the history prediction motion vector candidate list HmvpCandLis t (Figure 31B), and complete the update of the history prediction motion vector candidate list HmvpCan dList (Figure 31C).
[0153] <History Prediction Motion Vector Candidate Derivation Process> Next, the method for deriving the history prediction motion vector candidate 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 prediction motion vector candidate derivation unit 323 of the normal prediction motion vector mode derivation unit 301 on the encoding side and the history prediction motion vector candidate derivation unit 423 of the normal prediction motion vector mode derivation unit 401 on the decoding side, will be described in detail. FIG. 29 is a flowchart for explaining the history prediction motion vector candidate derivation processing procedure will be described in detail. FIG. 29 is a flowchart for explaining the history prediction motion vector candidate derivation processing procedure
[0154] If the number of current prediction motion vector candidates numCurrMvpCand is greater than or equal to the maximum number of elements (here it is 2) of the prediction motion vector candidate list mvpLis tLX or the number of history prediction motion vector candidates is NumHm vpCand has a value of 0 (NO in step S2201 of FIG. 29), the processing from step S22 02 to S2209 is omitted, and the history prediction motion vector candidate derivation processing procedure ends . If the number of current prediction motion vector candidates numCurrMvpCand is less than 2, which is the maximum number of elements of the prediction motion vector candidate list mvpLis , and the number of history prediction motion vector candidates NumHmvpCa nd has a value greater than 0 (YES in step S2201 of FIG. 29), the processing from step S2202 to S2209 is performed
[0155] Subsequently, the process from step S2203 to S2208 in FIG. 29 is repeated until the index i ranges from 1 to any small value among 4 and the number numCheckedHMVP of candidate historical prediction motion vectors. (Steps S2202 to S2209 in FIG. 29). When the current number numCurrMvpCand of candidate prediction motion vectors is 2 or more, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2203 in FIG. 29: NO), the processes from step S2204 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2203 in FIG. 29: YES), the processes after step S2204 in FIG. 29 are performed. (step S2203 in FIG. 29: NO), the processes from step S2204 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2203 in FIG. 29: YES), the processes after step S2204 in FIG. 29 are performed. (step S2203 in FIG. 29: YES), the processes after step S2204 in FIG. 29 are performed. (step S2203 in FIG. 29: YES), the processes after step S2204 in FIG. 29 are performed. (step S2203 in FIG. 29: YES), the processes after step S2204 in FIG. 29 are performed.
[0156] Subsequently, the processes from step S2205 to S2207 are respectively performed for Y being 0 and 1 (L0 and L1) (steps S2204 to S2208 in FIG. 29). When the current number numCurrMvpCand of candidate prediction motion vectors is 2 or more, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this historical prediction motion vector candidate derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors is less than 2, which is the maximum number of elements in the candidate prediction motion vector list mvpListLX
[0157] Subsequently, among the historical prediction motion vector candidate list HmvpCandList, the coding / decoding target motion An element having the same reference index as the reference index refIdxLX of the vector, and the predicted motion vector If it is an element different from any element of the vector list mvpListLX (step S2206 in FIG. 29 : YES), the element mvpL at the numCurrMvpCand-th position counted from 0 in the predicted motion vector candidate list istLX[numCurrMvpCand] adds the LY motion vector of the historical predicted motion vector candidate HmvpCandList[NumHmvpCand - i] (step S2207 in FIG. 29), and increments the number numCurrMvpCand of the current predicted motion vector candidates by 1. Among the historical predicted motion vector candidate lists HmvpCand List, an element having the same reference index as the reference index refIdxLX of the motion vector to be encoded / decoded and different from any element of the predicted motion vector list mvpListLX If there is no such element (step S2206 in FIG. 29: NO), the addition process in step S2207 is skipped. Here, when the update process of the historical predicted motion vector candidate list HmvpCandLi st is performed in the normal prediction motion vector mode and the update process of the historical predicted motion vector candidate list HmvpCandLi st is not performed in the normal merge mode, as shown in FIG. 44, the configuration may be such that the determination process for the same candidate, which is the process of step S
[0158] 2206 in FIG. 29, is not performed. This is because the update process of the historical predicted motion vector candidate list HmvpCandList in the normal merge mode is not performed, so it is less likely to include the same or highly correlated candidates. With such a configuration, since the determination process for the same candidate can be skipped, the processing amount can be suppressed. 2206 of FIG. 29 may be configured not to perform the determination process for the same candidate. This is because the update process of the historical predicted motion vector candidate list HmvpCandList in the normal merge mode is not performed, so it is less likely to include the same or highly correlated candidates. This is because the update process of the historical predicted motion vector candidate list HmvpCandList in the normal merge mode is not performed, so it is less likely to include the same or highly correlated candidates.
[0159] With such a configuration, since the determination process for the same candidate can be skipped, the processing amount can be suppressed. It becomes like this.
[0160] The above steps S2205 to S2207 in FIG. 29 are performed on both L0 and L1. (Steps S2204 to S2208 in FIG. 29). Increment the index i by 1. , the index i is the smaller value between 4 and the number of historical motion vector predictor candidates NumHmvpCand. In the following cases, the process from step S2203 onward is performed again (steps S2202 to S2204 in FIG. 29). S2209).
[0161] <History merge candidate derivation process> Next, the history merge candidate derivation unit 345 of the normal merge mode derivation unit 302 on the encoding side, This is a common process between the normal merge mode derivation unit 402 and the history merge candidate derivation unit 445. The history from the history merge candidate list HmvpCandList, which is the processing procedure of step S404 in The method of deriving merge candidates will now be described in detail. Figure 30 shows the history merge candidate derivation process. 1 is a flowchart for explaining the process.
[0162] First, an initialization process is performed (step S2301 in FIG. 30). Set the value of FALSE for each (rrMergeCand -1)th element and set the variable numOrigMergeCand to the current Sets numCurrMergeCand, the number of elements currently in the merge candidate list.
[0163] Next, set the initial value of the index hMvpIdx to 1, and then run the Then, the additional processing from step S2303 to step S2310 in FIG. 30 is repeated (FIG. 3 0 steps S2302 to S2311). Elements registered in the current merge candidate list If the number numCurrMergeCand is less than or equal to (the maximum number of merge candidates MaxNumMergeCand - 1), perform merging Since merge candidates have been added to all elements of the candidate list, end this historical merge candidate derivation process (NO in step S2303 of FIG. 30). If the number numCurrMergeCand of elements registered in the current merge candidate list is less than or equal to (the maximum number of merge candidates MaxNumMergeCand - 1), perform the processing after step S2304. Set FALSE (false) to sameMotion (step S2304 of FIG. 30). Subsequently, set the initial value of index i to 0, and starting from this initial value perform the processing of steps S2306 and S2307 in FIG. 30 up to (numOrigMergeCand - 1) (S2305 - S2308 in FIG. 30). Compare whether the element HmvpCandList[NumHmvpCand - hMvpIdx] at the (NumHmvpCand - hMvpIdx) - th position counted from 0 in the historical motion vector prediction candidate list is the same as the element mergeCandList[i] at the i - th position counted from 0 in the merge candidate list (step S2306 of FIG. 30). (step S2306 of FIG. 30). (step S2306 of FIG. 30). (step S2306 of FIG. 30). (step S2306 of FIG. 30). (step S2306 of FIG. 30).
[0164] The same value of merge candidates means that the values of all constituent elements (inter - prediction mode, reference index, motion vector) of the merge candidate are the same. When the merge candidates have the same value and isPruned[i] is FALSE (YES in step S2306 of FIG. 30), set both sameMotion and isPruned[i] to TRUE (true) (step S2307 of FIG. 30). When they are not the same value (NO in step S2306 of FIG. 30), skip the processing of step S2307. Repeat from step S2305 to step S2308 in FIG. 30 (step S2306 of FIG. 30). (step S2307 of FIG. 30). (step S2307 of FIG. 30). (step S2307 of FIG. 30). When the process is completed, compare whether sameMotion is FALSE (false) (step S230 in FIG. 30 9). If sameMotion is FALSE (false) (YES in step S2309 of FIG. 30), that is, from 0 of the history prediction motion vector candidate list element HmvpCandList[NumHmvpCand - hMvpIdx] counted (NumHmvpCand - hMvpIdx) is not present in mergeCandList, so the merge candidate element HmvpCandList[NumHmvpCand - hMvpIdx] counted (NumHmvpCand - hMvpIdx) from 0 of the history prediction motion vector candidate list is added to mergeCandList[numCurrMergeCand] at the numCurrMergeCand-th position of the merge candidate list, and numCurrMergeCand is incremented by 1 (step S2310 in FIG. 30). Increment the index hMvpIdx by 1 (step S23 02) in FIG. 30, and perform the loop processing of steps S2302 to S2311 in FIG. 30. Increment numCurrMergeCand by 1 (step S2310 in FIG. 30). Increment the index hMvpIdx by 1 (step S23 02) in FIG. 30, and perform the loop processing of steps S2302 to S2311 in FIG. 30. 02), and perform the loop processing of steps S2302 to S2311 in FIG. 30.
[0165] When the confirmation of all elements of the history prediction motion vector candidate list is completed, or when merge candidates are added to all elements of the merge candidate list, the derivation process of the present history merge candidate is completed. When all elements of the merge candidate list have merge candidates added, the derivation process of the present history merge candidate is completed. .
[0166] <Motion Compensation Prediction Processing> The motion compensation prediction unit 306 acquires the position and size of the block that is the target of the current prediction process in encoding. Also, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. Derive the reference index and motion vector from the acquired inter prediction information, and identify by the reference index in the decoded image memory 104 The motion compensation prediction unit 306 acquires the position and size of the block that is the target of the current prediction process in encoding. Also, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. Derive the reference index and motion vector from the acquired inter prediction information, and identify by the reference index in the decoded image memory 104 The motion compensation prediction unit 306 acquires the position and size of the block that is the target of the current prediction process in encoding. Also, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. Derive the reference index and motion vector from the acquired inter prediction information, and identify by the reference index in the decoded image memory 104 The motion compensation prediction unit 306 acquires the position and size of the block that is the target of the current prediction process in encoding. Also, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. Derive the reference index and motion vector from the acquired inter prediction information, and identify by the reference index in the decoded image memory 104 The reference picture to be used is moved from the same position as the image signal of the prediction block by the amount of the motion vector, and then the predicted signal is generated after obtaining the image signal at the moved position. In the case of prediction from a single reference picture such as L0 prediction or L1 prediction in inter prediction, the predicted signal obtained from one reference picture is used as the motion compensation prediction signal. When the inter prediction mode is prediction from two reference pictures such as BI prediction, the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios.
[0167] In inter prediction, when the inter prediction mode is prediction from a single reference picture such as L0 prediction or L1 prediction, the predicted signal obtained from one reference picture is used as the motion compensation prediction signal. When the inter prediction mode is prediction from two reference pictures such as BI prediction, the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios. the predicted signal obtained from the two reference pictures is weighted and averaged, and the weighted average is used as the motion compensation prediction signal, which is supplied to the prediction method determination unit 105. Here, the ratio of the weighted average for bi-prediction is set to 1:1, but other ratios may be used for weighted averaging. For example, the weighting ratio may be increased as the picture interval between the picture to be predicted and the reference picture becomes closer. Also, the calculation of the weighting ratio may be performed using a correspondence table between combinations of picture intervals and weighting ratios.
[0168] The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The motion compensation prediction unit 406 obtains 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 sub-block merge mode derivation unit 404 via the switch 408. The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207. The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The motion compensation prediction unit 406 obtains 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 sub-block merge mode derivation unit 404 via the switch 408. The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207. The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The motion compensation prediction unit 406 obtains 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 sub-block merge mode derivation unit 404 via the switch 408. The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207. The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The motion compensation prediction unit 406 obtains 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 sub-block merge mode derivation unit 404 via the switch 408. The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207. The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The motion compensation prediction unit 406 obtains 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 sub-block merge mode derivation unit 404 via the switch 408. The motion compensation prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposing unit 207.
[0169] <Regarding the inter prediction mode> The process of performing prediction from a single reference picture is defined as single prediction. In the case of single prediction, it is L0 prediction. Or perform prediction using either one of the two reference pictures registered in the reference lists L0 and L1, namely L1 prediction. One of them is used for prediction.
[0170] FIG. 32 shows a case of single prediction where the reference picture (RefL0Pic) of L0 is at a time earlier than the picture to be processed (CurPic). FIG. 33 shows a case of single prediction where the reference picture of L0 prediction is at a time later than the picture to be processed. Similarly, single prediction can also be performed by replacing the reference picture of L0 prediction in FIGS. 32 and 33 with the reference picture of L1 prediction (RefL1Pi c). The process of performing prediction from two reference pictures is defined as double prediction. In the case of double prediction, it is expressed as BI prediction using both L0 prediction
[0171] and L1 prediction. FIG. 34 shows a case of double prediction where the reference picture of L0 prediction is at a time earlier than the picture to be processed, and the reference picture of L1 prediction is at a time later than the picture to be processed. FIG. 35 shows a case of double prediction where the reference picture of L0 prediction and the reference picture of L1 prediction are at a time earlier than the picture to be processed. FIG. 36 shows a case of double prediction where the reference picture of L0 prediction and the reference picture of L1 prediction are at a time later than the picture to be processed. As described above, the relationship between the prediction types of L0 / L1 and time can be used without being limited to the case where L0 is in the past direction and L1 is in the future direction. Also, in the case of double prediction, the same reference picture can be used to perform L0 prediction and L1 prediction respectively. Note that the determination of whether to perform motion compensation prediction by single prediction or double prediction is determined based on information (e.g., a flag) indicating whether to use L0 prediction or not and whether to use L1 prediction or not. target picture. target picture. target picture. target picture. target picture.
[0172] Thus, the relationship between the prediction types of L0 / L1 and time can be used without being limited to the case where L0 is in the past direction and L1 is in the future direction. Also, in the case of double prediction, the same reference picture can be used to perform L0 prediction and L1 prediction respectively. Note that the determination of whether to perform motion compensation prediction by single prediction or double prediction is determined based on information (e.g., a flag) indicating whether to use L0 prediction or not and whether to use L1 prediction or not. and L1 prediction. FIG. 34 shows a case of double prediction where the reference picture of L0 prediction is at a time earlier than the picture to be processed, and the reference picture of L1 prediction is at a time later than the picture to be processed. FIG. 35 shows a case of double prediction where the reference picture of L0 prediction and the reference picture of L1 prediction are at a time earlier than the picture to be processed. FIG. 36 shows a case of double prediction where the reference picture of L0 prediction and the reference picture of L1 prediction are at a time later than the picture to be processed. used for both L0 prediction and L1 prediction. Note that the determination of whether to perform motion compensation prediction by single prediction or double prediction is determined based on information (e.g., a flag) indicating whether to use L0 prediction or not and whether to use L1 prediction or not. using L0 prediction or not and whether to use L1 prediction or not (e.g., a flag). using L0 prediction or not and whether to use L1 prediction or not (e.g., a flag).
[0173] <Regarding the reference index> In an embodiment of the present invention, in order to improve the accuracy of motion compensation prediction, it is possible to select an optimal reference picture from a plurality of reference pictures in motion compensation prediction. Therefore, the reference picture used in motion compensation prediction is used as a reference index, and the reference index is encoded into the bit stream together with the differential motion vector.
[0174] <Motion compensation processing based on the normal prediction motion vector mode> As shown also by the inter prediction unit 102 on the encoding side of FIG. 16, when the inter prediction information by the normal prediction motion vector mode derivation unit 301 is selected in the inter prediction mode determination unit 305, the motion compensation prediction unit 306 obtains this inter prediction information from the inter prediction mode determination unit 305, derives the inter prediction 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.
[0175] Similarly, as shown also by 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 decoding, the motion compensation prediction unit 406 obtains the inter prediction information by the normal prediction motion vector mode derivation unit 401, derives the inter prediction 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 superimposing unit 207.
[0176] <Motion Compensation Processing Based on Normal Merge Mode> The motion compensation prediction unit 306 is also shown by the inter prediction unit 102 on the encoding side in FIG. 16. As shown, when the inter prediction information by the normal merge mode derivation unit 302 is selected in the inter prediction mode determination unit 305, this inter prediction information is acquired from the inter prediction mode determination unit 305, and the inter prediction mode, reference index, and motion vector of the block currently being processed are derived to generate a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.
[0177] Similarly, the motion compensation prediction unit 406 is also shown by the inter prediction unit 203 on the decoding side in FIG. 22. As shown, when the switch 408 is connected to the normal merge mode derivation unit 402 during decoding, the inter prediction information by the normal merge mode derivation unit 402 is acquired, and the inter prediction mode, reference index, and motion vector of the block currently being processed are derived to generate a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the decoded image signal superposition unit 207.
[0178] <Motion Compensation Processing Based on Sub-Block Predicted Motion Vector Mode> The motion compensation prediction unit 306 is also shown by the inter prediction unit 102 on the encoding side in FIG. 16. As shown, when the inter prediction information by the sub-block predicted motion vector mode derivation unit 303 is selected in the inter prediction mode determination unit 305, this inter prediction information is acquired from the inter prediction mode determination unit 305, and the inter prediction mode, reference index, and motion vector of the block currently being processed are derived to generate a motion compensation prediction signal. The generated motion compensation prediction signal is The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.
[0179] Similarly, the motion compensation prediction unit 406 also performs the same processing as the inter prediction unit 203 on the decoding side in FIG. As shown, during the decoding process, a switch 408 controls the subblock prediction motion vector mode. When the sub-block prediction motion vector mode derivation unit 403 is connected to the The inter prediction information is obtained by the current block being processed. The generated code, reference index, and motion vector are derived to generate a motion compensation prediction signal. The resulting motion compensation prediction signal is supplied to a decoded image signal superimposing unit 207 .
[0180] <Motion compensation processing based on sub-block merge mode> The motion compensation prediction unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. In this way, the inter prediction mode determination unit 305 includes a sub-block merge mode derivation unit When the inter prediction information by 304 is selected, the inter prediction information is Inter prediction of the block currently being processed obtained from the prediction mode determination unit 305 A mode, a reference index, and a motion vector are derived, and a motion compensation prediction signal is generated. The motion compensation prediction signal is supplied to the prediction method determination unit 105 .
[0181] Similarly, the motion compensation prediction unit 406 also performs the same processing as the inter prediction unit 203 on the decoding side in FIG. As shown, during the decoding process, a switch 408 controls the sub-block merge mode derivation unit 404 to , the inter prediction information by the subblock merge mode derivation unit 404 The inter prediction mode and reference index of the currently processed block are obtained. , a motion vector is derived and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is , and is supplied to the decoded image signal superposition unit 207.
[0182] <Motion compensation processing based on affine transformation prediction> In the normal prediction motion vector mode and the normal merge mode, based on the following flags Motion compensation by the affine model can be used. The following flags are in the encoding process Based on the conditions of inter prediction determined by the inter prediction mode determination unit 305, the following flags Are reflected in the frame and encoded in the bitstream. In the decoding process, based on the following flags in the bitstream It is specified whether to perform motion compensation by the affine model. .
[0183] The sps_affine_enabled_flag indicates whether motion compensation by the affine model can be used in inter prediction. If the sps_affine_enabled_flag is 0, at the sequence level It is suppressed so as not to use motion compensation by the affine model. Also, the inter_affine_flag and The cu_affine_type_flag are not transmitted in the syntax of the CU (encoded block) of the encoded video sequence. If the sps_affine_enabled_flag is 1, in the encoded video sequence Motion compensation by the affine model can be used.
[0184] The sps_affine_type_flag indicates whether motion compensation by the 6-parameter affine model can be used in inter prediction. If the sps_affine_type_flag is 0, the 6-parameter Motion compensation by the affine model is not used. It is suppressed so as not to perform motion compensation using an affine model. Also, cu_affine_type_flag is not transmitted in the CU syntax of the encoded video sequence. If sps_affine_typ e_flag is 1, motion compensation using a 6-parameter affine model can be used in the encoded video sequence . If sps_affine_type_flag does not exist, it is considered to be 0 .
[0185] When decoding a P or B slice, in the currently processed CU, if inte r_affine_flag is 1, 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_f lag does not exist, it is considered to be 0
[0186] When decoding a P or B slice, in the currently processed CU, if cu_a ffine_type_flag is 1, motion compensation using a 6-parameter affine model is used to generate the motion compensation prediction signal for the currently processed CU . If cu_affine_typ e_flag is 0, motion compensation using a 4-parameter affine model is used to generate the motion compensation prediction signal for the currently processed CU .
[0187] In motion compensation using an affine model, since the reference index and motion vector are derived in sub-block units, the reference index being processed in sub-block units and And generates a motion compensation prediction signal using motion vectors.
[0188] The four-parameter affine model derives the motion vector of the sub-block from the four parameters of the horizontal and vertical components of the motion vectors of each of the two control points, and performs motion compensation at the sub-block level.
[0189] According to the first embodiment described above, in the history prediction motion vector candidate derivation process, the process is branched between the case of the normal prediction motion vector mode and the case of the normal merge mode, and in the case of the normal merge mode, the update process of the history prediction motion vector candidate list HmvpCandList is not performed, so that the processing amount required for the update process can be reduced. Further, in the case of the normal merge mode, since the update process of the history prediction motion vector candidate list HmvpCandList is not performed, the addition of the same or highly correlated candidates to the history prediction motion vector candidate list HmvpCandList can be suppressed, and in the history prediction motion vector candidate derivation process, the determination process of the same candidate does not need to be performed, so that the processing amount can be further suppressed.
[0190] All the embodiments described above may be combined in plurality.
[0191] In all the embodiments described above, the bit stream output by the image encoding apparatus has a specific data format so that it can be decoded according to the encoding method used in the embodiment. Further, the image decoding apparatus corresponding to this image encoding apparatus can decode the bit stream of this specific data format.
[0192] In order to exchange bitstreams between an image encoding device and an image decoding device, a wired or wireless network may be used, and the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. The reception device includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a packet processing unit that processes the encoded data to generate a bitstream and provides it to the image decoding device. When a wired or wireless network is used, the bitstream may be converted into a data format suitable for the transmission form of the communication path and transmitted. In that case, there are provided a transmission device that converts the bitstream output by the image encoding device 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 device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. The reception device includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a packet processing unit that processes the encoded data to generate a bitstream and provides it to the image decoding device. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. The reception device includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a packet processing unit that processes the encoded data to generate a bitstream and provides it to the image decoding device. When a wired or wireless network is used to exchange bitstreams between an image encoding device and an image decoding device, the bitstream may be converted into a data format suitable for the transmission mode of the communication path and transmitted. In that case, a transmission device that converts the bitstream output by the image encoding device into encoded data in a data format suitable for the transmission mode of the communication path and transmits it to the network, and a reception device that receives the encoded data from the network, restores it to a bitstream, and supplies it to the image decoding device are provided. The transmission device includes a memory that buffers the bitstream output by the image encoding device, a packet processing unit that packetizes the bitstream, and a transmission unit that transmits the packetized encoded data via the network. The reception device includes a reception unit that receives the packetized encoded data via the network, a memory that buffers the received encoded data, and a packet processing unit that processes the encoded data to generate a bitstream and provides it to the image decoding device.
[0193] Also, by adding a display unit that displays 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 207 and stored in the decoded image memory 208 and displays it on the screen. Also, by adding a display unit that displays 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 207 and stored in the decoded image memory 208 and displays it on the screen. Also, by adding a display unit that displays 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 207 and stored in the decoded image memory 208 and displays it on the screen.
[0194] 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. 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. 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.
[0195] Fig. 37 shows an example of the hardware configuration of the encoding / decoding device according to this embodiment. The encoding / decoding The image encoding device includes the configuration of an image encoding device and an image decoding device according to an embodiment of the present invention. The encoding / decoding device 9000 includes a CPU 9001, a codec IC 9002, an I / O O interface 9003, memory 9004, optical disk drive 9005, network The network interface 9006 and the video interface 9009 are connected via a bus. Connected by 9010.
[0196] The image encoding unit 9007 and the image decoding unit 9008 are typically a codec IC 9002 and The image encoding process of the image encoding device according to the embodiment of the present invention is implemented as an image encoding The image decoding process is executed by the decoding unit 9007 in the image decoding device according to the embodiment of the present invention. The decoding process is performed by the image decoding unit 9008. The I / O interface 9003 For example, a USB interface is used to connect an external keyboard 9104 and mouse 91 The CPU 9001 receives input via the I / O interface 9003. The encoding / decoding device 90 is controlled to execute an operation desired by the user based on the user's operation. 00. The user's operations using the keyboard 9104, mouse 9105, etc. are as follows: , select whether to perform encoding or decoding functions, set the encoding quality, and There are input and output destinations for programs, and input and output destinations for images, etc.
[0197] When the user desires to play back the images recorded on the disk recording medium 9100 The optical disk drive 9005 reads the bitstream from the inserted disk recording medium 9100. The read bit stream is then sent to the codec I via bus 9010. The image decoder 9008 of the C9002 receives the bit stream and sends it to the image decoder 9008. Execute the image decoding process in the image decoding apparatus according to the embodiment of the present invention for the , and decode Send the decoded image to an external monitor 9103 via the video interface 9009. Also, The encoding / decoding apparatus 9000 has a network interface 9006 and can be connected to an external distribution server 9106 or a mobile terminal 9107 via the network 9101. When the user desires to play an image recorded on the distribution server 9106 or the mobile terminal 9107 instead of the image recorded on the disk recording medium 9100, the network interface 9006 obtains a bit stream from the network 9101 instead of reading the bit stream from the input disk recording medium 9100. Also, When the user desires to play an image recorded in the memory 9004, perform the image decoding process in the image decoding apparatus according to the embodiment of the present invention on the bit stream recorded in the memory 9004. When the user desires to encode and record an image captured by an external camera 9102 in the memory 9004, the video interface 9009 inputs the image from the camera 9102 and sends it to the image encoding unit 9007 of the codec IC 9002 via the bus 9010. The image encoding unit 9007 executes the image encoding process in the image encoding apparatus according to the embodiment of the present invention on the image input via the video interface 9009 to create a bit stream. Then, the bit stream is sent to the memory 9004 via the bus 9010. When the user changes to the memory 9004 and records the bit stream on the disk recording medium 9100 004, execute the image decoding process in the image decoding apparatus according to the embodiment of the present invention.
[0198] When the user desires to perform an operation of encoding and recording an image captured by an external camera 9102 in the memory 9004, the video interface 9009 inputs the image from the camera 9102 and sends it to the image encoding unit 9007 of the codec IC 9002 via the bus 9010. The image encoding unit 9007 executes the image encoding process in the image encoding apparatus according to the embodiment of the present invention on the image input via the video interface 9009 to create a bit stream. Then, the bit stream is sent to the memory 9004 via the bus 9010. When the user changes to the memory 9004 and records the bit stream on the disk recording medium 9100 instead, the image encoding unit 9007 executes the image encoding process in the image encoding apparatus according to the embodiment of the present invention on the image input via the video interface 9009 to create a bit stream. Then, the bit stream is sent to the memory 9004 via the bus 9010. When the user changes to the memory 9004 and records the bit stream on the disk recording medium 9100 execute the image encoding process in the image encoding apparatus according to the embodiment of the present invention on the input image via the video interface 9009 to create a bit stream. And send the bit stream to the memory 9004 via the bus 9010. When the user changes to the memory 9004 and records the bit stream on the disk recording medium 9100 instead, send the bit stream to the disk recording medium 9100 via the bus 9010. If it is desired to record the stream, the optical disk drive 9005 writes out the bit stream to the inserted optical recording medium 9100.
[0199] 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
[0200] the image decoding unit 9008, respectively. Of course, the above processing related to encoding and decoding may be realized by using hardware for transmission, storage, and reception devices. It may also be realized by firmware stored in a ROM (Read Only Memory), a flash memory, or the like, or by software such as a computer. The firmware program and the software program may be recorded on a computer-readable recording medium and provided, or may be provided from a server through a wired or wireless network, or may be provided as data broadcast of terrestrial or satellite digital broadcast.
[0201] As described above, the present invention has been described based on the embodiments. The embodiments are examples, and it is understood by those skilled in the art that various modifications are possible in the combination of their respective components and each processing process, and such modifications are also within the scope of the present invention.
[0202] 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 generation unit, 107 orthogonal transformation / quantization unit, 108 bit sequence encoding unit, 10 9 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 memory 206 inverse quantization / inverse orthogonal transformation unit, 207 decoded image signal superposition unit, 208 decoded image memory.< / poc>
Claims
1. A motion information history memory that stores the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation unit that derives a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds motion information of an encoded block; A spatial predicted motion vector candidate derivation unit that adds a predicted motion vector candidate predicted from a block adjacent to a block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplement unit that adds a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit that derives a merge candidate including a history merge candidate from the memory that holds motion information of an encoded block; A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which motion information is different in units of sub-blocks obtained by dividing an encoded block into a predetermined size from the memory that holds motion information of the encoded block, and comprising: When the predicted motion vector candidate is encoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is encoded, motion information is not stored in the motion information history memory, characterized in that it is a moving image encoding apparatus.
2. A motion information history memory step of storing the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation step of deriving a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds motion information of an encoded block; A spatial predicted motion vector candidate derivation step of adding a predicted motion vector candidate predicted from a block adjacent to a block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplement step of adding a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit that derives a merge candidate including a history merge candidate from the memory that holds motion information of an encoded block; A sub-block merge candidate derivation step of deriving a sub-block merge candidate in which motion information is different in units of sub-blocks obtained by dividing an encoded block into a predetermined size from the memory that holds motion information of the encoded block, and having: When the predicted motion vector candidate is encoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is encoded, motion information is not stored in the motion information history memory, characterized in that it is a moving image encoding method.
3. A motion information history memory step for storing the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation step for deriving a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds motion information of an encoded block; A spatial predicted motion vector candidate derivation step for adding a predicted motion vector candidate predicted from a block adjacent to a block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplementation step for adding a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit for deriving a merge candidate including a history merge candidate from the memory that holds motion information of an encoded block; A sub-block merge candidate derivation step for deriving a sub-block merge candidate in which motion information is different in units of sub-blocks obtained by dividing an encoded block into a predetermined size from the memory that holds motion information of the encoded block, and causing a computer to execute; A moving image encoding program characterized in that when the predicted motion vector candidate is encoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is encoded, motion information is not stored in the motion information history memory.
4. A motion information history memory for storing the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation unit for deriving a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds motion information of a decoded block; A spatial predicted motion vector candidate derivation unit for adding a predicted motion vector candidate predicted from a block adjacent to a block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplementation unit for adding a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit for deriving a merge candidate including a history merge candidate from the memory that holds motion information of a decoded block; A sub-block merge candidate derivation unit for deriving a sub-block merge candidate in which motion information is different in units of sub-blocks obtained by dividing a decoded block into a predetermined size from the memory that holds motion information of the decoded block, and comprising: A moving image decoding apparatus characterized in that when the predicted motion vector candidate is decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is decoded, motion information is not stored in the motion information history memory.
5. A motion information history memory step for storing the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation step for deriving a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds the motion information of the decoded block; A spatial predicted motion vector candidate derivation step for adding a predicted motion vector candidate predicted from a block adjacent to the block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplementation step for adding a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit for deriving a merge candidate including a history merge candidate from the memory that holds the motion information of the decoded block; A sub-block merge candidate derivation step for deriving a sub-block merge candidate in which the motion information is different in units of sub-blocks obtained by dividing the decoded block into sub-blocks of a predetermined size from the memory that holds the motion information of the decoded block, and having: A moving image decoding method characterized in that when the predicted motion vector candidate is decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is decoded, motion information is not stored in the motion information history memory.
6. A motion information history memory step for storing the history of a plurality of motion information sets of a picture to be processed; A predicted motion vector candidate derivation step for deriving a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds the motion information of the decoded block; A spatial predicted motion vector candidate derivation step for adding a predicted motion vector candidate predicted from a block adjacent to the block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplementation step for adding a predicted motion vector candidate of (0, 0) to the predicted motion vector candidate; A merge candidate derivation unit for deriving a merge candidate including a history merge candidate from the memory that holds the motion information of the decoded block; A sub-block merge candidate derivation step for deriving a sub-block merge candidate in which the motion information is different in units of sub-blocks obtained by dividing the decoded block into sub-blocks of a predetermined size from the memory that holds the motion information of the decoded block, and causing a computer to execute: A moving image decoding program characterized in that when the predicted motion vector candidate is decoded, motion information is stored in the motion information history memory, and when the sub-block merge candidate is decoded, motion information is not stored in the motion information history memory.
7. A storage method for storing a bitstream generated according to the moving image encoding method described in Claim 2 in a recording medium.
8. A transmission method for transmitting a bitstream generated according to the moving image encoding method described in Claim 2.
Citation Information
Patent Citations
Moving image coding / decoding device using moving compensation inter-frame prediction system employing affine transformation
JP1997172644A
Update of look up table: FIFO, constrained FIFO
WO2020003278A1
Method and device for processing video signal on basis of history-based motion vector prediction
WO2020122640A1
Cited By
Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method, and image decoding program
JP2025137594A