Intra prediction method, video encoding apparatus and video decoding apparatus performing same
The intra prediction method using a block vector and DM flag efficiently encodes high-resolution images by improving compression performance and reducing data transmission costs, addressing the challenge of high-resolution image encoding.
Patent Information
- Application Number
- PCT/KR2024/014496
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-09-27
- Filing Date
- 2024-09-25
- Publication Date
- 2025-04-03
AI Technical Summary
The increasing demand for high-resolution and high-quality images has led to a challenge in efficiently encoding and transmitting high-resolution image data, which results in higher storage and transmission costs due to the increased amount of information.
An intra prediction method using a block vector to indicate the location of a reference block on the screen, along with a DM flag to determine if the chroma block is encoded in direct mode, and allowing IBC mode for chroma blocks when the corresponding luma block is encoded in IBC or Intratmp mode.
This method improves image compression performance by efficiently performing intra predictions, reducing the amount of data required for intra prediction, and thus lowering storage and transmission costs.
Smart Images

Figure KR2024014496_03042025_PF_FP_ABST
Abstract
Description
Intra prediction method, image encoding and decoding device performing the same
[0001] The present invention relates to a method for performing intra prediction using a block vector indicating the location of a reference block within a screen.
[0002] Compression encoding of video signals is achieved by removing redundant information by considering spatial correlation, temporal correlation, and probabilistic correlation.
[0003] Among the prediction methods used in image encoding, intra prediction is a method of predicting the current block by referring to samples that have already been reconstructed around the block to be encoded.
[0004] Recently, due to the development of various media and data transmission media, user demand for high-resolution, high-quality images is increasing.
[0005] Since the encoded data of a high-resolution image contains more information than the encoded data of a low-resolution or medium-resolution image, the cost of transmitting or storing it increases.
[0006] To solve this problem, research is ongoing on encoding and decoding methods to effectively reduce the amount of encoding data for high-resolution images.
[0007] The purpose of the present invention is to provide an intra prediction method capable of improving image compression performance by efficiently performing intra prediction, and an image encoding and decoding device performing the method.
[0008] An intra prediction method according to an embodiment of the present invention performs intra prediction using a block vector indicating a position of a reference block within a screen, and includes the steps of: obtaining a DM flag indicating whether a chroma block is encoded in a direct mode; if the chroma block is encoded in a direct mode according to the obtained DM flag, determining whether an IBC (Intra Block Copy) mode is allowed for the chroma block; if the IBC mode is allowed for the chroma block, determining whether a luma block corresponding to the chroma block is encoded in an IBC or IntraTMP (Intra Template Matching Prediction) mode; and if the corresponding luma block is encoded in an IBC or IntraTMP mode, obtaining a block vector for the chroma block using a block vector for the corresponding luma block.
[0009] The video encoding device according to one embodiment of the present invention performs the intra prediction method as described above, inserts an IBC enable flag indicating whether an IBC mode is allowed for a chroma block into at least one of a sequence parameter set (SPS), a picture parameter set (PPS), a picture peer (PH), and a slice header (SH), and inserts the DM flag into a syntax for the chroma block and transmits it as a bitstream.
[0010] The image decoding device according to one embodiment of the present invention performs the intra prediction method as described above, parses a bitstream, and obtains an IBC enable flag indicating whether an IBC mode is allowed for a chroma block from at least one of a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Picture Peer (PH), and a Slice Header (SH), and obtains the DM flag from a syntax for the chroma block.
[0011] Meanwhile, at least some steps of the above methods may be implemented as a computer-readable recording medium recording a program for execution on a computer, or may be provided as a program itself.
[0012] According to one embodiment of the present invention, by first checking whether a chroma block is encoded in direct mode using a DM flag, and then, in the case of direct mode, determining the intra prediction mode of the chroma block according to the intra prediction mode of the luma block corresponding to the chroma block without additional intra prediction mode information, compression performance can be improved and the amount of information transmitted for intra prediction can be reduced.
[0013] According to another embodiment of the present invention, when performing intra prediction using a block vector indicating the position of a reference block within a screen, if the IBC mode is allowed for a chroma block encoded in direct mode, the intra prediction of a chroma block can be efficiently performed by obtaining a block vector for the chroma block using a block vector for a luma block encoded in IBC or IntraTMP mode corresponding to the chroma block.
[0014] Figure 1 is a block diagram illustrating the configuration and operation of a video encoder for encoding an image.
[0015] Figure 2 is a drawing for explaining an embodiment of a method for dividing blocks of an image.
[0016] Figures 3 and 4 are drawings for explaining embodiments of an intra prediction method.
[0017] Figure 5 is a block diagram illustrating the configuration and operation of a video decoder for decoding an image.
[0018] FIG. 6 is a diagram illustrating an example of an intra prediction method in IBC (Intra Block Copy) mode.
[0019] FIG. 7 is a diagram illustrating an example of an intra prediction method in IntraTMP (Intra Template Matching Prediction) mode.
[0020] FIG. 8 is a flowchart illustrating an intra prediction method using a block vector according to an embodiment of the present invention.
[0021] FIG. 9 is a drawing for explaining an example of a luma area and a chroma area divided into a dual tree structure.
[0022] Figures 10 to 15 are drawings for explaining embodiments of a method for obtaining a block vector for intra prediction.
[0023] Hereinafter, with reference to the attached drawings, a method and device for encoding and decoding an image according to an embodiment of the present invention will be described in detail.
[0024] In the following description of the present invention, detailed descriptions of related known functions or configurations will be omitted if they are deemed to unnecessarily obscure the gist of the invention. Furthermore, the terms described below are defined in light of their functions within the present invention and may vary depending on the intent or custom of the user or operator. Therefore, their definitions should be based on the overall content of the present invention.
[0025] In addition, in order to efficiently explain the technical components that make up the present invention, the preferred embodiments of the present invention implemented below omit, as much as possible, the system functional components that are already provided in each system functional configuration or are commonly provided in the technical field to which the present invention belongs, and focus on explaining the functional components that must be additionally provided for the present invention.
[0026] Anyone having ordinary skill in the art to which the present invention pertains will be able to easily understand the functions of components that have been conventionally used among the functional configurations that are not illustrated below, and will also be able to clearly understand the relationship between the components omitted as described above and the components added for the present invention.
[0027] In this specification, a device that encodes an image to generate a video signal bitstream is referred to as an encoding device, an encoding device, or an encoder, and a device that decodes the video signal bitstream to restore an image is referred to as a decoding device, a decoding device, or a decoder.
[0028] A pixel or pel is the smallest unit that constitutes an image, and the terms pixel and sample can be used interchangeably. A sample can generally represent a pixel or a pixel value, or it can represent only a pixel or pixel value of the luminance component, or only a pixel or pixel value of the chroma component.
[0029] In addition, the unit is used to refer to a basic unit of image processing or a specific location of a picture, and represents an image area including at least one of a luminance component and a chrominance component. Specifically, the unit can be used as a concept including a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU), and a transform unit (TU). In addition, a block represents an image area including a specific component among luminance components and chrominance components, and an MxN block can represent a set of samples or transform coefficients consisting of M columns and N rows. Here, the terms unit, block, partition, signal, and area may be used interchangeably.
[0030] Meanwhile, a picture refers to a field or a frame, and these can be used interchangeably. For example, if the image is an interlaced image, one frame is divided into an odd (or odd, top) field and an even (or even, bottom) field, and each field is composed of a single picture unit, which can be encoded or decoded. If the image is a progressive image, one frame can be composed as a picture, which can be encoded or decoded.
[0031]
[0032] FIG. 1 is a block diagram illustrating an encoding device according to an embodiment of the present invention, and is intended to explain the configuration and operation of a video encoder for encoding an image.
[0033] Referring to FIG. 1, a video encoder (100) may be configured to include a transformation unit (110), a quantization unit (120), an inverse quantization unit (130), an inverse transformation unit (140), a filtering unit (150), a prediction unit (160), a DPB (Decoded Picture Buffer, 170), and an entropy coding unit (180).
[0034] The conversion unit (110) converts the residual signal, which is the difference between the input video signal and the prediction signal generated by the prediction unit (160), to obtain a conversion coefficient value.
[0035] For example, the Discrete Cosine Transform (DCT), the Discrete Sine Transform (DST), or the Wavelet Transform can be used.
[0036] The transform kernel used for transforming the residual block may be a transform kernel having separable vertical and horizontal transform properties. In this case, the transform for the residual block may be performed separately as vertical and horizontal transforms. For example, the encoder may perform a vertical transform by applying the transform kernel in the vertical direction of the residual block. Alternatively, the encoder may perform a horizontal transform by applying the transform kernel in the horizontal direction of the residual block.
[0037] Meanwhile, the transform kernel may be used as a term referring to a set of parameters used for transforming the residual signal, such as a transform matrix, a transform array, a transform function, or a transform, and may be any one of a plurality of available kernels, and transform kernels based on different transform types may be used for each of the vertical transform and the horizontal transform.
[0038] The transformation coefficients may be distributed such that higher coefficients are distributed toward the upper left corner of the block, and coefficients closer to '0' are distributed toward the lower right corner of the block. Furthermore, as the current block size increases, there is a possibility that many '0' coefficients exist in the lower right area. To reduce the transformation complexity of large blocks, only the upper left area can be left, and the remaining areas can be reset to '0'.
[0039] Additionally, error signals may exist only in some regions of a coding block, in which case the conversion process may be performed only on some arbitrary regions. For example, in a block of size 2Nx2N, error signals may exist only in the first 2NxN block, in which case the conversion process may be performed only on the first 2NxN block, but the conversion process may not be performed on the second 2NxN block and may not be encoded or decoded.
[0040] The encoder may perform additional transformations before the transform coefficients are quantized. The transformation method described above may be referred to as a primary transform, and the additional transformation may be referred to as a secondary transform.
[0041] The secondary transform can be optional for each residual block, for example, the encoder can improve coding efficiency by performing the secondary transform for areas where it is difficult to concentrate energy in the low-frequency region using only the primary transform.
[0042] Specifically, a secondary transformation may be additionally performed on blocks in which residual values appear significantly in directions other than the horizontal or vertical direction of the residual block, and the secondary transformation may not be performed separately into vertical transformation and horizontal transformation, unlike the primary transformation. The secondary transformation as described above may be referred to as a low frequency non-separable transform (LFNST).
[0043] The quantization unit (120) quantizes the transformation coefficient value output from the transformation unit (110).
[0044] In order to increase coding efficiency, a method is used in which, instead of coding the picture signal as is, a picture is predicted using an already coded area through a prediction unit (160), and a restored picture is obtained by adding a residual value between the original picture and the predicted picture to the predicted picture.
[0045] To avoid mismatches between the encoder and decoder, when performing prediction in the encoder, information available in the decoder must also be used, and for this purpose, the encoder can perform a process of reconstructing the current block that it has encoded.
[0046] The inverse quantization unit (130) inversely quantizes the transform coefficient values, and the inverse transformation unit (140) restores the residual values using the inverse quantized transform coefficient values.
[0047] The filtering unit (150) performs filtering operations using a deblocking filter, a sample adaptive offset (SAO), an adaptive loop filter (ALF), etc. to improve the quality of the restored picture and enhance encoding efficiency.
[0048] A deblocking filter is a filter for removing distortion within a block generated at the boundary between blocks in a restored picture. The encoder can determine whether to apply a deblocking filter to a boundary based on the distribution of pixels included in several columns or rows based on an arbitrary boundary within a block.
[0049] When a deblocking filter is applied, the filtering unit (150) can apply a long filter, a strong filter, or a weak filter depending on the deblocking filtering strength, and can process horizontal filtering and vertical filtering in parallel.
[0050] Sample Adaptive Offset (SAO) can be used to correct the offset from the original image on a pixel-by-pixel basis for a residual block to which a deblocking filter is applied. In order to correct the offset for a specific picture, the filtering unit (150) can use a method (Band Offset) that divides the pixels included in the image into a certain number of regions, determines the regions to perform offset correction, and applies the offset to the regions. In addition, the filtering unit (150) can use a method (Edge Offset) that applies the offset by considering the edge information of each pixel.
[0051] Adaptive Loop Filtering (ALF) is a method that divides pixels in an image into predetermined groups, determines a filter to be applied to each group, and performs differential filtering for each group. Information regarding whether to apply an adaptive loop filter can be signaled on a coding unit basis, and the shape and filter coefficients of the ALF filter to be applied can vary depending on the block. Furthermore, the same adaptive loop filter can be applied regardless of the characteristics of the target block.
[0052] The filtered picture can be stored in DPB (170) to be used as a reference picture.
[0053] The prediction unit (160) includes an intra / IBC prediction unit (161) and an inter prediction unit (165). The intra / IBC prediction unit (161) performs intra prediction and IBC prediction within the current picture, and the inter prediction unit (165) performs inter prediction to predict the current picture using a reference picture stored in the DPB (170).
[0054] The intra / IBC prediction unit (161) performs intra prediction from restored areas within the current picture and transmits intra encoding information to the entropy coding unit (180). Here, the intra encoding information may include at least one of an intra prediction mode, an MPM (Most Probable Mode) flag, an MPM index, and information about a reference sample.
[0055] Additionally, the intra / IBC prediction unit (161) can perform IBC (Intra BLock Copy) prediction from restored samples within the current picture and transmit IBC encoding information to the entropy coding unit (180).
[0056] In this case, the intra / IBC prediction unit (161) obtains a block vector value indicating a reference area used for prediction of the current area by referring to a specific area within the current picture, and can perform IBC prediction using the obtained block vector value.
[0057] The intra / IBC prediction unit (161) can transmit IBC encoding information including at least one of the size information of the reference area and block vector information (index information for block vector prediction of the current block within the motion candidate list, block vector difference information) to the entropy coding unit (160).
[0058] The inter prediction unit (165) refers to a specific area of the restored reference picture to find the part most similar to the current area, obtains a motion vector value which is the distance between the areas, and transmits motion information (reference direction indication information (L0 prediction, L1 prediction, bidirectional prediction), reference picture index, motion vector information, etc.) for the obtained reference area to the entropy coding unit (180).
[0059] Additionally, the inter prediction unit (165) performs motion compensation using motion information to generate a prediction block for the current block, and transmits inter encoding information including motion information for the reference area to the entropy coding unit (180).
[0060] Meanwhile, the quantized transform coefficients in the form of a two-dimensional array can be rearranged into a one-dimensional array for entropy coding.
[0061] The method of scanning the quantized transform coefficients can be determined according to the size of the transform block and the intra prediction mode, and diagonal, vertical, and horizontal scans can be applied, and the scan information can be signaled on a block-by-block basis or derived from the decoder according to a set rule.
[0062] The entropy coding unit (180) generates a bitstream by entropy coding information representing quantized transform coefficients, intra-coding information, and inter-coding information, and for this purpose, a variable length coding (VLC) method and an arithmetic coding method can be used.
[0063] Variable-length coding (VLC) converts input symbols into a series of codewords, each of which can be of variable length. For example, frequently occurring symbols can be represented by shorter codewords, while less frequently occurring symbols can be represented by longer codewords.
[0064] As a variable length coding method, a context-based adaptive variable length coding (CAVLC) method can be used.
[0065] Arithmetic coding converts consecutive data symbols into a single prime number using the probability distribution of each data symbol, thereby obtaining the optimal number of prime number bits required to express each symbol.
[0066] As an arithmetic coding method, the context-based adaptive binary arithmetic code (CABAC) method can be used.
[0067] CABAC is a binary arithmetic encoding method that utilizes multiple context models generated based on experimentally derived probabilities. The context models can also be referred to as context models. First, if the symbols are not in binary form, the encoder binarizes each symbol using methods such as exp-Golomb. The binarized 0s and 1s can be represented as bins.
[0068] The CABAC initialization process is divided into context initialization and arithmetic coding initialization. Context initialization initializes the occurrence probability of each symbol, determined by the symbol type, quantization parameter (QP), and slice type (I, P, B). A context model with this initialization information can use probability-based values obtained through experiments.
[0069] The context model provides the probability of occurrence of the Least Probable Symbol (LPS) or Most Probable Symbol (MPS) for the symbol currently being coded, and information (valMPS) on which empty value between 0 and 1 corresponds to the MPS.
[0070] One of several context models is selected through a context index (ctxIdx), and the context index can be derived through information of the block currently to be encoded or information of surrounding blocks.
[0071] Initialization for binary arithmetic coding is performed based on the probability model selected from the context model. Binary arithmetic coding is performed by dividing the data into probability intervals based on the occurrence probabilities of 0 and 1, and then encoding the probability interval corresponding to the bin to be processed becomes the entire probability interval for the next bin to be processed.
[0072] The location information within the probability interval processed for the last bin is output. However, since the probability interval cannot be infinitely divided, if it shrinks to a certain size, a renormalization process is performed to expand the probability interval and output the corresponding location information. Furthermore, after each bin is processed, a probability update process can be performed, which sets a new probability for the next bin to be processed based on the information from the processed bin.
[0073] As described above, the generated bitstream is encapsulated into NAL (Network Abstraction Layer) units as basic units.
[0074] NAL units are divided into VCL (Video Coding Layer) NAL units that contain video data and non-VCL NAL units that contain parameter information for decoding video data, and there may be various types of VCL or non-VCL NAL units.
[0075] A NAL unit consists of NAL header information and data, a Raw Byte Sequence Payload (RBSP). The NAL header information includes summary information about the RBSP. The RBSP of a VCL NAL unit contains an integer number of encoded coding tree units.
[0076] In order to decode a bitstream in a decoder, the bitstream must first be divided into NAL units, and then each divided NAL unit must be decoded. Meanwhile, the information required for decoding the bitstream can be transmitted as part of a picture parameter set (PPS), a sequence parameter set (SPS), a video parameter set (VPS), etc.
[0077] Meanwhile, the configuration and operation of the encoder described with reference to FIG. 1 are according to one embodiment of the present invention, and some configurations may be omitted or added as needed.
[0078] Additionally, a single picture may be encoded by dividing it into sub-pictures, slices, tiles, etc. A sub-picture may include one or more slices or tiles. When a single picture is encoded by dividing it into multiple slices or tiles, all slices or tiles within the picture must be decoded before it can be displayed on the screen.
[0079] When a single picture is encoded into multiple subpictures, only any subpicture can be decoded and displayed on the screen. A slice can contain multiple tiles or subpictures, and a tile can contain multiple subpictures or slices.
[0080] Subpictures, slices, and tiles can be encoded or decoded independently of each other, which is effective for parallel processing and processing speed improvement, but the amount of bits may increase because the encoded information of adjacent subpictures, slices, and tiles cannot be used.
[0081] And subpictures, slices, and tiles can be encoded by being divided into multiple coding tree units (CTUs).
[0082] A coding tree unit can be composed of a luminance coding tree block (CTB) of size 128x128 and two chrominance coding tree blocks of size 64x64.
[0083] A single coding tree unit may be undivided and constitute a single coding unit (CU) itself, or may be divided into multiple coding units as illustrated in Fig. 2. A coding unit may be composed of a luminance coding block (CB) and two chrominance coding blocks.
[0084] A coding unit may consist of one transform unit (TU), or may be split into multiple transform units. A transform unit may consist of a luminance transform block (TB) and two chrominance transform blocks.
[0085] Here, a coding unit represents a basic unit for processing a picture in the process of prediction, transformation, quantization, entropy coding, and decoding, and the size and shape of a coding unit within a picture may not be constant.
[0086] A coding unit may have a square or non-square shape, and a rectangular coding unit may include a vertical coding unit whose height is greater than its width and a horizontal coding unit whose width is greater than its height.
[0087] The coding tree unit is first partitioned into a Quad Tree (QT) structure, such that a single node of size 2NX2N can be partitioned into four nodes of size NXN. Furthermore, the Quad Tree partitioning can be performed recursively, and not all nodes need to be partitioned to the same depth.
[0088] Leaf nodes of a quadtree can be further partitioned into a multi-type tree (MTT) structure. For example, in a multi-type tree structure, a single node can be partitioned into a binary or ternary tree structure with horizontal or vertical partitioning. Accordingly, a multi-type tree structure can have four partitioning structures: vertical binary partitioning, horizontal binary partitioning, vertical ternary partitioning, and horizontal ternary partitioning.
[0089] In each tree structure, both the width and height of a node can have a power of 2. For example, in a binary tree (BT) structure, a node of size 2NX2N can be split into two NX2N nodes by vertical binary splitting, and into two 2NXN nodes by horizontal binary splitting.
[0090] Also, in the Ternary Tree (TT) structure, a node of size 2NX2N can be split into nodes of size (N / 2)X2N, NX2N, and (N / 2)X2N by vertical ternary splitting, and into nodes of size 2NX(N / 2), 2NXN, and 2NX(N / 2) by horizontal ternary splitting. This multi-type tree splitting can be performed recursively.
[0091] A leaf node of a multi-type tree can be a coding unit. If the coding unit is no larger than the maximum transformation length, the coding unit can be used as a unit for prediction and transformation without further splitting. On the other hand, if the width or height of the coding unit is larger than the maximum transformation length, the coding unit can be split into multiple transformation units without explicit signaling regarding the splitting.
[0092] The tree partitioning structure as described above may have the same shape (Single Tree) for the luminance block and the chrominance block, or different shapes (Dual Tree) for the luminance block and the chrominance block.
[0093] Meanwhile, the block division from the coding tree unit (CTU) to the coding unit (CU) as described above can be performed through a rate-distortion optimization (RDO) process, whereby the division structure with the smallest rate-distortion cost (RD cost) value within the allowable size and depth conditions is selected to determine the final coding unit.
[0094] Hereinafter, embodiments of the intra prediction method will be described in more detail with reference to FIGS. 3 and 4.
[0095] For intra prediction, intra prediction mode information indicating an intra prediction direction may be signaled, and the intra prediction mode information indicates any one of a plurality of intra prediction modes constituting an intra prediction mode set.
[0096] As illustrated in FIG. 3, the intra prediction mode set may include a planar mode, a DC mode, and 65 directional modes, and each intra prediction mode may be indicated through an intra prediction mode index.
[0097] For example, intra prediction mode index "0" indicates planar mode, intra prediction mode index "1" indicates DC mode, and intra prediction mode indexes "2" to "66" can indicate different directional modes, respectively.
[0098] The directional modes each indicate different angles within a preset angular range, for example, a directional mode can indicate an angle within an angular range from 45 degrees to -135 degrees clockwise.
[0099] In this case, the intra prediction mode index "2" may indicate the Horizontal Diagonal (HDIA) mode, the intra prediction mode index "18" may indicate the Horizontal (HOR) mode, the intra prediction mode index "34" may indicate the Diagonal (DIA) mode, the intra prediction mode index "50" may indicate the Vertical (VER) mode, and the intra prediction mode index "66" may indicate the Vertical Diagonal (VDIA) mode.
[0100] If the current block is a non-square block, 20 additional wide angular modes can be used, indicating angles greater than 45 degrees clockwise or less than -135 degrees.
[0101] Based on the intra prediction mode information as described above, reference samples to be used for intra prediction for the current block are determined.
[0102] For example, if the intra prediction mode index indicates a specific directional mode, the reference sample corresponding to that angle from the current sample of the current block is used for prediction for the current sample.
[0103] As described above, for intra prediction, surrounding already restored samples are used as reference samples, and the reference samples may be restored samples located to the left or above the current block.
[0104] Referring to FIG. 4, the reference samples may be samples adjacent to the left boundary and upper boundary of the current block.
[0105] For example, if the size of the current block is NxN and samples of a single reference line adjacent to the current block are used for intra prediction, reference samples can be set using (2N*2+1) surrounding samples located on the left (L, Left), top (T, Top), and top-left (TL, Top-left) of the current block.
[0106] Meanwhile, samples of multiple reference lines (MRL) may be used for intra prediction of the current block, and the multiple reference lines may be composed of n reference lines located within a preset range from the current block. In this case, separate reference line index information indicating the reference lines to be set as reference pixels may be signaled.
[0107] Additionally, if at least some of the samples to be used as reference samples have not yet been restored, reference samples can be obtained through a reference sample padding process, and a reference sample filtering process can be performed to reduce errors in intra prediction.
[0108] FIG. 5 is a block diagram illustrating a decoding device according to an embodiment of the present invention, and is intended to explain the configuration and operation of a video decoder for encoding an image.
[0109] Referring to FIG. 5, a video decoder (200) may be configured to include an entropy decoding unit (210), an inverse quantization unit (220), an inverse transformation unit (230), a filtering unit (240), a prediction unit (260), and a DPB (Decoded Picture Buffer, 270).
[0110] The entropy decoding unit (210) entropy decodes the bitstream to extract transform coefficient information, intra-coding information, inter-coding information, etc. for each region.
[0111] For example, the entropy decoding unit (210) can obtain a binary code for transform coefficient information of a specific area from a bitstream, and can obtain a quantized transform coefficient by de-binarizing the binary code.
[0112] The inverse quantization unit (220) inversely quantizes the quantized transform coefficients, and the inverse transformation unit (230) restores the residual value using the inverse quantized transform coefficients.
[0113] Meanwhile, the residual value obtained from the inverse transformation unit (230) is combined with the predicted value obtained from the prediction unit (260) to restore the original pixel value.
[0114] The filtering unit (240) performs a filtering operation using a deblocking filter, a sample adaptive offset, an adaptive loop filter, etc. to improve the image quality of the restored picture, and the filtered picture can be output or stored in the DPB (270) to be used as a reference picture for the next picture.
[0115] The prediction unit (260) includes an intra / IBC prediction unit (261) and an inter prediction unit (265), and generates a prediction picture by utilizing the encoding type decoded through the entropy decoding unit (210), the transform coefficient for each region, and the intra / inter encoding information.
[0116] To restore the current block for which decoding is performed, the decoded region of the current picture or other pictures containing the current block can be used. A picture (or tile / slice) that performs intra prediction or intra BC prediction using only the current picture for restoration is called an intra picture or I picture (or tile / slice), and a picture (or tile / slice) that can perform all of intra prediction, inter prediction, and intra BC prediction is called an inter picture (or tile / slice).
[0117] Meanwhile, a picture (or tile / slice) that uses at most one motion vector and reference picture index to predict sample values of each block among inter-pictures (or tiles / slices) is called a predictive picture or P-picture (or tile / slice), and a picture (or tile / slice) that uses at most two motion vectors and reference picture indices is called a bi-predictive picture or B-picture (or tile / slice).
[0118] That is, a P picture (or tile / slice) uses at most one motion information set to predict each block, and a B picture (or tile / slice) uses at most two motion information sets to predict each block. Here, a motion information set may include one or more motion vectors and one reference picture index.
[0119] The intra / IBC prediction unit (261) generates a prediction block using intra encoding information and restored samples within the current picture, and the intra encoding information may include at least one of an intra prediction mode, an MPM (Most Probable Mode) flag, and an MPM index.
[0120] The intra / IBC prediction unit (261) can predict sample values of the current block using restored samples located on the left and / or upper side of the current block as reference samples.
[0121] For example, the reference samples may be samples adjacent to the left boundary of the current block and / or samples adjacent to the upper boundary, and may be samples located on a line within a preset distance from the left boundary of the current block among samples of neighboring blocks of the current block and / or samples located on a line within a preset distance from the upper boundary of the current block. In this case, the neighboring blocks of the current block may include at least one of a left (L) block, an upper (A) block, a below left (BL) block, an above right (AR) block, or an above left (AL) block adjacent to the current block.
[0122] Additionally, the intra / IBC prediction unit (261) can restore the current region by referring to a specific region including restored samples within the current picture. To this end, the intra / IBC prediction unit (261) can perform IBC prediction using IBC encoding information obtained from the entropy decoding unit (210), and the IBC encoding information can include block vector information.
[0123] The inter prediction unit (265) generates a prediction block using the reference picture and inter encoding information stored in the DPB (270), and the inter encoding information may include a set of motion information (reference picture index, motion vector information, etc.) of the current block for the reference block.
[0124] Meanwhile, inter prediction can include L0 prediction, L1 prediction, and bi-prediction.
[0125] L0 prediction refers to prediction using a single reference picture included in the L0 picture list, and L1 prediction refers to prediction using a single reference picture included in the L1 picture list. For this, a set of motion information (e.g., motion vector and reference picture index) may be required.
[0126] In the biprediction method, up to two reference regions can be used. These two reference regions may exist in the same reference picture or in different pictures. Accordingly, in the two sets of motion information used in the biprediction method, two motion vectors may correspond to the same reference picture index or to different reference picture indices.
[0127] At this time, the reference pictures are pictures that are located temporally before or after the current picture, and may be completed pictures that have already been restored, and the two reference areas used in the pair prediction method may be areas selected from the L0 picture list and the L1 picture list, respectively.
[0128] The inter prediction unit (265) can obtain a reference block of the current block using a motion vector and a reference picture index, and the reference block exists in a reference picture corresponding to the reference picture index.
[0129] Additionally, the sample values of a block specified by a motion vector or their interpolated values can be used as a predictor of the current block. For motion prediction with subpel-level pixel accuracy, an 8-tap interpolation filter can be used for the luminance signal, and a 4-tap interpolation filter can be used for the chrominance signal.
[0130] Meanwhile, the configuration and operation of the decoder described with reference to FIG. 5 are according to one embodiment of the present invention, and some configurations may be omitted or added as needed, and the decoder may decode an image by performing the reverse process of the encoding method of the encoder described above.
[0131]
[0132] Figure 6 illustrates an example of an intra prediction method in IBC (Intra Block Copy) mode.
[0133] Referring to Figure 6, in IBC mode, prediction information of a block to be encoded (current block) is obtained from a reference block that has already been decoded and is located within the same screen.
[0134] At this time, vector information (including direction and size) from the encoding target block (current block) to the reference block is referred to as a block vector (BV).
[0135] Although the IBC prediction method described above is an intra-screen prediction method, it is similar to an inter-screen prediction method in that it derives and transmits motion information of the current block to be encoded.
[0136] Accordingly, the IBC prediction method can be divided into ibc_skip / merge mode and ibc_amvp mode, and ibc_skip / merge and ibc_amvp can use skip, merge, AMVP (Advanced Motion Vector Prediction) and similar encoding, information transmission and decoding methods in inter-screen prediction.
[0137] The syntax structure for IBC prediction can be as shown in Table 1 below, and the sps_ibc_enabled_flag of the SPS (Sequence Parameter Set) and the syntax (sps_six_minus_max_num_ibc_merge_cand) indicating the maximum size of the candidate list of the ibc_skip / merge mode when the flag is enabled can be transmitted.
[0138]
[0139] Referring to Table 2 below, in a coding unit (CU) that is a block to be encoded, a flag (pred_mode_ibc_flag) indicating whether the block is in IBC mode and a flag (general_merge_flag) indicating whether the block is in ibc_merge mode can be transmitted.
[0140] And in the case of ibc_amvp mode, the block vector (BV) value of the corresponding block can be derived using the mvd, mvp, and amvr values.
[0141]
[0142] Meanwhile, referring to Table 3 below, in the case of ibc_skip / merge mode, the block vector (BV) value of the corresponding block can be derived using merge_idx information.
[0143]
[0144]
[0145] FIG. 7 is a diagram illustrating an example of an intra prediction method in IntraTMP (Intra Template Matching Prediction) mode.
[0146] As described above, in the IBC mode, in order to use a reference block within the same screen as prediction information for the target block to be encoded, a block vector (BV), which is motion information for the target block, is derived and transmitted to the decoding device.
[0147] Meanwhile, in IntraTMP mode, the use of a reference block within the same screen as the prediction information for the target block is the same as in IBC mode, but the block vector (BV), which is motion information for the target block, is not transmitted to the decoding device, and the decoding device can find the prediction information by searching for the reference block on its own through a template matching process.
[0148] Referring to Fig. 7, a template area is defined around a target block (IntraTMP block), and a template area (Best matching Template) that most closely matches the template area of the target block in the area of reconstructed blocks within the same screen is searched for, thereby obtaining a reference block (ref. block).
[0149] And, based on the position of the reference block (ref. block) obtained as described above, the block vector (intraTMP BV) value for (IntraTMP block) can be derived.
[0150] As described above, IntraTMP prediction is one of the prediction modes within a screen, in which a block vector (BV) of a target block can be derived in a decoding device, and the block vector (BV) value can be used for intra prediction in the same manner as the block vector (BV) value of the IBC mode.
[0151] Meanwhile, the IntraTMP method as described above can also be used in the process of refining or compensating block vector (BV) values.
[0152] For example, for a block encoded in IBC mode, after finding the location of the initial reference block using the transmitted block vector (BV) value, an updated reference block can be obtained by more precisely correcting the block vector (BV) value through template matching in a certain area around the initial reference block.
[0153]
[0154] To improve the performance of on-screen prediction, a dual tree structure in which the block partitions of the luma plane and the chroma plane are independent of each other may be possible.
[0155] For example, in a dual tree structure, the partitioning structure from a coding tree unit (CTU) to a coding unit (CU) may be different for a luma signal and a chroma signal.
[0156] Here, the block division information for the luma signal is called DUAL_TREE_LUMA, and the block division information for the chroma signal is called DUAL_TREE_CHROMA.
[0157] In a single tree structure, the luma plane and the chroma plane have the same block division structure, so that the division structure from the coding tree unit (CTU) to the coding unit (CU) for the luma signal and the chroma signal can be the same.
[0158] Meanwhile, the dual tree structure as described above may be applicable only to the I slice and may not be applicable to the B slice or the P slice.
[0159] As another example, for a B slice or a P slice, a specific region within the slice may be designated as an intra region, and a dual tree structure may be applied to the intra region. In this case, the intra region may be a group of one or more coding units (CUs) or a group of one or more coding tree units (CTUs).
[0160] When performing IBC prediction in a single-tree structure, the block vector (BV) value of the target luma block may be set to the block vector (BV) value of the corresponding chroma block at the same location through a scaling process. Accordingly, the block vector (BV) value for the chroma block may not be transmitted or derived separately.
[0161] At this time, the scaling process can be performed according to the format of the image. For example, in the case of the YUV420 format, the block vector (BV) value of the luma block can be scaled to be reduced by half on the horizontal and vertical axes, and set as the block vector (BV) value of the corresponding chroma block. Meanwhile, in the case of the YUV444 format, the scaling process can be omitted, and the block vector (BV) value of the luma block can be set as the block vector (BV) value of the corresponding chroma block.
[0162] Meanwhile, when performing IBC prediction in a dual tree structure, the block division structure of the luma block and the block division structure of the chroma block are different, so the block vector (BV) value of the luma block can be directly used as the block vector (BV) value of the corresponding chroma block.
[0163] Accordingly, in a dual-tree structure, IBC mode may not be allowed for chroma blocks, while in a single-tree structure, IBC mode may be allowed for both luma blocks and chroma blocks. On the other hand, in a dual-tree structure, IBC mode may be allowed only for luma blocks.
[0164] For dual-tree structures, other intra-screen prediction methods other than IBC mode can be used for chroma blocks, such as regular intra mode, palette, BDPCM (Block Differential Pulse Code Modulation), or CCLM (Cross-Component Linear Model).
[0165] In contrast, for efficient processing of computer graphics-processed screen content, IBC mode for chroma blocks may also be allowed in a dual-tree structure.
[0166] In the case of the general intra mode among the on-screen prediction methods for chroma blocks, a total of 67 intra prediction modes can be provided, including the planar mode, DC mode, and 65 directional modes, as described with reference to FIG. 3.
[0167] A chroma block is encoded in one of a total of 67 intra prediction modes, but not all 67 intra prediction modes may be supported for the chroma block being encoded.
[0168] For example, the intra prediction modes supported for the chroma block to be encoded may be as shown in Table 4 below.
[0169]
[0170] As shown in Table 4, one mode is selected through evaluation among five candidates, and the selected intra prediction mode can be transmitted with its corresponding index value binarized.
[0171] Here, the five candidates could be:
[0172] - index 0: planar mode 0
[0173] - index 1: 50 vertical mode
[0174] - index 2: 18 horizontal mode
[0175] - index 3: DC mode 1
[0176] - index 4: DM (Direct Mode)
[0177] Meanwhile, if the direct mode (DM) matches one of the modes planar, DC, vertical, and horizontal, a 66th directional mode can be added, making a total of five candidates.
[0178] Direct mode (DM) may mean intra mode for a corresponding luma block in the same location as the chroma block.
[0179] For example, if the intra mode of the luma block is mode 10, the direct mode (DM) of the corresponding chroma block is mode 10, and the five candidates can be configured as mode 0, mode 50, mode 18, mode 1, and mode 10 in order of index.
[0180] As another example, if the intra mode of the luma block is vertical mode 50, the direct mode (DM) of the corresponding chroma block is 50, and the five candidates can be composed of mode 0, mode 66, mode 18, mode 1, and mode 50 in order of index.
[0181] Direct mode (DM) as described above is an intra prediction mode that utilizes the high correlation between luma blocks and chroma blocks.
[0182] Table 5 below shows the results of binarizing the intra prediction mode of the chroma block.
[0183]
[0184] Referring to Table 5, for the direct mode (DM) with index 4, a binary value of 1 bit, “0,” is indicated, and for the remaining 4 modes, binary values of 3 bits are assigned.
[0185] Since the binarization process achieves a compression effect by allocating fewer bits to frequently occurring signals and relatively more bits to infrequently occurring signals, it can be seen that direct mode (DM) is used more frequently than other modes for chroma blocks.
[0186]
[0187] One embodiment of the present invention provides a method for deriving or setting block vector (BV) information for a chroma block and transmitting the block vector (BV) information when a dual tree structure is used.
[0188] Hereinafter, an embodiment of the present invention will be described by way of example in which a dual tree structure is used in an intra-screen prediction slice (I slice), but the present invention is not limited thereto, and an embodiment of the present invention may also be applied when a dual tree structure is used in an intra-area to improve compression performance in an inter-screen prediction slice (P slice or B slice).
[0189] In addition, one embodiment of the present invention can be applied not only to the YUV 420 format but also to the YUV 422 format or the YUV 444 format, and can be applied not only to the dual tree structure but also to the triple tree structure.
[0190] For example, in the YUV 444 format, the Y plane, U plane, and V plane exist in the same size, and in the triple tree structure, the three planes are each independently divided into blocks, so that the block vector (BV) value for one or more luma blocks of the Y plane can be used to derive the block vector (BV) value for the chroma block of the U plane or V plane.
[0191] As another example, in the case of a dual tree structure in the YUV 444 format, the Y plane and the U / V plane can be block-partitioned independently, the U plane and the V plane can be block-partitioned with the same structure, and the block vector (BV) value of the chroma block of the U / V plane can be derived using the block vector (BV) value of one or more luma blocks of the Y plane.
[0192] Meanwhile, for the block vector (BV) value of the chroma block derived as described above, an appropriate scaling operation can be performed according to the size of the Y plane and the U / V plane.
[0193] In addition, in an embodiment of the present invention, a method of supporting an IBC mode for a chroma block in a dual tree structure and deriving, setting, and transmitting a block vector (BV) of the chroma block is described in various embodiments.
[0194] However, the present invention is not limited to a dual tree structure, and is applicable to all cases where the block division structure of a luma block and the block division structure of a chroma block are different, and may also be applied to a triple tree structure, for example.
[0195] Here, if the sizes of the chroma block to be encoded and the corresponding luma block are different, the block vector (BV) value for the luma block can be scaled and then applied to the chroma block.
[0196] This is because, in the case of a dual tree structure, the block division structure of the luma block and the block division structure of the chroma block are different, so the block vector (BV) value of the luma block cannot be directly used as the block vector (BV) value of the chroma block.
[0197] FIG. 8 is a diagram illustrating an example of a luma area and a chroma area independently divided into a dual tree structure. FIG. 8 (a) shows a luma area, and FIG. 8 (b) shows a chroma area corresponding to the luma area.
[0198] Referring to FIG. 8, in a dual tree structure, multiple luma blocks can correspond to one chroma block.
[0199] For example, as illustrated in FIG. 8, 10 luma blocks may correspond to the chroma block on the left side of the chroma area.
[0200] In this case, the positions of luma blocks corresponding to chroma blocks can be defined as top-left block (TL), top-right block (TR), center block (CT), bottom-left (BL), and bottom-right block (BR).
[0201] Meanwhile, the positions of each of the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) can be calculated using the following mathematical equations 1 to 5.
[0202]
[0203]
[0204]
[0205]
[0206]
[0207] In mathematical expressions 1 to 5, IntraPredModeY[x][y] represents the intra-screen prediction information for the luma block at the position (x, y), (xCb, yCb) represents the position of the block to be encoded based on the luma block, and represents the pixel position located at the upper left corner of the block. (nCbW, nCbH) represents the width and height of the block to be encoded based on the luma block.
[0208] For example, a center block (CT) may mean a luma block that includes pixels at a position that is shifted by half the width of the encoding target block in the horizontal axis and by half the height of the encoding target block in the vertical axis from the upper left corner of the encoding target block.
[0209] Here, the location, width and / or height information of the encoding target block is based on the luma block, but the present invention is not limited thereto, and may also be based on the chroma block, and the mapping between the luma block and the chroma block may be subject to additional scaling work as needed.
[0210]
[0211] FIG. 9 is a flowchart illustrating an intra prediction method using a block vector according to an embodiment of the present invention. Among the illustrated intra prediction methods, descriptions of those identical to those described with reference to FIGS. 1 to 7 will be omitted.
[0212] Referring to FIG. 9, a DM flag indicating whether a chroma block is encoded in direct mode (DM) is obtained (step S910).
[0213] Here, the DM flag is inserted into the bitstream as the first of the syntaxes for the corresponding chroma block, so that it can be checked first before other syntaxes for the corresponding chroma block.
[0214] As a result of the verification based on the DM flag obtained in step S910, if the corresponding chroma block is encoded in direct mode (DM), it is checked whether the IBC mode is allowed for the corresponding chroma block (step S920).
[0215] Here, whether the IBC mode is allowed for the chroma block can be checked using the IBC enable flag (IBC_enabled_flag) included in at least one of the Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Picture Header (PH), and Slice Header (SH) as HLS (High Level Syntax).
[0216] Meanwhile, if the chroma block is not encoded in direct mode (DM), intra prediction mode information for the chroma block can be additionally obtained.
[0217] If the IBC mode is allowed for the chroma block, it is checked whether the luma block corresponding to the chroma block is encoded in the IBC or IntraTMP mode (step S930).
[0218] Here, the luma block corresponding to the chroma block is a luma block at a position corresponding to the chroma block in the case of a single tree structure, and may include at least one of a center block (CT), an upper-left block (TL), an upper-right block (TR), a lower-left (BL), and a lower-right block (BR) of a luma region corresponding to the chroma block in the case of a dual tree structure.
[0219] At step S930, in the case of a dual tree structure, it can be confirmed whether the corresponding luma block is encoded in IBC or IntraTMP mode in the order of center block (CT), upper-left block (TL), upper-right block (TR), lower-left (BL), and lower-right block (BR).
[0220] Meanwhile, if the IBC mode is not allowed for the chroma block, the intra prediction mode of the chroma block may be determined as the intra prediction mode of the corresponding luma block.
[0221] And as a result of the verification at step S930, if the corresponding luma block is encoded in IBC or IntraTMP mode, a block vector (BV) for the corresponding chroma block is obtained using the block vector (BV) for the corresponding luma block (step S940).
[0222] According to one embodiment of the present invention as described above, by first checking whether a chroma block is encoded in direct mode using a DM flag, and then, in the case of direct mode, determining the intra prediction mode of the chroma block according to the intra prediction mode of the luma block corresponding to the chroma block without additional intra prediction mode information, compression performance can be improved and the amount of information transmitted for intra prediction can be reduced.
[0223] In addition, when performing intra prediction using a block vector indicating the position of a reference block within a screen, if the IBC mode is allowed for a chroma block encoded in direct mode, the intra prediction of the chroma block can be efficiently performed by obtaining a block vector for the chroma block using a block vector for a luma block encoded in IBC or IntraTMP mode corresponding to the chroma block.
[0224]
[0225] Hereinafter, with reference to FIGS. 10 to 15, embodiments of a method for obtaining a block vector (BV) for intra prediction will be described in more detail.
[0226] Referring to FIG. 10, the DM_flag value indicating whether the chroma block to be encoded is in direct mode (DM) is parsed (step S1010), and it is checked whether the DM_flag value is “1” (step S1020).
[0227] When the DM_flag value is “1”, the prediction information within the screen of the luma block corresponding to the chroma block can be determined.
[0228] Here, in the case of a single tree structure, since the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) as described with reference to FIG. 8 can all represent the same luma block, the center block (CT) produced as in mathematical expression 3 can be a luma block corresponding to the corresponding chroma block.
[0229] Meanwhile, in the dual tree structure, one of the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) as described with reference to FIG. 8 can be a luma block corresponding to the chroma block.
[0230] If the DM_flag value is “1”, check whether the IBC_enabled_flag value is “1” (step S1030).
[0231] If the IBC_enabled_flag value is “1”, it is checked whether the intra prediction mode (luma_mode) of the corresponding luma block is IBC or IntraTMP mode (step S1040).
[0232] Meanwhile, if the IBC_enabled_flag value is “0”, the intra prediction mode of the corresponding luma block can be recognized as the general intra mode.
[0233] Here, the IBC_enabled_flag value can be located in one or more of SPS, PPS, PH, and SH as HLS values.
[0234] If the intra prediction mode (luma_mode) of the corresponding luma block is IBC or IntraTMP mode, the intra prediction mode (ch_mode) of the corresponding chroma block is set to the IBC mode (step S1050), and the block vector (BV) value of the corresponding luma block is set to the block vector (BV) value of the corresponding chroma block (step S1060).
[0235] Here, the block vector (BV) of the chroma block is called a direct block vector (DBV), which means that the block vector (BV) value of the corresponding luma block is used as the block vector (BV) value of the chroma block.
[0236] Meanwhile, if the sizes of the chroma block to be encoded and the corresponding luma block are different, the block vector (BV) value of the luma block is scaled and then applied to the chroma block.
[0237] As a result of the verification at step S1040, if the intra prediction mode of the corresponding luma block is not the IBC or IntraTMP mode, the mode of the corresponding chroma block is set to the intra mode (intra mode) (step S1070), and the intra prediction mode (luma_mode) of the corresponding luma block is set to the intra prediction mode for the corresponding chroma block (step S1080).
[0238] Here, if the corresponding luma block is not encoded in the general intra mode, but is encoded in a palette or BDPCM, etc., a specific default intra mode can be set as the intra prediction of the corresponding luma block so that it can be used as the direct mode (DM) of the corresponding chroma block.
[0239] For example, the default intra prediction mode may include at least one of a DC mode, a planar mode, a directional planar mode, a vertical mode, and a horizontal mode, but the present invention is not limited thereto.
[0240] Meanwhile, if the DM_flag value is “0” as a result of the verification at step S1020, the intra prediction mode of the corresponding chroma block is not related to the intra prediction mode of the corresponding luma block, so information about an additional intra-screen prediction mode for the chroma block can be parsed.
[0241] That is, the DM_flag information can indicate whether the intra prediction mode of a chroma block is correlated with the intra prediction mode of the corresponding luma block, but does not indicate the intra prediction mode itself for the chroma block.
[0242] As described above, in one embodiment of the present invention, the purpose of transmitting DM_flag by setting it as a separate syntax is to increase compression performance by placing DM_flag, which indicates a high correlation between a luma block and a chroma block, at an upper position among the syntaxes of the chroma block.
[0243] That is, by transmitting DM_flag before other syntaxes indicating the intra prediction mode of a chroma block, compression performance can be improved by checking the frequently occurring direct mode (DM) first.
[0244] For example, if the intra prediction mode of a chroma block is direct mode (DM), the intra prediction mode for the chroma block can be determined with just one DM_flag without transmitting any other syntax.
[0245] Specifically, if the intra prediction mode of the luma block corresponding to the chroma block is a general intra mode or IBC or IntraTMP, the intra prediction mode of the corresponding luma block can be applied as the intra prediction mode of the chroma block using one DM_flag.
[0246] This is because there may be a correlation such that if the intra prediction mode of the corresponding luma block is the IBC mode, the intra prediction mode of the corresponding chroma block is also likely to be the IBC mode, and if the intra prediction mode of the corresponding luma block is the general intra mode, the chroma block is also likely to be the general intra mode.
[0247] Accordingly, when the DM_flag for a chroma block is “1”, if the intra prediction mode of the corresponding luma block is the IBC (or IntraTMP) mode, the intra prediction mode of the chroma block is also set to the IBC mode, and if the intra prediction mode of the corresponding luma block is the general intra mode, the chroma block is also set to the general intra mode, so that the intra prediction mode of the chroma block can be expressed in both the general intra mode and the IBC mode with 1 bit of DM_flag, thereby improving the compression effect.
[0248] Meanwhile, the DM_flag as described above is an example, and the present invention is not limited thereto, and a flag that is a 1-bit first flag (first_flag) and can distinguish whether a chroma block is in direct mode (direct intra mode and / or direct block vector) depending on the value of the flag (first_flag) may also be used.
[0249] For example, if the value of the flag (first_flag) is “0”, a direct mode (DM) that uses the same intra prediction mode as the corresponding luma block is applied to the chroma block to be encoded, and if the value of the flag (first_flag) is “1”, an intra prediction mode unrelated to the corresponding luma block can be applied to the chroma block.
[0250] Meanwhile, the DM_flag as described above may be a flag value corresponding to a separate 1 bit, or may be some information corresponding to 1 bit of another syntax.
[0251]
[0252] Referring to Fig. 11, when the IBC_enabled_flag value is “1” (step S1110), the DBV_flag value indicating whether the chroma block to be encoded is in DBV (Direct Block Vector) mode is parsed (step S1120).
[0253] Here, instead of DBV_flag, ibc_chroma_flag may be used to indicate whether the chroma block to be encoded is in IBC mode.
[0254] When the DBV_flag value is “1”, the on-screen prediction information of the luma block corresponding to the chroma block can be identified.
[0255] As described above, the corresponding luma block is a chroma block at a position corresponding to the chroma block in the case of a single tree structure, and may include an upper-left block (TL), an upper-right block (TR), a center block (CT), a lower-left (BL), and a lower-right block (BR) among the luma areas corresponding to the chroma block in the case of a dual tree structure.
[0256] Meanwhile, DBV_flag may be a flag value corresponding to a separate 1-bit, or it may be some information corresponding to 1-bit in another syntax.
[0257] After that, it is checked whether the intra prediction mode (luma_mode) of the corresponding luma block is IBC mode or IntraTMP mode (step S1140).
[0258] As a result of the verification, if the intra prediction mode (luma_mode) of the corresponding luma block is IBC mode or IntraTMP mode, the block vector (BV) value of the corresponding luma block is set to the DBV value of the corresponding chroma block (step S1150).
[0259] For example, in the case of a dual tree structure, it can be checked whether the intra prediction mode of the corresponding luma block is the IBC mode or the IntraTMP mode in the order of the center block (CT), upper-left block (TL), upper-right block (TR), lower-left (BL), and lower-right block (BR).
[0260] During the verification in the above order, if a luma block in IBC mode or IntraTMP mode is found, the block vector (BV) value of the luma block can be set to the DBV value of the chroma block.
[0261] As described above, the order of checking the intra prediction mode of the corresponding luma block in the dual tree structure and the position of the luma block can be changed.
[0262] Meanwhile, in the case of a single tree structure, since the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) can all represent the same luma block, the block vector (BV) value of the center block (CT) or upper-left block (TL) can be used as the DBV value of the chroma block.
[0263] Here, if the intra prediction mode for one or more corresponding luma blocks is not the IBC mode or the IntraTMP mode, the DBV value of the corresponding chroma block can be set to a predetermined default block vector (default BV) value.
[0264] For example, the default block vector may be (-chCbW, -chCbH), where (-chCbW, -chCbH) represent the width and height of the corresponding chroma block.
[0265] Alternatively, the BV value stored in the block vector buffer may be set to the default block vector value.
[0266] In an embodiment described with reference to FIG. 11, a method is presented for deriving a block vector (BV) value of a chroma block from a block vector (BV) value of a corresponding luma block when a chroma block to be encoded is encoded in IBC mode or IntraTMP mode.
[0267] For example, if the intra prediction mode of a chroma block is the IBC mode, the block vector (BV) value of the chroma block can be derived from the block vector (BV) value of the corresponding luma block.
[0268] Meanwhile, when the intra prediction mode of the chroma block is the IntraTMP mode, the initial block vector (BV) value of the chroma block can be derived from the block vector (BV) value of the corresponding luma block.
[0269] Here, the initial block vector (BV) value may represent an initial position within the same screen from which template matching, as described with reference to FIG. 7, begins to correct the block vector (BV) value for the corresponding chroma block.
[0270] The embodiments described above can be applied to I slices, P slices and B slices, regardless of the type of slice containing the chroma block, and regardless of whether the chroma block is divided into a triple tree, dual tree or single tree structure.
[0271]
[0272] According to another embodiment of the present invention, a block vector candidate list (BV candidate list) is constructed for a chroma block to be encoded, one block vector (BV) is selected through evaluation of the block vector (BV) candidates, and a candidate index for the selected block vector (BV) can be transmitted to a decoding device.
[0273] Referring to Fig. 12, if the IBC_enabled_flag value is “1” (step S1210), ibc_chroma_flag, which indicates whether the chroma block to be encoded is in IBC mode, is parsed (step S1220).
[0274] If the ibc_chroma_flag value is 1, the index (ibc_chroma_idx) indicating the block vector (BV) for the corresponding chroma block is parsed (S1240).
[0275] A block vector (BV) for the corresponding chroma block can be obtained based on the index (ibc_chroma_idx) value obtained in step S1240, and for this purpose, the encoding device and the decoding device can configure a block vector candidate list (BV candidate list) based on the same conditions.
[0276] For example, the block vector candidate list (BV candidate list) can be divided into groups and organized as follows.
[0277] - “BV(s) from corresponding luma blocks (CT, TL, TR, BL, BR)”
[0278] The block vector candidate list of the first group can be constructed by obtaining block vector (BV) information from a luma block corresponding to the chroma block.
[0279] Here, the corresponding luma block may be one or more of the upper-left block (TL), upper-right block (TR), center block (CT), lower-left (BL), and lower-right block (BR) as described with reference to FIG. 8.
[0280] Meanwhile, a scaling operation can be performed on the block vector (BV) value of the corresponding luma block.
[0281] - “BV(s) from neighboring chroma blocks (A1, B1, B0, A0, B2)”
[0282] The block vector candidate list of the second group can be constructed by obtaining block vector (BV) information from chroma blocks adjacent to the chroma block.
[0283] Here, the adjacent chroma block may be one or more of the A1 block and A0 block on the left, the B1 block and B0 block on the upper side, and the B2 block on the upper left, which are spatially adjacent to the chroma block, as illustrated in FIG. 13.
[0284] - history-based BV(s): HBV
[0285] Block vector (BV) information of chroma blocks used in the encoding and / or decoding process can be stored in a block vector buffer (BV buffer) of a FIFO (First Input, First Output) structure.
[0286] In this case, the block vector candidate list of the third group can be constructed by retrieving block vector (BV) information from the block vector buffer (BV buffer) in the most recently stored order.
[0287] Additionally, the block vector buffer (BV buffer) stores not only block vector (BV) information used for chroma blocks, but also block vector (BV) information used for luma blocks, and can be included in the block vector candidate list of the third group.
[0288] Meanwhile, a scaling operation can be performed on the block vector (BV) value of the corresponding luma block.
[0289] - tracked BV(s): TBV
[0290] The block vector candidate list of the fourth group can be constructed by obtaining block vector (BV) information of an area (or block) pointed to by a block vector (BV) of an adjacent chroma block around the chroma block.
[0291] For example, if the block vector (BV) value of a chroma block adjacent to the chroma block is confirmed, the block vector (BV) information of the chroma block that includes the pixel at the position indicated by the block vector (BV) value of the adjacent chroma block may be included as TBV in the block vector candidate list of the fourth group.
[0292] At this time, since the block vector (BV) value is a relative value based on the position of the corresponding block, the TBV value included in the block vector candidate list of the fourth group must be converted based on the position of the adjacent chroma block.
[0293] Referring to FIG. 14, the absolute position (A) of the reference block (Ba) is identified (step S1410), and the block vector relative position (i) of the reference block (Ba) is identified (step S1420).
[0294] For example, we can assume that the chroma block A1 adjacent to the chroma block is located at (100, 200) in the image, and the block vector (BV) for the chroma block A1 points to the relative position (-18, -15).
[0295] Here, the location of the block may be the location of a pixel located at the upper left corner of the block, but the present invention is not limited thereto.
[0296] The block vector relative position (i) is converted into an absolute position (A) (step S1430), and the absolute position (C) of the block (Bc) containing the absolute position (A) is determined (step S1440).
[0297] For example, the block vector relative position (-18, -15) for chroma block A1 can be converted to the absolute position (82, 185), and the absolute position of chroma block X containing the pixel located at (82, 185) can be (80, 180).
[0298] When the block vector relative position (j) of the block (Bc) is identified (step S1450), the block vector relative position (j) is converted into an absolute position (D) (step S1460), and the TBV is calculated using the absolute position (A) and the absolute position (D) (step S1470).
[0299] At this time, the block vector relative position (j) of the block (Bc) means the block vector (BV) for the block (Bc) when the prediction mode of the block (Bc) is the IBC mode or the IntraTMP mode.
[0300] For example, if the block vector relative position for chroma block X is (-5, -3), the relative position (-5, -3) can be converted to the absolute position (75, 177).
[0301] And, by calculating the relative position of the absolute position (75, 177) based on the absolute position (100, 200) of the A1 chroma block, a vector representing the calculated relative position (-25, -23) can be determined as TBV.
[0302] In the above, an embodiment of the present invention has been described as an example of calculating TBV by performing the first block vector tracking (BV tracking) from an A1 chroma block adjacent to a chroma block. However, the present invention is not limited thereto, and TBV may be calculated by performing two or more consecutive block vector tracking (BV tracking), such as the second or third.
[0303] For example, a block vector tracking (BV tracking) process such as the second or third can be performed by repeating steps S1440 to S1460 among the steps described with reference to FIG. 14.
[0304] In addition, block vector tracking (BV tracking) may be performed not only on chroma blocks adjacent to the chroma block in question, but also on block vectors (BVs) already entered in the block vector candidate list. In this case, the block vector information entered in the block vector candidate list may include at least some of the block vector information of the first, second, and third groups as described above.
[0305] By including TBV information in the block vector candidate list as described above, IBC can take advantage of the characteristic that the same pattern is repeated within the current screen in computer-processed images suitable for IBC, and overcome the limitation of IBC that it is impossible to obtain temporal motion vector (temporal MV) information from other screens, such as inter-screen prediction, because it must find a reference block only within the current screen.
[0306] Meanwhile, in the embodiments described above, the block vector information of the corresponding luma block and the block vector information of the surrounding chroma block mean a block vector (BV) for the corresponding block when the prediction mode of the corresponding block is IBC mode or IntraTMP mode.
[0307] In the embodiments described above, the maximum number (n) of block vectors (BV) is specified for each group of the block vector candidate list, and when the maximum number (n) of block vector information is filled for a specific group, block vector information may no longer be added to the group.
[0308] For example, if the maximum number (n) for the first group is limited to three, block vectors (BVs) of up to three luma blocks are entered into the block vector candidate list in a predetermined order, and block vectors (BVs) of luma blocks are no longer checked.
[0309] And if the maximum number (n) for the second group is limited to two, block vectors (BVs) of up to two adjacent chroma blocks are input into the block vector candidate list in a predetermined order, and block vectors (BVs) of adjacent chroma blocks are no longer checked.
[0310] Additionally, a maximum number (m) of block vectors (BV) for the entire list of block vector candidates may be specified.
[0311] In this case, information about the maximum number (m) of block vector candidate lists may be included in one or more of SPS, PPS, PH, and SH as HLS values.
[0312] In the process of constructing a block vector candidate list, when the number of block vector (BV) information included in the list reaches the maximum number (m), the construction of the block vector candidate list can be completed.
[0313] In the above embodiments, duplicate block vector (BV) values in the block vector candidate list are not allowed, or the process of checking duplicate block vector (BV) values may be omitted to reduce the complexity of constructing the block vector candidate list.
[0314] Meanwhile, the block vector candidate list can be constructed using block vector information of one or more of the four groups described above.
[0315] For example, block vector information of the first group, block vector information of the second group, block vector information of the third group, and block vector information of the fourth group are input into the block vector candidate list, and in order to meet the maximum number (m), default block vectors (default BV) can be added to the block vector candidate list repeatedly until the maximum number (m) is filled. Here, the default block vector may be (-chCbW, -chCbH), but the present invention is not limited thereto.
[0316] Specifically, as a first embodiment of a method for constructing a block vector candidate list, block vector information can be input into the block vector candidate list in the following order.
[0317] 1) BV from corresponding luma blocks (group 1)
[0318] 2) BV from neighboring chroma blocks (group 2)
[0319] 3) HBV (group 3)
[0320] 4) TBV (Group 4)
[0321] 5) default BV
[0322] In the first embodiment as described above, the order of 1) and 2) may be changed, the order of 3) and 4) may be changed, 1) may be omitted, or a specific flag may be used to indicate whether 1) is omitted.
[0323] As a second embodiment of a method for constructing a block vector candidate list, block vector information can be input into the block vector candidate list in the following order.
[0324] 1) BV from corresponding luma blocks (group 1)
[0325] 2) BV from neighboring chroma blocks (group 2)
[0326] 3) HBV (group 3)
[0327] 4) default BV
[0328] In the second embodiment as described above, the order of 1) and 2) may be changed, 1) may be omitted, or a specific flag may be used to indicate whether 1) is omitted.
[0329] As a third embodiment of a method for constructing a block vector candidate list, block vector information can be input into the block vector candidate list in the following order.
[0330] 1) BV from corresponding luma blocks (group 1)
[0331] 2) BV from neighboring chroma blocks (group 2)
[0332] 3) TBV (Group 4)
[0333] 4) default BV
[0334] In the third embodiment as described above, the order of 1) and 2) may be changed, 1) may be omitted, or a specific flag may be used to indicate whether 1) is omitted.
[0335] As a fourth embodiment of a method for constructing a block vector candidate list, block vector information can be input into the block vector candidate list in the following order.
[0336] 1) BV from corresponding luma blocks (group 1)
[0337] 2) BV from neighboring chroma blocks (group 2)
[0338] 3) default BV
[0339] In the fourth embodiment as described above, the order of 1) and 2) may be changed, 1) may be omitted, or a specific flag may be used to indicate whether 1) is omitted.
[0340]
[0341] Referring to FIG. 15, it is checked whether the IBC_enabled_flag value is “1” (step S1510), and if the IBC_enabled_flag value is “1”, ibc_chroma_flag indicating whether the chroma block to be encoded is in IBC mode is parsed (step S1520).
[0342] Next, check whether the ibc_chroma_flag value is “1” (step S1530), and if the ibc_chroma_flag value is “1”, parse DBV_flag indicating whether DBV is used (step S1540).
[0343] Check whether the DBV_flag value is “1” (step S1550). If the DBV_flag value is “1”, the block vector (BV) value of the corresponding luma block is set to the block vector (BV) value of the corresponding chroma block (step S1560).
[0344] Meanwhile, if the DBV_flag value is “0”, the candidate index (ibc_chroma_idx) is parsed (step S1570), and the block vector (BV) corresponding to the ibc_chroma_idx value is obtained from the block vector candidate list and set as the block vector (BV) value of the corresponding chroma block (step S1580).
[0345] In order to construct a block vector candidate list in step S1580, one of the methods of the first to fourth embodiments described above may be used, but the block vector (BV) of the corresponding luma block may be excluded from the block vector candidate list because it is used when the DBV_flag value is “1”.
[0346]
[0347] According to another embodiment of the present invention, the IBC mode for a chroma block to be encoded can be subdivided into ibc_skip / merge and ibc_abvp (advanced block vector predictor) modes.
[0348] The method of constructing a merge candidate list in the Ibc_skip / merge mode may be the same as the method of constructing a block vector candidate list described above, so a detailed description thereof will be omitted.
[0349] Meanwhile, for ibc_abvp mode, bvd (block vector difference), bvp (block vector predictor) index and / or abvr (adaptive block vector resolution) flag may be transmitted.
[0350] Here, bvd represents the difference between the block vector (BV) value obtained for the chroma block and the block vector prediction (bvp) value, and the bvp index value can represent a bvp value selected from among the bvp values included in the bvp candidate list.
[0351] And the method of constructing the bvp candidate list may be the same as the method of constructing the block vector candidate list described above, but the maximum number of bvp candidate lists may be limited to a small number (e.g., 2).
[0352] As another example, after constructing the block vector candidate list described above, the candidate block vectors in the list can be rearranged in an order that most closely matches the template of the target block, thereby constructing a bvp candidate list using only a small number (e.g., 2) of upper block vectors.
[0353] At this time, the matching cost is calculated through a matching process between the surrounding template of the target block and the surrounding template of the area pointed to by the candidate block vector, and the candidate block vectors in the list can be rearranged in order of lowest matching cost.
[0354] For example, if the maximum number of bvp candidate lists is 2, the bvp index can be replaced with a 1-bit bvp flag.
[0355] Additionally, the abvr flag indicates the precision of the block vector (BV) values, and while the precision of motion vectors (MV) in inter-screen prediction is typically 1 / 4-pixel, the precision of block vector (BV) values can be limited to integer pixels.
[0356] For example, the abvr precision list may consist of 1-pixel and 4-pixel, and the abvr flag value corresponding to the precision selected from the two may be transmitted.
[0357] As another example, the abvr precision list may consist of 2-pixel and 4-pixel precisions, and the abvr flag value corresponding to the precision selected from the two may be transmitted.
[0358] As another example, the abvr precision list may consist of 1-pixel, 2-pixel, and 4-pixel, and the abvr index value corresponding to the precision selected from the three may be transmitted.
[0359] As another example, if the abvr precision list consists of 1 / 4-pixel, 1-pixel, and 4-pixel, the first flag value that distinguishes whether it is 1 / 4-pixel or integer-pixel may be transmitted, and if it is not 1 / 4-pixel, the second flag value that distinguishes whether it is 1-pixel or 4-pixel may be transmitted.
[0360] In this case, the decoding device can derive a block vector (BV) value in pixel units with precision according to the transmitted abvr flag value or abvr index value, and then compensate the precision of the block vector (BV) value to a 1-pixel or sub-pixel level through the intraTMP process as described with reference to FIG. 7.
[0361] As another example, the abvr value, which represents the precision of a block vector (BV), can be set to one pixel, in which case no abvr flag or abvr index needs to be transmitted.
[0362] In this case, the decoding device can derive a block vector (BV) value in 1-pixel units and then correct the precision of the block vector (BV) value to a sub-pixel level through the intraTMP process.
[0363] As another example, the abvr value, which represents the precision of a block vector (BV), can be set to one 2-pixel, in which case no abvr flag or abvr index needs to be transmitted.
[0364] In this case, the decoding device derives the block vector (BV) value in 2-pixel units, and then the precision of the block vector (BV) value can be corrected to the 1-pixel or sub-pixel level through the intraTMP process.
[0365] As another example, the abvr value, which represents the precision of a block vector (BV), can be set to one 4-pixel, in which case no abvr flag or abvr index needs to be transmitted.
[0366] In this case, the decoding device derives the block vector (BV) value in 4-pixel units, and then the precision of the block vector (BV) value can be corrected to the 1-pixel or sub-pixel level through the intraTMP process.
[0367] In the embodiments described above, sub-pixel may mean a precision smaller than an integer pixel, such as 1 / 2-pixel, 1 / 4-pixel, 1 / 8-pixel, 1 / 16-pixel, 1 / 32-pixel, etc.
[0368] The ibc_skip / merge mode and ibc_abvp mode described above can also be applied in IBC mode for luma blocks.
[0369] Meanwhile, the block vector precision (BV precision) as described above can be subdivided into transmission block vector precision, correction block vector precision, and storage block vector precision.
[0370] Here, the transmission block vector precision is the precision of the block vector transmitted as a flag or index, and may have an integer-pixel value such as 1-pixel, 2-pixel, or 4-pixel.
[0371] The compensation block vector precision is the precision of the block vector for which compensation is performed through the intraTMP process in the decoding device, and may have, for example, a 1-pixel or sub-pixel value.
[0372] In addition, the block vector (BV) values obtained as described above are stored in memory according to the storage block vector precision, and for example, the block vector (BV) of a luma block may be stored in memory in units of 1 / 16 pixels, and the block vector (BV) of a chroma block may be stored in memory in units of 1 / 32 pixels.
[0373]
[0374] The intra prediction method described with reference to FIGS. 6 to 15 can be performed by a video encoding device and a video decoding device according to an embodiment of the present invention, and can be performed, for example, by an intra / IBC prediction unit (161) of a video encoder (100) illustrated in FIG. 1 or an intra / IBC prediction unit (261) of a video decoder (200) illustrated in FIG. 4.
[0375]
[0376] The methods described herein may be performed by a processor of a video encoder or video decoder. Furthermore, the encoder may generate a bitstream that is decoded by a video signal processing method, and the bitstream generated by the encoder may be stored in a computer-readable, non-transitory storage medium (recording medium).
[0377] The embodiments of the present invention described above may be implemented through various means. For example, the embodiments of the present invention may be implemented using hardware, firmware, software, or a combination thereof.
[0378] Some embodiments may also be implemented in the form of a computer-executable storage medium containing computer-executable instructions, such as program modules executed by a computer. Computer-readable media may be any available media that can be accessed by a computer, and includes both volatile and nonvolatile media, removable and non-removable media.
[0379] Additionally, computer-readable media may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storing information, such as computer-readable instructions, data structures, program modules, or other data. Communication media typically includes other data, such as computer-readable instructions, data structures, or program modules, in a modulated data signal, or other transport mechanism, and includes any information delivery media.
[0380] In addition, although the preferred embodiments of the present invention have been illustrated and described above, the present invention is not limited to the specific embodiments described above, and various modifications can be implemented by a person having ordinary skill in the art to which the present invention pertains without departing from the gist of the present invention claimed in the claims, and such modifications should not be understood individually from the technical idea or prospect of the present invention.
Claims
1. A method for performing intra prediction using a block vector indicating the location of a reference block within a screen, A step of obtaining a DM flag indicating whether a chroma block is encoded in Direct Mode; A step of checking whether the IBC (Intra Block Copy) mode is allowed for the chroma block when the chroma block is encoded in direct mode according to the obtained DM flag; If the IBC mode is allowed for the chroma block, a step of checking whether a luma block corresponding to the chroma block is encoded in the IBC or IntraTMP (Intra Template Matching Prediction) mode; and An intra prediction method comprising: a step of obtaining a block vector for the chroma block using a block vector for the corresponding luma block, when the corresponding luma block is encoded in IBC or IntraTMP mode.
2. In paragraph 1, An intra prediction method further comprising: a step of obtaining intra prediction mode information for the chroma block when the chroma block is not encoded in direct mode.
3. In paragraph 1, An intra prediction method in which whether the IBC mode is allowed for the above chroma block is confirmed using an IBC enable flag included in at least one of a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Picture Peader (PH), and a Slice Header (SH).
4. In paragraph 1, An intra prediction method further comprising: a step of determining an intra prediction mode of the chroma block as an intra prediction mode of the corresponding luma block when the IBC mode is not allowed for the chroma block.
5. In paragraph 1, An intra prediction method further comprising: a step of determining an intra prediction mode of the chroma block as an intra prediction mode of the corresponding luma block, if the corresponding luma block is not encoded in IBC or IntraTMP mode.
6. In paragraph 1, An intra prediction method in which, when the above chroma block is divided into a single tree structure, the corresponding luma block is a luma block at a position corresponding to the chroma block.
7. In paragraph 1, An intra prediction method in which, when the chroma block is divided into a dual tree structure, the corresponding luma block includes at least one of a center block (CT), an upper-left block (TL), an upper-right block (TR), a lower-left (BL), and a lower-right block (BR) at a position corresponding to the chroma block.
8. In paragraph 7, An intra prediction method in which it is confirmed whether the corresponding luma block is encoded in IBC or IntraTMP mode in the order of the center block (CT), the upper-left block (TL), the upper-right block (TR), the lower-left (BL), and the lower-right block (BR).
9. An image encoding device performing the method of any one of claims 1 to 8.
10. In paragraph 9, A video encoding device that inserts an IBC enable flag indicating whether IBC mode is allowed for a chroma block into at least one of a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Picture Peader (PH), and a Slice Header (SH), and inserts the DM flag as the first among syntaxes for the chroma block, and transmits the same as a bitstream.
11. An image decoding device performing the method of any one of claims 1 to 8.
12. In paragraph 11, A video decoding device that parses a bitstream to obtain an IBC enable flag indicating whether an IBC mode is allowed for a chroma block from at least one of a Sequence Parameter Set (SPS), a Picture Parameter Set (PPS), a Picture Peer (PH), and a Slice Header (SH), and obtains the DM flag inserted first among syntaxes for the chroma block.
Citation Information
Patent Citations
Apparatus and method for Intra Mode Decision
KR101754500B1
Percutaneous absorption system comprising oxybutynin
KR1020230026232A
Organic thin film to be used in photoelectric conversion device
KR1020230046241A
Manufacturing Apparatus of long-playing record
KR1020230130813A
Multi-functional bending tester for flexible electronics
KR102400126B1