Bit stream transmitting device

By optimizing the encoding and decoding processes using QTBT segmentation mode and various transform filtering techniques, the problem of reduced compression efficiency caused by the large signaling overhead of block segmentation information is solved, achieving more efficient encoding and decoding.

CN116347077BActive Publication Date: 2025-10-28PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310460266.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2016-11-21
Filing Date
2017-11-17
Publication Date
2025-10-28
Estimated Expiration
2037-11-17

AI Technical Summary

Technical Problem

In existing image encoding and decoding technologies, the signaling overhead of block segmentation information is too large, resulting in a decrease in overall image compression efficiency.

Method used

The QTBT (quad-tree plus binary tree) segmentation mode is adopted to divide the block into variable-size coding units, reducing the amount of code for block segmentation information, and combining various transformation types and filter techniques to optimize encoding and decoding processes.

Benefits of technology

By reducing the amount of code in the block segmentation information, the compression efficiency of encoding and decoding is improved, and the processing load is reduced.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116347077B_ABST
    Figure CN116347077B_ABST
Patent Text Reader

Abstract

A non-transitory computer-readable medium stores a bitstream containing syntactic information. A computer performs decoding processing based on the syntactic information. The decoding processing includes: dividing a block into four sub-blocks when the predetermined number of sub-blocks is set to four; wherein, if the block size satisfies a block size condition, the block is divided into four sub-blocks along a single direction, the division including: dividing the block vertically into four 8×8 sub-blocks if the block width is greater than its height and its size is 32×8; and dividing the block horizontally into four 8×8 sub-blocks if the block height is greater than its width and its size is 8×32; and dividing the block vertically and horizontally into four sub-blocks if the block size does not satisfy a block size condition, the division including: dividing the block vertically and horizontally into four 16×16 sub-blocks if the block width is equal to its height and its size is 32×32; and decoding the sub-blocks.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the invention patent application filed on November 17, 2017, with application number 201780071858.9 and entitled "Encoding device, decoding device, encoding method and decoding method". Technical Field

[0002] This invention relates to encoding devices, decoding devices, encoding methods, and decoding methods. Background Technology

[0003] The video coding standard specification known as HEVC (High-Efficiency Video Coding) was standardized by JCT-VC (Joint Collaborative Team on Video Coding).

[0004] Existing technical documents

[0005] Non-patent literature

[0006] Non-patent literature 1: H.265 (ISO / IEC 23008-2 HEVC (High Efficiency Video Coding)) Summary of the Invention

[0007] The problem that the invention aims to solve

[0008] Such encoding and decoding techniques require further improvements in compression efficiency and reduction in processing load.

[0009] Therefore, the present invention provides an encoding device, decoding device, encoding method, or decoding method that can achieve further improvement in compression efficiency and reduction in processing load.

[0010] Methods used to solve problems

[0011] A non-transitory computer-readable medium relating to one aspect of the present invention stores a bitstream, wherein the bitstream contains syntactic information, and a computer performs decoding processing based on the syntactic information. The decoding processing includes: dividing the block into four sub-blocks when the predetermined number of sub-blocks of the block is set to four; wherein, if the size of the block satisfies a block size condition, dividing the block into four sub-blocks along a single direction; and further including: dividing the block into four sub-blocks along a vertical direction if the width of the block is greater than the height of the block and the size of the block is 32×8. The block is divided into four 8×8 sub-blocks horizontally when the block's height is greater than its width and its size is 8×32; and when the block's size does not meet the block size requirements, it is divided into four sub-blocks vertically and horizontally. This division includes: dividing the block into four 16×16 sub-blocks vertically and horizontally when the block's width is equal to its height and its size is 32×32; and decoding the sub-blocks of the block.

[0012] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0013] Invention Effects

[0014] The present invention can provide an encoding device, decoding device, encoding method or decoding method that can achieve further improvement in compression efficiency and reduction in processing load. Attached Figure Description

[0015] Figure 1 This is a block diagram showing the functional structure of the encoding device according to Embodiment 1.

[0016] Figure 2 This is a diagram illustrating an example of block segmentation in Implementation Method 1.

[0017] Figure 3 It is a table representing the transformation basis functions corresponding to each transformation type.

[0018] Figure 4A This is a diagram showing an example of the shape of the filter used in ALF.

[0019] Figure 4B This is another example of the shape of the filter used in ALF.

[0020] Figure 4C This is another example of the shape of the filter used in ALF.

[0021] Figure 5A This is a diagram representing the 67 intra-prediction modes of intra-frame prediction.

[0022] Figure 5B This is a flowchart illustrating the outline of predictive image correction processing based on OBMC processing.

[0023] Figure 5C This is a conceptual diagram used to illustrate the outline of predictive image correction processing based on OBMC processing.

[0024] Figure 5D This is a diagram representing an example of FRUC.

[0025] Figure 6 It is a diagram used to illustrate pattern matching (bidirectional matching) between two blocks along a motion trajectory.

[0026] Figure 7 It is a diagram used to illustrate pattern matching (template matching) between a template in the current image and a block in a reference image.

[0027] Figure 8 It is a diagram used to illustrate a model that assumes uniform linear motion.

[0028] Figure 9A It is a diagram used to illustrate the derivation of the motion vectors of sub-block units based on the motion vectors of multiple adjacent blocks.

[0029] Figure 9B This is a diagram used to illustrate the overview of motion vector derivation processing based on the merging mode.

[0030] Figure 9C This is a conceptual diagram used to illustrate the outline of DMVR processing.

[0031] Figure 9D This is a diagram used to illustrate an overview of a predictive image generation method that employs LIC-based brightness correction processing.

[0032] Figure 10 This is a block diagram illustrating the functional structure of the decoding device according to Embodiment 1.

[0033] Figure 11 This is a flowchart illustrating an example of image encoding processing in Implementation 2.

[0034] Figure 12 This is a flowchart illustrating an example of image decoding processing in Implementation 2.

[0035] Figure 13 This is a flowchart illustrating an example of image encoding processing in Implementation 3.

[0036] Figure 14 This is a flowchart illustrating an example of image decoding processing in Implementation 3.

[0037] Figure 15 This is a flowchart illustrating an example of image encoding processing in Implementation 4.

[0038] Figure 16 This is a flowchart illustrating an example of the image decoding process in Implementation 4.

[0039] Figure 17 This is a flowchart illustrating an example of image encoding processing in Implementation 5.

[0040] Figure 18 This is a flowchart illustrating an example of the image decoding process in Implementation 5.

[0041] Figure 19 This is a flowchart illustrating an example of image encoding processing in Implementation 6.

[0042] Figure 20 This is a flowchart illustrating an example of the image decoding process in Implementation 6.

[0043] Figure 21 This is a flowchart illustrating an example of image encoding processing in Implementation 7.

[0044] Figure 22 This is a flowchart illustrating an example of the image decoding process in Implementation 7.

[0045] Figure 23 This is a flowchart illustrating an example of image encoding processing in Implementation 8.

[0046] Figure 24 This is a flowchart illustrating an example of the image decoding process in Implementation 8.

[0047] Figure 25 This is a flowchart illustrating an example of image encoding processing in Implementation 9.

[0048] Figure 26 This is a flowchart illustrating an example of the image decoding process in Implementation 9.

[0049] Figure 27 This is a flowchart illustrating an example of image encoding processing related to Implementation 10.

[0050] Figure 28 This is a flowchart illustrating an example of the image decoding process in Implementation 10.

[0051] Figure 29This is a flowchart illustrating an example of image encoding processing related to Implementation 11.

[0052] Figure 30 This is a flowchart illustrating an example of the image decoding process in Implementation 11.

[0053] Figure 31 This is a flowchart illustrating an example of image encoding processing related to Implementation 12.

[0054] Figure 32 This is a flowchart illustrating an example of the image decoding process in Implementation 12.

[0055] Figure 33 This is a flowchart illustrating an example of image encoding processing related to Implementation 13.

[0056] Figure 34 This is a flowchart illustrating an example of the image decoding process in Implementation 13.

[0057] Figure 35 This is a block diagram illustrating the structure of an image / image encoding apparatus according to an embodiment.

[0058] Figure 36 This is a block diagram illustrating the structure of an image / image decoding apparatus according to an embodiment.

[0059] Figure 37 It is a diagram showing the possible locations of parameters in a compressed image bitstream.

[0060] Figure 38 It is a graph representing the results of different block partitioning based on block partitioning information.

[0061] Figure 39 This is a diagram representing an example of a combination of block partitioning structures.

[0062] Figure 40 This is a diagram illustrating an example of a modification to the block partitioning structure.

[0063] Figure 41 This is a diagram illustrating the segmentation method and examples of block partitioning construction.

[0064] Figure 42A This is a diagram representing a modified example of the initial block partitioning construction.

[0065] Figure 42B This is a diagram representing a modified example of the initial block partitioning construction.

[0066] Figure 42C This is a diagram representing a modified example of the initial block partitioning construction.

[0067] Figure 43 This is a diagram representing a modified example of the initial block partitioning construction.

[0068] Figure 44 It is a diagram that represents the result of different block divisions based on geometric shapes.

[0069] Figure 45A This is a diagram illustrating an example of block partitioning into sub-blocks of a block-based geometry.

[0070] Figure 45B This is a diagram illustrating an example of block partitioning into sub-blocks of a block-based geometry.

[0071] Figure 45C This is a diagram illustrating an example of block partitioning into sub-blocks of a block-based geometry.

[0072] Figure 45D This is a diagram illustrating an example of block partitioning into sub-blocks of a block-based geometry.

[0073] Figure 46A This is a diagram illustrating an example of block segmentation into sub-blocks of a parameter-based geometry.

[0074] Figure 46B This is a diagram illustrating an example of block segmentation into sub-blocks of a parameter-based geometry.

[0075] Figure 46C This is a diagram illustrating an example of block segmentation into sub-blocks of a parameter-based geometry.

[0076] Figure 46D This is a diagram illustrating an example of block segmentation into sub-blocks of a parameter-based geometry.

[0077] Figure 47A This is a diagram representing an example of block partitioning based on the number of sub-blocks in a block-based geometry.

[0078] Figure 47B This is a diagram representing an example of block partitioning based on the number of sub-blocks in a block-based geometry.

[0079] Figure 48A This is a diagram representing an example of block partitioning into sub-blocks based on the number of parameters.

[0080] Figure 48B This is a diagram representing an example of block partitioning into sub-blocks based on the number of parameters.

[0081] Figure 48C This is a diagram representing an example of block partitioning into sub-blocks based on the number of parameters.

[0082] Figure 49A This is a diagram illustrating an example of selecting block segmentation information from a set of block segmentation information.

[0083] Figure 49B This is a diagram illustrating an example of selecting block segmentation information from a set of block segmentation information.

[0084] Figure 50 This is a diagram illustrating an example of choosing a block partition construction based on a predicted block partition construction.

[0085] Figure 51 This is a diagram illustrating an example of rearranging a list of block-segmented information.

[0086] Figure 52 This is a diagram illustrating an example of rearranging a list of block-segmented information.

[0087] Figure 53 This is a diagram representing the encoded bits of the partition selection parameters and their meaning.

[0088] Figure 54 This is a diagram showing the overall structure of a content supply system that enables content distribution services.

[0089] Figure 55 This is a diagram illustrating an example of encoding construction in scalable coding.

[0090] Figure 56 This is a diagram illustrating an example of encoding construction in the case of hierarchical encoding.

[0091] Figure 57 This is an example of a web page display.

[0092] Figure 58 This is an example of a web page display.

[0093] Figure 59 This is a diagram illustrating an example of a smartphone.

[0094] Figure 60 This is a block diagram representing a structural example of a smartphone. Detailed Implementation

[0095] (The understanding that forms the basis of this invention)

[0096] In traditional image and video encoding and decoding methods, images are divided into blocks, and encoding and decoding are performed at the block level. In recent image standards, in addition to the usual 8×8 or 16×16 sizes, encoding and decoding can be performed using various block sizes. For example, in image encoding and decoding, a size range of 4×4 to 256×256 can be used.

[0097] To represent a block size range of 4×4 to 256×256, block segmentation information, such as the segmentation mode (e.g., quadtree segmentation mode and binary tree segmentation mode) and segmentation flag (e.g., split flag), is signaled. The overhead of this signaling increases with the segmentation depth. Furthermore, if the overhead increases, the overall image compression efficiency decreases.

[0098] Therefore, in this invention, an encoding device and a decoding device are provided that can reduce the amount of code related to block segmentation information and thus improve compression efficiency.

[0099] Hereinafter, the embodiments will be described in detail with reference to the accompanying drawings.

[0100] Furthermore, the embodiments described below are inclusive or specific examples. The numerical values, shapes, materials, constituent elements, arrangements and connection methods of constituent elements, steps, and sequences of steps shown in the following embodiments are examples and are not intended to limit the scope of the claims. In addition, any constituent elements in the following embodiments that are not described in the independent claim representing the highest-level concept are described as arbitrary constituent elements.

[0101] (Implementation Method 1)

[0102] First, as an example of an encoding and decoding apparatus for the processing and / or structure described in the various embodiments of the present invention described later, an outline of Embodiment 1 will be described. However, Embodiment 1 is merely an example of an encoding and decoding apparatus for the processing and / or structure described in the various embodiments of the present invention, and the processing and / or structure described in the various embodiments of the present invention can also be implemented in encoding and decoding apparatuses different from Embodiment 1.

[0103] When applying the processing and / or structure described in various aspects of the present invention to Embodiment 1, one of the following may also be performed, for example.

[0104] (1) For the encoding or decoding device of Embodiment 1, the constituent element that corresponds to the constituent element described in each aspect of the present invention is replaced with the constituent element described in each aspect of the present invention.

[0105] (2) For the encoding or decoding device of Embodiment 1, after any modification such as adding, replacing, or deleting any of the constituent elements of the plurality of constituent elements constituting the encoding or decoding device, the constituent elements corresponding to the constituent elements described in each aspect of the present invention are replaced with the constituent elements described in each aspect of the present invention.

[0106] (3) After adding processing to the method implemented by the encoding or decoding device of Embodiment 1, and / or replacing or deleting any of the processing among the multiple processing included in the method, the processing corresponding to the processing described in each aspect of the present invention is replaced with the processing described in each aspect of the present invention.

[0107] (4) A portion of the constituent elements constituting the encoding or decoding apparatus of Embodiment 1 are combined with constituent elements described in various aspects of the present invention, a portion of constituent elements having the functions of constituent elements described in various aspects of the present invention, or a portion of constituent elements implementing the processing performed by constituent elements described in various aspects of the present invention.

[0108] (5) A component having a portion of the functions of a portion of the components constituting the encoding or decoding apparatus of embodiment 1, or a component implementing a portion of the processing performed by a portion of the components constituting the encoding or decoding apparatus of embodiment 1, is combined with the components described in various aspects of the present invention, the components having a portion of the functions of the components described in various aspects of the present invention, or the components implementing a portion of the processing performed by the components described in various aspects of the present invention.

[0109] (6) For the method implemented by the encoding or decoding device of Embodiment 1, the processing that corresponds to the processing described in each aspect of the present invention among the multiple processing included in the method is replaced with the processing described in each aspect of the present invention.

[0110] (7) A portion of the processing included in the method implemented by the encoding or decoding apparatus of Embodiment 1 is combined with the processing described in the various aspects of the present invention.

[0111] Furthermore, the implementation of the processes and / or structures described in the various embodiments of the present invention is not limited to the examples described above. For example, it may be implemented in an apparatus used for a different purpose than the moving image / image encoding apparatus or moving image / image decoding apparatus disclosed in Embodiment 1, or the processes and / or structures described in each embodiment may be implemented individually. In addition, the processes and / or structures described in different embodiments may be combined and implemented.

[0112] [Overview of the encoding device]

[0113] First, an overview of the encoding device for Embodiment 1 will be provided. Figure 1This is a block diagram illustrating the functional structure of the encoding apparatus 100 according to Embodiment 1. The encoding apparatus 100 is a motion picture / image encoding apparatus that encodes motion pictures / images in block units.

[0114] like Figure 1 As shown, the encoding device 100 is a device for encoding images in block units, and includes a segmentation 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 cyclic filtering unit 120, a frame memory 122, an intra-frame prediction unit 124, an inter-frame prediction unit 126, and a prediction control unit 128.

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

[0116] The following describes the constituent elements included in the encoding device 100.

[0117] [Divider]

[0118] The segmentation unit 102 divides each image contained in the input moving image into multiple blocks and outputs each block to the subtraction unit 104. For example, the segmentation unit 102 first segments the image into fixed-size blocks (e.g., 128×128). These fixed-size blocks may be called coding tree units (CTUs). Furthermore, the segmentation unit 102 divides each fixed-size block into variable-size blocks (e.g., 64×64 or less) based on recursive quadtree and / or binary tree block segmentation. These variable-size blocks may be called coding units (CUs), prediction units (PUs), or transform units (TUs). In addition, in this embodiment, it is not necessary to distinguish between CUs, PUs, and TUs, and some or all of the blocks in the image may be used as processing units of CUs, PUs, and TUs.

[0119] Figure 2 This is a diagram illustrating an example of block segmentation in Implementation Method 1. In Figure 2 In the diagram, solid lines represent block boundaries based on quadtree block partitioning, and dashed lines represent block boundaries based on binary tree block partitioning.

[0120] Here, block 10 is a square block of 128×128 pixels (128×128 block). This 128×128 block 10 is first divided into 4 square blocks of 64×64 (quadtree block partitioning).

[0121] The 64×64 block in the upper left corner is then vertically divided into two rectangular 32×64 blocks, and the 32×64 block on the left is then vertically divided into two rectangular 16×64 blocks (binary tree block partitioning). As a result, the 64×64 block in the upper left corner is divided into two 16×64 blocks (11 and 12) and a 32×64 block (13).

[0122] The 64×64 block in the upper right corner is horizontally divided into two rectangular 64×32 blocks, 14 and 15 (binary tree block division).

[0123] The 64×64 block in the lower left corner is divided into four 32×32 square blocks (quadtree block partitioning). The upper left and lower right blocks of these four 32×32 blocks are further partitioned. The upper left 32×32 block is vertically divided into two 16×32 rectangular blocks, and the right 16×32 block is horizontally divided into two 16×16 blocks (binary tree block partitioning). The lower right 32×32 block is horizontally divided into two 32×16 blocks (binary tree block partitioning). As a result, the lower left 64×64 block is divided into 16×32 block 16, two 16×16 blocks 17 and 18, two 32×32 blocks 19 and 20, and two 32×16 blocks 21 and 22.

[0124] The 64×64 block 23 in the lower right corner is not divided.

[0125] As described above, in Figure 2 In the example, block 10 is divided into 13 variable-size blocks 11 to 23 based on recursive quadtree and binary tree block partitioning. Such partitioning is sometimes referred to as QTBT (quadtree plus binary tree) partitioning.

[0126] In addition, Figure 2 In this context, a block can be divided into 2 or 4 blocks (quadtree or binary tree block partitioning), but the partitioning is not limited to these. For example, a block can also be divided into 3 blocks (ternary tree partitioning). Partitioning including such ternary tree partitioning is sometimes referred to as MBT (multi-type tree) partitioning.

[0127] [Subtraction Section]

[0128] The subtraction unit 104 subtracts the prediction signal (prediction sample) from the original signal (original sample) in block units divided by the segmentation unit 102. That is, the subtraction unit 104 calculates the prediction error (also called residual) of the encoded target block (hereinafter referred to as the current block). Furthermore, the subtraction unit 104 outputs the calculated prediction error to the transformation unit 106.

[0129] The original signal is the input signal of the encoding device 100, which is the signal representing the image of each picture that constitutes the moving image (e.g., luminance signal and two chroma signals). Hereinafter, the signal representing the image may also be referred to as a sample.

[0130] [Transformation Section]

[0131] The transformation unit 106 transforms the prediction error in the spatial domain into transformation coefficients in the frequency domain, and outputs the transformation coefficients vectorization unit 108. Specifically, the transformation unit 106 performs a preset discrete cosine transform (DCT) or discrete sine transform (DST) on the prediction error in the spatial domain, for example.

[0132] Alternatively, the transform unit 106 can adaptively select a transform type from multiple transform types and use the transform basis function corresponding to the selected transform type to transform the prediction error into transform coefficients. Such a transform is sometimes referred to as EMT (explicit multiple core transform) or AMT (adaptive multiple transform).

[0133] Several transformation types include, for example, DCT-II, DCT-V, DCT-VIII, DST-I, and DST-VII. Figure 3 This is a table representing the transformation basis functions corresponding to each transformation type. Figure 3 In this context, N represents the number of input pixels. The choice of transform type from these multiple transform types can depend on the type of prediction (intra-frame prediction and inter-frame prediction) or the intra-frame prediction mode.

[0134] Information indicating whether such EMT or AMT is applied (e.g., referred to as the AMT flag) and information indicating the selected transform type are signaled at the CU level. Furthermore, the signaling of this information is not limited to the CU level and can also be at other levels (e.g., sequence level, image level, slice level, tile level, or CTU level).

[0135] Furthermore, the transform unit 106 can also perform a re-transformation on the transform coefficients (transformation results). Such a re-transformation may be referred to as AST (adaptive secondary transform) or NSST (non-separable secondary transform). For example, the transform unit 106 performs a re-transformation on each sub-block (e.g., a 4×4 sub-block) contained in the block of transform coefficients corresponding to the intra-frame prediction error. Information indicating whether NSST is applied and information related to the transform matrix used in NSST are signaled at the CU level. In addition, the signaling of this information is not limited to the CU level and can also be at other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0136] Here, a separable transformation refers to a method of performing multiple transformations in each direction, which is equivalent to the number of dimensions of the input. A non-separable transformation refers to a method of treating two or more dimensions together as one dimension and transforming them together when the input is multidimensional.

[0137] For example, as one example of a non-separable transformation, one can cite the way that when the input is a 4×4 block, it is treated as a permutation of 16 elements, and the permutation is transformed using a 16×16 transformation matrix.

[0138] Furthermore, the Hypercube Givens Transform, which treats a 4×4 input block as a permutation of 16 elements and then performs multiple Givens rotations on that permutation, is also an example of a non-separable transformation.

[0139] [Quantitative Department]

[0140] The quantization unit 108 quantizes the transform coefficients output from the transform unit 106. Specifically, the quantization unit 108 scans the transform coefficients of the current block in a predetermined scan order and quantizes the transform coefficients based on the quantization parameters (QP) corresponding to the scanned transform coefficients. Furthermore, the quantization unit 108 outputs the quantized transform coefficients (hereinafter referred to as quantized coefficients) of the current block to the entropy encoding unit 110 and the inverse quantization unit 112.

[0141] The specified order is the order in which the transform coefficients are quantized / inverse quantized. For example, the specified scan order is defined by ascending frequency (from low frequency to high frequency) or descending frequency (from high frequency to low frequency).

[0142] The quantization parameter is a parameter that defines the quantization step size (quantization width). For example, if the value of the quantization parameter increases, the quantization step size also increases. That is, if the value of the quantization parameter increases, the quantization error increases.

[0143] [Entropy Coding Department]

[0144] The entropy coding unit 110 generates a coded signal (coded bitstream) by performing variable-length coding on the quantization coefficients, which are input from the quantization unit 108. Specifically, the entropy coding unit 110 performs arithmetic coding on the binary signal, for example, by binarizing the quantization coefficients.

[0145] [De-quantization Department]

[0146] The inverse quantization unit 112 performs inverse quantization on the quantization coefficients that are input from the quantization unit 108. Specifically, the inverse quantization unit 112 performs inverse quantization on the quantization coefficients of the current block in a predetermined scan order. Furthermore, the inverse quantization unit 112 outputs the inverse quantized transform coefficients of the current block to the inverse transform unit 114.

[0147] [Inverse Transformation Section]

[0148] The inverse transform unit 114 restores the prediction error by performing an inverse transform on the transform 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 transform coefficients corresponding to the transform of the transform unit 106. Furthermore, the inverse transform unit 114 outputs the restored prediction error to the adder unit 116.

[0149] Furthermore, the restored prediction error differs from the prediction error calculated by the subtraction unit 104 because information was lost during quantization. In other words, the restored prediction error includes quantization error.

[0150] [Addition Department]

[0151] The addition unit 116 reconstructs the current block by adding the prediction error, which is input from the inverse transform unit 114, to the prediction sample, which is input from the prediction control unit 128. Furthermore, the addition unit 116 outputs the reconstructed block to the block memory 118 and the cyclic filtering unit 120. The reconstructed block may be referred to as a local decoding block.

[0152] [Block Memory]

[0153] Block memory 118 is a storage unit used to save blocks within the encoded object image (hereinafter referred to as the current image) referenced in intra-frame prediction. Specifically, block memory 118 saves the reconstructed blocks output from addition unit 116.

[0154] [Loop Filtering Section]

[0155] The cyclic filtering unit 120 applies cyclic filtering to the block reconstructed by the addition unit 116 and outputs the filtered reconstructed block to the frame memory 122. Cyclic filtering refers to filtering used within the encoding loop (in-loop filtering), such as deblocking filtering (DF), sample adaptive offset (SAO), and adaptive cyclic filtering (ALF).

[0156] In ALF, a least-squares error filter is used to remove coding distortion. For example, for each 2×2 sub-block within the current block, one filter is selected from multiple filters based on the direction of the gradient and the activity of the locality.

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

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

[0159] Based on the results of this classification, the filter used for the sub-block is determined from among multiple filters.

[0160] The shape of the filter used in ALF can be, for example, a circular symmetrical shape. Figures 4A to 4C This is a diagram showing several examples of the shapes of filters used in ALF. Figure 4A This indicates a 5×5 diamond-shaped filter. Figure 4B This indicates a 7×7 diamond-shaped filter. Figure 4C This represents a 9×9 diamond-shaped filter. Information representing the filter's shape is signaled at the image level. However, the signaling of the filter's shape information is not limited to the image level; it can also be at other levels (e.g., sequence level, slice level, tile level, CTU level, or CU level).

[0161] The on / off state of ALF is determined, for example, at the picture level or the CU level. For instance, regarding luminance, the decision to use ALF is made at the CU level, while regarding chromatic aberration, it is made at the picture level. Information indicating the on / off state of ALF is signaled at the picture level or the CU level. However, the signaling of information indicating the on / off state of ALF is not limited to the picture level or the CU level; it can also be at other levels (e.g., sequence level, slice level, tile level, or CTU level).

[0162] The coefficient set of a selectable set of filters (e.g., up to 15 or 25 filters) is signaled at the picture level. Furthermore, the signaling of the coefficient set is not limited to the picture level; it can also be at other levels (e.g., sequence level, slice level, tile level, CTU level, CU level, or sub-block level).

[0163] [Frame Memory]

[0164] The frame memory 122 is a storage unit used to store reference images used in inter-frame prediction, and is also sometimes referred to as a frame buffer. Specifically, the frame memory 122 stores the reconstructed blocks filtered by the cyclic filtering unit 120.

[0165] Intra-frame prediction unit

[0166] The intra-frame prediction unit 124 performs intra-frame prediction (also called intra-picture prediction) of the current block by referring to the blocks in the current image stored in the block memory 118, thereby generating a prediction signal (intra-frame prediction signal). Specifically, the intra-frame prediction unit 124 generates an intra-frame prediction signal by performing intra-frame prediction by referring to samples (e.g., luminance value, chrominance value) of blocks adjacent to the current block, and outputs the intra-frame prediction signal to the prediction control unit 128.

[0167] For example, the intra-prediction unit 124 performs intra-prediction using one of a plurality of predefined intra-prediction modes. The plurality of intra-prediction modes includes one or more non-directional prediction modes and a plurality of directional prediction modes.

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

[0169] Multiple directional prediction modes may include, for example, the 33 directional prediction modes specified in the H.265 / HEVC specification. Alternatively, multiple directional prediction modes may also include 32 additional directional prediction modes (a total of 65 directional prediction modes). Figure 5A This diagram represents the 67 intra-prediction modes (2 non-directional prediction modes and 65 directional prediction modes) in intra-frame prediction. Solid arrows indicate the 33 directions specified by the H.265 / HEVC specification, while dashed arrows indicate the additional 32 directions.

[0170] Additionally, in intra-frame prediction of chroma blocks, luma blocks can also be referenced. That is, the chroma components of the current block can be predicted based on the luma components of the current block. Such intra-frame prediction is sometimes referred to as CCLM (cross-component linear model) prediction. This intra-frame prediction mode of chroma blocks referencing luma blocks (e.g., called CCLM mode) can also be added as one of the intra-frame prediction modes for chroma blocks.

[0171] The intra-prediction unit 124 can also correct the intra-predicted pixel values ​​based on the gradient of the reference pixels in the horizontal / vertical directions. Intra-prediction accompanied by such correction is sometimes referred to as PDPC (position-dependent intraprediction combination). Information indicating whether PDPC has been used (e.g., a PDPC flag) is signaled, for example, at the CU level. Furthermore, the signaling of this information is not limited to the CU level; it can also be at other levels (e.g., sequence level, image level, slice level, tile level, or CTU level).

[0172] [Inter-frame prediction department]

[0173] The inter-frame prediction unit 126 performs inter-frame prediction (also called inter-picture prediction) for the current block by referring to a reference picture stored in the frame memory 122 that is different from the current picture, thereby generating a prediction signal (inter-frame prediction signal). Inter-frame prediction is performed in units of the current block or sub-blocks within the current block (e.g., 4×4 blocks). For example, the inter-frame prediction unit 126 performs motion estimation within the reference picture for the current block or sub-block. Furthermore, the inter-frame prediction unit 126 uses motion information (e.g., motion vectors) obtained through motion estimation to perform motion compensation, thereby generating the inter-frame prediction signal for the current block or sub-block. Finally, the inter-frame prediction unit 126 outputs the generated inter-frame prediction signal to the prediction control unit 128.

[0174] The motion information used in motion compensation is signaled. A motion vector predictor can also be used in the signaling of motion vectors. That is, the difference between the motion vector and the predicted motion vector can also be signaled.

[0175] Alternatively, the inter-frame prediction signal can be generated using not only the motion information of the current block obtained through motion estimation but also the motion information of neighboring blocks. Specifically, the prediction signal based on the motion information obtained through motion estimation can be weighted and added together with the prediction signal based on the motion information of neighboring blocks, thereby generating the inter-frame prediction signal in sub-block units within the current block. Such inter-frame prediction (motion compensation) is sometimes referred to as OBMC (overlapped block motion compensation).

[0176] In this OBMC mode, information indicating the size of the sub-block used for OBMC (e.g., OBMC block size) is signaled at the sequence level. Furthermore, information indicating whether the OBMC mode is used (e.g., OBMC flag) is signaled at the CU level. However, the signaling level for this information is not limited to the sequence and CU levels; it can also be other levels (e.g., image level, slice level, tile level, CTU level, or sub-block level).

[0177] The OBMC model will be explained in more detail. Figure 5B and Figure 5C This is a flowchart and concept diagram used to illustrate the outline of predictive image correction processing based on OBMC processing.

[0178] First, the predicted image (Pred) obtained through normal motion compensation is obtained using the motion vectors (MV) assigned to the encoded object block.

[0179] Next, the predicted image (Pred_L) is obtained by using the motion vector (MV_L) of the encoded left adjacent block for the encoded object block. The first correction of the predicted image is performed by weighted superposition of the predicted image and Pred_L.

[0180] Similarly, the predicted image (Pred_U) is obtained by using the motion vector (MV_U) of the upper adjacent block of the encoded object block. The predicted image is then corrected a second time by weighting and superimposing the predicted image after the first correction and Pred_U, and this is used as the final predicted image.

[0181] In addition, this describes a two-stage correction method using the left and top adjacent blocks, but it can also be configured to perform more corrections using the right and bottom adjacent blocks than the two-stage method.

[0182] In addition, the area to be overlaid may not be the entire pixel area of ​​the block, but only a part of the area near the block boundary.

[0183] Furthermore, the process of correcting the predicted image based on a single reference image is explained here. However, the same principle applies when correcting the predicted image based on multiple reference images. After obtaining the corrected predicted image based on each reference image, the resulting predicted images are further superimposed to obtain the final predicted image.

[0184] In addition, the processing target block mentioned above can be a prediction block unit or a sub-block unit that further divides the prediction block.

[0185] One method for determining whether to use OBMC processing is to use a signal called obmc_flag. Specifically, in an encoding device, it is determined whether the block to be encoded belongs to a motion-complex region. If it does, the obmc_flag is set to 1 and OBMC processing is performed for encoding. If it does not belong to a motion-complex region, the obmc_flag is set to 0, and OBMC processing is not performed for encoding. On the other hand, in a decoding device, decoding is performed by decoding the obmc_flag recorded in the stream and switching between using and not using OBMC processing based on its value.

[0186] Alternatively, motion information can be exported at the decoding device side without being signaled. For example, the merging mode specified by the H.265 / HEVC standard can be used. Furthermore, motion information can also be exported by performing motion estimation at the decoding device side. In this case, motion estimation is performed without using the pixel values ​​of the current block.

[0187] Here, we will explain the motion estimation mode performed on the decoding device side. This motion estimation mode on the decoding device side may be called PMMVD (pattern matched motion vector derivation) mode or FRUC (frame rate up-conversion) mode.

[0188] exist Figure 5D The diagram below illustrates an example of FRUC processing. First, referencing the motion vectors of coded blocks spatially or temporally adjacent to the current block, a list of multiple candidates, each with a predicted motion vector, is generated (this list can also be shared with a merge list). Next, the best candidate MV is selected from 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.

[0189] Furthermore, based on the selected candidate motion vectors, motion vectors for the current block are derived. Specifically, for example, the selected candidate motion vector (best candidate MV) can be derived as is, using it as the motion vector for the current block. Alternatively, for example, motion vectors for the current block can be derived by performing pattern matching in the surrounding region of the position within the reference image corresponding to the selected candidate motion vector. That is, the surrounding region of the best candidate MV can be searched using the same method, and if an MV with a better evaluation value is found, the best candidate MV is updated to the aforementioned MV and used as the final MV for the current block. Alternatively, a structure that does not perform this processing can be implemented.

[0190] The exact same processing can also be performed when processing is done in sub-block units.

[0191] Furthermore, the evaluation value is calculated by obtaining the difference value of the reconstructed image through pattern matching between the region within the reference image corresponding to the motion vector and the specified region. Alternatively, information other than the difference value can be used to calculate the evaluation value.

[0192] As a pattern matching, either pattern matching 1 or pattern matching 2 is used. Pattern matching 1 and pattern matching 2 can be referred to as bilateral matching and template matching, respectively.

[0193] In the first pattern matching, pattern matching is performed between two blocks within two different reference images, along the motion trajectory of the current block. Therefore, in the first pattern matching, the regions within other reference images along the motion trajectory of the current block are used as the defined regions for calculating the candidate evaluation values ​​described above.

[0194] Figure 6 This diagram illustrates an example of pattern matching (bidirectional matching) between two blocks along a motion trajectory. For example... Figure 6 As shown, in the first pattern matching, two motion vectors (MV0, MV1) are derived by searching for the best matching pair among two blocks in two different reference images (Ref0, Ref1) 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 image (Ref0) specified by the candidate MV and the reconstructed image at a specified position in the second encoded reference image (Ref1) specified by the symmetrical MV scaled by the aforementioned candidate MV over the display time interval is derived, and the obtained difference value is used to calculate an evaluation value. The candidate MV with the best evaluation value can be selected as the final MV from among multiple candidate MVs.

[0195] Under the assumption of continuous motion trajectories, the motion vectors (MV0, MV1) indicating two reference blocks are proportional to the temporal distances (TD0, TD1) between the current image (Cur Pic) and the two reference images (Ref0, Ref1). For example, in the case where the current image is located between the two reference images in time and the temporal distances from the current image to the two reference images are equal, in the first pattern matching, mirror-symmetric bidirectional motion vectors are derived.

[0196] In the second pattern matching, pattern matching is performed between the template in the current image (the block adjacent to the current block in the current image (e.g., the upper and / or left adjacent block)) and the block in the reference image. Therefore, in the second pattern matching, the block adjacent to the current block in the current image is used as the defined area for calculating the candidate evaluation value as described above.

[0197] Figure 7 This is an example of pattern matching (template matching) between a template in the current image and a block in a reference image. For example... Figure 7 As shown, in the second pattern matching, the motion vector of the current block is derived by searching within the reference image (Ref0) for the block that best matches the block adjacent to the current block (Cur block) within the current image (Cur Pic). Specifically, for the current block, the difference between the reconstructed images of the encoded regions of the left and top adjacent regions or one of them and the reconstructed image at the same position within the encoded reference image (Ref0) specified by the candidate MV is derived. The obtained difference value is used to calculate the evaluation value, and the candidate MV with the best evaluation value among multiple candidate MVs is selected as the best candidate MV.

[0198] Information indicating whether FRUC mode is used (e.g., referred to as the FRUC flag) is signaled at the CU level. Furthermore, when FRUC mode is used (e.g., when the FRUC flag is true), information indicating the pattern matching method (first pattern matching or second pattern matching) (e.g., referred to as the FRUC mode flag) is signaled at the CU level. Additionally, the signaling of this information is not limited to the CU level and can also be at other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or sub-block level).

[0199] This section explains how to derive motion vector patterns based on a model that assumes uniform linear motion. This pattern can be termed BIO (bi-directional optical flow).

[0200] Figure 8 This diagram is used to illustrate a model that assumes uniform linear motion. In Figure 8 In the diagram, (vx, vy) represents the velocity vector, and τ0 and τ1 represent the temporal distances between the current image (Cur Pic) and the two reference images (Ref0, Ref1), respectively. (MVx0, MVy0) represents the motion vector corresponding to the reference image Ref0, and (MVx1, MVy1) represents the motion vector corresponding to the reference image Ref1.

[0201] At this point, under the assumption of constant linear motion of velocity vector (vx, vy), (MVx0, MVy0) and (MVx1, MVy1) are expressed as (vxτ0, vyτ0) and (-vxτ1, -vyτ1) respectively, and the following optical flow equation (1) holds.

[0202] [Formula 1]

[0203]

[0204] Here, I (k) This represents the luminance value of the reference image k (k = 0, 1) after motion compensation. The optical flow equation states that the sum of (i) the temporal 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 combined with Hermite interpolation, the block-unit motion vector obtained from merge lists, etc., is corrected in pixels.

[0205] Alternatively, motion vectors can be derived on the decoding device side using a different method than deriving motion vectors based on a model assuming constant linear motion. For example, motion vectors can be derived on a sub-block basis based on the motion vectors of multiple adjacent blocks.

[0206] Here, we will explain the mode of deriving motion vectors on a sub-block basis based on the motion vectors of multiple adjacent blocks. This mode is sometimes referred to as the affine motion compensation prediction mode.

[0207] Figure 9A This is a diagram used to illustrate the derivation of sub-block unit motion vectors based on the motion vectors of multiple adjacent blocks. Figure 9AIn this context, the current block comprises 16 4×4 sub-blocks. Here, based on the motion vectors of adjacent blocks, the motion vector v0 of the upper left control point of the current block is derived, and based on the motion vectors of adjacent sub-blocks, the motion vector v1 of the upper right control point of the current block is derived. Furthermore, using the two motion vectors v0 and v1, the motion vectors (vx, vy) of each sub-block within the current block are derived using the following equation (2).

[0208] [Formula 2]

[0209]

[0210] Here, x and y represent the horizontal and vertical positions of the sub-block, respectively, and w represents the pre-set weight coefficient.

[0211] Such an affine motion compensation prediction mode may also include several modes with different methods for deriving the motion vectors of the upper left and upper right control points. Information representing such an affine motion compensation prediction mode (e.g., affine flags) is signaled at the CU level. Furthermore, the signaling of information representing this affine motion compensation prediction mode is not limited to the CU level; it can also be at other levels (e.g., sequence level, image level, slice level, tile level, CTU level, or sub-block level).

[0212] [Forecasting and Control Department]

[0213] The prediction control unit 128 selects one of the intra-frame prediction signal and the inter-frame prediction signal, and outputs the selected signal as the prediction signal to the subtraction unit 104 and the addition unit 116.

[0214] This section illustrates an example of exporting motion vectors from an encoded object image using a merge mode. Figure 9B This is a diagram used to illustrate the overview of motion vector derivation processing based on the merging mode.

[0215] First, a list of candidate predicted MVs registered with the predicted MVs is generated. Candidate predicted MVs include: spatially adjacent predicted MVs (MVs) belonging to multiple coded blocks spatially surrounding the coded object block; temporally adjacent predicted MVs (MVs) belonging to blocks whose positions in the coded reference image are projected nearby; combined predicted MVs (MVs) generated by combining the MV values ​​of spatially adjacent and temporally adjacent predicted MVs; and zero predicted MVs (MVs with a value of zero).

[0216] Next, the MV for the encoded object block is determined by selecting one predicted MV from the multiple predicted MVs registered in the predicted MV list.

[0217] Furthermore, in the variable-length coding section, merge_idx, which represents the signal that selected which prediction MV was recorded in the stream and encoded.

[0218] In addition, Figure 9B The predicted MVs registered in the predicted MV list described in the figure are one example. They may also be a number different from the number shown in the figure, or a structure that does not include a part of the predicted MVs in the figure, or a structure that adds predicted MVs other than the predicted MVs in the figure.

[0219] Alternatively, the MV of the encoded object block exported through the merge mode can be used for the DMVR processing described later to determine the final MV.

[0220] Here, an example of using DMVR to determine MV is explained.

[0221] Figure 9C This is a conceptual diagram used to illustrate the outline of DMVR processing.

[0222] First, the optimal MVP set for the processing object block is taken as the candidate MV. According to the candidate MV, reference pixels are obtained from the first reference image of the processed image in the L0 direction and the second reference image of the processed image in the L1 direction, respectively. The template is generated by taking the average of each reference pixel.

[0223] Next, using the template described above, the surrounding areas of the candidate music videos (MVs) for the first and second reference images are searched, and the MV with the lowest cost is selected as the final MV. Furthermore, the cost value is calculated using the differences between the pixel values ​​of the template and the pixel values ​​of the search area, as well as the MV value.

[0224] Furthermore, the general outline of the processing described herein is essentially the same in both the encoding and decoding devices.

[0225] In addition, even if it is not the process described here, any other process that can search for the surrounding of candidate MVs and export the final MV can be used.

[0226] Here, the mode of generating predicted images using LIC processing is explained.

[0227] Figure 9D This is a diagram illustrating the outline of a predictive image generation method using LIC-based brightness correction processing.

[0228] First, export the MV used to obtain the reference image corresponding to the encoded object block from the reference image, which is an encoded image.

[0229] Next, for the encoded object block, using the brightness pixel values ​​of the left and top adjacent encoded surrounding reference areas and the brightness pixel values ​​at the same position in the reference image specified by MV, information indicating how the brightness values ​​change in the reference image and the encoded object image is extracted, and brightness correction parameters are calculated.

[0230] By using the aforementioned brightness correction parameters to perform brightness correction processing on the reference image within the reference image specified by MV, a predicted image for the coded object block is generated.

[0231] in addition, Figure 9D The shape of the surrounding reference area mentioned above is one example; other shapes may also be used.

[0232] Furthermore, the process of generating a prediction image based on a single reference image is described here, but the same applies when generating a prediction image based on multiple reference images. The prediction image is generated after performing brightness correction processing on the reference images obtained from each reference image in the same way.

[0233] One method for determining whether to use LIC processing is to use a lic_flag as a signal indicating whether LIC processing is used. Specifically, in an encoding device, it is determined whether the block to be encoded belongs to a region where a brightness change has occurred. If it does, the lic_flag is set to 1, and LIC processing is used for encoding. If it does not belong to a region where a brightness change has occurred, the lic_flag is set to 0, and LIC processing is not used for encoding. On the other hand, in a decoding device, decoding is performed by decoding the lic_flag recorded in the stream and switching between using and not using LIC processing based on its value.

[0234] Other methods for determining whether to use LIC processing include checking whether LIC processing was used in surrounding blocks. As a specific example, when the encoded target block is in merge mode, it is determined whether the surrounding encoded blocks selected during the export of the MV in merge mode processing have been encoded using LIC processing. Based on the result, encoding is switched between using LIC processing and other methods. Furthermore, in this example, the decoding process is exactly the same.

[0235] [Overview of the Decoding Device]

[0236] Next, an outline of a decoding apparatus capable of decoding the encoded signal (encoded bit stream) output from the encoding apparatus 100 will be described. Figure 10This is a block diagram illustrating the functional structure of the decoding device 200 according to Embodiment 1. The decoding device 200 is a motion image / image decoding device that decodes motion images / images in block units.

[0237] like Figure 10 As shown, 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 cyclic filtering unit 212, a frame memory 214, an intra-frame prediction unit 216, an inter-frame prediction unit 218, and a prediction control unit 220.

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

[0239] The following describes the constituent elements included in the decoding device 200.

[0240] [Entropy Decoding Department]

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

[0242] [De-quantization Department]

[0243] The inverse quantization unit 204 performs inverse quantization on the quantization coefficients of the decoded target block (hereinafter referred to as the current block), which is input from the entropy decoding unit 202. Specifically, the inverse quantization unit 204 performs inverse quantization on each quantization coefficient of the current block based on the quantization parameter corresponding to that quantization coefficient. Furthermore, the inverse quantization unit 204 outputs the inverse quantization coefficients (i.e., transform coefficients) of the current block to the inverse transform unit 206.

[0244] [Inverse Transformation Section]

[0245] The inverse transform unit 206 restores the prediction error by performing an inverse transform on the transform coefficients, which are inputs from the inverse quantization unit 204.

[0246] For example, if the information read from the encoded bitstream represents EMT or AMT (e.g., the AMT flag is true), the inverse transform unit 206 performs an inverse transform on the transform coefficients of the current block based on the information representing the transform type read from the transducer.

[0247] Furthermore, for example, when the information read from the encoded bitstream is represented using NSST, the inverse transform unit 206 applies an inverse re-transformation to the transform coefficients.

[0248] [Addition Department]

[0249] The adder 208 reconstructs the current block by adding the prediction error, which is input from the inverse transform 206, to the prediction sample, which is input from the prediction control 220. The adder 208 then outputs the reconstructed block to the block memory 210 and the cyclic filtering 212.

[0250] [Block Memory]

[0251] Block memory 210 is a storage unit used to store blocks within the decoded target image (hereinafter referred to as the current image) that serve as a reference in intra-frame prediction. Specifically, block memory 210 stores the reconstructed blocks output from adder 208.

[0252] [Loop Filtering Section]

[0253] The cyclic filtering unit 212 applies cyclic filtering to the block reconstructed by the addition unit 208 and outputs the filtered reconstructed block to the frame memory 214 and the display device, etc.

[0254] Given that the information indicating the on / off state of the ALF is read from the encoded bitstream, and the ALF is on, one filter is selected from multiple filters based on the direction and activity of the gradient of locality, and the selected filter is applied to the reconstructed block.

[0255] [Frame Memory]

[0256] The frame memory 214 is a storage unit used to store reference images used in inter-frame prediction; it is also sometimes called a frame buffer. Specifically, the frame memory 214 stores the reconstructed blocks filtered by the cyclic filtering unit 212.

[0257] Intra-frame prediction unit

[0258] The intra-prediction unit 216 performs intra-prediction based on the intra-prediction pattern read from the encoded bitstream, referring to blocks within the current image stored in the block memory 210, thereby generating a prediction signal (intra-prediction signal). Specifically, the intra-prediction unit 216 performs intra-prediction by referring to samples (e.g., luminance values, chrominance values) of blocks adjacent to the current block, thereby generating an intra-prediction signal, and outputs the intra-prediction signal to the prediction control unit 220.

[0259] In addition, if the intra-prediction mode of the reference luma block is selected in the intra-prediction of the chromatic difference block, the intra-prediction unit 216 can also predict the chromatic difference component of the current block based on the luma component of the current block.

[0260] Furthermore, when the information read from the encoded bitstream represents PDPC, the intra-prediction unit 216 corrects the pixel values ​​after intra-prediction based on the gradient of the reference pixel in the horizontal / vertical direction.

[0261] [Inter-frame prediction department]

[0262] The inter-frame prediction unit 218 refers to a reference image stored in the frame memory 214 and predicts the current block. Prediction is performed in units of the current block or sub-blocks within the current block (e.g., 4×4 blocks). For example, the inter-frame prediction unit 218 uses motion information (e.g., motion vectors) read from the coded bitstream to perform motion compensation, thereby generating an inter-frame prediction signal for the current block or sub-block, and outputs the inter-frame prediction signal to the prediction control unit 220.

[0263] Furthermore, when the information read from the encoded bitstream is represented in OBMC mode, the inter-frame prediction unit 218 uses not only the motion information of the current block obtained through motion estimation, but also the motion information of adjacent blocks to generate the inter-frame prediction signal.

[0264] Furthermore, when the information read from the coded bitstream is in FRUC mode, the inter-frame prediction unit 218 performs motion estimation according to the pattern matching method (bidirectional matching or template matching) read from the coded stream, thereby deriving motion information. The inter-frame prediction unit 218 then uses the derived motion information to perform motion compensation.

[0265] Furthermore, when using BIO mode, the inter-frame prediction unit 218 derives motion vectors based on a model assuming constant-velocity linear motion. Additionally, when the information representation read from the encoded bitstream employs affine motion compensation prediction mode, the inter-frame prediction unit 218 derives motion vectors on a sub-block basis based on the motion vectors of multiple adjacent blocks.

[0266] [Forecasting and Control Department]

[0267] The prediction control unit 220 selects one of the intra-frame prediction signal and the inter-frame prediction signal, and outputs the selected signal as the prediction signal to the adder 208.

[0268] (Implementation Method 2)

[0269] [summary]

[0270] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bitstream, determining whether the written parameters are equal to a predetermined value; if the written parameters are equal to the predetermined value, predicting block segmentation information, using the predicted block segmentation information to segment the block into multiple sub-blocks, and if the written parameters are not equal to the predetermined value, not using the predicted block segmentation information, but segmenting the block into multiple sub-blocks; and encoding the sub-blocks contained in the multiple sub-blocks through encoding processing including transformation processing and / or prediction processing.

[0271] Therefore, when the parameters are equal to the specified values, block segmentation information can be predicted. By using this predicted block segmentation information to segment blocks, the amount of code related to block segmentation information can be reduced, thereby improving compression efficiency.

[0272] For example, in the encoding apparatus of this embodiment, the process of predicting the block segmentation information may also include the process of generating block segmentation information using the block information of the encoded blocks.

[0273] Therefore, block segmentation information can be predicted using the block information of the encoded blocks, which can improve the prediction accuracy of block segmentation information and reduce the amount of code.

[0274] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory. The processor uses the memory to perform the following processing: parsing parameters from a bitstream; determining whether the parsed parameters are equal to a predetermined value; if the parsed parameters are equal to the predetermined value, predicting block segmentation information and segmenting the block into multiple sub-blocks using the predicted block segmentation information; if the written parameters are not equal to the predetermined value, segmenting the block into multiple sub-blocks without using the predicted block segmentation information; and decoding the sub-blocks contained in the multiple sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0275] Therefore, when the parameters are equal to the specified values, block segmentation information can be predicted. By using this predicted block segmentation information to segment blocks, the amount of code related to block segmentation information can be reduced, thereby improving compression efficiency.

[0276] For example, in the decoding apparatus of this embodiment, the process of predicting the block segmentation information may also include the process of generating block segmentation information using block information of the decoded block.

[0277] Therefore, block segmentation information can be predicted using the block information of decoded blocks, which can improve the prediction accuracy of block segmentation information and reduce the amount of code.

[0278] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0279] The following describes methods for encoding and decoding images, such as... Figure 11 and Figure 12 The embodiments are described separately as shown in the figures. Furthermore, the apparatus for encoding and decoding images, such as... Figure 35 and Figure 36 The embodiments are described below.

[0280] [Encoding Processing]

[0281] Figure 11 This illustrates an example of image encoding processing related to Implementation 2.

[0282] As the initial step S1001, parameters are written to the bit stream. Figure 37 This indicates the writable location of the aforementioned parameters in the compressed image bitstream. The writable parameters include one or more parameters used to identify whether the prediction of block segmentation information is valid. For example, one or more parameters may include a flag indicating whether the prediction of block segmentation information is valid.

[0283] Next, in step S1002, it is determined whether the written parameter is equal to the specified value.

[0284] If the written parameter is equal to the specified value (as in S1002), then in step S1003, the block segmentation information is predicted, and then in step S1004, the predicted block segmentation information is used to segment the block into multiple sub-blocks. For example, the predicted block segmentation information is used as the initial block segmentation information. Furthermore, the initial block segmentation information is updated to the final block segmentation information.

[0285] The final block segmentation information is determined to have the lowest rate-distortion cost relative to other available block segmentation information during intra-frame and inter-frame prediction processing. By writing the difference between the predicted and final block segmentation information into the bitstream, the decoder generates the corresponding final block segmentation information based on the predicted block segmentation information. Encoding the difference information instead of the final block segmentation information reduces the number of bits required for signaling the final block segmentation information.

[0286] As a segmentation method, for example, it can be performed as follows: Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), which is a non-square / non-rectangular division, there can be a wide variety of geometric shapes.

[0287] Here, block segmentation information can be predicted based on the block information of the coded block (e.g., block partitioning construction, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth, etc.). The block is then divided into multiple sub-blocks using this block segmentation information. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0288] As a predicted block partition construction for the current block, the block partition construction of the already encoded block can be used as is.

[0289] It is also possible to construct a combination of block partitions of two or more coded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning construction of the upper block, and the other half uses the block partitioning construction of the left block, deriving a new block partitioning construction as the predicted block partitioning construction of the current block.

[0290] As an example of a method for selecting coded blocks, one approach is to select coded blocks that use the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more coded blocks using inter-frame prediction coding are selected.

[0291] The block partitioning construction of an already encoded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partitioning construction, a new block partitioning construction is derived as the predicted block partitioning construction for the current block.

[0292] Block segmentation information can also be a set of parameters indicating whether the block is divided horizontally or vertically. Alternatively, block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0293] Predicted block segmentation information can also vary depending on the intra-prediction direction information of the coded blocks. For example, to predict whether to segment the current block vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, then block segmentation information including vertical segmentation can be predicted for the current block. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, then block segmentation information including horizontal segmentation can be predicted for the current block.

[0294] Block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0295] Block partitioning information can also be predicted according to the intra / inter-frame prediction mode of the coded block. For example, if the prediction mode of the coded block is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block size can be predicted. Furthermore, if the prediction mode of the coded block is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block size can be predicted.

[0296] Block segmentation information can also be predicted based on the motion vectors of already encoded blocks. For example, if the difference between the motion vector of an already encoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes can be predicted. On the other hand, if the difference between the motion vector of an already encoded block and the motion vector of the current block is less than a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes can be predicted.

[0297] Block segmentation information can also be predicted based on the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is smaller than a specified value, specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes can be predicted. Furthermore, if the value of the quantization parameter of the encoded block is greater than or equal to a specified value, other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes can be predicted.

[0298] Block segmentation information can also be predicted based on reference image information of already encoded blocks. For example, when the reference image of an already encoded block is temporally close to the current image, or when multiple reference images of multiple already encoded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be predicted. When the reference image of an already encoded block is not temporally close to the current image, or when multiple reference images of multiple already encoded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be predicted.

[0299] Block segmentation information can also be predicted based on the segmentation depth of the encoded block. For example, if the segmentation depth of the encoded block is greater than a specified value (e.g., 4), specified block segmentation information that will divide the block into multiple sub-blocks of smaller block sizes can be predicted. If the segmentation depth of the encoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), other specified block segmentation information that will divide the block into multiple sub-blocks of larger block sizes can be predicted.

[0300] Block segmentation information can also be predicted based on the segmentation information of coded blocks in frames different from the current frame. For example, the block segmentation information (including split information) or the splitting information of the current block can be predicted based on coded blocks in coded frames different from the current frame (e.g., collocated blocks, last encoded blocks, or coded blocks determined by motion vectors).

[0301] If the written parameters are not equal to the specified values ​​(No in S1002), in step S1005, the block is divided into multiple sub-blocks without using the predicted block segmentation information. As a segmentation method, for example, it is possible to perform... Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41The asymmetric binary tree partitioning shown in b2) Figure 41 The asymmetric quadtree partitioning shown in q2) Figure 41 The different sizes of multi-branch tree cuts shown in m1) or Figure 41 As shown in n1), there are various geometric shapes, such as non-square / non-rectangular divisions.

[0302] In step S1006, the sub-blocks contained in the multiple sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on each block at a rate equal to the size of the sub-block.

[0303] [Encoding device]

[0304] Figure 35 This is a block diagram illustrating the structure of an image / image encoding apparatus according to an embodiment.

[0305] The image encoding device 25000 is a device that encodes the input image / picture bitstream block by block and generates an encoded output bitstream, such as... Figure 35 As shown, it includes a transformation unit 25001, a quantization unit 25002, an inverse quantization unit 25003, an inverse transformation unit 25004, a block memory 25005, a frame memory 25006, an intra-frame prediction unit 25007, an inter-frame prediction unit 25008, an entropy coding unit 25009, and a block segmentation information determination unit 25010.

[0306] The input image is fed into the adder, and the summed value is output to the transform unit 25001. The transform unit 25001 transforms the summed value into frequency coefficients based on the block segmentation information derived from the block segmentation information determination unit 25010, and outputs the resulting frequency coefficients to the vectorization unit 25002. The quantization unit 25002 quantizes the input frequency coefficients and outputs the quantized value to the inverse quantization unit 25003 and the entropy encoding unit 25009.

[0307] The inverse quantization unit 25003 performs inverse quantization on the quantized value output from the quantization unit 25002 and outputs the frequency coefficients to the inverse transform unit 25004. The inverse transform unit 25004 performs inverse frequency transformation on the frequency coefficients based on the block segmentation information derived from the block segmentation information determination unit 25010 to transform them into sample values ​​of the bit stream, and outputs the obtained sample values ​​to the adder.

[0308] The adder adds the predicted value of the image / picture output from the intra-frame prediction unit 25007 / inter-frame prediction unit 25008 to the sample value of the bit stream output from the inverse transform unit 25004, and outputs the summed value to the block memory 25005 or the frame memory 25006 for future prediction.

[0309] The block segmentation information determination unit 25010 collects block information from the block memory 25005 or the frame memory 25006, and derives block segmentation information and parameters related to the block segmentation information. If the block segmentation information derived here is used, the block is divided into multiple sub-blocks.

[0310] The intra-frame prediction unit 25007 / inter-frame prediction unit 25008 retrieves the reconstructed image / image stored in the block memory 25005 or the reconstructed image / image in the frame memory 25006 based on the block segmentation information derived by the block segmentation information determination unit 25010, and in order to predict, for example, the image / image region most similar to the input image / image.

[0311] The entropy encoding unit 25009 encodes the quantized value output from the quantization unit 25002, encodes the parameters from the block segmentation information determination unit 25010, and outputs a bit stream.

[0312] [Decoding Processing]

[0313] Figure 12 This illustrates an example of image decoding processing related to Implementation Method 2.

[0314] As the initial step S2001, parameters are parsed from the bitstream. Figure 37 This indicates the parsable location of the aforementioned parameters in the compressed image bitstream. The parsed parameters include one or more parameters used to identify whether the prediction of block segmentation information is valid. For example, if a flag is included, this parameter can indicate whether the prediction of block segmentation information is valid.

[0315] Next, in step S2002, it is determined whether the parsed parameter is equal to the specified value.

[0316] If the parsed parameters are equal to the specified values ​​(as in S2002), in step S2003, block segmentation information is predicted, and then in step S2004, the block is divided into multiple sub-blocks using the predicted block segmentation information. The predicted block segmentation information is used, for example, as initial block segmentation information. Furthermore, the initial block segmentation information is updated to final block segmentation information based on the difference between the predicted block segmentation information and the final block segmentation information parsed from the bitstream. As a segmentation method, for example, the following can be performed: Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), which is a non-square / non-rectangular division, there can be a wide variety of geometric shapes.

[0317] Here, regarding block segmentation information, prediction can be made based on the block information of the decoded block (e.g., block partitioning construction, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth, etc.). The block is then divided into multiple sub-blocks using the block segmentation information. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0318] As a prediction block partition construction for the current block, the block partition construction of the decoded block can be used as is.

[0319] It is also possible to construct a combination of block partitions from two or more decoded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning structure of the previous block, and the other half uses the block partitioning structure of the left block, deriving a new block partitioning structure as the prediction block partitioning structure for the current block. As an example of a method for selecting decoded blocks, one approach is to select decoded blocks that use the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more decoded blocks that have been decoded using inter-frame prediction are selected.

[0320] It is also possible to modify the block partitioning structure of a decoded block (e.g., ... Figure 40 As shown, using a shallower segmentation depth (block partitioning construction), a new block partitioning construction is derived as the predicted block partitioning construction for the current block.

[0321] Block segmentation information can also be a set of parameters indicating whether the block is divided horizontally or vertically. Alternatively, block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0322] Predicted block segmentation information can also vary depending on the intra-prediction direction information of the decoded blocks. For example, to predict whether to segment the current block vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, then for the current block, block segmentation information including vertical segmentation can be predicted. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, then for the current block, block segmentation information including horizontal segmentation can be predicted.

[0323] Block partitioning information can also be a set of parameters including indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0324] Block partitioning information can also be predicted according to the intra / inter-frame prediction mode of the decoded block. For example, if the prediction mode of the decoded block is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block size can be predicted. Furthermore, if the prediction mode of the decoded block is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block size can be predicted.

[0325] Block segmentation information can also be predicted based on the motion vectors of decoded blocks. For example, if the difference between the motion vector of a decoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes can be predicted. On the other hand, if the difference between the motion vector of a decoded block and the motion vector of the current block is less than a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes can be predicted.

[0326] Block segmentation information can also be predicted based on the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is smaller than a specified value, specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes can be predicted. Furthermore, if the value of the quantization parameter of the decoded block is greater than or equal to a specified value, other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes can be predicted.

[0327] Block segmentation information can also be predicted based on reference image information of decoded blocks. For example, when the reference image of a decoded block is temporally close to the current image, or when multiple reference images of multiple decoded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be predicted. When the reference image of a decoded block is not temporally close to the current image, or when multiple reference images of multiple decoded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be predicted.

[0328] Block segmentation information can also be predicted based on the segmentation depth of the decoded block. For example, if the segmentation depth of the decoded block is greater than a specified value (e.g., 4), specified block segmentation information that will divide the block into multiple sub-blocks of smaller block sizes can be predicted. If the segmentation depth of the decoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), other specified block segmentation information that will divide the block into multiple sub-blocks of larger block sizes can be predicted.

[0329] Block segmentation information can also be predicted based on the segmentation information of decoded blocks in frames different from the current frame. For example, block segmentation information (including separation information) or separation information for the current block can be predicted based on decoded blocks in decoded frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks determined by motion vectors, etc.).

[0330] If the written parameters are not equal to the specified values ​​(No in S2002), in step S2005, the predicted block segmentation information is not used, and the block is divided into multiple sub-blocks. As a segmentation method, for example, the following can be performed: Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1) or as... Figure 41 As shown in n1), which is a non-square / non-rectangular division, there can be a wide variety of geometric shapes.

[0331] In step S2006, the sub-blocks contained in the multiple sub-blocks are decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on blocks of the same size as the sub-blocks.

[0332] [Decoding device]

[0333] Figure 36 This is a block diagram illustrating the structure of an image / image decoding apparatus according to an embodiment.

[0334] The image decoding device 26000 is a device that decodes the encoded input bitstream block by block and outputs an image / picture, such as... Figure 36 As shown, 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-frame prediction unit 26006, an inter-frame prediction unit 26007, and a block segmentation information determination unit 26008.

[0335] 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 segmentation information determination unit 26008, and outputs the decoded value to the inverse quantization unit 26002.

[0336] The inverse quantization unit 26002 performs inverse quantization on the decoded value and outputs the frequency coefficients to the inverse transform unit 26003. The inverse transform unit 26003 performs inverse frequency transform on the frequency coefficients based on the block segmentation information derived from the block segmentation information determination unit 26008, thereby transforming them into sample values, and outputs the obtained sample values ​​to the adder.

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

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

[0339] Furthermore, the intra-frame prediction unit 26006 / inter-frame prediction unit 26007 retrieves images / images stored in the block memory 26004 or reconstructed images / images in the frame memory 26005 based on the block segmentation information derived from the block segmentation information determination unit 26008, and in order to predict, for example, the image / image region most similar to the image / image of the decoded block.

[0340] (Implementation 3)

[0341] [summary]

[0342] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bit stream; using the written parameters, selecting at least one encoded block from a plurality of encoded blocks; reading block information from the selected at least one encoded block; using the read block information, dividing the current block into a plurality of sub-blocks; and encoding the sub-blocks contained in the plurality of sub-blocks through an encoding process including transformation processing and / or prediction processing.

