KR20230158645A - 리파인먼트를 이용한 인터 예측을 위한 보간 - Google Patents
리파인먼트를 이용한 인터 예측을 위한 보간 Download PDFInfo
- Publication number
- KR20230158645A KR20230158645A KR1020237038844A KR20237038844A KR20230158645A KR 20230158645 A KR20230158645 A KR 20230158645A KR 1020237038844 A KR1020237038844 A KR 1020237038844A KR 20237038844 A KR20237038844 A KR 20237038844A KR 20230158645 A KR20230158645 A KR 20230158645A
- Authority
- KR
- South Korea
- Prior art keywords
- video
- prediction
- samples
- picture
- block
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 228
- 230000003287 optical effect Effects 0.000 claims abstract description 74
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 48
- 230000009466 transformation Effects 0.000 claims abstract description 18
- 230000033001 locomotion Effects 0.000 claims description 285
- 241000023320 Luma <angiosperm> Species 0.000 claims description 76
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 74
- 230000008569 process Effects 0.000 claims description 46
- 238000004364 calculation method Methods 0.000 claims description 41
- 238000001914 filtration Methods 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 abstract description 35
- 238000004422 calculation algorithm Methods 0.000 abstract description 23
- 238000005457 optimization Methods 0.000 abstract description 22
- 239000013598 vector Substances 0.000 description 167
- 239000000523 sample Substances 0.000 description 90
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 52
- 238000009795 derivation Methods 0.000 description 45
- 230000002123 temporal effect Effects 0.000 description 30
- 238000005516 engineering process Methods 0.000 description 22
- 238000004590 computer program Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000012937 correction Methods 0.000 description 12
- 238000003672 processing method Methods 0.000 description 11
- 101100537098 Mus musculus Alyref gene Proteins 0.000 description 10
- 101150095908 apex1 gene Proteins 0.000 description 10
- 230000003044 adaptive effect Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 8
- 230000006872 improvement Effects 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005286 illumination Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000007670 refining Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/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/537—Motion estimation other than block-based
-
- 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/59—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
-
- 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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- 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/563—Motion estimation with padding, i.e. with filling of non-object values in an arbitrarily shaped picture block or region for estimation purposes
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
리파인먼트를 이용한 인터 예측을 포함하는, 디지털 비디오 코딩을 위한 디바이스들, 시스템들 및 방법들이 설명된다. 비디오 처리의 예시적인 방법은, 비디오의 현재 블록과 비디오의 비트스트림 사이의 변환을 위해, 제1 코딩 모드를 사용하는 변환을 위한 제1 선형 최적화 모델을 사용하기로 결정하는 단계- 제1 선형 최적화 모델은 제2 코딩 모드를 사용하는 변환을 위해 사용되는 제2 선형 최적화 모델로부터 도출됨 -, 및 결정에 기초하여, 변환을 수행하는 단계를 포함한다. 비디오 처리의 다른 예시적인 방법은, 비디오의 현재 블록과 비디오의 비트스트림 사이의 변환을 위해, 양방향 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘을 사용하기로 결정하는 단계, 및 결정에 기초하여, 변환을 수행하는 단계를 포함한다.
Description
관련 출원의 상호 참조
파리 조약에 따른 적용가능한 특허법 및/또는 규칙들 하에서, 본 출원은 2018년 11월 5일에 출원된 국제 특허 출원 제PCT/CN2018/113928호에 대한 우선권 및 그의 이익을 적시에 청구하도록 만들어졌다. 미국 법 하에서 모든 목적을 위해, 전술한 출원의 전체 개시들은 본 출원의 개시의 일부로서 참조로 포함된다.
기술 분야
본 특허 문서는 비디오 코딩 기법들, 디바이스들 및 시스템들에 관한 것이다.
비디오 압축의 진보에도 불구하고, 디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크들에서 가장 큰 대역폭 사용을 여전히 차지한다. 비디오를 수신 및 디스플레이할 수 있는 접속된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요가 계속 증가할 것으로 예상된다.
디지털 비디오 코딩에 관련되며, 구체적으로는 비디오 코딩을 위한 선형 모드 예측의 조화(harmonization)에 관한 디바이스들, 시스템들 및 방법들. 설명된 방법들은 기존의 비디오 코딩 표준들(예를 들어, 고효율 비디오 코딩(HEVC)) 및 장래의 비디오 코딩 표준들 또는 비디오 코덱들 둘 다에 적용될 수 있다.
하나의 대표적인 양태에서, 개시된 기술은 비디오 처리 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 제1 코딩 모드를 사용하는 변환을 위한 제1 선형 최적화 모델을 사용하기로 결정하는 단계- 제1 선형 최적화 모델은 제2 코딩 모드를 사용하는 변환을 위해 사용되는 제2 선형 최적화 모델로부터 도출됨 -; 및 결정에 기초하여, 변환을 수행하는 단계를 포함한다.
다른 대표적인 양태에서, 개시된 기술은 비디오 처리 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드 또는 제1 예측 모드와 상이한 제2 예측 모드를 인에이블링하는 단계- 제1 예측 모드는 옵티컬 플로우를 사용하는 코딩 모드임 -; 및 제1 모드 또는 제2 모드에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 연관된 코딩된 정보에 기초하여, 현재 블록의 참조 픽처와 연관된 하나 이상의 속도 벡터(vx, vy)를 연속적으로 도출하는 단계; 및 하나 이상의 속도 벡터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계- 코딩된 정보는 현재 블록의 모션 벡터의 수평 컴포넌트의 값, 현재 블록의 모션 벡터의 수직 컴포넌트의 값, 또는 현재 블록의 크기를 포함함 -를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다고 결정되면, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하여 필터링 동작을 수행하는 단계; 및 필터링 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다고 결정되면, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하여 필터링 동작을 수행하는 단계; 현재 블록의 적어도 하나의 샘플이 미리 결정된 범위 밖에 위치한다는 결정 시에, 패딩 동작을 수행하는 단계; 및 필터링 동작 및 패딩 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘을 사용하기로 결정하는 단계; 및 결정에 기초하여, 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록의 서브블록에 대한 하나 이상의 절대 차이 합(sum of absolute difference)(SAD) 계산에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 선택적 인에이블링에 관한 판정을 하는 단계; 및 판정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 비디오의 현재 블록에 대한 일반화된 양방향 예측 개선(GBi) 프로세스의 선택적 인에이블링에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 하나 이상의 파라미터를 도출하는 단계; 및 옵티컬 플로우를 사용하는 코딩 모드의 하나 이상의 파라미터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 개시된 기술은 비디오 처리의 방법을 제공하기 위해 사용될 수 있다. 이 방법은, 옵티컬 플로우를 사용하는 코딩 모드로 코딩된 비디오의 현재 블록에 대해, 옵티컬 플로우를 사용하는 코딩 모드의 최종 예측 출력에 대해 클리핑 연산을 수행하는 단계; 및 최종 예측 출력에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 대표적인 양태에서, 전술한 방법은 프로세서 실행가능 코드의 형태로 구현되고 컴퓨터 판독가능 프로그램 매체에 저장된다.
또 다른 대표적인 양태에서, 전술한 방법을 수행하도록 구성되거나 동작가능한 디바이스가 개시된다. 디바이스는 이 방법을 구현하도록 프로그래밍되는 프로세서를 포함할 수 있다.
또 다른 대표적인 양태에서, 비디오 디코더 장치는 본 명세서에 설명된 방법을 구현할 수 있다.
개시된 기술의 위의 양태들 및 다른 양태들 및 특징들은 도면들, 설명 및 청구항들에서 더 상세히 설명된다.
도 1은 병합 후보 리스트를 구성하는 예를 도시한다.
도 2는 공간 후보들의 위치들의 예를 도시한다.
도 3은 공간 병합 후보들의 중복 검사를 받은 후보 쌍들의 예를 도시한다.
도 4a 및 도 4b는 현재 블록의 크기 및 형상에 기초한 제2 예측 유닛(PU)의 위치의 예들을 도시한다.
도 5는 시간 병합 후보들에 대한 모션 벡터 스케일링의 예를 도시한다.
도 6은 시간 병합 후보들에 대한 후보 위치들의 예를 도시한다.
도 7은 조합된 양방향 예측 병합 후보를 생성하는 예를 도시한다.
도 8은 모션 벡터 예측 후보들을 구성하는 예를 도시한다.
도 9는 공간 모션 벡터 후보들에 대한 모션 벡터 스케일링의 예를 도시한다.
도 10은 코딩 유닛(CU)에 대한 ATMVP(alternative temporal motion vector prediction) 알고리즘을 사용하는 모션 예측의 예를 도시한다.
도 11은 STMVP(spatial-temporal motion vector prediction) 알고리즘에 의해 사용되는 서브블록들 및 이웃 블록들을 갖는 코딩 유닛(CU)의 예를 도시한다.
도 12a 및 도 12b는 OBMC(overlapped block motion compensation) 알고리즘을 사용할 때의 서브블록의 예시적인 스냅샷들을 도시한다.
도 13은 LIC(local illumination compensation) 알고리즘에 대한 파라미터들을 도출하는데 사용되는 이웃 샘플들의 예를 도시한다.
도 14는 단순화된 아핀 모션 모델의 예를 도시한다.
도 15는 서브블록당 아핀 모션 벡터 필드(MVF)의 예를 도시한다.
도 16은 AF_INTER 아핀 모션 모드에 대한 모션 벡터 예측(MVP)의 예를 도시한다.
도 17a 및 도 17b는 AF_MERGE 아핀 모션 모드에 대한 예시적인 후보들을 도시한다.
도 18은 프레임-레이트 업 변환(FRUC) 알고리즘에 기초한 특수 병합 모드인 PMMVD(pattern matched motion vector derivation) 모드에서의 양방향 매칭의 예를 도시한다.
도 19는 FRUC 알고리즘에서의 템플릿 매칭의 예를 도시한다.
도 20은 FRUC 알고리즘에서의 단방향 모션 추정의 예를 도시한다.
도 21은 양방향 옵티컬 플로우(BDOF) 알고리즘에 의해 사용되는 옵티컬 플로우 궤적의 예를 도시한다.
도 22a 및 도 22b는 블록 확장들 없이 양방향 옵티컬 플로우(BDOF) 알고리즘을 사용하는 예시적인 스냅샷들을 도시한다.
도 23은 BDOF에 사용되는 보간된 샘플들의 예를 도시한다.
도 24는 양방향 템플릿 매칭에 기초한 DMVR(decoder-side motion vector refinement) 알고리즘의 예를 도시한다.
도 25는 선형 예측 모드에서 선형 모델(α 및 β의 파라미터들의 도출에 사용되는 샘플들의 위치들의 예를 도시한다.
도 26은 최대 루마 값과 최소 루마 값 사이의 직선(선형 모델을 나타냄)의 예를 도시한다.
도 27은 BDOF에서 사용되는 보간된 샘플들의 다른 예를 도시한다.
도 28a 내지 도 28i는 비디오 처리를 위한 예시적인 방법들의 흐름도들을 도시한다.
도 29는 본 문서에 설명된 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기법을 구현하는 하드웨어 플랫폼의 예의 블록도이다.
도 30은 개시된 기법들이 구현될 수 있는 예시적인 비디오 처리 시스템의 블록도이다.
도 2는 공간 후보들의 위치들의 예를 도시한다.
도 3은 공간 병합 후보들의 중복 검사를 받은 후보 쌍들의 예를 도시한다.
도 4a 및 도 4b는 현재 블록의 크기 및 형상에 기초한 제2 예측 유닛(PU)의 위치의 예들을 도시한다.
도 5는 시간 병합 후보들에 대한 모션 벡터 스케일링의 예를 도시한다.
도 6은 시간 병합 후보들에 대한 후보 위치들의 예를 도시한다.
도 7은 조합된 양방향 예측 병합 후보를 생성하는 예를 도시한다.
도 8은 모션 벡터 예측 후보들을 구성하는 예를 도시한다.
도 9는 공간 모션 벡터 후보들에 대한 모션 벡터 스케일링의 예를 도시한다.
도 10은 코딩 유닛(CU)에 대한 ATMVP(alternative temporal motion vector prediction) 알고리즘을 사용하는 모션 예측의 예를 도시한다.
도 11은 STMVP(spatial-temporal motion vector prediction) 알고리즘에 의해 사용되는 서브블록들 및 이웃 블록들을 갖는 코딩 유닛(CU)의 예를 도시한다.
도 12a 및 도 12b는 OBMC(overlapped block motion compensation) 알고리즘을 사용할 때의 서브블록의 예시적인 스냅샷들을 도시한다.
도 13은 LIC(local illumination compensation) 알고리즘에 대한 파라미터들을 도출하는데 사용되는 이웃 샘플들의 예를 도시한다.
도 14는 단순화된 아핀 모션 모델의 예를 도시한다.
도 15는 서브블록당 아핀 모션 벡터 필드(MVF)의 예를 도시한다.
도 16은 AF_INTER 아핀 모션 모드에 대한 모션 벡터 예측(MVP)의 예를 도시한다.
도 17a 및 도 17b는 AF_MERGE 아핀 모션 모드에 대한 예시적인 후보들을 도시한다.
도 18은 프레임-레이트 업 변환(FRUC) 알고리즘에 기초한 특수 병합 모드인 PMMVD(pattern matched motion vector derivation) 모드에서의 양방향 매칭의 예를 도시한다.
도 19는 FRUC 알고리즘에서의 템플릿 매칭의 예를 도시한다.
도 20은 FRUC 알고리즘에서의 단방향 모션 추정의 예를 도시한다.
도 21은 양방향 옵티컬 플로우(BDOF) 알고리즘에 의해 사용되는 옵티컬 플로우 궤적의 예를 도시한다.
도 22a 및 도 22b는 블록 확장들 없이 양방향 옵티컬 플로우(BDOF) 알고리즘을 사용하는 예시적인 스냅샷들을 도시한다.
도 23은 BDOF에 사용되는 보간된 샘플들의 예를 도시한다.
도 24는 양방향 템플릿 매칭에 기초한 DMVR(decoder-side motion vector refinement) 알고리즘의 예를 도시한다.
도 25는 선형 예측 모드에서 선형 모델(α 및 β의 파라미터들의 도출에 사용되는 샘플들의 위치들의 예를 도시한다.
도 26은 최대 루마 값과 최소 루마 값 사이의 직선(선형 모델을 나타냄)의 예를 도시한다.
도 27은 BDOF에서 사용되는 보간된 샘플들의 다른 예를 도시한다.
도 28a 내지 도 28i는 비디오 처리를 위한 예시적인 방법들의 흐름도들을 도시한다.
도 29는 본 문서에 설명된 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기법을 구현하는 하드웨어 플랫폼의 예의 블록도이다.
도 30은 개시된 기법들이 구현될 수 있는 예시적인 비디오 처리 시스템의 블록도이다.
더 높은 해상도의 비디오의 수요가 증가함으로 인해, 비디오 코딩 방법들 및 기법들은 현대의 기술에서 편재적이다. 비디오 코덱들은 전형적으로 디지털 비디오를 압축 또는 압축 해제하고, 더 높은 코딩 효율을 제공하도록 계속 개선되고 있는 전자 회로 또는 소프트웨어를 포함한다. 비디오 코덱은 압축되지 않은 비디오를 압축된 포맷으로 변환하거나, 그 반대로 변환한다. 비디오 품질, 비디오를 표현하기 위해 사용되는 데이터의 양(비트 레이트에 의해 결정됨), 인코딩 및 디코딩 알고리즘들의 복잡도, 데이터 손실들 및 에러들에 대한 민감도, 편집의 용이성, 랜덤 액세스, 및 엔드-투-엔드 지연(레이턴시) 사이에 복잡한 관계들이 존재한다. 압축된 포맷은 일반적으로 표준 비디오 압축 사양, 예를 들어, 고효율 비디오 코딩(HEVC) 표준(H.265 또는 MPEG-H 파트 2로도 알려짐), 완성될 다용도 비디오 코딩 표준, 또는 다른 현재 및/또는 장래의 비디오 코딩 표준들을 따른다.
개시된 기술의 실시예들은 기존의 비디오 코딩 표준들(예를 들어, HEVC, H.265) 및 압축 성능을 개선시키기 위한 장래의 표준들에 적용될 수 있다. 섹션 제목들은 본 문서에서 설명의 가독성을 개선시키기 위해 사용되며, 논의 또는 실시예들(및/또는 구현들)을 결코 각각의 섹션들에만 제한하지 않는다.
1.
HEVC/H.265에서의 인터 예측(inter-prediction)의 예들
비디오 코딩 표준들은 수년 동안 상당히 개선되었으며, 이제 부분적으로는 높은 코딩 효율 및 더 높은 해상도들에 대한 지원을 제공한다. HEVC 및 H.265와 같은 최근의 표준들은 시간 예측 +(plus) 변환 코딩이 사용되는 하이브리드 비디오 코딩 구조에 기초한다.
1.1
예측 모드들의 예들
각각의 인터 예측된 PU(예측 유닛)는 하나 또는 2개의 참조 픽처 리스트에 대한 모션 파라미터들을 갖는다. 일부 실시예들에서, 모션 파라미터들은 모션 벡터 및 참조 픽처 인덱스를 포함한다. 다른 실시예들에서, 2개의 참조 픽처 리스트들 중 하나의 사용도 inter_pred_idc를 사용하여 시그널링될 수 있다. 또 다른 실시예들에서, 모션 벡터들은 예측자들에 대한 델타들로서 명시적으로 코딩될 수 있다.
CU가 스킵 모드로 코딩될 때, 하나의 PU는 CU와 연관되고, 어떠한 유의 잔여 계수들도 없고, 어떠한 코딩된 모션 벡터 델타 또는 참조 픽처 인덱스도 없다. 공간 및 시간 후보들을 포함하는 이웃 PU들로부터 현재 PU에 대한 모션 파라미터들이 획득되는 병합 모드가 특정된다. 병합 모드는 스킵 모드에 대해서뿐만 아니라 임의의 인터 예측된 PU에 적용될 수 있다. 병합 모드에 대한 대안은 모션 파라미터들의 명시적 송신이며, 여기서 모션 벡터, 각각의 참조 픽처 리스트에 대한 대응하는 참조 픽처 인덱스 및 참조 픽처 리스트 사용은 각각의 PU마다 명시적으로 시그널링된다.
시그널링이 2개의 참조 픽처 리스트 중 하나가 사용될 것임을 나타낼 때, PU는 하나의 샘플 블록으로부터 생성된다. 이것은 "단방향 예측"이라고 지칭된다. P-슬라이스들 및 B-슬라이스들 둘 다에 대해 단방향 예측이 이용가능하다.
시그널링이 참조 픽처 리스트들 둘 다가 사용될 것임을 나타낼 때, PU는 2개의 샘플 블록으로부터 생성된다. 이것은 "양방향 예측(bi-prediction)"이라고 지칭된다. 양방향 예측은 B-슬라이스들에 대해서만 이용가능하다.
1.1.1
병합 모드를 위한 후보들을 구성하는 실시예들
PU가 병합 모드를 사용하여 예측될 때, 병합 후보 리스트 내의 엔트리를 가리키는 인덱스가 비트스트림으로부터 파싱되고 모션 정보를 검색하기 위해 사용된다. 이 리스트의 구성은 다음의 단계들의 시퀀스에 따라 요약될 수 있다:
단계 1: 초기 후보들 도출
단계 1.1: 공간 후보들 도출
단계 1.2: 공간 후보들에 대한 중복 검사
단계 1.3: 시간 후보들 도출
단계 2: 추가 후보들 삽입
단계 2.1: 양방향 예측 후보들의 생성
단계 2.2: 제로 모션 후보들의 삽입
도 1은 위에 요약된 단계들의 시퀀스에 기초하여 병합 후보 리스트를 구성하는 예를 도시한다. 공간 병합 후보 도출의 경우, 5개의 상이한 위치에 위치하는 후보들 중에서 최대 4개의 병합 후보가 선택된다. 시간 병합 후보 도출의 경우, 2개의 후보 중에서 최대 하나의 병합 후보가 선택된다. 각각의 PU에 대해 일정한 후보들의 수가 디코더에서 가정되기 때문에, 후보들의 수가 슬라이스 헤더에서 시그널링되는 병합 후보들의 최대 수(MaxNumMergeCand)에 도달하지 않을 때 추가적인 후보들이 생성된다. 후보들의 수가 일정하기 때문에, 최상의 병합 후보의 인덱스는 절삭형 단항 이진 부호화(TU)를 사용하여 인코딩된다. CU의 크기가 8과 동일한 경우, 현재 CU의 모든 PU들은 2Nx2N 예측 유닛의 병합 후보 리스트와 동일한 단일 병합 후보 리스트를 공유한다.
1.1.2
공간 병합 후보들의 구성
공간 병합 후보들의 도출에서, 도 2에 도시된 위치들에 위치된 후보들 중에서 최대 4개의 병합 후보가 선택된다. 도출 순서는 A1, B1, B0, A0 및 B2이다. 위치 B2는 위치 A1, B1, B0, A0의 임의의 PU가 이용가능하지 않거나(예를 들어, 그것이 다른 슬라이스 또는 타일에 속하기 때문에) 또는 인트라 코딩될 때에만 고려된다. 위치 A1에서의 후보가 추가된 후에, 나머지 후보들의 추가는 코딩 효율이 개선되도록 동일 모션 정보를 갖는 후보들이 리스트로부터 배제되는 것을 보장하는 중복 검사를 거친다.
계산 복잡성을 감소시키기 위해, 모든 가능한 후보 쌍들이 언급된 중복 검사에서 고려되지는 않는다. 대신에, 도 3의 화살표로 링크된 쌍들만이 고려되고, 중복 검사를 위해 사용되는 대응하는 후보가 동일한 모션 정보를 갖지 않는 경우에만 후보가 리스트에 추가된다. 복제 모션 정보의 다른 소스는 2Nx2N과는 상이한 파티션들과 연관된 "제2 PU"이다. 일례로서, 도 4a 및 도 4b는 각각 Nx2N 및 2NxN의 경우에 대한 제2 PU를 도시한다. 현재 PU가 Nx2N으로서 파티셔닝될 때, 위치 A1에서의 후보는 리스트 구성을 위해 고려되지 않는다. 일부 실시예들에서, 이 후보를 추가하는 것은, 코딩 유닛에서 하나의 PU만을 갖기에는 중복인, 동일한 모션 정보를 갖는 2개의 예측 유닛으로 이어질 수 있다. 유사하게, 현재 PU가 2NxN으로 파티셔닝될 때 위치 B1이 고려되지 않는다.
1.1.3
시간 병합 후보들의 구성
이 단계에서, 하나의 후보만이 리스트에 추가된다. 상세하게는, 이 시간 병합 후보의 도출에서, 주어진 참조 픽처 리스트 내에서 현재 픽처와 가장 작은 POC 차이를 갖는 픽처에 속하는 공동위치된(co-located) PU에 기초하여 스케일링된 모션 벡터가 도출된다. 공동위치된 PU의 도출에 사용될 참조 픽처 리스트는 슬라이스 헤더에서 명시적으로 시그널링된다.
도 5는 POC 거리 tb 및 td를 사용하여 공동위치된 PU의 모션 벡터로부터 스케일링되는 (점선으로서의) 시간 병합 후보에 대한 스케일링된 모션 벡터의 도출의 예를 도시하며, 여기서 tb는 현재 픽처의 참조 픽처와 현재 픽처 사이의 POC 차이인 것으로 정의되고, td는 공동위치된 픽처의 참조 픽처와 공동위치된 픽처 사이의 POC 차이인 것으로 정의된다. 시간 병합 후보의 참조 픽처 인덱스는 제로와 동일하게 설정된다. B-슬라이스의 경우, 2개의 모션 벡터- 하나는 참조 픽처 리스트 0에 대한 것이고 다른 하나는 참조 픽처 리스트 1에 대한 것임 -가 획득되고 조합되어 양방향 예측 병합 후보를 만든다.
참조 프레임에 속하는 공동위치된 PU (Y)에서, 시간 후보에 대한 위치는 도 6에 도시된 바와 같이 후보들 C0 및 C1 사이에서 선택된다. 위치 C0에서의 PU가 이용가능하지 않거나, 인트라 코딩되거나, 또는 현재 CTU의 외부에 있으면, 위치 C1이 사용된다. 그렇지 않으면, 위치 C0은 시간 병합 후보의 도출에서 사용된다.
1.1.4
추가적인 타입들의 병합 후보들의 구성
시공간 병합 후보들 이외에, 병합 후보들의 2개의 추가적인 타입이 있다: 조합된 양방향 예측 병합 후보 및 제로 병합 후보. 조합된 양방향 예측 병합 후보들은 시공간 병합 후보들을 이용함으로써 생성된다. 조합된 양방향 예측 병합 후보가 B-슬라이스에 대해서만 사용된다. 조합된 양방향 예측 후보들은 초기 후보의 제1 참조 픽처 리스트 모션 파라미터들을 다른 것의 제2 참조 픽처 리스트 모션 파라미터들과 조합함으로써 생성된다. 이들 2개의 튜플이 상이한 모션 가설들을 제공하는 경우, 이들은 새로운 양방향 예측 후보를 형성할 것이다.
도 7은 이 프로세스의 예를 도시하는데, 여기서 mvL0 및 refIdxL0 또는 mvL1 및 refIdxL1을 갖는 원래의 리스트(710, 좌측 상에 있음) 내의 2개의 후보가 최종 리스트(720, 우측 상에 있음)에 추가된 조합된 양방향 예측 병합 후보를 생성하기 위해 사용된다.
병합 후보들 리스트 내의 나머지 엔트리들을 채우기 위해 제로 모션 후보들이 삽입되며, 따라서 MaxNumMergeCand 용량에 도달한다. 이러한 후보들은 제로 공간 변위 및 제로로부터 시작하고 새로운 제로 모션 후보가 리스트에 추가될 때마다 증가하는 참조 픽처 인덱스를 갖는다. 이러한 후보들에 의해 사용되는 참조 프레임들의 수는 각각 단방향 및 양방향 예측을 위한 1 및 2이다. 일부 실시예들에서, 이러한 후보들에 대해 중복 검사가 수행되지 않는다.
1.1.5
병렬 처리를 위한 모션 추정 영역들의 예들
인코딩 프로세스의 속력을 상승시키기 위해, 모션 추정이 병렬로 수행될 수 있고, 그에 의해 주어진 영역 내의 모든 예측 유닛들에 대한 모션 벡터들이 동시에 도출된다. 공간 이웃으로부터의 병합 후보들의 도출은 병렬 처리를 방해할 수 있는데, 그 이유는 하나의 예측 유닛이 그의 연관된 모션 추정이 완료될 때까지 인접한 PU로부터 모션 파라미터들을 도출할 수 없기 때문이다. 코딩 효율과 처리 레이턴시 사이의 트레이드오프를 완화하기 위해, 모션 추정 영역(MER)이 정의될 수 있다. MER의 크기는 "log2_parallel_merge_level_minus2" 신택스 요소를 사용하여 PPS(picture parameter set)에서 시그널링될 수 있다. MER이 정의될 때, 동일한 영역에 속하는 병합 후보들은 이용불가능한 것으로 표시되고, 따라서 리스트 구성에서 고려되지 않는다.
1.2
AMVP(advanced motion vector prediction)의 실시예들
AMVP는 모션 파라미터들의 명시적 송신을 위해 사용되는 이웃 PU들과의 모션 벡터의 시공간 상관을 활용한다. 그것은 후보 리스트가 일정한 길이가 되게 하기 위해 먼저 시간적으로 이웃하는 PU 위치들 위의, 좌측의 이용가능성을 검사하고, 중복 후보들을 제거하고, 제로 벡터를 더하는 것에 의해 모션 벡터 후보 리스트를 구성한다. 이어서, 인코더는 후보 리스트로부터 최상의 예측자를 선택하고 선택된 후보를 나타내는 대응하는 인덱스를 송신할 수 있다. 병합 인덱스 시그널링과 유사하게, 최상의 모션 벡터 후보의 인덱스는 절삭형 단항(truncated unary)을 사용하여 인코딩된다. 이 경우에 인코딩될 최대값은 2이다(도 8 참조). 다음의 섹션들에서, 모션 벡터 예측 후보의 도출 프로세스에 관한 상세들이 제공된다.
1.2.1
모션 벡터 예측 후보들을 구성하는 예들
도 8은 모션 벡터 예측 후보에 대한 도출 프로세스를 요약하며, refidx를 입력으로 하여 각각의 참조 픽처 리스트에 대해 구현될 수 있다.
모션 벡터 예측에서, 2가지 타입의 모션 벡터 후보가 고려된다: 공간 모션 벡터 후보 및 시간 모션 벡터 후보. 공간 모션 벡터 후보 도출의 경우, 2개의 모션 벡터 후보가 결국 이전에 도 2에 도시된 바와 같이 5개의 상이한 위치에 위치하는 각각의 PU의 모션 벡터들에 기초하여 도출된다.
시간 모션 벡터 후보 도출의 경우, 2개의 상이한 공동위치된 위치에 기초하여 도출되는 2개의 후보로부터 하나의 모션 벡터 후보가 선택된다. 시공간 후보들의 제1 리스트가 만들어진 후에, 리스트 내의 복제된 모션 벡터 후보들이 제거된다. 잠재적 후보들의 수가 2보다 큰 경우, 연관된 참조 픽처 리스트 내의 참조 픽처 인덱스가 1보다 큰 모션 벡터 후보들이 리스트로부터 제거된다. 시공간 모션 벡터 후보들의 수가 2보다 작으면, 추가적인 제로 모션 벡터 후보들이 리스트에 추가된다.
1.2.2
공간 모션 벡터 후보들의 구성
공간 모션 벡터 후보들의 도출에서, 이전에 도 2에 도시된 바와 같은 위치들에 위치된 PU들로부터 도출되며, 그 위치들은 모션 병합의 위치들과 동일한 5개의 잠재적 후보들 중에서 최대 2개의 후보가 고려된다. 현재 PU의 좌측에 대한 도출 순서는 A0, A1, 및 스케일링된 A0, 스케일링된 A1로서 정의된다. 현재 PU의 위측에 대한 도출 순서는 B0, B1, B2, 스케일링된 B0, 스케일링된 B1, 스케일링된 B2로 정의된다. 따라서, 각각의 측면에 대해, 모션 벡터 후보로서 사용될 수 있는 4개의 경우가 있으며, 2개의 경우가 공간 스케일링을 사용할 필요가 없고, 2개의 경우가 공간 스케일링이 사용되는 것이다. 4개의 상이한 경우는 다음과 같이 요약된다:
-- 공간 스케일링 없음
(1) 동일한 참조 픽처 리스트, 및 동일한 참조 픽처 인덱스(동일한 POC)
(2) 상이한 참조 픽처 리스트, 그러나 동일한 참조 픽처(동일한 POC)
-- 공간 스케일링
(3) 동일한 참조 픽처 리스트, 그러나 상이한 참조 픽처(상이한 POC)
(4) 상이한 참조 픽처 리스트, 및 상이한 참조 픽처(상이한 POC)
비-공간-스케일링 경우들이 먼저 검사되고, 이어서 공간 스케일링을 허용하는 경우들이 검사된다. 참조 픽처 리스트에 관계없이 이웃 PU의 참조 픽처와 현재 PU의 참조 픽처 사이에 POC가 상이할 때 공간 스케일링이 고려된다. 좌측 후보들의 모든 PU들이 이용가능하지 않거나 인트라 코딩되는 경우, 좌측 및 위의 MV 후보들의 병렬 도출을 돕기 위해 위의 모션 벡터에 대한 스케일링이 허용된다. 그렇지 않으면, 위의 모션 벡터에 대해 공간 스케일링이 허용되지 않는다.
도 9의 예에 도시된 바와 같이, 공간 스케일링 경우에 대해, 이웃 PU의 모션 벡터는 시간 스케일링에 대한 것과 유사한 방식으로 스케일링된다. 하나의 차이는 현재 PU의 인덱스 및 참조 픽처 리스트가 입력으로서 주어진다는 것이다; 실제 스케일링 프로세스는 시간 스케일링의 것과 동일하다.
1.2.3
시간 모션 벡터 후보들의 구성
참조 픽처 인덱스 도출 이외에, 시간 병합 후보들의 도출을 위한 모든 프로세스들은 (도 6의 예에 도시된 바와 같은) 공간 모션 벡터 후보들의 도출과 동일하다. 일부 실시예들에서, 참조 픽처 인덱스는 디코더에 대해 시그널링된다.
2.
JEM(Joint Exploration Model)에서의 인터 예측 방법들의 예
일부 실시예들에서, 장래의 비디오 코딩 기술들은 JEM(Joint Exploration Model)로서 공지된 참조 소프트웨어를 사용하여 탐색된다. JEM에서, 서브블록 기반 예측은 아핀 예측, ATMVP(alternative temporal motion vector prediction), STMVP(spatial-temporal motion vector prediction), BDOF 또는 BIO(bi-directional optical flow), FRUC(Frame-Rate Up Conversion), LAMVR(Locally Adaptive Motion Vector Resolution), OBMC(Overlapped Block Motion Compensation), LIC(Local Illumination Compensation), 및 DMVR(Decoder-side Motion Vector refinement)과 같은 몇몇 코딩 툴들에서 채택된다.
2.1
서브CU(sub-CU) 기반 모션 벡터 예측의 예들
QTBT(quadtrees plus binary trees)를 갖는 JEM에서, 각각의 CU는 각각의 예측 방향에 대해 많아야 하나의 모션 파라미터 세트를 가질 수 있다. 일부 실시예들에서, 2개의 서브CU 레벨 모션 벡터 예측 방법은 큰 CU를 서브CU들로 분할하고 큰 CU의 모든 서브CU들에 대한 모션 정보를 도출함으로써 인코더에서 고려된다. ATMVP(Alternative temporal motion vector prediction) 방법은 각각의 CU가 병치된 참조 픽처에서 현재 CU보다 작은 다수의 블록으로부터 다수의 모션 정보 세트를 페치할 수 있게 한다. STMVP(spatial-temporal motion vector prediction) 방법에서, 서브CU들의 모션 벡터들은 시간 모션 벡터 예측자 및 공간 이웃 모션 벡터를 사용함으로써 재귀적으로 도출된다. 일부 실시예들에서, 그리고 서브CU 모션 예측을 위해 더 정확한 모션 필드를 보존하기 위해, 참조 프레임들에 대한 모션 압축은 디스에이블링될 수 있다.
2.1.1
ATMVP(alternative temporal motion vector prediction)의 예들
ATMVP 방법에서, TMVP(temporal motion vector prediction) 방법은 현재의 CU보다 작은 블록들로부터 (모션 벡터들 및 참조 인덱스들을 포함하는) 다수의 모션 정보 세트를 페치함으로써 수정된다.
도 10은 CU(1000)에 대한 ATMVP 모션 예측 프로세스의 예를 도시한다. ATMVP 방법은 2개의 단계에서 CU(1000) 내의 서브CU들(1001)의 모션 벡터들을 예측한다. 제1 단계는 시간 벡터로 참조 픽처(1050) 내의 대응하는 블록(1051)을 식별하는 것이다. 참조 픽처(1050)는 또한 모션 소스 픽처라고 지칭된다. 제2 단계는 현재 CU(1000)를 서브CU들(1001)로 분할하고, 각각의 서브CU에 대응하는 블록으로부터 각각의 서브CU의 참조 인덱스들뿐만 아니라 모션 벡터들을 획득하는 것이다.
제1 단계에서, 참조 픽처(1050) 및 대응하는 블록은 현재 CU(1000)의 공간 이웃 블록들의 모션 정보에 의해 결정된다. 이웃 블록들의 반복 스캐닝 프로세스를 피하기 위해, 현재 CU(1000)의 병합 후보 리스트 내의 제1 병합 후보가 사용된다. 제1 이용가능한 모션 벡터뿐만 아니라 그의 연관된 참조 인덱스는 모션 소스 픽처에 대한 시간 벡터 및 인덱스로 설정된다. 이러한 방식으로, 대응하는 블록은 TMVP와 비교하여 더 정확하게 식별될 수 있고, 여기서 대응하는 블록(때때로 병치된 블록이라고 불림)은 항상 현재 CU에 대해 우측 하단 또는 중심 위치에 있다.
제2 단계에서, 서브CU(1051)의 대응하는 블록은 현재 CU의 좌표에 시간 벡터를 더함으로써 모션 소스 픽처(1050) 내의 시간 벡터에 의해 식별된다. 각각의 서브CU에 대하여, 그 대응하는 블록의 모션 정보(예를 들어, 중심 샘플을 커버하는 최소 모션 그리드)는 서브CU에 대한 모션 정보를 도출하기 위하여 사용된다. 대응하는 NxN 블록의 모션 정보가 식별된 후에, 그것은 HEVC의 TMVP와 동일한 방식으로 현재 서브CU의 모션 벡터들 및 참조 인덱스들로 변환되고, 여기서 모션 스케일링 및 다른 절차들이 적용된다. 예를 들어, 디코더는 저지연 조건(예를 들어, 현재 픽처의 모든 참조 픽처들의 POC들이 현재 픽처의 POC보다 작음)이 충족되는지를 검사하고, 가능하게는 모션 벡터 MVx(예를 들어, 참조 픽처 리스트 X에 대응하는 모션 벡터)를 사용하여 각각의 서브CU에 대한 모션 벡터 MVy(예를 들어, X는 0 또는 1과 같고 Y는 1-X와 같음)를 예측한다.
2.1.2
STMVP(spatial-temporal motion vector prediction)의 예들
STMVP 방법에서, 서브CU들의 모션 벡터들은 래스터 스캔 순서에 따라, 재귀적으로 도출된다. 도 11은 4개의 서브블록 및 이웃 블록들을 갖는 하나의 CU의 예를 도시한다. 4개의 4x4 서브CU A(1101), B(1102), C(1103), 및 D(1104)를 포함하는 8x8 CU(1100)를 고려한다. 현재 프레임 내의 이웃하는 4x4 블록들은 a(1111), b(1112), c(1113), 및 d(1114)로서 라벨링된다.
서브CU A에 대한 모션 도출은 그것의 2개의 공간 이웃들을 식별함으로써 시작된다. 제1 이웃은 서브CU A(1101) 위의 NxN 블록이다(블록 c(1113)). 이 블록 c(1113)가 이용가능하지 않거나 인트라 코딩된 경우, 서브CU A(1101) 위의 다른 NxN 블록들이 검사된다(블록 c(1113)에서 시작하여 좌측으로부터 우측으로). 제2 이웃은 서브CU A(1101)의 좌측의 블록이다(블록 b(1112)). 블록 b(1112)가 이용가능하지 않거나 인트라 코딩된 경우, 서브CU A(1101)의 좌측에 있는 다른 블록들이 검사된다(블록 b(1112)에서 시작하여, 상단에서 하단으로). 각각의 리스트에 대해 이웃 블록들로부터 획득된 모션 정보는 주어진 리스트에 대해 제1 참조 프레임으로 스케일링된다. 다음으로, 서브블록 A(1101)의 시간 모션 벡터 예측자(TMVP)는 HEVC에서 특정된 바와 같은 TMVP 도출의 동일한 절차를 따르는 것에 의해 도출된다. 블록 D(1104)에서의 병치된 블록의 모션 정보는 그에 따라 페치되고 스케일링된다. 마지막으로, 모션 정보를 검색하고 스케일링한 후에, 모든 이용가능한 모션 벡터는 각각의 참조 리스트에 대해 개별적으로 평균화된다. 평균화된 모션 벡터는 현재 서브CU의 모션 벡터로서 할당된다.
2.1.3
서브CU 모션 예측 모드 시그널링의 예들
일부 실시예들에서, 서브CU 모드들은 추가적인 병합 후보들로서 인에이블링되고 모드들을 시그널링하는데 요구되는 추가적인 신택스 요소가 없다. 각각의 CU의 후보 리스트를 병합하기 위해 2개의 추가적인 병합 후보가 추가되어 ATMVP 모드 및 STMVP 모드를 표현한다. 다른 실시예들에서, 시퀀스 파라미터 세트가 ATMVP 및 STMVP가 인에이블링되는 것을 나타내는 경우, 최대 7개의 병합 후보가 사용될 수 있다. 추가적인 병합 후보들의 인코딩 로직은 HM 내의 병합 후보들에 대한 것과 동일하며, 이는 P 또는 B 슬라이스 내의 각각의 CU에 대해, 2개의 추가적인 병합 후보에 대해 2개 이상의 RD 검사가 필요할 수 있음을 의미한다. 일부 실시예들, 예를 들어, JEM에서, 병합 인덱스의 모든 빈들은 CABAC(Context-based Adaptive Binary Arithmetic Coding)에 의해 컨텍스트 코딩된다(context coded). 다른 실시예들, 예를 들어, HEVC에서, 제1 빈만이 컨텍스트 코딩되고, 나머지 빈들은 컨텍스트 바이패스 코딩된다(by-pass coded).
2.2
적응적 모션 벡터 차이 해상도의 예들
일부 실시예들에서, (PU의 모션 벡터와 예측된 모션 벡터 사이의) 모션 벡터 차이들(MVD들)은 use_integer_mv_flag가 슬라이스 헤더에서 0과 동일할 때 쿼터 루마 샘플들의 유닛들로 시그널링된다. JEM에서, LAMVR(local adaptive motion vector resolution)이 도입된다. JEM에서, MVD는 1/4 루마 샘플들, 정수 루마 샘플들 또는 4 루마 샘플들의 단위들로 코딩될 수 있다. MVD 해상도는 코딩 유닛(CU) 레벨에서 제어되며 MVD 해상도 플래그들은 적어도 하나의 비-제로(non-zero) MVD 컴포넌트를 갖는 각각의 CU에 대해 조건부로 시그널링된다.
적어도 하나의 비-제로 MVD 컴포넌트를 갖는 CU에 대해, 제1 플래그는 CU에서 1/4 루마 샘플 MV 정밀도가 사용되는지를 나타내기 위해 시그널링된다. 제1 플래그(1과 동일)가 1/4 루마 샘플 MV 정밀도가 사용되지 않는다는 것을 나타낼 때, 정수 루마 샘플 MV 정밀도가 사용되는지 또는 4 루마 샘플 MV 정밀도가 사용되는지를 나타내기 위해 다른 플래그가 시그널링된다.
CU의 제1 MVD 해상도 플래그가 제로이거나 CU에 대해 코딩되지 않을 때(CU에서의 모든 MVD들이 제로임을 의미함), 1/4 루마 샘플 MV 해상도가 CU에 대해 사용된다. CU가 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도를 사용할 때, CU에 대한 AMVP 후보 리스트 내의 MVP들은 대응하는 정밀도로 라운딩된다.
인코더에서, 어느 MVD 해상도가 CU에 대해 사용되어야 하는지를 결정하기 위해 CU-레벨 RD 검사들이 사용된다. 즉, CU-레벨 RD 검사는 각각의 MVD 해상도에 대해 3회 수행된다. 인코더 속도를 가속화하기 위해, 다음의 인코딩 스킴들이 JEM에서 적용된다:
-- 정상 쿼터 루마 샘플 MVD 해상도를 갖는 CU의 RD 검사 동안, 현재 CU의 모션 정보(정수 루마 샘플 정확도)가 저장된다. (라운딩 후의) 저장된 모션 정보는 시간 소모적인 모션 추정 프로세스가 3회 복제되지 않도록 정수 루마 샘플 및 4 루마 샘플 MVD 해상도를 갖는 동일한 CU에 대한 RD 검사 동안 추가의 작은 범위 모션 벡터 리파인먼트를 위한 시작점으로서 사용된다.
-- 4 루마 샘플 MVD 해상도를 갖는 CU의 RD 검사가 조건부로 호출된다. CU의 경우, RD 비용 정수 루마 샘플 MVD 해상도가 1/4 루마 샘플 MVD 해상도보다 훨씬 클 때, CU에 대한 4 루마 샘플 MVD 해상도의 RD 검사는 스킵된다.
2.3
더 높은 모션 벡터 저장 정확도의 예들
HEVC에서, 모션 벡터 정확도는 1/4 펠(pel)(4:2:0 비디오에 대해 1/4 루마 샘플 및 1/8 크로마 샘플)이다. JEM에서, 내부 모션 벡터 저장 및 병합 후보에 대한 정확도는 1/16 펠로 증가한다. 더 높은 모션 벡터 정확도(1/16 펠)는 스킵/병합 모드로 코딩된 CU에 대한 모션 보상 인터 예측에서 사용된다. 정상 AMVP 모드로 코딩된 CU에 대하여, 정수-펠 또는 1/4-펠 모션 중 어느 하나가 사용된다.
HEVC 모션 보상 보간 필터들과 동일한 필터 길이 및 정규화 인자를 갖는 SHVC 업샘플링 보간 필터들은 추가적인 분수 펠 위치들에 대한 모션 보상 보간 필터들로서 사용된다. 크로마 컴포넌트 모션 벡터 정확도는 JEM에서 1/32 샘플이고, 1/32 펠 분수 위치들의 추가적인 보간 필터들은 2개의 이웃하는 1/16 펠 분수 위치들의 필터들의 평균을 사용하여 도출된다.
2.4
OBMC(overlapped block motion compensation)의 예들
JEM에서, OBMC는 CU 레벨에서 신택스를 사용하여 스위치 온 및 스위치 오프될 수 있다. OBMC가 JEM에서 사용될 때, OBMC는 CU의 우측 및 하단 경계들을 제외한 모든 모션 보상(MC) 블록 경계들에 대해 수행된다. 또한, 그것은 루마 컴포넌트 및 크로마 컴포넌트 둘 다에 적용된다. JEM에서, MC 블록은 코딩 블록에 대응한다. CU가 서브CU 모드(서브CU 병합, 아핀 및 FRUC 모드를 포함함)로 코딩될 때, CU의 각각의 서브블록은 MC 블록이다. 균일한 방식으로 CU 경계들을 처리하기 위해, OBMC는 모든 MC 블록 경계들에 대해 서브블록 레벨에서 수행되고, 여기서 서브블록 크기는, 도 12a 및 12b에 도시된 바와 같이, 4x4와 동일하게 설정된다.
도 12a는 CU/PU 경계에서의 서브블록들을 도시하며, 해치(hatch)된 서브블록들은 OBMC가 적용되는 곳이다. 유사하게, 도 12b는 ATMVP 모드의 서브Pu들(sub-Pus)을 도시한다.
OBMC가 현재 서브블록에 적용될 때, 현재 모션 벡터들 외에, 4개의 연결된 이웃 서브블록들의 모션 벡터들은, 이용가능하고 현재 모션 벡터와 동일하지 않은 경우, 또한 현재 서브블록에 대한 예측 블록을 도출하기 위해 사용된다. 다수의 모션 벡터들에 기초한 이러한 다수의 예측 블록은 현재 서브블록의 최종 예측 신호를 생성하기 위해 조합된다.
이웃하는 서브블록의 모션 벡터들에 기초한 예측 블록은 PN으로서 표시되며, N은 이웃하는 위, 아래, 좌측 및 우측 서브블록들에 대한 인덱스를 나타내고, 현재 서브블록의 모션 벡터들에 기초한 예측 블록은 PC로서 표시된다. PN이 현재 서브블록에 대한 동일한 모션 정보를 포함하는 이웃 서브블록의 모션 정보에 기초할 때, OBMC는 PN으로부터 수행되지 않는다. 그렇지 않으면, PN의 모든 샘플이 PC 내의 동일한 샘플에 추가되는데, 즉 PN의 4개의 행/열이 PC에 추가된다. 가중 인자들 {1/4, 1/8, 1/16, 1/32}는 PN에 사용되고 가중 인자들 {3/4, 7/8, 15/16, 31/32}는 PC에 사용된다. 예외는 작은 MC 블록들이며(즉, 코딩 블록의 높이 또는 폭이 4와 동일하거나 CU가 서브CU 모드로 코딩될 때), 이에 대해 PN의 2개의 행/열만이 PC에 추가된다. 이 경우 가중 인자들 {1/4, 1/8}은 PN에 사용되고 가중 인자들 {3/4, 7/8}는 PC에 사용된다. 수직으로(수평으로) 이웃하는 서브블록의 모션 벡터들에 기초하여 생성되는 PN에 대해, PN의 동일한 행(열) 내의 샘플들이 동일한 가중 인자를 이용하여 PC에 추가된다.
JEM에서, 256개의 루마 샘플 이하의 크기를 갖는 CU에 대해, 현재 CU에 대해 OBMC가 적용되는지 여부를 나타내기 위해 CU 레벨 플래그가 시그널링된다. 256개의 루마 샘플보다 큰 크기를 갖거나 AMVP 모드로 코딩되지 않은 CU들에 대해, OBMC는 디폴트로 적용된다. 인코더에서, OBMC가 CU에 적용될 때, 모션 추정 스테이지 동안 그의 영향이 고려된다. 상부 이웃 블록 및 좌측 이웃 블록의 모션 정보를 사용하여 OBMC에 의해 형성된 예측 신호는 현재 CU의 원래 신호의 상단 및 좌측 경계들을 보상하는데 사용되고, 그 후 정상 모션 추정 프로세스가 적용된다.
2.5
로컬 조명 보상(LIC)의 예들
LIC는 스케일링 인자 a 및 오프셋 b를 사용하여 조명 변화들에 대한 선형 모델에 기초한다. 그리고, 이것은 각각의 인터 모드 코딩된 코딩 유닛(CU)에 대해 적응적으로 인에이블링되거나 디스에이블링된다.
LIC가 CU에 적용되는 경우, 현재 CU의 이웃 샘플들 및 그들의 대응하는 참조 샘플들을 사용하여 파라미터들 a 및 b를 도출하기 위해 최소 제곱 에러 방법(least square error method)이 사용된다. 도 13은 IC 알고리즘의 파라미터들을 도출하는데 사용되는 이웃 샘플들의 예를 도시한다. 구체적으로, 도 13에 도시된 바와 같이, CU의 서브샘플링된(2:1 서브샘플링) 이웃 샘플들 및 참조 픽처에서의 대응하는 샘플들(현재 CU 또는 서브CU의 모션 정보에 의해 식별됨)이 사용된다. IC 파라미터들은 각각의 예측 방향에 대해 개별적으로 도출되고 적용된다.
CU가 병합 모드로 코딩될 때, 병합 모드에서의 모션 정보 복사와 유사한 방식으로, LIC 플래그는 이웃 블록들로부터 복사된다; 그렇지 않으면, LIC가 적용되는지 여부를 표시하기 위해 LIC 플래그가 CU에 대해 시그널링된다.
LIC가 픽처에 대해 인에이블링될 때, LIC가 CU에 대해 적용되는지 여부를 결정하기 위해 추가적인 CU 레벨 RD 검사가 필요하다. LIC가 CU에 대해 인에이블링될 때, 각각 정수 펠 모션 탐색 및 분수 펠 모션 탐색을 위해, SAD 및 SATD 대신에, MR-SAD(mean-removed sum of absolute difference) 및 MR-SATD(mean-removed sum of absolute Hadamard-transformed difference)이 사용된다.
인코딩 복잡성을 감소시키기 위해, 다음의 인코딩 스킴이 JEM에서 적용된다:
-- LIC는 현재 픽처와 그것의 참조 픽처들 사이에 명백한 조명 변화가 없을 때 전체 픽처에 대해 디스에이블링된다. 이러한 상황을 식별하기 위해, 현재 픽처의 히스토그램들 및 현재 픽처의 모든 참조 픽처가 인코더에서 계산된다. 현재 픽처와 현재 픽처의 모든 참조 픽처 사이의 히스토그램 차이가 주어진 임계값보다 작으면, 현재 픽처에 대해 LIC가 디스에이블링된다; 그렇지 않으면, LIC는 현재 픽처에 대해 인에이블링된다.
2.6
아핀 모션 보상 예측의 예
HEVC에서, 모션 보상 예측(MCP)에 대해 변환 모션 모델만이 적용된다. 그러나, 카메라 및 물체들은 많은 종류의 모션, 예를 들어, 줌 인/아웃, 회전, 원근 모션들, 및/또는 다른 불규칙한 모션들을 가질 수 있다. 다른 한편으로, JEM은 단순화된 아핀 변환 모션 보상 예측을 적용한다. 도 14는 2개의 제어점 모션 벡터 V0 및 V1에 의해 설명된 블록(1400)의 아핀 모션 필드의 예를 도시한다. 블록(1400)의 모션 벡터 필드(MVF)는 이하의 수학식에 의해 설명될 수 있다:
도 14에 도시된 바와 같이, (v0x, v0y)은 좌측 상단 코너 제어점의 모션 벡터이고, (v1x, v1y)은 우측 상단 코너 제어점의 모션 벡터이다. 모션 보상 예측을 단순화하기 위해, 서브블록 기반 아핀 변환 예측이 적용될 수 있다. 서브블록 크기 MxN은 다음과 같이 도출된다:
여기서, MvPre는 모션 벡터 분수 정확도(예를 들어, JEM에서 1/16)이다. (v2x, v2y)는 수학식 (1)에 따라 계산된 좌측 하단 제어점의 모션 벡터이다. M 및 N은 그것을 각각 w 및 h의 제수(divisor)로 만들기 위해 필요한 경우 아래로 조정될 수 있다.
도 15는 블록(1500)에 대한 서브블록당 아핀 MVF의 예를 도시한다. 각각의 MxN 서브블록의 모션 벡터를 도출하기 위해, 각각의 서브블록의 중심 샘플의 모션 벡터는 수학식 (1)에 따라 계산되고, 모션 벡터 분수 정확도(예를 들어, JEM에서 1/16)로 라운딩될 수 있다. 이어서, 도출된 모션 벡터로 각각의 서브블록의 예측을 생성하기 위해 모션 보상 보간 필터들이 적용될 수 있다. MCP 후에, 각각의 서브블록의 높은 정확도의 모션 벡터는 라운딩되고 정상 모션 벡터와 동일한 정확도로 저장된다.
2.6.1
AF_INTER 모드의 실시예들
JEM에서, 2개의 아핀 모션 모드: AF_INTER 모드 및 AF_MERGE 모드가 있다. 폭 및 높이 둘 다가 8보다 큰 CU들에 대해, AF_INTER 모드가 적용될 수 있다. AF_INTER 모드가 사용되는지를 나타내기 위해 CU 레벨의 아핀 플래그가 비트스트림에서 시그널링된다. AF_INTER 모드에서, 모션 벡터 쌍 를 갖는 후보 리스트가 이웃 블록들을 사용하여 구성된다.
도 16은 AF_INTER 모드의 블록(1600)에 대한 모션 벡터 예측(MVP)의 예를 도시한다. 도 16에 도시된 바와 같이, v0은 서브블록 A, B 또는 C의 모션 벡터들로부터 선택된다. 이웃 블록들로부터의 모션 벡터들은 참조 리스트에 따라 스케일링될 수 있다. 모션 벡터들은 또한 이웃 블록에 대한 참조의 픽처 순서 카운트(POC), 현재 CU에 대한 참조의 POC, 및 현재 CU의 POC 사이의 관계에 따라 스케일링될 수 있다. 이웃 서브블록 D 및 E로부터 v1을 선택하기 위한 접근법은 유사하다. 후보 리스트의 수가 2보다 작으면, 리스트는 AMVP 후보들 각각을 복제함으로써 구성된 모션 벡터 쌍에 의해 패딩된다. 후보 리스트가 2보다 큰 경우, 후보들은 먼저 (예를 들어, 쌍 후보에서의 2개의 모션 벡터의 유사성에 기초하여) 이웃하는 모션 벡터들에 따라 분류될 수 있다. 일부 구현들에서, 처음 2개의 후보가 유지된다. 일부 실시예들에서, 어느 모션 벡터 쌍 후보가 현재 CU의 제어점 모션 벡터 예측(CPMVP)으로서 선택되는지를 결정하기 위해 RD(Rate Distortion) 비용 검사가 사용된다. 후보 리스트에서의 CPMVP의 위치를 나타내는 인덱스가 비트스트림에서 시그널링될 수 있다. 현재 아핀 CU의 CPMVP가 결정된 후에, 아핀 모션 추정이 적용되고 제어점 모션 벡터(CPMV)가 발견된다. 그 다음, CPMV와 CPMVP의 차이가 비트스트림에서 시그널링된다.
2.6.3
AF_MERGE 모드의 실시예들
CU가 AF_MERGE 모드에서 적용될 때, 그것은 유효 이웃 재구성된 블록들로부터 아핀 모드로 코딩된 제1 블록을 얻는다. 도 17a는 현재 CU(1700)에 대한 후보 블록들의 선택 순서의 예를 도시한다. 도 17a에 도시된 바와 같이, 선택 순서는 현재 CU(1700)의 좌측(1701), 위(1702), 위의 우측(1703), 좌측 하단(1704)으로부터 위의 좌측(1705)까지일 수 있다. 도 17b는 AF_MERGE 모드의 현재 CU(1700)에 대한 후보 블록들의 또 다른 예를 도시한다. 이웃하는 좌측 하단 블록(1801)이 아핀 모드로 코딩되면, 도 17b에 도시된 바와 같이, 서브블록(1701)을 포함하는 CU의 좌측 상단 코너, 위의 우측 코너 및 좌측 하단 코너의 모션 벡터들 v2, v3 및 v4가 도출된다. 현재 CU(1700) 상의 좌측 상단 코너의 모션 벡터 v0은 v2, v3 및 v4에 기초하여 계산된다. 현재 CU의 위의 우측의 모션 벡터 v1은 그에 따라 계산될 수 있다.
현재 CU의 CPMV v0 및 v1은 수학식 (1)의 아핀 모션 모델에 따라 계산되고, 현재 CU의 MVF가 생성될 수 있다. 현재 CU가 AF_MERGE 모드로 코딩되는지를 식별하기 위해, 아핀 모드에서 코딩되는 적어도 하나의 이웃 블록이 존재할 때 아핀 플래그가 비트스트림에서 시그널링될 수 있다.
2.7
PMMVD(pattern matched motion vector derivation)의 예들
PMMVD 모드는 프레임-레이트 업 변환(Frame-Rate Up Conversion)(FRUC) 방법에 기초한 특수 병합 모드이다. 이 병합 모드에 의해, 블록의 모션 정보는 시그널링되지 않지만 디코더 측에서 도출된다.
FRUC 플래그는 그 병합 플래그가 참일 때 CU에 대해 시그널링될 수 있다. FRUC 플래그가 거짓일 때, 병합 인덱스가 시그널링되고 정규 병합 모드가 사용된다. FRUC 플래그가 참일 때, 추가적인 FRUC 모드 플래그가 시그널링되어 어느 방법(예를 들어, 양방향 매칭 또는 템플릿 매칭)이 블록에 대한 모션 정보를 도출하는데 사용될지를 나타낸다.
인코더 측에서, CU에 대해 FRUC 병합 모드를 사용하는지에 대한 판정은 정상 병합 후보에 대해 행해진 RD 비용 선택에 기초한다. 예를 들어, 다수의 매칭 모드(예를 들어, 양방향 매칭 및 템플릿 매칭)는 RD 비용 선택을 사용하여 CU에 대해 검사된다. 최소 비용을 초래하는 것은 다른 CU 모드들과 추가로 비교된다. FRUC 매칭 모드가 가장 효율적인 것이면, FRUC 플래그가 CU에 대해 참으로 설정되고 관련 매칭 모드가 사용된다.
전형적으로, FRUC 병합 모드에서의 모션 도출 프로세스는 2개의 단계를 갖는다: CU-레벨 모션 탐색이 먼저 수행된 후에, 서브CU 레벨 모션 리파인먼트가 이어진다. CU 레벨에서, 초기 모션 벡터는 양방향 매칭 또는 템플릿 매칭에 기초하여 전체 CU에 대해 도출된다. 먼저, MV 후보들의 리스트가 생성되고 최소 매칭 비용을 초래하는 후보가 추가의 CU 레벨 리파인먼트를 위한 시작점으로서 선택된다. 그 후, 시작점 주위의 양방향 매칭 또는 템플릿 매칭에 기초한 로컬 탐색이 수행된다. 최소 매칭 비용을 초래하는 MV는 전체 CU에 대한 MV로서 취해진다. 후속하여, 모션 정보는 시작점들로서 도출된 CU 모션 벡터들을 갖는 서브CU 레벨에서 추가로 리파인된다.
예를 들어, WxH CU 모션 정보 도출에 대해 다음의 도출 프로세스가 수행된다. 제1 스테이지에서, 전체 WxH CU에 대한 MV가 도출된다. 제2 스테이지에서, CU는 MxM 서브CU들로 추가로 분열된다. M의 값은 수학식 (3)과 같이 계산되고, D는 JEM에서 디폴트로 3으로 설정되는 미리 정의된 분할 깊이이다. 이어서, 각각의 서브CU에 대한 MV가 도출된다.
도 18은 프레임-레이트 업 변환(FRUC) 방법에서 사용된 양방향 매칭의 예를 도시한다. 양방향 매칭은 2개의 상이한 참조 픽처(1810, 1811)에서 현재 CU(1800)의 모션 궤적을 따라 2개의 블록 사이의 가장 가까운 매칭을 발견함으로써 현재 CU의 모션 정보를 도출하는데 사용된다. 연속적 모션 궤적의 가정 하에, 2개의 참조 블록들을 가리키는 모션 벡터들 MV0(1801) 및 MV1(1802)은 현재 픽처와 2개의 참조 픽처들 사이의 시간 거리(temporal distance)들, 예를 들어, TD0(1803) 및 TD1(1804)에 비례한다. 일부 실시예들에서, 현재 픽처(1800)가 시간적으로 2개의 참조 픽처(1810, 1811) 사이에 있고, 현재 픽처로부터 2개의 참조 픽처까지의 시간 거리가 동일할 때, 양방향 매칭은 미러 기반 양방향 MV가 된다.
도 19는 프레임-레이트 업 변환(FRUC) 방법에서 사용된 템플릿 매칭의 예를 도시한다. 템플릿 매칭은 현재 픽처 내의 템플릿(예를 들어, 현재 CU의 상단 및/또는 좌측 이웃 블록들)과 참조 픽처(1910) 내의 블록(예를 들어, 템플릿과 동일한 크기) 사이의 가장 가까운 매칭을 발견함으로써 현재 CU(1900)의 모션 정보를 도출하는데 사용될 수 있다. 전술한 FRUC 병합 모드를 제외하고, 템플릿 매칭은 AMVP 모드에 또한 적용될 수 있다. JEM과 HEVC 둘 다에서, AMVP는 2개의 후보를 갖는다. 템플릿 매칭 방법을 사용하여, 새로운 후보가 도출될 수 있다. 템플릿 매칭에 의해 새롭게 도출된 후보가 제1 기존의 AMVP 후보와 상이하면, 그것은 AMVP 후보 리스트의 맨 처음에 삽입되고, 그 다음으로, 리스트 크기는 (예를 들어, 제2 기존의 AMVP 후보를 제거함으로써) 2로 설정된다. AMVP 모드에 적용될 때, CU 레벨 탐색만이 적용된다.
CU 레벨에서의 MV 후보 세트는 다음을 포함할 수 있다: (1) 현재 CU가 AMVP 모드에 있는 경우 원래의 AMVP 후보들, (2) 모든 병합 후보들, (3) 보간된 MV 필드(나중에 설명됨)에서의 몇 개의 MV들, 및 상단 및 좌측 이웃하는 모션 벡터들.
양방향 매칭을 사용할 때, 병합 후보의 각각의 유효 MV는 양방향 매칭의 가정 하에 MV 쌍을 생성하기 위한 입력으로서 사용될 수 있다. 예를 들어, 병합 후보의 하나의 유효 MV는 참조 리스트 A에서 (MVa, refa)이다. 그 다음, 그것의 쌍을 이룬 양방향 MV의 참조 픽처 refb는 다른 참조 리스트 B에서 발견되어, refa 및 refb가 시간적으로, 현재 픽처의 상이한 측면들에 있도록 한다. 이러한 refb가 참조 리스트 B에서 이용가능하지 않은 경우, refb는 refa와 상이한 참조로서 결정되고 현재 픽처에 대한 그것의 시간 거리는 리스트 B에서 최소의 것이다. refb가 결정된 후에, MVb는 현재 픽처와 refa, refb 사이의 시간 거리에 기초하여 MVa를 스케일링함으로써 도출된다.
일부 구현들에서, 보간된 MV 필드로부터의 4개의 MV가 또한 CU 레벨 후보 리스트에 추가될 수 있다. 보다 구체적으로, 현재 CU의 위치 (0, 0), (W/2, 0), (0, H/2) 및 (W/2, H/2)에서의 보간된 MV들이 추가된다. FRUC가 AMVP 모드에서 적용될 때, 원래의 AMVP 후보들은 또한 CU 레벨 MV 후보 세트에 추가된다. 일부 구현들에서, CU 레벨에서, AMVP CU들에 대한 15개의 MV 및 병합 CU들에 대한 13개의 MV가 후보 리스트에 추가될 수 있다.
서브CU 레벨에서의 MV 후보 세트는 CU-레벨 탐색으로부터 결정된 MV, (2) 상단, 좌측, 좌측 상단 및 우측 상단 이웃 MV들, (3) 참조 픽처들로부터의 병치된 MV들의 스케일링된 버전들, (4) 하나 이상의 ATMVP 후보(예를 들어, 최대 4개), 및 (5) 하나 이상의 STMVP 후보(예를 들어, 최대 4개)를 포함한다. 참조 픽처들로부터의 스케일링된 MV들은 다음과 같이 도출된다. 둘 다의 리스트 내의 참조 픽처들은 순회된다. 참조 픽처에서의 서브CU의 병치된 위치에서의 MV들은 시작 CU-레벨 MV의 참조로 스케일링된다. ATMVP 및 STMVP 후보들은 4개의 첫 번째 것일 수 있다. 서브CU 레벨에서, 하나 이상의 MV(예를 들어, 최대 17개)가 후보 리스트에 추가된다.
보간된 MV 필드의 생성. 프레임을 코딩하기 전에, 단방향 ME에 기초하여 전체 픽처에 대해 보간된 모션 필드가 생성된다. 이어서, 모션 필드는 나중에 CU 레벨 또는 서브CU 레벨 MV 후보들로서 사용될 수 있다.
일부 실시예들에서, 둘 다의 참조 리스트 내의 각각의 참조 픽처들의 모션 필드는 4x4 블록 레벨에서 순회된다. 도 20은 FRUC 방법에서의 단방향 모션 추정(ME)(2000)의 예를 도시한다. 각각의 4x4 블록에 대해, 모션이 현재 픽처 내의 4x4 블록을 통과하는 블록과 연관되었고 블록이 어떠한 보간된 모션도 할당받지 않은 경우, 참조 블록의 모션은 시간 거리 TD0 및 TD1에 따라 현재 픽처에 스케일링되고(HEVC에서 TMVP의 MV 스케일링의 것과 동일한 방식) 스케일링된 모션은 현재 프레임 내의 블록에 할당된다. 스케일링된 MV가 4x4 블록에 할당되지 않으면, 블록의 모션은 보간된 모션 필드에서 이용불가능한 것으로 마킹된다.
보간 및 매칭 비용. 모션 벡터가 분수 샘플 위치를 가리키는 경우, 모션 보상된 보간이 필요하다. 복잡도를 감소시키기 위해, 정규 8-탭 HEVC 보간 대신에, 쌍선형 보간이 양방향 매칭 및 템플릿 매칭 둘 다에 대해 사용된다.
매칭 비용의 계산은 상이한 단계들에서 비트 상이하다. CU 레벨에서 후보 세트로부터 후보를 선택할 때, 매칭 비용은 양방향 매칭 또는 템플릿 매칭의 SAD(absolute sum difference)일 수 있다. 시작 MV가 결정된 후에, 서브CU 레벨 탐색에서의 양방향 매칭의 매칭 비용 C는 다음과 같이 계산된다.
여기서, w는 가중 인자이다. 일부 실시예들에서, w는 실험적으로 4로 설정될 수 있다. MV 및 MVs는 각각 현재 MV 및 시작 MV를 나타낸다. SAD는 서브CU 레벨 탐색에서 템플릿 매칭의 매칭 비용으로서 여전히 사용될 수 있다.
FRUC 모드에서, MV는 루마 샘플들만을 사용하여 도출된다. 도출된 모션은 MC 인터 예측을 위해 루마와 크로마 둘 다에 사용될 것이다. MV가 결정된 후, 최종 MC는 루마에 대한 8-탭 보간 필터 및 크로마에 대한 4-탭 보간 필터를 사용하여 수행된다.
MV 리파인먼트는 양방향 매칭 비용 또는 템플릿 매칭 비용의 기준에 의한 패턴 기반 MV 탐색이라는 점에 유의한다. JEM에서, 2개의 탐색 패턴 - CU 레벨 및 서브CU 레벨 각각에서의 MV 리파인먼트를 위한 제한되지 않은 중심-편향 다이아몬드 탐색(UCBDS; unrestricted center-biased diamond search) 및 적응적 크로스 탐색이 지원된다. CU 및 서브CU 레벨 둘 다의 MV 리파인먼트를 위해, MV는 1/4 루마 샘플 MV 정밀도로 직접 탐색되고, 그 이후에, 1/8 루마 샘플 MV 리파인먼트가 후속된다. CU 및 서브CU 단계에 대한 MV 리파인먼트의 탐색 범위는 8개의 루마 샘플과 동일하게 설정된다.
양방향 매칭 병합 모드에서, CU의 모션 정보가 2개의 상이한 참조 픽처에서의 현재 CU의 모션 궤적을 따른 2개의 블록 사이의 가장 근접한 매치에 기반하여 도출되기 때문에, 양방향 예측이 적용된다. 템플릿 매칭 병합 모드에서, 인코더는 list0으로부터의 단방향 예측, list1로부터의 단방향 예측, 또는 CU에 대한 양방향 예측 중에서 선택할 수 있다. 선택은 다음과 같이 템플릿 매칭 비용에 기초할 수 있다:
costBi <= 인자 * min (cost0, cost1)인 경우
양방향 예측이 사용된다;
그렇지 않으면, cost0 <= cost1인 경우,
list0으로부터의 단방향 예측이 사용된다;
그렇지 않으면,
list1로부터의 단방향 예측이 사용된다;
여기서, cost0은 list0 템플릿 매칭의 SAD이고, cost1은 list1 템플릿 매칭의 SAD이고, costBi는 양방향 예측 템플릿 매칭의 SAD이다. 예를 들어, 인자의 값이 1.25와 같을 때, 이는 선택 프로세스가 양방향 예측을 향해 편향된다는 것을 의미한다. 인터 예측 방향 선택은 CU-레벨 템플릿 매칭 프로세스에 적용될 수 있다.
2.8
일반화된 양방향 예측 개선(GBi)의 예들
일반화된 양방향 예측 개선(GBi)이 VTM-3.0에 채택된다. GBi는 양방향 예측 모드에서 L0 및 L1로부터의 예측자들에 대해 동일하지 않은 가중치들을 적용한다. 인터 예측 모드에서, 동일한 가중치 쌍(1/2, 1/2)을 포함하는 다수의 가중치 쌍은 레이트-왜곡 최적화(RDO)에 기초하여 평가되고, 선택된 가중치 쌍의 GBi 인덱스는 디코더에 시그널링된다. 병합 모드에서, GBi 인덱스는 이웃 CU로부터 상속된다. 예측자 생성 공식은 수학식 (5)에서와 같이 도시된다.
여기서, PGBi는 GBi, w0 및 w1의 최종 예측자이고, 각각 list 0(L0) 및 list 1(L1)의 예측자들(PL0 및 PL1)에 적용되는 선택된 GBi 가중치들이다. RoundingOffsetGBi 및 shiftNumGBi는 GBi에서 최종 예측자를 정규화하기 위해 사용된다. 지원되는 w1 가중치 세트는 {-1/4, 3/8, 1/2, 5/8, 5/4}이고, 여기서 5개의 가중치는 하나의 동일한 가중치 쌍 및 4개의 동일하지 않은 가중치 쌍에 대응한다. 혼합 이득, 즉 w1과 w0의 합은 1.0으로 고정된다. 따라서, 대응하는 w0 가중치 세트는 {5/4, 5/8, 1/2, 3/8, -1/4}이다. 가중치 쌍 선택은 CU-레벨이다.
비-낮은 지연 픽처들의 경우, 가중치 세트 크기는 5에서 3으로 감소되며, 여기서 w1 가중치 세트는 {3/8, 1/2, 5/8}이고 w0 가중치 세트는 {5/8, 1/2, 3/8}이다. 비-낮은 지연 픽처들에 대한 가중치 세트 크기 감소는 이 기고문에서의 모든 GBi 테스트들 및 BMS2.1 GBi에 적용된다.
2.8.1
GBi 인코더 버그 픽스
GBi 인코딩 시간을 감소시키기 위해, 현재 인코더 설계에서, 인코더는 4/8과 동일한 GBi 가중치로부터 단방향 예측 모션 벡터들을 저장하고, 이들을 다른 GBi 가중치들의 단방향 예측 탐색을 위해 재사용할 것이다. 이 고속 인코딩 방법은 변환 모션 모델 및 아핀 모션 모델 둘 다에 적용된다. VTM2.0에서는, 4-파라미터 아핀 모델과 함께 6-파라미터 아핀 모델이 채택되었다. BMS2.1 인코더는 GBi 가중치가 4/8과 동일할 때 그것이 단방향 예측 아핀 MV들을 저장할 때 4-파라미터 아핀 모델 및 6-파라미터 아핀 모델을 구별하지 않는다. 결과적으로, 4-파라미터 아핀 MV들은 GBi 가중치 4/8로 인코딩 후에 6-파라미터 아핀 MV들에 의해 오버라이트될 수 있다. 저장된 6-파라미터 아핀 MV들은 다른 GBi 가중치들에 대한 4-파라미터 아핀 ME에 대해 사용될 수 있거나, 저장된 4-파라미터 아핀 MV들은 6-파라미터 아핀 ME에 대해 사용될 수 있다. 제안된 GBi 인코더 버그 픽스는 4-파라미터 및 6-파라미터 아핀 MV들 저장을 분리하는 것이다. 인코더는 GBi 가중치가 4/8과 동일할 때 아핀 모델 타입에 기초하여 그러한 아핀 MV들을 저장하고, 다른 GBi 가중치들에 대해 아핀 모델 타입에 기초하여 대응하는 아핀 MV들을 재사용한다.
2.8.2
GBi 인코더 속력 상승
이러한 기존의 구현에서, GBi가 인에이블링될 때 인코딩 시간을 감소시키기 위해 5개의 인코더 속력 상승 방법들이 제안된다.
(1) 일부 GBi 가중치들에 대한 아핀 모션 추정을 조건부로 스킵하는 것
BMS2.1에서, 4-파라미터 및 6-파라미터 아핀 ME를 포함하는 아핀 ME가 모든 GBi 가중치들에 대해 수행된다. 그 동일하지 않은 GBi 가중치들(4/8과 동일하지 않은 가중치들)에 대해 조건부로 아핀 ME를 스킵하는 것을 제안한다. 구체적으로, 아핀 ME는 아핀 모드가 현재의 최상 모드로서 선택되고, 그것이 4/8의 GBi 가중치를 평가한 후에 아핀 병합 모드가 아닌 경우에 그리고 그 경우에만 다른 GBi 가중치들에 대해 수행될 것이다. 현재 픽처가 비-낮은 지연 픽처인 경우, 아핀 ME가 수행될 때 동일하지 않은 GBi 가중치들에 대해 변환 모델에 대한 양방향 예측 ME가 스킵될 것이다. 아핀 모드가 현재 최상의 모드로서 선택되지 않는 경우 또는 아핀 병합이 현재 최상의 모드로서 선택되는 경우, 모든 다른 GBi 가중치들에 대해 아핀 ME가 스킵될 것이다.
(2) 1 펠 및 4 펠 MVD 정밀도에 대한 인코딩에서 낮은 지연 픽처들에 대한 RD 비용 검사를 위한 가중치들의 수를 감소시키는 것
낮은 지연 픽처들의 경우, 1/4 펠, 1 펠 및 4 펠을 포함하는 모든 MVD 정밀도들에 대한 RD 비용 검사를 위한 5개의 가중치가 존재한다. 인코더는 먼저 1/4 펠 MVD 정밀도에 대한 RD 비용을 검사할 것이다. 1 펠 및 4 펠 MVD 정밀도들에 대한 RD 비용 검사를 위한 GBi 가중치들의 일부를 스킵하는 것을 제안한다. 1/4 펠 MVD 정밀도에서 이들의 RD 비용에 따라 이러한 동일하지 않은 가중치들을 정렬한다. GBi 가중치 4/8과 함께, 가장 작은 RD 비용들을 갖는 처음 2개의 가중치만이 1 펠 및 4 펠 MVD 정밀도들의 인코딩 동안 평가될 것이다. 따라서, 기껏해야 3개의 가중치가 낮은 지연 픽처들에 대해 1 펠 및 4 펠 MVD 정밀도들에 대해 평가될 것이다.
(3) L0 및 L1 참조 픽처들이 동일할 때 양방향 예측 탐색을 조건부로 스킵하는 것
RA 내의 일부 픽처들의 경우, 동일한 픽처가 둘 다의 참조 픽처 리스트들(list-0 및 list-1)에서 발생할 수 있다. 예를 들어, CTC에서의 랜덤 액세스 코딩 구성의 경우, 제1 픽처 그룹(GOP)에 대한 참조 픽처 구조가 다음과 같이 열거된다.
픽처들(16, 8, 4, 2, 1, 12, 14 및 15)는 둘 다의 리스트들에서 동일한 참조 픽처(들)를 갖는다는 점에 유의한다. 이러한 픽처들에 대한 양방향 예측의 경우, L0 및 L1 참조 픽처들이 동일한 것이 가능하다. 1) 양방향 예측에서의 2개의 참조 픽처가 동일하고 2) 시간 계층이 1보다 크고 3) MVD 정밀도가 1/4 펠인 경우, 인코더는 동일하지 않은 GBi 가중치들에 대해 양방향 예측 ME를 스킵하는 것을 제안한다. 아핀 양방향 예측 ME의 경우, 이러한 고속 스킵 방법은 4 파라미터 아핀 ME에만 적용된다.
(4) 참조 픽처와 현재 픽처 사이의 POC 거리 및 시간 계층에 기초하여 동일하지 않은 GBi 가중치에 대한 RD 비용 검사를 스킵하는 것
본 발명자들은 시간 계층이 4(RA에서 가장 높은 시간 계층)와 동일하거나 참조 픽처(list-0 또는 list-1 중 어느 하나)와 현재 픽처 사이의 POC 거리가 1과 동일하고 코딩 QP가 32보다 클 때 그러한 동일하지 않은 GBi 가중치들에 대해 RD 비용 평가들을 스킵하는 것을 제안한다.
(5) ME 동안 동일하지 않은 GBi 가중치에 대해 부동 소수점 계산을 고정 소수점 계산으로 변경하는 것
기존의 양방향 예측 탐색의 경우, 인코더는 하나의 리스트의 MV를 고정하고 다른 리스트에서의 MV를 리파인할 것이다. 타깃은 계산 복잡성을 감소시키기 위해 ME 전에 수정된다. 예를 들어, list-1의 MV가 고정되고 인코더가 list-0의 MV를 리파인하는 것이면, list-0 MV 리파인먼트에 대한 타깃은 수학식 (6)으로 수정된다. O는 원래 신호이고, P1은 list-1의 예측 신호이다. w는 list-1에 대한 GBi 가중치이다.
여기서, (1/(8-w))이라는 항은 부동 소수점 정밀도로 저장되며, 이는 계산 복잡도를 증가시킨다. 수학식 (7)에서와 같이, 수학식 (6)을 고정 소수점으로 변경하는 것을 제안한다.
여기서, a1 및 a2는 스케일링 인자들이고, 이들은 다음과 같이 계산된다:
2.8.3
GBi에 대한 CU 크기 제약
이 방법에서, 작은 CU들에 대해 GBi가 디스에이블링된다. 인터 예측 모드에서, 양방향 예측이 사용되고 CU 영역이 128개의 루마 샘플보다 작은 경우, GBi는 어떠한 시그널링도 없이 디스에이블링된다.
2.9
양방향 옵티컬 플로우(BDOF)의 예들
양방향 옵티컬 플로우(BDOF 또는 BIO)에서, 모션 보상이 먼저 수행되어 현재 블록의 (각각의 예측 방향에서의) 제1 예측들을 생성한다. 제1 예측들은, 그 후 제2 예측, 예를 들어, 서브블록 또는 픽셀의 최종 예측을 생성하는데 사용되는, 블록 내의 각각의 서브블록 또는 픽셀의 공간 그래디언트, 시간 그래디언트 및 옵티컬 플로우를 도출하는데 사용된다. 세부 사항들이 이하와 같이 설명된다.
BDOF는 양방향 예측을 위한 블록 방식 모션 보상의 상단에서 수행되는 샘플 방식 모션 리파인먼트이다. 일부 구현들에서, 샘플 레벨 모션 리파인먼트는 시그널링을 사용하지 않는다.
I(k)를 블록 모션 보상 이후의 참조 k(k=0, 1)로부터의 루마 값이라고 하고, 및 를 각각 I(k) 그래디언트의 수평 및 수직 컴포넌트들로서 표시한다. 옵티컬 플로우가 유효하다고 가정하면, 모션 벡터 필드(vx, vy)는 다음에 의해 주어진다:
이 옵티컬 플로우 방정식을 각각의 샘플의 모션 궤적에 대한 에르미트 보간과 조합시키는 것은 끝부분에서 함수 값들 I(k) 및 도함수들 및 둘 다와 매칭하는 고유한 3차 다항식을 초래한다. t=0에서 이 다항식의 값은 BDOF 예측이다:
도 24는 BDOF(Bi-directional Optical flow) 방법에서의 예시적인 옵티컬 플로우 궤적을 도시한다. 여기서, τ0 및 τ1은 참조 프레임들까지의 거리를 표시한다. 거리들 τ0 및 τ1은 Ref0 및 Ref1에 대한 POC에 기초하여 계산된다: τ0=POC(current) - POC(Ref0), τ1= POC(Ref1) - POC(current). 둘 다의 예측이 동일한 시간 방향으로부터 나오는 경우(과거로부터 둘 다의 예측 또는 장래로부터 둘 다의 예측), 부호들은 상이하다(예를 들어, τ0·τ1<0). 이 경우, 예측이 동일한 시간 순간으로부터 온 것이 아니면(예를 들어, τ0≠τ1) BDOF가 적용된다. 참조된 영역들 둘 다는 비-제로 모션을 갖고(예를 들어, ), 블록 모션 벡터들은 시간 거리에 비례한다(예를 들어, ).
모션 벡터 필드(vx, vy)는 포인트들 A와 B 내의 값들 간의 차이 Δ를 최소화함으로써 결정된다. 도 9a 및 도 9b는 모션 궤적과 참조 프레임 평면들의 교차점의 예를 도시한다. 모델은 Δ에 대한 로컬 테일러 확장의 제1 선형 항만을 사용한다:
위의 수학식에서의 모든 값들은 (i', j')로서 표시된 샘플 위치에 의존한다. 모션이 로컬 주변 영역에서 일관된다고 가정하면, 현재 예측된 점 i, j에 중심을 둔 (2M+1)x(2M+1) 정사각형 윈도우 Ω 내에서 Δ가 최소화될 수 있고, 여기서 M은 2와 같다:
이 최적화 문제에 대해, JEM은 먼저 수직 방향에서의 최소화를 행한 다음 수평 방향에서의 최소화를 행하는 단순화된 접근법을 사용한다. 이는 다음을 초래한다:
여기서,
제로 또는 매우 작은 값에 의한 나눗셈을 피하기 위해, 정규화 파라미터들 r 및 m이 수학식 (9) 및 수학식 (10)에 도입될 수 있고, 여기서:
여기서, d는 비디오 샘플들의 비트 깊이이다.
정규 양방향 예측 모션 보상에 대한 것과 동일하게 BDOF에 대한 메모리 액세스를 유지하기 위해, 현재 블록 내부의 위치들에 대해 모든 예측 및 그래디언트 값들 , , 가 계산된다. 도 22a는 블록(2200) 외부의 액세스 위치들의 예를 도시한다. 도 22a에 도시된 바와 같이, 수학식 (9)에서, 예측 블록의 경계 상의 현재 예측된 점에 중심을 둔 (2M+1)x(2M+1) 정사각형 윈도우 Ω는 블록 외부의 위치들에 액세스할 필요가 있다. JEM에서, 블록 외부의 , , 의 값들은 블록 내부의 가장 가까운 이용가능한 값과 동일하게 설정된다. 예를 들어, 이것은 도 22b에 도시된 바와 같이 패딩 영역(2201)으로서 구현될 수 있다.
BDOF로, 모션 필드가 각각의 샘플에 대해 리파인될 수 있는 것이 가능하다. 계산 복잡성을 감소시키기 위해, BDOF의 블록 기반 설계가 JEM에서 사용된다. 모션 리파인먼트는 4x4 블록에 기초하여 계산될 수 있다. 블록-기반 BDOF에서, 4x4 블록 내의 모든 샘플들의 수학식 (9)에서의 sn의 값들이 집성될 수 있고, 이어서 sn의 집성된 값들이 4x4 블록에 대한 BDOF 모션 벡터 오프셋을 도출하기 위해 사용된다. 보다 구체적으로는, 블록-기반 BDOF 도출에 대해 하기의 공식이 사용될 수 있다:
여기서, bk는 예측된 블록의 k번째 4x4 블록에 속하는 샘플들의 세트를 표시한다. 수학식 (9) 및 수학식 (10)에서의 sn은 연관된 모션 벡터 오프셋들을 도출하기 위해 ((sn,bk) >> 4 )로 대체된다.
일부 시나리오들에서, BIO의 MV 레지멘트(regiment)는 노이즈 또는 불규칙적인 모션으로 인해 신뢰할 수 없을 수 있다. 따라서, BDOF에서, MV 레지멘트의 크기는 임계 값으로 클리핑된다. 임계 값은 현재 픽처의 참조 픽처들이 모두 한 방향으로부터의 것인지에 기초하여 결정된다. 예를 들어, 현재 픽처의 모든 참조 픽처가 한 방향으로부터 온 경우, 임계 값은 12x214-d로 설정된다; 그렇지 않으면, 12x213-d로 설정된다.
BDOF에 대한 그래디언트들은 HEVC 모션 보상 프로세스(예를 들어, 2D 분리가능 유한 임펄스 응답(Finite Impulse Response)(FIR))와 일관되는 동작들을 사용하는 모션 보상 보간과 동시에 계산될 수 있다. 일부 실시예들에서, 2D 분리가능 FIR에 대한 입력은 모션 보상 프로세스 및 블록 모션 벡터의 분수 부분에 따른 분수 위치 (fracX, fracY)에 대한 것과 동일한 참조 프레임 샘플이다. 수평 그래디언트 에 대해, 신호는 먼저 디-스케일링 시프트 d-8을 한 분수 위치 fracY에 대응하는 BIOfilterS를 사용하여 수직으로 보간된다. 이어서, 그래디언트 필터 BIOfilterG는 18-d만큼 디-스케일링 시프트한 분수 위치 fracX에 대응하는 수평 방향으로 적용된다. 수직 그래디언트 의 경우, 그래디언트 필터는 디-스케일링 시프트 d-8을 한 분수 위치 fracY에 대응하는 BIOfilterG를 사용하여 수직으로 적용된다. 그 다음, 신호 변위는 18-d만큼 디-스케일링 시프트한 분수 위치 fracX에 대응하는 수평 방향에서의 BIOfilterS를 사용하여 수행된다. 그래디언트 계산 BIOfilterG 및 신호 변위 BIOfilterF에 대해 보간 필터의 길이는 합리적인 복잡성을 유지하기 위해 더 짧을 수 있다(예를 들어, 6-탭). 표 1은 BDOF의 블록 모션 벡터의 상이한 분수 위치들의 그래디언트 계산에 사용될 수 있는 예시적인 필터를 도시한다. 표 2는 BIO에서의 예측 신호 생성에 사용될 수 있는 예시적인 보간 필터를 도시한다.
표 1: BDOF(또는 BIO)에서의 그래디언트 계산을 위한 예시적인 필터들
표 2: BDOF(또는 BIO)에서의 예측 신호 생성을 위한 예시적인 보간 필터들
JEM에서, BDOF는 2개의 예측이 상이한 참조 픽처들로부터 온 것일 때 모든 양방향 예측 블록들에 적용될 수 있다. CU에 대해 LIC(Local Illumination Compensation)가 인에이블링될 때, BDOF는 디스에이블링될 수 있다.
일부 실시예들에서, OBMC는 정상 MC 프로세스 후에 블록에 적용된다. 계산 복잡성을 줄이기 위해, OBMC 프로세스 동안 BDOF가 적용되지 않을 수 있다. 이것은 BDOF가 그 자신의 MV를 사용할 때 블록에 대해 MC 프로세스에서 적용되고 이웃 블록의 MV가 OBMC 프로세스 동안 사용될 때 MC 프로세스에서 적용되지 않는다는 것을 의미한다.
2.9.1
VTM-3.0에서의 BDOF의 예들
단계 1: BIO가 적용가능한지 판단(W/H는 현재 블록의 폭/높이임)
다음의 경우에 BIO가 적용 가능하지 않다
○ 현재 비디오 블록이 아핀 코딩되거나 ATMVP 코딩됨
○ (iPOC - iPOC0) x (iPOC - iPOC1) ≥ 0
○ H==4 또는 (W==4 및 H==8)
○ 가중 예측이 있음
○ GBi 가중치들은 (1, 1)이 아님
BDOF는 2개의 참조 블록들(R0 및 R1로서 표시됨) 사이의 전체 SAD가 임계값보다 작으면 사용되지 않으며, 여기서
단계 2: 데이터 준비
WxH 블록에 대해, (W+2)x(H+2) 샘플들이 보간된다.
내부 WxH 샘플들은 정상 모션 보상에서와 같이 8-탭 보간 필터로 보간된다.
샘플들의 4개의 측면 외부 선들(도 23의 흑색 원들)은 쌍선형 필터로 보간된다.
각각의 위치에 대해, 그래디언트들은 2개의 참조 블록(R0 및 R1)에 대해 계산된다.
Gx0(x,y)=(R0(x+1,y)-R0(x-1,y))>>4
Gy0(x,y)=(R0(x, y+1)-R0(x, y-1))>>4
Gx1(x,y)=(R1(x+1,y)-R1(x-1,y))>>4
Gy1(x,y)=(R1(x, y+1)-R1(x, y-1))>>4
각각의 위치에 대해, 내부 값들은 다음과 같이 계산된다:
T1= (R0(x,y)>>6)-(R1(x,y)>>6), T2=(Gx0(x,y)+Gx1(x,y))>>3, T3=(Gy0(x,y)+Gy1(x,y))>>3; 및
B1(x,y) = T2*T2, B2(x,y)=T2*T3, B3(x,y)=-T1*T2, B5(x,y)=T3*T3, B6(x,y)=-T1*T3
단계 3: 각각의 블록에 대한 예측을 계산
2개의 4x4 참조 블록 사이의 SAD가 임계값보다 작은 경우에 4x4 블록에 대해 BDOF가 스킵된다.
Vx 및 Vy를 계산한다.
4x4 블록 내의 각각의 위치에 대한 최종 예측을 계산한다.
b(x,y)=(Vx(Gx0(x,y)-Gx1(x,y))+Vy(Gy0(x,y)-Gy1(x,y))+1)>>1
P(x,y)=(R0(x,y)+R1(x,y)+b(x,y)+offset) >> shift
여기서, b(x, y)는 보정 항목으로 알려져 있다.
2.9.2
VTM-3.0에서의 BDOF(또는 BIO)의 대안적인 예들
8.3.4 인터 블록들에 대한 디코딩 프로세스
-- predFlagL0 및 predFlagL1이 1과 동일하고, DiffPicOrderCnt( currPic, refPicList0[ refIdx0 ] ) * DiffPicOrderCnt( currPic, refPicList1[ refIdx1 ] ) < 0이고, MotionModelIdc[ xCb ][ yCb ]가 0과 동일하고 MergeModeList[ merge_idx[ xCb ][ yCb ] ]가 SbCol과 동일하지 않으면, bioAvailableFlag의 값을 참(TRUE)으로 설정한다.
-- 그렇지 않으면, bioAvailableFlag의 값을 거짓(FALSE)으로 설정한다.
-- bioAvailableFlag가 참과 동일하면, 다음이 적용된다:
-- 변수 shift는 Max( 2, 14 - bitDepth )와 동일하게 설정된다.
-- 변수들 cuLevelAbsDiffThres 및 subCuLevelAbsDiffThres는 (1<<(bitDepth - 8 + shift))*cbWidth*cbHeight 및 1<<(bitDepth - 3 + shift)와 동일하게 설정된다. 변수 cuLevelSumAbsoluteDiff는 0으로 설정된다.
-- xSbIdx=0..(cbWidth>>2)-1 및 ySbIdx=0..(cbHeight>>2)-1에 대해, 현재 서브블록의 변수 subCuLevelSumAbsoluteDiff[xSbIdx][ySbIdx] 및 양방향 옵티컬 플로우 이용 플래그 bioUtilizationFlag[ xSbIdx ][ySbIdx]는 다음과 같이 도출된다:
-- cuLevelSumAbsoluteDiff가 cuLevelAbsDiffThres보다 작으면, bioAvailableFlag를 거짓으로 설정한다.
-- bioAvailableFlag가 참과 동일하면, 현재 루마 코딩 서브블록 내부의 예측 샘플들, xL = 0..sbWidth - 1이고 yL = 0..sbHeight - 1인 predSamplesL[ xL + xSb ][ yL + ySb ]는 루마 코딩 서브블록 폭 sbWidth, 루마 코딩 서브블록 높이 sbHeight 및 샘플 어레이들 predSamplesL0L 및 predSamplesL1L, 및 변수들 predFlagL0, predFlagL1, refIdxL0, refIdxL1을 갖는 8.3.4.5 절에서 특정된 양방향 옵티컬 플로우 샘플 예측 프로세스를 호출함으로써 도출된다.
8.3.4.3 분수 샘플 보간 프로세스
8.3.4.3.1 일반
이 프로세스에 대한 입력들은 다음과 같다:
-
현재 픽처의 좌측 상단 루마 샘플에 대해 현재 코딩 서브블록의 좌측 상단 샘플을 특정하는 루마 위치 ( xSb, ySb ),
-
루마 샘플들에서 현재 코딩 서브블록의 폭을 특정하는 변수 sbWidth,
-
루마 샘플들에서 현재 코딩 서브블록의 높이를 특정하는 변수 sbHeight,
-
1/16 루마 샘플 유닛들로 주어지는 루마 모션 벡터 mvLX,
-
1/32 크로마 샘플 유닛들로 주어진 크로마 모션 벡터 mvCLX,
-
선택된 참조 픽처 샘플 어레이 refPicLXL과 어레이들 refPicLXCb 및 refPicLXCr.
-
양방향 옵티컬 플로우 인에이블링 플래그 bioAvailableFlag.
이 프로세스의 출력들은 다음과 같다:
-
bioAvailableFlag가 거짓일 때 예측 루마 샘플 값들의 (sbWidth)x(sbHeight) 어레이 predSamplesLXL, 또는 bioAvailableFlag가 참일 때 예측 루마 샘플 값들의 (sbWidth+2)x(sbHeight+2) 어레이 predSamplesLXL.
-
예측 크로마 샘플 값들의 2개의 (sbWidth / 2)x(sbHeight / 2) 어레이 predSamplesLXCb 및 predSamplesLXCr.
( xIntL, yIntL )을 전체 샘플 유닛들로 주어진 루마 위치라고 하고 ( xFracL, yFracL )을 1/16 샘플 유닛들로 주어진 오프셋이라고 한다. 이 변수들은 참조 샘플 어레이들 refPicLXL, refPicLXCb 및 refPicLXCr 내부에 분수 샘플 위치들을 특정하기 위해 이 절에서만 사용된다.
bioAvailableFlag가 참과 동일할 때, 예측 루마 샘플 어레이 predSamplesLXL 내부의 각각의 루마 샘플 위치 ( xL = -1..sbWidth, yL = -1..sbHeight)에 대해, 대응하는 예측 루마 샘플 값 predSamplesLXL[ xL ][ yL ]는 다음과 같이 도출된다:
-
변수 xIntL, yIntL, xFracL 및 yFracL은 다음과 같이 도출된다:
xIntL = xSb - 1 + ( mvLX[ 0 ] >> 4 ) + xL
yIntL = ySb - 1 + ( mvLX[ 1 ] >> 4 ) + yL
xFracL = mvLX[ 0 ] & 15
yFracL = mvLX[ 1 ] & 15
-
bilinearFiltEnabledFlag의 값은 다음과 같이 도출된다:
-
xL이 -1 또는 sbWidth와 동일하거나, yL이 -1 또는 sbHeight와 동일하면, bilinearFiltEnabledFlag의 값을 참으로 설정한다.
-
그렇지 않으면, bilinearFiltEnabledFlag의 값을 거짓으로 설정한다.
-
예측 루마 샘플 값 predSamplesLXL [xL] [yL] 는(xIntL, yIntL),(xFracL, yFracL), refPicLXL 및 bilinearFiltEnabledFlag를 입력들로서 갖는 8.3.4.3.2 절에 특정된 프로세스를 호출함으로써 도출된다.
bioAvailableFlag가 거짓과 동일할 때, 예측 루마 샘플 어레이 predSamplesLXL 내부의 각각의 루마 샘플 위치( xL = 0..sbWidth - 1, yL = 0..sbHeight - 1 )에 대해, 대응하는 예측 루마 샘플 값 predSamplesLXL[ xL ][ yL ]은 다음과 같이 도출된다:
-
변수 xIntL, yIntL, xFracL 및 yFracL은 다음과 같이 도출된다:
xIntL = xSb + ( mvLX[ 0 ] >> 4 ) + xL
yIntL = ySb + ( mvLX[ 1 ] >> 4 ) + yL
xFracL = mvLX[ 0 ] & 15
yFracL = mvLX[ 1 ] & 15
-
변수 bilinearFiltEnabledFlag는 거짓으로 설정된다.
-
예측 루마 샘플 값 predSamplesLXL[ xL ][ yL ]는 ( xIntL, yIntL ), ( xFracL, yFracL ), 및 refPicLXL 및 bilinearFiltEnabledFlag를 입력들로서 갖는 8.3.4.3.2 절에 특정된 프로세스를 호출함으로써 도출된다.
8.3.4.5 양방향 옵티컬 플로우(BDOF 또는 BIO) 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다:
-
현재 코딩 블록의 폭 및 높이를 특정하는 2개의 변수 nCbW 및 nCbH,
-
2개의 (nCbW+2)x(nCbH+2) 루마 예측 샘플 어레이 predSamplesL0 및 predSamplesL1,
-
예측 리스트 이용 플래그들 predFlagL0 및 predFlagL1,
-
참조 인덱스들 refIdxL0 및 refIdxL1,
-
양방향 옵티컬 플로우 이용 플래그들 bioUtilizationFlag[ xSbIdx ][ ySbIdx ]이고, xSbIdx = 0..(nCbW>>2) - 1, ySbIdx = 0 .. (nCbH>>2) - 1
이 프로세스의 출력은 루마 예측 샘플 값들의 (nCbW) x(nCbH) 어레이 pbSamples이다.
변수 bitDepth는 BitDepthY와 동일하게 설정된다.
변수 shift2는 Max( 3, 15 - bitDepth )와 동일하게 설정되고 변수 offset2는 1 << ( shift2 - 1 )와 동일하게 설정된다.
변수 mvRefineThres는 1 << ( 13 - bitDepth )와 동일하게 설정된다.
xSbIdx = 0..( nCbW >> 2 ) - 1이고 ySbIdx = 0..( nCbH >> 2 ) - 1에 대해,
-
bioUtilizationFlag[ xSbIdx ][ ySbIdx ]가 거짓인 경우, x=xSb..xSb+3,y=ySb.. ySb+3에 대해, 현재 예측 유닛의 예측 샘플 값들은 다음과 같이 도출된다:
pbSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1,
( predSamplesL0[ x ][ y ] + predSamplesL1[ x ][ y ] + offset2 ) >> shift2 )
-
그렇지 않으면, 현재 예측 유닛의 예측 샘플 값들은 다음과 같이 도출된다:
-
예측 샘플 어레이들 predSamplesL0 및 predSampleL1의 좌측 상단 샘플에 대해 현재 서브블록의 좌측 상단 샘플을 특정하는 위치 ( xSb, ySb )는 다음과 같이 도출된다:
xSb = (xSbIdx<<2) + 1
ySb = (ySbIdx<<2) + 1
-
x=xSb-1..xSb+4,y=ySb-1.. ySb+4에 대해, 다음이 적용된다:
-
예측 샘플 어레이들 내부의 대응하는 샘플( x, y ) 각각에 대한 위치들( hx, vy )은 다음과 같이 도출된다:
hx = Clip3( 1, nCbW, x )
vy = Clip3( 1, nCbH, y )
-
변수들 gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] 및 gradientVL1[x][y]는 다음과 같이 도출된다:
gradientHL0[x][y] = (predSamplesL0[hx +1][vy] - predSampleL0[hx-1][vy])>>4
gradientVL0[x][y] = (predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4
gradientHL1[x][y] = (predSamplesL1[hx+1][vy] - predSampleL1[hx-1][vy])>>4
gradientVL1[x][y] = (predSampleL1[hx][vy+1] - predSampleL1[hx][vy-1])>>4
-
변수들 temp, tempX 및 tempY는 다음과 같이 도출된다:
temp[x][y] = (predSamplesL0[hx][vy]>>6) - (predSamplesL1[hx][vy]>>6)
tempX[x][y] = (gradientHL0[x][y] + gradientHL1[x][y])>>3
tempY[x][y] = (gradientVL0[x][y] + gradientVL1[x][y])>>3
-
변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 다음과 같이 도출된다:
sGx2 = ∑x∑y (tempX[xSb+x][ySb+y] * tempX[xSb+x][ySb+y])이고, x, y = -1..4
sGy2 = ∑x∑y (tempY[xSb+x][ySb+y] * tempY[xSb+x][ySb+y])이고, x, y = -1..4
sGxGy = ∑x∑y (tempX[xSb+x][ySb+y] * tempY[xSb+x][ySb+y])이고, x, y = -1..4
sGxdI = ∑x∑y (-tempX[xSb+x][ySb+y] * temp[xSb+x][ySb+y])이고, x, y = -1..4
sGydI = ∑x∑y (-tempY[xSb+x][ySb+y] * temp[xSb+x][ySb+y])이고, x, y = -1..4
-
현재 서브블록의 수평 및 수직 모션 리파인먼트들은 다음과 같이 도출된다:
vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -(sGxdI<<3)>>Floor(Log2(sGx2))) : 0
vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, ((sGydI<<3) - ((vx*sGxGym)<<12 + vx*sGxGys)>>1)>>Floor(Log2(sGy2))) : 0
sGxGym = sGxGy>>12;
sGxGys = sGxGy & ((1<<12)-1)
x=xSb-1..xSb+2,y=ySb-1.. ySb+2에 대해, 다음이 적용된다:
sampleEnh = Round( (vx* (gradientHL1[x+1][y+1]- gradientHL0[x+1][y+1]) )>>1 ) + Round((vy*(gradientVL1[x+1][y+1]-gradientVL0[x+1][y+1]))>>1)
pbSamples[ x ][ y ] = Clip3( 0, ( 1 << bitDepth ) - 1, ( predSamplesL0[ x+1 ][ y+1 ] + predSamplesL1[ x+1 ][ y+1 ] +sampleEnh + offset2 ) >> shift2 )
2.10
디코더-측 모션 벡터 리파인먼트(DMVR)의 예들
양방향 예측 동작에서, 하나의 블록 영역의 예측을 위해, 각각 list0의 모션 벡터(MV) 및 list1의 MV를 사용하여 형성된 2개의 예측 블록이 조합되어 단일 예측 신호를 형성한다. 디코더-측 모션 벡터 리파인먼트(DMVR) 방법에서, 양방향 예측의 2개의 모션 벡터는 양방향 템플릿 매칭 프로세스에 의해 추가로 리파인된다. 리파인된 MV를 부가적인 모션 정보의 송신 없이 획득하기 위해, 참조 픽처들에서의 양측 템플릿 및 재구성 샘플들 사이의 왜곡 기반 탐색을 수행하기 위해서 양방향 템플릿 매칭이 디코더에서 적용된다.
DMVR에서, 양방향 템플릿은 도 24에 도시된 바와 같이, 각각 list0의 초기 MV0 및 list1의 MV1로부터, 2개의 예측 블록의 가중 조합(weighted combination)(즉, 평균)으로서 생성된다. 템플릿 매칭 동작은 참조 픽처에서의 (초기 예측 블록 주위의) 샘플 영역과 생성된 템플릿 사이의 비용 척도들을 산출하는 것으로 이루어진다. 2개의 참조 픽처 각각에 대해, 최소 템플릿 비용을 산출하는 MV가 원래의 것을 대체할 그 리스트의 업데이트된 MV로 간주된다. JEM에서, 각각의 리스트에 대해 9개의 MV 후보가 탐색된다. 9개의 MV 후보는 원래의 MV, 및 수평 또는 수직 방향으로 또는 둘 다로 원래 MV에 대한 하나의 루마 샘플 오프셋을 갖는 8개의 주변 MV를 포함한다. 마지막으로, 도 24에 도시된 2개의 새로운 MV, 즉 MV0' 및 MV1'은 최종 양방향 예측 결과들을 생성하기 위해 사용된다. 절대 차이 합(sum of absolute differences)(SAD)이 비용 척도로서 사용된다. 하나의 주변 MV에 의해 생성되는 예측 블록의 비용을 계산할 때, (정수 펠로의) 라운딩된 MV는 실제 MV 대신에 예측 블록을 획득하기 위해 실제로 사용된다는 점에 주목한다.
DMVR은, 부가적인 구문 요소들의 송신 없이, 과거의 참조 픽처로부터의 하나의 MV 및 장래의 참조 픽처로부터의 다른 하나의 MV를 이용하여 양방향 예측의 병합 모드에 적용된다. JEM에서, LIC, 아핀 모션, FRUC, 또는 서브CU 병합 후보가 CU에 대해 인에이블링될 때, DMVR은 적용되지 않는다.
3.
개시된 기술에 관련된 예시적인 실시예들
3.1
크로스 컴포넌트 선형 모델(CCLM) 예측의 예들
크로스 컴포넌트 중복을 감소시키기 위해, LM으로 알려진 CCLM 예측 모드는 JEM에서 사용되고, 크로마 샘플들은 다음과 같은 선형 모델을 사용하여 동일한 CU의 재구성된 루마 샘플들에 기초하여 예측된다:
여기서, 는 CU 내의 예측된 크로마 샘플들을 나타내고, 는 컬러 포맷들 4:2:0 또는 4:2:2에 대해 동일한 CU의 다운샘플링된 재구성된 루마 샘플들을 나타내는 한편, 는 컬러 포맷 4:4:4에 대해 동일한 CU의 재구성된 루마 샘플들을 나타낸다. CCLM 파라미터들 α 및 β는 다음과 같이 현재 블록 주위의 이웃하는 재구성된 루마 및 크로마 샘플들 사이의 회귀 에러를 최소화함으로써 도출된다:
여기서, L(n)은 다운-샘플링된(컬러 포맷들 4:2:0 또는 4:2:2에 대한) 또는 원래의(컬러 포맷 4:4:4에 대한) 상단 및 좌측 이웃하는 재구성된 루마 샘플들을 나타내고, C(n)은 상단 및 좌측 이웃하는 재구성된 크로마 샘플들을 나타내고, N의 값은 현재 크로마 코딩 블록의 폭 및 높이의 최소값의 2배와 동일하다. 정사각형 형상을 갖는 코딩 블록의 경우, 위의 2개의 수학식이 직접 적용된다. 비-정사각형 코딩 블록의 경우, 더 긴 경계의 이웃 샘플들은 먼저 더 짧은 경계의 경우와 동일한 수의 샘플을 갖도록 서브샘플링된다. 도 25는 CCLM 모드에 수반된 현재 블록의 샘플 및 좌측 및 위의 재구성된 샘플들의 위치를 도시한다.
이러한 회귀 에러 최소화 계산은 단지 인코더 탐색 동작으로서가 아니라 디코딩 프로세스의 일부로서 수행되며, 따라서 α 및 β값들을 전달하기 위해 어떠한 신택스도 사용되지 않는다. CCLM 예측 모드는 또한 2개의 크로마 컴포넌트 사이의 예측을 포함하는데, 즉, Cr 컴포넌트가 Cb 컴포넌트로부터 예측된다. 재구성된 샘플 신호를 사용하는 대신에, CCLM Cb-대-Cr 예측이 잔차 도메인에서 적용된다. 이것은 최종 Cr 예측을 형성하기 위해 원래의 Cr 인트라 예측에 가중 재구성된 Cb 잔차를 추가함으로써 구현된다:
스케일링 인자 α는 CCLM 루마-대-크로마 예측에서와 유사한 방식으로 도출된다. 유일한 차이는 도출된 스케일링 인자가 다음과 같이 -0.5의 디폴트 값을 향해 바이어싱되도록 에러 함수에서 디폴트 α 값에 대한 회귀 비용의 추가이다:
CCLM 루마-대-크로마 예측 모드는 하나의 추가적인 크로마 인트라 예측 모드로서 추가된다. 인코더 측에서, 크로마 인트라 예측 모드를 선택하기 위해 크로마 컴포넌트들에 대한 하나 이상의 RD 비용 검사가 추가된다. CCLM 루마-대-크로마 예측 모드 이외의 인트라 예측 모드들이 CU의 크로마 컴포넌트들에 대해 사용될 때, CCLM Cb-대-Cr 예측이 Cr 컴포넌트 예측에 대해 사용된다.
3.2
단순화된 CCLM의 예들
일부 기존 구현들에서, 선형 모델 파라미터들 α 및 β의 LMS 알고리즘은 직선 방정식에 의해 대체된다. 2개의 점(루마 및 크로마의 커플)(A, B)은 도 26에 도시된 바와 같이 이웃하는 루마 샘플들의 세트 내의 최소 및 최대 값들이다. 여기서, 선형 모델 파라미터들 α 및 β는 다음에 따라 획득된다:
.
나눗셈은 회피되고 곱셈 및 시프트로 대체될 수 있다.
현재 VTM 구현에 대해, 크로마 예측자를 도출하기 위해, 곱셈은 다음과 같이 정수 연산으로 대체된다:
그러나, 시프트 S가 항상 동일한 값을 갖기 때문에 현재 VTM 구현보다 구현이 또한 더 간단하다. 복잡성의 관점에서, 제안된 알고리즘은 다음의 표에 도시된 바와 같이 연산들의 수를 감소시킨다:
연산들의 수는 감소되지만, 제안된 방법은 이웃 샘플의 최소 및 최대 루마 값들을 획득하기 위해 몇몇 비교들을 필요로 한다.
4.
기존 구현들의 단점들
일부 기존 구현들은 다음의 단점들을 겪는다:
(1) BIO 및 CCLM 둘 다는 선형 회귀를 필요로 하지만 상이한 단순화된 방식들로 필요로 한다.
(2) VTM에서의 BIO 구현은 POC 거리를 고려하지 않는다.
(3) Ref 0의 속도들은 및 으로 표시된다. Ref 1의 속도들은 및 로 표시된다. 현재 BIO 설계에서, 2개의 참조 영상에 대한 속도들은 및 (또는 및 가 되도록 미러링된다고 가정한다. 그러나, 이러한 가정은 참이 아닐 수 있다.
(4) BIO에서 속도들 vx 및 vy의 도출은 과도하게 단순화된다.
(5) BIO에서의 vx 및 vy 의 도출은 DMVR 또는 디코더 측 모션 도출과 조합될 수 있다.
(6) vx 및 vy를 알면, Ref0/Ref1 상의 예측들/그래디언트들이 추가로 리파인될 수 있다.
(7) 추가적인 보간 필터(쌍선형 필터)가 도입되어 픽셀들 및 경계들을 보간한다.
(8) BIO 절차에서 일부 라운딩 및 클리핑 연산들이 누락되고 있다.
(9) 내부 동작들의 정밀도들이 더욱 낮아질 수 있다.
(10) BIO 계산을 위한 SAD가 단순화될 수 있다.
(11) GBi가 적용될 때, 가중 값들은 BIO 도출 절차에서 적절히 고려되지 않는다.
5.
리파인먼트를 이용한 인터 예측을 위한 예시적인 방법들
현재 개시된 기술의 실시예들은 기존의 구현들의 단점들을 극복하고, BIO 및 CCLM에서의 선형 회귀 절차를 조화시키고 BIO 수정들을 제안하며, 그에 의해 더 높은 코딩 효율들을 갖는 비디오 코딩을 제공한다. 개시된 기술에 기초한, 선형 모드 예측의 조화는 다양한 구현들에 대해 설명된 다음의 예들에서 설명된 기존의 및 장래의 비디오 코딩 표준들 둘 다를 향상시킬 수 있다. 아래에 제공되는 개시된 기술의 예들은 일반적인 개념들을 설명하고, 제한적인 것으로 해석되도록 의도되지 않는다. 일례에서, 명시적으로 반대로 표시되지 않는 한, 이러한 예들에서 설명된 다양한 특징들이 조합될 수 있다.
list 0 및 list 1로부터의 현재 픽처의 참조 픽처를 각각 Ref0 및 Ref1에 의해 표시하고, τ0=POC(current) - POC(Ref0), τ1= POC(Ref1) - POC(current)를 표시하며, Ref0 및 Ref1로부터의 현재 블록의 참조 블록을 각각 refblk0 및 refblk1에 의해 표시한다. 현재 블록 내의 서브블록에 대해, refblk1을 가리키는 refblk0 내의 그의 대응하는 서브블록의 MV는 (vx, vy)에 의해 표시된다. Ref0 및 Ref1에서의 서브블록의 MV들은 각각 (mvL0x, mvL0y) 및 (mvL1x, mvL1y)에 의해 표시된다.
Shift(x, s)는 Shift( x, s ) = ( x + off ) >> s로서 정의된다.
SignShift(x, s)는 다음과 같이 정의된다:
본 명세서에서, off는 정수, 예를 들어, 0 또는 2s-1인 오프셋을 나타낸다.
Clip3(x, min, max)은 다음과 같이 정의된다.
예 1. BIO에서 사용되는 선형 최적화 모듈은 비디오 코딩 시스템에서 다른 코딩 툴들에 의해 사용될 수 있는 것이 제안된다.
(a) 선형 최적화 모듈은, 입력으로서 k가 0부터 N-1까지인 샘플들의 그룹 (uk, vk, wk), 출력으로서 2개의 파라미터 a 및 b를 수반하여, 가 최소화되거나, 대략 최소화될 수 있다. 수학식 (9) 및 (10)으로부터, BIO에서 다음과 같이 알려져 있다:
여기서, Gx(x,y) 및 Gy(x,y)는 각각 수평 및 수직 그래디언트들을 나타낸다.
(b) 일례에서, BIO에서 사용된 선형 최적화 모듈은 CCLM에 대한 파라미터들을 도출하기 위해 사용된다. 수학식 (18) 및 수학식 (19)로부터, 표기들은 다음과 같이 기입될 수 있다:
(c) 대안으로서, CCLM과 같은 또 다른 코딩 툴에서 사용된 선형 최적화 모듈은 BIO에서 vx 및 vy를 도출하기 위해 사용될 수 있다.
예 2. BIO 절차를 적용할지 및 BIO 절차를 적용하기 위한 방법은 POC 거리들에 의존하는 것이 제안된다.
(a) abs(τ0) ≥ T0 또는 abs(τ1) ≥ T1인 경우 BIO 절차가 적용되지 않는다. T0 및 T1은 정수들이고, 예를 들어, T0=T1=4이다. T0 및 T1은 고정된 수이거나 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
(b) abs(τ0) ≥ T0이고 abs(τ1) ≥ T1인 경우 BIO 절차가 적용되지 않는다. T0 및 T1은 정수들이고, 예를 들어, T0=T1=4이다. T0 및 T1은 고정된 수이거나 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
(c) abs(τ0) + abs(τ1) ≥ T인 경우 BIO 절차가 적용되지 않는다. T는 정수, 예를 들어, T=8이다. T는 고정된 수이거나 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
(d) abs(abs(τ0) - abs(τ1)) ≥ T인 경우 BIO 절차가 적용되지 않는다. T는 정수, 예를 들어, T=8이다. T는 고정된 수이거나 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
(e) abs(τ0) ≥ T*abs(τ1)이거나 abs(τ1) ≥ T*abs(τ0)인 경우 BIO 절차가 적용되지 않는다. T는 정수, 예를 들어, T=4이다. T는 고정된 수이거나 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
예 3. BIO 프로세스에서 예측 값을 리파인하기 위해 사용되는 속도 벡터들은 POC 거리들에 의존하는 것이 제안된다. BIO 절차 후의 예측은 다음과 같이 계산된다.
여기서 G(0) x 및 G(0) y는 Ref0 상의 수평 및 수직 그래디언트들을 나타내고, G(0) x 및 G(0) y는 Ref0 상의 수평 및 수직 그래디언트들을 나타낸다.
(ii) 일례에서:
여기서, 나눗셈들은 HEVC에서의 MV 스케일링 동작으로서의 곱셈 및 시프트로서 구현될 수 있다.
예 4. vx를 도출하기 위해 항상 먼저 vy를 0과 동일하다고 가정하는 대신에, 먼저 vy를 도출하고 vy에 기초하여 vx를 도출하는 것이 제안된다. 대안적으로, vy를 도출할지 vx를 도출할지는 코딩된 정보, 예를 들어, 모션 벡터들의 수평 및 수직 컴포넌트들의 값들, 블록 크기들 등에 의존할 수 있다.
예 5. vx 및 vy가 반복적인 방식으로 도출되는 것이 제안된다.
a.
일례에서, i번째 단계에서 도출된 vx는 i번째 단계에서 vy를 도출하기 위해 사용되고, i번째 단계에서 도출된 vy는 i+1번째 단계에서 도출되는 vx를 도출하기 위해 사용된다. 도출은 반복적으로 행해진다.
b.
대안적으로, i번째 단계에서 도출된 vy는 i번째 단계에서 vx를 도출하기 위해 사용되고, i번째 단계에서 도출된 vx는 i+1번째 단계에서 도출되는 vy를 도출하기 위해 사용된다. 도출은 반복적으로 행해진다.
c.
동일한 단계에서 vy를 도출하기 위해 vx를 사용할지 또는 vx를 도출하기 위해 vy를 사용할지는 모션 벡터들의 수평 및 수직 컴포넌트들의 값들, 블록 크기들 등과 같은 코딩된 정보에 의존할 수 있다.
i.
예를 들어, JEM-3.0에서와 같이 MSB 시프트에 의해 대체되는 것과 같이 나눗셈 연산은 단순화될 수 있다.
ii.
클리핑 연산은 나눗셈 연산 이후일 수 있다.
i.
예를 들어, JEM-3.0에서와 같이 MSB 시프트에 의해 대체되는 것과 같이 나눗셈 연산은 단순화될 수 있다.
ii.
클리핑 연산은 나눗셈 연산 이후일 수 있다.
f.
도출은 i가 2와 같은 미리 고정된(prefixed) 수에 도달할 때까지 반복적으로 행해진다.
g.
대안적으로, 도출은 도출의 한 라운드 전후에 vx 및/또는 vy 사이의 절대 차이가 임계값보다 작을 때까지 반복적으로 행해진다.
예 6. BIO에서의 vx 및 vy의 도출은 DMVR, 양방향 매칭 또는 다른 디코더 측 모션 도출 방법들과 조합될 수 있다.
a.
블록 또는 서브블록(예컨대 4x4 블록)에 대한 BIO에서 도출된 vx 및 vy는 DMVR의 탐색 시작점, 양방향 매칭 또는 다른 디코더 측 모션 도출 방법들을 도출하기 위해 사용될 수 있다. Ref0 및 Ref1에 대한 원래의 MV들이 MV0 및 MV1이고, MV0' 및 MV1'로서 표기된 MV들을 DMVR의 시작점으로서 가정하면, 양방향 매칭 또는 다른 디코더 측 모션 도출 방법들은 다음과 같이 계산될 수 있다:
i.
일례에서, MV0' = MV0+ (vx, vy), MV1'=MV1-(vx, vy);
ii.
일례에서, MV0' = MV0- (vx, vy), MV1'=MV1+(vx, vy);
iii.
일례에서, MV0' = MV0 + Scale(vx, vy), MV1'=MV1 - Scale (vx, vy);
iv.
일례에서, MV0' = MV0 - Scale (vx, vy), MV1'=MV1 + Scale (vx, vy);
v.
일례에서, MV0' = Clip( MV0 + Scale(vx, vy)), MV1'= Clip( MV1 - Scale (vx, vy));
vi.
일례에서, MV0' = Clip( MV0 - Scale (vx, vy)), MV1'= Clip( MV1 + Scale (vx, vy));
b.
대안적으로, 블록 또는 서브블록(예컨대 4x4 블록)에 대한 DMVR, 양방향 매칭 또는 다른 디코더 측 모션 도출 방법들의 출력 MV들이 BIO에서 사용되는 vx 및 vy를 도출하기 위해 사용될 수 있다. Ref0 및 Ref1에 대한 원래의 MV들이 MV0 및 MV1이고, 출력 MV들을 MV0' 및 MV1'으로서 가정하면, vx 및 vy 는 다음과 같이 계산될 수 있다.
i.
일례에서, (vx, vy)= Scale (MV0' - MV0);
ii.
일례에서, (vx, vy)= Scale (MV0 - MV0');
iii.
일례에서, (vx, vy)= Scale (MV1' - MV1);
iv.
일례에서, (vx, vy)= Scale (MV1 - MV1');
v.
일례에서, (vx, vy)= (Scale (MV0' - MV0)+ Scale (MV1' - MV1))/2;
vi.
일례에서, (vx, vy)= (Scale (MV0 - MV0')+ Scale (MV1 - MV1'))/2;
예 7. 도출된 vx 및 vy는 Ref0 및 Ref1 상에서 예측들 및 그래디언트들을 리파인하기 위해 사용될 수 있는 것이 제안된다. 그 후, 리파인된 예측들 및 그래디언트들은 새로운 vx 및 vy를 도출하기 위해 사용된다.
a.
도출 및 리파인먼트 절차는 도출의 한 라운드 전후에 vx 또는 vy 사이의 절대 차이가 임계값보다 작을 때까지 반복적으로 행해질 수 있다. 대안적으로, 도출 및 리파인먼트 절차는 반복이 미리 정의된 횟수에 도달할 때까지 반복적으로 행해질 수 있다. 예를 들어, 그 수는 2이다.
b.
Ref0 및 Ref1에 대한 원래의 MV들이 MV0 및 MV1이라고 가정하면, 리파인된 예측들 및 그래디언트들을 얻기 위해 MV0' 및 MV1'로서 표기된 MV들은 다음과 같이 계산될 수 있다.
i.
일례에서, MV0' = MV0+ (vx, vy), MV1'=MV1-(vx, vy);
ii.
일례에서, MV0' = MV0- (vx, vy), MV1'=MV1+(vx, vy);
iii.
일례에서, MV0' = MV0 + Scale(vx, vy), MV1'=MV1 - Scale (vx, vy);
iv.
일례에서, MV0' = MV0 - Scale (vx, vy), MV1'=MV1 + Scale (vx, vy);
v.
일례에서, MV0' = Clip( MV0 + Scale(vx, vy)), MV1'= Clip( MV1 - Scale (vx, vy));
vi.
일례에서, MV0' = Clip( MV0 - Scale (vx, vy)), MV1'= Clip( MV1 + Scale (vx, vy));
예 8. BIO는 하나의 블록 또는 하나의 서브블록 내의 부분 샘플들에 적용될 수 있는 것이 제안된다. 일례에서, 제1/마지막 행/제1/마지막 열에 위치된 샘플들에 대해, BIO는 적용되지 않는다.
예 9. BIO가 적용될 때 하나의 컬러 컴포넌트에 대해 한 종류의 보간 필터만이 사용되는 것이 제안된다.
a.
일례에서, BIO가 적용될 때 루마 컴포넌트에 대해 8-탭 보간 필터만이 사용된다.
b.
대안적으로, 또한, 메모리 대역폭을 감소시키기 위해, 페치될 샘플들의 크기/범위를 보간 필터들에 의해 요구되는 것보다 작게 제한하는 것이 제안된다.
c.
대안적으로, 또한 일부 샘플들이 주어진 크기/범위 밖의 위치들에 위치하는 경우 패딩이 적용될 수 있다.
d.
현재 블록이 MxN이고, 서브샘플들의 요구되는 크기가 (M+G)x(N+G)이고, L-탭 보간 필터에 의해 요구되는 크기가 (M+G + L-1)x(N+G+L-1)이어야 하는 것으로 가정한다. BIO 절차를 이용하여 페치될 정수 루마 샘플들의 허용 크기는 (M+L-1+k)x(N+L-1+k)인 것으로 제안된다. 예를 들어, k는 0이거나, 1이고 k는 G보다 작다. 정수 루마 샘플이 보간 프로세스에 의해 요구되지만 페치되도록 허용되지 않는 경우, 그것은 인접한 루마 샘플에 의해 패딩될 것이다.
i.
도 27은 BIO 절차에서 보간 필터링의 예를 도시한다. 현재 블록 크기는 MxN이고, 예에서 M=N=8이다. 서브샘플들의 요구되는 크기는 그래디언트 계산으로 인해 (M+2)x(N+2)이다. 따라서 보간 필터에 의해 요구되는 정수 샘플들은 예에서 17x17과 동일한 (M+2+7)x(N+2+7)이다. 그러나, 예에서 15x15와 동일한 (M+7)x(N+7) 정수 샘플들만이 페치되도록 요구된다. 보간 필터에 의해 요구되는 다른 샘플들(필터 내의 흑색 원들)은 인접한 페치된 샘플들에 의해 패딩된다.
e.
일례에서, x=-1 또는 y=-1 또는 x=W 또는 y=H인 위치들 (x, y)의 그래디언트들은 계산되지 않으며, BIO는 이러한 위치들에 적용되지 않는다. 현재 블록의 좌측 상단이 (0, 0)이고 현재 블록의 폭/높이가 W/H라고 가정한다.
f.
일례에서, x=-1 또는 y=-1 또는 x=W 또는 y=H인 위치들 (x, y)의 그래디언트들은 상이한 방식으로 계산된다. 예를 들어,
○ gradientHL0[x][y] =
(predSamplesL0[hx +1][vy] - predSampleL0[hx][vy])>>4 (hx==1인 경우),
(predSamplesL0[hx][vy] - predSampleL0[hx-1][vy])>>4 (hx== nCbW인 경우),
(predSamplesL0[hx+1][vy] - predSampleL0[hx-1][vy])>>4 (그렇지 않은 경우).
○ gradientVL0[x][y] =
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy])>>4
(vy ==1인 경우),
(predSampleL0[hx][vy] - predSampleL0[hx][vy-1])>>4
(vy ==nCbH인 경우),
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4
(그렇지 않은 경우).
○ gradientHL1[x][y] =
(predSamplesL1[hx +1][vy] - predSampleL1[hx][vy])>>4 (hx==1인 경우),
(predSamplesL1[hx][vy] - predSampleL1[hx-1][vy])>>4 (hx== nCbW인 경우),
(predSamplesL0[hx+1][vy] - predSampleL1[hx-1][vy])>>4 (그렇지 않은 경우).
○ gradientVL1[x][y] =
(predSampleL1[hx][vy+1] - predSampleL1[hx][vy])>>4
(vy ==1인 경우),
(predSampleL1[hx][vy] - predSampleL1[hx][vy-1])>>4
(vy ==nCbH인 경우),
(predSampleL1[hx][vy+1] - predSampleL1[hx][vy-1])>>4
(그렇지 않은 경우).
다른 예에서,
○ gradientHL0[x][y] =
(predSamplesL0[hx +1][vy] - predSampleL0[hx][vy])>>3 (hx==1인 경우),
(predSamplesL0[hx][vy] - predSampleL0[hx-1][vy])>>3 (hx== nCbW인 경우),
(predSamplesL0[hx+1][vy] - predSampleL0[hx-1][vy])>>4 (그렇지 않은 경우).
○ gradientVL0[x][y] =
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy])>>3
(vy ==1인 경우),
(predSampleL0[hx][vy] - predSampleL0[hx][vy-1])>>3
(vy ==nCbH인 경우),
(predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1])>>4
(그렇지 않은 경우).
○ gradientHL1[x][y] =
(predSamplesL1[hx +1][vy] - predSampleL1[hx][vy])>>3 (hx==1인 경우),
(predSamplesL1[hx][vy] - predSampleL1[hx-1][vy])>>3 (hx== nCbW인 경우),
(predSamplesL0[hx+1][vy] - predSampleL1[hx-1][vy])>>4 (그렇지 않은 경우).
○ gradientVL1[x][y] =
(predSampleL1[hx][vy+1] - predSampleL1[hx][vy])>>3
(vy ==1인 경우),
(predSampleL1[hx][vy] - predSampleL1[hx][vy-1])>>3
(vy ==nCbH인 경우),
(predSampleL1[hx][vy+1] - predSampleL1[hx][vy-1])>>4
(그렇지 않은 경우).
g.
일례에서, 그래디언트들을 계산하기 전에, 외부 샘플들(도 23의 흑색 원들)은 패딩되는 것에 의해 보간되지 않는다.
i.
예를 들어, 모든 유효한 hx 및 vy에 대해 predSampleL0[0][vy]= predSampleL0[1][vy], predSampleL0[nCbW+1][vy]= predSampleL0[nCbW][vy], predSampleL0[hx][0]= predSampleL0[hx][1], predSampleL0[hx][nCbH+1]= predSampleL0[hx][nCbH]이고 predSampleL1[0][vy]= predSampleL1[1][vy], predSampleL1[nCbW+1][vy]= predSampleL1[nCbW][vy], predSampleL1[hx][0]= predSampleL1[hx][1], predSampleL1[hx][nCbH+1]= predSampleL1[hx][nCbH]이다.
h.
일례에서, BIO에서의 그래디언트 계산 방법 및 적응적 루프 필터(ALF)에서의 그래디언트 계산 방법은 동일한 방법이다.
i.
일례에서, VTM-3에서의 BIO의 그래디언트 계산 방법도 ALF에 대한 그래디언트들을 계산하기 위해 사용된다.
ii.
일례에서, VTM-3에서 ALF를 위한 그래디언트 계산 방법도 BIO에 대한 그래디언트들을 계산하기 위해 사용된다.
예 10. 양방향 옵티컬 플로우 예측 프로세스에 대해 다음의 변경들이 제안된다.
a.
그래디언트 값들은 4 이외의 다른 값만큼 시프트될 수 있다. 일례에서, 변수들 gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] 및 gradientVL1[x][y]는 다음과 같이 도출된다:
gradientHL0[x][y] = SignShift (predSamplesL0[hx +1][vy] - predSampleL0[hx-1][vy], S)
gradientVL0[x][y] = SignShift (predSampleL0[hx][vy+1] - predSampleL0[hx][vy-1], S)
gradientHL1[x][y] = SignShift (predSamplesL1[hx+1][vy] - predSampleL1[hx-1][vy], S)
gradientVL1[x][y] = SignShift (predSampleL1[hx][vy+1] - predSampleL1[hx][vy-1], S)
i.
일례에서, S는 4 또는 5와 같은 고정된 수이다.
ii.
일례에서, S는 샘플 비트 깊이에 의존한다. 예를 들어, S는 B-P와 동일하고, 여기서 B는 8, 10 또는 12와 같은 샘플 비트 깊이이고, P는 6과 같은 정수이다.
b.
그래디언트 값들은 범위 내에 있어야 한다. 일례에서, 변수들 gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] 및 gradientVL1[x][y]는 K 비트 정수, 예를 들어, K=8 또는 16에 의해 표현되도록 보장되어야 한다.
i.
예를 들어, 도출 후에, 그래디언트들은 다음과 같이 클리핑된다:
gradientHL0[x][y] = Clip3(-2K-1, 2K-1-1, gradientHL0[x][y])
gradientVL0[x][y] = Clip3(-2K-1, 2K-1-1, gradientVL0[x][y])
gradientHL1[x][y] = Clip3(-2K-1, 2K-1-1, gradientHL1[x][y])
gradientVL1[x][y] = Clip3(-2K-1, 2K-1-1, gradientVL1[x][y])
c.
내부 변수들 temp, tempX 및 tempY는 다음과 같이 도출된다:
temp[x][y] = SignShift(predSamplesL0[hx][vy] - predSamplesL1[hx][vy], S1)
tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHL1[x][y], S2)
tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVL1[x][y], S3)
i.
일례에서, S1, S2 및 S3은 S1=6, S2=S3=3과 같은 고정된 숫자들이다.
ii.
일례에서, S1, S2 및 S3은 샘플 비트 깊이에 의존한다. 예를 들어, S1=B-P1, S2=B-P2 및 S3=B-P3이고, 여기서 B는 8, 10 또는 12와 같은 샘플 비트 깊이이고, P1, P2 및 P3은 정수들이고, 예를 들어, P1=4, P2=P3=7이다.
d.
내부 변수들 temp, tempX 및 tempY는 K1-비트 정수, K2-비트 정수 및 K3-비트 정수, 예를 들어, K1 = 8 또는 16, K2 = 8 또는 16, K3 = 8 또는 16에 의해 표현되도록 보장되어야 한다.
i.
예를 들어, 내부 변수들은 다음과 같이 도출된 후에 클리핑된다.
temp [x][y] = Clip3(-2K1-1, 2K1-1-1, gradientHL0[x][y])
tempX [x][y] = Clip3(-2K2-1, 2K2-1-1, gradientVL0[x][y])
tempY [x][y] = Clip3(-2K3-1, 2K3-1-1, gradientHL1[x][y])
e.
내부 변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 범위 내에 있어야 한다. 일례에서, 이러한 변수들은 K1-비트 정수, K2-비트 정수, K3-비트 정수, K4-비트 정수 및 K5-비트 정수, 예를 들어, K1 = 8 또는 16, K2 = 8 또는 16, K3 = 8 또는 16에 의해 표현되도록 보장되어야 한다.
i.
예를 들어, 내부 변수들은 다음과 같이 도출된 후에 우측 시프트된다.
sGx2 = Shift(sGx2, S1)
sGy2 = Shift(sGy2, S2)
sGxGy = SignShift (sGxGy, S3)
sGxdI = SignShift (sGxdI, S4)
sGydI = SignShift (sGydI, S5)
일례에서, S1, S2, S3, S4 및 S5는 4 또는 5와 같은 고정된 숫자들이다.
대안적으로, S1, S2, S3, S4 및 S5는 샘플 비트 깊이에 의존한다. 예를 들어, S1=B-P1, S2=B-P2, S3=B-P3, S4=B-P4 및 S5=B-P5이고, 여기서 B는 8, 10 또는 12와 같은 샘플 비트 깊이이고, P1, P2, P3, P4 및 P5는 정수들이다.
ii.
예를 들어, 내부 변수들은 다음과 같이 도출된 후에 클리핑된다.
sGx2 = Clip3(0, 2K1-1, sGx2)
sGy2 = Clip3(0, 2K2-1, sGy2)
sGxGy = Clip3(-2K3-1, 2K3-1-1, sGxGy)
sGxdI = Clip3(-2K4-1, 2K4-1-1, sGxdI)
sGydI = Clip3(-2K5-1, 2K5-1-1, sGydI)
f.
변수들 gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y] 및 gradientVL1[x][y]는 선택된 위치들에 대해서만 도출된다.
i.
일례에서, 그것들은 x%Q==0인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
ii.
일례에서, 그것들은 x%Q==1인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
iii.
일례에서, 그것들은 y%Q==0인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
iv.
일례에서, 그것들은 y%Q==1인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
v.
일례에서, 그것들은 y%Q==0 또는 y%Q==3인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=4이다;
g.
내부 변수들 temp[x][y], tempX[x][y] 및 tempY[x][y]는 선택된 위치들에 대해서만 도출된다.
i.
일례에서, 그것들은 x%Q==0인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
ii.
일례에서, 그것들은 x%Q==1인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
iii.
일례에서, 그것들은 y%Q==0인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
iv.
일례에서, 그것들은 y%Q==1인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=2이다.
v.
일례에서, 그것들은 y%Q==0 또는 y%Q==3인 위치 (x, y)에서의 샘플들에 대해서만 계산된다. 예를 들어, Q=4이다;
vi.
일례에서, temp[x][y], tempX[x][y], tempY[x][y] 및 gradientHL0[x][y], gradientVL0[x][y], gradientHL1[x][y], gradientVL1[x][y]는 동일한 위치들, 예를 들어, 예들 g.i~g.v.에서의 위치들에 있는 샘플들에 대해 계산된다.
h.
내부 변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 선택된 위치들 상의 샘플들의 누산에 의해서만 계산된다. 공식화 방식에서
sGx2 = ΣxΣy (tempX[xSb+x][ySb+y]*tempX[xSb+x][ySb+y])이고, x, y ∈S이다.
sGy2 = ΣxΣy (tempY[xSb+x][ySb+y]*tempY[xSb+x][ySb+y])이고, x, y ∈S이다.
sGxGy = ΣxΣy (tempX[xSb+x][ySb+y]*tempY[xSb+x][ySb+y])이고, x, y ∈S이다.
sGxdI = ΣxΣy (-tempX[xSb+x][ySb+y]*temp[xSb+x][ySb+y])이고, x, y ∈S이다.
sGydI = ΣxΣy (-tempY[xSb+x][ySb+y]*temp[xSb+x][ySb+y])이고, x, y ∈S이다.
여기서 S는 선택된 위치들의 세트이다.
i.
일례에서, 선택된 위치들은 x=0, 1, 2, 3이고 y=0, 1, 2, 3이다;
ii.
일례에서, 선택된 위치들은 x=0, 2이고 y=0, 1, 2, 3이다;
iii.
일례에서, 선택된 위치들은 x=1, 2이고 y=0, 1, 2, 3이다;
iv.
일례에서, 선택된 위치들은 x=1, 3이고 y=0, 1, 2, 3이다;
v.
일례에서, 선택된 위치들은 x=2, 3이고 y=0, 1, 2, 3이다;
vi.
일례에서, 선택된 위치들은 x=0, 3이고 y=0, 1, 2, 3이다;
vii.
일례에서, 선택된 위치들은 y=0, 2이고 x=0, 1, 2, 3이다;
viii.
일례에서, 선택된 위치들은 y=1, 2이고 x=0, 1, 2, 3이다;
ix.
일례에서, 선택된 위치들은 y=1, 3이고 x=0, 1, 2, 3이다;
x.
일례에서, 선택된 위치들은 y=2, 3이고 x=0, 1, 2, 3이다;
xi.
일례에서, 선택된 위치들은 y=0, 3이고 x=0, 1, 2, 3이다;
xii.
일례에서, 선택된 위치들은 x=-1, 4이고 y=-1, 0, 1, 2, 3, 4이다;
xiii.
일례에서, 선택된 위치들은 x=0, 3이고 y=-1, 0, 1, 2, 3, 4이다;
xiv.
일례에서, 선택된 위치들은 x=1, 2이고 y=-1, 0, 1, 2, 3, 4이다;
xv.
일례에서, 선택된 위치들은 x=-1, 1, 3이고 y=-1, 0, 1, 2, 3, 4이다;
xvi.
일례에서, 선택된 위치들은 x=0, 2, 4이고 y=-1, 0, 1, 2, 3, 4이다;
xvii.
일례에서, 선택된 위치들은 x=-1, 1, 2, 4이고 y=-1, 0, 1, 2, 3, 4이다;
xviii.
일례에서, 선택된 위치들은 x=0, 1, 2, 3이고 y=-1, 0, 1, 2, 3, 4이다;
xix.
일례에서, 선택된 위치들은 y=-1, 4이고 x=-1, 0, 1, 2, 3, 4이다;
xx.
일례에서, 선택된 위치들은 y=0, 3이고 x=-1, 0, 1, 2, 3, 4이다;
xxi.
일례에서, 선택된 위치들은 y=1, 2이고 x=-1, 0, 1, 2, 3, 4이다;
xxii.
일례에서, 선택된 위치들은 y=-1, 1, 3이고 x=-1, 0, 1, 2, 3, 4이다;
xxiii.
일례에서, 선택된 위치들은 y=0, 2, 4이고 x=-1, 0, 1, 2, 3, 4이다;
xxiv.
일례에서, 선택된 위치들은 y=-1, 1, 2, 4이고 x=-1, 0, 1, 2, 3, 4이다;
xxv.
일례에서, 선택된 위치들은 y=0, 1, 2, 3이고 x=-1, 0, 1, 2, 3, 4이다;
i.
vx 및 vy를 도출하기 위해 사용되는 나눗셈 연산은 더 정교한 방식으로 대체된다.
i.
일례에서, vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -(sGxdI<<3)>>M): 0이다. M은 sGx2의 값에 따라, Floor(Log2(sGx2)) 또는 Ceiling(Log2(sGx2))일 수 있다. 예를 들어, 3*sGx2가 2Floor(Log2(sGx2))+2보다 큰 경우 M은 Ceiling (Log2(sGx2))이고, 그렇지 않으면, M은 Floor(Log2(sGx2))이다. 다른 예에서, sGx2가 T보다 큰 경우 M은 Ceiling (Log2(sGx2))이고, 그렇지 않으면 M은 Floor(Log2(sGx2))이다. 예를 들어, T=( Floor(Log2(sGx2))+ Ceiling (Log2(sGx2)))/2이다. 다른 예에서, sGx2*sGx2가 22*Floor(Log2(sGx2))+1보다 더 큰 경우 M은 Ceiling (Log2(sGx2))이고, 그렇지 않으면, M은 Floor(Log2(sGx2))이다.
1.
대안적으로, vx = sGx2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, -((sGxdI<<3)+Offset)>>M): 0이다. Offset는 1<<(M-1)과 같은 정수이다.
a.
Offset는 sGx2에 의존할 수 있다.
ii.
일례에서, vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, ((sGydI<<3) - ((vx*sGxGym)<<12 + vx*sGxGys)>>1)>>M : 0이다. M은 sGy2의 값에 따라, Floor(Log2(sGy2)) 또는 Ceiling(Log2(sGy2))일 수 있다. 예를 들어, 3*sGy2가 2Floor(Log2(sGy2))+2보다 큰 경우, M은 Ceiling (Log2(sGy2))이고, 그렇지 않으면, M은 Floor(Log2(sGy2))이다. 다른 예에서, sGy2가 T보다 큰 경우 M은 Ceiling (Log2(sGy2))이고, 그렇지 않으면, M은 Floor(Log2(sGy2))이다. 예를 들어, T=(Floor(Log2(sGy2))+Ceiling (Log2(sGy2)))/2이다. 다른 예에서, sGy2*sGy2가 22*Floor(Log2(sGy2))+1보다 큰 경우, M은 Ceiling (Log2(sGy2))이고, 그렇지 않으면, M은 Floor(Log2(sGy2))이다.
1.
대안적으로, vy = sGy2 > 0 ? Clip3(-mvRefineThres, mvRefineThres, (((sGydI<<3) - ((vx*sGxGym) <<12 + vx*sGxGys)>>1)+Offset)>>M : 0이다. Offset는 1<<(M-1)과 같은 정수이다.
a.
Offset는 sGy2에 의존할 수 있다.
iii.
sGxGym 및 sGxGys는 sGxGy의 부호에 따라 계산된다. x >=0인 경우 sign(x)=1이고 x <0인 경우 sign(x)=-1이라고 가정하면, sGxGym = sign(sGxGy) *|sGxGy|>>W; sGxGys = sign(sGxGy) *(| sGxGy| & ((1<<W)-1))이다.
1.
W는 12와 같은 고정된 수일 수 있다. 또는 그것은 샘플 비트 깊이에 의존할 수 있다.
iv.
BIO 절차에서의 나눗셈 연산은 룩업 테이블에 의해 계산된다.
(i) 나눗셈 연산을 대체하기 위해 CCLM에서 동일한 룩업 테이블이 또한 사용된다.
예 11. 전체 블록 및 서브블록 SAD 계산들에 기초한 BIO 온/오프의 판정은 단지 서브블록 SAD 계산을 계산함으로써 단순화될 수 있다. 대안적으로, SAD 계산은 MR-SAD와 같은 다른 규칙들로 대체될 수 있다.
예 12. BIO에서의 SAD 계산은 선택된 위치들 상의 샘플들에 대해서만 행해진다.
a.
subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= ΣiΣj Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j])이고 i, j ∈S이고,
여기서 S는 선택된 위치들의 세트이다.
i.
일례에서, 선택된 위치들은 i=0, 2이고 j=0, 1, 2, 3이다;
ii.
일례에서, 선택된 위치들은 i=1, 2이고 j=0, 1, 2, 3이다;
iii.
일례에서, 선택된 위치들은 i=1, 3이고 j=0, 1, 2, 3이다;
iv.
일례에서, 선택된 위치들은 i=2, 3이고 j=0, 1, 2, 3이다;
v.
일례에서, 선택된 위치들은 i=0, 3이고 j=0, 1, 2, 3이다;
vi.
일례에서, 선택된 위치들은 j=0, 2이고 i=0, 1, 2, 3이다;
vii.
일례에서, 선택된 위치들은 j=1, 2이고 i=0, 1, 2, 3이다;
viii.
일례에서, 선택된 위치들은 j=1, 3이고 i=0, 1, 2, 3이다;
ix.
일례에서, 선택된 위치들은 j=2, 3이고 i=0, 1, 2, 3이다;
x.
일례에서, 선택된 위치들은 j=0, 3이고 i=0, 1, 2, 3이다;
xi.
일례에서, 선택된 위치들은 i=0, 3이고 j=0, 3이다;
xii.
일례에서, 선택된 위치들은 i=1, 2이고 j=1, 2이다;
b.
대안적으로, subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= maxi, j Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j])이고, i, j ∈S이고,
여기서 S는 선택된 위치들의 세트이다.
c.
대안적으로, subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]= mini, j Abs(predSamplesL0L[(xSbIdx<<2)+1+i][(ySbIdx<<2)+1+j] - predSamplesL1L[(xSbIdx<<2)+1+i][ (ySbIdx<<2)+1+j])이고, i, j ∈S이고,
여기서 S는 선택된 위치들의 세트이다.
d.
임계값 subCuLevelAbsDiffThres는 적응적일 수 있다.
i.
이것은 QP 및 POC 거리와 같은 코딩 정보에 의존할 수 있다.
ii.
이것은 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
예 13. BIO에서의 SAD 계산은 선택된 서브블록들 상의 샘플들로만 행해진다.
a.
대안적으로, 또한, 각각의 서브블록에 대한 SAD 계산은 하나의 서브블록 내의 샘플들의 부분만을 수반할 수 있다.
b.
cuLevelSumAbsoluteDiff = ΣxSbIdx ΣySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]이고, xSbIdx, ySbIdx ∈S이고,
여기서 S는 선택된 서브블록들의 세트이다.
i.
일례에서, 선택된 위치들은 xSbIdx % 2 == 0이다;
ii.
일례에서, 선택된 위치들은 xSbIdx % 2 == 1이다;
iii.
일례에서, 선택된 위치들은 xSbIdx % 4 == 0이다;
iv.
일례에서, 선택된 위치들은 xSbIdx ==0 또는 xSbIdx== (cbWidth>>2)-1이다;
v.
일례에서, 선택된 위치들은 xSbIdy % 2 == 0이다;
vi.
일례에서, 선택된 위치들은 xSbIdy % 2 == 1이다;
vii.
일례에서, 선택된 위치들은 xSbIdy % 4 == 0이다;
viii.
일례에서, 선택된 위치들은 xSbIdy ==0 또는 xSbIdy== (cbHeight>>2)-1이다;
ix.
일례에서, 선택된 위치들은 (xSbIdy ==0 또는 xSbIdy== (cbHeight>>2)-1), 및 (xSbIdy==0 또는 xSbIdy== (cbHeight>>2)-1)이다;
c.
cuLevelSumAbsoluteDiff = Max xSbIdx, ySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]이고, xSbIdx, ySbIdx ∈S이다.
d.
cuLevelSumAbsoluteDiff = Min xSbIdx, ySbIdx subCuLevelSumAbsoluteDiff[ xSbIdx ][ ySbIdx ]이고, xSbIdx, ySbIdx ∈S이다.
e.
임계값 cuLevelAbsDiffThres는 적응적일 수 있다.
i.
이것은 QP 및 POC 거리와 같은 코딩 정보에 의존할 수 있다.
ii.
이는 AMVP 모드, 병합 모드 또는 MMVD(MV 차이와의 병합) 모드와 같은 코딩 모드에 의존할 수 있다.
iii.
이것은 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
예 14. 예 12 및 예 13에 대해, 제안된 방법들은 SAD가 다른 규칙들로 대체될 때의 다른 경우들에도 적용가능할 수 있다. 즉, BIO의 사용을 결정하기 위해 서브블록들의 일부 및/또는 하나의 서브블록 내의 샘플들의 일부만이 고려될 수 있다.
예 15. BIO 절차에서 변수들을 도출하는 방법은 GBi가 적용되거나 적용되지 않을 때 상이할 수 있다.
a.
대안적으로, 또한, 도출은 상이한 가중 값들을 갖는 GBi에 대해 상이할 수 있다.
b.
GBi 프로세스에서 Ref0 및 Ref1에 대해 가중 값들이 W0 및 W1인 것으로 가정하면, 예측 블록들은, SAD 계산, 그래디언트 계산과 같은, BIO 절차에서 사용되는 변수들을 도출하기 전에 먼저 가중된다.
i.
2개의 예측 블록을 predSamplesL0[x][y] 및 predSamplesL1[x][y]로 표기한다. W0* predSamplesL0[x][y] 및 predSamplesL1[x][y] 및 W1* predSamplesL1[x][y]가 BIO에 대한 입력들로서 사용된다.
c.
대안적으로, BIO 절차에서 사용되는 변수들이 도출되기 전에 predSamplesL0[x][y]는 Shift(W0* predSamplesL0[x][y], S0)로서 사전 계산되고 predSamplesL1[x][y]는 Shift(W1* predSamplesL1[x][y], S1)로서 사전 계산된다.
i.
S0 및 S1은 샘플 비트 깊이에 의존할 수 있다.
ii.
S0 및 S1은 W0 및 W1에 의존할 수 있다.
iii.
S0 및 S1은 2와 같은 고정된 수들일 수 있다.
d.
대안적으로, 하나의 블록의 최종 예측 블록을 생성할 때 보정 항목의 값들이 또한 가중될 수 있다.
i.
BIO 절차에서 사용되는 파라미터를 도출할 때, 가중되지 않은 2개의 예측 블록이 종래 기술로서 BIO에 대한 입력으로서 사용된다. 그러나, 최종 예측 블록들은 예측 블록들의 가중 값들 및 보정 항목의 가중 값들에 의해 생성된다.
ii.
보정 항목에 적용된 가중치들은 예측 블록들에 사용된 것과 동일할 수 있다. 대안적으로, 상이한 가중치들이 보정 항목에 적용될 수 있다.
예 16. 보정 항목 값이 특정한 범위에 있어야 한다는 것이 제안된다.
(a) 예를 들어, 보정 항목은 [minCorrection, maxCorrection]로 클리핑된다.
i.
minCorrection 및 maxCorrection은 예를 들어, -32 및 32로 고정될 수 있다;
ii.
minCorrection 및 maxCorrection은 샘플 비트 깊이에 의존할 수 있다. 예를 들어, minCorrection = -(32<<(BitDepth-8)), maxCorrection=32<<(BitDepth-8))이다.
iii.
minCorrection 및 maxCorrection은 블록 폭 및/또는 높이에 의존할 수 있다.
iv.
minCorrection 및 maxCorrection은 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU 라인/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
(b) 예를 들어, 보정 항목은 그것이 범위 밖에 있는 경우 인자에 의해 나누어지거나 또는 우측 시프트된다.
예 17. BIO에서의 최종 예측 출력은 특정한 범위에 있어야 한다는 것이 제안된다.
(a) 예를 들어, BIO에서의 최종 예측 출력은 [minPred, maxPred]로 클리핑된다.
i.
minPred 및 maxPred는 -32 및 32와 같은 고정된 수일 수 있다;
ii.
minPred 및 maxPred는 샘플 비트 깊이에 의존할 수 있다. 예를 들어, minPred = -(32<<(BitDepth-8)), maxCorrection=32<<(BitDepth-8))이다.
iii.
minPred 및 maxPred는 블록 폭 및/또는 높이에 의존할 수 있다.
iv.
minPred 및 maxPred는 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더/타일/CTU 라인/CTU/CU에서 인코더로부터 디코더로 시그널링될 수 있다.
위에 설명된 예들은 아래에 설명되는 방법, 예를 들어, 비디오 디코더 또는 비디오 인코더에서 구현될 수 있는 방법들(2810, 2820, 2830, 2840, 2850 및 2860)의 맥락에 포함될 수 있다.
도 28a는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2810)은, 단계 2812에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 제1 코딩 모드를 사용한 변환을 위한 제1 선형 최적화 모델을 사용하기로 결정하는 단계를 포함하고, 제1 선형 최적화 모델은 제2 코딩 모드를 사용한 변환을 위해 사용되는 제2 선형 최적화 모델로부터 도출된다.
방법(2810)은, 단계 2814에서, 결정에 기초하여, 변환을 수행하는 단계를 포함한다.
도 28b는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2820)은, 단계 2822에서, 비디오의 현재 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드 또는 제1 예측 모드와 상이한 제2 예측 모드를 인에이블링하는 단계- 제1 예측 모드는 옵티컬 플로우를 사용하는 코딩 모드임 -을 포함한다.
방법(2820)은, 단계 2824에서, 제1 모드 또는 제2 모드에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 28c는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2830)은, 단계 2832에서, 비디오의 현재 블록과 연관된 코딩된 정보에 기초하여, 현재 블록의 참조 픽처와 연관된 하나 이상의 속도 벡터(vx, vy)를 연속적으로 도출하는 단계를 포함한다.
방법(2830)은, 단계 2834에서, 하나 이상의 속도 벡터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하며, 코딩된 정보는 현재 블록의 모션 벡터의 수평 컴포넌트의 값, 현재 블록의 모션 벡터의 수직 컴포넌트의 값, 또는 현재 블록의 크기를 포함한다.
도 28d는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2840)은, 단계 2842에서, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다는 결정 시에, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하여 필터링 동작을 수행하는 단계를 포함한다.
방법(2840)은, 단계 2844에서, 필터링 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 28e는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2850)은, 단계 2852에서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘을 사용하기로 결정하는 단계를 포함한다.
방법(2850)은, 단계 2854에서, 결정에 기초하여, 변환을 수행하는 단계를 포함한다.
도 28f는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2860)은, 단계 2862에서, 비디오의 현재 블록의 서브블록에 대한 하나 이상의 SAD(sum of absolute difference) 계산에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 선택적 인에이블링에 관한 판정을 하는 단계를 포함한다.
방법(2860)은, 단계 2864에서, 판정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 28g는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2870)은, 단계 2872에서, 비디오의 현재 블록에 대한 일반화된 양방향 예측 개선(GBi) 프로세스의 선택적 인에이블링에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 하나 이상의 파라미터를 도출하는 단계를 포함한다.
방법(2870)은, 단계 2874에서, 옵티컬 플로우를 사용하는 코딩 모드의 하나 이상의 파라미터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 28h는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2880)은, 단계 2882에서, 옵티컬 플로우를 사용하는 코딩 모드로 코딩된 비디오의 현재 블록에 대해, 옵티컬 플로우를 사용하는 코딩 모드의 최종 예측 출력의 보정 항에 대해 클리핑 연산을 수행하는 단계를 포함한다.
방법(2880)은, 단계 2884에서, 최종 예측 출력에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
도 28i는 비디오 처리를 위한 예시적인 방법의 흐름도를 도시한다. 방법(2890)은, 단계 2892에서, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다는 결정 시에, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하여 필터링 동작을 수행하는 단계를 포함한다.
방법(2890)은, 단계 2894에서, 현재 블록의 적어도 하나의 샘플이 미리 결정된 범위 밖에 위치한다는 결정 시에, 패딩 동작을 수행하는 단계를 포함한다.
방법(2890)은, 단계 2896에서, 필터링 동작 및 패딩 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
일부 실시예들에서, 다음의 기술적 솔루션들이 구현될 수 있다:
A1.
비디오 처리 방법으로서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 제1 코딩 모드를 사용하는 변환을 위한 제1 선형 최적화 모델을 사용하기로 결정하는 단계- 제1 선형 최적화 모델은 제2 코딩 모드를 사용하는 변환을 위해 사용되는 제2 선형 최적화 모델로부터 도출됨 -; 및 결정에 기초하여, 변환을 수행하는 단계를 포함하는 방법.
A2.
솔루션 A1에 있어서, 제2 코딩 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드인 방법.
A3.
솔루션 A2에 있어서, 제2 선형 최적화 모델은 입력 및 2개의 출력 파라미터 a 및 b로서 N개의 샘플 그룹(uk, vk, wk)을 포함하고, 제2 선형 최적화 모델은
A4.
솔루션 A3에 있어서, , , , 및 이고, 는 참조 프레임 i 내의 픽셀 위치 (x, y)에서의 루마 샘플을 나타내며, 및 는 각각 루마 샘플의 수평 그래디언트 및 수직 그래디언트를 나타내는 방법.
A5.
솔루션 A3에 있어서, uk=-C(n), vk=L(n), wk=1, a=α 및 b=β이고, C(n)은 상단 및 좌측의 이웃하는 재구성된 크로마 샘플을 나타내고, L(n)은 상단 및 좌측의 이웃하는 재구성된 루마 샘플을 나타내고, α 및 β는 제2 선형 최적화 모델의 파라미터들을 나타내는 방법.
A6.
솔루션 A1에 있어서, 제2 코딩 모드는 크로스 컴포넌트 선형 모델 예측 모드인 방법.
A7.
비디오 처리 방법으로서, 비디오의 현재 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드 또는 제1 예측 모드와 상이한 제2 예측 모드를 인에이블링하는 단계- 제1 예측 모드는 옵티컬 플로우를 사용하는 코딩 모드임 -; 및 제1 모드 또는 제2 모드에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
A8.
솔루션 A7에 있어서, 옵티컬 플로우를 사용하는 코딩 모드를 인에이블링하는 것을 억제하는 단계를 추가로 포함하고, 제1 참조 픽처(R0) 및 제2 참조 픽처(R1)는 현재 블록을 포함하는 현재 픽처와 연관되고, τ0은 현재 픽처의 픽처 순서 카운트와 제1 참조 픽처의 픽처 순서 카운트 사이의 차이(τ0=POC(current)-POC(R0))이고, τ1은 제2 참조 픽처의 픽처 순서 카운트와 현재 픽처의 픽처 순서 카운트 사이의 차이(τ1=POC(R1)-POC(current))인 방법.
A11.
솔루션 A9 또는 A10에 있어서, T0 = T1 = 4인 방법.
A13.
솔루션 A12에 있어서, T0 = 8인 방법.
A15.
솔루션 A14에 있어서, T0=0인 방법.
A17.
솔루션 A16에 있어서, T0 = 8인 방법.
A18.
솔루션들 A9 내지 A17 중 임의의 것에 있어서, T0은 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 유닛(CU) 또는 코딩 트리 유닛(CTU)에서 시그널링되는 방법.
A19.
솔루션 A7에 있어서, 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되고, 현재 블록을 포함하는 현재 픽처에 대한 하나 이상의 속도 벡터(vx, vy)가 하나 이상의 POC 거리에 기초하고, 제1 참조 픽처(R0) 및 제2 참조 픽처(R1)이 현재 픽처와 연관되는 방법.
A20.
솔루션 A19에 있어서, τ0은 현재 픽처의 픽처 순서 카운트와 제1 참조 픽처의 픽처 순서 카운트 사이의 차이(τ0=POC(current)-POC(R0))이고, τ1은 제2 참조 픽처의 픽처 순서 카운트와 현재 픽처의 픽처 순서 카운트 사이의 차이(τ1=POC(R1)-POC(current))이며, 여기서,
A21.
솔루션 A19에 있어서, 하나 이상의 속도 벡터는 반복적 방식으로 도출되는 방법.
A22.
솔루션 A19에 있어서, 하나 이상의 속도 벡터는 제3 예측 모드에 기초하고, 제3 예측 모드는 DMVR 또는 양방향 매칭인 방법.
A23.
솔루션 A22에 있어서, MV0 및 MV1은 각각 제1 및 제2 참조 픽처들에 대한 모션 벡터들이고, MV0' 및 MV1'은 제3 예측 모드에 대한 초기 모션 벡터들인 방법.
A24.
솔루션 A23에 있어서, MV0' = MV0 + (vx, vy)이고 MV1' = MV1 - (vx, vy)인 방법.
A25.
솔루션 A23에 있어서, MV0' = MV0 - (vx, vy)이고 MV1' = MV1 + (vx, vy)인 방법.
A26.
솔루션 A7에 있어서, 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되고 현재 블록의 샘플들의 서브세트에 적용되고, 샘플들의 서브세트는 현재 블록의 모든 샘플들을 배제하는 방법.
A27.
솔루션 A26에 있어서, 샘플들의 서브세트는 현재 블록의 제1 행, 최종 행, 제1 열 또는 최종 열의 샘플들을 배제하는 방법.
A28.
솔루션 A7에 있어서, 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되고 현재 블록의 서브블록의 샘플들의 서브세트에 적용되고, 샘플들의 서브세트는 현재 블록의 서브블록의 모든 샘플들과 등가가 아닌 방법.
A29.
솔루션 A28의 방법으로서, 샘플들의 서브세트는 현재 블록의 서브블록의 제1 행, 마지막 행, 제1 열 또는 마지막 열 내의 샘플들을 배제하는 방법.
A30.
솔루션들 A1 내지 A29 중 임의의 것에 있어서, 옵티컬 플로우를 사용하는 코딩 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드인 방법.
A31.
비디오 처리 방법으로서, 비디오의 현재 블록과 연관된 코딩된 정보에 기초하여, 현재 블록의 참조 픽처와 연관된 하나 이상의 속도 벡터 (vx, vy)를 연속적으로 도출하는 단계; 및 하나 이상의 속도 벡터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계- 코딩된 정보는 현재 블록의 모션 벡터의 수평 컴포넌트의 값, 현재 블록의 모션 벡터의 수직 컴포넌트의 값, 또는 현재 블록의 크기를 포함함 -를 포함하는 방법.
A32.
A31에 있어서, vy가 먼저 도출되고, vx는 vy의 값에 기초하여 도출되는 방법.
A33.
솔루션 A31에 있어서, 하나 이상의 속도 벡터에 기초하여, 참조 픽처의 적어도 하나의 예측 또는 적어도 하나의 그래디언트를 리파인하는 단계; 및 리파인(refining)에 후속하여, 참조 픽처에 기초하여 하나 이상의 속도 벡터를 도출하는 단계를 추가로 포함하는 방법.
A34.
솔루션 A33에 있어서, 리파인 및 도출은 하나 이상의 속도 벡터 중 하나의 속도 벡터의 연속 값들 사이의 차이가 미리 결정된 임계값 미만일 때까지 여러 번 수행되는 방법.
A35.
솔루션들 A1 내지 A34 중 임의의 것에 있어서, 변환은 비트스트림 표현으로부터 현재 블록을 생성하는 방법.
A36.
솔루션들 A1 내지 A34 중 임의의 것에 있어서, 변환은 현재 블록으로부터 비트스트림 표현을 생성하는 방법.
A37.
비디오 시스템 내의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하고, 명령어들은 프로세서에 의한 실행 시에 프로세서로 하여금 솔루션들 A1 내지 A36 중 어느 하나에서의 방법을 구현하게 하는 장치.
A38.
비일시적 컴퓨터 판독가능 매체 상에 저장되는 컴퓨터 프로그램 제품으로서, 컴퓨터 프로그램 제품은 솔루션들 A1 내지 A36 중 어느 하나에서의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
일부 실시예들에서, 다음의 기술적 솔루션들이 구현될 수 있다:
B1.
비디오 처리 방법으로서, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다는 결정 시에, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하는 필터링 동작을 수행하는 단계; 및 필터링 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
B2.
솔루션 B1에 있어서, 컬러 컴포넌트는 루마 컴포넌트를 포함하고, 단일 타입의 보간 필터는 8-탭 보간 필터를 포함하는 방법.
B3.
솔루션 B1에 있어서, 필터링 동작에서 사용되는 현재 블록의 제1 샘플 수가 단일 타입의 보간 필터에 의해 요구되는 제2 샘플 수보다 작고, 그에 의해 필터링 동작의 메모리 대역폭을 감소시키는 방법.
B4.
솔루션 B3에 있어서, 제2 샘플 수는 옵티컬 플로우를 사용하는 코딩 모드가 적용되지 않을 때 필터링 동작에 사용되는 현재 블록의 샘플 수와 동일한 방법.
B5.
솔루션 B1에 있어서, 현재 블록의 다수의 샘플이 필터링 동작에서 사용되고, 방법은: 옵티컬 플로우를 사용하는 코딩 모드가 적용된다는 결정 시에 패딩 동작을 수행하는 단계를 추가로 포함하는 방법.
B6.
솔루션 B1에 있어서, 현재 블록의 크기는 MxN이고, 그래디언트 계산에 의해 요구되는 제1 샘플 수는 (M+G)x(N+G)이고, 단일 타입의 보간 필터는 L개의 탭을 포함하며, 필터링 동작에 의해 요구되는 제2 샘플 수는 (M+G+L-1)x(N+G+L-1)이고, 필터링 동작에 사용되는 제3 샘플 수는 (M+L-1+k)x(N+L-1+k)이며, M, N, G 및 L은 양의 정수들이고, k는 G 미만의 정수이며, 제2 샘플 수와 제3 샘플 수 사이의 차이를 포함하는 제4 샘플 수가 패딩되는 방법.
B7.
솔루션 B6에 있어서, M = N = 8, L = 8이고 G = 2인 방법.
B8.
솔루션 B6 또는 B7에 있어서, k = 0 또는 k = 1인 방법.
B9.
솔루션 B1에 있어서, 현재 블록의 좌측 상단 픽셀의 좌표는 (0, 0)이고, 방법은: 그래디언트 값을 계산하는 것을 억제하고 미리 결정된 위치에서의 픽셀에 옵티컬 플로우를 사용하는 코딩 모드를 적용하는 단계를 추가로 포함하는 방법.
B10.
솔루션 B9에 있어서, 미리 결정된 위치의 x-좌표는 -1 또는 W이고, W는 현재 블록의 폭이고, W는 양의 정수인 방법.
B11.
솔루션 B9에 있어서, 미리 결정된 위치의 y-좌표는 -1 또는 H이고, H는 현재 블록의 높이이고, H는 양의 정수인 방법.
B12.
솔루션 B1에 있어서, 현재 블록의 좌측 상단 픽셀의 좌표는 (0, 0)이고, 방법은: 미리 결정된 위치에서의 픽셀에 대한 그래디언트 값의 계산을 수정하는 단계를 추가로 포함하는 방법.
B13.
솔루션 B12에 있어서, 미리 결정된 위치의 x-좌표는 -1 또는 W이고, W는 현재 블록의 폭이고, W는 양의 정수인 방법.
B14.
솔루션 B12에 있어서, 미리 결정된 위치의 y-좌표는 -1 또는 H이고, H는 현재 블록의 높이이고, H는 양의 정수인 방법.
B15.
솔루션 B13 또는 B14에 있어서, 그래디언트 값의 계산은:
여기서, W는 현재 블록의 폭이고, predSampleL0은 참조 리스트 L0으로부터의 현재 블록에 대한 루마 예측 샘플들을 포함하는 어레이이고, gradientHL0은 참조 리스트 L0으로부터 도출된 그래디언트 값의 수평 컴포넌트이고, hx 및 vy는 정수 좌표 인덱스들인 방법.
B16.
솔루션 B13 또는 B14에 있어서, 그래디언트 값의 계산은:
여기서, W는 현재 블록의 폭이고, predSampleL0은 현재 블록으로부터의 루마 예측 샘플들을 포함하는 어레이이고, gradientVL0은 참조 리스트 L0으로부터 도출된 그래디언트 값의 수직 컴포넌트이고, hx 및 vy는 정수 좌표 인덱스들인 방법.
B17.
솔루션 B1에 있어서, 그래디언트 값의 계산 이전에, 하나 이상의 외부 샘플을 보간하는 대신에 현재 블록의 하나 이상의 외부 샘플을 패딩하는 단계를 추가로 포함하는 방법.
B18.
솔루션 B1에 있어서, 옵티컬 플로우를 이용하는 코딩 모드에서 사용되는 하나 이상의 그래디언트 계산은 적응적 루프 필터(ALF)에서 사용되는 것들과 동일한 방법.
B19.
비디오 처리 방법으로서, 비디오의 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되었다는 결정 시에, 현재 블록의 각각의 컬러 컴포넌트에 대해 단일 타입의 보간 필터를 사용하는 필터링 동작을 수행하는 단계; 현재 블록의 적어도 하나의 샘플이 미리 결정된 범위 밖에 위치한다는 결정 시에, 패딩 동작을 수행하는 단계; 및 필터링 동작 및 패딩 동작에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
B20.
솔루션 B19에 있어서, 패딩 동작은 그래디언트 계산을 수행하기 전에 수행되는 방법.
B21.
솔루션 B19에 있어서, 미리 결정된 범위는 현재 블록의 높이 또는 폭에 기초하는 방법.
B22.
솔루션들 B1 내지 B21 중 임의의 것에 있어서, 옵티컬 플로우를 사용하는 코딩 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드를 포함하는 방법.
B23.
솔루션들 B1 내지 B22 중 임의의 것에 있어서, 변환은 비트스트림 표현으로부터 현재 블록을 생성하는 방법.
B24.
솔루션들 B1 내지 B22 중 임의의 것에 있어서, 변환은 현재 블록으로부터 비트스트림 표현을 생성하는 방법.
B25.
비디오 시스템 내의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하고, 명령어들은 프로세서에 의한 실행 시에 프로세서로 하여금 솔루션들 B1 내지 B24 중 어느 하나에서의 방법을 구현하게 하는 장치.
B26.
비일시적 컴퓨터 판독가능 매체 상에 저장되는 컴퓨터 프로그램 제품으로서, 컴퓨터 프로그램 제품은 솔루션들 B1 내지 B24 중 어느 하나에서의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
일부 실시예들에서, 다음의 기술적 솔루션들이 구현될 수 있다:
C1.
비디오 처리 방법으로서, 비디오의 현재 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘을 사용하기로 결정하는 단계; 및 결정에 기초하여, 변환을 수행하는 단계를 포함하고, 그래디언트 값 계산 알고리즘은:
gradientHL0[x][y] = (predSampleL0[hx+1][vy]-predSampleL0[hx-1][vy]) >> 4,
gradientVL0[x][y] = (predSampleL0[hx][vy+1]-predSampleL0[hx][vy-1]) >> 4,
gradientHL1[x][y] = (predSampleL1[hx+1][vy]-predSampleL1[hx-1][vy]) >> 4, 및
gradientVL1[x][y] = (predSampleL1[hx][vy+1]-predSampleL1[hx][vy-1]) >> 4를 포함하는 레거시 그래디언트 값 계산 알고리즘과 상이하고,
여기서, gradientHL0은 참조 리스트 L0으로부터 도출된 그래디언트 값의 수평 컴포넌트이고, gradientVL0은 참조 리스트 L0으로부터 도출된 그래디언트 값의 수직 컴포넌트이며, gradientHL1은 참조 리스트 L1로부터 도출된 그래디언트 값의 수평 컴포넌트이고, gradientVL1은 참조 리스트 L1로부터 도출된 그래디언트 값의 수직 컴포넌트이며, predSampleL0은 참조 리스트 L0으로부터의 현재 블록에 대한 루마 예측 샘플들을 포함하는 어레이이고, predSampleL1은 참조 리스트 L1로부터의 현재 블록에 대한 루마 예측 샘플들을 포함하는 어레이이며, hx 및 vy는 정수 좌표 인덱스들인 방법.
C2.
솔루션 C1에 있어서, 그래디언트 값 계산을 수정하는 것은 미리 결정된 양의 정수(S)만큼 그래디언트 값을 시프트하는 것을 포함하고, S ≠4인 방법.
C3.
솔루션 C2에 있어서, S = 6인 방법.
C4.
솔루션 C2에 있어서, S = B - P이고, B는 현재 블록의 샘플의 비트 깊이이며, P는 양의 정수인 방법.
C5.
솔루션 C4에 있어서, P = 6이고, B = 8 또는 12인 방법.
C6.
솔루션 C1에 있어서, 그래디언트 값 계산을 수정하는 것은 그래디언트 값이 K-비트 정수로서 표현가능하도록 그래디언트 값을 클리핑하는 것을 포함하고, K는 양의 정수인 방법.
C7.
솔루션 C6에 있어서, K = 8 또는 16인 방법.
C8.
솔루션 C1에 있어서, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘은 제1 내부 변수(temp), 제2 구간 변수(tempX) 및 제3 내부 변수(tempY)의 계산을 포함하고, 계산은:
temp[x][y] = SignShift(predSampleL0[hx][vy] - predSampleL1[hx][vy], S1),
tempX[x][y] = SignShift(gradientHL0[x][y] + gradientHL1[x][y], S2), 및
tempY[x][y] = SignShift(gradientVL0[x][y] + gradientVL1[x][y], S3)과 같이 정의되고,
여기서, S1, S2 및 S3은 정수들이고, SignShift(x, s)는:
여기서, off는 정수인 방법.
C9.
솔루션 C8에 있어서, S1 = 6이고 S2 = S3 = 3인 방법.
C10.
솔루션 C8에 있어서, S1, S2 및 S3은 현재 블록(B)의 샘플의 비트 깊이에 기초하는 방법.
C11.
솔루션 C10에 있어서, S1 = B - P1, S2 = B - P2이고 S3 = B - P3이고, P1, P2 및 P3은 정수들인 방법.
C12.
솔루션 C11에 있어서, B = 8, 10 또는 12이고, P1 = 4이고 P2 = P3 = 7인 방법.
C13.
솔루션 C1에 있어서, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘은 각각 K1-비트 정수, K2-비트 정수 및 K3-비트 정수에 의해 표현가능한 제1 내부 변수(temp), 제2 구간 변수(tempX) 및 제3 내부 변수(tempY)의 계산을 포함하고, K1, K2 및 K3은 양의 정수들인 방법.
C14.
솔루션 C13의 방법으로서, K1 = 8 또는 16, K2 = 8 또는 16이고 K3 = 8 또는 16인 방법.
C15.
솔루션 C13 또는 C14에 있어서, temp, tempX 및 tempY의 계산 다음에:
temp[x][y] = Clip3(-2K1-1, 2K1-1-1, gradientHL0[x][y]),
tempX[x][y] = Clip3(-2K2-1, 2K2-1-1, gradientVL0[x][y]), 및
tempY[x][y] = Clip3(-2K3-1, 2K3-1-1, gradientHL1[x][y])와 같이 정의된 클리핑 연산이 뒤따르고,
Clip3(x, min, max)은:
C16.
솔루션 C1에 있어서, 옵티컬 플로우 툴에 대한 그래디언트 값 계산 알고리즘은 각각 K1-비트 정수, K2-비트 정수, K3-비트 정수, K4-비트 정수 및 K5-비트 정수로 표현가능한 sGx2, sGy2, sGxGy, sGxdI 및 sGydI를 포함하는 복수의 내부 변수의 계산을 포함하고, K1, K2, K3, K4 및 K5는 양의 정수들인 방법.
C17.
솔루션 C16에 있어서, K1 = 8 또는 16, K2 = 8 또는 16, K3 = 8 또는 16, K4 = 8 또는 16 및 K5 = 8 또는 16인 방법.
C18.
솔루션 C16 및 C17에 있어서, sGx2, sGy2, sGxGy, sGxdI 및 sGydI의 계산 다음에:
sGx2 = Shift(sGx2, S1),
sGy2 = Shift(sGy2, S2),
sGxGy = SignShift(sGxGy, S3),
sGxdI = SignShift(sGxdI, S4), 및
sGydI = SignShift(sGydI, S5)와 같이 정의되는 시프팅 연산이 뒤따르고,
여기서, off는 정수인 방법.
C19.
솔루션 C18에 있어서, S1, S2, S3, S4, 및 S5는 4 또는 5와 동일한 방법.
C20.
솔루션 C18에 있어서, S1, S2, S3, S4 및 S5는 현재 블록(B)의 샘플의 비트 깊이에 기초하는 방법.
C21.
솔루션 C8에 있어서, S1 = B - P1, S2 = B - P2, S3 = B - P3, S4 = B - P4이고 S5 = B - P5이고, P1, P2, P3, P4 및 P5는 정수들인 방법.
C22.
솔루션 C21에 있어서, B = 8, 10 또는 12인 방법.
C23.
솔루션 C16 및 C17에 있어서, sGx2, sGy2, sGxGy, sGxdI 및 sGydI의 계산 다음에:
sGx2 = Clip3(0, 2K1-1, sGx2),
sGy2 = Clip3(0, 2K2-1, sGy2),
sGxGy = Clip3(-2K3-1, 2K3-1-1, sGxGy),
sGxdI = Clip3(-2K4-1, 2K4-1-1, sGxdI), 및
sGydI = Clip3(-2K5-1, 2K5-1-1, sGydI)와 같이 정의되는 클리핑 연산이 뒤따르고,
Clip3(x, min, max)은:
C24.
솔루션들 C1 내지 C23 중 어느 하나에 있어서, 옵티컬 플로우 툴은 양방향 옵티컬 플로우(BDOF) 툴을 포함하는 방법.
C25.
비디오 처리 방법으로서, 비디오의 현재 블록의 서브블록에 대한 하나 이상의 SAD(sum of absolute difference) 계산에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 선택적 인에이블링에 관한 판정을 하는 단계; 및 판정에 기초하여, 현재 블록과 현재 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
C26.
솔루션 C25에 있어서, SAD 계산들은 MR-SAD(mean-removed sum of absolute difference) 계산을 포함하는 방법.
C27.
솔루션 C25 또는 C26에 있어서, SAD 계산들은 현재 블록 내의 미리 결정된 위치들에서의 샘플들에 대해 수행되는 방법.
C28.
솔루션 C25 또는 C26에 있어서, SAD 계산들은 현재 블록의 서브블록 내의 미리 결정된 위치들에서의 샘플들에 대해 수행되는 방법.
C29.
비디오 처리 방법으로서, 비디오의 현재 블록에 대한 일반화된 양방향 예측 개선(GBi) 프로세스의 선택적 인에이블링에 기초하여, 현재 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드의 하나 이상의 파라미터를 도출하는 단계; 및 BDOF 예측 모드의 하나 이상의 파라미터에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
C30.
비디오 처리 방법으로서, 옵티컬 플로우를 사용하는 코딩 모드로 코딩된 비디오의 현재 블록에 대해, 옵티컬 플로우를 사용하는 코딩 모드의 최종 예측 출력의 보정 항에 대해 클리핑 연산을 수행하는 단계; 및 최종 예측 출력에 기초하여, 비디오의 현재 블록과 비트스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
C31.
C30항에 있어서, 보정 항은 범위 [minCorrection, maxCorrection]로 클리핑되고, minCorrection 및 maxCorrection는 정수들인 방법.
C32.
솔루션 C31에 있어서, minCorrection = -32이고 maxCorrection = 32인 방법.
C33.
솔루션 C31에 있어서, minCorrection 및 maxCorrection은 샘플 비트 깊이에 기초하는 방법.
C34.
솔루션 C31에 있어서, minCorrection 및 maxCorrection은 현재의 비디오 블록의 높이 또는 폭에 기초하는 방법.
C35.
솔루션 C31에 있어서, minCorrection 및 maxCorrection은 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 유닛(CU) 또는 코딩 트리 유닛(CTU)에서 시그널링되는 방법.
C36.
솔루션 C30에 있어서, 최종 예측 출력은 범위 [minPred, maxPred]로 클리핑되고, minPred 및 maxPred는 정수들인 방법.
C37.
솔루션 C36에 있어서, minPred = -32이고 maxPred = 32인 방법.
C38.
솔루션 C36에 있어서, midPred 및 maxPred 는 샘플 비트 깊이에 기초하는 방법.
C39.
솔루션 C36에 있어서, midPred 및 maxPred는 현재 비디오 블록의 높이 또는 폭에 기초하는 방법.
C40.
솔루션 C36에 있어서, midPred 및 maxPred는 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 유닛(CU) 또는 코딩 트리 유닛(CTU)에서 시그널링되는 방법.
C41.
솔루션들 C30 내지 C40 중 임의의 것에 있어서, 보정 항은 옵티컬 플로우를 사용하는 코딩 모드에 기초하여 샘플에 대한 도출된 예측 오프셋을 포함하는 방법.
C42.
솔루션들 C25 내지 C41 중 임의의 것에 있어서, 옵티컬 플로우를 사용하는 코딩 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드를 포함하는 방법.
C43.
솔루션들 C1 내지 C42 중 임의의 것에 있어서, 변환은 비트스트림 표현으로부터 현재 블록을 생성하는 방법.
C44.
솔루션들 C1 내지 C42 중 임의의 것에 있어서, 변환은 현재 블록으로부터 비트스트림 표현을 생성하는 방법.
C45.
비디오 시스템 내의 장치로서, 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하고, 명령어들은 프로세서에 의해 실행될 때, 프로세서로 하여금 솔루션들 C1 내지 C44 중 어느 하나에서의 방법을 구현하게 하는 장치.
C46.
비일시적 컴퓨터 판독가능 매체 상에 저장되는 컴퓨터 프로그램 제품으로서, 컴퓨터 프로그램 제품은 솔루션들 C1 내지 C44 중 어느 하나에서의 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
6.
개시된 기술의 예시적인 구현들
도 29는 비디오 처리 장치(2900)의 블록도이다. 장치(2900)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하기 위해 사용될 수 있다. 장치(2900)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(2900)는 하나 이상의 프로세서(2902), 하나 이상의 메모리(2904) 및 비디오 처리 하드웨어(2906)를 포함할 수 있다. 프로세서(들)(2902)는 본 문서에서 설명된 하나 이상의 방법(방법(2800)을 포함하지만 이에 제한되지 않음)을 구현하도록 구성될 수 있다. 메모리(메모리들)(2904)는 본 명세서에 설명된 방법들 및 기법들을 구현하기 위해 사용되는 데이터 및 코드를 저장하기 위해 사용될 수 있다. 비디오 처리 하드웨어(2906)는, 하드웨어 회로에서, 본 문서에 설명된 일부 기법들을 구현하기 위해 사용될 수 있다.
일부 실시예들에서, 비디오 코딩 방법들은 도 29와 관련하여 설명된 바와 같이 하드웨어 플랫폼 상에 구현되는 장치를 사용하여 구현될 수 있다.
개시된 기술의 일부 실시예들은 비디오 처리 툴 또는 모드를 인에이블링하기로 판정 또는 결정을 하는 것을 포함한다. 일례에서, 비디오 처리 툴 또는 모드가 인에이블링될 때, 인코더는 비디오의 블록의 처리에서 툴 또는 모드를 사용하거나 구현할 것이지만, 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정할 필요는 없다. 즉, 비디오의 블록으로부터 비디오의 비트스트림 표현으로의 변환은 비디오 처리 툴 또는 모드가 판정 또는 결정에 기초하여 인에이블링될 때 비디오 처리 툴 또는 모드를 사용할 것이다. 다른 예에서, 비디오 처리 툴 또는 모드가 인에이블링될 때, 디코더는 비트스트림이 비디오 처리 툴 또는 모드에 기초하여 수정되었다는 것을 알고서 비트스트림을 처리할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오의 블록으로의 변환은 판정 또는 결정에 기초하여 인에이블링되었던 비디오 처리 툴 또는 모드를 사용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 처리 툴 또는 모드를 디스에이블링하기로 판정 또는 결정을 하는 것을 포함한다. 일례에서, 비디오 처리 툴 또는 모드가 디스에이블링될 때, 인코더는 비디오의 블록을 비디오의 비트스트림 표현으로 변환할 때 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 처리 툴 또는 모드가 디스에이블링될 때, 디코더는 판정 또는 결정에 기초하여 인에이블링되었던 비디오 처리 툴 또는 모드를 사용하여 비트스트림이 수정되지 않았다는 것을 알고서 비트스트림을 처리할 것이다.
도 30은 본 명세서에 개시된 다양한 기법들이 구현될 수 있는 예시적인 비디오 처리 시스템(3000)을 도시하는 블록도이다. 다양한 구현들은 시스템(3000)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(3000)은 비디오 콘텐츠를 수신하기 위한 입력(3002)을 포함할 수 있다. 비디오 콘텐츠는 미가공(raw) 또는 압축되지 않은 포맷, 예를 들어, 8 또는 10비트 멀티 컴포넌트 픽셀 값들로 수신될 수 있거나, 압축된 또는 인코딩된 포맷일 수 있다. 입력(3002)은 네트워크 인터페이스, 주변장치 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, 수동 광 네트워크(passive optical network)(PON) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(3000)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법을 구현할 수 있는 코딩 컴포넌트(3004)를 포함할 수 있다. 코딩 컴포넌트(3004)는 비디오의 코딩된 표현을 생성하기 위해 입력(3002)으로부터 코딩 컴포넌트(3004)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서, 코딩 기법들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기법들이라고 불린다. 코딩 컴포넌트(3004)의 출력은, 컴포넌트(3006)에 의해 표현된 바와 같이, 접속된 통신을 통해 송신되거나 저장될 수 있다. 입력(3002)에서 수신된 비디오의 저장된 또는 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(3010)로 전송되는 디스플레이가능한 비디오 또는 픽셀 값들을 생성하기 위해 컴포넌트(3008)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자-시청가능 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제로 불린다. 게다가, 어떤 비디오 처리 동작들이 "코딩" 동작들 또는 툴들로 지칭되지만, 코딩 툴들 또는 동작들이 인코더에서 사용되고 코딩의 결과들을 역전시키는 대응하는 디코딩 툴들 또는 동작들이 디코더에 의해 수행될 것임이 이해될 것이다.
주변장치 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 디스플레이포트(Displayport) 등을 포함할 수 있다. 저장 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에 설명된 기법들은, 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 기타의 디바이스들 등의 다양한 전자 디바이스들로 구현될 수 있다.
전술한 것으로부터, 본 개시된 기술의 특정 실시예들은 예시를 위해 여기에 설명되었지만, 다양한 변경들이 본 발명의 범위로부터 벗어나지 않고 이루어질 수 있는 것이 이해될 것이다. 따라서, 본 개시된 기술은, 첨부된 청구범위에 의한 것을 제외하고는 제한되지 않는다.
본 특허 문서에 설명된 기능적 동작들 및 주제의 구현들은 본 명세서에 개시된 구조들과 그 구조적 균등물들, 또는 그들 중 하나 이상의 조합을 포함하는 다양한 시스템들, 디지털 전자 회로로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어로 구현될 수 있다. 본 명세서에 설명된 주제의 구현들은 하나 이상의 컴퓨터 프로그램 제품으로서, 즉, 데이터 처리 장치에 의해, 또는 데이터 처리 장치의 동작을 제어하기 위해, 실행되는 유형의 비일시적 컴퓨터 판독가능 매체 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서, 구현될 수 있다. 컴퓨터 판독가능 매체는 머신 판독가능 저장 디바이스, 머신 판독가능 저장 기판, 메모리 디바이스, 머신 판독가능 전파 신호(propagated signal)를 발생시키는 물질의 조성, 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 처리 유닛" 또는 "데이터 처리 장치"라는 용어는 예로서, 프로그램가능 프로세서, 컴퓨터, 또는 다중 프로세서들 또는 컴퓨터들을 포함하는 데이터를 처리하기 위한 모든 장치들, 디바이스들 및 머신들을 포괄한다. 장치는 하드웨어 이외에도 대상(in question) 컴퓨터 프로그램용 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어를 구성하는 코드, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 포함할 수 있다.
(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려진) 컴퓨터 프로그램은 컴파일되거나 해석된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있고, 이는 자립형(stand-alone) 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경의 사용에 적절한 기타 유닛으로서 포함하는 임의의 형태로 배치될 수 있다. 컴퓨터 프로그램은, 파일 시스템 내의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부분에, 대상(in question) 프로그램 전용인 단일 파일에, 또는 다수의 통합 파일(coordinated file)(예를 들어, 하나 이상의 모듈, 서브 프로그램(sub program)들, 또는 코드 부분(portion of code)들을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서, 또는 하나의 사이트에 위치되어 있거나, 다수의 사이트에 걸쳐 분산되어 통신 네트워크에 의해 접속되는 다수의 컴퓨터 상에서 실행되도록 배치될 수 있다.
본 명세서에 설명된 프로세스들 및 논리 흐름들은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램가능 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름들이 또한 특수 목적 논리 회로, 예를 들면 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고 장치는 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램을 실행하는데 적합한 프로세서는, 예를 들어, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터 중 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들과 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은, 명령어들을 실행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어, 자기, 광자기 디스크들 또는 광학 디스크들을 포함하거나, 그들로부터 데이터를 수신하거나 그들로 데이터를 전송하거나, 둘 다를 행하도록 동작적으로 결합될 것이다. 그러나, 컴퓨터가 이러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들을 예로서 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 그에 포함될 수 있다.
본 명세서는 도면과 함께 단지 예시적인 것으로 간주되며, 예시적인 것은 예를 의미하는 것으로 의도된다. 본 명세서에 사용된 바와 같이, "또는"의 사용은, 문맥이 명백하게 달리 나타내지 않는 한, "및/또는"을 포함하는 것으로 의도된다.
본 특허 문서는 많은 세부사항들을 포함하지만, 이 세부사항들은 임의의 발명의 범위 또는 청구할 수 있는 대상의 범위에 대한 한정들로서 해석되어서는 안 되며, 오히려 특정 발명들의 특정 실시예들로 특정될 수 있는 특징들에 대한 설명들로서 해석되어야 한다. 별개의 실시예들의 문맥에서 본 특허 문서에서 설명된 소정 특징들은 또한, 단일의 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 문맥에서 설명된 여러 가지 특징들이 또한 다수의 실시예에서 별개로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 또한, 특징들이 특정 조합들로 작동하는 것으로서 전술되고 심지어는 처음에는 이렇게 청구될 수 있지만, 어떤 경우들에서는 청구된 조합으로부터의 하나 이상의 특징이 조합으로부터 제외될(excised) 수 있으며, 청구된 조합은 하위조합 또는 하위조합의 변형에 대한 것일 수 있다.
유사하게, 도면들에는 동작들이 특정 순서로 도시되지만, 이것은 바람직한 결과들을 달성하기 위해 그러한 동작들이 도시된 특정 순서로 또는 순차적으로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안 된다. 또한, 본 특허 문서에서 설명된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
단지 몇 개의 구현 및 예들만이 설명되지만, 본 특허 문서에서 설명되고 예시된 내용에 기초하여 다른 구현들, 개선들 및 변형들이 이루어질 수 있다.
Claims (29)
- 비디오 데이터 처리 방법으로서,
비디오의 제1 비디오 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드가 적용될 수 있는지를 결정하는 단계 - 상기 제1 예측 모드에서, 상기 제1 비디오 블록의 예측 샘플들은 상이한 방향들에서의 그래디언트들에 적어도 기초하여 리파인됨(refined) -; 및
상기 결정에 기초하여, 상기 제1 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환을 수행하는 단계
를 포함하는, 방법. - 제1항에 있어서,
제1 참조 픽처(R0) 및 제2 참조 픽처(R1)는 상기 제1 비디오 블록을 포함하는 현재 픽처와 연관되고, τ0은 상기 현재 픽처의 픽처 순서 카운트와 상기 제1 참조 픽처의 픽처 순서 카운트 사이의 차이(τ0=POC(current)-POC(R0))이고, τ1은 상기 제2 참조 픽처의 픽처 순서 카운트와 상기 현재 픽처의 픽처 순서 카운트 사이의 차이(τ1=POC(R1)-POC(current))인, 방법. - 제2항에 있어서,
abs(abs(τ0) - abs(τ1)) ≥ TO인 것에 응답하여 상기 제1 예측 모드를 인에이블링하는 것을 억제하는 단계를 더 포함하고, T0는 정수이고, T0는 0보다 큰, 방법. - 제2항에 있어서,
abs(τ0) ≥ abs(τ1)) × TO 또는 abs(τ1) ≥ abs(τ0) × TO인 것에 응답하여 상기 제1 예측 모드를 인에이블링하는 것을 억제하는 단계를 더 포함하고, T0는 정수인, 방법. - 제4항에 있어서,
TO = 1인, 방법. - 제2항 내지 제5항 중 어느 한 항에 있어서,
T0는 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 타일 그룹 헤더, 타일, 코딩 유닛(CU) 또는 코딩 트리 유닛(CTU)에서 시그널링되는, 방법. - 제1항에 있어서,
상기 제1 예측 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드인, 방법. - 제1항 내지 제7항 중 어느 한 항에 있어서,
상기 비디오의 제2 비디오 블록에 대해 옵티컬 플로우를 사용하는 코딩 모드가 인에이블링되는지를 결정하는 단계;
제1 보간 필터링 동작 대신에 패딩 동작에 의해, 상기 제2 비디오 블록의 하나 이상의 외부 샘플을 도출하는 단계;
상기 제2 비디오 블록에 대한 제2 보간 필터링 동작을 수행하는 단계; 및
상기 패딩 동작 및 상기 제2 보간 필터링 동작에 기초하여, 상기 비디오의 상기 제2 비디오 블록과 상기 비트스트림 사이의 제2 변환을 수행하는 단계
를 더 포함하는, 방법. - 제8항에 있어서,
상기 제1 보간 필터링 동작에서 쌍선형 필터가 사용되는, 방법. - 제8항 또는 제9항에 있어서,
8-탭 보간 필터만이 상기 제2 비디오 블록의 루마 컴포넌트에 대한 상기 제2 보간 필터링 동작에서 사용되는, 방법. - 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 제2 비디오 블록의 크기는 M×N이고, 그래디언트 계산에 의해 요구되는 제1 샘플 수는 (M+G)×(N+G)이고, 상기 제2 비디오 블록의 루마 컴포넌트에 대해 상기 제2 보간 필터링 동작에서 사용되는 보간 필터는 L개의 탭을 포함하며, 상기 옵티컬 플로우를 사용하는 코딩 모드를 인에이블링하지 않는 상기 제2 보간 필터링 동작에 의해 요구되는 제2 샘플 수는 (M+G+L-1)×(N+G+L-1)이며, 상기 옵티컬 플로우를 사용하는 코딩 모드를 인에이블링하는 상기 제2 보간 필터링 동작에 의해 요구되는 제3 샘플 수는 (M+k+L-1)×(N+k+L-1)이며, M, N, G 및 L은 양의 정수들이고, k는 G 미만의 정수인, 방법.
- 제11항에 있어서,
상기 제2 샘플 수와 상기 제3 샘플 수 사이의 차이를 포함하는 제4 샘플 수가 상기 패딩 동작에서 패딩되는, 방법. - 제11항 또는 제12항에 있어서,
L = 8이고 G = 2인, 방법. - 제11항 내지 제13항 중 어느 한 항에 있어서,
k = 0인, 방법. - 제11항 내지 제14항 중 어느 한 항에 있어서,
M은 8 또는 16과 동일하고, N은 8 또는 16과 동일한, 방법. - 제8항 내지 제15항 중 어느 한 항에 있어서,
상기 옵티컬 플로우를 사용하는 코딩 모드는 양방향 옵티컬 플로우(BDOF) 예측 모드를 포함하는, 방법. - 제1항 내지 제16항 중 어느 한 항에 있어서,
상기 비디오의 제3 비디오 블록과 상기 비디오의 비트스트림 사이의 제3 변환에 대해, 상기 제3 비디오 블록의 서브-블록에 대한 2개의 대응하는 영역을 결정하는 단계 - 상기 2개의 대응하는 영역은 각각 상기 제3 비디오 블록의 2개의 참조 픽처에 있음 -;
상기 2개의 대응하는 영역의 부분 샘플들에 기초하여 절대 차이 합(sum of absolute difference; SAD)을 도출하는 단계;
상기 SAD가 제1 임계값 이상인 것에 응답하여 제2 예측 모드가 상기 서브-블록에 적용되는 것으로 결정하는 단계 - 상기 제2 예측 모드는 옵티컬 플로우-기반 인터 예측 모드임 -; 및
상기 서브-블록의 예측 샘플들 및 시프트 값 S를 갖는 산술 시프팅 연산에 기초하여 상이한 방향들에서의 그래디언트 값들을 도출하는 단계
를 포함하고, S는 정수이고 S는 4와 동일하지 않은, 방법. - 제17항에 있어서,
S는 6과 동일한, 방법. - 제17항 또는 제18항에 있어서, 상기 2개의 대응하는 영역 각각에서 매 N개의 행마다 한 행에 있는 샘플들이 상기 SAD를 도출하는 데 사용되고, N은 1보다 큰 정수인, 방법.
- 제17항 내지 제19항 중 어느 한 항에 있어서, 상기 2개의 대응하는 영역의 상기 부분 샘플들의 위치들은 미리 결정되는, 방법.
- 제17항 내지 제20항 중 어느 한 항에 있어서,
상기 그래디언트 값들에 기초하여 수평 모션 오프셋 및 수직 모션 오프셋을 도출하는 단계;
상기 수평 모션 오프셋, 상기 수직 모션 오프셋들, 및 상기 그래디언트 값들에 기초하여 예측 리파인먼트를 도출하는 단계;
상기 예측 리파인먼트와 상기 예측 샘플들의 합에 기초하여 최종 예측 샘플들을 도출하는 단계 - 상기 예측 리파인먼트와 상기 예측 샘플들의 합에 클리핑 연산이 적용됨 -; 및
상기 최종 예측 샘플들에 기초하여 상기 제3 변환을 수행하는 단계
를 더 포함하는, 방법. - 제21항에 있어서, 상기 클리핑 연산은 범위 [minPred, maxPred] 내에 있고, 상기 maxPred는 상기 현재 블록의 샘플 비트-깊이에 기초하고, 상기 minPred 및 상기 maxPred는 정수들인, 방법.
- 제17항 내지 제20항 중 어느 한 항에 있어서, 상기 예측 샘플들은 필터링 동작 및 패딩 프로세스에 기초하여 유도되는, 방법.
- 제23항에 있어서, 8-탭 보간 필터만이 상기 필터링 동작에서 사용되는, 방법.
- 제1항 내지 제24항 중 어느 한 항에 있어서, 상기 제1 변환은 상기 제1 비디오 블록을 상기 비트스트림으로 인코딩하는 것을 포함하는, 방법.
- 제1항 내지 제24항 중 어느 한 항에 있어서, 상기 제1 변환은 상기 비트스트림으로부터 상기 제1 비디오 블록을 디코딩하는 것을 포함하는, 방법.
- 프로세서 및 명령어들을 갖는 비-일시적 메모리를 포함하는 비디오 데이터를 처리하기 위한 장치로서, 상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
비디오의 제1 비디오 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드가 적용될 수 있는지를 결정하고 - 상기 제1 예측 모드에서, 상기 제1 비디오 블록의 예측 샘플들은 상이한 방향들에서의 그래디언트들에 적어도 기초하여 리파인됨 -; 및
상기 결정에 기초하여, 상기 제1 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환을 수행하게 하는, 장치. - 명령어들을 저장하는 비-일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은 프로세서로 하여금:
비디오의 제1 비디오 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드가 적용될 수 있는지를 결정하고 - 상기 제1 예측 모드에서, 상기 제1 비디오 블록의 예측 샘플들은 상이한 방향들에서의 그래디언트들에 적어도 기초하여 리파인됨 -; 및
상기 결정에 기초하여, 상기 제1 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환을 수행하게 하는, 비-일시적 컴퓨터 판독가능 저장 매체. - 비디오 프로세싱 장치에 의해 수행되는 방법에 의해 생성되는 비디오의 비트스트림을 저장하는 비-일시적 컴퓨터 판독가능 기록 매체로서, 상기 방법은:
비디오의 제1 비디오 블록의 픽처와 연관된 하나 이상의 픽처 순서 카운트(POC) 파라미터에 기초하여, 제1 예측 모드가 적용될 수 있는지를 결정하는 단계 - 상기 제1 예측 모드에서, 상기 제1 비디오 블록의 예측 샘플들은 상이한 방향들에서의 그래디언트들에 적어도 기초하여 리파인됨 -; 및
상기 결정에 기초하여, 상기 비디오의 비트스트림을 생성하는 단계
를 포함하는, 비-일시적 컴퓨터 판독가능 기록 매체.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNPCT/CN2018/113928 | 2018-11-05 | ||
CN2018113928 | 2018-11-05 | ||
PCT/CN2019/115697 WO2020094000A1 (en) | 2018-11-05 | 2019-11-05 | Interpolation for inter prediction with refinement |
KR1020217012658A KR102607097B1 (ko) | 2018-11-05 | 2019-11-05 | 리파인먼트를 이용한 인터 예측을 위한 보간 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012658A Division KR102607097B1 (ko) | 2018-11-05 | 2019-11-05 | 리파인먼트를 이용한 인터 예측을 위한 보간 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230158645A true KR20230158645A (ko) | 2023-11-20 |
Family
ID=70610813
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012658A KR102607097B1 (ko) | 2018-11-05 | 2019-11-05 | 리파인먼트를 이용한 인터 예측을 위한 보간 |
KR1020237038844A KR20230158645A (ko) | 2018-11-05 | 2019-11-05 | 리파인먼트를 이용한 인터 예측을 위한 보간 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217012658A KR102607097B1 (ko) | 2018-11-05 | 2019-11-05 | 리파인먼트를 이용한 인터 예측을 위한 보간 |
Country Status (9)
Country | Link |
---|---|
US (6) | US11064206B2 (ko) |
EP (2) | EP4300965A3 (ko) |
JP (2) | JP7231727B2 (ko) |
KR (2) | KR102607097B1 (ko) |
CN (4) | CN112970259B (ko) |
BR (1) | BR112021008251A2 (ko) |
MX (1) | MX2021004715A (ko) |
SG (1) | SG11202104480RA (ko) |
WO (3) | WO2020094000A1 (ko) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019234606A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between ibc and atmvp |
CN110620929B (zh) | 2018-06-19 | 2023-04-18 | 北京字节跳动网络技术有限公司 | 没有运动矢量预测截断的选择的运动矢量差精度 |
KR20210022617A (ko) | 2018-06-21 | 2021-03-03 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 칼라 컴포넌트 간의 서브 블록 mv 상속 |
TWI739120B (zh) | 2018-06-21 | 2021-09-11 | 大陸商北京字節跳動網絡技術有限公司 | 合併仿射模式與非合併仿射模式的統一拘束 |
TWI719519B (zh) | 2018-07-02 | 2021-02-21 | 大陸商北京字節跳動網絡技術有限公司 | 對於dmvr的塊尺寸限制 |
TW202025749A (zh) | 2018-09-08 | 2020-07-01 | 大陸商北京字節跳動網絡技術有限公司 | 計算運動向量預測值 |
CN110933427B (zh) | 2018-09-19 | 2023-05-12 | 北京字节跳动网络技术有限公司 | 仿射模式编码的模式相关自适应运动矢量分辨率 |
CN110944206B (zh) | 2018-09-23 | 2023-05-26 | 北京字节跳动网络技术有限公司 | 涉及仿射运动的一般应用 |
WO2020058950A1 (en) | 2018-09-23 | 2020-03-26 | Beijing Bytedance Network Technology Co., Ltd. | Block level motion prediction |
WO2020058955A1 (en) | 2018-09-23 | 2020-03-26 | Beijing Bytedance Network Technology Co., Ltd. | Multiple-hypothesis affine mode |
CN110944170B (zh) | 2018-09-24 | 2023-05-02 | 北京字节跳动网络技术有限公司 | 扩展Merge预测 |
CN111083485A (zh) | 2018-10-22 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 仿射模式的运动信息的利用 |
CN111083492B (zh) | 2018-10-22 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 双向光流中的梯度计算 |
CN112970259B (zh) | 2018-11-05 | 2024-06-28 | 北京字节跳动网络技术有限公司 | 视频处理中具有细化的帧间预测 |
US11197005B2 (en) * | 2018-11-08 | 2021-12-07 | Qualcomm Incorporated | Cross-component prediction for video coding |
EP3861723A4 (en) | 2018-11-10 | 2022-04-20 | Beijing Bytedance Network Technology Co., Ltd. | ROUNDS IN PAIRS OF MEDIUM CANDIDATE BILLS |
CN111436228B (zh) | 2018-11-12 | 2024-06-21 | 北京字节跳动网络技术有限公司 | 组合帧间-帧内预测的简化 |
WO2020098803A1 (en) | 2018-11-15 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Harmonization between affine mode and other inter coding tools |
WO2020098813A1 (en) | 2018-11-16 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Usage for history-based affine parameters |
CN113016185B (zh) | 2018-11-17 | 2024-04-05 | 北京字节跳动网络技术有限公司 | 以运动矢量差分模式控制Merge |
CN113170171B (zh) | 2018-11-20 | 2024-04-12 | 北京字节跳动网络技术有限公司 | 组合帧间帧内预测模式的预测细化 |
CN117319644A (zh) | 2018-11-20 | 2023-12-29 | 北京字节跳动网络技术有限公司 | 基于部分位置的差计算 |
WO2020122130A1 (ja) * | 2018-12-12 | 2020-06-18 | シャープ株式会社 | 予測画像生成装置、動画像復号装置、動画像符号化装置および予測画像生成方法 |
EP3868107A4 (en) | 2018-12-21 | 2021-12-15 | Beijing Bytedance Network Technology Co. Ltd. | MOTION VECTOR ACCURACY IN INTERACTING WITH MOTION VECTOR DIFFERENCE MODE |
US20220070447A1 (en) * | 2018-12-28 | 2022-03-03 | Sony Group Corporation | Image processing device and method |
WO2020143774A1 (en) | 2019-01-10 | 2020-07-16 | Beijing Bytedance Network Technology Co., Ltd. | Merge with mvd based on geometry partition |
JP2022517911A (ja) * | 2019-01-14 | 2022-03-11 | インターデジタル ヴイシー ホールディングス, インコーポレイテッド | 重み付け予測に適応された双方向オプティカルフローによる映像符号化及び復号の方法及び装置 |
CN113412623A (zh) | 2019-01-31 | 2021-09-17 | 北京字节跳动网络技术有限公司 | 记录仿射模式自适应运动矢量分辨率的上下文 |
EP3909239A4 (en) | 2019-02-14 | 2022-04-20 | Beijing Bytedance Network Technology Co., Ltd. | SELECTIVE SIZE APPLICATION OF DECODER SIDE REFINING TOOLS |
WO2020169109A1 (en) | 2019-02-22 | 2020-08-27 | Beijing Bytedance Network Technology Co., Ltd. | Sub-table for history-based affine mode |
JP7332703B2 (ja) * | 2019-02-22 | 2023-08-23 | 華為技術有限公司 | クロマサブブロックのアフィンベースのインター予測のための方法及び装置 |
US11632563B2 (en) * | 2019-02-22 | 2023-04-18 | Qualcomm Incorporated | Motion vector derivation in video coding |
WO2020177683A1 (en) | 2019-03-03 | 2020-09-10 | Beijing Bytedance Network Technology Co., Ltd. | Enabling bio based on the information in the picture header |
KR102635518B1 (ko) | 2019-03-06 | 2024-02-07 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 변환된 단예측 후보의 사용 |
CA3131286C (en) | 2019-03-08 | 2024-06-18 | Beijing Bytedance Network Technology Co., Ltd. | Constraints on model-based reshaping in video processing |
EP3925220A4 (en) | 2019-03-17 | 2022-06-29 | Beijing Bytedance Network Technology Co., Ltd. | Calculation of prediction refinement based on optical flow |
WO2020200270A1 (en) | 2019-04-02 | 2020-10-08 | Beijing Bytedance Network Technology Co., Ltd. | Bidirectional optical flow based video coding and decoding |
JP7307192B2 (ja) | 2019-04-02 | 2023-07-11 | 北京字節跳動網絡技術有限公司 | デコーダ側の動きベクトルの導出 |
WO2020211869A1 (en) | 2019-04-18 | 2020-10-22 | Beijing Bytedance Network Technology Co., Ltd. | Parameter derivation in cross component mode |
WO2020211864A1 (en) | 2019-04-19 | 2020-10-22 | Beijing Bytedance Network Technology Co., Ltd. | Region based gradient calculation in different motion vector refinements |
WO2020211866A1 (en) | 2019-04-19 | 2020-10-22 | Beijing Bytedance Network Technology Co., Ltd. | Applicability of prediction refinement with optical flow process |
CN113711609B (zh) | 2019-04-19 | 2023-12-01 | 北京字节跳动网络技术有限公司 | 利用光流的预测细化过程中的增量运动矢量 |
CN113711610B (zh) | 2019-04-23 | 2024-04-16 | 北京字节跳动网络技术有限公司 | 降低跨分量依赖性的方法 |
JP7407206B2 (ja) | 2019-05-08 | 2023-12-28 | 北京字節跳動網絡技術有限公司 | クロスコンポーネントコーディングの適用条件 |
CN110225339A (zh) * | 2019-05-10 | 2019-09-10 | 上海德衡数据科技有限公司 | 一种hevc视频序列编解码加速方法 |
JP7522135B2 (ja) * | 2019-05-11 | 2024-07-24 | 北京字節跳動網絡技術有限公司 | 複数のイントラ符号化方法の相互作用 |
WO2020228660A1 (en) | 2019-05-11 | 2020-11-19 | Beijing Bytedance Network Technology Co., Ltd. | Selective use of coding tools in video processing |
WO2020228836A1 (en) | 2019-05-16 | 2020-11-19 | Beijing Bytedance Network Technology Co., Ltd. | Sub-region based determination of motion information refinement |
CN113906759A (zh) | 2019-05-21 | 2022-01-07 | 北京字节跳动网络技术有限公司 | 子块Merge模式中基于语法的运动候选推导 |
EP3985980A4 (en) | 2019-06-14 | 2023-06-28 | Lg Electronics Inc. | Image decoding method and device for deriving weight index information for generation of prediction sample |
CN113613021A (zh) * | 2019-06-21 | 2021-11-05 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
CN113994697A (zh) | 2019-06-22 | 2022-01-28 | 北京字节跳动网络技术有限公司 | 色度残差缩放的语法元素 |
CN114073090A (zh) * | 2019-07-01 | 2022-02-18 | 交互数字Vc控股法国公司 | 仿射运动补偿的双向光流细化 |
JP7460748B2 (ja) | 2019-07-07 | 2024-04-02 | 北京字節跳動網絡技術有限公司 | クロマ残差スケーリングのシグナリング |
US11272203B2 (en) | 2019-07-23 | 2022-03-08 | Tencent America LLC | Method and apparatus for video coding |
WO2021018031A1 (en) | 2019-07-27 | 2021-02-04 | Beijing Bytedance Network Technology Co., Ltd. | Restrictions of usage of tools according to reference picture types |
JP2022552511A (ja) | 2019-10-12 | 2022-12-16 | 北京字節跳動網絡技術有限公司 | ビデオコーディングツールのための高レベルシンタックス |
CN114556918A (zh) | 2019-10-12 | 2022-05-27 | 北京字节跳动网络技术有限公司 | 细化视频编解码工具的使用和信令 |
EP4032290A4 (en) | 2019-10-18 | 2022-11-30 | Beijing Bytedance Network Technology Co., Ltd. | SYNTAX CONSTRAINTS IN REPORTING SUBPICTURE PARAMETER SETS |
US11425405B2 (en) * | 2019-11-15 | 2022-08-23 | Qualcomm Incorporated | Cross-component adaptive loop filter in video coding |
BR112022012807A2 (pt) | 2019-12-27 | 2022-09-27 | Beijing Bytedance Network Tech Co Ltd | Método de processamento de vídeo, aparelho para processar dados de vídeo e meios não transitórios legíveis por computador |
WO2021204137A1 (en) * | 2020-04-07 | 2021-10-14 | Beijing Bytedance Network Technology Co., Ltd. | Clipping operation for reference picture wrap around |
EP4118825A4 (en) | 2020-04-09 | 2023-08-09 | Beijing Bytedance Network Technology Co., Ltd. | UNLOCKING SIGNALING IN VIDEO CODING |
CN115486064A (zh) | 2020-04-10 | 2022-12-16 | 抖音视界有限公司 | 标头语法元素和自适应参数集的使用 |
WO2021209061A1 (en) | 2020-04-17 | 2021-10-21 | Beijing Bytedance Network Technology Co., Ltd. | Presence of adaptation parameter set units |
WO2021222036A1 (en) | 2020-04-26 | 2021-11-04 | Bytedance Inc. | Conditional signaling of video coding syntax elements |
US20220201315A1 (en) * | 2020-12-22 | 2022-06-23 | Qualcomm Incorporated | Multi-pass decoder-side motion vector refinement |
US20230336772A1 (en) * | 2022-04-18 | 2023-10-19 | Tencent America LLC | Mmvd candidate refinement methods |
WO2023250115A1 (en) * | 2022-06-23 | 2023-12-28 | Beijing Dajia Internet Information Technology Co., Ltd | Method and apparatus for cross-component prediction for video coding |
WO2024006409A1 (en) * | 2022-06-29 | 2024-01-04 | Beijing Dajia Internet Information Technology Co., Ltd | Method and apparatus for cross-component prediction for video coding |
WO2024081291A1 (en) * | 2022-10-12 | 2024-04-18 | Beijing Dajia Internet Information Technology Co., Ltd | Method and apparatus for cross-component prediction for video coding |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101768207B1 (ko) | 2010-01-19 | 2017-08-16 | 삼성전자주식회사 | 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치 |
US9313519B2 (en) * | 2011-03-11 | 2016-04-12 | Google Technology Holdings LLC | Interpolation filter selection using prediction unit (PU) size |
JP5649523B2 (ja) | 2011-06-27 | 2015-01-07 | 日本電信電話株式会社 | 映像符号化方法,装置,映像復号方法,装置およびそれらのプログラム |
US20130177084A1 (en) | 2012-01-10 | 2013-07-11 | Qualcomm Incorporated | Motion vector scaling in video coding |
US10200709B2 (en) | 2012-03-16 | 2019-02-05 | Qualcomm Incorporated | High-level syntax extensions for high efficiency video coding |
US9420280B2 (en) * | 2012-06-08 | 2016-08-16 | Qualcomm Incorporated | Adaptive upsampling filters |
US9538180B2 (en) | 2012-12-17 | 2017-01-03 | Qualcomm Incorporated | Motion vector prediction in video coding |
US9374581B2 (en) | 2013-01-07 | 2016-06-21 | Qualcomm Incorporated | Signaling of picture order count to timing information relations for video timing in video coding |
US9380305B2 (en) | 2013-04-05 | 2016-06-28 | Qualcomm Incorporated | Generalized residual prediction in high-level syntax only SHVC and signaling and management thereof |
US9900605B2 (en) * | 2013-10-14 | 2018-02-20 | Qualcomm Incorporated | Device and method for scalable coding of video information |
US10880565B2 (en) | 2014-03-24 | 2020-12-29 | Qualcomm Incorporated | Use of specific HEVC SEI messages for multi-layer video codecs |
US9918105B2 (en) | 2014-10-07 | 2018-03-13 | Qualcomm Incorporated | Intra BC and inter unification |
US10055674B2 (en) * | 2015-03-20 | 2018-08-21 | Texas Instruments Incorporated | Confidence estimation for optical flow |
EP3332551A4 (en) * | 2015-09-02 | 2019-01-16 | MediaTek Inc. | METHOD AND APPARATUS FOR MOVEMENT COMPENSATION FOR VIDEO CODING BASED ON TECHNIQUES FOR OPERATIONAL RADIO RADIATION |
US10375413B2 (en) * | 2015-09-28 | 2019-08-06 | Qualcomm Incorporated | Bi-directional optical flow for video coding |
US10368083B2 (en) | 2016-02-15 | 2019-07-30 | Qualcomm Incorporated | Picture order count based motion vector pruning |
US10798385B2 (en) * | 2016-04-25 | 2020-10-06 | Lg Electronics Inc. | Inter-prediction method and apparatus in image coding system |
WO2017197146A1 (en) * | 2016-05-13 | 2017-11-16 | Vid Scale, Inc. | Systems and methods for generalized multi-hypothesis prediction for video coding |
US10560712B2 (en) * | 2016-05-16 | 2020-02-11 | Qualcomm Incorporated | Affine motion prediction for video coding |
US20170374369A1 (en) * | 2016-06-24 | 2017-12-28 | Mediatek Inc. | Methods and Apparatuses of Decoder Side Intra Mode Derivation |
US10390015B2 (en) * | 2016-08-26 | 2019-08-20 | Qualcomm Incorporated | Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction |
US10462462B2 (en) | 2016-09-29 | 2019-10-29 | Qualcomm Incorporated | Motion vector difference coding technique for video coding |
US11356693B2 (en) | 2016-09-29 | 2022-06-07 | Qualcomm Incorporated | Motion vector coding for video coding |
US10341659B2 (en) * | 2016-10-05 | 2019-07-02 | Qualcomm Incorporated | Systems and methods of switching interpolation filters |
WO2018097078A1 (ja) * | 2016-11-22 | 2018-05-31 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法及び復号方法 |
WO2018097700A1 (ko) * | 2016-11-28 | 2018-05-31 | 한국전자통신연구원 | 필터링을 위한 방법 및 장치 |
CN116320494A (zh) * | 2016-11-28 | 2023-06-23 | 韩国电子通信研究院 | 用于滤波的方法和装置 |
WO2018113658A1 (en) | 2016-12-22 | 2018-06-28 | Mediatek Inc. | Method and apparatus of motion refinement for video coding |
US10931969B2 (en) | 2017-01-04 | 2021-02-23 | Qualcomm Incorporated | Motion vector reconstructions for bi-directional optical flow (BIO) |
US20180199057A1 (en) * | 2017-01-12 | 2018-07-12 | Mediatek Inc. | Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding |
US10701366B2 (en) * | 2017-02-21 | 2020-06-30 | Qualcomm Incorporated | Deriving motion vector information at a video decoder |
US10523964B2 (en) | 2017-03-13 | 2019-12-31 | Qualcomm Incorporated | Inter prediction refinement based on bi-directional optical flow (BIO) |
CN110476424B (zh) | 2017-03-16 | 2022-03-04 | 联发科技股份有限公司 | 一种视频编解码方法及装置 |
US10595035B2 (en) * | 2017-03-22 | 2020-03-17 | Qualcomm Incorporated | Constraining motion vector information derived by decoder-side motion vector derivation |
US10491917B2 (en) * | 2017-03-22 | 2019-11-26 | Qualcomm Incorporated | Decoder-side motion vector derivation |
WO2018199468A1 (ko) * | 2017-04-24 | 2018-11-01 | 에스케이텔레콤 주식회사 | 움직임 보상을 위한 옵티컬 플로우 추정 방법 및 장치 |
WO2018230493A1 (ja) * | 2017-06-14 | 2018-12-20 | シャープ株式会社 | 動画像復号装置、動画像符号化装置、予測画像生成装置及び動きベクトル導出装置 |
KR102653715B1 (ko) | 2017-07-03 | 2024-04-01 | 브이아이디 스케일, 인크. | 양방향 광학 흐름에 기반한 모션 보상 예측 |
US11297344B2 (en) | 2017-08-29 | 2022-04-05 | SK Telecom., Ltd. | Motion compensation method and device using bi-directional optical flow |
US10986360B2 (en) * | 2017-10-16 | 2021-04-20 | Qualcomm Incorproated | Various improvements to FRUC template matching |
US11750832B2 (en) | 2017-11-02 | 2023-09-05 | Hfi Innovation Inc. | Method and apparatus for video coding |
US20190141320A1 (en) | 2017-11-07 | 2019-05-09 | Qualcomm Incorporated | Enhanced reference picture management in video coding |
US11153599B2 (en) * | 2018-06-11 | 2021-10-19 | Mediatek Inc. | Method and apparatus of bi-directional optical flow for video coding |
EP3854089A1 (en) * | 2018-09-21 | 2021-07-28 | Vid Scale, Inc. | Complexity reduction and bit-width control for bi-directional optical flow |
CN112970259B (zh) | 2018-11-05 | 2024-06-28 | 北京字节跳动网络技术有限公司 | 视频处理中具有细化的帧间预测 |
-
2019
- 2019-11-05 CN CN201980072654.6A patent/CN112970259B/zh active Active
- 2019-11-05 EP EP23203581.6A patent/EP4300965A3/en active Pending
- 2019-11-05 CN CN202311458374.3A patent/CN117241017A/zh active Pending
- 2019-11-05 CN CN201980072533.1A patent/CN112997485A/zh active Pending
- 2019-11-05 BR BR112021008251-4A patent/BR112021008251A2/pt unknown
- 2019-11-05 WO PCT/CN2019/115697 patent/WO2020094000A1/en unknown
- 2019-11-05 MX MX2021004715A patent/MX2021004715A/es unknown
- 2019-11-05 SG SG11202104480RA patent/SG11202104480RA/en unknown
- 2019-11-05 WO PCT/CN2019/115695 patent/WO2020093999A1/en active Application Filing
- 2019-11-05 WO PCT/CN2019/115722 patent/WO2020094010A1/en active Application Filing
- 2019-11-05 KR KR1020217012658A patent/KR102607097B1/ko active IP Right Grant
- 2019-11-05 EP EP19883112.5A patent/EP3861731A4/en active Pending
- 2019-11-05 JP JP2021523358A patent/JP7231727B2/ja active Active
- 2019-11-05 KR KR1020237038844A patent/KR20230158645A/ko active Application Filing
- 2019-11-05 CN CN201980072653.1A patent/CN112970261A/zh active Pending
-
2020
- 2020-08-20 US US16/998,406 patent/US11064206B2/en active Active
- 2020-08-28 US US17/005,483 patent/US11089310B2/en active Active
-
2021
- 2021-02-04 US US17/167,169 patent/US20210160511A1/en not_active Abandoned
- 2021-06-14 US US17/346,568 patent/US11706421B2/en active Active
- 2021-10-19 US US17/505,227 patent/US11902535B2/en active Active
-
2023
- 2023-02-15 JP JP2023021775A patent/JP2023062073A/ja active Pending
- 2023-11-06 US US18/502,646 patent/US20240089464A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR102607097B1 (ko) | 2023-11-29 |
US20200382795A1 (en) | 2020-12-03 |
WO2020094010A1 (en) | 2020-05-14 |
JP2023062073A (ja) | 2023-05-02 |
CN112970261A (zh) | 2021-06-15 |
EP3861731A1 (en) | 2021-08-11 |
EP3861731A4 (en) | 2021-11-24 |
CN112970259A (zh) | 2021-06-15 |
US20210160511A1 (en) | 2021-05-27 |
BR112021008251A2 (pt) | 2021-08-03 |
WO2020094000A1 (en) | 2020-05-14 |
CN112997485A (zh) | 2021-06-18 |
US20200396453A1 (en) | 2020-12-17 |
MX2021004715A (es) | 2021-06-04 |
US20220038714A1 (en) | 2022-02-03 |
JP2022506161A (ja) | 2022-01-17 |
US20240089464A1 (en) | 2024-03-14 |
US11089310B2 (en) | 2021-08-10 |
US20220086458A1 (en) | 2022-03-17 |
EP4300965A2 (en) | 2024-01-03 |
WO2020093999A1 (en) | 2020-05-14 |
CN117241017A (zh) | 2023-12-15 |
US11706421B2 (en) | 2023-07-18 |
JP7231727B2 (ja) | 2023-03-01 |
US11902535B2 (en) | 2024-02-13 |
CN112970259B (zh) | 2024-06-28 |
SG11202104480RA (en) | 2021-05-28 |
US11064206B2 (en) | 2021-07-13 |
EP4300965A3 (en) | 2024-01-17 |
KR20210084474A (ko) | 2021-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102607097B1 (ko) | 리파인먼트를 이용한 인터 예측을 위한 보간 | |
KR102613889B1 (ko) | 적응적 움직임 벡터 해상도를 갖는 움직임 벡터 수정 | |
US11134268B2 (en) | Simplified coding of generalized bi-directional index | |
US11470341B2 (en) | Interaction between different DMVD models | |
US11778170B2 (en) | Temporal gradient calculations in bio | |
WO2020211864A1 (en) | Region based gradient calculation in different motion vector refinements | |
WO2020211866A1 (en) | Applicability of prediction refinement with optical flow process | |
CN110662077B (zh) | 用于视频编解码的对称性双向预测模式 | |
WO2020156525A1 (en) | Multiple syntax elements for adaptive motion vector resolution | |
RU2808586C2 (ru) | Интерполяция для внешнего предсказания с уточнением |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent |