Bitstream Transmitter and Bitstream Transmitter Method

JP7936925B2Active Publication Date: 2026-10-16PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2025180344
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2016-11-21
Filing Date
2025-10-27
Publication Date
2026-10-16
Estimated Expiration
2037-11-17

AI Technical Summary

Benefits of technology

【0008】 本開示は、さらなる圧縮効率の向上及び処理負荷の軽減を実現できるビットストリーム送信装置又はビットストリーム送信方法を提供することができる。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007936925000003
    Figure 0007936925000003
  • Figure 0007936925000004
    Figure 0007936925000004
  • Figure 0007936925000005
    Figure 0007936925000005
Patent Text Reader

Abstract

To provide an encoding device capable of further improving compression efficiency and reducing a processing load.SOLUTION: And a memory coupled to the circuitry, wherein the circuitry, when in operation, writes parameters to the bitstream and, when the parameters have first values of at least a split direction and a number of splits, splits a block of a picture into four sub-blocks having a first set of geometries along a first direction based on the first values; In a case that the parameter has a second value different from a first value including at least a split direction and the number of splits, the block of the picture is split into three sub-blocks having a second geometry set different from the first geometry set along the first direction at a ratio of 1:2:1 in a second direction different from the first direction based on the second value, and a bitstream including a parameter related to splitting of the sub-blocks of the block into encodings is transmitted.SELECTED DRAWING: Figure 15
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to a bitstream transmission apparatus and a bitstream transmission method.

Background Art

[0002] A video coding standard called HEVC (High-Efficiency Video Coding) is standardized by JCT-VC (Joint Collaborative Team on Video Coding).

Prior Art Documents

Non-Patent Documents

[0003]

Non-Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] In such coding and decoding technologies, further improvements in compression efficiency and reductions in processing load are demanded.

[0005] Accordingly, the present disclosure provides a bitstream transmission apparatus or a bitstream transmission method capable of achieving further improvements in compression efficiency and reductions in processing load.

Means for Solving the Problems

[0006] A bitstream transmitting device according to one aspect of the present disclosure comprises a circuit and a memory connected to the circuit, wherein the circuit, during operation, writes parameters to a bitstream, and if the parameters have a first value consisting of at least a division direction and a number of divisions, divides a block of a picture into four subblocks having a first geometry set along a first direction based on the first value, and if the parameters have a second value different from the first value consisting of at least a division direction and a number of divisions, divides the block of the picture into three subblocks having a second geometry set different from the first geometry set along the first direction in a ratio of 1:2:1 in the second direction different from the first direction, based on the second value, and transmits a bitstream containing parameters relating to the division of the block into the subblocks.

[0007] These general or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium. [Effects of the Invention]

[0008] This disclosure can provide a bitstream transmission device or bitstream transmission method that can achieve further improvements in compression efficiency and reductions in processing load. [Brief explanation of the drawing]

[0009] [Figure 1] Figure 1 is a block diagram showing the functional configuration of the encoding device according to Embodiment 1. [Figure 2] Figure 2 shows an example of block division in Embodiment 1. [Figure 3] Figure 3 is a table showing the transformation basis functions corresponding to each transformation type. [Figure 4A] Figure 4A shows an example of the filter shape used in ALF. [Figure 4B]Figure 4B shows another example of the filter shape used in ALF. [Figure 4C] Figure 4C shows another example of the filter shape used in ALF. [Figure 5A] Figure 5A shows the 67 intra-prediction modes in intra-prediction. [Figure 5B] Figure 5B is a flowchart illustrating the overview of the predictive image correction process using OBMC processing. [Figure 5C] Figure 5C is a conceptual diagram illustrating the overview of the predictive image correction process using OBMC processing. [Figure 5D] Figure 5D shows an example of FRUC. [Figure 6] Figure 6 illustrates pattern matching (bilateral matching) between two blocks along a motion trajectory. [Figure 7] Figure 7 illustrates pattern matching (template matching) between a template in the current picture and a block in the referenced picture. [Figure 8] Figure 8 is a diagram illustrating a model that assumes uniform linear motion. [Figure 9A] Figure 9A is a diagram illustrating the derivation of subblock-level motion vectors based on the motion vectors of multiple adjacent blocks. [Figure 9B] Figure 9B is a diagram illustrating the overview of the motion vector derivation process using merge mode. [Figure 9C] Figure 9C is a conceptual diagram illustrating the overview of DMVR processing. [Figure 9D] Figure 9D is a diagram illustrating the outline of a predictive image generation method using luminance correction processing by LIC processing. [Figure 10] Figure 10 is a block diagram showing the functional configuration of the decoding device according to Embodiment 1. [Figure 11] Figure 11 is a flowchart showing an example of video encoding processing according to Embodiment 2. [Figure 12]Figure 12 is a flowchart illustrating an example of a video decoding process according to Embodiment 2. [Figure 13] Figure 13 is a flowchart illustrating an example of a video encoding process according to Embodiment 3. [Figure 14] Figure 14 is a flowchart illustrating an example of a video decoding process according to Embodiment 3. [Figure 15] Figure 15 is a flowchart illustrating an example of a video encoding process according to Embodiment 4. [Figure 16] Figure 16 is a flowchart illustrating an example of a video decoding process according to Embodiment 4. [Figure 17] Figure 17 is a flowchart illustrating an example of a video encoding process according to Embodiment 5. [Figure 18] Figure 18 is a flowchart illustrating an example of a video decoding process according to Embodiment 5. [Figure 19] Figure 19 is a flowchart illustrating an example of a video encoding process according to Embodiment 6. [Figure 20] Figure 20 is a flowchart illustrating an example of a video decoding process according to Embodiment 6. [Figure 21] Figure 21 is a flowchart illustrating an example of a video encoding process according to Embodiment 7. [Figure 22] Figure 22 is a flowchart illustrating an example of a video decoding process according to Embodiment 7. [Figure 23] Figure 23 is a flowchart illustrating an example of a video encoding process according to Embodiment 8. [Figure 24] Figure 24 is a flowchart illustrating an example of a video decoding process according to Embodiment 8. [Figure 25] Figure 25 is a flowchart illustrating an example of a video encoding process according to Embodiment 9. [Figure 26] Figure 26 is a flowchart illustrating an example of a video decoding process according to Embodiment 9. [Figure 27] Figure 27 is a flowchart illustrating an example of a video encoding process according to Embodiment 10. [Figure 28] Figure 28 is a flowchart showing an example of video decoding processing according to Embodiment 10. [Figure 29] Figure 29 is a flowchart showing an example of video encoding processing according to Embodiment 11. [Figure 30] Figure 30 is a flowchart showing an example of video decoding processing according to Embodiment 11. [Figure 31] Figure 31 is a flowchart showing an example of video encoding processing according to Embodiment 12. [Figure 32] Figure 32 is a flowchart showing an example of video decoding processing according to Embodiment 12. [Figure 33] Figure 33 is a flowchart showing an example of video encoding processing according to Embodiment 13. [Figure 34] Figure 34 is a flowchart showing an example of the video decoding process according to Embodiment 13. [Figure 35] Figure 35 is a block diagram showing the structure of a video / image encoding device according to an embodiment. [Figure 36] Figure 36 is a block diagram showing the structure of a video / image decoding device according to an embodiment. [Figure 37] Figure 37 shows the possible positions of parameters in a compressed video bitstream. [Figure 38] Figure 38 shows the results of different block divisions depending on the block division information. [Figure 39] Figure 39 shows an example of a combination of block partition structures. [Figure 40] Figure 40 shows an example of modifying a block partition structure. [Figure 41] Figure 41 shows an example of a partitioning method and block partition structure. [Figure 42A] Figure 42A shows an example of a modification to the initial block partition structure. [Figure 42B]Figure 42B shows an example of a modified initial block partition structure. [Figure 42C] Figure 42C shows an example of a modified initial block partition structure. [Figure 43] Figure 43 shows an example of a modified initial block partition structure. [Figure 44] Figure 44 shows the results of different block divisions depending on the geometry. [Figure 45A] Figure 45A shows an example of block division into subblocks of geometry based on the block's geometry. [Figure 45B] Figure 45B shows an example of block division into subblocks of geometry based on the block's geometry. [Figure 45C] Figure 45C shows an example of block division into subblocks of geometry based on the block's geometry. [Figure 45D] Figure 45D shows an example of block division into subblocks of geometry based on the block's geometry. [Figure 46A] Figure 46A shows an example of block division into subblocks of a parameter-based geometry. [Figure 46B] Figure 46B shows an example of block division into subblocks of a parameter-based geometry. [Figure 46C] Figure 46C shows an example of block division into subblocks of a parameter-based geometry. [Figure 46D] Figure 46D shows an example of block division into subblocks of a parameter-based geometry. [Figure 47A] Figure 47A shows an example of dividing a block into a number of subblocks based on the block's geometry. [Figure 47B] Figure 47B shows an example of dividing a block into a number of subblocks based on the block's geometry. [Figure 48A]Figure 48A shows an example of block partitioning into a number of subblocks based on parameters. [Figure 48B] Figure 48B shows an example of block partitioning into a number of subblocks based on parameters. [Figure 48C] Figure 48C shows an example of block partitioning into a number of subblocks based on parameters. [Figure 49A] Figure 49A shows an example of selecting block partitioning information from a set of block partitioning information. [Figure 49B] Figure 49B shows an example of selecting block partitioning information from a set of block partitioning information. [Figure 50] Figure 50 shows an example of block partition structure selection based on predicted block partition structure. [Figure 51] Figure 51 shows an example of sorting a list of block partitioning information. [Figure 52] Figure 52 shows an example of sorting a list of block partitioning information. [Figure 53] Figure 53 shows the encoding bits of the partition selection parameters and their meanings. [Figure 54] Figure 54 is an overall diagram of the content supply system that realizes the content distribution service. [Figure 55] Figure 55 shows an example of an encoding structure during scalable encoding. [Figure 56] Figure 56 shows an example of an encoding structure during scalable encoding. [Figure 57] Figure 57 shows an example of how a web page is displayed. [Figure 58] Figure 58 shows an example of how a web page is displayed. [Figure 59] Figure 59 shows an example of a smartphone. [Figure 60] Figure 60 is a block diagram showing an example of a smartphone configuration. [Modes for carrying out the invention]

[0010] (Knowledge that forms the basis of this disclosure) In conventional image and video encoding and decoding methods, images are divided into blocks, and encoding and decoding are performed at the block level. Recent video standards allow encoding and decoding to be performed with various block sizes other than the usual 8x8 or 16x16. For example, image encoding and decoding can use a size range from 4x4 to 256x256.

[0011] To represent a block size range from 4x4 to 256x256, block partitioning information, such as the partitioning mode (e.g., quadtree partitioning mode and binary tree partitioning mode) and partitioning flag (e.g., split flag), is determined for each block and then converted into a signal. The overhead of this signal conversion increases as the partitioning depth increases. And as the overhead increases, the overall video compression efficiency decreases.

[0012] Therefore, this disclosure provides an encoding device and a decoding device that can reduce the amount of code related to block partitioning information and improve compression efficiency.

[0013] The embodiments will be described in detail below with reference to the drawings.

[0014] The embodiments described below are all comprehensive or specific examples. The numerical values, shapes, materials, components, arrangement and connection configurations of components, steps, and the order of steps shown in the following embodiments are examples only and are not intended to limit the scope of the claims. Furthermore, among the components in the following embodiments, those not described in the independent claim representing the highest-level concept will be described as optional components.

[0015] (Embodiment 1) First, an overview of Embodiment 1 will be given as an example of an encoding and decoding device to which the processes and / or configurations described in each aspect of this disclosure, described later, can be applied. However, Embodiment 1 is merely an example of an encoding and decoding device to which the processes and / or configurations described in each aspect of this disclosure can be applied, and the processes and / or configurations described in each aspect of this disclosure can also be implemented in encoding and decoding devices different from Embodiment 1.

[0016] When applying the processes and / or configurations described in each aspect of this disclosure to Embodiment 1, for example, one of the following may be performed:

[0017] (1) With respect to the encoding or decoding device of Embodiment 1, replace the component corresponding to the component described in each aspect of the disclosure with the component described in each aspect of the disclosure, among the plurality of components constituting the encoding or decoding device. (2) With respect to the encoding or decoding device of Embodiment 1, any modifications such as adding, replacing, or deleting functions or processes performed by some of the multiple components constituting the encoding or decoding device are made, and then the components corresponding to the components described in each aspect of the Disclosure are replaced with the components described in each aspect of the Disclosure. (3) Adding processing to and / or replacing, deleting, or otherwise modifying some of the processing included in the method performed by the encoding or decoding device of Embodiment 1, and then replacing the processing corresponding to the processing described in each aspect of the Disclosure with the processing described in each aspect of the Disclosure. (4) Combining some of the multiple components constituting the encoding or decoding device of Embodiment 1 with a component described in each aspect of the Disclosure, a component that has some of the functions of the component described in each aspect of the Disclosure, or a component that performs some of the processing performed by the component described in each aspect of the Disclosure. (5) A component that has some of the functions of some of the components constituting the encoding or decoding device of Embodiment 1, or a component that performs some of the processing performed by some of the components constituting the encoding or decoding device of Embodiment 1, in combination with a component described in each aspect of this disclosure, a component that has some of the functions of the components described in each aspect of this disclosure, or a component that performs some of the processing performed by the components described in each aspect of this disclosure. (6) With respect to the method performed by the encoding or decoding device of Embodiment 1, replace with the process corresponding to the process described in each aspect of the Disclosure among the multiple processes included in the method with the process described in each aspect of the Disclosure. (7) Performing some of the processes included in the method performed by the encoding or decoding device of Embodiment 1 in combination with the processes described in each aspect of the present disclosure.

[0018] The methods of implementing the processes and / or configurations described in each aspect of this disclosure are not limited to the examples above. For example, they may be implemented in a device used for a purpose other than the video / image encoding device or video / image decoding device disclosed in Embodiment 1, or the processes and / or configurations described in each embodiment may be implemented individually. Furthermore, the processes and / or configurations described in different embodiments may be implemented in combination.

[0019] [Overview of the coding device] First, an overview of the encoding device according to Embodiment 1 will be described. Figure 1 is a block diagram showing the functional configuration of the encoding device 100 according to Embodiment 1. The encoding device 100 is a video / image encoding device that encodes video / images in block units.

[0020] As shown in Figure 1, the encoding device 100 is a device that encodes an image in block units and comprises a division unit 102, a subtraction unit 104, a transformation unit 106, a quantization unit 108, an entropy encoding unit 110, an inverse quantization unit 112, an inverse transformation unit 114, an addition unit 116, a block memory 118, a loop filter unit 120, a frame memory 122, an intra prediction unit 124, an inter prediction unit 126, and a prediction control unit 128.

[0021] The encoding device 100 can be implemented, for example, by a general-purpose processor and memory. In this case, when a software program stored in memory is executed by the processor, the processor functions as a splitting unit 102, a subtraction unit 104, a conversion unit 106, a quantization unit 108, an entropy encoding unit 110, an inverse quantization unit 112, an inverse conversion unit 114, an addition unit 116, a loop filter unit 120, an intra prediction unit 124, an inter prediction unit 126, and a prediction control unit 128. Alternatively, the encoding device 100 may be implemented as one or more dedicated electronic circuits corresponding to the splitting unit 102, a subtraction unit 104, a conversion unit 106, a quantization unit 108, an entropy encoding unit 110, an inverse quantization unit 112, an inverse conversion unit 114, an addition unit 116, a loop filter unit 120, an intra prediction unit 124, an inter prediction unit 126, and a prediction control unit 128.

[0022] The following describes each component included in the encoding device 100.

[0023] [Divided part] The splitting unit 102 divides each picture contained in the input video into multiple blocks and outputs each block to the subtraction unit 104. For example, the splitting unit 102 first divides the picture into blocks of a fixed size (e.g., 128x128). These fixed-size blocks are sometimes called coding tree units (CTUs). Then, based on recursive quadtree and / or binary tree block partitioning, the splitting unit 102 divides each of the fixed-size blocks into blocks of a variable size (e.g., 64x64 or less). These variable-size blocks are sometimes called coding units (CUs), prediction units (PUs), or transformation units (TUs). In this embodiment, CUs, PUs, and TUs do not need to be distinguished, and some or all of the blocks in the picture may become processing units for CUs, PUs, and TUs.

[0024] Figure 2 shows an example of block partitioning in Embodiment 1. In Figure 2, solid lines represent block boundaries due to quadtree block partitioning, and dashed lines represent block boundaries due to binary tree block partitioning.

[0025] Here, block 10 is a 128x128 pixel square block (128x128 block). This 128x128 block 10 is first divided into four 64x64 square blocks (quadtree block partitioning).

[0026] The top-left 64x64 block is further divided vertically into two rectangular 32x64 blocks, and the left 32x64 block is further divided vertically into two rectangular 16x64 blocks (binary tree block partitioning). As a result, the top-left 64x64 block is divided into two 16x64 blocks 11 and 12 and a 32x64 block 13.

[0027] The 64x64 block in the upper right is horizontally divided into two rectangular 64x32 blocks, 14 and 15 (binary tree block division).

[0028] The bottom-left 64x64 block is divided into four square 32x32 blocks (quadrutree block division). Of the four 32x32 blocks, the top-left and bottom-right blocks are further divided. The top-left 32x32 block is vertically divided into two rectangular 16x32 blocks, and the rightmost 16x32 block is further horizontally divided into two 16x16 blocks (binary tree block division). The bottom-right 32x32 block is horizontally divided into two 32x16 blocks (binary tree block division). As a result, the bottom-left 64x64 block is divided into 16x32 block 16, two 16x16 blocks 17 and 18, two 32x32 blocks 19 and 20, and two 32x16 blocks 21 and 22.

[0029] The 64x64 block 23 in the bottom right will not be divided.

[0030] As described above, in Figure 2, block 10 is divided into 13 variable-sized blocks 11-23 based on recursive quad-tree and binary tree block partitioning. Such partitioning is sometimes called QTBT (quad-tree plus binary tree) partitioning.

[0031] In Figure 2, one block was divided into four or two blocks (quadrutree or binary tree block partitioning), but the partitioning is not limited to these. For example, one block may be divided into three blocks (ternary tree block partitioning). Partitioning that includes such ternary tree block partitioning is sometimes called MBT (multi-type tree) partitioning.

[0032] [Subtraction Unit] The subtraction unit 104 subtracts the predicted signal (predicted sample) from the original signal (original sample) in block units divided by the division unit 102. In other words, the subtraction unit 104 calculates the prediction error (also called the residual) of the block to be encoded (hereinafter referred to as the current block). The subtraction unit 104 then outputs the calculated prediction error to the conversion unit 106.

[0033] The source signal is the input signal to the encoding device 100, and is a signal representing the image of each picture that makes up the moving image (for example, a luminance (luma) signal and two chroma (chroma) signals). In the following, the signal representing the image may also be called a sample.

[0034] [Conversion section] The conversion unit 106 converts the prediction error in the spatial domain into conversion coefficients in the frequency domain and outputs the conversion coefficients to the quantization unit 108. Specifically, the conversion unit 106 performs a predetermined discrete cosine transform (DCT) or discrete sine transform (DST) on the prediction error in the spatial domain, for example.

[0035] The transformation unit 106 may also adaptively select a transformation type from among several transformation types and use a transformation basis function corresponding to the selected transformation type to convert the prediction error into transformation coefficients. Such a transformation is sometimes called an EMT (explicit multiple core transform) or an AMT (adaptive multiple transform).

[0036] Multiple transformation types include, for example, DCT-II, DCT-V, DCT-VIII, DST-I, and DST-VII. Figure 3 is a table showing the transformation basis functions corresponding to each transformation type. In Figure 3, N represents the number of input pixels. The selection of a transformation type from among these multiple transformation types may depend, for example, on the type of prediction (intra-prediction and inter-prediction) or on the intra-prediction mode.

[0037] Information indicating whether or not to apply such EMT or AMT (e.g., called an AMT flag) and information indicating the selected conversion type are signaled at the CU level. However, the signaling of this information is not limited to the CU level and may be at other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0038] Furthermore, the transformation unit 106 may retransform the transformation coefficients (transformation results). Such retransformation is sometimes called AST (adaptive secondary transform) or NSST (non-separable secondary transform). For example, the transformation unit 106 performs retransformation for each subblock (e.g., 4x4 subblock) contained in the block of transformation coefficients corresponding to the intra-prediction error. Information indicating whether or not to apply NSST and information regarding the transformation matrix used for NSST are signaled at the CU level. Note that the signaling of this information is not limited to the CU level, but may be at other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0039] Here, a separable transformation is a method in which the input is separated into directions equal to the number of dimensions and transformed multiple times, while a non-separable transformation is a method in which, when the input is multidimensional, two or more dimensions are treated as one dimension and transformed together.

[0040] For example, one example of a non-separable transformation is to treat a 4x4 block as a single array with 16 elements and then perform a transformation on that array using a 16x16 transformation matrix.

[0041] Similarly, the Hypercube Givens Transform, which treats a 4x4 input block as a single array with 16 elements and then performs multiple Givens rotations on that array, is another example of a non-separable transformation.

[0042] [Quantization section] The quantization unit 108 quantizes the conversion coefficients output from the conversion unit 106. Specifically, the quantization unit 108 scans the conversion coefficients of the current block in a predetermined scanning order and quantizes the conversion coefficients based on the quantization parameter (QP) corresponding to the scanned conversion coefficients. The quantization unit 108 then outputs the quantized conversion coefficients of the current block (hereinafter referred to as quantization coefficients) to the entropy coding unit 110 and the inverse quantization unit 112.

[0043] The predetermined order is the order for quantization / inverse quantization of the transformation coefficients. For example, the predetermined scanning order is defined as ascending frequency (from low frequency to high frequency) or descending frequency (from high frequency to low frequency).

[0044] Quantization parameters are parameters that define the quantization step (quantization width). For example, if the value of the quantization parameter increases, the quantization step also increases. In other words, if the value of the quantization parameter increases, the quantization error increases.

[0045] [Entropy coding unit] The entropy coding unit 110 generates an encoded signal (encoded bitstream) by variable-length encoding the quantization coefficients, which are input from the quantization unit 108. Specifically, the entropy coding unit 110, for example, binarizes the quantization coefficients and arithmetically encodes the binary signal.

[0046] [Dequantization section] The inverse quantization unit 112 inversely quantizes the quantization coefficients, which are input from the quantization unit 108. Specifically, the inverse quantization unit 112 inversely quantizes the quantization coefficients of the current block in a predetermined scanning order. Then, the inverse quantization unit 112 outputs the inversely quantized conversion coefficients of the current block to the inverse conversion unit 114.

[0047] [Inverse Transformation Section] The inverse transform unit 114 restores the prediction error by inversely transforming the transformation coefficients, which are input from the inverse quantization unit 112. Specifically, the inverse transform unit 114 restores the prediction error of the current block by performing an inverse transform on the transformation coefficients that corresponds to the transformation by the transformation unit 106. The inverse transform unit 114 then outputs the restored prediction error to the summation unit 116.

[0048] Furthermore, the recovered prediction error does not match the prediction error calculated by the subtraction unit 104 because information is lost due to quantization. In other words, the recovered prediction error includes quantization errors.

[0049] [Addition section] The adder 116 reconstructs the current block by adding the prediction error, which is the input from the inverse transformer 114, and the prediction sample, which is the input from the prediction control unit 128. The adder 116 then outputs the reconstructed block to the block memory 118 and the loop filter unit 120. The reconstructed block is sometimes called the local decoded block.

[0050] [Block memory] The block memory 118 is a storage unit for storing blocks within the picture to be encoded (hereinafter referred to as the current picture) that are referenced in intra prediction. Specifically, the block memory 118 stores the reconstructed blocks output from the adder 116.

[0051] [Loop Filter Section] The loop filter unit 120 applies a loop filter to the block reconstructed by the adder unit 116 and outputs the filtered reconstructed block to the frame memory 122. A loop filter is a filter used within the encoding loop (in-loop filter), and includes, for example, a deblocking filter (DF), sample adaptive offset (SAO), and adaptive loop filter (ALF).

[0052] In ALF, a least-squares error filter is applied to remove coding distortion. For example, for each 2x2 subblock within the current block, one filter selected from several filters is applied based on the direction and activity of the local gradient.

[0053] Specifically, first, subblocks (e.g., 2x2 subblocks) are classified into multiple classes (e.g., 15 or 25 classes). The classification of subblocks is based on the direction and activity of the gradient. For example, a classification value C (e.g., C = 5D + A) is calculated using the gradient direction value D (e.g., 0-2 or 0-4) and the gradient activity value A (e.g., 0-4). Then, based on the classification value C, the subblocks are classified into multiple classes (e.g., 15 or 25 classes).

[0054] The gradient direction value D is derived, for example, by comparing gradients in multiple directions (e.g., horizontal, vertical, and two diagonal directions). The gradient activation value A is derived, for example, by adding the gradients in multiple directions and quantizing the sum.

[0055] Based on the results of this classification, a filter for the subblock is determined from among multiple filters.

[0056] For example, a circularly symmetric shape is used as the filter shape in ALF. Figures 4A to 4C show several examples of filter shapes used in ALF. Figure 4A shows a 5x5 diamond-shaped filter, Figure 4B shows a 7x7 diamond-shaped filter, and Figure 4C shows a 9x9 diamond-shaped filter. Information indicating the filter shape is signaled at the picture level. However, the signaling of information indicating the filter shape is not limited to the picture level, and may be at other levels (e.g., sequence level, slice level, tile level, CTU level, or CU level).

[0057] The on / off status of ALF is determined, for example, at the picture level or CU level. For instance, the decision to apply ALF to luminance is made at the CU level, and the decision to apply ALF to color difference is made at the picture level. Information indicating whether ALF is on or off is signaled at the picture level or CU level. However, the signaling of information indicating whether ALF is on or off is not limited to the picture level or CU level, but may be at other levels (e.g., sequence level, slice level, tile level, or CTU level).

[0058] The coefficient sets of multiple selectable filters (e.g., up to 15 or 25 filters) are signaled at the picture level. However, the signaling of the coefficient sets is not limited to the picture level; it may be at other levels (e.g., sequence level, slice level, tile level, CTU level, CU level, or subblock level).

[0059] [Frame memory] The frame memory 122 is a storage unit for storing reference pictures used for interpretation, and is sometimes called a frame buffer. Specifically, the frame memory 122 stores the reconstructed blocks filtered by the loop filter unit 120.

[0060] [Intra Prediction Unit] The intra-prediction unit 124 generates a prediction signal (intra-prediction signal) by performing intra-prediction (also called in-screen prediction) of the current block by referring to the block in the current picture stored in the block memory 118. Specifically, the intra-prediction unit 124 generates an intra-prediction signal by performing intra-prediction by referring to samples (e.g., luminance values, color difference values) of blocks adjacent to the current block, and outputs the intra-prediction signal to the prediction control unit 128.

[0061] For example, the intra-prediction unit 124 performs intra-prediction using one of a predetermined set of intra-prediction modes. The set of intra-prediction modes includes one or more non-directional prediction modes and multiple directional prediction modes.

[0062] One or more non-directional prediction modes include, for example, the Planar prediction mode and DC prediction mode as defined in the H.265 / HEVC (High-Efficiency Video Coding) standard (Non-Patent Document 1).

[0063] Multiple directional prediction modes include, for example, the 33 directional prediction modes defined in the H.265 / HEVC standard. Note that multiple directional prediction modes may also include 32 additional directional prediction modes (a total of 65 directional prediction modes). Figure 5A shows 67 intra-prediction modes (2 non-directional prediction modes and 65 directional prediction modes) in intra-prediction. Solid arrows represent the 33 directions defined in the H.265 / HEVC standard, and dashed arrows represent the additional 32 directions.

[0064] Furthermore, in the intra-prediction of a color difference block, a luminance block may be referenced. That is, the color difference component of the current block may be predicted based on the luminance component of the current block. Such intra-prediction is sometimes called CCLM (cross-component linear model) prediction. Such an intra-prediction mode for a color difference block that references a luminance block (e.g., called the CCLM mode) may be added as one of the intra-prediction modes for a color difference block.

[0065] The intra-prediction unit 124 may correct the pixel values ​​after intra-prediction based on the gradient of the horizontal / vertical reference pixels. Intra-prediction with such correction is sometimes called PDPC (position dependent intra-prediction combination). Information indicating whether or not PDPC is applied (for example, called a PDPC flag) is signaled at, for example, the CU level. Note that the signaling of this information is not limited to the CU level, but may be at other levels (for example, sequence level, picture level, slice level, tile level, or CTU level).

[0066] [International Prediction Department] The inter-prediction unit 126 generates a prediction signal (inter-prediction signal) by performing inter-prediction (also called inter-screen prediction) of the current block by referring to a reference picture stored in the frame memory 122 that is different from the current picture. Inter-prediction is performed in units of the current block or sub-blocks within the current block (e.g., 4x4 blocks). For example, the inter-prediction unit 126 performs motion estimation within the reference picture for the current block or sub-block. Then, the inter-prediction unit 126 generates an inter-prediction signal for the current block or sub-block by performing motion compensation using motion information (e.g., motion vectors) obtained from the motion estimation. Finally, the inter-prediction unit 126 outputs the generated inter-prediction signal to the prediction control unit 128.

[0067] The motion information used for motion compensation is converted into a signal. A motion vector predictor may be used to convert the motion vector into a signal. In other words, the difference between the motion vector and the predicted motion vector may be converted into a signal.

[0068] Furthermore, an inter-prediction signal may be generated using not only the motion information of the current block obtained through motion search, but also the motion information of adjacent blocks. Specifically, an inter-prediction signal may be generated for each sub-block within the current block by weighted addition of a prediction signal based on motion information obtained through motion search and a prediction signal based on the motion information of adjacent blocks. Such inter-prediction (motion compensation) is sometimes called OBMC (overlapped block motion compensation).

[0069] In this OBMC mode, information indicating the size of the subblock for OBMC (e.g., called the OBMC block size) is signaled at the sequence level. Information indicating whether or not to apply OBMC mode (e.g., called the OBMC flag) is signaled at the CU level. Note that the signaling levels for this information are not limited to the sequence and CU levels; other levels (e.g., picture level, slice level, tile level, CTU level, or subblock level) may also be used.

[0070] Let's explain the OBMC mode in more detail. Figures 5B and 5C are flowcharts and conceptual diagrams illustrating the overview of the predictive image correction process using OBMC processing.

[0071] First, a predicted image (Pred) is obtained using normal motion compensation with the motion vector (MV) assigned to the block to be encoded.

[0072] Next, the motion vector (MV_L) of the encoded left adjacent block is applied to the block to be encoded to obtain a predicted image (Pred_L), and the first correction of the predicted image is performed by superimposing the predicted image and Pred_L with weights.

[0073] Similarly, the motion vector (MV_U) of the encoded upper adjacent block is applied to the block to be encoded to obtain a predicted image (Pred_U). The predicted image is then corrected a second time by weighting the first corrected predicted image and Pred_U, and this is used as the final predicted image.

[0074] While this explanation describes a two-stage correction method using the left adjacent block and the upper adjacent block, it is also possible to use the right adjacent block and the lower adjacent block to perform corrections more than two times.

[0075] Furthermore, the area to be superimposed does not have to be the entire pixel area of ​​the block, but rather only a portion of the area near the block boundary.

[0076] Although this explanation describes the predictive image correction process using a single reference picture, the process is similar when correcting predictive images from multiple reference pictures. After obtaining corrected predictive images from each reference picture, the resulting predictive images are superimposed to create the final predictive image.

[0077] The processing target block may be a prediction block unit, or it may be a sub-block unit obtained by further dividing the prediction block.

[0078] One method for determining whether or not to apply OBMC processing is to use an obmc_flag signal, which indicates whether or not to apply OBMC processing. Specifically, in an encoding device, it is determined whether or not the block to be encoded belongs to a region with complex motion. If it belongs to a region with complex motion, the obmc_flag is set to a value of 1 and OBMC processing is applied to perform encoding. If it does not belong to a region with complex motion, the obmc_flag is set to a value of 0 and encoding is performed without applying OBMC processing. On the other hand, in a decoding device, the obmc_flag written in the stream is decoded, and the device switches whether or not to apply OBMC processing depending on its value and performs decoding.

[0079] Furthermore, motion information may be derived by the decoder without being converted into a signal. For example, the merge mode specified in the H.265 / HEVC standard may be used. Alternatively, motion information may be derived by performing a motion search on the decoder side. In this case, the motion search is performed without using the pixel values ​​of the current block.

[0080] Here, we will explain the mode in which motion detection is performed on the decoding device side. This mode in which motion detection is performed on the decoding device side is sometimes called PMMVD (pattern matched motion vector derivation) mode or FRUC (frame rate up-conversion) mode.

[0081] An example of FRUC processing is shown in Figure 5D. First, a list of multiple candidates (which may be the same as the merge list) is generated, each having a predicted motion vector, by referencing the motion vectors of spatially or temporally adjacent encoded blocks to the current block. Next, the best candidate MV is selected from among the multiple candidate MVs registered in the candidate list. For example, an evaluation value is calculated for each candidate included in the candidate list, and one candidate is selected based on the evaluation value.

[0082] Then, based on the motion vectors of the selected candidates, a motion vector for the current block is derived. Specifically, for example, the motion vector of the selected candidate (best candidate MV) is directly derived as the motion vector for the current block. Alternatively, for example, the motion vector for the current block may be derived by performing pattern matching in the area surrounding the position in the reference picture corresponding to the motion vector of the selected candidate. That is, a similar search is performed in the area surrounding the best candidate MV, and if an MV with a better evaluation value is found, the best candidate MV may be updated to this MV and used as the final MV for the current block. It is also possible to configure the system so that this process is not performed.

[0083] The same processing method can be used when processing at the sub-block level.

[0084] The evaluation value is calculated by determining the difference value of the reconstructed image through pattern matching between a region in the reference picture corresponding to the motion vector and a predetermined region. Alternatively, the evaluation value may be calculated using information other than the difference value.

[0085] For pattern matching, either first-order pattern matching or second-order pattern matching is used. First-order pattern matching and second-order pattern matching are sometimes called bilateral matching and template matching, respectively.

[0086] In the first pattern matching, pattern matching is performed between two blocks in two different reference pictures that are aligned with the motion trajectory of the current block. Therefore, in the first pattern matching, a region in another reference picture aligned with the motion trajectory of the current block is used as a predetermined region for calculating the evaluation value of the candidate described above.

[0087] Figure 6 illustrates an example of pattern matching (bilateral matching) between two blocks along a motion trajectory. As shown in Figure 6, in the first pattern matching, two motion vectors (MV0, MV1) are derived by searching for the best-matching pair of two blocks within two different reference pictures (Ref0, Ref1) that are along the motion trajectory of the current block. Specifically, for the current block, the difference between the reconstructed image at a specified position in the first encoded reference picture (Ref0) specified by the candidate MV and the reconstructed image at a specified position in the second encoded reference picture (Ref1) specified by the symmetric MV obtained by scaling the candidate MV by the display time interval is derived, and an evaluation value is calculated using the obtained difference value. It is preferable to select the candidate MV with the best evaluation value among multiple candidate MVs as the final MV.

[0088] Under the assumption of a continuous motion trajectory, the motion vector (MV0, MV1) pointing to two reference blocks is proportional to the temporal distance (TD0, TD1) between the current picture (Cur Pic) and the two reference pictures (Ref0, Ref1). For example, if the current picture is temporally located between the two reference pictures and the temporal distances from the current picture to the two reference pictures are equal, then the first pattern matching derives a mirror-symmetric bidirectional motion vector.

[0089] In the second pattern matching, pattern matching is performed between the template in the current picture (blocks adjacent to the current block in the current picture (e.g., blocks above and / or to the left)) and the blocks in the reference picture. Therefore, in the second pattern matching, the blocks adjacent to the current block in the current picture are used as a predetermined area for calculating the evaluation value of the candidates mentioned above.

[0090] Figure 7 illustrates an example of pattern matching (template matching) between a template in the current picture and a block in the reference picture. As shown in Figure 7, in the second pattern matching, the motion vector of the current block is derived by searching in the reference picture (Ref0) for the block that best matches the block adjacent to the current block (Cur block) in the current picture (Cur Pic). Specifically, for the current block, the difference is derived between the reconstructed image of the encoded region of both or either of the left adjacent and upper adjacent regions and the reconstructed image at the equivalent position in the encoded reference picture (Ref0) specified by the candidate MV. An evaluation value is calculated using the obtained difference value, and the candidate MV with the best evaluation value among multiple candidate MVs is selected as the best candidate MV.

[0091] Information indicating whether or not to apply such a FRUC mode (e.g., called the FRUC flag) is signaled at the CU level. Furthermore, if the FRUC mode is applied (e.g., the FRUC flag is true), information indicating the pattern matching method (first pattern matching or second pattern matching) (e.g., called the FRUC mode flag) is signaled at the CU level. Note that the signaling of this information is not limited to the CU level; it may be at other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or subblock level).

[0092] Here, we will explain the mode for deriving motion vectors based on a model that assumes uniform linear motion. This mode is called BIO (bi-directional optical). This is sometimes called flow mode.

[0093] Figure 8 is a diagram illustrating a model assuming uniform linear motion. In Figure 8, (vx, vy) represents the velocity vector, and τ0 and τ1 represent the temporal distance between the current picture (Cur Pic) and the two reference pictures (Ref0, Ref1), respectively. (MVx0, MVy0) represents the motion vector corresponding to reference picture Ref0, and (MVx1, MVy1) represents the motion vector corresponding to reference picture Ref1.

[0094] Under the assumption of uniform linear motion of the velocity vector (vx, vy), (MVx0, MVy0) and (MVx1, MVy1) can be expressed as (vxτ0, vyτ0) and (-vxτ1, -vyτ1), respectively, and the following optical flow equality (1) holds.

[0095]

number

[0096] Here, I(k) represents the luminance value of the reference image k (k=0,1) after motion compensation. This optical flow equation shows that the sum of (i) the time derivative of the luminance value, (ii) the product of the horizontal velocity and the horizontal component of the spatial gradient of the reference image, and (iii) the product of the vertical velocity and the vertical component of the spatial gradient of the reference image is equal to zero. Based on this optical flow equation and Hermite interpolation, block-level motion vectors obtained from merge lists, etc., are corrected on a pixel-by-pixel basis.

[0097] Furthermore, motion vectors may be derived on the decoding side using a method different from that used for deriving motion vectors based on a model that assumes uniform linear motion. For example, motion vectors may be derived on a sub-block basis based on the motion vectors of multiple adjacent blocks.

[0098] Here, we will describe a mode in which motion vectors are derived at the sub-block level based on the motion vectors of multiple adjacent blocks. This mode is sometimes called the affine motion compensation prediction mode.

[0099] Figure 9A illustrates the derivation of subblock-level motion vectors based on the motion vectors of multiple adjacent blocks. In Figure 9A, the current block contains 16 4x4 subblocks. Here, the motion vector v0 of the upper left corner control point of the current block is derived based on the motion vectors of the adjacent blocks, and the motion vector v1 of the upper right corner control point of the current block is derived based on the motion vectors of the adjacent subblocks. Then, using the two motion vectors v0 and v1, the motion vector (vx, vy) of each subblock within the current block is derived by equation (2) below.

[0100]

number

[0101] Here, x and y represent the horizontal and vertical positions of the subblock, respectively, and w represents a predetermined weighting coefficient.

[0102] Such affine motion compensation prediction modes may include several modes in which the motion vectors of the upper-left and upper-right corner control points are derived. Information indicating such affine motion compensation prediction modes (e.g., called affine flags) is signaled at the CU level. Note that the signaling of this information indicating affine motion compensation prediction modes is not limited to the CU level, but may be at other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or subblock level).

[0103] [Prediction Control Unit] The prediction control unit 128 selects either the intra-prediction signal or the inter-prediction signal and outputs the selected signal as the prediction signal to the subtraction unit 104 and the addition unit 116.

[0104] Here, we will explain an example of deriving the motion vector of a picture to be encoded using merge mode. Figure 9B is a diagram illustrating the overview of the motion vector derivation process using merge mode.

[0105] First, a list of predicted MVs is generated, containing registered candidates for predicted MVs. Candidates for predicted MVs include spatially adjacent predicted MVs, which are the MVs of multiple coded blocks located spatially around the block to be coded; temporally adjacent predicted MVs, which are the MVs of nearby blocks projected onto the location of the block to be coded in the coded reference picture; combined predicted MVs, which are generated by combining the MV values ​​of spatially adjacent predicted MVs and temporally adjacent predicted MVs; and zero predicted MVs, which are MVs with a value of zero.

[0106] Next, one predicted MV is selected from the multiple predicted MVs registered in the predicted MV list to determine it as the MV for the block to be encoded.

[0107] Furthermore, the variable-length coding unit encodes the merge_idx signal, which indicates which predicted MV was selected, by writing it to a stream.

[0108] Note that the predicted MVs registered in the predicted MV list explained in Figure 9B are just an example, and the number of predicted MVs may differ from the number shown in the figure, the configuration may not include some of the types of predicted MVs shown in the figure, or it may include predicted MVs other than those shown in the figure.

[0109] Alternatively, the final MV may be determined by performing the DMVR process described later using the MV of the target block to be encoded derived by merge mode.

[0110] Here, we will explain an example of determining the MV using DMVR processing.

[0111] Figure 9C is a conceptual diagram illustrating the overview of DMVR processing.

[0112] First, the optimal MVP set for the block to be processed is used as a candidate MV. According to the candidate MV, reference pixels are obtained from the first reference picture, which is a processed picture in the L0 direction, and the second reference picture, which is a processed picture in the L1 direction, and a template is generated by taking the average of each reference pixel.

[0113] Next, using the template, the surrounding regions of candidate MVs for the first and second reference pictures are searched, and the MV with the lowest cost is determined as the final MV. The cost value is calculated using the difference between each pixel value of the template and each pixel value of the search region, as well as the MV value, etc.

[0114] Note that the general outline of the processing described here is basically the same for both the encoding and decoding devices.

[0115] Note that any process that can explore the vicinity of a candidate MV and derive the final MV may be used instead of the exact process described here.

[0116] Here, we will explain the mode for generating predictive images using LIC processing.

[0117] Figure 9D is a diagram illustrating the outline of a predictive image generation method using luminance correction processing by LIC processing.

[0118] First, we derive a Music Model (MV) to obtain the reference image corresponding to the block to be encoded from the reference picture, which is an encoded picture.

[0119] Next, for the block to be encoded, information indicating how the luminance values ​​have changed between the reference picture and the picture to be encoded is extracted using the luminance pixel values ​​of the left-adjacent and top-adjacent encoded surrounding reference regions, and the luminance pixel values ​​at the equivalent positions in the reference picture specified by MV, and a luminance correction parameter is calculated.

[0120] By performing brightness correction processing on the reference image within the reference picture specified in MV using the brightness correction parameter, a predicted image for the encoding target block is generated.

[0121] Note that the shape of the surrounding reference region in Figure 9D is just one example, and other shapes may be used.

[0122] Furthermore, while this explanation describes the process of generating a predicted image from a single reference picture, the process is similar when generating predicted images from multiple reference pictures. Brightness correction processing is performed on each reference image obtained from a single reference picture in the same manner before generating the predicted image.

[0123] One method for determining whether or not to apply LIC processing is to use a signal called lic_flag, which indicates whether or not to apply LIC processing. Specifically, in an encoding device, it is determined whether or not the block to be encoded belongs to a region where brightness changes are occurring. If it belongs to a region where brightness changes are occurring, the value of lic_flag is set to 1 and LIC processing is applied and encoding is performed. If it does not belong to a region where brightness changes are occurring, the value of lic_flag is set to 0 and encoding is performed without applying LIC processing. On the other hand, in a decoding device, the lic_flag written in the stream is decoded, and the device switches whether or not to apply LIC processing according to its value and performs decoding.

[0124] Another way to determine whether to apply LIC processing is, for example, by checking whether LIC processing has been applied to surrounding blocks. A specific example is that if the block to be encoded is in merge mode, during the MV derivation in merge mode processing, it is determined whether the surrounding encoded blocks selected were encoded with LIC processing. Based on this result, the application of LIC processing is switched, and encoding is performed accordingly. In this example, the decoding process is exactly the same.

[0125] [Overview of the decryption device] Next, an overview of a decoding device capable of decoding the encoded signal (encoded bitstream) output from the above-mentioned encoding device 100 will be described. Figure 10 is a block diagram showing the functional configuration of the decoding device 200 according to Embodiment 1. The decoding device 200 is a video / image decoding device that decodes video / images in block units.

[0126] As shown in Figure 10, the decoding device 200 includes an entropy decoding unit 202, an inverse quantization unit 204, an inverse transform unit 206, an adder unit 208, a block memory 210, a loop filter unit 212, a frame memory 214, an intra prediction unit 216, an inter prediction unit 218, and a prediction control unit 220.

[0127] The decoding device 200 can be implemented, for example, by a general-purpose processor and memory. In this case, when the software program stored in memory is executed by the processor, the processor functions as an entropy decoding unit 202, an inverse quantization unit 204, an inverse transformation unit 206, an addition unit 208, a loop filter unit 212, an intra prediction unit 216, an inter prediction unit 218, and a prediction control unit 220. Alternatively, the decoding device 200 may be implemented as one or more dedicated electronic circuits corresponding to the entropy decoding unit 202, the inverse quantization unit 204, the inverse transformation unit 206, the addition unit 208, the loop filter unit 212, the intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220.

[0128] The following describes each component included in the decoding device 200.

[0129] [Entropy Decoder] The entropy decoding unit 202 entropically decodes the encoded bitstream. Specifically, the entropy decoding unit 202 arithmetically decodes the encoded bitstream into a binary signal, for example. Then, the entropy decoding unit 202 debinarizes the binary signal. As a result, the entropy decoding unit 202 outputs the quantization coefficients in block units to the inverse quantization unit 204.

[0130] [Dequantization section] The inverse quantization unit 204 inversely quantizes the quantization coefficients of the decoded block (hereinafter referred to as the current block), which is the input from the entropy decoding unit 202. Specifically, for each quantization coefficient of the current block, the inverse quantization unit 204 inversely quantizes the quantization coefficient based on the quantization parameter corresponding to that quantization coefficient. The inverse quantization unit 204 then outputs the inversely quantized quantization coefficients (i.e., transformation coefficients) of the current block to the inverse transformation unit 206.

[0131] [Inverse Transformation Section] The inverse transform unit 206 restores the prediction error by inversely transforming the transformation coefficients, which are input from the inverse quantization unit 204.

[0132] For example, if the information decoded from the encoded bitstream indicates that EMT or AMT should be applied (e.g., the AMT flag is true), the inverse transform unit 206 inversely transforms the transformation coefficients of the current block based on the information indicating the decoded transformation type.

[0133] For example, if the information decoded from the encoded bitstream indicates that NSST should be applied, the inverse transform unit 206 applies inverse retransformation to the transformation coefficients.

[0134] [Addition section] The adder 208 reconstructs the current block by adding the prediction error, which is the input from the inverse transformer 206, and the prediction sample, which is the input from the prediction control unit 220. The adder 208 then outputs the reconstructed block to the block memory 210 and the loop filter unit 212.

[0135] [Block memory] The block memory 210 is a storage unit for storing blocks that are referenced in intra prediction and are located within the decoded picture (hereinafter referred to as the current picture). Specifically, the block memory 210 stores the reconstructed blocks output from the adder 208.

[0136] [Loop Filter Section] The loop filter unit 212 applies a loop filter to the block reconstructed by the adder unit 208 and outputs the filtered reconstructed block to the frame memory 214 and the display device, etc.

[0137] If the information interpreted from the encoded bitstream indicating ALF on / off indicates ALF is on, one filter is selected from among several filters based on the direction and activity of the local gradient, and the selected filter is applied to the reconstruction block.

[0138] [Frame memory] The frame memory 214 is a memory unit for storing reference pictures used for interpretation, and is sometimes called a frame buffer. Specifically, the frame memory 214 stores the reconstructed blocks filtered by the loop filter unit 212.

[0139] [Intra Prediction Unit] The intra-prediction unit 216 generates a prediction signal (intra-prediction signal) by performing intra-prediction based on the intra-prediction mode decoded from the encoded bitstream, and by referring to the blocks in the current picture stored in the block memory 210. Specifically, the intra-prediction unit 216 generates an intra-prediction signal by performing intra-prediction by referring to samples (e.g., luminance values, chrominance values) of blocks adjacent to the current block, and outputs the intra-prediction signal to the prediction control unit 220.

[0140] Furthermore, if an intra-prediction mode that references a luminance block is selected in the intra-prediction of a color difference block, the intra-prediction unit 216 may predict the color difference component of the current block based on the luminance component of the current block.

[0141] Furthermore, if the information decoded from the encoded bitstream indicates the application of PDPC, the intra-prediction unit 216 corrects the pixel value after intra-prediction based on the gradient of the reference pixels in the horizontal / vertical directions.

[0142] [International Prediction Department] The inter-prediction unit 218 predicts the current block by referring to a reference picture stored in the frame memory 214. Prediction is performed in units of the current block or sub-blocks within the current block (e.g., 4x4 blocks). For example, the inter-prediction unit 218 generates an inter-prediction signal for the current block or sub-block by performing motion compensation using motion information (e.g., motion vectors) decoded from the encoded bitstream, and outputs the inter-prediction signal to the prediction control unit 220.

[0143] Furthermore, if the information decoded from the encoded bitstream indicates that OBMC mode should be applied, the interpretation unit 218 generates an interpretation prediction signal using not only the motion information of the current block obtained by motion search, but also the motion information of adjacent blocks.

[0144] Furthermore, if the information decoded from the encoded bitstream indicates that FRUC mode should be applied, the interpretation unit 218 derives motion information by performing a motion search according to the pattern matching method (bilateral matching or template matching) decoded from the encoded stream. Then, the interpretation unit 218 performs motion compensation using the derived motion information.

[0145] Furthermore, when the BIO mode is applied, the inter-prediction unit 218 derives motion vectors based on a model that assumes uniform linear motion. Also, if the information decoded from the encoded bitstream indicates that the affine motion compensation prediction mode should be applied, the inter-prediction unit 218 derives motion vectors on a sub-block basis based on the motion vectors of multiple adjacent blocks.

[0146] [Prediction Control Unit] The prediction control unit 220 selects either the intra-prediction signal or the inter-prediction signal and outputs the selected signal as the prediction signal to the adder 208.

[0147] (Embodiment 2) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, determines whether the written parameters are equal to a predetermined value, predicts block division information if the written parameters are equal to the predetermined value, divides the block into a plurality of subblocks using the predicted block division information, divides the block into a plurality of subblocks if the written parameters are not equal to the predetermined value, divides the block into a plurality of subblocks without using the predicted block division information, and encodes the subblocks included in the plurality of subblocks in an encoding process including a conversion process and / or a prediction process.

[0148] This allows for the prediction of block partitioning information when parameters are equal to predetermined values. By using this predicted block partitioning information to partition blocks, the amount of code related to the block partitioning information can be reduced, thereby improving compression efficiency.

[0149] For example, in the encoding device according to this embodiment, the process for predicting the block division information may include the process of generating block division information using the block information of the encoded block.

[0150] This allows us to predict block partitioning information using the block information of the encoded block, thereby improving the accuracy of block partitioning information prediction and reducing the amount of code required.

[0151] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory, wherein the processor uses the memory to analyze parameters from a bitstream, determines whether the analyzed parameters are equal to a predetermined value, predicts block division information if the analyzed parameters are equal to the predetermined value, divides the block into a plurality of subblocks using the predicted block division information, divides the block into a plurality of subblocks if the written parameters are not equal to the predetermined value, divides the block into a plurality of subblocks without using the predicted block division information, and decodes the subblocks included in the plurality of subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0152] This allows for the prediction of block partitioning information when parameters are equal to predetermined values. By using this predicted block partitioning information to partition blocks, the amount of code related to the block partitioning information can be reduced, thereby improving compression efficiency.

[0153] For example, in the decoding device according to this embodiment, the process for predicting the block division information may include the process of generating block division information using the block information of the decoded blocks.

[0154] This allows us to predict block partitioning information using the block information of the decoded block, thereby improving the accuracy of block partitioning information prediction and reducing the amount of coding required.

[0155] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0156] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 11 and 12, respectively. Furthermore, the devices for encoding and decoding video will be described according to the embodiments shown in Figures 35 and 36, respectively.

[0157] [Encoding process] Figure 11 shows an example of video encoding processing according to Embodiment 2.

[0158] As the first step S1001, parameters are written to the bitstream. Figure 37 shows the writable locations for the above parameters in the compressed video bitstream. The written parameters include one or more parameters to identify whether or not block division information prediction is valid. For example, one or more parameters may include a flag indicating whether or not block division information prediction is valid.

[0159] Next, in step S1002, it is determined whether the written parameter is equal to a predetermined value.

[0160] If the written parameter is equal to a predetermined value (Y in S1002), block partitioning information is predicted in step S1003, and then in step S1004, the block is divided into multiple subblocks using the predicted block partitioning information. For example, the predicted block partitioning information is used as the initial block partitioning information. Then, the initial block partitioning information is updated to the final block partitioning information.

[0161] The final block partitioning information is determined during intra and interprediction processing to minimize rate distortion costs compared to other available block partitioning information. The difference between the predicted block partitioning information and the final block partitioning information is written to the bitstream, allowing the decoder to generate the corresponding final block partitioning information based on the predicted information. By encoding the difference information instead of the final block partitioning information, the number of bits required to signal the final block partitioning information can be reduced.

[0162] Possible partitioning methods include, for example, binary tree partitioning as shown in Figures 41 b1) and b2), quadtree partitioning as shown in Figures 41 q1) and q2), multitree cuts / partitioning as shown in Figures 41 m1) and m2), or non-square / non-rectangular partitioning as shown in Figure 41 n1). Various geometries are possible for the subblocks (shape and / or size), such as the asymmetric binary tree partitioning shown in Figure 41 b2), the asymmetric quadtree partitioning shown in Figure 41 q2), the multitree cuts of different sizes shown in Figure 41 m1), or the non-square / non-rectangular partitioning shown in Figure 41 n1).

[0163] Here, block partitioning information can be predicted according to the block information of the encoded block (e.g., block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partitioning depth, etc.). The block is divided into multiple subblocks using the block partitioning information. As shown in Figure 38, if the block partitioning information used is different, the height, width, or shape of the multiple subblocks resulting from the block partitioning will also be different.

[0164] The block partition structure of the encoded block can be used directly as the predicted block partition structure for the current block.

[0165] It is also possible to derive a new block partition structure as the predicted block partition structure for the current block by combining the block partition structures of two or more encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block).

[0166] One method for selecting an encoded block is to select an encoded block that uses the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, one or more encoded blocks encoded using inter-prediction will be selected.

[0167] The block partition structure of the encoded block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the predicted block partition structure for the current block.

[0168] The block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0169] The predicted block partitioning information may differ for each intra-prediction direction of the encoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to predict whether the current block should be partitioned vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be predicted for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be predicted for the current block.

[0170] The block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0171] Block partitioning information may be predicted according to the intra / inter prediction mode of the encoded block. For example, if the prediction mode of the encoded block is intra prediction mode, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the encoded block is inter prediction mode, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0172] Block partitioning information may be predicted according to the motion vector of the encoded block. For example, if the difference between the motion vector of the encoded block and the motion vector of the current block is greater than a predetermined threshold, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the encoded block and the motion vector of the current block is less than or equal to a predetermined threshold, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0173] Block partitioning information may be predicted according to the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is smaller than a predetermined value, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the encoded block is greater than or equal to a predetermined value, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0174] Block partitioning information may be predicted according to the reference picture information of the encoded block. For example, if the reference picture of the encoded block is temporally close to the current picture, or if the reference pictures of multiple encoded blocks are similar to each other, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the encoded block is not temporally close to the current picture, or if the reference pictures of multiple encoded blocks are not similar to each other, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively small block size.

[0175] Block partitioning information may be predicted according to the partitioning depth of the encoded block. For example, if the partitioning depth of the encoded block is greater than a predetermined value (e.g., 4), a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the encoded block is less than or equal to the predetermined value (e.g., the partitioning depth is equal to 2), another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0176] Block partitioning information may be predicted according to the partitioning information of encoded blocks in frames different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block can be predicted from encoded blocks in frames different from the current frame (e.g., collocated blocks, last encoded blocks, or encoded blocks identified by motion vectors).

[0177] If the written parameter is not equal to a predetermined value (N in S1002), in step S1005, the block is divided into multiple subblocks without using the predicted block division information. Possible division methods include, for example, a binary tree division as shown in b1) and b2) in Figure 41, a quadtree division as shown in q1) and q2) in Figure 41, a multi-tree cut / division as shown in m1) and m2) in Figure 41, or a non-square / non-rectangular division as shown in n1) in Figure 41. The geometry (shape and / or size) of the subblocks can vary, such as an asymmetric binary tree division as shown in b2) in Figure 41, an asymmetric quadtree division as shown in q2) in Figure 41, a multi-tree cut of different sizes as shown in m1) in Figure 41, or a non-square / non-rectangular division as shown in n1) in Figure 41.

[0178] In step S1006, the subblocks contained within multiple subblocks are encoded in an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0179] [Encoding device] Figure 35 is a block diagram showing the structure of a video / image encoding device according to an embodiment.

[0180] The video encoding device 25000 is a device that encodes an input video / image bitstream block by block and generates an encoded output bitstream, and as shown in Figure 35, includes a conversion unit 25001, a quantization unit 25002, an inverse quantization unit 25003, an inverse conversion unit 25004, a block memory 25005, a frame memory 25006, an intra prediction unit 25007, an inter prediction unit 25008, an entropy encoding unit 25009, and a block division information determination unit 25010.

[0181] The input video is fed into the adder, and the added value is output to the conversion unit 25001. The conversion unit 25001 converts the added value into frequency coefficients based on the block division information derived by the block division information determination unit 25010, and outputs the obtained frequency coefficients to the quantization unit 25002. The quantization unit 25002 quantizes the input frequency coefficients and outputs the obtained quantized value to the inverse quantization unit 25003 and the entropy coding unit 25009.

[0182] The inverse quantization unit 25003 inversely quantizes the quantized value output from the quantization unit 25002 and outputs the frequency coefficient to the inverse transform unit 25004. The inverse transform unit 25004 converts the frequency coefficient into a sample value of the bitstream by inverse frequency transforming based on the block division information derived by the block division information determination unit 25010, and outputs the obtained sample value to the adder.

[0183] The adder adds the sample values ​​of the bitstream output from the inverse transformer 25004 to the predicted values ​​of the video / image output from the intra prediction unit 25007 / inter prediction unit 25008, and outputs the resulting added value to the block memory 25005 or frame memory 25006 for future predictions.

[0184] The block partitioning information determination unit 25010 collects block information from the block memory 25005 or the frame memory 25006 to derive block partitioning information and parameters related to the block partitioning information. If the derived block partitioning information is used, the block is divided into multiple subblocks.

[0185] The intra-prediction unit 25007 / inter-prediction unit 25008 searches for reconstructed video / images stored in the block memory 25005 or in the frame memory 25006 based on the block division information derived by the block division information determination unit 25010, and estimates, for example, the video / image region that is most similar to the input video / image for prediction purposes.

[0186] The entropy coding unit 25009 encodes the quantized values ​​output from the quantization unit 25002, encodes the parameters from the block partitioning information determination unit 25010, and outputs a bitstream.

[0187] [Decryption process] Figure 12 shows an example of video decoding processing according to Embodiment 2.

[0188] As the first step S2001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream. The analyzed parameters include one or more parameters for identifying whether or not block division information prediction is valid. These one or more parameters, for example, can indicate whether or not block division information prediction is valid if they include a flag.

[0189] Next, in step S2002, it is determined whether the analyzed parameters are equal to predetermined values.

[0190] If the analyzed parameters are equal to a predetermined value (Y in S2002), block partitioning information is predicted in step S2003, and then in step S2004, the block is divided into multiple subblocks using the predicted block partitioning information. The predicted block partitioning information is used, for example, as initial block partitioning information. The initial block partitioning information is then updated to final block partitioning information according to the difference information between the predicted block partitioning information and the final block partitioning information, which is difference information analyzed from the bitstream. Possible partitioning methods include, for example, binary tree partitioning as shown in b1) and b2) in Figure 41, quadtree partitioning as shown in q1) and q2) in Figure 41, multi-tree cut / partitioning as shown in m1) and m2) in Figure 41, or non-square / non-rectangular partitioning as shown in n1) in Figure 41. The geometry (shape and / or size) of the subblocks can vary, including asymmetric binary tree partitions as shown in Figure 41 b2), asymmetric quadtree partitions as shown in Figure 41 q2), multi-tree cuts of different sizes as shown in Figure 41 m1), or non-square / non-rectangular partitions as shown in Figure 41 n1).

[0191] Here, block partitioning information can be predicted according to the block information of the decoded block (e.g., block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partitioning depth, etc.). The block is divided into multiple subblocks using the block partitioning information. As shown in Figure 38, if the block partitioning information used is different, the height, width, or shape of the multiple subblocks resulting from the block partitioning will also be different.

[0192] The block partition structure of the decoded block can be used directly as the predicted block partition structure for the current block.

[0193] It is also possible to derive a new block partition structure as the predicted block partition structure of the current block by combining the block partition structures of two or more decoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One method for selecting a decoded block is to select a decoded block that is in the same intra / interprediction mode as the current block. Specifically, if the current block is an interprediction block, one or more decoded blocks decoded using interprediction will be selected.

[0194] The block partition structure of the decoded block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the predicted block partition structure for the current block.

[0195] The block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0196] The predicted block partitioning information may differ for each intra-prediction direction of the decoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to predict whether the current block should be partitioned vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be predicted for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be predicted for the current block.

[0197] The block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0198] Block partitioning information may be predicted according to the intra / inter prediction mode of the decrypted block. For example, if the prediction mode of the decrypted block is intra prediction mode, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the decrypted block is inter prediction mode, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0199] Block partitioning information may be predicted according to the motion vector of the decoded block. For example, if the difference between the motion vector of the decoded block and the motion vector of the current block is greater than a predetermined threshold, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the decoded block and the motion vector of the current block is less than or equal to a predetermined threshold, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0200] Block partitioning information may be predicted according to the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is smaller than a predetermined value, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the decoded block is greater than or equal to a predetermined value, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0201] Block partitioning information may be predicted according to the reference picture information of the decrypted block. For example, if the reference picture of the decrypted block is temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are similar to each other, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the decrypted block is not temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are not similar to each other, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively small block size.

[0202] Block partitioning information may be predicted according to the partitioning depth of the decrypted block. For example, if the partitioning depth of the decrypted block is greater than a predetermined value (e.g., 4), a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the decrypted block is less than or equal to the predetermined value (e.g., the partitioning depth is equal to 2), another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0203] Block partitioning information may be predicted according to the partitioning information of decoded blocks in frames different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block may be predicted from decoded blocks in frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks identified by motion vectors).

[0204] If the written parameter is not equal to a predetermined value (N in S2002), in step S2005, the block is divided into multiple subblocks without using the predicted block division information. Possible division methods include, for example, a binary tree division as shown in b1) and b2) in Figure 41, a quadtree division as shown in q1) and q2) in Figure 41, a multi-tree cut / division as shown in m1) and m2) in Figure 41, or a non-square / non-rectangular division as shown in n1) in Figure 41. The geometry (shape and / or size) of the subblocks can vary, such as an asymmetric binary tree division as shown in b2) in Figure 41, an asymmetric quadtree division as shown in q2) in Figure 41, a multi-tree cut of different sizes as shown in m1) in Figure 41, or a non-square / non-rectangular division as shown in n1) in Figure 41.

[0205] In step S2006, subblocks contained within multiple subblocks are decoded in a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0206] [Decoding device] Figure 36 is a block diagram showing the structure of a video / image decoding device according to an embodiment.