[0343] Therefore, parameters can be used to adaptively select the encoded blocks used for segmentation of the current block. By using the block information of such selected encoded blocks to segment the block into multiple sub-blocks, the amount of code related to block segmentation information can be reduced, thereby improving compression efficiency.

[0344] For example, in the encoding apparatus of this embodiment, the current block and the plurality of encoded blocks may be different blocks from each other, and at least one of the plurality of encoded blocks may be contained in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0345] Therefore, it is possible to select the coded block for block segmentation from multiple different coded blocks, and to segment the current block using block information that is more suitable for block segmentation. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0346] For example, in the encoding apparatus of this embodiment, the read block information may include at least one of the following: block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0347] Therefore, appropriate information can be used as block information, and the current block can be divided using block information that is more suitable for block segmentation. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0348] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory. The processor uses the memory to perform the following processing: parsing parameters from a bitstream; determining whether the parsed parameters are equal to a predetermined value; if the parsed parameters are equal to the predetermined value, predicting block segmentation information, and using the predicted block segmentation information to segment the block into multiple sub-blocks; if the written parameters are not equal to the predetermined value, not using the predicted block segmentation information, and segmenting the block into multiple sub-blocks; and decoding the sub-blocks contained in the multiple sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0349] Therefore, parameters can be used to adaptively select decoded blocks for segmentation of the current block. By using the block information of such selected decoded blocks to segment the block into multiple sub-blocks, the amount of code related to block segmentation information can be reduced, thereby improving compression efficiency.

[0350] For example, in the decoding apparatus of this embodiment, the current block and the decoded block may be different blocks from each other, and at least one of the decoded blocks may be contained in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0351] Therefore, it is possible to select the decoded block for block segmentation from multiple distinct decoded blocks, and to segment the current block using block information that is more suitable for block segmentation. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0352] For example, in the decoding apparatus of this embodiment, the read block information may include at least one of the following: block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0353] Therefore, appropriate information can be used as block information, and the current block can be divided using block information that is more suitable for block segmentation. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0354] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0355] The following describes methods for encoding and decoding images, such as... Figure 13 and Figure 14 The implementation method will be described as shown in the figures.

[0356] [Encoding Processing]

[0357] Figure 13 This illustrates an example of image encoding processing related to Implementation 3.

[0358] As the initial step S3001, parameters are written to the bitstream. Figure 37 This indicates the writable location of the aforementioned parameters in the compressed image bitstream. The writable parameters include one or more parameters used to select one or more encoded blocks or block information from a specified candidate list.

[0359] 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 a block contained in the same frame as the current block (e.g., a block adjacent to the current block), or a block contained in a different frame than the frame containing the current block (e.g., a block at the same position as the current block, 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).

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

[0361] Next, in step S3004, the current block is divided into multiple sub-blocks using the read block information. Figure 38 This represents an example of using the read block information to divide the current block into multiple sub-blocks.

[0362] To divide a block into sub-blocks, the block segmentation information is exported. Here, the block segmentation information is exported according to the block information of the coded block (e.g., block partitioning construction, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vector, reference image, quantization parameters, and segmentation depth, etc.). The block is then divided into multiple sub-blocks using the block segmentation information. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0363] As the block partition construction for the current block, the block partition construction of the selected coded block can be used as is.

[0364] You can also construct a combination of block partitions from two or more selected coded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning construction of the upper block, and the other half uses the block partitioning construction of the left block, and a new block partitioning construction is derived as the block partitioning construction of the current block.

[0365] The block partitioning construction of the selected coded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partitioning construction, a new block partitioning construction is derived as the block partitioning construction for the current block.

[0366] Block segmentation information can also be a set of parameters indicating whether the block is divided horizontally or vertically. Alternatively, block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0367] Block partitioning information can also vary depending on the intra-prediction direction information of the selected coded blocks. For example, to determine whether the current block should be partitioned vertically or horizontally into smaller blocks, intra-prediction direction information at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, then for the current block, block partitioning information including vertical partitioning can be derived. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, then for the current block, block partitioning information including horizontal partitioning can be derived.

[0368] Block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0369] Block partitioning information can also be derived according to the intra / inter-frame prediction mode of the selected coded block. For example, if the selected coded block's prediction mode is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block sizes can be derived. Furthermore, if the selected coded block's prediction mode is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block sizes can be derived.

[0370] Block segmentation information can also be derived based on 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 segmentation information that divides the block into multiple sub-blocks of relatively small block size can be derived. 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 a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be derived.

[0371] Block partitioning information can also be derived based on 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 specified value, predefined block partitioning information that divides the block into multiple sub-blocks of smaller block sizes can be derived. Furthermore, if the value of the quantization parameter of the selected encoded block is greater than or equal to a specified value, other predefined block partitioning information that divides the block into multiple sub-blocks of larger block sizes can be derived.

[0372] Block segmentation information can also be derived based on reference image information of the selected coded blocks. For example, if the reference image of the selected coded block is close in time to the current image, or if multiple reference images of the selected coded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be derived. If the reference image of the selected coded block is not close in time to the current image, or if multiple reference images of the selected coded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be derived.

[0373] Block segmentation information can also be derived based on the segmentation depth of the selected encoded block. For example, if the segmentation depth of the selected encoded block is greater than a specified value (e.g., 4), specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes can be derived. If the segmentation depth of the selected encoded block is less than or equal to a specified value (e.g., when the segmentation depth is equal to 2), other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes can be derived.

[0374] Block segmentation information can also be derived from the segmentation information of encoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be derived from the block information of encoded blocks in encoded frames different from the current frame (e.g., collocated blocks, last encoded blocks, or encoded blocks determined by motion vectors).

[0375] In step S3005, the sub-blocks contained in the multiple sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, each block being the same size as the sub-block.

[0376] [Encoding device]

[0377] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0378] [Decoding Processing]

[0379] Figure 14 This illustrates an example of image decoding processing related to Implementation Method 3.

[0380] As the initial step S4001, parameters are parsed from the bitstream. Figure 37This indicates the resolvable location of the aforementioned parameters in the compressed image bitstream. The resolved parameters include one or more parameters used to select one or more decoded blocks or block information from a specified candidate list.

[0381] Next, in step S4002, at least one decoded block is selected from a plurality of decoded blocks using the parsed parameters. Here, at least one decoded block is a block contained in the same frame as the current block (e.g., a block adjacent to the current block), or a block contained in a different frame than the frame containing the current block (e.g., a block at 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 encoded block contained in the latest encoded frame different from the current frame).

[0382] In step S4003, block information is read from the selected decoded block.

[0383] Next, in step S4004, the current block is divided into multiple sub-blocks using the read block information. Figure 38 This represents an example of using the read block information to divide the current block into multiple sub-blocks.

[0384] To divide a block into sub-blocks, block segmentation information is derived. This information is derived from the block information of the decoded block (e.g., block partitioning construction, intra-prediction mode or inter-prediction mode, intra-prediction direction, motion vectors, reference image, quantization parameters, and segmentation depth). The block is then divided into multiple sub-blocks using this information. Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0385] As the block partition construction for the current block, the block partition construction of the selected decoded block can be used as is.

[0386] You can also combine block partitions of two or more selected decoded blocks (e.g., ...). Figure 39 In this way, the upper half uses the block partitioning construction of the upper block, and the other half uses the block partitioning construction of the left block, and a new block partitioning construction is derived as the block partitioning construction of the current block.

[0387] The block partitioning construction of the selected decoded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partitioning construction, a new block partitioning construction is derived as the block partitioning construction for the current block.

[0388] Block segmentation information can also be a set of parameters indicating whether the block is divided horizontally or vertically. Alternatively, block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0389] Block partitioning information can also vary depending on the intra-prediction direction information of the selected decoded blocks. For example, to determine whether the current block should be partitioned vertically or horizontally into smaller blocks, information from the intra-prediction directions at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or nearly vertical, then for the current block, block partitioning information including vertical partitioning can be derived. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or nearly horizontal, then for the current block, block partitioning information including horizontal partitioning can be derived.

[0390] Block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0391] Block partitioning information can also be derived according to the intra / inter-frame prediction mode of the selected decoded block. For example, if the prediction mode of the selected decoded block is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block size can be derived. Furthermore, if the prediction mode of the selected decoded block is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block size can be derived.

[0392] Block segmentation information can also be derived based on 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 segmentation information that divides the block into multiple sub-blocks of relatively small block size can be derived. 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 a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be derived.

[0393] Block partitioning information can also be derived based on 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 specified value, specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes can be derived. Furthermore, if the value of the quantization parameter of the selected decoded block is greater than or equal to a specified value, other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes can be derived.

[0394] Block segmentation information can also be derived based on reference image information of the selected decoded block. For example, if the reference image of a decoded block is temporally close to the current image, or if multiple reference images of multiple decoded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be derived. If the reference image of a decoded block is not temporally close to the current image, or if multiple reference images of multiple decoded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be derived.

[0395] Block partitioning information can also be derived based on the partitioning depth of the selected decoded block. For example, if the partitioning depth of the selected decoded block is greater than a specified value (e.g., 4), specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes can be derived. If the partitioning depth of the selected decoded block is less than or equal to a specified value (e.g., when the partitioning depth is equal to 2), other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes can be derived.

[0396] Block segmentation information can also be predicted based on the segmentation information of decoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be derived from the block information of decoded blocks in decoded frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks determined by motion vectors).

[0397] In step S4005, the sub-blocks contained in the multiple sub-blocks are decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a block-by-block basis, each block being the same size as the sub-block.

[0398] [Decoding device]

[0399] The structure of the image / image decoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0400] (Implementation Method 4)

[0401] [summary]

[0402] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: initializing block segmentation information; if the initialized block segmentation information is used, dividing the block into multiple sub-blocks of a first geometric set, and writing parameters into a bitstream; using the written parameters, correcting the initialized block segmentation information to corrected block segmentation information; if the corrected block segmentation information is used, dividing the block into multiple sub-blocks of a geometric set different from the first geometric set, and correcting the geometry of the multiple sub-blocks using the corrected block segmentation information; and encoding the sub-blocks contained in the multiple sub-blocks through encoding processing including transformation processing and / or prediction processing.

[0403] Therefore, the initialized block segmentation information can be adaptively modified into corrected block segmentation information using parameters. This corrected block segmentation information can then be used to modify the geometry of multiple sub-blocks. As a result, the amount of code related to block segmentation information can be reduced, improving compression efficiency.

[0404] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0405] Therefore, as a geometric figure, the shape and / or size of the block can be utilized.

[0406] For example, in the encoding apparatus of this embodiment, the process of initializing the block segmentation information may also include the process of selecting block segmentation information from a specified list of block segmentation information.

[0407] Therefore, by selecting block segmentation information from a predefined list, the block segmentation information can be initialized. Thus, as long as the information identifying the block segmentation information within the list is included in the block segmentation information, the amount of code related to the block segmentation information can be reduced, thereby improving compression efficiency.

[0408] For example, in the encoding apparatus of this embodiment, the process of initializing the block segmentation information may also include the process of generating the block segmentation information using specified parameters related to the geometry.

[0409] Therefore, by using parameters to generate block segmentation information, the block segmentation information can be initialized.

[0410] For example, in the encoding apparatus of this embodiment, during the initialization of the block segmentation information, the segmentation depth can be determined based on at least one of the image type and quantization parameters of the current block.

[0411] Therefore, during the initialization of block segmentation information, the segmentation depth can be determined based on the image type and / or quantization parameters of the current block. Consequently, the segmentation depth can be determined based on existing information within the bitstream, reducing the amount of code related to block segmentation information. Furthermore, by using the image type and / or quantization parameters of the current block, the block segmentation information can be initialized with a segmentation depth suitable for the current block, improving compression efficiency.

[0412] For example, in the encoding apparatus of this embodiment, the parameters written may include the difference between the segmentation depth represented by the initialized block segmentation information and the segmentation depth represented by the modified block segmentation information.

[0413] Therefore, the block segmentation depth can be modified using parameters, allowing the use of sub-blocks that are more suitable for encoding. As a result, compression efficiency can be improved.

[0414] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: initializing block segmentation information; if the initialized block segmentation information is used, dividing the block into multiple sub-blocks of a first geometric set, and parsing parameters from the bitstream; using the parsed parameters, correcting the initialized block segmentation information to corrected block segmentation information; if the corrected block segmentation information is used, dividing the block into multiple sub-blocks of a geometric set different from the first geometric set; using the corrected block segmentation information, correcting the geometry of the multiple sub-blocks; and decoding the sub-blocks contained in the multiple sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0415] Therefore, the initialized block segmentation information can be adaptively modified into corrected block segmentation information using parameters. This corrected block segmentation information can then be used to modify the geometry of multiple sub-blocks. As a result, the amount of code related to block segmentation information can be reduced, improving compression efficiency.

[0416] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0417] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0418] For example, in the decoding apparatus of this embodiment, the process of initializing the block segmentation information may also include the process of selecting block segmentation information from a specified list of block segmentation information.

[0419] Therefore, by selecting block segmentation information from a defined list, the block segmentation information can be initialized. Thus, as long as the information identifying the block segmentation information within the list is included in the block segmentation information, the amount of code related to block segmentation information can be reduced, thereby improving compression efficiency.

[0420] For example, in the decoding apparatus of this embodiment, the process of initializing the block segmentation information may also include the process of generating the block segmentation information using specified parameters related to geometry.

[0421] Therefore, by using parameters to generate block segmentation information, the block segmentation information can be initialized.

[0422] For example, in the decoding apparatus of this embodiment, during the initialization of the block segmentation information, the segmentation depth can be determined based on at least one of the image type and quantization parameters of the current block.

[0423] Therefore, during the initialization of block segmentation information, the segmentation depth can be determined based on the image type and / or quantization parameters of the current block. Consequently, the segmentation depth can be determined based on existing information within the bitstream, reducing the amount of code related to block segmentation information. Furthermore, by using the image type and / or quantization parameters of the current block, the block segmentation information can be initialized with a segmentation depth suitable for the current block, improving compression efficiency.

[0424] For example, in the decoding apparatus of this embodiment, the parsed parameters may also include the difference between the segmentation depth represented by the initialized block segmentation information and the segmentation depth represented by the modified block segmentation information.

[0425] Therefore, the block segmentation depth can be modified using parameters, allowing the use of sub-blocks that are more suitable for encoding. As a result, compression efficiency can be improved.

[0426] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0427] Methods for encoding and decoding images, such as Figure 15 and Figure 16 The following descriptions will be provided according to the implementation method.

[0428] [Encoding Processing]

[0429] Figure 15 This illustrates an example of image encoding processing related to Implementation 4.

[0430] As the initial step S5001, the block segmentation information is initialized. If this initialized block segmentation information (hereinafter referred to as the initial block segmentation information) is used, the block is divided into multiple sub-blocks of the first geometry set. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0431] As the initial block partition construction for the current block, the block partition construction of the coded block can be used as is.

[0432] It is also possible to construct a combination of block partitions of two or more coded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning structure of the previous block, and the remaining half uses the block partitioning structure of the left block, deriving a new block partitioning structure as the initial block partitioning structure for the current block. As an example of a method for selecting encoded blocks, one approach is to select encoded blocks that use the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more encoded blocks encoded using inter-frame prediction are selected.

[0433] The block partitioning construction of an already encoded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partition construction, a new block partition construction is derived as the initial block partition construction for the current block.

[0434] The initial block segmentation information can also be a set of parameters indicating whether the block is to be segmented horizontally or vertically. Alternatively, the initial block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0435] The initial block segmentation information can also differ based on the intra-prediction direction information of the coded blocks. For example, to determine whether the current block should be segmented vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, the block segmentation information used for the current block can be initialized to include vertical segmentation. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, the block segmentation information used for the current block can be initialized to include horizontal segmentation.

[0436] The initial block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the initial block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0437] Block partitioning information can also be initialized based on the intra / inter-frame prediction mode of the coded block. For example, if the prediction mode of the coded block is intra-frame prediction mode, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of relatively small block size. Furthermore, if the prediction mode of the coded block is inter-frame prediction mode, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of relatively large block size.

[0438] Block segmentation information can also be initialized based on the motion vectors of already encoded blocks. For example, if the difference between the motion vector of an already encoded block and the motion vector of the current block is greater than a predetermined threshold, the block segmentation information can be initialized as predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes. On the other hand, if the difference between the motion vector of an already encoded block and the motion vector of the current block is less than a predetermined threshold, the block segmentation information can be initialized as other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes.

[0439] Block partitioning information can also 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 smaller than a specified value, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes. Furthermore, if the value of the quantization parameter of the encoded block is greater than or equal to a specified value, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes.

[0440] Block segmentation information can also be initialized based on reference image information of already encoded blocks. For example, if the reference image of an already encoded block is close in time to the current image, or if multiple reference images of multiple already encoded blocks are similar to each other, the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of relatively large block size. If the reference image of an already encoded block is not close in time to the current image, or if multiple reference images of multiple already encoded blocks are not similar to each other, the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of relatively small block size.

[0441] Block segmentation information can also be initialized based on the segmentation depth of the encoded block. For example, if the segmentation depth of the encoded block is greater than a specified value (e.g., 4), the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes. If the segmentation depth of the encoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes.

[0442] Block segmentation information can also be initialized based on the segmentation information of encoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be initialized based on encoded blocks in encoded frames different from the current frame (e.g., collocated blocks, last encoded blocks, or encoded blocks determined by motion vectors).

[0443] Next, in step S5002, parameters are written to the bit stream. Figure 37 This indicates the writable location of the above parameters in the compressed image bitstream.

[0444] In step S5003, the initial block segmentation information is corrected to revised block segmentation information using the written parameters. If the revised block segmentation information is used, the block is segmented into multiple sub-blocks of a geometry set different from the first geometry set. The written parameters include one or more parameters used to correct the initial block segmentation information to the revised block segmentation information.

[0445] For example, the parameters written can include a splitting flag to divide the block into multiple sub-blocks. Figure 42A As shown, if this parameter is used, the value of the quadtree (QT) partition flag changes, and the initial block partitioning construction is corrected.

[0446] As another example, the parameters written may include merge flags that combine smaller blocks hierarchically into larger blocks based on a specified scan order (raster scan or Z-scan, etc.). Figure 42B As shown, if this parameter is used, multiple blocks are combined into a larger block, thus correcting the initial block partitioning structure. Figure 43 In this context, it represents an example of combining smaller blocks hierarchically to form a larger block.

[0447] As another example, the parameters written may include split enable flags that allow larger blocks to be hierarchically divided into smaller blocks based on a specified scan order (raster scan or Z-scan, etc.). Figure 42C As shown, if this parameter is used, the block is divided into smaller sub-blocks, and the initial block partitioning construction is corrected.

[0448] As another example, the parameters written can include the difference between the segmentation depth represented by the initial block segmentation information and the segmentation depth represented by the corrected block segmentation information. If this parameter is used, the block segmentation depth is corrected.

[0449] Different segmentation methods, such as splitting blocks and combining smaller blocks, can be combined to form the final block partition structure. The header of the bitstream may include control parameters such as one or more switching parameters or flags indicating whether to use a merge enable flag or a split enable flag.

[0450] By using initial block partitioning information or modified block partitioning information, a wide variety of block partitioning structures formed by various partitioning methods can be obtained. For example, a partitioning method could be... Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2) or Figure 41 As shown in m1) and m2), multi-branch tree cutting / splitting, or as shown in m2) Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), which is a non-square / non-rectangular division, there can be a wide variety of geometric shapes.

[0451] The parameters written can, for example, indicate that no correction is needed. If no correction is needed, steps S5003 and S5004 can be omitted. Therefore, before proceeding to step S5005, the block is divided into multiple sub-blocks using the initial block segmentation information. Next, in step S5005, the case of encoding the sub-blocks contained in the multiple sub-blocks divided using the corrected block segmentation information through encoding processing is replaced by encoding the sub-blocks contained in the multiple sub-blocks divided using the initial block segmentation information through encoding processing.

[0452] In step S5004, the geometry of multiple sub-blocks is corrected using the correction block segmentation information.

[0453] In step S5005, the sub-blocks contained in the plurality of sub-blocks are encoded through an encoding process. Here, the encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a block-by-block basis, each block being the same size as the sub-block.

[0454] [Encoding device]

[0455] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0456] [Decoding Processing]

[0457] Figure 16 This illustrates an example of image decoding processing related to Implementation 4.

[0458] As the initial step S6001, the block segmentation information is initialized. If this initial block segmentation information is used, the block is divided into multiple sub-blocks of the first geometry set. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0459] As the initial block partition construction for the current block, it can use the block partition construction of the decoded block as is.

[0460] It is also possible to construct a combination of block partitions from two or more decoded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning construction of the previous block, and the remaining half uses the block partitioning construction of the left block, deriving a new block partitioning construction as the initial block partitioning construction for the current block. As an example of a method for selecting decoded blocks, one approach is to select decoded blocks with the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more decoded blocks that have been decoded using inter-frame prediction are selected.

[0461] It is also possible to modify the block partitioning structure of a decoded block (e.g., ... Figure 40 As shown, using a shallower block partition construction, a new block partition construction is derived as the initial block partition construction for the current block.

[0462] The initial block segmentation information can also be a set of parameters indicating whether the block is to be segmented horizontally or vertically. Alternatively, the initial block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0463] The initial block segmentation information can also differ based on the intra-prediction direction information of the decoded blocks. For example, to determine whether the current block should be segmented vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or nearly vertical, the block segmentation information used for the current block can be initialized to include vertical segmentation. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or nearly horizontal, the block segmentation information used for the current block can be initialized to include horizontal segmentation.

[0464] The initial block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the initial block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0465] Block partitioning information can be initialized based on the intra / inter-frame prediction mode of the decoded block. For example, if the prediction mode of the decoded block is intra-frame prediction mode, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of relatively small block size. Furthermore, if the prediction mode of the decoded block is inter-frame prediction mode, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of relatively large block size.

[0466] Block segmentation information can also be initialized based on 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 segmentation information can be initialized as predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block size. 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 a predetermined threshold, the block segmentation information can be initialized as other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block size.

[0467] Block partitioning information can also 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 smaller than a specified value, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes. Furthermore, if the value of the quantization parameter of the decoded block is greater than or equal to a specified value, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes.

[0468] Block segmentation information can also be initialized based on reference image information of decoded blocks. For example, if the reference image of a decoded block is temporally close to the current image, or if multiple reference images of multiple decoded blocks are similar to each other, the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of relatively large block size. If the reference image of a decoded block is not temporally close to the current image, or if multiple reference images of multiple decoded blocks are not similar to each other, the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of relatively small block size.

[0469] Block partitioning information can also be initialized based on the partitioning depth of the decoded block. For example, if the partitioning depth of the decoded block is greater than a specified value (e.g., 4), the block partitioning information can be initialized as specified block partitioning information that partitions the block into multiple sub-blocks of smaller block sizes. If the partitioning depth of the decoded block is less than the specified value (e.g., when the partitioning depth is equal to 2), the block partitioning information can be initialized as other specified block partitioning information that partitions the block into multiple sub-blocks of larger block sizes.

[0470] Block segmentation information can also be initialized based on the segmentation information of decoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) for the current block or the separation information for the current block can be initialized based on decoded blocks in decoded frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks determined by motion vectors, etc.).

[0471] Next, in step S6002, parameters are parsed from the bit stream. Figure 37 This indicates the resolvable location of the above parameters in the compressed image bitstream.

[0472] In step S6003, the parsed parameters are used to correct the initial block segmentation information into corrected block segmentation information. If the corrected block segmentation information is used, the block is divided into multiple sub-blocks of a geometry set different from the first geometry set. The parsed parameters include one or more parameters used to correct the initial block segmentation information into the corrected block segmentation information.

[0473] For example, the parsed parameters may include splitting flags that divide the block into multiple sub-blocks. Figure 42A As shown, if this parameter is used, the value of the quadtree (QT) partition flag changes, and the initial block partitioning construction is corrected.

[0474] As another example, the resolved parameters may include merge flags that combine smaller blocks hierarchically into larger blocks based on a prescribed scanning order (raster scan or Z-scan, etc.). Figure 42B As shown, if this parameter is used, multiple blocks are combined into a larger block, thus correcting the initial block partitioning structure. Figure 43 The text represents an example of combining smaller blocks hierarchically to form a larger block.

[0475] As another example, the resolved parameters may include split enable flags indicating that larger blocks are hierarchically divided into smaller blocks based on a prescribed scanning order (raster scan or Z-scan, etc.). Figure 42C As shown, if this parameter is used, the block is divided into smaller sub-blocks, and the initial block partitioning construction is corrected.

[0476] As another example, the parsed parameters may include the difference between the segmentation depth represented by the initial block segmentation information and the segmentation depth represented by the revised block segmentation information. If this parameter is used, the segmentation depth of the block is corrected.

[0477] Different segmentation methods, such as splitting blocks and combining smaller blocks, can be combined to form the final block partition structure. The header of the bitstream may contain control parameters such as one or more switching parameters or flags indicating whether to use a merge enable flag or a split enable flag.

[0478] By using initial block partitioning information or modified block partitioning information, a wide variety of block partitioning structures can be obtained using various partitioning methods. For example, a partitioning method could be... Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), there are various geometric shapes, such as non-square / non-rectangular divisions.

[0479] The parsed parameters may indicate that no correction is needed. If no correction is needed, steps S6003 and S6004 can be omitted. Therefore, before proceeding to step S6005, the block is divided into multiple sub-blocks using the initial block segmentation information. Next, in step S6005, the case of decoding the sub-blocks contained in the multiple sub-blocks segmented using the corrected block segmentation information is replaced by decoding the sub-blocks contained in the multiple sub-blocks segmented using the initial block segmentation information.

[0480] In step S6004, the geometry of multiple sub-blocks is corrected using correction block segmentation information.

[0481] In step S6005, the sub-blocks contained in the plurality of sub-blocks are decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a block-by-block basis, each block being the same size as the sub-block.

[0482] [Decoding device]

[0483] The structure of the image / image decoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0484] Alternatively, in this embodiment, default block segmentation information can also be used as the initial block segmentation information. Default block segmentation information refers to pre-defined block segmentation information. For example, default block segmentation information can also be block segmentation information predefined in a standard specification. Furthermore, default block segmentation information can also be block segmentation information written into a header higher than the block level. Additionally, when using default block segmentation information, in steps S5001 and S6001, the default block segmentation information is obtained instead of initializing the block segmentation information.

[0485] Furthermore, in this embodiment, an example of initializing block segmentation information based on the block information of an encoded block or a decoded block is described, but it is not limited to this. For example, in the initialization of block segmentation information, the segmentation depth may also be determined based on at least one of the image type (I, P, or B image) and quantization parameters of the current block.

[0486] Specifically, for example, if the current block's image type is an I-image, the block segmentation information can be initialized to segment the block with a relatively deep segmentation depth. Conversely, if the current block's image type is a P-image or a B-image, the block segmentation information can be initialized to segment the block with a relatively shallow segmentation depth.

[0487] Furthermore, the segmentation depth of the initial block segmentation information can also be determined based on the quantization parameters of the current block. Specifically, if the value of the quantization parameters of the current block is smaller than a specified value, the block segmentation information can be initialized to segment the block with a relatively deep segmentation depth. Conversely, if the value of the quantization parameters of the current block is greater than or equal to a specified value, the block segmentation information can be initialized to segment the block with a relatively shallow segmentation depth.

[0488] (Implementation Method 5)

[0489] [summary]

[0490] The encoding apparatus of this embodiment is an encoding apparatus that encodes blocks of an image, and includes a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bit stream; dividing the block into multiple sub-blocks, and using the written parameters, combining at least two sub-blocks contained in the multiple sub-blocks to form a combined block; and encoding the combined block by encoding processing including transformation processing and / or prediction processing.

[0491] Therefore, parameters can be used to combine at least two sub-blocks. Consequently, the segmentation of the current block can be modified using parameters, allowing the use of sub-blocks that are more suitable for encoding. As a result, compression efficiency can be improved.

[0492] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: parsing parameters from a bitstream; dividing the block into multiple sub-blocks; using the parsed parameters, combining at least two sub-blocks contained in the multiple sub-blocks to form a combined block; and decoding the combined block by decoding processing including inverse transform processing and / or prediction processing.

[0493] Therefore, parameters can be used to combine at least two sub-blocks. Consequently, the segmentation of the current block can be corrected using parameters, allowing the use of sub-blocks more suitable for decoding. As a result, compression efficiency can be improved.

[0494] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0495] Methods for encoding and decoding images, such as Figure 17 and Figure 18 The following descriptions will be provided according to the implementation method.

[0496] [Encoding Processing]

[0497] Figure 17 This illustrates an example of image encoding processing related to Implementation 5.

[0498] As the initial step S7001, parameters are written to the bitstream. Figure 37 This indicates the writable location of the above parameters in the compressed image bitstream.

[0499] Next, in step S7002, the block is divided into multiple sub-blocks using the initial block segmentation information. For example... Figure 38As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0500] As the initial block partition construct for the current block, the block partition construct of the previously encoded block can be used as is. Alternatively, the default block partition construct can be used as the initial block partition construct for the current block.

[0501] It is also possible to construct a combination of block partitions of two or more coded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning structure of the previous block, and the remaining half uses the block partitioning structure of the left block, deriving a new block partitioning structure as the initial block partitioning structure for the current block. As an example of a method for selecting encoded blocks, one approach is to select encoded blocks that use the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more encoded blocks that have been coded using inter-frame prediction are selected.

[0502] The block partitioning construction of an already encoded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partition construction, a new block partition construction is derived as the initial block partition construction for the current block.

[0503] The initial block segmentation information can also be a set of parameters indicating whether the block is to be segmented horizontally or vertically. Alternatively, the initial block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0504] The initial block segmentation information can also differ based on the intra-prediction direction information of the coded blocks. For example, to determine whether the current block should be segmented vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, the block segmentation information used for the current block can be initialized to include vertical segmentation. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, the block segmentation information used for the current block can be initialized to include horizontal segmentation.

[0505] The initial block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the initial block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0506] Block partitioning information can also be initialized based on the intra / inter-frame prediction mode of the coded block. For example, if the prediction mode of the coded block is intra-frame prediction mode, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of relatively small block size. Furthermore, if the prediction mode of the coded block is inter-frame prediction mode, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of relatively large block size.

[0507] Block segmentation information can also be initialized based on the motion vectors of already encoded blocks. For example, if the difference between the motion vector of an already encoded block and the motion vector of the current block is greater than a predetermined threshold, the block segmentation information can be initialized as predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes. On the other hand, if the difference between the motion vector of an already encoded block and the motion vector of the current block is less than a predetermined threshold, the block segmentation information can be initialized as other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes.

[0508] Block partitioning information can also 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 smaller than a specified value, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes. Furthermore, if the value of the quantization parameter of the encoded block is greater than or equal to a specified value, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes.

[0509] Block segmentation information can also be initialized based on reference image information of already encoded blocks. For example, if the reference image of an already encoded block is close in time to the current image, or if multiple reference images of multiple already encoded blocks are similar to each other, the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of relatively large block size. If the reference image of an already encoded block is not close in time to the current image, or if multiple reference images of multiple already encoded blocks are not similar to each other, the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of relatively small block size.

[0510] Block segmentation information can also be initialized based on the segmentation depth of the encoded block. For example, if the segmentation depth of the encoded block is greater than a specified value (e.g., 4), the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes. If the segmentation depth of the encoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes.

[0511] Block segmentation information can also be initialized based on the segmentation information of coded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be initialized based on coded blocks in coded frames different from the current frame (e.g., collocated blocks, last encoded blocks, or coded blocks determined by motion vectors).

[0512] In step S7003, using the written parameters, two or more sub-blocks contained in multiple sub-blocks are combined to form a merged block. For example, the written parameters may include merge flags indicating that smaller blocks are hierarchically combined to form a larger block based on a specified scan order (raster scan or Z-scan, etc.). Figure 42B As shown, if this parameter is used, multiple blocks are combined into a larger block, thus correcting the initial block partitioning structure. Figure 43 The text represents an example of combining smaller blocks hierarchically to form a larger block.

[0513] The segmentation method used during the construction of the exported block partition can also differ before and after the combination process in step S7003. For example, the segmentation method could be as follows: Figure 41 The binary tree partitions shown in b1) and b2), or as shown in b2) Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), there are various geometric shapes, such as non-square / non-rectangular divisions.

[0514] The parameters written can, for example, indicate that no combination is needed. If no combination is needed, step S7003 can be omitted. Therefore, before proceeding to step S7004, the block is divided into multiple sub-blocks using the initial block segmentation information. Then, in step S7004, the sub-blocks are encoded through encoding processing instead of combining the blocks.

[0515] In step S7004, the combined block is encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, with each block being the same size as the sub-block.

[0516] [Encoding device]

[0517] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0518] [Decoding Processing]

[0519] Figure 18 This illustrates an example of image decoding processing related to Implementation 5.

[0520] As the initial step S8001, parameters are parsed from the bitstream. Figure 37 This indicates the resolvable location of the above parameters in the compressed image bitstream.

[0521] Next, in step S8002, the block is divided into multiple sub-blocks using the initial block segmentation information. For example... Figure 38 As shown, if different block segmentation information is used, the height, width, or shape of the multiple sub-blocks resulting from the block segmentation will also be different.

[0522] As the initial block partition construction for the current block, it can use the block partition construction of the decoded block as is.

[0523] It is also possible to construct a combination of block partitions from two or more decoded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning construction of the previous block, and the remaining half uses the block partitioning construction of the left block, deriving a new block partitioning construction as the initial block partitioning construction for the current block. As an example of a method for selecting decoded blocks, one approach is to select decoded blocks with the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more decoded blocks that have been decoded using inter-frame prediction are selected.

[0524] It is also possible to modify the block partitioning structure of a decoded block (e.g., ... Figure 40 As shown, using a shallower block partition construction, a new block partition construction is derived as the initial block partition construction for the current block.

[0525] The initial block segmentation information can also be a set of parameters indicating whether the block is to be segmented horizontally or vertically. Alternatively, the initial block segmentation information can be a set of parameters specifying the block width and height for all sub-blocks within the block.

[0526] The initial block segmentation information can also differ based on the intra-prediction direction information of the decoded blocks. For example, to determine whether the current block should be segmented vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or nearly vertical, the block segmentation information used for the current block can be initialized to include vertical segmentation. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or nearly horizontal, the block segmentation information used for the current block can be initialized to include horizontal segmentation.

[0527] The initial block partitioning information can also be a set of parameters containing indices used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the initial block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0528] Block partitioning information can be initialized based on the intra / inter-frame prediction mode of the decoded block. For example, if the prediction mode of the decoded block is intra-frame prediction mode, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of relatively small block size. Furthermore, if the prediction mode of the decoded block is inter-frame prediction mode, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of relatively large block size.

[0529] Block segmentation information can also be initialized based on 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 segmentation information can be initialized as predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block size. 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 a predetermined threshold, the block segmentation information can be initialized as other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block size.

[0530] Block partitioning information can also 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 smaller than a specified value, the block partitioning information can be initialized as specified block partitioning information that divides the block into multiple sub-blocks of smaller block sizes. Furthermore, if the value of the quantization parameter of the decoded block is greater than or equal to a specified value, the block partitioning information can be initialized as other specified block partitioning information that divides the block into multiple sub-blocks of larger block sizes.

[0531] Block segmentation information can also be initialized based on reference image information of decoded blocks. For example, if the reference image of a decoded block is temporally close to the current image, or if multiple reference images of multiple decoded blocks are similar to each other, the block segmentation information can be initialized as specified block segmentation information that divides the block into multiple sub-blocks of relatively large block size. If the reference image of a decoded block is not temporally close to the current image, or if multiple reference images of multiple decoded blocks are not similar to each other, the block segmentation information can be initialized as other specified block segmentation information that divides the block into multiple sub-blocks of relatively small block size.

[0532] Block partitioning information can also be initialized based on the partitioning depth of the decoded block. For example, if the partitioning depth of the decoded block is greater than a specified value (e.g., 4), the block partitioning information can be initialized as specified block partitioning information that partitions the block into multiple sub-blocks of smaller block sizes. If the partitioning depth of the decoded block is less than the specified value (e.g., when the partitioning depth is equal to 2), the block partitioning information can be initialized as other specified block partitioning information that partitions the block into multiple sub-blocks of larger block sizes.

[0533] Block segmentation information can also be initialized based on the segmentation information of decoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be initialized based on decoded blocks in decoded frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks determined by motion vectors, etc.).

[0534] In step S8003, the parsed parameters are used to combine two or more sub-blocks contained in multiple sub-blocks into a merged block. For example, the parsed parameters may include merge flags indicating that smaller blocks are hierarchically combined to form a larger block based on a predetermined scanning order (raster scan or Z-scan, etc.). Figure 42B As shown, if this parameter is used, multiple blocks are combined into a larger block, thus correcting the initial block partitioning structure. Figure 43 The text represents an example of combining smaller blocks hierarchically to form a larger block.

[0535] The segmentation method used during the construction of the exported block partition can differ before and after the combination process in step S8003. For example, the segmentation method could be as follows: Figure 41 The binary tree partitioning shown in b1) and b2) or Figure 41 The quadtree partitioning shown in q1) and q2), or as shown in q2) Figure 41 Multi-branch tree cutting / splitting as shown in m1) and m2), or as... Figure 41 The non-square / non-rectangular divisions shown in n1). The geometry (shape and / or size) of the sub-blocks, such as... Figure 41 The asymmetric binary tree partition shown in b2) is as follows: Figure 41 The asymmetric quadtree partitioning shown in q2) is as follows: Figure 41 The different sizes of multi-branch tree cuts shown in m1), or as... Figure 41 As shown in n1), there are various geometric shapes, such as non-square / non-rectangular divisions.

[0536] The parsed parameters may indicate that no combination is needed. If no combination is needed, step S8003 can be omitted. Therefore, before proceeding to step S8004, the block is divided into multiple sub-blocks using the initial block segmentation information. Then, in step S8004, the sub-blocks are decoded through decoding processing instead of combining the blocks.

[0537] In step S8004, the combined block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The transform processing can be performed on a block-by-block basis, each block being the same size as the sub-block.

[0538] [Decoding device]

[0539] The structure of the image / image decoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0540] (Implementation Method 6)

[0541] [summary]

[0542] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: reading the geometry of the block, determining whether the read geometry is equal to a predetermined geometry; if the read geometry is equal to the predetermined geometry, dividing the block into a predetermined number of sub-blocks of a first geometry set; if the read geometry is not equal to the predetermined geometry, dividing the block into the predetermined number of sub-blocks of another geometry set different from the first geometry set; and encoding the sub-blocks through encoding processing including transformation processing and / or prediction processing.

[0543] Therefore, the block can be segmented based on its geometry. Consequently, the amount of code related to block segmentation information can be reduced, improving compression efficiency. Furthermore, the utilization of block geometry contributes to creating more suitable sub-blocks for encoding, further enhancing compression efficiency.

[0544] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0545] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0546] For example, in the encoding device of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0547] Therefore, blocks can be divided by powers of 2, where at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be obtained, thus improving compression efficiency.

[0548] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: reading out the geometry of the block, determining whether the read geometry is equal to a predetermined geometry; if the read geometry is equal to the predetermined geometry, dividing the block into a predetermined number of sub-blocks of a first geometry set; if the read geometry is not equal to the predetermined geometry, dividing the block into the predetermined number of sub-blocks of another geometry set different from the first geometry set; and decoding the sub-blocks by decoding processing including inverse transform processing and / or prediction processing.

[0549] Therefore, the block can be segmented based on its geometry. Consequently, the amount of code related to block segmentation information can be reduced, improving compression efficiency. Furthermore, the utilization of block geometry contributes to creating more suitable sub-blocks for encoding, further enhancing compression efficiency.

[0550] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0551] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0552] For example, in the decoding apparatus of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0553] Therefore, blocks can be divided in such a way that at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be used, thereby improving compression efficiency.

[0554] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0555] The following describes methods for encoding and decoding images, such as... Figure 19 and Figure 20 The following descriptions will be provided according to the implementation method.

[0556] [Encoding Processing]

[0557] Figure 19 This illustrates an example of image encoding processing related to Implementation 6.

[0558] As the initial step S9001, the geometry of the block is read. Here, the geometry at least represents the shape, height, or width of the block. For example... Figure 44 As shown, if different geometries are used, the shapes, block heights, or block widths of the multiple sub-blocks resulting from block segmentation will also be different.

[0559] Next, in step S9002, it is determined whether the read geometric figure is equal to the specified geometric figure.

[0560] If the read geometric figure is equal to the specified geometric figure (Yes in S9002), in step S9003, the block is divided into a specified number of sub-blocks of the first geometric figure set. If the read geometric figure is not equal to the specified geometric figure (No in S9002), in step S9004, the block is divided into a specified number of sub-blocks of other geometric figure sets different from the first geometric figure set.

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

[0562] As another example, such as Figure 45C As shown in (c1), when the specified number of sub-blocks is set to 2, if the block width (e.g., 8) is smaller than the block height (e.g., 32), the block can be horizontally divided into two sub-blocks of equal size. On the other hand, as... Figure 45CAs shown in (c2), if the width (e.g., 32) is greater than the block height (e.g., 8), the block can be vertically divided into two sub-blocks of equal size.

[0563] When the specified number of sub-blocks is set to 4, for example... Figure 45B As shown in (b1), if the block width is a power of 2 (e.g., 32), then the block can be divided into four sub-blocks, each with the largest sub-block having a width three times that of the smallest sub-block. On the other hand, as... Figure 45B As shown in (b2), if the block width is not a power of 2 (e.g., 24), it is possible to divide the block into 4 sub-blocks, where the width of the largest sub-block is twice the width of the smallest sub-block.

[0564] As another example, such as Figure 45D As shown in (d1), when the specified number of sub-blocks is set to 4, if the block width (e.g., 32) and the block height (e.g., 32) are the same, the block can be equally divided in both the horizontal and vertical directions. Figure 45D As shown in (d2), if the block width (e.g., 32) is 4 times the block height (e.g., 8), the block can be divided equally vertically. Similarly, if the block height (e.g., 32) is 4 times the block width (e.g., 8), the block can be divided equally horizontally.

[0565] like Figures 45A to 45D Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0566] In step S9005, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, each block being the same size as the sub-block.

[0567] [Encoding device]

[0568] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0569] [Decoding Processing]

[0570] Figure 20 This illustrates an example of image decoding processing related to Implementation 6.

[0571] As the initial step S10001, the geometry of the block is read. Here, the geometry at least represents the shape, height, or width of the block. For example... Figure 44 As shown, if different geometries are used, the shapes, block heights, or block widths of the multiple sub-blocks resulting from block segmentation will also be different.

[0572] Next, in step S10002, it is determined whether the read geometric figure is equal to the specified geometric figure.

[0573] If the read geometric figure is equal to the specified geometric figure (Yes in S10002), in step S10003, the block is divided into a specified number of sub-blocks composed of the first geometric figure set. If the read geometric figure is not equal to the specified geometric figure (No in S10002), in step S10004, the block is divided into a specified number of sub-blocks composed of other geometric figure sets different from the first geometric figure set.

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

[0575] As another example, such as Figure 45C As shown in (c1), when the specified number of sub-blocks is set to 2, if the block width (e.g., 8) is smaller than the block height (e.g., 32), the block can be horizontally divided into two sub-blocks of equal size. On the other hand, as... Figure 45C As shown in (c2), if the width (e.g., 32) is greater than the block height (e.g., 8), the block can be vertically divided into two sub-blocks of equal size.

[0576] For example, such as Figure 45B As shown in (b1), when the specified number of sub-blocks is set to 4, if the block width is a power of 2 (e.g., 32), the block can be divided into 4 sub-blocks, where the width of the largest sub-block is 3 times the width of the smallest sub-block. On the other hand, as... Figure 45B As shown in (b2), if the block width is not a power of 2 (e.g., 24), it is possible to divide the block into 4 sub-blocks, where the width of the largest sub-block is twice the width of the smallest sub-block.

[0577] For example, such as Figure 45D As shown in (d1), when the specified number of sub-blocks is set to 4, if the block width (e.g., 32) and the block height (e.g., 32) are the same, the block can be equally divided in both the horizontal and vertical directions. Figure 45DAs shown in (d2), if the block width (e.g., 32) is 4 times the block height (e.g., 8), the block can be divided equally vertically. Similarly, if the block height (e.g., 32) is 4 times the block width (e.g., 8), the block can be divided equally horizontally.

[0578] like Figures 45A to 45D Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0579] In step S10005, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0580] [Decoding device]

[0581] The structure of the image / image decoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0582] (Implementation Method 7)

[0583] [summary]

[0584] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bit stream; determining whether the written parameters are equal to a predetermined value; if the written parameters are equal to the predetermined value, dividing the block into a predetermined number of sub-blocks of a first geometric set; if the written parameters are not equal to the predetermined value, dividing the block into the predetermined number of sub-blocks of another geometric set different from the first geometric set; and encoding the sub-blocks through an encoding process including transformation processing and / or prediction processing.

[0585] Therefore, the geometric set of a specified number of sub-blocks can be switched based on whether the parameters are equal to the specified values.

[0586] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0587] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0588] For example, in the encoding device of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0589] Therefore, blocks can be divided by powers of 2, where at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be obtained, thus improving compression efficiency.

[0590] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: parsing parameters from a bitstream; determining whether the parsed parameters are equal to a predetermined value; if the parsed parameters are equal to the predetermined value, dividing the block into a predetermined number of sub-blocks of a first geometric set; if the parsed parameters are not equal to the predetermined value, dividing the block into the predetermined number of sub-blocks of another geometric set different from the first geometric set; and decoding the sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0591] Therefore, the geometric set of a specified number of sub-blocks can be switched based on whether the parameters are equal to the specified values.

[0592] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0593] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0594] For example, in the decoding apparatus of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0595] Therefore, blocks can be divided in such a way that at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be used, thereby improving compression efficiency.

[0596] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0597] The following describes methods for encoding and decoding images, such as... Figure 21 and Figure 22 The following descriptions will be provided according to the implementation method.

[0598] [Encoding Processing]

[0599] Figure 21 This illustrates an example of image encoding processing related to Implementation 7.

[0600] As the initial step S11001, the parameters are written into the bit stream. Figure 37 This indicates the writable location of the above parameters in the compressed image bitstream.

[0601] Next, in step S11002, it is determined whether the written parameter is equal to the specified value.

[0602] If the written parameters are equal to the specified values ​​(Yes in S11002), in step S11003, the block is divided into a specified number of sub-blocks of the first geometry set. If the written parameters are not equal to the specified values ​​(No in S11002), in step S11004, the block is divided into a specified number of sub-blocks of other geometry sets different from the first geometry set.

[0603] The parameters written can represent the partitioning mode (e.g., quadtree / binary tree / multi-tree partitioning, vertical / horizontal partitioning, symmetric / asymmetric partitioning, and the ratio of block width to block height of sub-blocks).

[0604] For example, for a 24×32 block, such as Figure 46A As shown in (a1), the parameters written can indicate that the partition is a binary tree partition, the partition is a vertical partition, and the ratio of the width of the two sub-blocks is 1:2. In this case, the 24×32 block is partitioned into 8×32 sub-blocks and 16×32 sub-blocks.

[0605] As another example, for a 24×32 block, such as Figure 46A As shown in (a2), the parameters written can indicate that the partition is a binary tree partition, the partition is a vertical partition, and the ratio of the width of the two sub-blocks is 2:1. In this case, the 24×32 block is partitioned into 16×32 sub-blocks and 8×32 sub-blocks.

[0606] For example, for a 24×24 block, such as Figure 46B As shown in (b1), the parameters written can indicate that the partition is a quadtree partition, the top-left sub-block is the largest sub-block, and the ratio of the block width of the largest sub-block to the smallest sub-block is 2:1. In this case, the 24×24 block is partitioned into 16×16 sub-blocks and 8×16 sub-blocks, and 16×8 sub-blocks and 8×8 sub-blocks.

[0607] As another example, for a 24×24 block, such as Figure 46B As shown in (b2), the parameters written can indicate that the partition is a quadtree partition, the bottom right sub-block is the largest sub-block, and the ratio of the block width of the largest sub-block to the smallest sub-block is 2:1. In this case, the 24×24 block is partitioned into 8×8 sub-blocks and 16×8 sub-blocks, and 8×16 sub-blocks and 16×16 sub-blocks.

[0608] For example, for a 32×32 block, such as Figure 46C As shown in (c1), the parameters written can indicate whether the partition is a ternary tree partition, a vertical partition, and that the ratio of the block widths of the sub-blocks is 1:1:2. In this case, the 32×32 block is partitioned into two 8×32 sub-blocks and a 16×32 sub-block.

[0609] As another example, for a 32×32 block, such as Figure 46C As shown in (c2), the parameters written can indicate whether the partition is a ternary tree partition, a vertical partition, and that the ratio of the block widths of the sub-blocks is 2:1:1. In this case, the 32×32 block is partitioned into 16×32 sub-blocks and two 8×16 sub-blocks.

[0610] For example, for a 32×32 block, such as Figure 46D As shown in (d1), the parameters written can indicate whether the partition is a quadtree partition and whether the partition includes both horizontal and vertical directions. In this case, the 32×32 block is partitioned into four 16×16 sub-blocks.

[0611] As another example, for a 32×32 block, such as Figure 46D As shown in (d2), the parameters written can indicate whether the partition is a quadtree partition or only contains vertical segments. In this case, the 32×32 block is partitioned into four 8×32 sub-blocks.

[0612] like Figures 46A to 46D Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0613] In step S11005, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, with each block having the same size as the sub-block.

[0614] [Encoding device]

[0615] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0616] [Decoding Processing]

[0617] Figure 22 This illustrates an example of image decoding processing related to Implementation 7.

[0618] As the initial step S12001, parameters are parsed from the bitstream. Figure 37 This indicates the resolvable location of the above parameters in the compressed image bitstream.

[0619] Next, in step S12002, it is determined whether the parsed parameter is equal to the specified value.

[0620] If the parsed parameters are equal to the specified values ​​(Yes in S12002), in step S12003, the block is divided into a specified number of sub-blocks of the first geometric set. If the parsed geometric set is not equal to the specified values ​​(No in S12002), in step S12004, the block is divided into a specified number of sub-blocks of other geometric sets different from the first geometric set.

[0621] The parsed parameters can represent the partitioning pattern (e.g., quadtree / binary tree / multi-tree partitioning, vertical / horizontal partitioning, symmetric / asymmetric partitioning, and the ratio of block width to block height of sub-blocks).

[0622] For example, for a 24×32 block, such as Figure 46A As shown in (a1), the parsed parameters can indicate that the partition is a binary tree partition, the partition is a vertical partition, and the ratio of the width of the two sub-blocks is 1:2. In this case, the 24×32 block is partitioned into 8×32 sub-blocks and 16×32 sub-blocks.

[0623] As another example, for a 24×32 block, such as Figure 46A As shown in (a2), the parsed parameters can indicate that the partition is a binary tree partition, the partition is a vertical partition, and the ratio of the width of the two sub-blocks is 2:1. In this case, the 24×32 block is partitioned into 16×32 sub-blocks and 8×32 sub-blocks.

[0624] For example, for a 24×24 block, such as Figure 46B As shown in (b1), the parsed parameters indicate that the partition is a quadtree partition, the top-left sub-block is the largest sub-block, and the ratio of the width of the largest sub-block to the width of the smallest sub-block is 2:1. In this case, the 24×24 block is partitioned into 16×16 sub-blocks, 8×16 sub-blocks, 16×8 sub-blocks, and 8×8 sub-blocks.

[0625] As another example, for a 24×24 block, such as Figure 46B As shown in (b2), the parsed parameters indicate that the partition is a quadtree partition, the bottom right sub-block is the largest sub-block, and the ratio of the width of the largest sub-block to the width of the smallest sub-block is 2:1. In this case, the 24×24 block is partitioned into 8×8 sub-blocks, 16×8 sub-blocks, 8×16 sub-blocks, and 16×16 sub-blocks.

[0626] For example, for a 32×32 block, such as Figure 46CAs shown in (c1), the parsed parameters indicate that the partition is a ternary tree partition, the partition is a vertical partition, and the ratio of the block widths of the sub-blocks is 1:1:2. In this case, the 32×32 block is partitioned into two 8×32 sub-blocks and a 16×32 sub-block.

[0627] As another example, for a 32×32 block, such as Figure 46C As shown in (c2), the parsed parameters indicate that the partition is a ternary tree partition, the partition is a vertical partition, and the ratio of the block widths of the sub-blocks is 2:1:1. In this case, the 32×32 block is partitioned into 16×32 sub-blocks and two 8×16 sub-blocks.

[0628] For example, for a 32×32 block, such as Figure 46D As shown in (d1), the parsed parameters can indicate that the partition is a quadtree partition and that the partition includes both horizontal and vertical directions. In this case, the 32×32 block is partitioned into four 16×16 sub-blocks.

[0629] As another example, for a 32×32 block, such as Figure 46D As shown in (d2), the parsed parameters can indicate whether the partition is a quadtree partition or whether the partition only includes vertical segments. In this case, the 32×32 block is partitioned into four 8×32 sub-blocks.

[0630] like Figures 46A to 46D Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0631] In step S12005, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0632] [Decoding device]

[0633] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0634] (Implementation Method 8)

[0635] [summary]

[0636] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: reading the geometry of the block, determining whether the read geometry is equal to a predetermined geometry; if the read geometry is equal to the predetermined geometry, dividing the block into a first number of sub-blocks; if the read geometry is not equal to the predetermined geometry, dividing the block into a number of sub-blocks not equal to the first number; and encoding the sub-blocks through an encoding process including transformation processing and / or prediction processing.

[0637] Therefore, a block can be divided into sub-blocks based on the number of geometric features of that block. Consequently, the amount of code related to block segmentation information can be reduced, improving compression efficiency. Furthermore, the number of sub-blocks can be made independent of the block's geometry. As a result, blocks can be segmented more effectively, further improving compression efficiency.

[0638] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0639] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0640] For example, in the encoding device of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0641] Therefore, blocks can be divided by powers of 2, where at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be obtained, thus improving compression efficiency.

[0642] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: read out the geometry of the block, and determine whether the read-out geometry is equal to a predetermined geometry; if the read-out geometry is equal to the predetermined geometry, divide the block into a first number of sub-blocks; if the read-out geometry is not equal to the predetermined geometry, divide the block into a number of sub-blocks that is not equal to the first number; and decode the sub-blocks through decoding processing including inverse transformation processing and / or prediction processing.

[0643] Therefore, a block can be divided into sub-blocks based on the number of geometric features of that block. Consequently, the amount of code related to block segmentation information can be reduced, improving compression efficiency. Furthermore, the number of sub-blocks can be made independent of the block's geometry. As a result, blocks can be segmented more effectively, further improving compression efficiency.

[0644] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0645] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0646] For example, in the decoding apparatus of this embodiment, at least one of the height and width of the sub-block can be a power of 2.

[0647] Therefore, blocks can be divided in such a way that at least one of the height and width of the sub-block is a power of 2. Consequently, sub-blocks of suitable size for encoding can be used, thereby improving compression efficiency.

[0648] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0649] The following describes methods for encoding and decoding images, such as... Figure 23 and Figure 24 The following descriptions will be provided according to the implementation method.

[0650] [Encoding Processing]

[0651] Figure 23 This illustrates an example of image encoding processing related to Implementation 8.

[0652] As the initial step S13001, the geometry of the block is read. Here, the geometry at least represents the shape, height, or width of the block. For example... Figure 44 As shown, if different geometries are used, the shapes, block heights, or block widths of the multiple sub-blocks resulting from block segmentation will also be different.

[0653] Next, in step S13002, it is determined whether the read geometric figure is equal to the specified geometric figure.

[0654] If the read geometry is equal to the specified geometry (Yes in S13002), in step S13003, the block is divided into a first number of sub-blocks. If the read geometry is not equal to the specified geometry (No in S13002), in step S13004, the block is divided into a number of sub-blocks that is not equal to the first number.

[0655] For example, such as Figure 47A As shown in (a1), if the block width is a power of 2, then the block (e.g., 32×32) can be vertically divided into four sub-blocks of the same size (e.g., 8×32). On the other hand, as... Figure 47A As shown in (a2), if the block width is not a power of 2, it is possible to vertically divide the block (e.g., 24×32) into 3 sub-blocks of the same size (e.g., 8×32).

[0656] As another example, such as Figure 47B As shown in (b1), if both the block width and block height are powers of 2, and the block width is twice the block height, then a block (e.g., 64×32) can be divided into 8 equal-sized sub-blocks (e.g., 16×16). On the other hand, as... Figure 47B As shown in (b2), if the block width and block height are both powers of 2, and the block width and block height are the same, then the block (e.g., 32×32) can be divided into 4 sub-blocks of equal size (e.g., 16×16).

[0657] like Figures 47A-47B Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0658] In step S13005, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, with each block having the same size as the sub-block.

[0659] [Encoding device]

[0660] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0661] [Decoding Processing]

[0662] Figure 24 This illustrates an example of image decoding processing related to Implementation 8.

[0663] As the initial step S14001, the geometry of the block is read. Here, the geometry at least represents the shape, height, or width of the block. For example... Figure 44As shown, if different geometries are used, the shapes, block heights, or block widths of the multiple sub-blocks resulting from block segmentation will also be different.

[0664] Next, in step S14002, it is determined whether the read geometric figure is equal to the specified geometric figure.

[0665] If the read geometry is equal to the specified geometry (Yes in S14002), in step S14003, the block is divided into a first number of sub-blocks. If the read geometry is not equal to the specified geometry (No in S14002), in step S14004, the block is divided into a number of sub-blocks that is not equal to the first number.

[0666] For example, such as Figure 47A As shown in (a1), if the block width is a power of 2, then the block (e.g., 32×32) can be vertically divided into four sub-blocks of the same size (e.g., 8×32). On the other hand, as... Figure 47A As shown in (a2), if the block width is not a power of 2, it is possible to vertically divide the block (e.g., 24×32) into 3 sub-blocks of the same size (e.g., 8×32).

[0667] As another example, such as Figure 47B As shown in (b1), if both the block width and block height are powers of 2, and the block width is twice the block height, then a block (e.g., 64×32) can be divided into 8 equal-sized sub-blocks (e.g., 16×16). On the other hand, as... Figure 47B As shown in (b2), if the block width and block height are both powers of 2, and the block width and block height are the same, then the block (e.g., 32×32) can be divided into 4 sub-blocks of equal size (e.g., 16×16).

[0668] like Figures 47A-47B Therefore, in this embodiment, at least one of the height and width of the sub-block is a power of 2. Alternatively, the height and / or width of the sub-block may not be limited to a power of 2.

[0669] In step S14005, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0670] [Decoding device]

[0671] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0672] (Implementation Method 9)

[0673] [summary]

[0674] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bitstream; determining whether the written parameters are equal to a predetermined value; if the written parameters are equal to the predetermined value, dividing the block into a first number of sub-blocks, wherein the first number is greater than 2 if the block is divided in a single vertical or horizontal direction, and greater than 3 if the block is not divided in a single vertical or horizontal direction; if the written parameters are not equal to the predetermined value, dividing the block into a second number of sub-blocks that are not equal to the first number, wherein the second number is greater than 2 if the block is divided in a single vertical or horizontal direction, and greater than 3 if the block is not divided in a single vertical or horizontal direction; and encoding the sub-blocks by an encoding process including transformation processing and / or prediction processing.

[0675] Therefore, the number of sub-blocks after division can be switched based on whether the parameter is equal to the specified value.

[0676] The decoding apparatus of this embodiment is a decoding apparatus for decoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: parsing parameters from a bitstream; determining whether the parsed parameters are equal to a predetermined value; if the parsed parameters are equal to the predetermined value, dividing the block into a first number of sub-blocks, wherein the first number is greater than 2 if the block is divided in a single vertical or horizontal direction, and greater than 3 if the block is not divided in a single vertical or horizontal direction; if the parsed parameters are not equal to the predetermined value, dividing the block into a second number of sub-blocks that are not equal to the first number, wherein the second number is greater than 2 if the block is divided in a single vertical or horizontal direction, and greater than 3 if the block is not divided in a single vertical or horizontal direction; and decoding the sub-blocks by a decoding process including inverse transform processing and / or prediction processing.

[0677] Therefore, the number of sub-blocks after division can be switched based on whether the parameter is equal to the specified value.

[0678] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0679] The following describes methods for encoding and decoding images, such as... Figure 25 and Figure 26 The following descriptions will be provided according to the implementation method.

[0680] [Encoding Processing]

[0681] Figure 25 This illustrates an example of image encoding processing related to Implementation 9.

[0682] As the initial step S15001, the parameters are written into the bit stream. Figure 37 This indicates the writable location of the above parameters in the compressed image bitstream.

[0683] Next, in step S15002, it is determined whether the written parameter is equal to the specified value.

[0684] If the written parameters are equal to the specified values ​​(Yes in S15002), in step S15003, the block is divided into a first number of sub-blocks. Here, if the block division process is in a vertical or horizontal direction, the first number is greater than 2; if the block division process is not in a vertical or horizontal direction, the first number is greater than 3. If the written parameters are not equal to the specified values ​​(No in S15002), in step S15004, the block is divided into a second number of sub-blocks that is not equal to the first number. Here, if the block division process is in a vertical or horizontal direction, the second number is greater than 2; if the block division process is not in a vertical or horizontal direction, the second number is greater than 3.

[0685] For example, for a 32×32 block, such as Figure 48A As shown in (a1), the parameters written can indicate whether the partition is a quadtree partition or whether the partition only includes vertical segments. In this case, the 32×32 block is partitioned into four 8×32 sub-blocks.

[0686] As another example, for a 32×32 block, such as Figure 48A As shown in (a2), the parameters written can indicate whether the partition is a ternary tree partition, a vertical partition, and that the ratio of the block widths of the sub-blocks is 1:2:1. In this case, the 32×32 block is partitioned into 8×32 sub-blocks, 16×32 sub-blocks, and 8×32 sub-blocks.

[0687] For a 32×32 block, for example... Figure 48B As shown in (b1), the parameters written can indicate whether the partition is a quadtree partition or whether the partition only contains horizontal elements. In this case, the 32×32 block is partitioned into four 32×8 sub-blocks.

[0688] As another example, for a 32×32 block, such as Figure 48BAs shown in (b2), the parameters written can indicate that the partition is a ternary tree partition, the partition is a horizontal partition, and the ratio of the block height of the sub-blocks is 1:2:1. In this case, the 32×32 block is partitioned into 32×8 sub-blocks, 32×16 sub-blocks, and 32×8 sub-blocks.

[0689] For a 32×32 block, for example... Figure 48C As shown in (c1), the parameters written can indicate whether the partition is a quadtree partition and whether the partition includes both horizontal and vertical directions. In this case, the 32×32 block is partitioned into four 16×16 sub-blocks.

[0690] As another example, for a 32×32 block, such as Figure 48C As shown in (c2), the parameters written can indicate that the partition is a multi-way tree partition, the partition includes both horizontal and vertical directions, and the number of sub-blocks is 16. In this case, the 32×32 block is divided into 16 8×8 sub-blocks.

[0691] In step S15005, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, each block being the same size as the sub-block.

[0692] [Encoding device]

[0693] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0694] [Decoding Processing]

[0695] Figure 26 This illustrates an example of image decoding processing related to Implementation 9.

[0696] As the initial step S16001, parameters are parsed from the bitstream. Figure 37 This indicates the resolvable location of the above parameters in the compressed image bitstream.

[0697] Next, in step S16002, it is determined whether the parsed parameter is equal to the specified value.

[0698] If the parsed parameters are equal to the specified values ​​(yes in S16002), in step S16003, the block is divided into a first number of sub-blocks. Here, if the block division is in a vertical or horizontal direction, the first number is greater than 2; if the block division is not in a vertical or horizontal direction, the first number is greater than 3. If the parsed parameters are not equal to the specified values ​​(no in S16002), in step S16004, the block is divided into a second number of sub-blocks that is not equal to the first number. Here, if the block division is in a vertical or horizontal direction, the second number is greater than 2; if the block division is not in a vertical or horizontal direction, the second number is greater than 3.

[0699] For example, for a 32×32 block, such as Figure 48A As shown in (a1), the parsed parameters can indicate whether the partition is a quadtree partition or whether the partition only includes vertical segments. In this case, the 32×32 block is partitioned into four 8×32 sub-blocks.

[0700] As another example, for a 32×32 block, such as Figure 48A As shown in (a2), the parsed parameters can indicate that the partition is a ternary tree partition, the partition is a vertical partition, and the ratio of the block widths of the sub-blocks is 1:2:1. In this case, the 32×32 block is partitioned into 8×32 sub-blocks, 16×32 sub-blocks, and 8×32 sub-blocks.

[0701] For example, for a 32×32 block, such as Figure 48B As shown in (b1), the parsed parameters can indicate whether the partition is a quadtree partition or whether the partition only contains horizontal elements. In this case, the 32×32 block is partitioned into four 32×8 sub-blocks.

