Image encoding / decoding method and apparatus for selectively encoding size information of rectangular slices, and method for transmitting bitstreams - Patents.com

The image encoding/decoding method and apparatus address the inefficiencies in compressing high-resolution images by selectively encoding slice size information, resulting in improved encoding/decoding efficiency and reduced costs.

JP7682343B2Active Publication Date: 2025-05-23NOKIA TECHNOLOGIES OY
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024079190
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-03-09
Filing Date
2024-05-15
Publication Date
2025-05-23
Estimated Expiration
2041-03-08

AI Technical Summary

Technical Problem

The increasing demand for high-resolution, high-quality images leads to a significant increase in the amount of information or bits transmitted, resulting in higher transmission and storage costs. Existing image compression techniques are not highly efficient enough to effectively manage these high-resolution images.

Method used

An image encoding/decoding method and apparatus that selectively encodes slice size information, allowing for improved encoding/decoding efficiency by determining the size of a current slice based on obtained size information from a bitstream, which includes width and height information in units of tile columns and rows.

Benefits of technology

The proposed method and apparatus achieve improved encoding/decoding efficiency by selectively encoding slice size information, thereby reducing transmission and storage costs associated with high-resolution images.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007682343000004
    Figure 0007682343000004
  • Figure 0007682343000005
    Figure 0007682343000005
  • Figure 0007682343000006
    Figure 0007682343000006
Patent Text Reader

Abstract

To provide a method and an apparatus for encoding / decoding an image which selectively encode size information of a slice.SOLUTION: The method for decoding an image performed by an image decoder in the present disclosure includes the steps of: acquiring size information showing the size of a current slice corresponding to at least a part of a current picture from a bitstream; and determining the size of the current slice on the basis of the size information.SELECTED DRAWING: Figure 32
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to an image encoding / decoding method and apparatus, and more particularly to an image encoding / decoding method and apparatus that selectively encodes slice size information, and a method for transmitting a bitstream generated by the image encoding method / apparatus of the present disclosure. [Background technology]

[0002] Recently, the demand for high-resolution, high-quality images, for example, HD (High Definition) images and UHD (Ultra High Definition) images, is increasing in various fields. As the resolution and quality of image data increases, the amount of information or bits transmitted increases relatively compared to conventional image data. The increase in the amount of information or bits transmitted leads to an increase in transmission costs and storage costs.

[0003] This requires a highly efficient image compression technique for effectively transmitting, storing, and reproducing high-resolution, high-quality image information. Summary of the Invention [Problem to be solved by the invention]

[0004] An object of the present disclosure is to provide an image encoding / decoding method and apparatus with improved encoding / decoding efficiency.

[0005] Another object of the present disclosure is to provide an image encoding / decoding method and apparatus that improves the efficiency of encoding / decoding by selectively encoding slice size information.

[0006] Another object of the present disclosure is to provide a method for transmitting a bitstream generated by the image encoding method or apparatus according to the present disclosure.

[0007] Another object of the present disclosure is to provide a recording medium storing a bitstream generated by the image encoding method or apparatus according to the present disclosure.

[0008] Another object of the present disclosure is to provide a recording medium storing a bitstream that is received by an image decoding device according to the present disclosure, decoded, and used to restore an image. For example, the recording medium may store a bitstream that causes a decoding device according to the present disclosure to perform an image decoding method according to the present disclosure.

[0009] The technical problems to be solved by the present disclosure are not limited to the above-mentioned technical problems, and other technical problems not described above will be clearly understood by a person having ordinary skill in the art to which the present disclosure pertains from the following description. [Means for solving the problem]

[0010] An image decoding method performed by an image decoding device according to an aspect of the present disclosure may include the steps of obtaining, from a bitstream, size information indicating a size of a current slice corresponding to at least a part of a current picture, and determining a size of the current slice based on the size information, where the size information includes width information indicating a width of the current slice in units of tile columns and height information indicating a height of the current slice in units of tile rows, and the step of obtaining the size information from the bitstream may be performed based on whether the current slice belongs to the last tile column or the last tile row of the current picture.

[0011] Also, an image decoding device according to an aspect of the present disclosure includes a memory and at least one processor, wherein the at least one processor is capable of obtaining size information indicating a size of a current slice corresponding to at least a part of a current picture from a bitstream, and determining a size of the current slice based on the size information, wherein the size information includes width information indicating a width of the current slice in units of tile columns and height information indicating a height of the current slice in units of tile rows, and the size information may be obtained based on whether the current slice belongs to the last tile column or the last tile row of the current picture.

[0012] Also, an image coding method performed by an image coding device according to an aspect of the present disclosure may include determining a current slice corresponding to at least a part of a current picture, and generating a bitstream including size information of the current slice, wherein the size information includes width information indicating a width of the current slice in units of tile columns and height information indicating a height of the current slice in units of tile rows, and the generating a bitstream including the size information of the current slice may be performed based on whether the current slice belongs to the last tile column or the last tile row of the current picture.

[0013] A transmission method according to another aspect of the present disclosure can transmit a bitstream generated by the image encoding device or image encoding method of the present disclosure.

[0014] A computer-readable recording medium according to another aspect of the present disclosure can store a bitstream generated by the image encoding method or image encoding device of the present disclosure.

[0015] The features described above in the brief summary of the present disclosure are merely exemplary embodiments of the detailed description of the present disclosure that follows and are not intended to limit the scope of the present disclosure. Effect of the Invention

[0016] According to the present disclosure, an image encoding / decoding method and apparatus with improved encoding / decoding efficiency can be provided.

[0017] Furthermore, according to the present disclosure, it is possible to provide an image encoding / decoding method and apparatus that can improve the efficiency of encoding / decoding by selectively encoding slice size information.

[0018] According to the present disclosure, there can also be provided a method for transmitting a bitstream generated by the image encoding method or apparatus according to the present disclosure.

[0019] According to the present disclosure, a recording medium storing a bitstream generated by the image encoding method or apparatus according to the present disclosure can be provided.

[0020] Furthermore, according to the present disclosure, it is possible to provide a recording medium storing a bitstream that is received by the image decoding device according to the present disclosure, decoded, and used to restore an image.

[0021] The effects obtained by the present disclosure are not limited to the effects described above, and other effects not described above will be clearly understood by those having ordinary skill in the art to which the present disclosure pertains from the following description. [Brief description of the drawings]

[0022] [Figure 1] FIG. 1 is a schematic diagram illustrating a video coding system to which an embodiment of the present disclosure can be applied. [Diagram 2] 1 is a diagram illustrating an image encoding device to which an embodiment of the present disclosure can be applied; [Diagram 3] 1 is a diagram illustrating an image decoding device to which an embodiment of the present disclosure can be applied; [Figure 4] FIG. 2 is a diagram showing an image division structure according to an embodiment of the present disclosure. [Diagram 5]FIG. 11 is a diagram showing an example of a block division type according to a multi-type tree structure. [Figure 6] FIG. 1 illustrates an example signaling mechanism for block partition information in a quadtree with nested multi-type tree structure according to the present disclosure. [Figure 7] FIG. 1 illustrates an embodiment in which a CTU is divided into multiple CUs. [Figure 8] FIG. 13 is a diagram showing surrounding reference samples according to one embodiment. [Figure 9] FIG. 2 is a diagram illustrating intra-prediction according to an embodiment. [Figure 10] FIG. 2 is a diagram illustrating intra-prediction according to an embodiment. [Figure 11] FIG. 2 is a diagram illustrating an encoding method using inter prediction according to an embodiment. [Figure 12] FIG. 2 is a diagram illustrating a decoding method using inter prediction according to an embodiment. [Figure 13] FIG. 2 is a block diagram illustrating CABAC according to one embodiment for encoding one syntax element. [Figure 14] FIG. 2 is a diagram illustrating entropy encoding and decoding according to one embodiment. [Figure 15] FIG. 2 is a diagram illustrating entropy encoding and decoding according to one embodiment. [Figure 16] FIG. 2 is a diagram illustrating entropy encoding and decoding according to one embodiment. [Figure 17] FIG. 2 is a diagram illustrating entropy encoding and decoding according to one embodiment. [Figure 18] FIG. 2 illustrates an example of a picture decoding and encoding procedure according to one embodiment. [Figure 19] FIG. 2 illustrates an example of a picture decoding and encoding procedure according to one embodiment. [Figure 20] FIG. 2 illustrates a hierarchical structure for a coded image according to one embodiment. [Figure 21]FIG. 2 illustrates an example of dividing a picture using tiles, slices and subpictures. [Figure 22] FIG. 2 illustrates an example of dividing a picture using tiles, slices and subpictures. [Diagram 23] FIG. 2 illustrates an example of dividing a picture using tiles, slices and subpictures. [Figure 24] FIG. 2 illustrates an example of dividing a picture using tiles, slices and subpictures. [Diagram 25] FIG. 13 is a diagram illustrating an example of syntax for a sequence parameter set. [Figure 26] A figure showing an example of picture parameter set syntax. [Figure 27] A figure showing one example of syntax of a slice header. [Figure 28] FIG. 2 is a diagram showing an embodiment of an encoding method and a decoding method. [Figure 29] FIG. 2 is a diagram showing an embodiment of an encoding method and a decoding method. [Diagram 30] FIG. 11 is a diagram showing another embodiment of a picture parameter set. [Diagram 31] FIG. 11 is a diagram showing another embodiment of a picture parameter set. [Diagram 32] FIG. 13 is a diagram showing an embodiment of a decoding method. [Diagram 33] FIG. 13 illustrates an algorithm for determining SliceTopLeftTileIdx. [Diagram 34] FIG. 13 illustrates an algorithm for determining SliceTopLeftTileIdx. [Diagram 35] FIG. 1 is a diagram illustrating an embodiment of an encoding method. [Diagram 36] FIG. 1 illustrates a content streaming system to which an embodiment of the present disclosure can be applied. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0023] The present disclosure will be described in detail below with reference to the accompanying drawings so that those skilled in the art can easily implement the present disclosure. However, the present disclosure may be embodied in various different forms and is not limited to the embodiments described herein.

[0024] In describing the embodiments of the present disclosure, if it is determined that a specific description of a known configuration or function may make the gist of the present disclosure unclear, the detailed description thereof will be omitted. In addition, in the drawings, parts that are not related to the description of the present disclosure are omitted, and similar parts are denoted by similar reference numerals.

[0025] In the present disclosure, when a certain component is "connected," "coupled," or "connected" to another component, this includes not only a direct connection relationship, but also an indirect connection relationship in which another component exists between them. Furthermore, when a certain component is described as "including" or "having" another component, this does not mean that the other component is excluded, but that the other component can be further included, unless otherwise specified.

[0026] In this disclosure, terms such as "first" and "second" are used only for the purpose of distinguishing one component from another component, and do not limit the order or importance of the components unless otherwise specified. Therefore, within the scope of this disclosure, a first component in one embodiment may be called a second component in another embodiment, and similarly, a second component in one embodiment may be called a first component in another embodiment.

[0027] In this disclosure, components that are distinguished from one another are used to clearly describe the characteristics of each component, and do not necessarily mean that the components are separate. In other words, multiple components may be integrated and configured as a single hardware or software unit, or one component may be distributed and configured as multiple hardware or software units. Thus, even if not otherwise stated, such integrated or distributed embodiments are also included in the scope of the present disclosure.

[0028] In the present disclosure, the components described in the various embodiments are not necessarily essential components, and some may be optional components. Therefore, an embodiment consisting of a subset of the components described in one embodiment is also included in the scope of the present disclosure. In addition, an embodiment including other components in addition to the components described in the various embodiments is also included in the scope of the present disclosure.

[0029] The present disclosure relates to image encoding and decoding, and terms used in this disclosure may have ordinary meanings in the technical field to which the present disclosure belongs, unless they are newly defined in this disclosure.

[0030] In the present disclosure, a "video" may refer to a collection of a series of images over time. A "picture" generally refers to a unit indicating any one image in a particular time period, and a slice / tile is a coding unit constituting a part of a picture in coding. A picture may be composed of one or more slices / tiles. A slice / tile may include one or more coding tree units (CTUs). A picture may be composed of one or more slices / tiles. A picture may be composed of one or more tile groups. A tile group may include one or more tiles. A brick may indicate a rectangular area of ​​a CTU row within a tile in a picture. A tile may include one or more bricks. A brick may indicate a rectangular area of ​​a CTU row within a tile. A tile may be divided into multiple bricks, and each brick may include one or more CTU rows belonging to the tile. A tile that is not divided into multiple bricks may also be treated as a brick.

[0031] In this disclosure, a "pixel" or a "pel" may refer to the smallest unit constituting one picture (or image). A term corresponding to a pixel may be a "sample." A sample may generally indicate a pixel or a pixel value, may indicate only a pixel / pixel value of a luma component, or may indicate only a pixel / pixel value of a chroma component.

[0032] In this disclosure, a "unit" may refer to a basic unit of image processing. A unit may include at least one of a specific region of a picture and information related to the region. A unit may include one luma block and two chroma (e.g., Cb, Cr) blocks. A unit may be used interchangeably with terms such as "sample array," "block," or "area," depending on the case. In a general case, an M×N block may include a set (or array) of samples or transform coefficients consisting of M columns and N rows.

[0033] In the present disclosure, a "current block" may refer to any one of a "current coding block," a "current coding unit," a "block to be coded," a "block to be decoded," or a "block to be processed." If prediction is performed, a "current block" may refer to a "current predicted block" or a "block to be predicted." If transformation (inverse transformation) / quantization (inverse quantization) is performed, a "current block" may refer to a "current transformed block" or a "block to be transformed." If filtering is performed, a "current block" may refer to a "block to be filtered."

[0034] In this disclosure, "current block" may mean "luma block of the current block" unless there is an explicit mention of a chroma block. "Chroma block of the current block" may be expressed explicitly as "chroma block" or "current chroma block" including the explicit mention of a chroma block.

[0035] In the present disclosure, " / " and "," can be interpreted as "and / or." For example, "A / B" and "A, B" can be interpreted as "A and / or B." Also, "A / B / C" and "A, B, C" can mean "at least one of A, B, and / or C."

[0036] In this disclosure, "or" can be interpreted as "and / or." For example, "A or B" can mean 1) only "A," 2) only "B," or 3) "A and B." Alternatively, in this disclosure, "or" can mean "additionally or alternatively."

[0037] Video Coding System Overview

[0038] FIG. 1 is a diagram illustrating a video coding system according to this disclosure.

[0039] A video coding system according to one embodiment may include a source device 10 and a receiving device 20. The source device 10 may transmit encoded video and / or image information or data to the receiving device 20 in file or streaming format via a digital storage medium or a network.

[0040] The source device 10 according to an embodiment may include a video source generating unit 11, an encoding device 12, and a transmitting unit 13. The receiving device 20 according to an embodiment may include a receiving unit 21, a decoding device 22, and a rendering unit 23. The encoding device 12 may be referred to as a video / image encoding device, and the decoding device 22 may be referred to as a video / image decoding device. The transmitting unit 13 may be included in the encoding device 12. The receiving unit 21 may be included in the decoding device 22. The rendering unit 23 may also include a display unit, which may be configured as a separate device or an external component.

[0041] The video source generating unit 11 can obtain the video / images through a process of capturing, synthesizing, or generating the video / images. The video source generating unit 11 can include a video / image capture device and / or a video / image generation device. The video / image capture device can include, for example, one or more cameras, a video / image archive containing previously captured videos / images, etc. The video / image generation device can include, for example, a computer, a tablet, a smartphone, etc., and can (electronically) generate the video / images. For example, a virtual video / image can be generated through a computer, etc., in which case the video / image capture process can be replaced by a process in which the associated data is generated.

[0042] The encoding device 12 can encode the input video / image. The encoding device 12 can perform a series of steps such as prediction, transformation, quantization, etc. for compression and coding efficiency. The encoding device 12 can output the encoded data (encoded video / image information) in a bitstream format.

[0043] The transmitting unit 13 may transmit the encoded video / image information or data output in a bitstream format to the receiving unit 21 of the receiving device 20 via a digital storage medium or a network in a file or streaming format. The digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmitting unit 13 may include elements for generating a media file via a predetermined file format and may include elements for transmitting via a broadcasting / communication network. The receiving unit 21 may extract / receive the bitstream from the storage medium or network and transmit it to the decoding device 22.

[0044] The decoder 22 can decode the video / image by performing a series of steps such as inverse quantization, inverse transformation, prediction, etc., corresponding to the operations of the encoder 12.

[0045] The rendering unit 23 can render the decoded video / images. The rendered video / images can be displayed via a display unit.

[0046] Overview of the image encoding device

[0047] FIG. 2 is a diagram illustrating an image encoding device to which an embodiment of the present disclosure can be applied.

[0048] As shown in Fig. 2, the image coding device 100 may include an image division unit 110, a subtraction unit 115, a transformation unit 120, a quantization unit 130, an inverse quantization unit 140, an inverse transformation unit 150, an addition unit 155, a filtering unit 160, a memory 170, an inter prediction unit 180, an intra prediction unit 185, and an entropy coding unit 190. The inter prediction unit 180 and the intra prediction unit 185 may be collectively referred to as a "prediction unit." The transformation unit 120, the quantization unit 130, the inverse quantization unit 140, and the inverse transformation unit 150 may be included in a residual processing unit. The residual processing unit may further include a subtraction unit 115.