[0207] The video decoding device 26000 is a device that decodes the encoded input bitstream block by block and outputs video / images, and as shown in Figure 36, it includes an entropy decoding unit 26001, an inverse quantization unit 26002, an inverse transform unit 26003, a block memory 26004, a frame memory 26005, an intra prediction unit 26006, an inter prediction unit 26007, and a block division information determination unit 26008.

[0208] The encoded input bitstream is input to the entropy decoding unit 26001. After the encoded input bitstream is input to the entropy decoding unit 26001, the entropy decoding unit 26001 decodes the encoded input bitstream, outputs parameters to the block partitioning information determination unit 26008, and outputs the decoded value to the inverse quantization unit 26002.

[0209] The inverse quantization unit 26002 inversely quantizes the decoded value and outputs the frequency coefficient to the inverse transform unit 26003. The inverse transform unit 26003 converts the frequency coefficient into a sample value by inverse frequency transforming based on the block division information derived by the block division information determination unit 26008, and outputs the obtained sample value to the adder.

[0210] The adder adds the obtained sample value to the predicted value of the video / image output from the intra prediction unit 26006 / inter prediction unit 26007, outputs the resulting added value to the display, and also outputs it to the block memory 26004 or frame memory 26005 for future predictions.

[0211] The block partitioning information determination unit 26008 collects block information from the block memory 26004 or the frame memory 26005 and derives block partitioning information using the decoding parameters from the entropy decoding unit 26001. If the block partitioning information derived here is used, the block is divided into multiple subblocks.

[0212] Furthermore, the intra-prediction unit 26006 / inter-prediction unit 26007 searches for video / images stored in the block memory 26004 or reconstructed video / images in the frame memory 26005 based on the block division information derived from the block division information determination unit 26008, and estimates, for example, the video / image region that is most similar to the video / image of the decoded block for prediction purposes.

[0213] (Embodiment 3) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, uses the written parameters to select at least one encoded block from a plurality of encoded blocks, reads block information from the selected at least one encoded block, uses the read block information to divide the current block into a plurality of subblocks, and encodes the subblocks included in the plurality of subblocks in an encoding process including a conversion process and / or a prediction process.

[0214] This allows for the adaptive selection of encoded blocks for current block partitioning using parameters. By using the block information of the selected encoded blocks to partition the block into multiple subblocks, the amount of code associated with block partitioning information can be reduced, thereby improving compression efficiency.

[0215] For example, in the encoding device according to this embodiment, the current block and the plurality of encoded blocks are different blocks from each other, and at least one of the plurality of encoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0216] This allows for the selection of a pre-encoded block for block partitioning from among several different pre-encoded blocks, enabling the current block to be partitioned using block information more suitable for block partitioning. As a result, the amount of code associated with block partitioning information can be reduced, improving compression efficiency.

[0217] For example, in the encoding device according to this embodiment, the read-out block information may include at least one of the following: block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and information regarding the partition depth.

[0218] This allows for the use of appropriate information as block information, and enables the current block to be divided using block information more suitable for block partitioning. As a result, the amount of code related to block partitioning information can be reduced, improving compression efficiency.

[0219] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory, wherein the processor uses the memory to analyze parameters from a bitstream, determines whether the analyzed parameters are equal to a predetermined value, predicts block division information if the analyzed parameters are equal to the predetermined value, divides the block into a plurality of subblocks using the predicted block division information, divides the block into a plurality of subblocks if the written parameters are not equal to the predetermined value, divides the block into a plurality of subblocks without using the predicted block division information, and decodes the subblocks included in the plurality of subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0220] This allows for the adaptive selection of decoded blocks for current block partitioning using parameters. By using the block information of the selected decoded blocks to partition the block into multiple subblocks, the amount of code related to block partitioning information can be reduced, thereby improving compression efficiency.

[0221] For example, in the decoding device according to the present embodiment, the current block and the decoded block are different blocks from each other, and at least one of the decoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0222] Accordingly, a decoded block for block division can be selected from a plurality of different decoded blocks, and the current block can be divided using block information more suitable for block division. As a result, the code amount related to the block division information can be reduced, and the compression efficiency can be improved.

[0223] For example, in the decoding device according to the present embodiment, the read block information may include at least one of information related to a block partition structure, an intra prediction mode or an inter prediction mode, an intra prediction direction, a motion vector, a reference picture, a quantization parameter, and a division depth.

[0224] Accordingly, appropriate information can be used as the block information, and the current block can be divided using block information more suitable for block division. As a result, the code amount related to the block division information can be reduced, and the compression efficiency can be improved.

[0225] Note that these general or specific aspects may be implemented by a system, a method, an integrated circuit, a computer program, or a recording medium such as a computer-readable CD-ROM, or may be implemented by any arbitrary combination of the system, the method, the integrated circuit, the computer program, and the recording medium.

[0226] In the following, a method for encoding video and a method for decoding video will be described according to the embodiment, as respectively shown in Figure 13 and Figure 14.

[0227] [Encoding Processing] Figure 13 shows an example of video encoding processing according to Embodiment 3.

[0228] As the first step S3001, parameters are written to the bitstream. Figure 37 shows the writable locations for the above parameters in the compressed video bitstream. The written parameters include one or more parameters for selecting one or more encoded blocks or block information from a predetermined candidate list.

[0229] Next, in step S3002, at least one encoded block is selected from a plurality of encoded blocks using the written parameters. Here, at least one encoded block is either a block contained in the same frame as the current block (e.g., an adjacent block to the current block), or a block contained in a different frame from the frame containing the current block (e.g., a co-located block of the current block, or a motion-compensated block whose position is obtained using the motion vector of the current block, or the last encoded block contained in the latest encoded frame different from the current frame).

[0230] In step S3003, block information is read from the selected encoded block.

[0231] Then, in step S3004, the current block is divided into multiple subblocks using the read block information. Figure 38 shows an example of dividing the current block into multiple subblocks using the read block information.

[0232] To divide a block into subblocks, block partitioning information for that block is derived. Here, the block partitioning information is derived according to the block information of the encoded block (e.g., block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partitioning depth, etc.). The block is divided into multiple subblocks using the block partitioning information. As shown in Figure 38, if the block partitioning information used is different, the height, width, or shape of the multiple subblocks resulting from the block partitioning will also be different.

[0233] The block partition structure of the selected encoded block can be used as the block partition structure for the current block.

[0234] It is also possible to derive a new block partition structure as the block partition structure of the current block by combining the block partition structures of two or more selected encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block).

[0235] The block partition structure of the selected encoded block can also be modified (for example, by using a block partition structure with a shallower partition depth, as shown in Figure 40), and the new block partition structure can be derived as the block partition structure of the current block.

[0236] The block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0237] Block partitioning information may differ for each selected encoded block's intra-prediction direction. For example, intra-prediction direction information at a particular adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be derived for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be derived for the current block.

[0238] The block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0239] Block partitioning information may be derived according to the intra / inter prediction mode of the selected encoded block. For example, if the prediction mode of the selected encoded block is intra prediction mode, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the selected encoded block is inter prediction mode, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0240] Block partitioning information may be derived according to the motion vector of the selected encoded block. For example, if the difference between the motion vector of the selected encoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the selected encoded block and the motion vector of the current block is less than or equal to a predetermined threshold, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0241] Block partitioning information may be derived according to the quantization parameters of the selected encoded block. For example, if the value of the quantization parameter of the selected encoded block is smaller than a predetermined value, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. Alternatively, for example, if the value of the quantization parameter of the selected encoded block is greater than or equal to a predetermined value, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0242] Block partitioning information may be derived according to the reference picture information of the selected encoded block. For example, if the reference picture of the selected encoded block is temporally close to the current picture, or if the reference pictures of multiple selected encoded blocks are similar to each other, a predetermined block partitioning information can be derived that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the selected encoded block is not temporally close to the current picture, or if the reference pictures of multiple selected encoded blocks are not similar to each other, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of a relatively small block size.

[0243] The block partition information may be derived according to the partition depth of the selected encoded block. For example, when the partition depth of the selected encoded block is greater than a predetermined value (e.g., 4), predetermined block partition information for partitioning a block into a plurality of sub-blocks with relatively small block sizes can be derived. When the partition depth of the selected encoded block is equal to or less than a predetermined value (e.g., when the partition depth is equal to 2), other predetermined block partition information for partitioning a block into a plurality of sub-blocks with relatively large block sizes can be derived.

[0244] The block partition information may be derived according to the partition information of an encoded block of a frame different from the current frame. For example, the block partition information (including split information) for the current block or the split information of the current block can be derived from the block information of an encoded block of an encoded frame different from the current frame (e.g., a collocated block, the last encoded block, or an encoded block specified by a motion vector).

[0245] In step S3005, the sub-blocks included in the plurality of sub-blocks are encoded in an encoding process. Here, this encoding process includes a transform process and / or a prediction process. The transform process is preferably performed for each block having a size approximately equal to the size of the sub-block.

[0246] [Encoding Apparatus] The structure of the video / image encoding apparatus in the present embodiment is the same as that in Fig. 35 of Embodiment 2, so illustration and description thereof are omitted.

[0247] [Decoding Process] Figure 14 shows an example of a video decoding process according to Embodiment 3.

[0248] As the first step S4001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream. The analyzed parameters include one or more parameters for selecting one or more decoded blocks or block information from a predetermined candidate list.

[0249] Next, in step S4002, at least one decoded block is selected from multiple decoded blocks using the analyzed parameters. Here, the at least one decoded block is either a block contained in the same frame as the current block (e.g., an adjacent block to the current block), or a block contained in a different frame from the frame containing the current block (e.g., a block in the same position as the current block, or a motion-compensated block whose position is obtained using the motion vector of the current block, or the last coded block contained in the most recent coded frame different from the current frame).

[0250] In step S4003, block information is read from the selected decrypted block.

[0251] Then, in step S4004, the current block is divided into multiple subblocks using the read block information. Figure 38 shows an example of dividing the current block into multiple subblocks using the read block information.

[0252] To divide a block into subblocks, block partitioning information for that block is derived. Here, the block partitioning information is derived according to the block information of the decoded block (e.g., block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partitioning depth, etc.). The block is divided into multiple subblocks using the block partitioning information. As shown in Figure 38, if the block partitioning information used is different, the height, width, or shape of the multiple subblocks resulting from the block partitioning will also be different.

[0253] The block partition structure of the current block can be the same as that of the selected decoded block.

[0254] It is also possible to derive a new block partition structure as the block partition structure of the current block by combining the block partition structures of two or more selected decoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block).

[0255] The block partition structure of the selected decrypted block can also be modified (for example, by using a block partition structure with a shallower partition depth, as shown in Figure 40), and the new block partition structure can be derived as the block partition structure of the current block.

[0256] The block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0257] Block partitioning information may differ for each intra-prediction direction of a selected decoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be derived for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be derived for the current block.

[0258] The block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0259] Block partitioning information may be derived according to the intra / inter prediction mode of the selected decoded block. For example, if the prediction mode of the selected decoded block is intra prediction mode, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the selected decoded block is inter prediction mode, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0260] Block partitioning information may be derived according to the motion vector of the selected decoded block. For example, if the difference between the motion vector of the selected decoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the selected decoded block and the motion vector of the current block is less than or equal to a predetermined threshold, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0261] Block partitioning information can also be derived according to the quantization parameters of the selected decoded block. For example, if the value of the quantization parameter of the selected decoded block is smaller than a predetermined value, predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the selected decoded block is greater than or equal to a predetermined value, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0262] Block partitioning information can also be derived according to the reference picture information of the selected decrypted block. For example, if the reference picture of the decrypted block is temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are similar to each other, a predetermined block partitioning information can be derived that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the decrypted block is not temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are not similar to each other, other predetermined block partitioning information can be derived that divides the block into multiple subblocks of a relatively small block size.

[0263] Block partitioning information may be derived according to the partitioning depth of the selected decrypted block. For example, if the partitioning depth of the selected decrypted block is greater than a predetermined value (e.g., 4), predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the selected decrypted block is less than or equal to the predetermined value (e.g., the partitioning depth is equal to 2), other predetermined block partitioning information can be derived that divides the block into multiple subblocks of relatively large block sizes.

[0264] Block partitioning information may be predicted according to the partitioning information of decoded blocks in frames different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block can be derived from the block information of decoded blocks in frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks identified by motion vectors).

[0265] In step S4005, subblocks contained within multiple subblocks are decoded in a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0266] [Decoding device] The structure of the video / image decoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0267] (Embodiment 4) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor initializes block division information using the memory, and when the initialized block division information is used, the block is divided into a plurality of subblocks of a first geometry set, parameters are written to a bitstream, the initialized block division information is modified to modified block division information using the written parameters, when the modified block division information is used, the block is divided into a plurality of subblocks of a geometry set different from the first geometry set, the geometry of the plurality of subblocks is modified using the modified block division information, and the subblocks included in the plurality of subblocks are encoded in an encoding process including a transformation process and / or a prediction process.

[0268] This allows the initialized block partitioning information to be adaptively modified to corrected block partitioning information using parameters. This modified block partitioning information can then be used to modify the geometry of multiple subblocks. As a result, the amount of code associated with the block partitioning information can be reduced, improving compression efficiency.

[0269] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0270] This allows the shape and / or size of the block to be used as geometry.

[0271] For example, in the encoding device according to this embodiment, the process of initializing the block division information may include the process of selecting block division information from a predetermined block division information list.

[0272] This allows the block partitioning information to be initialized by selecting it from a predetermined list. Therefore, it is sufficient for the block partitioning information to include information that identifies the block partitioning information within the list, thereby reducing the amount of code associated with the block partitioning information and improving compression efficiency.

[0273] For example, in the encoding device according to this embodiment, the process of initializing the block division information may include the process of generating block division information using predetermined parameters relating to geometry.

[0274] This allows the block partitioning information to be initialized by generating block partitioning information using parameters.

[0275] For example, in the encoding device according to this embodiment, the block division depth may be determined based on at least one of the picture type and quantization parameters of the current block during the initialization of the block division information.

[0276] This allows the division depth to be determined based on the picture type and / or quantization parameters of the current block during the initialization of block division information. Therefore, the division depth can be determined based on existing information in the bitstream, reducing the amount of code associated with block division information. Furthermore, by using the picture type and / or quantization parameters of the current block, block division information can be initialized with an appropriate division depth for the current block, improving compression efficiency.

[0277] For example, in the encoding device according to this embodiment, the written parameters may include the difference between the division depth indicated by the initialized block division information and the division depth indicated by the modified block division information.

[0278] This allows for the modification of block division depth using parameters, enabling the use of subblocks more suitable for encoding. As a result, compression efficiency can be improved.

[0279] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor initializes block division information using the memory, and when the initialized block division information is used, the block is divided into a plurality of subblocks of a first geometry set, parameters are analyzed from the bitstream, and the initialized block division information is modified into modified block division information using the analyzed parameters, and when the modified block division information is used, the block is divided into a plurality of subblocks of a geometry set different from the first geometry set, the geometry of the plurality of subblocks is modified using the modified block division information, and the subblocks included in the plurality of subblocks are decoded in a decoding process including an inverse transformation process and / or a prediction process.

[0280] This allows the initialized block partitioning information to be adaptively modified to corrected block partitioning information using parameters. This modified block partitioning information can then be used to modify the geometry of multiple subblocks. As a result, the amount of code associated with the block partitioning information can be reduced, improving compression efficiency.

[0281] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0282] This allows the shape and / or size of the block to be used as geometry.

[0283] For example, in the decoding device according to this embodiment, the process of initializing the block division information may include the process of selecting block division information from a predetermined block division information list.

[0284] This allows the block partitioning information to be initialized by selecting it from a predetermined list. Therefore, it is sufficient for the block partitioning information to include information that identifies the block partitioning information within the list, thereby reducing the amount of code associated with the block partitioning information and improving compression efficiency.

[0285] For example, in the decoding device according to this embodiment, the process of initializing the block division information may include a process of generating block division information using predetermined parameters relating to geometry.

[0286] This allows the block partitioning information to be initialized by generating block partitioning information using parameters.

[0287] For example, in the decoding device according to this embodiment, the block division depth may be determined based on at least one of the picture type and quantization parameters of the current block during the initialization of the block division information.

[0288] This allows the division depth to be determined based on the picture type and / or quantization parameters of the current block during the initialization of block division information. Therefore, the division depth can be determined based on existing information in the bitstream, reducing the amount of code associated with block division information. Furthermore, by using the picture type and / or quantization parameters of the current block, block division information can be initialized with an appropriate division depth for the current block, improving compression efficiency.

[0289] For example, in the decoding device according to this embodiment, the analyzed parameters may include the difference between the division depth indicated by the initialized block division information and the division depth indicated by the modified block division information.

[0290] This allows for the modification of block division depth using parameters, enabling the use of subblocks more suitable for encoding. As a result, compression efficiency can be improved.

[0291] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0292] The methods for encoding and decoding video will be described according to the embodiments shown in Figures 15 and 16, respectively.

[0293] [Encoding process] Figure 15 shows an example of video encoding processing according to Embodiment 4.

[0294] As the first step S5001, the block division information is initialized. If this initialized block division information (hereinafter referred to as initial block division information) is used, the block is divided into multiple subblocks of the first geometry set. As shown in Figure 38, if different block division information is used, the height, width, or shape of the multiple subblocks resulting from the block division will also be different.

[0295] The initial block partition structure of the current block can be the same as that of the encoded block.

[0296] It is also possible to derive a new block partition structure as the initial block partition structure of the current block by combining the block partition structures of two or more encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One example of a method for selecting an encoded block is to select an encoded block that is in the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, then one or more encoded blocks encoded using inter-prediction are selected.

[0297] The block partition structure of the encoded block can also be modified (for example, by using a block partition structure with a shallower partition depth, as shown in Figure 40), and the new block partition structure can be derived as the initial block partition structure of the current block.

[0298] The initial block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the initial block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0299] The initial block partitioning information may differ for each encoded block's intra-prediction direction. For example, intra-prediction direction information at a specific adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, the block partitioning information for the current block can be initialized to include vertical partitioning. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, the block partitioning information for the current block can be initialized to include horizontal partitioning.

[0300] The initial block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the initial block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0301] Block partitioning information can be initialized according to the intra / inter prediction mode of the encoded block. For example, if the prediction mode of the encoded block is intra prediction mode, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the encoded block is inter prediction mode, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0302] Block partitioning information may be initialized according to the motion vector of the encoded block. For example, if the difference between the motion vector of the encoded block and the motion vector of the current block is greater than a predetermined threshold, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the encoded block and the motion vector of the current block is less than or equal to a predetermined threshold, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0303] The block partitioning information may be initialized according to the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is less than a predetermined value, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the encoded block is greater than or equal to a predetermined value, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0304] Block partitioning information may be initialized according to the reference picture information of the encoded block. For example, if the reference picture of the encoded block is temporally close to the current picture, or if multiple reference pictures of multiple encoded blocks are similar to each other, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the encoded block is not temporally close to the current picture, or if multiple reference pictures of multiple encoded blocks are not similar to each other, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of a relatively small block size.

[0305] Block partitioning information may be initialized according to the partitioning depth of the encoded block. For example, if the partitioning depth of the encoded block is greater than a predetermined value (e.g., 4), the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the encoded block is less than or equal to the predetermined value (e.g., if the partitioning depth is equal to 2), the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0306] Block partitioning information may be initialized according to the partitioning information of an encoded block in a frame different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block may be initialized from an encoded block in an encoded frame different from the current frame (e.g., a collocated block, the last encoded block, or an encoded block identified by a motion vector).

[0307] Next, in step S5002, the parameters are written to the bitstream. Figure 37 shows the writable locations for the above parameters in the compressed video bitstream.

[0308] In step S5003, the initial block division information is modified into modified block division information using the written parameters. When this modified block division information is used, the block is divided into multiple subblocks of a geometry set different from the first geometry set. The written parameters include one or more parameters for modifying the initial block division information into modified block division information.

[0309] For example, the written parameters may include a partitioning flag that divides a block into multiple subblocks. As shown in Figure 42A, using this parameter changes the value of the quadtree (QT) partitioning flag, modifying the initial block partition structure.

[0310] As another example, the written parameters may include merge flags that combine smaller blocks hierarchically to create larger blocks based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42B, using this parameter combines multiple blocks into larger blocks, modifying the initial block partition structure. Figure 43 shows an example of combining smaller blocks hierarchically to create larger blocks.

[0311] As another example, the written parameters may include split enable flags that hierarchically divide larger blocks into smaller blocks based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42C, using this parameter divides blocks into smaller subblocks and modifies the initial block partition structure.

[0312] As another example, the written parameters may include the difference between the division depth indicated by the initial block division information and the division depth indicated by the modified block division information. Using this parameter, the block division depth is modified.

[0313] It is also possible to construct the final block partition structure by combining different partitioning methods, such as splitting blocks and merging smaller blocks. The bitstream header may include control parameters such as one or more toggle parameters or flags indicating whether to use a merge enable flag or a split enable flag.

[0314] Using initial block partitioning information or modified block partitioning information, various block partition structures can be obtained using various partitioning methods. Possible partitioning methods include binary tree partitioning as shown in Figures 41 b1) and b2), quadrutree partitioning as shown in Figures 41 q1) and q2), multi-tree cut / partitioning as shown in Figures 41 m1) and m2), or non-square / non-rectangular partitioning as shown in Figure 41 n1). Various geometries are possible for the subblocks (shape and / or size), such as asymmetric binary tree partitioning as shown in Figure 41 b2), asymmetric quadrutree partitioning as shown in Figure 41 q2), multi-tree cuts of different sizes as shown in Figure 41 m1), or non-square / non-rectangular partitioning as shown in Figure 41 n1).

