Encoding device, decoding device, and non-transitory storage medium

By limiting the number of processing times of context adaptive encoding in the video encoding device and using sub-block flag encoding and position parameter encoding processing, the problem of difficulty in simultaneously improving video encoding efficiency and circuit scale in the prior art is solved, and efficient video encoding and processing speed is improved.

CN119893108APending Publication Date: 2025-04-25PANASONIC INTELLECTUAL PROPERTY CORP OF AMERICA
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202510061745.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-04-24
Filing Date
2020-04-24
Publication Date
2025-04-25

AI Technical Summary

Technical Problem

When existing video encoding technologies process efficient video encoding, it is difficult to simultaneously improve encoding efficiency, picture quality, processing volume reduction, circuit scale reduction and processing speed, and there is a problem of mismatch in the block processing of orthogonal transformation and non-orthogonal transformation.

Method used

By limiting the number of processing times of context adaptive encoding in the encoding device, the image block is encoded, and sub-block flag encoding processing and position parameter encoding processing are adopted to ensure that the key information can be encoded through context adaptive encoding regardless of whether orthogonal transformation is applied.

Benefits of technology

The coding efficiency improvement, image quality improvement, processing volume and circuit scale reduction are achieved, and the processing speed is improved, and the components and actions in encoding and decoding are appropriately selected.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119893108A_ABST
    Figure CN119893108A_ABST
Patent Text Reader

Abstract

The invention relates to an encoding device, a decoding device, and a non-transitory storage medium. The encoding device includes a circuit that performs residual encoding of a current block, and a memory connected to the circuit.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a division of an invention patent application with an application date of April 24, 2020, application number 202080029708.3, and invention name “Encoding device, decoding device, encoding method and decoding method”. Technical Field

[0002] The present invention relates to video coding, for example, to systems, components, and methods for encoding and decoding moving images. Background Art

[0003] Video coding technology has advanced from H.261 and MPEG-1 to H.264 / AVC (Advanced Video Coding), MPEG-LA, H.265 / HEVC (High Efficiency Video Coding), and H.266 / VVC (Versatile Video Codec). Along with this progress, there is a constant need to provide improvements and optimizations in video coding technology in order to handle the ever-increasing amount of digital video data in various applications.

[0004] Furthermore, Non-Patent Document 1 relates to an example of existing standards related to the above-mentioned video encoding technology.

[0005] Prior art literature

[0006] Non-patent literature

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

[0008] Problems to be solved by the invention

[0009] Regarding the encoding method as described above, it is expected to propose a new method to improve the encoding efficiency, improve the image quality, reduce the processing amount, reduce the circuit scale, or appropriately select elements or actions such as filters, blocks, sizes, motion vectors, reference pictures or reference blocks.

[0010] The present invention provides a structure or method that can contribute to one or more of, for example, improvement of coding efficiency, improvement of image quality, reduction of processing volume, reduction of circuit scale, improvement of processing speed, and appropriate selection of elements or actions. In addition, the present invention may include a structure or method that can contribute to benefits other than the above.

[0011] Means for solving problems

[0012] For example, an encoding device according to one aspect of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit performs residual encoding of a current block.

[0013] The installation of several embodiments of the present invention can improve coding efficiency, simplify coding / decoding processing, speed up coding / decoding processing, and efficiently select appropriate components / actions used in coding and decoding such as appropriate filters, block sizes, motion vectors, reference pictures, reference blocks, etc.

[0014] According to the specification and the drawings, further advantages and effects in one form of the present invention are clarified. The advantages and / or effects are obtained respectively by several embodiments and the features described in the specification and the drawings, but in order to obtain one or more advantages and / or effects, it is not necessarily necessary to provide all of them.

[0015] Furthermore, these general or specific aspects may be implemented through systems, methods, integrated circuits, computer programs, recording media, or any combination thereof.

[0016] Effects of the Invention

[0017] The structure or method of one aspect of the present invention can contribute to one or more of the following, for example, improvement of coding efficiency, improvement of image quality, reduction of processing load, reduction of circuit scale, improvement of processing speed, and appropriate selection of elements or actions. In addition, the structure or method of one aspect of the present invention can also contribute to benefits other than the above. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] Figure 1 It is a block diagram showing the functional structure of the encoding device according to the embodiment.

[0019] Figure 2 This is a flowchart showing an example of the overall encoding process performed by the encoding device.

[0020] Figure 3 This is a conceptual diagram showing an example of block division.

[0021] Figure 4A This is a conceptual diagram showing an example of the structure of a slice.

[0022] Figure 4B This is a conceptual diagram showing an example of a tile structure.

[0023] Figure 5A This is a table showing transformation basis functions corresponding to various transformation types.

[0024] Figure 5BThis is a conceptual diagram showing an example of SVT (Spatially Varying Transform).

[0025] Fig. 6A This is a conceptual diagram showing an example of the shape of a filter used in an ALF (adaptive loop filter).

[0026] Figure 6B This is a conceptual diagram showing another example of the shape of the filter used in ALF.

[0027] Figure 6C This is a conceptual diagram showing another example of the shape of the filter used in ALF.

[0028] Figure 7 This is a block diagram showing an example of a detailed configuration of a loop filter unit that functions as a DBF (deblocking filter).

[0029] Figure 8 This is a conceptual diagram showing an example of a deblocking filter having a filter characteristic that is symmetric with respect to a block boundary.

[0030] Fig. 9 This is a conceptual diagram for explaining the block boundary on which the deblocking filtering process is performed.

[0031] Fig.10 This is a conceptual diagram showing an example of the Bs value.

[0032] Fig.11 This is a flowchart showing an example of processing performed by the prediction processing unit of the encoding device.

[0033] Fig.12 This is a flowchart showing another example of the processing performed by the prediction processing unit of the encoding device.

[0034] Fig.13 This is a flowchart showing another example of the processing performed by the prediction processing unit of the encoding device.

[0035] Fig.14 This is a conceptual diagram showing an example of 67 intra prediction modes in the intra prediction according to the embodiment.

[0036] Fig.15 This is a flowchart showing an example of the basic processing flow of inter-frame prediction.

[0037] Fig.16 This is a flowchart showing an example of motion vector derivation.

[0038] Fig.17 This is a flowchart showing another example of motion vector derivation.

[0039] Fig.18 This is a flowchart showing another example of motion vector derivation.

[0040] Fig.19 is a flowchart showing an example of inter-frame prediction based on the normal inter-frame mode.

[0041] Fig. 20 is a flowchart showing an example of inter-frame prediction based on merge mode.

[0042] Fig.21 This is a conceptual diagram for explaining an example of motion vector derivation processing based on the merge mode.

[0043] Fig. 22 This is a flowchart showing an example of FRUC (frame rate up conversion) processing.

[0044] Fig.23 This is a conceptual diagram for explaining an example of pattern matching (bidirectional matching) between two blocks along a motion trajectory.

[0045] Fig.24 This is a conceptual diagram for explaining an example of pattern matching (template matching) between a template in a current picture and a block in a reference picture.

[0046] Fig.25A This is a conceptual diagram for explaining an example of derivation of a motion vector in sub-block units based on motion vectors of a plurality of adjacent blocks.

[0047] Fig.25B This is a conceptual diagram for explaining an example of derivation of a motion vector in sub-block units in an affine mode having three control points.

[0048] Fig.26A This is a conceptual diagram for explaining the affine merge mode.

[0049] Fig.26B A conceptual diagram for explaining the affine merge mode with two control points.

[0050] Fig.26C This is a conceptual diagram for explaining the affine merge mode with three control points.

[0051] Fig. 27 This is a flowchart showing an example of processing in the affine merge mode.

[0052] Fig.28A This is a conceptual diagram for explaining the affine inter-frame mode having two control points.

[0053] Fig.28BThis is a conceptual diagram for explaining the affine inter-frame mode having three control points.

[0054] Fig.29 This is a flowchart showing an example of processing in the affine inter mode.

[0055] Fig. 30A It is a conceptual diagram used to illustrate the affine inter-frame mode in which the current block has 3 control points and the adjacent block has 2 control points.

[0056] Fig. 30B It is a conceptual diagram used to illustrate the affine inter-frame mode in which the current block has 2 control points and the adjacent block has 3 control points.

[0057] Fig.31A This is a flowchart showing the merge mode including DMVR (decoder motion vector refinement).

[0058] Fig.31B This is a conceptual diagram for explaining an example of DMVR processing.

[0059] Fig.32 This is a flowchart showing an example of generating a predicted image.

[0060] Fig.33 This is a flowchart showing another example of generating a predicted image.

[0061] Fig.34 This is a flowchart showing another example of generating a predicted image.

[0062] Fig.35 This is a flowchart for explaining an example of a predicted image correction process based on an OBMC (overlapped block motion compensation) process.

[0063] Fig.36 This is a conceptual diagram for explaining an example of predicted image correction processing based on OBMC processing.

[0064] Fig.37 This is a conceptual diagram for explaining the generation of predicted images of two triangles.

[0065] Fig.38 This is a conceptual diagram for explaining a model assuming uniform linear motion.

[0066] Fig.39 This is a conceptual diagram for explaining an example of a method of generating a predicted image using a brightness correction process based on a LIC (local illumination compensation) process.

[0067] Fig.40 This is a block diagram showing an installation example of an encoding device.

[0068] Fig.41 It is a block diagram showing the functional structure of a decoding device according to an embodiment.

[0069] Fig.42 This is a flowchart showing an example of the overall decoding process performed by the decoding device.

[0070] Fig.43 This is a flowchart showing an example of processing performed by the prediction processing unit of the decoding device.

[0071] Fig.44 This is a flowchart showing another example of the processing performed by the prediction processing unit of the decoding device.

[0072] Fig.45 This is a flowchart showing an example of inter-frame prediction based on the normal inter-frame mode in a decoding device.

[0073] Fig.46 This is a block diagram showing an implementation example of a decoding device.

[0074] Fig.47 This is a flowchart showing the basic coefficient encoding method of the first aspect.

[0075] Fig.48 This is a flowchart showing the basic first encoding method of the first aspect.

[0076] Fig.49 This is a flowchart showing the basic second encoding method of the first aspect.

[0077] Fig.50 This is a flowchart showing the coefficient encoding method of the first example of the first aspect.

[0078] Fig.51 This is a flowchart showing the coefficient encoding method of the second example of the first aspect.

[0079] Fig.52 This is a flowchart showing the coefficient encoding method of the first example of the second aspect.

[0080] Fig.53 This is a flowchart showing the coefficient encoding method of the second example of the second aspect.

[0081] Fig.54 This is a syntax diagram showing the basic first encoding method of the third form.

[0082] Fig.55 It is a syntax diagram representing the basic second encoding method of the third form.

[0083] Fig.56 This is a syntax diagram showing the second encoding method of the first example of the third aspect.

[0084] Fig.57 This is a syntax diagram showing the second encoding method of the second example of the third aspect.

[0085] Fig.58 This is a flowchart showing the operation of the encoding device according to the embodiment.

[0086] Fig.59 This is a flowchart showing the operation of the decoding device according to the embodiment.

[0087] Fig.60 This is a block diagram showing the overall structure of a content provision system that implements content distribution services.

[0088] Fig.61 This is a conceptual diagram showing an example of a coding structure in the case of scalable coding.

[0089] Fig.62 This is a conceptual diagram showing an example of a coding structure in the case of scalable coding.

[0090] Fig.63 This is a conceptual diagram showing an example of a display screen of a web page.

[0091] Fig.64 This is a conceptual diagram showing an example of a display screen of a web page.

[0092] Fig.65 This is a block diagram showing an example of a smart phone.

[0093] Fig.66 This is a block diagram showing a structural example of a smart phone. DETAILED DESCRIPTION

[0094] For example, in encoding a block of an image, the encoding device may be able to transform the block into easily compressible data by applying an orthogonal transform to the block. On the other hand, in encoding a block of an image, the encoding device may be able to reduce processing delay by not applying an orthogonal transform to the block.

[0095] In addition, the characteristics of the block to which the orthogonal transform is applied are different from the characteristics of the block to which the orthogonal transform is not applied. The encoding method used for the block to which the orthogonal transform is applied and the encoding method used for the block to which the orthogonal transform is not applied may be different from each other.

[0096] However, when an inappropriate encoding method is used for a block to which an orthogonal transform is applied, or when an inappropriate encoding method is used for a block to which an orthogonal transform is not applied, there is a possibility that the amount of encoding increases or the processing delay increases. In addition, when there is a large deviation between the encoding method used for a block to which an orthogonal transform is applied and the encoding method used for a block to which an orthogonal transform is not applied, there is a possibility that the processing becomes complicated and the circuit scale increases.

[0097] Therefore, for example, an encoding device according to one aspect of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit encodes a block of an image while limiting the number of context adaptive coding processing times during operation, and in the encoding of the block, in both cases of a case where an orthogonal transform is applied to the block and a case where an orthogonal transform is not applied to the block, a sub-block flag encoding process is performed without including it in the number of processing times, and the sub-block flag encoding process encodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive coding.

[0098] Thus, regardless of whether or not orthogonal transformation is applied and the number of times of context adaptive coding processing is limited, the sub-block flag may be encoded by context adaptive coding. Therefore, the amount of coding may be reduced. In addition, the difference between the coding method used in the block to which orthogonal transformation is applied and the coding method used in the block not to which orthogonal transformation is applied may be reduced, and the circuit scale may be reduced.

[0099] In addition, for example, the circuit further performs a position parameter encoding process without including it in the processing times when an orthogonal transform is applied to the block, wherein the position parameter encoding process encodes the parameters representing the position of the initial non-zero coefficient in the block in the scanning order through context adaptive coding.

[0100] Therefore, when orthogonal transform is applied, the parameter indicating the position of the first non-zero coefficient may be encoded by context adaptive coding regardless of whether the number of times of context adaptive coding is limited. Therefore, the amount of coding may be reduced.

[0101] In addition, for example, the circuit further determines the limit range of the number of processing times according to the position of the first non-zero coefficient when an orthogonal transform is applied to the block.

[0102] Therefore, when orthogonal transformation is applied, it is possible to appropriately determine the limit number of times of processing. Therefore, it is possible to appropriately adjust the balance between the reduction of the coding amount and the reduction of the processing delay.

[0103] In addition, for example, a decoding device according to one aspect of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit decodes a block of an image while limiting the number of processing times of context adaptive decoding during operation, and in decoding the block, in both cases of a case where an inverse orthogonal transform is applied to the block and a case where an inverse orthogonal transform is not applied to the block, a sub-block flag decoding process is performed without including it in the number of processing times, and the sub-block flag decoding process decodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive decoding.

[0104] Thus, it is possible to decode the sub-block flag by context adaptive decoding regardless of whether the inverse orthogonal transform is applied and whether the number of times of context adaptive decoding processing is limited. Therefore, the amount of coding may be reduced. In addition, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block not to which the inverse orthogonal transform is applied may be reduced, and the circuit scale may be reduced.

[0105] In addition, for example, the circuit further performs a position parameter decoding process without including it in the processing times when an inverse orthogonal transform is applied to the block, wherein the position parameter decoding process encodes parameters representing the position of the initial non-zero coefficients in the block in the scanning order through context adaptive decoding.

[0106] Therefore, when the inverse orthogonal transform is applied, the parameter indicating the position of the first non-zero coefficient may be decoded by the context adaptive decoding regardless of whether the number of times of the context adaptive decoding is limited. Therefore, the amount of code may be reduced.

[0107] In addition, for example, the circuit further determines the limit range of the number of processing times according to the position of the first non-zero coefficient when an inverse orthogonal transform is applied to the block.

[0108] Thus, when the inverse orthogonal transform is applied, it is possible to appropriately determine the limit number of processing times. Therefore, it is possible to appropriately adjust the balance between the reduction of the coding amount and the reduction of the processing delay.

[0109] In addition, for example, one aspect of the encoding method of the present invention is to limit the number of context adaptive coding processing times and encode blocks of an image. In the encoding of the blocks, in both cases of a case where an orthogonal transform is applied to the blocks and a case where an orthogonal transform is not applied to the blocks, a sub-block flag encoding process is performed without including it in the number of processing times. The sub-block flag encoding process encodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive coding.

[0110] Thus, regardless of whether or not orthogonal transformation is applied and the number of times of context adaptive coding processing is limited, the sub-block flag may be encoded by context adaptive coding. Therefore, the amount of coding may be reduced. In addition, the difference between the coding method used in the block to which orthogonal transformation is applied and the coding method used in the block not to which orthogonal transformation is applied may be reduced, and the circuit scale may be reduced.

[0111] In addition, for example, a decoding method according to one aspect of the present invention is to decode a block of an image while limiting the number of processing times of context adaptive decoding. In the decoding of the block, in both cases of a case where an inverse orthogonal transform is applied to the block and a case where an inverse orthogonal transform is not applied to the block, a sub-block flag decoding process is performed without including it in the number of processing times. The sub-block flag decoding process decodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive decoding.

[0112] Thus, it is possible to decode the sub-block flag by context adaptive decoding regardless of whether the inverse orthogonal transform is applied and whether the number of times of context adaptive decoding processing is limited. Therefore, the amount of coding may be reduced. In addition, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block not to which the inverse orthogonal transform is applied may be reduced, and the circuit scale may be reduced.

[0113] In addition, for example, an encoding device according to one embodiment of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit, when in operation, in both cases of applying an orthogonal transform to a block of an encoding target image and not applying an orthogonal transform to the block, encodes a coefficient information flag indicating an attribute of a coefficient contained in the block by context adaptive coding when the number of processing times of context adaptive coding is within a limit on the number of processing times, skips encoding the coefficient information flag when the number of processing times is not within the limit on the number of processing times, encodes residual value information for reconstructing the value of the coefficient using the coefficient information flag by Golombirai coding when the coefficient information flag is encoded, and encodes the value of the coefficient by Golombirai coding when the encoding of the coefficient information flag is skipped.

[0114] Thus, regardless of whether or not orthogonal transform is applied, it is possible to skip encoding of coefficient information flags according to the limit of the number of processing times of context adaptive coding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of coding. In addition, it is possible to reduce the difference between the encoding method used in a block to which orthogonal transform is applied and the encoding method used in a block to which orthogonal transform is not applied, and it is possible to reduce the circuit scale.

[0115] Furthermore, for example, the coefficient information flag is a flag indicating whether the value of the coefficient is greater than 1.

[0116] Thus, regardless of whether orthogonal transform is applied, according to the limit of the number of processing times of context adaptive coding, the coding of the coefficient information flag indicating whether the value of the coefficient is greater than 1 may be skipped. Therefore, it is possible to suppress the increase of processing delay and the increase of coding amount.

[0117] In addition, for example, a decoding device according to one aspect of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit, when in operation, in both cases of applying an inverse orthogonal transform to a block of a decoding target image and not applying an inverse orthogonal transform to the block, when the number of processing times of context adaptive decoding is within a limit range of the processing times, the coefficient information flag indicating the attribute of the coefficient contained in the block is decoded by context adaptive decoding, when the number of processing times is not within the limit range of the processing times, the decoding of the coefficient information flag is skipped, when the coefficient information flag is decoded, the residual value information used to reconstruct the value of the coefficient using the coefficient information flag is decoded by Golombirai decoding, and when the decoding of the coefficient information flag is skipped, the value of the coefficient is decoded by Golombirai decoding.

[0118] Thus, regardless of whether or not the inverse orthogonal transform is applied, it is possible to skip decoding of the coefficient information flag according to the limit of the number of processing times of context adaptive decoding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of code. In addition, the difference between the decoding method used in a block to which the inverse orthogonal transform is applied and the decoding method used in a block to which the inverse orthogonal transform is not applied may be reduced, and the circuit scale may be reduced.

[0119] Furthermore, for example, the coefficient information flag is a flag indicating whether the value of the coefficient is greater than 1.

[0120] Thus, regardless of whether inverse orthogonal transform is applied, it is possible to skip decoding of the coefficient information flag indicating whether the value of the coefficient is greater than 1 according to the limit of the number of processing times of context adaptive decoding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of code.

[0121] In addition, for example, one form of the encoding method of the present invention is that, in both the case of applying an orthogonal transform to a block of an encoding object image and the case of not applying an orthogonal transform to the block, when the number of processing times of context adaptive coding is within a limit range of the processing times, a coefficient information flag representing the attributes of a coefficient contained in the block is encoded by context adaptive coding, when the number of processing times is not within the limit range of the processing times, encoding of the coefficient information flag is skipped, when the coefficient information flag is encoded, residual value information used to reconstruct the value of the coefficient using the coefficient information flag is encoded by Golombirai coding, and when encoding of the coefficient information flag is skipped, the value of the coefficient is encoded by Golombirai coding.

[0122] Thus, regardless of whether or not orthogonal transform is applied, it is possible to skip encoding of coefficient information flags according to the limit of the number of processing times of context adaptive coding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of coding. In addition, it is possible to reduce the difference between the encoding method used in a block to which orthogonal transform is applied and the encoding method used in a block to which orthogonal transform is not applied, and it is possible to reduce the circuit scale.

[0123] In addition, for example, in one form of the decoding method of the present invention, in both the cases of applying an inverse orthogonal transform to a block of a decoding object image and not applying an inverse orthogonal transform to the block, when the number of processing times of context adaptive decoding is within a limit range of the processing times, the coefficient information flag indicating the attributes of the coefficient contained in the block is decoded by context adaptive decoding, when the number of processing times is not within the limit range of the processing times, the decoding of the coefficient information flag is skipped, when the coefficient information flag is decoded, the residual value information used to reconstruct the value of the coefficient using the coefficient information flag is decoded by Golombirai decoding, and when the decoding of the coefficient information flag is skipped, the value of the coefficient is decoded by Golombirai decoding.

[0124] Thus, regardless of whether or not the inverse orthogonal transform is applied, it is possible to skip decoding of the coefficient information flag according to the limit of the number of processing times of context adaptive decoding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of code. In addition, the difference between the decoding method used in a block to which the inverse orthogonal transform is applied and the decoding method used in a block to which the inverse orthogonal transform is not applied may be reduced, and the circuit scale may be reduced.

[0125] In addition, for example, one form of an encoding device of the present invention includes a circuit and a memory connected to the circuit, wherein the circuit, when in operation, limits the number of processing times of context adaptive coding and encodes a block of an image, and in the encoding of the block, when no orthogonal transform is applied to the block, it is determined whether multiple coefficient information flags respectively representing multiple attributes of coefficients contained in the block satisfy a processing condition, and when it is determined that the processing condition is satisfied, the multiple coefficient information flags are encoded by context adaptive coding, and the processing condition is the following condition: the number of processing times when the number of the multiple coefficient information flags is added to the number of processing times is within the limit range of the processing times.

[0126] Thus, in the case where the orthogonal transform is not applied, it is possible to collectively determine whether context adaptive coding can be used for a plurality of coefficient information flags. Therefore, it is possible that the processing is simplified and the processing delay is reduced. In addition, in the case where similar processing is performed on blocks to which the orthogonal transform is applied, the difference between the encoding method used in the blocks to which the orthogonal transform is applied and the encoding method used in the blocks to which the orthogonal transform is not applied is likely to be reduced, and the circuit scale is likely to be reduced.

[0127] In addition, for example, the plurality of coefficient information flags include a coefficient information flag indicating whether the value of the coefficient is greater than 3 and a coefficient information flag indicating whether the value of the coefficient is greater than 5.

[0128] Thus, it is possible to collectively determine a plurality of coefficient information flags including a coefficient information flag indicating whether the coefficient value is greater than 3 and a coefficient information flag indicating whether the coefficient value is greater than 5. Therefore, processing can be simplified and processing delay can be reduced.

[0129] In addition, for example, the plurality of coefficient information flags further include a coefficient information flag indicating whether the value of the coefficient is greater than 7 and a coefficient information flag indicating whether the value of the coefficient is greater than 9.

[0130] Thus, it is possible to collectively determine a plurality of coefficient information flags including four coefficient information flags, namely, whether the value of the coefficient is greater than 3, whether the value of the coefficient is greater than 5, whether the value of the coefficient is greater than 7, and whether the value of the coefficient is greater than 9. Therefore, processing can be simplified and processing delay can be reduced.

[0131] In addition, for example, a decoding device according to one embodiment of the present invention comprises a circuit and a memory connected to the circuit, wherein the circuit, when in operation, limits the number of processing times of context adaptive decoding and decodes a block of an image, and in decoding the block, without applying an inverse orthogonal transform to the block, determines whether a plurality of coefficient information flags respectively representing a plurality of attributes of coefficients contained in the block satisfy a processing condition, and when it is determined that the processing condition is satisfied, decodes the plurality of coefficient information flags through context adaptive decoding, and the processing condition is the following condition: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within the limit of the processing times.

[0132] Thus, even when the inverse orthogonal transform is not applied, it is possible to collectively determine whether context adaptive decoding can be used for a plurality of coefficient information flags. Therefore, the processing can be simplified and the processing delay can be reduced. In addition, when similar processing is performed on blocks to which the inverse orthogonal transform is applied, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block to which the inverse orthogonal transform is not applied can be reduced, and the circuit scale can be reduced.

[0133] In addition, for example, the plurality of coefficient information flags include a coefficient information flag indicating whether the value of the coefficient is greater than 3 and a coefficient information flag indicating whether the value of the coefficient is greater than 5.

[0134] Thus, it is possible to collectively determine a plurality of coefficient information flags including a coefficient information flag indicating whether the coefficient value is greater than 3 and a coefficient information flag indicating whether the coefficient value is greater than 5. Therefore, processing can be simplified and processing delay can be reduced.

[0135] In addition, for example, the plurality of coefficient information flags further include a coefficient information flag indicating whether the value of the coefficient is greater than 7 and a coefficient information flag indicating whether the value of the coefficient is greater than 9.

[0136] Thus, it is possible to collectively determine a plurality of coefficient information flags including four coefficient information flags, namely, whether the value of the coefficient is greater than 3, whether the value of the coefficient is greater than 5, whether the value of the coefficient is greater than 7, and whether the value of the coefficient is greater than 9. Therefore, processing can be simplified and processing delay can be reduced.

[0137] In addition, for example, one form of the encoding method of the present invention is to limit the number of processing times of context adaptive coding and encode blocks of an image. In the encoding of the blocks, when no orthogonal transform is applied to the blocks, it is determined whether multiple coefficient information flags respectively representing multiple attributes of coefficients contained in the blocks satisfy processing conditions. When it is determined that the processing conditions are satisfied, the multiple coefficient information flags are encoded by context adaptive coding, and the processing conditions are as follows: the number of processing times when the number of the multiple coefficient information flags is added to the number of processing times is within the limited range of the processing times.

[0138] Thus, in the case where the orthogonal transform is not applied, it is possible to collectively determine whether context adaptive coding can be used for a plurality of coefficient information flags. Therefore, it is possible that the processing is simplified and the processing delay is reduced. In addition, in the case where similar processing is performed on blocks to which the orthogonal transform is applied, the difference between the encoding method used in the blocks to which the orthogonal transform is applied and the encoding method used in the blocks to which the orthogonal transform is not applied is likely to be reduced, and the circuit scale is likely to be reduced.

[0139] In addition, for example, a decoding method of one form of the present invention is to decode a block of an image while limiting the number of processing times of context adaptive decoding. In the decoding of the block, without applying an inverse orthogonal transform to the block, it is determined whether a plurality of coefficient information flags respectively representing a plurality of attributes of the coefficients contained in the block satisfy a processing condition. When it is determined that the processing condition is satisfied, the plurality of coefficient information flags are decoded by context adaptive decoding, and the processing condition is the following condition: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within a limited range of the processing times.

[0140] Thus, even when the inverse orthogonal transform is not applied, it is possible to collectively determine whether context adaptive decoding can be used for a plurality of coefficient information flags. Therefore, the processing can be simplified and the processing delay can be reduced. In addition, when similar processing is performed on blocks to which the inverse orthogonal transform is applied, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block to which the inverse orthogonal transform is not applied can be reduced, and the circuit scale can be reduced.

[0141] Furthermore, for example, an encoding device according to one aspect of the present invention includes a partitioning unit, an intra-frame prediction unit, an inter-frame prediction unit, a prediction control unit, a transform unit, a quantization unit, an entropy encoding unit, and a loop filter unit.

[0142] The segmentation unit segments a coding target picture constituting the moving image into a plurality of blocks. The intra prediction unit performs intra prediction for generating the predicted image of the coding target block in the coding target picture using a reference image in the coding target picture. The inter prediction unit performs inter prediction for generating the predicted image of the coding target block using a reference image in a reference picture different from the coding target picture.

[0143] The prediction control unit controls the intra prediction performed by the intra prediction unit and the inter prediction performed by the inter prediction unit. The transform unit transforms the prediction residual signal between the prediction image generated by the intra prediction unit or the inter prediction unit and the image of the encoding target block to generate a transform coefficient signal of the encoding target block. The quantization unit quantizes the transform coefficient signal. The entropy coding unit encodes the quantized transform coefficient signal. The loop filter unit applies a filter to the encoding target block.

[0144] In addition, for example, the entropy coding unit encodes a block of the image while limiting the number of context adaptive coding processing times in action. In the encoding of the block, in both cases of a case where an orthogonal transform is applied to the block and a case where an orthogonal transform is not applied to the block, a sub-block flag encoding process is performed without including it in the number of processing times. The sub-block flag encoding process encodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive coding.

[0145] In addition, for example, when the entropy coding unit is in operation, in both the case where an orthogonal transform is applied to a block of the encoding object image and the case where an orthogonal transform is not applied to the block, when the number of processing times of context adaptive coding is within the limit of the number of processing times, the coefficient information flag indicating the attribute of the coefficient contained in the block is encoded by context adaptive coding, when the number of processing times is not within the limit of the number of processing times, the encoding of the coefficient information flag is skipped, when the coefficient information flag is encoded, the residual value information used to reconstruct the value of the coefficient using the coefficient information flag is encoded by Golombirai coding, and when the encoding of the coefficient information flag is skipped, the value of the coefficient is encoded by Golombirai coding.

[0146] In addition, for example, the entropy coding unit, during operation, limits the number of context adaptive coding processing times and encodes blocks of the image. In the encoding of the blocks, when no orthogonal transform is applied to the blocks, it is determined whether a plurality of coefficient information flags respectively indicating a plurality of attributes of coefficients contained in the blocks satisfy processing conditions. When it is determined that the processing conditions are satisfied, the plurality of coefficient information flags are encoded by context adaptive coding, and the processing conditions are as follows: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within a limited range of the processing times.

[0147] In addition, for example, a decoding device of one form of the present invention uses a predicted image to decode a moving image, and the decoding device has an entropy decoding unit, an inverse quantization unit, an inverse transformation unit, an intra-frame prediction unit, an inter-frame prediction unit, a prediction control unit, an addition unit (reconstruction unit) and a loop filtering unit.

[0148] The entropy decoding unit decodes a quantized transform coefficient signal of a decoding target block in a decoding target picture constituting the moving image. The inverse quantization unit inversely quantizes the quantized transform coefficient signal. The inverse transform unit inversely transforms the transform coefficient signal to obtain a prediction residual signal of the decoding target block.

[0149] The intra prediction unit performs intra prediction for generating the predicted image of the decoding target block using a reference image in the decoding target picture. The inter prediction unit performs inter prediction for generating the predicted image of the decoding target block using a reference image in a reference picture different from the decoding target picture. The prediction control unit controls the intra prediction performed by the intra prediction unit and the inter prediction performed by the inter prediction unit.

[0150] The adding unit reconstructs the image of the decoding target block by adding the predicted image generated by the intra prediction unit or the inter prediction unit to the prediction residual signal. The loop filtering unit applies a filter to the decoding target block.

[0151] In addition, for example, the entropy decoding unit limits the number of context adaptive decoding processing times during operation and decodes a block of the image. In the decoding of the block, in both cases of a case where an inverse orthogonal transform is applied to the block and a case where an inverse orthogonal transform is not applied to the block, a sub-block flag decoding process is performed without including it in the number of processing times. The sub-block flag decoding process decodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive decoding.

[0152] In addition, for example, when the entropy decoding unit is in operation, in both the case where an inverse orthogonal transform is applied to a block of the decoding object image and the case where an inverse orthogonal transform is not applied to the block, when the number of processing times of context adaptive decoding is within the limit of the processing times, the coefficient information flag indicating the attribute of the coefficient contained in the block is decoded by context adaptive decoding, when the number of processing times is not within the limit of the processing times, the decoding of the coefficient information flag is skipped, when the coefficient information flag is decoded, the residual value information used to reconstruct the value of the coefficient using the coefficient information flag is decoded by Golombirai decoding, and when the decoding of the coefficient information flag is skipped, the value of the coefficient is decoded by Golombirai decoding.

[0153] In addition, for example, the entropy decoding unit, during operation, limits the number of processing times of context adaptive decoding and decodes a block of the image. In the decoding of the block, without applying an inverse orthogonal transform to the block, it is determined whether a plurality of coefficient information flags respectively indicating a plurality of attributes of the coefficients contained in the block satisfy a processing condition. When it is determined that the processing condition is satisfied, the plurality of coefficient information flags are decoded by context adaptive decoding, and the processing condition is the following condition: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within a limited range of the processing times.

[0154] Moreover, these inclusive or specific forms may also be implemented by systems, devices, methods, integrated circuits, computer programs, or non-temporary recording media such as computer-readable CD-ROMs, or by any combination of systems, devices, methods, integrated circuits, computer programs, and recording media.

[0155] The following embodiments are described in detail with reference to the accompanying drawings. In addition, the embodiments described below all represent inclusive or specific examples. The numerical values, shapes, materials, components, configuration positions and connection forms of components, steps, relationships and sequences of steps, etc. shown in the following embodiments are examples and are not intended to limit the claims.

[0156] The following describes implementations of a coding device and a decoding device. The implementations are examples of coding devices and decoding devices to which the processing and / or structures described in each form of the present invention can be applied. The processing and / or structures can also be implemented in coding devices and decoding devices different from the implementations. For example, with respect to the processing and / or structures applied to the implementations, for example, one of the following can also be performed.

[0157] (1) Any of the multiple components of the encoding device or decoding device of the embodiment described in each aspect of the present invention may be replaced by another component described in any of the aspects of the present invention, or these components may be combined;

[0158] (2) In the coding device or decoding device of the embodiment, any changes such as addition, replacement, deletion, etc. of functions or processes performed by some of the multiple components of the coding device or decoding device may be made. For example, any function or process may be replaced by another function or process described in any of the embodiments of the present invention, or they may be combined;

[0159] (3) In the method implemented by the encoding device or decoding device of the embodiment, any changes such as addition, replacement, deletion, etc. may be made to a part of the multiple processes included in the method. For example, any process in the method may be replaced by another process described in any of the various aspects of the present invention, or they may be combined;

[0160] (4) Some of the multiple components constituting the encoding device or decoding device of the embodiment may be combined with a component described in any of the aspects of the present invention, may be combined with a component having a part of the function described in any of the aspects of the present invention, or may be combined with a component that implements a part of the processing implemented by the component described in any of the aspects of the present invention.

[0161] (5) A component having a part of the functions of the encoding device or decoding device of the embodiment, or a component implementing a part of the processing of the encoding device or decoding device of the embodiment, is combined with or replaced with a component described in any of the aspects of the present invention, a component having a part of the functions described in any of the aspects of the present invention, or a component implementing a part of the processing described in any of the aspects of the present invention;

[0162] (6) In a method implemented by an encoding device or a decoding device of an embodiment, one of a plurality of processes included in the method is replaced with one of the processes described in each aspect of the present invention or a similar process, or a combination of these processes;

[0163] (7) Some of the multiple processes included in the method implemented by the encoding device or decoding device of the embodiment may be combined with the process described in any of the aspects of the present invention.

[0164] (8) The implementation of the processing and / or structure described in each aspect of the present invention is not limited to the encoding device or decoding device of the embodiment. For example, the processing and / or structure may also be implemented in a device used for a purpose different from the motion picture encoding or motion picture decoding disclosed in the embodiment.

[0165] [Encoding device]

[0166] First, the encoding device according to the embodiment will be described. Figure 1 1 is a block diagram showing a functional structure of a coding device 100 according to an embodiment. The coding device 100 is a moving picture coding device that codes a moving picture in units of blocks.

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

[0168] The encoding device 100 is implemented by, for example, a general-purpose processor and a 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, the subtraction unit 104, the transformation unit 106, the quantization unit 108, the entropy coding unit 110, the inverse quantization unit 112, the inverse transformation unit 114, the addition unit 116, the loop filter unit 120, the intra-frame prediction unit 124, the inter-frame prediction unit 126, and the prediction control unit 128. In addition, the encoding device 100 may be implemented as one or more dedicated electronic circuits corresponding to the segmentation unit 102, the subtraction unit 104, the transformation unit 106, the quantization unit 108, the entropy coding unit 110, the inverse quantization unit 112, the inverse transformation unit 114, the addition unit 116, the loop filter unit 120, the intra-frame prediction unit 124, the inter-frame prediction unit 126, and the prediction control unit 128.

[0169] Hereinafter, after describing the overall processing flow of the encoding device 100 , each component included in the encoding device 100 will be described.

[0170] [Overall flow of encoding processing]

[0171] Figure 2 : is a flowchart showing an example of the overall encoding process performed by the encoding device 100.

[0172] First, the segmentation unit 102 of the encoding device 100 segments each picture included in the input image as a moving image into a plurality of fixed-size blocks (for example, 128×128 pixels) (step Sa_1). Then, the segmentation unit 102 selects a segmentation pattern (also referred to as a block shape) for the fixed-size block (step Sa_2). That is, the segmentation unit 102 further segments the fixed-size block into a plurality of blocks constituting the selected segmentation pattern. Then, the encoding device 100 performs the processing of steps Sa_3 to Sa_9 on each of the plurality of blocks (that is, the encoding target block).

[0173] That is, the prediction processing unit composed of all or part of the intra-frame prediction unit 124, the inter-frame prediction unit 126 and the prediction control unit 128 generates a prediction signal (also called a prediction block) of the encoding object block (also called the current block) (step Sa_3).

[0174] Next, the subtraction unit 104 generates a difference between the encoding target block and the prediction block as a prediction residual (also referred to as a difference block) (step Sa_4).

[0175] Next, the transform unit 106 and the quantization unit 108 transform and quantize the difference block to generate a plurality of quantized coefficients (step Sa_5). In addition, a block composed of a plurality of quantized coefficients is also called a coefficient block.

[0176] Next, the entropy coding unit 110 generates a coded signal by encoding the coefficient block and prediction parameters related to the generation of the prediction signal (specifically, entropy coding) (step Sa_6). In addition, the coded signal is also called a coded bit stream, a compressed bit stream or a stream.

[0177] Next, the inverse quantization unit 112 and the inverse transformation unit 114 restore a plurality of prediction residuals (ie, difference blocks) by inverse quantizing and inverse transforming the coefficient blocks (step Sa_7).

[0178] Next, the adding unit 116 reconstructs the current block into a reconstructed image (also referred to as a reconstructed block or a decoded image block) by adding the predicted block to the restored differential block (step Sa_8). Thus, a reconstructed image is generated.

[0179] When the reconstructed image is generated, the loop filter unit 120 filters the reconstructed image as necessary (step Sa_9).

[0180] Then, the encoding device 100 determines whether encoding of the entire picture is completed (step Sa_10 ), and when it is determined that encoding is not completed (No in step Sa_10 ), it repeats the processing from step Sa_2 .

[0181] In addition, in the above example, the encoding device 100 selects one partition pattern for a block of a fixed size and encodes each block according to the partition pattern, but each block may be encoded according to each of a plurality of partition patterns. In this case, the encoding device 100 may evaluate the cost for each of the plurality of partition patterns, and may select, for example, a coded signal obtained by encoding according to the partition pattern with the minimum cost as the output coded signal.

[0182] As shown in the figure, the processes of steps Sa_1 to Sa_10 are sequentially performed by the encoding device 100. Alternatively, a part of a plurality of these processes may be performed in parallel, or the order of these processes may be reversed.

[0183] [Division]

[0184] The segmentation unit 102 segments each picture included in the input motion image into a plurality of blocks, and outputs each block to the subtraction unit 104. For example, the segmentation unit 102 first segments the picture into blocks of a fixed size (e.g., 128×128). Other fixed block sizes may also be used. The fixed-size block is sometimes called a coding tree unit (CTU). Furthermore, the segmentation unit 102 segments each fixed-size block into blocks of a variable size (e.g., less than 64×64) based on, for example, recursive quadtree and / or binary tree block segmentation. That is, the segmentation unit 102 selects a segmentation pattern. The variable-size block is sometimes called a coding unit (CU), a prediction unit (PU), or a transform unit (TU). In addition, in various processing examples, it is not necessary to distinguish between CU, PU, ​​and TU, and a part or all of the blocks in the picture may be used as processing units of CU, PU, ​​or TU.

[0185] Figure 3 1 is a conceptual diagram showing an example of block division in an implementation mode. Figure 3 In FIG, the solid line represents the block boundary based on the quadtree block partition, and the dotted line represents the block boundary based on the binary tree block partition.

[0186] Here, the block 10 is a square block of 128×128 pixels (128×128 block). The 128×128 block 10 is first divided into four square 64×64 blocks (quadtree block division).

[0187] The upper left 64×64 block is further divided vertically into two rectangular 32×64 blocks, and the left 32×64 block is further divided vertically into two rectangular 16×64 blocks (binary tree block division). As a result, the upper left 64×64 block is divided into two 16×64 blocks 11, 12 and a 32×64 block 13.

[0188] The upper right 64×64 block is horizontally partitioned into two rectangular 64×32 blocks 14 and 15 (binary tree block partitioning).

[0189] The 64×64 block at the bottom left is divided into four square 32×32 blocks (quadtree block division). The upper left block and the lower right block of the four 32×32 blocks are further divided. The upper left 32×32 block is vertically divided into two rectangular 16×32 blocks, and the 16×32 block on the right is further horizontally divided into two 16×16 blocks (binary tree block division). The lower right 32×32 block is horizontally divided into two 32×16 blocks (binary tree block division). As a result, the lower left 64×64 block is divided into a 16×32 block 16, two 16×16 blocks 17, 18, two 32×32 blocks 19, 20, and two 32×16 blocks 21, 22.

[0190] The lower right 64×64 block 23 is not split.

[0191] As above, in Figure 3 In FIG. 1 , block 10 is divided into 13 blocks 11 to 23 of variable size based on recursive quad-tree and binary tree block division. This type of division is sometimes called QTBT (quad-tree plus binary tree) division.

[0192] In addition, Figure 3 In the example, one block is divided into four or two blocks (quadtree or binary tree block division), but the division is not limited to these. For example, one block can also be divided into three blocks (ternary tree division). The division including such ternary tree division is called MBT (multi type tree) division.

[0193] [Structural slices / tiles of the image]

[0194] In order to decode pictures in parallel, pictures may be constructed in slice units or tile units. Pictures constructed in slice units or tile units may be constructed by the partitioning unit 102.

[0195] A slice is a basic coding unit constituting a picture. A picture is composed of, for example, one or more slices. In addition, a slice is composed of one or more continuous CTUs (Coding Tree Units).

[0196] Figure 4AThis is a conceptual diagram showing an example of the structure of a slice. For example, a picture includes 11×8 CTUs and is divided into 4 slices (slices 1 to 4). Slice 1 consists of 16 CTUs, slice 2 consists of 21 CTUs, slice 3 consists of 29 CTUs, and slice 4 consists of 22 CTUs. Here, each CTU in the picture belongs to any slice. The shape of the slice becomes a shape that divides the picture in the horizontal direction. The boundary of the slice does not need to be the end of the picture, but can be any position in the boundary of the CTU in the picture. The processing order (encoding order or decoding order) of the CTU in the slice is, for example, a raster scan order. In addition, the slice includes header information and encoded data. The header information may also record the characteristics of the slice, such as the CTU address at the beginning of the slice and the slice type.

[0197] A tile is a unit of a rectangular area constituting a picture, and a number called TileId may be assigned to each tile in a raster scan order.

[0198] Figure 4B This is a conceptual diagram showing an example of a tile structure. For example, a picture includes 11×8 CTUs and is divided into four rectangular area tiles (tiles 1 to 4). When tiles are used, the processing order of CTUs is changed compared to when tiles are not used. When tiles are not used, multiple CTUs in a picture are processed in raster scan order. When tiles are used, at least one CTU in each of the multiple tiles is processed in raster scan order. For example, Figure 4B As shown, the processing order of multiple CTUs included in tile 1 is from the left end of the 1st row of tile 1 to the right end of the 1st row of tile 1, and then from the left end of the 2nd row of tile 1 to the right end of the 2nd row of tile 1.

[0199] In addition, one tile may include more than one slice, and one slice may include more than one tile.

[0200] [Subtraction Department]

[0201] The subtracting unit 104 subtracts the prediction signal (the prediction sample input from the prediction control unit 128 shown below) from the original signal (original sample) in units of blocks input from the dividing unit 102 and divided by the dividing unit 102. That is, the subtracting unit 104 calculates the prediction error (also referred to as residual) of the encoding target block (hereinafter referred to as the current block). Then, the subtracting unit 104 outputs the calculated prediction error (residual) to the transforming unit 106.

[0202] The original signal is an input signal of the encoding device 100 and is a signal representing an image of each picture constituting a moving image (for example, a luminance (luma) signal and two color difference (chroma) signals). Hereinafter, the signal representing an image may be referred to as a sample.

[0203] [Conversion Department]

[0204] The transform unit 106 transforms the prediction error in the spatial domain into a transform coefficient in the frequency domain, and outputs the transform coefficient to the quantization unit 108. Specifically, the transform unit 106 performs a predetermined discrete cosine transform (DCT) or discrete sine transform (DST) on the prediction error in the spatial domain. The predetermined DCT or DST may be predetermined.

[0205] In addition, the transform unit 106 may adaptively select a transform type from a plurality of transform types, and transform the prediction error into a transform coefficient using a transform basis function corresponding to the selected transform type. Such a transform is sometimes called EMT (explicit multiple core transform) or AMT (adaptive multiple transform).

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

[0207] Information indicating whether such EMT or AMT is applied (e.g., called an EMT flag or an AMT flag) and information indicating the selected transform type are usually signaled at the CU level. In addition, the signaling of such information is not necessarily limited to the CU level, but may be other levels (e.g., a bit sequence level, a picture level, a slice level, a tile level, or a CTU level).

[0208] In addition, the transformation unit 106 may also re-transform the transformation coefficients (transformation results). Such re-transformation is sometimes called AST (adaptive secondary transform) or NSST (non-separable secondary transform). For example, the transformation unit 106 re-transforms each sub-block (for example, 4×4 sub-blocks) contained in the block of transformation coefficients corresponding to the intra-frame prediction error. Information indicating whether NSST is applied and information related to the transformation matrix used in NSST are usually signaled at the CU level. In addition, the signaling of this information does not need to be limited to the CU level, but can also be other levels (for example, sequence level, picture level, slice level, tile level or CTU level).

[0209] Separable transformation and Non-Separable transformation can also be applied in the transformation unit 106. Separable transformation refers to a method of performing multiple transformations in each direction equivalent to the number of dimensions of the input. Non-Separable transformation refers to a method of treating two or more dimensions as one dimension and transforming them together when the input is multi-dimensional.

[0210] For example, as an example of Non-Separable transformation, when a 4×4 block is input, it is considered as an array having 16 elements, and the array is transformed using a 16×16 transformation matrix.

[0211] In a further example of the Non-Separable transformation, a 4×4 input block may be regarded as an array of 16 elements, and then a transformation (Hypercube Givens Transform) may be performed by performing a plurality of Givens rotations on the array.

[0212] In the transformation in the transformation unit 106, the type of basis to be transformed into the frequency domain can be switched according to the region in the CU. As an example, there is SVT (Spatially Varying Transform). In SVT, Figure 5BAs shown, the CU is divided into two equal parts in the horizontal or vertical direction, and only the area on one side is transformed into the frequency area. The type of transformation base can be set for each area, for example, DST7 and DCT8 are used. In this example, only one of the two areas in the CU is transformed, and the other is not transformed, but both areas can also be transformed. In addition, the division method is not limited to two equal parts, but can be more flexible, such as four equal parts or encoding the information representing the division separately, and signaling it in the same way as the CU division. In addition, SVT is sometimes referred to as SBT (Sub-block Transform).

[0213] [Quantitative Department]

[0214] 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 scanning order, and quantizes the transform coefficients based on the quantization parameters (QP) corresponding to the scanned transform coefficients. In addition, the quantization unit 108 outputs the quantized transform coefficients of the current block (hereinafter referred to as quantized coefficients) to the entropy coding unit 110 and the inverse quantization unit 112. The predetermined scanning order may also be predetermined.

[0215] The predetermined scanning order is the order used for quantization / inverse quantization of transform coefficients. For example, the predetermined scanning order may be defined in ascending order (from low frequency to high frequency) or descending order (from high frequency to low frequency) of frequency.

[0216] The quantization parameter (QP) refers to 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.

[0217] In addition, quantization matrices are sometimes used in quantization. For example, multiple quantization matrices are sometimes used corresponding to frequency transform sizes such as 4×4 and 8×8, prediction modes such as intra-frame prediction and inter-frame prediction, and pixel components such as brightness and color difference. In addition, quantization refers to digitizing values ​​sampled at specified intervals in correspondence with specified levels. In this technical field, other expressions such as rounding, rounding, and scaling can also be used for reference, and rounding, rounding, and scaling can also be used. The specified intervals and levels can also be predetermined.

[0218] As a method of using a quantization matrix, there are a method of using a quantization matrix directly set on the encoding device side and a method of using a default quantization matrix (default matrix). On the encoding device side, by directly setting the quantization matrix, a quantization matrix corresponding to the characteristics of the image can be set. However, in this case, there is a disadvantage that the encoding amount increases due to the encoding of the quantization matrix.

[0219] On the other hand, there is also a method of performing quantization so that the coefficients of high-frequency components and low-frequency components are the same without using a quantization matrix. This method is equivalent to a method of using a quantization matrix (flat matrix) in which all coefficients have the same value.

[0220] The quantization matrix can be specified by, for example, an SPS (Sequence Parameter Set) or a PPS (Picture Parameter Set). The SPS contains parameters used for a sequence, and the PPS contains parameters used for a picture. The SPS and PPS are sometimes referred to as parameter sets.

[0221] [Entropy coding unit]

[0222] The entropy coding unit 110 generates a coded signal (coded bit stream) based on the quantization coefficient input from the quantization unit 108. Specifically, the entropy coding unit 110 binarizes the quantization coefficient, performs arithmetic coding on the binary signal, and outputs a compressed bit stream or sequence.

[0223] [Inverse Quantization Unit]

[0224] The inverse quantization unit 112 inversely quantizes the quantized coefficients input from the quantization unit 108. Specifically, the inverse quantization unit 112 inversely quantizes the quantized coefficients of the current block in a predetermined scanning order. Furthermore, the inverse quantization unit 112 outputs the inversely quantized transform coefficients of the current block to the inverse transform unit 114. The predetermined scanning order may also be predetermined.

[0225] [Inverse transformation unit]

[0226] The inverse transform unit 114 restores the prediction error (residual) by inverse transforming the transform coefficients 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 corresponding to the transform performed by the transform unit 106 on the transform coefficients. Then, the inverse transform unit 114 outputs the restored prediction error to the addition unit 116.

[0227] In addition, the restored prediction error usually loses information due to quantization, and therefore does not match the prediction error calculated by the subtraction unit 104. In other words, the restored prediction error usually includes a quantization error.

[0228] [Addition Department]

[0229] The adder 116 reconstructs the current block by adding the prediction error input from the inverse transform unit 114 and the prediction sample input from the prediction control unit 128. Then, the adder 116 outputs the reconstructed block to the block memory 118 and the loop filter unit 120. The reconstructed block is sometimes called a local decoding block.

[0230] [Block Memory]

[0231] The block memory 118 is a storage unit for storing blocks in a picture to be coded (referred to as a current picture) to be referred to in intra prediction, for example. Specifically, the block memory 118 stores the reconstructed blocks output from the adder 116 .

[0232] [Frame Memory]

[0233] The frame memory 122 is a storage unit for storing reference pictures used in inter-frame prediction, and is sometimes referred to as a frame buffer. Specifically, the frame memory 122 stores the reconstructed blocks filtered by the loop filter unit 120 .

[0234] [Loop filter section]

[0235] The loop filter unit 120 performs loop filtering on the block reconstructed by the adder unit 116, and outputs the filtered reconstructed block to the frame memory 122. Loop filtering refers to filtering used within a coding loop (in-loop filtering), such as deblocking filtering (DF or DBF), sample adaptive offset (SAO), and adaptive loop filtering (ALF).

[0236] In ALF, a least square error filter is used to remove coding distortion. For example, for each 2×2 sub-block in the current block, one filter is selected from a plurality of filters based on the direction and activity of the local gradient.

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

[0238] The gradient direction value D is derived, for example, by comparing gradients in multiple directions (eg, horizontal, vertical, and two diagonal directions). In addition, the gradient activity value A is derived, for example, by adding the gradients in multiple directions and quantizing the added result.

[0239] Based on the result of such classification, a filter to be used for a sub-block is determined from among a plurality of filters.

[0240] As the shape of the filter used in the ALF, for example, a circularly symmetric shape is used. Figure 6A to Figure 6C The diagrams show a plurality of examples of filter shapes used in ALF. Fig. 6Arepresents a 5×5 diamond-shaped filter, Figure 6B represents a 7×7 diamond shape filter, Figure 6C Represents a 9×9 diamond shape filter. The information representing the shape of the filter is usually signaled at the picture level. In addition, the signaling of the information representing the shape of the filter does not need to be limited to the picture level, and can also be other levels (for example, sequence level, slice level, tile level, CTU level or CU level).

[0241] The on / off of ALF can also be determined at the picture level or CU level. For example, regarding brightness, whether to use ALF can be determined at the CU level, and regarding color difference, whether to use ALF can be determined at the picture level. Information indicating whether ALF is on / off is usually signaled at the picture level or CU level. In addition, the signaling of information indicating whether ALF is on / off does not need to be limited to the picture level or CU level, and can also be other levels (for example, sequence level, slice level, tile level, or CTU level).

[0242] The coefficient sets of the selectable multiple filters (e.g., filters up to 15 or 25) are usually signaled at the picture level. In addition, the signaling of the coefficient set does not need to be limited to the picture level, and can also be other levels (e.g., sequence level, slice level, tile level, CTU level, CU level, or sub-block level).

[0243] [Loop filter section > Deblocking filter]

[0244] In the deblocking filter, the loop filter unit 120 performs filtering processing on block boundaries of the reconstructed image to reduce distortion generated at the block boundaries.

[0245] Figure 7 1 is a block diagram showing an example of a detailed configuration of the loop filter unit 120 that functions as a deblocking filter.

[0246] The loop filter unit 120 includes a boundary determination unit 1201 , a filter determination unit 1203 , a filter processing unit 1205 , a processing determination unit 1208 , a filter characteristic determination unit 1207 , and switches 1202 , 1204 , and 1206 .

[0247] The boundary determination unit 1201 determines whether there is a pixel (ie, a target pixel) to be subjected to the deblocking filtering process near the block boundary, and then outputs the determination result to the switch 1202 and the process determination unit 1208 .

[0248] When the boundary determination unit 1201 determines that the target pixel exists near the block boundary, the switch 1202 outputs the image before filtering to the switch 1204. On the other hand, when the boundary determination unit 1201 determines that the target pixel does not exist near the block boundary, the switch 1202 outputs the image before filtering to the switch 1206.

[0249] The filter determination unit 1203 determines whether to perform deblocking filtering on the target pixel based on the pixel value of at least one surrounding pixel located around the target pixel, and then outputs the determination result to the switch 1204 and the processing determination unit 1208 .

[0250] When the filter determination unit 1203 determines that the deblocking filter process is to be performed on the target pixel, the switch 1204 outputs the image before the filtering process obtained via the switch 1202 to the filtering process unit 1205. On the contrary, when the filter determination unit 1203 determines that the deblocking filter process is not to be performed on the target pixel, the switch 1204 outputs the image before the filtering process obtained via the switch 1202 to the switch 1206.

[0251] When the image before filtering is obtained via switches 1202 and 1204 , the filter processing unit 1205 performs a deblocking filter process on the target pixel using the filter characteristics determined by the filter characteristic determination unit 1207 . Then, the filter processing unit 1205 outputs the filtered pixel to the switch 1206 .

[0252] According to the control of the processing determination unit 1208 , the switch 1206 selectively outputs pixels that have not been processed by the deblocking filter and pixels that have been processed by the deblocking filter by the filter processing unit 1205 .

[0253] The processing determination unit 1208 controls the switch 1206 based on the respective determination results of the boundary determination unit 1201 and the filter determination unit 1203. That is, when the boundary determination unit 1201 determines that the target pixel exists near the block boundary and the filter determination unit 1203 determines that the deblocking filter process is performed on the target pixel, the processing determination unit 1208 outputs the pixel after the deblocking filter process from the switch 1206. In addition, in cases other than the above, the processing determination unit 1208 outputs the pixel that has not been deblocked / filtered from the switch 1206. By repeatedly outputting such pixels, the image after the filtering process is output from the switch 1206.

[0254] Figure 8 This is a conceptual diagram showing an example of a deblocking filter having a filter characteristic that is symmetric with respect to a block boundary.

[0255] In the deblocking filter processing, for example, using the pixel value and the quantization parameter, one of two deblocking filters with different characteristics, that is, a strong filter and a weak filter, is selected. Figure 8 As shown, when pixels p0 to p2 and pixels q0 to q2 exist across a block boundary, the pixel values ​​of pixels q0 to q2 are changed to pixel values ​​q'0 to q'2 by performing calculations shown in the following equations, for example.

[0256] q'0=(p1+2×p0+2×q0+2×q1+q2+4) / 8

[0257] q'1=(p0+q0+q1+q2+2) / 4

[0258] q'2=(p0+q0+q1+3×q2+2×q3+4) / 8

[0259] In the above equations, p0 to p2 and q0 to q2 are pixel values ​​of pixels p0 to p2 and pixels q0 to q2, respectively. In addition, q3 is the pixel value of pixel q3 adjacent to pixel q2 on the side opposite to the block boundary. In addition, on the right side of each of the above equations, the coefficient multiplied by the pixel value of each pixel used in the deblocking filter processing is the filter coefficient.

[0260] Furthermore, in the deblocking filter process, a clipping process may be performed in a manner that the pixel value after the operation does not exceed a threshold value. In the clipping process, the pixel value after the operation based on the above formula is clipped to "the pixel value of the operation object ± 2 × the threshold value" using a threshold value determined according to the quantization parameter. This can prevent excessive smoothing.

[0261] Fig. 9 This is a conceptual diagram for explaining the block boundary on which the deblocking filtering process is performed. Fig.10 This is a conceptual diagram showing an example of the Bs value.

[0262] The block boundary for deblocking filtering is, for example, Fig. 9 The PU (Prediction Unit) or TU (Transform Unit) boundary of the 8×8 pixel block shown. Deblocking filtering can be performed in units of 4 rows or 4 columns. First, for Fig. 9 The block P and block Q shown are as follows: Fig.10 That determines the Bs (Boundary Strength) value.

[0263] according to Fig.10The Bs value determines whether to perform deblocking filtering of different strengths even at block boundaries belonging to the same image. When the Bs value is 2, deblocking filtering is performed on the color difference signal. When the Bs value is 1 or more and meets the specified conditions, deblocking filtering is performed on the brightness signal. The specified conditions can also be predetermined. In addition, the determination condition of the Bs value is not limited to Fig.10 The conditions shown may also be determined based on other parameters.

[0264] [Prediction processing unit (intra-frame prediction unit / inter-frame prediction unit / prediction control unit)]

[0265] Fig.11 1 is a flowchart showing an example of processing performed by the prediction processing unit of the encoding device 100. The prediction processing unit is composed of all or part of the components of the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128.

[0266] The prediction processing unit generates a prediction image of the current block (step Sb_1). The prediction image is also called a prediction signal or a prediction block. In addition, the prediction signal includes, for example, an intra-frame prediction signal or an inter-frame prediction signal. Specifically, the prediction processing unit generates a prediction image of the current block using a reconstructed image obtained by generating a prediction block, generating a difference block, generating a coefficient block, restoring a difference block, and generating a decoded image block.

[0267] The reconstructed image may be, for example, an image of a reference picture, or may be a picture including the current block, that is, an image of an encoded block in the current picture. The encoded block in the current picture may be, for example, an adjacent block of the current block.

[0268] Fig.12 This is a flowchart showing another example of the processing performed by the prediction processing unit of the encoding device 100.

[0269] The prediction processing unit generates a prediction image by the first method (step Sc_1a), generates a prediction image by the second method (step Sc_1b), and generates a prediction image by the third method (step Sc_1c). The first method, the second method, and the third method are different methods for generating prediction images, and may be, for example, an inter-frame prediction method, an intra-frame prediction method, and other prediction methods. In such a prediction method, the above-mentioned reconstructed image may also be used.

[0270] Next, the prediction processing unit selects any one of the multiple prediction images generated in steps Sc_1a, Sc_1b and Sc_1c (step Sc_2). The selection of the prediction image, that is, the selection of the method or mode for obtaining the final prediction image, may also be performed by calculating the cost for each prediction image generated and based on the cost. In addition, the selection of the prediction image may be performed based on the parameters used for the encoding process. The encoding device 100 may signal information for determining the selected prediction image, method or mode as a coded signal (also referred to as a coded bit stream). The information may be, for example, a flag, etc. Thus, the decoding device can generate a prediction image in accordance with the method or mode selected in the encoding device 100 based on the information. In addition, in Fig.12 In the example shown, the prediction processing unit selects any one of the prediction images after generating the prediction images by each method. However, before generating these prediction images, the prediction processing unit can select a method or mode based on the parameters used for the above-mentioned encoding process, and can generate the prediction image according to the method or mode.

[0271] For example, the first method and the second method are intra prediction and inter prediction, respectively, and the prediction processing unit may select a final prediction image for the current block from prediction images generated according to these prediction methods.

[0272] Fig.13 This is a flowchart showing another example of the processing performed by the prediction processing unit of the encoding device 100.

[0273] First, the prediction processing unit generates a prediction image by intra prediction (step Sd_1a), and generates a prediction image by inter prediction (step Sd_1b). In addition, the prediction image generated by intra prediction is also called intra prediction image, and the prediction image generated by inter prediction is also called inter prediction image.

[0274] Next, the prediction processing unit evaluates each of the intra-frame prediction image and the inter-frame prediction image (step Sd_2). The cost can also be used in this evaluation. That is, the prediction processing unit calculates the cost C of each of the intra-frame prediction image and the inter-frame prediction image. The cost C can be calculated by an equation of the RD optimization model, such as C=D+λ×R. In this equation, D is the coding distortion of the predicted image, and is represented by, for example, the absolute value of the difference between the pixel value of the current block and the pixel value of the predicted image. In addition, R is the amount of code generated for the predicted image, specifically, the amount of code required for encoding motion information, etc. for generating the predicted image. In addition, λ is, for example, an undetermined multiplier of Lagrange.

[0275] Then, the prediction processing unit selects the prediction image with the minimum cost C calculated from the intra prediction image and the inter prediction image as the final prediction image of the current block (step Sd3). That is, the prediction method or mode for generating the prediction image of the current block is selected.

[0276] [Intra-frame prediction unit]

[0277] The intra prediction unit 124 performs intra prediction (also referred to as intra-screen prediction) of the current block with reference to the block in the current picture stored in the block memory 118, thereby generating a prediction signal (intra prediction signal). Specifically, the intra prediction unit 124 generates the intra prediction signal by performing intra prediction with reference to samples (e.g., brightness values ​​and color difference values) of blocks adjacent to the current block, and outputs the intra prediction signal to the prediction control unit 128.

[0278] For example, the intra prediction unit 124 performs intra prediction using one of a plurality of predetermined intra prediction modes. The plurality of intra prediction modes generally include one or more non-directional prediction modes and a plurality of directional prediction modes. The plurality of predetermined modes may also be determined in advance.

[0279] The one or more non-directional prediction modes include, for example, a Planar prediction mode and a DC prediction mode defined in the H.265 / HEVC standard.

[0280] The plurality of directional prediction modes include, for example, 33 directional prediction modes defined by the H.265 / HEVC standard. In addition, the plurality of directional prediction modes may include 32 directional prediction modes in addition to the 33 directional prediction modes (a total of 65 directional prediction modes). Fig.14 This is a conceptual diagram showing all 67 intra prediction modes (2 non-directional prediction modes and 65 directional prediction modes) that can be used in intra prediction. Solid arrows indicate 33 directions specified by the H.265 / HEVC specification, and dotted arrows indicate 32 additional directions (2 non-directional prediction modes in the H.265 / HEVC specification). Fig.14 (not shown in the figure).

[0281] In various processing examples, the luminance block may be referenced in the intra prediction of the chrominance block. That is, the chrominance component of the current block may be predicted based on the luminance component of the current block. Such intra prediction is called CCLM (cross-component linear model) prediction. Such an intra prediction mode of the chrominance block with reference to the luminance block (for example, CCLM mode) may be added as one of the intra prediction modes of the chrominance block.

[0282] The intra prediction unit 124 may also modify the pixel value after intra prediction based on the gradient of the reference pixel in the horizontal / vertical direction. Intra prediction accompanied by such modification is called PDPC (position dependent intraprediction combination). Information indicating whether PDPC is used (e.g., called a PDPC flag) is usually signaled at the CU level. In addition, the signaling of this information does not need to be limited to the CU level, but may also be other levels (e.g., sequence level, picture level, slice level, tile level, or CTU level).

[0283] [Inter-frame prediction unit]

[0284] The inter-frame prediction unit 126 performs inter-frame prediction (also called inter-screen prediction) of the current block with reference to a reference picture different from the current picture stored in the frame memory 122, thereby generating a prediction signal (inter-frame prediction signal). Inter-frame prediction is performed in units of the current block or the current sub-block (e.g., 4×4 block) in the current block. For example, the inter-frame prediction unit 126 performs motion search (motion estimation) in the reference picture for the current block or the current sub-block, and searches for the reference block or sub-block that is most consistent with the current block or the current sub-block. In addition, the inter-frame prediction unit 126 obtains motion information (e.g., motion vector) for compensating for the motion or change from the reference block or sub-block to the current block or sub-block. The inter-frame prediction unit 126 performs motion compensation (or motion prediction) based on the motion information, thereby generating an inter-frame prediction signal for the current block or sub-block. In addition, the inter-frame prediction unit 126 outputs the generated inter-frame prediction signal to the prediction control unit 128.

[0285] The motion information used in motion compensation is signaled as an inter-frame prediction signal in various forms. For example, a motion vector may be signaled. As another example, the difference between a motion vector and a predicted motion vector (motion vector predictor) may be signaled.

[0286] [Basic process of inter-frame prediction]

[0287] Fig.15 This is a flowchart showing an example of a basic flow of inter-frame prediction.

[0288] The inter prediction unit 126 first generates a predicted image (steps Se_1 to Se_3). Next, the subtraction unit 104 generates a difference between the current block and the predicted image as a prediction residual (step Se_4).

[0289] Here, in the generation of the predicted image, the inter-frame prediction unit 126 generates the predicted image by determining the motion vector (MV) of the current block (steps Se_1 and Se_2) and performing motion compensation (step Se_3). In addition, in the determination of the MV, the inter-frame prediction unit 126 determines the MV by selecting a candidate motion vector (candidate MV) (step Se_1) and deriving the MV (step Se_2). The selection of the candidate MV is performed, for example, by selecting at least one candidate MV from a candidate MV list. In addition, in the derivation of the MV, the inter-frame prediction unit 126 may further select at least one candidate MV from the at least one candidate MV and determine the selected at least one candidate MV as the MV of the current block. Alternatively, the inter-frame prediction unit 126 may determine the MV of the current block by searching the area of ​​the reference picture indicated by the candidate MV for each of the selected at least one candidate MV. In addition, the action of searching the area of ​​the reference picture may also be referred to as motion estimation.

[0290] In the above example, steps Se_1 to Se_3 are performed by the inter-frame prediction unit 126 , but processing such as step Se_1 or step Se_2 may be performed by other components included in the encoding device 100 .

[0291] [Flow of deriving motion vectors]

[0292] Fig.16 This is a flowchart showing an example of motion vector derivation.

[0293] The inter-frame prediction unit 126 derives the MV of the current block in a mode of encoding motion information (e.g., MV). In this case, for example, the motion information is encoded as a prediction parameter and is signaled. That is, the encoded motion information is included in the encoded signal (also referred to as an encoded bit stream).

[0294] Alternatively, the inter prediction unit 126 derives the MV in a mode in which the motion information is not encoded. In this case, the motion information is not included in the encoded signal.

[0295] Here, the modes for deriving the MV may also include the normal inter mode, merge mode, FRUC mode, and affine mode described later. Among these modes, the modes for encoding motion information include the normal inter mode, merge mode, and affine mode (specifically, affine inter mode and affine merge mode). In addition, the motion information may include not only the MV but also the predicted motion vector selection information described later. In addition, the modes for not encoding the motion information include the FRUC mode, etc. The inter prediction unit 126 selects a mode for deriving the MV of the current block from these multiple modes, and derives the MV of the current block using the selected mode.

[0296] Fig.17 This is a flowchart showing another example of motion vector derivation.

[0297] The inter-frame prediction unit 126 derives the MV of the current block in a mode of encoding the differential MV. In this case, for example, the differential MV is encoded as a prediction parameter and is signaled. That is, the encoded differential MV is included in the encoded signal. The differential MV is the difference between the MV of the current block and its predicted MV.

[0298] Alternatively, the inter-frame prediction unit 126 derives the MV in a mode in which the difference MV is not encoded. In this case, the encoded difference MV is not included in the encoded signal.

[0299] Here, as described above, the MV derivation modes include the normal inter mode, merge mode, FRUC mode, and affine mode described later. Among these modes, the modes for encoding the differential MV include the normal inter mode and the affine mode (specifically, the affine inter mode). In addition, the modes for not encoding the differential MV include the FRUC mode, the merge mode, and the affine mode (specifically, the affine merge mode). The inter prediction unit 126 selects a mode for deriving the MV of the current block from these multiple modes, and derives the MV of the current block using the selected mode.

[0300] [Flow of deriving motion vectors]

[0301] Fig.18 This is a flowchart showing another example of motion vector derivation. There are multiple modes for MV derivation, i.e., inter-frame prediction modes, which are roughly divided into a mode for encoding the differential MV and a mode for not encoding the differential motion vector. The modes for not encoding the differential MV include the merge mode, the FRUC mode, and the affine mode (specifically, the affine merge mode). The details of these modes will be described later. In short, the merge mode is a mode for deriving the MV of the current block by selecting a motion vector from the surrounding coded blocks, and the FRUC mode is a mode for deriving the MV of the current block by searching between coded areas. In addition, the affine mode is a mode for deriving the motion vectors of each of the multiple sub-blocks constituting the current block as the MV of the current block assuming an affine transformation.

[0302] Specifically, as shown in the figure, when the inter-frame prediction mode information indicates 0 (0 in Sf_1), the inter-frame prediction unit 126 derives a motion vector (Sf_2) based on the merge mode. In addition, when the inter-frame prediction mode information indicates 1 (1 in Sf_1), the inter-frame prediction unit 126 derives a motion vector (Sf_3) according to the FRUC mode. In addition, when the inter-frame prediction mode information indicates 2 (2 in Sf_1), the inter-frame prediction unit 126 derives a motion vector (Sf_4) according to the affine mode (specifically, the affine merge mode). In addition, when the inter-frame prediction mode information indicates 3 (3 in Sf_1), the inter-frame prediction unit 126 derives a motion vector (Sf_5) according to the mode for encoding the differential MV (for example, the normal inter-frame mode).

[0303] [MV export > Normal interframe mode]

[0304] The normal inter mode is an inter prediction mode based on deriving the MV of the current block from a block similar to the image of the current block in an area of ​​the reference picture indicated by the candidate MV. In addition, in this normal inter mode, the differential MV is encoded.

[0305] Fig.19 is a flowchart showing an example of inter-frame prediction based on the normal inter-frame mode.

[0306] First, the inter prediction unit 126 obtains a plurality of candidate MVs for the current block based on information such as MVs of a plurality of coded blocks temporally or spatially located around the current block (step Sg_1). That is, the inter prediction unit 126 creates a candidate MV list.

[0307] Next, the inter-frame prediction unit 126 extracts N (N is an integer greater than or equal to 2) candidate MVs from the multiple candidate MVs obtained in step Sg_1 as predicted motion vector candidates (also referred to as predicted MV candidates) in a predetermined priority order (step Sg_2). In addition, the priority order may be predetermined for each of the N candidate MVs.

[0308] Next, the inter-frame prediction unit 126 selects one prediction motion vector candidate from the N prediction motion vector candidates as the prediction motion vector (also referred to as prediction MV) of the current block (step Sg_3). At this time, the inter-frame prediction unit 126 encodes prediction motion vector selection information for identifying the selected prediction motion vector into the stream. In addition, the stream is the above-mentioned coded signal or coded bit stream.

[0309] Next, the inter-frame prediction unit 126 refers to the coded reference picture and derives the MV of the current block (step Sg_4). At this time, the inter-frame prediction unit 126 also encodes the difference between the derived MV and the predicted motion vector as a difference MV to the stream. In addition, the coded reference picture is a picture composed of multiple blocks reconstructed after encoding.

[0310] Finally, the inter-frame prediction unit 126 generates a predicted image of the current block by performing motion compensation on the current block using the derived MV and the encoded reference picture (step Sg_5). Note that the predicted image is the above-mentioned inter-frame prediction signal.

[0311] Furthermore, information indicating the inter prediction mode (in the above example, the normal inter mode) used in generating the predicted image contained in the encoded signal is encoded as, for example, a prediction parameter.

[0312] In addition, the candidate MV list can also be used together with the list used in other modes. In addition, the processing related to the candidate MV list can be applied to the processing related to the list used in other modes. The processing related to the candidate MV list is, for example, extracting or selecting candidate MVs from the candidate MV list, rearranging candidate MVs, or deleting candidate MVs.

[0313] [MV Export > Merge Mode]

[0314] The merge mode is an inter-frame prediction mode that derives a candidate MV from a candidate MV list as the MV of the current block.

[0315] Fig. 20 is a flowchart showing an example of inter-frame prediction based on merge mode.

[0316] First, the inter prediction unit 126 obtains a plurality of candidate MVs for the current block based on information on a plurality of coded block MVs located around the current block in time or space (step Sh_1). That is, the inter prediction unit 126 creates a candidate MV list.

[0317] Next, the inter prediction unit 126 selects one candidate MV from the plurality of candidate MVs acquired in step Sh_1 to derive the MV of the current block (step Sh_2). At this time, the inter prediction unit 126 encodes MV selection information for identifying the selected candidate MV into the stream.

[0318] Finally, the inter-frame prediction unit 126 generates a predicted image of the current block by performing motion compensation on the current block using the derived MV and the encoded reference picture (step Sh_3).

[0319] Furthermore, information indicating the inter prediction mode (in the above example, the merge mode) used in generating the predicted image contained in the encoded signal is encoded as, for example, a prediction parameter.

[0320] Fig.21 This is a conceptual diagram for explaining an example of motion vector derivation processing of the current picture based on the merge mode.

[0321] First, a prediction MV list is generated in which candidates for prediction MVs are registered. Candidates for prediction MVs include: spatial neighbor prediction MVs, which are MVs of multiple coded blocks located in the spatial periphery of the object block; temporal neighbor prediction MVs, which are MVs of blocks near the position of the object block in the coded reference picture that are projected; combined prediction MVs, which are MVs generated by combining the MV values ​​of the spatial neighbor prediction MV and the temporal neighbor prediction MV; and zero prediction MVs, which are MVs with a value of zero, etc.

[0322] Next, one predicted MV is selected from a plurality of predicted MVs registered in the predicted MV list to determine the MV of the target block.

[0323] Then, in the variable length coding unit, merge_idx, which is a signal indicating which predicted MV is selected, is described in the stream and coded.

[0324] In addition, Fig.21 The predicted MVs registered in the predicted MV list described in the figure are just examples, and may be a number different from that in the figure, or a structure that does not include some types of predicted MVs in the figure, or a structure that adds predicted MVs other than the types of predicted MVs in the figure.

[0325] The final MV may be determined by performing a DMVR (decoder motion vector refinement) process described later using the MV of the target block derived by the merge mode.

[0326] In addition, the candidate of the predicted MV is the candidate MV mentioned above, and the predicted MV list is the candidate MV list mentioned above. In addition, the candidate MV list can also be called a candidate list. In addition, merge_idx is MV selection information.

[0327] [MV Export > FRUC Mode]

[0328] The motion information may also be derived on the decoding device side instead of being signaled on the encoding device side. In addition, as described above, a merge mode specified by the H.265 / HEVC specification may also be used. In addition, for example, the motion information may also be derived by performing a motion search on the decoding device side. In an embodiment, the motion search is performed on the decoding device side without using the pixel value of the current block.

[0329] Here, a mode for performing motion estimation on the decoding device side is described. The mode for performing motion estimation on the decoding device side is called PMMVD (pattern matched motion vector derivation) mode or FRUC (frame rate up-conversion) mode.

[0330] In the form of a flow chart Fig. 22 An example of FRUC processing is shown in FIG. First, with reference to the motion vectors of the coded blocks that are spatially or temporally adjacent to the current block, a list of multiple candidates each having a predicted motion vector (MV) is generated (that is, a candidate MV list, which can also be shared with a merge list) (step Si_1). Next, the best candidate MV is selected from the multiple candidate MVs registered in the candidate MV list (step Si_2). For example, the evaluation value of each candidate MV included in the candidate MV list is calculated, and one candidate is selected based on the evaluation value. And, based on the motion vector of the selected candidate, the motion vector for the current block is derived (step Si_4). Specifically, for example, the motion vector of the selected candidate (the best candidate MV) is derived as it is as the motion vector for the current block. In addition, for example, the motion vector for the current block can also be derived by performing pattern matching in the surrounding area of ​​the position in the reference picture corresponding to the motion vector of the selected candidate. That is, the surrounding area of ​​the best candidate MV can also be searched by using pattern matching and evaluation values ​​in the reference picture. When there is an MV with a better evaluation value, the best candidate MV is updated to the above MV and used as the final MV of the current block. A configuration may be adopted in which the process of updating to an MV having a better evaluation value is not performed.

[0331] Finally, the inter-frame prediction unit 126 generates a predicted image of the current block by performing motion compensation on the current block using the derived MV and the encoded reference picture (step Si_5).

[0332] Completely the same processing can be performed even when processing is performed in sub-block units.

[0333] The evaluation value may also be calculated by various methods. For example, a reconstructed image of a region in a reference picture corresponding to a motion vector is compared with a reconstructed image of a predetermined region (for example, as shown below, the region may be a region of another reference picture or a region of an adjacent block of the current picture). The predetermined region may also be predetermined.

[0334] Then, the difference between the pixel values ​​of the two reconstructed images may be calculated and used for the evaluation value of the motion vector. Alternatively, the evaluation value may be calculated using other information in addition to the difference value.

[0335] Next, an example of pattern matching is described in detail. First, a candidate MV included in a candidate MV list (e.g., a merge list) is selected as a starting point for a search based on pattern matching. For example, as pattern matching, a first pattern matching or a second pattern matching can be used. The first pattern matching and the second pattern matching are respectively called bilateral matching and template matching.

[0336] [MV Export > FRUC > Bidirectional Matching]

[0337] In the first pattern matching, pattern matching is performed between two blocks along the motion trajectory of the current block in two different reference pictures. Therefore, in the first pattern matching, as the prescribed area for calculating the candidate evaluation value, an area in another reference picture along the motion trajectory of the current block is used. The prescribed area may also be predetermined.

[0338] Fig.23 : is a conceptual diagram for explaining an example of the first pattern matching (bidirectional matching) between two blocks in two reference pictures along the motion trajectory. Fig.23 As shown, in the first pattern matching, two motion vectors (MV0, MV1) are derived by searching for the best matching pair among the pairs of two blocks in two different reference pictures (Ref0, Ref1) along the motion trajectory of the current block (Cur block). Specifically, for the current block, the difference between the reconstructed image at a specified position in the first coded reference picture (Ref0) specified by the candidate MV and the reconstructed image at a specified position in the second coded reference picture (Ref1) specified by the symmetric MV after scaling the candidate MV with the display time interval is derived, and the evaluation value is calculated using the obtained difference value. The candidate MV with the best evaluation value can be selected as the final MV from among multiple candidate MVs, and good results can be obtained.

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

[0340] [MV Export > FRUC > Template Matching]

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

[0342] Fig.24 : is a conceptual diagram for explaining an example of pattern matching (template matching) between a template in a current picture and a block in a reference picture. Fig.24 As shown, in the second pattern matching, the motion vector of the current block is derived by searching the reference picture (Ref0) for the block that best matches the block adjacent to the current block (Cur block) in the current picture (Cur Pic). Specifically, for the current block, the difference between the reconstructed image of the coded area of ​​both or one of the left adjacent and upper adjacent areas and the reconstructed image at the same position in the coded reference picture (Ref0) specified by the candidate MV is derived, and the evaluation value is calculated using the obtained difference value, so that the candidate MV with the best evaluation value can be selected as the best candidate MV among multiple candidate MVs.

[0343] Such information indicating whether the FRUC mode is adopted (for example, called a FRUC flag) is signaled at the CU level. In addition, when the FRUC mode is adopted (for example, when the FRUC flag is true), information indicating the method of pattern matching that can be adopted (first pattern matching or second pattern matching) is signaled at the CU level. In addition, the signaling of this information does not need to be limited to the CU level, and can also be other levels (for example, sequence level, picture level, slice level, tile level, CTU level or sub-block level).

[0344] [MV Export > Affine Mode]

[0345] Next, the affine mode for deriving a motion vector in sub-block units based on motion vectors of a plurality of adjacent blocks will be described. This mode is sometimes referred to as an affine motion compensation prediction mode.

[0346] Fig.25A 1 is a conceptual diagram for explaining an example of deriving a motion vector in sub-block units based on motion vectors of a plurality of adjacent blocks. Fig.25A In the example, the current block includes 16 4×4 sub-blocks. Here, the motion vector v0 of the upper left corner control point of the current block is derived based on the motion vectors of the adjacent blocks. Similarly, the motion vector v1 of the upper right corner control point of the current block is derived based on the motion vectors of the adjacent sub-blocks. Then, according to the following formula (1A), the two motion vectors v0 and v1 can be projected, and the motion vectors (v x , v y ).

[0347]

Formula 1

[0348]

[0349] Here, x and y represent the horizontal position and vertical position of the sub-block, respectively, and w represents a predetermined weight coefficient. The predetermined weight coefficient may also be determined in advance.

[0350] The information indicating such an affine mode (e.g., called an affine flag) may be signaled as a CU-level signal. In addition, the signaling of the information indicating the affine mode need not be limited to the CU-level, but may be other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or sub-block level).

[0351] In addition, such an affine mode may include several modes in which the motion vectors of the upper left and upper right control points are derived in different ways. For example, the affine mode includes two modes: the affine inter-frame (also called affine normal inter-frame) mode and the affine merge mode.

[0352] [MV Export > Affine Mode]

[0353] Fig.25B : is a conceptual diagram for explaining an example of derivation of motion vectors in sub-block units in an affine mode having three control points. Fig.25BIn the example, the current block includes 16 4×4 sub-blocks. Here, the motion vector v0 of the upper left corner control point of the current block is derived based on the motion vector of the adjacent block. Similarly, the motion vector v1 of the upper right corner control point of the current block is derived based on the motion vector of the adjacent block, and the motion vector v2 of the lower left corner control point of the current block is derived based on the motion vector of the adjacent block. Then, according to the following formula (1B), the three motion vectors v0, v1 and v2 can be projected, and the motion vectors (v x , v y ).

[0354]

Formula 2

[0355]

[0356] Here, x and y represent the horizontal position and vertical position of the center of the sub-block, respectively, w represents the width of the current block, and h represents the height of the current block.

[0357] Affine modes with different numbers of control points (e.g., 2 and 3) may also be switched and signaled at the CU level. In addition, information indicating the number of control points of the affine mode used at the CU level may also be signaled at other levels (e.g., sequence level, picture level, slice level, tile level, CTU level, or sub-block level).

[0358] In addition, in such an affine mode with three control points, several modes with different methods of deriving motion vectors of the upper left, upper right and lower left control points may be included. For example, in the affine mode, there are two modes, namely, the affine inter-frame (also called affine normal inter-frame) mode and the affine merge mode.

[0359] [MV Export > Affine Merge Mode]

[0360] Fig.26A , Fig.26B and Fig.26C This is a conceptual diagram for explaining the affine merge mode.

[0361] In affine merge mode, such as Fig.26A As shown, for example, based on a plurality of motion vectors corresponding to blocks encoded in an affine mode among the encoded blocks A (left), B (upper), C (upper right), D (lower left), and E (upper left) adjacent to the current block, the predicted motion vector of each of the control points of the current block is calculated. Specifically, the encoded blocks A (left), B (upper), C (upper right), D (lower left), and E (upper left) are checked in this order to determine the first valid block encoded in the affine mode. The predicted motion vectors of the control points of the current block are calculated based on the plurality of motion vectors corresponding to the determined blocks.

[0362] For example, Fig.26B As shown in FIG. 1 , when a block A adjacent to the left side of the current block is encoded in an affine mode having two control points, motion vectors v3 and v4 projected to the positions of the upper left corner and the upper right corner of the encoded block including the block A are derived. Then, based on the derived motion vectors v3 and v4, a predicted motion vector v0 of the control point at the upper left corner of the current block and a predicted motion vector v1 of the control point at the upper right corner are calculated.

[0363] For example, Fig.26C As shown in FIG. 1 , when a block A adjacent to the left side of a current block is encoded in an affine mode having three control points, motion vectors v3, v4, and v5 are derived that are projected to the positions of the upper left corner, the upper right corner, and the lower left corner of the encoded block containing block A. Then, based on the derived motion vectors v3, v4, and v5, a predicted motion vector v0 of the control point at the upper left corner, a predicted motion vector v1 of the control point at the upper right corner, and a predicted motion vector v2 of the control point at the lower left corner of the current block are calculated.

[0364] In addition, in the following Fig.29 This predicted motion vector derivation method can also be used in the derivation of the predicted motion vectors of each control point of the current block in step Sj_1.

[0365] Fig. 27 This is a flowchart showing an example of the affine merge mode.

[0366] In the affine merge mode, as shown in the figure, first, the inter-frame prediction unit 126 derives the predicted MV of each control point of the current block (step Sk_1). Fig.25A As shown, it is the upper left and upper right corner points of the current block, or as Fig.25B As shown, these are the points at the upper left corner, upper right corner, and lower left corner of the current block.

[0367] That is to say, Fig.26A As shown, the inter-frame prediction unit 126 checks the encoded blocks A (left), block B (top), block C (top right), block D (bottom left) and block E (top left) in this order, and determines the initial valid block encoded in the affine mode.

[0368] Then, when block A is determined and block A has 2 control points, as Fig.26B As shown, the inter-frame prediction section 126 calculates the motion vector v0 of the control point at the upper left corner and the motion vector v1 of the control point at the upper right corner of the current block based on the motion vectors v3 and v4 of the upper left corner and the upper right corner of the coded block including the block A. For example, by projecting the motion vectors v3 and v4 of the upper left corner and the upper right corner of the coded block to the current block, the inter-frame prediction section 126 calculates the predicted motion vector v0 of the control point at the upper left corner and the predicted motion vector v1 of the control point at the upper right corner of the current block.

[0369] Alternatively, if block A is determined and block A has 3 control points, Fig.26C As shown, the inter-frame prediction unit 126 calculates the motion vector v0 of the control point at the upper left corner, the motion vector v1 of the control point at the upper right corner, and the motion vector v2 of the control point at the lower left corner of the current block based on the motion vectors v3, v4, and v5 of the upper left corner, the upper right corner, and the lower left corner of the coded block including the block A. For example, by projecting the motion vectors v3, v4, and v5 of the upper left corner, the upper right corner, and the lower left corner of the coded block onto the current block, the inter-frame prediction unit 126 calculates the predicted motion vector v0 of the control point at the upper left corner, the predicted motion vector v1 of the control point at the upper right corner, and the motion vector v2 of the control point at the lower left corner of the current block.

[0370] Next, the inter-frame prediction unit 126 performs motion compensation on each of the multiple sub-blocks included in the current block. That is, the inter-frame prediction unit 126 uses two predicted motion vectors v0 and v1 and the above-mentioned formula (1A), or three predicted motion vectors v0, v1 and v2 and the above-mentioned formula (1B) for each of the multiple sub-blocks to calculate the motion vector of the sub-block as an affine MV (step Sk_2). Then, the inter-frame prediction unit 126 uses these affine MVs and the encoded reference picture to perform motion compensation on the sub-block (step Sk_3). As a result, the current block is motion compensated and a predicted image of the current block is generated.

[0371] [MV Export > Affine Inter-frame Mode]

[0372] Fig.28A This is a conceptual diagram for explaining the affine inter-frame mode having two control points.

[0373] In this affine inter-frame mode, if Fig.28A As shown, a motion vector selected from the motion vectors of the coded blocks A, B, and C adjacent to the current block is used as the prediction motion vector v0 of the control point at the upper left corner of the current block. Similarly, a motion vector selected from the motion vectors of the coded blocks D and E adjacent to the current block is used as the prediction motion vector v1 of the control point at the upper right corner of the current block.

[0374] Fig.28B This is a conceptual diagram for explaining the affine inter-frame mode having three control points.

[0375] In this affine inter-frame mode, if Fig.28BAs shown in FIG. 1 , a motion vector selected from the motion vectors of the coded blocks A, B, and C adjacent to the current block is used as the prediction motion vector v0 of the control point at the upper left corner of the current block. Similarly, a motion vector selected from the motion vectors of the coded blocks D and E adjacent to the current block is used as the prediction motion vector v1 of the control point at the upper right corner of the current block. Furthermore, a motion vector selected from the motion vectors of the coded blocks F and G adjacent to the current block is used as the prediction motion vector v2 of the control point at the lower left corner of the current block.

[0376] Fig.29 This is a flowchart showing an example of the affine inter mode.

[0377] As shown in the figure, in the affine inter mode, first, the inter prediction unit 126 derives the predicted MV (v0, v1) or (v0, v1, v2) of each of the two or three control points of the current block (step Sj_1). Fig.25A or Fig.25B As shown, the control point is the point at the upper left corner, upper right corner, or lower left corner of the current block.

[0378] That is, the inter-frame prediction unit 126 selects Fig.28A or Fig.28B The motion vector of a block in the coded blocks near each control point of the current block shown is used to derive the predicted motion vector (v0, v1) or (v0, v1, v2) of the control point of the current block. At this time, the inter-frame prediction unit 126 encodes the predicted motion vector selection information for identifying the two selected motion vectors into the stream.

[0379] For example, the inter-frame prediction unit 126 can determine which block's motion vector to select as the predicted motion vector of the control point from the encoded blocks adjacent to the current block by using cost evaluation, etc., and can record a flag indicating which predicted motion vector is selected in the bit stream.

[0380] Next, the inter-frame prediction unit 126 performs motion search (steps Sj_3 and Sj_4) while updating the predicted motion vector selected or derived in step Sj_1 (step Sj_2). That is, the inter-frame prediction unit 126 uses the motion vector of each sub-block corresponding to the predicted motion vector to be updated as an affine MV, and calculates it using the above-mentioned formula (1A) or formula (1B) (step Sj_3). Then, the inter-frame prediction unit 126 uses these affine MVs and the encoded reference picture to perform motion compensation on each sub-block (step Sj_4). As a result, in the motion search loop, the inter-frame prediction unit 126 determines, for example, the predicted motion vector that can obtain the minimum cost as the motion vector of the control point (step Sj_5). At this time, the inter-frame prediction unit 126 also encodes the difference value between the determined MV and the predicted motion vector as a differential MV into a stream.

[0381] Finally, the inter-frame prediction unit 126 generates a predicted image of the current block by performing motion compensation on the current block using the determined MV and the encoded reference picture (step Sj_6).

[0382] [MV Export > Affine Inter-frame Mode]

[0383] When affine modes with different numbers of control points (for example, 2 and 3) are switched at the CU level for signaling, the number of control points may be different between the coded block and the current block. Fig. 30A as well as Fig. 30B This is a conceptual diagram for explaining a method of deriving a prediction vector of a control point when the number of control points in an already coded block and a current block is different.

[0384] For example, Fig. 30A As shown in FIG. 1 , when the current block has three control points, namely, the upper left corner, the upper right corner, and the lower left corner, and the block A adjacent to the left side of the current block is encoded in an affine mode having two control points, motion vectors v3 and v4 projected to the positions of the upper left corner and the upper right corner of the encoded block including the block A are derived. Then, based on the derived motion vectors v3 and v4, the predicted motion vector v0 of the control point of the upper left corner of the current block and the predicted motion vector v1 of the control point of the upper right corner are calculated. In addition, the predicted motion vector v2 of the control point of the lower left corner is calculated based on the derived motion vectors v0 and v1.

[0385] For example, Fig. 30B As shown in FIG. 1 , when the current block has two control points, namely, the upper left corner and the upper right corner, and the block A adjacent to the left side of the current block is encoded in an affine mode having three control points, motion vectors v3, v4, and v5 projected to the positions of the upper left corner, the upper right corner, and the lower left corner of the encoded block including the block A are derived. Then, based on the derived motion vectors v3, v4, and v5, the predicted motion vector v0 of the control point of the upper left corner of the current block and the predicted motion vector v1 of the control point of the upper right corner are calculated.

[0386] exist Fig.29 This predicted motion vector derivation method can also be used in the derivation of each predicted motion vector of the control point of the current block in step Sj_1.

[0387] [MV Export>DMVR]

[0388] Fig.31A It is a flowchart showing the relationship between the merge mode and DMVR.

[0389] The inter-frame prediction unit 126 derives the motion vector of the current block in the merge mode (step S1_1). Next, the inter-frame prediction unit 126 determines whether to perform a motion vector search, that is, a motion search (step S1_2). Here, when it is determined that the motion search is not to be performed (No in step S1_2), the inter-frame prediction unit 126 determines the motion vector derived in step S1_1 as the final motion vector for the current block (step S1_4). That is, in this case, the motion vector of the current block is determined in the merge mode.

[0390] On the other hand, when it is determined in step S1_1 that motion search is to be performed (Yes in step S1_2), the inter-frame prediction unit 126 derives a final motion vector for the current block by searching the surrounding area of ​​the reference picture represented by the motion vector derived in step S1_1 (step S1_3). That is, in this case, the motion vector of the current block is determined by DMVR.

[0391] Fig.31B This is a conceptual diagram for explaining an example of DMVR processing for determining MV.

[0392] First, the best MVP set for the current block (for example, in merge mode) is set as a candidate MV. Then, according to the candidate MV (L0), the reference pixel is determined from the first reference picture (L0) which is the coded picture in the L0 direction. Similarly, according to the candidate MV (L1), the reference pixel is determined from the second reference picture (L1) which is the coded picture in the L1 direction. The template is generated by taking the average of these reference pixels.

[0393] Next, the above template is used to search the surrounding areas of the candidate MVs of the first reference image (L0) and the second reference image (L1), respectively, and the MV with the minimum cost is determined as the final MV. In addition, the cost value can also be calculated using, for example, the difference between the pixel values ​​of the template and the pixel values ​​of the search area and the candidate MV value.

[0394] In addition, typically, the configuration and operation of the processing described here are basically common in the encoding device and the decoding device described later.

[0395] Even if it is not the processing example described here, any processing can be used as long as it is a processing that can search the vicinity of the candidate MV and derive the final MV.

[0396] [Motion compensation > BIO / OBMC]

[0397] In motion compensation, there is a mode of generating a predicted image and correcting the predicted image. Examples of such modes are BIO and OBMC described below.

[0398] Fig.32This is a flowchart showing an example of generating a predicted image.

[0399] The inter prediction unit 126 generates a predicted image (step Sm_1 ), and corrects the predicted image using, for example, any of the above-described modes (step Sm_2 ).

[0400] Fig.33 This is a flowchart showing another example of generating a predicted image.

[0401] The inter-frame prediction unit 126 determines the motion vector of the current block (step Sn_1). Next, the inter-frame prediction unit 126 generates a predicted image (step Sn_2), and determines whether to perform a correction process (step Sn_3). Here, when it is determined that the correction process is to be performed (yes in step Sn_3), the inter-frame prediction unit 126 generates a final predicted image by correcting the predicted image (step Sn_4). On the other hand, when it is determined that the correction process is not to be performed (no in step Sn_3), the inter-frame prediction unit 126 outputs the predicted image as the final predicted image without correcting the predicted image (step Sn_5).

[0402] In motion compensation, there is a mode for correcting brightness when generating a predicted image. This mode is, for example, LIC which will be described later.

[0403] Fig.34 This is a flowchart showing another example of generating a predicted image.

[0404] The inter-frame prediction unit 126 derives the motion vector of the current block (step So_1). Next, the inter-frame prediction unit 126 determines whether to perform brightness correction processing (step So_2). Here, when it is determined that brightness correction processing is to be performed (yes in step So_2), the inter-frame prediction unit 126 generates a predicted image while performing brightness correction (step So_3). In other words, the predicted image is generated by LIC. On the other hand, when it is determined that brightness correction processing is not to be performed (no in step So_2), the inter-frame prediction unit 126 generates a predicted image by normal motion compensation without performing brightness correction (step So_4).

[0405] [Motion Compensation > OBMC]

[0406] Not only the motion information of the current block obtained by motion search, but also the motion information of the adjacent blocks can be used to generate the inter-frame prediction signal. Specifically, the inter-frame prediction signal can be generated in sub-block units within the current block by weighted addition of the prediction signal based on the motion information obtained by motion search (within the reference picture) and the prediction signal based on the motion information of the adjacent blocks (within the current picture). Such inter-frame prediction (motion compensation) is sometimes called OBMC (overlapped block motion compensation).

[0407] In the OBMC mode, information indicating the size of the sub-block used for OBMC (e.g., OBMC block size) may also be signaled at the sequence level. Furthermore, information indicating whether the OBMC mode is applied (e.g., OBMC flag) may also be signaled at the CU level. In addition, the signaling level of such information need not be limited to the sequence level and the CU level, but may be other levels (e.g., picture level, slice level, tile level, CTU level, or sub-block level).

[0408] An example of the OBMC mode will be described in more detail. Fig.35 and Fig.36 It is a flowchart and a conceptual diagram for explaining the outline of the predicted image correction process based on the OBMC process.

[0409] First, if Fig.36 As shown, the motion vector (MV) assigned to the processing object (current) block is used to obtain the predicted image (Pred) based on the usual motion compensation. Fig.36 In FIG. 1 , the arrow “MV” points to the reference picture and indicates which block the current block of the current picture refers to to obtain a predicted image.

[0410] Next, the motion vector (MV_L) derived for the coded left adjacent block is applied (reused) to the coded target block to obtain a predicted image (Pred_L). The motion vector (MV_L) is represented by an arrow "MV_L" pointing from the current block to the reference picture. Then, the first correction of the predicted image is performed by overlapping the two predicted images Pred and Pred_L. This has the effect of blending the boundaries between adjacent blocks.

[0411] Similarly, the motion vector (MV_U) derived for the encoded upper adjacent block is applied (reused) to the encoding target block to obtain a predicted image (Pred_U). The motion vector (MV_U) is represented by an arrow "MV_U" pointing from the current block to the reference picture. Then, the second correction of the predicted image is performed by superimposing the predicted image Pred_U with the predicted image (for example, Pred and Pred_L) that has been corrected for the first time. This has the effect of blending the boundaries between adjacent blocks. The predicted image obtained by the second correction is the final predicted image of the current block with the boundaries with the adjacent blocks blended (smoothed).

[0412] In addition, the above example is a two-path correction method using left-adjacent and upper-adjacent blocks, but the correction method may also be a three-path correction method or more than three-path correction method using right-adjacent and / or lower-adjacent blocks.

[0413] Furthermore, the region to be overlapped may not be the pixel region of the entire block, but may be only a partial region near the block boundary.

[0414] In addition, the prediction image correction processing of OBMC is described here, which is used to obtain one prediction image Pred by superimposing one reference image with the additional prediction images Pred_L and Pred_U. However, in the case of correcting the prediction image based on multiple reference images, the same processing can be applied to each of the multiple reference images. In this case, after the corrected prediction images are obtained from each reference image by performing image correction of OBMC based on multiple reference images, the final prediction image is obtained by further superimposing the obtained multiple corrected prediction images.

[0415] In OBMC, the unit of the target block may be a prediction block unit or a sub-block unit obtained by further dividing the prediction block.

[0416] As a method for determining whether to apply the OBMC process, there is a method using, for example, obmc_flag, a signal indicating whether the OBMC process is applied. As a specific example, the encoding device may also determine whether the target block belongs to a region with complex motion. When the target block belongs to a region with complex motion, the encoding device sets the value of obmc_flag to 1 and applies the OBMC process to perform encoding. When the target block does not belong to a region with complex motion, the encoding device sets the value of obmc_flag to 0 and does not apply the OBMC process to perform encoding of the block. On the other hand, in the decoding device, by decoding obmc_flag described in the stream (for example, a compressed sequence), whether to apply the OBMC process is switched according to the value to perform decoding.

[0417] In the above example, the inter-frame prediction unit 126 generates one rectangular prediction image for the rectangular current block. However, the inter-frame prediction unit 126 may generate a plurality of prediction images having shapes different from the rectangle for the rectangular current block, and may generate a final rectangular prediction image by combining these plurality of prediction images. The shape different from the rectangle may be, for example, a triangle.

[0418] Fig.37 This is a conceptual diagram for explaining the generation of predicted images of two triangles.

[0419] The inter-frame prediction unit 126 generates a triangular prediction image by performing motion compensation on the first triangular partition in the current block using the first MV of the first partition. Similarly, the inter-frame prediction unit 126 generates a triangular prediction image by performing motion compensation on the second triangular partition in the current block using the second MV of the second partition. Then, the inter-frame prediction unit 126 generates a rectangular prediction image that is the same as the current block by combining these prediction images.

[0420] In addition, Fig.37 In the example shown, the first partition and the second partition are each a triangle, but they may also be a trapezoid or may be different shapes from each other. Fig.37 In the example shown, the current block is composed of 2 partitions, but it can also be composed of 3 or more partitions.

[0421] In addition, the first partition and the second partition may also be repeated. That is, the first partition and the second partition may also include the same pixel region. In this case, the predicted image in the first partition and the predicted image in the second partition may be used to generate the predicted image of the current block.

[0422] In addition, although this example shows an example in which predicted images are generated by inter-frame prediction for both of the two partitions, a predicted image may be generated by intra-frame prediction for at least one partition.

[0423] [Motion compensation>BIO]

[0424] Next, a method for deriving a motion vector will be described. First, a mode for deriving a motion vector based on a model assuming uniform linear motion will be described. This mode is sometimes referred to as a BIO (bidirectional optical flow) mode.

[0425] Fig.38 This is a conceptual diagram used to explain a model that assumes uniform linear motion. Fig.38 In (v x , v y) represents the velocity vector, τ0 and τ1 represent the temporal distance between the current picture (Cur Pic) and the two reference pictures (Ref0, Ref1), respectively. (MVx0, MVy0) represents the motion vector corresponding to the reference picture Ref0, and (MVx1, MVy1) represents the motion vector corresponding to the reference picture Ref1.

[0426] At this time, it can also be that the velocity vector (v x , v y ) is assumed to be a uniform linear motion, (MVx0, MVy0) and (MVx1, MVy1) are expressed as (vxτ0, vyτ0) and (-vxτ1, -vyτ1) respectively, using the following optical flow equation (2).

[0427]

Formula 3

[0428]

[0429] Here, I(k) represents the brightness value of the reference image k (k=0, 1) after motion compensation. The optical flow equation indicates that the sum of (i) the temporal differential of the brightness 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. Alternatively, the motion vector of the block unit obtained from the merge list or the like may be corrected in pixel units based on a combination of the optical flow equation and Hermite interpolation.

[0430] In addition, the motion vector may be derived on the decoding device side by a method different from the derivation of the motion vector based on the model assuming uniform linear motion. For example, the motion vector may be derived in sub-block units based on the motion vectors of a plurality of adjacent blocks.

[0431] [Motion Compensation > LIC]

[0432] Next, an example of a mode for generating a predicted image (prediction) using LIC (local illumination compensation) processing will be described.

[0433] Fig.39 This is a conceptual diagram for explaining an example of a method for generating a predicted image using a brightness correction process based on an LIC process.

[0434] First, MV is derived from the encoded reference picture to obtain the reference image corresponding to the current block.

[0435] Next, information indicating how the brightness value changes in the reference picture and the current picture is extracted for the current block. This extraction is based on the brightness pixel values ​​of the encoded left adjacent reference area (peripheral reference area) and the encoded upper adjacent reference area (peripheral reference area) in the current picture, and the brightness pixel values ​​at the same position in the reference picture specified by the derived MV. Then, using the information indicating how the brightness value changes, the brightness correction parameter is calculated.

[0436] The brightness correction parameter is applied to perform brightness correction processing on the reference image in the reference picture specified by the MV, thereby generating a predicted image for the current block.

[0437] in addition, Fig.39 The shape of the peripheral reference area described above is just an example, and shapes other than this may also be used.

[0438] In addition, the process of generating a predicted image based on one reference picture is described here, but the same is true when generating a predicted image based on multiple reference pictures. The predicted image can also be generated after brightness correction processing is performed on the reference images obtained from each reference picture in the same way as described above.

[0439] As a method for determining whether to use LIC processing, there is a method of using lic_flag, which is a signal indicating whether to use LIC processing. As a specific example, in the encoding device, it is determined whether the current block belongs to an area where brightness changes. If it belongs to an area where brightness changes, the value 1 is set as lic_flag, and encoding is performed using LIC processing. If it does not belong to an area where brightness changes, the value 0 is set as lic_flag, and encoding is performed without using LIC processing. On the other hand, in the decoding device, it is also possible to decode lic_flag described in the stream and switch whether to use LIC processing according to its value to perform decoding.

[0440] As another method for determining whether to use the LIC process, there is a method of determining whether the LIC process is used in the surrounding blocks. As a specific example, when the current block is in the merge mode, it is determined whether the surrounding coded blocks selected when deriving the MV in the merge mode process are coded using the LIC process, and based on the result, it is switched whether to use the LIC process for coding. In addition, in the case of this example, the same process is also applied to the decoding device side.

[0441] use Fig.39 The form of the LIC process (luminance correction process) has been described, and the details thereof will be described below.

[0442] First, the inter prediction unit 126 derives a motion vector for acquiring a reference image corresponding to a current block to be encoded from a reference picture that is an already encoded picture.

[0443] Next, the inter-frame prediction unit 126 uses the brightness pixel values ​​of the encoded surrounding reference areas adjacent to the left and above and the brightness pixel values ​​at the same position in the reference picture specified by the motion vector to extract information indicating how the brightness values ​​in the reference picture and the encoding target picture change, and calculates the brightness correction parameter. For example, the brightness pixel value of a certain pixel in the surrounding reference area in the encoding target picture is set to p0, and the brightness pixel value of the pixel in the surrounding reference area in the reference picture at the same position as the pixel is set to p1. The inter-frame prediction unit 126 calculates the coefficients A and B for optimizing A×p1+B=p0 as brightness correction parameters for multiple pixels in the surrounding reference area.

[0444] Next, the inter-frame prediction unit 126 generates a predicted image for the encoding target block by performing a brightness correction process on the reference image in the reference picture specified by the motion vector using the brightness correction parameter. For example, the brightness pixel value in the reference image is set to p2, and the brightness pixel value of the predicted image after the brightness correction process is set to p3. The inter-frame prediction unit 126 generates a predicted image after the brightness correction process by calculating A×p2+B=p3 for each pixel in the reference image.

[0445] also, Fig.39 The shape of the peripheral reference area in is an example, and other shapes may also be used. Fig.39 A portion of the peripheral reference area shown. For example, an area including a predetermined number of pixels thinned out from the upper adjacent pixels and the left adjacent pixels may be used as the peripheral reference area. In addition, the peripheral reference area is not limited to an area adjacent to the encoding object block, and may also be an area not adjacent to the encoding object block. The predetermined number related to the pixel may also be predetermined.

[0446] In addition, Fig.39 In the example shown, the peripheral reference area in the reference picture is an area specified by the motion vector of the encoding target picture from the peripheral reference area in the encoding target picture, but it may also be an area specified by another motion vector. For example, the other motion vector may also be the motion vector of the peripheral reference area in the encoding target picture.

[0447] Here, the operation in the encoding device 100 is described, but typically, the operation in the decoding device 200 is also the same.

[0448] The LIC process is not only applied to brightness but also to color difference. In this case, correction parameters may be derived separately for each of Y, Cb, and Cr, or a common correction parameter may be used for any of them.

[0449] Furthermore, the LIC process may be applied in sub-block units. For example, the modification parameters may be derived using the surrounding reference area of ​​the current sub-block and the surrounding reference area of ​​the reference sub-block in the reference picture specified by the MV of the current sub-block.

[0450] [Prediction Control Department]

[0451] The prediction control unit 128 selects one of the intra prediction signal (the signal output from the intra prediction unit 124) and the inter prediction signal (the signal output from the inter prediction unit 126), and outputs the selected signal as the prediction signal to the subtraction unit 104 and the addition unit 116.

[0452] like Figure 1 As shown, in various encoding device examples, the prediction control unit 128 may also output prediction parameters input to the entropy coding unit 110. The entropy coding unit 110 may generate a coded bit stream (or sequence) based on the prediction parameters input from the prediction control unit 128 and the quantization coefficients input from the quantization unit 108. The prediction parameters may also be used in a decoding device. The decoding device may also receive and decode the coded bit stream and perform the same process as the prediction process performed in the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128. The prediction parameters may include a selection prediction signal (e.g., a motion vector, a prediction type, or a prediction mode used by the intra prediction unit 124 or the inter prediction unit 126), or any index, flag, or value based on the prediction process performed in the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128 or indicating the prediction process.

[0453] [Encoding device installation example]

[0454] Fig.40 1 is a block diagram showing an implementation example of the coding device 100. The coding device 100 includes a processor a1 and a memory a2. Figure 1 The multiple components of the encoding device 100 shown are Fig.40 The processor a1 and the memory a2 shown are implemented.

[0455] Processor a1 is a circuit that performs information processing and is a circuit that can access memory a2. For example, processor a1 is a dedicated or general-purpose electronic circuit that encodes moving images. Processor a1 can also be a processor such as a CPU. In addition, processor a1 can also be a collection of multiple electronic circuits. In addition, for example, processor a1 can also play a role in Figure 1The functions of multiple components of the encoding device 100 shown in the figure etc.

[0456] The memory a2 is a dedicated or general-purpose memory for storing information used by the processor a1 to encode motion images. The memory a2 can be an electronic circuit or connected to the processor a1. In addition, the memory a2 can also be included in the processor a1. In addition, the memory a2 can also be a collection of multiple electronic circuits. In addition, the memory a2 can be a magnetic disk or an optical disk, or can be expressed as a storage or a recording medium. In addition, the memory a2 can be a non-volatile memory or a volatile memory.

[0457] For example, the memory a2 may store the encoded moving image, or may store a bit string corresponding to the encoded moving image. In addition, the memory a2 may store a program for the processor a1 to encode the moving image.

[0458] In addition, for example, memory a2 can also serve Figure 1 The memory a2 may be used as a component for storing information among the multiple components of the encoding device 100 shown in FIG. Figure 1 The functions of the block memory 118 and the frame memory 122 are shown. More specifically, the memory a2 can store reconstructed blocks and reconstructed pictures, etc.

[0459] In addition, in the encoding device 100, it is not necessary to install Figure 1 All of the multiple constituent elements shown above may not perform all of the multiple processes described above. Figure 1 Part of the plurality of components shown in the figure may be included in other devices, and part of the plurality of processes described above may be executed by other devices.

[0460] [Decoding device]

[0461] Next, a decoding device that can decode a coded signal (coded bit stream) output from, for example, the above-described coding device 100 will be described. Fig.41 2 is a block diagram showing a functional structure of a decoding device 200 according to an embodiment. The decoding device 200 is a moving picture decoding device that decodes a moving picture in units of blocks.

[0462] like Fig.41 As shown, the decoding device 200 includes an entropy decoding unit 202, an inverse quantization unit 204, an inverse transformation unit 206, an addition unit 208, a block memory 210, a loop filter unit 212, a frame memory 214, an intra-frame prediction unit 216, an inter-frame prediction unit 218 and a prediction control unit 220.

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

[0464] Hereinafter, after describing the overall processing flow of the decoding device 200 , each component included in the decoding device 200 will be described.

[0465] [Overall flow of decoding processing]

[0466] Fig.42 This is a flowchart showing an example of the overall decoding process performed by the decoding device 200.

[0467] First, the entropy decoding unit 202 of the decoding device 200 determines a partition pattern of a fixed-size block (e.g., 128×128 pixels) (step Sp_1). This partition pattern is the partition pattern selected by the encoding device 100. Then, the decoding device 200 performs the processing of steps Sp_2 to Sp_6 on each of the multiple blocks constituting the partition pattern.

[0468] That is, the entropy decoding unit 202 decodes (specifically, entropy decodes) the encoded quantization coefficients and prediction parameters of the decoding target block (also referred to as the current block) (step Sp_2).

[0469] Next, the inverse quantization unit 204 and the inverse transformation unit 206 restore a plurality of prediction residuals (ie, difference blocks) by performing inverse quantization and inverse transformation on the plurality of quantized coefficients (step Sp_3).

[0470] Next, the prediction processing unit composed of all or part of the intra prediction unit 216, the inter prediction unit 218 and the prediction control unit 220 generates a prediction signal (also referred to as a prediction block) of the current block (step Sp_4).

[0471] Next, the adding unit 208 reconstructs the current block into a reconstructed image (also referred to as a decoded image block) by adding the prediction block to the differential block (step Sp_5).

[0472] Then, when generating the reconstructed image, the loop filter unit 212 filters the reconstructed image (step Sp_6).

[0473] Then, the decoding device 200 determines whether the decoding of the entire picture has been completed (step Sp_7 ), and when it is determined that the decoding has not been completed (No in step Sp_7 ), the processing from step Sp_1 is repeatedly executed.

[0474] As shown in the figure, the processing of steps Sp_1 to Sp_7 is sequentially performed by the decoding device 200, or a plurality of processing of some of these processing may be performed in parallel, or the order may be reversed.

[0475] [Entropy decoding unit]

[0476] The entropy decoding unit 202 performs entropy decoding on the coded bit stream. Specifically, the entropy decoding unit 202 arithmetically decodes the coded bit stream into a binary signal, for example. Then, the entropy decoding unit 202 debinarizes the binary signal. Thus, the entropy decoding unit 202 outputs the quantized coefficients to the inverse quantization unit 204 in units of blocks. The entropy decoding unit 202 may also output the coded bit stream to the intra-frame prediction unit 216, the inter-frame prediction unit 218, and the prediction control unit 220 in the embodiment (see Figure 1 The intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220 can perform the same prediction processing as that performed by the intra prediction unit 124, the inter prediction unit 126, and the prediction control unit 128 on the encoding device side.

[0477] [Inverse Quantization Unit]

[0478] The inverse quantization unit 204 inversely quantizes the quantized coefficients of the decoding target block (hereinafter referred to as the current block) as the input from the entropy decoding unit 202. Specifically, the inverse quantization unit 204 inversely quantizes the quantized coefficients of the current block based on the quantization parameters corresponding to the quantized coefficients. In addition, the inverse quantization unit 204 outputs the inversely quantized quantized coefficients (i.e., transform coefficients) of the current block to the inverse transform unit 206.

[0479] [Inverse transformation unit]

[0480] The inverse transform unit 206 restores the prediction error by performing inverse transform on the transform coefficients which are input from the inverse quantization unit 204 .

[0481] For example, when the information read from the encoded bit stream indicates that EMT or AMT is adopted (for example, 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 read information indicating the transform type.

[0482] In addition, for example, when the information read from the encoded bit stream indicates that NSST is adopted, the inverse transform unit 206 applies inverse re-transformation to the transform coefficients.

[0483] [Addition Department]

[0484] The adding unit 208 reconstructs the current block by adding the prediction error input from the inverse transform unit 206 and the prediction sample input from the prediction control unit 220 . The adding unit 208 outputs the reconstructed block to the block memory 210 and the loop filter unit 212 .

[0485] [Block Memory]

[0486] The block memory 210 is a storage unit for storing blocks in a decoding target picture (hereinafter referred to as a current picture) to be referenced in intra prediction. Specifically, the block memory 210 stores the reconstructed blocks output from the adding unit 208 .

[0487] [Loop filter section]

[0488] The loop filter unit 212 performs loop filtering on the block reconstructed by the adder unit 208 , and outputs the reconstructed block after filtering to the frame memory 214 , a display device, and the like.

[0489] When the information indicating the on / off of ALF read from the coded bit stream indicates that ALF is on, one filter is selected from a plurality of filters based on the direction and activity of the local gradient, and the selected filter is applied to the reconstructed block.

[0490] [Frame Memory]

[0491] The frame memory 214 is a storage unit for storing reference pictures used in inter-frame prediction, and is sometimes referred to as a frame buffer. Specifically, the frame memory 214 stores the reconstructed blocks filtered by the loop filter unit 212 .

[0492] [Prediction processing unit (intra-frame prediction unit / inter-frame prediction unit / prediction control unit)]

[0493] Fig.43 2 is a flowchart showing an example of processing performed by the prediction processing unit of the decoding device 200. The prediction processing unit is composed of all or part of the components of the intra prediction unit 216, the inter prediction unit 218, and the prediction control unit 220.

[0494] The prediction processing unit generates a prediction image of the current block (step Sq_1). The prediction image is also called a prediction signal or a prediction block. In addition, the prediction signal includes, for example, an intra-frame prediction signal or an inter-frame prediction signal. Specifically, the prediction processing unit generates a prediction image of the current block using a reconstructed image obtained by generating a prediction block, generating a difference block, generating a coefficient block, restoring a difference block, and generating a decoded image block.

[0495] The reconstructed image may be, for example, an image of a reference picture, or may be a picture including the current block, that is, an image of a decoded block in the current picture. The decoded block in the current picture may be, for example, an adjacent block of the current block.

[0496] Fig.44 This is a flowchart showing another example of the processing performed by the prediction processing unit of the decoding device 200.

[0497] The prediction processing unit determines a method or mode for generating a prediction image (step Sr_1). For example, the method or mode can be determined based on prediction parameters or the like.

[0498] When it is determined that the first mode is a mode for generating a predicted image, the prediction processing unit generates a predicted image according to the first mode (step Sr_2a). In addition, when it is determined that the second mode is a mode for generating a predicted image, the prediction processing unit generates a predicted image according to the second mode (step Sr_2b). In addition, when it is determined that the third mode is a mode for generating a predicted image, the prediction processing unit generates a predicted image according to the third mode (step Sr_2c).

[0499] The first method, the second method, and the third method are different methods for generating a predicted image, and may be, for example, an inter-frame prediction method, an intra-frame prediction method, or other prediction methods. In such a prediction method, the above-mentioned reconstructed image may also be used.

[0500] [Intra-frame prediction unit]

[0501] The intra prediction unit 216 performs intra prediction based on the intra prediction mode read from the coded bit stream, and refers to the block in the current picture 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, color difference 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.

[0502] Furthermore, when an intra prediction mode that refers to a luminance block is selected in intra prediction of a chrominance block, the intra prediction unit 216 may predict the chrominance component of the current block based on the luminance component of the current block.

[0503] Furthermore, when the information read from the coded bit stream indicates the adoption of PDPC, the intra prediction unit 216 corrects the pixel value after intra prediction based on the gradient of the reference pixel in the horizontal and vertical directions.

[0504] [Inter-frame prediction unit]

[0505] The inter-frame prediction unit 218 predicts the current block with reference to the reference picture stored in the frame memory 214. The prediction is performed in units of the current block or a sub-block (e.g., a 4×4 block) in the current block. For example, the inter-frame prediction unit 218 performs motion compensation using motion information (e.g., a motion vector) read from the coded bit stream (e.g., prediction parameters output from the entropy decoding unit 202), thereby generating an inter-frame prediction signal of the current block or sub-block, and outputs the inter-frame prediction signal to the prediction control unit 220.

[0506] When the information read from the encoded bit stream indicates that the OBMC mode is adopted, the inter prediction unit 218 generates an inter prediction signal using not only the motion information of the current block obtained by motion estimation but also the motion information of the neighboring blocks.

[0507] Furthermore, when the information read from the coded bit stream indicates that the FRUC mode is adopted, 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. Furthermore, the inter-frame prediction unit 218 performs motion compensation (prediction) using the derived motion information.

[0508] In addition, when the BIO mode is adopted, the inter-frame prediction unit 218 derives the motion vector based on the model assuming uniform linear motion. In addition, when the information read from the encoded bit stream indicates that the affine motion compensation prediction mode is adopted, the inter-frame prediction unit 218 derives the motion vector in sub-block units based on the motion vectors of multiple adjacent blocks.

[0509] [MV export > Normal interframe mode]

[0510] When the information read from the encoded bit stream indicates that the normal inter mode is applied, the inter prediction section 218 derives an MV based on the information read from the encoded bit stream, and performs motion compensation (prediction) using the MV.

[0511] Fig.45 This is a flowchart showing an example of inter prediction based on the normal inter mode in the decoding device 200 .

[0512] The inter-frame prediction unit 218 of the decoding device 200 performs motion compensation for each block. The inter-frame prediction unit 218 obtains multiple candidate MVs for the current block based on information such as MVs of multiple decoded blocks that are temporally or spatially around the current block (step Ss_1). In other words, the inter-frame prediction unit 218 creates a candidate MV list.

[0513] Next, the inter-frame prediction unit 218 extracts N (N is an integer greater than or equal to 2) candidate MVs from the multiple candidate MVs obtained in step Ss_1 as predicted motion vector candidates (also referred to as predicted MV candidates) in a predetermined priority order (step Ss_2). In addition, the priority order may be predetermined for each of the N predicted MV candidates.

[0514] Next, the inter-frame prediction unit 218 decodes the predicted motion vector selection information from the input stream (i.e., the encoded bit stream), and uses the decoded predicted motion vector selection information to select one predicted MV candidate from the N predicted MV candidates as the predicted motion vector (also called predicted MV) of the current block (step Ss_3).

[0515] Next, the inter prediction section 218 decodes the difference MV from the input stream, and derives the MV of the current block by adding the difference value that is the decoded difference MV to the selected prediction motion vector (step Ss_4).

[0516] Finally, the inter-frame prediction unit 218 generates a predicted image of the current block by performing motion compensation on the current block using the derived MV and the decoded reference picture (step Ss_5).

[0517] [Prediction Control Department]

[0518] The prediction control unit 220 selects one of the intra prediction signal and the inter prediction signal, and outputs the selected signal as a prediction signal to the adder 208. In general, the structures, functions, and processes of the prediction control unit 220, the intra prediction unit 216, and the inter prediction unit 218 on the decoding device side may correspond to the structures, functions, and processes of the prediction control unit 128, the intra prediction unit 124, and the inter prediction unit 126 on the encoding device side.

[0519] [Decoding device installation example]

[0520] Fig.46 2 is a block diagram showing an implementation example of the decoding device 200. The decoding device 200 includes a processor b1 and a memory b2. Fig.41 The components of the decoding device 200 are shown in FIG. Fig.46 The processor b1 and the memory b2 are installed as shown.

[0521] Processor b1 is a circuit that performs information processing and is a circuit that can access memory b2. For example, processor b1 is a dedicated or general electronic circuit that decodes the encoded moving image (i.e., the encoded bit stream). Processor b1 can also be a processor such as a CPU. In addition, processor b1 can also be a collection of multiple electronic circuits. In addition, for example, processor b1 can also play a role in Fig.41 The functions of multiple components of the decoding device 200 shown in the figure etc.

[0522] The memory b2 is a dedicated or general memory for storing information used by the processor b1 to decode the coded bit stream. The memory b2 may be an electronic circuit, or may be connected to the processor b1. In addition, the memory b2 may be included in the processor b1. In addition, the memory b2 may be a collection of multiple electronic circuits. In addition, the memory b2 may be a magnetic disk or an optical disk, or may be a storage device or a recording medium. In addition, the memory b2 may be a non-volatile memory or a volatile memory.

[0523] For example, the memory b2 may store moving images or coded bit streams. In addition, the memory b2 may also store a program for the processor b1 to decode the coded bit stream.

[0524] In addition, for example, memory b2 can serve as Fig.41 The memory b2 can be used as a component for storing information among the multiple components of the decoding device 200 shown in FIG. Fig.41 The functions of the block memory 210 and the frame memory 214 are shown. More specifically, the memory b2 can store reconstructed blocks and reconstructed pictures, etc.

[0525] In addition, in the decoding device 200, it is not necessary to install Fig.41 All of the multiple constituent elements shown above may not perform all of the multiple processes described above. Fig.41 Part of the plurality of components shown in the figure may be included in other devices, and part of the plurality of processes described above may be executed by other devices.

[0526] [Definition of terms]

[0527] As an example, each term may be defined as follows.

[0528] A picture is an arrangement of multiple luma samples in monochrome format, or an arrangement of multiple luma samples and 2 corresponding arrangements of multiple color difference samples in color formats of 4:2:0, 4:2:2, and 4:4:4. A picture can be a frame or a field.

[0529] A frame is a composition of a top field that generates a plurality of sample rows 0, 2, 4, ... and a bottom field that generates a plurality of sample rows 1, 3, 5, ...

[0530] A slice is an integer number of coding tree units contained in 1 independent slice segment and all subsequent dependent slice segments before the next independent slice segment (if any) in the same access unit.

[0531] A tile is a rectangular region of multiple coding tree blocks within a specific tile column and a specific tile row in a picture. A tile can still apply a loop filter across the edge of the tile, but can also be a rectangular region of a frame that is intended to be independently decodable and coded.

[0532] A block is an MxN (N rows and M columns) arrangement of multiple samples, or an MxN arrangement of multiple transform coefficients. A block can also be a square or rectangular area of ​​multiple pixels consisting of multiple matrices of 1 luminance and 2 chrominance.

[0533] A CTU (Coding Tree Unit) can be a coding tree block of multiple luma samples of a picture with 3 sample arrangements, or 2 corresponding coding tree blocks of multiple chrominance samples. Alternatively, a CTU can be a coding tree block of any number of samples in a monochrome picture and a picture encoded using the syntax used in the encoding of 3 separate color planes and multiple samples.

[0534] A super block is composed of one or two mode information blocks, or may be recursively divided into four 32×32 blocks, or further divided into a square block of 64×64 pixels.

[0535] [The first form of coefficient coding]

[0536] Fig.47 : is a flowchart showing the basic coefficient encoding method of the first aspect. Specifically, Fig.47 Indicates a coefficient encoding method for an area in which a prediction residual is obtained by intra-frame coding or inter-frame coding. In the following description, the operations performed by the encoding device 100 are shown. The decoding device 200 can perform operations corresponding to the operations performed by the encoding device 100. For example, the decoding device 200 can perform inverse orthogonal transformation and decoding corresponding to the orthogonal transformation and encoding performed by the encoding device 100.

[0537] exist Fig.47 , last_sig_coeff, subblock_flag, thres, and CCB are shown. last_sig_coeff is a parameter indicating the coordinate position where a non-zero coefficient (non-zero coefficient) first appears when scanning within a block. subblock_flag is a flag indicating whether there are non-zero coefficients in a 4×4 subblock (also called 16 transform coefficient levels). subblock_flag can also be expressed as coded_sub_block_flag or subblock flag.

[0538] Thres is a constant determined in units of blocks. Thres can be predetermined. Thres can be a value that varies depending on the size of the block, or can be the same value regardless of the size of the block. Thres can take different values ​​when orthogonal transformation is applied and when orthogonal transformation is not applied. Thres can be determined depending on the coordinate position determined in the block by last_sig_coeff.

[0539] CCB represents the number of bins encoded in the context mode of CABAC (context adaptive binary arithmetic coding). That is, CCB represents the number of times the encoding based on the context mode of CABAC is processed. The context mode is also called the regular mode. Here, the encoding based on the context mode of CABAC is called CABAC encoding or context adaptive coding. In addition, the encoding based on the bypass mode of CABAC is called bypass coding. The processing of bypass coding is simpler than that of CABAC coding.

[0540] CABAC coding is a process of converting the bin string obtained by binarizing the signal of the coding object into a coded bit string based on the probability of occurrence of 0 and 1 for each bin. In addition, CCB can count the number of all flags used in the residual coefficient coding, or count the number of some flags used in the residual coefficient coding. Bypass coding is a process of encoding 1bin in the bin string as 1 bit of the coded bit string without using the variable probability of occurrence of 0 and 1 for each bin (in other words, using a fixed probability).

[0541] For example, the encoding apparatus 100 compares the CCB value and the thres value to determine the coefficient encoding method.

[0542] Specifically, in Fig.47 In the embodiment, first, CCB is initialized to 0 (S101). Then, it is determined whether or not an orthogonal transform is applied to the block (S102). When an orthogonal transform is applied to the block (Yes in S102), the encoding device 100 encodes last_sig_coeff (S131). Then, the encoding device 100 performs a loop process on each sub-block (S141 to S148).

[0543] In the loop process (S141 to S148) of each subblock, the encoding device 100 encodes the subblock_flag related to the subblock. Then, when the subblock_flag is different from 0 (Yes in S146), the encoding device 100 encodes the 16 coefficients in the subblock using the first encoding method described later (S147).

[0544] In addition, when orthogonal transform is not applied to the block (No in S102), the encoding device 100 performs loop processing on each sub-block (S121 to S128).

[0545] In the loop processing (S121 to S128) of each sub-block, the encoding device 100 determines whether the CCB is less than thres (S122). If the CCB is less than thres (Yes in S122), the encoding device 100 encodes subblock_flag by CABAC encoding (S123). Then, the encoding device 100 counts up the CCB (S124). Otherwise (No in S122), the encoding device 100 encodes subblock_flag by bypass encoding (S125).

[0546] Then, when subblock_flag is different from 0 (Yes in S126), the encoding device 100 encodes the 16 coefficients in the subblock using the second encoding method described later (S127).

[0547] The case where the orthogonal transform is not applied to the block may be, for example, the case where the orthogonal transform is skipped. CCB is also used in the first encoding method and the second encoding method. CCB may be initialized in sub-block units. In this case, thres may not be a fixed value in the block, but a value that varies for each sub-block.

[0548] In addition, here, CCB counts up from 0 and determines whether it reaches thres, but CCB may count down from thres (or a specific value) and determine whether it reaches 0.

[0549] Fig.48 Yes means Fig.47 Flowchart showing the details of the first encoding method shown in FIG. In the first encoding method, a plurality of coefficients in a sub-block are encoded. At this time, a first loop process (S151 to S156) is performed for each coefficient information flag of each coefficient in the sub-block, and a second loop process (S161 to S165) is performed for each coefficient in the sub-block.

[0550] In the first loop processing (S151 to S156), one or more coefficient information flags representing one or more attributes of the coefficients are encoded in sequence. The one or more coefficient information flags may include sig_flag, gt1_flag, parity_flag, and gt3_flag described later. Then, within the range that CCB does not exceed thres, one or more coefficient information flags are encoded in sequence through CABAC encoding, and CCB is counted up by 1 each time it is encoded. After CCB exceeds thres, the coefficient information flag is not encoded.

[0551] That is, in the first loop processing (S151 to S156), the encoding device 100 determines whether the CCB is less than thres (S152). Then, when the CCB is less than thres (Yes in S152), the encoding device 100 encodes the coefficient information flag by CABAC encoding (S153). Then, the encoding device 100 counts up the CCB (S154). When the CCB is not less than thres (No in S152), the encoding device 100 ends the first loop processing (S151 to S156).

[0552] In the second loop processing (S161 to S165), for the coefficients for which the coefficient information flags are encoded, remainders that are residual values ​​not represented by the coefficient information flags (i.e., residual values ​​for reconstructing the values ​​of the coefficients using the coefficient information flags) are encoded by Golombreus coding. The coefficients for which the coefficient information flags are not encoded are directly encoded by Golombreus coding. In addition, the remainders may be encoded by other coding methods instead of Golombreus coding.

[0553] That is, in the second loop processing (S161 to S165), the encoding device 100 determines whether the coefficient information flag corresponding to the coefficient to be processed has been encoded (S162). Then, when the coefficient information flag has been encoded (Yes in S162), the encoding device 100 encodes the remainder by Golomblais coding (S163). When the coefficient information flag has not been encoded (No in S162), the encoding device 100 encodes the value of the coefficient by Golomblais coding (S164).

[0554] In addition, the number of loop processing here is 2, but the number of loop processing may be different from 2.

[0555] The above sig_flag is a flag indicating whether AbsLevel is non-zero. AbsLevel is the value of the coefficient, more specifically, the absolute value of the coefficient. gt1_flag is a flag indicating whether AbsLevel is greater than 1. parity_flag is a flag indicating the first bit of AbsLevel, and is a flag indicating whether AbsLevel is odd or even. gt3_flag is a flag indicating whether AbsLevel is greater than 3.

[0556] gt1_flag and gt3_flag may be expressed as abs_gt1_flag and abs_gt3_flag, respectively. In addition, for example, as the above-mentioned remainder, a value of (Abslevel-4) / 2 may be encoded by Golombras coding.

[0557] One or more coefficient information flags other than the one or more coefficient information flags described above may also be encoded. For example, a part of the coefficient information flags may not be encoded. The coefficient information flags included in the one or more coefficient information flags described above may be replaced with coefficient information flags or parameters having other meanings.

[0558] Fig.49 Yes means Fig.47 Flowchart of the details of the second encoding method shown in FIG. In the second encoding method, a plurality of coefficients in a sub-block are encoded. At this time, the first loop processing (S171 to S176) is performed for each coefficient information flag of each coefficient in the sub-block, and the second loop processing (S181 to S185) is performed for each coefficient in the sub-block.

[0559] In the first loop processing (S171 to S176), one or more coefficient information flags each indicating one or more attributes of a coefficient are sequentially encoded. The one or more coefficient information flags may include sig_flag, sign_flag, gt1_flag, parity_flag, gt3_flag, gt5_flag, gt7_flag, and gt9_flag.

[0560] Here, sign_flag is a flag indicating the sign of the coefficient. gt5_flag is a flag indicating whether AbsLevel is greater than 5. gt7_flag is a flag indicating whether AbsLevel is greater than 7. gt9_flag is a flag indicating whether AbsLevel is greater than 9. gt5_flag, gt7_flag, and gt9_flag are sometimes expressed as abs_gt5_flag, abs_gt7_flag, and abs_gt9_flag, respectively. In addition, flags indicating whether AbsLevel is greater than x (x is an integer greater than 1) may be summarized and expressed as gtx_flag or abs_gtx_flag. AbsLevel is, for example, the absolute value of the transform coefficient level.

[0561] In addition, one or more coefficient information flags other than the one or more coefficient information flags described above may also be encoded. For example, a part of the coefficient information flags may not be encoded. The coefficient information flags included in the one or more coefficient information flags described above may be replaced with coefficient information flags or parameters having other meanings.

[0562] The above-mentioned one or more coefficient information flags are sequentially encoded by CABAC encoding. Then, CCB is counted up by 1 every time encoding is performed. After CCB exceeds thres, the coefficient information flag is encoded by bypass encoding.

[0563] That is, in the first loop processing (S171 to S176), the encoding device 100 determines whether the CCB is less than thres (S172). Then, when the CCB is less than thres (Yes in S172), the encoding device 100 encodes the coefficient information flag by CABAC encoding (S173). Then, the encoding device 100 counts up the CCB (S174). When the CCB is not less than thres (No in S172), the encoding device 100 encodes the coefficient information flag by bypass encoding (S175).

[0564] Fig.49 The syntax of the second loop processing in does not change before and after the CCB exceeds thres. That is, regardless of whether the coefficient information flag is encoded by CABAC encoding or the coefficient information flag is encoded by bypass encoding, the following same processing is performed in the second loop processing (S181 to S185).

[0565] Specifically, in the second loop processing (S181 to S185), the encoding device 100 encodes the remainder, which is a residual value that cannot be represented by the coefficient information flag (that is, a residual value for reconstructing the coefficient value using the coefficient information flag), by Golomblais coding (S183). In addition, the remainder may be encoded using other coding methods instead of Golomblais coding.

[0566] In addition, the number of loop processing here is 2, but the number of loop processing may be different from 2.

[0567] like Fig.47 , Fig.48 and Fig.49 As shown, in the basic operation of this form, there are different flags for whether or not to be included in the limitation of the number of processing times of CABAC coding, depending on whether or not orthogonal transformation is applied or not. In addition, the syntax of coefficient coding is different between the case where orthogonal transformation is applied and the case where orthogonal transformation is not applied. Therefore, it may be necessary to prepare circuits separately. Therefore, the circuit structure may become complicated.

[0568] [First example of the first aspect of coefficient encoding]

[0569] Fig.50 1 is a flowchart showing a coefficient encoding method of the first example of the first aspect. Fig.50 In the example, the post-processing of last_sig_coeff (S132) and the processing of subblock_flag (S142 to S145) are the same as Fig.47 The examples are different.

[0570] exist Fig.47 In the case of applying orthogonal transformation, CCB counts up sig_flag, parity_flag and gtX_flag (X=1, 3). Fig.50 In the example, CCB also increments last_sig_coeff and subblock_flag. On the other hand, the processing flow without applying orthogonal transformation is the same as Fig.47 Same as the example.

[0571] That is, in Fig.50 In the example of , the encoding device 100 encodes last_sig_coeff ( S131 ), and then adds the number of CABAC encoding processing times in the encoding of last_sig_coeff to CCB ( S132 ).

[0572] In addition, before encoding subblock_flag, the encoding device 100 determines whether CCB is less than thres (S142). Then, when CCB is less than thres (Yes in S142), the encoding device 100 encodes subblock_flag by CABAC encoding (S143). Then, the encoding device 100 adds 1 to CCB (S144). On the other hand, when CCB is not less than thres (No in S142), the encoding device 100 encodes subblock_flag by bypass encoding (S145).

[0573] [Effect of the first example of the first aspect of coefficient encoding]

[0574] according to Fig.50 For example, when orthogonal transformation is performed and when orthogonal transformation is not performed, the coding process flow of subblock_flag can sometimes be made common and unified. Therefore, when orthogonal transformation is performed and when orthogonal transformation is not performed, it is possible to share a part of the circuit and reduce the circuit scale. As a result, except for the presence or absence of last_sig_coeff, multiple processing flows divided according to the presence or absence of orthogonal transformation may become the same.

[0575] For example, even if the number of CABAC encoding processes is limited at the block level, Fig.47 In the example, after CCB reaches thres, subblock_flag will be encoded by CABAC encoding. Fig.50 In the case of , after CCB reaches thres, subblock_flag is not encoded by CABAC encoding. Therefore, the number of CABAC encoding processes may be appropriately limited to thres.

[0576] In addition, the number of processing times of CABAC encoding in last_sig_coeff may not be included in the CCB. In addition, thres may be determined depending on the coordinate position determined by last_sig_coeff in the block.

[0577] Furthermore, the encoding device 100 may perform encoding by always determining the value of subblock_flag to be 1 after the CCB exceeds thres. If the value of subblock_flag is always determined to be 1 after the CCB exceeds thres, the encoding device 100 may not encode subblock_flag after the CCB exceeds thres.

[0578] In addition, even when the orthogonal transform is not applied, the encoding device 100 may always determine the value of subblock_flag to be 1 after the CCB exceeds the thres and encode it. In addition, in this case, when the value of subblock_flag is always determined to be 1 after the CCB exceeds the thres, the encoding device 100 may not encode subblock_flag after the CCB exceeds the thres.

[0579] [Second example of the first aspect of coefficient encoding]

[0580] Fig.51 1 is a flowchart showing a coefficient encoding method of the second example of the first aspect. Fig.51 In the example of Fig.47 The examples are different.

[0581] exist Fig.47 In the case where orthogonal transformation is not applied, the CCB has incremented sig_flag, parity_flag, gtX_flag (X=1, 3, 5, 7, 9) and subblock_flag. Fig.51 In the example, subblock_flag, CCB is not incremented. On the other hand, the processing flow when applying orthogonal transformation is the same as Fig.47 Same as the example.

[0582] That is, in Fig.51 In the example of FIG. 1 , regardless of whether the CCB exceeds the thres, the encoding device 100 always encodes the subblock_flag by CABAC encoding without incrementing the CCB ( S123 ).

[0583] [Effect of the Second Example of the First Form of Coefficient Coding]

[0584] according to Fig.51 For example, when orthogonal transformation is performed and when orthogonal transformation is not performed, the coding process of subblock_flag can sometimes be made common and unified. Therefore, when orthogonal transformation is performed and when orthogonal transformation is not performed, part of the circuit may be shared, and the circuit scale may be reduced. As a result, in addition to the presence or absence of last_sig_coeff, multiple processing flows divided according to the presence or absence of orthogonal transformation may become the same.

[0585] In addition, Fig.50 In comparison, Fig.51The processing is simplified. Therefore, it is possible to reduce the circuit scale. In addition, it is assumed that the frequency of occurrence of 0 or 1 related to subblock_flag is prone to deviation according to the surrounding conditions. Therefore, in the CABAC encoding of subblock_flag, it is assumed that the reduction in the amount of coding is greater than the increase in processing delay. Therefore, it is useful to limit the number of processing times of CABAC encoding without counting the CABAC encoding of subblock_flag.

[0586] In addition, the number of CABAC encoding processes for last_sig_coeff may be included in the CCB. In addition, thres may be determined depending on the coordinate position determined by last_sig_coeff in the block.

[0587] [Second form of coefficient coding]

[0588] [First example of the second aspect of coefficient encoding]

[0589] Fig.52 1 is a flowchart showing a coefficient encoding method of the first example of the second aspect. Fig.52 In the example of FIG. 127 , even when no orthogonal transformation is applied to the block, the case where the 16 coefficients in the sub-block are encoded by the first encoding method (S127a) is the same as Fig.47 The examples are different.

[0590] That is, in Fig.52 In the example of Fig.48 The first encoding method shown is not Fig.49 The 16 coefficients in the sub-block are encoded using the second encoding method shown in S127a. That is, whether or not the orthogonal transform is applied, the encoding device 100 does not use Fig.49 The second encoding method shown is instead Fig.48 The first encoding method shown encodes 16 coefficients in a sub-block.

[0591] More specifically, regardless of whether or not there is an orthogonal transform, the encoding device 100 follows Fig.48 In the first encoding method shown in FIG. 1 , in the first loop processing, bypass encoding is not used and encoding of the coefficient information flag is skipped when the CCB exceeds the thres. Then, in the second loop processing, when the coefficient information flag corresponding to the coefficient to be processed has not been encoded, the encoding device 100 encodes the value of the coefficient by Golomblais encoding without using the coefficient information flag.

[0592] In addition, Fig.48In the first loop processing of , the syntax for encoding the coefficient information flags may be different between the case where the orthogonal transform is applied and the case where the orthogonal transform is not applied. For example, a part or all of the coefficient information flags may be different between one or more coefficient information flags when the orthogonal transform is applied and one or more coefficient information flags when the orthogonal transform is not applied.

[0593] [Effect of the first example of the second aspect of coefficient encoding]

[0594] according to Fig.52 In the example of , even if the coding syntax of the coefficient information flag is different depending on whether or not an orthogonal transform is applied, the coding syntax of 16 coefficients in the sub-block after the CCB exceeds the thres may be made common regardless of whether or not an orthogonal transform is applied. Therefore, a part of the circuit may be made common between the case where an orthogonal transform is applied and the case where an orthogonal transform is not applied, and the circuit scale may be reduced.

[0595] Furthermore, after CCB exceeds thres, the coefficient is encoded without being divided into the coefficient information flag encoded by bypass encoding and the residual value information encoded by Golombreis encoding. Therefore, it is possible to suppress the increase in the amount of information and the increase in the amount of encoding.

[0596] [Second example of the second aspect of coefficient encoding]

[0597] Fig.53 : is a flowchart showing a coefficient encoding method of the second example of the second aspect. Fig.53 In the example of FIG. 14 , even when an orthogonal transform is applied to a block, the case where the 16 coefficients in the sub-block are encoded by the second encoding method (S147a) is the same as Fig.47 The examples are different.

[0598] That is, in Fig.53 In the example of Fig.48 The first encoding method shown in the figure is used Fig.49 The second encoding method shown in FIG. 1 encodes 16 coefficients in the sub-block ( S147a ). That is, whether or not orthogonal transformation is applied, the encoding device 100 does not use Fig.48 The first encoding method shown in the figure is used Fig.49 The second coding method shown encodes 16 coefficients in a sub-block.

[0599] More specifically, the encoding device 100 performs the encoding according to Fig.49In the second coding method shown, in the first loop process, when the CCB exceeds the thres, the coefficient information flag is encoded by bypass coding without skipping the coding. Then, in the second loop process, the coding device 100 encodes the remainder depending on the coefficient information flag by Golombre coding.

[0600] In addition, Fig.49 The syntax for encoding the coefficient information flags in the first loop processing of may be different between the case where an orthogonal transform is applied and the case where an orthogonal transform is not applied. For example, a part or all of the coefficient information flags may be different between one or more coefficient information flags when an orthogonal transform is applied and one or more coefficient information flags when an orthogonal transform is not applied.

[0601] [Effect of the Second Example of the Second Form of Coefficient Coding]

[0602] according to Fig.53 For example, even if the syntax of encoding the coefficient information flag is different depending on whether or not an orthogonal transform is present, the syntax of encoding the 16 coefficients in the sub-block after the CCB exceeds the thres may be common regardless of whether or not an orthogonal transform is present. Therefore, a part of the circuit may be commonized between the case where an orthogonal transform is applied and the case where an orthogonal transform is not applied, and the circuit scale may be reduced.

[0603] [Third form of coefficient coding]

[0604] Fig.54 This is a syntax diagram showing the basic first encoding method of the third form. Fig.54 The syntax shown corresponds to Fig.47 An example of the syntax of the first encoding method is shown in FIG. Basically, the first encoding method is used when an orthogonal transform is applied.

[0605] Here, the coefficient information flags and parameters are the same as those shown in the first aspect. In addition, the plurality of coefficient information flags shown here are examples, and other plurality of coefficient information flags may be encoded. For example, some coefficient information flags may not be encoded. In addition, the coefficient information flags shown here may be replaced with coefficient information flags or parameters having other meanings.

[0606] Fig.54 The initial for loop in the example corresponds to Fig.48In the first for loop of the example, if CCB remains, that is, if CCB does not exceed the threshold, the coefficient information flags such as sig_flag are encoded by CABAC encoding. If CCB does not remain, the coefficient information flags are not encoded. In addition, in this example, the second example of the second form can also be applied. That is, if CCB does not remain, the coefficient information flags can be encoded by bypass encoding.

[0607] The 2nd for loop from the top and the 3rd for loop from the top correspond to Fig.48 In the second for loop from the top, for the coefficients whose coefficient information flags have been encoded, the residual values ​​are encoded by Golomblais coding. In the third for loop from the top, for the coefficients whose coefficient information flags have not been encoded, the coefficients are encoded by Golomblais coding. In addition, by applying the second example of the second aspect to this example, the residual values ​​can also be always encoded by Golomblais coding.

[0608] In the fourth for loop from the top, sign_flag is encoded by bypass encoding.

[0609] The syntax described in this form can be applied to Fig.47 , Fig.48 , Fig.50 , Fig.51 and Fig.52 Examples of .

[0610] Fig.55 It is a syntax diagram representing the basic second encoding method of the third form. Fig.55 The syntax shown corresponds to Fig.47 An example of the syntax of the second encoding method. Basically, the second encoding method is used when orthogonal transformation is not applied.

[0611] In addition, the plurality of coefficient information flags shown here are examples, and other plurality of coefficient information flags may be encoded. For example, some coefficient information flags may not be encoded. In addition, the coefficient information flags shown here may be replaced with coefficient information flags or parameters having other meanings.

[0612] Fig.55 The first five for loops in the example correspond to Fig.49The first loop processing in the example of . If CCB remains in the first 5 for loops, that is, CCB does not exceed the threshold, the coefficient information flags such as sig_flag are encoded by CABAC encoding. If CCB does not remain, the coefficient information flags are encoded by bypass encoding. In addition, in this example, the first example of the second form can also be applied. That is, if CCB does not remain, the coefficient information flags may not be encoded.

[0613] The sixth for loop from the top corresponds to Fig.49 In the sixth for loop from the top, the residual value is encoded by Golomblais coding. In this example, the first example of the second form can also be applied. That is, for the coefficient whose coefficient information flag is encoded, the residual value can be encoded by Golomblais coding. Then, for the coefficient whose coefficient information flag is not encoded, the coefficient can be encoded by Golomblais coding.

[0614] The syntax described in this form can be applied to Fig.47 , Fig.49 , Fig.50 , Fig.51 and Fig.53 Examples in .

[0615] Without applying orthogonal transformation ( Fig.55 ), the number of loop processes for encoding the coefficient information flag is greater than that in the case of applying an orthogonal transform ( Fig.54 ). Therefore, when the orthogonal transform is not applied, the amount of hardware processing may increase compared to the case where the orthogonal transform is applied. In addition, since the syntax of coefficient coding is different depending on whether or not the orthogonal transform is performed, it may be necessary to prepare circuits separately. Therefore, the circuit may become complicated.

[0616] [First example of the third aspect of coefficient encoding]

[0617] Fig.56 This is a syntax diagram showing the second encoding method of the first example of the third aspect. Fig.56 The syntax shown corresponds to Fig.47 An example of the second encoding method. Fig.47 You can also use the first encoding method of Fig.54 In addition, this example can be combined with other examples of the third form, and can also be combined with other forms.

[0618] Fig.56 The initial for loop in the example corresponds to Fig.49The first loop process in the example of . If, in the first for loop, the CCB has more than 8 remaining, that is, if the CCB with 8 added does not exceed the threshold, up to 8 coefficient information flags are encoded by CABAC encoding according to the coefficient, and the CCB is incremented up to 8 times. If the CCB does not have more than 8 remaining, that is, if the CCB with 8 added exceeds the threshold, 8 coefficient information flags are encoded by bypass encoding according to the coefficient.

[0619] In other words, before encoding the 8 coefficient information flags, it is generally determined whether the 8 coefficient information flags can be encoded by CABAC encoding. Then, if the 8 coefficient information flags can be encoded by CABAC encoding, a maximum of 8 coefficient information flags are encoded by CABAC encoding.

[0620] In this example, the first example of the second aspect can also be applied. That is, if there are not more than 8 CCBs remaining, the 8 coefficient information flags do not need to be encoded. That is, in this case, instead of encoding the 8 coefficient information flags by bypass encoding, the encoding of the 8 coefficient information flags can be skipped.

[0621] In addition, if Fig.56 As shown, the encoding of one or more coefficient information flags among the eight coefficient information flags may be omitted according to the value of the coefficient. For example, when sig_flag is 0, the encoding of the remaining seven coefficient information flags may be omitted.

[0622] The second for loop from the top corresponds to Fig.49 In the second for loop from the top, the residual value is encoded by Golomblais coding. In this example, the first example of the second form can also be applied. That is, for the coefficients whose 8 coefficient information flags are encoded, the residual value can be encoded by Golomblais coding, and for the coefficients whose 8 coefficient information flags are not encoded, the coefficient can be encoded by Golomblais coding.

[0623] The multiple coefficient information flags shown here are just examples, and other multiple coefficient information flags may be encoded. For example, some coefficient information flags may not be encoded. In addition, the coefficient information flags shown here may be replaced with coefficient information flags or parameters having other meanings.

[0624] In addition, you can also combine Fig.55 Examples and Fig.56 For example, in Fig.55In the example of , before the four coefficient information flags such as sig_flag and sign_flag are encoded, it can be generally determined whether the four coefficient information flags can be encoded by CABAC encoding.

[0625] [Effect of the first example of the third aspect of coefficient encoding]

[0626] exist Fig.56 In the example of , all coefficient information flags encoded by CABAC encoding are encoded in one loop process. Fig.55 Compared with the example in Fig.56 In the example above, the number of loops processed is small. Therefore, the processing volume may be reduced.

[0627] In addition, Fig.54 Examples and Fig.56 In the example of , the number of loop processes for encoding a plurality of coefficient information flags by CABAC encoding is the same. Fig.54 Examples and Fig.55 Compared with the combination of examples in Fig.54 Examples and Fig.56 In the combination of the examples, the number of circuit changes may be reduced.

[0628] Furthermore, before a plurality of coefficient information flags are encoded, it is collectively determined whether or not the plurality of coefficient information flags can be encoded by CABAC encoding, so that the processing is simplified and processing delay can be reduced.

[0629] Furthermore, in both the case where orthogonal transform is applied and the case where orthogonal transform is not applied, it can be determined collectively whether or not a plurality of coefficient information flags can be encoded by CABAC encoding before the plurality of coefficient information flags are encoded. Therefore, the difference between the encoding method used in the block to which orthogonal transform is applied and the encoding method used in the block to which orthogonal transform is not applied is further reduced, and the circuit scale is likely to be further reduced.

[0630] In addition, Fig.56 In the example of , sig_flag to abs_gt9_flag are included in one loop, but the encoding method is not limited to this. Multiple loops (for example, two loops) may be used, and it may be generally determined whether it is possible to encode multiple coefficient information flags of each loop by CABAC encoding. Compared with one loop, the processing increases, but it is the same as Fig.55 Compared with the example, the same processing reduction effect can be obtained.

[0631] [Second example of the third aspect of coefficient encoding]

[0632] Fig.57This is a syntax diagram showing the second encoding method of the second example of the third aspect. Fig.57 The syntax shown corresponds to Fig.47 An example of the second encoding method. Fig.47 You can also use the first encoding method of Fig.54 In addition, this example can be combined with other examples of the third form, and can also be combined with other forms.

[0633] Fig.57 The initial for loop in the example corresponds to Fig.49 The first loop process in the example of . If more than 7 CCBs remain in this first for loop, that is, if the CCB with 7 added does not exceed the threshold, up to 7 coefficient information flags are encoded by CABAC encoding according to the coefficients, and the CCB is incremented up to 7 times. If more than 7 CCBs do not remain, that is, if the CCB with 7 added exceeds the threshold, 7 coefficient information flags are encoded by bypass encoding according to the coefficients.

[0634] In other words, before encoding the 7 coefficient information flags, it is generally determined whether the 7 coefficient information flags can be encoded by CABAC encoding. Then, if the 7 coefficient information flags can be encoded by CABAC encoding, the 7 coefficient information flags are encoded by CABAC encoding.

[0635] In addition, in this example, the first example of the second aspect can also be applied. That is, if there are more than 7 CCBs remaining, the 7 coefficient information flags may not be encoded. That is, in this case, the encoding of the 7 coefficient information flags may be skipped instead of encoding the 7 coefficient information flags by bypass encoding.

[0636] In addition, if Fig.57 As shown, the coding of one or more coefficient information flags among the seven coefficient information flags may be omitted according to the value of the coefficient. For example, when sig_flag is 0, the coding of the remaining six coefficient information flags may be omitted.

[0637] The second for loop from the top corresponds to Fig.49 In the second for loop from the top, the residual value is encoded by Golomblais coding. In this example, the first example of the second form can also be applied. That is, for the coefficients whose 7 coefficient information flags are encoded, the residual value can be encoded by Golomblais coding, and for the coefficients whose 7 coefficient information flags are not encoded, the coefficient can be encoded by Golomblais coding.

[0638] In the third for loop from the top, if CCB remains, that is, CCB does not exceed the threshold, sign_flag is encoded by CABAC encoding, and CCB is counted up. If CCB does not remain, sign_flag is encoded by bypass encoding. Fig.54 As in the example above, sign_flag can always be encoded via bypass coding.

[0639] The multiple coefficient information flags shown here are just examples, and other multiple coefficient information flags may be encoded. For example, some coefficient information flags may not be encoded. In addition, the coefficient information flags shown here may be replaced with coefficient information flags or parameters having other meanings.

[0640] In addition, you can also combine Fig.55 Examples and Fig.57 For example, in Fig.55 In the example of , before the four coefficient information flags such as sig_flag and sign_flag are encoded, it can be generally determined whether the four coefficient information flags can be encoded by CABAC encoding.

[0641] [Effect of the Second Example of the Third Aspect of Coefficient Coding]

[0642] and Fig.56 Same as the example, in Fig.57 In the example of , multiple coefficient information flags (specifically, abs_gt3_flag and abs_gt5_flag, etc.) for indicating the magnitude of the coefficient by comparing it with the threshold value are encoded in one loop process. Fig.55 Compared with the example in Fig.57 In the example, the number of loop processes is small. Therefore, the processing volume may be reduced.

[0643] and Fig.56 Compared with the example in Fig.57 In the example of , the number of loop processes for encoding multiple coefficient information flags increases. Fig.56 Compared with the example in Fig.57 In the example, there is Fig.54 For example, sign_flag is encoded last. Therefore, Fig.54 Examples and Fig.56 Compared with the combination of examples in Fig.54 Examples and Fig.57 In the combination of the examples, the number of circuit changes may be reduced.

[0644] Furthermore, before a plurality of coefficient information flags are encoded, it is collectively determined whether or not the plurality of coefficient information flags can be encoded by CABAC encoding, so that the processing is simplified and processing delay can be reduced.

[0645] In both the case where orthogonal transform is applied and the case where orthogonal transform is not applied, it can be determined collectively whether or not multiple coefficient information flags can be encoded by CABAC encoding before multiple coefficient information flags are encoded. Therefore, the difference between the encoding method used in the block to which orthogonal transform is applied and the encoding method used in the block to which orthogonal transform is not applied is further reduced, and the circuit scale is likely to be further reduced.

[0646] In addition, Fig.57 In the example of , sig_flag to abs_gt9_flag are included in one loop, but the encoding method is not limited to this. Multiple loops (for example, two loops) may be used, and it may be generally determined whether it is possible to encode multiple coefficient information flags of each loop by CABAC encoding. Compared with one loop, the processing increases, but it is the same as Fig.55 Compared with the example, the same processing reduction effect can be obtained.

[0647] [Modification of coefficient encoding]

[0648] Any of the above-mentioned multiple forms and any of the above-mentioned multiple examples related to the coefficient coding can be combined. In addition, any of the above-mentioned multiple forms, multiple examples and any of the multiple combinations thereof can be applied to both the luminance block and the chrominance block. In this case, different thres can be used in the luminance block and the chrominance block.

[0649] In addition, any one of the above-mentioned multiple forms, multiple examples and any combination of multiple forms related to coefficient encoding can be used for the block, the block is a block to which orthogonal transform is not applied and is a block to which BDPCM (Block-based Delta Pulse Code Modulation) is applied. In the block to which BDPCM is applied, the amount of information of each residual signal in the block is reduced by subtracting the residual signal vertically or horizontally adjacent to the residual signal from the residual signal.

[0650] Furthermore, any one of the above-described multiple forms, multiple examples, and any combination of multiple forms related to coefficient encoding may be used for a block to which BDPCM is applied and which is a chrominance block.

[0651] In addition, for blocks to which ISP (Intra Sub-Partitions) is applied, any one of the multiple forms, multiple examples, and any combination of the above-mentioned coefficient coding may be used. In ISP, an intra block is divided vertically or horizontally, and the pixel values ​​of the sub-blocks adjacent to each sub-block are used to perform intra prediction of the sub-block.

[0652] Furthermore, any one of the plurality of forms, plurality of examples, and any combination thereof related to the above-mentioned coefficient encoding may be used for a block to which ISP is applied and which is a chrominance block.

[0653] In addition, when chroma joint coding is used as the coding mode of the chroma block, any one of the multiple forms, multiple examples and any combination thereof related to the above-mentioned coefficient coding can be used. Here, chroma joint coding is a coding method that derives the value of Cr from the value of Cb.

[0654] Furthermore, the value of thres in the case where orthogonal transformation is applied may be twice the value of thres in the case where orthogonal transformation is not applied. Alternatively, the value of thres in the case where orthogonal transformation is not applied may be twice the value of thres in the case where orthogonal transformation is applied.

[0655] In addition, when only color difference combined coding is used, the value of thres of CCB when orthogonal transform is applied may be twice the value of thres of CCB when orthogonal transform is not applied. Alternatively, when only color difference combined coding is used, the value of thres of CCB when orthogonal transform is not applied may be twice the value of thres of CCB when orthogonal transform is applied.

[0656] In addition, in the above-mentioned multiple forms and multiple examples related to coefficient encoding, the scanning order of multiple coefficients in a block to which orthogonal transform is not applied can be the same as the scanning order of multiple coefficients in a block to which orthogonal transform is applied.

[0657] In addition, although several examples of syntax are shown in the third aspect and multiple examples of the third aspect, the syntax to be applied is not limited to these examples. For example, in multiple aspects different from the third aspect and in multiple examples thereof, a syntax different from any of the multiple syntaxes shown in the third aspect and multiple examples thereof may be used. Various syntaxes for encoding 16 coefficients can be applied.

[0658] In addition, in the multiple forms and multiple examples of coefficient coding, the coding process flow is shown, but the decoding process flow is basically the same as the coding process flow except for the difference between sending and receiving bit streams. For example, the decoding device 200 can perform inverse orthogonal transformation and decoding corresponding to the orthogonal transformation and encoding performed by the encoding device 100.

[0659] In addition, each flowchart related to a plurality of forms and a plurality of examples of coefficient coding is an example, and a condition or process may be newly added to each flowchart, or a condition or process may be deleted, or a condition or process may be changed.

[0660] In addition, here, the coefficient is the value of an image constituting a block or a sub-block. Specifically, the multiple coefficients constituting the image can be obtained from the multiple pixel values ​​of the image through orthogonal transformation. In addition, the multiple coefficients constituting the image can be obtained from the multiple pixel values ​​of the image without orthogonal transformation. That is, the multiple coefficients constituting the image can be the multiple pixel values ​​of the image themselves. In addition, each pixel value can be the pixel value of the original image or the value of the prediction residual. In addition, the coefficient can be quantized.

[0661] [Representative examples of structure and processing]

[0662] A representative example of the configuration and processing of the encoding device 100 and the decoding device 200 described above is shown below.

[0663] Fig.58 is a flowchart showing the operation of the coding device 100. For example, the coding device 100 includes a circuit and a memory connected to the circuit. The circuit and memory included in the coding device 100 may also correspond to Fig.40 The circuit of the encoding device 100 performs Fig.58 Specifically, the circuit of the encoding device 100 encodes a block of an image during the operation (S211).

[0664] In one example, the circuit of the encoding device 100 may encode a block of an image by limiting the number of times of context adaptive encoding. Then, in both cases of applying an orthogonal transform to a block and not applying an orthogonal transform to a block, the sub-block flag encoding process may be performed without including it in the number of times of processing to be limited.

[0665] Here, the sub-block flag encoding process is a process of encoding a sub-block flag indicating whether a sub-block included in a block includes a non-zero coefficient by context adaptive encoding.

[0666] Thus, regardless of whether or not orthogonal transformation is applied and the number of times of context adaptive coding processing is limited, the sub-block flag may be encoded by context adaptive coding. Therefore, the amount of coding may be reduced. In addition, the difference between the coding method used in the block to which orthogonal transformation is applied and the coding method used in the block not to which orthogonal transformation is applied may be reduced, and the circuit scale may be reduced.

[0667] In addition, the circuit of the encoding device 100 can perform a position parameter encoding process without including the position parameter encoding process in the number of processing times of the restricted object when applying an orthogonal transform to the block. Here, the position parameter encoding process is a process of encoding a parameter representing the position of the first non-zero coefficient in the block in the scanning order by context adaptive coding.

[0668] Therefore, when orthogonal transform is applied, the parameter indicating the position of the first non-zero coefficient may be encoded by context adaptive coding regardless of whether the number of times of context adaptive coding is limited. Therefore, the amount of coding may be reduced.

[0669] Furthermore, the circuit of the encoding device 100 can also determine the limit range of the number of processing times according to the position of the first non-zero coefficient when applying an orthogonal transform to a block. Therefore, when applying an orthogonal transform, it is possible to appropriately determine the limit number of processing times. Therefore, it is possible to appropriately adjust the balance between the reduction of the coding amount and the reduction of the processing delay.

[0670] In another example, the circuit of the encoding device 100 may operate as follows in both cases of applying an orthogonal transform to a block of the encoding target image and not applying an orthogonal transform to the block.

[0671] Specifically, in both cases, when the number of processing times of context adaptive coding is within the limit of the number of processing times, the circuit of the encoding device 100 may encode the coefficient information flag by context adaptive coding. In addition, in both cases, when the number of processing times of context adaptive coding is not within the limit of the number of processing times, the circuit of the encoding device 100 may also skip encoding of the coefficient information flag. Here, the coefficient information flag indicates the attributes of the coefficients included in the block.

[0672] Then, in the case where the coefficient information flag is encoded, the circuit of the encoding device 100 can encode the residual value information by Golomblais coding. Here, the residual value information is information for reconstructing the value of the coefficient using the coefficient information flag. In addition, in the case where the encoding of the coefficient information flag is skipped, the circuit of the encoding device 100 can encode the value of the coefficient by Golomblais coding.

[0673] Thus, regardless of whether or not orthogonal transform is applied, it is possible to skip encoding of coefficient information flags according to the limit of the number of processing times of context adaptive coding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of coding. In addition, it is possible to reduce the difference between the encoding method used in a block to which orthogonal transform is applied and the encoding method used in a block to which orthogonal transform is not applied, and it is possible to reduce the circuit scale.

[0674] In addition, the coefficient information flag may also be a flag indicating whether the value of the coefficient is greater than 1. Thus, regardless of whether or not an orthogonal transform is applied, the encoding of the coefficient information flag indicating whether the value of the coefficient is greater than 1 may be skipped according to the limit of the number of processing times of context adaptive coding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of coding.

[0675] In another example, the circuit of the encoding device 100 may limit the number of times of processing of the context adaptive coding and encode the block of the image. Furthermore, when the orthogonal transform is not applied to the block, it may be determined whether a plurality of coefficient information flags respectively indicating a plurality of attributes of the coefficients included in the block satisfy the processing conditions. Then, when it is determined that the processing conditions are satisfied, the plurality of coefficient information flags may be encoded by the context adaptive coding.

[0676] Here, the processing condition is a condition that the number of processing times obtained by adding the number of coefficient information flags to the number of processing times is within a limited range of the number of processing times.

[0677] Thus, in the case where the orthogonal transform is not applied, it is possible to collectively determine whether context adaptive coding can be used for a plurality of coefficient information flags. Therefore, it is possible that the processing is simplified and the processing delay is reduced. In addition, in the case where similar processing is performed on blocks to which the orthogonal transform is applied, the difference between the encoding method used in the blocks to which the orthogonal transform is applied and the encoding method used in the blocks to which the orthogonal transform is not applied is likely to be reduced, and the circuit scale is likely to be reduced.

[0678] Furthermore, the plurality of coefficient information flags may include a coefficient information flag indicating whether the value of the coefficient is greater than 3 and a coefficient information flag indicating whether the value of the coefficient is greater than 5. Thus, it is possible to make a blanket determination of the plurality of coefficient information flags including the coefficient information flag indicating whether the value of the coefficient is greater than 3 and the coefficient information flag indicating whether the value of the coefficient is greater than 5. Therefore, the processing may be simplified and the processing delay may be reduced.

[0679] Furthermore, the plurality of coefficient information flags may include a coefficient information flag indicating whether the value of the coefficient is greater than 7 and a coefficient information flag indicating whether the value of the coefficient is greater than 9. Thus, it is possible to collectively determine the plurality of coefficient information flags including four coefficient information flags, namely, whether the value of the coefficient is greater than 3, whether the value of the coefficient is greater than 5, whether the value of the coefficient is greater than 7, and whether the value of the coefficient is greater than 9. Therefore, the processing may be simplified and the processing delay may be reduced.

[0680] Note that the above-described operations performed by the circuit of the encoding device 100 may also be performed by the entropy encoding unit 110 of the encoding device 100 .

[0681] Fig.59 is a flowchart showing the operation of the decoding device 200. For example, the decoding device 200 includes a circuit and a memory connected to the circuit. The circuit and memory included in the decoding device 200 may correspond to Fig.46 The circuit of the decoding device 200 performs Fig.59 Specifically, the circuit of the decoding device 200 decodes a block of an image during operation ( S221 ).

[0682] In one example, the circuit of the decoding device 200 may limit the number of context adaptive decoding processing times and decode the image block. Then, in both the case where the inverse orthogonal transform is applied to the block and the case where the inverse orthogonal transform is not applied to the block, the sub-block flag decoding process may be performed without including it in the limited target processing times.

[0683] Here, the sub-block flag decoding process is a process of decoding a sub-block flag indicating whether a sub-block included in a block includes a non-zero coefficient by context adaptive decoding.

[0684] Thus, it is possible to decode the sub-block flag by context adaptive decoding regardless of whether the inverse orthogonal transform is applied and whether the number of times of context adaptive decoding processing is limited. Therefore, the amount of coding may be reduced. In addition, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block not to which the inverse orthogonal transform is applied may be reduced, and the circuit scale may be reduced.

[0685] Furthermore, the circuit of the decoding device 200 may perform position parameter decoding processing without including it in the number of processing times of the restricted object when applying an inverse orthogonal transform to the block. Here, the position parameter decoding processing is a process of decoding a parameter indicating the position of the first non-zero coefficient in the block in the scanning order by context adaptive decoding.

[0686] Therefore, when the inverse orthogonal transform is applied, the parameter indicating the position of the first non-zero coefficient may be decoded by the context adaptive decoding regardless of whether the number of times of the context adaptive decoding is limited. Therefore, the amount of code may be reduced.

[0687] Furthermore, the circuit of the decoding device 200 can determine the range of the limit of the number of processing times according to the position of the first non-zero coefficient when the inverse orthogonal transform is applied to the block. Thus, when the inverse orthogonal transform is applied, it is possible to appropriately determine the limit of the number of processing times. Therefore, it is possible to appropriately adjust the balance between the reduction of the code amount and the reduction of the processing delay.

[0688] In another example, the circuit of the decoding device 200 may operate as follows in both cases of applying an inverse orthogonal transform to a block of a decoding target image and not applying an inverse orthogonal transform to the block.

[0689] Specifically, in both cases, when the number of processing times of context adaptive decoding is within the limit of the number of processing times, the circuit of the decoding device 200 may also decode the coefficient information flag by context adaptive decoding. In addition, in both cases, when the number of processing times of context adaptive decoding is not within the limit of the number of processing times, the circuit of the decoding device 200 may also skip decoding of the coefficient information flag. Here, the coefficient information flag indicates the attributes of the coefficients included in the block.

[0690] Then, in the case where the coefficient information flag is decoded, the circuit of the decoding device 200 can decode the residual value information by Golomblais decoding. Here, the residual value information is information for reconstructing the value of the coefficient using the coefficient information flag. In addition, in the case where the decoding of the coefficient information flag is skipped, the circuit of the decoding device 200 can decode the value of the coefficient by Golomblais decoding.

[0691] Thus, regardless of whether or not the inverse orthogonal transform is applied, it is possible to skip decoding of the coefficient information flag according to the limit of the number of processing times of context adaptive decoding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of code. In addition, the difference between the decoding method used in a block to which the inverse orthogonal transform is applied and the decoding method used in a block to which the inverse orthogonal transform is not applied may be reduced, and the circuit scale may be reduced.

[0692] In addition, the coefficient information flag may also be a flag indicating whether the value of the coefficient is greater than 1. Thus, regardless of whether the inverse orthogonal transform is applied, it is possible to skip decoding of the coefficient information flag indicating whether the value of the coefficient is greater than 1 according to the limit of the number of processing times of context adaptive decoding. Therefore, it is possible to suppress an increase in processing delay and suppress an increase in the amount of coding.

[0693] In another example, the circuit of the decoding device 200 may decode the block of the image by limiting the number of times of processing of the context adaptive decoding. Then, when the inverse orthogonal transform is not applied to the block, it may be determined whether a plurality of coefficient information flags respectively indicating a plurality of attributes of the coefficients included in the block satisfy the processing conditions. Then, when it is determined that the processing conditions are satisfied, the plurality of coefficient information flags may also be decoded by the context adaptive decoding.

[0694] Here, the processing condition is a condition that the number of processing times obtained by adding the number of coefficient information flags to the number of processing times is within a limited range of the number of processing times.

[0695] Thus, even when the inverse orthogonal transform is not applied, it is possible to collectively determine whether context adaptive decoding can be used for a plurality of coefficient information flags. Therefore, the processing can be simplified and the processing delay can be reduced. In addition, when similar processing is performed on blocks to which the inverse orthogonal transform is applied, the difference between the decoding method used in the block to which the inverse orthogonal transform is applied and the decoding method used in the block to which the inverse orthogonal transform is not applied can be reduced, and the circuit scale can be reduced.

[0696] Furthermore, the plurality of coefficient information flags may include a coefficient information flag indicating whether the value of the coefficient is greater than 3 and a coefficient information flag indicating whether the value of the coefficient is greater than 5. Thus, it is possible to make a blanket determination of the plurality of coefficient information flags including the coefficient information flag indicating whether the value of the coefficient is greater than 3 and the coefficient information flag indicating whether the value of the coefficient is greater than 5. Therefore, the processing may be simplified and the processing delay may be reduced.

[0697] Furthermore, the plurality of coefficient information flags may include a coefficient information flag indicating whether the value of the coefficient is greater than 7 and a coefficient information flag indicating whether the value of the coefficient is greater than 9. Thus, it is possible to collectively determine the plurality of coefficient information flags including four coefficient information flags, namely, whether the value of the coefficient is greater than 3, whether the value of the coefficient is greater than 5, whether the value of the coefficient is greater than 7, and whether the value of the coefficient is greater than 9. Therefore, the processing may be simplified and the processing delay may be reduced.

[0698] Note that the above-described operations performed by the circuits of the decoding device 200 may also be performed by the entropy decoding unit 202 of the decoding device 200 .

[0699] [Other examples]

[0700] The encoding device 100 and the decoding device 200 in the above-mentioned examples can be used as an image encoding device and an image decoding device, respectively, or can be used as a moving picture encoding device and a moving picture decoding device, respectively.

[0701] In addition, the encoding device 100 and the decoding device 200 may perform only some of the above operations, and other devices may perform other operations. In addition, the encoding device 100 and the decoding device 200 may include only some of the above components, and other devices may include other components.

[0702] Furthermore, at least a part of each of the above-mentioned examples may be used as an encoding method or a decoding method, or may be used as other methods.

[0703] In addition, each component may be formed by dedicated hardware or implemented by executing a software program suitable for each component. Each component may be implemented by a program execution unit such as a CPU or a processor reading and executing a software program recorded in a recording medium such as a hard disk or a semiconductor memory.

[0704] Specifically, the encoding device 100 and the decoding device 200 may each include a processing circuit and a storage device electrically connected to the processing circuit and accessible from the processing circuit. For example, the processing circuit corresponds to the processor a1 or b1, and the storage device corresponds to the memory a2 or b2.

[0705] The processing circuit includes at least one of dedicated hardware and a program execution unit, and uses the storage device to execute processing. In addition, when the processing circuit includes the program execution unit, the storage device stores a software program executed by the program execution unit.

[0706] Here, the software that realizes the above-mentioned encoding device 100 or decoding device 200, etc. is the following program.

[0707] For example, the program can cause a computer to execute a coding method, wherein the coding method is: encoding a block of an image by limiting the number of processing times of context adaptive coding, in the coding of the block, in both cases of a case where an orthogonal transform is applied to the block and a case where an orthogonal transform is not applied to the block, a sub-block flag encoding process is performed without including it in the number of processing times, and the sub-block flag encoding process encodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive coding.

[0708] In addition, for example, the program can cause a computer to execute a decoding method, wherein the decoding method is: decoding a block of an image while limiting the number of processing times of context adaptive decoding, in the decoding of the block, in both cases of a case where an inverse orthogonal transform is applied to the block and a case where an inverse orthogonal transform is not applied to the block, a sub-block flag decoding process is performed without including it in the number of processing times, and the sub-block flag decoding process decodes a sub-block flag indicating whether a sub-block included in the block includes a non-zero coefficient through context adaptive decoding.

[0709] In addition, for example, the program can cause a computer to execute a coding method, which is: in both cases of applying an orthogonal transform to a block of an encoding object image and not applying an orthogonal transform to the block, when the number of processing times of context adaptive coding is within a limit range of the processing times, encoding a coefficient information flag representing the attributes of a coefficient contained in the block is performed by context adaptive coding, when the number of processing times is not within the limit range of the processing times, skipping the encoding of the coefficient information flag, when the coefficient information flag is encoded, encoding residual value information for reconstructing the value of the coefficient using the coefficient information flag by Golombirai coding, and when the encoding of the coefficient information flag is skipped, encoding the value of the coefficient by Golombirai coding.

[0710] In addition, for example, the program can cause a computer to execute a decoding method, which is: in both cases of applying an inverse orthogonal transform to a block of a decoding object image and not applying an inverse orthogonal transform to the block, when the number of processing times of context adaptive decoding is within a limit range of the processing times, decoding of a coefficient information flag indicating an attribute of a coefficient contained in the block is performed by context adaptive decoding, when the number of processing times is not within the limit range of the processing times, skipping decoding of the coefficient information flag, when the coefficient information flag is decoded, decoding of residual value information used to reconstruct the value of the coefficient using the coefficient information flag by Columbus decoding, and when the decoding of the coefficient information flag is skipped, decoding of the value of the coefficient by Columbus decoding.

[0711] In addition, for example, the program can cause a computer to execute a coding method, wherein the coding method is: encoding a block of an image while limiting the number of processing times of context adaptive coding, in the coding of the block, when no orthogonal transform is applied to the block, determining whether a plurality of coefficient information flags respectively representing a plurality of attributes of coefficients contained in the block satisfy a processing condition, and when it is determined that the processing condition is satisfied, encoding the plurality of coefficient information flags through context adaptive coding, the processing condition being the following condition: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within a limited range of the processing times.

[0712] In addition, for example, the program can cause a computer to execute a decoding method, which is: decoding a block of an image while limiting the number of processing times of context adaptive decoding, in the decoding of the block, without applying an inverse orthogonal transform to the block, determining whether a plurality of coefficient information flags respectively representing a plurality of attributes of coefficients contained in the block satisfy a processing condition, and if it is determined that the processing condition is satisfied, decoding the plurality of coefficient information flags through context adaptive decoding, the processing condition being the following condition: the number of processing times when the number of the plurality of coefficient information flags is added to the number of processing times is within a limited range of the processing times.

[0713] In addition, as described above, each component may also be a circuit. These circuits may constitute one circuit as a whole, or they may be different circuits. In addition, each component may be implemented by a general-purpose processor or a dedicated processor.

[0714] In addition, the processing performed by a specific component may be performed by other components. In addition, the order of performing the processing may be changed, and a plurality of processing may be performed simultaneously. In addition, the encoding and decoding device may include the encoding device 100 and the decoding device 200.

[0715] In addition, the ordinal numbers such as 1 and 2 used in the description may be appropriately switched. In addition, new ordinal numbers may be assigned to components and the like, or ordinal numbers may be removed.

[0716] The above describes the forms of the encoding device 100 and the decoding device 200 based on multiple examples, but the forms of the encoding device 100 and the decoding device 200 are not limited to these examples. As long as it does not depart from the gist of the present invention, various modified forms that can be thought of by those skilled in the art are implemented on each example, and forms constructed by combining constituent elements in different examples can also be included in the scope of the forms of the encoding device 100 and the decoding device 200.

[0717] One or more forms disclosed herein may be combined with at least a portion of other forms of the present invention for implementation. In addition, a portion of the processing, a portion of the structure of the device, a portion of the syntax, etc. recorded in the flowchart of one or more forms disclosed herein may be combined with other forms for implementation.

[0718] [Implementation and Application]

[0719] In each of the above embodiments, each functional block or active block can usually be implemented by an MPU (microprocessing unit) and a memory. In addition, the processing of each functional block can also be implemented by a program execution unit such as a processor that reads and executes the software (program) recorded in a recording medium such as a ROM. The software can be distributed. The software can also be recorded in various recording media such as semiconductor memories. In addition, each functional block can also be implemented by hardware (dedicated circuit). Various combinations of hardware and software can be used.

[0720] The processing described in each embodiment can be implemented by centralized processing using a single device (system), or can be implemented by distributed processing using multiple devices. In addition, the processor that executes the above program can be single or multiple. That is, centralized processing can be performed or distributed processing can be performed.

[0721] The aspects of the present invention are not limited to the above-described embodiments, and various modifications can be made, which are also included in the scope of the aspects of the present invention.

[0722] Furthermore, here, an application example of the moving picture encoding method (image encoding method) or the moving picture decoding method (image decoding method) shown in each of the above embodiments and various systems implementing the application example are described. Such a system may also be characterized by having an image encoding device using the image encoding method, an image decoding device using the image decoding method, or an image encoding and decoding device having both. Other structures of such a system can be appropriately changed according to circumstances.

[0723] [Example of use]

[0724] Fig.60 The figure shows the overall structure of a content supply system ex100 for realizing content distribution service. The communication service providing area is divided into desired sizes, and base stations ex106, ex107, ex108, ex109, and ex110, which are fixed wireless stations in the example shown in the figure, are respectively installed in each cell.

[0725] In the content supply system ex100, devices such as a computer ex111, a game machine ex112, a camera ex113, a home appliance ex114, and a smartphone ex115 are connected to the Internet ex101 via an Internet service provider ex102 or a communication network ex104, and base stations ex106 to ex110. The content supply system ex100 may also connect some of the above devices in combination. In various embodiments, the devices may be directly or indirectly connected to each other via a telephone network or short-range wireless instead of via base stations ex106 to ex110. Furthermore, the streaming server ex103 may be connected to the devices such as the computer ex111, the game machine ex112, the camera ex113, the home appliance ex114, and the smartphone ex115 via the Internet ex101. Furthermore, the streaming server ex103 may be connected to a terminal in a hotspot in an airplane ex117 via a satellite ex116.

[0726] Alternatively, wireless access points or hotspots may be used instead of the base stations ex106 to ex110. Furthermore, the streaming server ex103 may be directly connected to the communication network ex104 without going through the Internet ex101 or the Internet service provider ex102, or directly connected to the aircraft ex117 without going through the satellite ex116.

[0727] The camera ex113 is a device such as a digital camera capable of taking still images and moving images. The smartphone ex115 is a smartphone, a mobile phone, or a PHS (Personal Handy-phone System) that supports mobile communication systems such as 2G, 3G, 3.9G, 4G, and 5G in the future.

[0728] The household appliance ex114 is a refrigerator or a device included in a household fuel cell cogeneration system.

[0729] In the content supply system ex100, a terminal having a camera function is connected to the streaming server ex103 via the base station ex106, etc., so that on-site distribution can be performed. In on-site distribution, a terminal (computer ex111, game machine ex112, camera ex113, home appliance ex114, smartphone ex115, terminal in airplane ex117, etc.) can perform the encoding process described in the above-mentioned embodiments on the still image or moving image content captured by the user using the terminal, multiplex the image data obtained by encoding and the sound data obtained by encoding the sound corresponding to the image, and transmit the obtained data to the streaming server ex103. That is, each terminal functions as an image encoding device according to one aspect of the present invention.

[0730] On the other hand, the streaming server ex103 streams the content data sent by the client that requested it. The client is a computer ex111, a game machine ex112, a camera ex113, a home appliance ex114, a smartphone ex115, or a terminal in an airplane ex117 that can decode the coded data. Each device that receives the distributed data can also decode and reproduce the received data. That is, each device can also function as an image decoding device according to one aspect of the present invention.

[0731] [Distributed processing]

[0732] In addition, the streaming media server ex103 can also be a plurality of servers or a plurality of computers, which distributes the data by distributing the processing or recording. For example, the streaming media server ex103 can also be implemented by CDN (Contents Delivery Network), which implements content distribution by connecting many edge servers scattered in the world to the network between the edge servers. In CDN, it is possible to dynamically allocate physically closer edge servers according to the client. And, by caching and distributing content to the edge server, it is possible to reduce delay. In addition, in the case of several types of errors or when the communication state changes due to the increase in the amount of communication, it is possible to distribute the processing by using a plurality of edge servers, or switch the distribution subject to other edge servers, or bypass the part of the network where the failure occurs and continue to distribute, so that high-speed and stable distribution can be achieved.

[0733] In addition, the encoding process of the captured data is not limited to the distributed processing itself, and the encoding process can be performed by each terminal, on the server side, or shared. As an example, two processing cycles are usually performed in the encoding process. In the first cycle, the complexity or encoding amount of the image of the frame or scene unit is detected. In addition, in the second cycle, processing is performed to maintain the image quality and improve the encoding efficiency. For example, by performing the first encoding process by the terminal and the second encoding process by the server side that receives the content, the quality and efficiency of the content can be improved while reducing the processing load in each terminal. In this case, if there is a request for receiving and decoding almost in real time, the data completed by the first encoding by the terminal can also be received and reproduced by other terminals, so more flexible real-time distribution can also be performed.

[0734] As another example, the camera ex113 or the like extracts feature quantities (features or feature quantities) from an image, compresses data on the feature quantities as metadata, and transmits the data to the server. The server determines the importance of an object based on the feature quantities, switches the quantization accuracy, and performs compression corresponding to the meaning of the image (or the importance of the content). The feature quantity data is particularly effective in improving the accuracy and efficiency of motion vector prediction during re-compression in the server. Alternatively, the terminal may perform simple encoding such as VLC (variable length coding), and the server may perform encoding with a large processing load such as CABAC (context adaptive binary arithmetic coding).

[0735] As another example, in a stadium, shopping mall, or factory, there are multiple video data obtained by shooting roughly the same scene by multiple terminals. In this case, multiple terminals that have shot, and other terminals and servers that have not shot as needed, are used to distribute the encoding processing, such as GOP (Group of Picture) units, picture units, or tile units obtained by dividing pictures, so as to perform distributed processing. This can reduce delays and better achieve real-time performance.

[0736] Since the multiple image data are substantially the same scene, the server can also manage and / or instruct the image data taken by each terminal to refer to each other. In addition, the server can receive the encoded data from each terminal and change the reference relationship between the multiple data, or modify or replace the image itself and re-encode it. In this way, a stream with improved quality and efficiency of each data can be generated.

[0737] Furthermore, the server may perform transcoding to change the encoding method of the video data and distribute the video data. For example, the server may convert the encoding method of the MPEG class to the VP class (such as VP9), or convert H.264 to H.265, etc.

[0738] Thus, the encoding process can be performed by a terminal or one or more servers. Therefore, the following uses "server" or "terminal" as the subject of the process, but part or all of the process performed by the server can also be performed by the terminal, and part or all of the process performed by the terminal can also be performed by the server. In addition, the same is true for the decoding process.

[0739] [3D, multi-angle]

[0740] There are more and more cases where images or videos taken by terminals such as multiple cameras ex113 and / or smartphones ex115 that are roughly synchronized with each other, or the same scene taken from different angles, are combined and used. The images taken by each terminal can be combined based on the relative position relationship between the terminals obtained separately, or the area with the same feature points contained in the images.

[0741] The server not only encodes two-dimensional moving images, but also can encode still images automatically or at a user-specified time based on scene analysis of moving images and send them to the receiving terminal. When the server is able to obtain the relative position relationship between the shooting terminals, it can generate not only two-dimensional moving images but also three-dimensional shapes of the scene based on images of the same scene shot from different angles. The server can also encode three-dimensional data generated by point clouds, etc. separately, and can also select or reconstruct images from images shot by multiple terminals based on the results of identifying or tracking people or targets using three-dimensional data to generate images sent to the receiving terminal.

[0742] In this way, the user can arbitrarily select each image corresponding to each shooting terminal to enjoy the scene, and can also enjoy the content of the image of the selected viewpoint cut out from the three-dimensional data reconstructed using multiple images or images. Furthermore, along with the image, the sound can also be collected from multiple different angles, and the server multiplexes the sound from a specific angle or space with the corresponding image and sends the multiplexed image and sound.

[0743] In addition, in recent years, content that establishes correspondence between the real world and the virtual world, such as Virtual Reality (VR) and Augmented Reality (AR), has also become popular. In the case of VR images, the server produces viewpoint images for the right eye and the left eye respectively, and can be encoded to allow reference between viewpoint images through Multi-View Coding (MVC) or the like, or encoded as different streams without reference to each other. When decoding different streams, they can be reproduced synchronously with each other according to the user's viewpoint to reproduce a virtual three-dimensional space.

[0744] In the case of AR images, the server may also overlap the virtual object information in the virtual space with the camera information in the real space based on the three-dimensional position or the movement of the user's viewpoint. The decoding device obtains or maintains the virtual object information and three-dimensional data, generates a two-dimensional image according to the movement of the user's viewpoint, and produces overlapping data by smoothly connecting. Alternatively, the decoding device may send the movement of the user's viewpoint to the server in addition to the commission of the virtual object information. Alternatively, the server may produce overlapping data according to the three-dimensional data maintained in the server, matching the movement of the received viewpoint, encoding the overlapping data and distributing it to the decoding device. In addition, typically, the overlapping data has an alpha value indicating the transmittance other than RGB, and the server sets the alpha value of the part other than the target produced according to the three-dimensional data to 0, etc., and encodes it in a state where the part is transparent. Alternatively, the server may set the RGB value of a specified value as the background, as in a chroma key, and generate data that sets the part other than the target as the background color. The RGB value of the specified value may also be predetermined.

[0745] Similarly, the decoding process of the distributed data can be performed by the client (for example, the terminal), can be performed on the server side, or can be shared. As an example, a terminal may first send a receiving request to the server, and other terminals may receive the content corresponding to the request and perform decoding processing, and send the decoded signal to a device with a display. By distributing the processing regardless of the performance of the communicative terminal itself and selecting appropriate content, data with better image quality can be reproduced. In addition, as another example, large-size image data can also be received by a TV, etc., and a portion of the image such as tiles after being divided can be decoded and displayed by the personal terminal of the viewer. In this way, while making the overall image shared, it is possible to confirm one's own area of ​​responsibility or the area that one wants to confirm in more detail at hand.

[0746] In a situation where multiple short-range, medium-range or long-range wireless communications can be used indoors and outdoors, it may be possible to receive content seamlessly using distribution system standards such as MPEG-DASH. The user can also switch in real time while freely selecting the user's terminal, decoding devices or display devices such as displays configured indoors and outdoors. In addition, it is possible to switch the decoding terminal and the display terminal and perform decoding using its own location information, etc. As a result, it is also possible to map and display information on a part of the wall or ground of a building next to a displayable device while the user is moving to the destination. In addition, it is also possible to switch the bit rate of the received data based on the ease of access to the encoded data on the network, such as the encoded data being cached in a server that can be accessed from the receiving terminal in a short time, or the encoded data being copied in an edge server of the content distribution service.

[0747] [Scalable Coding]

[0748] To switch content, use Fig.61 1. The scalable stream compressed and coded using the moving picture coding method described in the above embodiments is described as shown. For the server, a plurality of streams having the same content but different qualities may be provided as a single stream, or a structure in which the content is switched by utilizing the characteristics of a temporally / spatially scalable stream coded in layers as shown in the figure. That is, the decoding side determines which layer to decode based on internal factors such as performance and external factors such as the state of the communication band, so that the decoding side can freely switch between low-resolution content and high-resolution content for decoding. For example, when a user wants to watch a video that he / she has watched on the smartphone ex115 while on the move, for example, on an Internet TV or the like after returning home, the device only needs to decode the same stream into different layers, thereby reducing the burden on the server side.

[0749] Furthermore, in addition to the hierarchical structure of encoding the picture for each layer and realizing the enhancement layer above the base layer as described above, the enhancement layer may also include meta-information such as statistical information based on the image. Alternatively, the decoding side may generate high-definition content by super-resolving the picture of the base layer based on the meta-information. Super-resolution can improve the SN ratio while maintaining and / or expanding the resolution. The meta-information includes information for determining linear or nonlinear filter coefficients such as those used in the super-resolution processing, or information for determining parameter values ​​in the filter processing, machine learning, or least squares operation used in the super-resolution processing.

[0750] Alternatively, a structure may be provided for dividing a picture into tiles according to the meaning of an object in the image. The decoding side decodes only a part of the area by selecting tiles to be decoded. Furthermore, by storing the attributes of the object (a person, a car, a ball, etc.) and the position in the image (the coordinate position in the same image, etc.) as meta-information, the decoding side can determine the position of the desired object based on the meta-information and determine the tile that includes the object. For example, Fig.62 As shown, the meta-information may be stored using a data storage structure different from the pixel data, such as SEI (supplemental enhancement information) messages in HEVC. The meta-information indicates, for example, the position, size, or color of the main object.

[0751] Meta information may also be stored in units consisting of multiple pictures, such as streams, sequences, or random access units. The decoding side can obtain the time when a specific person appears in the image, and by matching the information of the picture unit and the time information, it can determine the picture where the target exists and the position of the target in the picture.

[0752] [Web page optimization]

[0753] Fig.63 This is a diagram showing an example of a display screen of a web page on the computer ex111 or the like. Fig.64 1 is a diagram showing an example of a display screen of a web page on a smartphone ex115 or the like. Fig.63 and Fig.64 As shown, there are cases where a web page includes a plurality of link images that are links to image contents, and the visible form of the link images may differ depending on the device being browsed. When a plurality of link images are visible on the screen, before a user explicitly selects a link image, or before a link image approaches the center of the screen, or before the entire link image enters the screen, the display device (decoding device) may display a still image or I picture of each content as a link image, or may display an image such as a GIF animation using a plurality of still images or I pictures, or may receive only a base layer and decode and display the image.

[0754] When a linked image is selected by the user, the display device, for example, sets the base layer as the top priority and decodes it. In addition, if there is information indicating that the content is scalable in the HTML constituting the web page, the display device can also decode to the enhancement layer. Moreover, in order to ensure real-time performance, before selection or when the communication band is very tight, the display device can reduce the delay between the decoding time and the display time of the head picture (the delay from the start of decoding of the content to the start of display) by decoding and displaying only the pictures that are forward referenced (I pictures, P pictures, and B pictures that are only forward referenced). Furthermore, the display device can also forcibly ignore the reference relationship of the pictures and set all B pictures and P pictures as forward references and roughly decode them, and perform normal decoding as the number of pictures received increases over time.

[0755] [Automatic driving]

[0756] Furthermore, when still images or video data such as two-dimensional or three-dimensional map information are transmitted and received for the purpose of automatic driving or driving assistance of a vehicle, the receiving terminal may receive weather or construction information as meta-information in addition to image data belonging to one or more layers, and decode them by establishing a correspondence between them. Furthermore, the meta-information may belong to a layer or may be multiplexed with image data alone.

[0757] In this case, since the car, drone, or airplane including the receiving terminal is moving, the receiving terminal can transmit the location information of the receiving terminal to achieve seamless reception and decoding while switching the base stations ex106 to ex110. In addition, the receiving terminal can dynamically switch the degree to which meta-information is received or the degree to which map information is updated according to the user's selection, the user's condition, and / or the state of the communication band.

[0758] In the content providing system ex100, the client can receive, decode and reproduce the encoded information sent by the user in real time.

[0759] [Distribution of Personal Content]

[0760] Furthermore, in the content supply system ex100, not only high-quality, long-duration contents provided by video distributors but also low-quality, short-duration contents provided by individuals can be unicasted or multicasted. Such personal contents are expected to increase in the future. In order to make personal contents better, the server may perform encoding after editing. This can be achieved, for example, with the following structure.

[0761] After taking pictures in real time or accumulating them, the server performs recognition processing such as shooting errors, scene search, meaning analysis and target detection based on the original image data or encoded data. In addition, based on the recognition results, the server manually or automatically corrects focus deviation or hand shaking, deletes scenes of low importance such as scenes with lower brightness than other pictures or scenes that are not in focus, or emphasizes the edges of the target, or changes the color tone. The server encodes the edited data based on the editing results. In addition, it is known that if the shooting time is too long, the viewing rate will decrease. The server can also automatically limit not only the scenes of low importance as mentioned above, but also the scenes with less movement based on the image processing results according to the shooting time, so as to become content within a specific time range. Alternatively, the server can also generate a summary based on the results of the scene's meaning analysis and encode it.

[0762] Personal content may be written with content that infringes copyright, author's personality rights or portrait rights in its original state, or it may be shared beyond the desired scope, which is inconvenient for individuals. Therefore, for example, the server may forcibly change the faces of people in the peripheral part of the screen or the home to an out-of-focus image for encoding. In addition, the server may also identify whether the face of a person different from the pre-registered person is captured in the encoded image, and if so, apply mosaics to the face part. Alternatively, as a pre-processing or post-processing of the encoding, the user may specify the person or background area that he wants to process the image from the perspective of copyright, etc. The server may also replace the specified area with another image, or blur the focus, etc. If it is a person, it is possible to track the person in the moving image and replace the image of the face part of the person.

[0763] The viewing and listening of personal content with a small amount of data has a strong requirement for real-time performance, so although it also depends on the bandwidth, the decoding device may first receive the basic layer with the highest priority and perform decoding and reproduction. The decoding device may also receive the enhancement layer during this period, and when the reproduction is repeated more than twice, the enhancement layer may be included to reproduce the high-definition image. In this way, if the stream is scalably encoded, it is possible to provide an experience in which the stream gradually becomes smoother and the image becomes better, although the moving image is relatively rough when it is not selected or at the beginning of viewing. In addition to scalable encoding, the same experience can be provided when the rougher stream reproduced for the first time and the second stream encoded with reference to the moving image of the first time are composed of one stream.

[0764] [Other application examples]

[0765] In addition, these encoding and decoding processes are usually processed in the LSI ex500 of each terminal. LSI (large scale integration circuitry) ex500 (refer to Fig.60 ) may be a single chip or a multi-chip structure. Alternatively, software for encoding or decoding moving images may be loaded into a recording medium (CD-ROM, floppy disk, hard disk, etc.) readable by the computer ex111 or the like, and the encoding or decoding may be performed using the software. Furthermore, if the smartphone ex115 has a camera, moving image data acquired by the camera may be transmitted. In this case, the moving image data may be data encoded by the LSI ex500 of the smartphone ex115.

[0766] In addition, LSIex500 may also be a structure that downloads and activates application software. In this case, the terminal first determines whether the terminal corresponds to the encoding method of the content or has the ability to execute a specific service. If the terminal does not correspond to the encoding method of the content or does not have the ability to execute a specific service, the terminal may also download a codec or application software and then obtain and reproduce the content.

[0767] Furthermore, the content supply system ex100 is not limited to the content supply system ex100 via the Internet ex101, and at least one of the video encoding device (video encoding device) or video decoding device (video decoding device) in each of the above-mentioned embodiments can be incorporated into a digital broadcasting system. Since multiplexed data in which video and audio are multiplexed is transmitted and received by using broadcasting radio waves such as satellites, the content supply system ex100 is different from the structure that is easy for unicast in that it is suitable for multicast, but the same application can be made to the encoding process and the decoding process.

[0768] [Hardware structure]

[0769] Fig.65 It is further detailed Fig.60 FIG. 115 is a diagram of a smartphone ex115 shown in FIG. Fig.66 1 is a diagram showing a configuration example of a smartphone ex115. The smartphone ex115 includes an antenna ex450 for transmitting and receiving radio waves with the base station ex110, a camera unit ex465 capable of shooting video and still images, and a display unit ex458 for displaying decoded data such as the video shot by the camera unit ex465 and the video received by the antenna ex450. The smartphone ex115 further includes an operation unit ex466 such as a touch panel, a sound output unit ex457 such as a speaker for outputting sound or audio, a sound input unit ex456 such as a microphone for inputting sound, a memory unit ex467 capable of storing coded data or decoded data such as shot video or still images, recorded sound, received video or still images, and mails, and a slot unit ex464 as an interface unit with a SIM ex468 for identifying a user and authenticating access to various data such as a network. In addition, an external memory may be used instead of the memory unit ex467.

[0770] The main control unit ex460, which can perform integrated control over the display unit ex458 and the operation unit ex466, is synchronously connected to the power circuit unit ex461, the operation input control unit ex462, the image signal processing unit ex455, the camera interface unit ex463, the display control unit ex459, the modulation / demodulation unit ex452, the multiplexing / separation unit ex453, the sound signal processing unit ex454, the slot unit ex464 and the memory unit ex467 via a bus ex470.

[0771] When the power key is turned on by a user's operation, the power circuit unit ex461 activates the smartphone ex115 to be operable and supplies power to each unit from the battery pack.

[0772] The smartphone ex115 performs processes such as calls and data communications under the control of a main control unit ex460 including a CPU, ROM, and RAM. During a call, the voice signal collected by the voice input unit ex456 is converted into a digital voice signal by the voice signal processing unit ex454, subjected to spectrum diffusion processing by the modulation / demodulation unit ex452, and subjected to digital-to-analog conversion processing and frequency conversion processing by the transmission / reception unit ex451, and the resulting signal is transmitted via the antenna ex450. In addition, the received data is amplified and subjected to frequency conversion processing and analog-to-digital conversion processing, subjected to spectrum inverse diffusion processing by the modulation / demodulation unit ex452, and converted into an analog voice signal by the voice signal processing unit ex454, and then output from the voice output unit ex457. During data communications, text, still image, or video data can be sent out through the operation input control unit ex462 under the control of the main control unit ex460 based on the operation of the operation unit ex466 of the main unit. The same transmission and reception processes are performed. In the data communication mode, when transmitting video, still image, or video and audio, the video signal processing unit ex455 compresses and encodes the video signal stored in the memory unit ex467 or the video signal input from the camera unit ex465 using the moving image encoding method described in the above embodiments, and sends the encoded video data to the multiplexing / demultiplexing unit ex453. The audio signal processing unit ex454 encodes the audio signal collected by the audio input unit ex456 during the process of capturing video or still image by the camera unit ex465, and sends the encoded audio data to the multiplexing / demultiplexing unit ex453. The multiplexing / demultiplexing unit ex453 multiplexes the encoded video data and the encoded audio data in a predetermined manner, and performs modulation and conversion processing on the modulation / demodulation unit (modulation / demodulation circuit unit) ex452 and the transmission / reception unit ex451, and transmits the data via the antenna ex450. The predetermined manner may be predetermined.

[0773] When receiving an image attached to an e-mail or a chat tool, or an image linked to a web page, etc., in order to decode the multiplexed data received via the antenna ex450, the multiplexing / demultiplexing unit ex453 separates the multiplexed data into a bit stream of image data and a bit stream of audio data, and supplies the encoded image data to the image signal processing unit ex455 and the encoded audio data to the audio signal processing unit ex454 via the synchronous bus ex470. The image signal processing unit ex455 decodes the image signal using a moving image decoding method corresponding to the moving image encoding method shown in the above-mentioned embodiments, and displays the image or still image included in the linked moving image file on the display unit ex458 via the display control unit ex459. The audio signal processing unit ex454 decodes the audio signal and outputs the audio from the audio output unit ex457. As real-time streaming media becomes more and more popular, the reproduction of audio may become socially inappropriate depending on the user's situation. Therefore, as an initial value, it is preferable that the configuration is such that only the video data is reproduced without reproducing the audio signal, and the audio is reproduced synchronously only when the user performs an operation such as clicking on the video data.

[0774] In the description here, the smartphone ex115 is used as an example. However, as a terminal, in addition to a transmitting and receiving terminal having both an encoder and a decoder, there may be other installation forms such as a transmitting terminal having only an encoder and a receiving terminal having only a decoder. In the digital broadcasting system, it is assumed that multiplexed data in which audio data is multiplexed with video data is received and transmitted. However, in addition to audio data, character data associated with the video may be multiplexed in the multiplexed data. In addition, the video data itself may be received or transmitted instead of the multiplexed data.

[0775] In addition, although the main control unit ex460 including a CPU is assumed to control the encoding or decoding process, various terminals are often equipped with a GPU. Therefore, a structure can also be made to use the performance of the GPU to process a larger area together through a memory shared by the CPU and GPU, or a memory that manages addresses in a way that can be used together. In this way, the encoding time can be shortened, real-time performance can be ensured, and low latency can be achieved. In particular, it is more effective if motion estimation, deblocking filtering, SAO (Sample Adaptive Offset) and transformation / quantization processing are performed together in units such as pictures by the GPU instead of the CPU.

[0776] Industrial Applicability

[0777] The present invention can be utilized in, for example, a television receiver, a digital video recorder, a car navigation system, a mobile phone, a digital camera, a digital video camera, a video conference system, or an electronic mirror.

[0778] Description of Reference Numerals

[0779] 100 Encoding device

[0780] 102 Division

[0781] 104 Subtraction Department

[0782] 106 Transformation Department

[0783] 108 Quantitative Department

[0784] 110 Entropy Coding Unit

[0785] 112, 204 Inverse Quantization Unit

[0786] 114, 206 Inverse transformation unit

[0787] 116, 208 Addition Department

[0788] 118, 210 block memory

[0789] 120, 212 loop filter unit

[0790] 122, 214 frame memory

[0791] 124, 216 Intra-frame prediction unit

[0792] 126, 218 Inter-frame prediction unit

[0793] 128, 220 Prediction and Control Department

[0794] 200 decoding device

[0795] 202 Entropy Decoding Unit

[0796] 1201 Boundary Judgment Department

[0797] 1202, 1204, 1206 switches

[0798] 1203 Filter determination unit

[0799] 1205 Filter Processing Unit

[0800] 1207 Filter characteristic determination unit

[0801] 1208 Processing and Judgment Unit

[0802] a1, b1 processor

[0803] a2, b2 memory

Claims

1. A coding device, wherein: have: Circuits; and a memory connected to the circuit, The circuit performs residual coding of the current block.

2. A decoding device, wherein: have: Circuits; and a memory connected to the circuit, The circuit performs decoding of the current block.

3. A computer-readable non-transitory storage medium storing a bitstream, wherein: The bit stream includes information for causing a decoding device to perform a decoding process.