KR20190084271A - 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 - Google Patents
영상 코딩 시스템에서 영상 디코딩 방법 및 장치 Download PDFInfo
- Publication number
- KR20190084271A KR20190084271A KR1020197016155A KR20197016155A KR20190084271A KR 20190084271 A KR20190084271 A KR 20190084271A KR 1020197016155 A KR1020197016155 A KR 1020197016155A KR 20197016155 A KR20197016155 A KR 20197016155A KR 20190084271 A KR20190084271 A KR 20190084271A
- Authority
- KR
- South Korea
- Prior art keywords
- motion information
- block
- target block
- reference picture
- modified
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 202
- 230000003287 optical effect Effects 0.000 claims description 6
- 238000011084 recovery Methods 0.000 claims 1
- 239000000523 sample Substances 0.000 description 87
- 230000008569 process Effects 0.000 description 37
- 230000002123 temporal effect Effects 0.000 description 18
- 238000013139 quantization Methods 0.000 description 15
- 230000003044 adaptive effect Effects 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000001914 filtration Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000001965 increasing effect Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 3
- 244000046052 Phaseolus vulgaris Species 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 239000013074 reference sample Substances 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명에 따른 디코딩 장치에 의하여 수행되는 영상 디코딩 방법은 비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득하는 단계, 상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출하는 단계, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하는 단계, 상기 예측 샘플을 기반으로 복원 블록을 생성하는 단계, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된 움직임 정보를 도출하는 단계, 및 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신하는 단계를 포함함을 특징으로 한다. 본 발명에 따르면 상기 대상 블록의 수정된 움직임 정보를 계산하고 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
Description
본 발명은 영상 코딩 기술에 관한 것으로서 보다 상세하게는 영상 코딩 시스템에서 영상 디코딩 방법 및 장치에 관한 것이다.
최근 HD(High Definition) 영상 및 UHD(Ultra High Definition) 영상과 같은 고해상도, 고품질의 영상에 대한 수요가 다양한 분야에서 증가하고 있다. 영상 데이터가 고해상도, 고품질이 될수록 기존의 영상 데이터에 비해 상대적으로 전송되는 정보량 또는 비트량이 증가하기 때문에 기존의 유무선 광대역 회선과 같은 매체를 이용하여 영상 데이터를 전송하거나 기존의 저장 매체를 이용해 영상 데이터를 저장하는 경우, 전송 비용과 저장 비용이 증가된다.
이에 따라, 고해상도, 고품질 영상의 정보를 효과적으로 전송하거나 저장하고, 재생하기 위해 고효율의 영상 압축 기술이 요구된다.
본 발명의 기술적 과제는 영상 코딩 효율을 높이는 방법 및 장치를 제공함에 있다.
본 발명의 다른 기술적 과제는 대상 블록의 움직임 정보를 갱신하는 인터 예측 방법 및 장치를 제공함에 있다.
본 발명의 또 다른 기술적 과제는 대상 블록의 디코딩 과정 이후에 대상 블록의 수정된 움직임 정보를 계산하고, 수정된 움직임 정보를 기반으로 갱신하는 방법 및 장치를 제공함에 있다.
본 발명의 또 다른 기술적 과제는 대상 블록의 갱신된 움직임 정보를 기반으로 대상 블록 주변의 다음 블록의 움직임 정보를 위하여 사용하는 방법 및 장치를 제공함에 있다.
본 발명의 일 실시예에 따르면, 디코딩 장치에 의하여 수행되는 영상 디코딩 방법이 제공된다. 상기 방법은 비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득하는 단계, 상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출하는 단계, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하는 단계, 상기 예측 샘플을 기반으로 복원 블록을 생성하는 단계, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 도출하는 단계, 및 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신(update)하는 단계를 포함함을 특징으로 한다.
본 발명의 다른 일 실시예에 따르면, 영상 디코딩을 수행하는 디코딩 장치가 제공된다. 상기 디코딩 장치는 비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득하는 엔트로피 디코딩부, 상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출하고, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하고, 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성하고, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 도출하는 예측부, 및 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신(update)하는 메모리를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 일 실시예에 따르면, 인코딩 장치에 의하여 수행되는 비디오 인코딩 방법을 제공한다. 상기 방법은 대상 블록에 대한 움직임 정보를 생성하는 단계, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하는 단계, 상기 예측 샘플을 기반으로 복원 블록을 생성하는 단계, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 생성하는 단계, 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신(update)하는 단계를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 일 실시예에 따르면, 비디오 인코딩 장치를 제공한다. 상기 인코딩 장치는 대상 블록에 대한 움직임 정보를 생성하고, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하고, 상기 예측 샘플을 기반으로 복원 블록을 생성하고, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 생성하는 예측부, 및 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신(update)하는 메모리를 포함하는 것을 특징으로 한다.
본 발명에 따르면 대상 블록의 디코딩 과정 이후에 상기 대상 블록의 수정된 움직임 정보를 계산하여 더욱 정확한 움직임 정보로 갱신할 수 있고, 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
본 발명에 따르면 갱신된 대상 블록의 움직임 정보를 기반으로 상기 대상 블록 주변의 다음 블록의 움직임 정보를 도출할 수 있어 왜곡의 전파를 줄일 수 있고, 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
도 1은 본 발명이 적용될 수 있는 비디오 인코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 2는 본 발명이 적용될 수 있는 비디오 디코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 3은 대상 블록에 대하여 적용되는 단예측(uni-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우와 쌍예측(bi-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우의 일 예를 예시적으로 나타낸다.
도 4는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 인코딩 과정의 일 예를 예시적으로 나타낸다.
도 5는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 디코딩 과정의 일 예를 예시적으로 나타낸다.
도 6은 디코딩 장치가 블록 매칭 방법을 통하여 상기 대상 블록의 움직임 정보를 갱신하는 방법의 일 예를 예시적으로 나타낸다.
도 7은 수정된 움직임 정보에 사용될 수 있는 참조 픽처들을 예시적으로 나타낸다.
도 8은 대상 블록들의 움직임 정보들이 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다.
도 9는 대상 블록들의 움직임 정보들이 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다.
도 10은 대상 블록의 움직임 정보가 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다.
도 11은 대상 블록의 움직임 정보가 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다.
도 12은 본 발명에 따른 인코딩 장치에 의한 비디오 인코딩 방법을 개략적으로 나타낸다.
도 13은 본 발명에 따른 디코딩 장치에 의한 비디오 디코딩 방법을 개략적으로 나타낸다.
도 2는 본 발명이 적용될 수 있는 비디오 디코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 3은 대상 블록에 대하여 적용되는 단예측(uni-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우와 쌍예측(bi-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우의 일 예를 예시적으로 나타낸다.
도 4는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 인코딩 과정의 일 예를 예시적으로 나타낸다.
도 5는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 디코딩 과정의 일 예를 예시적으로 나타낸다.
도 6은 디코딩 장치가 블록 매칭 방법을 통하여 상기 대상 블록의 움직임 정보를 갱신하는 방법의 일 예를 예시적으로 나타낸다.
도 7은 수정된 움직임 정보에 사용될 수 있는 참조 픽처들을 예시적으로 나타낸다.
도 8은 대상 블록들의 움직임 정보들이 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다.
도 9는 대상 블록들의 움직임 정보들이 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다.
도 10은 대상 블록의 움직임 정보가 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다.
도 11은 대상 블록의 움직임 정보가 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다.
도 12은 본 발명에 따른 인코딩 장치에 의한 비디오 인코딩 방법을 개략적으로 나타낸다.
도 13은 본 발명에 따른 디코딩 장치에 의한 비디오 디코딩 방법을 개략적으로 나타낸다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정 실시예에 한정하려고 하는 것이 아니다. 본 명세서에서 상용하는 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명의 기술적 사상을 한정하려는 의도로 사용되는 것은 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서 "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부품 도는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
한편, 본 발명에서 설명되는 도면상의 각 구성들은 서로 다른 특징적인 기능들에 관한 설명의 편의를 위해 독립적으로 도시된 것으로서, 각 구성들이 서로 별개의 하드웨어나 별개의 소프트웨어로 구현된다는 것을 의미하지는 않는다. 예컨대, 각 구성 중 두 개 이상의 구성이 합쳐져 하나의 구성을 이룰 수도 있고, 하나의 구성이 복수의 구성으로 나뉘어질 수도 있다. 각 구성이 통합 및/또는 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리범위에 포함된다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성 요소에 대해서는 동일한 참조 부호를 사용하고 동일한 구성 요소에 대해서 중복된 설명은 생략한다.
본 명세서에서 픽처(picture)는 일반적으로 특정 시간대의 하나의 영상을 나타내는 단위를 의미하며, 슬라이스(slice)는 코딩에 있어서 픽처의 일부를 구성하는 단위이다. 하나의 픽처는 복수의 슬라이스로 구성될 수 있으며, 필요에 따라서 픽처 및 슬라이스는 서로 혼용되어 사용될 수 있다.
픽셀(pixel) 또는 펠(pel)은 하나의 픽처(또는 영상)을 구성하는 최소의 단위를 의미할 수 있다. 또한, 픽셀에 대응하는 용어로서 '샘플(sample)'이 사용될 수 있다. 샘플은 일반적으로 픽셀 또는 픽셀의 값을 나타낼 수 있으며, 휘도(luma) 성분의 픽셀/픽셀값만을 나타낼 수도 있고, 채도(chroma) 성분의 픽셀/픽셀 값만을 나타낼 수도 있다.
유닛(unit)은 영상 처리의 기본 단위를 나타낸다. 유닛은 픽처의 특정 영역 및 해당 영역에 관련된 정보 중 적어도 하나를 포함할 수 있다. 유닛은 경우에 따라서 블록(block) 또는 영역(area) 등의 용어와 혼용하여 사용될 수 있다. 일반적인 경우, MxN 블록은 M개의 열과 N개의 행으로 이루어진 샘플들 또는 변환 계수(transform coefficient)들의 집합을 나타낼 수 있다.
도 1은 본 발명이 적용될 수 있는 비디오 인코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 1을 참조하면, 비디오 인코딩 장치(100)는 픽처 분할부(105), 예측부(110), 감산부(115), 변환부(120), 양자화부(125), 재정렬부(130), 엔트로피 인코딩부(135), 역양자화부(140), 역변환부(145), 가산부(150), 필터부(155) 및 메모리(160)을 포함한다.
픽처 분할부(105)는 입력된 픽처를 적어도 하나의 처리 유닛(processing unit)으로 분할할 수 있다. 이 때, 처리 유닛 코딩 유닛 블록(coding unit, CU), 예측 유닛(prediction unit, PU) 또는 변환 유닛(transform unit, TU)일 수 있다. 코딩 유닛은 코딩의 유닛 블록이고, 최대 코딩 유닛(largest coding unit, LCU)으로부터 쿼드 트리 구조(quad-tree structure)를 따라서 하위(deeper) 뎁스의 코딩 유닛들로 분할(split)될 수 있다. 이 경우 영상 특성에 따른 코딩 효율 등을 기반으로, 최대 코딩 유닛이 바로 최종 코딩 유닛으로 사용될 수 있고, 또는 필요에 따라 코딩 유닛은 재귀적으로(recursively) 보다 하위 뎁스의 코딩 유닛들로 분할되어 최적의 사이즈의 코딩 유닛이 최종 코딩 유닛으로 사용될 수 있다. 최소 코딩 유닛(smallest coding unit, SCU)이 설정된 경우 코딩 유닛은 최소 코딩 유닛보다 더 작은 코딩 유닛으로 분할될 수 없다. 여기서 최종 코딩 유닛이라 함은 예측 유닛 또는 변환 유닛으로 파티셔닝 또는 분할되는 기반이 되는 코딩 유닛을 의미한다. 예측 유닛은 코딩 유닛 블록으로부터 파티셔닝(partitioning)되는 블록으로서, 샘플 예측의 유닛 블록일 수 있다. 이 때, 예측 유닛은 서브 블록(sub block)으로 나뉠 수도 있다. 변환 유닛은 코딩 유닛 블록으로부터 쿼드 트리 구조를 따라서 분할 될 수 있으며, 변환 계수를 유도하는 유닛 블록 및/또는 변환 계수로부터 레지듀얼 신호(residual signal)를 유도하는 유닛 블록일 수 있다.
이하, 코딩 유닛은 코딩 블록(coding block, CB), 예측 유닛은 예측 블록(prediction block, PB), 변환 유닛은 변환 블록(transform block, TB) 으로 불릴 수 있다.
예측 블록 또는 예측 유닛은 픽처 내에서 블록 형태의 특정 영역을 의미할 수 있고, 예측 샘플의 어레이(array)를 포함할 수 있다. 또한, 변환 블록 또는 변환 유닛은 픽처 내에서 블록 형태의 특정 영역을 의미할 수 있고, 변환 계수 또는 레지듀얼 샘플의 어레이를 포함할 수 있다.
예측부(110)는 처리 대상 블록(이하, 현재 블록이라 함)에 대한 예측을 수행하고, 상기 현재 블록에 대한 예측 샘플들을 포함하는 예측 블록을 생성할 수 있다. 예측부(110)에서 수행되는 예측의 단위는 코딩 블록일 수 있고, 변환 블록일 수도 있고, 예측 블록일 수도 있다.
예측부(110)는 현재 블록에 인트라 예측이 적용되는지 인터 예측이 적용되는지를 결정할 수 있다. 일 예로, 예측부(110)는 CU 단위로 인트라 예측 또는 인터 예측이 적용되는지를 결정할 수 있다.
인트라 예측의 경우에, 예측부(110)는 현재 블록이 속하는 픽처(이하, 현재 픽처) 내의 현재 블록 외부의 참조 샘플을 기반으로 현재 블록에 대한 예측 샘플을 유도할 수 있다. 이 때, 예측부(110)는 (i) 현재 블록의 주변(neighboring) 참조 샘플들의 평균(average) 혹은 인터폴레이션(interpolation)을 기반으로 예측 샘플을 유도할 수 있고, (ii) 현재 블록의 주변 참조 샘플들 중 예측 샘플에 대하여 특정 (예측) 방향에 존재하는 참조 샘플을 기반으로 상기 예측 샘플을 유도할 수도 있다. (i)의 경우는 비방향성 모드 또는 비각도 모드, (ii)의 경우는 방향성(directional) 모드 또는 각도(angular) 모드라고 불릴 수 있다. 인트라 예측에서 예측 모드는 예를 들어 33개의 방향성 예측 모드와 적어도 2개 이상의 비방향성 모드를 가질 수 있다. 비방향성 모드는 DC 예측 모드 및 플래너 모드(Planar 모드)를 포함할 수 있다. 예측부(110)는 주변 블록에 적용된 예측 모드를 이용하여, 현재 블록에 적용되는 예측 모드를 결정할 수도 있다.
인터 예측의 경우에, 예측부(110)는 참조 픽처 상에서 움직임 벡터에 의해 특정되는 샘플을 기반으로, 현재 블록에 대한 예측 샘플을 유도할 수 있다. 예측부(110)는 스킵(skip) 모드, 머지(merge) 모드, 및 MVP(motion vector prediction) 모드 중 어느 하나를 적용하여 현재 블록에 대한 예측 샘플을 유도할 수 있다. 스킵 모드와 머지 모드의 경우에, 예측부(110)는 주변 블록의 움직임 정보를 현재 블록의 움직임 정보로 이용할 수 있다. 스킵 모드의 경우, 머지 모드와 달리 예측 샘플과 원본 샘플 사이의 차(레지듀얼)가 전송되지 않는다. MVP 모드의 경우, 주변 블록의 움직임 벡터를 움직임 벡터 예측자(motion vector predictor)로 이용하여 현재 블록의 움직임 벡터 예측자로 이용하여 현재 블록의 움직임 벡터를 유도할 수 있다.
인터 예측의 경우에, 주변 블록은 현재 픽처 내에 존재하는 공간적 주변 블록(spatial neighboring block)과 참조 픽처(reference picture)에 존재하는 시간적 주변 블록(temporal neighboring block)을 포함할 수 있다. 상기 시간적 주변 블록을 포함하는 참조 픽처는 동일 위치 픽처(collocated picture, colPic)라고 불릴 수도 있다. 움직임 정보(motion information)는 움직임 벡터와 참조 픽처 인덱스를 포함할 수 있다. 예측 모드 정보와 움직임 정보 등의 정보는 (엔트로피) 인코딩되어 비트스트림 형태로 출력될 수 있다.
스킵 모드와 머지 모드에서 시간적 주변 블록의 움직임 정보가 이용되는 경우에, 참조 픽처 리스트(reference picture list) 상의 최상위 픽처가 참조 픽처로서 이용될 수도 있다. 참조 픽처 리스트(Picture Order Count)에 포함되는 참조 픽처들은 현재 픽처와 해당 참조 픽처 간의 POC(Picture order count) 차이 기반으로 정렬될 수 있다. POC는 픽처의 디스플레이 순서에 대응하며, 코딩 순서와 구분될 수 있다.
감산부(115)는 원본 샘플과 예측 샘플 간의 차이인 레지듀얼 샘플을 생성한다. 스킵 모드가 적용되는 경우에는, 상술한 바와 같이 레지듀얼 샘플을 생성하지 않을 수 있다.
변환부(120)는 변환 블록 단위로 레지듀얼 샘플을 변환하여 변환 계수(transform coefficient)를 생성한다. 변환부(120)는 해당 변환 블록의 사이즈와, 해당 변환 블록과 공간적으로 겹치는 코딩 블록 또는 예측 블록에 적용된 예측 모드에 따라서 변환을 수행할 수 있다. 예컨대, 상기 변환 블록과 겹치는 상기 코딩 블록 또는 상기 예측 블록에 인트라 예측이 적용되었고, 상기 변환 블록이 4×4의 레지듀얼 어레이(array)라면, 레지듀얼 샘플은 DST(Discrete Sine Transform)를 이용하여 변환되고, 그 외의 경우라면 레지듀얼 샘플은 DCT(Discrete Cosine Transform)를 이용하여 변환할 수 있다.
양자화부(125)는 변환 계수들을 양자화하여, 양자화된 변환 계수를 생성할 수 있다.
재정렬부(130)는 양자화된 변환 계수를 재정렬한다. 재정렬부(130)는 계수들 스캐닝(scanning) 방법을 통해 블록 형태의 양자화된 변환 계수들을 1차원 벡터 형태로 재정렬할 수 있다. 여기서 재정렬부(130)는 별도의 구성으로 설명하였으나, 재정렬부(130)는 양자화부(125)의 일부일 수 있다.
엔트로피 인코딩부(135)는 양자화된 변환 계수들에 대한 엔트로피 인코딩을 수행할 수 있다. 엔트로피 인코딩은 예를 들어 지수 골롬(exponential Golomb), CAVLC(context-adaptive variable length coding), CABAC(context-adaptive binary arithmetic coding) 등과 같은 인코딩 방법을 포함할 수 있다. 엔트로피 인코딩부(135)는 양자화된 변환 계수 외 비디오 복원에 필요한 정보들(예컨대 신택스 요소(syntax element)의 값 등)을 함께 또는 별도로 인코딩할 수도 있다. 엔트로피 인코딩된 정보들은 비트스트림 형태로 NAL(network abstraction layer) 유닛 단위로 전송 또는 저장될 수 있다.
역양자화부(140)는 양자화부(125)에서 양자화된 값(양자화된 변환 계수)들을 역양자화하고, 역변환부(145)는 역양자화부(135)에서 역양자화된 값들을 역변환하여 레지듀얼 샘플을 생성한다.
가산부(150)는 레지듀얼 샘플과 예측 샘플을 합쳐서 픽처를 복원한다. 레지듀얼 샘플과 예측 샘플은 블록 단위로 더해져서 복원 블록이 생성될 수 있다. 여기서 가산부(150)는 별도의 구성으로 설명하였으나, 가산부(150)는 예측부(110)의 일부일 수 있다.
복원된 픽처(reconstructed picture)에 대하여 필터부(155)는 디블록킹 필터 및/또는 샘플 적응적 오프셋(sample adaptive offset)을 적용할 수 있다. 디블록킹 필터링 및/또는 샘플 적응적 오프셋을 통해, 복원 픽처 내 블록 경계의 아티팩트나 양자화 과정에서의 왜곡이 보정될 수 있다. 샘플 적응적 오프셋은 샘플 단위로 적용될 수 있으며, 디블록킹 필터링의 과정이 완료된 후 적용될 수 있다. 필터부(155)는 ALF(Adaptive Loop Filter)를 복원된 픽처에 적용할 수도 있다. ALF는 디블록킹 필터 및/또는 샘플 적응적 오프셋이 적용된 후의 복원된 픽처에 대하여 적용될 수 있다.
메모리(160)는 복원 픽처 또는 인코딩/디코딩에 필요한 정보를 저장할 수 있다. 여기서 복원 픽처는 상기 필터부(155)에 의하여 필터링 절차가 완료된 복원 픽처일 수 있다. 상기 저장된 복원 픽처는 다른 픽처의 (인터) 예측을 위한 참조 픽처로 활용될 수 있다. 예컨대, 메모리(160)는 인터 예측에 사용되는 (참조) 픽처들을 저장할 수 있다. 이 때, 인터 예측에 사용되는 픽처들은 참조 픽처 세트(reference picture set) 혹은 참조 픽처 리스트(reference picture list)에 의해 지정될 수 있다.
도 2는 본 발명이 적용될 수 있는 비디오 디코딩 장치의 구성을 개략적으로 설명하는 도면이다.
도 2를 참조하면, 비디오 디코딩 장치(200)는 엔트로피 디코딩부(210), 재정렬부(220), 역양자화부(230), 역변환부(240), 예측부(250), 가산부(260), 필터부(270), 메모리(280)를 포함한다.
비디오 정보를 포함하는 비트스트림이 입력되면, 비디오 디코딩 장치는(200)는 비디오 인코딩 장치에서 비디오 정보가 처리된 프로세스에 대응하여 비디오를 복원할 수 있다.
예컨대, 비디오 디코딩 장치(200)는 비디오 인코딩 장치에서 적용된 처리 유닛을 이용하여 비디오 디코딩을 수행할 수 있다. 따라서 비디오 디코딩의 처리 유닛 블록은 코딩 유닛 블록, 예측 유닛 블록 또는 변환 유닛 블록일 수 있다. 코딩 유닛 블록은 디코딩의 유닛 블록으로서 최대 코딩 유닛 블록으로부터 쿼드 트리 구조를 따라서 분할될 수 있다. 예측 유닛 블록은 코딩 유닛 블록으로부터 파티셔닝되는 블록으로서, 샘플 예측의 유닛 블록일 수 있다. 이 때, 예측 유닛 블록은 서브 블록으로 나뉠 수도 있다. 변환 유닛 블록은 코딩 유닛 블록으로부터 쿼드 트리 구조를 따라서 분할 될 수 있으며, 변환 계수를 유도하는 유닛 블록 또는 변환 계수로부터 레지듀얼 신호를 유도하는 유닛 블록일 수 있다.
엔트로피 디코딩부(210)는 비트스트림을 파싱하여 비디오 복원 또는 픽처 복원에 필요한 정보를 출력할 수 있다. 예컨대, 엔트로피 디코딩부(210)는 지수 골롬 부호화, CAVLC 또는 CABAC 등의 코딩 방법을 기초로 비트스트림 내 정보를 디코딩하고, 비디오 복원에 필요한 신택스 엘리먼트의 값, 레지듀얼에 관한 변환 계수의 양자화된 값 들을 출력할 수 있다.
보다 상세하게, CABAC 엔트로피 디코딩 방법은, 비트스트림에서 각 구문 요소에 해당하는 빈을 수신하고, 디코딩 대상 구문 요소 정보와 주변 및 디코딩 대상 블록의 디코딩 정보 혹은 이전 단계에서 디코딩된 심볼/빈의 정보를 이용하여 문맥(context) 모델을 결정하고, 결정된 문맥 모델에 따라 빈(bin)의 발생 확률을 예측하여 빈의 산술 디코딩(arithmetic decoding)를 수행하여 각 구문 요소의 값에 해당하는 심볼을 생성할 수 있다. 이때, CABAC 엔트로피 디코딩 방법은 문맥 모델 결정 후 다음 심볼/빈의 문맥 모델을 위해 디코딩된 심볼/빈의 정보를 이용하여 문맥 모델을 업데이트할 수 있다.
엔트로피 디코딩부(210)에서 디코딩된 정보 중 예측에 관한 정보는 예측부(230)로 제공되고, 엔트로피 디코딩부(210)에서 엔트로피 디코딩이 수행된 레지듀얼 값, 즉 양자화된 변환 계수는 재정렬부(220)로 입력될 수 있다.
재정렬부(220)는 양자화되어 있는 변환 계수들을 2차원의 블록 형태로 재정렬할 수 있다. 재정렬부(220)는 인코딩 장치에서 수행된 계수 스캐닝에 대응하여 재정렬을 수행할 수 있다. 여기서 재정렬부(220)는 별도의 구성으로 설명하였으나, 재정렬부(220)는 양자화부(230)의 일부일 수 있다.
역양자화부(230)는 양자화되어 있는 변환 계수들을 (역)양자화 파라미터를 기반으로 역양자화하여 변환 계수를 출력할 수 있다. 이 때, 양자화 파라미터를 유도하기 위한 정보는 인코딩 장치로부터 시그널링될 수 있다.
역변환부(240)는 변환 계수들을 역변환하여 레지듀얼 샘플들을 유도할 수 있다.
예측부(250)는 현재 블록에 대한 예측을 수행하고, 상기 현재 블록에 대한 예측 샘플들을 포함하는 예측 블록을 생성할 수 있다. 예측부(250)에서 수행되는 예측의 단위는 코딩 블록일 수도 있고, 변환 블록일 수도 있고, 예측 블록일 수도 있다.
예측부(250)는 상기 예측에 관한 정보를 기반으로 인트라 예측을 적용할 것인지 인터 예측을 적용할 것인지를 결정할 수 있다. 이 때, 인트라 예측과 인터 예측 중 어느 것을 적용할 것인지를 결정하는 단위와 예측 샘플을 생성하는 단위는 상이할 수 있다. 아울러, 인터 예측과 인트라 예측에 있어서 예측 샘플을 생성하는 단위 또한 상이할 수 있다. 예를 들어, 인터 예측과 인트라 예측 중 어느 것을 적용할 것인지는 CU 단위로 결정할 수 있다. 또한 예를 들어, 인터 예측에 있어서 PU 단위로 예측 모드를 결정하고 예측 샘플을 생성할 수 있고, 인트라 예측에 있어서 PU 단위로 예측 모드를 결정하고 TU 단위로 예측 샘플을 생성할 수도 있다.
인트라 예측의 경우에, 예측부(250)는 현재 픽처 내의 주변 참조 샘플을 기반으로 현재 블록에 대한 예측 샘플을 유도할 수 있다. 예측부(250)는 현재 블록의 주변 참조 샘플을 기반으로 방향성 모드 또는 비방향성 모드를 적용하여 현재 블록에 대한 예측 샘플을 유도할 수 있다. 이 때, 주변 블록의 인트라 예측 모드를 이용하여 현재 블록에 적용할 예측 모드가 결정될 수도 있다.
인터 예측의 경우에, 예측부(250)는 참조 픽처 상에서 움직임 벡터에 의해 참조 픽처 상에서 특정되는 샘플을 기반으로 현재 블록에 대한 예측 샘플을 유도할 수 있다. 예측부(250)는 스킵(skip) 모드, 머지(merge) 모드 및 MVP 모드 중 어느 하나를 적용하여 현재 블록에 대한 예측 샘플을 유도할 수 있다. 이때, 비디오 인코딩 장치에서 제공된 현재 블록의 인터 예측에 필요한 움직임 정보, 예컨대 움직임 벡터, 참조 픽처 인덱스 등에 관한 정보는 상기 예측에 관한 정보를 기반으로 획득 또는 유도될 수 있다
스킵 모드와 머지 모드의 경우에, 주변 블록의 움직임 정보가 현재 블록의 움직임 정보로 이용될 수 있다. 이 때, 주변 블록은 공간적 주변 블록과 시간적 주변 블록을 포함할 수 있다.
예측부(250)는 가용한 주변 블록의 움직임 정보로 머지 후보 리스트를 구성하고, 머지 인덱스가 머지 후보 리스트 상에서 지시하는 정보를 현재 블록의 움직임 벡터로 사용할 수 있다. 머지 인덱스는 인코딩 장치로부터 시그널링될 수 있다. 움직임 정보는 움직임 벡터와 참조 픽처를 포함할 수 있다. 스킵 모드와 머지 모드에서 시간적 주변 블록의 움직임 정보가 이용되는 경우에, 참조 픽처 리스트 상의 최상위 픽처가 참조 픽처로서 이용될 수 있다.
스킵 모드의 경우, 머지 모드와 달리 예측 샘플과 원본 샘플 사이의 차이(레지듀얼)이 전송되지 않는다.
MVP 모드의 경우, 주변 블록의 움직임 벡터를 움직임 벡터 예측자(motion vector predictor)로 이용하여 현재 블록의 움직임 벡터가 유도될 수 있다. 이 때, 주변 블록은 공간적 주변 블록과 시간적 주변 블록을 포함할 수 있다.
일 예로, 머지 모드가 적용되는 경우, 복원된 공간적 주변 블록의 움직임 벡터 및/또는 시간적 주변 블록인 Col 블록에 대응하는 움직임 벡터를 이용하여, 머지 후보 리스트가 생성될 수 있다. 머지 모드에서는 머지 후보 리스트에서 선택된 후보 블록의 움직임 벡터가 현재 블록의 움직임 벡터로 사용된다. 상기 예측에 관한 정보는 상기 머지 후보 리스트에 포함된 후보 블록들 중에서 선택된 최적의 움직임 벡터를 갖는 후보 블록을 지시하는 머지 인덱스를 포함할 수 있다. 이 때, 예측부(250)는 상기 머지 인덱스를 이용하여, 현재 블록의 움직임 벡터를 도출할 수 있다.
다른 예로, MVP(Motion Vector Prediction) 모드가 적용되는 경우, 복원된 공간적 주변 블록의 움직임 벡터 및/또는 시간적 주변 블록인 Col 블록에 대응하는 움직임 벡터를 이용하여, 움직임 벡터 예측자 후보 리스트가 생성될 수 있다. 즉, 복원된 공간적 주변 블록의 움직임 벡터 및/또는 시간적 주변 블록인 Col 블록에 대응하는 움직임 벡터는 움직임 벡터 후보로 사용될 수 있다. 상기 예측에 관한 정보는 상기 리스트에 포함된 움직임 벡터 후보 중에서 선택된 최적의 움직임 벡터를 지시하는 예측 움직임 벡터 인덱스를 포함할 수 있다. 이 때, 예측부(250)는 상기 움직임 벡터 인덱스를 이용하여, 움직임 벡터 후보 리스트에 포함된 움직임 벡터 후보 중에서, 현재 블록의 예측 움직임 벡터를 선택할 수 있다. 인코딩 장치의 예측부는 현재 블록의 움직임 벡터와 움직임 벡터 예측자 간의 움직임 벡터 차분(MVD)을 구할 수 있고, 이를 인코딩하여 비트스트림 형태로 출력할 수 있다. 즉, MVD는 현재 블록의 움직임 벡터에서 상기 움직임 벡터 예측자를 뺀 값으로 구해질 수 있다. 이 때, 예측부(250)는 상기 예측에 관한 정보에 포함된 움직임 벡터 차분을 획득하고, 상기 움직임 벡터 차분과 상기 움직임 벡터 예측자의 가산을 통해 현재 블록의 상기 움직임 벡터를 도출할 수 있다. 예측부는 또한 참조 픽처를 지시하는 참조 픽처 인덱스 등을 상기 예측에 관한 정보로부터 획득 또는 유도할 수 있다.
가산부(260)는 레지듀얼 샘플과 예측 샘플을 더하여 현재 블록 혹은 현재 픽처를 복원할 수 있다. 가산부(260)는 레지듀얼 샘플과 예측 샘플을 블록 단위로 더하여 현재 픽처를 복원할 수도 있다. 스킵 모드가 적용된 경우에는 레지듀얼이 전송되지 않으므로, 예측 샘플이 복원 샘플이 될 수 있다. 여기서는 가산부(260)를 별도의 구성으로 설명하였으나, 가산부(260)는 예측부(250)의 일부일 수도 있다.
필터부(270)는 복원된 픽처에 디블록킹 필터링 샘플 적응적 오프셋, 및/또는 ALF 등을 적용할 수 있다. 이 때, 샘플 적응적 오프셋은 샘플 단위로 적용될 수 있으며, 디블록킹 필터링 이후 적용될 수도 있다. ALF는 디블록킹 필터링 및/또는 샘플 적응적 오프셋 이후 적용될 수도 있다.
메모리(280)는 복원 픽처 또는 디코딩에 필요한 정보를 저장할 수 있다. 여기서 복원 픽처는 상기 필터부(270)에 의하여 필터링 절차가 완료된 복원 픽처일 수 있다. 예컨대, 메모리(280)는 인터 예측에 사용되는 픽처들을 저장할 수 있다. 이 때, 인터 예측에 사용되는 픽처들은 참조 픽처 세트 혹은 참조 픽처 리스트에 의해 지정될 수도 있다. 복원된 픽처는 다른 픽처에 대한 참조 픽처로서 이용될 수 있다. 또한, 메모리(280)는 복원된 픽처를 출력 순서에 따라서 출력할 수도 있다.
상술한 내용과 같이 대상 블록에 대하여 인터 예측이 수행되는 경우, 상기 대상 블록에 대한 움직임 정보는 스킵(skip) 모드, 머지 모드, 또는 AMVP(adaptive motion vector prediction) 모드를 적용하여 생성될 수 있고, 인코딩되어 출력될 수 있다. 이 경우, 상기 대상 블록에 대한 움직임 정보는 상기 블록 단위로 인코딩되는 과정으로 인하여 왜곡이 계산되어 포함될 수 있고, 이를 통하여 상기 대상 블록의 복원 블록을 나타내는 움직임 정보를 완벽하게 반영하지 못할 수 있다. 특히 대상 블록에 머지 모드가 적용되는 경우, 상기 대상 블록에 대한 움직임 정보의 정확성이 저하될 수 있다. 즉, 상기 대상 블록에 대한 움직임 정보를 통하여 도출되는 예측 블록과 상기 대상 블록의 복원 블록간의 차이가 클 수 있다. 이 경우, 상기 대상 블록의 움직임 정보를 상기 대상 블록 주변의 다음 블록의 디코딩 과정에서 이용하게 되어 왜곡이 전파될 수 있고, 이를 통하여 전반적인 코딩 효율을 저하시킬 수 있다.
따라서, 본 발명에서는 상기 대상 블록의 디코딩 과정 이후에, 도출된 복원 블록을 기반으로 상기 대상 블록에 대한 수정된 움직임 정보를 계산하고, 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신하여 상기 대상 블록 주변의 다음 블록이 더욱 정확한 움직임 정보를 도출할 수 있도록 하는 방법을 제안한다. 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
도 3은 대상 블록에 대하여 적용되는 단예측(uni-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우와 쌍예측(bi-prediction) 움직임 정보를 기반으로 인터 예측을 수행하는 경우의 일 예를 예시적으로 나타낸다. 상기 쌍예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터, L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있고, 상기 단예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터를 포함할 수 있고, 또는 L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있다. 상기 L0은 참조 픽처 리스트 L0(List 0)를 나타내고, 상기 L1은 참조 픽처 리스트 L1(List 1)를 나타낸다. 영상 코딩 과정에서 인터 예측을 위하여 사용되는 방법은 움직임 추정(motion estimation)에 의한 움직임 정보의 도출 및 움직임 보상(motion compensation)을 포함할 수 있다. 도 3에 도시된 것과 같이 상기 움직임 추정은 상기 대상 블록이 포함된 대상 픽처의 인코딩 이전에 인코딩된 참조 픽처들을 대상으로 상기 대상 블록에 정합되는 블록을 도출하는 과정으로 나타낼 수 있다. 상기 대상 블록에 정합되는 블록을 참조 블록이라고 정의할 수 있고, 상기 참조 블록이 상기 대상 블록과 동일한 상기 대상 픽처에 포함되어 있다고 가정하여 도출된 상기 대상 블록과 상기 참조 블록과의 위치의 차이를 상기 대상 블록의 움직임 벡터로 정의할 수 있다. 상기 움직임 보상은 하나의 참조 블록을 도출하고 사용하는 단예측 방법과, 두 개의 참조 블록들을 도출하고 사용하는 쌍예측 방법을 포함할 수 있다.
대상 블록에 대한 움직임 벡터, 참조 픽처에 대한 정보를 포함하는 정보를 대상 블록의 움직임 정보라고 할 수 있다. 상기 참조 픽처에 대한 정보는 참조 픽처 리스트 및 상기 참조 픽처 리스트에 포함된 참조 픽처를 나타내는 참조 픽처 인덱스를 포함할 수 있다. 인코딩 장치는 상기 대상 블록을 인코딩한 이후에 상기 대상 블록 다음으로 인코딩할 상기 대상 블록 주변의 다음 블록 또는 상기 대상 픽처 다음으로 인코딩할 픽처들을 위하여 상기 대상 블록에 대한 움직임 정보를 저장할 수 있다. 상기 저장된 움직임 정보는 상기 대상 블록 다음으로 인코딩할 상기 다음 블록 또는 상기 대상 픽처 다음으로 인코딩할 픽처들의 움직임 정보를 표현하기 위한 방법에 사용될 수 있다. 상기 방법으로는 상기 대상 블록의 움직임 정보를 인덱싱(indexing)하고 상기 대상 블록 주변의 다음 블록의 움직임 정보를 인덱스로 전송하는 방법인 머지 모드와, 상기 대상 블록 주변의 다음 블록의 움직임 벡터를 상기 다음 블록의 움직임 벡터와 상기 대상 블록의 움직임 벡터와의 차분만으로 표현하는 방법인 AMVP 모드가 있을 수 있다.
본 발명에서는 상기 대상 픽처 또는 상기 대상 블록의 인코딩 과정 이후에 상기 대상 픽처 또는 상기 대상 블록에 대한 움직임 정보를 갱신하는 방법을 제안한다. 상기 대상 블록에 인터 예측이 수행되고 인코딩되면 상기 인터 예측에 사용된 움직임 정보가 저장될 수 있다. 하지만 상기 움직임 정보는 블록 매칭 방법(block matching)을 통하여 계산되는 과정에서 발생하는 왜곡이 포함될 수 있고, 또한 상기 움직임 정보는 상기 대상 블록에 대한 RD(rate-distortion) 최적화 과정을 통하여 선택된 값일 수 있기 때문에 상기 대상 블록의 실제 움직임을 완벽하게 반영하는 것은 어려울 수 있다. 상기 대상 블록의 움직임 정보는 상기 대상 블록의 인터 예측 과정에만 사용되는 것이 아니라, 상기 대상 블록의 인코딩 이후에 인코딩되는 상기 대상 블록 주변의 다음 블록과 상기 대상 블록이 포함된 대상 픽처의 인코딩 이후에 인코딩되는 픽처에도 영향을 줄 수 있기 때문에 전반적인 코딩 효율을 저하시킬 수 있다.
도 4는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 인코딩 과정의 일 예를 예시적으로 나타낸다. 인코딩 장치는 대상 블록을 인코딩한다(S400). 인코딩 장치는 상기 대상 블록에 인터 예측을 수행하여 예측 샘플을 도출할 수 있고, 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성할 수 있다. 인코딩 장치는 상기 인터 예측을 수행하기 위하여 상기 대상 블록의 움직임 정보를 도출할 수 있고, 상기 움직임 정보를 포함하는 상기 대상 블록의 인터 예측에 대한 정보를 생성할 수 있다. 상기 움직임 정보는 제1 움직임 정보라고 불릴 수 있다.
상기 대상 블록의 인코딩 과정을 수행한 후, 인코딩 장치는 상기 대상 블록의 복원 블록을 기반으로 수정된(modified) 움직임 정보를 계산한다(S410). 인코딩 장치는 다양한 방법을 통하여 상기 대상 블록의 상기 수정된 움직임 정보를 계산할 수 있다. 상기 수정된 움직임 정보는 제2 움직임 정보라고 불릴 수 있다. 상기 방법은 OF(optical flow) 방법, 블록 매칭(block-matching) 방법, 주파수 도메인(frequency domain) 방법 등의 직접적인 방법들, 및 특징점 정합 방법, 통계적 특성을 이용하는 방법 등의 간접적인 방법들 중 적어도 하나의 방법이 적용될 수 있다. 또한, 직접적인 방법과 간접적인 방법이 동시에 적용될 수도 있다. 상기 블록 매칭 방법과 상기 OF 방법에 대한 구체적인 내용은 후술한다.
상기 인코딩 장치는 상기 대상 블록의 움직임 정보 계산의 특성상 인코딩된 상기 대상 블록의 정보만으로는 보다 정확한 움직임 정보를 계산하는 것이 어려울 수 있고, 이에 인코딩 장치가 상기 대상 블록의 상기 수정된 움직임 정보를 계산하는 시점은 예를 들어 상기 대상 블록의 인코딩 과정 이후가 아닌 상기 대상 블록이 포함된 대상 픽처의 인코딩 과정을 수행한 이후가 될 수 있다. 즉, 상기 인코딩 장치는 상기 대상 픽처의 인코딩 과정을 수행하고, 상기 대상 블록의 인코딩 과정이 수행된 직후보다 더 많은 정보를 기반으로 상기 수정된 움직임 정보를 계산할 수 있다.
한편, 인코딩 장치는 상기 (제1) 움직임 정보에 포함된 기존 움직임 벡터와 수정된 움직임 벡터 간의 차분을 나타내는 움직임 벡터 갱신 차분 정보를 더 생성하고, 인코딩하여 출력할 수도 있다. 상기 움직임 벡터 갱신 차분 정보는 상기 PU 단위로 전송될 수 있다.
인코딩 장치는 상기 대상 블록의 움직임 정보의 갱신 여부를 판단한다(S420). 인코딩 장치는 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보와의 정확성의 비교를 통하여 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어, 인코딩 장치는 각 움직임 정보를 사용한 움직임 보상(motion compensation)으로 도출된 영상이 원본 영상과 얼마나 차이를 보이는가로 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 다시 말해, 각 움직임 정보를 기반으로 도출된 참조 블록과 상기 대상 블록의 원본 블록과의 레지듀얼(residual) 신호의 데이터량을 비교하여 상기 갱신 여부를 판단할 수 있다.
S420 절차에서 상기 대상 블록의 움직임 정보가 갱신되도록 판단된 경우, 인코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신(update)하고, 상기 갱신된 움직임 정보를 저장한다(S430). 예를 들어, 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 원본 블록과의 레지듈얼 신호의 데이터량이 상기 (제1) 움직임 정보를 기반으로 도출된 참조 블록과 상기 원본 블록과의 레지듀얼 신호의 데이터량보다 작은 경우, 인코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 (제1) 움직임 정보를 갱신할 수 있다. 이 경우, 인코딩 장치는 상기 (제1) 움직임 정보를 상기 수정된 움직임 정보로 대체하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 수정된 움직임 정보만을 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다. 또한, 인코딩 장치는 상기 (제1) 움직임 정보에 상기 수정된 움직임 정보 추가하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 (제1) 움직임 정보 및 상기 수정된 움직임 정보를 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다.
한편, S420 절차에서 상기 대상 블록의 움직임 정보가 갱신되도록 판단되지 않은 경우, 인코딩 장치는 상기 (제1) 움직임 정보를 저장한다(S440). 예를 들어, 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 원본 블록과의 레지듈얼 신호의 데이터량이 상기 (제1) 움직임 정보를 기반으로 도출된 참조 블록과 상기 원본 블록과의 레지듈얼 신호의 데이터량보다 작지 않은 경우, 인코딩 장치는 상기 (제1) 움직임 정보를 저장할 수 있다.
한편, 비록 도시되지는 않았으나 인코딩 장치는 상기 인터 예측에 사용된 (제1) 움직임 정보와 상기 수정된 움직임 정보의 비교를 통한 갱신 여부 판단 없이 상기 수정된 움직임 정보가 도출된 경우 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신할 수 있다.
한편, 디코딩 장치는 원본 영상을 사용할 수 없으므로 상기 대상 블록의 갱신 여부를 나타내는 부가 정보를 전송 받을 수 있다. 즉, 인코딩 장치는 상기 갱신 여부를 나타내는 부가 정보를 생성할 수 있고, 인코딩하여 비트스트림을 통하여 출력할 수 있다. 예를 들어 상기 갱신 여부를 나타내는 부가 정보는 갱신 플래그라고 불릴 수 있다. 상기 갱신 플래그의 값이 1인 경우 상기 움직임 정보가 갱신됨을 나타낼 수 있고, 상기 갱신 플래그의 값이 0인 경우 상기 움직임 정보가 갱신되지 않음을 나타낼 수 있다. 예를 들어 상기 갱신 플래그는 PU 단위로 전송될 수 있다. 또는 상기 갱신 플래그는 CU 단위, CTU 단위, 슬라이스 단위로 전송될 수도 있고, PPS(picture parameter set) 단위 또는 SPS(sequence parameter set) 단위와 같은 상위 레벨을 통하여 전송될 수도 있다.
또한, 디코딩 장치는 상기 갱신 플래그의 수신 없이 상기 대상 블록의 복원 블록을 기반으로 상기 대상 블록의 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보간의 비교를 통하여 상기 갱신 여부를 판단할 수 있고, 상기 대상 블록의 움직임 정보가 갱신되는 것으로 판단된 경우, 디코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신하고, 상기 갱신된 움직임 정보를 저장할 수 있다. . 또한, 디코딩 장치는 상기 인터 예측에 사용된 움직임 정보와 상기 수정된 움직임 정보와의 비교를 통한 갱신 여부 판단 없이 상기 수정된 움직임 정보가 도출된 경우 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신할 수 있다. 이 경우, 디코딩 장치는 상기 (제1) 움직임 정보를 상기 수정된 움직임 정보로 대체하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 수정된 움직임 정보만을 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다. 또한, 디코딩 장치는 상기 (제1) 움직임 정보에 상기 수정된 움직임 정보 추가하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 (제1) 움직임 정보 및 상기 수정된 움직임 정보를 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다.
상기 움직임 정보의 갱신하는 과정이 상기 대상 블록의 인코딩 과정 이후에 수행되는 경우, 상기 대상 블록의 인코딩 다음 순서의 상기 대상 블록 주변의 다음 블록의 인코딩 과정이 수행될 수 있다.
도 5는 대상 블록의 움직임 정보를 갱신하는 방법을 포함한 디코딩 과정의 일 예를 예시적으로 나타낸다. 상기 디코딩 과정은 상술한 인코딩 과정과 유사하게 수행될 수 있다. 디코딩 장치는 상기 대상 블록을 디코딩한다(S500). 상기 대상 블록에 인터 예측이 적용되는 경우, 디코딩 장치는 비트스트림을 통하여 상기 대상 블록의 인터 예측에 대한 정보를 획득할 수 있다. 디코딩 장치는 상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출할 수 있고, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출할 수 있다. 상기 움직임 정보는 제1 움직임 정보라고 불릴 수 있다. 디코딩 장치는 상기 예측 샘플을 기반으로 복원 블록을 생성할 수 있다.
디코딩 장치는 상기 대상 블록의 수정된(modified) 움직임 정보를 계산한다(S510). 디코딩 장치는 다양한 방법을 통하여 상기 수정된 움직임 정보를 계산할 수 있다. 상기 수정된 움직임 정보는 제2 움직임 정보라고 불릴 수 있다. 상기 방법은 OF(optical flow) 방법, 블록 매칭(block-matching) 방법, 주파수 도메인(frequency domain) 방법 등의 직접적인 방법들, 및 특징점 정합 방법, 통계적 특성을 이용하는 방법 등의 간접적인 방법들 중 적어도 하나의 방법이 적용될 수 있다. 또한, 직접적인 방법과 간접적인 방법이 동시에 적용될 수도 있다. 상기 블록 매칭 방법과 상기 OF 방법에 대한 구체적인 내용은 후술한다.
상기 디코딩 장치는 상기 대상 블록의 움직임 정보 계산의 특성상 디코딩된 상기 대상 블록의 정보만으로는 보다 정확한 움직임 정보를 계산하는 것이 어려울 수 있고, 이에 디코딩 장치가 상기 대상 블록의 상기 수정된 움직임 정보를 계산하는 시점은 상기 대상 블록의 디코딩 과정 이후가 아닌 상기 대상 블록이 포함된 대상 픽처의 디코딩 과정을 수행한 이후가 될 수 있다. 즉, 상기 디코딩 장치는 상기 대상 픽처의 디코딩 과정을 수행하고, 상기 대상 블록의 디코딩 과정이 수행된 직후보다 더 많은 정보를 기반으로 상기 수정된 움직임 정보를 계산할 수 있다.
한편, 디코딩 장치는 비트스트림을 통하여 상기 (제1) 움직임 정보에 포함된 기존 움직임 벡터와 수정된 움직임 벡터 간의 차분을 나타내는 움직임 벡터 갱신 차분 정보를 획득할 수도 있다. 상기 움직임 벡터 갱신 차분 정보는 상기 PU 단위로 전송될 수 있다. 이 경우, 디코딩 장치는 상술한 직접적인 방법과 간접적인 방법을 통하여 독자적으로 상기 수정된 움직임 정보를 계산하지 않고, 상기 (제1) 움직임 정보와 상기 획득한 움직임 벡터 갱신 차분 정보를 더하여 상기 수정된 움직임 정보를 도출할 수 있다. 즉, 디코딩 장치는 상기 기존 움직임 벡터를 상기 수정된 움직임 벡터의 움직임 벡터 예측자(motion vector preditor, MVP)로 도출할 수 있고, 상기 기존 움직임 벡터에 상기 움직임 벡터 갱신 차분 정보를 더하여 상기 수정된 움직임 움직임 벡터를 도출할 수 있다.
디코딩 장치는 상기 대상 블록의 움직임 정보의 갱신 여부를 판단한다(S520). 디코딩 장치는 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보와의 정확성의 비교를 통하여 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어, 디코딩 장치는 각 움직임 정보를 사용한 움직임 보상(motion compensation)으로 도출된 참조 블록이 상기 대상 블록의 복원 블록과 얼마나 차이를 보이는가로 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 다시 말해, 각 움직임 정보를 기반으로 도출된 참조 블록과 상기 대상 블록의 복원 블록과의 레지듀얼(residual) 신호의 데이터량을 비교하여 상기 갱신 여부를 판단할 수 있다.
한편, 디코딩 장치는 인코딩 장치로부터 상기 갱신 여부를 나타내는 부가 정보를 수신할 수 있고, 상기 부가 정보를 기반으로 상기 대상 블록의 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어 상기 갱신 여부를 나타내는 부가 정보는 갱신 플래그라고 불릴 수 있다. 상기 갱신 플래그의 값이 1인 경우 상기 움직임 정보가 갱신됨을 나타낼 수 있고, 상기 갱신 플래그의 값이 0인 경우 상기 움직임 정보가 갱신되지 않음을 나타낼 수 있다.
S520 절차에서 상기 대상 블록의 움직임 정보를 갱신되도록 판단된 경우, 디코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신(update)하고, 상기 수정된 움직임 정보를 저장한다(S530). 예를 들어, 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 복원 블록과의 레지듈얼 신호의 데이터량이 상기 (제1) 움직임 정보를 기반으로 도출된 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량보다 작은 경우, 디코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 (제1) 움직임 정보를 갱신할 수 있다. 이 경우, 디코딩 장치는 상기 (제1) 움직임 정보를 상기 수정된 움직임 정보로 대체하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 수정된 움직임 정보만을 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다. 또한, 디코딩 장치는 상기 (제1) 움직임 정보에 상기 수정된 움직임 정보 추가하여 상기 대상 블록의 움직임 정보를 갱신할 수 있고, 상기 (제1) 움직임 정보 및 상기 수정된 움직임 정보를 포함하는 상기 갱신된 움직임 정보를 저장할 수 있다.
한편, S520 절차에서 상기 대상 블록의 움직임 정보를 갱신되도록 판단되지 않은 경우, 디코딩 장치는 상기 (제1) 움직임 정보를 저장한다(S540). 예를 들어, 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 복원 블록과의 레지듈얼 신호의 데이터량이 상기 (제1) 움직임 정보를 기반으로 도출된 참조 블록과 상기 복원 블록과의 레지듈얼 신호의 데이터량보다 작지 않은 경우, 디코딩 장치는 상기 (제1) 움직임 정보를 저장할 수 있다.
한편, 비록 도시되지는 않았으나 디코딩 장치는 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보의 비교를 통한 갱신 여부 판단 없이 상기 수정된 움직임 정보가 도출된 경우 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신할 수 있다.
한편, 저장되는 움직임 정보와 전송을 위한 움직임 정보는 서로 다른 해상도를 가질 수 있다. 다시 말해, 상기 수정된 움직임 정보에 포함된 움직임 벡터의 단위와 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보에 포함된 움직임 벡터의 단위는 서로 다른 단위를 가질 수 있다. 예를 들어, 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보의 움직임 벡터의 단위는 1/4 분수 샘플 단위를 나타낼 수 있고, 디코딩 장치에서 계산된 상기 수정된 움직임 정보의 움직임 벡터의 단위는 1/8 분수 샘플 또는 1/16 분수 샘플 단위를 나타낼 수 있다. 디코딩 장치는 상기 수정된 움직임 정보를 계산하는 과정에서 저장에 필요한 해상도로 조절할 수 있고, 또는 상기 수정된 움직임 정보를 저장하는 과정에서 연산(예를 들어 반올림 또는 곱셈 등)을 통하여 조절할 수도 있다. 상기 수정된 움직임 정보의 움직임 벡터의 해상도가 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보의 움직임 벡터의 해상도보다 높은 경우, 시간축 주변 움직임 정보 계산을 위한 스케일링 연산에 대하여 정확도를 높일 수 있다. 또한, 움직임 정보의 전송과 내부 처리의 해상도가 다른 디코딩 장치인 경우, 내부 처리 기준에 맞춰 디코딩을 수행할 수 있다는 효과를 얻을 수 있다.
한편, 상기 수정된 움직임 정보를 계산하기 위한 방법 중 상기 블록 매칭 방법이 적용되는 경우, 상기 수정된 움직임 정보는 다음과 같이 도출될 수 있다. 상기 블록 매칭 방법은 인코딩 장치에서 사용되는 움직임 추정 방법으로 나타날 수 있다.
코딩 장치는 대상 블록과 참조 블록과의 위상(phase)에 따른 샘플간의 차분값들을 누적하여 왜곡의 정도를 측정하고, 이를 비용함수로 사용하여 상기 대상 블록과 가장 유사한 참조 블록을 도출할 수 있다. 즉, 코딩 장치는 상기 대상 블록의 복원 블록(또는 원본 블록)과의 레지듀얼(residual)이 최소인 참조 블록을 기반으로 상기 대상 블록의 수정된 움직임 정보를 도출할 수 있다. 상기 레지듀얼이 최소인 참조 블록은 특정 참조 블록이라고 불릴 수 있다. 상기 샘플들간의 차분값들을 나타내는 함수로는 SAD(sum of absolute differences)와 MSE(mean squared error)가 사용될 수 있다. 상기 대상 블록과 상기 참조 블록과의 위상(phase)에 따른 샘플간의 차분값들의 절대값을 누적하여 왜곡의 정도를 측정하는 SAD는 다음과 같은 수학식을 기반으로 도출될 수 있다.
여기서, Blockcur(i,j)는 상기 대상 블록의 상기 복원 블록(또는 원본 블록) 내 (i,j) 좌표의 복원 샘플(또는 원본 샘플), Blockref(i,j)는 상기 참조 블록 내 (i,j) 좌표의 복원 샘플, width는 상기 복원 블록(또는 원본 블록)의 너비, height는 상기 복원 블록(또는 원본 블록)의 높이를 나타낸다.
또한, 상기 대상 블록과 상기 참조 블록과의 위상에 따른 샘플간의 차분값들의 제곱값을 누적하여 왜곡의 정도를 측정하는 MSE는 다음과 같은 수학식을 기반으로 도출될 수 있다.
여기서, Blockcur(i,j)는 상기 대상 블록의 상기 복원 블록(또는 원본 블록) 내 (i,j) 좌표의 복원 샘플(또는 원본 샘플), Blockref(i,j)는 상기 참조 블록 내 (i,j) 좌표의 복원 샘플, width는 상기 복원 블록(또는 원본 블록)의 너비, height는 상기 복원 블록(또는 원본 블록)의 높이를 나타낸다.
상기 수정된 움직임 정보를 계산하기 위한 방법들은 상기 특정 참조 블록을 탐색하는 탐색 범위에 따라서 계산 복잡도가 유동적으로 변할 수 있다. 이에, 상기 블록 매칭 방법을 사용하여 상기 대상 블록의 상기 수정된 움직임 정보를 계산하는 경우, 디코딩 장치는 상기 대상 블록의 디코딩 과정에서 사용된 상기 (제1) 움직임 정보를 통하여 도출된 참조 블록으로부터 일정 영역에 포함된 참조 블록들만을 탐색할 수 있고, 이를 통하여 낮은 계산 복잡도를 유지할 수 있다.
도 6은 디코딩 장치가 블록 매칭 방법을 통하여 상기 대상 블록의 움직임 정보를 갱신하는 방법의 일 예를 예시적으로 나타낸다. 디코딩 장치는 상기 대상 블록을 디코딩한다(S600). 상기 대상 블록에 인터 예측이 적용되는 경우, 디코딩 장치는 비트스트림을 통하여 상기 대상 블록의 인터 예측에 대한 정보를 획득할 수 있고, 상기 대상 블록의 복원 블록을 생성할 수 있다. 인코딩 장치에서 적용된 상기 대상 블록의 움직임 정보를 갱신하는 방법이 디코딩 장치에서도 동일하게 적용되어야 하므로, 인코딩 장치 및 디코딩 장치는 상기 대상 블록의 복원 블록을 기반으로 상기 대상 블록의 수정된 움직임 정보를 계산할 수 있다.
디코딩 장치는 상기 복원 블록을 사용하여 상기 수정된 움직임 정보에 대한 참조 픽처에서 움직임 추정을 수행한다(S610). 디코딩 장치는 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보에 대한 참조 픽처를 상기 수정된 움직임 정보에 대한 특정 참조 픽처로 도출할 수 있고, 상기 참조 픽처 내 참조 블록들 중 특정 참조 블록을 검출할 수 있다. 상기 특정 참조 블록은 상기 참조 블록들 중 상기 복원 블록과의 샘플들간의 차분값들의 절대값의 합, 즉, SAD(sum of absolute differences)가 최소인 참조 블록일 수 있다. 또한, 디코딩 장치는 상기 특정 참조 블록을 검출하기 위한 탐색 영역을 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보를 통하여 나타나는 참조 블록으로부터 일정 영역으로 한정할 수 있다. 다시 말해, 디코딩 장치는 상기 참조 블록으로부터 일정 영역 내에 위치하는 참조 블록들 중 상기 복원 블록과의 SAD가 최소인 참조 블록을 상기 특정 참조 블록으로 도출할 수 있다. 디코딩 장치는 상기 참조 블록으로부터 일정 영역에서만 움직임 추정을 수행할 수 있고, 이를 통하여 계산 복잡도를 낮추면서 상기 수정된 움직임 정보의 신뢰도를 높일 수 있다.
상기 대상 블록의 복원 블록의 사이즈가 특정의 사이즈보다 큰 경우, 보다 정교한 상기 수정된 움직임 정보를 계산하기 위하여 디코딩 장치는 상기 복원 블록을 상기 특정의 사이즈보다 작은 블록들로 분할하여 각각의 작은 블록을 기반으로 보다 세밀한 움직임 정보를 계산한다(S620). 상기 특정의 사이즈는 기설정될 수 있고, 상기 분할된 블록들은 서브 복원 블록들이라고 불릴 수 있다. 디코딩 장치는 상기 복원 블록을 복수의 서브 복원 블록들로 분할할 수 있고, 상기 서브 복원 블록들을 기반으로 상기 수정된 움직임 정보에 대한 참조 픽처 내에서 상기 각 서브 복원 블록 단위로 특정 서브 참조 블록을 도출할 수 있고, 상기 도출된 특정 서브 참조 블록들을 상기 특정 참조 블록을 도출할 수 있다. 디코딩 장치는 상기 특정 참조 블록을 기반으로 상기 수정된 움직임 정보를 계산할 수 있다.
한편, 상기 수정된 움직임 정보를 계산하기 위한 방법 중 상기 OF(optical flow) 방법이 적용되는 경우, 상기 수정된 움직임 정보는 다음과 같이 도출될 수 있다. 상기 OF 방법은 화면 내에서 객체가 어떻게 움직이고 있는가를 추적하는데 주로 사용되는 방법으로 나타낼 수 있다. 상기 OF 방법은 영상에서 상기 대상 블록 내 객체의 속도가 일정하고 상기 객체를 나타내는 샘플의 샘플값은 변화하지 않는다는 가정을 기반으로 계산될 수 있다. 상기 객체가 시간 δt 동안 x축 방향으로 δx, y축 방향으로 δy을 이동한 경우, 다음과 같은 수학식이 성립될 수 있다.
여기서, I(x,y,t)는 상기 대상 블록에 포함된 시간 t에서의 상기 객체를 나타내는 (x,y) 위치의 복원 샘플의 샘플값을 나타낸다.
상기 수학식 3에서 우측 항을 테일러 시리즈(taylor series)로 전개하면, 다음과 같은 수학식이 도출될 수 있다.
상기 수학식 4가 성립하는 경우, 다음과 같은 수학식이 성립될 수 있다.
상기 수학식 5를 다시 쓰면 다음과 같은 수학식이 도출될 수 있다.
여기서, vx는 계산된 움직임 벡터의 x축 벡터 성분, vy는 계산된 움직임 벡터의 y축 벡터 성분을 나타낸다. 디코딩 장치는 상기 객체를 x축, y축, 및 t축으로 편미분한 값들을 도출하고, 상기 도출된 편미분한 값들을 상기 수학식에 적용하여 상기 현재 위치, 즉, 객체를 나타내는 복원 샘플의 위치의 움직임 벡터 (vx, vy)를 도출할 수 있다. 이 경우, 예를 들어 디코딩 장치는 상기 객체를 나타내는 상기 대상 블록의 복원 블록 내 복원 샘플들을 3x3 사이즈의 영역 단위에 포함되는 복원 샘플들로 설정할 수 있고, 상기 복원 샘플들에 상기 수학식을 적용하여 좌항을 0에 가깝게 만드는 움직임 벡터 (vx, vy)를 계산할 수 있다.
코딩 장치에 의하여 계산된 대상 블록의 수정된 움직임 정보의 저장되는 형식은 다양한 형식을 가질 수 있지만, 상기 대상 블록의 코딩 과정 이후에 코딩되는 상기 대상 블록 주변의 다음 블록이나 상기 대상 블록이 포함된 대상 픽처의 코딩 과정 이후에 코딩되는 픽처를 위하여 사용될 수 있으므로 상기 대상 블록의 예측에 사용된 움직임 정보와 동일한 형식으로 저장되는 것이 유리할 수 있다. 상기 예측에 사용된 움직임 정보는 단예측(uni-prediction) 또는 쌍예측(bi-prediction) 움직임 정보 여부, 참조 픽처 인덱스, 및 움직임 벡터를 포함할 수 있다. 상기 수정된 움직임 정보는 상기 예측에 사용된 움직임 정보와 동일한 형식을 갖도록 계산될 수 있다.
쌍예측은 상기 대상 픽처의 참조 픽처가 하나밖에 없는 경우, 즉, 상기 대상 픽처의 POC(picture order count)의 값이 1인 경우를 제외하면 수행 가능할 수 있다. 일반적으로, 인코딩 장치가 단예측을 수행하는 경우보다 쌍예측을 수행하는 경우에 예측 성능이 높을 수 있다. 따라서, 상기 대상 픽처가 쌍예측이 수행 가능한 경우, 정확한 움직임 정보의 전파로 영상의 전체적인 코딩 효율을 향상시키기 위하여 코딩 장치는 상술한 방법을 통해 상기 대상 블록의 수정된 움직임 정보를 쌍예측 움직임 정보로 계산하고 갱신할 수 있다. 다만 상기 대상 픽처가 쌍예측이 수행 가능한 경우이더라도, 즉, 상기 대상 픽처의 POC의 값이 1이 아니더라도 가려진 영역(occlusion)이 발생하여 쌍예측이 수행 가능하지 않은 경우가 발생할 수 있다. 상기 가려진 영역은 상기 수정된 움직임 정보를 기반으로 움직임 보상하여 도출된 예측 블록의 샘플값들과 상기 대상 블록의 복원 블록(또는 원본 블록)의 샘플값들과의 차분값들의 절대값들의 합이 특정의 임계값보다 크면 발생한 것으로 판단될 수 있다. 예를 들어, 상기 대상 블록의 상기 수정된 움직임 정보가 쌍예측 움직임 정보인 경우, 상기 수정된 움직임 정보에 포함된 L0 움직임 벡터를 기반으로 도출된 특정 참조 블록의 샘플값들과 상기 대상 블록의 복원 블록(또는 원본 블록)의 샘플값들과의 차분값들의 절대값들의 합이 특정의 임계값보다 크면 상기 L0에 대한 예측은 가려진 영역이 발생한 것으로 판단될 수 있다. 또한, 상기 수정된 움직임 정보에 포함된 L1 움직임 벡터를 기반으로 도출된 특정 참조 블록의 샘플값들과 상기 대상 블록의 복원 블록(또는 원본 블록)의 샘플값들과의 차분값들의 절대값들의 합이 특정의 임계값보다 크면 상기 L1에 대한 예측은 가려진 영역이 발생한 것으로 판단될 수 있다. L0 및 L1 중 하나에 대한 예측에 가려진 영역이 발생한 경우에는 코딩 장치는 상기 수정된 움직임 정보를 상기 가려진 영역이 발생한 리스트에 대한 예측에 대한 정보를 제외한 단예측 움직임 정보로 도출할 수 있다.
상기 L0 및 상기 L1에 대한 예측에 상기 가려진 영역이 발생하거나, 상기 수정된 움직임 정보를 계산할 수 없는 경우에는 상기 대상 블록의 주변 블록의 움직임 정보를 사용하여 상기 대상 블록의 움직임 정보를 갱신하는 방법이 적용될 수 있고, 또는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신하지 않는 방법이 적용될 수 있다. 정확한 움직임 정보를 저장하여 전파하기 위하여 상술한 경우에는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신하지 않는 방법이 더 적절할 수 있다.
상기 수정된 움직임 정보의 L0 참조 픽처 인덱스 및 L1 참조 픽처 인덱스는 각 참조 픽처 리스트(상기 L0 또는 상기 L1) 중 하나의 참조 픽처를 가리킬 수 있다. 상기 수정된 움직임 정보의 참조 픽처 인덱스가 가리키는 참조 픽처는 특정 참조 픽처라고 불릴 수 있다. 상기 각 참조 픽처 리스트의 여러 참조 픽처들 중 하나의 참조 픽처를 선택하는 방법은 후술하는 내용과 같을 수 있다.
예를 들어, 인코딩 장치는 참조 픽처 리스트에 포함된 참조 픽처들 중 가장 최근에 인코딩된 참조 픽처를 선택할 수 있다. 즉, 인코딩 장치는 상기 참조 픽처 리스트에 포함된 참조 픽처들 중 가장 최근에 인코딩된 참조 픽처를 가리키는 상기 수정된 움직임 정보에 포함된 참조 픽처 인덱스를 생성할 수 있다.
또한, 인코딩 장치는 상기 참조 픽처 리스트 중 상기 현재 픽처의 POC(picture order count)와 가장 가까운 POC를 갖는 참조 픽처를 선택할 수 있다. 즉, 인코딩 장치는 상기 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 블록이 포함된 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 가리키는 상기 수정된 움직임 정보에 포함된 참조 픽처 인덱스를 생성할 수 있다.
또한, 인코딩 장치는 상기 참조 픽처 리스트 중 계층 구조상 낮은 계층에 속하는 참조 픽처를 선택할 수 있다. 낮은 계층에 속하는 참조 픽처는 I-슬라이스(slice)일 수 있고, 또는 낮은 QP(quantization parameter)가 적용되어 인코딩된 참조 픽처일 수 있다.
또한, 인코딩 장치는 상기 참조 픽처 리스트 중 움직임 보상의 신뢰도가 가장 높은 참조 블록을 포함하는 참조 픽처를 선택할 수 있다. 즉, 인코딩 장치는 상기 참조 픽처 리스트에 포함된 참조 픽처들에 위치한 참조 블록들 중 상기 대상 블록의 복원 블록(또는 원본 블록)의 특정 참조 블록을 도출할 수 있고, 상기 도출된 특정 참조 블록을 포함하는 참조 픽처를 가리키는 상기 수정된 움직임 정보에 포함된 참조 픽처 인덱스를 생성할 수 있다.
상술한 상기 수정된 움직임 정보의 참조 픽처 인덱스를 생성하는 방법들은 독립적으로 적용될 수 있고, 또는 방법들을 복합적으로 적용하는 것도 가능할 수 있다.
상기 수정된 움직임 정보에 포함된 움직임 벡터는 상술한 내용과 같이 OF 방법, 블록 매칭 방법, 및 특징점 정합 방법 등의 방법 중 적어도 하나의 방법을 통하여 도출할 수 있고, 상기 움직임 벡터는 적어도 최소 블록 단위로 움직임 벡터를 갖도록 할 필요가 있을 수 있다.
도 7은 수정된 움직임 정보에 사용될 수 있는 참조 픽처들을 예시적으로 나타낸다.
도 7을 참조하면 상기 POC의 값이 3인 픽처가 대상 픽처인 경우, 상기 대상 픽처는 쌍예측을 수행할 수 있고, POC의 값이 2인 픽처 및 POC의 값이 4인 픽처가 상기 대상 픽처의 참조 픽처들로 도출될 수 있다. 상기 대상 픽처의 L0은 POC의 값이 2인 참조 픽처 및 POC의 값이 0인 참조 픽처로 구성될 수 있고, 각각 대응하는 L0 참조 픽처 인덱스들의 값은 0 및 1일 수 있다. 또한, 상기 대상 픽처의 L1은 POC의 값이 4인 참조 픽처 및 POC의 값이 8인 참조 픽처로 구성될 수 있고, 각각 대응하는 L1 참조 픽처 인덱스들의 값은 0 및 1일 수 있다. 이 경우, 인코딩 장치는 상기 대상 픽처의 수정된 움직임 정보의 특정 참조 픽처들을 각 참조 픽처 리스트의 참조 픽처들 중 상기 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처로 선택할 수 있다. 또한, 인코딩 장치는 상기 대상 픽처 내 4x4 사이즈의 블록 단위로 상기 수정된 움직임 정보의 움직임 벡터를 도출할 수 있다. 상기 움직임 벡터를 도출하는 방법은 상술한 OF 방법이 적용될 수 있고, 상기 POC의 값이 2인 참조 픽처를 기반으로 도출된 움직임 벡터는 상기 수정된 움직임 정보에 포함된 L0 움직임 정보로 저장될 수 있고, 상기 POC의 값이 4인 참조 픽처를 기반으로 도출된 움직임 벡터는 상기 수정된 움직임 정보에 포함된 L1 움직임 정보로 저장될 수 있다.
또한, 도 7을 참조하면 상기 POC의 값이 8인 픽처가 대상 픽처인 경우, 상기 대상 픽처는 단예측을 수행할 수 있고, POC의 값이 0인 픽처가 상기 대상 픽처의 참조 픽처로 도출될 수 있다. 상기 대상 픽처의 L0은 POC의 값이 0인 참조 픽처로 구성될 수 있고, 상기 참조 픽처에 대응하는 L0 참조 픽처 인덱스의 값은 0일 수 있다. 이 경우, 인코딩 장치는 상기 대상 픽처의 수정된 움직임 정보의 특정 참조 픽처를 상기 L0에 포함된 참조 픽처들 중 상기 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처로 선택할 수 있다. 또한, 인코딩 장치는 상기 현재 픽처 내 4x4 사이즈의 블록 단위로 상기 수정된 움직임 정보의 움직임 벡터를 도출할 수 있다. 상기 움직임 벡터를 도출하는 방법은 상술한 블록 매칭 방법이 적용될 수 있고, 상기 POC의 값이 0인 참조 픽처를 기반으로 도출된 움직임 벡터는 상기 수정된 움직임 정보에 포함된 L0 움직임 정보로 저장될 수 있다.
상술한 실시 예들을 참조하면 상기 대상 블록의 상기 수정된 움직임 정보의 참조 픽처 인덱스는 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 가리키도록 도출될 수 있고, 상기 수정된 움직임 정보의 움직임 벡터의 계산은 4x4 사이즈의 블록 단위로 계산될 수 있다. 대상 픽처가 POC 8인 픽처인 경우, 상기 대상 픽처가 도 7에 도시된 픽처들 중 첫 번째로 인터 예측이 수행되는 픽처이므로 단예측이 수행되지만, 대상 픽처가 POC 3인 픽처인 경우, 양예측이 수행 가능하므로 상기 대상 픽처의 수정된 움직임 정보는 양예측 움직임 정보로 결정될 수 있다. 또한, 대상 픽처가 POC 3인 픽처인 경우라도 대상 픽처 내 블록 단위로 수정된 움직임 정보를 계산 및 갱신하는 경우, 인코딩 장치는 양예측 움직임 정보 및 단예측 움직임 정보 중 하나의 움직임 정보 형식의 선택을 블록 단위로 결정할 수 있다.
또한, 상술한 실시예와 다르게 상기 수정된 움직임 정보의 참조 픽처 인덱스를 참조 픽처 리스트에 포함된 참조 픽처들 중 현재 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처가 아닌 계층 구조에 의하여 선택된 참조 픽처를 가리키도록 생성할 수 있다. 예를 들어, 대상 픽처가 POC 5인 픽처인 경우, 상기 대상 픽처의 수정된 움직임 정보의 L0 참조 픽처 인덱스는 POC의 값이 4인 픽처가 아닌 POC의 값이 0인 픽처를 가리킬 수 있다. 상기 대상 픽처의 인코딩 과정을 수행한 후의 시점에서 가장 최근에 인코딩된 참조 픽처는 대부분 상기 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 지칭할 수 있다. 하지만, 상기 POC의 값이 6인 픽처의 경우와 같이, 가장 최근에 인코딩된 참조 픽처는 POC의 값이 2인 참조 픽처이고, 상기 대상 픽처의 POC와의 차이의 절대값이 가장 작은 POC를 갖는 픽처는 POC의 값이 4인 참조 픽처로 다른 참조 픽처를 지칭하는 경우도 발생할 수 있다.
상술한 방법을 통하여 대상 블록의 움직임 정보가 상기 수정된 움직임 정보로 갱신된 경우, 상기 수정된 움직임 정보를 이용하여 상기 대상 블록 주변의 다음 블록의 인터 예측을 수행할 수 있다(상기 대상 블록은 제1 블록이라고 불릴 수 있고, 상기 다음 블록은 제2 블록이라고 불릴 수 있다). 상기 다음 블록의 인터 예측 모드에 상기 수정된 움직임 정보를 이용하는 방법은 상기 수정된 움직임 정보를 인덱싱(indexing)하여 전송하는 방법과 상기 다음 블록의 움직임 벡터를 상기 대상 블록의 움직임 벡터와 상기 다음 블록의 움직임 벡터와의 차분값으로 표현하는 방법을 포함할 수 있다. 상기 수정된 움직임 정보를 인덱싱하여 전송하는 방법은 상기 다음 블록에 인터 예측 모드 중 머지 모드가 적용되는 경우의 방법일 수 있고, 상기 다음 블록의 움직임 벡터를 상기 대상 블록의 움직임 벡터와 상기 다음 블록의 움직임 벡터와의 차분값으로 표현하는 방법은 상기 주변 블록에 인터 예측 모드 중 AMVP 모드가 적용되는 경우의 방법일 수 있다.
도 8은 대상 블록들의 움직임 정보들이 상기 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다. 도 8을 참조하면 코딩 장치는 상기 대상 블록들을 포함하는 상기 다음 블록의 상기 머지 후보 리스트를 구성할 수 있다. 인코딩 장치는 상기 머지 후보 리스트에 포함된 블록들 중 상기 다음 블록의 움직임 정보와 가장 유사한 블록을 가리키는 머지 인덱스를 전송할 수 있다. 이 경우, 상기 대상 블록들의 갱신된 움직임 정보들은 상기 다음 블록의 공간적 주변 후보 블록의 움직임 정보로 사용될 수 있고, 또는 시간적 주변 후보 블록의 움직임 정보로 사용될 수 있다. 상기 대상 블록들의 움직임 정보들은 상기 대상 블록들의 상기 수정된 움직임 정보들을 포함할 수 있다. 도 8에 도시된 것과 같이 상기 공간적 주변 후보 블록의 움직임 정보는 A1, B1, B0, A0, 및 B2 위치에 상기 다음 블록 주변의 블록들의 저장된 움직임 정보들 중 하나의 움직임 정보로 나타낼 수 있다. 상기 다음 블록의 인코딩 이전에 인코딩된 대상 블록들의 움직임 정보들은 갱신될 수 있고, 갱신된 움직임 정보는 상기 다음 블록의 인코딩 과정에 영향을 줄 수 있다. 머지 모드를 통하여 오류를 포함한 움직임 정보가 상기 다음 블록에 전파되는 경우, 오류가 누적되어 전파될 수 있지만 상술한 방법들을 통하여 각 블록마다 움직임 정보를 갱신함으로써 전파되는 오류를 줄일 수 있다.
도 9는 대상 블록들의 움직임 정보들이 상기 대상 블록들의 수정된 움직임 정보들로 갱신된 경우에 상기 대상 블록들 주변의 다음 블록의 머지 후보 리스트의 일 예를 예시적으로 나타낸다. 상기 다음 블록 주변의 상기 대상 블록의 예측에 사용된 (제1) 움직임 정보 및 수정된 움직임 정보가 저장될 수 있다. 이 경우, 코딩 장치는 상기 다음 블록의 머지 후보 리스트에 새롭게 계산된 대상 블록의 수정된 움직임 정보를 나타내는 상기 대상 블록을 별도의 머지 후보 블록으로 구성할 수 있다. 도 9에서 도시된 것과 같이 상기 다음 블록 주변의 대상 블록의 인코딩 과정에서 적용된 (제1) 움직임 정보를 나타내는 대상 블록 다음에 상기 대상 블록의 수정된 움직임 정보를 나타내는 상기 대상 블록을 머지 후보 리스트에 삽입할 수도 있다. 또한, 상기 머지 후보 리스트의 우선 순위는 변경될 수 있고 삽입되는 위치와 개수 등도 다르게 구성될 수 있다.
비록 도 9에서는 수정된 움직임 정보가 도출되는 대상 블록들의 예로 A1 및 B1를 예시적으로 도시하고 있으나, 이는 예시이고, 나머지 A0, B0, B2, T0 및 T1에 대하여도 수정된 움직임 정보들이 도출되어 이를 기반으로 상기 머지 후보 리스트가 구성될 수도 있다.
예를 들어, 상기 다음 블록은 상기 대상 블록과 다른 픽처에 위치할 수 있으며, 상기 다음 블록의 시간적 주변 후보 블록이 상기 머지 후보 리스트에 포함될 수 있다. 상기 다음 블록의 머지 인덱스를 통하여 상기 시간적 주변 후보 블록의 움직임 정보가 선택될 수 있다. 이 경우 상기 시간적 주변 후보 블록의 움직임 정보도 상술한 방법을 통하여 수정된 움직임 정보로 갱신될 수 있고, 상기 갱신된 움직임 정보를 나타내는 상기 시간적 주변 후보 블록이 상기 다음 블록의 머지 후보 리스트에 삽입될 수 있다. 또한, 상술한 방법을 통하여 상기 시간적 주변 후보 블록의 (제1) 움직임 정보와 상기 수정된 움직임 정보가 별도로 저장될 수 있고, 이 경우, 상기 다음 블록의 머지 후보 리스트의 생성 과정에서 상기 수정된 움직임 정보를 나타내는 상기 시간적 주변 후보 블록이 상기 머지 후보 리스트의 추가적인 후보로 삽입될 수 있다.
도 9에 도시된 내용과 다르게 상기 다음 블록에 AMVP 모드가 적용될 수도 있다. 상기 다음 블록의 AMVP 모드가 적용되는 경우, 코딩 장치는 상기 머지 모드와 같이 상기 다음 블록의 주변 블록들의 움직임 정보들을 기반으로 움직임 벡터 예측자 후보 리스트를 생성할 수 있다.
도 10은 대상 블록의 움직임 정보가 상기 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다. 인코딩 장치는 상기 움직임 벡터 예측자 후보 리스트에 포함된 움직임 정보들 중 특정의 조건에 따라 움직임 정보를 선택할 수 있고, 상기 선택된 움직임 정보를 가리키는 인덱스 및 상기 선택된 움직임 정보의 움직임 벡터와 상기 다음 블록의 움직임 정보의 움직임 벡터와의 차분값(motion vector difference, MVD)을 전송할 수 있다. 상술한 머지 모드에서 머지 후보 리스트에 상기 다음 블록 주변의 갱신된 움직임 정보를 나타내는 블록을 공간적 또는 시간적 머지 후보 블록으로 삽입하는 방법과 같이 상기 AMVP 모드의 상기 주변 블록들의 움직임 정보들을 포함하는 리스트를 생성하는 과정도 상기 주변 블록의 갱신된 움직임 정보를 공간적 또는 시간적 움직임 벡터 예측자(motion vector predictor, MVP) 후보로 삽입하는 방법이 적용될 수 있다. 도 10에 도시된 것과 같이 코딩 장치는 상기 다음 블록 주변의 대상 블록 A0 및 대상 블록 A1의 갱신된 움직임 정보들을 화살표 방향 순서로 미리 정의된 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정 조건에 부합되는 갱신된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP A로 도출할 수 있다.
또한, 코딩 장치는 상기 다음 블록 주변의 대상 블록 B0, 대상 블록 B1, 및 대상 블록 B2의 갱신된 움직임 정보들을 화살표 방향 순서로 미리 정의된 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정 조건에 부합되는 갱신된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP B로 도출할 수 있다.
또한, 코딩 장치는 상기 다음 블록은 상기 대상 블록과 다른 픽처에 위치할 수 있으며, 상기 다음 블록의 시간적 MVP 후보가 상기 움직임 벡터 예측자 후보 리스트에 포함될 수 있다. 도 10에 도시된 것과 같이 코딩 장치는 상기 다음 블록의 참조 픽처에 위치하는 대상 블록 T0의 갱신된 움직임 정보에서 대상 블록 T1의 갱신된 움직임 정보로의 순서로 미리 정의된 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정 조건에 부합되는 갱신된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP Col로 도출할 수 있다. 상기 MVP A, 상기 MVP B, 및/또는 상기 MVP Col가 수정된 움직임 정보로 대체되어 갱신된 움직임 정보인 경우, 상기 갱신된 움직임 정보가 상기 다음 블록의 움직임 벡터 예측자 후보로 사용될 수 있다.
한편, 상기 움직임 벡터 예측자 후보 리스트의 MVP 후보들이 특정 개수보다 적게 도출된 경우, 코딩 장치는 영 벡터를 MVP 제로(zero)로 도출하여 상기 움직임 벡터 예측자 후보 리스트에 포함할 수 있다.
도 11은 대상 블록의 움직임 정보가 상기 대상 블록의 수정된 움직임 정보를 기반으로 갱신된 경우에 상기 대상 블록 주변의 다음 블록의 움직임 벡터 예측자 후보 리스트의 일 예를 예시적으로 나타낸다. 상기 대상 블록의 움직임 정보가 상기 수정된 움직임 정보 및 상기 기존 움직임 정보를 포함하는 갱신된 움직임 정보인 경우, 코딩 장치는 상기 다음 블록 주변의 대상 블록 A0 및 대상 블록 A1의 기존 움직임 정보들을 화살표 방향 순서로 특정의 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정의 조건에 부합되는 기존 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP A로 도출할 수 있다.
또한, 코딩 장치는 상기 대상 블록 A0 및 상기 대상 블록 A1의 수정된 움직임 정보들을 화살표 방향 순서로 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정의 조건에 부합되는 수정된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 갱신된(updated) MVP A로 도출할 수 있다.
또한, 코딩 장치는 상기 다음 블록 주변의 대상 블록 B0, 대상 블록 B1, 및 대상 블록 B2의 기존 움직임 정보들을 화살표 방향 순서로 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정 조건에 부합되는 기존 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP B로 도출할 수 있다.
또한, 코딩 장치는 상기 대상 블록 B0, 상기 대상 블록 B1, 및 상기 대상 블록 B2의 수정된 움직임 정보들을 화살표 방향 순서로 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정의 조건에 부합되는 갱신된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 갱신된 MVP B로 도출할 수 있다.
또한, 코딩 장치는 상기 다음 블록의 참조 픽처에 위치하는 대상 블록 T0의 기존 움직임 정보에서 대상 블록 T1의 기존 움직임 정보로의 순서로 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정의 조건에 부합되는 기존 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 MVP Col로 도출할 수 있다.
또한, 코딩 장치는 상기 다음 블록의 참조 픽처에 위치하는 대상 블록 T0의 수정된 움직임 정보에서 대상 블록 T1의 수정된 움직임 정보로의 순서로 특정 조건에 부합되는지 검출할 수 있고, 가장 먼저 검출된 상기 특정의 조건에 부합되는 수정된 움직임 정보를 상기 움직임 예측자 후보 리스트에 포함된 갱신된 MVP Col로 도출할 수 있다.
한편, 상기 움직임 벡터 예측자 후보 리스트의 MVP 후보들이 특정 개수보다 적게 도출된 경우, 코딩 장치는 영 벡터를 MVP 제로(zero)로 도출하여 상기 움직임 벡터 예측자 후보 리스트에 포함할 수 있다.
도 12은 본 발명에 따른 인코딩 장치에 의한 비디오 인코딩 방법을 개략적으로 나타낸다. 도 12에서 개시된 방법은 도 1에서 개시된 인코딩 장치에 의하여 수행될 수 있다. 구체적으로 예를 들어, 도 12의 S1200 내지 S1230은 상기 인코딩 장치의 예측부에 의하여 수행될 수 있고, S1240은 상기 인코딩 장치의 메모리에 의하여 수행될 수 있다.
인코딩 장치는 대상 블록에 대한 움직임 정보를 생성한다(S1200). 인코딩 장치는 상기 대상 블록에 대하여 인터 예측을 적용할 수 있다. 상기 대상 블록에 인터 예측이 적용되는 경우, 인코딩 장치는 스킵(skip) 모드, 머지(merge) 모드, 및 AMVP(adaptive motion vector prediction) 모드 중 어느 하나를 적용하여 대상 블록에 대한 움직임 정보를 생성할 수 있다. 상기 움직임 정보는 제1 움직임 정보라고 불릴 수 있다. 스킵 모드와 머지 모드의 경우에, 인코딩 장치는 상기 대상 블록의 주변 블록의 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보로 생성할 수 있다. 상기 움직임 정보는 움직임 벡터와 참조 픽처 인덱스를 포함할 수 있다. 상기 움직임 정보는 쌍예측(bi-prediction) 움직임 정보일 수 있고, 또는 단예측(uni-prediction) 움직임 정보일 수 있다. 상기 쌍예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터, L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있고, 상기 단예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터를 포함할 수 있고, 또는 L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있다. 상기 L0은 참조 픽처 리스트 L0(List 0)를 나타내고, 상기 L1은 참조 픽처 리스트 L1(List 1)를 나타낸다.
AMVP 모드의 경우, 인코딩 장치는 상기 대상 블록의 주변 블록의 움직임 벡터를 상기 대상 블록의 움직임 벡터 예측자(motion vector predictor, MVP)로 이용하여 상기 대상 블록의 움직임 벡터를 유도할 수 있고, 상기 움직임 벡터 및 상기 움직임 벡터에 대한 참조 픽처 인덱스를 포함한 상기 움직임 정보를 생성할 수 있다.
인코딩 장치는 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출한다(S1210). 인코딩 장치는 상기 움직임 정보에 포함된 참조 픽처 인덱스 및 움직임 벡터를 기반으로 상기 대상 블록의 예측 샘플을 생성할 수 있다.
인코딩 장치는 상기 예측 샘플을 기반으로 복원 블록을 생성한다(S1220). 인코딩 장치는 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성할 수 있고, 또는 상기 대상 블록의 레지듀얼 신호를 생성하고 상기 레지듀얼 신호 및 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성할 수 있다.
인코딩 장치는 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된 움직임 정보를 생성한다(S1230). 인코딩 장치는 다양한 방법을 통하여 상기 대상 블록의 상기 수정된 움직임 정보에 대한 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스 및 상기 특정 참조 픽처에 대한 수정된 움직임 벡터를 계산할 수 있다. 상기 수정된 움직임 정보는 제2 움직임 정보라고 불릴 수 있다. 상기 방법은 OF(optical flow) 방법, 블록 매칭(block-matching) 방법, 주파수 도메인(frequency domain) 방법 등의 직접적인 방법들, 및 특징점 정합 방법, 통계적 특성을 이용하는 방법 등의 간접적인 방법들 중 적어도 하나의 방법이 적용될 수 있다. 또한, 직접적인 방법과 간접적인 방법이 동시에 적용될 수도 있다.
예를 들어, 인코딩 장치는 상기 블록 매칭 방법을 통하여 상기 수정된 움직임 정보를 생성할 수 있다. 이 경우, 인코딩 장치는 상기 대상 블록의 복원 블록과 참조 블록과의 위상(phase)에 따른 샘플들간의 차분값들을 누적하여 왜곡의 정도를 측정하고, 이를 비용함수로 사용하여 상기 복원 블록의 특정 참조 블록을 검출할 수 있다. 인코딩 장치는 상기 검출된 특정 참조 블록을 기반으로 상기 수정된 움직임 정보를 생성할 수 있다. 다시 말해, 인코딩 장치는 상기 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스 및 상기 특정 참조 픽처에서 상기 특정 참조 블록을 가리키는 수정된 움직임 벡터를 포함하는 상기 수정된 움직임 정보를 생성할 수 있다. 인코딩 장치는 상기 특정 참조 픽처 내 참조 블록들 중 상기 대상 블록의 복원 블록과의 위상(phase)에 따른 샘플간의 차분값들의 절대값들(또는 제곱값들)의 합이 최소인 참조 블록을 상기 특정 참조 블록으로 검출할 수 있고, 상기 특정 참조 블록을 기반으로 상기 수정된 움직임 정보를 도출할 수 있다. 상기 차분값들의 절대값들의 합을 나타내는 방법으로 SAD(sum of absolute differences)가 사용될 수 있다. 이 경우 상기 차분값들의 절대값들의 합은 상술한 수학식 1을 적용하여 계산될 수 있다. 또한, 상기 차분값들의 제곱값들의 합을 나타내는 방법으로 MSE(mean squared error)가 사용될 수 있다. 이 경우 상기 차분값들의 제곱값들의 합은 상술한 수학식 2를 적용하여 계산될 수 있다.
또한, 상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처는 상기 (제1) 움직임 정보에 포함된 참조 픽처 인덱스가 가리키는 참조 픽처로 도출될 수 있고, 상기 특정 참조 블록을 검출하기 위한 탐색 영역은 상기 (제1) 움직임 정보에 포함된 상기 참조 픽처와 관련된 움직임 벡터를 기반으로 상기 참조 픽처 내에서 도출되는 참조 블록으로부터 일정 영역 내에 위치하는 참조 블록들로 한정할 수 있다. 즉, 인코딩 장치는 상기 (제1) 움직임 정보에 포함된 상기 참조 픽처와 관련된 움직임 벡터를 기반으로 상기 참조 픽처 내에서 도출되는 참조 블록으로부터 일정 영역 내에 위치하는 참조 블록들 중 상기 복원 블록과의 SAD가 최소인 참조 블록을 상기 특정 참조 블록으로 도출할 수 있다.
또한, 상기 복원 블록의 사이즈가 기설정된 사이즈보다 큰 경우, 상기 복원 블록을 복수의 서브 복원 블록들로 분할하고, 상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처 내에서 상기 각 서브 복원 블록 단위로 특정 서브 참조 블록을 도출할 수 있다. 이 경우, 인코딩 장치는 상기 도출된 특정 서브 참조 블록들을 기반으로 상기 특정 참조 블록을 도출할 수 있다.
다른 예로, 인코딩 장치는 상기 OF 방법을 통하여 상기 수정된 움직임 정보를 생성할 수 있다. 이 경우, 인코딩 장치는 영상에서 상기 대상 블록에 포함된 객체의 속도가 일정하고 상기 객체를 나타내는 샘플들의 샘플값들은 변화하지 않는다는 가정을 기반으로 상기 대상 블록의 상기 수정된 움직임 정보에 대한 움직임 벡터를 계산할 수 있다. 상기 움직임 벡터는 상술한 수학식 6을 통하여 계산될 수 있다. 상기 대상 블록에 포함된 객체를 나타내는 샘플들의 영역은 3x3 사이즈의 영역으로 설정될 수 있다.
상술한 방법들을 통하여 상기 수정된 움직임 정보를 계산하는 경우, 인코딩 장치는 상기 수정된 움직임 정보를 상기 (제1) 움직임 정보와 동일한 형식을 갖도록 계산할 수 있다. 즉, 인코딩 장치는 상기 수정된 움직임 정보를 쌍예측(bi-prediction) 움직임 정보 및 단예측(uni-prediction) 움직임 정보 중 상기 움직임 정보와 동일한 형식을 갖도록 계산할 수 있다. 상기 쌍예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터, L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있고, 상기 단예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터를 포함할 수 있고, 또는 L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있다. 상기 L0은 참조 픽처 리스트 L0(List 0)를 나타내고, 상기 L1은 참조 픽처 리스트 L1(List 1)를 나타낸다.
또한, 상기 대상 블록이 포함된 대상 픽처에서 쌍예측이 수행 가능한 경우, 인코딩 장치는 상술한 방법을 통하여 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산할 수 있다. 다만 상기 수정된 움직임 정보가 상기 쌍예측 움직임 정보로 계산한 이후, 상기 쌍예측 움직임 정보로 도출되는 특정 참조 블록들 중 하나에 가려진 영역(occlusion)이 발생하는 경우, 인코딩 장치는 상기 수정된 움직임 정보를 상기 가려진 영역이 발생한 특정 참조 블록이 포함된 특정 참조 픽처의 참조 픽처 리스트에 대한 움직임 정보를 제외한 단예측 움직임 정보로 도출할 수 있다. 상기 가려진 영역의 발생 여부는 상기 수정된 움직임 정보를 기반으로 도출된 참조 블록과 상기 대상 블록의 복원 블록과의 위상(phase)에 따른 샘플들 간의 차분값이 특정의 임계값보다 크면 발생한 것으로 판단될 수 있다. 상기 임계값은 기설정될 수 있다.
예를 들어, 인코딩 장치는 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산하고, 상기 수정된 움직임 정보의 L0 움직임 벡터 및 L0 참조 픽처 인덱스를 기반으로 도출되는 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 인코딩 장치는 상기 수정된 움직임 정보를 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 포함하는 단예측 움직임 정보로 도출할 수 있다.
다른 예로, 상기 인코딩 장치는 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산하고, 상기 수정된 움직임 정보의 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 기반으로 도출되는 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 인코딩 장치는 상기 수정된 움직임 정보를 L0 움직임 벡터 및 L0 참조 픽처 인덱스를 포함하는 단예측 움직임 정보로 도출할 수 있다.
또한, 상기 L0 움직임 벡터 및 상기 L0 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 크고, 상기 L1 움직임 벡터 및 상기 L1 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 인코딩 장치는 상기 대상 블록의 주변 블록의 움직임 정보를 상기 수정된 움직임 정보로 도출할 수 있고, 또는 상기 수정된 움직임 정보를 계산하지 않을 수 있다.
한편, 인코딩 장치는 상기 수정된 움직임 정보에 포함된 수정된 참조 픽처 인덱스가 가리키는 특정 참조 픽처를 다양한 방법을 통하여 선택할 수 있다.
예를 들어, 인코딩 장치는 상기 참조 픽처 리스트 L0에 포함된 참조 픽처들 중 가장 최근에 인코딩된 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L0 참조 픽처 인덱스를 생성할 수 있다. 또한, 인코딩 장치는 상기 참조 픽처 리스트 L1에 포함된 참조 픽처들 중 가장 최근에 인코딩된 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L1 참조 픽처 인덱스를 생성할 수 있다.
다른 예로, 인코딩 장치는 상기 L0 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 픽처의 POC(picture order count)와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L0 참조 픽처 인덱스를 생성할 수 있다. 또한, 인코딩 장치는 상기 L1 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 픽처의 POC(picture order count)와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L1 참조 픽처 인덱스를 생성할 수 있다.
다른 예로, 인코딩 장치는 상기 각 참조 픽처 리스트들에 포함된 참조 픽처들 중 계층 구조상 낮은 계층에 속하는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 생성할 수 있다. 상기 낮은 계층에 속하는 참조 픽처는 I-슬라이스(slice)일 수 있고, 또는 낮은 QP(quantization parameter)가 적용되어 인코딩된 참조 픽처일 수 있다.
다른 예로, 인코딩 장치는 상기 참조 픽처 리스트 중 움직임 보상의 신뢰도가 가장 높은 참조 블록을 포함하는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 생성할 수 있다. 다시 말해, 인코딩 장치는 상기 참조 픽처 리스트에 포함된 참조 픽처들을 기반으로 상기 대상 블록의 복원 블록의 특정 참조 블록을 도출하고, 상기 도출된 특정 참조 블록을 포함하는 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 생성할 수 있다.
상술한 상기 수정된 움직임 정보의 상기 수정된 참조 픽처 인덱스를 생성하는 방법들은 독립적으로 적용될 수 있고, 또는 방법들을 복합적으로 적용하는 것도 가능할 수 있다.
또한, 비록 도시되지는 않았으나 인코딩 장치는 상기 대상 블록의 원본 블록을 기반으로 상기 대상 블록의 수정된 움직임 정보를 생성할 수 있다. 인코딩 장치는 상기 참조 픽처들에 포함된 참조 블록들 중 상기 원본 블록의 특정 참조 블록을 도출할 수 있고, 상기 도출된 특정 참조 블록을 나타내는 상기 수정된 움직임 정보를 생성할 수 있다.
인코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신한다(S1240). 인코딩 장치는 상기 수정된 움직임 정보를 저장하고 상기 대상 블록의 상기 움직임 정보를 갱신할 수 있다. 인코딩 장치는 상기 대상 블록의 예측에 사용된 상기 움직임 정보를 상기 수정된 움직임 정보로 대체하여 상기 대상 블록의 상기 움직임 정보를 갱신할 수 있다. 또한, 인코딩 장치는 상기 대상 블록의 예측에 사용된 상기 움직임 정보 및 상기 수정된 움직임 정보를 모두 저장하여 상기 대상 블록의 상기 움직임 정보를 갱신할 수 있다. 상기 갱신된 움직임 정보는 상기 대상 블록 주변의 다음 블록의 움직임 정보를 위하여 사용될 수 있다. 예를 들어, 상기 대상 블록 주변의 다음 블록에 머지 모드가 적용되는 경우, 상기 다음 블록의 머지 후보 리스트는 상기 대상 블록을 포함할 수 있고, 상기 대상 블록의 상기 갱신된 움직임 정보는 상기 수정된 움직임 정보를 포함할 수 있다. 상기 대상 블록의 움직임 정보가 대상 블록의 예측에 사용된 상기 움직임 정보에서 상기 수정된 움직임 정보로 대체되어 저장된 경우, 상기 다음 블록의 머지 후보 리스트는 상기 수정된 움직임 정보를 나타내는 대상 블록이 포함될 수 있다. 또한, 상기 대상 블록의 움직임 정보에 대상 블록의 예측에 사용된 상기 움직임 정보 및 상기 수정된 움직임 정보 모두 저장된 경우, 상기 다음 블록의 머지 후보 리스트는 상기 대상 블록의 예측에 사용된 상기 움직임 정보를 나타내는 대상 블록과 상기 수정된 움직임 정보를 나타내는 대상 블록이 포함될 수 있다. 상기 수정된 움직임 정보를 나타내는 대상 블록은 상기 머지 후보 리스트 중 공간적 주변 후보 블록으로 삽입될 수 있고, 또는 상기 머지 후보 리스트 중 시간적 주변 후보 블록으로 삽입될 수 있다.
다른 예로, 상기 대상 블록 주변의 다음 블록에 AMVP 모드가 적용되는 경우, 상술한 머지 모드에서 머지 후보 리스트에 상기 다음 블록 주변의 대상 블록의 갱신된 움직임 정보를 공간적 또는 시간적 주변 움직임 정보로 삽입하는 방법과 같이 상기 다음 블록의 움직임 벡터 예측자 후보 리스트에 상기 주변 블록의 갱신된 움직임 정보를 공간적 또는 시간적 움직임 벡터 예측자 후보로 삽입하는 방법이 적용될 수 있다. 즉, 인코딩 장치는 상기 다음 블록 주변의 대상 블록의 갱신된 움직임 정보를 포함하는 상기 움직임 벡터 예측자 후보 리스트를 생성할 수 있다.
예를 들어, 상기 다음 블록 주변의 대상 블록의 상기 갱신된 움직임 정보가 수정된 움직임 정보만을 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 수정된 움직임 정보를 상기 공간적 움직임 벡터 예측자 후보로 포함할 수 있다.
다른 예로, 상기 다음 블록 주변의 대상 블록의 상기 갱신된 움직임 정보가 수정된 움직임 정보 및 상기 대상 블록의 기존 움직임 정보를 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 다음 블록 주변의 대상 블록들의 기존 움직임 정보들 중 특정의 조건에 따라 선택된 기존 움직임 정보와 상기 다음 블록 주변의 대상 블록들의 상기 수정된 움직임 정보들 중 특정의 조건에 따라 선택된 수정된 움직임 정보를 각각 별도의 공간적 움직임 벡터 예측자 후보로 포함할 수 있다.
한편, 상기 다음 블록의 상기 움직임 벡터 예측자 후보 리스트는 상기 다음 블록의 참조 픽처 내 상기 다음 블록의 위치와 동일한 위치의 동일 위치 블록(collocated block)의 갱신된 움직임 정보 및 상기 동일 위치 블록의 주변 블록의 갱신된 움직임 정보를 시간적 움직임 벡터 예측자 후보로 포함할 수 있다. 예를 들어, 상기 다음 블록의 상기 동일 위치 블록의 갱신된 움직임 정보 및 상기 동일 위치 블록의 주변 블록의 갱신된 움직임 정보가 각 블록의 상기 수정된 움직임 정보만을 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 수정된 움직임 정보들을 상기 시간적 움직임 벡터 예측자 후보로 포함할 수 있다.
다른 예로, 상기 갱신된 움직임 정보들이 상기 동일 위치 블록 및 상기 동일 위치 블록의 상기 주변 블록 각각의 상기 수정된 움직임 정보 및 상기 동일 위치 블록의 기존 움직임 정보를 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 기존 움직임 정보들 중 특정의 조건에 따라 선택된 기존 움직임 정보와 상기 수정된 움직임 정보들 중 특정의 조건에 따라 선택된 수정된 움직임 정보를 각각 별도의 시간적 움직임 벡터 예측자 후보로 포함할 수 있다.
한편, 저장되는 움직임 정보와 전송을 위한 움직임 정보는 서로 다른 해상도를 가질 수 있다. 예를 들어, 인코딩 장치가 상기 움직임 정보에 대한 정보를 인코딩하여 전송하고 상기 수정된 움직임 정보는 상기 대상 블록의 주변 블록의 움직임 정보를 위하여 저장하는 경우. 상기 움직임 정보에 포함된 움직임 벡터의 단위는 1/4 분수 샘플 단위를 나타낼 수 있고, 상기 수정된 움직임 정보에 포함된 움직임 벡터의 단위는 1/8 분수 샘플 단위 또는 1/16 분수 샘플 단위를 나타낼 수 있다.
한편, 비록 도시되지는 않았으나 인코딩 장치는 상기 대상 블록의 복원 블록을 기반으로 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보와의 비교 과정을 수행하여 상기 대상 블록의 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어, 인코딩 장치는 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 복원 블록과의 레지듀얼(residual) 신호의 데이터량과, 상기 움직임 정보를 기반으로 도출되는 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량을 비교하여 상기 대상 블록의 갱신 여부를 판단할 수 있다. 상기 데이터량들 중 상기 특정 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량이 더 작은 경우, 인코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하는 것으로 판단할 수 있다. 또한, 상기 데이터량들 중 상기 특정 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량이 더 작지 않은 경우, 인코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하지 않는 것으로 판단할 수 있다.
또한, 인코딩 장치는 상기 대상 블록의 원본 블록을 기반으로 상기 움직임 정보와 상기 수정된 움직임 정보와의 비교 과정을 수행하여 상기 대상 블록의 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어, 인코딩 장치는 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 원본 블록과의 레지듀얼(residual) 신호의 데이터량과, 상기 움직임 정보를 기반으로 도출되는 참조 블록과 상기 원본 블록과의 레지듀얼 신호의 데이터량을 비교하여 상기 대상 블록의 갱신 여부를 판단할 수 있다. 상기 데이터량들 중 상기 특정 참조 블록과 상기 원본 블록과의 레지듀얼 신호의 데이터량이 더 작은 경우, 인코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하는 것으로 판단할 수 있다. 또한, 상기 데이터량들 중 상기 특정 참조 블록과 상기 원본 블록과의 레지듀얼 신호의 데이터량이 더 작지 않은 경우, 인코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하지 않는 것으로 판단할 수 있다.
한편, 인코딩 장치는 상기 갱신 여부를 나타내는 부가 정보를 생성할 수 있고, 인코딩하여 비트스트림을 통하여 출력할 수 있다. 예를 들어 상기 갱신 여부를 나타내는 부가 정보는 갱신 플래그라고 불릴 수 있다. 상기 갱신 플래그의 값이 1인 경우 상기 움직임 정보가 갱신됨을 나타낼 수 있고, 상기 갱신 플래그의 값이 0인 경우 상기 움직임 정보가 갱신되지 않음을 나타낼 수 있다. 예를 들어 상기 갱신 플래그는 PU 단위로 전송될 수 있다. 또는 상기 갱신 플래그는 CU 단위, CTU 단위, 슬라이스 단위로 전송될 수도 있고, PPS(picture parameter set) 단위 또는 SPS(sequence parameter set) 단위와 같은 상위 레벨을 통하여 전송될 수도 있다.
한편, 인코딩 장치는 기존 움직임 벡터와 수정된 움직임 벡터 간의 차분을 나타내는 움직임 벡터 갱신 차분 정보를 더 생성하고, 인코딩하여 출력할 수도 있다. 상기 움직임 벡터 갱신 차분 정보는 상기 PU 단위로 전송될 수 있다.
비록 도시되지는 않았으나 인코딩 장치는 상기 대상 블록에 대한 레지듀얼 샘플에 관한 정보를 인코딩하여 출력할 수도 있다. 상기 레지듀얼 샘플에 관한 정보는 상기 레지듀얼 샘플에 관한 변환 계수들을 포함할 수 있다.
도 13은 본 발명에 따른 디코딩 장치에 의한 비디오 디코딩 방법을 개략적으로 나타낸다. 도 13에서 개시된 방법은 도 2에서 개시된 디코딩 장치에 의하여 수행될 수 있다. 구체적으로 예를 들어, 도 13의 S1300은 상기 디코딩 장치의 엔트로피 디코딩부에 의하여 수행될 수 있고, S1310 내지 S1340은 상기 디코딩 장치의 예측부에 의하여 수행될 수 있고, S1350은 상기 디코딩 장치의 메모리에 의하여 수행될 수 있다.
디코딩 장치는 비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득한다(S1300). 상기 대상 블록은 인터 예측 또는 인트라 예측이 적용될 수 있다. 상기 대상 블록에 인터 예측이 적용되는 경우, 디코딩 장치는 상기 비트스트림을 통하여 상기 대상 블록의 인터 예측에 대한 정보를 획득할 수 있다. 또한, 디코딩 장치는 디코딩 장치는 상기 비트스트림을 통하여 상기 대상 블록의 기존 움직임 벡터와 수정된 움직임 벡터 간의 차분을 나타내는 움직임 벡터 갱신 차분 정보를 획득할 수 있다. 또한, 디코딩 장치는 상기 비트스트림을 통하여 상기 대상 블록의 갱신 여부를 나타내는 부가 정보를 획득할 수 있다. 예를 들어 상기 갱신 여부를 나타내는 부가 정보는 갱신 플래그라고 불릴 수 있다.
디코딩 장치는 상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출한다(S1310). 상기 움직임 정보는 제1 움직임 정보라고 불릴 수 있다. 상기 인터 예측에 대한 정보는 상기 대상 블록에 스킵(skip) 모드, 머지(merge) 모드, 및 AMVP(adaptive motion vector prediction) 모드 중 어느 하나의 모드가 적용되는지 나타낼 수 있다. 상기 대상 블록에 스킵 모드 또는 머지 모드가 적용되는 경우, 디코딩 장치는 상기 대상 블록의 주변 블록들을 포함하는 머지 후보 리스트를 생성할 수 있고, 상기 머지 후보 리스트에 포함된 주변 블록들 중 하나의 주변 블록을 가리키는 머지 인덱스(merge index)를 획득할 수 있다. 상기 머지 인덱스는 상기 인터 예측에 대한 정보에 포함될 수 있다. 디코딩 장치는 상기 머지 인덱스가 가리키는 주변 블록의 움직임 정보를 상기 대상 블록의 움직임 정보로 도출할 수 있다.
상기 대상 블록에 AMVP 모드가 적용되는 경우, 디코딩 장치는 상기 머지 모드와 같이 상기 대상 블록의 주변 블록들을 기반으로 리스트를 생성할 수 있다. 디코딩 장치는 상기 생성된 리스트에 포함된 주변 블록들 중 하나의 주변 블록을 가리키는 인덱스 및 상기 인덱스가 가리키는 주변 블록의 움직임 벡터와 상기 대상 블록의 움직임 벡터와의 차분값(motion vector difference, MVD)을 획득할 수 있다. 상기 인덱스 및 상기 MVD는 상기 인터 예측에 대한 정보에 포함될 수 있다. 디코딩 장치는 상기 인덱스가 가리키는 주변 블록의 움직임 벡터 및 상기 MVD를 기반으로 상기 대상 블록의 상기 움직임 정보를 도출할 수 있다.
상기 움직임 정보는 움직임 벡터와 참조 픽처 인덱스를 포함할 수 있다. 상기 움직임 정보는 쌍예측(bi-prediction) 움직임 정보일 수 있고, 또는 단예측(uni-prediction) 움직임 정보일 수 있다. 상기 쌍예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터, L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있고, 상기 단예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터를 포함할 수 있고, 또는 L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있다. 상기 L0은 참조 픽처 리스트 L0(List 0)를 나타내고, 상기 L1은 참조 픽처 리스트 L1(List 1)를 나타낸다.
디코딩 장치는 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출한다(S1320). 디코딩 장치는 상기 움직임 정보에 포함된 참조 픽처 인덱스 및 움직임 벡터를 기반으로 상기 대상 블록의 예측 샘플을 생성할 수 있다.
디코딩 장치는 상기 예측 샘플을 기반으로 복원 블록을 생성한다(S1330). 상기 대상 블록에 스킵 모드가 적용되는 경우, 디코딩 장치는 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성할 수 있다. 상기 대상 블록에 머지 모드 또는 AMVP 모드가 적용되는 경우, 디코딩 장치는 상기 비트스트림을 통하여 대상 블록의 레지듀얼 신호를 획득할 수 있고, 상기 레지듀얼 신호 및 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성할 수 있다.
디코딩 장치는 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된 움직임 정보를 도출한다(S1340). 디코딩 장치는 다양한 방법을 통하여 상기 대상 블록의 상기 수정된 움직임 정보에 대한 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스 및 상기 특정 참조 픽처에 대한 수정된 움직임 벡터를 계산할 수 있다. 상기 수정된 움직임 정보는 제2 움직임 정보라고 불릴 수 있다. 상기 방법은 OF(optical flow) 방법, 블록 매칭(block-matching) 방법, 주파수 도메인(frequency domain) 방법 등의 직접적인 방법들, 및 특징점 정합 방법, 통계적 특성을 이용하는 방법 등의 간접적인 방법들 중 적어도 하나의 방법이 적용될 수 있다. 또한, 직접적인 방법과 간접적인 방법이 동시에 적용될 수도 있다.
예를 들어, 디코딩 장치는 상기 블록 매칭 방법을 통하여 상기 수정된 움직임 정보를 도출할 수 있다. 이 경우, 디코딩 장치는 상기 대상 블록의 복원 블록과 참조 블록과의 위상(phase)에 따른 샘플들간의 차분값들을 누적하여 왜곡의 정도를 측정하고, 이를 비용함수로 사용하여 상기 복원 블록의 특정 참조 블록을 검출할 수 있다. 디코딩 장치는 상기 검출된 특정 참조 블록을 기반으로 상기 수정된 움직임 정보를 도출할 수 있다. 다시 말해, 디코딩 장치는 상기 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스 및 상기 특정 참조 픽처에서 상기 특정 참조 블록을 가리키는 수정된 움직임 벡터를 포함하는 상기 수정된 움직임 정보를 도출할 수 있다. 디코딩 장치는 상기 특정 참조 픽처 내 참조 블록들 중 상기 대상 블록의 복원 블록과의 위상(phase)에 따른 샘플간의 차분값들의 절대값들(또는 제곱값들)의 합이 최소인 참조 블록을 상기 특정 참조 블록으로 검출할 수 있고, 상기 특정 참조 블록을 기반으로 상기 수정된 움직임 정보를 도출할 수 있다. 상기 차분값들의 절대값들의 합을 나타내는 방법으로 SAD(sum of absolute differences)가 사용될 수 있다. 이 경우 상기 차분값들의 절대값들의 합은 상술한 수학식 1을 적용하여 계산될 수 있다. 또한, 상기 차분값들의 제곱값들의 합을 나타내는 방법으로 MSE(mean squared error)가 사용될 수 있다. 이 경우 상기 차분값들의 제곱값들의 합은 상술한 수학식 2를 적용하여 계산될 수 있다.
또한, 상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처는 상기 (제1) 움직임 정보에 포함된 참조 픽처 인덱스가 가리키는 참조 픽처로 도출될 수 있고, 상기 특정 참조 블록을 검출하기 위한 탐색 영역은 상기 (제1) 움직임 정보에 포함된 상기 참조 픽처와 관련된 움직임 벡터를 기반으로 상기 특정 참조 픽처 내에서 도출되는 참조 블록으로부터 일정 영역 내에 위치하는 참조 블록들로 한정할 수 있다. 즉, 디코딩 장치는 상기 움직임 정보에 포함된 상기 참조 픽처와 관련된 움직임 벡터를 기반으로 상기 특정 참조 픽처 내에서 도출되는 참조 블록으로부터 일정 영역 내에 위치하는 참조 블록들 중 상기 복원 블록과의 SAD가 최소인 참조 블록을 상기 특정 참조 블록으로 도출할 수 있다.
또한, 상기 복원 블록의 사이즈가 기설정된 사이즈보다 큰 경우, 상기 복원 블록을 복수의 서브 복원 블록들로 분할하고, 상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처 내에서 상기 각 서브 복원 블록 단위로 특정 서브 참조 블록을 도출할 수 있다. 이 경우, 디코딩 장치는 상기 도출된 특정 서브 참조 블록들을 기반으로 상기 특정 참조 블록을 도출할 수 있다.
다른 예로, 디코딩 장치는 상기 OF 방법을 통하여 상기 수정된 움직임 정보를 도출할 수 있다. 이 경우, 디코딩 장치는 영상에서 상기 대상 블록에 포함된 객체의 속도가 일정하고 상기 객체를 나타내는 샘플들의 샘플값들은 변화하지 않는다는 가정을 기반으로 상기 대상 블록의 상기 수정된 움직임 정보에 대한 수정된 움직임 벡터를 계산할 수 있다. 상기 움직임 벡터는 상술한 수학식 6을 통하여 계산될 수 있다. 상기 대상 블록에 포함된 객체를 나타내는 샘플들의 영역은 3x3 사이즈의 영역으로 설정될 수 있다.
상술한 방법들을 통하여 상기 수정된 움직임 정보를 계산하는 경우, 디코딩 장치는 상기 수정된 움직임 정보를 상기 (제1) 움직임 정보와 동일한 형식을 갖도록 계산할 수 있다. 즉, 디코딩 장치는 상기 수정된 움직임 정보를 쌍예측(bi-prediction) 움직임 정보 및 단예측(uni-prediction) 움직임 정보 중 상기 움직임 정보와 동일한 형식을 갖도록 계산할 수 있다. 상기 쌍예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터, L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있고, 상기 단예측 움직임 정보는 L0 참조 픽처 인덱스 및 L0 움직임 벡터를 포함할 수 있고, 또는 L1 참조 픽처 인덱스 및 L1 움직임 벡터를 포함할 수 있다. 상기 L0은 참조 픽처 리스트 L0(List 0)를 나타내고, 상기 L1은 참조 픽처 리스트 L1(List 1)를 나타낸다.
또한, 상기 대상 블록이 포함된 대상 픽처에서 쌍예측이 수행 가능한 경우, 디코딩 장치는 상술한 방법을 통하여 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산할 수 있다. 다만 상기 수정된 움직임 정보가 상기 쌍예측 움직임 정보로 계산한 이후, 상기 쌍예측 움직임 정보로 도출되는 참조 블록들 중 하나에 가려진 영역(occlusion)이 발생하는 경우, 디코딩 장치는 상기 수정된 움직임 정보를 상기 가려진 영역이 발생한 특정 참조 블록이 포함된 특정 참조 픽처의 참조 픽처 리스트에 대한 움직임 정보를 제외한 단예측 움직임 정보로 도출할 수 있다. 상기 가려진 영역의 발생 여부는 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 복원 블록과의 위상(phase)에 따른 샘플들 간의 차분값이 특정의 임계값보다 크면 발생한 것으로 판단될 수 있다. 상기 임계값은 기설정될 수 있다.
예를 들어, 상기 디코딩 장치는 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산하고, 상기 수정된 움직임 정보의 L0 움직임 벡터 및 L0 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 디코딩 장치는 상기 수정된 움직임 정보를 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 포함하는 단예측 움직임 정보로 도출할 수 있다.
다른 예로, 상기 디코딩 장치는 상기 수정된 움직임 정보를 쌍예측 움직임 정보로 계산하고, 상기 수정된 움직임 정보의 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 디코딩 장치는 상기 수정된 움직임 정보를 L0 움직임 벡터 및 L0 참조 픽처 인덱스를 포함하는 단예측 움직임 정보로 도출할 수 있다.
또한, 상기 L0 움직임 벡터 및 상기 L0 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 크고, 상기 L1 움직임 벡터 및 상기 L1 참조 픽처 인덱스를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상에 따른 샘플들 간의 차분값이 상기 기설정된 임계값보다 큰 경우, 디코딩 장치는 상기 대상 블록의 주변 블록의 움직임 정보를 상기 수정된 움직임 정보로 도출할 수 있고, 또는 상기 수정된 움직임 정보를 계산하지 않을 수 있다.
한편, 디코딩 장치는 상기 수정된 움직임 정보에 포함된 수정된 참조 픽처 인덱스가 가리키는 특정 참조 픽처를 다양한 방법을 통하여 선택할 수 있다.
예를 들어, 디코딩 장치는 상기 참조 픽처 리스트 L0에 포함된 참조 픽처들 중 가장 최근에 디코딩된 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L0 참조 픽처 인덱스를 도출할 수 있다. 또한, 디코딩 장치는 상기 참조 픽처 리스트 L1에 포함된 참조 픽처들 중 가장 최근에 디코딩된 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L1 참조 픽처 인덱스를 도출할 수 있다.
다른 예로, 디코딩 장치는 상기 L0 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 픽처의 POC(picture order count)와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L0 참조 픽처 인덱스를 도출할 수 있다. 또한, 디코딩 장치는 상기 L1 참조 픽처 리스트에 포함된 참조 픽처들 중 상기 대상 픽처의 POC(picture order count)와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 L1 참조 픽처 인덱스를 도출할 수 있다.
다른 예로, 디코딩 장치는 상기 각 참조 픽처 리스트들에 포함된 참조 픽처들 중 계층 구조상 낮은 계층에 속하는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 도출할 수 있다. 상기 낮은 계층에 속하는 참조 픽처는 I-슬라이스(slice)일 수 있고, 또는 낮은 QP(quantization parameter)가 적용되어 디코딩된 참조 픽처일 수 있다.
다른 예로, 디코딩 장치는 상기 참조 픽처 리스트 중 움직임 보상의 신뢰도가 가장 높은 참조 블록을 포함하는 참조 픽처를 선택하고, 상기 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 도출할 수 있다. 다시 말해, 디코딩 장치는 상기 참조 픽처 리스트에 포함된 참조 픽처들을 기반으로 상기 대상 블록의 복원 블록의 특정 참조 블록을 도출하고, 상기 도출된 특정 참조 블록을 포함하는 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스를 도출할 수 있다.
상술한 상기 수정된 움직임 정보의 수정된 참조 픽처 인덱스를 생성하는 방법들은 독립적으로 적용될 수 있고, 또는 방법들을 복합적으로 적용하는 것도 가능할 수 있다.
한편, 디코딩 장치는 상기 비트스트림을 통하여 상기 대상 블록의 기존 움직임 벡터와 수정된 움직임 벡터 간의 차분을 나타내는 움직임 벡터 갱신 차분 정보를 획득할 수 있다. 이 경우, 디코딩 장치는 상기 대상 블록의 상기 (제1) 움직임 정보와 상기 움직임 벡터 갱신 차분 정보를 더하여 상기 수정된 움직임 정보를 도출할 수 있다. 상기 움직임 벡터 갱신 차분 정보는 상기 PU 단위로 전송될 수 있다.
디코딩 장치는 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신한다(S1350). 디코딩 장치는 상기 수정된 움직임 정보를 저장하고 상기 대상 블록의 상기 움직임 정보를 갱신할 수 있다. 디코딩 장치는 상기 대상 블록의 예측에 사용된 상기 움직임 정보를 상기 수정된 움직임 정보로 대체하여 상기 대상 블록의 상기 움직임 정보를 갱신할 수 있다. 또한, 디코딩 장치는 상기 대상 블록의 예측에 사용된 상기 움직임 정보 및 상기 수정된 움직임 정보를 모두 저장하여 상기 대상 블록의 움직임 정보를 갱신할 수 있다. 상기 갱신된 움직임 정보는 상기 대상 블록 주변의 다음 블록의 움직임 정보를 위하여 사용될 수 있다.
예를 들어, 상기 대상 블록 주변의 다음 블록에 머지 모드가 적용되는 경우, 상기 다음 블록의 머지 후보 리스트는 상기 대상 블록을 포함할 수 있고, 상기 대상 블록의 상기 갱신된 움직임 정보는 상기 수정된 움직임 정보를 포함할 수 있다. 상기 대상 블록의 움직임 정보가 대상 블록의 예측에 사용된 상기 움직임 정보에서 상기 수정된 움직임 정보로 대체되어 저장된 경우, 상기 다음 블록의 머지 후보 리스트는 상기 수정된 움직임 정보를 나타내는 대상 블록이 포함될 수 있다. 또한, 상기 대상 블록의 움직임 정보에 대상 블록의 예측에 사용된 상기 움직임 정보 및 상기 수정된 움직임 정보 모두 저장된 경우, 상기 다음 블록의 머지 후보 리스트는 상기 대상 블록의 예측에 사용된 상기 움직임 정보를 나타내는 대상 블록과 상기 수정된 움직임 정보를 나타내는 대상 블록이 포함될 수 있다. 상기 수정된 움직임 정보를 나타내는 대상 블록은 상기 머지 후보 리스트 중 공간적 주변 후보 블록으로 삽입될 수 있고, 또는 상기 머지 후보 리스트 중 시간적 주변 후보 블록으로 삽입될 수 있다.
다른 예로, 상기 대상 블록 주변의 다음 블록에 AMVP 모드가 적용되는 경우, 상술한 머지 모드에서 머지 후보 리스트에 상기 다음 블록 주변의 대상 블록의 갱신된 움직임 정보를 공간적 또는 시간적 주변 움직임 정보로 삽입하는 방법과 같이 상기 다음 블록의 움직임 벡터 예측자 후보 리스트에 상기 주변 블록의 갱신된 움직임 정보를 공간적 또는 시간적 움직임 벡터 예측자 후보로 삽입하는 방법이 적용될 수 있다. 즉, 디코딩 장치는 상기 다음 블록 주변의 대상 블록의 갱신된 움직임 정보를 포함하는 상기 움직임 벡터 예측자 후보 리스트를 생성할 수 있다.
예를 들어, 상기 다음 블록 주변의 대상 블록의 상기 갱신된 움직임 정보가 수정된 움직임 정보만을 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 수정된 움직임 정보를 상기 공간적 움직임 벡터 예측자 후보로 포함할 수 있다.
다른 예로, 상기 다음 블록 주변의 대상 블록의 상기 갱신된 움직임 정보가 수정된 움직임 정보 및 상기 대상 블록의 기존 움직임 정보를 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 다음 블록 주변의 대상 블록들의 기존 움직임 정보들 중 특정의 조건에 따라 선택된 기존 움직임 정보와 상기 다음 블록 주변의 대상 블록들의 상기 수정된 움직임 정보들 중 특정의 조건에 따라 선택된 수정된 움직임 정보를 각각 별도의 공간적 움직임 벡터 예측자 후보로 포함할 수 있다.
한편, 상기 다음 블록의 상기 움직임 벡터 예측자 후보 리스트는 상기 다음 블록의 참조 픽처 내 상기 다음 블록의 위치와 동일한 위치의 동일 위치 블록(collocated block)의 갱신된 움직임 정보 및 상기 동일 위치 블록의 주변 블록의 갱신된 움직임 정보를 시간적 움직임 벡터 예측자 후보로 포함할 수 있다. 예를 들어, 상기 다음 블록의 상기 동일 위치 블록의 갱신된 움직임 정보 및 상기 동일 위치 블록의 주변 블록의 갱신된 움직임 정보가 각 블록의 상기 수정된 움직임 정보만을 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 수정된 움직임 정보들을 상기 시간적 움직임 벡터 예측자 후보로 포함할 수 있다.
다른 예로, 상기 갱신된 움직임 정보들이 상기 동일 위치 블록 및 상기 동일 위치 블록의 상기 주변 블록 각각의 상기 수정된 움직임 정보 및 상기 동일 위치 블록의 기존 움직임 정보를 포함하는 경우, 상기 움직임 벡터 예측자 후보 리스트는 상기 기존 움직임 정보들 중 특정의 조건에 따라 선택된 기존 움직임 정보와 상기 수정된 움직임 정보들 중 특정의 조건에 따라 선택된 수정된 움직임 정보를 각각 별도의 시간적 움직임 벡터 예측자 후보로 포함할 수 있다.
한편, 저장되는 움직임 정보와 전송을 위한 움직임 정보는 서로 다른 해상도를 가질 수 있다. 예를 들어, 디코딩 장치가 상기 움직임 정보에 대한 정보를 디코딩하여 전송하고 상기 수정된 움직임 정보는 상기 대상 블록의 주변 블록의 움직임 정보를 위하여 저장하는 경우. 상기 움직임 정보에 포함된 움직임 벡터의 단위는 1/4 분수 샘플 단위를 나타낼 수 있고, 상기 수정된 움직임 정보에 포함된 움직임 벡터의 단위는 1/8 분수 샘플 단위 또는 1/16 분수 샘플 단위를 나타낼 수 있다.
한편, 비록 도시되지는 않았으나 디코딩 장치는 상기 대상 블록의 복원 블록을 기반으로 상기 (제1) 움직임 정보와 상기 수정된 움직임 정보와의 비교 과정을 수행하여 상기 대상 블록의 상기 (제1) 움직임 정보의 갱신 여부를 판단할 수 있다. 예를 들어, 디코딩 장치는 상기 수정된 움직임 정보를 기반으로 도출된 특정 참조 블록과 상기 대상 블록의 복원 블록과의 레지듀얼(residual) 신호의 데이터량과, 상기 움직임 정보를 기반으로 도출되는 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량을 비교하여 상기 대상 블록의 갱신 여부를 판단할 수 있다. 상기 데이터량들 중 상기 특정 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량이 더 작은 경우, 디코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하는 것으로 판단할 수 있다. 또한, 상기 데이터량들 중 상기 특정 참조 블록과 상기 복원 블록과의 레지듀얼 신호의 데이터량이 더 작지 않은 경우, 디코딩 장치는 상기 대상 블록의 움직임 정보를 갱신하지 않는 것으로 판단할 수 있다.
한편, 디코딩 장치는 상기 비트스트림을 통하여 상기 대상 블록의 갱신 여부를 나타내는 부가 정보를 획득할 수 있다. 예를 들어 상기 갱신 여부를 나타내는 부가 정보는 갱신 플래그라고 불릴 수 있다. 상기 갱신 플래그의 값이 1인 경우 상기 움직임 정보가 갱신됨을 나타낼 수 있고, 상기 갱신 플래그의 값이 0인 경우 상기 움직임 정보가 갱신되지 않음을 나타낼 수 있다. 예를 들어 상기 갱신 플래그는 PU 단위로 전송될 수 있다. 또는 상기 갱신 플래그는 CU 단위, CTU 단위, 슬라이스 단위로 전송될 수도 있고, PPS(picture parameter set) 단위 또는 SPS(sequence parameter set) 단위와 같은 상위 레벨을 통하여 전송될 수도 있다.
상술한 본 발명에 따르면 대상 블록의 디코딩 과정 이후에 상기 대상 블록의 수정된 움직임 정보를 계산하여 더욱 정확한 움직임 정보로 갱신할 수 있고, 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
또한, 본 발명에 따르면 갱신된 대상 블록의 움직임 정보를 기반으로 상기 대상 블록 주변의 다음 블록의 움직임 정보를 도출할 수 있어 왜곡의 전파를 줄일 수 있고, 이를 통하여 전체적인 코딩 효율을 향상시킬 수 있다.
상술한 실시예에서, 방법들은 일련의 단계 또는 블록으로써 순서도를 기초로 설명되고 있지만, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당업자라면 순서도에 나타내어진 단계들이 배타적이지 않고, 다른 단계가 포함되거나 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
상술한 본 발명에 따른 방법은 소프트웨어 형태로 구현될 수 있으며, 본 발명에 따른 인코딩 장치 및/또는 디코딩 장치는 예를 들어 TV, 컴퓨터, 스마트폰, 셋톱박스, 디스플레이 장치 등의 영상 처리를 수행하는 장치에 포함될 수 있다.
본 발명에서 실시예들이 소프트웨어로 구현될 때, 상술한 방법은 상술한 기능을 수행하는 모듈(과정, 기능 등)로 구현될 수 있다. 모듈은 메모리에 저장되고, 프로세서에 의해 실행될 수 있다. 메모리는 프로세서 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 프로세서는 ASIC(application-specific integrated circuit), 다른 칩셋, 논리 회로 및/또는 데이터 처리 장치를 포함할 수 있다. 메모리는 ROM(read-only memory), RAM(random access memory), 플래쉬 메모리, 메모리 카드, 저장 매체 및/또는 다른 저장 장치를 포함할 수 있다.
Claims (15)
- 디코딩 장치에 의하여 수행되는 영상 디코딩 방법에 있어서,
비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득하는 단계;
상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출하는 단계;
상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하는 단계;
상기 예측 샘플을 기반으로 복원 블록을 생성하는 단계;
상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 도출하는 단계; 및
상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신(update)하는 단계를 포함함을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 대상 블록의 상기 움직임 정보의 갱신 여부를 판단하는 단계를 더 포함하되,
상기 대상 블록의 상기 움직임 정보가 갱신되도록 판단된 경우, 상기 복원 블록을 기반으로 도출된 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 상기 움직임 정보를 갱신하는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 갱신된 움직임 정보는 상기 대상 블록 주변의 다음 블록의 움직임 정보 도출을 위하여 사용되는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 움직임 정보에 포함된 움직임 벡터의 단위가 1/4 분수 샘플 단위를 나타내는 경우, 상기 수정된 움직임 정보에 포함된 움직임 벡터의 단위는 1/8 분수 샘플 단위를 나타내는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 수정된 움직임 정보를 도출하는 단계는,
참조 픽처들 중에서 상기 수정된 움직임 정보에 대한 특정 참조 픽처를 도출하는 단계;
상기 특정 참조 픽처 내 참조 블록들 중 특정 참조 블록을 검출하는 단계; 및
상기 특정 참조 픽처를 가리키는 수정된 참조 픽처 인덱스 및 상기 특정 참조 블록을 가리키는 수정된 움직임 벡터를 포함하는 상기 수정된 움직임 정보를 도출하는 단계를 포함하는 것을 특징으로 하는 영상 디코딩 방법. - 제5항에 있어서,
상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처는 상기 움직임 정보에 포함된 참조 픽처 인덱스가 가리키는 참조 픽처로 도출되고,
상기 움직임 정보에 포함된 움직임 벡터를 기반으로 상기 특정 참조 픽처 내에서 도출되는 참조 블록으로부터 일정 영역 내에 포함되는 참조 블록들 중 상기 복원 블록의 SAD가 최소인 참조 블록이 상기 특정 참조 블록으로 도출되는 것을 특징으로 하는 영상 디코딩 방법. - 제5항에 있어서,
상기 특정 참조 블록을 도출하는 단계는,
상기 복원 블록의 사이즈가 기설정된 사이즈보다 큰 경우, 상기 복원 블록을 복수의 서브 복원 블록들로 분할하는 단계;
상기 수정된 움직임 정보에 대한 상기 특정 참조 픽처 내에서 상기 각 서브 복원 블록 단위로 특정 서브 참조 블록을 도출하는 단계;
상기 도출된 특정 서브 참조 블록들을 기반으로 상기 특정 참조 블록을 도출하는 단계를 포함하는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 대상 블록에 대한 수정된 움직임 정보는 상기 움직임 정보에 포함된 L0 움직임 벡터 및 L1 움직임 벡터에 기반하여 수행되는 OF(optical flow) 방법을 통하여 도출되는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 수정된 움직임 정보는 쌍예측(bi-prediction) 움직임 정보이되,
상기 쌍예측 움직임 정보는 L0 움직임 벡터 및 L0 참조 픽처 인덱스, 그리고 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 포함하는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서,
상기 수정된 움직임 정보의 L0 움직임 벡터 및 L0 참조 픽처 인덱스를 기반으로 도출되는 특정 참조 블록과 상기 대상 블록의 상기 복원 블록과의 위상(phase)에 따른 샘플들 간의 차분값이 기설정된 임계값보다 큰 경우, 상기 수정된 움직임 정보는 L1 움직임 벡터 및 L1 참조 픽처 인덱스를 포함하는 단예측(uni-prediction) 움직임 정보로 도출되는 것을 특징으로 하는 영상 디코딩 방법. - 제10항에 있어서,
상기 수정된 움직임 정보의 상기 L0 참조 픽처 인덱스는 참조 픽처 리스트 L0에 포함된 참조 픽처들 중 상기 대상 블록이 포함된 대상 픽처의 POC(picture order count)와의 차이의 절대값이 가장 작은 POC를 갖는 참조 픽처를 가리키고,
상기 수정된 움직임 정보의 상기 L1 참조 픽처 인덱스는 참조 픽처 리스트 L1에 포함된 참조 픽처들 중 상기 대상 블록이 포함된 대상 픽처의 POC(picture order count)와의 차이의 절대값이 작은 POC를 갖는 참조 픽처를 가리키는 것을 특징으로 하는 영상 디코딩 방법. - 제1항에 있어서.
상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보가 갱신되고 상기 대상 블록 주변의 다음 블록에 머지 모드가 적용되는 경우, 상기 다음 블록의 머지 후보 리스트는 상기 대상 블록을 포함하고,
상기 대상 블록의 상기 갱신된 움직임 정보는 상기 수정된 움직임 정보를 포함하는 것을 특징으로 하는 영상 디코딩 방법. - 영상 디코딩을 수행하는 디코딩 장치에 있어서,
비트스트림을 통하여 대상 블록의 인터 예측에 대한 정보를 획득하는 엔트로피 디코딩부;
상기 인터 예측에 대한 정보를 기반으로 상기 대상 블록의 움직임 정보를 도출하고, 상기 움직임 정보를 기반으로 상기 대상 블록에 대한 인터 예측을 수행하여 예측 샘플을 도출하고, 상기 예측 샘플을 기반으로 상기 대상 블록의 복원 블록을 생성하고, 상기 복원 블록을 기반으로 상기 대상 블록에 대한 수정된(modified) 움직임 정보를 도출하는 예측부; 및
상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신(update)하는 메모리를 포함하는 것을 특징으로 하는 디코딩 장치. - 제14항에 있어서,
상기 예측부는,
상기 복원 블록을 기반으로 상기 수정된 움직임 정보가 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보보다 더 정확한 움직임 정보인지 판단하고,
상기 메모리는 상기 수정된 움직임 정보가 상기 인터 예측에 대한 정보를 기반으로 도출된 움직임 정보보다 더 정확한 움직임 정보인 경우, 상기 수정된 움직임 정보를 기반으로 상기 대상 블록의 움직임 정보를 갱신하는 것을 특징으로 하는 디코딩 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020217035512A KR102414924B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2016/014167 WO2018105757A1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217035512A Division KR102414924B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190084271A true KR20190084271A (ko) | 2019-07-16 |
KR102322128B1 KR102322128B1 (ko) | 2021-11-04 |
Family
ID=62492214
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197016155A KR102322128B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
KR1020227021390A KR102572286B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
KR1020217035512A KR102414924B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
KR1020237028920A KR20230129582A (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227021390A KR102572286B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
KR1020217035512A KR102414924B1 (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
KR1020237028920A KR20230129582A (ko) | 2016-12-05 | 2016-12-05 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
Country Status (11)
Country | Link |
---|---|
US (3) | US10764598B2 (ko) |
EP (3) | EP3541073B1 (ko) |
KR (4) | KR102322128B1 (ko) |
CN (4) | CN116527886A (ko) |
DK (2) | DK3541073T3 (ko) |
ES (2) | ES2886871T3 (ko) |
HU (2) | HUE055198T2 (ko) |
PL (2) | PL3855745T3 (ko) |
PT (1) | PT3855745T (ko) |
SI (1) | SI3855745T1 (ko) |
WO (1) | WO2018105757A1 (ko) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117544786A (zh) * | 2017-08-29 | 2024-02-09 | 株式会社Kt | 视频解码和编码方法及用于存储压缩视频数据的装置 |
WO2019216325A1 (en) | 2018-05-09 | 2019-11-14 | Sharp Kabushiki Kaisha | Systems and methods for performing motion vector prediction using a derived set of motion vectors |
US10965951B2 (en) | 2018-06-22 | 2021-03-30 | Avago Technologies International Sales Pte. Limited | Memory latency management for decoder-side motion refinement |
EP3791588A1 (en) | 2018-06-29 | 2021-03-17 | Beijing Bytedance Network Technology Co. Ltd. | Checking order of motion candidates in lut |
WO2020003278A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Update of look up table: fifo, constrained fifo |
CN110662057B (zh) | 2018-06-29 | 2022-06-21 | 北京字节跳动网络技术有限公司 | 视频处理方法、装置、设备以及存储比特流的方法 |
JP7460617B2 (ja) | 2018-06-29 | 2024-04-02 | 北京字節跳動網絡技術有限公司 | Lut更新条件 |
EP3797516A1 (en) | 2018-06-29 | 2021-03-31 | Beijing Bytedance Network Technology Co. Ltd. | Interaction between lut and amvp |
KR20210024502A (ko) | 2018-06-29 | 2021-03-05 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | Hmvp 후보를 병합/amvp에 추가할 때의 부분/풀 프루닝 |
TWI723444B (zh) | 2018-06-29 | 2021-04-01 | 大陸商北京字節跳動網絡技術有限公司 | 使用一個或多個查找表來按順序存儲先前編碼的運動信息並使用它們來編碼後面的塊的概念 |
CN110662056B (zh) | 2018-06-29 | 2022-06-07 | 北京字节跳动网络技术有限公司 | 哪个查找表需要更新或不更新 |
EP4307679A3 (en) | 2018-07-02 | 2024-06-19 | Beijing Bytedance Network Technology Co., Ltd. | Luts with intra prediction modes and intra mode prediction from non-adjacent blocks |
CN112369030B (zh) * | 2018-07-06 | 2023-11-10 | 寰发股份有限公司 | 解码器的视频解码方法及装置 |
US11838514B2 (en) * | 2018-08-06 | 2023-12-05 | Electronics And Telecommunications Research Institute | Image encoding/decoding method and device, and recording medium storing bitstream |
TW202025760A (zh) | 2018-09-12 | 2020-07-01 | 大陸商北京字節跳動網絡技術有限公司 | 要檢查多少個hmvp候選 |
WO2020060177A1 (ko) * | 2018-09-18 | 2020-03-26 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
GB2577318B (en) | 2018-09-21 | 2021-03-10 | Canon Kk | Video coding and decoding |
GB2579763B (en) * | 2018-09-21 | 2021-06-09 | Canon Kk | Video coding and decoding |
GB2578150C (en) | 2018-10-18 | 2022-05-18 | Canon Kk | Video coding and decoding |
WO2020122640A1 (ko) | 2018-12-12 | 2020-06-18 | 엘지전자 주식회사 | 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치 |
CN113273186A (zh) | 2019-01-10 | 2021-08-17 | 北京字节跳动网络技术有限公司 | Lut更新的调用 |
CN113383554B (zh) | 2019-01-13 | 2022-12-16 | 北京字节跳动网络技术有限公司 | LUT和共享Merge列表之间的交互 |
CN113302937B (zh) | 2019-01-16 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 运动候选推导 |
CN113615193B (zh) | 2019-03-22 | 2024-06-25 | 北京字节跳动网络技术有限公司 | Merge列表构建和其他工具之间的交互 |
CN114667735B (zh) * | 2019-09-25 | 2024-09-10 | Lg电子株式会社 | 基于变换的图像编译方法及其设备 |
CN112995669B (zh) * | 2021-04-27 | 2021-08-03 | 浙江华创视讯科技有限公司 | 一种帧间预测方法、装置、电子设备及存储介质 |
US20230113104A1 (en) * | 2021-10-11 | 2023-04-13 | Tencent America LLC | On intra mode propagation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015149698A1 (en) * | 2014-04-01 | 2015-10-08 | Mediatek Inc. | Method of motion information coding |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100860690B1 (ko) * | 2007-01-26 | 2008-09-26 | 삼성전자주식회사 | 외부 메모리 액세스를 최소화하는 움직임 탐색 방법 및장치 |
KR100939917B1 (ko) * | 2008-03-07 | 2010-02-03 | 에스케이 텔레콤주식회사 | 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법 |
CN103039075B (zh) * | 2010-05-21 | 2015-11-25 | Jvc建伍株式会社 | 图像编码装置、图像编码方法、以及图像解码装置、图像解码方法 |
EP2716047A4 (en) * | 2011-10-19 | 2015-03-18 | Mediatek Inc | METHOD AND DEVICE FOR DERIVING MOTION VECTOR PREVIEW CANDIDATE SETS |
TWI569634B (zh) * | 2011-10-31 | 2017-02-01 | Jvc Kenwood Corp | Dynamic image decoding device, dynamic image decoding method and dynamic image decoding program |
KR101934277B1 (ko) * | 2011-11-28 | 2019-01-04 | 에스케이텔레콤 주식회사 | 개선된 머지를 이용한 영상 부호화/복호화 방법 및 장치 |
US20130188716A1 (en) * | 2012-01-20 | 2013-07-25 | Qualcomm Incorporated | Temporal motion vector predictor candidate |
US9426498B2 (en) * | 2012-07-10 | 2016-08-23 | Broadcom Corporation | Real-time encoding system of multiple spatially scaled video based on shared video coding information |
US9124899B2 (en) * | 2012-09-28 | 2015-09-01 | Sharp Laboratories Of America, Inc. | Motion derivation and coding for scaling video |
US9800857B2 (en) * | 2013-03-08 | 2017-10-24 | Qualcomm Incorporated | Inter-view residual prediction in multi-view or 3-dimensional video coding |
US20140301463A1 (en) * | 2013-04-05 | 2014-10-09 | Nokia Corporation | Method and apparatus for video coding and decoding |
US9930363B2 (en) * | 2013-04-12 | 2018-03-27 | Nokia Technologies Oy | Harmonized inter-view and view synthesis prediction for 3D video coding |
JP6145002B2 (ja) * | 2013-09-02 | 2017-06-07 | 株式会社日立ハイテクノロジーズ | 自動分析装置 |
US10531116B2 (en) * | 2014-01-09 | 2020-01-07 | Qualcomm Incorporated | Adaptive motion vector resolution signaling for video coding |
US10484721B2 (en) * | 2014-03-17 | 2019-11-19 | Qualcomm Incorporated | Method for motion estimation of non-natural video data |
KR101590493B1 (ko) * | 2014-06-12 | 2016-02-02 | 에스케이텔레콤 주식회사 | 인터 예측을 이용한 영상 부호화 및 복호화 방법과 장치 |
US10200711B2 (en) * | 2015-03-27 | 2019-02-05 | Qualcomm Incorporated | Motion vector derivation in video coding |
CN105149698B (zh) | 2015-08-19 | 2017-04-19 | 天津市达鑫精密机械设备有限公司 | 一种汽车同步器齿套双面倒角连续加工系统 |
KR20180085714A (ko) * | 2015-12-17 | 2018-07-27 | 삼성전자주식회사 | 머지 후보 리스트를 이용한 비디오 복호화 방법 및 비디오 복호화 장치 |
KR101691553B1 (ko) * | 2016-02-24 | 2016-12-30 | 삼성전자주식회사 | 영상 복호화 방법 및 장치 |
-
2016
- 2016-12-05 US US16/465,895 patent/US10764598B2/en active Active
- 2016-12-05 CN CN202310708056.1A patent/CN116527886A/zh active Pending
- 2016-12-05 WO PCT/KR2016/014167 patent/WO2018105757A1/ko unknown
- 2016-12-05 EP EP16923451.5A patent/EP3541073B1/en active Active
- 2016-12-05 DK DK16923451.5T patent/DK3541073T3/da active
- 2016-12-05 KR KR1020197016155A patent/KR102322128B1/ko active IP Right Grant
- 2016-12-05 CN CN201680091905.1A patent/CN110121883B/zh active Active
- 2016-12-05 EP EP21163358.1A patent/EP3855745B1/en active Active
- 2016-12-05 DK DK21163358.1T patent/DK3855745T3/da active
- 2016-12-05 PL PL21163358.1T patent/PL3855745T3/pl unknown
- 2016-12-05 PT PT211633581T patent/PT3855745T/pt unknown
- 2016-12-05 HU HUE16923451A patent/HUE055198T2/hu unknown
- 2016-12-05 CN CN202310703397.XA patent/CN116527884A/zh active Pending
- 2016-12-05 EP EP22175536.6A patent/EP4090025A1/en active Pending
- 2016-12-05 SI SI201631609T patent/SI3855745T1/sl unknown
- 2016-12-05 CN CN202310707482.3A patent/CN116527885A/zh active Pending
- 2016-12-05 KR KR1020227021390A patent/KR102572286B1/ko active IP Right Grant
- 2016-12-05 KR KR1020217035512A patent/KR102414924B1/ko active IP Right Grant
- 2016-12-05 ES ES16923451T patent/ES2886871T3/es active Active
- 2016-12-05 KR KR1020237028920A patent/KR20230129582A/ko not_active Application Discontinuation
- 2016-12-05 PL PL16923451T patent/PL3541073T3/pl unknown
- 2016-12-05 HU HUE21163358A patent/HUE059684T2/hu unknown
- 2016-12-05 ES ES21163358T patent/ES2927560T3/es active Active
-
2020
- 2020-08-04 US US16/985,118 patent/US11363289B2/en active Active
-
2022
- 2022-05-02 US US17/734,959 patent/US12096020B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015149698A1 (en) * | 2014-04-01 | 2015-10-08 | Mediatek Inc. | Method of motion information coding |
Non-Patent Citations (2)
Title |
---|
J. Chen et al.,"Algorithm Description of Joint Exploration Test Model 4",JVET-D1001-v2,2016.11.19.* * |
Xu Chen et al.,"Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching",JVET-D0029r1,2016.10.08.* * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102572286B1 (ko) | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 | |
US10856006B2 (en) | Method and system using overlapped search space for bi-predictive motion vector refinement | |
US12034964B2 (en) | Selective application of decoder side refining tools | |
KR20180129860A (ko) | 영상 코딩 시스템에서 인터 예측 방법 및 장치 | |
US20220295090A1 (en) | Motion candidate derivation | |
US11936899B2 (en) | Methods and systems for motion candidate derivation | |
US11671616B2 (en) | Motion candidate derivation | |
WO2020016857A1 (en) | Motion prediction based on updated motion vectors | |
US20240357157A1 (en) | Selective application of decoder side refining tools | |
US20240236318A9 (en) | Recursive prediction unit in video coding | |
WO2024175831A1 (en) | A method, an apparatus and a computer program product for video encoding and decoding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |