KR20240005178A - 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용 - Google Patents

적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용 Download PDF

Info

Publication number
KR20240005178A
KR20240005178A KR1020237044469A KR20237044469A KR20240005178A KR 20240005178 A KR20240005178 A KR 20240005178A KR 1020237044469 A KR1020237044469 A KR 1020237044469A KR 20237044469 A KR20237044469 A KR 20237044469A KR 20240005178 A KR20240005178 A KR 20240005178A
Authority
KR
South Korea
Prior art keywords
mode
video
syntax element
motion
block
Prior art date
Application number
KR1020237044469A
Other languages
English (en)
Inventor
홍빈 리우
리 장
카이 장
유에 왕
Original Assignee
베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드, 바이트댄스 아이엔씨 filed Critical 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
Publication of KR20240005178A publication Critical patent/KR20240005178A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/53Multi-resolution motion estimation; Hierarchical motion estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 개시는 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용에 대한 것으로서, 본 개시의 일 실시예에 따른 비디오 처리 방법은, 비디오의 현재 블록의 코딩된 표현과 상기 현재 블록 간의 변환을 위해, 상기 현재 블록을 포함하는 비디오 영역에 적용될 수 있는 다수의 허용된 움직임 벡터 차분(Motion Vector Difference: MVD) 정밀도들의 세트로부터 상기 변환을 위해 사용될 MVD 정밀도를 결정하는 단계; 그리고 상기 MVD 정밀도에 기반하여 상기 변환을 수행하는 단계를 포함할 수 있다.

Description

