Image encoding method and apparatus therefor
Patent Information
- Application Number
- CN202180047844.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-06-08
- Filing Date
- 2021-05-11
- Publication Date
- 2026-10-27
- Estimated Expiration
- 2041-05-11
AI Technical Summary
因此,当使用诸如传统有线/无线宽带线路这样的介质发送图像数据或者使用现有存储介质存储图像/视频数据时,其传输成本和存储成本增加
[0020]根据本文献,可以增加整体的图像/视频压缩效率。
Smart Images

Figure CN115777198B_ABST
Abstract
Description
Technical Field
[0001] This document relates to image coding technology, and more specifically, to an image coding method based on image transformation in an image coding system and an apparatus for the image coding method. Background Technology
[0002] Today, the demand for high-resolution and high-quality images / videos, such as 4K, 8K, or even higher ultra-high-definition (UHD) images / videos, continues to grow across various sectors. As image / video data becomes higher resolution and higher quality, the amount of information or bits transmitted increases compared to traditional image data. Therefore, transmission and storage costs increase when using media such as traditional wired / wireless broadband lines to transmit image data or when using existing storage media to store image / video data.
[0003] In addition, there is increasing interest and demand for immersive media such as virtual reality (VR), artificial reality (AR) content, or holograms, and broadcasting of images / videos with image features that differ from those of real images such as game images is on the rise.
[0004] Therefore, there is a need for efficient image / video compression technology for effectively compressing, transmitting, storing, and reproducing information with high-resolution, high-quality images / videos that have the various characteristics described above. Summary of the Invention
[0005] Technical issues
[0006] The technical aspect of this disclosure is to provide methods and apparatus for improving image coding efficiency.
[0007] Another technical aspect of this paper is to provide an efficient image coding method and image coding device based on LFSNT.
[0008] Another technical aspect of this document is to provide an image coding method and an image coding device for appropriately performing LFNST according to the tree type.
[0009] Technical solution
[0010] According to embodiments of this document, an image decoding method performed by a decoding device is provided. The method may include the following steps: receiving image information including residual information and an LFNST index from a bitstream; deriving transform coefficients based on the residual information; deriving a flag variable related to whether to apply LFNST to the current block based on the LFNST index; and performing LFNST based on the flag variable and the transform coefficients, wherein the flag variable may be derived for each color component of the current block.
[0011] The flag variable may include at least one of a first flag variable for the luminance component, a second flag variable for the Cb component, and a third flag variable for the Cr component.
[0012] Based on the fact that the tree type of the current block is a single tree and the value of the LFNST index is greater than 0, the first flag variable can be set to 1 and the second flag variable and the third flag variable can be set to 0.
[0013] Based on the fact that the tree type of the current block is dual-tree brightness and the value of the LFNST index is greater than 0, the first flag variable can be set to 1.
[0014] Based on the fact that the tree type of the current block is dual-tree chromatic and the value of the LFNST index is greater than 0, the second flag variable and the third flag variable can be set to 1.
[0015] Based on the fact that the current block's tree type is a single tree and the current block's color format is 4:4:4, LFSNT can be performed on the current block's chroma components.
[0016] According to another embodiment of this document, an image encoding method performed by an encoding device is provided. The method may include the following steps: deriving a prediction sample for a current block; deriving a residual sample for the current block based on the prediction sample; deriving a flag variable related to whether to apply LFNST to the current block; and performing LFNST based on the flag variable and the residual sample, wherein the flag variable may be derived for each color component of the current block.
[0017] According to another embodiment of this document, a digital storage medium can be provided for storing image data including encoded image information and / or bitstream generated according to an image encoding method performed by an encoding device.
[0018] According to yet another embodiment of this document, a digital storage medium can be provided that stores image data including encoded image information and / or bitstreams that cause a decoding device to perform an image decoding method.
[0019] Technical effect
[0020] According to this document, the overall image / video compression efficiency can be increased.
[0021] According to this document, the efficiency of LFNST-based image coding methods and image coding devices can be improved.
[0022] According to this document, an image coding method and an image coding device for appropriately performing LFNST based on tree type can be provided.
[0023] The effects achievable through the specific examples of this disclosure are not limited to those listed above. For example, various technical effects may exist that can be understood or derived from this disclosure by one of ordinary skill in the art. Therefore, the specific effects of this disclosure are not limited to those explicitly described in this disclosure, but may include various effects that can be understood or derived from the technical features of this disclosure. Attached Figure Description
[0024] Figure 1 Examples of video / image coding systems applicable to this disclosure are illustrated schematically.
[0025] Figure 2 This is a schematic illustration of the configuration of a video / image encoding device applicable to this disclosure.
[0026] Figure 3 This is a schematic illustration of the configuration of a video / image decoding device applicable to this disclosure.
[0027] Figure 4 Multiple variations of the implementation scheme according to this document are illustrated schematically.
[0028] Figure 5 An example of an RST according to an embodiment of this document is shown.
[0029] Figure 6 The configuration of a sample according to a chroma format according to an embodiment of this document is shown.
[0030] Figure 7 This is a flowchart illustrating the operation of a video decoding device according to an embodiment of this document.
[0031] Figure 8 This is a flowchart illustrating the operation of a video encoding device according to an embodiment of this document.
[0032] Figure 9 The structure of the content streaming system applied in this document is illustrated. Detailed Implementation
[0033] This disclosure may be modified in various forms, and specific embodiments thereof will be described and illustrated in the accompanying drawings. However, these embodiments are not intended to limit this disclosure. The terminology used in the following description is for the purpose of describing specific embodiments only and is not intended to limit this disclosure. Singular expressions include plural expressions, provided that they are clearly read differently. Terms such as “comprising” and “having” are intended to indicate the presence of the features, numbers, steps, operations, elements, components or combinations thereof used in the following description, and therefore it should be understood that the possibility of having or adding one or more different features, numbers, steps, operations, elements, components or combinations thereof is not excluded.
[0034] Furthermore, the elements in the figures described in this disclosure are drawn independently for the purpose of illustrating different specific functions, but this does not mean that these elements are implemented by independent hardware or independent software. For example, two or more of these elements may be combined to form a single element, or a single element may be divided into multiple elements. Embodiments in which elements are combined and / or divided are part of this disclosure without departing from its concept.
[0035] Hereinafter, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings. Furthermore, throughout the drawings, similar reference numerals are used to indicate similar elements, and identical descriptions of similar elements will be omitted.
[0036] This document relates to video / image coding. For example, the methods / examples disclosed in this document may relate to the VVC (Multi-Functional Video Coding) standard (ITU-T Rec.H.266), the next generation video / image coding standard after VVC, or other video coding-related standards (e.g., HEVC (High Efficiency Video Coding) standard (ITU-T Rec.H.265), EVC (Essential Video Coding) standard, AVS2 standard, etc.).
[0037] Various implementations related to video / image encoding may be provided in this document, and these implementations may be combined and performed together unless otherwise specified.
[0038] In this document, video can refer to a collection of images over time. Generally, an image refers to a unit of image representing a specific time period, and a slice / tile is a unit that constitutes a slice / image. A slice / image may include one or more coding tree units (CTUs). An image may consist of one or more slices / tiles. An image may consist of one or more groups of tiles. A group of tiles may include one or more tiles.
[0039] A pixel, or image unit, can refer to the smallest unit that makes up a picture (or image). Alternatively, "sample" can be used as the term corresponding to a pixel. A sample can typically represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component. Alternatively, a sample can refer to a pixel value in the spatial domain, or, when the pixel value is transformed to the frequency domain, it can refer to the transform coefficients in the frequency domain.
[0040] A unit can represent a basic unit of image processing. A unit may include a specific region and at least one of the information associated with that region. A unit may include a luminance block and two chrominance (e.g., cb, cr) blocks. Depending on the context, units and terms such as block, region, etc., may be used interchangeably. Typically, an M×N block may include a set (or array) of samples (or sample arrays) or transform coefficients consisting of M columns and N rows.
[0041] In this document, the terms “ / ” and “,” should be interpreted as indicating “and / or”. For example, the expression “A / B” can mean “A and / or B”. Additionally, “A, B” can mean “A and / or B”. Furthermore, “A / B / C” can mean “at least one of A, B, and / or C”. Additionally, “A / B / C” can mean “at least one of A, B, and / or C”.
[0042] Furthermore, in this document, the term "or" should be interpreted as indicating "and / or". For example, the expression "A or B" can include 1) only A, 2) only B, and / or 3) both A and B. In other words, the term "or" in this document should be interpreted as indicating "additionally or alternatively".
[0043] In this disclosure, "at least one of A and B" may mean "only A", "only B" or "both A and B". Furthermore, in this disclosure, the expression "at least one of A or B" or "at least one of A and / or B" may be interpreted as "at least one of A and B".
[0044] Additionally, in this disclosure, "at least one of A, B, and C" may mean "A only", "B only", "C only" or "any combination of A, B, and C". Furthermore, "at least one of A, B, or C" or "at least one of A, B, and / or C" may mean "at least one of A, B, and C".
[0045] Additionally, the brackets used in this disclosure may mean "for example". Specifically, when indicated as "prediction (intra-frame prediction)", it may mean that "intra-frame prediction" is proposed as an example of "prediction". That is, "prediction" in this disclosure is not limited to "intra-frame prediction", and "intra-frame prediction" may be proposed as an example of "prediction". Furthermore, when indicated as "prediction (i.e., intra-frame prediction)", it may also mean that "intra-frame prediction" is proposed as an example of "prediction".
[0046] The technical features described independently in one of the figures in this disclosure may be implemented separately or simultaneously.
[0047] Figure 1 Examples of video / image coding systems applicable to this disclosure are illustrated schematically.
[0048] Reference Figure 1 A video / image encoding system may include a first device (source device) and a second device (receiver). The source device may transmit encoded video / image information or data to the receiving device in the form of a file or stream via a digital storage medium or network.
[0049] The source device may include a video source, an encoding device, and a transmitter. The receiving device may include a receiver, a decoding device, and a renderer. The encoding device may be referred to as a video / image encoding device, and the decoding device may be referred to as a video / image decoding device. The transmitter may be included in the encoding device. The receiver may be included in the decoding device. The renderer may include a display, and the display may be configured as a separate device or an external component.
[0050] Video sources can acquire video / images through processes that capture, synthesize, or generate video / images. Video sources may include video / image capture devices and / or video / image generation devices. Video / image capture devices may include, for example, one or more cameras, video / image archives including previously captured video / images, etc. Video / image generation devices may include, for example, computers, tablets, and smartphones, and can generate video / images (electronically). For example, virtual video / images can be generated by computers, etc. In this case, the video / image capture process can be replaced by a process that generates related data.
[0051] Encoding devices can encode input video / images. They can perform a series of processes such as prediction, transformation, and quantization to achieve compression and encoding efficiency. The encoded data (encoded video / image information) can be output as a bitstream.
[0052] The transmitter can send encoded images / image information or data, output as a bitstream, to the receiver of the receiving device in the form of a file or stream via a digital storage medium or network. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmitter can include elements for generating media files according to a predetermined file format and may include elements for transmission via a broadcast / communication network. The receiver can receive / extract the bitstream and send the received bitstream to a decoding device.
[0053] Decoding devices can decode video / images by performing a series of processes such as inverse quantization, inverse transform, and prediction, which correspond to the operations of encoding devices.
[0054] The renderer can render decoded video / images. The rendered video / images can then be displayed on a monitor.
[0055] Figure 2 This is a schematic illustration of a configuration of a video / image encoding apparatus applicable to this disclosure. Hereinafter, the term "video encoding apparatus" may include an image encoding apparatus.
[0056] Reference Figure 2 The encoding device 200 includes an image segmenter 210, a predictor 220, a residual processor 230, an entropy encoder 240, an adder 250, a filter 260, and a memory 270. The predictor 220 may include an inter-frame predictor 221 and an intra-frame predictor 222. The residual processor 230 may include a transform 232, a quantizer 233, an inverse quantizer 234, and an inverse transform 235. The residual processor 230 may also include a subtractor 231. The adder 250 may be referred to as a reconstructor or a reconstruction block generator. According to embodiments, the image segmenter 210, predictor 220, residual processor 230, entropy encoder 240, adder 250, and filter 260 may be constituted by at least one hardware component (e.g., an encoder chipset or a processor). Additionally, the memory 270 may include a decoded image buffer (DPB) or may be constituted by a digital storage medium. The hardware component may also include the memory 270 as an internal / external component.
[0057] Image segmenter 210 can segment an input image (or picture or frame) input to encoding device 200 into one or more processors. For example, a processor may be referred to as a coding unit (CU). In this case, coding units can be recursively segmented from coding tree units (CTUs) or maximum coding units (LCUs) according to a quadtree-binary-trinary tree (QTBTTT) structure. For example, a coding unit can be segmented into multiple deeper coding units based on a quadtree structure, a binary tree structure, and / or a ternary structure. In this case, for example, a quadtree structure can be applied first, followed by a binary tree structure and / or a ternary structure. Alternatively, a binary tree structure can be applied first. The encoding process according to this disclosure can be performed based on the final coding unit that is no longer segmented. In this case, the maximum coding unit can be used as the final coding unit based on encoding efficiency according to image characteristics, or, if necessary, the coding unit can be recursively segmented into deeper coding units, and the coding unit with the optimal size can be used as the final coding unit. Here, the encoding process may include prediction, transformation, and reconstruction processes, which will be described later. As another example, the processor may also include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit can be separated or divided from the final encoding unit described above. The prediction unit may be a unit for predicting samples, and the transform unit may be a unit for deriving transform coefficients and / or a unit for deriving residual signals from transform coefficients.
[0058] In some cases, a unit can be used interchangeably with terms such as a block or region. Generally, an M×N block can represent a set of samples or transform coefficients consisting of M columns and N rows. A sample can typically represent a pixel or pixel value, and may represent only the pixel / pixel value of the luminance component or only the pixel / pixel value of the chrominance component. A sample can be used as a term corresponding to a picture (or image) of pixels or pictographs.
[0059] Subtractor 231 subtracts the prediction signal (prediction block, prediction sample array) output from inter-frame predictor 221 or intra-frame predictor 222 from the input image signal (original block, original sample array) to generate a residual signal (residual block, residual sample array), and the generated residual signal is sent to converter 232. In this case, as shown, the unit in encoding device 200 that subtracts the prediction signal (prediction block, prediction sample array) from the input image signal (original block, original sample array) can be referred to as subtractor 231. The predictor can perform prediction on the processing target block (hereinafter referred to as "current block") and can generate a prediction block that includes prediction samples of the current block. The predictor can determine whether to apply intra-frame prediction or inter-frame prediction based on the current block or CU. As discussed later in the description of each prediction mode, the predictor can generate various prediction-related information such as prediction mode information and send the generated information to entropy encoder 240. The information about the prediction can be encoded in entropy encoder 240 and output as a bitstream.
[0060] Intra-predictor 222 can predict the current block by referencing samples in the current image. Depending on the prediction mode, the referenced samples may be located near or far from the current block. In intra-prediction, the prediction mode can include multiple non-directional modes and multiple directional modes. Non-directional modes can include, for example, DC mode and planar mode. Depending on the level of detail in the prediction direction, the directional modes can include, for example, 33 or 65 directional prediction modes. However, this is just an example, and more or fewer directional prediction modes may be used depending on the settings. Intra-predictor 222 can determine the prediction mode to be applied to the current block by using prediction modes applied to neighboring blocks.
[0061] Inter-frame predictor 221 can deduce the predicted block of the current block based on a reference block (reference sample array) specified by motion vectors on a reference image. Here, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted on a block, sub-block, or sample basis based on the correlation between motion information between neighboring blocks and the current block. Motion information may include motion vectors and reference image indices. Motion information may also include inter-frame prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current image and temporally neighboring blocks existing in the reference image. The reference image including the reference block and the reference image including the temporally neighboring block may be the same or different. The temporally neighboring block may be called a juxtaposed reference block, a co-located CU (colCU), etc., and the reference image including the temporally neighboring block may be called a juxtaposed image (colPic). For example, inter-frame predictor 221 can configure a motion information candidate list based on neighboring blocks and generate information indicating which candidate to use to deduce the motion vector and / or reference image index of the current block. Inter-frame prediction can be performed based on various prediction modes. For example, in skip mode and merge mode, the inter-frame predictor 221 can use motion information from neighboring blocks as motion information for the current block. In skip mode, unlike merge mode, residual signals may not be transmitted. In motion vector prediction (MVP) mode, motion vectors from neighboring blocks can be used as motion vector predictors, and the motion vector of the current block can be indicated by signaling the motion vector difference.
[0062] Predictor 220 can generate prediction signals based on various prediction methods. For example, the predictor can apply intra-frame prediction or inter-frame prediction to the prediction of a block, and can also apply intra-frame prediction and inter-frame prediction simultaneously. This can be referred to as combined intra-frame and inter-frame prediction (CIIP). Additionally, the predictor can perform prediction on a block based on an intra-block copy (IBC) prediction mode or a palette mode. The IBC prediction mode or palette mode can be used for content image / video encoding such as games, etc. Although IBC essentially performs prediction within the current block, it can be performed similarly to inter-frame prediction because it derives a reference block within the current block. That is, IBC can use at least one of the inter-frame prediction techniques described in this disclosure.
[0063] The predicted signals generated by the inter-frame predictor 221 and / or the intra-frame predictor 222 can be used to generate the reconstructed signal or the residual signal. The transformer 232 can generate transform coefficients by applying transform techniques to the residual signal. For example, the transform techniques may include at least one of Discrete Cosine Transform (DCT), Discrete Sine Transform (DST), Karhunen-loève Transform (KLT), Graph-Based Transform (GBT), or Conditional Nonlinear Transform (CNT). Here, GBT refers to a transform obtained from a graph when representing the relationship information between pixels using a graph. CNT refers to a transform obtained based on the predicted signal generated using all previously reconstructed pixels. Furthermore, the transform processing can be applied to square pixel blocks of the same size, or to blocks of variable size that are not square.
[0064] Quantizer 233 quantizes the transform coefficients and sends them to entropy encoder 240, which encodes the quantized signal (information about the quantized transform coefficients) and outputs a bitstream. This information about the quantized transform coefficients can be called residual information. Quantizer 233 can rearrange the block-type quantized transform coefficients into a one-dimensional vector based on the coefficient scan order and generate information about the quantized transform coefficients based on this one-dimensional vector form. Entropy encoder 240 can perform various encoding methods, such as Golomb, Context Adaptive Variable Length Coding (CAVLC), and Context Adaptive Binary Arithmetic Coding (CABAC). Entropy encoder 240 can encode information required for video / image reconstruction other than the quantized transform coefficients (e.g., values of syntax elements) together or separately. It can send or store encoded information (e.g., encoded video / image information) in bitstream form at NAL (Network Abstraction Layer) units. The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), or Video Parameter Set (VPS). Additionally, the video / image information may also include general constraint information. In this disclosure, information and / or syntax elements that transmit / signal notifications from the encoding device to the decoding device may be included in the video / image information. The video / image information may be encoded by the encoding process described above and included in a bitstream. The bitstream may be transmitted over a network or stored in a digital storage medium. The network may include broadcast networks and / or communication networks, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmitter (not shown) that transmits a signal output from the entropy encoder 240 and / or a storage unit (not shown) that stores the signal may be included as internal / external components of the encoding device 200, and alternatively, the transmitter may be included in the entropy encoder 240.
[0065] The quantization transform coefficients output from quantizer 233 can be used to generate a prediction signal. For example, the residual signal (residual block or residual sample) can be reconstructed by applying inverse quantization and inverse transform to the quantization transform coefficients using inverse quantizer 234 and inverse transformer 235. Adder 250 adds the reconstructed residual signal to the prediction signal output from inter-frame predictor 221 or intra-frame predictor 222 to generate a reconstructed signal (reconstructed image, reconstructed block, reconstructed sample array). If the block to be processed has no residual (such as when a skip mode is applied), the prediction block can be used as a reconstructed block. Adder 250 can be referred to as a reconstructor or reconstructed block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current image, and can be used for inter-frame prediction of the next image by filtering as described below.
[0066] In addition, Luminance Mapping and Chroma Scaling (LMCS) can be applied during image encoding and / or reconstruction.
[0067] Filter 260 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 260 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image and store the modified reconstructed image in memory 270 (specifically, the DPB of memory 270). Various filtering methods may include, for example, deblocking filtering, sample adaptive offsetting, adaptive loop filtering, bilateral filtering, etc. Filter 260 can generate various filtering-related information and send the generated information to entropy encoder 240, as described later in the description of the various filtering methods. The filtering-related information can be encoded by entropy encoder 240 and output as a bitstream.
[0068] The modified reconstructed image sent to memory 270 can be used as a reference image in inter-frame predictor 221. When inter-frame prediction is applied through the encoding device, prediction mismatch between the encoding device 200 and the decoding device can be avoided, and encoding efficiency can be improved.
[0069] The DPB of memory 270 can store a modified reconstructed image used as a reference image in inter-frame predictor 221. Memory 270 can store motion information of blocks from which motion information in the current image is derived (or encoded) and / or motion information of reconstructed blocks in the image. The stored motion information can be sent to inter-frame predictor 221 and used as motion information for spatially or temporally neighboring blocks. Memory 270 can store reconstructed samples of reconstructed blocks in the current image and can transmit these reconstructed samples to intra-frame predictor 222.
[0070] Figure 3 This is a schematic diagram illustrating the configuration of a video / image decoding device to which embodiments of the present disclosure can be applied.
[0071] Reference Figure 3 The decoding device 300 may include an entropy decoder 310, a residual processor 320, a predictor 330, an adder 340, a filter 350, and a memory 360. The predictor 330 may include an inter-frame predictor 332 and an intra-frame predictor 331. The residual processor 320 may include an inverse quantizer 321 and an inverse transformer 322. According to embodiments, the entropy decoder 310, residual processor 320, predictor 330, adder 340, and filter 350 may be constructed from hardware components (e.g., a decoder chipset or processor). Additionally, the memory 360 may include a decoded image buffer (DPB) or may be constructed from a digital storage medium. The hardware components may also include the memory 360 as an internal / external component.
[0072] When the input includes a bitstream containing video / image information, the decoding device 300 can interact with... Figure 2 The processing of video / image information in the encoding device correspondingly reconstructs the image. For example, the decoding device 300 can deduce units / blocks based on block segmentation information obtained from the bitstream. The decoding device 300 can use a processor applied in the encoding device to perform decoding. Therefore, the decoding processor can be, for example, an encoding unit, and the encoding unit can be segmented from the encoding tree unit or the maximum encoding unit according to a quadtree structure, binary tree structure, and / or ternary tree structure. One or more transform units can be derived from the encoding unit. The reconstructed image signal decoded and output by the decoding device 300 can be reproduced by a reproduction device.
[0073] Decoding device 300 can receive bitstreams from Figure 2The signal output by the encoding device can be decoded by the entropy decoder 310. For example, the entropy decoder 310 can parse the bitstream to derive information (e.g., video / image information) required for image reconstruction (or picture reconstruction). The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), Video Parameter Set (VPS), etc. In addition, the video / image information may also include general constraint information. The decoding device can further decode the picture based on the information about the parameter sets and / or general constraint information. In this disclosure, the signaling notification / receiving information and / or syntax elements, which will be described subsequently, can be decoded and obtained from the bitstream through the decoding process. For example, the entropy decoder 310 can decode the information in the bitstream based on encoding methods such as Exponential Golomb coding, CAVLC, CABAC, etc., and can output the values of the syntax elements necessary for image reconstruction and the quantized values of the transform coefficients of the residuals. More specifically, the CABAC entropy decoding method can receive bins corresponding to each syntax element in the bitstream, determine a context model using information about the target syntax element and the decoding information of neighboring and target blocks or information about symbols / bins decoded in previous steps, predict the bin generation probability based on the determined context model, and perform arithmetic decoding of the bins to generate symbols corresponding to each syntax element value. Here, the CABAC entropy decoding method can update the context model after determining it using information about symbols / bins decoded for the next symbol / bin. Prediction information from the information decoded in the entropy decoder 310 can be provided to the predictors (inter-frame predictor 332 and intra-frame predictor 331), and the quantized transform coefficients (i.e., residual values) and associated parameter information for which entropy decoding has been performed in the entropy decoder 310 can be input to the residual processor 320. The residual processor 320 can derive the residual signal (residual block, residual sample, residual sample array). Additionally, filtering information from the information decoded in the entropy decoder 310 can be provided to the filter 350. Furthermore, a receiver (not shown) that receives the signal output from the encoding device can also configure the decoding device 300 as an internal / external component, and the receiver can be a component of the entropy decoder 310. Additionally, the decoding device according to this disclosure can be referred to as a video / image / picture encoding device, and the decoding device can be classified as an information decoder (video / image / picture information decoder) and a sample decoder (video / image / picture sample decoder). The information decoder can include the entropy decoder 310, and the sample decoder can include at least one of an inverse quantizer 321, an inverse transformer 322, an adder 340, a filter 350, a memory 360, an inter-frame predictor 332, and an intra-frame predictor 331.
[0074] The dequantizer 321 can dequantize the quantized transform coefficients and output the transform coefficients. The dequantizer 321 can rearrange the quantized transform coefficients in the form of two-dimensional blocks. In this case, the rearrangement can be performed based on the coefficient scan order performed in the encoding device. The dequantizer 321 can perform dequantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain the transform coefficients.
[0075] The inverse transformer 322 performs an inverse transformation on the transformation coefficients to obtain the residual signal (residual block, residual sample array).
[0076] The predictor can perform prediction on the current block and generate a prediction block that includes the prediction samples of the current block. The predictor can determine whether to apply intra-frame prediction or inter-frame prediction to the current block based on the prediction information output from the entropy decoder 310, and can determine the specific intra-frame / inter-frame prediction mode.
[0077] The predictor can generate a predicted signal based on various prediction methods. For example, the predictor can apply intra-frame prediction or inter-frame prediction to the prediction of a block, and can also apply intra-frame prediction and inter-frame prediction simultaneously. This can be referred to as combined intra-frame and inter-frame prediction (CIIP). Additionally, the predictor can perform intra-block copying (IBC) to predict a block. Intra-frame block copying can be used for content image / video coding such as in games with screen content coding (SCC). Although IBC essentially performs prediction within the current block, it can be performed similarly to inter-frame prediction because it derives a reference block within the current block. That is, IBC can use at least one of the inter-frame prediction techniques described in this disclosure.
[0078] The intra-predictor 331 can predict the current block by referencing samples in the current image. Depending on the prediction mode, the reference samples can be located near or separate from the current block. In intra-prediction, the prediction mode can include multiple non-directional modes and multiple directional modes. The intra-predictor 331 can determine the prediction mode applied to the current block by using the prediction modes applied to neighboring blocks.
[0079] Inter-frame predictor 332 can deduce the predicted block for the current block based on a reference block (reference sample array) specified by a motion vector on a reference image. In this case, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted based on the correlation between motion information between neighboring blocks and the current block, at the block, sub-block, or sample level. Motion information may include motion vectors and reference image indices. Motion information may also include inter-frame prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current image and temporally neighboring blocks existing in the reference image. For example, inter-frame predictor 332 can configure a motion information candidate list based on neighboring blocks and deduce the motion vector and / or reference image index for the current block based on received candidate selection information. Inter-frame prediction can be performed based on various prediction modes, and the information about the prediction may include information indicating the mode of inter-frame prediction for the current block.
[0080] Adder 340 can generate a reconstruction signal (reconstructed image, reconstruction block, reconstruction sample array) by adding the obtained residual signal to the prediction signal (prediction block, prediction sample array) output from the predictor (including inter-frame predictor 332 and / or intra-frame predictor 331). If the block to be processed has no residual (e.g., when a skip mode is applied), the prediction block can be used as the reconstruction block.
[0081] Adder 340 can be called a reconstructor or reconstruction block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current image, through filtering output as described below, or it can be used for inter-frame prediction of the next image.
[0082] In addition, Luminance Mapping and Chromaticity Scaling (LMCS) can be applied during image decoding.
[0083] Filter 350 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 350 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image and store the modified reconstructed image in memory 360 (specifically, the DPB of memory 360). Various filtering methods may include, for example, deblocking filtering, adaptive sample shifting, adaptive loop filtering, bilateral filtering, etc.
[0084] The (modified) reconstructed image stored in the DPB of memory 360 can be used as a reference image in inter-frame predictor 332. Memory 360 can store motion information of blocks from which motion information in the current image is derived (or decoded) and / or motion information of reconstructed blocks in the image. The stored motion information can be sent to inter-frame predictor 332 for use as motion information of spatially or temporally neighboring blocks. Memory 360 can store reconstructed samples of reconstructed blocks in the current image and can transmit the reconstructed samples to intra-frame predictor 331.
[0085] In this specification, the examples described in the predictor 330, dequantizer 321, inverse transformer 322 and filter 350 of the decoding device 300 can be similarly or correspondingly applied to the predictor 220, dequantizer 234, inverse transformer 235 and filter 260 of the encoding device 200, respectively.
[0086] As described above, prediction is performed to increase compression efficiency during video encoding. Accordingly, a prediction block can be generated that includes prediction samples for the current block, which is the target block for encoding. Here, the prediction block includes prediction samples in the spatial domain (or pixel domain). The prediction block can be derived identically in both the encoding and decoding devices, and the encoding device can improve image encoding efficiency by signaling to the decoding device information about the residual between the original block and the prediction block (residual information), not the original sample values of the original block itself. The decoding device can derive a residual block including residual samples based on the residual information, generate a reconstructed block including reconstructed samples by adding the residual block to the prediction block, and generate a reconstructed image including the reconstructed block.
[0087] Residual information can be generated through transformation and quantization processes. For example, an encoding device can derive a residual block between the original block and the prediction block, derive transform coefficients by performing a transform process on the residual samples (residual sample array) included in the residual block, and derive quantized transform coefficients by performing a quantization process on the transform coefficients. This allows it to signal the relevant residual information to the decoding device (via a bitstream). Here, the residual information can include the value information, position information, transform technique, transform kernel, quantization parameters, etc., of the quantized transform coefficients. The decoding device can perform quantization / dequantization processes based on the residual information and derive residual samples (or residual sample blocks). The decoding device can generate a reconstructed block based on the prediction block and the residual block. The encoding device can derive the residual block by performing dequantization / inverse transform on the quantized transform coefficients for inter-frame prediction reference in the next image, and can generate a reconstructed image based on this.
[0088] Figure 4 The illustrations illustrate multiple transformation techniques according to embodiments of the present disclosure.
[0089] Reference Figure 4 The converter can correspond to Figure 2 The converter of the above encoding device, and the inverse converter can correspond to Figure 2 The inverse converter in the above encoding devices or Figure 3 The inverse converter in the decoding device.
[0090] The transformer can derive (primary) transform coefficients (S410) by performing a primary transform based on residual samples (residual sample array) in the residual block. This primary transform can be referred to as the core transform. In this paper, the primary transform can be based on multiple transform selection (MTS), and when the multiple transform is applied as the primary transform, it can be referred to as a multi-core transform.
[0091] Multi-core transform can represent a method that additionally uses Discrete Cosine Transform (DCT) Type 2 and Discrete Sine Transform (DST) Type 7, DCT Type 8, and / or DST Type 1 for transformation. That is, multi-core transform can represent a method that transforms a spatial domain residual signal (or residual block) into frequency domain transform coefficients (or primary transform coefficients) based on multiple transform kernels selected from DCT Type 2, DST Type 7, DCT Type 8, and DST Type 1. In this paper, from the perspective of the transformer, the primary transform coefficients can be referred to as temporary transform coefficients.
[0092] That is, when applying conventional transform methods, transform coefficients can be generated by applying a spatial-to-frequency domain transform to the residual signal (or residual block) based on DCT type 2. However, when applying multi-core transforms, transform coefficients (or primary transform coefficients) can be generated by applying a spatial-to-frequency domain transform to the residual signal (or residual block) based on DCT type 2, DST type 7, DCT type 8, and / or DST type 1. Here, DCT type 2, DST type 7, DCT type 8, and DST type 1 can be referred to as transform types, transform kernels, or transform cores. These DCT / DST types can be defined based on basis functions.
[0093] If a multi-core transform is performed, a vertical transform kernel and a horizontal transform kernel for the target block can be selected from the transform kernels. A vertical transform can be performed on the target block based on the vertical transform kernel, and a horizontal transform can be performed on the target block based on the horizontal transform kernel. Here, the horizontal transform can represent the transform of the horizontal components of the target block, and the vertical transform can represent the transform of the vertical components of the target block. The vertical transform kernel / horizontal transform kernel can be adaptively determined based on the prediction mode and / or transform index of the target block (CU or sub-block), including the residual block.
[0094] Additionally, according to the example, if a primary transform is performed by applying an MTS, the mapping relationship of the transform kernels can be set by setting specific basis functions to predetermined values and combining the basis functions to be applied in the vertical or horizontal transform. For example, when the horizontal transform kernel is represented as trTypeHor and the vertical transform kernel is represented as trTypeVer, trTypeHor or trTypeVer value 0 can be set to DCT2, trTypeHor or trTypeVer value 1 can be set to DST-7, and trTypeHor or trTypeVer value 2 can be set to DCT-8.
[0095] In this scenario, the MTS index information can be encoded and signaled to the decoding device to indicate any one of the multiple transform kernel sets. For example, MTS index 0 can indicate that both trTypeHor and trTypeVer values are 0, MTS index 1 can indicate that both trTypeHor and trTypeVer values are 1, MTS index 2 can indicate that trTypeHor is 2 and trTypeVer is 1, MTS index 3 can indicate that trTypeHor is 1 and trTypeVer is 2, and MTS index 4 can indicate that both trTypeHor and trTypeVer values are 2.
[0096] In one example, the table below illustrates the transformation kernel set based on MTS index information.
[0097] [Table 1]
[0098] trTypeHor 0 1 2 1 2 trTypeVer 0 1 1 2 2
[0099] The converter can derive modified (secondary) transform coefficients by performing a secondary transform based on the (primary) transform coefficients (S420). The primary transform is a transform from the spatial domain to the frequency domain, and the secondary transform refers to transforming to a more compressed representation by using the correlation between the (primary) transform coefficients. The secondary transform can include an inseparable transform. In this case, the secondary transform can be called an inseparable secondary transform (NSST) or a mode-dependent inseparable secondary transform (MDNSST). An inseparable secondary transform can represent a transform that generates modified transform coefficients (or secondary transform coefficients) for the residual signal by performing a secondary transform on the (primary) transform coefficients derived from the primary transform based on an inseparable transform matrix. In this case, vertical and horizontal transforms cannot be applied separately to the (primary) transform coefficients (or horizontal and vertical transforms cannot be applied to them independently), but the transform can be applied all at once based on the inseparable transform matrix. In other words, an inseparable quadratic transform can represent a transform method that does not apply the (primary) transform coefficients separately in the vertical and horizontal directions, and for example, rearranges a two-dimensional signal (transform coefficients) into a one-dimensional signal by a defined direction (e.g., row-major or column-major direction), and then generates modified transform coefficients (or quadratic transform coefficients) based on the inseparable transform matrix. For example, according to row-major order, M×N blocks are arranged in rows in the order of first row, second row, ..., and Nth row. According to column-major order, M×N blocks are arranged in rows in the order of first column, second column, ..., and Nth column. An inseparable quadratic transform can be applied to the upper left region of a block containing (primary) transform coefficients (hereinafter referred to as a transform coefficient block). For example, if the width (W) and height (H) of the transform coefficient block are both equal to or greater than 8, an 8×8 inseparable quadratic transform can be applied to the upper left 8×8 region of the transform coefficient block. Furthermore, if the width (W) and height (H) of the transform coefficient block are both equal to or greater than 4, and the width (W) or height (H) of the transform coefficient block is less than 8, then a 4×4 indivisible quadratic transformation can be applied to the upper left min(8,W)×min(8,H) region of the transform coefficient block. However, the implementation is not limited to this, and for example, even if the condition that the width (W) or height (H) of the transform coefficient block is equal to or greater than 4 is met, a 4×4 indivisible quadratic transformation can still be applied to the upper left min(8,W)×min(8,H) region of the transform coefficient block.
[0100] Here, to select the transform kernels, two indivisible quadratic transform kernels can be configured for each transform set of indivisible quadratic transforms for both 8×8 and 4×4 transforms, and four transform sets can exist. That is, four transform sets can be configured for 8×8 transforms, and four transform sets can be configured for 4×4 transforms. In this case, each of the four transform sets for 8×8 transforms can include two 8×8 transform kernels, and each of the four transform sets for 4×4 transforms can include two 4×4 transform kernels.
[0101] However, since the size of the transformation, i.e. the size of the region to which the transformation is applied, can be any size other than 8×8 or 4×4, the number of sets can be n, and the number of transformation kernels in each set can be k.
[0102] The transform set can be referred to as the NSST set or the LFNST set. For example, a specific set within the transform set can be selected based on the intra-prediction mode of the current block (CU or sub-block). The Low-Frequency Inseparable Transform (LFNST) can be an example of the simplified inseparable transform described later, and represents the inseparable transform for low-frequency components.
[0103] Based on the example, four transform sets according to the intra-prediction mode can be mapped, for example, as shown in the table below.
[0104] [Table 2]
[0105] predModeIntra < 0 1 0 <= predModeIntra <= 1 0 2 <= predModeIntra <= 12 1 13 <= predModeIntra <= 23 2 24 <= predModeIntra <= 44 3 45 <= predModeIntra <= 55 2 56 <= predModeIntra <= 80 1
[0106] As shown in Table 2, any one of the four transform sets, i.e., lfnstTrSetIdx, can be mapped to any one of the four indices (i.e., 0 to 3) according to the intra-frame prediction mode.
[0107] When a specific set is determined to be used for an indivisible transform, one of k transform kernels in that set can be selected using an indivisible quadratic transform index. The encoding device can derive the indivisible quadratic transform index indicating the specific transform kernel based on a rate-distortion (RD) check and can signal this index to the decoding device. The decoding device can then select one of the k transform kernels in the specific set based on the indivisible quadratic transform index. For example, lfnst index 0 could refer to the first indivisible quadratic transform kernel, lfnst index 1 could refer to the second indivisible quadratic transform kernel, and lfnst index 2 could refer to the third indivisible quadratic transform kernel. Alternatively, lfnst index 0 could indicate that the first indivisible quadratic transform is not applied to the target block, and lfnst indexes 1 through 3 could indicate three transform kernels.
[0108] The converter can perform an indivisible quadratic transform based on the selected transform core and obtain modified (quadratic) transform coefficients. As mentioned above, the modified transform coefficients can be derived as transform coefficients quantized by a quantizer, and can be encoded and signaled to the decoding device and transmitted to the inverse quantizer / inverse converter in the encoding device.
[0109] Furthermore, as mentioned above, if the secondary transformation is omitted, the (primary) transform coefficients, which are the output of the primary (separable) transform, can be derived as the transform coefficients quantized by the quantizer as described above, and can be encoded and signaled to the decoding device and transmitted to the inverse quantizer / inverse transform in the encoding device.
[0110] The inverse transformer can perform a series of processes in the reverse order of their execution in the transformers described above. The inverse transformer can receive (dequantized) transform coefficients and derive (primary) transform coefficients by performing a second (inverse) transform (step S450), and obtain residual blocks (residual samples) by performing a primary (inverse) transform on the (primary) transform coefficients (S460). In this respect, from the perspective of the inverse transformer, the primary transform coefficients can be referred to as modified transform coefficients. As described above, the encoding and decoding devices can generate reconstructed blocks based on the residual blocks and the prediction blocks, and can generate reconstructed images based on the reconstructed blocks.
[0111] The decoding device may also include a second-order inverse transform application determiner (or a component for determining whether to apply the second-order inverse transform) and a second-order inverse transform determiner (or a component for determining the second-order inverse transform). The second-order inverse transform application determiner can determine whether to apply the second-order inverse transform. For example, the second-order inverse transform can be NSST, RST, or LFNST, and the second-order inverse transform application determiner can determine whether to apply the second-order inverse transform based on a second-order transform flag obtained by parsing the bitstream. In another example, the second-order inverse transform application determiner can determine whether to apply the second-order inverse transform based on the transform coefficients of the residual block.
[0112] A secondary inverse transform determiner can determine the secondary inverse transform. In this case, the secondary inverse transform determiner can determine the secondary inverse transform to be applied to the current block based on the LFNST (NSST or RST) transform set specified according to the intra-prediction mode. In an implementation, the secondary transform determination method can be determined according to the primary transform determination method. Various combinations of the primary and secondary transforms can be determined according to the intra-prediction mode. Additionally, in the example, the secondary inverse transform determiner can determine the region where the secondary inverse transform is applied based on the size of the current block.
[0113] Furthermore, as mentioned above, if the second (inverse) transform is omitted, the (inverse-quantized) transform coefficients can be received, the primary (separable) inverse transform can be performed, and residual blocks (residual samples) can be obtained. As mentioned above, the encoding and decoding devices can generate reconstructed blocks based on the residual blocks and the prediction blocks, and can generate reconstructed images based on the reconstructed blocks.
[0114] In this paper, the simplified quadratic transform (RST), with a reduced size of the transform matrix (kernel), can be applied to the concept of NSST to reduce the computational and storage requirements of the inseparable quadratic transform. RST is typically performed in the low-frequency region of the transform block, including non-zero coefficients, and can therefore be referred to as the low-frequency inseparable transform (LFNST). The transform index can be called the LFNST index.
[0115] In this specification, LFNST can refer to a transformation performed on the residual samples of the target block based on a transformation matrix of reduced size. When performing a simplified transformation, the computational cost required for the transformation can be reduced because the size of the transformation matrix is smaller. That is, LFNST can be used to address computational complexity issues arising from indivisible transformations or transformations of large blocks.
[0116] When performing a second inverse transform based on LFNST, the inverse transformer 235 of the encoding device 200 and the inverse transformer 322 of the decoding device 300 may include an inverse simplified second-order transformer that derives the modified transform coefficients based on the inverse RST of the transform coefficients, and an inverse primary transformer that derives the residual samples of the target block based on the inverse primary transform of the modified transform coefficients. The inverse primary transform refers to the inverse transform applied to the primary transform of the residuals. In this document, deriving transform coefficients based on a transform can mean deriving the transform coefficients by applying a transform.
[0117] Figure 5 This is a diagram illustrating an RST according to an embodiment of the present disclosure.
[0118] In this disclosure, "target block" can refer to the current block, residual block, or transform block to be encoded.
[0119] In the RST according to the example, an N-dimensional vector can be mapped to an R-dimensional vector in another space, such that a simplified transformation matrix can be determined, where R is less than N. N can refer to the square of the length of the edges of the block to which the transformation is applied, or the total number of transformation coefficients corresponding to the block to which the transformation is applied, and the simplification factor can refer to the R / N value. The simplification factor can be referred to as a reducing factor, a reducing factor, a simplifying factor, a simple factor, or various other terms. Furthermore, R can be referred to as a simplification coefficient, but depending on the case, the simplification factor can refer to R. Additionally, depending on the case, the simplification factor can refer to the N / R value.
[0120] In this example, the simplification factor or simplification coefficient can be signaled via the bitstream, but the example is not limited to this. For instance, predefined values for the simplification factor or simplification coefficient can be stored in each of the encoding device 200 and the decoding device 300, and in this case, the simplification factor or simplification coefficient does not need to be signaled separately.
[0121] The size of the simplified transformation matrix in the example can be R×N, which is smaller than the size of the regular transformation matrix N×N, and can be defined as shown in Equation 1 below.
[0122] [Formula 1]
[0123]
[0124] Figure 5 The matrix T in the simplified transformation block shown in (a) can refer to the matrix T in Equation 1. RxN .like Figure 5 As shown in (a), when the simplified transformation matrix T RxN By multiplying by the residual samples of the target block, the transformation coefficients of the target block can be derived.
[0125] In the example, if the size of the block to which the inverse transform is applied is 8×8 and R = 16 (i.e., R / N = 16 / 64 = 1 / 4), then according to Equation 2, the transformation can be performed as shown below. Figure 5 The RST representation of (a) is a matrix operation. In this case, the storage and multiplication computations can be reduced to approximately 1 / 4 by a simplification factor.
[0126] In this disclosure, matrix operations can be understood as multiplying a column vector by a matrix to the left of the column vector to obtain the column vector operation.
[0127] [Equation 2]
[0128]
[0129] In Equation 2, r1 to r 64 The residual samples of the target block can be represented, and specifically, the transformation coefficients can be generated by applying a primary transformation. As a result of Equation 2, the transformation coefficients ci of the target block can be derived, and the derivation of ci can be performed as shown in Equation 3.
[0130] [Formula 3]
[0131]
[0132] As a result of Equation 3, the transformation coefficients c1 to c of the target block can be derived. R That is, when R = 16, the transformation coefficients c1 to c of the target block can be derived. 16If a conventional transform is applied instead of an RST and the 64×64 (N×N) transform matrix is multiplied by a 64×1 (N×1) residual sample, then although 64 (N) transform coefficients are derived for the target block, only 16 (R) transform coefficients are derived for the target block because of the application of RST. Since the total number of transform coefficients for the target block is reduced from N to R, the amount of data sent from the encoding device 200 to the decoding device 300 is reduced, thus improving the transmission efficiency between the encoding device 200 and the decoding device 300.
[0133] When considering the size of the transformation matrix, the size of a conventional transformation matrix is 64×64 (N×N), but the size of the simplified transformation matrix is reduced to 16×64 (R×N). Therefore, compared to performing the conventional transformation, the memory usage of LFNST can be reduced by a ratio of R / N. Furthermore, compared to the N×N number of multiplications when using the conventional transformation matrix, using the simplified transformation matrix can reduce the number of multiplications by a ratio of R / N (R×N).
[0134] In the example, the transformer 232 of the encoding device 200 can derive the transform coefficients of the target block by performing a primary transform and an RST-based quadratic transform on the residual samples of the target block. These transform coefficients can be passed to the inverse transformer of the decoding device 300, and the inverse transformer 322 of the decoding device 300 can derive the modified transform coefficients based on the inverse simplified quadratic transform (RST) of the transform coefficients, and can derive the residual samples of the target block based on the inverse primary transform of the modified transform coefficients.
[0135] Based on the example inverse RST matrix T NxR The size of is N×R, which is smaller than the size of the conventional inverse transformation matrix N×N, and is the same as the simplified transformation matrix T shown in Equation 4. RxN They are transposed.
[0136] Figure 5 The matrix T in the simplified inverse transform block shown in (b) t It can refer to the inverse RST matrix T RxN T (The superscript T indicates transpose). When... Figure 5 The inverse RST matrix T shown in (b) is RxN T Multiplying by the transform coefficients of the target block allows us to derive the modified transform coefficients of the target block or the residual samples of the current block. The inverse RST matrix T RxN T It can be represented as (T) RxN T )NxR .
[0137] More specifically, when the inverse RST is applied as a second inverse transformation, when the inverse RST matrix T... RxN T By multiplying by the transform coefficients of the target block, the modified transform coefficients of the target block can be derived. Furthermore, the inverse RST can be applied as the inverse primary transform, and in this case, when the inverse RST matrix T... RxN T When multiplied by the transformation coefficients of the target block, the residual sample of the target block can be derived.
[0138] In the example, if the size of the block to which the inverse transform is applied is 8×8 and R = 16 (i.e., R / N = 16 / 64 = 1 / 4), then according to Equation 4, the transformation can be performed as shown below. Figure 5 The RST of (b) is represented as a matrix operation.
[0139] [Formula 4]
[0140]
[0141] In Equation 4, c1 to c 16 This can represent the transformation coefficients of the target block. As a result of Equation 4, the modified transformation coefficients of the target block or the r of the residual samples of the target block can be derived. i And derive r i The process can be as shown in Equation 5.
[0142] [Formula 5]
[0143]
[0144] As a result of Equation 5, the modified transformation coefficients of the target block or the residual samples of the target block, r1 to r2, can be derived. N When considering the size of the inverse transform matrix, the size of the conventional inverse transform matrix is 64×64 (N×N), but the size of the simplified inverse transform matrix is reduced to 64×16 (R×N). Therefore, compared to performing the conventional inverse transform, the memory usage for performing the inverse RST can be reduced by a ratio of R / N. Furthermore, compared to the N×N number of multiplications when using the conventional inverse transform matrix, using the simplified inverse transform matrix can reduce the number of multiplications by a ratio of R / N (N×R).
[0145] According to embodiments of this disclosure, for the transformation during the encoding process, only 48 data points can be selected, and a maximum 16×48 transformation kernel matrix can be applied to them instead of applying a 16×64 transformation kernel matrix to the 64 data points forming an 8×8 region. Here, "maximum" means that m has a maximum value of 16 in the m×48 transformation kernel matrix used to generate m coefficients. That is, when performing RST by applying an m×48 transformation kernel matrix (m≤16) to an 8×8 region, 48 data points are input and m coefficients are generated. When m is 16, 48 data points are input and 16 coefficients are generated. That is, assuming that the 48 data points form a 48×1 vector, the 16×48 matrix is multiplied by the 48×1 vector in sequence to generate a 16×1 vector. Here, the 48 data points forming the 8×8 region can be appropriately arranged to form a 48×1 vector. For example, a 48×1 vector can be constructed based on the 48 data points constituting the region other than the lower right 4×4 region within the 8×8 region. Here, when matrix operations are performed by applying a maximum 16×48 transformation kernel matrix, 16 modified transformation coefficients are generated. These 16 modified transformation coefficients can be arranged in the upper left 4×4 region according to the scan order, and the upper right 4×4 region and the lower left 4×4 region can be filled with zeros.
[0146] For the inverse transform in the decoding process, the transpose of the above transform kernel matrix can be used. That is, when performing inverse RST or LFNST during the inverse transform performed by the decoding device, the input coefficient data of the inverse RST is arranged in a one-dimensional vector according to a predetermined arrangement order, and the modified coefficient vector obtained by multiplying the one-dimensional vector with the corresponding inverse RST matrix on the left side of the one-dimensional vector can be arranged in a two-dimensional block according to a predetermined arrangement order.
[0147] In summary, during the transformation process, when RST or LFNST is applied to an 8×8 region, the 48 transformation coefficients in the top-left, top-right, and bottom-left regions of the 8×8 region (excluding the bottom-right region) undergo matrix operations with a 16×48 transformation kernel matrix. For matrix operations, the 48 transformation coefficients are input into a one-dimensional array. When performing matrix operations, 16 modified transformation coefficients are derived, and these modified coefficients can be arranged in the top-left region of the 8×8 region.
[0148] Conversely, in the inverse transform process, when the inverse RST or LFNST is applied to an 8×8 region, the 16 transform coefficients corresponding to the upper left region of the 8×8 region can be input into a one-dimensional array according to the scan order and can undergo matrix operations with the 48×16 transform kernel matrix. That is, the matrix operation can be represented as (48×16 matrix) * (16×1 transform coefficient vector) = (48×1 modified transform coefficient vector). Here, an n×1 vector can be interpreted as having the same meaning as an n×1 matrix and can therefore be represented as an n×1 column vector. Additionally, * denotes matrix multiplication. When performing matrix operations, 48 modified transform coefficients can be derived, and these 48 modified transform coefficients can be arranged in the upper left, upper right, and lower left regions of the 8×8 region, excluding the lower right region.
[0149] According to the example, the LFNST index can be signaled at the coding unit level as shown in Table 3 below, and the semantics of the syntax elements are shown in Table 4.
[0150] [Table 3]
[0151]
[0152]
[0153] [Table 4]
[0154]
[0155] In Table 4, ApplyLfnstFlag is a variable indicating whether LFNST is applied, and it is referenced in "8.7.3 Scaling Process of Transform Coefficients" in Table 5 and "8.7.4 Transformation Process of Scaled Transform Coefficients" in Table 6. Table 5 is the specification text describing the dequantization process of the quantized transform coefficients received from the bitstream, and Table 6 is the specification text describing the transformation process of the dequantized transform coefficients.
[0156] In Table 5, when the value of ApplyLfnstFlag is 1 and the value of sps_scaling_matrix_for_lfnst_disabled_flag is 1 for the color component specified by cIdx, the scaling list is not applied during quantization / dequantization of the color component.
[0157] Here, `sps_scaling_matrix_for_lfnst_disabled_flag` is a syntax element defined in the sequence parameter set, and its value of 1 indicates that the scaling list is not applied when LFNST is applied. Setting `m[x][y]` to 16 indicates that the scaling list is not applied.
[0158] As shown in Table 6, when the value of ApplyLfnstFlag is 1, LFNST is applied to the component indicated by cIdx, and when the value is 0, LFNST is not applied to that component. Additionally, in Table 6, when the value of ApplyLfnstFlag is 1 for the component indicated by cIdx, the values of the nonZeroW and nonZeroH variables, indicating the region where LFNST transform coefficients may exist, are set. nonZeroW and nonZeroH represent the width and height of the upper-left region in the corresponding transform block, respectively.
[0159] Specifically, in the current VVC standard, when encoding the current coding unit (CU) using a single-tree structure, LFNST can be applied only to the luma component. In luma-separated trees and chroma-separated trees, i.e., in a dual-tree structure, LFNST can be applied to each of the luma and chroma components. Therefore, when encoding is performed using a single-tree structure (SINGLE_TREE) as shown in Table 4, if the condition "lfnst_idx>0&&cIdx==0" is met, then ApplyLfnstFlag can be set to 1 only for the luma component.
[0160] A cIdx value of 0 indicates the luminance component, and a cIdx value of 1 or 2 indicates the chrominance component (Cb and Cr, respectively). An lfnst_idx value of 0 indicates that LFNST is not applied, and an lfnst_idx value greater than 0 indicates that LFNST is applied.
[0161] [Table 5]
[0162]
[0163]
[0164] [Table 6]
[0165]
[0166]
[0167]
[0168] However, since the cIdx value is not defined in the coding unit syntax table shown in Table 3, it cannot be referenced when signaling lfnst_idx. Furthermore, since lfnst_idx from Table 3 is signaled once for each coding unit, the same lfnst_idx value is applied to all components forming the coding unit.
[0169] Therefore, when determining the value of the ApplyLfnstFlag variable in Table 4, the cIdx value cannot be referenced. However, in order to perform the image encoding process described in Tables 5 and 6, the ApplyLfnstFlag value needs to change as the cIdx value changes. For example, when the current coding unit is encoded in a single-tree structure and LFNST (lfnst_idx>0) is applied, the ApplyLfnstFlag value needs to be set to 1, 0, and 0 respectively when the cIdx value becomes 0, 1, and 2.
[0170] However, according to Table 4, when determining the value of the ApplyLfnstFlag variable, the cIdx value itself cannot be referenced, and the ApplyLfnstFlag value does not change based on the cIdx value.
[0171] To address this issue, as shown in Table 7, a method can be proposed that appliesLfnstFlag be defined as a one-dimensional array (ApplyLfnstFlag[cIdx]) that has a value corresponding to each color component and references ApplyLfnstFlag[cIdx].
[0172] [Table 7]
[0173]
[0174]
[0175]
[0176]
[0177] In Table 7, when the encoding unit is encoded according to a single-tree structure or a luminance-separated tree structure (i.e., satisfying the condition "treeType != DUAL_TREE_CHROMA" in Table 7, where DUAL_TREE_CHROMA indicates a chrominance-separated tree), the ApplyLfnstFlag value can be 1 only for the luminance component. That is, only the value of ApplyLfnstFlag[0] can be 1, and both ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are 0.
[0178] When the coding unit is encoded according to the chroma separation tree structure (i.e., satisfying the condition "treeType==DUAL_TREE_CHROMA" in Table 7), the ApplyLfnstFlag value can be 1 only for the chroma component. That is, only the values of ApplyLfnstFlag[1] and ApplyLfnstFlag[2] can be 1, and ApplyLfnstFlag[0] is 0.
[0179] As shown in Table 7, all references to ApplyLfnstFlags in Tables 5 and 6 are changed to references to ApplyLfnstFlag[cIdx].
[0180] Alternatively, according to another implementation, the application of LFNST can be controlled based on whether the tree is a dual-tree or a single-tree, and the specification text shown in Table 8 can be applied instead of Table 7.
[0181] [Table 8]
[0182]
[0183]
[0184]
[0185]
[0186] As shown in Table 8, when setting the value of ApplyLfnstFlag[cIdx], since ApplyLfnstFlag[0] is a flag related only to the luminance component, its value can only be set when the encoding unit is not encoded according to the chroma split tree structure (i.e., when the encoding unit is encoded according to the single tree structure or the luminance split tree structure). Since ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are flags related only to the chroma component, their values can only be set when the encoding unit is not encoded according to the luminance split tree structure (i.e., when the encoding unit is encoded according to the single tree structure or the chroma split tree structure).
[0187] Since only ApplyLfnstFlag[0] is referenced in the luminance separation tree, only ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the chrominance separation tree, and ApplyLfnstFlag[0], ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the single tree, the same operation as in Table 7 is performed even if the value of ApplyLfnstFlag[cIdx] is set as shown in Table 8.
[0188] In the current VVC standard, since LFNST can be applied only to the luminance component in a single tree, when the coding unit is encoded according to the single tree structure in Table 8, ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are both set to 0.
[0189] According to another embodiment, the application of LFNST can be controlled based on the dual-tree / single-tree structure and color components, and the specification text shown in Table 9 can be applied instead of Table 7.
[0190] [Table 9]
[0191]
[0192]
[0193]
[0194]
[0195] When comparing, Tables 9 and 7 are identical except for the definition of ApplyLfnstFlag[cIdx](cIdx = 0, 1, 2).
[0196] Referring to Table 9, the value of ApplyLfnstFlag[cIdx] (cIdx = 0, 1, 2) is determined as follows based on the tree structure of the encoded unit and the cIdx value.
[0197] 1. Luminosity Separation Tree
[0198] ·ApplyLfnstFlag[0]=ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=(lfnst_idx>0)? 1:0
[0199] 2. Color separation tree
[0200] ·ApplyLfnstFlag[0]=ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=(lfnst_idx>0)? 1:0
[0201] 3. Single tree
[0202] ·ApplyLfnstFlag[0]=(lfnst_idx>0)? 1:0
[0203] ·ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=0
[0204] A value greater than 0 for lfnst_idx (LFNST index) indicates that LFNST has been applied. As summarized above, in Table 9, in the split tree structure, regardless of the color component, the same value is set for ApplyLfnstFlag[cIdx]. When the value of lfnst_idx is greater than 0, ApplyLfnstFlag[cIdx] is set to 1. Otherwise, ApplyLfnstFlag[cIdx] is set to 0.
[0205] In the luminance splitting tree, since no operation is performed on the chrominance components (cIdx = 1, 2), the values set for ApplyLfnstFlag[1] and ApplyLfnstFlag[2] have no effect on the entire transformation process. Similarly, in the chrominance splitting tree, since no operation is performed on the luminance components (cIdx = 0), the value set for ApplyLfnstFlag[0] has no effect on the entire transformation process.
[0206] Referring to Table 7, the value of ApplyLfnstFlag[cIdx] (cIdx = 0, 1, 2) is determined as follows based on the tree structure of the encoded unit and the cIdx value.
[0207] 1. Luminosity Separation Tree
[0208] ·ApplyLfnstFlag[0]=(lfnst_idx>0)? 1:0
[0209] ·ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=0
[0210] 2. Color separation tree
[0211] ·ApplyLfnstFlag[0]=0
[0212] ·ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=(lfnst_idx>0)? 1:0
[0213] 3. Single tree
[0214] ·ApplyLfnstFlag[0]=(lfnst_idx>0)? 1:0
[0215] ·ApplyLfnstFlag[1]=ApplyLfnstFlag[2]=0
[0216] As summarized above, in Table 7, for color components that are unrelated to the components to be encoded, the value of ApplyLfnstFlag[cIdx] is set to 0.
[0217] Specifically, ApplyLfnstFlag[1] and ApplyLfnstFlag[2] for the two chroma components are both set to 0 in the luma separation tree, and ApplyLfnstFlag[0] for the luma component is set to 0 in the chroma separation tree. Since image processing is not applied to color components that are not related to the components to be encoded, setting ApplyLfnstFlag[cIdx] to 0 is conceptually appropriate.
[0218] Based on the example, when an image with a 4:4:4 color format is encoded in a single-tree structure, it is suggested that LFNST be applied.
[0219] The current standard supports multiple color formats, and the color format of the currently encoded image can be specified by sps_chroma_format_idc and sps_separate_colour_plane_flag, which are included in the Sequence Parameter Set (SPS) syntax table shown in Table 10.
[0220] [Table 10]
[0221]
[0222] The semantics of sps_chroma_format_idc and sps_separate_colour_plane_flag listed in Table 10 are specified as in Table 11, and the chroma format can be signaled based on at least one of sps_chroma_format_idc and sps_separate_colour_plane_flag as shown in Table 12.
[0223] [Table 11]
[0224]
[0225] [Table 12]
[0226] 0 0 monochrome 1 1 1 0 4∶2∶0 2 2 2 0 4∶2∶2 2 1 3 0 4∶4∶4 1 1 3 1 4∶4∶4 1 1
[0227] Figure 6 The configuration of the sample according to the color format in Table 12 is shown.
[0228] A chroma format index of 1, i.e., a color format of 4:2:0, indicates that the height and width of the two chroma arrays are half the height and width of the luma array, respectively. A chroma format index of 2, i.e., a color format of 4:2:2, indicates that the height of the two chroma arrays is equal to the height of the luma array and its width is half the width of the luma array.
[0229] A chroma format index of 3, i.e., a color format of 4:4:4, indicates that the height and width of the chroma array are the same as the height and width of the luminance array.
[0230] As shown in Table 11, when the value of sps_separate_colour_plane_flag is 0, the ChromaArrayType variable is set to the value of sps_chroma_format_idc, and when the value of sps_separate_colour_plane_flag is 1, it is set to 0.
[0231] In the current VVC standard, when a coding unit (CU) is encoded in a single-tree structure, LFNST is configured to be applied only to the luma component. However, when the color format of the image used for the current encoding is 4:4:4 (i.e., when the value of sps_chroma_format_idc is 3), LFNST can be configured to be applied to the chroma component even if the coding unit is encoded in a single-tree structure.
[0232] Although the color format is described in Table 11 based on the luma component (Y) and chromaticity components (Cb and Cr), the above recommendations can be equally applied to color channels used for other color systems such as GBR or RGB. For example, when encoding in a single-tree structure, while LFNST can be configured to apply to all of the green, blue, and red channels when the encoding unit is encoded in a single-tree structure with the color format of the currently encoded image being 4:4:4, in the current VVC standard LFNST can be applied only to the green channel when the luma component is mapped to the green channel and the chromaticity components are mapped to the blue and red channels.
[0233] Currently, one LFNST index is sent for each coding unit. Therefore, when encoding is performed in a single-tree structure in a 4:4:4 color format, the same LFNST index can be applied to all color channels. Thus, when determining the set of LFNSTs to be applied for each color channel based on predetermined criteria (e.g., intra-prediction mode or transform block size), one LFNST index can be used to select one of the LFNST kernel candidates included in the LFNST set.
[0234] In the current VVC standard, LFNST is configured to be enabled only for the luma component in a single tree by resetting the ApplyLfnstFlag variable based on the color channel. Table 4 above shows how the ApplyLfnstFlag variable is set via the LFNST index value (lfnst_idx) in the current VVC specification text.
[0235] In Table 4, cIdx is the index indicating the color channel, and when applying the YUV color system, a cIdx value of 0 indicates the luminance component, and cIdx values of 1 and 2 indicate the Cb and Cr components, respectively. In Table 4, when the current coding unit is encoded in a single-tree structure (when treeType is SINGLE_TREE), the value of the ApplyLfnstFlag variable can only be 1 when the value of cIdx is 0, and therefore LFNST can only be applied to the luminance component (or the component indicated by a cIdx value of 0). Table 4 can be represented as the specification text of methods (A) and (B) as shown in Table 13.
[0236] [Table 13]
[0237]
[0238]
[0239] When a coding unit in an image configured in a 4:4:4 color format is encoded in a single-tree structure and LFNST is configured to also apply to the chroma components, the specification texts in Tables 4 and 13 can be varied as in Table 14. The three methods proposed in Tables 4 and 13 correspond to Method 1, Method 2, and Method 3 in Table 14, respectively.
[0240] [Table 14]
[0241]
[0242]
[0243]
[0244] In Table 14, ApplyLfnstFlag[cIdx] indicates whether LFNST is applied to the component indicated by cIdx (cIdx can have a value of 0, 1, or 2). Specifically, when the value of ApplyLfnstFlag[cIdx] is 1, LFNST applies to the component indicated by the cIdx value, and when the value of ApplyLfnstFlag[cIdx] is 0, LFNST does not apply to that component.
[0245] As described above, in the separated color plane mode (when the value of sps_separate_colour_plane_flag in Table 10 is 1), Table 14 operates in the same way as existing specification texts (e.g., Table 4 or Table 13) even though the color format is 4:4:4, because the value of ChromaArrayType is 0.
[0246] More specifically, in the split color plane mode, since the value of ChromaArrayType is 0, the value of ApplyLfnstFlag or ApplyLfnstFlag[cIdx] is determined solely based on whether the value of treeType in Table 14 (SINLGE_TREE, DUAL_TREE_LUMA, and DUAL_TREE_CHROMA, as treeType, indicate that encoding is performed according to a single tree structure, a luminance split tree structure, and a chrominance split tree structure, respectively) and the value of lfnst_idx are greater than 0.
[0247] Therefore, in the split color plane mode, the desired operation is also performed by the canonical text presented in Table 14. For reference, since each color component is encoded independently in the split color plane mode, the LFNST index is only valid for the color components, and the color components are specified by cIdx with a value of 0.
[0248] The following figures are provided to illustrate specific examples of this disclosure. Since the specific names of the devices illustrated in the figures or the naming of specific signals / messages / fields are for illustrative purposes only, the technical features of this disclosure are not limited to the specific names used in the following figures.
[0249] Figure 7 This is a flowchart illustrating the operation of a video decoding device according to an embodiment of this document.
[0250] Figure 7 Each operation disclosed in the document is based on a reference. Figures 4 to 6 Some of the details mentioned above have been explained. Therefore, they will be omitted or will be briefly mentioned in the above references. Figure 3 and Figure 6 The description of specific details overlaps with the description of specific details.
[0251] According to the embodiment, the decoding device 300 can receive image information including residual information and LFNST index (S710).
[0252] Specifically, the decoding device 300 can decode information about the quantization transform coefficients of the target block from the bitstream, and can deduce the quantization transform coefficients of the target block based on the information about the quantization transform coefficients of the current block. The information about the quantization transform coefficients of the target block can be included in the Sequence Parameter Set (SPS) or slice header, and can include at least one of the following: information about whether RST is applied, information about the simplification factor, information about the minimum transform size for applying RST, information about the maximum transform size for applying RST, the inverse RST size, and information about the transform index (LFNST index) indicating any of the transform kernel matrices included in the transform set.
[0253] The LFNST index can be signaled as syntax information at the coding unit level, and the various conditions shown in Table 3 must be met to signal the LFNST index.
[0254] Syntax information about the LFNST index can be received in a binary bin string containing 0s and 1s.
[0255] The syntax elements of the LFNST index according to this embodiment can indicate whether the inverse LFNST or the inverse inseparable transformation is applied, and can be any of the transformation kernel matrices included in the transformation set. When the transformation set includes two transformation kernel matrices, the syntax elements of the transformation index can have three values.
[0256] That is, according to the implementation, the values of the syntax elements of the LFNST index may include 0 indicating that the inverse LFNST is not applied to the target block, 1 indicating the first transformation kernel matrix in the transformation kernel matrix, and 2 indicating the second transformation kernel matrix in the transformation kernel matrix.
[0257] The decoding device can also receive information about the intra-prediction mode of the current block and information about whether ISP is applied to the current block. The decoding device can receive and parse flag information indicating whether ISP coding or ISP mode is applied, thereby deducing whether the current block is divided into a predetermined number of sub-segmentation transform blocks. Here, the current block can be a coded block. Additionally, the decoding device can deduce the size and number of the sub-segmentation blocks by using flag information indicating the direction in which the current block is segmented.
[0258] The decoding device 300 can derive the transform coefficients by inverse quantization of the residual information about the current block, i.e., the quantization transform coefficients (S720).
[0259] The derived transform coefficients can be arranged in 4×4 blocks according to the reverse diagonal scan order, and can also be arranged in 4×4 blocks according to the reverse diagonal scan order. That is, the inverse quantization transform coefficients can be arranged according to the reverse scan order used in video codecs such as VVC or HEVC.
[0260] The decoding device can derive the residual samples of the current block from the transform coefficients based on LFNST or MTS. Alternatively, the decoding device can derive the residual samples based on the existing inverse primary transform rather than the MTS after applying LFNST. Or, the decoding device can derive the residual samples based on MTS or the existing inverse primary transform without applying LFNST.
[0261] When LFNST is applied to the current block, the decoding device 300 can deduce a flag variable (S730) related to whether LFNST is applied to the current block for each color component of the current block based on the LFNST index.
[0262] The flag variable ApplyLfnstFlag can be set after receiving the LFNST index, at which point the color index (cIdx) of the color component forming the current block cannot be referenced. Therefore, according to this embodiment, the flag variable can be defined as a one-dimensional array (ApplyLfnstFlag[cIdx]) with values corresponding to the color components. That is, the flag variable value can be derived separately for each color component of the current block. Here, the current block can be a coding unit.
[0263] According to the example, as shown in Table 7, when the encoding unit is encoded in a single-tree structure or a luminance-separated tree structure (i.e., satisfying the condition "treeType != DUAL_TREE_CHROMA" in Table 7, where DUAL_TREE_CHROMA indicates a chrominance-separated tree), the ApplyLfnstFlag value can be 1 only for the luminance component. That is, only the value of ApplyLfnstFlag[0] can be 1, and both ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are 0.
[0264] When the coding unit is encoded according to the chroma separation tree structure (i.e., satisfying the condition "treeType==DUAL_TREE_CHROMA" in Table 7), the ApplyLfnstFlag value can be 1 only for the chroma component. That is, only the values of ApplyLfnstFlag[1] and ApplyLfnstFlag[2] can be 1, and ApplyLfnstFlag[0] is 0.
[0265] Alternatively, as shown in Table 8, since ApplyLfnstFlag[0] is a flag related only to the luminance component, its value can only be set when the coding unit is not encoded according to the chroma split tree structure (i.e., when the coding unit is encoded according to the single tree structure or the luminance split tree structure). Since ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are flags related only to the chroma component, their values can only be set when the coding unit is not encoded according to the luminance split tree structure (i.e., when the coding unit is encoded according to the single tree structure or the chroma split tree structure).
[0266] That is, for dual-tree luminance, only ApplyLfnstFlag[0] is set, and ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are not set, and for dual-tree chrominance, only ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set, and ApplyLfnstFlag[0] is not set.
[0267] Since only ApplyLfnstFlag[0] is referenced in the case of a luminance-separated tree, only ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the case of a chrominance-separated tree, and ApplyLfnstFlag[0], ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the case of a single tree, the same operation as in Table 7 is performed even if the value of ApplyLfnstFlag[cIdx] is set as shown in Table 8.
[0268] Since LFNST can be applied only to the luminance component in a single tree, when the coding unit encodes according to Table 8 in a single tree structure, both ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set to 0.
[0269] According to another method, as shown in Table 9, in the split tree structure, regardless of the color component, the same value is set for ApplyLfnstFlag[cIdx]. When the value of lfnst_idx is greater than 0, ApplyLfnstFlag[cIdx] is set to 1. Otherwise, ApplyLfnstFlag[cIdx] is set to 0.
[0270] In the luminance splitting tree, since no operation is performed on the chrominance components (cIdx = 1, 2), the values set for ApplyLfnstFlag[1] and ApplyLfnstFlag[2] have no effect on the entire transformation process. Similarly, in the chrominance splitting tree, since no operation is performed on the luminance components (cIdx = 0), the value set for ApplyLfnstFlag[0] has no effect on the entire transformation process.
[0271] In Table 9, in a single tree, when the value of lfnst_idx is greater than 0, ApplyLfnstFlag[0] is set to 1, otherwise it is set to 0, and ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set to 0.
[0272] The decoding device 300 can perform LFNST on the current block based on the flag variables and transform coefficients, thereby deriving the modified transform coefficients from the transform coefficients (S740).
[0273] Unlike a primary transform that separates and transforms the coefficients vertically or horizontally, LFNST is an inseparable transform that applies the transform to the coefficients without separating them in a specific direction. This inseparable transform can be a low-frequency inseparable transform that applies the forward transform only to the low-frequency region rather than the entire region of the block.
[0274] The decoding device can determine the LFNST set, which includes the LFNST matrix, based on the intra-prediction mode derived from information about the intra-prediction mode, and can select any one of multiple LFNST matrices based on the LFNST set and the LFNST index.
[0275] Here, the same LFNST set and the same LFNST index can be applied to the sub-segment transform blocks into which the current block is divided. That is, since the same intra-prediction mode is applied to the sub-segment transform blocks, the LFNST set determined based on the intra-prediction mode can also be applied equivalently to all sub-segment transform blocks. In addition, since the LFNST index is signaled at the coding unit level, the same LFNST matrix can be applied to the sub-segment transform blocks into which the current block is divided.
[0276] As described above, the transform set can be determined based on the intra-prediction mode for the transform block to be transformed, and the inverse LFNST can be performed based on the transform kernel matrix (i.e., any one of the LFNST matrices) included in the transform set indicated by the LFNST index. The matrix applied to the inverse LFNST can be called the inverse LFNST matrix or the LFNST matrix, and can be referred to by any term, as long as the matrix is the transpose of the matrix used for the forward LFNST.
[0277] In the example, the inverse LFNST matrix can be a non-square matrix with fewer columns than rows.
[0278] The decoding device 300 can derive the residual sample from the inverse quantization transform coefficients based on the inverse primary transform (S750).
[0279] Here, as the inverse primary transform, a conventional inseparable transform can be used, or the MTS mentioned above can be used.
[0280] The following figures are provided to illustrate specific examples of this disclosure. Since the specific names of the devices illustrated in the figures or the naming of specific signals / messages / fields are for illustrative purposes only, the technical features of this disclosure are not limited to the specific names used in the following figures.
[0281] Figure 8 This is a flowchart illustrating the operation of a video encoding device according to an embodiment of this document.
[0282] Figure 8 Each operation disclosed in the document is based on a reference. Figures 4 to 6 Some of the details mentioned above have been explained. Therefore, they will be omitted or will be briefly mentioned in the above references. Figure 2 , Figure 5 and Figure 6 The description of specific details overlaps with the description of specific details.
[0283] According to the implementation, the coding device 200 can derive the prediction sample of the current block based on the intra-prediction mode applied to the current block (S810).
[0284] The encoding device can derive the residual sample of the current block based on the predicted sample (S820).
[0285] The encoding device can derive the transform coefficients by performing a primary transform (S830).
[0286] The primary transform can be performed using multiple transform kernels, such as in MTS, in which case the transform kernel can be selected based on the intra-prediction mode.
[0287] When applying MTS to the current block, the encoding device can encode the MTS indexes associated with the MTS matrix.
[0288] The encoding device 200 can determine whether to perform a quadratic transform or an indivisible transform (specifically, LFNST) on the transform coefficients of the current block, and can derive the modified transform coefficients by applying LFNST to the transform coefficients.
[0289] Unlike a primary transform that separates and transforms the coefficients to be transformed vertically or horizontally, LFNST is an inseparable transform that applies the transform to the coefficients without separating them in a specific direction. This inseparable transform can be a low-frequency inseparable transform that applies the transform only to the low-frequency region rather than the entire target block to be transformed.
[0290] Encoding device 200 can derive a flag variable (S840) related to whether to apply LFNST to the current block for each color component of the current block.
[0291] The encoding device can derive the flag variable ApplyLfnstFlag without referencing the color index (cIdx) of the color components forming the current block. According to this embodiment, the flag variable can be defined as a one-dimensional array (ApplyLfnstFlag[cIdx]) having values corresponding to the color components. That is, the flag variable value can be derived separately for each color component of the current block. Here, the current block can be an encoding unit.
[0292] According to the example, as shown in Table 7, when the encoding unit is encoded in a single-tree structure or a luminance-separated tree structure (i.e., satisfying the condition "treeType != DUAL_TREE_CHROMA" in Table 7, where DUAL_TREE_CHROMA indicates a chrominance-separated tree), the ApplyLfnstFlag value can be 1 only for the luminance component. That is, only the value of ApplyLfnstFlag[0] can be 1, and both ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are 0.
[0293] When the coding unit is encoded according to the chroma separation tree structure (i.e., satisfying the condition "treeType==DUAL_TREE_CHROMA" in Table 7), the ApplyLfnstFlag value can be 1 only for the chroma component. That is, only the values of ApplyLfnstFlag[1] and ApplyLfnstFlag[2] can be 1, and ApplyLfnstFlag[0] is 0.
[0294] Alternatively, as shown in Table 8, since ApplyLfnstFlag[0] is a flag related only to the luminance component, its value can only be set when the coding unit is not encoded according to the chroma split tree structure (i.e., when the coding unit is encoded according to the single tree structure or the luminance split tree structure). Since ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are flags related only to the chroma component, their values can only be set when the coding unit is not encoded according to the luminance split tree structure (i.e., when the coding unit is encoded according to the single tree structure or the chroma split tree structure).
[0295] That is, for dual-tree luminance, only ApplyLfnstFlag[0] is set, and ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are not set, and for dual-tree chrominance, only ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set, and ApplyLfnstFlag[0] is not set.
[0296] Since only ApplyLfnstFlag[0] is referenced in the case of a luminance-separated tree, only ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the case of a chrominance-separated tree, and ApplyLfnstFlag[0], ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are referenced in the case of a single tree, the same operation as in Table 7 is performed even if the value of ApplyLfnstFlag[cIdx] is set as shown in Table 8.
[0297] Since LFNST can be applied only to the luminance component in a single tree, when the coding unit encodes according to Table 8 in a single tree structure, both ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set to 0.
[0298] According to another method, as shown in Table 9, in the split tree structure, regardless of the color component, the same value is set for ApplyLfnstFlag[cIdx]. When the value of lfnst_idx is greater than 0, ApplyLfnstFlag[cIdx] is set to 1. Otherwise, ApplyLfnstFlag[cIdx] is set to 0.
[0299] In the luminance splitting tree, since no operation is performed on the chrominance components (cIdx = 1, 2), the values set for ApplyLfnstFlag[1] and ApplyLfnstFlag[2] have no effect on the entire transformation process. Similarly, in the chrominance splitting tree, since no operation is performed on the luminance components (cIdx = 0), the value set for ApplyLfnstFlag[0] has no effect on the entire transformation process.
[0300] In Table 9, in a single tree, when the value of lfnst_idx is greater than 0, ApplyLfnstFlag[0] is set to 1, otherwise it is set to 0, and ApplyLfnstFlag[1] and ApplyLfnstFlag[2] are set to 0.
[0301] The encoding device 200 can perform LFNST (S850) based on flag variables and transform coefficients.
[0302] The encoding device can compare the RD values of only the LFNST matrix with an LfnstDcOnly value of 0 and an LfnstZeroOutSigCoeffFlag variable of 1 by applying multiple LFNST candidates (i.e., LFNST matrices).
[0303] The encoding device can select the optimal LFNST matrix and derive the modified transform coefficients based on the selected LFNST.
[0304] The transform set can be determined based on the intra-prediction mode for the transform block to be transformed, and the matrix applied to LFNST is the transpose of the matrix used for inverse LFNST.
[0305] In the example, the LFNST matrix can be a non-square matrix with fewer rows than columns.
[0306] The encoding device can encode and output image information including the LFNST index and residual information generated based on the flag variables (S860).
[0307] The encoding device can derive quantized transform coefficients by performing quantization based on the modified transform coefficients of the current block, and can encode and output image information including the LFNST index.
[0308] The encoding device can generate residual information that includes information about the quantization transform coefficients. The residual information may include information / syntax elements related to the above transform. The encoding device can encode image / video information including the residual information and output the encoded image / video information as a bitstream.
[0309] Specifically, the encoding device 200 can generate information about the quantization transform coefficients and can encode the quantization information about the generated transform coefficients.
[0310] In this disclosure, at least one of quantization / dequantization and / or transform / inverse transform can be omitted. When quantization / dequantization is omitted, the quantization transform coefficients can be referred to as transform coefficients. When transform / inverse transform is omitted, the transform coefficients can be referred to as coefficients or residual coefficients, or, for consistency of expression, may still be referred to as transform coefficients.
[0311] Furthermore, in this disclosure, quantization transform coefficients and transform coefficients can be referred to as transform coefficients and scaled transform coefficients, respectively. In this case, residual information can include information about the transform coefficients, and this information can be signaled via residual coding syntax. Transform coefficients can be derived based on residual information (or information about transform coefficients), and scaled transform coefficients can be derived through the inverse transform (scaling) of the transform coefficients. Residual samples can be derived based on the inverse transform (scaling) of the scaled transform coefficients. These details can also be applied / expressed in other parts of this disclosure.
[0312] In the above embodiments, the method is illustrated using a series of steps or blocks based on a flowchart. However, this disclosure is not limited to the order of the steps, and a step may be performed in a different order or sequence than described above, or may occur simultaneously with another step. Furthermore, those skilled in the art will understand that the steps shown in the flowchart are not exclusive, and one or more steps in the flowchart may be incorporated or removed without affecting the scope of this disclosure.
[0313] The methods described above according to this disclosure can be implemented in software form, and the encoding and / or decoding devices according to this disclosure can be included in image processing devices such as TVs, computers, smartphones, set-top boxes, and display devices.
[0314] When the embodiments of this disclosure are implemented in software, the methods described above can be implemented as modules (processes, functions, etc.) to perform the functions described above. Modules can be stored in memory and can be executed by a processor. Memory can be internal or external to the processor and can be connected to the processor in various known ways. The processor may include application-specific integrated circuits (ASICs), other chip sets, logic circuits, and / or data processing devices. Memory may include read-only memory (ROM), random access memory (RAM), flash memory, memory cards, storage media, and / or other storage devices. That is, the embodiments described in this disclosure can be implemented and executed on a processor, microprocessor, controller, or chip. Furthermore, the functional units shown in each figure can be implemented and executed on a computer, processor, microprocessor, controller, or chip.
[0315] Furthermore, the decoding and encoding devices using this disclosure can be included in multimedia broadcast transceivers, mobile communication terminals, home theater video devices, digital cinema video devices, surveillance cameras, video chat devices, real-time communication devices such as video communication, mobile streaming devices, storage media, cameras, video-on-demand (VoD) service providers, over-the-top (OTT) video devices, internet streaming service providers, three-dimensional (3D) video devices, video telephony devices, and medical video devices, and can be used to process video signals or data signals. For example, over-the-top (OTT) video devices can include game consoles, Blu-ray players, internet access TVs, home theater systems, smartphones, tablet PCs, digital video recorders (DVRs), etc.
[0316] Furthermore, the processing method of this disclosure can be generated in the form of a program executed by a computer and stored in a computer-readable recording medium. Multimedia data with a data structure according to this disclosure can also be stored in a computer-readable recording medium. Computer-readable recording media include all types of storage devices and distributed storage devices in which computer-readable data is stored. Computer-readable recording media can include, for example, Blu-ray discs (BD), Universal Serial Bus (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, magnetic tape, floppy disks, and optical data storage devices. Additionally, computer-readable recording media include media implemented in carrier wave form (e.g., transmitted via the Internet). Furthermore, bitstreams generated by encoding methods can be stored in computer-readable recording media or transmitted via wired or wireless communication networks. Furthermore, embodiments of this disclosure can be implemented as computer program products by program code, and the program code can be executed on a computer by embodiments of this disclosure. The program code can be stored on a computer-readable medium.
[0317] The claims disclosed herein can be combined in various ways. For example, the technical features of the method claims can be combined to implement or perform in a device, and the technical features of the device claims can be combined to implement or perform in a method. Furthermore, the technical features of the method claims and the device claims can be combined to implement or perform in a device, and the technical features of the method claims and the device claims can be combined to implement or perform in a method.
[0318] Figure 9 The structure of a content streaming system applying this disclosure is illustrated.
[0319] In addition, the content streaming system using this disclosure may mainly include an encoding server, a streaming server, a network server, a media storage device, a user device, and a multimedia input device.
[0320] An encoding server is used to compress content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data to generate a bitstream, and then send it to a streaming server. As another example, in cases where multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server can be omitted. The bitstream can be generated by applying the encoding method or bitstream generation method disclosed herein. Furthermore, the streaming server can temporarily store the bitstream during the sending or receiving process.
[0321] A streaming server sends multimedia data to a user's device via a web server based on a user's request. The web server acts as an instrument to inform the user what services are available. When a user requests a desired service, the web server forwards the request to the streaming server, and the streaming server sends the multimedia data to the user. In this regard, the content streaming system may include a separate control server, which in this case controls the commands / responses between the corresponding devices in the content streaming system.
[0322] A streaming server can receive content from media storage and / or encoding servers. For example, when receiving content from an encoding server, the content can be received in real time. In this case, the streaming server can store the bitstream for a predetermined period of time to smoothly provide streaming services.
[0323] For example, user equipment may include mobile phones, smartphones, laptops, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigators, touchscreen PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, head-mounted displays (HMDs)), digital TVs, desktop computers, digital signage, etc. Each server in the content streaming system can operate as a distributed server, and in this case, the data received by each server can be processed in a distributed manner.
Claims
1. An image decoding method performed by a decoding device, the image decoding method comprising the following steps: Receive image information, including residual information and LFNST index, from the bitstream; The transformation coefficients are derived based on the residual information. Based on the LFNST index, derive the array of flag variables related to whether or not to apply LFNST to the current block; as well as The LFNST is performed based on the array of flag variables and the transformation coefficients. The flag variable array is defined as a one-dimensional array. The derivation for each color component of the current block includes flag variables in the flag variable array, and The array of flag variables includes a first flag variable for the luminance component, a second flag variable for the Cb component, and a third flag variable for the Cr component.
2. An image encoding method performed by an encoding device, the image encoding method comprising the following steps: Derive the prediction samples for the current block; Based on the predicted samples, the residual samples for the current block are derived; The transformation coefficients are derived by performing a primary transformation on the residual samples; Derive the array of flag variables related to whether or not to apply LFNST to the current block; The LFNST is performed based on the array of flag variables and the transformation coefficients; as well as Encode and output image information including the LFNST index and residual information generated based on the flag variables. The flag variable array is defined as a one-dimensional array. The derivation for each color component of the current block includes the flag variables in the flag variable array, and The array of flag variables includes a first flag variable for the luminance component, a second flag variable for the Cb component, and a third flag variable for the Cr component.
3. A non-transitory computer-readable digital storage medium, said non-transitory computer-readable digital storage medium for storing computer programs, wherein, When the computer program is executed by the processor, the image encoding method according to claim 2 is executed.
4. A method for transmitting data relating to image information, the method comprising the following steps: Derive the prediction samples for the current block; Based on the predicted samples, the residual samples for the current block are derived; The transformation coefficients are derived by performing a primary transformation on the residual samples; Derive the array of flag variables related to whether or not to apply LFNST to the current block; The LFNST is performed based on the array of flag variables and the transformation coefficients; Encode and output image information including the LFNST index and residual information generated based on the flag variables; as well as Send the data related to the image information. The flag variable array is defined as a one-dimensional array. The derivation for each color component of the current block includes the flag variables in the flag variable array, and The array of flag variables includes a first flag variable for the luminance component, a second flag variable for the Cb component, and a third flag variable for the Cr component.
Citation Information
Patent Citations
KR20190067732A