[0315] The written parameters can, for example, indicate that no modifications are needed. If no modifications are needed, steps S5003 and S5004 can be omitted. Therefore, before proceeding to step S5005, the block is divided into multiple subblocks using the initial block division information. Then, in step S5005, encoding the subblocks contained in the multiple subblocks divided using the modified block division information is replaced with encoding the subblocks contained in the multiple subblocks divided using the initial block division information.

[0316] In step S5004, the geometry of multiple subblocks is modified using the modified block division information.

[0317] In step S5005, the subblocks contained within the multiple subblocks are encoded by an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for each block that is roughly the same size as the subblock.

[0318] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0319] [Decryption process] Figure 16 shows an example of video decoding processing according to Embodiment 4.

[0320] As the first step S6001, the block division information is initialized. If this initial block division information is used, the block is divided into multiple subblocks of the first geometry set. As shown in Figure 38, if different block division information is used, the height, width, or shape of the multiple subblocks resulting from the block division will also differ.

[0321] The initial block partition structure of the current block can be the same as that of the decrypted block.

[0322] It is also possible to derive a new block partition structure as the initial block partition structure of the current block by combining the block partition structures of two or more decrypted blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One method for selecting a decrypted block is to select a decrypted block that is in the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, then one or more decrypted blocks decrypted using inter-prediction are selected.

[0323] The block partition structure of the decrypted block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the initial block partition structure of the current block.

[0324] The initial block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the initial block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0325] The initial block partitioning information may differ for each intra-predicted direction of a decrypted block. For example, intra-predicted direction information at a specific adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-predicted direction information of the upper adjacent block is determined to be vertical or close to vertical, the block partitioning information for the current block can be initialized to include vertical partitioning. Similarly, if the intra-predicted direction information of the left adjacent block is determined to be horizontal or close to horizontal, the block partitioning information for the current block can be initialized to include horizontal partitioning.

[0326] The initial block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the initial block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0327] Block partitioning information can be initialized according to the intra / inter prediction mode of the decrypted block. For example, if the prediction mode of the decrypted block is intra prediction mode, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the decrypted block is inter prediction mode, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0328] The block partitioning information may be initialized according to the motion vector of the decoded block. For example, if the difference between the motion vector of the decoded block and the motion vector of the current block is greater than a predetermined threshold, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the decoded block and the motion vector of the current block is less than or equal to a predetermined threshold, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0329] The block partitioning information may be initialized according to the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is less than a predetermined value, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the decoded block is greater than or equal to a predetermined value, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0330] Block partitioning information may be initialized according to the reference picture information of the decrypted block. For example, if the reference picture of the decrypted block is temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are similar to each other, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the decrypted block is not temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are not similar to each other, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of a relatively small block size.

[0331] Block partitioning information may be initialized according to the partitioning depth of the decrypted block. For example, if the partitioning depth of the decrypted block is greater than a predetermined value (e.g., 4), the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the decrypted block is less than or equal to the predetermined value (e.g., if the partitioning depth is equal to 2), the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0332] Block partitioning information may be initialized according to the partitioning information of decoded blocks in a frame different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block may be initialized from decoded blocks in a frame different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks identified by motion vectors).

[0333] Next, in step S6002, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream.

[0334] In step S6003, the initial block division information is modified into corrected block division information using the analyzed parameters. Using this corrected block division information, the block is divided into multiple subblocks of a geometry set different from the first geometry set. The analyzed parameters include one or more parameters for modifying the initial block division information into corrected block division information.

[0335] For example, the analyzed parameters may include a partitioning flag that divides a block into multiple subblocks. As shown in Figure 42A, using this parameter changes the value of the quadtree (QT) partitioning flag, modifying the initial block partition structure.

[0336] As another example, the analyzed parameters may include merge flags that combine smaller blocks hierarchically to create larger blocks based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42B, using this parameter, multiple blocks are combined to create larger blocks, modifying the initial block partition structure. Figure 43 shows an example of combining smaller blocks hierarchically to create larger blocks.

[0337] As another example, the analyzed parameters may include split-enable flags that hierarchically divide larger blocks into smaller blocks based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42C, using this parameter, blocks are divided into smaller subblocks, modifying the initial block partition structure.

[0338] As another example, the analyzed parameters may include the difference between the partition depth indicated by the initial block partitioning information and the partition depth indicated by the modified block partitioning information. This parameter can be used to modify the block partitioning depth.

[0339] It is also possible to construct the final block partition structure by combining different partitioning methods, such as splitting blocks and merging smaller blocks. The bitstream header may include control parameters such as one or more toggle parameters or flags indicating whether to use a merge enable flag or a split enable flag.

[0340] Using initial block partitioning information or modified block partitioning information, various block partition structures can be obtained using various partitioning methods. Possible partitioning methods include binary tree partitioning as shown in Figures 41 b1) and b2), quadrutree partitioning as shown in Figures 41 q1) and q2), multi-tree cut / partitioning as shown in Figures 41 m1) and m2), or non-square / non-rectangular partitioning as shown in Figure 41 n1). Various geometries are possible for the subblocks (shape and / or size), such as asymmetric binary tree partitioning as shown in Figure 41 b2), asymmetric quadrutree partitioning as shown in Figure 41 q2), multi-tree cuts of different sizes as shown in Figure 41 m1), or non-square / non-rectangular partitioning as shown in Figure 41 n1).

[0341] The analyzed parameters can, for example, indicate that no modifications are needed. If no modifications are needed, steps S6003 and S6004 can be omitted. Therefore, before proceeding to step S6005, the block is divided into multiple subblocks using the initial block division information. Then, in step S6005, the decoding of the subblocks contained in the multiple subblocks divided using the modified block division information is replaced with the decoding of the subblocks contained in the multiple subblocks divided using the initial block division information.

[0342] In step S6004, the geometry of multiple subblocks is modified using the modified block division information.

[0343] In step S6005, the subblocks contained within the multiple subblocks are decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for each block that is roughly the same size as the subblock.

[0344] [Decoding device] The structure of the video / image decoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0345] In this embodiment, default block division information may be used as the initial block division information. Default block division information is predetermined block division information. For example, default block division information may be block division information predetermined in a standard specification. Alternatively, default block division information may be block division information written in a header higher than the block. When default block division information is used, in steps S5001 and S6001, instead of initializing the block division information, the default block division information is acquired.

[0346] In this embodiment, an example of initializing block partitioning information based on the block information of an encoded or decoded block was described, but the embodiment is not limited to this. For example, in initializing block partitioning information, the partitioning depth may be determined based on at least one of the picture type (I, P, or B picture) and quantization parameters of the current block.

[0347] Specifically, for example, if the picture type of the current block is an I-picture, the block partitioning information may be initialized to partition the block at a relatively deep partitioning depth. Alternatively, for example, if the picture type of the current block is a P-picture or a B-picture, the block partitioning information may be initialized to partition the block at a relatively shallow partitioning depth.

[0348] For example, the division depth in the initial block division information may be determined based on the quantization parameter of the current block. Specifically, if the value of the quantization parameter of the current block is smaller than a predetermined value, the block division information may be initialized to block division information that divides the block at a relatively deep division depth. Alternatively, for example, if the value of the quantization parameter of the current block is greater than or equal to a predetermined value, the block division information may be initialized to other block division information that divides the block at a relatively shallow division depth.

[0349] (Embodiment 5) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, divides a block into a plurality of subblocks, uses the written parameters to combine at least two subblocks contained in the plurality of subblocks into a combined block, and encodes the combined block with an encoding process including a conversion process and / or a prediction process.

[0350] This allows at least two subblocks to be combined using parameters. Therefore, the division of the current block can be modified with parameters, and more suitable subblocks for encoding can be utilized. As a result, compression efficiency can be improved.

[0351] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze parameters from a bitstream, divides a block into a plurality of subblocks, uses the analyzed parameters to combine at least two subblocks contained in the plurality of subblocks into a combined block, and decodes the combined block in a decoding process including an inverse transformation process and / or a prediction process.

[0352] This allows for the merging of at least two subblocks using parameters. Therefore, the current block's partitioning can be modified with parameters, allowing for the use of subblocks more suitable for decoding. As a result, compression efficiency can be improved.

[0353] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0354] The methods for encoding and decoding video will be described according to the embodiments shown in Figures 17 and 18, respectively.

[0355] [Encoding process] Figure 17 shows an example of video encoding processing according to Embodiment 5.

[0356] As the first step S7001, the parameters are written to the bitstream. Figure 37 shows the writable locations of the above parameters in the compressed video bitstream.

[0357] Next, in step S7002, the block is divided into multiple subblocks using the initial block division information. As shown in Figure 38, if different block division information is used, the height, width, or shape of the multiple subblocks resulting from the block division will also differ.

[0358] The initial block partition structure of the current block can be the same as that of the encoded block. Alternatively, the default block partition structure can be used as the initial block partition structure of the current block.

[0359] It is also possible to derive a new block partition structure as the initial block partition structure of the current block by combining the block partition structures of two or more encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One example of a method for selecting an encoded block is to select an encoded block that is in the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, then one or more encoded blocks encoded using inter-prediction are selected.

[0360] The block partition structure of the encoded block can also be modified (for example, by using a block partition structure with a shallower partition depth, as shown in Figure 40), and the new block partition structure can be derived as the initial block partition structure of the current block.

[0361] The initial block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the initial block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0362] The initial block partitioning information may differ for each encoded block's intra-prediction direction. For example, intra-prediction direction information at a specific adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, the block partitioning information for the current block can be initialized to include vertical partitioning. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, the block partitioning information for the current block can be initialized to include horizontal partitioning.

[0363] The initial block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the initial block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0364] Block partitioning information can be initialized according to the intra / inter prediction mode of the encoded block. For example, if the prediction mode of the encoded block is intra prediction mode, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the encoded block is inter prediction mode, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0365] Block partitioning information may be initialized according to the motion vector of the encoded block. For example, if the difference between the motion vector of the encoded block and the motion vector of the current block is greater than a predetermined threshold, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the encoded block and the motion vector of the current block is less than or equal to a predetermined threshold, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0366] The block partitioning information may be initialized according to the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is less than a predetermined value, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the encoded block is greater than or equal to a predetermined value, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0367] Block partitioning information may be initialized according to the reference picture information of the encoded block. For example, if the reference picture of the encoded block is temporally close to the current picture, or if multiple reference pictures of multiple encoded blocks are similar to each other, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the encoded block is not temporally close to the current picture, or if multiple reference pictures of multiple encoded blocks are not similar to each other, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of a relatively small block size.

[0368] Block partitioning information may be initialized according to the partitioning depth of the encoded block. For example, if the partitioning depth of the encoded block is greater than a predetermined value (e.g., 4), the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the encoded block is less than or equal to the predetermined value (e.g., if the partitioning depth is equal to 2), the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0369] Block partitioning information may be initialized according to the partitioning information of an encoded block in a frame different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block may be initialized from an encoded block in an encoded frame different from the current frame (e.g., a collocated block, the last encoded block, or an encoded block identified by a motion vector).

[0370] In step S7003, the written parameters are used to combine two or more subblocks contained within multiple subblocks into a merged block. For example, the written parameters may include merge flags that combine smaller blocks hierarchically to create a larger block based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42B, using these parameters, multiple blocks are combined into a larger block, and the initial block partition structure is modified. Figure 43 shows an example of combining smaller blocks hierarchically to create a larger block.

[0371] The partitioning method used to derive the block partition structure may differ before and after the join process in step S7003. Possible partitioning methods include, for example, a binary tree partition as shown in b1) and b2) of Figure 41, a quadtree partition as shown in q1) and q2) of Figure 41, a multi-tree cut / partition as shown in m1) and m2) of Figure 41, or a non-square / non-rectangular partition as shown in n1) of Figure 41. Various geometries are possible for the subblocks (shape and / or size), such as an asymmetric binary tree partition as shown in b2) of Figure 41, an asymmetric quadtree partition as shown in q2) of Figure 41, a multi-tree cut of different sizes as shown in m1) of Figure 41, or a non-square / non-rectangular partition as shown in n1) of Figure 41.

[0372] The parameters that are written can, for example, indicate that joining is not necessary. If joining is not necessary, step S7003 can be omitted. Therefore, the block will be divided into multiple subblocks using the initial block division information before proceeding to step S7004. Then, in step S7004, the subblocks will be encoded in the encoding process instead of the joined block.

[0373] In step S7004, the combined block is encoded using an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for every block of a size roughly equivalent to that of the subblock.

[0374] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0375] [Decryption process] Figure 18 shows an example of video decoding processing according to Embodiment 5.

[0376] As the first step S8001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream.

[0377] Next, in step S8002, the block is divided into multiple subblocks using the initial block division information. As shown in Figure 38, if different block division information is used, the height, width, or shape of the multiple subblocks resulting from the block division will also differ.

[0378] The initial block partition structure of the current block can be the same as that of the decrypted block.

[0379] It is also possible to derive a new block partition structure as the initial block partition structure of the current block by combining the block partition structures of two or more decrypted blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One method for selecting a decrypted block is to select a decrypted block that is in the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, then one or more decrypted blocks decrypted using inter-prediction are selected.

[0380] The block partition structure of the decrypted block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the initial block partition structure of the current block.

[0381] The initial block division information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the initial block division information may be a parameter set that includes predetermined block widths and predetermined block heights for all subblocks within the block.

[0382] The initial block partitioning information may differ for each intra-predicted direction of a decrypted block. For example, intra-predicted direction information at a specific adjacent block location may be used to determine whether to partition the current block vertically or horizontally into smaller blocks. For instance, if the intra-predicted direction information of the upper adjacent block is determined to be vertical or close to vertical, the block partitioning information for the current block can be initialized to include vertical partitioning. Similarly, if the intra-predicted direction information of the left adjacent block is determined to be horizontal or close to horizontal, the block partitioning information for the current block can be initialized to include horizontal partitioning.

[0383] The initial block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the initial block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0384] Block partitioning information can be initialized according to the intra / inter prediction mode of the decrypted block. For example, if the prediction mode of the decrypted block is intra prediction mode, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the decrypted block is inter prediction mode, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0385] The block partitioning information may be initialized according to the motion vector of the decoded block. For example, if the difference between the motion vector of the decoded block and the motion vector of the current block is greater than a predetermined threshold, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the decoded block and the motion vector of the current block is less than or equal to a predetermined threshold, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0386] The block partitioning information may be initialized according to the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is less than a predetermined value, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the decoded block is greater than or equal to a predetermined value, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0387] Block partitioning information may be initialized according to the reference picture information of the decrypted block. For example, if the reference picture of the decrypted block is temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are similar to each other, the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the decrypted block is not temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are not similar to each other, the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of a relatively small block size.

[0388] Block partitioning information may be initialized according to the partitioning depth of the decrypted block. For example, if the partitioning depth of the decrypted block is greater than a predetermined value (e.g., 4), the block partitioning information can be initialized to a predetermined block partitioning information that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the decrypted block is less than or equal to the predetermined value (e.g., if the partitioning depth is equal to 2), the block partitioning information can be initialized to another predetermined block partitioning information that divides the block into multiple subblocks of relatively large block sizes.

[0389] Block partitioning information may be initialized according to the partitioning information of decoded blocks in a frame different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block may be initialized from decoded blocks in a frame different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks identified by motion vectors).

[0390] In step S8003, the analyzed parameters are used to combine two or more subblocks contained within multiple subblocks into a merged block. For example, the analyzed parameters may include merge flags that combine smaller blocks hierarchically to create a larger block based on a predetermined scan order (such as raster scan or Z scan). As shown in Figure 42B, using these parameters, multiple blocks are combined into a larger block, and the initial block partition structure is modified. Figure 43 shows an example of combining smaller blocks hierarchically to create a larger block.

[0391] The partitioning method used to derive the block partition structure may differ before and after the join process in step S8003. Possible partitioning methods include, for example, a binary tree partition as shown in b1) and b2) of Figure 41, a quadtree partition as shown in q1) and q2) of Figure 41, a multi-tree cut / partition as shown in m1) and m2) of Figure 41, or a non-square / non-rectangular partition as shown in n1) of Figure 41. Various geometries are possible for the subblocks (shape and / or size), such as an asymmetric binary tree partition as shown in b2) of Figure 41, an asymmetric quadtree partition as shown in q2) of Figure 41, a multi-tree cut of different sizes as shown in m1) of Figure 41, or a non-square / non-rectangular partition as shown in n1) of Figure 41.

[0392] The analyzed parameters can, for example, indicate that a join is not necessary. If a join is not necessary, step S8003 can be omitted. Therefore, the block is divided into multiple subblocks using the initial block division information before proceeding to step S8004. Then, in step S8004, the subblocks are decoded in the decodement process instead of the joined block.

[0393] In step S8004, the combined block is decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0394] [Decoding device] The structure of the video / image decoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0395] (Embodiment 6) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read the geometry of the block, determines whether the read geometry is equal to a predetermined geometry, divides the block into a predetermined number of subblocks of a first geometry set if the read geometry is equal to the predetermined geometry, divides the block into a predetermined number of subblocks of another geometry set different from the first geometry set, and encodes the subblocks in an encoding process including a transformation process and / or a prediction process.

[0396] This allows a block to be divided based on its geometry. Therefore, the amount of code associated with block division information can be reduced, improving compression efficiency. Furthermore, utilizing block geometry contributes to the creation of subblocks more suitable for encoding, further improving compression efficiency.

[0397] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0398] This allows the shape and / or size of the block to be used as geometry.

[0399] For example, in the encoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0400] This allows the block to be divided such that at least one of the height and width of the subblock is a power of 2. Therefore, it is possible to obtain subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0401] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read the geometry of the block, determines whether the read geometry is equal to a predetermined geometry, divides the block into a predetermined number of subblocks of a first geometry set if the read geometry is equal to the predetermined geometry, divides the block into a predetermined number of subblocks of another geometry set different from the first geometry set, and decodes the subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0402] This allows a block to be divided based on its geometry. Therefore, the amount of code associated with block division information can be reduced, improving compression efficiency. Furthermore, utilizing block geometry contributes to the creation of subblocks more suitable for encoding, further improving compression efficiency.

[0403] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0404] This allows the shape and / or size of the block to be used as geometry.

[0405] For example, in the decoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0406] This allows the blocks to be divided such that at least one of the height and width of the subblocks is a power of 2. Therefore, it is possible to use subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0407] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0408] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 19 and 20, respectively.

[0409] [Encoding process] Figure 19 shows an example of video encoding processing according to Embodiment 6.

[0410] The first step, S9001, is to read the block geometry. Here, the geometry indicates at least the shape, height, or width of the block. As shown in Figure 44, different geometry will result in different shapes, block heights, or block widths for the multiple subblocks that are the result of the block division.

[0411] Next, in step S9002, it is determined whether the read geometry is equal to a predetermined geometry.

[0412] If the read geometry is equal to a predetermined geometry (Y in S9002), in step S9003, the block is divided into a predetermined number of subblocks of the first geometry set. If the read geometry is not equal to a predetermined geometry (N in S9002), in step S9004, the block is divided into a predetermined number of subblocks of a different geometry set than the first geometry set.

[0413] For example, as shown in Figure 45A (a1), if the predetermined number of subblocks is set to 2, and the block width is a power of 2 (e.g., 32), the block can be vertically divided into two subblocks in a ratio of 1:3 or 3:1. On the other hand, as shown in Figure 45A (a2), if the width is not a power of 2 (e.g., 24), the block can be vertically divided into two subblocks in a ratio of 1:2 or 2:1. Similarly, depending on whether the block height is a power of 2 or not, the block can be horizontally divided into two subblocks.

[0414] As another example, as shown in (c1) of Figure 45C, if the predetermined number of subblocks is set to 2, the block can be horizontally divided into two subblocks of equal size if the block width (e.g., 8) is smaller than the block height (e.g., 32). On the other hand, as shown in (c2) of Figure 45C, if the width (e.g., 32) is larger than the block height (e.g., 8), the block can be vertically divided into two subblocks of equal size.

[0415] If the predetermined number of subblocks is set to 4, then, for example, as shown in Figure 45B(b1), if the block width is a power of 2 (e.g., 32), the block can be divided into 4 subblocks, each with a width of 3 times the width of the smallest subblock. On the other hand, as shown in Figure 45B(b2), if the block width is not a power of 2 (e.g., 24), the block can be divided into 4 subblocks, each with a width of 2 times the width of the smallest subblock.

[0416] As another example, as shown in (d1) of Figure 45D, if the predetermined number of subblocks is set to 4, the block can be divided equally both vertically and horizontally if the block width (e.g., 32) is the same as the block height (e.g., 32). As shown in (d2) of Figure 45D, the block can be divided equally vertically if the block width (e.g., 32) is four times the block height (e.g., 8). Similarly, the block can be divided equally horizontally if the block height (e.g., 32) is four times the block width (e.g., 8).

[0417] As shown in Figures 45A to 45D, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0418] In step S9005, the subblock is encoded using an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to the subblock.

[0419] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0420] [Decryption process] Figure 20 shows an example of video decoding processing according to Embodiment 6.

[0421] The first step, S10001, is to read the block geometry. Here, the geometry indicates at least the shape, height, or width of the block. As shown in Figure 44, different geometry will result in different shapes, block heights, or block widths for the multiple subblocks that are the result of the block division.

[0422] Next, in step S10002, it is determined whether the read geometry is equal to a predetermined geometry.

[0423] If the read geometry is equal to a predetermined geometry (Y in S10002), in step S10003, the block is divided into a predetermined number of subblocks consisting of a first geometry set. If the read geometry is not equal to a predetermined geometry (N in S10002), in step S10004, the block is divided into a predetermined number of subblocks consisting of a different geometry set from the first geometry set.

[0424] For example, as shown in Figure 45A (a1), if the predetermined number of subblocks is set to 2, and the block width is a power of 2 (e.g., 32), the block can be vertically divided into two subblocks in a ratio of 1:3 or 3:1. On the other hand, as shown in Figure 45A (a2), if the width is not a power of 2 (e.g., 24), the block can be vertically divided into two subblocks in a ratio of 1:2 or 2:1. Similarly, depending on whether the block height is a power of 2 or not, the block can be horizontally divided into two subblocks.

[0425] As another example, as shown in (c1) of Figure 45C, if the predetermined number of subblocks is set to 2, the block can be horizontally divided into two subblocks of equal size if the block width (e.g., 8) is smaller than the block height (e.g., 32). On the other hand, as shown in (c2) of Figure 45C, if the width (e.g., 32) is larger than the block height (e.g., 8), the block can be vertically divided into two subblocks of equal size.

[0426] For example, as shown in Figure 45B(b1), if the predetermined number of subblocks is set to 4, and the block width is a power of 2 (e.g., 32), the block can be divided into 4 subblocks, each with a width of 3 times the width of the smallest subblock. On the other hand, as shown in Figure 45B(b2), if the block width is not a power of 2 (e.g., 24), the block can be divided into 4 subblocks, each with a width of 2 times the width of the smallest subblock.

[0427] For example, as shown in (d1) of Figure 45D, if the predetermined number of subblocks is set to 4, then if the block width (e.g., 32) is the same as the block height (e.g., 32), the block can be divided equally both vertically and horizontally. As shown in (d2) of Figure 45D, if the block width (e.g., 32) is four times the block height (e.g., 8), the block can be divided equally vertically. Similarly, if the block height (e.g., 32) is four times the block width (e.g., 8), the block can be divided equally horizontally.

[0428] As shown in Figures 45A to 45D, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0429] In step S10005, the subblock is decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for blocks of a size roughly equivalent to the subblock.

[0430] [Decoding device] The structure of the video / image decoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0431] (Embodiment 7) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, determines whether the written parameters are equal to a predetermined value, divides the block into a predetermined number of subblocks of a first geometry set if the written parameters are equal to the predetermined value, divides the block into a predetermined number of subblocks of another geometry set different from the first geometry set, and encodes the subblocks in an encoding process including a transformation process and / or a prediction process.

[0432] This allows switching between a predetermined set of geometry for a given number of subblocks after division, depending on whether the parameter is equal to a predetermined value or not.

[0433] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0434] This allows the shape and / or size of the block to be used as geometry.

[0435] For example, in the encoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0436] This allows the block to be divided such that at least one of the height and width of the subblock is a power of 2. Therefore, it is possible to obtain subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0437] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze parameters from a bitstream, determines whether the analyzed parameters are equal to predetermined values, divides the block into a predetermined number of subblocks of a first geometry set if the analyzed parameters are equal to the predetermined values, divides the block into a predetermined number of subblocks of a first geometry set if the analyzed parameters are not equal to the predetermined values, and decodes the subblocks in a decoding process including inverse transformation and / or prediction processing.

[0438] This allows switching between a predetermined set of geometry for a given number of subblocks after division, depending on whether the parameter is equal to a predetermined value or not.

[0439] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0440] This allows the shape and / or size of the block to be used as geometry.

[0441] For example, in the decoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0442] This allows the blocks to be divided such that at least one of the height and width of the subblocks is a power of 2. Therefore, it is possible to use subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0443] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0444] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 21 and 22, respectively.

[0445] [Encoding process] Figure 21 shows an example of video encoding processing according to Embodiment 7.

[0446] As the first step S11001, the parameters are written to the bitstream. Figure 37 shows the writable locations of the above parameters in the compressed video bitstream.

[0447] Next, in step S11002, it is determined whether the written parameter is equal to a predetermined value.

[0448] If the written parameter is equal to a predetermined value (Y in S11002), in step S11003, the block is divided into a predetermined number of subblocks of the first geometry set. If the written parameter is not equal to a predetermined value (N in S11002), in step S11004, the block is divided into a predetermined number of subblocks of a different geometry set than the first geometry set.

[0449] The parameters written can indicate the partitioning mode (e.g., quadtree / binary / multitree partitioning, vertical / horizontal partitioning, symmetric / asymmetric partitioning, and the ratio of block width to block height of subblocks).

[0450] For example, for a 24x32 block, the parameters written, as shown in (a1) of Figure 46A, can indicate that the partition is a binary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the two subblocks is 1:2. In this case, the 24x32 block is divided into an 8x32 subblock and a 16x32 subblock.

[0451] As another example, for a 24x32 block, the parameters written, as shown in Figure 46A(a2), can indicate that the partition is a binary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the two subblocks is 2:1. In this case, the 24x32 block is partitioned into a 16x32 subblock and an 8x32 subblock.

[0452] For example, for a 24x24 block, the parameters written, as shown in (b1) of Figure 46B, can indicate that the partition is a quadtree partition, that the top-left subblock is the largest subblock, and that the ratio of the block widths of the largest and smallest subblocks is 2:1. In this case, the 24x24 block is partitioned into a 16x16 subblock, an 8x16 subblock, a 16x8 subblock, and an 8x8 subblock.

[0453] As another example, for a 24x24 block, the parameters written, as shown in (b2) of Figure 46B, can indicate that the partition is a quadtree partition, that the bottom-right subblock is the largest subblock, and that the ratio of the block widths of the largest and smallest subblocks is 2:1. In this case, the 24x24 block is partitioned into 8x8 subblocks, 16x8 subblocks, 8x16 subblocks, and 16x16 subblocks.

[0454] For example, for a 32x32 block, the parameters written, as shown in (c1) of Figure 46C, can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 1:1:2. In this case, the 32x32 block is divided into two 8x32 subblocks and one 16x32 subblock.

[0455] As another example, for a 32x32 block, the parameters written, as shown in (c2) of Figure 46C, can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 2:1:1. In this case, the 32x32 block is partitioned into a 16x32 subblock and two 8x16 subblocks.

[0456] For example, for a 32x32 block, the parameters written, as shown in (d1) of Figure 46D, can indicate that the partition is a quadtree partition and that the partition includes both vertical and horizontal directions. In this case, the 32x32 block is divided into four 16x16 subblocks.

[0457] As another example, for a 32x32 block, the parameters written can indicate that the partition is a quadtree partition and that the partition includes only vertical partitions, as shown in (d2) of Figure 46D. In this case, the 32x32 block is divided into four 8x32 subblocks.

[0458] As shown in Figures 46A to 46D, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0459] In step S11005, the subblock is encoded using an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to the subblock.

[0460] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0461] [Decryption process] Figure 22 shows an example of video decoding processing according to Embodiment 7.

[0462] As the first step S12001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream.

[0463] Next, in step S12002, it is determined whether the analyzed parameter is equal to a predetermined value.

[0464] If the analyzed parameters are equal to a predetermined value (Y in S12002), in step S12003, the block is divided into a predetermined number of subblocks of the first geometry set. If the analyzed geometry is not equal to a predetermined value (N in S12002), in step S12004, the block is divided into a predetermined number of subblocks of a different geometry set than the first geometry set.

[0465] The analyzed parameters can indicate the partitioning mode (e.g., quadtree / binary / multitree partitioning, vertical / horizontal partitioning, symmetric / asymmetric partitioning, and the ratio of block width to block height of subblocks).

[0466] For example, for a 24x32 block, as shown in (a1) of Figure 46A, the analyzed parameters can indicate that the partition is a binary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the two subblocks is 1:2. In this case, the 24x32 block is divided into an 8x32 subblock and a 16x32 subblock.

[0467] As another example, for a 24x32 block, as shown in Figure 46A (a2), the analyzed parameters can indicate that the partition is a binary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the two subblocks is 2:1. In this case, the 24x32 block is partitioned into a 16x32 subblock and an 8x32 subblock.

[0468] For example, for a 24x24 block, as shown in (b1) of Figure 46B, the analyzed parameters can indicate that the partition is a quadtree partition, that the top-left subblock is the largest subblock, and that the ratio of the block widths of the largest and smallest subblocks is 2:1. In this case, the 24x24 block is divided into a 16x16 subblock, an 8x16 subblock, a 16x8 subblock, and an 8x8 subblock.

[0469] As another example, for a 24x24 block, as shown in (b2) of Figure 46B, the analyzed parameters can be shown to indicate that the partition is a quadtree partition, that the bottom-right subblock is the largest subblock, and that the ratio of the block widths of the largest and smallest subblocks is 2:1. In this case, the 24x24 block is partitioned into 8x8 subblocks, 16x8 subblocks, 8x16 subblocks, and 16x16 subblocks.

[0470] For example, for a 32x32 block, as shown in (c1) of Figure 46C, the analyzed parameters can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 1:1:2. In this case, the 32x32 block is divided into two 8x32 subblocks and a 16x32 subblock.

[0471] As another example, for a 32x32 block, as shown in (c2) of Figure 46C, the analyzed parameters can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 2:1:1. In this case, the 32x32 block is partitioned into a 16x32 subblock and two 8x16 subblocks.

[0472] For example, for a 32x32 block, the analyzed parameters, as shown in (d1) of Figure 46D, can indicate that the partition is a quadtree partition and that the partition includes both vertical and horizontal directions. In this case, the 32x32 block is divided into four 16x16 subblocks.

[0473] As another example, for a 32x32 block, the analyzed parameters, as shown in (d2) of Figure 46D, can indicate that the partition is a quadtree partition and that the partition includes only vertical elements. In this case, the 32x32 block is divided into four 8x32 subblocks.

[0474] As shown in Figures 46A to 46D, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0475] In step S12005, the subblock is decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for every block of a size roughly equivalent to that of the subblock.

[0476] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0477] (Embodiment 8) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read the geometry of a block, determines whether the read geometry is equal to a predetermined geometry, divides the block into a first number of subblocks if the read geometry is equal to the predetermined geometry, divides the block into a number of subblocks not equal to the first number if the read geometry is not equal to the predetermined geometry, and encodes the subblocks in an encoding process including a conversion process and / or a prediction process.

[0478] This allows a block to be divided into a number of subblocks based on the block's geometry. Therefore, the amount of code associated with block division information can be reduced, improving compression efficiency. Furthermore, the number of subblocks can be made dependent on the block's geometry. As a result, blocks can be divided more effectively, further improving compression efficiency.

[0479] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0480] This allows the shape and / or size of the block to be used as geometry.

[0481] For example, in the encoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0482] This allows the block to be divided such that at least one of the height and width of the subblock is a power of 2. Therefore, it is possible to obtain subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0483] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read the geometry of the block, determines whether the read geometry is equal to a predetermined geometry, divides the block into a first number of subblocks if the read geometry is equal to the predetermined geometry, divides the block into a number of subblocks not equal to the first number if the read geometry is not equal to the predetermined geometry, and decodes the subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0484] This allows a block to be divided into a number of subblocks based on the block's geometry. Therefore, the amount of code associated with block division information can be reduced, improving compression efficiency. Furthermore, the number of subblocks can be made dependent on the block's geometry. As a result, blocks can be divided more effectively, further improving compression efficiency.

[0485] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0486] This allows the shape and / or size of the block to be used as geometry.

[0487] For example, in the decoding device according to this embodiment, at least one of the height and width of the subblock may be a power of 2.

[0488] This allows the blocks to be divided such that at least one of the height and width of the subblocks is a power of 2. Therefore, it is possible to use subblocks of a size suitable for encoding, thereby improving compression efficiency.

[0489] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0490] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 23 and 24, respectively.

[0491] [Encoding process] Figure 23 shows an example of video encoding processing according to Embodiment 8.

[0492] The first step, S13001, is to read the block geometry. Here, the geometry indicates at least the shape, height, or width of the block. As shown in Figure 44, different geometry will result in different shapes, heights, or widths for the multiple subblocks that are the result of the block division.

[0493] Next, in step S13002, it is determined whether the read geometry is equal to a predetermined geometry.

[0494] If the read geometry is equal to a predetermined geometry (Y in S13002), in step S13003, the block is divided into a first number of subblocks. If the read geometry is not equal to a predetermined geometry (N in S13002), in step S13004, the block is divided into a number of subblocks not equal to the first number.

[0495] For example, as shown in Figure 47A (a1), if the width of a block is a power of 2, a block (e.g., 32 x 32) can be vertically divided into four subblocks of the same size (e.g., 8 x 32). On the other hand, as shown in Figure 47A (a2), if the width of a block is not a power of 2, a block (e.g., 24 x 32) can be vertically divided into three subblocks of the same size (e.g., 8 x 32).

[0496] As another example, as shown in Figure 47B (b1), if both the block width and block height of a block are powers of 2, and the block width is twice the block height, then a block (e.g., 64 × 32) can be equally divided into eight subblocks of equal size (e.g., 16 × 16). On the other hand, as shown in Figure 47B (b2), if both the block width and block height of a block are powers of 2, and the block width is equal to the block height, then a block (e.g., 32 × 32) can be equally divided into four subblocks of equal size (e.g., 16 × 16).

[0497] As shown in Figures 47A and 47B, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0498] In step S13005, the subblock is encoded using an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to the subblock.

[0499] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0500] [Decryption process] Figure 24 shows an example of video decoding processing according to Embodiment 8.

[0501] The first step, S14001, is to read the block geometry. Here, the geometry indicates at least the shape, height, or width of the block. As shown in Figure 44, different geometry will result in different shapes, block heights, or block widths for the multiple subblocks that are the result of the block division.

[0502] Next, in step S14002, it is determined whether the read geometry is equal to a predetermined geometry.

[0503] If the read geometry is equal to a predetermined geometry (Y in S14002), in step S14003, the block is divided into a first number of subblocks. If the read geometry is not equal to a predetermined geometry (N in S14002), in step S14004, the block is divided into a number of subblocks not equal to the first number.

[0504] For example, as shown in Figure 47A (a1), if the width of a block is a power of 2, a block (e.g., 32 x 32) can be vertically divided into four subblocks of the same size (e.g., 8 x 32). On the other hand, as shown in Figure 47A (a2), if the width of a block is not a power of 2, a block (e.g., 24 x 32) can be vertically divided into three subblocks of the same size (e.g., 8 x 32).

[0505] As another example, as shown in Figure 47B (b1), if both the block width and block height of a block are powers of 2, and the block width is twice the block height, then a block (e.g., 64 × 32) can be equally divided into eight subblocks of equal size (e.g., 16 × 16). On the other hand, as shown in Figure 47B (b2), if both the block width and block height of a block are powers of 2, and the block width is equal to the block height, then a block (e.g., 32 × 32) can be equally divided into four subblocks of equal size (e.g., 16 × 16).

[0506] As shown in Figures 47A and 47B, in this embodiment, at least one of the height and width of the subblock is a power of 2. However, the height and / or width of the subblock are not limited to powers of 2.

[0507] In step S14005, the subblock is decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for every block of a size roughly equivalent to that of the subblock.

[0508] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0509] (Embodiment 9) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, determines whether the written parameters are equal to a predetermined value, and if the written parameters are equal to the predetermined value, divides the block into a first number of subblocks, the first number being greater than 2 if the division of the block is in a single direction, either vertically or horizontally, and greater than 3 if the division of the block is not in a single direction, and if the written parameters are not equal to the predetermined value, divides the block into a second number of subblocks not equal to the first number, the second number being greater than 2 if the division of the block is in a single direction, either vertically or horizontally, and greater than 3 if the division of the block is not in a single direction, and encodes the subblocks with an encoding process including a conversion process and / or a prediction process.

[0510] This allows the number of sub-blocks after division to be switched depending on whether the parameter is equal to a predetermined value or not.

[0511] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze parameters from a bitstream, determines whether the analyzed parameters are equal to a predetermined value, and if the analyzed parameters are equal to the predetermined value, divides the block into a first number of subblocks, the first number being greater than 2 if the division of the block is in a single direction, either vertically or horizontally, and greater than 3 if the division of the block is not in a single direction, and if the analyzed parameters are not equal to the predetermined value, divides the block into a second number of subblocks not equal to the first number, the second number being greater than 2 if the division of the block is in a single direction, either vertically or horizontally, and greater than 3 if the division of the block is not in a single direction, and decodes the subblocks in a decoding process including inverse transformation and / or prediction processing.

[0512] This allows the number of sub-blocks after division to be switched depending on whether the parameter is equal to a predetermined value or not.

[0513] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0514] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 25 and 26, respectively.

[0515] [Encoding process] Figure 25 shows an example of video encoding processing according to Embodiment 9.

[0516] As the first step S15001, the parameters are written to the bitstream. Figure 37 shows the writable locations of the above parameters in the compressed video bitstream.

[0517] Next, in step S15002, it is determined whether the written parameter is equal to a predetermined value.

[0518] If the written parameter is equal to a predetermined value (Y in S15002), in step S15003, the block is divided into a first number of subblocks. Here, the first number is greater than 2 if the block division process is in one direction (vertical or horizontal), and greater than 3 if the block division process is not in one direction (vertical or horizontal). If the written parameter is not equal to a predetermined value (N in S15002), in step S15004, the block is divided into a second number of subblocks that are not equal to the first number. Here, this second number is greater than 2 if the block division process is in one direction (vertical or horizontal), and greater than 3 if the block division process is not in one direction (vertical or horizontal).

[0519] For example, for a 32x32 block, the parameters written, as shown in (a1) of Figure 48A, can indicate that the partition is a quadtree partition and that the partition includes only vertical partitions. In this case, the 32x32 block is divided into four 8x32 subblocks.

[0520] As another example, for a 32x32 block, the parameters written, as shown in (a2) of Figure 48A, can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 1:2:1. In this case, the 32x32 block is divided into an 8x32 subblock, a 16x32 subblock, and another 8x32 subblock.

[0521] For a 32x32 block, the parameters written can indicate, for example, as shown in (b1) of Figure 48B, that the partition is a quadtree partition and that the partition includes only horizontal partitions. In this case, the 32x32 block is divided into four 32x8 subblocks.

[0522] As another example, for a 32x32 block, the parameters written, as shown in (b2) of Figure 48B, can indicate that the partition is a ternary tree partition, that the partition is a horizontal partition, and that the ratio of block heights of the subblocks is 1:2:1. In this case, the 32x32 block is partitioned into a 32x8 subblock, a 32x16 subblock, and a 32x8 subblock.

[0523] For a 32x32 block, the parameters written, for example as shown in (c1) of Figure 48C, can indicate that the partition is a quadtree partition and that the partition includes both vertical and horizontal directions. In this case, the 32x32 block is divided into four 16x16 subblocks.

[0524] As another example, for a 32x32 block, the parameters written, as shown in (c2) of Figure 48C, can indicate that the partition is a multi-tree partition, that the partition includes both vertical and horizontal directions, and that the number of subblocks is 16. In this case, the 32x32 block is partitioned into 16 8x8 subblocks.

[0525] In step S15005, the subblock is encoded using an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to the subblock.

[0526] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0527] [Decryption process] Figure 26 shows an example of video decoding processing according to Embodiment 9.

[0528] As the first step S16001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the above parameters in the compressed video bitstream.

[0529] Next, in step S16002, it is determined whether the analyzed parameter is equal to a predetermined value.

[0530] If the analyzed parameter is equal to a predetermined value (Y in S16002), in step S16003, the block is divided into a first number of subblocks. Here, the first number is greater than 2 if the block division process is in one direction (vertical or horizontal), and greater than 3 if the block division process is not in one direction (vertical or horizontal). If the analyzed parameter is not equal to a predetermined value (N in S16002), in step S16004, the block is divided into a second number of subblocks that are not equal to the first number. Here, this second number is greater than 2 if the block division process is in one direction (vertical or horizontal), and greater than 3 if the block division process is not in one direction (vertical or horizontal).

[0531] For example, for a 32x32 block, the analyzed parameters, as shown in (a1) of Figure 48A, can indicate that the partition is a quadtree partition and that the partition includes only vertical partitions. In this case, the 32x32 block is divided into four 8x32 subblocks.

[0532] As another example, for a 32x32 block, as shown in Figure 48A (a2), the analyzed parameters can indicate that the partition is a ternary tree partition, that the partition is a vertical partition, and that the ratio of the block widths of the subblocks is 1:2:1. In this case, the 32x32 block is divided into an 8x32 subblock, a 16x32 subblock, and another 8x32 subblock.

[0533] For example, for a 32x32 block, the analyzed parameters, as shown in (b1) of Figure 48B, can indicate that the partition is a quadtree partition and that the partition includes only horizontal partitions. In this case, the 32x32 block is divided into four 32x8 subblocks.

[0534] As another example, for a 32x32 block, as shown in (b2) of Figure 48B, the analyzed parameters can be shown to indicate that the partition is a ternary tree partition, that the partition is a horizontal partition, and that the ratio of block heights of the subblocks is 1:2:1. In this case, the 32x32 block is partitioned into a 32x8 subblock and a 32x16 subblock and a 32x8 subblock.

[0535] For example, for a 32x32 block, the analyzed parameters, as shown in (c1) of Figure 48C, can indicate that the partition is a quadtree partition and that the partition includes both vertical and horizontal directions. In this case, the 32x32 block is divided into four 16x16 subblocks.