적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용 {SYNTAX REUSE FOR AFFINE MODE WITH ADAPTIVE MOTION VECTOR RESOLUTION}
파리협약에 따른 적용가능한 특허법 및/또는 규칙에 따라, 본 출원은 2018년 9월 19일에 제출된 국제 출원 PCT/CN2018/106513호 및 2019년 2월 1일에 제출된 국제 출원 PCT/CN2019/074433의 우선권과 혜택을 적시에 주장하기 위해 만들어졌다. 미국 법 하의 모든 목적을 위해, 상기 출원들의 전체 개시물은 본 출원의 개시의 일부로서 참고로 통합된다.
본 특허 문서는 비디오 처리 기술들, 장치들 및 시스템들에 관한 것이다.
비디오 압축 기술의 발전에도 불구하고 디지털 비디오는 여전히 인터넷 및 기타 디지털 통신 네트워크에서 가장 큰 대역폭을 사용한다. 비디오를 수신하고 표시할 수 있는 접속된 사용자 장치의 수가 증가함에 따라, 디지털 비디오 사용을 위한 대역폭 수요가 계속 증가할 것으로 예상된다.
디지털 비디오 코딩, 구체적으로, 적응적 움직임 벡터 해상도 (adaptive motion vector resolution (AMVR))를 가지는 어파인 모드를 위한 움직임 벡터 예측자 유도 및 시그널링에 관한 장치들, 시스템들 및 방법들이 설명된다. 설명된 방법들은 기존 비디오 코딩 표준들 (가령, High Efficiency Video Coding (HEVC)) 뿐만 아니라 미래의 비디오 코딩 표준들 및 비디오 코덱들에도 적용될 수 있다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 비디오의 현재 블록의 코딩된 표현과 상기 현재 블록 사이의 변환에 대해, 상기 변환을 위해 사용될 움직임 벡터 차이(motion vector difference: MVD) 정밀도를 상기 현재 비디오 블록을 포함하는 비디오 영역에 적용 가능한 허용된 다수의 움직임 벡터 차이 정밀도들의 세트로부터 결정하는 단계 및 상기 움직임 벡터 차이 정밀도에 기반하여 상기 변환을 실시하는 단계를 포함한다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 상기 비디오 영역에서 상기 하나 또는 그 이상의 비디오 블록의 변환을 위한 다수의 움직임 벡터 차이 정밀도들의 사용을 판단하는 단계 및 상기 단계에 기반하여 상기 변환을 실행하는 단계를 포함한다.
다른 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 상기 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도 (adaptive motion vector resolution: AMVR)를 적용할지 여부를 판단하는 단계 및 상기 판단에 기반하여 상기 변환을 실시하는 단계를 포함한다.
다른 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 상기 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도 (adaptive motion vector resolution: AMVR)를 어떻게 적용할지를 판단하는 단계 및 상기 판단에 기반하여 상기 변환을 실시하는 단계를 포함한다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 어파인 코딩 모드의 율-왜곡 (rate-distortion: RD) 비용 또는 상기 어파인 코딩 모드를 사용하는 현재 코딩 유닛의 부모 코딩 유닛의 코딩 모드에 기반하여, 비디오의 현재 블록의 코딩된 표현과 상기 현재 블록 사이의 변환에 대해 적응적 움직임 벡터 해상도 (AMVR)의 사용을 판단하는 단계 및 상기 판단의 결과에 따라 상기 변환을 실시하는 단계를 포함한다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은 비디오의 현재 블록의 코딩된 표현과 향상된 움직임 벡터 예측 (advanced motion vector prediction: AMVP) 코딩 모드를 사용하는 상기 현재 블록 사이의 변환을 위해 적응적 움직임 벡터 해상도 (AMVR)의 사용을 판단하는 단계 및 상기 판단의 결과에 따라 상기 변환을 실시하는 단계를 포함한다. 여기서, 상기 판단은 상기 AMVP 코딩 모드의 율-왜곡 비용에 기반한다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 비디오의 현재 블록의 코딩된 표현과 상기 현재 블록 사이의 변환을 위해, 4-파라미터 어파인 모델 또는 6-파라미터 어파인 모델을 사용하는 움직임 벡터 (motion vector: MV) 정밀도들의 세트를 생성하는 단계 및 상기 MV 정밀도들의 세트에 기반하여 상기 변환을 실시하는 단계를 포함한다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 어파인 코딩 모드를 사용하는 현재 블록의 부모 블록의 코딩 모드에 기반하여, AMVR 툴이 변환에 사용되는지를 판단하는 단계 및 상기 판단의 결과에 따라 상기 변환을 실시하는 단계를 포함한다. 여기서, 상기 AMVR 툴은 복호화 동안 움직임 벡터 해상도를 개선하는 데에 사용된다.
일 예시적 양상에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는 데에 사용될 수 있다. 이 방법은, 어파인 코딩 모드를 사용하여 이전에 코딩된 이전 블록들에 대한 MV 정밀도들의 사용에 기반하여, 현재 블록의 코딩된 표현과 상기 현재 블록 간의 변환을 위해 상기 어파인 코딩 모드를 사용하는 상기 현재 블록에 대해 율-왜곡 (RD) 계산의 종료를 판단하는 단계 및 상기 판단의 결과에 따라 상기 변환을 실시하는 단계를 포함한다.
다른 예시적 양상에서, 상기 기술된 방법은 프로세서 실행 가능한 코드의 형태로 구현되며, 컴퓨터 인식 가능한 프로그램 매체에 저장된다.
또 다른 예시적 양상에서, 상기 기술된 방법을 실시하기 위해 구성되거나 작동 가능한 디바이스가 개시된다. 상기 디바이스는 상기 방법을 실시하기 위해 프로그램된 프로세서를 포함할 수 있다.
또 다른 예시적 양상에서, 비디오 디코더 장치는 여기서 설명된 대로 방법을 실행할 수 있다.
개시된 기술의 상기 및 기타 양상들 및 특성들은 도면, 상세한 설명 그리고 청구항에서 더 상세히 설명된다.
본 개시에 따르면, 비디오의 디지털 표현을 포함하는 비트스트림을 디코딩하는 방법이 제공될 수 있다.
본 개시에 따르면, 적응적 움직임 벡터 해상도(adaptive motion vector resolution, AMVR)를 갖는 어파인 모드를 위한 움직임 벡터 예측자 유도 및 시그널링에 관한 장치들, 시스템들 및 방법들이 제공될 수 있다.
도 1은 머지 후보 리스트를 구성하는 일 예를 보여준다.
도 2는 공간적 후보들의 위치들의 일 예를 보여준다.
도 3은 공간적 머지 후보들의 중복성 검사에 고려되는 후보 쌍들의 일 예를 보여준다.
도 4a 및 도 4b는 현재 블록의 크기 및 모양에 기반하는 제2 예측 유닛(prediction unit: PU)의 위치의 예들을 보여준다.
도 5는 시간적 머지 후보들에 대한 움직임 벡터 스케일링의 예를 보여준다.
도 6은 시간적 머지 후보들에 대한 후보 위치들의 예를 보여준다.
도 7은 결합 양예측(bi-predictive) 머지 후보를 생성하는 예를 보여준다.
도 8은 움직임 벡터 예측 후보들을 구성하는 예를 보여준다.
도 9는 공간적 움직임 벡터 후보들에 대한 움직임 벡터 스케일링의 예를 보여준다.
도 10은 코딩 유닛에 대해 대안적인 시간 움직임 벡터 예측(ATMVP)을 사용하는 움직임 예측의 예를 보여준다.
도 11은 시-공간적 움직임 벡터 예측(STMVP) 알고리즘에 의해 사용되는 서브 블록들 및 주변 블록들을 가지는 코딩 유닛의 예를 보여준다.
도 12는 상이한 MV 정밀도들로 인코딩하기 위한 예시적인 순서도의 예를 보여준다.
도 13a 및 도 13b는 중복된 블록 움직임 보상 (overlapped block motion compensation: OBMC) 알고리즘을 사용할 때, 서브 블록의 예시적 스냅 샷들의 예를 보여준다.
도 14는 지역 조명 보상(local illumination compensation: LIC) 알고리즘을 위한 파라미터들을 유도하는 데에 사용되는 주변 샘플들의 예를 보여준다.
도 15는 단순화된 어파인 움직임 모델의 예를 보여준다.
도 16은 서브 블록 당 어파인 움직임 벡터 필드(motion vector field: MVF)의 예를 보여준다.
도 17는 AF_INTER 어파인 움직임 모드를 위한 움직임 벡터 예측(MVP)의 예를 보여준다.
도 18a 및 도 18b는 각각 4 파라미터 및 6 파라미터 어파인 모델의 예들을 보여준다.
도 19a 및 도 19b는 AF_MERGE 어파인 움직임 모드를 위한 후보 예들을 보여준다.
도 20은 프레임율 상향 변환(frame-rate up conversion: FRUC) 알고리즘에 기반한 특별한 머지 모드인 패턴 매치된 움직임 벡터 유도(pattern matched motion vector derivation: PMMVD) 모드에서의 양방향 매칭의 예를 보여준다.
도 21은 FRUC 알고리즘에서 템플릿 매칭의 예를 보여준다.
도 22는 FRUC 알고리즘에서 단방향 움직임 추정의 예를 보여준다.
도 23은 양방향 광학 흐름(bi-directional optical flow: BIO) 알고리즘에 의해 사용되는 광학 흐름 궤적의 예를 보여준다.
도 24a 및 도 24b는 블록 연장부(block extensions) 없이 양방향(bi-directional) 광학 흐름(BIO) 알고리즘을 사용하는 예시적인 스냅샷들을 보여준다.
도 25는 양방향(bilateral) 템플릿 매칭에 기반하는 디코더 측 움직임 벡터 개선(decoder-side motion vector refinement: DMVR) 알고리즘의 예를 보여준다.
도 26a부터 도 26i는 개시된 기술의 몇몇 구현들에 기반하여 비디오 처리를 위한 예시적 방법들의 순서도들을 보여준다.
도 27은 본 문서에 기술된 시각 미디어 디코딩 또는 시각 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예를 나타내는 블록도이다.
도 28은 대칭 모드의 일 예를 보여준다.
도 29는 본 문서에 기술된 비디오 처리 시스템을 구현하기 위한 하드웨어 플랫폼의 예를 나타내는 다른 블록도를 보여준다.
더 높은 해상도를 가진 비디오에 대한 수요가 계속 증가함에 따라, 비디오 코딩 방법 및 기법들은 현대 기술에서는 흔히 볼 수 있게 되었다. 비디오 코덱은 디지털 비디오를 압축하거나 푸는 소트프웨어 또는 전자 회로를 주로 포함하며 더 높은 코딩 효율을 제공하기 위해 지속적으로 개선되고 있다. 비디오 코덱은 압축되지 않은 비디오를 압축된 포멧으로 또는 그 반대로 변환시킨다. 비디오의 질, 비디오를 표현하는 데에 사용되는 데이터의 양(비트 레이트에 의해 결정), 인코딩 및 디코딩 알고리즘들의 복잡성, 데이터 손실 및 에러에 대한 민감도, 편집 용이성, 랜덤 액세스, 그리고 단대단 지연 사이에는 복잡한 관계가 있다. 압축된 포맷은 대개의 경우 (H265 또는 MPEG-H Part 2로도 알려진) HEVC (High Efficiency Video Coding) 표준, 최종 확정될 VVC (Versatile Video Coding) 또는 기타 현재 및/또는 미래의 비디오 코딩 표준들을 따른다.
개시된 기술의 실시예들은 압축 성능의 향상을 위해 기존 비디오 코딩 표준들 (예를 들어, HEVC, H 256) 및 미래의 표준들에 적용될 수 있다. 본 문서에서 섹션 제목들은 설명의 가독성을 높이기 위해 사용된 것이며 논의 또는 실시예들 (및/또는 구현들)의 해당 섹션들로 결코 제한하지 않는다.
1. HEVC/H.265에서 화면간 예측의 예들
비디오 코딩 표준들은 수 년간 상당히 발전하여 이제는 부분적으로 높은 코딩 효율을 제공하고 더 높은 해상도를 지원하고 있다. HEVC 및 H 265와 같은 최근 표준들은 시간적 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다.
1.1 예측 모드의 예들
화면 내 예측된 각각의 예측 유닛(Prediction unit: PU)은 하나 또는 두 개의 참조 픽처 리스트에 대한 움직임 파라미터들을 가진다. 몇몇 실시예들에서, 움직임 파라미터들은 움직임 벡터 및 참조 픽처 인덱스를 포함한다. 다른 실시예들에서, 상기 두 참조 픽처 리스트들 중 하나의 사용은 inter_pred_idc를 사용하여 시그널링될 수 있다. 또 다른 실시예들에서, 움직임 벡터들은 예측자들과 관련하여 델타들(deltas)로 명시적으로 코딩될 수 있다.
코딩 유닛(CU)이 스킵 모드로 코딩될 경우, 하나의 PU가 상기 CU와 연관되며, 의미있는 잔여 계수들, 코딩된 움직임 벡터 델타 또는 참조 픽처 인덱스가 존재하지 않는다. 머지 모드가 지정되면, 현재 PU에 대한 움직임 파라미터들이 공간적 및 시간적 후보들을 포함하여 인접 PU들로부터 획득된다. 상기 머지 모드는 스킵 모드에 대해서 뿐만 아니라, 어떤 화면 간 예측된(inter prediction) PU에도 적용될 수 있다. 머지 모드의 대안은 움직임 파라미터들의 명시적인 전송으로, 이 경우 움직임 벡터, 각 참조 픽처 리스트에 대한 해당 참조 픽처 인덱스, 그리고 참조 픽처 리스트 사용법이 각각의 PU별로 명시적으로 시그널링된다.
시그널링이 두 참조 픽처 리스트 중 하나를 사용함을 지시할 경우, 상기 PU는 하나의 샘플들의 블록으로부터 생성된다. 이것을 '단-예측'(uni-prediction)이라고 한다. 단-예측은 P 슬라이스들과 B 슬라이스들 모두에 대해 사용할 수 있다.
시그널링이 두 참조 픽처 리스트 모두를 사용함을 지시할 경우, 상기 PU는 두 개의 샘플들의 블록으로부터 생성된다. 이를 '양-예측'(bi-prediction)이라고 한다. 양-예측은 B-슬라이스들에 대해서만 사용할 수 있다.
1.1.1 머지 모드에 대한 후보들을 구성하는 실시예들
머지 모드를 사용하여 PU가 예측되는 경우, 머지 후보 리스트의 항목을 가리키는 인덱스는 비트 스트림으로부터 파싱되어 움직임 정보를 검색하는 데 사용된다. 이 리스트의 구성은 단계들의 아래 순서에 따라 요약될 수 있다.
단계 1: 초기 후보들 유도
단계 1.1: 공간적 후보들 유도
단계 1.2: 공간적 후보들에 대한 중복성 검사
단계 1.3: 시간적 후보들 유도
단계 2: 추가 후보들 삽입
단계 2.1: 양-예측(bi-predictive) 후보들 생성
단계 2.2: 제로 움직임 후보들 삽입
도 1은 위에 요약된 단계들의 순서에 기반하여 머지 후보를 구성하는 일 예를 보여준다. 공간적 머지 후보 유도를 위해, 5개의 상이한 위치에 있는 후보들 중에서 최대 4개의 머지 후보들이 선택된다. 시간적 머지 후보 유도를 위해, 두 후보들 중 최대 하나의 머지 후보가 선택된다. 각 PU에 대해 일정한 수의 후보들이 디코더에서 가정되기 때문에, 상기 후보들의 수가 슬라이스 헤더에서 시그널링되는 머지 후보의 최대 수(MaxNumMergeCand)에 미치지 않으면, 추가 후보들이 생성된다. 후보의 수가 일정하기 때문에 최적 머지 후보의 인덱스는 절단된 단항 이진화(TU)를 사용하여 인코딩 된다. 만약 CU의 크기가 8이면, 현재 CU의 모든 PU들은 2N x 2N 예측 유닛의 머지 후보 리스트와 동일한 단일 머지 후보 리스트를 공유한다.
1.1.2 공간적 머지 후보들 구성
공간적 머지 후보들 유도 시, 최대 4개의 머지 후보들이 도 2에 도시된 위치들에 있는 후보들 가운데에서 선택된다. 유도 순서는 A1, B1, B0, A0 및 B2 순이다. 위치 A1, B1, B0의 어느 한 PU가 사용될 수 없는 경우(예를 들어, 다른 슬라이스 또는 타일에 속하기 때문) 또는 화면 내 코딩된 경우에만, 위치 B2가 고려된다. 위치 A1의 후보가 추가된 후 나머지 후보들의 추가는 중복 검사를 거친다. 이를 통해, 동일한 움직임 정보를 가진 후보가 리스트에서 제외되어 코딩 효율이 향상된다.
계산 복잡성을 줄이기 위해, 상기 언급된 중복 검사에서 가능한 모든 후보 쌍들이 고려되는 것은 아니다. 그 대신, 도 3에서 화살표로 연결된 쌍들만이 고려되고, 중복 검사에 사용되는 해당 후보가 동일한 움직임 정보를 가지고 있지 않은 경우에만 후보가 리스트에 추가된다. 중복되는 운동 정보의 다른 소스는 2Nx2N과는 상이한 분할들과 관련된 "제2 PU " 이다. 일 예로, 도 4a 및 도 4b는 각각 Nx2N 및 2NxN의 경우에 대한 제2 PU를 도시한다. 현재 PU가 Nx2N으로 분할되면, A1 위치에서 후보는 리스트 구성에 고려되지 않는다. 일부 실시예들에서, 이 후보를 추가하는 것은 동일한 움직임 정보를 갖는 2개의 예측 유닛들로 귀결될 수 있으며, 이는 코딩 유닛에서 단지 하나의 PU를 갖는 것에 중복된다. 마찬가지로, 현재 PU가 2NxN으로 분할되는 경우, 위치 B1 은 고려되지 않는다.
1.1.3 시간적 머지 후보들 구성
이 단계에서는 오직 하나의 후보만이 상기 리스트에 추가된다. 특히, 이 시간적 머지 후보의 유도 시, 주어진 참조 픽처 리스트 내에서 현재 픽처와 가장 작은 POC(Picture Order Count) 차이를 갖는 픽처에 속하는 동일 위치의(co-located) PU를 기반으로, 스케일링된 움직임 벡터가 유도된다. 상기 동일 위치 PU의 유도에 사용될 상기 참조 픽처 리스트는 슬라이스 헤더에서 명시적으로 시그널링된다.
도 5는 (점선으로 표현된) 시간적 머지 후보에 대한 상기 스케일링된 움직임 벡터를 유도하는 일 예를 도시한다. 상기 움직임 벡터는 POC 거리들인 tb 및 td를 사용하여 상기 동일 위치 PU의 움직임 벡터로부터 스케일링 된다. 여기서, tb는 현재 픽처의 참조 픽처와 현재 픽처 사이의 POC 차이로 정의되고, td는 동일 위치 픽처의 참조 픽처와 동일 위치 픽처 사이의 POC 차이로 정의된다. 시간적 머지 후보의 참조 픽처 인덱스는 0으로 설정된다. B-슬라이스의 경우, 2개의 움직임 벡터 중 하나는 참조 픽처 리스트 0을 위해 다른 하나는 참조 픽처 리스트 1을 위해 획득되고, 이것들이 결합되어 양-예측(bi-predictive) 머지 후보가 만들어진다.
참조 프레임에 속하는 동일 위치 PU(Y)에서, 시간적 후보에 대한 위치는 도 6에 도시 된 바와 같이 후보 C0 및 C1 중에서 선택된다. 위치 C0의 PU가 사용될 수 없거나 화면 내 (intra) 코딩되었거나 현재 CTU 외부에 있는 경우, 위치 C1 이 사용된다. 그 외의 경우, 위치 C0 이 시간적 머지 후보의 유도에 사용된다.
1.1.4 머지 후보들의 추가 유형 구성
시공간적 머지 후보들 외에도 결합 양-예측(bi-predictive) 머지 후보 및 제로 머지 후보라는 두 가지 추가 유형의 머지 후보들이 있다. 결합 양-예측 머지 후보는 시공간적 머지 후보들을 활용하여 생성된다. 결합 양-예측 머지 후보는 오직 B 슬라이스에 대해서만 사용된다. 결합 양-예측 후보들은 최초 후보의 제1 참조 픽처 리스트 움직임 파라미터들과 다른 후보의 제2 참조 픽처 리스트 파라미터들을 결합하여 생성된다. 이 두 튜플들이 상이한 움직임 가설들을 제공하는 경우, 그것들은 새로운 양-예측 후보를 형성하게 된다.
도 7은 mvL0 및 refIdxL0 또는 mvL1 및 refIdxL1을 가지는 원본 리스트(710, 좌측)의 두 후보들이 최종 리스트(720, 우측)에 추가된 결합 양-예측 후보를 생성하는 데 사용되는 절차의 일 예를 도시한다.
제로 움직임 후보들이 삽입되어 머지 후보 리스트의 나머지 항목들을 채우고 이로써 MaxNumMergeCand 용량에 도달한다. 이 후보들은 0에서 시작하여 새로운 제로 움직임 후보가 리스트에 추가될 때마다 증가하는 참조 픽처 인덱스와 제로 공간 변위를 가진다. 이 후보들이 사용하는 참조 프레임의 수는 단방향 예측 및 양방향 예측에 대해 각각 1개 및 2개이다. 일부 실시예에서, 중복 검사는 이러한 후보들에 대해 수행되지 않는다.
1.1.5 병렬 처리를 위한 움직임 추정 영역의 예들
인코딩 프로세스의 속도를 높이기 위해, 움직임 추정은 병렬로 수행될 수 있으며, 이를 통해 주어진 영역 내의 모든 예측 유닛들에 대한 움직임 벡터들이 동시에 유도된다. 연관된 움직임 추정이 완료되기 전에는 하나의 예측 유닛이 인접 PU로부터 움직임 파라미터들을 도출할 수 없기 때문에, 공간적 이웃으로부터 머지 후보들의 유도는 병렬 처리를 방해할 수 있다. 코딩 효율과 처리 지연 사이의 균형을 완화하기 위해, 움직임 추정 영역(motion estimation region: MER)이 정의될 수 있다. MER의 크기는 구문 요소 "log2_parallel_merge_level_minus2"를 사용하여 픽처 파라미터 세트(picture parameter set: PPS)에서 시그널링될 수 있다. MER이 정의되면, 동일한 영역에 속하는 머지 후보들은 사용할 수 없는 것으로 표시되어 리스트 구성에서 고려되지 않는다.
1.2 향상된 움직임 벡터 예측(AMVP)의 실시예들
AMVP는 움직임 파라미터들의 명시적 전송에 사용되는, 움직임 벡터와 인접 PU들의 시공간적 상관 관계를 활용한다. 그것은, 먼저 좌측, 상부에 시간적으로 인접한 PU 위치들의 가용성을 확인하고, 중복 후보들을 제거하고, 후보 리스트가 일정한 길이가 되도록 제로 벡터를 추가함으로써, 움직임 벡터 후보 리스트를 구성한다. 다음으로, 인코더는 상기 후보 리스트에서 최상의 예측자를 선택하고 선택한 후보를 지시하는 해당 인덱스를 전송할 수 있다. 머지 인덱스 시그널링과 마찬가지로, 상기 최상의 움직임 벡터 후보의 인덱스는 절단된 단항(truncated unary)을 사용하여 인코딩된다. 이 경우 인코딩 될 최대 값은 2이다(도 8 참조). 아래 섹션들에서는 움직임 벡터 예측 후보의 유도 과정에 대해 상세히 설명한다.
1.2.1 움직임 벡터 예측 후보들을 구성하는 예들
도 8은 움직임 벡터 예측 후보에 대한 유도 과정을 요약한 것이며, refidx를 입력으로 하는 각 참조 픽처 리스트에 대해 실시될 수 있다.
움직임 벡터 예측 시, 공간적 움직임 벡터 후보와 시간적 움직임 벡터 후보라는 두 가지 유형의 움직임 벡터 후보들이 고려된다. 공간적 움직임 벡터 후보 유도를 위해, 도 2에 도시된 바와 같이 5개의 상이한 위치에 있는 각 PU의 모션 벡터들에 기반하여 2개의 움직임 벡터 후보가 최종적으로 유도된다.
시간적 움직임 벡터 후보 유도를 위해, 하나의 움직임 벡터 후보가 2개의 상이한 동등 위치들을(co-located positions) 기반으로 도출된 2개의 후보 중에서 선택된다. 시공간 후보들의 제1 리스트가 생성된 후, 중복된 움직임 벡터 후보들이 상기 리스트에서 제거된다. 만약 잠재적 후보의 수가 2보다 크면, 관련 참조 픽쳐 리스트 내의 참조 픽처 인덱스가 1보다 큰 움직임 벡터 후보는 상기 리스트에서 제거된다. 시공간적 움직임 벡터 후보의 수가 2 미만인 경우, 추가 제로 움직임 벡터 후보가 상기 리스트에 추가된다.
1.2.2 공간적 움직임 벡터 후보들의 구성
공간적 움직임 벡터 후보의 유도 시, 최대 2개의 후보가 5개의 잠재적 후보 가운데에서 고려되며, 이 잠재적 후보들은 도 2에 도시된 위치들에 있는 PU들로부터 유도된다. 이 위치들은 움직임 머지의 위치들과 동일하다. 현재 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. 공동 탐구 모델(Joint Exploration Model: JEM)에서 화면 간 예측 방법들의 예
일부 실시예들에서, JEM으로 알려진 참조 소프트웨어를 사용하여 미래의 비디오 코딩 기술들이 탐구된다. JEM에서, 서브 블록 기반 예측은 다음과 같은 몇몇 코딩 툴들에서 채택된다: 어파인 예측, 대안적 시간적 움직임 벡터 예측(ATMVP), 시공간적 움직임 벡터 예측(STMVP), 양-방향 광학 흐름(BIO), 프레임율 상향 변환(FRUC), 지역적 적응 움직임 벡터 해상도(LAMVR), 중첩된 블록 움직임 보상(OBMC), 지역 조명 보상(LIC) 및 디코더 측 움직임 벡터 개선(DMVR).
2.1 서브 CU 기반 움직임 벡터 예측의 예들
쿼드트리와 이진트리를 가지는 JEM에서, 각 CU는 각각의 예측 방향에 대해 움직임 파라미터들의 한 세트까지 가질 수 있다. 일부 실시예들에, 큰 CU를 서브 CU들로 분할하고 상기 큰 CU의 상기 모든 서브 CU들에 대해 움직임 정보를 유도함으로써, 두 개의 서브 CU 레벨 움직임 벡터 예측 방법들이 인코더에서 고려된다. 대안적인 시간적 움직임 벡터 예측(ATMVP) 방법은 각 CU가 동일 위치의 참조 픽처에 있는 현재 CU 보다 작은 복수의 블록들로부터 움직임 정보의 복수의 세트들을 불러오도록 허용한다. 시공간적 움직임 벡터 예측(STMVP) 방법에서, 서브 CU들의 움직임 벡터들은 시간적 움직임 벡터 예측자 및 공간적 주변 움직임 벡터를 사용하여 재귀적으로 유도된다. 일부 실시예들에서, 그리고 서브 CU 움직임 예측에 대해 좀 더 정확한 움직임 필드를 유지하기 위해, 참조 프레임들에 대한 움직임 압축이 불가능하게 될 수 있다.
2.1.1 대안적인 시간적 움직임 벡터 예측(ATMVP)의 예들
ATMVP 방법에서, TMVP 예측 방법은 현재 CU 보다 작은 블록들로부터 (움직임 벡터들 및 참조 인덱스들을 포함하는) 움직임 정보의 복수의 세트들을 불러옴으로써 수정된다.
도 10은 CU (1000)에 대한 ATMVP 움직임 예측 과정의 일 예를 도시한다. 상기 ATMVP 방법은 CU(1000)에서 서브 CU들(1001)의 움직임 벡터들을 두 단계로 예측한다. 첫 번째 단계는 시간적 벡터를 가지는 참조 픽처(1050)에서 해당 블록 (1051)을 식별하는 것이다. 상기 참조 픽처(1050)는 또한 움직임 소스 픽처로도 지칭된다. 두 번째 단계는 현재 CU(1000)를 서브 CU들(1001)로 분할하고 각각의 서브 CU에 상응하는 블록으로부터 각 서브 CU의 참조 인덱스들뿐 아니라 움직임 벡터들을 획득하는 것이다.
상기 첫 번째 단계에서, 참조 픽처(1050) 및 해당 블록은 현재 CU(1000)의 공간적 주변 블록들의 움직임 정보로 판단된다. 주변 블록들에 대한 반복적인 스캐닝 과정을 방지하기 위해, 현재 CU(1000)의 머지 후보 리스트 내의 제1 머지 후보가 사용된다. 제1 가용 움직임 벡터뿐 아니라 그것과 연관된 참조 인덱스가 상기 움직임 소스 픽처에 대한 시간적 벡터 및 인덱스로 설정된다. 이러한 방식으로, 해당 블록은 TMVP에 비해 더 정확하게 식별될 수 있다. 이때, (간혹 동일 위치 블록으로 불리는) 해당 블록은 현재 CU에 대해 항상 우측 아래 또는 가운데 위치에 있다.
두 번째 단계에서, 서브 CU(1051)의 해당 블록은 움직임 소스 픽처(1050)내의 시간적 벡터에 의해 또는 시간적 벡터에 현재 CU의 좌표를 추가함으로써 식별된다. 각각의 서브 CU에 대해, 그것에 상응하는 블록(예, 가운데 샘플을 덮은 최소 움직임 그리드)의 움직임 정보는 상기 서브 CU에 대한 움직임 정보를 유도하는 데에 사용된다. 해당 N x N블록의 움직임 정보가 식별된 후에, HEVC의 TMVP와 동일한 방식으로 현재 서브 CU의 움직임 벡터들 및 참조 인덱스들로 변환된다. 이때, 움직임 스케일링 및 기타 절차들이 적용된다. 예를 들어, 디코더는 저지연 조건(예를 들어, 현재 픽처의 모든 참조 픽처들의 POC들이 현재 픽처의 POC 보다 작다.)이 충족되는지 여부를 확인하고, 가능한 경우, 움직임 벡터 MVx(예를 들어, 참조 픽처 리스트 X에 해당하는 움직임 벡터)를 사용하여 각 서브 CU에 대해 움직임 벡터 MVy(이때, X는 0 또는 1과 같고, Y는 1-X와 같다)를 예측한다.
2.1.2 시공간적 움직임 벡터 예측(STMVP)의 예들
STMVP 방법에서, 서브 CU들의 움직임 벡터들은 래스터 스캔 순서를 따라 재귀적으로 유도된다. 도 11은 4개의 서브 블록들 및 주변 블록들을 가지는 하나의 CU의 일 예를 도시한다. 네 개의 4x4 서브 CU들인 A(1101), B(1102), C(1103) 및 D(1104)를 포함하는 8x8 CU(1100)를 살펴보자. 현재 프레임에서 주변 4x4 블록들은 a(1111), b(1112), c(1113) 및 d(1114)로 표시된다.
서브 CU A에 대한 움직임 유도는 그것의 두 공간적 이웃들을 식별하면서 시작된다. 첫 번째 이웃은 서브 CU A(1101i) 위에 있는 NxN 블록(블록 c(1113))이다. 만약 이 블록 c(1113)가 가용하지 않거나 화면 내 코딩된 것이라면, 서브 CU A(1101) 위의 다른 NxN 블록들을(블록 c(1113)에서 출발하여 좌측에서 우측으로) 확인한다. 두 번째 이웃은 서브 CU A(1101) 좌측에 있는 블록(블록 b(1112))이다. 만약 이 블록 b(1112)가 가용하지 않거나 화면 내 코딩된 것이라면, 서브 CU A(1101) 좌측의 다른 NxN 블록들을(블록 b(1112)에서 출발하여 위에서 아래로) 확인한다. 각각의 리스트에 대해 주변 블록들로부터 획득된 움직임 정보는 주어진 리스트에 대한 제1 참조 프레임으로 스케일링된다. 다음으로, 서브 블록 A(1101)의 시간적 움직임 벡터 예측자(TMVP)가 HEVC에 규정된 TMVP 유도와 같은 절차로 유도된다. 블록 D(1104)에서 동일 위치 블록의 움직임 정보가 획득되고 그에 맞게 스케일링된다. 마지막으로, 움직임 정보를 조회하여 스케일링한 후, 각 참조 리스트에 대해 개별적으로 모든 가용한 움직임 벡터들의 평균을 낸다. 평균화된 움직임 벡터는 현재 서브 CU의 움직임 벡터로 할당된다.
2.1.3 서브 CU 움직임 예측 모드 시그널링의 예들
일부 실시예들에서, 서브 CU 모드들은 추가적인 머지 후보들로서 가능하며, 상기 모드들을 시그널링하는데 요구되는 추가적인 구문 요소는 존재하지 않는다. ATMVP 모드 및 STMVP 모드를 나타내기 위해 각 CU의 머지 후보 리스트에 두 개의 추가적인 머지 후보들이 추가된다. 다른 실시예들에, 만약 시퀀스 파라미터 세트가 ATMVP 및 STMVP가 가능함을 지시한다면, 최대 7개의 머지 후보들까지 사용될 수 있다. 추가적인 머지 후보들의 인코딩 로직은 HM에서의 머지 후보들에 대한 것과 같다. 즉, P 또는 B 슬라이스에서의 각 CU에 대해, 두 개의 추가적인 머지 후보들에 대해 두 개의 추가적인 RD 확인이 필요하다. 일부 실시예들에서, 일 예로, JEM에서, 머지 인덱스의 모든 빈(bins)은 문맥 기반 적응적 이항 산술 코딩(Contex-based Adaptive Binary Coding: CABAC)에 의해 문맥 코딩된다. 다른 실시예들에서, 일 예로, HEVC에서, 오직 첫 번째 빈만이 문맥 코딩되며, 나머지 빈들은 문맥 바이패스 코딩된다.
2.2 적응적 움직임 벡터 차이 해상도의 예들
일부 실시예들에서, (PU의 움직임 벡터와 예측된 움직임 벡터 간의) 움직임 벡터 차이들(MVDs)은, use_inter_my_flag가 슬라이스 헤더에서 0과 같을 경우, 1/4 루마 샘플들의 단위로 시그널링된다. JEM에서는 지역적으로 적응적인 움직임 벡터 해상도(locally adaptive motion vector resolution: LAMVR)가 도입된다. JEM에서, MVD는 1/4 루마 샘플들, 정수 루마 샘플들 또는 4 루마 샘플들의 단위로 코딩된다. MVD 해상도는 CU 레벨에서 제어되며, MVD 해상도 플래그들은 적어도 하나의 논-제로 MVD 구성요소를 가지는 각 CU에 대해 조건적으로 시그널링된다.
적어도 하나의 논-제로 MVD 구성요소를 가지는 CU에 대해, 제1 플래그는 1/4 루마 샘플 MV 정밀도들이 상기 CU에서 사용되는지 여부를 지시하기 위해 시그널링된다. (1과 같은) 상기 제1 플래그가 1/4 루마 샘플 MV 정밀도가 사용되지 않음을 지시하는 경우, 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도가 사용되는지 여부를 지시하기 위해 다른 플래그가 시그널링된다.
CU의 제1 MVD 해상도 플래그가 0이거나 CU에 대해 코딩되지 않은 경우(즉, 상기 CU의 모든 MVD들이 0), 1/4 루마 샘플 MV 해상도가 상기 CU에 대해 사용된다. CU가 정수 루마 샘플 MV 정밀도 또는 4 루마 샘플 MV 정밀도를 사용하는 경우, 상기 CU에 대한 AMVP 후보 리스트내의 MVP들은 해당 정밀도로 라운딩된다.
인코더에서, CU 레벨 RD 체크를 사용하여 어느 MVD 해상도가 CU를 위해 사용되는지를 판단한다. 즉, CU 레벨 RD 체크는 각 MVD 해상도에 대해 3회 실시된다. 인코더의 속도를 높이기 위해, 아래 인코딩 스킴들이 JEM에서 적용된다.
-- 정상 1/4 루마 샘플 MVD 해상도를 가지는 CU의 RD 체크 동안, 현재 CU의 움직임 정보(정수 루마 샘플 정확도)가 저장된다. (라운딩 후) 상기 저장된 움직임 정보는, 정수 루마 샘플 및 4 루마 샘플 MVD 해상도를 가지는 동일한 CU에 대한 RD 체크 동안 추가 소범위 움직임 벡터 개선을 위한 출발점으로 사용되어 시간이 많이 소요되는 움직임 추정 과정이 3회 중복되지 않는다.
-- 4 루마 샘플 MVD 해상도를 가지는 CU의 RD 체크는 조건적으로 수행된다. CU에 대해, 만약 정수 루마 샘플 MVD 해상도의 RD 코스트가 1/4 샘플 MVD 해상도의 RD 코스트보다 훨씬 크다면, 상기 CU에 대한 4루마 샘플 MVD 해상도의 RD 체크는 생략된다.
인코딩 절차는 도 12에 도시된다. 우선, 1/4 픽셀 MV가 테스트되며, RD 코스트가 계산되고 RDCost0로 표시된다. 다음으로, 정수 MV가 데스트되고 RC 코스트가 계산되며 RDCost1으로 표시된다. 만약 RDCost1 < th * RDCost0 라면(이때, th는 양수값의 임계값), 4 픽셀 MV가 테스트되며, 그렇지 않을 경우, 4 픽셀 MV는 생략된다. 기본적으로, 정수 또는 4 픽셀 MV를 테스트하는 경우, 움직임 정보 및 RD 코스트 등은 1/4 픽셀 MV에 대해 이미 알려져 있으며, 정수 또는 4 픽셀 MV의 인코딩 절차의 속도를 높이기 위해 재사용 될 수 있다.
2.3 더 높은 움직임 벡터 저장 정확도의 예들
HEVC에서 움직임 벡터 정확도는 1/4 픽셀(4:2:0 비디오에 대해 1/4 루마 샘플 및 1/8 크로마 샘플)이다. JEM에서 내부 움직임 벡터 저장 및 머지 후보에 대한 정확도는 1/16 픽셀로 증가된다. 더 높은 움직임 벡터 정확도(1/16 픽셀)은 스킵/머지 모드로 코딩된 CU에 대한 움직임 보상 화면 간 예측에 사용된다. 정상적인 AMVP 모드로 코딩된 CU에 대해, 정수 픽셀 또는 1/4 픽셀 움직임이 사용된다.
HEVC 움직임 보상 보간 필터들과 동일한 필터 길이 및 정규화 계수를 가지는 SHVC 업샘플링 보간 필터들이 추가적인 분수 픽셀 위치들에 대한 움직임 보상 보간 필터로 사용된다. 크로마 성분 움직임 벡터 정확도는 JEM에서 1/32 샘플이며, 1/32 픽셀 분수 위치들의 추가적인 보간 필터들은 두 개의 인접한 1/16 픽셀 분수 위치들의 필터들의 평균을 이용하여 유도된다.
2.4 중복된 블록 움직임 보상(Overlapped block motion compensation: OBMC)의 예들
JEM에서 OBMC는 CU 레벨의 구문을 사용하여 켜지고 꺼질 수 있다. JEM에서 OBMC가 사용되는 경우, OBMC는 CU의 우측 및 아래쪽 경계들을 제외한 모든 움직임 보상(MC) 블록 경계들에 대해 실행된다. 게다가, 그것은 루마 및 크로마 성분들 모두에 대해 적용된다. JEM에서 MC 블록은 코딩 블록에 해당된다. CU가 서브 CU 모드로(서브 CU 머지, 어파인 및 FRUC 모드 포함) 코딩될 경우, 상기 CU의 각각의 서브 블록이 MC 블록이다. 도 13a 및 도 13b에서와 같이, 균일한 방식으로 CU 경계들을 처리하기 위해, OBMC는 모든 MC 블록 경계들에 대해 서브 블록 레벨에서 수행되며, 이때 서브 블록 사이즈는 4x4와 같이 설정된다.
도 13a는 CU/PU 경계에 있는 서브 블록들을 보여주며, 빗금친 서브 블록들은 OBMC가 적용되는 것들이다. 유사하게, 도 13b는 ATMVP 모드에서 서브 PU들을 보여준다.
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에 대해 사용된다. 오직 PN의 2행/열 만이 PC에 추가되는 작은 MC 블록들은 예외이다(즉, 코딩 블록의 높이 또는 폭이 4와 같거나 CU이 서브 CU 모드로 코딩되는 경우). 이 경우, 가중치 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 지역 조명 보상(Local Illumination Compensation: LIC)의 예들
LIC는 스케일링 팩터 a 및 오프셋 b를 사용하는, 조명 변화를 위한 선형 모델에 기반한다. 또한 LIC는 화면 간 모드로 코딩된 코딩 유닛(CU) 각각에 대해 적응적으로 사용되거나 사용되지 않는다.
LIC가 CU에 대해 적용되는 경우, 상기 현재 CU의 주변 샘플들 및 그것들에 상응하는 참조 샘플들을 사용하여 파라미터 a 및 b를 도출하기 위해 최소 자승 오차법이 사용된다. 도 14는 IC 알고리즘의 파라미터들을 유도하는 데에 사용되는 주변 샘플들의 예를 보여준다. 구체적으로, 도 14에 도시된 것처럼, 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에서, 오직 병진 움직임 모델만이 움직임 보상 예측(Motion Compensation Prediction: MCP)에 대해 적용된다. 하지만, 카메라 및 대상들은 줌 인/아웃, 회전, 원근적 움직임 및/또는 기타 불규칙 움직임들과 같은 여러 종류의 움직임을 가진다. 반면에, JEM은 단순화된 어파인 변환 움직임 보상 예측에 적용된다. 도 15는 두 제어 포인트 움직임 벡터들 V0 및 V1에 의해 기술되는 블록(1400)의 어파인 움직임 필드의 예를 도시한다. 상기 블록(1400)의 상기 움직임 벡터 필드(Motion Vector Field: MVF)는 아래 식으로 기술될 수 있다.
도 15에 도시된 바와 같이, (v0x, v0y) 는 좌측 상단 코너 제어 포인트의 움직임 벡터이며, (v1x, v1y) 는 우측 상단 코너 제어 포인트의 움직임 벡터이다. 움직임 보상 예측을 단순화하기 위해, 서브 블록 기반 어파인 변환 예측이 적용될 수 있다. 서브 블록 크기 MxN은 아래와 같이 유도된다.
여기서, MvPre는 움직임 벡터 분수 정확도(예를 들어, JEM에서 1/16)이다. (v2x, v2y) 는 식(1)에 따라 계산된, 좌측 하단 제어 포인트의 움직임 벡터이다. M과 N은 필요한 경우 하향 조정되어 각각 w와 h의 제수로 만들 수 있다.
도 16은 블록(1500)에 대한 서브 블록 당 어파인 MVF의 일 예를 도시한다. 각 MxN 서브 블록의 움직임 벡터를 유도하기 위해, 각 서브 블록의 가운데 샘플의 움직임 벡터는 식(1)에 따라 계산되어 움직임 벡터 분수 정확도(예를 들어, JEM에서 1/16)로 라운딩될 수 있다. 다음으로, 유도된 움직임 벡터를 가지는 각 서브 블록의 예측을 생성하기 위해 움직임 보상 보간 필터들이 적용될 수 있다. MCP 후에, 각 서브 블록의 고정확도 움직임 벡터는 정규 움직임 벡터(normal motion vector)와 같은 정확도로 라운딩되고 보존된다.
2.6.1 AF_INTER 모드의 실시예들
JEM에는 AF_INTER 모드 및 AF_MERGE 모드라는 두 어파인 움직임 모드가 있다. 폭과 높이가 모두 8보다 큰 CU들에 대해서는 AF_INTER 모드가 적용될 수 있다. CU 레벨에서 어파인 플래그는 AF_INTER 모드가 사용되는지 여부를 지시하기 위해 비트스트림으로 시그널링된다. AF_INTER 모드에서, 움직임 벡터 쌍 을 가지는 후보 리스트는 주변 블록들을 사용하여 구성된다.
도 17는 AF_INTER 어파인 움직임 모드에서 움직임 벡터 예측(MVP)의 일 예를 보여준다. 도 17에 도시된 바와 같이, v0은 서브 블록 A, B 및 C의 움직임 벡터들로부터 선택된다. 주변 블록들로부터의 움직임 벡터들은 참조 리스트에 따라 스케일링될 수 있다. 움직임 벡터들은 또한 주변 블록에 대한 참조의 픽처 오더 카운트(Picture Order Count: POC), 현재 CU에 대한 참조의 POC 그리고 현재 CU의 POC 사이의 관계에 따라 스케일링될 수 있다. 주변 서브 블록 D 및 E로부터 v1을 선택하는 접근법은 유사하다. 만약 후보 리스트의 수가 2 보다 작다면, 상기 리스트는 각각의 AMVP 후보들을 복제하여 구성된 움직임 벡터 쌍으로 패딩된다. 상기 후보 리스트가 2 보다 큰 경우, 후보들은 먼저 주변 움직임 벡터들에 따라(예를 들어, 쌍 후보에서 두 움직임 벡터들의 유사성에 기반하여) 구분될 수 있다. 일부 구현들에서는, 처음 두 후보들이 선택된다. 일부 실시예들에서는, 어떤 움직임 벡터 쌍 후보가 현재 CU의 제어 포인트 움직임 벡터 예측(Control Point Motion Vector Prediction: CPMVP)으로 선택되는지를 율-왜곡 코스트 체크를 사용하여 결정한다. 후보 리스트에서 CPMVP의 위치를 지시하는 인덱스는 비트스트림에서 시그널링될 수 있다. 현재 어파인 CU의 CPMVP가 결정된 후에, 어파인 움직임 추정이 적용되고 제어 포인트 움직임 벡터(Control Point Motion Vector: CPMV)가 발견된다. 다음으로, CPMV와 CPMVP간의 차이가 비트스트림에서 시그널링된다.
도 18a 및 도 18b에 도시된 바와 같이, AF_INTER 모드에서 4/6 파라미터 어파인 모드가 사용되는 경우, 2/3 제어 포인트들이 요구되며, 따라서 2/3 MVD가 이 제어 포인트들에 대해 코딩될 필요가 있다. 기존 구현에서, MV는 다음과 같이 유도될 수 있다. 예를 들어, mvd0으로부터 mvd1 및 mvd2가 예측된다.
여기서, 도 18b에 도시된 것처럼, , mvdi 및 mv1은 각각 예측된 움직임 벡터, 움직임 벡터 차이, 그리고 좌측 상단 픽셀(i = 0), 우측 상단 픽셀(i = 1) 또는 좌측 하단 픽셀(i = 2)의 움직임 벡터이다. 일부 실시예들에서, 두 모션 벡터들의 합은(예를 들어, mvA(xA, yA) 및 mvB(xB, yB)) 두 구성요소들 각각의 총합과 같다. 예를 들어, newMV = mvA + mvB는 newMV의 두 구성요소들이 각각 (xA + xB) 및 (yA + yB)로 설정됨을 의미한다.
2.6.2 AF_INTER 모드에서 고속 어파인 ME 알고리즘의 예들
어파인 모드의 일부 실시예들에서, 둘 또는 세 개의 제어 포인트들의 MV는 함께 결정될 필요가 있다. 다수의 MV들을 곧바로 탐색하는 것은 계산상으로 복잡하다. 일 예에서, 고속 어파인 ME 알고리즘이 제안되어 VTM/BMS에 채택된다.
예를 들어, 상기 고속 어파인 ME 알고리즘은 4-파라미터 어파인 모델에 대하여 기술되며, 이 아이디어는 6-파라미터 어파인 모델로 확장될 수 있다.
(a-1)을 a'로 바꾸면 움직임 벡터들을 아래와 같이 수정할 수 있다.
두 제어 포인트들 (0, 0) 및 (0, w)의 움직임 벡터들이 알려진다고 가정하는 경우, 어파인 파라미터들은 식(5)로부터 아래와 같이 도출될 수 있다.
움직임 벡터들은 아래와 같이 벡터 형식으로 표현될 수 있다.
여기서, P = (x, y)는 픽셀 위치이다.
일부 실시예들에서 그리고 인코더에서, AF_INTER의 MVD는 반복적으로 유도될 수 있다. MVi(P)를 위치 P에 대한 i번째 반복에서 유도된 MV라 하고, dMVC i를 i번째 반복에서 MVC에 대해 업데이트된 델타라 하자. (i+1)번째 반복의 경우는 아래와 같이 표현된다.
Picref를 참조 픽처로, Piccur를 현재 픽처라하고, Q = P + MVi(P)라 하자. MSE를 매칭 기준으로 사용하는 경우, 최소화되어야 할 함수는 아래와 같이 표현될 수 있다.
가 충분히 작다고 가정되는 경우, 는 1차 테일러 전개식에 기반하는 근사치로서 아래와 같이 다시 정리될 수 있다.
여기서, 만약 를 사용하는 경우, 아래와 같다.
는 에러 함수의 도함수를 0으로 설정하고 그리고 나서 에 따라 제어 포인트 (0, 0) 및 (0, w)의 델타 MV를 계산하여 아래와 같이 유도될 수 있다.
일부 실시예들에서, 이러한 MVD 도출 과정은 n번 반복될 수 있으며, 최종 MVD는 아래와 같이 산출될 수 있다.
상기 언급된 구현에서, mvd1으로 표시되는 제어 포인트 (0, 0)의 델타 MV로부터 mvd1으로 표시된 제어 포인트 (0, w)의 델타 MV를 예측하는 단계는 가 mvd1에 대해 인코딩되는 결과로 귀결된다.
2.6.3 AF_MERGE 모드의 실시예들
CU가 AF_MERGE 모드에서 적용되는 경우, 그것은 복원된 유효한 주변 블록들로부터 어파인 모드로 코딩된 제1 블록을 획득한다. 도 19a는 현재 CU(1800)에 대한 후보 블록들의 선택 순서의 일 예를 도시한다. 도 19a에 도시된 바와 같이, 선택 순서는 현재 CU(1800)의 좌측(1801)에서 출발하여 상단(1802), 우측 상단(1803), 좌측 하단(1804) 그리고 좌측 상단(1805) 순일 수 있다. 도 19b는 AF_MERGE 모드에서 현재 CU(1800)에 대한 후보 블록들의 다른 예를 도시한다. 도 19B에 도시된 것처럼, 좌하단 주변 블록(1801)이 어파인 모드로 코딩된 경우, 상기 서브 블록(1801)을 포함하는 CU의 좌상단 코너, 우상단 코너 및 좌하단 코너의 움직임 벡터들 v2, v3 및 v4가 도출된다. 상기 현재 CU(1801)의 좌상단 코너의 움직임 벡터 v0는 v2, v3 및 v4를 기반으로 산출된다. 상기 현재 CU의 우상단의 움직임 벡터 v1은 그에 맞춰 산출될 수 있다.
현재 CU의 CPMV인 v0 및 v1가 식(1)에서 어파인 움직임 모델에 따라 계산되는 경우, 현재 CU의 MVF가 생성될 수 있다. 현재 CU가 AF_MERGE 모드로 코딩되는지 여부를 식별하기 위해서, 적어도 어파인 모드로 코딩된 적어도 하나의 주변 블록이 존재하는 경우, 어파인 플래그가 비트스트림으로 시그널링될 수 있다.
2.7 패턴 정합 움직임 벡터 유도(Pattern Matched Motion Vector Derivation: PMMVD)의 예들
PMMVD 모드는 프레임율 상승 변환(Frame-Rate Up Conversion: FRUC) 기법에 기반한 특별한 머지 모드이다. 이 모드에서는 블록의 움직임 정보가 시그널링되지 않고 디코더 측에서 유도된다.
FRUC 플래그는 그것의 머지 플래그가 참일 때에 CU에 대해 시그널링될 수 있다. 상기 FRUC 플래그가 거짓이면, 머지 인덱스가 시그널링될 수 있고, 레귤러 머지 모드가 사용된다. 상기 FRUC 플래그가 참이면, 추가 FRUC 모드 플래그가 시그널링되어 상기 블록의 움직임 신호를 유도하기 위해 어떤 방법(예를 들어, 양방향 매칭 또는 템플릿 매칭)이 사용되어야 하는지 지시할 수 있다.
인코더 측에서, CU에 대해 FRUC 머지 모드를 사용할지 여부에 대한 결정은 일반(normal) 머지 후보에 대해서와 같이 RD 코스트 선택에 기반한다. 예를 들어, 복수의 매칭 모드들(예를 들어, 양방향 매칭 및 템플릿 매칭)이 RD 코스트 선택을 사용하여 CU에 대해 확인된다. 최소 비용으로 이어지는 것은 다른 CU 모드들과 더 비교된다. 만약 FRUC 매칭 모드가 가장 효율적인 경우, FRUC 플래그는 해당 CU에 대해 참으로 설정되고, 관련 매칭 모드가 사용된다.
대개의 경우, FRUC 머지 모드에서의 움직임 유도 프로세스는 2 단계를 가진다. CU 레벨 움직임 탐색이 먼저 수행되고, 그 다음으로 서브 CU 레벨 움직임 개선이 수행된다. CU 레벨에서, 초기 움직임 벡터는 양방향 매칭 또는 템플릿 매칭에 기반하여 CU 전체에 대해 유도된다. 먼저, MV 후보들의 리스트가 생성되고, 최소 매칭 코스트로 이어지는 후보가 추가 CU 레벨 개선을 위한 출발점으로 선택된다. 그 다음으로, 상기 출발점을 중심으로 양방향 매칭 또는 템플릿 매칭을 기반으로 한 로컬 탐색이 수행된다. 최소 매칭 코스트로 귀결되는 MV가 CU 전체에 대한 MV로 간주된다. 그 후, 유도된 CU 움직임 벡터들을 출발점으로 하여, 움직임 정보는 서브 CU 레벨에서 추가로 개선된다.
예를 들어, CU 움직임 정보 유도를 위해 다음과 같은 유도 과정이 수행된다. 첫 번째 단계에서, 전체 CU에 대한 MV가 유도된다. 두 번째 단계에서, 상기 CU는 서브 CU들로 더 분할된다. M의 값은 식(22) 에서와 같이 계산되며, D는 미리 정의된 분할 깊이로 JEM에서 기본적으로 3으로 설정된다. 다음으로, 각 서브 CU에 대한 MV가 유도된다.
도 20은 프레임율 상향 변환(FRUC) 기법에 사용되는 양방향 매칭의 일 예를 도시한다. 양방향 매칭은 두 상이한 참조 픽처들(1910, 1911)에서 현재 CU의 움직임 궤적을 따라 두 블록들 간의 가장 가까운 매칭을 찾음으로써 현재 CU(1900)의 움직임 정보를 유도하는 데에 사용된다. 연속적인 움직임 궤적의 가정하에, 두 참조 블록을 가리키는 움직임 벡터 MV0(1901) 및 MV1(1902)는 현재 픽처와 상기 두 참조 픽처 사이의 시간적 거리들, 즉 TD0(1903) 및 TD1(1904)에 비례한다. 일부 실시예들에서, 현재 픽처(1900)가 두 참조 픽처들(1910, 1911) 사이에 시간적으로 존재하고 상기 현재 픽처에서 상기 두 참조 픽처까지의 시간적 거리가 같을 때, 양방향 매칭은 미러 기반 양방향 MV가 된다.
도 21은 프레임율 상향 변환(FRUC) 기법에 사용되는 템플릿 매칭의 일 예를 도시한다. 템플릿 매칭은 현재 픽처에서의 템플릿(예를 들어, 현재 CU의 상단 및/또는 좌측 인접 블록들)과 참조 픽처(2010)에서의 블록(예를 들어, 템플릿과 동일한 크기) 사이에서 가장 가까운 매칭을 찾아 현재 CU(2000)의 움직임 정보를 도출하는 데 사용될 수 있다. 앞서 언급한 FRUC 머지 모드를 제외하고 템플릿 매칭은 AMVP 모드에도 적용될 수 있다. JEM 및 HEVC 모두에서, AMVP는 두 후보를 가진다. 템플릿 매칭 방법으로 새로운 후보가 유도될 수 있다. 만약 템플릿 매칭에 의해 새로 유도된 상기 후보가 기존 제1 AMVP 후보와 다른 경우, AMVP 후보 리스트의 맨 처음에 삽입되고 해당 리스트 크기는 2로 설정된다(예를 들어, 기존 제2 AMVP 후보를 제거). AMVP 모드에 적용시, 오직 CU 레벨 탐색만 적용된다.
CU 레벨에서 설정된 MV는 다음 후보들 및 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 후보는 (1) CU 레벨 탐색에서 결정된 MV, (2) 상단, 좌측, 좌측 상단 및 우측 상단 주변 MV들, (3) 참조 픽처들에서 동일 위치(collocated) MV들의 스케일링된 버전들, (4) 하나 또는 그 이상의(예를 들어, 최대 4개의) ATMVP 후보들, 그리고 (5) 하나 또는 그 이상의(예를 들어, 최대 4개의) STMVP 후보들을 포함한다. 참조 픽처로부터 스케일링된 MV는 다음과 같이 유도된다. 두 리스트의 참조 픽처들이 횡단된다. 참조 픽처에서 서브 CU의 동일 위치에 있는(collocated) MV들은 시작 CU 레벨 MV의 레퍼런스로 스케일링된다. ATMVP 및 STMVP 후보들은 4개의 제1 후보들이 될 수 있다. 서브 CU 레벨에서 하나 또는 그 이상의(예를 들어, 최대 17개의) MV가 후보 리스트에 추가된다.
보간된 MV 필드의 생성 프레임을 코딩하기 전에, 단방향 ME를 기반으로 픽처 전체에 대해 보간된 움직임 필드가 생성된다. 다음으로 상기 움직임 필드는 후에 CU 레벨 또는 서브 CU 레벨 MV 후보들로 사용될 수 있다.
일부 실시예들에서, 두 참조 리스트에 있는 각 참조 픽처의 움직임 필드는 4x4 블록 레벨에서 횡단된다. 도 22는 FRUC 기법에서 단방향 움직임 추정(Motion Estimation: ME)(2100)의 일 예를 보여준다. 각 4x4 블록에 대해, 만약 현재 픽처에서 4x4 블록을 통과하는 블록과 관련된 움직임이 있고 상기 블록에 보간된 움직임이 할당되지 않은 경우, 참조 블록의 움직임은 시간적 거리 TD0 및 TD1에 따라 상기 현재 픽처로 스케일링되고 (HEVC에서 TMVP의 MV 스케일링과 동일한 방식), 상기 스케일링된 움직임은 현재 프레임의 블록에 할당된다. 스케일링된 MV가 4x4 블록에 할당되지 않은 경우, 블록의 움직임은 보간된 움직임 필드에서 사용할 수 없는 것으로 표시된다.
보간 및 매칭 코스트 움직임 벡터가 분수 샘플 위치를 가리키는 경우, 움직임 보상된 보간이 필요하다. 복잡성을 줄이기 위해, 양방향 매칭과 템플릿 매칭 모두에 대해 일반(regular) 8 탭 HEVC 보간 대신 양방향 선형(bi-linear) 보간이 사용될 수 있다.
매칭 코스트 계산은 단계마다 조금씩 다르다. CU 레벨에서 설정된 후보자 세트에서 후보자를 선택하는 경우, 매칭 코스트는 양방향 매칭 또는 템플릿 매칭의 절대 차 합(Sum of Absolute Difference: SAD)일 수 있다. 시작 MV가 결정된 후 서브 CU 레벨 탐색에서 양방향 매칭의 매칭 코스트 C는 다음과 같이 계산된다.
여기서, w는 가중치이다. 일부 실시예들에서, w는 경험적으로 4로 설정될 수 있다. MV and MVS는 각각 현재 MV와 시작 MV를 나타낸다. SAD는 서브 CU 레벨의 템플릿 매칭의 매칭 코스트로 여전히 사용될 수 있다.
FRUC 모드에서 MV는 루마 샘플들만을 사용하여 유도된다. 유도된 움직임은 MC 화면 간 예측을 위한 루마와 크로마 모두에 사용된다. MV가 결정되면 루마에 대해서는 8 탭 보간 필터를, 크로마에 대해서는 4 탭 보간 필터를 사용하여 최종 MC를 수행한다.
MV 개선은 양방향 매칭 코스트 또는 템플릿 매칭 코스트를 기준으로 하는 패턴 기반 MV 탐색이다. JEM에서는 2개의 탐색 패턴, 즉 무제약 중심 바이어스 다이아몬드 탐색(Unrestricted Center-biased Diamond Search: UCBDS) 및 적응형 교차 탐색이 각각 CU 레벨 및 서브 CU 레벨의 MV 개선을 위해 지원된다. CU 레벨 및 서브 CU 레벨 모두의 MV 개선에서, MV는 1/4 루마 샘플 MV 정확도에서 직접적으로 탐색되고, 1/8 루마 샘플 MV 개선이 뒤따른다. CU 및 서브 CU 단계에 대한 MV 개선의 탐색 범위는 8개의 루마 샘플과 같게 설정된다.
양방향(bilateral) 매칭 머지 모드에서는 양예측이 적용된다. 왜냐하면 CU의 움직임 정보가 두 상이한 참조 픽처들에서 상기 현재 CU의 움직임 궤적을 따라 두 블록들 간의 가장 가까운 매칭을 기반으로 유도되기 때문이다. 템플릿 매칭 머지 모드에서, 인코더는 CU에 대해 list0으로부터의 단-예측(uni-prediction), list1로부터의 단-예측, 또는 양-예측 가운데 선택할 수 있다. 상기 선택은 아래와 같이 템플릿 매칭 코스트를 기반으로 할 수 있다.
만약 costBi <= factor * min (cost0, cost1)라면, 양-예측이 사용된다. 그렇지 않고, 만약 cost0 <= cost1 이면, list0으로부터의 단-예측이 사용된다. 그 외에는, list1으로부터의 단-예측이 사용된다.
여기서, cost0은 list0 템플릿 매칭의 SAD, cost1은 list1 템플릿 매칭의 SAD, 그리고 costBi는 양-예측 템플릿 매칭의 SAD이다. 예를 들어, 계수의 값이 1.25와 같으면, 이는 선택 프로세스가 양-예측에 편향되어 있음을 의미한다. 화면 간 예측 방향 선택은 오직 CU 레벨 템플릿 매칭 프로세스에만 적용될 수 있다.
2.8 양방향 광학 흐름(Bi-directional Optical Flow: BIO)의 예들
양방향 광학 흐름(BIO) 방법은 양방향에 대한 블록 단위 움직임 보상의 상부에 수행되는 샘플 단위 움직임 개선이다. 일부 구현들에서, 샘플 레벨 움직임 개선은 시그널링을 사용하지 않는다.
을 블록 움직임 보상 후 레퍼런스 k (k=0, 1)로부터의 루마 값이라 하고, 그래디언트(gradient)의 각각 수평 및 수직 성분들이라 하자. 광학 흐름이 유효하다고 가정하면, 움직임 벡터 는 아래 식에 의해 주어진다.
각 샘플의 운동 궤적에 대해 이러한 광학 흐름 방정식과 헤르미트(Hermite) 보간법을 결합하면, 끝에서 도함수들 및 함수 값들 모두를 매칭시키는 고유한 3차 다항식이 획득된다. t=0에서 이 다항식의 값은 BIO 예측이다.
도 23은 양방향 광학 흐름(BIO) 방법에서 광학 흐름 궤적의 일 예를 보여준다. 여기서, 은 참조 프레임까지의 거리들을 나타낸다. 거리 는 Ref0 및 Ref1에 기반하여 계산된다. 즉, 만약 두 예측 모두 같은 방향에서(예를 들어, 둘 다 과거로부터 또는 미래로부터) 획득된다면, 부호들은 다르다(예를 들어, e.g., ). 이때, 예측이 동일한 순간으로부터 오는 것이 아니라면(예를 들어, e.g., ), BIO가 적용된다. 참조된 양 영역 모두 넌-제로 움직임을 가지며(예를 들어, 블록 움직임 벡터들은 시간 거리에 비례한다(예를 들어, 움직임 벡터 필드(vx, vy)는 점 A 및 점 B에서의 값들 사이의 차이 를 최소화함으로써 결정된다. 도 9a 및 도 9b는 움직임 궤적과 참조 프레임 평면들 간의 교차의 일 예를 보여준다. 모델은 에 대해 로컬 테일러 전개식의 제1 선형항만을 사용한다.
상기 식에서의 모든 값들은 로 표시된 샘플 위치에 의존한다. 움직임이 로컬 환경에서 일관적이라고 가정하면, 현재 예측된 점 에 중심이 맞춰진 (2M+1)x(2M+1) 정사각형 윈도우 Ω 내의 는 최소화될 수도 있다. 여기서 M은 2와 같다.
이러한 최적화 문제에 대해, JEM은 수직 방향에서 그 다음으로 수평 방향에서 제1 최소화를 행하는 단순화된 접근법을 사용한다. 그 결과는 아래와 같다.
여기서,
제로 또는 매우 작은 값에 의한 나눗셈을 피하기 위해, 정규화 파라미터들 r 및 m 이 식(28) 및 식(29)에 도입될 수 있다. 이때,
여기서, 는 비디오 샘플들의 비트 깊이이다.
BIO에 대한 메모리 액세스를 정규 양-예측 움직임 보상에 대한 것과 같게 하기 위해, 모든 예측 및 그래디언트 값들인 은 현재 블록 내부의 위치들에 대해 계산된다. 도 24a는 블록(2300) 외부의 액세스 위치들의 예를 보여준다. 도 24a에 도시된 것과 같이, 식(28)에서, 예측된 블록의 경계상의 현재 예측된 점에 중심이 맞춰진 정사각형 윈도우 Ω는 상기 블록 외부의 위치들에 접근할 필요가 있다. JEM에서 상기 블록 외부의 의 값들은 상기 블록 내부의 가장 가까운 가용 값과 같도록 설정된다. 예를 들어, 도 24b에 도시된 바와 같이, 이것은 패딩 영역(2301)으로 구현될 수 있다.
BIO를 사용하면, 움직임 필드가 각 샘플에 대해 개선될 수 있다. 계산 복잡도를 줄이기 위해, BIO의 블록 기반 디자인이 JEM에서 사용된다. 움직임 개선은 4x4 블록에 기반하여 계산될 수 있다. 블록 기반 BIO에서, 4x4 블록 상의 모든 샘플들의 식(28)에 따른 sn의 값들이 합산될 수 있으며, 그 다음 식 (28)에서 합산된 sn의 값들은 상기 4x4 블록에 대한 BIO 움직임 벡터 오프셋을 유도하는 데에 사용된다. 구체적으로, 아래 식이 블록 기반 BIO 유도를 위해 사용될 수 있다.
여기서, 는 예측된 블록의 k번째 4x4 블록에 속한 샘플들의 세트를 표시한다. 관련된 움직임 벡터 오프셋들을 유도하기 위해, 식(28) 및 식(29)에서 교체된다.
일부 시나리오에서, BIO의 MV 레지먼트 (regiment)는 노이즈 또는 불규칙한 움직임으로 인해 신뢰할 수 없을 수도 있다. 그러므로, BIO에서, MV 레지먼트의 크기는 특정 임계값으로 클립된다. 상기 임계값은 현재 픽처의 모든 레퍼런스 픽처들이 모두 한 방향에서 오는지의 여부에 기초하여 결정된다. 예를 들어, 현재 픽처의 모든 참조 픽처들이 한 방향으로부터 오는 경우, 상기 임계값은 로 설정되고, 그렇지 않을 경우, 로 설정된다.
BIO에 대한 그래디언트들(gradients)은 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은 BIO에서 블록 움직임 벡터의 상이한 분수 위치들의 그래디언트 계산을 위해 사용될 수 있는 필터들의 예를 보여준다. 표2는 BIO에서 예측 신호 생성을 위해 사용될 수 있는 보간 필터들의 예를 보여준다.
표 1: BIO에서 그래디언트 계산을 위한 필터들의 예
표 2: BIO에서 예측 신호 생성을 위한 보간 필터들의 예
JEM에서, BIO는 2 개의 예측들이 상이한 참조 픽처들로부터 올 경우, 모든 양방향 예측된 블록들에 적용될 수 있다. LIC (local illumination compensation) 이 CU에 대해 활성화되는(enabled) 경우, BIO는 비활성화 될 수 있다(disabled).
일부 실시예들에서, OBMC는 정상 MC 절차 후에 블록에 대해 적용된다. 계산 복잡성을 줄이기 위해, BIO는 상기 OBMC 절차 동안에는 적용되지 않을 수 있다. 이것은 BIO는 블록에 대한 MC 절차에서 그것 자체의 MV를 사용하는 경우 적용되며, 주변 블록의 MC가 상기 OBMC 절차 동안 사용되는 경우 MC 절차에서 적용되지 않음을 의미한다.
2.9 디코더측 움직임 벡터 개선(decoder-side motion vector refinement: DMVR)의 예들
양-예측 작업에서, 한 블록 영역의 예측을 위해, list0의 움직임 벡터(MV) 및 list1의 MV를 사용하여 각각 형성된 두 예측 블록들이 결합되어 하나의 예측 신호를 형성한다. 디코더측 움직임 벡터 개선(DMVR) 방법에서, 양-예측의 두 움직임 벡터들은 양방향(bilateral) 템플릿 매칭 절차에 의해 추가로 개선된다. 추가 움직임 정보의 전송 없이 개선된 MV를 획득하기 위해, 상기 양방향 템플릿 매칭은 양방향 템플릿과 참조 픽처들에서의 복원 샘플들 사이에서 왜곡 기반 탐색에 적용된다.
도 25에서와 같이, DMVR에서, 양방향 템플릿은 list0의 초기 MV0 및 list의 MV1으로부터 두 예측 블록들의 가중치가 부여된(weighted) 결합(즉, 평균)으로 생성된다. 상기 템플릿 매칭 절차는 생성된 템플릿 및 참조 픽처에서의 샘플 영역(초기 예측 블록 주변) 사이의 코스트를 계산하는 단계로 구성된다. 두 참조 픽처들 각각에 대해, 최소 템플릿 코스트를 산출하는 MV는 해당 리스트의 업데이트된 MV로 간주되어 원래 리스트를 대체한다. JEM에서는 9개의 MV 후보들이 각 리스트에 대해 탐색된다. 상기 9개의 MV 후보들은 원래 MV 및 수평 또는 수직 방향 또는 양방향으로 오프셋된 하나의 루마 샘플을 가지는 8개의 주변 MV들을 포함한다. 마지막으로 2개의 새로운 MV들, 다시 말해, 도 25에서와 같이, MV0' 및 MV1'는 최종 양-예측 결과들을 산출하는 데에 사용된다. 절대차 합(SAD)은 코스트 척도로 사용된다.
DMVR는 추가 구문 요소의 전송 없이, 하나의 MV는 과거의 참조 픽처로부터, 다른 MV는 미래의 참조 픽처로부터 사용하는 양-예측의 머지 모드를 위해 적용된다. JEM에서, LIC, 어파인 모션, FRUC 또는 서브 CU 머지 후보가 CU에 대해 활성화되는 경우, DMVR은 적용되지 않는다.
2.10 대칭 움직임 벡터 차분의 예들
대칭 움직임 벡터 차분(Symmetric Motion Vector Difference: SMVD)은 MVD를 더 효율적으로 부호화하기 위해 제안되었다.
첫째로, 슬라이스 레벨에서 변수들 BiDirPredFlag, RefIdxSymL0 및 RefIdxSymL1은 아래와 같이 유도된다.
현재 픽처에 가장 가까운 참조 픽처 리스트 0의 전방 참조 픽처가 탐색된다. 만약 탐색되면, RefIdxSymL0은 상기 전방 픽처의 참조 인덱스와 같도록 설정된다.
현재 픽처에 가장 가까운 참조 픽처 리스트1의 후방 참조 픽처가 탐색된다. 탐색되는 경우, RefIdxSymL1는 상기 후방 픽처의 참조 인덱스와 같도록 설정된다.
전방 픽처와 후방 픽처가 모두 탐색되는 경우, BiDirPredFlag는 1로 설정된다.
그렇지 않은 경우, 아래 절차가 적용된다.
현재 픽처에 가장 가까운 참조 픽처 리스트 0의 후방 참조 픽처가 탐색된다. 만약 탐색되면, RefIdxSymL0은 상기 후방 픽처의 참조 인덱스와 같도록 설정된다.
현재 픽처에 가장 가까운 참조 픽처 리스트1의 전방 참조 픽처가 탐색된다. 탐색되는 경우, RefIdxSymL1는 상기 전방 픽처의 참조 인덱스와 같도록 설정된다.
전방 픽처와 후방 픽처가 모두 탐색되는 경우, BiDirPredFlag는 1로 설정된다. 그렇지 않은 경우, BiDirPredFlag는 0과 같이 설정된다.
두 번째로, CU 레벨에서, 대칭 모드가 사용되는지 여부를 나타내는 대칭 모드 플래그는 CU에 대한 예측 방향이 양-예측이고 BiDirPredFlag가 1과 같은 경우 명시적으로 시그널링된다.
상기 플래그가 참인 경우, 오직 mvp_l0_flag, mvp_l1_flag 및 MVD0만이 명시적으로 시그널링된다. 참조 인덱스들은 list0 및 list1에 대해 각각 RefIdxSymL0 및 RefIdxSymL1와 같게 설정된다. MVD1은 -MVD0와 같도록 설정된다. 최종 움직임 벡터들은 아래 식에서 제시된다.
도 28은 대칭 모드의 예들을 보여준다.
코딩 유닛 구문에서의 변형들은 표3에 제시된다.
표 3: 코딩 유닛 구문상의 변형들
2.10.1어파인 양-예측 코딩을 위한 대칭 MVD
어파인 모드를 위한 SMVD는 대칭 MVD 모드의 적용을 어파인 양-예측으로 확장하기 위해 제안되었다. 어파인 양-예측에 대칭 MVD모드를 적용하는 경우, 제어 포인트 MVD들은 시그널링되지 않고 유도된다. 리스트 1에 대한 좌측 상단 제어 포인트의 MVD는 선형 움직임의 가정하에 리스트 0으로부터 유도된다. 리스트0에 대한 다른 제어 포인트 MVD들은 0으로 설정된다.
2.11 문맥 적응적 이항 산술 코딩(Context-adaptive binary arithmetic coding: CABAC)
2.11.1 HEVC에서 CABAC 설계
2.11.1.1 HEVC에서 문맥 표현 및 초기화 절차
HEVC에서, 각각의 문맥 변수에 대해, 두 변수들 pStateIdx 및 valMps가 초기화된다.
8 비트 테이블 항목 initValue로부터, 두 4 비트 변수들 slopeIdx 및 offsetIdx가 아래와 같이 유도된다.
문맥 변수들의 초기화에 사용되는 변수 m 및 n은 slopeIdx 및 offsetIdx로부터 아래와 같이 유도된다.
초기화를 위해 pStateIdx 및 valMps에 할당되는 두 값들은 SliceQpY로 표시되는 슬라이스의 루마의 양자화 파라미터로부터 유도된다. 변수 m 및 n이 주어진 경우, 초기화는 아래와 같이 규정된다.
2.11.1.2 HEVC에서 상태 전이 절차
이 절차에 대한 입력들은 현재 pStateIdx, 복호화된 값 binVal 그리고 ctxTable 및 ctxIdx과 연관된 문맥 변수의 valMps 값들이다.
이 절차의 출력들은 업데이트된 pStateIdx 및 ctxIdx과 연관된 문맥 변수의 valMps 값들이다.
복호화된 값 binVal에 따라, 두 변수pStateIdx 및 ctxIdx와 관련된 valMps의 업데이트는 아래 (37)에서와 같이 유도된다.
2.11.2 VVC에서의 CABAC 설계
VVC에서 문맥 적응적 이항 산술 코더(Binary Arithmetic Coder: BAC)는 문맥 업데이팅 절차 및 산술 코더의 측면에서 HEVC의 BAC와 다르게 변화하였다.
아래는 최근에 채택된 제안(JVET-M0473, CE test 5.1.13)을 요약한 것이다.
표 4: VVC에서 CABAC 수정 요약
2.11.2.1 VVC에서 문맥 초기화 절차
VVC에서 초기화를 위해 pStateIdx0 및 pStateIdx1에 할당된 두 값들은 SliceQpY로부터 유도된다. 변수 m 및 n가 주어진 경우, 상기 초기화는 아래와 같이 규정된다.
2.11.2.2 VVC에서 상태 변이 절차
이 절차에 대한 입력들은 현재 pStateIdx0 및 pStateIdx1, 그리고 복호화된 값 binVal이다.
이 절차의 출력들은 ctxIdx과 연관된 문맥 변수의 업데이트된 pStateIdx0 및 pStateIdx1이다.
변수들 shift0 (VVC 표 4의 CABAC 수정 요약에서 변수 a에 해당) 및 shift1 (VVC 표 4의 CABAC 수정 요약에서 변수 b에 해당)는 ctxTable 및 ctxInc에 연관된 shiftIdx값으로부터 유도된다.
복호화된 값 binVal에 따라, ctxIdx와 연관된 두 변수 pStateIdx0 및pStateIdx1의 업데이트는 아래와 같이 유도된다:
3. 기존 구현들의 단점들
기존의 일부 구현들에서, MV/MVD가 어파인 코딩된 블록들에 대해 다수의 MV/MVD 정밀도들의 세트로부터 선택될 수 있다면, 어떻게 더 정확한 움직임 벡터들이 획득될 수 있는지는 불분명한 채로 남는다.
기존의 다른 구현들에서, MV/MVD 정밀도 정보는 어파인 모드에 적용되는 AMVR의 전체적인 코딩 이득을 결정하는 데에도 매우 중요한 역할을 하지만, 이 목표 달성 여부는 여전히 불분명하다.
4. AMVR을 가지는 어파인 모드에 대한 MV 예측자들을 위한 예시적 방법들
현재 개시된 기술의 실시예들은 기존 구현들의 단점을 극복하며, 그럼으로써 더 높은 코딩 효율을 가지는 비디오 코딩을 제공한다. 상기 개시된 기술에 기반하는, 적응적 움직임 벡터 해상도(AMVR)를 가지는 어파인 모드를 위한 움직임 벡터 예측자들의 유도 및 시그널은 기존 및 미래의 비디오 코딩 표준들을 향상시킬 수 있으며, 다양한 구현들에 대해 기술된 아래 예시들에서 상세히 설명된다. 아래에 제시되는 상기 개시된 기술의 예시들은 일반적인 개념들을 설명하며 제한적인 것으로 이해되어서는 안 된다. 일 예로, 명시적으로 달리 지시되지 않는 한, 이 예시들이 기술하는 다양한 특징들은 결합될 수 있다.
일부 실시예들에서, 아래 예시들은 AMVR이 적용되는 경우 어파인 모드 또는 정상 모드에 적용될 수 있다. 이 예시들은 정상적인 화면내 모드에서 MVD를 부호화하는 데에 또는 AF_INTER 모드에서 MVD를 부호화하는 데에 정밀도 Prec (즉, MV는 1 / (2^Prec) 정밀도)가 사용됨을 가정한다. 움직임 벡터 예측자(예를 들어, 주변 블록 MV로부터 받은 예측자) 및 그것의 정밀도는 각각 MVPred(MVPred X , MVPred Y ) 및 PredPrec에 의해 표시된다.
AMVR이 지원되는 어파인 모드의 개선
1. 허용된 MVD 정밀도들의 세트는 픽처별로, 슬라이스별로 또는 블록별로 다를 수 있다.
a. 일 예에서, 허용된 MVD 정밀도들의 세트는 블록 크기, 블록 모양 등과 같은 코딩된 정보에 의존할 수 있다.
b, 허용된 MV 정밀도들의 세트는 미리 정의될 수 있다. (예를 들어, {1/16, 1/4, 1})
c. 허용된 MV 정밀도들의 표시들은 SPS/PPS/VPS/시퀀스 헤더/픽처 헤더/슬라이스 헤더/CTU들의 그룹 등에서 시그널링될 수 있다.
d. 허용된 MV 정밀도들의 세트로부터 선택된 MV 정밀도를 시그널링하는 단계는 블록에 대해 허용된 MV 정밀도의 수에 추가로 의존한다.
2. 어파인 모드에서 사용된 MVD 정밀도를 표시하기 위해 구문 요소가 디코더에 시그널링된다.
a. 일 예에서, 오직 하나의 구문 요소가 어파인 모드 및 AMVR 모드에 적용된 MVD 정밀도들을 표시하기 위해 사용된다.
i. 일 예에서, 동일한 시멘틱들이 사용된다. 즉, 구문 요소의 동일한 값이 AMVR 및 어파인 모드에 대한 동일한 MVD 정밀도로 매핑된다.
ii. 또는, 단일 구문 요소의 시멘틱은 AMVR 모드 및 어파인 모드에 대해 상이하다. 즉, 구문 요소의 동일한 값은 AMVR 및 어파인 모드에 대해 상이한 MVD 정밀도로 매핑될 수 있다.
b. 일 예에서, 어파인 모드가 AMVR을 가지는 MVD 정밀도들의 동일한 세트를 사용하는 경우(예를 들어, MVD 정밀도가 {1, 1/4, 4}-pel), AMVR에서 MVD 구문 요소 정밀도는 어파인 모드에서 재사용된다. 즉, 오직 하나의 구문 요소만이 사용된다.
i. 또는, 더 나아가서, 이 구문 요소를 CABAC 인코더/디코더에서 부호화/복호화하는 경우, 동일하거나 상이한 문맥 모델들이 AMVR 및 어파인 모드를 위해 사용될 수 있다.
ii. 또는, 더 나아가서, 이 구문 요소는 AMVR 및 어파인 모드에서 상이한 시멘틱을 가질 수 있다. 예를 들어, 0, 1 및 2와 같은 이 구문 요소는 AMVR에서 각각 1/4-픽셀, 1-픽셀 및 4-픽셀 MV 정밀도를 지시하며, 어파인 모드에서는 0, 1 및 2와 같은 구문 요소가 각각 1/4-픽셀, 1/16-픽셀 및 1-픽셀 MV 정밀도를 지시한다.
c. 일 예에서, 어파인 모드가 AMVR을 가지는 동일한 수의 MVD 정밀도들을 사용하지만 상이한 세트의 MVD 정밀도들을 사용하는 경우(예를 들어, AMVR에 대한 MVD 정밀도 세트는 {1, 1/4, 4}-픽셀인 반면, 어파인 모드에 대한 MVD 정밀도 세트는 {1/16, 1/4, 1}-픽셀), AMVR에서의 MVD 정밀도 구문 요소는 어파인 모드에서 재사용된다. 즉, 오직 하나의 구문 요소만이 사용된다.
i. 또는, 더 나아가서, 이 구문 요소를 CABAC 인코더/디코더에서 부호화/복호화하는 경우, 동일하거나 상이한 문맥 모델들이 AMVR 및 어파인 모드를 위해 사용될 수 있다.
ii. 또는, 더 나아가서, 이 구문 요소는 AMVR 및 어파인 모드에서 상이한 시멘틱을 가질 수 있다.
d. 일 예에서, 어파인 모드는 AMVR 보다 MVD 정밀도들을 덜 사용하며, AMVR에서의 MVD 정밀도 구문 요소는 어파인 모드에서 재사용된다. 그러나 구문 요소 값들의 서브세트만이 어파인 모드에 대해 유효하다.
i. 또는, 더 나아가서, 이 구문 요소를 CABAC 인코더/디코더에서 부호화/복호화하는 경우, 동일하거나 상이한 문맥 모델들이 AMVR 및 어파인 모드를 위해 사용될 수 있다.
ii. 또는, 더 나아가서, 이 구문 요소는 AMVR 및 어파인 모드에서 상이한 시멘틱을 가질 수 있다.
e. 일 예에서, 어파인 모드는 AMVR 보다 더 많은 MVD 정밀도들을 사용하며, AMVR에서의 MVD 정밀도 구문 요소는 어파인 모드에서 재사용된다. 하지만, 그러한 구문 요소는 어파인 모드에서 더 많은 값들을 허용하도록 연장된다.
i. 또는, 더 나아가서, 이 구문 요소를 CABAC 인코더/디코더에서 부호화/복호화하는 경우, 동일하거나 상이한 문맥 모델들이 AMVR 및 어파인 모드를 위해 사용될 수 있다.
ii. 또는, 더 나아가서, 이 구문 요소는 AMVR 및 어파인 모드에서 상이한 시멘틱을 가질 수 있다.
f. 일 예에서, 새로운 구문 요소가 어파인 모드의 MVD 정밀도를 코딩하기 위해 사용된다. 즉, 두 개의 상이한 구문 요소들이 AMVR 및 어파인 모드의 MVD 정밀도를 코딩하는 데에 사용된다.
g. 어파인 모드를 위한 MVD 정밀도들의 지시를 위한 구문은 아래 조건들 중 하나 또는 모두가 참일 경우 시그널링될 수 있다.
i. 모든 제어 포인트들에 대한 MVD들이 넌-제로(non-zero).
ii. 적어도 하나의 제어 포인트에 대한 MVD가 넌-제로.
iii. 하나의 제어 포인트의 MVD(예를 들어, 제1 CPMV)가 넌-제로.
이 경우, 만약 상기 조건들 중 하나 또는 모두가 만족되지 않으면, MVD 정밀도들을 시그널링할 필요가 없다.
h. 어파인 모드 또는 AMVR 모드를 위한 MVD 정밀도들의 지시를 위한 구문 요소는 맥락들로 코딩될 수 있으며, 상기 맥락들은 코딩된 정보에 의존한다.
i. 일 예에서, 오직 하나의 구문 요소만이 있는 경우, 상기 맥락들은 현재 블록이 어파인 모드로 코딩되는지 여부에 의존할 수 있다.
i. 일 예에서, 맥락은 주변 블록들/시간적 층 인덱스/예측 방향 등의 블록 크기/블록 모양/MVD 정밀도에 의존할 수 있다.
j. 어파인 모드에 대한 다수의 MVD 정밀도들의 사용을 활성화할지 비활성화할지 여부는 SPS/PPS/VPS/시퀀스 헤더/픽처 헤더/슬라이스 헤더/CTU들의 그룹 등에서 시그널링될 수 있다.
i. 일 예에서, 어파인 모드에 대한 다수의 MVD 정밀도들의 사용을 활성화하거나 비활성화하는 정보를 시그널링할지 여부는 다른 구문 요소들에 의존할 수 있다. 예를 들어, 어파인 모드에 대한 MV 및/또는 MVP 및/또는 MVD 정밀도들의 사용을 활성화하거나 비활성화하는 정보는 어파인 모드가 활성화되는 경우 시그널링되며, 어파인 모드가 비활성화되는 경우 시그널링되지 않고 0으로 추론된다.
k. 또는, 복수의 구문 요소들이 어파인 화면 간 모드에서 사용된 MV 및/또는 MVP 및/또는 MVD 정밀도-아래 기술에서 이것들은 모두 "MVD 정밀도"라 지칭됨-를 지시하기 위해 시그널링될 수 있다.
i. 일 예에서, 어파인 화면 간 모드에서 사용된 MVD 정밀도를 지시하는 데에 사용되는 구문 요소와 정상 화면 간 모드(normal inter mode)에서 사용된 MVD 정밀도는 지시하는 데에 사용되는 구문 요소는 상이할 수 있다.
1. 어파인 화면 간 모드에서 사용된 MVD 정밀도 및 정상 화면 간 모드에서 사용된 MVD 정밀도는 지시하는 데에 상이한 수의 구문 요소가 사용될 수 있다.
2. 어파인 화면 간 모드 및 정상 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위한 구문 요소들의 시멘틱은 상이할 수 있다.
3. 어파인 화면 간 모드 및 정상 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위한 하나의 구문 요소를 코딩하는 산술 코딩에서의 맥락 모델들은 상이할 수 있다.
4. 어파인 화면 간 모드 및 정상 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위한 하나의 구문 요소를 코딩하는 산술 코딩에서 맥락 모델들을 유도하기 위한 방법들은 상이할 수 있다.
ii. 일 예에서, 제1 구문 요소(예를 들어, amvr_flag)는 어파인 코딩된 블록에서 AMVR을 적용할지를 지시하기 위해 시그널링될 수 있다.
1. 상기 구문 요소는 조건적으로 시그널링된다.
* a. 일 예로, 상기 제1 구문 요소(amvr_flag)의 시그널링은 현재 블록이 특정 모드(예를 들어, CPR/IBC 모드)로 코딩된 경우 생략된다.
b. 일 예에서, 상기 제1 구문 요소(amvr_flag)의 시그널링은 모든 CPMV의 MVD-수평 및 수직 성분들 모두 포함-가 모두 제로인 경우 생략된다.
c. 일 예에서, 상기 제1 구문 요소(amvr_flag)의 시그널링은 하나의 선택된 CPMV의 MVD들-수평 및 수직 성분들 모두 포함-이 모두 제로인 경우 생략된다.
i. 일 예에서, 상기 선택된 CPMV의 MVD는 코딩/디코딩 되어야 할 제1 CPMV의 MVD이다.
* d. 일 예에서, 상기 제1 구문 요소(amvr_flag)의 시그널링은 어파인 코딩된 블록에 대한 복수의 MVD 정밀도들의 활성화 사용이 거짓인 경우 생략된다.
e. 일 예에서, 상기 제1 구문 요소는 아래 조건에서 시그널링될 수 있다.
i. 어파인 코딩된 블록에 대한 다수의 MVD 정밀도들의 활성화 사용이 참이며, 현재 블록은 어파인 모드로 코딩된다.
ii. 또는, 어파인 코딩된 블록에 대한 다수의 MVD 정밀도들의 활성화 사용이 참이며, 현재 블록이 어파인 모드로 코딩되고, 그리고 CPMV의 MVD의 적어도 하나의 성분이 0과 같지 않다.
iii. 또는, 어파인 코딩된 블록에 대한 다수의 MVD 정밀도들의 활성화 사용이 참이며, 현재 블록이 어파인 모드로 코딩되고, 그리고 선택된 CPMV의 MVD의 적어도 하나의 성분이 0과 같지 않다.
1. 일 예에서, 상기 선택된 CPMV의 MVD는 코딩/디코딩 되어야 하는 제1 CPMV의 MVD이다.
2. AMVR이 어파인 코딩된 블록에 적용되지 않거나 제1 구문 요소가 존재하지 않는 경우, 디폴트 MV 및/또는 MVD 정밀도가 활용된다.
a. 일 예에서, 상기 디폴트 정밀도는 1/4 픽셀이다.
b. 또는, 상기 디폴트 정밀도는 어파인 코딩된 블록들에 대한 움직임 보상에 사용되는 것으로 설정된다.
3. 예를 들어, amvr_flag 가 0과 같으며, 어파인 모드의 MVD 정밀도는 1/4 픽셀이며, 그 외의 경우에 어파인 모드의 MVD 정밀도는 다른 값들일 수 있다.
a. 또는, 더 나아가서, 추가적인 MVD 정밀도들이 제2 구문 요소를 통해 추가로 시그널링될 수 있다.
iii. 일 예에서, amvr_coarse_precision_flag와 같은 제2 구문 요소는 어파인 모드의 MVD 정밀도를 지시하기 위해 시그널링될 수 있다.
1. 일 예에서, 상기 제2 구문 요소가 시그널링되는지 여부는 제2 구문 요소에 의존할 수 있다. 예를 들어, 상기 제2 구문 요소는 상기 제2 구문 요소가 1인 경우에만 시그널링된다.
2. 일 예에서, 상기 제2 구문 요소가 0인 경우, 어파인 모드의 MVD 정밀도는 1 픽셀이다. 그 외의 경우에, 어파인 모드의 MVD 정밀도는 1/16 픽셀이다.
3. 일 예에서, 상기 제2 구문 요소가 0이면, 어파인 모드의 MVD 정밀도는 1/16 픽셀이다. 그 외의 경우에는, 어파인 모드의 MVD 정밀도가 풀 픽셀이다.
iv. 일 예에서, 어파인 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위해 사용되는 구문 요소는 같은 이름을 가지지만 정상 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위해 사용되는 구문 요소와 같은 문맥 모델들을 공유한다.
1. 또는, 어파인 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위해 사용되는 구문 요소는 같은 이름을 가지지만 정상 화면 간 모드에서 사용된 MVD 정밀도를 지시하기 위해 사용되는 구문 요소와는 다른 문맥 모델들을 사용한다.
3. 어파인 코딩된 블록에서 AMVR을 적용할지 또는 어떻게 적용할지는 현재 블록의 참조 픽처에 의존할 수 있다.
i. 일 예에서, 참조 픽처가 현재 픽처인 경우, AMVR은 적용되지 않는다. 즉, 화면 내 블록 복사가 현재 블록에 적용된다.
인코더를 위한 어파인 모드에서 AMVR의 고속 알고리즘
어파인 모드 및 AMVR 모드의 RD 코스트 (실제 RD 코스트, 또는 SATD/SSE/SAD 코스트와 대략적인 비트 코스트의 합산)를IMV = i(i = 0, 1 or 2)에 대해 affineCosti and amvpCosti로 표시한다. 여기서, IMV = 0 는 1/4 픽셀 MV를 의미하고, IMV = 1는 AMVP 모드에 대해 정수 MV, 어파인 모드에 대해 1/16 픽셀 MV를 의미하며, IMV = 2는 AMVP 모드에 대해 4 픽셀 MV, 어파인 모드에 대해 정수 MV를 의미한다. 머지 모드의 RD 코스트는 mergeCost로 표시한다.
4. 현재 CU의 부모 CU의 최선의 모드가 AF_INTER 모드 또는 AF_MERGE 모드가 아닐 경우, AMVR은 현재 CU의 어파인 모드에 대해 비활성화될 것이 제안된다.
a. 또는, 상기 부모 CU의 최선의 모드가 AF_INTER 모드가 아닌 경우, AMVR은 현재 CU의 어파인 모드에 대해 비활성화된다.
5. 만약 affineCost0 > th1 * amvpCost0라면, AMVR은 어파인 모드에 대해 비활성화될 것으로 제안된다. 여기서, th1은 양의 임계치이다.
a. 또는, 추가로, min(affineCost0, amvpCost0) > th2 * mergeCost인 경우, AMVR은 어파인 모드에 대해 비활성화된다. 여기서, th2은 양의 임계치이다.
b. 또는, 추가로, affineCost0 > th3 * affineCost1인 경우, AMVR은 어파인 모드에 대해 비활성화된다. 여기서, th3은 양의 임계치이다.
6. 만약 amvpCost0 > th4 * affineCost0라면, AMVR은 어파인 모드에 대해 비활성화될 것으로 제안된다. 여기서, th4은 양의 임계치이다.
a. 또는, min(affineCost0, amvpCost0) > th5 * mergeCost인 경우, AMVR은 어파인 모드에 대해 비활성화된다. 여기서, th5은 양의 임계치이다.
7. 하나의 MV 정밀도에서 획득된 4/6 파라미터 어파인 모델들은 다른 MV 정밀도들에 대한 후보 출발 탐색 지점으로 사용될 수 있다고 제안된다.
a. 일 예에서, 1/16 MV에서 획득된 4/6 파라미터 어파인 모델들은 다른 MV 정밀도들에 대한 후보 출발 탐색 지점으로 사용될 수 있다.
b. 일 예에서, 1/4 MV에서 획득된 4/6 파라미터 어파인 모델들은 다른 MV 정밀도들에 대한 후보 출발 탐색 지점으로 사용될 수 있다.
8. 현재 블록의 부모 블록이 어파인 모드를 선택하지 않는 경우, 상기 어파인 모드에 대한 AMVR은 상기 현재 블록을 위한 인코더에서 확인되지 않는다.
9. 이전에 코딩된 프레임/슬라이스/타일/CTU 행들에 대한 상이한 MV 정밀도의 사용 통계는 현재 슬라이스/타일/CTU 행에서 어파인 코딩된 블록들에 대한 MV 정밀도들의 율-왜곡 계산을 조기에 종료하는 데에 활용될 수 있다.
a. 일 예에서, 특정 MV 정밀도를 가지는 어파인 코딩된 블록들의 비율이 기록된다. 만약 상기 비율이 너무 낮다면, 해당 MV 정밀도의 확인은 생략된다.
b. 일 예에서, 동일한 시간적 층을 가지는 이전에 코딩된 프레임들은 특정한 MV 정밀도를 생략할지 여부를 결정하는 데에 활용된다.
10. 상기 제안된 방법은 블록 크기, 슬라이스/픽처/타일 유형 또는 움직임 정보와 같은 특정 조건 하에서 적용될 수 있다.
a. 일 예에서, 블록 크기가 16 또는 32 또는 64 루마 샘플들 같은 M*H 샘플들 보다 작은 것을 포함한다면, 제안된 방법은 허용되지 않는다.
b. 또는, 블록의 폭 및/또는 높이의 최소 크기가 X 보다 작거나 더 크지 않다면, 제안된 방법은 허용되지 않는다. 일 예에서, X는 8로 설정된다.
c. 또는, 블록의 폭 및/또는 높이의 최소 크기가 X 보다 작지 않다면, 제안된 방법은 허용되지 않는다. 일 예에서, X는 8로 설정된다.
d. 또는, 블록의 폭 > th1 또는 >=th1 및/또는 블록의 높이 > th2 또는 >=th2라면, 제안된 방법은 허용되지 않는다. 일 예에서, th1 및/또는 th2는 8로 설정된다.
e. 또는, 블록의 폭 < th1 또는 <=th1 및/또는 블록의 높이 < th2 또는<=th2라면, 제안된 방법은 허용되지 않는다. 일 예에서, th1 및/또는 th2는 8로 설정된다.
f. 또는, 상기 방법들을 활성화할지 비활성화할지 여부 및/또는 어떤 방법을 적용할지 여부는 블록 규격, 비디오 처리 데이터 유닛(Video Processing Data Unit: VPDU), 픽처 타입, 저지연 체크 플래그, 현재 블록의 코딩된 정보(참조 픽처, 단-또는 양-예측) 또는 이전에 코딩된 블록들에 기반할 수 있다.
11. 화면 내 블록 복사(IBC, 현재 픽처 레퍼런스(current picture reference: CPR)로도 알려짐)가 적용되거나 적용되지 않는 경우, 어파인 모드에 대한 상기 AMVR 방법들은 상이한 방식들로 실행될 수 있다.
a. 일 예에서, 어파인 모드에 대한 AMVR는 블록이 IBC로 코딩되는 경우 사용될 수 없다.
* b. 일 예에서, 어파인 모드에 대한 AMVR는 블록이 IBC로 코딩되는 경우 사용될 수 있지만, 후보MV/MVD/MVP 정밀도들은 비-IBC 코딩된 어파인 코딩 블록에 대해 사용된 정밀도들과는 상이할 수 있다.
12. 본 문서에서 용어 "슬라이스"는 "타일 그룹" 또는 "타일"로 바꿔서 쓸 수 있다.
13. VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더에서, 1과 같은 구문 요소(예를 들어, no_amvr_constraint_flag)는 AMVR이 활성화되는지 여부를 지시하는 구문 요소(예를 들어, sps_amvr_enabled_flag)와 어파인 AMVR이 활성화되는지 여부를 지시하는 구문 요소(예를 들어, sps_affine_avmr_enabled_flag)가 모두 0과 같아야 한다는 것이 비트스트림 부합성 요건임을 명시한다. 0과 같은 구문 요소(예를 들어, no_amvr_constraint_flag)는 아무런 제한을 두지 않는다.
14. VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더 또는 기타 비디오 유닛들에서, 구문 요소(예를 들어, no_affine_amvr_constraint_flag)가 시그널링될 수 있다.
a. 일 예에서, 1과 같은 no_affine_amvr_constraint_flag는 어파인 AMVR이 활성화되는지 여부를 지시하는 구문 요소(예를 들어, sps_affine_avmr_enabled_flag)가 0과 같아야 한다는 것이 비트스트림 부합성 요건임을 명시한다. 0과 같은 구문 요소(예를 들어, no_affine_amvr_constraint_flag)는 아무런 제한을 두지 않는다.
5. 실시예들
5.1 실시예 1: 어파인 AMVR 모드의 사용 표시
SPS/PPS/VPS/APS/시퀀스 헤더/픽처 헤더/타일 그룹 헤더 등에서 시그널링될 수 있다. 본 섹션은 SPS에서의 시그널링을 보여준다.
5.1.1. SPS 구문 테이블
대안적인 SPS 구문 테이블은 아래와 같다.
Figure pat00086
시멘틱:
1과 같은 sps_affine_amvr_enabled_flag는 적응적 움직임 벡터 차분 해상도가 어파인 화면 간 (inter) 모드의 움직임 벡터 코딩에서 사용됨을 명시한다. 0과 같은 amvr_enabled_flag는 적응적 움직임 벡터 차분 해상도가 어파인 화면 간 모드의 움직임 벡터 코딩에서 사용되지 않음을 명시한다.
5. 2. 어파인 AMVR 모드 정보의 파싱 절차
어파인 AMVR 모드 정보의 구문은 (정상 화면 간 모드에 적용되는) AMVR 모드 정보를 위한 구문을 재사용할 수 있다. 또는 상이한 구분 요소들을 활용할 수 있다.
어파인 AMVR 모드 정보는 조건적으로 시그널링될 수 있다. 아래의 상이한 실시예들은 조건들의 몇몇 예들을 보여준다.
5. 2. 1. 실시예 #1: CU 구문 테이블
5. 2. 2. 실시예 2: 대안적인 CU 구문 테이블 설계
5. 2. 3. 실시예 3: 제3 CU 구문 테이블 설계
5. 2. 4. 실시예 4: AMVR 및 어파인 AMVR 모드에 대해 상이한 구문을 가지는 구문 테이블 설계
일 예에서, conditionsA는 아래와 같이 정의된다.
( sps_affine_amvr_enabled_flag && inter_affine_flag = = 1 &&
( MvdCpL0[ x0 ][ y0 ][ 0 ] [ 0 ] != 0 | | MvdCpL0[ x0 ][ y0 ][ 0 ] [ 1 ] != 0 | |
MvdCpL1[ x0 ][ y0 ][ 0 ] [ 0 ] != 0 | | MvdCpL1[ x0 ][ y0 ][ 0 ] [ 1 ] != 0 | |
MvdCpL0[ x0 ][ y0 ][ 1 ] [ 0 ] != 0 | | MvdCpL0[ x0 ][ y0 ][ 1 ] [ 1 ] != 0 | |
MvdCpL1[ x0 ][ y0 ][ 1 ] [ 0 ] != 0 | | MvdCpL1[ x0 ][ y0 ][ 1 ] [ 1 ] != 0 | |
MvdCpL0[ x0 ][ y0 ][ 2 ] [ 0 ] != 0 | | MvdCpL0[ x0 ][ y0 ][ 2 ] [ 1 ] != 0 | |
MvdCpL1[ x0 ][ y0 ][ 2 ] [ 0 ] != 0 | | MvdCpL1[ x0 ][ y0 ][ 2 ] [ 1 ] != 0 ) )
또는, conditionsA는 아래와 같이 정의된다.
( sps_affine_amvr_enabled_flag && inter_affine_flag = = 1 &&
( MvdCpL0[ x0 ][ y0 ][ 0 ] [ 0 ] != 0 | | MvdCpL0[ x0 ][ y0 ][ 0 ] [ 1 ] != 0 | |
MvdCpL1[ x0 ][ y0 ][ 0 ] [ 0 ] != 0 | | MvdCpL1[ x0 ][ y0 ][ 0 ] [ 1 ] != 0 )
또는, conditionsA는 아래와 같이 정의된다.
( sps_affine_amvr_enabled_flag && inter_affine_flag = = 1 &&
( MvdCpLX[ x0 ][ y0 ][ 0 ] [ 0 ] != 0 | | MvdCpLX[ x0 ][ y0 ][ 0 ] [ 1 ] != 0 )
여기서, X는 0 또는 1이다.
또는, conditionsA는 아래와 같이 정의된다.
( sps_affine_amvr_enabled_flag && inter_affine_flag = = 1)
일 예에서, conditionsB는 아래와 같이 정의된다.
!sps_cpr_enabled_flag  | |  !( inter_pred_idc[ x0 ][ y0 ]  = =  PRED_L0 &&
ref_idx_l0[ x0 ][ y0 ]  = =  num_ref_idx_l0_active_minus1 )
또는, conditionsB는 아래와 같이 정의된다.
!sps_cpr_enabled_flag  | |  !( pred_mode[ x0 ][ y0 ]  = =  CPR).
또는, conditionsB는 아래와 같이 정의된다.
!sps_ibc_enabled_flag  | |  !( pred_mode[ x0 ][ y0 ]  = =  IBC).
AMVR 또는 어파인 AMVR (Affine AMVR)을 코딩하는 데에 상이한 구문 요소들이 활용되는 경우, 어파인 AMVR에 적용되는, 5.5에서의 실시예들에 대해 사용되는 문맥 모델링 및/또는 문맥들이 그에 맞춰 적용될 수 있다.
5. 2. 5. 시멘틱(Semantics)
amvr_flag[ x0 ][ y0 ]는 움직임 벡터 차분의 해상도를 명시한다. 어레이 인덱스 x0 및 y0는 픽처의 좌측 상부 루마 샘플에 대한 대상 코딩 블록의 좌측 상부 루마 샘플의 위치( x0, y0 )를 특정한다. 0과 같은 amvr_flag[ x0 ][ y0 ]은 상기 움직임 벡터 차분의 해상도가 루마 샘플의 1/4임을 특정한다. 1과 같은 amvr_flag[ x0 ][ y0 ]은 상기 움직임 벡터 차분의 해상도가 amvr_coarse_precisoin_flag[ x0 ][ y0 ]에 의해 추가로 특정됨을 명시한다.
amvr_flag[ x0 ][ y0 ]가 존재하지 않는 경우, 아래와 같이 추론된다.
- 만약 sps_cpr_enabled_flag가 1과 같으면, amvr_flag[ x0 ][ y0 ]는 1과 같은 것으로 추론된다.
- 그 외의 경우 ( sps_cpr_enabled_flag가 0과 같은 경우), amvr_flag[ x0 ][ y0 ] 는 0과 같은 것으로 추론된다.
1과 같은 amvr_coarse_precisoin_flag[ x0 ][ y0 ]는, inter_affine_flag가 0과 같은 경우, 상기 움직임 벡터 차분의 해상도가4 루마 샘플임을 특정한다. inter_affine_flag가 1과 같은 경우, 1 루마 샘플임을 특정한다. 어레이 인덱스 x0 및 y0는 픽처의 좌측 상부 루마 샘플에 대한 대상 코딩 블록의 좌측 상부 루마 샘플의 위치( x0, y0 )를 특정한다.
amvr_coarse_precisoin_flag[ x0 ][ y0 ]가 존재하지 않는 경우, 그것은 0과 같은 것으로 추론된다.
만약 inter_affine_flag[ x0 ][ y0 ]가 0과 같다면, 변수 MvShift는 ( amvr_flag[ x0 ][ y0 ] + amvr_coarse_precisoin_flag[ x0 ][ y0 ] ) << 1과 같은 것으로 설정되며, 변수들 MvdL0[ x0 ][ y0 ][ 0 ], MvdL0[ x0 ][ y0 ][ 1 ], MvdL1[ x0 ][ y0 ][ 0 ] 및 MvdL1[ x0 ][ y0 ][ 1 ]는 아래와 같이 변경된다.
MvdL0[ x0 ][ y0 ][ 0 ] = MvdL0[ x0 ][ y0 ][ 0 ]  << ( MvShift + 2 ) (7-70)
MvdL0[ x0 ][ y0 ][ 1 ] = MvdL0[ x0 ][ y0 ][ 1 ]  <<  ( MvShift + 2 ) (7-71)
MvdL1[ x0 ][ y0 ][ 0 ] = MvdL1[ x0 ][ y0 ][ 0 ]<<( MvShift + 2 ) (7-72)
MvdL1[ x0 ][ y0 ][ 1 ] = MvdL1[ x0 ][ y0 ][ 1 ]  << ( MvShift + 2 ) (7-73)
만약 inter_affine_flag[ x0 ][ y0 ]가 1과 같으면, 변수 MvShift는 ( amvr_coarse_precisoin_flag  ?  ( amvr_coarse_precisoin_flag  <<  1 )  :  ( - (amvr_flag  <<  1) ) ) 과 같은 것으로 설정되며, 변수들 MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 0 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ], MvdCpL0[ x0 ][ y0 ][ 1 ][ 1 ], MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] 및 MvdCpL0[ x0 ][ y0 ][ 2 ][ 1 ]는 아래와 같이 변경된다.
MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 0 ][ 0 ]  << ( MvShift + 2 ) (7-73)
MvdCpL1[ x0 ][ y0 ] [ 0 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 0 ][ 1 ]  <<  ( MvShift + 2 ) (7-67)
MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 1 ][ 0 ]  << ( MvShift + 2 ) (7-66)
MvdCpL1[ x0 ][ y0 ] [ 1 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 1 ][ 1 ]  <<  ( MvShift + 2 ) (7-67)
MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ] = MvdCpL0[ x0 ][ y0 ][ 2 ][ 0 ]  << ( MvShift + 2 ) (7-66)
MvdCpL1[ x0 ][ y0 ] [ 2 ][ 1 ] = MvdCpL1[ x0 ][ y0 ][ 2 ][ 1 ]  <<  ( MvShift + 2 ) (7-67)
또는, 만약 inter_affine_flag[ x0 ][ y0 ]가 1과 같다면, 변수 MvShift는 ( affine_amvr_coarse_precisoin_flag  ?  ( affine_amvr_coarse_precisoin_flag  <<  1 )  :  ( - (affine_amvr_flag  <<  1) ) )과 같은 것으로 설정된다.
5. 3. 움직임 벡터에 대한 라운딩 절차
라운딩 절차가 수정되어, 주어진 rightShift값이 0과 같은 경우(1/16 픽셀 정밀도에서 발생), 라운딩 오프셋은 (1  <<  ( rightShift  1 )) 대신 0으로 설정된다.
예를 들어, MV에 대한 라운딩 절차의 서브 조항은 아래와 같이 수정된다.
이 절차의 입력들은 아래와 같다.
- 움직임 벡터 mvX,
- 라운딩을 위한 우측 시프트 파라미터 rightShift,
- 해상도 증가를 위한 좌측 시프트 파라미터 leftShift.
이 절차의 출력은 라운딩 된 움직임 벡터 mvX이다.
*mvX의 라운딩을 위해, 아래가 적용된다.
offset = ( rightShift == 0 )  ?  0 : (1  <<  ( rightShift  1 )) (8-371)
mvX[ 0 ] = ( mvX[ 0 ] >= 0 ? ( mvX[ 0 ] + offset ) >> rightShift :  - ( (  mvX[ 0 ] + offset ) >> rightShift ) ) << leftShift (8-372)
mvX[ 1 ] = ( mvX[ 1 ] >= 0 ? ( mvX[ 1 ] + offset ) >> rightShift :  - ( (  mvX[ 1 ] + offset ) >> rightShift ) ) << leftShift (8-373)
5.4. 디코딩 절차
어파인 움직임 벡터 유도 절차에서 적용된 라운딩 절차는 2로 고정되지 않은 (MvShift + 2)을 입력으로 하여 실행된다.
루마 어파인 제어 포인트 움직임 벡터 예측자들을 위한 유도 절차
이 절차의 입력들은 아래와 같다.
- 현재 픽처의 좌상단 루마 샘플에 대한 현재 루마 코딩 블록의 좌상단 샘플의 루마 위치( xCb, yCb ),
- 현재 루마 코딩 블록의 폭과 높이를 특정하는 두 변수cbWidth 및 cbHeight,
- 현재 코딩 유닛의 참조 인덱스 refIdxLX (X는 0 또는 1),
- 제어 포인트 벡터들의 수 numCpMv.
*이 절차의 출력은 루마 어파인 제어 포인트 움직임 벡터 예측자들 mvpCpLX[ cpIdx ] (X 는 0 또는 1) 및 cpIdx = 0 .. numCpMv  1이다.
제어 포인트 움직임 벡터 예측자 후보 리스트cpMvpListLX(X는 0 또는 1)의 유도를 위해, 아래 순서의 단계들이 적용된다.
리스트 numCpMvpCandLX에서 제어 포인트 움직임 벡터 예측자 후보들의 수는 0과 같은 것으로 설정된다.
변수들availableFlagA 및 availableFlagB는 모두 FALSE와 같은 것으로 설정된다.
...
조항 8.4.2.14에 특정된 움직임 벡터들을 위한 라운딩 절차는 cpMvpLX[ cpIdx ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 cpIdx = 0 .. numCpMv - 1를 가지는 라운딩된 cpMvpLX[ cpIdx ]를 출력으로 하여 적용된다.
...
변수 availableFlagA는 TRUE와 같은 것으로 설정된다.
조항 8.4.4.5에서 특정된 바와 같이 인접 블록으로부터 루마 어파인 제어 포인트 움직임 벡터를 유도하기 위한 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 및 높이(cbWidth, cbHeight), 인접 루마 코딩 블록 위치( xNb, yNb ), 인접 루마 코딩 블록 폭 및 높이(nbW, nbH) 그리고 제어 포인트 움직임 벡터들의 수numCpMv를 입력으로 하고, cpIdx = 0 .. numCpMv - 1를 가지는 제어 포인트 움직임 벡터 예측자 후보들 cpMvpLY[ cpIdx ]을 출력으로 하여 적용된다.
조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvpLX[ cpIdx ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 cpIdx = 0 .. numCpMv - 1를 가지는 라운딩된 cpMvpLX[ cpIdx ]를 출력으로 하여 적용된다.
...
조항 8.4.4.5에서 특정된 바와 같이 인접 블록으로부터 루마 어파인 제어 포인트 움직임 벡터를 유도하기 위한 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 및 높이(cbWidth, cbHeight), 인접 루마 코딩 블록 위치( xNb, yNb ), 인접 루마 코딩 블록 폭 및 높이(nbW, nbH) 그리고 제어 포인트 움직임 벡터들의 수numCpMv를 입력으로 하고, cpIdx = 0 .. numCpMv - 1를 가지는 제어 포인트 움직임 벡터 예측자 후보들 cpMvpLY[ cpIdx ]을 출력으로 하여 적용된다.
조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvpLX[ cpIdx ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 cpIdx = 0 .. numCpMv - 1를 가지는 라운딩된 cpMvpLX[ cpIdx ]를 출력으로 하여 적용된다.
아래와 같은 할당이 이루어진다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = cpMvpLX[ 0 ] (8-618)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = cpMvpLX[ 1 ] (8-619)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = cpMvpLX[ 2 ] (8-620)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-621)
그 외의 경우, 만약 PredFlagLY[ xNbBk ][ yNbBk ] (Y = !X)이 1과 같고 DiffPicOrderCnt( RefPicListY[ RefIdxLY[ xNbBk ][ yNbBk ] ], RefPicListX[ refIdxLX ] )가 0과 같으며, 아래와 같이 적용된다.
변수 availableFlagB는 TRUE와 같은 것으로 설정된다.
조항 8.4.4.5에서 특정된 바와 같이 인접 블록으로부터 루마 어파인 제어 포인트 움직임 벡터를 유도하기 위한 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 및 높이(cbWidth, cbHeight), 인접 루마 코딩 블록 위치( xNb, yNb ), 인접 루마 코딩 블록 폭 및 높이(nbW, nbH) 그리고 제어 포인트 움직임 벡터들의 수numCpMv를 입력으로 하고, cpIdx = 0 .. numCpMv - 1를 가지는 제어 포인트 움직임 벡터 예측자 후보들 cpMvpLY[ cpIdx ]을 출력으로 하여 적용된다.
조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvpLX[ cpIdx ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 cpIdx = 0 .. numCpMv - 1를 가지는 라운딩된 cpMvpLX[ cpIdx ]를 출력으로 하여 적용된다.
아래와 같은 할당이 이루어진다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = cpMvpLY[ 0 ] (8-622)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = cpMvpLY[ 1 ] (8-623)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = cpMvpLY[ 2 ] (8-624)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-625)
numCpMvpCandLX이 2 미만인 경우, 아래와 같이 적용된다.
조항 8.4.4.8에서 특정된 바와 같이 구성된 어파인 제어 포인트 움직임 벡터 예측 후보를 위한 유도 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 그리고 현재 코딩 유닛의 참조 인덱스 refIdxLX를 입력으로 하고, 가용성 플래그 availableConsFlagLX, cpIdx = 0..numCpMv - 1를 가지는 가용성 플래그들 availableFlagLX[ cpIdx ] 및 cpMvpLX[ cpIdx ]을 출력으로 하여 적용된다.
availableConsFlagLX가 1과 같고 numCpMvpCandLX이 0과 같다면, 아래와 같은 할당이 이루어진다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = cpMvpLX[ 0 ] (8-626)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = cpMvpLX[ 1 ] (8-627)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = cpMvpLX[ 2 ] (8-628)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-629)
cpIdx = 0..numCpMv - 1에 대해 아래와 같이 적용된다.
*numCpMvpCandLX가 2 미만이고availableFlagLX[ cpIdx ]가 1과 같다면, 아래와 같은 할당이 이루어진다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = cpMvpLX[ cpIdx ] (8-630)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = cpMvpLX[ cpIdx ] (8-631)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = cpMvpLX[ cpIdx ] (8-632)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-633)
numCpMvpCandLX이 2 미만인 경우, 아래와 같이 적용된다.
조항 8.4.2.11에서 특정된 바와 같이 시간적 루마 움직임 벡터 예측을 위한 유도 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 그리고 refIdxLX를 입력으로 하고, 가용성 플래그 availableFlagLXCol 및 시간적 움직임 벡터 예측자 mvLXCol를 출력으로 하여 적용된다.
availableFlagLXCol이 1과 같은 경우, 아래와 같이 적용된다.
조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 mvLXCol와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 라운딩된 mvLXCol를 출력으로 하여 적용된다.
아래와 같은 할당이 이루어진다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = mvLXCol (8-634)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = mvLXCol (8-635)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = mvLXCol (8-636)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-637)
numCpMvpCandLX가 2 미만인 경우, mvZero[0] 및 mvZero[1]가 모두 0과 같고, numCpMvpCandLX가 2와 같을 때까지 아래가 반복된다.
cpMvpListLX[ numCpMvpCandLX ][ 0 ] = mvZero (8-638)
cpMvpListLX[ numCpMvpCandLX ][ 1 ] = mvZero (8-639)
cpMvpListLX[ numCpMvpCandLX ][ 2 ] = mvZero (8-640)
numCpMvpCandLX = numCpMvpCandLX + 1 (8-641)
0 혹은 1인 X를 갖는 어파인 제어 점 움직임 벡터 예측자 cpMvpLX 는 하기와 같이 유도된다(The affine control point motion vector predictor cpMvpLX with X being 0 or 1 is derived as follows):
cpMvpLX = cpMvpListLX[ mvp_lX_flag[ xCb ][ yCb ] ] (8-642)
구성된 어파인 제어 포인트 움직임 벡터 예측 후보자들을 위한 유도 절차
이 절차의 입력들은 아래와 같다.
- 현재 픽처의 좌상단 루마 샘플에 대한 현재 루마 코딩 블록의 좌상단 샘플을 특정하는 루마 위치( xCb, yCb ),
- 현재 루마 코딩 블록의 폭과 높이를 특정하는 두 변수cbWidth 및 cbHeight,
- 현재 코딩 유닛 파티션의 참조 인덱스 refIdxLX (X는 0 또는 1)
이 절차의 출력들은 아래와 같다.
- 구성된 어파인 제어 포인트 움직임 벡터 예측 후보들의 가용성 플래그availableConsFlagLX (X는 0 또는 1),
- 가용성 플래그 availableFlagLX[ cpIdx ] (cpIdx = 0..2 및 X 는 0 또는 1),
- 구성된 어파인 제어 포인트 움직임 벡터 예측 후보자cpMvLX[ cpIdx ] (cpIdx = 0..numCpMv  1 및 X 는 0 또는 1)
제1(좌상단) 제어 포인트 움직임 벡터 cpMvLX[ 0 ] 및 가용성 플래그 availableFlagLX[ 0 ]는 아래 순서의 단계들로 유도된다.
샘플 위치들 ( xNbB2, yNbB2 ), ( xNbB3, yNbB3 ) 및 ( xNbA2, yNbA2 )는 각각 ( xCb  1, yCb  1 ), ( xCb , yCb  1 ) 및 ( xCb  1, yCb )와 같도록 설정된다.
가용성 플래그 availableFlagLX[ 0 ]는 0과 같은 것으로 설정되며, cpMvLX[ 0 ]의 두 성분 모두 0과 같은 것으로 설정된다.
TL가 B2, B3 및 A2로 바뀌는 가운데 ( xNbTL, yNbTL )에 대해 아래와 같이 적용된다.
*조항6.4.X에서 규정된 바와 같이 코딩 블록을 위한 가용성 유도 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 그리고 ( xNbTL, yNbTL )와 같은 것으로 설정된 루마 위치 ( xNbY, yNbY )를 입력으로 하여 적용되며, 출력은 코딩 블록 가용성 플래그 availableTL에 할당된다.
availableTL이 TRUE와 같고 availableFlagLX[ 0 ]가 0과 같은 경우, 아래와 같이 적용된다.
PredFlagLX[ xNbTL ][ yNbTL ]가 1과 같고, DiffPicOrderCnt( RefPicListX[ RefIdxLX[ xNbTL ][ yNbTL ] ], RefPicListX[ refIdxLX ] )이 0과 같고, RefIdxLX[ xNbTL ][ yNbTL ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 0 ]는 1과 같은 것으로 설정되고, 아래와 같은 할당이 이루어진다.
cpMvLX[ 0 ] = MvLX[ xNbTL ][ yNbTL ] (8-643)
그 외의 경우로, PredFlagLY[ xNbTL ][ yNbTL ] (with Y = !X)이 1과 같고, DiffPicOrderCnt( RefPicListY[ RefIdxLY[ xNbTL ][ yNbTL ] ], RefPicListX[ refIdxLX ] )가 0과 같고, RefIdxLY[ xNbTL ][ yNbTL ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 0 ]는 1과 같은 것으로 설정되고, 아래 할당이 이루어진다.
cpMvLX[ 0 ] = MvLY[ xNbTL ][ yNbTL ] (8-644)
availableFlagLX[ 0 ]가 1과 같으면, 조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvLX[ 0 ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 라운딩된 cpMvLX[ 0 ]를 출력으로 하여 적용된다.
제2(우상단) 제어 포인트 움직임 벡터 cpMvLX[ 1 ] 및 가용성 플래그 availableFlagLX[ 1 ]는 아래 순서의 단계들로 유도된다.
샘플 위치들 ( xNbB1, yNbB1 ) 및 ( xNbB0, yNbB0 )는 각각 ( xCb + cbWidth  1, yCb  1 ) 및 ( xCb + cbWidth, yCb  1 )와 같도록 설정된다.
가용성 플래그 availableFlagLX[ 1 ]는 0과 같은 것으로 설정되며, cpMvLX[ 1 ]의 두 성분 모두 0과 같은 것으로 설정된다.
TR이 B1 및 B0로 바뀌는 가운데 ( xNbTR, yNbTR )에 대해 아래와 같이 적용된다.
조항  6.4.X에서 규정된 바와 같이 코딩 블록을 위한 가용성 유도 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 그리고 ( xNbTL, yNbTL )와 같은 것으로 설정된 루마 위치 ( xNbY, yNbY )를 입력으로 하여 적용되며, 출력은 코딩 블록 가용성 플래그 availableTR에 할당된다.
availableTR이 TRUE와 같고 availableFlagLX[ 1 ]가 0과 같은 경우, 아래와 같이 적용된다.
PredFlagLX[ xNbTR ][ yNbTR ]이 1과 같고, DiffPicOrderCnt( RefPicListX[ RefIdxLX[ xNbTR ][ yNbTR ] ], RefPicListX[ refIdxLX ] )가 0과 같고, RefIdxLX[ xNbTR ][ yNbTR ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 1 ]는 1과 같은 것으로 설정되며, 아래와 같은 할당이 이루어진다.
cpMvLX[ 1 ] = MvLX[ xNbTR ][ yNbTR ] (8-645)
그 외의 경우로, PredFlagLY[ xNbTR ][ yNbTR ] (with Y = !X)이 1과 같고, DiffPicOrderCnt( RefPicListY[ RefIdxLY[ xNbTR ][ yNbTR ] ], RefPicListX[ refIdxLX ] )가 0과 같고, RefIdxLY[ xNbTR ][ yNbTR ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 1 ]는 1과 같은 것으로 설정되고, 아래 할당이 이루어진다.
cpMvLX[ 1 ] = MvLY[ xNbTR ][ yNbTR ] (8-646)
availableFlagLX[ 1 ]이 1과 같은 경우, 조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvLX[ 1 ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 라운딩된 cpMvLX[ 1 ]를 출력으로 하여 적용된다.
제3(좌하단) 제어 포인트 움직임 벡터 cpMvLX[ 2 ] 및 가용성 플래그 availableFlagLX[ 2 ]는 아래 순서의 단계들로 유도된다.
샘플 위치들 ( xNbA1, yNbA1 ) 및 ( xNbA0, yNbA0 )는 각각 ( xCb  1, yCb + cbHeight  1 ) 및 ( xCb  1, yCb + cbHeight )와 같도록 설정된다.
가용성 플래그 availableFlagLX[ 2 ]는 0과 같은 것으로 설정되며, cpMvLX[ 2 ]의 두 성분 모두 0과 같은 것으로 설정된다.
BL이 A1 및 A0로 바뀌는 가운데 ( xNbBL, yNbBL )에 대해 아래와 같이 적용된다.
조항  6.4.X에서 규정된 바와 같이 코딩 블록을 위한 가용성 유도 절차는 루마 코딩 블록 위치( xCb, yCb ), 루마 코딩 블록 폭 cbWidth, 루마 코딩 블록 높이 cbHeight 그리고 ( xNbBL, yNbBL )와 같은 것으로 설정된 루마 위치 ( xNbY, yNbY )를 입력으로 하여 적용되며, 출력은 코딩 블록 가용성 플래그 availableBL에 할당된다.
availableBL이 TRUE와 같고 availableFlagLX[ 2 ]가 0과 같은 경우, 아래와 같이 적용된다.
PredFlagLX[ xNbBL ][ yNbBL ]이 1과 같고, DiffPicOrderCnt( RefPicListX[ RefIdxLX[ xNbBL ][ yNbBL ] ], RefPicListX[ refIdxLX ] )가 0과 같고, RefIdxLY[ xNbBL ][ yNbBL ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 2 ]는 1과 같은 것으로 설정되며, 아래와 같은 할당이 이루어진다.
cpMvLX[ 2 ] = MvLX[ xNbBL ][ yNbBL ] (8-647)
그 외의 경우로, PredFlagLY[ xNbBL ][ yNbBL ] (with Y = !X)이 1과 같고, DiffPicOrderCnt( RefPicListY[ RefIdxLY[ xNbBL ][ yNbBL ] ], RefPicListX[ refIdxLX ] )가 0과 같고, RefIdxLY[ xNbBL ][ yNbBL ] 에 상응하는 참조 픽처가 현재 픽처가 아닌 경우, availableFlagLX[ 2 ]는 1과 같은 것으로 설정되고, 아래 할당이 이루어진다.
cpMvLX[ 2 ] = MvLY[ xNbBL ][ yNbBL ] (8-648)
availableFlagLX[ 2 ]이 1과 같은 경우, 조항 8.4.2.14에서 특정된 바와 같이 움직임 벡터를 위한 라운딩 절차는 cpMvLX[ 2 ]와 같은 것으로 설정된 mvX, ( MvShift + 2 )와 같은 것으로 설정된 rightShift, 그리고 ( MvShift + 2 )와 같은 것으로 설정된 leftShift를 입력으로, 그리고 라운딩된 cpMvLX[ 2 ]를 출력으로 하여 적용된다.
5.5. 문맥 모델링
문맥 코딩된 빈(bins)을 가지는 구문 요소에 대한 ctxInc의 할당
좌측 및 상부 구문 요소들을 사용하는 ctxInc의 규정:
일 예에서, 문맥 증가 오프셋 ctxInc = ( condL  &&  availableL ) + ( condA  &&  availableA ) + ctxSetIdx * 3.
또는, ctxInc = ( ( condL  &&  availableL ) || ( condA  &&  availableA ) ) + ctxSetIdx * 3.
ctxInc = ( condL  &&  availableL ) + M*( condA  &&  availableA ) + ctxSetIdx * 3. (e.g., M=2)
ctxInc = M*( condL  &&  availableL ) + ( condA  &&  availableA ) + ctxSetIdx * 3. (e.g., M=2)
amvr_flag의ctxIdx에 대한 initValue의 값들:
현재 블록이 어파인 또는 논-어파인인 경우 상이한 문맥들이 사용된다.
amvr_coarse_precisoin_flag의 ctxIdx에 대한 initValue의 값들:
현재 블록이 어파인 또는 논-어파인인 경우 상이한 문맥들이 사용된다.
위에서 기술된 예들은 아래에 기술되는 방법의 문맥, 즉, 방법 2600부터 2680까지에 포함될 수 있다. 이 방법들은 비디오 디코더 또는 비디오 인코더에서 실행될 수 있다.
도 26a는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 상기 방법(2600)은, 단계(2602)에서, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위해, 상기 비디오의 현재 블록을 포함하는 비디오 영역에 적용가능한 허용된 다수의 MVD 정밀도들의 세트로부터 상기 변환에 사용될 움직임 벡터 차분(MVD) 정밀도를 결정하는 것을 포함한다. 상기 방법(2600)은, 단계(2604)에서, 상기 MVD 정밀도에 기반하여 상기 변환을 실행하는 것을 포함한다.
도 26b는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26b에 도시된 상기 방법(2610)은, 단계(2612)에서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 상기 비디오 영역 내의 상기 하나 또는 그 이상의 비디오 블록들의 변환을 위한 다수의 움직임 벡터 차분(MVD) 정밀도들의 사용을 결정하는 것을 포함한다. 상기 방법(2610)은, 단계(2614)에서, 상기 결정에 근거하여 상기 변환을 실행하는 것을 포함한다.
도 26c는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26c에 도시된 상기 방법(2620)은, 단계(2622)에서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도(AMVR) 절차를 적용할지 여부를 결정하는 것을 포함한다. 상기 방법(2620)은, 단계(2624)에서, 상기 결정에 기반하여 상기 변환을 실행하는 것을 포함한다.
도 26d는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26d에 도시된 상기 방법(2630)은, 단계(2632)에서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도(AMVR) 절차를 어떻게 적용할지를 결정하는 것을 포함한다. 상기 방법(2630)은, 단계(2634)에서, 상기 결정에 기반하여 상기 변환을 실행하는 것을 포함한다.
도 26e는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26e에 도시된 상기 방법(2640)은, 단계(2642)에서, 어파인 코딩 모드 또는 상기 어파인 코딩 모드의 율-왜곡(RD) 코스트를 사용하는 현재 코딩 유닛의 부모 코딩 유닛의 코딩 모드에 기반하여, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위한 적응적 움직임 벡터 해상도(AMVR)의 사용을 결정하는 것을 포함한다. 상기 방법(2640)은, 단계(2644)에서, 상기 결정 단계의 결과에 따라 상기 변환을 실행하는 것을 포함한다.
도 26f는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26f에 도시된 상기 방법(2650)은, 단계(2652)에서, 향상된 움직임 벡터 예측(AMVP) 코딩 모드를 사용하는, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위한 적응적 움직임 벡터 해상도(AMVR)의 사용을 결정하는 것을 포함한다. 이때, 상기 결정은 상기 AMVP 코딩 모드의 율-왜곡(RD) 코스트에 기반한다. 상기 방법(2650)은, 단계(2654)에서, 상기 결정 단계의 결과에 따라 상기 변환을 실행하는 것을 포함한다.
도 26g는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26g에 도시된 상기 방법(2660)은, 단계(2662)에서, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위해, 4-파라미터 어파인 모델 또는 6-파라미터 어파인 모델을 사용하는 움직임 벡터(MV) 정밀도들의 세트를 생성하는 것을 포함한다. 상기 방법(2660)은, 단계(2664)에서, 상기 MV 정밀도들의 세트에 기반하여 상기 변환을 실행하는 것을 포함한다.
도 26h는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26h에 도시된 상기 방법(2670)은, 단계(2672)에서, 어파인 코딩 모드를 사용하는 현재 블록의 부모 블록의 코딩 모드에 기반하여, 적응적 움직임 벡터 해상도(AMVR) 툴이 변환을 위해 사용되는지 여부를 결정하는 것을 포함한다. 이때, 상기 AMVR 툴은 디코딩 동안 움직임 벡터 해상도를 개선하는 데에 사용된다. 상기 방법(2670)은, 단계(2674)에서, 상기 결정의 결과에 따라 상기 변환을 실행하는 것을 포함한다.
도 26i는 비디오 처리를 위한 예시적인 한 가지 방법의 순서도를 보여준다. 도 26i에 도시된 상기 방법(2680)은, 단계(2682)에서, 이전 블록들에 대해 어파인 코딩 모드를 사용하여 이전에 코딩된 MV 정밀도들의 사용에 기반하여, 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위해 상기 어파인 코딩 모드를 사용하는 상기 현재 블록에 대한 MV 정밀도들의 율-왜곡(RD) 계산의 종료를 결정하는 것을 포함한다. 상기 방법(2680)은, 단계(2684)에서, 상기 결정의 결과에 따라 상기 변환을 실행하는 것을 포함한다.
5. 개시된 기술의 예시적 구현들
도 27은 비디오 처리 장치(2700)의 블록도의 일 예이다. 상기 장치(2700)는 여기서 기술된 하나 또는 그 이상의 방법들을 실행하는 데에 사용될 수 있다. 상기 장치(2700)는 스마트폰, 태블릿, 컴퓨터, IoT 수신기 등에서 구현될 수 있다. 상기 장치(2700)는 하나 또는 그 이상의 프로세서들(2702), 하나 또는 그 이상의 메모리들(2704) 그리고 비디오 처리 하드웨어(2706)을 포함할 수 있다. 상기 프로세서(들)(2702)은 현재 문서에 기술된 하나 또는 그 이상의 방법들(방법(2610)부터 방법(2680)까지를 포함하지만 이에 한정되지 않음)을 실행하기 위해 구성될 수 있다. 상기 메모리(메모리들)(2704)은 여기서 기술된 방법들 및 기술들을 위해 사용되는 데이터 및 코드를 저장하는 데에 사용될 수 있다. 상기 비디오 처리 하드웨어(2706)는 본 문서에 기술된 몇몇 기술들을 하드웨어 회로에서 구현하는 데에 사용될 수 있다.
도 29은 개시된 기술들이 구현될 수 있는 비디오 처리 시스템의 블록도의 다른 예이다. 도 29는 여기서 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 처리 시스템(2900)을 보여주는 블록도이다. 다양한 구현들은 상기 시스템(2900)의 일부 또는 모든 구성품들을 포함할 수 있다. 상기 시스템(2900)은 비디오 콘텐츠를 수신하기 위한 입력(2902)을 포함할 수 있다. 상기 비디오 콘텐츠는 가공되지 않거나 압축되지 않은 포맷, 예를 들어, 8 또는 10 비트 다중 성분 픽셀 값들로 수신되거나 압축되거나 인코딩된 포맷으로 수신될 수 있다. 상기 입력(2902)은 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, 수동 광학 네트워크(Passive Optical Network: PON) 등과 같은 유선 인터페이스들 및 와이파이 또는 셀룰러 인터페이스와 같은 무선 인터페이스들을 포함한다.
상기 시스템(2900)은 현재 문서에서 기술되는 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 구성요소(2904)을 포함할 수 있다. 상기 코딩 구성요소(2904)는 상기 코딩 구성요소(2904)의 상기 입력(2902)로부터 상기 출력까지의 비디오의 평균 비트레이트를 줄여 상기 비디오의 코딩된 표현을 산출할 수 있다. 따라서 코딩 기술들은 종종 비디오 압축 또는 비디오 트랜스코딩 기술들이라 불린다. 상기 코딩 구성요소(2904)의 출력은, 상기 구성요소(2904)에 의해 나타난 대로, 연결된 통신을 통해 저장 또는 송신될 수 있다. 상기 입력(2902)에서 수신된 상기 비디오의 상기 저장 또는 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(2910)에 보내지는 디스플레이가능한 비디오 또는 픽셀 값들을 생성하기 위해 상기 구성요소(2908)에 의해 사용될 수 있다. 사용자가 볼 수 있는 비디오를 상기 비트스트림 표현으로부터 생성시키는 절차는 종종 비디오 압축해제라 불린다. 더 나아가서, 특정 비디오 처리 작업들이 "코딩" 작업 또는 툴로 불리는 관계로, 상기 코딩 툴 또는 작업들이 인코더에서 사용되고 상응하는 디코딩 툴 또는 작업들은 코딩의 결과를 반전시키는 것들로써 디코더에서 실행된다는 것이 이해될 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 범용 직렬 버스(Universal Serial Bus: USB) 또는 고화질 멀티미디어 인터페이스(High Definition Multimedia Interface: HDMI) 또는 디스플레이 포트 등을 포함할 수 있다. 저장 인터페이스의 예들은 SATA (serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에 설명된 기술들은 휴대폰, 노트북, 스마트폰, 또는 디지털 데이터 처리 및/또는 비디오 디스플레이를 실행할 수 있는 디바이스들과 같은 다양한 전자 디바이스들에서 구현될 수 있다.
일부 실시예들에서, 상기 비디오 처리 방법들은 도 27 또는 도 29와 관련하여 설명된 하드웨어 플랫폼에서 구현되는 장치를 사용하여 실행될 수 있다.
다양한 기술들 및 실시예들이 아래와 같은 조항 기반 포맷을 사용하여 기술될 수 있다. 이 조항들은 몇몇 실시예들에서 선호되는 특징들로 실행될 수 있다.
조항들의 제1 세트는 이전 섹션에서 설명된 일부 기술들, 가령, 이전 섹션의 항목 1, 2 및 13 부터 15까지를 포함하는 일부 기술들을 사용한다.
1. 비디오 처리 방법으로서, 비디오의 현재 블록의 코딩된 표현과 상기 현재 블록 간의 변환을 위해, 상기 현재 블록을 포함하는 비디오 영역에 적용될 수 있는 다수의 허용된 움직임 벡터 차분(Motion Vector Difference: MVD) 정밀도들의 세트로부터 상기 변환을 위해 사용될 MVD 정밀도를 결정하는 단계; 그리고 상기 MVD 정밀도에 기반하여 상기 변환을 수행하는 단계를 포함하는 비디오 처리 방법.
2. 제1항에 있어서, 상기 허용된 다수의 MVD 정밀도들의 세트는 비디오의 픽처, 슬라이스 또는 블록에 의존하는 비디오 처리 방법.
3. 제1항에 있어서, 상기 허용된 다수의 MVD 정밀도들의 세트는 상기 현재 블록의 코딩된 정보에 의존하는 비디오 처리 방법.
4. 제1항에 있어서, 상기 허용된 다수의 MVD 정밀도들의 세트는 미리 정의된 비디오 처리 방법.
5. 제1항에 있어서, 상기 허용된 다수의 MVD 정밀도들의 세트는 시퀀스 파라미터 세트(Sequence Parameter Set: SPS), 픽처 파라미터 세트(Picture Parameter Set: PPS), 비디오 파라미터 세트(Video Parameter Set: VPS), 시퀀스 헤더, 픽처 헤더, 슬라이스 헤더, 또는 코딩 트리 유닛(Coding Tree Units: CTUs)의 그룹에서 시그널링되는 비디오 처리 방법.
6. 제1항에 있어서, 상기 현재 블록에 대해 허용된 MV 정밀도들의 개수에 기반하여 상기 허용된 다수의 MVD 정밀도들의 세트로부터 결정된 MVD 정밀도를 시그널링하는 단계를 추가로 포함하는 비디오 처리 방법.
7. 제1항에 있어서, 상기 MVD 정밀도를 결정하는 상기 단계는 하나 또는 그 이상의 구문 요소들에 기반하고, 상기 현재 블록은 어파인 모드를 사용하여 코딩되는 비디오 처리 방법.
8. 제3항 또는 제7항에 있어서, 상기 어파인 모드 및 비-어파인 모드 모두에 적용되는 상기 허용된 다수의 MVD 정밀도들의 세트로부터 상기 결정된 MVD 정밀도를 지시하기 위해 동일한 구문 요소들이 사용되는 비디오 처리 방법.
9. 제3항, 제7항 또는 제8항에 있어서, 상기 어파인 모드 및 상기 비-어파인 모드는 상기 허용된 다수의 MVD 정밀도들의 동일한 세트를 사용하는 비디오 처리 방법.
10. 제3항, 제7항 또는 제8항에 있어서, 상기 어파인 코딩된 블록들은 비-어파인 모드에서 사용된 것과는 상이한 상기 허용된 다수의 MVD 정밀도들의 세트를 사용하는 비디오 처리 방법.
11. 제10항에 있어서, 상기 비-어파인 모드에서 사용된 것과 동일한 수의 상기 허용된 다수의 MVD 정밀도들을 가지는 상기 상이한 세트 그리고 상기 비-어파인 모드에서 사용된 상기 구문 요소들은 상기 어파인 모드에서 재사용되는 비디오 처리 방법.
12. 제10항에 있어서, 상기 상이한 세트는 상기 비-어파인 모드에서 사용된 것과 다른 적어도 하나의 MVD 정밀도를 가지는 비디오 처리 방법.
13. 제3항, 제7항 또는 제8항에 있어서, 상기 비-어파인 모드 및 상기 어파인 모드에서 사용되는 구문 요소들의 시멘틱(semantics)은 상이하며, 상기 구문 요소들은 상이한 MVD 정밀도들에 대해 해석되는 동일한 디코딩된 값을 가지는 비디오 처리 방법.
14. 제3항, 제7항 또는 제8항에 있어서, 상기 어파인 모드에서 사용되는 상기 허용된 다수의 MVD 정밀도들의 수는 비-어파인 모드에서 사용된 것 보다 적은 비디오 처리 방법.
15. 제8항에 있어서, 상기 비-어파인 모드에 대한 상기 구문값들의 하나 또는 그 이상의 서브 세트는 상기 어파인 모드에서는 유효하지 않은 비디오 처리 방법.
16. 제8항 또는 제14항에 있어서, 상기 비-어파인 모드 및 상기 어파인 모드에서 사용되는 구문 요소들의 시멘틱은 상이하며, 동일한 값을 가지는 상기 구문 요소들은 상이한 MV 정밀도들에 대해 해석되는 비디오 처리 방법.
17. 제3항 또는 제7항에 있어서, 상기 어파인 모드에서 사용되는 상기 허용된 다수의 MVD 정밀도들의 수는 비-어파인 모드에서 사용되는 것 보다 많은 비디오 처리 방법.
18. 제17항에 있어서, 상기 비-어파인 모드에서의 하나 또는 그 이상의 구문 요소들은 상기 어파인 모드를 위해 더 많은 값들을 허용하도록 연장되는 비디오 처리 방법.
19. 제7항에 있어서, 추가 구문 요소가 상기 어파인 모드의 MVD 정밀도를 처리하기 위해 사용되며, 이때 상기 추가 구문 요소는 비-어파인 모드의 MVD 정밀도를 처리하는 데에 사용되는 것과는 다른 비디오 처리 방법.
20. 제7항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는 선택적으로 시그널링되는 비디오 처리 방법.
21. 제20항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는, 모든 제어 포인트 움직임 벡터들(Control Point Motion Vectors: CPMVs)에 대한 MVD들이 넌-제로인 경우, 시그널링되는 비디오 처리 방법.
22. 제20항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는, 적어도 하나의 CPMV에 대한 MVD들이 넌-제로인 경우, 시그널링되는 비디오 처리 방법.
23. 제20항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는, 하나의 선택된 CPMV의 MVD가 넌-제로인 경우, 시그널링되는 비디오 처리 방법.
24. 제20항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는, 제1 CPMV의 MVD가 넌-제로인 경우, 시그널링되는 비디오 처리 방법.
25. 제20항에 있어서, 상기 어파인 모드에 대한 상기 MVD 정밀도의 지시는, 하나 또는 그 이상의 미리 정해진 조건들이 충족되지 않는 경우, 시그널링되지 않는 비디오 처리 방법.
26. 제7항에 있어서, 상기 어파인 모드 또는 비-어파인 모드와 관련되는 MVD 정밀도 지시를 위한 구문 요소는 상기 현재 블록의 코딩된 정보에 의존하는 문맥들로 코딩되는 비디오 처리 방법.
27. 제7항에 있어서, 상기 어파인 모드 또는 비-어파인 모드와 관련되는 MVD 정밀도 지시를 위한 상기 구문 요소의 문맥 선택은 상기 현재 블록이 어파인 모드로 코딩되는지 여부에 의존하는 비디오 처리 방법.
28. 제7항에 있어서, 하나의 문맥이 어파인 코딩된 블록에 대한 MVD 정밀도 지시를 위한 구문 요소를 위해 사용되고, 다른 문맥이 비-어파인 코딩된 블록에 대해 사용되는 비디오 처리 방법.
29. 제7항에 있어서, MVD 정밀도 지시를 위한 문맥은 주변 블록들의 크기, 모양 또는 MVD 정밀도들, 시간적 레이어 인덱스, 또는 예측 방향들에 기반하여 결정되는 비디오 처리 방법.
30. 제7항에 있어서, 상기 어파인 모드에 대한 상기 허용된 다수의 MVD 정밀도들의 사용을 활성화할지 비활성화할지 여부는 SPS, PPS, VPS, 시퀀스 헤더, 픽처 헤더, 슬라이스 헤더 또는 CTU 그룹에서 시그널링되는 비디오 처리 방법.
31. 제7항에 있어서, 상기 어파인 모드에 대한 상기 허용된 다수의 MVD 정밀도들의 사용을 활성화할지 비활성화할지 여부는 상기 하나 또는 그 이상의 구문 요소들에 의존하는 비디오 처리 방법.
32. 제7항에 있어서, 상기 허용된 다수의 MVD 정밀도들의 사용을 활성화할지 비활성화할지 여부에 대한 정보는 상기 어파인 모드의 활성화 시에 시그널링되고 상기 어파인 모드의 비활성화 시에 시그널링되지 않는 비디오 처리 방법.
33. 제7항 내지 제32항 중 어느 한 항에 있어서, 상기 하나 또는 그 이상의 구문 요소들은 슬라이스 레벨, 픽처 레벨 또는 시퀀스 레벨에서 포함되는 비디오 처리 방법.
34. 제5항, 제30항 또는 제33항에 있어서, 상기 슬라이스는 타일 그룹 또는 타일로 교체되는 비디오 처리 방법.
35. 제1항 내지 제34항 중 어느 한 항에 있어서, VPS, SPS, PPS, 슬라이스 헤더 또는 타일 그룹 헤더에서, 1과 같은 구문 요소는 상기 코딩된 표현이 준수해야할 요건을 특정하며, 상기 요건은 다수의 MVD 정밀도들의 제1 세트가 비-어파인 모드에 대해 활성화되었는지 여부를 지시하는 제1 구문 요소와 다수의 MVD 정밀도들의 제2 세트가 어파인 모드에 대해 활성화되었는지 여부를 지시하는 제2 구문 요소 모두 0이어야 함을 요구하는 비디오 처리 방법.
36. 제1항 내지 제34항 중 어느 한 항에 있어서, 구문 요소는 VPS, SPS, PPS, 슬라이스 헤더, 타일 그룹 헤더, 또는 기타 비디오 유닛에서 시그널링되는 비디오 처리 방법.
37. 제36항에 있어서, 1과 같은 상기 구문 요소는 상기 코딩된 표현이 준수해야할 요건을 특정하며, 상기 요건은 다수의 MVD 정밀도들이 어파인 모드에 대해 활성화되었는지 여부를 지시하는 상기 구문 요소가 0과 같아야 함을 요구하는 비디오 처리 방법.
38. 제7항 내지 제37항 중 어느 한 항에 있어서, 움직임 벡터 예측자는 어파인 코딩된 블록들에 대해 동일한 MVD 정밀도에서 활용되는 비디오 처리 방법.
39. 제7항 내지 제37항 중 어느 한 항에 있어서, 상기 현재 블록의 최종 움직임 벡터는 어파인 코딩된 블록들에 대해 동일한 MVD 정밀도에서 활용되는 비디오 처리 방법.
40. 제1항 내지 제39항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 현재 블록으로부터 상기 코딩된 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
41. 제1항 내지 제39항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 코딩된 표현으로부터 상기 현재 블록을 생성하는 단계를 포함하는 비디오 처리 방법.
42. 비디오 시스템에서의 장치로서, 프로세서 및 명령들을 포함하는 비-일시적 메모리를 포함하며, 여기서 상기 명령들은 상기 프로세서에 의해 실행될 경우 상기 프로세서가 제1항 내지 제41항 중 어느 한 항의 방법을 수행하도록 하는 비디오 시스템에서의 장치.
43. 비-일시적인 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 제1항 내지 제41항 중 어느 한 항의 방법을 실행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
조항들의 제2 세트는 이전 섹션에서 설명된 일부 기술들, 가령, 이전 섹션의 항목 3, 4 및 12를 포함하는 일부 기술들을 사용한다.
1. 비디오 처리 방법으로서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 상기 비디오 영역에서 상기 하나 또는 그 이상의 비디오 블록의 변환을 위한 다수의 움직임 벡터 차이(MVD) 정밀도들의 사용을 판단하는 단계 및 상기 단계에 기반하여 상기 변환을 실행하는 단계를 포함하는 비디오 처리 방법.
2. 제1항에 있어서, 상기 하나 또는 그 이상의 비디오 블록들의 적어도 일부의 변환은 어파인 모드 코딩에 기반하는 비디오 처리 방법.
3. 제1항 또는 제2항에 있어서, 상기 사용은 시퀀스 파라미터 세트(Sequence Parameter Set: SPS), 픽처 파라미터 세트(Picture Parameter Set: PPS), 비디오 파라미터 세트(Video Parameter Set: VPS), 시퀀스 헤더, 픽처 헤더, 슬라이스 헤더, 또는 코딩 트리 유닛(Coding Tree Units: CTUs)의 그룹을 포함하는 상기 코딩된 표현에서 표시되는 비디오 처리 방법.
4. 제3항에 있어서, 상기 사용은 상기 MVD 정밀도들을 표시하는 데에 사용되는 구문 요소에 의존하여 표시되는 비디오 처리 방법.
5. 비디오 처리 방법으로서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도(AMVR) 절차를 적용할지 여부를 결정하는 단계 및 상기 결정에 기반하여 상기 변환을 실행하는 단계를 포함하는 비디오 처리 방법.
6. 비디오 처리 방법으로서, 비디오의 하나 또는 그 이상의 비디오 블록들 및 상기 비디오의 코딩된 표현을 포함하는 비디오 영역에 대해, 현재 비디오 블록 및 상기 비디오의 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록에 적응적 움직임 벡터 해상도(AMVR) 절차를 적용할지 여부를 결정하는 단계 및 상기 결정에 기반하여 상기 변환을 실행하는 단계를 포함하는 비디오 처리 방법.
7. 제5항 또는 제6항에 있어서, 상기 비디오 블록의 상기 변환은 어파인 모드 코딩에 기반하는 비디오 처리 방법.
8. 제7항에 있어서, 상기 결정 단계는 상기 현재 블록의 참조 픽처에 의존하는 비디오 처리 방법.
9. 제8항에 있어서, 상기 참조 픽처가 현재 픽처인 경우, 상기 결정 단계는 상기 AMVR 절차를 적용하지 않는 비디오 처리 방법.
10. 제5항 또는 제6항에 있어서, 상기 결정 단계는 화면 내 블록 복사(Intra Block Copying: IBC)가 상기 현재 블록에 적용되는지 여부에 의존하는 비디오 처리 방법.
11. 제10항에 있어서, 상기 결정 단계는 상기 AMVR 절차를 상기 IBC에 의해 코딩된 상기 블록에 적용할 것을 결정하는 비디오 처리 방법.
12. 제11항에 있어서, IBC 코딩된 블록들에 대한 후보 움직임 벡터(MV), MVD 또는 움직임 벡터 예측(Motion Vector Prediction: MVP) 정밀도들은 상기 IBC에 의해 코딩되지 않은 다른 비디오 블록에 대해 사용된 정밀도들과 상이한 비디오 처리 방법.
13. 제11항에 있어서, IBC 코딩된 블록들에 대한 후보 MV, MVD 또는 MVP 정밀도들은 어파인 모드로 코딩된 다른 비디오 블록에 대해 사용된 정밀도들과 상이한 비디오 처리 방법.
14. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 현재 블록으로부터 상기 코딩된 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
15. 제1항 내지 제13항 중 어느 한 항에 있어서, 상기 변환을 수행하는 단계는 상기 코딩된 표현으로부터 상기 현재 블록을 생성하는 단계를 포함하는 비디오 처리 방법.
16. 비디오 시스템에서의 장치로서, 프로세서 및 명령들을 포함하는 비-일시적 메모리를 포함하며, 여기서 상기 명령들은 상기 프로세서에 의해 실행될 경우 상기 프로세서가 제1항 내지 제15항 중 어느 한 항의 방법을 수행하도록 하는 비디오 시스템에서의 장치.
17. 비-일시적인 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 제1항 내지 제15항 중 어느 한 항의 방법을 실행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
조항들의 제3 세트는 이전 섹션에서 설명된 일부 기술들, 가령, 이전 섹션의 항목 5부터 10 및 13을 포함하는 일부 기술들을 사용한다.
1. 비디오 처리 방법으로서, 어파인 코딩 모드 또는 상기 어파인 코딩 모드의 율-왜곡(RD) 코스트를 사용하는 현재 코딩 유닛의 부모 코딩 유닛의 코딩 모드에 기반하여, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위한 적응적 움직임 벡터 해상도(AMVR)의 사용을 결정하는 단계 및 상기 결정 단계의 결과에 따라 상기 변환을 실행하는 단계를 포함하는 비디오 처리 방법.
2. 제1항에 있어서, 상기 부모 코딩 유닛의 상기 코딩 모드가 AF_Inter 모드 또는 AF_MERGE 모드가 아닌 경우, 상기 결정 단계는 상기 현재 코딩 유닛에 대한 상기 AMVR의 사용을 비활성화하는 비디오 처리 방법.
3. 제1항에 있어서, 상기 부모 코딩 유닛의 상기 코딩 모드가 AF_Inter 모드가 아닌 경우, 상기 결정 단계는 상기 현재 코딩 유닛에 대한 상기 AMVR의 사용을 비활성화하는 비디오 처리 방법.
4. 제1항에 있어서, 상기 어파인 코딩 모드의 상기 RD가 양의 임계값과 AMVR 모드의 RD 코스트의 곱 보다 클 경우, 상기 결정 단계는 상기 현재 코딩 유닛에 대한 상기 AMVR의 사용을 비활성화하는 비디오 처리 방법.
5. 제4항에 있어서, 상기 결정은 1/4 픽셀 MV 정밀도에 대해 적용되는 비디오 처리 방법.
6. 제1항에 있어서, 최소 RD 코스트가 양의 임계값과 머지 모드의 RD 코스트의 곱 보다 클 경우, 상기 결정 단계는 상기 현재 코딩 유닛에 대한 상기 AMVR의 사용을 비활성화하며, 이때 상기 최소 RD 코스트는 상기 어파인 코딩 모드의 상기 RD 코스트와 AMVR 모드의 RD 코스트 중 더 적은 것인 비디오 처리 방법.
7. 제6항에 있어서, 상기 결정은 1/4 픽셀 MV 정밀도에 대해 적용되는 비디오 처리 방법.
8. 비디오 처리 방법으로서, 향상된 움직임 벡터 예측(AMVP) 코딩 모드를 사용하는, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위한 적응적 움직임 벡터 해상도(AMVR)의 사용을 결정하는 단계 및 상기 결정 단계의 결과에 따라 상기 변환을 실행하는 단계를 포함하며, 이때, 상기 결정은 상기 AMVP 코딩 모드의 율-왜곡(RD) 코스트에 기반하는 비디오 처리 방법.
9. 제8항에 있어서, 상기 AMVP 코딩 모드의 상기 RD 코스트가 양의 임계값과 어파인 모드의 RD 코스트의 곱 보다 클 경우, 상기 결정 단계는 상기 AMVR의 사용을 비활성화하는 비디오 처리 방법.
10. 제8항에 있어서, 상기 결정은 1/4 픽셀 MV 정밀도에 대해 적용되는 비디오 처리 방법.
11. 제8항에 있어서, 최소 RD 코스트가 양의 임계값과 머지 모드의 RD 코스트의 곱 보다 클 경우, 상기 결정 단계는 상기 AMVR의 사용을 비활성화하며, 이때 상기 최소 RD 코스트는 어파인 모드의 RD 코스트와 상기 AMVR 코딩 모드의 RD 코스트 중 더 적은 것인 비디오 처리 방법.
12. 제11항에 있어서, 상기 결정은 1/4 픽셀 MV 정밀도에 대해 적용되는 비디오 처리 방법.
13. 비디오 처리 방법으로서, 비디오의 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위해, 4-파라미터 어파인 모델 또는 6-파라미터 어파인 모델을 사용하는 움직임 벡터(MV) 정밀도들의 세트를 생성하는 단계 및 MV 정밀도들의 세트에 기반하여 상기 변환을 실행하는 것을 포함하는 비디오 처리 방법.
14. 제13항에 있어서, 단일 MV 정밀도에서 획득된 상기 4 파라미터 어파인 모델 또는 상기 6 파라미터 어파인 모델은 다른 MV 정밀도들을 위한 후보 탐색 출발 지점으로 사용되는 비디오 처리 방법.
15. 제14항에 있어서, 상기 단일 MV 정밀도는 1/16 MV 정확도를 포함하는 비디오 처리 방법.
16. 제14항에 있어서, 상기 단일 MV 정밀도는 1/4 MV 정확도를 포함하는 비디오 처리 방법.
17. 비디오 처리 방법으로서, 어파인 코딩 모드를 사용하는 현재 블록의 부모 블록의 코딩 모드에 기반하여, 적응적 움직임 벡터 해상도(AMVR) 툴이 변환을 위해 사용되는지 여부를 판단하는 단계 및 상기 판단의 결과에 따라 상기 변환을 실행하는 단계를 포함하며, 이때, 상기 AMVR툴은 디코딩 동안 움직임 벡터 해상도를 개선하는 데에 사용되는 비디오 처리 방법.
18. 제17항에 있어서, 상기 현재 블록의 상기 부모 블록이 상기 어파인 코딩 모드가 아닌 경우, 상기 판단 단계는 상기 현재 블록에 대한 상기 AMVR를 확인하지 않도록 하는 비디오 처리 방법.
19. 비디오 처리 방법으로서, 이전 블록들에 대해 어파인 코딩 모드를 사용하여 이전에 코딩된 MV 정밀도들의 사용에 기반하여, 현재 블록의 코딩된 표현 및 상기 현재 블록 간의 변환을 위해 상기 어파인 코딩 모드를 사용하는 상기 현재 블록에 대한 MV 정밀도들의 율-왜곡(RD) 계산의 종료를 결정하는 단계 및 상기 결정 단계의 결과에 따라 상기 변환을 실행하는 단계를 포함하는 비디오 처리 방법.
20. 제19항에 있어서, 상기 현재 블록 및 상기 이전 블록들은 현재 이미지 세그먼트 및 이전 이미지 세그먼트는 픽처들, 슬라이스들, 타일들, 또는 CTU 행들인 비디오 처리 방법.
21. 제1항 내지 제20항 중 어느 한 항에 있어서, 상기 변환을 실행하는 단계는 상기 현재 블록으로부터 상기 코딩된 표현을 생성하는 단계를 포함하는 비디오 처리 방법.
22. 제1항 내지 제20항 중 어느 한 항에 있어서, 상기 변환을 실행하는 단계는 상기 코딩된 표현으로부터 상기 현재 블록을 생성하는 단계를 포함하는 비디오 처리 방법.
23. 비디오 시스템에서의 장치로서, 프로세서 및 명령들을 포함하는 비-일시적 메모리를 포함하며, 여기서 상기 명령들은 상기 프로세서에 의해 실행될 경우 상기 프로세서가 제1항 내지 제22항 중 어느 한 항의 방법을 수행하도록 하는 비디오 시스템에서의 장치.
24. 비-일시적인 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 제1항 내지 제22항 중 어느 한 항의 방법을 실행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
상기로부터, 현재 개시된 기술의 구체적인 실시예들은 여기서 설명의 목적을 위해 기재되었으며, 본 발명의 범위에서 벗어나지 않는 한 다양한 수정이 이루어질 수 있다는 점이 이해될 것이다. 따라서, 현재 개시된 기술은 첨부된 청구항들에 의하는 바를 제외하고는 한정되지 않는다.
본 특허 문서에 기재된 주제 및 기능적 작업들의 구현들은 다양한 시스템, 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있으며, 여기에는 본 명세서에서 개시된 구조들 및 구조적 등가물들, 또는 그 중 하나 이상의 조합이 포함될 수 있다. 본 명세서에 기재된 주제의 구현들은 하나 이상의 컴퓨터 프로그램 제품들로, 즉, 유형의, 비-일시적인 컴퓨터 판독 가능한 매체에 코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현되어, 데이터 처리 장치에 의해 실행하거나, 또는 상기 장치의 작동을 제어할 수 있다. 상기 컴퓨터 판독 가능한 매체는 기계 판독 가능한 저장 디바이스, 기계 판독 가능한 저장 기판, 메모리 디바이스, 기계 판독 가능한 전파 신호를 가져오는 물질의 조성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 유닛" 또는 "데이터 처리 장치"는, 데이터를 처리하기 위한 모든 장치, 디바이스 및 기계를 포괄하며, 예를 들어, 프로그래머블 프로세서, 컴퓨터, 또는 다중 프로세서 또는 컴퓨터들을 포함한다. 상기 장치는, 하드웨어 외에도, 당해 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드를 포함할 수 있고, 코드는 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 시스템, 또는 이들 중 하나 이상의 조합을 구성한다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려짐)은 컴파일 또는 인터프리터 언어를 포함하는 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 또는 컴퓨터 환경에서 사용하기에 적합한 그 밖의 유닛을 포함하는 임의의 형태로도 배치될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 상응해야 하는 것은 아니다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일의 일부에 저장되거나(예를 들어, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트), 당해 프로그램 전용의 단일 파일에 저장되거나, 또는 다수의 조직화된 파일들(예를 들어, 하나 이상의 모듈, 서브프로그램, 코드의 부분을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서, 또는 한 위치에 배치되거나 또는 다수의 위치에 걸쳐서 분산되고 통신 네트워크에 의해 접속된 다수의 컴퓨터에서 실행되도록 배치될 수 있다.
본 명세서에서 설명된 프로세스와 논리 흐름은 하나 이상의 프로그래머블 프로세서에 의해 수행될 수 있고, 이 프로그래머블 프로세서는 입력 데이터에 작용하여 출력을 생성함으로써 기능을 수행하는 하나 이상의 컴퓨터 프로그램들을 실행한다. 프로세서와 논리 흐름은, 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 전용 논리 회로에 의해 수행될 수 있고, 장치 또한 전용 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예를 들어, 범용 및 전용 마이크로프로세서 및 임의 종류의 디지털 컴퓨터의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리(ROM), 또는 랜덤 액세스 메모리(RAM), 또는 양자로부터 명령어들과 데이터를 수신한다. 컴퓨터의 필수 구성요소는 명령을 실행하는 프로세서 및 명령어와 데이터를 저장하는 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어, 자기 디스크, 광자기 디스크, 또는 광디스크를 포함하거나, 또는 이 디바이스와 데이터를 송수신하기 위하여 동작적으로(operatively) 결합될 수 있다. 하지만 컴퓨터는 이러한 디바이스를 구비할 필요는 없다. 컴퓨터 프로그램 명령어들과 데이터를 저장하기 적합한 컴퓨터 판독가능 매체에는, 예를 들어, 반도체 메모리 디바이스(예를 들어, EPROM, EEPROM, 플래시 메모리 디바이스), 자기 디스크(예를 들어, 내부 하드디스크, 착탈식 디스크), 광자기 디스크 및 CD ROM과 DVD-ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스가 포함된다. 프로세서와 메모리는 전용 논리 회로에 의해 보완되거나 또는 전용 논리 회로에 통합될 수 있다.
도면과 함께 본 명세서는 오직 예시적인 것으로 간주되어야 한다. 본 문서에서 사용된 "또는"은 문맥이 명시적으로 달리 지시하지 않는 한 "및/또는"을 포함하는 것으로 의도되었다.
본 특허문서가 다수의 특정한 구현 세부사항을 포함하고 있지만, 이는 임의 발명의 범위나 청구할 사항의 범위에 대한 어떠한 제한으로도 이해되어서는 안 되며, 특정한 발명들의 특정한 실시예들에 고유할 수 있는 특징의 설명으로서 이해되어야 한다. 별개의 실시예들의 맥락에서 본 특허 문서에서 설명된 소정의 특징들은 조합되어 단일 실시예로 구현될 수도 있다. 반대로, 단일 실시예의 맥락에서 설명한 다양한 특징들은 복수의 실시예에서 별개로 구현되거나 어떤 적당한 하위 조합으로도 구현 가능하다. 또한, 앞에서 특징들이 특정 조합에서 동작하는 것으로서 설명되고 그와 같이 청구되기까지 하였지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 해당 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위 조합이나 하위 조합의 변형으로 될 수 있다.
마찬가지로, 동작들이 도면들에서 특정한 순서로 묘사되고 있지만, 이는 그러한 동작들이 바람직한 결과를 얻기 위해, 도시한 특정 순서나 순차적인 순서로 수행되어야 한다거나, 도시된 모든 동작들이 수행되어야 한다는 것을 의미하지 않는다. 더욱이, 본 특허 문서에 기재된 실시예에 있어서 다양한 시스템 구성요소들의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 된다.
단지 몇 가지 구현들 및 예시들이 기술되었으며, 기타 구현, 개선 및 변형은 본 특허 문서에 기술되고 도시된 것에 기초하여 이루어질 수 있다.

Claims (15)

  1. 비디오 데이터 처리 방법에 있어서,
    제1 비디오 블록의 코딩 모드가 어파인 화면 간 모드(affine inter mode) 인지 또는 논-어파인 화면 간 모드(non-affine inter mode) 인지를 결정하는 단계;
    상기 제1 비디오 블록의 움직임 정보를 위해, 다중 움직임 정밀도들을 포함하는 움직임 정밀도 세트 로부터 움직임 정밀도를 결정하는 단계; 및
    상기 결정된 코딩 모드와 상기 결정된 움직임 정밀도에 기반하여 상기 제1 비디오 블록을 코딩하는 단계;를 포함하되,
    상기 움직임 정밀도 세트내 상기 움직임 정밀도를 지시하기 위해 복수의 구문 요소들(syntax elements)이 비디오 스트림내에 선택적으로 존재하고, 상기 복수의 구문 요소들의 적어도 하나 이상의 구문 요소의 시멘틱(semantics)은 상기 논-어파인 화면 간 모드와 상기 어파인 화면 간 모드 내에서 상이하며,
    상기 복수의 구문 요소들은 제1 구문 요소 및 제2 구문 요소를 포함하고, 상기 비디오 비트스트림내에 상기 제1 비디오 블록을 위한 상기 제1 구문 요소의 존재 여부는, 상기 제1 비디오 블록의 제어점 움직임 벡터들(control point motion vectors)의 움직임 벡터 차분들(MVDs) 및 상기 제1 비디오 블록의 적어도 하나 제어점 움직임 벡터들의 적어도 하나 이상의 움직임 벡터 차분이 넌-제로(non-zero)인 경우에 기반하고, 상기 비디오 비트스트림내에 상기 제2 구문 요소는 상기 비디오 비트스트림내에 특정 값을 가진 상기 제1 구문 요소가 존재하는 경우에만 존재하고,
    상기 제1 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제1 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되고,
    상기 제2 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제2 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되는, 비디오 데이터 처리 방법.
  2. 제1 항에 있어서,
    상기 코딩은 상기 제1 비디오 블록을 상기 비디오 비트스트림으로 인코딩 하는 것을 포함하는, 비디오 데이터 처리 방법.
  3. 제1 항에 있어서,
    상기 코딩은 상기 비디오 비트스트림으로부터 상기 제1 비디오 블록을 디코딩 하는 것을 포함하는, 비디오 데이터 처리 방법.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 제1 구문 요소는,
    상기 제1 비디오 블록의 모든 제어점 움직임 벡터들의 움직임 벡터 차분들이 제로임,
    어파인 화면 간 코딩된 블록들을 위한 다중 MVD 정밀도가 비활성됨,
    중 적어도 하나의 조건이 만족되는 경우에 기반하여 상기 비디오 비트스트림내에 존재하지 않는, 비디오 데이터 처리 방법.
  5. 제1 항 내지 제4 항 중 어느 한 항에 있어서,
    상기 제1 비디오 블록의 제어점 움직임 벡터들의 상기 움직임 벡터 차분들(MVDs)은 각 제어점 움직임 벡터에 대한 각 유효 예측 방향 내의 MVD를 포함하되, 상기 MVD의 수평 요소(horizontal component)와 수직 요소(vertical component)가 모두 제로 일때 상기 MVD는 제로 MVD인, 비디오 데이터 처리 방법.
  6. 제1 항 내지 제5 항 중 어느 한 항에 있어서,
    제1 구문 요소가 상기 비디오 비트스트림내에 존재하지 않거나 또는 상기 제1 구문 요소가 제로인 경우에 대응하여, 상기 제1 비디오 블록의 상기 움직임 정밀도는 기본 정밀도(default precision)에 해당되는 제1 움직임 정밀도인, 비디오 데이터 처리 방법.
  7. 제6 항에 있어서,
    상기 제1 움직임 정밀도는 1/4 루마 샘플인, 비디오 데이터 처리 방법.
  8. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    상기 제2 구문 요소는,
    상기 제1 구문 요소가 넌-제로임,
    상기 제1 비디오 블록의 코딩 모드가 어파인 화면 간 모드임,
    중 적어도 하나의 조건이 만족되는 경우에 기반하여 상기 비디오 비트스트림내에 존재하는, 비디오 데이터 처리 방법.
  9. 제1 항 내지 제8 항 중 어느 한 항에 있어서,
    상기 움직임 정밀도가 1/16 루마 샘플에 대응하여 상기 제2 구문 요소는 제로와 동일하고,
    상기 움직임 정밀도가 정수 루마 샘플에 대응하여 상기 제2 구문 요소는 넌-제로와 동일한, 비디오 데이터 처리 방법.
  10. 제1 항 내지 제9 항 중 어느 한 항에 있어서,
    상기 논-어파인 화면 간 모드와 상기 어파인 화면 간 모드 내에서 상이한, 복수의 구문 요소들에서 적어도 하나 이상의 구문 요소의 상기 시멘틱은, 상기 어파인 화면 간 모드에서 코딩된 블록들과 상기 논-어파인 화면 간 모드에서 코딩된 블록들에 대해 상이한 움직임 정밀도를 지시하는 제2 구문 요소의 동일한 값을 포함하는, 비디오 데이터 처리 방법.
  11. 제1 항 내지 제7 항 중 어느 한 항에 있어서,
    화면 내 블록 복사(intra block copy) 모드에서 코딩된 블록을 위한 상기 움직임 정밀도 세트내 움직임 정밀도를 지시하기 위해, 상기 제2 구문 요소가 비디오 비트스트림내에 선택적으로 존재하되, 상기 제1 구문 요소는 상기 화면 내 블록 복사 모드에서 코딩된 블록에 대해서는 스킵되는, 비디오 데이터 처리 방법.
  12. 제1 항 내지 제11 항 중 어느 한 항에 있어서,
    상기 제1 비디오 블록의 상기 움직임 정보는, 움직임 벡터 차이(MVD), 움직임 벡터 예측(MVP) 및 움직임 벡터(MV) 중 적어도 어느 하나 이상을 포함하는, 비디오 데이터 처리 방법.
  13. 프로세서 및 명령이 포함된 비 일시적 메모리를 포함하는 비디오 처리 장치에 있어서, 상기 명령은 상기 프로세서의 실행 시에, 상기 프로세서가,
    제1 비디오 블록의 코딩 모드가 어파인 화면 간 모드(affine inter mode) 인지 또는 논-어파인 화면 간 모드(non-affine inter mode) 인지를 결정하게 하고;
    상기 제1 비디오 블록의 움직임 정보를 위해, 다중 움직임 정밀도들을 포함하는 움직임 정밀도 세트 로부터 움직임 정밀도를 결정하게 하고; 및
    상기 결정된 코딩 모드와 상기 결정된 움직임 정밀도에 기반하여 상기 제1 비디오 블록을 코딩하게 하되,
    상기 움직임 정밀도 세트내 상기 움직임 정밀도를 지시하기 위해 복수의 구문 요소들(syntax elements)이 비디오 스트림내에 선택적으로 존재하고, 상기 복수의 구문 요소들의 적어도 하나 이상의 구문 요소의 시멘틱(semantics)은 상기 논-어파인 화면 간 모드와 상기 어파인 화면 간 모드 내에서 상이하며,
    상기 복수의 구문 요소들은 제1 구문 요소 및 제2 구문 요소를 포함하고, 상기 비디오 비트스트림내에 상기 제1 비디오 블록을 위한 상기 제1 구문 요소의 존재 여부는, 상기 제1 비디오 블록의 제어점 움직임 벡터들(control point motion vectors)의 움직임 벡터 차분들(MVDs) 및 상기 제1 비디오 블록의 적어도 하나 제어점 움직임 벡터들의 적어도 하나 이상의 움직임 벡터 차분이 넌-제로(non-zero)인 경우에 기반하고, 상기 비디오 비트스트림내에 상기 제2 구문 요소는 상기 비디오 비트스트림내에 특정 값을 가진 상기 제1 구문 요소가 존재하는 경우에만 존재하고,
    상기 제1 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제1 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되고,
    상기 제2 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제2 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되는, 비디오 처리 장치.
  14. 프로세서가 수행하는 명령을 저장하는 비 일시적 컴퓨터 판독 가능한 저장 매체에 있어서, 상기 명령은 상기 프로세서가
    제1 비디오 블록의 코딩 모드가 어파인 화면 간 모드(affine inter mode) 인지 또는 논-어파인 화면 간 모드(non-affine inter mode) 인지를 결정하게 하고;
    상기 제1 비디오 블록의 움직임 정보를 위해, 다중 움직임 정밀도들을 포함하는 움직임 정밀도 세트 로부터 움직임 정밀도를 결정하게 하고; 및
    상기 결정된 코딩 모드와 상기 결정된 움직임 정밀도에 기반하여 상기 제1 비디오 블록을 코딩하게 하되,
    상기 움직임 정밀도 세트내 상기 움직임 정밀도를 지시하기 위해 복수의 구문 요소들(syntax elements)이 비디오 스트림내에 선택적으로 존재하고, 상기 복수의 구문 요소들의 적어도 하나 이상의 구문 요소의 시멘틱(semantics)은 상기 논-어파인 화면 간 모드와 상기 어파인 화면 간 모드 내에서 상이하며,
    상기 복수의 구문 요소들은 제1 구문 요소 및 제2 구문 요소를 포함하고, 상기 비디오 비트스트림내에 상기 제1 비디오 블록을 위한 상기 제1 구문 요소의 존재 여부는, 상기 제1 비디오 블록의 제어점 움직임 벡터들(control point motion vectors)의 움직임 벡터 차분들(MVDs) 및 상기 제1 비디오 블록의 적어도 하나 제어점 움직임 벡터들의 적어도 하나 이상의 움직임 벡터 차분이 넌-제로(non-zero)인 경우에 기반하고, 상기 비디오 비트스트림내에 상기 제2 구문 요소는 상기 비디오 비트스트림내에 특정 값을 가진 상기 제1 구문 요소가 존재하는 경우에만 존재하고,
    상기 제1 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제1 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되고,
    상기 제2 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제2 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되는, 비 일시적 컴퓨터 판독 가능한 저장 매체.
  15. 비디오의 비트스트림을 저장하는 방법에 있어서,
    제1 비디오 블록의 코딩 모드가 어파인 화면 간 모드(affine inter mode) 인지 또는 논-어파인 화면 간 모드(non-affine inter mode) 인지를 결정하는 단계;
    상기 제1 비디오 블록의 움직임 정보를 위해, 다중 움직임 정밀도들을 포함하는 움직임 정밀도 세트 로부터 움직임 정밀도를 결정하는 단계;
    상기 결정된 코딩 모드와 상기 결정된 움직임 정밀도에 기반하여 상기 제1 비디오 블록을 상기 비디오 비트스트림으로 인코딩하는 단계; 및
    비 일시적 컴퓨터 판독 가능한 기록 매체에 상기 비디오 비트스트림을 저장하는 단계를 포함하되,
    상기 움직임 정밀도 세트내 상기 움직임 정밀도를 지시하기 위해 복수의 구문 요소들(syntax elements)이 비디오 스트림내에 선택적으로 존재하고, 상기 복수의 구문 요소들의 적어도 하나 이상의 구문 요소의 시멘틱(semantics)은 상기 논-어파인 화면 간 모드와 상기 어파인 화면 간 모드 내에서 상이하며,
    상기 복수의 구문 요소들은 제1 구문 요소 및 제2 구문 요소를 포함하고, 상기 비디오 비트스트림내에 상기 제1 비디오 블록을 위한 상기 제1 구문 요소의 존재 여부는, 상기 제1 비디오 블록의 제어점 움직임 벡터들(control point motion vectors)의 움직임 벡터 차분들(MVDs) 및 상기 제1 비디오 블록의 적어도 하나 제어점 움직임 벡터들의 적어도 하나 이상의 움직임 벡터 차분이 넌-제로(non-zero)인 경우에 기반하고, 상기 비디오 비트스트림내에 상기 제2 구문 요소는 상기 비디오 비트스트림내에 특정 값을 가진 상기 제1 구문 요소가 존재하는 경우에만 존재하고,
    상기 제1 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제1 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되고,
    상기 제2 구문 요소는 적어도 하나 이상의 컨텍스트 모델 및 적어도 하나 이상의 컨텍스트의 사용을 포함하는 컨텍스트-기반 코딩을 이용하여 코딩되어 지되, 적어도 하나 이상의 동일한 컨텍스트 모델이, 상기 어파인 화면 간 모드로 코딩된 블록들 및 상기 논-어파인 화면 간 모드로 코딩된 블록들의 상기 제2 구문 요소를 위해 사용되어 지고, 컨텍스트의 선택은 상기 블록의 상기 코딩 모드가 상기 어파인 화면 간 모드 인지 또는 상기 논-어파인 화면 간 모드 인지 여부에 종속되는, 비디오 비트스트림 저장 방법.
KR1020237044469A 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용 KR20240005178A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
CNPCT/CN2018/106513 2018-09-19
CN2018106513 2018-09-19
CNPCT/CN2019/074433 2019-02-01
CN2019074433 2019-02-01
KR1020217006475A KR102635047B1 (ko) 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용
PCT/IB2019/057897 WO2020058890A1 (en) 2018-09-19 2019-09-19 Syntax reuse for affine mode with adaptive motion vector resolution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006475A Division KR102635047B1 (ko) 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용

Publications (1)

Publication Number Publication Date
KR20240005178A true KR20240005178A (ko) 2024-01-11

Family

ID=68051876

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237044469A KR20240005178A (ko) 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용
KR1020217006475A KR102635047B1 (ko) 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217006475A KR102635047B1 (ko) 2018-09-19 2019-09-19 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용

Country Status (7)

Country Link
US (5) US11265573B2 (ko)
EP (2) EP4325859A3 (ko)
JP (2) JP7212150B2 (ko)
KR (2) KR20240005178A (ko)
CN (4) CN110933427B (ko)
TW (3) TW202025737A (ko)
WO (3) WO2020058886A1 (ko)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2497256C1 (ru) * 2012-06-07 2013-10-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "Новосибирский государственный технический университет" Устройство дифференциальной защиты силового трансформатора
US11089317B2 (en) * 2017-08-03 2021-08-10 Lg Electronics Inc. Method and apparatus for processing video signal using affine prediction
US11082721B2 (en) 2017-09-07 2021-08-03 Lg Electronics Inc. Method and apparatus for entropy-encoding and entropy-decoding video signal
CA3090562C (en) * 2018-02-12 2023-03-14 Mediatek Inc. Method and apparatus of current picture referencing for video coding using adaptive motion vector resolution and sub-block prediction mode
GB2588004B (en) 2018-06-05 2023-03-01 Beijing Bytedance Network Tech Co Ltd Interaction between IBC and affine
TWI746994B (zh) 2018-06-19 2021-11-21 大陸商北京字節跳動網絡技術有限公司 用於不同參考列表的不同精確度
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
CN113115046A (zh) 2018-06-21 2021-07-13 北京字节跳动网络技术有限公司 分量相关的子块分割
GB2591647B (en) 2018-09-08 2023-02-01 Beijing Bytedance Network Tech Co Ltd Affine mode calculations for different video block sizes
EP4325859A3 (en) 2018-09-19 2024-05-15 Beijing Bytedance Network Technology Co., Ltd. Syntax reuse for affine mode with adaptive motion vector resolution
WO2020060366A1 (ko) * 2018-09-22 2020-03-26 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
CN110944207B (zh) 2018-09-23 2023-12-08 北京字节跳动网络技术有限公司 仿射模型的表示
CN110944203A (zh) 2018-09-23 2020-03-31 北京字节跳动网络技术有限公司 块级别的运动矢量平面模式
WO2020058956A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Non-affine blocks predicted from affine motion
CN110944208B (zh) 2018-09-23 2023-05-30 北京字节跳动网络技术有限公司 仿射模式的复杂度降低
CN110944196B (zh) 2018-09-24 2023-05-30 北京字节跳动网络技术有限公司 简化的基于历史的运动矢量预测
WO2020084470A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode
WO2020094150A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in current picture referencing
US11178396B2 (en) 2018-11-14 2021-11-16 Tencent America LLC Constrained intra prediction and unified most probable mode list generation
CN112997487B (zh) 2018-11-15 2024-07-09 北京字节跳动网络技术有限公司 仿射模式与其他帧间编解码工具之间的协调
WO2020098812A1 (en) 2018-11-16 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Pruning method for history-based affine parameters
CN113039780B (zh) 2018-11-17 2023-07-28 北京字节跳动网络技术有限公司 视频处理中用运动矢量差的Merge
WO2020125751A1 (en) 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Information signaling in current picture referencing mode
CN113273187B (zh) 2019-01-10 2024-07-05 北京字节跳动网络技术有限公司 基于仿射的具有运动矢量差(MVD)的Merge
KR20210121021A (ko) 2019-01-31 2021-10-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥
WO2020156517A1 (en) 2019-01-31 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Fast algorithms for symmetric motion vector difference coding mode
WO2020156538A1 (en) 2019-02-03 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Interaction between mv precisions and mv difference coding
WO2020164580A1 (en) 2019-02-14 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Size selective application of decoder side refining tools
CN113491125A (zh) 2019-02-22 2021-10-08 北京字节跳动网络技术有限公司 基于历史的仿射模式子表
KR20210128497A (ko) * 2019-03-11 2021-10-26 인터디지털 브이씨 홀딩스 인코포레이티드 비디오 인코딩 및 디코딩을 위한 엔트로피 코딩
US11178399B2 (en) * 2019-03-12 2021-11-16 Qualcomm Incorporated Probability initialization for video coding
CN116248891A (zh) * 2019-03-14 2023-06-09 华为技术有限公司 帧间预测的方法及相关装置
KR102609947B1 (ko) 2019-04-02 2023-12-04 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 양방향 광학 흐름 기반 비디오 코딩 및 디코딩
WO2020211864A1 (en) 2019-04-19 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Region based gradient calculation in different motion vector refinements
CN113711608B (zh) 2019-04-19 2023-09-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程的适用性
CN113711609B (zh) 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
EP3939287A4 (en) 2019-04-25 2022-05-11 Beijing Bytedance Network Technology Co., Ltd. RESTRICTIONS ON DIFFERENCE BETWEEN MOVEMENT VECTORS
EP3932070A4 (en) 2019-04-28 2022-06-15 Beijing Bytedance Network Technology Co., Ltd. SYMMETRICAL MOTION VECTOR DIFFERENCE CODING
KR20210149759A (ko) 2019-04-30 2021-12-09 주식회사 윌러스표준기술연구소 적응적 모션 벡터 해상도를 이용한 비디오 신호 처리 방법 및 장치
JP7323641B2 (ja) 2019-05-21 2023-08-08 北京字節跳動網絡技術有限公司 アフィンモードのための適応動きベクトル差分分解
US12096032B2 (en) * 2019-06-24 2024-09-17 Interdigital Vc Holdings, Inc. Method and apparatus for signaling decoding data using high level syntax elements
WO2020259681A1 (en) 2019-06-25 2020-12-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on motion vector difference
CN114073090A (zh) * 2019-07-01 2022-02-18 交互数字Vc控股法国公司 仿射运动补偿的双向光流细化
KR20220042125A (ko) 2019-08-10 2022-04-04 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브픽처 디코딩에서의 버퍼 관리
CN114365490B (zh) 2019-09-09 2024-06-18 北京字节跳动网络技术有限公司 高精度图像和视频编解码的系数缩放
EP4018648A4 (en) 2019-09-21 2022-11-23 Beijing Bytedance Network Technology Co., Ltd. HIGH PRECISION TRANSFORMATION AND QUANTIZATION FOR IMAGE AND VIDEO CODING
JP7482220B2 (ja) 2019-10-18 2024-05-13 北京字節跳動網絡技術有限公司 サブピクチャのパラメータセットシグナリングにおける構文制約
CN114651444A (zh) * 2019-11-11 2022-06-21 寰发股份有限公司 视频编解码中发信可适性运动向量差值解析度的方法和装置
US11575926B2 (en) 2020-03-29 2023-02-07 Alibaba Group Holding Limited Enhanced decoder side motion vector refinement
US20230147701A1 (en) * 2020-04-02 2023-05-11 Sharp Kabushiki Kaisha Video decoding apparatus and video decoding method
CN115462085A (zh) 2020-04-05 2022-12-09 字节跳动有限公司 视频编解码中滤波的高级控制
US20210385485A1 (en) * 2020-06-06 2021-12-09 Alibaba Group Holding Limited Angular weighted prediction for inter prediction
CN114071147B (zh) * 2020-07-29 2023-04-11 四川大学 一种基于双线性模型的vvc运动补偿方法
US12113987B2 (en) * 2020-12-22 2024-10-08 Qualcomm Incorporated Multi-pass decoder-side motion vector refinement
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
US20240205386A1 (en) * 2021-04-09 2024-06-20 Interdigital Ce Patent Holdings, Sas Intra block copy with template matching for video encoding and decoding
CN113242427B (zh) * 2021-04-14 2024-03-12 中南大学 一种基于vvc中自适应运动矢量精度的快速方法及装置
US11917165B2 (en) * 2021-08-16 2024-02-27 Tencent America LLC MMVD signaling improvement
US20230103405A1 (en) * 2021-10-04 2023-04-06 Tencent America LLC Method and apparatus for intra block copy prediction with sample padding
CN114157868B (zh) * 2022-02-07 2022-07-19 杭州未名信科科技有限公司 视频帧的编码模式筛选方法、装置及电子设备
US20230300364A1 (en) * 2022-03-15 2023-09-21 Tencent America LLC Temporal based subblock type motion vector predictor
US20230328225A1 (en) * 2022-04-11 2023-10-12 Tencent America LLC Bilateral matching with affine motion
WO2023207649A1 (en) * 2022-04-29 2023-11-02 Mediatek Inc. Method and apparatus for decoder-side motion derivation in video coding system
US20240137539A1 (en) * 2022-10-18 2024-04-25 Tencent America LLC Method and apparatus for affine motion refinement
WO2024141071A1 (en) * 2022-12-30 2024-07-04 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing
US20240259589A1 (en) * 2023-02-01 2024-08-01 Tencent America LLC Method and Apparatus for Signaling for Compound Inter Prediction Modes
CN116866638B (zh) * 2023-07-31 2023-12-15 联通沃音乐文化有限公司 一种基于影像的智能视频处理方法和系统

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3651941B2 (ja) 1994-11-28 2005-05-25 キヤノン株式会社 画像再生装置
KR100924850B1 (ko) 2002-01-24 2009-11-02 가부시키가이샤 히타치세이사쿠쇼 동화상 신호의 부호화 방법 및 복호화 방법
WO2007003340A2 (en) 2005-07-01 2007-01-11 Nero Ag Video encoder and video decoder
US20070025442A1 (en) * 2005-07-28 2007-02-01 Sanyo Electric Co., Ltd. Coding method for coding moving images
JP2009089332A (ja) 2007-10-03 2009-04-23 Sony Corp 動き予測方法及び動き予測装置
US8542727B2 (en) 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
KR101377530B1 (ko) 2009-08-21 2014-03-27 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
US8837592B2 (en) 2010-04-14 2014-09-16 Mediatek Inc. Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus
JP2012060208A (ja) 2010-09-06 2012-03-22 Nippon Telegr & Teleph Corp <Ntt> 動画像符号化方法,動画像符号化装置,動画像復号方法,動画像復号装置およびそれらのプログラム
KR20140139615A (ko) 2010-10-08 2014-12-05 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 블록 분할 및 블록 병합을 지원하는 픽처 코딩
US10327008B2 (en) 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
WO2012134246A2 (ko) 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
US10123053B2 (en) 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
CA3101406C (en) 2011-06-14 2023-05-09 Tammy Lee Method and apparatus for encoding motion information and method and apparatus for decoding same
KR101492105B1 (ko) 2011-08-29 2015-02-11 주식회사 아이벡스피티홀딩스 Amvp 모드에서 영상 부호화 방법
CN102291581B (zh) 2011-09-09 2013-09-25 西安电子科技大学 支持帧场自适应运动估计的实现方法
US9736489B2 (en) 2011-09-17 2017-08-15 Qualcomm Incorporated Motion vector determination for video coding
US9088796B2 (en) 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US20130177084A1 (en) 2012-01-10 2013-07-11 Qualcomm Incorporated Motion vector scaling in video coding
US9325991B2 (en) 2012-04-11 2016-04-26 Qualcomm Incorporated Motion vector rounding
US9538172B2 (en) 2012-04-11 2017-01-03 Qualcomm Incorporated Grouping bypass coded syntax elements in video coding
EP3796651A1 (en) 2012-05-09 2021-03-24 Sun Patent Trust Method of performing motion vector prediction, encoding and decoding methods, and apparatuses thereof
KR101638720B1 (ko) 2012-05-29 2016-07-20 미디어텍 인크. 샘플 어댑티브 오프셋 정보를 부호화하는 방법 및 장치
US9635356B2 (en) 2012-08-07 2017-04-25 Qualcomm Incorporated Multi-hypothesis motion compensation for scalable video coding and 3D video coding
US9319684B2 (en) 2012-08-21 2016-04-19 Qualcomm Incorporated Alternative transform in scalable video coding
US9313500B2 (en) 2012-09-30 2016-04-12 Microsoft Technology Licensing, Llc Conditional signalling of reference picture list modification information
WO2014120367A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive parametric transforms for coding for next generation video
US10432963B2 (en) 2013-11-05 2019-10-01 Arris Enterprises Llc Bit depth variable for high precision data in weighted prediction syntax and semantics
CN103561263B (zh) 2013-11-06 2016-08-24 北京牡丹电子集团有限责任公司数字电视技术中心 基于运动矢量约束和加权运动矢量的运动补偿预测方法
US20150189321A1 (en) 2014-01-02 2015-07-02 Mediatek Inc. Method of Binarization and Context Adaptive Binary Arithmetic Coding of Depth Coding Syntax
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
CN105874789B (zh) 2014-01-29 2019-10-29 联发科技股份有限公司 利用自适应运动向量精度的方法
WO2015192286A1 (en) 2014-06-16 2015-12-23 Qualcomm Incorporated Simplified shifting merge candidate and merge list derivation in 3d-hevc
US10327001B2 (en) 2014-06-19 2019-06-18 Qualcomm Incorporated Systems and methods for intra-block copy
CN107079164B (zh) 2014-09-30 2020-07-10 寰发股份有限公司 用于视频编码的自适应运动向量分辨率的方法
US9918105B2 (en) 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
CN104363451B (zh) * 2014-10-27 2019-01-25 华为技术有限公司 图像预测方法及相关装置
JP6837965B2 (ja) 2014-10-31 2021-03-03 サムスン エレクトロニクス カンパニー リミテッド 符号化装置及び復号装置
KR101908249B1 (ko) 2014-11-18 2018-10-15 미디어텍 인크. 단방향 예측 및 병합 후보로부터의 모션 벡터에 기초한 양방향 예측 비디오 코딩 방법
KR102128216B1 (ko) * 2014-11-20 2020-06-30 에이치에프아이 이노베이션 인크. 모션 벡터 및 블록 벡터 해상도 제어의 방법
CN104661031B (zh) 2015-02-16 2017-12-22 华为技术有限公司 用于视频图像编码和解码的方法、编码设备和解码设备
US10200711B2 (en) 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
US20160323600A1 (en) 2015-04-30 2016-11-03 Zhan Ma Methods and Apparatus for Use of Adaptive Prediction Resolution in Video Coding
CN109005407B (zh) * 2015-05-15 2023-09-01 华为技术有限公司 视频图像编码和解码的方法、编码设备和解码设备
US10148961B2 (en) 2015-05-29 2018-12-04 Qualcomm Incorporated Arithmetic coder with multiple window sizes
GB2539212A (en) * 2015-06-08 2016-12-14 Canon Kk Handling of non-correct block vectors generated for intra block copy coding mode
TWI816224B (zh) 2015-06-08 2023-09-21 美商Vid衡器股份有限公司 視訊解碼或編碼方法及裝置
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
CN105163116B (zh) * 2015-08-29 2018-07-31 华为技术有限公司 图像预测的方法及设备
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
KR20180059443A (ko) 2015-09-24 2018-06-04 엘지전자 주식회사 영상 코딩 시스템에서 움직임 벡터 정제 기반 인터 예측 방법 및 장치
US10547847B2 (en) * 2015-09-24 2020-01-28 Lg Electronics Inc. AMVR-based image coding method and apparatus in image coding system
US10812822B2 (en) 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
KR20180081716A (ko) 2015-11-13 2018-07-17 엘지전자 주식회사 영상 코딩 시스템에서 임계값을 이용한 적응적 영상 예측 방법 및 장치
US20190158870A1 (en) * 2016-01-07 2019-05-23 Mediatek Inc. Method and apparatus for affine merge mode prediction for video coding system
CN108541375B (zh) 2016-02-03 2022-04-12 夏普株式会社 运动图像解码装置、运动图像编码装置、以及预测图像生成装置
WO2017156705A1 (en) * 2016-03-15 2017-09-21 Mediatek Inc. Affine prediction for video coding
SG11201806865YA (en) 2016-03-15 2018-09-27 Mediatek Inc Method and apparatus of video coding with affine motion compensation
KR102480088B1 (ko) 2016-03-17 2022-12-23 삼성디스플레이 주식회사 양자점 발광 소자
JP6895645B2 (ja) 2016-03-25 2021-06-30 パナソニックIpマネジメント株式会社 信号依存型適応量子化を用いて動画像を符号化及び復号するための方法及び装置
WO2017194773A1 (en) 2016-05-13 2017-11-16 Telefonaktiebolaget Lm Ericsson (Publ) Motion vector difference coding and decoding
US10560712B2 (en) 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
JPWO2017204185A1 (ja) 2016-05-27 2019-03-22 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 符号化装置、復号装置、符号化方法、および復号方法
EP3264768A1 (en) * 2016-06-30 2018-01-03 Thomson Licensing Method and apparatus for video coding with adaptive motion information refinement
WO2018047668A1 (ja) * 2016-09-12 2018-03-15 ソニー株式会社 画像処理装置および画像処理方法
WO2018049594A1 (en) * 2016-09-14 2018-03-22 Mediatek Inc. Methods of encoder decision for quad-tree plus binary tree structure
US11356693B2 (en) 2016-09-29 2022-06-07 Qualcomm Incorporated Motion vector coding for video coding
US10462462B2 (en) 2016-09-29 2019-10-29 Qualcomm Incorporated Motion vector difference coding technique for video coding
US10631002B2 (en) 2016-09-30 2020-04-21 Qualcomm Incorporated Frame rate up-conversion coding mode
EP3301918A1 (en) * 2016-10-03 2018-04-04 Thomson Licensing Method and apparatus for encoding and decoding motion information
US10979732B2 (en) 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
EP4075798B1 (en) * 2016-10-04 2024-09-11 HFI Innovation Inc. Method and apparatus for intra chroma coding in image and video coding
US10448010B2 (en) 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
WO2018095313A1 (en) 2016-11-22 2018-05-31 Mediatek Inc. Method and apparatus for motion vector sign prediction in video coding
CN117528108A (zh) * 2016-11-28 2024-02-06 英迪股份有限公司 图像编码方法、图像解码方法及用于传送比特流的方法
US10694202B2 (en) 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
CN108235007B (zh) 2016-12-12 2023-06-27 上海天荷电子信息有限公司 各模式使用不同精度同种编码参数的数据压缩方法和装置
WO2018110203A1 (ja) 2016-12-16 2018-06-21 シャープ株式会社 動画像復号装置、および動画像符号化装置
CN110100440B (zh) 2016-12-22 2023-04-25 株式会社Kt 一种用于对视频进行解码、编码的方法
US10757412B2 (en) 2017-01-03 2020-08-25 Avago Technologies International Sales Pte. Limited Architecture flexible binary arithmetic coding system
US10523964B2 (en) 2017-03-13 2019-12-31 Qualcomm Incorporated Inter prediction refinement based on bi-directional optical flow (BIO)
US10595035B2 (en) 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US10560723B2 (en) 2017-05-08 2020-02-11 Qualcomm Incorporated Context modeling for transform coefficient coding
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
WO2019009618A1 (ko) 2017-07-04 2019-01-10 삼성전자 주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
CA3069635C (en) 2017-07-14 2022-06-14 Mediatek, Inc. Method and apparatus for range derivation in context adaptive binary arithmetic coding
CN109391814B (zh) * 2017-08-11 2023-06-06 华为技术有限公司 视频图像编码和解码的方法、装置及设备
US10609384B2 (en) 2017-09-21 2020-03-31 Futurewei Technologies, Inc. Restriction on sub-block size derivation for affine inter prediction
JPWO2019069602A1 (ja) 2017-10-03 2020-09-10 日本電気株式会社 映像符号化装置、映像復号装置、映像符号化方法、映像復号方法、プログラムおよび映像システム
US11172201B2 (en) 2017-12-18 2021-11-09 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
US11172229B2 (en) 2018-01-12 2021-11-09 Qualcomm Incorporated Affine motion compensation with low bandwidth
US10757417B2 (en) 2018-01-20 2020-08-25 Qualcomm Incorporated Affine motion compensation in video coding
US11012715B2 (en) 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
CN116962717A (zh) 2018-03-14 2023-10-27 Lx 半导体科技有限公司 图像编码/解码方法、存储介质和发送方法
US10873748B2 (en) * 2018-05-12 2020-12-22 Qualcomm Incorporated Storage of high precision motion vectors in video coding
US11509924B2 (en) 2018-06-01 2022-11-22 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
GB2588004B (en) 2018-06-05 2023-03-01 Beijing Bytedance Network Tech Co Ltd Interaction between IBC and affine
EP3806461A4 (en) * 2018-06-07 2022-03-16 Wilus Institute of Standards and Technology Inc. VIDEO SIGNAL PROCESSING METHOD AND APPARATUS USING ADAPTIVE MOTION VECTOR RESOLUTION
US11303923B2 (en) 2018-06-15 2022-04-12 Intel Corporation Affine motion compensation for current picture referencing
TWI746994B (zh) 2018-06-19 2021-11-21 大陸商北京字節跳動網絡技術有限公司 用於不同參考列表的不同精確度
US20190387247A1 (en) 2018-06-19 2019-12-19 Qualcomm Incorporated Signaling sub-prediction unit motion vector predictor
US20190045193A1 (en) 2018-06-29 2019-02-07 Intel Corporation Region-based motion estimation and modeling for accurate region-based motion compensation for efficient video processing or coding
WO2020009446A1 (ko) 2018-07-02 2020-01-09 엘지전자 주식회사 어파인 예측을 이용하여 비디오 신호를 처리하기 위한 방법 및 장치
CN110809165B (zh) 2018-08-04 2022-07-26 北京字节跳动网络技术有限公司 仿射的运动矢量差精度
EP3844955A1 (en) 2018-08-29 2021-07-07 Vid Scale, Inc. Adaptive motion vector precision for affine motion model based video coding
GB2591647B (en) 2018-09-08 2023-02-01 Beijing Bytedance Network Tech Co Ltd Affine mode calculations for different video block sizes
BR122021009784A2 (pt) 2018-09-10 2021-07-13 Lg Electronics Inc. Método e aparelho de decodificação de imagens com base em predição de movimento afim usando lista de candidatos a mvp afim no sistema de codificação de imagens
EP4325859A3 (en) 2018-09-19 2024-05-15 Beijing Bytedance Network Technology Co., Ltd. Syntax reuse for affine mode with adaptive motion vector resolution
CN118055249A (zh) 2018-09-22 2024-05-17 Lg 电子株式会社 使用间预测处理视频信号的方法和装置
EP3834418A1 (en) 2018-09-23 2021-06-16 Beijing Bytedance Network Technology Co. Ltd. Modification of motion vector with adaptive motion vector resolution
CN111357294B (zh) 2018-10-23 2022-12-30 北京字节跳动网络技术有限公司 基于子块的运动信息列表的简化熵编解码
WO2020093999A1 (en) 2018-11-05 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Inter prediction with refinement in video processing
KR20210121021A (ko) 2019-01-31 2021-10-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 어파인 모드 적응적 움직임 벡터 해상도 코딩 문맥
WO2020156517A1 (en) 2019-01-31 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Fast algorithms for symmetric motion vector difference coding mode
WO2020156538A1 (en) * 2019-02-03 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Interaction between mv precisions and mv difference coding
KR20210128497A (ko) * 2019-03-11 2021-10-26 인터디지털 브이씨 홀딩스 인코포레이티드 비디오 인코딩 및 디코딩을 위한 엔트로피 코딩
CN113711609B (zh) * 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
SG11202111762WA (en) 2019-04-25 2021-11-29 Op Solutions Llc Efficient coding of global motion vectors
CN115516863A (zh) * 2020-05-01 2022-12-23 抖音视界有限公司 用于分割语法的熵编解码

Also Published As

Publication number Publication date
TW202025781A (zh) 2020-07-01
TW202025736A (zh) 2020-07-01
CN110933420A (zh) 2020-03-27
WO2020058888A1 (en) 2020-03-26
JP7212150B2 (ja) 2023-01-24
WO2020058890A1 (en) 2020-03-26
WO2020058886A1 (en) 2020-03-26
US11265573B2 (en) 2022-03-01
EP4325859A2 (en) 2024-02-21
EP4325859A3 (en) 2024-05-15
US20200213612A1 (en) 2020-07-02
KR102635047B1 (ko) 2024-02-07
CN110933421B (zh) 2023-06-30
JP2022500909A (ja) 2022-01-04
TWI827681B (zh) 2024-01-01
CN110933421A (zh) 2020-03-27
US20240015320A1 (en) 2024-01-11
CN110933420B (zh) 2023-09-01
KR20210059708A (ko) 2021-05-25
US20200213594A1 (en) 2020-07-02
US20210289225A1 (en) 2021-09-16
CN116546213A (zh) 2023-08-04
JP2023052336A (ja) 2023-04-11
TW202025737A (zh) 2020-07-01
CN110933427A (zh) 2020-03-27
CN110933427B (zh) 2023-05-12
EP3827586A1 (en) 2021-06-02
US11653020B2 (en) 2023-05-16
JP7568753B2 (ja) 2024-10-16
TWI815967B (zh) 2023-09-21
US20210211707A1 (en) 2021-07-08

Similar Documents

Publication Publication Date Title
KR102635047B1 (ko) 적응적 움직임 벡터 해상도를 가지는 어파인 모드에 대한 구문 재사용
KR102613889B1 (ko) 적응적 움직임 벡터 해상도를 갖는 움직임 벡터 수정
US11451819B2 (en) Clipping of updated MV or derived MV
KR20210094530A (ko) 화면 내 블록 복사 모드 및 화면 간 예측 도구들 간의 상호작용
WO2020156516A1 (en) Context for coding affine mode adaptive motion vector resolution
US11431965B2 (en) Affine mode in video coding and decoding
US12108072B2 (en) Fast algorithms for symmetric motion vector difference coding mode
WO2020143774A1 (en) Merge with mvd based on geometry partition
CN111010570A (zh) 基于仿射运动信息的尺寸限制
WO2020156525A1 (en) Multiple syntax elements for adaptive motion vector resolution
WO2020192749A1 (en) Entropy coding for affine mode with adaptive motion vector resolution
WO2020140908A1 (en) Mapping between distance index and distance in merge with mvd

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination