KR102620024B1 - 아핀 모션 모델을 기반으로 한 모션 벡터 예측 방법 및 디바이스 - Google Patents
아핀 모션 모델을 기반으로 한 모션 벡터 예측 방법 및 디바이스 Download PDFInfo
- Publication number
- KR102620024B1 KR102620024B1 KR1020217010006A KR20217010006A KR102620024B1 KR 102620024 B1 KR102620024 B1 KR 102620024B1 KR 1020217010006 A KR1020217010006 A KR 1020217010006A KR 20217010006 A KR20217010006 A KR 20217010006A KR 102620024 B1 KR102620024 B1 KR 102620024B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- processed
- picture block
- motion vector
- picture
- Prior art date
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 1133
- 239000013598 vector Substances 0.000 title claims abstract description 716
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 title claims abstract description 424
- 238000000034 method Methods 0.000 title claims abstract description 186
- 230000015654 memory Effects 0.000 claims description 71
- 238000004364 calculation method Methods 0.000 claims description 64
- 238000012545 processing Methods 0.000 description 69
- 238000013139 quantization Methods 0.000 description 61
- 238000004891 communication Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 29
- 238000003860 storage Methods 0.000 description 26
- 238000000638 solvent extraction Methods 0.000 description 24
- 230000006870 function Effects 0.000 description 23
- 238000009795 derivation Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 19
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 13
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000002441 reversible effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000013138 pruning Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- NAWXUBYGYWOOIX-SFHVURJKSA-N (2s)-2-[[4-[2-(2,4-diaminoquinazolin-6-yl)ethyl]benzoyl]amino]-4-methylidenepentanedioic acid Chemical compound C1=CC2=NC(N)=NC(N)=C2C=C1CCC1=CC=C(C(=O)N[C@@H](CC(=C)C(O)=O)C(O)=O)C=C1 NAWXUBYGYWOOIX-SFHVURJKSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/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/527—Global motion vector estimation
-
- 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/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/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/146—Data rate or code amount at the encoder output
- H04N19/149—Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 출원은 아핀 모션 모델 및 디바이스에 기반한 모션 벡터 예측 방법을 개시한다. 이 방법은, 처리될 픽처 블록(to-be-processed picture block)의 하나의 공간 참조 블록을 획득하는 단계; 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하는 단계; 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계; 및 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함한다. 본 출원에 따라, 코딩시 예측 정확도가 향상될 수 있고, 코딩 효율이 향상될 수 있다.
Description
본 발명은 비디오 코딩 분야에 관한 것으로, 특히 아핀 모션 모델(affine motion model)에 기반한 모션 벡터 예측 방법 및 디바이스에 관한 것이다.
비디오 코딩(비디오 인코딩 및 디코딩)은 광범위한 디지털 애플리케이션들, 예를 들어, 브로드캐스트 디지털 TV, 인터넷 및 모바일 네트워크들을 통한 비디오 전송, 화상 채팅 및 화상 회의와 같은 실시간 대화 애플리케이션들, DVD 및 블루-레이 디스크(Blu-ray disc)들, 비디오 콘텐츠 수집 및 편집 시스템들 및 캠코더들 보안 애플리케이션들에 적용된다.
1990년에 H.261 표준에서 블록-기반 하이브리드 비디오 코딩 방법이 개발로, 새로운 비디오 코딩 기술들 및 툴들이 개발되어 새로운 비디오 코딩 표준들의 기반을 형성했다. 다른 비디오 코딩 표준들은, MPEG-1 비디오, MPEG-2 비디오, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4 파트 10: 고급 비디오 코딩(Advanced Video Coding, AVC), ITU-T H.265/고효율 비디오 코딩(High Efficiency Video Coding, HEVC), 및 확장들, 예를 들어, 이러한 표준들의 확장성(scalability) 및/또는 3D(three-dimensional) 확장들을 포함한다. 비디오 제작 및 사용이 점점 더 널리 보급됨에 따라, 비디오 트래픽은 통신 네트워크들 및 데이터 저장에 가장 큰 부담이되었다. 따라서, 이전의 표준들과 비교할 때, 대부분의 비디오 코딩 표준의 목표들 중 하나는, 화질(picture quality) 희생없이 비트 레이트(bit rate)를 감소시키는 것이다. 최신 고효율 비디오 코딩(High Efficiency video coding, HEVC)은 화질 희생없이 AVC보다 약 두 배의 비디오 압축률을 달성할 수 있지만, HEVC와 비교하여 비디오 압축을 더욱 향상시키기 위한 새로운 기술이 여전히 시급히 필요하다.
본 발명의 실시예들은, 비디오 코딩의 예측 정확도를 향상시키고 코딩 효율을 향상시키기 위해, 아핀 모션 모델 및 디바이스에 기반한 모션 벡터 예측 방법을 제공한다.
제1 측면에 따라, 본 발명은 아핀 모션 모델에 기반한 모션 벡터 예측 방법을 제공한다. 방법은 인코더 측 또는 디코더 측의 관점에서 설명되며, 방법은 처리될 픽처 블록(to-be-processed picture block)의 하나의 공간 참조 블록을 획득하는 단계를 포함하며, 여기서, 처리될 픽처 블록은 비디오 픽처를 파티셔닝(partitioning)함으로써 획득되고, 공간 참조 블록은 처리될 픽처 블록에 공간적으로 이웃하는 디코딩된 블록이다. 인코더 측에서, 처리될 픽처 블록은 현재 아핀 인코딩 블록(아핀 코딩 블록)이고, 공간 참조 블록은 이웃하는 아핀 인코딩 블록(아핀 코딩 블록)이다. 디코더 측에서, 처리될 픽처 블록은 현재 아핀 디코딩 블록(아핀 코딩 블록)이고, 공간 참조 블록은 이웃하는 아핀 디코딩 블록(아핀 코딩 블록)이다. 설명의 편의를 위해, 처리될 픽처 블록은 일반적으로 현재 블록으로 지칭될 수 있고, 공간 참조 블록은 일반적으로 이웃하는 블록으로 지칭될 수 있다. 그리고, 공간 참조 블록의 2개 이상의 서브블록들의 미리 설정된 서브블록 위치들이 결정된다. 각각의 서브블록은 대응하는 미리 설정된 서브블록 위치를 가지며, 미리 설정된 서브블록 위치는, 코딩 동안 서브블록의 모션 벡터를 계산하는 데 사용되는 위치와 일치한다. 구체적으로, 이웃하는 아핀 코딩 블록의 서브블록에 대해, 서브블록 내의 미리 설정된 위치에 있는 픽셀의 모션 벡터가 서브블록 내의 모든 픽셀들의 모션 벡터들을 표현하는 데 사용된다. 이후에, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들이 공간 참조 블록의 2개 이상의 서브블록들의 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되고(extrapolated), 여기서 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 제어 포인트들이다. 그런 다음, 현재 블록의 아핀 모션 모델이 현재 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 기반으로 형성되고, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들이 내삽된다(interpolated).
복수의 서브블록 위치들에 대응하는 내삽된 모션 벡터들이 복수의 서브블록들을 예측하기 위해 개별로 사용된다.
본 발명의 실시예들에 따라, 현재 블록의 제어 포인트들의 모션 벡터들이, 이웃하는 블록의 제어 포인트들의 모션 벡터들을 사용하는 대신, 이웃하는 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출된 다음, 현재 블록의 서브블록들의 모션 벡터들이 제어 포인트들의 모션 벡터들에 기반하여 도출된다는 것을 알 수 있다. 현재 블록의 제어 포인트들의 모션 벡터들은 이후에 저장될 필요가 없다. 구체적으로, 현재 블록의 제어 포인트들의 모션 벡터들은 오직 현재 코딩 블록의 서브블록들의 모션 벡터들을 도출하기 위해서만 사용되며, 이웃하는 블록의 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록들의 모션 벡터들만 저장하면 되고, 서브블록들의 모션 벡터들을 사용함으로써 모션 보상이 수행된다. 이는, 모션 벡터 저장 문제를 해결하고, 다른 서브블록에 사용되는 것과 일치하지 않는 모션 벡터가 제어 포인트들이 위치된 서브블록에 대한 모션 보상을 수행하는 데 이용되는 경우를 회피하며, 따라서 예측 정확도가 향상된다.
제1 측면에 기반하여, 가능한 구현에서, 공간 참조 블록 내의 2개의 서브블록들이 결정될 수 있고, 2개의 서브블록들에 대응하는 2개의 미리 설정된 서브블록 위치들 간의 거리는 S이고, 여기서 S는 2의 K 제곱이고, K는 음이 아닌 정수이다. 이는, 후속 모션 벡터 도출을 시프트 방식으로 구현하는 것을 도울 수 있고, 따라서 구현 복잡성이 감소된다.
제1 측면에 기반하여, 가능한 구현에서, 미리 설정된 서브블록 위치는 서브블록의 상단-좌측 픽셀의 위치, 서브블록의 기하학적 중심의 위치, 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치, 서브블록의 상단-우측 픽셀의 위치 등일 수 있다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성이 미리 설정된 순서로 결정될 수 있고, 그런 다음, 미리 설정된 순서의 제1 이용가능한 후보 참조 블록이 획득되어 공간 참조 블록으로서 사용된다. 미리 설정된 공간 위치들에 있는 후보 참조 블록들은, 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함한다. 예를 들어, 후보 참조 블록들의 이용가능성은, 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 → 바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 →하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로 연속적으로 체크된다.
구체적으로, 후보 참조 블록이 이용가능한지 여부는 다음의 방법에 따라 결정될 수 있다: 후보 참조 블록 및 처리될 픽처 블록이 동일한 픽처 영역에 있고 후보 참조 블록이 아핀 모션 모델에 기반하여 코딩되는 경우, 후보 참조 블록은 이용가능한 것으로 결정된다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 공간 참조 블록의 폭이다. 이는, 후속 모션 벡터 도출을 시프트 방식으로 구현하는 것을 도울 수 있고, 따라서 구현 복잡성이 감소된다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, Q는 2의 R 제곱이고, R은 음이 아닌 정수이고, Q는 V보다 작고, 그리고 V는 공간 참조 블록의 높이이다. 이는, 후속 모션 벡터 도출을 시프트 방식으로 구현하는 것을 돕고, 따라서 구현 복잡성이 감소된다.
예에서, 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 모델이면, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2), 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2), 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, Q는 2의 R 제곱이고, K 및 R은 음이 아닌 정수들이고, P는 U보다 작고, Q는 V보다 작고, U는 공간 참조 블록의 폭이고, 그리고 V는 공간 참조 블록의 높이이다. 이는, 후속 모션 벡터 도출을 시프트 방식으로 구현하는 것을 돕고, 따라서 구현 복잡성이 감소된다.
다른 예로, 현재 블록의 상단 경계가 현재 블록을 포함하는 CTU(Coding Tree Unit)의 상단 경계와과 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 위에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 상단-우측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 현재 블록의 상단 경계에 인접한다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 좌측 경계가 현재 블록을 포함하는 CTU(coding tree unit)의 좌측 경계와 일치하고 그리고 공간 참조 블록이 현재 블록 바로 좌측에, 현재 블록의 상단-좌측에 또는 현재 블록의 하단-좌측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 현재 블록의 좌측 경계에 인접한다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 후보 제어 포인트 모션 벡터는 개선된 상속 제어 포인트 모션 벡터 예측 방법(improved inherited control point motion vector prediction method)을 사용함으로써 결정된다. 구체적으로, 현재 블록의 미리 설정된 픽셀 위치들의 모션 벡터들은, 이웃하는 아핀 코딩 블록(또는 이웃하는 아핀 디코딩 블록)의 적어도 2개의 서브블록들의 모션 벡터들로부터 외삽된다. 미리 설정된 픽셀 위치들은 현재 블록의 제어 포인트들이다. 예를 들어, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 현재 블록에서 상단-좌측 픽셀과 상단-우측 픽셀일 수 있다. 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 현재 블록에서 상단-좌측 픽셀, 상단-우측 픽셀, 및 하단-좌측 픽셀일 수 있다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치 및 처리될 픽처 블록의 하단-좌측 픽셀 위치 중 적어도 2개를 포함할 수 있고, 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함한다.
여기서 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치 및 처리될 픽처 블록의 하단-좌측 픽셀 위치를 포함할 수 있고, 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함한다.
여기서, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 사전설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 은 제3 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 은 제3 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 각각의 서브블록에 대해(하나의 서브블록은 하나의 모션 보상 유닛과 동등할 수 있으며, 서브블록의 폭 및 높이는 현재 블록의 폭 및 높이보다 작음), 모션 보상 유닛의 미리 설정된 위치에 있는 픽셀의 모션 정보는 모션 보상 유닛의 모든 픽셀들의 모션 정보를 표현하는 데 사용될 수 있다. 모션 보상 유닛의 크기가 M x N이고, 미리 설정된 위치의 픽셀은 중앙 픽셀(M/2, N/2), 상단-좌측 픽셀(0, 0), 상단-우측 픽셀(M-1, 0) 또는 모션 보상 유닛의 다른 위치에 있는 픽셀일 수 있다는 것이 가정된다. 이 경우, 현재 블록의 각각의 서브블록의 모션 벡터는 현재 블록의 제어 포인트 모션 정보 및 현재 사용되는 아핀 모션 모델을 기반으로 획득될 수 있으며, 이후에, 서브블록의 예측된 픽셀 값을 획득하기 위해 모션 보상이 서브블록의 모션 벡터를 기반으로 수행될 수 있다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 상단-좌측 픽셀 위치 및 처리될 픽처 블록의 상단-우측 픽셀 위치를 포함하고, 그리고 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식:
에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함한다.
여기서, W는 처리될 픽처 블록의 폭이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
제1 측면에 기반하여, 가능한 구현에서, 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 블록이면, 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식:
에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함한다.
여기서, W는 처리될 픽처 블록의 폭이고, H는 처리될 픽처 블록의 높이이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
제2 측면에 따라, 본 발명의 실시예는 디바이스를 제공한다. 디바이스는, 비디오 데이터에서 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하도록 구성된 참조 블록 획득 모듈; 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하도록 구성된 서브블록 결정 모듈; 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된 제1 계산 모듈; 및 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된 제2 계산 모듈을 포함한다.
특정 실시예에서, 디바이스의 모듈들은 제1 측면에서 설명된 방법을 구현하도록 구성될 수 있다.
제3 측면에 따라, 본 발명의 실시예는 비디오 디코딩 디바이스를 제공한다. 디바이스는,
비디오 데이터를 비트스트림 형태로 저장하도록 구성된 메모리; 및
디코더를 포함하며, 디코더는, 비디오 데이터에서 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하고; 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하고; 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하고; 그리고 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성되고, 여기서, 복수의 서브블록 위치들에 대응하는 내삽된 모션 벡터들은 복수의 서브블록들을 예측하기 위해 개별로 사용된다.
제3 측면에 기반하여, 가능한 실시예에서, 디코더는 구체적으로: 미리 설정된 순서로, 처리될 픽처 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성을 결정하고; 그리고 미리 설정된 순서로 제1 이용가능한 후보 참조 블록을 획득하도록 구성되고, 제1 이용가능한 후보 참조 블록이 공간 참조 블록으로서 사용된다.
제3 측면에 기반하여, 가능한 실시예에서, 후보 참조 블록 및 처리될 픽처 블록이 동일한 픽처 영역에 있고 후보 참조 블록이 아핀 모션 모델에 기반하여 코딩되는 경우, 후보 참조 블록은 이용가능한 것으로 결정된다.
제3 측면에 기반하여, 가능한 실시예에서, 미리 설정된 공간 위치들에 있는 후보 참조 블록들은, 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함한다.
디코더는 구체적으로, 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 → 바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 → 하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로, 후보 참조 블록들의 이용가능성을 연속적으로 체크하도록 구성된다.
상기 공간 참조 블록 또는 상기 처리될 픽처 블록의 서브블록 위치는 서브블록의 상단-좌측 픽셀의 위치; 서브블록의 기하학적 중심의 위치; 또는 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치를 포함한다.
제3 측면에 기반하여, 가능한 실시예에서, 복수의 미리 설정된 서브블록 위치들 중 2개의 서브블록 위치들 간의 거리는 S이고, S는 2의 K 제곱이고, 그리고 K는 음이 아닌 정수이다.
제3 측면에 기반하여, 가능한 구현에서, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 공간 참조 블록의 폭이다.
제3 측면에 기반하여, 가능한 실시예의, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, Q는 2의 R 제곱이고, R은 음이 아닌 정수이고, Q는 V보다 작고, 그리고 V는 공간 참조 블록의 높이이다.
제3 측면에 기반하여, 가능한 실시예에서, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 미리 설정된 픽셀 위치들은 적어도 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치, 처리될 픽처 블록의 하단-좌측 픽셀 위치를 포함하고, 디코더는 구체적으로, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
제3 측면에 기반하여, 가능한 실시예에서, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 상단-좌측 픽셀 위치 및 처리될 픽처 블록의 상단-우측 픽셀 위치를 포함하고, 디코더는 구체적으로, 다음 공식:
에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, W는 처리될 픽처 블록의 폭이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
제3 측면에 기반하여, 가능한 구현에서, 아핀 모션 모델은 6-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2), 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2), 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, Q는 2의 R 제곱이고, K 및 R은 음이 아닌 정수들이고, P는 U보다 작고, Q는 V보다 작고, U는 공간 참조 블록의 폭이고, 그리고 V는 공간 참조 블록의 높이이다.
제3 측면에 기반하여, 가능한 실시예에서, 아핀 모션 모델은 6-파라미터 아핀 모션 모델이고, 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치 및 처리될 픽처 블록의 하단-좌측 픽셀 위치를 포함하고, 그리고 디코더는 구체적으로, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 은 제3 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 은 제3 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
제3 측면에 기반하여, 가능한 실시예에서, 아핀 모션 모델은 6-파라미터 아핀 모션 모델이고, 디코더는 구체적으로, 다음 공식:
에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, W는 처리될 픽처 블록의 폭이고, H는 처리될 픽처 블록의 높이이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
제3 측면에 기반하여, 가능한 실시예에서, 처리될 픽처 블록의 상단 경계가 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 상단 경계와 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 위에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 상단-우측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 처리될 픽처 블록의 상단 경계에 인접한다.
제3 측면에 기반하여, 가능한 실시예에서, 처리될 픽처 블록의 좌측 경계가 처리될 픽처 블록을 포함하는 CTU(Coding Tree Unit)의 좌측 경계와 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 좌측에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 하단-좌측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 처리될 픽처 블록의 좌측 경계에 인접한다.
본 발명의 제1 측면에서 설명된 방법은 본 발명의 제3 측면에 따른 디바이스에 의해 수행될 수 있다. 본 발명의 제1 측면에 따른 방법의 다른 특징들 및 구현들은 본 발명의 제3 측면에 따른 디바이스의 기능들 및 상이한 구현들에 직접적으로 의존한다.
제4 측면에 따라, 본 발명의 실시예는 비디오 인코딩 디바이스를 제공한다. 디바이스는:
비디오 데이터를 비트스트림 형태로 저장하도록 구성된 메모리; 및
인코더를 포함하며, 인코더는, 비디오 데이터에서 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하고; 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하고; 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하고; 그리고 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성되고, 여기서, 복수의 서브블록 위치들에 대응하는 내삽된 모션 벡터들은 복수의 서브블록들을 예측하기 위해 개별로 사용된다.
인코더의 특정 기능 구현에 대해서는, 제3 측면에 설명된 디코더의 기능 설명을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
본 발명의 제1 측면에 따른 방법은 본 발명의 제4 측면에서 설명된 디바이스에 의해 수행될 수 있다. 본 발명의 제1 측면에 따른 방법의 다른 특징들 및 구현들은 본 발명의 제4 측면에 따른 디바이스의 기능들 및 상이한 구현들에 직접적으로 의존한다.
제5 측면에 따라, 본 발명은, 프로세서 및 메모리를 포함하는 비디오 스트림 디코딩 장치에 관한 것이다. 메모리는 명령을 저장하고, 명령은 프로세서가 제1 측면에 따른 방법을 수행할 수 있게 한다.
제6 측면에 따라, 본 발명의 실시예는 프로세서 및 메모리를 포함하는 비디오 스트림 디코딩 장치를 제공한다. 메모리는 명령을 저장하고, 명령은 프로세서가 제1 측면에 따른 방법을 수행할 수 있게 한다.
제7 측면에 따라, 본 발명의 실시예는 프로세서 및 메모리를 포함하는 비디오 스트림 인코딩 장치를 제공한다. 메모리는 명령을 저장하고, 명령은 프로세서가 제1 측면에 따른 방법을 수행할 수 있게 한다.
제8 측면에 따라, 본 발명의 실시예는 컴퓨터-판독가능 저장 매체를 제공한다. 컴퓨터-판독가능 저장 매체는 명령을 저장하고, 명령이 실행될 때, 하나 이상의 프로세서들이 비디오 데이터를 인코딩할 수 있다. 명령은 하나 이상의 프로세서들이 제1 측면의 임의의 가능한 실시예에서 설명된 방법을 수행할 수 있게 한다.
제9 측면에 따라, 본 발명의 실시예는 프로그램 코드를 포함하는 컴퓨터 프로그램을 제공한다. 프로그램 코드가 컴퓨터에서 실행될 때, 제1 측면의 임의의 가능한 실시예에서 설명된 방법이 수행된다.
본 발명의 실시예에서 개선된 상속 제어 포인트 모션 벡터 예측 방법이 사용됨을 알 수 있다. 개선된 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 제어 포인트들의 모션 벡터들이, 이웃하는 블록의 제어 포인트들의 모션 벡터들을 사용하는 대신, 이웃하는 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출된 다음, 현재 블록의 서브블록들의 모션 벡터들이 제어 포인트들의 모션 벡터들에 기반하여 도출되고, 현재 블록에 대한 예측이 모션 보상을 통해 구현된다는 것을 알 수 있다. 현재 블록의 제어 포인트들의 모션 벡터들은 이후에 저장될 필요가 없다. 구체적으로, 현재 블록의 제어 포인트들의 모션 벡터들은 오직 현재 코딩 블록의 서브블록들의 모션 벡터들을 도출하기 위해서만 사용되며, 이웃하는 블록의 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록들의 모션 벡터들만 저장하면 되고, 서브블록들의 모션 벡터들을 사용함으로써 모션 보상이 수행된다. 이는, 모션 벡터 저장 문제를 해결하고, 다른 서브블록에 사용되는 것과 일치하지 않는 모션 벡터가 제어 포인트들이 위치된 서브블록에 대한 모션 보상을 수행하는 데 이용되는 경우를 회피하며, 따라서 예측 정확도가 향상된다.
본 발명의 실시예 또는 배경에서 기술적 솔루션들을 보다 명확하게 설명하기 위해, 이하에서는 본 발명의 실시예들 또는 배경을 설명하기 위한 첨부 도면을 설명한다.
도 1a는 본 발명의 실시예를 구현하기 위한 비디오 인코딩 및 디코딩 시스템(10)의 예의 블록도이다;
도 1b는 본 발명의 실시예를 구현하기 위한 비디오 코딩 시스템(40)의 예의 블록도이다;
도 2는 본 발명의 실시예를 구현하기 위한 인코더(20)의 예시적인 구조의 블록도이다;
도 3은 본 발명의 실시예를 구현하기 위한 디코더(30)의 예시적인 구조의 블록도이다;
도 4는 본 발명의 실시예를 구현하기 위한 비디오 코딩 장치(400)의 예의 블록도이다;
도 5는 본 발명의 실시예를 구현하기 위한 인코딩 장치 또는 디코딩 장치의 다른 예의 블록도이다;
도 6은 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 7은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 8은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 9는 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 10은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 11은 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법의 흐름도이다;
도 12는 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 다른 모션 벡터 예측 방법의 흐름도이다;
도 13은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 14는 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 다른 모션 벡터 예측 방법의 흐름도이다; 그리고
도 15는 본 발명의 실시예를 구현하기 위한 디바이스의 구조적 블록도이다.
도 1a는 본 발명의 실시예를 구현하기 위한 비디오 인코딩 및 디코딩 시스템(10)의 예의 블록도이다;
도 1b는 본 발명의 실시예를 구현하기 위한 비디오 코딩 시스템(40)의 예의 블록도이다;
도 2는 본 발명의 실시예를 구현하기 위한 인코더(20)의 예시적인 구조의 블록도이다;
도 3은 본 발명의 실시예를 구현하기 위한 디코더(30)의 예시적인 구조의 블록도이다;
도 4는 본 발명의 실시예를 구현하기 위한 비디오 코딩 장치(400)의 예의 블록도이다;
도 5는 본 발명의 실시예를 구현하기 위한 인코딩 장치 또는 디코딩 장치의 다른 예의 블록도이다;
도 6은 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 7은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 8은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 9는 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 10은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 11은 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법의 흐름도이다;
도 12는 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 다른 모션 벡터 예측 방법의 흐름도이다;
도 13은 다른 예시적인 동작이 현재 블록에서 수행되는 시나리오의 개략도이다;
도 14는 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 다른 모션 벡터 예측 방법의 흐름도이다; 그리고
도 15는 본 발명의 실시예를 구현하기 위한 디바이스의 구조적 블록도이다.
다음은, 본 발명의 실시예들의 첨부된 도면들을 참조로, 본 발명의 실시예들을 설명한다. 다음의 설명에서, 본 개시내용의 일부를 형성하며 예시로서 본 발명의 실시예들의 특정 측면들 또는 본 발명의 실시예들이 사용될 수 있는 특정 측면들을 보여주는 첨부된 도면들이 참조된다. 본 발명의 실시예들이 다른 측면들에서 사용될 수 있으며, 첨부된 도면들에 도시되지 않은 구조적 또는 논리적 변경들을 포함할 수 있다는 것이 이해되어야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 이해되지 않아야 하며, 본 발명의 범위는 첨부된 청구범위에 의해 정의된다. 예를 들어, 설명된 방법과 결합하여 개시되는 내용은, 방법을 수행하도록 구성된 대응하는 디바이스 또는 시스템에 적용될 수 있으며 그 반대의 경우도 마찬가지라는 것이 이해되어야 한다. 예를 들어, 하나 이상의 특정 방법 단계들이 설명된 경우, 해당 디바이스는, 설명된 하나 이상의 방법 단계들을 수행하기 위해 하나 이상의 유닛들, 이를테면 기능 유닛들(예를 들어, 하나 이상의 단계들을 수행하는 하나의 유닛, 또는 복수의 단계들 중 하나 이상의 단계들을 각각 수행하는 복수의 유닛들)을, 비록 그러한 하나 이상의 유닛들이 첨부된 도면들에 명시적으로 설명되거나 예시되지 않더라도, 포함할 수 있다. 또한, 예를 들어, 특정 장치가 하나 이상의 유닛들, 이를테면 기능 유닛들에 기반하여 설명된 경우, 해당 방법은, 하나 이상의 유닛들의 기능을 수행하는 데 사용되는 하나의 단계(예를 들어, 하나 이상의 유닛들의 기능을 수행하는 하나의 단계, 또는 복수의 유닛들 중 하나 이상의 유닛들의 기능을 수행하는 데 각각 사용되는 복수의 단계들)를, 비록 그러한 하나 이상의 단계들이 첨부된 도면들에 명시적으로 설명되거나 예시되지 않더라도, 포함할 수 있다. 또한, 본 명세서에 설명된 다양한 예시적인 실시예들 및/또는 측면들의 특징들이, 구체적으로 달리 언급되지 않는 한, 서로 조합될 수 있다는 것이 이해되어야 한다.
본 발명의 실시예들에서의 기술적 솔루션들은 기존 비디오 코딩 표준들(예를 들어, H.264 및 HEVC와 같은 표준들)에 적용될뿐만 아니라 미래의 비디오 코딩 표준들(예를 들어, H.266 표준)에 적용될 수 있다. 본 발명의 실시예들에서 사용되는 용어들은 본 발명의 특정 실시예들을 설명하기 위해서만 사용되는 것으로, 본 발명을 제한하려는 의도는 아니다. 다음은 먼저 본 발명의 실시예들에서 사용될 수 있는 몇 가지 개념들을 간략하게 설명한다.
비디오 코딩은 일반적으로 비디오 또는 비디오 시퀀스의 구성 요소가 되는 일련의 픽처들을 처리하는 것을 지칭한다. 비디오 코딩 분야에서, "픽처(picture)", "프레임(frame)", "이미지(image)"라는 용어들은 동의어로 사용될 수 있다. 본 명세서에서 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 지칭한다. 비디오 인코딩은 소스 측에서 수행되며, 일반적으로 보다 효율적인 저장 및/또는 전송을 위해, 비디오 픽처를 표현하기 위한 데이터의 양을 감소시키기 위해(예를 들어, 압축을 통해) 원본 비디오 픽처를 처리하는 것을 포함한다. 비디오 디코딩은 목적지 측에서 수행되며, 일반적으로 비디오 픽처를 재구성하기 위한 인코더에 대한 역처리(inverse processing)를 포함한다. 실시예들에서 비디오 픽처의 "코딩"은 비디오 시퀀스의 "인코딩" 또는 "디코딩"으로서 이해되어야 한다. 인코딩 부분과 디코딩 부분의 조합이 코딩(인코딩 및 디코딩)으로 지칭된다.
비디오 시퀀스는 일련의 픽처(picture)들을 포함하고, 픽처는 슬라이스(slice)들로 추가로 파티셔닝되고, 슬라이스는 블록(block)들로 추가로 파티셔닝된다. 비디오 코딩은 블록 단위로 수행된다. 일부 새로운 비디오 코딩 표준들에서는 "블록" 개념이 추가로 확장된다. 예를 들어, 매크로 블록(macroblock, MB)이 H.264 표준에 도입된다. 매크로 블록은 예측 코딩에 사용될 수 있는 복수의 예측 블록들로 추가로 파티셔닝(partition)될 수 있다. 고효율 비디오 코딩(high efficiency video coding, HEVC) 표준에서는, "코딩 유닛"(coding unit, CU), "예측 유닛"(prediction unit, PU) 및 "변환 유닛"(transform unit, TU)와 같은 기본 개념들이 사용된다. 복수의 블록 유닛들은 기능 분할을 통해 획득되며, 새로운 트리-기반 구조를 사용함으로써 설명된다. 예를 들어, CU는 쿼드 트리(quadtree)에 기반하여 더 작은 CU들로 파티셔닝될 수 있고, 더 작은 CU는 추가로 파티셔닝되어, 쿼드 트리 구조를 생성할 수 있다. CU는 코딩된 픽처를 파티셔닝하고 인코딩하는 기본 유닛이다. PU와 TU도 또한 유사한 트리 구조들을 갖는다. PU는 예측 블록에 대응할 수 있으며, 예측 코딩의 기본 유닛이다. CU는 파티셔닝 모드에서 복수의 PU들로 추가로 파티셔닝된다. TU는 변환 블록에 대응할 수 있으며, 예측 잔차(prediction residual)를 변환하기 위한 기본 유닛이다. 그러나, 본질적으로, CU, PU 및 TU 모두는 개념적으로 블록들(또는 픽처 블록들)이다.
예를 들어, HEVC에서, CTU는 코딩 트리로서 표현되는 쿼드 트리 구조를 사용함으로써 복수의 CU들로 파티셔닝된다. 인터(시간적) 또는 인트라(공간적) 예측을 통해 픽처 영역을 인코딩할지 여부에 대한 판단은 CU 레벨에서 이루어진다. 각각의 CU는 추가로, PU 파티셔닝 유형에 기반하여 1개, 2개 또는 4개의 PU들로 파티셔닝될 수 있다. 하나의 PU에서, 동일한 예측 프로세스가 적용되고, 관련 정보가 PU 기준으로 디코더로 전송된다. PU 파티셔닝 유형에 기반한 예측 프로세스를 적용함으로써 잔차 블록(residual block)을 획득한 후, CU는 CU에 사용되는 코딩 트리와 유사한 다른 쿼드 트리 구조를 기반으로 변환 유닛(transform unit, TU)들로 파티셔닝될 수 있다. 최근 비디오 압축 기술들의 발전으로, 쿼드 트리와 바이너리 트리(Quadtree plus binary tree, QTBT) 파티션 프레임이 코딩 블록을 파티셔닝하는 데 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형일 수 있다.
본 명세서에서, 설명과 이해의 편의를 위해, 현재 코딩된 픽처에서의 인코딩될(to-be-encoded) 픽처 블록이 현재 블록으로 지칭될 수 있다. 예를 들어, 인코딩에서는 현재 블록이 인코딩중인 블록이고, 디코딩에서는 현재 블록이 디코딩중인 블록이다. 참조 픽처에서, 현재 블록을 예측하기 위해 사용되는 디코딩된 픽처 블록이 참조 블록으로 지칭된다. 구체적으로, 참조 블록은 현재 블록에 대한 참조 신호를 제공하는 블록이고, 참조 신호는 픽처 블록의 픽셀 값을 표현한다. 참조 픽처에 있으며 현재 블록에 대한 예측 신호를 제공하는 블록이 예측 블록으로 지칭될 수 있다. 예측 신호는 예측 블록에서 픽셀 값, 샘플링 값 또는 샘플링 신호를 표현한다. 예를 들어, 복수의 참조 블록들이 트래버싱된 후, 최적의 참조 블록이 찾아진다. 최적의 참조 블록은 현재 블록에 대한 예측을 제공하며 예측 블록으로 지칭된다.
무손실(lossless) 비디오 코딩의 경우, 원본 비디오 픽처가 재구성될 수 있다. 구체적으로, 재구성된 비디오 픽처는 (저장 또는 전송 중에 전송 손실 또는 다른 데이터 손실이 발생하지 않는다고 가정하여) 원본 비디오 픽처와 동일한 품질을 갖는다. 손실 비디오 코딩의 경우, 비디오 픽처를 표현하기 위한 데이터의 양을 감소시키기 위해, 예를 들어 양자화를 통해 추가 압축이 수행되지만, 비디오 픽처는 디코더 측에서 완전히 재구성될 수 없다. 구체적으로, 재구성된 비디오 픽처의 품질은 원본 비디오 픽처의 품질보다 낮거나 더 열악하다.
여러 H.261 비디오 코딩 표준들은 "손실 하이브리드 비디오 코딩"을 위한 것이다(구체적으로, 샘플 도메인에서 공간적 및 시간적 예측은 변환 도메인에서 양자화를 적용하기 위해 2D 변환 코딩과 조합된다). 비디오 시퀀스의 각각의 픽처는 일반적으로 한 세트의 비-겹침(non-overlapping) 블록들로 파티셔닝되고, 코딩은 일반적으로 블록 레벨에서 수행된다. 구체적으로, 인코더 측에서, 비디오는 일반적으로 블록(비디오 블록) 레벨에서 처리, 즉 인코딩된다. 예를 들어, 공간적(인트라) 예측과 시간적(인터) 예측을 통해 예측 블록이 생성되고, 예측 블록이 현재 블록(처리되고 있는 또는 처리될 블록)으로부터 감산되어 잔차 블록이 획득되고, 잔차 블록이 변환 도메인에서 변환되고 양자화되어 전송(압축)될 데이터의 양이 감소된다. 디코더 측에서, 인코더에 대한 역처리 부분이 인코딩된 블록 또는 압축된 블록에 적용되어, 표현을 위해 현재 블록을 재구성한다. 또한, 인코더가 디코더의 처리 루프를 복제하여, 인코더 및 디코더가 동일한 예측(예를 들어, 인트라 예측 및 인터 예측) 및/또는 재구성을 생성하여 후속 블록을 처리, 즉 인코딩하게 된다.
다음은 본 발명의 실시예들이 적용되는 시스템 아키텍처를 설명한다. 도 1a는 본 발명의 실시예가 적용되는 비디오 인코딩 및 디코딩 시스템(10)의 예의 개략적 블록도이다. 도 1a에 도시된 바와 같이, 비디오 인코딩 및 디코딩 시스템(10)은 소스 디바이스(12) 및 목적지 디바이스(14)를 포함할 수 있다. 소스 디바이스(12)는 인코딩된 비디오 데이터를 생성하므로, 소스 디바이스(12)는 비디오 인코딩 장치로 지칭될 수 있다. 목적지 디바이스(14)는 소스 디바이스(12)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있으므로, 목적지 디바이스(14)는 비디오 디코딩 장치로 지칭될 수 있다. 다양한 구현 솔루션들에서, 소스 디바이스(12), 목적지 디바이스(14), 또는 소스 디바이스(12)와 목적지 디바이스(14) 둘 다는 하나 이상의 프로세서 및 하나 이상의 프로세서들에 커플링된 메모리를 포함할 수 있다. 메모리는, 이로 제한되는 것은 아니지만, RAM, ROM, EEPROM, 플래시 메모리, 또는 본 명세서에서 설명되는 바와 같이, 컴퓨터가 액세스할 수 있는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 소스 디바이스(12) 및 목적지 디바이스(14)는, 데스크톱 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예를 들어, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 이를테면 소위 "스마트" 폰이라 불리는 텔레폰 핸드셋, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 차량 내 컴퓨터, 무선 통신 디바이스 등을 포함하는 다양한 장치들을 포함할 수 있다.
비록 도 1a가 소스 디바이스(12)와 목적지 디바이스(14)를 별개의 디바이스들로 도시하고 있지만, 디바이스 실시예는 대안적으로, 소스 디바이스(12)와 목적지 디바이스(14) 둘 다를 또는 소스 디바이스(12)와 목적지 디바이스(14) 둘 다의 기능들을 포함할 수 있는데, 즉 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별도의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
소스 디바이스(12)와 목적지 디바이스(14) 간의 통신 연결은 링크(13)를 통해 구현될 수 있고, 목적지 디바이스(14)는 링크(13)를 통해, 소스 디바이스(12)로부터, 인코딩된 비디오 데이터를 수신할 수 있다. 링크(13)는 인코딩된 비디오 데이터를 소스 디바이스(12)로부터 목적지 디바이스(14)로 이동할 수 있는 하나 이상의 미디어 또는 장치들을 포함할 수 있다. 예에서, 링크(13)는, 소스 디바이스(12)가 인코딩된 비디오 데이터를 목적지 디바이스(14)로 실시간으로 직접 전송할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 이 예에서, 소스 디바이스(12)는, 통신 표준(예를 들어, 무선 통신 프로토콜)에 따라, 인코딩된 비디오 데이터를 변조할 수 있고, 변조된 비디오 데이터를 목적지 디바이스(14)로 전송할 수 있다. 하나 이상의 통신 매체는 무선 통신 매체 및/또는 유선 통신 매체, 예를 들어 라디오 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 전송 케이블들을 포함할 수 있다. 하나 이상의 통신 매체는 패킷-기반 네트워크의 일부일 수 있고, 패킷-기반 네트워크는, 예를 들어, 근거리 네트워크, 광역 네트워크 또는 글로벌 네트워크(예를 들어, 인터넷)일 수 있다. 하나 이상의 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스(12)로부터 목적지 디바이스(14)로의 통신을 용이하게 하는 다른 디바이스를 포함할 수 있다.
소스 디바이스(12)는 인코더(20)를 포함한다. 선택적으로, 소스 디바이스(12)는 픽처 소스(16), 픽처 전처리-프로세서(picture preprocessor)(18) 및 통신 인터페이스(22)를 더 포함할 수 있다. 특정 구현 형태에서, 인코더(20), 픽처 소스(16), 픽처 전처리-프로세서(18) 및 통신 인터페이스(22)는 소스 디바이스(12)의 하드웨어 컴포넌트들이거나 소스 디바이스(12)의 소프트웨어 프로그램들일 수 있다. 설명들은 다음과 같이 별도로 제공된다:
픽처 소스(16)는 예를 들어 실세계 픽처를 캡처하도록 구성된 임의의 유형의 픽처 캡처 디바이스; 및/또는 픽처 또는 코멘트(화면 콘텐츠 인코딩의 경우, 스크린 상의 일부 텍스트가 또한 인코딩될 픽처 또는 이미지의 일부로 간주됨)를 생성하기 위한 임의의 유형의 디바이스, 예를 들어 컴퓨터 애니메이션 픽처를 생성하도록 구성된 컴퓨터 그래픽 프로세서; 또는 실세계 픽처 또는 컴퓨터 애니메이션 픽처(예를 들어, 스크린 콘텐츠 또는 가상 현실(virtual reality, VR) 픽처)를 획득하도록 그리고/또는 제공하도록 구성된 임의의 유형의 디바이스, 및/또는 이들의 임의의 조합(예를 들어, 증강 현실(augmented reality, AR) 픽처)일 수 있거나 또는 이들을 포함할 수 있다. 픽처 소스(16)는 픽처를 캡처하도록 구성된 카메라 또는 픽처를 저장하도록 구성된 메모리일 수 있다. 픽처 소스(16)는, 임의의 유형의 (내부 또는 외부) 인터페이스를 더 포함할 수 있고, 이 인터페이스를 통해, 이전에 캡처되거나 생성된 픽처가 저장되고 그리고/또는 픽처가 획득되거나 수신된다. 픽처 소스(16)가 카메라인 경우, 픽처 소스(16)는, 예를 들어, 로컬 카메라, 또는 소스 디바이스에 통합된 통합 카메라일 수 있다. 픽처 소스(16)가 메모리인 경우, 픽처 소스(16)는 로컬 메모리, 또는 예를 들어, 소스 디바이스에 통합된 통합 메모리일 수 있다. 픽처 소스(16)가 인터페이스를 포함하는 경우, 인터페이스는, 예를 들어, 외부 비디오 소스로부터 픽처를 수신하기 위한 외부 인터페이스일 수 있다. 외부 비디오 소스는, 예를 들어, 카메라, 외부 메모리 또는 외부 픽처 생성 디바이스와 같은 외부 픽처 캡처 디바이스이다. 외부 픽처 생성 디바이스는, 예를 들어, 외부 컴퓨터 그래픽 프로세서, 컴퓨터 또는 서버이다. 인터페이스는, 임의의 독점적 또는 표준화된 인터페이스 프로토콜에 따라, 임의의 유형의 인터페이스, 예를 들어 유선 또는 무선 인터페이스 또는 광학 인터페이스일 수 있다.
픽처는 픽처 엘리먼트(picture element)들의 2-차원 어레이 또는 행렬로서 고려될 수 있다. 어레이의 픽처 엘리먼트는 또한 샘플로 지칭될 수 있다. 픽처 또는 어레이의 수평 및 수직 방향들(또는 축들)에 있는 샘플들의 수량이 픽처의 크기 및/또는 해상도를 정의한다. 컬러 표현을 위해, 3가지 컬러 성분들이 일반적으로 사용된다. 구체적으로, 픽처는 3개의 샘플 어레이들로 표현되거나 이들을 포함할 수 있다. 예를 들어, RBG 포맷 또는 컬러 공간에서, 픽처는 대응하는 적색, 녹색 및 청색 샘플 배열들을 포함한다. 그러나, 비디오 코딩에서, 각각의 픽셀은 일반적으로 휘도/색차 포맷 또는 컬러 공간으로 표현된다. 예를 들어, YUV 포맷에서의 픽처는 Y로 지시되는 휘도 성분(대안적으로, 때로는 L로 지시됨) 및 U 및 V로 지시되는 2개의 색차 성분들을 포함한다. 휘도(luma) 성분(Y)은 밝기 또는 그레이 레벨 강도(예를 들어, 둘 다 그레이-스케일 픽처에서 동일함)를 표현하며, 2개의 색차(chroma) 성분들(U 및 V)은 색차 또는 컬러 정보 성분들을 표현한다. 이에 상응하여, YUV 포맷의 픽처는 휘도 샘플 값들(Y)의 휘도 샘플 어레이 및 색차 값들(U 및 V)의 2개의 색차 샘플 어레이들을 포함한다. RGB 포맷의 픽처는 YUV 포맷으로 변환되거나 컨버팅될 수 있으며 그 반대일 수도 있다. 이 처리는 또한, 색상 컨버전 또는 변환으로 지칭된다. 픽처가 단색(monochrome)인 경우, 픽처는 휘도 샘플 어레이만을 포함할 수 있다. 본 발명의 이 실시예에서, 픽처 소스(16)에 의해 픽처 프로세서로 전송된 픽처는 또한, 원시(raw) 픽처 데이터(17)로 지칭될 수 있다.
픽처 전처리-프로세서(18)는, 원시 픽처 데이터(17)를 수신하고 원시 픽처 데이터(17)에 대해 전처리를 수행하여 전처리된 픽처(19) 또는 전처리된 픽처 데이터(19)를 획득하도록 구성된다. 예를 들어, 픽처 전처리-프로세서(18)에 의해 수행되는 전처리는 트리밍, 컬러 포맷 컨버전(예를 들어, RGB 포맷에서 YUV 포맷으로), 컬러 보정 또는 노이즈 제거(de-noising)를 포함할 수 있다.
인코더(20)(또는 비디오 인코더(20)로 지칭됨)는, 전처리된 픽처 데이터(19)를 수신하고 전처리된 픽처 데이터(19)를 관련 예측 모드(이를테면, 본 명세서의 실시예들에서의 예측 모드)로 처리하여, 인코딩된 픽처 데이터(21)를 제공하도록 구성된다(인코더(20)의 구조적 상세사항들은 도 2, 도 4 또는 도 5를 기반으로 아래에서 추가로 설명됨). 일부 실시예들에서, 인코더(20)는, 본 발명에서 설명된 모션 벡터 예측 방법의 인코더-측 적용을 구현하기 위해, 아래에서 설명되는 다양한 실시예들을 수행하도록 구성될 수 있다.
통신 인터페이스(22)는, 인코딩된 픽처 데이터(21)를 수신하고 인코딩된 픽처 데이터(21)를, 저장 또는 직접 재구성을 위해 링크(13)를 통해, 목적지 디바이스(14) 또는 임의의 다른 디바이스(예를 들어, 메모리)로 전송하도록 구성될 수 있다. 다른 디바이스는 디코딩 또는 저장을 위해 사용되는 임의의 디바이스일 수 있다. 통신 인터페이스(22)는, 예를 들어, 링크(13)를 통한 전송을 위해, 인코딩된 픽처 데이터(21)를 적절한 포맷, 예를 들어 데이터 패킷으로 캡슐화하도록 구성될 수 있다.
목적지 디바이스(14)는 디코더(30)를 포함한다. 선택적으로, 목적지 디바이스(14)는 통신 인터페이스(28), 픽처 후처리-프로세서(picture post-processor)(32) 및 디스플레이 디바이스(34)를 더 포함할 수 있다. 설명들은 다음과 같이 별도로 제공된다.
통신 인터페이스(28)는, 소스 디바이스(12) 또는 임의의 다른 소스로부터, 인코딩된 픽처 데이터(21)를 수신하도록 구성될 수 있다. 임의의 다른 소스는, 예를 들어 저장 디바이스이다. 저장 디바이스는, 예를 들어 인코딩된 픽처 데이터 저장 디바이스이다. 통신 인터페이스(28)는, 소스 디바이스(12)와 목적지 디바이스(14) 사이의 링크(13)를 통해 또는 임의의 유형의 네트워크를 통해, 인코딩된 픽처 데이터(21)를 송신 또는 수신하도록 구성될 수 있다. 링크(13)는, 예를 들어 직접 유선 또는 무선 연결이다. 임의의 유형의 네트워크는, 예를 들어 유선 또는 무선 네트워크 또는 이들의 임의의 조합, 또는 임의의 유형의 개인 또는 공용 네트워크 또는 이들의 임의의 조합이다. 통신 인터페이스(28)는, 예를 들어, 인코딩된 픽처 데이터(21)를 획득하기 위해, 통신 인터페이스(22)를 통해 전송되는 데이터 패킷을 캡슐화해제(decapsulate)하도록 구성될 수 있다.
통신 인터페이스(28)와 통신 인터페이스(22) 둘 다는, 단방향 통신 인터페이스로서 구성되거나 또는 양방향 통신 인터페이스로 구성될 수 있으며, 그리고 예를 들어, 연결을 설정하기 위해 메시지들을 송신 및 수신하고, 인코딩된 픽처 데이터 전송과 같은 데이터 전송 및/또는 통신 링크와 관련된 임의의 다른 정보를 확인응답 및 교환하도록 구성될 수 있다.
디코더(30)(또는 비디오 디코더(30)로 지칭됨)는, 인코딩된 픽처 데이터(21)를 수신하고 디코딩된 픽처 데이터(31) 또는 디코딩된 픽처(31)를 제공하도록 구성된다(디코더(30)의 구조적 상세사항들은 도 3, 도 4 또는 도 5를 기반으로 아래에서 추가로 설명됨). 일부 실시예들에서, 디코더(30)는, 본 발명에서 설명된 모션 벡터 예측 방법의 디코더-측 적용을 구현하기 위해, 아래에서 설명되는 다양한 실시예들을 수행하도록 구성될 수 있다.
픽처 후처리-프로세서(32)는 디코딩된 픽처 데이터(31)(재구성된 픽처 데이터로 또한 지칭됨)를 후-처리하여 후-처리된 픽처 데이터(33)를 획득하도록 구성된다. 픽처 후처리-프로세서(32)에 의해 수행되는 후-처리는, 컬러 포맷 컨버전(예를 들어, YUV 포맷에서 RGB 포맷으로), 컬러 보정, 트리밍, 재-샘플링 또는 임의의 다른 처리를 포함할 수 있다. 픽처 후처리-프로세서(32)는 추가로, 후-처리된 픽처 데이터(33)를 디스플레이 디바이스(34)로 전송하도록 구성될 수 있다.
디스플레이 디바이스(34)는 후-처리된 픽처 데이터(33)를 수신하여, 예를 들어 사용자 또는 시청자(viewer)에게 픽처를 디스플레이하도록 구성된다. 디스플레이 디바이스(34)는 재구성된 사진을 제공하기 위한 임의의 유형의 디스플레이, 예를 들어 통합 또는 외부 디스플레이 또는 모니터일 수 있거나 또는 이를 포함할 수 있다. 예를 들어, 디스플레이는 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light-emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 실리콘 상의 액정(liquid crystal on silicon, LCoS), 디지털 광 프로세서(digital light processor, DLP) 또는 임의의 유형의 다른 디스플레이를 포함할 수 있다.
비록 도 1a가 소스 디바이스(12)와 목적지 디바이스(14)를 별개의 디바이스들로 도시하고 있지만, 디바이스 실시예는 대안적으로, 소스 디바이스(12)와 목적지 디바이스(14) 둘 다를 또는 소스 디바이스(12)와 목적지 디바이스(14) 둘 다의 기능들을 포함할 수 있는데, 즉 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별도의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
설명들에 기반하여, 당업자는 도 1a에 도시된 소스 디바이스(12) 및/또는 목적지 디바이스(14)의 기능들 또는 상이한 유닛들의 기능들의 존재 및 (정확한) 분할이 실제 디바이스 및 적용에 따라 변할 수 있다는 것을 확실히 알 수 있다. 소스 디바이스(12) 및 목적지 디바이스(14)는, 임의의 유형의 핸드헬드 또는 고정 디바이스, 예를 들어 노트북 또는 랩톱 컴퓨터, 모바일 폰, 스마트 폰, 태블릿 또는 태블릿 컴퓨터, 비디오 카메라, 데스크톱 컴퓨터, 셋톱-박스, 텔레비전, 카메라, 차량-탑재 디바이스, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스(이를테면, 콘텐츠 서비스 서버 또는 콘텐츠 전달 서버), 방송 수신기 디바이스 또는 방송 전송기 디바이스를 포함하는 임의의 광범위한 디바이스들을 포함하며, 임의의 유형의 운영 체제를 사용하거나 사용하지 않을 수 있다.
인코더(20) 및 디코더(30)는 각각 임의의 다양한 적절한 회로들, 예를 들어, 하나 이상의 마이크로 프로세서들, 디지털 신호 프로세서(digital signal processor, DSP)들, 주문형 집적 회로(application-specific integrated circuit, ASIC)들, 필드-프로그래밍가능 게이트 어레이(field-programmable gate array, FPGA)들, 이산 로직, 하드웨어 또는 이들의 임의의 조합으로서 구현될 수 있다. 기술들이 소프트웨어를 사용함으로써 부분적으로 구현되는 경우, 디바이스는 적절한 비-일시적 컴퓨터-판독가능 저장 매체에 소프트웨어 명령을 저장할 수 있으며, 본 개시내용의 기술들을 수행하기 위해 하나 이상의 프로세서들과 같은 하드웨어를 사용함으로써 명령을 실행할 수 있다. 전술한 콘텐츠(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함) 중 임의의 것이 하나 이상의 프로세서들로 고려될 수 있다.
일부 경우들에서, 도 1a에 도시된 비디오 인코딩 및 디코딩 시스템(10)은 단지 예일뿐이며, 본 출원의 기법들은 인코딩 디바이스와 디코딩 디바이스 간의 임의의 데이터 통신을 반드시 포함하는 것은 아닌 비디오 코딩 설정들(예를 들어, 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 다른 예에서, 데이터는 로컬 메모리로부터 검색되거나, 네트워크를 통해 스트리밍되는 식일 수 있다. 비디오 인코딩 디바이스는 데이터를 인코딩하고 데이터를 메모리에 저장할 수 있고 그리고/또는 비디오 디코딩 디바이스는 메모리로부터 데이터를 검색하고 데이터를 디코딩할 수 있다. 일부 예들에서, 단지 데이터를 인코딩하고 메모리에 데이터를 저장하고 그리고/또는 메모리로부터 데이터를 검색하고 데이터를 디코딩하고 그리고 서로 통신하지 않는 디바이스들이 인코딩 및 디코딩을 수행한다.
도 1b는, 예시적인 실시예에 따른, 도 2의 인코더(20) 및/또는 도 3의 디코더(30)를 포함하는 비디오 코딩 시스템(40)의 예의 예시적인 다이어그램이다. 비디오 코딩 시스템(40)은 본 발명의 실시예들에서 다양한 기술들의 조합을 구현할 수 있다. 예시된 구현에서, 비디오 코딩 시스템(40)은 이미징 디바이스(41), 인코더(20), 디코더(30)(및/또는 처리 유닛(46)의 논리 회로(47)에 의해 구현되는 비디오 인코더/디코더), 안테나(42), 하나 이상의 프로세서들(43), 하나 이상의 메모리들(44) 및/또는 디스플레이 디바이스(45)를 포함할 수 있다.
도 1b에 도시된 바와 같이, 이미징 디바이스(41), 안테나(42), 처리 유닛(46), 논리 회로(47), 인코더(20), 디코더(30), 프로세서(43), 메모리(44) 및/또는 디스플레이 디바이스(45)는 서로 통신할 수 있다. 설명된 바와 같이, 비디오 코딩 시스템(40)이 인코더(20)와 디코더(30)로 예시되었지만, 비디오 코딩 시스템(40)은 상이한 예들에서 인코더(20)만을 포함하거나 디코더(30)만을 포함할 수 있다.
일부 예들에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 전송 또는 수신하도록 구성될 수 있다. 또한, 일부 예들에서, 디스플레이 디바이스(45)는 비디오 데이터를 제공하도록 구성될 수 있다. 일부 예들에서, 논리 회로(47)는 처리 유닛(46)에 의해 구현될 수 있다. 처리 유닛(46)은 주문형 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 또한, 선택적 프로세서(43)를 포함할 수 있다. 선택적 프로세서(43)는 유사하게 주문형 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 일부 예들에서, 논리 회로(47)는 하드웨어, 예를 들어, 비디오 코딩 전용 하드웨어에 의해 구현될 수 있고, 프로세서(43)는 범용 소프트웨어, 운영 체제 등에 의해 구현될 수 있다. 또한, 메모리(44)는 임의의 유형의 메모리, 예를 들어, 휘발성 메모리(예를 들어, 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM) 또는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)) 또는 비휘발성 메모리(예를 들어, 플래시 메모리)일 수 있다. 비-제한적인 예에서, 메모리(44)는 캐시 메모리에 의해 구현될 수 있다. 일부 예들에서, 논리 회로(47)는 (예를 들어, 픽처 버퍼를 구현하기 위해) 메모리(44)에 액세스할 수 있다. 다른 예들에서, 로직 회로(47) 및/또는 처리 유닛(46)은 픽처 버퍼를 구현하기 위한 메모리(예를 들어, 캐시)를 포함할 수 있다.
일부 예들에서, 논리 회로를 사용함으로써 구현되는 인코더(20)는, 픽처 버퍼(예를 들어, 처리 유닛(46) 또는 메모리(44)에 의해 구현됨) 및 그래픽 처리 유닛(예를 들어, 처리 유닛(46)에 의해 구현됨)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신가능하게 커플링될 수 있다. 그래픽 처리 유닛은, 도 2를 참조로 설명된 다양한 모듈들 및/또는 본 명세서에서 설명된 임의의 다른 인코더 시스템 또는 서브시스템을 구현하기 위해, 로직 회로(47)를 사용함으로써 구현되는 인코더(20)를 포함할 수 있다. 논리 회로는 본 명세서에서 설명되는 다양한 동작들을 수행하도록 구성될 수 있다.
일부 예들에서, 디코더(30)는, 도 3의 디코더(30)를 참조로 설명된 다양한 모듈들 및/또는 본 명세서에서 설명된 임의의 다른 디코더 시스템 또는 서브시스템을 구현하기 위해, 유사한 방식으로 논리 회로(47)에 의해 구현될 수 있다. 일부 예들에서, 논리 회로를 사용함으로써 구현되는 디코더(30)는 픽처 버퍼(처리 유닛(46) 또는 메모리(44)에 의해 구현됨) 및 그래픽 처리 유닛(예를 들어, 처리 유닛(46)에 의해 구현됨)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신가능하게 커플링될 수 있다. 그래픽 처리 유닛은, 도 3를 참조로 설명된 다양한 모듈들 및/또는 본 명세서에서 설명된 임의의 다른 디코더 시스템 또는 서브시스템을 구현하기 위해, 로직 회로(47)를 사용함으로써 구현되는 디코더(30)를 포함할 수 있다.
일부 예들에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 설명된 바와 같이, 인코딩된 비트스트림은, 데이터, 표시자, 인덱스 값, 모드 선택 데이터, 또는 비디오 프레임 인코딩과 관련되며 본 명세서에서 설명되는 것, 예를 들어 코딩 파티셔닝과 관련된 데이터(예를 들어, 변환 계수 또는 양자화된 변환 계수, 선택적 표시자(설명된 바와 같음), 및/또는 코딩 파티셔닝을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은, 안테나(42)에 커플링되며 인코딩된 비트스트림을 디코딩하도록 구성된 디코더(30)를 더 포함할 수 있다. 디스플레이 디바이스(45)는 비디오 프레임을 제공하도록 구성된다.
본 발명의 이 실시예에서, 인코더(20)를 참조로 설명된 예에 대해, 디코더(30)는 역처리를 수행하도록 구성될 수 있다는 것이 이해되어야 한다. 구문 요소(syntax element)를 시그널링하는 것과 관련하여, 디코더(30)는, 그러한 구문 요소를 수신 및 파싱하고 그리고 이에 상응하여, 관련된 비디오 데이터를 디코딩하도록 구성될 수 있다. 일부 예들에서, 인코더(20)는 구문 요소를 인코딩된 비디오 비트스트림으로 엔트로피-인코딩(entropy-encode)할 수 있다. 그러한 예들에서, 디코더(30)는 구문 요소를 파싱하고 그리고 이에 상응하여, 관련된 비디오 데이터를 디코딩할 수 있다.
본 발명의 실시예들에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법은 주로 인터 예측 프로세스에서 사용된다는 것이 유의되어야 한다. 이 프로세스는 인코더(20) 및 디코더(30) 둘 다에 대해 존재한다. 본 발명의 실시예들에서의 인코더(20) 및 디코더(30)는, 비디오 표준 프로토콜들, 이를테면 H.263, H.264, HEVV, MPEG-2, MPEG-4, VP8, VP9 또는 차세대 비디오 표준 프로토콜들(예를 들어, H.266)에 대응하는 인코더 및 디코더일 수 있다.
도 2는 본 발명의 실시예를 구현하기 위한 인코더(20)의 예의 개략적/개념적 블록도이다. 도 2의 예에서, 인코더(20)는, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)를 포함한다. 예측 처리 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254) 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 추정 유닛 및 모션 보상 유닛(도면에 도시되지 않음)을 포함할 수 있다. 도 2에 도시된 인코더(20)는 또한, 하이브리드 비디오 코덱(hybrid video codec)에 기반하는 하이브리드 비디오 인코더 또는 비디오 인코더로 지칭될 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하는 반면, 예를 들어, 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230) 및 예측 처리 유닛(260)은 인코더의 역방향 신호 경로를 형성한다. 인코더의 역방향 신호 경로는 디코더의 신호 경로에 대응한다(도 3의 디코더(30) 참조).
인코더(20)는, 예를 들어 입력(202)을 통해, 픽처(201) 또는 픽처(201)의 픽처 블록(203), 예를 들어 비디오 또는 비디오 시퀀스를 형성하는 픽처들의 시퀀스의 픽처를 수신한다. 픽처 블록(203)은 또한, 현재 픽처 블록 또는 인코딩될 픽처 블록으로 지칭될 수 있으며, 픽처(201)는 (특히 비디오 코딩에서, 현재 픽처를 다른 픽처들, 예를 들어 동일한 비디오 시퀀스에서 이전에 인코딩된 및/또는 디코딩된 픽처들, 즉 현재 픽처를 또한 포함하는 비디오 시퀀스와 구별하기 위해) 현재 픽처 또는 인코딩될 픽처로 지칭될 수 있다.
인코더(20)의 실시예는, 픽처(201)를 픽처 블록(203)과 같은 복수의 블록들로 파티셔닝하도록 구성된 파타셔닝 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 픽처(201)는 일반적으로 복수의 비-겹침 블록들로 파티셔닝된다. 파티셔닝 유닛은, 비디오 시퀀스의 모든 픽처들에 대해 동일한 블록 크기 및 블록 크기를 정의하는 대응하는 그리드를 사용하거나, 또는 픽처들 또는 픽처들의 서브세트들 또는 그룹들 간의 블록 크기를 변경하며 각각의 픽처를 대응하는 블록들로 파티셔닝하도록 구성될 수 있다.
예에서, 인코더(20)의 예측 처리 유닛(260)은 앞서 설명된 파티셔닝 기술들의 임의의 조합을 수행하도록 구성될 수 있다.
픽처(201)처럼, 픽처 블록(203)의 크기가 픽처(201)의 크기보다 작지만, 픽처 블록(203)은 또한, 샘플 값들을 갖는 2-차원 어레이 또는 샘플들의 행렬이거나 또는 이로 고려될 수 있다. 다른 말로, 픽처 블록(203)은, 예를 들어, 하나의 샘플 어레이(예를 들어, 단색 픽처(201)의 경우 루마 어레이), 3개의 샘플 어레이들(예를 들어, 컬러 픽처의 경우 1개의 루마 어레이 및 2개의 크로마 어레이들), 또는 적용되는 색상 포맷에 따라 임의의 다른 수량 및/또는 유형의 어레이들을 포함할 수 있다. 픽처 블록(203)의 수평 및 수직 방향들(또는 축들)의 샘플들의 수량들이 픽처 블록(203)의 크기를 정의한다.
도 2에 도시된 인코더(20)는 픽처(201)를 블록 단위로 인코딩하도록 구성되며, 예를 들어 각각의 픽처 블록(203)에 대한 인코딩 및 예측을 수행한다.
잔차 계산 유닛 (204)은, 샘플 도메인에서 잔차 블록(205)을 획득하기 위해, 예를 들어, 샘플 단위(픽셀 단위)로 픽처 블록(203)의 샘플 값들로부터 예측 블록(265)의 샘플 값들을 감산함으로써, 픽처 블록(203) 및 예측 블록(265)(예측 블록 (265)에 대한 추가 상세사항들은 아래에 제공됨)에 기반하여 잔차 블록(205)을 계산하도록 구성된다.
변환 처리 유닛(206)은, 변환, 예를 들어 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 잔차 블록(205)의 샘플 값들에 적용하여 변환 도메인의 변환 계수들(207)을 획득하도록 구성된다. 변환 계수(207)는 또한 변환 잔차 계수로 지칭될 수 있고, 변환 도메인의 잔차 블록(205)을 표현한다.
변환 처리 유닛(206)은 HEVC/H.265에 지정된 변환들과 같은 DCT/DST의 정수 근사(integer approximation)들을 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교할 때, 이러한 정수 근사들은 일반적으로 팩터(factor)를 기반으로 스케일링된다. 순방향 변환 및 역변환을 사용함으로써 처리되는 잔차 블록의 노름(norm)을 보존하기 위해, 변환 프로세스의 일부로서 추가 스케일 팩터가 적용된다. 스케일 팩터는 일반적으로 일부 제약들에 기반하여 선택된다. 예를 들어, 스케일 팩터는 시프트 연산에 대한 2의 거듭 제곱, 변환 계수의 비트 깊이, 및 정확도와 구현 비용들 간의 트레이드오프이다. 예를 들어, 특정 스케일 팩터는, 예를 들어, 디코더(30) 측의 역변환 처리 유닛(212)에 의한 역변환에 대해 (예를 들어, 인코더(20) 측의 역변환 처리 유닛(212)에 의한 대응 역변환에 대해) 지정되고, 그리고 이에 상응하여, 대응하는 스케일 팩터는 인코더(20) 측의 변환 처리 유닛(206)에 의한 순방향 변환에 대해 지정될 수 있다.
양자화 유닛(208)은, 예를 들어, 스칼라 양자화 또는 벡터 양자화를 적용함으로써, 양자화된 변환 계수들(209)를 획득하기 위해 변환 계수들(207)을 양자화하도록 구성된다. 양자화된 변환 계수(209)는 또한 양자화된 잔차 계수(209)로 지칭될 수 있다. 양자화 프로세스는 변환 계수들(207)의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 자릿수내림(round down)될 수 있으며, 여기서 n은 m보다 크다. 양자화 정도는 양자화 파라미터(quantization parameter, QP)를 조정함으로써 수정될 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세한(finer) 또는 더 거친(coarser) 양자화를 달성하기 위해 상이한 스케일들이 적용될 수 있다. 더 작은 양자화 스텝 크기는 더 미세한 양자화에 대응하고, 더 큰 양자화 스텝 크기는 더 거친 양자화에 대응한다. 적절한 양자화 스텝 크기는 양자화 파라미터(quantization parameter, QP)에 의해 지시될 수 있다. 예를 들어, 양자화 파라미터는, 미리정의된 세트의 적절한 양자화 스텝 크기들에 대한 인덱스일 수 있다. 예를 들어, 더 작은 양자화 파라미터는 더 미세한 양자화(더 작은 양자화 스텝 크기)에 대응할 수 있고, 더 큰 양자화 파라미터는 더 거친 양자화(더 큰 양자화 스텝 크기)에 대응할 수 있으며, 그 반대일 수도 있다. 양자화는, 예를 들어 역양자화 유닛 (210)에 의해 수행되는 대응하는 양자화 또는 역양자화 및 양자화 스텝 크기에 의한 분할을 포함하거나, 또는 양자화 스텝 크기에 의한 곱셈을 포함할 수 있다. HEVC와 같은 일부 표준들에 따른 실시예들에서, 양자화 스텝 크기를 결정하기 위해 양자화 파라미터가 사용될 수 있다. 일반적으로, 양자화 스텝 크기는, 나눗셈을 포함하는 방정식의 고정 소수점 근사(fixed point approximation)를 사용함으로써, 양자화 파라미터를 기반으로 계산될 수 있다. 잔차 블록의 노름을 복원하기 위해 양자화 및 탈양자화(dequantization)에 대해 추가 스케일 팩터가 도입될 수 있고, 여기서 잔차 블록의 노름은 양자화 스텝 크기 및 양자화 파라미터에 대한 방정식의 고정 소수점 근사에 사용되는 스케일 때문에 수정될 수 있다. 예시적인 구현에서, 역변환의 스케일은 탈양자화의 스케일과 조합될 수 있다. 대안적으로, 맞춤형 양자화 표가 사용되고, 인코더로부터 디코더로 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 손실 연산이며, 더 큰 양자화 스텝 크기는 더 큰 손실을 지시한다.
역양자화 유닛(210)은 탈양자화된 계수(211)를 획득하기 위해 양자화 유닛(208)의 역양자화를 양자화된 계수에 적용하도록, 예를 들어, 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을, 양자화 유닛(208)과 동일한 양자화 스텝 크기에 기반하여 또는 이를 사용함으로써 적용하도록 구성된다. 탈양자화된 계수(211)가 일반적으로 양자화로 인한 손실로 인해 변환 계수와 상이하지만, 탈양자화된 계수(211)는 또한 탈양자화된 잔차 계수(211)로 지칭될 수 있으며, 변환 계수(207)에 해당한다.
역변환 처리 유닛(212)은, 샘플 도메인에서 역변환 블록(213)을 획득하기 위해, 변환 처리 유닛(206)에 의해 적용되는 변환의 역변환, 예를 들어 역 이산 코사인 변환(discrete cosine transform, DCT) 또는 역 이산 사인 변환(discrete sine transform, DST)을 적용하도록 구성된다. 역변환 블록(213)은 또한 역변환 탈양자화된 블록(213) 또는 역변환 잔차 블록(213)으로 지칭될 수 있다.
재구성 유닛(214)(예를 들어, 합산기(214))은, 예를 들어, 샘플 도메인에서 재구성된 블록(215)을 획득하기 위해, 재구성된 잔차 블록(213)의 샘플 값들과 예측 블록(265)의 샘플 값들을 더함으로써, 역변환 블록(213)(즉, 재구성된 잔차 블록(213))을 예측 블록(265)에 더하도록 구성된다.
선택적으로, 예를 들어, 라인 버퍼(216)의 버퍼 유닛(216)(또는 간단히 "버퍼"(216)로 지칭됨)은, 재구성된 블록(215) 및 대응하는 샘플 값을, 예를 들어 인트라 예측을 위해 버퍼링하거나 저장하도록 구성된다. 다른 실시예들에서, 인코더는, 임의의 유형의 추정 및/또는 예측, 예를 들어 인트라 예측을 위해, 버퍼 유닛(216)에 저장된 필터링되지 않은 재구성된 블록들 및/또는 대응하는 샘플 값들을 사용하도록 구성될 수 있다.
예를 들어, 실시예에서, 버퍼 유닛(216)이 인트라 예측 유닛(254)에 사용되는 재구성된 블록(215)뿐만 아니라 루프 필터 유닛(220)에 사용되는 재구성된 블록(도 2에 도시되지 않음)을 저장하도록 구성되고 그리고/또는 예를 들어, 버퍼 유닛(216) 및 디코딩된 픽처 버퍼(230)가 하나의 버퍼를 형성하도록, 인코더(20)가 구성될 수 있다. 다른 실시예에서, 디코딩된 픽처 버퍼(230)로부터의 필터링된 블록(221) 및/또는 블록 또는 샘플(도 2에 도시되지 않음)이 인트라 예측 유닛(254)에 대한 입력 또는 기초로서 사용된다.
루프 필터 유닛(220)(또는 간단히 "루프 필터"(220)로 지칭됨)은, 픽셀 트랜지션을 평활화하거나 비디오 품질을 향상시키기 위해, 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하도록 구성된다. 루프 필터 유닛(220)은, 하나 이상의 루프 필터들, 이를테면, 디블로킹 필터(deblocking filter), 샘플 적응 오프셋(sample-adaptive offset, SAO) 또는 다른 필터, 예를 들어, 양방향 필터(bilateral filter), 적응 루프 필터(adaptive loop filter, ALF), 선명화 또는 평활화 필터, 또는 협업 필터(collaborative filter)를 표현하기 위한 것이다. 도 2에서는 루프 필터 유닛(220)이 인-루프 필터(in-loop filter)로 도시되어 있지만, 다른 구성에서, 루프 필터 유닛(220)은 후처리 필터(post filter)로서 구현될 수 있다. 필터링된 블록(221)은 또한 필터링 된 재구성된 블록(221)으로 지칭될 수 있다. 디코딩된 픽처 버퍼(230)는, 재구성된 인코딩된 블록에 대해 루프 필터 유닛(220)이 필터링 동작을 수행한 후, 재구성된 인코딩된 블록을 저장할 수 있다.
일 실시예에서, 인코더(20)(이에 대응하여, 루프 필터 유닛(220))는, 예를 들어, 엔트로피 인코딩이 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 인코딩 유닛에 의해 수행된 후에 또는 수행되고 바로, 루프 필터 파라미터(예를 들어, 샘플 적응 오프셋 정보)를 출력하도록 구성되어, 디코더(30)가 디코딩을 위해 동일한 루프 필터 파라미터를 수신하고 적용할 수 있다.
디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는, 인코더(20)에 의한 비디오 데이터 인코딩에 사용하기 위한 참조 픽처 데이터를 저장하는 참조 픽처 메모리일 수 있다. DPB(230)는 다양한 메모리 디바이스들, 이를테면 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)(동기식 DRAM(synchronous DRAM, SDRAM), 자기저항 RAM(magnetoresistive RAM, MRAM), 또는 저항성 RAM(resistive RAM, RRAM) 포함) 또는 다른 유형들의 메모리 디바이스들 중 임의의 하나를 포함할 수 있다. DPB(230) 및 버퍼(216)는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스들에 의해 제공될 수 있다. 예에서, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 픽처 버퍼(230)는 추가로, 동일한 현재 픽처의 또는 상이한 픽처들의 다른 이전에 필터링된 블록들, 예를 들어, 이전에 재구성되고 필터링된 블록들(221)을 저장하도록 구성될 수 있고, 그리고 예를 들어, 인터 예측을 위해, 완전히 이전에 재구성된, 즉 디코딩된 픽처들(및 대응하는 참조 블록들 및 샘플들) 및/또는 부분적으로 재구성된 현재 픽처(및 대응하는 참조 블록들 및 샘플들)를 제공할 수 있다. 예에서, 재구성된 블록(215)이 인-루프 필터링(in-loop filtering) 없이 재구성된 경우, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 재구성된 블록(215)을 저장하도록 구성된다.
블록 예측 처리 유닛(260)으로 또한 지칭되는 예측 처리 유닛(260)은, 픽처 블록(203)(현재 픽처(201)의 현재 픽처 블록(203)) 및 재구성된 픽처 데이터 예를 들어, 버퍼(216)로부터의 동일한 (현재) 픽처의 참조 샘플들, 및/또는 디코딩된 픽처 버퍼(230)로부터의 하나 이상의 이전에 디코딩된 픽처들의 참조 픽처 데이터 (231)를 수신 또는 획득하도록, 그리고 예측을 위해, 즉 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하기 위해 그러한 데이터를 처리하도록 구성된다.
모드 선택 유닛(262)은, 잔차 블록(205)의 계산 및 재구성된 블록(215)의 재구성을 위해, 예측 블록(265)으로 사용될 예측 모드(예를 들어, 인트라 또는 인터 예측 모드) 및/또는 대응하는 예측 블록(245 또는 255)을 선택하도록 구성된다.
일 실시예에서, 모드 선택 유닛(262)은 (예를 들어, 예측 처리 유닛(260)에 의해 지원되는 예측 모드들로부터) 예측 모드를 선택하도록 구성될 수 있고, 여기서 예측 모드는 최상의 매치 또는 최소 잔차를 제공하거나(최소 잔차는 전송 또는 저장을 위한 더 나은 압축을 의미함), 또는 최소 시그널링 오버헤드들을 제공하거나(최소 시그널링 오버헤드들은 전송 또는 저장을 위한 더 나은 압축을 의미함), 또는 이 둘 다를 고려하거나 이 둘다의 균형을 잡는다. 모드 선택 유닛(262)은, 레이트-왜곡 최적화(rate distortion optimization, RDO)에 기반하여 예측 모드를 결정하도록, 즉, 최소 레이트-왜곡 최적화를 제공하는 예측 모드를 선택하도록 또는 관련 레이트 왜곡이 적어도 예측 모드 선택 기준을 만족하는 예측 모드를 선택하도록 구성될 수 있다.
하기에서는 인코더(20)의 예에 의해 수행되는 예측 처리(예를 들어, 예측 처리 유닛(260)에 의해 수행됨) 및 모드 선택(예를 들어, 모드 선택 유닛(262)에 의해 수행됨)에 대해 상세히 설명한다.
위에서 설명된 바와 같이, 인코더(20)는, 한 세트의 (미리결정된) 예측 모드들로부터 최적의 또는 최선의(optimum) 예측 모드를 결정하거나 선택하도록 구성된다. 이 세트의 예측 모드들은, 예를 들어, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
한 세트의 인트라 예측 모드들은 35개의 상이한 인트라 예측 모드들, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비-방향성 모드(non-directional mode)들, 또는 H.265에 정의된 것과 같은 방향성 모드(directional mode)들을 포함할 수 있거나, 또는 67개의 상이한 인트라 예측 모드들, 예를 들어 DC(또는 평균) 모드 및 평면형 모드와 같은 비-방향성 모드들, 또는 개발 중인 H.266에 정의된 것과 같은 방향성 모드들을 포함할 수 있다.
가능한 구현에서, 한 세트의 인터 예측 모드들은 이용가능한 참조 픽처들(즉, 예를 들어, 위에서 설명된 바와 같이, DBP(230)에 저장된 적어도 일부 디코딩된 픽처들) 및 다른 인터 예측 파라미터들에 의존하고, 예를 들어, 전체 참조 픽처 또는 오직 참조 픽처의 일부, 예를 들어, 현재 블록의 영역 주위의 서치 윈도우 영역이 최적의 매칭 참조 블록을 서치하는 데 사용되는지 여부에 의존하고, 그리고/또는 예를 들어, 하프-픽셀 및/또는 쿼터-픽셀 내삽과 같은 픽셀 내삽이 적용되는지 여부에 의존한다. 이 세트의 인터 예측 모드들은, 예를 들어, 향상된 모션 벡터 예측(Advanced Motion Vector Prediction, AMVP) 모드 및 병합(merge) 모드를 포함할 수 있다. 구체적인 구현 중에, 이 세트의 인터 예측 모드들은 본 발명의 실시예들에서 개선된 제어 포인트에 기반한 AMVP 모드 및 제어 포인트에 기반한 병합 모드를 포함할 수 있다. 예에서, 인트라 예측 유닛(254)은 아래에서 설명되는 인터 예측 기술들의 임의의 조합을 수행하도록 구성될 수 있다.
전술한 예측 모드들에 추가하여, 본 발명의 실시예들에서는 또한 스킵 모드 및/또는 다이렉트 모드가 적용될 수 있다.
예측 처리 유닛(260)은 추가로, 예를 들어, 쿼드 트리(quadtree, QT) 파티셔닝, 바이너리 트리(binary tree, BT) 파티셔닝, 터너리 트리(ternary tree, TT) 파티셔닝 또는 이들의 임의의 조합을 반복적으로 사용함으로써, 픽처 블록(203)을 더 작은 블록 파티션들 또는 서브블록들로 파티셔닝하도록 그리고 예를 들어, 블록 파티션들 또는 서브블록들 각각에 대한 예측을 수행하도록 구성될 수 있다. 모드 선택은 파티셔닝된 픽처 블록(203)의 트리 구조의 선택 및 블록 파티션들 또는 서브블록들 각각에 대해 사용되는 예측 모드의 선택을 포함한다.
인터 예측 유닛(244)은 모션 추정(motion estimation, ME) 유닛(도 2에 도시되지 않음) 및 모션 보상(motion compensation, MC) 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 모션 추정 유닛은, 모션 추정을 위해, 픽처 블록(203)(현재 픽처(201)의 현재 픽처 블록(203)) 및 디코딩된 픽처(231), 또는 적어도 하나 이상의 이전에 재구성된 블록들, 예를 들어, 다른/상이한 이전에 디코딩된 픽처들(231)의 하나 이상의 재구성된 블록을 수신 또는 획득하도록 구성된다. 예를 들어, 비디오 시퀀스는 현재 픽처 및 이전에 디코딩된 픽처들(231)을 포함할 수 있거나, 다른 말로, 현재 픽처 및 이전에 디코딩된 픽처들(231)은 비디오 시퀀스를 형성하는 픽처들의 시퀀스를 형성하거나 또는 이의 일부일 수 있다.
예를 들어, 인코더(20)는, 동일한 픽처의 복수의 참조 블록들 또는 복수의 다른 픽처들의 상이한 픽처들로부터 참조 블록을 선택하며, 모션 추정 유닛(도 2에 도시되지 않음)을 위해, 참조 픽처를 제공하고 그리고/또는 참조 블록의 위치(x 및 Y 좌표)와 현재 블록의 위치 사이의 오프셋(공간 오프셋)을 인터 예측 파라미터로서 제공하도록 구성된다. 오프셋은 또한, 모션 벡터(motion vector, MV)로 지칭된다.
모션 보상 유닛은, 인터 예측 파라미터를 획득하고 그리고 인터 예측 파라미터에 기반하여 또는 인터 예측 파라미터를 사용함으로써 인터 예측을 수행하여 인터 예측 블록(245)을 획득하도록 구성된다. 모션 보상 유닛(도 2에 도시되지 않음)에 의해 수행되는 모션 보상은, (가능하게는 서브-픽셀 정밀도로 내삽을 수행하는) 모션 추정을 통해 결정되는 모션/블록 벡터를 기반으로 예측 블록을 페칭하거나 생성하는 것을 포함할 수 있다. 내삽 필터링은 알려진 픽셀 샘플로부터 추가의 픽셀 샘플을 생성할 수 있으며, 이로써, 픽처 블록을 인코딩하는 데 사용될 수 있는 후보 예측 블록들의 수량이 잠재적으로 증가될 수 있다. 모션 보상 유닛(246)은, 현재 픽처 블록의 PU에 대한 모션 벡터를 수신하면, 참조 픽처 목록에서 모션 벡터가 가리키는 예측 블록의 위치를 찾을 수 있다. 모션 보상 유닛(246)은, 디코더(30)에 의해 비디오 슬라이스의 픽처 블록을 디코딩하기 위해, 블록 및 비디오 슬라이스와 연관된 구문 요소들을 추가로 생성할 수 있다.
구체적으로, 인터 예측 유닛(244)은 구문 요소들을 엔트로피 인코딩 유닛(270)으로 전송할 수 있으며, 구문 요소들은 인터 예측 파라미터(이를테면, 복수의 인터 예측 모드들의 트래버셜(traversal) 후 현재 블록의 예측에 사용되는 인터 예측 모드의 선택에 대한 지시 정보)를 포함한다. 가능한 적용 시나리오에서, 하나의 인터 예측 모드만 존재하는 경우, 인터 예측 파라미터는 대안적으로 구문 요소에 보유되지 않을 수 있다. 이 경우, 디코더(30)는 디폴트 예측 모드에서 직접 디코딩을 수행할 수 있다. 인터 예측 유닛(244)이 인터 예측 기술들의 임의의 조합을 수행하도록 구성될 수 있다는 것이 이해될 수 있다.
인트라 예측 유닛(254)은, 예를 들어, 인트라 추정을 위해 동일한 픽처의 픽처 블록(203)(현재 픽처 블록) 및 하나 이상의 이전에 재구성된 블록들, 예를 들어 재구성된 이웃하는 블록들을 획득하도록, 예를 들어 수신하도록 구성된다. 예를 들어, 인코더(20)는 복수의 (미리결정된) 인트라 예측 모드들 중에서 인트라 예측 모드를 선택하도록 구성될 수 있다.
실시예에서, 인코더(20)는 최적화 기준에 따라, 예를 들어, 최소 잔차(예를 들어, 현재 픽처 블록(203)과 가장 유사한 예측 블록(255)를 제공하는 인트라 예측 모드) 또는 최소 레이트 왜곡에 기반하여 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 추가로, 예를 들어, 선택된 인트라 예측 모드에서의 인트라 예측 파라미터에 기반하여 인트라 예측 블록(255)을 결정하도록 구성된다. 임의의 경우, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 추가로, 엔트로피 인코딩 유닛(270)에 대해, 인트라 예측 파라미터, 즉 블록에 대해 선택된 인트라 예측 모드를 지시하는 정보를 제공하도록 구성된다. 예에서, 인트라 예측 유닛(254)은 인트라 예측 기술들의 임의의 조합을 수행하도록 구성될 수 있다.
구체적으로, 인트라 예측 유닛(254)은 구문 요소들을 엔트로피 인코딩 유닛(270)으로 전송할 수 있으며, 구문 요소들은 인트라 예측 파라미터(이를테면, 복수의 인트라 예측 모드들의 트래버셜 후 현재 블록의 예측에 사용되는 인트라 예측 모드의 선택에 대한 지시 정보)를 포함한다. 가능한 적용 시나리오에서, 하나의 인트라 예측 모드만 존재하는 경우, 인트라 예측 파라미터는 대안적으로 구문 요소에 보유되지 않을 수 있다. 이 경우, 디코더(30)는 디폴트 예측 모드에서 직접 디코딩을 수행할 수 있다.
엔트로피 인코딩 유닛(270)은, 예를 들어, 인코딩된 비트스트림(21)의 형태로, 출력(272)을 통해 출력될 수 있는 인코딩된 픽처 데이터(21)를 획득하기 위해, 다음의 것: 양자화된 잔차 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 루프 필터 파라미터 중 하나 또는 모두에 대해, 엔트로피 코딩 알고리즘 또는 방식(예를 들어, 가변-길이 코딩(variable-length coding, VLC) 방식, 콘텍스트-적응형 VLC(context-adaptive VLC, CAVLC) 방식, 산술 코딩 방식, 콘텍스트-적응형 바이너리 산술 코딩(context-adaptive binary arithmetic coding, CABAC), 구문-기반 콘텍스트-적응형 바이너리 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 구간 파티셔닝 엔트로피(probability interval partitioning entropy, PIPE) 코딩, 또는 다른 엔트로피 코딩 방법론 또는 기법)을 적용하도록 (또는 적용을 회피하도록) 구성된다. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 비디오 디코더(30)에 의한 추후 전송 또는 검색을 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 추가로, 인코딩되는 현재 비디오 슬라이스에 대한 다른 구문 요소를 엔트로피-인코딩하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변경이 비디오 스트림을 인코딩하기 위해 사용될 수 있다. 예를 들어, 비-변환 기반 인코더(20)는 일부 블록들 또는 프레임들에 대한 변환 처리 유닛(206) 없이 잔차 신호를 직접 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합된 양자화 유닛(208) 및 역양자화 유닛(210)을 가질 수 있다.
구체적으로, 본 발명의 실시예들에서, 인코더(20)는 하기의 실시예들에서 아핀 모션 모델을 기반으로 모션 벡터 예측 방법을 구현하도록 구성될 수 있다.
도 3은 본 발명의 실시예를 구현하기 위한 디코더는(30)의 예의 개략적/개념적 블록도이다. 비디오 디코더(30)는, 예를 들어 인코더(20)에 의해 인코딩되는 인코딩된 픽처 데이터(예를 들어, 인코딩된 비트스트림)(21)를 수신하여 디코딩된 픽처(331)를 획득하도록 구성된다. 디코딩 프로세스에서, 비디오 디코더(30)는 비디오 인코더(20)로부터 비디오 데이터를, 예를 들어 인코딩된 비디오 슬라이스 및 연관된 구문 요소의 픽처 블록을 표현하는 인코딩된 비디오 비트스트림을 수신한다.
도 3의 예에서 디코더(30)는 엔트로피 디코딩 유닛(304), 역양자화 유닛(310), 역변환 처리 유닛(312), 재구성 유닛(314)(예를 들어, 합산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 픽처 버퍼(330) 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354) 및 모드 선택 유닛(362)을 포함할 수 있다. 일부 예들에서, 비디오 디코더(30)는 도 2의 비디오 인코더(20)에 대해 설명된 인코딩 프로세스에 대해 대략 역인 디코딩 프로세스를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은, 예를 들어 양자화된 계수(309) 및/또는 디코딩된 인코딩 파라미터(도 3에 도시되지 않음), 예를 들어 (디코딩되는) 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터 및/또는 다른 구문 요소 중 임의의 하나 또는 모두를 획득하기 위해, 인코딩된 픽처 데이터(21)에 대해 엔트로피 디코딩을 수행하도록 구성된다. 엔트로피 디코딩 유닛(304)은 추가로, 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 다른 구문 요소를 예측 처리 유닛(360)으로 전달하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 구문 요소를 수신할 수 있다.
역양자화 유닛(310)은 역양자화 유닛(210)과 동일한 기능을 가질 수 있다. 역변환 처리 유닛(312)은 역변환 처리 유닛(212)과 동일한 기능을 가질 수 있다. 재구성 유닛(314)은 재구성 유닛(214)과 동일한 기능을 가질 수 있다. 버퍼(316)는 버퍼(216)와 동일한 기능을 가질 수 있다. 루프 필터(320)는 루프 필터(220)와 동일한 기능을 가질 수 있다. 디코딩된 픽처 버퍼(330)는 디코딩된 픽처 버퍼(230)와 동일한 기능을 가질 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있다. 인터 예측 유닛(344)은 기능면에서 인터 예측 유닛(244)과 유사할 수 있고, 인트라 예측 유닛(354)은 기능면에서 인트라 예측 유닛(254)과 유사할 수 있다. 예측 처리 유닛(360)은 일반적으로, 블록 예측을 수행하고 그리고/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하고 그리고 예를 들어, 엔트로피 디코딩 유닛(304)으로부터, 예측-관련 파라미터 및/또는 선택된 예측 모드에 대한 정보를 (명시적으로 또는 묵시적으로) 수신 또는 획득하도록 구성된다.
비디오 슬라이스가 인트라-인코딩(I) 슬라이스로 인코딩되는 경우, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은, 현재 프레임 또는 픽처의 이전에 디코딩된 블록의 데이터 및 시그널링된 인트라 예측 모드에 기반하여, 현재 비디오 슬라이스의 픽처 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터-인코딩(즉, B 또는 P) 슬라이스로 인코딩되는 경우, 예측 처리 유닛(360)의 인터 예측 유닛(344)(예를 들어, 모션 보상 유닛)은, 모션 벡터 및 엔트로피 디코딩 유닛(304)으로부터 수신되는 다른 구문 요소에 기반하여, 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측을 위해, 예측 블록은 하나의 참조 픽처 목록 내의 참조 픽처들 중 하나로부터 생성될 수 있다. 비디오 디코더(30)는, DPB(330)에 저장된 참조 픽처들을 기반으로 디폴트 구성 기술을 사용함으로써, 참조 프레임 목록: 목록 0 및 목록 1을 구성할 수 있다.
예측 처리 유닛(360)은, 모션 벡터 및 다른 구문 요소를 파싱함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고 그리고 예측 정보를 사용하여, 디코딩되고 있는 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 본 발명의 예에서, 예측 처리 유닛(360)은, 수신된 일부 구문 요소들을 사용함으로써, 비디오 슬라이스의 비디오 블록을 인코딩하기 위한 예측 모드(예를 들어, 인트라 또는 인터 예측), 인터 예측 슬라이스 유형(예를 들어, B 슬라이스, P 슬라이스 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 목록들 중 하나 이상의 목록의 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터, 슬라이스의 각각의 인터 인코딩된 비디오 블록의 인터 예측 상태, 및 현재 비디오 슬라이스의 비디오 블록을 디코딩하기 위한 다른 정보를 결정한다. 본 개시내용의 다른 예에서, 비트스트림으로부터 비디오 디코더(30)에 의해 수신되는 구문 요소는, 적응형 파라미터 세트(adaptive parameter set, APS), 시퀀스 파라미터 세트(sequence parameter set, SPS), 픽처 파라미터 세트(picture parameter set, PPS) 또는 슬라이스 헤더 중 하나 이상에 구문 요소들을 포함한다.
역양자화 유닛(310)은, 비트스트림에 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩되는 양자화된 변환 계수에 대해 역양자화(즉, 탈양자화)를 수행하도록 구성될 수 있다. 역양자화 프로세스는, 적용되어야 하는 양자화 정도 및 적용되어야 하는 역양자화 정도를 결정하기 위해, 비디오 슬라이스의 각각의 비디오 블록에 대해 비디오 인코더(20)에 의해 계산되는 양자화 파라미터를 사용하는 것을 포함할 수 있다.
역변환 처리 유닛(312)은, 역변환(예를 들어, 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역변환 프로세스)을 변환 계수에 적용하여 픽셀 도메인에 잔차 블록을 생성하도록 구성된다.
재구성 유닛(314)(예를 들어, 합산기(314))은, 예를 들어, 샘플 도메인에서 재구성된 블록(315)을 획득하기 위해, 재구성된 잔차 블록(313)의 샘플 값들과 예측 블록(365)의 샘플 값들을 더함으로써, 역변환 블록(313)(즉, 재구성된 잔차 블록(313))을 예측 블록(365)에 더하도록 구성된다.
(코딩 루프 내의 또는 코딩 루프 이후의) 루프 필터 유닛(320)은, 픽셀 트랜지션을 평활화하거나 비디오 품질을 향상시키기 위해, 재구성된 블록(315)을 필터링하여 필터링된 블록(321)을 획득하도록 구성된다. 예에서, 루프 필터 유닛(320)은 아래에서 설명되는 필터링 기술들의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)은 하나 이상의 루프 필터들, 이를테면, 디블로킹 필터(deblocking filter), 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터 또는 다른 필터, 예를 들어, 양방향 필터(bilateral filter), 적응 루프 필터(adaptive loop filter, ALF), 선명화 또는 평활화 필터, 또는 협업 필터(collaborative filter)를 표현하기 위한 것이다. 도 3에서는 루프 필터 유닛(320)이 인-루프 필터로 도시되어 있지만, 다른 구성에서, 루프 필터 유닛(320)은 후처리 필터(post filter)로서 구현될 수 있다.
그런 다음, 주어진 프레임 또는 픽처의 디코딩된 비디오 블록(321)은, 후속 모션 보상을 위해 사용되는 참조 픽처를 저장하는 디코딩된 픽처 버퍼(330)에 저장된다.
디코더(30)는, 예를 들어, 사용자에 대한 프리젠테이션 또는 보기를 위해, 출력(332)을 통해, 디코딩된 픽처(31)를 출력하도록 구성된다.
비디오 디코더(30)의 다른 변형이 압축된 비트스트림을 디코딩하는 데 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비-변환 기반 디코더(30)는, 일부 블록들 또는 프레임들에 대한 역변환 처리 유닛(312) 없이, 직접 잔차 신호를 역-양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 결합된 역양자화 유닛(310) 및 역변환 처리 유닛(312)을 가질 수 있다.
구체적으로, 본 발명의 실시예들에서, 디코더(30)는 하기의 실시예들에서 아핀 모션 모델을 기반으로 모션 벡터 예측 방법을 구현하도록 구성될 수 있다.
도 4는 본 발명의 실시예에 따른 비디오 코딩 디바이스(400)(예를 들어, 비디오 인코딩 디바이스(400) 또는 비디오 디코딩 디바이스(400))의 개략적 구조도이다. 비디오 코딩 디바이스(400)는 본 명세서에서 설명된 실시예들을 구현하는 데 적합하다. 실시예에서, 비디오 코딩 디바이스(400)는 비디오 디코더(예를 들어, 도 1a의 디코더(30)) 또는 비디오 인코더(예를 들어, 도 1a의 인코더(20))일 수 있다. 다른 실시예에서, 비디오 코딩 디바이스(400)는 도 1a의 디코더(30) 또는 도 1a의 인코더(20)의 하나 이상의 컴포넌트들일 수 있다.
비디오 코딩 디바이스(400)는, 데이터를 수신하기 위한 진입 포트(410) 및 수신 유닛(Rx)(420); 데이터를 처리하기 위한 프로세서, 로직 유닛 또는 중앙 처리 장치(CPU)(430); 데이터를 전송하기 위한 전송기 유닛(Tx)(440) 및 배출 포트(450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 비디오 코딩 디바이스(400)는, 광학 또는 전기 신호들의 배출 또는 진입을 위한, 진입 포트(410), 수신기 유닛(420), 전송기 유닛(440) 및 배출 포트(450)에 커플링된 광학-전기 컨버전 컴포넌트 및 전기-광학(EO) 컴포넌트를 더 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(430)는 하나 이상의 CPU 칩들, 코어들(예를 들어, 멀티 코어 프로세서), FPGA들, ASIC들 및 DSP들로 구현될 수 있다. 프로세서(430)는, 진입 포트(410), 수신기 유닛(420), 전송기 유닛(440), 배출 포트(450) 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)(예를 들어, 인코딩 모듈(470) 또는 디코딩 모듈(470))을 포함한다. 인코딩/디코딩 모듈(470)은 본 명세서에 개시된 실시예들을 구현하여 본 발명의 실시예들에서 제공되는 모션 벡터 예측 방법을 구현한다. 예를 들어, 인코딩/디코딩 모듈(470)은 다양한 코딩 동작들을 구현, 처리 또는 제공한다. 따라서, 인코딩/디코딩 모듈(470)은 비디오 코딩 디바이스(400)의 기능들을 실질적으로 개선하고, 비디오 코딩 디바이스(400)의 상이한 상태로의 변환에 영향을 미친다. 대안적으로, 인코딩/디코딩 모듈(470)은, 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령으로서 구현된다.
메모리(460)는, 하나 이상의 디스크들, 테이프 드라이브들 및 솔리드 스테이트 드라이브들을 포함하며, 오버플로우 데이터 저장 디바이스로서 사용되어, 이러한 프로그램들이 실행을 위해 선택될 때 프로그램들을 저장하고, 프로그램 실행 동안 판독될 명령들 및 데이터를 저장한다. 메모리(460)는 휘발성 및/또는 비휘발성일 수 있고, ROM(read-only memory), RAM(random access memory), 터너리 콘텐츠-어드레스가능 메모리(ternary content-addressable memory, TCAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
도 5는, 예시적인 실시예에 따라, 도 1a에서의 소스 디바이스(12) 및 목적지 디바이스(14) 중 하나 또는 둘로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 본 출원에서의 기술들을 구현할 수 있다. 모션 벡터 예측을 구현하도록 구성된 장치(500)는 복수의 컴퓨팅 디바이스들을 포함하는 컴퓨팅 시스템의 형태일 수 있거나, 또는 단일 컴퓨팅 디바이스의 형태(이를테면, 모바일 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터 또는 데스크톱 컴퓨터)일 수 있다.
장치(500)의 프로세서(502)는 중앙 처리 장치일 수 있다. 대안적으로, 프로세서(502)는, 정보를 제어하거나 처리할 수 있고 현재 존재하는 또는 미래에 개발될 임의의 다른 유형의 디바이스 또는 복수의 디바이스들일 수 있다. 도면에 도시된 바와 같이, 개시된 구현들은 프로세서(502)와 같은 단일 프로세서를 사용함으로써 실행될 수 있지만, 속도 및 효율성 면에서의 이점들이 2개 이상의 프로세서를 사용함으로써 달성될 수 있다.
구현에서, 장치(500)의 메모리(504)는 판독-전용 메모리(Read-Only Memory, ROM) 디바이스 또는 랜덤 액세스 메모리(random access memory, RAM) 디바이스일 수 있다. 임의의 다른 적절한 유형의 저장 디바이스가 메모리(504)로서 사용될 수 있다. 메모리(504)는 버스(512)를 통해 프로세서(502)에 의해 액세스되는 코드 및 데이터(506)를 포함할 수 있다. 메모리(504)는 운영 시스템(508) 및 애플리케이션 프로그램(510)을 더 포함할 수 있다. 애플리케이션 프로그램(510)은, 프로세서(502)가 본 명세서에서 설명된 방법을 수행할 수 있게 하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(510)은 애플리케이션들 1 내지 N을 포함할 수 있고, 애플리케이션들 1 내지 N은 본 명세서에서 설명되는 방법을 수행하는 비디오 코딩 애플리케이션을 더 포함할 수 있다. 장치(500)는 보조 메모리(514) 형태의 추가 메모리를 더 포함할 수 있다. 보조 메모리(514)는, 예를 들어, 모바일 컴퓨팅 디바이스와 함께 사용되는 메모리 카드일 수 있다. 비디오 통신 세션은 많은 양의 정보를 포함할 수 있기 때문에, 정보는 보조 메모리(514)에 완전히 또는 부분적으로 저장될 수 있고, 요구에 따라 처리를 위해 메모리(504)에 로딩될 수 있다.
장치(500)는 하나 이상의 출력 디바이스들, 예를 들어 디스플레이(518)를 더 포함할 수 있다. 예에서, 디스플레이(518)는 터치 입력을 감지하도록 동작가능한 터치 감지 엘리먼트와 디스플레이를 조합한 터치 감지 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 통해 프로세서(502)에 커플링될 수 있다. 디스플레이(518)에 추가하여, 사용자가 장치(500)를 프로그램할 수 있게 하거나 아니면 장치(500)를 사용할 수 있게 하는 다른 출력 디바이스가 추가로 제공될 수 있거나, 또는 다른 출력 디바이스가 디스플레이(518)에 대한 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는, 액정 디스플레이(liquid crystal display, LCD), 음극선 관(cathode-ray tube, CRT) 디스플레이, 및 플라즈마, 디스플레이 또는 발광 다이오드(light-emitting diode, LED) 디스플레이, 이를테면 유기 LED(organic LED, OLED)를 포함하는, 상이한 방식들로 구현될 수 있다.
장치(500)는 픽처 감지 디바이스(520)를 더 포함하거나 이에 연결될 수 있다. 픽처 감지 디바이스(520)는, 예를 들어, 픽처를 감지할 수 있고 현재 존재하는 또는 미래에 개발될 카메라 또는 임의의 다른 픽처 감지 디바이스(520)이다. 픽처는, 예를 들어, 장치(500)를 동작시키는 사용자의 픽처이다. 픽처 감지 디바이스(520)는 장치(500)를 동작시키는 사용자를 직접 향하게 배치될 수 있다. 예에서, 픽처 감지 디바이스(520)의 위치 및 광축(optical axis)은, 픽처 감지 디바이스(520)의 시야가 디스플레이(518)에 인접한 영역 및 그 영역에서 볼 수 있는 디스플레이(518)를 포함하도록, 구성될 수 있다.
장치(500)는 사운드 감지 디바이스(522)를 더 포함하거나 이에 연결될 수 있다. 사운드 감지 디바이스(522)는, 예를 들어, 장치(500) 근처의 사운드를 감지할 수 있고 현재 존재하는 또는 미래에 개발될 마이크로폰 또는 임의의 다른 사운드 감지 디바이스이다. 사운드 감지 디바이스(522)는 장치(500)를 동작시키는 사용자를 직접 향하게 배치될 수 있으며, 사용자가 장치(500)를 동작시킬 때 사용자가 내는 사운드, 예를 들어 음성 또는 다른 사운드를 수신하도록 구성될 수 있다.
장치(500)의 프로세서(502) 및 메모리(504)가 단일 유닛으로 통합되는 것으로 도 5에 도시되어 있지만, 다른 구성이 대안적으로 사용될 수 있다. 프로세서(502)의 실행은, 로컬 영역 또는 다른 네트워크에 직접 커플링되거나 분산될 수 있는 복수의 머신들(각각의 머신은 하나 이상의 프로세서들을 가짐)에서 분산될 수 있다. 메모리(504)는 복수의 머신들에 분산될 수 있다. 예를 들어, 메모리(504)는 장치(500)를 실행하는 복수의 머신들의 메모리들 또는 네트워크-기반 메모리이다. 본원에서는 단일 버스로서 도시되어 있지만, 장치(500)의 버스(512)는 복수의 버스들을 포함할 수 있다. 또한, 보조 메모리(514)는 장치(500)의 다른 컴포넌트에 직접 커플링될 수 있거나 네트워크를 통해 액세스될 수 있다. 또한, 보조 메모리(514)는 하나의 통합 유닛(예를 들어, 하나의 메모리 카드) 또는 복수의 유닛들(예를 들어, 복수의 메모리 카드들)을 포함할 수 있다. 따라서, 장치(500)는 복수의 구성들로 구현될 수 있다.
본 발명의 실시예들에서의 기술적 솔루션들을 더 잘 이해하기 위해, 하기에서는, 본 발명의 실시예들에서의 인터 예측 모드, 비-병진 모션(non-translational motion) 모델, 상속 제어 포인트 모션 벡터 예측 방법 및 구성된 제어 포인트 모션 벡터 예측 방법에 대해 추가로 설명한다.
(1) 인터 예측 모드. HEVC에서는 2가지 인터 예측 모드들: 향상된 모션 벡터 예측(advanced motion vector prediction, AMVP) 모드 및 병합(merge) 모드가 사용된다.
AMVP 모드에서, 현재 블록의 공간적으로 또는 시간적으로 이웃하는 인코딩된 블록(이웃하는 블록들로 표시됨)이 먼저 트래버싱된다. 이웃하는 블록들의 모션 정보를 기반으로, 후보 모션 벡터 목록(모션 정보 후보 목록으로 또한 지칭될 수 있음)이 구성된다. 그런 다음, 레이트-왜곡 비용들을 기반으로 후보 모션 벡터 목록에서 최적의 모션 벡터가 결정되고, 최소 레이트-왜곡 비용들을 갖는 후보 모션 정보는 현재 블록의 모션 벡터 예측자(motion vector predictor, MVP)로서 사용된다. 이웃하는 블록들의 위치들 및 트래버셜 순서는 미리정의된다. 레이트-왜곡 비용들은 공식 (1)에 따른 계산을 통해 획득되며, 여기서 J는 레이트-왜곡 비용(RD cost)들을 표현하고, SAD는 후보 모션 벡터 예측자를 사용함으로써 모션 추정을 통해 획득되는 예측된 픽셀 값과 원래의 픽셀 값 간의 절대 차이들의 합(sum of absolute differences, SAD)이며, R은 비트 레이트를 표현하며, λ는 랑그랑주 승수(Lagrange multiplier)를 표현한다. 인코더 측은 후보 모션 벡터 목록에서 선택된 모션 벡터 예측자의 인덱스 값 및 참조 프레임 인덱스 값을 디코더 측에 전달한다. 또한, 현재 블록의 실제 모션 벡터를 획득하기 위해, MVP-중심 이웃하는 도메인에서 모션 서치가 수행된다. 인코더 측은 MVP와 실제 모션 벡터 간의 차이(모션 벡터 차이)를 디코더 측에 전달한다.
병합 모드에서, 현재 블록의 공간적으로 또는 시간적으로 이웃하는 인코딩된 블록들의 모션 정보를 기반으로 후보 모션 벡터 목록이 먼저 구성된다. 그런 다음, 레이트-왜곡 비용들이 계산되어, 후보 모션 벡터 목록의 최적의 모션 정보가 현재 블록의 모션 정보로서 결정되며, 후보 모션 벡터 목록의 최적의 모션 정보의 위치에 대한 인덱스 값(아래에서 병합 인덱스로 표시됨)이 디코더 측으로 전달된다. 현재 블록의 공간적 후보 모션 정보 및 시간적 후보 모션 정보가 도 6에 도시된다. 공간적 후보 모션 정보는 공간적으로 이웃하는 5개의 블록들(A0, A1, B0, B1, B2)로 부터의 것이다. 이웃하는 블록이 이용가능하지 않은 경우(이웃하는 블록이 존재하지 않거나, 이웃하는 블록이 인코딩되지 않았거나 또는 이웃하는 블록에 사용되는 예측 모드가 인터 예측 모드가 아닌 경우), 이웃하는 블록의 모션 정보는 후보 모션 벡터 목록에 추가되지 않는다. 현재 블록의 시간적 후보 모션 정보는, 참조 프레임과 현재 프레임의 픽처 순서 카운트(picture order count, POC)들을 기반으로 참조 프레임에 병치된 블록의 MV가 스케일된 후에, 획득된다. 참조 프레임의 T 위치에 있는 블록이 이용가능한지 여부가 먼저 결정된다. 블록이 이용가능하지 않은 경우, 위치 C에 있는 블록이 선택된다.
AMVP 모드와 유사하게, 병합 모드에서, 이웃하는 블록들의 위치들 및 트래버셜 순서가 또한 미리정의된다. 또한, 이웃하는 블록들의 위치들과 트래버셜 순서는 서로 다른 모드들에서 상이할 수 있다.
AMVP 모드와 병합 모드 둘 다에서 후보 모션 벡터 목록이 유지될 필요가 있다는 것을 알 수 있다. 새로운 모션 정보가 매번 후보 목록에 추가되기 전에, 목록에 이미 동일한 모션 정보가 존재하는지 여부가 먼저 체크된다. 목록에 동일한 모션 정보가 있는 경우, 모션 정보는 목록에 추가되지 않는다. 이 체크 프로세스는 후보 모션 벡터 목록의 프루닝(pruning)으로 지칭된다. 목록의 프루닝은, 리던던트한 레이트-왜곡 비용 계산을 회피하기 위해, 목록에서 동일한 모션 정보를 회피하기 위한 것이다.
HEVC에서의 인터 예측 동안, 코딩 블록의 모든 픽셀들에 대해 동일한 모션 정보가 사용되고(다른 말로, 코딩 블록의 모든 픽셀들의 모션이 일치함), 그런 다음, 모션 정보를 기반으로 모션 보상이 수행되어 코딩 블록의 픽셀들의 예측된 값들이 획득된다. 그러나, 코딩 블록에서, 모든 픽셀들이 동일한 모션 특징을 갖는 것은 아니다. 동일한 모션 정보를 사용하면 부정확한 모션 보상 예측 및 더 많은 잔차 정보가 발생할 수 있다.
다른 말로, 기존의 비디오 코딩 표준에서는, 병진 모션 모델을 기반으로 하는 블록-매칭 모션 추정이 사용된다. 그러나, 실세계에는 다양한 움직임들이 존재한다. 다수의 물체들, 예를 들어, 회전하는 물체, 상이한 방향들로 회전하는 롤러 코스터, 불꽃들 및 영화들에서의 일부 스턴트들은 병진 모션이 아니다. 이러한 움직이는 물체들, 특히 UGC 시나리오에 있는 물체들이 기존 코딩 표준의 병진 운동 모델을 기반으로 하는 블록 모션 보상 기술을 사용하여 인코딩되면, 코딩 효율성은 크게 영향을 받게된다. 따라서, 코딩 효율성을 더욱 향상시키기 위해 비-병진 모션 모델, 예를 들어 아핀 모션 모델이 도입된다.
이에 기반하여, 상이한 모션 모델들의 측면에서, AMVP 모드는 병진 모델-기반 AMVP 모드 및 비-병진 모델-기반 AMVP 모드로 나뉠 수 있으며, 병합 모드는 병진 모델-기반 병합 모드 및 비-병진 모션 모델-기반 병합 모드로 나뉠 수 있다.
(2) 비-병진 모션 모델. 비-병진 모션 모델-기반 예측에서, 현재 블록의 각각의 모션 보상 서브유닛의 모션 정보를 도출하기 위해 인코더 측 및 디코더 측에서 동일한 모션 모델이 사용되고, 모션 보상 서브유닛의 모션 정보를 기반으로 모션 보상이 수행되어 예측 블록을 획득함으로써, 예측 효율성이 향상된다. 본 발명의 실시예들에서 모션 보상 서브유닛은 특정 방법에 따라 파티셔닝을 통해 획득되는 픽셀 또는 픽셀 블록일 수 있으며, 그의 크기는 N1 Х N2이며, 여기서, N1 및 N2 둘 다 양의 정수들이며, N1는 N2와 동일할 수 있거나 또는 N2와 동일하지 않을 수 있다.
일반적인 비-병진 모션 모델들은, 4-파라미터 아핀 모션 모델 및 6-파라미터 아핀 모션 모델을 포함하며, 가능한 적용 시나리오에는 또한 8-파라미터 쌍선형 모델이 존재한다. 설명들은 아래에서 별도로 제공된다.
4-파라미터 아핀 모션 모델은 다음 공식 (2)에 표시된다:
4-파라미터 아핀 모션 모델은 현재 블록의 상단-좌측 픽셀에 대한 2개의 픽셀들의 모션 벡터들 및 2개의 픽셀들의 좌표로 표현될 수 있다. 모션 모델 파라미터를 표현하는 데 사용되는 픽셀이 제어 포인트로 지칭된다. 상단-좌측 코너(0, 0) 및 상단-우측 코너(W, 0)의 픽셀들이 제어 포인트들로서 사용되는 경우, 현재 블록의 상단-좌측 코너 및 상단-우측 코너의 제어 포인트들의 모션 벡터들(vx0,vy0) 및 (vx1,vy1)이 먼저 결정된다. 그런 다음, 현재 블록의 각각의 모션 보상 서브유닛의 모션 정보가 다음 공식 (3)에 따라 얻어지며, 여기서 (x, y)는 현재 블록의 상단-좌측 픽셀에 대한 모션 보상 서브유닛의 좌표이며, W는 현재 블록의 폭을 표현한다.
6-파라미터 아핀 모션 모델은 다음 공식 (4)에 표시된다:
6-파라미터 아핀 모션 모델은 현재 블록의 상단-좌측 픽셀에 대한 3개의 픽셀들의 모션 벡터들 및 3개의 픽셀들의 좌표로 표현될 수 있다. 상단-좌측 코너(0, 0), 상단-우측 코너(W, 0) 및 하단-좌측 코너(0, H)의 픽셀들이 제어 포인트들로 사용되는 경우, 현재 블록의 상단-좌측 코너, 상단-우측 코너 및 하단-좌측 코너의 제어 포인트들의 모션 벡터들(vx0,vy0), (vx1,vy1) 및 (vx2,vy2)이 먼저 결정된다. 그런 다음, 현재 블록의 각각의 모션 보상 서브유닛의 모션 정보가 다음 공식 (5)에 따라 얻어지며, 여기서 (x, y)는 현재 블록의 상단-좌측 픽셀에 대한 모션 보상 서브유닛의 좌표이며, W 및 H는 각각 현재 블록의 폭 및 높이를 표현한다.
8-파라미터 쌍선형 모션 모델은 다음 공식 (6)에 표시된다:
8-파라미터 쌍선형 모델은 현재 코딩 블록의 상단-좌측 픽셀에 대한 4개의 픽셀들의 모션 벡터들 및 4개의 픽셀들의 좌표로 표현될 수 있다. 상단-좌측 코너(0, 0), 상단-우측 코너(W, 0) 및 하단-좌측 코너(0, H) 및 하단-우측 코너(W, H)의 픽셀들이 제어 포인트들로 사용되는 경우, 현재 코딩 블록의 상단-좌측 코너, 상단-우측 코너, 하단-좌측 코너 및 하단-우측 코너의 제어 포인트들의 모션 벡터들(vx0, vy0), (vx1, vy1), (vx2, vy2), 및 (vx3, vy3)이 먼저 결정된다. 그런 다음, 현재 블록의 각각의 모션 보상 서브유닛의 모션 정보가 다음 공식 (7)에 따라 도출되며, 여기서 (x, y)는 현재 코딩 블록의 상단-좌측 픽셀에 대한 모션 보상 서브유닛의 좌표이며, W 및 H는 각각 현재 코딩 블록의 폭 및 높이를 표현한다.
아핀 모션 모델을 사용함으로써 예측되는 코딩 블록은 또한 아핀 코딩 블록으로 지칭될 수 있다. 전술한 설명으로부터, 아핀 모션 모델이 아핀 코딩 블록의 제어 포인트의 모션 정보와 직접 관련되어 있음을 알 수 있다.
일반적으로, 아핀 코딩 블록의 제어 포인트의 모션 정보는 아핀 모션 모델-기반 AMVP 모드 또는 아핀 모션 모델-기반 병합 모드에서 획득될 수 있다. 또한, 아핀 모션 모델-기반 AMVP 모드 또는 아핀 모션 모델-기반 병합 모드에서, 상속 제어 포인트 모션 벡터 예측 방법 또는 구성된 제어 포인트 모션 벡터 예측 방법에 따라 현재 코딩 블록의 제어 포인트의 모션 정보가 획득될 수 있다. 하기에서는 2가지 방법들을 추가로 설명한다.
(3) 상속 제어 포인트 모션 벡터 예측 방법. 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 이웃하는 인코딩된 아핀 코딩 블록의 모션 모델을 사용함으로써, 현재 블록의 후보 제어 포인트 모션 벡터가 결정된다.
도 7에 도시된 현재 블록이 예로서 사용된다. 현재 블록의 이웃하는-위치 블록들은, 지정된 순서로, 예를 들어, A1 → B1 → B0 → A0 → B2로 트래버싱되어, 현재 블록의 이웃하는-위치 블록이 위치되는 아핀 코딩 블록이 찾아지고 아핀 코딩 블록의 제어 포인트의 모션 정보가 획득된다. 또한, 제어 포인트 모션 벡터(병합 모드의 경우) 또는 제어 포인트 모션 벡터 예측자(AMVP 모드의 경우)가, 아핀 코딩 블록의 제어 포인트의 모션 정보를 기반으로 구성된 모션 모델을 사용함으로써, 현재 블록에 대해 도출된다. A1 → B1 → B0 → A0 → B2 순서는 예시로만 사용된다. 다른 조합의 순서가 또한 본 발명의 실시예들에 적용될 수 있다. 또한, 이웃하는-위치 블록들은 A1, B1, B0, A0, B2로 제한되지 않는다. 이웃하는-위치 블록은 픽셀일 수 있거나, 또는 미리 설정된 크기이고 특정 방법에 따라 파티셔닝을 통해 획득된 픽셀 블록(예를 들어, 4 x 4 픽셀 블록, 4 x 2 픽셀 블록, 또는 다른 크기의 픽셀 블록)일 수 있다. 이는 제한되지 않는다. 아핀 코딩 블록은, 현재 블록에 이웃하며 인코딩 페이즈(phase)에서 아핀 모션 모델을 사용함으로써 예측되는 인코딩된 블록(간략히, 이웃하는 아핀 코딩 블록으로 또한 지칭될 수 있음)이다.
하기에서는, 현재 블록의 후보 제어 포인트 모션 벡터를 결정하는 프로세스를 설명하기 위한 예로 도 7에 도시된 A1을 사용한다. 다른 경우들이 유추에 추론된다.
A1이 위치되는 코딩 블록이 4-파라미터 아핀 코딩 블록(즉, 4-파라미터 아핀 모션 모델을 사용함으로써 아핀 코딩 블록이 예측됨)인 경우, 아핀 코딩 블록의 상단-좌측 코너(x4, y4)의 모션 벡터(vx4, vy4)와 아핀 코딩 블록의 상단-우측 코너(x5, y5)의 모션 벡터(vx5, vy5)가 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 코너(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식 (8):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 코너(x1, y1)의 모션 벡터(vx1, vy1)가 다음 공식 (9):
에 따른 계산을 통해 획득된다.
A1이 위치되는 아핀 코딩 블록에 기반하여 획득되는 현재 블록의 상단-좌측 코너(x0, y0)의 모션 벡터(vx0, vy0)와 현재 블록의 상단-우측 코너(x1, y1)의 모션 벡터(vx1, vy1)의 조합이 현재 블록의 후보 제어 포인트 모션 벡터이다.
A1이 위치되는 코딩 블록이 6-파라미터 아핀 코딩 블록(즉, 6-파라미터 아핀 모션 모델을 사용함으로써 아핀 코딩 블록이 예측됨)인 경우, 아핀 코딩 블록의 상단-좌측 코너(x4, y4)의 모션 벡터(vx4, vy4), 아핀 코딩 블록의 상단-우측 코너(x5, y5)의 모션 벡터(vx5, vy5), 및 아핀 코딩 블록의 하단-좌측 코너(x6, y6)의 모션 벡터(vx6, vy6)가 획득된다.
그런 다음, 현재 블록의 상단-좌측 코너(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식 (10):
에 따른 계산을 통해 획득된다.
현재 블록의 상단-우측 코너(x1, y1)의 모션 벡터(vx1, vy1)가 다음 공식 (11):
에 따른 계산을 통해 획득된다.
현재 블록의 하단-좌측 코너(x2, y2)의 모션 벡터(vx2, vy2)가 다음 공식 (12):
에 따른 계산을 통해 획득된다.
A1이 위치되는 아핀 코딩 블록에 기반하여 획득되는 현재 블록의 상단-좌측 코너(x0, y0)의 모션 벡터(vx0, vy0), 현재 블록의 상단-우측 코너(x1, y1)의 모션 벡터(vx1, vy1) 및 현재 블록의 하단-좌측 코너(x2, y2)의 모션 벡터(vx2, vy2)의 조합이 현재 블록의 후보 제어 포인트 모션 벡터이다.
또 다른 모션 모델, 후보 위치, 서치 및 트래버셜 순서가 또한 본 발명의 실시예들에 적용가능하다는 것이 유의되어야 한다. 상세사항들은 본 발명의 실시예들에서 설명되지 않는다.
다른 제어 포인트들 사용함으로써 이웃하는 코딩 블록과 현재 코딩 블록의 모션 모델들을 표현하기 위한 방법이 또한 본 발명의 실시예들에 적용가능하다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
(4) 구성된 제어 포인트 모션 벡터(구성된 제어 포인트 모션 벡터들) 예측 방법. 구성된 제어 포인트 모션 벡터 예측 방법에서는, 현재 블록의 제어 포인트의 이웃하는 인코딩된 블록들의 모션 벡터들이 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터에 결합되며, 이웃하는 인코딩된 블록들이 아핀 코딩 블록들인지 여부를 고려할 필요가 없다. 상이한 예측 모드들(아핀 모션 모델-기반 AMVP 모드 및 아핀 모션 모델-기반 병합 모드)에서 구성된 제어 포인트 모션 벡터 예측 방법들은 상이하며, 아래에서 별도로 설명된다.
아핀 모션 모델-기반 AMVP 모드를 기반으로 하는 구성된 제어 포인트 모션 벡터 예측 방법이 먼저 설명된다.
도 8은, 현재 코딩 블록의 이웃하는 인코딩된 블록의 모션 정보를 이용함으로써 현재 블록의 상단-우측 코너 및 상단-좌측 코너의 모션 벡터를 결정하기 위한, 구성된 제어 포인트 모션 벡터 예측 방법을 설명하기 위한 예로 사용된다. 도 8이 단지 예일뿐이라는 것이 유의되어야 한다.
현재 블록이 4-파라미터 아핀 코딩 블록인 경우(즉, 현재 블록이 4-파라미터 아핀 모션 모델을 사용하여 예측됨), 상단-좌측 코너에 이웃하는 인코딩된 블록 A2, B2 또는 B3의 모션 벡터는 현재 블록의 상단-좌측 코너의 모션 벡터의 후보 모션 벡터로서 사용될 수 있고, 상단-우측 코너에 이웃하는 인코딩된 블록 B1 또는 B0의 모션 벡터는 현재 블록의 상단-우측 코너의 모션 벡터의 후보 모션 벡터로서 사용될 수 있다. 상단-좌측 코너 및 상단-우측 코너의 후보 모션 벡터들은 조합되어 복수의 2-튜플(tuple)들의 구성 요소가 된다. 2-튜플에 포함된 2개의 인코딩된 블록들의 모션 벡터들은 현재 블록의 후보 제어 포인트 모션 벡터들로서 사용될 수 있다. 복수의 2-튜플들에 대해서는 다음 (13A)를 참조한다:
여기서, 는 A2의 모션 벡터를 표현하며, 는 B1의 모션 벡터를 표현하며, 는 B0의 모션 벡터를 표현하며, 는 B2의 모션 벡터를 표현하며, 그리고 는 B3의 모션 벡터를 표현한다.
현재 블록이 6-파라미터 아핀 코딩 블록인 경우(즉, 현재 블록이 6-파라미터 아핀 모션 모델을 사용함으로써 예측됨), 상단-좌측 코너에 이웃하는 인코딩된 블록 A2, B2, B3의 모션 벡터는 현재 블록의 상단-좌측 코너의 모션 벡터의 후보 모션 벡터로서 사용될 수 있고, 상단-우측 코너에 이웃하는 인코딩된 블록 B1 또는 B0의 모션 벡터는 현재 블록의 상단-우측 코너의 모션 벡터의 후보 모션 벡터로서 사용될 수 있고, 그리고 하단-좌측 코너에 이웃하는 인코딩된 블록 A0 또는 A1의 모션 벡터는 현재 블록의 하단-좌측 코너의 모션 벡터의 후보 모션 벡터로서 사용될 수 있다. 상단-좌측 코너, 상단-우측 코너 및 하단-좌측 코너의 후보 모션 벡터들이 조합되어 복수의 트리플렛(triplet)들의 구성 요소가 된다. 트리플렛에 포함된 3개의 인코딩된 블록들의 모션 벡터들은 현재 블록의 후보 제어 포인트 모션 벡터들로서 사용될 수 있다. 복수의 트리플렛에 대해서는 다음 공식들 (13B) 및 (13C)를 참조한다:
여기서, 는 A2의 모션 벡터를 표현하며, 는 B1의 모션 벡터를 표현하며, 는 B0의 모션 벡터를 표현하며, 는 B2의 모션 벡터를 표현하며, 는 B3의 모션 벡터를 표현하며, 는 A0의 모션 벡터를 표현하며, 그리고 는 A1의 모션 벡터를 표현한다.
다른 제어 포인트 모션 벡터 조합 방법이 또한 본 발명의 실시예들에 적용가능하다는 것이 유의되어야 하며, 상세사항들은 여기서 설명되지 않는다.
다른 제어 포인트들 사용함으로써 이웃하는 코딩 블록과 현재 코딩 블록의 모션 모델들을 표현하기 위한 방법이 또한 본 발명의 실시예들에 적용가능하다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
아핀 모션 모델-기반 병합 모드를 기반으로 하는 구성된 제어 포인트 모션 벡터 예측 방법이 아래에서 설명된다.
도 9는, 현재 코딩 블록의 이웃하는 인코딩된 블록의 모션 정보를 이용함으로써 현재 블록의 상단-우측 코너 및 상단-좌측 코너의 모션 벡터를 결정하기 위한, 구성된 제어 포인트 모션 벡터 예측 방법을 설명하기 위한 예로 사용된다. 도 9가 단지 예일뿐이라는 것이 유의되어야 한다.
도 9에 도시된 바와 같이, CPk(k = 1, 2, 3 또는 4)는 k번째 제어 포인트를 표현한다. A0, A1, A2, B0, B1, B2 및 B3은 현재 블록의 공간적 이웃하는 위치들이며, CP1, CP2 또는 CP3를 예측하기 위해 사용된다. T는 현재 블록의 시간적 이웃하는 위치이며, CP4를 예측하기 위해 사용된다. CP1, CP2, CP3, CP4의 좌표는 각각 (0, 0), (W, 0), (H, 0), (W, H)인 것으로 가정되며, 여기서 W 및 H는 현재 블록의 폭 및 높이를 표현한다. 이 경우, 현재 블록의 각각의 제어 포인트의 모션 정보는 다음의 순서로 획득된다:
1. CP1의 경우, 체크 순서는 B2 → A2 →B3이다. B2가 이용가능한 경우, B2의 모션 정보가 사용된다. B2가 이용가능하지 않은 경우, A2 및 B3가 체크된다. 3개의 위치들 모두의 모션 정보가 이용가능하지 않은 경우, CP1의 모션 정보는 획득될 수 없다.
2. CP2의 경우, 체크 순서는 B0→B1 이다. B0가 이용가능한 경우, B0의 모션 정보 CP2에 대해 사용된다. B0가 이용가능하지 않은 경우, B1이 체크된다. 두 위치들 모두의 모션 정보가 이용가능하지 않은 경우, CP2의 모션 정보는 획득될 수 없다.
3. CP3의 경우, 체크 순서는 A0→A1이다.
4. CP4의 경우, T의 모션 정보가 사용된다.
여기서, X가 이용가능하다는 것은, X 위치(X는 A0, A1, A2, B0, B1, B2, B3, 또는 T임)에 있는 블록이 이미 인코딩되었고 그 블록에 인터 예측 모드가 사용되는 것을 의미한다. 그렇지 않으면, 위치 X는 이용가능하지 않다. 제어 포인트 모션 정보를 획득하기 위한 다른 방법이 또한 본 발명의 실시예들에 적용가능하다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
그런 다음, 현재 블록의 제어 포인트 모션 정보가 조합되어, 구성된 제어 포인트 모션 정보가 획득된다.
현재 블록에 4-파라미터 아핀 모션 모델이 사용되면, 현재 블록의 2개의 제어 포인트들의 모션 정보가 조합되어, 2-튜플의 구성 요소가 되고, 4-파라미터 아핀 모션 모델을 구성한다. 2개의 제어 포인트들의 조합은 {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} 또는 {CP3, CP4}일 수 있다. 예를 들어, 제어 포인트들 CP1 및 CP2를 포함하는 2-튜플을 사용함으로써 구성된 4-파라미터 아핀 모션 모델은 아핀 (CP1, CP2)로 표시될 수 있다.
현재 블록에 6-파라미터 아핀 모션 모델이 사용되면, 현재 블록의 3개의 제어 포인트들의 모션 정보가 조합되어, 트리플렛의 구성 요소가 되고, 6-파라미터 아핀 모션 모델을 구성한다. 3개의 제어 포인트들의 조합은 {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} 또는 {CP1, CP3, CP4}일 수 있다. 예를 들어, 제어 포인트들 CP1, CP2 및 CP3을 포함하는 트리플렛을 사용함으로써 구성된 6-파라미터 아핀 모션 모델은 아핀(CP1, CP2, CP3)로 표시될 수 있다.
현재 블록에 8-파라미터 아핀 모션 모델이 사용되면, 현재 블록의 4개의 제어 포인트들의 모션 정보가 조합되어, 쿼드러플(quadruple)의 구성 요소가 되고, 8-파라미터 쌍선형 모델을 구성한다. 제어 포인트들 CP1, CP2, CP3 및 CP4를 포함하는 쿼드러플을 사용함으로써 구성된 8-파라미터 쌍선형 모델은 쌍선형 (CP1, CP2, CP3, CP4)로 표시된다.
본 발명의 실시예들에서는, 설명의 편의를 위해, 2개의 제어 포인트들(또는 2개의 인코딩된 블록들)의 모션 정보의 조합은 줄여서 2-튜플로 지칭되며, 3개의 제어 포인트들(또는 3개의 인코딩된 블록들)의 모션 정보의 조합은 줄여서 트리플렛으로 지칭되며, 그리고 4개의 제어 포인트들(또는 4개의 인코딩된 블록들)의 모션 정보의 조합은 줄여서 쿼드러플로 지칭된다.
이러한 모델은 사전설정된 순서로 트래버싱된다. 조합 모델에 대응하는 제어 포인트의 모션 정보가 이용가능하지 않은 경우, 그 모델은 이용가능하지 않은 것으로 고려된다. 조합 모델에 대응하는 제어 포인트의 모션 정보가 이용가능한 경우, 모델의 참조 프레임 인덱스가 결정되고, 제어 포인트의 모션 벡터가 스케일링된다. 스케일링 후 모든 제어 포인트들의 모션 정보가 일치하면, 모델은 유효하지 않다. 모델을 제어하는 제어 포인트들의 모든 모션 정보가 이용가능하고 모델이 유효하다는 것이 결정되면, 모델을 구성하는 데 사용되는 제어 포인트들의 모션 정보가 모션 정보 후보 목록에 추가된다.
제어 포인트 모션 벡터를 스케일링하기 위한 방법은 다음 공식 (14)에 표시된다:
여기서, CurPoc는 현재 프레임의 POC를 표현하며, DesPoc는 현재 블록의 참조 프레임의 POC를 표현하며, SrcPoc는 제어 포인트의 참조 프레임의 POC를 표현하며, MVs는 스케일링을 통해 획득된 모션 벡터를 표현하며, 그리고 MV는 제어 포인트의 모션 벡터를 표현한다.
제어 포인트들의 상이한 조합들이 동일한 위치에서 제어 포인트들로 컨버팅될 수 있다는 것이 유의되어야 한다.
예를 들어, {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, 또는 {CP3, CP4}의 조합에 기반하여 획득된 4-파라미터 아핀 모션 모델은, 컨버전 후, {CP1, CP2} 또는 {CP1, CP2, CP3}로 표현된다. 컨버전 방법은 다음과 같다: 모델 파라미터를 획득하기 위해, 제어 포인트의 모션 벡터 및 좌표 정보를 상기 공식 (2)에 대입하는 단계; 및 그런 다음, CP1 및 CP2의 모션 벡터들을 획득하기 위해, {CP1, CP2}의 좌표 정보를 상기 공식 (3)에 대입하는 단계.
보다 직접적으로, 하기의 공식들 (15) 내지 (23)에 따라 컨버전이 수행될 수 있는데, 여기서 W는 현재 블록의 폭을 표현하고, H는 현재 블록의 높이를 표현한다. 공식들 (15) 내지 (23)에서, ()는 CP1의 모션 벡터를 표현하고, ()는 CP2의 모션 벡터를 표현하며, ()는 CP3의 모션 벡터를 표현하며, 그리고 ()는 CP4의 모션 벡터를 표현한다.
{CP1, CP2}는 다음 공식 (15)에 따라 {CP1, CP2, CP3}로 컨버팅될 수 있다. 다른 말로, {CP1, CP2, CP3}에서 CP3의 모션 벡터는 공식 (15)에 따라 결정될 수 있다:
{CP1, CP2}는 다음 공식 (16)에 따라 {CP1, CP2} 또는 {CP1, CP2, CP3}로 컨버팅될 수 있다:
{CP2, CP3}는 다음 공식 (17)에 따라 {CP1, CP2} 또는 {CP1, CP2, CP3}로 컨버팅될 수 있다:
{CP1, CP4}는 다음 공식 (18) 또는 (19)에 따라 {CP1, CP2} 또는 {CP1, CP2, CP3}로 컨버팅될 수 있다:
{CP2, CP4}는 다음 공식 (20)에 따라 {CP1, CP2}로 컨버팅될 수 있으며, {CP2, CP4}는 다음 공식들 (20) 및 (21)에 따라 {CP1, CP2, CP3}로 컨버팅될 수 있다:
{CP2, CP4}는 다음 공식 (20)에 따라 {CP1, CP2}로 컨버팅될 수 있으며, {CP2, CP4}는 다음 공식들 (22) 및 (23)에 따라 {CP1, CP2, CP3}로 컨버팅될 수 있다:
예를 들어, {CP1, CP2, CP4}, {CP2, CP3, CP4} 또는 {CP1, CP3, CP4} 조합을 기반으로 획득된 6-파라미터 아핀 모션 모델은, 컨버전 후, {CP1, CP2, CP3}로 표현된다. 컨버전 방법은 다음과 같다: 모델 파라미터를 획득하기 위해, 제어 포인트의 모션 벡터 및 좌표 정보를 상기 공식 (4)에 대입하는 단계; 및 그런 다음, CP1, CP2 및 CP3의 모션 벡터들을 획득하기 위해, {CP1, CP2, CP3}의 좌표 정보를 상기 공식 (5)에 대입하는 단계.
보다 직접적으로, 하기의 공식들 (24) 내지 (26)에 따라 컨버전이 수행될 수 있는데, 여기서 W는 현재 블록의 폭을 표현하고, H는 현재 블록의 높이를 표현한다. 공식들 (24) 내지 (26)에서, ()는 CP1의 모션 벡터를 표현하고, ()는 CP2의 모션 벡터를 표현하며, ()는 CP3의 모션 벡터를 표현하며, 그리고 ()는 CP4의 모션 벡터를 표현한다.
{CP1, CP2, CP4}는 공식 (24)에 따라 {CP1, CP2, CP3}으로 컨버팅될 수 있다:
{CP2, CP3, CP4}는 공식 (25)에 따라 {CP1, CP2, CP3}으로 컨버팅될 수 있다:
{CP1, CP3, CP4}는 공식 (26)에 따라 {CP1, CP2, CP3}로 컨버팅될 수 있다:
특정 실시예에서, 현재 구성된 제어 포인트 모션 정보가 후보 모션 벡터 목록에 추가된 후, 후보 목록의 길이가 최대 목록 길이(예를 들어, MaxAffineNumMrgCand)보다 작은 경우, 이러한 조합들은 사전설정된 순서로 트래버싱되며, 획득된 유효 조합은 후보 제어 포인트 모션 정보로서 사용된다. 후보 모션 벡터 목록이 비어 있으면, 후보 제어 포인트 모션 정보가 후보 모션 벡터 목록에 추가된다. 후보 모션 벡터 목록이 비어 있지 않으면, 후보 모션 벡터 목록의 모션 정보가 연속적으로 트래버싱되고, 후보 제어 포인트 모션 정보와 동일한 모션 정보가 후보 모션 벡터 목록에 존재하는지 여부가 체크된다. 후보 제어 포인트 모션 정보와 동일한 모션 정보가 후보 모션 벡터 목록에 없는 경우, 후보 모션 벡터 목록에 후보 제어 포인트 모션 정보가 추가된다.
예를 들어, 사전설정된 순서는 다음과 같다: 아핀 (CP1, CP2, CP3)→ 아핀 (CP1, CP2, CP4)→ 아핀 (CP1, CP3, CP4)→ 아핀 (CP2, CP3, CP4)→ 아핀 (CP1, CP2) → 아핀 (CP1, CP3)→ 아핀 (CP2, CP3)→ 아핀 (CP1, CP4)→ 아핀 (CP2, CP4)→ 아핀 (CP3, CP4). 총 10개의 조합들이 존재한다.
조합에 대응하는 제어 포인트 모션 정보가 이용가능하지 않은 경우, 그 조합은 이용가능하지 않은 것으로 고려된다. 조합이 이용가능한 경우, 조합의 참조 프레임 인덱스가 결정된다(2개의 제어 포인트들이 있는 경우, 최소 참조 프레임 인덱스가 조합의 참조 프레임 인덱스로 선택되거나; 또는 3개 이상의 제어 포인트들이 있는 경우, 최대 존재 빈도를 갖는 참조 프레임 인덱스가 조합의 참조 프레임 인덱스로 선택되고, 그리고 복수의 참조 프레임 인덱스들이 동일한 존재 빈도를 갖는 경우, 최소 참조 프레임 인덱스가 조합의 참조 프레임 인덱스로 선택된다). 제어 포인트 모션 벡터의 크기가 스케일링된다. 스케일링 후 모든 제어 포인트들의 모션 정보가 일치하면, 조합은 유효하지 않다.
선택적으로, 본 발명의 실시예들에서, 후보 모션 벡터 목록은 대안적으로 패딩될 수 있다. 예를 들어, 전술한 트래버셜 프로세스 후, 후보 모션 벡터 목록의 길이가 최대 목록 길이(예를 들어, MaxAffineNumMrgCand)보다 작은 경우, 후보 모션 벡터 목록은, 목록 길이가 최대 목록 길이와 같을 때까지, 패딩될 수 있다.
패딩은, 제로 모션 벡터 패딩 방법을 사용함으로써 또는 기존 목록에 있는 기존 후보 모션 정보를 조합하거나 가중-평균하기 위한 방법을 사용함으로써 수행될 수 있다. 후보 모션 벡터 목록을 패딩하기 위한 다른 방법이 본 발명의 실시예들에 또한 적용할 수 있다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
전술한 설명에 기반하여, 하기에서는 아핀 모션 모델-기반 AMVP 모드(아핀 AMVP 모드) 및 아핀 모션 모델-기반 병합 모드(아핀 병합 모드)에 대해 추가로 설명한다.
아핀 모션 모델-기반 AMVP 모드가 먼저 설명된다.
아핀 모션 모델-기반 향상된 모션 벡터 예측 모드의 경우, 아핀 모션 모델-기반 AMVP 모드에서의 후보 모션 벡터 목록은 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법을 사용함으로써 구성될 수 있다. 본 발명의 실시예들에서, 아핀 모션 모델-기반 AMVP 모드에서의 후보 모션 벡터 목록은 제어 포인트 모션 벡터 예측자 후보 목록(control point motion vectors predictor candidate list)으로 지칭될 수 있다. 목록의 제어 포인트 모션 벡터 예측자들은 2개의 후보 제어 포인트 모션 벡터들(예를 들어, 현재 블록에 4-파라미터 아핀 모션 모델이 사용되는 경우) 또는 3개의 후보 제어 포인트 모션 벡터들(예를 들어, 현재 블록에 6-파라미터 아핀 모션 모델이 사용되는 경우)을 포함한다.
가능한 적용 시나리오에서, 제어 포인트 모션 벡터 예측자 후보 목록은, 특정 규칙에 따라 추가로 프루닝 및 소팅될 수 있으며, 특정 수량의 제어 포인트 모션 벡터 예측자들을 획득하기 위해 트렁케이트(truncate)되거나 패딩될 수 있다.
그런 다음, 인코더 측에서, 인코더(예를 들어, 전술한 인코더(20))는, 공식 (3), (5) 또는 (7)에 따라, 제어 포인트 모션 벡터 예측자 후보 리스트 내의 각각의 제어 포인트 모션 벡터 예측자를 사용함으로써, 현재 코딩 블록의 각각의 모션 보상 서브유닛의 모션 벡터를 획득한다. 또한, 인코더는 각각의 모션 보상 서브유닛의 모션 벡터가 가리키는 참조 프레임에서의 대응하는 위치의 픽셀 값을 획득하고, 픽셀 값을 모션 보상 서브유닛의 예측된 값으로 사용하여 아핀 모션 모델-기반 모션 보상을 수행한다. 현재 코딩 블록에 있는 모든 픽셀들의 원래 값들과 예측된 값들 간의 차이들의 평균 값이 계산된다. 최소 평균 값에 대응하는 제어 포인트 모션 벡터 예측자가 최적의 제어 포인트 모션 벡터 예측자로서 선택되어, 현재 코딩 블록의 2개, 3개 또는 4개의 제어 포인트들의 모션 벡터 예측자들로서 사용된다. 또한, 인코더 측에서, 제어 포인트 모션 벡터 예측자는 제어 포인트 모션 벡터(control point motion vector, CPMV)를 획득하기 위해 특정 서치 범위 내에서 모션 서치를 수행하기 위한 시작 서치 포인트로서 추가로 사용될 수 있으며, 제어 포인트 모션 벡터와 제어 포인트 모션 벡터 예측자 간의 차이(control point motion vectors differences, CPMVD)가 계산된다. 그런 다음, 인코더는, CPMVD 및 제어 포인트 모션 벡터 예측자 후보 목록에서 제어 포인트 모션 벡터 예측자의 위치를 지시하는 인덱스 값을 비트스트림으로 인코딩하고, 비트스트림을 디코더 측에 전달한다.
디코더 측에서, 디코더(예를 들어, 전술한 디코더(30))는 비트스트림을 파싱하여 인덱스 값 및 제어 포인트 모션 벡터 차이(CPMVD)를 획득하고, 인덱스 값에 기반하여 제어 포인트 모션 벡터 예측자 후보 목록에서 제어 포인트 모션 벡터 예측자(control point motion vectors predictor, CPMVP)를 결정하고, 제어 포인트 모션 벡터를 획득하기 위해 CPMVP 및 CPMVD를 더한다.
하기에서는 아핀 모션 모델 기반 병합 모드를 설명한다.
아핀 모션 모델-기반 병합 모드의 경우, 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법을 사용함으로써, 제어 포인트 모션 벡터 병합 후보 목록(control point motion vectors merge candidate list)이 구성될 수 있다.
가능한 적용 시나리오에서, 제어 포인트 모션 벡터 병합 후보 목록은 특정 규칙에 따라 프루닝 및 소팅될 수 있으며, 특정 수량의 제어 포인트 모션 벡터들을 획득하기 위해 트렁케이트되거나 패딩될 수 있다.
그런 다음, 인코더 측에서, 인코더(예를 들어, 전술한 인코더(20))는, 공식 (3), (5) 또는 (7)에 따라, 병합 후보 목록의 각각의 제어 포인트 모션 벡터를 사용함으로써, 현재 코딩 블록의 각각의 모션 보상 서브유닛(특정 방법에 따라 파티셔닝을 통해 획득되며 크기가 N1ХN2인 픽셀 또는 픽셀 블록)의 모션 벡터를 획득한다. 또한, 인코더는 각각의 모션 보상 서브유닛의 모션 벡터가 가리키는 참조 프레임에서의 위치의 픽셀 값을 획득하고, 픽셀 값을 모션 보상 서브유닛의 예측된 값으로 사용하여 아핀 모션 보상을 수행한다. 현재 코딩 블록에 있는 모든 픽셀들의 원래 값들과 예측된 값들 간의 차이들의 평균 값이 계산된다. 최소 평균값에 대응하는 제어 포인트 모션 벡터는 현재 코딩 블록의 2개, 3개 또는 4개 제어 포인트들의 모션 벡터들로서 선택된다. 후보 목록에서 제어 포인트 모션 벡터의 위치를 지시하는 인덱스 값이 비트스트림으로 인코딩되어 디코더 측으로 송신된다.
디코더 측에서, 디코더(예를 들어, 전술한 디코더(30))는 비트스트림을 파싱하여 인덱스 값을 획득하고, 인덱스 값에 기반하여 제어 포인트 모션 벡터 병합 후보 목록에서 제어 포인트 모션 벡터(control point motion vectors, CPMV)를 결정한다.
또한, 본 발명의 실시예들에서 "적어도 하나"는 하나 이상을 의미하고, "복수"는 2개 이상을 의미한다는 것이 유의되어야 한다. "및/또는"이란 용어는 연관된 객체들을 설명하기 위한 연관 관계를 설명하고, 3가지 관계들이 존재할 수 있음을 나타낸다. 예를 들어, A 및/또는 B는 다음의 3가지 경우들: A만 존재하는 경우, A와 B가 둘 다 존재하는 경우, 및 B만 존재하는 경우를 표현할 수 있고, 여기서, A 및 B는 단수형 또는 복수형일 수 있다. 부호 "/"는 일반적으로 연관된 오브젝트들 간의 "또는" 관계를 표현한다. "다음의 항목들(피스(piece)들) 중 적어도 하나"라는 용어 또는 이 용어와 유사한 표현은 항목들의 임의의 조합을 지시하며, 단일 항목(피스) 또는 복수의 항목들(피스들)의 임의의 조합을 포함한다. 예를 들어, a, b 또는 c 중 적어도 하나는 a, b, c, a-b, a-c, b-c 또는 a-b-c를 지시할 수 있으며, 여기서 a, b 및 c는 단수형 또는 복수형일 수 있다.
본 발명의 실시예들에서, 인코더 측은, 디코더 측에, 현재 블록의 인터 예측 모드, 현재 블록에 사용되는 아핀 모션 모델 및 다른 관련된 정보를 지시하기 위해 구문 요소를 사용할 수 있다.
현재 블록을 파싱하는 데 사용되는 인터 예측 모드의 현재 사용되는 구문 구조의 일부는 표 1을 참조한다. 구문 구조에서의 구문 요소는 대안적으로 다른 식별자로 표현될 수 있다는 것이 유의되어야 한다. 이는 본 발명의 실시예들에서 특별히 제한되지 않는다.
표 1
표 1에서, ae(v)는 콘텍스트 즉응형 바이너리 산술 코딩 (context-adaptive binary arithmetic coding, CABAC)을 통해 인코딩된 구문 요소를 표현한다.
구문 요소 merge_flag[x0][y0]는 병합 모드가 현재 블록에 사용되는지 여부를 지시하는 데 사용될 수 있다. 예를 들어, merge_flag[x0][y0] = 1이면, 이는 현재 블록에 병합 모드가 사용된다는 것을 지시하고; 또는 merge_flag[x0][y0] = 0이면, 이는 현재 블록에 병합 모드가 사용되지 않는다는 것을 지시한다. x0 및 y0는 비디오 픽처에서 현재 블록의 좌표를 표현한다.
변수 allowAffineMerge은, 현재 블록이 아핀 모션 모델-기반 병합 모드를 사용하기 위한 조건을 충족하는 지를 지시하는 데 사용될 수 있다. 예를 들어, allowAffineMerge = 0은 아핀 모션 모델-기반 병합 모드를 사용하기 위한 조건이 충족되지 않음을 지시하며, allowAffineMerge = 1은 아핀 모션 모델 기반 병합 모드를 사용하기 위한 조건이 충족됨을 지시한다. 아핀 모션 모델-기반 병합 모드를 사용하기 위한 조건은 다음과 같을 수 있다: 현재 블록의 폭 및 높이 둘 다 8보다 크거나 같다. cbWidth는 현재 블록의 폭을 표현하고 cbHeight는 현재 블록의 높이를 표현한다. 다른 말로, cbWidth < 8 또는 cbHeight < 8인 경우, allowAffineMerge = 0이고; 또는 cbWidth ≥ 8 및 cbHeight ≥ 8인 경우, allowAffineMerge = 1이다.
변수 allowAffineInter은, 현재 블록이 아핀 모션 모델-기반 AMVP 모드를 사용하기 위한 조건을 충족하는 지를 지시하는 데 사용될 수 있다. 예를 들어, allowAffineInter = 0은 아핀 모션 모델-기반 AMVP 모드를 사용하기 위한 조건이 충족되지 않음을 지시하며, allowAffineInter = 1은 아핀 모션 모델-기반 AMVP 모드를 사용하기 위한 조건이 충족됨을 지시한다. 아핀 모션 모델-기반 AMVP 모드를 사용하기 위한 조건은 다음과 같을 수 있다: 현재 블록의 폭 및 높이 둘 다 16보다 크거나 같다. 다른 말로, cbWidth < 16 또는 cbHeight < 16인 경우, allowAffineInter = 0이고; 또는 cbWidth ≥ 16 및 cbHeight ≥ 16인 경우, allowAffineInter = 1이다.
구문 요소 affine_merge_flag[x0][y0]는 아핀 모션 모델-기반 병합 모드가 현재 블록에 사용되는 여부를 지시하는 데 사용될 수 있다. 현재 블록이 위치되는 슬라이스의 유형(slice_type)은 P 유형 또는 B 유형이다. 예를 들어, affine_merge_flag[x0][y0] = 1은, 아핀 모션 모델-기반 병합 모드가 현재 블록에 사용되는 것을 지시하고; 그리고 affine_merge_flag[x0][y0] = 0은 현재 블록에 대해 아핀 모션 모델-기반 병합 모드가 사용되지 않지만 병진 모션 모델-기반 병합 모드가 사용될 수 있다는 것을 지시한다.
병합 후보 목록에 대한 인덱스를 지시하기 위해 구문 요소 merge_idx [x0][y0]가 사용될 수 있다.
구문 요소 affine_merge_idx[x0][y0]는 아핀 병합 후보 목록에 대한 인덱스를 지시하는 데 사용될 수 있다.
구문 요소 affine_inter_flag[x0][y0]는, 현재 블록이 위치된 슬라이스가 P-형 슬라이스 또는 B-형 슬라이스인 경우, 현재 블록에 아핀 모션 모델-기반 AMVP 모드가 사용되는지 여부를 지시하는 데 사용될 수 있다. 예를 들어 affine_inter_flag[x0][y0] = 0은, 현재 블록에 아핀 모션 모델-기반 AMVP 모드가 사용됨을 지시하며, 그리고 affine_inter_flag[x0][y0] = 1은, 현재 블록에 대해 아핀 모션 모델-기반 AMVP 모드가 사용되지 않지만 병진 모션 모델-기반 AMVP 모드가 사용될 수 있다는 것을 지시한다.
구문 요소 affine_type_flag[x0][y0]은, 현재 블록이 위치된 슬라이스가 P-형 슬라이스 또는 B-형 슬라이스인 경우, 현재 블록에 대한 모션 보상을 수행하기 위해 6-파라미터 아핀 모션 모델이 사용되는지 여부를 지시하는 데 사용될 수 있다. affine_type_flag[x0][y0] = 0은, 현재 블록에 대한 모션 보상을 수행하기 위해 6-파라미터 아핀 모션 모델이 사용되지 않고 모션 보상을 수행하기 위해 4-파라미터 아핀 모션 모델만이 사용될 수 있다는 것을 지시한다. affine_type_flag[x0][y0] = 1은, 현재 블록에 대한 모션 보상을 수행하기 위해 6-파라미터 아핀 모션 모델이 사용되는 것을 지시한다.
변수들 MaxNumMergeCand 및 MaxAffineNumMrgCand는, 최대 목록 길이를 표현하는 데 그리고 구성된 후보 모션 벡터 목록의 최대 길이를 지시하는 데 사용된다. inter_pred_idc[x0][y0]은 예측 방향을 지시하는 데 사용된다. PRED_L1은 역방향 예측을 지시하는 데 사용된다. num_ref_idx_l0_active_minus1은 순방향 참조 프레임 목록에서 참조 프레임의 수량을 지시하고, ref_idx_l0[x0][y0]은 현재 블록의 순방향 참조 프레임에 대한 인덱스 값을 지시한다. mvd_coding(x0, y0, 0, 0)은 제1 모션 벡터 차이를 지시한다. mvp_l0_flag[x0][y0]은 순방향 MVP 후보 목록에 대한 인덱스 값을 지시한다. PRED_L0은 순방향 예측을 지시한다. num_ref_idx_l1_active_minus1은 역방향 참조 프레임 목록에서 참조 프레임의 수량을 지시한다. ref_idx_l1[x0][y0]은 현재 블록의 역방향 참조 프레임에 대한 인덱스 값을 지시하고고, mvp_l1_flag[x0][y0]은 역방향 MVP 후보 목록에 대한 인덱스 값을 지시한다.
표 2에서 알 수 있는 바와 같이, MotionModelIdc[x0][y0] = 1인 경우, 이는 4-파라미터 아핀 모션 모델이 사용되는 것을 지시한다; MotionModelIdc[x0][y0] = 2인 경우, 이는 6-파라미터 아핀 모션 모델이 사용되는 것을 지시하고; 또는 MotionModelIdc[x0][y0] = 0인 경우, 이는 병진 모션 모델이 사용되는 것을 지시한다.
표 2
표 1 및 표 2는 단지 예일뿐이라는 것이 유의되어야 한다. 실제 적용에서, 표 1 및 표 2는 더 많은 또는 더 적은 내용을 포함할 수 있다. 예를 들어, 표 2의 MotionModelIdc[x0][y0]은 대안적으로 다른 값을 포함할 수 있으며, 그 값은 8-파라미터 쌍선형 모델이 사용되는 것 등을 지시하는 데 사용될 수 있다.
기존 방법에서, 인터 예측 모드에서 현재 블록의 각각의 서브블록의 모션 벡터를 획득한 후, 인코더 측 또는 디코더 측은 후속 모션 보상을 위해 모션 벡터를 저장할 필요가 있다. 또한, 획득된 모션 벡터는 추가로, 다른 후속 디코딩 프로세스에 사용되며, 예를 들면, 이웃하는 블록 디코딩 프로세스의 모션 벡터 예측 또는 디블록킹 필터링(deblocking filtering)에서 필터링 강도 판정에 사용된다. 현재 블록의 제어 포인트의 획득된 모션 벡터도 또한 저장될 필요가 있으므로, 상속 제어 포인트 모션 벡터 예측 방법이 이웃하는 인코딩될/디코딩될 블록에 대해 사용될 때, 이 모션 벡터가 추후에 사용된다. 따라서, 이 경우, 현재 블록에 대해, 2가지 유형들의 모션 벡터들: 각각의 서브블록의 모션 벡터 및 제어 포인트의 모션 벡터가 있다. 기존 솔루션에서는, 2가지 유형들의 모션 벡터들을 저장하는 것을 회피하기 위해서, 제어 포인트가 위치된 서브블록의 모션 벡터를 덮어쓰기기 위해 제어 포인트의 모션 벡터가 사용된다. 예를 들어, 현재 아핀 코딩 블록에 사용되는 아핀 모션 모델이 4-파라미터 아핀 모션 모델인 경우, 상단-좌측 서브블록 및 상단-우측 서브블록의 모션 벡터들은 상단-좌측 상단 제어 포인트 및 상단-우측 제어 포인트의 모션 벡터들로 설정된다. 예를 들어, 현재 아핀 코딩 블록에 사용되는 아핀 모션 모델이 6-파라미터 아핀 모션 모델인 경우, 상단-좌측 서브블록, 상단-우측 서브블록 및 하단-좌측 서브블록의 모션 벡터들은 상단-좌측 상단 제어 포인트, 상단-우측 제어 포인트 및 하단-좌측 제어 포인트의 모션 벡터들들로 설정된다. 이 방법에서는, 모션 벡터 저장 문제는 해결되지만, 다른 서브블록에 대해 사용된 것과 일치하지 않는 모션 벡터가 제어 포인트가 위치된 서브블록에 대한 모션 보상을 수행하는 데 사용되기 때문에, 예측이 부정확하고 코딩 효율이 감소된다.
종래 기술의 단점들을 해결하고, 모션 벡터 저장 문제를 해결하고, 코딩 프로세스에서의 예측 정확도를 향상시키고, 코딩 효율을 향상시키기 위해, 본 발명의 실시예들에서는 전술한 상속 제어 포인트 모션 벡터 예측 방법이 개선된다.
본 발명의 실시예들에서 제공되는 개선된 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 후보 제어 포인트 모션 벡터를 결정하는 프로세스에서, 현재 블록의 후보 제어 포인트 모션 벡터들은, 이웃하는 아핀 코딩 블록(또는 이웃하는 아핀 디코딩 블록)의 제어 포인트들의 모션 벡터들을 사용하는 대신, 이웃하는 아핀 코딩 블록(또는 이웃하는 아핀 디코딩 블록)의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출된다. 각각의 이웃하는 아핀 코딩 블록(또는 이웃하는 아핀 디코딩 블록)의 서브블록의 모션 벡터가 도출된 후, 제어 포인트의 모션 벡터는 저장될 필요가 없다. 구체적으로, 현재 블록의 제어 포인트의 모션 벡터는 오직 현재 블록의 서브블록의 모션 벡터를 도출하기 위해서 사용되지만, 이후 처리될 다른 이웃하는 블록에 대한 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록의 모션 벡터만 저장하면 되고, 서브블록의 모션 벡터를 사용함으로써 모션 보상이 수행된다. 이는 모션 벡터 저장 문제를 해결하고, 예측 정확도와 코딩 효율성을 향상시킨다.
이웃하는 아핀 코딩 블록은, 현재 블록에 이웃하며 인코딩 페이즈에서 아핀 모션 모델을 사용함으로써 예측되는 인코딩된 블록이고 그리고 이웃하는 아핀 디코딩 블록은, 현재 블록에 이웃하고 디코딩 페이즈에서 아핀 모션 모델을 사용함으로써 예측되는 디코딩된 블록이다. 본 명세서에서, 현재 블록의 경우, W는 현재 블록의 폭을 표현하는 데 사용될 수 있고, H는 현재 블록의 높이를 표현하는 데 사용될 수 있다. 이웃하는 아핀 코딩 블록의 경우, U는 이웃하는 아핀 코딩 블록의 폭을 표현하는 데 사용될 수 있고, V는 이웃하는 아핀 코딩 블록의 높이를 표현하는 데 사용될 수 있다.
다음은 향상된 상속 제어 포인트 모션 벡터 예측 방법의 일부 특정 구현들을 상세히 추가로 설명한다. 다음은 디코더 측의 관점에서 개선된 상속 제어 포인트 모션 벡터 예측 방법을 설명한다는 것이 유의되어야 한다. 인코더 측에서 향상된 상속 제어 포인트 모션 벡터 예측 방법에 대해서는, 구현에 대한 다음의 설명을 참조한다. 명세서의 간결성을 위해 상세사항들은 다시 설명되지 않는다.
개선된 상속 제어 포인트 모션 벡터 예측 방법의 일부 예들은, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우를 먼저 설명한다.
예에서, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우, 이웃하는 아핀 코딩 블록의 2개의 서브블록들의 모션 벡터들 및 2개의 서브블록들의 중심 포인트들의 좌표가, 4-파라미터 아핀 모션 모델을 형성하여 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터를 도출하기 위해 획득되며(여기서, 서브블록들의 중심 포인트들의 수평 좌표 간의 거리가 P이고, 서브블록들의 중심 포인트들의 수직 좌표는 동일함), 여기서 P는 이웃하는 아핀 코딩 블록의 폭(U)보다 작고, P는 2의 거듭 제곱이다.
다른 예에서, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우, 이웃하는 아핀 코딩 블록의 2개의 서브블록들의 모션 벡터들 및 2개의 서브블록들의 중심 포인트들의 좌표가, 4-파라미터 아핀 모션 모델을 형성하여 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터를 도출하기 위해 획득되며(여기서, 서브블록들의 중심 포인트들의 수직 좌표 간의 거리가 Q이고, 서브블록들의 중심 포인트들의 수평 좌표는 동일함), 여기서 Q는 이웃하는 아핀 코딩 블록의 높이(V)보다 작고, Q는 2의 거듭 제곱이다.
개선된 상속 제어 포인트 모션 벡터 예측 방법의 일부 예들은, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우를 후속하여 설명한다.
일 예에서, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 이웃하는 아핀 코딩 블록의 2개의 서브블록들(예를 들어, 제1 서브블록 및 제2 서브 블록으로 지칭됨)의 모션 벡터들 및 2개의 서브블록들의 중심 포인트들의 좌표가 획득되며(여기서, 서브블록들의 중심 포인트들의 수평 좌표 간의 거리는 P이고, 서브블록들의 중심 포인트들의 수직 좌표는 동일함), 그런 다음, 이웃하는 아핀 코딩 블록에서 서브블록의 모션 벡터와 서브블록의 중심 포인트의 좌표가, 6-파라미터 아핀 모션 모델을 형성하여 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터를 도출하기 위해 획득되며(여기서, 서브블록의 중심 포인트의 수평 좌표는 제1 서브블록의 중심 포인트의 수평 좌표와 동일하고, 서브블록의 중심 포인트의 수직 좌표와 제1 서브블록의 중심 포인트의 수직 좌표 간의 거리는 Q임), 여기서, P는 이웃하는 아핀 코딩 블록의 폭(U)보다 작고, P는 2의 거듭 제곱이고, Q는 이웃하는 아핀 코딩 블록의 높이(V)보다 작으며, Q는 2의 거듭 제곱이다.
다른 예에서, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 이웃하는 아핀 코딩 블록의 2개의 서브블록들(예를 들어, 제1 서브블록 및 제2 서브 블록으로 지칭됨)의 모션 벡터들 및 2개의 서브블록들의 중심 포인트들의 좌표가 획득되며(여기서, 서브블록들의 중심 포인트들의 수평 좌표 간의 거리는 P이고, 서브블록들의 중심 포인트들의 수직 좌표는 동일함), 그런 다음, 이웃하는 아핀 코딩 블록에서 서브블록의 모션 벡터와 서브블록의 중심 포인트의 좌표가, 6-파라미터 아핀 모션 모델을 형성하여 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터를 도출하기 위해 획득되며(여기서, 서브블록의 중심 포인트의 수평 좌표는 제2 서브블록의 중심 포인트의 수평 좌표와 동일하고, 서브블록의 중심 포인트의 수직 좌표와 제2 서브블록의 중심 포인트의 수직 좌표 간의 거리는 Q임), 여기서, P는 이웃하는 아핀 코딩 블록의 폭(U)보다 작고, P는 2의 거듭 제곱이고, Q는 이웃하는 아핀 코딩 블록의 높이(V)보다 작으며, Q는 2의 거듭 제곱이다.
다른 예에서, 이웃하는 아핀 코딩 블록의 파라미터 유형이 고려되지 않고, 이웃하는 아핀 코딩 블록의 2개의 서브블록들(예를 들어, 제1 서브블록 및 제2 서브 블록으로 지칭됨)의 모션 벡터들 및 2개의 서브블록들의 중심 포인트들의 좌표가 직접 획득되며(여기서, 서브블록들의 중심 포인트들의 수평 좌표 간의 거리는 P이고, 서브블록들의 중심 포인트들의 수직 좌표는 동일함), 그런 다음, 이웃하는 아핀 코딩 블록에서 서브블록의 모션 벡터와 서브블록의 중심 포인트의 좌표가, 6-파라미터 아핀 모션 모델을 형성하여 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터를 도출하기 위해 획득되며(여기서, 서브블록의 중심 포인트의 수평 좌표는 제1 서브블록의 중심 포인트의 수평 좌표와 동일하고, 서브블록의 중심 포인트의 수직 좌표와 제1 서브블록의 중심 포인트의 수직 좌표 간의 거리는 Q임), 여기서, P는 이웃하는 아핀 코딩 블록의 폭(U)보다 작고, P는 2의 거듭 제곱이고, Q는 이웃하는 아핀 코딩 블록의 높이(V)보다 작으며, Q는 2의 거듭 제곱이다.
본 발명의 실시예들에서, 2개의 서브블록들의 중심 포인트들 간의 거리가 2의 거듭 제곱이라는 것이 유의되어야 한다. 이는 모션 벡터 도출을 시프트 방식으로 구현하는 것을 돕고, 따라서 구현 복잡성이 감소된다.
또한, 전술한 예들에서, 서브블록의 중심 포인트는 단지 설명의 용이성을 위해 사용된다는 것이 유의되어야 한다. 실제 적용에서, 이웃하는 아핀 코딩 블록에 사용되는, 서브블록의 좌표 위치(이는 간략히 이웃하는 아핀 코딩 블록의 미리 설정된 서브 블록 위치로 지칭될 수 있음)는, 코딩시에 서브블록의 모션 벡터를 계산하는 데 사용되는 위치와 일치해야 한다(구체적으로, 이웃하는 아핀 코딩 블록의 서브블록에 대해, 서브블록의 미리 설정된 위치에 있는 픽셀의 모션 벡터가 서브블록의 모든 픽셀들의 모션 벡터들을 표현하는 데 사용됨). 따라서, 다양한 유형들의 미리 설정된 서브블록 위치들이 존재할 수 있다. 예를 들어, 미리 설정된 서브블록 위치는 이웃하는 아핀 코딩 블록의 서브블록에서 상단-좌측 픽셀의 위치이다. 구체적으로, 상단-좌측 픽셀이 코딩시에 서브블록의 모션 벡터를 계산하기 위해 사용되는 경우, 서브블록의 상단-좌측 픽셀의 좌표가 또한 전술한 예들에서 사용되어야 한다. 다른 예로, 미리 설정된 서브블록 위치는 이웃하는 아핀 코딩 블록의 서브블록에서 기하학적 중심에 가장 가까운 픽셀의 위치이다. 다른 예로, 미리 설정된 서브블록 위치는 이웃하는 아핀 코딩 블록의 서브블록에서 상단-우측 픽셀의 위치이다.
설명의 편의를 위해, 서브블록 중심 포인트가 다음의 예들에서 설명을 위한 예로 사용된다. 다른 서브블록 위치의 구현에 대해서는 설명을 참조한다. 상세사항들은 다시 설명되지 않는다.
본 발명의 실시예들의 가능한 적용 시나리오에서, 아핀 코딩 블록 사용 조건이 제한될 수 있고, 따라서 이웃하는 아핀 코딩 블록이 수평 방향으로 적어도 2개의 서브블록들로 파티셔닝되고 수직 방향으로 적어도 2개의 서브블록들로 파티셔닝될 수 있다. 예를 들어, 서브블록의 크기가 M x N이라고 가정되며, 여기서 M은 4, 8 또는 16과 같은 정수이고, N은 4, 8 또는 16과 같은 정수이다. 이 경우, 아핀 코딩 블록의 허용 크기는, 폭(W)이 2M 보다 크거나 같고 높이(H)가 2N 보다 크거나 같은 크기이다. 현재 코딩 유닛의 크기가 아핀 코딩 블록 사용 조건을 충족하지 않는 경우, 표 1의 affine_inter_flag 또는 affine_merge_flag와 같은 아핀-관련 구문 요소는 파싱될 필요가 없을 수 있다.
본 발명의 실시예에서, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록이라고 가정된다. 도 10에 도시된 바와 같이, 현재 블록의 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이면, 폭은 U이고, 높이는 V이며, 파티셔닝을 통해 획득된 서브블록의 크기는 M x N이며(예를 들어, 도 10에 도시된 이웃하는 아핀 코딩 블록의 서브블록의 크기는 4 x 4 임), 위치(x4 + M/2, y4 + N/2)의 모션 벡터(vx4, vy4) 및 위치(x4 + M/2 + P, y4 + N/2)의 모션 벡터(vx5, vy5)가 4-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(27):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(28)에 따른 계산을 통해 획득된다. 선택적으로, 여기서 (x1, y1)의 값은 (x0 + W, y0)로 설정될 수 있으며, 여기서 W는 현재 블록의 폭이다.
선택적으로(예를 들어, 현재 블록이 6-파라미터 아핀 코딩 블록임), 현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)가 다음 공식(29)에 따른 계산을 통해 획득된다. 선택적으로, 여기서 (x2, y2)의 값은 (x0, y0 + H)로 설정될 수 있으며, 여기서 H는 현재 블록의 높이이다.
본 발명의 실시예에서, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록이라고 가정된다. 도 10이 계속해서 예로서 사용된다. 현재 블록의 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이면, 폭은 U이고, 높이는 V이며, 파티셔닝을 통해 획득된 서브블록의 크기는 M x N이며(예를 들어, 도 10에 도시된 이웃하는 아핀 코딩 블록의 서브블록의 크기는 4 x 4 임), 위치(x4 + M/2, y4 + N/2)의 모션 벡터(vx4, vy4), 위치(x4 + M/2 + P, y4 + N/2)의 모션 벡터(vx5, vy5) 및 위치(x4 + M/2, y4 + N/2 + Q)의 모션 벡터(vx6, vy6)가 6-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(30):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(31)에 따른 계산을 통해 획득된다. 선택적으로, 여기서 (x1, y1)의 값은 (x0 + W, y0)로 설정될 수 있으며, 여기서 W는 현재 블록의 폭이다.
선택적으로(예를 들어, 현재 블록이 6-파라미터 아핀 코딩 블록임), 현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)가 다음 공식(32)에 따른 계산을 통해 획득된다. 선택적으로, 여기서 (x2, y2)의 값은 (x0, y0 + H)로 설정될 수 있으며, 여기서 H는 현재 블록의 높이이다.
본 발명의 실시예들에서의 방법은 조건을 제한하지 않고 모든 이웃하는 아핀 코딩 블록들에 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 3개의 서브블록들의 모션 벡터들이 도출을 위한 6-파라미터 아핀 모션 모델을 형성하기 위해 사용된다.
본 발명의 실시예들에서, 코딩 블록의 폭(U)과 높이(V)가 각각 일반적으로 2의 거듭 제곱이기 때문에, P의 값은 U/2일 수 있고 Q의 값은 V/2일 수 있다는 것이 유의되어야 한다. 예를 들어, U가 8, 16, 32, 64 또는 128일 때, P는 4, 8, 16, 32 또는 64이다. 예를 들어, V가 8, 16, 32, 64 또는 128일 때, Q는 4, 8, 16, 32 또는 64이다.
전술한 실시예들은 단지 예로서 사용된다는 것의 유의되어야 한다. 본 발명의 다른 실시예에서, 중심 포인트들이 수평 거리(P)와 수직 거리(Q)를 갖는 다른 2개의 서브블록들이 대안적으로 사용될 수 있다. 상세사항들은 여기서 설명되지 않는다.
또한, 실제 구현에서, P와 Q가 각각 2의 거듭 제곱이기 때문에, 전술한 공식 (27) 내지 공식 (32)의 나눗셈 연산이 우향 시프트(right shift) 방식으로 구현될 수 있다. 또한, 나눗셈의 정밀도 손실을 감소시키기 위해, 전술한 공식 (27) 내지 공식 (32)의 방정식의 양 끝(end)은 증분을 위해 좌향 시프트될 수 있고, 그런 다음 우향 시프트가 수행된다.
특정 구현 연산은 다음의 절차로 수행될 수 있으며, 여기서 Log2는 2의 로그를 취하는 함수이고, <<는 좌향 시프트를 표현하고, >>는 우향 시프트를 표현한다.
인접하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 다음이 가정된다:
인접하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우, 다음이 가정된다:
그런 다음, 현재 아핀 코딩 블록의 제어 포인트의 모션 벡터들은 다음 공식들에 따라 계산될 수 있다:
반올림 함수(round function) 함수의 연산은 다음과 같다: 임의의 입력(K)에 대해, 출력(K)은 다음과 같은 방식으로 획득된다:
본 발명의 다른 실시예에서, 이웃하는 아핀 코딩 블록이 현재 아핀 코딩 블록 위 CTU에 있는 경우, 메모리 판독 시간량을 감소시키기 위해서, 이웃하는 아핀 코딩 블록에 속하며 CTU의 맨 하단에 위치된 2개의 서브블록들의 모션 벡터들이 도출을 위해 획득될 수 있다. 현재 블록의 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이면, 폭은 U이고, 높이는 V이며, 파티셔닝을 통해 획득된 서브블록의 크기는 M x N이며, 위치(x4 + M/2, y4 + V - N/2)의 모션 벡터(vx4, vy4) 및 위치(x4 + M/2 + P, y4 + V - N/2)의 모션 벡터(vx5, vy5)가 4-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(33):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(34):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)는 다음 공식(35):
에 따른 계산을 통해 획득된다
본 발명의 실시예들에서의 방법은, 조건을 제한하지 않고, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우에만 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우, 중심 포인트들이 거리(P)를 갖는 2개의 하단 서브블록들의 모션 벡터들이 도출을 위해 사용된다.
본 발명의 다른 실시예에서, 이웃하는 아핀 코딩 블록이 현재 아핀 코딩 블록의 좌측에서 CTU에 위치된 경우, 메모리 판독 시간량을 감소시키기 위해서, 이웃하는 아핀 코딩 블록에 속하며 CTU에서 최우측 위치들에 있는 2개의 서브블록들의 모션 벡터들이 도출을 위해 획득될 수 있다. 현재 블록의 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이면, 폭은 U이고, 높이는 V이며, 파티셔닝을 통해 획득된 서브블록의 크기는 M x N이며, 위치(x4 + U - M/2, y4 + N/2)의 모션 벡터(vx4, vy4) 및 위치(x4 + U - M/2, y4 + N/2 + Q)의 모션 벡터(vx5, vy5)가 4-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(36):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(37):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)는 다음 공식(38):
에 따른 계산을 통해 획득된다.
본 발명의 실시예들에서의 방법은, 조건을 제한하지 않고, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우에만 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 이웃하는 아핀 코딩 블록이 4-파라미터 아핀 코딩 블록인 경우, 중심 포인트들이 거리(Q)를 갖는 2개의 최우측 서브블록들의 모션 벡터들이 도출을 위해 사용된다.
본 발명의 다른 실시예에서, 이웃하는 아핀 코딩 블록이 현재 아핀 코딩 블록 위 CTU에 있고 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 메모리 판독 시간량을 감소시키기 위해서, 이웃하는 아핀 코딩 블록에 속하며 CTU의 하단에 위치된 2개의 서브블록들의 모션 벡터들 및 이웃하는 아핀 코딩 블록의 상단 서브블록의 모션 벡터가 도출을 위해 획득될 수 있다. 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이고, 폭이 U이고, 높이가 V이고, 파티셔닝을 통해 획득되는 서브블록의 크기가 M x N이면, 위치(x4 + M/2, y4 + V - N/2)의 모션 벡터(vx4, vy4), 위치(x4 + M/2 + P, y4 + V - N/2)의 모션 벡터(vx5, vy5), 및 위치(x4 + M/2, y4 + V - N/2 - Q)의 모션 벡터(vx6, vy6)가 6-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(39):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(40):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)는 다음 공식(41):
에 따른 계산을 통해 획득된다.
본 발명의 실시예들에서의 방법은, 조건을 제한하지 않고, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우에만 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 중심 포인트들이 거리(P)를 갖는 2개의 하단 서브블록들의 모션 벡터들 및 하단 서브블록으로부터 수직 거리(Q)를 갖는 서브블록의 모션 벡터가 도출을 위해 사용된다.
본 발명의 실시예들에서의 방법은 조건을 제한하지 않고 모든 이웃하는 아핀 코딩 블록들에 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 중심 포인트들이 거리(P)를 갖는 2개의 하단 서브블록들의 모션 벡터들 및 하단 서브블록으로부터 수직 거리(Q)를 갖는 서브블록의 모션 벡터가 도출을 위해 사용된다.
본 발명의 다른 실시예에서, 이웃하는 아핀 코딩 블록이 현재 아핀 코딩 블록의 좌측에서 CTU에 위치되고 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 메모리 판독 시간량을 감소시키기 위해서, 이웃하는 아핀 코딩 블록에 속하며 CTU에서 최우측 위치들에 있는 2개의 서브블록들의 모션 벡터들 및 이웃하는 아핀 코딩 블록의 좌측 서브브록의 모션 벡터가 도출을 위해 획득될 수 있다. 이웃하는 아핀 코딩 블록의 상단-좌측 코너의 좌표가 (x4, y4)이고, 폭이 U이고, 높이가 V이고, 파티셔닝을 통해 획득되는 서브블록의 크기가 M x N이면, 위치(x4 + U - M/2, y4 + N/2)의 모션 벡터(vx4, vy4), 위치(x4 + U - M/2, y4 + N/2 + Q)의 모션 벡터(vx5, vy5), 및 위치(x4 + U - M/2 - P, y4 + N/2)의 모션 벡터(vx6, vy6)가 6-파라미터 아핀 모션 모델을 형성하기 위해 획득된다.
그런 다음, 현재 아핀 코딩 블록의 상단-좌측 제어 포인트(x0, y0)의 모션 벡터(vx0, vy0)가 다음 공식(42):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 상단-우측 제어 포인트(x1, y1)의 모션 벡터(vx1, vy1)는 다음 공식(43):
에 따른 계산을 통해 획득된다.
현재 아핀 코딩 블록의 하단-좌측 제어 포인트(x2, y2)의 모션 벡터(vx2, vy2)는 다음 공식(44):
에 따른 계산을 통해 획득된다.
본 발명의 실시예들에서의 방법은, 조건을 제한하지 않고, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우에만 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 이웃하는 아핀 코딩 블록이 6-파라미터 아핀 코딩 블록인 경우, 중심 포인트들이 거리(Q)를 갖는 2개의 최우측 서브블록들의 모션 벡터들 및 최우측 서브블록으로부터 수평 거리(P)를 갖는 서브블록의 모션 벡터가 도출을 위해 사용된다.
본 발명의 실시예들에서의 방법은 조건을 제한하지 않고 모든 이웃하는 아핀 코딩 블록들에 대안적으로 적용될 수 있다는 것이 유의되어야 한다. 구체적으로, 중심 포인트들이 거리(Q)를 갖는 2개의 최우측 서브블록들의 모션 벡터들 및 최우측 서브블록으로부터 수평 거리(P)를 갖는 서브블록의 모션 벡터가 도출을 위해 사용된다.
향상된 상속 제어 포인트 모션 벡터 예측 방법에 기반하여, 이하에서는 인코더 측 또는 디코더 측의 관점에서 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법을 추가로 설명한다. 도 11을 참조로, 방법은, 제한되는 것을 아니지만, 다음의 단계들을 포함한다.
단계 701: 처리될 픽처 블록의 하나의 공간 참조 블록을 획득한다.
처리될 픽처 블록은, 비디오 픽처를 파티셔닝함으로써 획득되고, 공간 참조 블록은 처리될 픽처 블록에 공간적으로 이웃하는 디코딩된 블록이다. 인코더 측에서, 처리될 픽처 블록은 또한 현재 아핀 인코딩 블록(아핀 코딩 블록)으로 지칭될 수 있고, 공간 참조 블록은 또한 이웃하는 아핀 인코딩 블록(아핀 코딩 블록)으로 지칭될 수 있다. 디코더 측에서, 처리될 픽처 블록은 또한, 현재 아핀 디코딩 블록(아핀 코딩 블록)으로 지칭될 수 있고, 공간 참조 블록은 또한 이웃하는 아핀 디코딩 블록(아핀 코딩 블록)으로 지칭될 수 있다. 설명의 편의를 위해, 본 실시예에서, 처리될 픽처 블록은 일반적으로 현재 블록으로 지칭될 수 있고, 공간 참조 블록은 일반적으로 이웃하는 블록으로 지칭될 수 있다.
특정 실시예에서, 현재 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성이 미리 설정된 순서로 결정될 수 있고, 그런 다음, 미리 설정된 순서의 제1 이용가능한 후보 참조 블록이 획득되어 공간 참조 블록으로서 사용된다. 미리 설정된 공간 위치들에 있는 후보 참조 블록들은, 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함한다. 예를 들어, 후보 참조 블록들의 이용가능성은, 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 → 바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 → 하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로 연속적으로 체크된다.
도 7이 예로서 사용된다. 현재 블록 주변의 이웃하는-위치 블록들은 도 7에서 A1 → B1 → B0 → A0 → B2 순서로 트래버싱되어, 이웃하는-위치 블록이 위치된 이웃하는 블록을 찾을 수 있다.
특정 실시예에서, 후보 참조 블록이 이용가능한지 여부는 다음의 방법에 따라 결정될 수 있다: 후보 참조 블록 및 처리될 픽처 블록이 동일한 픽처 영역에 있고 후보 참조 블록이 아핀 모션 모델에 기반하여 코딩되는 경우, 후보 참조 블록은 이용가능한 것으로 결정된다.
단계 702: 공간 참조 블록의 2개 이상의 미리 설정된 서브블록 위치들이 결정된다.
구체적으로, 공간 참조 블록에서 2개 이상의 서브블록들이 결정될 수 있다. 각각의 서브블록은 대응하는 미리 설정된 서브블록 위치를 가지며, 미리 설정된 서브블록 위치는, 코딩 동안 서브블록의 모션 벡터를 계산하는 데 사용되는 위치와 일치한다. 구체적으로, 이웃하는 아핀 코딩 블록의 서브블록에 대해, 서브블록 내의 미리 설정된 위치에 있는 픽셀의 모션 벡터가 서브블록 내의 모든 픽셀들의 모션 벡터들을 표현하는 데 사용된다. 미리 설정된 위치에 있는 픽셀의 모션 벡터는, 미리 설정된 위치에 있는 픽셀이 위치된 서브블록을 예측하기 위해 후속 모션 보상에 사용될 수 있다.
특정 구현에서, 미리 설정된 서브블록 위치는 서브블록의 상단-좌측 픽셀의 위치, 서브블록의 기하학적 중심의 위치, 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치, 서브블록의 상단-우측 픽셀의 위치 등일 수 있다.
특정 실시예에서, 공간 참조 블록 내의 2개의 서브블록들이 결정될 수 있고, 2개의 서브블록들에 대응하는 2개의 미리 설정된 서브블록 위치들 간의 거리는 S이고, 여기서 S는 2의 K 제곱이고, K는 음이 아닌 정수이다. 이는, 후속 모션 벡터 도출을 시프트 방식으로 구현하는 것을 돕고, 따라서 구현 복잡성이 감소된다.
예에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 공간 참조 블록의 폭이다.
예에서, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, Q는 2의 R 제곱이고, R은 음이 아닌 정수이고, Q는 V보다 작고, 그리고 V는 공간 참조 블록의 높이이다.
예에서, 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 모델이면, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2), 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2), 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, Q는 2의 R 제곱이고, K 및 R은 음이 아닌 정수들이고, P는 U보다 작고, Q는 V보다 작고, U는 공간 참조 블록의 폭이고, 그리고 V는 공간 참조 블록의 높이이다.
다른 예로, 현재 블록의 상단 경계가 현재 블록을 포함하는 CTU(Coding Tree Unit)의 상단 경계와 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 위에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 상단-우측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 현재 블록의 상단 경계에 인접한다.
다른 예에서, 현재 블록의 좌측 경계가 현재 블록을 포함하는 CTU(coding tree unit)의 좌측 경계와 일치하고 그리고 공간 참조 블록이 현재 블록의 바로 좌측에, 현재 블록의 상단-좌측에 또는 현재 블록의 하단-좌측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 현재 블록의 좌측 경계에 인접한다.
단계 703: 미리 설정된 픽셀 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득한다.
본 발명의 이 실시예에서, 가능한 구현에서, 현재 블록의 후보 제어 포인트 모션 벡터는 개선된 상속 제어 포인트 모션 벡터 예측 방법을 사용함으로써 결정된다. 구체적으로, 현재 블록의 미리 설정된 픽셀 위치들의 모션 벡터들은, 이웃하는 아핀 코딩 블록(또는 이웃하는 아핀 디코딩 블록)의 적어도 2개의 서브블록들의 모션 벡터들로부터 외삽된다. 미리 설정된 픽셀 위치들은 현재 블록의 제어 포인트들이다. 예를 들어, 현재 블록의 아핀 모션 모델이 4-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 현재 블록에서 상단-좌측 픽셀과 상단-우측 픽셀일 수 있다. 현재 블록의 아핀 모션 모델이 6-파라미터 아핀 모션 모델이면, 현재 블록의 제어 포인트들은 현재 블록에서 상단-좌측 픽셀, 상단-우측 픽셀, 하단-좌측 픽셀일 수 있다.
개선된 상속 제어 포인트 모션 벡터 예측 방법에 대한 상세한 내용은 위에서 상세히 설명되었으며, 본 실시예는 그 내용을 참조하여 구현될 수 있다. 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
단계 704: 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득한다.
구체적으로, 현재 블록의 각각의 서브블록에 대해(하나의 서브블록은 하나의 모션 보상 유닛과 동등할 수 있으며, 서브블록의 폭 및 높이는 현재 블록의 폭 및 높이보다 작음), 모션 보상 유닛의 미리 설정된 위치에 있는 픽셀의 모션 정보는 모션 보상 유닛의 모든 픽셀들의 모션 정보를 표현하는 데 사용될 수 있다. 모션 보상 유닛의 크기가 M x N이고, 미리 설정된 위치의 픽셀은 중앙 픽셀(M/2, N/2), 상단-좌측 픽셀(0, 0), 상단-우측 픽셀(M -1, 0) 또는 모션 보상 유닛의 다른 위치에 있는 픽셀일 수 있다는 것이 가정된다. 이 경우, 현재 블록의 각각의 서브블록의 모션 벡터는 현재 블록의 제어 포인트 모션 정보 및 현재 사용되는 아핀 모션 모델을 기반으로 획득될 수 있으며, 그 후에, 서브블록의 예측된 픽셀 값을 획득하기 위해 모션 보상이 서브블록의 모션 벡터를 기반으로 수행될 수 있다.
디코더 측 및 인코더 측에서 도 11의 실시예의 상세한 구현 프로세스에 대해서는, 도 12의 실시예 및 도 14의 실시예의 후속 설명들을 참조한다는 것이 유의되어야 한다. 명세서의 간결함을 위해 세부 사항은 여기에서 설명되지 않는다.
본 발명의 실시예에서 개선된 상속 제어 포인트 모션 벡터 예측 방법이 사용됨을 알 수 있다. 개선된 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 제어 포인트들의 모션 벡터들이, 이웃하는 블록의 제어 포인트들의 모션 벡터들을 사용하는 대신, 이웃하는 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출된 다음, 현재 블록의 서브블록들의 모션 벡터들이 제어 포인트들의 모션 벡터들에 기반하여 도출되고, 현재 블록에 대한 예측이 모션 보상을 통해 구현된다는 것을 알 수 있다. 현재 블록의 제어 포인트들의 모션 벡터들은 이후에 저장될 필요가 없다. 구체적으로, 현재 블록의 제어 포인트들의 모션 벡터들은 오직 현재 코딩 블록의 서브블록들의 모션 벡터들을 도출하기 위해서만 사용되며, 이웃하는 블록의 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록들의 모션 벡터들만 저장하면 되고, 서브블록들의 모션 벡터들을 사용함으로써 모션 보상이 수행된다. 이는, 모션 벡터 저장 문제를 해결하고, 다른 서브블록에 사용되는 것과 일치하지 않는 모션 벡터가 제어 포인트들이 위치된 서브블록에 대한 모션 보상을 수행하는 데 이용되는 경우를 회피하며, 따라서 예측 정확도가 향상된다.
향상된 상속 제어 포인트 모션 벡터 예측 방법에 기반하여, 이하에서는 디코더 측의 관점에서 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법을 추가로 설명한다. 도 12을 참조로, 방법은, 제한되는 것을 아니지만, 다음의 단계들을 포함한다.
단계 801: 현재 블록의 인터 예측 모드를 결정하기 위해 비트스트림을 파싱한다.
구체적으로, 현재 블록의 인터 예측 모드를 결정하기 위해, 표 1에 도시된 구문 구조를 기반으로 비트스트림이 파싱될 수 있다.
현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 AMVP 모드라는 것이 결정되면, 즉, 구문 요소들 merge_flag = 0 및 affine_inter_flag = 1이 현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 AMVP 모드임을 지시한다는 것이 결정되면, 단계(802a) 내지 단계(806a)가 후속적으로 수행된다.
현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 병합 모드라는 것이 결정되면, 즉, 구문 요소들 merge_flag = 1 및 affine_merge_flag = 1이, 현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 병합 모드임을 지시한다는 것이 결정되면, 단계(802b) 내지 단계(805b)가 후속적으로 수행된다.
단계 802a: 아핀 모션 모델-기반 AMVP 모드에 대응하는 후보 모션 벡터 목록을 구성한다.
본 발명의 이 실시예에서, 현재 블록의 후보 제어 포인트 모션 벡터가 개선된 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법에 기반하여 획득되고, AMVP 모드에 대응하는 후보 모션 벡터 목록에 추가될 수 있다.
개선된 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 후보 제어 포인트 모션 벡터를 결정하는 프로세스에서, 현재 블록의 후보 제어 포인트 모션 벡터 예측자들(후보 모션 벡터 2-튜플/트리플렛/쿼드러플)이 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출되고, 후보 모션 벡터 목록에 추가된다.
현재 블록에 대해 4-파라미터 아핀 모션 모델이 사용되는 경우, 후보 모션 벡터 목록은 2-튜플 목록을 포함할 수 있다. 2-튜플 목록은 4-파라미터 아핀 모션 모델을 구성하기 위해 사용되는 하나 이상의 2-튜플들을 포함한다.
현재 블록에 대해 6-파라미터 아핀 모션 모델이 사용되는 경우, 후보 모션 벡터 목록은 트리플렛 목록을 포함할 수 있다. 트리플렛 목록은 6-파라미터 아핀 모션 모델을 구성하기 위해 사용되는 하나 이상의 트리플렛들을 포함한다.
현재 블록에 대해 8-파라미터 쌍선형 모델이 사용되는 경우, 후보 모션 벡터 목록은 쿼드러플 목록을 포함할 수 있다. 쿼드러플 목록은 8-파라미터 쌍선형 모델을 구성하기 위해 사용되는 하나 이상의 쿼드러플들을 포함한다.
가능한 적용 시나리오에서, 후보 모션 벡터 2-튜플/트리플렛/쿼드러플 목록은 특정 규칙에 따라 프루닝 및 소팅될 수 있으며, 특정 수량의 후보 모션 벡터들을 획득하기 위해 트렁케이트되거나 패딩될 수 있다.
개선된 상속 제어 포인트 모션 벡터 예측 방법에 대해서는, 도 7이 예로서 사용된다. 현재 블록 주위의 이웃하는-위치 블록들이 도 7에서 A1→ B1→ B0→ A0→ B2 순서로 트래버싱되어, 이웃하는-위치 블록이 위치되는 아핀 코딩 블록을 찾을 수 있고, 아핀 모션 모델이 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 구성되고, 그런 다음, 현재 블록의 후보 제어 포인트 모션 벡터들(후보 모션 벡터 2-튜플/트리플렛/쿼드러플)이 도출되어 후보 모션 벡터 목록에 추가된다. 또 다른 서치 순서가 본 발명의 이 실시예에 또한 적용될 수 있다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
개선된 상속 제어 포인트 모션 벡터 예측 방법에 대한 상세한 내용은 전술한 관련 설명들을 참조한다. 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
또한, 아핀 모션 모델-기반 AMVP 모드를 기반으로 하는 구성된 제어 포인트 모션 벡터 예측 방법의 내용이 전술한 (4)에 또한 상세히 설명되었다. 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
단계 803a: 최적의 제어 포인트 모션 벡터 예측자를 결정하기 위해 비트스트림을 파싱한다.
구체적으로, 후보 모션 벡터 목록의 인덱스 값이 비트스트림을 파싱함으로써 획득되고, 최적의 제어 포인트 모션 벡터 예측자가, 인덱스 값을 기반으로, 단계(602a)에서 구성된 후보 모션 벡터 목록으로부터 결정된다.
예를 들어, 현재 코딩 블록에 사용되는 아핀 모션 모델이 4-파라미터 아핀 모션 모델(MotionModelIdc이 1)이면, 인덱스 값이 파싱을 통해 획득된다. 예를 들어, 인덱스 값은 mvp_l0_flag 또는 mvp_l1_flag이다. 2개의 제어 포인트들의 최적의 모션 벡터 예측자들이 인덱스 값을 기반으로 후보 모션 벡터 목록으로부터 결정된다.
또 다른 예로, 현재 코딩 블록에 사용되는 아핀 모션 모델이 6-파라미터 아핀 모션 모델(MotionModelIdc가 2)이면, 인덱스 값이 파싱을 통해 획득되고, 3개의 제어 포인트들의 최적의 모션 벡터 예측자들이 인덱스 값을 기반으로 후보 모션 벡터 목록으로부터 결정된다.
또 다른 예로, 현재 코딩 블록에 사용되는 아핀 모션 모델이 8-파라미터 쌍선형 모델이면, 인덱스 값이 파싱을 통해 획득되고, 4개의 제어 포인트들의 최적의 모션 벡터 예측자들이 인덱스 값을 기반으로 후보 모션 벡터 목록으로부터 결정된다.
단계 804a: 제어 포인트의 모션 벡터를 결정하기 위해 비트스트림을 파싱한다.
구체적으로, 제어 포인트의 모션 벡터 차이가 비트스트림을 파싱함으로써 획득되고, 그런 다음, 제어 포인트의 모션 벡터가, 단계(803a)에서 결정된 최적의 제어 포인트 모션 벡터 예측자와 제어 포인트의 모션 벡터 차이에 기반하여 획득된다.
예를 들어, 현재 코딩 블록에 사용되는 아핀 모션 모델은 4-파라미터 아핀 모션 모델(MotionModelIdc이 1)이다. 순방향 예측이 예로서 사용되며, 2개의 제어 포인트들의 모션 벡터 차이들은 각각 mvd_coding(x0, y0, 0, 0) 및 mvd_coding(x0, y0, 0, 1)이다. 현재 블록의 2개의 제어 포인트들의 모션 벡터 차이들은 비트스트림을 파싱함으로써 획득된다. 예를 들어, 상단-좌측 제어 포인트와 상단-우측 제어 포인트의 모션 벡터 차이들은 비트스트림들을 파싱함으로써 획득될 수 있다. 그런 다음, 각각의 제어 포인트의 모션 벡터 차이 및 모션 벡터 예측자가 추가되어 제어 포인트의 모션 벡터가 획득된다. 다른 말로, 현재 블록의 상단-좌측 제어 포인트와 상단-우측 제어 포인트의 모션 벡터들이 획득된다.
다른 예로, 현재 코딩 블록에 사용되는 아핀 모션 모델은 6-파라미터 아핀 모션 모델(MotionModelIdc이 2)이다. 순방향 예측이 예로서 사용되며, 3개의 제어 포인트들의 모션 벡터 차이들은 각각 mvd_coding(x0, y0, 0, 0), mvd_coding(x0, y0, 0, 1), 및 mvd_coding(x0, y0, 0, 2)이다. 현재 블록의 3개의 제어 포인트들의 모션 벡터 차이들은 비트스트림을 파싱함으로써 획득된다. 예를 들어, 상단-좌측 제어 포인트, 상단-우측 제어 포인트 및 하단-좌측 제어 포인트의 모션 벡터 차이들은 비트스트림드을 파싱함으로써 획득될 수 있다. 그런 다음, 각각의 제어 포인트의 모션 벡터 차이 및 모션 벡터 예측자가 추가되어 제어 포인트의 모션 벡터가 획득된다. 다른 말로, 현재 블록의 상단-좌측 제어 포인트, 상단-우측 제어 포인트 및 하단-좌측 제어 포인트의 모션 벡터들이 획득된다.
본 발명의 이 실시예에서, 다른 아핀 모션 모델 및 다른 제어 포인트 위치가 또한 사용될 수 있다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
단계 805a: 현재 블록에 사용되는 아핀 모션 모델 및 제어 포인트의 모션 벡터를 기반으로 현재 블록의 각각의 서브블록의 모션 벡터가 획득된다.
현재 아핀 코딩 블록의 각각의 서브블록에 대해(하나의 서브블록은 하나의 모션 보상 유닛과 동등할 수 있으며, 서브블록의 폭 및 높이는 현재 블록의 폭 및 높이보다 작음), 모션 보상 유닛의 미리 설정된 위치에 있는 픽셀의 모션 정보는 모션 보상 유닛의 모든 픽셀들의 모션 정보를 표현하는 데 사용될 수 있다. 모션 보상 유닛의 크기가 M x N이고, 미리 설정된 위치의 픽셀은 중앙 픽셀(M/2, N/2), 상단-좌측 픽셀(0, 0), 상단-우측 픽셀(M -1, 0) 또는 모션 보상 유닛의 다른 위치에 있는 픽셀일 수 있다는 것이 가정된다.
다음은 모션 보상 유닛의 중심 포인트를 설명의 예로 사용한다. 도 13은 현재 아핀 코딩 블록 및 모션 보상 유닛(서브블록)을 도시한다. 도면에서 각각의 작은 상자는 하나의 모션 보상 유닛을 표현한다. 도 13에서, V0은 현재 아핀 코딩 블록의 상단-좌측 제어 포인트의 모션 벡터를 표현하고, V1은 현재 아핀 코딩 블록의 상단-우측 제어 포인트의 모션 벡터를 표현하고, V2는 현재 아핀 코딩 블록의 하단-좌측 제어 포인트의 모션 벡터를 표현한다.
현재 아핀 코딩 블록의 상단-좌측 픽셀에 대한 모션 보상 유닛의 중심 포인트의 좌표는 다음 공식(45):
에 따른 계산을 통해 획득될 수 있다.
여기서, i는 수평 방향에서 (좌측에서 우측으로) i번째 모션 보상 유닛이고, j는 수직 방향에서 (위에서 아래로) j번째 모션 보상 유닛이고, (x(i,j), y( i,j ))는 현재 아핀 코딩 블록의 상단-좌측 제어 포인트에 있는 픽셀에 대한 (i, j)번째 모션 보상 유닛의 중심 포인트의 좌표를 표현한다.
현재 아핀 코딩 블록에 사용되는 아핀 모션 모델이 6-파라미터 아핀 모션 모델인 경우, (x( i,j ), y( i,j ))는, 각각의 모션 보상 유닛의 중심 포인트의 모션 벡터를 획득하기 위해, 6-파라미터 아핀 모션 모델에서 공식 (46)에 대입되고, 모션 벡터는 모션 보상 유닛의 모든 픽셀들의 모션 벡터들(vx( i,j ), vy( i,j ))로 사용된다.
현재 아핀 코딩 블록에 사용되는 아핀 모션 모델이 4-파라미터 아핀 모션 모델인 경우, (x( i,j ), y( i,j ))는, 각각의 모션 보상 유닛의 중심 포인트의 모션 벡터를 획득하기 위해, 4-파라미터 아핀 모션 모델에서 공식 (47)에 대입되고, 모션 벡터는 모션 보상 유닛의 모든 픽셀들의 모션 벡터들(vx( i,j ), vy( i,j ))로서 사용된다.
단계 806a: 서브블록의 예측된 픽셀 값을 획득하기 위해, 서브블록의 결정된 모션 벡터를 기반으로 각각의 서브블록에 대한 모션 보상이 수행된다.
단계 802b: 아핀 모션 모델-기반 병합 모드에 대응하는 후보 모션 벡터를 구성한다.
본 발명의 이 실시예에서, 현재 블록의 후보 제어 포인트 모션 벡터가 개선된 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법에 기반하여 획득되고, 병합 모드에 대응하는 후보 모션 벡터 목록에 추가될 수 있다.
개선된 상속 제어 포인트 모션 벡터 예측 방법에서, 현재 블록의 후보 제어 포인트 모션 벡터를 결정하는 프로세스에서, 현재 블록의 후보 제어 포인트 모션 벡터들(후보 모션 벡터 2-튜플/트리플렛/쿼드러플)이 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 도출되고, 후보 모션 벡터 목록에 추가된다.
가능한 적용 시나리오에서, 후보 모션 벡터는 특정 규칙에 따라 프루닝 및 소팅될 수 있으며, 특정 수량의 모션 벡터들을 획득하기 위해 트렁케이트되거나 패딩될 수 있다.
도 8이 예로서 사용된다. 현재 블록 주위의 이웃하는-위치 블록들이 A1→ B1→ B0→ A0→ B2 순서로 트래버싱되어, 이웃하는-위치 블록이 위치되는 아핀 코딩 블록을 찾을 수 있고, 아핀 모션 모델이 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들을 사용함으로써 구성되고, 그런 다음, 현재 블록의 후보 제어 포인트 모션 벡터들(후보 모션 벡터 2-튜플/트리플렛/쿼드러플)이 도출되어 후보 모션 벡터 목록에 추가된다. 또 다른 서치 순서가 본 발명의 이 실시예에 또한 적용될 수 있다는 것이 유의되어야 한다. 상세사항들은 여기서 설명되지 않는다.
구체적으로, 전술한 트래버셜 프로세스에서, 후보 모션 벡터 목록이 비어 있으면, 후보 제어 포인트 모션 정보가 후보 목록에 추가된다. 후보 모션 벡터 목록이 비어 있지 않으면, 후보 모션 벡터 목록의 모션 정보가 연속적으로 트래버싱되고, 후보 제어 포인트 모션 정보와 동일한 모션 정보가 후보 모션 벡터 목록에 존재하는지 여부가 체크된다. 후보 제어 포인트 모션 정보와 동일한 모션 정보가 후보 모션 벡터 목록에 없는 경우, 후보 모션 벡터 목록에 후보 제어 포인트 모션 정보가 추가된다.
후보 모션 정보 중 2개의 피스들이 동일한지를 결정하기 위해, 후보 모션 정보 중 2개 피스들의 순방향/역방향 참조 프레임들이 동일한지 그리고 순방향/역방향 모션 벡터의 수평 성분들과 수직 성분들이 동일한지가 연속적으로 결정될 필요가 있다. 모션 정보의 2개 피스들은 전술한 엘리먼트들 모두가 상이한 경우에만 상이한 것으로 간주된다.
후보 모션 벡터 목록의 모션 정보의 피스들의 수량이 최대 목록 길이 MaxAffineNumMrgCand에 도달하면(MaxAffineNumMrgCand는 1, 2, 3, 4 또는 5와 같은 양의 정수임), 후보 목록이 구성된다. 후보 모션 벡터 목록의 모션 정보의 피스들의 수량이 최대 목록 길이에 도달하지 못하면, 그 다음 이웃하는-위치 블록이 트래버싱된다.
개선된 상속 제어 포인트 모션 벡터 예측 방법의 내용은 전술 한 상세한 설명을 참조한다. 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
또한, 아핀 모션 모델-기반 병합 모드를 기반으로 하는 구성된 제어 포인트 모션 벡터 예측 방법의 내용이 전술한 (4)에 또한 상세히 설명되었다. 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
단계 S803b: 최적의 제어 포인트 모션 정보를 결정하기 위해 비트스트림을 파싱한다.
구체적으로, 후보 모션 벡터 목록의 인덱스 값이 비트스트림을 파싱함으로써 획득되고, 최적의 제어 포인트 모션 정보가, 인덱스 값을 기반으로, 단계(802b)에서 구성된 후보 모션 벡터 목록으로부터 결정된다.
단계 804b: 현재 코딩 블록에 사용된 아핀 모션 모델 및 최적의 제어 포인트 모션 정보를 기반으로 현재 블록의 각각의 서브블록의 모션 벡터가 획득된다. 이 단계의 상세한 구현은 단계(805a)의 설명들을 참조한다. 본 명세서의 간결성을 위해 상세사항들은 여기서 다시 설명되지 않는다.
단계 805b: 서브블록의 예측된 픽셀 값을 획득하기 위해, 서브블록의 결정된 모션 벡터를 기반으로 각각의 서브블록에 대한 모션 보상이 수행된다.
본 발명의 이 실시예에서, 개선된 상속 제어 포인트 모션 벡터 예측 방법이 사용된다는 것을 알 수 있다. 개선된 상속 제어 포인트 모션 벡터 예측 방법에서는, 이웃하는 블록의 제어 포인트의 모션 벡터를 사용할 필요는 없지만, 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들이 사용된다. 각각의 아핀 코딩 블록의 서브블록의 모션 벡터가 도출된 후, 제어 포인트의 모션 벡터는 저장될 필요가 없다. 구체적으로, 현재 코딩 블록의 제어 포인트의 모션 벡터는 오직 현재 코딩 블록의 서브블록의 모션 벡터를 도출하기 위해서만 사용되며, 이웃하는 블록의 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록의 모션 벡터만 저장하면 되고, 서브블록의 모션 벡터를 사용함으로써 모션 보상이 수행된다. 이는 모션 벡터 저장 문제를 해결하고, 예측 정확도를 향상시킨다.
향상된 상속 제어 포인트 모션 벡터 예측 방법에 기반하여, 이하에서는 인코더 측의 관점에서 본 발명의 실시예에 따른 아핀 모션 모델에 기반한 모션 벡터 예측 방법을 추가로 설명한다. 도 14를 참조로, 방법은, 제한되는 것을 아니지만, 다음의 단계들을 포함한다.
단계 901: 현재 블록의 인터 예측 모드를 결정한다.
특정 구현에서, 인코더 측에서의 인터 예측을 위해 복수의 인터 예측 모드들이 미리설정될 수 있다. 예를 들어, 복수의 인트라 예측 모드들은 위에서 설명된 아핀 모션 모델-기반 AMVP 모드 및 아핀 모션 모델 기반 병합 모드를 포함한다. 인코더 측은 현재 블록을 예측하기 위한 최적의 인터 예측 모드를 결정하기 위해 복수의 인터 예측 모드를 트래버싱한다.
다른 특정 구현에서, 인코더 측에서의 인터 예측을 위해 단지 하나의 인터 예측 모드만이 미리설정될 수 있다. 이 경우, 인코더 측은 디폴트 인터 예측 모드가 현재 사용된다는 것을 직접 결정한다. 디폴트 인터 예측 모드는 아핀 모션 모델-기반 AMVP 모드 또는 아핀 모션 모델-기반 병합 모드이다.
본 발명의 이 실시예에서, 현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 AMVP 모드인 것으로 결정되면, 단계(902a) 내지 단계(904a)가 후속적으로 수행된다.
본 발명의 이 실시예에서, 현재 블록의 인터 예측 모드가 아핀 모션 모델-기반 병합 모드인 것으로 결정되면, 단계(902b) 내지 단계(904b)가 후속적으로 수행된다.
단계 902a: 아핀 모션 모델-기반 AMVP 모드에 대응하는 후보 모션 벡터 목록을 구성한다.
본 발명의 이 실시예에서, 현재 블록의 후보 제어 포인트 모션 벡터 예측자(예를 들어, 후보 모션 벡터 2-튜플/트리플렛/쿼드러플)가 개선된 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법에 기반하여 획득되고, AMVP 모드에 대응하는 후보 모션 벡터 목록에 추가될 수 있다.
이 단계의 특정 구현에 대해서는 전술한 실시예의 단계(802a)의 설명을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
단계 903a: 레이트-왜곡 비용들을 기반으로 최적의 제어 포인트 모션 벡터 예측자를 결정한다.
예를 들어, 인코더 측은, 공식 (3), (5) 또는 (7)에 따라 후보 모션 벡터 목록에서 제어 포인트 모션 벡터 예측자(예를 들어, 후보 모션 벡터 2-튜플/트리플렛/쿼드러플)를 사용함으로써, 현재 블록의 각각의 모션 보상 서브유닛의 모션 벡터를 획득할 수 있다. 또한, 인코더 측은 각각의 모션 보상 서브유닛의 모션 벡터가 가리키는 참조 프레임에서의 대응하는 위치의 픽셀 값을 측 획득하고, 픽셀 값을 모션 보상 서브유닛의 예측된 값으로 사용하여 아핀 모션 모델-기반 모션 보상을 수행한다. 현재 코딩 블록에 있는 모든 픽셀들의 원래 값들과 예측된 값들 간의 차이들의 평균 값이 계산된다. 최소 평균 값에 대응하는 제어 포인트 모션 벡터 예측자가 최적의 제어 포인트 모션 벡터 예측자로서 선택되어, 현재 블록의 2개, 3개 또는 4개의 제어 포인트들의 모션 벡터 예측자들로서 사용된다.
단계 904a: 인덱스 값, 제어 포인트의 모션 벡터 차이, 및 인터 예측 모드의 지시 정보를 비트스트림으로 인코딩한다.
예에서, 인코더 측은, 제어 포인트 모션 벡터(control point motion vectors, CPMV)를 획득하고 제어 포인트 모션 벡터와 제어 포인트 모션 벡터 예측자 간의 차이(control point motion vectors differences, CPMVD)를 계산하기 위해, 최적의 제어 포인트 모션 벡터 예측자를 시작 서치 포인트로 사용함으로써, 특정 서치 범위 내에서 모션 서치를 수행할 수 있다. 그런 다음, 인코더 측은 후보 모션 벡터 목록에서 제어 포인트 모션 벡터 예측자의 위치를 지시하는 인덱스 값과 CPMVD를 비트스트림으로 인코딩하고, 그리고 디코더 측으로의 후속 전송을 용이하게 하기 위해, 인터 예측 모드의 지시 정보를 비트스트림으로 추가로 인코딩할 수 있다.
구체적인 구현에서, 비트스트림으로 인코딩된 구문 요소에 대해서는 표 1 및 표 2의 전술한 설명들을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
단계 902b: 아핀 모션 모델-기반 병합 모드에 대응하는 후보 모션 벡터 목록을 구성한다.
본 발명의 이 실시예에서, 현재 블록의 후보 제어 포인트 모션 벡터(예를 들어, 후보 모션 벡터 2-튜플/트리플렛/ 쿼드러플)가 개선된 상속 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법에 기반하여 획득되고, 병합 모드에 대응하는 후보 모션 벡터 목록에 추가될 수 있다.
이 단계의 특정 구현에 대해서는 전술한 실시예의 단계(802b)의 설명을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
단계 903b: 레이트-왜곡 비용들을 기반으로 최적의 제어 포인트 모션 정보 결정한다.
예에서, 인코더 측은, 공식 (3), (5) 또는 (7)에 따라 후보 모션 벡터 목록에서 제어 포인트 모션 벡터(예를 들어, 후보 모션 벡터 2-튜플/트리플렛/쿼드러플)를 사용함으로써, 현재 코딩 블록의 각각의 모션 보상 서브유닛의 모션 벡터를 획득할 수 있다. 또한, 인코더 측은 각각의 모션 보상 서브유닛의 모션 벡터가 가리키는 참조 프레임에서의 위치의 픽셀 값을 측 획득하고, 픽셀 값을 모션 보상 서브유닛의 예측된 값으로 사용하여 아핀 모션 보상을 수행한다. 현재 코딩 블록에 있는 모든 픽셀들의 원래 값들과 예측된 값들 간의 차이들의 평균 값이 계산된다. 최소 평균 값에 대응하는 제어 포인트 모션 벡터가 최적의 제어 포인트 모션 벡터로서 선택되고, 최적의 제어 포인트 모션 벡터가 현재 코딩 블록의 2개, 3개 또는 4개의 제어 포인트들의 모션 벡터들로서 사용된다.
단계 904b: 인덱스 값 및 인터 예측 모드의 지시 정보를 비트스트림으로 인코딩한다.
예에서, 인코더 측은, 디코더 측으로의 후속 전송을 용이하게 하기 위해, 후보 목록에서 제어 포인트 모션 벡터의 위치를 지시하는 인덱스 값과 인터 예측 모드의 지시 정보를 비트스트림으로 인코딩할 수 있다.
구체적인 구현에서, 비트스트림으로 인코딩된 구문 요소에 대해서는 표 1 및 표 2의 전술한 설명들을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
전술한 실시예는, 인코더 측이 인코딩을 수행하고 비트 스트림을 송신하는 프로세스 만을 설명한다는 것이 유의되어야 한다. 전술한 설명들에 따라, 당업자는, 인코더 측이 본 발명의 실시예들에서 설명된 다른 방법을 다른 절차로 대안적으로 수행할 수 있다는 것을 이해한다. 예를 들어, 인코더 측이 현재 블록을 예측할 때, 현재 블록을 재구성하는 과정의 구체적인 구현에 대해서는, 디코더 측에 대해 위에서 설명된 (도 12의 실시예에 도시된 바와 같은) 관련 방법을 참조한다. 상세사항들은 여기서 다시 설명되지 않는다.
본 발명의 이 실시예에서, 개선된 상속 제어 포인트 모션 벡터 예측 방법이 사용된다는 것을 알 수 있다. 개선된 상속 제어 포인트 모션 벡터 예측 방법에서는, 이웃하는 아핀 코딩 블록의 제어 포인트의 모션 벡터를 사용할 필요는 없지만, 이웃하는 아핀 코딩 블록의 적어도 2개의 서브블록들의 모션 벡터들이 사용된다. 따라서, 적어도 2개의 서브블록들의 모션 벡터들을 기반으로 현재 블록의 후보 제어 포인트 모션 벡터들이 도출되고 목록이 설정된다. 최적의 후보 제어 포인트 모션 벡터가 획득되며, 목록에서의 최적의 후보 제어 포인트 모션 벡터가 디코더 측에 송신된다. 제어 포인트의 모션 벡터는 저장할 필요가 없다. 구체적으로, 현재 코딩 블록의 제어 포인트의 모션 벡터는 오직 현재 코딩 블록의 서브블록의 모션 벡터를 도출하기 위해서만 사용되며, 이후 이웃하는 블록의 모션 벡터 예측에는 사용되지 않는다. 따라서, 본 발명의 솔루션들에서는, 서브블록의 모션 벡터만 저장하면 되고, 서브블록의 모션 벡터를 사용함으로써 모션 보상이 수행된다. 이는 모션 벡터 저장 문제를 해결하고, 예측 정확도를 향상시킨다.
전술한 방법과 동일한 발명 개념에 기반하여, 본 발명의 실시예는 디바이스(1000)를 추가로 제공한다. 디바이스(1000)는 참조 블록 획득 모듈(1001), 서브블록 결정 모듈(1002), 제1 계산 모듈(1003) 및 제2 계산 모듈(1004)을 포함한다.
참조 블록 획득 모듈(1001)은 비디오 데이터에서 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하도록 구성된다.
서브블록 결정 모듈(1002)은 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하도록 구성된다.
제1 계산 모듈(1003)은, 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
제2 계산 모듈(1004)은, 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
가능한 실시예에서, 참조 블록 획득 모듈(1001)은, 구체적으로: 미리 설정된 순서로, 처리될 픽처 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성을 결정하고; 그리고 미리 설정된 순서로 제1 이용가능한 후보 참조 블록을 획득하도록 구성되고, 제1 이용가능한 후보 참조 블록이 공간 참조 블록으로서 사용된다.
후보 참조 블록 및 처리될 픽처 블록이 동일한 픽처 영역에 있고 후보 참조 블록이 아핀 모션 모델에 기반하여 코딩되는 경우, 후보 참조 블록은 이용가능한 것으로 결정된다.
가능한 실시예에서, 미리 설정된 공간 위치들에 있는 후보 참조 블록들은, 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함한다.
참조 블록 획득 모듈(1001)은 구체적으로, 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 →바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 → 하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로, 후보 참조 블록들의 이용가능성을 연속적으로 체크하도록 구성된다.
가능한 실시예에서, 처리될 픽처 블록 또는 공간 참조 블록의 서브블록 위치는 서브블록의 상단-좌측 픽셀의 위치; 서브블록의 기하학적 중심의 위치; 또는 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치이다.
가능한 실시예에서, 복수의 미리 설정된 서브블록 위치들 중 2개의 서브블록 위치들 간의 거리는 S이고, S는 2의 K 제곱이고, K는 음이 아닌 정수이다.
가능한 실시예에서, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 공간 참조 블록의 폭이다.
가능한 실시예에서, 아핀 모션 모델은 4-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, Q는 2의 R 제곱이고, R은 음이 아닌 정수이고, Q는 V보다 작고, 그리고 V는 공간 참조 블록의 높이이다.
가능한 실시예에서, 미리 설정된 픽셀 위치들은 적어도 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치, 및 처리될 픽처 블록의 하단-좌측 픽셀 위치를 포함하고, 제1 계산 모듈(1003)은 구체적으로, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
가능한 실시예에서, 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 상단-좌측 픽셀 위치 및 처리될 픽처 블록의 상단-우측 픽셀 위치를 포함하고, 제2 계산 모듈(1004)은 구체적으로, 다음 공식에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다:
여기서, W는 처리될 픽처 블록의 폭이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
가능한 구현에서, 아핀 모션 모델은 6-파라미터 아핀 모션 모델이고, 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2), 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2), 및 제3 미리 설정된 위치(x4 + M/2, y4 + N/2 + Q)를 포함하며, 여기서 x4는 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, Q는 2의 R 제곱이고, K 및 R은 음이 아닌 정수들이고, P는 U보다 작고, Q는 V보다 작고, U는 공간 참조 블록의 폭이고, 그리고 V는 공간 참조 블록의 높이이다.
가능한 실시예에서, 미리 설정된 픽셀 위치들은 처리될 픽처 블록의 상단-좌측 픽셀 위치, 처리될 픽처 블록의 상단-우측 픽셀 위치 및 처리될 픽처 블록의 하단-좌측 픽셀 위치를 포함하고, 제1 계산 모듈(1003)은 구체적으로, 다음 공식들:
에 따른 계산을 통해, 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 제3 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 제3 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표이다.
가능한 실시예에서, 제2 계산 모듈(1004)은 구체적으로, 다음 공식:
에 따른 계산을 통해, 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된다.
여기서, W는 처리될 픽처 블록의 폭이고, H는 처리될 픽처 블록의 높이이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분이다.
가능한 실시예에서, 처리될 픽처 블록의 상단 경계가 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 상단 경계와 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 위에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 상단-우측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 처리될 픽처 블록의 상단 경계에 인접한다.
가능한 실시예에서, 처리될 픽처 블록의 좌측 경계가 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 좌측 경계와 일치하고 그리고 공간 참조 블록이 처리될 픽처 블록 바로 좌측에, 처리될 픽처 블록의 상단-좌측에 또는 처리될 픽처 블록의 하단-좌측에 있는 경우, 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 처리될 픽처 블록의 좌측 경계에 인접한다.
본 발명의 전술한 실시예에서, 복수의 서브블록 위치들에 대응하는 내삽된 모션 벡터들이 복수의 서브블록들을 예측하기 위해 별도로 사용된다.
참조 블록 획득 모듈(1001), 서브블록 결정 모듈(1002), 제1 계산 모듈(1003) 및 제2 계산 모듈(1004)은 인코더 측 또는 디코더 측의 인터 예측 프로세스에서 사용될 수 있다는 것이 유의되어야 한다. 구체적으로, 인코더 측에서, 모듈들은 인코더(20)의 예측 처리 유닛(260)에서 인터 예측 유닛 (244)에 사용될 수 있다. 디코더 측에서, 모듈들은 디코더(30)의 예측 처리 유닛(360)에서 인터 예측 유닛 (344)에 사용될 수 있다.
참조 블록 획득 모듈(1001), 서브블록 결정 모듈(1002), 제1 계산 모듈(1003) 및 제2 계산 모듈(1004)의 구체적인 구현 프로세스들에 대해서는 도 11, 도 12 및 도 14의 실시예들의 상세한 설명들이 참조된다는 것이 추가로 유의되어야 한다. 명세서의 간결함을 위해 세부 사항은 여기에서 설명하지 않는다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 결합으로 구현될 수 있다. 소프트웨어로 구현된다면, 이 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터-판독가능 매체에 저장되거나 또는 이를 통해 전송될 수 있고 하드웨어-기반 처리 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능 매체는, 데이터 저장 매체 또는 통신 매체와 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체를 포함할 수 있다. 통신 매체는, 예를 들어, 통신 프로토콜에 따라, 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함한다. 이러한 방식으로, 컴퓨터-판독가능 매체는 일반적으로, 비-일시적 유형의 컴퓨터-판독가능 저장 매체 또는 통신 매체, 예를 들어 신호 또는 캐리어에 대응할 수 있다. 데이터 저장 매체는, 본 발명에 설명된 기술들을 구현하기 위한 명령들, 코드 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 사용가능 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 그러한 컴퓨터-판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 메모리(optical disk memory), 자기 디스크 메모리 또는 다른 자기 저장 디바이스, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결이 적절하게 컴퓨터-판독가능 매체로 지칭될 수 있다. 예를 들어, 명령들이 동축 케이블, 광섬유, 꼬임 쌍선, 디지털 가입자 라인(digital subscriber line, DSL), 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들을 사용함으로써 웹사이트, 서버 또는 다른 원격 소스로부터 전송되는 경우, 동축 케이블, 광섬유, 꼬임 쌍선, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체가 연결들, 캐리어들, 신호들 또는 다른 일시적 매체들을 포함하는 것이 아니라, 실제로는 비-일시적 유형의 저장 매체를 의미한다는 것이 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 디스크(disk)와 디스크(disc)는 컴팩트 디스크(compact disc, CD), 레이저 디스크(laser disc), 광 디스크(optical disc), 디지털 다용도 디스크(digital versatile disc, DVD), 플로피 디스크(floppy disk), 블루-레이 디스크(Blu-ray disc)를 포함한다. 디스크(disk)는 일반적으로 데이터를 자기적으로 재생하지만 디스크(disc)는 레이저를 사용함으로써 데이터를 광학적으로 재생한다. 전술한 항목들의 조합도 또한 컴퓨터-판독가능 매체의 범위에 포함되어야 한다.
전술한 실시예들에서, 각각의 실시예의 설명들은 개개의 주안점들을 갖는다. 실시예에서 상세하게 설명되지 않은 부분에 대해서는 다른 실시예들의 관련 설명들을 참조한다.
Claims (34)
- 아핀 모션 모델(affine motion model)에 기반한 모션 벡터 예측 방법으로서,
처리될 픽처 블록(to-be-processed picture block)의 하나의 공간 참조 블록(spatial reference block)을 획득하는 단계;
상기 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하는 단계;
상기 공간 참조 블록의 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는(extrapolated), 상기 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계; 및
상기 공간 참조 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는(interpolated), 상기 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계
를 포함하고,
상기 아핀 모션 모델은 4-파라미터 아핀 모션 모델이며, 상기 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하고, x4는 상기 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 상기 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 상기 공간 참조 블록의 폭인, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하는 단계는,
미리 설정된 순서로, 상기 처리될 픽처 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성을 결정하는 단계; 및
상기 미리 설정된 순서로 제1 이용가능한 후보 참조 블록을 획득하는 단계 - 상기 제1 이용가능한 후보 참조 블록이 상기 공간 참조 블록으로서 사용됨 -;
를 포함하는, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제2항에 있어서,
상기 후보 참조 블록 및 상기 처리될 픽처 블록이 동일한 픽처 영역에 있고 상기 후보 참조 블록이 상기 아핀 모션 모델에 기반하여 코딩되는 경우, 상기 후보 참조 블록은 이용가능한 것으로 결정되는, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제2항에 있어서,
상기 미리 설정된 공간 위치들에 있는 상기 후보 참조 블록들은, 상기 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함하고;
상기 미리 설정된 순서로, 상기 처리될 픽처 블록에 속하며 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성을 결정하는 단계는, 상기 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 → 바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 → 하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로, 상기 후보 참조 블록들의 이용가능성을 연속적으로 체크하는 단계를 포함하는, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 처리될 픽처 블록 또는 상기 공간 참조 블록의 서브블록 위치는 상기 서브블록의 상단-좌측 픽셀의 위치; 상기 서브블록의 기하학적 중심의 위치; 또는 상기 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치인, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 복수의 미리 설정된 서브블록 위치들 중 2개의 서브블록 위치들 간의 거리는 S이고, S는 2의 K 제곱이고, K는 음이 아닌 정수인, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 미리 설정된 픽셀 위치들은 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치, 상기 처리될 픽처 블록의 상단-우측 픽셀 위치 및 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치 중 적어도 2개를 포함하고, 그리고
상기 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 상기 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식들:
에 따른 계산을 통해, 상기 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함하며,
는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 은 상기 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 은 상기 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 은 상기 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 은 상기 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표인, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제7항에 있어서,
상기 미리 설정된 픽셀 위치들은 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치 및 상기 처리될 픽처 블록의 상단-우측 픽셀 위치를 포함하며,
상기 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 상기 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계는, 다음 공식:
에 따른 계산을 통해, 상기 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하는 단계를 포함하며,
W는 상기 처리될 픽처 블록의 폭이고, 는 상기 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 상기 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분인, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 처리될 픽처 블록의 상단 경계가 상기 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 상단 경계와 일치하고 그리고 상기 공간 참조 블록이 상기 처리될 픽처 블록 바로 위에, 상기 처리될 픽처 블록의 상단-좌측에 또는 상기 처리될 픽처 블록의 상단-우측에 있는 경우, 상기 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 상기 처리될 픽처 블록의 상단 경계에 인접한, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 처리될 픽처 블록의 좌측 경계가 상기 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 좌측 경계와 일치하고 그리고 상기 공간 참조 블록이 상기 처리될 픽처 블록 바로 좌측에, 상기 처리될 픽처 블록의 상단-좌측에 또는 상기 처리될 픽처 블록의 하단-좌측에 있는 경우, 상기 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 상기 처리될 픽처 블록의 좌측 경계에 인접한, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 제1항에 있어서,
상기 복수의 서브블록 위치들에 대응하는 내삽된 모션 벡터들은 상기 복수의 서브블록들을 예측하기 위해 개별로 사용되는, 아핀 모션 모델에 기반한 모션 벡터 예측 방법. - 디바이스로서,
비디오 데이터에서 처리될 픽처 블록의 하나의 공간 참조 블록을 획득하도록 구성된, 참조 블록 획득 모듈;
상기 공간 참조 블록의 복수의 미리 설정된 서브블록 위치들을 결정하도록 구성된, 서브블록 결정 모듈;
상기 공간 참조 블록의 미리 설정된 서브블록 위치들에 대응하는 모션 벡터들로부터 외삽되는, 상기 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성된, 제1 계산 모듈; 및
상기 공간 참조 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들로부터 내삽되는, 상기 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성된, 제2 계산 모듈
을 포함하고,
아핀 모션 모델은 4-파라미터 아핀 모션 모델이며, 상기 복수의 미리 설정된 서브블록 위치들은 제1 미리 설정된 위치(x4 + M/2, y4 + N/2) 및 제2 미리 설정된 위치(x4 + M/2 + P, y4 + N/2)를 포함하고, x4는 상기 공간 참조 블록의 상단-좌측 픽셀의 수평 좌표이고, y4는 상기 공간 참조 블록의 상단-좌측 픽셀의 수직 좌표이고, M은 서브블록 폭이고, N은 서브블록 높이이고, P는 2의 K 제곱이고, K는 음이 아닌 정수이고, K는 U보다 작고, 그리고 U는 상기 공간 참조 블록의 폭인, 디바이스. - 제12항에 있어서,
상기 참조 블록 획득 모듈은, 구체적으로:
미리 설정된 순서로, 상기 처리될 픽처 블록에 속하며 상기 미리 설정된 공간 위치들에 있는 하나 이상의 후보 참조 블록들의 이용가능성을 결정하고; 그리고
상기 미리 설정된 순서로 제1 이용가능한 후보 참조 블록을 획득하도록 구성되고,
상기 제1 이용가능한 후보 참조 블록이 상기 공간 참조 블록으로서 사용되는, 디바이스. - 제13항에 있어서,
상기 후보 참조 블록 및 상기 처리될 픽처 블록이 동일한 픽처 영역에 있고 상기 후보 참조 블록이 상기 아핀 모션 모델에 기반하여 코딩되는 경우, 상기 후보 참조 블록은 이용가능한 것으로 결정되는, 디바이스. - 제13항에 있어서,
상기 미리 설정된 공간 위치들에 있는 상기 후보 참조 블록들은, 상기 처리될 픽처 블록의 바로 상단에 이웃하는 픽처 블록, 바로 좌측에 이웃하는 픽처 블록, 상단-우측에 이웃하는 픽처 블록, 하단-좌측에 이웃하는 픽처 블록 및 상단-좌측에 이웃하는 픽처 블록을 포함하고; 그리고
상기 참조 블록 획득 모듈은 구체적으로, 상기 제1 이용가능한 후보 참조 블록이 결정될 때까지, 다음의 순서: 바로 좌측에 이웃하는 픽처 블록 → 바로 상단에 이웃하는 픽처 블록 → 상단-우측에 이웃하는 픽처 블록 → 하단-좌측에 이웃하는 픽처 블록 → 상단-좌측에 이웃하는 픽처 블록으로, 상기 후보 참조 블록들의 이용가능성을 연속적으로 체크하도록 구성되는, 디바이스. - 제12항에 있어서,
상기 처리될 픽처 블록 또는 상기 공간 참조 블록의 서브블록 위치는, 상기 서브블록의 상단-좌측 픽셀의 위치; 상기 서브블록의 기하학적 중심의 위치; 또는 상기 서브블록의 기하학적 중심에 가장 가까운 픽셀의 위치인, 디바이스. - 제12항에 있어서,
상기 복수의 미리 설정된 서브블록 위치들 중 2개의 서브블록 위치들 간의 거리는 S이고, S는 2의 K 제곱이고, K는 음이 아닌 정수인, 디바이스. - 제12항에 있어서,
상기 미리 설정된 픽셀 위치들은 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치, 상기 처리될 픽처 블록의 상단-우측 픽셀 위치, 및 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치 중 적어도 둘을 포함하고,
상기 제1 계산 모듈은 구체적으로, 다음 공식들:
에 따른 계산을 통해, 상기 처리될 픽처 블록의 미리 설정된 픽셀 위치들에 대응하는 모션 벡터들을 획득하도록 구성되며,
는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 처리될 픽처 블록의 상단-우측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 제1 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 제1 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 제2 미리 설정된 위치에 대응하는 모션 벡터의 수평 성분이고, 는 상기 제2 미리 설정된 위치에 대응하는 모션 벡터의 수직 성분이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수평 좌표이고, 는 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치의 수직 좌표이고, 는 상기 처리될 픽처 블록의 상단-우측 픽셀 위치의 수평 좌표이고, 는 상기 처리될 픽처 블록의 상단-우측 픽셀 위치의 수직 좌표이고, 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수평 좌표이고, 그리고 는 상기 처리될 픽처 블록의 하단-좌측 픽셀 위치의 수직 좌표인, 디바이스. - 제18항에 있어서,
상기 미리 설정된 픽셀 위치들은 상기 처리될 픽처 블록의 상단-좌측 픽셀 위치 및 상기 처리될 픽처 블록의 상단-우측 픽셀 위치를 포함하며,
상기 제2 계산 모듈은 구체적으로, 다음 공식:
에 따른 계산을 통해, 상기 처리될 픽처 블록의 복수의 서브블록 위치들에 대응하는 모션 벡터들을 획득하도록 구성되며,
W는 상기 처리될 픽처 블록의 폭이고, 는 상기 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수평 성분이고, 는 상기 복수의 서브블록 위치들에서 (x, y)에 대응하는 모션 벡터의 수직 성분인, 디바이스. - 제12항에 있어서,
상기 처리될 픽처 블록의 상단 경계가 상기 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 상단 경계와 일치하고 그리고 상기 공간 참조 블록이 상기 처리될 픽처 블록 바로 위에, 상기 처리될 픽처 블록의 상단-좌측에 또는 상기 처리될 픽처 블록의 상단-우측에 있는 경우, 상기 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 상기 처리될 픽처 블록의 상단 경계에 인접한, 디바이스. - 제12항에 있어서,
상기 처리될 픽처 블록의 좌측 경계가 상기 처리될 픽처 블록을 포함하는 CTU(coding tree unit)의 좌측 경계와 일치하고 그리고 상기 공간 참조 블록이 상기 처리될 픽처 블록 바로 좌측에, 상기 처리될 픽처 블록의 상단-좌측에 또는 상기 처리될 픽처 블록의 하단-좌측에 있는 경우, 상기 복수의 미리 설정된 서브블록 위치들에 대응하는 서브블록들 중 적어도 2개는 상기 처리될 픽처 블록의 좌측 경계에 인접한, 디바이스. - 제12항 내지 제21항 중 어느 한 항에 있어서,
상기 복수의 서브블록 위치들에 대응하는 상기 내삽된 모션 벡터들은 상기 복수의 서브블록들을 예측하기 위해 개별로 사용되는, 디바이스. - 비디오 코딩 디바이스로서,
비-휘발성 메모리 및 프로세서를 포함하며,
상기 비-휘발성 메모리 및 상기 프로세서는 서로 커플링되며, 상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여 제1항 내지 제11항 중 어느 한 항에 따른 방법을 수행하는, 비디오 코딩 디바이스. - 프로그램 코드를 가진 비일시적 컴퓨터 판독가능한 매체로서, 상기 프로그램 코드는 컴퓨터 디바이스 또는 프로세서에 의해 실행된 때, 상기 컴퓨터 디바이스 또는 프로세서로 하여금 제1항 내지 제11항 중 어느 한 항에 따른 방법을 수행하게 하는, 비일시적 컴퓨터 판독가능한 매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811051662 | 2018-09-10 | ||
CN201811051662.6 | 2018-09-10 | ||
CN201811096702.9 | 2018-09-19 | ||
CN201811096702.9A CN110891176B (zh) | 2018-09-10 | 2018-09-19 | 基于仿射运动模型的运动矢量预测方法及设备 |
PCT/CN2019/091364 WO2020052304A1 (zh) | 2018-09-10 | 2019-06-14 | 基于仿射运动模型的运动矢量预测方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210052536A KR20210052536A (ko) | 2021-05-10 |
KR102620024B1 true KR102620024B1 (ko) | 2023-12-29 |
Family
ID=69745703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217010006A KR102620024B1 (ko) | 2018-09-10 | 2019-06-14 | 아핀 모션 모델을 기반으로 한 모션 벡터 예측 방법 및 디바이스 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11539975B2 (ko) |
EP (1) | EP3840380A4 (ko) |
JP (1) | JP7279154B2 (ko) |
KR (1) | KR102620024B1 (ko) |
CN (1) | CN110891176B (ko) |
BR (1) | BR112021004505A2 (ko) |
CA (1) | CA3112368A1 (ko) |
SG (1) | SG11202102361WA (ko) |
WO (1) | WO2020052304A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3895430A4 (en) * | 2018-12-13 | 2022-10-12 | Beijing Dajia Internet Information Technology Co., Ltd. | METHOD FOR DRIVING CONSTRUCTED AFFINE FUSION CANDIDATES |
CN114128287A (zh) * | 2019-04-25 | 2022-03-01 | Op方案有限责任公司 | 图像标头中全局运动矢量的信号发送 |
CN113630601B (zh) * | 2021-06-29 | 2024-04-02 | 杭州未名信科科技有限公司 | 一种仿射运动估计方法、装置、设备及存储介质 |
CN113630602B (zh) * | 2021-06-29 | 2024-07-02 | 杭州未名信科科技有限公司 | 编码单元的仿射运动估计方法、装置、存储介质及终端 |
WO2023051641A1 (en) * | 2021-09-28 | 2023-04-06 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for video processing |
CN118056403A (zh) * | 2021-09-29 | 2024-05-17 | Lg 电子株式会社 | 图像编码/解码方法和装置以及存储比特流的记录介质 |
WO2024037638A1 (en) * | 2022-08-18 | 2024-02-22 | Douyin Vision Co., Ltd. | Method, apparatus, and medium for video processing |
CN116117800B (zh) * | 2022-12-19 | 2023-08-01 | 广东建石科技有限公司 | 补偿高度差的机器视觉处理方法、电子设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3715283B2 (ja) * | 2003-02-04 | 2005-11-09 | 株式会社半導体理工学研究センター | 動画像の画像圧縮符号化方法及び装置 |
JP2012023597A (ja) * | 2010-07-15 | 2012-02-02 | Sony Corp | 画像処理装置及び画像処理方法 |
KR101739987B1 (ko) * | 2010-12-28 | 2017-05-26 | 에스케이 텔레콤주식회사 | 주변블록의 특징벡터를 이용한 영상 부호화/복호화 방법 및 장치 |
CN109005407B (zh) * | 2015-05-15 | 2023-09-01 | 华为技术有限公司 | 视频图像编码和解码的方法、编码设备和解码设备 |
CN105163116B (zh) * | 2015-08-29 | 2018-07-31 | 华为技术有限公司 | 图像预测的方法及设备 |
GB2561507B (en) * | 2016-01-07 | 2021-12-22 | Mediatek Inc | Method and apparatus for affine merge mode prediction for video coding system |
WO2017130696A1 (ja) | 2016-01-29 | 2017-08-03 | シャープ株式会社 | 予測画像生成装置、動画像復号装置、および動画像符号化装置 |
CN113612994B (zh) | 2016-03-15 | 2023-10-27 | 寰发股份有限公司 | 具有仿射运动补偿的视频编解码的方法 |
WO2017156705A1 (en) * | 2016-03-15 | 2017-09-21 | Mediatek Inc. | Affine prediction for video coding |
US10560712B2 (en) * | 2016-05-16 | 2020-02-11 | Qualcomm Incorporated | Affine motion prediction for video coding |
JP7026049B2 (ja) * | 2016-09-27 | 2022-02-25 | シャープ株式会社 | アフィン動きベクトル導出装置、予測画像生成装置、動画像復号装置、および動画像符号化装置 |
US10448010B2 (en) * | 2016-10-05 | 2019-10-15 | Qualcomm Incorporated | Motion vector prediction for affine motion models in video coding |
US10681370B2 (en) * | 2016-12-29 | 2020-06-09 | Qualcomm Incorporated | Motion vector generation for affine motion model for video coding |
-
2018
- 2018-09-19 CN CN201811096702.9A patent/CN110891176B/zh active Active
-
2019
- 2019-06-14 SG SG11202102361WA patent/SG11202102361WA/en unknown
- 2019-06-14 WO PCT/CN2019/091364 patent/WO2020052304A1/zh unknown
- 2019-06-14 BR BR112021004505-8A patent/BR112021004505A2/pt unknown
- 2019-06-14 KR KR1020217010006A patent/KR102620024B1/ko active IP Right Grant
- 2019-06-14 EP EP19858748.7A patent/EP3840380A4/en not_active Withdrawn
- 2019-06-14 CA CA3112368A patent/CA3112368A1/en active Pending
- 2019-06-14 JP JP2021513246A patent/JP7279154B2/ja active Active
-
2021
- 2021-03-09 US US17/196,642 patent/US11539975B2/en active Active
Non-Patent Citations (1)
Title |
---|
Minhua Zhou, et. al., "Non-CE4: A study on the affine merge mode", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Ljubljana, SI, 10-18 July 2018, JVET-* |
Also Published As
Publication number | Publication date |
---|---|
SG11202102361WA (en) | 2021-04-29 |
JP2021536197A (ja) | 2021-12-23 |
US20210235105A1 (en) | 2021-07-29 |
CA3112368A1 (en) | 2020-03-19 |
CN110891176A (zh) | 2020-03-17 |
EP3840380A4 (en) | 2021-10-13 |
WO2020052304A1 (zh) | 2020-03-19 |
EP3840380A1 (en) | 2021-06-23 |
KR20210052536A (ko) | 2021-05-10 |
JP7279154B2 (ja) | 2023-05-22 |
CN110891176B (zh) | 2023-01-13 |
BR112021004505A2 (pt) | 2021-06-08 |
US11539975B2 (en) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102620024B1 (ko) | 아핀 모션 모델을 기반으로 한 모션 벡터 예측 방법 및 디바이스 | |
CN112005551B (zh) | 一种视频图像预测方法及装置 | |
JP7507827B2 (ja) | ビデオ復号化方法及びビデオ・デコーダ | |
US20220007046A1 (en) | Inter Prediction Method and Related Apparatus | |
US20220078441A1 (en) | Inter prediction method and apparatus | |
AU2020261145B2 (en) | Picture prediction method and apparatus, and computer-readable storage medium | |
CN111107373B (zh) | 基于仿射预测模式的帧间预测的方法及相关装置 | |
US20220046234A1 (en) | Picture prediction method and apparatus, and computer-readable storage medium | |
EP3926953A1 (en) | Inter-frame prediction method and related device | |
EP3893505A1 (en) | Method and device for determining prediction mode, coding device, and decoding device | |
KR20210103561A (ko) | 인터 예측 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |