Encoding / decoding devices and data transmission devices

VN126025APending Publication Date: 2026-06-15LG ELECTRONICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
VN · VN
Patent Type
Applications
Current Assignee / Owner
LG ELECTRONICS INC
Filing Date
2020-07-21
Publication Date
2026-06-15

AI Technical Summary

Technical Problem

High-resolution, high-quality video encoding and decoding face inefficiencies due to increased bit transmission and storage costs, necessitating improved compression technologies that efficiently manage chroma component prediction information based on palette mode application.

Method used

A method and device for encoding and decoding images that signal chroma component prediction information depending on whether palette mode is applied, optimizing bitstream transmission by determining palette mode flags and encoding information within the image segmentation structure.

Benefits of technology

Enhances encoding and decoding efficiency by reducing bit transmission and storage requirements, effectively handling high-resolution video data while maintaining image quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure VN1202600088_0
    Figure VN1202600088_0
Patent Text Reader

Abstract

The invention relates to a method and apparatus for encoding / decoding images. The method for decoding images performed by an image decoding apparatus may include steps to determine the current block by splitting the image, to identify whether a color scheme mode is applied to the current block, based on a color scheme mode flag obtained from the bit stream, to obtain the color scheme encoding information of the current block from the bit stream, based on the tree type of the current block and whether a color scheme mode is applied to the current block, and to obtain the chromatic composition prediction information of the current block from the bit stream, based on whether a color scheme mode is not applied to the current block.
Need to check novelty before this filing date? Find Prior Art

Description

A method for encoding / decoding a video signaling chroma component prediction information depending on whether a palette mode is applied, a device for signaling the chroma component prediction information, and a method for transmitting a bitstream

[0001] The present disclosure relates to a video encoding / decoding method and device, and more particularly, to a video encoding / decoding method and device that signal chroma component prediction information depending on whether a palette mode is applied, and a method for transmitting a bitstream generated by the video encoding method / device of the present disclosure.

[0002] Recently, demand for high-resolution, high-quality images, such as HD (High Definition) and UHD (Ultra High Definition) images, has been increasing across various fields. As image data becomes higher resolution and higher quality, the amount of information transmitted, or bits, increases relative to conventional image data. This increase in information or bits transmitted leads to increased transmission and storage costs.

[0003] Accordingly, a highly efficient image compression technology is required to effectively transmit, store, and play high-resolution, high-quality image information.

[0004] The present disclosure aims to provide a video encoding / decoding method and device with improved encoding / decoding efficiency.

[0005] In addition, the present disclosure aims to provide a video encoding / decoding method and device that improves encoding / decoding efficiency by signaling chroma component prediction information depending on whether a palette mode is applied.

[0006] In addition, the present disclosure aims to provide a method for transmitting a bitstream generated by an image encoding method or device according to the present disclosure.

[0007] In addition, the present disclosure aims to provide a recording medium storing a bitstream generated by an image encoding method or device according to the present disclosure.

[0008] In addition, the present disclosure aims to provide a recording medium storing a bitstream received and decoded by an image decoding device according to the present disclosure and used for image restoration.

[0009] The technical problems to be achieved in the present disclosure are not limited to the technical problems mentioned above, and other technical problems not mentioned can be clearly understood by a person having ordinary skill in the technical field to which the present disclosure belongs from the description below.

[0010] An image decoding method performed by an image decoding device according to one aspect of the present disclosure may include: a step of dividing an image to determine a current block; a step of identifying whether a palette mode is applied to the current block based on a palette mode flag obtained from a bitstream; a step of obtaining palette mode encoding information for the current block from a bitstream based on a tree type of the current block and whether the palette mode is applied to the current block; and a step of obtaining chroma component prediction information of the current block from the bitstream if the palette mode is not applied to the current block.

[0011] In addition, an image decoding device according to one aspect of the present disclosure includes a memory and at least one processor, wherein the at least one processor divides an image to determine a current block, identifies whether a palette mode is applied to the current block based on a palette mode flag obtained from a bitstream, obtains palette mode encoding information for the current block from a bitstream based on a tree type of the current block and whether the palette mode is applied to the current block, and if the palette mode is not applied to the current block, obtains chroma component prediction information of the current block from the bitstream.

[0012] In addition, an image encoding method performed by an image encoding device according to one aspect of the present disclosure may include the steps of: dividing the image to determine a current block; determining a prediction mode of the current block; encoding a palette mode flag indicating whether the prediction mode of the current block is a palette mode based on whether the prediction mode of the current block is a palette mode; encoding palette mode encoding information that encodes the current block in a palette mode based on a tree type of the current block and whether the prediction mode of the current block is a palette mode; and encoding chroma component prediction information of the current block if the prediction mode of the current block is not a palette mode.

[0013] In addition, a transmission method according to one aspect of the present disclosure can transmit a bitstream generated by an image encoding device or an image encoding method of the present disclosure.

[0014] In addition, a computer-readable recording medium according to one aspect of the present disclosure can store a bitstream generated by an image encoding method or an image encoding device of the present disclosure.

[0015] The features briefly summarized above regarding the present disclosure are merely exemplary aspects of the detailed description of the present disclosure that follows and do not limit the scope of the present disclosure.

[0016] According to the present disclosure, a video encoding / decoding method and device with improved encoding / decoding efficiency can be provided.

[0017] In addition, according to the present disclosure, a video encoding / decoding method and device can be provided that can improve encoding / decoding efficiency by signaling chroma component prediction information depending on whether a palette mode is applied.

[0018] Additionally, according to the present disclosure, a method for transmitting a bitstream generated by an image encoding method or device according to the present disclosure can be provided.

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

[0020] In addition, according to the present disclosure, a recording medium storing a bitstream received and decoded by an image decoding device according to the present disclosure and used for image restoration can be provided.

[0021] The effects that can be obtained from the present disclosure are not limited to the effects mentioned above, and other effects that are not mentioned will be clearly understood by a person having ordinary skill in the art to which the present disclosure pertains from the description below.

[0022] FIG. 1 is a schematic diagram illustrating a video coding system to which an embodiment according to the present disclosure can be applied.

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

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

[0025] FIG. 4 is a diagram showing a segmentation structure of an image according to one embodiment.

[0026] FIG. 5 is a diagram illustrating an example of a block division type according to a multi-type tree structure.

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

[0028] FIG. 7 is a diagram illustrating an embodiment in which a CTU is divided into multiple CUs.

[0029] Figure 8 is a diagram illustrating one embodiment of a redundant split pattern.

[0030] FIG. 9 is a diagram illustrating syntax for chroma format signaling according to one embodiment.

[0031] FIG. 10 is a diagram illustrating a chroma format classification table according to one embodiment.

[0032] FIG. 11 is a diagram illustrating horizontal scanning and vertical scanning according to one embodiment.

[0033] Figures 12 and 13 are diagrams showing syntax for palette mode according to one embodiment.

[0034] Figures 14 to 19 are diagrams showing syntax for palette mode according to one embodiment.

[0035] FIG. 20 is a diagram showing mathematical formulas for determining PredictorPaletteEntries and CurrentPaletteEntries according to one embodiment.

[0036] FIG. 21 is a diagram illustrating the syntax of an encoding unit according to a modified embodiment.

[0037] FIG. 22 is a flowchart illustrating a signaling method of a given chroma intra prediction information according to one embodiment.

[0038] FIG. 23 is a flowchart illustrating a method for a decoding device to obtain chroma prediction information according to an embodiment.

[0039] FIG. 24 is a flowchart illustrating a method for encoding an image by an encoding device according to one embodiment.

[0040] FIG. 25 is a flowchart illustrating a method for a decryption device to decrypt an image according to one embodiment.

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

[0042] Hereinafter, embodiments of the present disclosure will be described in detail with reference to the attached drawings so that those skilled in the art can easily implement the present disclosure. However, the present disclosure may be implemented in various different forms and is not limited to the embodiments described herein.

[0043] In describing embodiments of the present disclosure, detailed descriptions of known configurations or functions will be omitted if they are deemed to obscure the gist of the present disclosure. Furthermore, portions unrelated to the description of the present disclosure in the drawings have been omitted, and similar portions have been designated with similar reference numerals.

[0044] In the present disclosure, when a component is said to be "connected," "coupled," or "connected" to another component, this may include not only a direct connection, but also an indirect connection in which another component exists in between. Furthermore, when a component is said to "include" or "have" another component, unless otherwise specifically stated, this does not exclude the other component, but rather implies that the other component may be included.

[0045] In this disclosure, terms such as first, second, etc. are used solely to distinguish one component from another, and do not limit the order or importance of components unless specifically stated otherwise. Accordingly, within the scope of this disclosure, a first component in one embodiment may be referred to as a second component in another embodiment, and similarly, a second component in one embodiment may be referred to as a first component in another embodiment.

[0046] In this disclosure, distinct components are used to clearly illustrate their respective characteristics, and do not necessarily imply that the components are separated. That is, multiple components may be integrated into a single hardware or software unit, or a single component may be distributed into multiple hardware or software units. Therefore, even if not specifically mentioned, such integrated or distributed embodiments are also included within the scope of this disclosure.

[0047] In the present disclosure, the components described in various embodiments are not necessarily essential components, and some may be optional components. Therefore, embodiments comprising a subset of the components described in one embodiment are also within the scope of the present disclosure. Furthermore, embodiments including other components in addition to the components described in various embodiments are also within the scope of the present disclosure.

[0048] The present disclosure relates to encoding and decoding of images, and terms used in the present disclosure may have their usual meanings commonly used in the technical field to which the present disclosure belongs, unless newly defined in the present disclosure.

