Video encoding device, video encoding method, and video encoding program, video decoding device, video decoding method, and video decoding program
By employing block division and advanced prediction methods, the technique enhances image encoding and decoding efficiency by leveraging intra and inter prediction with adaptive motion vectors, addressing the limitations of relying on adjacent decoded pixels.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- JVC KENWOOD CORP
- Filing Date
- 2025-08-06
- Publication Date
- 2026-05-19
AI Technical Summary
Existing image encoding and decoding techniques rely solely on adjacent decoded pixels for prediction, leading to poor prediction efficiency.
The technique involves dividing images into blocks and using a variety of prediction methods, including intra and inter prediction, with reference position correction and adaptive motion vectors, to enhance encoding efficiency.
This approach achieves highly efficient image encoding and decoding with reduced overhead by utilizing diverse prediction modes and adaptive motion vectors.
Smart Images

Figure 0007861900000001 
Figure 0007861900000002 
Figure 0007861900000003
Abstract
Description
Technical Field
[0001] The present invention relates to an image encoding and decoding technique for dividing an image into blocks and performing prediction.
Background Art
[0002] In image encoding and decoding, an image to be processed is divided into blocks, which are sets of a predetermined number of pixels, and processing is performed in block units. By appropriately dividing into blocks and appropriately setting intra prediction (intra prediction) and inter prediction (inter prediction) within the screen, the encoding efficiency is improved.
[0003]
[0004]
Prior Art Documents
Patent Documents
Patent Document 1
[0005]
Summary of the Invention
Problems to be Solved by the Invention
[0006] However, the technique of Patent Document 1 uses only the decoded pixels adjacent to the block to be encoded / decoded for prediction, and the prediction efficiency is poor.
Means for Solving the Problems
[0007]
[0008] [Figure 1] [Figure 2] [Figure 3] [Figure 4] [Figure 5] [Figure 6A] [Figure 6B] [Figure 6C] [Figure 6D] [Figure 6E] [Figure 7] [Figure 8] [Figure 9] [Figure 10A] [Figure 10B] [Figure 11] [Figure 12A] [Figure 12B] [Figure 13] [Figure 14] [Figure 15] <00Block vector candidate derivation unit, and selection of block vector from the block vector candidates. The selection section and the reference block referenced by the selection block vector are referenced. A reference position correction unit corrects the reference position of the reference block so that it refers to the inside of the function region. The system includes, and based on the reference position of the reference block, the decoded image in the picture to be processed. The element is obtained from the decoded image memory unit as the predicted value of the block to be processed. [Effects of the Invention]
[0007] According to the present invention, highly efficient image encoding and decoding can be achieved with low overhead. [Brief explanation of the drawing]
[0008] [Figure 1] This is a block diagram of an image encoding device according to an embodiment of the present invention. [Figure 2] This is a block diagram of an image decoding device according to an embodiment of the present invention. [Figure 3] This is a flowchart illustrating the process of splitting a tree block. [Figure 4] This diagram shows how an input image is divided into tree blocks. [Figure 5] This is a diagram illustrating the z-scan. [Figure 6A] This diagram shows the division shape of the block. [Figure 6B] This diagram shows the division shape of the block. [Figure 6C] This diagram shows the division shape of the block. [Figure 6D] This diagram shows the division shape of the block. [Figure 6E] This diagram shows the division shape of the block. [Figure 7] This is a flowchart to explain the process of dividing a block into four parts. [Figure 8]It is a flowchart for explaining the operation of dividing a block into two or three parts. [Figure 9] It is a syntax for expressing the shape of block division. [Figure 10A] It is a diagram for explaining intra prediction. [Figure 10B] It is a diagram for explaining intra prediction. [Figure 11] It is a diagram for explaining the reference block of inter prediction. [Figure 12A] It is a syntax for expressing the prediction mode of the coded block. [Figure 12B] It is a syntax for expressing the prediction mode of the coded block. [Figure 13] It is a diagram showing the correspondence between syntax elements and modes related to inter prediction. [Figure 14] It is a diagram for explaining the affine transformation motion compensation between two control points. [Figure 15] It is a diagram for explaining the affine transformation motion compensation between three control points. [Figure 16] It is a block diagram of the detailed configuration of the inter prediction unit 102 in FIG. 1. [Figure 17] It is a block diagram of the detailed configuration of the normal prediction motion vector mode derivation unit 301 in FIG. 16. [Figure 18] It is a block diagram of the detailed configuration of the normal merge mode derivation unit 302 in FIG. 16. [Figure 19] It is a flowchart for explaining the normal prediction motion vector mode derivation process of the normal prediction motion vector mode derivation unit 301 in FIG. 16. [Figure 20] It is a flowchart showing the processing procedure of the normal prediction motion vector mode derivation process. [Figure 21] It is a flowchart for explaining the processing procedure of the normal merge mode derivation process. 08> [Figure 22] It is a block diagram of the detailed configuration of the inter prediction unit 203 in FIG. 2. [Figure 23]Figure 22 is a block diagram showing the detailed configuration of the normal predictive motion vector mode derivation unit 401. [Figure 24] Figure 22 is a block diagram showing the detailed configuration of the normal merge mode derivation unit 402. [Figure 25] Figure 22 is a flowchart illustrating the normal predicted motion vector mode derivation process of the normal predicted motion vector mode derivation unit 401. [Figure 26] This diagram illustrates the initialization and update process for the historical prediction motion vector candidate list. [Figure 27] This is a flowchart of the identical element verification process in the initialization and update process of the history prediction motion vector candidate list. [Figure 28] This is a flowchart of the element shifting procedure in the initialization and update process of the history prediction motion vector candidate list. [Figure 29] This is a flowchart illustrating the procedure for deriving candidate motion vectors based on historical predictions. [Figure 30] This is a flowchart illustrating the procedure for deriving candidates for history merge. [Figure 31A] This diagram illustrates an example of the process for updating the list of candidate motion vectors predicted in the history. [Figure 31B] This diagram illustrates an example of the process for updating the list of candidate motion vectors predicted in the history. [Figure 31C] This diagram illustrates an example of the process for updating the list of candidate motion vectors predicted in the history. [Figure 32] This diagram illustrates motion compensation prediction in the case of L0 prediction, where the L0 reference picture (RefL0Pic) is at a time earlier than the picture to be processed (CurPic). [Figure 33] This diagram illustrates motion compensation prediction in the case of L0 prediction, where the reference picture for the L0 prediction is at a later time than the picture being processed. [Figure 34]This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction is at a time earlier than the picture to be processed, and the reference picture for L1 prediction is at a time later than the picture to be processed. [Figure 35] This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction and the reference picture for L1 prediction are at a time earlier than the picture being processed. [Figure 36] This diagram illustrates the prediction direction of motion-compensated prediction in a dual prediction system where the reference picture for L0 prediction and the reference picture for L1 prediction are at a later time than the picture being processed. [Figure 37] This figure illustrates an example of the hardware configuration of an encoding / decoding device according to an embodiment of the present invention. [Figure 38] This is a flowchart illustrating the procedure for deriving the average merge candidate. [Figure 39A] This diagram illustrates the effective reference area of an intrablock copy. [Figure 39B] This diagram illustrates the effective reference area of an intrablock copy. [Figure 40] Figure 1 is a block diagram showing the detailed configuration of the intra prediction unit 103. [Figure 41] Figure 2 is a block diagram showing the detailed configuration of the intra prediction unit 204. [Figure 42] This is a block diagram of the intrablock copy prediction unit 352. [Figure 43] This is a block diagram of the intrablock copy prediction unit 362. [Figure 44] This is a flowchart illustrating the predicted intrablock copy process of the intrablock copy prediction unit 352. [Figure 45] This is a flowchart illustrating the predicted intrablock copy process of the intrablock copy prediction unit 362. [Figure 46] This is a flowchart to explain the merge intrablock copy process. [Figure 47]This flowchart illustrates the processing steps for deriving the block vector mode of a predicted intrablock copy. [Figure 48] This diagram illustrates the processing performed by the reference position correction unit 380 and the reference position correction unit 480. [Figure 49] This diagram shows how the reference position is corrected. [Figure 50A] This diagram illustrates the positions of the top-left and bottom-right corners when the referenced area is represented as a rectangle. [Figure 50B] This diagram illustrates the positions of the top-left and bottom-right corners when the referenced area is represented as a rectangle. [Figure 50C] This diagram illustrates the positions of the top-left and bottom-right corners when the referenced area is represented as a rectangle. [Figure 50D] This diagram illustrates the positions of the top-left and bottom-right corners when the referenced area is represented as a rectangle. [Figure 51] This diagram illustrates the process of correcting the reference position in areas where the referenceable region is not rectangular. [Figure 52A] This diagram shows how the reference position is corrected. [Figure 52B] This diagram shows how the reference position is corrected. [Figure 53] This diagram illustrates the processing performed by the reference position correction unit 380 and the reference position correction unit 480. [Figure 54A] This diagram illustrates how the accessible region is divided into two parts. [Figure 54B] This diagram illustrates how the accessible region is divided into two parts. [Figure 54C] This diagram illustrates how the accessible region is divided into two parts. [Figure 54D] This diagram illustrates how the accessible region is divided into two parts. [Figure 55] This diagram illustrates the process of splitting the accessible area into two parts and correcting the reference positions of each. [Modes for carrying out the invention]
[0009] This section defines the technologies and technical terms used in this embodiment.
[0010] <Tree Block> In this embodiment, the image to be encoded and decoded is divided equally into predetermined units. This is defined as a tree block. In Figure 4, the size of the tree block is 128x128 pixels. However, the size of the tree block is not limited to this, and can be any size. You may set the following: Processing target (encoded target in encoding, decoded target in decoding). The tree blocks corresponding to the target are arranged in raster scan order, i.e., from left to right, and from top to bottom. The following order of transitions occurs. Each tree block can be further recursively subdivided. After recursively dividing a tree block, the blocks to be encoded and decoded are... A lock is defined as such. Furthermore, tree blocks and coded blocks are collectively defined as blocks. By performing appropriate block division, efficient encoding becomes possible. (Tree block) The size can be a fixed value predetermined by the encoding and decoding devices, or the code It is also possible to have a configuration in which the decoding device transmits the size of the tree block determined by the decoding device to the decoding device. Yes, it is possible. Here, the maximum size of the tree block is 128x128 pixels, tree block The minimum size is set to 16x16 pixels. The maximum size of the encoded block is set to 64x64. The minimum size of each pixel and coding block is set to 4x4 pixels.
[0011] <Prediction Mode> An indicator is used to make predictions from the processed image signal of the image to be processed, at the level of the encoding block to be processed. Trap prediction (MODE_INTRA), and interpretation (MO) which predicts from the image signal of a processed image. Switch DE_INTER.
[0012] A processed image is, in the encoding process, the image obtained by decoding the encoded signal. It is used for numbers, tree blocks, blocks, coded blocks, etc., and in the decoding process, Used for completed images, image signals, tree blocks, blocks, encoded blocks, etc. .
[0013] This mode identifies the intra prediction (MODE_INTRA) and inter prediction (MODE_INTER). The measurement mode is defined as PredMode. The prediction mode is defined as Intra Prediction (MODE_INTRA ), or has an inter-prediction (MODE_INTER) as its value.
[0014] <Intrablock copy prediction> Intra Block Copy prediction is used for decoding the picture being processed. This process involves referencing already processed pixels as predicted values and then encoding / decoding the block to be processed. The distance from the block to be processed to the referenced pixel is represented by a block vector. The reference vector refers to the picture to be processed, and since the reference picture is uniquely determined, the reference vector DEX is not needed. The difference between block vectors and motion vectors is that the referenced picture is This determines whether the picture is to be processed or has already been processed. Also, block vectors are adaptive motion vectors. Using metric resolution (AMVR), you can select between 1-pixel or 4-pixel precision.
[0015] Intrablock copy offers predictive intrablock copy mode and merge intrablock copy mode. Two modes are available for block copy mode.
[0016] Predictive intrablock copy mode derives a predicted block vector from processed information. Then, the block vector of the block to be processed is determined from the difference block vector. This is the code. The predicted block vector is the processed block adjacent to the block to be processed. The predicted block vector is derived from an index. The index for identifying the toll, the difference block vector, is transmitted as a bitstream. ru.
[0017] Merge intrablock copy mode does not transmit differential motion vectors, but processes the target blocks From the intrablock copy prediction information of processed blocks adjacent to the lock, the target block to be processed This mode derives prediction information for intrablock copies of locks.
[0018] <Interface Forecast> Interpretation, which makes predictions from the image signals of processed images, references multiple processed images. It can be used as a picture. To manage multiple reference pictures, L0 (reference Two types of reference lists are defined: L1 (Reference List 1) and L0 (Reference List 0), and each has a reference index. Use CSS to identify the reference picture. L0 prediction (Pred_L0) is available for P slices. In B-slice, there are L0 predictions (Pred_L0), L1 predictions (Pred_L1), and bi-predictions (Pred_BI). ) is available. L0 prediction (Pred_L0) refers to the reference picture managed by L0. This is an interpretation, and the L1 prediction (Pred_L1) uses a reference picture managed by L1. This is the reference interpretation. In dual prediction (Pred_BI), both L0 and L1 predictions are performed. Interpretation that references one reference picture each managed by L0 and L1. Therefore, the information that identifies L0 prediction, L1 prediction, and dual prediction is defined as the interprediction mode. For constants and variables with the subscript LX in the output in subsequent processing, L0, L1 It is assumed that processing is performed for each step.
[0019] <Predictive motion vector mode> The predicted motion vector mode uses an index to identify the predicted motion vector, and differential motion Transmits vector, interpretation mode, and reference index, and input of the block to be processed. This mode determines the predictive information for the target block. The predicted motion vector is adjacent to the block to be processed. A processed block, or a block belonging to a processed image, which is the same as the block to be processed. Candidate predicted motion vectors derived from blocks located in or near (in the vicinity of) the predicted It is derived from an index used to identify the measured motion vector.
[0020] <Merge Mode> Merge mode does not transmit the differential motion vector or reference index, but processes the blocks to be processed. Processed blocks adjacent to the block, or blocks belonging to the processed image, are blocks to be processed. Processing is performed using the interpretation information of blocks located at the same position as or near (in the vicinity of) the block in question. This mode derives inter-prediction information for the target block.
[0021] Processed blocks adjacent to the block to be processed, and the interface of those processed blocks - Prediction information is defined as spatial merge candidates. Blocks belonging to the processed image are the blocks to be processed. Blocks located in the same position as or near (in the vicinity of) a block, and the interior of that block. Interpretation information derived from terminal prediction information is defined as a time merge candidate. The supplement is added to the merge candidate list, and the merge index predicts which blocks will be processed. Identify the merge candidates to be used.
[0022] <Adjacent Blocks> Figure 11 shows how to derive interpredictive information in predictive motion vector mode and merge mode. This is a diagram illustrating the reference blocks used for referencing. A0, A1, A2, B0, B1, B2, B3 is a processed block adjacent to the block to be processed. T0 is a processed image. Within the block to which it belongs, at the same location or near the processing target block in the image to be processed ( It is a block located in the vicinity.
[0023] A1 and A2 are located to the left of the coding block to be processed, and adjacent to the coding block to be processed. These are adjacent blocks. B1 and B3 are located above the encoding block to be processed, and are the same as the processing block. These are blocks adjacent to the coded block. A0, B0, and B2 are the codes to be processed, respectively. These are the blocks located in the lower left, upper right, and upper left corners of the numbered block.
[0024] Details on how adjacent blocks are handled in predictive motion vector mode and merge mode. Details will be discussed later.
[0025] <Affine transformation motion compensation> Affine transform motion compensation divides the encoded block into predetermined subblocks, and This method determines a motion vector for each subblock individually and performs motion compensation. The motion vector of each subblock is the same as that of the processed block adjacent to the block being processed, and This refers to a block belonging to the processed image, located at the same position as or near the block being processed. Derived based on one or more control points derived from the interprediction information of the block located at [location]. In this embodiment, the subblock size is set to 4x4 pixels, but the subblock size The method is not limited to this, and motion vectors can also be derived at the pixel level.
[0026] Figure 14 shows an example of affine transform motion compensation with two control points. In this case, the two The control point has two parameters: a horizontal component and a vertical component. Therefore, the control point The affine transformations in the two cases are called four-parameter affine transformations. CP1 in Figure 14, CP2 is the control point.
[0027] Figure 15 shows an example of affine transform motion compensation when there are three control points. The control point has two parameters: a horizontal component and a vertical component. Therefore, the control point The three cases of affine transformation are called six-parameter affine transformations. CP1 in Figure 15, CP2 and CP3 are control points.
[0028] Affine transformation motion compensation applies to both predictive motion vector modes and merged modes. It is also available in D. Apply affine transform motion compensation in predictive motion vector mode. We define the mode as the subblock prediction motion vector mode and the merge mode as the affine transformation. The mode to which motion compensation is applied is defined as subblock merge mode.
[0029] <Syntax of coded blocks> Figures 12A, 12B, and 13 are used to represent the prediction modes of the coded blocks. The syntax for this is explained. The `pred_mode_flag` in Figure 12A indicates whether it is an interpretation or not. This is a flag. If pred_mode_flag is 0, it is an inter-mode prediction, and if pred_mode_flag is 1 In that case, it becomes an intra-prediction. In the case of intra-prediction, intra-block copy prediction is used. Sends the pred_mode_ibc_flag, which is a flag indicating whether it exists. This is for intrablock copy prediction. If (pred_mode_ibc_flag=1), send merge_flag. merge_flag is a merge intra A flag indicating whether to use block copy mode or predictive intra-block copy mode. It is. If merge is in intrablock copy mode (merge_flag=1), merge Send the index merge_idx. If it is not an intrablock copy prediction (pred_mode_ibc If _flag=0), it will be treated as a normal intra-pred, and the normal intra-pred information will be sent in intra_pred_mode.
[0030] Send merge_flag if interpretation is required. merge_flag indicates whether to enter merge mode or not. This flag indicates whether to use the motion vector mode. In the case of predictive motion vector mode (me rge_flag=0), a flag indicating whether or not to apply the subblock predictive motion vector mode. Send r_affine_flag. Apply subblock prediction motion vector mode (inter_aff Send `ine_flag=1)` and `cu_affine_type_flag`. `cu_affine_type_flag` is used for subblock prediction. This flag determines the number of control points in motion vector mode.
[0031] On the other hand, in merge mode (merge_flag=1), send the merge_subblock_flag shown in Figure 12B. The `merge_subblock_flag` flag indicates whether or not to apply subblock merge mode. Yes. In subblock merge mode (merge_subblock_flag=1), merge index Send merge_subblock_idx. On the other hand, if not in subblock merge mode (merge_subb (lock_flag=0), the merge_triangle_flag flag indicates whether or not to apply triangular merge mode. Send. When applying triangular merge mode (merge_triangle_flag=1), split the block. The direction is merge_triangle_split_dir, and merge each of the two split partitions. Send triangular indices merge_triangle_idx0 and merge_triangle_idx1. Meanwhile, triangular merge If no mode is applied (merge_triangle_flag=0), the merge index merge_idx is sent. ru.
[0032] Figure 13 shows the values of each syntax element in interpretation and the corresponding prediction modes. This indicates that merge_flag=0, inter_affine_flag=0 is the normal predictive motion vector mode (Inter Pr This corresponds to ed Mode. merge_flag=0, inter_affine_flag=1 means subblock predicted motion Supports Inter Affine Mode. merge_flag=1, merge_subblock_flag=0, merge_trianlge_flag=0 corresponds to normal merge mode. merge_flag=1, merge_subblock_flag=0,merge_trianlge_flag=1 enables Triangle Merge mode. Corresponds to Mode). merge_flag=1,merge_subblock_flag=1 is subblock merge mode Supports (Affine Merge Mode).
[0033] <poc> POC (Picture Order Count) is a variable associated with the picture being encoded. A value is set that increases by 1 according to the output order of the pictures. It can determine if a picture is the same, determine the order in which pictures are displayed in the output sequence, and It is possible to derive the distance between two pictures. For example, if the POCs of two pictures are the same If they have a value, they can be determined to be the same picture. If the two pictures have different POC values... If both are present, the picture with the smaller POC value will be the one to be output first. The difference in POC between the two pictures indicates the distance between the pictures in the time axis direction. (First Embodiment) Regarding the image encoding device 100 and image decoding device 200 according to the first embodiment of the present invention I will explain.
[0034] Figure 1 is a block diagram of the image encoding device 100 according to the first embodiment. The image encoding device 100 includes a block division unit 101, an inter prediction unit 102, and an intra Prediction unit 103, decoded image memory 104, prediction method determination unit 105, residual generation unit 106, orthogonal Conversion / quantization unit 107, bit string encoding unit 108, inverse quantization / inverse orthogonal transformation unit 109, decoding It includes an image signal superposition unit 110 and an encoded information storage memory 111.
[0035] The block division unit 101 recursively divides the input image to generate encoded blocks. The block division unit 101 divides the block to be divided in the horizontal and vertical directions respectively. The four division points to be divided, and the block to be divided can be divided either horizontally or vertically. It includes 2-3 division sections to be divided. The block division section 101 processes the generated encoded block. The image signal of the coding block to be processed is used as the target coding block, and the prediction unit 102, it is supplied to the intra prediction unit 103 and the residual generation unit 106. Also, block division Unit 101 supplies information indicating the determined recursive partition structure to the bit string encoding unit 108. The detailed operation of the lock splitting section 101 will be described later.
[0036] Interpretation unit 102 performs interpretation of the encoding block to be processed. The measurement unit 102 uses the interprediction information stored in the encoded information storage memory 111 and the decoded information. Multiple interprediction information from the decoded image signal stored in the image memory 104 The system derives candidates, and selects the most suitable interpretation mode from among the derived candidates. The selected interprediction mode and the predicted image signal corresponding to the selected interprediction mode This is supplied to the prediction method determination unit 105. The detailed configuration and operation of the interpretation unit 102 will be described later. .
[0037] The intra prediction unit 103 performs intra prediction of the coding block to be processed. The measurement unit 103 uses the decoded image signal stored in the decoded image memory 104 as a reference pixel. The code is then referenced and stored in the coding information storage memory 111, such as the intra prediction mode. Predicted image signals are generated by intra-prediction based on color information. In intra-prediction, The prediction unit 103 selects the appropriate intra prediction mode from among multiple intra prediction modes. The selected intra prediction mode, and the prediction image corresponding to the selected intra prediction mode. The image signal is supplied to the prediction method determination unit 105. The detailed configuration and operation of the intra prediction unit 103 are as follows: More details will follow.
[0038] The decoded image memory 104 stores the decoded image generated by the decoded image signal superimposition unit 110. The decoded image memory 104 processes the decoded images stored in it using the interpretation unit 102 and the intraprediction unit. It is supplied to the measuring unit 103.
[0039] The prediction method determination unit 105 determines the coding information for both intra-prediction and inter-prediction. The evaluation is performed using the code values of the report and residuals, the amount of distortion between the predicted image signal and the image signal to be processed, etc. This determines the optimal prediction mode. In the case of intra-prediction, the prediction method determination unit 10 5 uses intra prediction information such as intra prediction mode as encoded information in bit string encoding unit 1 It supplies to 08. In the merge mode of interprediction, the prediction method determination unit 105 is merge The index, information indicating whether or not it is in subblock merge mode (subblock merge flag) Interpretation information such as (g) is supplied to the bit string encoding unit 108 as encoded information. In the case of the predictive motion vector mode of the interpretation prediction, the prediction method determination unit 105 determines the interpretation prediction mode. L0, L1 reference index, differential motion vector Information indicating whether or not it is a subblock predicted motion vector mode (subblock predicted motion vector) Interpretation information such as the Tor Flag is supplied to the bit string encoding unit 108 as encoded information. Furthermore, the prediction method determination unit 105 stores the determined encoded information in the encoded information storage memory 11. It supplies to 1. The prediction method determination unit 105 determines the residual generation unit 106 and the predicted image signal and the decoded image. This is supplied to the signal superposition unit 110.
[0040] The residual generation unit 106 generates the residual by subtracting the predicted image signal from the image signal to be processed. It is generated and supplied to the orthogonal transformation / quantization unit 107.
[0041] The orthogonal transformation / quantization unit 107 performs an orthogonal transformation and quantity transformation on the residual according to the quantization parameters. Substitution is performed to generate orthogonal transform and quantized residuals, and the generated residuals are encoded by the bit string encoding unit 10 It is supplied to 8 and the inverse quantization / inverse orthogonal transformation unit 109.
[0042] The bit sequence encoding unit 108 encodes sequences, pictures, slices, and encoding blocks. In addition to the information, the prediction method determined by the prediction method determination unit 105 for each encoded block is used. The corresponding encoded information is encoded. Specifically, the bit string encoding unit 108 encodes the encoded blocks. Encode the prediction mode PredMode for each class. In addition, the bit string encoding unit 108 sets a flag to determine whether or not it is in merge mode, and a subblock mark. The merge flag, the merge index if in merge mode, and the index if not in merge mode. Information regarding the predictor mode, predicted motion vector index, differential motion vector, sub Encoded information (interpretation information) such as block prediction motion vector flags in a specified syntax Encode according to the bit sequence syntax rules to generate the first bit sequence. Prediction mode If it is an intra prediction (MODE_INTRA), the bit string encoding unit 108 performs an intra block code A flag to determine whether it is a P or not is encoded according to a specified syntax. In the case of Kucopy, if it's merge mode, it's the merge index; if it's not merge mode, Encoded information such as predicted block vector index and differential block vector (intra prediction) Encode the measured information according to the specified syntax. (If it is not an intrablock copy) This encodes information such as intra-prediction mode (intra-prediction information) according to a specified syntax. This is how it is encoded. The above encoding generates the first bit string. Also, bit string code The transformation unit 108 performs an orthogonal transformation and quantized residuals according to a specified syntax, and then entropy... - Encodes and generates a second bit string. The bit string encoding unit 108 and The second bit string is multiplexed according to a specified syntax, and the bitstream is output.
[0043] The inverse quantization / inverse orthogonal transformation unit 109 receives the orthogonal transformation supplied from the orthogonal transformation / quantization unit 107. The quantized residuals are inversely quantized and inversely orthogonal transformed to calculate the residuals, and the calculated residuals are then decoded. The signal is supplied to the image signal superposition unit 110.
[0044] The decoded image signal superimposition unit 110 superimposes the predicted image signal according to the determination made by the prediction method determination unit 105. The residuals obtained by inverse quantization and inverse orthogonal transformation in the inverse quantization / inverse orthogonal transformation unit 109 are superimposed and decoded. The image is generated and stored in the decoded image memory 104. The decoded image signal superposition unit 110 is used for decoding. The image was subjected to a filtering process to reduce distortions such as block distortion caused by encoding. The decoded image may then be stored in the memory 104.
[0045] The encoded information storage memory 111 stores the prediction mode (in) determined by the prediction method determination unit 105. Stores coded information such as (inter prediction or intra prediction). In the case of intra prediction, the code The encoded information stored in the data storage memory 111 includes the determined motion vector and a reference list. Interpretation information such as L0 and L1 reference indices, historical prediction motion vector candidate list, etc. This includes. Also, in the case of interprediction merge mode, the coded information storage memory 111 is The encoded information to be stored includes, in addition to the information described above, the merge index and subblock mark. Interpretation information includes information indicating whether or not it is a dimode (subblock merge flag). Furthermore, in the case of the prediction motion vector mode of interpretation, the coded information storage memory 111 is In addition to the information mentioned above, the encoded information to be stored includes the interpretation mode and the predicted motion vector. Index, differential motion vector, subblock predictive motion vector, information indicating whether or not it is in mode. This includes inter-prediction information such as reports (subblock prediction motion vector flags). In the case of prediction, the coded information stored in the coded information storage memory 111 contains the determined int This includes intra-predictive information such as prediction mode.
[0046] Figure 2 shows the configuration of an image decoding device according to an embodiment of the present invention, corresponding to the image encoding device in Figure 1. This is a block showing the result. The image decoding device of the embodiment includes a bit sequence decoding unit 201, and a block C division unit 202, inter prediction unit 203, intra prediction unit 204, coded information storage memory 205, inverse quantization / inverse orthogonal transformation unit 206, decoded image signal superposition unit 207, and decoded image It is equipped with Mori 208.
[0047] The decoding process of the image decoding device in Figure 2 is performed by the decoding process located inside the image encoding device in Figure 1. Since it corresponds to the processing, the encoded information storage memory 205 in Figure 2, inverse quantization and inverse orthogonal The configurations of the conversion unit 206, the decoded image signal superimposition unit 207, and the decoded image memory 208 are shown in Figure Image encoding device 1: Encoding information storage memory 111, inverse quantization / inverse orthogonal transformation unit 109, The configurations of the image signal superposition unit 110 and the decoded image memory 104, and their respective corresponding functions. It holds.
[0048] The bitstream supplied to the bit string decoding unit 201 conforms to the rules of a specified syntax. Therefore, it is separated. The bit sequence decoding unit 201 decodes the separated first bit sequence and Information at the Kens, picture, slice, coded block level, and coded block level Encoded information is obtained. Specifically, the bit sequence decoding unit 201 intercepts the encoded block in units. - Prediction mode PredMode determines whether it is prediction (MODE_INTER) or intra prediction (MODE_INTRA). Decode. If the prediction mode is interprediction (MODE_INTER), the bit sequence decoding unit 201 performs the following: A flag to determine whether or not it is in merge mode; if in merge mode, the merge index, sub Block merge flag, if in predictive motion vector mode, interpredictive mode, predictive Motion vector index, differential motion vector, subblock predicted motion vector flag, etc. The encoded information (interpretation information) related to is decoded according to the specified syntax, and then encoded Information (interface prediction information) is transmitted via the interface prediction unit 203 and the block division unit 202. The encoded information is then supplied to the memory 205. The prediction mode is intra prediction (MODE_INTRA) In this case, the bit sequence decoding unit 201 decodes a flag that determines whether or not it is an intrablock copy. Yes. In the case of intrablock copy, if merge mode is used, the merge index and the merge index are used. If not in Z-mode, then predict block vector index, difference block vector, etc. The serialization information (intra prediction information) is decoded according to the specified syntax. If it is not a copy, specify the coding information (intra prediction information) such as intra prediction mode. Decode according to the syntax. The above decoding process yields the encoded information (intra prediction information). via the interpretation unit 203 or intraprediction unit 204, and the block division unit 202 The encoded information is then supplied to the encoded information storage memory 205. The bit sequence decoding unit 201 separates the second The bit string is decoded, and the orthogonal transformed and quantized residual is calculated. This is supplied to the inverse quantization / inverse orthogonal transformation unit 206.
[0049] The interpretation unit 203 determines that the prediction mode PredMode of the coding block to be processed is interpretation When prediction (MODE_INTER) is in prediction motion vector mode, the encoded information storage memory 205 Using the encoded information of already decoded image signals stored in the system, multiple predicted motion vectors Candidates for the vector are derived, and the multiple candidates for the derived predicted motion vector are used in the predicted motion vector described later. Register to the candidate list. The interpretation unit 203 registers to the candidate list of predicted motion vectors. From among the multiple predicted motion vector candidates recorded, the bit string decoding unit 201 decodes and supplies Select a predicted motion vector corresponding to the predicted motion vector index, and decode the bit string. From the difference motion vector decoded in section 201 and the selected predicted motion vector, the motion vector The calculated motion vector is stored in the encoded information storage memory 205 along with other encoded information. The encoding information of the encoding block supplied and stored here is in Predictive Mode. , flags predFlagL0[xP][yP], predFlag indicating whether or not to use L0 prediction and L1 prediction. L1[xP][yP], L0, L1's reference index refIdxL0[xP][yP], refIdxL1[xP][yP], L0 These are the motion vectors of L1, mvL0[xP][yP], mvL1[xP][yP], etc., where xP and yP are pictures. This is an index indicating the position of the top-left pixel within the coded block. Prediction mode: PredMo When de is interpretation (MODE_INTER) and the interpretation mode is L0 prediction (Pred_L0) The flag predFlagL0, which indicates whether or not to use L0 prediction, is set to 1, and the flag predFlagL0, which indicates whether or not to use L1 prediction, is set to 1. The flag predFlagL1 is 0. If the interpretation mode is L1 prediction (Pred_L1), The flag predFlagL0, which indicates whether or not to use L0 prediction, is 0, and indicates whether or not to use L1 prediction. The flag predFlagL1 is 1. If the interpretation mode is biprediction (Pred_BI), L0 Flags predFlagL0 and L1 indicate whether or not to use predictions. predFlagL1 is 1 in both cases. Furthermore, the prediction mode PredMode of the coding block to be processed is Interpretation (MODE_INTER) derives merge candidates when in merge mode. Encoding information Using the encoding information of the already decoded encoding block stored in storage memory 205 Multiple merge candidates are derived and registered in the merge candidate list described later, and the merge candidate list From among multiple merge candidates registered, the bit string decoding unit 201 decodes and supplies the merge candidates. Select merge candidates corresponding to the index, predict the L0 of the selected merge candidates, and Flags indicating whether or not to use L1 prediction: predFlagL0[xP][yP], predFlagL1[xP][yP], L0 , the reference index of L1 refIdxL0[xP][yP], refIdxL1[xP][yP], the movement vector of L0 and L1 Interpretation information such as mvL0[xP][yP], mvL1[xP][yP] is stored in the encoded information storage memory 205. Store it. Here, xP and yP indicate the position of the top-left pixel of the encoded block in the picture. This is the index. The detailed configuration and operation of the interpretation unit 203 will be described later.
[0050] The intra prediction unit 204 determines that the prediction mode PredMode of the coding block to be processed is intra During prediction (MODE_INTRA), intra prediction is performed. The code decoded by the bit string decoding unit 201 The numbering information includes an intra prediction mode. The intra prediction unit 204 performs bit sequence reconstruction. Depending on the intra prediction mode included in the encoded information decoded in section 201, the decoded image Predicted image signals are obtained from the decoded image signals stored in Mori 208 through intra-prediction. The generated predicted image signal is supplied to the decoded image signal superimposition unit 207. Intra prediction unit Since 204 corresponds to the intra prediction unit 103 of the image coding device 100, The same processing as in the Intra prediction unit 103 is performed.
[0051] The inverse quantization / inverse orthogonal transformation unit 206 processes the orthogonal transformation / quantum transformation decoded by the bit sequence decoding unit 201. The transformed residuals are subjected to inverse orthogonal transformation and inverse quantization, and the inverse orthogonal transformed and inverse quantized residuals are obtained. To obtain.
[0052] The decoded image signal superposition unit 207 superimposes the predicted image signal interpredicted by the interpretation unit 203. The predicted image signal, or the predicted image signal intra-predicted by the intra-prediction unit 204, and inverse quantization / inverse quantization. By superimposing the inverse orthogonal transform and inversely quantized residuals by the cross-transformation unit 206, the decoded image The image signal is decoded, and the decoded image signal is stored in the decoded image memory 208. When storing in Mori 208, the decoded image signal superimposition unit 207 encodes the decoded image. After applying a filtering process to reduce block distortion and other issues, the decoded image is stored in the image memory 208. It may be stored.
[0053] Next, the operation of the block division unit 101 in the image encoding device 100 will be described. Figure 3 shows the process of dividing an image into tree blocks and then further dividing each tree block. This is a flowchart. First, the input image is divided into tree blocks of a predetermined size. (Step S1001). For each tree block, a predetermined order, i.e., raster Scan in the order of scanning (step S1002) and divide the interior of the tree block to be processed. (Step S1003).
[0054] Figure 7 is a flowchart showing the detailed operation of the splitting process in step S1003. Then, it is determined whether or not to divide the block to be processed into four parts (step S1101).
[0055] If it is determined that the block to be processed should be divided into four parts, then the block to be processed will be divided into four parts (S Step S1102). For each block into which the block to be processed has been divided, in Z-scan order, That is, scan in the order of upper left, upper right, lower left, and lower right (step S1103). Figure 5 shows Z This is an example of a sequence order, and 601 in Figure 6A is an example where the processing target block is divided into four parts. Figure 6 The numbers 0-3 in A601 indicate the order of processing. Then in step S1101 For each divided block, the division process shown in Figure 7 is executed recursively (step S1104). ).
[0056] If it is determined that the block to be processed should not be divided into 4 parts, then divide it into 2 or 3 parts (Step S1) 105).
[0057] Figure 8 is a flowchart detailing the operation of the 2-3 splitting process in step S1105. First, decide whether to divide the block to be processed into 2 or 3 parts, that is, whether to divide it into 2 or 3 parts. Determine whether or not to perform one of the actions (step S1201).
[0058] If it is not decided to divide the block to be processed into 2-3 parts, that is, if it is decided not to divide it. If this occurs, the partitioning is terminated (step S1211). In other words, the partitioning is performed by a recursive partitioning process. No further recursive partitioning is performed on the resulting block.
[0059] If it is determined that the block to be processed should be divided into 2-3 parts, then the block to be processed will be further divided into 2 parts. A decision is made as to whether or not to divide it (step S1202).
[0060] If it is determined that the block to be processed should be divided into two, the block to be processed will be divided vertically (up and down). ) is determined (step S1203) whether or not to divide into blocks, and based on the result, the blocks to be processed are determined Either divide the block into two vertical sections (step S1204), or move the block to be processed to the left. Divide into two horizontally to the right (step S1205). Process as a result of step S1204. The target block is divided into two sections vertically, as shown in 602 of Figure 6B, and As a result of step S1205, the blocks to be processed are as shown in 604 of Figure 6D, left and right (horizontally). It is divided into two parts.
[0061] If, in step S1202, it is not determined that the block to be processed should be divided into two parts, In other words, if it is determined that the data should be divided into three parts, the block to be processed is divided into upper, middle, and lower (vertically). A decision is made as to whether or not to proceed (step S1206), and based on the result, the block to be processed is moved up Divide into three sections vertically (step S1207), or divide the block to be processed into left, middle, and right sections. Divide into three sections horizontally (step S1208). As a result of step S1207, the processing target The block is divided into three sections vertically (upper, middle, and lower), as shown in 603 of Figure 6C. As a result of step S1208, the blocks to be processed are as shown in 605 of Figure 6E, left-center-right (horizontally). It is divided into three sections.
[0062] Steps S1204, S1205, S1207, S1208 After executing one of the above, for each of the divided blocks to be processed, from left to right, top to bottom, or Scan in the following order (step S1209). Numbers 0 to 605 in Figures 6B to E 2 indicates the order of processing. For each divided block, see the 2-3 division process in Figure 8. The logic is executed recursively (step S1210).
[0063] The recursive block partitioning described here depends on the number of times the block is partitioned, or the number of blocks being processed. The necessity of splitting may be restricted depending on the size, etc. The information restricting the necessity of splitting is the encoding device. Even if an agreement is made in advance between the decryption device and the system, it can be implemented in a configuration that does not involve the transmission of information. Good, the encoding device determines the information that limits whether or not division is necessary and records it in a bit string. This may be implemented by a configuration that transmits the data to a decoding device.
[0064] When a block is divided, the original block is called the parent block, and each of the resulting blocks is called the parent block. A block is called a child block.
[0065] Next, the operation of the block division unit 202 in the image decoding device 200 will be described. The lock division unit 202 performs the same processing procedure as the block division unit 101 of the image encoding device 100. This divides the tree block. However, the block division of the image encoding device 100 In section 101, optimization methods such as estimating the optimal shape using image recognition and optimizing the strain rate are applied. In contrast to determining the optimal block division shape, the block division in the image decoding device 200 The division unit 202 decodes the block division information recorded in the bit string, The difference lies in how the division shape is determined.
[0066] Figure 9 shows the syntax (bit sequence syntax rules) for block partitioning in the first embodiment. As shown below, coding_quadtree() represents the syntax for dividing a block into four parts. _type_tree() represents the syntax for splitting a block into two or three parts. qt_spl `it` is a flag indicating whether or not to divide the block into four parts. If the block is to be divided into four parts, use `qt`. Set _split=1 and set qt_split=0 if you do not want to split into 4 parts. If you want to split into 4 parts (qt_split=1), For each of the four divided blocks, the process of dividing into four is performed recursively (coding_quadtree(0), codin g_quadtree(1), coding_quadtree(2), coding_quadtree(3), the arguments 0-3 are shown in Figure 6A 6 Corresponds to the number 01. ) If not split into 4 (qt_split=0), follow multi_type_tree(). Then, the next split is decided. `mtt_split` is a flag indicating whether or not to perform further splits. If further division is required (mtt_split=1), it indicates whether to divide vertically or horizontally. The flag mtt_split_vertical is a flag that determines whether to split into two or three parts. The mtt_split_binary is transmitted. mtt_split_vertical=1 indicates splitting vertically. And, mtt_split_vertical=0 indicates splitting horizontally. mtt_split_binary=1 means, This indicates a 2-way split, and mtt_split_binary=0 indicates a 3-way split. When splitting into 2 (m (tt_split_binary=1), and for each of the two divided blocks, the splitting process is performed recursively (multi_t ype_tree(0), multi_type_tree(1), the argument 0-1 corresponds to 602 or 604 in Figures 6B-D Corresponds to the number. ) When dividing into 3 (mtt_split_binary=0), each of the 3 divided blocks is Then, the partitioning process is performed recursively (multi_type_tree(0), multi_type_tree(1), multi_type_ tree(2), numbers 0-2 correspond to numbers 603 in Figure 6B or 605 in Figure 6E. ) mtt_spli Hierarchical block partitioning is achieved by recursively calling multi_type_tree until t=0. To do so.
[0067] <Intra prediction> The intra prediction method according to the embodiment is the intra prediction unit of the image encoding device 100 in Figure 1. This is carried out in the intra-prediction unit 204 of the image decoding device 200 in Figures 103 and 2.
[0068] An intra prediction method according to an embodiment will be explained with reference to the drawings. The method is performed in units of coded blocks, either by encoding or decoding.
[0069] <Explanation of the Intra Prediction Unit 103 on the Encoding Side> Figure 40 shows a detailed configuration of the intra-prediction unit 103 of the image encoding device 100 shown in Figure 1. Yes. Normally, the intra prediction unit 351 processes the decoded pixels adjacent to the encoding block to be processed. Therefore, a predicted image signal is generated by normal intra-prediction, and among multiple intra-prediction modes... Then select the appropriate intra-prediction mode, and the selected intra-prediction mode and selected A prediction image signal corresponding to the intra-prediction mode is supplied to the prediction method determination unit 105. Figure 10A Figure 10B shows an example of intra-prediction. Figure 10A shows the prediction direction and of the normal intra-prediction. This shows the correspondence between intra prediction mode numbers. For example, intra prediction mode 50 is, An intra-predictive image is generated by copying pixels vertically. Mode 1 is DC mode, where all pixel values of the block being processed are set to the average value of the reference pixels. This is the mode. Intra prediction mode 0 is Planar mode, and in the vertical and horizontal directions... This mode creates a two-dimensional intra-prediction image from the reference pixels in the direction. Figure 10B shows This is an example of generating an intra-prediction image in intra-prediction mode 40. Processing target block For each pixel, copy the value of the reference pixel in the direction indicated by the intra prediction mode. If the reference pixel in prediction mode is not at an integer position, interpolation is performed using the reference pixel values of surrounding integer-positioned pixels. The reference pixel value is determined by this method.
[0070] The intrablock copy prediction unit 352 processes the encoded image from the decoded image memory 104. The decoded region of the same image signal as the block is obtained, and an intra-block copy process is performed. The system generates a predicted image signal and supplies it to the prediction method determination unit 105. The detailed configuration and processing of the measurement unit 352 will be described later.
[0071] <Explanation of the Intra Prediction Unit 204 on the Decryption Side> Figure 41 is a diagram showing the detailed configuration of the intra-prediction unit 204 of the image decoding device 200 shown in Figure 2. ru.
[0072] Normally, the intra prediction unit 361 uses decoded pixels adjacent to the coding block to be processed. Normally, an image signal is generated by intra-prediction, and an appropriate intra-prediction mode is selected from among multiple intra-prediction modes. Select the intra prediction mode, and the selected intra prediction mode and the selected intra A predicted image signal is obtained according to the tiger prediction mode. This predicted image signal is transmitted via switch 364. The decoded image signal is then supplied to the superimposing unit 207. (Figure 41 shows the processing of the normal intra-prediction unit 361) Since this corresponds to the normal intra-prediction unit 351 in Figure 40, a detailed explanation will be omitted. ru.
[0073] The intrablock copy prediction unit 362 reads the encoded image to be processed from the decoded image memory 208. The decoded region of the same image signal as the block is obtained, and an intra-block copy process is performed. Then, a predicted image signal is obtained. This predicted image signal is superimposed on the decoded image signal via switch 364. It is supplied to unit 207. Regarding the detailed configuration and processing of the intrablock copy prediction unit 362... This will be explained later.
[0074] <Interface Forecast> The inter prediction method according to the embodiment is shown in Figure 1, inter prediction unit 102 of the image encoding device. This is also carried out in the interpretation unit 203 of the image decoding device shown in Figure 2.
[0075] The inter prediction method according to the embodiment will be explained with reference to the drawings. The method is performed in units of coded blocks, either by encoding or decoding.
[0076] <Explanation of the encoding-side interpretation unit 102> Figure 16 shows a detailed configuration of the interpretation unit 102 of the image encoding device shown in Figure 1. The normal prediction motion vector mode derivation unit 301 derives a plurality of normal prediction motion vector candidates. Select a predicted motion vector, and compare the selected predicted motion vector with the detected motion vector. Calculate the difference motion vector. Detected interpretation mode, reference index, motion The calculated difference motion vector is the interpretation of the normal predicted motion vector mode. This becomes information. This interpretation prediction information is supplied to the interpretation prediction mode determination unit 305. The detailed configuration and processing of the constant prediction motion vector mode derivation unit 301 will be described later.
[0077] The normal merge mode derivation unit 302 derives multiple normal merge candidates and selects the normal merge candidates. Select and obtain interprediction information in normal merge mode. This interprediction information is inter This is supplied to the prediction mode determination unit 305. Detailed configuration and processing of the normal merge mode derivation unit 302. The reasoning will be explained later.
[0078] In the subblock predicted motion vector mode derivation unit 303, multiple subblock predicted motion vectors Derive candidate subblocks and select subblock prediction motion vectors, then select the selected subblock prediction The difference motion vector between the measured motion vector and the detected motion vector is calculated. Interpretation mode, reference index, motion vector, calculated differential motion vector This interprediction information is for the subblock prediction motion vector mode. This is supplied to the inter-prediction mode determination unit 305.
[0079] The subblock merge mode derivation unit 304 derives multiple subblock merge candidates. Select subblock merge candidates and obtain interprediction information for the subblock merge mode. This inter-prediction information is supplied to the inter-prediction mode determination unit 305.
[0080] In the interprediction mode determination unit 305, the normal prediction motion vector mode derivation unit 301, Merge mode derivation unit 302, subblock predictive motion vector mode derivation unit 303, subblock Based on the inter prediction information supplied from the lock merge mode derivation unit 304, The prediction information is determined. The interprediction mode determination unit 305 determines the interprediction according to the determination result. Measurement information is supplied to the compensation prediction unit 306.
[0081] Based on the determined interprediction information, the motion compensation prediction unit 306 processes the decoded image memory 1 Interpretation is performed on the reference image signal stored in 04. Motion compensation prediction unit 306 The detailed configuration and processing will be described later.
[0082] <Explanation of the decoding side interpretation unit 203> Figure 22 shows a detailed configuration of the interpretation unit 203 of the image decoding device shown in Figure 2.
[0083] The normal prediction motion vector mode derivation unit 401 derives a plurality of normal prediction motion vector candidates. Select the predicted motion vector, and compare the selected predicted motion vector with the decoded difference motion vector. The sum of these values is calculated and used as the motion vector. The decoded interpretation mode and reference index The motion vector is the predictive information of the normal predicted motion vector mode. Center prediction information is supplied to the movement compensation prediction unit 406 via switch 408. The detailed configuration and processing of the motion vector mode derivation unit 401 will be described later.
[0084] The normal merge mode derivation unit 402 derives multiple normal merge candidates and selects a normal merge candidate. Select and obtain interpredictive information in normal merge mode. This interpredictive information switches It is supplied to the motion compensation prediction unit 406 via 408. The detailed configuration and processing will be described later.
[0085] In the subblock predicted motion vector mode derivation unit 403, multiple subblock predicted motion vectors Derive candidate subblocks and select subblock prediction motion vectors, then select the selected subblock prediction The motion vector is calculated by adding the measured motion vector and the decoded difference motion vector. The decoded interpretation mode, reference index, and motion vector are used for subblock prediction. This becomes the interpretation information for the motion vector mode. This interpretation information is for switch 408 It is supplied to the motion compensation prediction unit 406 via [this method].
[0086] The subblock merge mode derivation unit 404 derives multiple subblock merge candidates. Select subblock merge candidates and obtain interprediction information for the subblock merge mode. This interpretation information is supplied to the motion compensation prediction unit 406 via switch 408. .
[0087] The motion compensation prediction unit 406 uses the determined interpretation prediction information to process the decoded image memory 2 Interpretation is performed on the reference image signal stored in 08. Motion compensation prediction unit 406 The detailed configuration and processing are the same as those of the motion compensation prediction unit 306 on the encoding side.
[0088] <Normal Predictive Motion Vector Mode Derivation Unit (Normal AMVP)> The normal predicted motion vector mode derivation unit 301 in Figure 17 derives a candidate for spatial predicted motion vector. Unit 321, Time-predicted motion vector candidate derivation unit 322, History-predicted motion vector candidate derivation unit 3 23, Predicted motion vector candidate supplementation unit 325, Normal motion vector detection unit 326, Predicted motion vector It includes a candidate selection unit 327 and a motion vector subtraction unit 328.
[0089] The normal predicted motion vector mode derivation unit 401 in Figure 23 derives a candidate for spatial predicted motion vector. Unit 421, Time-predicted motion vector candidate derivation unit 422, History-predicted motion vector candidate derivation unit 4 23, Predicted motion vector candidate supplementation unit 425, Predicted motion vector candidate selection unit 426, motion vector Includes a culverter addition unit 427.
[0090] The encoding side's normal predicted motion vector mode derivation unit 301 and the decoding side's normal predicted motion vector The processing procedure for the Tormode Derivation Unit 401 is shown in the flowcharts in Figures 19 and 25, respectively. This will be explained using the following. Figure 19 shows the normal motion vector mode derivation unit 301 on the encoding side. This flowchart shows the procedure for deriving the predicted motion vector mode, and Figure 25 shows the decoding side. The procedure for deriving a normal predicted motion vector mode by the normal motion vector mode derivation unit 401 is shown. This is a flowchart.
[0091] <Explanation of the coding side: Typical predictive motion vector mode derivation unit (typical AMVP):> The normal predicted motion vector mode derivation procedure on the encoding side will be explained with reference to Figure 19. In the explanation of the 19 processing steps, the word "normal" as shown in Figure 19 may be omitted.
[0092] First, the motion vector detection unit 326 detects each reference index in the interpretation mode. Normally, motion vectors are detected (step S100 in Figure 19).
[0093] Subsequently, the spatial prediction motion vector candidate derivation unit 321, the temporal prediction motion vector candidate derivation unit 3 22, the history prediction motion vector candidate derivation unit 323, the prediction motion vector candidate supplementation unit 325, and the prediction motion vector candidate selection unit 327 and the motion vector subtraction unit 328 calculate the differential motion vectors of the motion vectors used in the inter prediction of the normal prediction motion vector mode for each of L0 and L1 (steps S101 to S106 in FIG. 19). Specifically, when the prediction mode PredMode of the processing target block is inter prediction (MODE_INTER) and the inter prediction mode is L0 prediction (Pr ed_L0), the prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 of L0 is calculated. When the inter prediction mode of the processing target block is L1 prediction (Pred_L1), the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 is selected, and the differential motion vector mvdL1 of the motion vector mvL1 of L1 is calculated. When the inter prediction mode of the processing target block is dual prediction (Pred_BI), both L0 prediction and L1 prediction are performed. The prediction motion vector candidate list mvpListL0 for L0 is calculated, the prediction motion vector mvpL0 for L0 is selected, and the differential motion vector mvdL0 of the motion vector mvL0 of L0 is calculated. At the same time, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vectors mvdL1 of the motion vectors mvL1 of L1 are calculated respectively. For each of L0 and L1, differential motion vector calculation processing is performed. However, for both L0 and L1, while calculating the differential motion vector mvdL0 of the motion vector mvL0 of L0, the prediction motion vector candidate list mvpListL1 for L1 is calculated, the prediction motion vector mvpL1 for L1 is calculated, and the differential motion vector mvdL1 of the motion vector mvL of L1 is calculated respectively.
[0094] For each of L0 and L1, differential motion vector calculation processing is performed, but for both L0 and L1, This is a common process. Therefore, in the following explanation, L0 and L1 will be represented as a common LX. In the process of calculating the difference motion vector of L0, X in LX is 0, and the difference motion vector of L1 In the process of calculating the vector, X in LX is 1. Also, the difference motion vector of LX is calculated. If, during the process, information from the other list is referenced instead of LX, then the other list... This is represented as LY.
[0095] When using the motion vector mvLX for LX (step S102:YES in Figure 19), LX Calculate candidate predicted motion vectors and construct a list of LX predicted motion vector candidates, mvpListLX. To build (step S103 in Figure 19). In the normal predicted motion vector mode derivation unit 301 Spatial prediction motion vector candidate derivation unit 321, time prediction motion vector candidate derivation unit 322, history Multiple predicted motion vectors are generated in the predicted motion vector candidate derivation unit 323 and the predicted motion vector candidate supplementation unit 325. Candidate motion vectors are derived, and a list of predicted motion vector candidates, mvpListLX, is constructed. Figure 19 The detailed processing procedure for step S103 will be described later using the flowchart in Figure 20. ru.
[0096] Next, the predicted motion vector candidate selection unit 327 selects the predicted motion vector candidate list for LX. Select the predicted motion vector mvpLX from mvpListLX (step S104 in Figure 19). Here, in the list of candidate motion vectors mvpListLX, one element (counting from 0) Let the i-th element be represented as mvpListLX[i]. The motion vector mvLX and the predicted motion vector candidate. The difference between each predicted motion vector stored in the list mvpListLX and the candidate mvpListLX[i] is The difference motion vectors for each are calculated. When these difference motion vectors are encoded... The code value is calculated for each element (predicted motion vector candidate) of the predicted motion vector candidate list mvpListLX. Calculate. Then, among the elements registered in the predicted motion vector candidate list mvpListLX, The candidate for each predicted motion vector, mvpListLX[i], is determined by minimizing the sign value of each candidate for the predicted motion vector. Select the predicted motion vector mvpLX and obtain its index i. Predicted motion vector There are multiple candidate prediction motion vectors in the candidate list mvpListLX that have the smallest generated code amount. In that case, the index i in the predicted motion vector candidate list mvpListLX is a small number. The candidate predicted motion vectors mvpListLX[i] represented by this list are selected as the optimal predicted motion vector mvpLX. Select it and get its index i.
[0097] Next, the motion vector subtraction unit 328 subtracts the selected LX from the LX motion vector mvLX. Subtract the predicted motion vector mvpLX, mvdLX = mvLX - mvpLX The difference motion vector mvdLX is calculated as LX (step S105 in Figure 19).
[0098] <Explanation of the decoder side: Normal predicted motion vector mode derivation unit (normal AMVP):> Next, the normal predicted motion vector mode processing procedure on the decoding side will be explained with reference to Figure 25. On the other side, there is a spatial prediction motion vector candidate derivation unit 421 and a time prediction motion vector candidate derivation unit 4 22. History prediction motion vector candidate derivation unit 423, Prediction motion vector candidate supplementation unit 425, The motion vectors used in the interprediction of the normal predictive motion vector mode are L0 and L1 respectively. Calculate them (Steps S201 to S206 in FIG. 25). Specifically, for the processing target block If the prediction mode PredMode of the processing target block is inter prediction (MODE_INTER) and the inter prediction mode of the processing target block is L0 prediction (Pred_L0), calculate the L0 prediction motion vector candidate list mvpListL0, select the prediction motion vector mvpL0, and calculate the motion vector mvL0 of L0. When the inter prediction mode of the processing target block is L1 prediction (Pred_L1), calculate the L1 prediction motion vector candidate list mvpListL1, select the prediction motion vector mvpL1, and calculate the motion vector mvL1 of L1. When the inter prediction mode of the processing target block is bi - prediction (Pred_BI), both L0 prediction and L1 prediction are performed. Calculate the L0 prediction motion vector candidate list mvpListL0, select the L0 prediction motion vector mvpL0, and calculate the motion vector mvL0 of L0. At the same time, calculate the L1 prediction motion vector candidate list mvpListL1, calculate the L1 prediction motion vector mvpL1, and calculate the motion vector mvL1 of L1 respectively.
[0099] Similar to the encoding side, on the decoding side, for each of L0 and L1, perform the motion vector calculation process, but it is a common process for both L0 and L1. Therefore, in the following description, L0 and L1 are represented as a common LX. LX represents the inter prediction mode used for the inter prediction of the encoding block to be processed. In the process of calculating the motion vector of L0, X is 0, and in the process of calculating the motion vector of L1 X is 1. Also, during the process of calculating the motion vector of LX, instead of using the same reference list as the calculated LX, refer to the information of the other reference list. When referring to the information of the other reference list, represent the other reference list as LY. When referring to the information of the other reference list instead of the same reference list as the calculated LX during the process of calculating the motion vector of LX, represent the other reference list as LY.
[0100] When using the motion vector mvLX for LX (step S202:YES in Figure 25), LX Calculate candidate predicted motion vectors and construct a list of LX predicted motion vector candidates, mvpListLX. To build (step S203 in Figure 25). In the normal predicted motion vector mode derivation unit 401 Spatial prediction motion vector candidate derivation unit 421, time prediction motion vector candidate derivation unit 422, history Multiple predicted motion vectors are generated in the predicted motion vector candidate derivation unit 423 and the predicted motion vector candidate supplementation unit 425. Candidate motion vectors are calculated, and a list of predicted motion vector candidates, mvpListLX, is constructed. (Figure 25) The detailed processing procedure for step S203 will be described later using the flowchart in Figure 20. ru.
[0101] Next, the predicted motion vector candidate selection unit 426 selects the predicted motion vector candidate list mvpListLX The index mv of the predicted motion vector, which is decoded and supplied by the bit sequence decoding unit 201. Candidate predicted motion vectors corresponding to pIdxLX are mvpListLX[mvpIdxLX] selected as predicted motion vectors Extract it as `mvpLX` (step S204 in Figure 25).
[0102] Next, the motion vector addition unit 427 decodes the bit string decoding unit 201 and supplies it. The difference motion vector mvdLX of LX and the predicted motion vector mvpLX of LX are added together. mvLX = mvpLX + mvdLX The motion vector mvLX of LX is calculated (step S205 in Figure 25).
[0103] <Normal Predictive Motion Vector Mode Derivation Unit (Normal AMVP): Method for Predicting Motion Vectors> Figure 20 shows the derivation of the normal predicted motion vector mode of the image coding device according to an embodiment of the present invention. Functions common to unit 301 and the normal predicted motion vector mode derivation unit 401 of the image decoding device This is a flowchart representing the processing procedure for a normal predictive motion vector mode derivation process that has [a specific characteristic].
[0104] Normal prediction motion vector mode derivation unit 301 and Normal prediction motion vector mode derivation unit 40 Version 1 includes a list of predicted motion vector candidates, mvpListLX. The `stomvpListLX` has a list structure and indicates the location of the predicted motion vector candidate within the list. The elements are a motion vector index and a predicted motion vector candidate corresponding to the index. A memory area is provided for storing it. The predicted motion vector index numbers start from 0. The predicted motion vector candidates are started and stored in the memory area of the predicted motion vector candidate list mvpListLX. This is stored. In this embodiment, the predicted motion vector candidate list mvpListLX is small It is possible to register at least two predicted motion vector candidates (interpretation information). Furthermore, the predicted motion vectors registered in the predicted motion vector candidate list mvpListLX Set the variable numCurrMvpCand, which indicates the number of candidate characters, to 0.
[0105] The spatial prediction motion vector candidate derivation units 321 and 421 are derived from the block adjacent to the left. Candidates for the predicted motion vector are derived. In this process, the block adjacent to the left (Figure 11) Whether or not interpretation information for A0 or A1) is available, i.e., candidate prediction motion vectors. The predicted motion vector mv is determined by referencing a flag indicating whether it is, the motion vector, the reference index, etc. LXA is derived, and the derived mvLXA is added to the predicted motion vector candidate list mvpListLX (Figure 20). (Step S301). Note that X is 0 when predicting L0 and 1 when predicting L1 (and so on). (Same as below). Next, the spatial prediction motion vector candidate derivation units 321 and 421 are adjacent to the upper side. Candidate predicted motion vectors are derived from the block. In this process, the block adjacent to the upper side... Interpretation information of the lock (B0, B1, or B2 in Figure 11), i.e., predicted motion vector A flag indicating whether a candidate for the toll is available, along with motion vectors, reference indices, etc., are used. Derive the predicted motion vector mvLXB by comparing it, and if the derived mvLXA and mvLXB are not equal... Then, add mvLXB to the predicted motion vector candidate list mvpListLX (step S3 in Figure 20). 02). The processing in steps S301 and S302 in Figure 20 involves the position and number of adjacent blocks being referenced. They are similar except for the difference in whether or not the predicted motion vector candidate for the encoded block is available. The flag availableFlagLXN indicates whether it is available, and the motion vector mvLXN, and the reference index refIdxN( Derive the equation N represents either A or B (and so on).
[0106] Next, the time prediction motion vector candidate derivation units 322 and 422 determine the current processing target picture. This method derives candidate predicted motion vectors from blocks in pictures with different time zones. This process utilizes predicted motion vector candidates for encoded blocks of pictures at different time points. A flag, availableFlagLXCol, indicating whether it is possible or not, and a motion vector, mvLXCol, and a reference index. Derive the reference list listCol and predict the motion vector candidate list m Add to vpListLX (step S303 in Figure 20).
[0107] Time predictions are provided in units of sequence (SPS), picture (PPS), or slice. The processing of motion vector candidate derivation units 322 and 422 can be omitted.
[0108] Next, the history prediction motion vector candidate derivation units 323 and 423 derive history prediction motion vector candidates The historical prediction motion vector candidates registered in the supplementary list HmvpCandList are prediction motion vector candidates Add to the supplementary list mvpListLX. (Step S304 in Figure 20). This step S304 Details of the registration process will be described later using the flowchart in Figure 29.
[0109] Next, the predicted motion vector candidate supplementation units 325 and 425 add the predicted motion vector candidate list mv Add a list of predicted motion vector candidates with predetermined values, such as (0,0), until the pListLX condition is met. (S305 in Figure 20).
[0110] <Normal Merge Mode Derivation Section (Normal Merge)> The normal merge mode derivation unit 302 in Figure 18 is a spatial merge candidate derivation unit 341, and a time merge Candidate derivation unit 342, average merge candidate derivation unit 344, history merge candidate derivation unit 345, merge Includes a candidate replacement unit 346 and a merge candidate selection unit 347.
[0111] The normal merge mode derivation unit 402 in Figure 24 is a spatial merge candidate derivation unit 441, and a time merge Candidate derivation unit 442, average merge candidate derivation unit 444, history merge candidate derivation unit 445, merge Includes a candidate replacement unit 446 and a merge candidate selection unit 447.
[0112] Figure 21 shows the normal merge mode derivation unit 302 of the image coding device according to an embodiment of the present invention. The normal merge mode has functions common to both the normal merge mode and the normal merge mode derivation unit 402 of the image decoding device. This is a flowchart explaining the procedure for code derivation.
[0113] The following explains the process step by step. Unless otherwise specified, the following explanation will not include the following. This section explains the case where slice type is B slice, but what about the case of P slice? This can also be applied. However, if the slice type slice_type is a P slice, the interpretation model There is only L0 prediction (Pred_L0) as a code; L1 prediction (Pred_L1) and biprediction (Pred_BI) are not available. Since it is not present, the processing related to L1 can be omitted.
[0114] In the normal merge mode derivation unit 302 and the normal merge mode derivation unit 402, merge candidate It has a mergeCandList. The merge candidate list mergeCandList has a list structure, A merge index that shows the location within the merge candidate list, and the merge corresponding to the index. A memory area is provided to store merge candidates as elements. The merge index number is 0. Starting from there, the merge candidates are stored in the memory area of the merge candidate list, mergeCandList. In subsequent processing, the merge index i registered in the merge candidate list mergeCandList will be used. The merge candidates will be represented by mergeCandList[i]. In this embodiment, merge The mergeCandList must register at least 6 merge candidates (internal prediction information). It shall be possible to do so. Furthermore, the merge candidate list mergeCandList is registered Set the variable numCurrMergeCand, which indicates the number of merge candidates, to 0.
[0115] In the spatial merge candidate derivation unit 341 and the spatial merge candidate derivation unit 441, the image encoding device The encoded information is stored in the encoded information storage memory 111 or the encoded information storage memory 205 of the image decoding device. From the encoded information, each block adjacent to the block to be processed (B in Figure 11) 1. Spatial merge candidates from A1, B0, A0, B2) The process is derived sequentially, and the derived spatial merge candidates are registered in the merge candidate list, mergeCandList. (Step S401 in Figure 21). Here, B1, A1, B0, A0, B2 or time mark Define N which represents one of the candidate Col blocks. The interpretation information of block N is spatially marked. availableFlagN is a flag indicating whether or not it can be used as a merge candidate, and L0 is the value of spatial merge candidate N. The reference index refIdxL0N and L1 are reference index refIdxL1N and L0 are predicted. The L0 prediction flag predFlagL0N indicates whether or not an L1 prediction is performed, and the L1 prediction flag indicates whether or not an L1 prediction is performed. Derive the measurement flag predFlagL1N, the motion vector mvL0N for L0, and the motion vector mvL1N for L1. However, in this embodiment, the blocks included in the encoding block to be processed Since merge candidates are derived without referring to interpretation information, the target encoding block is processed. Spatial merge candidates are not derived using interpretation information of the blocks included.
[0116] Next, the time merge candidate derivation unit 342 and the time merge candidate derivation unit 442 consider different times Derive time merge candidates from the intermediate pictures, and use the derived time merge candidates as merge candidates. Register the mergeCandList (step S402 in Figure 21). Time merge candidates are used. A flag, `availableFlagCol`, indicates whether it is possible or not, and whether or not L0 prediction for time merge candidates is performed. The L0 prediction flag predFlagL0Col indicates whether L1 prediction is performed, and the L1 prediction indicates whether L1 prediction is performed or not. The flag predFlagL1Col, and the motion vectors mvL0Col and mvL1Col of L0. Derive.
[0117] Note that time is measured in units of sequence (SPS), picture (PPS), or slice. The processing of the merge candidate derivation unit 342 and the time merge candidate derivation unit 442 can be omitted. Let's assume that.
[0118] Next, the history merge candidate derivation unit 345 and the history merge candidate derivation unit 445 perform history prediction. The historical prediction motion vector candidates registered in the motion vector candidate list HmvpCandList are marked Register the candidate in the mergeCandList (step S403 in Figure 21).
[0119] Note that the number of merge candidates registered in the merge candidate list mergeCandList is numCurrMergeC If and is less than the maximum number of merge candidates MaxNumMergeCand, the merge candidate list mergeCandL The number of merge candidates registered in ist is numCurrMergeCand, and the maximum number of merge candidates is MaxNumMergeCa With nd as the upper limit, the history merge candidates are derived and registered in the merge candidate list mergeCandList. It can be done.
[0120] Next, the average merge candidate derivation unit 344 and the average merge candidate derivation unit 444 calculate the merge candidates The average merge candidate is derived from the supplementary list mergeCandList, and the derived average merge candidate is used as the merge candidate. Add to the mergeCandList (step S404 in Figure 21).
[0121] Note that the number of merge candidates registered in the merge candidate list mergeCandList is numCurrMergeC If and is less than the maximum number of merge candidates MaxNumMergeCand, the merge candidate list mergeCandL The number of merge candidates registered in ist is numCurrMergeCand, and the maximum number of merge candidates is MaxNumMergeCa The average merge candidate is derived with nd as the upper limit and registered in the merge candidate list mergeCandList. It can be done.
[0122] Here, the average merge candidate is the first one registered in the merge candidate list mergeCandList The motion vectors of the merge candidate and the second merge candidate are averaged for each L0 and L1 prediction. This is a new merge candidate with a motion vector obtained from this process.
[0123] Next, the merge candidate supplement unit 346 and the merge candidate supplement unit 446 process the merge candidate list. The number of merge candidates registered in mergeCandList, numCurrMergeCand, is equal to the maximum number of merge candidates, M. If it is smaller than axNumMergeCand, the merge candidate list mergeCandList is registered The number of merge candidates, numCurrMergeCand, is capped at the maximum number of merge candidates, MaxNumMergeCand, for additional merge candidates. Derive the merge candidates and register them in the merge candidate list (mergeCandList) (Step S4 in Figure 21). 05). With the maximum number of merge candidates MaxNumMergeCand as the upper limit, in P slices, the motion vector The prediction mode where the value of L is (0,0) adds a merge candidate for L0 prediction (Pred_L0). In B-slice, the prediction mode where the motion vector has a value of (0,0) is biprediction (Pred_BI). Add merge candidates. The reference index when adding merge candidates is already added. This is different from the reference index.
[0124] Next, the merge candidate selection unit 347 and the merge candidate selection unit 447 select the merge candidate list. Select a merge candidate from the merge candidates registered in mergeCandList. (Encoding side) The merge candidate selection unit 347 selects a merge candidate by calculating the sign amount and strain amount. , a merge index indicating the selected merge candidates, and inter-prediction information of the merge candidates, The data is supplied to the motion compensation prediction unit 306 via the interpretation mode determination unit 305. Meanwhile, the decoding... The merge candidate selection unit 447 on the side selects merge candidates based on the decoded merge index. Select a replacement and supply the selected merge candidate to the motion compensation prediction unit 406.
[0125] <Update to the list of candidate motion vectors for historical prediction> Next, the encoding information storage memory 111 on the encoding side and the encoding information storage memory 20 on the decoding side Regarding the initialization and updating methods for the history prediction motion vector candidate list HmvpCandList to be prepared for step 5. This will be explained in detail. Figure 26 shows the initialization and update process for the history prediction motion vector candidate list. This is a flowchart explaining the process.
[0126] In this embodiment, updating the history prediction motion vector candidate list HmvpCandList is performed by encoding information This shall be carried out in the information storage memory 111 and the encoded information storage memory 205. The prediction unit 102 and the interpretation unit 203 include a history prediction motion vector candidate list update unit. You can install it to update the history prediction motion vector candidate list HmvpCandList.
[0127] At the beginning of the slice, the history prediction motion vector candidate list HmvpCandList is initialized, and On the generation side, the prediction method determination unit 105 determines whether to use the normal prediction motion vector mode or the normal merge mode. If selected, the history prediction motion vector candidate list HmvpCandList is updated, and on the decoding side... The prediction information decoded by the bit string decoding unit 201 is in normal prediction motion vector mode or normal In merge mode, update the history prediction motion vector candidate list HmvpCandList.
[0128] Used when performing interprediction in normal predictive motion vector mode or normal merge mode. Interpretation information is used as interpretation information candidate hMvpCand and historical prediction motion vector candidate Register to the HmvpCandList. The candidate hMvpCand contains the L0 reference index. This indicates whether or not the reference index refIdxL0 and L1 predictions are performed. The L0 prediction flag predFlagL0 and the L1 prediction flag predFl indicate whether or not L1 prediction is performed. This includes the motion vectors agL1, mvL0 (for L0), and mvL1 (for L1).
[0129] The encoding information storage memory 111 on the encoding side and the encoding information storage memory 205 on the decoding side are equipped The elements registered in the historical prediction motion vector candidate list HmvpCandList (i.e., (Interpretation information) contains an interpretation information candidate hMvpCand with the same value as the interpretation information candidate hMvpCand. If it exists, remove that element from the historical prediction motion vector candidate list HmvpCandList. On the other hand, if there is no interpretation information with the same value as the interpretation information candidate hMvpCand, Remove the first element of the historical prediction motion vector candidate list HmvpCandList, and then remove the historical prediction motion vector Add the interpretation information candidate hMvpCand to the end of the candidate list HmvpCandList.
[0130] The encoding information storage memory 111 on the encoding side and the encoding information storage memory 2 on the decryption side of the present invention The number of elements in the history prediction motion vector candidate list HmvpCandList, which is prepared for 05, will be 6.
[0131] First, initialize the HmvpCandList, a list of candidate motion vectors for historical prediction at the slice level. (Step S2101 in Figure 26). The list of candidate historical motion vectors Hm at the beginning of the slice. Clear all elements in vpCandList and add them to the historical prediction motion vector candidate list HmvpCandList. The value of NumHmvpCand, which represents the number of historically predicted motion vector candidates (current number of candidates), is set to 0. do.
[0132] Note that the initialization of the historical prediction motion vector candidate list HmvpCandList is done in slice units (slice It was stated that this would be done in the first encoding block of the block, but it is done on a picture-by-picture, tile-by-tile, or tree-by-tree basis. This can also be done on a row-by-row basis.
[0133] Next, for each encoded block within the slice, the following list of candidate historical motion vectors (Hmvp) is presented. The CandList update process is repeated (steps S2102 to S2107 in Figure 26).
[0134] First, initial settings are performed on a coding block basis. A flag is used to indicate whether or not identical candidates exist. Set the value of `identicalCandExist` to FALSE and indicate the candidate to be deleted. Set the dex removeIdx to 0 (step S2103 in Figure 26).
[0135] Determine whether or not the candidate hMvpCand for the target interpretation information to be registered exists (Figure 26) (S2104). The coding side prediction method determination unit 105 normally predicts motion vector mode or If it is determined to be in normal merge mode, or if the bit string decoding unit 201 on the decoding side makes a normal prediction When decoded as motion vector mode or normal merge mode, the interpretation information The report is designated as the candidate for the interpretation information to be registered, hMvpCand. The coding side prediction method determination unit 105 Intra prediction mode, subblock prediction motion vector mode, or subblock merge If a mode is determined to be selected, or if the bit string decoding unit 201 on the decoding side is set to intra prediction mode, Decoded as subblock predictive motion vector mode or subblock merge mode In this case, the process of updating the history prediction motion vector candidate list HmvpCandList will not be performed, and the target of registration will be... The candidate for the interface prediction information hMvpCand does not exist. The candidate for the interface prediction information hMvpCand to be registered is If it does not exist, skip steps S2105 to S2106 (step S2105 in Figure 26). 2104:NO). If there is a candidate for the interpretation information hMvpCand to be registered, step Perform the following steps (Step S2104 in Figure 26: YES).
[0136] Next, the elements to be registered in the historical prediction motion vector candidate list HmvpCandList The element with the same value as the candidate hMvpCand (interface prediction information), i.e., the same element Determine whether it exists or not (step S2105 in Figure 26). Figure 27 shows this identical element verification. This is a flowchart of the processing procedure. The value of the number of historical prediction motion vector candidates, NumHmvpCand, is 0. In this case (step S2121:NO in Figure 27), the historical prediction motion vector candidate list HmvpCa ndList is empty and no identical candidates exist, so steps S2122~S2125 in Figure 27 are skipped. The ticket is issued, and the identical element verification process is terminated. Number of historical prediction motion vector candidates: NumHmvpC If the value of AND is greater than 0 (YES in step S2121 in Figure 27), the historical predicted motion vector The process in step S2123 is repeated as the toll index hMvpIdx ranges from 0 to NumHmvpCand-1. Return (steps S2122~S2125 in Figure 27). First, the historical prediction motion vector candidate The element at the hMvpIdx-th position in the string, counting from 0, is the candidate for interpretation information hM Compare whether it is the same as vpCand (step S2123 in Figure 27). If it is the same (Figure 27 Step S2123: YES), flag identicalCandE indicating whether or not identical candidates exist. Set xist to TRUE, and delete target index remo which indicates the position of the element to be deleted. Set the current historical prediction motion vector index hMvpIdx value to veIdx and verify this identical element. Terminate the process. If they are not the same (step S2123:NO in Figure 27), set hMvpIdx to 1 If the historical prediction motion vector index hMvpIdx is less than or equal to NumHmvpCand-1, Then, the processing from step S2123 onwards is performed.
[0137] Returning to the flowchart in Figure 26, the history prediction motion vector candidate list HmvpCandList Element shifting and addition processing is performed (step S2106 in Figure 26). Figure 28 shows the same process as in Figure 26. Element shift / addition processing for the history prediction motion vector candidate list HmvpCandList of step S2106 This is a flowchart of the procedure. First, the history prediction motion vector candidate list HmvpCandList is You can either remove the stored elements before adding a new element, or add a new element without removing the existing elements. Determine whether to add it. Specifically, the flag `identicalCandE` indicates whether or not an identical candidate exists. Compare xist to TRUE or NumHmvpCand to see if it is 6 (step S2141 in Figure 28). ). The flag identicalCandExist, which indicates whether or not identical candidates exist, is set to TRUE or currently If the number of candidates NumHmvpCand satisfies any of the conditions of 6 (step S2141 in Figure 28: YES), except for elements stored in the historical prediction motion vector candidate list HmvpCandList. Add a new element. Set the initial value of index i to removeIdx + 1. The element shifting process in step S2143 is repeated from the initial value to NumHmvpCand. (Figure) Step 28 (S2142~S2144). HmvpCandList[ i - 1 ] to HmvpCandList[ i The element is shifted forward by copying the element of ] (step S2143 in Figure 28), i Increment by 1 (steps S2142-S2144 in Figure 28). Next, predict the history. The (NumHmvpCand-1)th HmvpCandLi, which corresponds to the last candidate in the motion vector list, counting from 0. The interpretation information candidate hMvpCand is added to st[NumHmvpCand-1] (step S21 in Figure 28). 45) The process of shifting and adding elements to the history prediction motion vector candidate list HmvpCandList is completed. On the other hand, the flag identicalCandExist, which indicates whether or not identical candidates exist, is set to TRUE. If NumHmvpCand does not satisfy any of the conditions in 6 (step S2141:N in Figure 28) O) Without removing the elements stored in the historical prediction motion vector candidate list HmvpCandList, Add the interprediction information candidate hMvpCand to the end of the historical prediction motion vector candidate list (Figure) Step 28 (S2146). Here, the last in the list of historical prediction motion vector candidates is 0 This is the NumHmvpCand-th HmvpCandList[NumHmvpCand], counting from the first one. Also, NumHmvpCand is Increment by 1, shift the elements of the list of candidate motion vectors in this history prediction list HmvpCandList. The call and addition process is terminated.
[0138] Figure 31 illustrates an example of the process for updating the list of candidate motion vectors for historical prediction. There are six of them. The elements (interface prediction information) are registered in the historical prediction motion vector candidate list HmvpCandList When adding new elements, the previous elements of the history prediction motion vector candidate list HmvpCandList By comparing the new interpretation information in order from the original (Figure 31A), the new elements show historical prediction movements. If the value is the same as the third element from the top of the vector candidate list HmvpCandList, HMVP2, then the history Remove element HMVP2 from the predicted motion vector candidate list HmvpCandList and remove the following elements HMVP3~HM Shift (copy) VP5 forward one by one, and create the history prediction motion vector candidate list HmvpCandLis By adding a new element to the end of t (Figure 31B), we get the historical prediction motion vector candidate list HmvpCan Complete the update of dList (Figure 31C).
[0139] <Historical prediction motion vector candidate derivation process> Next, the history prediction motion vector candidate of the encoding side normal prediction motion vector mode derivation unit 301 Supplementary derivation unit 323, history predicted motion vector of the normal predicted motion vector mode derivation unit 401 on the decoding side The processing procedure for step S304 in Figure 20, which is a common process in the candidate derivation unit 423, is as follows: Method for deriving historical prediction motion vector candidates from the historical prediction motion vector candidate list HmvpCandList This will be explained in detail. Figure 29 illustrates the procedure for deriving candidate motion vectors based on historical predictions. This is a low-level chart.
[0140] The current number of predicted motion vector candidates is numCurrMvpCand, and the list of predicted motion vector candidates is mvpLis. The number of tLX elements (which we'll assume is 2 here) or the number of historical prediction motion vector candidates is NumHm If the value of vpCand is 0 (NO in step S2201 in Figure 29), then step S22 in Figure 29 The process from 02 to S2209 is omitted, and the historical prediction motion vector candidate derivation procedure is terminated. The current number of predicted motion vector candidates is numCurrMvpCand, and the list of predicted motion vector candidates is mvpLis. If the number of elements in tLX is less than 2, and the number of candidates for historical prediction motion vectors is NumHmvpCa If the value of nd is greater than 0 (YES in step S2201 in Figure 29), then step in Figure 29 Process steps S2202 through S2209.
[0141] Next, the number of candidates for the historical prediction motion vector, numCheckedHMVP, is calculated as index i from 1 to 4. The process from steps S2203 to S2208 in Figure 29 is repeated until the smaller of the values of Cand is reached. Return (steps S2202-S2209 in Figure 29). Number of current predicted motion vector candidates nu If mCurrMvpCand is 2 or more, which is the maximum number of elements in the predicted motion vector candidate list mvpListLX. (Step S2203:NO in Figure 29), Steps S2204 to S2209 in Figure 29 The process is omitted, and the procedure for deriving candidate motion vectors based on historical predictions is terminated. The number of candidate vectors numCurrMvpCand is the maximum number of elements in the predicted motion vector candidate list mvpListLX. If it is less than a certain 2 (step S2203 in Figure 29: YES), then step S2 in Figure 29 Perform the processing from step 204 onwards.
[0142] Next, the process from steps S2205 to S2207 is performed when Y is 0 and 1 (L0 and L1). Perform the following steps (steps S2204-S2208 in Figure 29). Current predicted motion vector The number of candidate vectors, numCurrMvpCand, is the maximum number of elements in the predicted motion vector candidate list, mvpListLX. If the value is 2 or more (step S2205:NO in Figure 29), then step S2206 in Figure 29 The process in S2209 is omitted, and the procedure for deriving candidate motion vectors based on historical predictions is terminated. The number of current predicted motion vector candidates is numCurrMvpCand, and the list of predicted motion vector candidates is mvpListLX. If the number of elements is less than the maximum number of elements, which is 2 (step S2205 in Figure 29: YES), Figure 29 The process from step S2206 onwards is performed.
[0143] Next, in the historical prediction motion vector candidate list HmvpCandList, the motion to be encoded / decoded is entered. The vector's reference index refIdxLX is the same as the element of the reference index, and the predicted motion vector If the element is different from any element in the calllist mvpListLX (step S2206 in Figure 29) :YES), the numCurrMvpCand element (counting from 0) of the predicted motion vector candidate list is mvpL istLX[numCurrMvpCand] contains the historical prediction motion vector candidate HmvpCandList[NumHmvpCand - i] LY Add the motion vector (step S2207 in Figure 29) and the current predicted motion vector candidate. Increment the number numCurrMvpCand by 1. History prediction motion vector candidate list HmvpCand Within the List, the reference index refIdxLX is the same as the reference index of the motion vector to be encoded / decoded. An element of DEX that is different from any element of the predicted motion vector list mvpListLX If not (step S2206:NO in Figure 29), the additional processing in step S2207 is performed. To push.
[0144] The processes from steps S2205 to S2207 in Figure 29 are performed on both L0 and L1. (Steps S2204-S2208 in Figure 29). Increment index i by 1. The index i is 4 and the number of historical prediction motion vector candidates is the smaller of NumHmvpCand. In the following cases, the process from step S2203 onwards will be repeated (from step S2202 in Figure 29) S2209).
[0145] <History merge candidate derivation process> Next, the history merge candidate derivation unit 345 of the encoding side normal merge mode derivation unit 302, decoding The diagram shows the common processing in the history merge candidate derivation unit 445 of the normal merge mode derivation unit 402 on the side. The 21st step S404 is the processing procedure for the history merge candidate list HmvpCandList. The method for deriving merge candidates will be explained in detail. Figure 30 shows the procedure for deriving history merge candidates. This is a flowchart for explanation.
[0146] First, the initialization process is performed (step S2301 in Figure 30). isPruned[i] is set from 0 (numCu Set the value of FALSE to each of the (-1)th elements of rrMergeCand and store the result in the variable numOrigMergeCand Sets numCurrMergeCand to the number of elements currently registered in the merge candidate list.
[0147] Next, the initial value of index hMvpIdx is set to 1, and from this initial value up to NumHmvpCand The additional processing from step S2303 to step S2310 in Figure 30 is repeated (Figure 3 Step 0 (S2302~S2311). Elements currently registered in the merge candidate list. If the number of merge candidates, numCurrMergeCand, is not less than or equal to (MaxNumMergeCand - 1), then merge Since merge candidates have been added to all elements of the candidate list, this history merge candidate derivation process will now proceed. Finish (NO in step S2303 in Figure 30). Registered in the current merge candidate list. If the number of elements, numCurrMergeCand, is less than or equal to (maximum number of merge candidates, MaxNumMergeCand-1), then Perform the processing from step S2304 onwards. Set the value of sameMotion to FALSE (Figure 30). (Step S2304). Next, the initial value of index i is set to 0, and from this initial value... The process in steps S2306 and S2307 in Figure 30 is performed up to numOrigMergeCand-1 (Figure 30 (S2305~S2308). The list of historical motion vector prediction candidates counts from 0 (NumHmvp The element (Cand - hMvpIdx)th element HmvpCandList[NumHmvpCand- hMvpIdx] is the merge candidate list Compare whether the i-th element, mergeCandList[i], has the same value as the element counting from 0 (step in Figure 30) (P2306).
[0148] The same value for merge candidates refers to all the components that the merge candidates possess (interpretation mode, etc.). If the values of the reference index and motion vector are the same, the merge candidates will be considered to have the same value. If the pruned values are the same and isPruned[i] is FALSE (YES in step S2306 of Figure 30), Set both sameMotion and isPruned[i] to TRUE (Step S2307 in Figure 30) ). If the values are not the same (NO in step S2306 in Figure 30), proceed to step S2307. Skip the logic. Repeat steps S2305 to S2308 in Figure 30. Once processing is complete, compare whether sameMotion is FALSE (step S230 in Figure 30) 9) If sameMotion is FALSE (YES in step S2309 in Figure 30), then The (NumHmvpCand - hMvpIdx)th element from the list of candidate motion vectors for historical prediction, counting from 0. The raw HmvpCandList[NumHmvpCand - hMvpIdx] does not exist in mergeCandList, therefore it is a merge candidate. The mergeCandList[numCurrMergeCand] at the numCurrMergeCand position in the list contains the historical predicted movement vector. The (NumHmvpCand - hMvpIdx)th element in the list of candidates for tolling, counting from 0, is HmvpCandList[NumHmv Add pCand - hMvpIdx and increment numCurrMergeCand by 1 (step in Figure 30) Step S2310). Increment the index hMvpIdx by 1 (Step S23 in Figure 30). 02) Repeat the steps S2302 to S2311 in Figure 30.
[0149] Once all elements in the historical prediction motion vector candidate list have been reviewed, the merge candidate list will be finalized. Once merge candidates have been added to all elements of the history, the derivation process for these merge candidates is complete. .
[0150] <Process for deriving average merge candidates> Next, the average merge candidate derivation unit 344 of the encoding side normal merge mode derivation unit 302, and the decoding The average merge candidate derivation unit 444 of the normal merge mode derivation unit 402 on the side is a common process, as shown in the figure. This section provides a detailed explanation of the process for deriving the average merge candidate, which is the processing step S403 of step 21. Figure 38 is a flowchart illustrating the process for deriving the average merge candidate.
[0151] First, the initialization process is performed (step S1301 in Figure 38). The variable numOrigMergeCand is Sets numCurrMergeCand to the number of elements currently registered in the merge candidate list.
[0152] Next, we scan the merge candidate list from the beginning and determine two pieces of motion information. The first one is Let i=0 be the index indicating the movement information of the first movement, and j=1 be the index indicating the second movement information. Steps S1302-S1303 in Figure 38. Registered in the current merge candidate list. If the number of elements numCurrMergeCand is not less than or equal to (maximum number of merge candidates MaxNumMergeCand-1), then Since merge candidates have been added to all elements in the merge candidate list, this history merge candidate derivation process The process is terminated (step S1304 in Figure 38). The current merge candidate list is registered. If the number of elements to merge, numCurrMergeCand, is less than or equal to (maximum number of merge candidates, MaxNumMergeCand - 1), then Perform the processing from step S1305 onwards.
[0153] mergeCandList[i] is the move information for the i-th merge candidate in the merge candidate list, and the move information for the j-th merge candidate in the merge candidate list. Determine whether the information mergeCandList[j] is invalid or not (step S130 in Figure 38) 5) If both are invalid, the average merge candidates of mergeCandList[i] and mergeCandList[j]. Without deriving the result, we move on to the next element. mergeCandList[i] and mergeCandList[j] are both invalid. If not found, set X to 0 and 1 and repeat the following process (from step S1306 to S in Figure 38) 1314).
[0154] Determine if the LX prediction for mergeCandList[i] is valid (step S1307 in Figure 38). If LX prediction is enabled for mergeCandList[i], then LX prediction is also enabled for mergeCandList[j]. Determine whether it is (step S1308 in Figure 38). If the LX prediction of mergeCandList[j] is valid, In this case, that is, both the LX prediction in mergeCandList[i] and the LX prediction in mergeCandList[j] are valid. If so, the motion vector of the LX prediction in mergeCandList[i] and the LX prediction in mergeCandList[j] The motion vector of the LX prediction averaged from the motion vector and the reference index of the LX prediction in mergeCandList[i] The average merge candidate for LX predictions with ax is derived and set as the LX prediction for averageCand, and avera Enable LX prediction for geCand (step S1309 in Figure 38). Step S13 in Figure 38 In 08, if the LX prediction for mergeCandList[j] is not valid, i.e., the LX of mergeCandList[i] If prediction is enabled and LX prediction for mergeCandList[j] is disabled, then LX for mergeCandList[i] Derive the average merge candidate for LX predictions with prediction motion vectors and reference indices. Set ageCand to LX prediction and enable averageCand LX prediction (Step S13 in Figure 38) 10). In step S1307 of Figure 38, if the LX prediction for mergeCandList[i] is not valid, Determine whether the LX prediction for mergeCandList[j] is valid (step S1311 in Figure 38). ). If the LX prediction for mergeCandList[j] is valid, i.e., the LX prediction for mergeCandList[i] is If disabled and LX prediction for mergeCandList[j] is enabled, then LX prediction for mergeCandList[j] Derive the average merge candidate for LX prediction with motion vectors and reference indices and averageC Set to LX prediction for and and enable LX prediction for averageCand (step S1312 in Figure 38) ). In step S1311 of Figure 38, if the LX prediction of mergeCandList[j] is not valid, then If both the LX prediction for mergeCandList[i] and the LX prediction for mergeCandList[j] are invalid, Disable the LX prediction for averageCand (step S1312 in Figure 38).
[0155] The average merge candidate averageCand of the L0 forecast, L1 forecast, or BI forecast generated as described above is Add the numCurrMergeCand-th mergeCandList[numCurrMergeCand] to the merge candidate list. Then, increment numCurrMergeCand by 1 (step S1315 in Figure 38). Then, complete the process of deriving the average merge candidate.
[0156] The average merge candidate is calculated using the horizontal and vertical components of the motion vector. It is averaged out.
[0157] <Motion compensation prediction processing> The motion compensation prediction unit 306 predicts the block that is currently being processed in the coding process. The position and size are obtained. The motion compensation prediction unit 306 also inputs the prediction information. The prediction mode determination unit 305 obtains the information. The reference index is obtained from the acquired prediction information. The slash and motion vectors are derived and identified by the reference index in the decoded image memory 104. 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 specified location, a prediction signal is generated.
[0158] In interprediction, the interprediction mode is a single reference pixel, such as L0 prediction or L1 prediction. In the case of prediction from a picture, the prediction signal obtained from one reference picture is a motion-compensated prediction signal. The prediction mode is set to BI prediction, and the prediction mode is set to 2 reference pictures. In the case of prediction, the weighted average of the prediction signals obtained from two reference pictures is used. The motion compensation prediction signal is used as the compensation prediction signal and is supplied to the prediction method determination unit 105. Here, the two The weighted average ratio for predictions is set to 1:1, but even if you perform a weighted average using other ratios, Good. For example, if the distance between the picture being predicted and the reference picture is close. The weighting ratio may be increased as the value increases. Also, the calculation of the weighting ratio may be done by picturing Alternatively, this can be done using a correspondence table between combinations of chat intervals and weighting ratios.
[0159] The motion compensation prediction unit 406 has the same function as the motion compensation prediction unit 306 on the encoding side. The compensation prediction unit 406 uses the interpretation information to determine the normal prediction motion vector mode derivation unit 401. Normal merge mode derivation unit 402, subblock predictive motion vector mode derivation unit 403, The motion compensation is obtained from the block merge mode derivation unit 404 via the switch 408. The prediction unit 406 supplies the obtained motion compensation prediction signal to the decoded image signal superimposition unit 207.
[0160] <About Interpretation Mode> We define the process of making a prediction from a single reference picture as a single prediction, and in the case of a single prediction, it is an L0 prediction. Alternatively, L1 prediction refers to either of the two reference pictures registered in reference lists L0 and L1. We will make a prediction using one of the two methods.
[0161] Figure 32 shows a simple prediction where the reference picture of L0 (RefL0Pic) is the picture to be processed. This shows the case where the time is before (CurPic). Figure 33 is a simple prediction and L0 prediction. This indicates that the reference picture for measurement is at a later time than the picture being processed. Similarly, The reference picture for L0 prediction in Figures 32 and 33 is used as the reference picture for L1 prediction (RefL1Pi You can also perform a simple prediction by replacing it with c).
[0162] The process of making predictions from two reference pictures is defined as dual prediction, and in the case of dual prediction, L0 prediction is used. The BI prediction is expressed using both the L1 and L0 predictions. Figure 34 is a dual prediction, and the L0 prediction is used as a reference. The reference picture is at an earlier time than the picture to be processed, and the reference picture for L1 prediction is the same as the picture to be processed. This shows the case where the time is later than the elephant picture. Figure 35 is a biprediction and is a reference for the L0 prediction. This indicates that the reference picture and the reference picture for L1 prediction are at an earlier time than the picture being processed. Figure 36 is a dual prediction, where the reference picture for L0 prediction and the reference picture for L1 prediction are processed. This indicates a case where the time is later than that of the target picture.
[0163] Thus, the relationship between the prediction type L0 / L1 and time is such that L0 is in the past direction and L1 is in the future direction. It can be used without being limited to this. Also, in the case of biprediction, the same reference picture L0 and L1 predictions may be performed using this method. Note that motion compensation prediction can be performed as a single prediction. The decision of whether to perform a single prediction or a dual prediction depends, for example, on whether to use L0 prediction or L1 prediction. The decision is made based on information (e.g., a flag) indicating whether or not it applies.
[0164] <About Reference Indexes> In embodiments of the present invention, in order to improve the accuracy of motion compensation prediction, multiple motion compensation predictions are performed. This makes it possible to select the optimal reference picture from among a number of reference pictures. Therefore, The reference picture used in motion compensation prediction is used as the reference index, and the reference Encode the index along with the difference motion vector into the bitstream.
[0165] <Motion compensation processing based on the normal predictive motion vector mode> The motion compensation prediction unit 306 is also shown in the interpretation prediction unit 102 on the encoding side in Figure 16. In the interprediction mode determination unit 305, the normal predicted motion vector mode is derived. If the interpretation prediction information from section 301 is selected, this interpretation prediction information will be used - The interpretation of the block currently being processed, obtained from the prediction mode determination unit 305. The measurement mode, reference index, and motion vector are derived, and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.
[0166] Similarly, the motion compensation prediction unit 406 is also present in the interpretation prediction unit 203 on the decoding side in Figure 22. As shown, during the decoding process, switch 408 normally predicts the motion vector mode derivation unit 40 When connected to 1, the interpretation is performed by the normal prediction motion vector mode derivation unit 401. The information is retrieved, and the interpretation mode and reference index of the block currently being processed are obtained. Next, the motion vector is derived and a motion compensation prediction signal is generated. The signal is supplied to the decoded image signal superimposition unit 207.
[0167] <Motion compensation processing based on normal merge mode> The motion compensation prediction unit 306 is also shown in the interpretation prediction unit 102 on the encoding side in Figure 16. In the inter prediction mode determination unit 305, the normal merge mode derivation unit 302 If the interpretation prediction information is selected, this interpretation prediction information will be used in the interpretation prediction mode. The inter prediction mode of the block currently being processed is obtained from the block determination unit 305. The reference index and motion vector are derived, and a motion compensation prediction signal is generated. The compensation prediction signal is supplied to the prediction method determination unit 105.
[0168] Similarly, the motion compensation prediction unit 406 is also present in the interpretation prediction unit 203 on the decoding side in Figure 22. As shown, during the decoding process, switch 408 is normally connected to merge mode derivation unit 402. If this occurs, the normal merge mode derivation unit 402 will acquire inter prediction information and process the current The prediction mode, reference index, and motion vector of the block being analyzed are Derivation is performed to generate a motion-compensated prediction signal. The generated motion-compensated prediction signal is then used to calculate the decoding image signal weight. It is supplied to the tatami mat section 207.
[0169] <Motion compensation processing based on subblock predicted motion vector modes> The motion compensation prediction unit 306 is also shown in the interpretation prediction unit 102 on the encoding side in Figure 16. In the inter-prediction mode determination unit 305, the sub-block prediction motion vector is determined. If the inter prediction information from the code derivation unit 303 is selected, this inter prediction information The interprediction mode determination unit 305 obtains the current block to be processed. Derive the center prediction mode, reference index, and motion vector, and generate a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.
[0170] Similarly, the motion compensation prediction unit 406 is also present in the interpretation prediction unit 203 on the decoding side in Figure 22. As shown, during the decoding process, switch 408 leads the subblock predictive motion vector mode When connected to output unit 403, the subblock predictive motion vector mode derivation unit 403 Interpretation information is obtained, and the interpretation mode of the block currently being processed is obtained. The system derives the reference index and motion vector, and generates a motion compensation prediction signal. The motion compensation prediction signal is supplied to the decoded image signal superimposition unit 207.
[0171] <Motion compensation processing based on subblock merge mode> The motion compensation prediction unit 306 is also shown in the interpretation prediction unit 102 on the encoding side in Figure 16. In the inter prediction mode determination unit 305, the subblock merge mode derivation unit If interpretation information by 304 is selected, this interpretation information will be used for interpretation. Interpretation of the block currently being processed, obtained from the prediction mode determination unit 305. Derive the mode, reference index, and motion vector, and generate a motion compensation prediction signal. The generated motion compensation prediction signal is supplied to the prediction method determination unit 105.
[0172] Similarly, the motion compensation prediction unit 406 is also present in the interpretation prediction unit 203 on the decoding side in Figure 22. As shown, during the decoding process, switch 408 is in subblock merge mode derivation unit 404 When connected, the interprediction information by the subblock merge mode derivation unit 404 Obtain the interpretation mode and reference index of the block currently being processed. Then, the motion vector is derived and a motion compensation prediction signal is generated. The generated motion compensation prediction signal is The decoded image signal is then supplied to the superimposed image signal unit 207.
[0173] <Motion compensation processing based on affine transformation prediction> In normal predictive motion vector mode and normal merge mode, based on the following flags Motion compensation using an affine model can be used. The following flags are used in the encoding process. Based on the conditions for inter-prediction determined by the inter-prediction mode determination unit 305, the following flags It is reflected in the bitstream and encoded within the bitstream. In the decoding process, the bitstream Based on the following flags within the system, it is determined whether or not to perform motion compensation using an affine model. .
[0174] The sps_affine_enabled_flag enables motion compensation using an affine model in interpretation. Indicates whether it is available or not. If sps_affine_enabled_flag is 0, then on a sequence basis It is suppressed so that it is not motion compensation by the affine model. Also, inter_affine_flag and cu_affine_type_flag is the CU (encoded block) syntax of the encoded video sequence. It is not transmitted in the case of sps. If sps_affine_enabled_flag is 1, the encoded video sequence Motion compensation using an affine model can be used in the simulation.
[0175] sps_affine_type_flag indicates that the 6-parameter affine model is used in interpretation. Indicates whether motion compensation is available. If sps_affine_type_flag is 0, there are 6 parameters. Motion compensation by the affine model is suppressed. Also, cu_affine_type_flag This is not transmitted in the CU syntax of the encoded video sequence. sps_affine_typ If e_flag is 1, then the six-parameter affine model is used in the encoded video sequence. Motion compensation can be used. If sps_affine_type_flag does not exist, it will be 0. do.
[0176] When decoding a P or B slice, in the CU currently being processed, If r_affine_flag is 1, generate a motion compensation prediction signal for the currently processed CU. To achieve this, motion compensation using an affine model is employed. When inter_affine_flag is 0 If so, the affine model will not be used for the CU currently being processed. If lag does not exist, it is assumed to be 0.
[0177] When decoding a P or B slice, in the CU currently being processed, cu_a If ffine_type_flag is 1, the motion compensation prediction signal for the currently processed CU is generated. To achieve this, motion compensation using a 6-parameter affine model is employed. (cu_affine_typ) If e_flag is 0, it generates a motion compensation prediction signal for the CU currently being processed. Motion compensation using a four-parameter affine model is employed.
[0178] In motion compensation using the affine model, the reference index and motion vector are used at the subblock level. Since the toll is derived, the reference index being processed is at the subblock level. A motion compensation prediction signal is generated using motion vectors.
[0179] The 4-parameter affine model is the horizontal component of the motion vector of each of the two control points and The motion vector of the subblock is derived from the four parameters of the vertical component, and the subblock single This mode compensates for movement based on position.
[0180] <Intrablock Copy (IBC)> The effective reference area of an intrablock copy is explained with reference to Figure 39. The effective reference area is determined by using the tree block unit as the reference block for intrablock copying. This is an example of a fixed case. Figure 39A shows 500, 501, 502, 503, and 504 as encoded. This is a tree block, and 504 is the encoded tree block to be processed. 505 is the processing This is the target coding block. The processing order of the coding tree blocks is 500, 501, 502 The order is 503, 504. In this case, the encoding block containing the encoding block 505 to be processed is... Three coded tree blocks 501, 502, and 5 were processed immediately before leaf block 504. 03 is set as the valid reference area of the encoding block 505 to be processed. Encoding tree block 50 Encoded tree blocks processed before 1, and before the encoding block 505 being processed. Regardless of whether the processing is complete or not, the encoding block containing the encoding block 505 to be processed All areas included in Reeblock 504 are treated as invalid reference areas.
[0181] Figure 39B shows the units obtained by dividing the coded tree block into four parts, using the intrablock copy reference block. This is an example of determining the valid reference area as a lock. Figure 39B shows 515 and 516 as symbols. This is an encoding tree block, and 516 is the encoding tree block to be processed. Reeblock 515 is divided into four parts: 506, 507, 508, and 509, and 516 is divided into 510, It is divided into four parts: 511, 512, and 513. 514 is the encoding block to be processed. The processing order of the trablock copy reference blocks is 506, 507, 508, 509, 510. The order is 511, 512, 513. In this case, it includes the encoding block 514 to be processed. Three intrablocks processed immediately before intrablock copy reference block 511 The copy reference blocks 508, 509, and 510 are valid references to the encoding block 514 being processed. This area is defined as the region. Encoded trees processed before the intrablock copy reference block 508. - Regarding whether processing has been completed before the block and the encoding block 514 to be processed In addition, the intrablock copy reference block 514 containing the encoding block 514 to be processed All areas included in 1 are considered invalid reference areas.
[0182] <Predictive Intrablock Copy: Explanation from the Encoding Side> The prediction intrablock copy processing procedure on the encoding side will be explained with reference to Figure 44.
[0183] First, the block vector detection unit 375 detects the block vector mvL (Figure 44) Step S4500). Next, IBC space block vector candidate derivation unit 371, IB C History prediction block vector candidate derivation unit 372, IBC prediction block vector candidate supplementation unit 373, IBC prediction block vector candidate selection unit 376, block vector subtraction unit 378 Then, calculate the difference block vector of the block vector used in the prediction block vector mode. Dispense (steps S4501-S4503 in Figure 44).
[0184] Calculate candidate block vectors and construct a block vector candidate list (mvpList). (Step S4501 in Figure 44). IBC in the intrablock copy prediction unit 352. Spatial block vector candidate derivation unit 371, IBC history block vector candidate derivation unit 372 The IBC prediction block vector candidate supplementation unit 373 generates multiple candidate prediction block vectors. Derived and constructed a list of candidate block vectors, mvpList. Step S45 in Figure 44. The detailed processing steps for 01 will be described later using the flowchart in Figure 47.
[0185] Next, the IBC prediction block vector candidate selection unit 376 selects the prediction block vector Select the predicted block vector mvpL from the candidate list mvpListL (step S45 in Figure 44). 02). The block vector mvL and the predicted block vector candidate list mvpListL are stored in Each difference block is the difference between the candidate mvpListL[i] of each predicted block vector. The vector is calculated. The code value when these difference block vectors are encoded is predicted. The block vector is calculated for each element of the candidate block vector list mvpListL. Then, the predicted block vector is calculated. The code value for each candidate of the predicted block vector among the elements registered in the candidate list mvpListL Let the candidate prediction block vector mvpListL[i] that minimizes this be the prediction block vector mvpL. Select and obtain its index i. Predict block vector candidate list mvpListL If there are multiple candidate prediction block vectors that have the smallest generated code amount, then the prediction Predictions represented by small index numbers i in the block vector candidate list mvpListL The candidate block vector mvpListL[i] is selected as the optimal predicted block vector mvpL, and Get the index i.
[0186] Next, the block vector subtraction unit 378 subtracts the prediction selected from the block vector mvL. Subtract the block vector mvpL, mvdL = mvL - mvpL The difference block vector mvdL is calculated (step S4503 in Figure 44).
[0187] <Predictive Intrablock Copy: Explanation from the Decryption Side> Next, the decoding side's predicted block vector mode processing procedure will be explained with reference to Figure 45. On the other side, the IBC spatial prediction block vector candidate derivation unit 471, IBC history block vector In the Tor candidate derivation unit 472 and the IBC prediction block vector supplementation unit 473, the prediction block vector Calculate the block vector to be used in Tor mode (steps S4600 to S46 in Figure 45). 02). Specifically, calculate the predicted block vector candidate list mvpListL and then predict the block Select the vector mvpL and calculate the block vector mvL.
[0188] Calculate candidate block vectors and construct a list of candidate block vectors, mvpListL. To build (step S4601 in Figure 45). I in the intrablock copy prediction unit 362 BC space block vector candidate derivation unit 471, IBC history block vector candidate derivation unit 4 72. The IBC block vector supplementation unit 473 calculates multiple candidate predicted block vectors. Next, construct the predicted block vector candidate list mvpListL. Step S4601 in Figure 45. The detailed processing procedure will be omitted. Next, the IBC predicted block vector Candidate selection unit 476 selects from the predicted block vector candidate list mvpListL and bit sequence decoding unit 201 The prediction corresponding to the index mvpIdxL of the prediction block vector that is decoded and supplied. The candidate block vectors mvpListL[mvpIdxL] are set to the selected predicted block vector mvpL. Then remove it (step S4601 in Figure 45). Next, block vector addition unit 47 The difference block vector mvdL and the predicted block vector that are decoded and supplied in the bit sequence decoding unit 201 in step 8 Add the lock vector mvpL, mvL = mvpL + mvdL The block vector mvL is calculated as shown (step S4602 in Figure 45).
[0189] <Predictive Block Vector Mode: Method for Predicting Block Vectors> Figure 47 shows the intrablock copy prediction unit of the video encoding device according to an embodiment of the present invention. 352 and the intrablock copy prediction unit 362 of the video decoding device have functions common to both. This is a flowchart representing the processing steps for the predicted intrablock copy mode derivation process. .
[0190] In the intrablock copy prediction unit 352 and the intrablock copy prediction unit 362, It has a list of candidate block vectors to predict, mvpListL. The mvpListL has a list structure and indicates the location of the prediction block vector candidate within the list. Block vector index and candidate block vectors corresponding to the index A memory area is provided for storing the elements. Number of predicted block vector indices The characters start from 0, and the prediction block vector candidate list mvpListL is stored in the memory area. Block vector candidates are stored. In this embodiment, predicted block vector candidates are stored. The mvpListL can register up to 3 candidate block vectors for prediction. Furthermore, the predicted block vectors registered in the predicted block vector candidate list mvpListL Set the variable numCurrMvpIbcCand, which indicates the number of candidates, to 0.
[0191] IBC space block vector candidate derivation units 371 and 471 are for the block adjacent to the left. Candidate predicted block vectors are derived from this (step S4801 in Figure 47). In theory, the predicted block vector candidate of the block adjacent to the left (A0 or A1) is used. The flag availableFlagLA, which indicates whether it is possible or not, and the block vector mvLA are derived, and mvLA Add to the predicted block vector candidate list mvpListL. Then, IBC spatial block vector The candidate deriving units 371 and 471 are located above adjacent blocks (B0, B1 or B2 Candidate predicted block vectors are derived from (step S4802 in Figure 47). The process indicates whether or not a candidate predicted motion vector for the adjacent block above is available. Derive the lag availableFlagLB and the block vector mvLB, and if mvLA and mvLB are not equal, Next, add mvLB to the predicted block vector candidate list mvpListL. Step S4 in Figure 47. The processing of 801 and S4802 is the same except that the position and number of adjacent blocks referenced are different. The flag availa indicates whether or not a candidate predicted block vector for the coded block is available. Derive bleFlagLN and the motion vector mvLN (where N is A or B, and so on).
[0192] Next, the IBC history block vector candidate derivation units 372 and 472 derive the history block vector Predicting historical block vector candidates registered in the candidate list HmvpIbcCandList Add to the list of candidate vectors mvpListL. (Step S4803 in Figure 47). The details of the registration process for step S4803 are shown in the flowchart in Figure 29. In the description of the work, motion vectors are called block vectors, and the list of reference indices is called L0 , History prediction motion vector candidate list HmvpCandList History block vector candidate list Hmvp Since the behavior should be the same as when using IbcCandList, the explanation will be omitted.
[0193] Next, IBC prediction block vector supplementation units 373 and 473 provide prediction block vector candidates. Add block vectors of predetermined values, such as (0,0), until the supplementary list mvpListL is satisfied. (Figure 47, S4804).
[0194] <Merge Intrablock Copy Mode Derivation Unit> The intrablock copy prediction unit 352 in Figure 42 provides IBC space block vector candidate guidance. Output unit 371, IBC history block vector candidate derivation unit 372, IBC block vector complement Charging unit 373, reference position correction unit 380, reference area boundary correction unit 381, IBC merge candidate selection The unit includes section 374 and IBC prediction mode determination unit 377.
[0195] The intrablock copy prediction unit 362 in Figure 43 provides IBC space block vector candidate guidance. Output unit 471, IBC history block vector candidate derivation unit 472, IBC block vector supplement Charging unit 473, IBC merge candidate selection unit 474, reference position correction unit 480, reference area boundary correction It includes section 481 and block copy section 477.
[0196] Figure 46 shows the intrablock copy prediction unit of the video encoding device according to an embodiment of the present invention. 352 and the intrablock copy prediction unit 362 of the video decoding device have functions common to both. This is a flowchart illustrating the procedure for deriving the merge intrablock copy mode. ru.
[0197] In the intrablock copy prediction unit 352 and the intrablock copy prediction unit 362, It has a merge intrablock copy candidate list mergeIbcCandList. The mergeIbcCandList is a list structure, and the merge intrablock A merge index that shows the location within the copy candidate, and the merge corresponding to the index. A memory area is provided to store intrablock copy candidates as elements. The index numbers start from 0, and the merge intrablock copy candidate list mergeIbc CandList stores merge intrablock copy candidates in its memory area. This refers to merge intrablock copy candidate lists mergeIbcCandList. The merge candidates for dex i will be represented by mergeIbcCandList[i]. In this embodiment, Therefore, the merge candidate list (mergeCandList) contains at least 3 merge intrablocks. It will be possible to register P candidates. Furthermore, merge intrablock copy candidates This indicates the number of merge intrablock copy candidates registered in the supplementary list mergeIbcCandList. Set the variable numCurrMergeIbcCand to 0.
[0198] IBC space block vector candidate derivation unit 371 and IBC space block vector candidate Output section 471 contains the encoded information storage memory 111 of the video encoding device or the video decoding device. From the encoding information stored in the encoding information storage memory 205, the left of the block to be processed Derive spatial merge candidates A and B from adjacent blocks on the side and above, and the derived spatial merge Register the merge candidate to the merge intrablock copy candidate list mergeIbcCandList (Figure 4) Step 6 (S4701). Here, we define N which represents either spatial merge candidate A or B. The intrablock copy prediction information of block N is used to identify the spatial block vector merge candidate N. Derive the flag `availableFlagN` indicating whether or not it can be used, and the block vector `mvL`. However, in this embodiment, the block containing the encoding block to be processed is not included in the block. Since block vector merge candidates are derived without referring to other encoded blocks, The spatial block vector merge candidates contained within the block containing the coded block to be analyzed are derived I won't release it.
[0199] Next, the IBC history block vector candidate derivation unit 372 and the IBC history block vector In the candidate derivation unit 472, the candidate is registered in the history prediction block vector candidate list HmvpIbcCandList. Merging the historically predicted block vector candidates into the intrablock copy candidate list me Add to rgeIbcCandList (step S4702 in Figure 46). In this embodiment, merg Block vectors added to eIbcCandList and historically predicted block vector candidates If vectors have the same value, they will not be added to mergeIbcCandList.
[0200] Next, the IBC prediction block vector supplementation unit 373 and the IBC prediction block vector supplementation The filling unit 473 is registered in the merge intrablock copy candidate list mergeIbcCandList. The number of merge candidates, numCurrMergeIbcCand, is the maximum number of intrablock merge candidates, MaxNumM If it is smaller than ergeIbcCand, merge intrablock copy candidate list mergeIbcCandLis The number of merge candidates registered in t is numCurrMergeIbcCand, and the maximum number of merge candidates is MaxNumMergeI Derive additional intrablock merge candidates with bcCand as the upper limit, and merge intrablock Register the kucopy candidate list mergeIbcCandList (step S4703 in Figure 46). The number of merge candidates is limited to MaxNumMergeIbcCand, and the block vectors have a value of (0,0). Add to mergeIbcCandList, the list of candidates for merge intrablock copy.
[0201] Next, the IBC merge candidate selection unit 374 and the IBC merge candidate selection unit 474 select the merge candidate. Intrablocks registered in the intrablock copy candidate list mergeIbcCandList Select one from the IBC merge candidates (step S4704 in Figure 46). IBC merge candidates In the selection unit 374, the decoded image at the reference position is obtained from the decoded image memory 104 and the code amount is... By calculating the amount of data, merge candidates are selected, and the selected intrablock merge candidates A merge index indicating the supplement is supplied to the IBC prediction mode determination unit 377. The code determination unit 377 selects whether or not it is in merge mode by calculating the code amount and strain amount. The result is then supplied to the prediction method determination unit 105. Meanwhile, the IBC merge candidate selection on the decoding side... In section 474, intrablock merge candidates are selected based on the decrypted merge index. Select the option and supply the selected intrablock merge candidate to the reference position correction unit 480.
[0202] Next, the reference position correction unit 380 and the reference position correction unit 480 perform intrablocking The process of correcting the reference position is performed for the candidate (step S4705 in Figure 46). Details of the processing performed by the correction unit 380 and the reference position correction unit 480 will be described later.
[0203] Next, the reference region boundary correction unit 381 and the reference region boundary correction unit 481 perform intrablock Perform a process to correct the reference region boundary for the merge candidate (step S4706 in Figure 46). Details of the processing performed by the reference position correction unit 381 and the reference position correction unit 481 will be described later.
[0204] The block copy unit 477 obtains the decoded image of the reference position from the decoded image memory 208, The decoded image signal is supplied to the superimposing unit 207. Here, the block copy unit 477 processes the luminance component. The color difference components are then copied.
[0205] The block vector mvL above represents the luminance block vector. The block vector for chrominance... MVC is used when the color difference format is 420. mvC = ( ( mvL >> ( 3 + 2 ) ) * 32 This is the result. According to the above equation, the x and y components of mvC are processed respectively.
[0206] <Reference position correction section> Figure 48 shows a flowchart illustrating the processing of the reference position correction unit 380 and the reference position correction unit 480. It is a chart. Currently, the unit of the intrablock copy reference block is the encoded tree block. It is a CTU (Central Unit) and its size is not 128x128 pixels.
[0207] First, calculate the top-left and bottom-right positions of the reference block (S6001). Reference block This indicates the block referenced by the target encoding block using the block vector. If the top left of the illuminated block is (xRefTL, yRefTL) and the bottom right is (xRefBR, yRefBR), ( xRefTL, yRefTL ) = ( xCb + ( mvL
[0000] >> 4 ), yCb + ( mvL
[0001] >> 4 ) ) ( xRefBR, yRefBR ) = ( xRefTL + cbWidth - 1, yRefTL + cbHeight - 1 ) This is the result. Here, the position of the encoding block to be processed is (xCb, yCb), and the block vector is (mvL[ Let [0],mvL[1]) be the width of the encoding block to be processed, and let the height be cbWidth and cbHeight.
[0208] Next, determine whether the size of the CTU is 128x128 pixels or not (S6002). Now, that size Since it is not 128x128 pixels (S6002:NO), the top left and bottom right positions of the referenced area Calculate (S6003). The top left of the referenced area is (xAvlTL, yAvlTL), and the bottom right is (xAvlBR If we set it to , yAvlBR, NL = Min( 1, 7 - CtbLog2SizeY ) - ( 1 << ((7 - CtbLog2SizeY) << 1) ) ( xAvlTL, yAvlTL ) = ( ((xCb >> CtbLog2SizeY) + NL) << CtbLog2SizeY, (yCb >> CtbLog2SizeY) << CtbLog2SizeY ) ( xAvlBR, yAvlBR ) = ( ((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1, (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 ) This is the result. Here, the size of the CTU is set to CtbLog2SizeY.
[0209] Next, determine whether the reference position of the reference block in the x-direction is smaller than the top left corner of the referenced area. Determine (S6004). If the determination is false (S6004: NO), proceed to the next process (S6006). Proceed to the next step. On the other hand, if the judgment is true (S6004:YES), align with the top left of the accessible area. Correct the reference position in the x-direction (S6005).
[0210] Figure 49 shows the process of correcting the reference position. 6001 is the encoding tree to be processed. Blocks are indicated by 6002, the encoding block to be processed is indicated by 6003, and the accessible area is indicated by 6003. Well, if the reference block r2 was located at 6011, then the reference position in the x direction is accessible. It is smaller than the top left of the region (S6004:YES). Therefore, xRefTL = xAvlTL = 6012 The reference position is corrected to the position (S6005). Here, as in S6001, xRefBR=x Since RefTL + cbWidth - 1, correcting xRefTL also corrects xRefBR. Yes. In this correction of the reference position, the block vector mvL[0] may also be corrected. , mvL[0] = (xAvlTL - xCb) << 4 This corrects the reference position, resulting in xRefTL = xAvlTL.
[0211] Thus, when a reference block is located outside the referenced area, its reference position By correcting it, it becomes accessible.
[0212] Now, the block vector candidate constructed in the intrablock copy prediction unit 352 Suppose some of the block vectors in the stack are outside the reference region. If the position is not corrected, referencing those block vectors becomes impossible, therefore, The block vector cannot be considered as a candidate for the IBC merge mode. On the other hand, in the present invention When correcting the reference position, all of the blocks in the constructed block vector candidate list are used. The block vectors are inside the referential region. Therefore, all block vectors refer to the inside of the referential region. It is possible to make all block vectors candidates for IBC merge mode. Therefore, the IBC merge mode selection unit 374 corresponds to all block vectors. Since you can select the optimal prediction mode from each candidate IBC merge mode, the code The efficiency of the process improves.
[0213] Now, the block vector candidate constructed in the intrablock copy prediction unit 362 Suppose some of the block vectors in the stack are outside the reference region. If the position is not corrected, referencing those block vectors becomes impossible, therefore, The IBC merge mode using block vectors cannot decode. In encoding devices that do not have such devices, the IBC merge mode using those block vectors is shown. The page index operates as if it were not encoded. However, due to malfunctions, etc., Such a merge index could be encoded to generate a bitstream. Yes. Or, if part of the bitstream is missing due to packet loss or other reasons, decoding may be necessary. The result may be such a merge index. When attempting to decode the trim, it tries to access an incorrect location outside the accessible region. The decryption device may access the decryption image memory. As a result, the decryption result may be accessed by the decryption device. They may differ, or the decoding process may stop. On the other hand, when correcting the reference position in the present invention In this, all block vectors in the constructed block vector candidate list are in the accessible region. It will be inside. Therefore, even if such an incomplete bitstream is decoded, the referable area The reference position is corrected to be inside the region, making it possible to reference. In this way, the reference position is corrected. This ensures the memory access range. As a result, the decoding result is the same regardless of the decoding device. This allows the decoding process to continue, thus improving the robustness of the decoding device.
[0214] Furthermore, when correcting the block vector in the reference position correction, the target is the luminance block. This is a block vector. Here, the block vector of chrominance is the block vector of luminance. It is calculated from this. In other words, if you correct the luminance block vector, the chrominance block vector This will also be corrected. Therefore, there is no need to correct the reference position again in terms of color difference. It is necessary to determine whether the luminance and chrominance can be referenced without correcting the block vector. Compared to having [this method], it can reduce the amount of processing required.
[0215] In addition, when correcting the block vector in the correction of the reference position, the corrected block The vector is stored in the encoding information storage memory as the block vector of the encoding block to be processed. 111 or it is stored in the encoded information storage memory 205. In other words, the corrected reference position and The lock vectors point to the same position. Now, the decoding result is stored in the decoded image memory. Sometimes, deblocking filtering is performed. In this filtering process, block boundaries The filter strength is controlled by the difference in block vectors between two blocks facing the boundary. To control. If the block vector is not corrected, the corrected reference position and the block vector will Compared to pointing to different locations, this results in a more appropriate filter strength, thus improving encoding efficiency. It can be made to happen.
[0216] Next, we check whether the reference position in the y-direction of the reference block is smaller than the top-left corner of the referenced area. Determine (S6006). If the determination is false (S6006: NO), proceed to the next process (S6008 Proceed to (). On the other hand, if the judgment is true (S6006:YES), align to the top left of the referenced area. Then correct the reference position in the y direction (S6007).
[0217] If reference block r4 is currently located at 6021, then the reference position in the y direction is the reference It is smaller than the top left of the possible region (S6006:YES). Therefore, yRefTL = yAvlTL = 60 The reference position is corrected to position 22 (S6007). Here, as in S6001, yRef Since BR = yRefTL + cbHeight - 1, correcting yRefTL also corrects yRefBR. This is the result. In this correction of the reference position, the block vector mvL[1] may also be corrected. Mari, mvL[1] = (yAvlTL - yCb) << 4 This corrects the reference position, resulting in yRefTL=yAvlTL.
[0218] Next, we check whether the reference position of the reference block in the x-direction is greater than the bottom right corner of the referenced area. Determine (S6008). If the determination is false (S6008: NO), proceed to the next process (S6010 Proceed to (). On the other hand, if the judgment is true (S6008:YES), align to the bottom right of the referenced area. Then correct the reference position in the x direction (S6009).
[0219] If reference block r7 is currently located at 6031, then the reference position in the x direction is the reference It is larger than the bottom right of the possible area (S6008:YES). Therefore, xRefBR = xAvlBR = 60 The reference position is corrected to position 32 (S6009). Here, xRef is used as shown in S6001. Since BR = xRefTL + cbWidth - 1, that is, xRefTL = xRefBR - (cbWidth - 1), xRefBR was corrected. Consequently, xRefTL will also be corrected. In this correction of the reference position, blockbe The ctr mvL[0] can be corrected. That is, mvL[0] = (xAvlBR - (xCb + cbWidth - 1)) << 4 This corrects the reference position, resulting in xRefBR = xAvlBR.
[0220] Next, we check whether the reference position of the reference block in the y-direction is greater than the bottom right of the referenced area. The determination is made (S6010). If the determination is false (S6010: NO), the process is terminated. If the check is true (S6010:YES), the reference in the y direction is aligned with the bottom right of the referenced area. Correct the position (S6011).
[0221] If reference block r5 is currently located at 6041, then the reference position in the y direction is the reference It is larger than the bottom right of the possible area (S6010:YES). Therefore, yRefBR = yAvlBR = 60 The reference position is corrected to position 42 (S6011). Here, as in S6001, yRef Since BR = yRefTL + cbHeight - 1, that is, yRefTL = yRefBR - (cbHeight - 1), we correct yRefBR. Consequently, yRefTL will also be corrected. In this correction of the reference position, block The vector mvL[1] may be corrected. That is, mvL[1] = (yAvlBR - (yCb + cbHeitght - 1)) << 4 This corrects the reference position, resulting in yRefBR=yAvlBR.
[0222] Now, let's consider the case where the reference block r1 is located at 6051. Furthermore, the reference position in the x-direction is corrected, similar to the case where the reference block is r2. Similar to the case where r4 is used, the reference position in the y direction is corrected. As a result, reference block r1 is... It is located at 6052, which is inside the illuminated area.
[0223] If reference block r3 is located at 6061, then reference block r6 is located at 6062. If so, and if reference block r8 is located at 6063, then the same as above for both x and y directions. The reference positions are corrected. As a result, each reference block is located within the referential area. do.
[0224] The above concludes the processing for cases where the CTU size is not 128x128 pixels. In the case of a 128x128 pixel area (S6002:YES), the top left corner when the referenced area is rectangular. And calculate the position of the bottom right (S6012).
[0225] Figure 50 is a diagram illustrating the positions of the upper left and lower right corners when the referential area is rectangular. In the case of Figure 50A, the encoding tree block 6101 to be processed is divided into four parts, The target encoding block 6102 is located in the upper left of the division. The area will be in the shape of an inverted L, as shown in the shaded area within 6103. If the referable area is rectangular, The range will be a rectangular area of 6103. If the referable area is rectangular, the referable block If we let the top left of the block be (xRefTL, yRefTL) and the bottom right be (xRefBR, yRefBR), offset[4] = {0, 64, 128, 128} NL = -offset[3 - blk_idx], NR = offset[blk_idx] ( xAvlTL, yAvlTL ) = ( (xCb >> CtbLog2SizeY) << CtbLog2SizeY + NL, (yCb >> CtbLog2SizeY) << CtbLog2SizeY ) ( xAvlBR, yAvlBR ) = ( ((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1 + NR, (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 ) This is the result. Here, blk_idx is an index indicating the position of the coded block to be processed. The encoding tree block to be processed is divided into four parts, and the encoding block to be processed is on the left. If it is located above, set blk_idx=0. Similarly, if the coded block to be processed is If they are located in the upper right, lower left, and lower right, respectively, then blk_idx will be 1, 2, and 3. Figure 50A shows blk_id This figure shows the case where x=0. Similarly, Figures 50B to 50D show the cases where blk_idx=1 to 3, respectively. This figure shows the case.
[0226] Next, the reference position of the non-rectangular portion of the referenceable area is corrected (S6013). Figure 51 shows This flowchart explains the process of correcting the reference position in areas where the referenceable region is not rectangular. Yes. First, calculate the position of the upper left corner of the referenced area (S6021). The referenced area is shown in Figure 5. Since it is the shaded area of 0, except for the case where blk_idx=3, the top left position is one of two points, 6111 and 6112. Let (X1, Y1) and (X2, Y2) be respectively. offset[4] = {64, 128, 64, 0}, NL = offset[blk_idx] (X1, Y1) = (xAvlTL, yAvlTL + 64) (X2, Y2) = (xAvlTL + NL, yAvlTL) This is the result.
[0227] Next, it is determined whether or not to correct the reference position to align with the upper left of the referenceable area (S602 2) This determination is made if blk_idx=3 and the referenced block is located in an area smaller than X2 and Y1. Determine as true if it is present (S6022:YES). If false (S6022:NO). Then, proceed to the next process (S6026).
[0228] Next, the difference between the reference block and the referenced region in the x direction is the difference between the reference block and the referenced region. Determine whether it is smaller than the difference in the y direction (S6023). If the determination is true (S60 23:YES), correct the reference position in the x direction (S6024). On the other hand, if the judgment is false ( S6023: NO), correct the reference position in the y direction (S6025).
[0229] Figure 52A shows how the reference position is corrected in S6024 and S6025. Currently, blk_idx=0. If the reference block r1 was located at 6201, then blk_i dx=3, and the top left of the reference block is X2 (x direction of 6112) and Y1 (y direction of 6111). It is located in a smaller area (S6022:YES). It is also referential to the reference block. The difference between the region and the x-direction is smaller than the difference between the reference block and the referenced region in the y-direction (S6). 023:YES). Therefore, xRefTL = xAvlTL + NL, and the reference position in the x direction is at position 6202. Correct (S6024). Here, as in S6001, xRefBR = xRefTL + cbWidth - 1 Therefore, correcting xRefTL will also correct xRefBR. In the correction of the position, the block vector mvL[0] may also be corrected. That is, mvL[0] = (xAvlTL + NL - xCb) << 4 This is corrected. As a result, xRefTL = xAvlTL + NL, so the reference position can be corrected.
[0230] On the other hand, if the reference block r2 was located at 6203, then blk_idx=3 and the reference The upper left corner of the illuminated block is located in an area smaller than X2 (x direction of 6112) and Y1 (y direction of 6111). It is located (S6022:YES). Also, the difference between the reference block and the x-direction of the referenced area. The minutes are not less than the difference in the y-direction between the referenced block and the referenced region (S6023:NO Therefore, the reference position in the y direction is corrected to 6204 by setting yRefTL = yAvlTL + 64 (S 6025). Here, as shown in S6001, yRefBR = yRefTL + cbHeight - 1, so yR As a result of correcting efTL, yRefBR will also be corrected. Therefore, the block vector mvL[0] can be corrected. In other words, mvL[1] = (yAvlTL + 64 - yCb) << 4 This is corrected. As a result, yRefTL = yAvlTL + 64, so the reference position can be corrected.
[0231] Now, let's assume that the reference block r3 is located at 6205. In this case, the reference block and The difference between the referenced region and the x-direction is smaller than the difference between the referenced block and the referenced region in the y-direction. (S6023:YES). Therefore, correct the reference position in the x direction, similar to the reference block r1. This results in the location being 6206 (S6024). At this point, the reference block is a reference It is outside the possible region. However, due to the processing in S6006 and S6007 described later, the y-direction The reference location is corrected. Ultimately, the referenced block will be inside the referenced area.
[0232] Next, calculate the position of the lower right corner of the referenced area (S6026). The referenced area is shown in Figure 50. Since it is the shaded area, except for the case where blk_idx=0, there are two points in the lower right position: 6113 and 6114. Let them be (X3, Y3) and (X4, Y4), offset[4] = {0, 64, 128, 64}, NR = offset[blk_idx] (X3, Y3) = (xAvlBR, yAvlBR - 64) (X4, Y4) = (xAvlBR - NR, yAvlBR) This is the result.
[0233] Next, it is determined whether or not to correct the reference position to align with the lower right corner of the referenceable area (S602 7) This determination is made if blk_idx=0 and the referenced block is located in an area greater than X4 and Y3. Determine as true if it is present (S6027:YES). If false (S6027:NO). The process will now terminate.
[0234] Next, the difference between the reference block and the referenced region in the x direction is the difference between the reference block and the referenced region. Determine whether it is smaller than the difference in the y direction (S6028). If the determination is true (S60 28:YES), correct the reference position in the x direction (S6029). On the other hand, if the judgment is false ( S6028:NO), correct the reference position in the y direction (S6030).
[0235] Figure 52B shows how the reference position is corrected in S6029 and S6030. Currently, blk_idx=3. If the reference block r1 was located at 6211, then blk_i dx=0, and the bottom right of the reference block is X4 (x direction of 6114) and Y3 (y direction of 6113). It is located in a larger area (S6027:YES). It is also referential to the referenced block. The difference between the region and the x-direction is smaller than the difference between the reference block and the referenced region in the y-direction (S6). 028:YES). Therefore, by setting xRefBR=xAvlBR, the reference position in the x direction is added at position 6212. Correct (S6029). Here, as in S6001, xRefBR = xRefTL + cbWidth - 1, Since xRefTL = xRefBR - (cbWidth - 1), when xRefBR is corrected, xRefTL is also corrected. This will be corrected. In this correction of the reference position, the block vector mvL[0] is corrected That's good too. mvL[0] = (xAvlBR - NR - (xCb + cbWitdh - 1)) << 4 This corrects the reference position, resulting in xRefBR = xAvlBR.
[0236] On the other hand, if the reference block r2 was located at 6213, then blk_idx=0 and the reference The lower right corner of the illuminated block is located in an area greater than X4 (x direction of 6114) and Y3 (y direction of 6113). It is placed (S6027:YES). Also, the difference between the reference block and the x-direction of the referenced area. The minutes are not less than the difference in the y-direction between the referenced block and the referenced region (S6028:NO Therefore, the y-direction reference position is corrected to 6214 by setting yRefBR = yAvlBR (S60 30). Here, as in S6001, yRefBR = yRefTL + cbHeight - 1, that is, yRefTL = yRe Since fBR - (cbHeight - 1), correcting yRefBR also corrects yRefTL. Yes. In this correction of the reference position, the block vector mvL[1] may also be corrected. , mvL[1] = (yAvlBR - 64 - (yCb + cbHeight - 1)) << 4 This corrects the reference position, resulting in yRefBR=yAvlBR.
[0237] Now, let's assume that the reference block r3 is located at 6215. In this case, the reference block and The difference between the referenced region and the x-direction is smaller than the difference between the referenced block and the referenced region in the y-direction. (S6028:NO). Therefore, correct the reference position in the y direction, similar to reference block r2. This results in the location at 6216 (S6030). At this point, the reference block is located at 6216. It is outside the illuminated area. However, due to the processing in S6008 and S6009 described later, the x direction The reference location is corrected. Ultimately, the referenced block will be inside the referenced area.
[0238] Figure 52 illustrates the process of correcting the reference position using the cases blk_idx=0 and 3 as examples. In cases 1 and 2, the process to correct the reference position is performed in the same way as in cases blk_idx=0 and 3.
[0239] After the process of correcting the reference position of the non-rectangular portion of the referenceable area (S6013), S60 Process from 04 to S6011. The above describes the processing when the CTU size is 128x128 pixels. It will end.
[0240] Currently, in the process (S6013) of correcting the reference position for parts of the referenceable area that are not rectangular, Then, a process (S6024) is performed to correct the reference position in the x direction to align with the upper left of the referenceable area. Let's assume that the reference position of the reference block in the x-direction is smaller than the top left of the referenced area. Since this will never happen, the S6004 judgment will always be false (S6004: NO). Therefore, If you have processed S6024, you can skip processing S6004 and S6005. Similarly, if process S6025 is performed, processes S6006 and S6007 will not be performed. Alternatively, if you process S6029, you can skip processing S6008 and S6009. Alternatively, if you perform the S6030 process, you can perform the S6010 and S6011 processes. It's okay to leave it out.
[0241] Furthermore, in the flowchart of Figure 51, the comparison process in step S6023 is omitted, You could configure it to execute step S6024, or always step S6025 You may also adopt a configuration that performs the following. Similarly, you can omit the comparison process in step S6028. Alternatively, you could configure it to always execute step S6029, or always execute step S60 A configuration that executes 30 is also acceptable. In such a configuration, a simpler process is used. It becomes possible to correct the illumination position.
[0242] In Figure 48, when the size of the CTU is 128x128 pixels, S6012, S6013 and The reference position is corrected using the processing from S6004 to S6011. Instead, Figure As shown in 53, the process of splitting the referential region into two and correcting the reference position of each (S6) This can also be achieved by method 101).
[0243] Figure 54 is a diagram illustrating how the referential region is divided into two parts. Unlike the case where the illuminated area is rectangular, in Figure 54 the recognizable area is divided into two parts. Yes. Of the four parts of the encoding tree block (6101) to be processed, the code to be processed is... If the modified block (6102) is located in the upper left, set blk_idx=0. Similarly, process If the target encoding blocks are located in the upper right, lower left, and lower right, then blk_idx is 1, 2 Let's set it to 3. Figure 54A shows the case where blk_idx=0. Similarly, Figures 54B to 54D The figures show the cases where blk_idx=1 to 3, respectively. Also, the accessible area (630 Let 1) be the accessible area A, and the other accessible area (6302) be the accessible area B.
[0244] Figure 55 shows the process of splitting the referential region into two parts and correcting the reference position of each part (S61 This is a flowchart explaining 01). In Figure 55, the same process as in Figure 48 is the same... Step numbers are assigned, and explanations are omitted. First, calculate the positions of the top left and bottom right of the referenced area A. Output (S6111). The top left of the accessible region A is (xAvlTL, yAvlTL), and the bottom right is (xAvlBR, If we set it to yAvlBR, xOffsetTL[4] = {-128, -128, -64, 0}, yOffsetTL[4] = {64, 64, 64, 0} xOffsetBR[4] = {0, 0, 0, 128}, yOffsetBR[4] = {128, 128, 128, 64} ( xAvlTL, yAvlTL ) = ( (xCb >> CtbLog2SizeY) << CtbLog2SizeY + xOffsetTL[blk_idx], (yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL[blk_idx]) ( xAvlBR, yAvlBR ) = ( ((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1 + xOffsetBR[blk_idx], (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR[blk_idx] ) This is the result.
[0245] Next, regarding whether the referenced block is outside of the referenced area A, out_xRefTL = xRefTL < xAvlTL out_yRefTL = yRefTL < yAvlTL out_xRefBR = xRefBR > xAvlBR out_yRefBR = yRefBR > yAvlBR It is calculated as follows (S6112).
[0246] Next, calculate the top-left and bottom-right positions of the referenced area B (S6113). If the upper left corner of region B is (xAvlTL, yAvlTL) and the lower right corner is (xAvlBR, yAvlBR), xOffsetTL[4] = {-64, 0, 0, 0}, yOffsetTL[4] = {0, 0, 0, 0} xOffsetBR[4] = {0, 64, 128, 64}, yOffsetBR[4] = {128, 64, 64, 128} ( xAvlTL, yAvlTL ) = ( (xCb >> CtbLog2SizeY) << CtbLog2SizeY + xOffsetTL[blk_idx], (yCb >> CtbLog2SizeY) << CtbLog2SizeY + yOffsetTL[blk_idx]) ( xAvlBR, yAvlBR ) = ( ((xCb >> CtbLog2SizeY) << CtbLog2SizeY) - 1 + xOffsetBR[blk_idx], (((yCb >> CtbLog2SizeY) + 1) << CtbLog2SizeY) - 1 + yOffsetBR[blk_idx] ) This is the result.
[0247] Next, the reference position in the x-direction of the reference block is smaller than the top left of the referenced area A, and the reference Determine whether the x-direction reference position of the block is smaller than the top left of the referenced region B (S6). 114). If the judgment is false (S6114: NO), proceed to the next process (S6116). If the judgment is true (S6114: YES), the x-direction is aligned with the upper left of the referenced region B. Correct the illumination position (S6005). The process for S6005 has already been explained, so I will explain it again. Omitted.
[0248] Next, the reference position in the y-direction of the reference block is smaller than the top left of the referenced area A, and Determine whether the reference position in the y-direction of the light block is smaller than the upper left corner of the referenceable area B (S 6116). If the judgment is false (S6116: NO), proceed to the next process (S6118). If the judgment is true (S6116: YES), then align the upper left corner of the accessible region B with the y-direction. Correct the reference position (S6007). The process for S6007 has already been explained, so please refer to the explanation below. Omit it.
[0249] Next, the reference position in the x-direction of the reference block is greater than the lower right of the referenced area A, and the reference Determine whether the x-direction reference position of the block is greater than the bottom right of the referenced area B (S6). 118). If the judgment is false (S6118: NO), proceed to the next process (S6120). If the judgment is true (S6118: YES), the x-direction is aligned with the lower right of the referenced area B. Correct the illumination position (S6009). The process for S6009 has already been explained, so I will not explain it further. Omitted.
[0250] Next, the reference position in the y-direction of the reference block is greater than the lower right of the referenced area A, and the reference Determine whether the block's y-direction reference position is greater than the bottom right of the referenced region B (S6). 120). If the judgment is false (S6120: NO), the process terminates. On the other hand, if the judgment is true, If (S6120:YES), correct the reference position in the y direction to align with the lower right of the referenceable area B. (S6011). The process for S6011 has already been explained, so the explanation will be omitted.
[0251] Based on the above, when the size of the CTU is 128x128 pixels, the reference block is the accessible area. Even if it is located outside of the reference area, the reference location can be corrected and it can be referenced. By splitting the domain into two parts and correcting the reference positions of each, the processing is simplified and the amount of computation is reduced. It can be reduced. Here, one of the accessible areas (6301) is referred to as accessible area A. The other accessible area (6302) is designated as accessible area B. Swap region A and accessible region B, and make one of the accessible regions (6301) accessible region B Alternatively, the other accessible area (6302) may be treated as accessible area A.
[0252] In this embodiment, it is determined whether the size of the CTU is 128x128 pixels or not (S6002), and the processing is stopped. It is being replaced. This is because the intrablock copy reference block is replaced with the encoded tree block. You could also determine whether it's a unit divided into four parts or not, or the size of the CTU is the size of the encoded block. You could also determine whether the size is larger than the large size.
[0253] All of the embodiments described above may be combined in any way.
[0254] In all the embodiments described above, the bitstream output by the image encoding device This allows specific data to be decoded according to the encoding method used in the embodiment. It has a multi-format. The bitstream is HDD, SSD, flash memory. Alternatively, the recording may be made on a recording medium that can be read by a computer, such as an optical disc, and provided to the user. It may also be provided from the server via a wired or wireless network. Therefore, this image The image decoding device corresponding to the image encoding device, regardless of the means provided, this specific data format It can decrypt the bitstream of a string.
[0255] To exchange bitstreams between the image encoding device and the image decoding device, a wired connection is used. Alternatively, when a wireless network is used, the data format should be suitable for the transmission method of the communication channel. The stream may be converted and transmitted. In that case, the bits output by the image encoding device The stream is converted into encoded data in a data format suitable for the transmission method of the communication channel and then used for networking. A transmitting device that sends data to the network, and a device that receives encoded data from the network and converts it into a bitstream. A receiving device is provided which supplies the image to the image decoding device. The transmitting device is provided which the image encoding device Memory to buffer the output bitstream, and the bitstream to be packetized. Packet processing unit and transmission unit that sends packetized encoded data over the network. The receiving device receives packetized encoded data via the network. A receiving unit, a memory that buffers the received encoded data, and a packet that stores the encoded data. It includes a packet processing unit that processes the data to generate a bitstream and provides it to an image decoding device.
[0256] To exchange bitstreams between the image encoding device and the image decoding device, a wired connection is used. Alternatively, when a wireless network is used, in addition to the transmitting device and receiving device, the transmitting device A relay device may be provided to receive encoded data transmitted by the device and supply it to the receiving device. The relay device includes a receiving unit that receives packetized encoded data transmitted by the transmitting device, and a receiving unit. Memory to buffer the transmitted encoded data, and packetized encoded data and network It includes a transmitting unit that transmits to the network. Furthermore, the relay device transmits the packetized encoded data A receiving packet processing unit that processes packets and generates a bitstream, and a bitstream Includes a recording medium for storing data and a transmission packet processing unit that packets the bitstream. That's good too.
[0257] Furthermore, by adding a display unit to the configuration that displays the image decoded by the image decoding device, the display It can also be used as a device. In that case, the display unit is generated by the decoded image signal superposition unit 207, and The decoded image signal stored in the image memory 208 is read out and displayed on the screen.
[0258] Furthermore, by adding an imaging unit to the configuration and inputting the captured image into an image encoding device, It can also be used as a device. In that case, the imaging unit inputs the captured image signal into the block division unit 101. To exert force.
[0259] Figure 37 shows an example of the hardware configuration of the encoding / decoding device of this embodiment. The device in question includes the configuration of an image encoding device and an image decoding device according to an embodiment of the present invention. The encoding / decoding device 9000 comprises a CPU 9001, a codec IC 9002, and an I / O interface 9003, memory 9004, optical disk drive 9005, network It has a work interface 9006 and a video interface 9009, and each part is a bus Connected by 9010.
[0260] The image encoding unit 9007 and the image decoding unit 9008 are typically connected to the codec IC 9002. It is implemented as follows. The image coding process of the image coding device according to an embodiment of the present invention is an image code This is performed by the numbering unit 9007, and is an image decoding in an image decoding device according to an embodiment of the present invention. The image decoding process is performed by the image decoding unit 9008. The I / O interface 9003 is For example, this is achieved via a USB interface, and an external keyboard 9104 and mouse 91 Connects to 05 etc. The CPU 9001 receives input via I / O interface 9003. Based on user input, the encoding / decoding device 90 performs the operation desired by the user. Control 00. User operations using keyboard 9104, mouse 9105, etc. Select whether to perform encoding or decoding, set encoding quality, bitstream This includes input / output destinations for data, image input / output destinations, etc.
[0261] When the user wishes to play back images recorded on the disk recording medium 9100 The optical disc drive 9005 receives bits from the inserted disc recording medium 9100. The stream is read, and the read bitstream is sent to codec I via bus 9010. The bitstream is sent to the image decoding unit 9008 of the C9002. The image decoding unit 9008 processes the input bitstream. The image decoding process in the image decoding device according to the embodiment of the present invention is performed on the object, and the decoding The image is sent to the external monitor 9103 via the video interface 9009. Also, The encoding / decoding device 9000 has a network interface 9006, and the network It is possible to connect to an external distribution server 9106 or a mobile terminal 9107 via the 9101. The user can change the image recorded on the disk recording medium 9100 to the distribution server 9106. If you wish to play back images recorded on the mobile terminal 9107, you will need to use the network. The interface 9006 receives the bitstream from the input disk recording medium 9100. Instead of reading, the bitstream is obtained from network 9101. If the user wishes to play back an image stored in memory 9004, memory 9 The image decoding device according to an embodiment of the present invention processes the bitstream recorded in 004. Perform image decoding processing in the specified location.
[0262] The image captured by the user with the external camera 9102 is encoded and recorded in memory 9004. If operation is desired, the video interface 9009 receives images from camera 9102. The image is then sent via bus 9010 to the image encoding unit 9007 of codec IC 9002. The image encoding unit 9007 processes the image input via the video interface 9009. The image encoding process in the image encoding device according to an embodiment of the present invention is performed, and the bitst Create a memory. Then, send the bitstream to memory 9004 via bus 9010. Send. The user changes memory 9004 and sends the bitstory to disk storage medium 9100. If you wish to record a disc, the optical disc drive 9005 will record the inserted disc. The bitstream is written to the storage medium 9100.
[0263] Hardware configurations that have an image encoding device but no image decoding device, or hardware configurations that have an image decoding device It is also possible to realize a hardware configuration that does not include an image encoding device. The hardware configuration is, for example, that the codec IC9002 is the image encoding unit 9007, or This is achieved by replacing each of the image decoding units 9008 with their respective components.
[0264] The above encoding and decoding processes are performed using hardware-based transmission, storage, and receiving devices. Of course, it would be fine to implement this using ROM (Read-Only Memory) and flash memory. The actual operation is carried out by firmware stored in memory, etc., and software on computers, etc. It is acceptable to reveal the firmware program, the software program, on the computer. It may be recorded and provided on a recording medium that can be read by, for example, a wired or wireless network. It can be provided from the server via the network, or data from terrestrial or satellite digital broadcasting. It's acceptable to offer it as a broadcast.
[0265] The present invention has been described above based on embodiments. The embodiments are illustrative and their respective components The combination of constituent elements and each processing process can be varied in many ways, and such variations Those skilled in the art will understand that the examples also fall within the scope of the present invention. [Explanation of symbols]
[0266] 100 Image encoding device, 101 Block division unit, 102 Interpretation unit, 103 Intra prediction unit, 104 Decoded image memory, 105 Prediction method determination unit, 10 6 Residual generation unit, 107 Orthogonal transformation / quantization unit, 108 Bit sequence encoding unit, 10 9 Inverse quantization / inverse orthogonal transform section, 110 Decoded image signal superposition section, 111 Encoded information section Storage memory, 200 image decoding unit, 201 bit sequence decoding unit, 202 blocks Splitting section, 203 Interpretation section, 204 Intraprediction section, 205 Encoded information section Storage memory, 206 Inverse quantization / inverse orthogonal transform unit, 207 Decoded image signal superposition unit, 20 8. Decoded image memory.< / poc>
Claims
1. An image encoding device that encodes in units of intrablock copy reference blocks, A block vector candidate list generation unit generates a block vector candidate list by deriving block vector candidates for the target block in the target picture from the encoded information stored in the encoded information storage memory, A history block vector candidate derivation unit that adds history prediction block vector candidates registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation unit that supplements the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A selection unit for selecting a block vector from the block vector candidate list, An encoding unit that encodes a block vector index indicating the position of the selected block vector in the block vector candidate list, A reference position correction unit corrects the reference position of a reference block so that it references the interior of the referenceable region, with respect to the reference block referenced by the selected block vector. The system includes a prediction unit that, based on the reference position of the reference block, obtains the decoded pixels in the picture to be processed from the decoded image memory as predicted values for the block to be processed, The image encoding device is characterized in that the reference position correction unit sets a fixed number of intrablock copy reference blocks encoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as an invalid reference region, regardless of whether the encoding process has been completed or not.
2. An image encoding method that encodes in units of intrablock copy reference blocks, A block vector candidate list generation step involves deriving block vector candidates for the target block within the target picture from the encoded information stored in the encoded information storage memory and generating a block vector candidate list, A history block vector candidate derivation step, which adds a history prediction block vector candidate registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation step of supplementing the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A selection step of selecting a block vector from the aforementioned block vector candidate list, A coding step of encoding a block vector index that indicates the position of the selected block vector in the block vector candidate list, A reference position correction step is performed to correct the reference position of the reference block so that it references the interior of the referenceable region with respect to the reference block referenced by the selected block vector. Based on the reference position of the aforementioned reference block, the decoded pixels in the picture to be processed are, The process includes a prediction step of obtaining a predicted value from the decoded image memory as the predicted value of the block to be processed, The image encoding method is characterized in that the reference position correction step sets a fixed number of intrablock copy reference blocks encoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as invalid reference regions, regardless of whether the encoding process has been completed or not.
3. An image encoding program that encodes in units of intrablock copy reference blocks, A block vector candidate list generation step involves deriving block vector candidates for the target block within the target picture from the encoded information stored in the encoded information storage memory and generating a block vector candidate list, A history block vector candidate derivation step, which adds a history prediction block vector candidate registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation step of supplementing the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A selection step of selecting a block vector from the aforementioned block vector candidate list, A coding step of encoding a block vector index that indicates the position of the selected block vector in the block vector candidate list, A reference position correction step is performed to correct the reference position of the reference block so that it references the interior of the referenceable region with respect to the reference block referenced by the selected block vector. Based on the reference position of the aforementioned reference block, the decoded pixels in the picture to be processed are, The computer is instructed to perform a prediction step, which involves obtaining a predicted value from the decoded image memory as the predicted value of the block to be processed, The image encoding program is characterized in that the reference position correction step sets a fixed number of intrablock copy reference blocks encoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as invalid reference regions, regardless of whether the encoding process has been completed or not.
4. An image decoding device that decodes in units of intrablock copy reference blocks, A block vector candidate list generation unit generates a block vector candidate list by deriving block vector candidates for the target block in the target picture from the encoded information stored in the encoded information storage memory, A history block vector candidate derivation unit that adds history prediction block vector candidates registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation unit that supplements the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A decoding unit that decodes the block vector index indicating the position of the selected block vector in the block vector candidate list, A selection unit that selects the selected block vector from the block vector candidate list based on the block vector index, A reference position correction unit corrects the reference position of a reference block so that it references the interior of the referenceable region, with respect to the reference block referenced by the selected block vector. Based on the reference position of the aforementioned reference block, the decoded pixels in the picture to be processed are, The system includes a prediction unit that obtains a predicted value from a decoded image memory as the predicted value of the block to be processed, The image decoding apparatus is characterized in that the reference position correction unit sets a fixed number of intrablock copy reference blocks that have been decoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as an invalid reference region, regardless of whether the decoding process has been completed or not.
5. An image decoding method that decodes in units of intrablock copy reference blocks, A block vector candidate list generation step involves deriving block vector candidates for the target block within the target picture from the encoded information stored in the encoded information storage memory and generating a block vector candidate list, A history block vector candidate derivation step, which adds a history prediction block vector candidate registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation step of supplementing the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A decoding step of decoding the block vector index that indicates the position of the selected block vector in the block vector candidate list, A selection step of selecting the selected block vector from the block vector candidate list based on the block vector index, A reference position correction step is performed to correct the reference position of the reference block so that it references the interior of the referenceable region with respect to the reference block referenced by the selected block vector. Based on the reference position of the aforementioned reference block, the decoded pixels in the picture to be processed are, The process includes a prediction step of obtaining a predicted value from the decoded image memory as the predicted value of the block to be processed, The image decoding method is characterized in that the reference position correction step sets a fixed number of intrablock copy reference blocks that have been decoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as an invalid reference region, regardless of whether the decoding process has been completed or not.
6. An image decoding program that decodes in units of intrablock copy reference blocks, A block vector candidate list generation step involves deriving block vector candidates for the target block within the target picture from the encoded information stored in the encoded information storage memory and generating a block vector candidate list, A history block vector candidate derivation step, which adds a history prediction block vector candidate registered in the history prediction block vector candidate list to the block vector candidate list, A supplementation step of supplementing the block vector candidate list with (0,0) so that it satisfies the block vector candidate list, A decoding step of decoding the block vector index that indicates the position of the selected block vector in the block vector candidate list, A selection step of selecting the selected block vector from the block vector candidate list based on the block vector index, A reference position correction step is performed to correct the reference position of the reference block so that it references the interior of the referenceable region with respect to the reference block referenced by the selected block vector. Based on the reference position of the aforementioned reference block, the decoded pixels in the picture to be processed are, The computer is instructed to perform a prediction step, which involves obtaining a predicted value from the decoded image memory as the predicted value of the block to be processed, The image decoding program is characterized in that the reference position correction step sets a fixed number of intrablock copy reference blocks that have been decoded immediately before the intrablock copy reference block containing the block to be processed as a referenceable region, and sets intrablock copy reference blocks prior to the referenceable region as an invalid reference region, regardless of whether the decoding process has been completed or not.
7. A storage method for generating a bitstream according to the image encoding method described in claim 2 and storing the bitstream in a recording medium.
8. A transmission method for generating a bitstream according to the image encoding method described in claim 2, and transmitting the bitstream.