[0536] As another example, for a 32x32 block, as shown in (c2) of Figure 48C, the analyzed parameters can be shown to indicate that the partition is a multi-tree partition, that the partition includes both vertical and horizontal directions, and that the number of subblocks is 16. In this case, the 32x32 block is partitioned into 16 8x8 subblocks.

[0537] In step S16005, the subblock is decoded using a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for every block of a size roughly equivalent to that of the subblock.

[0538] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0539] (Embodiment 10) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write partition candidate selection parameters to a bitstream, uses the written partition candidate selection parameters to select a small set of block division information from a predetermined large set of block division information, writes partition selection parameters to a bitstream, uses the written partition selection parameters to identify block division information only from the selected small set of block division information, if the identified block division information is used, the block is divided into a plurality of subblocks of a geometry set, if different block division information is used, the block is divided into a plurality of subblocks of a different geometry set, uses the identified block division information to divide the block into a plurality of subblocks, and encodes the subblocks in an encoding process including a transformation process and / or a prediction process.

[0540] This allows for the stepwise selection of block partitioning information from a predetermined set of block partitioning information using two parameters. Therefore, if the small sets of block partitioning information are appropriately classified, effective selection becomes possible. As a result, the amount of code related to block partitioning information can be reduced, improving compression efficiency.

[0541] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0542] This allows the shape and / or size of the block to be used as geometry.

[0543] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze partition candidate selection parameters from a bitstream, uses the analyzed partition candidate selection parameters to select a small set of block division information from a predetermined large set of block division information, analyzes partition selection parameters from a bitstream, uses the analyzed partition selection parameters to identify block division information from only the selected small set of block division information, if the identified block division information is used, the block is divided into a plurality of subblocks of a geometry set, if different block division information is used, the block is divided into a plurality of subblocks of another geometry set, uses the identified block division information to divide the block into a plurality of subblocks, and decodes the subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0544] This allows for the stepwise selection of block partitioning information from a predetermined set of block partitioning information using two parameters. Therefore, if the small sets of block partitioning information are appropriately classified, effective selection becomes possible. As a result, the amount of code related to block partitioning information can be reduced, improving compression efficiency.

[0545] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0546] This allows the shape and / or size of the block to be used as geometry.

[0547] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0548] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 27 and 28, respectively.

[0549] [Encoding process] Figure 27 shows an example of video encoding processing according to Embodiment 10.

[0550] As the first step S17001, the partition candidate selection parameters are written to the bitstream. Figure 37 shows the writable locations of the partition candidate selection parameters in the compressed video bitstream.

[0551] Next, in step S17002, a smaller set of block partition information is selected from a predetermined larger set of block partition information using the written partition candidate selection parameters.

[0552] The written partition candidate selection parameter may include, for example, an index for selecting a block partitioning information set from two or more block partitioning information sets.

[0553] Block partitioning information can be classified into different groups (sets) of block partitioning information depending on the partitioning method used (vertical partitioning, horizontal partitioning, and quadtree partitioning, etc.). For example, as shown in Figure 49A, there are three groups of block partitioning information: vertical partitioning group (1st set), horizontal partitioning group (2nd set), and quadtree partitioning group (3rd set). The vertical partitioning group corresponds only to vertical partitioning, the horizontal partitioning group corresponds only to horizontal partitioning, and the quadtree partitioning group corresponds only to quadtree partitioning. If the index value is 0, the vertical partitioning group is selected. If the index value is 1, the horizontal partitioning group is selected. If the index value is 2, the quadtree partitioning group is selected.

[0554] The block division information of encoded blocks can also be classified into different block division information groups depending on the image position. For example, the block division information of the top-left block, top block, and top-right block can be classified as the top block division group (1st set). The block division information of the bottom-left block and left block can be classified as the left block division group (2nd set). The block division information of the same-position block and motion-compensated reference block can be classified as the time block division group (3rd set). If the index value is 0, the top block division group is selected. If the index value is 1, the left block division group is selected. If the index value is 2, the time block division group is selected.

[0555] As another example, the written partition candidate selection parameter may include a parameter / index for selecting one or more selected block partition information from the block partition information set, as shown in Figure 49B.

[0556] The block partitioning information may be a parameter set indicating whether to divide the block horizontally or vertically. The block partitioning information may also be a parameter set containing predetermined block widths and block heights for all subblocks within the block. Furthermore, the block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0557] In step S17003, the partition selection parameters are written to the bitstream. Figure 37 shows the writable locations for the partition selection parameters in the compressed video bitstream.

[0558] Next, in step S17004, block partition information is identified from only the selected set of block partition information using the written partition selection parameters. If the identified block partition information is used, the block is divided into multiple subblocks of the geometry set; however, if different block partition information is used, the block is divided into multiple subblocks of a different geometry set.

[0559] The written partition selection parameter may include, for example, an index for selecting one block partition from a small set of selected block partition information.

[0560] For example, as shown in Figure 49A, in step S17002, a vertical partition group (first set) is selected as a small set of block partition information. The vertical partition group has three different block partition structures corresponding to three different block partition information. If the index value is 0, the first block partition structure of the vertical partition group is identified. If the index value is 1, the second block partition structure of the vertical partition group is identified. If the index value is 2, the third block partition structure of the vertical partition group is identified.

[0561] In another example, the block partition information for the upper left block, upper block, and upper right block is classified into the upper block partition group selected in step S17002 as a small set of block partition information. If the index value is 0, the block partition structure of the upper left block is identified. If the index value is 1, the block partition structure of the upper block is identified. If the index value is 2, the block partition structure of the upper right block is identified.

[0562] As another example, the written partition selection parameters may include multiple split / merge flags to derive block partition information from the initial block partition information.

[0563] Then, in step S17005, the block is divided into multiple subblocks using the identified block division information.

[0564] In step S17006, the subblock is encoded in an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process may be performed for every block of a size roughly equivalent to that of the subblock.

[0565] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0566] [Decryption process] Figure 28 shows an example of video decoding processing according to Embodiment 10.

[0567] As the first step S18001, partition candidate selection parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of partition candidate selection parameters in the compressed video bitstream.

[0568] Next, in step S18002, a smaller set of block partition information is selected from a predetermined larger set of block partition information using the analyzed partition candidate selection parameters.

[0569] The analyzed partition candidate selection parameters may include, for example, an index for selecting a block partitioning information set from two or more block partitioning information sets.

[0570] Block partitioning information can be classified into different groups (sets) of block partitioning information depending on the partitioning method used (vertical partitioning, horizontal partitioning, and quadtree partitioning, etc.). For example, as shown in Figure 49A, there are three groups of block partitioning information: vertical partitioning group (1st set), horizontal partitioning group (2nd set), and quadtree partitioning group (3rd set). The vertical partitioning group corresponds only to vertical partitioning, the horizontal partitioning group corresponds only to horizontal partitioning, and the quadtree partitioning group corresponds only to quadtree partitioning. If the index value is 0, the vertical partitioning group is selected. If the index value is 1, the horizontal partitioning group is selected. If the index value is 2, the quadtree partitioning group is selected.

[0571] The block division information of decoded blocks can also be classified into different block division information groups depending on the image position. For example, the block division information of the top-left block, top block, and top-right block can be classified as the top block division group (1st set). The block division information of the bottom-left block and left block can be classified as the left block division group (2nd set). The block division information of the same-position block and motion-compensated reference block can be classified as the time block division group (3rd set). If the index value is 0, the top block division group is selected. If the index value is 1, the left block division group is selected. If the index value is 2, the time block division group is selected.

[0572] As another example, the analyzed partition candidate selection parameters may include parameters / indexes for selecting one or more selected block partition information from the block partition information set, as shown in Figure 49B.

[0573] The block partitioning information may be a parameter set indicating whether to divide the block horizontally or vertically. The block partitioning information may also be a parameter set containing predetermined block widths and block heights for all subblocks within the block. Furthermore, the block partitioning information may be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0574] In step S18003, partition selection parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of partition selection parameters in the compressed video bitstream.

[0575] Next, in step S18004, block partition information is identified from only the selected small set of block partition information using the analyzed partition selection parameters. Here, if the identified block partition information is used, the block is divided into multiple subblocks of the geometry set; however, if different block partition information is used, the block is divided into multiple subblocks of a different geometry set.

[0576] The analyzed partition selection parameters may include, for example, an index for selecting one block partition from a small set of selected block partition information.

[0577] For example, as shown in Figure 49A, in step S18002, a vertical partition group (first set) is selected as a small set of block partition information. The vertical partition group has three different block partition structures corresponding to three different block partition information. If the index value is 0, the first block partition structure of the vertical partition group is identified. If the index value is 1, the second block partition structure of the vertical partition group is identified. If the index value is 2, the third block partition structure of the vertical partition group is identified.

[0578] In another example, the block partition information for the upper left block, upper block, and upper right block is classified into the upper block partition group selected in step S18002 as a small set of block partition information. If the index value is 0, the block partition structure of the upper left block is identified. If the index value is 1, the block partition structure of the upper block is identified. If the index value is 2, the block partition structure of the upper right block is identified.

[0579] As another example, the analyzed partition selection parameters may include multiple split / merge flags to derive block partition information from the initial block partition information.

[0580] Then, in step S18005, the block is divided into multiple subblocks using the identified block division information.

[0581] In step S18006, the subblock is decoded in the decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblock.

[0582] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0583] (Embodiment 11) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write parameters to a bitstream, reads block information from one or more encoded blocks, uses the read block information to select a small set of block division information from a predetermined large set of block division information, uses the written parameters to identify block division information from only the selected small set of block division information, if the identified block division information is used, the block is divided into a plurality of subblocks of a geometry set, if different block division information is used, the block is divided into a plurality of subblocks of a different geometry set, uses the identified block division information to divide the current block into a plurality of subblocks, and encodes the subblocks in an encoding process including a transformation process and / or a prediction process.

[0584] This allows the block information of the encoded block to be used to narrow down the selectable block partitioning information from a given set of block partitioning information, thereby reducing the amount of code required for selecting the block partitioning information. As a result, compression efficiency can be improved.

[0585] For example, in the encoding device according to this embodiment, the geometry may represent at least the shape, height, or width of a block.

[0586] This allows the shape and / or size of the block to be used as geometry.

[0587] For example, in the encoding device according to this embodiment, the current block and the one or more encoded blocks are different blocks, and at least one of the one or more encoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0588] This allows block information to be read from one or more distinct encoded blocks, enabling the selection of a more appropriate set of block partitioning information. As a result, the amount of code associated with block partitioning information can be reduced, improving compression efficiency.

[0589] For example, in the encoding device according to this embodiment, the read-out block information may include at least one of the following: block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and information regarding the partition depth.

[0590] This allows for the use of information more suitable for selecting a small set of block partitioning information as block information.

[0591] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze parameters from a bitstream, reads block information from one or more decoded blocks, uses the read block information to select a small set of block division information from a predetermined large set of block division information, uses the analyzed parameters to identify block division information from only the selected small set of block division information, if the identified block division information is used, the block is divided into a plurality of subblocks of a geometry set, if different block division information is used, the block is divided into a plurality of subblocks of a different geometry set, uses the identified block division information to divide the current block into a plurality of subblocks, and decodes the subblocks in a decoding process including inverse transformation and / or prediction processing.

[0592] This allows the block information of the decrypted block to be used to narrow down the selectable block partitioning information from a given set of block partitioning information, thereby reducing the amount of coding required for selecting the block partitioning information. As a result, compression efficiency can be improved.

[0593] For example, in the decoding device according to this embodiment, the geometry may represent at least the shape, height, or width of the block.

[0594] This allows the shape and / or size of the block to be used as geometry.

[0595] For example, in the decoding device according to this embodiment, the current block and the one or more decoded blocks are different blocks, and at least one of the one or more decoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0596] This allows block information to be read from one or more distinct decoded blocks, enabling the selection of a more appropriate set of block partitioning information. As a result, the amount of code associated with block partitioning information can be reduced, improving compression efficiency.

[0597] For example, in the decoding device according to this embodiment, the read block information may include at least one of the following: block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and information regarding the partition depth.

[0598] This allows for the use of information more suitable for selecting a small set of block partitioning information as block information.

[0599] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0600] The methods for encoding and decoding video will be described according to the embodiments shown in Figures 29 and 30, respectively.

[0601] [Encoding process] Figure 29 shows an example of video encoding processing according to Embodiment 11.

[0602] As the first step S19001, the parameters are written to the bitstream. Figure 37 shows the writable locations for the parameters in the compressed video bitstream.

[0603] Next, in step S19002, block information (e.g., position, block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partition depth) is read from one or more encoded blocks.

[0604] In step S19003, a smaller set of block division information is selected from a predetermined larger set of block division information using the read block information.

[0605] For example, using the retrieved block information, predicted block partitioning information can first be derived. Then, from a predetermined large set of block partitioning information, block partitioning information having a block partition structure similar to the predicted block partitioning information is selected and added to a small set of block partitioning information. In selecting this block partitioning information, for example, if the predicted block partitioning information indicates that only vertical partitioning is used, a block partition structure with only vertical partitioning is selected (the first set in Figure 49A). In selecting this block partitioning information, for example, if the predicted block partitioning information indicates that only horizontal partitioning is used, a block partition structure with only horizontal partitioning is selected (the second set in Figure 49A). As another example, in selecting this block partitioning information, as shown in Figure 50, a block partition structure having the same / similar geometry to the block partition structure corresponding to the predicted block partitioning information is selected.

[0606] The block partitioning information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block partitioning information may be a parameter set containing predetermined block widths and predetermined block heights for all subblocks within the block. The block partitioning information may also be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0607] The block partition structure of the encoded block can be used directly as the predicted block partition structure for the current block.

[0608] It is also possible to derive a new block partition structure as the predicted block partition structure of the current block by combining the block partition structures of two or more encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One method for selecting an encoded block is to select an encoded block that is in the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, one or more encoded blocks encoded using inter-prediction will be selected.

[0609] The block partition structure of the encoded block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the predicted block partition structure for the current block.

[0610] The predicted block partitioning information may differ for each intra-prediction direction of the encoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to predict whether the current block should be partitioned vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be predicted for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be predicted for the current block.

[0611] Block partitioning information may be predicted according to the intra / inter prediction mode of the encoded block. For example, if the prediction mode of the encoded block is intra prediction mode, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the encoded block is inter prediction mode, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0612] Block partitioning information may be predicted according to the motion vector of the encoded block. For example, if the difference between the motion vector of the encoded block and the motion vector of the current block is greater than a predetermined threshold, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the encoded block and the motion vector of the current block is less than or equal to a predetermined threshold, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0613] Block partitioning information may be predicted according to the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is smaller than a predetermined value, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the encoded block is greater than or equal to a predetermined value, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0614] Block partitioning information may be predicted according to the reference picture information of the encoded block. For example, if the reference picture of the encoded block is temporally close to the current picture, or if the reference pictures of multiple encoded blocks are similar to each other, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the encoded block is not temporally close to the current picture, or if the reference pictures of multiple encoded blocks are not similar to each other, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively small block size.

[0615] Block partitioning information may be predicted according to the partitioning depth of the encoded block. For example, if the partitioning depth of the encoded block is greater than a predetermined value (e.g., 4), a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the encoded block is less than or equal to the predetermined value (e.g., the partitioning depth is equal to 2), another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0616] Block partitioning information may be predicted according to the partitioning information of encoded blocks in frames different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block can be predicted from encoded blocks in frames different from the current frame (e.g., collocated blocks, last encoded blocks, or encoded blocks identified by motion vectors).

[0617] The block division information of encoded blocks can also be classified into different block division information groups depending on the image position. For example, the block division information of the top-left block, top block, and top-right block can be classified as the top block division group (1st set). The block division information of the bottom-left block and left block can be classified as the left block division group (2nd set). The block division information of the same-position block and motion-compensated reference block can be classified as the time block division group (3rd set). If the index value is 0, the top block division group is selected. If the index value is 1, the left block division group is selected. If the index value is 2, the time block division group is selected.

[0618] Next, in step S19004, block division information is identified from only the selected subset of block division information using the written parameters. Here, if the identified block division information is used, the block is divided into multiple subblocks of the geometry set; if different block division information is used, the block is divided into multiple subblocks of a different geometry set. The written parameters may include, for example, an index for selecting one block division information from the selected subset of block division information.

[0619] For example, the block partitioning information for the top-left block, top block, and top-right block is classified as a small set of block partitioning information into the top block partitioning group selected in step S19003. If the index value is 0, the block partition structure of the top-left block is identified. If the index value is 1, the block partition structure of the top block is identified. If the index value is 2, the block partition structure of the top-right block is identified.

[0620] As another example, the written parameters may include multiple split / merge flags to derive block splitting information from the initial block splitting information.

[0621] Then, in step S19005, the block is divided into multiple subblocks using the identified block division information.

[0622] In step S19006, the subblock is encoded in an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process may be performed for every block of a size roughly equivalent to that of the subblock.

[0623] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0624] [Decryption process] Figure 30 shows an example of video decoding processing according to Embodiment 11.

[0625] As the first step S20001, parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of parameters in the compressed video bitstream.

[0626] Next, in step S20002, block information (for example, position, block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partition depth) is read from one or more encoded blocks.

[0627] In step S20003, a smaller set of block division information is selected from a predetermined larger set of block division information using the read block information.

[0628] For example, using the retrieved block information, predicted block partitioning information can first be derived. Then, from a predetermined large set of block partitioning information, block partitioning information having a block partition structure similar to the predicted block partitioning information is selected and added to a small set of block partitioning information. In selecting this block partitioning information, for example, if the predicted block partitioning information indicates that only vertical partitioning is used, a block partition structure with only vertical partitioning is selected (the first set in Figure 49A). In selecting this block partitioning information, for example, if the predicted block partitioning information indicates that only horizontal partitioning is used, a block partition structure with only horizontal partitioning is selected (the second set in Figure 49A). As another example, in selecting this block partitioning information, as shown in Figure 50, a block partition structure having the same / similar geometry to the block partition structure corresponding to the predicted block partitioning information is selected.

[0629] The block partitioning information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block partitioning information may be a parameter set containing predetermined block widths and predetermined block heights for all subblocks within the block. The block partitioning information may also be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0630] The block partition structure of the decoded block can be used directly as the predicted block partition structure for the current block.

[0631] It is also possible to derive a new block partition structure as the predicted block partition structure of the current block by combining the block partition structures of two or more decoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One method for selecting a decoded block is to select a decoded block that is in the same intra / interprediction mode as the current block. Specifically, if the current block is an interprediction block, one or more decoded blocks decoded using interprediction will be selected.

[0632] The block partition structure of the decoded block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the predicted block partition structure for the current block.

[0633] The predicted block partitioning information may differ for each intra-prediction direction of the decoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to predict whether the current block should be partitioned vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be predicted for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be predicted for the current block.

[0634] Block partitioning information may be predicted according to the intra / inter prediction mode of the decrypted block. For example, if the prediction mode of the decrypted block is intra prediction mode, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the prediction mode of the decrypted block is inter prediction mode, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0635] Block partitioning information may be predicted according to the motion vector of the decoded block. For example, if the difference between the motion vector of the decoded block and the motion vector of the current block is greater than a predetermined threshold, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. On the other hand, if the difference between the motion vector of the decoded block and the motion vector of the current block is less than or equal to a predetermined threshold, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0636] Block partitioning information may be predicted according to the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is smaller than a predetermined value, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. Alternatively, if the value of the quantization parameter of the decoded block is greater than or equal to a predetermined value, another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0637] Block partitioning information may be predicted according to the reference picture information of the decrypted block. For example, if the reference picture of the decrypted block is temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are similar to each other, a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively large block size. If the reference picture of the decrypted block is not temporally close to the current picture, or if the reference pictures of multiple decrypted blocks are not similar to each other, other predetermined block partitioning information can be predicted that divides the block into multiple subblocks of a relatively small block size.

[0638] Block partitioning information may be predicted according to the partitioning depth of the decrypted block. For example, if the partitioning depth of the decrypted block is greater than a predetermined value (e.g., 4), a predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively small block sizes. If the partitioning depth of the decrypted block is less than or equal to the predetermined value (e.g., the partitioning depth is equal to 2), another predetermined block partitioning information can be predicted that divides the block into multiple subblocks of relatively large block sizes.

[0639] Block partitioning information may be predicted according to the partitioning information of decoded blocks in frames different from the current frame. For example, block partitioning information for the current block (including split information) or split information for the current block can be predicted from decoded blocks in frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks identified by motion vectors).

[0640] The block division information of decoded blocks can also be classified into different block division information groups depending on the image position. For example, the block division information of the top-left block, top block, and top-right block can be classified as the top block division group (1st set). The block division information of the bottom-left block and left block can be classified as the left block division group (2nd set). The block division information of the same-position block and motion-compensated reference block can be classified as the time block division group (3rd set). If the index value is 0, the top block division group is selected. If the index value is 1, the left block division group is selected. If the index value is 2, the time block division group is selected.

[0641] Next, in step S20004, block division information is identified from only the selected subset of block division information using the analyzed parameters. If the identified block division information is used, the block is divided into multiple subblocks of the geometry set; if different block division information is used, the block is divided into multiple subblocks of a different geometry set.

[0642] The analyzed partition selection parameters may include, for example, an index for selecting one block partition from a small set of selected block partition information.

[0643] For example, the block partitioning information for the top-left block, top block, and top-right block is classified as a small set of block partitioning information into the top block partitioning group selected in step S20003. If the index value is 0, the block partition structure of the top-left block is identified. If the index value is 1, the block partition structure of the top block is identified. If the index value is 2, the block partition structure of the top-right block is identified.

[0644] As another example, the analyzed partition selection parameters may include multiple split / merge flags to derive block partition information from the initial block partition information.

[0645] Then, in step S20005, the block is divided into multiple subblocks using the identified block division information.

[0646] In step S20006, the subblock is decoded in the decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for every block of a size roughly equivalent to that of the subblock.

[0647] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0648] (Embodiment 12) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to write list modification parameters to a bitstream, uses the written list modification parameters to modify a predetermined block division information list to a modified block division information list, writes partition selection parameters to a bitstream, uses the written partition selection parameters to select block division information that divides a block into a plurality of subblocks from only the modified block division information list, uses the selected block division information to divide a block into a plurality of subblocks, and encodes the subblocks included in the plurality of subblocks in an encoding process that includes a conversion process and / or a prediction process.

[0649] This allows the predetermined block partitioning information list to be modified using list modification parameters within the bitstream. Consequently, the amount of code related to the block partitioning information can be reduced, improving compression efficiency.

[0650] For example, in the encoding device according to this embodiment, when modifying the predetermined block partitioning information list, the predetermined block partitioning information list is rearranged to generate modified block partitioning information, and the partition selection parameter may be encoded with fewer bits for block partitioning information that is earlier in the list order than for block partitioning information that is later in the list order.

[0651] This allows a predetermined list of block partitioning information to be rearranged using list modification parameters within the bitstream. Therefore, it becomes easier to place block partitioning information that is more likely to be selected higher in the list, thereby reducing the amount of code associated with the block partitioning information.

[0652] For example, in the encoding device according to this embodiment, when modifying the predetermined block division information list, additional block division information may be inserted into the predetermined block division information list to generate a longer block division information list.

[0653] This allows additional block partitioning information to be inserted into a predetermined block partitioning information list using list modification parameters within the bitstream. Therefore, it becomes easier to add block partitioning information suitable for block partitioning to the list, thereby improving compression efficiency.

[0654] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to analyze list modification parameters from a bitstream, modifies a predetermined block division information list to a modified block division information list using the analyzed list modification parameters, analyzes partition selection parameters from the bitstream, uses the analyzed partition selection parameters to select block division information that divides a block into a plurality of subblocks from only the modified block division information list, divides a block into a plurality of subblocks using the selected block division information, and decodes the subblocks included in the plurality of subblocks in a decoding process including an inverse transformation process and / or a prediction process.

[0655] This allows the predetermined block partitioning information list to be modified using list modification parameters within the bitstream. Consequently, the amount of code related to the block partitioning information can be reduced, improving compression efficiency.

[0656] For example, in the decoding device according to this embodiment, when modifying the predetermined block partitioning information list, the predetermined block partitioning information list is rearranged to generate modified block partitioning information, and the partition selection parameter may be encoded with fewer bits for block partitioning information that is earlier in the list order than for block partitioning information that is later in the list order.

[0657] This allows a predetermined list of block partitioning information to be rearranged using list modification parameters within the bitstream. Therefore, it becomes easier to place block partitioning information that is more likely to be selected higher in the list, thereby reducing the amount of code associated with the block partitioning information.

[0658] For example, in the decoding device according to this embodiment, when modifying the predetermined block division information list, additional block division information may be inserted into the predetermined block division information list to generate a longer block division information list.

[0659] This allows additional block partitioning information to be inserted into a predetermined block partitioning information list using list modification parameters within the bitstream. Therefore, it becomes easier to add block partitioning information suitable for block partitioning to the list, thereby improving compression efficiency.

[0660] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0661] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 31 and 32, respectively.

[0662] [Encoding process] Figure 31 shows an example of video encoding processing according to Embodiment 12.

[0663] As the first step S21001, the list of modification parameters is written to the bitstream. Figure 37 shows the writable locations of the parameters in the compressed video bitstream.

[0664] Next, in step S21002, the predetermined block partition information list is modified into a modified block partition information list using the written list modification parameters. This modification may, for example, be a process that rearranges the predetermined block partition information list to generate the modified block partition information list. Here, the partition selection parameters are encoded with fewer bits for block partition information that is listed earlier than for block partition information that is listed later. As shown in Figure 51, the rearrangement brings the list order of the selected block partition information earlier, and the number of encoded bits for the partition selection parameters decreases.

[0665] To rearrange the list, for example, the list can be classified into different block partitioning information groups (e.g., vertical partitioning groups, horizontal partitioning groups, quadtree partitioning groups, and all partitioning groups containing all block partitioning information). By rearranging these block partitioning information groups, the list can be rearranged as shown in Figure 52. In this example, the list modification parameter may include a parameter that indicates the order of each block partitioning group in the modified block partitioning information list.

[0666] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information for each group. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in that group.

[0667] As another example, the modification may involve creating a longer block partition information list by inserting additional block partition information into a predetermined block partition information list. Inserting the most frequently used block partition information at the beginning of the list reduces the number of encoded bits for the partition selection parameters. In this case, the partition selection parameters are encoded with fewer bits for block partition information that appears earlier in the list than for block partition information that appears later in the list.

[0668] As another example, the modification may involve creating a shorter block partition information list by deleting block partition information from a given block partition information list. Deleting less frequently used block partition information that comes before the most frequently used block partition information reduces the number of encoded bits in the partition selection parameter. In this case, the partition selection parameter is encoded with fewer bits for block partition information that comes earlier in the list than for block partition information that comes later in the list.

[0669] Sorting, insertion, and deletion operations may be combined (e.g., sorting and insertion, sorting and deletion, insertion and deletion, or sorting, insertion, and deletion).

[0670] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information in the block division information list. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in the list.

[0671] The list modification parameter can, for example, indicate that no modification is necessary. If no modification is necessary, step S21002 can be omitted. Therefore, the modified block division information list is identical to the predetermined block division information list before proceeding to step S21003.

[0672] In step S21003, the partition selection parameters are written to the bitstream. Figure 37 shows the writable locations for parameters in the compressed video bitstream.

[0673] Next, in step S21004, block partition information is selected from only the modified block partition information list using the written partition selection parameter. The block is then divided into multiple subblocks using the selected block partition information. The written partition selection parameter may include, for example, an index for selecting one block partition information from a given list of block partition information. Alternatively, the written partition selection parameter may include multiple split / merge flags for deriving block partition information from the initial block partition information.

[0674] The encoded bits of the partition selection parameters and their meanings differ depending on the selected block partitioning information. For example, if the selected block partitioning information results in only horizontal partitioning, it is not necessary to indicate whether the partition is horizontal or vertical; simply dividing the block means that the block is divided horizontally, as shown in Figure 53. On the other hand, if the selected block partitioning information results in only vertical partitioning, it is not necessary to indicate whether the partition is horizontal or vertical; simply dividing the block means that the block is divided vertically.

[0675] In step S21005, the block is divided into multiple subblocks using the selected block division information. The selected block division information may be, for example, the final block division information used to divide the block into subblocks. Alternatively, the selected block division information may be predicted block division information or initial block division information. Based on the predicted block division information or initial block division information, the final block division information for dividing the block into subblocks is derived.

[0676] In step S21006, subblocks contained within multiple subblocks are encoded in an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0677] [Encoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 35 of Embodiment 2, so its illustration and description are omitted.

[0678] [Decryption process] Figure 32 shows an example of video decoding processing according to Embodiment 12.

[0679] As the first step S22001, the list modification parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the parameters in the compressed video bitstream.

[0680] Next, in step S22002, the predetermined block partition information list is modified into a modified block partition information list using the analyzed list modification parameters. This modification may, for example, be a process of rearranging the predetermined block partition information list to generate the modified block partition information list. Here, the partition selection parameters are decoded with fewer bits for block partition information that is in a later position in the list than for block partition information that is in a later position in the list. By rearranging, as shown in Figure 51, the list order of the selected block partition information is moved earlier, and the number of bits decoded for the partition selection parameters is reduced.

[0681] To rearrange the list, for example, the list can be classified into different block partitioning information groups (e.g., vertical partitioning groups, horizontal partitioning groups, quadtree partitioning groups, and all partitioning groups containing all block partitioning information). By rearranging these block partitioning information groups, the list can be rearranged as shown in Figure 52. In this example, the list modification parameter may include a parameter that indicates the order of each block partitioning group in the modified block partitioning information list.

[0682] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information for each group. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in that group.

[0683] As another example, the modification may involve creating a longer block partition information list by inserting additional block partition information into a predetermined block partition information list. Inserting the most frequently used block partition information at the beginning of the list reduces the number of bits used to decode the partition selection parameters. In this case, the partition selection parameters are decoded with fewer bits for block partition information that appears earlier in the list than for block partition information that appears later in the list.

[0684] As another example, the modification may involve creating a shorter block partition information list by deleting block partition information from a given block partition information list. Deleting less frequently used block partition information that comes before the most frequently used block partition information reduces the number of bits used to decode the partition selection parameters. In this case, the partition selection parameters are decoded with fewer bits for block partition information that comes earlier in the list than for block partition information that comes later in the list.

[0685] Sorting, insertion, and deletion operations may be combined (e.g., sorting and insertion, sorting and deletion, insertion and deletion, or sorting, insertion, and deletion).

[0686] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information in the block division information list. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in the list.

[0687] The list modification parameter can, for example, indicate that no modification is necessary. If no modification is necessary, step S22002 can be omitted. Therefore, the modified block division information list is identical to the predetermined block division information list before proceeding to step S22003.

[0688] In step S22003, partition selection parameters are analyzed from the bitstream. Figure 37 shows the analyzable locations of the parameters in the compressed video bitstream.

[0689] Next, in step S22004, block partition information is selected from the modified block partition information list only, using the analyzed partition selection parameters. The block is then divided into multiple subblocks using the selected block partition information. The analyzed partition selection parameters may include, for example, an index for selecting one block partition information from a given list of block partition information. Alternatively, the analyzed partition selection parameters may include multiple split / merge flags for deriving block partition information from the initial block partition information.

[0690] The decoding bits of the partition selection parameters and their meanings differ depending on the selected block partitioning information. For example, if the selected block partitioning information results in only horizontal partitioning, it is not necessary to indicate whether the partition is horizontal or vertical; simply dividing the block means that the block will be divided horizontally, as shown in Figure 53. On the other hand, if the selected block partitioning information results in only vertical partitioning, it is not necessary to indicate whether the partition is horizontal or vertical; simply dividing the block means that the block will be divided vertically.

[0691] In step S22005, the block is divided into multiple subblocks using the selected block division information. The selected block division information may be, for example, the final block division information used to divide the block into subblocks. Alternatively, the selected block division information may be predicted block division information or initial block division information. Based on the predicted block division information or initial block division information, the final block division information for dividing the block into subblocks is derived.

[0692] In step S22006, subblocks contained within multiple subblocks are decoded in a decoding process. This decoding process includes an inverse transformation process and / or a prediction process. The inverse transformation process is preferably performed for blocks of a size roughly equivalent to that of the subblocks.

[0693] [Decoding device] The structure of the video / image encoding device in this embodiment is the same as that shown in Figure 36 of Embodiment 2, so its illustration and description are omitted.

[0694] (Embodiment 13) [overview] The encoding device according to this embodiment is an encoding device for encoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read block information from one or more encoded blocks, uses the read block information to modify a predetermined block division information list into a modified block division information list, writes partition selection parameters to a bitstream, uses the written partition selection parameters to select block division information that divides a block into a plurality of subblocks from only the modified block division information list, uses the selected block division information to divide the current block into a plurality of subblocks, and encodes the subblocks included in the plurality of subblocks in an encoding process that includes a conversion process and / or a prediction process.

[0695] This allows the predetermined block partitioning information list to be modified using block information read from the encoded block. Therefore, the amount of code related to block partitioning information can be reduced, and compression efficiency can be improved.

[0696] For example, in the encoding device according to this embodiment, when modifying the predetermined block partitioning information list, the predetermined block partitioning information list is rearranged to generate modified block partitioning information, and the partition selection parameter may be encoded with fewer bits for block partitioning information that is earlier in the list order than for block partitioning information that is later in the list order.

[0697] This allows a predetermined list of block partitioning information to be reordered using block information read from the encoded block. Therefore, block partitioning information that is more likely to be selected can be placed higher in the list, reducing the amount of coding required for the block partitioning information.

[0698] For example, in the encoding device according to this embodiment, when modifying the predetermined block division information list, additional block division information may be inserted into the predetermined block division information list to generate a longer block division information list.

[0699] This allows additional block partitioning information to be inserted into a predetermined block partitioning information list using block information read from the encoded block. Therefore, block partitioning information suitable for block partitioning can be added to the list, thereby improving compression efficiency.

[0700] For example, in the encoding device according to this embodiment, the current block and the one or more encoded blocks are different blocks, and at least one of the one or more encoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0701] This allows block information to be read from one or more distinct encoded blocks, enabling a more appropriate modification of the block partitioning information list. As a result, compression efficiency can be improved.

[0702] For example, in the encoding device according to this embodiment, the read-out block information may include at least one of the following: block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and information regarding the partition depth.

[0703] This allows for the use of appropriate information as block information, and enables the modification of the block partitioning information list using more appropriate block information. As a result, the amount of code related to block partitioning information can be reduced, improving compression efficiency.

[0704] The decoding device according to this embodiment is a decoding device for decoding blocks of an image, comprising a processor and a memory connected to the processor, wherein the processor uses the memory to read block information from one or more decoded blocks, uses the read block information to modify a predetermined block division information list into a modified block division information list, analyzes partition selection parameters from a bitstream, uses the analyzed partition selection parameters to select block division information that divides a block into a plurality of subblocks from only the modified block division information list, uses the selected block division information to divide the current block into a plurality of subblocks, and decodes the subblocks included in the plurality of subblocks in a decoding process that includes an inverse transformation process and / or a prediction process.

[0705] This allows the predetermined block partitioning information list to be modified using block information read from the decrypted blocks. Therefore, the amount of code related to block partitioning information can be reduced, and compression efficiency can be improved.

[0706] For example, in the decoding device according to this embodiment, when modifying the predetermined block partitioning information list, the predetermined block partitioning information list is rearranged to generate modified block partitioning information, and the partition selection parameter may be encoded with fewer bits for block partitioning information that is earlier in the list order than for block partitioning information that is later in the list order.

[0707] This allows the block information read from the decrypted block to be reordered in a predetermined list of block partitioning information. Therefore, block partitioning information that is more likely to be selected can be placed higher in the list, reducing the amount of coding associated with the block partitioning information.

[0708] For example, in the decoding device according to this embodiment, when modifying the predetermined block division information list, additional block division information may be inserted into the predetermined block division information list to generate a longer block division information list.

[0709] This allows additional block partitioning information to be inserted into a predetermined block partitioning information list using the block information read from the decrypted blocks. Therefore, block partitioning information suitable for block partitioning can be added to the list, thereby improving compression efficiency.

[0710] For example, in the decoding device according to this embodiment, the current block and the one or more decoded blocks are different blocks, and at least one of the one or more decoded blocks may be included in the same frame as the current block, or in another frame different from the frame of the current block.

[0711] This allows block information to be read from one or more distinct decrypted blocks, enabling a more appropriate modification of the block partitioning information list. As a result, compression efficiency can be improved.

[0712] For example, in the decoding device according to this embodiment, the read block information may include at least one of the following: block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and information regarding the partition depth.

[0713] This allows for the use of appropriate information as block information, and enables the modification of the block partitioning information list using more appropriate block information. As a result, the amount of code related to block partitioning information can be reduced, improving compression efficiency.

[0714] These comprehensive or specific embodiments may be implemented as a system, method, integrated circuit, computer program, or recording medium such as a computer-readable CD-ROM, or as any combination of a system, method, integrated circuit, computer program, and recording medium.

[0715] The methods for encoding and decoding video will be described below according to the embodiments shown in Figures 33 and 34, respectively.

[0716] [Encoding process] Figure 33 shows an example of video encoding processing according to Embodiment 13.

[0717] As the first step S23001, block information (e.g., block partition structure, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference picture, quantization parameters, and partition depth) is read from one or more encoded blocks.

[0718] Next, in step S23002, the predetermined block partition information list is modified into a modified block partition information list using the read block information. This modification may, for example, be a process of rearranging the predetermined block partition information list to generate the modified block partition information list. Here, the partition selection parameters are encoded with fewer bits for block partition information that is listed earlier than for block partition information that is listed later. By rearranging, as shown in Figure 51, the list order of the selected block partition information is moved earlier, and the number of encoded bits for the partition selection parameters is reduced.

[0719] To rearrange the list, for example, the list can be classified into different block partitioning information groups (e.g., vertical partitioning groups, horizontal partitioning groups, quadtree partitioning groups, and all partitioning groups containing all block partitioning information). By rearranging these block partitioning information groups, the list can be rearranged as shown in Figure 52. In this example, the list modification parameter may include a parameter that indicates the order of each block partitioning group in the modified block partitioning information list.

[0720] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information for each group. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in that group.

[0721] As another example, the modification may involve creating a longer block partition information list by inserting additional block partition information into a predetermined block partition information list. Inserting the most frequently used block partition information at the beginning of the list reduces the number of encoded bits for the partition selection parameters. In this case, the partition selection parameters are encoded with fewer bits for block partition information that appears earlier in the list than for block partition information that appears later in the list.

[0722] As another example, the modification may involve creating a shorter block partition information list by deleting block partition information from a given block partition information list. Deleting less frequently used block partition information that comes before the most frequently used block partition information reduces the number of encoded bits in the partition selection parameter. In this case, the partition selection parameter is encoded with fewer bits for block partition information that comes earlier in the list than for block partition information that comes later in the list.

[0723] Sorting, insertion, and deletion operations may be combined (e.g., sorting and insertion, sorting and deletion, insertion and deletion, or sorting, insertion, and deletion).

[0724] By utilizing the geometry of the current block, it is possible to implicitly restrict the block division information in the block division information list. For example, it is possible to restrict the use of divisions where the block width and block height are powers of 2. In the case of these block divisions, any subblocks whose width or height is not a power of 2 will not be used in the list.

[0725] To use the retrieved block information to modify a predetermined block partition information list, it is best to first derive the predicted block partition information. For example, in the predetermined block partition information list, move the block partition information that has the same / similar block partition structure as the predicted block partition information to the front of the list. If the predicted block partition structure only includes horizontal partitions, for example, move group 1 shown in Figure 52 (before rearrangement) to the top of the list as shown in Figure 52 (after rearrangement).

[0726] The block partitioning information may be a parameter set indicating whether to divide the block horizontally or vertically. Alternatively, the block partitioning information may be a parameter set containing predetermined block widths and predetermined block heights for all subblocks within the block. The block partitioning information may also be a parameter set containing an index for selecting one partition structure candidate from a predetermined list of block partition structure candidates. In this case, the block partition structure visually presents the geometry of all subblocks within the block, as shown in Figure 38.

[0727] The block partition structure of the encoded block can be used directly as the predicted block partition structure for the current block.

[0728] It is also possible to derive a new block partition structure as the predicted block partition structure of the current block by combining the block partition structures of two or more encoded blocks (for example, as shown in Figure 39, the upper half uses the block partition structure of the upper block, and the remaining half uses the block partition structure of the left block). One example of a method for selecting an encoded block is to select an encoded block that uses the same intra / inter prediction mode as the current block. Specifically, if the current block is an inter-prediction block, select one or more encoded blocks encoded using inter-prediction.

[0729] The block partition structure of the encoded block can also be modified (for example, by using a block partition structure with a shallower partitioning depth, as shown in Figure 40), and the new block partition structure can be derived as the predicted block partition structure for the current block.

[0730] The predicted block partitioning information may differ for each intra-prediction direction of the encoded block. For example, intra-prediction direction information at a specific adjacent block location may be used to predict whether the current block should be partitioned vertically or horizontally into smaller blocks. For instance, if the intra-prediction direction information of the upper adjacent block is determined to be vertical or close to vertical, block partitioning information including vertical partitioning can be predicted for the current block. Similarly, if the intra-prediction direction information of the left adjacent block is determined to be horizontal or close to horizontal, block partitioning information including horizontal partitioning can be predicted for the current block.

[0731] Block partitioning information may be predicted according to the intra / inter prediction mode of the encoded block. For example, if the p...

Claims

1. Circuits and, The circuit comprises a memory connected to the aforementioned circuit, The circuit, during operation, Write the parameters to the bitstream. If the parameter has a first value consisting of at least a division direction and a number of divisions, the picture block is divided into four subblocks having a first geometry set along the first direction based on the first value. If the parameter has a second value different from the first value, which consists of at least the division direction and the number of divisions, then, based on the second value, the block of the picture is divided in a ratio of 1:2:1 in the second direction different from the first direction into three subblocks having a second geometry set different from the first geometry set along the first direction. A bitstream is transmitted that includes the parameters relating to the division of the block into the subblocks. Bitstream transmitter.

2. Write the parameters to the bitstream. If the parameter has a first value consisting of at least a division direction and a number of divisions, the picture block is divided into four subblocks having a first geometry set along the first direction based on the first value. If the parameter has a second value different from the first value, which consists of at least the division direction and the number of divisions, then, based on the second value, the block of the picture is divided in a ratio of 1:2:1 in the second direction different from the first direction into three subblocks having a second geometry set different from the first geometry set along the first direction. A bitstream is transmitted that includes the parameters relating to the division of the block into the subblocks. Bitstream transmission method.

Citation Information

Patent Citations

  • Image coding device, image decoding device, image coding method, image decoding method, image coding program, and image decoding program

    JP2013229674A