[0049] In the present disclosure, a "picture" generally refers to a unit representing one image of a specific time period, and a slice / tile is a coding unit that constitutes a part of a picture, and a single picture may be composed of one or more slices / tiles. In addition, a slice / tile may include one or more coding tree units (CTUs).

[0050] In the present disclosure, "pixel" or "pel" may refer to the smallest unit that constitutes a picture (or image). Additionally, "sample" may be used as a term corresponding to a pixel. A sample may generally represent a pixel or a pixel value, and may represent only a pixel / pixel value of a luma component or only a pixel / pixel value of a chroma component.

[0051] In the present disclosure, a "unit" may represent a basic unit of image processing. A unit may include at least one of a specific region of a picture and information related to the region. In some cases, the term "unit" may be used interchangeably with terms such as "sample array," "block," or "area." In general, an MxN block may include a set (or array) of samples (or sample array) or transform coefficients consisting of M columns and N rows.

[0052] In the present disclosure, the "current block" may mean one of the following: a "current coding block," a "current coding unit," a "block to be encoded," a "block to be decoded," or a "block to be processed." When prediction is performed, the "current block" may mean a "current prediction block" or a "block to be predicted." When transformation (inverse transformation) / quantization (inverse quantization) is performed, the "current block" may mean a "current transformation block" or a "block to be transformed." When filtering is performed, the "current block" may mean a "block to be filtered."

[0053] Additionally, in the present disclosure, "current block" may mean "luma block of the current block" unless explicitly described as a chroma block. "Chroma block of the current block" may be expressed by explicitly including explicit description of chroma block, such as "chroma block" or "current chroma block."

[0054] In this disclosure, " / " and "," can be interpreted as "and / or". For example, "A / B" and "A, B" can be interpreted as "A and / or B". Additionally, "A / B / C" and "A, B, C" can mean "at least one of A, B, and / or C."

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

[0056] Overview of Video Coding Systems

[0057] FIG. 1 illustrates a video coding system according to the present disclosure.

[0058] A video coding system according to one embodiment may include an encoding device (10) and a decoding device (20). The encoding device (10) may transmit encoded video and / or image information or data to the decoding device (20) in the form of a file or streaming through a digital storage medium or a network.

[0059] An encoding device (10) according to an embodiment may include a video source generation unit (11), an encoding unit (12), and a transmission unit (13). A decoding device (20) according to an embodiment may include a reception unit (21), a decoding unit (22), and a rendering unit (23). The encoding unit (12) may be referred to as a video / image encoding unit, and the decoding unit (22) may be referred to as a video / image decoding unit. The transmission unit (13) may be included in the encoding unit (12). The reception unit (21) may be included in the decoding unit (22). The rendering unit (23) may include a display unit, and the display unit may be configured as a separate device or an external component.

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

[0061] The encoding unit (12) can encode input video / images. The encoding unit (12) can perform a series of procedures, such as prediction, transformation, and quantization, to improve compression and encoding efficiency. The encoding unit (12) can output encoded data (encoded video / image information) in the form of a bitstream.

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

[0063] The decoding unit (22) can decode video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding unit (12).

[0064] The rendering unit (23) can render the decrypted video / image. The rendered video / image can be displayed through the display unit.

[0065] Overview of the video encoding device

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

[0067] As illustrated in FIG. 2, the image encoding device (100) may include an image segmentation unit (110), a subtraction unit (115), a transformation unit (120), a quantization unit (130), an inverse quantization unit (140), an inverse transformation unit (150), an addition unit (155), a filtering unit (160), a memory (170), an inter prediction unit (180), an intra prediction unit (185), and an entropy encoding unit (190). The inter prediction unit (180) and the intra prediction unit (185) may be collectively referred to as a “prediction unit.” The transformation unit (120), the quantization unit (130), the inverse quantization unit (140), and the inverse transformation unit (150) may be included in a residual processing unit. The residual processing unit may further include a subtraction unit (115).

[0068] All or at least some of the plurality of components constituting the video encoding device (100) may be implemented as a single hardware component (e.g., an encoder or a processor) according to an embodiment. In addition, the memory (170) may include a decoded picture buffer (DPB) and may be implemented by a digital storage medium.

[0069] The image segmentation unit (110) can segment an input image (or picture, frame) input to the image encoding device (100) into one or more processing units. For example, the processing unit may be called a coding unit (CU). The coding unit may be obtained by recursively segmenting a coding tree unit (CTU) or a largest coding unit (LCU) according to a QT / BT / TT (Quad-tree / binary-tree / ternary-tree) structure. For example, one coding unit may be segmented into a plurality of coding units of deeper depth based on a quad-tree structure, a binary-tree structure, and / or a ternary-tree structure. For segmenting the coding unit, the quad-tree structure may be applied first, and the binary-tree structure and / or the ternary-tree structure may be applied later. The coding procedure according to the present disclosure may be performed based on the final coding unit that is no longer segmented. The maximum coding unit can be used directly as the final coding unit, and the coding unit of the lower depth obtained by dividing the maximum coding unit can be used as the final concatenated unit. Here, the coding procedure may include procedures such as prediction, transformation, and / or restoration described below. As another example, the processing unit of the coding procedure may be a prediction unit (PU) or a transformation unit (TU). The prediction unit and the transformation unit may each be divided or partitioned from the final coding unit. The prediction unit may be a unit of sample prediction, and the transformation unit may be a unit that derives a transform coefficient and / or a unit that derives a residual signal from a transform coefficient.

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

[0071] The intra prediction unit (185) can predict the current block by referring to samples within the current picture. The referenced samples may be located in the neighborhood of the current block or may be located away from it, depending on the intra prediction mode and / or intra prediction technique. The intra prediction modes may include a plurality of non-directional modes and a plurality of directional modes. The non-directional modes may include, for example, a DC mode and a planar mode. The directional modes may include, for example, 33 directional prediction modes or 65 directional prediction modes, depending on the degree of detail in the prediction direction. However, this is merely an example, and a greater or lesser number of directional prediction modes may be used depending on the settings. The intra prediction unit (185) may also determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring blocks.

[0072] 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 the 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 information on the inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.). In the case of inter prediction, the neighboring 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 may be called a collocated reference block, a collocated CU (colCU), etc. A reference picture including the above temporal neighboring blocks may be called a collocated picture (colPic). For example, the inter prediction unit (180) may 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 may be performed based on various prediction modes, and for example, in the case of skip mode and merge mode, the inter prediction unit (180) may use the motion information of neighboring blocks as the motion information of the current block. In the case of skip mode, unlike the merge mode, a residual signal may not be transmitted.In the motion vector prediction (MVP) mode, the motion vector of the current block can be signaled by using the motion vector of the surrounding blocks as the motion vector predictor and encoding the motion vector difference and an indicator for the motion vector predictor. The motion vector difference can mean the difference between the motion vector of the current block and the motion vector predictor.

[0073] 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 intra prediction or inter prediction to predict the current block, and can also apply intra prediction and inter prediction simultaneously. A prediction method that simultaneously applies intra prediction and inter prediction to predict the current block may be called combined inter and intra prediction (CIIP). In addition, the prediction unit may perform intra block copy (IBC) to predict the current block. Intra block copy can be used for content video / movie coding such as games, such as screen content coding (SCC). IBC is a method of predicting the current block using a previously restored reference block within the current picture located at a predetermined distance from the current block. When IBC is applied, the location 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 similarly to inter prediction in that it derives reference blocks within the current picture. That is, IBC can utilize at least one of the inter prediction techniques described in the present disclosure.

[0074] The prediction signal generated through the prediction unit can be used to generate a restoration signal or a residual signal. The subtraction unit (115) can generate a residual signal (residual block, residual sample array) by subtracting the prediction signal (predicted block, predicted sample array) output from the prediction unit from the input image signal (original block, original sample array). The generated residual signal can be transmitted to the conversion unit (120).

[0075] The transform unit (120) can apply a transform technique to the residual signal to generate transform coefficients. For example, the transform technique can include at least one of a Discrete Cosine Transform (DCT), a Discrete Sine Transform (DST), a Karhunen-Loeve Transform (KLT), a Graph-Based Transform (GBT), or a Conditionally Non-linear Transform (CNT). Here, GBT refers to a transform obtained from a graph when the relationship information between pixels is expressed as a graph. CNT refers to a transform obtained based on generating a prediction signal using all previously reconstructed pixels. The transform process can be applied to a pixel block having a square equal size, or can be applied to a block of a non-square variable size.

[0076] 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 about the quantized transform coefficients) and output it as a bitstream. The information about the quantized transform coefficients can be called residual information. The quantization unit (130) can rearrange the quantized transform coefficients in a block form into a one-dimensional vector form based on a coefficient scan order, and can also generate information about the quantized transform coefficients based on the quantized transform coefficients in the one-dimensional vector form.

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

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

[0079] 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 through the inverse quantization unit (140) and inverse transformation unit (150), a residual signal (residual block or residual samples) can be restored.

[0080] The addition unit (155) can generate a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) by adding the reconstructed 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, such as when skip mode is applied, the predicted block can be used as the reconstructed block. The addition unit (155) can be called a reconstructor 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 filtering as described below.

[0081] The filtering unit (160) can improve subjective / objective picture quality by applying filtering to the restoration signal. For example, the filtering unit (160) can apply various filtering methods to the restoration picture to generate a modified restoration picture, and store the modified restoration picture in the memory (170), specifically, in the DPB of the memory (170). The various filtering methods may include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc. The filtering unit (160) can generate various information regarding filtering and transmit the information to the entropy encoding unit (190), as described later in the description of each filtering method. The information regarding filtering may be encoded by the entropy encoding unit (190) and output in the form of a bitstream.

[0082] The modified restored picture transmitted to the memory (170) can be used as a reference picture in the inter prediction unit (180). Through this, when inter prediction is applied, the image encoding device (100) can avoid prediction mismatch between the image encoding device (100) and the image decoding device, and can also improve encoding efficiency.

[0083] The DPB in the memory (170) can store a modified reconstructed picture to be used as a reference picture in the inter prediction unit (180). The memory (170) can store motion information of a block from which motion information in the current picture is derived (or encoded) and / or motion information of blocks in a picture that has already been reconstructed. The stored motion information can be transferred to the inter prediction unit (180) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (170) can store reconstructed samples of reconstructed blocks in the current picture and transfer them to the intra prediction unit (185).

[0084] Video Decryption Device Overview

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

[0086] As illustrated in FIG. 3, the image decoding device (200) may be configured to include an entropy decoding unit (210), an inverse quantization unit (220), an inverse transformation 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) may be collectively referred to as a “prediction unit.” The inverse quantization unit (220) and the inverse transformation unit (230) may be included in a residual processing unit.

[0087] All or at least some of the plurality of components constituting the video decoding device (200) may be implemented as a single hardware component (e.g., a decoder or processor) depending on the embodiment. In addition, the memory (170) may include a DPB and may be implemented by a digital storage medium.

[0088] The image decoding device (200) that receives a bitstream including video / image information can restore the image by performing a process corresponding to the process performed in the image encoding device (100) of FIG. 2. For example, the image decoding device (200) can perform decoding using a processing unit applied in the image encoding device. Therefore, the processing unit for decoding may be, for example, a coding unit. The coding unit may be a coding tree unit or may be obtained by dividing a maximum coding unit. In addition, the restored image signal decoded and output by the image decoding device (200) can be reproduced through a reproduction device (not shown).

[0089] The video decoding device (200) can receive a signal output from the video encoding device of FIG. 2 in the form of a bitstream. The received signal can be decoded through 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 may further include information on various parameter sets, such as an adaptation parameter set (APS), a picture parameter set (PPS), a sequence parameter set (SPS), or a video parameter set (VPS). In addition, the video / image information may further include general constraint information. The video decoding device may additionally use information on the parameter set and / or the general constraint information to decode the image. The signaling information, received information, and / or syntax elements mentioned in the present disclosure can be obtained from the bitstream by being decoded through the decoding procedure. For example, the entropy decoding unit (210) can decode information in the bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, and output the values ​​of syntax elements required for image restoration and the quantized values ​​of transform coefficients for residuals. More specifically, the CABAC entropy decoding method receives a bin corresponding to each syntax element in the bitstream, determines a context model using information of the syntax element to be decoded and decoding information of the surrounding block and the decoding target block or information of the symbol / bin decoded in the previous step, and predicts the occurrence probability of the bin according to the determined context model to perform arithmetic decoding of the bin to generate a symbol corresponding to the value of each syntax element.At this time, 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 after determining the context model. Information regarding prediction among the information decoded by the entropy decoding unit (210) is provided to the prediction unit (inter prediction unit (260) and intra prediction unit (265)), and the residual value on which entropy decoding is performed by the entropy decoding unit (210), i.e., quantized transform coefficients and related parameter information, can be input to the inverse quantization unit (220). In addition, information regarding filtering among the information decoded by the entropy decoding unit (210) can be provided to the filtering unit (240). Meanwhile, a receiving unit (not shown) that receives a signal output from an image encoding device may be additionally provided as an internal / external element of the image decoding device (200), or the receiving unit may be provided as a component of an entropy decoding unit (210).

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

[0091] The inverse quantization unit (220) can inverse quantize the quantized transform coefficients and output the transform coefficients. The inverse quantization unit (220) can rearrange the quantized transform coefficients into a two-dimensional block form. In this case, the rearrangement can be performed based on the coefficient scanning order performed in the image encoding device. The inverse quantization unit (220) can perform inverse quantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain transform coefficients.

[0092] In the inverse transform unit (230), the transform coefficients can be inversely transformed to obtain a residual signal (residual block, residual sample array).

[0093] The prediction unit can perform a prediction on the current block and generate a predicted block containing prediction 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 prediction information output from the entropy decoding unit (210), and can determine a specific intra / inter-prediction mode (prediction technique).

[0094] The fact that the prediction unit can generate a prediction signal based on various prediction methods (techniques) described below is the same as that mentioned in the description of the prediction unit of the image encoding device (100).

[0095] The intra prediction unit (265) can predict the current block by referring to samples within the current picture. The description of the intra prediction unit (185) can be equally applied to the intra prediction unit (265).

[0096] 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 the 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 information on the inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.). 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 about the prediction can include information indicating the mode (technique) of inter prediction for the current block.

