Method and apparatus for encoding / decoding image which selectively encode size information of rectangular slice and method for transmitting bitstream
The image encoding/decoding method selectively encodes slice size information to improve efficiency in transmitting and storing high-resolution images, addressing the cost and efficiency challenges of high-quality image data.
Patent Information
- Application Number
- JP2025080536
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-03-09
- Filing Date
- 2025-05-13
- Publication Date
- 2025-07-17
AI Technical Summary
The increasing demand for high-resolution, high-quality images leads to higher transmission and storage costs due to the increased amount of information, necessitating a more efficient image compression technique.
An image encoding/decoding method and apparatus that selectively encodes slice size information, including width and height in units of tile columns and rows, to improve encoding/decoding efficiency.
Enhances encoding/decoding efficiency by optimizing the transmission and storage of high-resolution images through selective slice size encoding.
Smart Images

Figure 2025107437000001_ABST
Abstract
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 for selectively encoding slice size information, and a method for transmitting a bitstream generated by the image encoding method / apparatus of the present disclosure.
Background Art
[0002] Recently, the demand for high-resolution, high-quality images, such as HD (High Definition) images and UHD (Ultra High Definition) images, has been increasing in various fields. As image data becomes higher in resolution and quality, the amount of information or bits to be transmitted increases relatively compared to conventional image data. The increase in the amount of information or bits to be transmitted results in an increase in transmission costs and storage costs.
[0003] Accordingly, there is a need for a highly efficient image compression technique for effectively transmitting, storing, and reproducing information of high-resolution, high-quality images.
Summary of the Invention
Problems 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 encoding / decoding efficiency 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] Furthermore, an object of the present disclosure is to provide a recording medium storing a bitstream generated by an image encoding method or apparatus according to the present disclosure.
[0008] Furthermore, an object of the present disclosure is to provide a recording medium storing a bitstream received by an image decoding apparatus according to the present disclosure, decoded, and used for restoring an image. For example, the recording medium can store a bitstream that causes a decoding apparatus 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-described technical problems, and other technical problems not described above will be clearly understood by those having ordinary knowledge in the technical field to which the present disclosure pertains from the following description.
Means for Solving the Problems
[0010] An image decoding method performed by an image decoding apparatus according to an aspect of the present disclosure can include: 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 the size of the current slice based on the size information. Here, 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 can 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 apparatus according to an aspect of the present disclosure is an image decoding apparatus including a memory and at least one processor, wherein the at least one processor acquires size information indicating the size of a current slice corresponding to at least a part of a current picture from a bitstream, and can determine the size of the current slice based on the size information. Here, the size information includes width information indicating the width of the current slice in units of tile columns and height information indicating the height of the current slice in units of tile rows, and the size information can be acquired 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 encoding method performed by an image encoding apparatus according to an aspect of the present disclosure can include a step of determining a current slice corresponding to at least a part of a current picture, and a step of generating a bitstream including size information of the current slice. Here, the size information includes width information indicating the width of the current slice in units of tile columns and height information indicating the height of the current slice in units of tile rows, and the step of generating a bitstream including the size information of the current slice can 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 apparatus or the 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 the image encoding apparatus of the present disclosure.
[0015] The features briefly summarized and described above about the present disclosure are merely exemplary aspects of the detailed description of the present disclosure to be described later, and do not limit the scope of the present disclosure.
Advantages of the Invention
[0016] According to the present disclosure, it is possible to provide an image encoding / decoding method and apparatus with improved encoding / decoding efficiency.
[0017] Also, according to the present disclosure, it is possible to provide an image encoding / decoding method and apparatus capable of improving encoding / decoding efficiency by selectively encoding slice size information.
[0018] Also, according to the present disclosure, it is possible to provide a method for transmitting a bitstream generated by the image encoding method or apparatus according to the present disclosure.
[0019] Also, according to the present disclosure, it is possible to provide a recording medium storing a bitstream generated by the image encoding method or apparatus according to the present disclosure.
[0020] Also, according to the present disclosure, it is possible to provide a recording medium storing a bitstream received by the image decoding apparatus according to the present disclosure, decoded, and used for image restoration.
[0021] The effects obtained in the present disclosure are not limited to the above-described effects, and other effects not described above will be clearly understood by those of ordinary skill in the technical field to which the present disclosure pertains from the following description.
Brief Description of Drawings
[0022]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
Figure 27
Figure 28
Figure 29
Figure 30
Figure 31
Figure 32
Figure 33
Figure 34
Figure 35
Figure 36
Modes for Carrying Out the Invention
[0023] Hereinafter, with reference to the accompanying drawings, embodiments of the present disclosure will be described in detail so that those skilled in the art to which the present disclosure pertains can easily implement them. However, the present disclosure can be realized in various different forms and is not limited to the embodiments described herein.
[0024] In describing the embodiments of the present disclosure, when it is determined that a specific description of a known configuration or function may obscure the gist of the present disclosure, the detailed description thereof will be omitted. And in the drawings, parts not related to the description of the present disclosure are omitted, and the same reference numerals are given to the same parts.
[0025] In the present disclosure, when a certain component is "connected", "coupled" or "connected" to another component, this can include not only a direct connection relationship but also an indirect connection relationship in which another component exists between them. Also, when a certain component "includes" or "has" another component, this means that, unless otherwise stated to the contrary, it does not exclude other components but can further include other components.
[0026] In the present disclosure, terms such as "first", "second", etc. are used only for the purpose of distinguishing one component from another and do not limit the order or importance, etc. between the components unless otherwise specifically mentioned. Therefore, within the scope of the present disclosure, the first component of one embodiment may be called the second component in another embodiment, and similarly, the second component of one embodiment may be called the first component in another embodiment.
[0027] In the present disclosure, components that are distinguished from each other are for clearly explaining their respective features and do not necessarily mean that the components are separated. That is, a plurality of components may be integrated and configured as one hardware or software unit, or one component may be distributed and configured as a plurality of hardware or software units. Therefore, even without separate mention, such integrated or distributed embodiments are also included in the scope of the present disclosure.
[0028] In the present disclosure, the components described in various embodiments do not necessarily mean essential components, and some may be optional components. Therefore, embodiments constituted by a subset of the components described in one embodiment are also included in the scope of the present disclosure. Further, embodiments that include additional components in the components described in various embodiments are also included in the scope of the present disclosure.
[0029] The present disclosure relates to image encoding and decoding, and the terms used in the present disclosure can have the ordinary meanings in the technical field to which the present disclosure belongs unless newly defined in the present disclosure.
[0030] In the present disclosure, "video" can mean a set of a series of images over time. "Picture" generally means a unit indicating any one image in a specific time period, and a slice / tile is an encoding unit that constitutes a part of a picture in encoding. One picture can be composed of one or more slices / tiles. Also, a slice / tile can include one or more CTUs (coding tree units). One picture can be composed of one or more slices / tiles. One picture can be composed of one or more tile groups. One tile group can include one or more tiles. A brick can indicate a rectangular area of CTU rows within a tile in a picture. One tile can include one or more bricks. A brick can indicate a rectangular area of CTU rows within a tile. One tile can be divided into a plurality of bricks, and each brick can include one or more CTU rows belonging to the tile. A tile that is not divided into a plurality of bricks can also be treated as a brick.
[0031] In the present disclosure, "pixel" or "pel" can mean the smallest unit that constitutes a picture (or image). Also, the term "sample" can be used as a term corresponding to a pixel. A sample can generally indicate a pixel or a pixel value, and can also indicate only the pixel / pixel value of the luma component, or can also indicate only the pixel / pixel value of the chroma component.
[0032] In the present disclosure, "unit" can indicate the basic unit of image processing. A unit can include at least one of a specific region of a picture and information related to the region. One unit can include one luma block and two chroma (e.g., Cb, Cr) blocks. A unit can, in some cases, be used interchangeably with terms such as "sample array", "block", or "area". In general, an M×N block can include a set (or array) of samples (or sample arrays) or transform coefficients consisting of M columns and N rows.
[0033] In the present disclosure, "current block" can mean any one of "current coding block", "current coding unit", "block to be coded", "block to be decoded", or "block to be processed". When prediction is performed, "current block" can mean "current prediction block" or "block to be predicted". When transformation (inverse transformation) / quantization (inverse quantization) is performed, "current block" can mean "current transformation block" or "block to be transformed". When filtering is performed, "current block" can mean "block to be filtered".
[0034] In the present disclosure, unless explicitly stated as a chroma block, the "current block" can mean the luma block of the current block. The chroma block of the "current block" can be explicitly expressed including an explicit description of the chroma block such as "chroma block" or "current 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 the present 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 the present disclosure, "or" can mean "additionally or alternatively".
[0037] Overview of Video Coding System
[0038] FIG. 1 is a diagram showing a video coding system according to the present disclosure.
[0039] A video coding system according to an embodiment can include a source device 10 and a receiving device 20. The source device 10 can transmit encoded video and / or image information or data to the receiving device 20 via a digital storage medium or a network in file or streaming format.
[0040] According to an embodiment, the source device 10 may include a video source generation unit 11, an encoding device 12, and a transmission unit 13. According to an embodiment, the receiving device 20 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 transmission 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, and the display unit may be configured as a separate device or an external component.
[0041] The video source generation unit 11 can obtain video / images through processes such as video / image capture, synthesis, or generation. The video source generation unit 11 may include a video / image capture device and / or a video / image generation device. The video / image capture device may include, for example, one or more cameras, a video / image archive containing previously captured video / images, etc. The video / image generation device may include, for example, a computer, a tablet, and a smartphone, etc., and can (electronically) generate video / images. For example, virtual video / images can be generated via a computer, etc., and in this case, the video / image capture process can be replaced by a process in which relevant data is generated.
[0042] The encoding device 12 can encode the input video / images. The encoding device 12 can perform a series of procedures such as prediction, transformation, quantization, etc. for compression and encoding efficiency. The encoding device 12 can output the encoded data (encoded video / image information) in the form of a bitstream.
[0043] The transmission unit 13 can transmit the encoded video / image information or data output in bitstream format to the receiving unit 21 of the receiving device 20 via a digital storage medium or a network in file or streaming format. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray (registered trademark), HDD, SSD, etc. The transmission unit 13 can include elements for generating a media file via a predetermined file format and can include elements for transmission via a broadcast / communication network. The receiving unit 21 can extract / receive the bitstream from the storage medium or the network and transmit it to the decoding device 22.
[0044] The decoding device 22 can decode the video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device 12.
[0045] The rendering unit 23 can render the decoded video / image. The rendered video / image can be displayed via the display unit.
[0046] Overview of Image Encoding Device
[0047] FIG. 2 is a diagram schematically showing an image encoding device to which an embodiment according to the present disclosure can be applied.
[0048] As shown in FIG. 2, the image encoding apparatus 100 can include an image division unit 110, a subtraction unit 115, a conversion unit 120, a quantization unit 130, an inverse quantization unit 140, an inverse conversion 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 encoding unit 190. The inter prediction unit 180 and the intra prediction unit 185 can be collectively referred to as a "prediction unit". The conversion unit 120, the quantization unit 130, the inverse quantization unit 140, and the inverse conversion unit 150 can be included in a residual processing unit. The residual processing unit can further include the subtraction unit 115.
[0049] All or at least a part of the plurality of components constituting the image encoding apparatus 100 can be realized by one hardware component (e.g., an encoder or a processor) according to an embodiment. Further, the memory 170 can include a DPB (decoded picture buffer) and can be realized by a digital storage medium.
[0050] The image segmentation unit 110 can divide an input image (or picture, frame) input to the image encoding apparatus 100 into one or more processing units. As an example, the processing unit can be called a coding unit (CU). The coding unit can be obtained by recursively dividing a coding tree unit (CTU) or a largest coding unit (LCU) in a QT / BT / TT (Quad-tree / binary-tree / ternary-tree) structure. For example, one coding unit can be divided into a plurality of coding units at a deeper depth based on a quadtree structure, a binary tree structure, and / or a ternary tree structure. For the division of the coding unit, the quadtree structure can be applied first, and the binary tree structure and / or the ternary tree structure can be applied later. Based on the final coding unit that cannot be further divided, the coding procedure according to the present disclosure can be performed. The largest coding unit can be used as the final coding unit, and the coding units at a lower depth obtained by dividing the largest coding unit can also be used as the final coding unit. Here, the coding procedure can include procedures such as prediction, conversion, and / or restoration described later. As another example, the processing unit of the coding procedure can be a prediction unit (PU: Prediction Unit) or a transform unit (TU: Transform Unit). The prediction unit and the transform unit can be divided or partitioned from the final coding unit, respectively. The prediction unit can be a unit of sample prediction, and the transform unit can 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) can perform a prediction on a processing target block (current block) and generate a predicted block including prediction samples for the current block. The prediction unit can determine whether intra prediction is applied in units of the current block or CU, or whether inter prediction is applied. The prediction unit can generate various information related to the prediction of the current block and transmit it to the entropy encoding unit 190. The information related to the prediction can be encoded by the entropy encoding unit 190 and output in the form of a bitstream.
[0052] The intra prediction unit 185 can predict the current block by referring to samples within the current picture. The samples to be referred to can be located in the neighborhood of the current block or at a distance according to the intra prediction mode and / or intra prediction technique. The intra prediction mode can include a plurality of non-directional modes and a plurality of directional modes. The non-directional modes can include, for example, the DC mode and the Planar mode. The directional modes can include, for example, 33 directional prediction modes or 65 directional prediction modes according to the degree of fineness of the prediction direction. However, this is only an example, and more or fewer directional prediction modes can be used based on the settings. The intra prediction unit 185 can also determine the prediction mode to be applied to the current block using the prediction mode applied to the neighboring blocks.
[0053] The inter prediction unit 180 can derive a predicted block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, sub-blocks, or samples based on the correlation of the motion information between neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring blocks can include spatial neighboring blocks existing within the current picture and temporal neighboring blocks existing 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 can be called by names such as a collocated reference block and a collocated CU (colCU). The reference picture including the temporal neighboring block can be called a collocated picture (colPic). For example, the inter prediction unit 180 can construct a motion information candidate list based on neighboring blocks, and generate information indicating which candidate is used to derive the motion vector and / or reference picture index of the current block. Inter prediction can be performed based on various prediction modes. For example, in the case of the skip mode and the merge mode, the inter prediction unit 180 can use the motion information of neighboring blocks as the motion information of the current block. In the case of the skip mode, unlike the merge mode, the residual signal cannot be transmitted.In the case of the motion information prediction (motion vector prediction, MVP) mode, the motion vectors of neighboring blocks are used as motion vector predictors, and the motion vector difference and the indicator for the motion vector predictor are encoded to signal the motion vector of the current block. 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 can generate a prediction signal based on various prediction methods and / or prediction techniques described below. For example, the prediction unit can apply not only intra prediction or inter prediction for the prediction of the current block, but also apply intra prediction and inter prediction simultaneously. The prediction method of applying intra prediction and inter prediction simultaneously for the prediction of the current block can be called CIIP (combined inter and intra prediction). In addition, the prediction unit can also perform intra block copy (IBC) for the prediction of the current block. Intra block copy can be used for content image / video coding such as games, for example, like SCC (screen content coding). IBC is a method of predicting the current block using a restored reference block within the current picture at a position a predetermined distance away from the current block. When IBC is applied, the position of the reference block within the current picture can be encoded as a vector (block vector) corresponding to the predetermined distance. IBC basically performs prediction within the current picture, but can be performed in the same manner as inter prediction in terms of deriving a reference block within the current picture. That is, IBC can use at least one of the inter prediction techniques described in the present disclosure.
[0055] The prediction signal generated by the prediction unit can be used to generate a restored signal or can be used to generate a residual signal. The subtraction unit 115 can subtract the prediction signal (predicted block, predicted sample array) output from the prediction unit from the input image signal (original block, original sample array) to generate a residual signal (residual signal, residual block, residual sample array). The generated residual signal can be transmitted to the conversion unit 120.
[0056] The conversion unit 120 can apply a conversion technique to the residual signal to generate conversion coefficients (transform coefficients). For example, the conversion technique can include at least one of DCT (Discrete Cosine Transform), DST (Discrete Sine Transform), KLT (Karhunen-Loeve Transform), GBT (Graph-Based Transform), or CNT (Conditionally Non-linear Transform). Here, GBT means the transform obtained from the graph when the relationship information between pixels is represented by a graph. CNT means the transform obtained based on generating a prediction signal using all previously reconstructed pixels. The conversion process can also be applied to pixel blocks having the same size of a square and can also be applied to blocks of variable size that are not square.
[0057] The quantization unit 130 can quantize the transform coefficients and transmit them to the entropy encoding unit 190. The entropy encoding unit 190 can encode the quantized signal (information regarding the quantized transform coefficients) and output it in the form of a bit stream. The information regarding the quantized transform coefficients can be called residual information. The quantization unit 130 can reorder the quantized transform coefficients in block form into a one-dimensional vector form based on the coefficient scan order, and can also generate the information regarding the quantized transform coefficients based on the quantized transform coefficients in the one-dimensional vector form.
[0058] The entropy encoding unit 190 can perform various encoding methods such as, for example, exponential Golomb, CAVLC (context-adaptive variable length coding), CABAC (context-adaptive binary arithmetic coding), etc. The entropy encoding unit 190 can also encode, together or separately, information necessary for video / image restoration (for example, values of syntax elements, etc.) in addition to the quantized transform coefficients. The encoded information (for example, encoded video / image information) can be transmitted or stored in the form of a bit stream in units of NAL (network abstraction layer) units. The video / image information can further include information regarding various parameter sets such as an adaptive parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). Also, the video / image information can further include general constraint information. The signaling information, transmitted information, and / or syntax elements referred to in the present disclosure can be encoded through the above-described encoding procedure and included in the bit stream.
[0059] The bitstream can be transmitted via a network or stored in a digital storage medium. Here, the network can include a broadcast network and / or a communication network, etc., and the digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmission unit (not shown) for transmitting and / or a storage unit (not shown) for storing the signal output from the entropy encoding unit 190 can be provided as internal / external elements of the image encoding apparatus 100, or the transmission unit can also 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, by applying inverse quantization and inverse transformation to the quantized transform coefficients via the inverse quantization unit 140 and the inverse transformation unit 150, a residual signal (residual block or residual sample) can be restored.
[0061] The addition unit 155 can generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the restored residual signal to the prediction signal output from the inter prediction unit 180 or the intra prediction unit 185. When there is no residual for the block to be processed as in the case where the skip mode is applied, the predicted block can be used as the reconstructed block. The addition unit 155 can be called a restoration unit or a reconstructed block generation unit. The generated reconstructed signal can be used for intra prediction of the next block to be processed within the current picture and can also be used for inter prediction of the next picture after passing through filtering as described later.
[0062] The filtering unit 160 can apply filtering to the restored signal to improve the subjective / objective image quality. For example, the filtering unit 160 can apply various filtering methods to the restored picture to generate a modified restored picture, and the modified restored picture can be stored in the memory 170, specifically in the DPB of the memory 170. The various filtering methods can include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc. The filtering unit 160 can generate various information related to filtering as described later in the description of each filtering method and transmit it to the entropy encoding unit 190. The information related to filtering can be encoded by the entropy encoding unit 190 and output in the form of a bitstream.
[0063] The modified restored picture transmitted to the memory 170 can be used as a reference picture in the inter prediction unit 180. When inter prediction is applied through this, the image encoding apparatus 100 can avoid prediction mismatches between the image encoding apparatus 100 and the image decoding apparatus, and can also improve the encoding efficiency.
[0064] The DPB in the memory 170 can store the modified restored picture for use as a reference picture in the inter prediction unit 180. The memory 170 can store the motion information of the block where the motion information in the current picture has been derived (or encoded) and / or the motion information of the block in the already restored picture. The stored motion information can be transmitted to the inter prediction unit 180 for utilization as the motion information of the spatial neighboring blocks or the motion information of the temporal neighboring blocks. The memory 170 can store the restored samples of the restored blocks in the current picture and transmit them to the intra prediction unit 185.
[0065] Overview of Image Decoding Device
[0066] FIG. 3 is a diagram schematically showing an image decoding apparatus to which an embodiment according to the present disclosure can be applied.
[0067] As shown in FIG. 3, the image decoding apparatus 200 can be configured to include an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, an addition unit 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 can be collectively referred to as a "prediction unit". The inverse quantization unit 220 and the inverse transform unit 230 can be included in a residual processing unit.
[0068] All or at least a part of the plurality of components constituting the image decoding apparatus 200 can be realized by one hardware component (for example, a decoder or a processor) according to an embodiment. Further, the memory 170 can include a DPB and can be realized by a digital storage medium.
[0069] The image decoding apparatus 200 that has received a bitstream including video / image information can execute a process corresponding to the process performed by the image encoding apparatus 100 of FIG. 2 to restore an image. For example, the image decoding apparatus 200 can perform decoding using the processing unit applied in the image encoding apparatus. Therefore, the decoding processing unit 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 restored image signal decoded and output via the image decoding apparatus 200 can be reproduced via a reproducing apparatus (not shown).
[0070] The image decoding device 200 can receive the signal output from the image encoding device in FIG. 2 in the form of a bitstream. The received signal can be decoded via the entropy decoding unit 210. For example, the entropy decoding unit 210 can parse the bitstream to derive information (e.g., video / image information) necessary for image restoration (or picture restoration). The video / image information can further include information regarding various parameter sets such as an Adaptive Parameter Set (APS), a Picture Parameter Set (PPS), a Sequence Parameter Set (SPS), or a Video Parameter Set (VPS). Also, the video / image information can further include general constraint information. The image decoding device can further use the information regarding the parameter set and / or the general constraint information to decode the image. The signaling information, received information, and / or syntax elements referred to in the present disclosure can be obtained from the bitstream by being decoded via the decoding procedure. For example, the entropy decoding unit 210 can decode the information in the bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output the value of the syntax element necessary for image restoration and the quantized value of the conversion coefficient regarding the residual. More specifically, the CABAC entropy decoding method receives the bin corresponding to each syntax element from the bitstream, determines a context model using the syntax element information to be decoded, the information of the surrounding blocks and the decoded information of the block to be decoded, or the information of the symbol / bin decoded in the previous step, predicts the occurrence probability of the bin based on the determined context model, and performs arithmetic decoding of the bin to generate a symbol corresponding to the value of each syntax element. At this time, after determining the context model, the CABAC entropy decoding method can update the context model using the information of the decoded symbol / bin for the context model of the next symbol / bin.Of the information decoded by the entropy decoding unit 210, the information related to prediction is provided to the prediction units (inter prediction unit 260 and intra prediction unit 265), and the residual values entropy decoded by the entropy decoding unit 210, that is, the quantized transform coefficients and related parameter information, can be input to the inverse quantization unit 220. Also, of the information decoded by the entropy decoding unit 210, the information related to filtering can be provided to the filtering unit 240. On the other hand, a receiving unit (not shown) that receives a signal output from the image encoding device can be further provided as an internal / external element of the image decoding device 200, or the receiving unit can also be provided as a component of the entropy decoding unit 210.
[0071] On the other hand, the image decoding device according to the present disclosure can be called a video / image / picture decoding device. The image decoding device can also include an information decoder (video / image / picture information decoder) and / or a sample decoder (video / image / picture sample decoder). The information decoder can include the entropy decoding unit 210, and the sample decoder can include at least one of the inverse quantization unit 220, the inverse transform unit 230, the addition unit 235, the filtering unit 240, the memory 250, the inter prediction unit 260, and the intra prediction unit 265.
[0072] In the inverse quantization unit 220, the quantized transform coefficients can be inverse quantized to output transform coefficients. The inverse quantization unit 220 can reorder the quantized transform coefficients in a two-dimensional block format. In this case, the reordering can be performed based on the coefficient scan order performed in the image encoding device. The inverse quantization unit 220 can perform inverse quantization on the quantized transform coefficients using a quantization parameter (for example, quantization step size information) to obtain transform coefficients.
[0073] In the inverse conversion unit 230, the conversion coefficients can be inversely converted to obtain a residual signal (residual block, residual sample array).
[0074] The prediction unit can perform prediction on the current block and generate a predicted block including predicted samples for the current block. The prediction unit can determine whether intra prediction or inter prediction is applied to the current block based on the information regarding the prediction output from the entropy decoding unit 210, and can 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, which is the same as described in the explanation of the prediction unit of the image encoding apparatus 100.
[0076] The intra prediction unit 265 can predict the current block by referring to samples within the current picture. The explanation of the intra prediction unit 185 can be similarly applied to the intra prediction unit 265.
[0077] The inter prediction unit 260 can derive a predicted block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference picture. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information can be predicted in units of blocks, sub-blocks, or samples based on the correlation of the motion information between neighboring blocks and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring blocks can include spatial neighboring blocks existing in the current picture and temporal neighboring blocks existing in the reference picture. For example, the inter prediction unit 260 can construct a motion information candidate list based on the neighboring blocks, and derive the motion vector and / or reference picture index of the current block based on the received candidate selection information. Inter prediction can be performed based on various prediction modes (techniques), and the information related to the prediction can include information indicating the mode (technique) of the inter prediction for the current block.
[0078] The adder 235 can generate a restored signal (restored picture, restored block, restored sample array) by adding the obtained residual signal to the predicted signal (predicted block, predicted sample array) output from the prediction unit (including the inter prediction unit 260 and / or the intra prediction unit 265). When there is no residual for the processing target block as in the case where the skip mode is applied, the predicted block can be used as the restored block. The description of the adder 155 can be similarly applied to the adder 235. The adder 235 can be called a restoration unit or a restored block generation unit. The generated restored signal can be used for intra prediction of the next processing target block in the current picture, and can also be used for inter prediction of the next picture after passing through filtering as described later.
[0079] The filtering unit 240 can apply filtering to the restored signal to improve the subjective / objective image quality. For example, the filtering unit 240 can apply various filtering methods to the restored picture to generate a modified restored picture, and can store the modified restored picture in the memory 250, specifically, in the DPB of the memory 250. The various filtering methods can include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, and the like.
[0080] The (corrected) restored picture stored in the DPB of the memory 250 can be used as a reference picture in the inter prediction unit 260. The memory 250 can store the motion information of the block from which the motion information in the current picture has been derived (or decoded) and / or the motion information of the blocks in the already restored picture. The stored motion information can be transmitted to the inter prediction unit 260 for utilization as the motion information of spatial neighboring blocks or the motion information of temporal neighboring blocks. The memory 250 can store the restored samples of the restored blocks in the current picture and transmit them to the intra prediction unit 265.
[0081] In this specification, the embodiments described in the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the image encoding device 100 can be similarly or correspondingly applied to the filtering unit 240, the inter prediction unit 260, and the intra prediction unit 265 of the image decoding device 200.
[0082] Overview of Image Segmentation
[0083] The video / image coding method according to the present disclosure can be performed based on the following image segmentation structure. Specifically, procedures such as prediction, residual processing ((inverse) transformation, (inverse) quantization, etc.), syntax element coding, and filtering described later can be performed based on CTUs, CUs (and / or TUs, PUs) derived based on the segmentation structure of the image. The image can be divided in block units, and the block division procedure can be performed in the image division unit 110 of the above-described encoding device. The division-related information can be encoded by the entropy encoding unit 190 and transmitted to the decoding device in the form of a bitstream. The entropy decoding unit 210 of the decoding device can derive the block division structure of the current picture based on the division-related information obtained from the bitstream, and perform a series of procedures for image decoding (for example, prediction, residual processing, block / picture restoration, in-loop filtering, etc.) based on this.
[0084] A picture can be divided into a sequence of coding tree units (CTUs). FIG. 4 shows an example of a picture being divided into CTUs. A CTU can correspond to a coding tree block (CTB). Alternatively, a CTU can 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 can include an N×N block of luma samples and two corresponding blocks of chroma samples. The maximum allowable size of a CTU for coding and prediction, etc., can be different from the maximum allowable size of a CTU for transformation. For example, the maximum allowable size of a luma block within a CTU can be 128×128 even if the maximum size of a luma transform block is 64×64.
[0085] Overview of CTU Segmentation
[0086] As described above, a coding unit can be obtained by recursively dividing a coding tree unit (CTU) or a largest coding unit (LCU) in a QT / BT / TT (Quad-tree / binary-tree / ternary-tree) structure. For example, a CTU can first be divided into a quadtree structure. Then, the leaf nodes of the quadtree structure can be further divided by a multi-type tree structure.
[0087] The split by a quadtree means splitting the current CU (or CTU) into four equal parts. By the split by a quadtree, the current CU can be split into four CUs having the same width and the same height. If the current CU is not further split in the quadtree structure, the current CU corresponds to a leaf node of the quadtree structure. A CU corresponding to a leaf node of the quadtree structure is not further split and can be used as the aforementioned final coding unit. Alternatively, a CU corresponding to a leaf node of the quadtree structure can be further split by a multi-type tree structure.
[0088] FIG. 5 is a diagram showing the split types of blocks by a multi-type tree structure. The split by a multi-type tree structure can include two splits by a binary tree structure and two splits by a ternary tree structure.
[0089] The two splits by a binary tree structure can include a vertical binary splitting (SPLIT_BT_VER) and a horizontal binary splitting (SPLIT_BT_HOR). The vertical binary splitting (SPLIT_BT_VER) means splitting the current CU vertically into two equal parts. As shown in FIG. 4, by the vertical binary splitting, two CUs having the same height as the current CU and a width that is half of the width of the current CU can be generated. The horizontal binary splitting (SPLIT_BT_HOR) means splitting the current CU horizontally into two equal parts. As shown in FIG. 5, by the horizontal binary splitting, two CUs having a height that is half of the height of the current CU and a width that is the same as the width of the current CU can be generated.
[0090] The two splits by the ternary structure can include vertical ternary splitting (SPLIT_TT_VER) and horizontal ternary splitting (SPLIT_TT_HOR). Vertical ternary splitting (SPLIT_TT_VER) divides the current CU in a 1:2:1 ratio vertically. As shown in FIG. 5, by vertical ternary splitting, two CUs having the same height as the current CU and a width of 1 / 4 of the width of the current CU, and a CU having the same height as the current CU and a width of half of the width of the current CU can be generated. Horizontal ternary splitting (SPLIT_TT_HOR) divides the current CU in a 1:2:1 ratio horizontally. As shown in FIG. 4, by horizontal ternary splitting, two CUs having a height of 1 / 4 of the height of the current CU and the same width as the current CU, and one CU having a height of half of the height of the current CU and the same width as the current CU can be generated.
[0091] FIG. 6 is a diagram exemplarily showing a signaling mechanism of block splitting 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 quad-tree, and the CTU is first divided into the quad-tree structure. Information (e.g., qt_split_flag) indicating whether to perform quad-tree splitting on the current CU (CTU or a node (QT_node) of the quad-tree) can be signaled. For example, if the qt_split_flag is the first value (e.g., "1"), the current CU can be divided into the quad-tree. Also, if the qt_split_flag is the second value (e.g., "0"), the current CU is not divided into the quad-tree and becomes a leaf node (QT_leaf_node) of the quad-tree. Each leaf node of the quad-tree can then be further divided into a multi-type tree structure. That is, the leaf node of the quad-tree can become a node (MTT_node) of the multi-type tree. In the multi-type tree structure, a first flag (e.g., mtt_split_cu_flag) can be signaled to indicate whether the current node is further divided. If the node is further divided (e.g., when the first flag is 1), a second flag (e.g., mtt_split_cu_verticla_flag) can be signaled to indicate the splitting direction. For example, when the second flag is 1, the splitting direction is the vertical direction, and when the second flag is 0, the splitting direction can be the horizontal direction. Then, a third flag (e.g., mtt_split_cu_binary_flag) can be signaled to indicate whether the splitting type is a binary splitting type or a ternary splitting type. For example, when the third flag is 1, the splitting type is the binary splitting type, and when the third flag is 0, the splitting type can be the ternary splitting type. The nodes of the multi-type tree obtained by binary splitting or ternary splitting can be further partitioned into the multi-type tree structure. However, the nodes of the multi-type tree cannot be partitioned into the quad-tree structure.When the first flag is 0, the corresponding node of the multi-type tree is not further split and becomes a leaf node (MTT_leaf_node) of the multi-type tree. The CU corresponding to the leaf node of the multi-type tree can be used as the aforementioned final coding unit.
[0093] Based on the aforementioned mtt_split_cu_vertical_flag and mtt_split_cu_binary_flag, the multi-type tree splitting mode (MttSplitMode) of the CU can be derived as shown in Table 1. In the following description, the multi-tree splitting mode may be abbreviated as the multi-tree splitting type or the splitting type.
[0094]
Table 1
[0095] FIG. 7 shows an example in which a CTU is divided into multiple CUs by applying a multi-type tree after applying a quad-tree. In FIG. 7, the thick block edge 710 indicates a quad-tree division, and the remaining edges 720 indicate a multi-type tree division. A CU can correspond to a coding block CB. In one embodiment, a CU can include a coding block of luma samples and two coding blocks of chroma samples corresponding to the luma samples. The chroma component (sample) CB or TB size can be derived based on the luma component (sample) CB or TB size according to the component ratio according to the color format (chroma format) of the picture / image, such as 4:4:4, 4:2:2, 4:2:0, etc. When the color format is 4:4:4, the chroma component CB / TB size can be set to be the same as the luma component CB / TB size. When the color format is 4:2:2, the width of the chroma component CB / TB can be set to half of the width of the luma component CB / TB, and the height of the chroma component CB / TB can be set to the height of the luma component CB / TB. When the color format is 4:2:0, the width of the chroma component CB / TB can be set to half of the width of the luma component CB / TB, and the height of the chroma component CB / TB can be set to half of the height of the luma component 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 sizes ranging 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 sizes ranging from 64×64 to 2×2.
[0097] On the other hand, in one embodiment, the CU size and the TU size can be the same. Or, a plurality of TUs can exist within the CU region. The TU size generally can indicate the luma component (sample) TB (Transform Block) size.
[0098] The TU size can be derived based on a preset maximum allowable TB size (maxTbSize). For example, if the CU size is larger than the maxTbSize, a plurality of TUs (TBs) with the maxTbSize can be derived from the CU, and conversion / inverse conversion can be performed in units of the TU (TB). For example, the maximum allowable luma TB size can be 64×64, and the maximum allowable chroma TB size can be 32×32. If the width or height of the CB divided by the tree structure is larger than the maximum conversion width or height, the CB can be automatically (or implicitly) divided until it satisfies the limitations of the TB size in the horizontal and vertical directions.
[0099] Also, for example, when intra prediction is applied, the intra prediction mode / type is derived in units of the CU (or CB), and the procedure for deriving peripheral reference samples and generating prediction samples can be performed in units of the TU (or TB). In this case, one or more TUs (or TBs) can exist within one CU (or CB) region, and in this case, the plurality of TUs (or TBs) can share the same intra prediction mode / type.
[0100] For a quadtree coding tree scheme with a multi-type tree, the following parameters can be signaled from an encoder to a decoder as SPS syntax elements. For example, CTUsize, which is a parameter indicating the size of the root node of the quadtree; MinQTSize, which is a parameter indicating the minimum allowable size of the leaf nodes of the quadtree; MaxBTSize, which is a parameter indicating the maximum allowable size of the root node of the binary tree; MaxTTSize, which is a parameter indicating the maximum allowable size of the root node of the ternary tree; MaxMttDepth, which is a parameter indicating the maximum allowed hierarchy depth of the multi-type tree split from the leaf nodes of the quadtree; MinBtSize, which is a parameter indicating the minimum allowable leaf node size of the binary tree; and MinTtSize, which is a parameter indicating the minimum allowable leaf node size of the ternary tree. At least one of these can be signaled.
[0101] In one embodiment using the 4:2:0 chroma format, the CTU size can be set to 128×128 luma blocks and two 64×64 chroma blocks corresponding to the luma blocks. In this case, MinQTSize can be set to 16×16, MaxBtSize can be set to 128×128, MaxTtSize can be set to 64×64, MinBtSize and MinTtSize can be set to 4×4, and MaxMttDepth can be set to 4. Quadtree splitting can be applied to the CTU to generate the leaf nodes of the quadtree. The leaf nodes of the quadtree can be called leaf QT nodes. The leaf nodes of the quadtree can have a size from 16×16 (e.g., the MinQTSize) to 128×128 (e.g., the CTU size). If the leaf QT node is 128×128, it cannot be further split into a binary tree / trinary tree. This is because splitting in this case would exceed MaxBtsize and MaxTtsize (e.g., 64×64). In other cases, the leaf QT node can be further split into a multi-type tree. Thus, the leaf QT node is the root node for the multi-type tree, and the leaf QT node can have a multi-type tree depth (mttDepth) 0 value. If the multi-type tree depth reaches MaxMttdepth (e.g., 4), no further additional splitting can be considered. If the width of the multi-type tree node is the same as MinBtSize and is the same as or smaller than 2xMinTtSize, no further additional horizontal splitting can be considered. If the height of the multi-type tree node is the same as MinBtSize and is the same as or smaller than 2xMinTtSize, no further additional vertical splitting can be considered. When splitting is not considered in this way, the encoding device can omit the signaling of the splitting information. In such a case, the decoding device can derive the splitting information to a predetermined value.
[0102] On one hand, one CTU can include a coding block of luma samples (hereinafter referred to as "luma block") and two coding blocks of chroma samples corresponding thereto (hereinafter referred to as "chroma blocks"). The coding tree scheme described above can be similarly applied to the luma block and chroma block of the current CU, or can be applied separately. Specifically, the luma block and chroma block within one CTU can be split into the same block tree structure, and the tree structure in this case can be represented as a single tree (SINGLE_TREE). Or, the luma block and chroma block within one CTU can be split into individual block tree structures, and the tree structure in this case can be represented as a dual tree (DUAL_TREE). That is, when the CTU is split into a dual tree, the block tree structure for the luma block and the block tree structure for the chroma block can exist separately. At this time, the block tree structure for the luma block can be called a dual tree luma (DUAL_TREE_LUMA), and the block tree structure for the chroma block can be called a dual tree chroma (DUAL_TREE_CHROMA). For P and B slices / tile groups, the luma block and chroma block within one CTU can be restricted to have the same coding tree structure. However, for I slices / tile groups, the luma block and chroma block can have individual block tree structures with respect to each other. If the individual block tree structure is applied, the luma CTB (Coding Tree Block) can be split into CUs based on a specific coding tree structure, and the chroma CTB can be split into chroma CUs based on another coding tree structure. That is, the CUs within the I slice / tile group to which the individual block tree structure is applied are composed of a coding block of the luma component or coding blocks of two chroma components, which can mean that the CUs of the P or B slice / tile group can be composed of blocks of three color components (luma component and two chroma components).
[0103] In the above, the quadtree coding tree structure with a multi-type tree has been described. However, the structure in which the CU is divided is not limited to this. For example, the BT structure and the TT structure can be interpreted as concepts included in a Multiple Partitioning Tree (MPT) structure, and it can be interpreted that the CU is divided by the QT structure and the MPT structure. In an example where the CU is divided by the QT structure and the MPT structure, a syntax element (for example, MPT_split_type) including information on how many blocks the leaf node of the QT structure is divided into and a syntax element (for example, MPT_split_mode) including information on whether the leaf node of the QT structure is divided in the vertical or horizontal direction are signaled, whereby the division structure can be determined.
[0104] In another example, the CU can be divided in a way different from the QT structure, the BT structure, or the TT structure. That is, unlike the case where the CU at a lower depth is divided into 1 / 4 the size of the CU at a higher depth by the QT structure, or the CU at a lower depth is divided into 1 / 2 the size of the CU at a higher depth by the BT structure, or the CU at a lower depth is divided into 1 / 4 or 1 / 2 the size of the CU at a higher depth by the TT structure, the CU at a lower depth can, in some cases, be divided into 1 / 5, 1 / 3, 3 / 8, 3 / 5, 2 / 3, or 5 / 8 the size of the CU at a higher depth, and the method by which the CU is divided is not limited to this.
[0105] Thus, the quadtree coding block structure with the multi-type tree can provide a very flexible block division structure. On the other hand, due to the division types supported by the multi-type tree, different division patterns can potentially derive the same coding block structure result in some cases. The encoding device and the decoding device can reduce the data amount of the division information by restricting the occurrence of such redundant division patterns.
[0106] Also, in the video / image encoding and decoding according to this document, the image processing unit can have a hierarchical structure. One picture can be divided into one or more tiles, bricks, slices, and / or tile groups. One slice can include one or more bricks. One brick can include one or more CTU rows within a tile. A slice can include an integer number of bricks in a picture. One tile group can include one or more tiles. One tile can include one or more CTUs. The CTU can be divided into one or more CUs. A tile can be a rectangular area composed of a specific tile row and a specific tile column consisting of a plurality of CTUs within a picture. A tile group can include an integer number of tiles by raster scanning of tiles within a picture. A slice header can carry information / parameters applicable to the corresponding slice (blocks within the slice). When the encoding device or decoding device has a multi-core processor, the encoding / decoding procedures for the tiles, slices, bricks, and / or tile groups can be processed in parallel.
[0107] In the present disclosure, the names or concepts of slices or tile groups can be used interchangeably. That is, a tile group header can be called a slice header. Here, a slice can have one type among the slice types including intra (I) slice, predictive (P) slice, and bi-predictive (B) slice. For blocks within an I slice, inter prediction is not used for prediction, and only intra prediction can be used. Of course, in this case as well, the original sample values can be coded and signaled without prediction. For blocks within a P slice, intra prediction or inter prediction can be used, and when inter prediction is used, only uni prediction can be used. On the other hand, for blocks within a B slice, intra prediction or inter prediction can be used, and when inter prediction is used, up to maximum bi prediction can be used.
[0108] The symbolization device can determine tile / tile group, block, slice, maximum and minimum coding unit sizes according to the characteristics of the video image (e.g., resolution), or in consideration of coding efficiency or parallel processing. And information regarding this or information that can induce this can be included in the bitstream.
[0109] The decoding device can obtain information indicating, for example, the tile / tile group, block, slice of the current picture, or whether the CTUs within the tile are divided into a number of coding units. The symbolization device and the decoding device can also improve coding efficiency by signaling such information only under specific conditions.
[0110] The slice header (slice header syntax) can include information / parameters applicable in common to the slice. APS (APS syntax) or PPS (PPS syntax) can include information / parameters applicable in common to one or more pictures. SPS (SPS syntax) can include information / parameters applicable in common to one or more sequences. VPS (VPS syntax) can include information / parameters applicable in common to multiple layers. DPS (DPS syntax) can include information / parameters applicable in common to the entire video. DPS can include information / parameters related to the combination of CVS (coded video sequence).
[0111] Also, for example, information regarding the division and configuration of the tile / tile group / block / slice, etc., can be configured in the coding stage via the upper-level syntax and transmitted to the decoding device in the form of a bitstream.
[0112] Overview of Intra Prediction
[0113] The intra prediction performed by the above-described encoding apparatus and decoding apparatus will be described in more detail below. The intra prediction can indicate a prediction that generates prediction samples for a current block based on reference samples within a picture (hereinafter, the current picture) to which the current block belongs.
[0114] This will be described with reference to FIG. 8. When intra prediction is applied to the current block 801, the surrounding reference samples used for the intra prediction of the current block 801 can be derived. The surrounding reference samples of the current block include a total of 2×nH samples including the sample 811 adjacent to the left boundary of the current block of size nW×nH and the sample 812 adjacent to the bottom-left side, a total of 2×nW samples including the sample 821 adjacent to the top boundary of the current block and the sample 822 adjacent to the top-right side, and one sample 831 adjacent to the top-light side of the current block. Alternatively, the surrounding reference samples of the current block can include a plurality of columns of upper surrounding samples and a plurality of rows of left surrounding samples.
[0115] Also, the surrounding reference samples of the current block can 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 side of the current block.
[0116] However, some of the surrounding reference samples of the current block may not have been decoded yet or may not be available. In this case, the decoding apparatus can configure the surrounding reference samples used for prediction by replacing the unavailable samples with available samples. Alternatively, the surrounding reference samples used for prediction can be configured through interpolation of available samples.
[0117] When a peripheral reference sample is derived, (i) a predicted sample can be derived based on the average or interpolation of neighboring reference samples of the current block, and (ii) the predicted sample can also be derived based on a reference sample existing in a specific (predicted) direction with respect to the predicted sample among the neighboring reference samples of the current block. In the case of (i), it can be called a non-directional mode or a non-angle mode, and in the case of (ii), it can be called a directional mode or an angular mode. Also, among the peripheral reference samples, based on the predicted sample of the current block, through the interpolation between the second peripheral sample and the first peripheral sample located in the opposite direction of the prediction direction of the intra prediction mode of the current block, the predicted sample can also be generated. The above-mentioned case can be called linear interpolation intra prediction (LIP). Also, a chroma predicted sample can be generated based on a luma sample using a linear model. In this case, it can be called the LM mode. Also, a temporary predicted sample of the current block is derived based on the filtered peripheral reference samples, and a predicted sample of the current block is derived by performing a weighted sum of at least one reference sample derived according to the intra prediction mode among the existing peripheral reference samples, that is, the non-filtered peripheral reference samples, and the temporary predicted sample. The above-mentioned case can be called PDPC (Position dependent intra prediction). Also, from among the peripheral multiple reference sample lines of the current block, the reference sample line with the highest prediction accuracy is selected, and a predicted sample is derived using the reference sample located in the prediction direction on this line. At this time, intra prediction coding can be performed by signaling the used reference sample line to the decoder.In the above case, it can be called multi-reference line (MRL) intra prediction or MRL-based intra prediction. Also, the current block is divided into vertical or horizontal sub-partitions and intra prediction is performed based on the same intra prediction mode, and peripheral reference samples can be derived and used in units of the sub-partitions. That is, in this case, the intra prediction mode for the current block is applied identically to the sub-partitions, but by deriving and using peripheral reference samples in units of the sub-partitions, the intra prediction performance can be enhanced in some cases. Such a prediction method can be called intra sub-partitions (ISP) or ISP-based intra prediction. Such an intra prediction method can be called an intra prediction type separately from the intra prediction mode (e.g., DC mode, Planar mode, and directional mode). The intra prediction type can be called by various terms such as an intra prediction technique or an additional intra prediction mode. For example, the intra prediction type (or an additional intra prediction mode, etc.) can include at least one of LIP, PDPC, MRL, and ISP described above. A general intra prediction method excluding specific intra prediction types such as LIP, PDPC, MRL, and ISP can be called a normal intra prediction type. The normal intra prediction type can indicate a case where the specific intra prediction types described above are not applied, and prediction can be performed based on the intra prediction mode described above. On the other hand, if necessary, post-processing filtering can also be performed on the derived prediction samples.
[0118] Specifically, the intra prediction procedure can include an intra prediction mode / type determination step, a peripheral reference sample derivation step, and an intra prediction mode / type-based prediction sample derivation step. Further, if necessary, a post-processing filtering step can also be performed on the derived prediction samples.
[0119] On the other hand, in addition to the above-described intra prediction type, ALWIP (affine linear weighted intra prediction) can be used. The ALWIP can also be called LWIP (linear weighted intra prediction) or MIP (matrix weighted intra prediction or matrix based intra prediction). When the MIP is applied to the current block, i) using the surrounding reference samples for which an averaging procedure has been performed, ii) performing a matrix-vector-multiplication procedure, and iii) further performing a horizontal / vertical interpolation procedure as necessary, the prediction samples for the current block can be derived. The intra prediction mode used for the MIP can be configured to be different from the intra prediction modes used in the above-described LIP, PDPC, MRL, ISP intra prediction, or normal intra prediction. The intra prediction mode for the MIP can be called the MIP intra prediction mode, the MIP prediction mode, or the MIP mode. For example, depending on the intra prediction mode for the MIP, the matrix and offset used in the matrix-vector-multiplication can be set to be different. Here, the matrix can be called the (MIP) weight matrix, and the offset can be called the (MIP) offset vector or the (MIP) bias vector. A specific MIP method will be described later.
[0120] The block restoration procedure based on intra prediction and the intra prediction unit in the encoding apparatus can generally include the following by way of example. S910 can be performed by the intra prediction unit 185 of the encoding apparatus. S920 can be performed by a residual processing unit including at least one of the subtraction unit 115, the conversion unit 120, the quantization unit 130, the inverse quantization unit 140, and the inverse conversion unit 150 of the encoding apparatus. Specifically, S920 can be performed by the subtraction unit 115 of the encoding apparatus. In S930, the prediction information can be derived by the intra prediction unit 185 and encoded by the entropy encoding unit 190. In S930, the residual information can be derived by the residual processing unit and encoded by the entropy encoding unit 190. The residual information is information regarding the residual sample. The residual information can include information regarding the quantized transform coefficients for the residual sample. As described above, the residual sample can be derived into transform coefficients via the conversion unit 120 of the encoding apparatus, and the transform coefficients can be derived as quantized transform coefficients via the quantization unit 130. The information regarding the quantized transform coefficients can be encoded by the entropy encoding unit 190 via the residual coding procedure.
[0121] The symbolization device can perform intra prediction on the current block (S910). The symbolization device can derive an intra prediction mode / type for the current block, derive peripheral reference samples of the current block, and generate prediction samples within the current block based on the intra prediction mode / type and the peripheral reference samples. Here, the determination of the intra prediction mode / type, the derivation of the peripheral reference samples, and the generation procedure of the prediction samples may be performed simultaneously, or any one of the procedures may be performed prior to the other procedures. For example, although not shown in the figure, the intra prediction unit 185 of the symbolization device can include an intra prediction mode / type determination unit, a reference sample derivation unit, and a prediction sample derivation unit. The intra prediction mode / type determination unit determines the intra prediction mode / type for the current block, the reference sample derivation unit derives the peripheral reference samples of the current block, and the prediction sample derivation unit can derive the prediction samples of the current block. On the other hand, when the prediction sample filtering procedure described later is performed, the intra prediction unit 185 can further include a prediction sample filter unit. The symbolization device can determine the mode / type applied to the current block among a plurality of intra prediction modes / type. The symbolization device can compare the RD cost for the intra prediction mode / type and determine the optimal intra prediction mode / type for the current block.
[0122] On the other hand, the symbolization device can also perform a prediction sample filtering procedure. The prediction sample filtering can be called post-filtering. By the prediction sample filtering procedure, some or all of the prediction samples can be filtered. In some cases, the prediction sample filtering procedure can be omitted.
[0123] The symbolization device can generate a residual sample for the current block based on the (filtered) prediction sample (S920). The symbolization device can compare the prediction sample in the original sample of the current block based on the phase and derive the residual sample.
[0124] The symbolization device can encode image information including the information related to the intra prediction (prediction information) and the residual information related to the residual sample (S930). The prediction information can include the intra prediction mode information and the intra prediction type information. The symbolization device can output the encoded image information in the form of a bitstream. The output bitstream can be transmitted to the decoding device via a storage medium or a network.
[0125] The residual information can include a residual coding syntax described later. The symbolization device can convert / quantize the residual sample to derive quantized transform coefficients. The residual information can include information on the quantized transform coefficients.
[0126] On the other hand, as described above, the symbolization device can generate a restored picture (including restored samples and restored blocks). For this purpose, the symbolization device can perform inverse quantization / inverse transformation processing on the quantized transform coefficients again to derive a (corrected) residual sample. The reason for performing inverse quantization / inverse transformation again after converting / quantizing the residual sample in this way is to derive the same residual sample as the residual sample derived by the decoding device as described above. The symbolization device can generate a restored block including a restored sample for the current block based on the prediction sample and the (corrected) residual sample. A restored picture for the current picture can be generated based on the restored block. As described above, an in-loop filtering procedure or the like can be further applied to the restored picture.
[0127] The video / image decoding procedure based on intra prediction and the intra prediction unit in the decoding apparatus can generally include the following by way of example. The decoding apparatus can perform operations corresponding to the operations performed by the encoding apparatus.
[0128] S1010 to S1030 can be performed by the intra prediction unit 265 of the decoding apparatus, and the prediction information of S1010 and the residual information of S1040 can be obtained from the bit stream by the entropy decoding unit 210 of the decoding apparatus. The residual processing unit including at least one of the inverse quantization unit 220 and the inverse transformation unit 230 of the decoding apparatus can derive residual samples for the current block based on the residual information. Specifically, the inverse quantization unit 220 of the residual processing unit can perform inverse quantization based on the quantized transformation coefficients derived based on the residual information to derive transformation coefficients, and the inverse transformation unit 230 of the residual processing unit can perform inverse transformation on the transformation coefficients to derive residual samples for the current block. S1050 can be performed by the addition unit 235 or the restoration unit of the decoding apparatus.
[0129] Specifically, the decoding apparatus can derive the intra prediction mode / type for the current block based on the received prediction information (intra prediction mode / type information) (S1010). The decoding apparatus can derive the surrounding reference samples of the current block (S1020). The decoding apparatus can generate prediction samples within the current block based on the intra prediction mode / type and the surrounding reference samples (S1030). In this case, the decoding apparatus can perform a prediction sample filtering procedure. The prediction sample filtering can be called post-filtering. By the prediction sample filtering procedure, some or all of the prediction samples can be filtered. In some cases, the prediction sample filtering procedure can be omitted.
[0130] The decoding device can generate residual samples for the current block based on the received residual information. The decoding device can generate restored samples for the current block based on the prediction samples and the residual samples, and derive a restored block including the restored samples (S1040). A restored picture for the current picture can be generated based on the restored block. As described above, in-loop filtering procedures and the like can be further applied to the restored picture.
[0131] Here, although not shown in the figure, the intra prediction unit 265 of the decoding device can include an intra prediction mode / type determination unit, a reference sample derivation unit, and a prediction sample derivation unit. The intra prediction mode / type determination unit determines the intra prediction mode / type for the current block based on the intra prediction mode / type information obtained by the entropy decoding unit 210. The reference sample derivation unit derives the peripheral reference samples of the current block, and the prediction sample derivation unit can derive the prediction samples of the current block. On the other hand, when the above-described prediction sample filtering procedure is performed, the intra prediction unit 265 can further include a prediction sample filter unit.
[0132] The intra prediction mode information can include, for example, flag information (e.g., intra_luma_mpm_flag) indicating whether MPM (most probable mode) is applied to the current block or whether the remaining mode is applied. When the MPM is applied to the current block, the prediction mode information can further include index information (e.g., intra_luma_mpm_idx) indicating any one of the intra prediction mode candidates (MPM candidates). The intra prediction mode candidates (MPM candidates) can be composed of an MPM candidate list or an MPM list. Also, when the MPM is not applied to the current block, the intra prediction mode information can further include remaining mode information (e.g., intra_luma_mpm_remainder) indicating any one of the remaining intra prediction modes excluding the intra prediction mode candidates (MPM candidates). The decoding device can determine the intra prediction mode of the current block based on the intra prediction mode information. A separate MPM list can be configured for the above-described MIP.
[0133] Furthermore, the intra prediction type information can be realized in various forms. As an example, the intra prediction type information may include intra prediction type index information indicating any one of the intra prediction types. As another example, the intra prediction type information may include reference sample line information (e.g., intra_luma_ref_idx) indicating whether the MRL is applied to the current block and, if applied, 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 the split type of subpartition 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 can be encoded / decoded through the coding method described in this document. For example, the intra prediction mode information and / or the intra prediction type information can be encoded / decoded through entropy coding (e.g., CABAC, CAVLC) coding based on truncated (rice) binary code.
[0135] Overview of Inter Prediction
[0136] The following describes the detailed technology of the inter-prediction method in the description of encoding and decoding with reference to FIGS. 2 and 3. In the case of a decoding apparatus, a video / image decoding method based on inter-prediction and an inter-prediction unit in the decoding apparatus can operate according to the following description. In the case of an encoding apparatus, a video / image encoding method based on inter-prediction and an inter-prediction unit in the encoding apparatus can operate according to the following description. In addition to this, the data encoded by the following description can be stored in bitstream format.
[0137] The prediction unit of the symbolization device / image decoding device can derive a prediction sample by performing inter prediction in block units. Inter prediction can indicate a prediction derived in a method that depends on data elements (such as sample values or motion information) 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 can be induced based on a reference block (reference sample array) specified by a motion vector on the reference picture pointed to by the reference picture index. At this time, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information of the current block can be predicted in units of blocks, sub-blocks, or samples based on the correlation of motion information between the peripheral block and the current block. The motion information can include a motion vector and a reference picture index. The motion information can further include inter prediction type (L0 prediction, L1 prediction, Bi prediction, etc.) information. When inter prediction is applied, the peripheral block can include a spatial neighboring block existing in the current picture and a temporal neighboring block existing 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. The temporal neighboring block can be called by names such as a collocated reference block and a collocated CU (colCU), and the reference picture including the temporal neighboring block can also be called by the name of a collocated picture (colPic). For example, a motion information candidate list can be constructed based on the peripheral blocks of the current block, and flag or index information indicating which candidate is selected (used) can be signaled to derive the motion vector and / or reference picture index of the current block. Inter prediction can be performed based on various prediction modes. For example, in the case of the skip mode and the 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 merge mode, the residual signal cannot 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 the motion vector difference can be signaled. In this case, the motion vector of the current block can be derived by using the sum of the motion vector predictor and the motion vector difference.
[0138] The motion information can include L0 motion information and / or L1 motion information based on an inter prediction type (such as L0 prediction, L1 prediction, Bi prediction, etc.). The motion vector in the L0 direction can be called the L0 motion vector or MVL0, and the motion vector in the L1 direction can be called the L1 motion vector or MVL1. The prediction based on the L0 motion vector can be called L0 prediction, the prediction based on the L1 motion vector can be called L1 prediction, and the prediction based on both the L0 motion vector and the L1 motion vector can be called bi (Bi) prediction. Here, the L0 motion vector can indicate a motion vector related to the reference picture list L0 (L0), and the L1 motion vector can indicate a motion vector related to the reference picture list L1 (L1). The reference picture list L0 can include, as reference pictures, pictures that are earlier in output order than the current picture, and the reference picture list L1 can include pictures that are later in output order than the current picture. The earlier picture can be called a forward (reference) picture, and the later picture can be called a backward (reference picture). The reference picture list L0 can further include, as reference pictures, pictures that are later in output order than the current picture. In this case, the earlier pictures in the reference picture list L0 can be indexed first, and the later pictures can be indexed next. The reference picture list L1 can further include, as reference pictures, pictures that are earlier in output order than the current picture. In this case, the later pictures in the reference picture list L1 can be indexed first, and the earlier pictures can be indexed next. Here, the output order can correspond to the POC (picture order count) order (order).
[0139] The video / image encoding procedure based on inter prediction and the inter prediction unit in the encoding apparatus can generally include the following by way of example. This will be described with reference to FIG. 11. The encoding apparatus performs inter prediction on the current block (S1110). The encoding apparatus can derive the 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 of the procedures may be performed prior to the other procedures. For example, the inter prediction unit of the encoding apparatus can include a prediction mode determination unit, a motion information derivation unit, and a prediction sample derivation unit. The prediction mode determination unit determines the prediction mode for the current block, the motion information derivation unit derives the motion information of the current block, and the prediction sample derivation unit can derive the prediction sample of the current block. For example, the inter prediction unit of the encoding apparatus searches for a block similar to the current block within a certain region (search region) of the reference picture via motion estimation, and can derive a reference block whose difference from the current block is minimum or below a certain criterion. Based on this, a reference picture index indicating the reference picture in which the reference block is located can be derived, and a motion vector can be derived based on the positional difference between the reference block and the current block. The encoding apparatus can determine the mode to be applied to the current block among various prediction modes. The encoding apparatus can compare the RD costs for the various prediction modes and determine the optimal prediction mode for the current block.
[0140] For example, when the skip mode or the merge mode is applied to the current block, the encoding device constructs a merge candidate list to be described later, and among the reference blocks indicated by the merge candidates included in the merge candidate list, a reference block whose difference from the current block is the smallest or below a certain criterion can be derived. In this case, a merge candidate related to the derived reference block can be selected, and merge index information indicating the selected merge candidate can be generated and signaled to the decoding device. The motion information of the current block can be derived using the motion information of the selected merge candidate.
[0141] As another example, when the (A)MVP mode is applied to the current block, the encoding device constructs an (A)MVP candidate list to be described later, and among the mvp (motion vector predictor) candidates included in the (A)MVP candidate list, the motion vector of the selected mvp candidate can be used as the mvp of the current block. In this case, for example, the motion vector indicating the reference block derived by the above-described motion estimation can be used as the motion vector of the current block, and among the mvp candidates, the mvp candidate having the motion vector with the smallest difference from the motion vector of the current block can be the selected mvp candidate. An MVD (motion vector difference), which is the difference obtained by subtracting the mvp from the motion vector of the current block, can be derived. In this case, information regarding the MVD can be signaled to the decoding device. Also, when the (A)MVP mode is applied, the value of the reference picture index can be configured with reference picture index information and signaled to the decoding device separately.
[0142] The encoding device can derive residual samples based on the prediction samples (S1120). The encoding device can derive the residual samples by comparing the original samples of the current block with the prediction samples.
[0143] The symbolization device encodes image information including prediction information and residual information (S1130). The symbolization device can output the encoded image information in the form of a bitstream. The prediction information is information related to the prediction procedure and can include prediction mode information (e.g., skip flag, merge flag, or mode index, etc.) and information related to motion information. The information related to the motion information can include candidate selection information (e.g., merge index, mvp flag, or mvp index) which is information for deriving a motion vector. Also, the information related to the motion information can include information related to the above-mentioned MVD and / or reference picture index information. Also, the information related to the motion information can include information indicating whether L0 prediction, L1 prediction, or bi-prediction is applied. The residual information is information related to the residual samples. The residual information can include information related to the quantized transform coefficients for the residual samples.
[0144] The output bitstream can be stored in a (digital) storage medium and transmitted to the decoding device, or can also be transmitted to the decoding device via a network.
[0145] On the other hand, as described above, the symbolization device can generate a restored picture (including restored samples and restored blocks) based on the reference samples and the residual samples. This is because the same prediction result as that performed by the decoding device is derived by the symbolization device, and thus the coding efficiency can be improved. Therefore, the symbolization device can store the restored picture (or restored samples, restored blocks) in the memory and utilize it as a picture for inter prediction. As described above, further in-loop filtering procedures and the like can be applied to the restored picture.
[0146] The video / image decoding procedure based on inter prediction and the inter prediction unit in the decoding apparatus can generally include, for example, the following.
[0147] The decoding apparatus can perform operations corresponding to the operations performed by the encoding apparatus. The decoding apparatus can perform prediction on the current block based on the received prediction information and derive a prediction sample.
[0148] Specifically, the decoding apparatus can determine a prediction mode for the current block based on the received prediction information (S1210). The decoding apparatus can determine which inter prediction mode is applicable to the current block based on the prediction mode information in the prediction information.
[0149] For example, based on the merge flag, it can be determined whether the merge mode is applicable to the current block or whether the (A)MVP mode is determined. Alternatively, based on the mode index, any one of various inter prediction mode candidates can be selected. The inter prediction mode candidates can include a skip mode, a merge mode, and / or the (A)MVP mode, or can include various inter prediction modes described later.
[0150] The decoding apparatus derives motion information of the current block based on the determined inter prediction mode (S1220). For example, when the skip mode or the merge mode is applicable to the current block, the decoding apparatus can construct a merge candidate list described later and select any one of the merge candidates included in the merge candidate list. The selection can be performed based on the above-described selection information (merge index). The motion information of the current block can be derived using the motion information of the selected merge candidate. The motion information of the selected merge candidate can be used as the motion information of the current block.
[0151] As another example, when the (A)MVP mode is applied to the current block, the decoding device constructs an (A)MVP candidate list described below, and can use the motion vector of the 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 selection information (mvp flag or mvp index) described above. 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. The 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 constructing 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 candidate list construction described above can be omitted.
[0153] The decoding device 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 is 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 can include a prediction mode determination unit, a motion information derivation unit, and a prediction sample derivation unit. Based on the prediction mode information received from the prediction mode determination unit, it determines the prediction mode for the current block. Based on the information regarding the motion information received from the motion information derivation unit, it derives the motion information (such as a motion vector and / or a reference picture index, etc.) of the current block, and the prediction sample derivation unit can derive the prediction sample of the current block.
[0155] The decoding device generates a residual sample for the current block based on the received residual information (S1240). The decoding device can generate a restored sample for the current block based on the prediction sample and the residual sample, and generate a restored picture based on this (S1250). Thereafter, as described above, an in-loop filtering procedure or the like can be further applied to the restored picture.
[0156] As described above, the inter prediction procedure can include an inter prediction mode determination step, a motion information derivation step according to the determined prediction mode, and a prediction execution (generation of prediction samples) step based on the derived motion information. The inter prediction procedure can be performed by the encoding device and the decoding device as described above.
[0157] Quantization / Inverse Quantization
[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 the transform coefficients.
[0159] In the encoding and decoding of moving images / still images, the quantization rate can be changed, and the compression rate can be adjusted using the changed quantization rate. From the perspective of implementation, instead of directly using the quantization rate considering complexity, a quantization parameter (QP) can be used. For example, quantization parameters with integer values from 0 to 63 can be used, and each quantization parameter value can correspond to an actual quantization rate. Also, the quantization parameter QP Y for the luma component (luma sample) and the quantization parameter QP C for the chroma component (chroma sample) can be set to be different.
[0160] The quantization process takes the transform coefficient C as input, divides it by the quantization rate (Qstep), and based on this, the quantized transform coefficient C' can be obtained. In this case, considering the computational complexity, the quantization rate is multiplied by a scale to make it in integer form, and only the shift operation corresponding to the value of the scale value can be performed. The 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 the QP. Applying the quantization scale to the transform coefficient C, the quantized transform coefficient C' can also be derived based on this.
[0161] The inverse quantization process is the reverse process of the quantization process. By multiplying the quantized transform coefficient C' by the quantization rate Qstep, the restored transform coefficient C'' can be obtained based on this. In this case, the level scale can be derived according to the quantization parameter, and by applying the level scale to the quantized transform coefficient C', the restored transform coefficient C' can be derived based on this. The restored transform coefficient C'' may be somewhat different from the original transform coefficient C due to the loss in the transform and / or quantization process. Therefore, in the encoding device as well, inverse quantization can be performed in the same way as in the decoding device.
[0162] On the one hand, an adaptive frequency weighting quantization technique for adjusting quantization strength according to frequency can be applied. The adaptive frequency weighting quantization technique is a method of applying different quantization strengths for different frequencies. The adaptive frequency weighting quantization can apply different quantization strengths for different frequencies using a predefined quantization scaling matrix. That is, the quantization / inverse quantization process described above can be performed based on the quantization scaling matrix. For example, depending on whether the prediction mode applied to the current block is inter prediction or intra prediction in order to generate the size of the current block and / or the residual signal of the current block, different quantization scaling matrices can be used. 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 / encoded in the encoding device and signaled to the decoding device. The frequency-specific quantization scale information can be called quantization scaling information. The frequency-specific quantization scale information can include scaling list data. Based on the scaling list data, the (modified) quantization scaling matrix can be derived. Also, the frequency-specific quantization scale information can include present flag information indicating the presence or absence of the scaling list data. Or, when the scaling list data is signaled at a higher level (e.g., SPS), information indicating whether the scaling list data is modified at a lower level (e.g., PPS or tile group header, etc.) can be further included.
[0163] Transformation / Inverse Transformation
[0164] As described above, the encoding device can derive a residual block (residual sample) based on a block (predicted sample) predicted through intra / inter / IBC prediction or the like, and apply conversion and quantization to the derived residual sample to derive quantized conversion coefficients. Information (residual information) on the quantized conversion coefficients can be included in the residual coding syntax, encoded, and then output in the form of a bitstream. The decoding device can obtain information (residual information) on the quantized conversion coefficients from the bitstream, decode it, and derive the quantized conversion coefficients. The decoding device can derive a residual sample through inverse quantization / inverse conversion based on the quantized conversion coefficients. As described above, at least one of the quantization / inverse quantization and / or conversion / inverse conversion can be omitted. When the conversion / inverse conversion is omitted, the conversion coefficients can also be called coefficients or residual coefficients, or can still be called conversion coefficients for the sake of uniformity of expression. Whether the conversion / inverse conversion is omitted or not can be signaled based on a conversion skip flag (e.g., transform_skip_flag).
[0165] The conversion / inverse conversion can be performed based on a conversion kernel. For example, an MTS (multiple transform selection) scheme for performing the conversion / inverse conversion can be applied. In this case, a part of a number of conversion kernel sets can be selected and applied to the current block. The conversion kernel can be called by various terms such as a conversion matrix and a conversion type. For example, the conversion kernel set can indicate a combination of a vertical direction conversion kernel (vertical conversion kernel) and a horizontal direction conversion kernel (horizontal conversion kernel).
[0166] The above-mentioned transformation / inverse transformation can be performed in units of CU or TU. That is, the above-mentioned transformation / inverse transformation can be applied to the residual samples within a CU or the residual samples within a TU. The CU size and the TU size may be the same, or there may be a plurality of TUs within the CU region. On the other hand, the CU size generally can indicate the luma component (sample) CB size. The TU size generally can indicate the luma component (sample) TB size. The chroma component (sample) CB or TB size can be derived based on the luma component (sample) CB or TB size according to the component ratio by the color format (chroma format, for example, 4:4:4, 4:2:2, 4:2:0, etc.). The above-mentioned TU size can be derived based on maxTbSize. For example, when the above-mentioned CU size is larger than the maxTbSize, a plurality of TUs (TBs) of the maxTbSize are derived from the CU, and the transformation / inverse transformation can be performed in units of the TU (TB). The maxTbSize can be considered for judgments such as the application of various intra prediction types such as ISP. The information regarding the maxTbSize may be determined in advance, or may be generated and encoded by the encoding device and signaled to the encoding device.
[0167] Entropy Coding
[0168] As described with reference to FIG. 2 previously, part or all of the video / image information can be entropy encoded by the entropy encoding unit 190, and part or all of the video / image information described with reference to FIG. 3 can be entropy decoded by the entropy decoding unit 310. In this case, the above-mentioned video / image information can be encoded / decoded in units of syntax elements. In this document, that the information is encoded / decoded can include being encoded / decoded 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, when the input signal is not a binary value but a syntax element, the input signal can be converted into a binary value through binarization. When the input signal is already a binary value, it can be bypassed without going through binarization. Here, each binary number 0 or 1 that constitutes the binary value can be called a bin. For example, when 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 binary-valued bins can be input to a regular coding engine or a bypass coding engine. The regular coding engine can assign a context model that reflects a probability value to the bin and encode the bin based on the assigned context model. In the regular coding engine, after coding each bin, the probability model for the bin can be updated. The bins coded in this way can be called context-coded bins. The bypass coding engine can omit the procedure of estimating the probability for the input bin and the procedure of updating the probability model applied to the bin after coding. In the case of the bypass coding engine, the coding speed can be improved by applying a uniform probability distribution (e.g., 50:50) instead of assigning a context to code the input bin. The bins coded in this way can be called bypass bins. The context model can be assigned and updated for each bin coded by context coding (regular coding), and the context model can be indicated based on ctxidx or ctxInc. ctxidx can be derived based on ctxInc. Specifically, for example, the context index (ctxidx) that refers to the context model for each of the regularly coded bins can be derived as the sum of the context index increment (ctxInc) and the context index offset (ctxIdxOffset). Here, the ctxInc can be derived to be different for each bin. The ctxIdxOffset can be represented by the lowest value of the ctxIdx. The lowest value of the ctxIdx can be called the initial value (initValue) of the ctxIdx.The ctxIdxOffset is generally a value used for the distinction from the context model for other syntax elements, and the context model for one syntax element can be distinguished / derived based on ctxinc.
[0171] It is possible to determine whether to perform encoding via the normal coding engine or the bypass coding engine in the entropy encoding procedure, and switch the coding path. Entropy decoding can perform the same process as entropy encoding in reverse.
[0172] The above-mentioned entropy coding can be performed as shown in FIGS. 14 and 15, for example. Referring to FIGS. 14 and 15, an encoding device (entropy encoding unit) can perform an entropy encoding procedure for image / video information. The image / video information can include partitioning-related information, prediction-related information (e.g., inter / intra prediction distinction information, intra prediction mode information, inter prediction mode information, etc.), residual information, in-loop filtering-related information, etc., or can include various syntax elements related thereto. The entropy coding can be performed on a syntax element-by-syntax element basis. Steps S1410 to S1420 in FIG. 14 can be performed by the entropy encoding unit 190 of the encoding device shown in FIG. 2 above.
[0173] The encoding device can perform binarization on the target syntax element (S1410). Here, the binarization can be based on various binarization methods such as Truncated Rice binarization process, Fixed-length binarization process, etc., and the binarization method for the target syntax element can be defined in advance. The binarization procedure can be performed by the binarization unit 191 within the entropy encoding unit 190.
[0174] The symbolization device can perform entropy coding on the target syntax element (S1420). The symbolization device can perform coding based on a normal coding base (context base) or a bypass coding base on the bit 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 its output can be included in the bit stream. The entropy coding procedure can be performed by the entropy coding processing unit 192 in the entropy coding unit 190. As described above, the bit stream can be transmitted to the decoding device via a (digital) storage medium or a network.
[0175] Referring to FIGS. 16 and 17, the decoding device (entropy decoding unit) can decode the encoded image / video information. The image / video information can include partitioning related information, prediction related information (e.g., inter / intra prediction division information, intra prediction mode information, inter prediction mode information, etc.), residual information, in-loop filtering related information, etc., or can include various syntax elements related thereto. The entropy coding can be performed on a syntax element unit basis. S1610 to S1620 can be performed by the entropy decoding unit 210 of the decoding device in FIG. 3 described above.
[0176] The decoding device can perform binarization on the target syntax element (S1610). Here, the binarization can be based on various binarization methods such as Truncated Rice binarization process, Fixed-length binarization process, etc., and the binarization method for the target syntax element can be defined in advance. The decoding device can derive an available bin string (bin string candidate) for the available values of the target syntax element through the binarization procedure. The binarization procedure can be performed by the binarization unit 211 in the entropy decoding unit 210.
[0177] The decoding device can perform entropy decoding on the target syntax element (S1620). The decoding device can compare the derived bin string with the available bin string for the syntax element while sequentially decoding and parsing each bin for the target syntax element from the input bits in the bitstream. If the derived bin string is the same as one of the available bin strings, the value corresponding to the bin string can be derived as the value of the syntax element. If not, after further parsing the next bit in the bitstream, the above-described procedure can be performed again. Through such a process, it is possible to signal the information using variable-length bits without using the start bit or end bit for specific information (specific syntax element) in the bitstream. As a result, relatively fewer bits can be allocated for lower values, and the overall coding efficiency can be improved.
[0178] The decoding device can perform context-based or bypass-based decoding for each bin in the bitstream based on an entropy coding technique such as CABAC or CAVLC. The entropy decoding procedure can be performed by an entropy decoding processing unit 212 in the entropy decoding unit 210. The bitstream can contain various information for image / video decoding as described above. As described above, the bitstream can be transmitted to the decoding device via a (digital) storage medium or a network.
[0179] In this document, a table (syntax table) containing syntax elements can be used to indicate the signaling of information from the encoding device to the decoding device. The order of the syntax elements in the table containing the syntax elements used in this document can indicate the parsing order of the syntax elements from the bitstream. The encoding device can configure and encode the syntax table so that the syntax elements can be parsed by the decoding device in accordance with the parsing order, and the decoding device can parse and decode the syntax elements of the syntax table from the bitstream in accordance with the parsing order to obtain the values of the syntax elements.
[0180] General Image / Video Coding Procedure
[0181] In image / video coding, the pictures constituting the image / video can be encoded / decoded according to a series of decoding orders. The picture order corresponding to the output order of the decoded pictures can be set to be different from the decoding order. Based on this, during inter prediction, not only forward prediction but also backward prediction can be performed.
[0182] FIG. 18 shows an example of a schematic picture decoding procedure to which the embodiments of this document are applicable. In FIG. 18, S1810 can be performed by the entropy decoding unit 210 of the decoding apparatus described above with reference to FIG. 3, S1820 can be performed by a prediction unit including an intra prediction unit 265 and an inter prediction unit 260, S1830 can be performed by a residual processing unit including an inverse quantization unit 220 and an inverse transform unit 230, S1840 can be performed by an addition unit 235, and S1850 can be performed by a filtering unit 240. S1810 can include the information decoding procedure described in this document, S1820 can include the inter / intra prediction procedure described in this document, S1830 can include the residual processing procedure described in this document, S1840 can include the block / picture restoration procedure described in this document, and S1850 can include the in-loop filtering procedure described in this document.
[0183] Referring to FIG. 18, the picture decoding procedure can generally include, as shown in the description of FIG. 3, an image / video information acquisition procedure (S1810) (by decoding) from the bit stream, a picture restoration procedure (S1820 to S1840), and an in-loop filtering procedure (S1850) for the restored picture. The picture restoration procedure can be performed based on the predicted samples and residual samples obtained through the inter / intra prediction (S1820) and residual processing (S1830, inverse quantization and inverse transformation for the quantized transform coefficients) processes described in this document. Through the in-loop filtering procedure for the restored picture generated by the picture restoration procedure, a modified restored picture can be generated, and the modified restored picture can be output as the decoded picture, and can also be stored in the decoded picture buffer or memory 250 of the decoding device and used as a reference picture in the inter prediction procedure during the decoding of subsequent pictures. In some cases, the in-loop filtering procedure can be omitted. In this case, the restored picture can be output as the decoded picture, and can also be stored in the decoded picture buffer or memory 250 of the decoding device and used as a reference picture in the inter prediction procedure during the decoding of subsequent pictures. The in-loop filtering procedure (S1850) can include, as described above, a deblocking filtering procedure, a SAO (sample adaptive offset) procedure, an ALF (adaptive loop filter) procedure, and / or a bilateral filter procedure, etc., and some or all of them can be omitted. Also, one or some of the deblocking filtering procedure, the SAO (sample adaptive offset) procedure, the ALF (adaptive loop filter) procedure, and the bilateral filter procedure can be sequentially applied, or all of them can be sequentially applied.For example, after a deblocking filtering procedure is applied to a restored picture, the SAO procedure can be performed. Or, for example, after a deblocking filtering procedure is applied to a restored picture, the ALF procedure can be performed. This can be similarly performed in an encoding apparatus.
[0184] FIG. 19 shows an example of a schematic picture encoding procedure to which the embodiments of this document can be applied. In FIG. 19, S1910 can be performed by a prediction unit including the intra prediction unit 185 or the inter prediction unit 180 of the encoding apparatus described above with reference to FIG. 2, S1920 can be performed by a residual processing unit including the conversion unit 120 and / or the quantization unit 130, and S1930 can be performed by the entropy encoding unit 190. S1910 can include the inter / intra prediction procedures described in this document, S1920 can include the residual processing procedures described in this document, and S1930 can include the information encoding procedures described in this document.
[0185] Referring to FIG. 19, the picture encoding procedure can include not only a procedure of schematically encoding information for picture restoration (e.g., prediction information, residual information, partitioning information, etc.) and outputting it in the form of a bitstream, as shown in the description of FIG. 2, but also a procedure of generating a restored picture for the current picture, and a procedure (optional) of applying in-loop filtering to the restored picture. The encoding device can derive (modified) residual samples from the quantized transform coefficients via the inverse quantization unit 140 and the inverse transform unit 150, and generate a restored picture based on the prediction samples that are the output of S1910 and the (modified) residual samples. The restored picture generated in this way can be the same as the restored picture generated by the decoding device described above. Through the in-loop filtering procedure for the restored picture, a modified restored picture can be generated, which can be stored in the decoded picture buffer or memory 170, and can be used as a reference picture in the inter-prediction procedure when encoding subsequent pictures, similar to the case of the decoding device. As described above, in some cases, part or all of the in-loop filtering procedure can be omitted. When the in-loop filtering procedure is performed, (in-loop) filtering-related information (parameters) can be encoded by the entropy encoding unit 190 and output in the form of a bitstream, and the decoding device can perform the in-loop filtering procedure in the same way as the encoding device based on the filtering-related information.
[0186] Through such in-loop filtering procedures, it is possible to reduce noises generated during image / video coding, such as blocking artifacts and ringing artifacts, and improve subjective / objective visual quality. Also, by performing the in-loop filtering procedures in both the encoding device and the decoding device, the encoding device and the decoding device can derive the same prediction result, enhance the reliability of picture coding, and reduce the amount of data to be transmitted for picture coding.
[0187] As described above, picture restoration procedures can be performed not only in the decoding device but also in the encoding device. Restoration blocks can be generated based on intra prediction / inter prediction for each block unit, and a restored picture including the restoration blocks can be generated. When the current picture / slice / tile group is an I picture / slice / tile group, the blocks included in the current picture / slice / tile group can be restored based on intra prediction only. On the other hand, when the current picture / slice / tile group is a P or B picture / slice / tile group, the blocks included in the current picture / slice / tile group can be restored based on intra prediction or inter prediction. In this case, inter prediction can be applied to some blocks within the current picture / slice / tile group, and intra prediction can also be applied to some of the remaining blocks. The color components of a picture can include a luma component and a chroma component, and unless explicitly restricted in this document, the methods and examples proposed in this document can be applied to the luma component and the chroma component.
[0188] Examples of Coding Hierarchy and Structure
[0189] The video / image coded according to this document can be processed, for example, according to the coding hierarchy and structure described later.
[0190] FIG. 20 is a diagram showing a hierarchical structure for a coded image. The coded image can be divided into a VCL (video coding layer) that performs decoding processing of the image and handles itself, a lower-level system that transmits and stores the encoded information, and a NAL (network abstraction layer) that exists between the VCL and the lower-level system and is responsible for network adaptation functions.
[0191] In the VCL, VCL data including compressed image data (slice data) can be generated, or a parameter set including information such as a Picture Parameter Set (PPS), a Sequence Parameter Set (SPS), a Video Parameter Set (VPS), or a Supplemental Enhancement Information (SEI) message that is additionally required for decoding processing of the image can be generated.
[0192] In the NAL, a NAL unit can be generated by adding header information (NAL unit header) to the RBSP (Raw Byte Sequence Payload) generated in the VCL. At this time, the RBSP refers to slice data, parameter sets, SEI messages, etc. generated in the VCL. The NAL unit header can include NAL unit type information specified by the RBSP data included in the corresponding NAL unit.
[0193] As shown in the figure, the NAL unit can be divided into a VCL NAL unit and a Non-VCL NAL unit by the RBSP generated in the VCL. The VCL NAL unit can mean a NAL unit including information (slice data) for the image, and the Non-VCL NAL unit can mean a NAL unit including information (parameter set or SEI message) required for decoding the image.
[0194] The above-mentioned VCL NAL units and Non-VCL NAL units can be transmitted via 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 the H.266 / VVC file format, RTP (Real-time Transport Protocol), TS (Transport Stream), etc., and transmitted via various networks.
[0195] As described above, the NAL unit type can be specified according to the RBSP data structure included in the NAL unit, and the information for such NAL unit type can be stored in the NAL unit header and signaled.
[0196] For example, it can be roughly classified into VCL NAL unit type and Non-VCL NAL unit type according to whether the NAL unit contains information (slice data) for an image. The VCL NAL unit type can be classified according to the nature and type of the picture included in the VCL NAL unit, and the Non-VCL NAL unit type can be classified according to the type of parameter set, etc.
[0197] The following lists an example of the NAL unit type specified by the type of parameter set / information included in the Non-VCL NAL unit type, etc.
[0198] - DCI (Decoding capability information) NAL unit: The type for the NAL unit containing DCI
[0199] - VPS (Video Parameter Set) NAL unit: The type for the NAL unit containing VPS
[0200] -SPS (Sequence Parameter Set) NAL unit: Type for NAL unit containing SPS
[0201] -PPS (Picture Parameter Set) NAL unit: Type for NAL unit containing PPS
[0202] -APS (Adaptation Parameter Set) NAL unit: Type for NAL unit containing APS
[0203] -PH (Picture header) NAL unit: Type for NAL unit including PH
[0204] The above-mentioned NAL unit types have syntax information for the NAL unit types, and the syntax information can be stored in the NAL unit header and signaled. For example, the syntax information can be nal_unit_type, and the NAL unit type can be specified by the value of nal_unit_type.
[0205] On the other hand, as described above, one picture can include a plurality of slices, and one slice can include a slice header and slice data. In this case, one picture header can be further added to the plurality of slices (slice header and slice data set) within one picture. The picture header (picture header syntax) can include information / parameters that are commonly applicable to the picture.
[0206] The slice header (slice header syntax) can include information / parameters applicable in common to the slice. The APS (APS syntax) or PPS (PPS syntax) can include information / parameters applicable in common to one or more slices or pictures. The SPS (SPS syntax) can include information / parameters applicable in common to one or more sequences. The VPS (VPS syntax) can include information / parameters applicable in common to multiple layers. The DCI (DCI syntax) can include information / parameters applicable in common to video in general. The DCI can include information / parameters related to decoding capability. In this document, the high level syntax (HLS) can include at least one of the APS syntax, PPS syntax, SPS syntax, VPS syntax, DCI syntax, picture header syntax, and slice header syntax. On the other hand, in this document, the low level syntax (LLS) can 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 encoded by an encoding device and signaled in bitstream format to a decoding device can include not only information related to partitioning within a picture, intra / inter prediction information, residual information, in-loop filtering information, etc., but also the information of the slice header, the information of the picture header, the information of the APS, the information of the PPS, the information of the SPS, the information of the VPS, and / or the information of the DCI. Further, the image / video information can further include general constraint information and / or the information of the NAL unit header.
[0208] Picture Partitioning Using Sub - picture, Slice, and Tile
[0209] One picture can be divided into at least one tile row and at least one tile column. One tile is composed of a sequence of CTUs and can cover a rectangular area of one picture.
[0210] A slice can be composed of an integer number of consecutive complete CTU rows or an integer number of complete tiles within one picture.
[0211] Two modes can be supported for a slice. One can be called the raster-scan slice mode, and the other can be called the rectangular slice mode. In the raster-scan slice mode, one slice can include a complete tile sequence that exists in the tile raster-scan order in one picture. In the rectangular slice mode, one slice can include a number of complete tiles assembled to form a rectangular area of the picture, or a continuous number of complete CTU rows of one tile assembled to form a rectangular area of the picture. The tiles within a rectangular slice can be scanned in the tile raster-scan order within the rectangular area corresponding to the slice. A sub-picture can include at least one slice assembled to cover a rectangular area of the picture.
[0212] To describe the division relationship of the picture in more detail, refer to FIGS. 21 to 24 for description. FIGS. 21 to 24 show examples of dividing a picture using tiles, slices, and sub-pictures. FIG. 21 shows an illustration of a picture divided into 12 tiles and 3 raster-scan slices. FIG. 22 shows an illustration of a picture divided into 24 tiles (6 tile columns and 4 tile rows) and 9 rectangular slices. FIG. 23 shows an illustration of a picture divided into 4 tiles (2 tile columns and 2 tile rows) and 4 rectangular slices.
[0213] FIG. 24 shows an illustration of dividing a picture into sub - pictures. In FIG. 24, the picture is divided into 12 left - hand tiles each covering one slice consisting of 4×4 CTUs and 6 right - hand tiles each covering two vertically - aggregated slices consisting of 2×2 CTUs. One picture is divided into 24 slices and 24 sub - pictures which overall have different areas from each other. In the illustration of FIG. 24, individual slices correspond to individual sub - pictures.
[0214] HLS (High level syntax) Signaling and Semantics
[0215] As described above, HLS can be encoded and / or signaled for video and / or image encoding. As described above, video / image information herein can be included in HLS. And the image / video encoding method can be performed based on such image / video information.
[0216] Picture Header and Slice Header
[0217] The encoded picture can be composed of at least one slice. The parameters describing the encoded picture can be signaled within a picture header (PH), or the parameters describing the slice can be signaled within a slice header (SH). The PH can be transmitted as the NAL unit type for it. The SH can be provided at the start point of the NAL unit constituting the payload of the slice (e.g., slice data).
[0218] Picture Partitioning Signaling
[0219] In one embodiment, a picture can be partitioned into a plurality of 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] FIG. 25 shows an example of the syntax for a sequence parameter set. In the syntax of FIG. 25, the description of the syntax elements is as follows.
[0221] The subpic_info_present_flag syntax element can indicate whether sub - picture information exists. For example, the first value of subpic_info_present_flag (e.g., 0) can indicate that sub - picture information for the CLVS (coded layer video sequence) does not exist in the bit - stream and that only one sub - picture exists in an individual picture of the CLVS. The second value of subpic_info_present_flag (e.g., 1) can indicate that sub - picture information for the CLVS (coded layer video sequence) exists in the bit - stream and that at least one sub - picture belonging to an individual picture of the CLVS may exist.
[0222] Here, CLVS can mean a layer of the coded video sequence. CLVS can be a sequence of PUs having the same nuh_layer_id as the PU of an IRAP (intra random access point) picture or a GDR (gradual decoding refresh) picture that is not output until a reconstructed signal is generated.
[0223] The syntax element sps_num_subpics_minus1 can indicate the number of sub-pictures. For example, the value obtained by adding 1 to this can indicate the number of sub-pictures belonging to an individual picture of CLVS. The value of sps_num_subpics_minus1 can have a value 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 does not exist, the value of sps_num_subpics_minus1 can be derived to be 0.
[0224] The value 1 of the syntax element sps_independent_subpics_flag can indicate that intra prediction is not performed across the boundaries of sub-pictures within CLVS, inter prediction is not performed, and the in-loop filtering operation is not performed.
[0225] The value 0 of the syntax element sps_independent_subpics_flag can indicate that inter prediction or the in-loop filtering operation can be performed across the boundaries of sub-pictures within CLVS. If the value of sps_independent_subpics_flag does not exist, the value of sps_independent_subpics_flag can be derived to be 0.
[0226] The syntax element subpic_ctu_top_left_x[i] can indicate the horizontal position of the top - leftmost CTU of the i - th sub - picture in units of CtbSizeY. The length of the subpic_ctu_top_left_x[i] syntax element can be Ceil(Log2((pic_width_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. If subpic_ctu_top_left_x[i] does not exist, its value can be inferred to be 0. Here, pic_width_max_in_luma_samples can be a variable indicating the maximum width of the picture represented in luma samples. CtbSizeY can be a variable indicating the size of the CTB in luma samples. CtbLog2SizeY can be a variable indicating the value obtained by taking the log2 of the size of the CTB in luma samples.
[0227] The syntax element subpic_ctu_top_left_y[i] can indicate the vertical position of the top - leftmost CTU of the i - th sub - picture in units of CtbSizeY. The length of the subpic_ctu_top_left_x[i] syntax element can be Ceil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1)>>CtbLog2SizeY)) bits. Here, pic_height_max_in_luma_samples can be a variable indicating the maximum height of the picture represented in luma samples. If subpic_ctu_top_left_y[i] does not exist, its value can be inferred to be 0.
[0228] The value obtained by adding 1 to the syntax element subpic_width_minus1[i] indicates the width of the first subpicture, which can be in units of CtbSizeY. The length of subpic_width_minus1[i] can be Ceil(Log2((pic_width_max_in_luma_samples + CtbSizeY - 1) >> CtbLog2SizeY)) bits long. If the value of subpic_width_minus1[i] does not exist, the value of subpic_width_minus1[i] can be calculated as ((pic_width_max_in_luma_samples + CtbSizeY - 1) >> CtbLog2SizeY) - subpic_ctu_top_left_x[i] - 1.
[0229] The value obtained by adding 1 to the syntax element subpic_height_minus1[i] indicates the height of the first subpicture, which can be in units of CtbSizeY. The length of subpic_height_minus1[i] can be Ceil(Log2((pic_height_max_in_luma_samples + CtbSizeY - 1) >> CtbLog2SizeY)) bits long. If subpic_height_minus1[i] does not exist, the value of subpic_height_minus1[i] can be calculated as ((pic_height_max_in_luma_samples + CtbSizeY - 1) >> CtbLog2SizeY) - subpic_ctu_top_left_y[i] - 1.
[0230] The value 1 of 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 one picture except for the in-loop filtering operation. The value 0 of subpic_treated_as_pic_flag[i] indicates that the i-th subpicture of each coded picture in the CLVS is not treated as one picture except for the in-loop filtering operation. If subpic_treated_as_pic_flag[i] does not exist, the value of subpic_treated_as_pic_flag[i] can be set to the value of sps_independent_subpics_flag.
[0231] The value 1 of the syntax element loop_filter_across_subpic_enabled_flag[i] can indicate that in-loop filtering can be performed across the boundary of the i-th subpicture within each coded picture in the CLVS. The value 0 of loop_filter_across_subpic_enabled_flag[i] can indicate that in-loop filtering is not performed across the boundary of the i-th subpicture within each coded picture in the CLVS. If the value of loop_filter_across_subpic_enabled_flag[i] does not exist, the value of loop_filter_across_subpic_enabled_flag[i] can be determined as 1 - sps_independent_subpics_flag.
[0232] Figure 26 shows an example of the syntax of the picture parameter set. In the syntax of Figure 26, the syntax elements are as follows.
[0233] The first value of the syntax element no_pic_partition_flag (e.g., 0) can indicate that each picture referring to the PPS can be partitioned into two or more tiles or slices. The second value of no_pic_partition_flag (e.g., 1) can indicate that picture partitioning is not applied to each picture referring to the PPS.
[0234] The value obtained by adding 5 to the syntax element pps_log2_ctu_size_minus5 can indicate the luma coding block size of each CTU. The value of pps_log2_ctu_size_minus5 can be restricted to be equal to sps_log2_ctu_size_minus5 which indicates the same value in the sequence parameter set.
[0235] The value obtained by adding 1 to the syntax element num_exp_tile_columns_minus1 indicates the number of widths of the tiles provided explicitly. The value of num_exp_tile_columns_minus1 can have a value from 0 to PicWidthInCtbsY - 1. When the value of no_pic_partition_flag is 1, the value of num_exp_tile_columns_minus1 can be induced to 0.
[0236] The value obtained by adding 1 to the syntax element num_exp_tile_rows_minus1 can indicate the number of heights of the tiles provided explicitly. The value of num_exp_tile_rows_minus1 can have a value from 0 to PicHeightInCtbsY - 1. When the value of no_pic_partition_flag is 1, the value of num_exp_tile_rows_minus1 can be induced to 0.
[0237] The value obtained by adding 1 to the syntax element tile_column_width_minus1[i] can indicate the width of the i-th tile column in CTB units. Here, i can have values from 0 to num_exp_tile_columns_minus1 - 1. tile_column_width_minus1[num_exp_tile_columns_minus1] can be used to derive the width of tiles whose tile column index is num_exp_tile_columns_minus1 or greater. The value of tile_column_width_minus1[i] can 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] can be set to the value of PicWidthInCtbsY - 1.
[0238] The value obtained by adding 1 to the syntax element tile_row_height_minus1[i] can indicate the height of the i-th tile row in CTB units. Here, i can have values from 0 to num_exp_tile_rows_minus1 - 1. tile_row_height_minus1[num_exp_tile_rows_minus1] can be used to derive the height of tiles whose tile row index is num_exp_tile_rows_minus1 or greater. The value of tile_row_height_minus1[i] can 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] can be set to the value of PicHeightInCtbsY - 1.
[0239] A value of 0 for the syntax element rect_slice_flag can indicate that tiles within each slice are scanned in raster scan order and slice information is not signaled via the picture parameter set. A value of 1 for rect_slice_flag can indicate that tiles within each slice cover a rectangular region of the picture and slice information is signaled via the picture parameter set. Here, the variable NumTilesInPic can indicate the number of tiles present in the picture. If rect_slice_flag does not exist in the bitstream, the value of rect_slice_flag can be inferred to be 1. On the other hand, if the value of subpic_info_present_flag is 1, the value of rect_slice_flag can be forced to be 1.
[0240] A value of 1 for the syntax element single_slice_per_subpic_flag can indicate that each subpicture is composed of only one rectangular slice. A value of 0 for single_slice_per_subpic_flag can indicate that each subpicture can be composed of at least one rectangular slice. If single_slice_per_subpic_flag does not exist in the bitstream, the value of single_slice_per_subpic_flag can be inferred to be 0.
[0241] The value obtained by adding 1 to the syntax element num_slices_in_pic_minus1 can indicate the number of slices within a picture. A value of 0 for the syntax element tile_idx_delta_present_flag can indicate that the tile_idx_delta[i] syntax element does not exist in the picture parameter set, and all pictures that refer to the picture parameter set can be partitioned into square slice rows and square slice columns in slice raster scan order. A value of 1 for tile_idx_delta_present_flag can indicate that the tile_idx_delta[i] syntax element can exist in the picture parameter set, and all square slices belonging to pictures that refer to the picture parameter set can be identified in the order indicated by the value of tile_idx_delta[i] for increasing i values. If the tile_idx_delta_present_flag does not exist, the value of the tile_idx_delta_present_flag can be inferred to be 0.
[0242] The value obtained by adding 1 to the syntax element slice_width_in_tiles_minus1[i] can indicate the width of the i-th square slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] can 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] can be inferred to be 0. Here, the variable NumTileColumns can be a variable indicating the number of tile columns present in the current picture. Here, the variable NumTileRows can be a variable indicating the number of tile rows present in the current picture.
[0243] The value obtained by adding 1 to the syntax element slice_height_in_tiles_minus1[i] can indicate the height of the i-th square 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] can have a value from 0 to NumTileRows - 1. When 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] can be derived as in the following formula.
[0244] [Formula 1]
[0245] slice_height_in_tiles_minus1[i]=NumTileRows==1?0:slice_height_in_tiles_minus1[i-1]
[0246] SliceTopLeftTileIdx can be a variable indicating the index of the top-leftmost tile of the slice.
[0247] The syntax element num_exp_slices_in_tile[i] can indicate the number of slice heights explicitly provided for the slices within the tile containing the i-th slice (e.g., the tile having the same tile index as SliceTopLeftTileIdx[i]). The value of num_exp_slices_in_tile[i] can have a value 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] can be induced to be 0. Here, RowHight[i] can 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 value obtained by adding 1 to the syntax element exp_slice_height_in_ctus_minus1[i][j] can indicate the height of the j-th square slice within the tile containing the i-th slice in units of CTU rows. The value of exp_slice_height_in_ctus_minus1[i][j] can have a value from 0 to RowHeight[SliceTopLeftTileIdx[i] / NumTileColumns]-1.
[0249] The variable NumSlicesInTile[i] can indicate the number of slices present within the tile containing the i-th slice.
[0250] The syntax element tile_idx_delta[i] can 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] can have a value from -NumTilesInPic + 1 to NumTilesInPic - 1. If the value of tile_idx_delta[i] does not exist in the bitstream, the value of tile_idx_delta[i] can be inferred to be 0. If the value of tile_idx_delta[i] exists, the value of tile_idx_delta[i] can be forced to have a non-zero value.
[0251] The value 1 of the syntax element loop_filter_across_tiles_enabled_flag can indicate that the in-loop filtering operation can operate across tile boundaries within a picture that refers to a picture parameter set. The value 0 of loop_filter_across_tiles_enabled_flag can indicate that the in-loop filtering operation does not operate across tile boundaries of a picture that refers to a picture parameter set.
[0252] The in-loop filtering operation can include the filtering operation of any one of the deblocking filter, the SAO (sample adaptive offset) filter, and the ALF (adaptive loop filter). If loop_filter_across_tiles_enabled_flag does not exist in the bitstream, the value of loop_filter_across_tiles_enabled_flag can be inferred to be 1.
[0253] A value of 1 for the syntax element loop_filter_across_slices_enabled_flag can indicate that the in-loop filtering operation can operate across slice boundaries within a picture that refers to a picture parameter set. A value of 0 for loop_filter_across_slices_enabled_flag can indicate that the in-loop filtering operation does not operate across slice boundaries of a picture that refers to a picture parameter set. The in-loop filtering operation can include any one of the filtering operations of a deblocking filter, a SAO (sample adaptive offset) filter, and an ALF (adaptive loop filter). If loop_filter_across_slices_enabled_flag does not exist in the bitstream, the value of loop_filter_across_slices_enabled_flag can be inferred to be 1.
[0254] Figure 27 shows an example of the syntax of a slice header. In the syntax of Figure 27, the syntax elements are as follows.
[0255] The syntax element slice_subpic_id can indicate the subpicture ID of the subpicture that includes the slice. If the value of slice_subpic_id exists in the bitstream, the value of the variable CurrSubpicIdx can be inferred to be the value of CurrSubpicIdx for which SubpicIdVal[CurrSubpicIdx] has the value of slice_subpic_id. Otherwise (if slice_subpic_id does not exist in the bitstream), the value of CurrSubpicIdx can be inferred to be 0. The length of slice_subpic_id can be sps_subpic_id_len_minus1 + 1 bits long. Here, NumSlicesInSubpic[i] can be a variable indicating the number of slices within the i-th subpicture. The variable CurrSubpicIdx can indicate the index of the current subpicture.
[0256] The syntax element slice_address indicates the slice address of a slice. If slice_address is not provided, the value of slice_address can be inferred to be 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 within 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 sub - picture level slice index of the slice, the length of the slice_address syntax element is Ceil(Log2(NumSlicesInSubpic[CurrSubpicIdx])) bits long, and the slice_address syntax element 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. The decoding apparatus can perform decoding regardless of the value of sh_extra_bit[i]. For this purpose, the encoding apparatus must generate a bitstream such that decoding is performed regardless of the sh_extra_bit[i] value. Here, NumExtraShBits can be a variable indicating the number of additional bits required to signal information in the slice header.
[0259] The value obtained by adding 1 to the syntax element num_tiles_in_slice_minus1, if it exists, can indicate the number of tiles in a slice. The value of num_tiles_in_slice_minus1 can have a value from 0 to NumTilesInPic - 1.
[0260] The variable NumCtusInCurrSlice representing the number of CTUs in the current slice, and the list CtbAddrInCurrSlice[i] indicating the picture raster scan address of the i-th CTB in the slice (where i has a value from 0 to NumCtusInCurrSlice - 1) can be derived as follows.
[0261] [Table 2]
[0262] The variables SubpicLeftBoundaryPos, SubpicTopBoundaryPos, SubpicRightBoundaryPos, and SubpicBotBoundaryPos can be derived as follows according to the following algorithm.
[0263] [Table 3]
[0264] Improvement of Picture Partitioning Signaling
[0265] The signaling related to the above-mentioned picture partitioning has a problem that unnecessary information is signaled when the slice is a rectangular slice. For example, when the slice is a rectangular (e.g., rectangular) slice, the width of an individual slice can be signaled in tile units. However, when the tile at the top-leftmost position of the slice is the tile in the last tile column, the width of the slice cannot be other values than one tile unit. For example, in such a case, the width of the slice can only have the width value induced in one tile unit. Therefore, the width of such a slice can either not be signaled or be limited to one tile unit.
[0266] Similarly, when the slice is a rectangular (e.g., rectangular) slice, the width of an individual slice can be signaled in tile units. However, when the tile at the top-leftmost position of the slice is the tile in the last tile row, the height of the slice cannot be other values than one tile unit. Therefore, the height of such a slice can either not be signaled or be limited to one tile unit.
[0267] To improve the above-mentioned problems, the following solutions can be applied. The following embodiments can be applied when the slice is a rectangular (e.g., rectangular) slice and the width and / or height of an individual slice are signaled in tile units. The following solutions may be applied individually to each other, or may be used in combination with at least one other embodiment.
[0268] Solution 1. When the first tile of a rectangular slice (e.g., the tile at the upper left corner) is the tile located in the last tile column of the picture, the signaling of the width of the slice can be not provided. In such a case, the width of the slice can be induced to one tile unit.
[0269] For example, the syntax element slice_width_in_tiles_minus1[i] may not be present in the bitstream. The value of the syntax element slice_width_in_tiles_minus1[i] can be derived to be 0.
[0270] Solution 2. Even when the first tile of the rectangular slice (e.g., the tile at the upper left corner) is a tile located in the last tile column of the picture, signaling of the slice width can be provided. However, in such a case, the slice width can be restricted to one-tile units.
[0271] For example, the syntax element slice_width_in_tiles_minus1[i] can be present in the bitstream and thereby can be parsed. However, the value of the syntax element slice_width_in_tiles_minus1[i] can be restricted to 0.
[0272] Solution 3. When the first tile of the rectangular slice (e.g., the tile at the upper left corner) is a tile located in the last tile row of the picture, signaling of the slice height cannot be provided. In such a case, the slice height can be derived to be one-tile units.
[0273] For example, the syntax element slice_height_in_tiles_minus1[i] may not be present in the bitstream. The value of the syntax element slice_height_in_tiles_minus1[i] can be derived to be 0.
[0274] Solution 4. When the first tile of the rectangular slice (e.g., the tile at the upper left corner) is a tile located in the last tile row of the picture, signaling of the slice height can be provided. In such a case, the slice height can be restricted to one-tile units.
[0275] For example, the syntax element slice_height_in_tiles_minus1[i] can exist in the bitstream and thus can be parsed. However, the value of the syntax element slice_height_in_tiles_minus1[i] can be restricted to be equal to 0.
[0276] In one embodiment, the foregoing embodiments can be applied to the encoding and decoding methods as shown in FIGS. 28 and 29. An encoding apparatus according to one embodiment can derive slices and / or tiles within a current picture (S2810). Then, the encoding apparatus can encode the current picture based on the derived slices and / or tiles (S2820).
[0277] Similarly, a decoding apparatus according to one embodiment can obtain video / image information from the bitstream (S2910). Then, the decoding apparatus can derive slices and / or tiles existing within the current picture based on the video / image information (including information regarding slices and / or tiles) (S2920). Then, the decoding apparatus can restore and / or decode the current picture based on the slices and / or tiles (S2930).
[0278] For the foregoing processing of the encoding apparatus and the decoding apparatus, the information regarding slices and / or tiles can include the foregoing information and syntax. The video or image information can include HLS. HLS can include information regarding slices and / or information regarding tiles. HLS can further include information regarding sub-pictures. The information regarding slices can include information identifying at least one slice belonging to the current picture. And the information regarding tiles can include information identifying at least one tile belonging to the current picture. The information regarding sub-pictures can include information identifying at least one sub-picture belonging to the current picture. Within one picture, there can exist tiles including at least one slice.
[0279] For example, in S2930 of FIG. 29, restoring and / or decrypting the current picture can be performed based on the induced slice and / or tile. By partitioning one picture, the effectiveness of encoding and decoding can be obtained from various viewpoints.
[0280] For example, a picture can be partitioned for parallel processing and error resilience. In the case of parallel processing, some embodiments performed on a multi-core CPU can require that the source picture be divided into tiles and / or slices. Individual slices and / or tiles can be processed in parallel on different cores. This is very efficient for performing high-resolution real-time video coding that cannot be processed by other methods. Furthermore, such partitioning has the advantage of reducing the memory constraints by reducing the information shared between tiles. Since tiles can be distributed to different threads while parallel processing is being performed, parallel architectures are useful by virtue of their partitioning mechanism. For example, in the process of deriving candidate motion information in inter prediction, adjacent blocks existing in different slices and / or tiles can be restricted from being used. The contact information used for encoding information and / or syntax elements can be initialized for each individual slice and / or tile.
[0281] In the case of error resilience, it can be caused by applying unequal error protection (UEP) to the encoded tiles and / or slices.
[0282] Example 1
[0283] Hereinafter, embodiments based on the above-described Solution 1 and Solution 3 will be described. The following embodiments can be applied to improve encoding / decoding techniques such as the VVC specification.
[0284] In one embodiment, the syntax table for signaling the picture parameter set can be set as shown in FIG. 30. In another embodiment, the syntax table for signaling the picture parameter set can be set as shown in FIG. 31.
[0285] In the embodiment of FIG. 30, for i having a value from 0 to num_slices_in_pic_minus1 - 1, when the value of NumTileColumns is greater than 1 and the value of SliceTopLeftTileIdx[i]%NumTileColumns is not NumTileColumns - 1, the syntax element slice_width_in_tiles_minus1[i] can be sequentially obtained for i.
[0286] Then, for i having a value from 0 to num_slices_in_pic_minus1 - 1, when the value of NumTileRows is greater than 1, 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 FIGS. 30 and 31, the syntax element slice_width_in_tiles_minus1[i] can be a syntax element indicating the width of the i-th square slice. For example, the value obtained by adding 1 to slice_width_in_tiles_minus1[i] can indicate the width of the i-th square slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] can 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] can be derived to be 0.
[0288] When the definition of slice_width_in_tiles_minus1[i] is changed in this way, the existing restriction that "when 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] is derived to be 0" can be omitted. As a result, as in the embodiment of FIG. 31, the condition "NumTileColumns > 1" can be removed from the picture parameter set syntax.
[0289] slice_height_in_tiles_minus1[i] can be a syntax element indicating the height of the i-th square slice. For example, when the value of num_exp_slices_in_tile[i] is 0, the value obtained by adding 1 to slice_height_in_tiles_minus1[i] can indicate the height of the i-th square slice in units of tile rows. The value of slice_height_in_tiles_minus1[i] can have a value 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 as 0.
[0292] Otherwise (for example, 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] can be derived from slice_height_in_tiles_minus1[i - 1]. For example, the value of slice_height_in_tiles_minus1[i] can be set to slice_height_in_tiles_minus1[i - 1], which is the height value of the previous slice. For example, the values of slice_height_in_tiles_minus1[i] for all slices within one tile can be set to be the same.
[0293] When the definition of slice_height_in_tiles_minus1[i] is changed in this way, the existing restriction that "when i is less 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 derived as 0" can be omitted. As a result, as in the embodiment of FIG. 31, the "NumTileRows > 1" condition can be removed from the picture parameter set syntax.
[0294] Example 2
[0295] Hereinafter, embodiments based on the above-described Scheme 2 and Scheme 4 will be described. The following embodiments can be applied to improve encoding / decoding techniques such as the VVC specification.
[0296] In one embodiment, slice_width_in_tiles_minus1[i] can be a syntax element indicating the width of the i-th square slice. For example, the value obtained by adding 1 to slice_width_in_tiles_minus1[i] can indicate the width of the i-th square slice in units of tile columns. The value of slice_width_in_tiles_minus1[i] can 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] can be derived to be 0.
[0297] At this time, when 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] can be derived to be 0. Also, for bitstream compliance, if the first tile of the i-th square slice is the last tile in the tile column, the value of slice_width_in_tiles_minus1[i] can be forced to be 0.
[0298] slice_height_in_tiles_minus1[i] can be a syntax element indicating the height of the i-th square slice. For example, when the value of num_exp_slices_in_tile[i] is 0, the value obtained by adding 1 to slice_height_in_tiles_minus1[i] can indicate the height of the i-th square slice in units of tile rows. The value of slice_height_in_tiles_minus1[i] can have a value from 0 to NumTileRows - 1.
[0299] At this time, when 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] can be determined by the value of NumTileRows. For example, it can 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 compliance, when the first tile of the i-th square slice is the last tile of the tile row, the value of slice_height_in_tiles_minus1[i] can be forced to 0.
[0303] Encoding and Decoding Method
[0304] Hereinafter, an image encoding method and a decoding method performed by an image encoding apparatus and an image decoding apparatus according to an embodiment will be described.
[0305] First, the operation of the decoding apparatus will be described. An image decoding apparatus according to an embodiment includes a memory and a processor, and the decoding apparatus can perform decoding by the operation of the processor. FIG. 32 shows a decoding method of the decoding apparatus according to an embodiment.
[0306] A decoding apparatus according to an embodiment can obtain a syntax element no_pic_partition_flag indicating the partition availability of the current picture from the bitstream. The decoding apparatus can determine the partition availability of the current picture based on the value of no_pic_partition_flag as described above (S3210).
[0307] When the division of the current picture is available, the decoding apparatus obtains from the bit stream a syntax element num_exp_tile_rows_minus1 indicating the number of tile rows for dividing the current picture and a syntax element num_exp_tile_columns_minus1 indicating the number of tile columns, and then can determine the number of tile rows and columns as described above (S3220).
[0308] Based on the number of the tile columns, the decoding apparatus obtains from the bit stream a syntax element tile_column_width_minus1 indicating the width for each of the tile columns for dividing the current picture, and then can determine the width of each tile column as described above (S3230).
[0309] Based on the number of the tile rows, the decoding apparatus obtains from the bit stream a syntax element tile_row_height_minus1[i] indicating the height for each of the tile rows for dividing the current picture, and then can determine the height of each tile row. Then, the decoding apparatus can calculate the number of tiles for dividing the current picture by the product of the number of tile columns and the number of tile rows.
[0310] Next, based on whether the number of tiles for dividing the current picture is greater than 1, the decoding apparatus obtains a syntax element rect_slice_flag indicating whether the current picture is divided into square slices, and can determine whether the current picture is divided into square slices as described above from its value (S3250).
[0311] Next, the decoding device 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 device 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] which is width information indicating the width of the slice, and a syntax element slice_height_in_tiles_minus1[i] which 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 device obtains the size information of the current slice (for example, the i-th slice) from the bit stream, the decoding device 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 tile index at the upper left corner of the current slice (e.g., SliceTopLeftTileIdx) does not correspond to the tile index of the last column of the tile columns belonging to the current picture, slice_width_in_tiles_minus1[i] can be obtained from the bitstream. However, if the tile index at the upper left corner of the current slice corresponds to the tile index of the last column of the tile columns belonging to the current picture, slice_width_in_tiles_minus1[i] cannot be obtained from the bitstream and can be determined as 0.
[0316] Similarly, the decoding device can obtain slice_height_in_tiles_minus1[i] from the bitstream based on whether the tile at the upper left corner of the current slice belongs to the last tile row of the current picture.
[0317] For example, if the tile index at the upper left corner of the current slice does not correspond to the tile index of the last row of the tile rows belonging to the current picture, slice_height_in_tiles_minus1[i] can be obtained from the bitstream. However, if the tile index at the upper left corner of the current slice corresponds to the tile index of the last row of the tile rows belonging to the current picture, slice_height_in_tiles_minus1[i] cannot be obtained from the bitstream and can be determined as 0.
[0318] Next, the decoding device can determine the size of each slice for dividing the current picture based on the size information, and decode the image by decoding the determined slices. For example, the slice can be decoded by decoding the CTUs included in the slice of the determined size using the above-mentioned inter or intra prediction, etc. (S3280).
[0319] On the one hand, SliceTopLeftTileIdx is a variable indicating the index of the top-left tile of a slice, and can be determined by the algorithms of FIGS. 33 and 34. The algorithms of FIGS. 33 and 34 represent one continuous algorithm.
[0320] Next, the operation of the encoding device will be described. An 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, a slice for dividing the image can be determined (S3520). Next, the encoding device can generate a bitstream including predetermined information including slice size information (S3530). For example, the encoding device can generate a bitstream including 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 are syntax elements that the decoding device acquires from the bitstream previously.
[0321] At this time, the size information can 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 device can encode into the bitstream based on whether the tile at the upper left side of the current slice is the last tile column and / or the last tile row, corresponding to the description in the decoding device before slice_width_in_tiles_minus1[i] and slice_height_in_tiles_minus1[i]. Here, the current slice can be a rectangular slice.
[0322] Applied Example
[0323] The exemplary method of the present disclosure is presented in a series of operations for clarity of explanation, but this is not for limiting the order in which the steps are performed, and if necessary, each step can also be performed simultaneously or in a different order. To implement the method according to the present disclosure, it can further include other steps in the exemplified steps, or include the remaining steps except for some steps, or include additional other steps except for some steps.
[0324] In the present disclosure, an image encoding device or an image decoding device that performs a predetermined operation (step) can perform an operation (step) of checking the execution conditions and situations of the operation (step). For example, when 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 of checking whether the predetermined condition is satisfied.
[0325] The various embodiments of the present disclosure do not list all possible combinations, but are for explaining representative aspects of the present disclosure, and the matters described in the various embodiments may be applied independently or in combinations of two or more.
[0326] In addition, various embodiments of the present disclosure can be implemented by hardware, firmware, software, or a combination thereof. In the case of implementation by hardware, it can be implemented by 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 can be included in a multimedia broadcast transceiver, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video conferencing device, a real-time communication device such as video communication, a mobile streaming device, a storage medium, a camcorder, an on-demand 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 phone video device, and a medical video device, etc., and can be used to process video signals or data signals. For example, as the over-the-top video (OTT) device, it can 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), etc.
[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 can generally 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, a camera, or a camcorder into digital data to generate a bitstream and transmits the bitstream to the streaming server. As another example, when a multimedia input device such as a smartphone, a camera, or a video camera directly generates a bitstream, the encoding server can be omitted.
[0331] The bitstream can be generated by an image encoding method and / or an image encoding device to which an embodiment of the present disclosure is applied, and the streaming server can 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's request via a Web server, and the Web server can serve as a medium for notifying the user of what services are available. When the user requests a desired service from the Web server, the Web server transmits this to the streaming server, and the streaming server can transmit 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 play a role in controlling commands / responses between each device in the content streaming system.
[0333] The streaming server can receive content from a media storage and / or an encoding server. For example, when receiving content from the encoding server, the content can be received in real time. In this case, in order to provide a smooth streaming service, the streaming server can store the bitstream for a certain period of time.
[0334] Examples of the user device may include a mobile phone, a smart phone, a laptop computer, a digital broadcast terminal, a PDA (personal digital assistants), a PMP (portable multimedia player), a navigation device, a slate PC, a tablet PC, an ultrabook, a wearable device, for example, a smartwatch, smart glass, an HMD (head mounted display), a digital TV, a desktop computer, a digital signage, and the like.
[0335] Each server in the content streaming system can be operated as a distributed server, and in this case, the data received from each server can be processed distributively.
[0336] The scope of the present disclosure includes software or machine-executable commands (e.g., an operating system, an application, firmware, a program, etc.) that enable the operations of various example methods to be executed on a device or a computer, and a non-transitory computer-readable medium on which such software or commands are stored and can be executed on the device or the computer.
Industrial Applicability
[0337] Examples according to the present disclosure can be used to encode / decode images.
Claims
1. An image decoding method performed by an image decoding apparatus, comprising: obtaining size information indicating the size of a current slice corresponding to at least a part of a current picture from a bitstream; determining the size of the current slice based on the size information; and the size information includes width information indicating the width of the current slice in units of tile columns and height information indicating the height of the current slice in units of tile rows, the step of obtaining the 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, the height information of the current slice is not obtained from the bitstream based on whether the tile at the upper left side of the current slice belongs to the last tile row of the current picture, An image decoding method in which the width information of the current slice is not obtained from the bitstream based on whether the tile at the upper left side of the current slice belongs to the last tile column of the current picture.
2. The image decoding method according to claim 1, wherein the height information of the current slice is obtained from the bitstream based on the fact that the tile at the upper left side of the current slice does not belong to the last tile row of the current picture.
3. The image decoding method according to claim 1, wherein the height information of the current slice is not obtained from the bitstream but is determined to be a predetermined value based on the fact that the tile at the upper left side 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 according to claim 1, wherein the current slice is a rectangular slice.
6. The step of obtaining the size information is performed based on the number of slices for dividing the current picture, The number of slices for dividing the current picture is determining the dividability of the current picture; determining the number of tile rows and the number of tile columns for dividing the current picture based on the fact that the division of the current picture is available; determining the width for each of the tile columns for dividing the current picture based on the number of tile columns. Determining the height for each tile row that divides the current picture based on the number of tile rows; Determining whether the current picture is divided into square slices based on the number of tiles that divide the current picture; Obtaining the number of slices that divide the current picture from the bitstream based on whether the current picture is divided into square slices, the image decoding method according to claim 1.
7. An image encoding method performed by an image encoding apparatus, Determining a current slice corresponding to at least a part of the current picture; Generating a bitstream including size information of the current slice, The size information includes width information indicating the width of the current slice in units of tile columns and height information indicating the height of the current slice in units of tile rows, The step of 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 tile at the upper left of the current slice belongs to the last tile row of the current picture, the height information of the current slice is not encoded in the bitstream, Based on the fact that the tile at the upper left of the current slice belongs to the last tile column of the current picture, the width information of the current slice is not encoded in the bitstream, an image encoding method.
8. The image encoding method according to claim 7, wherein the current slice is a rectangular slice.
9. A method of transmitting a bitstream, Generating a bitstream based on an image encoding method; Transmitting the bitstream, The image encoding method includes: Determining a current slice corresponding to at least a part of the current picture; Generating a bitstream including size information of the current slice, The size information includes width information indicating the width of the current slice in units of tile columns and height information indicating the height of the current slice in units of tile rows, The step of 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 tile in the upper left corner of the current slice belongs to the last tile row of the current picture, the height information of the current slice is not encoded in the bit stream. A bit stream transmission method in which, based on the fact that the tile in the upper left corner of the current slice belongs to the last tile column of the current picture, the width information of the current slice is not encoded in the bit stream.
Citation Information
Patent Citations
Image encoding / decoding method and apparatus for selectively encoding size information of rectangular slices, and method for transmitting bitstreams - Patents.com
JP7490797B2