WO2016175549A1 - 비디오 신호의 처리 방법 및 이를 위한 장치 - Google Patents

비디오 신호의 처리 방법 및 이를 위한 장치 Download PDF

Info

Publication number
WO2016175549A1
WO2016175549A1 PCT/KR2016/004384 KR2016004384W WO2016175549A1 WO 2016175549 A1 WO2016175549 A1 WO 2016175549A1 KR 2016004384 W KR2016004384 W KR 2016004384W WO 2016175549 A1 WO2016175549 A1 WO 2016175549A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
current block
prediction
motion vector
coding
Prior art date
Application number
PCT/KR2016/004384
Other languages
English (en)
French (fr)
Inventor
박내리
박승욱
임재현
김철근
서정동
유선미
남정학
Original Assignee
엘지전자 주식회사
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to CN201680024443.1A priority Critical patent/CN107534767A/zh
Priority to US15/570,139 priority patent/US20180131943A1/en
Priority to KR1020177034309A priority patent/KR20180020965A/ko
Publication of WO2016175549A1 publication Critical patent/WO2016175549A1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/96Tree coding, e.g. quad-tree coding

Definitions

  • the present invention relates to a video processing method, and more particularly, to a method and apparatus for processing a video signal using inter prediction.
  • An object of the present invention is to provide a method capable of efficiently processing a video signal and an apparatus therefor.
  • Another object of the present invention is to reduce prediction error and improve coding efficiency by performing inter prediction by applying motion information of a neighboring block.
  • Still another object of the present invention is to reduce prediction error and improve coding efficiency by smoothing the prediction value of the current block by using the prediction value of the neighboring block.
  • a method of decoding a bitstream for a video signal in a decoding apparatus comprising: obtaining a prediction value for the current block based on a motion vector of the current block; And restoring the current block based on the prediction value for the current block, and if a specific condition is satisfied, obtaining the prediction value for the current block comprises: placing a region at a specific boundary of the current block; Obtaining a first prediction value by applying a motion vector of a neighboring block adjacent to the region, obtaining a second prediction value by applying a motion vector of the current block to the region, and applying a first weight to the first prediction value And applying a second weight to the second predicted value to obtain a weighted sum.
  • a decoding apparatus configured to decode a bitstream for a video signal, the decoding apparatus comprising a processor, the processor predicting a value for the current block based on a motion vector of the current block.
  • obtaining a prediction value for the current block includes: a region located at a specific boundary of the current block; Obtaining a first prediction value by applying a motion vector of a neighboring block adjacent to the region, obtaining a second prediction value by applying a motion vector of the current block to the region, and applying a first weight to the first prediction value And applying a second weight to the second prediction value to obtain a weighted sum.
  • the first prediction value is obtained by applying a motion vector of a spatial neighboring block of the current block, and the specific boundary is obtained by the current block.
  • the first prediction value may be obtained by applying a motion vector of a temporal neighboring block of the current block.
  • said spatial neighboring block corresponds to a neighboring block located opposite to said region with respect to said particular boundary within a picture including said current block, said temporal neighboring block being different from a picture containing said current block. It may correspond to a block having a position corresponding to the position of the current block within a picture.
  • the first weight may be set to have a larger value as the first weight is closer to the specific boundary
  • the second weight may be set to have a smaller value as it is closer to the specific boundary
  • the region may correspond to 2 ⁇ 2 blocks or 4 ⁇ 4 blocks.
  • the particular condition is that the motion vector of the current block and the motion vector of the neighboring block are different from each other, and the difference between the motion vector of the current block and the motion vector of the neighboring block is smaller than a threshold and A reference picture and a reference picture of the neighboring block may be the same.
  • flag information indicating whether a prediction using weighted sum is applied to the current block may be obtained through a bitstream, and the specific condition is that the flag information uses weighted sum for the current block. And may indicate that the prediction is to be applied.
  • a video signal can be processed efficiently.
  • the prediction value of the current block is smoothed using the prediction value of the neighboring block, thereby reducing the prediction error and improving the coding efficiency.
  • FIG. 3 illustrates a flowchart of a method of splitting a coding tree block (CTB).
  • CTB coding tree block
  • FIG. 4 illustrates an example of splitting a CTB in a quad tree manner.
  • 5 illustrates syntax information and operation for a coding block.
  • FIG. 6 illustrates syntax information and operation for a transform tree.
  • FIG. 7 illustrates samples reconstructed using the boundary of a prediction block and inter prediction.
  • FIG 8 illustrates an inter prediction method according to the present invention.
  • FIG 9 illustrates a peripheral block in accordance with the present invention.
  • FIG. 10 illustrates a weighted application area in accordance with the present invention.
  • FIG. 15 illustrates a block diagram of an image processing apparatus to which the present invention may be applied.
  • a video signal refers to an image signal or a sequence of pictures that can be perceived by the eye, but in this specification, a video signal is a bit corresponding to a sequence or bit sequence of bits representing a coded picture.
  • a picture may refer to an arrangement of samples, and may be referred to as a frame, an image, or the like. More specifically, a picture may refer to a two-dimensional array or two-dimensional sample array of samples.
  • a sample may refer to a minimum unit constituting a picture, and may be referred to as a pixel, a picture element, a pel, or the like.
  • the sample may include a luminance (luma) component and / or a chrominance, chroma, color difference component.
  • coding may be used to refer to encoding, or may collectively refer to encoding / decoding.
  • the picture may include at least one slice, and the slice may include at least one block.
  • a slice may be configured to include an integer number of blocks for the purpose of parallel processing or the like, for example, for resynchronization of decoding when the bitstream is corrupted due to data loss or the like, and each slice may be coded independently of each other.
  • a block can include at least one sample and can refer to an arrangement of samples. The block may have a size smaller than or equal to the picture.
  • a block may be referred to as a unit.
  • a picture that is currently coded may be referred to as a current picture, and a block that is currently coded may be referred to as a current block.
  • CB coding tree block
  • CTU coding tree unit
  • HEVC High Efficiency Video Coding
  • a block unit such as a coding block (CB) (or a coding unit (CU)), a prediction block (PB) (or a prediction unit (PU)), a transform block (TB) (or a transform unit (TU)), or the like may exist.
  • CB coding block
  • PB prediction block
  • TB transform block
  • TU transform unit
  • the coding tree block refers to the most basic unit constituting the picture, and may be divided into quad-tree shaped coding blocks to increase coding efficiency according to the texture of the picture.
  • the coding block may refer to a basic unit that performs coding, and intra coding or inter coding may be performed on a coding block basis.
  • Intra coding may refer to performing coding using intra prediction
  • intra prediction may refer to performing prediction using samples included in the same picture or slice.
  • Inter coding may refer to performing coding using inter prediction, and inter prediction may refer to performing prediction using samples included in a picture different from the current picture.
  • a block coded using intra coding or a block coded in an intra prediction mode may be referred to as an intra block, and a block coded using inter coding or a block coded in an inter prediction mode may be referred to as an inter block.
  • a coding mode using intra prediction may be referred to as an intra mode, and a coding mode using inter prediction may be referred to as an inter mode.
  • the prediction block may refer to a basic unit for performing prediction.
  • the same prediction may be applied to one prediction block.
  • the same motion vector may be applied to one prediction block.
  • the transform block may refer to a basic unit for performing a transform.
  • Transform may refer to the operation of transforming samples of the pixel domain (or spatial domain or time domain) into transform coefficients of the frequency domain (or transform coefficient domain), or vice versa.
  • the operation of transforming the transform coefficients in the frequency domain (or transform coefficient domain) into samples in the pixel domain (or spatial domain or time domain) may be referred to as inverse transform.
  • the transform may include a discrete cosine transform (DCT), a discrete sine transform (DST), a Fourier transform, and the like.
  • a coding tree block CTB may be mixed with a coding tree unit CTU
  • a coding block CB may be mixed with a coding unit CU
  • a prediction block PB is a prediction unit PU.
  • the encoding apparatus 100 receives an original image 102, performs encoding, and then outputs a bitstream 114.
  • the original image 102 may correspond to one picture, it is assumed in this example that the original image 102 is one block constituting the picture.
  • the original image 102 may correspond to a coding block.
  • the encoding apparatus 100 may determine whether to code in the intra mode or the inter mode with respect to the original image 102. When the original image 102 is included in an intra picture or a slice, the original image 102 may be coded only in the intra mode.
  • intra coding and inter coding may be performed on the original image 102, and then, in preparation for a rate-distortion (RD) cost.
  • RD rate-distortion
  • the encoding apparatus 100 may determine an intra prediction mode showing RD optimization using reconstructed samples of the current picture including the original image 102 (104).
  • the intra prediction mode may be determined as one of a direct current (DC) prediction mode, a planar prediction mode, and an angular prediction mode.
  • the DC prediction mode refers to a mode in which prediction is performed using an average value of reference samples among reconstructed samples of the current picture
  • the planar prediction mode refers to a mode in which prediction is performed using bilinear interpolation of reference samples.
  • the angular prediction mode refers to a mode in which prediction is performed using a reference sample located in a specific direction with respect to the original image 102.
  • the encoding apparatus 100 may output a predicted sample or a prediction value (or predictor) 107 using the determined intra prediction mode.
  • the encoding apparatus 100 When inter coding is performed on the original image 102, the encoding apparatus 100 performs motion estimation (ME) using a reconstructed picture included in the (decoded) picture buffer 122.
  • motion information may be obtained.
  • the motion information may include a motion vector, a reference picture index, and the like.
  • the motion vector may refer to a two-dimensional vector that provides an offset from the coordinates of the original image 102 within the current picture to the coordinates in the reference picture.
  • the reference picture index may refer to an index of a list (or reference picture list) of reference pictures used for inter prediction among reconstructed pictures stored in the (decoded) picture buffer 122, and may be referred to as a reference picture list. Points to the reference picture.
  • the encoding apparatus 100 may output the prediction sample or the prediction value 107 using the obtained motion information.
  • the encoding apparatus 100 may generate the residual data 108 from the difference between the original image 102 and the prediction sample 107.
  • the encoding apparatus 100 may perform transformation on the generated residual data 108 (110). For example, a discrete cosine transform (DCT), a discrete sine transform (DST), and / or a wavelet transform may be applied to the transform. More specifically, integer-based DCTs of size 4x4 to 32x32 may be used, and 4x4, 8x8, 16x16, 32x32 transforms may be used.
  • the encoding apparatus 100 may perform transform 110 to obtain transform coefficient information.
  • the encoding apparatus 100 may generate quantized transform coefficient information by quantizing the transform coefficient information (112). Quantization may refer to an operation of scaling a level of transform coefficient information using a quantization parameter (QP). Accordingly, the quantized transform coefficient information may be referred to as scaled transform coefficient information.
  • the quantized transform coefficient information may be output to the bitstream 116 through entropy coding 114.
  • entropy coding 114 may be performed based on fixed length coding (FLC), variable length coding (VLC), arithmetic coding. More specifically, context-based adaptive binary arithmetic coding (CABAC) based on arithmetic coding, Exp-Golomb coding based on variable length coding, and fixed length coding may be applied.
  • FLC fixed length coding
  • VLC variable length coding
  • CABAC context-based adaptive binary arithmetic coding
  • Exp-Golomb coding based on variable length coding
  • fixed length coding may be applied.
  • the encoding apparatus 100 may generate the reconstructed sample 121 by performing inverse quantization 118 and inverse transform 120 on the quantized transform coefficient information.
  • the reconstructed picture may be generated by obtaining the reconstructed sample 121 with respect to one picture, and then in-loop filtering may be performed on the reconstructed picture.
  • in-loop filtering for example, a deblocking filter and a sample adaptive offset filter may be applied.
  • the reconstructed picture 121 may be stored in the picture buffer 122 and used for encoding of the next picture.
  • the decoding apparatus 200 may receive the bitstream 202 and perform entropy decoding 204.
  • Entropy decoding 204 may refer to the reverse operation of entropy coding 114 of FIG. 1.
  • the decoding apparatus 200 may acquire data necessary for decoding and (quantized) transform coefficient information, including prediction mode information, intra prediction mode information, motion information, and the like through the entropy decoding 204.
  • the decoding apparatus 200 may generate residual data 209 by performing inverse quantization 206 and inverse transform 208 on the obtained transform coefficient information.
  • the prediction mode information obtained through entropy decoding 204 may indicate whether the current block is coded in intra mode or inter mode.
  • the decoding apparatus 200 obtains the prediction sample (or prediction value) 213 from reconstructed samples of the current picture based on the intra prediction mode obtained through the entropy decoding 204. It may be 210.
  • the prediction mode information indicates the inter mode, the decoding apparatus 200 may predict the sample (or prediction value) 213 from the reference picture stored in the picture buffer 214 based on the motion information obtained through the entropy decoding 204. It may be obtained (212).
  • the decoding apparatus 200 may acquire the reconstruction sample 216 for the current block by using the residual data 209 and the prediction sample (or prediction value) 213.
  • in-loop filtering may be performed on the reconstructed picture after reconstructing the picture by acquiring a reconstructed sample 216 for one picture.
  • the reconstructed picture 216 can then be stored in a picture buffer for decoding the next picture or output for display.
  • the video encoding / decoding process requires very high complexity in software (SW) / hardware (HW) processing. Therefore, a picture (or image) may be divided and processed into a basic processing unit, which is a minimum processing unit, to perform a high complexity task using limited resources.
  • a basic processing unit which is a minimum processing unit, to perform a high complexity task using limited resources.
  • one slice may include at least one basic processing unit.
  • the basic processing units included in one picture or slice may have the same size.
  • the video signal or bitstream may include a sequence parameter set (SPS), a picture parameter set (PPS), and at least one access unit.
  • the sequence parameter set includes parameter information of the sequence level (of pictures), and the parameter information of the sequence parameter set may be applied to a picture included in the sequence of pictures.
  • the picture parameter set includes parameter information of a picture level, and the information of the picture parameter set may be applied to each slice included in the picture.
  • An access unit refers to a unit corresponding to one picture and may include at least one slice.
  • a slice may contain an integer number of CTUs.
  • the syntax information refers to data included in the bitstream, and the syntax structure refers to the structure of syntax information present in the bitstream in a specific order.
  • the size of the coding tree block may be determined using parameter information of the SPS.
  • the SPS may include first information indicating a minimum size of the coding block and second information indicating a difference between the minimum size and the maximum size of the coding block.
  • the first information may be referred to as log2_min_luma_coding_block_size_minus3
  • the second information may be referred to as log2_diff_max_min_luma_coding_block_size.
  • each piece of information can be represented by a log2 value of the actual value.
  • the log2 value of the minimum size of the coding block can be obtained by adding a specific offset (eg, 3) to the value of the first information, and the log2 value of the size of the coding tree block is the second to the log2 value of the minimum size of the coding block. Can be obtained by adding the value of the information.
  • the size of the coding tree block can be obtained by shifting 1 by a log2 value to the left.
  • the second information indicating the difference between the minimum size and the maximum size may indicate the maximum number of divisions allowed for the coding block in the coding tree block. Alternatively, the second information may indicate the maximum depth of the coding tree in the coding tree block.
  • the maximum allowable number of divisions of the coding block or the maximum depth of the coding tree in the coding tree block may be determined as m.
  • the coding tree block can be split up to three times in a quad tree manner, and the minimum coding block The size of can be 8 ⁇ 8. Therefore, among the SPS parameter information, the first information (eg, log2_min_luma_coding_block_size_minus3) may have a value of 0, and the second information (log2_diff_max_min_luma_coding_block_size) may have a value of 3.
  • the first information eg, log2_min_luma_coding_block_size_minus3
  • the second information log2_diff_max_min_luma_coding_block_size
  • FIG. 3 illustrates a flowchart of a method of splitting a coding tree block (CTB).
  • CTB coding tree block
  • the CTB is divided into at least one coding block (CB) in a quad tree to improve compression efficiency, and then an intra prediction mode or an inter prediction mode may be determined for the coding block. If the CTB is not split, the CTB may correspond to a CB, in which case the CB may have the same size as the CTB, and an intra prediction mode or an inter prediction mode may be determined for the CTB.
  • CB coding block
  • the CTB When the CTB is split in a quad tree manner, it may be split recursively.
  • the CTB may be divided into four blocks, and then each divided block may be further divided into lower blocks in a quad tree manner.
  • Each block that is finally generated by recursively splitting the CTB in a quad tree manner may be a coding block. For example, if the CTB divides the first, second, third, and fourth blocks, then the first block is divided into the fifth, six, seven, and eight blocks, and the second, third, and fourth blocks are not divided. 2, 3, 4, 5, 6, 7, 8 blocks may be determined as coding blocks. In this example, intra prediction mode or inter prediction mode may be determined for each of the second, 3, 4, 5, 6, 7, 8 blocks.
  • Whether the CTB is split into coding blocks may be determined at the encoder in consideration of the rate distortion (RD) efficiency, and information indicating whether to split may be included in the bitstream.
  • information indicating whether a CTB or a coding block is split into coding blocks having half horizontal / vertical size may be referred to as split_cu_flag.
  • split indication information for a coding block information indicating whether a block is split in the CTB may be referred to as split indication information for a coding block.
  • information indicating whether to split each coding block in the coding quad tree may be obtained from the bitstream to determine whether to split the coding block, and the coding block may be recursively divided in a quad tree manner.
  • the tree structure of a coding block formed by recursively dividing a CTB is called a coding tree or a coding quad tree. If each coding block is no longer split in the coding tree, the block may be finally designated as a coding block.
  • the coding block may be divided into at least one prediction block to perform prediction.
  • the coding block may be divided into at least one transform block to perform the transform.
  • coding blocks can be recursively divided into transform blocks in a quad tree fashion.
  • a structure formed by recursively dividing a coding block in a quad tree manner may be referred to as a transform tree or a transform quad tree.
  • information indicating whether each block is split in the transform tree is a bit. May be included in the stream.
  • split_transform_flag information indicating whether each block is split in the transform tree may be referred to as split indication information for the transform block.
  • FIG. 4 illustrates an example of splitting a CTB in a quad tree manner.
  • the CTB includes a first coding block including blocks 1-7, a second coding block including blocks 8-17, a third coding block corresponding to block 18, and a third including block 19-28. It can be divided into four coding blocks.
  • the first coding block may be divided into a coding block corresponding to block 1, a coding block corresponding to block 2, a fifth coding block including block 3-6, and a coding block corresponding to block 7.
  • the second coding block is no longer split within the coding quad tree, but may be split into additional transform blocks for conversion.
  • the fourth coding block may be divided into a sixth coding block including blocks 19-22, a coding block corresponding to block 23, a coding block corresponding to block 24, and a seventh coding block including blocks 25-28.
  • the sixth coding block may be divided into a coding block corresponding to block 19, a coding block corresponding to block 20, a coding block corresponding to block 21, and a coding block corresponding to block 22.
  • the seventh coding block is no longer split in the coding quad tree, but may be split into additional transform blocks for conversion.
  • information indicating whether to split each of the CTB or the coding block may be included in the bitstream.
  • the CTB or each coding block may be split when the information indicating whether to split has a first value (eg, 1), and the CTB or each when the information indicating whether to split has a second value (eg, 0). Coding blocks are not split.
  • the value of the information indicating whether to divide may vary.
  • split indication information (eg, split_cu_flag) for the CTB, the first coding block, the fourth coding block, and the sixth coding block may have a first value (eg, 1), and the decoder may be a bitstream. From the partition indication information about the corresponding unit can be obtained from the corresponding unit can be divided into four sub-units.
  • split indication information eg, split_cu_flag
  • coding block corresponding to 25-28 may have a second value (eg, 0), and the decoder obtains split indication information for the corresponding unit from the bitstream. Will no longer split the unit.
  • each coding block may be divided into at least one transform block in a quad tree manner according to split indication information for the transform block for transform.
  • the transform block may correspond to the coding block.
  • Other coding blocks (coding blocks corresponding to blocks 3-4, 8-17, 25-28) may be further split for transform.
  • split indication information eg split_transform_flag
  • each unit in a transform tree formed from each coding block eg, coding blocks corresponding to blocks 3-4, 8-17, and 25-28
  • the coding block corresponding to block 3-6 may be divided into transform blocks to form a transform tree of depth 1
  • the coding block corresponding to block 8-17 is depth 3
  • the coding block corresponding to blocks 25-28 may be divided into transform blocks to form a transform tree having a depth of 1.
  • FIG. 5 illustrates syntax information and operation for a coding block
  • FIG. 6 illustrates syntax information and operation for a transform tree.
  • information indicating whether a transform tree structure exists for the current coding block may be signaled through the bitstream, and this information may be referred to herein as transform tree coding indication information or rqt_root_cbf. Can be.
  • the decoder may perform the operation illustrated in FIG. 6 when the transform tree coding indication information is obtained from the bitstream and the transform tree coding indication information indicates that a transform tree exists for the corresponding coding block.
  • the transform tree coding indication information indicates that the transform tree does not exist for the corresponding coding block
  • the transform coefficient information for the corresponding coding block does not exist and the coding block is determined using the (intra or inter) prediction value for the corresponding coding block. Can be restored.
  • the coding block is a basic unit for determining whether to be coded in the intra prediction mode or the inter prediction mode. Therefore, prediction mode information may be signaled through the bitstream for each coding block. The prediction mode information may indicate whether the corresponding coding block is coded using the intra prediction mode or the inter prediction mode.
  • the prediction mode information indicates that the corresponding coding block is coded in the intra prediction mode
  • information used to determine the intra prediction mode may be signaled through the bitstream.
  • the information used to determine the intra prediction mode may include intra prediction mode reference information.
  • the intra prediction mode reference information indicates whether the intra prediction mode of the current coding block is derived from a neighboring (prediction) unit, and may be referred to as, for example, prev_intra_luma_pred_flag.
  • the intra prediction mode candidate list is constructed using the intra prediction mode of the neighboring unit, and the intra prediction mode of the current unit among the configured candidate lists.
  • Index information indicating may be signaled through the bitstream.
  • index information indicating a candidate intra prediction mode used as the intra prediction mode of the current unit in the intra prediction mode candidate list may be referred to as mpm_idx.
  • the decoder may obtain the intra prediction mode reference information from the bitstream and obtain the index information from the bitstream based on the obtained intra prediction mode reference information.
  • the decoder may set the intra prediction mode candidate indicated by the obtained index information to the intra prediction mode of the current unit.
  • the intra prediction mode reference information does not indicate that the intra prediction mode of the current coding block is derived to the neighboring unit
  • information indicating the intra prediction mode of the current unit may be signaled through the bitstream.
  • Information signaled through the bitstream may be referred to as rem_intra_luma_pred_mode, for example.
  • the intra prediction mode of the current unit may be obtained by increasing by a specific value (eg, 1).
  • information indicating an intra prediction mode for the chroma coding block may be signaled through the bitstream.
  • the information indicating the chroma intra prediction mode may be referred to as intra_chroma_pred_mode.
  • the chroma intra prediction mode may be obtained based on Table 1 using information indicating the chroma intra prediction mode and the intra prediction mode (or luma intra prediction mode) obtained as described above.
  • IntraPredModeY indicates luma intra prediction mode.
  • the intra prediction mode represents various prediction modes depending on the value. Through the above-described process, the value of the intra prediction mode may correspond to the intra prediction mode as illustrated in Table 2.
  • INTRA_PLANAR represents a planar prediction mode, a reconstructed sample of an upper neighboring block adjacent to the current block, a reconstructed sample of a left neighboring block, and a lower-left ) Shows a mode of obtaining a prediction value of a current block by performing interpolation on a reconstruction sample of a neighboring block and a reconstruction sample of a right-upper neighboring block.
  • INTRA_DC indicates a direct current (DC) prediction mode and indicates a mode of obtaining a prediction value of the current block by using an average of reconstructed samples of the left neighboring block and the reconstructed samples of the upper neighboring block.
  • INTRA_ANGULAR2 to INTRA_ANGULAR34 indicate an angular prediction mode and indicate a mode for obtaining a prediction value of a current sample using reconstructed samples of a neighboring block located in a direction of a specific angle with respect to a current sample in a current block.
  • the prediction value may be obtained by interpolating neighboring reconstructed samples to generate a virtual sample for the corresponding direction.
  • the intra prediction mode may be obtained for each coding block, but the intra prediction may be performed in units of transform blocks. Therefore, the reconstruction sample of the neighboring block described above may refer to the reconstruction sample existing in the neighboring block of the current transform block.
  • the intra prediction mode is used to obtain a prediction value for the current block, and then a difference between the sample value and the prediction value of the current block can be obtained.
  • the difference between the sample value and the prediction value of the current block may be referred to as residual (or residual information or residual data).
  • residual coefficients may be obtained by obtaining transform coefficient information about the current block from the bitstream and then performing inverse quantization and inverse transform on the obtained transform coefficient information.
  • Inverse quantization may refer to scaling a value of transform coefficient information using quantization parameter (QP) information. Since a transform block is a basic unit that performs a transform, transform coefficient information can be signaled through a bitstream in a transform block unit.
  • QP quantization parameter
  • the residual When performing intra prediction, the residual may be zero. For example, if the sample of the current block and the reference sample for intra prediction are the same, the value of the residual may be zero. If the residual values for the current block are all zeros, the values of the transform coefficient information are also 0, and thus it is not necessary to signal the transform coefficient information through the bitstream. Therefore, information indicating whether transform coefficient information for the corresponding block is signaled through the bitstream may be signaled through the bitstream.
  • Information indicating whether the corresponding transform block has non-zero transform coefficient information is referred to as coded block indication information or coded block flag information, and is referred to herein as cbf. Can be.
  • Coding block indication information for the luma component may be referred to as cbf_luma
  • coding block indication information for the chroma component may be referred to as cbf_cr or cbf_cb.
  • the decoder obtains coding block indication information for the corresponding transform block from the bitstream, and if the coding block indication information indicates that the block includes non-zero transform coefficient information, the decoder determines the bitstream of the transform coefficient information for the corresponding transform block. It can be obtained from, and the residual can be obtained through inverse quantization and inverse transformation.
  • the decoder may obtain a prediction value for the current coding block by obtaining a prediction value in units of transform blocks, and / or obtain a residual for the current coding block by obtaining a residual in units of transform blocks. have.
  • the decoder may reconstruct the current coding block using the prediction value and / or the residual for the current coding block.
  • Discrete cosine transform is widely used as a transform / inverse transform technique. Transformation bases for DCT can be approximated in integer form for less memory and faster computation.
  • the transformation bases approximated by integers may be expressed in matrix form, and the transformation bases expressed in matrix form may be referred to as transformation matrices.
  • integer transforms of size 4x4 to 32x32 are used and 4x4 or 32x32 transformation matrices are provided.
  • the 4x4 transform matrix is used for 4x4 transform / inverse transform
  • the 32x32 transform matrix can be used for 8x8, 16x16, 32x32 transform / inverse transform.
  • the prediction mode information for the current coding block indicates that the current coding block is coded using inter prediction
  • information indicating a partitioning mode of the current coding block may be signaled through the bitstream.
  • Information indicating the partitioning mode of the current coding block may be represented, for example, as part_mode.
  • at least one prediction block may be divided into the current coding block according to a partitioning mode of the current coding block.
  • the partitioning mode may include PART_2Nx2N, PART_2NxN, PART_Nx2N, PART_2NxnU, PART_2NxnD, PART_nLx2N, PART_nRx2N, and PART_NxN.
  • PART_2Nx2N represents the same mode as the current coding block and the prediction block.
  • PART_2NxN represents a mode in which the current coding block is divided into two 2N ⁇ N prediction blocks.
  • PART_Nx2N represents a mode in which the current coding block is divided into two N ⁇ 2N prediction blocks.
  • PART_2NxnU represents a mode in which the current coding block is divided into an upper 2N ⁇ n prediction block and a lower 2N ⁇ (N-n) prediction block.
  • PART_2NxnD represents a mode in which the current coding block is divided into an upper 2N ⁇ (N ⁇ n) prediction block and a lower 2N ⁇ n prediction block.
  • PART_nLx2N represents a mode in which a current coding block is divided into an n ⁇ 2N prediction block on the left side and a (N ⁇ n) ⁇ 2N prediction block on the right side.
  • PART_nRx2N represents a mode in which the current coding block is divided into a (N-n) ⁇ 2N prediction block on the left side and an n ⁇ 2N prediction block on the right side.
  • PART_NxN represents a mode in which the current coding block is divided into four N ⁇ N prediction blocks. For example, n is N / 2.
  • part_mode may be signaled through the bitstream. However, if the current coding block is an intra coding mode, part_mode is signaled only when the size of the current coding block is the minimum size of the coding block, and may indicate whether the current coding block is further divided into four blocks according to the value of part_mode. have.
  • the prediction unit is a unit for performing motion estimation and motion compensation. Therefore, inter prediction parameter information may be signaled through the bitstream in units of prediction units.
  • the inter prediction parameter information may include, for example, reference picture information and motion vector information.
  • Inter prediction parameter information may be derived from a neighboring unit or signaled via a bitstream. The case where the inter prediction parameter information is derived from the neighboring unit is called a merge mode. Accordingly, information indicating whether inter prediction parameter information for the current prediction unit is derived from a neighboring unit may be signaled through the bitstream, and the information may be referred to as merge indication information or merge flag information. have.
  • the merge indication information may be represented by merge_flag, for example.
  • the merge candidate list is constructed using the neighboring unit, and a merge candidate for deriving the inter prediction parameter information of the current unit is obtained from the merge candidate list.
  • the indicating information may be signaled through the bitstream, and the corresponding information may be referred to as merge index information.
  • merge index information may be represented as merge_idx.
  • the neighboring block includes a picture including a current block and a spatial neighboring block including a left neighboring block, an upper neighboring block, an upper left neighboring block, a lower left neighboring block, and an upper right neighboring block within a picture including the current block.
  • the decoder constructs a merge candidate list using the neighboring blocks, obtains merge index information from the bitstream, and sets inter prediction parameter information of the neighboring block indicated by merge index information in the merge candidate list as inter prediction parameter information of the current block. Can be.
  • the inter prediction parameter information when the prediction block corresponds to the coding block and inter prediction is performed on the prediction block, when the inter prediction parameter information is the same as a specific neighboring block and both residuals are 0, the inter prediction parameter information and the transform coefficient information are bits. It does not need to be signaled over the stream.
  • the merge mode since the inter prediction parameter information for the coding block may be derived from the neighboring block, the merge mode may be applied. Therefore, when the coding block is coded using inter prediction, only the merge index information may be signaled through the bitstream for the coding block. Such a mode is called a merge skip mode. That is, in the merge skip mode, the syntax information for the coding block is not signaled except for the merge index information (eg, merge_idx).
  • skip flag information may be signaled through the bitstream to indicate that syntax information is no longer needed except for merge index information (eg, merge_idx) for the corresponding coding block.
  • merge index information eg, merge_idx
  • the information may be referred to as cu_skip_flag.
  • the decoder may obtain skip flag information on the coding block in the slice other than the intra coding mode and restore the coding block in the merge skip mode according to the skip flag information.
  • the inter prediction parameter of the current prediction block may be signaled through the bitstream.
  • Reference picture index information for reference picture list 0 and / or reference picture index information for reference picture list 1 may be signaled through the bitstream depending on whether the current prediction block is L0 prediction and / or L1 prediction.
  • information representing a motion vector difference and information representing a motion vector predictor may be signaled through a bitstream.
  • the information indicating the motion vector prediction value is index information indicating a candidate used as a motion vector prediction value of the current block among a motion vector prediction value candidate list consisting of motion vectors of neighboring blocks, and may be referred to as motion vector prediction value indication information.
  • the motion vector prediction value indication information may be represented, for example, by mvp_l0_flag or mvp_l1_flag.
  • the decoder obtains the motion vector prediction value based on the motion vector prediction value indication information, obtains the motion vector difference from the bitstream, obtains the motion vector difference, and then uses the motion vector prediction value and the motion vector difference to obtain a motion vector for the current block. Information is available.
  • the same / similar principle may be applied to the transform block except that inter prediction is performed in units of prediction blocks. Therefore, when the current coding block is coded using inter prediction, the current coding block is divided into at least one transform block in a quad tree manner, and coding block indication information (eg, cbf_luma, cbf_cb, Residual may be obtained by obtaining transform coefficient information based on cbf_cr) and performing inverse quantization and inverse transform on the obtained transform coefficient information.
  • coding block indication information eg, cbf_luma, cbf_cb, Residual
  • the decoder can obtain a prediction value for the current coding block by obtaining a prediction value in units of prediction blocks, and / or obtain a residual for the current coding block in units of transform blocks. have.
  • the decoder may reconstruct the current coding block using the prediction value and / or the residual for the current coding block.
  • the HEVC divides and processes one image (or picture) into coding tree blocks having a constant size to process a video signal.
  • the coding tree block is divided into at least one coding block in a quad tree manner, and in order to increase the prediction efficiency of the coding block, the coding block is divided into prediction blocks of various sizes and shapes, and each prediction block unit. Prediction is performed with.
  • two adjacent blocks may belong to different coding blocks by a quadtree coding block division scheme.
  • at least a portion of a pixel or sub-block positioned at the boundary of the block may be continuous with the texture of another adjacent block. Therefore, the actual motion vector for the pixel or sub block located at the boundary of the block may be the same as the motion vector of the adjacent block, and applying the motion vector of the adjacent block to the pixel or sub block may further reduce the prediction error.
  • a pixel or subblock located at the boundary of two adjacent blocks may constitute the texture of another adjacent block, rather than the texture of that block, so a pixel or subblock located at the boundary of that block may be composed of other adjacent blocks. It may be more efficient to perform inter prediction and / or motion compensation by applying the motion vector of.
  • discontinuity may occur in a reference block indicated by the motion vector.
  • prediction values of the corresponding blocks may be discontinuous, and thus a prediction error tends to increase at a block boundary.
  • continuity may not be maintained between two reference blocks due to different motion vectors.
  • a predictor obtained by performing inter prediction is obtained based on the difference between the original image and the reference block, discontinuity may increase in the predicted value of two adjacent blocks.
  • a prediction error may be large at two adjacent block boundary portions, and may cause blocking artifacts.
  • the prediction error increases, the residual value increases and the number of bits for the residual data increases and the coding efficiency decreases.
  • FIG. 7 illustrates samples reconstructed using the boundary of a prediction block and inter prediction.
  • FIG. 7A illustrates a boundary of a prediction block formed by dividing a part of a picture into coding blocks in a quad tree manner, and then splitting each coding block into at least one prediction block, and FIG. Only the reconstructed samples are shown except the boundary of the prediction block.
  • the prediction block may have various sizes and shapes according to the depth of the coding tree and the partitioning mode of the coding block.
  • the texture of each block is not continuous.
  • different motion vectors are applied by performing motion estimation and motion compensation on each prediction block, thereby increasing the prediction error at the boundary of the prediction block.
  • the boundary of the prediction block may be confirmed due to blocking artifacts. In other words, it can be seen that a large prediction error appears at the boundary between prediction blocks.
  • the present invention proposes a method of reducing the prediction error of the block boundary portion and the residual in consideration of the motion vector or the prediction value of the neighboring block.
  • the coding block may be represented by CB and the prediction block may be represented by PB.
  • an adjacent block may be processed as another coding block by a quadtree coding block (CB) splitting method.
  • the actual motion vector for the pixel or sub-block located at the boundary of the block may be the same as the motion vector of the adjacent block, and it may be efficient to apply the motion vector of the adjacent block to the pixel or sub-block.
  • the predictor for the boundary pixel or sub-block of the current block adjacent to the neighboring block is further found when the motion block of the neighboring block is found as the motion information of the neighboring block. Can be accurate.
  • a weighted sum is applied between a prediction value obtained by applying a motion vector of a block adjacent to a specific region (eg, a region located at a boundary) of the current block and a prediction value obtained by applying a motion vector of the current block. It is proposed to generate a new prediction value. Specifically, for a current block (eg, coding block or prediction block) (or a specific region of the current block), a first prediction value is obtained based on a motion vector of the current block, and based on a motion vector of a neighboring block adjacent to the specific region. The second prediction value for the specific region of the current block can be obtained.
  • a weighted sum is obtained by weighting the first predicted value and / or the second predicted value and the obtained weighted sum is set as a predicted value for a specific region or a predicted value for the current block is obtained based on the obtained weighted sum. can do.
  • the weighted sum may correspond to the average of the two prediction values.
  • the specific area of the current block may include pixels or sub blocks located at the boundary of the current block.
  • the sub block may correspond to a 2 ⁇ 2 block or a 4 ⁇ 4 block or more blocks.
  • the new prediction value proposed in the present invention By using the new prediction value proposed in the present invention, coding efficiency of residual data can be improved. Specifically, according to the present invention, even when the motion vectors of two adjacent blocks are different from each other, the prediction value according to the motion vector of the adjacent blocks is considered with respect to a specific region (eg, a boundary region) of the current block. The prediction error can be reduced. In addition, according to the present invention, not only the blocking artifacts can be reduced in a specific area of the block, but also the residual data can be reduced, thereby significantly improving coding efficiency.
  • FIG 8 illustrates an inter prediction method according to the present invention.
  • the current block 810 may correspond to a coding block (CB) or a prediction block (PB), MV C represents a motion vector of the current block, and MV N represents a neighboring block 820 adjacent to the current block. Represents a motion vector.
  • the specific region 830 of the current block when the motion vector of the neighboring block 820 is applied, the prediction performance may be better and the prediction error may be smaller than when the motion vector of the current block 810 is applied.
  • the specific area 830 of the current block may include pixels or sub blocks located at specific boundaries of the current block.
  • the current block 810 based on the current block in the motion vector MV C (or a specific area 830) to obtain a first prediction value for, and based on the motion vector MV N in the neighboring blocks
  • a second prediction value for the specific region 830 of the current block 810 may be obtained.
  • a prediction value for a specific region 830 of the current block 810 may be obtained, or a prediction value for the current block 810 may be obtained.
  • the weighted sum of the first prediction value and the second prediction value may be replaced or set with the prediction value for the specific region 830 of the current block 810.
  • a candidate neighboring block having a motion vector for a specific region (eg, a boundary region) of the current block see the proposed method 1-1 of the present invention.
  • a predictor region to which a weighting factor is to be applied (see the proposed method 1-2 of the present invention).
  • a neighboring block having a motion vector that can reduce the prediction error for a specific region (eg, a boundary region) of the current block is a CB / PB or a subblock of CB / PB that is spatially adjacent or available to the current block. Or may include a representative block of CB / PB.
  • the neighboring block according to the present invention may include a CB / PB, a subblock of CB / PB, or a representative block of CB / PB, which is adjacent to or available in time in the current block.
  • the number of neighboring blocks for the current block can be one, multiple or multiple combinations.
  • a neighboring block (spatially) adjacent to a current block within a picture including the current block may be referred to as a spatial neighboring block, and a position corresponding to the position of the current block in a picture different from the picture including the current block.
  • a block having and a neighboring block temporally adjacent to the current block may be referred to as a temporal neighboring block.
  • the availability of a neighboring block (for inter prediction) means that the block (CB or PB) is present in the picture containing the current block, is in the same slice or tile as the current block, and coded in inter prediction mode. May be referred to.
  • a tile refers to a rectangular area that includes at least one coding tree block or unit within a picture.
  • the representative block may refer to a block having a representative value (eg, a median value, an average value, a minimum value, a majority) of motion vectors of a plurality of blocks, or a block applying a representative value.
  • a neighboring block having a motion vector for a specific region (eg, a boundary region) of the current block may be determined according to one of (1-1-a) to (1-1-e).
  • MERGE may refer to the merge mode described above
  • SKIP may refer to the merge skip mode described above.
  • AMVP Advanced Motion Vector Prediction
  • TMVP Temporal Motion Vector Prediction
  • the neighboring block may correspond to a spatial neighboring block located opposite to a specific area of the current block based on a specific boundary of the current block.
  • FIG. 9 illustrates a peripheral block in accordance with the present invention.
  • Fig. 9A illustrates peripheral blocks according to (1-1-a) to (1-1-c)
  • Fig. 9B illustrates peripheral blocks according to (1-1-d).
  • a neighboring block includes a left neighboring block, an upper neighboring block, an upper left neighboring block, and a lower left neighboring block adjacent to the current block in a picture including the current block (CB or PB).
  • a spatial neighboring block including a right-top neighboring block and a temporal neighboring block (or co-located) at a position corresponding to the current block in a picture different from the picture including the current block, or a combination of two or more thereof It may include.
  • the neighboring block according to the present invention may include at least one of all sub blocks or representative blocks spatially and / or temporally adjacent to the current block, or may include a combination of two or more thereof.
  • a prediction error may be smaller when using a predictor found by the motion vector of the neighboring block.
  • a region in which the prediction error becomes small may be different.
  • a relationship between a specific region of the current block and the neighboring block may be represented as shown in FIG. 10.
  • a weighted sum may be applied to a region where the prediction error may be small, and the region may include pixels or blocks.
  • the specific region according to the present invention is a prediction value obtained by applying the motion vector of the current block to the corresponding region in the current block and the prediction value obtained by applying the motion vector of the neighboring block to the region according to the proposed method 1 of the present invention. Refers to a region for obtaining a prediction value using a weighted sum of.
  • the specific region according to the present invention may include a pixel or at least one block located at the left boundary of the current block.
  • the particular area according to the present invention is a pixel located at the left boundary or at least one 2 ⁇ 2 or 4 ⁇ 4 block or more blocks. (Eg, see examples of the first row and the first column of FIG. 10).
  • the particular area according to the present invention may be set adjacent to the neighboring block and the same height as the neighboring block (eg, FIG. See example in row 1 of 10, column 2.
  • the width of the specific region may include 1, 2, 4 or more pixels.
  • certain regions of the present invention may be set adjacent to the neighboring block and have the same height or width as the neighboring block (eg, See examples of the first and third columns of FIG. 10).
  • the width or height of the specific region may include 1, 2, 4 or more pixels.
  • the weighted sum or average may be obtained by applying motion vectors of adjacent neighboring blocks to the corresponding block.
  • a specific region according to the present invention may include pixels or at least one block located at an upper boundary of the current block.
  • the particular area according to the present invention is a pixel or at least one 2 ⁇ 2 or 4 ⁇ 4 block or more blocks located at the upper boundary. (Eg, see examples of the first row and the fourth column of FIG. 10).
  • the particular area according to the present invention may be set adjacent to the neighboring block and the same width as the neighboring block (eg, FIG. 1st row of 10, see example of 5th column).
  • the height of the specific region may include 1, 2, 4, or more pixels.
  • a specific region according to the present invention has a horizontal coordinate corresponding to the upper neighboring block and a block having a vertical coordinate corresponding to the left neighboring block. It may include. It may include a pixel located at an upper boundary of the current block or at least one block.
  • the specific region according to the present invention may be described above.
  • the prediction value of the specific region may be obtained by applying a weighted sum of prediction values by applying the motion vector of the leftmost neighboring block and the motion vector of the uppermost neighboring block to a specific region.
  • the specific area according to the present invention may include pixels or at least one block located at an upper boundary of the current block.
  • the particular area according to the present invention may include a block in the form of pixels or triangles located at the top-right corner (eg, FIG. 2nd row of 10, see example of 1st column). In this case, one side of the triangular block may include 2, 4, or more pixels.
  • the surrounding block is a (spatial) right-top neighboring block in accordance with the present invention
  • the particular area according to the present invention may comprise a plurality of (eg, four) pixels or sub-blocks located at the top-right corner. (Eg, see examples of the second row, fourth column of FIG. 10).
  • a plurality of 2x2 or 4x4 blocks or more blocks may be included.
  • different weights may be applied to each of the plurality of pixels or blocks.
  • the same / similar principle can be applied even when the neighboring block is a (spatial) lower left neighboring block adjacent to the current block (e.g., see examples of the second row, second column, and fifth column of FIG. 10), and the neighboring block
  • the same / similar principle can also be applied in the case of adjacent (spatial) upper left neighboring blocks (eg, see examples of the second row, third and sixth columns of FIG. 10).
  • the particular area according to the present invention is at least located in the entire current block (e.g., in the example of the third row, the first column of FIG. 10), or at a specific boundary of the current block. It can include pixels or blocks.
  • the particular area according to the present invention includes pixels or subblocks located at the right boundary of the current block (e.g., the third in FIG. 10). Rows, see example of the second column), or include pixels or subblocks located on the lower boundary of the current block (eg, see example of the third row, third column of FIG.
  • each sub block may include 2, 4 or more pixels, and one side of the triangular block may include 2, 4 or more pixels.
  • weights may be applied to each of the plurality of pixels or blocks.
  • the specific region (or the pixel or block to which the weighted sum is to be applied) according to the present invention may vary depending on the characteristics of the current block and the neighboring block. For example, as the characteristics of the block, the size of the current block, the size of the neighboring block, the prediction mode of the current block, the difference between the motion vector of the current block and the neighboring block, the real edge of the boundary of the current block and the neighboring block Whether or not can be considered.
  • the influence on the boundary portion of the current block may be small, and thus may be one of criteria for determining a weighted application area.
  • the mode of the current block is MERGE (or merge mode)
  • the weighted sum may not be applied since the merge candidate has the same motion vector.
  • the larger the difference between the motion vector of the current block and the neighboring block the greater the discontinuity of the boundary portion.
  • the discontinuity characteristic of the boundary portion of the block may be due to a real edge.
  • the characteristics of the block may be reflected based on at least one of (1-2-a) to (1-2-j).
  • the weighted application area may be changed as shown in Table 3.
  • Weighted sum is applied when the reference picture is different (eg, when the picture order count (POC) of the reference picture is different) even if the motion vector difference between the current block and the neighboring block is smaller than the threshold. I never do that.
  • a weighted sum may be applied when the motion vector difference between the current block and the neighboring block is smaller than the threshold and the reference picture is the same (eg, when the POCs of the reference picture are the same).
  • the neighboring block is an intra CU / PU, it assumes that there is no motion (has zero motion and zero refIdx) and performs weighted sum.
  • the weighted application area is determined in consideration of the directionality of the intra prediction mode.
  • the present invention weights the prediction value found with the motion vector of the neighboring block and the prediction value found with the motion vector of the current block.
  • the area to which the weighting factor is to be applied may be a pixel or a block, and the same or different weight may be applied to each pixel or block.
  • the same weight may be applied to the first prediction value obtained by applying the motion vector of the current block and the second prediction value obtained by applying the motion vector of the neighboring block to a specific region according to the present invention. May be an average of the first prediction value and the second prediction value.
  • the same weight is applied to each sample of the first prediction value for a particular region and the same weight is applied to each sample of the second prediction value, but the weight for the first prediction value and the weight for the second prediction value May be different.
  • weights may be independently and / or differently applied in a pixel unit or a block unit to a first prediction value for a specific region according to the present invention, and independently in a pixel unit or a block unit for a second prediction value. And / or may be weighted differently, and the weight for the first prediction value and the weight for the second prediction value may be set equal or different.
  • a larger weight is applied to the predicted value obtained by applying the motion vector of the neighboring block than the predicted value obtained by applying the motion vector of the current block as the pixel or the block closer to the neighboring block.
  • a weight may be set such that a first prediction value is reflected more than a second prediction value for a pixel or block that is closer to the neighboring block than a pixel or block that is far from the neighboring block, or to pixels or blocks that are close to the neighboring block.
  • the weight may be set to reflect the first prediction value smaller than the second prediction value for pixels or blocks far from the neighboring block.
  • the ratio of the weights for the first prediction value to the second prediction value and the weights for the second prediction value for the pixel or block near the neighboring block may be the weight and the second prediction value for the first prediction value for the pixel or block farther from the neighboring block.
  • the weight may be set to be greater than the ratio of the weights.
  • the weight for the first prediction value may be set / applied independently and / or differently on a pixel or block basis
  • the weight for the second prediction value may be set / applied independently and / or differently on a pixel or block basis.
  • the weights for the first prediction value and the weights for the second prediction value may be set to be the same or different from each other.
  • a smaller weight may be applied to the pixel or the block close to the neighboring block (or the boundary), or the pixel or the block close to the neighboring block (or the boundary). Larger weights may be applied for.
  • FIG. 11 illustrates weights in accordance with the present invention. As illustrated in FIG. 11, various weights may be applied according to the position of the neighboring block and the weighted application area. In the example of FIG. 11, only the case where the neighboring block is the left neighboring block or the upper left neighboring block is illustrated, but the principle illustrated in FIG. 11 may be applied to other examples of the same / similarity (eg, see other examples of FIG. 10).
  • the neighboring block and the specific region according to the present invention are shown as 4 ⁇ 4 blocks in the example of FIG. 11, the present invention is not limited thereto, and the neighboring block and / or the specific region according to the present invention have different sizes of blocks or pixels. Even if the same / similar can be applied.
  • P N represents a predicted value obtained by applying a motion vector of a neighboring block to a specific region according to the present invention
  • P C represents a predicted value obtained by applying a motion vector of a current block.
  • a neighboring block is a (spatial) left neighboring block and a specific region according to the present invention may be a lower left corner pixel or a block in the current block. Therefore, for the first prediction value (eg, P N ) obtained by applying the motion vector of the neighboring block to the region according to the present invention, a larger weight (eg, A>B>) is applied to a pixel close to the neighboring block (or boundary). C> D) can be applied.
  • the weight for the first prediction value (eg, PN) obtained by applying the motion vector of the neighboring block is increased. It may be set to be larger than the weight for the second prediction value (eg, PC) obtained by applying the motion vector of the current block. More specifically, for the pixel A that is closest to the neighboring block (or boundary), the first prediction value (eg, PN) is higher than the second prediction value (eg, PC) than the other pixels B, C, and D.
  • the weight for the first predicted value and the weight for the second predicted value may be set to be greatly reflected.
  • a neighboring block is a (spatial) upper left neighboring block and a specific region according to the present invention may be an upper left corner pixel or a block in the current block. Therefore, the closer to the upper left corner of the current block, the greater the weight (for example, A> B) for the first predicted value (for example, P N ) obtained by applying the motion vector of the neighboring block to a specific region according to the present invention. Can be applied.
  • the weight for the first prediction value (eg, PN) obtained by applying the motion vector of the neighboring block is increased. It may be set to be larger than the weight for the second prediction value (eg, PC) obtained by applying the motion vector. More specifically, for the pixel A close to the upper left corner, the first predicted value (eg, PN) is larger than the second predicted value (eg, PC) than the other pixels B. Weights and weights for the second prediction value may be set. Thus, the ratio between the weight for the first prediction value and the weight for the second prediction value (e.g.
  • the specific area according to the present invention is a block adjacent to the left boundary and the width corresponds to two pixels. Similarly, in this case, the closer to the left boundary, the greater the weight (eg, A> B) may be applied to the first prediction value (eg, P N ) obtained by applying the motion vector of the neighboring block.
  • the first prediction value (eg, PN) has a second prediction value (eg, PC) compared to the other pixels B.
  • FIG. The weights for the first predicted value and the weights for the second predicted value may be set to reflect more than.
  • the weight value, the position of the neighboring block, and the weighted application region illustrated in FIG. 11 are only examples, and the present invention is not limited thereto.
  • Information indicating whether or not to use weighted polymerization may be signaled through one or more methods of (1-4-a) to (1-4-f).
  • the information indicating whether to use the weighted sum may be referred to as weighted use instruction information or weighted use flag information.
  • weighted use instruction information When the value of the weighted use instruction information is 1, it indicates that the weighted use is used, and the value is If it is 0, it may indicate that the weighted sum is not used, but this is only an example and the weighted use indication information according to the present invention may be referred to by another name, and the value may be set in the opposite direction or set differently.
  • SPS sequence parameter set
  • Information indicating whether a weighted sum is used between prediction values may be signaled in an adaptation parameter set (APS).
  • Information signaled through the APS may be applied to a picture to which the APS is applied.
  • Signaling indicating whether a weighted sum is used between prediction values in a coding unit (CU) may be signaled.
  • Information signaled through a CU may be applied to the CU.
  • prediction unit In the prediction unit (PU), information indicating whether a weighted sum is used between prediction values may be signaled. Information signaled through the PU may be applied to the corresponding PU.
  • syntax information may exist in the order of SPS, PPS, APS, slice header, CU, and PU. Therefore, when signaling whether weighted sum is used in a plurality of methods from (1-4-a) to (1-4-f), information signaled through lower level syntax is overridden at the corresponding level and the lower level. Can be applied. For example, whether or not the weighted sum is used is signaled through the SPS, and the indication information indicates that the weighted sum is not used, and whether the weighted sum is used is signaled through the slice header, and the corresponding indication information indicates that the weighted sum is used. In this case, the weighted sum is used only for the slice corresponding to the slice header, and the weighted sum is not used for the remaining slices and pictures except the slice.
  • Information indicating whether the weighted sum is to be applied on a pixel basis or a block basis may be signaled or not signaled through one or more methods of (1-4-g) to (1-4-l).
  • the information indicating whether to apply the weighted sum in units of pixels or in units of blocks may be referred to as weighted unit of application indication information or weighted unit of application flag information. If the value is 0, the value is applied in units of pixels. And a value of 1 can be applied in units of blocks. This is only an example, and the value of the weighted application unit indication information may be set to the opposite or another value.
  • the SPS may signal information indicating whether the weighted sum application region between prediction values is a pixel or a block.
  • the information signaled through the SPS may be applied to all sequences included in the sequence of pictures.
  • a weighted application region between prediction values is a pixel or a block
  • Information signaled through the APS may be applied to a picture to which the APS is applied.
  • (1-4-j) slice header information indicating whether a weighted application region between prediction values is a pixel or a block may be signaled. Information signaled through the slice header may be applied to the slice.
  • information indicating whether a weighted application region between prediction values is a pixel or a block may be signaled.
  • Information signaled through a CU may be applied to the CU.
  • information indicating whether a weighted application region between prediction values is a pixel or a block may be signaled.
  • Information signaled through the PU may be applied to the corresponding PU.
  • weighted application unit when the weighted application unit is signaled in a plurality of ways from (1-4-g) to (1-4-l), it is signaled through the lower level syntax. Information can be applied by overriding the level and its lower level.
  • prediction blocks are divided into various types, such as 2Nx2N, Nx2N, 2NxN, 2NxnU, 2NxnD, nLx2N, or nRx2N, depending on a partitioning mode. Due to such various partitioning modes, the prediction block may have a low tendency to decrease the prediction error in the boundary region of the current block when using the motion vector of the neighboring block. However, because there may still be discontinuities between prediction values of adjacent blocks, it is necessary to lower the prediction error of the boundary region of the block.
  • the proposed method 2 of the present invention proposes a method of removing discontinuity by smoothing a boundary region between prediction values of a block.
  • the prediction value of the current block can be smoothed using the prediction value of the adjacent block.
  • the proposed method 1 uses a predictor obtained by applying a motion vector of a neighboring block to a specific region of the current block, whereas the proposed method 2 of the present invention obtains a motion vector of a neighboring block by applying the motion vector of the neighboring block to the neighboring block.
  • the difference is that it uses the predicted value.
  • the present invention differs from the proposed method 1 in that the proposed method 2 of the present invention smoothes the boundary portion of the current block using the prediction value itself of the neighboring block.
  • the predicted value of the adjacent block is not obtained by applying the motion vector of the adjacent block to a specific region of the current block, but means a predicted value of the adjacent block itself.
  • a weighted sum may be applied to the prediction value of the current block by using the prediction value of the adjacent block to smooth a specific area of the current block. Therefore, in the proposed method 1 of the present invention, if the predicted value of the adjacent block is applied instead of the first predicted value obtained by applying the motion vector of the adjacent block to a specific region of the current block, it may operate in a similar manner to the proposed method 1 of the present invention. .
  • the weighted sum may be applied to adjacent areas having different motion vectors with respect to the predicted value of the current block.
  • the adjacent contiguous area may include a CB / PB, a subblock of CB / PB, or a representative block of CB / PB, which is spatially adjacent or available to the current block.
  • the neighboring block according to the present invention may include a CB / PB, a subblock of CB / PB, or a representative block of CB / PB, which is adjacent to or available in time in the current block.
  • the number of neighboring blocks for the current block can be one, multiple or multiple combinations.
  • the neighboring block to be smoothed according to the proposed method 2 of the present invention may be applied to the same / similar to the neighboring block according to the proposed method 1-1. Accordingly, the neighboring blocks to which smoothing is applied according to the proposed method 2 of the present invention may be determined as described with reference to (1-1-a) to (1-1-e) and / or FIG. 9.
  • the specific region (or pixels or blocks to be smoothed) according to the present invention may vary depending on the characteristics of the current block and the neighboring blocks. For example, as a characteristic of a block, a prediction mode of a current block, a difference between a motion vector of a current block and a neighboring block, and a real edge of a boundary between the current block and a neighboring block may be considered.
  • the mode of the current block is MERGE (or merge mode)
  • merge candidate is determined as the neighboring block
  • smoothing since the same motion vector has the same motion vector, smoothing may not be applied.
  • the larger the difference between the motion vector of the current block and the neighboring block the greater the discontinuity of the boundary portion, and the discontinuity characteristic of the boundary portion of the block may be due to a real edge.
  • the characteristics of the block may be reflected based on at least one of (2-2-a) to (2-2-i).
  • the smoothing application area is determined in consideration of the directionality of the intra prediction mode.
  • the smoothing application area can be determined by combining the above conditions.
  • each rectangle illustrated in FIG. 12 may correspond to a pixel, or a 2 ⁇ 2 block, or a 4 ⁇ 4 block or more blocks.
  • smoothing may be performed on a pixel or a block located at a left boundary and an upper boundary of a coding block by using prediction values of neighboring blocks spatially adjacent to a current coding block.
  • a spatially adjacent block e.g., a pixel or block of PU1 for PU0 or a pixel or block of PU0 for PU1
  • Smoothing may be performed using the predicted value.
  • a prediction value of a block temporally adjacent to the current block (eg, a TMVP candidate or a block at a position corresponding to the current block in a picture different from the picture including the current block) is obtained.
  • the predicted value of the neighboring block and the predicted value found by the motion vector of the current block are smoothed.
  • the area to which the smoothing factor is to be applied may be a pixel or a block, and the same or different smoothing factor may be applied to each pixel or block.
  • the smoothing factor according to the present invention may be set as described with reference to the proposed method 1-3.
  • FIG. 13 illustrates a smoothing factor in accordance with the present invention. As illustrated in FIG. 13, various smoothing factors may be applied according to the position of the neighboring block and the smoothing application area.
  • FIG. 13 illustrates only the case where the neighboring block is the left neighboring block or the temporal neighboring block, the principle illustrated in FIG. 13 may be applied to the other examples (eg, see other examples of FIG. 10).
  • the neighboring block and the specific region according to the present invention are shown as 4 ⁇ 4 blocks in the example of FIG. 13, the present invention is not limited thereto, and the neighboring block and / or the specific region according to the present invention have different sizes of blocks or pixels. Even if the same / similar can be applied.
  • P N denotes the predicted value of the neighboring block
  • P C represents the predicted value for the current block.
  • a neighboring block is a (spatial) left neighboring block and a specific region according to the present invention may be a lower left corner pixel or a block in the current block. Therefore, the closer the pixel is to the neighboring block (or the boundary), the greater the weight for the predicted value (eg, P N ) of the neighboring block than the weight for the predicted value (eg, P C ) of the current block.
  • the adjacent blocks (or borders) the for the nearest pixel (A) a predicted value of neighboring blocks than the other pixels (B, C, D) (for example, P N) is the predicted value of the current block (for example, P C ),
  • a weight for the predicted value (eg, P N ) of the neighboring block and a weight for the predicted value (eg, P C ) of the current block may be set to be reflected larger than). Therefore, prediction values of neighboring blocks to the nearest pixel (for example, A) in adjacent blocks (or boundary) (e.
  • larger weights may be applied to pixels close to the boundary with respect to the predicted value (eg, P N ) of the neighboring block and the predicted value (eg, P C ) of the current block.
  • a neighboring block is a (temporal) neighboring block and a specific region according to the present invention may be a lower right corner pixel or a block in the current block. Therefore, for the pixel A closest to the neighboring block (or boundary), the predicted value (eg, P N ) of the neighboring block is reflected more than the predicted value (eg, P C ) of the current block, compared to other pixels B.
  • the weights for the prediction values (eg, P N ) of the neighboring blocks and the weights for the prediction values (eg, P C ) of the current block may be set. Therefore, prediction values of neighboring blocks to the nearest pixel (for example, A) in adjacent blocks (or boundary) (e.
  • larger weights may be applied as the predicted value (eg, P N ) of the neighboring block and the current block are closer to the boundary with respect to the predicted value (eg, P C ).
  • the smoothing factor value, the position of the neighboring block, and the smoothing application area illustrated in FIG. 13 are only examples, and the present invention is not limited thereto.
  • the method proposed in the proposed method 1-4 may be applied in the same or similar manner.
  • the information indicating whether to use smoothing may be referred to as smoothing use indication information or smoothing use flag information, and may be one or more of the methods (1-4-a) to (1-4-f) described above. Signaled via Similarly, information indicating whether to apply smoothing on a pixel basis or on a block basis may or may not be signaled through one or more methods of (1-4-g) to (1-4-l).
  • the proposed method 1 and the proposed method 2 of the present invention may be applied independently but may be applied in combination.
  • the proposed method 1 may be applied to the boundaries of the coding blocks, and the proposed method 2 may be applied to the boundaries between the prediction blocks in the coding blocks. Therefore, with respect to the boundary of the coding block, a weighted sum is applied to the prediction value obtained by applying the motion vector of the neighboring block to a specific region of the current block and the prediction value of the current block to obtain a new prediction value, and the boundary between the prediction blocks within the coding block. For, it is possible to smooth the prediction value of the current block by applying smoothing to a specific area of the current block using the prediction value of the neighboring block.
  • the proposed method 1 is applied to a pixel or a block located at a left, top, bottom, and right boundary of a coding block, and the boundary between prediction blocks (eg, PU0) is applied to the present invention. And the boundary between PU1), the proposed method 2 of the present invention can be applied.
  • the proposed methods 1 to 3 according to the present invention may be applied to a process of obtaining a predictor through inter prediction when the current block is coded in the inter prediction mode. More specifically, the proposed methods 1 to 3 according to the present invention may be applied to performing inter prediction using inter prediction parameter information in FIG. 5. Therefore, the remaining encoding / decoding process may be performed according to the process described with reference to FIGS. 1 to 6.
  • the aforementioned weight or smoothing factor is assumed to be a predefined value. However, since the characteristics of motion and texture may be different for each image and for each specific region in the image, it is possible to increase coding efficiency by transmitting an optimal weighting window suitable for the characteristics of the image to the decoder after calculating the encoder. .
  • the proposed method 4 of the present invention proposes to explicitly signal the coefficients or weights (or smoothing factors) of the weighted windows used when performing weighted summation through the bitstream. More specifically, in the proposed method 1 of the present invention, the weights to be applied to the first prediction value obtained by applying the motion vector of the neighboring block and the weights to be applied to the second prediction value obtained by applying the motion vector of the current block are SPS and PPS. Signaling may be performed through at least one of a slice header, a CTU, a CU, or a PU. In this case, the weight of the present invention may be signaled through the bitstream in sequence units, picture units, slice units, tile units, CTU units, CU units, or PU units.
  • a smoothing factor to be applied to the prediction value of the neighboring block and the prediction value of the current block may be signaled through at least one of an SPS, a PPS, a slice header, a CTU, a CU, or a PU.
  • the smoothing factor of the present invention may be signaled through the bitstream in sequence units, picture units, slice units, tile units, CTU units, CU units, or PU units.
  • the encoder assigns values (eg, weights or smoothing factors) corresponding to P N and P C used when performing weighted summation or smoothing to suit the characteristics of an image, such as sequence unit, picture unit, slice unit, It can be transmitted in tile units, CTB units, CU units, or PU units.
  • values eg, weights or smoothing factors
  • the decoder may apply the signaled weight or smoothing factor set to perform the proposed method of the present invention.
  • the decoder may apply the signaled weight or smoothing factor set to perform the proposed method of the present invention.
  • the image processing apparatus may include an encoding apparatus and / or a decoding apparatus of an image signal.
  • an image processing apparatus to which the present invention may be applied may include a mobile terminal such as a smartphone, a portable device such as a laptop computer, a home appliance such as a digital TV, a digital video player, or the like.
  • the memory 12 may store a program for processing and controlling the processor 11, and may store an encoded bitstream, a decoded image, control information, and the like. In addition, the memory 12 may be utilized as a buffer for various image signals.
  • the memory 12 includes read only memory (ROM), random access memory (RAM), erasable programmable read only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, and static RAM (SRAM). It may be implemented as a storage device such as a hard disk drive (HDD), a solid state drive (SSD), or the like.
  • the processor 11 controls the operation of each module in the image processing apparatus.
  • the processor 11 may perform various control functions for performing encoding / decoding according to the present invention.
  • the processor 11 may also be called a controller, a microcontroller, a microprocessor, a microcomputer, or the like.
  • the processor 11 may be implemented by hardware or firmware, software, or a combination thereof.
  • an application specific integrated circuit (ASIC) or a digital signal processor (DSP), a digital signal processing device (DSPD), a programmable logic device (PLD), and an FPGA field programmable gate array may be provided in the processor 11.
  • the firmware or software when implementing the present invention using firmware or software, may be configured to include a module, a procedure, or a function for performing the functions or operations of the present invention, and configured to perform the present invention.
  • the firmware or software may be provided in the processor 11 or stored in the memory 12 to be driven by the processor 11.
  • the device 10 may optionally include a network interface module (NIM) 13.
  • the network interface module 13 is operatively connected with the processor 11, and the processor 11 controls the network interface module 13 to provide information and / or data, signals, and messages through a wireless / wired network.
  • a wireless / wired signal carrying the back can be transmitted or received.
  • the network interface module 13 supports various communication standards such as IEEE 802 series, 3GPP LTE (-A), Wi-Fi, Advanced Television System Committee (ATSC), Digital Video Broadcasting (DVB), and the like. According to the standard, a video signal such as control information and / or an encoded bitstream may be transmitted and received.
  • the network interface module 13 may not be included in the device as needed.
  • the device 10 may optionally include an input / output interface 14.
  • the input / output interface 14 is operatively connected with the processor 11, and the processor 11 may control the input / output interface 14 to receive or output a control signal and / or a data signal.
  • the input / output module 14 may be connected to an input device such as a keyboard, a mouse, a touch pad, a camera, and an output device such as a display, for example, a universal serial bus (USB), a Bluetooth, a near field communication (NFC), serial / parallel.
  • Interfaces such as Digital Visual Interface (DVI), High Definition Multimedia Interface (HDMI), and the like, may be supported.
  • an embodiment of the present invention may be implemented by various means, for example, hardware, firmware, software or combinations thereof.
  • an embodiment of the present invention may include one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), and FPGAs. field programmable gate array), a processor, a controller, a microcontroller, a microprocessor, or the like.
  • ASICs application specific integrated circuits
  • DSPs digital signal processors
  • DSPDs digital signal processing devices
  • PLDs programmable logic devices
  • FPGAs field programmable gate array
  • the present invention may be implemented by software code or instructions including a form of a module, procedure, function, etc. that performs the functions or operations described above.
  • the software code or instructions may be stored in a computer readable medium and driven by the processor and may perform operations according to the present invention when driven by the processor.
  • the computer readable medium may be located inside or outside the processor or remotely connected to the processor through a network, and may exchange data with the processor.
  • the present invention can be used in an image processing apparatus such as a decoding apparatus and an encoding apparatus.

Abstract

본 발명은 비디오 신호를 위한 비트스트림을 디코딩하는 방법 및 장치에 관한 것으로서, 현재 블록의 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측값을 획득하는 단계; 및 상기 현재 블록에 대한 예측값을 기반으로 상기 현재 블록을 복원하는 단계를 포함하되, 특정 조건을 만족하는 경우, 상기 현재 블록에 대한 예측값을 획득하는 단계는, 상기 현재 블록의 특정 경계에 위치한 영역에 상기 영역에 인접한 이웃 블록의 움직임 벡터를 적용하여 제1 예측값을 획득하는 것과, 상기 영역에 상기 현재 블록의 움직임 벡터를 적용하여 제2 예측값을 획득하는 것과, 상기 제1 예측값에 제1 가중치를 적용하고 상기 제2 예측값에 제2 가중치를 적용하여 가중합을 획득하는 것을 포함하는 방법 및 이를 위한 장치에 관한 것이다.

Description

비디오 신호의 처리 방법 및 이를 위한 장치
본 발명은 비디오 처리 방법에 관한 것으로서, 보다 구체적으로는 인터 예측을 이용한 비디오 신호의 처리 방법 및 이를 위한 장치에 관한 것이다.
디지털 동영상 처리 기술이 급격히 발전함에 따라 고화질 디지털방송, 디지털 멀티미디어 방송, 인터넷 방송 등과 같은 다양한 매체를 이용한 디지털 멀티미디어 서비스가 활성화되고 있으며, 고화질 디지털 방송이 일반화되면서 다양한 서비스 애플리케이션이 개발되고 있고, 고화질, 고해상도의 영상을 위한 고속 동영상 처리 기술들이 요구되고 있다. 이를 위해, H.265/HEVC(High Efficiency Video Coding), H.264/AVC(Advanced Video Coding)와 같은 비디오 신호의 코딩에 관한 표준이 활발히 논의되고 있다.
본 발명의 목적은 비디오 신호를 효율적으로 처리할 수 있는 방법 및 이를 위한 장치를 제공하는 데 있다.
본 발명의 다른 목적은 이웃 블록의 움직임 정보를 적용하여 인터 예측을 수행함으로써 예측 오차를 감소시키고 코딩 효율을 향상시키는 데 있다.
본 발명의 또 다른 목적은 이웃 블록의 예측값을 이용하여 현재 블록의 예측값을 평활화시킴으로써 예측 오차를 감소시키고 코딩 효율을 향상시키는 데 있다.
본 발명에서 이루고자 하는 기술적 과제들은 상기 기술적 과제로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 제1 양상으로서, 디코딩 장치에서 비디오 신호를 위한 비트스트림을 디코딩하는 방법이 제공되며, 상기 방법은 현재 블록의 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측값을 획득하는 단계; 및 상기 현재 블록에 대한 예측값을 기반으로 상기 현재 블록을 복원하는 단계를 포함하되, 특정 조건을 만족하는 경우, 상기 현재 블록에 대한 예측값을 획득하는 단계는, 상기 현재 블록의 특정 경계에 위치한 영역에 상기 영역에 인접한 이웃 블록의 움직임 벡터를 적용하여 제1 예측값을 획득하는 것과, 상기 영역에 상기 현재 블록의 움직임 벡터를 적용하여 제2 예측값을 획득하는 것과, 상기 제1 예측값에 제1 가중치를 적용하고 상기 제2 예측값에 제2 가중치를 적용하여 가중합을 획득하는 것을 포함할 수 있다.
본 발명의 제2 양상으로서, 비디오 신호를 위한 비트스트림을 디코딩하도록 구성된 디코딩 장치가 제공되며, 상기 디코딩 장치는 프로세서를 포함하며, 상기 프로세서는 현재 블록의 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측값을 획득하고, 상기 현재 블록에 대한 예측값을 기반으로 상기 현재 블록을 복원하도록 구성되며, 특정 조건을 만족하는 경우, 상기 현재 블록에 대한 예측값을 획득하는 것은, 상기 현재 블록의 특정 경계에 위치한 영역에 상기 영역에 인접한 이웃 블록의 움직임 벡터를 적용하여 제1 예측값을 획득하는 것과, 상기 영역에 상기 현재 블록의 움직임 벡터를 적용하여 제2 예측값을 획득하는 것과, 상기 제1 예측값에 제1 가중치를 적용하고 상기 제2 예측값에 제2 가중치를 적용하여 가중합을 획득하는 것을 포함할 수 있다.
바람직하게는, 상기 특정 경계가 상기 현재 블록의 좌측 경계 또는 상측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 공간적 이웃 블록의 움직임 벡터를 적용하여 획득되고, 상기 특정 경계가 상기 현재 블록의 우측 경계 또는 하측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 시간적 이웃 블록의 움직임 벡터를 적용하여 획득될 수 있다.
바람직하게는, 상기 공간적 이웃 블록은 상기 현재 블록을 포함하는 픽처 내에서 상기 특정 경계를 기준으로 상기 영역의 반대편에 위치한 이웃 블록에 해당하고, 상기 시간적 이웃 블록은 상기 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 상기 현재 블록의 위치에 대응되는 위치를 가지는 블록에 해당할 수 있다.
바람직하게는, 상기 제1 가중치는 상기 특정 경계에 가까울수록 더 큰 값을 가지도록 설정되고, 상기 제2 가중치는 상기 특정 경계에 가까울수록 더 작은 값을 가지도록 설정될 수 있다.
바람직하게는, 상기 영역은 2×2 블록 또는 4×4 블록에 해당할 수 있다.
바람직하게는, 상기 특정 조건은, 상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터가 서로 다를 것, 상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터 간의 차이가 임계치보다 작고 상기 현재 블록의 참조 픽처와 상기 이웃 블록의 참조 픽처가 동일할 것을 포함할 수 있다.
바람직하게는, 상기 현재 블록에 대해 가중합을 이용한 예측이 적용되는지 여부를 지시하는 플래그 정보가 비트스트림을 통해 획득될 수 있으며, 상기 특정 조건은 상기 플래그 정보가 상기 현재 블록에 대해 가중합을 이용한 예측이 적용됨을 지시할 것을 포함할 수 있다.
본 발명에 의하면, 비디오 신호를 효율적으로 처리할 수 있다.
또한, 본 발명에 의하면, 이웃 블록의 움직임 정보를 적용하여 인터 예측을 수행함으로써 예측 오차를 감소시키고 코딩 효율을 향상시킬 수 있다.
또한, 본 발명에 의하면, 이웃 블록의 예측값을 이용하여 현재 블록의 예측값을 평활화시킴으로써 예측 오차를 감소시키고 코딩 효율을 향상시킬 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
첨부 도면은 본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되며, 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 사상을 설명한다.
도 1은 인코딩 과정을 예시한다.
도 2는 디코딩 과정을 예시한다.
도 3은 코딩 트리 블록(CTB)을 분할하는 방법의 순서도를 예시한다.
도 4는 CTB를 쿼드 트리 방식으로 분할하는 예를 예시한다.
도 5는 코딩 블록을 위한 신택스 정보 및 동작을 예시한다.
도 6은 변환 트리에 대한 신택스 정보 및 동작을 예시한다.
도 7은 예측 블록의 경계와 인터 예측을 이용하여 복원된 샘플들을 예시한다.
도 8은 본 발명에 따른 인터 예측 방법을 예시한다.
도 9는 본 발명에 따른 주변 블록을 예시한다.
도 10은 본 발명에 따른 가중합 적용 영역을 예시한다.
도 11은 본 발명에 따른 가중치를 예시한다.
도 12는 본 발명에 따른 평활화 적용 영역을 예시한다.
도 13은 본 발명에 따른 평활화 인자를 예시한다.
도 14는 본 발명에 따른 가중치 또는 평활화 인자를 예시한다.
도 15는 본 발명이 적용될 수 있는 영상 처리 장치의 블록도를 예시한다.
이하의 기술은 비디오 신호(video signal)를 인코딩(encoding) 및/또는 디코딩하도록 구성된 영상 신호 처리 장치에서 사용될 수 있다. 일반적으로 비디오 신호는 눈으로 인지가능한 영상 신호(image signal) 또는 픽처들의 시퀀스를 지칭하지만, 본 명세서에서 비디오 신호는 코딩된 픽처(picture)를 나타내는 비트들의 시퀀스(sequence) 또는 비트 시퀀스에 해당하는 비트스트림을 지칭하는 데 사용될 수 있다. 픽처(picture)는 샘플들의 배열을 지칭할 수 있으며, 프레임(frame), 영상(image) 등으로 지칭될 수 있다. 보다 구체적으로, 픽처는 샘플들의 이차원 배열 또는 이차원 샘플 배열을 지칭할 수 있다. 샘플은 픽처를 구성하는 최소 단위를 지칭할 수 있고, 픽셀(pixel), 화소(picture element), 펠(pel) 등으로 지칭될 수 있다. 샘플은 휘도(luminance, luma) 성분 및/또는 색차(chrominance, chroma, color difference) 성분을 포함할 수 있다. 본 명세서에서, 코딩은 인코딩을 지칭하는 데 사용될 수도 있고, 혹은 인코딩/디코딩을 통칭할 수 있다.
픽처는 적어도 하나의 슬라이스를 포함할 수 있으며, 슬라이스는 적어도 하나의 블록을 포함할 수 있다. 슬라이스는 병렬 처리 등의 목적, 데이터 손실 등으로 인해 비트스트림이 훼손된 경우 디코딩의 재동기화 등의 목적을 위해 정수 개의 블록을 포함하도록 구성될 수 있으며, 각 슬라이스는 서로 독립적으로 코딩될 수 있다. 블록은 적어도 하나의 샘플을 포함할 수 있으며, 샘플들의 배열을 지칭할 수 있다. 블록은 픽처보다 작거나 같은 크기를 가질 수 있다. 블록은 유닛으로 지칭될 수 있다. 현재 코딩되는 픽처를 현재 픽처라고 지칭하고, 현재 코딩되는 블록을 현재 블록이라고 지칭할 수 있다. 픽처를 구성하는 다양한 블록 단위가 존재할 수 있으며, 예를 들어 ITU-T H.265 표준(또는 HEVC(High Efficiency Video Coding) 표준)의 경우 코딩 트리 블록(CTB)(또는 코딩 트리 유닛(CTU)), 코딩 블록(CB)(또는 코딩 유닛(CU)), 예측 블록(PB)(또는 예측 유닛(PU)), 변환 블록(TB)(또는 변환 유닛(TU)) 등의 블록 단위가 존재할 수 있다.
코딩 트리 블록은 픽처를 구성하는 가장 기본적인 단위를 지칭하며, 픽처의 텍스처(texture)에 따라 코딩 효율을 높이기 위해 쿼드-트리(quad-tree) 형태의 코딩 블록들로 분할될 수 있다. 코딩 블록은 코딩을 수행하는 기본 단위를 지칭할 수 있으며, 코딩 블록 단위로 인트라 코딩 또는 인터 코딩이 수행될 수 있다. 인트라 코딩은 인트라 예측을 이용하여 코딩을 수행하는 것을 지칭할 수 있으며, 인트라 예측은 동일한 픽처 또는 슬라이스 내에 포함된 샘플들을 이용하여 예측을 수행하는 것을 지칭할 수 있다. 인터 코딩은 인터 예측을 이용하여 코딩을 수행하는 것을 지칭할 수 있으며, 인터 예측은 현재 픽처와 서로 다른 픽처에 포함된 샘플들을 이용하여 예측을 수행하는 것을 지칭할 수 있다. 인트라 코딩을 이용하여 코딩되는 블록 또는 인트라 예측 모드로 코딩된 블록을 인트라 블록이라고 지칭할 수 있고, 인터 코딩을 이용하여 코딩되는 블록 또는 인터 예측 모드로 코딩된 블록을 인터 블록이라고 지칭할 수 있다. 또한, 인트라 예측을 이용한 코딩 모드를 인트라 모드라고 지칭할 수 있고, 인터 예측을 이용한 코딩 모드를 인터 모드라고 지칭할 수 있다.
예측 블록은 예측을 수행하기 위한 기본 단위를 지칭할 수 있다. 하나의 예측 블록에 대해서는 동일한 예측이 적용될 수 있다. 예를 들어, 인터 예측의 경우 하나의 예측 블록에 대해서 동일한 움직임 벡터가 적용될 수 있다. 변환 블록은 변환을 수행하기 위한 기본 단위를 지칭할 수 있다. 변환은 픽셀 도메인(또는 공간 도메인 또는 시간 도메인)의 샘플들을 주파수 도메인(또는 변환 계수 도메인)의 변환 계수로 변환하는 동작을 지칭하거나, 그 반대의 동작을 통칭할 수 있다. 특히, 주파수 도메인(또는 변환 계수 도메인)의 변환 계수를 픽셀 도메인(또는 공간 도메인 또는 시간 도메인)의 샘플들로 변환하는 동작을 역변환이라고 지칭할 수 있다. 예를 들어, 변환은 이산 코사인 변환(DCT), 이산 사인 변환(DST), 푸리어 변환 등을 포함할 수 있다.
본 명세서에서, 코딩 트리 블록(CTB)은 코딩 트리 유닛(CTU)과 혼용될 수 있고, 코딩 블록(CB)은 코딩 유닛(CU)과 혼용될 수 있고, 예측 블록(PB)은 예측 유닛(PU)과 혼용될 수 있고, 변환 블록(PB)은 변환 유닛(PU)과 혼용될 수 있다.
도 1은 인코딩 과정을 예시한다.
인코딩 장치(100)는 원영상(original image)(102)을 입력받아 인코딩을 수행한 다음 비트스트림(114)을 출력한다. 원영상(102)은 하나의 픽처에 해당할 수 있지만, 본 예에서 원영상(102)은 픽처를 구성하는 하나의 블록이라고 가정한다. 예를 들어, 원영상(102)은 코딩 블록에 해당할 수 있다. 인코딩 장치(100)는 원영상(102)에 대하여 인트라 모드로 코딩할지 인터 모드로 코딩할지 결정할 수 있다. 원영상(102)이 인트라 픽처 또는 슬라이스에 포함되는 경우, 원영상(102)은 인트라 모드로만 코딩될 수 있다. 하지만, 원영상(102)이 인터 픽처 또는 슬라이스에 포함되는 경우, 예를 들어 원영상(102)에 대하여 인트라 코딩 및 인터 코딩을 수행한 다음 RD(Rate-Distortion) 비용(cost)을 대비하여 효율적인 코딩 방법을 결정할 수 있다.
원영상(102)에 대해 인트라 코딩을 수행하는 경우, 인코딩 장치(100)는 원영상(102)을 포함하는 현재 픽처의 복원 샘플들을 이용하여 RD 최적화를 보여주는 인트라 예측 모드를 결정할 수 있다(104). 예를 들어, 인트라 예측 모드는 DC(Direct Current) 예측 모드, 평면(planar) 예측 모드, 각도(angular) 예측 모드 중에서 하나로 결정될 수 있다. DC 예측 모드는 현재 픽처의 복원 샘플들 중에서 참조 샘플들의 평균값을 이용하여 예측을 수행하는 모드를 지칭하고, 평면 예측 모드는 참조 샘플들의 이중 선형 보간(bilinear interpolation)을 이용하여 예측을 수행하는 모드를 지칭하고, 각도 예측 모드는 원영상(102)에 대해 특정 방향에 위치한 참조 샘플을 이용하여 예측을 수행하는 모드를 지칭한다. 인코딩 장치(100)는 결정된 인트라 예측 모드를 이용하여 예측 샘플(predicted sample) 또는 예측값(prediction value)(또는 predictor)(107)을 출력할 수 있다.
원영상(102)에 대해 인터 코딩을 수행하는 경우, 인코딩 장치(100)는 (디코딩된) 픽처 버퍼(122)에 포함된 복원 픽처(reconstructed picture)를 이용하여 움직임 추정(motion estimation, ME)을 수행하여 움직임 정보를 획득할 수 있다(106). 예를 들어, 움직임 정보는 움직임 벡터, 참조 픽처 인덱스 등을 포함할 수 있다. 움직임 벡터는 현재 픽처 내에서 원영상(102)의 좌표로부터 참조 픽처 내의 좌표까지의 오프셋을 제공하는 이차원 벡터를 지칭할 수 있다. 참조 픽처 인덱스는 (디코딩된) 픽처 버퍼(122)에 저장된 복원 픽처(reconstructed picture) 중에서 인터 예측을 위해 사용되는 참조 픽처들의 리스트(또는 참조 픽처 리스트)에 대한 인덱스를 지칭할 수 있으며, 참조 픽처 리스트에서 해당 참조 픽처를 가리킨다. 인코딩 장치(100)는 획득한 움직임 정보를 이용하여 예측 샘플 또는 예측값(107)을 출력할 수 있다.
그런 다음, 인코딩 장치(100)는 원영상(102)과 예측 샘플(107) 간의 차이로부터 레지듀얼 데이터(108)를 생성할 수 있다. 인코딩 장치(100)는 생성된 레지듀얼 데이터(108)에 대해 변환을 수행할 수 있다(110). 예를 들어, 변환을 위해 이산 코사인 변환 (Discrete Cosine Transform, DCT), 이산 사인 변환 (Discrete Sine Transform, DST) 및/또는 웨이블릿 변환(Wavelet Transform) 등이 적용될 수 있다. 보다 구체적으로, 4×4 내지 32×32 크기의 정수 기반 DCT가 사용될 수 있으며, 4×4, 8×8, 16×16, 32×32 변환이 이용될 수 있다. 인코딩 장치(100)는 변환(110)을 수행하여 변환 계수 정보를 획득할 수 있다.
인코딩 장치(100)는 변환 계수 정보를 양자화하여 양자화된 변환 계수 정보를 생성할 수 있다(112). 양자화는 양자화 파라미터(QP)를 이용하여 변환 계수 정보의 레벨을 스케일링하는 동작을 지칭할 수 있다. 따라서, 양자화된 변환 계수 정보는 스케일링된 변환 계수 정보라고 지칭될 수 있다. 양자화된 변환 계수 정보는 엔트로피 코딩(114)을 통해 비트스트림(116)으로 출력될 수 있다. 예를 들어, 엔트로피 코딩(114)은 고정 길이 코딩(fixed length coding, FLC), 가변 길이 코딩(variable length coding, VLC), 산술 코딩(arithmetic coding)을 기반으로 수행될 수 있다. 보다 구체적으로, 산술 부호화를 기반으로 한 문맥 기반 적응적 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 가변 길이 코딩을 기반으로 한 Exp-Golomb 코딩, 및 고정 길이 코딩이 적용될 수 있다.
또한, 인코딩 장치(100)는 양자화된 변환 계수 정보에 대해 역양자화(118) 및 역변환(120)을 수행하여 복원 샘플(121)를 생성할 수 있다. 도 1에 예시되지 않았지만, 하나의 픽처에 대하여 복원 샘플(121)을 획득하여 복원 픽처를 생성한 다음 복원 픽처에 대해 인루프 필터링이 수행될 수 있다. 인루프 필터링을 위해 예를 들어 디블록킹(deblocking) 필터, 샘플 적응적 오프셋(sample adaptive offset, SAO) 필터가 적용될 수 있다. 그런 다음, 복원 픽처(121)는 픽처 버퍼(122)에 저장되어 다음 픽처의 인코딩에 사용될 수 있다.
도 2는 디코딩 과정을 예시한다.
디코딩 장치(200)는 비트스트림(202)을 수신하여 엔트로피 디코딩(204)을 수행할 수 있다. 엔트로피 디코딩(204)은 도 1의 엔트로피 코딩(114)의 역방향 동작을 지칭할 수 있다. 디코딩 장치(200)는 엔트로피 디코딩(204)을 통해 예측 모드 정보, 인트라 예측 모드 정보, 움직임 정보 등을 포함하여 디코딩에 필요한 데이터 및 (양자화된) 변환 계수 정보를 획득할 수 있다. 디코딩 장치(200)는 획득된 변환 계수 정보에 대해 역양자화(206) 및 역변환(208)을 수행하여 레지듀얼 데이터(209)를 생성할 수 있다.
엔트로피 디코딩(204)을 통해 획득되는 예측 모드 정보는 현재 블록이 인트라 모드로 코딩되는지 인터 모드로 코딩되는지 여부를 지시할 수 있다. 예측 모드 정보가 인트라 모드를 지시하는 경우, 디코딩 장치(200)는 엔트로피 디코딩(204)을 통해 획득된 인트라 예측 모드에 기초하여 현재 픽처의 복원 샘플들로부터 예측 샘플(또는 예측값)(213)을 획득할 수 있다(210). 예측 모드 정보가 인터 모드를 지시하는 경우, 디코딩 장치(200)는 엔트로피 디코딩(204)을 통해 획득된 움직임 정보에 기초하여 픽처 버퍼(214)에 저장된 참조 픽처로부터 예측 샘플(또는 예측값)(213)을 획득할 수 있다(212).
디코딩 장치(200)는 레지듀얼 데이터(209)와 예측 샘플(또는 예측값)(213)을 이용하여 현재 블록에 대한 복원 샘플(216)을 획득할 수 있다. 도 2에 예시되지 않았지만, 하나의 픽처에 대하여 복원 샘플(216)을 획득하여 픽처를 복원한 다음 복원 픽처에 대해 인루프 필터링이 수행될 수 있다. 그런 다음, 복원 픽처(216)는 다음 픽처의 디코딩을 위해 픽처 버퍼에 저장되거나 디스플레이를 위해 출력될 수 있다.
비디오 인코딩/디코딩 프로세스는 소프트웨어(SW)/하드웨어(HW) 처리시 매우 높은 복잡도가 요구된다. 따라서, 제한된 자원(resource)을 이용하여 복잡도가 높은 작업을 수행하기 위해 픽처(또는 영상)을 최소의 처리 단위인 기본 처리 단위(processing unit)로 분할하여 처리할 수 있다. 따라서, 하나의 슬라이스는 적어도 하나의 기본 처리 단위를 포함할 수 있다. 이 경우, 하나의 픽처 또는 슬라이스에 포함되는 기본 처리 단위는 동일한 크기를 가질 수 있다.
HEVC(High Efficiency Video Coding) 표준(ISO/IEC 23008-2 또는 ITU-T H.265)의 경우 앞서 설명한 바와 같이 기본 처리 단위는 CTB(Coding Tree Block) 또는 CTU(Coding Tree Unit)로 지칭될 수 있으며, 64×64 픽셀의 크기를 가질 수 있다. 따라서, HEVC 표준의 경우 하나의 픽처는 기본 처리 단위인 CTU로 분할(partitioning)되어 인코딩/디코딩을 수행할 수 있다. 보다 구체적인 예로, 8192×4096 픽처를 인코딩/디코딩하는 경우 픽처는 128×64=8192개의 CTU로 나누어 8192개의 CTU에 대해 도 1에 예시된 인코딩 절차 또는 도 2에 예시된 디코딩 절차를 수행할 수 있다.
비디오 신호 또는 비트스트림은 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 적어도 하나의 액세스 유닛을 포함할 수 있다. 시퀀스 파라미터 세트는 (픽처들의) 시퀀스 레벨의 파라미터 정보를 포함하며, 시퀀스 파라미터 세트의 파라미터 정보는 픽처들의 시퀀스에 포함된 픽처에 적용될 수 있다. 픽처 파라미터 세트는 픽처 레벨의 파라미터 정보를 포함하며, 픽처 파라미터 세트의 정보는 픽처에 포함되는 각 슬라이스에 적용될 수 있다. 액세스 유닛은 하나의 픽처에 대응되는 유닛을 지칭하며, 적어도 하나의 슬라이스를 포함할 수 있다. 슬라이스는 정수 개의 CTU를 포함할 수 있다. 신택스 정보는 비트스트림에 포함된 데이터를 지칭하고, 신택스 구조는 특정 순서로 비트스트림에 존재하는 신택스 정보의 구조를 지칭한다.
코딩 트리 블록의 크기는 SPS의 파라미터 정보를 이용하여 결정될 수 있다. SPS는 코딩 블록의 최소 크기를 지시하는 제1 정보와 코딩 블록의 최소 크기와 최대 크기 간의 차이를 지시하는 제2 정보를 포함할 수 있다. 본 명세서에서, 상기 제1 정보는 log2_min_luma_coding_block_size_minus3라고 지칭될 수 있고, 상기 제2 정보는 log2_diff_max_min_luma_coding_block_size라고 지칭될 수 있다. 일반적으로 블록의 크기는 2의 거듭제곱으로 표현될 수 있으므로 각 정보는 실제 값의 log2 값으로 표현될 수 있다. 따라서, 코딩 블록의 최소 크기의 log2 값은 제1 정보의 값에 특정 오프셋(예, 3)을 더하여 구할 수 있고, 코딩 트리 블록의 크기의 log2 값은 코딩 블록의 최소 크기의 log2 값에 제2 정보의 값을 더하여 구할 수 있다. 코딩 트리 블록의 크기는 1을 log2 값만큼 좌측 시프트하여 구할 수 있다. 최소 크기와 최대 크기 간의 차이를 지시하는 제2 정보는 코딩 트리 블록 내에서 코딩 블록에 대해 최대 허용되는 분할 횟수를 나타낼 수 있다. 또는, 상기 제2 정보는 코딩 트리 블록 내에서 코딩 트리의 최대 깊이를 나타낼 수 있다.
구체적으로, SPS의 파라미터 정보 중에서 제1 정보(예, log2_min_luma_coding_block_size_minus3)의 값이 n이고, 제2 정보(log2_diff_max_min_luma_coding_block_size)의 값이 m이라고 가정하면, 코딩 블록의 최소 크기 N×N는 N=1<<(n+3)으로 결정되고 코딩 트리 블록의 크기 M×M은 M=1<<(n+m+3) 또는 N<<m으로 결정될 수 있다. 또한, 코딩 트리 블록 내에서 코딩 블록의 최대 허용 분할 횟수 또는 코딩 트리의 최대 깊이는 m으로 결정될 수 있다.
예를 들어, 코딩 트리 블록의 크기가 64×64이고 코딩 트리 블록 내에서 코딩 트리의 최대 깊이가 3인 경우를 가정하면, 코딩 트리 블록이 쿼드 트리 방식으로 최대 3번 분할될 수 있으며 최소 코딩 블록의 크기는 8×8일 수 있다. 따라서, SPS 파라미터 정보 중에서 제1 정보(예, log2_min_luma_coding_block_size_minus3)는 0의 값을 가질 수 있고, 제2 정보(log2_diff_max_min_luma_coding_block_size)는 3의 값을 가질 수 있다.
도 3은 코딩 트리 블록(CTB)을 분할하는 방법의 순서도를 예시한다.
HEVC 표준에서는 압축효율 제고를 위해 CTB를 쿼드 트리 방식으로 적어도 하나의 코딩 블록(CB)으로 분할한 후 코딩 블록에 대해 인트라 예측 모드 또는 인터 예측 모드를 결정할 수 있다. CTB가 분할되지 않는 경우 CTB는 CB에 해당할 수 있으며, 이 경우 CB는 CTB와 동일한 크기를 가질 수 있으며 해당 CTB에 대해 인트라 예측 모드 또는 인터 예측 모드가 결정될 수 있다.
CTB가 쿼드 트리 방식으로 분할될 때 재귀적으로 분할될 수 있다. CTB는 4개의 블록으로 분할된 다음 각 분할된 블록은 쿼드 트리 방식으로 하위 블록으로 다시 추가적으로 분할될 수 있다. CTB를 쿼드 트리 방식으로 재귀적으로 분할하여 최종적으로 생성되는 각 블록이 코딩 블록이 될 수 있다. 예를 들어, CTB가 제1, 2, 3, 4 블록을 분할된 다음, 제1 블록이 제5, 6, 7, 8 블록으로 분할되고, 제2, 3, 4 블록이 분할되지 않는 경우 제2, 3, 4, 5, 6, 7, 8 블록이 코딩 블록으로 결정될 수 있다. 이 예에서, 제2, 3, 4, 5, 6, 7, 8 블록 각각에 대해 인트라 예측 모드 또는 인터 예측 모드가 결정될 수 있다.
CTB가 코딩 블록으로 분할되는지 여부는 RD(rate distortion) 효율을 고려하여 인코더 측에서 결정될 수 있으며, 분할 여부를 지시하는 정보를 비트스트림에 포함시킬 수 있다. 본 명세서에서, CTB 또는 코딩 블록이 절반의 수평/수직 크기를 가지는 코딩 블록으로 분할되는지 여부를 지시하는 정보는 split_cu_flag라고 지칭될 수 있다. 설명의 편의를 위해, CTB 내에서 블록이 분할되는지 여부를 지시하는 정보는 코딩 블록을 위한 분할 지시 정보라고 지칭될 수 있다. 디코더 측에서는 코딩 쿼드 트리 내에서 각 코딩 블록에 대해서 분할 여부를 지시하는 정보를 비트스트림으로부터 획득하여 코딩 블록의 분할 여부를 결정하고 쿼드 트리 방식으로 코딩 블록을 재귀적으로 분할할 수 있다. CTB가 재귀적으로 분할하여 형성되는 코딩 블록의 트리 구조를 코딩 트리 또는 코딩 쿼드 트리라고 지칭한다. 코딩 트리 내에서 각 코딩 블록이 더 이상 분할되지 않는 경우 해당 블록은 최종적으로 코딩 블록으로 지정될 수 있다.
앞서 설명한 바와 같이, 코딩 블록은 예측을 수행하기 위해 적어도 하나의 예측 블록으로 분할될 수 있다. 또한, 코딩 블록은 변환을 수행하기 위해 적어도 하나의 변환 블록으로 분할될 수 있다. CTB와 유사한 방식으로, 코딩 블록은 쿼드 트리 방식으로 재귀적으로 변환 블록으로 분할될 수 있다. 코딩 블록을 쿼드 트리 방식으로 재귀적으로 분할하여 형성되는 구조를 변환 트리 또는 변환 쿼드 트리라고 지칭할 수 있으며, 분할 지시 정보와 유사하게 변환 트리 내에서 각 블록이 분할되는지 여부를 지시하는 정보가 비트스트림에 포함될 수 있다. 본 명세서에서 변환을 위해 블록이 절반의 수평/수직 크기를 가지는 유닛으로 분할되는지 여부를 지시하는 정보는 split_transform_flag라고 지칭될 수 있다. 설명의 편의를 위해, 변환 트리에서 각 블록이 분할되는지 여부를 지시하는 정보는 변환 블록을 위한 분할 지시 정보라고 지칭될 수 있다.
도 4는 CTB를 쿼드 트리 방식으로 분할하는 예를 예시한다.
도 4를 참조하면, CTB는 블록 1-7을 포함하는 제1 코딩 블록, 블록 8-17을 포함하는 제2 코딩 블록, 블록 18에 해당하는 제3 코딩 블록, 블록 19-28을 포함하는 제4 코딩 블록으로 분할될 수 있다. 제1 코딩 블록은 블록 1에 해당하는 코딩 블록, 블록 2에 해당하는 코딩 블록, 블록 3-6을 포함하는 제5 코딩 블록, 블록 7에 해당하는 코딩 블록으로 분할될 수 있다. 제2 코딩 블록은 코딩 쿼드 트리 내에서는 더 이상 분할되지 않지만, 변환을 위해서는 추가적인 변환 블록으로 분할될 수 있다. 제4 코딩 블록은 블록 19-22를 포함하는 제6 코딩 블록, 블록 23에 해당하는 코딩 블록, 블록 24에 해당하는 코딩 블록, 블록 25-28을 포함하는 제7 코딩 블록으로 분할될 수 있다. 제6 코딩 블록은 블록 19에 해당하는 코딩 블록, 블록 20에 해당하는 코딩 블록, 블록 21에 해당하는 코딩 블록, 블록 22에 해당하는 코딩 블록으로 분할될 수 있다. 제7 코딩 블록은 코딩 쿼드 트리 내에서는 더 이상 분할되지 않지만, 변환을 위해서는 추가적인 변환 블록으로 분할될 수 있다.
앞서 설명된 바와 같이, CTB 또는 코딩 블록 각각에 대해 분할 여부를 지시하는 정보(예, split_cu_flag)가 비트스트림에 포함될 수 있다. 분할 여부를 지시하는 정보가 제1 값(예, 1)을 가지는 경우 CTB 또는 각 코딩 블록이 분할될 수 있고, 분할 여부를 지시하는 정보가 제2 값(예, 0)을 가지는 경우 CTB 또는 각 코딩 블록은 분할되지 않는다. 분할 여부를 지시하는 정보의 값은 달라질 수 있다.
도 4의 예에서, CTB, 제1 코딩 블록, 제4 코딩 블록, 제6 코딩 블록에 대한 분할 지시 정보(예, split_cu_flag)는 제1 값(예, 1)을 가질 수 있으며, 디코더는 비트스트림으로부터 해당 유닛에 대한 분할 지시 정보를 획득하고 이 값에 따라 해당 유닛을 4개의 하위 유닛으로 분할할 수 있다. 반면, 다른 코딩 블록들(블록 1, 2, 7, 18, 19, 20, 21, 22, 23, 24, 및 블록 3-6에 해당하는 코딩 블록, 블록 8-17에 해당하는 코딩 블록, 블록 25-28에 해당하는 코딩 블록)에 대한 분할 지시 정보(예, split_cu_flag)는 제2 값(예, 0)을 가질 수 있으며, 디코더는 비트스트림으로부터 해당 유닛에 대한 분할 지시 정보를 획득하고 이 값에 따라 해당 유닛을 더 이상 분할하지 않는다.
앞서 설명된 바와 같이, 각 코딩 블록은 변환을 위해 변환 블록을 위한 분할 지시 정보에 따라 쿼드 트리 방식으로 적어도 하나의 변환 블록으로 분할될 수 있다. 도 4를 다시 참조하면, 블록 1, 2, 7, 18, 19, 20, 21, 22, 23, 24에 해당하는 코딩 블록은 변환을 위해 분할되지 않으므로 변환 블록은 코딩 블록에 해당할 수 있지만, 다른 코딩 블록(블록 3-4, 8-17, 25-28에 대응되는 코딩 블록)은 변환을 위해 추가적으로 분할될 수 있다. 각 코딩 블록(예, 블록 3-4, 8-17, 25-28에 대응되는 코딩 블록)으로부터 형성되는 변환 트리 내에서 각 유닛에 대한 분할 지시 정보(예, split_transform_flag)를 획득하고 분할 지시 정보의 값에 따라 변환 블록으로 분할할 수 있다. 도 4에 예시된 바와 같이, 블록 3-6에 대응되는 코딩 블록은 깊이(depth) 1의 변환 트리를 형성하도록 변환 블록들로 분할될 수 있고, 블록 8-17에 대응되는 코딩 블록은 깊이 3을 가지는 변환 트리를 형성하도록 변환 블록들로 분할될 수 있으며, 블록 25-28에 대응되는 코딩 블록은 깊이 1을 가지는 변환 트리를 형성하도록 변환 블록들로 분할될 수 있다.
도 5는 코딩 블록을 위한 신택스 정보 및 동작을 예시하고, 도 6은 변환 트리에 대한 신택스 정보 및 동작을 예시한다. 도 5에 예시된 바와 같이, 현재 코딩 블록에 대해 변환 트리 구조가 존재하는지 여부를 지시하는 정보가 비트스트림을 통해 시그널링될 수 있으며, 본 명세서에서 이 정보는 변환 트리 코딩 지시 정보 또는 rqt_root_cbf라고 지칭될 수 있다. 디코더는 변환 트리 코딩 지시 정보를 비트스트림으로부터 획득하고 변환 트리 코딩 지시 정보가 해당 코딩 블록에 대해 변환 트리가 존재함을 지시하는 경우 도 6에 예시된 동작을 수행할 수 있다. 만일 변환 트리 코딩 지시 정보가 해당 코딩 블록에 대해 변환 트리가 존재하지 않음을 지시하는 경우 해당 코딩 블록에 대한 변환 계수 정보는 존재하지 않으며 해당 코딩 블록에 대한 (인트라 또는 인터) 예측값을 이용하여 코딩 블록을 복원할 수 있다.
코딩 블록은 인트라 예측 모드 또는 인터 예측 모드로 코딩되는지 여부를 결정하는 기본 단위이다. 따라서, 각 코딩 블록에 대해 예측 모드 정보가 비트스트림을 통해 시그널링될 수 있다. 예측 모드 정보는 해당 코딩 블록이 인트라 예측 모드를 이용하여 코딩되는지 아니면 인터 예측 모드를 이용하여 코딩되는지를 지시할 수 있다.
예측 모드 정보가 해당 코딩 블록이 인트라 예측 모드로 코딩됨을 지시하는 경우, 인트라 예측 모드를 결정하는 데 사용되는 정보들이 비트스트림을 통해 시그널링될 수 있다. 예를 들어, 인트라 예측 모드를 결정하는 데 사용되는 정보는 인트라 예측 모드 참조 정보를 포함할 수 있다. 인트라 예측 모드 참조 정보는 현재 코딩 블록의 인트라 예측 모드가 이웃 (예측) 유닛으로부터 유도되는지 여부를 지시하며, 예를 들어 prev_intra_luma_pred_flag라고 지칭될 수 있다.
인트라 예측 모드 참조 정보가 현재 코딩 블록의 인트라 예측 모드가 이웃 유닛으로부터 유도됨을 지시하는 경우, 이웃 유닛의 인트라 예측 모드를 이용하여 인트라 예측 모드 후보 리스트를 구성하고 구성된 후보 리스트 중에서 현재 유닛의 인트라 예측 모드를 지시하는 인덱스 정보가 비트스트림을 통해 시그널링될 수 있다. 예를 들어, 인트라 예측 모드 후보 리스트 중에서 현재 유닛의 인트라 예측 모드로 사용되는 후보 인트라 예측 모드를 지시하는 인덱스 정보는 mpm_idx라고 지칭될 수 있다. 디코더는 인트라 예측 모드 참조 정보를 비트스트림으로부터 획득하고 획득된 인트라 예측 모드 참조 정보에 기초하여 인덱스 정보를 비트스트림으로부터 획득할 수 있다. 또한, 디코더는 획득된 인덱스 정보가 지시하는 인트라 예측 모드 후보를 현재 유닛의 인트라 예측 모드로 설정할 수 있다.
인트라 예측 모드 참조 정보가 현재 코딩 블록의 인트라 예측 모드가 이웃 유닛으로 유도됨을 지시하지 않는 경우, 현재 유닛의 인트라 예측 모드를 가리키는 정보가 비트스트림을 통해 시그널링될 수 있다. 비트스트림을 통해 시그널링되는 정보는 예를 들어 rem_intra_luma_pred_mode라고 지칭될 수 있다. 비트스트림으로부터 획득된 정보는 인트라 예측 모드 후보 리스트의 후보들의 값들과 비교하여 크거나 같은 경우 특정값(예, 1) 만큼 증가시키는 과정을 통해 현재 유닛의 인트라 예측 모드를 획득할 수 있다.
픽처가 크로마 성분(또는 색차 성분)을 포함하는 경우 크로마 코딩 블록에 대한 인트라 예측 모드를 지시하는 정보가 비트스트림을 통해 시그널링될 수 있다. 예를 들어, 크로마 인트라 예측 모드를 지시하는 정보는 intra_chroma_pred_mode라고 지칭될 수 있다. 크로마 인트라 예측 모드는 크로마 인트라 예측 모드를 지시하는 정보 및 앞서 설명된 바와 같이 획득된 인트라 예측 모드(또는 루마 인트라 예측 모드)를 이용하여 표 1을 기반으로 획득할 수 있다. 표 1에서 IntraPredModeY는 루마 인트라 예측 모드를 가리킨다.
Figure PCTKR2016004384-appb-T000001
인트라 예측 모드는 값에 따라 다양한 예측 모드를 나타낸다. 앞에서 설명한 과정을 통해 인트라 예측 모드의 값은 표 2에 예시된 바와 같이 인트라 예측 모드와 대응될 수 있다.
Figure PCTKR2016004384-appb-T000002
표 2에서 INTRA_PLANAR는 평면 예측 모드(planar prediction mode)를 나타내며, 현재 블록에 인접한 상측(upper) 이웃 블록의 복원 샘플(reconstructed sample), 좌측(left) 이웃 블록의 복원 샘플, 좌하측(lower-left) 이웃 블록의 복원 샘플, 우상측(right-upper) 이웃 블록의 복원 샘플에 대해 보간을 수행하여 현재 블록의 예측값을 획득하는 모드를 나타낸다. INTRA_DC는 DC(Direct Current) 예측 모드를 나타내며, 좌측 이웃 블록의 복원 샘플들과 상측 이웃 블록의 복원 샘플들의 평균을 이용하여 현재 블록의 예측값을 획득하는 모드를 나타낸다. INTRA_ANGULAR2 내지 INTRA_ANGULAR34는 각도 예측 모드(angular prediction mode)를 나타내며, 현재 블록 내의 현재 샘플에 대해 특정 각도의 방향에 위치한 이웃 블록의 복원 샘플을 이용하여 현재 샘플의 예측값을 구하는 모드를 나타낸다. 특정 각도의 방향에 실제 샘플이 존재하지 않는 경우 이웃 복원 샘플들에 대해 보간을 수행하여 해당 방향에 대한 가상 샘플을 생성하여 예측값을 구할 수 있다.
인트라 예측 모드는 코딩 블록 별로 구할 수 있지만, 인트라 예측은 변환 블록 단위로 수행될 수 있다. 따라서, 앞서 설명한 이웃 블록의 복원 샘플은 현재 변환 블록의 이웃 블록 내에 존재하는 복원 샘플을 지칭할 수 있다. 인트라 예측 모드를 이용하여 현재 블록에 대한 예측값을 구한 다음 현재 블록의 샘플값과 예측값 간의 차이를 구할 수 있다. 현재 블록의 샘플값과 예측값 간의 차이를 레지듀얼(또는 레지듀얼 정보 또는 레지듀얼 데이터)이라고 지칭할 수 있다. 디코더 측에서는 현재 블록에 대한 변환 계수 정보를 비트스트림으로부터 획득한 다음, 획득한 변환 계수 정보에 대해 역양자화 및 역변환을 수행하여 레지듀얼을 구할 수 있다. 역양자화는 양자화 파라미터(QP) 정보를 이용하여 변환 계수 정보의 값을 스케일링하는 것을 지칭할 수 있다. 변환 블록은 변환을 수행하는 기본 단위이므로, 변환 블록 단위로 변환 계수 정보가 비트스트림을 통해 시그널링될 수 있다.
인트라 예측을 수행하는 경우 레지듀얼이 0일 수 있다. 예를 들어, 현재 블록의 샘플과 인트라 예측을 위한 참조 샘플이 동일한 경우 레지듀얼의 값이 0일 수 있다. 현재 블록에 대한 레지듀얼 값이 모두 0일 경우 변환 계수 정보의 값도 모두 0이므로 변환 계수 정보를 비트스트림을 통해 시그널링할 필요가 없다. 따라서, 비트스트림을 통해 해당 블록에 대한 변환 계수 정보가 시그널링되는지 여부를 지시하는 정보를 비트스트림을 통해 시그널링할 수 있다. 해당 변환 블록이 0이 아닌 변환 계수 정보를 가지는지 여부를 지시하는 정보는 코딩 블록 지시 정보(coded block indication information) 또는 코딩 블록 플래그 정보(coded block flag information)라고 지칭하며, 본 명세서에서 cbf로 지칭될 수 있다. 루마 성분에 대한 코딩 블록 지시 정보는 cbf_luma로 지칭될 수 있고, 크로마 성분에 대한 코딩 블록 지시 정보는 cbf_cr 또는 cbf_cb로 지칭될 수 있다. 디코더는 해당 변환 블록에 대한 코딩 블록 지시 정보를 비트스트림으로부터 획득하고, 코딩 블록 지시 정보가 해당 블록이 0이 아닌 변환 계수 정보를 포함함을 지시하는 경우 해당 변환 블록에 대한 변환 계수 정보를 비트스트림으로부터 획득하고 역양자화 및 역변환을 거쳐 레지듀얼을 획득할 수 있다.
현재 코딩 블록이 인트라 예측 모드로 코딩되는 경우, 디코더는 변환 블록 단위로 예측값을 구하여 현재 코딩 블록에 대한 예측값을 구하고 및/또는 변환 블록 단위로 레지듀얼을 구하여 현재 코딩 블록에 대한 레지듀얼을 구할 수 있다. 디코더는 현재 코딩 블록에 대한 예측값 및/또는 레지듀얼을 이용하여 현재 코딩 블록을 복원할 수 있다.
변환/역변환 기법으로서 이산 코사인 변환(discrete cosine transform, DCT)이 널리 이용되고 있다. DCT를 위한 변환 기저들은 적은 메모리와 빠른 연산을 위해 정수 형태로 근사화될 수 있다. 정수로 근사화된 변환 기저들은 행렬 형태로 표현될 수 있는데 행렬 형태로 표현된 변환 기저들을 변환 행렬이라고 지칭할 수 있다. H.265/HEVC 표준에서는 4×4 내지 32×32 크기의 정수 변환이 사용되며 4×4 또는 32×32 변환 행렬이 제공된다. 4×4 변환 행렬은 4×4 변환/역변환에 이용되고, 32×32 변환 행렬은 8×8, 16×16, 32×32 변환/역변환에 이용될 수 있다.
한편, 현재 코딩 블록에 대한 예측 모드 정보가 현재 코딩 블록이 인터 예측을 이용하여 코딩됨을 지시하는 경우, 현재 코딩 블록의 파티셔닝 모드(partitioning mode)를 지시하는 정보가 비트스트림을 통해 시그널링될 수 있다. 현재 코딩 블록의 파티셔닝 모드를 지시하는 정보는 예를 들어 part_mode로 나타낼 수 있다. 현재 코딩 블록이 인터 예측을 이용하여 코딩되는 경우, 현재 코딩 블록의 파티셔닝 모드에 따라 현재 코딩 블록을 적어도 하나의 예측 블록을 분할할 수 있다.
예를 들어, 현재 코딩 블록이 2N×2N 블록이라고 가정하면, 파티셔닝 모드는 PART_2Nx2N, PART_2NxN, PART_Nx2N, PART_2NxnU, PART_2NxnD, PART_nLx2N, PART_nRx2N, PART_NxN을 포함할 수 있다. PART_2Nx2N는 현재 코딩 블록과 예측 블록이 동일한 모드를 나타낸다. PART_2NxN는 현재 코딩 블록이 2개의 2N×N 예측 블록으로 분할되는 모드를 나타낸다. PART_Nx2N는 현재 코딩 블록이 2개의 N×2N 예측 블록으로 분할되는 모드를 나타낸다. PART_2NxnU는 현재 코딩 블록이 상측의 2N×n 예측 블록과 하측의 2N×(N-n) 예측 블록으로 분할되는 모드를 나타낸다. PART_2NxnD는 현재 코딩 블록이 상측의 2N×(N-n) 예측 블록과 하측의 2N×n 예측 블록으로 분할되는 모드를 나타낸다. PART_nLx2N는 현재 코딩 블록이 좌측의 n×2N 예측 블록과 우측의 (N-n)×2N 예측 블록으로 분할되는 모드를 나타낸다. PART_nRx2N는 현재 코딩 블록이 좌측의 (N-n)×2N 예측 블록과 우측의 n×2N 예측 블록으로 분할되는 모드를 나타낸다. PART_NxN은 현재 코딩 블록이 4개의 N×N 예측 블록으로 분할되는 모드를 나타낸다. 예를 들어, n은 N/2이다.
현재 코딩 블록이 인트라 코딩 모드인 경우에도 part_mode가 비트스트림을 통해 시그널링될 수 있다. 다만, 현재 코딩 블록이 인트라 코딩 모드이면, 현재 코딩 블록의 크기가 코딩 블록의 최소 크기인 경우에만 part_mode가 시그널링되며 part_mode의 값에 따라 현재 코딩 블록이 4개의 블록으로 추가 분할되는지 여부를 지시할 수 있다.
예측 유닛은 움직임 추정 및 움직임 보상을 수행하는 단위이다. 따라서, 예측 유닛 단위로 인터 예측 파라미터 정보가 비트스트림을 통해 시그널링될 수 있다. 인터 예측 파라미터 정보는 예를 들어 참조 픽처 정보, 움직임 벡터 정보를 포함할 수 있다. 인터 예측 파라미터 정보는 이웃 유닛으로부터 유도되거나 비트스트림을 통해 시그널링될 수 있다. 인터 예측 파라미터 정보를 이웃 유닛으로부터 유도하는 경우를 병합 모드(merge mode)라고 지칭한다. 따라서, 현재 예측 유닛에 대한 인터 예측 파라미터 정보가 이웃 유닛으로부터 유도되는지 여부를 지시하는 정보가 비트스트림을 통해 시그널링될 수 있으며, 해당 정보는 병합 지시(merge indication) 정보 또는 병합 플래그 정보라고 지칭될 수 있다. 병합 지시 정보는 예를 들어 merge_flag로 나타낼 수 있다.
병합 지시 모드가 현재 예측 유닛의 인터 예측 파라미터 정보가 이웃 유닛으로부터 유도됨을 지시하는 경우, 이웃 유닛을 이용하여 병합 후보 리스트를 구성하고 병합 후보 리스트 중에서 현재 유닛의 인터 예측 파라미터 정보를 유도할 병합 후보를 지시하는 정보가 비트스트림을 통해 시그널링될 수 있으며, 해당 정보는 병합 인덱스 정보라고 지칭될 수 있다. 예를 들어, 병합 인덱스 정보는 merge_idx로 나타낼 수 있다. 이웃 블록은 현재 블록을 포함하는 픽처 내에서 현재 블록과 인접한 좌측 이웃 블록, 상측 이웃 블록, 좌상측 이웃 블록, 좌하측 이웃 블록, 우상측 이웃 블록을 포함하는 공간적 이웃 블록과 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 현재 블록에 대응하는 위치에 위치한(또는 co-located) 시간적 이웃 블록을 포함할 수 있다. 디코더는 상기 이웃 블록들을 이용하여 병합 후보 리스트를 구성하고 병합 인덱스 정보를 비트스트림으로부터 획득하고 병합 후보 리스트 중에서 병합 인덱스 정보가 지시하는 이웃 블록의 인터 예측 파라미터 정보를 현재 블록의 인터 예측 파라미터 정보로 설정할 수 있다.
한편, 예측 블록이 코딩 블록에 대응되고 예측 블록에 대해 인터 예측을 수행한 결과 인터 예측 파라미터 정보가 특정 이웃 블록과 동일하고 레지듀얼도 모두 0인 경우, 인터 예측 파라미터 정보 및 변환 계수 정보 등이 비트스트림을 통해 시그널링될 필요가 없다. 이 경우, 코딩 블록에 대한 인터 예측 파라미터 정보는 이웃 블록으로부터 유도하면 되므로 병합 모드가 적용될 수 있다. 따라서, 해당 코딩 블록이 인터 예측을 이용하여 코딩되는 경우 해당 코딩 블록에 대해서는 병합 인덱스 정보만을 비트스트림을 통해 시그널링할 수 있는데, 이러한 모드를 병합 스킵 모드(merge skip mode)라고 지칭한다. 즉, 병합 스킵 모드에서는 병합 인덱스 정보(예, merge_idx)를 제외하고 코딩 블록에 대한 신택스 정보는 시그널링되지 않는다. 다만, 해당 코딩 블록에 대하여 병합 인덱스 정보(예, merge_idx)를 제외하고 더 이상 신택스 정보를 획득할 필요가 없다는 것을 지시하기 위해 스킵 플래그 정보가 비트스트림을 통해 시그널링될 수 있으며, 본 명세서에서 스킵 플래그 정보는 cu_skip_flag라고 지칭될 수 있다. 디코더는 인트라 코딩 모드가 아닌 슬라이스에서는 코딩 블록에 대해 스킵 플래그 정보를 획득하고 스킵 플래그 정보에 따라 병합 스킵 모드에서 코딩 블록을 복원할 수 있다.
병합 지시 모드가 현재 예측 블록의 인터 예측 파라미터 정보가 이웃 블록으로부터 유도됨을 지시하지 않는 경우, 현재 예측 블록의 인터 예측 파라미터는 비트스트림을 통해 시그널링될 수 있다. 현재 예측 블록의 L0 예측인지 및/또는 L1 예측인지에 따라 참조 픽처 리스트 0에 대한 참조 픽처 인덱스 정보 및/또는 참조 픽처 리스트 1에 대한 참조 픽처 인덱스 정보가 비트스트림을 통해 시그널링될 수 있다. 움직임 벡터 정보는 움직임 벡터 차이(motion vector difference)를 나타내는 정보와 움직임 벡터 예측값(motion vector predictor)을 나타내는 정보가 비트스트림을 통해 시그널링될 수 있다. 움직임 벡터 예측값을 나타내는 정보는 이웃 블록들의 움직임 벡터들로 구성되는 움직임 벡터 예측값 후보 리스트 중에서 현재 블록의 움직임 벡터 예측값으로 사용되는 후보를 지시하는 인덱스 정보이며, 움직임 벡터 예측값 지시 정보라고 지칭될 수 있다. 움직임 벡터 예측값 지시 정보는 예를 들어 mvp_l0_flag 또는 mvp_l1_flag으로 나타낼 수 있다. 디코더는 움직임 벡터 예측값 지시 정보에 기초하여 움직임 벡터 예측값을 획득하고 비트스트림으로부터 움직임 벡터 차이에 관련된 정보를 획득하여 움직임 벡터 차이를 구한 다음 움직임 벡터 예측값과 움직임 벡터 차이를 이용하여 현재 블록에 대한 움직임 벡터 정보를 구할 수 있다.
현재 코딩 블록이 인터 예측을 이용하여 코딩되는 경우, 인터 예측이 예측 블록 단위로 수행되는 것을 제외하고 변환 블록에 대해서는 동일/유사한 원리가 적용될 수 있다. 따라서, 현재 코딩 블록이 인터 예측을 이용하여 코딩되는 경우, 현재 코딩 블록을 쿼드 트리 방식으로 적어도 하나의 변환 블록으로 분할하고, 분할된 변환 블록 각각에 대하여 코딩 블록 지시 정보(예, cbf_luma, cbf_cb, cbf_cr)에 기초하여 변환 계수 정보를 획득하고 획득된 변환 계수 정보에 대해 역양자화 및 역변환을 수행하여 레지듀얼을 획득할 수 있다.
현재 코딩 블록이 인트라 예측 모드로 코딩되는 경우, 디코더는 예측 블록 단위로 예측값을 구하여 현재 코딩 블록에 대한 예측값을 구하고 및/또는 변환 블록 단위로 레지듀얼을 구하여 현재 코딩 블록에 대한 레지듀얼을 구할 수 있다. 디코더는 현재 코딩 블록에 대한 예측값 및/또는 레지듀얼을 이용하여 현재 코딩 블록을 복원할 수 있다.
앞서 설명한 바와 같이, HEVC는 비디오 신호를 처리하기 위해 하나의 영상(또는 픽처)을 일정한 크기의 코딩 트리 블록으로 나누어 처리한다. 코딩 트리 블록은 쿼드 트리 방식으로 적어도 하나의 코딩 블록(coding block)으로 분할되고, 코딩 블록의 예측 효율을 높이기 위해 코딩 블록은 다양한 크기 및 형태의 예측 블록(prediction block)으로 분할되며, 예측 블록 단위로 예측(prediction)을 수행한다.
인터 예측 모드(Inter prediction mode)의 경우, 쿼드 트리 방식의 코딩 블록 분할 방식에 의해 인접한 2개의 블록이 서로 다른 코딩 블록에 속할 수 있다. 하지만, 2개의 인접한 블록이 서로 다른 코딩 블록으로 처리되더라도 블록의 경계에 위치한 픽셀 (pixel) 혹은 서브 블록(sub-block)의 적어도 일부는 인접한 다른 블록의 텍스처와 연속적일 수 있다. 따라서, 블록의 경계에 위치한 픽셀 혹은 서브 블록을 위한 실제 움직임 벡터는 인접한 블록의 움직임 벡터와 동일할 수 있으며, 인접한 블록의 움직임 벡터를 해당 픽셀 혹은 서브 블록에 적용하는 것이 예측 오차를 보다 감소시킬 수 있다. 예를 들어, 2개의 인접한 블록의 경계에 위치한 픽셀 또는 서브 블록은 해당 블록의 텍스처를 구성하기 보다는 인접한 다른 블록의 텍스처를 구성할 수 있기 때문에 해당 블록의 경계에 위치한 픽셀 또는 서브 블록은 인접한 다른 블록의 움직임 벡터를 적용하여 인터 예측 및/또는 움직임 보상을 수행하는 것이 더욱 효율적일 수 있다.
또한, 인접한 코딩 블록 혹은 예측 블록에 대한 움직임 벡터가 서로 다른 경우 움직임 벡터가 가리키는 참조 블록에 있어서 불연속성이 발생할 수 있다. 인접한 2개 블록의 움직임 벡터가 서로 다른 경우 해당 블록들의 예측값이 불연속적일 수 있으므로 블록 경계부분에서 예측 오차(prediction error)가 커지는 경향이 있다. 원영상(original image)에서는 2개 인접한 블록 간에 연속성을 가지더라도 서로 다른 움직임 벡터로 인해 2개의 참조 블록 간에는 연속성이 유지되지 못할 수 있다. 인터 예측을 수행하여 획득되는 예측값(predictor)은 원영상과 참조 블록 간의 차이에 기초하여 획득되므로 2개의 인접한 블록에 대한 예측값에서는 불연속성이 커질 수 있다. 이러한 인터 예측으로 인해 예측값 간의 불연속성이 커질 경우 2개의 인접한 블록 경계 부분에서 예측 오차가 크게 나타나며 블록킹 아티팩트(blocking artifact)를 유발할 수 있다. 또한, 예측 오차가 커질수록 레지듀얼 값이 커지고 많이 발생하므로 레지듀얼 데이터를 위한 비트 개수가 증가되고 코딩 효율이 저하될 수 있다.
도 7은 예측 블록의 경계와 인터 예측을 이용하여 복원된 샘플들을 예시한다. 도 7(a)는 픽처의 일부를 쿼드 트리 방식으로 코딩 블록으로 분할할 다음 각 코딩 블록을 다시 적어도 하나의 예측 블록으로 분할하여 형성되는 예측 블록의 경계를 표시한 것이고, 도 7(b)는 예측 블록의 경계를 제외하고 복원된 샘플만을 도시한 것이다.
도 7(a)를 참조하면, 예측 블록은 코딩 트리의 깊이(depth) 및 코딩 블록의 파티셔닝 모드에 따라 다양한 크기 및 형태를 가질 수 있다. 예측 블록(710, 720)의 경우 서로 인접하지만 각 블록의 텍스처는 연속적이지 않음을 알 수 있다. 이는 앞서 설명한 바와 같이 각 예측 블록에 대해 움직임 추정 및 움직임 보상을 각각 수행함으로써 서로 다른 움직임 벡터가 적용되어 예측 블록의 경계 부분에서 예측 오차를 증가시키는 것으로 이해될 수 있다.
도 7(b)를 참조하면, 예측 블록의 경계를 도시하지 않았지만 블록킹 아티팩트로 인해 예측 블록의 경계를 확인할 수 있다. 즉, 예측 블록 간의 경계 부분에서 예측 오차가 크게 나타난다는 것을 확인할 수 있다.
이러한 문제점을 해결하기 위해 본 발명에서는 이웃 블록의 움직임 벡터 또는 예측값을 고려하여 블록 경계 부분의 예측 오차를 줄이고 레지듀얼을 감소시키는 방법을 제안한다. 본 명세서에서 설명의 편의를 위해 코딩 블록은 CB로 나타낼 수 있고 예측 블록은 PB로 나타낼 수 있다.
제안 방법 1
앞서 설명한 바와 같이 쿼드 트리 방식의 코딩 블록(CB) 분할 방법에 의해 인접한 블록이 다른 코딩 블록으로 처리될 수 있다. 블록의 경계에 위치한 픽셀 혹은 서브 블록(sub-block)을 위한 실제 움직임 벡터는 인접한 블록의 움직임 벡터와 동일할 수 있으며, 해당 픽셀 혹은 서브 블록에 대해서는 인접한 블록의 움직임 벡터를 적용하는 것이 효율적일 수 있다. 예측 블록(PB) 또한 주변 블록의 움직임 벡터와 현재 블록의 움직임 벡터가 서로 다를 때, 주변 블록과 인접한 현재 블록의 경계 픽셀 혹은 서브 블록을 위한 예측값(predictor)은 주변 블록의 움직임 정보로 찾을 때 더 정확할 수 있다.
본 발명에서는 현재 블록의 특정 영역(예, 경계에 위치한 영역)에 인접한 블록의 움직임 벡터를 적용하여 획득되는 예측값과 현재 블록의 움직임 벡터를 적용하여 획득되는 예측값 간에 가중합(weighted sum)을 적용하여 새로운 예측값을 생성하는 것을 제안한다. 구체적으로, 현재 블록(예, 코딩 블록 또는 예측 블록)(또는 현재 블록의 특정 영역)에 대해 현재 블록의 움직임 벡터에 기초하여 제1 예측값을 획득하고, 특정 영역에 인접한 이웃 블록의 움직임 벡터에 기초하여 현재 블록의 특정 영역에 대한 제2 예측값을 획득할 수 있다. 그런 다음, 제1 예측값 및/또는 제2 예측값에 대해 가중치를 적용하여 가중합을 획득하고 획득된 가중합을 특정 영역에 대한 예측값으로 설정하거나 획득된 가중합에 기초하여 현재 블록에 대한 예측값을 획득할 수 있다.
제1 예측값과 제2 예측값에 대해서 서로 다른 가중치가 적용될 수도 있고 동일한 가중치가 적용될 수도 있다. 동일한 가중치가 적용되는 경우 가중합은 두 예측값의 평균에 해당할 수 있다. 예를 들어, 현재 블록의 특정 영역은 현재 블록의 경계에 위치한 픽셀 또는 서브 블록을 포함할 수 있다. 또한, 예를 들어, 서브 블록은 2×2 블록 또는 4×4 블록 또는 그 이상의 블록에 해당할 수 있다.
본 발명에서 제안된 새로운 예측값을 사용함으로써 레지듀얼 데이터의 코딩 효율을 높일 수 있다. 구체적으로, 본 발명에 따르면 인접한 2개의 블록의 움직임 벡터가 서로 다른 경우에도 인접 블록의 움직임 벡터에 따른 예측값을 현재 블록의 특정 영역(예, 경계 영역)에 대해 고려함으로써 현재 블록의 특정 영역에 대한 예측 오차를 줄일 수 있다. 또한, 본 발명에 따르면 블록의 특정 영역에서 블록킹 아티팩트를 줄일 수 있을 뿐만 아니라 레지듀얼 데이터를 줄일 수 있으므로 코딩 효율을 현저히 향상시킬 수 있다.
도 8은 본 발명에 따른 인터 예측 방법을 예시한다.
도 8을 참조하면, 현재 블록(810)은 코딩 블록(CB) 또는 예측 블록(PB)에 해당할 수 있으며 MVC는 현재 블록의 움직임 벡터를 나타내고 MVN은 현재 블록에 인접한 이웃 블록(820)의 움직임 벡터를 나타낸다. 현재 블록의 특정 영역(830)의 경우 현재 블록(810)의 움직임 벡터를 적용할 때보다 이웃 블록(820)의 움직임 벡터를 적용할 때 예측 성능이 더욱 좋아지고 예측 오차가 더 작아질 수 있다. 도 8의 예에서, 현재 블록의 특정 영역(830)은 현재 블록의 특정 경계에 위치한 픽셀 또는 서브 블록을 포함할 수 있다.
본 발명의 제안 방법 1에 따르면, 현재 블록의 움직임 벡터 MVC에 기초하여 현재 블록(810)(혹은 특정 영역(830))에 대한 제1 예측값을 획득하고, 이웃 블록의 움직임 벡터 MVN에 기초하여 현재 블록(810)의 특정 영역(830)에 대한 제2 예측값을 획득할 수 있다. 제1 예측값과 제2 예측값의 가중합에 기초하여 현재 블록(810)의 특정 영역(830)에 대한 예측값을 획득하거나 현재 블록(810)에 대한 예측값을 획득할 수 있다. 예를 들어, 제1 예측값과 제2 예측값의 가중합을 현재 블록(810)의 특정 영역(830)에 대한 예측값으로 대체하거나 설정할 수 있다.
이하에서는 본 발명의 제안 방법 1과 관련하여 다음 내용을 추가적으로 제안한다.
- 현재 블록의 특정 영역(예, 경계 영역)을 위한 움직임 벡터를 갖는 후보 주변 블록(본 발명의 제안 방법 1-1 참조)
- 가중치(Weighting factor)를 적용할 예측값(predictor) 영역(본 발명의 제안 방법 1-2 참조)
- 가중치 또는 가중치 계수(본 발명의 제안 방법 1-3 참조)
- 시그널링(Signaling) 방법(본 발명의 제안 방법 1-4 참조)
제안 방법 1-1 (후보 주변 블록 선정)
현재 블록의 특정 영역(예, 경계 영역)에 대한 예측 오차를 줄일 수 있는 움직임 벡터를 갖는 주변 블록은 현재 블록에 공간적으로 인접하거나 이용가능(available)한 CB/PB, 혹은 CB/PB의 서브 블록, 혹은 CB/PB의 대표 블록을 포함할 수 있다. 또한, 본 발명에 따른 주변 블록은 현재 블록에 시간적으로 인접하거나 이용가능한 CB/PB, 혹은 CB/PB의 서브 블록 혹은 CB/PB의 대표 블록을 포함할 수 있다. 현재 블록을 위한 주변 블록의 수는 하나이거나 다수이거나 다수의 조합일 수 있다.
본 명세서에서 현재 블록을 포함하는 픽처 내에서 현재 블록에 (공간적으로) 인접한 이웃 블록을 공간적 이웃 블록이라고 지칭할 수 있고, 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 현재 블록의 위치에 대응되는 위치를 가지는 블록 또는 현재 블록에 시간적으로 인접한 이웃 블록을 시간적 이웃 블록이라고 지칭할 수 있다. 이웃 블록이 (인터 예측을 위해) 이용가능하다는 것은 해당 블록(CB 또는 PB)이 현재 블록을 포함하고 있는 픽처 내에 존재하고, 현재 블록과 동일한 슬라이스 또는 타일에 존재하고, 인터 예측 모드로 코딩된 경우를 지칭할 수 있다. 타일은 픽처 내에서 적어도 하나의 코딩 트리 블록 또는 유닛을 포함하는 직사각형 영역을 지칭한다. 대표 블록은 복수의 블록의 움직임 벡터들의 대표값(예, 중간값, 평균값, 최소값, 최빈값(majority))을 가지는 블록을 지칭하거나 대표값을 적용하는 블록을 지칭할 수 있다.
예를 들어, 현재 블록의 특정 영역(예, 경계 영역)을 위한 움직임 벡터를 가지는 이웃 블록은 (1-1-a) 내지 (1-1-e) 중 하나에 따라 결정될 수 있다.
(1-1-a) MERGE/SKIP인 경우 병합 후보(merge candidate) 중 하나 혹은 대표 혹은 다수 혹은 다수의 조합. MERGE는 앞서 설명된 병합 모드를 지칭하고, SKIP은 앞서 설명된 병합 스킵 모드를 지칭할 수 있다.
(1-1-b) AMVP인 경우 AMVP 후보 중 하나 혹은 대표 혹은 다수 혹은 다수의 조합. AMVP(Advanced Motion Vector Prediction)는 앞서 설명된 움직임 벡터 예측값 지시 정보를 이용하여 움직임 벡터 예측값을 시그널링하는 모드를 지칭할 수 있다.
(1-1-c) TMVP의 경우 colPU 혹은 colPU의 주변 블록을 고려한 대표 혹은 colPU 내 다수 혹은 다수의 조합. colPU는 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 현재 블록에 대응되는 위치에 존재하는 (예측) 블록을 지칭할 수 있으며, TMVP(Temporal Motion Vector Prediction)은 colPU를 이용하여 움직임 벡터 예측을 수행하는 모드를 지칭할 수 있다.
(1-1-d) 현재 블록의 모드(MERGE/SKIP, AMVP, TMVP)를 고려하지 않고 인접하거나 이용가능(available)한 블록 중 하나 혹은 대표 혹은 다수 혹은 다수의 조합. 예를 들어, 이웃 블록은 현재 블록의 특정 경계를 기준으로 현재 블록의 특정 영역의 반대편에 위치한 공간적 이웃 블록에 해당할 수 있다.
(1-1-e) 상기 방법((1-1-a) 내지 (1-1-d))의 조합
도 9는 본 발명에 따른 주변 블록을 예시한다. 도 9(a)는 (1-1-a) 내지 (1-1-c)에 따른 주변 블록을 예시하고, 도 9(b)는 (1-1-d)에 따른 주변 블록을 예시한다.
도 9(a)를 참조하면, 본 발명에 따른 주변 블록은 현재 블록(CB 또는 PB)을 포함하는 픽처 내에서 현재 블록에 인접한 좌측 이웃 블록, 상측 이웃 블록, 좌상측 이웃 블록, 좌하측 이웃 블록, 우상측 이웃 블록을 포함하는 공간적 이웃 블록과 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 현재 블록에 대응하는 위치에 위치한(또는 co-located) 시간적 이웃 블록 중에서 적어도 하나이거나 또는 이들 중에서 둘 이상의 조합을 포함할 수 있다.
도 9(b)를 참조하면, 본 발명에 따른 주변 블록은 현재 블록에 공간적 및/또는 시간적으로 인접한 모든 서브 블록 또는 대표 블록 중에서 적어도 하나이거나 또는 이들 중에서 둘 이상의 조합을 포함할 수 있다.
제안 방법 1-2 ( 가중합 적용 영역)
현재 블록의 특정 영역(예, 경계에 위치한 영역)이 주변 블록과 가까울수록 주변 블록의 움직임 벡터로 찾은 예측값(predictor)을 사용할 때 예측 오차(prediction error)가 작아질 수 있다. 주변 블록의 위치에 따라 예측 오차가 작아지는 영역이 달라질 수 있으며 예를 들어 현재 블록의 특정 영역과 주변 블록 간의 관계는 도 10과 같이 나타낼 수 있다. 예측 오차가 작아질 수 있는 영역에 가중합(weighted sum)을 적용할 수 있으며 해당 영역은 픽셀 혹은 블록을 포함할 수 있다.
현재 블록 내에서 본 발명에 따라 가중합이 적용되는 영역을 가중합 적용 영역 또는 본 발명에 따른 특정 영역이라고 지칭할 수 있다. 따라서, 본 발명에 따른 특정 영역은 본 발명의 제안 방법 1에 따라 현재 블록 내에서 현재 블록의 움직임 벡터를 해당 영역에 적용하여 획득되는 예측값과 이웃 블록의 움직임 벡터를 해당 영역에 적용하여 획득되는 예측값의 가중합을 이용하여 예측값을 구하는 영역을 지칭한다.
도 10을 참조하면, 주변 블록이 현재 블록에 인접한 (공간적) 좌측 이웃 블록인 경우 본 발명에 따른 특정 영역은 현재 블록의 좌측 경계에 위치한 픽셀 또는 적어도 하나의 블록을 포함할 수 있다. 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 좌측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 좌측 경계에 위치한 픽셀 또는 적어도 하나의 2×2 또는 4×4 블록 또는 그 이상의 블록을 포함할 수 있다(예, 도 10의 1번째 행, 1번째 열의 예 참조). 다른 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 좌측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 주변 블록에 인접하고 주변 블록과 높이가 동일하게 설정될 수 있다(예, 도 10의 1번째 행, 2번째 열의 예 참조). 이 경우, 특정 영역의 폭은 1, 2, 4 또는 그 이상의 픽셀을 포함할 수 있다. 또 다른 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 모든 서브 블록을 포함하는 경우, 본 발명의 특정 영역은 주변 블록에 인접하고 주변 블록과 높이 또는 폭이 동일하게 설정될 수 있다(예, 도 10의 1번째, 3번째 열의 예 참조). 이 경우, 특정 영역의 폭 또는 높이는 1, 2, 4 또는 그 이상의 픽셀을 포함할 수 있다. 또한 이 예에서, 인접한 주변 블록의 움직임 벡터를 해당 블록에 적용하여 가중합 또는 평균을 구할 수 있다.
주변 블록이 현재 블록에 인접한 (공간적) 상측 이웃 블록인 경우 본 발명에 따른 특정 영역은 현재 블록의 상측 경계에 위치한 픽셀 또는 적어도 하나의 블록을 포함할 수 있다. 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 상측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 상측 경계에 위치한 픽셀 또는 적어도 하나의 2×2 또는 4×4 블록 또는 그 이상의 블록을 포함할 수 있다(예, 도 10의 1번째 행, 4번째 열의 예 참조). 다른 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 상측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 주변 블록에 인접하고 주변 블록과 폭이 동일하게 설정될 수 있다(예, 도 10의 1번째 행, 5번째 열의 예 참조). 이 경우, 특정 영역의 높이는 1, 2, 4 또는 그 이상의 픽셀을 포함할 수 있다.
주변 블록이 현재 블록에 인접한 (공간적) 상측 이웃 블록과 좌측 이웃 블록을 포함하는 경우 본 발명에 따른 특정 영역은 상측 이웃 블록에 대응되는 수평 좌표를 가지고 좌측 이웃 블록에 대응되는 수직 좌표를 가지는 블록을 포함할 수 있다. 현재 블록의 상측 경계에 위치한 픽셀 또는 적어도 하나의 블록을 포함할 수 있다. 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 주변 서브 블록들 중에서 상측 이웃 블록들 중에서 가장 좌측 이웃 블록과 좌측 이웃 블록들 중에서 가장 상측 이웃 블록을 포함하는 경우, 본 발명에 따른 특정 영역은 상기 주변 블록들에 대응되는 폭과 높이를 가지는 좌상측 코너 블록일 수 있다(예, 도 10의 1번째 행, 6번째 열의 예 참조). 이 경우, 상기 가장 좌측 이웃 블록의 움직임 벡터와 상기 가장 상측 이웃 블록의 움직임 벡터를 특정 영역에 적용하여 예측값의 가중합을 구함으로써 특정 영역의 예측값을 획득할 수 있다.
주변 블록이 현재 블록에 인접한 (공간적) 우상측 이웃 블록인 경우 본 발명에 따른 특정 영역은 현재 블록의 상측 경계에 위치한 픽셀 또는 적어도 하나의 블록을 포함할 수 있다. 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 우상측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 우상측 코너에 위치한 픽셀 또는 삼각형 형태의 블록을 포함할 수 있다(예, 도 10의 2번째 행, 1번째 열의 예 참조). 이 경우 삼각형 형태의 블록의 한 변은 2, 4 또는 그 이상의 픽셀을 포함할 수 있다. 다른 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (공간적) 우상측 이웃 블록인 경우, 본 발명에 따른 특정 영역은 우상측 코너에 위치한 복수(예, 4)의 픽셀 또는 서브 블록을 포함할 수 있다(예, 도 10의 2번째 행, 4번째 열의 예 참조). 이 경우, 복수의 2×2 또는 4×4 블록 또는 그 이상의 블록을 포함할 수 있다. 또한, 이 경우 복수의 픽셀 또는 블록 각각에 대해 서로 다른 가중치가 적용될 수 있다.
주변 블록이 현재 블록에 인접한 (공간적) 좌하측 이웃 블록인 경우에도 동일/유사한 원리가 적용될 수 있고(예, 도 10의 2번째 행, 2, 5번째 열의 예들 참조), 주변 블록이 현재 블록에 인접한 (공간적) 좌상측 이웃 블록인 경우에도 동일/유사한 원리가 적용될 수 있다(예, 도 10의 2번째 행, 3, 6번째 열의 예들 참조).
주변 블록이 현재 블록에 인접한 (시간적) 이웃 블록인 경우 본 발명에 따른 특정 영역은 현재 블록 전체(예, 도 10의 3번째 행, 1번째 열의 예 참조), 또는 현재 블록의 특정 경계에 위치한 적어도 픽셀 또는 블록을 포함할 수 있다. 제한적이지 않은 예로서, 본 발명에 따라 주변 블록이 (시간적) 이웃 블록인 경우, 본 발명에 따른 특정 영역은 현재 블록의 우측 경계에 위치한 픽셀 또는 서브 블록들을 포함하거나(예, 도 10의 3번째 행, 2번째 열의 예 참조), 혹은 현재 블록의 하측 경계에 위치한 픽셀 또는 서브 블록들을 포함하거나(예, 도 10의 3번째 행, 3번째 열의 예 참조), 혹은 현재 블록의 우하측 코너에 위치한 픽셀 또는 서브 블록을 포함하거나(예, 도 10의 3번째 행, 4, 5번째 열의 예 참조), 현재 블록의 우하측 코너에 위치한 복수(예, 3 또는 4)의 픽셀 또는 서브 블록을 포함할 수 있다(예, 도 10의 3번째 행, 6번째 열의 예 참조). 각각의 서브 블록의 높이 또는 폭은 2, 4 또는 그 이상의 픽셀을 포함할 수 있고, 삼각형 형태의 블록의 한 변은 2, 4 또는 그 이상의 픽셀을 포함할 수 있다. 또한, 특정 영역이 복수의 픽셀 또는 블록을 포함하는 경우, 복수의 픽셀 또는 블록 각각에 대해 서로 다른 가중치가 적용될 수 있다.
본 발명에 따른 특정 영역(또는 가중합을 적용할 픽셀 혹은 블록)은 현재 블록과 주변 블록의 특성에 따라 달라질 수 있다. 예를 들어, 블록의 특성으로서 현재 블록의 크기, 주변 블록의 크기, 현재 블록의 예측 모드, 현재 블록과 주변 블록의 움직임 벡터의 차이, 현재 블록과 주변 블록의 경계에 대한 실제 에지(real edge) 여부가 고려될 수 있다.
주변 블록의 크기가 큰 경우 현재 블록의 경계 부분에 대한 영향력이 작아질 수 있으므로 가중합 적용 영역을 결정하는 기준의 하나가 될 수 있다. 현재 블록의 모드가 MERGE(또는 병합 모드)인 경우 병합 후보가 주변 블록으로 결정되면 동일 움직임 벡터를 가지므로 가중합이 적용되지 않을 수 있다. 또한, 현재 블록과 주변 블록의 움직임 벡터의 차이가 클수록 경계 부분의 불연속성이 커질 수 있지만, 이 경우 블록의 경계 부분의 불연속적 특성이 실제 에지(real edge) 때문일 수 있으므로 이를 고려해야 한다.
예를 들어, (1-2-a) 내지 (1-2-j) 중에서 적어도 하나에 기초하여 블록의 특성을 반영할 수 있다.
(1-2-a) 현재 블록과 주변 블록의 크기를 고려하여 가중합 적용 영역이 표 3과 같이 달라질 수 있다.
Figure PCTKR2016004384-appb-T000003
(1-2-b) 현재 블록과 주변 블록의 움직임 벡터가 다를 경우 가중합을 적용한다.
(1-2-c) 현재 블록과 주변 블록의 움직임 벡터의 차이가 임계치보다 큰 경우 가중합 적용 영역이 커진다.
(1-2-d) 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 작더라도 참조 픽처(reference picture)가 다를 경우(예, 참조 픽처의 POC(picture order count)가 다를 경우) 가중합을 적용하지 않는다. 이 경우, 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 작고 참조 픽처가 동일한 경우(예, 참조 픽처의 POC가 동일한 경우) 가중합이 적용될 수 있다.
(1-2-e) 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 큰 경우 가중합을 적용하지 않는다.
(1-2-f) 현재 블록과 주변 블록의 픽셀 차이가 임계치보다 큰 경우 실제 에지(real edge)로 판단하여 가중합을 적용하지 않는다.
(1-2-g) 주변 블록이 인트라 CU/PU인 경우 가중합을 적용하지 않는다.
(1-2-h) 주변 블록이 인트라 CU/PU일 경우 움직임이 없다고(zero motion, zero refIdx를 갖는다고) 가정하고 가중합을 수행한다.
(1-2-i) 주변 블록이 인트라 모드인 경우 인트라 예측 모드의 방향성을 고려하여 가중합 적용 영역을 결정한다.
(1-2-j) 위 조건을 조합하여 가중합 적용 영역을 결정할 수 있다.
제안 방법 1-3 (가중치)
앞서 설명한 바와 같이 본 발명에서는 주변 블록의 움직임 벡터로 찾은 예측값과 현재 블록의 움직임 벡터로 찾은 예측값을 가중합한다. 가중치(Weighting factor)를 적용할 영역은 픽셀 혹은 블록이 될 수 있고 각 픽셀 혹은 블록에 대해 동일하거나 상이한 가중치를 적용할 수 있다.
예를 들어, 본 발명에 따른 특정 영역에 대해 현재 블록의 움직임 벡터를 적용하여 구한 제1 예측값과 주변 블록의 움직임 벡터를 적용하여 구한 제2 예측값에 대해 동일한 가중치가 적용될 수 있으며, 이 경우 가중합은 제1 예측값과 제2 예측값의 평균일 수 있다. 다른 예로, 본 발명에 따른 특정 영역에 대한 제1 예측값의 각 샘플에 대해 동일한 가중치가 적용되고 제2 예측값의 각 샘플에 대해 동일한 가중치가 적용되지만 제1 예측값에 대한 가중치와 제2 예측값에 대한 가중치는 서로 다를 수 있다. 또 다른 예로, 본 발명에 따른 특정 영역에 대한 제1 예측값에 대해 픽셀 단위 또는 블록 단위로 독립적으로 및/또는 상이하게 가중치를 적용할 수 있고, 제2 예측값에 대해 픽셀 단위 또는 블록 단위로 독립적으로 및/또는 상이하게 가중치를 적용할 수 있고, 제1 예측값에 대한 가중치와 제2 예측값에 대한 가중치는 동일하거나 서로 다르게 설정될 수 있다.
한편, 주변 블록에 가까운 픽셀 혹은 블록일수록 주변 블록의 움직임 벡터로 찾은 예측값에 더 많은 가중치를 둘 때 코딩 효율의 개선을 기대할 수 있다. 따라서, 본 발명에서는 주변 블록에 가까운 픽셀 혹은 블록일수록 현재 블록의 움직임 벡터를 적용하여 구한 예측값에 비해 주변 블록의 움직임 벡터를 적용하여 구한 예측값에 더 큰 가중치를 적용할 수 있다. 예를 들어, 주변 블록에서 먼 픽셀 또는 블록에 비해 주변 블록에 가까운 픽셀 또는 블록에 대해 제1 예측값이 제2 예측값보다 보다 크게 반영되도록 가중치가 설정될 수 있고, 또는 주변 블록에 가까운 픽셀 또는 블록에 비해 주변 블록에서 먼 픽셀 또는 블록에 대해 제1 예측값이 제2 예측값보다 보다 작게 반영되도록 가중치가 설정될 수 있다. 혹은, 예를 들어, 주변 블록에 가까운 픽셀 또는 블록에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치의 비가 주변 블록에서 먼 픽셀 또는 블록에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치의 비보다 크도록 가중치가 설정될 수 있다.
이 경우, 제1 예측값에 대한 가중치는 픽셀 또는 블록 단위로 독립적 및/또는 상이하게 설정/적용될 수 있고, 제2 예측값에 대한 가중치는 픽셀 또는 블록 단위로 독립적 및/또는 상이하게 설정/적용될 수 있다. 이 경우에도, 제1 예측값에 대한 가중치와 제2 예측값에 대한 가중치는 동일하거나 서로 상이하게 설정될 수 있다. 또한, 이 경우, 현재 블록의 움직임 벡터를 적용하여 구한 예측값의 경우 주변 블록(또는 경계)에 가까운 픽셀 또는 블록에 대해 더 작은 가중치가 적용될 수도 있고, 혹은 주변 블록(또는 경계)에 가까운 픽셀 또는 블록에 대해 더 큰 가중치가 적용될 수도 있다.
도 11은 본 발명에 따른 가중치를 예시한다. 도 11에 예시된 바와 같이, 주변 블록의 위치 및 가중합 적용 영역에 따라 다양한 가중치가 적용될 수 있다. 도 11의 예에서는 주변 블록이 좌측 이웃 블록 또는 좌상측 이웃 블록인 경우만을 예시하였지만, 도 11에 예시된 원리는 동일/유사하게 다른 예들(예, 도 10의 다른 예들 참조)에 적용될 수 있다. 또한, 도 11의 예에서 주변 블록과 본 발명에 따른 특정 영역이 4×4 블록으로 도시되어 있지만 본 발명은 이에 제한되지 않고 주변 블록 및/또는 본 발명에 따른 특정 영역이 다른 크기의 블록 또는 픽셀인 경우에도 동일/유사하게 적용될 수 있다. 도 11에서 PN은 주변 블록의 움직임 벡터를 본 발명에 따른 특정 영역에 적용하여 획득한 예측값을 나타내고, PC는 현재 블록의 움직임 벡터를 적용하여 획득한 예측값을 나타낸다.
도 11(a)를 참조하면, 주변 블록이 (공간적) 좌측 이웃 블록이고 본 발명에 따른 특정 영역은 현재 블록 내에서 좌하측 코너 픽셀 또는 블록일 수 있다. 따라서, 본 발명에 따른 영역에 대해 이웃 블록의 움직임 벡터를 적용하여 획득한 제1 예측값(예, PN)에 대해서는 주변 블록(또는 경계)에 가까운 픽셀에 더 큰 가중치(예, A > B > C > D)를 적용할 수 있다.
또한, 도 11(a)의 예에서, 본 발명에 따른 영역 내에서 주변 블록(또는 경계)에 가까운 픽셀일수록 이웃 블록의 움직임 벡터를 적용하여 획득한 제1 예측값(예, PN)을 위한 가중치가 현재 블록의 움직임 벡터를 적용하여 획득한 제2 예측값(예, PC)을 위한 가중치보다 상대적으로 크도록 설정될 수 있다. 보다 구체적으로, 주변 블록(또는 경계)에 가장 가까운 픽셀(A)에 대해서는 다른 픽셀(B, C, D)에 비해 제1 예측값(예, PN)이 제2 예측값(예, PC)에 비해 보다 크게 반영되도록 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치가 설정될 수 있다. 따라서, 주변 블록(또는 경계)에 가까운 픽셀(예, A)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 3/4:1/4 = 3:1 또는 3)가 주변 블록(또는 경계)에서 먼 픽셀(예, D)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 1/8:7/8 = 1:7 또는 1/7)보다 크도록 설정될 수 있다.
도 11(b)를 참조하면, 주변 블록이 (공간적) 좌상측 이웃 블록이고 본 발명에 따른 특정 영역은 현재 블록 내에서 좌상측 코너 픽셀 또는 블록일 수 있다. 따라서, 본 발명에 따른 특정 영역에 대해 이웃 블록의 움직임 벡터를 적용하여 획득한 제1 예측값(예, PN)에 대해서는 현재 블록의 좌상측 코너에 가까울수록 더 큰 가중치(예, A > B)를 적용할 수 있다.
또한, 도 11(b)의 예에서, 본 발명에 따른 영역 내에서 좌상측 코너에 가까운 픽셀일수록 이웃 블록의 움직임 벡터를 적용하여 획득한 제1 예측값(예, PN)을 위한 가중치가 현재 블록의 움직임 벡터를 적용하여 획득한 제2 예측값(예, PC)을 위한 가중치보다 상대적으로 크도록 설정될 수 있다. 보다 구체적으로, 좌상측 코너에 가까운 픽셀(A)에 대해서는 다른 픽셀(B)에 비해 제1 예측값(예, PN)이 제2 예측값(예, PC)에 비해 보다 크게 반영되도록 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치가 설정될 수 있다. 따라서, 좌상측 코너에 가까운 픽셀(예, A)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 3/4:1/4 = 3:1 또는 3)가 좌상측 코너에서 먼 픽셀(예, B)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 1/2:1/2 = 1:1 또는 1)보다 크도록 설정될 수 있다.
도 11(c)를 참조하면, 도 11(a)와 유사하지만 본 발명에 따른 특정 영역이 좌측 경계에 인접한 블록이며 폭은 2개 픽셀에 해당한다. 이 경우에도 유사하게, 이웃 블록의 움직임 벡터를 적용하여 획득한 제1 예측값(예, PN)에 대해서는 좌측 경계에 가까울수록 더 큰 가중치(예, A > B)를 적용할 수 있다.
또한, 도 11(c)의 예에서, 주변 블록(또는 경계)에 가장 가까운 픽셀(A)에 대해서는 다른 픽셀(B)에 비해 제1 예측값(예, PN)이 제2 예측값(예, PC)에 비해 보다 크게 반영되도록 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치가 설정될 수 있다. 따라서, 주변 블록(또는 경계)에 가까운 픽셀(예, A)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 1/2:1/2 = 1:1 또는 1)가 주변 블록(또는 경계)에서 먼 픽셀(예, B)에 대한 제1 예측값을 위한 가중치와 제2 예측값을 위한 가중치 간의 비(예, 1/4:3/4 = 1:3 또는 1/3)보다 크도록 설정될 수 있다.
도 11에 예시된 가중치 값, 주변 블록의 위치, 가중합 적용 영역은 오로지 예시이며 본 발명이 이들로만 제한되어 적용되는 것은 아니다.
제안 방법 1-4 ( 시그널링 방법)
주변 블록의 움직임 벡터로 찾은 예측값(predictor)과 현재 블록의 움직임 벡터로 찾은 예측값에 가중합을 적용하기 위해 가중합 사용 여부, 가중합을 픽셀 단위로 적용할지 아니면 블록 단위로 적용할지 여부를 시그널링할 수 있다.
가중합 사용 여부를 지시하는 정보는 (1-4-a) 내지 (1-4-f) 중에서 하나 이상의 방법을 통해 시그널링될 수 있다. 예를 들어, 가중합 사용 여부를 지시하는 정보는 가중합 사용 지시 정보 또는 가중합 사용 플래그 정보라고 지칭될 수 있으며, 가중합 사용 지시 정보의 값이 1인 경우 가중합 사용을 지시하고, 값이 0인 경우 가중합이 사용되지 않음을 지시할 수 있지만, 이는 오로지 예시일 뿐이며 본 발명에 따른 가중합 사용 지시 정보는 다른 이름으로 지칭될 수 있고, 값도 반대로 설정되거나 달리 설정될 수 있다.
(1-4-a) SPS(sequence parameter set)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. SPS를 통해 시그널링되는 정보는 픽처들의 시퀀스에 포함된 모든 시퀀스에 적용될 수 있다.
(1-4-b) PPS(picture parameter set)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. PPS를 통해 시그널링되는 정보는 PPS가 적용되는 픽처에 대해 적용될 수 있다.
(1-4-c) APS(adaptation parameter set)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. APS를 통해 시그널링되는 정보는 APS가 적용되는 픽처에 대해 적용될 수 있다.
(1-4-d) 슬라이스 헤더(Slice Header)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. 슬라이스 헤더를 통해 시그널링되는 정보는 해당 슬라이스에 대해 적용될 수 있다.
(1-4-e) CU(coding unit)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. CU를 통해 시그널링되는 정보는 해당 CU에 대해 적용될 수 있다.
(1-4-f) PU(prediction unit)에서 예측값 간에 가중합 사용 여부를 지시하는 정보를 시그널링할 수 있다. PU를 통해 시그널링되는 정보는 해당 PU에 대해 적용될 수 있다.
비트스트림에서 SPS, PPS, APS, 슬라이스 헤더, CU, PU 순으로 신택스 정보가 존재할 수 있다. 따라서, (1-4-a) 내지 (1-4-f) 중에서 복수의 방법으로 가중합 사용 여부를 시그널링하는 경우, 하위 레벨 신택스를 통해 시그널링되는 정보가 해당 레벨과 그 하위 레벨에 오버라이딩되어 적용될 수 있다. 예를 들어, SPS를 통해 가중합 사용 여부가 시그널링되며 해당 지시 정보가 가중합이 사용되지 않음을 지시하고, 슬라이스 헤더를 통해 가중합 사용 여부가 시그널링되며 해당 지시 정보가 가중합이 사용됨을 지시하는 경우, 슬라이스 헤더에 대응하는 슬라이스에 대해서만 가중합이 사용되고 해당 슬라이스를 제외한 나머지 슬라이스 및 픽처에 대해서는 가중합이 사용되지 않는다.
가중합을 픽셀 단위로 적용할지 블록 단위로 적용할지를 지시하는 정보는 (1-4-g) 내지 (1-4-l) 중 하나 이상의 방법을 통해 시그널링되거나 시그널링되지 않을 수 있다. 예를 들어, 가중합을 픽셀 단위로 적용할지 블록 단위로 적용할지를 지시하는 정보는 가중합 적용 단위 지시 정보 또는 가중합 적용 단위 플래그 정보라고 지칭될 수 있으며, 그 값이 0인 경우 픽셀 단위로 적용되고 값이 1인 경우 블록 단위로 적용될 수 있다. 이는 오로지 예시일 뿐이며 가중합 적용 단위 지시 정보의 값은 반대로 설정되거나 다른 값으로 설정될 수도 있다.
(1-4-g) SPS에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. SPS를 통해 시그널링되는 정보는 픽처들의 시퀀스에 포함된 모든 시퀀스에 적용될 수 있다.
(1-4-h) PPS에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. PPS를 통해 시그널링되는 정보는 PPS가 적용되는 픽처에 대해 적용될 수 있다.
(1-4-i) APS에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. APS를 통해 시그널링되는 정보는 APS가 적용되는 픽처에 대해 적용될 수 있다.
(1-4-j) 슬라이스 헤더에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. 슬라이스 헤더를 통해 시그널링되는 정보는 해당 슬라이스에 대해 적용될 수 있다.
(1-4-k) CU에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. CU를 통해 시그널링되는 정보는 해당 CU에 대해 적용될 수 있다.
(1-4-l) PU에서 예측값 간 가중합 적용 영역이 픽셀 혹은 블록인지를 지시하는 정보를 시그널링할 수 있다. PU를 통해 시그널링되는 정보는 해당 PU에 대해 적용될 수 있다.
가중합 사용 지시 정보와 관련하여 설명된 바와 유사하게, (1-4-g) 내지 (1-4-l) 중에서 복수의 방법으로 가중합 적용 단위를 시그널링하는 경우, 하위 레벨 신택스를 통해 시그널링되는 정보가 해당 레벨과 그 하위 레벨에 오버라이딩되어 적용될 수 있다.
제안 방법 2
쿼드 트리 방식으로 분할되는 코딩 블록과 달리 예측 블록은 파티셔닝 모드에 따라 2Nx2N, Nx2N, 2NxN, 2NxnU, 2NxnD, nLx2N, 또는 nRx2N과 같이 다양한 형태로 분할된다. 이러한 다양한 형태의 파티셔닝 모드로 인해 예측 블록의 경우 주변 블록의 움직임 벡터를 사용할 때 현재 블록의 경계 영역에서 예측 오차가 작아지는 경향이 낮을 수 있다. 하지만 여전히 인접한 블록의 예측값 간에 불연속성이 존재할 수 있기 때문에 블록의 경계 영역의 예측 오차를 낮출 필요가 있다.
따라서, 본 발명의 제안 방법 2에서는 블록의 예측값 간 경계 영역을 평활화(smoothing)하여 불연속성을 제거하는 방법을 제안한다. 본 발명의 제안 방법 2에서는 인접한 블록의 예측값을 이용하여 현재 블록의 예측값을 평활화할 수 있다.
본 발명의 제안 방법 1은 이웃 블록의 움직임 벡터를 현재 블록의 특정 영역에 적용하여 획득한 예측값(predictor)을 이용하는 반면, 본 발명의 제안 방법 2는 주변 블록의 움직임 벡터를 주변 블록에 적용하여 획득되는 예측값을 이용한다는 점에서 차이가 있다. 보다 구체적으로, 본 발명이 제안 방법 1과 비교하여, 본 발명의 제안 방법 2는 주변 블록의 예측값 그 자체를 이용하여 현재 블록의 경계 부분을 평활화한다는 점에서 차이가 있다. 인접한 블록의 예측값은 인접한 블록의 움직임 벡터를 현재 블록의 특정 영역에 적용하여 획득되는 것이 아니라 인접한 블록 자체의 예측값을 의미한다.
예를 들어, 본 발명의 제안 방법 2에서는 인접한 블록의 예측값을 이용하여 현재 블록의 예측값에 가중합(weighted sum)을 적용하여 현재 블록의 특정 영역을 평활화할 수 있다. 따라서, 본 발명의 제안 방법 1에서 인접한 블록의 움직임 벡터를 현재 블록의 특정 영역에 적용하여 획득되는 제1 예측값 대신 인접한 블록의 예측값을 적용하면 본 발명의 제안 방법 1과 유사한 방식으로 동작할 수 있다.
이하에서는 본 발명의 제안 방법 2에 대해 다음 내용을 추가적으로 제안한다.
- 현재 블록과 평활화 인자(smoothing factor)를 적용할 후보 주변 블록(본 발명의 제안 방법 2-1 참조)
- 평활화를 적용할 현재 블록의 예측값 영역(본 발명의 제안 방법 2-2 참조)
- 평활화 인자 또는 평활화 인자 계수(본 발명의 제안 방법 2-3 참조)
- 시그널링(Signaling) 방법(본 발명의 제안 방법 2-4 참조)
제안 방법 2-1 (후보 주변 블록)
본 발명의 제안 방법 2에서는 현재 블록의 예측값에 대해 움직임 벡터가 서로 다른 주변의 인접한 영역에 대해 가중합을 적용할 수 있다. 주변의 인접한 영역은 현재 블록에 공간적으로 인접하거나 이용가능(available)한 CB/PB, 혹은 CB/PB의 서브 블록, 혹은 CB/PB의 대표 블록을 포함할 수 있다. 또한, 본 발명에 따른 주변 블록은 현재 블록에 시간적으로 인접하거나 이용가능한 CB/PB, 혹은 CB/PB의 서브 블록 혹은 CB/PB의 대표 블록을 포함할 수 있다. 현재 블록을 위한 주변 블록의 수는 하나이거나 다수이거나 다수의 조합일 수 있다.
예를 들어, 본 발명의 제안 방법 2에 따라 평활화를 적용할 주변 블록은 제안 방법 1-1에 따른 주변 블록과 동일/유사하게 적용될 수 있다. 따라서, 본 발명의 제안 방법 2에 따라 평활화를 적용할 주변 블록은 (1-1-a) 내지 (1-1-e) 및/또는 도 9를 참조하여 설명한 바와 같이 결정될 수 있다.
제안 방법 2-2 (평활화 적용 영역)
본 발명에 따른 특정 영역(또는 평활화를 적용할 픽셀 혹은 블록)은 현재 블록과 주변 블록의 특성에 따라 달라질 수 있다. 예를 들어, 블록의 특성으로서 현재 블록의 예측 모드, 현재 블록과 주변 블록의 움직임 벡터의 차이, 현재 블록과 주변 블록의 경계에 대한 실제 에지(real edge) 여부가 고려될 수 있다.
현재 블록의 모드가 MERGE(또는 병합 모드)인 경우 병합 후보가 주변 블록으로 결정되면 동일 움직임 벡터를 가지므로 평활화가 적용되지 않을 수 있다. 또한, 현재 블록과 주변 블록의 움직임 벡터의 차이가 클수록 경계 부분의 불연속성이 커질 수 있으며 블록의 경계 부분의 불연속적 특성이 실제 에지(real edge) 때문일 수 있으므로 이를 고려해야 한다.
예를 들어, (2-2-a) 내지 (2-2-i) 중에서 적어도 하나에 기초하여 블록의 특성을 반영할 수 있다.
(2-2-a) 현재 블록과 주변 블록의 움직임 벡터가 다를 경우 평활화를 적용한다.
(2-2-b) 현재 블록과 주변 블록의 움직임 벡터의 차이가 임계치보다 큰 경우 평활화 적용 영역이 커진다.
(2-2-c) 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 작더라도 참조 픽처(reference picture)가 다를 경우(예, 참조 픽처의 POC(picture order count)가 다를 경우) 평활화를 적용하지 않는다. 이 경우, 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 작고 참조 픽처가 동일한 경우(예, 참조 픽처의 POC가 동일한 경우) 평활화가 적용될 수 있다.
(2-2-d) 현재 블록과 주변 블록의 움직임 벡터 차이가 임계치보다 큰 경우 평활화를 적용하지 않는다.
(2-2-e) 현재 블록과 주변 블록의 픽셀 차이가 임계치보다 큰 경우 실제 에지(real edge)로 판단하여 평활화를 적용하지 않는다.
(2-2-f) 주변 블록이 인트라 CU/PU인 경우 평활화를 적용하지 않는다.
(2-2-g) 주변 블록이 인트라 CU/PU일 경우 움직임이 없다고(zero motion, zero refIdx를 갖는다고) 가정하고 평활화를 수행한다.
(2-2-h) 주변 블록이 인트라 모드인 경우 인트라 예측 모드의 방향성을 고려하여 평활화 적용 영역을 결정한다.
(2-2-i) 위 조건을 조합하여 평활화 적용 영역을 결정할 수 있다.
도 12는 본 발명에 따른 평활화 적용 영역을 예시한다. 도 12의 예에서 하나의 코딩 블록이 2개의 예측 블록(예, PU0, PU1)으로 분할되는 경우(예, 파티셔닝 모드 Nx2N)를 예시하였지만 본 발명은 이에 제한되지 않고 다른 파티셔닝 모드에 대해서도 동일/유사하게 적용될 수 있다. 또한, 도 12에 예시된 각각의 사각형은 픽셀, 또는 2×2 블록, 또는 4×4 블록, 또는 그 이상의 블록에 해당할 수 있다.
도 12를 참조하면, 코딩 블록의 좌측 경계 및 상측 경계에 위치한 픽셀 또는 블록에 대해서는 현재 코딩 블록에 공간적으로 인접한 주변 블록의 예측값을 이용하여 평활화를 수행할 수 있다. 또한, 코딩 블록의 내부 경계(예, PU0와 PU1의 경계)에 위치한 픽셀 또는 블록에 대해서는 공간적으로 인접한 블록(예, PU0에 대해서는 PU1의 픽셀 또는 블록, 또는 PU1에 대해서는 PU0의 픽셀 또는 블록)의 예측값을 이용하여 평활화를 수행할 수 있다.
코딩 블록 중에서 상기 경계 부분을 제외한 나머지 경계에 대해서는 현재 블록과 시간적으로 인접한 블록(예, TMVP 후보, 또는 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 현재 블록에 대응되는 위치에 있는 블록)의 예측값을 이용하여 평활화를 수행할 수 있다. 예를 들어, 코딩 블록의 하측 경계 및/또는 코딩 블록의 우측 경계에 위치한 픽셀 또는 블록에 대해서는 현재 블록과 시간적으로 인접한 블록의 예측값을 이용하여 평활화를 수행할 수 있다.
제안 방법 2-3 (평활화 인자)
본 발명에서는 주변 블록의 예측값과 현재 블록의 움직임 벡터로 찾은 예측값을 평활화한다. 평활화 인자를 적용할 영역은 픽셀 혹은 블록이 될 수 있고 각 픽셀 혹은 블록에 대해 동일하거나 다른 평활화 인자를 적용할 수 있다. 본 발명에 따른 평활화 인자는 제안 방법 1-3을 참조하여 설명한 바와 같이 설정될 수 있다.
도 13은 본 발명에 따른 평활화 인자를 예시한다. 도 13에 예시된 바와 같이, 주변 블록의 위치 및 평활화 적용 영역에 따라 다양한 평활화 인자가 적용될 수 있다. 도 13에서는 주변 블록이 좌측 이웃 블록 또는 시간적 이웃 블록인 경우만을 예시하였지만, 도 13에 예시된 원리는 다른 예들(예, 도 10의 다른 예들 참조)에 동일/유사하게 적용될 수 있다. 또한, 도 13의 예에서 주변 블록과 본 발명에 따른 특정 영역이 4×4 블록으로 도시되어 있지만 본 발명은 이에 제한되지 않고 주변 블록 및/또는 본 발명에 따른 특정 영역이 다른 크기의 블록 또는 픽셀인 경우에도 동일/유사하게 적용될 수 있다. 도 13에서 PN은 주변 블록의 예측값을 나타내고, PC는 현재 블록의 예측값을 나타낸다.
도 13(a)를 참조하면, 주변 블록이 (공간적) 좌측 이웃 블록이고 본 발명에 따른 특정 영역은 현재 블록 내에서 좌하측 코너 픽셀 또는 블록일 수 있다. 따라서, 주변 블록(또는 경계)에 가까운 픽셀일수록 이웃 블록의 예측값(예, PN)을 위한 가중치가 현재 블록의 예측값(예, PC)을 위한 가중치보다 상대적으로 크도록 설정될 수 있다. 보다 구체적으로, 주변 블록(또는 경계)에 가장 가까운 픽셀(A)에 대해서는 다른 픽셀(B, C, D)에 비해 이웃 블록의 예측값(예, PN)이 현재 블록의 예측값(예, PC)에 비해 보다 크게 반영되도록 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치가 설정될 수 있다. 따라서, 주변 블록(또는 경계)에 가까운 픽셀(예, A)에 대한 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치 간의 비(예, 1/4:3/4 = 1:3 또는 1/3)가 주변 블록(또는 경계)에서 먼 픽셀(예, D)에 대한 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치 간의 비(예, 1/32:31/32 = 1:31 또는 1/31)보다 크도록 설정될 수 있다.
혹은, 이웃 블록의 예측값(예, PN)과 현재 블록의 예측값(예, PC)에 대해 경계에 가까운 픽셀에 더 큰 가중치(예, A > B > C > D)를 적용할 수 있다.
도 13(b)를 참조하면, 주변 블록이 (시간적) 이웃 블록이고 본 발명에 따른 특정 영역은 현재 블록 내에서 우하측 코너 픽셀 또는 블록일 수 있다. 따라서, 주변 블록(또는 경계)에 가장 가까운 픽셀(A)에 대해서는 다른 픽셀(B)에 비해 이웃 블록의 예측값(예, PN)이 현재 블록의 예측값(예, PC)에 비해 보다 크게 반영되도록 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치가 설정될 수 있다. 따라서, 주변 블록(또는 경계)에 가까운 픽셀(예, A)에 대한 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치 간의 비(예, 1/2:1/2 = 1:1 또는 1)가 주변 블록(또는 경계)에서 먼 픽셀(예, B)에 대한 이웃 블록의 예측값(예, PN)을 위한 가중치와 현재 블록의 예측값(예, PC)을 위한 가중치 간의 비(예, 1/4:3/4 = 1:3 또는 1/3)보다 크도록 설정될 수 있다.
혹은, 이웃 블록의 예측값(예, PN)과 현재 블록이 예측값(예, PC)에 대해 경계에 가까울수록 더 큰 가중치(예, A > B)를 적용할 수 있다.
도 13에 예시된 평활화 인자 값, 주변 블록의 위치, 평활화 적용 영역은 오로지 예시이며 본 발명이 이들로만 제한되어 적용되는 것은 아니다.
제안 방법 2-4 ( 시그널링 방법)
주변 블록의 예측값(predictor)과 현재 블록의 예측값에 평활화를 적용하기 위해 평활화 사용 여부, 평활화를 픽셀 단위로 적용할지 아니면 블록 단위로 적용할지 여부를 시그널링할 수 있다.
시그널링 방법에 대해서는 제안 방법 1-4에서 제안된 방법이 동일/유사하게 적용될 수 있다. 예를 들어, 평활화 사용 여부를 지시하는 정보는 평활화 사용 지시 정보 또는 평활화 사용 플래그 정보라고 지칭될 수 있으며, 앞서 설명된 (1-4-a) 내지 (1-4-f) 중에서 하나 이상의 방법을 통해 시그널링될 수 있다. 마찬가지로, 평활화를 픽셀 단위로 적용할지 블록 단위로 적용할지를 지시하는 정보는 (1-4-g) 내지 (1-4-l) 중 하나 이상의 방법을 통해 시그널링되거나 시그널링되지 않을 수 있다.
제안 방법 3
본 발명의 제안 방법 1과 제안 방법 2는 각각 독립적으로 적용될 수도 있지만 조합하여 적용될 수도 있다.
예를 들어, 코딩 블록이 복수의 예측 블록으로 분할되는 경우, 코딩 블록의 경계에 대해서는 제안 방법 1을 적용하고 코딩 블록 내에서 예측 블록 간의 경계에 대해서는 제안 방법 2를 적용할 수 있다. 따라서, 코딩 블록의 경계에 대해서는 이웃 블록의 움직임 벡터를 현재 블록의 특정 영역에 적용하여 획득한 예측값과 현재 블록의 예측값에 가중합을 적용하여 새로운 예측값을 획득하고, 코딩 블록 내에서 예측 블록 간의 경계에 대해서는 이웃 블록의 예측값을 이용하여 현재 블록의 특정 영역에 평활화를 적용하여 현재 블록의 예측값을 평활화할 수 있다.
보다 구체적인 예로, 도 12를 다시 참조하면, 코딩 블록의 좌측, 상측, 하측, 우측 경계에 위치한 픽셀 또는 블록에 대해서는 본 발명에 제안 방법 1을 적용하고 코딩 블록 내에서 예측 블록 간의 경계(예, PU0와 PU1 간의 경계)에 대해서는 본 발명의 제안 방법 2를 적용할 수 있다.
본 발명에 따른 제안 방법 1~3은 현재 블록이 인터 예측 모드로 코딩된 경우 인터 예측을 통해 예측값(predictor)을 구하는 과정에 적용될 수 있다. 보다 구체적으로, 본 발명에 따른 제안 방법 1~3은 도 5에서 인터 예측 파라미터 정보를 이용하여 인터 예측을 수행하는 단계에 적용될 수 있다. 따라서, 나머지 인코딩/디코딩 과정은 도 1 내지 도 6을 참조하여 설명된 과정에 따라 수행될 수 있다.
제안 방법 4
앞에서 설명한 가중치 또는 평활화 인자는 미리 정의된 값으로 가정하였다. 하지만, 영상마다 그리고 영상 내의 특정 영역마다 움직임과 텍스처의 특성이 상이할 수 있으므로 영상의 특성에 맞는 최적 가중 윈도우(optimal weighting window)를 인코더에서 계산 후 디코더로 전송하는 것이 코딩 효율을 증가시킬 수 있다.
따라서, 본 발명의 제안 방법 4에서는 가중합 수행 시 사용하는 가중 윈도우의 계수 또는 가중치(또는 평활화 인자)를 비트스트림을 통해 명시적(explicit)으로 시그널링할 것을 제안한다. 보다 구체적으로, 본 발명의 제안 방법 1에서 주변 블록의 움직임 벡터를 적용하여 획득한 제1 예측값에 적용할 가중치와 현재 블록의 움직임 벡터를 적용하여 획득한 제2 예측값에 적용할 가중치를 SPS, PPS, 슬라이스 헤더, CTU, CU, 또는 PU 중에서 적어도 하나를 통해 시그널링할 수 있다. 이 경우, 본 발명의 가중치는 시퀀스 단위, 픽처 단위, 슬라이스 단위, 타일 단위, CTU 단위, CU 단위, 또는 PU 단위로 비트스트림을 통해 시그널링될 수 있다.
본 발명의 제안 방법 2에서 주변 블록의 예측값과 현재 블록의 예측값에 적용할 평활화 인자를 SPS, PPS, 슬라이스 헤더, CTU, CU, 또는 PU 중에서 적어도 하나를 통해 시그널링할 수 있다. 이 경우, 본 발명의 평활화 인자는 시퀀스 단위, 픽처 단위, 슬라이스 단위, 타일 단위, CTU 단위, CU 단위, 또는 PU 단위로 비트스트림을 통해 시그널링될 수 있다.
도 14는 본 발명에 따른 가중치 또는 평활화 인자를 예시한다.
도 14를 참조하면, 인코더는 가중합 또는 평활화를 수행할 때 사용하는 PN, PC에 해당하는 값(예, 가중치 또는 평활화 인자)을 영상의 특성에 맞게 시퀀스 단위, 픽처 단위, 슬라이스 단위, 타일 단위, CTB 단위, CU 단위 또는 PU 단위로 전송할 수 있다. 도 14의 예에서, PN에 대한 가중치 또는 평활화 인자를 위해 {1/4, 1/8, 1/16, 1/32} 또는 {2/4, 2/8, 2/16, 2/32} 또는 다른 세트 중에서 하나의 세트를 SPS, PPS, 슬라이스 헤더, CTU, CU, 또는 PU를 통해 시그널링하면 디코더는 시그널링된 가중치 또는 평활화 인자 세트를 적용하여 본 발명의 제안 방법을 수행할 수 있다. 마찬가지로, PC에 대한 가중치 또는 평활화 인자를 위해 {3/4, 7/8, 15/16, 31/32} 또는 {2/4, 6/8, 14/16, 30/32} 또는 다른 세트 중에서 하나의 세트를 SPS, PPS, 슬라이스 헤더, CTU, CU, 또는 PU를 통해 시그널링하면 디코더는 시그널링된 가중치 또는 평활화 인자 세트를 적용하여 본 발명의 제안 방법을 수행할 수 있다.
도 15는 본 발명이 적용될 수 있는 영상 처리 장치의 블록도를 예시한다. 영상 처리 장치는 영상 신호의 인코딩 장치 및/또는 디코딩 장치를 포함할 수 있다. 예를 들어, 본 발명이 적용될 수 있는 영상 처리 장치는 스마트폰 등과 같은 이동 단말, 랩톱 컴퓨터 등과 같은 휴대용 기기, 디지털 TV, 디지털 비디오 플레이어 등과 같은 가전 제품 등을 포함할 수 있다.
메모리(12)는 프로세서(11)의 처리 및 제어를 위한 프로그램을 저장할 수 있고, 부호화된 비트스트림, 복호화된 영상, 제어 정보 등을 저장할 수 있다. 또한, 메모리(12)는 각종 영상 신호를 위한 버퍼로서 활용될 수 있다. 메모리(12)는 ROM(Read Only Memory), RAM(Random Access Memory), EPROM(Erasable Programmable Read Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래쉬(flash) 메모리, SRAM(Static RAM), HDD(Hard Disk Drive), SSD(Solid State Drive) 등과 같은 저장 장치로서 구현될 수 있다.
프로세서(11)는 영상 처리 장치 내 각 모듈의 동작을 제어한다. 특히, 프로세서(11)는 본 발명에 따른 인코딩/디코딩을 수행하기 위한 각종 제어 기능을 수행할 수 있다. 프로세서(11)는 컨트롤러(controller), 마이크로 컨트롤러(microcontroller), 마이크로 프로세서(microprocessor), 마이크로 컴퓨터(microcomputer) 등으로도 불릴 수 있다. 프로세서(11)는 하드웨어(hardware) 또는 펌웨어(firmware), 소프트웨어, 또는 이들의 결합에 의해 구현될 수 있다. 하드웨어를 이용하여 본 발명을 구현하는 경우에는, 본 발명을 수행하도록 구성된 ASIC(application specific integrated circuit) 또는 DSP(digital signal processor), DSPD(digital signal processing device), PLD(programmable logic device), FPGA(field programmable gate array) 등이 프로세서(11)에 구비될 수 있다. 한편, 펌웨어나 소프트웨어를 이용하여 본 발명을 구현하는 경우에는 본 발명의 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등을 포함하도록 펌웨어나 소프트웨어가 구성될 수 있으며, 본 발명을 수행할 수 있도록 구성된 펌웨어 또는 소프트웨어는 프로세서(11) 내에 구비되거나 메모리(12)에 저장되어 프로세서(11)에 의해 구동될 수 있다.
또한, 장치(10)는 네트워크 인터페이스 모듈(network interface module, NIM)(13)을 선택적으로(optionally) 포함할 수 있다. 네트워크 인터페이스 모듈(13)은 프로세서(11)와 동작시 연결(operatively connected)되며, 프로세서(11)는 네트워크 인터페이스 모듈(13)을 제어하여 무선/유선 네트워크를 통해 정보 및/또는 데이터, 신호, 메시지 등을 나르는 무선/유선 신호를 전송 또는 수신할 수 있다. 네트워크 인터페이스 모듈(13)은 예를 들어 IEEE 802 계열, 3GPP LTE(-A), Wi-Fi, ATSC(Advanced Television System Committee), DVB(Digital Video Broadcasting) 등과 같은 다양한 통신 규격을 지원하며, 해당 통신 규격에 따라 제어 정보 및/또는 부호화된 비트스트림과 같은 영상 신호를 송수신할 수 있다. 네트워크 인터페이스 모듈(13)은 필요에 따라 장치에 포함되지 않을 수 있다.
또한, 장치(10)는 입출력 인터페이스(14)를 선택적으로(optionally) 포함할 수 있다. 입출력 인터페이스(14)는 프로세서(11)와 동작시 연결(operatively connected)되며, 프로세서(11)는 입출력 인터페이스(14)를 제어하여 제어 신호 및/또는 데이터 신호를 입력받거나 출력할 수 있다. 입출력 모듈(14)은 예를 들어 키보드, 마우스, 터치패드, 카메라 등과 같은 입력 장치와 디스플레이 등과 같은 출력 장치와 연결될 수 있도록 USB(Universal Serial Bus), Bluetooth, NFC(Near Field Communication), 직렬/병렬 인터페이스, DVI(Digital Visual Interface), HDMI(High Definition Multimedia Interface) 등과 같은 규격을 지원할 수 있다.
이상에서 설명된 방법들 및 실시예들은 본 발명의 구성요소들과 특징들이 소정 형태로 결합된 것들이다. 각 구성요소 또는 특징은 별도의 명시적 언급이 없는 한 선택적인 것으로 고려되어야 한다. 각 구성요소 또는 특징은 다른 구성요소나 특징과 결합되지 않은 형태로 실시될 수 있다. 또한, 일부 구성요소들 및/또는 특징들을 결합하여 본 발명의 실시예를 구성하는 것도 가능하다. 본 발명의 실시예들에서 설명되는 동작들의 순서는 변경될 수 있다. 어느 실시예의 일부 구성이나 특징은 다른 실시예에 포함될 수 있고, 또는 다른 실시예의 대응하는 구성 또는 특징과 교체될 수 있다. 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함시킬 수 있음은 자명하다.
본 발명에 따른 방법 및 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예는 하나 또는 그 이상의 ASIC(application specific integrated circuit), DSP(digital signal processor), DSPD(digital signal processing device), PLD(programmable logic device), FPGA(field programmable gate array), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태를 포함하는 소프트웨어 코드 또는 명령어(instruction)로 구현될 수 있다. 소프트웨어 코드 또는 명령어는 컴퓨터 판독가능한 매체에 저장되어 프로세서에 의해 구동될 수 있으며 프로세서에 의해 구동될 때 본 발명에 따른 동작들을 수행할 수 있다. 상기 컴퓨터 판독가능한 매체는 상기 프로세서 내부 또는 외부에 위치하거나 원격으로 네트워크를 통해 상기 프로세서와 연결될 수 있으며, 상기 프로세서와 데이터를 주고 받을 수 있다.
본 발명은 본 발명의 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있음은 당업자에게 자명하다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명은 디코딩 장치, 인코딩 장치와 같은 영상 처리 장치에 이용될 수 있다.

Claims (14)

  1. 디코딩 장치에서 비디오 신호를 위한 비트스트림을 디코딩하는 방법으로서,
    현재 블록의 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측값을 획득하는 단계; 및
    상기 현재 블록에 대한 예측값을 기반으로 상기 현재 블록을 복원하는 단계를 포함하되,
    특정 조건을 만족하는 경우, 상기 현재 블록에 대한 예측값을 획득하는 단계는,
    상기 현재 블록의 특정 경계에 위치한 영역에 상기 영역에 인접한 이웃 블록의 움직임 벡터를 적용하여 제1 예측값을 획득하는 것과,
    상기 영역에 상기 현재 블록의 움직임 벡터를 적용하여 제2 예측값을 획득하는 것과,
    상기 제1 예측값에 제1 가중치를 적용하고 상기 제2 예측값에 제2 가중치를 적용하여 가중합을 획득하는 것을 포함하는, 방법.
  2. 제1항에 있어서,
    상기 특정 경계가 상기 현재 블록의 좌측 경계 또는 상측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 공간적 이웃 블록의 움직임 벡터를 적용하여 획득되고,
    상기 특정 경계가 상기 현재 블록의 우측 경계 또는 하측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 시간적 이웃 블록의 움직임 벡터를 적용하여 획득되는, 방법.
  3. 제2항에 있어서,
    상기 공간적 이웃 블록은 상기 현재 블록을 포함하는 픽처 내에서 상기 특정 경계를 기준으로 상기 영역의 반대편에 위치한 이웃 블록에 해당하고, 상기 시간적 이웃 블록은 상기 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 상기 현재 블록의 위치에 대응되는 위치를 가지는 블록에 해당하는, 방법.
  4. 제1항에 있어서,
    상기 제1 가중치는 상기 특정 경계에 가까울수록 더 큰 값을 가지도록 설정되고, 상기 제2 가중치는 상기 특정 경계에 가까울수록 더 작은 값을 가지도록 설정되는, 방법.
  5. 제1항에 있어서,
    상기 영역은 2×2 블록 또는 4×4 블록에 해당하는, 방법.
  6. 제1항에 있어서,
    상기 특정 조건은,
    상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터가 서로 다를 것, 상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터 간의 차이가 임계치보다 작고 상기 현재 블록의 참조 픽처와 상기 이웃 블록의 참조 픽처가 동일할 것을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 방법은 상기 현재 블록에 대해 가중합을 이용한 예측이 적용되는지 여부를 지시하는 플래그 정보를 수신하는 단계를 더 포함하며,
    상기 특정 조건은 상기 플래그 정보가 상기 현재 블록에 대해 가중합을 이용한 예측이 적용됨을 지시할 것을 포함하는, 방법.
  8. 비디오 신호를 위한 비트스트림을 디코딩하도록 구성된 디코딩 장치로서, 상기 디코딩 장치는 프로세서를 포함하며, 상기 프로세서는
    현재 블록의 움직임 벡터를 기반으로 상기 현재 블록에 대한 예측값을 획득하고,
    상기 현재 블록에 대한 예측값을 기반으로 상기 현재 블록을 복원하도록 구성되며,
    특정 조건을 만족하는 경우, 상기 현재 블록에 대한 예측값을 획득하는 것은,
    상기 현재 블록의 특정 경계에 위치한 영역에 상기 영역에 인접한 이웃 블록의 움직임 벡터를 적용하여 제1 예측값을 획득하는 것과,
    상기 영역에 상기 현재 블록의 움직임 벡터를 적용하여 제2 예측값을 획득하는 것과,
    상기 제1 예측값에 제1 가중치를 적용하고 상기 제2 예측값에 제2 가중치를 적용하여 가중합을 획득하는 것을 포함하는, 장치.
  9. 제8항에 있어서,
    상기 특정 경계가 상기 현재 블록의 좌측 경계 또는 상측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 공간적 이웃 블록의 움직임 벡터를 적용하여 획득되고,
    상기 특정 경계가 상기 현재 블록의 우측 경계 또는 하측 경계에 해당하는 경우, 상기 제1 예측값은 상기 현재 블록의 시간적 이웃 블록의 움직임 벡터를 적용하여 획득되는, 장치.
  10. 제9항에 있어서,
    상기 공간적 이웃 블록은 상기 현재 블록을 포함하는 픽처 내에서 상기 특정 경계를 기준으로 상기 영역의 반대편에 위치한 이웃 블록에 해당하고, 상기 시간적 이웃 블록은 상기 현재 블록을 포함하는 픽처와 상이한 픽처 내에서 상기 현재 블록의 위치에 대응되는 위치를 가지는 블록에 해당하는, 장치.
  11. 제8항에 있어서,
    상기 제1 가중치는 상기 특정 경계에 가까울수록 더 큰 값을 가지도록 설정되고, 상기 제2 가중치는 상기 특정 경계에 가까울수록 더 작은 값을 가지도록 설정되는, 장치.
  12. 제8항에 있어서,
    상기 영역은 2×2 블록 또는 4×4 블록에 해당하는, 장치.
  13. 제8항에 있어서,
    상기 특정 조건은,
    상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터가 서로 다를 것, 상기 현재 블록의 움직임 벡터와 상기 이웃 블록의 움직임 벡터 간의 차이가 임계치보다 작고 상기 현재 블록의 참조 픽처와 상기 이웃 블록의 참조 픽처가 동일할 것을 포함하는, 장치.
  14. 제8항에 있어서,
    상기 방법은 상기 현재 블록에 대해 가중합을 이용한 예측이 적용되는지 여부를 지시하는 플래그 정보를 수신하는 단계를 더 포함하며,
    상기 특정 조건은 상기 플래그 정보가 상기 현재 블록에 대해 가중합을 이용한 예측이 적용됨을 지시할 것을 포함하는, 장치.
PCT/KR2016/004384 2015-04-27 2016-04-27 비디오 신호의 처리 방법 및 이를 위한 장치 WO2016175549A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201680024443.1A CN107534767A (zh) 2015-04-27 2016-04-27 用于处理视频信号的方法及其装置
US15/570,139 US20180131943A1 (en) 2015-04-27 2016-04-27 Method for processing video signal and device for same
KR1020177034309A KR20180020965A (ko) 2015-04-27 2016-04-27 비디오 신호의 처리 방법 및 이를 위한 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562153486P 2015-04-27 2015-04-27
US62/153,486 2015-04-27

Publications (1)

Publication Number Publication Date
WO2016175549A1 true WO2016175549A1 (ko) 2016-11-03

Family

ID=57199232

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2016/004384 WO2016175549A1 (ko) 2015-04-27 2016-04-27 비디오 신호의 처리 방법 및 이를 위한 장치

Country Status (4)

Country Link
US (1) US20180131943A1 (ko)
KR (1) KR20180020965A (ko)
CN (1) CN107534767A (ko)
WO (1) WO2016175549A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2551235A (en) * 2016-06-06 2017-12-13 Google Inc Adaptive overlapped block prediction in variable block size video coding
CN111295881A (zh) * 2017-11-13 2020-06-16 联发科技(新加坡)私人有限公司 用于图像和视频编解码的画面内预测融合的方法和装置
CN111512630A (zh) * 2017-12-23 2020-08-07 华为技术有限公司 图像块的运动信息的预测方法、装置及编解码器
RU2757209C1 (ru) * 2018-08-29 2021-10-12 Бейджинг Дацзя Интернет Информейшн Текнолоджи Ко., Лтд. Способы и устройства для кодирования видео с использованием вектора движения временного предсказания на основе субблоков

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117082237A (zh) 2016-04-29 2023-11-17 世宗大学校产学协力团 用于对图像信号进行编码/解码的方法和设备
JP6921870B2 (ja) * 2016-05-24 2021-08-18 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュートElectronics And Telecommunications Research Institute 画像復号方法、画像符号化方法及び記録媒体
KR102559062B1 (ko) * 2016-11-25 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN116170585A (zh) * 2017-01-16 2023-05-26 世宗大学校产学协力团 影像编码/解码方法
KR20200012957A (ko) * 2017-06-30 2020-02-05 후아웨이 테크놀러지 컴퍼니 리미티드 인터-프레임 예측 방법 및 디바이스
EP3692716A1 (en) * 2017-10-05 2020-08-12 InterDigital VC Holdings, Inc. Method and apparatus for adaptive illumination compensation in video encoding and decoding
WO2019124191A1 (ja) * 2017-12-18 2019-06-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN110337811A (zh) * 2018-02-14 2019-10-15 北京大学 运动补偿的方法、装置和计算机系统
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
WO2019209050A1 (ko) * 2018-04-25 2019-10-31 엘지전자 주식회사 변환 타입에 기초하여 비디오 신호를 처리하는 방법 및 장치
TWI731358B (zh) 2018-06-29 2021-06-21 大陸商北京字節跳動網絡技術有限公司 改進的時域運動向量預測推導
CN110876057B (zh) * 2018-08-29 2023-04-18 华为技术有限公司 一种帧间预测的方法及装置
JP7337157B2 (ja) * 2018-11-12 2023-09-01 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ビデオエンコーダ、ビデオデコーダおよびピクチャを符号化または復号する方法
CN111294601A (zh) 2018-12-07 2020-06-16 华为技术有限公司 视频图像解码、编码方法及装置
CN110636311B (zh) * 2019-09-18 2021-10-15 浙江大华技术股份有限公司 运动矢量的获取方法及相关预测方法、装置
CN114982228A (zh) * 2020-10-16 2022-08-30 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及计算机存储介质
CN116962686A (zh) * 2022-04-15 2023-10-27 维沃移动通信有限公司 帧间预测方法及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080070216A (ko) * 2007-01-25 2008-07-30 삼성전자주식회사 인접 블록의 움직임 벡터를 이용한 움직임 벡터 추정 방법및 그 장치
KR20100001078A (ko) * 2008-06-26 2010-01-06 에스케이 텔레콤주식회사 움직임벡터 부호화/복호화 방법 및 그 장치
KR20140074302A (ko) * 2012-10-08 2014-06-17 후아웨이 테크놀러지 컴퍼니 리미티드 움직임 벡터 예측을 위한 움직임 벡터 목록을 작성하는 방법 및 장치
JP2014135744A (ja) * 2014-02-25 2014-07-24 Fujitsu Ltd 動画像復号方法、動画像復号装置、及び動画像復号プログラム
KR20140097997A (ko) * 2013-01-29 2014-08-07 세종대학교산학협력단 움직임 정보 부호화/복호화 장치 및 움직임 정보를 부호화/복호화하는 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750136B1 (ko) * 2005-11-02 2007-08-21 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
CN101600109A (zh) * 2009-07-13 2009-12-09 北京工业大学 基于纹理和运动特征的h.264降尺寸转码方法
SI3745721T1 (sl) * 2010-05-25 2022-04-29 Lg Electronics Inc. Nov planarni način napovedovanja
US9531990B1 (en) * 2012-01-21 2016-12-27 Google Inc. Compound prediction using multiple sources or prediction modes
CN105794210B (zh) * 2013-12-06 2019-05-10 联发科技股份有限公司 视频编码系统中用于边界像素的运动补偿预测方法及装置
EP3111643B1 (en) * 2014-04-01 2019-09-25 MediaTek Inc. Method of adaptive interpolation filtering in video coding
SG11201703015PA (en) * 2014-10-31 2017-05-30 Mediatek Inc Method of improved directional intra prediction for video coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080070216A (ko) * 2007-01-25 2008-07-30 삼성전자주식회사 인접 블록의 움직임 벡터를 이용한 움직임 벡터 추정 방법및 그 장치
KR20100001078A (ko) * 2008-06-26 2010-01-06 에스케이 텔레콤주식회사 움직임벡터 부호화/복호화 방법 및 그 장치
KR20140074302A (ko) * 2012-10-08 2014-06-17 후아웨이 테크놀러지 컴퍼니 리미티드 움직임 벡터 예측을 위한 움직임 벡터 목록을 작성하는 방법 및 장치
KR20140097997A (ko) * 2013-01-29 2014-08-07 세종대학교산학협력단 움직임 정보 부호화/복호화 장치 및 움직임 정보를 부호화/복호화하는 방법
JP2014135744A (ja) * 2014-02-25 2014-07-24 Fujitsu Ltd 動画像復号方法、動画像復号装置、及び動画像復号プログラム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2551235A (en) * 2016-06-06 2017-12-13 Google Inc Adaptive overlapped block prediction in variable block size video coding
US10390033B2 (en) 2016-06-06 2019-08-20 Google Llc Adaptive overlapped block prediction in variable block size video coding
GB2551235B (en) * 2016-06-06 2021-03-31 Google Llc Adaptive overlapped block prediction in variable block size video coding
CN111295881A (zh) * 2017-11-13 2020-06-16 联发科技(新加坡)私人有限公司 用于图像和视频编解码的画面内预测融合的方法和装置
CN111295881B (zh) * 2017-11-13 2023-09-01 联发科技(新加坡)私人有限公司 用于图像和视频编解码的画面内预测融合的方法和装置
CN111512630A (zh) * 2017-12-23 2020-08-07 华为技术有限公司 图像块的运动信息的预测方法、装置及编解码器
US11297326B2 (en) 2017-12-23 2022-04-05 Huawei Technologies Co., Ltd. Method and apparatus for predicting motion information of picture block, encoder, and decoder
RU2757209C1 (ru) * 2018-08-29 2021-10-12 Бейджинг Дацзя Интернет Информейшн Текнолоджи Ко., Лтд. Способы и устройства для кодирования видео с использованием вектора движения временного предсказания на основе субблоков
US11368713B2 (en) 2018-08-29 2022-06-21 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using subblock-based temporal motion vector prediction
US11936901B2 (en) 2018-08-29 2024-03-19 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using subblock-based temporal motion vector prediction

Also Published As

Publication number Publication date
CN107534767A (zh) 2018-01-02
KR20180020965A (ko) 2018-02-28
US20180131943A1 (en) 2018-05-10

Similar Documents

Publication Publication Date Title
WO2016175549A1 (ko) 비디오 신호의 처리 방법 및 이를 위한 장치
WO2016175550A1 (ko) 비디오 신호의 처리 방법 및 이를 위한 장치
WO2017188652A1 (ko) 영상 부호화/복호화 방법 및 장치
WO2017164645A2 (ko) 비디오 신호 부호화/복호화 방법 및 장치
WO2018212577A1 (ko) 비디오 신호 처리 방법 및 장치
WO2020009419A1 (ko) 병합 후보를 사용하는 비디오 코딩 방법 및 장치
WO2016143991A1 (ko) 저 복잡도 변환에 기반한 영상 부호화 및 복호화 방법 및 이를 이용하는 장치
WO2019078581A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020004979A1 (ko) 영상 부호화/복호화 방법 및 장치
WO2018044089A1 (ko) 비디오 신호 처리 방법 및 장치
WO2013109123A1 (ko) 인트라 예측 처리 속도 향상을 위한 비디오의 부호화 방법 및 장치, 비디오의 복호화 방법 및 장치
WO2021137597A1 (ko) Ols에 대한 dpb 파라미터를 사용하는 영상 디코딩 방법 및 그 장치
WO2016153251A1 (ko) 비디오 신호의 처리 방법 및 이를 위한 장치
WO2020149630A1 (ko) 영상 코딩 시스템에서 cclm 예측 기반 영상 디코딩 방법 및 그 장치
WO2021040400A1 (ko) 팔레트 모드 기반 영상 또는 비디오 코딩
WO2020256506A1 (ko) 다중 참조 라인 인트라 예측을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2020185047A1 (ko) 인트라 예측을 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2019199093A1 (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2021060801A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2020184966A1 (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2014098374A1 (ko) Mpm을 이용한 계층적 영상 복호화 방법 및 이러한 방법을 사용하는 장치
WO2020141833A1 (ko) 영상 복호화 방법, 영상 부호화 방법, 영상 복호화 장치, 영상 부호화 장치 및 컴퓨터 판독 가능한 기록 매체
WO2020055208A1 (ko) 인트라 예측을 수행하는 영상 예측 방법 및 장치
WO2021118309A1 (ko) 비디오 신호 처리 방법 및 장치
WO2021040402A1 (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: 16786735

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15570139

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20177034309

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 16786735

Country of ref document: EP

Kind code of ref document: A1