[0049] All or at least some of the components constituting the image encoding device 100 may be realized by a single hardware component (e.g., an encoder or a processor) depending on the embodiment. Also, the memory 170 may include a decoded picture buffer (DPB) and may be realized by a digital storage medium.

[0050] The image division unit 110 may divide an input image (or picture, frame) input to the image encoding device 100 into one or more processing units. As an example, the processing units may be called coding units (CUs). The coding units may be obtained by recursively dividing a coding tree unit (CTU) or a largest coding unit (LCU) according to a QT / BT / TT (Quad-tree / Binary-tree / Ternal-tree) structure. For example, one coding unit may be divided into a plurality of coding units of a deeper depth based on a quad-tree structure, a binary-tree structure, and / or a ternary-tree structure. For dividing the coding units, a quad-tree structure may be applied first, and a binary-tree structure and / or a ternary-tree structure may be applied later. A coding procedure according to the present disclosure may be performed based on a final coding unit that is not further divided. The maximum coding unit may be used as the final coding unit, and a lower depth coding unit obtained by dividing the maximum coding unit may be used as the final coding unit. Here, the coding procedure may include procedures such as prediction, transformation, and / or restoration, which will be described later. As another example, a processing unit of the coding procedure may be a prediction unit (PU) or a transform unit (TU). The prediction unit and the transform unit may be divided or partitioned from the final coding unit, respectively. The prediction unit may be a unit of sample prediction, and the transform unit may be a unit for deriving transform coefficients and / or a unit for deriving a residual signal from the transform coefficients.

[0051] The prediction unit (inter prediction unit 180 or intra prediction unit 185) may perform prediction on a block to be processed (current block) and generate a predicted block including prediction samples for the current block. The prediction unit may determine whether intra prediction or inter prediction is applied in units of a current block or a CU. The prediction unit may generate various information related to prediction of the current block and transmit it to the entropy encoding unit 190. The information related to prediction may be encoded by the entropy encoding unit 190 and output in a bitstream format.

[0052] The intra prediction unit 185 may predict the current block by referring to samples in the current picture. The referenced samples may be located in the neighborhood of the current block or may be located away from the current block according to an intra prediction mode and / or an intra prediction technique. The intra prediction mode may include a plurality of non-directional modes and a plurality of directional modes. The non-directional mode may include, for example, a DC mode and a Planar mode. The directional mode may include, for example, 33 directional prediction modes or 65 directional prediction modes depending on the fineness of the prediction direction. However, this is merely an example, and more or less directional prediction modes may be used depending on the setting. The intra prediction unit 185 may also determine a prediction mode to be applied to the current block using prediction modes applied to neighboring blocks.

[0053] The inter prediction unit 180 may derive a predicted block for a current block based on a reference block (reference sample array) identified by a motion vector on a reference picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information may be predicted in units of a block, a sub-block, or a sample based on the correlation of motion information between a neighboring block and a current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring block may include a spatial neighboring block present in the current picture and a temporal neighboring block present in the reference picture. The reference picture including the reference block and the reference picture including the temporal neighboring block may be the same or different from each other. The temporal neighboring block may be called a collocated reference block, a collocated CU (colCU), etc. The reference picture including the temporal neighboring block may be called a collocated picture (colPic). For example, the inter prediction unit 180 may generate information indicating which candidate is used to derive a motion vector and / or a reference picture index of the current block by forming a motion information candidate list based on neighboring blocks. Inter prediction may be performed based on various prediction modes, and for example, in the case of a skip mode and a merge mode, the inter prediction unit 180 may use motion information of neighboring blocks as motion information of the current block. In the case of the skip mode, unlike the merge mode, a residual signal may not be transmitted.In the case of a motion vector prediction (MVP) mode, the motion vector of the current block can be signaled by using the motion vector of a neighboring block as a motion vector predictor and encoding a motion vector difference and an indicator for the motion vector predictor. The motion vector difference can mean the difference between the motion vector of the current block and the motion vector predictor.

[0054] The prediction unit may generate a prediction signal based on various prediction methods and / or prediction techniques, which will be described later. For example, the prediction unit may apply intra prediction or inter prediction for prediction of the current block, and may simultaneously apply intra prediction and inter prediction. A prediction method that simultaneously applies intra prediction and inter prediction for prediction of the current block may be called combined inter and intra prediction (CIIP). The prediction unit may also perform intra block copy (IBC) for prediction of the current block. Intra block copy can be used for content image / video coding such as games, for example, as in screen content coding (SCC). IBC is a method of predicting a current block using an already restored reference block in a current picture that is located a predetermined distance away from the current block. When IBC is applied, the position of the reference block in the current picture may be coded as a vector (block vector) corresponding to the predetermined distance. IBC is basically performed in the current picture, but may be performed similarly to inter prediction in that a reference block is derived in the current picture. That is, the IBC may use at least one of the inter prediction techniques described in this disclosure.

[0055] The prediction signal generated by the prediction unit may be used to generate a restored signal or a residual signal. The subtraction unit 115 may subtract the prediction signal (predicted block, prediction sample array) output from the prediction unit from the input image signal (original block, original sample array) to generate a residual signal (residual block, residual sample array). The generated residual signal may be transmitted to the conversion unit 120.

[0056] The transform unit 120 may generate transform coefficients by applying a transform technique to the residual signal. For example, the transform technique may include at least one of a discrete cosine transform (DCT), a discrete sine transform (DST), a Karhunen-Loeve transform (KLT), a graph-based transform (GBT), or a conditionally non-linear transform (CNT). Here, the GBT refers to a transform obtained from a graph when the relationship information between pixels is expressed as a graph. The CNT refers to a transform obtained based on a predicted signal generated using all previously reconstructed pixels. The transform process may be applied to pixel blocks having the same square size, or may be applied to non-square, variable-sized blocks.

[0057] The quantization unit 130 may quantize the transform coefficients and transmit the quantized transform coefficients to the entropy coding unit 190. The entropy coding unit 190 may code the quantized signal (information on the quantized transform coefficients) and output the coded signal in a bitstream format. The information on the quantized transform coefficients may be referred to as residual information. The quantization unit 130 may rearrange the quantized transform coefficients in a block format into a one-dimensional vector format based on a coefficient scan order, and may generate information on the quantized transform coefficients based on the quantized transform coefficients in the one-dimensional vector format.

[0058] The entropy coding unit 190 may perform various coding methods, such as exponential Golomb, context-adaptive variable length coding (CAVLC), and context-adaptive binary arithmetic coding (CABAC). The entropy coding unit 190 may also code information required for video / image restoration (e.g., values ​​of syntax elements, etc.) together or separately in addition to the quantized transform coefficients. The coded information (e.g., coded video / image information) may be transmitted or stored in a network abstraction layer (NAL) unit unit in a bitstream format. The video / image information may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). The video / image information may further include general constraint information. The signaling information, transmitted information and / or syntax elements referred to in this disclosure may be encoded through the above-mentioned encoding procedures and included in the bitstream.

[0059] The bitstream may be transmitted via a network or may be stored in a digital storage medium. Here, the network may include a broadcasting network and / or a communication network, and the digital storage medium may include various storage media such as a USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmitting unit (not shown) for transmitting the signal output from the entropy encoding unit 190 and / or a storing unit (not shown) for storing the signal may be provided as an internal / external element of the image encoding device 100, or the transmitting unit may be provided as a component of the entropy encoding unit 190.

[0060] The quantized transform coefficients output from the quantization unit 130 can be used to generate a residual signal. For example, the quantized transform coefficients are subjected to inverse quantization and inverse transformation via the inverse quantization unit 140 and the inverse transformation unit 150, so that a residual signal (residual block or residual sample) can be restored.

[0061] The adder 155 may generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the reconstructed residual signal to a prediction signal output from the inter prediction unit 180 or the intra prediction unit 185. When there is no residual for the current block to be processed, such as when a skip mode is applied, a predicted block may be used as a reconstructed block. The adder 155 may be referred to as a reconstruction unit or a reconstructed block generation unit. The generated reconstructed signal may be used for intra prediction of the next current block to be processed in the current picture, and may also be used for inter prediction of the next picture after filtering as described below.

[0062] The filtering unit 160 may apply filtering to the reconstructed signal to improve subjective / objective image quality. For example, the filtering unit 160 may apply various filtering methods to the reconstructed picture to generate a modified reconstructed picture, and may store the modified reconstructed picture in the memory 170, specifically, in the DPB of the memory 170. The various filtering methods may include, for example, deblocking filtering, sample adaptive offset, an adaptive loop filter, a bilateral filter, and the like. The filtering unit 160 may generate various information related to filtering, as will be described later in the description of each filtering method, and transmit the information to the entropy coding unit 190. The information related to filtering may be coded by the entropy coding unit 190 and output in a bitstream format.

[0063] The modified reconstructed picture transmitted to the memory 170 may be used as a reference picture in the inter prediction unit 180. When inter prediction is applied through this, the image encoding device 100 may avoid a prediction mismatch between the image encoding device 100 and the image decoding device, and may also improve encoding efficiency.

[0064] The DPB in the memory 170 may store modified reconstructed pictures to be used as reference pictures in the inter prediction unit 180. The memory 170 may store motion information of blocks from which motion information in the current picture is derived (or coded) and / or motion information of already reconstructed intra-picture blocks. The stored motion information may be transmitted to the inter prediction unit 180 to be used as motion information of spatial surrounding blocks or motion information of temporal surrounding blocks. The memory 170 may store reconstructed samples of reconstructed blocks in the current picture and transmit them to the intra prediction unit 185.

[0065] Overview of the image decoding device

[0066] FIG. 3 is a diagram illustrating an image decoding device to which an embodiment of the present disclosure can be applied.

[0067] 3, the image decoding device 200 may include an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, an adder 235, a filtering unit 240, a memory 250, an inter prediction unit 260, and an intra prediction unit 265. The inter prediction unit 260 and the intra prediction unit 265 may be collectively referred to as a "prediction unit." The inverse quantization unit 220 and the inverse transform unit 230 may be included in a residual processing unit.

[0068] All or at least some of the components constituting the image decoding device 200 may be realized by one hardware component (e.g., a decoder or a processor) depending on the embodiment. Also, the memory 170 may include a DPB and may be realized by a digital storage medium.

[0069] The image decoding device 200, which receives a bitstream including video / image information, can reconstruct an image by executing a process corresponding to the process performed by the image encoding device 100 of Fig. 2. For example, the image decoding device 200 can perform decoding using a processing unit applied in the image encoding device. Thus, the processing unit for decoding can be, for example, a coding unit. The coding unit can be obtained by dividing a coding tree unit or a maximum coding unit. Then, the reconstructed image signal decoded and output by the image decoding device 200 can be reproduced by a reproduction device (not shown).

[0070] The image decoding apparatus 200 may receive a signal output from the image encoding apparatus of FIG. 2 in the form of a bitstream. The received signal may be decoded via the entropy decoding unit 210. For example, the entropy decoding unit 210 may derive information (e.g., video / image information) required for image restoration (or picture restoration) by parsing the bitstream. The video / image information may further include information on various parameter sets such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. The image decoding apparatus may further use information on the parameter set and / or the general constraint information to decode an image. The signaling information, received information, and / or syntax elements referred to in the present disclosure may be obtained from the bitstream by being decoded via the decoding procedure. For example, the entropy decoding unit 210 may decode information in a bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output values ​​of syntax elements required for image restoration and quantized values ​​of transform coefficients related to the residual. More specifically, the CABAC entropy decoding method may receive bins corresponding to each syntax element from the bitstream, determine a context model using syntax element information to be decoded and decoded information of neighboring blocks and a block to be decoded, or information of a symbol / bin decoded in a previous step, predict the occurrence probability of the bin based on the determined context model, and perform arithmetic decoding of the bin to generate a symbol corresponding to the value of each syntax element. In this case, the CABAC entropy decoding method may update the context model using information of the decoded symbol / bin for the context model of the next symbol / bin after determining the context model.Among the information decoded by the entropy decoding unit 210, information related to prediction is provided to a prediction unit (inter prediction unit 260 and intra prediction unit 265), and residual values ​​entropy-decoded by the entropy decoding unit 210, i.e., quantized transform coefficients and related parameter information, may be input to the inverse quantization unit 220. Also, among the information decoded by the entropy decoding unit 210, information related to filtering may be provided to the filtering unit 240. Meanwhile, a receiving unit (not shown) for receiving a signal output from the image encoding device may be further provided as an internal / external element of the image decoding device 200, or the receiving unit may be provided as a component of the entropy decoding unit 210.

[0071] Meanwhile, the image decoding device according to the present disclosure may be called a video / image / picture decoding device. The image decoding device may include an information decoder (video / image / picture information decoder) and / or a sample decoder (video / image / picture sample decoder). The information decoder may include an entropy decoding unit 210, and the sample decoder may include at least one of an inverse quantization unit 220, an inverse transform unit 230, an adder 235, a filtering unit 240, a memory 250, an inter prediction unit 260, and an intra prediction unit 265.

[0072] The inverse quantization unit 220 may inverse quantize the quantized transform coefficients to output transform coefficients. The inverse quantization unit 220 may rearrange the quantized transform coefficients in a two-dimensional block format. In this case, the rearrangement may be performed based on a coefficient scan order performed in the image encoding device. The inverse quantization unit 220 may perform inverse quantization on the quantized transform coefficients using a quantization parameter (e.g., quantization step size information) to obtain transform coefficients.

[0073] The inverse transform unit 230 can inversely transform the transform coefficients to obtain a residual signal (residual block, residual sample array).

[0074] The prediction unit may perform prediction on a current block and generate a predicted block including a prediction sample for the current block. The prediction unit may determine whether intra prediction or inter prediction is applied to the current block based on the prediction information output from the entropy decoding unit 210, and may determine a specific intra / inter prediction mode (prediction technique).

[0075] The prediction unit can generate a prediction signal based on various prediction methods (techniques) described below, as has been described in the explanation of the prediction unit of the image encoding device 100.

[0076] The intra prediction unit 265 may predict the current block by referring to samples in the current picture. The description of the intra prediction unit 185 may be similarly applied to the intra prediction unit 265.

[0077] The inter prediction unit 260 may derive a predicted block for the current block based on a reference block (reference sample array) identified by a motion vector on a reference picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information may be predicted in units of blocks, sub-blocks, or samples based on correlation of motion information between neighboring blocks and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring blocks may include spatial neighboring blocks present in the current picture and temporal neighboring blocks present in the reference picture. For example, the inter prediction unit 260 may configure a motion information candidate list based on the neighboring blocks, and derive a motion vector and / or a reference picture index for the current block based on the received candidate selection information. Inter prediction may be performed based on various prediction modes (techniques), and the prediction information may include information indicating a mode (technique) of inter prediction for the current block.

[0078] The adder 235 may generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the acquired residual signal to a prediction signal (predicted block, predicted sample array) output from a prediction unit (including the inter prediction unit 260 and / or the intra prediction unit 265). When there is no residual for a current block to be processed, such as when a skip mode is applied, the predicted block may be used as a reconstructed block. The description of the adder 155 may be similarly applied to the adder 235. The adder 235 may be referred to as a reconstruction unit or a reconstructed block generator. The generated reconstructed signal may be used for intra prediction of a next current block to be processed in a current picture, and may also be used for inter prediction of a next picture after filtering as described below.

[0079] The filtering unit 240 may apply filtering to the reconstructed signal to improve subjective / objective image quality. For example, the filtering unit 240 may apply various filtering methods to the reconstructed picture to generate a modified reconstructed picture, and may store the modified reconstructed picture in the memory 250, specifically, in the DPB of the memory 250. The various filtering methods may include, for example, deblocking filtering, sample adaptive offset, an adaptive loop filter, a bilateral filter, etc.

[0080] The (modified) reconstructed picture stored in the DPB of the memory 250 may be used as a reference picture in the inter prediction unit 260. The memory 250 may store motion information of a block from which motion information in the current picture is derived (or decoded) and / or motion information of a block in an already reconstructed picture. The stored motion information may be transmitted to the inter prediction unit 260 to be used as motion information of a spatial surrounding block or motion information of a temporal surrounding block. The memory 250 may store a reconstructed sample of a reconstructed block in the current picture and transmit it to the intra prediction unit 265.

[0081] In this specification, the embodiments described for the filtering unit 160, inter prediction unit 180 and intra prediction unit 185 of the image encoding device 100 can also be applied in a similar or corresponding manner to the filtering unit 240, inter prediction unit 260 and intra prediction unit 265 of the image decoding device 200, respectively.

[0082] Image Segmentation Overview

[0083] The video / image coding method according to the present disclosure may be performed based on the following image partition structure. Specifically, procedures such as prediction, residual processing ((inverse) transform, (inverse) quantization, etc.), syntax element coding, filtering, etc., described below, may be performed based on CTU, CU (and / or TU, PU) derived based on the image partition structure. An image may be partitioned in units of blocks, and the block partition procedure may be performed in the image partition unit 110 of the encoding device described above. Partition-related information may be coded by the entropy coding unit 190 and transmitted to the decoding device in the form of a bitstream. The entropy decoding unit 210 of the decoding device may derive a block partition structure of a current picture based on the partition-related information obtained from the bitstream, and perform a series of procedures for image decoding (e.g., prediction, residual processing, block / picture reconstruction, in-loop filtering, etc.) based on the block partition structure.