[0702] As another example, for a 32×32 block, such as Figure 48B As shown in (b2), the parsed parameters can indicate that the partition is a ternary tree partition, the partition is a horizontal partition, and the ratio of the block height of the sub-blocks is 1:2:1. In this case, the 32×32 block is partitioned into 32×8 sub-blocks, 32×16 sub-blocks, and 32×8 sub-blocks.

[0703] For example, for a 32×32 block, such as Figure 48C As shown in (c1), the parsed parameters can indicate whether the partition is a quadtree partition and whether the partition includes 16 x 16 directions. In this case, the 32×32 block is partitioned into 4 16×16 sub-blocks.

[0704] As another example, for a 32×32 block, such as Figure 48CAs shown in (c2), the parsed parameters indicate that the partition is a multi-way tree partition, the partition includes both horizontal and vertical directions, and the number of sub-blocks is 16. In this case, the 32×32 block is divided into 16 8×8 sub-blocks.

[0705] In step S16005, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0706] [Decoding device]

[0707] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0708] (Implementation Method 10)

[0709] [summary]

[0710] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing partition candidate selection parameters into a bit stream; using the written partition candidate selection parameters, selecting a small set of block segmentation information from a predetermined large set of block segmentation information; writing partition selection parameters into a bit stream; using the written partition selection parameters, determining block segmentation information only from the selected small set of block segmentation information; if the determined block segmentation information is used, the block is segmented into multiple sub-blocks of a geometric set; if other block segmentation information is used, the block is segmented into multiple sub-blocks of other geometric sets; using the determined block segmentation information, the block is segmented into multiple sub-blocks, and the sub-blocks are encoded through encoding processing including transformation processing and / or prediction processing.

[0711] Therefore, two parameters can be used to select block segmentation information in stages from a given set of block segmentation information. Thus, by appropriately classifying the small sets of block segmentation information, effective selection can be achieved. As a result, the amount of code related to block segmentation information can be reduced, improving compression efficiency.

[0712] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0713] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0714] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: parsing partition candidate selection parameters from a bitstream; using the parsed partition candidate selection parameters, selecting a small set of block segmentation information from a large set of predetermined block segmentation information; parsing partition selection parameters from a bitstream; using the parsed partition selection parameters, determining block segmentation information only from the selected small set of block segmentation information; if the determined block segmentation information is used, the block is segmented into multiple sub-blocks of a geometric set; if other block segmentation information is used, the block is segmented into multiple sub-blocks of other geometric sets; using the determined block segmentation information, the block is segmented into multiple sub-blocks; and the sub-blocks are decoded by decoding processing including inverse transform processing and / or prediction processing.

[0715] Therefore, two parameters can be used to select block segmentation information in stages from a given set of block segmentation information. Thus, by appropriately classifying the small sets of block segmentation information, effective selection can be achieved. As a result, the amount of code related to block segmentation information can be reduced, improving compression efficiency.

[0716] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0717] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0718] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0719] The following describes methods for encoding and decoding images, such as... Figure 27 and Figure 28 The following descriptions will be provided according to the implementation method.

[0720] [Encoding Processing]

[0721] Figure 27 This illustrates an example of image encoding processing related to Implementation 10.

[0722] As the initial step S17001, the partition candidate selection parameters are written into the bit stream. Figure 37 This indicates the writable location of the partition candidate selection parameters in the compressed image bitstream.

[0723] Next, in step S17002, the written partition candidate selection parameters are used to select a small set of block partition information from the large set of specified block partition information.

[0724] The partition candidate selection parameters written may include, for example, an index used to select a block partition information set from two or more block partition information sets.

[0725] Block segmentation information can be categorized into different groups (sets) based on the segmentation method used (vertical segmentation, horizontal segmentation, quadtree segmentation, etc.). For example, ... Figure 49A As shown, there are three block partitioning information groups: vertical partitioning group (set 1), horizontal partitioning group (set 2), and quadtree partitioning group (set 3). The vertical partitioning group corresponds only to vertical partitions, the horizontal partitioning group corresponds only to horizontal partitions, and the quadtree partitioning group corresponds only to quadtree partitions. 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.

[0726] The block segmentation information of coded blocks can also be classified into different block segmentation information groups according to each image position. For example, the block segmentation information of the top left block, top block, and top right block can be classified into the top block segmentation group (Set 1). The block segmentation information of the bottom left block and left block can be classified into the left block segmentation group (Set 2). The block segmentation information of the block at the same position and the motion compensation reference block can be classified into the temporal block segmentation group (Set 3). If the index value is 0, the top block segmentation group is selected. If the index value is 1, the left block segmentation group is selected. If the index value is 2, the temporal block segmentation group is selected.

[0727] As another example, the partition candidate selection parameters written are as follows: Figure 49B As shown, it may include parameters / indexes used to select more than one block segmentation information from the block segmentation information set.

[0728] Block partitioning information can also be a set of parameters indicating whether the block is partitioned horizontally or vertically. Block partitioning information can also be a set of parameters containing the specified block width and height for all sub-blocks within the block. Furthermore, block partitioning information can also be a set of parameters containing an index used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0729] In step S17003, the partition selection parameters are written into the bit stream. Figure 37 This indicates the writable location of the partition selection parameters in the compressed image bitstream.

[0730] Next, in step S17004, using the written partition selection parameters, block segmentation information is determined only from the set of selected block segmentation information. Here, if the determined block segmentation information is used, the block is divided into multiple sub-blocks of a geometry set, while if other block segmentation information is used, the block is divided into multiple sub-blocks of other geometry sets.

[0731] The partition selection parameters written may include, for example, an index used to select one block partition from the small set of selected block partition information.

[0732] For example, such as Figure 49A As shown, in step S17002, a vertical segmentation group (set 1) is selected as the small set of block segmentation information. Within the vertical segmentation group, there are three different block partition structures corresponding to three different block segmentation information pieces. If the index value is 0, the first block partition structure of the vertical segmentation group is determined. If the index value is 1, the second block partition structure of the vertical segmentation group is determined. If the index value is 2, the third block partition structure of the vertical segmentation group is determined.

[0733] In another example, the block partitioning information of the top-left block, the top block, and the top-right block is categorized into the top block partitioning group selected in step S17002, which is a small set of block partitioning information. If the index value is 0, the block partitioning structure of the top-left block is determined. If the index value is 1, the block partitioning structure of the top block is determined. If the index value is 2, the block partitioning structure of the top-right block is determined.

[0734] As another example, the partition selection parameters written may include multiple split / merge flags for deriving block split information based on the initial block split information.

[0735] Next, in step S17005, the block is divided into multiple sub-blocks using the determined block segmentation information.

[0736] In step S17006, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, each block being the same size as the sub-block.

[0737] [Encoding device]

[0738] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0739] [Decoding Processing]

[0740] Figure 28 This illustrates an example of image decoding processing related to Implementation 10.

[0741] As the initial step S18001, the partition candidate selection parameters are parsed from the bitstream. Figure 37 This indicates the resolvable location of the partition candidate selection parameters in the compressed image bitstream.

[0742] Next, in step S18002, the parsed partition candidate selection parameters are used to select a small set of block partition information from the large set of specified block partition information.

[0743] The parsed partition candidate selection parameters may include, for example, an index used to select a block partition information set from two or more block partition information sets.

[0744] Block segmentation information can be categorized into different groups (sets) based on the segmentation method used (vertical segmentation, horizontal segmentation, quadtree segmentation, etc.). For example, ... Figure 49A As shown, there are three block partitioning information groups: vertical partitioning group (set 1), horizontal partitioning group (set 2), and quadtree partitioning group (set 3). The vertical partitioning group corresponds only to vertical partitions, the horizontal partitioning group corresponds only to horizontal partitions, and the quadtree partitioning group corresponds only to quadtree partitions. 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.

[0745] The block segmentation information of decoded blocks can also be categorized into different block segmentation information groups based on each image location. For example, the block segmentation information of the top-left, top, and top-right blocks can be categorized into the top block segmentation group (Set 1). The block segmentation information of the bottom-left and left blocks can be categorized into the left block segmentation group (Set 2). The block segmentation information of blocks at the same location and motion compensation reference blocks can be categorized into the temporal block segmentation group (Set 3). If the index value is 0, the top block segmentation group is selected. If the index value is 1, the left block segmentation group is selected. If the index value is 2, the temporal block segmentation group is selected.

[0746] As another example, the parsed partition candidate selection parameters are as follows: Figure 49B As shown, it may include parameters / indexes used to select more than one block segmentation information from the block segmentation information set.

[0747] Block partitioning information can also be a set of parameters indicating whether the block is partitioned horizontally or vertically. Block partitioning information can also be a set of parameters containing the specified block width and height for all sub-blocks within the block. Furthermore, block partitioning information can also be a set of parameters containing an index used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0748] In step S18003, the partition selection parameters are parsed from the bit stream. Figure 37 This indicates the resolvable location of the partition selection parameter in the compressed image bitstream.

[0749] Next, in step S18004, using the parsed partition selection parameters, block segmentation information is determined only from the small set of selected block segmentation information. Here, if the determined block segmentation information is used, the block is divided into multiple sub-blocks of the geometry set, while if other block segmentation information is used, the block is divided into multiple sub-blocks of other geometry sets.

[0750] The parsed partition selection parameters may include, for example, an index used to select one block partition from the small set of selected block partition information.

[0751] For example, such as Figure 49A As shown, in step S18002, a vertical segmentation group (set 1) is selected as the small set of block segmentation information. Within the vertical segmentation group, there are three different block partition structures corresponding to three different block segmentation information pieces. If the index value is 0, the first block partition structure of the vertical segmentation group is determined. If the index value is 1, the second block partition structure of the vertical segmentation group is determined. If the index value is 2, the third block partition structure of the vertical segmentation group is determined.

[0752] In another example, the block partitioning information of the top-left block, the top block, and the top-right block is categorized into the top block partitioning group selected in step S18002 as a small set of block partitioning information. If the index value is 0, the block partitioning structure of the top-left block is determined. If the index value is 1, the block partitioning structure of the top block is determined. If the index value is 2, the block partitioning structure of the top-right block is determined.

[0753] As another example, the parsed partition selection parameters may include multiple split / merge flags used to derive block partition information based on the initial block partition information.

[0754] Next, in step S18005, the block is divided into multiple sub-blocks using the determined block segmentation information.

[0755] In step S18006, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0756] [Decoding device]

[0757] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0758] (Implementation Method 11)

[0759] [summary]

[0760] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing parameters into a bit stream; reading block information from one or more encoded blocks; using the read block information, selecting a small set of block segmentation information from a predetermined large set of block segmentation information; using the written parameters, determining block segmentation information only from the selected small set of block segmentation information; if the determined block segmentation information is used, the block is segmented into multiple sub-blocks of a geometric set; if other block segmentation information is used, the block is segmented into multiple sub-blocks of other geometric sets; using the determined block segmentation information, the current block is segmented into multiple sub-blocks, and the sub-blocks are encoded through an encoding process including transformation processing and / or prediction processing.

[0761] Therefore, by using the block information of the encoded blocks, the selectable block segmentation information can be reduced from the specified block segmentation information, thus reducing the amount of code used to select the block segmentation information. As a result, compression efficiency can be improved.

[0762] For example, in the encoding device of this embodiment, the geometric figure may at least represent the shape, height or width of the block.

[0763] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0764] For example, in the encoding apparatus of this embodiment, the current block and the one or more encoded blocks are different blocks from each other, and at least one of the one or more encoded blocks may be included in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0765] Therefore, it is possible to read block information from one or more distinct encoded blocks and select a smaller set of more appropriate block segmentation information. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0766] For example, in the encoding apparatus of this embodiment, the block information read out may include at least one of the following: block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0767] Therefore, information that is more suitable for selecting a small set of block segmentation information can be used as block information.

[0768] The decoding apparatus of this embodiment is a decoding apparatus for decoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: parsing parameters from a bitstream; reading block information from one or more decoded blocks; using the read block information, selecting a small set of block segmentation information from a predetermined large set of block segmentation information; using the parsed parameters, determining block segmentation information only from the selected small set of block segmentation information; if the determined block segmentation information is used, the block is segmented into multiple sub-blocks of a geometric set; if other block segmentation information is used, the block is segmented into multiple sub-blocks of other geometric sets; using the determined block segmentation information, the current block is segmented into multiple sub-blocks; and the sub-blocks are decoded by a decoding process including inverse transform processing and / or prediction processing.

[0769] Therefore, by using the block information of the decoded blocks, the selectable block segmentation information can be reduced from the specified block segmentation information, thus reducing the amount of code used to select the block segmentation information. As a result, compression efficiency can be improved.

[0770] For example, in the decoding apparatus of this embodiment, the geometry may at least represent the shape, height, or width of the block.

[0771] Therefore, the shape and / or size of the block can be used as a geometric figure.

[0772] For example, in the decoding apparatus of this embodiment, the current block and the more than one decoded block are different blocks from each other, and at least one of the more than one decoded block may be included in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0773] Therefore, it is possible to read block information from more than one mutually different decoded blocks, and to select a smaller set of more appropriate block segmentation information. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0774] For example, in the decoding apparatus of this embodiment, the block information read may include at least one of the following: information related to block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0775] Therefore, information that is more suitable for selecting a small set of block segmentation information can be used as block information.

[0776] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0777] Regarding methods for encoding and decoding images, such as... Figure 29 and Figure 30 The following descriptions will be provided according to the implementation method.

[0778] [Encoding Processing]

[0779] Figure 29 This illustrates an example of image encoding processing related to Implementation 11.

[0780] As the initial step S19001, the parameters are written into the bit stream. Figure 37 Indicates the writable location of parameters in the compressed image bitstream.

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

[0782] In step S19003, the read block information is used to select a small set of block segmentation information from the large set of specified block segmentation information.

[0783] For example, using the read block information, firstly, predicted block partitioning information can be derived. Next, from the large set of prescribed block partitioning information, block partitioning information with a block partitioning structure similar to the predicted block partitioning information is selected and added to the smaller set of block partitioning information. In the selection of this block partitioning information, for example, if the predicted block partitioning information indicates the use of only vertical partitioning, then a block partitioning structure using only vertical partitioning is selected. Figure 49A The first set). In the selection of these block partitioning information, for example, if the predicted block partitioning information indicates that only lateral partitioning is used, then the block partitioning construction with only lateral partitioning is selected ( Figure 49A (Set 2). As another example, in the selection of these block segmentation information, such as Figure 50 As shown, a block partitioning construction with the same or similar geometry as the block partitioning construction corresponding to the predicted block segmentation information is selected.

[0784] Block partitioning information can also be a set of parameters indicating whether the block is partitioned horizontally or vertically. Alternatively, it can be a set of parameters specifying the block width and height for all sub-blocks within the block. It can also be a set of parameters containing an index used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0785] As a predictive block partition construction for the current block, the block partition construction of the already encoded block can be used as is.

[0786] It is also possible to construct a combination of block partitions of two or more coded blocks (e.g., such as...). Figure 39 In this way, the upper half uses the block partitioning construction of the previous block, and the remaining half uses the block partitioning construction of the left block, deriving a new block partitioning construction as the prediction block partitioning construction of the current block. As an example of a method for selecting coded blocks, one approach is to select coded blocks with the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more coded blocks that have been coded using inter-frame prediction are selected.

[0787] The block partitioning construction of an already encoded block can also be modified (e.g., such as...). Figure 40 As shown, using a shallower block partitioning construction, a new block partitioning construction is derived as the predicted block partitioning construction for the current block.

[0788] Predicted block segmentation information can also vary depending on the intra-prediction direction information of the coded blocks. For example, to predict whether to segment the current block vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, then for the current block, block segmentation information including vertical segmentation can be predicted. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, then for the current block, block segmentation information including horizontal segmentation can be predicted.

[0789] Block partitioning information can also be predicted according to the intra / inter-frame prediction mode of the coded block. For example, if the prediction mode of the coded block is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block size can be predicted. Furthermore, if the prediction mode of the coded block is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block size can be predicted.

[0790] Block segmentation information can also be predicted based on the motion vectors of already encoded blocks. For example, if the difference between the motion vector of an already encoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes can be predicted. On the other hand, if the difference between the motion vector of an already encoded block and the motion vector of the current block is less than a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes can be predicted.

[0791] Block segmentation information can also be predicted based on the quantization parameters of the encoded block. For example, if the value of the quantization parameter of the encoded block is smaller than a specified value, specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes can be predicted. Furthermore, if the value of the quantization parameter of the encoded block is greater than a specified value, other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes can be predicted.

[0792] Block segmentation information can also be predicted based on reference image information of already encoded blocks. For example, when the reference image of an already encoded block is temporally close to the current image, or when multiple reference images of multiple already encoded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be predicted. When the reference image of an already encoded block is not temporally close to the current image, or when multiple reference images of multiple already encoded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be predicted.

[0793] Block segmentation information can also be predicted based on the segmentation depth of the encoded block. For example, if the segmentation depth of the encoded block is greater than a specified value (e.g., 4), specified block segmentation information that will divide the block into multiple sub-blocks of smaller block sizes can be predicted. If the segmentation depth of the encoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), other specified block segmentation information that will divide the block into multiple sub-blocks of larger block sizes can be predicted.

[0794] Block segmentation information can also be predicted based on the segmentation information of coded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be predicted based on coded blocks in coded frames different from the current frame (e.g., collocated blocks, last encoded blocks, or coded blocks determined by motion vectors).

[0795] The block segmentation information of coded blocks can also be classified into different block segmentation information groups according to each image position. For example, the block segmentation information of the top left block, top block, and top right block can be classified into the top block segmentation group (Set 1). The block segmentation information of the bottom left block and left block can be classified into the left block segmentation group (Set 2). The block segmentation information of the block at the same position and the motion compensation reference block can be classified into the temporal block segmentation group (Set 3). If the index value is 0, the top block segmentation group is selected. If the index value is 1, the left block segmentation group is selected. If the index value is 2, the temporal block segmentation group is selected.

[0796] Next, in step S19004, using the written parameters, block segmentation information is determined only from the small set of selected block segmentation information. Here, if the determined block segmentation information is used, the block is divided into multiple sub-blocks of a geometry set; if other block segmentation information is used, the block is divided into multiple sub-blocks of other geometry sets. The written parameters may, for example, include an index used to select one block segmentation information from the small set of selected block segmentation information.

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

[0798] As another example, the parameters written can include multiple split / merge flags used to derive block split information based on the initial block split information.

[0799] Next, in step S19005, the block is divided into multiple sub-blocks using the determined block segmentation information.

[0800] In step S19006, the sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, each block being the same size as the sub-block.

[0801] [Encoding device]

[0802] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0803] [Decoding Processing]

[0804] Figure 30 This illustrates an example of image decoding processing related to Implementation 11.

[0805] As the initial step S20001, parameters are parsed from the bitstream. Figure 37 This indicates the resolvable location of parameters in the compressed image bitstream.

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

[0807] In step S20003, the read block information is used to select a small set of block segmentation information from the large set of specified block segmentation information.

[0808] For example, using the read block information, firstly, predicted block partitioning information can be derived. Next, from the large set of prescribed block partitioning information, block partitioning information with a block partitioning structure similar to the predicted block partitioning information is selected and added to the smaller set of block partitioning information. In the selection of this block partitioning information, for example, if the predicted block partitioning information indicates the use of only vertical partitioning, then a block partitioning structure using only vertical partitioning is selected. Figure 49A The first set). In the selection of these block partitioning information, for example, if the predicted block partitioning information indicates that only lateral partitioning is used, then the block partitioning construction with only lateral partitioning is selected ( Figure 49A The second set). As another example, in the selection of these block segmentation information, Figure 50 As shown, a block partitioning construction with the same or similar geometry as the block partitioning construction corresponding to the predicted block segmentation information is selected.

[0809] Block partitioning information can also be a set of parameters indicating whether the block is partitioned horizontally or vertically. Alternatively, it can be a set of parameters specifying the block width and height for all sub-blocks within the block. It can also be a set of parameters containing an index used to select one partitioning candidate from a specified list of block partitioning candidates. In this case, the block partitioning is constructed as follows: Figure 38 As shown, it visually indicates the geometry of all sub-blocks within the block.

[0810] As a predicted block partition construction for the current block, it can use the block partition construction of the decoded block as is.

[0811] It is also possible to construct a combination of block partitions from two or more decoded blocks (e.g., such as...). Figure 39In this way, the upper half uses the block partitioning construction of the previous block, and the remaining half uses the block partitioning construction of the left block, deriving a new block partitioning construction as the prediction block partitioning construction of the current block. As an example of a method for selecting decoded blocks, one approach is to select decoded blocks with the same intra / inter-frame prediction mode as the current block. Specifically, if the current block is an inter-frame prediction block, then one or more decoded blocks that have been decoded using inter-frame prediction are selected.

[0812] It is also possible to modify the block partitioning structure of a decoded block (e.g., ... Figure 40 As shown, using a shallower block partitioning construction, a new block partitioning construction is derived as the predicted block partitioning construction for the current block.

[0813] Predicted block segmentation information can also vary depending on the intra-prediction direction information of the decoded blocks. For example, to predict whether to segment the current block vertically or horizontally into smaller blocks, information from the intra-prediction direction at specific neighboring block locations can be used. For instance, if the intra-prediction direction information of the upper neighboring block is determined to be vertical or close to vertical, then for the current block, block segmentation information including vertical segmentation can be predicted. Similarly, if the intra-prediction direction information of the left neighboring block is determined to be horizontal or close to horizontal, then for the current block, block segmentation information including horizontal segmentation can be predicted.

[0814] Block partitioning information can also be predicted according to the intra / inter-frame prediction mode of the decoded block. For example, if the prediction mode of the decoded block is intra-frame prediction mode, predefined block partitioning information that divides the block into multiple sub-blocks of relatively small block size can be predicted. Furthermore, if the prediction mode of the decoded block is inter-frame prediction mode, other predefined block partitioning information that divides the block into multiple sub-blocks of relatively large block size can be predicted.

[0815] Block segmentation information can also be predicted based on the motion vectors of decoded blocks. For example, if the difference between the motion vector of a decoded block and the motion vector of the current block is greater than a predetermined threshold, predetermined block segmentation information that divides the block into multiple sub-blocks of relatively small block sizes can be predicted. On the other hand, if the difference between the motion vector of a decoded block and the motion vector of the current block is less than a predetermined threshold, other predetermined block segmentation information that divides the block into multiple sub-blocks of relatively large block sizes can be predicted.

[0816] Block segmentation information can also be predicted based on the quantization parameters of the decoded block. For example, if the value of the quantization parameter of the decoded block is smaller than a specified value, specified block segmentation information that divides the block into multiple sub-blocks of smaller block sizes can be predicted. Furthermore, if the value of the quantization parameter of the decoded block is greater than or equal to a specified value, other specified block segmentation information that divides the block into multiple sub-blocks of larger block sizes can be predicted.

[0817] Block segmentation information can also be predicted based on reference image information of decoded blocks. For example, if the reference image of a decoded block is temporally close to the current image, or if multiple reference images of multiple decoded blocks are similar to each other, predefined block segmentation information that divides the block into multiple sub-blocks of relatively large block size can be predicted. If the reference image of a decoded block is not temporally close to the current image, or if multiple reference images of multiple decoded blocks are not similar to each other, other predefined block segmentation information that divides the block into multiple sub-blocks of relatively small block size can be predicted.

[0818] Block segmentation information can also be predicted based on the segmentation depth of the decoded block. For example, if the segmentation depth of the decoded block is greater than a specified value (e.g., 4), specified block segmentation information that will divide the block into multiple sub-blocks of smaller block sizes can be predicted. If the segmentation depth of the decoded block is less than the specified value (e.g., when the segmentation depth is equal to 2), other specified block segmentation information that will divide the block into multiple sub-blocks of larger block sizes can be predicted.

[0819] Block segmentation information can also be predicted based on the segmentation information of decoded blocks in frames different from the current frame. For example, the block segmentation information (including separation information) or the separation information of the current block can be predicted based on decoded blocks in decoded frames different from the current frame (e.g., collocated blocks, last decoded blocks, or decoded blocks determined by motion vectors, etc.).

[0820] The block segmentation information of decoded blocks can also be categorized into different block segmentation information groups based on each image location. For example, the block segmentation information of the top-left, top, and top-right blocks can be categorized into the top block segmentation group (Set 1). The block segmentation information of the bottom-left and left blocks can be categorized into the left block segmentation group (Set 2). The block segmentation information of blocks at the same location and motion compensation reference blocks can be categorized into the temporal block segmentation group (Set 3). If the index value is 0, the top block segmentation group is selected. If the index value is 1, the left block segmentation group is selected. If the index value is 2, the temporal block segmentation group is selected.

[0821] Next, in step S20004, using the parsed parameters, block segmentation information is determined only from the small set of selected block segmentation information. Here, if the determined block segmentation information is used, the block is segmented into multiple sub-blocks of the geometry set, while if other block segmentation information is used, the block is segmented into multiple sub-blocks of other geometry sets.

[0822] The parsed partition selection parameters may include, for example, an index used to select one block partition from the small set of selected block partition information.

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

[0824] As another example, the parsed partition selection parameters may include multiple split / merge flags used to derive block partition information based on the initial block partition information.

[0825] Next, in step S20005, the block is divided into multiple sub-blocks using the determined block segmentation information.

[0826] In step S20006, the sub-block is decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a per-block basis, each block being the same size as the sub-block.

[0827] [Decoding device]

[0828] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0829] (Implementation Method 12)

[0830] [summary]

[0831] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: writing list correction parameters to a bitstream; using the written list correction parameters, correcting a specified block segmentation information list to a corrected block segmentation information list; writing partition selection parameters to a bitstream; using the written partition selection parameters, selecting block segmentation information that divides the block into multiple sub-blocks only from the corrected block segmentation information list; using the selected block segmentation information, dividing the block into multiple sub-blocks; and encoding the sub-blocks contained in the multiple sub-blocks through an encoding process including transformation processing and / or prediction processing.

[0832] Therefore, the list correction parameters within the bitstream can be used to correct the specified block segmentation information list. Consequently, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0833] For example, in the encoding apparatus of this embodiment, during the correction of the specified block segmentation information list, the specified block segmentation information list is rearranged to generate corrected block segmentation information, and for the partition selection parameter, the block segmentation information with an earlier list order is encoded with fewer bits than the block segmentation information with a later list order.

[0834] Therefore, the list of specified block segmentation information can be rearranged using list correction parameters within the bitstream. Consequently, block segmentation information with a high probability of being selected can be placed at the top of the list, reducing the amount of code related to block segmentation information.

[0835] For example, in the encoding apparatus of this embodiment, additional block segmentation information may be inserted into the specified block segmentation information list during the modification of the block segmentation information list to generate a longer block segmentation information list.

[0836] Therefore, by using list correction parameters within the bitstream, additional block segmentation information can be inserted into the specified block segmentation information list. Consequently, it is easy to append suitable block segmentation information to the list, thereby improving compression efficiency.

[0837] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: parsing a list correction parameter from a bitstream; using the parsed list correction parameter, correcting a specified block segmentation information list into a corrected block segmentation information list; parsing a partition selection parameter from the bitstream; using the parsed partition selection parameter, selecting block segmentation information that divides the block into multiple sub-blocks only from the corrected block segmentation information list; using the selected block segmentation information, dividing the block into multiple sub-blocks; and decoding the sub-blocks contained in the multiple sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0838] Therefore, the list correction parameters within the bitstream can be used to correct the specified block segmentation information list. Consequently, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0839] For example, in the decoding apparatus of this embodiment, during the correction of the specified block segmentation information list, the specified block segmentation information list is rearranged to generate corrected block segmentation information, and for the partition selection parameter, the block segmentation information with an earlier list order is encoded with fewer bits than the block segmentation information with a later list order.

[0840] Therefore, the list of specified block segmentation information can be rearranged using list correction parameters within the bitstream. Consequently, block segmentation information with a high probability of being selected can be placed at the top of the list, reducing the amount of code related to block segmentation information.

[0841] For example, in the decoding apparatus of this embodiment, additional block segmentation information may be inserted into the specified block segmentation information list during the modification of the block segmentation information list to generate a longer block segmentation information list.

[0842] Therefore, by using list correction parameters within the bitstream, additional block segmentation information can be inserted into the specified block segmentation information list. Consequently, it is easy to append suitable block segmentation information to the list, thereby improving compression efficiency.

[0843] Furthermore, these inclusive or specific forms can also be implemented by systems, methods, integrated circuits, computer programs, or computer-readable recording media such as CD-ROMs, or by any combination of systems, methods, integrated circuits, computer programs, and recording media.

[0844] The following describes methods for encoding and decoding images, such as... Figure 31 and Figure 32 The following descriptions will be provided according to the implementation method.

[0845] [Encoding Processing]

[0846] Figure 31 This illustrates an example of image encoding processing related to Implementation 12.

[0847] As the initial step S21001, the list correction parameters are written to the bit stream. Figure 37 Indicates the writable location of parameters in the compressed image bitstream.

[0848] Next, in step S21002, the specified block partition information list is corrected into a corrected block partition information list using the written list correction parameters. This correction could, for example, be a process of rearranging the specified block partition information list to generate the corrected block partition information list. Here, compared to block partition information with a later list order, the partition selection parameters are encoded with fewer bits for block partition information with a earlier list order. By rearranging, such as... Figure 51 As shown, the list of selected block segmentation information is ordered earlier, and the number of encoded bits for the partition selection parameters is reduced.

[0849] To rearrange the list, for example, the list can be categorized into different groups of block partition information (e.g., vertical partition groups, horizontal partition groups, quadtree partition groups, and full partition groups that include all block partition information). By rearranging these groups of block partition information, such as... Figure 52 The list is rearranged as shown. In this example, the list correction parameters can include parameters indicating the order of the block segmentation groups in the corrected block segmentation information list.

[0850] By utilizing the geometry of the current block, the block segmentation information for each group can be implicitly restricted. For example, it can be made possible that only segments where the block width and block height are powers of 2 can be used. In the case of such block segmentation information, segments in that group where the width or height of the sub-blocks is not a power of 2 are not used.

[0851] As another example, the correction could also be achieved by creating a longer block partition information list by inserting additional block partition information into the existing list. If the block partition information with the highest probability of use is inserted at the beginning of the list, fewer bits are used to encode the partition selection parameters. Here, the partition selection parameters are encoded with fewer bits for earlier block partition information compared to later block partition information in the list.

[0852] As another example, the correction can also be achieved by creating a shorter block partition information list by deleting block partition information from the specified block partition information list. If a block partition information with a lower utilization probability that is earlier in the list than the block partition information with the highest utilization probability is deleted, the number of encoding bits for the partition selection parameters becomes less. Here, the partition selection parameters are encoded with fewer bits for block partition information with a later list order compared to block partition information with a later list order.

[0853] You can also combine rearrangement, insertion, and deletion processes (rearrange and insert, or rearrange and delete, or insert and delete, or rearrange, insert, and delete, etc.).

[0854] By utilizing the geometry of the current block, the block segmentation information in the block segmentation information list can be implicitly restricted. For example, it can be made possible that only segments whose block width and height are powers of 2 can be used. In the case of such block segmentation information, segments whose width or height of sub-blocks is not powers of 2 are not used in this list.

[0855] The list correction parameter can also indicate that no correction is needed. If no correction is needed, step S21002 can be omitted. Therefore, the corrected block segmentation information list is the same as the specified block segmentation information list before proceeding to step S21003.

[0856] In step S21003, the partition selection parameters are written into the bit stream. Figure 37 Indicates the writable location of parameters in the compressed image bitstream.

[0857] Next, in step S21004, using the written partition selection parameters, block partition information is selected only from the revised block partition information list. Here, the selected block partition information is used to divide the block into multiple sub-blocks. The written partition selection parameters may, for example, include an index used to select one block partition from the specified block partition information list. As another example, the written partition selection parameters may include multiple split / merge flags used to derive the block partition information based on the initial block partition information.

[0858] The encoded bits of the partition selection parameters and their meanings vary depending on the selected block partitioning information. For example, if only horizontal partitioning occurs based on the selected block partitioning information, it is not necessary to indicate whether the partitioning is horizontal or vertical; rather, the information such as block partitioning itself implies that... Figure 53 The block is divided horizontally as shown. On the other hand, if only vertical division occurs based on the selected block division information, it is not necessary to indicate whether the division is horizontal or vertical; simply using information such as block division implies that the block is divided vertically.

[0859] In step S21005, the block is divided into multiple sub-blocks using the selected block partitioning information. The selected block partitioning information can be, for example, the final block partitioning information used to partition the block into sub-blocks. Alternatively, the selected block partitioning information can be predicted block partitioning information or initial block partitioning information. Based on the predicted block partitioning information or the initial block partitioning information, the final block partitioning information used to partition the block into sub-blocks is derived.

[0860] In step S21006, the sub-blocks contained in the multiple sub-blocks are encoded through an encoding process. This encoding process includes a transformation process and / or a prediction process. The transformation process can be performed on a per-block basis, with each block having the same size as the sub-block.

[0861] [Encoding device]

[0862] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 35 It is the same, so the illustration and explanation are omitted.

[0863] [Decoding Processing]

[0864] Figure 32 This illustrates an example of image decoding processing related to Implementation 12.

[0865] As the initial step S22001, the list correction parameters are parsed from the bitstream. Figure 37This indicates the resolvable location of parameters in the compressed image bitstream.

[0866] Next, in step S22002, the specified block partition information list is corrected into a corrected block partition information list using the parsed list correction parameters. This correction could, for example, be a process of rearranging the specified block partition information list to generate the corrected block partition information list. Here, compared to block partition information with a later list order, the partition selection parameters are decoded with fewer bits for block partition information with a earlier list order. By rearranging, such as... Figure 51 As shown, the order of the selected block segmentation information list becomes earlier, and the decoding bits of the partition selection parameter are reduced.

[0867] To rearrange the list, for example, the list can be categorized into different groups of block partition information (e.g., vertical partition groups, horizontal partition groups, quadtree partition groups, and full partition groups that include all block partition information). By rearranging these groups of block partition information, such as... Figure 52 The list is rearranged as shown. In this example, the list correction parameters can include parameters indicating the order of the block segmentation groups in the corrected block segmentation information list.

[0868] By utilizing the geometry of the current block, the block segmentation information for each group can be implicitly restricted. For example, it can be made possible that only segments where the block width and block height are powers of 2 can be used. In the case of such block segmentation information, segments in that group where the width or height of the sub-blocks is not a power of 2 are not used.

[0869] As another example, the correction could also be achieved by creating a longer block partition information list by inserting additional block partition information into the specified block partition information list. If the block partition information with the highest probability of being used is inserted at the beginning of the list, fewer bits are needed to decode the partition selection parameter. Here, compared to block partition information that appears later in the list, fewer bits are used to decode the partition selection parameter for block partition information that appears earlier in the list.

[0870] As another example, the correction can also be achieved by creating a shorter block segmentation list by deleting block segmentation information from the specified block segmentation information list. If a block segmentation information with lower utilization probability that is earlier than the most likely to be utilized is deleted, fewer bits are needed to decode the partition selection parameter. Here, compared to block segmentation information that is later in the list order, fewer bits are used to decode the partition selection parameter for block segmentation information that is earlier in the list order.

[0871] You can also combine rearrangement, insertion, and deletion processes (rearrange and insert, or rearrange and delete, or insert and delete, or rearrange, insert, and delete, etc.).

[0872] By utilizing the geometry of the current block, the block segmentation information in the block segmentation information list can be implicitly restricted. For example, it can be made possible that only segments whose block width and height are powers of 2 can be used. In the case of such block segmentation information, segments whose width or height of sub-blocks is not powers of 2 are not used in this list.

[0873] The list correction parameter can also indicate that no correction is needed. If no correction is needed, step S22002 can be omitted. Therefore, the corrected block segmentation information list is the same as the specified block segmentation information list before proceeding to step S22003.

[0874] In step S22003, the partition selection parameters are parsed from the bit stream. Figure 37 This indicates the resolvable location of parameters in the compressed image bitstream.

[0875] Next, in step S22004, using the parsed partition selection parameters, block partition information is selected only from the revised block partition information list. Here, the selected block partition information is used to divide the block into multiple sub-blocks. The parsed partition selection parameters may, for example, include an index used to select one block partition information from the specified block partition information list. As another example, the parsed partition selection parameters may include multiple split / merge flags used to derive the block partition information based on the initial block partition information.

[0876] The decoding bits of the partition selection parameters and their meanings vary depending on the selected block partitioning information. For example, if only horizontal partitioning occurs based on the selected block partitioning information, it is not necessary to indicate whether the partitioning is horizontal or vertical; rather, simply using information such as block partitioning implies that... Figure 53 The block is divided horizontally as shown. On the other hand, if only vertical division occurs based on the selected block division information, it is not necessary to indicate whether the division is horizontal or vertical; simply using information such as block division implies that the block is divided vertically.

[0877] In step S22005, the block is divided into multiple sub-blocks using the selected block partitioning information. The selected block partitioning information can be, for example, the final block partitioning information used to partition the block into sub-blocks. Alternatively, the selected block partitioning information can be predicted block partitioning information or initial block partitioning information. Based on the predicted block partitioning information or the initial block partitioning information, the final block partitioning information used to partition the block into sub-blocks is derived.

[0878] In step S22006, the sub-blocks contained in the multiple sub-blocks are decoded through a decoding process. This decoding process includes inverse transform processing and / or prediction processing. The inverse transform processing can be performed on a block-by-block basis, each block being the same size as the sub-block.

[0879] [Decoding device]

[0880] The structure of the image / image encoding device in this embodiment is the same as that in embodiment 2. Figure 36 It is the same, so the illustration and explanation are omitted.

[0881] (Implementation Method 13)

[0882] [summary]

[0883] The encoding apparatus of this embodiment is an encoding apparatus for encoding blocks of an image, comprising a processor and a memory connected to the processor; the processor uses the memory to perform the following processing: reading block information from one or more encoded blocks; using the read block information, correcting a predetermined block segmentation information list into a corrected block segmentation information list; writing partition selection parameters into a bitstream; using the written partition selection parameters, selecting block segmentation information that divides the block into multiple sub-blocks only from the corrected block segmentation information list; using the selected block segmentation information, dividing the current block into multiple sub-blocks; and encoding the sub-blocks contained in the multiple sub-blocks through an encoding process including transformation processing and / or prediction processing.

[0884] Therefore, the block information read from the encoded blocks can be used to modify the list of block segmentation information. Consequently, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0885] For example, in the encoding apparatus of this embodiment, during the correction of the specified block segmentation information list, the specified block segmentation information list is rearranged to generate corrected block segmentation information, and for the partition selection parameter, the block segmentation information with an earlier list order is encoded with fewer bits than the block segmentation information with a later list order.

[0886] Therefore, the list of specified block segmentation information can be rearranged using block information read from coded blocks. Consequently, block segmentation information with a higher probability of being selected can be placed at the top of the list, reducing the amount of code related to block segmentation information.

[0887] For example, in the encoding apparatus of this embodiment, additional block segmentation information may be inserted into the specified block segmentation information list during the modification of the block segmentation information list to generate a longer block segmentation information list.

[0888] Therefore, it is possible to use block information read from already encoded blocks to insert additional block segmentation information into a specified block segmentation information list. Consequently, suitable block segmentation information can be appended to the list, thereby improving compression efficiency.

[0889] For example, in the encoding apparatus of this embodiment, the current block and the one or more encoded blocks are different blocks from each other, and at least one of the one or more encoded blocks may be included in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0890] Therefore, block information can be read from one or more different encoded blocks, and the block segmentation information list can be more appropriately modified. As a result, compression efficiency can be improved.

[0891] For example, in the encoding apparatus of this embodiment, the block information read out may include at least one of the following: block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0892] Therefore, appropriate information can be used as block information, and the list of block segmentation information can be modified using more appropriate block information. As a result, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0893] The decoding apparatus of this embodiment is a decoding apparatus that decodes blocks of an image, and includes a processor and a memory connected to the processor. The processor uses the memory to perform the following processing: reading block information from one or more decoded blocks; using the read block information, correcting a predetermined block segmentation information list into a corrected block segmentation information list; parsing partition selection parameters from the bitstream; using the parsed partition selection parameters, selecting block segmentation information that divides the block into multiple sub-blocks only from the corrected block segmentation information list; using the selected block segmentation information, dividing the current block into multiple sub-blocks; and decoding the sub-blocks contained in the multiple sub-blocks through decoding processing including inverse transform processing and / or prediction processing.

[0894] Therefore, the block information read from the decoded blocks can be used to modify the specified block segmentation information list. Consequently, the amount of code related to block segmentation information can be reduced, thus improving compression efficiency.

[0895] For example, in the decoding apparatus of this embodiment, during the correction of the specified block segmentation information list, the specified block segmentation information list is rearranged to generate corrected block segmentation information, and for the partition selection parameter, the block segmentation information with an earlier list order is encoded with fewer bits than the block segmentation information with a later list order.

[0896] Therefore, the list of specified block segmentation information can be rearranged using block information read from decoded blocks. Consequently, block segmentation information with a higher probability of being selected can be placed at the top of the list, reducing the amount of code related to block segmentation information.

[0897] For example, in the decoding apparatus of this embodiment, additional block segmentation information may be inserted into the specified block segmentation information list during the modification of the block segmentation information list to generate a longer block segmentation information list.

[0898] Therefore, it is possible to use block information read from decoded blocks to insert additional block segmentation information into a specified block segmentation information list. Consequently, suitable block segmentation information can be appended to the list, thereby improving compression efficiency.

[0899] For example, in the decoding apparatus of this embodiment, the current block and the more than one decoded block are different blocks from each other, and at least one of the more than one decoded block may be included in a frame that is the same as the current block or in another frame that is different from the frame of the current block.

[0900] Therefore, block information can be read from more than one mutually different decoded blocks, and the block segmentation information list can be more appropriately modified. As a result, compression efficiency can be improved.

[0901] For example, in the decoding apparatus of this embodiment, the block information read may include at least one of the following: information related to block partitioning structure, intra-frame prediction mode or inter-frame prediction mode, intra-frame prediction direction, motion vector, reference image, quantization parameters, and segmentation depth.

[0902] Therefore, appropriate information can be used as block information, and more ap...

Claims

1. A bitstream transmitting apparatus, wherein the bitstream contains syntactic information, and a computer performs decoding processing based on the syntactic information. The aforementioned bitstream transmitting device includes: Circuits; and The memory is connected to the circuit described above. During operation, the above circuit With the specified number of sub-blocks of a block set to 4, the above block is divided into 4 sub-blocks, where, If the dimensions of the aforementioned block meet the block size requirements, the aforementioned block is divided into 4 sub-blocks along a single direction. This division includes: If the width of the block is greater than its height, and the block's dimensions are 32×8, then the block is vertically divided into four 8×8 sub-blocks; and If the height of the block is greater than its width, and the block's dimensions are 8×32, then the block is divided horizontally into four 8×8 sub-blocks. If the dimensions of the block do not meet the aforementioned block size requirements, the block is divided into four sub-blocks along the vertical and horizontal directions. This division includes: if the width of the block is equal to its height and the block size is 32×32, then the block is divided into four 16×16 sub-blocks along the vertical and horizontal directions. The aforementioned sub-blocks of the aforementioned block are encoded into the aforementioned bitstream. Send the encoded bit stream described above.

Citation Information

Patent Citations

  • Method and device for encoding or decoding three-dimensional or multi-view video by means of view synthesis prediction

    CN104284194A

  • Arithmetic decoding device, arithmetic coding device, image decoding device, and image coding device

    JP2013187869A