[0097] The addition unit (235) can generate a restoration signal (restored picture, restoration block, restoration sample array) by adding the acquired residual signal to the prediction signal (predicted block, prediction 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 block to be processed, such as when the skip mode is applied, the predicted block can be used as the restoration block. The description of the addition unit (155) can be equally applied to the addition unit (235). The addition unit (235) can be called a restoration unit or a restoration block generation unit. The generated restoration 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 going through filtering as described below.

[0098] The filtering unit (240) can improve subjective / objective image quality by applying filtering to the restored signal. For example, the filtering unit (240) can apply various filtering methods to the restored picture to generate a modified restored picture, and 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, etc.

[0099] The (modified) reconstructed 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 motion information of a block from which motion information is derived (or decoded) within the current picture and / or motion information of blocks within a picture that has already been reconstructed. The stored motion information can be transferred to the inter prediction unit (260) to be used as motion information of a spatial neighboring block or motion information of a temporal neighboring block. The memory (250) can store reconstructed samples of reconstructed blocks within the current picture and transfer them to the intra prediction unit (265).

[0100] 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 applied to the filtering unit (240), the inter prediction unit (260), and the intra prediction unit (265) of the image decoding device (200) in the same or corresponding manner, respectively.

[0101] Video Segmentation Overview

[0102] The video / image coding method according to the present disclosure can be performed based on the following image segmentation structure. Specifically, the procedures such as prediction, residual processing ((inverse) transformation, (inverse) quantization, etc.), syntax element coding, and filtering, which will be described later, can be performed based on CTUs, CUs (and / or TUs, PUs) derived based on the image segmentation structure. The image can be segmented into blocks, and the block segmentation procedure can be performed in the image segmentation unit (110) of the encoding device described above. The segmentation-related information can be encoded in 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 segmentation structure of the current picture based on the segmentation-related information obtained from the bitstream, and perform a series of procedures for image decoding (e.g., prediction, residual processing, block / picture restoration, in-loop filtering, etc.) based on the same.

[0103] Pictures can be partitioned into a sequence of coding tree units (CTUs). Figure 4 illustrates an example of a picture being partitioned into CTUs. A CTU may correspond to a coding tree block (CTB). Alternatively, a CTU may include a coding tree block of luma samples and two corresponding coding tree blocks of chroma samples. For example, for a picture containing three sample arrays, a CTU may include an NxN block of luma samples and two corresponding blocks of chroma samples.

[0104] CTU's Split Overview

[0105] As described above, a coding unit can be obtained by recursively partitioning a coding tree unit (CTU) or a maximum coding unit (LCU) according to a quad-tree / binary-tree / ternary-tree (QT / BT / TT) structure. For example, a CTU can first be partitioned into a quad-tree structure. The leaf nodes of the quad-tree structure can then be further partitioned into a multi-type tree structure.

[0106] Splitting according to a quadtree means splitting the current CU (or CTU) into four parts. Splitting according to a quadtree allows the current CU to be split into four CUs with the same width and height. If the current CU is no longer split into a 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 no longer split and can be used as the final coding unit described above. Alternatively, a CU corresponding to a leaf node of the quadtree structure can be further split according to a multi-type tree structure.

[0107] Figure 5 is a diagram illustrating the types of block divisions according to a multi-type tree structure. Divisions according to a multi-type tree structure may include two divisions according to a binary tree structure and two divisions according to a ternary tree structure.

[0108] The two splits according to the binary tree structure may include vertical binary splitting (SPLIT_BT_VER) and horizontal binary splitting (SPLIT_BT_HOR). Vertical binary splitting (SPLIT_BT_VER) refers to a split that divides the current CU into two halves vertically. As illustrated in FIG. 4, the vertical binary split may generate two CUs that have the same height as the current CU and a width that is half the width of the current CU. Horizontal binary splitting (SPLIT_BT_HOR) refers to a split that divides the current CU into two halves horizontally. As illustrated in FIG. 5, the horizontal binary split may generate two CUs that have the same height as the current CU and a width that is half the width of the current CU.

[0109] The two splits according to the ternary tree structure can include vertical ternary splitting (SPLIT_TT_VER) and horizontal ternary splitting (SPLIT_TT_HOR). Vertical ternary splitting (SPLIT_TT_VER) splits the current CU vertically in a ratio of 1:2:1. As illustrated in Fig. 5, vertical ternary splitting can produce two CUs each having the same height as the current CU and a width of one-quarter of the width of the current CU, and a CU each having the same height as the current CU and a width of half the width of the current CU. Horizontal ternary splitting (SPLIT_TT_HOR) splits the current CU horizontally in a ratio of 1:2:1. As illustrated in FIG. 4, two CUs having a height equal to 1 / 4 of the height of the current CU and a width equal to the width of the current CU and one CU having a height equal to half the height of the current CU and a width equal to the width of the current CU can be created by horizontal ternary division.

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

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

[0112] 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 multi-tree splitting type or split type.

[0113] MttSplitModemtt_split_cu_vertical_flagmtt_split_cu_binary_flagSPLIT_TT_HOR00SPLIT_BT_HOR01SPLIT_TT_VER10SPLIT_BT_VER11

[0114] FIG. 7 illustrates an example in which a CTU is split into multiple CUs by applying a multi-type tree after applying a quad-tree. In FIG. 7, a bold block edge (710) represents a quad-tree split, and the remaining edges (720) represent a multi-type tree split. A CU may correspond to a coding block (CB). In one embodiment, a CU may include a coding block of luma samples and two coding blocks of chroma samples corresponding to the luma samples. The chroma component (sample) CB or TB size may be derived based on the luma component (sample) CB or TB size according to the component ratio according to the color format (chroma format, e.g., 4:4:4, 4:2:2, 4:2:0, etc.) of the picture / video. When the color format is 4:4:4, the chroma component CB / TB size may be set to be the same as the luma component CB / TB size. When the color format is 4:2:2, the width of the chroma component CB / TB can be set to half 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 the width of the luma component CB / TB, and the height of the chroma component CB / TB can be set to half the height of the luma component CB / TB.

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

[0116] Meanwhile, in one embodiment, the CU size and the TU size may be the same. Alternatively, multiple TUs may exist within a CU region. The TU size may generally indicate the luma component (sample) TB (Transform Block) size.

[0117] The above 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, multiple TUs (TBs) having the maxTbSize can be derived from the CU, and transformation / inverse transformation can be performed in units of the TU (TB). For example, the maximum allowable luma TB size can be 64x64, and the maximum allowable chroma TB size can be 32x32. If the width or height of a CB split according to the tree structure is larger than the maximum transformation width or height, the CB can be automatically (or implicitly) split until it satisfies the horizontal and vertical TB size restrictions.

[0118] Additionally, for example, when intra prediction is applied, the intra prediction mode / type is derived in units of the CU (or CB), and the procedures for deriving surrounding reference samples and generating prediction samples can be performed in units of TU (or TB). In this case, one or more TUs (or TBs) may exist within a single CU (or CB) region, and in this case, the multiple TUs (or TBs) may share the same intra prediction mode / type.

[0119] Meanwhile, for a quadtree coding tree scheme involving a multitype tree, the following parameters may be signaled from an encoder to a decoder as SPS syntax elements. For example, at least one of the following parameters may be signaled: CTU size, which is a parameter indicating a size of a root node of a quadtree tree; MinQTSize, which is a parameter indicating a minimum available size of a quadtree leaf node; MaxBTSize, which is a parameter indicating a maximum available size of a binary tree root node; MaxTTSize, which is a parameter indicating a maximum allowed size of a ternary tree root node; MaxMttDepth, which is a parameter indicating a maximum allowed hierarchy depth of a multitype tree split from a quadtree leaf node; MinBtSize, which is a parameter indicating a minimum available leaf node size of a binary tree; and MinTtSize, which is a parameter indicating a minimum available leaf node size of a ternary tree.

[0120] In one embodiment using a 4:2:0 chroma format, the CTU size may be set to a 128x128 luma block and two 64x64 chroma blocks corresponding to the luma block. In this case, MinQTSize may be set to 16x16, MaxBtSize may be set to 128x128, MaxTtSzie may be set to 64x64, MinBtSize and MinTtSize may be set to 4x4, and MaxMttDepth may be set to 4. Quadtree partitioning may be applied to the CTU to generate quadtree leaf nodes. The quadtree leaf nodes may be referred to as leaf QT nodes. The quadtree leaf nodes may have a size from 16x16 (e.g. the MinQTSize) to 128x128 (e.g. the CTU size). If a leaf QT node is 128x128, it may not be further split into binary trees / ternary trees. This is because in this case, even if it is split, it exceeds MaxBtsize and MaxTtszie (i.e. 64x64). In other cases, a leaf QT node may be further split into a multitype tree. Therefore, a leaf QT node is a root node for a multitype tree, and a leaf QT node may have a multitype tree depth (mttDepth) value of 0. If the multitype tree depth reaches MaxMttdepth (e.g. 4), no further splits may be considered. If the width of a multitype tree node is equal to MinBtSize and less than or equal to 2xMinTtSize, no further horizontal splits may be considered. If the height of a multi-type tree node is equal to MinBtSize and less than or equal to 2xMinTtSize, no further vertical splits may be considered. In such a case where splits are not considered, the encoding device may omit signaling of the split information.In such cases, the decryption device can derive segmentation information as a predetermined value.

[0121] Meanwhile, one CTU may include a coding block of luma samples (hereinafter referred to as a "luma block") and two coding blocks of corresponding chroma samples (hereinafter referred to as "chroma blocks"). The above-described coding tree scheme may be applied equally to the luma block and chroma block of the current CU, or may be applied separately. Specifically, the luma block and chroma block within one CTU may be split into the same block tree structure, in which case the tree structure may be expressed as a single tree (SINGLE_TREE). Alternatively, the luma block and chroma block within one CTU may be split into separate block tree structures, in which case the tree structure may be expressed 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 may exist separately. At this time, the block tree structure for the luma block may be called dual tree luma (DUAL_TREE_LUMA), and the block tree structure for the chroma block may be called dual tree chroma (DUAL_TREE_CHROMA). For P and B slice / tile groups, the luma block and chroma blocks within one CTU may be restricted to have the same coding tree structure. However, for I slice / tile groups, the luma block and chroma blocks may have separate block tree structures. If separate block tree structures are applied, the luma CTB (Coding Tree Block) may be split into CUs based on a specific coding tree structure, and the chroma CTB may be split into chroma CUs based on a different coding tree structure.That is, it can mean that a CU in an I slice / tile group to which an individual block tree structure is applied is composed of coding blocks of a luma component or coding blocks of two chroma components, and a CU in a P or B slice / tile group can be composed of blocks of three color components (a luma component and two chroma components).

[0122] Although the quadtree coding tree structure involving a multi-type tree has been described above, the structure into which the CU is split is not limited thereto. For example, the BT structure and the TT structure can be interpreted as concepts included in the Multiple Partitioning Tree (MPT) structure, and the CU can be interpreted as being split through the QT structure and the MPT structure. In an example where the CU is split through the QT structure and the MPT structure, the split structure can be determined by signaling a syntax element (e.g., MPT_split_type) including information on how many blocks the leaf node of the QT structure is split into and a syntax element (e.g., MPT_split_mode) including information on in which direction the leaf node of the QT structure is split, vertically or horizontally.

[0123] In another example, a CU may be partitioned in a different way than the QT structure, the BT structure, or the TT structure. That is, unlike the QT structure where the CU of the lower depth is partitioned to 1 / 4 the size of the CU of the upper depth, the BT structure where the CU of the lower depth is partitioned to 1 / 2 the size of the CU of the upper depth, or the TT structure where the CU of the lower depth is partitioned to 1 / 4 or 1 / 2 the size of the CU of the upper depth, the CU of the lower depth may be partitioned to 1 / 5, 1 / 3, 3 / 8, 3 / 5, 2 / 3, or 5 / 8 the size of the CU of the upper depth, as the case may be, and the way in which the CU is partitioned is not limited thereto.

[0124] In this way, the quadtree coding block structure involving the multi-type tree can provide a highly flexible block partitioning structure. However, due to the supported partitioning types of the multi-type tree, different partitioning patterns can potentially result in the same coding block structure in some cases. By limiting the occurrence of such redundant partitioning patterns, the encoding and decoding devices can reduce the data volume of partitioning information.

[0125] For example, Fig. 8 exemplifies redundant split patterns that may occur in binary tree partitioning and ternary tree partitioning. As illustrated in Fig. 8, consecutive binary partitions 810 and 820 in one direction of a two-level structure have the same coding block structure as the binary partition for the center partition after the ternary partitioning. In this case, binary tree partitioning for the center block (830, 840) of the ternary tree partitioning can be prohibited. This prohibition can be applied to the CUs of all pictures. If this specific partitioning is prohibited, the signaling of the corresponding syntax elements can be modified to reflect this prohibition, thereby reducing the number of bits signaled for the partitioning. For example, as in the example illustrated in FIG. 8, when binary tree splitting for the center block of a CU is prohibited, the mtt_split_cu_binary_flag syntax element indicating whether the split is a binary split or a tenary split is not signaled, and its value can be derived by the decoding device as 0.

[0126] Chroma Format Overview

[0127] Below, chroma formats are described. An image can be encoded as encoded data including a luma component (e.g., Y) array and two chroma component (e.g., Cb, Cr) arrays. For example, one pixel of an encoded image may include a luma sample and a chroma sample. A chroma format can be used to indicate the composition format of the luma sample and the chroma sample, and the chroma format may also be called a color format.

[0128] In one embodiment, the video may be encoded in various chroma formats, such as monochrome, 4:2:0, 4:2:2, 4:4:4, etc. In monochrome sampling, there may be one sample array, and the sample array may be a luma array. In 4:2:0 sampling, there may be one luma sample array and two chroma sample arrays, each of the two chroma arrays having half the height of the luma array and half the width of the luma array. In 4:2:2 sampling, there may be one luma sample array and two chroma sample arrays, each of the two chroma arrays having the same height as the luma array and half the width of the luma array. In 4:4:4 sampling, there may be one luma sample array and two chroma sample arrays, each of the two chroma arrays having the same height and width as the luma array.

[0129] For example, in the case of 4:2:0 sampling, the position of a chroma sample may be located below the corresponding luma sample. In the case of 4:2:2 sampling, the chroma sample may be positioned so as to overlap the position of the corresponding luma sample. In the case of 4:4:4 sampling, both the luma sample and the chroma sample may be positioned in an overlapping position.

[0130] The chroma format used in the encoding device and the decoding device may be predetermined. Alternatively, the chroma format may be signaled from the encoding device to the decoding device so as to be adaptively used in the encoding device and the decoding device. In one embodiment, the chroma format may be signaled based on at least one of chroma_format_idc and separate_colour_plane_flag. At least one of chroma_format_idc and separate_colour_plane_flag may be signaled via a higher level syntax such as DPS, VPS, SPS, or PPS. For example, chroma_format_idc and separate_colour_plane_flag may be included in an SPS syntax such as that illustrated in FIG. 9.

[0131] Meanwhile, FIG. 10 shows an embodiment of chroma format classification using signaling of chroma_format_idc and separate_colour_plane_flag. chroma_format_idc may be information indicating a chroma format applied to an encoded image. separate_colour_plane_flag may indicate whether a color array is processed separately in a specific chroma format. For example, a first value (eg 0) of chroma_format_idc may indicate monochrome sampling. A second value (eg 1) of chroma_format_idc may indicate 4:2:0 sampling. A third value (eg 2) of chroma_format_idc may indicate 4:2:2 sampling. A fourth value (eg 3) of chroma_format_idc may indicate 4:4:4 sampling.

[0132] In 4:4:4 sampling, the following may apply based on the value of separate_colour_plane_flag. If the value of separate_colour_plane_flag is the first value (e.g. 0), each of the two chroma arrays may have the same height and width as the luma array. In this case, the value of ChromaArrayType, which indicates the type of the chroma sample array, may be set equal to chroma_format_idc. If the value of separate_colour_plane_flag is the second value (e.g. 1), the luma, Cb, and Cr sample arrays may be processed separately, so that they may be processed as monochrome sampled pictures. In this case, ChromaArrayType may be set to 0.

[0133] Intra prediction for chroma blocks

[0134] When intra prediction is performed on the current block, prediction for a luma component block (luma block) of the current block and prediction for a chroma component block (chroma block) can be performed, and in this case, the intra prediction mode for the chroma block can be set separately from the intra prediction mode for the luma block.

[0135] For example, an intra prediction mode for a chroma block may be indicated based on intra chroma prediction mode information, and the intra chroma prediction mode information may be signaled in the form of an intra_chroma_pred_mode syntax element. For example, the intra chroma prediction mode information may indicate one of a planar mode, a DC mode, a vertical mode, a horizontal mode, a DM (Derived Mode), and a CCLM (Cross-component linear model) modes. Here, the planar mode may indicate intra prediction mode 0, the DC mode may indicate intra prediction mode 1, the vertical mode may indicate intra prediction mode 26, and the horizontal mode may indicate intra prediction mode 10. DM may be referred to as direct mode. CCLM may be referred to as LM (linear model). The CCLM mode may include any one of L_CCLM, T_CCLM, and LT_CCLM.

[0136] Meanwhile, DM and CCLM are dependent intra prediction modes that use information from a luma block to predict a chroma block. The DM may represent a mode in which the same intra prediction mode as the intra prediction mode for the luma component is applied as the intra prediction mode for the chroma component. In addition, the CCLM may represent an intra prediction mode in which, in the process of generating a prediction block for a chroma block, reconstructed samples of a luma block are subsampled, and then samples derived by applying CCLM parameters α and β to the subsampled samples are used as prediction samples of the chroma block.

[0137] Cross-component linear model (CCLM) mode

[0138] As previously explained, the CCLM mode can be applied to chroma blocks. The CCLM mode is an intra-prediction mode that utilizes the correlation between a luma block and a chroma block corresponding to the luma block. This is performed by deriving a linear model based on surrounding samples of the luma block and surrounding samples of the chroma block. Then, a prediction sample of the chroma block can be derived based on the derived linear model and the restored samples of the luma block.

[0139] Specifically, when the CCLM mode is applied to the current chroma block, parameters for a linear model can be derived based on the surrounding samples used for intra prediction of the current chroma block and the surrounding samples used for intra prediction of the current luma block. For example, a linear model for CCLM can be expressed based on the following mathematical formula.

[0140] [Mathematical Formula 1]

[0141]

[0142] Here, pred c (i,j) may represent a prediction sample at the (i,j) coordinate of the current chroma block in the current CU. rec L '(i,j) may represent a restored sample at the (i,j) coordinate of the current luma block within the CU. For example, the rec L '(i,j) may represent down-sampled reconstructed samples of the current luma block. The linear model coefficients α and β may be signaled, but may also be derived from surrounding samples.

[0143] Palette Mode Overview

[0144] Hereinafter, the palette mode will be described. An encoding device according to an embodiment can encode an image using the palette mode, and a decoding device can decode an image using the palette mode in a corresponding method. The palette mode may be referred to as a palette encoding mode, an intra palette mode, an intra palette encoding mode, etc. The palette mode may be referred to as a type of intra encoding mode and may also be viewed as one of the intra prediction methods. However, similar to the skip mode described above, a separate residual value for the corresponding block may not be signaled.

[0145] In one embodiment, palette mode can be used to improve encoding efficiency when encoding screen content, which is a computer-generated image containing a significant amount of text and graphics. Typically, local regions of an image generated from screen content are separated by sharp edges and are represented by a small number of colors. To exploit this characteristic, palette mode can represent samples for a single block using indices that point to color entries in a palette table.

[0146] To apply the palette mode, information about a palette table may be signaled. In one embodiment, the palette table may include an index value corresponding to each color. To signal the index value, palette index prediction information may be signaled. The palette index prediction information may include an index value for at least a portion of a palette index map. The palette index map may map pixels of the video data to color indices of the palette table.

[0147] The palette index prediction information may include run value information. For at least a portion of the palette index map, the run value information may be information associating a run value with an index value. One run value may be associated with an escape color index. The palette index map may be generated from the palette index prediction information. For example, at least a portion of the palette index map may be generated by determining whether to adjust an index value of the palette index prediction information based on the last index value.

[0148] The current block in the current picture can be encoded or reconstructed according to a palette index map. When the palette mode is applied, pixel values ​​in the current encoding unit can be represented by a small set of representative color values. Such a set can be called a palette. For pixels with values ​​close to the palette colors, a palette index can be signaled. For pixels with values ​​that do not belong to the palette (outside the palette), these pixels are indicated by escape symbols, and the quantized pixel values ​​can be directly signaled. In this document, pixels or pixel values ​​can be described as samples.

[0149] To decode a block encoded in palette mode, a decoding device can decode palette colors and indices. The palette colors can be described in a palette table and encoded using a palette table coding tool. An escape flag can be signaled for each coding unit. The escape flag can indicate whether an escape symbol exists in the current coding unit. If an escape symbol exists, the palette table is increased by one unit (e.g., an index unit), and the last index can be designated as the escape mode. The palette indices of all pixels for one coding unit can form a palette index map and be encoded using a palette index map coding tool.

[0150] For example, to encode a palette table, a palette predictor may be maintained. The palette predictor may be initialized at the beginning of each slice. For example, the palette predictor may be reset to 0. For each entry in the palette predictor, a reuse flag may be signaled, indicating whether it is part of the current palette. The reuse flag may be signaled using run-length coding with a value of 0.

[0151] After this, numbers for new palette entries can be signaled using a zero-order exponent Golomb code. Finally, component values ​​for the new palette entry can be signaled. After encoding the current coding unit, the palette predictor can be updated using the current palette, and entries from the previous palette predictor that are not reused in the current palette can be appended to the end of the new palette predictor (until the allowed maximum size is reached), which is called palette stuffing.

[0152] For example, to encode a palette index map, indices can be encoded using horizontal or vertical scan. The scan order can be signaled through the bitstream using the parameter palette_transpose_flag indicating the scan direction. For example, when horizontal scan is applied to scan indices for samples in the current encoding unit, palette_transpose_flag can have a first value (e.g., 0), and when vertical scan is applied, palette_transpose_flag can have a second value (e.g., 1). FIG. 11 illustrates an embodiment of horizontal scan and vertical scan according to an embodiment.

[0153] Additionally, in one embodiment, the palette index may be encoded using the 'INDEX' mode and the 'COPY_ABOVE' mode. The two modes may be signaled using a single flag, except that when horizontal scanning is used, the mode of the palette index is signaled for the top row, when vertical scanning is used, the mode of the palette index is signaled for the leftmost column, and when the previous mode is 'COPY_ABOVE'.

[0154] In 'INDEX' mode, the palette index can be explicitly signaled. For both 'INDEX' and 'COPY_ABOVE' modes, a run value indicating the number of pixels encoded using the same mode can be signaled.

[0155] The encoding order for the index map can be set as follows. First, the number of index values ​​for a coding unit can be signaled. This can be done after the actual index values ​​for the entire coding unit are signaled using truncated binary coding. Both the number of indices and the index values ​​can be encoded in bypass mode. This allows for grouping bypass bins related to the indices. Then, the palette mode (INDEX or COPY_ABOVE) and the run value can be signaled in an interleaved manner.

[0156] Finally, component escape values ​​corresponding to escape samples for the entire encoding unit can be grouped together and encoded in bypass mode. An additional syntax element, last_run_type_flag, can be signaled after the index value. By using last_run_type_flag along with the number of indices, the signaling of the run value corresponding to the last run in the block can be omitted.

[0157] In one embodiment, a dual tree type that performs independent encoding unit partitioning for luma and chroma components may be used for the I slice. The palette mode may be applied to the luma and chroma components separately or together. If the dual tree is not applied, the palette mode may be applied to all of the Y, Cb, and Cr components.

[0158] In one embodiment, the signaling of syntax elements for palette mode may be encoded and signaled as shown in FIGS. 12 to 19. FIGS. 12 to 13 illustrate continuous syntax in a coding unit (CU) for palette mode, and FIGS. 14 to 19 illustrate continuous syntax for palette mode.

[0159] Hereinafter, each syntax element is described. The palette mode flag pred_mode_plt_flag can indicate whether the palette mode is applied to the current encoding unit. For example, the first value (eg 0) of pred_mode_plt_flag can indicate that the palette mode is not applied to the current encoding unit. The second value (eg 1) of pred_mode_plt_flag can indicate that the palette mode is applied to the current encoding unit. If pred_mode_plt_flag is not obtained from the bitstream, the value of pred_mode_plt_flag can be determined as the first value.

[0160] The parameter PredictorPaletteSize[ startComp ] can indicate the size of the predictor palette for startComp, the first color component of the current palette table.

[0161] The parameter PalettePredictorEntryReuseFlags[ i ] may be information indicating whether an entry is reused. For example, the first value (e.g., 0) of PalettePredictorEntryReuseFlags[ i ] may indicate that the ith entry of the predictor palette is not an entry of the current palette, and the second value (e.g., 1) may indicate that the ith entry of the predictor palette can be reused in the current palette. The initial value for the use of PalettePredictorEntryReuseFlags[ i ] may be set to 0.

[0162] The parameter palette_predictor_run can indicate the number of zeros preceding non-zero entries in the array PalettePredictorEntryReuseFlags.

[0163] The parameter num_signalled_palette_entries may indicate the number of entries in the current palette that are explicitly signaled for the first color component startComp of the current palette table. If num_signalled_palette_entries is not obtained from the bitstream, the value of num_signalled_palette_entries may be determined to be 0.

[0164] The parameter CurrentPaletteSize[startComp] can indicate the size of the current palette for the first color component startComp in the current palette table. It can be calculated as follows: The value of CurrentPaletteSize[startComp] can range from 0 to palette_max_size.

[0165] [Equation 2]

[0166] CurrentPaletteSize[ startComp ] = NumPredictedPaletteEntries + num_signalled_palette_entries

[0167] The parameter new_palette_entries[ cIdx ][ i ] can indicate the value of the i-th signaled palette entry for the color component cIdx.

[0168] The parameter PredictorPaletteEntries[ cIdx ][ i ] can represent the i-th element in the predictor palette for the color component cIdx.

[0169] The parameter CurrentPaletteEntries[ cIdx ][ i ] can represent the i-th element in the current palette for the color component cIdx. PredictorPaletteEntries and CurrentPaletteEntries can be created using the formulas shown in Fig. 20.

[0170] The parameter palette_escape_val_present_flag can indicate whether an escape encoding sample exists. For example, a first value (eg 0) of palette_escape_val_present_flag can indicate that no escape encoding sample exists for the current encoding unit, and a second value (eg 1) of palette_escape_val_present_flag can indicate that the current encoding unit includes at least one escape encoding sample. If palette_escape_val_present_flag is not obtained from the bitstream, the value of palette_escape_val_present_flag can be determined as 1.

[0171] The parameter MaxPaletteIndex can indicate the maximum available palette index value for the current encoding unit. The value of MaxPaletteIndex can be determined by CurrentPaletteSize[startComp] + palette_escape_val_present_flag.

[0172] The parameter num_palette_indices_minus1 may indicate the number of palette indices explicitly or implicitly signaled for the current block. For example, the value of num_palette_indices_minus1 plus 1 may indicate the number of palette indices explicitly or implicitly signaled for the current block. If num_palette_indices_minus1 is not included in the bitstream, the value of num_palette_indices_minus1 may be determined as 0.

[0173] The parameter palette_idx_idc may be an indicator of an index into the palette table CurrentPaletteEntries. The value of palette_idx_idc may have a value from 0 to MaxPaletteIndex for the first index of the block, and a value from 0 to MaxPaletteIndex-1 for the remaining indices of the block. If the value of palette_idx_idc is not obtained from the bitstream, the value of palette_idx_idc may be determined as 0.

[0174] The parameter PaletteIndexIdc[ i ] can be an array storing the value of the i-th palette_idx_idc signaled explicitly or implicitly. All elements of PaletteIndexIdc[ i ] can be initialized to 0.

[0175] The parameter copy_above_indices_for_final_run_flag may indicate information indicating whether previous indices are copied for the final run, and a first value (eg 0) may indicate that the palette index at the last position of the current coding unit is explicitly signaled or implicitly signaled through the bitstream, and a second value (eg 1) may indicate that the palette index at the last position of the current coding unit is explicitly signaled or implicitly signaled through the bitstream. If copy_above_indices_for_final_run_flag is not obtained from the bitstream, the value of copy_above_indices_for_final_run_flag may be determined to be 0.

[0176] The parameter palette_transpose_flag may be information indicating a scanning method used to scan an index for a pixel of the current encoding unit. For example, a first value (eg 0) of palette_transpose_flag may indicate that a horizontal scan is applied to scan an index for a pixel of the current encoding unit, and a second value (eg 1) of palette_transpose_flag may indicate that a vertical scan is applied to scan an index for a pixel of the current encoding unit. If palette_transpose_flag is not obtained from the bitstream, the value of palette_transpose_flag may be determined to be 0.

[0177] The first value (e.g., 0) of the parameter copy_above_palette_indices_flag may indicate that an indicator indicating the palette index of the sample is obtained or derived from an encoded value of the bitstream. The second value (e.g., 1) of copy_above_palette_indices_flag may indicate that the palette index is the same as the palette index of a surrounding sample. For example, a surrounding sample may be a sample that is present at the same position as the current sample in the left column of the current sample when the current vertical scan is used. Alternatively, a surrounding sample may be a sample that is present at the same position as the current sample in the upper row of the current sample when the current horizontal scan is used.

[0178] The first value (eg 0) of the parameter CopyAboveIndicesFlag[ xC ][ yC ] may indicate that the palette indices are obtained explicitly or implicitly from the bitstream. The second value (eg 1) may indicate that the palette indices are generated by copying the palette indices of the left column if the current vertical scan is used, or by copying the palette indices of the upper row if the current horizontal scan is used. Here, xC, yC are coordinate indicators indicating the position of the current sample relative to the upper left sample of the current picture. The value of PaletteIndexMap[ xC ][ yC ] may have a value between 0 and ( MaxPaletteIndex - 1).

[0179] The parameters PaletteIndexMap[ xC ][ yC ] represent palette indices, which can be, for example, indices into an array represented by CurrentPaletteEntries. The array indices xC and yC are coordinate indicators indicating the coordinates of the current sample relative to the upper left sample of the current picture, as before. PaletteIndexMap[ xC ][ yC ] can have values ​​from 0 to (MaxPaletteIndex -1).

[0180] The parameter PaletteRun can indicate the number of consecutive positions with the same palette index when the value of CopyAboveIndicesFlag[ xC ][ yC ] is 0. On the other hand, when the value of CopyAboveIndicesFlag[ xC ][ yC ] is 1, PaletteRun can indicate the number of consecutive positions with the same palette index as the palette index at the position in the upper row when the current scan direction is a horizontal scan or the palette index at the position in the left column when the current scan direction is a vertical scan.

[0181] The parameter PaletteMaxRun can indicate the maximum available value of PaletteRun. The value of PaletteMaxRun can be an integer greater than 0.

[0182] The parameter palette_run_prefix can indicate the prefix part used in binarization of PaletteRun.

[0183] The parameter palette_run_suffix can indicate the suffix used in the binarization of PaletteRun. If palette_run_suffix is ​​not obtained from the bitstream, its value can be determined as 0.

[0184] The value of PaletteRun can be determined as follows. For example, if the value of palette_run_prefix is ​​less than 2, it can be calculated as follows.

[0185] [Equation 3]

[0186] PaletteRun = palette_run_prefix

[0187] Otherwise, if the value of palette_run_prefix is ​​2 or greater, it can be calculated as follows:

[0188] [Equation 4]

[0189] PrefixOffset = 1 << (palette_run_prefix - 1)

[0190] PaletteRun = PrefixOffset + palette_run_suffix

[0191] The parameter palette_escape_val can indicate a quantized escape encoding sample value for a component. The parameter PaletteEscapeVal[ cIdx ][ xC ][ yC ] can indicate the escape value of a sample whose value of PaletteIndexMap[ xC ][ yC ] is (MaxPaletteIndex - 1) and whose value of palette_escape_val_present_flag is 1. Here, cIdx can indicate a color component. The array indicators xC and yC can be position indicators that indicate the position of the current sample as a relative distance from the upper left sample of the current picture, as before.

[0192] Chroma prediction mode signaling when palette mode is applied

[0193] Hereinafter, a method for signaling chroma prediction mode information when palette mode is applied is described. In one embodiment, chroma prediction encoding, such as CCLM, may not be applied to a coding unit (or coding block) to which palette mode is applied. Additionally, intra_chroma_pred_mode may not be signaled for a coding unit to which palette mode is applied.

[0194] When CCLM is determined to be available for a chroma component, an on / off flag for it may be signaled. In one embodiment, the availability of CCLM may be determined using sps_palette_enabled_flag or sps_plt_enabled_flag, and the on / off flag signaling of CCLM may be signaled using sps_palette_enabled_flag or sps_plt_enabled_flag.

[0195] Meanwhile, in the example of FIG. 13, the signaling of CCLM information (e.g., cclm_mode_flag) does not take into account whether the palette mode of the encoding unit is applied. For example, the example of FIG. 13 describes an embodiment in which certain chroma prediction information (e.g., cclm_mode_flag, intra_chroma_pred_mode) is signaled when the palette mode is not applied to the current encoding unit or the encoding unit is not a dual tree chroma.

[0196] In such cases, unnecessary syntax signaling may occur as certain chroma prediction information is signaled to a palette-encoded block in a single-tree structure. In addition, as certain chroma prediction information is signaled in this way, chroma intra prediction according to CCLM may be performed even though the chroma components in the encoding unit are encoded in palette mode, and chroma intra prediction according to DM mode may be performed.

[0197] In order to solve the above problem, the syntax for the coding unit can be modified as in FIG. 21. FIG. 21 shows the syntax of the coding unit that indicates that predetermined chroma intra prediction information (2120) is obtained from the bitstream when the value of pred_mode_plt_flag (2110), which is a parameter indicating whether the palette mode is applied to the current coding unit, is a first value (eg 0) indicating that the palette mode is not applied. In addition, the syntax of FIG. 21 shows that predetermined chroma intra prediction information (2120) is not obtained from the bitstream when the value of pred_mode_plt_flag (2110) is a second value (eg 1) indicating that the palette mode is applied.

[0198] As in the embodiment of FIG. 21, certain chroma prediction information (eg cclm_mode_flag, intra_chroma_pred_mode) may be signaled depending on whether a palette mode is applied to the current encoding unit so that certain chroma prediction information (eg cclm_mode_flag, intra_chroma_pred_mode) may be signaled.

[0199] Hereinafter, signaling of a predetermined chroma intra prediction information according to the syntax of FIG. 21 will be described with reference to FIG. 22. An encoding device or a decoding device according to an embodiment may determine whether a palette mode is applied to a current encoding unit (e.g., an encoding block) (S2210). For example, the decoding device may determine whether a palette mode is applied to the current encoding unit based on the value of pred_mode_plt_flag.

[0200] Next, when the palette mode is applied to the current encoding unit, the encoding device can encode the corresponding encoding unit in the palette mode, and the decoding device can decode the corresponding encoding unit in the palette mode. Accordingly, the encoding device or the decoding device may not signal predetermined chroma prediction information (S2220). For example, the encoding device may not encode predetermined chroma prediction information (e.g., cclm_mode_flag, intra_chroma_pred_mode), and the decoding device may not obtain predetermined chroma prediction information from the bitstream.

[0201] Next, if the palette mode is not applied to the current encoding unit, the encoding device or the decoding device may signal the predetermined chroma prediction information. In one embodiment, the encoding device or the decoding device may determine whether the CCLM mode is available for the current encoding unit (S2230), and if available, may signal the CCLM parameter (S2240), and if not available, may signal the intra_chroma_pred_mode parameter (S2250).

[0202] Hereinafter, the steps of the decoding device acquiring chroma prediction information will be described in more detail with reference to FIG. 23. If the palette mode is not applied to the current encoding unit (S2310), the decoding device can determine whether the CCLM mode is available for the current encoding unit (S2320). For example, if the parameter sps_cclm_enabled_flag indicating the availability of the CCLM mode signaled in the sequence parameter set has a first value (e.g., 0) indicating that the CCLM mode is not available, the decoding device can determine that the CCLM mode is not available for the current encoding unit. Alternatively, the decoding device may determine that the CCLM mode is available for the current coding unit if the slice type parameter sh_slice_type transmitted through the slice header indicates that the current slice type is not an I slice or the size of the luma component of the current block is less than 64, when the sps_cclm_enabled_flag has the second value (e.g. 1) indicating that the cclm mode is available. Alternatively, the decoding device may determine that the CCLM mode is available for the current coding unit if the sps_qtbtt_dual_tree_intra_flag parameter signaled in the sequence parameter set does not indicate that each coding tree unit (CTU) included in the I slice is divided into luma component blocks of size 64 x 64 and that the in-slice CTU becomes a header node of the dual tree.

[0203] If the CCLM mode is available, the decoding device can determine whether the CCLM mode is applied to the current encoding unit (S2330). For example, the decoding device can obtain the cclm_mode_flag parameter from the bitstream. The parameter cclm_mode_flag can indicate whether the CCLM mode is applied. A first value (eg 0) of cclm_mode_flag can indicate that the CCLM mode is not applied. A second value (eg 1) of cclm_mode_flag can indicate that any one of T_CCLM, L_CCLM, and LT_CCLM CCLM modes can be applied. If the value of cclm_mode_flag is not obtained from the bitstream, the value of cclm_mode_flag can be determined as 0.

[0204] When the CCLM mode is applied (e.g. cclm_mode_flag == 1), the decoding device can obtain the parameter cclm_mode_idx from the bitstream (S2340). The parameter cclm_mode_idx can indicate an index indicating a CCLM mode used to decode the chroma component of the current encoding unit among T_CCLM, L_CCLM, and LT_CCLM.

[0205] Meanwhile, if the CCLM mode is unavailable or not applied (e.g., cclm_mode_flag == 0), the decoding device can obtain the parameter intra_chroma_pred_mode from the bitstream (S2350). As described above, the parameter intra_chroma_pred_mode can indicate an intra prediction mode used to decode the chroma component of the current encoding unit. For example, the intra_chroma_pred_mode can indicate one of the planar mode, the DC mode, the vertical mode, the horizontal mode, and the DM (Derived Mode) mode.

[0206] Encoding method

[0207] A method of performing encoding by an encoding device according to an embodiment using the method described below will be described with reference to FIG. 24. The encoding device according to an embodiment includes a memory and at least one processor, and the at least one processor can perform the encoding method described below.

[0208] First, the encoding device can determine the current block by segmenting the image (S2410). For example, the encoding device can segment the image and determine the current block as described above with reference to FIGS. 4 to 6. In the segmentation process according to one embodiment, image segmentation information can be encoded, and the encoded image segmentation information can be generated as a bitstream.

[0209] Next, the encoding device can determine the prediction mode of the current block (S2420). Next, the encoding device can encode a palette mode flag (e.g., pred_mode_plt_flag) indicating whether the prediction mode of the current block is the palette mode based on whether the prediction mode of the current block is the palette mode (S2430). The encoded palette mode flag can be generated as a bitstream.

[0210] Next, the encoding device can encode palette mode encoding information that encodes the current block in palette mode based on the tree type of the current block and whether the prediction mode of the current block is palette mode (S2440). For example, if the encoding device determines that the palette mode is applied, the encoding device can generate a bitstream by generating palette mode encoding information using the palette_coding() syntax as described with reference to FIGS. 14 to 19.

[0211] Meanwhile, the step of encoding palette mode encoding information for the current block may include a step of encoding palette mode encoding information for a luma component of the current block. For example, when the tree type of the current block is a single tree type or a dual tree luma type and the palette mode is applied to the current block, information for palette mode prediction for the luma component of the current block may be encoded, and a bitstream may be generated using the encoded information.

[0212] At this time, the palette mode encoding information for the luma component of the current block can be encoded based on the size of the luma component block of the current block. For example, as in the embodiment of FIG. 13 above, the encoding device can generate the palette mode encoding information as a bitstream according to the palette_coding() syntax defined based on the width (e.g. cbWidth) of the luma component block of the current block and the height (e.g. cbHeight) of the luma component block of the current block.

[0213] In addition, the step of encoding palette mode encoding information for the current block may further include a step of encoding palette mode encoding information for chroma components of the current block. For example, when the palette mode is applied to the current block and the tree type of the current block is a dual tree chroma type, information for palette mode prediction for chroma components of the current block may be encoded, and a bitstream may be generated using the encoded information.

[0214] At this time, the palette mode encoding information for the chroma component of the current block may be encoded based on the size of the chroma component block of the current block. For example, as in the embodiment of FIG. 13 above, the encoding device may generate the palette mode encoding information as a bitstream according to the palette_coding() syntax defined based on the width of the chroma component block of the current block (e.g., cbWidth / subWidthC) and the height of the chroma component block of the current block (e.g., cbHeight / subHeightC). Here, subWidthC and subHeightC may be the height and width ratios of the chroma component block relative to the luma component block. In one embodiment, subWidthC and subHeightC may be determined based on chroma_format_idc and separate_cour_plane_flag as in FIG. 10.

[0215] Next, the encoding device can encode chroma component prediction information of the current block if the prediction mode of the current block is not a palette mode (S2450). The chroma component prediction information may be information for CCLM (Cross-component linear model) prediction (e.g., cclm_mode_flag, cclm_mode_idx) or chroma component intra prediction information (e.g., intra_chroma_pred_mode).

[0216] Meanwhile, the encoding device may not encode the chroma component prediction information if the palette mode is applied to the current block.

[0217] In more detail, the information for the CCLM prediction may include a CCLM flag (e.g., cclm_mode_flag) indicating whether CCLM prediction is performed and a CCLM mode index (e.g., cclm_mode_idx) indicating the mode of CCLM prediction. The CCLM flag may be encoded and generated into the bitstream if CCLM prediction is available for the current block. The CCLM mode index may be encoded and generated into the bitstream if the CCLM flag indicates that CCLM prediction is performed.

[0218] Meanwhile, if the CCLM flag indicates that the CCLM prediction is not performed, the chroma component intra prediction information (e.g. intra_chroma_pred_mode) may be encoded and generated as the bitstream.

[0219] Decryption method

[0220] A method of performing decryption by a decryption device according to an embodiment using the method described below is described with reference to FIG. 25. The decryption device according to an embodiment includes a memory and at least one processor, and the at least one processor can perform the following decryption method.

[0221] First, the decoding device can segment the image to determine the current block (S2510). For example, the decoding device can segment the image to determine the current block as described above with reference to FIGS. 4 to 6 . In the segmentation process according to one embodiment, image segmentation information obtained from the bitstream may be used.

[0222] Next, the decoding device can identify whether the palette mode is applied to the current block based on the palette mode flag (e.g. pred_mode_plt_flag) obtained from the bitstream (S2520).

[0223] Next, the decoding device can obtain palette mode encoding information for the current block from the bitstream based on the tree type of the current block and whether the palette mode is applied to the current block (S2530). For example, if the decoding device determines that the palette mode is applied, the decoding device can obtain palette mode encoding information from the bitstream using the palette_coding() syntax, as described with reference to FIGS. 14 to 19.

[0224] Meanwhile, the step of obtaining palette mode encoding information for the current block may include a step of obtaining palette mode encoding information for a luma component of the current block. For example, if the tree type of the current block is a single tree type or a dual tree luma type and a palette mode is applied to the current block, information for palette mode prediction for the luma component of the current block may be obtained from a bitstream.

[0225] At this time, the palette mode encoding information for the luma component of the current block can be obtained based on the size of the luma component block of the current block. For example, as in the embodiment of FIG. 13 above, the palette_coding() syntax can be performed based on the width (e.g., cbWidth) of the luma component block of the current block and the height (e.g., cbHeight) of the luma component block of the current block.

[0226] Meanwhile, the step of obtaining palette mode encoding information for the current block may further include a step of obtaining palette mode encoding information for chroma components of the current block. For example, when the palette mode is applied to the current block and the tree type of the current block is a dual tree chroma type, information for palette mode prediction for the chroma components of the current block may be obtained from the bitstream.

[0227] At this time, palette mode encoding information for the chroma component of the current block can be obtained based on the size of the chroma component block of the current block. For example, as in the embodiment of FIG. 13 above, the palette_coding() syntax can be performed based on the width of the chroma component block of the current block (e.g., cbWidth / subWidthC) and the height of the chroma component block of the current block (e.g., cbHeight / subHeightC). subWidthC and subHeightC can be the height and width ratios of the chroma component block to the luma component block. In one embodiment, subWidthC and subHeightC can be determined based on chroma_format_idc and separate_cour_plane_flag, as in FIG. 10.

[0228] Next, if the palette mode is not applied to the current block, the decoding device can obtain chroma component prediction information of the current block from the bitstream (S2540). For example, if the palette mode is not applied, the decoding device can obtain CCLM prediction information (e.g., cclm_mode_flag, cclm_mode_idx) or chroma component intra prediction information (e.g., intra_chroma_pred_mode) from the bitstream, as described with reference to FIG. 23. On the other hand, if the palette mode is applied to the current block, the chroma component prediction information may not be obtained from the bitstream.

[0229] In more detail, the information for the CCLM prediction may include a CCLM flag (e.g., cclm_mode_flag) indicating whether CCLM prediction is performed and a CCLM mode index (e.g., cclm_mode_idx) indicating the mode of CCLM prediction. The CCLM flag may be obtained from the bitstream if CCLM prediction is available for the current block. The CCLM mode index may be obtained from the bitstream if the CCLM flag indicates that CCLM prediction is performed.

[0230] Meanwhile, if the CCLM flag indicates that the CCLM prediction is not performed, the chroma component intra prediction information (e.g. intra_chroma_pred_mode) can be obtained from the bitstream.

[0231] Application Examples

[0232] While the exemplary methods of this disclosure are presented as a series of operations for clarity of description, this is not intended to limit the order in which the steps are performed, and individual steps may be performed simultaneously or in different orders, if desired. To implement a method according to this disclosure, additional steps may be included in addition to the steps illustrated, some steps may be excluded and the remaining steps included, or some steps may be excluded and additional steps included.

[0233] In the present disclosure, a video encoding device or video decoding device performing a predetermined operation (step) may perform an operation (step) of checking the conditions or circumstances under which the operation (step) is performed. For example, if it is described that a predetermined operation is performed when a predetermined condition is satisfied, the video encoding device or video decoding device may perform an operation of checking whether the predetermined condition is satisfied and then perform the predetermined operation.

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

[0235] Additionally, various embodiments of the present disclosure may be implemented by hardware, firmware, software, or a combination thereof. In the case of hardware implementation, the embodiments may 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.

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

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

[0238] As illustrated in FIG. 26, a content streaming system to which an embodiment of the present disclosure is applied may largely include an encoding server, a streaming server, a web server, a media storage, a user device, and a multimedia input device.

[0239] The encoding server compresses content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data, generates a bitstream, and transmits it to the streaming server. Alternatively, if multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server may be omitted.

[0240] The above 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 during the process of transmitting or receiving the bitstream.

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

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

[0243] Examples of the user devices may include mobile phones, smart phones, laptop computers, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigation devices, slate PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, HMDs), digital TVs, desktop computers, digital signage, etc.

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

[0245] The scope of the present disclosure includes software or machine-executable instructions (e.g., operating systems, applications, firmware, programs, etc.) that cause operations according to various embodiments of the present disclosure to be executed on a device or a computer, and a non-transitory computer-readable medium having such software or instructions stored thereon and executable on the device or computer.

[0246] Embodiments according to the present disclosure can be used to encode / decode images.

Claims

1. In a video decoding method performed by a video decoding device, A step of dividing an image to determine the current block; A step of identifying whether a palette mode is applied to the current block based on a palette mode flag obtained from a bitstream; A step of obtaining palette mode encoding information for the current block from a bitstream based on the tree type of the current block and whether the palette mode is applied to the current block; and An image decoding method comprising a step of obtaining chroma component prediction information of the current block from the bitstream if the palette mode is not applied to the current block.

2. In paragraph 1, An image decoding method that does not obtain the chroma component prediction information from the bitstream when the palette mode is applied to the current block.

3. In paragraph 1, The step of obtaining palette mode encoding information for the current block above is: A step of obtaining palette mode encoding information for a luma component of the current block, An image decoding method in which, when the tree type of the current block is a single tree type or a dual tree luma type and a palette mode is applied to the current block, information for predicting a palette mode for a luma component of the current block is obtained from a bitstream.

4. In paragraph 3, An image decoding method, wherein the step of obtaining palette mode encoding information for the luma component of the current block is performed based on the size of the luma component block of the current block.

5. In paragraph 1, The step of obtaining palette mode encoding information for the current block above is: A step of obtaining palette mode encoding information for chroma components of the current block, An image decoding method in which information for predicting a palette mode for a chroma component of the current block is obtained from the bitstream when a palette mode is applied to the current block and the tree type of the current block is a dual tree chroma type.

6. In paragraph 5, An image decoding method, wherein the step of obtaining palette mode encoding information for the chroma component of the current block is performed based on the size of the chroma component block of the current block.

7. In paragraph 1, The above chroma component prediction information is a method for decoding an image, which is information for CCLM (Cross-component linear model) prediction or chroma component intra prediction information.

8. In paragraph 7, The information for the above CCLM prediction includes a CCLM flag indicating whether CCLM prediction is performed and a CCLM mode index indicating the mode of CCLM prediction, The CCLM flag is obtained from the bitstream if CCLM prediction is available for the current block, A method of decoding an image, wherein the CCLM mode index is obtained from the bitstream when the CCLM flag indicates that CCLM prediction is performed.

9. In paragraph 8, A video decoding method in which the chroma component intra prediction information is obtained from the bitstream when the CCLM flag indicates that the CCLM prediction is not performed.

