WO2021015586A1 - 비디오 신호 처리 방법 및 장치 - Google Patents
비디오 신호 처리 방법 및 장치 Download PDFInfo
- Publication number
- WO2021015586A1 WO2021015586A1 PCT/KR2020/009783 KR2020009783W WO2021015586A1 WO 2021015586 A1 WO2021015586 A1 WO 2021015586A1 KR 2020009783 W KR2020009783 W KR 2020009783W WO 2021015586 A1 WO2021015586 A1 WO 2021015586A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- mmvd
- information
- block
- current block
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Definitions
- the present disclosure relates to a video signal processing method and apparatus, and more particularly, to a video signal processing method and apparatus for encoding or decoding a video signal.
- a method of decoding a video signal includes generating a merge candidate list of a current block, selecting a motion vector from a merge candidate list based on a merge index parsed from a bitstream, MMVD merge information If denotes that the current block uses MMVD, further comprising adding information about the MMVD to the motion vector to obtain a modified motion vector, and restoring the current block based on the modified motion vector,
- the motion vector is characterized by being greater than or equal to -2 ⁇ 17 and less than or equal to 2 ⁇ 17-1.
- the processor of the apparatus for decoding a video signal determines the MMVD offset when the absolute value of the first POC difference is greater than or equal to the absolute value of the second POC difference based on a command stored in the memory. If the first reference picture is obtained as information on MMVD, and the second reference picture is not a long-term reference picture, and the second reference picture is not a long-term reference picture, information on the first MMVD is scaled to obtain information on the second MMVD, and , When the first reference picture is a long-term reference picture or the second reference picture is a long-term reference picture, information on the second MMVD is obtained without scaling an absolute value of information on the first MMVD.
- the processor of the apparatus for decoding a video signal sets the MMVD offset to the second MMVD when the absolute value of the first POC difference is smaller than the absolute value of the second POC difference based on a command stored in the memory.
- the first reference picture is acquired as information about and the first reference picture is not a long-term reference picture and the second reference picture is not a long-term reference picture
- information on the first MMVD is obtained by scaling information on the second MMVD
- the first reference picture is a long-term reference picture or the second reference picture is a long-term reference picture
- information on the first MMVD is obtained without scaling an absolute value of information on the second MMVD.
- the position of the left block of the apparatus for decoding a video signal is (xCb-1, yCb-1 + (cbHeight ⁇ scallFactHeight) ), and xCb is the x-axis coordinate of the upper left sample of the current luma block.
- YCb is the y-axis coordinate of the upper left sample of the current luma block
- cbHeight is the size of the height of the current block
- scallFactHeight is the scale information of the y-axis
- the position of the upper block is (xCb-1 + (cbWidth ⁇ scallFactWidth) , yCb-1 )
- xCb is the x-axis coordinate of the upper left sample of the current luma block
- yCb is the y-axis coordinate of the upper left sample of the current luma block
- cbWidth is the size of the width of the current block
- scallFactWidth is the scale of the x-axis It is characterized by being information.
- a method of encoding a video signal includes the steps of generating information (mMvdLX) about MMVD of a current block, information related to the distance of MMVD and direction of MMVD based on the information about MMVD (mMvdLX) Generating information related to the current block, generating MMVD merge information (mmvd_merge_flag) indicating whether or not MMVD is used for the current block, and indicating whether or not the upper level MMVD (Merge with MVD) including the current block is available Generating level MMVD activation information (sps_mmvd_enabled_flag), and generating a bitstream based on information related to the distance of MMVD, information related to the direction of MMVD, MMVD merge information (mmvd_merge_flag), and high-level MMVD activation information (sps_mmvd_enabled_flag) Including the step of, and the information on the MMVD
- An apparatus for encoding a video signal includes a processor and a memory, and the processor generates high-level chroma component format information based on an instruction stored in the memory, and based on the chroma component format information.
- Obtains information related to width (SubWidthC) and information related to height (SubHeightC) obtains scale information of the x-axis based on information related to width or color component of the current block, and obtains information related to height or information related to the current block.
- the scale information of the y-axis is obtained based on information on the color component, the position of the left block is determined based on the scale information of the y-axis, the position of the upper block is determined based on the scale information of the x-axis, and the left block and the upper block Based on the determination of the weight, obtaining first samples predicting the current block in the merge mode, obtaining second samples predicting the current block in the intra mode, and obtaining the weight, first samples, and second samples It characterized in that the combination prediction sample for the current block is obtained based on.
- FIG. 3 shows an embodiment in which a coding tree unit is divided into coding units within a picture.
- FIG 5 and 6 illustrate in more detail an intra prediction method according to an embodiment of the present disclosure.
- FIG. 8 is a diagram illustrating a method of signaling a motion vector of a current block according to an embodiment of the present disclosure.
- FIG. 12 is a diagram illustrating multi-hypothesis prediction according to an embodiment of the present disclosure.
- 13 is a diagram illustrating syntax related to multi-hypothesis prediction according to an embodiment of the present disclosure.
- FIG. 18 is a diagram illustrating surrounding locations referenced in multi-hypothesis prediction according to an embodiment of the present disclosure.
- FIG. 19 is a diagram illustrating a method of referencing a surrounding mode according to an embodiment of the present disclosure.
- 22 is a diagram illustrating surrounding locations referred to in multi-hypothesis prediction according to an embodiment of the present disclosure.
- FIG. 23 is a diagram illustrating a method of referencing a surrounding mode according to an embodiment of the present disclosure.
- FIG. 30 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- FIG. 32 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- 35 is a diagram illustrating CIIP weight derivation according to an embodiment of the present disclosure.
- 41 is a diagram illustrating MV and CPMV derivation according to an embodiment of the present disclosure.
- the prediction unit 150 includes an intra prediction unit 152 and an inter prediction unit 154.
- the intra prediction unit 152 performs intra prediction within the current picture, and the inter prediction unit 154 predicts the current picture using a reference picture stored in the decoded picture buffer 156. Perform.
- the intra prediction unit 152 performs intra prediction from reconstructed samples in the current picture, and transmits intra encoding information to the entropy coding unit 160.
- the intra encoding information may include at least one of an intra prediction mode, a Most Probable Mode (MPM) flag, and an MPM index.
- Intra encoding information may include information on a reference sample.
- the inter prediction unit 154 may include a motion estimation unit 154a and a motion compensation unit 154b.
- the motion estimation unit 154a obtains a motion vector value of the current region by referring to a specific region of the reconstructed reference picture.
- the motion estimation unit 154a transmits a motion information set (reference picture index, motion vector information, etc.) for the reference region to the entropy coding unit 160.
- the motion compensation unit 154b performs motion compensation using the motion vector value transmitted from the motion estimation unit 154a.
- the inter prediction unit 154 transmits inter encoding information including motion information on the reference region to the entropy coding unit 160.
- the prediction unit 150 may include an intra block copy (BC) prediction unit (not shown).
- the intra BC prediction unit performs intra BC prediction from reconstructed samples in the current picture, and transfers intra BC encoding information to the entropy coding unit 160.
- the intra BC predictor refers to a specific region in the current picture and obtains a block vector value indicating a reference region used for prediction of the current region.
- the intra BC prediction unit may perform intra BC prediction using the obtained block vector value.
- the intra BC prediction unit transfers intra BC encoding information to the entropy coding unit 160.
- Intra BC encoding information may include block vector information.
- the filtering unit 230 improves image quality by filtering a picture.
- This may include a deblocking filter for reducing block distortion and/or an adaptive loop filter for removing distortion of an entire picture.
- the filtered picture is output or stored in the decoded picture buffer (DPB) 256 to be used as a reference picture for the next picture.
- DPB decoded picture buffer
- a reconstructed video picture is generated by adding a prediction value output from the intra prediction unit 252 or the inter prediction unit 254 and a residual value output from the inverse transform unit 225. That is, the video signal decoding apparatus 200 reconstructs the current block by using the prediction block generated by the prediction unit 250 and the residual obtained from the inverse transform unit 225.
- FIG. 2 shows the decoding apparatus 200 according to an exemplary embodiment of the present disclosure, and separately displayed blocks show elements of the decoding apparatus 200 by logically distinguishing them. Therefore, the elements of the decoding apparatus 200 described above may be mounted as one chip or as a plurality of chips according to the design of the device. According to an embodiment, the operation of each element of the decoding apparatus 200 described above may be performed by a processor (not shown).
- a node having a size of 2NX2N may be divided into two NX2N nodes by vertical binary division, and divided into two 2NXN nodes by horizontal binary division.
- a node of 2NX2N size is divided into nodes of (N/2)X2N, NX2N and (N/2)X2N by vertical ternary division, and horizontal binary division It can be divided into 2NX(N/2), 2NXN, and 2NX(N/2) nodes by.
- This multi-type tree division can be performed recursively.
- the term unit used herein may be used as a term to replace the prediction unit, which is a basic unit for performing prediction.
- the present disclosure is not limited thereto, and more broadly, it may be understood as a concept including the coding unit.
- the intra prediction unit may obtain a reference sample by performing a reference sample padding process. Also, the intra prediction unit may perform a reference sample filtering process to reduce an error in intra prediction. That is, filtered reference samples may be obtained by performing filtering on neighboring samples and/or reference samples obtained by the reference sample padding process. The intra prediction unit predicts samples of the current block using the reference samples thus obtained. The intra prediction unit predicts samples of the current block using unfiltered reference samples or filtered reference samples.
- peripheral samples may include samples on at least one reference line.
- the surrounding samples may include adjacent samples on a line adjacent to the boundary of the current block.
- the intra prediction unit determines reference samples and/or interpolated reference samples to be used for intra prediction of the current block, based on the intra prediction mode information of the current block.
- the intra prediction mode index indicates a specific angular mode
- a reference sample or an interpolated reference sample corresponding to the specific angle from the current sample of the current block is used for prediction of the current sample. Accordingly, different sets of reference samples and/or interpolated reference samples may be used for intra prediction according to the intra prediction mode.
- the decoder restores the sample values of the current block by adding the residual signal of the current block obtained from the inverse transform unit with the intra prediction value of the current block.
- one or more sets of motion information may be signaled.
- similarity between motion information sets for motion compensation of each of the plurality of blocks may be used.
- the motion information set used for prediction of the current block may be derived from the motion information set used for prediction of any one of the previously reconstructed other samples.
- the decoder can generate a merge candidate list.
- the decoder may generate a merge candidate list based on the plurality of candidate blocks.
- the merge candidate list may include candidates corresponding to samples that may have been predicted based on a motion information set related to the motion information set of the current block, among samples reconstructed before the current block.
- the merge candidate list may include a spatial candidate or a temporal candidate.
- the merge candidate list may be generated based on positions of samples reconstructed before the current block. Samples reconstructed before the current block may be neighboring blocks of the current block.
- the MVP candidate list may include at least one of a spatial candidate or a temporal candidate.
- the spatial candidate may be a set of motion information used for prediction of neighboring blocks within a certain range from the current block in the current picture.
- the spatial candidate may be configured based on available neighboring blocks among neighboring blocks of the current block.
- the temporal candidate may be a set of motion information used for prediction of a block in a picture different from the current picture.
- the temporal candidate may be configured based on a specific block corresponding to the position of the current block within a specific reference picture. In this case, the location of the specific block indicates the location of the top-left sample of the specific block in the reference picture.
- the MVP candidate list may include a zero motion vector.
- the MVP candidate list is an improved temporal motion vector candidate (advanced temporal motion vector prediction, ATMVP or subblock-based temporal motion vector prediction, SbTMVP) list, a merge candidate list for merge inter prediction, and a fine motion compensation.
- the decoder 820 may reconstruct the current block based on the motion vector of the current block.
- An inter prediction mode in which a motion vector predictor obtained from the MVP candidate list is used as a motion vector of the current block without a separate motion vector difference value may be referred to as a merge mode.
- the motion vector of the current block may be obtained by summing the motion vector predictor of the current block and a motion vector difference value.
- the motion vector difference value may be signaled from the encoder.
- the encoder may generate and signal information indicating the motion vector difference value by encoding the motion vector difference value.
- the absolute value of the difference value of the motion vector of the current block may be transformed into at least one flag.
- the transformed absolute value of the motion vector difference value may represent (absolute value of the motion vector difference value-N) according to the magnitude of the motion vector difference value.
- the modified absolute value of the motion vector difference value may be signaled through at least one bit.
- the number of bits signaled to indicate the modified absolute value of the difference value of the motion vector may be variable.
- the encoder may encode the transformed absolute value of the difference value of the motion vector using a variable length binarization method. For example, the encoder may use at least one of truncated unary binarization, unary binarization, truncated rice, or exp-Golomb binarization as the variable length binarization method.
- the sign of the motion vector difference value may be signaled through a sign flag (mvd_sign_flag). Meanwhile, the sign of the motion vector difference value may be implicitly signaled by sign-bit-hiding.
- [0] and [1] in FIG. 9 may represent component indexes.
- it can represent x-component and y-component.
- FIG. 10 is a diagram illustrating adaptive motion vector resolution signaling according to an embodiment of the present disclosure.
- the resolution can be signaled from the encoder to the decoder.
- the signaling for resolution may be the signaling binarized with the variable length described above. In this case, signaling overhead is reduced when signaling with the index corresponding to the smallest value (the value in front of it).
- the signaling index may be matched in order from high resolution (detail signaling) to low resolution.
- the three signaling can be 0, 10, 11, and each of the three signaling can correspond to resolution 1, resolution 2, and resolution 3.
- Signaling overhead is small when signaling resolution 1 because 1 bit is required to signal resolution 1 and 2 bits are required to signal the remaining resolution.
- resolution 1, resolution 2, and resolution 3 are 1/4, 1, and 4 pel, respectively.
- motion vector resolution may mean resolution of motion vector difference.
- a motion vector difference may be used in inter mode.
- a motion vector predictor may be determined based on a motion candidate index, and a motion vector may be determined based on the motion vector predictor and a motion vector difference.
- Whether to use the inter mode may be determined according to whether other modes are used. In another embodiment, whether to use the inter mode may be determined by a flag.
- FIG. 11 shows an example of using the inter mode when other modes such as skip mode and merge mode are not used.
- Inter mode may include AMVP mode, affine inter mode, and the like.
- Inter mode may be a mode for determining a motion vector based on a motion vector predictor and a motion vector difference.
- Affine inter mode may be a method of using a motion vector difference when determining a control point motion vector of affine motion prediction.
- encoding and decoding may be performed based on a prediction block.
- a prediction block may be generated based on a plurality of predictions. This can be called multi-hypothesis (MH) prediction.
- the prediction may mean a block generated by a certain prediction method.
- the prediction method in the plurality of predictions may include methods such as intra prediction and inter prediction.
- the prediction method in the plurality of predictions may be further subdivided to mean a merge mode, an AMVP mode, a specific mode of intra prediction, and the like.
- a Prediction block is generated based on Prediction 1 and Prediction 2.
- a prediction block is created with the weighted sum of Prediction 1 and Prediction 2, and the weights of Prediction 1 and Prediction 2 are w1 and w2, respectively.
- the weight of the plurality of predictions may be based on a position within the block.
- the weight of the multiple predictions may be based on the mode in which the prediction is generated.
- the motion of the current block and the spatial neighboring block referenced for the MC are the same or similar, and the prediction and motion near the spatial neighboring block are There is an academic rate that the prediction of the area including the existing object is more accurate than the other parts. Then, more residual signals may remain near the opposite side of the spatial neighboring block than other parts, which can be canceled out by using intra prediction in multi-hypothesis prediction. Since the position of the reference sample of the intra prediction may be near the spatial neighboring candidate of the inter prediction, the weight of the far side can be increased.
- predModeIntra is INTRA_ANGULAR50 and y ⁇ (nCbH/4), w is set equal to 6.
- mh_intra_flag may be a flag indicating whether to use multi-hypothesis prediction.
- multi-hypothesis prediction can be used only when mh_conditions are satisfied, and when mh_conditions are not satisfied, mh_intra_flag can be inferred to 0 without parsing.
- mh_conditions may include conditions related to block size.
- mh_conditions may include a condition regarding whether a specific mode is used. For example, when merge_flag is 1 and subblock_merge_flag is 0, it is possible to pars mh_intra_flag.
- multi-hypothesis prediction may be performed based on prediction generated by inter prediction and prediction generated by intra prediction.
- when generating prediction by intra prediction there may be a total of four candidate modes. And a total of 4 candidate modes can be divided into list 1 and list 2 into 3 and 1. In this case, when list 2 is selected, the index may not be signaled.
- list 1 when list 1 is selected, an index can be signaled. Since there are three candidates included in list 1, 1-bit or 2-bit may be required for index signaling by signaling by variable length coding.
- signaling indicating which list is to be used may exist.
- mh_intra_luma_mpm_flag may be such a signaling.
- 15 is a diagram illustrating syntax related to multi-hypothesis prediction according to an embodiment of the present disclosure.
- a condition for inferring a signaling value indicating which list is used may be a condition in which a larger one of the width and height of a current block is greater than twice the smaller one. If the width and height of the current block are cbWidth and cbHeight, respectively, the Abs(Log2(cbWidth/cbHeight)) value is 0 when cbWidth and cbHeight are the same, and 1 when the difference is 2 times. Therefore, when the difference between cbWidth and cbHeight is greater than twice, the value of Abs(Log2(cbWidth/cbHeight)) is greater than 1 (more than 2).
- 16 is a diagram illustrating a method of determining a multi-hypothesis prediction mode according to an embodiment of the present disclosure.
- the mode determination may be made based on a plurality of lists.
- the mode may mean an intra mode that generates prediction based on intra prediction.
- the plurality of lists may include list1 and list2. Referring to FIG. 16, it may be determined whether list1 is used as list1_flag. In addition, there may be a number of candidates that can belong to list1, and there can be one candidate that can belong to list2. Also, a number of lists may be two lists.
- 17 is a diagram illustrating a method of generating a candidate list according to an embodiment of the present disclosure.
- variable length coding an index that determines a candidate mode in a list there may be a method of determining the order of modes included in a candidate list in order to increase coding efficiency. For example, there may be a method of determining the order of modes included in list1. At this time, you can refer to the mode around the current block to determine the mode order. Also, list2 can be determined without referring to the mode surrounding the current block. For example, you can create list1 by referring to the mode surrounding the current block, and include modes that are not included in list1 in list2.
- list1 may be in MPM mode and list2 may be in non-MPM mode. Also, there are 4 candidate modes, and 3 can be included in list1 and 1 mode in list2.
- list1_flag is a signaling indicating whether List1 is used. If List1 is used, List1 is created, and the mode can be selected from List1. At this time, the creation of List1 and the check of whether to use List1 can be done in any order. However, in a situation where List1 is used, List1 can be created before or after checking whether List1 is used. Also, when List1 is used, it is possible not to perform the process of creating List2. If List1 is not used, List2 is created and the mode can be selected from List2. At this time, it is possible to create List1 to create List2. And among candidate modes, it is possible to include candidates that are not included in List1 in List2.
- the method of creating List1 may be the same regardless of whether List1 is used (list1_flag value), whether List1 is used, infer, or the like.
- the list signaling and mode signaling may follow the embodiments described above in FIG. 16 and the like.
- a candModeList may be generated by referring to a mode around a current block.
- candModeList may be List1 described in the previous embodiments.
- there may be a mode around a current block or candIntraPredModeX, which is a mode based on a mode around the current block.
- X may be a character to refer to a specific location around the current block, such as A and B.
- a candModeList may be generated based on whether a plurality of candIntraPredModeXs match.
- candIntraPredModeX can exist for two positions, and can be represented by candIntraPredModeA and candIntraPredModeB. If candIntraPredModeA and candIntraPredModeB are the same, candModeList may include planar mode and DC mode.
- candIntraPredModeA and candIntraPredModeB are the same and the value indicates planar mode or DC mode
- the mode indicated by candIntraPredModeA and candIntraPredModeB can be added to candModeList.
- modes that are not indicated by candIntraPredModeA and candIntraPredModeB can be added to candModeList.
- a preset mode other than the planar mode or DC mode can be added to the candModeList.
- the order of the planar mode and the DC mode in the candModeList of the preset mode may be preset.
- candModeList[0] planar mode
- candModeList[1] DC mode
- candModeList[2] the preset mode.
- the preset mode may be a vertical mode.
- planar mode, DC mode the mode indicated by candIntraPredModeA and candIntraPredModeB among the preset modes is at the front of candModeList, and among the planar mode and DC mode, the mode not indicated by candIntraPredModeA and candIntraPredModeB is next to candModeList. It is possible to come, and the preset mode comes next.
- candIntraPredModeA and candIntraPredModeB can be added to candModeList.
- candIntraPredModeA and candIntraPredModeB may be included in candModeList according to a specific order.
- candIntraPredModeA, candIntraPredModeB may be included in the candModeList in the order.
- there may be a preset order between candidate modes, and a mode other than candIntraPredModeA and candIntraPredModeB among the modes according to the preset order may be added to candModeList.
- modes other than candIntraPredModeA and candIntraPredModeB may be behind candIntraPredModeA and candIntraPredModeB in candModeList.
- the preset order may be a planar mode, a DC mode, and a vertical mode.
- candIntraPredModeC a mode that is not included in candModeList may be candIntraPredModeC. Also, candIntraPredModeC may be included in List2. It is also possible to set candIntraPredModeC in the case that the signaling indicating whether list1 is used or not is used as described above.
- a process of modifying candModeList may be added after creating candModeList.
- the modification process may or may not be additionally performed according to the current block size condition.
- the current block size condition may be based on the width and height of the current block. For example, when a larger one of the width and height of the current block is larger than n times of the other, the modification process may be additionally performed. n may be 2.
- the modification process may be a process of replacing the mode with another mode when a mode is included in the candModeList.
- the candModeList when vertical mode is included in candModeList, horizontal mode can be put in candModeList instead of vertical mode.
- the candIntraPredModeC when vertical mode is included in candModeList, the candIntraPredModeC may be put into candModeList instead of vertical mode.
- the use of this modification process may be when the height of the current block is greater than n times the width. For example, n may be 2. This may be because if the height is greater than the width, the lower part of the block is far from the reference sample of the intra prediction, so the accuracy of the vertical mode may be low.
- the use of this modification process may be inferred by using list1.
- IntraPredModeY may be a mode used in intra prediction in multi-hypothesis prediction. Also, this can be the mode of luma component. In an embodiment, in multi-hypothesis prediction, the intra prediction mode of the chroma component may follow the mode of the luma component.
- mh_intra_luma_mpm_flag may be a signaling indicating which list to use. That is, for example, it may be mh_intra_luma_mpm_flag of FIGS. 13 to 15 and list1_flag of FIGS. 16 to 17.
- mh_intra_luma_mpm_idx may be an index indicating which candidate to use in the list. That is, for example, it may be mh_intra_luma_mpm_idx of FIGS. 13 to 15 and list1_index of FIG. 16.
- xCb and yCb may be the x and y coordinates of the top-left of the current block.
- cbWidth and cbHeight may be the width and height of the current block.
- candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC)
- candModeList[ 0] and candModeList[ 1] are derived as follows:
- IntraPredModeY[ xCb ][ yCb] is derived by applying the following procedure:
- IntraPredModeY[ xCb ][ yCb] is set to equal to candIntraPredModeC, derived by applying the following steps:
- FIG. 18 is a diagram illustrating surrounding locations referenced in multi-hypothesis prediction according to an embodiment of the present disclosure.
- FIG. 19 is a diagram illustrating a method of referencing a surrounding mode according to an embodiment of the present disclosure.
- candIntraPredModeX may be a preset mode.
- candIntraPredModeX when the surrounding location is above the CTU to which the current block belongs, candIntraPredModeX may be a preset mode. As another example, if the surrounding location is outside the CTU to which the current block belongs, candIntraPredModeX may be a preset mode.
- the preset mode may be a DC mode. In another embodiment, the preset mode may be a planar mode.
- candIntraPredModeX can be set as whether the mode of the surrounding location exceeds the threshold angle or whether the index of the mode of the surrounding location exceeds the threshold.
- candIntraPredModeX can be set as a vertical mode index when the mode index of the peripheral location is larger than the diagonal mode index.
- candIntraPredModeX can be set as the horizontal mode index.
- Diagonal mode index may be mode 34 in FIG. 6.
- mh_intra_flag may be signaling indicating whether to use (or use) multi-hypothesis prediction.
- the intra prediction mode used in the neighboring block may be X.
- the current block can use multi-hypothesis prediction, and a candidate list can be generated using candIntraPredMode based on the mode of the neighboring block. Since the neighboring block did not use the multi-hypothesis prediction, what is the intra prediction mode of the neighboring block? It is possible to set candIntraPredMode to DC mode, which is a preset mode, regardless of whether or not, and whether neighboring blocks use intra prediction.
- candIntraPredModeX is set equal to INTRA_DC.
- variable availableX is equal to FALSE.
- X is equal to B and yCb-1 is less than ((yCb >> CtbLog2SizeY) ⁇ CtbLog2SizeY ).
- candIntraPredModeX is set equal to IntraPredModeY[ xNbX ][ yNbX ].
- 20 is a diagram illustrating a method of generating a candidate list according to an embodiment of the present disclosure.
- List1 can be created by referring to modes around the current block, and a mode not included in List1 among candidate modes can be put into List2. Since there is spatial similarity in the picture, referencing the surrounding mode may have a high priority. In other words, List1 may have a higher priority than List2.
- the flag and index are used to signal, and the mode of List2 is used. Only flags can be used to do so. In other words, a bit with fewer signaling in List2 can be used. However, it may not be good in terms of coding efficiency that more bits are used for signaling in the mode of the high priority list. Therefore, there may be a method of using signaling of fewer bits in a high-priority list and mode as in the present disclosure.
- a method of generating a candidate list may be different depending on whether only List1 is available. Whether only List1 is available can indicate whether the signaling indicating the list to be used is inferred. For example, when there is List3 created by a preset method with candidate modes, List3 can be divided into List1 and List2. For example, List3 and the method for generating List3 and the method for generating it by a preset method may be the aforementioned candModeList and the method for generating the same. If the signaling indicating the list to be used is inferred, only List1 can be used, and in that case, List1 can be filled from the beginning of List3.
- List1 or List2 can be used.
- List2 can be filled from the beginning of List3 and the rest can be filled into List1.
- candIntraPredModeX can be put into the candidate list by referring to the mode around the current block. If the signaling pointing to the list of candIntraPredModeX is inferred, it can be put in List1, and if it is not inferred, it can be put in List2.
- List2[0] candIntraPredModeA
- List1[0] candIntraPredModeB
- List1[1] and List1[2] can be filled out of planar mode, DC mode, vertical mode, and horizontal mode from those other than candIntraPredModeA and candIntraPredModeB.
- 21 is a diagram illustrating a method of generating a candidate list according to an embodiment of the present disclosure.
- one candidate list including all candidate modes of multi-hypothesis prediction may be generated. Since there is only one candidate list, referring to FIG. 21(b), there may be no signaling for selecting a list, and index signaling indicating which of the modes of the candidate list to use may be present. Therefore, if mh_intra_flag indicating whether to use multi-hypothesis prediction is 1, the candidate index mh_intra_luma_idx can be parsed.
- a method of generating a candidate list for a multi-hypothesis prediction may be in a form in which List1 and List2 are joined in order in the method of generating List1 and List2 described above with reference to FIG. 17.
- candIntraPredModeA and candIntraPredModeB are the same and planar mode or DC mode
- candModeList[0] candIntraPredModeA
- candModeList[1] !candIntraPredModeA
- candModeList[2] vertical mode
- candModeList[3] horizontal mode.
- candModeList[0] candIntraPredModeA
- candModeList[1] candIntraPredModeB
- modes other than candIntraPredModeA and candIntraPredModeB can be sequentially entered according to a preset order of candidate modes.
- the preset order may be a planar mode, a DC mode, a vertical mode, and a horizontal mode.
- a candidate list may vary according to a block size condition. If the larger of the block width and height is greater than n times the other, the candidate list can be shorter. For example, when the width is greater than n times the height, the horizontal mode can be subtracted from the candidate list from the candidate list described in FIG. 21 and filled by pulling the mode behind it. In addition, when the height is greater than n times the width, the vertical mode can be subtracted from the candidate list from the candidate list described in FIG. 21 and filled by pulling the mode behind it. Therefore, when the width is greater than n times the height, the size of the candidate list may be 3. Also, when the width is greater than n times the height, it is possible that the candidate list size is smaller than or equal to the other.
- the candidate index of the embodiment of FIG. 21 may be variable length coded. This may be to increase the signaling efficiency by putting the mode that is more likely to be used at the front of the list.
- the candidate index of the embodiment of FIG. 21 may be fixed length coded.
- the number of modes used in multi-hypothesis prediction may be the number of powers of 2. For example, as described above, it can be used among four intra prediction modes. In this case, this may be because an unassigned value does not occur even if fixed length coding is performed, so that unnecessary parts are not generated in signaling.
- the number of list construction may be one. This is because the number of bits is the same no matter which index is signaled.
- the candidate index may be variable length coded or fixed length coded depending on the case.
- the size of the candidate list may vary depending on the case.
- the candidate index may be variable length coded or fixed length coded according to the size of the candidate list. For example, if the candidate list size is a power of 2, it may be fixed length-coded, and if it is not the power of 2, it may be variable length-coded. That is, according to the previous embodiment, the coding method may be changed according to the block size condition.
- the weight of the prediction block may be the same as adjusting the weight of the prediction block since the weight between a plurality of predictions may be the same for the entire block. Therefore, DC mode can be excluded from multi-hypothesis prediction.
- a list can be created in a fixed order. For example, it may be in the order of planar mode, vertical mode, and horizontal mode.
- candModeList[0] candIntraPredModeA
- candModeList[1] candIntraPredModeB
- candModeList[2] candIntraPredModeA and not candIntraPredModeB.
- the three modes may include a planar mode and a DC mode.
- the three modes may include one of a vertical mode and a horizontal mode according to conditions.
- the condition may be a condition related to block size. For example, it is possible to decide whether to include a horizontal mode or a vertical mode depending on whether the block's width or height is large. For example, if the width of the block is larger than the height, a vertical mode can be included. When the height of the block is greater than the width, a horizontal mode can be included. When the height and width of the block are the same, a promised mode of vertical mode or horizontal mode may be included.
- a list can be created in a fixed order. For example, it may be in the order of planar mode, DC mode, vertical or horizontal mode.
- a flag for indicating which mode to use in multi-hypothesis prediction may be signaled.
- a specific mode may be excluded according to the block size. For example, if the block size is small, certain modes can be excluded. For example, when the block size is small, it is possible to use only planar mode in multi-hypothesis prediction. If a specific mode is excluded, it is possible to omit or reduce mode signaling and signal.
- One of the modes may be a planar mode.
- the one mode may be determined based on a block size among vertical mode and horizontal mode. For example, depending on which of the block's width and height is larger, it can be determined between vertical mode and horizontal mode. For example, when the width of a block is larger than the height, it is possible to determine vertical mode, and when the height of the block is larger than the width, it is possible to determine horizontal mode. If the width and height of the block are the same, it is possible to determine the preset mode. If the width and height of the block are the same, it is possible to determine a preset mode among horizontal mode or vertical mode. If the width and height of the block are the same, it is possible to determine a preset mode among planar mode or DC mode.
- the opposite residual residual can be removed by flipping.
- this can have the effect of reducing candidate modes available in multi-hypothesis prediction. More specifically, for example, in the case of using only one mode among the above embodiments, it is possible to use flipping. Through this, prediction performance can be improved.
- the flipping may mean flipping on the x-axis, flipping on the y-axis, or flipping on both the x and y axes. In one embodiment, it is possible to determine the flipping direction based on the mode selected in multi-hypothesis prediction.
- the mode selected in multi-hypothesis prediction when the mode selected in multi-hypothesis prediction is planar mode, it may be determined that it is flipping for both the x and y axes. Also, flipping about both the x and y axes may be according to the block shape. For example, if the block is not square, it can be determined not to flipping on both the x and y axes.
- the mode selected in the multi-hypothesis prediction is the horizontal mode, it may be determined that it is flipping about the x-axis.
- the mode selected in the multi-hypothesis prediction when the mode selected in the multi-hypothesis prediction is a vertical mode, it may be determined that it is flipping about the y-axis.
- the mode selected in the multi-hypothesis prediction is DC mode, it is possible to determine that there is no flipping and do not perform explicit signaling.
- DC mode can have an effect similar to illumination compensation. Therefore, according to an embodiment of the present disclosure, if one of the DC mode and the illumination compensation method is used in the multi-hypothesis prediction, the other may not be used.
- the generalized bi-prediction may not be used.
- the relationship between the multi-hypothesis prediction and the generalized bi-prediction may be limited to when a specific mode of multi-hypothesis prediction, for example, a DC mode is used.
- using the generalized bi-prediction may not use a specific mode of multi-hypothesis prediction or multi-hypothesis prediction.
- Not using any method may mean not signaling for the above method and not parsing related syntax.
- neighboring locations can be referenced in the process of creating a candidate list for multi-hypothesis prediction.
- candIntraPredModeX mentioned above may be required.
- FIG. 23 is a diagram illustrating a method of referencing a surrounding mode according to an embodiment of the present disclosure.
- neighboring positions may be referred to.
- candIntraPredModeX when the neighboring positions do not use multi-hypothesis prediction, candIntraPredModeX is set to a preset mode. This may be because when setting candIntraPredModeX, the mode of the surrounding location may not be candIntraPredModeX as it is.
- candIntraPredModeX can be set to the mode used by the surrounding location.
- candIntraPredModeX can be set to the mode used by the surrounding location.
- candIntraPredModeX can be set to the mode used by the surrounding location.
- the surrounding location is to the left of the current block, even if the surrounding location does not use multi-hypothesis prediction, if the mode used by the surrounding location is horizontal mode, candIntraPredModeX can be set to the mode used by the surrounding location.
- mh_intra_flag may be a signaling indicating whether to use (or use) multi-hypothesis prediction.
- the intra prediction mode used in the neighboring block may be a horizontal mode.
- the current block can use multi-hypothesis prediction, and the candidate list can be generated using candIntraPredMode based on the mode of the neighboring block. Even if the neighboring block does not use the multi-hypothesis prediction, the intra prediction mode of the neighboring block is specific. mode, for example, because it is horizontal mode, candIntraPredMode can be set to horizontal mode.
- the availability derivation process for a block as specified in Neighboring blocks availability checking process is invoked with the location (xCurr, yCurr) set equal to (xCb, yCb) and the neighboring location (xNbY, yNbY) set equal to (xNbX, yNbX) as inputs, and the output is assigned to availableX.
- candIntraPredModeX is set equal to INTRA_DC.
- variable availableX is equal to FALSE.
- mh_intra_flag[ xNbX ][ yNbX] is not equal to 1, and IntraPredModeY[ xNbX ][ yNbX] is neither INTRA_ANGULAR50 nor INTRA_ANGULAR18.
- X is equal to B and yCb-1 is less than ((yCb >> CtbLog2SizeY) ⁇ CtbLog2SizeY ).
- candIntraPredModeX is set equal to IntraPredModeY[ xNbX ][ yNbX ].
- the availability derivation process for a block as specified in Neighboring blocks availability checking process is invoked with the location (xCurr, yCurr) set equal to (xCb, yCb) and the neighboring location (xNbY, yNbY) set equal to (xNbX, yNbX) as inputs, and the output is assigned to availableX.
- candIntraPredModeX is set equal to INTRA_DC.
- variable availableX is equal to FALSE.
- mh_intra_flag[ xNbX ][ yNbX] is not equal to 1, and IntraPredModeY[ xNbX ][ yNbX] is neither INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR50 nor INTRA_ANGULAR18.
- X is equal to B and yCb-1 is less than ((yCb >> CtbLog2SizeY) ⁇ CtbLog2SizeY ).
- candIntraPredModeX may be determined according to the neighboring mode reference method.
- intra prediction can be generated by using samples around the current block as a reference sample.
- a mode using reconstructed samples may be used.
- the mode using reconstructed samples may not be used.
- the reconstructed sample may be a reconstructed sample around the current block.
- An example of a mode using the reconstructed sample may be template matching.
- the reconstructed samples at a preset location based on a block can be defined as a template.
- Template matching may be an operation to find a block with a small cost by comparing the cost of the template of the blocks to be compared with the template of the current block.
- cost can be defined as the sum of the absolute difference of the template and the sum of the squares of the difference. For example, it is possible to search for a block that is expected to be similar to the current block through template matching between blocks of the current block and the reference picture, and based on this, a motion vector may be set or a motion vector may be refined.
- Examples of a mode using the reconstructed sample may include motion compensation and motion vector refinement using the reconstructed sample.
- a reconstructed sample around a current block may be changed according to a candidate index.
- a reconstructed sample around the current block may be used. If the candidate index is small, the number of candidate index signaling bits may be small, candidate accuracy may be high, and it is possible to further increase the accuracy by using reconstructed samples for high coding efficiency.
- the candidate index is greater than a threshold, reconstructed samples around the current block may be used. If the candidate index is large, the number of candidate index signaling bits may be large and the candidate accuracy may be low, and accuracy may be supplemented by using the reconstructed sample around the current block for a candidate with low accuracy.
- an inter prediction is generated using reconstructed samples around a current block, and a prediction block is generated by combining the inter prediction with the intra prediction of the multi-hypothesis prediction. It is possible.
- mh_intra_flag which is a signaling indicating whether the current block uses multi-hypothesis prediction. Since the current block uses multi-hypothesis prediction, a mode that uses reconstructed samples around the current block can be used.
- a transform mode that transforms only a sub-part of a block.
- This transform mode may be referred to as a sub-block transform (SBT) or a spatially varying transform (SVT).
- SBT sub-block transform
- SVT spatially varying transform
- a CU or PU may be divided into a plurality of TUs and only some of the plurality of TUs may be transformed. For example, only one TU among a plurality of TUs can be transformed.
- a TU that does not transform may have a residual of 0.
- the height of the plurality of TUs may be the same as the height of the CU or PU, and the width of the plurality of TUs may be of a type different from that of the CU or PU.
- a height of a plurality of TUs may be different from a height of a CU or a PU, and a width of the plurality of TUs may be of the same type as the CU or PU width.
- the width and position of the transforming TU of the SVT-V may be signaled.
- the height and position of the transforming TU of the SVT-H may be signaled.
- a transform kernel according to the SVT type, position, and width or height may be preset.
- the transform position marked A is defined in two places, and the width or height is defined as 1/2 or 1/4 of the CU width or CU height. have.
- the residual may be set to a zero value for portions other than the area marked A.
- conditions under which SBT can be used may include a condition related to a block size, a signaling value for availability in a high level (eg sequence, slice, tile, etc.) syntax.
- the transform mode may be the SVT described in FIG. 25. That is, whether to use SVT may be determined according to whether to use multi-hypothesis prediction. Alternatively, whether to use multi-hypothesis prediction may be determined according to whether or not SVT is used. This is because the prediction performance for the entire block can be improved through multi-hypothesis prediction, and the phenomenon that residuals are collected only in part of the block can occur less.
- a position of a TU to be transformed by an SVT may be limited according to whether a multi-hypothesis prediction is used or a mode of a multi-hypothesis prediction.
- the width (SVT-V) or height (SVT-H) of the transforming TU of the SVT may be limited according to whether the multi-hypothesis prediction is used or the mode of the multi-hypothesis prediction. Therefore, it is possible to reduce the signaling about the position, width or height.
- the position of the TU to be SVT transformed may not be the side where the weight of intra prediction may be large in multi-hypothesis prediction. This is because the residual with the larger weight can be reduced by multi-hypothesis prediction.
- position 1 of FIG. 25 may be omitted.
- the position of the TU to be SVT transformed may be limited.
- the value of the width or height of the TU to be SVT transformed may be different.
- the value of the width or height of the TU to be SVT transformed may be different.
- a large value of the width or height of the TU to be SVT transformed can be excluded because there may not be much residual in a wide part of the block.
- the value of the width or height of the SVT transforming TU which is the same as the unit in which the weight is changed in the multi-hypothesis prediction, can be excluded.
- cu_sbt_flag indicating whether to use SBT and mh_intra_flag indicating whether to use multi-hypothesis prediction may exist.
- mh_intra_flag 0
- cu_sbt_flag can be parsed. Also, if cu_sbt_flag does not exist, it can infer to 0.
- sbtBlockConditions in FIG. 26 may indicate conditions in which SBT is possible.
- Conditions in which SBT is possible may include a condition related to a block size, a signaling value of availability in a high level (eg sequence, slice, tile, etc.) syntax.
- a color format may be indicated by chroma format information (chroma_format_idc), a chroma format, separate_colour_plane_flag, and the like.
- the chroma array can be half width and half height of luma array.
- the information related to the width (SubWidthC) and the information related to the height (SubHeightC) may be all 2.
- Information related to the width (SubWidthC) and information related to the height (SubHeightC) can indicate how the chroma array is sized compared to the luma array, and information related to the width (SubWidthC) when the chroma array width or height is half the size of the luma array.
- height-related information (SubHeightC) may be 2
- chroma array width or height may be 1 in terms of width-related information (SubWidthC) or height-related information (SubHeightC) having the same size as the luma array.
- the chroma array can be half width and the same height of the luma array.
- SubWidthC and SubHeightC may be 2 and 1, respectively.
- the relationship between the two may be as follows.
- widthL widthC * SubWidthC
- the relationship between the two may be as follows.
- 1 chroma sample (1 Cb, 1 Cr) per 2 luma samples may be located in the horizontal direction.
- 1 chroma sample (1 Cb, 1 Cr) per 2 luma samples can be located in the vertical direction.
- one chroma sample (1 Cb, 1 Cr) may be positioned per 2 luma samples in the horizontal direction.
- 1 chroma sample (1 Cb, 1 Cr) per luma sample may be located in the vertical direction.
- SubWidthC and SubHeightC described in FIG. 27 may be determined based on this relationship, and conversion between luma sample criteria and chroma sample criteria may be performed based on SubWidthC and SubHeightC.
- a neighboring position may be referred to when performing prediction.
- CIIP may be the multi-hypothesis prediction described above.
- CIIP may be a combined inter-picture merge and intra-picture prediction. That is, CIIP may be a prediction method in which inter prediction (eg, merge mode inter prediction) and intra prediction are combined.
- inter prediction and intra prediction by referring to surrounding locations. For example, it is possible to determine the ratio of inter prediction to intra prediction by referring to surrounding locations. Alternatively, it is possible to determine weighting when combining inter prediction and intra prediction by referring to surrounding locations. Alternatively, it is possible to determine the weighting when the inter prediction and intra prediction are weighted sum (weighted average) by referring to the surrounding locations.
- the referenced peripheral location may include NbA and NbB.
- the coordinates of NbA and NbB may be (xNbA, yNbA), (xNbB, yNbB), respectively.
- NbA may be the left position of the current block. More specifically, when the top-left coordinate of the current block is (xCb, yCb), and the width and height of the current block are cbWidth and cbHeight, respectively, NbA may be (xCb-1, yCb + cbHeight-1).
- the top-left coordinates (xCb, yCb) of the current block may be values based on luma samples. Alternatively, the top-left coordinates (xCb, yCb) of the current block may be the location of the top-left sample luma of the current luma coding block with respect to the top-left luma sample of the current picture.
- cbWidth and cbHeight may be values based on a corresponding color component.
- the coordinates described above may be for a luma component (luma block).
- cbWidth and cbHeight may be values based on a luma component.
- NbB may be a position above the current block. More specifically, when the top-left coordinate of the current block is (xCb, yCb) and the width and height of the current block are cbWidth and cbHeight, respectively, NbB may be (xCb + cbWidth-1, yCb-1).
- the top-left coordinates (xCb, yCb) of the current block may be values based on luma samples. Alternatively, the top-left coordinates (xCb, yCb) of the current block may be the location of the top-left sample luma of the current luma coding block with respect to the top-left luma sample of the current picture.
- NbA may be the left position of the current block. More specifically, when the top-left coordinate of the current block is (xCb, yCb), and the width and height of the current block are cbWidth and cbHeight, respectively, NbA may be (xCb-1, yCb + 2* cbHeight-1). .
- the top-left coordinates (xCb, yCb) of the current block may be values based on luma samples. Alternatively, the top-left coordinates (xCb, yCb) of the current block may be the location of the top-left sample luma of the current luma coding block with respect to the top-left luma sample of the current picture.
- NbB may be a position above the current block. More specifically, when the top-left coordinate of the current block is (xCb, yCb) and the width and height of the current block are cbWidth and cbHeight, respectively, NbB may be (xCb + 2 * cbWidth-1, yCb-1). .
- the top-left coordinates (xCb, yCb) of the current block may be values based on luma samples. Alternatively, the top-left coordinates (xCb, yCb) of the current block may be the location of the top-left sample luma of the current luma coding block with respect to the top-left luma sample of the current picture.
- the cbWidth and cbHeight may be values based on a corresponding color component.
- the coordinates described above may be for a chroma component (chroma block).
- cbWidth and cbHeight may be values based on a chroma component.
- this coordinate may correspond to the case of 4:2:0 format or 4:2:2 format.
- FIG. 30 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- the embodiment of FIG. 30 may relate to a method of combining two or more prediction signals.
- the embodiment of FIG. 30 can be applied to the case of using CIIP.
- the embodiment of FIG. 30 may include the method of referring to surrounding locations described in FIG. 29.
- x?y:z represents a y value when x is true or when x is not 0, otherwise (when x is false (or when x is 0)) z value It may be something to indicate.
- (xNbA, yNbA) and (xNbB, yNbB), which are coordinates of the referenced surrounding locations NbA and NbB, can be set.
- (xNbA, yNbA) and (xNbB, yNbB) for the luma component are (xCb-1, yCb + cbHeight-1), (xCb + cbWidth-1, yCb-1), respectively.
- (xNbA, yNbA) and (xNbB, yNbB) are (xCb-1, yCb + 2 * cbHeight-1), (xCb + 2 * cbWidth-1, yCb-1) days, respectively.
- the operation of multiplying 2 ⁇ n may be equivalent to left shifting n bits.
- the operation of multiplying by 2 may be equivalent to left shifting 1 bit.
- left shifting of x by n bits may be represented by “x ⁇ n”.
- dividing by 2 ⁇ n may be equivalent to right shifting n bits.
- dividing by 2 ⁇ n and discarding the decimal point may be equivalent to right shifting n bits.
- dividing by 2 may be equivalent to right shifting 1 bit.
- right shifting of x by n bits can be expressed as “x >> n”.
- cbWidth and cbHeight may be expressed based on each color component. For example, when the width and height based on the luma component are cbWidthL and cbHeightL, respectively, when performing the weighted sample prediction process for the luma component, cbWidth and cbHeight may be cbWidthL and cbHeightL, respectively. .
- a prediction mode of a corresponding location may be determined by referring to a surrounding location. For example, it may be determined whether the prediction mode is intra prediction. Further, the prediction mode may be indicated by CuPredMode. When CuPredMode is MODE_INTRA, intra prediction may be used. Also, the CuPredMode values can be MODE_INTRA, MODE_INTER, MODE_IBC, and MODE_PLT. When CuPredMode is MODE_INTER, intra prediction may be used. In addition, when CuPredMode is MODE_IBC, intra block copy (IBC) may be used. In addition, when CuPredMode is MODE_PLT, the palette mode may be used.
- CuPredMode may be indicated according to a channel type (chType) and a location. For example, it may be represented by CuPredMode[chType][x][y], and this value may be a CuPredMode value for the channel type chType at the (x, y) position.
- chType may be based on a tree type.
- the tree type (treeType) may be set to values such as SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA, and the like. In the case of SINGLE_TREE, there may be a part where the block partitioning of the luma component and the chroma component are shared.
- the block partitioning of the luma component and the chroma component may be the same.
- the block partitioning of the luma component and the chroma component may be the same or partially the same.
- block partitioning of the luma component and the chroma component may be performed using the same syntax element value.
- block partitioning of the luma component and the chroma component may be independent.
- block partitioning of the luma component and the chroma component may be performed by different syntax element values.
- the treeType value may be DUAL_TREE_LUMA or DUAL_TREE_CHROMA. If the treeType is DUAL_TREE_LUMA, DUAL TREE is used and it can indicate that it is a process for luma components. If the treeType is DUAL_TREE_CHROMA, DUAL TREE is used and it can indicate that it is a process for chroma components. Also, chType may be determined based on whether the tree type is DUAL_TREE_CHROMA. For example, chType may be set to 1 when the treeType is DUAL_TREE_CHROMA, and may be set to 0 when the treeType is not DUAL_TREE_CHROMA.
- a value of CuPredMode[0][xNbX][yNbY] may be determined.
- X can be replaced by A and B. That is, it is possible to determine the CuPredMode values for the positions of NbA and NbB.
- the isIntraCodedNeighbourX value may be set based on determining the prediction mode for the surrounding location. For example, the isIntraCodedNeighbourX value may be set according to whether the CuPredMode for the surrounding location is MODE_INTRA. If the CuPredMode for the surrounding location is MODE_INTRA, the isIntraCodedNeighbourX value can be set to TRUE, and if the CuPredMode for the surrounding location is not MODE_INTRA, the isIntraCodedNeighbourX value can be set to FALSE. As described above, in the present disclosure to be described below, X may be replaced with A or B. Also, what is written X can indicate that it corresponds to the X position.
- Whether a corresponding location is available may be set as availableX.
- isIntraCodedNeighbourX may be set based on availableX. For example, when availableX is TRUE, isIntraCodedNeighbourX may be set to TRUE. For example, when availableX is FALSE, isIntraCodedNeighbourX may be set to FALSE.
- whether a corresponding location is available may be determined by “The derivation process for neighboring block availability”. Also, whether the corresponding location is available may be determined based on whether the corresponding location is inside the current picture.
- the current picture is deviated and availableX may be set to FALSE.
- xNbY is greater than or equal to the picture width, it is out of the current picture, and availableX may be set to FALSE.
- Picture width can be indicated by pic_width_in_luma_samples.
- yNbY is greater than or equal to the picture height, it is out of the current picture and availableX may be set to FALSE.
- Picture height can be indicated by pic_height_in_luma_samples.
- availableX may be set to FALSE when the corresponding location is on a different brick or a different slice from the current block. Also, when reconstruction of the corresponding location is not completed, availableX may be set to FALSE. Whether or not reconstruction is completed may be indicated by IsAvailable[cIdx][xNbY][yNbY]. Therefore, in summary, availableX may be set to FALSE when one of the following conditions is satisfied, and availableX may be set to TRUE when not (when all of the following conditions are not satisfied).
- weighting of CIIP may be determined based on a plurality of code information (isIntraCodedNeighbourX). For example, weighting may be determined when inter prediction and intra prediction are combined based on a plurality of code information (isIntraCodedNeighbourX). For example, it may be determined based on code information for the left block (isIntraCodedNeighbourA) and code information for the upper block (isIntraCodedNeighbourB).
- the weight w may be set to 2. That is, the weight w may be set based on whether the neighboring positions are predicted with intra prediction or based on how much of the neighboring positions are predicted with intra prediction.
- the weight w may be weighting corresponding to intra prediction.
- weighting corresponding to inter prediction may be determined based on the weight w.
- the weighting corresponding to inter prediction may be (4-w). Referring to equation (8-840) of FIG. 30, when two or more prediction signals are combined, it can be done as follows.
- predSampleComb[x][y] (w*predSamplesIntra[x][y] + (4-w)*predSamplesInter[x][y] + 2) >> 2
- the second samples (predSamplesIntra) and the first samples (predSamplesInter) may be prediction signals.
- the second samples (predSamplesIntra) and the first samples (predSamplesInter) are a prediction signal predicted by intra prediction and a prediction predicted by inter prediction (e.g., merge mode, more specifically regular merge mode). It can be a signal.
- the combined prediction samples (predSampleComb) may be a prediction signal used in CIIP.
- a process of updating the prediction signal before combining may be included before the equation (8-840) of FIG. 30 is performed. For example, it can be updated by the same process as equation (8-839) of FIG. 30.
- the process of updating the prediction signal may be a process of updating the inter prediction signal of CIIP.
- 31 is a diagram illustrating a surrounding reference position according to an embodiment of the present disclosure.
- Fig. 31 shows a chroma block. 29 to 30, the NbA and NbB coordinates based on the luma sample for the chroma block were (xCb-1, yCb + 2 * cbHeight-1) and (xCb + 2 * cbWidth-1, yCb-1), respectively. .
- SubWidthC or SubHeightC is 1, the location shown in FIG. 31 may be different from the location shown in FIG. 29.
- cbWidth and cbHeight multiplied by 2 are expressed based on cbWidth and cbHeight for each color component (chroma component in this example), and since the coordinates are expressed based on luma, in the case of 4:2:0, luma sample versus chroma It may be to compensate for the number of samples. That is, the coordinates of the case of 1 chroma sample corresponding to 2 luma samples based on the x-axis and 1 chroma sample corresponding to 2 luma samples based on the y-axis may be indicated by the luma reference. Therefore, when SubWidthC or SubHeightC is 1, different positions may be indicated.
- (xCb-1, yCb + 2 * cbHeight-1), (xCb + 2 * cbWidth-1, yCb-1) positions for the chroma block refer to the position far from the current chroma block. Can be. Also, in this case, the relative position used in the luma block of the current block and the relative position used in the chroma block may not match. In addition, by referring to a different position for a chroma block, weighting may be set by referring to a position less related to the current block, or decoding/reconstruction may not have been performed in the order of block decoding.
- NbA and NbB may exist at a location away from the chroma block indicated by a solid line.
- FIG. 32 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- FIG. 32 may be an embodiment for solving the problem described in FIGS. 29 to 31. Also, the above description may have been omitted.
- the surrounding location was set based on scale information (scallFact), and as described in FIG. 31, the scale information (scallFact) was a value for converting the location when SubWidthC and SubHeightC were 2.
- scale information of the x-axis (scallFactWidth) and scale information of the y-axis (scallFactHeight) may exist, and a surrounding location may be set based on scale information of the x-axis (scallFactWidth) and scale information of the y-axis (scallFactHeight).
- the surrounding location may be set based on a luma sample (luma block).
- the video signal processing apparatus may perform an operation of obtaining information related to width (SubWidthC) and information related to height (SubHeightC) based on chroma format information (chroma_format_idc).
- the chroma format information (chroma_format_idc) may be signaled in one of a Coding Tree Unit, a slice, a tile, a tile group, a picture, or a sequence unit.
- the video signal processing apparatus may obtain information related to width (SubWidthC) and information related to height (SubHeightC) based on chroma format information (chroma_format_idc) based on the table shown in FIG. 27.
- the video signal processing apparatus may perform steps 8-838 of obtaining scale information (scallFactWidth) of the x-axis based on information related to the width (SubWidthC) or information on the color component of the current block (cIdx). More specifically, as such, the scale information (scallFactWidth) of the x-axis may be set based on information (cIdx) about the color component of the current block and information (SubWidthC) related to the width.
- scale information of the x-axis can be set to 0, otherwise (the color component of the current block is When the information about (cIdx) is not 0 and the information related to the width (SubWidthC) is not 1 (when SubWidthC is 2)), scale information (scallFactWidth) of the x-axis may be set to 1. Referring to equation (8-838) in FIG. 32, it can be expressed as follows.
- the video signal processing apparatus may perform an operation (8-839) of obtaining scale information (scallFactHeight) of the y-axis based on information related to the height (SubHeightC) or information on the color component of the current block (cIdx).
- the y-axis scale information may be set based on information on the color component (cIdx) and height (SubHeightC) of the current block. For example, if the information on the color component of the current block (cIdx) is 0 or the information related to the height (SubHeightC) is 1, the scale information (scallFactHeight) of the y-axis can be set to 0, otherwise (the color component of the current block is When the information about (cIdx) is not 0 and the information related to the height (SubHeightC) is not 1 (when SubHeightC is 2)), scale information (scallFactHeight) of the y-axis may be set to 1. Referring to equation (8-839) in FIG. 32, it can be expressed as follows.
- the x-coordinate of the surrounding location may be indicated based on the scale information (scallFactWidth) of the x-axis
- the y-coordinate of the surrounding location may be indicated based on the y-axis scale information (scallFactHeight).
- the video signal processing apparatus may perform the step of determining the position of the left block NbA based on the y-axis scale information (scallFactHeight).
- the video signal processing apparatus may perform the step of determining the position of the upper block NbB based on the scale information (scallFactWidth) of the x-axis.
- the coordinates of the upper block NbB may be set based on the scale information scallFactWidth of the x-axis.
- the coordinates of the left block NbA may be set based on the y-axis scale information (scallFactHeight).
- what is based on the scale information (scallFactWidth) of the x-axis may be based on information related to the width (SubWidthC), and that based on the scale information (scallFactHeight) of the y-axis may be based on information related to the height (SubHeightC).
- the surrounding location coordinates may be as follows.
- xCb, yCb may be a position of a top-left sample luma of a current luma coding block for a top-left luma sample of the current picture.
- cbWidth and cbHeight may be the width and height of the current block, respectively.
- xCb and yCb may be coordinates indicated based on luma samples as described above.
- cbWidth and cbHeight may be expressed based on each color component.
- peripheral coordinates are set as in the embodiment of FIGS. 29 to 30, and in the case of a 4:2:2 format or a 4:4:4 format, FIG. 29 To the surrounding coordinates different from those of the embodiment of FIG. 30 may be set.
- the video signal processing apparatus may perform an operation of determining the weight w based on the left block NbA and the upper block NbB.
- FIG. 32 may be similar to that described in FIG. 30. That is, the prediction mode or availability may be determined based on the surrounding location coordinates described in FIG. 32, and the weighting of CIIP may be determined. Some of the descriptions of FIG. 32 that overlap with FIG. 30 may be omitted.
- the video signal processing apparatus may set code information (isIntraCodedNeighbourX) by combining two conditions. For example, if all of the following conditions are satisfied, code information (isIntraCodedNeighbourX) may be set to TRUE, and if not (if at least one of the following conditions is not satisfied), code information (isIntraCodedNeighbourX) may be set to FALSE.
- the video signal processing apparatus may perform the step of setting code information for the left block to FALSE.
- the video signal processing apparatus A step of setting the code information (isIntraCodedNeighbourB) to TRUE may be performed.
- the video signal processing apparatus may perform the step of setting code information for the upper block to FALSE.
- the video signal processing apparatus when the code information for the left block (isIntraCodedNeighbourA) and the code information for the upper block (isIntraCodedNeighbourB) are both TRUE, the video signal processing apparatus performs a step of determining the weight w to be 3 can do. In addition, when both the code information for the left block (isIntraCodedNeighbourA) and the code information for the upper block (isIntraCodedNeighbourB) are FALSE, the video signal processing apparatus may perform a step of determining the weight w as 1.
- the video signal processing apparatus may perform the step of acquiring first samples (predSamplesInter) predicting the current block in the merge mode.
- the video signal processing apparatus may perform an operation of obtaining second samples (predSamplesIntra) predicting the current block in an intra mode.
- the video signal processing apparatus performs a step (8-841) of obtaining a combined prediction sample (predSampleComb) for the current block based on the weight (w), first samples (predSamplesInter), and second samples (predSamplesIntra). can do.
- the video signal processing apparatus may obtain a combination prediction sample (predSampleComb) based on the following equation.
- predSampleComb[x][y] (w*predSamplesIntra[x][y] + (4-w)*predSamplesInter[x][y] + 2) >> 2
- predSamplesComb denotes a combination prediction sample
- w denotes a weight
- predSamplesIntra denotes second samples
- predSamplesInter denotes first samples
- [x] denotes the x-axis coordinate of the sample included in the current block. It means, and [y] may mean the y-axis coordinate of the sample included in the current block.
- peripheral location and the peripheral location coordinate may be used interchangeably.
- FIG 33 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- FIG. 33 expresses the coordinates of the surrounding positions described in FIG. 32 in a different manner. Therefore, the content overlapping with that described above may be omitted.
- bit shift can be expressed as multiplication.
- FIG. 32 may be shown using bit shift
- FIG. 33 may be shown using multiplication.
- the y-axis scale information may be set based on information on the color component (cIdx) and height (SubHeightC) of the current block. For example, if information about the color component of the current block (cIdx) is 0 or information related to the height (SubHeightC) is 1, the scale information (scallFactHeight) of the y-axis can be set to 1, otherwise (cIdx is not 0, When the height-related information (SubHeightC) is not 1 (SubHeightC is 2)), scale information (scallFactHeight) of the y-axis may be set to 2. Referring to equation (8-839) in FIG. 33, it can be expressed as follows.
- the x-coordinate of the surrounding location may be indicated based on the scale information (scallFactWidth) of the x-axis
- the y-coordinate of the surrounding location may be indicated based on the y-axis scale information (scallFactHeight).
- the coordinates of NbB may be set based on scale information (scallFactWidth) of the x-axis.
- the coordinates of NbA may be set based on scale information (scallFactHeight) of the y-axis.
- the surrounding location coordinates may be as follows.
- xCb and yCb may be coordinates indicated based on luma samples as described above.
- cbWidth and cbHeight may be expressed based on each color component.
- 34 is a diagram illustrating a weighted sample prediction process according to an embodiment of the present disclosure.
- CuPredMode[0][xNbX][yNbY] which is the CuPredMode corresponding to chType 0. If the chType for the current block does not match, an incorrect parameter can be referred to. have. Accordingly, according to an embodiment of the present disclosure, when determining a prediction mode of a neighboring location, CuPredMode[chType][xNbX][yNbY] corresponding to a chType value corresponding to a current block may be referred to.
- 35 is a diagram illustrating CIIP weight derivation according to an embodiment of the present disclosure.
- weighting used in CIIP may be determined based on relatively same positions for a plurality of color components. Therefore, this may mean that the weighting used in CIIP can be determined based on the neighboring locations described for the luma component for the chroma component. Also, therefore, this may mean that weighting used in CIIP can be determined based on neighboring locations described for luma components for multiple color components. Also, this may mean that it is possible to determine the weighting used in CIIP based on the same neighboring locations for multiple color components. Also, this may mean that the weighting used in CIIP for multiple color components is the same. This may be because it refers to the prediction mode of neighboring locations as described above.
- neighboring locations described for the luma component may be as follows.
- weighting used in CIIP for a plurality of color components may be the same. More specifically, it is possible to use the weighting used in CIIP derived from luma components for chroma components. This may be to prevent multiple times of derivation of weighting for multiple color components.
- a weighting value based on (xNbA, yNbA) and (xNbB, yNbB) may be used for the chroma component.
- cbHeight and cbWidth in (xNbA, yNbA) and (xNbB, yNbB) may be values based on luma samples.
- derive weighting values are used for each color component, that is, Y, Cb, and Cr. That is, the same weighting value is used in CIIP for all color components.
- 36 is a diagram illustrating a CIIP process according to an embodiment of the present disclosure.
- the embodiment of FIG. 36 may be related to the embodiment described with reference to FIG. 35.
- the embodiment of FIG. 36 may represent the structure of the embodiment described with reference to FIG. 35.
- the contents described in FIGS. 29 to 35 may be omitted.
- xCb, yCb, cbWidth, and cbHeight which are inputs of the weighting value derivation process
- xCb, yCb, cbWidth, and cbHeight of the neighboring locations may be preset component criteria regardless of the color component currently being performed. For example, it may be a value based on luma sample. That is, when performing a weighting value derivation process for a chroma component, it may be based on xCb, yCb, cbWidth, and cbHeight based on luma samples.
- neighboring locations may be set based on xCb, yCb, cbWidth, and cbHeight based on luma samples, and a weighting value may be determined based on this.
- the weighting value w may be set based on the weighting value derivation process.
- the weighting value derivation process of FIG. 36 may be a process of setting the weight w value described in FIG. 30. As described at this time, neighboring locations irrelevant to the color component can be used.
- the weighted sample prediction process may include a process of combining inter prediction and intra prediction using weighting described in FIG. 30.
- the weighted sample prediction process may include a process of combining using equation (8-840) of FIG. 30.
- the weighted sample prediction process may be performed based on a weighting value, and the same weighting value may be used for a plurality of color components.
- the weighting value used in the weighted sample prediction may be the weighting value w determined based on the weighting value derivation process described above.
- coding block width and height which are inputs of the weighted sample prediction process, may be values expressed based on each color component.
- the width and height are cbWidth and cbHeight, respectively, and in the case of a chroma component (when cIdx is not 0; when cIdx is 1 or 2), the width and height are respectively It can be cbWidth/SubWidthC or cbHeight/SubHeightC.
- the process shown in FIG. 36 may be performed for each color component.
- the weighting value derivation process regardless of the color component, it is possible to simplify the implementation of the weighting value derivation process. Or, it may be to avoid repetitive processes.
- MVD may be a motion vector difference described above.
- MV bus vector
- the MVD determination method may include a method of determining from a value of a syntax element.
- the MVD may be determined based on the syntax element described in FIG. 9. This will be further described in FIG. 40.
- the MVD determination method may include a method of determining when using the merge with MVD (MMVD) mode. For example, there may be an MVD used when using the merge mode. This will be further described in FIGS. 38 to 39.
- MMVD merge with MVD
- the MV or MVD may include a control point motion vector (CPMV) for performing affine motion compensation. That is, MV and MVD may include CPMV and CPMVD, respectively.
- CPMV control point motion vector
- a range that can be represented by MV or MVD may be limited. Accordingly, it may be possible to express or store MV or MVD using limited resources and limited number of bits, and to perform calculations using MV or MVD.
- a range that can be represented by MV or MVD may be referred to as an MV range and an MVD range, respectively.
- the MV range or MVD range may range from -2 ⁇ N to (2 ⁇ N-1). In this case, it may be a range including -2 ⁇ N and (2 ⁇ N-1). According to another embodiment, the MV range or MVD range may range from (-2 ⁇ N + 1) to 2 ⁇ N. In this case, it may be a range including (-2 ⁇ N + 1) and 2 ⁇ N. In these embodiments, N may be an integer, for example a positive integer. More specifically, N may be 15 or 17. In addition, at this time, it may be possible to represent the MV range or the MVD range using N+1 bits.
- MVD1 may be the MVD described in FIG. 40 or 9.
- MVD1 may be an MVD of AMVP, inter mode, or affine inter mode.
- MVD1 may be MVD when the merge mode is not used.
- Whether to use the merge mode may be indicated by merge_flag or general_merge_flag. For example, when merge_flag or general_merge_flag is 1, the merge mode may be used, and when 0, the merge mode may not be used.
- MVD2 may be the MVD described in FIGS. 38 to 39.
- MVD2 may be an MVD in MMVD mode.
- MVD2 may be an MVD when using the merge mode.
- the MV may be an MV used for final motion compensation or prediction.
- the MV may be an MV entering the candidate list.
- the MV may be a collocated motion vector (Temporal motion vector).
- MV may be a value obtained by adding MVD to MVP.
- the MV may be CPMV.
- MV may be a value obtained by adding CPMVD to CPMVP.
- the MV may be an MV for each subblock in the affine MC.
- the MV for the subblock may be an MV derived from CPMV.
- MV may be the MV of MMVD.
- a square indicated by a dotted line represents an MV range or an MVD range.
- the inner square may represent the MVD2 range.
- the outer square may represent the MVD1 range or the MV range. That is, the MVD2 range may be different from the MVD1 range or the MV range.
- the range of the drawing may represent a vector range that can be represented from a point of the drawing. For example, as described above, the MVD2 range may range from -2 ⁇ 15 to (2 ⁇ 15-1) (inclusive). In addition, the MVD1 range or the MV range may be from -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- MV or MVD is a value in units of x-pel
- the value indicated by MV or MVD may actually be (MV*x) or (MVD*x) pixel.
- the value when the value is 1/16-pel unit, it may represent (MV/16) or (MVD/16) pixels.
- the maximum absolute value is 32768, and if this is a 1/16-pel unit value (MVD2 value)/16 is the maximum 2048 pixel. Therefore, it cannot cover all 8K pictures.
- the maximum absolute value is 131072, which can represent a maximum of 8192 pixels when using 1/16-pel units. Therefore, it can cover all 8K pictures.
- 8K resolution can represent a resolution of 7680 pixels or 8192 pixels in the horizontal length (or the length of the horizontal or vertical, whichever is longer).
- a picture such as 7680x4320 may be 8K resolution.
- MMVD may be a method of using MVD in a merge mode as a merge mode with MVD and merge with MVD.
- an MV can be generated based on a merge candidate and an MVD.
- the MVD of MMVD may have a limited range that can be expressed compared to the MVD of FIG. 9 or 40 or MVD1 described above.
- MMVD's MVD can have only one of a horizontal component and a vertical component.
- the absolute values of the values that the MVD of MMVD can represent may not be equally spaced from each other. 38 (a) shows points that can be represented by the MVD of MMVD from the dotted dotted line point at the center.
- MMVD 38(b) shows syntax related to MMVD.
- signaling may indicate parsing from a bitstream.
- the upper level may be a unit including a current block and a current coding block, and may be, for example, a slice, a sequence, a tile, a tile group, or a CTU.
- High-level signaling indicating whether MMVD is available may be high-level MMVD activation information (sps_mmvd_enabled_flag).
- the high-level MMVD activation information (sps_mmvd_enabled_flag) is 1, it indicates that the MMVD is activated, and when the high-level MMVD activation information (sps_mmvd_enabled_flag) is 0, it may indicate that the MMVD is not activated.
- the high-level MMVD activation information (sps_mmvd_enabled_flag) is 0, it indicates that the MMVD is activated, and when the high-level MMVD activation information (sps_mmvd_enabled_flag) is 1, it may indicate that the MMVD is not activated.
- the video signal processing apparatus may perform a step of parsing the MMVD merge information (mmvd_merge_flag) indicating whether the MMVD is used for the current block from the bitstream.
- the signaling indicating whether to use MMVD may be MMVD merge information (mmvd_merge_flag).
- MMVD merge information (mmvd_merge_flag) 1
- MMVD merge information (mmvd_merge_flag)
- MMVD merge information (mmvd_merge_flag)
- MMVD merge information (mmvd_merge_flag) is 0, it means that MMVD is used for the current block
- MMVD merge information (mmvd_merge_flag) is 1, it means that MMVD is not used for the current block. I can.
- an MMVD-related syntax element can be parsed.
- the MMVD related syntax element may include at least one of mmvd_cand_flag, information related to the distance of the MMVD (mmvd_distance_idx), and information related to the direction of the MMVD (mmvd_direction_idx).
- mmvd_cand_flag may indicate an MVP to be used in MMVD mode.
- mmvd_cand_flag may indicate a merge candidate to be used in MMVD mode.
- the MVD of the MMVD may be determined based on information related to the distance of the MMVD (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- the MVD of MMVD may represent information on MVD (mMvdLX).
- information related to the distance of MMVD indicates a value related to the absolute value of MVD of MMVD
- information related to the direction of MMVD may indicate a value related to the direction of MVD of MMVD.
- 39 is a diagram illustrating MVD derivation of MMVD according to an embodiment of the present disclosure.
- the video signal processing apparatus may determine whether MMVD is used in the current block based on MMVD merge information (mmvd_merge_flag).
- MMVD merge information mmvd_merge_flag
- the MVD derivation process can be performed.
- the MVD derivation process may be 8.5.2.7 shown on the right of FIG. 39.
- the MVD that is the output of 8.5.2.7 may be the MVD of MMVD, and may be information about the MMVD (mMvdLX).
- the information on the MMVD may be obtained based on information related to the distance of the MMVD (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- X may be replaced with 0, 1, etc., and may correspond to reference list L0 and reference list L1, respectively.
- information on the MMVD's MVD or MMVD can be added to the motion vector (MV) mvLX derived in the previous process ((8-281), (8-282)).
- X may be replaced with 0, 1, and the like, and may correspond to a first reference list L0 and a second reference list L1, respectively.
- the MVD of MMVD may represent information on MMVD (mMvdLX).
- the video signal processing apparatus may perform a process of limiting the range of the modified motion vector mvLX to which the MVD is added. For example, clipping can be performed ((8-283), (8-284)). For example, it can be limited to the MV range described above. For example, you can limit it to inclusive from -2 ⁇ 17 to (2 ⁇ 17-1).
- Clip3(x, y, z) may represent clipping.
- comp in mvLX[0][0][comp] and mMvdLX[comp], comp may represent an x-component or a y-component. For example, it may represent a horizontal component and a vertical component, respectively.
- the MMVD offset (MmvdOffset) in the drawing may be a value based on the syntax element related to MMVD described above.
- the MMVD offset (MmvdOffset) may be a value based on information related to the distance of MMVD (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- the MMVD offset may be obtained based on at least one of information related to the slope distance (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- information on MMVD mMvdLX
- MmvdOffset may be obtained based on the MMVD offset (MmvdOffset).
- predFlagLX may indicate which reference list to use
- X may be replaced with 0 and 1
- L0 and L1 are respectively a first reference list L0 and a first reference list). 2 It may correspond to a reference list L1.
- POC picture order count
- MmvdOffset MMVD offset
- MMVD offset MMVD offset
- the MMVD offset may be used in order to obtain MVD for both the first reference list L0 and the second reference list L1 ((8-350). ) To (8-353)).
- the first POC difference (currPocDiffL0) and the second POC difference (currPocDiffL1) may be the same.
- the POC difference (currPocDiffLX) may be a difference between the POC of the current picture and the POC of the reference picture of the reference list LX, and X may be replaced by 0 and 1.
- DiffPicOrderCnt( picA, picB) PicOrderCnt( picA)-PicOrderCnt( picB)
- PicOrderCnt(picX) may represent a picture order count value of picture picX.
- currPic in FIG. 39 may represent a current picture.
- RefPicList[X][refIdxLX] may indicate a reference picture when refIdxLX is used in reference list LX.
- a value calculated based on MmvdOffset may be used in the MVD for the second reference list L1 ((8-354) to (8-363)).
- MMVD offset (MmvdOffset) value it is possible to use the MMVD offset (MmvdOffset) value as it is as the MVD for the first reference list L0.
- Abs(currPocDiffL0) may be equal to or greater than Abs(currPocDiffL1).
- Abs(currPocDiffL0) is greater than Abs(currPocDiffL1).
- a value calculated based on an MMVD offset may be used for the MVD for the first reference list L0 ((8-364) to (8-373)).
- MMVD offset (MmvdOffset) value it is possible to use the MMVD offset (MmvdOffset) value as it is as the MVD for the second reference list L1.
- Abs(currPocDiffL0) may be smaller than Abs(currPocDiffL1).
- Abs(currPocDiffL0) is less than or equal to Abs(currPocDiffL1).
- calculating based on MMVD offset may represent MV scaling.
- the MV scaling may be (8-356) to (3-361) or (8-366) to (3-371) of FIG. 39.
- the former may be a process of creating information on the second MMVD (mMvdL1), which is a scaled MV by scaling based on information on the first MMVD (mMvdL0) or MMVD offset (MmvdOffset), and the latter is information on the second MMVD
- It may be a process of creating information (mMvdL0) on the first MMVD, which is a scaled motion vector (MV) by scaling based on (mMvdL1) or MMVD offset (MmvdOffset) MV scaling is the first POC difference.
- MV scaling includes a process of limiting the MV range
- a range limitation process may be included in (8-360), (8-361), (8-370), and (8-371) of Fig. 39.
- MV scaling is a clipping process.
- the MVD2 range described above may be used, for example, the range may be limited to -2 ⁇ 15 to (2 ⁇ 15-1) (inclusive). That is, the MVD range of MMVD can be limited to -2 ⁇ 15 to (2 ⁇ 15-1) (inclusive).
- the MVD derivation process of MMVD is based on the product of distScaleFactor and the MV to be scaled. It may include a process of limiting the value to -2 ⁇ 15 to (2 ⁇ 15-1) (inclusive).
- the process of Clip3(-2 ⁇ 15, 2 ⁇ 15-1, x) MV D can be included in the derivation process. More specifically, mMvdLX may be determined as follows.
- Y may be 0 or 1 and may be !X.
- mMvdLY may be MmvdOffset.
- distScaleFactor may be a value shown in (8-359) or (8-369), and may be a value based on currPocDiffL0 and currPocDiffL1.
- MVD of MMVD, information on MMVD (mMvdLX) or the range of scaled MV is not limited to -2 ⁇ 15 to (2 ⁇ 15-1).
- MVD of MMVD, information on MMVD (mMvdLX) or a range of scaled MV may range from -2 ⁇ 17 to (2 ⁇ 17-1). This will be described with reference to FIG. 43.
- This process can be performed when the reference pictures for L0 and L1 are not both long-term reference pictures.
- calculating based on the MMVD offset represents an MMVD offset (MmvdOffset) or a negative MMVD offset (-MmvdOffset) based on a first POC difference (currPocDiffL0) and a second POC difference (currPocDiffL1). It can be ((8-362), (8-363), (8-372), (8-373)). This process can be performed when at least one of the reference pictures for L0 and L1 is a long-term reference picture.
- MmvdOffset as mMvdLX as it is ((8-374), (8-375)).
- FIG. 40 is a diagram illustrating MVD and MV derivation according to an embodiment of the present disclosure.
- the embodiment of FIG. 40 may be an example of using the MV range or the MVD1 range of FIG. 37.
- the embodiment of FIG. 40 may be an example in which a range from -2 ⁇ 17 to (2 ⁇ 17-1) is used.
- the MV range can be limited to -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- the merge mode may not be used.
- (8-264) to (8-267) may include an MV range limitation process.
- uLX may be a value based on the addition of MVP (mvpLX) and MVD (mvdLX).
- the final MV, mvLX can be calculated based on ULX.
- 40 includes a modulus operation, which may be limited so that a value indicated by this operation can be expressed to a certain number of bits or less. For example, by calculating (% 2 ⁇ 18), it can be expressed in 18-bit. Therefore, the MV range can be limited to -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- (8-265) and (8-267) can play a role in resolving overflows that may occur when MVP and MVD are added.
- 41 is a diagram illustrating MV and CPMV derivation according to an embodiment of the present disclosure.
- FIG. 41 (a) may represent a method of deriving a collocated motion vector (temporal motion vector).
- This process can include MV scaling.
- an operation for clipping a value based on the distScaleFactor and the MV (mvCol) to be scaled may be included ((8-398)).
- clipping can result in the range of -131072 and 131071 (inclusive).
- -131072 is the same value as -2 ⁇ 17.
- 131071 is equal to 2 ⁇ 17-1.
- Figure 41 (b) is a diagram showing a part of the process of derive CPMV (cpMvLX). In this case, too, a clipping process to limit the range may be included. In this case, the range may be from -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- the MVD may be a motion vector difference described above.
- the MV range and the MVD range may be the same.
- there may be an MVD generation method and the MVD generated by the MVD generation method 1 may be MVD1, and the MVD generated by the MVD generation method 2 may be MVD2.
- the MVD1 range and the MVD2 range may be the same.
- the MV range, MVD range, MVD1 range, and MVD2 range may range from -2 ⁇ N to (2 ⁇ N-1). In this case, it may be a range including -2 ⁇ N and (2 ⁇ N-1).
- the MV range or MVD range may range from (-2 ⁇ N + 1) to 2 ⁇ N.
- N may be an integer, for example a positive integer. More specifically, N may be 17.
- N may be 17.
- it may be possible to represent the MV range or the MVD range using N+1 bits. Therefore, it is possible for the MV range, MVD range, MVD1 range, and MVD2 range to range from -2 ⁇ 17 to (2 ⁇ 17-1).
- MV may mean MV used for final motion compensation or prediction, and the description of FIG. 37 may be referred to.
- MVD1 may be the MVD described in FIG. 40 or 9.
- MVD1 may be AMVP, inter mode, MVD of affine inter mode, or MVD when the merge mode is not used, and the description of FIG. 37 may be referred to.
- MVD2 may be the MVD described in FIGS. 38 to 39 or the MVD in the MMVD mode, and the description of FIG. 37 may be referred to.
- the MVD in the MMVD mode may be information on MMVD (mMvdLX).
- the ranges that can be represented by both the MVD of the AMVP, the inter mode, and the affine inter mode and the MVD of the MMVD may be the same. Additionally, the final MV may also have the same range. More specifically, the MVD of AMVP, inter mode, affine inter mode, and MVD of MMVD may all range from -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive). Additionally, the final MV may also range from -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- both MVs and MVDs can cover a picture of a certain size.
- MVD2 can also represent the same range. Therefore, for example, the method using MVD2 can be made not to be used more restrictively than other methods due to the range of expression.
- MV, MVD1, etc. can represent a certain range, making MVD2 represent the same range may not require additional resources in hardware or software. If the MVD of MVD2 or MMVD can express -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive), the maximum absolute value is 131072, and if this is a 1/16-pel unit, it can represent a maximum of 8192 pixels. . Therefore, it can cover all 8K pictures.
- the outer dotted lines indicate the ranges that MV, MVD1, and MVD2 can represent from the center point.
- the MV range, MVD1 range, and MVD2 range may all be the same.
- the MV range, MVD1 range, and MVD2 range may range from -2 ⁇ 17 to (2 ⁇ 17-1) (inclusive).
- this range can include all 8K pictures. That is, even when the end of the picture is indicated as the worst case, the ranges of MV, MVD1, and MVD2 can represent this. Accordingly, it can be said that a better motion vector can be displayed, motion compensation is improved, residuals are reduced, and coding efficiency can be increased.
- FIG. 43 is a diagram illustrating MVD derivation of MMVD according to an embodiment of the present disclosure.
- FIG. 43 may be partially modified from FIG. 39.
- the contents described in FIG. 39 may be omitted.
- the above description may have been omitted.
- the MVD derivation process can be performed.
- the MVD derivation process may be 8.5.2.7 shown in FIG. 43.
- the MVD that is the output of 8.5.2.7 may be the MVD of MMVD, and may be information about the MMVD (mMvdLX).
- the information on the MMVD (mMvdLX) may be obtained based on information related to the distance of the MMVD (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- the video signal processing apparatus may acquire an MMVD offset (MmvdOffset).
- the video signal processing apparatus may obtain an MMVD offset (MmvdOffset) in order to obtain information on the MMVD (mMvdLX).
- the MMVD offset (MmvdOffset) may be a value based on the syntax element related to MMVD described above.
- the MMVD offset (MmvdOffset) may be a value based on information related to the distance of MMVD (mmvd_distance_idx) and information related to the direction of the MMVD (mmvd_direction_idx).
- bi prediction may be indicated.
- bi prediction may indicate that both the first reference list and the second reference list are used.
- the video signal processing apparatus includes a current picture including a current block (currPic) and a first reference picture (RefPicList[0][refIdxL0]) based on the first reference list.
- An operation (8-348) of acquiring a difference in a picture order count (POC) of as a first POC difference (currPocDiffL0) may be performed.
- the video signal processing apparatus includes a current picture (currPic) and a second reference picture (RefPicList[1][refIdxL1]) based on the first list.
- An operation (8-349) of acquiring the difference in Order Count) as a second POC difference (currPocDiffL1) may be performed.
- the POC difference (currPocDiffLX) may be a difference between the POC of the current picture and the POC of a reference picture of a reference list LX, and X may be replaced with 0 and 1.
- the first POC difference (currPocDiffL0) and the second POC difference (currPocDiffL1) may be determined by (8-348) and (8-349) of FIG. 43, respectively.
- DiffPicOrderCnt can be calculated as follows.
- DiffPicOrderCnt( picA, picB) PicOrderCnt( picA)-PicOrderCnt( picB)
- PicOrderCnt(picX) may indicate a picture order count value of picture picX.
- the video signal processing apparatus includes information (mMvdL0) and first MMVD related to the first reference list based on at least one of an MMVD offset (MmvdOffset), a first POC difference (currPocDiffL0), and a second POC difference (currPocDiffL1). 2 A step of acquiring information (mMvdL1) on the second MMVD related to the reference list may be performed.
- the information on MMVD (mMvdLX) may include information on the first MMVD (mMvdL0) and information on the second MMVD (mMvdL1).
- the video signal processing apparatus obtains the MMVD offset (MmvdOffset) as information on the first MMVD (mMvdL0) (8-350, 8- 351) can be performed.
- the video signal processing apparatus acquires the MMVD offset (MmvdOffset) as information on the second MMVD (mMvdL1) (8-352, 8-353) can be performed.
- the video signal processing apparatus Steps (8-356 to 8-361) of acquiring information (mMvdL1) on the second MMVD by scaling the information (mMvdL0) may be performed.
- a scale factor (distScaleFactor) may be used for scale.
- the scale factor (distScaleFactor) may be obtained based on at least one of the first POC difference (currPocDiffL0) and the second POC difference (currPocDiffL1).
- the video signal processing apparatus does not scale the absolute value of the information on the first MMVD (mMvdL0), but the information on the second MMVD (mMvdL1). ) Can be performed (8-362, 8-363).
- not scaling may mean that the absolute value of information (mMvdL0) for the first MMVD is not changed. That is, the video signal processing apparatus may obtain information on the second MMVD (mMvdL1) without changing or changing a sign of the information on the first MMVD (mMvdL0).
- the video signal processing apparatus may determine whether the absolute value of the first POC difference (Abs(currPocDiffL0)) is less than the absolute value of the second POC difference (Abs(currPocDiffL1)). When the absolute value of the first POC difference (Abs(currPocDiffL0)) is less than the absolute value of the second POC difference (Abs(currPocDiffL1)), the video signal processing apparatus sets the MMVD offset (MmvdOffset) to the information on the second MMVD (mMvdL1). ) To obtain steps (8-364, 8-365) can be performed.
- MMVD offset MMVD offset
- the video signal processing apparatus is Steps (8-366 to 8-371) of obtaining information (mMvdL0) on the first MMVD by scaling the information (mMvdL1) may be performed.
- a scale factor (distScaleFactor) may be used for scale.
- the scale factor (distScaleFactor) may be obtained based on at least one of the first POC difference (currPocDiffL0) and the second POC difference (currPocDiffL1).
- the video signal processing apparatus includes information on the second MMVD Steps (8-372, 8-373) of obtaining information (mMvdL0) on the first MMVD without scaling the absolute value of (mMvdL1) may be performed.
- not scaling may mean that the absolute value of the information on the second MMVD (mMvdL1) is not changed.
- the video signal processing apparatus may obtain information on the first MMVD (mMvdL0) without changing or changing the sign of the information on the second MMVD (mMvdL1).
- the video signal processing apparatus may set information on the first MMVD (mMvdL0) as information on the second MMVD (mMvdL1).
- the video signal processing apparatus stores information on the first MMVD (mMvdL0) and the code of information on the second MMVD (mMvdL1). Can be changed and set.
- MMVD offset MMVD offset (MmvdOffset) as it is as information about MMVD (mMvdLX) ((8-374), (8-375)).
- the video signal processing apparatus may perform the step of obtaining the MMVD offset based on information related to the distance of the MMVD and information related to the direction of the MMVD in order to obtain information about the MMVD (mMvdLX).
- the video signal processing apparatus does not scale the MMVD offset (MmvdOffset) and acquires the information (mMvdL0) on the first MMVD related to the first reference list ( 8-374, 8-375) can be performed.
- the video signal processing apparatus does not scale the MMVD offset (MmvdOffset), and acquires the information (mMvdL1) on the second MMVD related to the second reference list ( 8-374, 8-375) can be performed.
- the range of MVD of MMVD may be limited.
- the MVD of the MMVD may be information on the MMVD (mMvdLX).
- the range of the MVD of the MMVD may be the same as the range of the MVD (eg, MVD based on the syntax element of FIG. 9) determined by another method.
- the range of MVD of MMVD may be the same as the range of final MV.
- the MVD range of MMVD or the range of information on MMVD may range from -2 ⁇ 17 to 2 ⁇ 17 -1, and in this case, including -2 ⁇ 17 and 2 ⁇ 17 -1 It can be a range.
- the MV scaling process may be included in the MVD derivation process of MMVD.
- a clipping operation to limit the range may be included in the MVD derivation process of MMVD.
- information on MMVD may be based on a clipping operation.
- X may be replaced with 0 or 1, which may correspond to a first reference list L0 and a second reference list L1, respectively.
- information on MMVD may be based on Clip3 operation.
- information on MMVD (mMvdLX) may be based on Clip3(-2 ⁇ 17, 2 ⁇ 17-1, x).
- x may be a value based on a first POC difference (currPocDiffL0), a second POC difference (currPocDiffL1), or an MMVD offset (MmvdOffset).
- x may be a value based on a scale factor (distScaleFactor) and an MMVD offset (MmvdOffset).
- 8-360), (8-361), (8-370), and (8-371) of FIG. 43 include a clipping operation to limit the MVD range.
- the range of chroma MV may be different from the range of luma MV.
- chroma MV may have a higher resolution than luma MV. That is, 1 unit of chroma MV can represent a smaller pixel than 1 unit of luma MV.
- luma MV may be in a 1/16-pel unit.
- chroma MV can be in 1/32-pel units.
- chroma MV can be based on luma MV.
- chroma MV can be determined by multiplying luma MV by a value.
- Some of the above values may be 2/SubWidthC for the horizontal component and 2/SubHeightC for the vertical component. 2 included in any of the above values may be included because the resolution of chroma MV is twice as high as that of luma MV.
- SubWidthC and SubHeightC may be values determined according to a color format.
- SubWidthC and SubHeightC may be values for chorma sample sampling.
- SubWidthC and SubHeightC may be values for how much chroma samples exist for luma samples.
- SubWidthC and SubHeightC may be 1 or 2.
- the range of chroma MV when the resolution of chroma MV is higher than that of luma MV, the range of chroma MV may be wider than that of luma MV. This may be to cover a region covered by luma MV as well as chroma MV.
- the range of chroma MV may be twice that of luma MV.
- the chroma MV range may be from -2 ⁇ 18 to 2 ⁇ 18-1, and in this case, it may be a range including -2 ⁇ 18 and 2 ⁇ 18-1.
- the luma MV range may be from -2 ⁇ 17 to 2 ⁇ 17-1, and in this case, it may be a range including -2 ⁇ 17 and 2 ⁇ 17-1.
- the range of chroma MV can be variable according to the color format. For example, when SubWidthC or SubHeightC is 1, the chroma MV range may be different from the luma MV range. At this time, it is possible that the range of chroma MV is twice the range of luma MV.
- the chroma MV range may be from -2 ⁇ 18 to 2 ⁇ 18-1, and in this case, it may be a range including -2 ⁇ 18 and 2 ⁇ 18-1, and the luma MV range is from -2 ⁇ 17 to 2 ⁇ 17-may be up to 1, and in this case, it may be a range including -2 ⁇ 17 and 2 ⁇ 17-1.
- the chroma MV range may be the same as the luma MV range.
- the range at this time may be from -2 ⁇ 17 to 2 ⁇ 17-1, and in this case, it may be a range including -2 ⁇ 17 and 2 ⁇ 17-1. This may be to unify the range that can be represented by chroma MV and luma MV.
- SubWidthC and SubHeightC may be 2 and 2, respectively.
- SubWidthC and SubHeightC may be 2 and 1, respectively.
- SubWidthC and SubHeightC may be 1 and 1, respectively.
- embodiments of the present disclosure may be implemented through various means.
- embodiments of the present disclosure may be implemented by hardware, firmware, software, or a combination thereof.
- the method according to embodiments of the present disclosure includes one or more Application Specific Integrated Circuits (ASICs), Digital Signal Processors (DSPs), Digital Signal Processing Devices (DSPDs), and Programmable Logic Devices (PLDs). , Field Programmable Gate Arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, and the like.
- ASICs Application Specific Integrated Circuits
- DSPs Digital Signal Processors
- DSPDs Digital Signal Processing Devices
- PLDs Programmable Logic Devices
- FPGAs Field Programmable Gate Arrays
- processors controllers
- microcontrollers microcontrollers
- microprocessors and the like.
- the method according to the embodiments of the present disclosure may be implemented in the form of a module, procedure, or function that performs the functions or operations described above.
- the software code can be stored in a memory and driven by a processor.
- the memory may be located inside or outside the processor, and data may be exchanged with the processor by various known means.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 개시의 비디오 신호의 처리 방법은 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 비트스트림으로부터 파싱하는 단계, 상기 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 상기 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하는 단계, 상기 MMVD 머지 정보가 상기 현재 블록에 MMVD를 사용함을 나타내는 경우, MMVD의 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 파싱하는 단계, 및 상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여 MMVD에 대한 정보(mMvdLX)를 획득하는 단계를 포함하고, 상기 MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
Description
본 개시는 비디오 신호의 처리 방법 및 장치에 관한 것으로, 보다 상세하게는 비디오 신호를 인코딩하거나 디코딩하는 비디오 신호 처리 방법 및 장치에 관한 것이다.
압축 부호화란 디지털화한 정보를 통신 회선을 통해 전송하거나, 저장 매체에 적합한 형태로 저장하기 위한 일련의 신호 처리 기술을 의미한다. 압축 부호화의 대상에는 음성, 영상, 문자 등의 대상이 존재하며, 특히 영상을 대상으로 압축 부호화를 수행하는 기술을 비디오 영상 압축이라고 일컫는다. 비디오 신호에 대한 압축 부호화는 공간적인 상관관계, 시간적인 상관관계, 확률적인 상관관계 등을 고려하여 잉여 정보를 제거함으로써 이루어진다. 그러나 최근의 다양한 미디어 및 데이터 전송 매체의 발전으로 인해, 더욱 고효율의 비디오 신호 처리 방법 및 장치가 요구되고 있다.
본 개시의 목적은 비디오 신호의 코딩 효율을 높이고자 함에 있다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 비트스트림으로부터 파싱하는 단계, 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하는 단계, MMVD 머지 정보가 현재 블록에 MMVD를 사용함을 나타내는 경우, MMVD의 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 파싱하는 단계, 및 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여 MMVD에 대한 정보(mMvdLX)를 획득하는 단계를 포함하고, MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 상위 레벨은 Coding Tree Unit, 슬라이스(slice), 타일(tile), 타일 그룹(tile group), 영상(picture), 또는 시퀀스(sequence) 단위 중 하나인 것을 특징으로 하는 비디오 신호를 디코딩하는 방법.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 현재 블록의 머지 후보 리스트를 생성하는 단계, 비트스트림으로부터 파싱된 머지 인덱스에 기초하여 머지 후보 리스트로부터 모션 벡터를 선택하는 단계, MMVD 머지 정보가 현재 블록에 MMVD를 사용함을 나타내는 경우, 모션 벡터에 MMVD에 대한 정보를 더하여 수정된 모션 벡터를 획득하는 단계, 및 수정된 모션 벡터에 기초하여 현재 블록을 복원하는 단계를 더 포함하고, 수정된 모션 벡터는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 MMVD에 대한 정보(mMvdLX)를 획득하는 단계는 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하는 단계, 제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 현재 블록을 포함하는 현재 픽쳐 및 제 1 참조 리스트에 기초한 제 1 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 1 POC 차이로 획득하고, 현재 픽쳐 및 제 2 참조 리스트에 기초한 제 2 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 2 POC 차이로 획득하는 단계, MMVD 오프셋, 제 1 POC 차이, 및 제 2 POC 차이 중 적어도 하나에 기초하여 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보 및 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보를 획득하는 단계를 포함하고, MVD에 대한 정보는 제 1 MMVD에 대한 정보 및 제 2 MMVD에 대한 정보를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 제 1 POC 차이 및 제 2 POC 차이가 동일한 경우, MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하고, MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 제 1 POC 차이의 절대값이 제 2 POC 차이의 절대값보다 크거나 같은 경우, MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하는 단계, 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 제 1 MMVD에 대한 정보를 스케일링하여 제 2 MMVD에 대한 정보를 획득하는 단계, 및 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 제 1 MMVD에 대한 정보의 절대값을 스케일링하지 않고 제 2 MMVD에 대한 정보를 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 제 1 POC 차이의 절대값이 제 2 POC 차이의 절대값보다 작은 경우, MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하는 단계, 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 제 2 MMVD에 대한 정보를 스케일링하여 제 1 MMVD에 대한 정보를 획득하는 단계, 및 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 제 2 MMVD에 대한 정보의 절대값을 스케일링하지 않고 제 1 MMVD에 대한 정보를 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 MMVD에 대한 정보(mMvdLX)를 획득하는 단계는 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하는 단계, 제 1 참조 리스트만 사용되는 경우, MMVD 오프셋을 스케일링하지 않고, 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보로써 획득하는 단계, 및 제 2 참조 리스트만 사용되는 경우, MMVD 오프셋을 스케일링하지 않고, 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보로써 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법은 크로마 성분 포멧 정보를 상위 레벨의 비트스트림으로부터 획득하는 단계, 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하는 단계, 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하는 단계, 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하는 단계, y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하는 단계, x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하는 단계, 좌측 블록 및 상측 블록에 기초하여 가중치를 결정하는 단계, 현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하는 단계, 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하는 단계, 및 가중치, 제 1 샘플들, 및 제 2 샘플들에 기초하여 현재 블록에 대한 조합 예측 샘플을 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 가중치를 결정하는 단계는 좌측 블록이 이용 가능하고, 좌측 블록의 예측 모드가 인트라 예측인 경우, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)를 TRUE로 설정하는 단계, 좌측 블록이 이용 가능하지 않거나, 좌측 블록의 예측 모드가 인트라 예측이 아닌 경우, 좌측 블록에 대한 코드 정보를 FALSE로 설정하는 단계, 상측 블록이 이용 가능하고, 상측 블록의 예측 모드가 인트라 예측인 경우, 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)를 TRUE로 설정하는 단계, 및 상측 블록이 이용 가능하지 않거나, 상측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상측 블록에 대한 코드 정보를 FALSE로 설정하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 가중치를 결정하는 단계는 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보가 모두 TRUE인 경우, 가중치를 3으로 결정하는 단계, 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보가 모두 FALSE인 경우, 가중치를 1로 결정하는 단계, 및 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보 중 하나만 TRUE인 경우, 가중치를 2로 결정하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 조합 예측 샘플을 획득하는 단계는 predSamplesComb[ x ][ y ] = ( w * predSamplesIntra[ x ][ y ] +( 4 - w ) * predSamplesInter[ x ][ y ] + 2) >> 2 에 기초하여 현재 블록을 예측하는 단계를 포함하고, 여기서 predSamplesComb는 조합 예측 샘플을 의미하고, w는 가중치를 의미하고, predSamplesIntra는 제 2 샘플들을 의미하고, predSamplesInter는 제 1 샘플들을 의미하고, [x]는 현재 블록에 포함된 샘플의 x축 좌표를 의미하고, [y]는 현재 블록에 포함된 샘플의 y축 좌표를 의미하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 x축의 스케일 정보를 획득하는 단계는 현재 블록의 색성분이 0 이거나, 너비에 관련된 정보가 1인 경우, x축의 스케일 정보를 0으로 결정하는 단계 및 현재 블록의 색성분이 0이 아니고, 너비에 관련된 정보가 1이 아닌 경우, x축의 스케일 정보를 1으로 결정하는 단계를 포함하고, y축의 스케일 정보를 획득하는 단계는 현재 블록의 색성분이 0 이거나, 높이에 관련된 정보가 1인 경우, y축의 스케일 정보를 0으로 결정하는 단계 및 현재 블록의 색성분이 0이 아니고, 높이에 관련된 정보가 1이 아닌 경우, y축의 스케일 정보를 1으로 결정하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예를 따른 비디오 신호를 디코딩하는 방법의 좌측 블록의 위치는, ( xCb - 1, yCb - 1 + ( cbHeight << scallFactHeight) ) 이고, xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, yCb는 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, cbHeight는 현재 블록의 높이의 크기이며, scallFactHeight는 y축의 스케일 정보이고, 상측 블록의 위치는 ( xCb - 1 + (cbWidth << scallFactWidth), yCb - 1 ) 이고, xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, yCb는 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, cbWidth는 현재 블록의 너비의 크기이며, scallFactWidth는 x축의 스케일 정보인 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치는 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 명령어에 기초하여, 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 비트스트림으로부터 파싱하고, 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하고, MMVD 머지 정보가 현재 블록에 MMVD를 사용함을 나타내는 경우, MMVD의 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 파싱하고, MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여 MMVD에 대한 정보(mMvdLX)를 획득하고, MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 상위 레벨은 Coding Tree Unit, 슬라이스(slice), 타일(tile), 타일 그룹(tile group), 영상(picture), 또는 시퀀스(sequence) 단위 중 하나인 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 현재 블록의 머지 후보 리스트를 생성하고, 비트스트림으로부터 파싱된 머지 인덱스에 기초하여 머지 후보 리스트로부터 모션 벡터를 선택하고, MMVD 머지 정보가 현재 블록에 MMVD를 사용함을 나타내는 경우, 모션 벡터에 MMVD에 대한 정보를 더하여 수정된 모션 벡터를 획득하고, 수정된 모션 벡터에 기초하여 현재 블록을 복원하고, 수정된 모션 벡터는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하고, 제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 현재 블록을 포함하는 현재 픽쳐 및 제 1 참조 리스트에 기초한 제 1 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 1 POC 차이로 획득하고, 현재 픽쳐 및 제 2 참조 리스트에 기초한 제 2 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 2 POC 차이로 획득하고, MMVD 오프셋, 제 1 POC 차이, 및 제 2 POC 차이 중 적어도 하나에 기초하여 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보 및 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보를 획득하고, MMVD에 대한 정보는 제 1 MMVD에 대한 정보 및 제 2 MMVD에 대한 정보를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 제 1 POC 차이 및 제 2 POC 차이가 동일한 경우, MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하고, MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 제 1 POC 차이의 절대값이 제 2 POC 차이의 절대값보다 크거나 같은 경우, MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하고, 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 제 1 MMVD에 대한 정보를 스케일링하여 제 2 MMVD에 대한 정보를 획득하고, 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 제 1 MMVD에 대한 정보의 절대값을 스케일링하지 않고 제 2 MMVD에 대한 정보를 획득하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 제 1 POC 차이의 절대값이 제 2 POC 차이의 절대값보다 작은 경우, MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하고, 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 제 2 MMVD에 대한 정보를 스케일링하여 제 1 MMVD에 대한 정보를 획득하고, 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 제 2 MMVD에 대한 정보의 절대값을 스케일링하지 않고 제 1 MMVD에 대한 정보를 획득하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하고, 제 1 참조 리스트만 사용되는 경우, MMVD 오프셋을 스케일링하지 않고, 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보로써 획득하고, 제 2 참조 리스트만 사용되는 경우, MMVD 오프셋을 스케일링하지 않고, 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보로써 획득하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치는 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 명령어에 기초하여, 크로마 성분 포멧 정보를 상위 레벨의 비트스트림으로부터 획득하고, 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하고, 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하고, 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하고, y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하고, x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하고, 좌측 블록 및 상측 블록에 기초하여 가중치를 결정하고, 현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하고, 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하고, 가중치, 제 1 샘플들, 및 제 2 샘플들에 기초하여 현재 블록에 대한 조합 예측 샘플을 획득하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 좌측 블록이 이용 가능하고, 좌측 블록의 예측 모드가 인트라 예측인 경우, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)를 TRUE로 설정하고, 좌측 블록이 이용 가능하지 않거나, 좌측 블록의 예측 모드가 인트라 예측이 아닌 경우, 좌측 블록에 대한 코드 정보를 FALSE로 설정하고, 상측 블록이 이용 가능하고, 상측 블록의 예측 모드가 인트라 예측인 경우, 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)를 TRUE로 설정하고, 상측 블록이 이용 가능하지 않거나, 상측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상측 블록에 대한 코드 정보를 FALSE로 설정하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보가 모두 TRUE인 경우, 가중치를 3으로 결정하고, 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보가 모두 FALSE인 경우, 가중치를 1로 결정하고, 좌측 블록에 대한 코드 정보 및 상측 블록에 대한 코드 정보 중 하나만 TRUE인 경우, 가중치를 2로 결정하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, predSamplesComb[ x ][ y ] = ( w * predSamplesIntra[ x ][ y ] +( 4 - w ) * predSamplesInter[ x ][ y ] + 2) >> 2 에 기초하여 현재 블록을 예측하고, 여기서 predSamplesComb는 조합 예측 샘플을 의미하고, w는 가중치를 의미하고, predSamplesIntra는 제 2 샘플들을 의미하고, predSamplesInter는 제 1 샘플들을 의미하고, [x]는 현재 블록에 포함된 샘플의 x축 좌표를 의미하고, [y]는 현재 블록에 포함된 샘플의 y축 좌표를 의미하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 프로세서는 메모리에 저장된 명령어에 기초하여, 현재 블록의 색성분이 0 이거나, 너비에 관련된 정보가 1인 경우, x축의 스케일 정보를 0으로 결정하고, 현재 블록의 색성분이 0이 아니고, 너비에 관련된 정보가 1이 아닌 경우, x축의 스케일 정보를 1으로 결정하고, 현재 블록의 색성분이 0 이거나, 높이에 관련된 정보가 1인 경우, y축의 스케일 정보를 0으로 결정하고, 현재 블록의 색성분이 0이 아니고, 높이에 관련된 정보가 1이 아닌 경우, y축의 스케일 정보를 1으로 결정하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 디코딩하는 장치의 좌측 블록의 위치는 ( xCb - 1, yCb - 1 + ( cbHeight << scallFactHeight) ) 이고, xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, yCb는 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, cbHeight는 현재 블록의 높이의 크기이며, scallFactHeight는 y축의 스케일 정보이고, 상측 블록의 위치는 ( xCb - 1 + (cbWidth << scallFactWidth), yCb - 1 ) 이고, xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, yCb는 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, cbWidth는 현재 블록의 너비의 크기이며, scallFactWidth는 x축의 스케일 정보인 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 인코딩하는 방법은 현재 블록의 MMVD에 대한 정보(mMvdLX)를 생성하는 단계, MMVD에 대한 정보(mMvdLX)에 기초하여 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보를 생성하는 단계, 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 생성하는 단계, 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 생성하는 단계, 및 MMVD의 거리와 관련된 정보, MMVD의 방향과 관련된 정보, MMVD 머지 정보(mmvd_merge_flag), 및 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)에 기초하여 비트스트림을 생성하는 단계를 포함하고, MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 인코딩하는 장치는 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 명령어에 기초하여, 현재 블록의 MMVD에 대한 정보(mMvdLX)를 생성하고, MMVD에 대한 정보(mMvdLX)에 기초하여 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보를 생성하고, 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 생성하고, 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 생성하고, MMVD의 거리와 관련된 정보, MMVD의 방향과 관련된 정보, MMVD 머지 정보(mmvd_merge_flag), 및 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)에 기초하여 비트스트림을 생성하고, MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 인코딩하는 방법은 상위 레벨의 크로마 성분 포멧 정보를 생성하는 단계, 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하는 단계, 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하는 단계, 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하는 단계, y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하는 단계, x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하는 단계, 좌측 블록 및 상측 블록에 기초하여 가중치를 결정하는 단계, 현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하는 단계, 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하는 단계, 가중치, 제 1 샘플들, 및 제 2 샘플들에 기초하여 현재 블록에 대한 조합 예측 샘플을 획득하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 비디오 신호를 인코딩하는 장치는 프로세서 및 메모리를 포함하고, 프로세서는 메모리에 저장된 명령어에 기초하여, 상위 레벨의 크로마 성분 포멧 정보를 생성하고, 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하고, 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하고, 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하고, y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하고, x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하고, 좌측 블록 및 상측 블록에 기초하여 가중치를 결정하고, 현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하고, 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하고, 가중치, 제 1 샘플들, 및 제 2 샘플들에 기초하여 현재 블록에 대한 조합 예측 샘플을 획득하는 것을 특징으로 한다.
본 발명의 실시예에 따르면, 비디오 신호의 코딩 효율이 높아질 수 있다.
도 1은 본 개시의 일 실시예에 따른 비디오 신호 인코딩 장치의 개략적인 블록도이다.
도 2는 본 개시의 일 실시예에 따른 비디오 신호 디코딩 장치의 개략적인 블록도이다.
도 3은 픽쳐 내에서 코딩 트리 유닛이 코딩 유닛들로 분할되는 실시예를 도시한다.
도 4는 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하는 방법의 일 실시예를 도시한다.
도 5 및 도 6은 본 개시의 실시예에 따른 인트라 예측 방법을 더욱 구체적으로 도시한다.
도 7은 본 개시의 일 실시예에 따른 인터 예측 방법을 도시한다.
도 8은 본 개시의 일 실시예에 따라 현재 블록의 모션 벡터가 시그널링되는 방법을 나타내는 도면이다.
도 9는 본 개시의 일 실시예에 따라 현재 블록의 모션 벡터 차분 값이 시그널링되는 방법을 나타내는 도면이다.
도 10은 본 개시의 일 실시예에 따른 adaptive motion vector resolution 시그날링을 나타낸 도면이다.
도 11은 본 개시의 일 실시예에 따른 inter prediction 관련 syntax를 나타낸 도면이다.
도 12는 본 개시의 일 실시예에 따른 multi-hypothesis prediction을 나타낸 도면이다.
도 13은 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 14는 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 15는 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 16은 본 개시의 일 실시예에 따른 multi-hypothesis prediction 모드 결정 방법을 나타낸 도면이다.
도 17은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
도 18은 본 개시의 일 실시예에 따른 multi-hypothesis prediction에서 참조하는 주변 위치를 나타낸 도면이다.
도 19는 본 개시의 일 실시예에 따른 주변의 mode를 참조하는 방법을 나타낸 도면이다.
도 20은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
도 21은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
도 22는 본 개시의 일 실시예에 따른 multi-hypothesis prediction에서 참조하는 주변 위치를 나타낸 도면이다.
도 23은 본 개시의 일 실시예에 따른 주변의 mode를 참조하는 방법을 나타낸 도면이다.
도 24는 본 개시의 일 실시예에 따른 주변 sample 사용을 나타낸 도면이다.
도 25는 본 개시의 일 실시예에 따른 transform mode를 나타낸 도면이다.
도 26은 본 개시의 일 실시예에 따른 multi-hypothesis prediction과 transform mode 간의 관계를 나타낸 도면이다.
도 27은 본 개시의 일 실시예에 따른 color 성분들의 관계를 나타낸 도면이다.
도 28은 본 개시의 일 실시예에 따른 color 성분들의 관계를 나타낸 도면이다.
도 29은 본 개시의 일 실시예에 따른 주변 참조 위치를 나타낸 도면이다.
도 30은 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 31은 본 개시의 일 실시예에 따른 주변 참조 위치를 나타낸 도면이다.
도 32는 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 33은 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 34는 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 35는 본 개시의 일 실시예에 따른 CIIP weight derivation을 나타낸 도면이다.
도 36은 본 개시의 일 실시예에 따른 CIIP 과정을 나타낸 도면이다.
도 37은 본 개시의 일 실시예에 따른 MV 및 MVD 범위를 나타낸 도면이다.
도 38은 본 개시의 일 실시예에 따른 MMVD를 나타낸 도면이다.
도 39는 본 개시의 일 실시예에 따른 MMVD의 MVD derivation을 나타낸 도면이다.
도 40은 본 개시의 일 실시예에 따른 MVD 및 MV derivation을 나타낸 도면이다.
도 41는 본 개시의 일 실시예에 따른 MV, CPMV derivation을 나타낸 도면이다.
도 42는 본 개시의 일 실시예에 따른 MV 및 MVD 범위를 나타낸 도면이다.
도 43은 본 개시의 일 실시예에 따른 MMVD의 MVD derivation을 나타낸 도면이다.
본 명세서에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도, 관례 또는 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한 특정 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 그 의미를 기재할 것이다. 따라서 본 명세서에서 사용되는 용어는, 단순한 용어의 명칭이 아닌 그 용어가 가진 실질적인 의미와 본 명세서의 전반에 걸친 내용을 토대로 해석되어야 함을 밝혀두고자 한다.
본 명세서에서 일부 용어들은 다음과 같이 해석될 수 있다. 코딩은 경우에 따라 인코딩 또는 디코딩으로 해석될 수 있다. 본 명세서에서 비디오 신호의 인코딩(부호화)을 수행하여 비디오 신호 비트스트림을 생성하는 장치는 인코딩 장치 혹은 인코더로 지칭되며, 비디오 신호 비트스트림의 디코딩(복호화)을 수행하여 비디오 신호를 복원하는 장치는 디코딩 장치 혹은 디코더로 지칭된다. 또한, 본 명세서에서 비디오 신호 처리 장치는 인코더 및 디코더를 모두 포함하는 개념의 용어로 사용된다. 정보(information)는 값(values), 파라미터(parameter), 계수(coefficients), 성분(elements) 등을 모두 포함하는 용어로서, 경우에 따라 의미는 달리 해석될 수 있으므로 본 개시는 이에 한정되지 아니한다. '유닛'은 영상 처리의 기본 단위 또는 픽쳐의 특정 위치를 지칭하는 의미로 사용되며, 루마(luma) 성분과 크로마(chroma) 성분을 모두 포함하는 이미지 영역을 가리킨다. 또한, '블록'은 루마 성분 및 크로마 성분들(즉, Cb 및 Cr) 중 특정 성분을 포함하는 이미지 영역을 가리킨다. 다만, 실시예에 따라서 '유닛', '블록', '파티션' 및 '영역' 등의 용어는 서로 혼용하여 사용될 수 있다. 또한, 본 명세서에서 유닛은 코딩 유닛, 예측 유닛, 변환 유닛을 모두 포함하는 개념으로 사용될 수 있다. 픽쳐는 필드 혹은 프레임을 가리키며, 실시예에 따라 상기 용어들은 서로 혼용하여 사용될 수 있다.
도 1은 본 개시의 일 실시예에 따른 비디오 신호 인코딩 장치의 개략적인 블록도이다. 도 1을 참조하면, 본 개시의 인코딩 장치(100)는 변환부(110), 양자화부(115), 역양자화부(120), 역변환부(125), 필터링부(130), 예측부(150) 및 엔트로피 코딩부(160)를 포함한다.
변환부(110)는 입력 받은 비디오 신호와 예측부(150)에서 생성된 예측 신호의 차이인 레지듀얼 신호를 변환하여 변환 계수 값을 획득한다. 예를 들어, 이산 코사인 변환(Discrete Cosine Transform, DCT), 이산 사인 변환(Discrete Sine Transform, DST) 또는 웨이블릿 변환(Wavelet Transform) 등이 사용될 수 있다. 이산 코사인 변환 및 이산 사인 변환은 입력된 픽쳐 신호를 블록 형태로 나누어 변환을 수행하게 된다. 변환에 있어서 변환 영역 내의 값들의 분포와 특성에 따라서 코딩 효율이 달라질 수 있다. 양자화부(115)는 변환부(110)에서 출력된 변환 계수 값을 양자화한다.
코딩 효율을 높이기 위하여 픽쳐 신호를 그대로 코딩하는 것이 아니라, 예측부(150)를 통해 이미 코딩된 영역을 이용하여 픽쳐를 예측하고, 예측된 픽쳐에 원본 픽쳐와 예측 픽쳐 간의 레지듀얼 값을 더하여 복원 픽쳐를 획득하는 방법이 사용된다. 인코더와 디코더에서 미스매치가 발생되지 않도록 하기 위해, 인코더에서 예측을 수행할 때에는 디코더에서도 사용 가능한 정보를 사용해야 한다. 이를 위해, 인코더에서는 부호화한 현재 블록을 다시 복원하는 과정을 수행한다. 역양자화부(120)에서는 변환 계수 값을 역양자화하고, 역변환부(125)에서는 역양자화된 변환 계수값을 이용하여 레지듀얼 값을 복원한다. 한편, 필터링부(130)는 복원된 픽쳐의 품질 개선 및 부호화 효율 향상을 위한 필터링 연산을 수행한다. 예를 들어, 디블록킹 필터, 샘플 적응적 오프셋(Sample Adaptive Offset, SAO) 및 적응적 루프 필터 등이 포함될 수 있다. 필터링을 거친 픽쳐는 출력되거나 참조 픽쳐로 이용하기 위하여 복호 픽쳐 버퍼(Decoded Picture Buffer, DPB, 156)에 저장된다.
예측부(150)는 인트라 예측부(152)와 인터 예측부(154)를 포함한다. 인트라 예측부(152)는 현재 픽쳐 내에서 인트라(intra) 예측을 수행하며, 인터 예측부(154)는 복호 픽쳐 버퍼(156)에 저장된 참조 픽쳐를 이용하여 현재 픽쳐를 예측하는 인터(inter) 예측을 수행한다. 인트라 예측부(152)는 현재 픽쳐 내의 복원된 샘플들로부터 인트라 예측을 수행하여, 인트라 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인트라 부호화 정보는 인트라 예측 모드, MPM(Most Probable Mode) 플래그, MPM 인덱스 중 적어도 하나를 포함할 수 있다. 인트라 부호화 정보는 참조 샘플에 관한 정보를 포함할 수 있다. 인터 예측부(154)는 모션 추정부(154a) 및 모션 보상부(154b)를 포함하여 구성될 수 있다. 모션 추정부(154a)는 복원된 참조 픽쳐의 특정 영역을 참조하여 현재 영역의 모션 벡터값을 획득한다. 모션 추정부(154a)는 참조 영역에 대한 모션 정보 세트(참조 픽쳐 인덱스, 모션 벡터 정보 등)를 엔트로피 코딩부(160)로 전달한다. 모션 보상부(154b)는 모션 추정부(154a)에서 전달된 모션 벡터값을 이용하여 모션 보상을 수행한다. 인터 예측부(154)는 참조 영역에 대한 모션 정보를 포함하는 인터 부호화 정보를 엔트로피 코딩부(160)에 전달한다.
추가적인 실시예에 따라, 예측부(150)는 인트라 블록 카피(block copy, BC) 예측부(미도시)를 포함할 수 있다. 인트라 BC 예측부는 현재 픽쳐 내의 복원된 샘플들로부터 인트라 BC 예측을 수행하여, 인트라 BC 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인트라 BC 예측부는 현재 픽쳐 내의 특정 영역을 참조하여 현재 영역의 예측에 이용되는 참조 영역을 나타내는 블록 벡터값을 획득한다. 인트라 BC 예측부는 획득된 블록 벡터값을 이용하여 인트라 BC 예측을 수행할 수 있다. 인트라 BC 예측부는 인트라 BC 부호화 정보를 엔트로피 코딩부(160)로 전달한다. 인트라 BC 부호화 정보는 블록 벡터 정보를 포함할 수 있다.
위와 같은 픽쳐 예측이 수행될 경우, 변환부(110)는 원본 픽쳐와 예측 픽쳐 간의 레지듀얼 값을 변환하여 변환 계수 값을 획득한다. 이때, 변환은 픽쳐 내에서 특정 블록 단위로 수행될 수 있으며, 특정 블록의 크기는 기 설정된 범위 내에서 가변할 수 있다. 양자화부(115)는 변환부(110)에서 생성된 변환 계수 값을 양자화하여 엔트로피 코딩부(160)로 전달한다.
엔트로피 코딩부(160)는 양자화된 변환 계수를 나타내는 정보, 인트라 부호화 정보, 및 인터 부호화 정보 등을 엔트로피 코딩하여 비디오 신호 비트스트림을 생성한다. 엔트로피 코딩부(160)에서는 가변 길이 코딩(Variable Length Coding, VLC) 방식과 산술 코딩(arithmetic coding) 방식 등이 사용될 수 있다. 가변 길이 코딩(VLC) 방식은 입력되는 심볼들을 연속적인 코드워드로 변환하는데, 코드워드의 길이는 가변적일 수 있다. 예를 들어, 자주 발생하는 심볼들을 짧은 코드워드로, 자주 발생하지 않은 심볼들은 긴 코드워드로 표현하는 것이다. 가변 길이 코딩 방식으로서 컨텍스트 기반 적응형 가변 길이 코딩(Context-based Adaptive Variable Length Coding, CAVLC) 방식이 사용될 수 있다. 산술 코딩은 연속적인 데이터 심볼들을 하나의 소수로 변환하는데, 산술 코딩은 각 심볼을 표현하기 위하여 필요한 최적의 소수 비트를 얻을 수 있다. 산술 코딩으로서 컨텍스트 기반 적응형 산술 부호화(Context-based Adaptive Binary Arithmetic Code, CABAC)가 이용될 수 있다. 예를 들어, 엔트로피 코딩부(160)는 양자화된 변환 계수를 나타내는 정보를 이진화할 수 있다. 또한, 엔트로피 코딩부(160)는 이진화된 정보를 산술 코딩하여 비트스트림을 생성할 수 있다.
상기 생성된 비트스트림은 NAL(Network Abstraction Layer) 유닛을 기본 단위로 캡슐화 된다. NAL 유닛은 부호화된 정수 개의 코딩 트리 유닛(coding tree unit)을 포함한다. 비디오 디코더에서 비트스트림을 복호화하기 위해서는 먼저 비트스트림을 NAL 유닛 단위로 분리한 후, 분리된 각각의 NAL 유닛을 복호화해야 한다. 한편, 비디오 신호 비트스트림의 복호화를 위해 필요한 정보들은 픽쳐 파라미터 세트(Picture Parameter Set, PPS), 시퀀스 파라미터 세트(Sequence Parameter Set, SPS), 비디오 파라미터 세트(Video Parameter Set, VPS) 등과 같은 상위 레벨 세트의 RBSP(Raw Byte Sequence Payload)를 통해 전송될 수 있다.
한편, 도 1의 블록도는 본 개시의 일 실시예에 따른 인코딩 장치(100)를 나타낸 것으로서, 분리하여 표시된 블록들은 인코딩 장치(100)의 엘리먼트들을 논리적으로 구별하여 도시한 것이다. 따라서 전술한 인코딩 장치(100)의 엘리먼트들은 디바이스의 설계에 따라 하나의 칩으로 또는 복수의 칩으로 장착될 수 있다. 일 실시예에 따르면, 전술한 인코딩 장치(100)의 각 엘리먼트의 동작은 프로세서(미도시)에 의해 수행될 수 있다.
도 2는 본 개시의 일 실시예에 따른 비디오 신호 디코딩 장치(200)의 개략적인 블록도이다. 도 2를 참조하면 본 개시의 디코딩 장치(200)는 엔트로피 디코딩부(210), 역양자화부(220), 역변환부(225), 필터링부(230) 및 예측부(250)를 포함한다.
엔트로피 디코딩부(210)는 비디오 신호 비트스트림을 엔트로피 디코딩하여, 각 영역에 대한 변환 계수 정보, 인트라 부호화 정보, 인터 부호화 정보 등을 추출한다. 예를 들어, 엔트로피 디코딩부(210)는 비디오 신호 비트스트림으로부터 특정 영역의 변환 계수 정보에 대한 이진화 코드를 획득할 수 있다. 또한, 엔트로피 디코딩부(210)는 이진화 코드를 역 이진화하여 양자화된 변환 계수를 획득한다. 역양자화부(220)는 양자화된 변환 계수를 역양자화하고, 역변환부(225)는 역양자화된 변환 계수를 이용하여 레지듀얼 값을 복원한다. 비디오 신호 처리 장치(200)는 역변환부(225)에서 획득된 레지듀얼 값을 예측부(250)에서 획득된 예측값과 합산하여 원래의 화소값을 복원한다.
한편, 필터링부(230)는 픽쳐에 대한 필터링을 수행하여 화질을 향상시킨다. 여기에는 블록 왜곡 현상을 감소시키기 위한 디블록킹 필터 및/또는 픽쳐 전체의 왜곡 제거를 위한 적응적 루프 필터 등이 포함될 수 있다. 필터링을 거친 픽쳐는 출력되거나 다음 픽쳐에 대한 참조 픽쳐로 이용하기 위하여 복호 픽쳐 버퍼(DPB, 256)에 저장된다.
예측부(250)는 인트라 예측부(252) 및 인터 예측부(254)를 포함한다. 예측부(250)는 전술한 엔트로피 디코딩부(210)를 통해 복호화된 부호화 타입, 각 영역에 대한 변환 계수, 인트라/인터 부호화 정보 등을 활용하여 예측 픽쳐를 생성한다. 복호화가 수행되는 현재 블록을 복원하기 위해서, 현재 블록이 포함된 현재 픽쳐 또는 다른 픽쳐들의 복호화된 영역이 이용될 수 있다. 복원에 현재 픽쳐만을 이용하는, 즉 인트라 예측(또는 인츠라 예측 및 인트라 BC 예측)만을 수행하는 픽쳐(또는, 타일/슬라이스)를 인트라 픽쳐 또는 I 픽쳐(또는, 타일/슬라이스), 인트라 예측과 인터 예측을 모두 수행할 수 있는 픽쳐(또는, 타일/슬라이스)를 인터 픽쳐(또는, 타일/슬라이스)라고 한다. 인터 픽쳐(또는, 타일/슬라이스) 중 각 블록의 샘플값들을 예측하기 위하여 최대 하나의 모션 벡터 및 참조 픽쳐 인덱스를 이용하는 픽쳐(또는, 타일/슬라이스)를 예측 픽쳐(predictive picture) 또는 P 픽쳐(또는, 타일/슬라이스)라고 하며, 최대 두 개의 모션 벡터 및 참조 픽쳐 인덱스를 이용하는 픽쳐(또는, 타일/슬라이스)를 쌍예측 픽쳐(Bi-predictive picture) 또는 B 픽쳐(또는, 타일/슬라이스) 라고 한다. 다시 말해서, P 픽쳐(또는, 타일/슬라이스)는 각 블록을 예측하기 위해 최대 하나의 모션 정보 세트를 이용하고, B 픽쳐(또는, 타일/슬라이스)는 각 블록을 예측하기 위해 최대 두 개의 모션 정보 세트를 이용한다. 여기서, 모션 정보 세트는 하나 이상의 모션 벡터와 하나의 참조 픽쳐 인덱스를 포함한다.
인트라 예측부(252)는 인트라 부호화 정보 및 현재 픽쳐 내의 복원된 샘플들을 이용하여 예측 블록을 생성한다. 전술한 바와 같이, 인트라 부호화 정보는 인트라 예측 모드, MPM(Most Probable Mode) 플래그, MPM 인덱스 중 적어도 하나를 포함할 수 있다. 인트라 예측부(252)는 현재 블록의 좌측 및/또는 상측에 위치한 복원된 샘플들을 참조 샘플들로 이용하여 현재 블록의 샘플 값들을 예측한다. 본 개시에서, 복원된 샘플들, 참조 샘플들 및 현재 블록의 샘플들은 픽셀들을 나타낼 수 있다. 또한, 샘플 값(sample value)들은 픽셀 값들을 나타낼 수 있다.
일 실시예에 따르면, 참조 샘플들은 현재 블록의 주변 블록에 포함된 샘플들일 수 있다. 예를 들어, 참조 샘플들은 현재 블록의 좌측 경계에 인접한 샘플들 및/또는 상측 경계에 인접한 샘플들일 수 있다. 또한, 참조 샘플들은 현재 블록의 주변 블록의 샘플들 중 현재 블록의 좌측 경계로부터 기 설정된 거리 이내의 라인 상에 위치하는 샘플들 및/또는 현재 블록의 상측 경계로부터 기 설정된 거리 이내의 라인 상에 위치하는 샘플들일 수 있다. 이때, 현재 블록의 주변 블록은 현재 블록에 인접한 좌측(L) 블록, 상측(A) 블록, 하좌측(Below Left, BL) 블록, 상우측(Above Right, AR) 블록 또는 상좌측(Above Left, AL) 블록 중 적어도 하나를 포함할 수 있다.
인터 예측부(254)는 복호 픽쳐 버퍼(256)에 저장된 참조 픽쳐 및 인터 부호화 정보를 이용하여 예측 블록을 생성한다. 인터 부호화 정보는 참조 블록에 대한 현재 블록의 모션 정보 세트(참조 픽쳐 인덱스, 모션 벡터 정보 등)를 포함할 수 있다. 인터 예측에는 L0 예측, L1 예측 및 쌍예측(Bi-prediction)이 있을 수 있다. L0 예측은 L0 픽쳐 리스트에 포함된 1개의 참조 픽쳐를 이용한 예측이고, L1 예측은 L1 픽쳐 리스트에 포함된 1개의 참조 픽쳐를 이용한 예측을 의미한다. 이를 위해서는 1세트의 모션 정보(예를 들어, 모션 벡터 및 참조 픽쳐 인덱스)가 필요할 수 있다. 쌍예측 방식에서는 최대 2개의 참조 영역을 이용할 수 있는데, 이 2개의 참조 영역은 동일한 참조 픽쳐에 존재할 수도 있고, 서로 다른 픽쳐에 각각 존재할 수도 있다. 즉, 쌍예측 방식에서는 최대 2세트의 모션 정보(예를 들어, 모션 벡터 및 참조 픽쳐 인덱스)가 이용될 수 있는데, 2개의 모션 벡터가 동일한 참조 픽쳐 인덱스에 대응될 수도 있고 서로 다른 참조 픽쳐 인덱스에 대응될 수도 있다. 이때, 참조 픽쳐들은 시간적으로 현재 픽쳐 이전이나 이후 모두에 표시(또는 출력)될 수 있다. 또한 쌍예측 방식에서 2개의 참조 영역은 2개의 참조 픽쳐 리스트에 존재할 수 있다.
인터 예측부(254)는 모션 벡터 및 참조 픽쳐 인덱스를 이용하여 현재 블록의 참조 블록을 획득할 수 있다. 상기 참조 블록은 참조 픽쳐 인덱스에 대응하는 참조 픽쳐 내에 존재한다. 또한, 모션 벡터에 의해서 특정된 블록의 샘플 값 또는 이의 보간(interpolation)된 값이 현재 블록의 예측자(predictor)로 이용될 수 있다. 서브펠(sub-pel) 단위의 픽셀 정확도를 갖는 모션 예측을 위하여 이를 테면, 루마 신호에 대하여 8-탭 보간 필터가, 크로마 신호에 대하여 4-탭 보간 필터가 사용될 수 있다. 다만, 서브펠 단위의 모션 예측을 위한 보간 필터는 이에 한정되지 않는다. 이와 같이 인터 예측부(254)는 이전에 복원된 픽쳐로부터 현재 유닛의 텍스쳐를 예측하는 모션 보상(motion compensation)을 수행한다. 이때, 인터 예측부는 모션 정보 세트를 이용할 수 있다.
추가적인 실시예에 따라, 예측부(250)는 인트라 BC 예측부(미도시)를 포함할 수 있다. 인트라 BC 예측부는 현재 픽쳐 내의 복원된 샘플들로부터 인트라 BC 예측을 수행하여, 인트라 BC 부호화 정보를 엔트로피 코딩부(160)에 전달한다. 인트라 BC 예측부는 현재 픽쳐 내의 특정 영역을 지시하는 현재 영역의 블록 벡터값을 획득한다. 인트라 BC 예측부는 획득된 블록 벡터값을 이용하여 인트라 BC 예측을 수행할 수 있다. 인트라 BC 예측부는 인트라 BC 부호화 정보를 엔트로피 코딩부(160)로 전달한다. 인트라 BC 부호화 정보는 블록 벡터 정보를 포함할 수 있다.
상기 인트라 예측부(252) 또는 인터 예측부(254)로부터 출력된 예측값, 및 역변환부(225)로부터 출력된 레지듀얼 값이 더해져서 복원된 비디오 픽쳐가 생성된다. 즉, 비디오 신호 디코딩 장치(200)는 예측부(250)에서 생성된 예측 블록과 역변환부(225)로부터 획득된 레지듀얼을 이용하여 현재 블록을 복원한다.
한편, 도 2의 블록도는 본 개시의 일 실시예에 따른 디코딩 장치(200)를 나타낸 것으로서, 분리하여 표시된 블록들은 디코딩 장치(200)의 엘리먼트들을 논리적으로 구별하여 도시한 것이다. 따라서 전술한 디코딩 장치(200)의 엘리먼트들은 디바이스의 설계에 따라 하나의 칩으로 또는 복수의 칩으로 장착될 수 있다. 일 실시예에 따르면, 전술한 디코딩 장치(200)의 각 엘리먼트의 동작은 프로세서(미도시)에 의해 수행될 수 있다.
도 3은 픽쳐 내에서 코딩 트리 유닛(Coding Tree Unit, CTU)이 코딩 유닛들(Coding Units, CUs)로 분할되는 실시예를 도시한다. 비디오 신호의 코딩 과정에서, 픽쳐는 코딩 트리 유닛(CTU)들의 시퀀스로 분할될 수 있다. 코딩 트리 유닛은 루마(luma) 샘플들의 NXN 블록과, 이에 대응하는 크로마(chroma) 샘플들의 2개의 블록들로 구성된다. 코딩 트리 유닛은 복수의 코딩 유닛들로 분할될 수 있다. 코딩 트리 유닛은 분할되지 않고 리프 노드가 될 수도 있다. 이 경우, 코딩 트리 유닛 자체가 코딩 유닛이 될 수 있다. 코딩 유닛은 상기에서 설명한 비디오 신호의 처리 과정, 즉 인트라/인터 예측, 변환, 양자화 및/또는 엔트로피 코딩 등의 과정에서 픽쳐를 처리하기 위한 기본 단위를 가리킨다. 하나의 픽쳐 내에서 코딩 유닛의 크기 및 모양은 일정하지 않을 수 있다. 코딩 유닛은 정사각형 혹은 직사각형의 모양을 가질 수 있다. 직사각형 코딩 유닛(혹은, 직사각형 블록)은 수직 코딩 유닛(혹은, 수직 블록)과 수평 코딩 유닛(혹은, 수평 블록)을 포함한다. 본 명세서에서, 수직 블록은 높이가 너비보다 큰 블록이며, 수평 블록은 너비가 높이보다 큰 블록이다. 또한, 본 명세서에서 정사각형이 아닌(non-square) 블록은 직사각형 블록을 가리킬 수 있지만, 본 개시는 이에 한정되지 않는다.
도 3을 참조하면, 코딩 트리 유닛은 먼저 쿼드 트리(Quad Tree, QT) 구조로 분할된다. 즉, 쿼드 트리 구조에서 2NX2N 크기를 가지는 하나의 노드는 NXN 크기를 가지는 네 개의 노드들로 분할될 수 있다. 본 명세서에서 쿼드 트리는 4진(quaternary) 트리로도 지칭될 수 있다. 쿼드 트리 분할은 재귀적으로 수행될 수 있으며, 모든 노드들이 동일한 깊이로 분할될 필요는 없다.
한편, 전술한 쿼드 트리의 리프 노드(leaf node)는 멀티-타입 트리(Multi-Type Tree, MTT) 구조로 더욱 분할될 수 있다. 본 개시의 실시예에 따르면, 멀티 타입 트리 구조에서는 하나의 노드가 수평 혹은 수직 분할의 2진(binary, 바이너리) 혹은 3진(ternary, 터너리) 트리 구조로 분할될 수 있다. 즉, 멀티-타입 트리 구조에는 수직 바이너리 분할, 수평 바이너리 분할, 수직 터너리 분할 및 수평 터너리 분할의 4가지 분할 구조가 존재한다. 본 개시의 실시예에 따르면, 상기 각 트리 구조에서 노드의 너비 및 높이는 모두 2의 거듭제곱 값을 가질 수 있다. 예를 들어, 바이너리 트리(Binary Tree, BT) 구조에서, 2NX2N 크기의 노드는 수직 바이너리 분할에 의해 2개의 NX2N 노드들로 분할되고, 수평 바이너리 분할에 의해 2개의 2NXN 노드들로 분할될 수 있다. 또한, 터너리 트리(Ternary Tree, TT) 구조에서, 2NX2N 크기의 노드는 수직 터너리 분할에 의해 (N/2)X2N, NX2N 및 (N/2)X2N의 노드들로 분할되고, 수평 바이너리 분할에 의해 2NX(N/2), 2NXN 및 2NX(N/2)의 노드들로 분할될 수 있다. 이러한 멀티-타입 트리 분할은 재귀적으로 수행될 수 있다.
멀티-타입 트리의 리프 노드는 코딩 유닛이 될 수 있다. 코딩 유닛에 대한 분할이 지시되지 않거나 코딩 유닛이 최대 변환 길이에 비해 크지 않은 경우, 해당 코딩 유닛은 더 이상의 분할 없이 예측 및 변환의 단위로 사용된다. 한편, 전술한 쿼드 트리 및 멀티-타입 트리에서 다음의 파라메터들 중 적어도 하나가 사전에 정의되거나 PPS, SPS, VPS 등과 같은 상위 레벨 세트의 RBSP를 통해 전송될 수 있다. 1) CTU 크기: 쿼드 트리의 루트 노드(root node) 크기, 2) 최소 QT 크기(MinQtSize): 허용된 최소 QT 리프 노드 크기, 3) 최대 BT 크기(MaxBtSize): 허용된 최대 BT 루트 노드 크기, 4) 최대 TT 크기(MaxTtSize): 허용된 최대 TT 루트 노드 크기, 5) 최대 MTT 깊이(MaxMttDepth): QT의 리프 노드로부터의 MTT 분할의 최대 허용 깊이, 6) 최소 BT 크기(MinBtSize): 허용된 최소 BT 리프 노드 크기, 7) 최소 TT 크기(MinTtSize): 허용된 최소 TT 리프 노드 크기.
도 4는 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하는 방법의 일 실시예를 도시한다. 전술한 쿼드 트리 및 멀티-타입 트리의 분할을 시그널링하기 위해 기 설정된 플래그들이 사용될 수 있다. 도 4를 참조하면, 쿼드 트리 노드의 분할 여부를 지시하는 플래그 'qt_split_flag', 멀티-타입 트리 노드의 분할 여부를 지시하는 플래그 'mtt_split_flag', 멀티-타입 트리 노드의 분할 방향을 지시하는 플래그 'mtt_split_vertical_flag' 또는 멀티-타입 트리 노드의 분할 모양을 지시하는 플래그 'mtt_split_binary_flag' 중 적어도 하나가 사용될 수 있다.
본 개시의 실시예에 따르면, 코딩 트리 유닛은 쿼드 트리의 루트 노드이며, 쿼드 트리 구조로 우선 분할될 수 있다. 쿼드 트리 구조에서는 각각의 노드 'QT_node' 별로 'qt_split_flag'가 시그널링된다. 'qt_split_flag'의 값이 1일 경우 해당 노드는 4개의 정사각형 노드들로 분할되며, 'qt_split_flag'의 값이 0일 경우 해당 노드는 쿼드 트리의 리프 노드 'QT_leaf_node'가 된다.
각각의 쿼드 트리 리프 노드 'QT_leaf_node'는 멀티-타입 트리 구조로 더 분할될 수 있다. 멀티-타입 트리 구조에서는 각각의 노드 'MTT_node' 별로 'mtt_split_flag'가 시그널링된다. 'mtt_split_flag'의 값이 1일 경우 해당 노드는 복수의 직사각형 노드들로 분할되며, 'mtt_split_flag'의 값이 0일 경우 해당 노드는 멀티-타입 트리의 리프 노드 'MTT_leaf_node'가 된다. 멀티-타입 트리 노드 'MTT_node'가 복수의 직사각형 노드들로 분할될 경우(즉, 'mtt_split_flag'의 값이 1일 경우), 노드 'MTT_node'를 위한 'mtt_split_vertical_flag' 및 'mtt_split_binary_flag'가 추가로 시그널링될 수 있다. 'mtt_split_vertical_flag'의 값이 1일 경우 노드 'MTT_node'의 수직 분할이 지시되며, 'mtt_split_vertical_flag'의 값이 0일 경우 노드 'MTT_node'의 수평 분할이 지시된다. 또한, 'mtt_split_binary_flag'의 값이 1일 경우 노드 'MTT_node'는 2개의 직사각형 노드들로 분할되며, 'mtt_split_binary_flag'의 값이 0일 경우 노드 'MTT_node'는 3개의 직사각형 노드들로 분할된다.
코딩을 위한 픽쳐 예측(모션 보상)은 더 이상 나누어지지 않는 코딩 유닛(즉 코딩 유닛 트리의 리프 노드)을 대상으로 이루어진다. 이러한 예측을 수행하는 기본 단위를 이하에서는 예측 유닛(prediction unit) 또는 예측 블록(prediction block)이라고 한다.
이하, 본 명세서에서 사용되는 유닛이라는 용어는 예측을 수행하는 기본 단위인 상기 예측 유닛을 대체하는 용어로 사용될 수 있다. 다만, 본 개시가 이에 한정되는 것은 아니며, 더욱 광의적으로는 상기 코딩 유닛을 포함하는 개념으로 이해될 수 있다.
도 5 및 도 6은 본 개시의 실시예에 따른 인트라 예측 방법을 더욱 구체적으로 도시한다. 전술한 바와 같이, 인트라 예측부는 현재 블록의 좌측 및/또는 상측에 위치한 복원된 샘플들을 참조 샘플들로 이용하여 현재 블록의 샘플 값들을 예측한다.
먼저, 도 5는 인트라 예측 모드에서 현재 블록의 예측을 위해 사용되는 참조 샘플들의 일 실시예를 도시한다. 일 실시예에 따르면, 참조 샘플들은 현재 블록의 좌측 경계에 인접한 샘플들 및/또는 상측 경계에 인접한 샘플들일 수 있다. 도 5에 도시된 바와 같이, 현재 블록의 크기가 WXH이고 현재 블록에 인접한 단일 참조 라인(line)의 샘플들이 인트라 예측에 사용될 경우, 현재 블록의 좌측 및/또는 상측에 위치한 최대 2W+2H+1개의 주변 샘플들을 사용하여 참조 샘플들이 설정될 수 있다.
본 개시의 추가적인 실시예에 따르면, 현재 블록의 인트라 예측을 위해 복수의 참조 라인들 상의 샘플들이 사용될 수 있다. 복수의 참조 라인들은 현재 블록의 경계로부터 기 설정된 거리 이내에 위치한 n개의 라인들로 구성될 수 있다. 이 경우, 현재 블록의 인트라 예측을 위해 사용되는 적어도 하나의 참조 라인을 지시하는 별도의 참조 라인 정보가 시그널링될 수 있다. 구체적으로, 참조 라인 정보는 복수의 참조 라인들 중 어느 하나를 지시하는 인덱스를 포함할 수 있다.
또한, 참조 샘플로 사용될 적어도 일부의 샘플이 아직 복원되지 않은 경우, 인트라 예측부는 참조 샘플 패딩 과정을 수행하여 참조 샘플을 획득할 수 있다. 또한, 인트라 예측부는 인트라 예측의 오차를 줄이기 위해 참조 샘플 필터링 과정을 수행할 수 있다. 즉, 주변 샘플들 및/또는 참조 샘플 패딩 과정에 의해 획득된 참조 샘플들에 필터링을 수행하여 필터링된 참조 샘플들을 획득할 수 있다. 인트라 예측부는 이와 같이 획득된 참조 샘플들을 이용하여 현재 블록의 샘플들을 예측한다. 인트라 예측부는 필터링되지 않은 참조 샘플들 또는 필터링된 참조 샘플들을 이용하여 현재 블록의 샘플들을 예측한다. 본 개시에서, 주변 샘플들은 적어도 하나의 참조 라인 상의 샘플들을 포함할 수 있다. 예를 들어, 주변 샘플들은 현재 블록의 경계에 인접한 라인 상의 인접 샘플들을 포함할 수 있다.
다음으로, 도 6은 인트라 예측에 사용되는 예측 모드들의 일 실시예를 도시한다. 인트라 예측을 위해, 인트라 예측 방향을 지시하는 인트라 예측 모드 정보가 시그널링될 수 있다. 인트라 예측 모드 정보는 인트라 예측 모드 세트를 구성하는 복수의 인트라 예측 모드들 중 어느 하나를 지시한다. 현재 블록이 인트라 예측 블록일 경우, 디코더는 비트스트림으로부터 현재 블록의 인트라 예측 모드 정보를 수신한다. 디코더의 인트라 예측부는 추출된 인트라 예측 모드 정보에 기초하여 현재 블록에 대한 인트라 예측을 수행한다.
본 개시의 실시예에 따르면, 인트라 예측 모드 세트는 인트라 예측에 사용되는 모든 인트라 예측 모드들(예, 총 67개의 인트라 예측 모드들)을 포함할 수 있다. 더욱 구체적으로, 인트라 예측 모드 세트는 평면 모드, DC 모드 및 복수의(예, 65개의) 각도 모드들(즉, 방향 모드들)을 포함할 수 있다. 각각의 인트라 예측 모드는 기 설정된 인덱스(즉, 인트라 예측 모드 인덱스)를 통해 지시될 수 있다. 예를 들어, 도 6에 도시된 바와 같이 인트라 예측 모드 인덱스 0은 평면 모드를 지시하고, 인트라 예측 모드 인덱스 1은 DC 모드를 지시한다. 또한, 인트라 예측 모드 인덱스 2 내지 66은 서로 다른 각도 모드들을 각각 지시할 수 있다. 각도 모드들은 기 설정된 각도 범위 이내의 서로 다른 각도들을 각각 지시한다. 예를 들어, 각도 모드는 시계 방향으로 45도에서 -135도 사이의 각도 범위(즉, 제1 각도 범위) 이내의 각도를 지시할 수 있다. 상기 각도 모드는 12시 방향을 기준으로 정의될 수 있다. 이때, 인트라 예측 모드 인덱스 2는 수평 대각(Horizontal Diagonal, HDIA) 모드를 지시하고, 인트라 예측 모드 인덱스 18은 수평(Horizontal, HOR) 모드를 지시하고, 인트라 예측 모드 인덱스 34는 대각(Diagonal, DIA) 모드를 지시하고, 인트라 예측 모드 인덱스 50은 수직(Vertical, VER) 모드를 지시하며, 인트라 예측 모드 인덱스 66은 수직 대각(Vertical Diagonal, VDIA) 모드를 지시한다.
한편, 기 설정된 각도 범위는 현재 블록의 모양에 따라 서로 다르게 설정될 수 있다. 예를 들어, 현재 블록이 직사각형 블록일 경우 시계 방향으로 45도를 초과하거나 -135도 미만 각도를 지시하는 광각 모드가 추가적으로 사용될 수 있다. 현재 블록이 수평 블록일 경우, 각도 모드는 시계 방향으로 (45+offset1)도에서 (-135+offset1)도 사이의 각도 범위(즉, 제2 각도 범위) 이내의 각도를 지시할 수 있다. 이때, 제1 각도 범위를 벗어나는 각도 모드 67 내지 80이 추가적으로 사용될 수 있다. 또한, 현재 블록이 수직 블록일 경우, 각도 모드는 시계 방향으로 (45-offset2)도에서 (-135-offset2)도 사이의 각도 범위(즉, 제3 각도 범위) 이내의 각도를 지시할 수 있다. 이때, 제1 각도 범위를 벗어나는 각도 모드 -10 내지 -1이 추가적으로 사용될 수 있다. 본 개시의 실시예에 따르면, offset1 및 offset2의 값은 직사각형 블록의 너비와 높이 간의 비율에 따라 서로 다르게 결정될 수 있다. 또한, offset1 및 offset2는 양수일 수 있다.
본 개시의 추가적인 실시예에 따르면, 인트라 예측 모드 세트를 구성하는 복수의 각도 모드들은 기본 각도 모드와 확장 각도 모드를 포함할 수 있다. 이때, 확장 각도 모드는 기본 각도 모드에 기초하여 결정될 수 있다.
일 실시예에 따르면, 기본 각도 모드는 기존 HEVC(High Efficiency Video Coding) 표준의 인트라 예측에서 사용되는 각도에 대응하는 모드이고, 확장 각도 모드는 차세대 비디오 코덱 표준의 인트라 예측에서 새롭게 추가되는 각도에 대응하는 모드일 수 있다. 더욱 구체적으로, 기본 각도 모드는 인트라 예측 모드 {2, 4, 6, …, 66} 중 어느 하나에 대응하는 각도 모드이고, 확장 각도 모드는 인트라 예측 모드 {3, 5, 7, …, 65} 중 어느 하나에 대응하는 각도 모드일 수 있다. 즉, 확장 각도 모드는 제1 각도 범위 내에서 기본 각도 모드들 사이의 각도 모드일 수 있다. 따라서, 확장 각도 모드가 지시하는 각도는 기본 각도 모드가 지시하는 각도에 기초하여 결정될 수 있다.
다른 실시예에 따르면, 기본 각도 모드는 기 설정된 제1 각도 범위 이내의 각도에 대응하는 모드이고, 확장 각도 모드는 상기 제1 각도 범위를 벗어나는 광각 모드일 수 있다. 즉, 기본 각도 모드는 인트라 예측 모드 {2, 3, 4, …, 66} 중 어느 하나에 대응하는 각도 모드이고, 확장 각도 모드는 인트라 예측 모드 {-10, -9, …, -1} 및 {67, 68, …, 76} 중 어느 하나에 대응하는 각도 모드일 수 있다. 확장 각도 모드가 지시하는 각도는 대응하는 기본 각도 모드가 지시하는 각도의 반대편 각도로 결정될 수 있다. 따라서, 확장 각도 모드가 지시하는 각도는 기본 각도 모드가 지시하는 각도에 기초하여 결정될 수 있다. 한편, 확장 각도 모드들의 개수는 이에 한정되지 않으며, 현재 블록의 크기 및/또는 모양에 따라 추가적인 확장 각도들이 정의될 수 있다. 예를 들어, 확장 각도 모드는 인트라 예측 모드 {-14, -13, …, -1} 및 {67, 68, …, 80} 중 어느 하나에 대응하는 각도 모드로 정의될 수도 있다. 한편, 인트라 예측 모드 세트에 포함되는 인트라 예측 모드들의 총 개수는 전술한 기본 각도 모드와 확장 각도 모드의 구성에 따라 가변할 수 있다.
상기 실시예들에서, 확장 각도 모드들 간의 간격은 대응하는 기본 각도 모드들 간의 간격에 기초하여 설정될 수 있다. 예를 들어, 확장 각도 모드들 {3, 5, 7, …, 65} 간의 간격은 대응하는 기본 각도 모드들 {2, 4, 6, …, 66} 간의 간격에 기초하여 결정될 수 있다. 또한, 확장 각도 모드들 {-10, -9, …, -1} 간의 간격은 대응하는 반대편의 기본 각도 모드들 {56, 57, …, 65} 간의 간격에 기초하여 결정되고, 확장 각도 모드들 {67, 68, …, 76} 간의 간격은 대응하는 반대편의 기본 각도 모드들 {3, 4, …, 12} 간의 간격에 기초하여 결정될 수 있다. 확장 각도 모드들 간의 각도 간격은 대응하는 기본 각도 모드들 간의 각도 간격과 동일하도록 설정될 수 있다. 또한, 인트라 예측 모드 세트에서 확장 각도 모드들의 개수는 기본 각도 모드들의 개수 이하로 설정될 수 있다.
본 개시의 실시예에 따르면, 확장 각도 모드는 기본 각도 모드를 기초로 시그널링될 수 있다. 예를 들어, 광각 모드(즉, 확장 각도 모드)는 제1 각도 범위 이내의 적어도 하나의 각도 모드(즉, 기본 각도 모드)를 대체할 수 있다. 대체되는 기본 각도 모드는 광각 모드의 반대편에 대응하는 각도 모드일 수 있다. 즉, 대체되는 기본 각도 모드는 광각 모드가 지시하는 각도의 반대 방향의 각도에 대응하거나 또는 상기 반대 방향의 각도로부터 기 설정된 오프셋 인덱스만큼 차이 나는 각도에 대응하는 각도 모드이다. 본 개시의 실시예에 따르면, 기 설정된 오프셋 인덱스는 1이다. 대체되는 기본 각도 모드에 대응하는 인트라 예측 모드 인덱스는 광각 모드에 다시 매핑되어 해당 광각 모드를 시그널링할 수 있다. 예를 들어, 광각 모드 {-10, -9, …, -1}은 인트라 예측 모드 인덱스 {57, 58, …, 66}에 의해 각각 시그널링될 수 있고, 광각 모드 {67, 68, …, 76}은 인트라 예측 모드 인덱스 {2, 3, …, 11}에 의해 각각 시그널링될 수 있다. 이와 같이 기본 각도 모드를 위한 인트라 예측 모드 인덱스가 확장 각도 모드를 시그널링하도록 함으로, 각 블록의 인트라 예측에 사용되는 각도 모드들의 구성이 서로 다르더라도 동일한 세트의 인트라 예측 모드 인덱스들이 인트라 예측 모드의 시그널링에 사용될 수 있다. 따라서, 인트라 예측 모드 구성의 변화에 따른 시그널링 오버헤드가 최소화될 수 있다.
한편, 확장 각도 모드의 사용 여부는 현재 블록의 모양 및 크기 중 적어도 하나에 기초하여 결정될 수 있다. 일 실시예에 따르면, 현재 블록의 크기가 기 설정된 크기보다 클 경우 확장 각도 모드가 현재 블록의 인트라 예측을 위해 사용되고, 그렇지 않을 경우 기본 각도 모드만 현재 블록의 인트라 예측을 위해 사용될 수 있다. 다른 실시예에 따르면, 현재 블록이 정사각형이 아닌 블록인 경우 확장 각도 모드가 현재 블록의 인트라 예측을 위해 사용되고, 현재 블록이 정사각형 블록인 경우 기본 각도 모드만 현재 블록의 인트라 예측을 위해 사용될 수 있다.
인트라 예측부는 현재 블록의 인트라 예측 모드 정보에 기초하여, 현재 블록의 인트라 예측에 사용될 참조 샘플들 및/또는 보간된 참조 샘플들을 결정한다. 인트라 예측 모드 인덱스가 특정 각도 모드를 지시할 경우, 현재 블록의 현재 샘플로부터 상기 특정 각도에 대응하는 참조 샘플 또는 보간된 참조 샘플이 현재 샘플의 예측에 사용된다. 따라서, 인트라 예측 모드에 따라 서로 다른 세트의 참조 샘플들 및/또는 보간된 참조 샘플들이 인트라 예측에 사용될 수 있다. 참조 샘플들 및 인트라 예측 모드 정보를 이용하여 현재 블록의 인트라 예측이 수행되고 나면, 디코더는 역변환부로부터 획득된 현재 블록의 잔차 신호를 현재 블록의 인트라 예측값과 더하여 현재 블록의 샘플 값들을 복원한다.
이하, 도 7을 참조하여 본 개시의 일 실시예에 따른 인터 예측 방법에 대해 설명하도록한다. 본 개시에서, 인터 예측 방법은 병진 운동(translation motion)에 최적화된 일반 인터 예측 방법 및 어파인(affine) 모델 기반의 인터 예측 방법을 포함할 수 있다. 또한, 모션 벡터는 일반 인터 예측 방법에 따른 모션 보상을 위한 일반 모션 벡터 및 어파인 모션 보상을 위한 컨트롤 포인트 모션 벡터(control point motion vector) 중 적어도 하나를 포함할 수 있다.
도 7은 본 개시의 일 실시예에 따른 인터 예측 방법을 도시한다. 전술한 바와 같이, 디코더는 복호화된 다른 픽쳐의 복원된 샘플들을 참조하여 현재 블록을 예측할 수 있다. 도 7을 참조하면, 디코더는 현재 블록(701)의 모션 정보 세트에 기초하여 참조 픽쳐(720) 내의 참조 블록(702)을 획득한다. 이때, 모션 정보 세트는 참조 픽쳐 인덱스 및 모션 벡터(703)를 포함할 수 있다. 참조 픽쳐 인덱스는 참조 픽쳐 리스트에서 현재 블록의 인터 예측을 위한 참조 블록이 포함된 참조 픽쳐(720)를 지시한다. 일 실시예에 따라, 참조 픽쳐 리스트는 전술한 L0 픽쳐 리스트 또는 L1 픽쳐 리스트 중 적어도 하나를 포함할 수 있다. 모션 벡터(703)는 현재 픽쳐(710) 내에서 현재 블록(701)의 좌표 값과 참조 픽쳐(720) 내에서 참조 블록(702)의 좌표 값 간의 오프셋을 나타낸다. 디코더는 참조 블록(702)의 샘플 값들에 기초하여 현재 블록(701)의 예측자를 획득하고, 상기 예측자를 이용하여 현재 블록(701)을 복원한다.
구체적으로, 인코더는 복원 순서가 앞선 픽쳐들에서 현재 블록과 유사한 블록을 탐색하여 전술한 참조 블록을 획득할 수 있다. 예를 들어, 인코더는 기 설정된 탐색 영역 내에서 현재 블록과 샘플 값 차이의 합이 최소가 되는 참조 블록을 탐색할 수 있다. 이때, 현재 블록과 참조 블록의 샘플들 간의 유사도를 측정하기 위해, SAD (Sum Of Absolute Difference) 또는 SATD (Sum of Hadamard Transformed Difference) 중 적어도 하나가 사용될 수 있다. 여기에서, SAD는 두 블록에 포함된 샘플 값들의 차이 각각의 절대값을 모두 더한 값일 수 있다. 또한, SATD는 두 블록에 포함된 샘플 값들의 차이를 하다마드 변환(Hadamard Transform)하여 획득된 하다마드 변환 계수의 절대값을 모두 더한 값일 수 있다.
한편, 현재 블록은 하나 이상의 참조 영역을 이용하여 예측될 수도 있다. 전술한 바와 같이, 현재 블록은 2개 이상의 참조 영역을 이용하는 쌍예측 방식을 통해 인터 예측될 수 있다. 일 실시예에 따라, 디코더는 현재 블록의 2개의 모션 정보 세트에 기초하여 2개의 참조 블록을 획득할 수 있다. 또한, 디코더는 획득된 2개의 참조 블록 각각의 샘플 값들에 기초하여 현재 블록의 제1 예측자 및 제2 예측자를 획득할 수 있다. 또한, 디코더는 제1 예측자 및 제2 예측자를 이용하여 현재 블록을 복원할 수 있다. 예를 들어, 디코더는 제1 예측자 및 제2 예측자의 샘플 별 평균에 기초하여 현재 블록을 복원할 수 있다.
전술한 바와 같이, 현재 블록의 모션 보상을 위해, 하나 이상의 모션 정보 세트가 시그널링될 수 있다. 이때, 복수의 블록 각각의 모션 보상을 위한 모션 정보 세트 간의 유사성이 이용될 수 있다. 예를 들어, 현재 블록의 예측에 사용되는 모션 정보 세트는 기 복원된 다른 샘플들 중 어느 하나의 예측에 사용된 모션 정보 세트로부터 유도될 수 있다. 이를 통해, 인코더 및 디코더는 시그널링 오버헤드를 감소시킬 수 있다.
예를 들어, 현재 블록의 모션 정보 세트와 동일 또는 유사한 모션 정보 세트에 기초하여 예측되었을 가능성이 있는 복수의 후보 블록들이 존재할 수 있다. 디코더는 머지 후보 리스트(merge candidate list)를 생성할 수 있다. 디코더는 해당 복수의 후보 블록들을 기초로 머지 후보 리스트를 생성할 수 있다. 여기에서, 머지 후보 리스트는 현재 블록보다 먼저 복원된 샘플들 중에서, 현재 블록의 모션 정보 세트와 관련된 모션 정보 세트에 기초하여 예측되었을 가능성이 있는 샘플에 대응하는 후보들을 포함할 수 있다. 머지 후보 리스트는 공간적 후보 또는 시간적 후보를 포함할 수 있다. 머지 후보 리스트 현재 블록보다 먼저 복원된 샘플들의 위치에 기초하여 생성될 수 있다. 현재 블록보다 먼저 복원된 샘플들은 현재 블록의 이웃 블록일 수 있다.현재 블록의 이웃 블록은 현재 블록에 인접한 블록을 의미할 수 있다. 인코더와 디코더는 미리 정의된 규칙에 따라 현재 블록의 머지 후보 리스트를 구성할 수 있다. 이때, 인코더와 디코더가 각각 구성한 머지 후보 리스트는 서로 동일할 수 있다. 예를 들어, 인코더 및 디코더는 현재 픽쳐 내에서 현재 블록의 위치에 기초하여 현재 블록의 머지 후보 리스트를 구성할 수 있다. 본 개시에서, 특정 블록의 위치는 특정 블록을 포함하는 픽쳐 내에서 특정 블록의 좌상단(top-left) 샘플의 상대적인 위치를 나타낸다.
도 8은 본 개시의 일 실시예에 따라, 현재 블록의 모션 벡터가 시그널링되는 방법을 나타내는 도면이다. 본 개시의 일 실시예에 따라, 현재 블록의 모션 벡터는 현재 블록의 모션 벡터 예측자(motion vector predictor, MVP)로부터 유도될 수 있다. 일 실시예에 따라, 현재 블록의 모션 벡터를 유도하기 위해 참조되는 모션 벡터 예측자는 모션 벡터 예측자(motion vector predictor, MVP) 후보 리스트를 이용하여 획득될 수 있다. MVP 후보 리스트는 기 설정된 개수의 MVP 후보(Candidate 1, Candidate 2, ..., Candidate N)를 포함할 수 있다.
일 실시예에 따라, MVP 후보 리스트는 공간적 후보 또는 시간적 후보 중 적어도 하나를 포함할 수 있다. 공간적 후보는 현재 픽쳐 내에서 현재 블록으로부터 일정한 범위 이내의 주변 블록의 예측에 사용된 모션 정보 세트일 수 있다. 공간적 후보는 현재 블록의 주변 블록들 중 이용 가능한 주변 블록들을 기초로 구성될 수 있다. 또한, 시간적 후보는 현재 픽쳐와 다른 픽쳐 내의 블록의 예측에 사용된 모션 정보 세트일 수 있다. 예를 들어, 시간적 후보는 특정 참조 픽쳐 내에서 현재 블록의 위치에 대응하는 특정 블록을 기초로 구성될 수 있다. 이때, 특정 블록의 위치는 상기 참조 픽쳐 내에서 특정 블록의 좌상단(top-left) 샘플의 위치를 나타낸다. 추가적인 실시예에 따라, MVP 후보 리스트는 제로 모션 벡터를 포함할 수 있다. 추가적인 실시예에 따라, 현재 블록의 MVP 후보 리스트가 포함하는 MVP 후보에 대한 라운딩(rounding) 프로세스가 수행될 수 있다. 이때, 후술할 현재 블록의 모션 벡터 차분 값의 레졸루션이 이용될 수 있다. 예를 들어, 현재 블록의 MVP 후보들은 각각 현재 블록의모션 벡터 차분 값의 레졸루션에 기초하여 라운딩될 수 있다.
본 개시에서, MVP 후보 리스트는 개선된 시간적 모션 벡터 후보 (advanced temporal motion vector prediction, ATMVP 또는 subblock-based temporal motion vector prediction, SbTMVP) 리스트, 머지 인터 예측을 위한 머지 후보 리스트, 어파인 모션 보상을 위한 컨트롤 포인트 모션 벡터 후보 리스트, 서브블록 기반의 모션 보상을 위한 시간적 모션 벡터 후보(subblock-based temporal motion vecto prediction, STMVP) 리스트, 및 이들의 조합을 포함할 수 있다.
일 실시예에 따라, 인코더(810) 및 디코더(820)는 현재 블록의 모션 보상을 위한 MVP 후보 리스트를 구성할 수 있다. 예를 들어, 현재 블록보다 먼저 복원된 샘플들 중에서 현재 블록의 모션 정보 세트와 동일 또는 유사한 모션 정보 세트에 기초하여 예측되었을 가능성이 있는 샘플에 대응하는 후보들이 존재할 수 있다. 인코더(810) 및 디코더(820)는 해당 복수의 후보 블록들을 기초로 현재 블록의 MVP 후보 리스트를 구성할 수 있다. 이때, 인코더(810) 및 디코더(820)는 인코더(810)와 디코더(820) 간에 미리 정의된 규칙에 따라 MVP 후보 리스트를 구성할 수 있다. 즉, 인코더(810)와 디코더(820) 각각에서 구성된 MVP 후보 리스트는 서로 동일할 수 있다.
또한, 미리 정의된 규칙은 현재 블록의 예측 모드에 따라 달라질 수 있다. 예를 들어, 현재 블록의 예측 모드가 어파인 모델 기반의 어파인 예측 모드인 경우, 인코더 및 디코더는 어파인 모델에 기반한 제1 방법을 이용하여 현재 블록의 MVP 후보 리스트를 구성할 수 있다. 제1 방법은 컨트롤 포인트 모션 벡터 후보 리스트를 획득하는 방법일 수 있다. 반면, 현재 블록의 예측 모드가 어파인 모델에 기반하지 않은 일반 인터 예측 모드인 경우, 인코더 및 디코더는 어파인 모델에 기반하지 않은 제2 방법을 이용하여 현재 블록의 MVP 후보 리스트를 구성할 수 있다. 이때, 제1 방법과 제2 방법은 서로 다른 방법일 수 있다.
디코더(820)는 현재 블록의 MVP 후보 리스트가 포함하는 적어도 하나의 MVP 후보 중 어느 하나에 기초하여 현재 블록의 모션 벡터를 유도할 수 있다. 예를 들어, 인코더(810)는 현재 블록의 모션 벡터를 유도하기 위해 참조되는 모션 벡터 예측자를 지시하는 MVP 인덱스(index)를 시그널링할 수 있다. 시그널링 한다는 것은 인코더가 신호를 비트스트림으로 생성하고, 디코더(820)가 비트스트림으로부터 파싱함을 의미할 수 있다. MVP 인덱스는 머지 후보 리스트에 대한 머지 인덱스를 포함할 수 있다. 디코더(820)는 시그널링된 MVP 인덱스에 기초하여 현재 블록의 모션 벡터 예측자를 획득할 수 있다. 디코더(820)는 모션 벡터 예측자를 이용하여 현재 블록의 모션 벡터를 유도할 수 있다. 일 실시예에 따라, 디코더(820)는 MVP 후보 리스트에서 획득된 모션 벡터 예측자를 별도의 모션 벡터 차분값 없이, 현재 블록의 모션 벡터로 사용할 수 있다. 예를 들어, 디코더(820)는 머지 인덱스에 기초하여 머지 리스트로부터 모션 벡터를 선택할 수 있다.
디코더(820)는 현재 블록의 모션 벡터에 기초하여 현재 블록을 복원할 수 있다. MVP 후보 리스트로부터 획득된 모션 벡터 예측자가 별도의 모션 벡터 차분값 없이 현재 블록의 모션 벡터로 사용되는 인터 예측 모드는 머지 모드로 지칭될 수 있다.
다른 일 실시예에 따라, 디코더(820)는 현재 블록의 모션 벡터를 위한 별도의 모션 벡터 차분 값(motion vector difference)을 획득할 수 있다. 디코더(820)는 MVP 후보 리스트로부터 획득된 모션 벡터 예측자와 현재 블록의 모션 벡터 차분 값을 합산하여 현재 블록의 모션 벡터를 획득할 수 있다. 이 경우, 인코더(810)는 현재 블록의 모션 벡터와 모션 벡터 예측자 간의 차이를 나타내는 모션 벡터 차분 값(MV difference)을 시그널링할 수 있다. 모션 벡터 차분 값이 시그널링되는 방법에 대해서는 도 9를 통해 구체적으로 설명하도록 한다. 디코더(820)는 모션 벡터 차분 값(MV difference)에 기초하여 현재 블록의 모션 벡터를 획득할 수 있다. 디코더(820)는 현재 블록의 모션 벡터에 기초하여 현재 블록을 복원할 수 있다.
추가적으로, 현재 블록의 모션 보상을 위한 참조 픽쳐 인덱스가 시그널링될 수 있다. 현재 블록의 예측 모드가 인코더(810)는 참조 블록을 포함하는 참조 픽쳐를 지시하는 참조 픽쳐 인덱스를 시그널링할 수 있다. 디코더(820)는 시그널링된 참조 픽쳐 인덱스에 기초하여 현재 블록의 복원에 참조되는 참조 픽쳐의 POC를 획득할 수 있다. 이때, 참조 픽쳐의 POC가 현재 블록의 모션 벡터를 유도하기 위해 참조되는 MVP에 대응하는 참조 픽쳐의 POC와 서로 다를 수 있다. 이 경우, 디코더(820)는 모션 벡터 스케일링을 수행할 수 있다. 즉, 디코더(820)는 MVP를 스케일링하여 MVP'를 획득할 수 있다. 이때, 모션 벡터 스케일링은 현재 픽쳐의 POC, 현재 블록의 시그널링된 참조 픽쳐의 POC 및 MVP에 대응하는 참조 픽쳐의 POC에 기초하여 수행될 수 있다. 또한, 디코더(820)는 MVP'를 현재 블록의 모션 벡터 예측자로 사용할 수 있다.
전술한 바와 같이, 현재 블록의 모션 벡터는 현재 블록의 모션 벡터 예측자와 모션 벡터 차분 값을 합산하여 획득될 수 있다. 이때, 모션 벡터 차분 값은 인코더로부터 시그널링될 수 있다. 인코더는 모션 벡터 차분 값을 인코딩하여 모션 벡터 차분 값을 나타내는 정보를 생성하고, 시그널링할 수 있다. 이하에서는 본 개시의 일 실시예에 따라 모션 벡터 차분 값이 시그널링되는 방법에 대해 설명하도록 한다.
도 9는 본 개시의 일 실시예에 따라 현재 블록의 모션 벡터 차분 값이 시그널링되는 방법을 나타내는 도면이다. 일 실시예에 따라, 모션 벡터 차분 값을 나타내는 정보는 모션 벡터 차분 값의 절대값 정보 또는 모션 벡터 차분 값의 부호 정보 중 적어도 하나를 포함할 수 있다. 모션 벡터 차분 값의 절대값과 부호는 별도로 인코딩될 수 있다.
일 실시예에 따라, 모션 벡터 차분 값의 절대값은 값 자체로 시그널링되지 않을 수도 있다. 인코더는 모션 벡터 차분 값의 절대값의 특성을 나타내는 적어도 하나의 플래그를 이용하여 시그널링되는 값의 크기를 줄일 수 있다. 디코더는 시그널링된 값으로부터 적어도 하나의 플래그를 이용하여 모션 벡터 차분 값의 절대값을 유도할 수 있다.
예를 들어, 적어도 하나의 플래그는 모션 벡터 차분 값의 절대값이 N보다 큰지를 나타내는 제1 플래그를 포함할 수 있다. 이때, N은 정수일 수 있다. 모션 벡터 차분 값의 절대값의 크기가 N 보다 큰 경우, 활성화된 제1 플래그와 함께 (모션 벡터 차분 값의 절대값- N) 값이 시그널링될 수 있다. 이때, 활성화된 플래그는 모션 벡터 차분 값의 절대값의 크기가 N보다 큰 경우를 나타낼 수 있다. 디코더는 활성화된 제1 플래그 및 시그널링된 값에 기초하여 모션 벡터 차분 값의 절대값을 획득할 수 있다.
도 9를 참조하면, 모션 벡터 차분 값의 절대값이 '0'보다 큰지를 나타내는 제2 플래그(abs_mvd_greater0_flag)가 시그널링될 수 있다. 제2 플래그(abs_mvd_greater0_flag[])가 모션 벡터 차분 값의 절대값이 '0'보다 크지 않음을 나타내는 경우, 모션 벡터 차분 값의 절대값은 '0' 일 수 있다. 또한, 제2 플래그(abs_mvd_greater0_flag)가 모션 벡터 차분 값의 절대값이 '0'보다 큰 것을 나타내는 경우, 디코더는 모션 벡터 차분 값에 대한 다른 정보를 이용하여 모션 벡터 차분 값의 절대값을 획득할 수 있다.
일 실시예에 따라, 모션 벡터 차분 값의 절대값이 '1'보다 큰지를 나타내는 제3 플래그(abs_mvd_greater1_flag)가 시그널링될 수 있다. 제3 플래그(abs_mvd_greater1_flag)가 모션 벡터 차분 값의 절대값이 '1'보다 크지 않음을 나타내는 경우, 디코더는 모션 벡터 차분 값의 절대값이 '1'인 것으로 판단할 수 있다.
반대로, 제3 플래그(abs_mvd_greater1_flag)가 모션 벡터 차분 값의 절대값이 '1' 보다 큰 것을 나타내는 경우, 디코더는 모션 벡터 차분 값에 대한 또 다른 정보를 이용하여 모션 벡터 차분 값의 절대값을 획득할 수 있다. 예를 들어, (모션 벡터 차분 값의 절대값 - 2) 값(abs_mvd_minus2)이 시그널링될 수 있다. 모션 벡터 차분 값의 절대값이 '1' 보다 큰 경우, 모션 벡터 차분 값의 절대값은 2 이상의 값일 수 있기 때문이다.
전술한 바와 같이, 현재 블록의 모션 벡터 차분 값의 절대값은 적어도 하나의 플래그에 변형될 수 있다. 예를 들어, 모션 벡터 차분 값의 변형된 절대 값은 모션 벡터 차분 값의 크기에 따라 (모션 벡터 차분 값의 절대값 - N)을 나타낼 수 있다. 일 실시예에 따라, 모션 벡터 차분 값의 변형된 절대값은 적어도 하나의 비트를 통해 시그널링될 수 있다. 이때, 모션 벡터 차분 값의 변형된 절대값을 지시하기 위해 시그널링되는 비트의 개수는 가변적일 수 있다. 인코더는 모션 벡터 차분 값의 변형된 절대값을 가변 길이 이진화 방법을 사용하여 인코딩할 수 있다. 예를 들어, 인코더는 가변 길이 이진화 방법은 절삭 단항(truncated unary) 이진화, 단항(unary) 이진화, 절삭 라이스(truncated rice) 또는 지수 골룸(exp-Golomb) 이진화 중 적어도 하나를 사용할 수 있다.
또한, 모션 벡터 차분 값의 부호는 부호 플래그(mvd_sign_flag)를 통해 시그널링될 수 있다. 한편, 모션 벡터 차분 값의 부호는 부호 비트 하이딩(sign-bit-hiding)에 의해 묵시적으로 시그널링될 수도 있다.
또한 도 9에서 [0]과 [1]은 component index를 나타낼 수 있다. 예를 들면 x-component, y-component를 나타낼 수 있다.
도 10은 본 개시의 일 실시예에 따른 adaptive motion vector resolution 시그날링을 나타낸 도면이다.
본 개시의 일 실시예를 따르면 motion vector 또는 motion vector difference를 나타내는 resolution은 다양할 수 있다. 다시 말하면 motion vector 또는 motion vector difference가 코딩되는 resolution은 다양할 수 있다. 예를 들면 resolution은 pixel(pel)을 기초로 나타낼 수 있다. 예를 들어 1/4(quarter), 1/2(half), 1(integer), 2, 4 pixel 등의 단위로 motion vector 또는 motion vector difference를 시그날링할 수 있다. 예를 들어 16을 나타내고 싶을 때 1/4 단위로 하면 64로 코딩하고(1/4 * 64 = 16), 1 단위로 하면 16으로 코딩하고(1 * 16 = 16), 4 단위로 하면 4로 코딩할 수 있다(4 *. 4 = 16). 즉 다음과 같이 값을 결정할 수 있다.
valueDetermined = resolution*valuePerResolution
여기서 valueDetermined는 전달하는 값, 본 실시예에서는 motion vector 또는 motion vector difference 일 수 있다. 또한 valuePerResolution은 valueDetermined는 [/resolution] 단위로 나타낸 값일 수 있다.
이때 motion vector 또는 motion vector difference로 시그날링하는 값이 resolution으로 나누어 떨어지지 않는 경우 rounding 등으로 prediction 성능이 가장 좋은 motion vector 또는 motion vector difference가 아닌 부정확한 값을 보낼 수 있다. High resolution을 사용하면 부정확함이 떨어질 수 있지만 코딩되는 값이 크므로 많은 비트를 사용할 수 있고, low resolution을 사용하면 부정확함이 높아질 수 있지만 코딩되는 값이 작으므로 적은 비트를 사용할 수 있다.
또한 상기 resolution을 블락, CU, slice 등의 단위로 다르게 설정하는 것이 가능하다. 따라서 단위에 맞도록 adaptive하게 resolution을 적용할 수 있다.
상기 resolution은 인코더에서 디코더로 시그날링될 수 있다. 이때 resolution에 대한 시그날링은 앞서 설명한 variable length로 binarization한 시그날링일 수 있다. 이러한 경우 가장 작은 값(가장 앞에 있는 값)에 해당하는 인덱스로 시그날링하는 경우 시그날링 오버헤드가 적어지게 된다.
일 실시예로 high resolution(자세히 시그날링)부터 low resolution 순서대로 시그날링 인덱스에 매칭시킬 수 있다.
도 10은 3가지 resolution에 대한 시그날링을 나타내고 있다. 이러한 경우 3가지 시그날링은 0, 10, 11일 수 있고, 3가지 시그날링 각각이 resolution 1, resolution 2, resolution 3에 해당할 수 있다. resolution 1을 시그날링 하는 데에는 1비트가 필요하고 나머지 resolution을 시그날링 하는 데에 2비트가 필요하므로 resolution 1을 시그날링 할 때 시그날링 오버헤드가 적다. 도 10의 예에서는 resolution 1, resolution 2, resolution 3이 각각 1/4, 1, 4 pel이다.
이하의 발명들에서 motion vector resolution은 motion vector difference의 resolution을 의미하는 것일 수 있다.
도 11은 본 개시의 일 실시예에 따른 inter prediction 관련 syntax를 나타낸 도면이다.
본 개시의 일 실시예를 따르면 inter prediction 방법은 skip mode, merge mode, inter mode 등을 포함할 수 있다. 일 실시예를 따르면 skip mode에서는 residual signal이 전송되지 않을 수 있다. 또한 skip mode에서 merge mode와 같은 MV 결정 방법을 사용할 수 있다. Skip mode 사용 여부는 skip flag에 따라 결정될 수 있다. 도 11을 참조하면 cu_skip_flag 값에 따라 skip mode 사용 여부가 결정될 수 있다.
일 실시예를 따르면 merge mode에서는 motion vector difference를 사용하지 않을 수 있다. Motion candidate index를 기초로 motion vector를 결정할 수 있다. Merge mode 사용 여부는 merge flag에 따라 결정될 수 있다. 도 11을 참조하면 merge_flag 값에 따라 merge mode 사용 여부가 결정될 수 있다. 또한 skip mode를 사용하지 않는 경우에 merge mode를 사용하는 것이 가능하다.
Skip mode 또는 merge mode에서 하나 이상의 candidate list 종류 중에서 선택적으로 사용하는 것이 가능하다. 예를 들어 merge candidate 또는 subblock merge candidate를 사용하는 것이 가능하다. 또한 merge candidate은 spatial neighboring candidate, temporal candidate 등을 포함할 수 있다. 또한 merge candidate는 현재 block(CU) 전체에 대한 motion vector를 사용하는 candidate를 포함할 수 있다. 즉, 현재 block에 속하는 각 subblock의 motion vector가 같은 candidate를 포함할 수 있다. 또한 subblock merge candidate는 subblock-based temporal MV, affine merge candidate 등을 포함할 수 있다. 또한 subblock merge candidate는 현재 block(CU)의 subblock 별로 다른 motion vector를 사용하는 것이 가능한 candidate를 포함할 수 있다. Affine merge candidate는 affine motion prediction의 control point motion vector를 결정할 때 motion vector difference를 사용하지 않고 결정하는 방법으로 만든 방법일 수 있다. 또한 subblock merge candidate는 현재 block에서 subblock 단위로 motion vector를 결정하는 방법들을 포함할 수 있다. 예를 들어 subblock merge candidate는 앞서 언급한 subblock-based temporal MV와 affine merge candidate 이외에도 planar MV, regression based MV, STMVP 등을 포함할 수 있다.
일 실시예를 따르면 inter mode에서는 motion vector difference를 사용할 수 있다. Motion candidate index를 기초로 motion vector predictor를 결정하고 상기 motion vector predictor와 motion vector difference를 기초로 motion vector를 결정할 수 있다. Inter mode 사용 여부는 다른 mode들의 사용 여부에 따라 결정될 수 있다. 또다른 실시예로 inter mode 사용 여부는 flag에 의해 결정될 수 있다. 도 11에서는 다른 mode들인 skip mode와 merge mode를 사용하지 않는 경우에 inter mode를 사용하는 예를 나타내고 있다.
Inter mode는 AMVP mode, affine inter mode 등을 포함할 수 있다. Inter mode는 motion vector predictor와 motion vector difference를 기초로 motion vector를 결정하는 모드일 수 있다. Affine inter mode는 affine motion prediction의 control point motion vector를 결정할 때 motion vector difference를 사용하는 방법일 수 있다.
도 11을 참조하면 skip mode 또는 merge mode로 결정된 후에 subblock merge candidate를 사용할 지, merge candidate를 사용할 지 결정할 수 있다. 예를 들면 특정 조건을 만족하는 경우에 subblock merge candidate를 사용하는지 여부를 나타내는 merge_subblock_flag를 parsing할 수 있다. 또한 상기 특정 조건은 block size와 관련된 조건일 수 있다. 예를 들면 width, height, area 등에 관한 조건일 수 있고, 이것들을 조합하여 사용할 수도 있다. 도 11을 참조하면 예를 들어 현재 block(CU)의 width 및 height가 특정값 이상일 때의 조건일 수 있다. merge_subblock_flag를 parsing하는 경우에는 그 값을 0으로 infer할 수 있다. 만약 merge_subblock_flag가 1인 경우에 subblock merge candidate를 사용하고 0인 경우에 merge candidate를 사용하는 것일 수 있다. Subblock merge candidate를 사용하는 경우에 candidate index인 merge_subblock_idx를 parsing할 수 있고, merge candidate를 사용하는 경우에 candidate index인 merge_idx를 parsing할 수 있다. 이때 candidate list의 maximum 개수가 1인 경우에는 parsing하지 않을 수 있다. merge_subblock_idx 또는 merge_idx를 parsing하지 않는 경우에는 0으로 infer할 수 있다.
도 11은 coding_unit 함수를 나타내고 있는데, intra prediction 관련 내용은 생략된 것일 수 있고, 도 11은 inter prediction으로 결정된 경우를 나타내는 것일 수 있다.
도 12는 본 개시의 일 실시예에 따른 multi-hypothesis prediction을 나타낸 도면이다.
앞서 설명한 것처럼 예측 블록(prediction block)에 기반하여 인코딩, 디코딩할 수 있다. 본 개시의 일 실시예에 따르면 다수의 예측에 기반하여 prediction block을 생성할 수 있다. 이것을 multi-hypothesis (MH) prediction이라고 부를 수 있다. 상기 예측은 어떤 예측 방법에 의해 생성한 block을 의미할 수 있다. 또한 상기 다수의 예측에서의 예측 방법은 intra prediction, inter prediction 등의 방법을 포함할 수 있다. 또는 상기 다수의 예측에서의 예측 방법은 더 세분하여 merge mode, AMVP mode, intra prediction의 특정 mode 등을 의미하는 것일 수 있다.
또한 다수의 예측에 기반하여 prediction block을 생성하는 방법으로 다수의 예측을 weighted sum하는 것이 가능하다.
또는 다수의 예측의 최대 개수가 기설정되어 있을 수 있다. 예를 들어 다수의 예측의 최대 개수는 2일 수 있다. 따라서 uni prediction인 경우 2개의 예측으로부터, bi prediction인 경우 2개(하나의 reference list로부터의 예측에만 다수의 예측을 사용하는 경우) 또는 4개(두 개의 reference list로부터의 예측에 다수의 예측을 사용하는 경우)의 예측으로부터 prediction block을 생성하는 것이 가능하다.
또는 다수의 예측에서 사용 가능한 예측 모드가 기설정되어 있을 수 있다. 또는 다수의 예측에서 사용 가능한 예측 모드 조합이 기설정되어 있을 수 있다. 예를 들어 inter prediction과 intra prediction으로 생성한 예측들을 사용하는 것이 가능하다. 이때 inter prediction이나 intra prediction의 일부 mode만 multi-hypothesis prediction에 사용하는 것이 가능하다. 예를 들어 inter prediction 중 merge mode만 multi-hypothesis prediction에 사용하는 것이 가능하다. 또는 inter prediction 중 subblock merge가 아닌 merge mode만 multi-hypothesis prediction에 사용하는 것이 가능하다. 또는 intra prediction 중 특정 intra mode만 multi-hypothesis prediction에 사용하는 것이 가능하다. 예를 들어 intra prediction 중 planar, DC, vertical, horizontal 모드를 포함한 모드만 multi-hypothesis prediction에 사용하는 것이 가능하다.
따라서 예를 들면 merge mode와 intra prediction으로의 예측들에 기반하여 prediction block을 생성하는 것이 가능하다. 이때 intra prediction으로는 planar, DC, vertical, horizontal 모드만 허용하는 것이 가능하다.
도 12를 참조하면 Prediction 1과 Prediction 2에 기반하여 Prediction block을 생성하고 있다. 이때 Prediction 1과 Prediction 2의 weighted sum으로 prediction block을 생성하고 있으며, 이때 Prediction 1과 Prediction 2의 weight는 각각 w1와 w2이다.
또한 본 개시의 일 실시예에 따르면 다수의 예측에 기반하여 prediction block을 생성할 때 다수의 예측의 weight는 block 내에서의 위치에 기반할 수 있다. 또는 다수의 예측의 weight는 예측을 생성하는 모드에 기반할 수 있다.
예를 들어 예측을 생성하는 모드 중 하나가 intra prediction인 경우 예측 모드에 기초하여 weight를 결정할 수 있다. 예를 들어 예측을 생성하는 모드 중 하나가 intra prediction이고 directional mode인 경우 reference sample에서 멀리 있는 위치의 weight를 높일 수 있다. 더 구체적으로 예측을 생성하는 모드 중 하나가 intra prediction이고 directional mode이고, 다른 예측을 생성하는 모드가 inter prediction인 경우, reference sample에서 먼 쪽의 intra prediction에 기반하여 생성한 예측의 weight를 높게 할 수 있다. 이것은 inter prediction의 경우 spatial neighboring candidate에 기반하여 motion compensation을 할 수 있고, 그러한 경우 현재 block과 MC를 위해 참조한 spatial neighboring block의 움직임이 같거나 유사할 확률이 있고, spatial neighboring block 근처의 예측과 motion이 있는 object를 포함한 영역의 예측이 다른 부분보다 정확할 학률이 있다. 그러면 spatial neighboring block 반대쪽 근처에 residual signal이 다른 부분보다 많이 남을 수 있는데, multi-hypothesis prediction에서 intra prediction을 사용함으로써 이를 상쇄할 수 있다. Intra prediction의 reference sample 위치는 inter prediction의 spatial neighboring candidate 근처일 수 있으므로 그로부터 먼 쪽의 weight를 높일 수 있다.
또다른 예로 예측을 생성하는 모드 중 하나가 intra prediction이고 directional mode인 경우 reference sample에서 가까이 있는 위치의 weight를 높일 수 있다. 더 구체적으로 예측을 생성하는 모드 중 하나가 intra prediction이고 directional mode이고, 다른 예측을 생성하는 모드가 inter prediction인 경우, reference sample에서 가까운 쪽의 intra prediction에 기반하여 생성한 예측의 weight를 높게 할 수 있다. 이것은 intra prediction에서 reference sample과 가까운 쪽의 예측 정확도가 높을 수 있기 때문이다.
또다른 예로 예측을 생성하는 모드 중 하나가 intra prediction이고 directional mode가 아닌 경우(예를 들어 planar, DC mode인 경우) weight는 block에서의 위치와 상관없이 일정한 것이 가능하다.
또한 multi-hypothesis prediction에서 prediction 2에 대한 weight는 prediction 1에 대한 weight에 기초하여 결정되는 것이 가능하다.
다음은 다수의 예측에 기반하여 prediction sample pbSamples을 결정하는 예를 나타낸 식이다.
pbSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( w * predSamples [ x ][ y ] + (8- w) * predSamplesIntra [ x ][ y ] ) >> 3 )
상기 식에서 x와 y는 block 내에서의 sample의 좌표를 나타낼 수 있고, 다음의 범위일 수 있다. x = 0..nCbW - 1 and y = 0..nCbH - 1. 또한 nCbW와 nCbH는 각각 현재 block의 width와 height일 수 있다. 또한 predSamples는 inter prediction에 의해 생성한 block/sample이고, predSamplesIntra는 intra prediction에 의해 생성한 block/sample일 수 있다. 또한 weight w는 다음과 같이 결정될 수 있다.
- If predModeIntra is INTRA_PLANAR or INTRA_DC or nCbW < 4 or nCbH < 4 or cIdx > 0, w is set equal to 4.
- Otherwise, if predModeIntra is INTRA_ANGULAR50 and y < (nCbH/4), w is set equal to 6.
- Otherwise, if predModeIntra is INTRA_ANGULAR50 and (nCbH/4) <= y < (nCbH/2), w is set equal to 5.
- Otherwise, if predModeIntra is INTRA_ANGULAR50 and (nCbH/2) <= y < (3 * nCbH/4), w is set equal to 4.
- Otherwise, if predModeIntra is INTRA_ANGULAR50 and (3 * nCbH/4) <= y < nCbH, w is set equal to 3.
- Otherwise, if predModeIntra is INTRA_ANGULAR18 and x < (nCbW/4), w is set equal to 6.
- Otherwise, if predModeIntra is INTRA_ANGULAR18 and (nCbW/4) <= x < (nCbW/2), w is set equal to 5.
- Otherwise, if predModeIntra is INTRA_ANGULAR18 and (nCbW/2) <= x < (3 * nCbW/4), w is set equal to 4.
- Otherwise, if predModeIntra is INTRA_ANGULAR18 and (3 * nCbW/4) <= x < nCbW, w is set equal to 3.
도 13은 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 13을 참조하면 mh_intra_flag는 multi-hypothesis prediction 사용 여부를 나타내는 flag일 수 있다. 일 실시예를 따르면 multi-hypothesis prediction은 mh_conditions를 만족시키는 경우에만 사용하는 것이 가능하며, mh_conditions를 만족시키지 않는 경우에 mh_intra_flag를 parsing하지 않고 0으로 infer하는 것이 가능하다. 예를 들어 mh_conditions는 block size에 관한 condition을 포함할 수 있다. 또한 mh_conditions는 특정 mode를 사용하는지에 관한 condition을 포함할 수 있다. 예를 들어 merge_flag가 1이고 subblock_merge_flag가 0인 경우에 mh_intra_flag를 parsing하는 것이 가능하다.
또한 본 개시의 일 실시예를 따르면 multi-hypothesis prediction에서의 mode를 결정하기 위해 candidate modes들을 다수의 list에 나눠 넣고 어떤 list를 사용하는지 signaling하는 것이 가능하다. 도 13을 참조하면 mh_intra_luma_mpm_flag가 다수의 list 중 어떤 list를 사용하는지 나타내는 flag일 수 있다. 만약 mh_intra_luma_mpm_flag가 존재하지 않는 경우 1로 infer하는 것이 가능하다. 또한 본 개시의 일 실시예로 상기 다수의 list는 MPM list와 non-MPM list일 수 있다.
또한 본 개시의 일 실시예를 따르면 상기 다수의 list 중 어떤 list에서 어떤 index의 candidate를 사용하는지 index를 시그날링할 수 있다. 도 13을 참조하면 mh_intra_luma_mpm_idx가 그러한 index일 수 있다. 또한 일 실시예로 index는 특정 list가 선택된 경우에만 시그날링하는 것이 가능하다. 도 13을 참조하면 mh_intra_luma_mpm_flag로 어떤 list가 결정된 경우에만 mh_intra_luma_mpm_idx를 parsing할 수 있다.
예를 들어 도 12에서 설명한 하나의 실시예처럼 inter prediction으로 생성한 예측과 intra prediction으로 생성한 예측에 기반하여 multi-hypothesis prediction을 수행할 수 있다. 또한 inter prediction을 사용하는 것으로 시그날링된 경우에만 multi-hypothesis prediction을 수행하는 것이 가능하다. 또는 merge mode와 같은 inter prediction의 특정 mode를 사용하는 것으로 시그날링된 경우에만 multi-hypothesis prediction을 수행하는 것이 가능하다. 그러한 경우 inter prediction에 대한 시그날링은 따로 필요 없을 수 있다. 또한 일 실시예로 intra prediction으로 예측을 생성할 때 candidate mode는 총 4개일 수 있다. 그리고 총 4개의 candidate mode를 list 1, list 2에 3개, 1개로 나누어 넣을 수 있다. 이때 list 2가 선택된 경우 index를 시그날링하지 않을 수 있다. 또한 list 1이 선택된 경우 index를 시그날링할 수 있는데, list 1에 포함된 candidate는 3개이므로 variable length coding으로 시그날링하여 index 시그날링으로 1-bit 또는 2-bit가 필요할 수 있다.
도 14는 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 13에서 설명한 것처럼 어떤 list를 사용하는지 나타내는 시그날링이 존재할 수 있는데 도 13 내지 도 14에서 mh_intra_luma_mpm_flag가 그와 같은 시그날링일 수 있다.
본 개시의 일 실시예를 따르면 어떤 list를 사용하는지 나타내는 시그날링은 특정 경우에만 explicitly 시그날링될 수 있다. 또한 explicitly 시그날링 되지 않는 경우 기설정된 방법대로 시그날링의 값을 infer할 수 있다. 도 14를 참조하면 mh_mpm_infer_condition의 조건을 만족하는 경우 explicit signaling이 존재하지 않고, 조건을 만족시키지 않는 경우 explicit signaling이 존재할 수 있다. 또한 mh_mpm_infer_condition 조건을 만족하는 경우 mh_intra_luma_mpm_flag가 존재하지 않고 그러한 경우 1로 infer할 수 있다. 즉 MPM list를 사용하는 것으로 infer할 수 있다.
도 15는 본 개시의 일 실시예에 따른 multi-hypothesis prediction 관련 syntax를 나타낸 도면이다.
도 13 내지 도 14에서 설명한 것처럼 어떤 list를 사용하는지 나타내는 시그날링이 존재할 수 있고, 어떤 조건을 만족하는 경우 그 값을 infer할 수 있다.
본 개시의 일 실시예를 따르면 어떤 list를 사용하는지 나타내는 시그날링 값을 infer하는 조건은 현재 block size에 기초할 수 있다. 예를 들어 현재 block의 width 및 height에 기초할 수 있다. 더 구체적으로 현재 block의 width 및 height 중 큰 것이 작은 것의 n배보다 큰 경우에 시그날링 값을 infer하는 것이 가능하다. 예를 들어 n은 2일 수 있다.
도 15를 참조하면 어떤 list를 사용하는지 나타내는 시그날링 값을 infer하는 조건은 현재 block의 width 및 height 중 큰 것이 작은 것의 2배보다 큰 조건일 수 있다. 현재 block의 width, height가 각각 cbWidth, cbHeight라고 하면 Abs(Log2(cbWidth/cbHeight)) 값은 cbWidth와 cbHeight가 같을 때 0, 2배 차이일 때 1이게 된다. 따라서 cbWidth와 cbHeight의 차이가 2배보다 큰 경우 Abs(Log2(cbWidth/cbHeight)) 값은 1보다 크게 된다(2 이상).
도 16은 본 개시의 일 실시예에 따른 multi-hypothesis prediction 모드 결정 방법을 나타낸 도면이다.
도 13 내지 도 15에서 설명한 것처럼 mode 결정은 다수의 list에 기반하여 이루어질 수 있다. 상기 mode는 intra prediction에 기초한 예측을 생성하는 intra mode를 의미하는 것일 수 있다. 또한 상기 다수의 list가 list1과 list2를 포함할 수 있다. 도 16을 참조하면 list1_flag로 list1을 사용하는지 여부를 판단할 수 있다. 또한 list1에 속할 수 있는 candidate는 다수이고, list2에 속할 수 있는 candidate는 1개일 수 있다. 또한 다수의 list는 2개의 list일 수 있다.
만약 list1_flag가 infer되는 경우에 list1을 사용하는 것으로 그 값을 infer할 수 있다. 그러한 경우 list1에서 어떤 candidate를 사용하는지 index인 list1_index를 parsing할 수 있다. 또한 만약 list1_flag가 infer되지 않는 경우 list1_flag를 parsing 할 수 있다. 만약 list1_flag가 1인 경우 list1_index를 parsing할 수 있고, list1_flag가 1이 아닌 경우 index를 parsing하지 않을 수 있다. 또한 list1_flag가 1인 경우 index에 기초하여 list1의 candidate mode 중에서 실제 사용할 mode를 결정할 수 있다. 또한 list1_flag가 1이 아닌 경우 index 없이 list2의 candidate mode를 실제 사용할 mode로 결정할 수 있다. 즉 list1에서는 flag 및 index에 기초하여 mode가 결정되고, list2에서는 flag에 기초하여 mode가 결정되는 것일 수 있다.
도 17은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
본 개시의 일 실시예를 따르면 list 안의 candidate mode를 결정하는 index를 variable length coding하는 경우 코딩 효율을 높이기 위해 candidate list의 포함되는 mode 순서를 결정하는 방법이 존재할 수 있다. 예를 들어 list1에 포함되는 mode 순서를 결정하는 방법이 존재할 수 있다. 이때 mode 순서를 결정하기 위해 현재 block 주변의 mode를 참조할 수 있다. 또한 list2는 현재 block 주변의 mode를 참조하지 않고 결정할 수 있다. 예를 들어 현재 block 주변의 mode를 참조하여 list1을 생성하고, list1에 포함되지 않은 mode를 list2에 포함시킬 수 있다.
또한 list1은 MPM mode이고 list2는 non-MPM mode일 수 있다. 또한 전체 candidate mode는 4개이고, list1에 3개, list2에 1개의 mode가 포함될 수 있다.
도 17을 참조하면 List1이 사용되는지를 나타내는 시그날링인 list1_flag가 존재할 수 있다. 만약 List1이 사용되는 경우 List1을 생성하고, List1 중에 mode가 선택될 수 있다. 이때 List1 생성과 List1 사용 여부 확인은 어떤 순서로라도 될 수 있다. 다만 List1이 사용되는 상황에서는 List1 사용 여부 확인 전이나 후에 List1이 생성될 수 있다. 또한 List1이 사용되는 경우 List2를 생성하는 과정을 수행하지 않는 것이 가능하다. 만약 List1이 사용되지 않는 경우 List2를 생성하고, List2 중에 mode가 선택될 수 있다. 이때 List2를 생성하기 위해 List1을 생성하는 것이 가능하다. 그리고 candidate modes 중에서 List1에 포함되지 않는 candidate를 List2에 포함시키는 것이 가능하다.
또한 본 개시의 일 실시예를 따르면 List1 생성 방법은 List1 사용 여부 (list1_flag 값), List1 사용 여부 infer 여부 등과 상관 없이 동일할 수 있다.
이때 List 시그날링과 mode 시그날링은 도 16 등에서 앞서 설명한 실시예들을 따를 수 있다.
다음에서는 도 16 내지 도 17에서 설명한 다수의 list 생성 방법을 추가 설명한다. 상기 다수의 list는 List1과 List2를 포함할 수 있다. 또한 상기 다수의 list는 특별히 multi-hypothesis prediction 과정에서 사용하는 list일 수 있다.
본 개시의 일 실시예를 따르면 현재 block 주변의 mode를 참조해서 다수의 list를 생성할 수 있다. 또한 상기 다수의 list 중 선택한 mode를 이용해서 intra prediction을 하고, 상기 intra prediction을 inter prediction와 결합하여(multi-hypothesis prediction) prediction block으로 사용할 수 있다. 일 실시예로 상기 다수의 list에 포함될 수 있는 mode(candidate modes)는 intra prediction 방법의 planar mode, DC mode, vertical mode, horizontal mode일 수 있다. 또한 vertical mode는 도 6에서 index 50의 mode이고, horizontal mode는 도 6에서 index 18의 mode일 수 있다. 또한 planar mode와 DC mode는 각각 index 0, 1 일 수 있다.
본 개시의 일 실시예를 따르면 현재 block 주변의 mode를 참조하여 candModeList를 생성할 수 있다. 또한 candModeList는 앞선 실시예들에서 설명한 List1일 수 있다. 일 실시예로 현재 block 주변의 mode 혹은 현재 block 주변의 mode에 기초한 mode인 candIntraPredModeX가 존재할 수 있다. 여기서 X는 A, B 등 현재 block 주변의 특정 위치에 해당하는 것을 지칭하기 위한 문자일 수 있다.
일 실시예로 다수의 candIntraPredModeX 간의 일치 여부에 기초하여 candModeList를 생성할 수 있다. 예를 들어 candIntraPredModeX는 두 개 위치에 대하여 존재할 수 있고, 그것을 candIntraPredModeA와 candIntraPredModeB로 나타낼 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같은 경우 candModeList는 planar mode와 DC mode를 포함할 수 있다.
만약 candIntraPredModeA와 candIntraPredModeB가 같고 그 값이 planar mode 또는 DC mode를 나타내는 경우 candIntraPredModeA와 candIntraPredModeB가 나타내는 mode를 candModeList에 추가할 수 있다. 또한 이 경우 planar mode와 DC mode 중 candIntraPredModeA와 candIntraPredModeB가 나타내고 있지 않은 mode를 candModeList에 추가할 수 있다. 또한 이 경우 planar mode 또는 DC mode가 아닌 기설정된 mode를 candModeList에 추가할 수 있다. 일 실시예로 이 경우 planar mode, DC mode 상기 기설정된 mode의 candModeList 안에서의 순서가 기설정되어 있을 수 있다. 예를 들어 planar, DC, 상기 기설정된 mode 순서일 수 있다. 즉, candModeList[0] = planar mode, candModeList[1] = DC mode, candModeList[2] = 상기 기설정된 mode일 수 있다. 또한 상기 기설정된 mode는 vertical mode일 수 있다. 또다른 실시예로 이 경우 planar mode, DC mode 상기 기설정된 mode 중 candIntraPredModeA와 candIntraPredModeB가 나타내는 mode가 candModeList의 가장 앞에 오고, planar mode와 DC mode 중 candIntraPredModeA와 candIntraPredModeB가 나타내고 있지 않은 mode가 candModeList의 그 다음에 오고, 상기 기설정된 mode가 그 다음에 오는 것이 가능하다.
또한 만약 candIntraPredModeA와 candIntraPredModeB가 같고 그 값이 planar mode와 DC mode를 나타내지 않는 경우 candIntraPredModeA와 candIntraPredModeB가 나타내는 mode를 candModeList에 추가할 수 있다. 또한 planar mode와 DC mode가 candModeList에 추가될 수 있다. 또한 이 경우 candIntraPredModeA와 candIntraPredModeB가 나타내는 mode와 planar mode, DC mode의 candModeList 안에서의 순서는 기설정되어 있을 수 있다. 또한 기설정된 순서는 candIntraPredModeA와 candIntraPredModeB가 나타내는 mode, planar mode, DC mode 순일 수 있다. 즉 candModeList[0] = candIntraPredModeA, candModeList[1] = planar mode, candModeList[2] = DC mode 일 수 있다.
또한 만약 candIntraPredModeA와 candIntraPredModeB가 다른 경우 candIntraPredModeA와 candIntraPredModeB는 모두 candModeList에 추가할 수 있다. 또한 candIntraPredModeA와 candIntraPredModeB는 특정한 순서에 따라 candModeList에 포함될 수 있다. 예를 들어 candIntraPredModeA, candIntraPredModeB 순서대로 candModeList에 포함될 수 있다. 또한 candidate modes들 간의 기설정된 순서가 있을 수 있고, 상기 기설정된 순서에 따른 mode들 중 candIntraPredModeA와 candIntraPredModeB가 아닌 mode를 candModeList에 추가할 수 있다. 또한 상기 candIntraPredModeA와 candIntraPredModeB가 아닌 mode는 candModeList 내에서 candIntraPredModeA와 candIntraPredModeB보다 뒤에 있을 수 있다. 또한 상기 기설정된 순서는 planar mode, DC mode, vertical mode일 수 있다. 또는 상기 기설정된 순서는 planar mode, DC mode, vertical mode, horizontal mode일 수 있다. 즉, candModeList[0] = candIntraPredModeA, candModeList[1] = candIntraPredModeB일 수 있고, candModeList[2]는 planar mode, DC mode, vertical mode 중에서 candIntraPredModeA가 아니고 candIntraPredModeB가 아닌 가장 앞에 있는 mode일 수 있다.
또한 candidate modes 중에서 candModeList에 포함되지 않은 mode가 candIntraPredModeC가 될 수 있다. 또한 candIntraPredModeC는 List2에 포함될 수 있다. 또한 이것은 앞서 설명한 list1이 사용되는지 나타내는 시그날링이 사용하지 않는다고 나타내는 경우에 candIntraPredModeC를 정하는 것이 가능하다.
또한 list1을 사용하는 경우에 candModeList 중에서 index에 따라 mode를 결정하고, list1을 사용하지 않는 경우에 list2의 mode를 사용하는 것이 가능하다.
또한 설명한 것처럼 candModeList를 생성한 후에 candModeList를 수정하는 과정이 추가될 수 있다. 예를 들어 현재 block size 조건에 따라 상기 수정하는 과정을 추가로 수행하거나 수행하지 않을 수 있다. 예를 들어 상기 현재 block size 조건은 현재 block의 width와 height에 기초할 수 있다. 예를 들어 현재 block의 width와 height 중 큰 것이 다른 하나의 n배보다 큰 경우 상기 수정하는 과정을 추가로 수행할 수 있다. n은 2일 수 있다.
또한 상기 수정하는 과정은 candModeList에 어떤 mode가 포함되었을 때 그 mode를 다른 mode로 대체하는 과정일 수 있다. 예를 들어 candModeList에 vertical mode가 포함되었을 때 vertical mode 대신 horizontal mode를 candModeList에 넣을 수 있다. 또는 candModeList에 vertical mode가 포함되었을 때 vertical mode 대신 상기 candIntraPredModeC를 candModeList에 넣을 수 있다. 그러나 앞서 설명한 candModeList를 생성하면 planar mode와 DC mode는 항상 candModeList에 포함될 수 있고 이 경우 candIntraPredModeC는 horizontal mode일 수 있다. 또한 이러한 수정하는 과정을 사용하는 것은 현재 block의 height가 width보다 n배보다 클 때일 수 있다. 예를 들어 n은 2일 수 있다. 이것은 height가 width보다 큰 경우 block 아래쪽은 intra prediction의 reference sample로부터 멀어서 vertical mode의 정확도가 낮을 수 있기 때문일 수 있다. 또는 이러한 수정하는 과정을 사용하는 것은 list1을 사용한다고 infer되는 경우일 수 있다.
상기 수정하는 과정의 또다른 예로 candModeList에 horizontal mode가 포함되었을 때 horizontal mode 대신 vertical mode를 candModeList에 넣을 수 있다. 또는 candModeList에 horizontal mode가 포함되었을 때 horizontal mode 대신 상기 candIntraPredModeC를 candModeList에 넣을 수 있다. 그러나 앞서 설명한 candModeList를 생성하면 planar mode와 DC mode는 항상 candModeList에 포함될 수 있고 이 경우 candIntraPredModeC는 vertical mode일 수 있다. 또한 이러한 수정하는 과정을 사용하는 것은 현재 block의 width가 height보다 n배보다 클 때일 수 있다. 예를 들어 n은 2일 수 있다. 이것은 width가 height보다 큰 경우 block 오른쪽은 intra prediction의 reference sample로부터 멀어서 horizontal mode의 정확도가 낮을 수 있기 때문일 수 있다. 또는 이러한 수정하는 과정을 사용하는 것은 list1을 사용한다고 infer되는 경우일 수 있다.
위에서 설명한 list 설정 방법의 예를 아래에 다시 기술한다. 아래에서 IntraPredModeY는 multi-hypothesis prediction에서 intra prediction에서 사용할 mode일 수 있다. 또한 이것은 luma component의 mode일 수 있다. 일 실시예로 multi-hypothesis prediction에서 chroma component의 intra prediction mode는 luma component의 mode를 따라갈 수 있다. 또한 mh_intra_luma_mpm_flag는 어떤 list를 사용할지 나타내는 시그날링일 수 있다. 즉, 예를 들어 도 13 내지 도 15의 mh_intra_luma_mpm_flag, 도 16 내지 도 17의 list1_flag일 수 있다. 또한 mh_intra_luma_mpm_idx는 list 내에서 어떤 candidate를 사용할지 나타내는 index일 수 있다. 즉, 예를 들어 도 13 내지 도 15의 mh_intra_luma_mpm_idx, 도 16의 list1_index일 수 있다. 또한 xCb, yCb는 현재 block의 top-left의 x, y좌표일 수 있다. 또한 cbWidth와 cbHeight는 현재 block의 width와 height일 수 있다.
The candModeList[ x ] with x = 0..2 is derived as follows:
A. If candIntraPredModeB is equal to candIntraPredModeA, the following applies:
a. If candIntraPredModeA is less than 2 (i.e., equal to INTRA_PLANAR or INTRA_DC), candModeList[ x ] with x = 0..2 is derived as follows:
candModeList[ 0 ] = INTRA_PLANAR
candModeList[ 1 ] = INTRA_DC
candModeList[ 2 ] = INTRA_ANGULAR50
b. Otherwise, candModeList[ x ] with x = 0..2 is derived as follows:
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = INTRA_PLANAR
candModeList[ 2 ] = INTRA_DC
B. Otherwise (candIntraPredModeB is not equal to candIntraPredModeA), the following applies:
a. candModeList[ 0 ] and candModeList[ 1 ] are derived as follows:
candModeList[ 0 ] = candIntraPredModeA
candModeList[ 1 ] = candIntraPredModeB
b. If neither of candModeList[ 0 ] and candModeList[ 1 ] is equal to INTRA_PLANAR, candModeList[ 2 ] is set equal to INTRA_PLANAR,
c. Otherwise, if neither of candModeList[ 0 ] and candModeList[ 1 ] is equal to INTRA_DC, candModeList[ 2 ] is set equal to INTRA_DC,
d. Otherwise, candModeList[ 2 ] is set equal to INTRA_ANGULAR50.
IntraPredModeY[ xCb ][ yCb ] is derived by applying the following procedure:
A. If mh_intra_luma_mpm_flag[ xCb ][ yCb ] is equal to 1, the IntraPredModeY[ xCb ][ yCb ] is set equal to candModeList[ intra_luma_mpm_idx[ xCb ][ yCb ] ].
B. Otherwise, IntraPredModeY[ xCb ][ yCb ] is set to equal to candIntraPredModeC, derived by applying the following steps:
a. If neither of candModeList[ x ], x = 0..2 is equal to INTRA_PLANAR, candIntraPredModeC is set equal to INTRA_PLANAR,
b. Otherwise, if neither of candModeList[ x ], x = 0..2 is equal to INTRA_DC, candIntraPredModeC is set equal to INTRA_DC,
c. Otherwise, if neither of candModeList[ x ], x = 0..2 is equal to INTRA_ANGULAR50, candIntraPredModeC is set equal to INTRA_ANGULAR50,
d. Otherwise, if neither of candModeList[ x ], x = 0..2 is equal to INTRA_ANGULAR18. candIntraPredModeC is set equal to INTRA_ANGULAR18,
The variable IntraPredModeY[ x ][ y ] with x = xCb..xCb + cbWidth - 1 and y = yCb..yCb + cbHeight - 1 is set to be equal to IntraPredModeY[ xCb ][ yCb ]. One additional setting is when cbHeight is larger than double of cbWidth, mh_intra_luma_mpm_flag[ xCb ][ yCb ] is inferred to be 1 and if candModeList[ x ], x = 0..2 is equal to INTRA_ANGULAR50, candModeList[ x ] is replaced with candIntraPredModeC. Another additional setting is when cbWidth is larger than double of cbHeight, mh_intra_luma_mpm_flag[ xCb ][ yCb ] is inferred to be 1 and if candModeList[ x ], x = 0..2 is equal to INTRA_ANGULAR18, candModeList[ x ] is replaced with candIntraPredModeC.
도 18은 본 개시의 일 실시예에 따른 multi-hypothesis prediction에서 참조하는 주변 위치를 나타낸 도면이다.
앞서 설명한 것처럼 multi-hypothesis prediction의 candidate list를 만드는 과정에서 주변 위치를 참조할 수 있다. 예를 들어 앞서 언급한 candIntraPredModeX가 필요할 수 있다. 이때 참조하는 현재 block 주변의 A와 B의 위치는 도 18에 나타낸 NbA와 NbB일 수 있다. 즉 현재 block의 top-left의 바로 왼쪽과 바로 위쪽일 수 있다. 만약 현재 block의 top-left 위치가 도 18에 나타낸 것과 같이 Cb이고 그 좌표가 (xCb, yCb)일 때 NbA는 (xNbA, yNbA) = (xCb-1, yCb)이고, NbB는 (xNbB, yNbB) = (xCb, yCb-1)일 수 있다.
도 19는 본 개시의 일 실시예에 따른 주변의 mode를 참조하는 방법을 나타낸 도면이다.
앞서 설명한 것처럼 multi-hypothesis prediction의 candidate list를 만드는 과정에서 주변 위치를 참조할 수 있다. 또한 주변의 mode를 그대로 사용하거나 주변의 mode에 기초한 mode를 사용하여 list를 생성하는 것이 가능하다. 주변 위치를 참조하여 나온 mode가 candIntraPredModeX일 수 있다.
일 실시예로 주변 위치가 사용불가한 경우 candIntraPredModeX는 기설정된 mode가 될 수 있다. 사용불가한 경우는 주변 위치가 inter prediction을 사용한 경우, 정해진 decoding, encoding 순서상 mode 결정이 되지 않은 경우 등을 포함할 수 있다.
또는 주변 위치가 multi-hypothesis prediction을 사용하지 않은 경우 candIntraPredModeX는 기설정된 mode가 될 수 있다.
또는 주변 위치가 현재 block이 속한 CTU를 넘어서 위에 있는 경우 candIntraPredModeX는 기설정된 mode가 될 수 있다. 또다른 예로 주변 위치가 현재 block이 속한 CTU를 벗어나는 경우 candIntraPredModeX는 기설정된 mode가 될 수 있다.
또한 일 실시예로 상기 기설정된 mode는 DC mode일 수 있다. 또다른 실시예로 상기 기설정된 mode는 planar mode일 수 있다.
또한 만약 주변 위치의 mode가 threshold 각도를 넘는지의 여부 혹은 주변 위치의 mode의 index가 threshold를 넘는지의 여부로 candIntraPredModeX를 설정할 수 있다. 예를 들어 주변 위치의 mode의 index가 diagonal mode index보다 큰 경우에 candIntraPredModeX를 vertical mode index로 설정할 수 있다. 또한 주변 위치의 mode의 index가 diagonal mode index 이하이고, directional mode인 경우에 candIntraPredModeX를 horizontal mode index로 설정할 수 있다. Diagonal mode index는 도 6에서 mode 34일 수 있다.
또한 만약 주변 위치의 mode가 planar mode 또는 DC mode인 경우 candIntraPredModeX는 그대로 planar mode 또는 DC mode로 설정될 수 있다.
도 19를 참조하면 mh_intra_flag는 multi-hypothesis prediction을 사용하는지(사용했는지) 여부를 나타내는 시그날링일 수 있다. 또한 neighboring block에서 사용한 intra prediction mode가 X일 수 있다. 또한 현재 block이 multi-hypothesis prediction을 사용할 수 있고, 주변 block의 mode에 기초한 candIntraPredMode를 사용하여 candidate list를 생성할 수 있는데, 주변이 multi-hypothesis prediction을 사용하지 않았기 때문에 주변 block의 intra prediction mode가 무엇이었는지에 상관 없이, 또 주변 block이 intra prediction을 사용했는지에 상관없이 candIntraPredMode를 기설정된 mode인 DC mode로 설정할 수 있다.
위에서 설명한 주변 mode 참조 방법의 예를 아래에 다시 기술한다.
For X being replaced by either A or B, the variables candIntraPredModeX are derived as follows:
1. The availability derivation process for a block as specified in Neighbouring blocks availability checking process is invoked with the location ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring location ( xNbY, yNbY ) set equal to ( xNbX, yNbX ) as inputs, and the output is assigned to availableX.
2. The candidate intra prediction mode candIntraPredModeX is derived as follows:
A. If one or more of the following conditions are true, candIntraPredModeX is set equal to INTRA_DC.
a. The variable availableX is equal to FALSE.
b. mh_intra_flag[ xNbX ][ yNbX ] is not equal to 1.
c. X is equal to B and yCb - 1 is less than ( ( yCb >> CtbLog2SizeY ) << CtbLog2SizeY ).
B. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] > INTRA_ANGULAR34, candIntraPredModeX is set equal to INTRA_ANGULAR50.
C. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] <= INTRA_ANGULAR34 and IntraPredModeY[ xNbX ][ yNbX ] > INTRA_DC, candIntraPredModeX is set equal to INTRA_ANGULAR18.
D. Otherwise, candIntraPredModeX is set equal to IntraPredModeY[ xNbX ][ yNbX ].
앞서 위에서 설명한 list 설정 방법에서 candIntraPredModeX는 상기 주변 mode 참조 방법에 따라 결정될 수 있다.
도 20은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
도 13 내지 도 17에서 설명한 List1과 List2 생성 방법을 따르면 현재 block 주변의 mode를 참조하여 List1을 생성하고 candidate modes 중 List1에 포함되지 않은 mode를 List2에 넣을 수 있다. Picture에서 공간적인 유사성이 있으므로 주변의 mode를 참조한 것은 우선 순위가 높은 것일 수 있다. 즉, List1이 List2보다 우선 순위가 높을 수 있다. 그러나 도 13 내지 도 17에서 설명한 List1과 List2 시그날링 방법을 따르면 list를 결정하는 시그날링이 infer되지 않는 경우에 List1의 mode를 사용하기 위해 flag와 index를 사용하여 시그날링하고, List2의 mode를 사용하기 위해 flag만을 사용할 수 있다. 즉 List2의 시그날링이 더 적은 bit를 사용할 수 있다. 그러나 우선 순위 높은 list의 mode에 더 많은 bit가 시그날링에 사용되는 것은 코딩 효율 측면에서 좋지 않을 수 있다. 따라서 본 개시와 같은 우선 순위 높은 list 및 mode에 더 적은 bit의 시그날링을 사용하는 방법이 있을 수 있다.
본 개시의 일 실시예를 따르면 List1만 사용 가능한지 여부에 따라서 candidate list 생성 방법이 다를 수 있다. List1만 사용 가능한지 여부는 사용하는 list를 가리키는 시그날링이 infer 되는지를 가리킬 수 있다. 예를 들어 candidate modes를 가지고 기설정된 방법에 의해 생성하는 List3가 있을 때 List3를 List1과 List2에 나누어 넣을 수 있다. 예를 들어 기설정된 방법에 의해 생성하는 List3 및 생성 방법은 앞서 설명한 candModeList 및 그 생성 방법일 수 있다. 만약 사용하는 list를 가리키는 시그날링이 infer 되는 경우 List1만 사용할 수 있고 그러한 경우 List3의 앞부분부터 List1에 채울 수 있다. 또한 만약 사용하는 list를 가리키는 시그날링이 infer 되지 않는 경우 List1 또는 List2가 사용될 수 있고 그러한 경우 List3의 앞부분부터 List2에 채우고 나머지를 List1에 채울 수 있다. 또한 이때 List1을 채울 때도 List3의 순서대로 채우는 것이 가능하다. 즉, 현재 block 주변의 mode를 참조하여 candIntraPredModeX를 candidate list에 넣을 수 있는데, candIntraPredModeX를 list를 가리키는 시그날링이 infer 되는 경우 List1에 넣고, infer 되지 않는 경우 List2에 넣을 수 있다. List2의 크기가 1일 수 있고 그러한 경우 candIntraPredModeA를 list를 가리키는 시그날링이 infer 되는 경우 List1에 넣고, infer 되지 않는 경우 List2에 넣을 수 있다. candIntraPredModeA는 상기 List3의 가장 앞의 mode인 List3[0]일 수 있다. 따라서 본 개시에서는 경우에 따라 List1와 List2 모두에 주변 mode에 기초한 mode인 candIntraPredModeA가 그대로 들어갈 수 있다. 반면에 도 13 내지 도 17에서 설명한 방법에서는 candIntraPredModeA는 List1에만 들어갈 수 있었다. 또한 본 개시의 경우에는 List1 생성 방법이 사용하는 list를 가리키는 시그날링이 infer되는지의 여부에 따라 다르게 된다.
도 20을 참조하면 candidate modes들은 multi-hypothesis prediction의 intra prediction을 생성하는데 사용할 수 있는 candidates일 수 있다. 사용하는 list를 가리키는 시그날링인 list1_flag가 infer되는지의 여부에 따라 candidate list 생성 방법이 다를 수 있다. 만약 infer되는 경우에는 List1을 사용하는 것으로 infer될 수 있고 List1만 사용할 수 있으므로 List3의 가장 상위에 있는 것부터 List1에 넣을 수 있다. List3를 생성할 때는 주변의 mode에 기초한 mode를 가장 상위에 넣을 수 있다. 또한 만약 infer되지 않는 경우에는 List1과 List2 모두 사용될 수 있으므로 List3의 가장 상위에 있는 것부터 시그날링이 적은 List2에 넣을 수 있다. 그리고 List1이 필요한 경우, 예를 들면 List1을 사용한다고 시그날링된 경우에 List3에서 List2에 포함된 것을 제외하고 List1에 넣을 수 있다.
본 개시에서 List3을 사용해서 설명한 부분이 있으나 이것은 개념적인 설명일 수 있고, 실제 List3를 저장하지 않고 List1, List2를 생성하는 것이 가능하다.
아래 실시예들에 따라 candidate list를 만드는 방법과 도 16 내지 도 17에서 설명한 candidate list 만드는 방법을 경우에 따라 사용하는 것이 가능하다. 예를 들어 어떤 list를 사용할 지 가리키는 시그날링이 infer 되는지에 따라 두 가지 candidate list를 만드는 방법 중 선택할 수 있다. 또한 이것은 multi-hypothesis prediction의 경우일 수 있다. 또한 아래의 List1은 3개의 mode가 들어갈 수 있고, List2는 1개의 mode가 들어갈 수 있다. 또한 mode 시그날링 방법은 도 13 내지 도 16에서 설명한 것과 같이 List1의 mode는 flag 및 index로 시그날링하고 List2의 mode는 flag로 시그날링하는 것이 가능하다.
일 실시예로 candIntraPredModeA와 candIntraPredModeB가 같고, candIntraPredModeA가 planar mode 또는 DC mode일 때 List2[0] = planar mode, List1[0] = DC mode, List1[1] = vertical mode, List1[2] = horizontal mode인 것이 가능하다.
또다른 실시예로 candIntraPredModeA와 candIntraPredModeB가 같고, candIntraPredModeA가 planar mode 또는 DC mode일 때 List2[0] = candIntraPredModeA, List1[0] = !candIntraPredModeA, List1[1] = vertical mode, List1[2] = horizontal mode인 것이 가능하다.
일 실시예로 candIntraPredModeA와 candIntraPredModeB가 같고, candIntraPredModeA가 directional mode일 때 List2[0] = candIntraPredModeA, List1[0] = planar mode, List1[1] = DC mode, List1[2] = vertical mode인 것이 가능하다.
일 실시예로 candIntraPredModeA와 candIntraPredModeB가 다른 경우 List2[0] = candIntraPredModeA, List1[0] = candIntraPredModeB일 수 있다. List1[1]과 List1[2]은 planar mode, DC mode, vertical mode, horizontal mode 중 candIntraPredModeA와 candIntraPredModeB가 아닌 것부터 채울 수 있다.
도 21은 본 개시의 일 실시예에 따른 candidate list 생성 방법을 나타낸 도면이다.
앞선 실시예들에서 다수의 list에 기초하여 mode를 결정하는 방법을 설명하였다. 도 21의 발명에서는 다수의 list가 아닌 하나의 list에 기초하여 mode를 결정할 수 있다.
도 21을 참조하면 도 21(a)에 나타낸 것과 같이 multi-hypothesis prediction의 candidate modes들을 모두 포함하는 하나의 candidate list를 생성할 수 있다. Candidate list가 하나이기 때문에 도 21(b)를 참조하면 list를 선택하는 시그날링은 존재하지 않고 candidate list의 mode 중 어떤 mode를 사용할지 나타내는 index 시그날링이 있을 수 있다. 따라서 multi-hypothesis prediction 사용 여부를 나타내는 mh_intra_flag가 1인 경우 candidate index인 mh_intra_luma_idx를 parsing할 수 있다.
일 실시예를 따르면 multi-hypothesis prediction의 candidate list 생성 방법은 기존 intra prediction에서 MPM list 생성 방법에 기초할 수 있다.
일 실시예를 따르면 multi-hypothesis prediction의 candidate list 생성 방법은 앞서 설명한 도 17에서 설명한 List1과 List2 생성 방법에서 List1과 List2 순서대로 이어 붙인 형태일 수 있다.
즉, multi-hypothesis prediction의 candidate list을 candModeList라고 하면 본 실시예에서 candModeList의 크기가 4일 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같고 planar mode 또는 DC mode인 경우, candModeList는 기설정된 순서에 따라 결정될 수 있다. 예를 들어 candModeList[0] = planar mode, candModeList[1] = DC mode, candModeList[2] = vertical mode, candModeList[3] = horizontal mode일 수 있다.
또다른 예로 만약 candIntraPredModeA와 candIntraPredModeB가 같고 planar mode 또는 DC mode인 경우, candModeList[0] = candIntraPredModeA, candModeList[1] = !candIntraPredModeA, candModeList[2] = vertical mode, candModeList[3] = horizontal mode일 수 있다.
만약 candIntraPredModeA와 candIntraPredModeB가 같고 directional mode인 경우, candModeList[0] = candIntraPredModeA, candModeList[1] = planar mode, candModeList[2] = DC mode, candModeList[3] = candIntraPredModeA와 planar mode와 DC mode가 아닌 mode 일 수 있다.
만약 candIntraPredModeA와 candIntraPredModeB가 다른 경우, candModeList[0] = candIntraPredModeA, candModeList[1] = candIntraPredModeB 일 수 있다. 또한 candModeList[2]와 candModeList[3]는 candidate modes의 기설정된 순서에 따라 candIntraPredModeA와 candIntraPredModeB가 아닌 mode를 차례대로 넣을 수 있다. 상기 기설정된 순서는 planar mode, DC mode, vertical mode, horizontal mode일 수 있다.
본 개시의 일 실시예를 따르면 block size 조건에 따라 candidate list가 달라질 수 있다. 만약 block width와 height 중 더 큰 것이 다른 것의 n배보다 큰 경우에 candidate list는 더 짧을 수 있다. 예를 들어 width가 height의 n배보다 큰 경우에 도 21에서 설명한 candidate list에서 horizontal mode를 candidate list에서 빼고 그 뒤에 있는 모드를 당겨서 채울 수 있다. 또한 height가 width의 n배보다 큰 경우에 도 21에서 설명한 candidate list에서 vertical mode를 candidate list에서 빼고 그 뒤에 있는 모드를 당겨서 채울 수 있다. 따라서 width가 height의 n배보다 큰 경우에는 candidate list 크기가 3일 수 있다. 또한 width가 height의 n배보다 큰 경우에는 그렇지 않은 경우보다 candidate list 크키가 작거나 같은 것이 가능하다.
본 개시의 일 실시예를 따르면 도 21 실시예의 candidate index는 variable length coding될 수 있다. 이것은 사용될 확률이 더 높은 mode을 list의 앞쪽에 넣으므로써 시그날링 효율을 높이기 위한 것일 수 있다.
또다른 실시예를 따르면 도 21 실시예의 candidate index는 fixed length coding될 수 있다. Multi-hypothesis prediction에서 사용하는 mode 개수는 2의 지수승 개수일 수 있다. 예를 들어 앞서 설명한 것처럼 4개의 intra prediction mode 중에서 사용할 수 있다. 이러한 경우 fixed length coding하여도 할당되지 않는 값이 발생하지 않으므로 시그날링에서 불필요한 부분이 생기지 않기 때문일 수 있다. 또한 fixed length coding되는 경우 list construction 되는 경우의 수는 1개일 수 있다. 어떤 index를 시그날링하든지 bit 수가 같기 때문이다.
일 실시예를 따르면 candidate index가 경우에 따라 variable length coding되거나 fixed length coding될 수 있다. 예를 들어 앞선 실시예와 같이 경우에 따라 candidate list 크기가 달라질 수 있다. 일 실시예로 candidate list 크기에 따라 candidate index가 variable length coding되거나 fixed length coding될 수 있다. 예를 들어 candidate list 크기가 2의 지수승인 경우 fixed length coding되고, 2의 지수승이 아닌 경우 variable length coding될 수 있다. 즉, 앞선 실시예를 따르면 block size 조건에 따라 coding 방법이 달라질 수 있다.
본 개시의 실시예를 따르면 multi-hypothesis prediction을 사용할 때 DC mode를 사용하는 경우는 block 전체에 대하여 다수의 prediction 간의 weight가 같을 수 있으므로 prediction block의 weight를 조절하는 것과 같을 수 있다. 따라서 multi-hypothesis prediction에서 DC mode를 제외시킬 수 있다.
일 실시예로 multi-hypothesis prediction에서 planar mode, vertical mode, horizontal mode 중에서만 사용하는 것이 가능하다. 이러한 경우 도 21에 나타낸 것과 같이 하나의 list를 사용하여 multi-hypothesis prediction을 시그날링하는 것이 가능하다. 또한 index 시그날링에 variable length coding을 사용할 수 있다. 일 실시예로 고정된 순서로 list를 생성할 수 있다. 예를 들면 planar mode, vertical mode, horizontal mode 순일 수 있다. 또다른 실시예로 현재 block 주변의 mode를 참조하여 list를 생성할 수 있다. 예를 들어 만약 candIntraPredModeA와 candIntraPredModeB가 같은 경우 candModeList[0] = candIntraPredModeA일 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같고 candIntraPredModeA가 planar mode인 경우 candModeList[1]와 candModeList[2]는 기설정된 순서를 따라 설정할 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같고 candIntraPredModeA가 planar mode가 아닌 경우 candModeList[1] = planar mode, candModeList[2] = candIntraPredModeA가 아니고 planar mode가 아닌 mode 일 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 다른 경우 candModeList[0] = candIntraPredModeA, candModeList[1] = candIntraPredModeB, candModeList[2] = candIntraPredModeA가 아니고 candIntraPredModeB가 아닌 mode 일 수 있다.
또다른 실시예로 multi-hypothesis prediction에서 3가지 mode 중에서만 사용하는 것이 가능하다. 상기 3가지 mode는 planar mode와 DC mode를 포함하는 것이 가능하다. 또한 상기 3가지 mode는 vertical mode와 horizontal mode 중에서 하나를 조건에 따라 포함하는 것이 가능하다. 상기 조건은 block size와 연관된 조건일 수 있다. 예를 들어 block의 width와 height 중 어떤 것이 큰 지의 여부에 따라 horizontal mode를 포함할지 vertical mode를 포함할지 결정하는 것이 가능하다. 예를 들어 block의 width가 height보다 큰 경우 vertical mode를 포함할 수 있다. Block의 height가 width보다 큰 경우 horizontal mode를 포함할 수 있다. Block의 height와 width가 같은 경우 vertical mode 또는 horizontal mode 중 약속되어 있는 mode를 포함할 수 있다.
일 실시예로 고정된 순서로 list를 생성할 수 있다. 예를 들면 planar mode, DC mode, vertical or horizontal mode 순일 수 있다. 또다른 실시예로 현재 block 주변의 mode를 참조하여 list를 생성할 수 있다. 예를 들어 만약 candIntraPredModeA와 candIntraPredModeB가 같은 경우 candModeList[0] = candIntraPredModeA일 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같고 candIntraPredModeA가 directional mode가 아닌 경우 candModeList[1]와 candModeList[2]는 기설정된 순서를 따라 설정할 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 같고 candIntraPredModeA가 directional mode인 경우 candModeList[1] = planar mode, candModeList[2] = DC mode 일 수 있다. 만약 candIntraPredModeA와 candIntraPredModeB가 다른 경우 candModeList[0] = candIntraPredModeA, candModeList[1] = candIntraPredModeB, candModeList[2] = candIntraPredModeA가 아니고 candIntraPredModeB가 아닌 mode 일 수 있다.
본 개시의 또다른 실시예를 따르면 multi-hypothesis prediction에서 2가지 mode 중에서만 사용하는 것이 가능하다. 상기 2가지 mode는 planar mode를 포함하는 것이 가능하다. 또한 상기 2가지 mode는 vertical mode와 horizontal mode 중에서 하나를 조건에 따라 포함하는 것이 가능하다. 상기 조건은 block size와 연관된 조건일 수 있다. 예를 들어 block의 width와 height 중 어떤 것이 큰 지의 여부에 따라 horizontal mode를 포함할지 vertical mode를 포함할지 결정하는 것이 가능하다. 예를 들어 block의 width가 height보다 큰 경우 vertical mode를 포함할 수 있다. Block의 height가 width보다 큰 경우 horizontal mode를 포함할 수 있다. Block의 height와 width가 같은 경우 vertical mode 또는 horizontal mode 중 약속되어 있는 mode를 포함할 수 있다. 이러한 경우 multi-hypothesis prediction에서 어떤 mode를 사용하는지 나타내기 위한 flag가 시그날링될 수 있다. 일 실시예를 따르면 block size에 따라 특정 mode를 제외시킬 수 있다. 예를 들면 block size가 작은 경우 특정 mode를 제외시킬 수 있다. 예를 들어 block size가 작은 경우 multi-hypothesis prediction에서 planar mode만 사용하는 것이 가능하다. 만약 특정 mode가 제외된다면 mode 시그날링을 생략하거나 줄이고 시그날링하는 것이 가능하다.
본 개시의 또다른 실시예를 따르면 multi-hypothesis prediction에서 1가지 mode만 사용하는 것이 가능하다. 상기 1가지 mode는 planar mode인 것이 가능하다. 또다른 실시예로 상기 1가지 mode는 vertical mode와 horizontal mode 중에서 block size에 기초해서 정해지는 것이 가능하다. 예를 들어 block의 width와 height 중 어떤 것이 큰 지에 따라 vertical mode와 horizontal mode 중에서 결정될 수 있다. 예를 들어 block의 width가 height보다 큰 경우 vertical mode로 결정되고 block의 height가 width보다 큰 경우 horizontal mode로 결정되는 것이 가능하다. 만약 block의 width와 height가 같은 경우 기설정된 mode로 결정하는 것이 가능하다. 만약 block의 width와 height가 같은 경우 horizontal mode 또는 vertical mode 중에서 기설정된 mode로 결정하는 것이 가능하다. 만약 block의 width와 height가 같은 경우 planar mode 또는 DC mode 중에서 기설정된 mode로 결정하는 것이 가능하다.
또한 본 개시의 실시예를 따르면 multi-hypothesis prediction에서 생성한 prediction을 flipping하는 flipping 시그날링이 존재할 수 있다. 이를 통해 multi-hypothesis prediction에서 하나의 mode가 선택됐더라도 flipping에 의해 반대쪽 residual을 없애는 효과를 가질 수 있다. 또한 이를 통해 multi-hypothesis prediction에서 사용 가능한 candidate modes를 줄이는 효과를 가질 수 있다. 더 구체적으로 예를 들어 상기 실시예들 중에서 1가지 mode만 사용하는 경우에 flipping을 사용하는 것이 가능하다. 이를 통해 prediction 성능을 높일 수 있다. 상기 flipping은 x축에 대한 flipping 또는 y축에 대한 flipping 또는 x, y 축 모두에 대한 flipping을 의미할 수 있다. 일 실시예로 multi-hypothesis prediction에서 선택된 mode에 기초해서 flipping 방향이 결정되는 것이 가능하다. 예를 들어 multi-hypothesis prediction에서 선택된 mode가 planar mode인 경우 x, y 축 모두에 대한 flipping인 것으로 결정할 수 있다. 또한 x, y 축 모두에 대해 flipping하는 것은 block shape에 따른 것일 수 있다. 예를 들어 block이 정사각형이 아닌 경우 x, y 축 모두에 대해 flipping하지는 않는 것으로 결정할 수 있다. 예를 들어 multi-hypothesis prediction에서 선택된 mode가 horizontal mode인 경우 x축에 대한 flipping인 것으로 결정할 수 있다. 예를 들어 multi-hypothesis prediction에서 선택된 mode가 vertical mode인 경우 y축에 대한 flipping인 것으로 결정할 수 있다. 또한 multi-hypothesis prediction에서 선택된 mode가 DC mode인 경우 flipping이 없는 것으로 결정하고 explicit 시그날링하지 않는 것이 가능하다.
또한 multi-hypothesis prediction에서 DC mode는 illumination compensation과 유사한 효과를 가질 수 있다. 따라서 본 개시의 일 실시예를 따르면 multi-hypothesis prediction에서 DC mode와 illumination compensation 방법 중에서 하나를 사용하면 다른 하나를 사용하지 않을 수 있다.
또한 multi-hypothesis prediction은 generalized bi-prediction(GBi)과 유사한 효과를 가질 수 있다. 예를 들어 multi-hypothesis prediction에서 DC mode는 generalized bi-prediction(GBi)과 유사한 효과를 가질 수 있다. Generalized bi-prediction은 block 단위, CU 단위에서 bi-prediction의 두 reference block 간의 weight를 조절하는 기법일 수 있다. 따라서 본 개시의 일 실시예를 따르면 multi-hypothesis prediction(또는 multi-hypothesis prediction에서 DC mode)와 generalized bi-prediction 방법 중에서 하나를 사용하면 다른 하나를 사용하지 않을 수 있다. 또한 이것은 multi-hypothesis prediction의 prediction 중에 bi-prediction인 것을 포함하는 경우일 수 있다. 예를 들어 multi-hypothesis prediction의 선택된 merge candidate가 bi-prediction인 경우 generalized bi-prediction을 사용하지 않을 수 있다. 이 실시예들에서 multi-hypothesis prediction과 generalized bi-prediction간의 관계는 multi-hypothesis prediction의 특정 mode, 예를 들면 DC mode를 사용할 때로 한정할 수도 있다. 또는 generalized bi-prediction 관련 시그날링이 multi-hypothesis prediction 관련 시그날링보다 앞에 존재하는 경우 generalized bi-prediction을 사용하면 multi-hypothesis prediction 또는 multi-hypothesis prediction의 특정 mode를 사용하지 않을 수 있다.
어떤 방법을 사용하지 않는다는 것은 상기 어떤 방법에 대한 시그날링을 하지 않고 관련 syntax를 parsing하지 않는 것을 의미할 수 있다.
도 22는 본 개시의 일 실시예에 따른 multi-hypothesis prediction에서 참조하는 주변 위치를 나타낸 도면이다.
앞서 설명한 것처럼 multi-hypothesis prediction의 candidate list를 만드는 과정에서 주변 위치를 참조할 수 있다. 예를 들어 앞서 언급한 candIntraPredModeX가 필요할 수 있다. 이때 참조하는 현재 block 주변의 A와 B의 위치는 도 22에 나타낸 NbA와 NbB일 수 있다. 만약 현재 block의 top-left 위치가 도 18에 나타낸 것과 같이 Cb이고 그 좌표가 (xCb, yCb)일 때 NbA는 (xNbA, yNbA) = (xCb-1, yCb+cbHeight-1)이고, NbB는 (xNbB, yNbB) = (xCb+cbWidth-1, yCb-1)일 수 있다. 여기서 cbWidth와 cbHeight는 각각 현재 block의 width, height일 수 있다. 또한 multi-hypothesis prediction의 candidate list를 만드는 과정에서 주변 위치는 intra prediction의 MPM list 생성에서 참조하는 주변 위치와 같을 수 있다.
또다른 실시예로 multi-hypothesis prediction의 candidate list를 만드는 과정에서 참조하는 주변 위치는 현재 block 왼쪽 가운데와 위쪽 가운데 근처일 수 있다. 예를 들어 NbA와 NbB는 (xCb-1, yCb+cbHeight/2-1), (xCb+cbWidth/2-1, yCb-1) 일 수 있다. 또는 NbA와 NbB는 (xCb-1, yCb+cbHeight/2), (xCb+cbWidth/2, yCb-1) 일 수 있다.
도 23은 본 개시의 일 실시예에 따른 주변의 mode를 참조하는 방법을 나타낸 도면이다.
앞서 설명한 것처럼 multi-hypothesis prediction의 candidate list를 만드는 과정에서 주변 위치를 참조할 수 있는데, 도 19의 실시예에서는 주변 위치가 multi-hypothesis prediction을 사용하지 않은 경우 candIntraPredModeX를 기설정된 mode로 설정하였다. 이것은 candIntraPredModeX를 설정할 때 주변 위치의 mode가 그대로 candIntraPredModeX가 되지 않는 경우가 있기 때문일 수 있다.
따라서 본 개시의 일 실시예를 따르면 주변 위치가 multi-hypothesis prediction을 사용하지 않았더라도 주변 위치가 사용한 mode가 multi-hypothesis prediction에 사용되는 mode인 경우 candIntraPredModeX를 주변 위치가 사용한 mode로 설정할 수 있다. Multi-hypothesis prediction에 사용되는 mode는 planar mode, DC mode, vertical mode, horizontal mode일 수 있다.
또는 주변 위치가 multi-hypothesis prediction을 사용하지 않았더라도 주변 위치가 사용한 mode가 특정 mode인 경우 candIntraPredModeX를 주변 위치가 사용한 mode로 설정할 수 있다.
또는 주변 위치가 multi-hypothesis prediction을 사용하지 않았더라도 주변 위치가 사용한 mode가 vertical mode 혹은 height mode인 경우 candIntraPredModeX를 주변 위치가 사용한 mode로 설정할 수 있다. 또는 주변 위치가 현재 block 위쪽인 경우 주변 위치가 multi-hypothesis prediction을 사용하지 않았더라도 주변 위치가 사용한 mode가 vertical mode인 경우 candIntraPredModeX를 주변 위치가 사용한 mode로 설정할 수 있다. 또한 주변 위치가 현재 block 왼쪽인 경우 주변 위치가 multi-hypothesis prediction을 사용하지 않았더라도 주변 위치가 사용한 mode가 horizontal mode인 경우 candIntraPredModeX를 주변 위치가 사용한 mode로 설정할 수 있다.
도 23를 참조하면 mh_intra_flag는 multi-hypothesis prediction을 사용하는지(사용했는지) 여부를 나타내는 시그날링일 수 있다. 또한 neighboring block에서 사용한 intra prediction mode가 horizontal mode일 수 있다. 또한 현재 block이 multi-hypothesis prediction을 사용할 수 있고, 주변 block의 mode에 기초한 candIntraPredMode를 사용하여 candidate list를 생성할 수 있는데, 주변이 multi-hypothesis prediction을 사용하지 않았더라도 주변 block의 intra prediction mode가 특정 mode, 예를 들면 horizontal mode이기 때문에 candIntraPredMode를 horizontal mode로 설정할 수 있다.
위에서 설명한 주변 mode 참조 방법의 예를 도 19의 다른 실시예와 결합하여 아래에 다시 기술한다.
For X being replaced by either A or B, the variables candIntraPredModeX are derived as follows:
1. The availability derivation process for a block as specified in Neighbouring blocks availability checking process is invoked with the location ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring location ( xNbY, yNbY ) set equal to ( xNbX, yNbX ) as inputs, and the output is assigned to availableX.
2. The candidate intra prediction mode candIntraPredModeX is derived as follows:
A. If one or more of the following conditions are true, candIntraPredModeX is set equal to INTRA_DC.
a. The variable availableX is equal to FALSE.
b. mh_intra_flag[ xNbX ][ yNbX ] is not equal to 1, and IntraPredModeY[ xNbX ][ yNbX ] is neither INTRA_ANGULAR50 nor INTRA_ANGULAR18.
c. X is equal to B and yCb - 1 is less than ( ( yCb >> CtbLog2SizeY ) << CtbLog2SizeY ).
B. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] > INTRA_ANGULAR34, candIntraPredModeX is set equal to INTRA_ANGULAR50.
C. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] <= INTRA_ANGULAR34 and IntraPredModeY[ xNbX ][ yNbX ] > INTRA_DC, candIntraPredModeX is set equal to INTRA_ANGULAR18.
D. Otherwise, candIntraPredModeX is set equal to IntraPredModeY[ xNbX ][ yNbX ].
아래는 또다른 실시예이다.
For X being replaced by either A or B, the variables candIntraPredModeX are derived as follows:
1. The availability derivation process for a block as specified in Neighbouring blocks availability checking process is invoked with the location ( xCurr, yCurr ) set equal to ( xCb, yCb ) and the neighbouring location ( xNbY, yNbY ) set equal to ( xNbX, yNbX ) as inputs, and the output is assigned to availableX.
2. The candidate intra prediction mode candIntraPredModeX is derived as follows:
A. If one or more of the following conditions are true, candIntraPredModeX is set equal to INTRA_DC.
a. The variable availableX is equal to FALSE.
b. mh_intra_flag[ xNbX ][ yNbX ] is not equal to 1, and IntraPredModeY[ xNbX ][ yNbX ] is neither INTRA_PLANAR, INTRA_DC, INTRA_ANGULAR50 nor INTRA_ANGULAR18.
c. X is equal to B and yCb - 1 is less than ( ( yCb >> CtbLog2SizeY ) << CtbLog2SizeY ).
B. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] > INTRA_ANGULAR34, candIntraPredModeX is set equal to INTRA_ANGULAR50.
C. Otherwise, if IntraPredModeY[ xNbX ][ yNbX ] <= INTRA_ANGULAR34 and IntraPredModeY[ xNbX ][ yNbX ] > INTRA_DC, candIntraPredModeX is set equal to INTRA_ANGULAR18.
D. Otherwise, candIntraPredModeX is set equal to IntraPredModeY[ xNbX ][ yNbX ].
앞서 위에서 설명한 list 설정 방법에서 candIntraPredModeX는 상기 주변 mode 참조 방법에 따라 결정될 수 있다.
도 24는 본 개시의 일 실시예에 따른 주변 sample 사용을 나타낸 도면이다.
앞서 설명한 것처럼 multi-hypothesis prediction을 사용하는 경우 intra prediction을 다른 prediction과 결합하여 사용하는 것이 가능하다. 따라서 multi-hypothesis prediction을 사용하는 경우 현재 block 주변의 sample을 reference sample로 사용하여 intra prediction을 생성할 수 있다.
본 개시의 일 실시예를 따르면 multi-hypothesis prediction을 사용하는 경우 reconstructed sample을 사용하는 모드를 사용할 수 있다. 또한 multi-hypothesis prediction을 사용하지 않는 경우 reconstructed sample을 사용하는 모드를 사용하지 않을 수 있다. 상기 reconstructed sample은 현재 block 주변의 reconstructed sample일 수 있다.
상기 reconstructed sample을 사용하는 모드의 예로 template matching이 있을 수 있다. 어떤 block을 기준으로 기설정된 위치의 reconstructed sample들을 template으로 정의할 수 있다. Template matching을 현재 block의 template과 비교하고자하는 block들의 template의 cost를 비교하여 cost가 작은 block을 찾는 동작일 수 있다. 이때 cost는 template의 absolute difference의 합, difference의 제곱의 합 등으로 정의할 수 있다. 예를 들어 현재 block과 reference picture의 block들 간의 template matching을 통해 현재 block과 유사할 것으로 예상되는 block을 검색하는 것이 가능하고, 이에 기반하여 motion vector를 설정하거나 motion vector를 refine할 수 있다.
상기 reconstructed sample을 사용하는 모드의 예로 reconstructed sample을 사용하는 motion compensation, motion vector refinement 등이 있을 수 있다.
현재 block 주변의 reconstructed sample을 사용하기 위해서는 현재 block을 decoding할 때 주변 block의 decoding이 완료되기를 기다려야 한다. 이러한 경우 현재 block와 주변 block을 parallel processing하기에 어려움이 있을 수 있다. 따라서 multi-hypothesis prediction을 사용하지 않는 경우 parallel processing을 가능하게 하기 위해 현재 block 주변의 reconstructed sample을 사용하는 모드를 사용하지 않을 수 있다. 또한 multi-hypothesis prediction을 사용하는 경우 현재 block 주변의 reconstructed sample을 사용하여 intra prediction을 생성할 수 있기 때문에 현재 block 주변의 reconstructed sample을 사용하는 다른 모드도 사용할 수 있다.
또한 본 개시의 일 실시예를 따르면 multi-hypothesis prediction을 사용하더라도 candidate index에 따라 현재 block 주변의 reconstructed sample 사용 가능 여부를 달리 하는 것이 가능하다. 일 실시예로 candidate index가 threshold보다 작을 때 현재 block 주변의 reconstructed sample을 사용 가능할 수 있다. Candidate index가 작으면 candidate index 시그날링 비트수가 적을 수 있고 candidate 정확도가 높을 수 있고, 코딩 효율이 높은 것에 reconstructed sample을 사용하여 더 정확도를 높이는 것이 가능하다. 다른 실시예로 candidate index가 threshold보다 클 때 현재 block 주변의 reconstructed sample을 사용 가능할 수 있다. Candidate index가 크면 candidate index 시그날링 비트수가 많을 수 있고 candidate 정확도가 낮을 수 있고, 정확도가 낮은 candidate에 현재 block 주변의 reconstructed sample을 사용함으로써 정확도를 보완할 수 있다.
본 개시의 일 실시예를 따르면 multi-hypothesis prediction을 사용하는 경우 현재 block 주변의 reconstructed sample을 사용하여 inter prediction을 생성하고, 상기 inter prediction을 multi-hypothesis prediction의 intra prediction과 결합하여 prediction block을 생성하는 것이 가능하다.
도 24를 참조하면 현재 block이 multi-hypothesis prediction을 사용하는지 여부를 나타내는 시그날링인 mh_intra_flag 값이 1이다. 현재 block이 multi-hypothesis prediction을 사용하므로 현재 block 주변의 reconstructed sample들을 사용하는 모드를 사용할 수 있다.
도 25는 본 개시의 일 실시예에 따른 transform mode를 나타낸 도면이다.
본 개시의 일 실시예를 따르면 block의 sub-part만 transform하는 transform mode가 존재할 수 있다. 이러한 transform mode를 sub-block transform(SBT) 또는 spatially varying transform(SVT) 등으로 지칭할 수 있다. 예를 들면 CU 또는 PU가 다수의 TU로 나뉘고 다수의 TU 중 일부만 transform할 수 있다. 예를 들어 다수의 TU 중 하나의 TU만 transform할 수 있다. 상기 다수의 TU 중 transform하지 않는 TU는 residual이 0인 것으로 할 수 있다.
도 25를 참조하면 하나의 CU 또는 PU를 다수의 TU로 나누는 타입으로 SVT-V와 SVT-H의 두 가지가 있을 수 있다. SVT-V는 다수의 TU의 height가 CU 또는 PU height와 같고, 다수의 TU의 width가 CU 또는 PU width와 다른 타입일 수 있다. SVT-H는 다수의 TU의 height가 CU 또는 PU height와 다르고, 다수의 TU의 width가 CU 또는 PU width와 같은 타입일 수 있다. 일 실시예로 SVT-V의 transform하는 TU의 width 및 위치는 시그날링될 수 있다. 또한 SVT-H의 transform하는 TU의 height 및 위치는 시그날링될 수 있다.
일 실시예를 따르면 SVT type과 위치, width or height에 따른 transform kernel이 기설정되어있을 수 있다.
이와 같이 CU 또는 PU의 일부만을 tranform하는 mode가 있는 것은 prediction 후 residual이 CU 또는 PU의 일부에 주로 존재하는 것이 가능하기 때문이다.
즉, SBT는 TU에 대한 skip mode와 같은 개념을 갖게 된다. 기존의 skip mode는 CU에 대한 skip mode일 수 있다.
도 25를 참조하면 SVT-V, SVT-H 각 type에 대해 A라고 표시된 transform 하는 위치가 두 군데로 정의되어 있고, width or height가 CU width or CU height의 1/2이나 1/4로 정의되어 있다. 또한 A라고 표시된 영역이 아닌 부분은 residual을 0 값으로 할 수 있다.
또한 SBT를 사용할 수 있는 조건이 존재할 수 있다. 예를 들어 SBT가 가능한 조건들은 block size와 연관된 조건, high level(예를 들어 sequence, slice, tile 등) syntax에서의 사용 가능 여부 시그날링 값 등을 포함할 수 있다.
도 26은 본 개시의 일 실시예에 따른 multi-hypothesis prediction과 transform mode 간의 관계를 나타낸 도면이다.
본 개시의 일 실시예를 따르면 multi-hypothesis prediction과 transform mode간에는 연관 관계를 가질 수 있다. 예를 들어 어느 하나의 사용 여부에 따라 다른 하나의 사용 여부가 결정될 수 있다. 또는 어느 하나의 mode에 따라 다른 하나의 mode 사용 여부가 결정될 수 있다. 또는 어느 하나의 사용 여부에 따라 다른 하나의 mode 사용 여부가 결정될 수 있다.
일 실시예로 상기 transform mode는 도 25에서 설명한 SVT일 수 있다. 즉, multi-hypothesis prediction 사용 여부에 따라 SVT 사용 여부가 결정될 수 있다. 또는 SVT 사용 여부에 따라 multi-hypothesis prediction 사용 여부가 결정될 수 있다. Multi-hypothesis prediction을 통해 block 전체에 대한 prediction 성능이 좋아질 수 있고, block 일부에만 residual이 모이는 현상이 적게 일어날 수 있기 때문이다.
본 개시의 일 실시예를 따르면 multi-hypothesis prediction 사용 여부 혹은 multi-hypothesis prediction의 mode에 따라 SVT의 transform하는 TU의 위치가 제한될 수 있다. 또는 multi-hypothesis prediction 사용 여부 혹은 multi-hypothesis prediction의 mode에 따라 SVT의 transform하는 TU의 width(SVT-V) or height(SVT-H)가 제한될 수 있다. 따라서 위치나 width or height에 관한 시그날링을 줄일 수 있다. 예를 들어 SVT transform하는 TU의 위치가 multi-hypothesis prediction에서 intra prediction의 weight가 클 수 있는 쪽이 아닐 수 있다. Weight가 큰 쪽의 residual은 multi-hypothesis prediction에 의해 줄일 수 있기 때문이다. 따라서 multi-hypothesis prediction을 사용할 때 SVT에서 weight가 큰 쪽을 transform하는 mode는 없을 수 있다. 예를 들면 multi-hypothesis prediction에서 horizontal mode 또는 vertical mode를 사용하는 경우 도 25의 position 1을 생략하는 것이 가능하다. 또다른 실시예로 multi-hypothesis prediction에서 planar mode를 사용하는 경우 SVT transform하는 TU의 위치가 제한될 수 있다. 예를 들어 multi-hypothesis prediction에서 planar mode를 사용하는 경우 도 25의 position 0을 생락하는 것이 가능하다. 이것은 multi-hypothesis prediction에서 planar mode를 사용하는 경우 intra prediction의 reference sample 근처 부분은 reference sample 값과 유사한 값이 나올 수 있고 그에 따라 reference sample 근처의 residual이 작을 수 있기 때문이다.
또다른 예로 multi-hypothesis prediction을 사용하는 경우 가능한 SVT transform하는 TU의 width or height의 값은 달라질 수 있다. 또는 multi-hypothesis prediction에서 특정 mode를 사용하는 경우 가능한 SVT transform하는 TU의 width or height의 값은 달라질 수 있다. 예를 들어 multi-hypothesis prediction을 사용하는 경우 block 중 넓은 부분에 residual이 많이 남지 않을 수 있기 때문에 SVT transform하는 TU의 width or height의 큰 값은 제외시킬 수 있다. 또는 multi-hypothesis prediction을 사용하는 경우 multi-hypothesis prediction에서 weight가 달라지는 단위와 같은 SVT transform하는 TU의 width or height의 값은 제외시킬 수 있다.
도 26을 참조하면 SBT 사용 여부를 나타내는 cu_sbt_flag와 multi-hypothesis prediction 사용 여부를 나타내는 mh_intra_flag가 존재할 수 있다. 도면을 참조하면 mh_intra_flag가 0인 경우에 cu_sbt_flag를 parsing할 수 있다. 또한 cu_sbt_flag가 존재하지 않는 경우 0으로 infer할 수 있다.
Multi-hypothesis prediction에서 intra prediction을 결합하는 것과 SBT는 모두 해당 기술을 사용하지 않았을 때 CU 또는 PU의 일부에만 residual이 많이 남을 수 있는 문제를 해결하기 위한 것일 수 있다. 따라서 두 기술의 연관성이 있을 수 있기 때문에 한 기술의 사용 여부 혹은 한 기술의 특정 mode 사용 여부 등을 다른 기술에 대한 것에 기초하여 결정할 수 있다.
또한 도 26에서 sbtBlockConditions는 SBT가 가능한 조건들을 나타낼 수 있다. SBT가 가능한 조건들은 block size와 연관된 조건, high level(예를 들어 sequence, slice, tile 등) syntax에서의 사용 가능 여부 시그날링 값 등을 포함할 수 있다.
도 27은 본 개시의 일 실시예에 따른 color 성분들의 관계를 나타낸 도면이다.
도 27을 참조하면 color format이 크로마 포멧 정보(chroma_format_idc), Chroma format, separate_colour_plane_flag 등에 의해 나타내질 수 있다.
만약 Monochrome인 경우 1개의 sample array만 존재할 수 있다. 또한 SubWidthC, SubHeightC가 모두 1일 수 있다.
만약 4:2:0 sampling인 경우 chroma array가 2개 존재할 수 있다. 또한 chroma array는 luma array의 half width, half height일 수 있다. 너비에 관련된 정보(SubWidthC), 높이에 관련된 정보(SubHeightC)는 모두 2일 수 있다.
너비에 관련된 정보(SubWidthC)와 높이에 관련된 정보(SubHeightC)는 chroma array가 luma array와 비교해서 크기가 어떤지 나타낼 수 있고, chroma array width 또는 height가 luma array의 half 크기인 경우 너비에 관련된 정보(SubWidthC) 또는 높이에 관련된 정보(SubHeightC)는 2이고, chroma array width 또는 height가 luma array와 같은 크기인 너비에 관련된 정보(SubWidthC) 또는 높이에 관련된 정보(SubHeightC)는 1일 수 있다.
만약 4:2:2 sampling인 경우 chroma array가 2개 존재할 수 있다. 또한 chroma array는 luma array의 half width, 같은 height일 수 있다. SubWidthC, SubHeightC는 각각 2, 1일 수 있다.
만약 4:4:4 sampling인 경우 chroma array는 luma array의 같은 width, 같은 height일 수 있다. SubWidthC, SubHeightC는 모두 1일 수 있다. 이때 separate_colour_plane_flag에 기초하여 processing이 다를 수 있다. 만약 separate_colour_plane_flag가 0인 경우 chroma array는 luma array와 width, height가 같을 수 있다. 만약 separate_colour_plane_flag가 1인 경우 3개의 color plane(luma, Cb, Cr)은 각각 processing될 수 있다. separate_colour_plane_flag와 상관없이 4:4:4인 경우 SubWidthC, SubHeightC는 모두 1일 수 있다.
만약 separate_colour_plane_flag가 1인 경우 하나의 slice에 하나의 color 성분에 해당하는 것만 존재하는 것이 가능하다. separate_colour_plane_flag가 0인 경우 하나의 slice에 다수의 color 성분에 해당하는 것이 존재하는 것이 가능하다.
도 27을 참조하면 4:2:2인 경우에만 SubWidthC, SubHeightC가 다른 것이 가능하다. 따라서 4:2:2인 경우 luma 기준 width 대 height 관계가, chroma 기준 width 대 height 관계가 다를 수 있다.
예를 들어 luma sample 기준 width가 widthL이고, chroma sample 기준 width가 widthC인 경우, 만약 widthL과 widthC가 corresponding인 경우 둘의 관계는 다음과 같을 수 있다.
widthC = widthL / SubWidthC
즉, widthL = widthC * SubWidthC
또한 마찬가지로 luma sample 기준 height가 heightL이고, chroma sample 기준 height가 heightC인 경우, 만약 heightL과 heightC가 corresponding인 경우 둘의 관계는 다음과 같을 수 있다.
heightC = heightL / SubHeightC
즉, heightL = heightC * SubHeightC
또한 color component를 지시하는(나타내는) 값이 존재할 수 있다. 예를 들어 cIdx가 color component를 지시할 수 있다. 예를 들어 cIdx는 color component index일 수 있다. 만약 cIdx가 0는 luma component를 나타낼 수 있다. 또한 cIdx가 0이 아닌 것은 chroma component를 나타낼 수 있다. 또한 cIdx가 1인 것은 chroma Cb component를 나타낼 수 있다. 또한 cIdx가 2인 것은 chroma Cr component를 나타낼 수 있다.
도 28은 본 개시의 일 실시예에 따른 color 성분들의 관계를 나타낸 도면이다.
도 28 (a), (b), (c)는 각각 4:2:0, 4:2:2, 4:4:4 경우를 나타내고 있다.
도 28 (a)를 참조하면 horizontal 방향에서 luma sample 2개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다. 또한 vertical 방향에서 luma sample 2개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다.
도 28 (b)를 참조하면 horizontal 방향에서 luma sample 2개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다. 또한 vertical 방향에서 luma sample 1개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다.
도 28 (c)를 참조하면 horizontal 방향에서 luma sample 1개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다. 또한 vertical 방향에서 luma sample 1개당 chroma sample이 1개(Cb 1개, Cr 1개) 위치할 수 있다.
앞서 설명했듯이 이러한 관계에 의해 도 27에서 설명한 SubWidthC, SubHeightC가 결정된 것일 수 있고, SubWidthC, SubHeightC에 기초하여 luma sample 기준, chroma sample 기준 간의 변환을 수행할 수 있다.
도 29은 본 개시의 일 실시예에 따른 주변 참조 위치를 나타낸 도면이다.
본 개시의 실시예를 따르면 prediction 수행 시 주변 위치를 참조할 수 있다. 예를 들면 앞서 언급한 것처럼 CIIP 수행 시 주변 위치를 참조할 수 있다. CIIP는 앞서 설명한 multi-hypothesis prediction일 수 있다. CIIP는 combined inter-picture merge and intra-picture prediction 일 수 있다. 즉, CIIP는 inter prediction(예를 들면 merge mode inter prediction)과 intra prediction을 결합한 prediction 방법일 수 있다.
본 개시의 실시예를 따르면 주변 위치를 참조하여 inter prediction과 intra prediction을 결합하는 것이 가능하다. 예를 들면 주변 위치를 참조하여 inter prediction 대 intra prediction의 비율을 결정하는 것이 가능하다. 또는 주변 위치를 참조하여 inter prediction과 intra prediction을 결합할 때 weighting을 결정하는 것이 가능하다. 또는 주변 위치를 참조하여 inter prediction과 intra prediction을 weighted sum(weighted average) 할 때 weighting을 결정하는 것이 가능하다.
본 개시의 실시예를 따르면 참조하는 주변 위치는 NbA와 NbB를 포함할 수 있다. NbA와 NbB의 좌표는 각각 (xNbA, yNbA), (xNbB, yNbB) 일 수 있다.
또한 NbA는 현재 block의 left 위치일 수 있다. 더 구체적으로 현재 block의 top-left 좌표가 (xCb, yCb)이고, 현재 block의 width, height가 각각 cbWidth, cbHeight인 경우, NbA는 (xCb - 1, yCb + cbHeight - 1) 일 수 있다. 현재 block의 top-left 좌표 (xCb, yCb)는 luma sample을 기준으로 한 값일 수 있다. 또는 현재 block의 top-left 좌표 (xCb, yCb)는 현재 picture의 top-left luma sample에 대한 현재 luma coding block의 top-left sample luma 위치일 수 있다. 또한 상기 cbWidth, cbHeight는 해당 color component를 기준으로 한 값일 수 있다. 상기 설명한 좌표는 luma component(luma block)에 대한 것일 수 있다. 예를 들면 cbWidth, cbHeight는 luma component를 기준으로 한 값일 수 있다.
또한 NbB는 현재 block의 above 위치일 수 있다. 더 구체적으로 현재 block의 top-left 좌표가 (xCb, yCb)이고, 현재 block의 width, height가 각각 cbWidth, cbHeight인 경우, NbB는 (xCb + cbWidth - 1, yCb - 1) 일 수 있다. 현재 block의 top-left 좌표 (xCb, yCb)는 luma sample을 기준으로 한 값일 수 있다. 또는 현재 block의 top-left 좌표 (xCb, yCb)는 현재 picture의 top-left luma sample에 대한 현재 luma coding block의 top-left sample luma 위치일 수 있다. 또한 상기 cbWidth, cbHeight는 해당 color component를 기준으로 한 값일 수 있다. 상기 설명한 좌표는 luma component(luma block)에 대한 것일 수 있다. 예를 들면 cbWidth, cbHeight는 luma component를 기준으로 한 값일 수 있다.
도 29를 참조하면 상단에 luma block이라고 표시한 block에 대하여 top-left, NbA의 좌표, NbB의 좌표 등을 표기하고 있다.
또한 NbA는 현재 block의 left 위치일 수 있다. 더 구체적으로 현재 block의 top-left 좌표가 (xCb, yCb)이고, 현재 block의 width, height가 각각 cbWidth, cbHeight인 경우, NbA는 (xCb - 1, yCb + 2* cbHeight - 1) 일 수 있다. 현재 block의 top-left 좌표 (xCb, yCb)는 luma sample을 기준으로 한 값일 수 있다. 또는 현재 block의 top-left 좌표 (xCb, yCb)는 현재 picture의 top-left luma sample에 대한 현재 luma coding block의 top-left sample luma 위치일 수 있다. 또한 상기 cbWidth, cbHeight는 해당 color component를 기준으로 한 값일 수 있다. 상기 설명한 좌표는 chroma component(chroma block)에 대한 것일 수 있다. 예를 들면 cbWidth, cbHeight는 chroma component를 기준으로 한 값일 수 있다. 또한 이 좌표는 4:2:0 format인 경우에 해당할 수 있다.
또한 NbB는 현재 block의 above 위치일 수 있다. 더 구체적으로 현재 block의 top-left 좌표가 (xCb, yCb)이고, 현재 block의 width, height가 각각 cbWidth, cbHeight인 경우, NbB는 (xCb + 2 * cbWidth - 1, yCb - 1) 일 수 있다. 현재 block의 top-left 좌표 (xCb, yCb)는 luma sample을 기준으로 한 값일 수 있다. 또는 현재 block의 top-left 좌표 (xCb, yCb)는 현재 picture의 top-left luma sample에 대한 현재 luma coding block의 top-left sample luma 위치일 수 있다. 또한 상기 cbWidth, cbHeight는 해당 color component를 기준으로 한 값일 수 있다. 상기 설명한 좌표는 chroma component(chroma block)에 대한 것일 수 있다. 예를 들면 cbWidth, cbHeight는 chroma component를 기준으로 한 값일 수 있다. 또한 이 좌표는 4:2:0 format 또는 4:2:2 format인 경우에 해당할 수 있다.
도 29를 참조하면 하단에 chroma block이라고 표시한 block에 대하여 top-left, NbA의 좌표, NbB의 좌표 등을 표기하고 있다.
도 30은 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 30의 실시예는 두 개 이상의 prediction signal을 결합하는 방법에 관한 것일 수 있다. 또한 도 30의 실시예는 CIIP를 사용하는 경우에 적용할 수 있다. 또한 도 30의 실시예는 도 29에서 설명한 주변 위치 참조 방법을 포함할 수 있다.
도 30의 equation (8-838)을 참조하면 스케일 정보(scallFact)를 다음과 같이 설명할 수 있다.
scallFact = (cIdx == 0) ? 0 : 1
즉, 현재 블록의 색성분에 대한 정보(cIdx)가 0인 경우 스케일 정보(scallFact)를 0으로 설정하고, 현재 블록의 색성분에 대한 정보(cIdx)가 0이 아닌 경우 스케일 정보(scallFact)를 1로 설정할 수 있다. 본 개시의 실시예에서 x?y:z는 x가 true인 경우 또는 x가 0이 아닌 경우 y 값을 나타내고, 그렇지 않은 경우(x가 false인 경우(또는 x가 0인 경우)) z 값을 나타내는 것일 수 있다.
또한 참조하는 주변 위치 NbA와 NbB의 좌표인 (xNbA, yNbA), (xNbB, yNbB) 를 설정할 수 있다. 도 29에서 설명한 실시예를 따르면 luma component에 대해 (xNbA, yNbA), (xNbB, yNbB)는 각각 (xCb - 1, yCb + cbHeight - 1), (xCb + cbWidth - 1, yCb - 1)이고, 크로마 성분(chroma component)에 대해 (xNbA, yNbA), (xNbB, yNbB)는 각각 (xCb - 1, yCb + 2 * cbHeight - 1), (xCb + 2 * cbWidth - 1, yCb - 1) 일 수 있다. 또한 2^n을 곱하는 연산은 n bit를 left shift하는 것과 같을 수 있다. 예를 들어 2를 곱하는 연산은 1 bit를 left shift하는 것과 같을 수 있다. 또한 x를 n bit left shift하는 것을 “x << n “로 나타낼 수 있다. 또한 2^n로 나누는 연산은 n bit를 right shift하는 것과 같을 수 있다. 또한 2^n로 나누고 소수점 이하를 버리는 연산은 n bit를 right shift하는 것과 같을 수 있다. 예를 들어 2로 나누는 연산은 1 bit를 right shift하는 것과 같을 수 있다. 또한 x를 n bit right shift하는 것을 “x >> n“로 나타낼 수 있다. 따라서 (xCb - 1, yCb + 2 * cbHeight - 1), (xCb + 2 * cbWidth - 1, yCb - 1)를 (xCb - 1, yCb + (cbHeight << 1) - 1), (xCb + (cbWidth<<1) - 1, yCb - 1)로 나타낼 수 있다. 따라서 위에서 설명한 루마 성분(luma component)에 대한 좌표와 크로마 성분(chroma component)에 대한 좌표를 함께 나타내면 다음과 같을 수 있다.
(xNbA, yNbA) = (xCb - 1, yCb + (cbHeight << scallFact) - 1)
(xNbB, yNbB) = (xCb + (cbWidth<<scallFact) - 1, yCb - 1)
여기서 스케일 정보(scallFact)는 앞서 설명한 것처럼 (cIdx == 0) ? 0 : 1 일 수 있다. 이때 cbWidth, cbHeight는 각 color component를 기준으로 나타낸 것일 수 있다. 예를 들어 루마 성분(luma component)를 기준으로 한 width, height가 각각 cbWidthL, cbHeightL 일 때 루마 성분(luma component)에 대한 weighted sample prediction process를 수행할 때 cbWidth, cbHeight는 각각 cbWidthL, cbHeightL일 수 있다. 또한 루마 성분(luma component)를 기준으로 한 width, height가 각각 cbWidthL, cbHeightL 일 때 크로마 성분(chroma component)에 대한 weighted sample prediction process를 수행할 때 cbWidth, cbHeight는 각각 cbWidthL/SubWidthC, cbHeightL/SubHeightC일 수 있다.
또한 일 실시예를 따르면 주변 위치를 참조하여 해당 위치의 예측 모드(prediction mode)를 판단할 수 있다. 예를 들면 예측 모드(prediction mode)가 인트라 예측(intra prediction)인지를 판단할 수 있다. 또한 예측 모드(prediction mode)는 CuPredMode에 의하여 지시될 수 있다. CuPredMode가 MODE_INTRA인 경우 인트라 예측(intra prediction)을 사용하는 것일 수 있다. 또한 CuPredMode 값은 MODE_INTRA, MODE_INTER, MODE_IBC, MODE_PLT인 것이 가능하다. CuPredMode가 MODE_INTER인 경우 인트라 예측(inter prediction)을 사용하는 것일 수 있다. 또한 CuPredMode가 MODE_IBC인 경우 intra block copy(IBC)를 사용하는 것일 수 있다. 또한 CuPredMode가 MODE_PLT인 경우 palette mode를 사용하는 것일 수 있다. 또한 CuPredMode는 channel type(chType), 위치에 따라 나타내어질 수 있다. 예를 들면 CuPredMode[chType][x][y]로 나타내질 수 있고, 이 값은 (x, y) 위치에서 channel type chType에 대한 CuPredMode 값일 수 있다. 또한 chType은 tree type에 기초한 것일 수 있다. 예를 들어 tree type(treeType)은 SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA 등의 값으로 설정될 수 있다. SINGLE_TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 공유되는 부분이 있을 수 있다. 예를 들면 SINGLE_TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 동일할 수 있다. 또는 SINGLE_TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 동일하거나 일부 동일할 수 있다. 또는 SINGLE_TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 같은 syntax element 값에 의해 수행될 수 있다. 또한 DUAL TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 독립적일 수 있다. 또는 DUAL TREE인 경우 luma 성분과 chroma 성분의 block partitioning이 서로 다른 syntax element 값에 의해 수행될 수 있다. 또한 DUAL TREE인 경우 treeType 값은 DUAL_TREE_LUMA 또는 DUAL_TREE_CHROMA일 수 있다. 만약 treeType이 DUAL_TREE_LUMA인 경우 DUAL TREE를 사용하며 luma 성분에 대한 process임을 나타낼 수 있다. 만약 treeType이 DUAL_TREE_CHROMA인 경우 DUAL TREE를 사용하며 chroma 성분에 대한 process임을 나타낼 수 있다. 또한 chType은 tree type이 DUAL_TREE_CHROMA인지에 기초해서 결정될 수 있다. 예를 들어 chType은 treeType이 DUAL_TREE_CHROMA인 경우 1로 설정되고, treeType이 DUAL_TREE_CHROMA가 아닌 경우 0로 설정될 수 있다. 따라서 도 30을 참조하면 CuPredMode[0][xNbX][yNbY] 값을 판단할 수 있다. X는 A와 B로 대체될 수 있다. 즉, NbA, NbB 위치에 대한 CuPredMode 값을 판단할 수 있다.
또한 주변 위치에 대한 prediction mode를 판단한 것을 기초로 isIntraCodedNeighbourX 값을 설정할 수 있다. 예를 들어 주변 위치에 대한 CuPredMode가 MODE_INTRA인지 여부에 따라 isIntraCodedNeighbourX 값을 설정할 수 있다. 만약 주변 위치에 대한 CuPredMode가 MODE_INTRA인 경우 isIntraCodedNeighbourX 값을 TRUE로 설정하고, 주변 위치에 대한 CuPredMode가 MODE_INTRA가 아닌 경우 isIntraCodedNeighbourX 값을 FALSE로 설정할 수 있다. 위에 설명했고, 아래에 설명할 본 개시에서 X는 A or B 등으로 대체될 수 있다. 또한 X라고 쓰여있는 것은 X 위치에 해당하는 것을 나타낼 수 있다.
또한 일 실시예를 따르면 주변 위치를 참조하여 해당 위치가 이용 가능한지 판단할 수 있다. 해당 위치가 이용 가능한지 여부를 availableX로 설정할 수 있다. 또한 availableX에 기초하여 isIntraCodedNeighbourX를 설정할 수 있다. 예를 들어 availableX가 TRUE인 경우 isIntraCodedNeighbourX를 TRUE로 설정하고, 예를 들어 availableX가 FALSE인 경우 isIntraCodedNeighbourX를 FALSE로 설정할 수 있다. 도 30을 참조하면 해당 위치가 이용 가능한지는 “The derivation process for neighbouring block availability”에 의해 판단될 수 있다. 또한 해당 위치가 이용 가능한지는 해당 위치가 현재 picture 안쪽에 있는지에 기초하여 판단할 수 있다. 해당 위치가 (xNbY, yNbY)인 경우 xNbY 또는 yNbY가 0보다 작은 경우 현재 picture를 벗어난 것이고 availableX가 FALSE로 설정될 수 있다. 또한 xNbY가 picture width 이상인 경우 현재 picture를 벗어난 것이고 availableX가 FALSE로 설정될 수 있다. Picture width는 pic_width_in_luma_samples에 의해 나타내질 수 있다. 또한 yNbY가 picture height 이상인 경우 현재 picture를 벗어난 것이고 availableX가 FALSE로 설정될 수 있다. Picture height는 pic_height_in_luma_samples에 의해 나타내질 수 있다. 또한 해당 위치가 현재 block과 다른 brick 또는 다른 slice에 있는 경우 availableX가 FALSE로 설정될 수 있다. 또한 해당 위치의 reconstruction이 완료되지 않은 경우 availableX가 FALSE로 설정될 수 있다. Reconstruction 완료 여부는 IsAvailable[cIdx][xNbY][yNbY]에 의해 나타내질 수 있다. 따라서 정리하면 아래 조건 중 하나를 만족시키는 경우 availableX를 FALSE로 설정하고, 그렇지 않은 경우(아래 조건을 모두 만족시키지 않는 경우) availableX를 TRUE로 설정할 수 있다.
조건 1: xNbY < 0
조건 2: yNbY < 0
조건 3: xNbY >= pic_width_in_luma_samples
조건 4: yNbY >= pic_height_in_luma_samples
조건 5: IsAvailable[cIdx][xNbY][yNbY] == FALSE
조건 6: 해당 위치(주변 위치 (xNbY, yNbY) 위치)가 현재 block과 다른 brick (또는 다른 slice)에 속한 경우
또한 옵션에 따라 현재 위치와 해당 위치가 같은 CuPredMode인지를 판하여 availableX를 설정할 수 있다.
설명한 두 조건을 결합하여 isIntraCodedNeighbourX를 설정할 수 있다. 예를 들면 다음 조건들을 모두 만족하는 경우 isIntraCodedNeighbourX를 TRUE로 설정하고, 그렇지 않은 경우(다음 조건 중 적어도 하나를 만족시키지 않는 경우) isIntraCodedNeighbourX를 FALSE로 설정할 수 있다.
조건 1: availableX == TRUE
조건 2: CuPredMode[0][xNbX][yNbX] == MODE_INTRA
또한 본 개시의 실시예를 따르면 다수의 코드 정보(isIntraCodedNeighbourX)에 기초하여 CIIP의 weighting을 결정할 수 있다. 예를 들면 다수의 코드 정보(isIntraCodedNeighbourX)에 기초하여 inter prediction과 intra prediction을 결합할 때 weighting을 결정할 수 있다. 예를 들면 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)와 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)에 기초하여 결정할 수 있다. 일 실시예를 따르면 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)와 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)가 모두 TRUE인 경우, 가중치(w)를 3으로 설정할 수 있다. 예를 들면 가중치(w)는 CIIP의 weighting 또는 weighting을 결정하는 값일 수 있다. 또한 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)와 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)가 모두 FALSE인 경우, w를 1으로 설정할 수 있다. 또한 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)와 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB) 중 하나가 FALSE인 경우(둘 중 하나가 TRUE인 경우와 같다.), 가중치(w)를 2로 설정할 수 있다. 즉, 주변 위치가 intra prediction으로 prediction되었는지에 기초하여 또는 주변 위치들이 얼마나 intra prediction으로 prediction되었는지에 기초하여 가중치(w)를 설정하는 것일 수 있다.
또한 가중치(w)는 intra prediction에 해당하는 weighting일 수 있다. 또한 inter prediction에 해당하는 weighting은 가중치(w)에 기초하여 결정될 수 있다. 예를 들면 inter prediction에 해당하는 weighting은 (4-w)일 수 있다. 도 30 equation (8-840)을 참조하면 두 개 이상의 prediction signal을 결합할 때 다음과 같이 할 수 있다.
predSampleComb[x][y] = (w*predSamplesIntra[x][y] + (4-w)*predSamplesInter[x][y] + 2 ) >> 2
여기서 제 2 샘플들(predSamplesIntra), 제 1 샘플들(predSamplesInter)은 prediction signal일 수 있다. 예를 들어 제 2 샘플들(predSamplesIntra), 제 1 샘플들(predSamplesInter)은 각각 intra prediction에 의해 prediction된 prediction signal, inter prediction(예를 들면 merge mode, 더 구체적으로 regular merge mode)에 의해 prediction된 prediction signal일 수 있다. 또한 조합 예측 샘플들(predSampleComb)은 CIIP에서 사용되는 prediction signal일 수 있다.
또한 도 30의 equation (8-840)을 수행하기 전에 결합 전의 prediction signal을 업데이트하는 과정이 포함될 수 있다. 예를 들면 도 30의 equation (8-839)와 같은 과정으로 업데이트할 수 있다. 예를 들면 prediction signal을 업데이트하는 과정은 CIIP의 inter prediction signal을 업데이트하는 과정일 수 있다.
도 31은 본 개시의 일 실시예에 따른 주변 참조 위치를 나타낸 도면이다.
도 29 내지 도 30에서 주변 참조 위치에 대하여 설명하였는데 설명한 위치를 모든 경우(예를 들면 모든 chroma block)에 사용하면 문제가 발생할 수 있고, 이 문제를 도 31에서 설명한다.
도 31의 실시예는 chroma block을 나타내고 있다. 도 29 내지 도 30에서 chroma block에 대해 luma sample을 기준으로한 NbA, NbB 좌표는 각각 (xCb - 1, yCb + 2 * cbHeight - 1), (xCb + 2 * cbWidth - 1, yCb - 1)였다. 그러나 SubWidthC 또는 SubHeightC가 1인 경우 도 29에서 도시한 위치와 다른 도 31에 도시한 위치를 가리킬 수 있다. 위 좌표에서 cbWidth, cbHeight에 2를 곱한 것은 cbWidth, cbHeight는 각 color 성분(이 실시예에서는 chroma 성분)을 기준으로 나타내었고 좌표를 luma 기준으로 나타내기 때문에 4:2:0 인 경우 luma sample 대 chroma sample 개수를 보상하기 위한 것일 수 있다. 즉 luma sample x축 기준 2개에 해당하는 chroma sample 1개이고, luma sample y축 기준 2개에 해당하는 chroma sample 1개인 경우의 좌표를 luma 기준으로 나타내기 위한 것일 수 있다. 따라서 SubWidthC 또는 SubHeightC가 1인 경우 다른 위치를 나타낼 수 있다. 따라서 이렇게 chroma block에 대해 항상 (xCb - 1, yCb + 2 * cbHeight - 1), (xCb + 2 * cbWidth - 1, yCb - 1) 위치를 사용하는 경우, 현재 chroma block에서 멀리 떨어진 위치를 참조하게 될 수 있다. 또한 이 경우 현재 block의 luma block에서 사용하는 상대적인 위치와 chroma block에서 사용하는 상대적인 위치가 일치하지 않을 수 있다. 또한 chroma block에 대해 다른 위치를 참조하게 됨으로써 현재 block과 연관성이 적은 위치를 참조하여 weighting을 설정할 수 있고, 또는 block decoding 순서 상 decoding/reconstruction이 수행되지 않았을 수 있다.
도 31을 참조하면 4:4:4인 경우, 즉 SubWidthC와 SubHeightC가 모두 1인 경우의 위 설명한 luma 기준 좌표의 위치를 도시하고 있다. 실선으로 표시한 chroma block에서 떨어진 위치에 NbA, NbB가 존재할 수 있다.
도 32는 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 32의 실시예는 도 29 내지 도 31에서 설명한 문제를 해결하기 위한 실시예일 수 있다. 또한 앞서 설명한 내용은 생략했을 수 있다.
도 30에서 스케일 정보(scallFact)에 기초하여 주변 위치를 설정하였고, 도 31에서 설명한 것처럼 스케일 정보(scallFact)는 SubWidthC와 SubHeightC가 2인 경우 위치를 변환하기 위한 값이었다.
하지만 앞서 설명한 것처럼 컬러 포멧(color format)에 따라 문제가 발생할 수 있고, 크로마 샘플(chroma sample)대 루마 샘플(luma sample)의 비율은 가로와 세로가 다를 수 있으므로 본 개시의 실시예를 따르면 스케일 정보(scallFact)를 가로(width)와 세로(height)로 분리할 수 있다.
본 개시의 실시예를 따르면 x축의 스케일 정보(scallFactWidth)와 y축의 스케일 정보(scallFactHeight)가 존재할 수 있고, x축의 스케일 정보(scallFactWidth)와 y축의 스케일 정보(scallFactHeight)에 기초하여 주변 위치를 설정할 수 있다. 또한 주변 위치는 luma sample(luma block)을 기준으로 설정한 것일 수 있다.
비디오 신호 처리 장치는 크로마 포멧 정보(chroma_format_idc)에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하는 단계를 수행할 수 있다. 여기서 크로마 포멧 정보(chroma_format_idc)는 Coding Tree Unit, 슬라이스(slice), 타일(tile), 타일 그룹(tile group), 영상(picture), 또는 시퀀스(sequence) 단위 중 하나로 시그날링될 수 있다.
비디오 신호 처리 장치는 도 27에 나타난 표에 기초하여 크로마 포멧 정보(chroma_format_idc)에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득할 수 있다.
비디오 신호 처리 장치는 너비에 관련된 정보(SubWidthC) 또는 현재 블록의 색성분에 대한 정보(cIdx)에 기초하여 x축의 스케일 정보(scallFactWidth)를 획득하는 단계(8-838)를 수행할 수 있다.보다 구체적으로, x축의 스케일 정보(scallFactWidth)는 현재 블록의 색성분에 대한 정보(cIdx) 및 너비에 관련된 정보(SubWidthC)에 기초하여 설정될 수 있다. 예를 들면 현재 블록의 색성분에 대한 정보(cIdx)가 0이거나 너비에 관련된 정보(SubWidthC)가 1인 경우 x축의 스케일 정보(scallFactWidth)를 0으로 설정할 수 있고, 그렇지 않은 경우(현재 블록의 색성분에 대한 정보(cIdx)가 0이 아니고 너비에 관련된 정보(SubWidthC)가 1이 아닌 경우(SubWidthC가 2인 경우)) x축의 스케일 정보(scallFactWidth)를 1로 설정할 수 있다. 도 32 equation (8-838)을 참조하면 다음과 같이 나타낼 수 있다.
scallFactWidth = ( cIdx == 0 || SubWidthC == 1) ? 0 : 1
또한 비디오 신호 처리 장치는 높이에 관련된 정보(SubHeightC) 또는 현재 블록의 색성분에 대한 정보(cIdx)에 기초하여 y축의 스케일 정보(scallFactHeight )를 획득하는 단계(8-839)를 수행할 수 있다.
또한 y축의 스케일 정보(scallFactHeight)는 현재 블록의 색성분에 대한 정보(cIdx) 및 높이에 관련된 정보(SubHeightC)에 기초하여 설정할 수 있다. 예를 들면 현재 블록의 색성분에 대한 정보(cIdx)가 0이거나 높이에 관련된 정보(SubHeightC)가 1인 경우 y축의 스케일 정보(scallFactHeight)를 0으로 설정할 수 있고, 그렇지 않은 경우(현재 블록의 색성분에 대한 정보(cIdx)가 0이 아니고 높이에 관련된 정보(SubHeightC)가 1이 아닌 경우(SubHeightC가 2인 경우)) y축의 스케일 정보(scallFactHeight)를 1로 설정할 수 있다. 도 32 equation (8-839)을 참조하면 다음과 같이 나타낼 수 있다.
scallFactHeight = ( cIdx == 0 || SubHeightC == 1) ? 0 : 1
또한 x축의 스케일 정보(scallFactWidth)에 기초하여 주변 위치의 x 좌표를 나타낼 수 있고, y축의 스케일 정보(scallFactHeight)에 기초하여 주변 위치의 y 좌표를 나타낼 수 있다. 비디오 신호 처리 장치는 y축의 스케일 정보(scallFactHeight)에 기초하여 좌측 블록(NbA)의 위치를 결정하는 단계를 수 행할 수 있다. 또한, 비디오 신호 처리 장치는 x축의 스케일 정보(scallFactWidth)에 기초하여 상측 블록(NbB)의 위치를 결정하는 단계를 수행할 수 있다. 예를 들면 x축의 스케일 정보(scallFactWidth)에 기초하여 상측 블록(NbB)의 좌표를 설정할 수 있다. 예를 들면 y축의 스케일 정보(scallFactHeight)에 기초하여 좌측 블록(NbA)의 좌표를 설정할 수 있다. 또한 앞서 설명한 것처럼 여기서 x축의 스케일 정보(scallFactWidth)에 기초한 것은 너비에 관련된 정보(SubWidthC)에 기초한 것일 수 있고, y축의 스케일 정보(scallFactHeight)에 기초한 것은 높이에 관련된 정보(SubHeightC)에 기초한 것일 수 있다. 예를 들면 주변 위치 좌표는 다음과 같을 수 있다.
(xNbA, yNbA) = (xCb - 1, yCb + (cbHeight << scallFactHeight) - 1)
(xNbB, yNbB) = (xCb + (cbWidth<<scallFactWidth) - 1, yCb - 1)
(xCb, yCb)는 현재 picture의 top-left luma sample에 대한 현재 루마 블록(luma coding block)의 top-left sample luma 위치일 수 있다. cbWidth, cbHeight는 각각 현재 블록의 너비(width), 높이(height)일 수 있다. 이때 xCb, yCb는 앞서 설명한 것처럼 luma sample 기준으로 나타낸 좌표일 수 있다. 또한 cbWidth, cbHeight는 각 color 성분을 기준으로 나타낸 것일 수 있다.
따라서 chroma block이고 SubWidthC가 1인 경우 (xNbB, yNbB) = (xCb + cbWidth - 1, yCb - 1)일 수 있다. 즉, 이 경우 luma block에 대한 NbB 좌표와 chroma block에 대한 NbB 좌표가 같을 수 있다. 또한 chroma block이고 SubHeightC가 1인 경우 (xNbA, yNbA) = (xCb - 1, yCb + cbHeight - 1)일 수 있다. 즉, 이 경우 luma block에 대한 NbA 좌표와 chroma block에 대한 NbA 좌표가 같을 수 있다.
따라서 도 32의 실시예는 4:2:0 format 인 경우에는 도 29 내지 도 30의 실시예와 같은 주변 좌표를 설정하고, 4:2:2 format이나 4:4:4 format인 경우에는 도 29 내지 도 30의 실시예와 다른 주변 좌표를 설정할 수 있다.
비디오 신호 처리 장치는 좌측 블록(NbA) 및 상측 블록(NbB)에 기초하여 가중치(w)를 결정하는 단계를 수행할 수 있다. 도 32는 도 30에서 설명한 것과 유사할 수 있다. 즉 도 32에서 설명한 주변 위치 좌표를 기초로 prediction mode 또는 availability를 판단하고, CIIP의 weighting을 결정할 수 있다. 도 32에 대한 설명 중 도 30과 중복되는 일부 설명은 생략될 수 있다.
도 32를 참조하면, 비디오 신호 처리 장치는 두 조건을 결합하여 코드 정보(isIntraCodedNeighbourX)를 설정할 수 있다. 예를 들면 다음 조건들을 모두 만족하는 경우 코드 정보(isIntraCodedNeighbourX)를 TRUE로 설정하고, 그렇지 않은 경우(다음 조건 중 적어도 하나를 만족시키지 않는 경우) 코드 정보(isIntraCodedNeighbourX)를 FALSE로 설정할 수 있다.
조건 1: availableX == TRUE
조건 2: CuPredMode[0][xNbX][yNbX] == MODE_INTRA
보다 구체적으로, 라인(3210)을 참조하면, 비디오 신호 처리 장치는 좌측 블록이 이용 가능(availableA == TRUE)하고, 좌측 블록의 예측 모드가 인트라 예측(CuPredMode[ 0 ][ xNbA ][ yNbA ] is equal to MODE_INTRA)인 경우, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)를 TRUE로 설정하는 단계를 수행할 수 있다.
또한 비디오 신호 처리 장치는 좌측 블록이 이용 가능하지 않거나, 좌측 블록의 예측 모드가 인트라 예측이 아닌 경우, 좌측 블록에 대한 코드 정보를 FALSE로 설정하는 단계를 수행할 수 있다.
또한 비디오 신호 처리 장치는 상측 블록이 이용 가능(availableB == TRUE)하고, 상측 블록의 예측 모드가 인트라 예측(CuPredMode[ 0 ][ xNbB ][ yNbB ] is equal to MODE_INTRA)인 경우, 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)를 TRUE로 설정하는 단계를 수행할 수 있다.
또한, 비디오 신호 처리 장치는 상측 블록이 이용 가능하지 않거나, 상측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상측 블록에 대한 코드 정보를 FALSE로 설정하는 단계를 수행할 수 있다.
라인(3220)을 참조하면, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA) 및 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)가 모두 TRUE인 경우, 비디오 신호 처리 장치는 가중치(w)를 3으로 결정하는 단계를 수행할 수 있다. 또한, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA) 및 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)가 모두 FALSE인 경우, 비디오 신호 처리 장치는 가중치(w)를 1로 결정하는 단계를 수행할 수 있다. 또한, 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA) 및 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB) 중 하나만 TRUE인 경우, 비디오 신호 처리 장치는 가중치(w)를 2로 결정하는 단계를 수행할 수 있다.
비디오 신호 처리 장치는 현재 블록을 머지 모드로 예측한 제 1 샘플들(predSamplesInter)을 획득하는 단계를 수행할 수 있다. 또한, 비디오 신호 처리 장치는 현재 블록을 인트라 모드로 예측한 제 2 샘플들(predSamplesIntra)을 획득하는 단계를 수행할 수 있다.
비디오 신호 처리 장치는 가중치(w), 제 1 샘플들(predSamplesInter), 및 제 2 샘플들(predSamplesIntra)에 기초하여 현재 블록에 대한 조합 예측 샘플(predSampleComb)을 획득하는 단계(8-841)를 수행할 수 있다. 예를 들어, 비디오 신호 처리 장치는 아래와 같은 식에 기초하여 조합 예측 샘플(predSampleComb)을 획득할 수 있다.
predSampleComb[x][y] = (w*predSamplesIntra[x][y] + (4-w)*predSamplesInter[x][y] + 2 ) >> 2
여기서 predSamplesComb는 조합 예측 샘플을 의미하고, w는 가중치를 의미하고, predSamplesIntra는 제 2 샘플들을 의미하고, predSamplesInter는 제 1 샘플들을 의미하고, [x]는 현재 블록에 포함된 샘플의 x축 좌표를 의미하고, [y]는 현재 블록에 포함된 샘플의 y축 좌표를 의미할 수 있다.
본 개시에서 주변 위치와 주변 위치 좌표는 혼용해서 사용했을 수 있다.
도 33은 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 33의 실시예는 도 32에서 설명한 주변 위치 좌표를 다른 방식으로 표현한 것이다. 따라서 앞서 설명한 것과 중복된 내용은 생략했을 수 있다.
앞서 설명한 것처럼 bit shift를 곱셈으로 표현할 수 있다. 도 32는 bit shift를 이용하여 나타내고, 도 33은 곱셈을 이용하여 나타낸 것일 수 있다.
일 실시예를 따르면 x축의 스케일 정보(scallFactWidth)는 현재 블록의 색성분에 대한 정보(cIdx) 및 너비에 관련된 정보(SubWidthC)에 기초하여 설정할 수 있다. 예를 들면 현재 블록의 색성분에 대한 정보(cIdx)가 0이거나 너비에 관련된 정보(SubWidthC)가 1인 경우 x축의 스케일 정보(scallFactWidth)를 1으로 설정할 수 있고, 그렇지 않은 경우(cIdx가 0이 아니고 너비에 관련된 정보(SubWidthC)가 1이 아닌 경우(SubWidthC가 2인 경우)) x축의 스케일 정보(scallFactWidth)를 2로 설정할 수 있다. 도 33 equation (8-838)을 참조하면 다음과 같이 나타낼 수 있다.
scallFactWidth = ( cIdx == 0 || SubWidthC == 1) ? 1 : 2
또한 y축의 스케일 정보(scallFactHeight)는 현재 블록의 색성분에 대한 정보(cIdx) 및 높이에 관련된 정보(SubHeightC)에 기초하여 설정할 수 있다. 예를 들면 현재 블록의 색성분에 대한 정보(cIdx)가 0이거나 높이에 관련된 정보(SubHeightC)가 1인 경우 y축의 스케일 정보(scallFactHeight)를 1으로 설정할 수 있고, 그렇지 않은 경우(cIdx가 0이 아니고 높이에 관련된 정보(SubHeightC)가 1이 아닌 경우(SubHeightC가 2인 경우)) y축의 스케일 정보(scallFactHeight)를 2로 설정할 수 있다. 도 33 equation (8-839)을 참조하면 다음과 같이 나타낼 수 있다.
scallFactHeight = ( cIdx == 0 || SubHeightC == 1) ? 1 : 2
또한 x축의 스케일 정보(scallFactWidth)에 기초하여 주변 위치의 x 좌표를 나타낼 수 있고, y축의 스케일 정보(scallFactHeight)에 기초하여 주변 위치의 y 좌표를 나타낼 수 있다. 예를 들면 x축의 스케일 정보(scallFactWidth)에 기초하여 NbB의 좌표를 설정할 수 있다. 예를 들면 y축의 스케일 정보(scallFactHeight)에 기초하여 NbA의 좌표를 설정할 수 있다. 또한 앞서 설명한 것처럼 여기서 x축의 스케일 정보(scallFactWidth)에 기초한 것은 SubWidthC에 기초한 것일 수 있고, y축의 스케일 정보(scallFactHeight)에 기초한 것은 SubHeightC에 기초한 것일 수 있다. 예를 들면 주변 위치 좌표는 다음과 같을 수 있다.
(xNbA, yNbA) = (xCb - 1, yCb + (cbHeight * scallFactHeight) - 1)
(xNbB, yNbB) = (xCb + (cbWidth * scallFactWidth) - 1, yCb - 1)
이때 xCb, yCb는 앞서 설명한 것처럼 luma sample 기준으로 나타낸 좌표일 수 있다. 또한 cbWidth, cbHeight는 각 color 성분을 기준으로 나타낸 것일 수 있다.
도 34는 본 개시의 일 실시예에 따른 weighted sample prediction process를 나타낸 도면이다.
도 30, 도 32, 도 33 등의 실시예에서 주변 위치를 참조하여 해당 위치가 이용 가능한지 판단하였다. 이때 색상 성분(color component)를 나타내는 index인 cIdx를 0(luma component)으로 설정하였다. 또한 해당 위치가 이용 가능한지 판단할 때 현재 블록의 색성분에 대한 정보(cIdx)는 해당 위치 cIdx의 reconstruction 완료 여부를 판단할 때 사용할 수 있다. 즉, 해당 위치가 이용 가능한지 판단할 때 cIdx는 IsAvailable[cIdx][xNbY][yNbY] 값을 판단할 때 사용할 수 있다. 그러나 chroma block에 대한 weighted sample prediction process를 수행할 때 cIdx 0에 해당하는 IsAvailable 값을 참조하게 되면 잘못된 판단을 하게될 수 있다. 예를 들어 주변 위치를 포함하는 block의 luma 성분의 reconstruction이 완료되지 않았는데, chroma 성분의 reconstruction이 완료된 경우 cIdx가 0이 아닐 때 IsAvailable[0][xNbY][yNbY]은 FALSE이고, IsAvailable[cIdx][xNbY][yNbY]은 TRUE일 수 있다. 따라서 실제 주변이 이용 가능한데도 불구하고 이용 가능하지 않다고 판단할 수 있는 경우가 발생하는 것이다. 도 34의 실시예에서는 이 문제를 해결하기 위해 주변 위치를 참조하여 해당 위치가 이용 가능한지 판단할 때 현재 coding block의 cIdx를 input으로 사용할 수 있다. 즉, “the derivation process for neighbouring block availability”를 invoke할 때 input인 cIdx를 현재 coding block의 cIdx를 넣을 수 있다.
또한 도 32 내지 도 33에서 설명한 내용은 생략했을 수 있다.
또한 앞서 설명한 주변 위치의 prediction mode를 판단할 때 chType 0에 해당하는 CuPredMode인 CuPredMode[0][xNbX][yNbY]를 참조하였는데, 만약 현재 block에 대한 chType이 일치하지 않는 경우 잘못된 parameter를 참조할 수 있다. 따라서 본 개시의 실시예를 따르면 주변 위치의 prediction mode를 판단할 때 현재 block에 해당하는 chType 값에 해당하는 CuPredMode[chType][xNbX][yNbY]를 참조할 수 있다.
도 35는 본 개시의 일 실시예에 따른 CIIP weight derivation을 나타낸 도면이다.
도 29 내지 도 34에서 설명한 실시예들에서 CIIP weight derivation 관련 내용을 설명하였고, 본 실시예에서 앞서 설명한 내용을 생략했을 수 있다.
또한 도 29 내지 도 34에서 설명한 실시예에서 다수의 색상 성분(color component)에 대해서 상대적으로 같은 위치에 기초하여 CIIP에서 사용하는 weighting을 결정할 수 있었다. 따라서 이것은 크로마 성분(chroma component)에 대하여 루마 성분(luma component)에 대해 설명한 neighboring locations에 기초하여 CIIP에서 사용하는 weighting을 결정할 수 있다는 것을 의미할 수 있다. 또한 따라서 이것은 다수의 color component에 대하여 luma component에 대해 설명한 neighboring locations에 기초하여 CIIP에서 사용하는 weighting을 결정할 수 있다는 것을 의미할 수 있다. 또한 따라서 이것은 다수의 color component에 대하여 동일한 neighboring locations에 기초하여 CIIP에서 사용하는 weighting을 결정할 수 있다는 것을 의미할 수 있다. 또한 이것은 다수의 color component에 대하여 CIIP에서 사용하는 weighting이 같은 것을 의미할 수 있다. 앞서 설명한 것처럼 neighboring locations의 prediction mode를 참조하는 것이기 때문일 수 있다. 또는 color component들에 대하여 상대적으로 동일한 위치의 prediction mode를 동일하기 때문일 수 있다. 더 구체적으로 각 color component에 대한 기설정된 위치에 해당하는 prediction mode가 color component들에 대해 동일한 경우, 다수의 color component에 대하여 CIIP에서 사용하는 weighting이 같은 것이 가능하다. 또한 inter prediction을 사용할 수 있는 경우 각 color component에 대한 기설정된 위치에 해당하는 prediction mode가 color component들에 대해 동일한 것이 가능하다. 또는 P slice 또는 B slice인 경우 각 color component에 대한 기설정된 위치에 해당하는 prediction mode가 color component들에 대해 동일한 것이 가능하다. 이것은 P slice 또는 B slice인 경우 SINGLE_TREE이기 때문일 수 있다.
또한 앞서 설명한 것처럼 상기 luma component에 대해 설명한 neighboring locations는 다음과 같을 수 있다.
(xNbA, yNbA) = (xCb - 1, yCb + cbHeight - 1)
(xNbB, yNbB) = (xCb + cbWidth - 1, yCb - 1)
정리하면 본 개시의 실시예를 따르면 다수의 color component에 대하여 CIIP에서 사용하는 weighting은 동일할 수 있다. 더 구체적으로 luma component에 대하여 derive한 CIIP에서 사용하는 weighting을 chroma component에 대하여 사용하는 것이 가능하다. 이것은 다수의 color component에 대하여 weighting을 derivation하는 과정을 여러 번 수행하는 것을 방지하기 위한 것일 수 있다. 또한 chroma component에 대해서도 상기 (xNbA, yNbA), (xNbB, yNbB)를 기초로 한 가중치(weighting value)를 사용할 수 있다. 이때 상기 (xNbA, yNbA), (xNbB, yNbB)에서의 cbHeight, cbWidth는 luma sample을 기초로 한 값일 수 있다. 또한 상기 (xNbA, yNbA), (xNbB, yNbB)에서의 xCb, yCb 값은 luma sample을 기초로 한 값일 수 있다. 즉, chroma component에 대해서도 luma sample을 기준으로 한 width, height, 좌표에 기초한 neighboring locations에 기초하여 결정한 가중치(weighting value)를 CIIP에 사용하는 것이 가능하다.
도 35를 참조하면 derive한 가중치(weighting value)를 각 color component, 즉 Y, Cb, Cr에 대해 모두 사용하고 있다. 즉, 동일한 가중치(weighting value)를 모든 color component에 대한 CIIP에 사용하고 있다.
도 36은 본 개시의 일 실시예에 따른 CIIP 과정을 나타낸 도면이다.
도 36의 실시예는 도 35에서 설명한 실시예와 관련있을 수 있다. 또한 도 36의 실시예는 도 35에서 설명한 실시예의 구조를 나타낼 수 있다. 또한 도 36의 실시예에서 도 29 내지 도 35에서 설명한 내용은 생략했을 수 있다.
도 35에서 설명한 것처럼 각 색상 성분(color component)에 대하여 CIIP를 사용하는 경우 같은 가중치(weighting value)를 사용하는 것이 가능하다.
도 36을 참조하면 ciip_flag는 CIIP 사용 여부를 나타내는 시그날링일 수 있다. 만약 CIIP를 사용하는 경우 도 36에 언급된 process를 진행할 수 있다. 만약 CIIP를 사용하는 경우 weighting value derivation process를 수행하는 것이 가능하다. 이때 weighting value derivation process는 color component와 상관 없이 수행하는 것이 가능하다. Weighting value derivation process는 도 30에서 설명한 process를 포함할 수 있다. 이때 neighboring locations는 color component와 상관없이 정해지는 것이 가능하다. 예를 들면 아래와 같은 neighboring locations를 사용할 수 있다.
(xNbA, yNbA) = (xCb - 1, yCb + cbHeight - 1)
(xNbB, yNbB) = (xCb + cbWidth - 1, yCb - 1)
또한 도 36을 참조하면 weighting value derivation process의 input인 xCb, yCb, cbWidth, cbHeight와 상기 neighboring locations의 xCb, yCb, cbWidth, cbHeight는 현재 수행하고 있는 color component와 상관없이 기설정된 component 기준일 수 있다. 예를 들면 luma sample 기준의 값일 수 있다. 즉, chroma component에 대해 weighting value derivation process를 수행할 때 luma sample 기준의 xCb, yCb, cbWidth, cbHeight에 기초할 수 있다. 더 구체적으로 chroma component에 대해 weighting value derivation process를 수행할 때 luma sample 기준의 xCb, yCb, cbWidth, cbHeight에 기초하여 neighboring locations를 설정하고, 이에 기초하여 가중치(weighting value)를 결정할 수 있다.
Weighting value derivation process에 기초하여 weighting value w를 설정할 수 있다. 도 36의 weighting value derivation process는 도 30에서 설명한 가중치(w) 값을 설정하는 과정일 수 있다. 이때 설명한 것처럼 color component와 상관없는 neighboring locations를 사용할 수 있다.
또한 도 36을 참조하면 CIIP를 사용하는 경우 general intra sample prediction process 및 weighted sample prediction process를 수행할 수 있다. 또한 이것은 각 color component들에 대하여 수행하는 것이 가능하다. Weighted sample prediction process는 도 30에서 설명한 weighting을 사용해서 inter prediction과 intra prediction을 결합하는 과정을 포함할 수 있다. 예를 들면 weighted sample prediction process는 도 30 equation (8-840)을 이용하여 결합하는 과정을 포함할 수 있다. 또한 본 개시의 실시예를 따르면 weighted sample prediction process는 가중치(weighting value)에 기초하여 수행할 수 있고, 다수의 color component들에 대해 동일한 가중치(weighting value)를 사용하는 것이 가능하다. 또한 weighted sample prediction에서 사용하는 가중치(weighting value)는 앞서 설명한 weighting value derivation process에 기초해 결정된 weighting value w일 수 있다.
또한 도 36을 참조하면 weighted sample prediction process의 input인 coding block width, height는 각 color component를 기준으로 나타낸 값일 수 있다. 도 36을 참조하면 luma component인 경우(cIdx가 0인 경우) width, height는 각각 cbWidth, cbHeight이고, chroma component인 경우(cIdx가 0이 아닌 경우; cIdx가 1 또는 2인 경우) width height는 각각 cbWidth/SubWidthC, cbHeight/SubHeightC 일 수 있다.
즉, 어떤 color component에 대해 다른 color component에 기초하여 결정한 가중치(weighting value)를 이용하고, 상기 어떤 color component를 기준으로 한 width, height를 이용하여 weighted sample prediction process를 수행할 수 있다. 또는 어떤 color component에 대해 다른 color component를 기준으로 한 width, height에 기초하여 결정한 가중치(weighting value)를 이용하고, 상기 어떤 color component를 기준으로 한 width, height를 이용하여 weighted sample prediction process를 수행할 수 있다. 이때 상기 어떤 color component는 chroma component이고, 상기 다른 color component는 luma component인 것이 가능하다. 또다른 실시예로 상기 어떤 color component는 luma component이고, 상기 다른 color component는 chroma component인 것이 가능하다.
이것은 구현을 간단하게 하기 위한 것일 수 있다. 예를 들어 도 36에 나타낸 과정이 각 color component 별로 수행될 수 있는데 weighting value derivation process를 color component와 상관없이 수행하게 함으로써 weighting value derivation process 구현을 간단하게 할 수 있다. 또는 이것은 반복되는 process를 수행하지 않기 위한 것일 수도 있다.
도 37은 본 개시의 일 실시예에 따른 MV 및 MVD 범위를 나타낸 도면이다.
본 개시의 실시예를 따르면 MVD 생성 방법 혹은 MVD 결정 방법이 다수 존재할 수 있다. MVD는 앞서 설명한 모션 벡터 차분 값 (Motion vector difference)일 수 있다. 또한 모선 벡터(MV) 생성 방법 혹은 MV 결정 방법이 다수 존재할 수 있다.
예를 들어 MVD 결정 방법은 syntax element의 값으로부터 결정하는 방법을 포함할 수 있다. 예를 들면 도 9에서 설명한 것과 같은 syntax element를 기초로 MVD를 결정할 수 있다. 이에 대해 도 40에서 추가적으로 설명한다.
또한 MVD 결정 방법은 MMVD (merge with MVD) mode 사용 시에 결정하는 방법을 포함할 수 있다. 예를 들면 merge mode를 사용할 때에 사용하는 MVD가 존재할 수 있다. 이에 대해 도 38 내지 도 39에서 추가적으로 설명한다.
본 개시의 실시예에서 MV 또는 MVD는 affine motion compensation을 수행하기 위한 control point motion vector(CPMV)에 대한 것을 포함할 수 있다. 즉, MV, MVD는 각각 CPMV, CPMVD를 포함할 수 있다.
본 개시의 일 실시예를 따르면 MV 또는 MVD가 나타낼 수 있는 범위가 제한적일 수 있다. 이에 따라 제한된 자원, 제한된 bit 수를 이용하여 MV 또는 MVD를 표현하거나 저장하고 MV 또는 MVD를 이용한 연산을 하는 것이 가능할 수 있다. 본 개시의 실시예에서 MV 또는 MVD가 나타낼 수 있는 범위를 각각 MV range, MVD range라고 할 수 있다.
일 실시예를 따르면 MV range 또는 MVD range는 -2^N 부터 (2^N - 1) 까지일 수 있다. 이때 -2^N과 (2^N - 1)를 포함한 범위일 수 있다. 또 다른 실시예를 따르면 MV range 또는 MVD range는 (-2^N + 1) 부터 2^N 까지일 수 있다. 이때 (-2^N + 1)과 2^N을 포함한 범위일 수 있다. 이 실시예들에서 N은 정수, 예를 들면 양의 정수일 수 있다. 더 구체적으로 N은 15 또는 17일 수 있다. 또한 이때 MV range 또는 MVD range를 N+1 bit를 이용해서 나타내는 것이 가능할 수 있다.
또한 설명한 제한적인 MV range 또는 제한적인 MVD range를 구현하기 위해 clipping, modulus 연산을 수행하는 것이 가능하다. 예를 들어 어떤 단계(예를 들면 최종 단계 전)의 MV 또는 MVD를 clipping하거나 modulus해서 MV range 또는 MVD range 안의 값이 도출되도록 할 수 있다. 또는 제한적인 MV range 또는 제한적인 MVD range를 구현하기 위해 MV 또는 MVD를 나타내는 syntax element의 binarization 표현 범위를 제한할 수 있다.
본 개시의 일 실시예를 따르면 MV range와 MVD range가 다를 수 있다. 또한 MVD 결정 방법이 다수 존재하고, MVD1과 MVD2가 서로 다른 방법에 의해 결정된 MVD일 수 있다. 본 개시의 또다른 실시예를 따르면 MVD1 range와 MVD2 range는 다를 수 있다. 서로 다른 range를 사용하는 것은 서로 다른 자원이나 서로 다른 bit 수를 사용하기 위한 것일 수 있고, 이에 따라 어떤 요소에 대해 불필요하게 넓은 range를 나타낼 수 있게 하지 않을 수 있다.
일 실시예를 따르면 MVD1은 도 40 또는 도 9에서 설명하는 MVD일 수 있다. 또는 MVD1은 AMVP, inter mode, affine inter mode의 MVD일 수 있다. 또는 MVD1은 merge mode를 사용하지 않을 때의 MVD일 수 있다. Merge mode 사용 여부는 merge_flag 또는 general_merge_flag에 의해 나타내질 수 있다. 예를 들어 merge_flag 또는 general_merge_flag가 1인 경우 merge mode를 사용하는 것이고, 0인 경우 merge mode를 사용하지 않는 것일 수 있다.
일 실시예를 따르면 MVD2는 도 38 내지 도 39에서 설명하는 MVD일 수 있다. 또는 MVD2는 MMVD mode의 MVD일 수 있다. 또는 MVD2는 merge mode를 사용할 때의 MVD일 수 있다.
일 실시예를 따르면 MV는 최종 motion compensation 또는 prediction에 사용되는 MV일 수 있다. 또는 MV는 candidate list에 들어가는 MV일 수 있다. 또는 MV는 collocated motion vector (Temporal motion vector)일 수 있다. 또는 MV는 MVP에 MVD를 더한 값일 수 있다. 또는 MV는 CPMV일 수 있다. 또는 MV는 CPMVP에 CPMVD를 더한 값일 수 있다. 또는 MV는 affine MC에서 각 subblock에 대한 MV일 수 있다. 상기 subblock에 대한 MV는 CPMV로부터 도출된 MV일 수 있다. 또는 MV는 MMVD의 MV일 수 있다.
본 개시의 실시예를 따르면 MVD2 range는 MVD1 range 또는 MV range보다 좁을 수 있다. 또한 MVD1 range와 MV range는 같을 수 있다. 일 실시예를 따르면 MVD1 range와 MV range는 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다. 또한 MVD2 range는 -2^15 부터 (2^15 - 1) 까지(inclusive)일 수 있다.
도 37을 참조하면 점선으로 나타낸 사각형은 MV range 또는 MVD range를 나타내고 있다. 또한 안쪽 사각형은 MVD2 range를 나타낸 것일 수 있다. 바깥쪽 사각형은 MVD1 range 또는 MV range를 나타낸 것일 수 있다. 즉, MVD2 range는 MVD1 range 또는 MV range와 다를 수 있다. 도면의 range는 도면의 점으로부터 나타낼 수 있는 vector 범위를 나타낸 것일 수 있다. 예를 들면 앞서 설명한 것처럼 MVD2 range는 -2^15 부터 (2^15 - 1) 까지(inclusive)일 수 있다. 또한 MVD1 range 또는 MV range는 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다. 만약 MV 또는 MVD가 x-pel 단위의 값인 경우 MV 또는 MVD가 나타내는 값은 실제로 (MV*x) 또는 (MVD*x) 픽셀일 수 있다. 예를 들어 1/16-pel 단위의 값인 경우 (MV/16) 또는 (MVD/16) 픽셀을 나타내는 것일 수 있다. 이 실시예에서 MVD2 range의 경우 최대 절대값이 32768으로 이것이 만약 1/16-pel 단위의 값인 경우 (MVD2 값)/16 의 값이 최대 2048 pixel이 된다. 따라서 8K picture를 모두 커버할 수 없게 된다. MVD1 range 또는 MV range의 경우 최대 절대값이 131072으로 1/16-pel 단위를 사용할 때 최대 8192 pixel을 나타낼 수 있다. 따라서 8K picture를 모두 커버할 수 있다. 8K resolution은 가로 길이(또는 가로 또는 세로 중 긴 것의 길이)가 7680 pixel 또는 8192 pixel인 resolution을 나타낼 수 있다. 예를 들어 7680x4320 등의 picture가 8K resolution일 수 있다.
도 38은 본 개시의 일 실시예에 따른 MMVD를 나타낸 도면이다.
본 개시의 실시예를 따르면 MMVD는 merge mode with MVD, merge with MVD로 merge mode에 MVD를 사용하는 방법일 수 있다. 예를 들어 merge candidate와 MVD를 기초로 MV를 생성할 수 있다. 또한 MMVD의 MVD는 도 9 또는 도 40의 MVD, 또는 앞서 설명한 MVD1에 비해 나타낼 수 있는 범위가 한정적일 수 있다. 예를 들어 MMVD의 MVD는 horizontal 성분, vertical 성분 중 하나만 존재하는 것이 가능하다. 또한 MMVD의 MVD가 나타낼 수 있는 값의 절대값들은 서로 등간격이 아닐 수 있다. 도 38 (a)는 중심의 점선 모양 점으로부터 MMVD의 MVD가 나타낼 수 있는 point들을 나타내고 있다.
도 38 (b)는 MMVD 관련 syntax를 나타내고 있다. 일 실시예를 따르면 MMVD 사용 가능 여부를 나타내는 상위 레벨 시그날링이 존재할 수 있다. 여기서 시그날링이라는 것은 비트스트림으로부터 파싱함을 나타낼 수 있다. 상위 레벨은 현재 block, 현재 coding block을 포함하는 단위일 수 있고, 예를 들면 slice, sequence, tile, tile group, CTU 등일 수 있다. MMVD 사용 가능 여부를 나타내는 상위 레벨 시그날링은 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)일 수 있다. 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)가 1인 경우, MMVD가 활성화됨을 나타내고, 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)가 0인 경우, MMVD가 활성화되지 않음을 나타낼 수 있다. 하지만 이에 한정되는 것은 아니며, 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag) 0인 경우, MMVD가 활성화됨을 나타내고, 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)가 1인 경우, MMVD가 활성화되지 않음을 나타낼 수 있다.
만약 MMVD 사용 가능 여부를 나타내는 상위 레벨 시그날링인 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)가 1인 경우 추가적인 시그날링을 통해 현재 블록에 MMVD 사용 여부를 나타내는 것이 가능하다. 즉, 비디오 신호 처리 장치는 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하는 단계를 수행할 수 있다. MMVD 사용 여부를 나타내는 시그날링은 MMVD 머지 정보(mmvd_merge_flag)일 수 있다. MMVD 머지 정보(mmvd_merge_flag)가 1인 경우, 현재 블록에 대하여 MMVD가 사용됨을 의미할 수 있다. MMVD 머지 정보(mmvd_merge_flag)가 0인 경우, 현재 블록에 대하여 MMVD가 사용되지 않음을 의미할 수 있다. 하지만 이에 한정되는 것은 아니며, MMVD 머지 정보(mmvd_merge_flag)가 0인 경우 현재 블록에 대하여 MMVD가 사용됨을 의미하고, MMVD 머지 정보(mmvd_merge_flag)가 1인 경우 현재 블록에 대하여 MMVD가 사용되지 않음을 의미할 수 있다.
만약 MMVD 머지 정보(mmvd_merge_flag)가 1(사용하는 것을 나타내는 값)인 경우 MMVD 관련 syntax element를 parsing할 수 있다. MMVD 관련 syntax element는 mmvd_cand_flag, MMVD의 거리와 관련된 정보(mmvd_distance_idx), MMVD의 방향과 관련된 정보(mmvd_direction_idx) 중 적어도 하나를 포함할 수 있다.
일 실시예로 mmvd_cand_flag는 MMVD mode에서 사용할 MVP를 나타낼 수 있다. 또는 mmvd_cand_flag는 MMVD mode에서 사용할 merge candidate를 지시할 수 있다. 또한 MMVD의 MVD는 MMVD의 거리와 관련된 정보(mmvd_distance_idx)와 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 기초로 결정될 수 있다. 여기서 MMVD의 MVD는 MVD에 대한 정보(mMvdLX)를 나타낼 수 있다. 예를 들어 MMVD의 거리와 관련된 정보(mmvd_distance_idx)는 MMVD의 MVD의 절대값과 관련된 값을 나타내고, MMVD의 방향과 관련된 정보(mmvd_direction_idx)는 MMVD의 MVD의 방향과 관련된 값을 나타낼 수 있다.
도 39는 본 개시의 일 실시예에 따른 MMVD의 MVD derivation을 나타낸 도면이다.
도 39 왼쪽을 참조하면 비디오 신호 처리 장치는 MMVD 머지 정보(mmvd_merge_flag)에 기초하여, 현재 블록에 MMVD가 사용되는지 여부를 결정할 수 있다. 또한 현재 블록에 MMVD를 사용하는 경우 MVD derivation 과정을 수행할 수 있다. MVD derivation 과정은 도 39 오른쪽에 나타낸 8.5.2.7일 수 있다. 또한 8.5.2.7의 output인 MVD는 MMVD의 MVD일 수 있고, MMVD에 대한 정보(mMvdLX)일 수 있다. 이미 설명한 바와 같이 MMVD에 대한 정보(mMvdLX)는 MMVD의 거리와 관련된 정보(mmvd_distance_idx)와 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 기초로 획득될 수 있다. 여기서 X는 0, 1 등으로 대체될 수 있고, 각각 reference list L0, reference list L1에 해당하는 것일 수 있다.
또한 도 39에 나타낸 것처럼 MMVD의 MVD 또는 MMVD에 대한 정보(mMvdLX)를 앞의 과정에서 도출한 모션 벡터(MV)인 mvLX에 더할 수 있다((8-281), (8-282)). 여기서 X는 0, 1 등으로 대체될 수 있고, 각각 제 1 참조 리스트(reference list L0), 제 2 참조 리스트(reference list L1)에 해당하는 것일 수 있다. 또한 여기서 MMVD의 MVD는 MMVD에 대한 정보(mMvdLX)를 나타낼 수 있다. 또한 비디오 신호 처리 장치는 MVD를 더한 수정된 모션 벡터(mvLX)의 range를 제한하는 과정을 수행할 수 있다. 예를 들면 clipping을 수행할 수 있다((8-283), (8-284)). 예를 들면 앞서 설명한 MV range로 제한할 수 있다. 예를 들면 -2^17 부터 (2^17 - 1) 까지(inclusive)로 제한할 수 있다.
본 개시에서 Clip3(x, y, z)은 clipping을 나타낸 것일 수 있다. 예를 들어 Clip3(x, y, z)의 결과는 1) z<x인 경우 x, 2) z>y인 경우 y, 3) 그 외의 경우 z가 될 수 있다. 따라서 Clip3(x, y, z)의 결과 result의 범위는 x<=result<=y 일 수 있다.
본 실시예에서 mvLX[0][0][comp], mMvdLX[comp]에서 comp는 x-component 또는 y-component를 나타낸 것일 수 있다. 예를 들면 각각 horizontal 성분, vertical 성분을 나타낸 것일 수 있다.
또한, 비디오 신호 처리 장치는 수정된 모션 벡터(mvLX)에 기초하여 현재 블록을 예측할 수 있다. 또한 비디오 신호 처리 장치는 수정된 모션 벡터(mvLX)에 기초하여 현재 블록을 복원할 수 있다. 이미 설명한 바와 같이 수정된 모션 벡터(mvLX)는 MMVD에 대한 정보(mMvdLX)를 모션 벡터(MV)인 mvLX에 더한 값일 수 있다.
또한 MMVD의 MVD derivation 과정은 도 39의 오른쪽과 같을 수 있다. 도면의 MMVD 오프셋(MmvdOffset)은 앞서 설명한 MMVD 관련 syntax element에 기초한 값일 수 있다. 예를 들면 MMVD 오프셋(MmvdOffset)은 MMVD의 거리와 관련된 정보(mmvd_distance_idx), MMVD의 방향과 관련된 정보(mmvd_direction_idx)에 기초한 값일 수 있다. 정리하사면 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx) 중 적어도 하나에 기초하여 MMVD 오프셋(MmvdOffset)이 획득될 수 있다. 또한 MMVD 오프셋(MmvdOffset)에 기초하여 MMVD에 대한 정보(mMvdLX)가 도출될 수 있다.
일 실시예를 따르면 bi prediction인 경우(predFlagLX가 어떤 reference list를 사용하는지 지시할 수 있고, X는 0, 1로 대체될 수 있고, L0 및 L1은 각각 제 1 참조 리스트(reference list L0) 및 제 2 참조 리스트(reference list L1)에 해당할 수 있다.) POC(picture order count)에 기초하여 MMVD의 MVD로 MMVD 오프셋(MmvdOffset)을 그대로 사용할지, MMVD 오프셋(MmvdOffset)에 기초하여 연산한 값을 사용할지, 어떤 reference list에 대한 값에 MMVD 오프셋(MmvdOffset)을 그대로 사용할지, 어떤 reference list에 대한 값에 MMVD 오프셋(MmvdOffset)에 기초하여 연산한 값을 사용할지 등을 결정할 수 있다.
일 실시예를 따르면 제 1 참조 리스트(reference list L0)와 제 2 참조 리스트(reference list L1) 모두에 대한 MVD를 획득하기 위하여 MMVD 오프셋(MmvdOffset)을 사용하는 경우가 있을 수 있다((8-350) 내지 (8-353)). 예를 들면 제 1 POC 차이(currPocDiffL0)와 제 2 POC 차이(currPocDiffL1)가 같은 경우일 수 있다. POC 차이(currPocDiffLX)는 현재 picture의 POC와 reference list LX의 reference picture의 POC간의 차이일 수 있고, X는 0과 1로 대체될 수 있다. 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)는 각각 도 39의 (8-348), (8-349)에 의해 결정될 수 있다. DiffPicOrderCnt는 다음과 같이 연산할 수 있다.
DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) - PicOrderCnt( picB )
PicOrderCnt( picX )는 picture picX의 picture order count 값을 나타내는 것일 수 있다.
또한 도 39에서 currPic은 현재 픽쳐(picture)를 나타낸 것일 수 있다. 또한 RefPicList[X][refIdxLX]는 reference list LX에서 refIdxLX를 사용할 때 reference picture를 나타낸 것일 수 있다.
일 실시예를 따르면 제 2 참조 리스트(reference list L1)에 대한 MVD에 MmvdOffset에 기초하여 연산한 값을 사용하는 경우가 있을 수 있다((8-354) 내지 (8-363)). 이때 제 1 참조 리스트(reference list L0)에 대한 MVD로 MMVD 오프셋(MmvdOffset) 값을 그대로 사용하는 것이 가능하다. 이 경우는 Abs(currPocDiffL0)가 Abs( currPocDiffL1 )보다 같거나 큰 경우일 수 있다. 또는 Abs(currPocDiffL0)가 Abs( currPocDiffL1 )보다 큰 경우일 수 있다.
일 실시예를 따르면 제 1 참조 리스트(reference list L0)에 대한 MVD에 MMVD 오프셋(MmvdOffset)에 기초하여 연산한 값을 사용하는 경우가 있을 수 있다((8-364) 내지 (8-373)). 이때 제 2 참조 리스트(reference list L1)에 대한 MVD로 MMVD 오프셋(MmvdOffset) 값을 그대로 사용하는 것이 가능하다. 이 경우는 Abs( currPocDiffL0 )가 Abs( currPocDiffL1 )보다 작은 경우일 수 있다. 또는 Abs( currPocDiffL0 )가 Abs( currPocDiffL1 )보다 작거나 같은 경우일 수 있다.
일 실시예를 따르면 MMVD 오프셋(MmvdOffset)에 기초하여 연산하는 것은 MV scaling을 나타낸 것일 수 있다. MV scaling은 도 39의 (8-356) 내지 (3-361) 또는 (8-366) 내지 (3-371)일 수 있다. 전자는 제 1 MMVD에 대한 정보(mMvdL0) 또는 MMVD 오프셋(MmvdOffset)에 기초한 스케일링(scaling으로 scaled MV인 제 2 MMVD에 대한 정보(mMvdL1)를 만드는 과정일 수 있고, 후자는 제 2 MMVD에 대한 정보(mMvdL1) 또는 MMVD 오프셋(MmvdOffset)에 기초한 스케일링(scaling)으로 스케일된(scaled) 모션 벡터(MV)인 제 1 MMVD에 대한 정보(mMvdL0)를 만드는 과정일 수 있다. MV scaling은 제 1 POC 차이(currPocDiffL0), 제 2 POC 차이(currPocDiffL1)에 기초한 값인 스케일 요소(distScaleFactor((8-359), (8-369)))에 기초한 연산일 수 있다. 또한 MV scaling은 스케일 요소(distScaleFactor)와 scaling할 MV를 곱한 값에 기초한 연산일 수 있다((8-360), (8-361), (8-370), (8-371)). 또한 MV scaling은 MV range를 제한하는 과정을 포함할 수 있다. 예를 들면 도 39의 (8-360), (8-361), (8-370), (8-371)에 range 제한 과정이 포함되었을 수 있다. 예를 들면 MV scaling은 clipping 과정을 포함할 수 있다. 본 개시의 실시예를 따르면 이때 앞서 설명한 MVD2 range를 사용할 수 있다. 예를 들면 -2^15 부터 (2^15 - 1) 까지(inclusive)로 range를 제한할 수 있다. 즉, MMVD의 MVD range를 -2^15 부터 (2^15 - 1) 까지(inclusive)로 제한할 수 있다. 예를 들면 즉, MMVD의 MVD derivation 과정은 distScaleFactor와 scaling할 MV를 곱한 값에 기초한 값을 -2^15 부터 (2^15 - 1) 까지(inclusive)로 제한하는 과정을 포함할 수 있다. 예를 들면 Clip3(-2^15, 2^15 - 1, x) 과정이 MMVD의 MVD derivation 과정에 포함될 수 있다. 더 구체적으로 mMvdLX는 다은과 같이 결정될 수 있다.
mMvdLX = Clip3(-2^15, 2^15 - 1, (distScaleFactor*mMvdLY + 128 - (distScaleFactor*mMvdLY >=0 )) >> 8 )
이때 Y는 0 또는 1일 수 있고 !X일 수 있다. 또한 mMvdLY는 MmvdOffset일 수 있다. distScaleFactor는 (8-359) 또는 (8-369)에 나타낸 값일 수 있고, currPocDiffL0와 currPocDiffL1에 기초한 값일 수 있다. 하지만 MMVD의 MVD, MMVD에 대한 정보(mMvdLX) 또는 스케일된 MV의 범위가 -2^15 부터 (2^15 - 1)로 한정되는 것은 아니다. MMVD의 MVD, MMVD에 대한 정보(mMvdLX) 또는 스케일된 MV의 범위는 -2^17 부터 (2^17 - 1)일 수 있다. 이에 대해서는 도 43과 함께 설명한다.
본 과정은 L0와 L1에 대한 reference picture가 모두 long-term reference picture가 아닌 경우에 수행하는 것이 가능하다.
일 실시예를 따르면 MMVD 오프셋(MmvdOffset)에 기초하여 연산하는 것은 제 1 POC 차이(currPocDiffL0)와 제 2 POC 차이(currPocDiffL1)에 기초하여 MMVD 오프셋(MmvdOffset) 또는 음의 MMVD 오프셋(-MmvdOffset)을 나타낸 것일 수 있다((8-362), (8-363), (8-372), (8-373)). 본 과정은 L0와 L1에 대한 reference picture 중 적어도 하나가 long-term reference picture인 경우에 수행하는 것이 가능하다.
또한 만약 uni-prediction인 경우에 mMvdLX로 MmvdOffset을 그대로 사용하는 것이 가능하다((8-374), (8-375)).
도 40은 본 개시의 일 실시예에 따른 MVD 및 MV derivation을 나타낸 도면이다.
도 40의 실시예는 도 37의 MV range 또는 MVD1 range를 사용하는 예일 수 있다. 도 40의 실시예는 -2^17 부터 (2^17 - 1) 까지(inclusive) 범위를 사용하는 예일 수 있다.
도 40을 참조하면 도 9 등에서 설명한 syntax element를 기초로 lMvd를 derive할 수 있다(7-161). 또한 lMvd는 -2^17 부터 (2^17 - 1) 까지(inclusive) 범위일 수 있다. 또한 MvdLX, MvdCpLX 등의 값이 lMvd로 설정될 수 있다. 또한 lMvd, MvdLX, MvdCpLX 등은 앞서 설명한 MVD1일 수 있다.
또한 AMVP, inter mode 등을 사용하는 경우에 MV range를 -2^17 부터 (2^17 - 1) 까지(inclusive)로 제한할 수 있다. 이 경우는 merge mode를 사용하지 않는 경우일 수 있다. 도 40을 참조하면 (8-264) 내지 (8-267)은 MV range 제한 과정을 포함할 수 있다. 도면을 참조하면 uLX는 MVP(mvpLX)와 MVD(mvdLX)를 더한 것에 기초한 값일 수 있다. 또한 ULX에 기초해서 최종 MV인 mvLX를 계산할 수 있다. 도 40은 modulus 연산을 포함하고 있는데 이 연산에 의해 나타내는 값을 일정 bit 수 이하로 표현할 수 있도록 제한될 수 있다. 예를 들어 (% 2^18)을 계산함으로써 18-bit로 표현할 수 있도록 만들 수 있다. 따라서 MV range를 -2^17 부터 (2^17 - 1) 까지(inclusive)로 제한할 수 있다. (8-265), (8-267)은 MVP와 MVD를 더할 때 발생할 수 있는 overflow를 해결하는 역할을 할 수 있다.
도 41는 본 개시의 일 실시예에 따른 MV, CPMV derivation을 나타낸 도면이다.
도 41의 실시예는 도 37의 MV range 또는 MVD1 range를 사용하는 예일 수 있다. 도 40의 실시예는 -2^17 부터 (2^17 - 1) 까지(inclusive) 범위를 사용하는 예일 수 있다.
도 41 (a)는 collocated motion vector(temporal motion vector)를 derive하는 방법을 표현한 것일 수 있다. 이 과정은 MV scaling을 포함할 수 있다. 이때 distScaleFactor와 scaling할 MV(mvCol)에 기초한 값을 clipping하는 연산을 포함할 수 있다((8-398)). 이때 clipping을 -131072, 131071 범위(inclusive)의 결과가 나오도록 할 수 있다. -131072는 -2^17과 같은 값이다. 131071은 2^17 - 1과 같은 값이다.
도 41 (b)는 CPMV(cpMvLX)를 derive하는 과정 일부를 나타낸 도면이다. 이때도 역시 range를 제한하기 위한 clipping 과정이 포함될 수 있다. 이때 range는 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다.
도 41 (c)는 subblock based MV를 derive하는 과정 일부를 나타낸 도면이다. Subblock based MV는 affine MC, subblock based temporal MV prediction 등을 사용할 때의 MV들일 수 있다. 이때도 역시 range를 제한하기 위한 clipping 과정이 포함될 수 있다. 이때 range는 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다. 도면의 xSbIdx, ySbIdx는 각각 x축에 대한 subblock index, y축에 대한 subblock index를 나타낼 수 있다.
도 42는 본 개시의 일 실시예에 따른 MV 및 MVD 범위를 나타낸 도면이다.
앞서 설명한 부분은 본 실시예에서 설명을 생략했을 수 있다.
앞서 설명한 것처럼 MVD 생성 방법 혹은 MVD 결정 방법이 다수 존재할 수 있다. MVD는 앞서 설명한 모션 벡터 차분 값 (Motion vector difference)일 수 있다. 또한 MV 생성 방법 혹은 MV 결정 방법이 다수 존재할 수 있다.
그리고 이때 본 개시의 일 실시예를 따르면 MV 또는 MVD가 나타낼 수 있는 범위가 제한적일 수 있다.
본 개시의 일 실시예를 따르면 MV range와 MVD range는 동일할 수 있다. 또한 MVD 생성 방법이 존재하고 MVD 생성 방법 1에 의해 생성한 MVD가 MVD1이고, MVD 생성 방법 2에 의해 생성한 MVD가 MVD2일 수 있다. 이때 MVD1 range와 MVD2 range는 동일할 수 있다. 또한 상기 MV range, MVD range, MVD1 range, MVD2 range는 -2^N 부터 (2^N - 1) 까지일 수 있다. 이때 -2^N과 (2^N - 1)를 포함한 범위일 수 있다. 또 다른 실시예를 따르면 MV range 또는 MVD range는 (-2^N + 1) 부터 2^N 까지일 수 있다. 이때 (-2^N + 1)과 2^N을 포함한 범위일 수 있다. 이 실시예들에서 N은 정수, 예를 들면 양의 정수일 수 있다. 더 구체적으로 N은 17일 수 있다. 또한 이때 MV range 또는 MVD range를 N+1 bit를 이용해서 나타내는 것이 가능할 수 있다. 따라서 MV range, MVD range, MVD1 range, MVD2 range는 모두 -2^17 부터 (2^17 - 1) 까지인 것이 가능하다.
또한 앞선 도면들에서 설명한 것처럼 MV, MVD1, MVD2 등이 정의될 수 있다. 즉, MV는 최종 motion compensation 또는 prediction에 사용되는 MV 등을 의미할 수 있고, 이에 대해 도 37의 설명을 참조할 수 있다. 또한 MVD1은 도 40 또는 도 9에서 설명하는 MVD일 수 있다. 또는 MVD1은 AMVP, inter mode, affine inter mode의 MVD, 또는 merge mode를 사용하지 않을 때의 MVD일 수 있고, 이에 대해 도 37의 설명을 참조할 수 있다. 또한 MVD2는 도 38 내지 도 39에서 설명하는 MVD, 또는 MMVD mode의 MVD일 수 있으며 이에 대해 도 37의 설명을 참조할 수 있다. 여기서 MMVD mode의 MVD는 MMVD에 대한 정보(mMvdLX)일 수 있다.
따라서 일 실시예를 따르면 AMVP, inter mode, affine inter mode의 MVD 및 MMVD의 MVD는 모두 나타낼 수 있는 범위가 같을 수 있다. 추가적으로 최종 MV도 범위가 같을 수 있다. 더 구체적으로 AMVP, inter mode, affine inter mode의 MVD 및 MMVD의 MVD는 모두 범위가 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다. 추가적으로 최종 MV도 범위가 -2^17 부터 (2^17 - 1) 까지(inclusive)일 수 있다.
이에 따라 어떤 크기의 picture를 MV, MVD들이 모두 커버할 수 있게 된다. 또한 어떤 MV, 또는 MVD1이 나타낼 수 있는 범위가 있을 때 MVD2도 같은 범위를 표현할 수 있게 된다. 따라서 예를 들어 MVD2를 사용하는 방법이 표현 범위에 의해 다른 방법보다 제한적으로 사용되지 않도록 할 수 있다. 또한 MV, MVD1 등이 어떤 범위를 나타낼 수 있을 때 MVD2가 같은 범위를 나타내게 하는 것은 하드웨어나 소프트웨어에서 추가적인 자원을 필요로 하지 않을 수 있다. 만약 MVD2 또는 MMVD의 MVD가 -2^17 부터 (2^17 - 1) 까지(inclusive)를 표현할 수 있다면 최대 절대값이 131072으로 이것이 1/16-pel 단위의 값인 경우 최대 8192 pixel을 나타낼 수 있다. 따라서 8K picture를 모두 커버할 수 있다.
도 42를 참조하면 바깥쪽 점선은 MV, MVD1, MVD2가 가운데 점으로부터 나타낼 수 있는 범위를 표시하고 있다. 그리고 MV range, MVD1 range, MVD2 range는 모두 같을 수 있다. 예를 들면 MV range, MVD1 range, MVD2 range는 -2^17 부터 (2^17 - 1) 까지(inclusive)의 range일 수 있다. 또한 이 range는 8K picture를 모두 포함할 수 있다. 즉, worst case로 picture의 끝에서 끝을 가리키는 경우에도 상기 MV, MVD1, MVD2 range는 이를 나타낼 수 있게 된다. 따라서 이에 따라 더 좋은 motion vector를 나타낼 수 있고, motion compensation이 잘 된다고 할 수 있고, residual이 줄어들고, coding efficiency가 늘어나는 효과가 있을 수 있다.
도 43은 본 개시의 일 실시예에 따른 MMVD의 MVD derivation을 나타낸 도면이다.
도 43은 도 39의 일부를 수정한 것일 수 있다. 도 43의 실시예에서 도 39에서 설명한 내용은 생략할 수 있다. 또는 앞서 설명한 내용이 생략되었을 수 있다.
MMVD를 사용하는 경우 MVD derivation 과정을 수행할 수 있다. MVD derivation 과정은 도 43에 나타낸 8.5.2.7일 수 있다. 또한 8.5.2.7의 output인 MVD는 MMVD의 MVD일 수 있고, MMVD에 대한 정보(mMvdLX)일 수 있다. 이미 설명한 바와 같이 MMVD에 대한 정보(mMvdLX)는 MMVD의 거리와 관련된 정보(mmvd_distance_idx)와 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 기초로 획득될 수 있다.
보다 구체적으로, 도 43과 함께 설명한다. 도 43을 참조하면 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 획득할 수 있다. 비디오 신호 처리 장치는 MMVD에 대한 정보(mMvdLX)를 획득하기 위하여 MMVD 오프셋(MmvdOffset)을 획득할 수 있다. MMVD 오프셋(MmvdOffset)은 앞서 설명한 MMVD 관련 syntax element에 기초한 값일 수 있다. 예를 들면 MMVD 오프셋(MmvdOffset)은 MMVD의 거리와 관련된 정보(mmvd_distance_idx), MMVD의 방향과 관련된 정보(mmvd_direction_idx)에 기초한 값일 수 있다.
일 실시예를 따르면 비디오 신호 처리 장치는 predFlagLX에 기초하여 현재 블록이 bi prediction으로 예측되는지 여부를 결정할 수 있다. predFlagLX는 어떤 참조 리스트(reference list)를 사용하는지 지시할 수 있다. 여기서, X는 0, 1로 대체될 수 있고, L0 및 L1은 각각 reference list L0 및 L1에 해당할 수 있다. predFlagL0가 1인 경우, 제 1 참조 리스트가 사용됨을 나타낼 수 있다. 또한 predFlagL0가 0인 경우, 제 1 참조 리스트가 사용되지 않음을 나타낼 수 있다. predFlagL1가 1인 경우, 제 2 참조 리스트가 사용됨을 나타낼 수 있다. 또한 predFlagL1가 0인 경우, 제 2 참조 리스트가 사용되지 않음을 나타낼 수 있다.
도 43에서 predFlagL0 및 predFlagL1이 모두 1인 경우, bi prediction을 나타낼 수 있다. bi prediction은 제 1 참조 리스트 및 제 2 참조 리스트가 모두 사용됨을 나타낼 수 있다. 제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 비디오 신호 처리 장치는 현재 블록을 포함하는 현재 픽쳐(currPic) 및 제 1 참조 리스트에 기초한 제 1 참조 픽쳐(RefPicList[0][refIdxL0]) 사이의 POC(Picture Order Count)의 차이를 제 1 POC 차이(currPocDiffL0)로 획득하는 단계(8-348)를 수행할 수 있다. 또한, 제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 비디오 신호 처리 장치는 현재 픽쳐(currPic) 및 제 1 리스트에 기초한 제 2 참조 픽쳐(RefPicList[1][refIdxL1]) 사이의 POC(Picture Order Count)의 차이를 제 2 POC 차이(currPocDiffL1)로 획득하는 단계(8-349)를 수행할 수 있다.
POC 차이(currPocDiffLX)는 현재 픽쳐의 POC와 참조 리스트(reference list LX)의 참조 픽쳐(reference picture)의 POC간의 차이일 수 있고, X는 0과 1로 대체될 수 있다. 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)는 각각 도 43의 (8-348), (8-349)에 의해 결정될 수 있다. DiffPicOrderCnt는 다음과 같이 연산할 수 있다.
DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) - PicOrderCnt( picB )
PicOrderCnt( picX )는 픽쳐 picX의 picture order count 값을 나타내는 것일 수 있다.
비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset), 제 1 POC 차이(currPocDiffL0), 및 제 2 POC 차이(currPocDiffL1) 중 적어도 하나에 기초하여 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보(mMvdL0) 및 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보(mMvdL1)를 획득하는 단계를 수행할 수 있다. 여기서 MMVD에 대한 정보(mMvdLX)는 제 1 MMVD에 대한 정보(mMvdL0) 및 제 2 MMVD에 대한 정보(mMvdL1)를 포함할 수 있다. 비디오 신호 처리 장치가 제 1 MMVD에 대한 정보(mMvdL0) 및 제 2 MMVD에 대한 정보(mMvdL1)를 획득하는 과정에 대해서는 이하에서 자세히 설명한다.
비디오 신호 처리 장치는 POC(picture order count)에 기초하여 MMVD의 MVD로 MMVD 오프셋(MmvdOffset)을 그대로 사용할지, MMVD 오프셋(MmvdOffset)에 기초하여 연산한 값을 사용할지, 어떤 참조 리스트(reference list)에 대한 값에 MMVD 오프셋(MmvdOffset)을 그대로 사용할지, 어떤 참조 리스트(reference list)에 대한 값에 MMVD 오프셋(MmvdOffset)에 기초하여 연산한 값을 사용할지 등을 결정할 수 있다.
제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)가 동일한 경우, 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 제 1 MMVD에 대한 정보(mMvdL0)로써 획득하는 단계(8-350, 8-351)를 수행할 수 있다. 또한, 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)가 동일한 경우, 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 제 2 MMVD에 대한 정보(mMvdL1)로써 획득하는 단계(8-352, 8-353)를 수행할 수 있다.
비디오 신호 처리 장치는 제 1 POC 차이의 절대값(Abs(currPocDiffL0))이 제 2 POC 차이의 절대값(Abs(currPocDiffL1))보다 큰지 여부를 결정할 수 있다. 또한, 비디오 신호 처리 장치는 제 1 POC 차이의 절대값(Abs(currPocDiffL0))이 제 2 POC 차이의 절대값(Abs(currPocDiffL1))보다 크거나 같은 경우, MMVD 오프셋(MmvdOffset)을 제 1 MMVD에 대한 정보(mMvdL0)로써 획득하는 단계(8-354, 8-355)를 수행할 수 있다.
제 1 참조 픽쳐(RefPicList[0][refIdxL0])가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐(RefPicList[1][refIdxL1])가 롱텀 참조 픽쳐가 아닌 경우, 비디오 신호 처리 장치는 제 1 MMVD에 대한 정보(mMvdL0)를 스케일링하여 제 2 MMVD에 대한 정보(mMvdL1)를 획득하는 단계(8-356 내지 8-361)를 수행할 수 있다. 스케일을 위하여 스케일 요소(distScaleFactor)가 이용될 수 있다. 스케일 요소(distScaleFactor)는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)중 적어도 하나에 기초하여 획득될 수 있다.
제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 비디오 신호 처리 장치는 제 1 MMVD에 대한 정보(mMvdL0)의 절대값을 스케일링하지 않고 제 2 MMVD에 대한 정보(mMvdL1)를 획득하는 단계(8-362, 8-363)를 수행할 수 있다. 여기서 스케일링하지 않는 다는 것은 제 1 MMVD에 대한 정보(mMvdL0)의 절대값을 변경하지 않는다는 의미일 수 있다. 즉, 비디오 신호 처리 장치는 제 1 MMVD에 대한 정보(mMvdL0)의 부호를 변경하거나 변경하지 않고, 제 2 MMVD에 대한 정보(mMvdL1)를 획득할 수 있다. 비디오 신호 처리 장치는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)의 부호가 같은 경우, 제 2 MMVD에 대한 정보(mMvdL1)를 제 1 MMVD에 대한 정보(mMvdL0)로 설정할 수 있다. 또한, 비디오 신호 처리 장치는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)의 부호가 다른 경우, 제 2 MMVD에 대한 정보(mMvdL1)를 제 1 MMVD에 대한 정보(mMvdL0)의 부호를 변경하여 설정할 수 있다.
비디오 신호 처리 장치는 제 1 POC 차이의 절대값(Abs(currPocDiffL0))이 제 2 POC 차이의 절대값(Abs(currPocDiffL1))보다 작은지 여부를 결정할 수 있다. 제 1 POC 차이의 절대값(Abs(currPocDiffL0))이 제 2 POC 차이의 절대값(Abs(currPocDiffL1))보다 작은 경우, 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 제 2 MMVD에 대한 정보(mMvdL1)로써 획득하는 단계(8-364, 8-365)를 수행할 수 있다.
제 1 참조 픽쳐(RefPicList[0][refIdxL0])가 롱텀 참조 픽쳐가 아니고, 제 2 참조 픽쳐(RefPicList[1][refIdxL1])가 롱텀 참조 픽쳐가 아닌 경우, 비디오 신호 처리 장치는 제 2 MMVD에 대한 정보(mMvdL1)를 스케일링하여 제 1 MMVD에 대한 정보(mMvdL0)를 획득하는 단계(8-366 내지 8-371)를 수행할 수 있다. 스케일을 위하여 스케일 요소(distScaleFactor)가 이용될 수 있다. 스케일 요소(distScaleFactor)는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)중 적어도 하나에 기초하여 획득될 수 있다.
제 1 참조 픽쳐(RefPicList[0][refIdxL0])가 롱텀 참조 픽쳐이거나, 제 2 참조 픽쳐(RefPicList[1][refIdxL1])가 롱텀 참조 픽쳐인 경우, 비디오 신호 처리 장치는 제 2 MMVD에 대한 정보(mMvdL1)의 절대값을 스케일링하지 않고 제 1 MMVD에 대한 정보(mMvdL0)를 획득하는 단계(8-372, 8-373)를 수행할 수 있다. 여기서 스케일링하지 않는 다는 것은 제 2 MMVD에 대한 정보(mMvdL1)의 절대값을 변경하지 않는다는 의미일 수 있다. 즉, 비디오 신호 처리 장치는 제 2 MMVD에 대한 정보(mMvdL1)의 부호를 변경하거나 변경하지 않고, 제 1 MMVD에 대한 정보(mMvdL0)를 획득할 수 있다. 비디오 신호 처리 장치는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)의 부호가 같은 경우, 제 1 MMVD에 대한 정보(mMvdL0)를 제 2 MMVD에 대한 정보(mMvdL1)로 설정할 수 있다. 또한, 비디오 신호 처리 장치는 제 1 POC 차이(currPocDiffL0) 및 제 2 POC 차이(currPocDiffL1)의 부호가 다른 경우, 제 1 MMVD에 대한 정보(mMvdL0)를 제 2 MMVD에 대한 정보(mMvdL1)의 부호를 변경하여 설정할 수 있다.
도 43에서 predFlagL0 및 predFlagL1 중 적어도 하나가 1이 아닌 경우, uni-prediction을 나타낼 수 있다. uni-prediction인 경우에 MMVD에 대한 정보(mMvdLX)로 MMVD 오프셋(MmvdOffset)을 그대로 사용하는 것이 가능할 수 있다((8-374), (8-375)).
이미 설명한 바와 같이, 비디오 신호 처리 장치는 MMVD에 대한 정보(mMvdLX)를 획득하기 위하여 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하는 단계를 수행할 수 있다.
제 1 참조 리스트만 사용되는 경우(predFlagL0 == 1), 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 스케일링하지 않고, 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보(mMvdL0)로써 획득하는 단계(8-374, 8-375)를 수행할 수 있다.
제 2 참조 리스트만 사용되는 경우(predFlagL1 == 1), 비디오 신호 처리 장치는 MMVD 오프셋(MmvdOffset)을 스케일링하지 않고, 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보(mMvdL1)로써 획득하는 단계(8-374, 8-375)를 수행할 수 있다.
앞서 설명한 것처럼 MMVD의 MVD의 범위는 제한적일 수 있다. 여기서 MMVD의 MVD는 MMVD에 대한 정보(mMvdLX)일 수 있다. 본 개시의 실시예를 따르면 MMVD의 MVD의 범위는 다른 방법으로 결정하는 MVD(예를 들면 도 9의 syntax element를 기초로 하는 MVD)의 범위와 같을 수 있다. 또한 MMVD의 MVD의 범위는 최종 MV의 범위와 같을 수 있다. 본 개시의 실시예를 따르면 MMVD의 MVD 범위 또는 MMVD에 대한 정보(mMvdLX)의 범위는 -2^17부터 2^17 - 1까지일 수 있고, 이때 -2^17과 2^17 - 1을 포함한 범위일 수 있다.
또한 앞서 설명한 것처럼 MMVD의 MVD derivation 과정에서 MV scaling 과정을 포함할 수 있다. 또한 MMVD의 MVD derivation 과정에서 range를 제한하기 위한 clipping 동작이 포함될 수 있다.
도 43을 참조하면 MMVD에 대한 정보(mMvdLX)는 clipping 동작에 기반할 수 있다. 이때 X는 0 또는 1로 대체될 수 있고, 이는 각각 제 1 참조 리스트(reference list L0), 제 2 참조 리스트(reference list L1)에 해당할 수 있다. 예를 들면 MMVD에 대한 정보(mMvdLX)는 Clip3 동작에 기반할 수 있다. 예를 들면 MMVD에 대한 정보(mMvdLX)는 Clip3(-2^17, 2^17 - 1, x)에 기반할 수 있다. 이때 x는 제 1 POC 차이(currPocDiffL0), 제 2 POC 차이(currPocDiffL1), 또는 MMVD 오프셋(MmvdOffset)에 기반한 값일 수 있다. 예를 들어 x는 스케일 요소(distScaleFactor)와 MMVD 오프셋(MmvdOffset)에 기반한 값일 수 있다. 도 43의 (8-360), (8-361), (8-370), (8-371)은 MVD range를 제한하기 위한 clipping 동작을 포함하고 있다.
추가적인 실시예로 도 42 내지 도 43에서 MV, MVD, MVD1, MVD2 간의 통일된 range, 다수의 MVD 생성 방법에 의한 MVD, MMVD의 MVD range는 -2^N + 1부터 2^N까지일 수 있고, 이때 -2^N + 1과 2^N을 포함한 범위일 수 있다. 더 구체적으로 N은 17일 수 있다. 즉, MV, MVD, MVD1, MVD2 간의 통일된 range, 다수의 MVD 생성 방법에 의한 MVD, MMVD의 MVD range는 -2^17 + 1부터 2^17까지일 수 있고, 이때 -2^17 + 1과 2^17을 포함한 범위일 수 있다. 이 경우 MVD를 18-bit로 표현하는 것이 가능할 수 있다.
본 개시의 일 실시예에 따르면 chroma MV의 range는 luma MV의 range와 다를 수 있다. 예를 들어 chroma MV는 luma MV보다 해상도가 높을 수 있다. 즉, chroma MV의 1 unit은 luma MV의 1 unit 보다 더 작은 pixel을 표현할 수 있다. 예를 들어 luma MV는 1/16-pel 단위일 수 있다. 또한 chroma MV는 1/32-pel 단위일 수 있다.
또한 chroma MV는 luma MV에 기초할 수 있다. 예를 들어 chroma MV는 luma MV에 어떤 값을 곱해서 결정될 수 있다. 상기 어떤 값은 horizontal 성분에 대해 2/SubWidthC, vertical 성분에 대해 2/SubHeightC일 수 있다. 상기 어떤 값이 포함한 2는 chroma MV의 해상도가 luma MV의 해상도보다 2배 높기 때문에 포함된 값일 수 있다. 또한 SubWidthC, SubHeightC는 color format에 따라 결정되는 값일 수 있다. 또한 SubWidthC, SubHeightC는 chorma sample sampling에 대한 값일 수 있다. 예를 들어 SubWidthC, SubHeightC는 luma sample에 대해 chroma sample이 얼만큼 존재하는지에 관한 값일 수 있다. 또한 SubWidthC, SubHeightC는 1 또는 2일 수 있다.
본 개시의 실시예를 따르면 chroma MV의 해상도가 luma MV의 해상도보다 높을 때 chroma MV의 range가 luma MV의 range보다 넓을 수 있다. 이것은 luma MV가 커버하는 영역을 chroma MV도 커버하기 위한 것일 수 있다. 예를 들어 chroma MV의 range는 luma MV의 range의 2배일 수 있다. 예를 들면 chroma MV range는 -2^18부터 2^18 - 1까지일 수 있고, 이때 -2^18과 2^18 - 1을 포함한 범위일 수 있다. 또한 luma MV range는 -2^17부터 2^17 - 1까지일 수 있고, 이때 -2^17과 2^17 - 1을 포함한 범위일 수 있다.
또한 chroma MV의 range는 color format에 따라 가변적일 수 있다. 예를 들어 SubWidthC 또는 SubHeightC가 1인 경우에 chroma MV의 range는 luma MV의 range와 다를 수 있다. 이때 chroma MV의 range는 luma MV의 range의 2배인 것이 가능하다. 예를 들면 chroma MV range는 -2^18부터 2^18 - 1까지일 수 있고, 이때 -2^18과 2^18 - 1을 포함한 범위일 수 있며, luma MV range는 -2^17부터 2^17 - 1까지일 수 있고, 이때 -2^17과 2^17 - 1을 포함한 범위일 수 있다. 또한 SubWidthC와 SubHeightC가 2인 경우에 chroma MV의 range는 luma MV의 range와 같을 수 있다. 이때의 range는 -2^17부터 2^17 - 1까지일 수 있고, 이때 -2^17과 2^17 - 1을 포함한 범위일 수 있다. 이것은 chroma MV와 luma MV가 나타낼 수 있는 범위를 통일시키기 위한 것일 수 있다.
본 개시의 실시예에서 4:2:0 format인 경우에 SubWidthC, SubHeightC는 각각 2, 2일 수 있다. 4:2:2 format인 경우에 SubWidthC, SubHeightC는 각각 2, 1일 수 있다. 4:4:4 format인 경우에 SubWidthC, SubHeightC는 각각 1, 1일 수 있다.
상술한 본 개시의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 개시의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 개시의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 개시의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리는 프로세서의 내부 또는 외부에 위치할 수 있으며, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고받을 수 있다.
전술한 본 개시의 설명은 예시를 위한 것이며, 본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 개시의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아는 것으로 해석해야 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 개시의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함되는 것으로 해석되어야 한다.
Claims (32)
- 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 비트스트림으로부터 파싱하는 단계;상기 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 상기 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하는 단계;상기 MMVD 머지 정보가 상기 현재 블록에 MMVD를 사용함을 나타내는 경우, MMVD의 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 파싱하는 단계; 및상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여 MMVD에 대한 정보(mMvdLX)를 획득하는 단계를 포함하고,상기 MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 디코딩하는 방법.
- 제 1 항에 있어서,상기 상위 레벨은 Coding Tree Unit, 슬라이스(slice), 타일(tile), 타일 그룹(tile group), 영상(picture), 또는 시퀀스(sequence) 단위 중 하나인 것을 특징으로 하는 비디오 신호를 디코딩하는 방법.
- 제 1 항에 있어서,상기 현재 블록의 머지 후보 리스트를 생성하는 단계;상기 비트스트림으로부터 파싱된 머지 인덱스에 기초하여 상기 머지 후보 리스트로부터 모션 벡터를 선택하는 단계;상기 MMVD 머지 정보가 상기 현재 블록에 MMVD를 사용함을 나타내는 경우, 상기 모션 벡터에 상기 MMVD에 대한 정보를 더하여 수정된 모션 벡터를 획득하는 단계; 및상기 수정된 모션 벡터에 기초하여 상기 현재 블록을 복원하는 단계를 더 포함하고,상기 수정된 모션 벡터는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 디코딩하는 방법.
- 제 1 항에 있어서,상기 MMVD에 대한 정보(mMvdLX)를 획득하는 단계는,상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하는 단계;제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 상기 현재 블록을 포함하는 현재 픽쳐 및 상기 제 1 참조 리스트에 기초한 제 1 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 1 POC 차이로 획득하고, 상기 현재 픽쳐 및 상기 제 2 참조 리스트에 기초한 제 2 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 2 POC 차이로 획득하는 단계;상기 MMVD 오프셋, 상기 제 1 POC 차이, 및 상기 제 2 POC 차이 중 적어도 하나에 기초하여 상기 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보 및 상기 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보를 획득하는 단계를 포함하고,상기 MMVD에 대한 정보는 상기 제 1 MMVD에 대한 정보 및 상기 제 2 MMVD에 대한 정보를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 4 항에 있어서,상기 제 1 POC 차이 및 상기 제 2 POC 차이가 동일한 경우, 상기 MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하고, 상기 MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 4 항에 있어서,상기 제 1 POC 차이의 절대값이 상기 제 2 POC 차이의 절대값보다 크거나 같은 경우, 상기 MMVD 오프셋을 상기 제 1 MMVD에 대한 정보로써 획득하는 단계;상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 상기 제 1 MMVD에 대한 정보를 스케일링하여 상기 제 2 MMVD에 대한 정보를 획득하는 단계; 및상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 상기 제 1 MMVD에 대한 정보의 절대값을 스케일링하지 않고 상기 제 2 MMVD에 대한 정보를 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 4 항에 있어서,상기 제 1 POC 차이의 절대값이 상기 제 2 POC 차이의 절대값보다 작은 경우, 상기 MMVD 오프셋을 상기 제 2 MMVD에 대한 정보로써 획득하는 단계;상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 상기 제 2 MMVD에 대한 정보를 스케일링하여 상기 제 1 MMVD에 대한 정보를 획득하는 단계; 및상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 상기 제 2 MMVD에 대한 정보의 절대값을 스케일링하지 않고 상기 제 1 MMVD에 대한 정보를 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 1 항에 있어서,상기 MMVD에 대한 정보(mMvdLX)를 획득하는 단계는,상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하는 단계;제 1 참조 리스트만 사용되는 경우, 상기 MMVD 오프셋을 스케일링하지 않고, 상기 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보로써 획득하는 단계; 및제 2 참조 리스트만 사용되는 경우, 상기 MMVD 오프셋을 스케일링하지 않고, 상기 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보로써 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 크로마 성분 포멧 정보를 상위 레벨의 비트스트림으로부터 획득하는 단계;상기 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하는 단계;상기 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하는 단계;상기 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하는 단계;상기 y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하는 단계;상기 x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하는 단계;상기 좌측 블록 및 상기 상측 블록에 기초하여 가중치를 결정하는 단계;현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하는 단계;상기 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하는 단계; 및상기 가중치, 상기 제 1 샘플들, 및 상기 제 2 샘플들에 기초하여 상기 현재 블록에 대한 조합 예측 샘플을 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 9 항에 있어서,상기 가중치를 결정하는 단계는,상기 좌측 블록이 이용 가능하고, 상기 좌측 블록의 예측 모드가 인트라 예측인 경우, 상기 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)를 TRUE로 설정하는 단계;상기 좌측 블록이 이용 가능하지 않거나, 상기 좌측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상기 좌측 블록에 대한 코드 정보를 FALSE로 설정하는 단계;상기 상측 블록이 이용 가능하고, 상기 상측 블록의 예측 모드가 인트라 예측인 경우, 상기 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)를 TRUE로 설정하는 단계; 및상기 상측 블록이 이용 가능하지 않거나, 상기 상측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상기 상측 블록에 대한 코드 정보를 FALSE로 설정하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 10 항에 있어서,상기 가중치를 결정하는 단계는,상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보가 모두 TRUE인 경우, 상기 가중치를 3으로 결정하는 단계;상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보가 모두 FALSE인 경우, 상기 가중치를 1로 결정하는 단계; 및상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보 중 하나만 TRUE인 경우, 상기 가중치를 2로 결정하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 9 항에 있어서,상기 조합 예측 샘플을 획득하는 단계는,predSamplesComb[ x ][ y ] = ( w * predSamplesIntra[ x ][ y ] +( 4 - w ) * predSamplesInter[ x ][ y ] + 2) >> 2에 기초하여 현재 블록을 예측하는 단계를 포함하고,여기서 predSamplesComb는 상기 조합 예측 샘플을 의미하고, w는 상기 가중치를 의미하고, predSamplesIntra는 상기 제 2 샘플들을 의미하고, predSamplesInter는 상기 제 1 샘플들을 의미하고, [x]는 상기 현재 블록에 포함된 샘플의 x축 좌표를 의미하고, [y]는 상기 현재 블록에 포함된 샘플의 y축 좌표를 의미하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 9 항에 있어서,상기 x축의 스케일 정보를 획득하는 단계는,상기 현재 블록의 색성분이 0 이거나, 상기 너비에 관련된 정보가 1인 경우, 상기 x축의 스케일 정보를 0으로 결정하는 단계; 및상기 현재 블록의 색성분이 0이 아니고, 상기 너비에 관련된 정보가 1이 아닌 경우, 상기 x축의 스케일 정보를 1으로 결정하는 단계를 포함하고,상기 y축의 스케일 정보를 획득하는 단계는,상기 현재 블록의 색성분이 0 이거나, 상기 높이에 관련된 정보가 1인 경우, 상기 y축의 스케일 정보를 0으로 결정하는 단계; 및상기 현재 블록의 색성분이 0이 아니고, 상기 높이에 관련된 정보가 1이 아닌 경우, 상기 y축의 스케일 정보를 1으로 결정하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 제 9 항에 있어서,상기 좌측 블록의 위치는,( xCb - 1, yCb - 1 + ( cbHeight << scallFactHeight) ) 이고,상기 xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, 상기 yCb는 상기 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, 상기 cbHeight는 상기 현재 블록의 높이의 크기이며, 상기 scallFactHeight는 상기 y축의 스케일 정보이고,상기 상측 블록의 위치는,( xCb - 1 + (cbWidth << scallFactWidth), yCb - 1 ) 이고,상기 xCb는 상기 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, 상기 yCb는 상기 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, 상기 cbWidth는 상기 현재 블록의 너비의 크기이며, scallFactWidth는 상기 x축의 스케일 정보인 것을 특징으로 하는 비디오 신호를 디코딩 하는 방법.
- 비디오 신호를 디코딩하는 장치는 프로세서 및 메모리를 포함하고,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 비트스트림으로부터 파싱하고,상기 상위 레벨 MMVD 활성 정보가 MMVD의 활성을 나타내는 경우, 상기 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 비트스트림으로부터 파싱하고,상기 MMVD 머지 정보가 상기 현재 블록에 MMVD를 사용함을 나타내는 경우, MMVD의 거리와 관련된 정보(mmvd_distance_idx) 및 MMVD의 방향과 관련된 정보(mmvd_direction_idx)를 파싱하고,상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여 MMVD에 대한 정보(mMvdLX)를 획득하고,상기 MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 디코딩하는 장치.
- 제 15 항에 있어서,상기 상위 레벨은 Coding Tree Unit, 슬라이스(slice), 타일(tile), 타일 그룹(tile group), 영상(picture), 또는 시퀀스(sequence) 단위 중 하나인 것을 특징으로 하는 비디오 신호를 디코딩하는 장치.
- 제 15 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 현재 블록의 머지 후보 리스트를 생성하고,상기 비트스트림으로부터 파싱된 머지 인덱스에 기초하여 상기 머지 후보 리스트로부터 모션 벡터를 선택하고,상기 MMVD 머지 정보가 상기 현재 블록에 MMVD를 사용함을 나타내는 경우, 상기 모션 벡터에 상기 MMVD에 대한 정보를 더하여 수정된 모션 벡터를 획득하고,상기 수정된 모션 벡터에 기초하여 상기 현재 블록을 복원하고,상기 수정된 모션 벡터는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 디코딩하는 장치.
- 제 15 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하고,제 1 참조 리스트 및 제 2 참조 리스트가 사용되는 경우, 상기 현재 블록을 포함하는 현재 픽쳐 및 상기 제 1 참조 리스트에 기초한 제 1 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 1 POC 차이로 획득하고, 상기 현재 픽쳐 및 상기 제 2 참조 리스트에 기초한 제 2 참조 픽쳐 사이의 POC(Picture Order Count)의 차이를 제 2 POC 차이로 획득하고,상기 MMVD 오프셋, 상기 제 1 POC 차이, 및 상기 제 2 POC 차이 중 적어도 하나에 기초하여 상기 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보 및 상기 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보를 획득하고,상기 MMVD에 대한 정보는 상기 제 1 MMVD에 대한 정보 및 상기 제 2 MMVD에 대한 정보를 포함하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 18 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 제 1 POC 차이 및 상기 제 2 POC 차이가 동일한 경우, 상기 MMVD 오프셋을 제 1 MMVD에 대한 정보로써 획득하고, 상기 MMVD 오프셋을 제 2 MMVD에 대한 정보로써 획득하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 18 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 제 1 POC 차이의 절대값이 상기 제 2 POC 차이의 절대값보다 크거나 같은 경우, 상기 MMVD 오프셋을 상기 제 1 MMVD에 대한 정보로써 획득하고,상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 상기 제 1 MMVD에 대한 정보를 스케일링하여 상기 제 2 MMVD에 대한 정보를 획득하고,상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 상기 제 1 MMVD에 대한 정보의 절대값을 스케일링하지 않고 상기 제 2 MMVD에 대한 정보를 획득하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 18 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 제 1 POC 차이의 절대값이 상기 제 2 POC 차이의 절대값보다 작은 경우, 상기 MMVD 오프셋을 상기 제 2 MMVD에 대한 정보로써 획득하고,상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐가 아니고, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐가 아닌 경우, 상기 제 2 MMVD에 대한 정보를 스케일링하여 상기 제 1 MMVD에 대한 정보를 획득하고,상기 제 1 참조 픽쳐가 롱텀 참조 픽쳐이거나, 상기 제 2 참조 픽쳐가 롱텀 참조 픽쳐인 경우, 상기 제 2 MMVD에 대한 정보의 절대값을 스케일링하지 않고 상기 제 1 MMVD에 대한 정보를 획득하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 15 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 MMVD의 거리와 관련된 정보 및 상기 MMVD의 방향과 관련된 정보에 기초하여, MMVD 오프셋을 획득하고,제 1 참조 리스트만 사용되는 경우, 상기 MMVD 오프셋을 스케일링하지 않고, 상기 제 1 참조 리스트와 관련된 제 1 MMVD에 대한 정보로써 획득하고,제 2 참조 리스트만 사용되는 경우, 상기 MMVD 오프셋을 스케일링하지 않고, 상기 제 2 참조 리스트와 관련된 제 2 MMVD에 대한 정보로써 획득하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 비디오 신호를 디코딩하는 장치는 프로세서 및 메모리를 포함하고,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,크로마 성분 포멧 정보를 상위 레벨의 비트스트림으로부터 획득하고,상기 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하고,상기 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하고,상기 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하고,상기 y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하고,상기 x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하고,상기 좌측 블록 및 상기 상측 블록에 기초하여 가중치를 결정하고,현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하고,상기 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하고,상기 가중치, 상기 제 1 샘플들, 및 상기 제 2 샘플들에 기초하여 상기 현재 블록에 대한 조합 예측 샘플을 획득하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 23 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 좌측 블록이 이용 가능하고, 상기 좌측 블록의 예측 모드가 인트라 예측인 경우, 상기 좌측 블록에 대한 코드 정보(isIntraCodedNeighbourA)를 TRUE로 설정하고,상기 좌측 블록이 이용 가능하지 않거나, 상기 좌측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상기 좌측 블록에 대한 코드 정보를 FALSE로 설정하고,상기 상측 블록이 이용 가능하고, 상기 상측 블록의 예측 모드가 인트라 예측인 경우, 상기 상측 블록에 대한 코드 정보(isIntraCodedNeighbourB)를 TRUE로 설정하고,상기 상측 블록이 이용 가능하지 않거나, 상기 상측 블록의 예측 모드가 인트라 예측이 아닌 경우, 상기 상측 블록에 대한 코드 정보를 FALSE로 설정하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 24 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보가 모두 TRUE인 경우, 상기 가중치를 3으로 결정하고,상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보가 모두 FALSE인 경우, 상기 가중치를 1로 결정하고,상기 좌측 블록에 대한 코드 정보 및 상기 상측 블록에 대한 코드 정보 중 하나만 TRUE인 경우, 상기 가중치를 2로 결정하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 23 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,predSamplesComb[ x ][ y ] = ( w * predSamplesIntra[ x ][ y ] +( 4 - w ) * predSamplesInter[ x ][ y ] + 2) >> 2에 기초하여 현재 블록을 예측하고,여기서 predSamplesComb는 상기 조합 예측 샘플을 의미하고, w는 상기 가중치를 의미하고, predSamplesIntra는 상기 제 2 샘플들을 의미하고, predSamplesInter는 상기 제 1 샘플들을 의미하고, [x]는 상기 현재 블록에 포함된 샘플의 x축 좌표를 의미하고, [y]는 상기 현재 블록에 포함된 샘플의 y축 좌표를 의미하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 23 항에 있어서,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상기 현재 블록의 색성분이 0 이거나, 상기 너비에 관련된 정보가 1인 경우, 상기 x축의 스케일 정보를 0으로 결정하고,상기 현재 블록의 색성분이 0이 아니고, 상기 너비에 관련된 정보가 1이 아닌 경우, 상기 x축의 스케일 정보를 1으로 결정하고,상기 현재 블록의 색성분이 0 이거나, 상기 높이에 관련된 정보가 1인 경우, 상기 y축의 스케일 정보를 0으로 결정하고,상기 현재 블록의 색성분이 0이 아니고, 상기 높이에 관련된 정보가 1이 아닌 경우, 상기 y축의 스케일 정보를 1으로 결정하는 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 제 23 항에 있어서,상기 좌측 블록의 위치는,( xCb - 1, yCb - 1 + ( cbHeight << scallFactHeight) ) 이고,상기 xCb는 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, 상기 yCb는 상기 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, 상기 cbHeight는 상기 현재 블록의 높이의 크기이며, 상기 scallFactHeight는 상기 y축의 스케일 정보이고,상기 상측 블록의 위치는,( xCb - 1 + (cbWidth << scallFactWidth), yCb - 1 ) 이고,상기 xCb는 상기 현재 루마 블록의 좌상단 샘플의 x축 좌표이고, 상기 yCb는 상기 현재 루마 블록의 좌상단 샘플의 y축 좌표이고, 상기 cbWidth는 상기 현재 블록의 너비의 크기이며, scallFactWidth는 상기 x축의 스케일 정보인 것을 특징으로 하는 비디오 신호를 디코딩 하는 장치.
- 현재 블록의 MMVD에 대한 정보(mMvdLX)를 생성하는 단계;상기 MMVD에 대한 정보(mMvdLX)에 기초하여 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보를 생성하는 단계;상기 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 생성하는 단계;상기 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 생성하는 단계; 및상기 MMVD의 거리와 관련된 정보, 상기 MMVD의 방향과 관련된 정보, 상기 MMVD 머지 정보(mmvd_merge_flag), 및 상기 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)에 기초하여 비트스트림을 생성하는 단계를 포함하고,상기 MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 인코딩하는 방법.
- 비디오 신호를 디코딩하는 장치는 프로세서 및 메모리를 포함하고,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,현재 블록의 MMVD에 대한 정보(mMvdLX)를 생성하고,상기 MMVD에 대한 정보(mMvdLX)에 기초하여 MMVD의 거리와 관련된 정보 및 MMVD의 방향과 관련된 정보를 생성하고,상기 현재 블록에 MMVD를 사용하는지 여부를 나타내는 MMVD 머지 정보(mmvd_merge_flag)를 생성하고,상기 현재 블록을 포함하는 상위 레벨의 MMVD(Merge with MVD)의 사용 가능 여부를 나타내는 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)를 생성하고,상기 MMVD의 거리와 관련된 정보, 상기 MMVD의 방향과 관련된 정보, 상기 MMVD 머지 정보(mmvd_merge_flag), 및 상기 상위 레벨 MMVD 활성 정보(sps_mmvd_enabled_flag)에 기초하여 비트스트림을 생성하고,상기 MMVD에 대한 정보는 -2^17보다 크거나 같고, 2^17 - 1보다 작거나 같은 것을 특징으로 하는 비디오 신호를 인코딩하는 장치.
- 상위 레벨의 크로마 성분 포멧 정보를 생성하는 단계;상기 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하는 단계;상기 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하는 단계;상기 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하는 단계;상기 y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하는 단계;상기 x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하는 단계;상기 좌측 블록 및 상기 상측 블록에 기초하여 가중치를 결정하는 단계;현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하는 단계;상기 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하는 단계;상기 가중치, 상기 제 1 샘플들, 및 상기 제 2 샘플들에 기초하여 상기 현재 블록에 대한 조합 예측 샘플을 획득하는 단계를 포함하는 것을 특징으로 하는 비디오 신호를 인코딩하는 방법.
- 비디오 신호를 인코딩하는 장치는 프로세서 및 메모리를 포함하고,상기 프로세서는 상기 메모리에 저장된 명령어에 기초하여,상위 레벨의 크로마 성분 포멧 정보를 생성하고,상기 크로마 성분 포멧 정보에 기초하여 너비에 관련된 정보(SubWidthC) 및 높이에 관련된 정보(SubHeightC)를 획득하고,상기 너비에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 x축의 스케일 정보를 획득하고,상기 높이에 관련된 정보 또는 현재 블록의 색성분에 대한 정보에 기초하여 y축의 스케일 정보를 획득하고,상기 y축의 스케일 정보에 기초하여 좌측 블록의 위치를 결정하고,상기 x축의 스케일 정보에 기초하여 상측 블록의 위치를 결정하고,상기 좌측 블록 및 상기 상측 블록에 기초하여 가중치를 결정하고,현재 블록을 머지 모드로 예측한 제 1 샘플들을 획득하고,상기 현재 블록을 인트라 모드로 예측한 제 2 샘플들을 획득하고,상기 가중치, 상기 제 1 샘플들, 및 상기 제 2 샘플들에 기초하여 상기 현재 블록에 대한 조합 예측 샘플을 획득하는 것을 특징으로 하는 비디오 신호를 인코딩하는 장치.
Priority Applications (10)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2022505306A JP7665212B2 (ja) | 2019-07-25 | 2020-07-24 | ビデオ信号処理方法及び装置 |
| EP20844004.0A EP4007282B1 (en) | 2019-07-25 | 2020-07-24 | Video signal processing method and device |
| US17/629,385 US12081735B2 (en) | 2019-07-25 | 2020-07-24 | Video signal processing method and device |
| KR1020227002072A KR20220036942A (ko) | 2019-07-25 | 2020-07-24 | 비디오 신호 처리 방법 및 장치 |
| EP24209367.2A EP4542988A1 (en) | 2019-07-25 | 2020-07-24 | Video signal processing method and device |
| CN202080053632.8A CN114208205A (zh) | 2019-07-25 | 2020-07-24 | 视频信号处理方法和设备 |
| JP2024000706A JP7683963B2 (ja) | 2019-07-25 | 2024-01-05 | ビデオ信号処理方法及び装置 |
| US18/584,910 US12301797B2 (en) | 2019-07-25 | 2024-02-22 | Video signal processing method and device |
| US19/169,432 US20250233984A1 (en) | 2019-07-25 | 2025-04-03 | Video signal processing method and device |
| JP2025078081A JP2025111809A (ja) | 2019-07-25 | 2025-05-08 | ビデオ信号処理方法及び装置 |
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR10-2019-0090519 | 2019-07-25 | ||
| KR20190090519 | 2019-07-25 | ||
| KR20190111060 | 2019-09-06 | ||
| KR10-2019-0111060 | 2019-09-06 | ||
| KR10-2019-0124933 | 2019-10-09 | ||
| KR20190124933 | 2019-10-09 |
Related Child Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/629,385 A-371-Of-International US12081735B2 (en) | 2019-07-25 | 2020-07-24 | Video signal processing method and device |
| US18/584,910 Continuation US12301797B2 (en) | 2019-07-25 | 2024-02-22 | Video signal processing method and device |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2021015586A1 true WO2021015586A1 (ko) | 2021-01-28 |
Family
ID=74192915
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2020/009783 Ceased WO2021015586A1 (ko) | 2019-07-25 | 2020-07-24 | 비디오 신호 처리 방법 및 장치 |
Country Status (6)
| Country | Link |
|---|---|
| US (3) | US12081735B2 (ko) |
| EP (2) | EP4007282B1 (ko) |
| JP (3) | JP7665212B2 (ko) |
| KR (1) | KR20220036942A (ko) |
| CN (1) | CN114208205A (ko) |
| WO (1) | WO2021015586A1 (ko) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11601641B2 (en) | 2018-10-12 | 2023-03-07 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and apparatus using multi-assumption prediction |
| US12081735B2 (en) | 2019-07-25 | 2024-09-03 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and device |
Families Citing this family (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2588406B (en) * | 2019-10-22 | 2022-12-07 | British Broadcasting Corp | Video encoding and video decoding |
| GB2591806B (en) | 2020-02-07 | 2023-07-19 | British Broadcasting Corp | Chroma intra prediction in video coding and decoding |
| EP4510592A4 (en) * | 2022-04-12 | 2026-04-22 | Lg Electronics Inc | IMAGE ENCODING/DECODING METHOD, BINARY STREAM TRANSMISSION METHOD, AND RECORDING MEDIUM FOR STORING THE BINARY STREAM |
| TW202349962A (zh) * | 2022-04-29 | 2023-12-16 | 聯發科技股份有限公司 | 使用具有運動向量差的合併模式的視訊編解碼方法和裝置 |
| CN114760481B (zh) * | 2022-04-29 | 2023-05-30 | 北京淳中科技股份有限公司 | 一种视频编码方法、装置、设备及存储介质 |
| EP4601289A1 (en) * | 2022-10-07 | 2025-08-13 | LG Electronics Inc. | Image encoding/decoding method, method for transmitting bitstream, and recording medium in which bitstream is stored |
| EP4697718A1 (en) * | 2023-05-10 | 2026-02-18 | Hyundai Motor Company | Video encoding/decoding method and device using combined intra/inter prediction mode based on sub-block |
| WO2025089813A1 (ko) * | 2023-10-25 | 2025-05-01 | 인텔렉추얼디스커버리 주식회사 | 비디오 복호화 방법 및 장치, 및 비디오 부호화 방법 및 장치 |
| WO2025100757A1 (ko) * | 2023-11-09 | 2025-05-15 | 삼성전자 주식회사 | 인트라 예측을 이용한 영상의 복호화 방법 및 장치, 및 인트라 예측을 이용한 영상의 부호화 방법 및 장치 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20140136428A (ko) * | 2012-02-29 | 2014-11-28 | 엘지전자 주식회사 | 인터 레이어 예측 방법 및 이를 이용하는 장치 |
| KR20150081236A (ko) * | 2014-01-03 | 2015-07-13 | 삼성전자주식회사 | 효율적인 파라미터 전달을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치 |
| KR20180007345A (ko) * | 2016-07-12 | 2018-01-22 | 한국전자통신연구원 | 영상 부호화/복호화 방법 및 이를 위한 기록 매체 |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009081576A (ja) | 2007-09-25 | 2009-04-16 | Toshiba Corp | 動画像復号装置、および動画像復号方法 |
| US9100661B2 (en) | 2010-04-05 | 2015-08-04 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation |
| KR101379188B1 (ko) | 2010-05-17 | 2014-04-18 | 에스케이 텔레콤주식회사 | 인트라 블록 및 인터 블록이 혼합된 코딩블록을 이용하는 영상 부호화/복호화 장치 및 그 방법 |
| KR101215152B1 (ko) | 2011-04-21 | 2012-12-24 | 한양대학교 산학협력단 | 인루프 필터링을 적용한 예측 방법을 이용한 영상 부호화/복호화 방법 및 장치 |
| US9807401B2 (en) * | 2011-11-01 | 2017-10-31 | Qualcomm Incorporated | Transform unit partitioning for chroma components in video coding |
| AU2013202653A1 (en) | 2013-04-05 | 2014-10-23 | Canon Kabushiki Kaisha | Method, apparatus and system for generating intra-predicted samples |
| JP6462693B2 (ja) | 2013-12-13 | 2019-01-30 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | 3dビデオコーディングにおける深度イントラ予測モードおよび深度インター予測モードのための簡易深度コーディング(sdc)のシグナリング |
| CN105493505B (zh) | 2014-06-19 | 2019-08-06 | 微软技术许可有限责任公司 | 统一的帧内块复制和帧间预测模式 |
| US9749646B2 (en) | 2015-01-16 | 2017-08-29 | Microsoft Technology Licensing, Llc | Encoding/decoding of high chroma resolution details |
| CN115134594B (zh) | 2015-06-05 | 2024-07-23 | 杜比实验室特许公司 | 用于执行帧间预测的图像编解码方法、比特流存储方法 |
| US20160373742A1 (en) | 2015-06-18 | 2016-12-22 | Qualcomm Incorporated | Intra prediction and intra mode coding |
| US10142627B2 (en) | 2015-06-18 | 2018-11-27 | Qualcomm Incorporated | Intra prediction and intra mode coding |
| EP3340620B1 (en) | 2015-08-23 | 2024-10-02 | LG Electronics Inc. | Inter prediction mode-based image processing method and apparatus therefor |
| WO2017039117A1 (ko) | 2015-08-30 | 2017-03-09 | 엘지전자(주) | 영상의 부호화/복호화 방법 및 이를 위한 장치 |
| KR102775879B1 (ko) | 2015-09-10 | 2025-02-28 | 엘지전자 주식회사 | 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
| KR20170059718A (ko) | 2015-11-23 | 2017-05-31 | 삼성전자주식회사 | 디코딩 장치 및 그 방법 |
| US11032550B2 (en) | 2016-02-25 | 2021-06-08 | Mediatek Inc. | Method and apparatus of video coding |
| CN114401402B (zh) | 2016-07-05 | 2024-06-14 | 株式会社Kt | 用于处理视频信号的方法和装置 |
| US10116957B2 (en) | 2016-09-15 | 2018-10-30 | Google Inc. | Dual filter type for motion compensated prediction in video coding |
| WO2019076138A1 (en) | 2017-10-16 | 2019-04-25 | Huawei Technologies Co., Ltd. | Encoding method and apparatus |
| US11297348B2 (en) | 2018-04-13 | 2022-04-05 | Mediatek Inc. | Implicit transform settings for coding a block of pixels |
| WO2020009086A1 (ja) | 2018-07-04 | 2020-01-09 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法及び復号方法 |
| CN112840654B (zh) | 2018-10-12 | 2024-04-16 | 韦勒斯标准与技术协会公司 | 使用多假设预测的视频信号处理方法和装置 |
| WO2020141816A1 (ko) | 2018-12-31 | 2020-07-09 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
| US11290726B2 (en) | 2019-02-07 | 2022-03-29 | Qualcomm Incorporated | Inter-intra prediction mode for video data |
| CN113632493B (zh) | 2019-03-13 | 2024-07-12 | 北京字节跳动网络技术有限公司 | 变换跳过模式中的子块变换 |
| US11611759B2 (en) | 2019-05-24 | 2023-03-21 | Qualcomm Incorporated | Merge mode coding for video coding |
| CN114128258B (zh) | 2019-07-14 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 视频编解码中的变换块尺寸的限制 |
| JP7665212B2 (ja) | 2019-07-25 | 2025-04-21 | ウィルス インスティテュート オブ スタンダーズ アンド テクノロジー インコーポレイティド | ビデオ信号処理方法及び装置 |
-
2020
- 2020-07-24 JP JP2022505306A patent/JP7665212B2/ja active Active
- 2020-07-24 CN CN202080053632.8A patent/CN114208205A/zh active Pending
- 2020-07-24 WO PCT/KR2020/009783 patent/WO2021015586A1/ko not_active Ceased
- 2020-07-24 US US17/629,385 patent/US12081735B2/en active Active
- 2020-07-24 EP EP20844004.0A patent/EP4007282B1/en active Active
- 2020-07-24 KR KR1020227002072A patent/KR20220036942A/ko active Pending
- 2020-07-24 EP EP24209367.2A patent/EP4542988A1/en active Pending
-
2024
- 2024-01-05 JP JP2024000706A patent/JP7683963B2/ja active Active
- 2024-02-22 US US18/584,910 patent/US12301797B2/en active Active
-
2025
- 2025-04-03 US US19/169,432 patent/US20250233984A1/en active Pending
- 2025-05-08 JP JP2025078081A patent/JP2025111809A/ja active Pending
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20140136428A (ko) * | 2012-02-29 | 2014-11-28 | 엘지전자 주식회사 | 인터 레이어 예측 방법 및 이를 이용하는 장치 |
| KR20150081236A (ko) * | 2014-01-03 | 2015-07-13 | 삼성전자주식회사 | 효율적인 파라미터 전달을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치 |
| KR20180007345A (ko) * | 2016-07-12 | 2018-01-22 | 한국전자통신연구원 | 영상 부호화/복호화 방법 및 이를 위한 기록 매체 |
Non-Patent Citations (3)
| Title |
|---|
| BROSS, Benjamin et al. Versatile Video Coding (Draft 6). Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11. JVET-O2001-vC. 15th Meeting: Gothenburg, SE. PP. 1-419, 24 July 2019 [Retrieved on: 12 October 2020]. Retrieved from: <http://phenix.int-evry.fr/jvet></http:>. See abstract, and pages 17, 33-40, 69, 150-153 and 202-266. * |
| BROSS, Benjamin et al. Versatile Video Coding (Draft 7). Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11. JVET-P2001-v5. 16th Meeting: Geneva, CH. PP. 1-446, 13 October 2019 [Retrieved on: 12 October 2020]. Retrieved from: <http://phenix.int-evry.fr/jvet></http:>. See abstract, and pages 19, 36-44, 71, 152-154 and 203-273. * |
| See also references of EP4007282A4 * |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11601641B2 (en) | 2018-10-12 | 2023-03-07 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and apparatus using multi-assumption prediction |
| US12047562B2 (en) | 2018-10-12 | 2024-07-23 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and apparatus using multi-assumption prediction |
| US12425577B2 (en) | 2018-10-12 | 2025-09-23 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and apparatus using multi-assumption prediction |
| US12081735B2 (en) | 2019-07-25 | 2024-09-03 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and device |
| US12301797B2 (en) | 2019-07-25 | 2025-05-13 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and device |
Also Published As
| Publication number | Publication date |
|---|---|
| EP4007282A1 (en) | 2022-06-01 |
| JP7665212B2 (ja) | 2025-04-21 |
| JP2022543207A (ja) | 2022-10-11 |
| CN114208205A (zh) | 2022-03-18 |
| JP2024038271A (ja) | 2024-03-19 |
| US20240195954A1 (en) | 2024-06-13 |
| US20250233984A1 (en) | 2025-07-17 |
| US12301797B2 (en) | 2025-05-13 |
| JP2025111809A (ja) | 2025-07-30 |
| KR20220036942A (ko) | 2022-03-23 |
| US20220279162A1 (en) | 2022-09-01 |
| JP7683963B2 (ja) | 2025-05-27 |
| EP4007282B1 (en) | 2024-11-13 |
| EP4542988A1 (en) | 2025-04-23 |
| US12081735B2 (en) | 2024-09-03 |
| EP4007282A4 (en) | 2022-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2021015586A1 (ko) | 비디오 신호 처리 방법 및 장치 | |
| WO2020149725A1 (ko) | 모션 보상을 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2020222588A1 (ko) | 적응적 모션 벡터 해상도를 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2020122654A1 (ko) | 현재 픽쳐 참조를 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2020076036A1 (ko) | 복수개의 참조 라인을 위한 mpm 구성 방법을 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2020111843A1 (ko) | 화면 내 예측 필터링을 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2020076143A1 (ko) | 다중 가정 예측을 사용하는 비디오 신호 처리 방법 및 장치 | |
| WO2019190224A1 (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
| WO2021015524A1 (ko) | 비디오 신호 처리 방법 및 장치 | |
| WO2020067835A1 (ko) | 어파인 예측을 이용하여 비디오 신호를 처리하기 위한 방법 및 장치 | |
| WO2020159198A1 (ko) | 영상 신호 부호화/복호화 방법 및 이를 위한 장치 | |
| WO2019177354A1 (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
| WO2020085800A1 (ko) | 서브블록 기반의 모션 보상을 이용한 비디오 신호 처리 방법 및 장치 | |
| WO2018226015A1 (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
| WO2017043816A1 (ko) | 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 | |
| WO2017039117A1 (ko) | 영상의 부호화/복호화 방법 및 이를 위한 장치 | |
| WO2018097693A2 (ko) | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 | |
| WO2018012851A1 (ko) | 영상 부호화/복호화 방법 및 이를 위한 기록 매체 | |
| WO2021125912A1 (ko) | 비디오 신호 처리 방법 및 이를 위한 장치 | |
| WO2020139061A1 (ko) | 화면 간 예측 부호화 및 복호화 방법 및 장치 | |
| WO2016137149A1 (ko) | 폴리곤 유닛 기반 영상 처리 방법 및 이를 위한 장치 | |
| WO2020171681A1 (ko) | 인트라 예측 기반 비디오 신호 처리 방법 및 장치 | |
| WO2020197290A1 (ko) | 영상 부호화/복호화 방법 및 장치 | |
| WO2019194425A1 (ko) | 영상 부호화 또는 복호화에 인공 신경망을 적용하는 장치 및 방법 | |
| WO2020067700A1 (ko) | 영상 부호화/복호화 방법 및 장치 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20844004 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2022505306 Country of ref document: JP Kind code of ref document: A |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2020844004 Country of ref document: EP |