WO2020046085A1 - Method and apparatus for processing image signal - Google Patents
Method and apparatus for processing image signal Download PDFInfo
- Publication number
- WO2020046085A1 WO2020046085A1 PCT/KR2019/011249 KR2019011249W WO2020046085A1 WO 2020046085 A1 WO2020046085 A1 WO 2020046085A1 KR 2019011249 W KR2019011249 W KR 2019011249W WO 2020046085 A1 WO2020046085 A1 WO 2020046085A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- transform
- unit
- mts
- block
- index
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/625—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Definitions
- the present invention relates to a method and apparatus for processing a video signal, and more particularly, to a method and apparatus for encoding or decoding a video signal by performing a transformation.
- Compression coding refers to a series of signal processing techniques for transmitting digitized information through a communication line or for storing in a form suitable for a storage medium.
- Media such as an image, an image, and voice may be a target of compression encoding.
- a technique of performing compression encoding on an image is referred to as video image compression.
- Next-generation video content will be characterized by high spatial resolution, high frame rate, and high dimensionality of scene representation. Processing such content will result in a huge increase in terms of memory storage, memory access rate, and processing power.
- the video codec standard after the high efficiency video coding (HEVC) standard requires an efficient conversion technique for converting a spatial domain video signal into the frequency domain along with a higher accuracy prediction technique. Shall be.
- Embodiments of the present invention provide an image signal processing method and apparatus for reducing the computational complexity during conversion.
- a method of processing an image signal comprising: identifying a transform index indicating a transform kernel for transforming a current block, determining a transform matrix corresponding to the transform index, and converting the transform index; Generating an array of residual samples by applying a matrix to the transform coefficients of the current block, the components of the transform matrix being implemented by a shift operation and addition of one.
- each of the components of the transformation matrix may be implemented by a sum of terms consisting of a left shift of one.
- the number of terms constituting each of the components of the transformation matrix may be set to be smaller than three.
- each of the components of the transformation matrix may be set to a value approximated within an allowable error range from DCT-4, DST-7, or DCT-8.
- each of the components of the transformation matrix may be determined in consideration of the allowed error range and the number of terms.
- An apparatus for processing an image signal includes a memory for storing the image signal and a processor coupled to the memory, wherein the processor indicates a transform kernel for transforming a current block. Determine a transform index, determine a transform matrix corresponding to the transform index, and apply the transform matrix to transform coefficients of the current block, the components of the transform matrix being: It can be implemented by shift operation and addition of one.
- the computational complexity may be reduced by performing a transformation using a shift operation and an addition operation without a multiplication operation.
- FIG. 1 shows an example of an image coding system as an embodiment to which the present invention is applied.
- FIG. 2 is a schematic block diagram of an encoding apparatus in which an encoding of a video / image signal is performed, according to an embodiment to which the present invention is applied.
- FIG. 3 is an embodiment to which the present invention is applied and shows a schematic block diagram of a decoding apparatus in which decoding of a video signal is performed.
- FIG. 4 is a structural diagram of a content streaming system according to an embodiment to which the present invention is applied.
- FIG. 5 is an embodiment to which the present invention may be applied.
- FIG. 5A is a quadtree (QT)
- FIG. 5B is a binary tree (BT)
- FIG. 5C is a ternary tree (TT).
- FIG. 4 is a diagram for describing block division structures by Tree (AT).
- FIG. 6 is a schematic block diagram of a transform and quantization unit, an inverse quantization unit, and an inverse transform unit in the encoding apparatus 100 of FIG. 2, and FIG. A schematic block diagram of the inverse quantization and inverse transform portion is shown.
- FIG. 8 is a flowchart illustrating a process of performing adaptive multiple transform (AMT).
- AMT adaptive multiple transform
- FIG. 9 is a flowchart illustrating a decoding process in which AMT is performed.
- FIG. 10 shows three forward scan sequences for transform coefficients or transform coefficient blocks applied in the HEVC standard, (a) a diagonal scan, (b) a horizontal scan, and (c) a vertical scan (vertical scan).
- FIG. 11 and 12 illustrate embodiments to which the present invention is applied.
- FIG. 11 shows positions of transform coefficients when a forward diagonal scan is applied when 4x4 RST is applied to a 4x8 block
- FIG. 12 shows two 4x4 blocks. An example of a case of merging valid transform coefficients of a into one block is shown.
- FIG. 13 is a flowchart illustrating an inverse transform process based on multiple transform selection (MTS) according to an embodiment of the present invention.
- FIG. 14 is a block diagram of an apparatus for performing decoding based on an MTS according to an embodiment of the present invention.
- FIG. 15 shows an example of a decoding flowchart for performing a conversion process according to an embodiment of the present invention.
- FIG. 16 shows a flowchart for processing a video signal according to an embodiment to which the present invention is applied.
- FIG. 17 shows an example of a block diagram of an apparatus for processing a video signal as an embodiment to which the present invention is applied.
- a 'processing unit' refers to a unit in which a process of encoding / decoding such as prediction, transformation, and / or quantization is performed.
- the processing unit may be interpreted to include a unit for a luma component and a unit for a chroma component.
- the processing unit may correspond to a block, a coding unit (CU), a prediction unit (PU), or a transform unit (TU).
- the processing unit may be interpreted as a unit for the luminance component or a unit for the chrominance component.
- the processing unit may correspond to a CTB, CB, PU or TB for the luminance component.
- the processing unit may correspond to a CTB, CB, PU or TB for the chrominance component.
- the present invention is not limited thereto, and the processing unit may be interpreted to include a unit for a luminance component and a unit for a color difference component.
- processing unit is not necessarily limited to square blocks, but may also be configured in a polygonal form having three or more vertices.
- a pixel or a pixel is referred to as a sample.
- using a sample may mean using a pixel value or a pixel value.
- FIG. 1 shows an example of an image coding system as an embodiment to which the present invention is applied.
- the image coding system can include a source device 10 and a receiving device 20.
- the source device 10 may transmit the encoded video / video information or data to the receiving device 20 through a digital storage medium or a network in a file or streaming form.
- Source device 10 may include a video source 11, an encoding device 12, and a transmitter 13.
- the receiving device 20 may include a receiver 21, a decoding device 22 and a renderer 23.
- the encoding device 10 may be called a video / image encoding device, and the decoding device 20 may be called a video / image decoding device.
- the transmitter 13 may be included in the encoding device 12.
- the receiver 21 may be included in the decoding device 22.
- the renderer 23 may include a display unit, and the display unit may be configured as a separate device or an external component.
- the video source may acquire the video / image through a process of capturing, synthesizing, or generating the video / image.
- the video source may comprise a video / image capture device and / or a video / image generation device.
- the video / image capture device may include, for example, one or more cameras, video / image archives including previously captured video / images, and the like.
- Video / image generation devices may include, for example, computers, tablets and smartphones, and may (electronically) generate video / images.
- a virtual video / image may be generated through a computer or the like. In this case, the video / image capturing process may be replaced by a process of generating related data.
- the encoding device 12 may encode the input video / image.
- the encoding device 12 may perform a series of procedures such as prediction, transform, and quantization for compression and coding efficiency.
- the encoded data (encoded video / image information) may be output in the form of a bitstream.
- the transmitter 13 may transmit the encoded video / video information or data output in the form of a bitstream to the receiver of the receiving device through a digital storage medium or a network in the form of a file or streaming.
- the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, and the like.
- the transmission unit 13 may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast / communication network.
- the receiver 21 may extract the bitstream and transfer it to the decoding device 22.
- the decoding device 22 may decode the video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device 12.
- the renderer 23 may render the decoded video / image.
- the rendered video / image may be displayed through the display unit.
- FIG. 2 is a schematic block diagram of an encoding apparatus in which an encoding of a video / image signal is performed, according to an embodiment to which the present invention is applied.
- the encoding apparatus 100 of FIG. 2 may correspond to the encoding apparatus 12 of FIG. 1.
- the image divider 110 may divide an input image (or a picture or a frame) input to the encoding apparatus 100 into one or more processing units.
- the processing unit may be called a coding unit (CU).
- the coding unit may be recursively divided according to a quad-tree binary-tree (QTBT) structure from a coding tree unit (CTU) or a largest coding unit (LCU).
- QTBT quad-tree binary-tree
- CTU coding tree unit
- LCU largest coding unit
- one coding unit may be divided into a plurality of coding units of a deeper depth based on a quad tree structure and / or a binary tree structure.
- the quad tree structure may be applied first and the binary tree structure may be applied later.
- the binary tree structure may be applied first.
- the coding procedure according to the present invention may be performed based on the final coding unit that is no longer split.
- the maximum coding unit may be used as the final coding unit immediately based on coding efficiency according to the image characteristic, or if necessary, the coding unit is recursively divided into coding units of lower depths and optimized.
- a coding unit of size may be used as the final coding unit.
- the coding procedure may include a procedure of prediction, transform, and reconstruction, which will be described later.
- the processing unit may further include a prediction unit (PU) or a transform unit (TU).
- the prediction unit and the transform unit may be partitioned or partitioned from the last coding unit described above, respectively.
- the prediction unit may be a unit of sample prediction
- the transformation unit may be a unit for deriving a transform coefficient and / or a unit for deriving a residual signal from the transform coefficient.
- an M ⁇ N block may represent a set of samples or transform coefficients composed of M columns and N rows.
- a sample may generally represent a pixel or a value of a pixel, and may represent only a pixel / pixel value of a luma component or only a pixel / pixel value of a chroma component.
- a sample may be used as a term corresponding to one picture (or image) for a pixel or a pel.
- the encoding apparatus 100 subtracts the prediction signal (predicted block, prediction sample array) output from the inter prediction unit 180 or the intra prediction unit 185 from the input image signal (original block, original sample array).
- a signal may be generated (residual signal, residual block, residual sample array), and the generated residual signal is transmitted to the converter 120.
- a unit for subtracting a prediction signal (prediction block, prediction sample array) from an input image signal (original block, original sample array) in the encoder 100 may be referred to as a subtraction unit 115.
- the prediction unit may perform a prediction on a block to be processed (hereinafter, referred to as a current block) and generate a predicted block including prediction samples for the current block.
- the prediction unit may determine whether intra prediction or inter prediction is applied on a current block or CU basis. As described later in the description of each prediction mode, the prediction unit may generate various information related to prediction, such as prediction mode information, and transmit the generated information to the entropy encoding unit 190. The information about the prediction may be encoded in the entropy encoding unit 190 and output in the form of a bitstream.
- the intra predictor 185 may predict the current block by referring to the samples in the current picture.
- the referenced samples may be located in the neighborhood of the current block or may be located apart according to the prediction mode.
- the prediction modes may include a plurality of non-directional modes and a plurality of directional modes.
- Non-directional mode may include, for example, DC mode and planner mode (Planar mode).
- the directional mode may include, for example, 33 directional prediction modes or 65 directional prediction modes depending on the degree of detail of the prediction direction. However, as an example, more or less number of directional prediction modes may be used depending on the setting.
- the intra predictor 185 may determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
- the inter predictor 180 may derive the predicted block with respect to the current block based on the reference block (reference sample array) specified by the motion vector on the reference picture.
- the motion information may be predicted in units of blocks, subblocks, or samples based on the correlation of the motion information between the neighboring block and the current block.
- the motion information may include a motion vector and a reference picture index.
- the motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information.
- the neighboring block may include a spatial neighboring block existing in the current picture and a temporal neighboring block present in the reference picture.
- a reference picture including a reference block and a reference picture including a temporal neighboring block may be the same or different.
- the temporal neighboring block may be referred to as a collocated reference block, a collocated CU (colCU), or the like.
- a reference picture including a temporal neighboring block may be referred to as a collocated picture (colPic).
- the inter prediction unit 180 constructs a motion information candidate list based on neighboring blocks, and provides information indicating which candidates are used to derive the motion vector and / or reference picture index of the current block. Can be generated. Inter prediction may be performed based on various prediction modes.
- the inter prediction unit 180 may use motion information of a neighboring block as motion information of a current block.
- the residual signal may not be transmitted.
- MVP motion vector prediction
- the motion vector of the neighboring block is used as a motion vector predictor, and the motion vector of the current block is signaled by signaling a motion vector difference. Can be directed.
- the prediction signal generated by the inter predictor 180 or the intra predictor 185 may be used to generate a reconstruction signal or may be used to generate a residual signal.
- the transformer 120 may apply transform techniques to the residual signal to generate transform coefficients.
- the transformation technique may include at least one of a discrete cosine transform (DCT), a discrete sine transform (DST), a karhunen-loeve transform (KLT), a graph-based transform (GBT), or a conditionally non-linear transform (CNT).
- DCT discrete cosine transform
- DST discrete sine transform
- KLT karhunen-loeve transform
- GBT graph-based transform
- CNT conditionally non-linear transform
- GBT means a conversion obtained from this graph when the relationship information between pixels is represented by a graph.
- the CNT refers to a transform that is generated based on and generates a prediction signal by using all previously reconstructed pixels.
- the conversion process may be applied to pixel blocks having the same size as the square, or may be applied to blocks of variable size rather than square.
- the quantization unit 130 quantizes the transform coefficients and transmits them to the entropy encoding unit 190.
- the entropy encoding unit 190 encodes the quantized signal (information about the quantized transform coefficients) and outputs the bitstream as a bitstream. have.
- Information about the quantized transform coefficients may be referred to as residual information.
- the quantization unit 130 may rearrange the quantized transform coefficients in the form of a block into a one-dimensional vector form based on a coefficient scan order, and the quantized transform based on the quantized transform coefficients in the form of a one-dimensional vector. Information about the coefficients may be generated.
- the entropy encoding unit 190 may perform various encoding methods such as, for example, exponential Golomb, context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and the like.
- the entropy encoding unit 190 may encode information necessary for video / image reconstruction other than quantized transform coefficients (for example, values of syntax elements) together or separately.
- the encoded information (eg, video / picture information) may be transmitted or stored in units of NALs (network abstraction layer) in a bitstream form.
- the bitstream may be transmitted over a network or may be stored in a digital storage medium.
- the network may include a broadcasting network and / or a communication network
- the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, and the like.
- the signal output from the entropy encoding unit 190 may include a transmitting unit (not shown) for transmitting and / or a storing unit (not shown) for storing as an internal / external element of the encoding apparatus 100, or the transmitting unit It may be a component of the entropy encoding unit 190.
- the quantized transform coefficients output from the quantization unit 130 may be used to generate a prediction signal.
- the quantized transform coefficients may be reconstructed in the residual signal by applying inverse quantization and inverse transform through inverse quantization unit 140 and inverse transform unit 150 in a loop.
- the adder 155 adds the reconstructed residual signal to the predicted signal output from the inter predictor 180 or the intra predictor 185 so that a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) is added. Can be generated. If there is no residual for the block to be processed, such as when the skip mode is applied, the predicted block may be used as the reconstructed block.
- the adder 155 may be called a restoration unit or a restoration block generation unit.
- the generated reconstruction signal may be used for intra prediction of the next block to be processed in the current picture, and may be used for inter prediction of the next picture through filtering as described below.
- the filtering unit 160 may improve subjective / objective image quality by applying filtering to the reconstruction signal. For example, the filtering unit 160 may generate a modified reconstructed picture by applying various filtering methods to the reconstructed picture, and transmit the modified reconstructed picture to the decoded picture buffer 170. Various filtering methods may include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, and the like. The filtering unit 160 may generate various information related to the filtering and transmit the generated information to the entropy encoding unit 190 as described later in the description of each filtering method. The filtering information may be encoded in the entropy encoding unit 190 and output in the form of a bitstream.
- the modified reconstructed picture transmitted to the decoded picture buffer 170 may be used as the reference picture in the inter predictor 180.
- the encoding apparatus may avoid prediction mismatch between the encoding apparatus 100 and the decoding apparatus, and may improve encoding efficiency.
- the decoded picture buffer 170 may store the modified reconstructed picture for use as a reference picture in the inter prediction unit 180.
- FIG. 3 is an embodiment to which the present invention is applied and shows a schematic block diagram of a decoding apparatus in which decoding of a video signal is performed.
- the decoding device 200 of FIG. 3 may correspond to the decoding device 22 of FIG. 1.
- the decoding apparatus 200 includes an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, an adder 235, a filtering unit 240, and a decoded picture buffer (DPB). 250, an inter predictor 260, and an intra predictor 265 may be configured.
- the inter predictor 260 and the intra predictor 265 may be collectively called a predictor. That is, the predictor may include an inter predictor 180 and an intra predictor 185.
- the inverse quantization unit 220 and the inverse transform unit 230 may be collectively called a residual processing unit. That is, the residual processor may include an inverse quantization unit 220 and an inverse transform unit 230.
- the entropy decoding unit 210, the inverse quantization unit 220, the inverse transformer 230, the adder 235, the filtering unit 240, the inter prediction unit 260, and the intra prediction unit 265 are described above. Can be configured by one hardware component (eg, decoder or processor).
- the decoded picture buffer 250 may be implemented by one hardware component (for example, a memory or a digital storage medium) according to an exemplary embodiment.
- the decoding apparatus 200 may reconstruct an image corresponding to a process in which the video / image information is processed in the encoding apparatus 100 of FIG. 2.
- the decoding apparatus 200 may perform decoding using a processing unit applied in the encoding apparatus 100.
- the processing unit of decoding may thus be a coding unit, for example, and the coding unit may be divided along the quad tree structure and / or the binary tree structure from the coding tree unit or the largest coding unit.
- the reconstructed video signal decoded and output through the decoding apparatus 200 may be reproduced through the reproducing apparatus.
- the decoding apparatus 200 may receive a signal output from the encoding apparatus 100 of FIG. 2 in the form of a bitstream, and the received signal may be decoded through the entropy decoding unit 210.
- the entropy decoding unit 210 may parse the bitstream to derive information (eg, video / image information) necessary for image reconstruction (or picture reconstruction).
- the entropy decoding unit 210 decodes the information in the bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, quantized values of syntax elements required for image reconstruction, and transform coefficients for residuals. Can be output.
- the CABAC entropy decoding method receives a bin corresponding to each syntax element in a bitstream, and decodes syntax element information and decoding information of neighboring and decoding target blocks or information of symbols / bins decoded in a previous step.
- the context model may be determined using the context model, the probability of occurrence of a bin may be predicted according to the determined context model, and arithmetic decoding of the bin may be performed to generate a symbol corresponding to the value of each syntax element. have.
- the CABAC entropy decoding method may update the context model by using the information of the decoded symbol / bin for the context model of the next symbol / bin after determining the context model.
- the information related to the prediction among the information decoded by the entropy decoding unit 210 is provided to the predictor (the inter predictor 260 and the intra predictor 265), and the entropy decoding performed by the entropy decoder 210 is performed. Dual values, that is, quantized transform coefficients and related parameter information, may be input to the inverse quantizer 220.
- information on filtering among information decoded by the entropy decoding unit 210 may be provided to the filtering unit 240.
- a receiver (not shown) that receives a signal output from the encoding apparatus 100 may be further configured as an internal / external element of the decoding apparatus 200, or the receiver may be a component of the entropy decoding unit 210. It may be.
- the inverse quantization unit 220 may dequantize the quantized transform coefficients and output the transform coefficients.
- the inverse quantization unit 220 may rearrange the quantized transform coefficients in the form of a two-dimensional block. In this case, reordering may be performed based on the coefficient scan order performed in the encoding apparatus 100.
- the inverse quantization unit 220 may perform inverse quantization on quantized transform coefficients using a quantization parameter (for example, quantization step size information), and may obtain transform coefficients.
- a quantization parameter for example, quantization step size information
- the inverse transformer 230 inversely transforms the transform coefficients to obtain a residual signal (residual block, residual sample array).
- the prediction unit may perform prediction on the current block and generate a predicted block including prediction samples for the current block.
- the prediction unit may determine whether intra prediction or inter prediction is applied to the current block based on the information about the prediction output from the entropy decoding unit 210, and may determine a specific intra / inter prediction mode.
- the intra predictor 265 may predict the current block by referring to the samples in the current picture.
- the referenced samples may be located in the neighbor of the current block or may be spaced apart according to the prediction mode.
- the prediction modes may include a plurality of non-directional modes and a plurality of directional modes.
- the intra predictor 265 may determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
- the inter prediction unit 260 may construct a motion information candidate list based on neighboring blocks and derive a motion vector and / or a reference picture index of the current block based on the received candidate selection information. Inter prediction may be performed based on various prediction modes, and the information about the prediction may include information indicating a mode of inter prediction for the current block.
- the adder 235 adds the obtained residual signal to the predictive signal (predicted block, predictive sample array) output from the inter predictor 260 or the intra predictor 265 to restore the reconstructed signal (reconstructed picture, reconstructed block). , Restore sample array). If there is no residual for the block to be processed, such as when the skip mode is applied, the predicted block may be used as the reconstructed block.
- the adder 235 may be called a restoration unit or a restoration block generation unit.
- the generated reconstruction signal may be used for intra prediction of the next block to be processed in the current picture, and may be used for inter prediction of the next picture through filtering as described below.
- the filtering unit 240 may improve subjective / objective image quality by applying filtering to the reconstruction signal. For example, the filtering unit 240 may generate a modified reconstructed picture by applying various filtering methods to the reconstructed picture, and transmit the modified reconstructed picture to the decoded picture buffer 250.
- Various filtering methods may include, for example, deblocking filtering, sample adaptive offset (SAO), adaptive loop filter (ALF), bilateral filter, and the like.
- the modified reconstructed picture transmitted to the decoded picture buffer 250 may be used as the reference picture by the inter predictor 260.
- the embodiments described by the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the encoding apparatus 100 are respectively the filtering unit 240 and the inter prediction unit 260 of the decoding apparatus.
- the intra prediction unit 265 may be equally or correspondingly applied.
- FIG. 4 is a structural diagram of a content streaming system according to an embodiment to which the present invention is applied.
- the content streaming system to which the present invention is applied may largely include an encoding server 410, a streaming server 420, a web server 430, a media storage 440, a user device 450, and a multimedia input device 460. have.
- the encoding server 410 compresses content input from multimedia input devices such as a smartphone, a camera, a camcorder, etc. into digital data to generate a bitstream and transmit the bitstream to the streaming server 420.
- multimedia input devices such as a smartphone, a camera, a camcorder, or the like directly generates a bitstream
- the encoding server 410 may be omitted.
- the bitstream may be generated by an encoding method or a bitstream generation method to which the present invention is applied, and the streaming server 420 may temporarily store the bitstream in the process of transmitting or receiving the bitstream.
- the streaming server 420 transmits the multimedia data to the user device 450 based on the user request through the web server 430, and the web server 430 serves as an intermediary to inform the user of what service there is.
- the web server 430 transmits the request to the streaming server 420, and the streaming server 420 transmits multimedia data to the user.
- the content streaming system may include a separate control server, in which case the control server serves to control the command / response between each device in the content streaming system.
- the streaming server 420 may receive content from the media store 440 and / or the encoding server 410. For example, when the content is received from the encoding server 410, the content may be received in real time. In this case, in order to provide a smooth streaming service, the streaming server 420 may store the bitstream for a predetermined time.
- Examples of the user device 450 include a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a personal digital assistant (PDA), a portable multimedia player (PMP), a navigation device, and a slate PC. ), Tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, glass glasses, head mounted displays), digital TVs , Desktop computers, digital signage, and the like.
- Each server in the content streaming system may operate as a distributed server.
- data received from each server may be distributedly processed.
- FIG. 5 is an embodiment to which the present invention may be applied.
- FIG. 5A is a quadtree (QT)
- FIG. 5B is a binary tree (BT)
- FIG. 5C is a ternary tree (TT).
- FIG. 4 is a diagram for describing block division structures by Tree (AT).
- one block may be divided on a QT basis.
- one subblock divided by QT may be further divided recursively using QT.
- Leaf blocks that are no longer QT split may be split by at least one of BT, TT, or AT.
- BT may have two types of divisions: horizontal BT (2NxN, 2NxN) and vertical BT (Nx2N, Nx2N).
- the TT may have two types of divisions, horizontal TT (2Nx1 / 2N, 2NxN, 2Nx1 / 2N) and vertical TT (1 / 2Nx2N, Nx2N, 1 / 2Nx2N).
- AT is horizontal-up AT (2Nx1 / 2N, 2Nx3 / 2N), horizontal-down AT (2Nx3 / 2N, 2Nx1 / 2N), vertical-left AT (1 / 2Nx2N, 3 / 2Nx2N), vertical-right AT (3 / 2Nx2N, 1 / 2Nx2N) can be divided into four types.
- Each BT, TT, AT may be further recursively divided using BT, TT, AT.
- Block A may be divided into four sub-blocks A0, A1, A2, A3 by QT.
- the sub block A1 may be further divided into four sub blocks B0, B1, B2, and B3 by QT.
- Block B3 which is no longer divided by QT, may be divided into vertical BT (C0, C1) or horizontal BT (D0, D1). Like the block C0, each subblock may be further recursively divided into the form of horizontal BT (E0, E1) or vertical BT (F0, F1).
- Block B3 which is no longer divided by QT, may be divided into vertical TT (C0, C1, C2) or horizontal TT (D0, D1, D2). Like block C1, each subblock may be further recursively divided into a form of horizontal TT (E0, E1, E2) or vertical TT (F0, F1, F2).
- Block B3 which is no longer divided by QT, may be divided into vertical AT (C0, C1) or horizontal AT (D0, D1). Like block C1, each subblock may be further recursively divided into a form of horizontal AT (E0, E1) or vertical TT (F0, F1).
- BT, TT, AT splitting can be used together to split.
- a sub block divided by BT may be divided by TT or AT.
- the sub-block divided by TT can be divided by BT or AT.
- a sub block divided by AT may be divided by BT or TT.
- each sub block may be divided into vertical BTs, or after the vertical BT division, each sub block may be divided into horizontal BTs. In this case, the division order is different, but the shape of the final division is the same.
- searching from left to right and from top to bottom, and searching for a block means an order of determining whether each divided sub-block is divided into additional blocks, or when each sub-block is not divided any more.
- a coding order of a block may be referred to, or a search order when referring to information of another neighboring block in a subblock.
- the transformation may be performed for each processing unit (or transformation block) divided by the division structure as illustrated in FIGS. 5A to 5D, and in particular, the transformation matrix may be applied by dividing by the row direction and the column direction. .
- different conversion types may be used depending on the length of the row direction or the column direction of the processing unit (or transform block).
- FIG. 6 is a schematic diagram of a transform and quantization unit 120/130 and an inverse quantization and inverse transform unit 140/150 in the encoding apparatus 100 of FIG. 7 shows a schematic block diagram of an inverse quantization and inverse transform unit 220/230 in the decoding apparatus 200.
- the transform and quantization unit 120/130 may include a primary transform unit 121, a secondary transform unit 122, and a quantization unit 130. have.
- the inverse quantization and inverse transform unit 140/150 may include an inverse quantization unit 140, an inverse secondary transform unit 151, and an inverse primary transform unit 152. Can be.
- the inverse quantization unit 220/230 may include an inverse quantization unit 220, an inverse secondary transform unit 231, and an inverse primary transform unit ( 232).
- the transformation may be performed through a plurality of steps when performing the transformation.
- two stages of a primary transform and a secondary transform may be applied, or more transformation steps may be used according to an algorithm.
- the primary transform may be referred to as a core transform.
- the primary transform unit 121 may apply a primary transform to the residual signal, where the primary transform may be defined as a table at the encoder and / or the decoder.
- the secondary transform unit 122 may apply a secondary transform on the primary transformed signal, where the secondary transform may be defined as a table at the encoder and / or the decoder.
- a non-separable secondary transform may be conditionally applied as a secondary transform.
- NSST is applied only to intra prediction blocks, and may have a transform set applicable to each prediction mode group.
- the prediction mode group may be set based on symmetry with respect to the prediction direction. For example, since the prediction mode 52 and the prediction mode 16 are symmetric with respect to the prediction mode 34 (diagonal direction), the same transform set may be applied by forming one group. At this time, when the transform for the prediction mode 52 is applied, the input data is transposed and then applied, since the prediction set 16 and the transform set are the same.
- each has a transform set, and the transform set may be composed of two transforms.
- three transforms may be configured per transform set.
- the quantization unit 130 may perform quantization on the quadratic transformed signal.
- the inverse quantization and inverse transform unit 140/150 performs the above-described process in reverse, and redundant description thereof will be omitted.
- FIG. 7 shows a schematic block diagram of an inverse quantization and inverse transform unit 220/230 in the decoding apparatus 200.
- the inverse quantization and inverse transform units 220 and 230 may include an inverse quantization unit 220, an inverse secondary transform unit 231, and an inverse primary transform unit. 232 may include.
- the inverse quantization unit 220 obtains a transform coefficient from the entropy decoded signal using the quantization step size information.
- the inverse quadratic transform unit 231 performs inverse quadratic transformation on the transform coefficients.
- the inverse secondary transform indicates an inverse transform of the secondary transform described with reference to FIG. 6.
- the inverse primary transform unit 232 performs inverse primary transform on the inverse secondary transformed signal (or block) and obtains a residual signal.
- the inverse primary transform indicates an inverse transform of the primary transform described with reference to FIG. 6.
- FIG. 8 is a flowchart illustrating a process of performing adaptive multiple transform (AMT).
- AMT adaptive multiple transform
- a combination of transforms may be constructed from a mixture of separable and non-separable transforms.
- the row / column transform selection or the horizontal / vertical direction selection is unnecessary, and the transform combinations of Table 4 may be used only when the separable transform is selected.
- the schemes proposed in this specification may be applied regardless of the first-order transform or the second-order transform. That is, there is no restriction that it should be applied to either one, and both can be applied.
- the primary transform may mean a transform for transforming the residual block first
- the secondary transform may mean a transform for applying the transform to a block generated as a result of the primary transform.
- the encoding apparatus 100 may determine a transform group corresponding to the current block (S805).
- the transform group may mean the transform group of Table 4, but the present invention is not limited thereto and may be configured with other transform combinations.
- the encoding apparatus 100 may perform transform on candidate transform combinations available in the transform group (S810). As a result of the conversion, the encoding apparatus 100 may determine or select a transformation combination having the lowest cost of RD (rate distortion) (S815). The encoding apparatus 100 may encode a transform combination index corresponding to the selected transform combination (S820).
- FIG. 9 is a flowchart illustrating a decoding process in which AMT is performed.
- the decoding apparatus 200 may determine a transform group for the current block (S905).
- the decoding apparatus 200 may parse the transform combination index, where the transform combination index may correspond to any one of a plurality of transform combinations in the transform group (S910).
- the decoding apparatus 200 may induce a transform combination corresponding to the transform combination index (S915).
- the transform combination may mean the transform combination described in Table 4, but the present invention is not limited thereto. That is, the structure by other conversion combination is also possible.
- the decoding apparatus 200 may perform inverse transform on the current block based on the transform combination (S920). If the transformation combination consists of row transformations and column transformations, you can apply the column transformation first and then the column transformation. However, the present invention is not limited thereto, and in the case of applying the reverse or non-separated transform, the non-separated transform may be applied immediately.
- the process of determining the transform group and the process of parsing the transform combination index may be performed at the same time.
- Example 1 Reduced secondary transform (RST) that can be applied to a 4x4 block
- a non-separated transform that can be applied to one 4x4 block is a 16x16 transform. That is, when the data elements constituting the 4x4 block are arranged in a row-first or column-first order, a 16x1 vector may be applied to the corresponding non-separated transform.
- the forward 16x16 transform consists of 16 row-wise transform basis vectors. When the inner product of the 16x1 vector and each transform basis vector is taken, a transform coefficient for the corresponding transform basis vector is obtained. do. The process of obtaining the corresponding transform coefficients for all 16 transform basis vectors is equivalent to multiplying the 16x16 non-separated transform matrix by the input 16x1 vector.
- the transform coefficients obtained by the matrix product have a 16 ⁇ 1 vector form, and statistical characteristics may be different for each transform coefficient. For example, when a 16x1 transform coefficient vector is composed of 0th to 15th elements, the variance of the 0th element may be greater than the variance of the 15th element. In other words, the greater the variance value is, the larger the element is.
- Applying the inverse 16x16 non-separation transform from the 16x1 transform coefficients can restore the original 4x4 block signal (when ignoring effects such as quantization or integer calculations).
- the forward 16x16 non-separated transform is an orthonormal transform
- the reverse 16x16 transform can be obtained by transposing the matrix with respect to the forward 16x16 transform. Simply multiply the inverse 16x16 non-separated transform matrix by the 16x1 transform coefficient vector to obtain 16x1 vector data and arrange the row-first or column-first order that was applied first to restore the 4x4 block signal.
- elements constituting the 16x1 transform coefficient vector may have different statistical characteristics.
- the original signal may be applied to some of the transform coefficients that appear first without using all the transform coefficients. You can restore a signal that is fairly close to. For example, suppose that the inverse 16x16 non-separated transform consists of 16 column basis vectors, leaving only L column basis vectors to form a 16xL matrix and only the L transform coefficients that are more important among the transform coefficients.
- Lx1 vector which can appear first as in the previous example
- multiplying the 16xL matrix by the Lx1 vector can restore the original input 16x1 vector data and the 16x1 vector with little error.
- the Lx1 transform coefficient vector is obtained instead of the 16x1 transform coefficient vector. That is, L significant transform coefficients can be obtained by selecting L corresponding row direction transform vectors from a forward 16x16 non-separated transform matrix and constructing an Lx16 transform and multiplying the 16x1 input vector.
- FIG. 10 shows three forward scan sequences for transform coefficients or transform coefficient blocks applied in the HEVC standard, (a) a diagonal scan, (b) a horizontal scan, and (c) a vertical scan (vertical scan).
- FIG. 10 shows three forward scan sequences for transform coefficients or transform coefficient blocks (4x4 blocks, Coefficient Groups (CGs)) applied in the HEVC standard, and the residual coding may be (a), (b), or ( c) in the reverse order of scan order (i.e., coded in the order of 16 to 1). Since the three scan orders shown in (a), (b), and (c) are selected according to the intra-prediction mode, the scan order is determined according to the intra-prediction mode in the same way for the L transform coefficients. Can be configured.
- FIG. 11 and 12 illustrate embodiments to which the present invention is applied.
- FIG. 11 shows positions of transform coefficients when a forward diagonal scan is applied when 4x4 RST is applied to a 4x8 block
- FIG. 12 shows two 4x4 blocks. An example of a case of merging valid transform coefficients of a into one block is shown.
- transform coefficients may be located. Only half of each 4 ⁇ 4 block may have transform coefficients, and a value of 0 may be filled as a default at positions marked with X. Therefore, it is assumed that L transform coefficients are placed for each 4x4 block in the scan order shown in FIG. 10A, and filled with zeros for the remaining (16-L) positions of each 4x4 block. Residual coding (eg, residual coding in HEVC) may be applied.
- residual coding eg, residual coding in HEVC
- L transform coefficients arranged in two 4 ⁇ 4 blocks may be configured as one block.
- the transform coefficients of the two 4x4 blocks completely fill one 4x4 block, and thus no transform coefficients remain in the other block.
- a flag (coded_sub_block_flag) indicating whether the residual coding is applied to the block may be coded as 0 in HEVC.
- the combination scheme for the position of the transform coefficients of two 4x4 blocks may vary. For example, the positions may be combined in any order, but the following method may also be applied.
- the transform coefficients for the first 4x4 block may be arranged first, and then the transform coefficients for the second 4x4 block may be arranged. In other words, It can be arranged as connected. naturally, You can change the order as
- 0 values may be filled from L + 1 to 16th according to the transform coefficient scan order for each 4x4 block. Accordingly, if any one of the two 4x4 blocks is a non-zero value among the L + 1st to 16th positions, it can be seen that 4x4 RST is not applied. If the 4x4 RST also has a structure in which one of the transform sets prepared as JEM NSST is selected and applied, the index for which transform is to be applied (named NSST index in this document) may be signaled. Suppose that a decoder can know the NSST index through bitstream parsing and perform such parsing after residual decoding.
- 4x4 RST is applied to several 4x4 blocks in a specific region as shown in FIG. 11 (all of the same 4x4 RST may be applied or different 4x4 RST may be applied), all of the above through one NSST index A 4x4 RST can be specified (same or separate) that applies to 4x4 blocks. Since one NSST index determines 4x4 RST for all 4x4 blocks and whether it is applied, whether or not a non-zero transform coefficient exists in L + 1 th to 16 th positions for all 4x4 blocks It can be configured not to code the NSST index if there is a non-zero transform coefficient (L + 1 to 16th) in a position that is not allowed even in one 4x4 block by checking during the decoding process.
- the NSST index may signal separately for the luminance block and the chrominance block, and for the chrominance block, the NSST index may signal separate NSST indexes for Cb and Cr, and share one NSST index. It may be (signal only once).
- the 4x4 RST specified by the same NSST index may be applied (the 4x4 RST for Cb and Cr may be the same, or the NSST index may be the same but have separate 4x4 RST).
- it is checked whether there is a non-zero transform coefficient from L + 1 to 16th for all 4x4 blocks for Cb and Cr, if any one is 0. If no transform coefficient is found, the signaling for the NSST index may be omitted.
- whether or not the 4x4 RST is applied is determined in advance, so that the residual coding can be omitted for the positions where the transform coefficient is sure to be filled with zero.
- whether 4x4 RST is applied can be configured to know through NSST index value (for example, 4x4 RST is not applied when NSST index is 0) or through a separate syntax element (for example, NSST flag). It may signal. For example, if a separate syntax element is an NSST flag, the NSST flag is parsed first to determine whether 4x4 RST is applied, and if the NSST flag value is 1, the residuals for positions where no valid conversion factor can exist as described above are present. Coding can be omitted.
- the NSST index can be configured not to code and apply 4x4 RST.
- the positions marked with X in Figure 2 do not have valid transform coefficients when 4x4 RST is applied (eg zero values can be filled), so that the last nonzero coefficient is placed in the region marked with X. In this case, coding of the NSST index can be omitted. If the last non-zero coefficient is not located in the region marked with X, coding of the NSST index may be performed.
- the remaining residual coding part may be processed in the following two ways.
- a corresponding transform coefficient must exist for a specific position or a specific 4x4 block (for example, X position of FIG. 11), so that the position or block can be filled with 0 by default. You can skip the residual coding for this. For example, if you reach the location marked X in Figure 2, you can omit coding for sig_coeff_flag (a flag for whether a non-zero coefficient exists at that location, present in HEVC), as shown in Figure 3 Likewise, if you combine the transform coefficients of two blocks, you can omit coding for coded_sub_block_flag (exists in HEVC) for a 4x4 block that is empty to zero, and derive its value to 0. I can fill it.
- coded_sub_block_flag existing in HEVC
- the method of determining NSST index coding by comparing with the threshold value can be applied differently to luminance and chrominance. For example, different Tx and Ty may be applied to luminance and chrominance, and luminance (to Threshold may be applied and not luminance (color difference).
- the two methods described above are omitted (when the last nonzero coefficient is located in an area where no valid transform coefficients exist, the NSST index coding is omitted; when the X and Y coordinates for the last nonzero coefficient are less than any threshold, respectively, May be applied all at once. For example, a threshold check on the last non-zero coefficient position coordinate may be performed first, and then it may be checked whether the last non-zero coefficient is located in an area where no valid transform coefficient exists (the order may be changed). ).
- the methods presented in this embodiment 4) can also be applied to 8x8 RST. That is, if the last non-zero coefficient is located in the non-left 4x4 region in the top-left 8x8 region, coding for the NSST index may be omitted, otherwise coding may be performed in the NSST index. have. In addition, if the X and Y coordinate values for the last non-zero coefficient position are less than a certain takeover value, the coding for the NSST index may be omitted. Naturally, the two methods can be applied together.
- NSST index coding and residual coding schemes for luminance and color difference may be applied differently.
- the luminance follows the scheme described in Example 4, and the scheme in Example 3 may be applied to the color difference.
- the conditional NSST index coding described in Example 3) or Example 4) may be applied to the luminance, and the conditional NSST index coding may not be applied to the color difference, and vice versa (not applied to the color difference, but not applied to the luminance). .
- Table 1 shows three examples of a reduced adaptive multiple transform (RAMT) using a predefined R value for each primary transform size.
- Example 7 Reduced adaptive (or explicit) multiple transform based on primary transform
- the reduced transform factor R may be determined depending on the corresponding primary transform. For example, if the primary transform is DCT-2, the computational amount is relatively simple compared to other primary transforms, so that the coding performance is reduced by not using the reduced transform for a small block or by using a relatively large R value. Minimize. For example, in the case of DCT-2 and other transformations, other reduced transformation factors may be used as shown in Table 2.
- Example 8 EMT (AMT) core transform mapping depends on intra prediction mode
- one of the four combinations of EMT indexes (0,1,2,3) is selected through the 2-bit EMT_TU_index, and the corresponding primary transform is selected based on the given EMT index.
- Table 3 is an example of a mapping table for selecting a corresponding primary transform for horizontal and vertical directions based on an EMT index value.
- the present invention analyzes the statistics of the first-order transforms generated according to the intra prediction mode and proposes a more efficient EMT core transform mapping method based on the statistics.
- Table 4 shows the distribution (%) of the EMT_TU_index as a percentage by intra prediction mode.
- the Hor mode represents Modes 2 through 33 when the JEM is based on the 67 mode
- the Ver mode represents the angular modes 34 through 66.
- Table 5 shows an example of using different mappings for Hor mode groups.
- the method of deriving the first-order transform based on the EMT_TU_index uses a different mapping table based on the intra prediction direction.
- the present invention proposes a method in which the available EMT_TU_index for each intra prediction mode is not the same but may be defined differently.
- the available EMT_TU_index for each intra prediction mode is not the same but may be defined differently.
- the probability of occurrence is relatively low, and thus, such an efficient coding is possible by excluding such a part.
- Table 6 specifies an example in which the available EMT_TU_index value depends on the intra prediction mode.
- the context model is determined using the information of the intra prediction mode.
- Table 8 shows some examples.
- the intra prediction mode context modeling method specified in the present invention may be considered along with other factors such as block size.
- the AMT term is redefined to MTS.
- Relevant syntaxes and semantics in VVC (Versitile Video Coding Version 4, JVET-K1001-v4.docx) are summarized as in Table 9 below.
- JVET-K1001-v4.docx JVET-K1001-v4.docx
- the residual coding syntax is shown in Tables 13 and 14 below.
- FIG. 13 is a flowchart illustrating an inverse transformation process based on an MTS according to an embodiment of the present invention.
- the decoding apparatus 200 to which the present invention is applied may acquire sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag (S1305).
- sps_mts_intra_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the intra coding unit.
- sps_mts_intra_enabled_flag 0 cu_mts_flag is not present in the residual coding syntax of the intra coding unit
- sps_mts_intra_enabled_flag 1 cu_mts_flag is present in the residual coding syntax of the intra coding unit
- sps_mts_inter_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the inter coding unit.
- mts_idx indicates which transform kernel is applied to luma residual samples along the horizontal and / or vertical direction of the current transform block.
- mts_idx For example, for mts_idx, at least one of the embodiments described herein may be applied.
- the decoding apparatus 200 may induce a transform kernel corresponding to mts_idx (S1320).
- a transform kernel corresponding to mts_idx may be defined by being divided into a horizontal transform and a vertical transform.
- the decoding apparatus 200 may configure an MTS candidate based on the intra prediction mode of the current block.
- the decoding flowchart of FIG. 10 may further include configuring the MTS candidate.
- the decoding apparatus 200 may determine the MTS candidate applied to the current block by using mts_idx among the configured MTS candidates.
- transform kernels may be applied to the horizontal transform and the vertical transform.
- present invention is not limited thereto, and the same transform kernel may be applied to the horizontal transform and the vertical transform.
- the decoding apparatus 200 may perform inverse transformation based on the transform kernel.
- MTS may also be expressed as AMT or EMT.
- mts_idx may also be expressed as AMT_idx, EMT_idx, AMT_TU_idx EMT_TU_idx, and the present invention is not limited thereto.
- FIG. 14 is a block diagram of an apparatus for performing decoding based on an MTS according to an embodiment of the present invention.
- the decoding apparatus 200 to which the present invention is applied may include a sequence parameter obtaining unit 1405, an MTS flag obtaining unit 1410, an MTS index obtaining unit 1415, and a transform kernel deriving unit 1420.
- the sequence parameter obtainer 1405 may acquire sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag.
- sps_mts_intra_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the intra coding unit
- sps_mts_inter_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the inter coding unit.
- the description associated with FIG. 10 may be applied.
- cu_mts_flag indicates whether the MTS is applied to the residual sample of the luma transform block. As a specific example, the description associated with FIG. 10 may be applied.
- mts_idx indicates which transform kernel is applied to luma residual samples along the horizontal and / or vertical direction of the current transform block. As a specific example, the description of FIG. 10 may be applied.
- the translation kernel derivation unit 1420 may derive the translation kernel corresponding to mts_idx. In addition, the decoding apparatus 200 may perform inverse transform based on the derived transform kernel.
- the process for the transform process for the scaled transform coefficients may be as Table 15 below.
- the horizontal transform (trTypeHor) and vertical transform (trTypeVer) according to the MTS index (mts_idx) and the prediction mode (CuPredMode) of the current CY may be set as shown in Table 16 below.
- two MTS candidates for the directional mode and four MTS candidates for the non-directional mode may be used as follows.
- the DST-7 is used for horizontal and vertical conversion.
- DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
- the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
- the DCT-8 is used for horizontal and vertical conversion.
- the DST-7 is used for horizontal and vertical conversion.
- the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
- the DST-7 is used for horizontal and vertical conversion.
- DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
- the horizontal group modes include intra prediction modes 2 to 34, and the vertical modes include intra prediction modes 35 to 66,
- Table 17 below shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for a non-angular mode.
- Table 18 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the horizontal group mode.
- Table 19 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the vertical group mode.
- DST-7 is used for horizontal and vertical conversion.
- DST-7 is used for the vertical transform and DCT-8 is used for the horizontal transform.
- DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation.
- Table 20 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to a prediction mode (CuPredMode) and an MTS index (mts_idx).
- three MTS candidates are used for all intra prediction modes.
- the DST-7 is used for horizontal and vertical conversion.
- DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
- the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
- two MTS candidates are used for directional prediction modes and three MTS candidates for non-directional prediction modes.
- DST-7 is used for horizontal and vertical conversion when MTS index is 0
- DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
- DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation when MTS index is 2.
- DST-7 is used for horizontal and vertical conversion when MTS index is 0
- DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation when MTS index is 1
- DST-7 is used for horizontal and vertical conversion when MTS index is 0
- DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
- the horizontal group modes include 2 to 34 intra prediction modes and the vertical modes include 35 to 66 intra prediction modes.
- Table 21 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for non-directional modes.
- Table 22 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the horizontal group mode.
- Table 23 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the vertical group mode.
- one MTS (eg DST-7) is used for all modes.
- the MTS index (mts_idx [x] [y]) is not required, but the MTS flag cu_mts_flag [x] [y] may be used as shown in Table 24 to indicate a conversion type.
- VTM 2.0 The conversion process in VTM 2.0 can be summarized as shown in Table 25 below.
- FIG. 15 shows an example of a decoding flowchart for performing a conversion process according to an embodiment of the present invention.
- the decoding apparatus 200 to which the present invention is applied may check the transform size nTbS (S1505).
- the transform size nTbS may be a variable representing a horizontal sample size of scaled transform coefficients.
- the decoding apparatus 200 may check the transform kernel type trType (S1510).
- the transform kernel type trType may be a variable indicating the type of the transform kernel, and various embodiments of the present disclosure may be applied.
- the decoding apparatus 200 may perform transform matrix multiplication based on at least one of a transform size nTbS or a transform kernel type (S1515). For example, if the conversion kernel type is 0, (Equation 15-1) of Table 25 may be applied, and if the conversion kernel type is 1 or 2, (Equation 15-2) of Table 25 may be applied.
- the transform matrix of (Equation 15-3) in Table 25 may be applied when performing the transform matrix multiplication.
- the transform matrix of (Equation 15-4) in Table 25 may be applied.
- the transform matrix shown in (Equation 15-3) of Table 25 may be applied when performing the transform matrix multiplication.
- the predefined transform matrix may be applied.
- the decoding apparatus 200 may derive the transform sample based on the transform matrix multiplication (S1520).
- the transformation matrix contains a predefined number of specific coefficients, which are repeated in several rows in the transformation matrix.
- 4x4 DST-7 is defined as Equation 1 below.
- the first row contains four coefficients 117, 219, 296, and 336.
- the four coefficients are repeated in the rest.
- a coefficient approximation procedure for eliminating multiplication operations is introduced.
- Equation 2 represents transform matrix multiplication.
- transMatrix [i] [j] and x [j] represent transform coefficients and input values, respectively.
- the multiplication operation between the transform coefficients and the input values is eliminated by efficient means (i.e. shift and add operations) if the transform coefficients are expressed in the form of a polynomial of power of two. Can be.
- the conversion factor is 65
- 64 we can approximate 64 instead of calculating 65 * x [j]
- the multiplication process can be eliminated because 64 * x [j] is equivalent to x [j] ⁇ 6. have.
- the transform coefficient 280 may be approximated to 282.
- 280 * x [j] can be replaced by 282 * x [j], which is equivalent to x [j] ⁇ 8 + x [j] ⁇ 4.
- all transform coefficient values can be approximated with a combination of powers of two to eliminate the multiplication process in an efficient manner (i.e. using a small number of terms that minimize approximation error).
- the difference between the original transform coefficients and the approximated value needs to be minimized to reduce coding performance loss.
- transform coefficient approximation can be less efficient in energy compression because it can damage the orthogonality of each basis vector.
- the difference between the original value and the approximate value should be minimized to maintain orthogonality (to maintain coding performance).
- Table 26 shows how the approximation error (Diff in Table 26) changes according to the number of terms for approximation. For example, the minimum error for two term approximation represents a maximum of 30 errors. However, if three term approximations are used the maximum error can be reduced to three.
- Equation 3 may be applied.
- Eight transform coefficients are repeatedly used in the transform matrix in the 4 ⁇ 4 transform matrix, and an approximation based on up to three terms may be as shown in Table 27 below.
- Equation 4 the 4x4 transformation matrix may be approximated as in Equation 4 below.
- Equation 5 the transformation matrix when trType is 1 and nTbs is 4 is expressed by Equation 5 below.
- Equation 6 Equation 6
- Equation 7 the transformation matrix when trType is 1 and nTbs is 16 is expressed by Equation 7 below.
- 16 transform coefficients are repeatedly used in the matrix, and an approximation based on up to three terms may be as shown in Table 29 below.
- the 16x16 transform matrix may be approximated as shown in Equation 8 below.
- VTM 2.0 32 transform coefficients in a 32x32 matrix are repeatedly used in the matrix, and an approximation based on up to three terms may be as shown in Table 29 below.
- the 32x32 transformation matrix can be arranged as described above.
- the DST-7 and DCT-8 coefficients are parameterized and summarized. As mentioned in the previous embodiments (16-16), the respective coefficients (parameters) may be approximated in the form of Equations 9-16 below.
- FIG. 16 shows a flowchart for processing a video signal according to an embodiment to which the present invention is applied.
- the flowchart of FIG. 16 may be performed by the decoding apparatus 200 or the inverse transform unit 230.
- the decoding apparatus 200 confirms a transform index indicating a transform kernel for transforming the current block.
- the decoding apparatus 200 determines a transform matrix corresponding to the transform index.
- the components of the transformation matrix are implemented by shift operation and addition of one.
- each of the components of the transformation matrix may be implemented by the sum of terms consisting of a left shift of one.
- the number of terms constituting each of the components of the transformation matrix may be set to be less than three.
- each of the components of the transformation matrix may be set to a value approximated within an allowable error range from DCT-4, DST-7, or DCT-8.
- each of the components of the transformation matrix may be determined in consideration of the allowable error range and the number of terms.
- the decoding apparatus 200 generates an array of residual samples by applying a transform matrix having coefficients approximated by a shift operation and an add operation to the transform coefficients of the current block.
- FIG. 17 shows an example of a block diagram of an apparatus for processing a video signal as an embodiment to which the present invention is applied.
- the video signal processing apparatus of FIG. 17 may correspond to the encoding apparatus of FIG. 1 or the decoding apparatus of FIG. 2.
- the image processing apparatus 1700 for processing an image signal includes a memory 1720 storing an image signal and a processor 1710 coupled to the memory and processing the image signal.
- the processor 1710 may be configured with at least one processing circuit for processing an image signal, and may process the image signal by executing instructions for encoding or decoding the image signal. That is, the processor 1710 may encode the original image data or decode the encoded image signal by executing the above-described encoding or decoding methods.
- the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium.
- Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium.
- the computer readable recording medium includes all kinds of storage devices and distributed storage devices in which computer readable data is stored.
- the computer-readable recording medium may be, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical disc. It may include a data storage device.
- the computer-readable recording medium also includes media embodied in the form of a carrier wave (for example, transmission over the Internet).
- the bitstream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
- embodiments of the present invention may be implemented as a computer program product by a program code, the program code may be performed on a computer by an embodiment of the present invention.
- the program code may be stored on a carrier readable by a computer.
- the embodiments described herein may be implemented and performed on a processor, microprocessor, controller, or chip.
- the functional units shown in each drawing may be implemented and performed on a computer, processor, microprocessor, controller, or chip.
- the decoder and encoder to which the present invention is applied include a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video chat device, a real time communication device such as video communication, a mobile streaming device, Storage media, camcorders, video on demand (VoD) service providing devices, OTT video (Over the top video) devices, Internet streaming service providing devices, three-dimensional (3D) video devices, video telephony video devices, and medical video devices. It can be used to process video signals or data signals.
- the OTT video device may include a game console, a Blu-ray player, an Internet access TV, a home theater system, a smartphone, a tablet PC, a digital video recorder (DVR), and the like.
- the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium.
- Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium.
- the computer readable recording medium includes all kinds of storage devices and distributed storage devices in which computer readable data is stored.
- the computer-readable recording medium may be, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical disc. It may include a data storage device.
- the computer-readable recording medium also includes media embodied in the form of a carrier wave (for example, transmission over the Internet).
- the bitstream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
- embodiments of the present invention may be implemented as a computer program product by a program code, the program code may be performed on a computer by an embodiment of the present invention.
- the program code may be stored on a carrier readable by a computer.
- Embodiments according to the present invention may be implemented by various means, for example, hardware, firmware, software, or a combination thereof.
- an embodiment of the present invention may include one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs ( field programmable gate arrays), processors, controllers, microcontrollers, microprocessors, and the like.
- ASICs application specific integrated circuits
- DSPs digital signal processors
- DSPDs digital signal processing devices
- PLDs programmable logic devices
- FPGAs field programmable gate arrays
- processors controllers, microcontrollers, microprocessors, and the like.
- an embodiment of the present invention may be implemented in the form of a module, procedure, function, etc. that performs the functions or operations described above.
- the software code may be stored in memory and driven by the processor.
- the memory may be located inside or outside the processor, and may exchange data with the processor by various known means.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Embodiments of the present invention provide a method and an apparatus for processing a video signal. A method for processing an image signal, according to one embodiment of the present invention, comprises the steps of: confirming a transformation index for indicating a transformation kernel for the transformation of a current block; determining a transformation matrix corresponding to the transformation index; and generating an array of residual samples by applying the transformation matrix to transformation coefficients of the current block, wherein the components of the transformation matrix are implemented by a shift operation and addition of 1.
Description
본 발명은 영상 신호를 처리하기 위한 방법 및 장치에 관한 것으로서, 특히 변환을 수행함으로써 영상 신호를 인코딩 또는 디코딩하기 위한 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for processing a video signal, and more particularly, to a method and apparatus for encoding or decoding a video signal by performing a transformation.
압축 부호화란 디지털화한 정보를 통신 회선을 통해 전송하거나, 저장 매체에 적합한 형태로 저장하기 위한 일련의 신호 처리 기술을 의미한다. 영상, 이미지, 음성 등의 미디어가 압축 부호화의 대상이 될 수 있으며, 특히 영상을 대상으로 압축 부호화를 수행하는 기술을 비디오 영상 압축이라고 일컫는다.Compression coding refers to a series of signal processing techniques for transmitting digitized information through a communication line or for storing in a form suitable for a storage medium. Media such as an image, an image, and voice may be a target of compression encoding. In particular, a technique of performing compression encoding on an image is referred to as video image compression.
차세대 비디오 컨텐츠는 고해상도(high spatial resolution), 고프레임율(high frame rate) 및 영상 표현의 고차원화(high dimensionality of scene representation)라는 특징을 갖게 될 것이다. 그러한 컨텐츠를 처리하기 위해서는 메모리 저장(memory storage), 메모리 액세스율(memory access rate) 및 처리 전력(processing power) 측면에서 엄청난 증가를 가져올 것이다.Next-generation video content will be characterized by high spatial resolution, high frame rate, and high dimensionality of scene representation. Processing such content will result in a huge increase in terms of memory storage, memory access rate, and processing power.
따라서, 차세대 영상 컨텐츠를 보다 효율적으로 처리하기 위한 코딩 툴을 디자인할 필요가 있다. 특히, HEVC(high efficiency video coding) 표준 이후의 비디오 코덱 표준은 보다 높은 정확도를 갖는 예측 기술과 함께 공간 영역(spatial domain)의 비디오 신호를 주파수 영역(frequency domain)으로 변환시키기 위한 효율적인 변환 기술을 필요로 한다.Therefore, there is a need to design a coding tool for more efficiently processing next generation video content. In particular, the video codec standard after the high efficiency video coding (HEVC) standard requires an efficient conversion technique for converting a spatial domain video signal into the frequency domain along with a higher accuracy prediction technique. Shall be.
본 발명의 실시예들은, 변환시 연산 복잡도를 감소시키기 위한 영상 신호 처리 방법 및 장치를 제공하고자 한다.Embodiments of the present invention provide an image signal processing method and apparatus for reducing the computational complexity during conversion.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.Technical problems to be achieved in the present invention are not limited to the above-mentioned technical problems, and other technical problems not mentioned above will be clearly understood by those skilled in the art from the following description. Could be.
본 발명의 실시예에 따른 영상 신호의 처리 방법은, 현재 블록에 대한 변환을 위한 변환 커널을 지시하는 변환 인덱스를 확인하는 단계와, 상기 변환 인덱스에 대응하는 변환 행렬을 결정하는 단계와, 상기 변환 행렬을 상기 현재 블록의 변환 계수들에 적용함으로써 레지듀얼 샘플들의 어레이를 생성하는 단계를 포함하고, 상기 변환 행렬의 성분들은, 1의 시프트 연산 및 덧셈에 의해 구현된다.In accordance with another aspect of the present invention, there is provided a method of processing an image signal, the method comprising: identifying a transform index indicating a transform kernel for transforming a current block, determining a transform matrix corresponding to the transform index, and converting the transform index; Generating an array of residual samples by applying a matrix to the transform coefficients of the current block, the components of the transform matrix being implemented by a shift operation and addition of one.
또한, 상기 변환 행렬의 성분들 각각은, 1에 대한 좌측 시프트로 구성된 항들의 합에 의해 구현될 수 있다.In addition, each of the components of the transformation matrix may be implemented by a sum of terms consisting of a left shift of one.
또한, 상기 변환 행렬의 성분들 각각을 구성하는 상기 항들의 개수는 3 보다 작도록 설정될 수 있다.Further, the number of terms constituting each of the components of the transformation matrix may be set to be smaller than three.
또한, 상기 변환 행렬의 성분들 각각은, DCT-4, DST-7, 또는 DCT-8로부터 허용된 오차 범위 이내로 근사된 값으로 설정될 수 있다.In addition, each of the components of the transformation matrix may be set to a value approximated within an allowable error range from DCT-4, DST-7, or DCT-8.
또한, 상기 변환 행렬의 성분들 각각은, 상기 허용된 오차 범위 및 상기 항들의 개수를 고려하여 결정될 수 있다.In addition, each of the components of the transformation matrix may be determined in consideration of the allowed error range and the number of terms.
본 발명의 다른 실시예에 따른 영상 신호의 처리 장치는, 상기 영상 신호를 저장하는 메모리와, 상기 메모리와 결합된 프로세서를 포함하고, 상기 프로세서는, 현재 블록에 대한 변환을 위한 변환 커널을 지시하는 변환 인덱스를 확인하고, 상기 변환 인덱스에 대응하는 변환 행렬을 결정하고, 상기 변환 행렬을 상기 현재 블록의 변환 계수들에 적용함으로써 레지듀얼 샘플들의 어레이를 생성하도록 설정되고, 상기 변환 행렬의 성분들은, 1의 시프트 연산 및 덧셈에 의해 구현될 수 있다.An apparatus for processing an image signal according to another embodiment of the present invention includes a memory for storing the image signal and a processor coupled to the memory, wherein the processor indicates a transform kernel for transforming a current block. Determine a transform index, determine a transform matrix corresponding to the transform index, and apply the transform matrix to transform coefficients of the current block, the components of the transform matrix being: It can be implemented by shift operation and addition of one.
본 발명의 실시예에 따르면, 곱셈 연산 없이 쉬프트 연산과 덧셈 연산을 사용하여 변환을 수행함으로써 연산 복잡도를 감소시킬 수 있다.According to an embodiment of the present invention, the computational complexity may be reduced by performing a transformation using a shift operation and an addition operation without a multiplication operation.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effect obtained in the present invention is not limited to the above-mentioned effects, and other effects not mentioned will be clearly understood by those skilled in the art from the following description. .
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 특징을 설명한다.BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which are included as part of the detailed description in order to provide a thorough understanding of the present invention, provide an embodiment of the present invention and together with the description, describe the technical features of the present invention.
도 1은 본 발명이 적용되는 실시예로서 영상 코딩 시스템의 예를 도시한다.1 shows an example of an image coding system as an embodiment to which the present invention is applied.
도 2는 본 발명이 적용되는 실시예로서, 비디오/이미지 신호의 인코딩이 수행되는 인코딩 장치의 개략적인 블록도를 나타낸다.2 is a schematic block diagram of an encoding apparatus in which an encoding of a video / image signal is performed, according to an embodiment to which the present invention is applied.
도 3은 본 발명이 적용되는 실시예로서, 영상 신호의 디코딩이 수행되는 디코딩 장치의 개략적인 블록도를 나타낸다.3 is an embodiment to which the present invention is applied and shows a schematic block diagram of a decoding apparatus in which decoding of a video signal is performed.
도 4는 본 발명이 적용되는 실시예로서, 컨텐츠 스트리밍 시스템의 구조도이다.4 is a structural diagram of a content streaming system according to an embodiment to which the present invention is applied.
도 5는 본 발명이 적용될 수 있는 실시예들로서, 도 5a는 QT(QuadTree, QT), 도 5b는 BT(Binary Tree, BT), 도 5c는 TT(Ternary Tree, TT) 도 5d는 AT(Asymmetric Tree, AT)에 의한 블록 분할 구조들을 설명하기 위한 도면이다.5 is an embodiment to which the present invention may be applied. FIG. 5A is a quadtree (QT), FIG. 5B is a binary tree (BT), and FIG. 5C is a ternary tree (TT). FIG. 4 is a diagram for describing block division structures by Tree (AT). FIG.
도 6 및 도 7은 본 발명이 적용되는 실시예들로서, 도 6은 도 2의 인코딩 장치(100) 내의 변환 및 양자화부, 역양자화 및 역변환부의 개략적인 블록도를 나타내고, 도 7은 디코딩 장치 내의 역양자화 및 역변환부의 개략적인 블록도를 나타낸다.6 and 7 illustrate embodiments to which the present invention is applied. FIG. 6 is a schematic block diagram of a transform and quantization unit, an inverse quantization unit, and an inverse transform unit in the encoding apparatus 100 of FIG. 2, and FIG. A schematic block diagram of the inverse quantization and inverse transform portion is shown.
도 8은 AMT(adaptive multiple transform)가 수행되는 과정을 나타내는 흐름도이다.8 is a flowchart illustrating a process of performing adaptive multiple transform (AMT).
도 9는 AMT가 수행되는 디코딩 과정을 나타내는 흐름도이다.9 is a flowchart illustrating a decoding process in which AMT is performed.
도 10은 HEVC 표준에서 적용된 변환 계수 또는 변환 계수 블록에 대한 3가지 순방향 스캔 순서로서, (a)는 대각 스캔(diagonal scan), (b)는 수평 스캔(horizontal scan), (c)는 수직 스캔(vertical scan)을 나타낸다.10 shows three forward scan sequences for transform coefficients or transform coefficient blocks applied in the HEVC standard, (a) a diagonal scan, (b) a horizontal scan, and (c) a vertical scan (vertical scan).
도 11과 도 12는 본 발명이 적용되는 실시예로서, 도 11은 4x8 블록에 대한 4x4 RST의 적용시 순방향 대각 스캔이 적용되는 경우에서 변환 계수의 위치를 도시하고, 도 12은 2개의 4x4 블록의 유효한 변환 계수들을 하나의 블록으로 병합하는 경우의 예를 도시한다.11 and 12 illustrate embodiments to which the present invention is applied. FIG. 11 shows positions of transform coefficients when a forward diagonal scan is applied when 4x4 RST is applied to a 4x8 block, and FIG. 12 shows two 4x4 blocks. An example of a case of merging valid transform coefficients of a into one block is shown.
도 13은 본 발명의 실시예에 따라 MTS(multiple transform selection)에 기반하여 역변환 과정을 나타내는 흐름도이다.13 is a flowchart illustrating an inverse transform process based on multiple transform selection (MTS) according to an embodiment of the present invention.
도 14는 본 발명의 실시예에 따라 MTS에 기반하여 디코딩을 수행하는 장치의 블록도이다.14 is a block diagram of an apparatus for performing decoding based on an MTS according to an embodiment of the present invention.
도 15는 본 발명의 실시예에 따른 변환 과정을 수행하는 디코딩 흐름도의 예를 도시한다.15 shows an example of a decoding flowchart for performing a conversion process according to an embodiment of the present invention.
도 16은 본 발명이 적용되는 실시예로서, 비디오 신호를 처리하기 위한 흐름도를 도시한다.16 shows a flowchart for processing a video signal according to an embodiment to which the present invention is applied.
도 17은 본 발명이 적용되는 실시예로서, 비디오 신호를 처리하기 위한 장치의 블록도의 예를 도시한다.17 shows an example of a block diagram of an apparatus for processing a video signal as an embodiment to which the present invention is applied.
이하, 본 발명에 따른 바람직한 실시 형태를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 발명의 예시적인 실시형태를 설명하고자 하는 것이며, 본 발명이 실시될 수 있는 유일한 실시형태를 나타내고자 하는 것이 아니다. 이하의 상세한 설명은 본 발명의 완전한 이해를 제공하기 위해서 구체적 세부사항을 포함한다. 그러나, 당업자는 본 발명이 이러한 구체적 세부사항 없이도 실시될 수 있음을 안다. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. The detailed description, which will be given below with reference to the accompanying drawings, is intended to explain exemplary embodiments of the present invention and is not intended to represent the only embodiments in which the present invention may be practiced. The following detailed description includes specific details in order to provide a thorough understanding of the present invention. However, one of ordinary skill in the art appreciates that the present invention may be practiced without these specific details.
몇몇 경우, 본 발명의 개념이 모호해지는 것을 피하기 위하여 공지의 구조 및 장치는 생략되거나, 각 구조 및 장치의 핵심기능을 중심으로 한 블록도 형식으로 도시될 수 있다. In some instances, well-known structures and devices may be omitted or shown in block diagram form centering on the core functions of the structures and devices in order to avoid obscuring the concepts of the present invention.
아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어를 사용하여 설명한다. 그러한 경우에는 해당 부분의 상세 설명에서 그 의미를 명확히 기재하므로, 본 발명의 설명에서 사용된 용어의 명칭만으로 단순 해석되어서는 안 될 것이며 그 해당 용어의 의미까지 파악하여 해석되어야 함을 밝혀두고자 한다.In addition, the terminology used in the present invention is selected as a general term that is widely used as possible now, in a specific case will be described using terms arbitrarily selected by the applicant. In such a case, since the meaning is clearly described in the detailed description of the relevant part, it should not be interpreted simply by the name of the term used in the description of the present invention, and it should be understood that the meaning of the term should be understood and interpreted. .
이하의 설명에서 사용되는 특정 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다. 예를 들어, 신호, 데이터, 샘플, 픽처, 프레임, 블록 등의 경우 각 코딩 과정에서 적절하게 대체되어 해석될 수 있을 것이다.Specific terms used in the following description are provided to help the understanding of the present invention, and the use of the specific terms may be changed to other forms without departing from the technical spirit of the present invention. For example, signals, data, samples, pictures, frames, blocks, etc. may be appropriately replaced and interpreted in each coding process.
이하 본 명세서에서 '처리 유닛'은 예측, 변환 및/또는 양자화 등과 같은 인코딩/디코딩의 처리 과정이 수행되는 단위를 의미한다. 또한, 처리 유닛은 휘도(luma) 성분에 대한 단위와 색차(chroma) 성분에 대한 단위를 포함하는 의미로 해석될 수 있다. 예를 들어, 처리 유닛은 블록(block), 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU) 또는 변환 블록(transform unit, TU)에 해당될 수 있다. Hereinafter, in the present specification, a 'processing unit' refers to a unit in which a process of encoding / decoding such as prediction, transformation, and / or quantization is performed. In addition, the processing unit may be interpreted to include a unit for a luma component and a unit for a chroma component. For example, the processing unit may correspond to a block, a coding unit (CU), a prediction unit (PU), or a transform unit (TU).
또한, 처리 유닛은 휘도 성분에 대한 단위 또는 색차 성분에 대한 단위로 해석될 수 있다. 예를 들어, 처리 유닛은 휘도 성분에 대한 CTB, CB, PU 또는 TB에 해당될 수 있다. 또는, 처리 유닛은 색차 성분에 대한 CTB, CB, PU 또는 TB에 해당할 수 있다. 또한, 이에 한정되는 것은 아니며 처리 유닛은 휘도 성분에 대한 단위와 색차 성분에 대한 단위를 포함하는 의미로 해석될 수도 있다. In addition, the processing unit may be interpreted as a unit for the luminance component or a unit for the chrominance component. For example, the processing unit may correspond to a CTB, CB, PU or TB for the luminance component. Alternatively, the processing unit may correspond to a CTB, CB, PU or TB for the chrominance component. In addition, the present invention is not limited thereto, and the processing unit may be interpreted to include a unit for a luminance component and a unit for a color difference component.
또한, 처리 유닛은 반드시 정사각형의 블록으로 한정되는 것은 아니며, 3개 이상의 꼭지점을 가지는 다각형 형태로 구성될 수도 있다. In addition, the processing unit is not necessarily limited to square blocks, but may also be configured in a polygonal form having three or more vertices.
또한, 이하 본 명세서에서 픽셀 또는 화소 등을 샘플로 통칭한다. 그리고, 샘플을 이용한다는 것은 픽셀 값 또는 화소 값 등을 이용한다는 것을 의미할 수 있다. In the following specification, a pixel or a pixel is referred to as a sample. In addition, using a sample may mean using a pixel value or a pixel value.
도 1은 본 발명이 적용되는 실시예로서 영상 코딩 시스템의 예를 도시한다.1 shows an example of an image coding system as an embodiment to which the present invention is applied.
영상 코딩 시스템은 소스 디바이스(10) 및 수신 디바이스(20)를 포함할 수 있다. 소스 디바이스(10)는 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스(20)로 전달할 수 있다. The image coding system can include a source device 10 and a receiving device 20. The source device 10 may transmit the encoded video / video information or data to the receiving device 20 through a digital storage medium or a network in a file or streaming form.
소스 디바이스(10)는 비디오 소스(11), 인코딩 장치(12), 송신기(13)를 포함할 수 있다. 수신 디바이스(20)는 수신기(21), 디코딩 장치(22) 및 렌더러(23)를 포함할 수 있다. 인코딩 장치(10)는 비디오/영상 인코딩 장치라고 불릴 수 있고, 디코딩 장치(20)는 비디오/영상 디코딩 장치라고 불릴 수 있다. 송신기(13)는 인코딩 장치(12)에 포함될 수 있다. 수신기(21)는 디코딩 장치(22)에 포함될 수 있다. 렌더러(23)는 디스플레이부를 포함할 수도 있고, 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다. Source device 10 may include a video source 11, an encoding device 12, and a transmitter 13. The receiving device 20 may include a receiver 21, a decoding device 22 and a renderer 23. The encoding device 10 may be called a video / image encoding device, and the decoding device 20 may be called a video / image decoding device. The transmitter 13 may be included in the encoding device 12. The receiver 21 may be included in the decoding device 22. The renderer 23 may include a display unit, and the display unit may be configured as a separate device or an external component.
비디오 소스는 비디오/영상의 캡쳐, 합성 또는 생성 과정 등을 통하여 비디오/영상을 획득할 수 있다. 비디오 소스는 비디오/영상 캡쳐 디바이스 및/또는 비디오/영상 생성 디바이스를 포함할 수 있다. 비디오/영상 캡쳐 디바이스는 예를 들어, 하나 이상의 카메라, 이전에 캡쳐된 비디오/영상을 포함하는 비디오/영상 아카이브 등을 포함할 수 있다. 비디오/영상 생성 디바이스는 예를 들어 컴퓨터, 타블렛 및 스마트폰 등을 포함할 수 있으며 (전자적으로) 비디오/영상을 생성할 수 있다. 예를 들어, 컴퓨터 등을 통하여 가상의 비디오/영상이 생성될 수 있으며, 이 경우 관련 데이터가 생성되는 과정으로 비디오/영상 캡쳐 과정이 갈음될 수 있다.The video source may acquire the video / image through a process of capturing, synthesizing, or generating the video / image. The video source may comprise a video / image capture device and / or a video / image generation device. The video / image capture device may include, for example, one or more cameras, video / image archives including previously captured video / images, and the like. Video / image generation devices may include, for example, computers, tablets and smartphones, and may (electronically) generate video / images. For example, a virtual video / image may be generated through a computer or the like. In this case, the video / image capturing process may be replaced by a process of generating related data.
인코딩 장치(12)는 입력 비디오/영상을 인코딩할 수 있다. 인코딩 장치(12)는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화 등 일련의 절차를 수행할 수 있다. 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다.The encoding device 12 may encode the input video / image. The encoding device 12 may perform a series of procedures such as prediction, transform, and quantization for compression and coding efficiency. The encoded data (encoded video / image information) may be output in the form of a bitstream.
전송부(13)는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부(13)는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘레먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신기(21)는 비트스트림을 추출하여 디코딩 장치(22)로 전달할 수 있다.The transmitter 13 may transmit the encoded video / video information or data output in the form of a bitstream to the receiver of the receiving device through a digital storage medium or a network in the form of a file or streaming. The digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, and the like. The transmission unit 13 may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast / communication network. The receiver 21 may extract the bitstream and transfer it to the decoding device 22.
디코딩 장치(22)는 인코딩 장치(12)의 동작에 대응하는 역양자화, 역변환, 예측 등 일련의 절차를 수행하여 비디오/영상을 디코딩할 수 있다. The decoding device 22 may decode the video / image by performing a series of procedures such as inverse quantization, inverse transformation, and prediction corresponding to the operation of the encoding device 12.
렌더러(23)는 디코딩된 비디오/영상을 렌더링할 수 있다. 렌더링된 비디오/영상은 디스플레이부를 통하여 디스플레이될 수 있다.The renderer 23 may render the decoded video / image. The rendered video / image may be displayed through the display unit.
도 2는 본 발명이 적용되는 실시예로서, 비디오/이미지 신호의 인코딩이 수행되는 인코딩 장치의 개략적인 블록도를 나타낸다. 도 2의 인코딩 장치(100)는 도 1의 인코딩 장치(12)에 대응할 수 있다.2 is a schematic block diagram of an encoding apparatus in which an encoding of a video / image signal is performed, according to an embodiment to which the present invention is applied. The encoding apparatus 100 of FIG. 2 may correspond to the encoding apparatus 12 of FIG. 1.
영상 분할부(110)는 인코딩 장치(100)에 입력된 입력 영상(또는, 픽쳐, 프레임)를 하나 이상의 처리 유닛(processing unit)으로 분할할 수 있다. 일 예로, 상기 처리 유닛은 코딩 유닛(CU)이라고 불릴 수 있다. 이 경우 코딩 유닛은 코딩 트리 유닛(coding tree unit, CTU) 또는 최대 코딩 유닛(largest coding unit, LCU)으로부터 QTBT (Quad-tree binary-tree) 구조에 따라 재귀적으로(recursively) 분할될 수 있다. 예를 들어, 하나의 코딩 유닛은 쿼드 트리 구조 및/또는 바이너리 트리 구조를 기반으로 하위(deeper) 뎁스의 복수의 코딩 유닛들로 분할될 수 있다. 이 경우 예를 들어 쿼드 트리 구조가 먼저 적용되고 바이너리 트리 구조가 나중에 적용될 수 있다. 또는 바이너리 트리 구조가 먼저 적용될 수도 있다. 더 이상 분할되지 않는 최종 코딩 유닛을 기반으로 본 발명에 따른 코딩 절차가 수행될 수 있다. 이 경우 영상 특성에 따른 코딩 효율 등을 기반으로, 최대 코딩 유닛이 바로 최종 코딩 유닛으로 사용될 수 있고, 또는 필요에 따라 코딩 유닛은 재귀적으로(recursively) 보다 하위 뎁스의 코딩 유닛들로 분할되어 최적의 사이즈의 코딩 유닛이 최종 코딩 유닛으로 사용될 수 있다. 여기서 코딩 절차라 함은 후술하는 예측, 변환, 및 복원 등의 절차를 포함할 수 있다. 다른 예로, 상기 처리 유닛은 예측 유닛(PU: Prediction Unit) 또는 변환 유닛(TU: Transform Unit)을 더 포함할 수 있다. 이 경우 상기 예측 유닛 및 상기 변환 유닛은 각각 상술한 최종 코딩 유닛으로부터 분할 또는 파티셔닝될 수 있다. 상기 예측 유닛은 샘플 예측의 단위일 수 있고, 상기 변환 유닛은 변환 계수를 유도하는 단위 및/또는 변환 계수로부터 레지듀얼 신호(residual signal)를 유도하는 단위일 수 있다. The image divider 110 may divide an input image (or a picture or a frame) input to the encoding apparatus 100 into one or more processing units. As an example, the processing unit may be called a coding unit (CU). In this case, the coding unit may be recursively divided according to a quad-tree binary-tree (QTBT) structure from a coding tree unit (CTU) or a largest coding unit (LCU). For example, one coding unit may be divided into a plurality of coding units of a deeper depth based on a quad tree structure and / or a binary tree structure. In this case, for example, the quad tree structure may be applied first and the binary tree structure may be applied later. Alternatively, the binary tree structure may be applied first. The coding procedure according to the present invention may be performed based on the final coding unit that is no longer split. In this case, the maximum coding unit may be used as the final coding unit immediately based on coding efficiency according to the image characteristic, or if necessary, the coding unit is recursively divided into coding units of lower depths and optimized. A coding unit of size may be used as the final coding unit. Here, the coding procedure may include a procedure of prediction, transform, and reconstruction, which will be described later. As another example, the processing unit may further include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit may be partitioned or partitioned from the last coding unit described above, respectively. The prediction unit may be a unit of sample prediction, and the transformation unit may be a unit for deriving a transform coefficient and / or a unit for deriving a residual signal from the transform coefficient.
유닛은 경우에 따라서 블록(block) 또는 영역(area) 등의 용어와 혼용하여 사용될 수 있다. 일반적인 경우, MxN 블록은 M개의 열과 N개의 행으로 이루어진 샘플들 또는 변환 계수(transform coefficient)들의 집합을 나타낼 수 있다. 샘플은 일반적으로 픽셀 또는 픽셀의 값을 나타낼 수 있으며, 휘도(luma) 성분의 픽셀/픽셀값만을 나타낼 수도 있고, 채도(chroma) 성분의 픽셀/픽셀 값만을 나타낼 수도 있다. 샘플은 하나의 픽처(또는 영상)을 픽셀(pixel) 또는 펠(pel)에 대응하는 용어로서 사용될 수 있다.The unit may be used interchangeably with terms such as block or area in some cases. In a general case, an M × N block may represent a set of samples or transform coefficients composed of M columns and N rows. A sample may generally represent a pixel or a value of a pixel, and may represent only a pixel / pixel value of a luma component or only a pixel / pixel value of a chroma component. A sample may be used as a term corresponding to one picture (or image) for a pixel or a pel.
인코딩 장치(100)는 입력 영상 신호(원본 블록, 원본 샘플 어레이)에서 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호(예측된 블록, 예측 샘플 어레이)를 감산하여 레지듀얼 신호(residual signal, 잔여 블록, 잔여 샘플 어레이)를 생성할 수 있고, 생성된 레지듀얼 신호는 변환부(120)로 전송된다. 이 경우 도시된 바와 같이 인코더(100) 내에서 입력 영상 신호(원본 블록, 원본 샘플 어레이)에서 예측 신호(예측 블록, 예측 샘플 어레이)를 감산하는 유닛은 감산부(115)라고 불릴 수 있다. 예측부는 처리 대상 블록(이하, 현재 블록이라 함)에 대한 예측을 수행하고, 현재 블록에 대한 예측 샘플들을 포함하는 예측된 블록(predicted block)을 생성할 수 있다. 예측부는 현재 블록 또는 CU 단위로 인트라 예측이 적용되는지 또는 인터 예측이 적용되는지 결정할 수 있다. 예측부는 각 예측모드에 대한 설명에서 후술하는 바와 같이 예측 모드 정보 등 예측에 관한 다양한 정보를 생성하여 엔트로피 인코딩부(190)로 전달할 수 있다. 예측에 관한 정보는 엔트로피 인코딩부(190)에서 인코딩되어 비트스트림 형태로 출력될 수 있다. The encoding apparatus 100 subtracts the prediction signal (predicted block, prediction sample array) output from the inter prediction unit 180 or the intra prediction unit 185 from the input image signal (original block, original sample array). A signal may be generated (residual signal, residual block, residual sample array), and the generated residual signal is transmitted to the converter 120. In this case, as shown, a unit for subtracting a prediction signal (prediction block, prediction sample array) from an input image signal (original block, original sample array) in the encoder 100 may be referred to as a subtraction unit 115. The prediction unit may perform a prediction on a block to be processed (hereinafter, referred to as a current block) and generate a predicted block including prediction samples for the current block. The prediction unit may determine whether intra prediction or inter prediction is applied on a current block or CU basis. As described later in the description of each prediction mode, the prediction unit may generate various information related to prediction, such as prediction mode information, and transmit the generated information to the entropy encoding unit 190. The information about the prediction may be encoded in the entropy encoding unit 190 and output in the form of a bitstream.
인트라 예측부(185)는 현재 픽처 내의 샘플들을 참조하여 현재 블록을 예측할 수 있다. 참조되는 샘플들은 예측 모드에 따라 상기 현재 블록의 주변(neighbor)에 위치할 수 있고, 또는 떨어져서 위치할 수도 있다. 인트라 예측에서 예측 모드들은 복수의 비방향성 모드와 복수의 방향성 모드를 포함할 수 있다. 비방향성 모드는 예를 들어 DC 모드 및 플래너 모드(Planar 모드)를 포함할 수 있다. 방향성 모드는 예측 방향의 세밀한 정도에 따라 예를 들어 33개의 방향성 예측 모드 또는 65개의 방향성 예측 모드를 포함할 수 있다. 다만, 이는 예시로서 설정에 따라 그 이상 또는 그 이하의 개수의 방향성 예측 모드들이 사용될 수 있다. 인트라 예측부(185)는 주변 블록에 적용된 예측 모드를 이용하여, 현재 블록에 적용되는 예측 모드를 결정할 수도 있다.The intra predictor 185 may predict the current block by referring to the samples in the current picture. The referenced samples may be located in the neighborhood of the current block or may be located apart according to the prediction mode. In intra prediction, the prediction modes may include a plurality of non-directional modes and a plurality of directional modes. Non-directional mode may include, for example, DC mode and planner mode (Planar mode). The directional mode may include, for example, 33 directional prediction modes or 65 directional prediction modes depending on the degree of detail of the prediction direction. However, as an example, more or less number of directional prediction modes may be used depending on the setting. The intra predictor 185 may determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
인터 예측부(180)는 참조 픽처 상에서 움직임 벡터에 의해 특정되는 참조 블록(참조 샘플 어레이)을 기반으로, 현재 블록에 대한 예측된 블록을 유도할 수 있다. 이때, 인터 예측 모드에서 전송되는 움직임 정보의 양을 줄이기 위해 주변 블록과 현재 블록 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 블록, 서브블록 또는 샘플 단위로 예측할 수 있다. 움직임 정보는 움직임 벡터 및 참조 픽처 인덱스를 포함할 수 있다. 움직임 정보는 인터 예측 방향(L0 예측, L1 예측, Bi 예측 등) 정보를 더 포함할 수 있다. 인터 예측의 경우에, 주변 블록은 현재 픽처 내에 존재하는 공간적 주변 블록(spatial neighboring block)과 참조 픽처에 존재하는 시간적 주변 블록(temporal neighboring block)을 포함할 수 있다. 참조 블록을 포함하는 참조 픽처와 시간적 주변 블록을 포함하는 참조 픽처는 동일할 수도 있고, 다를 수도 있다. 상기 시간적 주변 블록은 동일 위치 참조 블록(collocated reference block), 동일 위치 CU(colCU) 등의 이름으로 불릴 수 있으며, 시간적 주변 블록을 포함하는 참조 픽처는 동일 위치 픽처(collocated picture, colPic)라고 불릴 수도 있다. 예를 들어, 인터 예측부(180)는 주변 블록들을 기반으로 움직임 정보 후보 리스트를 구성하고, 상기 현재 블록의 움직임 벡터 및/또는 참조 픽처 인덱스를 도출하기 위하여 어떤 후보가 사용되는지를 지시하는 정보를 생성할 수 있다. 다양한 예측 모드를 기반으로 인터 예측이 수행될 수 있으며, 예를 들어 스킵 모드와 머지 모드의 경우에, 인터 예측부(180)는 주변 블록의 움직임 정보를 현재 블록의 움직임 정보로 이용할 수 있다. 스킵 모드의 경우, 머지 모드와 달리 레지듀얼 신호가 전송되지 않을 수 있다. 움직임 정보 예측(motion vector prediction, MVP) 모드의 경우, 주변 블록의 움직임 벡터를 움직임 벡터 예측자(motion vector predictor)로 이용하고, 움직임 벡터 차분(motion vector difference)을 시그널링함으로써 현재 블록의 움직임 벡터를 지시할 수 있다.The inter predictor 180 may derive the predicted block with respect to the current block based on the reference block (reference sample array) specified by the motion vector on the reference picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information may be predicted in units of blocks, subblocks, or samples based on the correlation of the motion information between the neighboring block and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring block may include a spatial neighboring block existing in the current picture and a temporal neighboring block present in the reference picture. A reference picture including a reference block and a reference picture including a temporal neighboring block may be the same or different. The temporal neighboring block may be referred to as a collocated reference block, a collocated CU (colCU), or the like. A reference picture including a temporal neighboring block may be referred to as a collocated picture (colPic). have. For example, the inter prediction unit 180 constructs a motion information candidate list based on neighboring blocks, and provides information indicating which candidates are used to derive the motion vector and / or reference picture index of the current block. Can be generated. Inter prediction may be performed based on various prediction modes. For example, in the case of a skip mode and a merge mode, the inter prediction unit 180 may use motion information of a neighboring block as motion information of a current block. In the skip mode, unlike the merge mode, the residual signal may not be transmitted. In the case of motion vector prediction (MVP) mode, the motion vector of the neighboring block is used as a motion vector predictor, and the motion vector of the current block is signaled by signaling a motion vector difference. Can be directed.
인터 예측부(180) 또는 인트라 예측부(185)를 통해 생성된 예측 신호는 복원 신호를 생성하기 위해 이용되거나 레지듀얼 신호를 생성하기 위해 이용될 수 있다. The prediction signal generated by the inter predictor 180 or the intra predictor 185 may be used to generate a reconstruction signal or may be used to generate a residual signal.
변환부(120)는 레지듀얼 신호에 변환 기법을 적용하여 변환 계수들(transform coefficients)를 생성할 수 있다. 예를 들어, 변환 기법은 DCT(Discrete Cosine Transform), DST(Discrete Sine Transform), KLT(Karhunen-Loeve Transform), GBT(Graph-Based Transform), 또는 CNT(Conditionally Non-linear Transform) 중 적어도 하나를 포함할 수 있다. 여기서, GBT는 픽셀 간의 관계 정보를 그래프로 표현한다고 할 때 이 그래프로부터 얻어진 변환을 의미한다. CNT는 이전에 복원된 모든 픽셀(all previously reconstructed pixel)를 이용하여 예측 신호를 생성하고 그에 기초하여 획득되는 변환을 의미한다. 또한, 변환 과정은 정사각형의 동일한 크기를 갖는 픽셀 블록에 적용될 수도 있고, 정사각형이 아닌 가변 크기의 블록에도 적용될 수 있다.The transformer 120 may apply transform techniques to the residual signal to generate transform coefficients. For example, the transformation technique may include at least one of a discrete cosine transform (DCT), a discrete sine transform (DST), a karhunen-loeve transform (KLT), a graph-based transform (GBT), or a conditionally non-linear transform (CNT). It may include. Here, GBT means a conversion obtained from this graph when the relationship information between pixels is represented by a graph. The CNT refers to a transform that is generated based on and generates a prediction signal by using all previously reconstructed pixels. In addition, the conversion process may be applied to pixel blocks having the same size as the square, or may be applied to blocks of variable size rather than square.
양자화부(130)는 변환 계수들을 양자화하여 엔트로피 인코딩부(190)로 전송되고, 엔트로피 인코딩부(190)는 양자화된 신호(양자화된 변환 계수들에 관한 정보)를 인코딩하여 비트스트림으로 출력할 수 있다. 양자화된 변환 계수들에 관한 정보는 레지듀얼 정보라고 불릴 수 있다. 양자화부(130)는 계수 스캔 순서(scan order)를 기반으로 블록 형태의 양자화된 변환 계수들을 1차원 벡터 형태로 재정렬할 수 있고, 1차원 벡터 형태의 양자화된 변환 계수들을 기반으로 상기 양자화된 변환 계수들에 관한 정보를 생성할 수도 있다. 엔트로피 인코딩부(190)는 예를 들어 지수 골롬(exponential Golomb), CAVLC(context-adaptive variable length coding), CABAC(context-adaptive binary arithmetic coding) 등과 같은 다양한 인코딩 방법을 수행할 수 있다. 엔트로피 인코딩부(190)는 양자화된 변환 계수들 외 비디오/이미지 복원에 필요한 정보들(예컨대 신택스 요소들(syntax elements)의 값 등)을 함께 또는 별도로 인코딩할 수도 있다. 인코딩된 정보(예: 비디오/영상 정보)는 비트스트림 형태로 NAL(network abstraction layer) 유닛 단위로 전송 또는 저장될 수 있다. 상기 비트스트림은 네트워크를 통하여 전송될 수 있고, 또는 디지털 저장매체에 저장될 수 있다. 여기서 네트워크는 방송망 및/또는 통신망 등을 포함할 수 있고, 디지털 저장매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장매체를 포함할 수 있다. 엔트로피 인코딩부(190)로부터 출력된 신호는 전송하는 전송부(미도시) 및/또는 저장하는 저장부(미도시)가 인코딩 장치(100)의 내/외부 엘리먼트로서 구성될 수 있고, 또는 전송부는 엔트로피 인코딩부(190)의 구성요소일 수도 있다.The quantization unit 130 quantizes the transform coefficients and transmits them to the entropy encoding unit 190. The entropy encoding unit 190 encodes the quantized signal (information about the quantized transform coefficients) and outputs the bitstream as a bitstream. have. Information about the quantized transform coefficients may be referred to as residual information. The quantization unit 130 may rearrange the quantized transform coefficients in the form of a block into a one-dimensional vector form based on a coefficient scan order, and the quantized transform based on the quantized transform coefficients in the form of a one-dimensional vector. Information about the coefficients may be generated. The entropy encoding unit 190 may perform various encoding methods such as, for example, exponential Golomb, context-adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), and the like. The entropy encoding unit 190 may encode information necessary for video / image reconstruction other than quantized transform coefficients (for example, values of syntax elements) together or separately. The encoded information (eg, video / picture information) may be transmitted or stored in units of NALs (network abstraction layer) in a bitstream form. The bitstream may be transmitted over a network or may be stored in a digital storage medium. The network may include a broadcasting network and / or a communication network, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, and the like. The signal output from the entropy encoding unit 190 may include a transmitting unit (not shown) for transmitting and / or a storing unit (not shown) for storing as an internal / external element of the encoding apparatus 100, or the transmitting unit It may be a component of the entropy encoding unit 190.
양자화부(130)로부터 출력된 양자화된 변환 계수들은 예측 신호를 생성하기 위해 이용될 수 있다. 예를 들어, 양자화된 변환 계수들은에 루프 내의 역양자화부(140) 및 역변환부(150)를 통해 역양자화 및 역변환을 적용함으로써 레지듀얼 신호를 복원할 수 있다. 가산부(155)는 복원된 레지듀얼 신호를 인터 예측부(180) 또는 인트라 예측부(185)로부터 출력된 예측 신호에 더함으로써 복원(reconstructed) 신호(복원 픽처, 복원 블록, 복원 샘플 어레이)가 생성될 수 있다. 스킵 모드가 적용된 경우와 같이 처리 대상 블록에 대한 레지듀얼이 없는 경우, 예측된 블록이 복원 블록으로 사용될 수 있다. 가산부(155)는 복원부 또는 복원 블록 생성부라고 불릴 수 있다. 생성된 복원 신호는 현재 픽처 내 다음 처리 대상 블록의 인트라 예측을 위하여 사용될 수 있고, 후술하는 바와 같이 필터링을 거쳐서 다음 픽처의 인터 예측을 위하여 사용될 수도 있다. The quantized transform coefficients output from the quantization unit 130 may be used to generate a prediction signal. For example, the quantized transform coefficients may be reconstructed in the residual signal by applying inverse quantization and inverse transform through inverse quantization unit 140 and inverse transform unit 150 in a loop. The adder 155 adds the reconstructed residual signal to the predicted signal output from the inter predictor 180 or the intra predictor 185 so that a reconstructed signal (reconstructed picture, reconstructed block, reconstructed sample array) is added. Can be generated. If there is no residual for the block to be processed, such as when the skip mode is applied, the predicted block may be used as the reconstructed block. The adder 155 may be called a restoration unit or a restoration block generation unit. The generated reconstruction signal may be used for intra prediction of the next block to be processed in the current picture, and may be used for inter prediction of the next picture through filtering as described below.
필터링부(160)는 복원 신호에 필터링을 적용하여 주관적/객관적 화질을 향상시킬 수 있다. 예를 들어 필터링부(160)은 복원 픽처에 다양한 필터링 방법을 적용하여 수정된(modified) 복원 픽처를 생성할 수 있고, 수정된 복원 픽처를 복호 픽쳐 버퍼(170)에 전송할 수 있다. 다양한 필터링 방법은 예를 들어, 디블록킹 필터링, 샘플 적응적 오프셋(sample adaptive offset), 적응적 루프 필터(adaptive loop filter), 양방향 필터(bilateral filter) 등을 포함할 수 있다. 필터링부(160)은 각 필터링 방법에 대한 설명에서 후술하는 바와 같이 필터링에 관한 다양한 정보를 생성하여 엔트로피 인코딩부(190)로 전달할 수 있다. 필터링 관한 정보는 엔트로피 인코딩부(190)에서 인코딩되어 비트스트림 형태로 출력될 수 있다. The filtering unit 160 may improve subjective / objective image quality by applying filtering to the reconstruction signal. For example, the filtering unit 160 may generate a modified reconstructed picture by applying various filtering methods to the reconstructed picture, and transmit the modified reconstructed picture to the decoded picture buffer 170. Various filtering methods may include, for example, deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, and the like. The filtering unit 160 may generate various information related to the filtering and transmit the generated information to the entropy encoding unit 190 as described later in the description of each filtering method. The filtering information may be encoded in the entropy encoding unit 190 and output in the form of a bitstream.
복호 픽처 버퍼(170)에 전송된 수정된 복원 픽처는 인터 예측부(180)에서 참조 픽처로 사용될 수 있다. 인코딩 장치는 이를 통하여 인터 예측이 적용되는 경우, 인코딩 장치(100)와 디코딩 장치에서의 예측 미스매치를 피할 수 있고, 부호화 효율도 향상시킬 수 있다. The modified reconstructed picture transmitted to the decoded picture buffer 170 may be used as the reference picture in the inter predictor 180. When the inter prediction is applied through the encoding apparatus, the encoding apparatus may avoid prediction mismatch between the encoding apparatus 100 and the decoding apparatus, and may improve encoding efficiency.
복호 픽처 버퍼(170)는 수정된 복원 픽처를 인터 예측부(180)에서의 참조 픽처로 사용하기 위해 저장할 수 있다.The decoded picture buffer 170 may store the modified reconstructed picture for use as a reference picture in the inter prediction unit 180.
도 3은 본 발명이 적용되는 실시예로서, 영상 신호의 디코딩이 수행되는 디코딩 장치의 개략적인 블록도를 나타낸다. 도 3의 디코딩 장치(200)는 도 1의 디코딩 장치(22)에 대응할 수 있다.3 is an embodiment to which the present invention is applied and shows a schematic block diagram of a decoding apparatus in which decoding of a video signal is performed. The decoding device 200 of FIG. 3 may correspond to the decoding device 22 of FIG. 1.
도 3을 참조하면, 디코딩 장치(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 가산부(235), 필터링부(240), 복호 픽쳐 버퍼(DPB)(250), 인터 예측부(260) 및 인트라 예측부(265)를 포함하여 구성될 수 있다. 인터 예측부(260) 및 인트라 예측부(265)를 합쳐서 예측부라고 불릴 수 있다. 즉, 예측부는 인터 예측부(180) 및 인트라 예측부(185)를 포함할 수 있다. 역양자화부(220), 역변환부(230)를 합쳐서 레지듀얼 처리부라고 불릴 수 있다. 즉, 레지듀얼 처리부는 역양자화부(220), 역변환부(230)을 포함할 수 있다. 상술한 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(230), 가산부(235), 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)는 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어 디코더 또는 프로세서)에 의하여 구성될 수 있다. 또한 복호 픽처 버퍼(250)은 실시예에 따라 하나의 하드웨어 컴포넌트(예를 들어 메모리 또는 디지털 저장 매체)에 의하여 구행될 수 있다.Referring to FIG. 3, the decoding apparatus 200 includes an entropy decoding unit 210, an inverse quantization unit 220, an inverse transform unit 230, an adder 235, a filtering unit 240, and a decoded picture buffer (DPB). 250, an inter predictor 260, and an intra predictor 265 may be configured. The inter predictor 260 and the intra predictor 265 may be collectively called a predictor. That is, the predictor may include an inter predictor 180 and an intra predictor 185. The inverse quantization unit 220 and the inverse transform unit 230 may be collectively called a residual processing unit. That is, the residual processor may include an inverse quantization unit 220 and an inverse transform unit 230. The entropy decoding unit 210, the inverse quantization unit 220, the inverse transformer 230, the adder 235, the filtering unit 240, the inter prediction unit 260, and the intra prediction unit 265 are described above. Can be configured by one hardware component (eg, decoder or processor). In addition, the decoded picture buffer 250 may be implemented by one hardware component (for example, a memory or a digital storage medium) according to an exemplary embodiment.
비디오/이미지 정보를 포함하는 비트스트림이 입력되면, 디코딩 장치(200)는 도 2의 인코딩 장치(100)에서 비디오/이미지 정보가 처리된 프로세스에 대응하여 영상을 복원할 수 있다. 예를 들어, 디코딩 장치(200)는 인코딩 장치(100)에서 적용된 처리 유닛을 이용하여 디코딩을 수행할 수 있다. 따라서 디코딩의 처리 유닛은 예를 들어 코딩 유닛일 수 있고, 코딩 유닛은 코딩 트리 유닛 또는 최대 코딩 유닛으로부터 쿼드 트리 구조 및/또는 바이너리 트리 구조를 따라서 분할될 수 있다. 그리고, 디코딩 장치(200)를 통해 디코딩 및 출력된 복원 영상 신호는 재생 장치를 통해 재생될 수 있다.When a bitstream including video / image information is input, the decoding apparatus 200 may reconstruct an image corresponding to a process in which the video / image information is processed in the encoding apparatus 100 of FIG. 2. For example, the decoding apparatus 200 may perform decoding using a processing unit applied in the encoding apparatus 100. The processing unit of decoding may thus be a coding unit, for example, and the coding unit may be divided along the quad tree structure and / or the binary tree structure from the coding tree unit or the largest coding unit. The reconstructed video signal decoded and output through the decoding apparatus 200 may be reproduced through the reproducing apparatus.
디코딩 장치(200)는 도 2의 인코딩 장치(100)로부터 출력된 신호를 비트스트림 형태로 수신할 수 있고, 수신된 신호는 엔트로피 디코딩부(210)를 통해 디코딩될 수 있다. 예를 들어, 엔트로피 디코딩부(210)는 비트스트림을 파싱하여 영상 복원(또는 픽처 복원)에 필요한 정보(예: 비디오/영상 정보)를 도출할 수 있다. 예컨대, 엔트로피 디코딩부(210)는 지수 골롬 부호화, CAVLC 또는 CABAC 등의 코딩 방법을 기초로 비트스트림 내 정보를 디코딩하고, 영상 복원에 필요한 신택스 엘리먼트의 값, 레지듀얼에 관한 변환 계수의 양자화된 값 들을 출력할 수 있다. 보다 상세하게, CABAC 엔트로피 디코딩 방법은, 비트스트림에서 각 구문 요소에 해당하는 빈을 수신하고, 디코딩 대상 구문 요소 정보와 주변 및 디코딩 대상 블록의 디코딩 정보 혹은 이전 단계에서 디코딩된 심볼/빈의 정보를 이용하여 문맥(context) 모델을 결정하고, 결정된 문맥 모델에 따라 빈(bin)의 발생 확률을 예측하여 빈의 산술 디코딩(arithmetic decoding)를 수행하여 각 구문 요소의 값에 해당하는 심볼을 생성할 수 있다. 이때, CABAC 엔트로피 디코딩 방법은 문맥 모델 결정 후 다음 심볼/빈의 문맥 모델을 위해 디코딩된 심볼/빈의 정보를 이용하여 문맥 모델을 업데이트할 수 있다. 엔트로피 디코딩부(210)에서 디코딩된 정보 중 예측에 관한 정보는 예측부(인터 예측부(260) 및 인트라 예측부(265))로 제공되고, 엔트로피 디코딩부(210)에서 엔트로피 디코딩이 수행된 레지듀얼 값, 즉 양자화된 변환 계수들 및 관련 파라미터 정보는 역양자화부(220)로 입력될 수 있다. 또한, 엔트로피 디코딩부(210)에서 디코딩된 정보 중 필터링에 관한 정보는 필터링부(240)로 제공될 수 있다. 한편, 인코딩 장치(100)로부터 출력된 신호를 수신하는 수신부(미도시)가 디코딩 장치(200)의 내/외부 엘리먼트로서 더 구성될 수 있고, 또는 수신부는 엔트로피 디코딩부(210)의 구성요소일 수도 있다. The decoding apparatus 200 may receive a signal output from the encoding apparatus 100 of FIG. 2 in the form of a bitstream, and the received signal may be decoded through the entropy decoding unit 210. For example, the entropy decoding unit 210 may parse the bitstream to derive information (eg, video / image information) necessary for image reconstruction (or picture reconstruction). For example, the entropy decoding unit 210 decodes the information in the bitstream based on a coding method such as exponential Golomb coding, CAVLC, or CABAC, quantized values of syntax elements required for image reconstruction, and transform coefficients for residuals. Can be output. More specifically, the CABAC entropy decoding method receives a bin corresponding to each syntax element in a bitstream, and decodes syntax element information and decoding information of neighboring and decoding target blocks or information of symbols / bins decoded in a previous step. The context model may be determined using the context model, the probability of occurrence of a bin may be predicted according to the determined context model, and arithmetic decoding of the bin may be performed to generate a symbol corresponding to the value of each syntax element. have. In this case, the CABAC entropy decoding method may update the context model by using the information of the decoded symbol / bin for the context model of the next symbol / bin after determining the context model. The information related to the prediction among the information decoded by the entropy decoding unit 210 is provided to the predictor (the inter predictor 260 and the intra predictor 265), and the entropy decoding performed by the entropy decoder 210 is performed. Dual values, that is, quantized transform coefficients and related parameter information, may be input to the inverse quantizer 220. In addition, information on filtering among information decoded by the entropy decoding unit 210 may be provided to the filtering unit 240. Meanwhile, a receiver (not shown) that receives a signal output from the encoding apparatus 100 may be further configured as an internal / external element of the decoding apparatus 200, or the receiver may be a component of the entropy decoding unit 210. It may be.
역양자화부(220)에서는 양자화된 변환 계수들을 역양자화하여 변환 계수들을 출력할 수 있다. 역양자화부(220)는 양자화된 변환 계수들을 2차원의 블록 형태로 재정렬할 수 있다. 이 경우 인코딩 장치(100)에서 수행된 계수 스캔 순서에 기반하여 재정렬이 수행될 수 있다. 역양자화부(220)는 양자화 파라미터(예를 들어 양자화 스텝 사이즈 정보)를 이용하여 양자화된 변환 계수들에 대한 역양자화를 수행하고, 변환 계수들(transform coefficient)을 획득할 수 있다. The inverse quantization unit 220 may dequantize the quantized transform coefficients and output the transform coefficients. The inverse quantization unit 220 may rearrange the quantized transform coefficients in the form of a two-dimensional block. In this case, reordering may be performed based on the coefficient scan order performed in the encoding apparatus 100. The inverse quantization unit 220 may perform inverse quantization on quantized transform coefficients using a quantization parameter (for example, quantization step size information), and may obtain transform coefficients.
역변환부(230)는 변환 계수들을 역변환하여 레지듀얼 신호(레지듀얼 블록, 레지듀얼 샘플 어레이)를 획득하게 된다. The inverse transformer 230 inversely transforms the transform coefficients to obtain a residual signal (residual block, residual sample array).
예측부는 현재 블록에 대한 예측을 수행하고, 상기 현재 블록에 대한 예측 샘플들을 포함하는 예측된 블록(predicted block)을 생성할 수 있다. 예측부는 엔트로피 디코딩부(210)로부터 출력된 상기 예측에 관한 정보를 기반으로 상기 현재 블록에 인트라 예측이 적용되는지 또는 인터 예측이 적용되는지 결정할 수 있고, 구체적인 인트라/인터 예측 모드를 결정할 수 있다. The prediction unit may perform prediction on the current block and generate a predicted block including prediction samples for the current block. The prediction unit may determine whether intra prediction or inter prediction is applied to the current block based on the information about the prediction output from the entropy decoding unit 210, and may determine a specific intra / inter prediction mode.
인트라 예측부(265)는 현재 픽처 내의 샘플들을 참조하여 현재 블록을 예측할 수 있다. 참조되는 샘플들은 예측 모드에 따라 현재 블록의 주변(neighbor)에 위치할 수 있고, 또는 이격되어 위치할 수도 있다. 인트라 예측에서 예측 모드들은 복수의 비방향성 모드와 복수의 방향성 모드를 포함할 수 있다. 인트라 예측부(265)는 주변 블록에 적용된 예측 모드를 이용하여, 현재 블록에 적용되는 예측 모드를 결정할 수도 있다.The intra predictor 265 may predict the current block by referring to the samples in the current picture. The referenced samples may be located in the neighbor of the current block or may be spaced apart according to the prediction mode. In intra prediction, the prediction modes may include a plurality of non-directional modes and a plurality of directional modes. The intra predictor 265 may determine the prediction mode applied to the current block by using the prediction mode applied to the neighboring block.
인터 예측부(260)는 참조 픽처 상에서 움직임 벡터에 의해 특정되는 참조 블록(참조 샘플 어레이)을 기반으로, 현재 블록에 대한 예측된 블록을 유도할 수 있다. 이때, 인터 예측 모드에서 전송되는 움직임 정보의 양을 줄이기 위해 주변 블록과 현재 블록 간의 움직임 정보의 상관성에 기초하여 움직임 정보를 블록, 서브블록 또는 샘플 단위로 예측할 수 있다. 움직임 정보는 움직임 벡터 및 참조 픽처 인덱스를 포함할 수 있다. 움직임 정보는 인터 예측 방향(L0 예측, L1 예측, Bi 예측 등) 정보를 더 포함할 수 있다. 인터 예측의 경우, 주변 블록은 현재 픽처 내에 존재하는 공간적 주변 블록(spatial neighboring block)과 참조 픽처에 존재하는 시간적 주변 블록(temporal neighboring block)을 포함할 수 있다. 예를 들어, 인터 예측부(260)는 주변 블록들을 기반으로 움직임 정보 후보 리스트를 구성하고, 수신된 후보 선택 정보를 기반으로 현재 블록의 움직임 벡터 및/또는 참조 픽처 인덱스를 도출할 수 있다. 다양한 예측 모드를 기반으로 인터 예측이 수행될 수 있으며, 예측에 관한 정보는 현재 블록에 대한 인터 예측의 모드를 지시하는 정보를 포함할 수 있다. The inter predictor 260 may derive the predicted block for the current block based on the reference block (reference sample array) specified by the motion vector on the reference picture. In this case, in order to reduce the amount of motion information transmitted in the inter prediction mode, the motion information may be predicted in units of blocks, subblocks, or samples based on the correlation of the motion information between the neighboring block and the current block. The motion information may include a motion vector and a reference picture index. The motion information may further include inter prediction direction (L0 prediction, L1 prediction, Bi prediction, etc.) information. In the case of inter prediction, the neighboring block may include a spatial neighboring block existing in the current picture and a temporal neighboring block present in the reference picture. For example, the inter prediction unit 260 may construct a motion information candidate list based on neighboring blocks and derive a motion vector and / or a reference picture index of the current block based on the received candidate selection information. Inter prediction may be performed based on various prediction modes, and the information about the prediction may include information indicating a mode of inter prediction for the current block.
가산부(235)는 획득된 레지듀얼 신호를 인터 예측부(260) 또는 인트라 예측부(265)로부터 출력된 예측 신호(예측된 블록, 예측 샘플 어레이)에 더함으로써 복원 신호(복원 픽처, 복원 블록, 복원 샘플 어레이)를 생성할 수 있다. 스킵 모드가 적용된 경우와 같이 처리 대상 블록에 대한 레지듀얼이 없는 경우, 예측된 블록이 복원 블록으로 사용될 수 있다.The adder 235 adds the obtained residual signal to the predictive signal (predicted block, predictive sample array) output from the inter predictor 260 or the intra predictor 265 to restore the reconstructed signal (reconstructed picture, reconstructed block). , Restore sample array). If there is no residual for the block to be processed, such as when the skip mode is applied, the predicted block may be used as the reconstructed block.
가산부(235)는 복원부 또는 복원 블록 생성부라고 불릴 수 있다. 생성된 복원 신호는 현재 픽처 내 다음 처리 대상 블록의 인트라 예측을 위하여 사용될 수 있고, 후술하는 바와 같이 필터링을 거쳐서 다음 픽처의 인터 예측을 위하여 사용될 수도 있다. The adder 235 may be called a restoration unit or a restoration block generation unit. The generated reconstruction signal may be used for intra prediction of the next block to be processed in the current picture, and may be used for inter prediction of the next picture through filtering as described below.
필터링부(240)는 복원 신호에 필터링을 적용함으로써 주관적/객관적 화질을 향상시킬 수 있다. 예를 들어 필터링부(240)는 복원 픽처에 다양한 필터링 방법을 적용하여 수정된(modified) 복원 픽처를 생성할 수 있고, 수정된 복원 픽처를 복호 픽쳐 버퍼(250)에 전송할 수 있다. 다양한 필터링 방법은 예를 들어, 디블록킹 필터링, 샘플 적응적 오프셋(sample adaptive offset, SAO), 적응적 루프 필터(adaptive loop filter, ALF), 양방향 필터(bilateral filter) 등을 포함할 수 있다. The filtering unit 240 may improve subjective / objective image quality by applying filtering to the reconstruction signal. For example, the filtering unit 240 may generate a modified reconstructed picture by applying various filtering methods to the reconstructed picture, and transmit the modified reconstructed picture to the decoded picture buffer 250. Various filtering methods may include, for example, deblocking filtering, sample adaptive offset (SAO), adaptive loop filter (ALF), bilateral filter, and the like.
복호 픽쳐 버퍼(250)에 전송된 수정된 복원 픽처는 인터 예측부(260)에 의해 참조 픽쳐로 사용될 수 있다.The modified reconstructed picture transmitted to the decoded picture buffer 250 may be used as the reference picture by the inter predictor 260.
본 명세서에서, 인코딩 장치(100)의 필터링부(160), 인터 예측부(180) 및 인트라 예측부(185)에서 설명된 실시예들은 각각 디코딩 장치의 필터링부(240), 인터 예측부(260) 및 인트라 예측부(265)에도 동일 또는 대응되도록 적용될 수 있다.In the present specification, the embodiments described by the filtering unit 160, the inter prediction unit 180, and the intra prediction unit 185 of the encoding apparatus 100 are respectively the filtering unit 240 and the inter prediction unit 260 of the decoding apparatus. ) And the intra prediction unit 265 may be equally or correspondingly applied.
도 4는 본 발명이 적용되는 실시예로서, 컨텐츠 스트리밍 시스템의 구조도이다. 4 is a structural diagram of a content streaming system according to an embodiment to which the present invention is applied.
본 발명이 적용되는 컨텐츠 스트리밍 시스템은 크게 인코딩 서버(410), 스트리밍 서버(420), 웹 서버(430), 미디어 저장소(440), 사용자 장치(450) 및 멀티미디어 입력 장치(460)를 포함할 수 있다.The content streaming system to which the present invention is applied may largely include an encoding server 410, a streaming server 420, a web server 430, a media storage 440, a user device 450, and a multimedia input device 460. have.
인코딩 서버(410)는 스마트폰, 카메라, 캠코더 등과 같은 멀티미디어 입력 장치들로부터 입력된 컨텐츠를 디지털 데이터로 압축하여 비트스트림을 생성하고 이를 스트리밍 서버(420)로 전송하는 역할을 한다. 다른 예로, 스마트폰, 카메라, 캠코더 등과 같은 멀티미디어 입력 장치(460)들이 비트스트림을 직접 생성하는 경우, 인코딩 서버(410)는 생략될 수 있다.The encoding server 410 compresses content input from multimedia input devices such as a smartphone, a camera, a camcorder, etc. into digital data to generate a bitstream and transmit the bitstream to the streaming server 420. As another example, when the multimedia input device 460 such as a smartphone, a camera, a camcorder, or the like directly generates a bitstream, the encoding server 410 may be omitted.
비트스트림은 본 발명이 적용되는 인코딩 방법 또는 비트스트림 생성 방법에 의해 생성될 수 있고, 스트리밍 서버(420)는 비트스트림을 전송 또는 수신하는 과정에서 일시적으로 비트스트림을 저장할 수 있다.The bitstream may be generated by an encoding method or a bitstream generation method to which the present invention is applied, and the streaming server 420 may temporarily store the bitstream in the process of transmitting or receiving the bitstream.
스트리밍 서버(420)는 웹 서버(430)를 통한 사용자 요청에 기초하여 멀티미디어 데이터를 사용자 장치(450)에 전송하고, 웹 서버(430)는 사용자에게 어떠한 서비스가 있는지를 알려주는 매개체 역할을 한다. 사용자가 웹 서버(430)에 원하는 서비스를 요청하면, 웹 서버(430)는 이를 스트리밍 서버(420)에 전달하고, 스트리밍 서버(420)는 사용자에게 멀티미디어 데이터를 전송한다. 이때, 컨텐츠 스트리밍 시스템은 별도의 제어 서버를 포함할 수 있고, 이 경우 제어 서버는 컨텐츠 스트리밍 시스템 내 각 장치 간 명령/응답을 제어하는 역할을 한다.The streaming server 420 transmits the multimedia data to the user device 450 based on the user request through the web server 430, and the web server 430 serves as an intermediary to inform the user of what service there is. When a user requests a desired service from the web server 430, the web server 430 transmits the request to the streaming server 420, and the streaming server 420 transmits multimedia data to the user. At this time, the content streaming system may include a separate control server, in which case the control server serves to control the command / response between each device in the content streaming system.
스트리밍 서버(420)는 미디어 저장소(440) 및/또는 인코딩 서버(410)로부터 컨텐츠를 수신할 수 있다. 예를 들어, 인코딩 서버(410)로부터 컨텐츠를 수신하게 되는 경우, 컨텐츠를 실시간으로 수신할 수 있다. 이 경우, 원활한 스트리밍 서비스를 제공하기 위하여 스트리밍 서버(420)는 비트스트림을 일정 시간동안 저장할 수 있다.The streaming server 420 may receive content from the media store 440 and / or the encoding server 410. For example, when the content is received from the encoding server 410, the content may be received in real time. In this case, in order to provide a smooth streaming service, the streaming server 420 may store the bitstream for a predetermined time.
사용자 장치(450)의 예로는, 휴대폰, 스마트 폰(smart phone), 노트북 컴퓨터(laptop computer), 디지털방송용 단말기, PDA(personal digital assistants), PMP(portable multimedia player), 네비게이션, 슬레이트 PC(slate PC), 태블릿 PC(tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(wearable device, 예를 들어, 워치형 단말기 (smartwatch), 글래스형 단말기 (smart glass), HMD(head mounted display)), 디지털 TV, 데스크탑 컴퓨터, 디지털 사이니지 등이 있을 수 있다.Examples of the user device 450 include a mobile phone, a smart phone, a laptop computer, a digital broadcasting terminal, a personal digital assistant (PDA), a portable multimedia player (PMP), a navigation device, and a slate PC. ), Tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, glass glasses, head mounted displays), digital TVs , Desktop computers, digital signage, and the like.
컨텐츠 스트리밍 시스템 내 각 서버들은 분산 서버로 운영될 수 있으며, 이 경우 각 서버에서 수신하는 데이터는 분산 처리될 수 있다.Each server in the content streaming system may operate as a distributed server. In this case, data received from each server may be distributedly processed.
도 5는 본 발명이 적용될 수 있는 실시예들로서, 도 5a는 QT(QuadTree, QT), 도 5b는 BT(Binary Tree, BT), 도 5c는 TT(Ternary Tree, TT) 도 5d는 AT(Asymmetric Tree, AT)에 의한 블록 분할 구조들을 설명하기 위한 도면이다.5 is an embodiment to which the present invention may be applied. FIG. 5A is a quadtree (QT), FIG. 5B is a binary tree (BT), and FIG. 5C is a ternary tree (TT). FIG. 4 is a diagram for describing block division structures by Tree (AT). FIG.
비디오 코딩에서 하나의 블록은 QT 기반으로 분할될 수 있다. 또한, QT에 의해서 분할된 하나의 서브 블록(subblock)은 QT를 사용하여 재귀적으로 더 분할될 수 있다. 더 이상 QT 분할되지 않는 리프 블록(leaf block)은 BT, TT 또는 AT 중 적어도 하나의 방식에 의해서 분할될 수 있다. BT는 horizontal BT (2NxN, 2NxN)과 vertical BT (Nx2N, Nx2N)의 두 가지 형태의 분할을 가질 수 있다. TT는 horizontal TT (2Nx1/2N, 2NxN, 2Nx1/2N)와 vertical TT (1/2Nx2N, Nx2N, 1/2Nx2N)의 두 가지 형태의 분할을 가질 수 있다. AT는 horizontal-up AT (2Nx1/2N, 2Nx3/2N), horizontal-down AT (2Nx3/2N, 2Nx1/2N), vertical-left AT (1/2Nx2N, 3/2Nx2N), vertical-right AT (3/2Nx2N, 1/2Nx2N)의 네 가지 형태의 분할을 가질 수 있다. 각각의 BT, TT, AT는 BT, TT, AT를 사용하여 재귀적으로 더 분할될 수 있다.In video coding, one block may be divided on a QT basis. In addition, one subblock divided by QT may be further divided recursively using QT. Leaf blocks that are no longer QT split may be split by at least one of BT, TT, or AT. BT may have two types of divisions: horizontal BT (2NxN, 2NxN) and vertical BT (Nx2N, Nx2N). The TT may have two types of divisions, horizontal TT (2Nx1 / 2N, 2NxN, 2Nx1 / 2N) and vertical TT (1 / 2Nx2N, Nx2N, 1 / 2Nx2N). AT is horizontal-up AT (2Nx1 / 2N, 2Nx3 / 2N), horizontal-down AT (2Nx3 / 2N, 2Nx1 / 2N), vertical-left AT (1 / 2Nx2N, 3 / 2Nx2N), vertical-right AT (3 / 2Nx2N, 1 / 2Nx2N) can be divided into four types. Each BT, TT, AT may be further recursively divided using BT, TT, AT.
도 5a는 QT 분할의 예를 보여준다. 블록 A는 QT에 의해서 4개의 서브 블록 (A0, A1, A2, A3)으로 분할될 수 있다. 서브 블록 A1은 다시 QT에 의해서 4개의 서브 블록 (B0, B1, B2, B3)로 분할될 수 있다.5A shows an example of QT division. Block A may be divided into four sub-blocks A0, A1, A2, A3 by QT. The sub block A1 may be further divided into four sub blocks B0, B1, B2, and B3 by QT.
도 5b는 BT 분할의 예를 보여준다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 vertical BT(C0, C1) 또는 horizontal BT(D0, D1)로 분할될 수 있다. 블록 C0와 같이 각각의 서브 블록은 horizontal BT(E0, E1) 또는 vertical BT (F0, F1)의 형태와 같이 재귀적으로 더 분할될 수 있다.5B shows an example of BT partitioning. Block B3, which is no longer divided by QT, may be divided into vertical BT (C0, C1) or horizontal BT (D0, D1). Like the block C0, each subblock may be further recursively divided into the form of horizontal BT (E0, E1) or vertical BT (F0, F1).
도 5c는 TT 분할의 예를 보여준다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 vertical TT (C0, C1, C2) 또는 horizontal TT (D0, D1, D2)으로 분할될 수 있다. 블록 C1와 같이 각각의 서브 블록은 horizontal TT (E0, E1, E2) 또는 vertical TT (F0, F1, F2)의 형태와 같이 재귀적으로 더 분할될 수 있다.5C shows an example of TT partitioning. Block B3, which is no longer divided by QT, may be divided into vertical TT (C0, C1, C2) or horizontal TT (D0, D1, D2). Like block C1, each subblock may be further recursively divided into a form of horizontal TT (E0, E1, E2) or vertical TT (F0, F1, F2).
도 5d는 AT 분할의 예를 보여준다. QT에 의해서 더 이상 분할되지 않는 블록 B3은 vertical AT (C0, C1) 또는 horizontal AT (D0, D1)으로 분할 될 수 있다. 블록 C1와 같이 각각의 서브 블록은 horizontal AT (E0, E1) 또는 vertical TT (F0, F1)의 형태와 같이 재귀적으로 더 분할 될 수 있다.5D shows an example of AT splitting. Block B3, which is no longer divided by QT, may be divided into vertical AT (C0, C1) or horizontal AT (D0, D1). Like block C1, each subblock may be further recursively divided into a form of horizontal AT (E0, E1) or vertical TT (F0, F1).
한편, BT, TT, AT 분할은 함께 사용하여 분할이 가능하다. 예를 들어, BT에 의해 분할된 서브 블록은 TT 또는 AT에 의한 분할이 가능하다. 또한, TT에 의해 분할된 서브 블록은 BT 또는 AT에 의한 분할이 가능하다. AT에 의해 분할된 서브 블록은 BT 또는 TT에 의한 분할이 가능하다. 예를 들어, horizontal BT 분할 이후, 각각의 서브 블록이 vertical BT로 분할될 수 있고, 또는 vertical BT 분할 이후, 각각의 서브 블록이 horizontal BT로 분할될 수도 있다. 이 경우 분할 순서는 다르지만 최종적으로 분할되는 모양은 동일하다. On the other hand, BT, TT, AT splitting can be used together to split. For example, a sub block divided by BT may be divided by TT or AT. In addition, the sub-block divided by TT can be divided by BT or AT. A sub block divided by AT may be divided by BT or TT. For example, after the horizontal BT division, each sub block may be divided into vertical BTs, or after the vertical BT division, each sub block may be divided into horizontal BTs. In this case, the division order is different, but the shape of the final division is the same.
또한, 블록이 분할되면 블록을 탐색하는 순서를 다양하게 정의할 수 있다. 일반적으로, 좌측에서 우측으로, 상단에서 하단으로 탐색을 수행하며, 블록을 탐색한다는 것은 각 분할된 서브 블록의 추가적인 블록 분할 여부를 결정하는 순서를 의미하거나, 블록이 더 이상 분할되지 않을 경우 각 서브 블록의 부호화 순서를 의미하거나, 또는 서브 블록에서 다른 이웃 블록의 정보를 참조할 때의 탐색 순서를 의미할 수 있다.In addition, when a block is divided, the order in which the blocks are searched may be variously defined. In general, searching from left to right and from top to bottom, and searching for a block means an order of determining whether each divided sub-block is divided into additional blocks, or when each sub-block is not divided any more. A coding order of a block may be referred to, or a search order when referring to information of another neighboring block in a subblock.
도 5a 내지 5d과 같은 분할 구조에 의해 분할된 처리 유닛(또는, 변환 블록) 별로 변환이 수행될 수 있으며, 특히, 행(row) 방향과 열(column) 방향 별로 분할되어 변환 행렬이 적용될 수 있다. 본 발명의 실시예에 따르면, 처리 유닛(또는 변환 블록)의 행 방향 또는 열 방향의 길이에 따라 다른 변환 타입이 사용될 수 있다.The transformation may be performed for each processing unit (or transformation block) divided by the division structure as illustrated in FIGS. 5A to 5D, and in particular, the transformation matrix may be applied by dividing by the row direction and the column direction. . According to an embodiment of the present invention, different conversion types may be used depending on the length of the row direction or the column direction of the processing unit (or transform block).
도 6 및 도 7은 본 발명이 적용되는 실시예들로서, 도 6은 도 2의 인코딩 장치(100) 내의 변환 및 양자화부 (120/130), 역양자화 및 역변환부 (140/150)의 개략적인 블록도를 나타내고, 도 7은 디코딩 장치(200) 내의 역양자화 및 역변환부 (220/230)의 개략적인 블록도를 나타낸다.6 and 7 are embodiments to which the present invention is applied, and FIG. 6 is a schematic diagram of a transform and quantization unit 120/130 and an inverse quantization and inverse transform unit 140/150 in the encoding apparatus 100 of FIG. 7 shows a schematic block diagram of an inverse quantization and inverse transform unit 220/230 in the decoding apparatus 200.
도 6을 살펴보면, 변환 및 양자화부(120/130)는 1차 변환부(primary transform unit)(121), 2차 변환부(secondary transform unit)(122) 및 양자화부(130)를 포함할 수 있다. 역양자화 및 역변환부 (140/150)는 역양자화부(140), 역 2차 변환부(inverse secondary transform unit)(151) 및 역 1차 변환부(inverse primary transform unit)(152)를 포함할 수 있다.Referring to FIG. 6, the transform and quantization unit 120/130 may include a primary transform unit 121, a secondary transform unit 122, and a quantization unit 130. have. The inverse quantization and inverse transform unit 140/150 may include an inverse quantization unit 140, an inverse secondary transform unit 151, and an inverse primary transform unit 152. Can be.
도 7을 살펴보면, 역양자화 및 역변환부 (220/230)는 역양자화부(220), 역 2차 변환부(inverse secondary transform unit)(231) 및 역 1차 변환부(inverse primary transform unit)(232)를 포함할 수 있다.Referring to FIG. 7, the inverse quantization unit 220/230 may include an inverse quantization unit 220, an inverse secondary transform unit 231, and an inverse primary transform unit ( 232).
본 발명에서, 변환을 수행할 때 복수의 단계를 통해 변환을 수행할 수 있다. 예를 들어, 도 6에서와 같이 1차 변환(primary transform), 2차 변환(secondary transform)의 2단계를 적용할 수 있고, 또는 알고리즘에 따라 그 이상의 변환 단계가 이용될 수도 있다. 여기서, 1차 변환은 코어 변환(core transform)으로 지칭될 수 있다.In the present invention, the transformation may be performed through a plurality of steps when performing the transformation. For example, as shown in FIG. 6, two stages of a primary transform and a secondary transform may be applied, or more transformation steps may be used according to an algorithm. Here, the primary transform may be referred to as a core transform.
1차 변환부(121)는 레지듀얼 신호에 대해 1차 변환을 적용할 수 있으며, 여기서 1차 변환은 인코더 및/또는 디코더에서 테이블로 기정의될 수 있다.The primary transform unit 121 may apply a primary transform to the residual signal, where the primary transform may be defined as a table at the encoder and / or the decoder.
2차 변환부(122)는 1차 변환된 신호에 대해 2차 변환을 적용할 수 있으며, 여기서 2차 변환은 인코더 및/또는 디코더에서 테이블로 기정의될 수 있다.The secondary transform unit 122 may apply a secondary transform on the primary transformed signal, where the secondary transform may be defined as a table at the encoder and / or the decoder.
일 실시예에서, 2차 변환으로서 비분리 2차 변환(non-separable secondary transform)(NSST)이 조건적으로 적용될 수 있다. 예를 들어, NSST는 화면내 예측 블록일 경우에만 적용되며, 예측 모드 그룹마다 적용 가능한 변환 셋을 가질 수 있다. In one embodiment, a non-separable secondary transform (NSST) may be conditionally applied as a secondary transform. For example, NSST is applied only to intra prediction blocks, and may have a transform set applicable to each prediction mode group.
여기서, 예측 모드 그룹은 예측 방향에 대한 대칭성에 기초하여 설정될 수 있다. 예를 들어, 예측 모드 52와 예측 모드 16은 예측 모드 34 (대각 방향)를 기준으로 대칭이므로, 하나의 그룹을 형성하여 동일한 변환 셋(transform set)이 적용될 수 있다. 이때, 예측 모드 52에 대한 변환을 적용할 때 입력 데이터를 전치(transpose)한 후 적용하며, 이는 예측 모드 16과 변환 셋이 동일하기 때문이다.Here, the prediction mode group may be set based on symmetry with respect to the prediction direction. For example, since the prediction mode 52 and the prediction mode 16 are symmetric with respect to the prediction mode 34 (diagonal direction), the same transform set may be applied by forming one group. At this time, when the transform for the prediction mode 52 is applied, the input data is transposed and then applied, since the prediction set 16 and the transform set are the same.
한편, 플래너 모드(Planar mode)와 DC 모드(DC mode)의 경우 방향에 대한 대칭성이 존재하지 않으므로 각자의 변환 셋을 가지며, 해당 변환 셋은 2개의 변환들로 구성될 수 있다. 나머지 방향성 모드에 대해서는 변환 셋마다 3개의 변환들로 구성될 수 있다.On the other hand, in the planar mode and the DC mode, since there is no symmetry of the direction, each has a transform set, and the transform set may be composed of two transforms. For the remaining directional mode, three transforms may be configured per transform set.
양자화부(130)는 2차 변환된 신호에 대해 양자화를 수행할 수 있다.The quantization unit 130 may perform quantization on the quadratic transformed signal.
역양자화 및 역변환부 (140/150)는 앞서 설명된 과정을 역으로 수행하며, 중복되는 설명은 생략하도록 한다.The inverse quantization and inverse transform unit 140/150 performs the above-described process in reverse, and redundant description thereof will be omitted.
도 7은 디코딩 장치(200) 내의 역양자화 및 역변환부 (220/230)의 개략적인 블록도를 나타낸다.7 shows a schematic block diagram of an inverse quantization and inverse transform unit 220/230 in the decoding apparatus 200.
도 7을 참조하면, 역양자화 및 역변환부 (220/230)는 역양자화부(220), 역 2차 변환부(inverse secondary transform unit)(231) 및 역 1차 변환부(inverse primary transform unit)(232)를 포함할 수 있다.Referring to FIG. 7, the inverse quantization and inverse transform units 220 and 230 may include an inverse quantization unit 220, an inverse secondary transform unit 231, and an inverse primary transform unit. 232 may include.
역양자화부(220)는 양자화 스텝 사이즈 정보를 이용하여 엔트로피 디코딩된 신호로부터 변환 계수를 획득한다.The inverse quantization unit 220 obtains a transform coefficient from the entropy decoded signal using the quantization step size information.
역 2차 변환부(231)에서는 변환 계수에 대해 역 2차 변환을 수행한다. 여기서, 역 2차 변환은 도 6에서 설명한 2차 변환의 역변환을 나타낸다.The inverse quadratic transform unit 231 performs inverse quadratic transformation on the transform coefficients. Here, the inverse secondary transform indicates an inverse transform of the secondary transform described with reference to FIG. 6.
역 1차 변환부(232)는 역 2차 변환된 신호(또는 블록)에 대해 역 1차 변환을 수행하고, 잔차 신호(residual signal)를 획득하게 된다. 여기서, 역 1차 변환은 도 6에서 설명한 상기 1차 변환(primary transform)의 역변환을 나타낸다.The inverse primary transform unit 232 performs inverse primary transform on the inverse secondary transformed signal (or block) and obtains a residual signal. Here, the inverse primary transform indicates an inverse transform of the primary transform described with reference to FIG. 6.
도 8은 AMT(adaptive multiple transform)가 수행되는 과정을 나타내는 흐름도이다.8 is a flowchart illustrating a process of performing adaptive multiple transform (AMT).
본 명세서에서, 수평 방향과 수직 방향에 대해 분리하여 변환이 적용되는 분리가능한 변환(separable transform)에 대한 실시예가 기본적으로 설명되나, 변환 조합은 비분리 변환(non-separable transform)들로도 구성될 수 있다.In the present specification, an embodiment of a separable transform in which transforms are applied separately in the horizontal direction and the vertical direction is basically described, but the transform combination may also be composed of non-separable transforms. .
또는, 분리가능한 변환들과 비분리 변환들의 혼합으로도 변환 조합이 구성될 수 있다. 이 경우, 비분리 변환이 이용되면 행/열별 변환 선택이나 수평/수직 방향별 선택은 불필요해지며, 분리가능한 변환이 선택되는 경우에만 표 4의 변환 조합들이 이용될 수 있다.Alternatively, a combination of transforms may be constructed from a mixture of separable and non-separable transforms. In this case, when the non-separated transform is used, the row / column transform selection or the horizontal / vertical direction selection is unnecessary, and the transform combinations of Table 4 may be used only when the separable transform is selected.
또한, 본 명세서에서 제안되는 방식들은 1차 변환이나 2차 변환에 관계없이 적용될 수 있다. 즉, 둘 중 어느 한쪽에만 적용되어야 한다는 제약이 없으며, 둘다 적용될 수 있다. 여기서, 1차 변환은 잔차 블록을 맨 처음에 변환하기 위한 변환을 의미할 수 있고, 2차 변환은 1차 변환의 결과로 생성된 블록에 대해 변환을 적용하기 위한 변환을 의미할 수 있다.In addition, the schemes proposed in this specification may be applied regardless of the first-order transform or the second-order transform. That is, there is no restriction that it should be applied to either one, and both can be applied. Here, the primary transform may mean a transform for transforming the residual block first, and the secondary transform may mean a transform for applying the transform to a block generated as a result of the primary transform.
먼저 인코딩 장치(100)는 현재 블록에 대응되는 변환 그룹을 결정할 수 있다(S805). 여기서, 변환 그룹은 표 4의 변환 그룹을 의미할 수 있으나, 본 발명은 이에 한정되지 않으며 다른 변환 조합들로 구성될 수 있다.First, the encoding apparatus 100 may determine a transform group corresponding to the current block (S805). Here, the transform group may mean the transform group of Table 4, but the present invention is not limited thereto and may be configured with other transform combinations.
인코딩 장치(100)는 변환 그룹 내 이용가능한 후보 변환 조합들에 대해 변환을 수행할 수 있다(S810). 변환 수행 결과, 인코딩 장치(100)는 RD(rate distortion) 비용이 가장 작은 변환 조합을 결정 또는 선택할 수 있다(S815). 인코딩 장치(100)는 선택된 변환 조합에 대응되는 변환 조합 인덱스를 인코딩할 수 있다(S820).The encoding apparatus 100 may perform transform on candidate transform combinations available in the transform group (S810). As a result of the conversion, the encoding apparatus 100 may determine or select a transformation combination having the lowest cost of RD (rate distortion) (S815). The encoding apparatus 100 may encode a transform combination index corresponding to the selected transform combination (S820).
도 9는 AMT가 수행되는 디코딩 과정을 나타내는 흐름도이다.9 is a flowchart illustrating a decoding process in which AMT is performed.
먼저, 디코딩 장치(200)는 현재 블록을 위한 변환 그룹을 결정할 수 있다(S905). 디코딩 장치(200)는 변환 조합 인덱스를 파싱할 수 있으며, 여기서 변환 조합 인덱스는 변환 그룹 내 복수개의 변환 조합들 중 어느 하나에 대응될 수 있다(S910). 디코딩 장치(200)는 변환 조합 인덱스에 대응하는 변환 조합을 유도할 수 있다(S915). 여기서, 변환 조합은 표 4에서 설명된 변환 조합을 의미할 수 있으나, 본 발명은 이에 한정되지 않는다. 즉, 다른 변환 조합에 의한 구성도 가능하다.First, the decoding apparatus 200 may determine a transform group for the current block (S905). The decoding apparatus 200 may parse the transform combination index, where the transform combination index may correspond to any one of a plurality of transform combinations in the transform group (S910). The decoding apparatus 200 may induce a transform combination corresponding to the transform combination index (S915). Here, the transform combination may mean the transform combination described in Table 4, but the present invention is not limited thereto. That is, the structure by other conversion combination is also possible.
디코딩 장치(200)는 변환 조합에 기초하여 현재 블록에 대해 역변환을 수행할 수 있다(S920). 변환 조합이 행 변환과 열 변환으로 구성되는 경우, 행 변환을 먼저 적용한 후 열 변환을 적용할 수 있다. 다만, 본 발명은 이에 한정되지 않으며, 반대로 적용되거나, 또는 비분리 변환들로 구성된 경우에는 바로 비분리 변환이 적용될 수 있다.The decoding apparatus 200 may perform inverse transform on the current block based on the transform combination (S920). If the transformation combination consists of row transformations and column transformations, you can apply the column transformation first and then the column transformation. However, the present invention is not limited thereto, and in the case of applying the reverse or non-separated transform, the non-separated transform may be applied immediately.
한편, 다른 일실시예로, 변환 그룹을 결정하는 과정과 변환 조합 인덱스를 파싱하는 과정은 동시에 수행될 수 있다.Meanwhile, in another embodiment, the process of determining the transform group and the process of parsing the transform combination index may be performed at the same time.
실시예 1: 4x4 블록에 적용될 수 있는 RST(reduced secondary transform)Example 1: Reduced secondary transform (RST) that can be applied to a 4x4 block
한 4x4 블록에 적용될 수 있는 비분리 변환은 16x16 변환이다. 즉, 해당 4x4 블록을 구성하는 데이터 요소들을 행-우선(row-first) 또는 열-우선(column-first) 순서로 일렬로 늘어 놓게 되면 16x1 벡터가 되어 해당 비분리 변환을 적용할 수 있다. 순방향 16x16 변환은 16개의 행 방향 변환 기저 벡터(transform basis vector)들로 구성되며, 상기 16x1 벡터와 각 변환 기저 벡터에 대해 내적(inner product)을 취하게 되면 해당 변환 기저 벡터에 대한 변환 계수를 얻게 된다. 16개의 변환 기저 벡터들에 대해 모두 해당 변환 계수를 얻는 과정은, 16x16 비분리 변환 행렬과 상기 입력 16x1 벡터를 곱하는 것과 같다. 행렬 곱으로 얻어지는 변환 계수들은 16x1 벡터 형태를 가지는데, 변환 계수 별로 통계적 특성이 다를 수 있다. 예를 들어, 16x1 변환 계수 벡터가 0번째 요소부터 15번째 요소로 이루어졌다고 했을 때, 0번째 요소의 분산은 15번째 요소의 분산보다 클 수 있다. 즉, 앞에 위치한 요소일수록 해당 분산 값이 커서 큰 에너지 값을 가질 수 있다.A non-separated transform that can be applied to one 4x4 block is a 16x16 transform. That is, when the data elements constituting the 4x4 block are arranged in a row-first or column-first order, a 16x1 vector may be applied to the corresponding non-separated transform. The forward 16x16 transform consists of 16 row-wise transform basis vectors. When the inner product of the 16x1 vector and each transform basis vector is taken, a transform coefficient for the corresponding transform basis vector is obtained. do. The process of obtaining the corresponding transform coefficients for all 16 transform basis vectors is equivalent to multiplying the 16x16 non-separated transform matrix by the input 16x1 vector. The transform coefficients obtained by the matrix product have a 16 × 1 vector form, and statistical characteristics may be different for each transform coefficient. For example, when a 16x1 transform coefficient vector is composed of 0th to 15th elements, the variance of the 0th element may be greater than the variance of the 15th element. In other words, the greater the variance value is, the larger the element is.
16x1 변환 계수로부터 역방향 16x16 비분리 변환을 적용하게 되면 (양자화나 정수화 계산 등의 효과를 무시했을 때) 원래의 4x4 블록 신호를 복원할 수 있다. 순방향 16x16 비분리 변환이 직교정규 변환(orthonormal transform)이라면 해당 역방향 16x16 변환은, 순방향 16x16 변환에 대한 행렬의 전치(transpose)를 취해 구할 수 있다. 단순하게는 역방향 16x16 비분리 변환 행렬을 16x1 변환 계수 벡터에 곱해주게 되면 16x1 벡터 형태의 데이터를 얻게 되고 처음 적용했었던 행-우선 또는 열-우선 순서로 배열해 주면 4x4 블록 신호를 복원할 수 있다.Applying the inverse 16x16 non-separation transform from the 16x1 transform coefficients can restore the original 4x4 block signal (when ignoring effects such as quantization or integer calculations). If the forward 16x16 non-separated transform is an orthonormal transform, the reverse 16x16 transform can be obtained by transposing the matrix with respect to the forward 16x16 transform. Simply multiply the inverse 16x16 non-separated transform matrix by the 16x1 transform coefficient vector to obtain 16x1 vector data and arrange the row-first or column-first order that was applied first to restore the 4x4 block signal.
상술하였듯이 16x1 변환 계수 벡터를 이루는 요소들은 각기 통계적 특성이 다를 수 있다. 앞선 예시에서와 같이 앞쪽에 배치된 (0번째 요소와 가까운) 변환 계수들이 보다 큰 에너지를 가진다면, 모든 변환 계수들을 사용하지 않고 먼저 등장하는 일부의 변환 계수들에 역변환을 적용하여도 원래의 신호와 상당히 가까운 신호를 복원할 수 있다. 예를 들어, 역방향 16x16 비분리 변환이 16개의 열 기저 벡터(column basis vector)들로 구성된다고 했을 때, L개의 열 기저 벡터만 남겨 16xL 행렬을 구성하고 변환 계수들 중에서도 보다 중요한 L개의 변환 계수들만을 남긴 후 (Lx1 벡터, 앞선 예시에서와 같이 먼저 등장할 수 있다), 16xL 행렬과 Lx1 벡터를 곱하게 되면 원래의 입력 16x1 벡터 데이터와 오차가 크지 않은 16x1 벡터를 복원할 수 있다. 결과적으로 L개의 계수들만이 데이터 복원에 개입하기 때문에, 변환 계수를 얻을 때도 16x1 변환 계수 벡터가 아니라 Lx1 변환 계수 벡터를 구하면 된다. 즉, 순방향 16x16 비분리 변환 행렬에서 L개의 해당 행 방향 변환 벡터들을 골라서 Lx16 변환을 구성한 후 16x1 입력 벡터와 곱하게 되면 L개의 중요 변환 계수들을 얻을 수 있다.As described above, elements constituting the 16x1 transform coefficient vector may have different statistical characteristics. As in the previous example, if the transform coefficients placed in front (close to the zeroth element) have greater energy, the original signal may be applied to some of the transform coefficients that appear first without using all the transform coefficients. You can restore a signal that is fairly close to. For example, suppose that the inverse 16x16 non-separated transform consists of 16 column basis vectors, leaving only L column basis vectors to form a 16xL matrix and only the L transform coefficients that are more important among the transform coefficients. After leaving (Lx1 vector, which can appear first as in the previous example), multiplying the 16xL matrix by the Lx1 vector can restore the original input 16x1 vector data and the 16x1 vector with little error. As a result, since only L coefficients are involved in data reconstruction, the Lx1 transform coefficient vector is obtained instead of the 16x1 transform coefficient vector. That is, L significant transform coefficients can be obtained by selecting L corresponding row direction transform vectors from a forward 16x16 non-separated transform matrix and constructing an Lx16 transform and multiplying the 16x1 input vector.
L 값은 1 <= L < 16의 범위를 갖게 되며 일반적으로는 16개의 변환 기저 벡터들 중에 임의의 방법으로 L개를 선택할 수 있으나, 부호화와 복호화 관점에서는 앞서 제시한 예시에서와 같이 신호의 에너지 측면에서 중요도가 높은 변환 기저 벡터들을 선택하는 것이 부호화 효율 관점에서 유리할 수 있다.The L value has a range of 1 <= L <16, and in general, L can be selected in any of 16 transform basis vectors, but in terms of encoding and decoding, the energy of the signal is as in the above example. It may be advantageous in terms of coding efficiency to select transform basis vectors of high importance in view.
실시예 2: 4x4 RST의 적용 영역 설정과 변환 계수의 배치Example 2 Application Area Setting and Arrangement of Transform Coefficient of 4x4 RST
도 10은 HEVC 표준에서 적용된 변환 계수 또는 변환 계수 블록에 대한 3가지 순방향 스캔 순서로서, (a)는 대각 스캔(diagonal scan), (b)는 수평 스캔(horizontal scan), (c)는 수직 스캔(vertical scan)을 나타낸다.10 shows three forward scan sequences for transform coefficients or transform coefficient blocks applied in the HEVC standard, (a) a diagonal scan, (b) a horizontal scan, and (c) a vertical scan (vertical scan).
도 10은 HEVC 표준에서 적용되고 있는 변환 계수 또는 변환 계수 블록(4x4 블록, Coefficient Group (CG))에 대한 3가지 순방향 스캔 순서를 도시하며, 레지듀얼 코딩은 (a), (b), 또는 (c)의 스캔 순서의 역순에 의해 수행된다(즉, 16부터 1의 순서로 코딩됨). (a), (b), 및 (c)에 도시된 3가지 스캔 순서는 intra-prediction 모드에 따라 선택되므로, 상기 L개의 변환 계수들에 대해서도 동일하게 intra-prediction 모드에 따라 scan 순서를 결정하도록 구성할 수 있다.FIG. 10 shows three forward scan sequences for transform coefficients or transform coefficient blocks (4x4 blocks, Coefficient Groups (CGs)) applied in the HEVC standard, and the residual coding may be (a), (b), or ( c) in the reverse order of scan order (i.e., coded in the order of 16 to 1). Since the three scan orders shown in (a), (b), and (c) are selected according to the intra-prediction mode, the scan order is determined according to the intra-prediction mode in the same way for the L transform coefficients. Can be configured.
L 값은 1 <= L < 16의 범위를 갖게 되며 일반적으로는 16개의 변환 기저 벡터들 중에 임의의 방법으로 L개를 선택할 수 있으나, 부호화와 복호화 관점에서는 앞서 제시된 예시와 같이 신호의 에너지 측면에서 중요도가 높은 변환 기저 벡터들을 선택하는 것이 부호화 효율 관점에서 유리할 수 있다.The L value has a range of 1 <= L <16, and in general, L may be selected in any of 16 transform basis vectors, but in terms of encoding and decoding, It may be advantageous in terms of coding efficiency to select transform basis vectors of high importance.
도 11과 도 12는 본 발명이 적용되는 실시예로서, 도 11은 4x8 블록에 대한 4x4 RST의 적용시 순방향 대각 스캔이 적용되는 경우에서 변환 계수의 위치를 도시하고, 도 12은 2개의 4x4 블록의 유효한 변환 계수들을 하나의 블록으로 병합하는 경우의 예를 도시한다.11 and 12 illustrate embodiments to which the present invention is applied. FIG. 11 shows positions of transform coefficients when a forward diagonal scan is applied when 4x4 RST is applied to a 4x8 block, and FIG. 12 shows two 4x4 blocks. An example of a case of merging valid transform coefficients of a into one block is shown.
도 10의 (a)의 대각 스캔 순서에 따라 좌상측 4x8 블록을 4x4 블록들로 각각 분할하여 4x4 RST를 적용할 때, L 값이 8이라면(즉, 16개 중에 8개의 변환 계수만을 남긴다면) 도 11과 같이 변환 계수들이 위치할 수 있는데, 각 4x4 블록의 절반만이 변환 계수를 가질 수 있으며, X가 표시된 위치들에 디폴트(default)로 0의 값이 채워질 수 있다. 따라서, 도 10의 (a)에서 제시된 스캔 순서를 따라 L개의 변환 계수를 각 4x4 블록에 대해 배치시키고, 각 4x4 블록의 남은 (16 - L)개의 위치들에 대해서는 0으로 채워진다는 것을 가정하고 해당 레지듀얼 코딩(예: HEVC에서의 레지듀얼 코딩)을 적용할 수 있다. When the 4x4 RST is applied by dividing the upper left 4x8 block into 4x4 blocks according to the diagonal scan order of FIG. 10A, if the L value is 8 (that is, leaving only 8 transform coefficients out of 16) As shown in FIG. 11, transform coefficients may be located. Only half of each 4 × 4 block may have transform coefficients, and a value of 0 may be filled as a default at positions marked with X. Therefore, it is assumed that L transform coefficients are placed for each 4x4 block in the scan order shown in FIG. 10A, and filled with zeros for the remaining (16-L) positions of each 4x4 block. Residual coding (eg, residual coding in HEVC) may be applied.
또한, 도 12와 같이 2개의 4x4 블록에 배치되었던 L개의 변환 계수들을 하나의 블록으로 구성할 수 있다. 특히, L 값이 8인 경우 2개의 4x4 블록의 변환 계수들이 하나의 4x4 블록을 완전히 채우므로 다른 블록에는 변환 계수가 남지 않는다. 따라서, 변환 계수가 비워진 4x4 블록에 대해서는 레지듀얼 코딩이 불필요하므로, HEVC의 경우 해당 블록의 레지듀얼 코딩 적용여부를 나타내는 플래그(coded_sub_block_flag)가 0으로 코딩될 수 있다. 2개의 4x4 블록의 변환 계수들의 위치에 대한 조합 방식은 다양할 수 있다. 예를 들어, 임의의 순서를 따라 위치가 조합될 수 있지만, 아래와 같은 방법도 적용될 수 있다.In addition, as shown in FIG. 12, L transform coefficients arranged in two 4 × 4 blocks may be configured as one block. In particular, when the L value is 8, the transform coefficients of the two 4x4 blocks completely fill one 4x4 block, and thus no transform coefficients remain in the other block. Accordingly, since residual coding is not necessary for the 4 × 4 block in which the transform coefficient is empty, a flag (coded_sub_block_flag) indicating whether the residual coding is applied to the block may be coded as 0 in HEVC. The combination scheme for the position of the transform coefficients of two 4x4 blocks may vary. For example, the positions may be combined in any order, but the following method may also be applied.
1) 두 4x4 블록의 변환 계수를 스캔 순서대로 번갈아가면서 조합한다. 즉, 도 8a, 도 8b, 도 8c에서 상위 블록(upper block)에 대한 변환 계수를
라 하고, 하위 블록(lower block)의 변환 계수를
라 할 때,
와 같이 하나씩 번갈아가며 조합할 수 있다. 또한,
와
의 순서를 바꿀 수 있다(즉,
이 먼저 나오도록 설정할 수 있다).1) Combine the transform coefficients of two 4x4 blocks alternately in the order of scanning. That is, the transform coefficients for the upper blocks in FIGS. 8A, 8B, and 8C are calculated. The conversion coefficient of the lower block When we say You can combine them one by one like this. Also, Wow You can change the order of (i.e. Can be set to come first).
2) 첫번째 4x4 블록에 대한 변환 계수들을 먼저 배치하고 이후 두번째 4x4 블록에 대한 변환 계수들을 배치할 수 있다. 즉,
과 같이 연결하여 배치할 수 있다. 당연히,
와 같이 순서를 바꿀 수도 있다.2) The transform coefficients for the first 4x4 block may be arranged first, and then the transform coefficients for the second 4x4 block may be arranged. In other words, It can be arranged as connected. naturally, You can change the order as
실시예 3: 4x4 RST에 대한 NSST 인덱스를 코딩하는 방법Example 3 Method of Coding NSST Index for 4x4 RST
도 11과 같이 4x4 RST가 적용되면 각 4x4 블록에 대해 변환 계수 스캔 순서에 따라 L+1번째부터 16번째까지는 0 값이 채워질 수 있다. 따라서, 만약 두 4x4 블록 중 하나라도 L+1번째부터 16번째 위치 중에 0이 아닌 값이 발생한다면, 4x4 RST가 적용되지 않는 경우라고 알 수 있게 된다. 4x4 RST도 JEM NSST와 같이 준비된 변환 집합 중에서 하나를 선택해서 적용하는 구조를 갖는다면, 어떤 변환을 적용할지에 대한 인덱스를 (본 문서에서는 NSST 인덱스라고 명명) 시그널링할 수 있다. 만약, 어떤 복호기에서 NSST 인덱스를 비트스트림 파싱을 통해 알 수 있다고 하고 이러한 파싱을 레지듀얼 디코딩(residual decoding) 이후에 수행한다고 하자. 만약, 레지듀얼 디코딩이 수행되어 L+1번째부터 16번째 사이에 0이 아닌 변환 계수가 하나라도 존재하는 것이 밝혀졌다면, 상술한 바와 같이 4x4 RST가 적용되지 않는 것이 확실하므로 NSST 인덱스를 파싱하지 않도록 설정할 수 있다. 따라서, 필요한 경우에 대해서만 NSST 인덱스를 선택적으로 파싱하게 되어 시그널링 비용(signaling cost)을 줄일 수 있다.When 4x4 RST is applied as shown in FIG. 11, 0 values may be filled from L + 1 to 16th according to the transform coefficient scan order for each 4x4 block. Accordingly, if any one of the two 4x4 blocks is a non-zero value among the L + 1st to 16th positions, it can be seen that 4x4 RST is not applied. If the 4x4 RST also has a structure in which one of the transform sets prepared as JEM NSST is selected and applied, the index for which transform is to be applied (named NSST index in this document) may be signaled. Suppose that a decoder can know the NSST index through bitstream parsing and perform such parsing after residual decoding. If residual decoding is performed and it is found that even one non-zero transform coefficient exists between L + 1 and 16th, as described above, it is certain that 4x4 RST is not applied so that the NSST index is not parsed. Can be set. Accordingly, the signaling cost can be reduced by selectively parsing the NSST index only when necessary.
만약, 도 11에서와 같이 특정 영역 내에서 여러 개의 4x4 블록에 대해 4x4 RST가 적용된다고 한다면 (모두 동일한 4x4 RST가 적용될 수도 있고 각기 다른 4x4 RST가 적용될 수도 있다), 하나의 NSST 인덱스를 통해 상기 모든 4x4 블록들에 적용되는 (동일한 혹은 각자의) 4x4 RST가 지정될 수 있다. 하나의 NSST 인덱스에 의해 상기 모든 4x4 블록들에 대한 4x4 RST 및 적용 여부가 결정되므로, 상기 모든 4x4 블록들에 대해 L+1번째부터 16번째까지의 위치에서 0이 아닌 변환 계수가 존재하는지를 레지듀얼 디코딩 과정 중에 조사하여 하나의 4x4 블록에서라도 허용되지 않는 위치에 (L+1번째부터 16번째까지의 위치) 0이 아닌 변환 계수가 존재하게 되면 NSST 인덱스를 코딩하지 않도록 구성할 수 있다.If 4x4 RST is applied to several 4x4 blocks in a specific region as shown in FIG. 11 (all of the same 4x4 RST may be applied or different 4x4 RST may be applied), all of the above through one NSST index A 4x4 RST can be specified (same or separate) that applies to 4x4 blocks. Since one NSST index determines 4x4 RST for all 4x4 blocks and whether it is applied, whether or not a non-zero transform coefficient exists in L + 1 th to 16 th positions for all 4x4 blocks It can be configured not to code the NSST index if there is a non-zero transform coefficient (L + 1 to 16th) in a position that is not allowed even in one 4x4 block by checking during the decoding process.
NSST 인덱스는 휘도(luminance) 블록과 색차(chrominance) 블록에 대해 각기 따로 시그널링할 수도 있고, 색차 블록의 경우 Cb와 Cr에 대해 각기 별도의 NSST 인덱스를 시그널링할 수도 있으며, 하나의 NSST 인덱스를 공유할 수도 있다 (한 번만 시그널링). Cb와 Cr에 대해 하나의 NSST 인덱스를 공유하는 경우 동일한 NSST 인덱스가 지정하는 4x4 RST가 적용될 수 있는데 (Cb와 Cr에 대한 4x4 RST 자체가 동일할 수도 있고, NSST 인덱스는 같으나 개별적인 4x4 RST를 가질 수도 있다), 공유 NSST 인덱스에 대해 상술한 조건적 시그널링을 적용하려면 Cb와 Cr에 대한 모든 4x4 블록들에 대해 L+1번째부터 16번째까지 0이 아닌 변환 계수가 존재하는지를 체크하여, 만약 하나라도 0이 아닌 변환 계수가 발견되면 NSST 인덱스에 대한 시그널링을 생략하도록 구성할 수 있다.The NSST index may signal separately for the luminance block and the chrominance block, and for the chrominance block, the NSST index may signal separate NSST indexes for Cb and Cr, and share one NSST index. It may be (signal only once). When sharing one NSST index for Cb and Cr, the 4x4 RST specified by the same NSST index may be applied (the 4x4 RST for Cb and Cr may be the same, or the NSST index may be the same but have separate 4x4 RST). In order to apply the conditional signaling described above for the shared NSST index, it is checked whether there is a non-zero transform coefficient from L + 1 to 16th for all 4x4 blocks for Cb and Cr, if any one is 0. If no transform coefficient is found, the signaling for the NSST index may be omitted.
도 12에서와 같이 두 4x4 블록에 대한 변환 계수들을 합치는 경우에 대해서도, 4x4 RST가 적용되었을 때 유효한 변환 계수가 존재하지 않는 위치에 0이 아닌 변환 계수가 등장하는지 체크한 후 NSST 인덱스에 대한 시그널링 여부를 결정할 수 있다. 특히, 그림 3에서와 같이 L 값이 8이어서 4x4 RST 적용 시 하나의 4x4 블록에 대해서는 유효한 변환 계수들이 비게 되는 경우 (그림 3(b)의 X로 표시된 블록), 비는 블록의 coded_sub_block_flag를 체크하여 그 값이 1이면 NSST 인덱스를 시그널링하지 않도록 설정할 수 있다.Even when combining transform coefficients for two 4x4 blocks as shown in FIG. 12, signaling for NSST index after checking whether non-zero transform coefficients appear at a position where no valid transform coefficients exist when 4x4 RST is applied You can decide whether or not. In particular, when L value is 8 as shown in Fig. 3 and valid transform coefficients are empty for one 4x4 block when applying 4x4 RST (block indicated by X in Fig. 3 (b)), the ratio is checked by checking coded_sub_block_flag of the block. If the value is 1, it can be set not to signal the NSST index.
실시예 4: NSST 인덱스에 대한 코딩을 레지듀얼 코딩 이전에 수행하는 경우에 대한 최적화 방법Example 4 Optimization Method for the Case of Coding NSST Index Before Residual Coding
NSST 인덱스에 대한 코딩을 레지듀얼 코딩 이전에 수행하는 경우, 4x4 RST의 적용 여부가 미리 결정되므로 변환 계수가 0으로 채워지는 것이 확실한 위치들에 대해서는 레지듀얼 코딩을 생략할 수 있게 된다. 여기서 4x4 RST 적용 여부는 NSST 인덱스 값을 통해 알 수 있도록 (예: NSST 인덱스가 0이면 4x4 RST 적용하지 않음) 구성할 수도 있고, 아니면 별도의 신택스 요소(syntax element) (예: NSST 플래그)를 통해 시그널링할 수도 있다. 예를 들어, 별도의 신택스 요소가 NSST 플래그라고 하면 NSST 플래그를 먼저 파싱하여 4x4 RST 적용 여부를 파악한 후, 만약 NSST 플래그 값이 1이라면 앞서 설명한 대로 유효한 변환 계수가 존재할 수 없는 위치들에 대해서는 레지듀얼 코딩을 생략할 수 있다.When the coding for the NSST index is performed before the residual coding, whether or not the 4x4 RST is applied is determined in advance, so that the residual coding can be omitted for the positions where the transform coefficient is sure to be filled with zero. Here, whether 4x4 RST is applied can be configured to know through NSST index value (for example, 4x4 RST is not applied when NSST index is 0) or through a separate syntax element (for example, NSST flag). It may signal. For example, if a separate syntax element is an NSST flag, the NSST flag is parsed first to determine whether 4x4 RST is applied, and if the NSST flag value is 1, the residuals for positions where no valid conversion factor can exist as described above are present. Coding can be omitted.
HEVC의 경우 레지듀얼 코딩 수행 시 가장 첫 번째로 TU 상에서의 마지막 0이 아닌 계수의 위치를 코딩하게 된다. 만약, NSST 인덱스에 대한 코딩을 마지막 0이 아닌 계수 위치 코딩 이후에 수행하고 마지막 0이 아닌 계수의 위치가 4x4 RST의 적용을 가정했을 때 0이 아닌 계수가 발생할 수 없는 위치로 판명되었다면, NSST 인덱스를 코딩하지 않고 4x4 RST를 적용하지 않도록 구성할 수 있다. 예를 들어, 그림 2에서 X로 표시된 위치들의 경우 4x4 RST가 적용되었을 때 유효한 변환 계수들이 위치하지 않으므로 (e.g. 0 값 등이 채워질 수 있다), X로 표시된 영역에 마지막 0이 아닌 계수 가 위치하게 되면 NSST 인덱스에 대한 코딩을 생략할 수 있다. 만약 X로 표시된 영역에 마지막 0이 아닌 계수가 위치하지 않는다면, NSST 인덱스에 대한 코딩을 수행할 수 있다.In the case of HEVC, when the residual coding is performed, the first non-zero coefficient position on the TU is coded. If the coding for the NSST index is performed after the last non-zero coefficient position coding and the position of the last non-zero coefficient is found to be a position where non-zero coefficients cannot occur when assuming the application of 4x4 RST, the NSST index Can be configured not to code and apply 4x4 RST. For example, the positions marked with X in Figure 2 do not have valid transform coefficients when 4x4 RST is applied (eg zero values can be filled), so that the last nonzero coefficient is placed in the region marked with X. In this case, coding of the NSST index can be omitted. If the last non-zero coefficient is not located in the region marked with X, coding of the NSST index may be performed.
마지막 0이 아닌 계수 위치에 대한 코딩 이후에 조건적으로 (상술하였듯이 마지막 0이 아닌 계수의 위치가 4x4 RST의 적용을 가정했을 때 허용되지 않는 위치라면 NSST 인덱스에 대한 코딩 생략 가능) NSST 인덱스를 코딩하여 4x4 RST의 적용 여부를 알게 된 경우, 이하 남은 레지듀얼 코딩 부분에 대해서는 다음과 같은 두 가지 방식으로 처리될 수 있다.Conditionally code the NSST index after coding for the last nonzero coefficient position (as described above, if the position of the last nonzero coefficient is an unacceptable position assuming the application of 4x4 RST) When it is determined whether 4x4 RST is applied, the remaining residual coding part may be processed in the following two ways.
1) 4x4 RST를 적용하지 않는 경우에 대해서는 일반적인 레지듀얼 코딩을 그대로 유지한다. 즉, 마지막 0이 아닌 계수 위치부터 DC까지 어떤 위치도 0이 아닌 변환 계수가 존재할 수 있다는 가정 하에서 코딩을 수행한다.1) In case of not applying 4x4 RST, general residual coding is kept as it is. That is, coding is performed under the assumption that there may be non-zero transform coefficients in any position from the last non-zero coefficient position to DC.
2) 4x4 RST를 적용하는 경우 특정 위치 또는 특정 4x4 블록에 대해서는 (예: 도 11의 X 위치) 해당 변환 계수가 존재하지 않을 수 밖에 없으므로 (디폴트로 0으로 채워질 수 있다), 해당 위치 또는 블록에 대해서는 레지듀얼 코딩을 건너뛸 수 있다. 예를 들어, 그림 2에서 X로 표시된 위치에 도달하는 경우는 sig_coeff_flag에 (해당 위치에 0이 아닌 계수가 존재하는지 여부에 대한 플래그, HEVC에 존재) 대한 코딩을 생략할 수 있으며, 그림 3에서와 같이 두 블록의 변환 계수를 합치는 경우 0으로 비워진 4x4 블록에 대해서는 coded_sub_block_flag(HEVC에 존재)에 대한 코딩을 생략하고 해당 값을 0으로 유도할 수 있으며 해당 4x4 블록에 대해서는 별도 코딩 없이 모두 0 값으로 채울 수 있다.2) When 4x4 RST is applied, a corresponding transform coefficient must exist for a specific position or a specific 4x4 block (for example, X position of FIG. 11), so that the position or block can be filled with 0 by default. You can skip the residual coding for this. For example, if you reach the location marked X in Figure 2, you can omit coding for sig_coeff_flag (a flag for whether a non-zero coefficient exists at that location, present in HEVC), as shown in Figure 3 Likewise, if you combine the transform coefficients of two blocks, you can omit coding for coded_sub_block_flag (exists in HEVC) for a 4x4 block that is empty to zero, and derive its value to 0. I can fill it.
마지막 0이 아닌 계수 위치에 대한 코딩 이후에 NSST 인덱스를 코딩하는 경우, 마지막 0이 아닌 계수의 x 위치(Px)와 y 위치(Py)가 각기 Tx, Ty보다 작은 경우에는 NSST 인덱스 코딩을 생략하고 4x4 RST를 적용하지 않도록 구성할 수 있다. 예를 들어, Tx = 1, Ty = 1인 경우는 마지막 0이 아닌 계수가 DC 위치에 존재하는 경우에 대해서는 NSST 인덱스 코딩을 생략한다는 것을 가리킨다. 이와 같은 임계치와의 비교를 통해 NSST 인덱스 코딩 여부를 결정하는 방식은 휘도와 색차에 각기 달리 적용될 수 있는데, 예를 들어 휘도와 색차에 대해 각기 다른 Tx, Ty를 적용할 수도 있고 휘도에는 (색차에는) 임계치를 적용하고 휘도에는(색차에는) 적용하지 않을 수도 있다.If you code an NSST index after coding for the last nonzero coefficient position, skip the NSST index coding if the x position (Px) and y position (Py) of the last nonzero coefficient are less than Tx, Ty, respectively. It can be configured not to apply 4x4 RST. For example, Tx = 1, Ty = 1 indicates that the NSST index coding is omitted for the case where the last non-zero coefficient exists at the DC position. The method of determining NSST index coding by comparing with the threshold value can be applied differently to luminance and chrominance. For example, different Tx and Ty may be applied to luminance and chrominance, and luminance (to Threshold may be applied and not luminance (color difference).
상술한 두 가지 방법을 (마지막 0이 아닌 계수가 유효한 변환 계수가 존재하지 않는 영역에 위치하는 경우 NSST 인덱스 코딩 생략, 마지막 0이 아닌 계수에 대한 X 좌표와 Y 좌표가 각기 어떤 임계치보다 작을 때 NSST 인덱스 코딩 생략) 한꺼번에 적용할 수도 있다. 예를 들어, 마지막 0이 아닌 계수 위치 좌표에 대한 임계치 체크를 먼저 수행한 후, 마지막 0이 아닌 계수가 유효한 변환 계수가 존재하지 않는 영역에 위치하는지 여부를 체크할 수 있다(순서는 바뀔 수 있다).The two methods described above are omitted (when the last nonzero coefficient is located in an area where no valid transform coefficients exist, the NSST index coding is omitted; when the X and Y coordinates for the last nonzero coefficient are less than any threshold, respectively, May be applied all at once. For example, a threshold check on the last non-zero coefficient position coordinate may be performed first, and then it may be checked whether the last non-zero coefficient is located in an area where no valid transform coefficient exists (the order may be changed). ).
본 실시예 4)에서 제시하는 방법들은 8x8 RST에 대해서도 적용될 수 있다. 즉, 마지막 0이 아닌 계수가 좌상측(top-left) 8x8 영역 내에서 좌상측 4x4가 아닌 영역에 위치하게 된다면 NSST 인덱스에 대한 코딩을 생략할 수 있으며, 그렇지 않다면 NSST 인덱스에 코딩을 수행할 수 있다. 또한, 마지막 0이 아닌 계수 위치에 대한 X, Y 좌표 값이 모두 어떤 인계 값 미만이라고 한다면 NSST 인덱스에 대한 코딩을 생략할 수 있다. 당연히 두 가지 방법을 함께 적용할 수도 있다.The methods presented in this embodiment 4) can also be applied to 8x8 RST. That is, if the last non-zero coefficient is located in the non-left 4x4 region in the top-left 8x8 region, coding for the NSST index may be omitted, otherwise coding may be performed in the NSST index. have. In addition, if the X and Y coordinate values for the last non-zero coefficient position are less than a certain takeover value, the coding for the NSST index may be omitted. Naturally, the two methods can be applied together.
실시예 5: RST 적용시 휘도와 색차에 대해 각기 다른 NSST 인덱스 코딩 및 레지듀얼 코딩 방식 적용Example 5 Application of Different NSST Index Coding and Residual Coding Methods for Luminance and Chromatic Difference
실시예 3과 실시예 4에 기술된 방식들을 휘도와 색차에 각기 다르게 적용할 수 있다. 다시 말해, 휘도와 색차에 대한 NSST 인덱스 코딩 및 레지듀얼 코딩 방식을 다르게 적용할 수 있다. 예를 들어, 휘도는 실시예 4에 기술된 방식을 따르고, 색차에는 실시예 3에서의 방식을 적용할 수 있다. 또는 휘도에는 실시예 3) 또는 실시예 4)에 제시된 조건적 NSST 인덱스 코딩을 적용하고, 색차에는 조건적 NSST 인덱스 코딩을 적용하지 않을 수 있으며, 반대도 가능하다 (색차에는 적용, 휘도에는 미적용).The schemes described in Embodiments 3 and 4 can be applied differently to luminance and color difference. In other words, NSST index coding and residual coding schemes for luminance and color difference may be applied differently. For example, the luminance follows the scheme described in Example 4, and the scheme in Example 3 may be applied to the color difference. Alternatively, the conditional NSST index coding described in Example 3) or Example 4) may be applied to the luminance, and the conditional NSST index coding may not be applied to the color difference, and vice versa (not applied to the color difference, but not applied to the luminance). .
실시예 6: 축소된 적응적(또는 암시적) 다중 변환(Reduced adaptive (or explicit) multiple transform)Example 6: Reduced adaptive (or explicit) multiple transform
JEM의 EMT(또는 AMT)에서와 같이 여러 변환들(DCT-2, DST-7, DCT-8, DST-1, DCT-5 등)의 조합들이 선택적으로 1차 변환에 사용되는 경우, 복잡도 감소를 위해 모든 경우에 대하여 변환을 수행하는것이 아니라, 미리정의된 영역에 대해서만 변환을 적용함으로써 최악의 경우(worst case) 복잡도를 현저하게 감소시킬 수 있다. 예를 들면, 이미 언급된 Reduced transform(RT)의 방법을 기반으로 MxM 크기의 화소 블록에 대해서 1차 변환을 적용했을경우 MxM크기의 변환 블록을 얻는대신, RxR 블록의 (M >= R) 변환 블록에 대한 계산만을 수행한다. 결과적으로, RxR영역에 대해서만 유효한 계수 (non-zero coefficients)들이 존재하게 되며, 그 외의 영역에 존재할 변환 계수에 대해서는 계산을 수행하지 않고 0(zero) 값으로 간주한다. 다음 표 1은 1차 변환 크기별로 미리 정의된 R값을 사용할 하는 RAMT(reduced adaptive multiple transform)의 3가지 예를 나타내었다.Reduced complexity when combinations of multiple transforms (DCT-2, DST-7, DCT-8, DST-1, DCT-5, etc.) are optionally used for the primary transform, such as in EMT (or AMT) of JEM Instead of performing the transformation for all cases, the worst case complexity can be significantly reduced by applying the transformation only to predefined regions. For example, based on the Reduced transform (RT) method already mentioned, instead of obtaining an MxM-sized transform block when applying a first-order transform to an MxM-sized pixel block, the (M> = R) transform of the RxR block is obtained. Only perform calculations on blocks. As a result, only valid coefficients (non-zero coefficients) exist in the RxR region, and the transform coefficients present in the other region are regarded as a zero value without performing calculation. Table 1 below shows three examples of a reduced adaptive multiple transform (RAMT) using a predefined R value for each primary transform size.
실시예 7: 1차 변환에 기반한 축소된 적응적(또는 암시적) 다중 변환 Reduced adaptive (or explicit) multiple transform based on primary transformExample 7: Reduced adaptive (or explicit) multiple transform based on primary transform
실시예 6에 명시된 축소된 적응적 다중 변환을 적용함에 있어, 축소된 변환 인자(R)가 해당 1차 변환에 따라서 의존적으로 결정될 수 있다. 예를 들면, 1차 변환이 DCT-2인 경우, 다른 1차 변환들에 비해서 계산량이 비교적 간단하므로 적은 블록에 대해서는 축소된 변환을 사용하지 않거나, 상대적으로 큰 R값을 사용함으로서 부호화성능의 감소를 최소화한다. 예를 들면, DCT-2의 경우와 그 외의 변환인 경우 표 2와 같이 다른 축소된 변환 인자를 사용할 수 있다.In applying the reduced adaptive multiple transform specified in Embodiment 6, the reduced transform factor R may be determined depending on the corresponding primary transform. For example, if the primary transform is DCT-2, the computational amount is relatively simple compared to other primary transforms, so that the coding performance is reduced by not using the reduced transform for a small block or by using a relatively large R value. Minimize. For example, in the case of DCT-2 and other transformations, other reduced transformation factors may be used as shown in Table 2.
실시예 8: 인트라 예측 모드에 의존하는 EMT(AMT) 코어 변환 맵핑(EMT(AMT) core transform mapping depends on intra prediction mode)Example 8 EMT (AMT) core transform mapping depends on intra prediction mode
EMT_CU_Flag =1 (또는 AMT_CU_Flag=1)인 경우 2-비트 EMT_TU_index를 통해 4개의 조합의 EMT 인덱스(0,1,2,3) 중 하나를 선택하며, 주어진 EMT 인덱스를 기반으로 해당 1차 변환을 선택한다. 표 3은 EMT 인덱스 값을 기준으로 수평 및 수직 방향에 대해 해당 1차 변환을 선택하는 맵핑 테이블의 예이다.If EMT_CU_Flag = 1 (or AMT_CU_Flag = 1), one of the four combinations of EMT indexes (0,1,2,3) is selected through the 2-bit EMT_TU_index, and the corresponding primary transform is selected based on the given EMT index. do. Table 3 is an example of a mapping table for selecting a corresponding primary transform for horizontal and vertical directions based on an EMT index value.
본 발명에서는 인트라 예측 모드에 따라서 발생하는 1차 변환들의 통계를 분석하였고 이를 기반으로 보다 효율적인 EMT 코어 변환 맵핑 방법을 제안한다. 먼저 표 4는 인트라 예측 모드별로 EMT_TU_index의 분포 (%)를 백분율로 나타내었다.The present invention analyzes the statistics of the first-order transforms generated according to the intra prediction mode and proposes a more efficient EMT core transform mapping method based on the statistics. First, Table 4 shows the distribution (%) of the EMT_TU_index as a percentage by intra prediction mode.
표 4에서 Hor 모드는 67모드를 사용하는 JEM 기반으로 했을 때 모드 2번부터 33번 모드 까지를 나타내고 Ver 모드는 34번부터 66번까지의 방향성(angular) 모드를 나타낸다. In Table 4, the Hor mode represents Modes 2 through 33 when the JEM is based on the 67 mode, and the Ver mode represents the angular modes 34 through 66.
위 표에서 알 수 있듯이 Hor 모드(2 <= 모드 <= 33)의 경우 EMT_TU_index =2가 EMT_TU_index =1보다 매우 높은 확률을 보이고 있다. 따라서 표 5와 같은 맵핑 테이블을 제안하다.As shown in the above table, in the Hor mode (2 <= mode <= 33), EMT_TU_index = 2 has a higher probability than EMT_TU_index = 1. Therefore, we propose a mapping table as shown in Table 5.
표 5에서는 Hor 모드 그룹들에 대해서는 다른 맵핑을 사용한 예를 명시하였다. 위와 같이 EMT_TU_index를 기반으로 1차 변환을 유도하는 방법이 인트라 예측 방향을 기반으로 다른 맵핑 테이블을 사용하는 방법을 제안한다. Table 5 shows an example of using different mappings for Hor mode groups. As described above, the method of deriving the first-order transform based on the EMT_TU_index uses a different mapping table based on the intra prediction direction.
또 다른 일예로, 인트라 예측 모드별로 이용가능한(available) EMT_TU_index가 동일하지 않고 서로 다르게 정의될 수 있는 방법을 제안한다. 예를 들면 플래너 모드의 경우 EMT_TU_index = 3의 경우(방향성 모드의 경우 EMT_TU_index >1) 발생 확률이 상대적으로 낮기 때문에 이러한 부분을 배제함으로써 보다 효율적인 부호화가 가능하다. 표 6은 이용가능한 EMT_TU_index값이 인트라 예측 모드별로 의존적인 경우의 한 예를 명시하였다.As another example, the present invention proposes a method in which the available EMT_TU_index for each intra prediction mode is not the same but may be defined differently. For example, in the case of planner mode, when EMT_TU_index = 3 (EMT_TU_index> 1 in directional mode), the probability of occurrence is relatively low, and thus, such an efficient coding is possible by excluding such a part. Table 6 specifies an example in which the available EMT_TU_index value depends on the intra prediction mode.
실시예 9: EMT(AMT) TU 인덱스 부호화Example 9 EMT (AMT) TU Index Coding
실시예 8에 언급된 인트라 예측 모드별로 다르게 분포하는 EMT_TU_index의 값을 보다 효율적으로 부호화하기 위하여 크게 두가지의 부호화 방법을 제안한다.In order to encode the values of EMT_TU_index distributed differently according to the intra prediction modes mentioned in Embodiment 8, two encoding methods are largely proposed.
1. EMT(AMT) TU index값을 이진화(binarization)할 때에, fixed length 이진화 방법보다는 Truncated unary 방법을 사용하여 부호화한다. 표 7은 fixed length와 truncated unary 이진화의 예를 나타내었다.1. When binarizing an EMT (AMT) TU index value, it encodes using the Truncated unary method rather than the fixed length binarization method. Table 7 shows examples of fixed length and truncated unary binarization.
2. EMT TU 인덱스 값을 문맥 모델링(context modeling)을 통하여 부호화할 때, 인트라 예측 모드의 정보를 이용하여 문맥 모델을 결정한다. 표 8은 실시예 몇 가지를 나타내었다. 특히, 본 발명에서 명시한 인트라 예측 모드별 문맥 모델링 방법은 블록크기와 같은 다른 요소들과 함께 고려될 수도 있다.2. When encoding the EMT TU index value through context modeling, the context model is determined using the information of the intra prediction mode. Table 8 shows some examples. In particular, the intra prediction mode context modeling method specified in the present invention may be considered along with other factors such as block size.
실시예 10Example 10
본 실시예에서, AMT 용어를 MTS로 재정의한다. VVC(Versitile Video Coding Version 4, JVET-K1001-v4.docx)에서 관련된 신택스들과 시맨틱스이 개략적으로 아래의 표 9와 같이 요약된다. 추가적으로, 본 발명 및 몇몇 변경들이 아래의 실시예 11 및 이후의 설명에 대하여 설명된다.In this embodiment, the AMT term is redefined to MTS. Relevant syntaxes and semantics in VVC (Versitile Video Coding Version 4, JVET-K1001-v4.docx) are summarized as in Table 9 below. In addition, the present invention and some modifications are described with reference to Example 11 and the following description below.
표 9에서, sps_mts_intra_enabled_flag와 sps_mts_inter_enabled_flag에 대한 설명은 아래의 표 10과 같다.In Table 9, sps_mts_intra_enabled_flag and sps_mts_inter_enabled_flag are described in Table 10 below.
변환 유닛(transform unit)에 대한 신택스는 아래의 표 11 및 표 12와 같다. The syntax for the transform unit is shown in Tables 11 and 12 below.
레지듀얼 코딩 신택스(residual coding syntax)는 아래의 표 13 및 표 14와 같다.The residual coding syntax is shown in Tables 13 and 14 below.
도 13은 본 발명의 실시예에 따라 MTS에 기반하여 역변환 과정을 나타내는 흐름도이다.13 is a flowchart illustrating an inverse transformation process based on an MTS according to an embodiment of the present invention.
본 발명이 적용되는 디코딩 장치(200)는, sps_mts_intra_enabled_flag 또는 sps_mts_inter_enabled_flag를 획득할 수 있다(S1305). 여기서, sps_mts_intra_enabled_flag는 cu_mts_flag가 인트라 코딩 유닛의 레지듀얼 코딩 신택스에 존재하는지 여부를 나타낸다. 예를 들어, sps_mts_intra_enabled_flag = 0 이면, cu_mts_flag가 인트라 코딩 유닛의 레지듀얼 코딩 신택스에 존재하지 않고, sps_mts_intra_enabled_flag = 1 이면, cu_mts_flag가 인트라 코딩 유닛의 레지듀얼 코딩 신택스에 존재한다. 그리고, sps_mts_inter_enabled_flag는 cu_mts_flag가 인터 코딩 유닛의 레지듀얼 코딩 신택스에 존재하는지 여부를 나타낸다. 예를 들어, sps_mts_inter_enabled_flag = 0 이면, cu_mts_flag 가 인터 코딩 유닛의 레지듀얼 코딩 신택스에 존재하지 않고, sps_mts_inter_enabled_flag = 0 이면, cu_mts_flag가 인터 코딩 유닛의 레지듀얼 코딩 신택스에 존재한다.The decoding apparatus 200 to which the present invention is applied may acquire sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag (S1305). Here, sps_mts_intra_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the intra coding unit. For example, if sps_mts_intra_enabled_flag = 0, cu_mts_flag is not present in the residual coding syntax of the intra coding unit, and if sps_mts_intra_enabled_flag = 1, cu_mts_flag is present in the residual coding syntax of the intra coding unit. And, sps_mts_inter_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the inter coding unit. For example, if sps_mts_inter_enabled_flag = 0, cu_mts_flag is not present in the residual coding syntax of the inter coding unit, and if sps_mts_inter_enabled_flag = 0, cu_mts_flag is present in the residual coding syntax of the inter coding unit.
디코딩 장치(200)는 sps_mts_intra_enabled_flag 또는 sps_mts_inter_enabled_flag에 기초하여 cu_mts_flag를 획득할 수 있다(S1310). 예를 들어, sps_mts_intra_enabled_flag = 1 또는 sps_mts_inter_enabled_flag = 1 일 때, 디코딩 장치(200)는 cu_mts_flag를 획득할 수 있다. 여기서, cu_mts_flag는 MTS가 루마 변환 블록의 레지듀얼 샘플에 적용되는지 여부를 나타낸다. 예를 들어, cu_mts_flag = 0 이면 MTS가 루마 변환 블록의 레지듀얼 샘플에 적용되지 않고, cu_mts_flag = 1 이면 MTS가 루마 변환 블록의 레지듀얼 샘플에 적용된다.The decoding apparatus 200 may obtain cu_mts_flag based on sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag (S1310). For example, when sps_mts_intra_enabled_flag = 1 or sps_mts_inter_enabled_flag = 1, the decoding apparatus 200 may obtain cu_mts_flag. Here, cu_mts_flag indicates whether the MTS is applied to the residual sample of the luma transform block. For example, if cu_mts_flag = 0, the MTS is not applied to the residual sample of the luma transform block, and if cu_mts_flag = 1, the MTS is applied to the residual sample of the luma transform block.
디코딩 장치(200)는 cu_mts_flag에 기초하여 mts_idx를 획득할 수 있다(S1315). 예를 들어, cu_mts_flag = 1 일 때, 디코딩 장치(200)는 mts_idx를 획득할 수 있다. 여기서, mts_idx는 어떤 변환 커널이 현재 변환 블록의 수평 및/또는 수직 방향에 따른 루마 레지듀얼 샘플들에 적용되는지를 나타낸다.The decoding apparatus 200 may obtain mts_idx based on cu_mts_flag (S1315). For example, when cu_mts_flag = 1, the decoding apparatus 200 may obtain mts_idx. Here, mts_idx indicates which transform kernel is applied to luma residual samples along the horizontal and / or vertical direction of the current transform block.
예를 들어, mts_idx에 대해, 본 명세서에서 설명되는 실시예들 중 적어도 하나가 적용될 수 있다.For example, for mts_idx, at least one of the embodiments described herein may be applied.
디코딩 장치(200)는 mts_idx에 대응되는 변환 커널을 유도할 수 있다(S1320). 예를 들어, mts_idx에 대응되는 변환 커널은 수평 변환 및 수직 변환으로 구분되어 정의될 수 있다. The decoding apparatus 200 may induce a transform kernel corresponding to mts_idx (S1320). For example, a transform kernel corresponding to mts_idx may be defined by being divided into a horizontal transform and a vertical transform.
일 예로, 현재 블록에 mts가 적용되는 경우(즉, cu_mts_flag = 1), 디코딩 장치(200)는 현재 블록의 인트라 예측 모드에 기초하여 MTS 후보를 구성할 수 있다. 이 경우, 도 10의 디코딩 흐름도에 MTS 후보를 구성하는 단계가 더 포함될 수 있다. 그리고, 디코딩 장치(200)는 구성된 MTS 후보 중에서 mts_idx를 이용하여 현재 블록에 적용되는 MTS 후보를 결정할 수 있다. For example, when mts is applied to the current block (ie cu_mts_flag = 1), the decoding apparatus 200 may configure an MTS candidate based on the intra prediction mode of the current block. In this case, the decoding flowchart of FIG. 10 may further include configuring the MTS candidate. The decoding apparatus 200 may determine the MTS candidate applied to the current block by using mts_idx among the configured MTS candidates.
다른 일 예로, 수평 변환 및 수직 변환은 서로 다른 변환 커널이 적용될 수 있다. 다만, 본 발명은 이에 한정되지 않으며, 상기 수평 변환 및 수직 변환은 동일한 변환 커널이 적용될 수도 있다.As another example, different transform kernels may be applied to the horizontal transform and the vertical transform. However, the present invention is not limited thereto, and the same transform kernel may be applied to the horizontal transform and the vertical transform.
그리고, 디코딩 장치(200)는 변환 커널에 기초하여 역변환을 수행할 수 있다(S1325).In operation S1325, the decoding apparatus 200 may perform inverse transformation based on the transform kernel.
또한, 본 문서에서 MTS는 AMT 또는 EMT로도 표현될 수 있으며, 마찬가지로, mts_idx 도 AMT_idx, EMT_idx, AMT_TU_idx EMT_TU_idx 등과 같이 표현될 수 있으며, 본 발명은 이러한 표현에 한정되지 않는다.In this document, MTS may also be expressed as AMT or EMT. Likewise, mts_idx may also be expressed as AMT_idx, EMT_idx, AMT_TU_idx EMT_TU_idx, and the present invention is not limited thereto.
도 14는 본 발명의 실시예에 따라 MTS에 기반하여 디코딩을 수행하는 장치의 블록도이다.14 is a block diagram of an apparatus for performing decoding based on an MTS according to an embodiment of the present invention.
본 발명이 적용되는 디코딩 장치(200)는, 시퀀스 파라미터 획득부(1405), MTS 플래그 획득부(1410), MTS 인덱스 획득부(1415), 및 변환 커널 유도부(1420)를 포함할 수 있다.The decoding apparatus 200 to which the present invention is applied may include a sequence parameter obtaining unit 1405, an MTS flag obtaining unit 1410, an MTS index obtaining unit 1415, and a transform kernel deriving unit 1420.
시퀀스 파라미터 획득부(1405)는 sps_mts_intra_enabled_flag 또는 sps_mts_inter_enabled_flag를 획득할 수 있다. 여기서, sps_mts_intra_enabled_flag는 cu_mts_flag가 인트라 코딩 유닛의 레지듀얼 코딩 신택스에 존재하는지 여부를 나타내고, sps_mts_inter_enabled_flag는 cu_mts_flag가 인터 코딩 유닛의 레지듀얼 코딩 신택스에 존재하는지 여부를 나타낸다. 구체적인 예는 도 10과 관련된 설명이 적용될 수 있다.The sequence parameter obtainer 1405 may acquire sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag. Here, sps_mts_intra_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the intra coding unit, and sps_mts_inter_enabled_flag indicates whether cu_mts_flag exists in the residual coding syntax of the inter coding unit. As a specific example, the description associated with FIG. 10 may be applied.
MTS 플래그 획득부(1410)는 sps_mts_intra_enabled_flag 또는 sps_mts_inter_enabled_flag에 기초하여 cu_mts_flag를 획득할 수 있다. 예를 들어, sps_mts_intra_enabled_flag = 1 또는 sps_mts_inter_enabled_flag = 1 일 때, MTS 플래그 획득부(1415)는 cu_mts_flag를 획득할 수 있다. 여기서, cu_mts_flag는 MTS가 루마 변환 블록의 레지듀얼 샘플에 적용되는지 여부를 나타낸다. 구체적인 예는 상기 도 10과 관련된 설명이 적용될 수 있다.The MTS flag obtainer 1410 may acquire cu_mts_flag based on sps_mts_intra_enabled_flag or sps_mts_inter_enabled_flag. For example, when sps_mts_intra_enabled_flag = 1 or sps_mts_inter_enabled_flag = 1, the MTS flag acquisition unit 1415 may acquire cu_mts_flag. Here, cu_mts_flag indicates whether the MTS is applied to the residual sample of the luma transform block. As a specific example, the description associated with FIG. 10 may be applied.
MTS 인덱스 획득부(1415)는 cu_mts_flag에 기초하여 mts_idx를 획득할 수 있다. 예를 들어, cu_mts_flag = 1 일 때, MTS 인덱스 획득부(1415)는 mts_idx를 획득할 수 있다. 여기서, mts_idx는 어떤 변환 커널이 현재 변환 블록의 수평 및/또는 수직 방향에 따른 루마 레지듀얼 샘플들에 적용되는지를 나타낸다. 구체적인 예는 상기 도 10의 설명이 적용될 수 있다.The MTS index obtainer 1415 may acquire mts_idx based on cu_mts_flag. For example, when cu_mts_flag = 1, the MTS index obtainer 1415 may acquire mts_idx. Here, mts_idx indicates which transform kernel is applied to luma residual samples along the horizontal and / or vertical direction of the current transform block. As a specific example, the description of FIG. 10 may be applied.
변환 커널 유도부(1420)는 mts_idx에 대응되는 변환 커널을 유도할 수 있다. 그리고, 디코딩 장치(200)는 유도된 변환 커널에 기초하여 역변환을 수행할 수 있다.The translation kernel derivation unit 1420 may derive the translation kernel corresponding to mts_idx. In addition, the decoding apparatus 200 may perform inverse transform based on the derived transform kernel.
스케일된 변환 계수들에 대한 변환 과정을 위한 과정은 아래의 표 15와 같을 수 있다.The process for the transform process for the scaled transform coefficients may be as Table 15 below.
MTS 인덱스(mts_idx) 및 현재 CY의 예측 모드(CuPredMode)에 따른 수평 변환(trTypeHor) 및 수직 변환(trTypeVer)은 아래의 표 16과 같이 설정될 수 있다.The horizontal transform (trTypeHor) and vertical transform (trTypeVer) according to the MTS index (mts_idx) and the prediction mode (CuPredMode) of the current CY may be set as shown in Table 16 below.
실시예 11Example 11
본 발명의 실시예에서 아래와 같이 방향성 모드에 대해 2개의 MTS 후보들과 비방향성 모드에 대해 4개의 MTS 후보들을 사용할 수 있다.In the embodiment of the present invention, two MTS candidates for the directional mode and four MTS candidates for the non-directional mode may be used as follows.
A) 비방향성 모드(DC, 플래너)A) Non-directional mode (DC, planner)
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용된다.When the MTS index is zero, the DST-7 is used for horizontal and vertical conversion.
MTS 인덱스가 1일때, DST-7이 수직 변환에, DCT-8이 수평 변환에 사용된다.When the MTS index is 1, DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
MTS 인덱스가 2일때, DCT-8이 수직 변환에, DST-7이 수평 변환에 사용된다.When the MTS index is 2, the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
MTS 인덱스가 3일때, DCT-8이 수평 및 수직 변환에 사용된다.When the MTS index is 3, the DCT-8 is used for horizontal and vertical conversion.
B) 수평 그룹 모드에 속하는 모드들B) Modes belonging to the horizontal group mode
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용된다.When the MTS index is zero, the DST-7 is used for horizontal and vertical conversion.
MTS 인덱스가 1일때, DCT-8이 수직 변환에, DST-7이 수평 변환에 사용된다.When the MTS index is 1, the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
C) 수직 그룹 모드에 속하는 모드들C) modes belonging to the vertical group mode
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용된다.When the MTS index is zero, the DST-7 is used for horizontal and vertical conversion.
MTS 인덱스가 1일때, DST-7이 수직 변환에, DCT-8이 수평 변환에 사용된다.When the MTS index is 1, DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
여기서(67개의 모드들이 사용되는 VTM 2.0에서), 수평 그룹 모드들은 2 내지 34번 인트라 예측 모드들을 포함하고, 수직 모드들은 35번 내지 66번 인트라 예측 모드들을 포함함,Where (in VTM 2.0 where 67 modes are used), the horizontal group modes include intra prediction modes 2 to 34, and the vertical modes include intra prediction modes 35 to 66,
아래의 표 17은 비방향성(non-angular) 모드에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)를 나타낸다.Table 17 below shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for a non-angular mode.
표 18은 수평 그룹 모드에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)를 나타낸다.Table 18 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the horizontal group mode.
표 19는 수직 그룹 모드에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)를 나타낸다.Table 19 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the vertical group mode.
실시예 12Example 12
본 실시예에서, 모든 인트라 모드들에 대하여 3개의 MTS 후보들을 사용한다.In this embodiment, three MTS candidates are used for all intra modes.
MTS 인덱스가 0일 때, 수평 및 수직 변환에 대하여 DST-7이 사용된다.When the MTS index is zero, DST-7 is used for horizontal and vertical conversion.
MTS 인덱스가 1일 때, 수직 변환에 대하여 DST-7이 사용되고, 수평 변환에 대하여 DCT-8이 사용된다.When the MTS index is 1, DST-7 is used for the vertical transform and DCT-8 is used for the horizontal transform.
MTS 인덱스가 2일 때, 수직 변환에 대하여 DCT-8이 사용되고, 수평 변환에 대하여 DST-7이 사용된다.When the MTS index is 2, DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation.
표 20은 예측 모드(CuPredMode) 및 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)을 나타낸다.Table 20 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to a prediction mode (CuPredMode) and an MTS index (mts_idx).
실시예 13Example 13
본 실시예에서, 모든 인트라 예측 모드들에 대해 3개의 MTS 후보들을 사용한다.In this embodiment, three MTS candidates are used for all intra prediction modes.
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용된다.When the MTS index is zero, the DST-7 is used for horizontal and vertical conversion.
MTS 인덱스가 1일때, DST-7이 수직 변환에, DCT-8이 수평 변환에 사용된다.When the MTS index is 1, DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
MTS 인덱스가 2일때, DCT-8이 수직 변환에, DST-7이 수평 변환에 사용된다.When the MTS index is 2, the DCT-8 is used for vertical transformation and the DST-7 is used for horizontal transformation.
본 발명의 다른 실시예에서, 방향성 예측 모드들에 대해 2개의 MTS 후보들을, 비방향성 예측 모드들에 대해 3개의 MTS 후보들을 사용한다.In another embodiment of the present invention, two MTS candidates are used for directional prediction modes and three MTS candidates for non-directional prediction modes.
A) 비방향성 모드들(DC, 플래너)A) non-directional modes (DC, planner)
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용됨DST-7 is used for horizontal and vertical conversion when MTS index is 0
MTS 인덱스가 1일때, DST-7이 수직 변환에, DCT-8이 수평 변환에 사용됨When MTS index is 1, DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
MTS 인덱스가 2일때, DCT-8이 수직 변환에, DST-7이 수평 변환에 사용됨DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation when MTS index is 2.
B) 수평 그룹 모드에 해당하는 예측 모드들B) prediction modes corresponding to horizontal group mode
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용됨DST-7 is used for horizontal and vertical conversion when MTS index is 0
MTS 인덱스가 1일때, DCT-8이 수직 변환에, DST-7이 수평 변환에 사용됨DCT-8 is used for vertical transformation and DST-7 is used for horizontal transformation when MTS index is 1
C) 수직 그룹 모드에 해당하는 예측 모드들C) prediction modes corresponding to vertical group mode
MTS 인덱스가 0일때, DST-7이 수평 및 수직 변환에 사용됨DST-7 is used for horizontal and vertical conversion when MTS index is 0
MTS 인덱스가 1일때, DST-7이 수직 변환에, DCT-8이 수평 변환에 사용됨When MTS index is 1, DST-7 is used for vertical transformation and DCT-8 is used for horizontal transformation.
여기서(67개의 모드들이 사용되는 VTM 2.0에서), 수평 그룹 모드들은 2 내지 34번 인트라 예측 모드들을 포함하고, 수직 모드들은 35번 내지 66번 인트라 예측 모드들을 포함한다.Here (in VTM 2.0 where 67 modes are used), the horizontal group modes include 2 to 34 intra prediction modes and the vertical modes include 35 to 66 intra prediction modes.
표 21은 비방향성 모드들에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)을 나타낸다.Table 21 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for non-directional modes.
표 22은 수평 그룹 모드에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)을 나타낸다.Table 22 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the horizontal group mode.
표 23은 수직 그룹 모드에 대한 MTS 인덱스(mts_idx)에 따른 수평 변환 타입(trTypeHor) 및 수직 변환 타입(trTypeVer)을 나타낸다.Table 23 shows a horizontal transform type (trTypeHor) and a vertical transform type (trTypeVer) according to the MTS index (mts_idx) for the vertical group mode.
실시예 14Example 14
본 실시예에서, 1개의 MTS(예: DST-7)을 모든 모드들에 대해 사용한다. 이 경우, MTS 인덱스(mts_idx[x][y])는 요구되지 않으나 MTS 플래그(cu_mts_flag[x][y])가 변환 타입을 지시하기 위하여 표 24와 같이 사용될 수 있다.In this embodiment, one MTS (eg DST-7) is used for all modes. In this case, the MTS index (mts_idx [x] [y]) is not required, but the MTS flag cu_mts_flag [x] [y] may be used as shown in Table 24 to indicate a conversion type.
실시예 15Example 15
VTM 2.0에서의 변환 과정은 아래의 표 25와 같이 요약될 수 있다.The conversion process in VTM 2.0 can be summarized as shown in Table 25 below.
도 15는 본 발명의 실시예에 따른 변환 과정을 수행하는 디코딩 흐름도의 예를 도시한다.15 shows an example of a decoding flowchart for performing a conversion process according to an embodiment of the present invention.
본 발명이 적용되는 디코딩 장치(200)는, 변환 크기(nTbS)를 확인할 수 있다(S1505). 여기서, 상기 변환 크기(nTbS)는 스케일된 변환 계수들의 수평 샘플 크기를 나타내는 변수일 수 있다.The decoding apparatus 200 to which the present invention is applied may check the transform size nTbS (S1505). Here, the transform size nTbS may be a variable representing a horizontal sample size of scaled transform coefficients.
디코딩 장치(200)는, 변환 커널 타입(trType)을 확인할 수 있다(S1510). 여기서, 상기 변환 커널 타입(trType)은 변환 커널의 타입을 나타내는 변수일 수 있으며, 본 문서의 다양한 실시예들이 적용될 수 있다.The decoding apparatus 200 may check the transform kernel type trType (S1510). Here, the transform kernel type trType may be a variable indicating the type of the transform kernel, and various embodiments of the present disclosure may be applied.
디코딩 장치(200)는, 변환 크기(nTbS) 또는 변환 커널 타입 중 적어도 하나에 기초하여 변환 행렬 곱셈을 수행할 수 있다(S1515). 예를 들어, 변환 커널 타입이 0이면, 표 25의 (Equation 15-1)이 적용될 수 있고, 변환 커널 타입이 1 또는 2이면, 표 25의 (Equation 15-2)이 적용될 수 있다.The decoding apparatus 200 may perform transform matrix multiplication based on at least one of a transform size nTbS or a transform kernel type (S1515). For example, if the conversion kernel type is 0, (Equation 15-1) of Table 25 may be applied, and if the conversion kernel type is 1 or 2, (Equation 15-2) of Table 25 may be applied.
다른 예로, 변환 커널 타입이 1이고 변환 크기가 4이면, 변환 행렬 곱셈 수행시 표 25의 (Equation 15-3)의 변환 행렬이 적용될 수 있다.As another example, when the transform kernel type is 1 and the transform size is 4, the transform matrix of (Equation 15-3) in Table 25 may be applied when performing the transform matrix multiplication.
다른 예로, 변환 커널 타입이 1이고 변환 크기가 8이면, 변환 행렬 곱셈 수행시 표 25의 (Equation 15-4)의 변환 행렬이 적용될 수 있다.As another example, when the transform kernel type is 1 and the transform size is 8, when the transform matrix multiplication is performed, the transform matrix of (Equation 15-4) in Table 25 may be applied.
다른 예로, 변환 커널 타입이 1이고 변환 크기가 16이면, 변환 행렬 곱셈 수행시 표 25의 (Equation 15-3)의 변환 행렬이 적용될 수 있다.As another example, if the transform kernel type is 1 and the transform size is 16, the transform matrix shown in (Equation 15-3) of Table 25 may be applied when performing the transform matrix multiplication.
다른 예로, 변환 커널 타입이 1이고 변환 크기가 32이면, 기정의된 변환 행렬이 적용될 수 있다.As another example, if the transform kernel type is 1 and the transform size is 32, the predefined transform matrix may be applied.
디코딩 장치(200)는, 변환 행렬 곱셈에 기초하여 변환 샘플을 유도할 수 있다(S1520).The decoding apparatus 200 may derive the transform sample based on the transform matrix multiplication (S1520).
실시예 16Example 16
이전의 실시예에서 설명된 것과 같이, 변환 행렬은 기정의된 개수의 특정 계수들을 포함하고 이 계수들은 변환 행렬 내 여러 행에서 반복된다. 예를 들어, 4x4 DST-7은 아래의 수학식 1과 같이 정의된다.As described in the previous embodiment, the transformation matrix contains a predefined number of specific coefficients, which are repeated in several rows in the transformation matrix. For example, 4x4 DST-7 is defined as Equation 1 below.
여기서, 첫번째 행은 4개의 계수들 117, 219, 296, 및 336을 포함한다. 4개의 계수들은 나머지 부분에서도 반복된다. 본 실시예에서, 곱셈 연산을 제거하기 위한 계수 근사화 과정이 소개된다.Here, the first row contains four coefficients 117, 219, 296, and 336. The four coefficients are repeated in the rest. In this embodiment, a coefficient approximation procedure for eliminating multiplication operations is introduced.
예를 들어, 아래의 수학식 2는 변환 행렬 곱셈을 나타낸다.For example, Equation 2 below represents transform matrix multiplication.
수학식 2에서, transMatrix[i][j]와 x[j]는 변환 계수와 입력 값을 각각 나타낸다. 변환 계수와 입력 값들 사이의 곱셈 연산(transMatrix[i][j] * x[j])은 변환 계수들이 2의 제곱의 다항식의 형태로 표현되면 효율적인 방식(즉, 시프트 및 덧셈 연산)에 의해 제거될 수 있다. 만약 변환 계수가 65이면, 65*x[j]를 계산하는 것을 대신하여 64로 근사할 수 있고 그리하여 64*x[j]가 x[j] << 6와 동등하기 때문에 곱셈 과정이 제거될 수 있다. 다른 예에서, 변환 계수 280은 282로 근사될 수 있다. 그리하여, 280*x[j]는 282*x[j]로 대체될 수 있고, 이는 x[j] << 8 + x[j] << 4와 동등하다.In Equation 2, transMatrix [i] [j] and x [j] represent transform coefficients and input values, respectively. The multiplication operation between the transform coefficients and the input values (transMatrix [i] [j] * x [j]) is eliminated by efficient means (i.e. shift and add operations) if the transform coefficients are expressed in the form of a polynomial of power of two. Can be. If the conversion factor is 65, we can approximate 64 instead of calculating 65 * x [j], so the multiplication process can be eliminated because 64 * x [j] is equivalent to x [j] << 6. have. In another example, the transform coefficient 280 may be approximated to 282. Thus, 280 * x [j] can be replaced by 282 * x [j], which is equivalent to x [j] << 8 + x [j] << 4.
따라서, 모든 변환 계수 값들은 효율적인 방식(즉, 근사 에러를 최소화하는 적은 개수의 항들을 사용)으로 곱셈 과정을 제거하기 위해 2의 제곱의 조합으로 근사될 수 있다. 여기서, 원래의 변환 계수와 근사된 값 사이의 차이는 코딩 성능 손실을 감소시키도록 최소화될 필요가 있다. 다시 말해, 변환 계수 근사화는 각 기저 벡터의 직교성(orthogonality)에 손상을 가할 수 있으므로 에너지 압축에 있어서 덜 효율적일 수 있다. 그리하여, 원래 값과 근사 값의 차이는 직교성을 유지할 수 있도록(코딩 성능을 유지하기 위해) 최소화되어야 한다. 아래의 표 26은 근사화를 위한 항의 개수에 따라 어떻게 근사화 에러(표 26의 Diff)가 바뀌는 지를 나타낸다. 예를 들어, 2개 항 근사화에 대한 최소의 에러는 최대 30의 에러를 나타낸다. 그러나, 3개 항 근사화가 사용되면 최대 에러가 3으로 감소할 수 있다.Thus, all transform coefficient values can be approximated with a combination of powers of two to eliminate the multiplication process in an efficient manner (i.e. using a small number of terms that minimize approximation error). Here, the difference between the original transform coefficients and the approximated value needs to be minimized to reduce coding performance loss. In other words, transform coefficient approximation can be less efficient in energy compression because it can damage the orthogonality of each basis vector. Thus, the difference between the original value and the approximate value should be minimized to maintain orthogonality (to maintain coding performance). Table 26 below shows how the approximation error (Diff in Table 26) changes according to the number of terms for approximation. For example, the minimum error for two term approximation represents a maximum of 30 errors. However, if three term approximations are used the maximum error can be reduced to three.
더 작은 항 개수는 적은 개수의 연산(시프트 및 덧셈)을 요구하나 더 큰 코딩 성능 손실을 발생할 수 있다. 따라서 코딩 성능과 연산 복잡도 사이의 트레이드-오프(trade-off)가 있다. 아래의 실시예들에서, 근사화를 위한 몇몇 실용적인 설계가 소개된다.Smaller terms require fewer operations (shifts and additions) but can result in greater coding performance loss. Thus there is a trade-off between coding performance and computational complexity. In the following embodiments, some practical designs for approximation are introduced.
실시예 17Example 17
VTM 2.0에서, tyType이 1이고 nTbs가 8이면 아래의 수학식 3이 적용될 수 있다.In VTM 2.0, when tyType is 1 and nTbs is 8, Equation 3 below may be applied.
위 4x4 변환 행렬에서 8개의 변환 계수들이 변환 행렬 내에서 반복적으로 사용되고, 최대 3개 항들에 기반한 근사화는 아래 표 27과 같을 수 있다.Eight transform coefficients are repeatedly used in the transform matrix in the 4 × 4 transform matrix, and an approximation based on up to three terms may be as shown in Table 27 below.
위와 같은 근사화를 고려하여, 4x4 변환 행렬은 아래의 수학식 4와 같이 근사화될 수 있다.In consideration of the above approximation, the 4x4 transformation matrix may be approximated as in Equation 4 below.
실시예 18Example 18
VTM 2.0에서, trType은 1이고 nTbs가 4일때의 변환 행렬은 아래의 수학식 5와 같다.In VTM 2.0, the transformation matrix when trType is 1 and nTbs is 4 is expressed by Equation 5 below.
위 8x8 행렬에서 8개의 변환 계수들이 행렬 내에서 반복적으로 사용되고, 최대 3개 항들에 기반한 근사화는 아래의 표 28과 같을 수 있다.In the above 8x8 matrix, eight transform coefficients are repeatedly used in the matrix, and an approximation based on up to three terms may be as shown in Table 28 below.
위 근사화를 고려하여, 8x8 변환 행렬은 아래의 수학식 6과 같이 근사화 될 수 있다.In consideration of the above approximation, an 8x8 transformation matrix may be approximated as shown in Equation 6 below.
실시예 19Example 19
VTM 2.0에서, trType은 1이고 nTbs가 16일때의 변환 행렬은 아래의 수학식 7과 같다.In VTM 2.0, the transformation matrix when trType is 1 and nTbs is 16 is expressed by Equation 7 below.
위 16x16 행렬에서 16개의 변환 계수들이 행렬 내에서 반복적으로 사용되고, 최대 3개 항들에 기반한 근사화는 아래의 표 29와 같을 수 있다.In the 16 × 16 matrix, 16 transform coefficients are repeatedly used in the matrix, and an approximation based on up to three terms may be as shown in Table 29 below.
위 근사화를 고려하여, 16x16 변환 행렬은 아래의 수학식 8과 같이 근사화 될 수 있다.In consideration of the above approximation, the 16x16 transform matrix may be approximated as shown in Equation 8 below.
실시예 20Example 20
VTM 2.0에서, 32x32 행렬에서 32개의 변환 계수들이 행렬 내에서 반복적으로 사용되고, 최대 3개 항들에 기반한 근사화는 아래의 표 29와 같을 수 있다.In VTM 2.0, 32 transform coefficients in a 32x32 matrix are repeatedly used in the matrix, and an approximation based on up to three terms may be as shown in Table 29 below.
위 근사화를 고려하여, 32x32 변환 행렬은 앞서 설명한 것과 마찬가지로 정리될 수 있다.In view of the above approximation, the 32x32 transformation matrix can be arranged as described above.
실시예 21Example 21
본 실시예에서, DST-7 및 DCT-8 계수들은 파라미터화되고 요약된다(parameterized and summarized). 이전의 실시예들(실시에 16 내지 20)에서 언급된 것과 같이, 각 계수(파라미터)들은 아래의 수학식 9 내지 16과 같은 형태로 근사화 될 수 있다.In this embodiment, the DST-7 and DCT-8 coefficients are parameterized and summarized. As mentioned in the previous embodiments (16-16), the respective coefficients (parameters) may be approximated in the form of Equations 9-16 below.
도 16은 본 발명이 적용되는 실시예로서, 비디오 신호를 처리하기 위한 흐름도를 도시한다. 도 16의 흐름도는 디코딩 장치(200) 또는 역변환부(230)에 의해 수행될 수 있다.16 shows a flowchart for processing a video signal according to an embodiment to which the present invention is applied. The flowchart of FIG. 16 may be performed by the decoding apparatus 200 or the inverse transform unit 230.
S1605 단계에서, 디코딩 장치(200)는 현재 블록에 대한 변환을 위한 변환 커널을 지시하는 변환 인덱스를 확인한다. In operation S1605, the decoding apparatus 200 confirms a transform index indicating a transform kernel for transforming the current block.
S1610 단계에서, 디코딩 장치(200)는 변환 인덱스에 대응하는 변환 행렬을 결정한다. 여기서, 변환 행렬의 성분들은, 1의 시프트 연산 및 덧셈에 의해 구현된다. 예를 들어, 변환 행렬의 성분들 각각은, 1에 대한 좌측 시프트로 구성된 항들의 합에 의해 구현될 수 있다. 또한, 변환 행렬의 성분들 각각을 구성하는 항들의 개수는 3 보다 작도록 설정될 수 있다. 또한, 변환 행렬의 성분들 각각은, DCT-4, DST-7, 또는 DCT-8로부터 허용된 오차 범위 이내로 근사된 값으로 설정될 수 있다. 또한, 변환 행렬의 성분들 각각은, 허용된 오차 범위 및 상기 항들의 개수를 고려하여 결정될 수 있다.In operation S1610, the decoding apparatus 200 determines a transform matrix corresponding to the transform index. Here, the components of the transformation matrix are implemented by shift operation and addition of one. For example, each of the components of the transformation matrix may be implemented by the sum of terms consisting of a left shift of one. In addition, the number of terms constituting each of the components of the transformation matrix may be set to be less than three. In addition, each of the components of the transformation matrix may be set to a value approximated within an allowable error range from DCT-4, DST-7, or DCT-8. In addition, each of the components of the transformation matrix may be determined in consideration of the allowable error range and the number of terms.
S1615 단계에서, 디코딩 장치(200)는 시프트 연산과 덧셈 연산에 의해 근사화된 계수들을 갖는 변환 행렬을 현재 블록의 변환 계수들에 적용함으로써 레지듀얼 샘플들의 어레이를 생성한다.In operation S1615, the decoding apparatus 200 generates an array of residual samples by applying a transform matrix having coefficients approximated by a shift operation and an add operation to the transform coefficients of the current block.
도 17은 본 발명이 적용되는 실시예로서, 비디오 신호를 처리하기 위한 장치의 블록도의 예를 도시한다. 도 17의 비디오 신호 처리 장치는 도 1의 인코딩 장치 또는 도 2의 디코딩 장치에 해당할 수 있다. 17 shows an example of a block diagram of an apparatus for processing a video signal as an embodiment to which the present invention is applied. The video signal processing apparatus of FIG. 17 may correspond to the encoding apparatus of FIG. 1 or the decoding apparatus of FIG. 2.
영상 신호를 처리하는 영상 처리 장치(1700)는, 영상 신호를 저장하는 메모리(1720)와, 상기 메모리와 결합되면서 영상 신호를 처리하는 프로세서(1710)를 포함한다.The image processing apparatus 1700 for processing an image signal includes a memory 1720 storing an image signal and a processor 1710 coupled to the memory and processing the image signal.
본 발명의 실시예에 따른 프로세서(1710)는 영상 신호의 처리를 위한 적어도 하나의 프로세싱 회로로 구성될 수 있으며, 영상 신호를 인코딩 또는 디코딩을 위한 명령어들을 실행함으로써 영상 신호를 처리할 수 있다. 즉, 프로세서(1710)는 상술한 인코딩 또는 디코딩 방법들을 실행함으로써 원본 영상 데이터를 인코딩하거나 인코딩된 영상 신호를 디코딩할 수 있다.The processor 1710 according to an exemplary embodiment of the present invention may be configured with at least one processing circuit for processing an image signal, and may process the image signal by executing instructions for encoding or decoding the image signal. That is, the processor 1710 may encode the original image data or decode the encoded image signal by executing the above-described encoding or decoding methods.
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치 및 분산 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.In addition, the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium. Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium. The computer readable recording medium includes all kinds of storage devices and distributed storage devices in which computer readable data is stored. The computer-readable recording medium may be, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical disc. It may include a data storage device. The computer-readable recording medium also includes media embodied in the form of a carrier wave (for example, transmission over the Internet). In addition, the bitstream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
또한, 본 발명의 실시예는 프로그램 코드에 의한 컴퓨터 프로그램 제품으로 구현될 수 있고, 상기 프로그램 코드는 본 발명의 실시예에 의해 컴퓨터에서 수행될 수 있다. 상기 프로그램 코드는 컴퓨터에 의해 판독가능한 캐리어 상에 저장될 수 있다.In addition, embodiments of the present invention may be implemented as a computer program product by a program code, the program code may be performed on a computer by an embodiment of the present invention. The program code may be stored on a carrier readable by a computer.
상기 기술된 것과 같이, 본 발명에서 설명한 실시예들은 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다. 예를 들어, 각 도면에서 도시한 기능 유닛들은 컴퓨터, 프로세서, 마이크로 프로세서, 컨트롤러 또는 칩 상에서 구현되어 수행될 수 있다.As described above, the embodiments described herein may be implemented and performed on a processor, microprocessor, controller, or chip. For example, the functional units shown in each drawing may be implemented and performed on a computer, processor, microprocessor, controller, or chip.
또한, 본 발명이 적용되는 디코더 및 인코더는 멀티미디어 방송 송수신 장치, 모바일 통신 단말, 홈 시네마 비디오 장치, 디지털 시네마 비디오 장치, 감시용 카메라, 비디오 대화 장치, 비디오 통신과 같은 실시간 통신 장치, 모바일 스트리밍 장치, 저장 매체, 캠코더, 주문형 비디오(VoD) 서비스 제공 장치, OTT 비디오(Over the top video) 장치, 인터넷 스트리밍 서비스 제공 장치, 3차원(3D) 비디오 장치, 화상 전화 비디오 장치, 및 의료용 비디오 장치 등에 포함될 수 있으며, 비디오 신호 또는 데이터 신호를 처리하기 위해 사용될 수 있다. 예를 들어, OTT 비디오(Over the top video) 장치로는 게임 콘솔, 블루레이 플레이어, 인터넷 접속 TV, 홈시어터 시스템, 스마트폰, 태블릿 PC, DVR(Digital Video Recoder) 등을 포함할 수 있다.In addition, the decoder and encoder to which the present invention is applied include a multimedia broadcasting transmitting and receiving device, a mobile communication terminal, a home cinema video device, a digital cinema video device, a surveillance camera, a video chat device, a real time communication device such as video communication, a mobile streaming device, Storage media, camcorders, video on demand (VoD) service providing devices, OTT video (Over the top video) devices, Internet streaming service providing devices, three-dimensional (3D) video devices, video telephony video devices, and medical video devices. It can be used to process video signals or data signals. For example, the OTT video device may include a game console, a Blu-ray player, an Internet access TV, a home theater system, a smartphone, a tablet PC, a digital video recorder (DVR), and the like.
또한, 본 발명이 적용되는 처리 방법은 컴퓨터로 실행되는 프로그램의 형태로 생산될 수 있으며, 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 본 발명에 따른 데이터 구조를 가지는 멀티미디어 데이터도 또한 컴퓨터가 판독할 수 있는 기록 매체에 저장될 수 있다. 상기 컴퓨터가 판독할 수 있는 기록 매체는 컴퓨터로 읽을 수 있는 데이터가 저장되는 모든 종류의 저장 장치 및 분산 저장 장치를 포함한다. 상기 컴퓨터가 판독할 수 있는 기록 매체는, 예를 들어, 블루레이 디스크(BD), 범용 직렬 버스(USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크 및 광학적 데이터 저장 장치를 포함할 수 있다. 또한, 상기 컴퓨터가 판독할 수 있는 기록 매체는 반송파(예를 들어, 인터넷을 통한 전송)의 형태로 구현된 미디어를 포함한다. 또한, 인코딩 방법으로 생성된 비트스트림이 컴퓨터가 판독할 수 있는 기록 매체에 저장되거나 유무선 통신 네트워크를 통해 전송될 수 있다.In addition, the processing method to which the present invention is applied can be produced in the form of a program executed by a computer, and can be stored in a computer-readable recording medium. Multimedia data having a data structure according to the present invention can also be stored in a computer-readable recording medium. The computer readable recording medium includes all kinds of storage devices and distributed storage devices in which computer readable data is stored. The computer-readable recording medium may be, for example, a Blu-ray disc (BD), a universal serial bus (USB), a ROM, a PROM, an EPROM, an EEPROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, and an optical disc. It may include a data storage device. The computer-readable recording medium also includes media embodied in the form of a carrier wave (for example, transmission over the Internet). In addition, the bitstream generated by the encoding method may be stored in a computer-readable recording medium or transmitted through a wired or wireless communication network.
또한, 본 발명의 실시예는 프로그램 코드에 의한 컴퓨터 프로그램 제품으로 구현될 수 있고, 상기 프로그램 코드는 본 발명의 실시예에 의해 컴퓨터에서 수행될 수 있다. 상기 프로그램 코드는 컴퓨터에 의해 판독가능한 캐리어 상에 저장될 수 있다.In addition, embodiments of the present invention may be implemented as a computer program product by a program code, the program code may be performed on a computer by an embodiment of the present invention. The program code may be stored on a carrier readable by a computer.
이상에서 설명된 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.The embodiments described above are the components and features of the present invention are combined in a predetermined form. Each component or feature is to be considered optional unless stated otherwise. Each component or feature may be embodied in a form that is not combined with other components or features. It is also possible to combine some of the components and / or features to constitute an embodiment of the invention. The order of the operations described in the embodiments of the present invention may be changed. Some components or features of one embodiment may be included in another embodiment or may be replaced with corresponding components or features of another embodiment. It is obvious that the claims may be combined to form embodiments by combining claims that do not have an explicit citation relationship in the claims or as new claims by post-application correction.
본 발명에 따른 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예는 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.Embodiments according to the present invention may be implemented by various means, for example, hardware, firmware, software, or a combination thereof. In the case of a hardware implementation, an embodiment of the present invention may include one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), FPGAs ( field programmable gate arrays), processors, controllers, microcontrollers, microprocessors, and the like.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시예는 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고받을 수 있다.In the case of an implementation by firmware or software, an embodiment of the present invention may be implemented in the form of a module, procedure, function, etc. that performs the functions or operations described above. The software code may be stored in memory and driven by the processor. The memory may be located inside or outside the processor, and may exchange data with the processor by various known means.
본 발명은 본 발명의 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상술한 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니 되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다. It will be apparent to those skilled in the art that the present invention may be embodied in other specific forms without departing from the essential features of the present invention. Accordingly, the above detailed description should not be construed as limiting in all respects but should be considered as illustrative. The scope of the present invention should be determined by reasonable interpretation of the appended claims, and all changes within the equivalent scope of the present invention are included in the scope of the present invention.
이상, 전술한 본 발명의 바람직한 실시예는, 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가 등이 가능할 것이다.As mentioned above, preferred embodiments of the present invention are disclosed for purposes of illustration, and those skilled in the art can improve and change various other embodiments within the spirit and technical scope of the present invention disclosed in the appended claims below. , Replacement or addition would be possible.
Claims (10)
- 영상 신호를 처리하기 위한 방법에 있어서, In the method for processing a video signal,현재 블록에 대한 변환을 위한 변환 커널을 지시하는 변환 인덱스를 확인하는 단계;Identifying a transform index indicating a transform kernel for transforming the current block;상기 변환 인덱스에 대응하는 변환 행렬을 결정하는 단계;Determining a transform matrix corresponding to the transform index;상기 변환 행렬을 상기 현재 블록의 변환 계수들에 적용함으로써 레지듀얼 샘플들의 어레이를 생성하는 단계를 포함하고,Generating an array of residual samples by applying the transform matrix to transform coefficients of the current block,상기 변환 행렬의 성분들은,The components of the transformation matrix are1의 시프트 연산 및 덧셈에 의해 구현되는 것을 특징으로 하는 방법.A method characterized by being implemented by shift operation and addition of one.
- 제1항에 있어서, The method of claim 1,상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix is1에 대한 좌측 시프트로 구성된 항들의 합에 의해 구현되는 것을 특징으로 하는 방법.Characterized by a sum of terms consisting of a left shift to one.
- 제2항에 있어서, The method of claim 2,상기 변환 행렬의 성분들 각각을 구성하는 상기 항들의 개수는 3 보다 작도록 설정되는 것을 특징으로 하는 방법.And the number of terms constituting each of the components of the transformation matrix is set to be less than three.
- 제2항에 있어서, The method of claim 2,상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix isDCT(discrete cosine transform)-4, DST(discrete sine transform)-7, 또는 DCT-8로부터 허용된 오차 범위 이내로 근사된 값으로 설정되는 것을 특징으로 하는 방법.Characterized in that it is set to a value approximated within an allowable error range from discrete cosine transform (DCT) -4, discrete sine transform (DST) -7, or DCT-8.
- 제4항에 있어서, The method of claim 4, wherein상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix is상기 허용된 오차 범위 및 상기 항들의 개수를 고려하여 결정되는 것을 특징으로 하는 방법.Characterized in that it is determined in consideration of the allowed error range and the number of terms.
- 영상 신호를 처리하기 위한 장치에 있어서, An apparatus for processing a video signal,상기 영상 신호를 저장하는 메모리; 및A memory for storing the video signal; And상기 메모리와 결합된 프로세서를 포함하고,A processor coupled with the memory,상기 프로세서는,The processor,현재 블록에 대한 변환을 위한 변환 커널을 지시하는 변환 인덱스를 확인하고,Check the conversion index pointing to the conversion kernel for the conversion for the current block,상기 변환 인덱스에 대응하는 변환 행렬을 결정하고,Determine a transform matrix corresponding to the transform index,상기 변환 행렬을 상기 현재 블록의 변환 계수들에 적용함으로써 레지듀얼 샘플들의 어레이를 생성하도록 설정되고,Apply the transform matrix to the transform coefficients of the current block to generate an array of residual samples,상기 변환 행렬의 성분들은,The components of the transformation matrix are1의 시프트 연산 및 덧셈에 의해 구현되는 것을 특징으로 하는 장치.Apparatus characterized by being implemented by shift operation and addition of one.
- 제6항에 있어서, The method of claim 6,상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix is1에 대한 좌측 시프트로 구성된 항들의 합에 의해 구현되는 것을 특징으로 하는 장치.And implemented by the sum of terms consisting of a left shift to one.
- 제7항에 있어서, The method of claim 7, wherein상기 변환 행렬의 성분들 각각을 구성하는 상기 항들의 개수는 3 보다 작도록 설정되는 것을 특징으로 하는 장치.And the number of terms constituting each of the components of the transformation matrix is set to be less than three.
- 제7항에 있어서, The method of claim 7, wherein상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix isDCT(discrete cosine transform)-4, DST(discrete sine transform)-7, 또는 DCT-8로부터 허용된 오차 범위 이내로 근사된 값으로 설정되는 것을 특징으로 하는 방법.Characterized in that it is set to a value approximated within an allowable error range from discrete cosine transform (DCT) -4, discrete sine transform (DST) -7, or DCT-8.
- 제9항에 있어서, The method of claim 9,상기 변환 행렬의 성분들 각각은, Each of the components of the transformation matrix is상기 허용된 오차 범위 및 상기 항들의 개수를 고려하여 결정되는 것을 특징으로 하는 장치.And determine the allowable error range and the number of terms.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862726302P | 2018-09-02 | 2018-09-02 | |
US62/726,302 | 2018-09-02 | ||
US201862727528P | 2018-09-05 | 2018-09-05 | |
US62/727,528 | 2018-09-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020046085A1 true WO2020046085A1 (en) | 2020-03-05 |
Family
ID=69645328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2019/011249 WO2020046085A1 (en) | 2018-09-02 | 2019-09-02 | Method and apparatus for processing image signal |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2020046085A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120098500A (en) * | 2011-02-25 | 2012-09-05 | 삼성전자주식회사 | Method for transforming and inverse-transforming image, and apparatus using the same |
KR20180063186A (en) * | 2015-09-29 | 2018-06-11 | 퀄컴 인코포레이티드 | Non-separable second-order conversion for video coding |
KR20180085526A (en) * | 2017-01-19 | 2018-07-27 | 가온미디어 주식회사 | A method for encoding and decoding video using a processing of an efficent transform |
-
2019
- 2019-09-02 WO PCT/KR2019/011249 patent/WO2020046085A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120098500A (en) * | 2011-02-25 | 2012-09-05 | 삼성전자주식회사 | Method for transforming and inverse-transforming image, and apparatus using the same |
KR20180063186A (en) * | 2015-09-29 | 2018-06-11 | 퀄컴 인코포레이티드 | Non-separable second-order conversion for video coding |
KR20180085526A (en) * | 2017-01-19 | 2018-07-27 | 가온미디어 주식회사 | A method for encoding and decoding video using a processing of an efficent transform |
Non-Patent Citations (2)
Title |
---|
JIANLE CHEN: "Algorithm Description of Joint Exploration Test Model 1", JOINT VIDEO EXPLORATION TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11, DOCUMENT: JVET-A1001, 21 October 2015 (2015-10-21) * |
MEHDI SALEHIFAR: "CE 6.2.6: Reduced Secondary Transform (RST", JOINT VIDEO EXPERTS TEAM (JVET) OF ITU-T SG 16 WP 3 AND ISO/IEC JTC 1/SC 29/WG 11 , JVET-K0099, 18 July 2018 (2018-07-18) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020149648A1 (en) | Image coding method and device using transform skip flag | |
WO2020009556A1 (en) | Transform-based image coding method and device | |
WO2020046092A1 (en) | Method for encoding/decoding video signals, and device therefor | |
WO2020046091A1 (en) | Image coding method based on multiple transform selection and device therefor | |
WO2020046086A1 (en) | Method and apparatus for processing image signal | |
WO2019203610A1 (en) | Method for processing image and device therefor | |
WO2020050651A1 (en) | Multiple transform selection-based image coding method and device therefor | |
WO2020162690A1 (en) | Method and device for processing video signal using reduced transform | |
WO2020116961A1 (en) | Image coding method based on secondary transform, and device therefor | |
WO2019216714A1 (en) | Method for processing image on basis of inter-prediction mode and apparatus therefor | |
WO2019235822A1 (en) | Method and device for processing video signal by using affine motion prediction | |
WO2021040487A1 (en) | Image decoding method for residual data coding in image coding system, and apparatus therefor | |
WO2020171673A1 (en) | Video signal processing method and apparatus for intra prediction | |
WO2020130661A1 (en) | Video coding method on basis of secondary transform, and device for same | |
WO2019194463A1 (en) | Method for processing image and apparatus therefor | |
WO2020046084A1 (en) | Method and device for processing image signal | |
WO2021025526A1 (en) | Video coding method on basis of transformation, and device therefor | |
WO2020256482A1 (en) | Transform-based image coding method and device therefor | |
WO2021025530A1 (en) | Method and apparatus for image coding based on transform | |
WO2021006700A1 (en) | Image decoding method using flag for residual coding method in image coding system, and device for same | |
WO2020130581A1 (en) | Method for coding image on basis of secondary transform and device therefor | |
WO2019245228A1 (en) | Method and device for processing video signal using affine motion prediction | |
WO2021158048A1 (en) | Image decoding method related to signaling of flag indicating whether tsrc is available, and device therefor | |
WO2020185005A1 (en) | Transform-based image coding method and device therefor | |
WO2021034100A1 (en) | Image decoding method employing lossless coding in image coding system, and apparatus therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 19856018 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 19856018 Country of ref document: EP Kind code of ref document: A1 |