10. An image decoding device comprising a memory and at least one processor, At least one processor above Segment the image to determine the current block, Based on the palette mode flag obtained from the bitstream, identify whether the palette mode is applied to the current block, Based on the tree type of the current block and whether the palette mode is applied to the current block, palette mode encoding information for the current block is obtained from the bitstream, An image decoding device that obtains chroma component prediction information of the current block from the bitstream when the palette mode is not applied to the current block.

11. In a video encoding method performed by a video encoding device, A step of dividing the above image to determine the current block; A step of determining a prediction mode of the current block; A step of encoding a palette mode flag indicating whether the prediction mode of the current block is the palette mode based on whether the prediction mode of the current block is the palette mode; A step of encoding palette mode encoding information that encodes the current block in palette mode based on the tree type of the current block and whether the prediction mode of the current block is palette mode; and An image encoding method comprising a step of encoding chroma component prediction information of the current block if the prediction mode of the current block is not a palette mode.

12. In paragraph 11, An image encoding method that does not encode the chroma component prediction information when the palette mode is applied to the current block.

13. In paragraph 12, An image encoding method wherein the above chroma component prediction information is information for CCLM (Cross-component linear model) prediction or chroma component intra prediction information.

14. In paragraph 11, When the palette mode is applied to the current block and the tree type of the current block is a dual tree chroma type, palette mode encoding information that encodes the chroma component of the current block in the palette mode is encoded, An image encoding method in which information for CCLM (Cross-component linear model) prediction or chroma component intra prediction information is encoded using the chroma component prediction information when the palette mode is not applied to the current block.

15. A method for transmitting a bitstream generated by the video encoding method of Article 11.