Image decoding device, image decoding method, and image decoding program
The image decoding device optimizes inter prediction by updating candidates and applying affine transformation motion compensation to reduce processing load and enhance encoding efficiency, addressing the inefficiencies of existing technologies.
Patent Information
- Application Number
- JP2024035709
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-03-28
- Filing Date
- 2024-03-08
- Publication Date
- 2025-01-22
- Estimated Expiration
- 2039-12-27
AI Technical Summary
Existing image encoding technologies, such as those described in Patent Document 1, suffer from high processing loads due to image conversion processes, which affect encoding efficiency.
An image decoding device that updates inter prediction information candidates using spatial and temporal candidates, derives and selects optimal candidates for inter prediction, and applies affine transformation motion compensation to reduce processing load and enhance encoding efficiency.
The proposed solution achieves highly efficient image encoding and decoding with reduced processing load, improving overall encoding efficiency.
Smart Images

Figure 0007619502000001 
Figure 0007619502000002 
Figure 0007619502000003
Abstract
Description
[Technical field]
[0001] The present invention relates to an image encoding and decoding technique that divides an image into blocks and performs prediction. [Background technology]
[0002] In image encoding and decoding, the image to be processed is divided into blocks, which are groups of a predetermined number of pixels. Divide into appropriate blocks and process in blocks. By appropriately setting the inter-frame prediction and frame prediction, the coding efficiency is improved. do.
[0003] In video coding and decoding, inter-prediction is used to predict from previously coded or decoded pictures. In Patent Document 1, affine transformation is used in inter prediction, which improves coding efficiency. The technology to be applied is described. In moving images, objects undergo transformations such as enlargement, reduction, and rotation. It is not uncommon for this to happen, and by applying the technology of Patent Document 1, efficient coding This becomes possible. [Prior art documents] [Patent documents]
[0004] [Patent Document 1] Japanese Patent Application Publication No. 9-172644 Summary of the Invention [Problem to be solved by the invention]
[0005] However, the technology in Patent Document 1 involves image conversion, which places a heavy processing load on the user. In view of the above, the present invention provides an efficient encoding technique with a low load. . [Means for solving the problem]
[0006] In order to solve the above problem, an image decoding device according to one aspect of the present invention provides a method for decoding a video signal included in a history candidate list. a coding information storage unit that updates candidates to be stored in the coding information storage unit with inter prediction information used in the inter prediction; The spatial candidates are derived from the inter prediction information of multiple blocks adjacent to the target block. A spatial candidate derivation unit that adds the spatial candidate to a candidate list, and a spatial candidate derivation unit that adds the spatial candidate to a candidate list. a history candidate derivation unit that adds one or more candidates to the first candidate list to generate a second candidate list; a candidate selection unit that selects one selection candidate from the candidates included in the second candidate list; an inter prediction unit that performs inter prediction using the selection candidate as inter prediction information, The history candidate derivation unit is configured to determine whether or not a candidate included in the first candidate list is overlapped depending on an inter prediction mode. Toggles whether to add duplicate candidates. Effect of the Invention
[0007] According to the present invention, highly efficient image encoding / decoding processing can be realized with a low load. [Brief description of the drawings]
[0008] [Figure 1] FIG. 1 is a block diagram of an image encoding device according to a first embodiment. [Diagram 2] FIG. 1 is a block diagram of an image decoding device according to a first embodiment. [Diagram 3] 13 is a flowchart for explaining an operation of dividing a tree block. [Figure 4] FIG. 13 is a diagram showing how an input image is divided into tree blocks. [Diagram 5] FIG. 1 is a diagram illustrating a z-scan. [Figure 6] FIG. 13 is a diagram showing the divided shapes of blocks. [Figure 7]13 is a flowchart for explaining an operation of dividing a block into four. [Figure 8] 13 is a flowchart for explaining an operation of dividing a block into two or three. [Figure 9] This is a syntax for expressing the shape of block division. [Figure 10] FIG. 1 is a diagram illustrating intra prediction. [Figure 11] FIG. 13 is a diagram for explaining reference blocks for inter prediction. [Figure 12] This is a syntax for expressing a coding block prediction mode. [Figure 13] FIG. 11 is a diagram showing the correspondence between syntax elements and modes relating to inter prediction. [Figure 14] FIG. 13 is a diagram for explaining affine transformation motion compensation of two control points. [Figure 15] FIG. 13 is a diagram for explaining affine transformation motion compensation of three control points. [Figure 16] FIG. 2 is a block diagram showing a detailed configuration of an inter prediction unit 201 in FIG. [Figure 17] 17 is a block diagram showing a detailed configuration of a normal predicted motion vector mode derivation unit 301 in FIG. 16. [Figure 18] 17 is a block diagram showing a detailed configuration of a normal merge mode derivation unit 302 in FIG. 16. [Figure 19] 17 is a flowchart for explaining a normal predicted motion vector mode derivation process of the normal predicted motion vector mode derivation unit 301 of FIG. 16. [Figure 20] 13 is a flowchart showing a processing procedure of a normal predictor motion vector mode derivation process having a function common to a normal predictor motion vector mode derivation unit 301 and a normal predictor motion vector mode derivation unit 401 according to the embodiment of the present invention. [Figure 21] 11 is a flowchart illustrating a procedure of a merge mode derivation process having a function common to a normal merge mode derivation unit 302 and a normal merge mode derivation unit 402 according to the embodiment of the present invention. [Figure 22]FIG. 3 is a block diagram showing a detailed configuration of an inter prediction unit 203 in FIG. 2. [Diagram 23] 23 is a block diagram showing a detailed configuration of a normal predicted motion vector mode derivation unit 301 in FIG. 22. FIG. [Figure 24] 17 is a block diagram showing a detailed configuration of a normal merge mode derivation unit 302 in FIG. 16. [Diagram 25] 23 is a flowchart for explaining a normal predicted motion vector mode derivation process of the normal predicted motion vector mode derivation unit 301 in FIG. 22. [Figure 26] 3 is a block diagram of a sub-block prediction motion vector mode derivation unit 303 in the encoding device of the present application. FIG. [Figure 27] 4 is a block diagram of a sub-block prediction motion vector mode derivation unit 403 in the decoding device of the present application. FIG. [Figure 28] FIG. 3 is a block diagram of a sub-block merge mode derivation unit 304 in the encoding device of the present application. [Figure 29] FIG. 4 is a block diagram of a sub-block merging mode derivation unit 404 in the decoding device of the present application. [Diagram 30] FIG. 13 is a diagram for explaining derivation of affine inheritance predicted motion vector candidates. [Diagram 31] FIG. 13 is a diagram for explaining derivation of affine constructed predicted motion vector candidates. [Diagram 32] FIG. 13 is a diagram for explaining affine inheritance merge candidate derivation. [Diagram 33] FIG. 13 is a diagram illustrating affine construction merge candidate derivation. [Diagram 34] 13 is a flowchart of deriving an affine inheritance predicted motion vector candidate. [Diagram 35] 13 is a flowchart of deriving an affine constructed predicted motion vector candidate. [Diagram 36] 13 is a flowchart of affine inheritance merge candidate derivation. [Figure 37] 13 is a flowchart of affine construct merge candidate derivation. [Figure 38]38 is a flowchart for explaining a procedure for initializing and updating a history motion vector predictor candidate list. [Figure 39] 13 is a flowchart of a procedure of a same element confirmation process in the procedure of a process of deriving a history predicted motion vector candidate. [Diagram 40] 13 is a flowchart of an element shifting process procedure in the history motion vector predictor candidate derivation process procedure. [Diagram 41] 13 is a flowchart illustrating a procedure of a process of deriving a history predicted motion vector candidate. [Diagram 42] 13 is a flowchart illustrating a history merging candidate derivation process procedure. [Diagram 43] FIG. 11 is a diagram for explaining a procedure of a history motion vector predictor candidate list update process. [Diagram 44] 13 is a flowchart for explaining the operation of the sub-block temporal merge candidate derivation unit 381. [Diagram 45] 13 is a flowchart illustrating a process of deriving adjacent motion information of a block. [Diagram 46] 13 is a flowchart illustrating a process of deriving a temporal motion vector. [Figure 47] 13 is a flowchart illustrating derivation of inter prediction information. [Figure 48] 13 is a flowchart illustrating a process of deriving sub-block motion information. [Figure 49] FIG. 2 is a diagram for explaining the temporal relationship between pictures. [Figure 50] 13 is a flowchart for explaining a process of deriving a temporal motion vector predictor candidate in a normal motion vector predictor mode derivation unit 301. [Figure 51] 13 is a flowchart for explaining the derivation process of ColPic in the derivation process of a temporal motion vector predictor candidate in the normal motion vector predictor mode derivation unit 301. [Figure 52]13 is a flowchart for explaining a process of deriving coding information of ColPic in a process of derivation of a temporal motion vector predictor candidate in the normal motion vector predictor mode derivation unit 301. [Diagram 53] 13 is a flowchart illustrating a process of deriving inter prediction information. [Figure 54] 13 is a flowchart showing the procedure of a process of deriving inter prediction information of a coding block when the inter prediction mode of the coding block colCb is bi-prediction (Pred_BI). [Figure 55] 13 is a flowchart illustrating a procedure of a motion vector scaling calculation process. [Figure 56] 13 is a flowchart illustrating a process of deriving a temporal merge candidate. [Figure 57] FIG. 13 is a diagram for explaining the prediction direction of motion compensation prediction in the case where uni-prediction is used and the L0 reference picture (RefL0Pic) is located at a time earlier than the current picture to be coded (CurPic). [Figure 58] FIG. 13 is a diagram for explaining the prediction direction of motion compensation prediction in a case where uni-prediction is performed and the reference picture for L0 prediction is at a later time than the current picture to be coded. [Figure 59] FIG. 1 is a diagram for explaining the prediction direction of motion compensation prediction in a bi-predictive case where a reference picture for L0 prediction is located at a time earlier than the picture to be coded and a reference picture for L1 prediction is located at a time later than the picture to be coded. [Figure 60] FIG. 13 is a diagram for explaining the prediction direction of motion compensation prediction in bi-prediction where a reference picture for L0 prediction and a reference picture for L1 prediction are located at a time earlier than the current picture to be coded. [Figure 61] FIG. 13 is a diagram for explaining the prediction direction of motion compensation prediction in bi-prediction where a reference picture for L0 prediction and a reference picture for L1 prediction are located at a time later than the current picture to be coded. [Figure 62] 13 is a table showing an example of a history motion vector predictor candidate added by initialization of a history motion vector predictor candidate list. [Figure 63]13 is a table showing another example of a history motion vector predictor candidate added by initialization of the history motion vector predictor candidate list. [Figure 64] 13 is a table showing another example of a history motion vector predictor candidate added by initialization of the history motion vector predictor candidate list. [Figure 65] 13 is a flowchart illustrating a procedure of a historical motion vector predictor candidate derivation process according to Modification 2 of the first embodiment. [Figure 66] FIG. 2 is a diagram illustrating an example of a hardware configuration of a coding / decoding device according to a first embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] The technologies and technical terms used in this embodiment will be defined below.
[0010] <Tree Block> In this embodiment, the image to be encoded / decoded is divided equally into a predetermined size. As shown in FIG. 4, in this embodiment, the subtree block is The size of the tree block is set to 128x128 pixels. Instead, any size can be set. , which corresponds to the decoding target in the decoding process. That is, the order is from left to right and from top to bottom. The inside of each tree block is further reordered. Recursive division is possible. Blocks to be coded and decoded after tree block division We define a coding block as a tree block. We also refer to the tree block and coding block as a block. By dividing the image into blocks appropriately, efficient coding is possible. The size of the block can be a fixed value pre-agreed between the encoding device and the decoding device. The size of the tree block determined by the encoding device is transmitted to the decoding device. It can also be taken.
[0011] <Prediction mode> The processed image (coded block in the coding process) is The decoded signal is used for the decoded image, image signal, etc., and the decoded signal is used for the decoded image, image signal, etc. Intra prediction (MODE) is used to predict the surrounding image signals of the image. MODE_INTRA), and inter prediction (MODE_INTER), which predicts from the image signal of the processed image. This model distinguishes between intra prediction (MODE_INTRA) and inter prediction (MODE_INTER). The prediction mode (PredMode) is defined as the prediction mode (PredMode). It has two values, inter prediction (MODE_INTRA) or inter prediction (MODE_INTER), and can be selected for encoding. .
[0012] <Inter Prediction> In inter-prediction, which predicts from the image signal of a processed image, multiple processed images are used as reference pixels. It can be used as a reference picture. To manage multiple reference pictures, L0 (reference list) Two types of lists are defined: L0 (reference list L1) and L2 (reference index L3). In P slices, L0 prediction (Pred_L0) is available. For B slices, L0 prediction (Pred_L0), L1 prediction (Pred_L1), and bi-prediction (Pred_BI) are available. Available. L0 prediction (Pred_L0) refers to reference pictures managed by L0. This is inter prediction, and L1 prediction (Pred_L1) refers to the reference picture managed by L1. Bi-prediction (Pred_BI) is inter-prediction in which L0 prediction and L1 prediction are performed together, and L0 It is an inter prediction that refers to one reference picture managed in L1 and L2. The information specifying L0 prediction, L1 prediction, or bi-prediction is defined as a reference mode. For constants and variables with the subscript LX in the output, processing is performed for each L0 and L1. It is assumed that this will be done.
[0013] <Predictive motion vector mode> The predicted motion vector mode is an index for specifying a predicted motion vector, a differential motion vector, Transmits vectors, reference modes, and reference indexes, and performs inter prediction for the block to be coded. This is a mode in which the predicted motion vector is determined based on the processed motion vector adjacent to the current block. A block that belongs to a processed image and is located in the same position as the target block or in the A candidate motion vector predictor derived from a block located in the vicinity and a candidate motion vector predictor The vector is derived from an index to identify the vector.
[0014] <Merge mode> In the merge mode, the difference motion vector and reference index are not transmitted, and the target block is merged. The processed blocks adjacent to the target block or blocks belonging to the processed image The inter prediction information of the block located at the same position as the block or in its vicinity (neighborhood) is used for processing. This is a mode for deriving inter prediction information for the current block. The processed blocks adjacent to the target block and the inter-blocks of the processed blocks The prediction information is defined as a spatial merge candidate. Blocks located at the same location as the block or in its vicinity (neighborhood), and the interblocks Inter prediction information derived from the inter prediction information is defined as a temporal merge candidate. is registered in the merge candidate list, and the prediction of the target block is determined by the merge index. Identify merge candidates to use in
[0015] <Proximity block> FIG. 11 shows the procedure for deriving inter prediction information in the predicted motion vector mode and the merge mode. A0, A1, A2, B0, B1, B2, B3 is a processed block adjacent to the block to be processed. T0 is the block to be coded / decoded. Blocks belonging to the processed image are used for encoding / decoding processing. A block is a block that is located in the same position as the block or in its vicinity (nearby).
[0016] A1 and A2 are located to the left of the coding block to be processed and are adjacent to the coding block to be processed. B1 and B3 are adjacent blocks located above the coding block to be processed. A0, B0, and B2 are the blocks adjacent to the target coding block. These are the blocks located at the bottom left, top right, and top left of the encryption block.
[0017] Details of how neighboring blocks are treated in predictive motion vector mode and merge mode Details will be given later.
[0018] <Affine transformation motion compensation> Affine transformation motion compensation is performed by dividing the image into subblocks of a predetermined unit, and performing the following for each subblock: The motion vector of each subblock is determined individually and motion compensation is performed. The blocks are processed blocks that are adjacent to the block to be processed, or blocks that belong to the processed image. Interpolation of blocks located at the same position as the target block or in its vicinity (neighborhood) In this embodiment, the subblock is derived based on one or more control points derived from the prediction information. The size of the sub-block is set to 4x4 pixels, but the size of the sub-block is not limited to this. Alternatively, the motion vector may be derived on a pixel-by-pixel basis.
[0019] FIG. 14 shows an example of affine transformation motion compensation for two control points. Since the control point has two parameters, a horizontal component and a vertical component, the control point has two The affine transformation in this case is called a four-parameter affine transformation. are the control points. Figure 15 shows an example of affine transformation motion compensation when there are three control points. In the case of , the three control points have two parameters, a horizontal component and a vertical component, so An affine transformation with three control points is called a six-parameter affine transformation. CP1, CP2, and CP3 are control points.
[0020] Affine transformation motion compensation is available in both the predicted motion vector mode and the merge mode. It is also available in the predictive motion vector mode. The mode in which the affine transformation is performed is defined as the subblock prediction motion vector mode, and the merge mode is A mode in which motion compensation is applied is defined as a sub-block merging mode.
[0021] <Inter prediction syntax> The syntax related to inter prediction will be described with reference to FIG. 12 and FIG. 13. rge_flag indicates whether the coding block to be processed is in merge mode or in predicted motion vector mode. The merge_affine_flag is a flag indicating whether to use the merge mode. A flag that indicates whether to apply the sub-block merge mode in the lock. _flag is the sub-block predicted motion vector for the coding block to be processed in the predicted motion vector mode. A flag that indicates whether to apply vector mode. This is a flag to determine the number of control points in the block prediction motion vector mode. 3 shows the values of each syntax element and the corresponding prediction method. erge_affine_flag=0 is a merge mode that is not a subblock merge, the normal merge mode. merge_flag=1,merge_affine_flag=1 corresponds to the sub-block merge mode. merge_flag=0,inter_affine_flag=0 is not a sub-block prediction motion vector mode. This corresponds to the normal predicted motion vector mode, which is a simple predicted motion vector merge. =0,inter_affine_flag=1 corresponds to the sub-block predicted motion vector mode. If ag=0 and inter_affine_flag=1, cu_affine_type_flag is also transmitted to indicate the number of control points. Determine.
[0022] <poc> POC (Picture Order Count) is a variable associated with the picture to be coded, The value is set to a value that increases by 1 in the picture output order. It can also determine whether a picture is a frame or not, determine the order of pictures in the output order, and For example, we can calculate the distance between the POCs of two pictures. If the POC of two pictures is different, they are considered to be the same picture. The picture with the smaller POC value is the one that will be output first. The difference in POC between two pictures indicates the distance between the pictures along the time axis.
[0023] (First embodiment) Regarding the image encoding device 100 and the image decoding device 200 according to the first embodiment of the present invention, He explains.
[0024] FIG. 1 is a block diagram of an image coding device 100 according to a first embodiment. The video encoding device in this embodiment includes an image encoding device 100, a block division unit 101, and an inter prediction unit. unit 102, intra prediction unit 103, decoded image memory 104, prediction method determination unit 105, residual A signal generating unit 106, an orthogonal transform and quantization unit 107, a bit string encoding unit 108, and a dequantization and dequantization unit 109. The image processing apparatus includes an orthogonal transform unit 109, a decoded image signal superimposing unit 110, and an encoded information storage memory 111. can.
[0025] The block division unit 101 recursively divides an input image to generate coding blocks. The block division unit 101 divides the blocks to be divided into horizontal and vertical blocks. The quadrants to be divided and whether the block to be divided is to be divided horizontally or vertically. The generated image signal of the coding block to be processed is divided into 2-3 division units. The signal is supplied to the prediction unit 102, the intra prediction unit 103, and the residual signal generation unit 106. The block division unit 10 supplies information indicating the recursive division structure to the bit string encoding unit 108. The detailed operation of 1 will be described later.
[0026] The inter prediction unit 102 performs inter prediction on the coding block to be processed. The prediction mode stored in the storage memory, the decoded image stored in the decoded image memory 104 Multiple inter-prediction information candidates are derived from the image signal, and the most suitable inter-prediction information is selected from the multiple candidates. Select an inter prediction mode, and select an inter prediction mode and The prediction method determining unit 105 supplies a prediction image signal corresponding to the prediction mode. The detailed configuration and operation of 2 will be described later.
[0027] The intra prediction unit 103 performs intra prediction on the coding block to be processed. A predicted image signal is generated by intra-prediction from the decoded image signal stored in the memory 104. a plurality of intra-prediction modes, and a suitable intra-prediction mode is selected from the plurality of intra-prediction modes. and a predicted image signal according to the selected intra-prediction mode. The prediction method is then supplied to the measurement method determination unit 105. FIG. 10 shows an example of intra prediction. The figure shows the correspondence between the prediction direction of intra prediction and the prediction mode number. For example, 50 generates an intra-prediction image by copying pixels vertically. Mode 1 is DC mode, in which all pixel values of the processing target block are the average value of the reference pixels. Prediction mode 0 is a planar mode, and the vertical and horizontal reference This is a mode that creates a two-dimensional intra-prediction image from pixels. This is an example of generating an intra-prediction image for the case of mode 40. The value of the reference pixel in the direction indicated by the prediction mode is copied. If the pixel value is not the integer position, the reference pixel value is determined by interpolation from the reference pixel values of the neighboring integer positions.
[0028] The decoded image memory 104 stores the decoded image generated by the decoded image signal superimposing unit 110 . The decoded image stored in the decoded image memory is processed by the inter prediction unit 102 and the inter prediction unit 103. Supply to 3.
[0029] The prediction method determination unit 105 determines the amount of coding information and residual signal code, the predicted image, and By evaluating the amount of distortion between image signals, etc., the optimal prediction mode (in In the case of merge mode of inter prediction, the merge mode is sub-block merge mode (sub-block merge flag) The coding information of the inter prediction motion vector is supplied to the bit stream coding unit 108. For mode, inter prediction mode, predicted motion vector index, L0, L1 reference index, differential motion vector, information indicating whether it is a sub-block mode (sub-block The coding information such as the predicted motion vector flag is supplied to the bitstream coding unit 108. The encoded information is supplied to the encoded information storage memory 111.
[0030] The residual signal generating unit 106 subtracts the predicted image signal from the image signal to be processed to generate a residual signal. A difference signal is generated and supplied to the orthogonal transformation and quantization unit 107 .
[0031] The orthogonal transform and quantization unit 107 performs orthogonal transform and quantization on the residual signal in accordance with the quantization parameter. The orthogonal transform and quantization are performed to generate a residual signal, which is then inversely transmitted to the bit stream coding unit 108. The resulting signal is supplied to the quantization and inverse orthogonal transformation unit 109.
[0032] The bitstream coding unit 108 encodes the bitstream in units of sequences, pictures, slices, and coding blocks. In addition to the information, the prediction method determined by the prediction method determination unit 104 for each coding block is Specifically, the prediction mode PredMode for each coding block, Partition mode PartMode, in case of inter prediction (PRED_INTER), determine whether it is merge mode flag to merge subblocks, merge index if in merge mode, If not in page mode, the inter prediction mode, the predicted motion vector index, and the differential motion vector Vector information and coding information such as sub-block predicted motion vector flags will be described later. The encoded bit string is then encoded according to a prescribed syntax rule to generate a first encoded bit string. The bit stream coding unit 108 converts the orthogonally transformed and quantized residual signal into a bit stream according to a prescribed syntax rule. The first encoded bit string is entropy-encoded according to The bit stream is multiplexed with the second encoded bit stream according to a prescribed syntax rule to generate a bit stream. Output the program.
[0033] The inverse quantization and inverse orthogonal transformation unit 109 performs the orthogonal transformation supplied from the orthogonal transformation and quantization unit 107. The quantized residual signal is inversely quantized and inversely orthogonally transformed to calculate the residual signal, and the decoded image signal is The signal is supplied to the superimposing unit 110.
[0034] The decoded image signal superimposing unit 110 outputs a predicted image signal according to the determination by the prediction method determining unit 105. The inverse quantization and inverse orthogonal transformation unit 109 superimposes and decodes the residual signal that has been inverse quantized and inverse orthogonal transformed. The decoded image is generated and stored in the decoded image memory 104. After performing filtering to reduce block distortion and other distortions, the decoded image memory 104 may be stored in
[0035] The coding information storage memory 111 stores the prediction mode (inference mode) determined by the prediction method determination unit 105. The coding information storage memory 111 stores coding information such as sub-prediction or intra-prediction. The coding information stored in the 3D prediction block includes a determined motion vector, a reference list, and In addition to the reference index, in case of inter prediction merge mode, the merge index, Encoding information of information indicating whether or not the sub-block merge mode is selected (sub-block merge flag) In the case of the inter prediction prediction motion vector mode, the inter prediction mode, L0, L1 prediction motion vector index, L0, L1 reference index, L0, L1 differential motion vector vector, information indicating whether it is in sub-block mode or not (sub-block predicted motion vector flag) In the case of intra prediction, the determined intra prediction mode, etc. The construction of the history candidate list managed by 111 will be described later.
[0036] FIG. 2 shows a configuration of a video decoding device according to an embodiment of the present invention, which corresponds to the video encoding device shown in FIG. 2 is a block diagram showing the configuration of the video decoding device according to the embodiment. A block division unit 202, an inter prediction unit 203, an intra prediction unit 204, and a coding information storage memory The memory 205, the inverse quantization and inverse orthogonal transformation unit 206, the decoded image signal superimposition unit 207, and the decoded image signal superimposition unit 209 are connected to the decoded image signal superimposition unit 208. The image memory 208 is provided.
[0037] The decoding process of the video decoding device of FIG. 2 is provided inside the video encoding device of FIG. Since this corresponds to the decoding process, the coding information storage memory 205 in FIG. The orthogonal transform unit 206, the decoded image signal superimposing unit 207, and the decoded image memory 208 are configured as follows: , the inverse quantization and inverse orthogonal transformation unit 109 and the decoded image signal superimposition unit 110 of the video encoding device of FIG. , the encoded information storage memory 111, and the decoded image memory 104. It has the function of
[0038] The bit stream supplied to the bit stream decoder 201 follows the rules of the prescribed syntax. The separated first coded bit stream is decoded to obtain a sequence, a picture, a slice, and a The information on the coding block unit and the coding information on the coding block unit are obtained. In general, prediction is done by inter prediction (PRED_INTER) or intra prediction (PRED_INTRA) on a per coding block basis. Prediction mode PredMode, partition mode PartMode, inter prediction (PRED_INTER) If it is, a flag to determine whether it is in merge mode, and if so, the merge index. The subblock merge flag, and the inter prediction mode if the prediction motion vector mode is selected. , L0, L1 predicted motion vector index, L0, L1 reference index, L 0, L1 differential motion vector, sub-block predicted motion vector flag, etc. The information is decoded according to a prescribed syntax rule described later, and the encoded information is sent to the inter prediction unit 20. 3 or intra prediction unit 204, and the encoded information storage memory 205. The second coded bit string is decoded to calculate an orthogonally transformed and quantized residual signal, and the orthogonal transform The quantized residual signal is supplied to the inverse quantization and inverse orthogonal transformation unit 208.
[0039] The inter prediction unit 203 detects that the prediction mode PredMode of the coding block to be decoded is inter When the prediction (PRED_INTER) is in the predicted motion vector mode, the coding information storage memory 205 A plurality of predictive motion vectors are generated by using the coding information of the already decoded image signal stored in A candidate motion vector is derived and registered in a motion vector predictor candidate list described later. A first coded bitstream is decoded from among the plurality of motion vector predictor candidates registered in the supplementary list. A predicted motion vector corresponding to the predicted motion vector index decoded and supplied by the unit 202 The bitstream decoding unit 201 decodes the differential vector and the selected predicted motion vector. A motion vector is calculated from the data, and stored in the coded information storage memory 205 together with other coded information. The coding information of the coding block supplied and stored here is the prediction mode PredMode, PartMode, a flag predFlagL0 indicating whether to use L0 prediction and L1 prediction [xP][yP], predFlagL1[xP][yP], L0, L1 reference index refIdxL0[xP][yP], refI dxL1[xP][yP], L0 and L1 motion vectors mvL0[xP][yP], mvL1[xP][yP], etc. , xP, yP are indices indicating the position of the top left pixel of the coding block in the picture. Prediction mode PredMode is inter prediction (MODE_INTER), and inter prediction mode is L0 prediction. In the case of (Pred_L0), the flag predFlagL0 indicating whether to use L0 prediction is 1, L1 prediction A flag predFlagL1 indicating whether to use L1 prediction is set to 0. In the case of Pred_L1, the flag predFlagL0 indicating whether to use L0 prediction is 0, L1 The flag predFlagL1 indicating whether prediction is used is set to 1. In the case of Pred_BI, a flag predFlagL0 indicates whether to use L0 prediction or not, L1 prediction The flag predFlagL1 indicating whether to use the encoding When the prediction mode of the block PredMode is inter prediction (PRED_INTER) and merge mode, The encoded data stored in the encoded data storage memory 205 is used to derive a candidate for the encoded data. Using the coding information of the encoded block, multiple merge candidates are derived and a merge candidate list is created. The bitstream decoder selects one of the merge candidates from the list of merge candidates. In step 201, a merge candidate corresponding to the decoded and supplied merge index is selected. A flag predFlagL0[x P][yP], predFlagL1[xP][yP], L0, L1 reference index refIdxL0[xP][yP], refIdx Inter prediction information such as L1[xP][yP], L0 and L1 motion vectors mvL0[xP][yP], mvL1[xP][yP] The information is supplied to the motion compensation prediction unit 206 and stored in the coding information storage memory 205. Here, xP, yP are the indices that indicate the position of the top left pixel of the coding block in the picture. The detailed configuration and operation of the inter prediction unit will be described later.
[0040] The intra prediction unit 204 detects whether the prediction mode PredMode of the coding block to be decoded is intra. In the prediction (PRED_INTRA) step, intra prediction is performed. The encoding information includes the intra-prediction mode, and the decoded image is A predicted image signal is generated by intra-prediction from the decoded image signal stored in the image memory 210. The intra prediction unit 20 generates a prediction image signal and supplies the prediction image signal to the decoded image signal superimposition unit 209. 4 corresponds to the intra prediction unit 103 of the image encoding device 100, The predictor 103 performs the same process as the predictor 103.
[0041] The inverse quantization and inverse orthogonal transformation unit 208 converts the orthogonal encoded bit string decoded by the first encoded bit string decoding unit 202 into an inverse quantization and inverse orthogonal transformation signal. The transformed and quantized residual signal is subjected to inverse orthogonal transformation and inverse quantization. A quantized residual signal is obtained.
[0042] The decoded image signal superimposing unit 209 receives the predicted image signal obtained by the inter-prediction in the motion compensation prediction unit 206. 203, or a predicted image signal obtained by intra-prediction in the intra-prediction unit 204, and The decoded signal is obtained by superimposing the residual signal that has been inversely orthogonally transformed and inversely quantized by the orthogonal transform unit 208. The decoded image signal is decoded and stored in the decoded image memory 210. When encoding, a filtering process is performed on the decoded image to reduce block distortion caused by encoding. After this, the image may be stored in the decoded image memory 210.
[0043] Next, the operation of the block division unit 101 in the image coding device 100 will be described. Figure 3 shows the division of an image into treeblocks and the further division of each treeblock. First, the input image is divided into tree blocks of a given size. Each tree block is sorted in a predetermined order, i.e., in a raster order (step S1001). The tree block is scanned in the scan order (step S1002) and the inside of the tree block to be processed is divided. (Step S1003).
[0044] FIG. 7 is a flowchart showing the detailed operation of the division process in step S1003. Then, it is determined whether or not the block to be processed is to be divided into four (step S1101).
[0045] If it is determined that the processing block should be divided into four, the processing block is divided into four (step (Step S1102). For each block into which the processing target block is divided, That is, the upper left, upper right, lower left, and lower right are scanned in this order (step S1103). 6 is an example of a scan order, and 601 in FIG. 6 is an example in which the processing target block is divided into four. The numbers 0 to 3 in 601 indicate the order of processing. For each block, the flowchart in FIG. 7 is called recursively.
[0046] If it is determined that the processing target block is not to be divided into four, it is divided into two or three (step S1 105).
[0047] FIG. 8 is a flowchart showing the detailed operation of the 2-3 division process in step S1105. First, we decide whether to divide the block to be processed into 2 or 3 parts, i.e., how many parts to divide into 2 or 3 parts. It is determined whether or not to perform either of these (step S1201).
[0048] When it is not determined that the processing block should be divided into 2-3 blocks, i.e., when it is determined that the processing block should not be divided If so, the division ends (S1211) and the process returns to the upper hierarchical block.
[0049] If it is determined that the block to be processed should be divided into 2-3, the block to be processed is further divided into 2 It is determined whether or not to divide (step S1202).
[0050] If it is determined that the processing block should be divided into two, the processing block is divided vertically. Based on the result, the processing target block is Divide the target block vertically (step S1204), or divide the target block horizontally ( Step S1205) As a result of step S1204, the processing target block is As shown in FIG. 12, the block is divided into two vertically. As a result of step S1205, the block to be processed is As shown in FIG. 604, it is divided into two parts horizontally.
[0051] In step S1202, if it is not determined that the block to be processed is to be divided into two In other words, if it is determined that the block should be divided into three, whether or not to divide the block vertically Based on the result, the processing target block is divided vertically. (step S1207), or divide the processing target block horizontally (step S 1208). As a result of step S1207, the processing target block is vertically divided into two blocks as shown in FIG. The block is divided into three parts in the vertical direction. As a result of step S1208, the block to be processed is as shown in FIG. As shown, it is divided into three horizontal sections.
[0052] After executing either step S1204 or step S1205, the processing target block is Each divided block is scanned from left to right and from top to bottom (step S1209 The numbers 0 to 3 in 602 to 605 in FIG. 6 indicate the order of processing. For each block, the flowchart in FIG. 8 is called recursively.
[0053] The recursive block splitting described here is done by dividing the number of times or the number of blocks to be processed. The necessity of division may be restricted depending on the size of the image. By making a prearrangement between the decoder and the decoder, the decoder can be realized without transmitting information. Alternatively, the encoding device may determine information that limits the necessity of division and record it in the encoded bit string. The signal may be transmitted to the decoding device by the above-mentioned method.
[0054] Next, the operation of the block division unit 202 in the image decoding device 200 will be described. The block division unit 202 performs the same processing procedure as the block division unit 101 of the image encoding device 101. However, the block division of the image coding device 101 is In the unit 101, an optimization method such as optimal shape estimation by image recognition and strain rate optimization is applied, The optimal block division shape is determined, whereas the block division in the image decoding device 200 is determined. The dividing unit 202 divides the blocks by decoding the block division information recorded in the encoded bit string. The difference is in determining the lock split shape.
[0055] Syntax for block division in the first embodiment (syntax rules for encoded bit strings) The coding_quadtree() syntax is shown in Figure 9. ,multi_type_tree() represents the syntax for dividing a block into two or three parts. qt_split is a flag that indicates whether to split a block into four. If you do not want to split into 4, set qt_split=1. If you do not want to split into 4, set qt_split=0. 1) For each block divided into four, recursively divide it into four (coding_quadtree(0), c coding_quadtree(1), coding_quadtree(2), coding_quadtree(3)). split=0) determines the subsequent split according to multi_type_tree(). mtt_split A flag that indicates whether to split the image further. If further splitting is performed (mtt_split=1), the image is split vertically. The flag mtt_split_vertical indicates whether to split the image horizontally or vertically, and the flag mtt_split_vertical indicates whether to split the image horizontally or vertically. Refer to mtt_split_binary, which is the flag that determines whether to split the vertical or horizontal axis into three parts. al=1 indicates a vertical split, mtt_split_vertical=0 indicates a horizontal split mtt_split_binary=1 indicates splitting into two parts, mtt_split_binary=0 indicates splitting into three parts. This indicates that the tree is split by recursively calling multi_type_tree until mtt_split=0 is reached. This allows for hierarchical block division.
[0056] <Inter Prediction> The inter prediction method according to the embodiment is performed by the inter prediction unit 10 of the video encoding device in FIG. 2 and is implemented in the inter prediction unit 203 of the video decoding device of FIG.
[0057] The inter prediction method according to the embodiment will be described with reference to the drawings. The method is performed in both encoding and decoding processes on a coding block basis.
[0058] (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 video encoding device of FIG. The normal motion vector predictor derivation unit 301 derives a plurality of normal motion vector predictor candidates and performs prediction. A motion vector is selected, and a difference vector between the selected motion vector and the detected motion vector is calculated. Inter prediction mode, reference index, motion vector, and calculated difference vector are usually This inter prediction information is used as the inter prediction information for the predicted motion vector mode. The motion vector prediction unit 301 receives the motion vector prediction signal and supplies it to the motion vector prediction mode determination unit 305. The processing will be described later.
[0059] The normal merge mode derivation unit 302 derives a plurality of normal merge candidates and determines the normal merge candidates. Select the inter prediction information for normal merge mode to obtain the inter prediction information for normal merge mode. The prediction mode determination unit 306 receives the merge mode. The theory will be explained later.
[0060] The sub-block prediction motion vector derivation unit 303 calculates a plurality of sub-block prediction motion vectors A candidate is derived to select a subblock predicted motion vector, and the difference with the detected motion vector is calculated. Calculate the vector. Detected inter prediction mode, reference index, and motion vector The calculated difference vector becomes inter prediction information in the normal prediction motion vector mode. The inter prediction information is supplied to the inter prediction mode determination unit 306. The detailed configuration and processing of the motion vector derivation unit 303 will be described later.
[0061] The sub-block merging mode derivation unit 304 derives a plurality of sub-block merging candidates. Select sub-block merging candidates and obtain inter prediction information for sub-block merging mode This inter prediction information is supplied to the inter prediction mode determination unit 306. The detailed configuration and processing of the merge mode derivation unit 304 will be described later.
[0062] The inter prediction mode determination unit 305 performs the normal prediction motion vector derivation unit 301 and the normal merge Mode derivation unit 302, sub-block predicted motion vector derivation unit 303, sub-block merge The inter prediction mode is determined based on the inter prediction information supplied from the mode derivation unit 304. The inter prediction mode determination unit 305 determines inter prediction information according to the determination result. The signal is supplied to the motion compensation prediction unit 306 .
[0063] The motion compensation prediction unit 306 stores the decoded image in the decoded image memory 1 based on the determined inter prediction information. Inter prediction is performed on the reference image signal stored in 04. For details on the configuration and processing, More details will be given later.
[0064] <Description 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 video decoding device of FIG.
[0065] The normal motion vector predictor derivation unit 401 derives a plurality of normal motion vector predictor candidates and makes predictions. A motion vector is selected, and a difference vector between the selected motion vector and the detected motion vector is calculated. Inter prediction mode, reference index, motion vector, and difference vector are normal prediction motion vectors. This inter prediction information is sent via the switch 408. The normal predicted motion vector derivation unit 401 has a detailed structure as follows: The composition and processing will be described later.
[0066] The normal merge mode derivation unit 402 derives a plurality of normal merge candidates and determines the normal merge candidates. Select and obtain inter prediction information for normal merge mode. This inter prediction information is switched The merge mode derivation unit 402 normally supplies the merge mode derivation signal to the motion compensation prediction unit 406 via the merge mode derivation unit 408. The detailed configuration and processing will be described later.
[0067] The sub-block predicted motion vector derivation unit 403 calculates a plurality of sub-block predicted motion vectors. A candidate is derived to select a subblock predicted motion vector, and the difference with the detected motion vector is calculated. Calculate the vector. Detected inter prediction mode, reference index, and motion vector The calculated difference vector becomes inter prediction information in the normal prediction motion vector mode. The inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. The detailed configuration and processing of the subblock predictor motion vector derivation unit 403 will be described later.
[0068] The subblock merging mode derivation unit 404 derives multiple subblock merging candidates. Select sub-block merging candidates and obtain inter prediction information for sub-block merging mode This inter prediction information is supplied to the motion compensation prediction unit 406 via the switch 408. The detailed configuration and processing of the sub-block merging mode derivation unit 404 will be described later.
[0069] The motion compensation prediction unit 406 stores the decoded image in the decoded image memory 1 based on the determined inter prediction information. Inter prediction is performed on the reference image signal stored in 08. The procedure is the same as for the encoding side.
[0070] <Normal predicted motion vector mode derivation part (normal AMVP)> The normal prediction motion vector mode derivation unit 301 in FIG. unit 321, a temporal predicted motion vector candidate derivation unit 322, and a historical predicted motion vector candidate derivation unit 3 23, a predicted motion vector candidate supplementation unit 325, a normal motion vector detection unit 326, a predicted motion vector candidate The image processing unit 320 includes a vector candidate selection unit 327 and a motion vector subtraction unit 328.
[0071] The normal prediction motion vector mode derivation unit 402 in FIG. unit 421, a temporal predicted motion vector candidate derivation unit 422, and a historical predicted motion vector candidate derivation unit 4 23, a motion vector predictor candidate supplementation unit 425, a motion vector predictor candidate selection unit 426, a motion vector The vector adder 428 is included.
[0072] The normal prediction motion vector mode derivation unit 301 on the encoding side and the normal prediction motion vector mode derivation unit 302 on the decoding side The processing procedure of the torque mode derivation unit 401 is shown in the flowcharts of FIG. 19 and FIG. 25. 19 is a diagram showing a normal motion vector mode derivation unit 301 on the encoding side. FIG. 25 is a flowchart showing a procedure for deriving a predicted motion vector mode. The normal motion vector mode derivation unit 401 performs a normal predicted motion vector mode derivation process. 6 is a flowchart.
[0073] <Normal prediction motion vector mode derivation part (normal AMVP): Explanation on the encoding side> The normal predictive motion vector mode derivation process procedure on the encoding side will be described with reference to FIG.
[0074] First, the normal motion vector detection unit 326 detects the inter prediction mode and the reference index. First, a normal motion vector is detected (step S100 in FIG. 19).
[0075] Next, the spatial prediction motion vector candidate derivation unit 321 and the temporal prediction motion vector candidate derivation unit 3 22, a history prediction motion vector candidate derivation unit 323, a prediction motion vector candidate supplement unit 325, A predicted motion vector candidate selection unit 327 and a motion vector subtraction unit 328 select a normal predicted motion vector The difference motion vectors of the motion vectors used in the inter prediction of the mode are set for L0 and L1, respectively. Specifically, the coding target block is calculated as follows (steps S101 to S106 in FIG. 19). The prediction mode PredMode is inter prediction (MODE_INTER), and the inter prediction mode is L0 prediction ( Pred_L0), the motion vector predictor candidate list mvpListL0 of L0 is calculated, and the motion vector predictor candidate list mvpListL0 is Then, the vector mvpL0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 of L0 is calculated. If the inter prediction mode of the block to be coded is L1 prediction (Pred_L1), the predicted motion vector of L1 is A motion vector candidate list mvpListL1 is calculated, a predicted motion vector mvpL1 is selected, and the motion vector of L1 is Calculate the differential motion vector mvdL1 of the vector mvL1. Inter prediction of the coding target block When the mode is bi-predictive (Pred_BI), both L0 and L1 predictions are performed, and the predicted motion of L0 is A vector candidate list mvpListL0 is calculated, a motion vector predictor mvpL0 of L0 is selected, and The differential motion vector mvdL0 of the motion vector mvL0 of L1 is calculated, and the predicted motion vector of L1 is calculated. A motion vector candidate list mvpListL1 is calculated, a motion vector predictor mvpL1 for L1 is calculated, and the motion vector predictor Then, a differential motion vector mvdL1 is calculated for each of the moving vectors mvL1 and mvL2.
[0076] The differential motion vector calculation process is performed for each of L0 and L1. Therefore, in the following explanation, L0 and L1 are represented as a common LX. In the process of calculating the difference motion vector of L0, X is 0, and the difference motion vector of L1 is In the process of calculating the difference motion vector of LX, X is 1. If you want to refer to information from another list, not LX, use LY as the other list. represent.
[0077] When calculating the differential motion vector mvdLX of LX (YES in step S102 of FIG. 19) , calculate candidates for the predicted motion vector of LX, and generate a predicted motion vector candidate list mvpListL of LX. X is constructed (step S103 in FIG. 19). The spatial prediction motion vector candidate derivation unit 321 and the temporal prediction motion vector candidate derivation unit 322 The history motion vector predictor candidate derivation unit 323 and the motion vector predictor candidate supplementation unit 325 Candidates for the motion vector predictor are derived to construct a motion vector predictor candidate list mvpListLX. The detailed process of step S103 in FIG. 19 will be described with reference to the flowchart in FIG. This will be explained later.
[0078] Next, the motion vector predictor candidate selection unit 327 selects a motion vector predictor candidate list for LX. Select a predicted motion vector mvpLX for LX from the mvpListLX (step S104 in FIG. 19). The motion vector mvLX and each predicted motion vector stored in the predicted motion vector candidate list mvpListLX are Calculate the difference motion vectors between the candidate motion vector mvpListLX[i] and each of the candidate motion vectors mvpListLX[i]. The amount of code when these differential motion vectors are encoded is calculated based on the predicted motion vector candidate list mvpListL. Calculate for each element of X, and among the elements registered in the motion vector predictor candidate list mvpListLX, , a candidate motion vector predictor mvpListLX[i] that has the smallest amount of coding for each candidate motion vector predictor is selected as the predicted motion vector mvpLX. When there are multiple candidates for the predicted motion vector that has the minimum amount of generated code, The motion vector prediction is represented by a small number in the motion vector candidate list mvpListLX. The candidate mvpListLX[i] is selected as the optimal predicted motion vector mvpLX.
[0079] Next, the motion vector subtraction unit 328 subtracts the motion vector mvLX of LX selected from the motion vector mvLX of LX. A differential motion vector mvdLX of LX is calculated by subtracting the predicted motion vector mvpLX ( Step S105 in Figure 19).
[0080] (Normal prediction motion vector mode derivation unit (normal AMVP): Decoding side explanation) Next, a normal predicted motion vector mode process procedure on the decoding side will be described with reference to FIG. On the other hand, a spatial prediction motion vector candidate derivation unit 421 and a temporal prediction motion vector candidate derivation unit 4 22, the history prediction motion vector candidate derivation unit 423 and the prediction motion vector candidate supplementation unit 425, The motion vectors used in inter prediction in normal prediction motion vector mode are divided into L0 and L1. Specifically, the decoding target block is calculated as follows (steps S201 to S206 in FIG. 25). Prediction mode PredMode is inter prediction (MODE_INTER), and the block to be decoded is inter prediction When the mode is L0 prediction (Pred_L0), calculate the predicted motion vector candidate list mvpListL0 of L0. Then, the predicted motion vector mvpL0 is selected, and 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 predicted motion vector mvpL1 is selected, and the motion vector of L1 is calculated. If the inter prediction mode of the block to be decoded is bi-predictive (Pred_BI), Then, both L0 prediction and L1 prediction are performed, and the L0 predicted motion vector candidate list mvpListL0 is calculated. Then, the predicted motion vector mvpL0 of L0 is selected, and the motion vector mvL0 of L0 is calculated. In both cases, a motion vector predictor candidate list mvpListL1 of L1 is calculated, and the motion vector predictor of L1 is Then, the motion vector mvpL1 for L1 is calculated, and the motion vector mvL1 for L2 is calculated.
[0081] As with the encoding side, the decoding side also performs motion vector calculation processing for each of L0 and L1. However, the same processing is performed for both L0 and L1. Therefore, in the following explanation, L1 is represented as a common LX. In the process of calculating the motion vector of L0, X is 0, and L In the process of calculating the motion vector of 1, X is 1. Also, in the process of calculating the motion vector of LX, If you refer to information in the other list instead of the LX during the process of is expressed as LY.
[0082] When calculating a motion vector mvLX of LX (YES in step S202 of FIG. 25), 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 prediction motion vector candidate derivation unit 421, a temporal prediction motion vector candidate derivation unit 422, a history A motion vector predictor candidate derivation unit 423 and a motion vector predictor candidate supplement unit 425 generate a plurality of motion vector predictors. Then, the motion vector predictor candidate list mvpListLX is constructed. The detailed process of step S203 will be described later with reference to the flowchart of FIG. do.
[0083] 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 selected as the predicted motion vector. The vector mvpLX is extracted (step S204 in FIG. 25).
[0084] Then, the motion vector adder 427 decodes the bit stream and supplies it to the bit stream decoder 201. LX is calculated by adding the differential motion vector mvdLX of LX and the predicted motion vector mvpLX of LX. Then, the motion vector mvLX is calculated (Step S205 in FIG. 25).
[0085] <Normal predicted motion vector mode derivation part (normal AMVP): Motion vector prediction method> FIG. 20 shows a normal prediction motion vector mode guide of a video encoding device according to an embodiment of the present invention. The motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 401 of the video decoding device are common to the motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 401 of the video decoding device. 1 is a flowchart showing a processing procedure of a normal predicted motion vector mode derivation process having a function. do.
[0086] The normal prediction motion vector mode derivation unit 301 and the normal prediction motion vector mode derivation unit 40 1, a motion vector predictor candidate list mvpListLXN (N is A or B, the same below) is provided. The motion vector predictor candidate list mvpListLXN has a list structure. A predicted motion vector index indicating a location in the complement list and a predicted motion vector corresponding to the index A storage area is provided for storing candidate predicted motion vectors as elements. The index number starts from 0 and is the memory area of the motion vector predictor candidate list mvpListLXN. In the subsequent processing, the motion vector predictor candidate list is The motion vector predictor candidate of the motion vector predictor index i registered in the mvpListLXN is The coding block to be coded is represented by mvpListLXN[i], and the motion vector predictor candidate list mvpL It is distinguished from istLXN by using an array notation. The motion vector candidate list mvpListLXN contains up to two motion vector predictor candidates (inter prediction information). Furthermore, the motion vector predictor candidate list mvpListL A variable numMvpCand indicating the number of motion vector predictor candidates registered in XN is set to 0.
[0087] The spatial prediction motion vector candidate derivation units 321 and 421 select the motion vector candidate from the adjacent coding block on the left side. The predicted motion vector candidates of the adjacent coding block on the left side are derived. a flag availableFlagLXA indicating whether a motion candidate is available, and a motion vector mvLXA; Derive the reference index refIdxA and list ListA, and use mvLXA as the predicted motion vector candidate list m vpListLXA (step S301 in FIG. 20). Note that X is 0 for L0 and Then, X is set to 1 (the same applies below). Next, the motion vector predictor candidate generation units 121 and 221 derives a candidate predicted motion vector from the coding block adjacent to the upper side, and A flag, availableF, indicating whether a motion vector predictor candidate for the coding block is available. lagLXB, motion vector mvLXB, reference index refIdxB, and list ListB are derived, and mvL If XA is not equal to mvLXB, add mvLXB to the motion vector predictor candidate list mvpListLXB. (Step S302 in FIG. 20). The processes in steps S301 and S302 in FIG. 20 are referenced. The difference is in the number and position of the neighboring blocks. a flag indicating whether a candidate motion vector is available, mvLXN, and a motion vector, mvLXN. Derive the reference index refIdxN, ListN (N is A or B, etc.).
[0088] Next, the temporal motion vector predictor candidate derivation units 322 and 422 perform the Deriving candidate motion vectors from coding blocks and coding pictures at different times A flag indicating whether a motion vector predictor candidate for the block is available. , and the motion vector mvLXCol, the reference index refIdxCol, and the list ListCol are derived. Add XCol to the motion vector predictor candidate list mvpListLX (step S303 in FIG. 20). The derivation process in step S303 will be described in detail later.
[0089] Here, the temporal prediction motion vector is calculated in units of a sequence (SPS), picture (PPS), or slice. It is assumed that the processing of the vector candidate derivation units 322 and 422 can be omitted.
[0090] Next, the history prediction motion vector candidate derivation units 323 and 423 calculate the history prediction motion vector candidate. The historical predicted motion vector candidates registered in the auxiliary list HmvpCandList are used as the predicted motion vector candidates. The mvpListLX is added to the auxiliary list (step S304 in FIG. 20). The registration process will be described in detail later with reference to the flowchart of FIG.
[0091] Next, the motion vector predictor candidate supplementation units 325 and 425 generate the motion vector predictor candidate list mv Add a motion vector of a given value, such as (0,0), until pListLX is satisfied (S3 in FIG. 20). 05).
[0092] <Normal merge mode derivation part (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, and a A candidate derivation unit 342, an average merge candidate derivation unit 344, a history merge candidate derivation unit 345, and a merge It includes a candidate supplementation unit 346 and a merge candidate selection unit 347 .
[0093] The normal merge mode derivation unit 402 in FIG. 24 includes a spatial merge candidate derivation unit 441, a temporal merge candidate derivation unit 442, and a A candidate derivation unit 442, an average merge candidate derivation unit 444, a history merge candidate derivation unit 445, and a merge It includes a candidate supplementation unit 446 and a merge candidate selection unit 447 .
[0094] FIG. 21 shows the normal merge mode derivation unit 302 of the video encoding device according to the embodiment of the present invention. and a merge mode derivation unit 402 of the video decoding device. 11 is a flowchart illustrating the procedure of a code derivation process.
[0095] The steps will be explained below in order. The slice type slice_type is explained for the B slice, but for the P slice, However, if the slice type slice_type is P slice, the inter prediction model can be applied. There is only L0 prediction (Pred_L0) as a mode, L1 prediction (Pred_L1) and bi-prediction (Pred_BI) are also supported. Since there is no L1, processing related to L1 can be omitted.
[0096] In the normal merge mode derivation unit 302 and the normal merge mode derivation unit 402, The merge candidate list mergeCandList has a list structure, A merge index that indicates the location within the merge candidate list, and the merge A memory area is provided to store merge candidates as elements. The merge index number is 0. The merge candidates are stored in the merge candidate list (mergeCandList) starting from In the following process, the merge index i registered in the merge candidate list mergeCandList is The coding blocks that are candidates for merging are represented as mergeCandList[i]. The mergeCandList is distinguished from the mergeCandList by using an array notation. For this, the merge candidate list mergeCandList contains up to 6 merge candidates (inter prediction information). Furthermore, the merge candidates registered in the mergeCandList can be The variable numMergeCand, which indicates the number of merge candidates, is set to 0.
[0097] In the spatial merging candidate derivation unit 341 and the spatial merging candidate derivation unit 441, The encoded information storage memory 115 or the encoded information storage memory 210 of the video decoding device is stored in the From the stored coding information, each coding block adjacent to the coding / decoding target block is Derive spatial merge candidates A, B, C, D, E from locks A, B, C, D, E, and The selected spatial merge candidates are registered in the merge candidate list mergeCandList (step S in FIG. 21). 401), where N denotes either A, B, C, D, E or a temporal merge candidate Col. The inter prediction information of coding block N can be used as spatial merge candidate N. Flag indicating whether availableFlagN, the reference index refI of L0 of spatial merge candidate N dxL0N and the L1 reference index refIdxL1N, and the L0 prediction The L1 prediction flag predFlagL0N indicates whether L1 prediction is performed, and the L1 prediction flag predFlagL The motion vector mvL0N for L1, L1N, and the motion vector mvL1N for L1 are derived. In terms of form, the same coding block as the coding block containing the coding block to be processed is used. Since the merging candidates are derived without referring to the coding blocks included in the target code, The spatial merge candidates included in the same coding block as the coding block containing the merging block are derived. do not.
[0098] Next, the temporal merge candidate derivation unit 342 and the temporal merge candidate derivation unit 442 determine different time Then, a temporal merge candidate is derived from the pictures between the first and second pictures, and the derived temporal merge candidate is called a merge candidate. The time merge candidates are registered in the list mergeCandList (step S402 in FIG. 21). Flag availableFlagCol indicating whether L0 prediction of temporal merge candidates is performed. The L0 prediction flag predFlagL0Col indicates whether L0 prediction is performed, and L1 prediction flag L 1 prediction flag predFlagL1Col, motion vector mvL0Col of L0, motion vector mvL1 of L1 For detailed processing procedures of step S402, refer to the flowcharts of FIGS. This will be explained in more detail later using charts.
[0099] Here, we select the temporal merge candidates in units of sequences (SPS), pictures (PPS), or slices. It is assumed that the processing of the derivation unit 342 and the temporal merge candidate derivation unit 442 can be omitted. .
[0100] Next, the average merge candidate derivation unit 344 and the average merge candidate derivation unit 444 calculate the merge candidates. Derive average merge candidates from the complement list mergeCandList and merge the derived average merge candidates. The average merge candidate is registered in the mergeCandList (step S403 in FIG. 21). A complement is derived when the merge candidate list contains two or more candidates.
[0101] Next, the history merging candidate derivation unit 345 and the history merging candidate derivation unit 445 perform history prediction Mark the historical predicted motion vector candidates registered in the motion vector candidate list HmvpCandList. The mergeCandList is added to the merge candidate list (step S404 in FIG. 21). The detailed process of step 4 will be described later with reference to the flowchart of FIG.
[0102] Next, the merge candidate supplementation unit 346 and the merge candidate supplementation unit 446 create a merge candidate list The number of merge candidates registered in mergeCandList, numMergeCand, is less than the maximum number of merge candidates, maxNu If it is smaller than mMergeCand, the merge candidate list mergeCandList The number of candidates numMergeCand is limited to the maximum number of merge candidates maxNumMergeCand. The candidate candidates are derived and registered in the merge candidate list mergeCandList (step S405 in FIG. 21). In the P slice, the number of merge candidates is limited to the maximum number of merge candidates maxNumMergeCand. The prediction mode with a motion vector of (0,0) in the frame is the zero-matrix of L0 prediction (Pred_L0). In B slices, the motion vectors are (0, 0) to add a zero merge candidate whose prediction mode is bi-predictive (Pred_BI).
[0103] Next, the merge candidate selection unit 347 and the merge candidate supplement unit 447 select the merge candidates from the list Select a merge candidate from the merge candidates registered in mergeCandList. The merge candidate selection unit 347 selects merge candidates by calculating the code amount and the distortion amount. , a merge index indicating the selected merge candidate, and inter prediction information of the merge candidate. On the other hand, the merge candidate supplementation unit 447 on the decoding side supplies the decoded merge candidate to the motion compensation prediction unit 406. Selects merge candidates based on the merge indexes provided and runs the selected merge candidates. The result is supplied to the compensation prediction unit 406.
[0104] <average merge candidate> The average merge candidate is the 2nd merge candidate in the merge candidate list. The average merger is derived using two merge candidates, the first merger candidate and the second merger candidate. The merge candidate is the motion vector of the L0 prediction of the first merge candidate and the motion vector of the L0 prediction of the second merge candidate. The average motion vector of the L0 prediction obtained by averaging the vectors is compared with the motion vector of the L1 prediction of the first merge candidate. The average motion vector of the L1 prediction is calculated by averaging the motion vectors of the L1 prediction of the vector and the second merge candidate. The reference index of the L0 prediction of the average merge candidate is the first merging candidate. is the reference index of the L0 prediction of the image candidate, and is the reference index of the L1 prediction of the average merge candidate. The index is the reference index of the L1 prediction of the first merging candidate. In the derivation, the horizontal and vertical components of the motion vector are calculated independently. That is, the horizontal component of the average motion vector of the L0 prediction of the average merge candidate is , the motion vector of the L0 prediction of the first merging candidate and the motion vector of the L0 prediction of the second merging candidate The horizontal components of each of the mean merging candidates are averaged, and the mean motion of the L0 prediction is calculated as The vertical component of the vector is the motion vector of the L0 prediction of the first merging candidate and the motion vector of the L1 prediction of the second merging candidate. The average merge candidate is the average of the vertical components of the motion vectors of the L0 predictions. The same is true for the average motion vector of the complementary L1 prediction. By deriving the average merge candidate after the derivation of the history merge candidate, the history merge candidate is If the number of spatial and temporal merge candidates is less than one, the history merge This makes it possible to derive average merging candidates using the merging candidates, improving coding efficiency. . <Sub-block prediction motion vector mode derivation> Sub-block predicted motion vector mode derivation will now be described.
[0105] FIG. 26 shows the sub-block prediction motion vector mode derivation unit 30 in the encoding device of the present application. FIG. 3 is a block diagram of FIG.
[0106] First, the affine inheritance predicted motion vector candidate derivation unit 361 derives an affine inheritance predicted motion vector candidate. The details of affine inheritance prediction motion vector candidate derivation will be described later. State.
[0107] Next, the affine construction prediction motion vector candidate derivation unit 362 performs affine construction prediction Derive motion vector candidates. For details on deriving affine construction prediction motion vector candidates, see This will be explained later.
[0108] Next, the affine-identical prediction motion vector candidate derivation unit 363 performs affine-identical prediction Derive motion vector candidates. For details on deriving affine identical predictor motion vector candidates, see This will be explained later.
[0109] The sub-block motion vector detector 366 is adapted to the sub-block prediction motion vector mode. A sub-block motion vector corresponding to the sub-block is detected, and the detected vector is used as a sub-block predicted motion vector. The result is supplied to a torque candidate selection unit 367 and a difference calculation unit 368.
[0110] The sub-block predicted motion vector candidate selection unit 367 selects the affine inheritance predicted motion vector candidate Affine construction predicted motion vector candidate derivation unit 361, an affine construction predicted motion vector candidate derivation unit 362, an affine same predicted motion vector candidate derivation unit 363, an affine construction predicted motion vector candidate derivation unit 364, an affine same predicted motion vector candidate derivation unit 365, an affine construction predicted motion vector candidate derivation unit 366, an affine same predicted motion vector candidate derivation unit 367, an Among the sub-block predicted motion vector candidates derived in the motion vector candidate derivation unit 363, Based on the motion vector supplied from the sub-block motion vector detection unit 366, A sub-block predicted motion vector candidate is selected, and the selected sub-block predicted motion vector Information about the candidates is supplied to the inter prediction mode determination unit 305 and the difference calculation unit 368 .
[0111] The difference calculation unit 368 calculates the motion vector supplied from the sub-block motion vector detection unit 366. The sub-block predicted motion vector candidate selection unit 367 selects the sub-block predicted motion vector candidate from the motion vector. The inter prediction mode determination unit 102 determines the difference prediction motion vector obtained by subtracting the inter prediction motion vector from the inter prediction mode prediction motion vector. Supply to 305.
[0112] FIG. 27 shows the sub-block prediction motion vector mode derivation unit 403 in the decoding device of the present application. FIG.
[0113] First, the affine inheritance predicted motion vector candidate derivation unit 461 derives an affine inheritance predicted motion vector candidate. The process of the affine inheritance predicted motion vector candidate derivation unit 461 is as follows: The processing is the same as that of the affine inheritance predicted motion vector candidate derivation unit 361 in the encoding device of the present application. be.
[0114] Next, the affine construction prediction motion vector candidate derivation unit 462 performs affine construction prediction The affine construction prediction motion vector candidate derivation unit 462 performs the following process: The same processing as that of the affine construction predicted motion vector candidate derivation unit 362 in the encoding device of the present application It is.
[0115] Next, the affine-identical prediction motion vector candidate derivation unit 463 performs affine-identical prediction The affine identical predictor motion vector candidate derivation unit 463 performs the following process: The same processing as that of the affine-identical predictor motion vector candidate derivation unit 363 in the encoding device of the present application It is.
[0116] The sub-block predicted motion vector candidate selection unit 467 selects the affine inheritance predicted motion vector candidate Affine construction predicted motion vector candidate derivation unit 461, an affine construction predicted motion vector candidate derivation unit 462, an affine same predicted motion vector Among the sub-block predicted motion vector candidates derived in the motion vector candidate derivation unit 463, Then, based on the predicted motion vector index transmitted from the encoding device and decoded, a sub-block predicted motion vector candidate is selected, and the selected sub-block predicted motion vector candidate is The information on the complement is supplied to the motion compensation prediction unit 406 and the addition operation unit 467 .
[0117] The addition operation unit 467 adds the sub-block predicted motion vector candidate selected by the sub-block predicted motion vector candidate selection unit 466. The differential motion vector transmitted from the encoding device and decoded is used as the subblock predicted motion vector. The motion vector generated by the addition is supplied to the motion compensation prediction unit 406 .
[0118] <Derivation of affine inheritance predicted motion vector candidates> The affine successive prediction motion vector candidate derivation unit 361 will be described. The motion vector candidate derivation unit 461 is also the same as the affine inheritance prediction motion vector candidate derivation unit 36 Same as 1.
[0119] The affine inherited predicted motion vector candidate inherits the motion vector information of the affine control point. .
[0120] FIG. 30 is a diagram for explaining derivation of affine inheritance predicted motion vector candidates.
[0121] The affine inheritance motion vector candidate predictor is a vector that is derived from the spatially adjacent encoded and decoded blocks. The motion vectors are obtained by searching for affine control points having the same vector.
[0122] Specifically, the block (A0, A1) adjacent to the left of the block to be coded and decoded, From the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded, A maximum of one affine mode is searched for and set as the affine inheritance predicted motion vector.
[0123] FIG. 34 is a flowchart showing the derivation of affine inheritance predicted motion vector candidates.
[0124] First, the block (A0, A1) adjacent to the left of the block to be coded / decoded is treated as the left group. The block containing A0 is treated as a block using affine guarantee (S3101). If A0 is in the affine mode (S3102), it is determined whether A0 is in the affine mode (S 3102: YES), obtain the affine model used by A0 (S3103), and The process moves to the adjacent block. If A0 is not in affine mode (S3102: NO), The affine inheritance predicted motion vector candidate is derived from A0 to A1, and the block including A1 is Attempts to obtain an affine mode from
[0125] Next, the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded are Then, it is determined whether the block including B0 is in the affine mode or not (S3104). If B0 is in the affine mode (S3105: YES), The affine model used by B0 is acquired (S3106), and the process ends. If the affine inheritance prediction motion vector candidate is not the prediction mode (S3105: NO), the affine inheritance prediction motion vector candidate is not derived. B0->B1, and try to get the affine mode from the block containing B1. If 1 is not the affine mode (S3105: NO), the affine inheritance predicted motion vector candidate The target of the supplementary derivation is B1->B2, and an attempt is made to obtain an affine mode from the block including B2. do.
[0126] In this way, we divided the group into the left block and the upper block, and for the left block, searches the affine models from the bottom left to the top left block, and for the left block, By searching the affine models in the order from the top right to the top left block, we can find two blocks that are as different as possible. Then, we can obtain an affine model of the affine predicted motion vectors. It is possible to derive an affine predicted motion vector candidate that has a smaller error vector.
[0127] <Derivation of affine-constructed motion vector candidates> The affine construction prediction motion vector candidate derivation unit 362 will now be described. The motion vector candidate derivation unit 462 is also the same as the affine construction prediction motion vector candidate derivation unit 36 Same as 2.
[0128] The affine constructed motion vector candidate is derived from the motion information of spatially adjacent blocks. The motion vector information of the control points is constructed.
[0129] FIG. 31 is a diagram for explaining derivation of affine constructed predicted motion vector candidates.
[0130] The affine construction motion vector candidate predictor is a vector of spatially adjacent coded and decoded blocks. The motion vectors are then combined to construct a new affine model.
[0131] Specifically, the blocks adjacent to the upper left of the block to be coded and decoded (B2, B3, A 2) The motion vector of the upper left affine control point CP0 is derived from The motion vector of the upper right affine control point CP1 from the block (B1,B0) adjacent to the upper right side of The code is derived from the block (A1, A0) adjacent to the lower left of the block to be coded / decoded. A motion vector for the lower-left affine control point CP2 is derived.
[0132] FIG. 35 is a flowchart showing the derivation of affine constructed motion vector predictor candidates.
[0133] First, derive the upper left control point CP0, the upper right control point CP1, and the lower left affine control point CP2 ( The upper left affine control point CP0 is the same as the reference image of the block to be coded or decoded. The image is calculated by searching the B2, B3, and A2 reference blocks in that order. The upper right affine control point CP1 has the same reference image as the block to be coded and decoded. The calculation is done by searching the reference blocks B1, B0 in the order of priority. The affine control point CP2 is a reference block that has the same reference image as the block to be coded or decoded. The address is calculated by searching the A1, A0 reference blocks in that order.
[0134] When selecting the three affine control points mode as the affine construction predicted motion vector (S 3202:YES), all three affine control points (CP0, CP1, CP2) are derived. It is determined whether the three affine control points (CP0, CP1, CP2 ) are derived (S3203: YES), the three affine control points (CP0,C P1, CP2) is used as the affine construction predicted motion vector (S32 04). If you do not select the 3 affine control points mode and select the 2 affine control points mode, If (S3202:NO), both affine control points (CP0, CP1) are derived. It is determined whether or not the two affine control points (CP0, CP1) are all derived (S3205). If the command is issued (S3205: YES), the two affine control points (CP0, CP1) are used. The obtained affine model is used as an affine constructed predicted motion vector (S3206).
[0135] <Derivation of affine identical predictive motion vector candidates> The affine co-prediction motion vector candidate derivation unit 363 will be described. The motion vector candidate derivation unit 463 is also the same as the affine identical predictive motion vector candidate derivation unit 36 Same as 3.
[0136] The affine identical predicted motion vector candidate derives the same motion vector at each affine control point. This can be obtained by doing the following.
[0137] Specifically, similarly to the affine construction motion vector candidate derivation units 362 and 462, Derive the fin control point information and set all affine control points to the same one of CP0 to CP2. In addition, the time vectors derived in the same way as in the normal predicted motion vector mode are Alternatively, we can set the vector to all the affine control points.
[0138] <Sub-block merge mode derivation> Sub-block merge mode derivation will now be described.
[0139] FIG. 28 shows a block diagram of the sub-block merge mode derivation unit 304 in the encoding device of the present application. The sub-block merging mode derivation unit 304 determines the sub-block merging candidate list This is the same as in the normal merge mode derivation unit 302. This is similar to the merge candidate list, mergeCandList, and is a list of candidates that differs on a subblock basis. The only difference is that it becomes a strike.
[0140] First, the sub-block time merge candidate derivation unit 381 determines the sub-block time merge candidate The details of the derivation of sub-block temporal merging candidates will be described later.
[0141] Next, the affine inheritance merge candidate derivation unit 382 derives affine inheritance merge candidates. The details of affine inheritance merge candidate derivation will be described later.
[0142] Next, the affine construction merge candidate derivation unit 383 derives affine construction merge candidates. The details of deriving affine construction merge candidates will be described later.
[0143] Next, the affine-fixed merge candidate derivation unit 384 derives affine-fixed merge candidates. The details of affine fixed merge candidate derivation will be described later.
[0144] The sub-block merging candidate selection unit 386 includes the sub-block temporal merging candidate derivation unit 381, An affine inheritance merge candidate derivation unit 382, an affine construction merge candidate derivation unit 383, an affine Among the sub-block merging candidates derived by the fixed merging candidate derivation unit 384, Select a block merging candidate and display information about the selected sub-block merging candidate in the The prediction mode is supplied to the prediction mode determination unit 305.
[0145] FIG. 29 shows the block diagram of the sub-block merge mode derivation unit 404 in the decoding device of the present application. The sub-block merging mode derivation unit 404 generates the sub-block merging candidate list su This is the sub-block merge mode derivation unit 304 and It's the same thing.
[0146] First, the sub-block time merge candidate derivation unit 481 determines the sub-block time merge candidate The process of the sub-block time merging candidate derivation unit 481 derives the sub-block time merging candidate. This is the same as the processing of the candidate derivation unit 381.
[0147] Next, the affine inheritance merge candidate derivation unit 482 derives affine inheritance merge candidates. The processing of the affine inheritance merge candidate derivation unit 482 is the same as that of the affine inheritance merge candidate derivation unit 3 This is the same as the process in 82.
[0148] Next, the affine construction merge candidate derivation unit 483 derives affine construction merge candidates. The processing of the affine construction merge candidate derivation unit 483 is the same as that of the affine construction merge candidate derivation unit 3 This is the same as the process in 83.
[0149] Next, the affine-fixed merge candidate derivation unit 485 derives affine-fixed merge candidates. The processing of the affine fixed merge candidate derivation unit 485 is the same as that of the affine fixed merge candidate derivation unit 485. This is the same as the process in 85.
[0150] The sub-block merging candidate selection unit 486 includes the sub-block temporal merging candidate derivation unit 481, An affine inheritance merge candidate derivation unit 482, an affine construction merge candidate derivation unit 483, an affine Among the sub-block merging candidates derived by the fixed merging candidate derivation unit 484, Selecting sub-block merging candidates based on the index transmitted and decoded from the decoder and supplies information about the selected sub-block merge candidates to the motion compensation prediction unit 406. .
[0151] <Sub-block temporal merge candidate derivation> The operation of the sub-block temporal merging candidate derivation unit 381 will be described later.
[0152] <Affine inheritance merge candidate derivation> The affine inheritance merge candidate derivation unit 382 will be described. The affine inheritance merge candidate derivation unit 482 is similar to the affine inheritance merge candidate derivation unit 382 .
[0153] Affine inheritance merge candidates are affine inherited from the affine models of spatially adjacent blocks. Inherit the affine model of the fin control points.
[0154] FIG. 32 is a diagram for explaining the derivation of affine inheritance merge candidates. The derivation of the affine inheritance prediction motion vector is similar to the derivation of the affine inheritance prediction motion vector. The motion vectors of the affine control points of the coded and decoded blocks are searched for. can be done.
[0155] Specifically, the block (A0, A1) adjacent to the left of the block to be coded and decoded, From the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded, At most one affine mode is searched for and used for the affine merge mode.
[0156] FIG. 36 is a flowchart of affine inheritance merge candidate derivation.
[0157] First, the block (A0, A1) adjacent to the left of the block to be coded / decoded is treated as the left group. Then, it is determined whether the block including A0 is in affine mode (S3301). S3302). If A0 is in affine mode (S3102: YES), A0 uses The affine model is obtained (S3303), and the process moves to the adjacent block on the upper side. If is not in affine mode (S3302: NO), it is the target for deriving affine inheritance merge candidates. Let A0->A1, and try to obtain the affine mode from the block containing A1.
[0158] Next, the blocks (B0, B1, B2) adjacent to the upper side of the block to be coded / decoded are Then, the block including B0 is classified as the upper group (S3304), and it is judged whether the block including B0 is in the affine mode or not. If B0 is in affine mode (S3305: YES), The affine model used by B0 is obtained (S3306), and the process ends. If it is not (S3305:NO), the affine inheritance merge candidate derivation target is B0->B 1 and try to get the affine mode from the block containing B1. If the merge mode is not selected (S3305: NO), the affine inheritance merge candidate derivation target is set to B1- >B2 and try to get the affine mode from the block containing B2.
[0159] <Affine construction merge candidate derivation> The affine construction merge candidate derivation unit 383 will be described. The affine construction merge candidate derivation unit 483 is similar to the affine construction merge candidate derivation unit 383 .
[0160] FIG. 33 is a diagram for explaining derivation of affine construction merge candidates. The affine control is derived from the motion information of spatially adjacent blocks and the temporal coding block. Construct an affine model of the points.
[0161] Specifically, the blocks adjacent to the upper left of the block to be coded and decoded (B2, B3, A 2) The motion vector of the upper left affine control point CP0 is derived from The motion vector of the upper right affine control point CP1 from the block (B1,B0) adjacent to the upper right side of The code is derived from the block (A1, A0) adjacent to the lower left of the block to be coded / decoded. The motion vector of the lower-left affine control point CP2 is derived, and the lower-right side of the block to be coded / decoded is The motion vector of the lower right affine control point CP3 from the adjacent temporal coding block (T0) is Derive.
[0162] FIG. 37 is a flowchart of affine construct merge candidate derivation.
[0163] First, the upper left affine control point CP0, the upper right affine control point CP1, and the lower left affine control point C P2, the lower right affine control point CP3 is derived (S3401). The upper left control point CP0 is It is calculated by searching for blocks that contain information in the following order: B2, B3, A2 blocks. The upper right control point CP1 prioritizes blocks with motion information, starting with B1 and then B0. The lower left control point CP2 is calculated by searching the blocks having motion information, A1, The lower right control point CP3 is calculated by searching in the order of priority of the A0 block. It is calculated by searching the motion information of
[0164] Next, the three affine control points CP0, CP1, and CP2 are used to create an affine It is determined whether or not a model can be constructed (S3402), and if it can be constructed (S340 2:YES), affine model with three affine control points CP0, CP1, and CP2 The data is then treated as a merge candidate (S3403).
[0165] Next, the three affine control points CP0, CP1, and CP3 are derived and the affine It is determined whether or not a model can be constructed (S3404). If it can be constructed (S340 4:YES), affine model with three affine control points CP0, CP1, and CP3 The data is then treated as a merge candidate (S3405).
[0166] Next, the three affine control points CP0, CP2, and CP3 are used to create an affine It is determined whether or not a model can be constructed (S3406). If it can be constructed (S340 6:YES), affine model with three affine control points CP0, CP2, and CP3 The data is then treated as a candidate for merging (S3407).
[0167] Next, the three affine control points CP1, CP2, and CP3 are used to create an affine It is determined whether or not a model can be constructed (S3408). If it can be constructed (S340 8:YES), affine model with three affine control points CP1, CP2, and CP3 The data is then treated as a candidate for merging (S3409).
[0168] Next, an affine model is created using the two affine control points CP0 and CP1. It is judged whether construction is possible (S3410), and if construction is possible (S3410: YE S), CP0, and CP1 are used as candidates for affine merging. (S3411).
[0169] Next, an affine model is created using the two affine control points CP0 and CP2. It is judged whether construction is possible (S3412), and if construction is possible (S3412: YE S), CP0, and CP2 are used as candidates for affine merging. (S3413).
[0170] Here, whether or not an affine model is constructed is determined based on the following conditions.
[0171] 1. The reference images for all affine control points are the same. (Affine transformation is possible) 2. At least one affine control point has a different motion vector. (Represented as a translation.) (I can't) In addition, the three-point affine control point affine model, CP0, CP1, and CP2, Affine models other than the two-control-point affine model by P1 are three-control affine models. For the affine model, we use three affine control points CP0, CP1, and CP2. For the two-point control affine model, the two-point affine control point affine Convert it into a finite model.
[0172] <Affine fixed merge candidate derivation> The affine fixed merge candidate derivation unit 385 will be described. The affine fixed merge candidate derivation unit 485 is similar to the affine fixed merge candidate derivation unit 385 .
[0173] The affine fixed merge candidate is a candidate that fixes the motion information of the affine control points with the fixed motion information. do.
[0174] Specifically, the motion vector of each affine control point is fixed to (0,0).
[0175] <Temporal motion vector prediction> Before describing the temporal prediction motion vectors, the temporal relationship of pictures will be described. FIG. 49(a) shows a case where the current coding block and the current coding picture are different in time. The relationship between the currently coded picture and the coded picture is shown. A specific coded picture is defined as ColPic. ColPic is specified by the syntax. can be.
[0176] FIG. 49(b) shows a block in ColPic that is located at the same position as the coding block to be coded, and These coding blocks T 0 and T1 are at almost the same position in a picture that is different in time from the picture to be coded. is a coding block.
[0177] The above explanation of the temporal relationship of pictures is for the encoding process, but the same applies for the decoding process. In other words, when decoding, the above explanation is replaced with "decoding" and the same explanation is applied. It will be revealed.
[0178] The temporal motion vector predictor candidate derivation in the normal motion vector predictor mode derivation unit 301 in FIG. The operation of the output unit 322 will be described with reference to FIG.
[0179] First, ColPic is derived (step S4201). For the derivation of ColPic, see FIG. This will be explained in light of the above.
[0180] If the slice type slice_type is a B slice and the flag collocated_from_l0_flag is 0, If (YES in step S4211, YES in step S4212), RefPicList1[0], That is, the picture with reference index 0 in the reference list L1 is a picture colPic at a different time. If not, that is, if the slice type slice_type is B slice, If the flag collocated_from_l0_flag is 1 (YES in step S4211), S, NO in step S4212), or if the slice type slice_type is a P slice (NO in step S4211, YES in step S4214), RefPicList0[0], i.e. That is, the picture with reference index 0 in reference list L0 is the picture colPic at a different time. If slice_type is not a P slice (step S4214: O), end the process.
[0181] Refer again to FIG. 50. After deriving ColPic, derive the coding block colCb and This process will be described with reference to FIG. do.
[0182] First, in a picture colPic at a different time, the bottom right corner ( The coding block located outside is defined as a coding block colCb at a different time (step S4221). This coding block corresponds to coding block T0 in FIG.
[0183] Next, the coding information of the coding block colCb at a different time is obtained (step S422 2) PredMode of coding block colCb of different time is not available or coding block of different time is not available. When the prediction mode PredMode of the coding block colCb is intra prediction (MODE_INTRA) ( Step S4223: NO, Step S4224: YES), within the picture colPic at a different time The coding block located at the same position as the coding block to be processed and at the lower right of the center is processed at a different time. This coding block is designated as colCb in FIG. This corresponds to the coding block T1.
[0184] Again, see FIG. 50. Next, for each reference list, inter prediction information is derived (S Here, for the coding block colCb, the motion vector for each reference list is Derive the mvLXCol vector and the availableFlagLXCol flag indicating whether the coding information is available or not. LX indicates the reference list. In the derivation of reference list 0, LX becomes L0, and in the derivation of reference list 1, Then, LX becomes L1. The derivation of the inter prediction information will be described with reference to FIG.
[0185] When a coding block colCb of a different time is not available (S4231S4231:NO) Or, if the prediction mode PredMode is intra prediction (MODE_INTRA) (S4232:NO) Then, the flag availableFlagLXCol and the flag predFlagLXCol are both set to 0 (step S4233 ), and the motion vector mvLXCol is set to (0,0) (S4234), and the process ends.
[0186] The coding block colCb is available (S4231: Yes) and the prediction mode PredMode is intra. If it is not prediction (MODE_INTRA) (S4232: YES), use the following procedure to set mvCol and refIdxCol. and calculate availableFlagCol.
[0187] Flag PredFlagL0[xP If [Col][yPCol] is 0 (YES in S4235), the prediction mode of the coding block colCb is Pr ed_L1, the motion vector mvCol is the L1 motion vector of the coding block colCb. The reference index refIdxCol is set to the same value as the MvL1[xPCol][yPCol] (S4236). is set to the same value as the reference index RefIdxL1[xPCol][yPCol] of L1 (S4237), The list ListCol is set to L1 (S4238). Here, xPCol and yPCol are different time The index indicates the position of the top left pixel of the coding block colCb in the picture colPic. be.
[0188] On the other hand, if the L0 prediction flag PredFlagL0[xPCol][yPCol] of the coding block colCb is not 0, If (NO in S4235), the L1 prediction flag PredFlagL1[xPCol][yPC ol] is 0. The L1 prediction flag PredFlagL1[xPCol][ If yPCol is 0 (YES in S4239), the motion vector mvCol is the It is set to the same value as the motion vector MvL0[xPCol][yPCol] of L0 (S4240). The index refIdxCol is set to the same value as the reference index RefIdxL0[xPCol][yPCol] of L0. The list ListCol is set to L0 (S4242).
[0189] L0 prediction flag PredFlagL0[xPCol][yPCol] of coding block colCb and coding block col When both of the L1 prediction flags PredFlagL1[xPCol][yPCol] of Cb are not 0 (NO in S4235, S4239 NO), the inter prediction mode of the coding block colCb is bi-predictive (Pred_BI). Therefore, one of the two motion vectors L0 and L1 is selected (S4243).
[0190] FIG. 54 shows the code when the inter prediction mode of the coding block colCb is bi-prediction (Pred_BI). 13 is a flowchart showing a procedure for deriving inter prediction information of a coded block.
[0191] First, the POCs of all pictures in all reference lists are checked against the current encoding. It is determined whether the POC is smaller than the POC of the target picture (S4251). POC of all pictures registered in L0 and L1, which are all reference lists of b If LX is smaller than the POC of the current picture to be coded (YES in S4251), Derive predicted vector candidates for L0, i.e., the motion vector of the L0 coding block to be coded If the L0 prediction is performed (YES in S4252), inter prediction is performed for the L0 side of the coding block colCb. The information is selected, and LX is L1, that is, the prediction of the motion vector of L1 of the coding block to be coded. If the measurement vector candidate is derived (NO in S4252), the L1 On the other hand, all the reference list of the coding block colCb is selected. At least one of the POCs of the pictures registered in L0 and L1 is the current picture to be coded. If the POC is larger than the current POC (NO in S4251), the flag collocated_from_l0_fla If g is 0 (YES in S4253), inter prediction information for L0 of the coding block colCb If the flag collocated_from_l0_flag is 1 (NO in S4253), The inter prediction information of L1 of the locked colCb is selected.
[0192] When selecting inter prediction information for L0 of coding block colCb (Y in S4252), ES, YES in S4253), the motion vector mvCol is set to the same value as MvL0[xPCol][yPCol] (S4254), and the reference index refIdxCol is set to the same value as RefIdxL0[xPCol][yPCol]. The list ListCol is set to L0 (S4256).
[0193] When selecting inter prediction information for L1 of coding block colCb (N in S4252), O, NO of S4253), the motion vector mvCol is set to the same value as MvL1[xPCol][yPCol]. (S4257), the reference index refIdxCol is set to the same value as RefIdxL1[xPCol][yPCol] (S4258), and the list ListCol is set to L1 (S4259).
[0194] Returning to FIG. 53, when inter prediction information is obtained from the coding block colCb, the flag ava Both ilableFlagLXCol and flag predFlagLXCol are set to 1 (S4244).
[0195] Next, the motion vector mvCol is scaled to obtain a motion vector mvLXCol (S42 The procedure for scaling calculation of this motion vector mvLXCol is shown in FIG. I will explain it below.
[0196] The POC of the picture colPic at different times is referenced by a list ListCol of coding blocks colCb. The POC of the reference picture corresponding to the reference index refIdxCol that The distance td between the two pictures is calculated (S4261). If the POC of the reference picture referenced in the list ListCol of block colCb comes before the other in the display order, In this case, the inter-picture distance td is a positive value, and the coding block is closer to the picture colPic at a different time. If the POC of the reference picture referenced in the list ListCol of the check colCb is later in the display order, The inter-picture distance td is a negative value. td = POC of pictures colPic at different times - list of coding blocks colCb ListCol POC of the reference picture to be referenced in The list of pictures currently to be coded LX is referenced from the POC of the currently to be coded picture. The POC of the reference picture to be processed is subtracted from the POC to calculate the inter-picture distance tb (S4262). , and the picture to be coded is referred to in the list LX of the picture to be coded rather than the picture to be coded. If the reference picture is earlier in display order, the inter-picture distance tb is a positive value and the current code If the reference picture in the list of pictures to be coded LX is later in the display order, The inter-cha distance tb is a negative value. tb = POC of the current picture to be coded / decoded - LX reference index of the temporal merge candidate POC of the reference picture corresponding to the index Next, the inter-picture distances td and tb are compared (S4263). If b is equal (YES in S4263), the motion vector mvLXCol is calculated using the following formula ( S4264), this scaling calculation process is terminated. mvLXCol = mvCol On the other hand, if the inter-picture distances td and tb are not equal (NO in S4263), The variable tx is calculated (S4265). tx = ( 16384 + Abs( td ) >> 1 ) / td Next, the scaling coefficient distScaleFactor is calculated using the following equation (S4266). distScaleFactor = Clip3( -4096, 4095, ( tb * tx + 32 ) >> 6 ) Here, Clip3(x, y, z) is a function that limits the value z to a minimum value of x and a maximum value of y. Next, the motion vector mvLXCol is calculated by the following formula (S4267), and the scaling calculation is completed. The calculation process ends. mvLXCol = Clip3( -32768, 32767, Sign( distScaleFactor * mvLXCol ) * ( (Abs( distScaleFactor * mvLXCol ) + 127 ) >> 8 ) ) Here, Sign(x) is a function that returns the sign of the value x, and Abs(x) is a function that returns the absolute value of the value x. do.
[0197] Again, refer to FIG. 50. Then, the motion vector mvL0Col of L0 is calculated by the normal prediction motion vector mvL0Col. The motion vector predictor candidate list mvpListLXN in the motion vector mode derivation unit 301 is added as a candidate. However, this addition is performed for the coding block colCb This is only possible when the flag indicating whether L1 is available or not is availableFlagL0Col=1. The vector mvL1Col is calculated based on the predicted motion vector in the normal predicted motion vector mode derivation unit 301. The candidate is added to the list of candidates mvpListLXN (S4205). Flag indicating whether the coding block colCb of reference list 1 is available or not: availableFlagL1Col=1 This is the only step. The process of the temporal motion vector predictor candidate derivation unit 322 is then completed.
[0198] The above description of the normal predicted motion vector mode derivation unit 301 is for the encoding process. That is, in the normal predicted motion vector mode derivation unit 401 in FIG. The operation of the temporal motion vector predictor candidate derivation unit 422 in this embodiment is the same as that of the encoding described above. and is explained in the same manner.
[0199] <Time Merge> In the operation of the temporal merge candidate derivation unit 342 in the normal merge mode derivation unit 302 in FIG. This will be described with reference to FIG.
[0200] First, ColPic is derived (step S4301). Next, the coding block colCb is derived. Then, the encoding information is obtained (step S4302). The above process derives the time prediction motion vector (S4303, S4304). Since these steps are the same as steps S4201 to S4204 in the rule candidate derivation unit 322, their explanations will be omitted. do.
[0201] Next, a flag, availableFlagCol, indicating whether the coding block colCb is available or not is calculated ( S4305). When the flag availableFlagL0Col or the flag availableFlagL1Col is 1 availableFlagCol will be 1. Otherwise availableFlagCol will be 0.
[0202] Then, the motion vector mvL0Col of L0 and the motion vector mvL1Col of L1 are calculated by the above-mentioned normal matrix. The merge candidate list mergeCandList in the merge mode derivation unit 302 is added as a candidate. (S4306). However, this addition is performed by using the flag a, which indicates whether the coding block colCb is valid or not. This is only the case when validFlagCol=1. Finish.
[0203] The above explanation of the temporal merge candidate derivation unit 342 is for encoding, but the same applies for decoding. That is, the temporal merge candidate derivation in the normal merge mode derivation unit 402 in FIG. The operation of unit 442 is similarly described, substituting decoding for encoding in the above description.
[0204] <Update of historical motion vector prediction candidate list> Next, the coding information storage memory 111 on the coding side and the coding information storage memory 20 on the decoding side Detailed explanation of how to update the historical motion vector prediction candidate list HmvpCandList in preparation for V.5. FIG. 38 is a flowchart illustrating a procedure for deriving a historical predicted motion vector candidate. .
[0205] In this embodiment, the history motion vector predictor candidate list HmvpCandList is updated based on the coding information. The information storage memory 111 and the encoded information storage memory 205 are assumed to be implemented. A history candidate list update unit is provided in the prediction unit 102 and the inter-prediction unit 203 to perform history prediction. An update of the motion vector candidate list HmvpCandList may be performed.
[0206] At the beginning of the slice, the historical motion vector prediction candidate list HmvpCandList is initialized. On the encoding side, the prediction method decision unit 106 selects the normal prediction vector mode or the normal merge mode. When the selected motion vector is selected, the history motion vector predictor candidate list HmvpCandList is updated. The inter prediction mode decoded by the bit sequence decoding unit 201 is a normal prediction vector mode or In the normal merge mode, the historical motion vector predictor candidate list HmvpCandList is updated. Inter prediction vector used when performing inter prediction in prediction vector mode or normal merge mode The measurement information is registered as the inter-prediction information candidate hMvpCand, and the encoding information storage memory on the encoding side is The history of predicted motion vector candidate list 111 and the history of predicted motion vector candidate list 205 provided in the decoding side coding information storage memory 205 Among the inter prediction information registered in the HmvpCandList, the inter prediction information to be registered is If there is an inter prediction with the same value as the information candidate hMvpCand, the history prediction motion vector candidate list is The element (inter prediction information) is deleted from the HmvpCandList, and the inter prediction information to be registered is If there is no inter prediction with the same value as the information candidate hMvpCand, the historical prediction motion vector candidate The first element (inter prediction information) of the list HmvpCandList is deleted, and the history prediction motion vector Add the inter prediction information candidate hMvpCand to be registered at the end of the candidate list HmvpCandList. .
[0207] The encoding information storage memory 111 on the encoding side and the encoding information storage memory 2 on the decoding side according to the present invention The number of elements in the historical motion vector predictor candidate list HmvpCandList for 05 is six.
[0208] First, initialize the historical motion vector predictor candidate list HmvpCandList in slice units. At the beginning of the slice, all elements of the history motion vector prediction candidate list HmvpCandList are assigned a history A motion vector predictor candidate is added and registered in the history motion vector predictor candidate list HmvpCandList. The value of the number of historical motion vector predictor candidates NumHmvpCand that have been stored is set to 6 (step in FIG. 38). P2101).
[0209] Here, the initialization of the historical motion vector predictor candidate list HmvpCandList is performed on a slice basis. It was supposed to be implemented on the first coding block of the Rice, but it can be implemented on a picture-by-picture, tile-by-tile or tree-by-tree basis. - It can also be performed on a block row basis.
[0210] Figure 62 shows the history of motion vector prediction candidates added by initializing the list HmvpCandList. 1 is a table showing an example of a historical motion vector predictor candidate. The following shows an example in which the number of frames is 4. The number of motion vector candidates (NumHmvpCand-1) to 0 depending on the slice type. The inter prediction information with the value of (0, 0) is used as a history prediction motion vector candidate. Add the motion vector prediction candidate list HmvpCandList to the motion vector prediction candidate list HmvpCandList. At this time, the history predicted motion vector index is filled in (history predicted motion vector candidate The number of entries in the list starts from NumHmvpCand-1, and the reference index refIdxLX (X is 0 or 1) starts from 0. Set the value incremented by 1 up to (number of reference pictures numRefIdx-1). Then allows overlapping of history motion vector predictor candidates, and sets the value of 0 to refIdxLX. Set all values to the number of historical prediction motion vector candidates NumHmvpCand, and By setting the number of motion vector candidates NumHmvpCand to a fixed value, invalid historical motion vector predictor candidates can be eliminated. In this way, the probability of adding a candidate to the motion vector predictor list or merge candidate list is Generally, candidates with high selection rates are selected from candidates with high historical prediction motion vector indexes. By assigning a small reference index value, the coding efficiency can be improved. .
[0211] In addition, the history prediction motion vector candidate list is used for each slice. By filling the data, 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.
[0212] Here, the value of the motion vector is set to (0, 0), which is generally selected with a high probability. For example, the difference motion vectors can be encoded using values such as (4,4), (0,32), and (-128,0). Alternatively, multiple predetermined values may be set to improve the coding efficiency of the differential motion vector. That's fine.
[0213] Also, the history prediction motion vector index is expressed as the number of history prediction motion vector candidates NumHmvpC and-1), and the reference index refIdxLX (X is 0 or 1) starts from 0 (reference picture The number of objects (numRefIdx-1) is incremented by 1, but the historical prediction behavior is Vector indices may start at 0.
[0214] Figure 63 shows the history of motion vector prediction candidates added by initializing the list HmvpCandList. 13 is a table showing another example of historical motion vector predictor candidates. 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 prediction candidates in each element of pCandList. Inter prediction information with different values of either the column or the motion vector is added to the historical prediction motion vector. The motion vector prediction candidate list is filled with the motion vector prediction candidate. The predicted motion vector index is calculated by starting with (the number of historical predicted motion vector candidates NumHmvpCand-1). The reference index refIdxLX (X is 0 or 1) starts from 0 and increases by the number of reference pictures, numRefI dx-1) is set to a value incremented by 1. After that, refIdxLX is set to 0. The motion vector of the value is added as a history predicted motion vector candidate. Set all values to the number of complements NumHmvpCand, and set the number of history motion vector predictor candidates NumHmvpCand By setting the value to a fixed value, invalid historical predicted motion vector candidates are eliminated.
[0215] In this way, the history prediction motion vector candidate list is created for each slice, so that the history prediction motion vectors are not duplicated. By filling the vector candidates, the coding block unit is further processed as described below. The merge candidate derivation unit 345 in the normal merge mode derivation unit 302 determines the merge candidate after the history merge candidate derivation unit 345. The processing of the filling section 346 can be omitted, and the processing amount can be reduced.
[0216] Here, the values of the motion vectors are small, such as (0, 0) and (1, 0), but the values of the historical prediction motion vectors are If there is no overlap between the vector candidates, the value of the motion vector may be increased.
[0217] Also, the history prediction motion vector index is expressed as the number of history prediction motion vector candidates NumHmvpC and-1), and the reference index refIdxLX (X is 0 or 1) starts from 0 (reference picture The number of objects (numRefIdx-1) is incremented by 1, but the historical prediction behavior is Vector indices may start at 0.
[0218] Figure 64 shows the history of motion vector prediction candidates added by initializing the list HmvpCandList. 13 is a table showing another example of historical motion vector predictor candidates.
[0219] An example in which the slice type is a B slice is shown. In this example, the history of motion vector predictor candidates The elements of the list HmvpCandList are sorted so that there is no overlap between the historical motion vector predictor candidates. If the index is 0, the inter prediction information with different motion vector values is stored as the historical prediction motion vector. The motion vector prediction candidate list is filled with the motion vector prediction candidate. The predicted motion vector index is calculated by starting with (the number of historical predicted motion vector candidates NumHmvpCand-1). First, the reference index refIdxLX (X is 0 or 1) is set to 0. All values are set in the number of motion vector predictor candidates NumHmvpCand, and the number of historical motion vector predictor candidates NumHmvpCa By setting the value of nd to a fixed value, invalid historical motion vector predictor candidates are eliminated.
[0220] In this way, by setting the reference index to 0, the number of reference pictures is further taken into consideration. Since the initialization can be performed without any need for rewriting, the processing can be simplified.
[0221] Here, the value of the motion vector is a multiple of 2. Other values are acceptable as long as there is no overlap between the vector candidates.
[0222] In addition, the history prediction motion vector index is expressed as the number of history prediction motion vector candidates NumHmvpC and-1), and the reference index refIdxLX (X is 0 or 1) starts from 0 (reference picture The number of objects (numRefIdx-1) is incremented by 1, but the historical prediction behavior is Vector indices may start at 0.
[0223] Next, for each coding block in the slice, the following historical motion vector predictor candidate list Hmvp The process of updating the CandList is repeated (steps S2102 to S2111 in FIG. 38).
[0224] First, the initial setting is performed for each coding block. Set the value of the tag "identicalCandExist" to FALSE and set the index to be deleted, "removeIdx", to 0. (Step S2103 in FIG. 38).
[0225] Inter prediction information candidate hMvp to be registered in the history prediction motion vector candidate list HmvpCandList It is determined whether Cand exists (step S2104 in FIG. 38). When the determination unit 105 determines that the normal predicted motion vector mode or the normal merge mode is selected, Or, the bitstream decoding unit on the decoding side switches to the normal predicted motion vector mode or the normal merge mode. If the inter prediction mode is hMvpCand, the inter prediction mode is set to hMvpCand. The determining unit 105 determines whether the intra prediction mode, the sub-block prediction motion vector mode, or the sub-block prediction motion vector mode is an intra prediction mode, When the bitstream decoding unit on the decoding side determines that the bitstream is in the intra prediction mode, or when the bitstream decoding unit on the decoding side determines that the bitstream is in the intra prediction mode, The motion vectors are decoded as sub-block predicted motion vector mode or sub-block merge mode. If the motion vector prediction candidate list HmvpCandList is updated, the motion vector prediction candidate list HmvpCandList is not updated. The inter-prediction information candidate hMvpCand does not exist. If nd does not exist, steps S2105 to S2110 are skipped (steps S2105 to S2110 in FIG. 38). If the inter-prediction information candidate hMvpCand to be registered exists, The process from step S2105 onwards is carried out (YES in step S2104 in FIG. 38).
[0226] Next, the input motion vector to be registered is added to each element of the history motion vector candidate list HmvpCandList. It is determined whether an element identical to the target prediction information candidate hMvpCand exists (step S2105). Figure 39 is a flow chart of the same element confirmation process. If the value of the number of candidate vectors NumHmvpCand is 0 (NO in step S2121 of FIG. 39), The historical motion vector predictor candidate list HmvpCandList is empty and there is no identical candidate. Steps S2122 to S2125 are skipped, and the same element confirmation process ends. When the value of the number of historical motion vector predictor candidates NumHmvpCand is greater than 0 (step S2 in FIG. 39), 121 YES), the historical predicted motion vector index hMvpIdx is between 0 and NumHmvpCand-1. Then, the processes of steps S2122 to S2125 are repeated (steps S2121 to S2125 in FIG. 39). First, the hMvpIdx-th element in the history motion vector predictor candidate list, counting from 0, is Compare whether the original HmvpCandList[MvpIdx] is the same as the inter-prediction information candidate hMvpCand (see Figure 1). If they are the same (YES in step S2123 of FIG. 39), Set the value of TRUE to the flag identicalCandExist, which indicates whether a candidate exists. Set the value of hMVpIndex to the deletion target index removeIdx, and end this same element confirmation process. If they are not the same (NO in step S2123 in FIG. 39), increment hMvpIdx by 1. (Steps S2121 and S2125 in FIG. 39), and then perform the processes from step S2123 onward. cormorant.
[0227] Here, the historical motion vector predictor candidate list is filled with historical motion vector predictor candidates. As a result, step S2121 in FIG. 39 can be omitted.
[0228] Returning to the flowchart of FIG. 38, the historical motion vector predictor candidate list HmvpCandList The element shift and addition process is performed (step S2106 in FIG. 38). Step S2106: Shifting / adding elements of the history prediction motion vector candidate list HmvpCandList 1 is a flowchart of a processing procedure. First, in the historical motion vector predictor candidate list HmvpCandList, Either remove the stored elements and then add new elements, or add new elements without removing any elements. Specifically, the flag "identicalCandE" indicates whether or not an identical candidate exists. Compare with xist whether it is TRUE or NumHmvpCand is 6 (step S2 in FIG. 40). 141). The flag identicalCandExist, which indicates whether an identical candidate exists, is TRUE. Or, if NumHmvpCand satisfies any of the conditions of 6 (Y in step S2141 in FIG. 40), ES), excluding the elements stored in the historical motion vector predictor candidate list HmvpCandList Add a new element from the array. Set the initial value of index i to the value of removeIdx + 1. The element shift process in step S2143 is repeated from the initial value to NumHmvpCand. (See FIG. 4) Steps S2142 to S2144 for 0. HMVPCandList[i - 1] is added to HMVPCandList[i]. Shift the elements forward by copying the elements of i (step S2143 in FIG. 40), and set i to Increment by 1 (steps S2142 and S2145 in FIG. 40). The (NumHmvpCand-1)th HMVPCandList, counting from 0, which corresponds to the end of the motion vector candidate list. The inter-prediction information candidate hMvpCand is added to t[NumHmvpCand-1] (step S214 in FIG. 40). 5) Finish the element shift and addition process of this historical predicted motion vector candidate list HMVPCandList. On the other hand, if the flag "identicalCandExist" indicating whether an identical candidate exists is TRUE, If NumHmvpCand does not satisfy any of the conditions of 6 (step S2141 in FIG. 40), NO), without excluding the elements stored in the history motion vector predictor candidate list HmvpCandList Add a new element. Counting from 0, which corresponds to the end of the history motion vector candidate list, Add the inter prediction information candidate hMvpCand to the (NumHmvpCand-1)th HMVPCandList[NumHmvpCand]. Then, NumHmvpCand is incremented by 1 (step S2145 in FIG. 40), and this history prediction Then, the element shift and addition process of the measured motion vector candidate list HMVPCandList is completed.
[0229] Here, the history predicted motion vector candidate list is used in the predicted motion vector mode and the merge mode. This rule applies to both, but may apply to only one of them.
[0230] As described above, in updating the history predicted motion vector candidate list, This is because the same elements stored in the list of candidates are removed before adding new elements. , there are no overlapping elements in the history predicted motion vector candidate list, and the history predicted motion vector candidate The complement list is made up of all distinct elements.
[0231] <Historical Prediction Motion Vector Candidate Derivation Process> Next, the history of predicted motion vector candidates in the normal predicted motion vector mode derivation unit 301 on the encoding side is The prediction motion vector mode derivation unit 323 and the history prediction motion vector mode derivation unit 401 on the decoding side The process of step S304 in FIG. 20 is common to all the torque candidate derivation units 423. Method for deriving historical predicted motion vector candidates from the historical predicted motion vector candidate list HMVPCandList FIG. 41 is a flowchart for explaining a procedure for deriving a historical motion vector predictor candidate. This is a low chart.
[0232] The current number of motion vector predictor candidates, numCurrMvpCand, is the maximum number of motion vector predictor candidates in the list. The number of elements (here, 2) or more, or the number of history motion vector predictor candidates is 0. In this case (NO in step S2201 in FIG. 41), steps S2202 to S220 8 is omitted, and the procedure for deriving the historical predicted motion vector candidate is terminated. When is smaller than 2, which is the maximum number of elements in the motion vector predictor candidate list (step If the answer is YES in S2201, the process goes to steps S2202 to S2208 in FIG.
[0233] Next, for index i, from 1 to the smaller of 4 and NumHmvpCand, Fig. 41 The processes of steps S2203 to S2207 are repeated (steps S2202 to S2207 in FIG. 41). S2208). numCurrMvpCand is equal to or greater than 2, which is the maximum number of elements in the motion vector predictor candidate list. In this case (NO in step S2203 in FIG. 41), steps S2204 to S22 The process of 08 is omitted, and the process of deriving the historical predicted motion vector candidate is terminated. When Cand is smaller than 2, which is the maximum number of elements in the motion vector predictor candidate list (step 41 in FIG. If the answer is YES in step S2203, the process proceeds to step S2204 in FIG.
[0234] Next, the process from step S2205 to S2206 is performed when the variable Y is 0 and 1 (L0 and L1 ) (steps S2204 to S2207 in FIG. 41). is equal to or greater than the maximum number of elements in the motion vector predictor candidate list (step S2 in FIG. 41). 205 NO), the processes in steps S2206 to S2208 in FIG. 41 are omitted, and the history prediction The procedure for deriving predicted motion vector candidates is completed. If the number of elements in the list is smaller than 2 (YES in step S2205 in FIG. 41), The process proceeds to step S2206 of 41.
[0235] Next, the numCurrMvpCand-th candidate in the LY prediction motion vector candidate list, counting from 0, The element mvpListLY[numCurrMvpCand ] is assigned with the historical motion vector predictor candidate HmvpCandList[NumHmvpCand - Add the LY motion vector of [i] and increment numCurrMvpCand by 1 (see Figure 41). Step S2206).
[0236] The above steps S2205 to S2206 in FIG. 41 are performed on both L0 and L1. (Steps S2204 to S2207 in FIG. 41).
[0237] The index i is incremented by 1 (steps S2202 and S2208 in FIG. 41). If the index i is equal to or smaller than 4 or NumHmvpCand, step S22 is performed again. The process goes on to step S2203 and subsequent steps (steps S2202 to S2208 in FIG. 41).
[0238] In this embodiment, as described above, in the process of deriving a historical predicted motion vector candidate, , the motion vectors of the elements of the history predicted motion vector candidate list and the predicted motion vector candidate list The element of the history predicted motion vector candidate list is The motion vector of is added to a motion vector predictor candidate list.
[0239] By adopting such a configuration, if the number of history motion vector predictor candidates is two or more, After the process of derivation of the history motion vector predictor candidate list candidates is completed, the motion vector predictor candidate list It is possible to guarantee that the number of elements in the frame reaches the maximum. It is possible to reduce the amount of processing and the circuit scale required for checking whether the signal is a positive or negative.
[0240] In the normal motion vector predictor mode, the motion vector predictor included in the motion vector predictor candidate list is This mode determines the motion information of the block to be processed based on the candidate vector and the difference vector. Since there is a possibility that the appropriate motion vector can be determined by the difference vector, it is necessary to use the predicted motion vector. Even if the elements of the candidate vector list are duplicated, the sign reduction due to the reduction in options is Therefore, the decrease in the conversion efficiency can be kept to a minimum.
[0241] In addition, the normal predicted motion vector mode divides the predicted motion vector candidate list into L0 prediction and L1 prediction. Therefore, the motion vector candidate list for L0 prediction has overlapping elements. Even if the motion vectors are overlapped, the elements in the motion vector candidate list for L1 prediction are not overlapped. There are also cases where this is the case.
[0242] In addition, the normal motion vector prediction mode uses a separate motion vector prediction candidate and a reference index. Therefore, in the motion vector predictor candidate list, elements may overlap. does not affect the reference index.
[0243] In addition, the motion vector predictor candidate list contains at most two elements, so the prediction Even if elements in the motion vector candidate list overlap, the number of choices is reduced. There is only 1.
[0244] In addition, the history prediction motion vector candidate list does not contain the same elements. The comparison of elements of the motion vector predictor candidate list with elements of the motion vector predictor candidate list is essentially meaningful. The spatial prediction motion vector candidate derivation unit 421 and the temporal prediction motion vector candidate derivation unit 422 have the following characteristics. Only when only one element of the motion vector predictor candidate list is generated in unit 422, This is very rare because it is set as the normal motion vector prediction mode. The motion vector is calculated based on the motion vector of the adjacent block. The elements of the candidate list may overlap with elements already added to the motion vector predictor candidate list. The possibility is low.
[0245] For the above reasons, even if elements of the motion vector predictor candidate list overlap, The proposed method is to reduce the number of candidates for the motion vector prediction history while suppressing the decrease in coding efficiency due to the reduction in the number of candidates. This reduces the amount of processing required to compare the frame rate with the motion vector of the motion vector predictor candidate.
[0246] Also, the historical motion vector predictor candidate list is filled with unique historical motion vector predictor candidates. Then, the elements of the history motion vector candidate list and the elements of the motion vector candidate list are The element in the history motion vector candidate predictor list is treated as the predicted motion vector candidate without comparing it with the By adding the motion vector to the supplementary list, the history prediction in the normal prediction motion vector mode derivation unit 301 is The processing of the predicted motion vector supplementing unit 325 subsequent to the motion vector candidate derivation unit 323 is omitted. It is possible.
[0247] <History merge candidate derivation process> Next, the history merge candidate derivation unit 345 of the normal merge mode derivation unit 302 on the encoding side, FIG. 13 is a common process between the normal merge mode derivation unit 401 and the history merge candidate derivation unit 423. The processing procedure of step S304 in 20 is the history predicted motion vector candidate list HmvpCandList. A method for deriving history merging candidates from the history merging candidates is described in detail below. 11 is a flowchart illustrating a processing procedure.
[0248] First, initialization is performed (step S2301 in FIG. 42). Set the value of FALSE for each (rrMergeCand -1)th element and set the variable numOrigMergeCand to the current Sets numCurrMergeCand, the number of elements currently in the merge candidate list.
[0249] Next, the elements of the history predicted motion vector candidate list that are included in the merge candidate list are Add elements that are not included in the history prediction motion vector candidate list to the merge candidate list. The initial value of the index hMvpIdx is set to 1, and the From the initial value to NumHmvpCand-1, from step S2303 to step S2328 in FIG. The process of adding the current merge candidate is repeated (steps S2302 to S2329 in FIG. 42). The number of elements registered in the list, numCurrMergeCand, is the maximum number of merge candidates, MaxNumMergeCand -1), all elements in the merge candidate list have been added as merge candidates, This history merge candidate derivation process is terminated (NO in step S2303 in FIG. 42). The number of elements registered in the merge candidate list, numCurrMergeCand, is (the maximum number of merge candidates, MaxNumM If the sameMotion is FALSE (false), the process from step S2304 onward is performed. ) is set (step S2304 in FIG. 42). Next, the initial value of index i is set to 0 , and the process proceeds from this initial value to numOrigMergeCand-1 in steps S2306 and S2307 of FIG. 07 (S2305 to S2308 in FIG. 42). Counting from 0, the (NumHmvpCand - hMvpIdx)th element of the dx] is the same as the i-th element of the merge candidate list, counting from 0, mergeCandList[i]. The same value of a merging candidate is a value that the merging candidate has. If all components (inter prediction mode, reference index, motion vector) have the same value, If the merging candidates have the same value (YES in step S2306 in FIG. 39), , sameMotion and isPruned[i] are both set to TRUE (step S230 in FIG. 42). 7) If the values are not the same (NO in step S2306 in FIG. 39), The process is skipped. Steps S2305 to S2308 in FIG. When the process is completed, compare whether sameMotion is FALSE (step S2 in FIG. 42). 309), if sameMotion is FALSE (YES in step S2309 of FIG. 42), That is, the (NumHmvpCand - hMvpIdx)th candidate in the history motion vector predictor list, counting from 0. The element HmvpCandList[NumHmvpCand - hMvpIdx] does not exist in mergeCandList, so the merge The historical prediction movement is added to the numCurrMergeCand-th mergeCandList[numCurrMergeCand] of the candidate list. The (NumHmvpCand - hMvpIdx)th element of the vector candidate list, HmvpCandList[Nu mHmvpCand - hMvpIdx] and increment numCurrMergeCand by 1 (see step in Figure 42). The index hMvpIdx is incremented by 1 (step S2310 in FIG. 42). 2302), and repeats the processing of steps S2302 to S2311 in FIG.
[0250] All elements in the history motion vector prediction candidate list are checked or the merge candidate list is Once all elements in the history have been added with merge candidates, the process of deriving merge candidates for this history is complete. . In this embodiment, as described above, in the history merging candidate derivation process, the history prediction behavior Compare the elements of the merge vector candidate list with the elements of the current merge candidate list, and Only elements of the history motion vector prediction candidate list that are not present in the merge candidate list are added to the merge candidate list. Add it to the list. The normal merge mode differs from the normal predicted motion vector mode in that it does not use a differential vector. Since this is a mode that directly determines the motion information of the processing target block, the current merge candidate list By prohibiting the addition of elements in the history merge candidate list that overlap with elements in Here, the elements of the history motion vector prediction candidate list and the current We compared all candidates in the merge candidate list, but we still need to compare the historical prediction motion vectors. The elements of the merge candidate list are compared with the elements of the current merge candidate list to improve coding efficiency. However, the present invention is not limited to this, as long as it can be implemented. For example, even if the number of elements in the history motion vector candidate list to be compared is limited to 1 or 2, You may also limit the number of elements in the current merge candidate list to be compared to one or two. In addition, in normal merge mode, the merge candidate list contains the motion vectors of the L0 prediction and the L1 prediction Therefore, as in the normal predictive motion vector mode, The predicted motion vector for L0 prediction and the predicted motion vector for L1 prediction cannot be adjusted separately. stomach. In addition, in the normal merge mode, the merge candidate list contains the reference indexes of the L0 prediction and the L1 prediction. Therefore, it is not possible to use the motion vector prediction mode, which is similar to the normal motion vector prediction mode. In addition, the reference indexes for L0 prediction and L1 prediction can be adjusted separately. I can't. In addition, the merge candidate list contains up to six elements, which is more than the predicted motion vector candidate list. Therefore, if you add a duplicate element to the merge candidate list, This increases the number of duplicate elements and makes it difficult to efficiently utilize the merge candidate list. In addition, the elements of the history predicted motion vector candidate list added to the merge candidate list are the history predicted motion vector candidate list elements. It is the most recently added element in the motion vector candidate list. The elements of the history motion vector predictor candidate list that are added to the image candidate list are This is the motion information that is spatially closest to the block. Generally, the normal merge mode is selected. The reason is that the motion of the adjacent block is similar, and the history of the motion vector prediction candidate is Elements of the list are more likely to overlap with elements already added to the merge candidate list. . To address the above issues, we propose a method to reduce the number of merge candidate list elements that overlap with the historical prediction motion vectors. By prohibiting the addition of elements to the list of valid candidates, the number of valid choices is increased. This can improve the efficiency of the process.
[0251] In addition, the maximum number of elements that can be included in a merge candidate list is set to 6. By increasing the number of elements in the candidate list beyond the maximum number of elements that can be included in the candidate list (2), By increasing the probability of selecting the page mode, the overlap of elements in the motion vector predictor candidate list is reduced. The motion vectors of the history of motion vector predictors and the predicted motion vectors are compared while suppressing the deterioration of the coding efficiency. The number of comparison processes of motion vectors of vector candidates can be reduced. In addition to spatial merge candidates, we also support temporal merge candidates, historical merge candidates, average merge candidates, and zero merge candidates. By including a variety of merge candidates, such as the normal merge candidates, the probability of selecting the normal merge mode is increased. This reduces the degradation of coding efficiency due to overlapping of elements in the motion vector predictor candidate list. , the ratio of the motion vector of the history motion vector predictor candidate to the motion vector of the motion vector predictor candidate The comparison process can be reduced.
[0252] <Sub-block temporal merge candidate derivation> Sub-block temporal merging candidates in the sub-block merging mode derivation unit 304 in FIG. The operation of the derivation unit 381 will be described with reference to FIG.
[0253] First, it is determined whether the coding block is smaller than 8x8 pixels (S4002).
[0254] If the coding block is less than 8x8 pixels (S4002: Yes), the sub-block temporal merge candidate The flag indicating the presence of a complement is set to availableFlagSbCol=0 (S4003), and The process of the inter-frame merge candidate derivation unit is completed. Here, the temporal motion vector is calculated by the syntax. When torque prediction is disabled or when sub-block time merging is disabled In this case, the same process as that in the case where the coding block is less than 8x8 pixels (S4002: Yes) is performed.
[0255] On the other hand, if the coding block is 8x8 pixels or more (S4002: No), Next, neighboring motion information of the coding block to be processed is derived (S4004).
[0256] The process of deriving adjacent motion information of a coding block will be described with reference to FIG. The process of deriving adjacent motion information corresponds to the process of the spatial prediction motion vector candidate derivation unit 321 described above. However, the order of searching the adjacent blocks is A0, B0, B1, A1, and B2 is not searched. First, the coding information is obtained for adjacent block n=A0 (S4052). The information includes a flag, availableFlagN, indicating whether adjacent blocks are available, and , and a motion vector mvLXN.
[0257] Next, it is determined whether the adjacent block n is valid or invalid (S4054). If the flag indicating whether or not the request can be made is "availableFlagN=1", the request is valid; otherwise, the request is invalid.
[0258] If adjacent block n is valid (S4054: Yes), the reference index refIdxLXN is The reference index of the adjacent block n is refIdxLXn (S4056). LXN is set as the motion vector mvLXn of the adjacent block n (S4056), The process of deriving information is completed.
[0259] On the other hand, if the adjacent block n is invalid (S4106: No), the adjacent block n is set as B0 and the code is The encryption information is obtained (S4104). The same process is repeated thereafter, looping through B1 and A1 in that order. The process of deriving neighboring motion information loops until the neighboring blocks are valid, and all neighbors are If the adjacent blocks A0, B0, B1, and A1 are invalid, the process of deriving adjacent motion information of the blocks is terminated. do.
[0260] Referring again to FIG. 44, after the adjacent motion information is derived (S4004), the temporal motion A vector is derived (S4006).
[0261] The process of deriving a temporal motion vector will be described with reference to FIG. The temporal motion vector tempMv is initialized as (0,0) (S4062).
[0262] Next, it is determined whether the adjacent motion information is valid or invalid (S4064). If the flag indicating whether the neighboring motion is available or not is set to availableFlagN=1, it is valid, otherwise it is invalid. If the information is invalid (S4064: No), the process of deriving the temporal motion vector is terminated. do.
[0263] On the other hand, if the adjacent motion information is valid (S4064: Yes), L1 prediction is performed on the adjacent block N. It is determined whether the flag predFlagL1N indicating whether or not the p is being used is 1 (S4066). If redFlagL1N=0 (S4066: No), proceed to the next process (S4078). If (S4066: Yes), the P of all pictures registered in all reference lists It is determined whether the OC is equal to or smaller than the POC of the current picture to be coded (S4068). If the determination is true (S4068: Yes), the process proceeds to the next step (S4070).
[0264] If the slice type slice_type is a B slice and the flag collocated_from_l0_flag is 0, If (S4070: Yes and S4072: Yes), ColPic and reference picture RefPicList1[refIdx L1N] (pictures with reference index refIdxL1N in reference list L1) are the same. If this determination is true (S4074: Yes), the temporal motion vector t Let empMv=mvL1N (S4076). If this determination is false (S4074: No), the next process (S4 078). The slice type slice_type is not a B slice and the flag collocated_fro If m_l0_flag is not 0 (S4070: No, or S4072: No), the next process (S40 Continue with 78).
[0265] A flag predFlagL0N indicating whether L0 prediction is used in the adjacent block N It is determined whether predFlagL0N is 1 (S4078). If predFlagL0N=1 (S4078: Yes), ColPi c and the reference picture RefPicList0[refIdxL0N] (reference index refIdxL0N of reference list L0) If the picture is the same as the picture in step S4080, the process proceeds to step S4080. : Yes), and the temporal motion vector tempMv=mvL0N (S4082). If so (S4080: No), the process of deriving a temporal motion vector ends.
[0266] Again, refer to FIG. 44. Next, ColPic is derived (S4016). This process is performed over time. Since this is the same as S4201 in the motion vector predictor candidate derivation unit 322, the explanation will be omitted. do.
[0267] Then, a coding block colCb for a different time is set (S4017). The block is located at the same position as the target coding block in the picture ColPic at the same time. The coding block is set as colCb. This coding block is the code in FIG. This corresponds to encryption block T1.
[0268] Next, the position where the temporal motion vector tempMv is added to the coding block colCb is newly The upper left position of the coding block colCb is (xColCb, yColCb) (S4018). If the temporal motion vector tempMv is (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy, The top left position of colCb is as follows: xColCb = Clip3( xCtb, xCtb + CtbSizeY + 3, xcolCb + ( tempMv[0] >> 4 ) ) yColCb = Clip3( yCtb, yCtb + CtbSizeY - 1, ycolCb + ( tempMv[1] >> 4 ) ) Here, the top left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbS. As shown in the above formula, the position after adding tempMv is significantly different from the position before adding tempMv. The position is corrected to within the range of the tree block size so that it does not get out of the screen. If this occurs, the image will be corrected within the screen.
[0269] The prediction mode PredMode of this coding block colCb is inter prediction (MODE_INTER If the prediction mode of colCb is not inter prediction (S4020), 4020: No), flag indicating the presence of sub-block time merge candidates availableFlagSbCol=0 (S4003), and the process of the sub-block temporal merge candidate derivation unit is terminated.
[0270] On the other hand, if the prediction mode of colCb is inter prediction (S4020: Yes), Here, for colCb, the inter prediction information is derived as follows (S4022, S4023). The central motion vector ctrMvLX for each reference list and a flag indicating whether LX prediction is used Derive the flag ctrPredFlagLX. LX indicates the reference list. In the derivation of reference list 0, LX is L0. In the derivation of the reference list 1, LX is L1. This will be described with reference to the following.
[0271] If the coding block colCb of a different time is not available (S4112: NO), or if If the prediction mode PredMode is intra prediction (MODE_INTRA) (S4114:NO), the flag ava The ilableFlagLXCol and flag predFlagLXCol are both set to 0 (step S4116). The tor mvCol is set to (0,0) (S4118), and the process of deriving inter prediction information is terminated. .
[0272] The coding block colCb is available (S4112: Yes) and the prediction mode PredMode is intra. If it is not prediction (MODE_INTRA) (S4114: YES), use the following procedure to set mvCol and refIdxCol. and calculate availableFlagCol.
[0273] Flag PredFlagLX[xP If [yPCol] is 1 (YES in S4120), the motion vector mvCol is the coding block col It is set to the same value as MvLX[xPCol][yPCol], which is the motion vector of LX of Cb (S4122). The reference index refIdxCol is the same as the reference index RefIdxLX[xPCol][yPCol] of LX. (S4124), and the list listCol is set to LX (S4126). , xPCol, yPCol are the upper left pixel of the coding block colCb in the picture colPic at different times. is an index indicating the position of
[0274] On the other hand, a flag PredFla indicating whether LX prediction of the coding block colCb is used If gLX[xPCol][yPCol] is 0 (NO in S4120), the following process is performed. First, The POC of all pictures registered in the reference list is the same as that of the current picture to be coded. It is judged whether it is below POC or not (S4128). And, LY prediction of colCb is used. It is determined whether the flag PredFlagLY[xPCol][yPCol] indicating whether the poling address is 1 or not (S4128). Here, we define LY prediction as a reference list different from LX prediction. That is, when LX=L0, LY=L1, When LX=L1, LY=L0.
[0275] If this determination is true (S4128: Yes), the motion vector mvCol is The motion vector MvLY[xPCol][yPCol] of the reference LY is set to the same value (S4130). The reference index refIdxCol is set to the same value as the reference index RefIdxLY[xPCol][yPCol] of LY. The list listCol is set to LX (S4132), and the list listCol is set to LX (S4134).
[0276] On the other hand, if this determination is false (S4128: No), the flag availableFlagLXCol and the flag pr edFlagLXCol are both set to 0 (step S4116), and the motion vector mvCol is set to (0,0). Then, the process of deriving the inter prediction information is completed (S4118).
[0277] When inter prediction information is obtained from the coding block colCb, the flag availableFlagLXCo Both l and flag predFlagLXCol are set to 1 (S4136).
[0278] Next, the motion vector mvCol is scaled to obtain a motion vector mvLXCol (S41 38). This process is the same as S4245 in the temporal motion vector predictor candidate derivation unit 322. Therefore, the description will be omitted.
[0279] Refer again to FIG. 44. After deriving the inter prediction information for each reference list, The calculated motion vector mvLXCol is the center motion vector ctrMvLX, and the calculated flag predFlagLXCol is The flag is set to ctrPredFlagLX (S4022, S4023).
[0280] Then, it is determined whether the central motion vector is valid or invalid (S4024). If 0 and ctrPredFlagL1=0, it is invalid. Otherwise, it is invalid. If the sub-block time merge candidate is available (S4024: No), the flag "available" is set to indicate the existence of the sub-block time merge candidate. Set FlagSbCol=0 (S4003) to end the processing of the sub-block time merge candidate derivation part. Complete.
[0281] On the other hand, if the central motion vector is valid (S4024: Yes), the sub-block temporal merge candidate The flag indicating the presence of a complement is set to availableFlagSbCol=1 (S4025), and the sub-block operation is started. This process will be described with reference to FIG.
[0282] First, the number of sub-blocks in the width direction is calculated from the width cbWidth and height cBheight of the coding block colCb. numSbX and the number of sub-blocks in the height direction numSbY are calculated (S4152). LXSbCol=0 (S4152). After this process, the process is repeated in units of the prediction sub-block colSb. This iteration repeats the process of changing the height index ySbIdx from 0 to numSbY. Processing is performed while changing the width direction index xSbIdx from 0 to numSbX.
[0283] If the top left position of the coding block colCb is (xCb, yCb), then the left The top position (xSb, ySb) is calculated as follows: xSb = xCb + xSbIdx * sbWidth ySb = yCb + ySbIdx * sbHeight Next, the position where the temporal motion vector tempMv is added to the predicted sub-block colSb is The top left position of the predicted sub-block colSb is (xColSb, yColSb). If the temporal motion vector tempMv is (tempMv[0], tempMv[1]) with 1 / 16 pixel accuracy, The top left position of colSb is as follows: xColSb = Clip3( xCtb, xCtb + CtbSizeY + 3, xSb + ( tempMv[0] >> 4 ) ) yColSb = Clip3( yCtb, yCtb + CtbSizeY - 1, ySb + ( tempMv[1] >> 4 ) ) Here, the top left position of the tree block is (xCtb, yCtb), and the size of the tree block is CtbS. As shown in the above formula, the position after adding tempMv is significantly different from the position before adding tempMv. The position is corrected to within the range of the tree block size so that it does not get out of the screen. If this occurs, the image will be corrected within the screen.
[0284] Then, inter prediction information is derived for each reference list (S4156, S4158). Here, for the prediction subblock colSb, the motion of each reference list is calculated for each subblock. A vector mvLXSbCol and a flag availableFlagLXSbCo indicating whether the prediction subblock is available or not LX indicates the reference list, and in the derivation of reference list 0, LX becomes L0, and In the derivation of step 1, LX becomes L1. The derivation of the inter prediction information is performed in steps S4022 and S4023 of FIG. 3, so the explanation will be omitted.
[0285] After deriving the inter prediction information (S4156, S4158), the prediction sub-block colSb is valid. It is determined whether availableFlagL0SbCol=0 and availableFlagL1SbCol=0 (S4160). If colSb is invalid (S4160:No), it is determined that colSb is invalid. Otherwise, it is determined that colSb is valid. ), and the motion vector mvLXSbCol is set as the central motion vector ctrMvLX (S4162). A flag predFlagLXSbCol indicating whether or not LX prediction is used is set to the central motion vector. The flag ctrPredFlagLX is set to the sub-block motion information (S4162). The derivation is completed.
[0286] Again, refer to FIG. 44. Then, the motion vector mvL0SbCol of L0 and the motion vector of L1 The tor mvL1SbCol is calculated by the sub-block merge mode derivation unit 304. The block is added as a candidate to the merge candidate list subblockMergeCandList (S4028). This addition is done when the flag availableSbCol=1 indicates the presence of a subblock time merge candidate. This is the only step that is performed by the temporal merge candidate derivation unit 342.
[0287] The above description of the sub-block temporal merge candidate derivation unit 381 is for the encoding process. The same applies to the decoding process. The operation of the sub-block temporal merge candidate derivation unit 481 is the same as the above-described coding and decoding. and is explained in the same manner.
[0288] <Motion compensation prediction processing> The motion compensation prediction unit 306 predicts the current block being predicted during coding. The motion compensation prediction unit 306 obtains the position and size of the inter prediction information. The inter prediction mode is obtained from the inter prediction mode determination unit 305. The reference image memory is used to derive the reference coordinates and motion vectors specified by the reference index. The reference picture is moved from the same position as the image signal of the prediction block by the amount of the motion vector. After acquiring the image signal at the position, a prediction signal is generated.
[0289] The reference mode for inter prediction is from a single reference picture, such as L0 prediction or L1 prediction. In the case of prediction, a prediction signal obtained from one reference picture is a motion compensation prediction signal, When the prediction mode is prediction from two reference pictures, such as BI prediction, The weighted average of the prediction signals obtained from the two reference pictures is used as the motion compensated prediction signal. The motion compensation prediction signal is then supplied to the prediction method determination unit. The ratio is set to 1:1, but other ratios may be used for weighted averaging. For example, The closer the picture interval between the picture and the reference picture, the higher the weighting ratio. The weighting ratio may be calculated based on the combination of picture intervals. This may be done using a correspondence table with the weighting ratios.
[0290] The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The compensation prediction unit 406 outputs the inter prediction information to the normal prediction motion vector mode derivation unit 401, A normal merge mode derivation unit 402, a sub-block predicted motion vector mode derivation unit 403, The block merge mode is obtained from the subblock merge mode derivation unit 404 via the switch 408.
[0291] The motion compensation prediction unit 406 outputs the obtained motion compensation prediction signal to the decoded image signal superimposition unit 207. Supply.
[0292] <About prediction direction> 57 to 61 are diagrams for explaining the prediction direction of motion compensation prediction. The process of predicting from the reference picture is defined as uniprediction, and in the case of uniprediction, L0 prediction or L1 prediction is used. Prediction is a method of predicting a picture using one of two reference pictures registered in the reference list. Do the following.
[0293] FIG. 57 shows a uni-predictive coding example in which the L0 reference picture (RefL0Pic) is the coding target picture. FIG. 58 shows a case where the time is before the CurPic. This shows a case where the prediction reference picture is at a later time than the current picture to be coded. ,The reference picture for L0 prediction in Figure 57 and Figure 58 is the reference picture for L1 prediction (RefL1 Pic) for uniprediction.
[0294] The process of making predictions from two reference pictures is defined as bi-prediction, and in the case of bi-prediction, it is called L0 prediction. The bi-prediction is expressed as BI prediction using both L0 and L1 prediction. The reference picture for L1 prediction is before the current picture and the reference picture for L2 prediction is not coded. FIG. 60 shows a case where the L0 prediction is performed after the current picture. When the reference picture for L1 prediction and the reference picture for L2 prediction are located at a time earlier than the picture to be coded, FIG. 61 shows a bi-prediction example in which a reference picture for L0 prediction and a reference picture for L1 prediction are used. In this way, the L0 / L1 picture is at a later time than the picture to be coded. The relationship between the prediction type and time is not limited to L0 being the past direction and L1 being the future direction. In the case of bi-prediction, it is possible to perform L0 prediction and L1 prediction using the same reference picture. In addition, the judgment of whether to perform the motion compensation prediction in a uni-predictive manner or in a bi-predictive manner may be performed. The decision may include, for example, information indicating whether or not L0 prediction is used and whether or not L1 prediction is used (e.g., For example, the decision is based on the flag.
[0295] <About reference indexes> In the embodiment of the present invention, in order to improve the accuracy of the motion compensation prediction, This makes it possible to select the most suitable reference picture from among a number of reference pictures. The reference picture used in the motion compensation prediction is used as a reference index, and The index is encoded into the encoded stream along with the encoded vector.
[0296] <Motion compensation process based on normal predicted motion vector mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. As described above, in the inter prediction mode determination unit 305, the normal prediction motion vector mode derivation unit 3 When the inter prediction information according to 01 is selected, this inter prediction information is treated as inter prediction. The reference mode of the block currently being processed is acquired from the measurement mode determination unit 305. The motion compensation prediction signal is generated by deriving a motion vector and a reference index. The compensated prediction signal is supplied to a prediction method determination unit 105 .
[0297] Similarly, the motion compensation unit 406 is also shown in the inter prediction unit 203 on the decoding side in FIG. In the process of decoding, the switch 408 is set to the normal predicted motion vector mode derivation unit 401 so that the When the connection is established, the inter prediction information by the normal prediction motion vector mode derivation unit 401 The reference mode, reference index, and motion vector of the currently processed block are obtained. The generated motion compensation prediction signal is used to generate a vector of the decoded image. The signal is supplied to an image signal superimposing unit 207 .
[0298] <Motion compensation processing based on normal merge mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. As described above, the inter prediction mode determination unit 305 determines whether the normal merge mode is When the inter prediction information is selected, the inter prediction information is used as the inter prediction mode decision. The reference mode and reference index of the block currently being processed are acquired from the determination unit 305. The generated motion compensation prediction signal is then used to derive a motion vector. The signal is supplied to a prediction method determination unit 105.
[0299] Similarly, the motion compensation unit 406 is also shown in the inter prediction unit 203 on the decoding side in FIG. In the process of decoding, the switch 408 is connected to the normal merge mode derivation unit 402 so that In this case, the inter prediction information is obtained by the normal merge mode derivation unit 402, and the current processing target The reference mode, reference index, and motion vector of the target block are derived, and the motion vector is calculated. The generated motion compensation prediction signal is sent to the decoded image signal superimposing unit 207. Supplied.
[0300] <Motion compensation process based on sub-block predicted motion vector mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. In this way, the inter prediction mode determination unit 305 determines the sub-block prediction motion vector mode. When the inter prediction information is selected by the derivation unit 303, the inter prediction information is The reference mode of the block currently being processed is obtained from the center prediction mode determination unit 305. The generated code, reference index, and motion vector are derived, and a motion compensation prediction signal is generated. The obtained motion compensation prediction signal is supplied to the prediction method determination unit 105 .
[0301] Similarly, the motion compensation unit 406 is also shown in the inter prediction unit 203 on the decoding side in FIG. In the process of decoding, the switch 408 is set to the sub-block prediction motion vector mode derivation unit When the sub-block prediction motion vector mode derivation unit 403 is connected to the Obtain inter prediction information and set the reference mode and reference inter prediction for the currently processed block. The motion compensation prediction signal is generated by deriving a motion vector from the generated motion compensation prediction signal. The measured signal is supplied to a decoded image signal superimposing unit 207 .
[0302] <Motion compensation processing based on sub-block merge mode> The motion compensation unit 306 is also shown in the inter prediction unit 102 on the encoding side in FIG. As described above, in the inter prediction mode determination unit 305, the sub-block merge mode derivation unit 30 When the inter prediction information according to 4 is selected, the inter prediction information is The reference mode of the block currently being processed is acquired from the mode determination unit 305. The motion compensation prediction signal is generated by deriving the motion vector and the motion compensation index. The compensated prediction signal is supplied to a prediction method determination unit 105 .
[0303] Similarly, the motion compensation unit 406 is also shown in the inter prediction unit 203 on the decoding side in FIG. In the process of decoding, a switch 408 is connected to the sub-block merge mode derivation unit 404 so that When the subblock merge mode is connected, the inter prediction information is obtained by the subblock merge mode derivation unit 404. The reference mode, reference index, and motion vector of the currently processed block are obtained. The generated motion compensation prediction signal is used as a decoded image signal. The signal is supplied to a signal superimposing unit 207.
[0304] <Motion compensation processing based on affine transformation prediction> In normal motion vector prediction mode and normal merge mode, the following flags are used: The following flags are used to indicate whether the affine model is used in the encoding process. Based on the inter prediction conditions determined by the inter prediction mode determination unit 305, the following flags are The result is reflected in the block and encoded into the encoded stream. Determine whether to perform affine model motion compensation based on the following flags in the program: .
[0305] sps_affine_enabled_flag is the flag for motion compensation using the affine model in inter prediction. If sps_affine_enabled_flag is 0, the sequence unit In this case, the motion compensation is suppressed so that it is not based on the affine model. and cu_affine_type_flag are conveyed in the CU syntax of the coded video sequence. If sps_affine_enabled_flag is set to 1, affine is not supported in the coded video sequence. Motion compensation based on the 3D model can be used.
[0306] sps_affine_type_flag is the 6-parameter affine model for inter prediction. Indicates whether motion compensation is available.
[0307] If sps_affine_type_flag is 0, the 6-parameter affine model is used for motion compensation. In addition, cu_affine_type_flag is suppressed to prevent CUs in a coded video sequence from Not transmitted in the syntax. If sps_affine_type_flag is 1, A six-parameter affine model of motion compensation is available for sequences.
[0308] If sps_affine_type_flag is not present, it shall be set to 0.
[0309] When decoding a P or B slice, the current CU If r_affine_flag is 1, generate a motion compensation prediction signal for the CU currently being processed. To achieve this, affine model motion compensation is used.
[0310] If inter_affine_flag is 0, the affine model is not included in the currently processed CU. Not used.
[0311] If inter_affine_flag is not present, it shall be set to 0.
[0312] When decoding a P or B slice, in the currently processed CU, If ffine_type_flag is 1, the motion compensation prediction signal for the currently processed CU is generated. To achieve this, motion compensation using a six-parameter affine model is used.
[0313] If cu_affine_type_flag is 0, the motion compensation prediction signal of the currently processed CU is To generate the signal, motion compensation using a four-parameter affine model is used.
[0314] In the affine model, the reference index and the motion vector are calculated for each subblock. Since the tor is derived, the reference index that is processed on a subblock basis and a motion vector are used to generate a motion compensation prediction signal.
[0315] <Variation 1> A first modified example of the present embodiment will be described. This modified example differs from the present embodiment in that it uses merge differential motion. The difference is that a vector mode has been added, and only the points different from this embodiment will be described. If umve_flag in FIG. 12 is 1, the merged motion vector difference mode is selected. If is 0, normal merge mode is used.
[0316] Next, the operation of the merge motion vector difference mode will be described. one of the two merge candidates (the merge candidates with merge index 0 and 1 in the merge candidate list) For each of the L0 prediction motion vectors and L1 prediction motion vectors of the two merge candidates, , a mode in which one merge differential motion vector can be added.
[0317] In the case of the merged motion vector difference mode, the merged motion vector difference is The data is encoded by the encoding unit 108 and decoded by the bit stream decoding unit 201 .
[0318] As described above, the merge candidate list is also used in the merge differential motion vector mode. , prohibit adding elements of the history motion vector predictor candidate list that overlap with elements of the merge candidate list. By stopping the multiplication and increasing the effective selection factors, the coding efficiency can be improved. .
[0319] In addition, the merge differential motion vector mode has been added to ensure the selection of the normal predicted motion vector mode. By lowering the rate, the coding efficiency is reduced due to duplication of elements in the predicted motion vector candidate list. While suppressing the motion vector of the history motion vector candidate, the motion vector of the predicted motion vector candidate The number of vector comparison processes can be reduced. <Variation 2> A second modification of this embodiment will be described. This modification is different from this embodiment shown in FIG. The operations of the historical motion vector predictor candidate derivation units 323 and 423 are different from those in the present embodiment. Only the different points will be described. FIG. 65 shows the procedure of deriving a historical motion vector predictor candidate in the second modification. FIG. 65 is a flowchart for explaining the process of the process of FIG. 41, in which step S2209 has been added. The operation in Figure 65 is the same as that in Figure 41 except for step S2209.
[0320] If numCurrMvpCand is smaller than 2, which is the maximum number of elements in a motion vector predictor candidate list ( The process of step S2205 in FIG. 65 (YES) will be described.
[0321] The reference index of LY in the history motion vector predictor candidate HmvpCandList[NumHmvpCand - i] It is checked whether the reference index of LY of the coding block to be processed is the same or not (see FIG. 65). Step S2209), L of the history motion vector predictor candidate HmvpCandList[NumHmvpCand-i] If the reference index of Y and the reference index of LY of the coding block to be processed are the same, If the result of step S2209 in FIG. 65 is YES, the process proceeds to step S2206. The reference index of the LY in the candidate HmvpCandList[NumHmvpCand - i] and the coding block to be processed If the reference indexes of the LYs of the blocks are not the same (NO in step S2209 in FIG. 65), Go to 2207.
[0322] As described above, the LY reference index of the history predicted motion vector candidate and the coding When the LY reference index of the block is the same, the motion vector prediction candidate of the history The vector is added to the candidate list of predicted motion vectors for LY prediction, without comparing the motion vector of the motion vector candidate with the motion vector of the motion vector predictor candidate. A highly accurate historical motion vector predictor candidate can be added to the motion vector predictor candidate list.
[0323] In this embodiment, in the process of deriving a history predicted motion vector candidate, The motion vector predictor candidate list elements are not compared with the motion vector predictor candidate list elements. The elements of the historical predicted motion vector candidate list are added to the predicted motion vector candidate list, while the elements of the historical predicted motion vector candidate list are added to the predicted motion vector candidate list. In the history merge candidate derivation process, the elements of the history merge candidate list and the elements of the merge list are and add to the merge list only those history merge candidates that are not already in the merge list. The above configuration provides the following effects.
[0324] 1. In the process of deriving candidates for the history predicted motion vector candidate list, an additional candidate derivation process is performed. This eliminates the need for a predictive motion, reducing the amount of processing and the circuit scale. Even if elements in the vector candidate list are duplicated, the coding by reducing the number of choices is possible. The loss of efficiency can be kept to a minimum.
[0325] 2. In the process of deriving history merge candidates, the merge list elements and the overlapping history merge candidates are selected. By prohibiting the addition of elements to the complement list, the target block can be processed without using the difference vector. In the normal merge mode, the motion information of the This makes it possible to improve the coding efficiency.
[0326] 3. Fill the history prediction motion vector candidate list with unique history prediction motion vector candidates. In this case, after the history merge candidate derivation unit 345 in the normal merge mode derivation unit 302 This allows the processing of the merge candidate supplementation unit 346 to be omitted, thereby reducing the amount of processing. .
[0327] 4. Fill the history prediction motion vector candidate list with unique history prediction motion vector candidates. The elements of the history motion vector predictor candidate list and the elements of the motion vector predictor candidate list are The elements of the history motion vector candidate list are converted to the predicted motion vector without comparing it with the original motion vector. By adding the candidate to the candidate list, the history prediction in the normal prediction motion vector mode derivation unit 301 is The process of the predicted motion vector supplementing unit 325 following the predicted motion vector candidate derivation unit 323 is omitted. It is possible.
[0328] All of the above-described embodiments may be combined in multiple forms.
[0329] In all the embodiments described above, the encoded bitstream output by the image encoding device is The stream is specified so that it can be decoded according to the encoding method used in the embodiment. The image encoding device has a data format of can decode an encoded bitstream of this particular data format.
[0330] In order to exchange encoded bitstreams between an image encoding device and an image decoding device, When a wired or wireless network is used, the data format appropriate for the transmission mode of the communication path In this case, the image coding device may convert the output bit stream into The encoded bit stream is converted into encoded data in a data format suitable for the transmission mode of the communication channel. a transmitting device that converts the encoded data into a digital signal and transmits it to a network; A receiving device is provided for restoring the encoded bit stream to an image decoding device and supplying the bit stream to the image decoding device.
[0331] The transmitting device includes a memory for buffering the coded bit stream output by the image coding device. a packet processing unit for packetizing the coded bit stream; and a transmitting unit for transmitting the packetized encoded data. A receiver for receiving packetized coded data via a packetizer, and a memory for packet processing of the encoded data to generate an encoded bit stream. and a packet processing unit for providing the packet to an image decoding device.
[0332] In addition, by adding a display unit for displaying the image decoded by the image decoding device to the configuration, In this case, the display unit may display the decoded image signal generated by the decoded image signal superimposing unit 205. The decoded image signal stored in the decoded image memory 206 is read out and displayed on the screen.
[0333] In addition, an imaging unit is added to the configuration, and the captured image is input to the image encoding device. In this case, the imaging unit inputs an image signal captured by the imaging unit to the block division unit 101. To exert effort.
[0334] FIG. 66 shows an example of a hardware configuration of the encoding / decoding device of the present application. The present invention includes the configurations of an image encoding device and an image decoding device according to the embodiments of the present invention. The encoding / decoding device 9000 includes a CPU 9001, a codec IC 9002, an I / O interface interface 9003, memory 9004, optical disk drive 9005, network interface A video interface 9009 and a computer interface 9006 are connected to each other via a bus 9010. are connected by.
[0335] The image encoding unit 9007 and the image decoding unit 9008 are typically a codec IC 9002 and The image encoding process of the image encoding device according to the embodiment of the present invention is implemented as an image encoding The image decoding process is executed by the decoding unit 9007 in the image decoding device according to the embodiment of the present invention. The image encoding process is performed by the image encoding unit 9007. The I / O interface 9003 For example, a USB interface can be used to connect an external keyboard 9104 and mouse 9 105, etc. The CPU 9001 receives input via the I / O interface 9003. The encoding / decoding device 9 is controlled to execute an operation desired by the user based on the user's operation. 000. As a user's operation using the keyboard 9104, mouse 9105, etc. allows you to select whether to perform encoding or decoding functions, set the encoding quality, and There are input / output destinations for frames, and input / output destinations for images, etc.
[0336] When the user desires to play back the images recorded on the disk recording medium 9100 The optical disk drive 9005 reads the encoded video from the inserted disk recording medium 9100. The read encoded stream is then transmitted to the decoder 9010 via the bus 9010. The image decoding unit 9008 of the block IC 9002 receives the encoded image data and sends it to the image decoding unit 9008 of the block IC 9002. The image decoding process in the image decoding device according to the embodiment of the present invention is performed on the data stream. The decoded image is then displayed on an external monitor 9103 via a video interface 9009. The encoding / decoding device 9000 also includes a network interface 9006. 9101, the system is connected to an external distribution server 9106 and a mobile terminal 9107 via a network 9101. The user can change the image recorded on the disk recording medium 9100 to a distribution service. When it is desired to play back images recorded on the server 9106 or the mobile terminal 9107, The network interface 9006 receives the code from the input disk recording medium 9100. Instead of reading the encoded bitstream, the network 9101 receives the encoded stream. Also, when the user desires to play back the image recorded in the memory 9004, In this case, the embodiment of the present invention is applied to the coded stream recorded in the memory 9004. The image decoding device according to the present invention performs image decoding processing.
[0337] The user captures an image using an external camera 9102, encodes the image, and records it in memory 9004. When an operation is desired, the video interface 9009 receives an image from the camera 9102. The image data is inputted and sent to the image encoding unit 9007 of the codec IC 9002 via the bus 9010. The image encoding unit 9007 performs the following on the image input via the video interface 9009: The image encoding process is performed in the image encoding device according to the embodiment of the present invention, The encoded bit stream is then sent to the memory via bus 9010. The user changes the memory 9004 and codes the data on the disk recording medium 9100. If it is desired to record the encrypted stream, the optical disk drive 9005 may be The encoded stream is written onto the inserted disk recording medium 9100 .
[0338] A hardware configuration that has an image encoding device but does not have an image decoding device, or a hardware configuration that has an image decoding device It is also possible to realize a hardware configuration that does not include an image coding device. The hardware configuration is, for example, a codec IC 9002, an image encoding unit 9007, or This is realized by replacing the image decoding unit 9008 with the image decoding unit 9009.
[0339] The above coding and decoding processes are carried out by hardware-based transmission, storage, and reception devices. It is of course possible to realize it by using ROM (read only memory) or flash memory. Firmware stored in memory, etc., and software executed by a computer, etc. The firmware program and software program may be executed on a computer. The information may be provided by recording it on a recording medium that can be read by a computer or by a wired or wireless network. It may be provided from a server via the Internet, or it may be provided as terrestrial or satellite digital broadcasting data. It may also be provided as a broadcast.
[0340] The present invention has been described above based on the embodiments. The embodiments are merely examples, and each of the structures The combination of components and processes can be modified in many different ways, and these modifications It will be appreciated by those skilled in the art that the embodiments are within the scope of the present invention. [Explanation of symbols]
[0341] 100 image encoding device, 101 block division unit, 102 inter prediction unit, 103 intra prediction unit, 104 decoded image memory, 105 prediction method determination unit, 10 6 residual signal generation unit, 107 orthogonal transformation and quantization unit, 108 bit string encoding unit, 109 inverse quantization and inverse orthogonal transformation unit, 110 decoded image signal superposition unit, 111 coding information information storage memory, 200 image decoding device, 201 bit string decoding unit, 202 block A block division unit, 203 an inter prediction unit, 204 an intra prediction unit, and 205 coding information Storage memory 205 inverse quantization and inverse orthogonal transformation unit, 207 decoded image signal superposition unit, 208 Decoded image memory.< / poc>
Claims
1. The spatial motion information candidates are derived from the motion information of blocks spatially adjacent to the block to be coded. a spatial motion information candidate derivation unit for outputting a spatial motion information candidate; Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be coded. a time motion information candidate derivation unit for outputting the time motion information candidate; A history motion information candidate is derived from a memory that holds motion information of an encoded block. an information candidate derivation unit; Equipped with The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video encoding device comprising:
2. The spatial motion information candidates are derived from the motion information of blocks spatially adjacent to the block to be coded. The step of issuing; Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be coded. The step of issuing; deriving candidate historical motion information from a memory that holds motion information of encoded blocks; P and Equipped with The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video encoding method comprising:
3. Computer, The spatial motion information candidates are derived from the motion information of blocks spatially adjacent to the block to be coded. The step of issuing; Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be coded. The step of issuing; deriving candidate historical motion information from a memory that holds motion information of encoded blocks; P and A video encoding program for causing a video encoding device to function as a The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video encoding program comprising:
4. Derive spatial motion information candidates from motion information of blocks spatially adjacent to the block to be decoded a spatial motion information candidate derivation unit for determining whether the motion information candidate is a spatial motion information candidate; Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be decoded. a time motion information candidate derivation unit for determining whether the time motion information candidate is a candidate for the time motion information; A historical motion information calculation method for deriving historical motion information candidates from a memory that holds motion information of decoded blocks. An information candidate derivation unit; Equipped with The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video decoding device comprising:
5. Derive spatial motion information candidates from motion information of blocks spatially adjacent to the block to be decoded and Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be decoded. and deriving historical motion information candidates from a memory that holds motion information of decoded blocks; and, Equipped with The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video decoding method comprising:
6. Computer, Derive spatial motion information candidates from motion information of blocks spatially adjacent to the block to be decoded and Temporal motion information candidates are derived from the motion information of blocks temporally adjacent to the block to be decoded. and deriving historical motion information candidates from a memory that holds motion information of decoded blocks; and, A video decoding program for causing the device to function as a The motion information is calculated in the order of the spatial motion information candidate, the temporal motion information candidate, and the history motion information candidate. Register on the candidate list, A comparison is made between the motion information of the historical motion information candidate and the spatial motion information candidate, The motion vector candidate derivation process is performed by using the history motion information candidate, the time motion information candidate, and the The motion information of the spatial motion information candidate and the temporal motion information candidate is not compared, and the historical motion information is When the spatial motion information candidate and the motion information are not the same, the motion information candidate is added to the motion information candidate list. will be registered in the A video decoding program comprising:
7. A method for storing a bit stream generated by the moving image coding method according to claim 2 on a recording medium. How to pay.
8. A transmission method for transmitting a bit stream generated by the moving image encoding method according to claim 2.
Citation Information
Patent Citations
Moving image coding / decoding device using moving compensation inter-frame prediction system employing affine transformation
JP1997172644A
Method and apparatus for processing video signal based on inter prediction
US20200137398A1
Partial / full pruning when adding a HMVP candidate to merge / amvp
WO2020003275A1
Simplified history based motion vector prediction
WO2020065517A1