[0084] A picture may be divided into a sequence of coding tree units (CTUs). FIG. 4 shows an example of a picture being divided into CTUs. A CTU may correspond to a coding tree block (CTB). Alternatively, a CTU may include a coding tree block of luma samples and two coding tree blocks of corresponding chroma samples. For example, for a picture including three sample arrays, a CTU may include an N×N block of luma samples and two corresponding blocks of chroma samples. The maximum allowed size of a CTU for coding, prediction, etc. may be different from the maximum allowed size of a CTU for transform. For example, the maximum allowed size of a luma block in a CTU may be 128×128 even if the maximum size of a luma transform block is 64×64.

[0085] Overview of CTU division

[0086] As mentioned above, a coding unit can be obtained by recursively splitting a coding tree unit (CTU) or a largest coding unit (LCU) according to a QT / BT / TT (Quad-tree / Binary-tree / Ternal-tree) structure. For example, a CTU can be first split into a quad-tree structure. Then, the leaf nodes of the quad-tree structure can be further split according to a multi-type tree structure.

[0087] Partitioning by a quadtree means dividing a current CU (or CTU) into four equal parts. By partitioning by a quadtree, the current CU can be divided into four CUs having the same width and height. If the current CU is not further divided into a quadtree structure, the current CU corresponds to a leaf node of the quadtree structure. The CU corresponding to the leaf node of the quadtree structure is not further divided and can be used as the above-mentioned final coding unit. Alternatively, the CU corresponding to the leaf node of the quadtree structure can be further divided by a multi-type tree structure.

[0088] 5 is a diagram showing the types of division of a block by a multi-type tree structure. Division by a multi-type tree structure can include two divisions by a binary tree structure and two divisions by a ternary tree structure.

[0089] The two divisions according to the binary tree structure may include vertical binary splitting (SPLIT_BT_VER) and horizontal binary splitting (SPLIT_BT_HOR). Vertical binary splitting (SPLIT_BT_VER) refers to a division in which the current CU is divided into two equal parts vertically. As shown in FIG. 4, the vertical binary splitting may generate two CUs each having a height equal to the height of the current CU and a width half the width of the current CU. Horizontal binary splitting (SPLIT_BT_HOR) refers to a division in which the current CU is divided into two equal parts horizontally. As shown in FIG. 5, the horizontal binary splitting may generate two CUs each having a height equal to half the height of the current CU and a width equal to the width of the current CU.

[0090] The two divisions according to the ternary tree structure may include vertical ternary splitting (SPLIT_TT_VER) and horizontal ternary splitting (SPLIT_TT_HOR). The vertical ternary splitting (SPLIT_TT_VER) divides the current CU vertically at a ratio of 1:2:1. As shown in FIG. 5, the vertical ternary splitting may generate two CUs having the same height as the current CU and a width 1 / 4 of the current CU, and a CU having the same height as the current CU and a width half the current CU. The horizontal ternary splitting (SPLIT_TT_HOR) divides the current CU horizontally at a ratio of 1:2:1. As shown in FIG. 4, the horizontal ternary splitting may generate two CUs having a height 1 / 4 of the current CU and a width equal to the current CU, and one CU having a height half the current CU and a width equal to the current CU.

[0091] FIG. 6 is a diagram illustrating an exemplary signaling mechanism of block partition information in a quadtree with nested multi-type tree structure according to the present disclosure.

[0092] Here, the CTU is treated as the root node of the quadtree, and the CTU is first split into a quadtree structure. Information (e.g., qt_split_flag) indicating whether or not to perform quadtree splitting for the current CU (CTU or quadtree node (QT_node)) can be signaled. For example, if qt_split_flag is a first value (e.g., "1"), the current CU can be split into a quadtree. Also, if qt_split_flag is a second value (e.g., "0"), the current CU is not split into a quadtree and becomes a leaf node (QT_leaf_node) of the quadtree. The leaf nodes of each quadtree can then be further split into a multitype tree structure. That is, the leaf node of the quadtree can become a node (MTT_node) of the multitype tree. In a multi-type tree structure, a first flag (e.g., mtt_split_cu_flag) may be signaled to indicate whether the current node is further split. If the node is further split (e.g., the first flag is 1), a second flag (e.g., mtt_split_cu_vertical_flag) may be signaled to indicate the splitting direction. For example, if the second flag is 1, the splitting direction may be vertical, and if the second flag is 0, the splitting direction may be horizontal. Then, a third flag (e.g., mtt_split_cu_binary_flag) may be signaled to indicate whether the splitting type is a binary splitting type or a ternary splitting type. For example, if the third flag is 1, the splitting type may be a binary splitting type, and if the third flag is 0, the splitting type may be a ternary splitting type. The nodes of the multitype tree obtained by binary or ternary partitioning can be further partitioned into a multitype tree structure, but the nodes of the multitype tree cannot be partitioned into a quadtree structure.If the first flag is 0, the corresponding node of the multitype tree is not further divided and becomes a leaf node (MTT_leaf_node) of the multitype tree. The CU corresponding to the leaf node of the multitype tree can be used as the final coding unit described above.

[0093] Based on the above mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, a multi-type tree splitting mode (MttSplitMode) of a CU can be derived as shown in Table 1. In the following description, the multi-type tree splitting mode may be abbreviated as a multi-tree splitting type or a splitting type.

[0094] [Table 1]

[0095] FIG. 7 illustrates an example in which a CTU is divided into multiple CUs by applying a multi-type tree after applying a quadtree. In FIG. 7, a bold block edge 710 indicates a quadtree division, and the remaining edges 720 indicate a multi-type tree division. A CU may correspond to a coding block CB. In one embodiment, a CU may include a coding block of luma samples and two coding blocks of chroma samples corresponding to the luma samples. A chroma component (sample) CB or TB size may be derived based on a luma component (sample) CB or TB size according to a component ratio according to a color format (chroma format, e.g., 4:4:4, 4:2:2, 4:2:0, etc.) of a picture / image. If the color format is 4:4:4, the chroma component CB / TB size may be set to be the same as the luma component CB / TB size. If the color format is 4:2:2, the width of the chroma components CB / TB may be set to half the width of the luma components CB / TB, and the height of the chroma components CB / TB may be set to the height of the luma components CB / TB. If the color format is 4:2:0, the width of the chroma components CB / TB may be set to half the width of the luma components CB / TB, and the height of the chroma components CB / TB may be set to half the height of the luma components CB / TB.

[0096] In one embodiment, when the size of the CTU is 128 based on the luma sample unit, the size of the CU can have a size from 128×128, which is the same size as the CTU, to 4×4. In one embodiment, in the case of a 4:2:0 color format (or chroma format), the chroma CB size can have a size from 64×64 to 2×2.

[0097] Meanwhile, in one embodiment, the CU size and the TU size may be the same, or there may be multiple TUs in a CU region. The TU size may generally refer to a luma component (sample) TB (Transform Block) size.

[0098] The TU size may be derived based on a maximum allowable TB size (maxTbSize) that is a preset value. For example, if the CU size is larger than the maxTbSize, multiple TUs (TBs) having the maxTbSize may be derived from the CU, and transform / inverse transform may be performed in units of the TUs (TBs). For example, the maximum allowable luma TB size may be 64×64, and the maximum allowable chroma TB size may be 32×32. If the width or height of a CB divided by the tree structure is larger than the maximum transform width or height, the CB may be automatically (or implicitly) divided until the horizontal and vertical TB size restrictions are satisfied.

[0099] Also, for example, when intra prediction is applied, the intra prediction mode / type may be derived in units of the CU (or CB), and the procedure of deriving the neighboring reference samples and generating the predicted samples may be performed in units of the TU (or TB). In this case, one or more TUs (or TBs) may exist in one CU (or CB) region, and in this case, the multiple TUs (or TBs) may share the same intra prediction mode / type.

[0100] Meanwhile, for a quadtree coding tree scheme with a multi-type tree, the following parameters can be signaled from the encoding device to the decoding device as SPS syntax elements. For example, at least one of CTUsize, a parameter indicating the size of a root node of a quadtree, MinQTSize, a parameter indicating the minimum allowable size of a leaf node of a quadtree, MaxBTSize, a parameter indicating the maximum allowable size of a root node of a binary tree, MaxTTSize, a parameter indicating the maximum allowable size of a root node of a ternary tree, MaxMttDepth, a parameter indicating the maximum allowed hierarchy depth of a multi-type tree split from a leaf node of a quadtree, MinBtSize, a parameter indicating the minimum allowable leaf node size of a binary tree, and MinTtSize, a parameter indicating the minimum allowable leaf node size of a ternary tree, can be signaled.

[0101] In one embodiment using a 4:2:0 chroma format, the CTU size may be set to a 128x128 luma block and two 64x64 chroma blocks corresponding to the luma block. In this case, MinQTSize may be set to 16x16, MaxBtSize may be set to 128x128, MaxTtSize may be set to 64x64, MinBtSize and MinTtSize may be set to 4x4, and MaxMttDepth may be set to 4. A quadtree split may be applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes may be referred to as leaf QT nodes. The quadtree leaf nodes may have a size from 16x16 (e.g., the MinQTSize) to 128x128 (e.g., the CTU size). If the leaf QT node is 128x128, it may not be further split into a binary / ternary tree. This is because even if the division is performed in this case, it will exceed MaxBtsize and MaxTtsize (e.g., 64×64). In other cases, the leaf QT node may be further divided into a multitype tree. Thus, the leaf QT node is a root node for the multitype tree, and the leaf QT node may have a multitype tree depth (mttDepth) value of 0. If the multitype tree depth reaches MaxMttdepth (e.g., 4), no further additional division may be considered. If the width of the multitype tree node is equal to MinBtSize and equal to or less than 2×MinTtSize, no further additional horizontal division may be considered. If the height of the multitype tree node is equal to MinBtSize and equal to or less than 2×MinTtSize, no further additional vertical division may be considered. In this case, if division is not considered, the encoding device may omit signaling of division information. In such a case, the decoding device may induce the division information to a predetermined value.

[0102] Meanwhile, one CTU may include a coding block of luma samples (hereinafter referred to as a "luma block") and two coding blocks of corresponding chroma samples (hereinafter referred to as "chroma blocks"). The above coding tree scheme may be applied to the luma blocks and chroma blocks of a current CU in the same manner, or may be applied separately. Specifically, the luma blocks and chroma blocks in one CTU may be divided into the same block tree structure, and the tree structure in this case may be represented as a single tree (SINGLE_TREE). Alternatively, the luma blocks and chroma blocks in one CTU may be divided into separate block tree structures, and the tree structure in this case may be represented as a dual tree (DUAL_TREE). In other words, when a CTU is divided into a dual tree, a block tree structure for the luma blocks and a block tree structure for the chroma blocks may exist separately. In this case, the block tree structure for the luma block may be called a dual tree luma (DUAL_TREE_LUMA), and the block tree structure for the chroma block may be called a dual tree chroma (DUAL_TREE_CHROMA). For P and B slice / tile groups, the luma block and the chroma block in one CTU may be restricted to have the same coding tree structure. However, for I slice / tile groups, the luma block and the chroma block may have separate block tree structures. If the separate block tree structure is applied, the luma coding tree block (CTB) may be divided into CUs based on a specific coding tree structure, and the chroma CTB may be divided into chroma CUs based on another coding tree structure. That is, it may mean that a CU in an I slice / tile group to which a separate block tree structure is applied may be composed of a coding block of a luma component or a coding block of two chroma components, and a CU in a P or B slice / tile group may be composed of blocks of three color components (a luma component and two chroma components).

[0103] Although the quadtree coding tree structure with the multi-type tree has been described above, the structure in which the CU is divided is not limited thereto. For example, the BT structure and the TT structure can be interpreted as concepts included in a multiple partitioning tree (MPT) structure, and the CU can be interpreted as being divided by the QT structure and the MPT structure. In an example in which the CU is divided by the QT structure and the MPT structure, a syntax element (e.g., MPT_split_type) including information on whether the leaf node of the QT structure is divided into several blocks and a syntax element (e.g., MPT_split_mode) including information on which direction the leaf node of the QT structure is divided in, vertically or horizontally, are signaled, so that the division structure can be determined.

[0104] In another example, the CUs may be divided in a manner different from that of the QT structure, the BT structure, or the TT structure, that is, unlike the QT structure in which the CUs of the lower depth are divided into 1 / 4 size of the CUs of the higher depth, or the BT structure in which the CUs of the lower depth are divided into 1 / 2 size of the CUs of the higher depth, or the TT structure in which the CUs of the lower depth are divided into 1 / 4 or 1 / 2 size of the CUs of the higher depth, the CUs of the lower depth may be divided into 1 / 5, 1 / 3, 3 / 8, 3 / 5, 2 / 3, or 5 / 8 size of the CUs of the higher depth, as the case may be, and the manner in which the CUs are divided is not limited thereto.

[0105] In this way, the quadtree coding block structure with the multi-type tree can provide a very flexible block partition structure. Meanwhile, due to the partition types supported by the multi-type tree, different partition patterns can potentially result in the same coding block structure. The encoding device and the decoding device can reduce the amount of data of partition information by limiting the occurrence of such redundant partition patterns.

[0106] In addition, in the video / image encoding and decoding according to this document, the image processing units may have a hierarchical structure. A picture may be divided into one or more tiles, bricks, slices, and / or tile groups. A slice may include one or more bricks. A brick may include one or more CTU rows in a tile. A slice may include an integer number of bricks in a picture. A tile group may include one or more tiles. A tile may include one or more CTUs. The CTU may be divided into one or more CUs. A tile may be a rectangular region consisting of a specific tile row and a specific tile column of multiple CTUs in a picture. A tile group may include an integer number of tiles according to tile raster scanning in a picture. A slice header may carry information / parameters applicable to the corresponding slice (block in a slice). If an encoding device or a decoding device has a multi-core processor, the encoding / decoding procedures for the tiles, slices, bricks, and / or tile groups may be parallelized.

[0107] In the present disclosure, the names or concepts of slice and tile group may be mixed. That is, a tile group header may be referred to as a slice header. Here, a slice may have one of slice types including an intra (I) slice, a predictive (P) slice, and a bi-predictive (B) slice. For blocks in an I slice, inter prediction may not be used for prediction, and only intra prediction may be used. Of course, in this case, original sample values ​​may be coded and signaled without prediction. For blocks in a P slice, intra prediction or inter prediction may be used, and when inter prediction is used, only uni prediction may be used. Meanwhile, for blocks in a B slice, intra prediction or inter prediction may be used, and when inter prediction is used, up to bi prediction may be used.

[0108] The encoding device may determine the tile / tile group, brick, slice, maximum and minimum coding unit sizes according to the characteristics of the video image (e.g., resolution) or taking into account coding efficiency or parallel processing, and information related to this or information that can lead to this may be included in the bitstream.

[0109] The decoding device may obtain information indicating whether a tile / tile group, brick, slice, or CTU in a tile of the current picture is divided into multiple coding units, etc. The encoding device and decoding device may also improve coding efficiency by signaling such information only under certain conditions.

[0110] The slice header (slice header syntax) can include information / parameters commonly applicable to the slices. An APS (APS syntax) or a PPS (PPS syntax) can include information / parameters commonly applicable to one or more pictures. An SPS (SPS syntax) can include information / parameters commonly applicable to one or more sequences. A VPS (VPS syntax) can include information / parameters commonly applicable to multiple layers. A DPS (DPS syntax) can include information / parameters commonly applicable to all videos. A DPS can include information / parameters related to the combination of coded video sequences (CVSs).

[0111] Also, for example, information regarding the division and configuration of tiles / tile groups / bricks / slice can be configured in the encoding step via the higher level syntax and transmitted to a decoding device in the form of a bitstream.

[0112] Overview of Intra Prediction

[0113] Hereinafter, the intra prediction performed by the encoding device and the decoding device will be described in more detail. The intra prediction may refer to a prediction that generates a prediction sample for a current block based on a reference sample in a picture to which the current block belongs (hereinafter, the current picture).

[0114] The following description will be given with reference to FIG. 8. When intra prediction is applied to a current block 801, neighboring reference samples used for intra prediction of the current block 801 may be derived. The neighboring reference samples of the current block may include a total of 2×nH samples including a sample 811 adjacent to the left boundary of the current block having a size of nW×nH and a sample 812 adjacent to the bottom-left, a total of 2×nW samples including a sample 821 adjacent to the top boundary of the current block and a sample 822 adjacent to the top-right, and one sample 831 adjacent to the top-right of the current block. Alternatively, the neighboring reference samples of the current block may include multiple columns of upper neighboring samples and multiple rows of left neighboring samples.

[0115] In addition, the surrounding reference samples of the current block may also include a total of nH samples 841 adjacent to the right boundary of the current block of size nW×nH, a total of nW samples 851 adjacent to the bottom boundary of the current block, and one sample 842 adjacent to the bottom-right of the current block.

[0116] However, some of the surrounding reference samples of the current block may not yet be decoded or may not be available. In this case, the decoding device may construct the surrounding reference samples used for prediction by substituting the unavailable samples with the available samples, or may construct the surrounding reference samples used for prediction through the interpolation of the available samples.

[0117] When the neighboring reference samples are derived, (i) a prediction sample may be derived based on an average or an interpolation of neighboring reference samples of the current block, and (ii) the prediction sample may be derived based on a reference sample that exists in a specific (prediction) direction with respect to the prediction sample among the neighboring reference samples of the current block. In the case of (i), it may be called a non-directional mode or a non-angular mode, and in the case of (ii), it may be called a directional mode or an angular mode. In addition, the prediction sample may be generated through an interpolation between the second neighboring sample and the first neighboring sample that are located in the opposite direction to the prediction direction of the intra prediction mode of the current block based on the prediction sample of the current block among the neighboring reference samples. The above case may be called a linear interpolation intra prediction (LIP). In addition, a chroma prediction sample may be generated based on a luma sample using a linear model. In this case, it may be called a LM mode. Also, a temporary prediction sample of the current block may be derived based on the filtered surrounding reference sample, and a prediction sample of the current block may be derived by weighting the temporary prediction sample and at least one reference sample derived according to the intra prediction mode among the existing surrounding reference samples, i.e., unfiltered surrounding reference samples. The above case may be called Position Dependent Intra Prediction (PDPC). Also, intra prediction coding may be performed by selecting a reference sample line with the highest prediction accuracy from among multiple surrounding reference sample lines of the current block, deriving a prediction sample using a reference sample located in a prediction direction in the selected line, and signaling the reference sample line used to a decoding device.The above case may be referred to as multi-reference line (MRL) intra prediction or MRL-based intra prediction. In addition, the current block is divided into vertical or horizontal sub-partitions and intra prediction is performed based on the same intra prediction mode, and a surrounding reference sample may be derived and used in the sub-partition unit. That is, in this case, the intra prediction mode for the current block is applied to the sub-partitions in the same manner, but the performance of intra prediction may be improved in some cases by deriving and using a surrounding reference sample in the sub-partition unit. Such a prediction method may be referred to as intra sub-partitions (ISP) or ISP-based intra prediction. Such an intra prediction method may be called an intra prediction type in distinction from an intra prediction mode (e.g., DC mode, planar mode, and directional mode). The intra prediction type may be referred to by various terms such as an intra prediction technique or an additional intra prediction mode. For example, the intra prediction type (or additional intra prediction mode, etc.) may include at least one of the above-mentioned LIP, PDPC, MRL, and ISP. A general intra prediction method other than the specific intra prediction types such as LIP, PDPC, MRL, and ISP may be called a normal intra prediction type. The normal intra prediction type may refer to a case where the above-mentioned specific intra prediction types are not applied, and prediction may be performed based on the above-mentioned intra prediction modes. Meanwhile, post-processing filtering may be performed on the derived prediction samples as necessary.

[0118] Specifically, the intra prediction procedure may include an intra prediction mode / type determination step, a neighboring reference sample derivation step, and an intra prediction mode / type-based prediction sample derivation step. In addition, a post-processing filtering step may be performed on the derived prediction sample, if necessary.

[0119] Meanwhile, in addition to the above-mentioned intra prediction types, affine linear weighted intra prediction (ALWIP) may be used. The ALWIP may also be called linear weighted intra prediction (LWIP) or matrix weighted intra prediction or matrix based intra prediction (MIP). When the MIP is applied to a current block, a prediction sample for the current block may be derived by i) performing a matrix-vector-multiplication procedure using neighboring reference samples that have been subjected to an averaging procedure, and iii) further performing a horizontal / vertical interpolation procedure as necessary. The intra prediction mode used for the MIP may be configured to be different from the intra prediction mode used in the above-mentioned LIP, PDPC, MRL, ISP intra prediction, or normal intra prediction. The intra prediction mode for the MIP may be called a MIP intra prediction mode, a MIP prediction mode, or a MIP mode. For example, a matrix and an offset used in the matrix-vector multiplication may be set to be different depending on the intra prediction mode for the MIP. Here, the matrix may be called a (MIP) weight matrix, and the offset may be called a (MIP) offset vector or a (MIP) bias vector. A specific MIP method will be described later.

[0120] The block reconstruction procedure based on intra prediction and the intra prediction unit in the encoding device may include the following, for example: S910 may be performed by the intra prediction unit 185 of the encoding device, and S920 may be performed by a residual processing unit including at least one of the subtraction unit 115, the transform unit 120, the quantization unit 130, the inverse quantization unit 140, and the inverse transform unit 150 of the encoding device. Specifically, S920 may be performed by the subtraction unit 115 of the encoding device. In S930, the prediction information may be derived by the intra prediction unit 185 and encoded by the entropy encoding unit 190. In S930, the residual information may be derived by the residual processing unit and encoded by the entropy encoding unit 190. The residual information is information about the residual sample. The residual information may include information about a quantized transform coefficient for the residual sample. As described above, the residual samples may be derived into transform coefficients via the transform unit 120 of the encoding device, and the transform coefficients may be derived as quantized transform coefficients via the quantization unit 130. Information about the quantized transform coefficients may be coded in the entropy coding unit 190 through a residual coding procedure.

[0121] The encoding apparatus may perform intra prediction for a current block (S910). The encoding apparatus may derive an intra prediction mode / type for the current block, derive a neighboring reference sample for the current block, and generate a prediction sample in the current block based on the intra prediction mode / type and the neighboring reference sample. Here, the procedure of determining the intra prediction mode / type, deriving the neighboring reference sample, and generating the prediction sample may be performed simultaneously, or one procedure may be performed before the other procedures. For example, although not shown, the intra prediction unit 185 of the encoding apparatus may include an intra prediction mode / type determination unit, a reference sample derivation unit, and a prediction sample derivation unit, and the intra prediction mode / type determination unit may determine an intra prediction mode / type for the current block, the reference sample derivation unit may derive a neighboring reference sample for the current block, and the prediction sample derivation unit may derive a prediction sample for the current block. Meanwhile, when a prediction sample filtering procedure described later is performed, the intra prediction unit 185 may further include a prediction sample filter unit. The encoding device may determine a mode / type to be applied to the current block from among a plurality of intra prediction modes / types, and may compare RD costs for the intra prediction modes / types to determine an optimal intra prediction mode / type for the current block.

[0122] Meanwhile, the encoding apparatus may also perform a predicted sample filtering procedure. The predicted sample filtering may be called post-filtering. The predicted sample filtering procedure may filter some or all of the predicted samples. In some cases, the predicted sample filtering procedure may be omitted.

[0123] The encoding apparatus may generate a residual sample for the current block based on the (filtered) predicted sample (S920). The encoding apparatus may derive the residual sample by comparing the predicted sample with the original sample of the current block based on a phase.

[0124] The encoding device may encode image information including information on the intra prediction (prediction information) and residual information on the residual sample (S930). The prediction information may include the intra prediction mode information and the intra prediction type information. The encoding device may output the encoded image information in a bitstream format. The output bitstream may be transmitted to a decoding device via a storage medium or a network.

[0125] The residual information may include a residual coding syntax, which will be described later. The encoding apparatus may transform / quantize the residual samples to derive quantized transform coefficients. The residual information may include information on the quantized transform coefficients.

[0126] Meanwhile, as described above, the encoding apparatus may generate a reconstructed picture (including reconstructed samples and reconstructed blocks). To this end, the encoding apparatus may again inverse quantize / inverse transform the quantized transform coefficients to derive (modified) residual samples. The reason for again performing inverse quantization / inverse transform after transforming / quantizing the residual samples is to derive the same residual samples as the residual samples derived in the decoding apparatus, as described above. The encoding apparatus may generate a reconstructed block including reconstructed samples for the current block based on the predicted samples and the (modified) residual samples. A reconstructed picture for the current picture may be generated based on the reconstructed block. As described above, an in-loop filtering procedure or the like may further be applied to the reconstructed picture.

[0127] A video / image decoding procedure based on intra prediction and an intra prediction unit in a decoding device may include, by way of example only, the following: The decoding device may perform operations corresponding to those performed in the encoding device.

[0128] S1010 to S1030 may be performed by an intra prediction unit 265 of the decoding device, and the prediction information of S1010 and the residual information of S1040 may be obtained from a bitstream by an entropy decoding unit 210 of the decoding device. A residual processing unit including at least one of an inverse quantization unit 220 and an inverse transform unit 230 of the decoding device may derive a residual sample for a current block based on the residual information. Specifically, the inverse quantization unit 220 of the residual processing unit may derive a transform coefficient by performing inverse quantization based on a quantized transform coefficient derived based on the residual information, and the inverse transform unit 230 of the residual processing unit may derive a residual sample for the current block by performing inverse transform on the transform coefficient. S1050 may be performed by an adder 235 or a reconstruction unit of the decoding device.

[0129] Specifically, the decoding apparatus may derive an intra prediction mode / type for a current block based on received prediction information (intra prediction mode / type information) (S1010). The decoding apparatus may derive neighboring reference samples of the current block (S1020). The decoding apparatus may generate prediction samples in the current block based on the intra prediction mode / type and the neighboring reference samples (S1030). In this case, the decoding apparatus may perform a prediction sample filtering procedure. The prediction sample filtering may be referred to as post filtering. Some or all of the prediction samples may be filtered by the prediction sample filtering procedure. In some cases, the prediction sample filtering procedure may be omitted.

[0130] The decoding apparatus may generate a residual sample for the current block based on the received residual information. The decoding apparatus may generate a reconstructed sample for the current block based on the predicted sample and the residual sample, and derive a reconstructed block including the reconstructed sample (S1040). A reconstructed picture for the current picture may be generated based on the reconstructed block. As described above, an in-loop filtering procedure may be further applied to the reconstructed picture.

[0131] Here, the intra prediction unit 265 of the decoding device may include an intra prediction mode / type determination unit, a reference sample derivation unit, and a prediction sample derivation unit, although not shown, where the intra prediction mode / type determination unit determines an intra prediction mode / type for the current block based on intra prediction mode / type information acquired by the entropy decoding unit 210, the reference sample derivation unit derives neighboring reference samples of the current block, and the prediction sample derivation unit derives a prediction sample of the current block. Meanwhile, when the above-mentioned prediction sample filtering procedure is performed, the intra prediction unit 265 may further include a prediction sample filter unit.

[0132] The intra prediction mode information may include, for example, flag information (e.g., intra_luma_mpm_flag) indicating whether a most probable mode (MPM) is applied to the current block or a remaining mode is applied. If the MPM is applied to the current block, the prediction mode information may further include index information (e.g., intra_luma_mpm_idx) indicating one of the intra prediction mode candidates (MPM candidates). The intra prediction mode candidates (MPM candidates) may be configured as an MPM candidate list or an MPM list. Also, if the MPM is not applied to the current block, the intra prediction mode information may further include remaining mode information (e.g., intra_luma_mpm_remainder) indicating one of the remaining intra prediction modes excluding the intra prediction mode candidates (MPM candidates). A decoding apparatus may determine the intra prediction mode of the current block based on the intra prediction mode information. For the above-mentioned MIP, a separate MPM list may be configured.

[0133] Further, the intra prediction type information may be realized in various forms. As an example, the intra prediction type information may include intra prediction type index information indicating one of the intra prediction types. As another example, the intra prediction type information may include at least one of reference sample line information (e.g., intra_luma_ref_idx) indicating whether the MRL is applied to the current block and, if so, which reference sample line is used, ISP flag information (e.g., intra_subpartitions_mode_flag) indicating whether the ISP is applied to the current block, ISP type information (e.g., intra_subpartitions_split_flag) indicating a subpartition split type when the ISP is applied, flag information indicating whether PDCP is applied, or flag information indicating whether LIP is applied. Also, the intra prediction type information may include an MIP flag indicating whether MIP is applied to the current block.

[0134] The intra prediction mode information and / or the intra prediction type information may be encoded / decoded through a coding method described in this document. For example, the intra prediction mode information and / or the intra prediction type information may be encoded / decoded through entropy coding (e.g., CABAC, CAVLC) coding based on a truncated (rice) binary code.

[0135] Inter Prediction Overview

[0136] Hereinafter, a detailed technique of an inter prediction method in the description of encoding and decoding with reference to Figures 2 and 3 will be described. In the case of a decoding device, a video / image decoding method based on inter prediction and an inter prediction unit in the decoding device may operate according to the following description. In the case of an encoding device, a video / image encoding method based on inter prediction and an inter prediction unit in the encoding device may operate according to the following description. In addition, data encoded according to the following description may be stored in a bitstream format.

[0137] A prediction unit of an encoding device / image decoding device may perform inter prediction on a block basis to derive a prediction sample. Inter prediction may indicate a prediction derived in a manner dependent on data elements (e.g., sample values ​​or motion information, etc.) of pictures other than the current picture. When inter prediction is applied to the current block, a predicted block (prediction sample array) for the current block may be derived based on a reference block (reference sample array) identified by a motion vector on a reference picture indicated by a reference picture index. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, motion information of the current block may be predicted on a block, sub-block, or sample basis based on correlation between motion information of neighboring blocks and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction type (L0 prediction, L1 prediction, Bi prediction, etc.) information. When inter prediction is applied, the neighboring blocks may include spatial neighboring blocks present in the current picture and temporal neighboring blocks present in the reference picture. The reference picture including the reference block and the reference picture including the temporal peripheral block may be the same or different. The temporal peripheral block may be called a collocated reference block, a collocated CU (colCU), etc., and the reference picture including the temporal peripheral block may be called a collocated picture (colPic). For example, a motion information candidate list may be constructed based on the peripheral blocks of the current block, and flag or index information indicating which candidate is selected (used) to derive the motion vector and / or reference picture index of the current block may be signaled. Inter prediction may be performed based on various prediction modes, and for example, in the case of skip mode and merge mode, the motion information of the current block may be the same as the motion information of the selected peripheral block.In the case of skip mode, unlike the merge mode, the residual signal may not be transmitted. In the case of motion vector prediction (MVP) mode, the motion vector of the selected neighboring block is used as a motion vector predictor, and a motion vector difference may be signaled. In this case, the motion vector of the current block may be derived using the sum of the motion vector predictor and the motion vector difference.

[0138] The motion information may include L0 motion information and / or L1 motion information based on an inter prediction type (such as L0 prediction, L1 prediction, Bi prediction, etc.). A motion vector in the L0 direction may be referred to as an L0 motion vector or MVL0, and a motion vector in the L1 direction may be referred to as an L1 motion vector or MVL1. A prediction based on an L0 motion vector may be referred to as an L0 prediction, a prediction based on an L1 motion vector may be referred to as an L1 prediction, and a prediction based on both the L0 motion vector and the L1 motion vector may be referred to as a bi-prediction. Here, the L0 motion vector may indicate a motion vector associated with a reference picture list L0 (L0), and the L1 motion vector may indicate a motion vector associated with a reference picture list L1 (L1). The reference picture list L0 may include pictures earlier in output order than the current picture as reference pictures, and the reference picture list L1 may include pictures later in output order than the current picture. The previous picture may be referred to as a forward (reference) picture, and the subsequent picture may be referred to as a backward (reference picture). The reference picture list L0 may further include a picture subsequent to the current picture in output order as a reference picture. In this case, the previous picture may be indexed first in the reference picture list L0, and the subsequent picture may be indexed next. The reference picture list L1 may further include a picture subsequent to the current picture in output order as a reference picture. In this case, the subsequent picture may be indexed first in the reference picture list L1, and the previous picture may be indexed next. Here, the output order may correspond to a picture order count (POC) order.

[0139] A video / image encoding procedure based on inter prediction and an inter prediction unit in an encoding device may include the following, for example. The procedure will be described with reference to FIG. 11. The encoding device performs inter prediction on a current block (S1110). The encoding device may derive an inter prediction mode and motion information of the current block, and generate a prediction sample of the current block. Here, the inter prediction mode determination, motion information derivation, and prediction sample generation procedures may be performed simultaneously, or any one procedure may be performed prior to the other procedures. For example, the inter prediction unit of the encoding device may include a prediction mode determination unit, a motion information derivation unit, and a prediction sample derivation unit, and the prediction mode determination unit may determine a prediction mode for the current block, the motion information derivation unit may derive motion information of the current block, and the prediction sample derivation unit may derive a prediction sample of the current block. For example, the inter prediction unit of the encoding device may search for a block similar to the current block within a certain area (search area) of a reference picture through motion estimation, and derive a reference block whose difference with the current block is minimum or equal to a certain criterion. Based on this, a reference picture index indicating a reference picture in which the reference block is located may be derived, and a motion vector may be derived based on a position difference between the reference block and the current block. The encoding device may determine a mode to be applied to the current block from among various prediction modes. The encoding device may compare RD costs for the various prediction modes to determine an optimal prediction mode for the current block.

[0140] For example, when a skip mode or a merge mode is applied to the current block, the encoding device may construct a merge candidate list (to be described later) and derive a reference block whose difference from the current block is minimum or equal to or less than a certain criterion among reference blocks indicated by merge candidates included in the merge candidate list. In this case, a merge candidate related to the derived reference block may be selected, and merge index information indicating the selected merge candidate may be generated and signaled to a decoding device. Motion information of the current block may be derived using motion information of the selected merge candidate.

[0141] As another example, when the (A)MVP mode is applied to the current block, the encoding apparatus may construct an (A)MVP candidate list described below, and may use a motion vector of a selected MVP candidate among the MVP (motion vector predictor) candidates included in the (A)MVP candidate list as the MVP of the current block. In this case, for example, a motion vector indicating a reference block derived by the above-mentioned motion estimation may be used as the motion vector of the current block, and an MVP candidate having a motion vector with the smallest difference from the motion vector of the current block among the MVP candidates may become the selected MVP candidate. A motion vector difference (MVD), which is a difference obtained by subtracting the MVP from the motion vector of the current block, may be derived. In this case, information regarding the MVD may be signaled to the decoding apparatus. In addition, when the (A)MVP mode is applied, the value of the reference picture index may be configured as reference picture index information and separately signaled to the decoding apparatus.

[0142] The encoding apparatus may derive a residual sample based on the predicted sample (S1120). The encoding apparatus may derive the residual sample by comparing an original sample of the current block with the predicted sample.

[0143] The encoding device encodes image information including prediction information and residual information (S1130). The encoding device may output the encoded image information in a bitstream format. The prediction information may include prediction mode information (e.g., skip flag, merge flag, or mode index) and information on motion information, which are information related to the prediction procedure. The information on the motion information may include candidate selection information (e.g., merge index, mvp flag, or mvp index), which is information for deriving a motion vector. The information on the motion information may include the above-mentioned information on MVD and / or reference picture index information. The information on the motion information may include information indicating whether L0 prediction, L1 prediction, or bi-prediction is applied. The residual information is information on the residual sample. The residual information may include information on a quantized transform coefficient for the residual sample.

[0144] The output bitstream can be stored on a (digital) storage medium and transmitted to the decoding device, or can be transmitted to the decoding device via a network.

[0145] Meanwhile, as described above, the encoding apparatus can generate a reconstructed picture (including reconstructed samples and reconstructed blocks) based on the reference samples and the residual samples. This is because the encoding apparatus derives the same prediction result as that performed by the decoding apparatus, thereby improving coding efficiency. Therefore, the encoding apparatus can store the reconstructed picture (or reconstructed samples, reconstructed blocks) in a memory and use it as a picture for inter prediction. As described above, an in-loop filtering procedure can be further applied to the reconstructed picture.

[0146] The video / image decoding procedure based on inter prediction and the inter prediction unit in the decoding device may generally include, for example:

[0147] The decoding apparatus may perform operations corresponding to those performed by the encoding apparatus, and may perform prediction for a current block based on received prediction information to derive predicted samples.

[0148] Specifically, the decoding apparatus may determine a prediction mode for the current block based on the received prediction information (S1210). The decoding apparatus may determine which inter prediction mode is applied to the current block based on prediction mode information in the prediction information.

[0149] For example, it may be determined whether the merge mode is applied to the current block or the (A)MVP mode is determined based on the merge flag, or any one of various inter prediction mode candidates may be selected based on the mode index. The inter prediction mode candidates may include a skip mode, a merge mode, and / or an (A)MVP mode, or may include various inter prediction modes described below.

[0150] The decoding apparatus derives motion information of the current block based on the determined inter prediction mode (S1220). For example, when a skip mode or a merge mode is applied to the current block, the decoding apparatus may form a merge candidate list (described later) and select one of the merge candidates included in the merge candidate list. The selection may be performed based on the above-mentioned selection information (merge index). The motion information of the selected merge candidate may be used to derive motion information of the current block. The motion information of the selected merge candidate may be used as motion information of the current block.

[0151] As another example, when the (A)MVP mode is applied to the current block, the decoding apparatus configures an (A)MVP candidate list described later, and can use the motion vector of an mvp (motion vector predictor) candidate selected from among the mvp candidates included in the (A)MVP candidate list as the mvp of the current block. The selection can be performed based on the above-described selection information (mvp flag or mvp index). In this case, based on the information regarding the MVD, the MVD of the current block can be derived, and based on the mvp and the MVD of the current block, the motion vector of the current block can be derived. Also, based on the reference picture index information, the reference picture index of the current block can be derived. A picture indicated by the reference picture index within the related reference picture list regarding the current block can be derived as the reference picture to be referred to for the inter prediction of the current block.

[0152] On the other hand, as will be described later, the motion information of the current block can be derived without configuring a candidate list. In this case, the motion information of the current block can be derived according to the procedure disclosed in the prediction mode described later. In this case, the above-described candidate list configuration can be omitted.

[0153] The decoding apparatus can generate a prediction sample for the current block based on the motion information of the current block (S1230). In this case, the reference picture can be derived based on the reference picture index of the current block, and the prediction sample of the current block can be derived using the sample of the reference block indicated by the motion vector of the current block on the reference picture. In this case, as will be described later, depending on the case, a prediction sample filtering procedure for all or a part of the prediction samples of the current block can be further performed.

[0154] For example, the inter prediction unit of the decoding device may include a prediction mode determination unit, a motion information derivation unit, and a prediction sample derivation unit, and may determine a prediction mode for the current block based on prediction mode information received from the prediction mode determination unit, derive motion information (such as a motion vector and / or a reference picture index) of the current block based on information regarding the motion information received from the motion information derivation unit, and derive a prediction sample of the current block in the prediction sample derivation unit.

[0155] The decoding apparatus generates a residual sample for the current block based on the received residual information (S1240). The decoding apparatus generates a reconstructed sample for the current block based on the predicted sample and the residual sample, and can generate a reconstructed picture based on the reconstructed sample (S1250). Thereafter, an in-loop filtering procedure can be further applied to the reconstructed picture, as described above.

[0156] As described above, the inter prediction procedure may include an inter prediction mode determination step, a motion information derivation step according to the determined prediction mode, and a prediction execution step (generation of a prediction sample) based on the derived motion information. The inter prediction procedure may be performed in the encoding device and the decoding device as described above.

[0157] Quantization / Dequantization

[0158] As described above, the quantization unit of the encoding device can apply quantization to the transform coefficients to derive quantized transform coefficients, and the inverse quantization unit of the encoding device or the inverse quantization unit of the decoding device can apply inverse quantization to the quantized transform coefficients to derive transform coefficients.

[0159] In the encoding and decoding of video / still images, the quantization rate can be changed, and the compression rate can be adjusted using the changed quantization rate. In terms of implementation, instead of directly using the quantization rate, a quantization parameter (QP) can be used in consideration of complexity. For example, an integer value of the quantization parameter from 0 to 63 can be used, and each quantization parameter value can correspond to an actual quantization rate. In addition, the quantization parameter QP for the luma component (luma sample) can be set to 1000 s.o.f. Y and the quantization parameter QP for the chroma components (chroma samples). C can be set differently.

[0160] In the quantization process, a transform coefficient C is input and divided by a quantization rate (Qstep), and a quantized transform coefficient C' can be obtained based on the input. In this case, in consideration of the computational complexity, the quantization rate can be multiplied by a scale to convert it into an integer form, and a shift operation can be performed by a value corresponding to the scale value. A quantization scale can be derived based on the product of the quantization rate and the scale value. That is, the quantization scale can be derived according to QP. The quantization scale can also be applied to the transform coefficient C, and a quantized transform coefficient C' can be derived based on the quantization scale.

[0161] The inverse quantization process is the inverse process of the quantization process, and the quantized transform coefficients C' are multiplied by a quantization rate Qstep to obtain the restored transform coefficients C'. In this case, a level scale can be derived according to the quantization parameter, and the level scale can be applied to the quantized transform coefficients C' to derive the restored transform coefficients C'. The restored transform coefficients C' may differ slightly from the original transform coefficients C due to losses in the transform and / or quantization process. Therefore, the encoding device can also perform inverse quantization in the same way as the decoding device.

[0162] Meanwhile, an adaptive frequency weighting quantization technique that adjusts the quantization strength according to the frequency can be applied. The adaptive frequency weighting quantization technique is a method of applying a quantization strength differently according to the frequency. The adaptive frequency weighting quantization can apply a quantization strength differently according to each frequency using a predefined quantization scaling matrix. That is, the above-mentioned quantization / dequantization process can be performed based on the quantization scaling matrix. For example, a different quantization scaling matrix can be used depending on the size of the current block and / or whether the prediction mode applied to the current block is inter prediction or intra prediction to generate a residual signal of the current block. The quantization scaling matrix can be called a quantization matrix or a scaling matrix. The quantization scaling matrix can be predefined. Also, for frequency adaptive scaling, frequency-specific quantization scale information for the quantization scaling matrix can be configured / coded in an encoding device and signaled to a decoding device. The frequency-specific quantization scale information can be called quantization scaling information. The frequency-specific quantization scale information may include scaling list data (scaling_list_data). The (modified) quantization scaling matrix may be derived based on the scaling list data. The frequency-specific quantization scale information may include present flag information indicating whether the scaling list data is present. Alternatively, when the scaling list data is signaled at a higher level (e.g., SPS), the frequency-specific quantization scale information may further include information indicating whether the scaling list data is modified at a lower level (e.g., PPS or tile group header, etc.).

[0163] Conversion / reverse conversion

[0164] As described above, the encoding apparatus may derive a residual block (residual sample) based on a block (prediction sample) predicted through intra / inter / IBC prediction, etc., and may derive a quantized transform coefficient by applying transform and quantization to the derived residual sample. Information on the quantized transform coefficient (residual information) may be included in a residual coding syntax, encoded, and then output in a bitstream format. The decoding apparatus may obtain information on the quantized transform coefficient (residual information) from the bitstream and decode the information to derive a quantized transform coefficient. The decoding apparatus may derive a residual sample through inverse quantization / inverse transform based on the quantized transform coefficient. As described above, at least one of the quantization / inverse quantization and / or transform / inverse transform may be omitted. When the transform / inverse transform is omitted, the transform coefficient may be referred to as a coefficient or a residual coefficient, or may still be referred to as a transform coefficient for uniformity of expression. Whether the transform / inverse transform is omitted may be signaled based on a transform skip flag (e.g., transform_skip_flag).

[0165] The transform / inverse transform may be performed based on a transform kernel. For example, a multiple transform selection (MTS) scheme for transform / inverse transform may be applied. In this case, a part of a set of multiple transform kernels may be selected and applied to the current block. The transform kernel may be referred to by various terms such as a transform matrix or a transform type. For example, the transform kernel set may indicate a combination of a vertical transform kernel (vertical transform kernel) and a horizontal transform kernel (horizontal transform kernel).

[0166] The transform / inverse transform may be performed in units of a CU or a TU. That is, the transform / inverse transform may be applied to a residual sample in a CU or a residual sample in a TU. The CU size may be the same as the TU size, or multiple TUs may exist in a CU region. Meanwhile, the CU size may generally indicate a luma component (sample) CB size. The TU size may generally indicate a luma component (sample) TB size. The chroma component (sample) CB or TB size may be derived based on the luma component (sample) CB or TB size according to a component ratio according to a color format (chroma format, for example, 4:4:4, 4:2:2, 4:2:0, etc.). The TU size may be derived based on maxTbSize. For example, if the CU size is larger than the maxTbSize, multiple TUs (TBs) of the maxTbSize may be derived from the CU, and the transform / inverse transform may be performed in units of the TUs (TBs). The maxTbSize may be taken into consideration in determining whether various intra prediction types such as ISP are applied. The information on maxTbSize may be predetermined, or may be generated and coded in the coding device and signaled to the coding device.

[0167] Entropy Coding

[0168] As previously described with reference to Fig. 2, a part or all of the video / image information may be entropy coded by the entropy coding unit 190, and a part or all of the video / image information described with reference to Fig. 3 may be entropy decoded by the entropy decoding unit 310. In this case, the video / image information may be coded / decoded on a syntax element basis. In this document, coding / decoding information may include coding / decoding by the method described in this paragraph.

[0169] FIG. 13 shows a block diagram of CABAC for encoding one syntax element. In the encoding process of CABAC, first, if the input signal is not a binary value but a syntax element, the input signal can be converted to a binary value through binarization. If the input signal is already a binary value, it can be bypassed without going through binarization. Here, each binary digit 0 or 1 constituting the binary value can be called a bin. For example, if the binary string (bin string) after binarization is 110, each of 1, 1, and 0 can be called one bin. The bin for one syntax element can indicate the value of the syntax element.

[0170] The binarized bins may be input to a regular coding engine or a bypass coding engine. The regular coding engine may assign a context model reflecting a probability value to the bin and encode the bin based on the assigned context model. In the regular coding engine, after coding for each bin, the probability model for the bin may be updated. A bin coded in this way may be called a context-coded bin. The bypass coding engine may omit a procedure of estimating a probability for an input bin and a procedure of updating a probability model applied to the bin after coding. In the case of the bypass coding engine, the coding speed may be improved by coding the input bin by applying a uniform probability distribution (e.g., 50:50) instead of assigning a context. A bin coded in this way may be called a bypass bin. A context model may be assigned and updated for each bin that is context coded (regularly coded), and the context model may be indicated based on ctxidx or ctxInc. ctxidx may be derived based on ctxInc. Specifically, for example, a context index (ctxidx) indicating a context model for each of the normally coded bins may be derived as a sum of a context index increment (ctxInc) and a context index offset (ctxIdxOffset). Here, the ctxInc may be derived differently for each bin. The ctxIdxOffset may be represented as the lowest value of the ctxIdx. The lowest value of the ctxIdx may be referred to as an initial value (initValue) of the ctxIdx.The ctxIdxOffset is a value generally used for distinguishing a context model from a context model for another syntax element, and a context model for one syntax element can be distinguished / derived based on ctxinc.

[0171] In the entropy coding procedure, it is possible to determine whether to perform coding via a regular coding engine or a bypass coding engine, and to switch the coding path. Entropy decoding can be performed in the same manner as entropy coding, but in the reverse order.

[0172] The above-mentioned entropy coding may be performed, for example, as shown in FIG. 14 and FIG. 15. Referring to FIG. 14 and FIG. 15, an encoding device (entropy encoding unit) may perform an entropy coding procedure on image / video information. The image / video information may include partitioning related information, prediction related information (e.g., inter / intra prediction partition information, intra prediction mode information, inter prediction mode information, etc.), residual information, in-loop filtering related information, etc., or may include various syntax elements related thereto. The entropy coding may be performed on a syntax element basis. Steps S1410 to S1420 of FIG. 14 may be performed by the entropy encoding unit 190 of the encoding device of FIG. 2 described above.

[0173] The encoding apparatus may perform binarization on the target syntax element (S1410). Here, the binarization may be based on various binarization methods such as a truncated rice binarization process or a fixed-length binarization process, and the binarization method for the target syntax element may be predefined. The binarization procedure may be performed by a binarization unit 191 in an entropy encoding unit 190.

[0174] The encoding device may perform entropy encoding on the target syntax element (S1420). The encoding device may perform regular coding-based (context-based) or bypass coding-based encoding on the bin string of the target syntax element based on an entropy coding technique such as CABAC (context-adaptive arithmetic coding) or CAVLC (context-adaptive variable length coding), and the output may be included in a bitstream. The entropy encoding procedure may be performed by an entropy encoding processing unit 192 in an entropy encoding unit 190. As described above, the bitstream may be transmitted to a decoding device via a (digital) storage medium or a network.

[0175] 16 and 17, a decoding apparatus (entropy decoding unit) may decode encoded image / video information. The image / video information may include partitioning related information, prediction related information (e.g., inter / intra prediction classification information, intra prediction mode information, inter prediction mode information, etc.), residual information, in-loop filtering related information, etc., or may include various syntax elements related thereto. The entropy coding may be performed in units of syntax elements. S1610 to S1620 may be performed by the entropy decoding unit 210 of the decoding apparatus of FIG. 3 described above.

[0176] The decoding apparatus may perform binarization on the target syntax element (S1610). Here, the binarization may be based on various binarization methods such as a truncated rice binarization process or a fixed-length binarization process, and the binarization method for the target syntax element may be predefined. The decoding apparatus may derive usable bin strings (bin string candidates) for usable values ​​of the target syntax element through the binarization procedure. The binarization procedure may be performed by a binarization unit 211 in the entropy decoding unit 210.

[0177] The decoding device may perform entropy decoding for the target syntax element (S1620). The decoding device may sequentially decode and parse each bin for the target syntax element from input bits in a bitstream, and compare the derived bin string with the available bin string for the syntax element. If the derived bin string is the same as one of the available bin strings, a value corresponding to the bin string may be derived as the value of the syntax element. If not, the above procedure may be repeated after further parsing the next bit in the bitstream. Through this process, it is possible to signal specific information (specific syntax element) using variable length bits without using start or end bits for the specific information in the bitstream. This allows relatively fewer bits to be allocated to low values, thereby improving overall coding efficiency.

[0178] The decoding device may perform context-based or bypass-based decoding for each bin in the bin string from the bitstream based on an entropy coding technique such as CABAC or CAVLC. The entropy decoding procedure may be performed by an entropy decoding processing unit 212 in the entropy decoding unit 210. The bitstream may include various information for image / video decoding as described above. As described above, the bitstream may be transmitted to the decoding device via a (digital) storage medium or a network.

[0179] In this document, a table containing syntax elements (syntax table) can be used to indicate signaling of information from an encoding device to a decoding device. The order of syntax elements in the table containing syntax elements used in this document can indicate a parsing order of the syntax elements from a bitstream. The encoding device can configure and encode the syntax table so that the syntax elements can be parsed by the decoding device according to the parsing order, and the decoding device can parse and decode the syntax elements of the syntax table from the bitstream according to the parsing order to obtain the values ​​of the syntax elements.

[0180] General Image / Video Coding Procedures

[0181] In image / video coding, pictures constituting an image / video may be coded / decoded according to a series of decoding orders. A picture order corresponding to an output order of decoded pictures may be set to be different from the decoding order. Based on this, not only forward prediction but also backward prediction may be performed during inter prediction.

[0182] FIG. 18 shows an example of a schematic picture decoding procedure to which the embodiment of the present document can be applied. In FIG. 18, S1810 may be performed in the entropy decoding unit 210 of the decoding device described above in FIG. 3, S1820 may be performed in the prediction unit including the intra prediction unit 265 and the inter prediction unit 260, S1830 may be performed in the residual processing unit including the inverse quantization unit 220 and the inverse transform unit 230, S1840 may be performed in the addition unit 235, and S1850 may be performed in the filtering unit 240. S1810 may include the information decoding procedure described in this document, S1820 may include the inter / intra prediction procedure described in this document, S1830 may include the residual processing procedure described in this document, S1840 may include the block / picture reconstruction procedure described in this document, and S1850 may include the in-loop filtering procedure described in this document.

[0183] Referring to FIG. 18, the picture decoding procedure may include, as shown in the description of FIG. 3, an image / video information acquisition procedure (S1810) from a bitstream (by decoding), a picture reconstruction procedure (S1820 to S1840), and an in-loop filtering procedure (S1850) for the reconstructed picture. The picture reconstruction procedure may be performed based on a prediction sample and a residual sample obtained through the inter / intra prediction (S1820) and residual processing (S1830, inverse quantization and inverse transform for quantized transform coefficients) processes described in this document. A modified reconstructed picture may be generated through an in-loop filtering procedure for the reconstructed picture generated by the picture reconstruction procedure, and the modified reconstructed picture may be output as a decoded picture or may be stored in a decoded picture buffer or memory 250 of the decoding device and used as a reference picture in the inter prediction procedure when decoding a subsequent picture. In some cases, the in-loop filtering procedure may be omitted, in which case the reconstructed picture may be output as a decoded picture, or may be stored in a decoded picture buffer or memory 250 of the decoding device and used as a reference picture in an inter-prediction procedure when decoding a subsequent picture. The in-loop filtering procedure (S1850) may include a deblocking filtering procedure, a sample adaptive offset (SAO) procedure, an adaptive loop filter (ALF) procedure, and / or a bi-lateral filter procedure, as described above, some or all of which may be omitted. In addition, one or some of the deblocking filtering procedure, the sample adaptive offset (SAO) procedure, the adaptive loop filter (ALF) procedure, and the bi-lateral filter procedure may be applied sequentially, or all of them may be applied sequentially.For example, a deblocking filtering procedure may be applied to the reconstructed picture, and then an SAO procedure may be performed. Or, for example, a deblocking filtering procedure may be applied to the reconstructed picture, and then an ALF procedure may be performed. This may be performed in the encoding device as well.

[0184] FIG 19 shows an example of a schematic picture encoding procedure to which the embodiment of the present document can be applied. In FIG 19, S1910 may be performed in a prediction unit including an intra prediction unit 185 or an inter prediction unit 180 of the encoding device described above in FIG 2, S1920 may be performed in a residual processing unit including a transform unit 120 and / or a quantization unit 130, and S1930 may be performed in an entropy encoding unit 190. S1910 may include an inter / intra prediction procedure described in the present document, S1920 may include a residual processing procedure described in the present document, and S1930 may include an information encoding procedure described in the present document.

[0185] Referring to FIG. 19, the picture encoding procedure may include not only a procedure of encoding information for picture reconstruction (e.g., prediction information, residual information, partitioning information, etc.) and outputting it in a bitstream format as shown in the description of FIG. 2, but also a procedure of generating a reconstructed picture for a current picture and a procedure of applying in-loop filtering to the reconstructed picture (optional). The encoding apparatus may derive a (modified) residual sample from the quantized transform coefficient through the inverse quantization unit 140 and the inverse transform unit 150, and may generate a reconstructed picture based on the prediction sample output from S1910 and the (modified) residual sample. The reconstructed picture generated in this manner may be the same as the reconstructed picture generated in the above-mentioned decoding apparatus. A modified reconstructed picture may be generated through an in-loop filtering procedure on the reconstructed picture, which may be stored in the decoded picture buffer or memory 170, and may be used as a reference picture in an inter prediction procedure when encoding a subsequent picture, as in the case of the decoding apparatus. As described above, in some cases, some or all of the in-loop filtering procedure may be omitted. When the in-loop filtering procedure is performed, (in-loop) filtering related information (parameters) can be coded in the entropy coding unit 190 and output in bitstream format, and the decoding device can perform the in-loop filtering procedure in the same manner as the coding device based on the filtering related information.

[0186] Through such an in-loop filtering procedure, noises generated during image / video coding, such as blocking artifacts and ringing artifacts, can be reduced, and subjective / objective visual quality can be improved. In addition, by performing the in-loop filtering procedure in both the encoding device and the decoding device, the encoding device and the decoding device can derive the same prediction result, thereby improving the reliability of picture coding and reducing the amount of data to be transmitted for picture coding.

[0187] As described above, a picture reconstruction procedure may be performed not only in a decoding apparatus but also in an encoding apparatus. A reconstruction block may be generated based on intra prediction / inter prediction for each block, and a reconstruction picture including the reconstruction block may be generated. If a current picture / slice / tile group is an I picture / slice / tile group, blocks included in the current picture / slice / tile group may be reconstructed based only on intra prediction. Meanwhile, if a current picture / slice / tile group is a P or B picture / slice / tile group, blocks included in the current picture / slice / tile group may be reconstructed based on intra prediction or inter prediction. In this case, inter prediction may be applied to some blocks in the current picture / slice / tile group, and intra prediction may be applied to the remaining blocks. Color components of a picture may include luma components and chroma components, and unless explicitly limited in this document, the methods and embodiments proposed in this document may be applied to luma components and chroma components.

[0188] Example of coding hierarchy and structure

[0189] Video / images coded according to this document can be processed, for example, according to the coding hierarchy and structure described below.

[0190] 20 is a diagram showing a hierarchical structure for a coded image. A coded image can be divided into a VCL (video coding layer) that handles image decoding and processing, a lower system that transmits and stores coded information, and a NAL (network abstraction layer) that exists between the VCL and the lower system and is responsible for network adaptation functions.

[0191] In VCL, it is possible to generate VCL data including compressed image data (slice data), or to generate parameter sets including information such as a Picture Parameter Set (PPS), a Sequence Parameter Set (SPS), and a Video Parameter Set (VPS), or a Supplemental Enhancement Information (SEI) message that is additionally required for image decoding processing.

[0192] In NAL, NAL units can be generated by adding header information (NAL unit header) to RBSP (Raw Byte Sequence Payload) generated in VCL. In this case, RBSP refers to slice data, parameter set, SEI message, etc. generated in VCL. NAL unit header can include NAL unit type information identified by RBSP data included in the corresponding NAL unit.

[0193] As shown, NAL units can be divided into VCL NAL units and non-VCL NAL units according to the RBSP generated by the VCL. The VCL NAL unit can refer to a NAL unit that contains information about an image (slice data), and the non-VCL NAL unit can refer to a NAL unit that contains information required for decoding an image (parameter set or SEI message).

[0194] The above-mentioned VCL NAL unit and non-VCL NAL unit can be transmitted over a network with header information according to the data standard of the lower system. For example, the NAL unit can be transformed into a data format of a predetermined standard such as H.266 / VVC file format, RTP (Real-time Transport Protocol), TS (Transport Stream), etc., and transmitted over various networks.

[0195] As described above, the NAL unit type of a NAL unit can be identified according to the RBSP data structure included in the NAL unit, and information about such NAL unit type can be stored and signaled in the NAL unit header.

[0196] For example, NAL units can be largely classified into VCL NAL unit types and non-VCL NAL unit types depending on whether the NAL unit contains information about an image (slice data). The VCL NAL unit types can be classified according to the nature and type of pictures contained in the VCL NAL unit, and the non-VCL NAL unit types can be classified according to the type of parameter set.

[0197] Below, examples of NAL unit types identified by the types of parameter sets / information contained in the Non-VCL NAL unit types are listed.

[0198] -DCI (Decoding capability information) NAL unit: Type for NAL units containing DCI

[0199] -VPS (Video Parameter Set) NAL unit: Type for NAL units containing VPS

[0200] -SPS (Sequence Parameter Set) NAL unit: Type for NAL units containing SPS

[0201] -PPS (Picture Parameter Set) NAL unit: Type for NAL units containing PPS

[0202] -APS (Adaptation Parameter Set) NAL unit: Type for NAL units including APS

[0203] -PH(Picture header) NAL unit:Type for NAL unit including PH

[0204] The above-mentioned NAL unit type has syntax information for the NAL unit type, and the syntax information can be stored in a NAL unit header and signaled. For example, the syntax information can be nal_unit_type, and the NAL unit type can be specified by a value of nal_unit_type.

[0205] Meanwhile, as described above, one picture may include multiple slices, and one slice may include a slice header and slice data. In this case, one picture header may be further added for multiple slices (slice header and slice data set) in one picture. The picture header (picture header syntax) may include information / parameters commonly applicable to the pictures.

[0206] The slice header (slice header syntax) may include information / parameters commonly applicable to the slices. The APS (APS syntax) or PPS (PPS syntax) may include information / parameters commonly applicable to one or more slices or pictures. The SPS (SPS syntax) may include information / parameters commonly applicable to one or more sequences. The VPS (VPS syntax) may include information / parameters commonly applicable to multiple layers. The DCI (DCI syntax) may include information / parameters commonly applicable to all videos. The DCI may include information / parameters related to decoding capability. In this document, a high level syntax (HLS) may include at least one of the APS syntax, PPS syntax, SPS syntax, VPS syntax, DCI syntax, picture header syntax, and slice header syntax. Meanwhile, in this document, low level syntax (LLS) may include, for example, slice data syntax, CTU syntax, coding unit syntax, transform unit syntax, and the like.

[0207] In this document, the image / video information coded from the coding device to the decoding device and signaled in a bitstream format may include not only partitioning-related information within a picture, intra / inter prediction information, residual information, in-loop filtering information, etc., but also the slice header information, the picture header information, the APS information, the PPS information, the SPS information, the VPS information, and / or DCI information. In addition, the image / video information may further include general constraint information and / or NAL unit header information.

[0208] Picture Partitioning Using Subpictures, Slices, and Tiles

[0209] A picture can be divided into at least one tile row and at least one tile column. A tile consists of a sequence of CTUs and can cover a rectangular area of ​​a picture.

[0210] A slice may consist of an integer number of contiguous complete CTU rows or an integer number of complete tiles within a picture.

[0211] Two modes can be supported for slices. One can be called raster-scan slice mode and the other can be called rectangular slice mode. In raster-scan slice mode, a slice can contain a complete sequence of tiles present in a picture in tile raster-scan order. In rectangular slice mode, a slice can contain multiple complete tiles assembled to form a rectangular region of the picture, or multiple consecutive complete CTU rows of a tile assembled to form a rectangular region of the picture. The tiles in a rectangular slice can be scanned in tile raster-scan order within a rectangular region corresponding to the slice. A sub-picture can contain at least one slice assembled to cover a rectangular region of the picture.

[0212] In order to explain the division relationship of a picture in more detail, a description will be given with reference to Figs. 21 to 24. Figs. 21 to 24 show an example of dividing a picture using tiles, slices and sub-pictures. Fig. 21 shows an example of a picture divided into 12 tiles and 3 raster scan slices. Fig. 22 shows an example of a picture divided into 24 tiles (6 tile columns and 4 tile rows) and 9 square slices. Fig. 23 shows an example of a picture divided into 4 tiles (2 tile columns and 2 tile rows) and 4 square slices.

[0213] Figure 24 shows an example of dividing a picture into sub-pictures. In Figure 24, the picture is divided into 12 left tiles, each covering one slice of 4x4 CTU, and 6 right tiles, each covering two slices vertically grouped together of 2x2 CTU, and one picture is divided into 24 slices and 24 sub-pictures having different areas overall. In the example of Figure 24, each slice corresponds to each sub-picture.

[0214] HLS (High level syntax) signaling and semantics

[0215] As mentioned above, the HLS may be encoded and / or signaled for video and / or image encoding. As mentioned above, the video / image information herein may be included in the HLS. And the image / video encoding method may be performed based on such image / video information.

[0216] Picture and slice headers

[0217] An encoded picture may consist of at least one slice. Parameters describing the encoded picture may be signaled in a picture header (PH) or parameters describing a slice may be signaled in a slice header (SH). The PH may be transmitted as the NAL unit type for which it is associated. The SH may be provided at the start of a NAL unit that constitutes the payload of a slice (e.g., slice data).

[0218] Picture Partitioning Signaling

[0219] In one embodiment, a picture can be partitioned into multiple sub-pictures, tiles and / or slices. Signaling of sub-pictures can be provided in the sequence parameter set, signaling of tiles and square slices can be provided in the picture parameter set, and signaling of raster scan slices can be provided in the slice header.

[0220] 25 shows an example of syntax for a sequence parameter set. In the syntax of FIG. 25, the syntax elements are described as follows.

[0221] The subpic_info_present_flag syntax element may indicate whether subpicture information is present. For example, a first value of subpic_info_present_flag (e.g., 0) may indicate that subpicture information for coded layer video sequence (CLVS) is not present in the bitstream and only one subpicture is present in the individual picture of the CLVS. A second value of subpic_info_present_flag (e.g., 1) may indicate that subpicture information for coded layer video sequence (CLVS) is present in the bitstream and at least one subpicture belonging to the individual picture of the CLVS may be present.

[0222] Here, the CLVS may refer to a layer of a coded video sequence. The CLVS may be a sequence of PUs having the same nuh_layer_id as a prediction unit (PU) of an IRAP (intra random access point) picture or a GDR (gradual decoding refresh) picture that is not output until a reconstructed signal occurs.

[0223] The syntax element sps_num_subpics_minus1 may indicate the number of subpictures, for example, adding a value of 1 to this may indicate the number of subpictures belonging to an individual picture of CLVS. The value of sps_num_subpics_minus1 may range from 0 to Ceil(pic_width_max_in_luma_samples / CtbSizeY)*Ceil(pic_height_max_in_luma_samples / CtbSizeY)-1. If the value of sps_num_subpics_minus1 is not present, the value of sps_num_subpics_minus1 may be guided to 0.

[0224] A value of 1 for the syntax element sps_independent_subpics_flag may indicate that no intra prediction, no inter prediction, and no in-loop filtering operations are performed across subpicture boundaries in the CLVS.

[0225] A value of 0 for the syntax element sps_independent_subpics_flag may indicate that inter prediction or in-loop filtering operations may occur across subpicture boundaries in the CLVS. If no value for sps_independent_subpics_flag is present, the value of sps_independent_subpics_flag may be set to 0.

[0226] The syntax element subpic_ctu_top_left_x[i] may indicate the horizontal position of the top-left CTU of the i-th subpicture in units of CtbSizeY. The length of the subpic_ctu_top_left_x[i] syntax element may be Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits. If subpic_ctu_top_left_x[i] is not present, its value may be derived to 0. Here, pic_width_max_in_luma_samples may be a variable indicating the maximum width of the picture expressed in luma sample units. CtbSizeY may be a variable indicating the luma sample unit size of the CTB. CtbLog2SizeY may be a variable indicating the log2 value of the luma sample unit size of the CTB.

[0227] The syntax element subpic_ctu_top_left_y[i] may indicate the vertical position of the top-left CTU of the i-th subpicture in units of CtbSizeY. The length of the subpic_ctu_top_left_x[i] syntax element may be Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits, where pic_height_max_in_luma_samples may be a variable indicating the maximum height of the picture expressed in units of luma samples. If subpic_ctu_top_left_y[i] is not present, its value may be derived to 0.

[0228] The value of the syntax element subpic_width_minus1[i] plus 1 indicates the width of the first subpicture, and the unit may be CtbSizeY. The length of subpic_width_minus1[i] may be Ceil(Log2((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits long. If no value for subpic_width_minus1[i] is present, the value of subpic_width_minus1[i] may be calculated as ((pic_width_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_x[i]-1.

[0229] The value of the syntax element subpic_height_minus1[i] plus 1 indicates the height of the first subpicture, and the unit may be CtbSizeY. The length of subpic_height_minus1[i] may be Ceil(Log2((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)) bits long. If subpic_height_minus1[i] is not present, the value of subpic_height_minus1[i] may be calculated as ((pic_height_max_in_luma_samples+CtbSizeY-1)>>CtbLog2SizeY)-subpic_ctu_top_left_y[i]-1.

[0230] A value of 1 for the syntax element subpic_treated_as_pic_flag[i] indicates that the i-th subpicture of each coded picture in the CLVS is treated as a single picture except for in-loop filtering operations. A value of 0 for subpic_treated_as_pic_flag[i] indicates that the i-th subpicture of each coded picture in the CLVS is not treated as a single picture except for in-loop filtering operations. If subpic_treated_as_pic_flag[i] is not present, the value of subpic_treated_as_pic_flag[i] may be set to the value of sps_independent_subpics_flag.

[0231] A value of 1 for the syntax element loop_filter_across_subpic_enabled_flag[i] may indicate that in-loop filtering may be performed across the boundary of the i-th subpicture in each coded picture in the CLVS. A value of 0 for loop_filter_across_subpic_enabled_flag[i] may indicate that in-loop filtering is not performed across the boundary of the i-th subpicture in each coded picture in the CLVS. If no value for loop_filter_across_subpic_enabled_flag[i] is present, the value of loop_filter_across_subpic_enabled_flag[i] may be determined as 1-sps_independent_subpics_flag.

[0232] 26 shows an example of the syntax of a picture parameter set. In the syntax of FIG. 26, the syntax elements are as follows:

[0233] A first value (e.g., 0) of the syntax element no_pic_partition_flag may indicate that each picture that references a PPS may be partitioned into two or more tiles or slices. A second value (e.g., 1) of no_pic_partition_flag may indicate that picture partitioning is not applied to each picture that references a PPS.

[0234] A value of the syntax element pps_log2_ctu_size_minus5 plus 5 may indicate the luma coding block size of each CTU. The value of pps_log2_ctu_size_minus5 may be restricted to be equal to sps_log2_ctu_size_minus5, which indicates the same value in the sequence parameter set.

[0235] The value of the syntax element num_exp_tile_columns_minus1 plus 1 indicates the number of tile column widths explicitly provided. The value of num_exp_tile_columns_minus1 can range from 0 to PicWidthInCtbsY-1. If the value of no_pic_partition_flag is 1, the value of num_exp_tile_columns_minus1 can be driven to 0.

[0236] The value of the syntax element num_exp_tile_rows_minus1 plus 1 can indicate the number of tile row heights explicitly provided. The value of num_exp_tile_rows_minus1 can range from 0 to PicHeightInCtbsY-1. If the value of no_pic_partition_flag is 1, the value of num_exp_tile_rows_minus1 can be driven to 0.

[0237] The syntax element tile_column_width_minus1[i] plus 1 may indicate the width of the i-th tile column in CTB units, where i may have values ​​from 0 to num_exp_tile_columns_minus1-1. tile_column_width_minus1[num_exp_tile_columns_minus1] may be used to derive the width of tiles whose tile column index is greater than or equal to num_exp_tile_columns_minus1. The value of tile_column_width_minus1[i] may have values ​​from 0 to PicWidthInCtbsY-1. If tile_column_width_minus1[i] is not provided from the bitstream, the value of tile_column_width_minus1[0] may be set to the value of PicWidthInCtbsY-1.

[0238] The syntax element tile_row_height_minus1[i] plus 1 may indicate the height of the i-th tile row in CTB units, where i may have values ​​from 0 to num_exp_tile_rows_minus1-1. tile_row_height_minus1[num_exp_tile_rows_minus1] may be used to derive the height of tiles whose tile row index is greater than or equal to num_exp_tile_rows_minus1. The value of tile_row_height_minus1[i] may have values ​​from 0 to PicHeightInCtbsY-1. If tile_row_height_minus1[i] is not provided from the bitstream, the value of tile_row_height_minus1[0] may be set to the value of PicHeightInCtbsY-1.

[0239] A value of 0 for the syntax element rect_slice_flag may indicate that tiles in each slice are scanned in raster scan order and slice information is not signaled via a picture parameter set. A value of 1 for rect_slice_flag may indicate that tiles in each slice cover a rectangular area of ​​the picture and slice information is signaled via a picture parameter set. Here, the variable NumTilesInPic may indicate the number of tiles present in the picture. If rect_slice_flag is not present in the bitstream, the value of rect_slice_flag may be induced to be 1. On the other hand, if the value of subpic_info_present_flag is 1, the value of rect_slice_flag may be forced to be 1.

[0240] A value of 1 for the syntax element single_slice_per_subpic_flag may indicate that each subpicture consists of only one square slice. A value of 0 for single_slice_per_subpic_flag may indicate that each subpicture may consist of at least one square slice. If single_slice_per_subpic_flag is not present in the bitstream, the value of single_slice_per_subpic_flag may be derived to 0.

[0241] A value of the syntax element num_slices_in_pic_minus1 plus 1 may indicate the number of slices in the picture. A value of 0 of the syntax element tile_idx_delta_present_flag may indicate that the tile_idx_delta[i] syntax element is not present in the picture parameter set and all pictures referencing the picture parameter set are partitioned into square slice rows and square slice columns according to slice raster scan order. A value of 1 of the tile_idx_delta_present_flag may indicate that the tile_idx_delta[i] syntax element may be present in the picture parameter set and all square slices belonging to pictures referencing the picture parameter set may be identified in the order indicated by the values ​​of tile_idx_delta[i] with increasing i values. If the tile_idx_delta_present_flag is not present, the value of the tile_idx_delta_present_flag may be induced to 0.

[0242] The value of the syntax element slice_width_in_tiles_minus1[i] plus 1 may indicate the width of the i-th rectangular slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] may have a value from 0 to NumTileColumns-1. Here, if i is less than num_slices_in_pic_minus1 and the value of NumTileColumns is 1, the value of slice_width_in_tiles_minus1[i] may be induced to 0. Here, the variable NumTileColumns may be a variable indicating the number of tile columns currently present in the picture. Here, the variable NumTileRows may be a variable indicating the number of tile rows currently present in the picture.

[0243] The value of the syntax element slice_height_in_tiles_minus1[i] plus 1 may indicate the height of the i-th rectangular slice in units of tile rows when the value of num_exp_slices_in_tile[i] is 0. The value of slice_height_in_tiles_minus1[i] may range from 0 to NumTileRows-1. If the value of i is less than num_slices_in_pic_minus1 and the value of slice_height_in_tiles_minus1[i] is not obtained from the bitstream, the value of slice_height_in_tiles_minus1[i] may be derived as follows:

[0244] [Formula 1]

[0245] slice_height_in_tiles_minus1[i]=NumTileRows==1?0:slice_height_in_tiles_minus1[i-1]

[0246] SliceTopLeftTileIdx may be a variable that indicates the index of the top-left most tile of the slice.

[0247] The syntax element num_exp_slices_in_tile[i] may indicate the number of slice heights explicitly provided for slices in a tile containing the i-th slice (e.g., a tile with the same tile index as SliceTopLeftTileIdx[i]). The value of num_exp_slices_in_tile[i] may range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]-1. If num_exp_slices_in_tile[i] is not provided from the bitstream, the value of num_exp_slices_in_tile[i] may be guided to 0. Here, RowHight[i] may be a variable indicating the height of the i-th tile in CTB units. Here, if the value of num_exp_slices_in_tile[i] is 0, the tile containing the i-th slice may not be divided into multiple tiles.

[0248] The syntax element exp_slice_height_in_ctus_minus1[i][j] plus 1 indicates the height, in CTU row units, of the jth square slice in the tile that contains the ith slice. The value of exp_slice_height_in_ctus_minus1[i][j] can range from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]-1.

[0249] The variable NumSlicesInTile[i] may indicate the number of slices that exist in the tile that contains the i-th slice.

[0250] The syntax element tile_idx_delta[i] may indicate the difference between the tile index of the tile containing the first CTU in the (i+1)th square slice and the tile index of the tile containing the first CTU in the i-th square slice. The value of tile_idx_delta[i] may have a value from -NumTilesInPic+1 to NumTilesInPic-1. If the value of tile_idx_delta[i] is not present in the bitstream, the value of tile_idx_delta[i] may be induced to be 0. If the value of tile_idx_delta[i] is present, the value of tile_idx_delta[i] may be forced to have a non-zero value.

[0251] A value of 1 for the syntax element loop_filter_across_tiles_enabled_flag may indicate that in-loop filtering operations can operate across tile boundaries in a picture that references the picture parameter set. A value of 0 for loop_filter_across_tiles_enabled_flag may indicate that in-loop filtering operations do not operate across tile boundaries in a picture that references the picture parameter set.

[0252] The in-loop filtering operation may include any one of a deblocking filter, a sample adaptive offset (SAO) filter, and an adaptive loop filter (ALF). If loop_filter_across_tiles_enabled_flag is not present in the bitstream, the value of loop_filter_across_tiles_enabled_flag may be induced to be 1.

[0253] A value of 1 for the syntax element loop_filter_across_slices_enabled_flag may indicate that the in-loop filtering operation may operate across slice boundaries in a picture that references a picture parameter set. A value of 0 for the loop_filter_across_slice_enabled_flag may indicate that the in-loop filtering operation does not operate across slice boundaries in a picture that references a picture parameter set. The in-loop filtering operation may include any one of the filtering operations of a deblocking filter, a sample adaptive offset (SAO) filter, and an adaptive loop filter (ALF). If loop_filter_across_slice_enabled_flag is not present in the bitstream, the value of loop_filter_across_slice_enabled_flag may be induced to be 1.

[0254] 27 shows an example of the syntax of a slice header. In the syntax of FIG. 27, the syntax elements are as follows:

[0255] The syntax element slice_subpic_id may indicate a subpicture ID of a subpicture that contains the slice. If a value of slice_subpic_id is present in the bitstream, the value of the variable CurrSubpicIdx may be guided to a value of CurrSubpicIdx where the value of SubpicIdVal[CurrSubpicIdx] has the value of slice_subpic_id. Otherwise (slice_subpic_id is not present in the bitstream), the value of CurrSubpicIdx may be guided to 0. The length of slice_subpic_id may be sps_subpic_id_len_minus1+1 bits long. Here, NumSlicesInSubpic[i] may be a variable indicating the number of slices in the i-th subpicture. The variable CurrSubpicIdx may indicate the index of the current subpicture.

[0256] The syntax element slice_address indicates the slice address of the slice. If slice_address is not provided, the value of slice_address can be set to 0.

[0257] On the other hand, if the value of rect_slice_flag is 0, the slice address is the same as the raster scan tile index of the first tile in the slice, the length of the slice_address syntax element is Ceil(Log2(NumTilesInPic)) bits long, and slice_address can have values ​​from 0 to NumTilesInPic-1. Otherwise (if the value of rect_slice_flag is a non-zero value, e.g., 1), the address of the slice is the subpicture level slice index of the slice, the length of the slice_address syntax element is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits long, and slice_address can have values ​​from 0 to NumSlicesInSubpic[CurrSubpicIdx]-1.

[0258] The syntax element sh_extra_bit[i] can have a value of 0 or 1. A decoder can perform decoding regardless of the value of sh_extra_bit[i]. For this, the encoder must generate a bitstream such that decoding can be performed regardless of the value of sh_extra_bit[i]. Here, NumExtraShBits may be a variable indicating the number of bits additionally required for signaling information in the slice header.

[0259] The syntax element num_tiles_in_slice_minus1 plus 1, if present, can indicate the number of tiles in a slice. The value of num_tiles_in_slice_minus1 can have values ​​from 0 to NumTilesInPic-1.

[0260] The variable NumCtusInCurrSlice representing the number of CTUs in the current slice and the list CtbAddrInCurrSlice[i] (where i has a value from 0 to NumCtusInCurrSlice-1) indicating the picture raster scan address of the i-th CTB in the slice can be derived as follows:

[0261] [Table 2]

[0262] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos can be derived according to the following algorithm.

[0263] [Table 3]

[0264] Improved picture partitioning signaling

[0265] The signaling regarding the above picture partitioning has a problem that unnecessary information is signaled when a slice is a square slice. For example, when a slice is a square (e.g., rectangular) slice, the width of an individual slice can be signaled in units of tiles. However, when the tile at the top left position of a slice is a tile of the last tile row, the width of the slice cannot be other value than one tile unit. For example, in such a case, the width of the slice can only have a width value derived in one tile unit. Therefore, the width of such a slice may not be signaled or may be limited to one tile unit.

[0266] Similarly, if a slice is a square (e.g., rectangular) slice, the width of the individual slices may be signaled in tile units. However, if the tile at the top-left position of a slice is a tile in the last tile row, the height of the slice cannot be any other value than one tile unit. Thus, the height of such a slice may not be signaled or may be limited to one tile unit.

[0267] In order to improve the above-mentioned problems, the following solutions can be applied. The following embodiments can be applied when slices are square (e.g., rectangular) slices and the width and / or height of individual slices are signaled in tile units. The following solutions can be applied independently of each other or can be used in combination with at least one other embodiment.

[0268] Method 1: If the first tile of a square slice (e.g., the tile in the upper left corner) is located in the last tile row of the picture, slice width signaling may not be provided. In this case, the slice width may be induced in 1-tile units.

[0269] For example, the syntax element slice_width_in_tiles_minus1[i] may not be present in the bitstream, and the value of the syntax element slice_width_in_tiles_minus1[i] may be guided to 0.

[0270] Method 2: Signaling of the width of a slice can be provided even when the first tile of a square slice (e.g., the tile in the upper left corner) is located in the last tile row of a picture, but in this case, the width of the slice can be limited to one tile unit.

[0271] For example, the syntax element slice_width_in_tiles_minus1[i] may be present in the bitstream and may be parsed accordingly, but the value of the syntax element slice_width_in_tiles_minus1[i] may be limited to 0.

[0272] Method 3: If the first tile of a square slice (e.g., the tile in the upper left corner) is located in the last tile row of the picture, slice height signaling may not be provided, and in this case, the slice height may be induced in 1-tile units.

[0273] For example, the syntax element slice_height_in_tiles_minus1[i] may not be present in the bitstream, and the value of the syntax element slice_height_in_tiles_minus1[i] may be guided to 0.

[0274] Method 4. If the first tile of a square slice (e.g., the tile in the upper left corner) is located in the last tile row of the picture, slice height signaling can be provided. In this case, the slice height can be limited to one tile unit.

[0275] For example, the syntax element slice_height_in_tiles_minus1[i] may be present in the bitstream and may be parsed accordingly, but the value of the syntax element slice_height_in_tiles_minus1[i] may be constrained to be equal to 0.

[0276] In one embodiment, the above-described embodiment may be applied to an encoding and decoding method as shown in Figures 28 and 29. An encoding device according to one embodiment may derive slices and / or tiles in a current picture (S2810). Then, the encoding device may encode the current picture based on the induced slices and / or tiles (S2820).

[0277] Similarly, a decoding device according to an embodiment may obtain video / image information from a bitstream (S2910). Then, the decoding device may derive slices and / or tiles present in a current picture based on the video / image information (including information about slices and / or tiles) (S2920). Then, the decoding device may reconstruct and / or decode the current picture based on the slices and / or tiles (S2930).

[0278] For the above-mentioned processing of the encoding device and the decoding device, the information about slices and / or tiles may include the above-mentioned information and syntax. The video or image information may include HLS. The HLS may include information about slices and / or information about tiles. The HLS may further include information about sub-pictures. The information about slices may include information identifying at least one slice belonging to the current picture. And the information about tiles may include information identifying at least one tile belonging to the current picture. The information about sub-pictures may include information identifying at least one sub-picture belonging to the current picture. In one picture, there may be tiles including at least one slice.

[0279] For example, in S2930 of Figure 29, reconstruction and / or decoding of the current picture may be performed based on the derived slices and / or tiles. By partitioning a picture, encoding and decoding utilities can be obtained from various perspectives.

[0280] For example, a picture may be partitioned for parallel processing and error resilience. In the case of parallel processing, some implementations performed on a multi-core CPU may require the source picture to be divided into tiles and / or slices. Individual slices and / or tiles may be processed in parallel on different cores. This is very efficient for high resolution real-time video coding that cannot be processed otherwise. Furthermore, such partitioning has the advantage of reducing memory constraints by reducing information shared between tiles. Parallel architectures benefit from their partitioning mechanism since tiles can be distributed to different threads during parallel processing. For example, in the process of deriving candidate motion information in inter prediction, adjacent blocks that exist in different slices and / or tiles may be restricted from being used. Contact information used to code information and / or syntax elements may be initialized for each individual slice and / or tile.

[0281] Error resilience can be caused by applying unequal error protection (UEP) to the coded tiles and / or slices.

[0282] Example 1

[0283] In the following, an embodiment based on the above-mentioned Scheme 1 and Scheme 3 will be described. The following embodiment can be applied to improve the encoding / decoding technique such as the VVC specification.

[0284] In one embodiment, a syntax table for signaling a picture parameter set may be configured as shown in Figure 30. In another embodiment, a syntax table for signaling a picture parameter set may be configured as shown in Figure 31.

[0285] In the example of Figure 30, for i having a value from 0 to num_slices_in_pic_minus1-1, if the value of NumTileColumns is greater than 1 and the value of SliceTopLeftTileIdx[i]%NumTileColumns is not NumTileColumns-1, then the syntax element slice_width_in_tiles_minus1[i] can be sequentially obtained for i.

[0286] Then, for i, which has a value from 0 to num_slices_in_pic_minus1-1, if the value of NumTileRows is greater than 1 and the value of tile_idx_delta_present_flag is 1, or the value of SliceTopLeftTileIdx[i]%NumTileColumns is 0 and the value of SliceTopLeftTileIdx[i] / NumTileColumns is not NumTileRows-1, the syntax element slice_height_in_tile_minus1[i] can be sequentially obtained for i.

[0287] In the embodiments of Figures 30 and 31, the syntax element slice_width_in_tiles_minus1[i] may be a syntax element indicating the width of the i-th square slice. For example, a value of slice_width_in_tiles_minus1[i] plus 1 may indicate the width of the i-th square slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] may have a value from 0 to NumTileColumns-1. If slice_width_in_tiles_minus1[i] is not obtained from the bitstream, the value of slice_width_in_tiles_minus1[i] may be guided to 0.

[0288] When the definition of slice_width_in_tiles_minus1[i] is changed in this manner, the existing restriction that "if i is smaller than num_slices_in_pic_minus1 and the value of NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] is induced to be 0" can be omitted. This allows the condition "NumTileColumns>1" to be deleted from the picture parameter set syntax, as in the embodiment of Fig. 31.

[0289] slice_height_in_tiles_minus1[i] may be a syntax element that indicates the height of the i-th square slice. For example, if the value of num_exp_slices_in_tile[i] is 0, then the value of slice_height_in_tiles_minus1[i] plus 1 may indicate the height of the i-th square slice in units of tile rows. The value of slice_height_in_tiles_minus1[i] may range from 0 to NumTileRows-1.

[0290] If slice_height_in_tiles_minus1[i] is not obtained from the bitstream, the value of slice_height_in_tiles_minus1[i] can be derived as follows:

[0291] First, if the value of NumTileRow is 1 or the value of SliceTopLeftTileIdx[i] % NumTileColumns is NumTileColumns-1, the value of slice_height_in_tiles_minus1[i] can be derived to 0.

[0292] Otherwise (e.g., if the value of NumTileRow is not 1 and the value of SliceTopLeftTileIdx[i] % NumTileColumns is not NumTileColumns-1), the value of slice_height_in_tiles_minus1[i] may be derived to slice_height_in_tiles_minus1[i-1]. For example, the value of slice_height_in_tiles_minus1[i] may be set to the height value of the previous slice, slice_height_in_tiles_minus1[i-1]. For example, the values ​​of slice_height_in_tiles_minus1[i] of all slices in a tile may be set to be the same.

[0293] When the definition of slice_height_in_tiles_minus1[i] is changed in this manner, the existing restriction that "if i is smaller than num_slices_in_pic_minus1 and the value of NumTileRows is equal to 1, the value of slice_width_in_tiles_minus1[i] is induced to be 0" can be omitted. This allows the "NumTileRows>1" condition to be deleted from the picture parameter set syntax, as in the embodiment of Fig. 31.

[0294] Example 2

[0295] In the following, an embodiment based on the above-mentioned Scheme 2 and Scheme 4 will be described. The following embodiment can be applied to improve encoding / decoding techniques such as the VVC specification.

[0296] In one embodiment, slice_width_in_tiles_minus1[i] may be a syntax element indicating the width of the i-th square slice. For example, a value of slice_width_in_tiles_minus1[i] plus 1 may indicate the width of the i-th square slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] may range from 0 to NumTileColumns-1. If slice_width_in_tiles_minus1[i] is not obtained from the bitstream, the value of slice_width_in_tiles_minus1[i] may be guided to 0.

[0297] In this case, if i is less than num_slices_in_pic_minus1 and the value of NumTileColumns is equal to 1, the value of slice_width_in_tiles_minus1[i] may be induced to be 0. Also, for bitstream conformance, if the first tile of the i-th rectangular slice is the last tile in a tile column, the value of slice_width_in_tiles_minus1[i] may be forced to be 0.

[0298] slice_height_in_tiles_minus1[i] may be a syntax element that indicates the height of the i-th square slice. For example, if the value of num_exp_slices_in_tile[i] is 0, then the value of slice_height_in_tiles_minus1[i] plus 1 may indicate the height of the i-th square slice in units of tile rows. The value of slice_height_in_tiles_minus1[i] may range from 0 to NumTileRows-1.

[0299] In this case, if i is less than num_slices_in_pic_minus1 and the value of slice_height_in_tiles_minus1[i] is not obtained from the bitstream, the value of slice_height_in_tiles_minus1[i] may be determined by the value of NumTileRows. For example, it may be determined as shown in the following formula.

[0300] [Formula 2]

[0301] slice_height_in_tiles_minus1[i]=NumTileRows==1?0:slice_height_in_tiles_minus1[i-1]

[0302] Also, for bitstream conformance, the value of slice_height_in_tiles_minus1[i] may be forced to 0 if the first tile of the i-th square slice is the last tile in a tile row.

[0303] Encoding and Decoding Methods

[0304] An image encoding method and an image decoding method performed by an image encoding device and an image decoding device according to an embodiment will be described below.

[0305] First, the operation of the decoding device will be described. The image decoding device according to one embodiment includes a memory and a processor, and the decoding device can perform decoding by the operation of the processor. Figure 32 shows a decoding method of the decoding device according to one embodiment.

[0306] According to an embodiment, the decoding apparatus may obtain a syntax element no_pic_partition_flag indicating the partition availability of the current picture from a bitstream, and may determine the partition availability of the current picture based on the value of no_pic_partition_flag as described above (S3210).

[0307] If splitting of the current picture is available, the decoding device can obtain from the bitstream the syntax element num_exp_tile_rows_minus1 indicating the number of tile rows into which the current picture is split, and the syntax element num_exp_tile_columns_minus1 indicating the number of tile columns, and from this determine the number of tile rows and columns as described above (S3220).

[0308] Based on the number of tile columns, the decoding device can obtain from the bitstream the syntax element tile_column_width_minus1 indicating the width for each of the tile columns into which the current picture is divided, and from this determine the width of each tile column as described above (S3230).

[0309] Based on the number of tile rows, the decoding device may obtain, from a bitstream, a syntax element tile_row_height_minus1[i] indicating the height of each of the tile rows into which the current picture is divided, and may determine the height of each tile row from the obtained syntax element (S3240).The decoding device may then calculate the number of tiles into which the current picture is divided by multiplying the number of tile columns by the number of tile rows.

[0310] Next, the decoding device obtains the syntax element rect_slice_flag, which indicates whether the current picture is divided into square slices, based on whether the number of tiles into which the current picture is divided is greater than one, and can determine from the value thereof whether the current picture is divided into square slices as described above (S3250).

[0311] Next, the decoding apparatus obtains, from the bit stream, a syntax element num_slices_in_pic_minus1 indicating the number of slices into which the current picture is divided, based on whether the current picture is divided into square slices, and from this, the number of slices into which the current picture is divided can be determined as described above (S3260).

[0312] Next, the decoding apparatus can obtain, from the bit stream, size information indicating the size of each of the slices into which the current picture is divided, for the number of slices into which the current picture is divided (S3270).

[0313] Here, the size information can include a syntax element slice_width_in_tiles_minus1[i] that is width information indicating the width of the slice, and a syntax element slice_height_in_tiles_minus1[i] that is height information indicating the height of the slice. slice_width_in_tiles_minus1[i] indicates the width of the slice in units of tile columns, and the slice_height_in_tiles_minus1[i] can indicate the height of the slice in units of tile rows.

[0314] Here, when the decoding apparatus obtains the size information of the current slice (for example, the i-th slice) from the bit stream, the decoding apparatus can obtain slice_width_in_tiles_minus1 from the bit stream based on whether the tile in the upper left corner of the current slice belongs to the last tile column of the current picture.

[0315] For example, if the top left tile index of the current slice (e.g., SliceTopLeftTileIdx) is not the tile index corresponding to the last column of the tile row belonging to the current picture, slice_width_in_tiles_minus1[i] may be obtained from the bitstream. However, if the top left tile index of the current slice is the tile index corresponding to the last column of the tile row belonging to the current picture, slice_width_in_tiles_minus1[i] may not be obtained from the bitstream and may be determined to be 0.

[0316] Similarly, a decoding device can obtain slice_height_in_tiles_minus1[i] from the bitstream based on whether the top-left tile of the current slice belongs to the last row of tiles in the current picture.

[0317] For example, if the upper left tile index of the current slice is not the tile index corresponding to the last row of the tile rows belonging to the current picture, slice_height_in_tiles_minus1[i] may be obtained from the bitstream, but if the upper left tile index of the current slice is the tile index corresponding to the last row of the tile rows belonging to the current picture, slice_height_in_tiles_minus1[i] may be determined to be 0 without being obtained from the bitstream.

[0318] Next, the decoding device may determine the size of each slice into which the current picture is divided based on the size information, and may decode the image by decoding the determined slices. For example, the decoding device may decode the slice by decoding the CTU included in the slice of the determined size using the above-mentioned inter or intra prediction or the like (S3280).

[0319] Meanwhile, SliceTopLeftTileIdx is a variable indicating the index of the top leftmost tile of a slice, and can be determined by the algorithms of Figures 33 and 34. The algorithms of Figures 33 and 34 show one continuous algorithm.

[0320] Next, the operation of the encoding device will be described. The image encoding device according to an embodiment includes a memory and a processor, and the encoding device can perform encoding in a manner corresponding to the decoding of the decoding device by the operation of the processor. For example, as shown in FIG. 35, the encoding device can encode a current picture. First, the encoding device can determine a tile column and a tile row for the current picture (S3510). Next, the encoding device can determine slices into which the image is divided (S3520). Next, the encoding device can generate a bitstream including predetermined information including size information of the slices (S3530). For example, the encoding device may generate a bitstream including syntax elements no_pic_partition_flag, num_exp_tile_rows_minus1, num_exp_tile_columns_minus1, tile_column_width_minus1, tile_row_height_minus1[i], rect_slice_flag, num_slices_in_pic_minus1, slice_width_in_tiles_minus1[i], and slice_height_in_tiles_minus1[i], which the decoding device previously obtains from the bitstream.

[0321] In this case, the size information may be included in the bitstream based on whether the current slice belongs to the last tile column or the last tile row of the current picture. For example, the encoding apparatus may encode slice_width_in_tiles_minus1[i] and slice_height_in_tiles_minus1[i] into the bitstream based on whether the upper left tile of the current slice is the last tile column and / or the last tile row, as described above in the decoding apparatus. Here, the current slice may be a rectangular slice.

[0322] Application examples

[0323] Although the exemplary method of the present disclosure is expressed as a series of operations for clarity of explanation, this is not intended to limit the order in which the steps are performed, and each step may be performed simultaneously or in a different order, if necessary. To realize the method according to the present disclosure, the steps illustrated may include other steps, some steps may be omitted and the remaining steps may be omitted, or some steps may be omitted and additional steps may be included.

[0324] In the present disclosure, an image encoding device or an image decoding device that performs a predetermined operation (step) can perform the operation (step) to check the execution conditions or circumstances of the operation (step). For example, if it is described that a predetermined operation is performed when a predetermined condition is satisfied, the image encoding device or the image decoding device can perform the predetermined operation after performing an operation to check whether the predetermined condition is satisfied or not.

[0325] The various embodiments of the present disclosure are not intended to enumerate all possible combinations, but are intended to describe representative aspects of the present disclosure, and the matters described in the various embodiments may be applied independently or in combination of two or more.

[0326] Additionally, various embodiments of the present disclosure may be implemented using hardware, firmware, software, or a combination thereof, etc. In the case of a hardware implementation, the implementation may be implemented using one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), Programmable Logic Devices (PLDs), Field Programmable Gate Arrays (FPGAs), general processors, controllers, microcontrollers, microprocessors, etc.

[0327] In addition, the image decoding device and the image encoding device to which the embodiments of the present disclosure are applied may be included in a multimedia broadcast transmitting / receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video conversation device, a real-time communication device such as a video communication, a mobile streaming device, a storage medium, a camcorder, a custom video (VoD) service providing device, an over-the-top video (OTT) device, an internet streaming service providing device, a three-dimensional (3D) video device, an image telephone video device, and a medical video device, and may be used to process a video signal or a data signal. For example, the over-the-top video (OTT) device may include a game console, a Blu-ray player, an internet-connected TV, a home theater system, a smartphone, a tablet PC, a digital video recorder (DVR), and the like.

[0328] FIG. 36 is a diagram illustrating a content streaming system to which an embodiment of the present disclosure can be applied.

[0329] As shown in FIG. 36, a content streaming system to which an embodiment of the present disclosure is applied may broadly include an encoding server, a streaming server, a Web server, a media storage, a user device, and a multimedia input device.

[0330] The encoding server compresses content input from a multimedia input device such as a smartphone, camera, camcorder, etc. into digital data to generate a bitstream and transmits the bitstream to the streaming server. As another example, if a multimedia input device such as a smartphone, camera, video camera, etc. directly generates a bitstream, the encoding server can be omitted.

[0331] The bitstream may be generated by an image encoding method and / or image encoding device to which an embodiment of the present disclosure is applied, and the streaming server may temporarily store the bitstream in the process of transmitting or receiving the bitstream.

[0332] The streaming server transmits multimedia data to a user device based on a user request via a web server, and the web server can act as a medium to inform the user of available services. When a user requests a desired service from the web server, the web server transmits the request to the streaming server, and the streaming server can transmit the multimedia data to the user. At this time, the content streaming system can include a separate control server, and in this case, the control server can control commands / responses between devices in the content streaming system.

[0333] The streaming server may receive the content from a media storage and / or an encoding server. For example, when receiving the content from the encoding server, the content may be received in real time. In this case, the streaming server may store the bitstream for a certain period of time in order to provide a smooth streaming service.

[0334] Examples of the user devices include mobile phones, smart phones, laptop computers, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigation systems, slate PCs, tablet PCs, ultrabooks, wearable devices such as smartwatches, smart glass, head mounted displays (HMDs), digital TVs, desktop computers, and digital signage.

[0335] Each server in the content streaming system can be operated as a distributed server, in which case data received from each server can be processed in a distributed manner.

[0336] The scope of the present disclosure includes software or machine-executable commands (e.g., operating systems, applications, firmware, programs, etc.) that cause operations according to the methods of the various embodiments to be performed on a device or computer, and non-transitory computer-readable medium on which such software or commands can be stored and executed on a device or computer. [Industrial Applicability]

[0337] The embodiments of the present disclosure can be used to encode / decode images.

Claims

1. An image decoding method performed by an image decoding device, comprising: obtaining size information from the bitstream indicating a size of a current slice corresponding to at least a portion of a current picture; determining a size of the current slice based on the size information; The size information includes width information indicating a width of the current slice in units of tile columns, and height information indicating a height of the current slice in units of tile rows, The step of obtaining size information is performed based on whether the current slice belongs to the last tile column or the last tile row of the current picture; based on whether the top left tile of the current slice belongs to the last tile row of the current picture, the height information of the current slice is not obtained from the bitstream; An image decoding method, in which width information of the current slice is not obtained from the bitstream based on whether the upper left tile of the current slice belongs to the last tile column of the current picture.

2. The image decoding method of claim 1 , wherein height information of the current slice is obtained from the bitstream based on the fact that the top left tile of the current slice does not belong to the last tile row of the current picture.

3. The image decoding method of claim 1 , wherein height information of the current slice is not obtained from the bitstream but is determined to a predetermined value based on the fact that the upper left tile of the current slice belongs to the last tile row of the current picture.

4. The image decoding method according to claim 3 , wherein the predetermined value is a value indicating one tile row.

5. The image decoding method of claim 1 , wherein the current slice is a rectangular slice.

6. The step of obtaining size information is performed based on the number of slices into which the current picture is divided; The number of slices into which the current picture is divided is determining a partition availability of the current picture; determining a number of rows of tiles and a number of columns of tiles into which to divide the current picture based on the available division of the current picture; determining a width for each of the tile columns into which the current picture is divided based on the number of tile columns; determining a height for each of the tile rows into which the current picture is divided based on the number of tile rows; determining whether the current picture is divided into square slices based on the number of tiles into which the current picture is divided; The image decoding method according to claim 1 , wherein the number of slices into which the current picture is divided is determined by performing a step of obtaining from a bitstream the number of slices into which the current picture is divided, based on whether the current picture is divided into square slices.

7. An image coding method performed by an image coding device, comprising: determining a current slice corresponding to at least a portion of a current picture; generating a bitstream including size information of the current slice; The size information includes width information indicating a width of the current slice in units of tile columns, and height information indicating a height of the current slice in units of tile rows, generating the bitstream is performed based on whether the current slice belongs to the last tile column or the last tile row of the current picture; based on the fact that the top left tile of the current slice belongs to the last tile row of the current picture, height information of the current slice is not coded in the bitstream; An image coding method, wherein width information of the current slice is not coded in the bitstream based on the fact that the upper left tile of the current slice belongs to the last tile column of the current picture.

8. The image coding method of claim 7 , wherein the current slice is a rectangular slice.

9. 1. A method for transmitting a bitstream, comprising the steps of: generating a bitstream based on an image coding method; transmitting the bitstream; The image encoding method includes: determining a current slice corresponding to at least a portion of a current picture; generating a bitstream including size information of the current slice; The size information includes width information indicating a width of the current slice in units of tile columns, and height information indicating a height of the current slice in units of tile rows, generating the bitstream is performed based on whether the current slice belongs to the last tile column or the last tile row of the current picture; based on the fact that the top left tile of the current slice belongs to the last tile row of the current picture, height information of the current slice is not coded in the bitstream; A bitstream transmission method, in which width information of the current slice is not coded in the bitstream based on the fact that the upper left tile of the current slice belongs to the last tile column of the current picture.

Citation Information

Patent Citations

  • Image signal encoding / decoding method and device therefor

    JP2023509347A

  • JPP7490797B