Image encoding device, image encoding method, image encoding program, image decoding device, image decoding method, and image decoding program
By employing a motion information history memory and sub-block merge candidate derivation in image encoding, the high processing load issue of existing techniques is addressed, achieving efficient encoding and decoding of deformed objects in moving images.
Patent Information
- Application Number
- JP2025075283
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2018-12-28
- Filing Date
- 2025-04-30
- Publication Date
- 2025-07-31
- Estimated Expiration
- 2039-12-27
AI Technical Summary
Existing image encoding techniques, such as those described in Patent Document 1, suffer from high processing loads due to image conversion, particularly when dealing with deformed objects in moving images.
The implementation of a motion information history memory that stores motion information history, a prediction motion vector candidate derivation unit, and a sub-block merge candidate derivation unit that selectively stores or omits motion information based on encoding mode, reducing processing load while maintaining encoding efficiency.
This approach enables highly efficient image encoding and decoding with reduced processing load, allowing for effective handling of deformed objects in moving images.
Smart Images

Figure 2025112316000001_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, an image to be processed is divided into blocks, which are sets of a predetermined number of pixels, and processing is performed in block units. By appropriately dividing into blocks and appropriately setting intra prediction (intra-frame prediction) and inter prediction (inter-frame prediction), 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] In the encoding and decoding of moving images, the encoding efficiency is improved more 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.
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 prediction motion vector candidate derivation unit that derives a prediction motion vector candidate including a history prediction motion vector, and a sub-block merge candidate in which motion information is different in units of sub-blocks 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 prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 prediction motion vector candidate derivation step that derives a prediction motion vector candidate including a history prediction motion vector, and a sub-block merge candidate in which motion information is different in units of sub-blocks 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 prediction motion vector candidate derivation step that derives a prediction motion vector candidate including a history prediction motion vector, and a sub-block merge candidate in which motion information is different in units of sub-blocks 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 units of sub-blocks obtained by dividing an encoding block into a predetermined size, and when the prediction 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 decoded 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 for each unit, and when the predicted motion vector candidate is decoded, stores the motion information in the motion information history memory, and the sub-block merge candidate is decoded. A moving image decoding apparatus is disclosed, which is characterized in that motion information is not stored 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 decoded 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 for each unit, and when the predicted motion vector candidate is decoded, stores the motion information in the motion information history memory, and the sub-block merge candidate is decoded. A moving image decoding method is disclosed, which is characterized in that motion information is not stored 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 a predicted motion vector candidate including the predicted motion vector, and the decoded block A predicted motion vector candidate derivation step for deriving a predicted motion vector candidate including a historical predicted motion vector candidate from a memory that holds motion information of the block A predicted motion vector candidate derivation step, and causing a computer to execute the steps, wherein 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, and discloses a moving image decoding program. When the sub-block merge candidate is decoded, motion information is not stored in the motion information history memory. Disclose a moving image decoding program characterized by not storing motion information in the motion information history memory when the sub-block merge candidate is decoded.
[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 of "the present invention" is not intended to limit the scope of the present invention or the present application, but is used for illustrative purposes and should be understood accordingly. It should be understood that the description of "the present invention" is not intended to limit the scope of the present invention or the present application, but is used for illustrative purposes. It should be understood that the description of "the present invention" is not intended to limit the scope of the present invention or the present application, but is used for illustrative purposes. It should be understood.
Effect 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 can be set. The tree block corresponding to the processing target (encoding target in the encoding process and decoding target in the decoding process) is switched in raster scan order, that is, from left to right and from top to bottom order. 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, Intra prediction (MODE_INTRA), and Inter prediction (MO DE_INTER) for performing prediction from the image signal of the processed image is switched. The processed image is an image obtained by decoding a signal for which encoding has been completed in the encoding process, an image signal, a tree block, a block, a coded block, etc., and is used for an image, an image signal, a tree block, a block, a coded block, etc., for which decoding has been completed in the decoding process. . Define a mode for identifying this Intra prediction (MODE_INTRA) and Inter prediction (MODE_INTER) as a prediction mode (PredMode). The prediction mode (PredMode) has Intra prediction (MODE_INTRA ), or Inter prediction (MODE_INTER) as a value.
[0018] <Inter prediction> In Inter prediction for performing 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 respective reference indices. 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) performs 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 specifying L0 prediction, L1 prediction, and dual prediction. In subsequent processing, it is assumed that the processing is performed for each of L0 and L1 with respect to constants and variables with subscript LX attached to the output.
[0019] <Predicted motion vector mode> The predicted motion vector mode is a mode that transmits an index for specifying a predicted motion vector, a differential motion vector, an inter-prediction mode, and a reference index, and determines the inter-prediction information of the block to be processed. The predicted motion vector is derived from a candidate predicted motion vector derived from a processed block adjacent to the block to be processed or a block located at the same position or in its vicinity (neighborhood) in a processed image that belongs to the processed image, and an index for specifying the predicted motion vector.
[0020] <Merge mode> The merge mode is a mode that derives the inter-prediction information of the block to be processed from the inter-prediction information of a processed block adjacent to the block to be processed or a block located at the same position or in its vicinity (neighborhood) in a processed image that belongs to the processed image, without transmitting a differential motion vector and a reference index.
[0021] A processed block adjacent to the block to be processed 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 processed image that belongs to the processed image and the inter-prediction information of the block The inter prediction information derived from the intra prediction information is defined as a time merge candidate. Each merge candidate 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 ( neighborhood) of the block to be processed in the image to be processed.
[0023] A1, A2 are blocks located on the left side of the block to be processed and adjacent to the block to be processed. B1, B3 are blocks located above the block to be processed and adjacent to the block to be processed. A0, B0, 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> In affine transform motion compensation, an encoded block is divided into sub-blocks of a predetermined unit, and motion vectors are determined individually for each of the divided sub-blocks to perform 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 (neighborhood) of the block to be processed Derivation is performed 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, the horizontal component and the vertical component. Therefore, the affine transform when there are two control points is called a four-parameter affine transform. CP1 and CP2 in Fig. 14 are control points. CP2 are 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, the horizontal component and the vertical component. Therefore, the affine transform when there are three control points is called a six-parameter affine transform. CP1, CP2, and CP3 in Fig. 15 are control points. CP2, and CP3 are control points.
[0027] Affine transform motion compensation is available in both the prediction motion vector mode and the merge mode. The mode in which affine transform motion compensation is applied in the prediction motion vector mode is defined as the sub-block prediction 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 processing target coded block is in the merge mode or the prediction motion vector mode. The merge_affine_flag is 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 the picture to be encoded , and a value that increases by 1 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, and derive the distance between pictures. For example, if the POCs of two pictures are 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 sequence encoding unit 108, an inverse quantization / inverse orthogonal transformation unit 109, a decoded image signal superposition unit 110, and an encoded information storage memory 111.
[0032] The block division unit 101 recursively divides the input image to generate an encoding block . 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 or vertical direction It includes two to three split parts for splitting. The block splitting part 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 part 101 supplies the information indicating the determined recursive splitting structure to the bit sequence encoding unit 108. The detailed operation of the block splitting part 101 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 encoded 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.
[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 encoded 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 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, in which all pixel values of the processing target block are set to the average value of the reference pixels. Intra prediction mode 0 is the Planar mode, which creates a two-dimensional intra prediction image from reference pixels in the vertical and horizontal directions. 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 processing target block. 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 surrounding integer positions.
[0035] 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.
[0036] The prediction method determination unit 105 evaluates each of intra prediction and inter prediction using encoding information, the coded amount of the residual, the distortion amount between the predicted image signal and the processing target image signal, etc., to determine the optimal prediction mode. In the case of intra prediction, the prediction method determination unit 105 supplies intra prediction information such as the intra prediction mode as encoding information to the bit sequence encoder 108. In the case of the merge mode of inter prediction, the prediction Information indicating whether it is a di-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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and 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, information such as whether it is a di-index or sub-block merge mode (sub-block merge flag) 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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag) 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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag) 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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag) 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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag) 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 the inter-prediction, the prediction method determination unit 105 determines the inter-prediction mode, the prediction motion vector index, the reference indexes of L0 and L1, the differential motion vector, and information indicating whether it is a sub-block prediction motion vector mode (sub-block prediction motion vector flag) 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. 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. 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.
[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 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.
[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 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.
[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. 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 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 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 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), When merging, the bit sequence encoder 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 inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified syntax and outputs a bit stream. When not in merge mode, it encodes encoding information (inter prediction information) such as an inter prediction mode, a prediction motion vector index, information regarding a differential motion vector, and a sub-block prediction motion vector flag according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. When the prediction mode is intra prediction (MODE_INTRA), it encodes encoding information (intra prediction information) such as an intra prediction mode according to a specified syntax (syntax of a bit sequence) to generate a first bit sequence. Also, the bit sequence encoder 108 entropy-encodes the orthogonally transformed and quantized residuals according to a specified syntax to generate a second bit sequence. The bit sequence encoder 108 multiplexes the first bit sequence and the second bit sequence according to a specified 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 orthogonal transformation and quantization 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 orthogonal transformation and quantization 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 orthogonal transformation and quantization 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 a 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 to reduce 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 a 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 to reduce 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 a 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 to reduce 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 a 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 to reduce 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 a 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 to reduce distortion such as block distortion due to encoding on the decoded image and then store it in the decoded image memory 104.
[0042] The encoding information storage memory 111 stores the prediction mode (integer) determined by the prediction method determination unit 105. In the case of inter prediction, the code The coding information stored in the coding information storage memory 111 includes the determined motion vectors, the reference list, Inter prediction information such as L0 and L1 reference indexes, historical predicted motion vector candidate list, etc. 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 merge index, and the above information. Inter prediction information (sub-block merge flag) indicating whether the sub-block is in the multi-mode or not is included. In the case of the inter-prediction predicted motion vector mode, the coding information storage memory 111 The encoded information to be stored includes the above information as well as the inter prediction mode, predicted motion vector, etc. An index, a differential motion vector, and information indicating whether it is a sub-block predicted motion vector mode. It includes inter prediction information such as sub-block prediction motion vector flags. In the case of prediction, the coding information stored in the coding information storage memory 111 includes the determined input. It includes intra prediction information such as intra prediction mode.
[0043] FIG. 2 shows the configuration of an image decoding apparatus according to an embodiment of the present invention, which corresponds to the image encoding apparatus of FIG. The image decoding device according to the embodiment includes a bitstream decoding unit 201, a block block division unit 202, inter prediction unit 203, intra prediction unit 204, 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 Equipped with 208 harpoons.
[0044] The decoding process of the image decoding device in FIG. 2 corresponds to the decoding process provided inside the image encoding device in FIG. 1. Therefore, each component of the encoding information storage memory 205, inverse quantization and inverse orthogonal conversion unit 206, decoded image signal superposition unit 207, and decoded image memory 208 in FIG. 2 corresponds to each component of the encoding information storage memory 111, inverse quantization and inverse orthogonal conversion unit 109, decoded image signal superposition unit 110, and decoded image memory 104 in the image encoding device in FIG. 1, and has corresponding functions respectively.
[0045] The bit stream supplied to the bit sequence decoding unit 201 is separated according to the rules of a specified syntax. The bit sequence decoding unit 201 decodes the separated first bit sequence, and obtains syntax, picture, slice, information in units of encoding blocks, and encoding information in units of encoding blocks. Specifically, the bit sequence decoding unit 201 decodes a prediction mode PredMode that determines whether it is inter prediction (MODE_INTER) or intra prediction (MODE_INTRA) in units of encoding blocks. When the prediction mode is inter prediction (MODE_INTER), the bit sequence decoding unit 201 decodes a flag that determines whether it is the merge mode, the merge index in the case of the merge mode, the 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. regarding the encoding information (inter prediction information) 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 splitting unit 202. When the prediction mode is intra prediction (MODE_INTRA), In this case, encoding information (intra prediction information) such as the intra prediction mode is converted into a prescribed syntax and thus decoded, and the encoding information (intra prediction information) is supplied to the encoding 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 the orthogonal transform / quantized residual, and supplies the orthogonal transform / quantized residual to the inverse quantization / inverse orthogonal transform unit 206.
[0046] When the prediction mode PredMode of the encoding block to be processed is the inter prediction (MODE_INTER) and the prediction motion vector mode, the inter prediction unit 203 uses the encoding information of the already decoded image signal stored in the encoding 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 encoding information storage memory 205 together with other encoding information. Here, the encoding information of the encoding block to be supplied / stored is a flag predFlagL0[xP][yP], predFlag indicating whether to use the prediction mode PredMode, L0 prediction, and L1 prediction, L0, L1 reference indices refIdxL0[xP][yP], refIdxL1[xP][yP], L0 L1[xP][yP], and the reference indices refIdxL0[xP][yP], refIdxL1[xP][yP] of L0 and L1. , such as the motion vectors mvL0[xP][yP] and mvL1[xP][yP] of L1. Here, xP and yP are indices indicating the position of the top-left pixel of the encoded block within the picture. When the prediction mode PredMode is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction (Pred_L0), the flag predFlagL0 indicating whether to use L0 prediction is 1, and 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 flags predFlagL0 and predFlagL1 indicating whether to use L0 prediction and L1 prediction respectively are both 1. Further, when the prediction mode PredMode of the encoded block to be processed is inter prediction (MODE_INTER) and in the merge mode, merge candidates are derived. Using the encoding information of the already decoded encoded blocks stored in the encoding 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 predFlagL[xP][yP] indicating whether to use L0 and L1 predictions, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 When the prediction mode PredMode of the encoded block to be processed is inter prediction (MODE_INTER) and in the merge mode, merge candidates are derived. Using the encoding information of the already decoded encoded blocks stored in the encoding 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 predFlagL[xP][yP] indicating whether to use L0 and L1 predictions, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 When the prediction mode PredMode of the encoded block to be processed is inter prediction (MODE_INTER) and in the merge mode, merge candidates are derived. Using the encoding information of the already decoded encoded blocks stored in the encoding 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 predFlagL[xP][yP] indicating whether to use L0 and L1 predictions, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 When the prediction mode PredMode of the encoded block to be processed is inter prediction (MODE_INTER) and in the merge mode, merge candidates are derived. Using the encoding information of the already decoded encoded blocks stored in the encoding 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 predFlagL[xP][yP] indicating whether to use L0 and L1 predictions, the reference indices refIdxL0[xP][yP] and refIdxL1[xP][yP] of L0 and L1, and the motion vectors of L0 and L1 When the prediction mode PredMode of the encoded block to be processed is inter prediction (MODE_INTER) and in the merge mode, merge candidates are derived. Using the encoding information of the already decoded encoded blocks stored in the encoding information storage memory 205, Store the inter-prediction information such as mvL0[xP][yP] and mvL1[xP][yP] in the coded information storage memory 205. Here, xP and yP are indices indicating the position of the upper left pixel of the coded block within the picture. The detailed configuration and operation of the inter-prediction unit 203 will be described later.
[0047] The intra-prediction unit 204 performs intra-prediction when the prediction mode PredMode of the coded block to be processed is intra-prediction (MODE_INTRA). The coded 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 coded 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 coding apparatus 100, it performs the same processing as the intra-prediction unit 103.
[0048]
[0049] The inverse quantization and inverse orthogonal transformation unit 206 performs inverse orthogonal transformation and inverse quantization on the orthogonal transformation and quantized residual decoded by the bit sequence decoding unit 201 to obtain the inverse orthogonal transformation and inverse quantized residual.
[0049] 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 residual inverse orthogonal 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. When storing in the memory 208, the decoded image signal superposition unit 207 performs filtering processing for reducing block distortion or the like caused by encoding on the decoded image, and then stores it in the decoded image memory 208. This may be done.
[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 or not to divide the block to be processed into four (step S1101).
[0052] If it is determined that the block to be processed is to be divided into four, the block to be processed is divided into four (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. 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 of 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, 2-3 division is performed (step S1 105).
[0054] FIG. 8 is a flowchart showing the detailed operation of the 2-3 division process in step S1105 . First, it is determined whether to perform 2-3 division on the block to be processed, that is, whether to perform either 2-division or 3-division (step S1201).
[0055] If it is determined not to perform 2-3 division on the block to be processed, that is, if it is determined not to divide, the division is terminated (step S1211). That is, no further recursive division processing is performed on the block divided by the recursive division processing.
[0056] If it is determined to perform 2-3 division on the block to be processed, it is further determined whether to perform 2-division on the block to be processed (step S1202).
[0057] If it is determined to perform 2-division on the block to be processed, it is determined whether to divide the block to be processed vertically (step S1203). Based on the result, the block to be processed is divided vertically into two parts (step S1204), or the block to be processed is divided horizontally into two parts (step S1205). As a result of step S1204, the block to be processed is divided vertically into two parts as shown in 602 of FIG. 6B. As a result of step S1205, the block to be processed is divided horizontally into two parts as shown in 604 of FIG. 6D.
[0058] If it is not determined to perform 2-division on the block to be processed in step S1202, that is, if it is determined to perform 3-division, the block to be processed is divided 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 2 in 602 to 605 of FIGS. 6B to 6E indicate the order of processing. For each divided block, recursively execute the 2-3 division process of FIG. 8 (step S1210).
[0059] 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. Information for limiting the necessity of division may be realized in a configuration where information transmission is not performed by making a prior agreement between the encoding device and the decoding device, or may be realized in a configuration where the encoding device determines information for limiting the necessity of division and records it in a bit string and transmits 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.
[0060]
[0061]
[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, in the block division unit 101 of the image encoding apparatus 100, optimization methods such as estimation of the optimal shape by image recognition and distortion rate optimization are applied to determine the optimal block division shape, while the block division unit 202 in the image decoding 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 in the first embodiment is shown in FIG. 9. coding_quadtree() represents the syntax for the 4-division process of the block. multi
[0063] _type_tree() represents the syntax for the 2-division or 3-division process of the block. qt_spl 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 performed recursively (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), the 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. When not further dividing (mtt_split = 0), the block is not divided any further. When not further dividing (mtt_split = 0), the block is not divided any further. 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 which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. The flag mtt_split_vertical which is a yes flag, and the flag mtt_split_binary which determines whether to split into two or three parts 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 splitting into two parts, and mtt_split_binary = 0 indicates splitting into three parts. When splitting into two parts (mtt_split_binary = 1), for each of the two split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), the arguments 0 to 1 correspond to the numbers 602 or 604 in FIGS. 6B to D).). When splitting into three parts (mtt_split_binary = 0), for each of the three split blocks, recursive splitting processing is performed (multi_type_tree(0), multi_type_tree(1), multi_type_tree(2), 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. Hierarchical block splitting is performed by recursively calling multi_type_tree until mtt_split = 0. Hierarchical block splitting is performed by recursively calling multi_type_tree until mtt_split = 0.
[0064] <Inter prediction> The inter prediction method according to the embodiment is implemented in the inter prediction unit 102 of the image encoding device in FIG. 1 and the inter prediction unit 203 of the image decoding device in FIG. 2. The inter prediction method according to the embodiment is implemented in the inter prediction unit 102 of the image encoding device in FIG. 1 and the inter prediction unit 203 of the image decoding device 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 either the encoding or decoding process for each encoding block unit. The inter prediction method according to the embodiment will be described with reference to the drawings. The inter prediction method is implemented in either the encoding or decoding process for each encoding block unit.
[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 of FIG. 1. The normal prediction motion vector mode derivation unit 301 derives a plurality of normal prediction motion vector candidates to select 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 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, based on the inter-prediction information supplied from the normal prediction motion vector mode derivation unit 301, normal merge mode derivation unit 302, sub-block prediction motion vector mode derivation unit 303, and sub-block lock merge mode derivation unit 304, the 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 a 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] Normally, the normal merge mode derivation unit 402 derives a plurality of normal merge candidates, selects a normal merge candidate, and obtains inter prediction information in the normal 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 normal merge mode derivation unit 402 will be described later. 408. The detailed configuration and processing of the normal merge mode derivation unit 402 will be described later. Normally, the normal merge mode derivation unit 402 derives a plurality of normal merge candidates, selects a normal merge candidate, and obtains inter prediction information in the normal merge mode. This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch
[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. 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
[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.
[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 a spatial prediction motion vector candidate unit 321, a temporal prediction motion vector candidate derivation unit 322, a history prediction motion vector candidate derivation unit 3 23, a prediction motion vector candidate supplementation unit 325, a normal motion vector detection unit 326, a prediction motion ve ctor candidate selection unit 327, and a motion vector subtraction unit 328.
[0079] The normal prediction motion vector mode derivation unit 401 in FIG. 23 derives a spatial prediction motion vector candidate unit 421, a temporal prediction motion vector candidate derivation unit 422, a history prediction motion vector candidate derivation unit 4 23, a prediction motion vector candidate supplementation unit 425, a prediction motion vector candidate selection unit 426, and a motion ve ctor addition unit 427.
[0080] The processing procedures of the normal prediction motion vector mode derivation unit 301 on the encoding side and the normal prediction motion ve ctor mode derivation unit 401 on the decoding side will be described with reference to the flowcharts in FIGS. 19 and 25 respectively. FIG. 19 is a flowchart showing the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 301 on the encoding side, and FIG. 25 is a flowchart showing the normal prediction motion vector mode derivation processing procedure by the normal motion vector mode derivation unit 401 on the decoding side.
[0081] <Normal Prediction Motion Vector Mode Derivation Unit (Normal AMVP): Explanation on the Encoding Side> The normal prediction motion vector mode derivation processing procedure on the encoding side will be described with reference to FIG. 19. In the description 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 Then, a normal motion vector is detected (step S100 in FIG. 19).
[0083] Next, the spatial motion vector predictor candidate derivation unit 321 and the temporal motion vector predictor candidate derivation unit 3 22, a history predicted motion vector candidate derivation unit 323, a predicted motion vector candidate supplement unit 325, a predicted motion vector candidate A predicted motion vector candidate selection unit 327 and a motion vector subtraction unit 328 select a normal predicted motion vector The differential motion vectors of the motion vectors used in inter prediction of the mode are set for L0 and L1 respectively. Specifically, the predicted value of the block to be processed is calculated (steps S101 to S106 in FIG. 19). Prediction mode PredMode is inter prediction (MODE_INTER), and inter prediction mode is L0 prediction (Pr ed_L0), calculate the motion vector predictor candidate list mvpListL0 of L0, and The motion vector mvpL0 of L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 of L0 is calculated. If the inter prediction mode of the target block is L1 prediction (Pred_L1), the predicted motion vector of L1 is A motion vector candidate list mvpListL1 is calculated, a motion vector predictor mvpL1 is selected, and the motion vector of L1 is calculated. Calculate the differential motion vector mvdL1 of the current block mvL1. When bi-prediction (Pred_BI) is used, both L0 prediction and L1 prediction are performed, and the predicted motion vector of L0 is A motion vector candidate list mvpListL0 is calculated, a motion vector predictor mvpL0 for L0 is selected, and the motion vector A differential motion vector mvdL0 of the vector mvL0 is calculated, and a predicted motion vector candidate of L1 is calculated. A complementary list mvpListL1 is calculated, and a predicted motion vector mvpL1 of L1 is calculated. Then, the differential motion vector mvdL1 of the corresponding vector mvL1 is calculated.
[0084] For each of L0 and L1, differential motion vector calculation processing is performed. However, for both L0 and L1, it is 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 and the predicted motion vector candidate list mvpListLX of LX is constructed (step S103 in FIG. 19). In 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 supplementation unit 325 in the normal predicted motion vector mode derivation unit 301, a plurality of candidates for the predicted motion vector are derived to construct the predicted motion vector candidate list mvpListLX. Details of the processing procedure of step S103 in FIG. 19 will be described later using the flowchart in FIG. 20. 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].
[0086] Among the predicted motion vector candidate list mvpListLX, the motion vector mvLX and the predicted motion vector candidate It is the difference between each predicted motion vector candidate mvpListLX[i] stored in the list mvpListLX to calculate each differential motion vector. When encoding these differential motion vectors 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 candidate mvpListLX[i] of the predicted motion vector 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. Predicted motion vector If there are multiple candidates for the predicted motion vector with the minimum generated code amount in the candidate list mvpListLX then, among the candidates of the predicted motion vector in the predicted motion vector candidate list mvpListLX, the candidate mvpListLX[i] represented by the smaller index number 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, mvdLX = mvLX - mvpLX to calculate the differential motion vector mvdLX of LX (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 processing target block is inter prediction (MODE_INTER) and the inter prediction mode of the processing target block 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 processing target block 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 processing target block 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 as well, motion vector calculation processing is performed for each of L0 and L1
[0089] but 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 encoding 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 processing, the LX being calculated is not based on the same reference list, but on information from another reference list. When referencing one reference list, the other reference list is represented as LY.
[0090] When the motion vector mvLX of LX is used (step S202 in FIG. 25: YES), LX Calculate the candidate predicted motion vectors of LX and construct a candidate predicted motion vector list mvpListLX of LX. (Step S203 in FIG. 25). A spatial motion vector predictor candidate derivation unit 421, a temporal motion vector predictor candidate derivation unit 422, a history A motion vector predictor candidate deriving unit 423 and a motion vector predictor candidate supplementing unit 425 generate a plurality of motion vector predictors. Then, motion vector predictor candidates are calculated and a motion vector predictor candidate list mvpListLX is constructed. The detailed processing procedure of step S203 will be described later with reference to the flowchart of FIG. do.
[0091] Next, the motion vector predictor candidate selection unit 426 selects the motion vector predictor candidate list mvpListLX The bitstream decoder 201 decodes and supplies the predicted motion vector index mv The candidate predicted motion vector mvpListLX[mvpIdxLX] corresponding to pIdxLX is used as the selected predicted motion vector. The vector mvpLX is extracted (step S204 in FIG. 25).
[0092] Then, the motion vector adder 427 decodes the bit stream and supplies it to the bit stream decoder 201. Add the differential motion vector mvdLX of LX and the predicted motion vector mvpLX of LX, mvLX = mvpLX + mvdLX The motion vector mvLX of LX is calculated as follows (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 predicted motion vector mode derivation unit 401 of the image decoding device 10 is a flowchart showing the processing procedure of a normal predicted motion vector mode derivation process having the following formula.
[0094] The normal predicted motion vector mode derivation unit 301 and the normal predicted motion vector mode derivation unit 40 1 includes a motion vector predictor candidate list mvpListLX. The mvpListLX has a list structure and is a prediction vector that indicates the location within the motion vector prediction candidate list. The motion vector index and the 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 started and stored in the storage area of the motion vector predictor candidate list mvpListLX. In this embodiment, the motion vector predictor candidate list mvpListLX contains at least At least two candidate motion vector predictors (inter prediction information) can be registered. Furthermore, the motion vector predictor registered in the motion vector predictor candidate list mvpListLX is The variable numCurrMvpCand, which indicates the number of rule candidates, is set to 0.
[0095] The spatial motion vector predictor candidate derivation units 321 and 421 derive the spatial motion vector predictor candidate from the adjacent block on the left side. In this process, candidates for predicted motion vectors are derived from the adjacent block on the left ( A0 or A1) inter prediction information, i.e., whether or not a motion vector predictor candidate is available. A flag indicating whether the motion vector is a predicted motion vector mv LXA is derived, and the derived mvLXA is added to the motion vector predictor candidate list mvpListLX (FIG. 20 In the case of L0 prediction, X is set to 0, and in the case of L1 prediction, X is set to 1 (hereinafter, Next, the spatial prediction motion vector candidate derivation units 321 and 421 select the adjacent spatial prediction motion vector candidate on the upper side. In this process, the candidate predicted motion vectors are derived from the adjacent block on the upper side. Inter prediction information of the block (B0, B1, or B2 in FIG. 11), i.e., predicted motion vector A flag indicating whether a motion candidate is available or not, and a reference to the motion vector, reference index, etc. The predicted motion vector mvLXB is derived based on the calculated motion vector mvLXA and mvLXB. If so, mvLXB is added to the motion vector predictor candidate list mvpListLX (step S3 in FIG. 20). 02). The processing in steps S301 and S302 in FIG. 20 is performed based on the position and number of adjacent blocks to be referenced. The difference is whether the candidate predicted motion vector for the coding block can be used. The flag availableFlagLXN indicates whether the motion vector is available or not, and the motion vector mvLXN and the reference index refIdxN( N indicates A or B, and so on.
[0096] Next, the temporal motion vector predictor candidate derivation units 322 and 422 calculate the temporal motion vector predictor candidate for the current processing target picture. A candidate motion vector predictor is derived from a block in a picture that is different in time from the image. In this process, motion vector predictor candidates of coding blocks of pictures at different times are used. The flag availableFlagLXCol indicates whether the motion vector mvLXCol and the reference index are available. The reference list refIdxCol and the reference list listCol are derived, and mvLXCol is used to create 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 prediction 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 prediction motion vector candidate replenishment units 325 and 425 add prediction motion vector candidates with a predetermined value, such as (0, 0), until the prediction 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 that has a common function 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.
[0103] The following describes each process in sequence. In the following description, unless otherwise specified, the case where the slice type slice_type is a B slice will be described, but it can also be applied 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 processes 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. It is provided with a merge index indicating the location inside the merge candidate list and a storage area for storing the merge candidate corresponding to the index as elements. The number of the merge index starts from 0. In the storage area of the merge candidate list mergeCandList, the merge candidate is stored. In the subsequent processes, the merge candidate at the merge index i registered in the merge candidate list mergeCandList will be represented by mergeCandList[i]. In this embodiment, it is assumed that the merge candidate list mergeCandList can register at least six merge candidates (inter prediction information). Furthermore, the merge candidate list mergeCandList is registered in The variable numCurrMergeCand, which indicates the number of merge candidates, is set to 0.
[0105] The spatial merge candidate derivation unit 341 and the spatial merge candidate derivation unit 441 are The encoded information stored in the encoded information storage memory 111 or the encoded information storage memory 205 of the image decoding device From the coding information stored in the block, each block adjacent to the block to be processed (B in FIG. 11) 1, A1, B0, A0, B2) to B1, A1, B0, A0, B2 The spatial merge candidates are derived in order and registered in the merge candidate list mergeCandList. (Step S401 in FIG. 21). Here, B1, A1, B0, A0, B2 or time marker We define N, which indicates one of the candidate blocks Col. A flag availableFlagN indicates whether the candidate can be used as a spatial merge candidate. Reference index refIdxL0N and L1 reference index refIdxL1N, L0 prediction is performed L0 prediction flag predFlagL0N indicates whether L1 prediction is performed or not, and L1 prediction flag predFlagL0N indicates whether L1 prediction is performed or not. The motion vector mvL0N of L0 and the motion vector mvL1N of L1 are derived. However, in this embodiment, the blocks included in the coding block to be processed are Since merge candidates are derived without referring to inter-prediction information, The spatial merge candidates using the inter prediction information of the blocks included in the matrix B are not derived.
[0106] Next, the temporal merge candidate derivation unit 342 and the temporal merge candidate derivation unit 442 determine different time derive temporal merge candidates from the pictures between, and the derived temporal merge candidates are called merge candidates 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 and shall be.
[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, and the history merge candidates are derived and registered in the merge candidate list mergeCandList with the maximum number of merge candidates MaxNumMergeCa nd as the upper limit.
[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 merge 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 less 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 the L0 prediction and the L1 prediction. be registered in the merge candidate list mergeCandList. Here, the average merge candidate is the first one registered in the merge candidate list mergeCandList The motion vectors of the merge candidate and the second merge candidate are averaged for each of the L0 prediction and the L1 prediction to obtain a new merge candidate having the motion vector.
[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 less 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 being capped at the maximum number of merge candidates MaxNumMergeCand, and then 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 prediction mode where the motion vector has a value of (0,0) is dual prediction (Pred_BI) Add a merge candidate with a prediction mode of L0 prediction (Pred_L0) where the motion vector has a value of (0,0). In the B slice, a prediction mode where the motion vector has a value of (0,0) is dual prediction (Pred_BI) 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 amount of code and the amount of distortion, 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 merge candidates based on the decoded merge index and supplies the selected merge candidates 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 encoding block to be processed and the picture to be processed are temporally different. In the processing of the temporal prediction motion vector for the picture to be processed, a specific processed picture referred to is defined as ColPic. ColPic is specified by syntax. Also, FIG. 38B shows the processed encoding blocks existing at the same position as the encoding block to be processed 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 existing 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 unavailable or it is intra prediction (MODE_INTRA), the encoded block existing at the lower right center of the same position as the processing target encoded
[0115] block within ColPic is set as colCb. This encoded block corresponds to the encoded block T1 in FIG. 38B. 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 is L0 when deriving for reference list 0 and LX is L1 when deriving for reference list 1. When the inter prediction information is unavailable, availableFlagLXCol = 0 and mvLXCol = (0, 0). On the other hand, when the inter prediction information is available, availableFlagLXCol = 1. Also, depending on the
[0116] And if availableFlagLXCol = 1, add mvLXCol as a candidate to the predicted motion vector candidate list mvpListLX in the normal prediction motion vector mode derivation unit 301 described above ( S4205). Thus, the processing of the temporal prediction motion vector candidate derivation unit 322 is completed.
[0117] The operation of the temporal prediction motion vector candidate derivation unit 422 in the normal prediction motion vector mode derivation unit 401 in FIG. 23 is the same as that of the temporal prediction motion vector candidate derivation unit 322 described above, so the description thereof is omitted.
[0118] The operation of the temporal merge candidate derivation unit 342 in the normal merge mode derivation unit 302 in FIG. 18 is substantially the same as the operation of the temporal prediction motion vector candidate derivation unit 322 described above. However, in S4205 in FIG. 39, it is only different in that the following operations are performed. When the flag availableFlagL0C ol or the flag availableFlagL1Col is 1, add mvL0Col and mvL1Col as candidates to the merge candidate list mergeCandList in the normal merge mode derivation unit described above ( S4205).
[0119] The operation of the temporal merge candidate derivation unit 442 in the normal merge mode derivation unit 402 in FIG. 24 is the same as that of the temporal merge candidate derivation unit 342 described above, so the description thereof is omitted.
[0120] <Update of the history predicted motion vector candidate list> Next, the initialization method and update method of the history predicted 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 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 string 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 in the history prediction motion vector candidate list HmvpCandList as the inter prediction information candidate hMvpCand. The inter prediction information candidate hMvpCand includes the reference index refIdxL0 of L0, 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] provided in the encoding information storage memory 111 on the encoding side and the encoding information storage memory 205 on the decoding side in the elements (i.e., inter prediction information) registered in the history prediction motion vector candidate list HmvpCandList, 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. 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.
[0125] First, initialize the history prediction motion vector candidate list HmvpCandList in units of slices. Add history prediction motion vector candidates to all elements of the history prediction motion vector candidate list HmvpCandList at the beginning of the slice, and set the value of the number NumHmvpCand of the history prediction motion vector candidates registered in the history prediction motion vector candidate list HmvpCandList to 6 (step S2101 in FIG. 26). Note that such numerical values are just examples. In actual implementation on, for example, a computer system, the numerical values may be changed as necessary. The same applies to other numerical values.
[0126]
[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] FIG. 40 is a table showing an example of a history prediction motion vector candidate 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. The history prediction motion vector index ranges from (the number of history prediction motion vector candidates NumHmvpCand - 1) to 0, and for each slice type, the inter prediction information with the motion vector value of (0, 0) is used as a history prediction motion vector candidate and added to the history prediction motion vector candidate list HmvpCandList to fill the history prediction motion vector candidate list with history candidates. At this time, the history prediction motion vector index starts from (the number of history prediction motion vector candidates NumHmvpCand - 1), and the reference index refIdxLX (X is 0 or 1) is set to a value incremented by 1 from 0 to (the number of reference pictures numRefIdx - 1). After that, duplication of 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 smaller value of the reference index with a generally higher selection rate to the history prediction motion vector index with a higher probability of being added to the prediction motion vector candidate list and the merge candidate list, the coding efficiency can be improved. .
[0129] In addition, the list of motion vector prediction candidates is updated in units of slices. By filling the number of historical motion vector predictor candidates, the number of historical motion vector predictor candidates can be treated as a fixed value. Therefore, for example, the process of deriving a history predicted motion vector candidate and the process of deriving a history merge candidate can be simplified. This can be done.
[0130] Here, the value of the motion vector is set to (0, 0), which generally has a high selection probability. For example, the differential motion vector can be coded using values such as (4,4), (0,32), and (-128,0). The efficiency may be improved, or multiple predetermined values may be set to improve the coding efficiency of the differential motion vector. You can do that.
[0131] Also, the history predicted motion vector index (the number of history predicted motion vector candidates NumHmvpC and -1), and the reference index refIdxLX (X is 0 or 1) starts from 0 (reference picture The number of objects (numRefIdx-1) is incremented by 1, but the historical forecast behavior is Vector indices may start from 0.
[0132] Figure 41 shows the history of motion vector prediction candidates added by initializing the list HmvpCandList. 10 is a table showing another example of candidate historical motion vector predictors. In this example, the number of reference pictures is two. The reference index is set so that there is no overlap between the historical motion vector predictor candidates in each element of pCandList. Inter prediction information with different values of either the column or the motion vector is used as a historical 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 different value 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.
[0133] In this way, by filling the history prediction motion vector candidate list with non - overlapping history prediction motion vector candidates in slice units, 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 performed in coding block units 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 increased.
[0135] Also, although 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.
[0136] Figure 42 is a table showing another example of a history prediction motion vector candidate added by initializing 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 each element of the history prediction motion vector candidate list HmvpCandList, reference index 0 and inter-prediction information with different motion vector values are added as history prediction motion vector candidates so that there is no duplication among the history prediction motion vector candidates, and the history prediction motion vector candidate list is filled. 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 history prediction motion vector candidates and setting the value of the number NumHmvpCand of 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 initialization can be performed 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 among 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 "ャ" was set, but the history prediction motion The motion vector index may start from 0.
[0141] Subsequently, for each coded block within 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 in units of coded blocks. A flag identicalCandExist indicating whether the same candidate exists 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 in 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 in the bit sequence decoder 201 on the decoding side as the normal prediction motion vector mode or the normal merge mode, the inter prediction information is used as the candidate hMvpCand for inter prediction information to be registered. When it is determined in 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 in the bit sequence decoder 201 on the decoding side as 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 in 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 in the bit sequence decoder 201 on the decoding side as 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 it does not exist, skip steps S2105 to S2106 (step S 2104: NO in Fig. 26). If there is an inter-prediction information candidate hMvpCand to be registered, 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 it so as 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, when it is determined as the normal prediction motion vector mode by the prediction method determination unit 105 on the encoding side, or when decoded as the normal prediction motion vector mode by the bit string decoding unit on the decoding side, set the inter-prediction mode to hMvpCand. When it is determined as 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 when decoded as the intra-prediction mode, sub-block prediction motion vector mode, or sub-block merge mode by the bit string decoding unit on the decoding side, do not update the history prediction motion vector candidate list HmvpCandList. In step S2405 of Fig. 43, when it is determined as the normal prediction motion vector mode by the prediction method determination unit 105 on the encoding side, or when decoded as the normal prediction motion vector mode by the bit string decoding unit on the decoding side, set the inter-prediction mode to hMvpCand. When it is determined as the intra-prediction mode, sub-block prediction motion vector mode, or sub-block merge mode by the prediction method determination unit 105 on the encoding side, or when decoded as the intra-prediction mode, sub-block prediction motion vector mode, or sub-block merge mode by the bit string decoding unit on the decoding side, do not update the history prediction motion vector candidate list HmvpCandList, and proceed to step S2408 without updating the history prediction motion vector candidate list HmvpCandList. 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 following processing of step S2406 and below 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 following processing of step S2406 and below 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 following processing of step S2406 and below 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison. 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison. 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison. 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison. 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison. 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 in the surrounding blocks by adding the differential motion vector, the possibility of duplicate motion information with the existing history prediction motion vector candidates is low even without performing the motion information comparison.
[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 ve ctor index hMvpIdx is from 0 to NumHmvpCand - 1, and the process of step S2123 is repeated (steps S2122 to S2125 in FIG. 27). First, it is compared whether the element HmvpCandList[hMvpIdx] at the hMvpIdx-th position counted from 0 in the history prediction motion vector candidate list is identical to the inter-prediction information candidate hM vpCand (step S2123 in FIG. 27). If they are identical (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 identical (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.
[0149]
[0150] Here, by filling the history prediction motion vector candidate list with history prediction motion vectors, step S2121 in FIG. 27 can be omitted.
[0150] Return to the flowchart of FIG. 26 again, and for the history prediction motion vector candidate list HmvpCandList Perform the shift and addition processing of elements (step S2106 in FIG. 26). FIG. 28 shows the s hift / addition processing procedure flowchart of the history prediction motion vector candidate list HmvpCandList in step S2106 of FIG. 26. First, determine whether to add new elements after removing the elements stored in the history prediction motion vector candidate list HmvpCandList, or to add new elements without removing the elements. Specifically, compare whether the flag identicalCandE xist 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 new elements 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 HmvpCandLis t[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28 ). (Steps S2142~S2144 in FIG. 28). Shift the element forward by copying the element of HmvpCandList[i] to HmvpCandList[i - 1] (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 HmvpCandLis t[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28 ). (Steps S2142~S2144 in FIG. 28). Shift the element forward by copying the element of HmvpCandList[i] to HmvpCandList[i - 1] (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 HmvpCandLis t[NumHmvpCand - 1], which corresponds to the last of the history prediction motion vector candidate list, counted from 0 (step S214 in FIG. 28 5) Finish the element shift and addition process of this history predicted motion vector candidate list HmvpCandList. On the other hand, the flag identicalCandExist, which indicates whether an identical candidate exists, is set to TRUE. If neither of the conditions of NumHmvpCand is 6 is satisfied (step S2141 in FIG. 28: NO), ), without excluding the elements stored in the history motion vector predictor candidate list HmvpCandList, The inter prediction information candidate hMvpCand is added to the end of the historical prediction motion vector candidate list (see Figure 2). 8, step S2146). Here, the end of the history motion vector predictor candidate list is from 0 to It is the NumHmvpCand-th HmvpCandList[NumHmvpCand] counting from the beginning. Increment the element shift and The addition process is then completed.
[0151] Here, the history predicted motion vector candidate list is used in the predicted motion vector mode and merge mode. It shall apply to both, but may apply to only one of them.
[0152] FIG. 31 is a diagram illustrating an example of a process for updating the history motion vector predictor candidate list. The elements (inter prediction information) are registered in the historical predicted motion vector candidate list HmvpCandList When adding a new element to the list, the previous element of the history motion vector predictor candidate list HmvpCandList is added. The new inter-prediction information is compared with the previous inter-prediction information (Fig. 31A). If the value is the same as the third element HMVP2 from the beginning of the vector candidate list HmvpCandList, The element HMVP2 is deleted from the motion vector predictor candidate list HmvpCandList, and the following elements HMVP3 to 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 history prediction motion vector candidate derivation method for the history prediction motion vector candidate list HmvpCandList 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, which is a common process will be described in detail. Figure 29 is a flowchart for explaining the history prediction motion vector candidate derivation process procedure which is the processing procedure of step S304 in Figure 20 and is a common process in the history prediction motion vector candidate derivation unit 423 of the normal prediction motion vector mode derivation unit 401 on the decoding side Derivation method of history prediction motion vector candidates from the history prediction motion vector candidate list HmvpCandList will be described in detail. Figure 29 is a flowchart for explaining the history prediction motion vector candidate derivation process procedure is a flowchart
[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 Figure 29), the processing from step S22 02 to S2209 is omitted, and the history prediction motion vector candidate derivation process procedure is terminated . 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 tLX, and the number of history prediction motion vector candidates NumHmvpCa nd has a value greater than 0 (YES in step S2201 of Figure 29), the processing from step S2202 to S2209 in Figure 29 is performed
[0155] Subsequently, the process from step S2203 to S2208 in FIG. 29 is repeated from index i = 1 to any small value among 4 and the number numCheckedHMVP of candidate historical prediction motion vectors Cand and returned (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 candidate historical prediction motion vector 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 S2204 in FIG. 29: NO), the processes from step S2204 to S2209 in FIG. 29 are omitted, and this candidate historical prediction motion vector 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 S2204 in FIG. 29: NO), the processes from step S2204 to S2209 in FIG. 29 are omitted, and this candidate historical prediction motion vector derivation process procedure is terminated. When the current number numCurrMvpCand of candidate prediction motion vectors
[0156] Subsequently, the processes from step S2205 to S2207 are respectively performed for Y = 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 candidate historical prediction motion vector 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: YES), the processes after step S2206 in FIG. 29 are performed (step S2205 in FIG. 29: NO), the processes from step S2206 to S2209 in FIG. 29 are omitted, and this candidate historical prediction motion vector 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: YES), the processes after step S2206 in FIG. 29 are performed (step S2205 in FIG. 29: YES), the processes after step S2206 in FIG. 29 are performed (step S2205 in FIG. 29: YES), the processes after step S2206 in FIG. 29 are performed
[0157] Subsequently, among the candidate historical prediction motion vector list HmvpCandList, the encoding / decoding target motion An element having the same reference index as the reference index refIdxLX of the vector, and the predicted motion vector In the case of 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 motion vector of LY 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, there is 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 not (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 is performed in the normal predicted motion vector mode and the update process of the historical predicted motion vector candidate list HmvpCandLi 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 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 that it is difficult to include the same or highly correlated candidates.
[0158]
[0159] As a result of such a configuration, the determination process for the same candidate can be omitted, and the processing amount can be suppressed. It becomes like this.
[0160] The above processing from step S2205 to S2207 in Figure 29 is 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 of 4 or 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 S2203 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. 21, which is the processing procedure of step S404, The method for deriving merge candidates will now be described in detail. Figure 30 shows the history merge candidate derivation process. 10 is a flowchart for explaining the process.
[0162] First, initialization 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 Set numCurrMergeCand to the number of elements currently in the merge candidate list.
[0163] Next, set the initial value of the index hMvpIdx to 1, and then calculate from this initial value to NumHmvpCand. 30. Then, the additional processing from step S2303 to step S2310 in FIG. 30 is repeated (FIG. 3 Steps S2302 to S2311 of step 0. 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 the merge 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 the value of sameMotion to FALSE (false) (step S2304 of FIG. 30). Subsequently, set the initial value of index i to 0, and perform the processing of steps S2306 and S2307 of FIG. 30 from this initial value to numOrigMergeCand - 1 (S2305 - S2308 of FIG. 30). Compare whether the (NumHmvpCand - hMvpIdx) - th element HmvpCandList[NumHmvpCand - hMvpIdx] counted from 0 in the historical motion vector prediction candidate list is the same as the i - th element mergeCandList[i] counted from 0 in the merge candidate list (step S2306 of FIG. 30)
[0164] The same value of the merge candidate means that the merge candidates are the same value when the values of all constituent elements (inter - prediction mode, reference index, motion vector) of the merge candidate are the same. When the merge candidates are 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) If 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 of FIG. 30 After 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 The element HmvpCandList[NumHmvpCand - hMvpIdx] at the (NumHmvpCand - hMvpIdx)-th position does not exist in the merge candidate list. Therefore, the element HmvpCandList[NumHmvpCand - hMvpIdx] at the (NumHmvpCand - hMvpIdx)-th position 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). The index hMvpIdx is incremented by 1 (step S23 02 in FIG. 30), and the repetitive process from step S2302 to S2311 in FIG. 30 is performed.
[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.
[0166] <Motion Compensation Prediction Process> The motion compensation prediction unit 306 acquires the position and size of the block that is the target of the current prediction process in the encoding. Further, the motion compensation prediction unit 306 acquires the inter prediction information from the inter prediction mode determination unit 305. Reference indexes and motion vectors are derived from the acquired inter prediction information, and are specified by the reference indexes 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. When generating the prediction signal, the prediction signal is generated after obtaining the image signal at the position where 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.
[0167] In the case of inter prediction where the inter prediction mode is prediction from a single reference picture such as L0 prediction or L1 prediction, the prediction signal obtained from one reference picture is used as the motion compensated prediction signal. When the inter prediction mode is prediction from two reference pictures such as BI prediction, the prediction signal obtained by weighted averaging the prediction signals from the two reference pictures is used as the motion compensated prediction signal, and the motion compensated prediction signal 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. In the case of prediction from a single reference picture, the prediction signal obtained from one reference picture is used as the motion compensated prediction signal. When the inter prediction mode is prediction from two reference pictures such as BI prediction, the prediction signal obtained by weighted averaging the prediction signals from the two reference pictures is used as the motion compensated prediction signal, and the motion compensated prediction signal is supplied to the prediction method determination unit 105. In the case of prediction from two reference pictures, the prediction signal obtained by weighted averaging the prediction signals from the two reference pictures is used as the motion compensated prediction signal. The motion compensated prediction signal 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. 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. 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 compensated prediction unit 406 has the same function as the motion compensated prediction unit 306 on the encoding side. The motion compensated 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 compensated prediction unit 406 supplies the obtained motion compensated prediction signal to the decoded image signal superposition unit 207. The motion compensated 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 compensated 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 compensated 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 compensated prediction unit 406 supplies the obtained motion compensated prediction signal to the decoded image signal superposition 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. Perform prediction using one of them.
[0170] Figure 32 shows a case of single prediction where the reference picture (RefL0Pic) of L0 is at a time before the picture to be processed (CurPic). Figure 33 shows a case of single prediction where the reference picture for L0 prediction is at a time after the picture to be processed. Similarly, single prediction can also be performed by replacing the reference picture for L0 prediction in Figures 32 and 33 with the reference picture for L1 prediction (RefL1Pi c). Replace it with the reference picture for L1 prediction (RefL1Pic) and perform single prediction.
[0171] Define the process of performing prediction from two reference pictures as double prediction. In the case of double prediction, it is expressed as BI prediction using both L0 prediction and L1 prediction. Figure 34 shows a case of double prediction where the reference picture for L0 prediction is at a time before the picture to be processed, and the reference picture for L1 prediction is at a time after the picture to be processed Figure 35 shows a case of double prediction where the reference picture for L0 prediction and the reference picture for L1 prediction are at a time before the picture to be processed Figure 36 shows a case of double prediction where the reference picture for L0 prediction and the reference picture for L1 prediction are at a time after the picture to be processed Figure 36 shows a case where the reference pictures for L0 prediction and L1 prediction are at a time after the picture to be processed.
[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 (for example, a flag) indicating whether to use L0 prediction or not and whether to use L1 prediction or not. For example, it is determined based on information (such as a flag) indicating whether to use L0 prediction or not and whether to use L1 prediction or not. Based on information (e.g., a flag) indicating whether to use L0 prediction and / or L1 prediction.
[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 bitstream 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 obtained 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, and a motion compensation prediction signal is generated. 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 obtained, and the inter prediction mode, reference index, and motion vector of the block currently being processed are derived, and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is supplied to the 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 obtained 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, and a motion compensation prediction signal is generated. 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 function 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 predicted motion vector mode. When the sub-block prediction motion vector mode derivation unit 403 is connected to the sub-block prediction motion vector mode derivation unit 403, 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 compensated prediction signal. The resulting motion compensation prediction signal is supplied to the 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 as 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, this inter prediction information is Inter prediction of the block currently being processed, obtained from the prediction mode determination unit 305 The mode, reference index, and motion vector are derived, and a motion compensation prediction signal is generated. The resulting 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 function 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. , the inter prediction information by the sub-block merge mode derivation unit 404 is and obtains the inter prediction mode and reference index of the currently processed block. , 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, it is suppressed so that motion compensation by the affine model is not used at the sequence unit. 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, motion compensation by the affine model can be used in the encoded video sequence.
[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 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 six-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 six-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 four-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 motion vectors to generate a motion compensated prediction signal.
[0188] The four-parameter affine model is defined as the horizontal and vertical components of the motion vectors of the two control points. The motion vector of a sub-block is derived from the four vertical component parameters. This is a mode in which motion compensation is performed at the pixel position.
[0189] According to the first embodiment described above, in the historical motion vector predictor candidate derivation process, The process is branched between the normal predicted motion vector mode and the normal merge mode. In the normal merge mode, the historical predicted motion vector candidate list HmvpCandList is updated. By doing so, the amount of processing required for the update process can be reduced. In merge mode, the historical motion vector predictor candidate list HmvpCandList is not updated. By doing so, the same or highly correlated candidates are included in the history predicted motion vector candidate list HmvpCandList. The addition of complements can be suppressed, and the process of determining whether the candidate is the same can be performed in the process of deriving the historical predicted motion vector candidate. This eliminates the need to perform the above steps, which further reduces the amount of processing.
[0190] All of the above-described embodiments may be combined in multiple ways.
[0191] In all the embodiments described above, the bitstream output by the image coding device is a specific data so that it can be decoded according to the encoding method used in the embodiment. The image decoding device corresponding to this image coding device has the following data format. It is possible to decode bitstreams of a particular 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. 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 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. FIG. 37 shows an example of the hardware configuration of the encoding / decoding device according to the present embodiment.
[0193]
[0194]
[0195] The device 0 includes the configurations of the image encoding device and the image decoding device according to the embodiments of the present invention. Specifically, such an encoding / decoding device 9000 includes a CPU 9001, a codec IC 9002, an I / O interface 9003, a memory 9004, an optical disk drive 9005, a network interface 9006, and a video interface 9009, and each part is connected by a bus 9010.
[0196] The image encoding unit 9007 and the image decoding unit 9008 are typically implemented as the codec IC 9002. The image encoding process of the image encoding device according to the embodiments of the present invention is executed by the image encoding unit 9007, and the image decoding process in the image decoding device according to the embodiments of the present invention is executed by the image decoding unit 9008. The I / O interface 9003 is realized by, for example, a USB interface and is connected to an external keyboard 9104, a mouse 91 05, etc. The CPU 9001 controls the encoding / decoding device 90 00 to execute the operations desired by the user based on the user operations input via the I / O interface 9003. Examples of user operations using the keyboard 9104, the mouse 9105, etc. include selecting which function of encoding or decoding to execute, setting the encoding quality, the input / output destination of the bitstream, the input / output destination of the image, etc. When the user desires to perform an operation to play an image recorded on the disk recording medium 9100, the optical disk drive 9005 reads a bitstream from the inserted disk recording medium 9100 and sends the read bitstream to the image decoding unit 9008 of the codec I C 9002 via the bus 9010. The image decoding unit 9008 decodes the input bitstream ...
[0197] If the user desires to perform an operation to play an image recorded on the disk recording medium 9100, the optical disk drive 9005 reads a bitstream from the inserted disk recording medium 9100 and sends the read bitstream to the image decoding unit 9008 of the codec IC 9002 via the bus 9010. The image decoding unit 9008 decodes the input bitstream ... ... Execute the image decoding process in the image decoding device according to the embodiment of the present invention for the stream, and decode the image and send it to an external monitor 9103 via the video interface 9009. Also, The encoding / decoding device 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 bitstream from the network 9101 instead of reading the bitstream from the input disk recording medium 9100. Also, when the user desires to play an image recorded in the memory 9004, the image decoding process in the image decoding device according to the embodiment of the present invention is executed on the bitstream recorded in the memory 9004. When the user desires to encode an image captured by an external camera 9102 and record it 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 device according to the embodiment of the present invention on the image input via the video interface 9009 and creates a bitstream. Then, the bitstream is sent to the memory 9004 via the bus 9010. When the user changes to the memory 9004 and records the bitstream on the disk recording medium 9100 ...
[0198] ... ... ... ... ... ... ... When it is desired to record the mu, the optical disk drive 9005 writes a bit stream to the inserted disc recording medium 9100.
[0199] It is also possible to realize a hardware configuration having an image encoding device and not having an image decoding device, or a hardware configuration having an image decoding device and not having an image encoding device. Such a hardware configuration is realized, for example, by replacing the codec IC 9002 with the image encoding unit 9007 or the image decoding unit 9008, respectively.
[0200] The above-described processing related to encoding and decoding may of course be realized by using hardware for transmission, storage, and reception devices, but may also be realized by firmware stored in a ROM (Read Only Memory), a flash memory, etc., or 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 various modifications are possible for each combination of these constituent elements and each processing process, and it is understood by those skilled in the art that such modifications are also within the scope of the present invention.
Explanation of Signs
[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 transform / quantization unit, 108 bit sequence encoding unit, 10 9 inverse quantization / inverse orthogonal transform 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 transform 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 the 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 the block to be processed to the predicted motion vector candidate, A predicted motion vector candidate supplementing 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 the 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 the motion information of the encoded block, and A moving image encoding apparatus, 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.
2. A motion information history memory step that stores the history of a plurality of motion information sets of a picture to be processed, A predicted motion vector candidate derivation step that derives a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds the motion information of an encoded block, A spatial predicted motion vector candidate derivation step that adds 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 supplementing step 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 the motion information of an encoded block, A sub-block merge candidate derivation step 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 the motion information of the encoded block, and A moving image encoding method, 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.
3. 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 holding the 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 the block to be processed to the predicted motion vector candidate; A predicted motion vector candidate supplementation 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 the motion information of the encoded block; A sub-block merge candidate derivation step of deriving a sub-block merge candidate in which the motion information differs in units of sub-blocks obtained by dividing an encoded block into a predetermined size from the memory that holds the 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 that derives a predicted motion vector candidate including a history predicted motion vector candidate from a memory that holds the motion information of a decoded block; A spatial predicted motion vector candidate derivation unit that adds 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 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 the motion information of the decoded block; A sub-block merge candidate derivation unit that derives a sub-block merge candidate in which the motion information differs in units of sub-blocks obtained by dividing a decoded block into a predetermined size from the memory that holds the 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 motion information of a decoded 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 a decoded 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 a decoded block into a predetermined size from the memory that holds 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 motion information of a decoded 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 a decoded 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 a decoded block into a predetermined size from the memory that holds 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
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
Moving image coding / decoding device using moving compensation inter-frame prediction system employing affine transformation
JP1997172644A