KR20210103561A - 인터 예측 방법 및 장치 - Google Patents

인터 예측 방법 및 장치 Download PDF

Info

Publication number
KR20210103561A
KR20210103561A KR1020217023306A KR20217023306A KR20210103561A KR 20210103561 A KR20210103561 A KR 20210103561A KR 1020217023306 A KR1020217023306 A KR 1020217023306A KR 20217023306 A KR20217023306 A KR 20217023306A KR 20210103561 A KR20210103561 A KR 20210103561A
Authority
KR
South Korea
Prior art keywords
motion vector
resolution
processed
control point
compensation unit
Prior art date
Application number
KR1020217023306A
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 후아웨이 테크놀러지 컴퍼니 리미티드
Priority claimed from PCT/CN2019/127669 external-priority patent/WO2020135368A1/zh
Publication of KR20210103561A publication Critical patent/KR20210103561A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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

Abstract

다음을 포함하는 인터 예측 방법이 제공된다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 고급 모션 벡터 예측 모드인 경우(S901), 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 - 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족함 - 를 획득하는 단계(S902); 그 다음, 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 단계(S903);각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계(S904).

Description

인터 예측 방법 및 장치
본 출원은 2018년 12월 24일자로 중국 지적 재산권 관리국(China National Intellectual Property Administration)에 출원된 발명의 명칭이 "INTER PREDICTION METHOD AND APPARATUS"인 중국 특허 출원 번호 제201811588243.6호에 대한 우선권을 주장하며, 본 출원은 또한 2019년 2월 2일자로 중국 지적 재산권 관리국에 출원된 발명의 명칭이 "INTER PREDICTION METHOD AND APPARATUS"인 중국 특허 출원 번호 제201910108004.4호에 대한 우선권을 주장하는데, 이들 특허 출원은 참조에 의해 그들 전체가 본원에 통합된다.
기술 분야
본 출원의 실시형태는 비디오 코덱 분야에 관한 것으로, 특히, 인터 예측 방법 및 장치에 관한 것이다.
정보 기술의 발달에 따라, 고선명 텔레비전, 온라인 회의, IPTV, 및 3D 텔레비전과 같은 비디오 서비스가 급속하게 발전하고 있다. 직관성(intuitiveness) 및 고효율성과 같은 이점 때문에, 비디오 신호는 사람들의 일상 생활에서 정보를 획득하는 가장 중요한 방식이 되고 있다. 비디오 신호는 큰 데이터 볼륨을 포함하며, 따라서, 많은 양의 송신 대역폭 및 저장 공간을 차지할 필요가 있다. 비디오 신호를 효과적으로 송신하고 저장하기 위해서는, 비디오 신호에 대해 압축 인코딩이 수행될 필요가 있다. 비디오 압축 기술은, 점점 더, 비디오 애플리케이션 분야에서 없어서는 안 될 핵심 기술이 되고 있다. 인코딩 및 디코딩 프로세스에서, 저장 공간을 절약하기 위해, 모션 정보는 상대적으로 낮은 해상도를 가지고 일반적으로 저장된다. 그러나, 상대적으로 낮은 해상도의 모션 정보를 가지고 인코딩 또는 디코딩이 여전히 수행되는 경우, 인터 예측 정확도는 상대적으로 낮다.
본 출원의 실시형태는 인터 예측 정확도를 효과적으로 향상시킬 수 있는 인터 예측 방법 및 장치를 제공한다.
제1 양태에 따르면, 본 출원의 실시형태는, 다음의 것을 포함하는 인터 예측 방법을 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 예측 모드라고 판정하는 것; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것; 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위(motion compensation unit)의 모션 벡터를 유도하는 것; 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 것; 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터를 프로세싱하는 것; 및 예측 블록 및 프로세싱된 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것.
실현 가능한 구현예에서, 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터를 프로세싱하는 것은 다음의 것을 포함한다: 모션 보상 단위의 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이와 비교하는 것; 및 모션 보상 단위의 모션 벡터 해상도가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하지 못하는 경우, 모션 보상 단위의 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하는 것.
실현 가능한 구현예에서, 모션 보상 단위의 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하는 것은 다음의 것을 포함한다:
저장 단위의 모션 벡터 해상도 및 비트 깊이가 1/4 정확도와 16 비트이고, 모션 보상 단위의 모션 벡터 해상도 및 비트 깊이가 1/16 정확도 및 18 비트인 경우, 모션 보상 단위의 모션 정보에서 마지막으로 저장되는 해상도 및 비트 깊이는 1/4 정확도 및 16 비트이다. 1/4 정확도에서의 모션 벡터는 저장에 대한 명세의 공식 (9)에 따라 직접적으로 유도될 수 있다. 대안적으로, 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 단계에서 획득되는 1/16 정확도의 모션 벡터가 직접적으로 양자화되어 1/4 정확도의 모션 벡터를 획득할 수 있다. 예를 들면, 양자화 방법은 이하에서 라운드 함수인데, 여기서 mvShift는 2로 설정된다.
실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 모션 벡터가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하는 경우, 변환의 수행을 스킵하는 것.
실현 가능한 구현예에서, 예측 블록 및 프로세싱된 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것은 다음의 것을 포함한다: 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록(residual block)을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것; 또는 프로세싱된 모션 벡터에 기초하여 예측 블록을 업데이트하고, 프로세싱될 픽쳐 블록의 업데이트된 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것; 또는 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하고, 프로세싱된 모션 벡터에 기초하여 재구성된 블록에 대해 필터링 프로세싱을 수행하는 것; 또는 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하고, 프로세싱된 모션 벡터 및 재구성된 블록을 후속하는 프로세싱될 픽쳐 블록의 예측 정보로 사용하는 것.
제2 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 방법을 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 예측 모드라고 판정하는 것; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것; 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 프로세싱하는 것; 프로세싱된 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 것; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 것.
실현 가능한 구현예에서, 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 프로세싱하는 것은 다음의 것을 포함한다: 제어 포인트 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이와 비교하는 것; 및 제어 포인트 모션 벡터 해상도가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하지 않는 경우, 제어 포인트 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하는 것.
실현 가능한 구현예에서, 제어 포인트 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하는 것은 다음의 것을 포함한다:
상속된 모션 벡터 예측 방법을 사용하는 것에 의해 CPMV가 획득되는 경우, CPMV의 해상도 및 비트 깊이는 현재의 블록의 인접한 아핀 단위에 기초하여 획득될 수 있는데, 여기서 인접 블록의 모션 벡터 해상도 및 비트 깊이는, 저장 단위의 모션 정보, 즉, 1/4 정확도 및 16 비트를 판독하는 것에 의해 획득된다. 1/16 정확도의 모션 벡터는 명세에서의 공식 (6) 및 (7)에 따라 유도된다.
특정한 구현 동작이 다음의 프로시져에 기초하여 수행될 수 있다. Log2는 2의 대수(logarithm)를 취하는 함수이고, <<는 좌측 시프트를 나타내고, >>는 우측 시프트를 나타내고, P는 인접한 아핀 코딩 블록의 폭이고, Q는 인접한 아핀 코딩 블록의 높이이다:
Figure pct00001
인접한 아핀 디코딩 블록이 6 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00002
인접한 아핀 디코딩 블록이 4 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00003
그러면, 현재의 아핀 디코딩 블록의 제어 포인트 모션 벡터는 다음의 공식에 기초하여 계산될 수 있다:
Figure pct00004
Figure pct00005
라운드 함수의 연산은 다음과 같다: 임의의 입력 K 및 mvShift에 대해, 출력 K는 다음의 방식으로 획득된다:
Figure pct00006
mvShift를 5로 설정하는 것에 의해, CPMV의 해상도는 향상된다.
결과적으로 나타나는 CPMV는, 그 다음, CPMV가 18 비트의 다이나믹 레인지를 초과하지 않도록 클리핑된다(clipped).
구성된 모션 벡터 예측 방법을 사용하는 것에 의해 CPMV가 획득되는 경우, CPMV의 해상도 및 저장은 인접 블록의 것들, 즉 1/4 정확도 및 16 비트이다. 그 다음, 2 비트만큼 좌측 시프트가 수행되어, 1/4 정확도의 18 비트 CPMV를 획득한다.
실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 제어 포인트 모션 벡터가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하는 경우, 변환의 수행을 스킵하는 것.
제3 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 장치를 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 예측 모드라고 판정하도록 구성되는 판정 모듈; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성되는 획득 모듈; 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈; 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록 구성되는 보상 모듈; 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터를 프로세싱하도록 구성되는 프로세싱 모듈; 및 예측 블록 및 프로세싱된 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈.
실현 가능한 구현예에서, 프로세싱 모듈은 구체적으로: 모션 보상 단위의 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이와 비교하도록; 그리고 모션 보상 단위의 모션 벡터 해상도가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하지 못하는 경우, 모션 보상 단위의 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하도록 구성된다.
실현 가능한 구현예에서, 프로세싱 모듈은 또한: 모션 보상 단위의 모션 벡터가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하는 경우, 변환의 수행을 스킵하도록 구성된다.
실현 가능한 구현예에서, 재구성 모듈은 구체적으로: 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록; 또는 프로세싱된 모션 벡터에 기초하여 예측 블록을 업데이트하고, 프로세싱될 픽쳐 블록의 업데이트된 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록; 또는 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하고, 프로세싱된 모션 벡터에 기초하여 재구성된 블록에 대해 필터링 프로세싱을 수행하도록; 또는 프로세싱될 픽쳐 블록의 예측 블록 및 잔차 블록을 가산하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하고, 프로세싱된 모션 벡터 및 재구성된 블록을 후속하는 프로세싱될 픽쳐 블록의 예측 정보로 사용하도록 구성된다.
제4 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 장치를 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 예측 모드라고 판정하도록 구성되는 판정 모듈; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성되는 획득 모듈; 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 프로세싱하도록 구성되는 프로세싱 모듈; 프로세싱된 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록 구성되는 보상 모듈.
실현 가능한 구현예에서, 프로세싱 모듈은 구체적으로: 제어 포인트 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이와 비교하도록; 그리고 제어 포인트 모션 벡터 해상도가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하지 않는 경우, 제어 포인트 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이로 변환하도록 구성된다.
실현 가능한 구현예에서, 프로세싱 모듈은 또한: 제어 포인트 모션 벡터가 사전 설정된 모션 벡터 해상도 및/또는 모션 벡터 비트 깊이를 충족하는 경우, 변환의 수행을 스킵하도록 구성된다.
제5 양태에 따르면, 본 출원의 실시형태는: 서로 커플링되는 불휘발성 메모리 및 프로세서를 포함하는 비디오 코덱 디바이스를 제공하는데, 프로세서는 메모리에 저장되는 프로그램 코드를 호출하여 전술한 양태 중 임의의 하나에서의 방법을 수행한다.
저장된 모션 정보 및 모션 보상을 위한 모션 정보가 별개로 유도될 필요가 있는 종래의 기술과 비교하여, 본 출원에서는, 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키는 것에 의해 모션 보상이 수행되는데, 이것은 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도를 효율적으로 향상시킬 수 있다.
또한, 전술한 양태 중 임의의 하나의 설계 방식에 의해 초래되는 기술적 효과에 대해서는, 제1 양태 및 제2 양태의 상이한 설계 방식에 의해 초래되는 기술적 효과를 참조한다. 세부 사항은 여기서는 다시 설명되지 않는다.
본 출원의 실시형태에서, 인터 예측 장치의 이름은 장치에 대해 제한을 두지는 않는다. 실제 구현예에서, 장치는 다른 이름을 가질 수 있다. 각각의 디바이스의 기능이 본 출원의 실시형태에서의 것들과 유사하다면, 그것은 본 출원의 청구범위 및 그들의 동등한 기술의 범위 내에 속한다.
제6 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 방법을 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 고급 모션 벡터 예측(Advanced Motion Vector Prediction; AMVP) 모드라고 판정된 이후, 프로세싱될 픽쳐 블록 제어 포인트 모션 벡터를 획득하고, 그 다음, 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 것; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것. 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족한다.
본 출원의 이 실시형태는 아핀 AMVP 모드에서 해상도 변경 프로세스를 제공한다. 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키고 모션 보상을 수행하는 것에 의해, 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도가 효과적으로 향상될 수 있다.
제6 양태를 참조하면, 제1 실현 가능한 구현예에서, 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것은 다음의 것을 포함한다: 제어 포인트 모션 벡터 차이(control point motion vectors difference; CPMVD) 및 제어 포인트 모션 벡터 예측자(control point motion vectors predictor; CPMVP)를 획득하는 것; CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD 및 제1 시프트 값에 기초하여 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것; 또는 CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP 및 제2 시프트 값에 기초하여 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것.
예를 들면, 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
CPMV = CPMVD' + CPMVP', 여기서 CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD' = CPMVD << mvrShift1이고; CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVD' = CPMVD이고; CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP' = CPMVP << mvrShift2이고; CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVP' = CPMVP이고; 그리고 CPMV는 제어 포인트 모션 벡터를 나타내고, mvrShift1은 제1 시프트 값을 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 0이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 2이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 4이다.
제1 시프트 값이 0이거나 또는 제2 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
전술한 실현 가능한 구현예를 참조하면, 제2 실현 가능한 구현예에서, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터는 클리핑된다.
전술한 실현 가능한 구현예를 참조하면, 제3 실현 가능한 구현예에서, 제어 포인트 모션 벡터는, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 클리핑된다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제4 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하는 것; 및 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 것.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터는 다음의 공식에 따라 획득된다:
MCUMV' = (MCUMV >> mvrShift3), 여기서 MCUMV'은 모션 보상 단위의 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift3은 제3 시프트 값을 나타낸다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/16 픽셀 정확도이면, 제3 시프트 값은 2이고; 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제3 시프트 값은 0이고; 그리고 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32 픽셀 정확도이면, 제3 시프트 값은 3이다.
전술한 실현 가능한 구현예를 참조하면, 제5 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하는 것.
전술한 실현 가능한 구현예를 참조하면, 제6 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하는 것.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제7 실현 가능한 구현예에서, 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것은 다음의 것을 포함한다: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 것; 및 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것.
제7 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 방법을 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 병합(Merge) 예측 모드라고 판정된 이후, 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 것; 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 조정하는 것; 조정된 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 것; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것.
본 출원의 실시형태 1은 아핀 AMVP 모드에서 해상도 변경 프로세스를 제공한다. 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키고 모션 보상을 수행하는 것에 의해, 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도가 효과적으로 향상될 수 있다.
제7 양태를 참조하면, 제1 실현 가능한 구현예에서, 제어 포인트 모션 벡터를 조정하는 것은 다음의 것을 포함한다: 제어 포인트 모션 벡터의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, 제어 포인트 모션 벡터 및 제1 시프트 값에 기초하여 조정된 제어 포인트 모션 벡터를 획득하는 것.
예를 들면, 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
CPMV' = CPMV << mvrShift1, 여기서 CPMV는 제어 포인트 모션 벡터를 나타내고, CPMV'은 조정된 제어 포인트 모션 벡터를 나타내며, mvrShift1은 제1 시프트 값을 나타낸다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이고; 그리고 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이다.
제1 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
전술한 실현 가능한 구현예를 참조하면,제2 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터를 클리핑하는 것.
전술한 실현 가능한 구현예를 참조하면, 제3 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터를 클리핑하는 것.
제7 양태를 참조하면, 제4 실현 가능한 구현예에서, 프로세싱될 픽쳐 블록의 프로세싱된 인접한 픽쳐 블록의 예측 모드는 아핀 모션 모델 기반의 예측 모드이다. 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터가 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터에 기초하여 유도되는 경우, 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
Figure pct00007
Figure pct00008
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 6 파라미터 모델이면,
Figure pct00009
이고,
Figure pct00010
이고;
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 4 파라미터 모델이면, dHorY = -dVerX이고, dVerY = dHorX이고;
Log2()는 2의 대수를 취하는 함수를 나타내고, <<는 좌측 시프트를 나타내고, >>는 우측 시프트를 나타내고, P는 프로세싱된 인접한 픽쳐 블록의 폭이고, Q는 프로세싱된 인접한 픽쳐 블록의 높이이고;
(vx0, vy0), (vx1, vy1), 및 (vx2, vy2)는, 각각, 프로세싱될 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx0, vy0)은 프로세싱될 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx1, vy1)는 프로세싱될 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx2, vy2)는 프로세싱될 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고;
(vx4, vy4), (vx5, vy5), 및 (vx6, vy6)은, 각각, 프로세싱된 인접한 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx4, vy4)는 프로세싱된 인접한 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx5, vy5)는 프로세싱된 인접한 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx6, vy6)은 프로세싱된 인접한 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고; 그리고
mvShift는 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터 해상도에 기초하여 결정된다.
인접한 픽쳐 블록은 공간적으로 인접한 아핀 코딩 블록 또는 시간적으로 인접한 아핀 코딩 블록일 수 있다는 것을 유의해야 한다.
인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 5로 설정하는 것에 의해 1/16 픽셀 정확도로서 획득된다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 6으로 설정하는 것에 의해 1/32 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 7로 설정하는 것에 의해 1/4 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록의 CPMV 해상도는 저장 단위의 저장된 모션 벡터 해상도를 가리킬 수 있다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제5 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하는 것; 및 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 것.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터는 다음의 공식에 따라 획득된다:
MCUMV' = (MCUMV >> mvrShift2), 여기서 MCUMV'은 모션 보상 단위의 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 2이고; 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 0이고; 그리고 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32 픽셀 정확도이면, 제2 시프트 값은 3이다.
전술한 실현 가능한 구현예를 참조하면, 제6 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하는 것.
전술한 실현 가능한 구현예를 참조하면, 제7 실현 가능한 구현예에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하는 것.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제8 실현 가능한 구현예에서, 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것은 다음의 것을 포함한다: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 것; 및 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것.
제8 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 장치를 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 AMVP 모드라고 판정하도록 구성되는 판정 모듈; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 - 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족함 - 를 획득하도록 구성되는 획득 모듈; 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈.
제8 양태를 참조하면, 제1 실현 가능한 구현예에서, 획득 모듈은 구체적으로: CPMVD 및 CPMVP를 획득하도록; CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD 및 제1 시프트 값에 기초하여 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록; 또는 CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP 및 제2 시프트 값에 기초하여 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성된다.
예를 들면, 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
CPMV = CPMVD' + CPMVP'. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD' = CPMVD << mvrShift1이다. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVD' = CPMVD이다. CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP' = CPMVP << mvrShift2이다. CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVP' = CPMVP이다. CPMV는 제어 포인트 모션 벡터를 나타내고, mvrShift1은 제1 시프트 값을 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 0이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 2이다. 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 4이다.
제1 시프트 값이 0이거나 또는 제2 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
전술한 실현 가능한 구현예를 참조하면, 제2 실현 가능한 구현예에서, 획득 모듈은 또한: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예를 참조하면, 제3 실현 가능한 구현예에서, 획득 모듈은 또한: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제4 실현 가능한 구현예에서, 획득 모듈은 또한: 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하도록 구성되고; 그리고 장치는 스토리지 모듈을 더 포함하는데, 스토리지 모듈은 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성된다.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터는 다음의 공식에 따라 획득된다:
MCUMV' = (MCUMV >> mvrShift3), 여기서 MCUMV'은 모션 보상 단위의 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift3은 제3 시프트 값을 나타낸다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/16 픽셀 정확도이면, 제3 시프트 값은 2이고; 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제3 시프트 값은 0이고; 그리고 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32 픽셀 정확도이면, 제3 시프트 값은 3이다.
전술한 실현 가능한 구현예를 참조하면, 제5 실현 가능한 구현예에서, 획득 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예를 참조하면, 제6 실현 가능한 구현예에서, 획득 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제7 실현 가능한 구현예에서, 재구성 모듈은 구체적으로: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록; 그리고 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성된다.
제9 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 장치를 제공한다: 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 병합 예측 모드라고 판정하도록 구성되는 판정 모듈; 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성되는 획득 모듈; 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 조정하도록 구성되는 조정 모듈; 조정된 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈.
제9 양태를 참조하면, 제1 실현 가능한 구현예에서, 조정 모듈은 구체적으로: 제어 포인트 모션 벡터의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, 제어 포인트 모션 벡터 및 제1 시프트 값에 기초하여 조정된 제어 포인트 모션 벡터를 획득하도록 구성된다.
예를 들면, 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
CPMV' = CPMV << mvrShift1, 여기서 CPMV는 제어 포인트 모션 벡터를 나타내고, CPMV'은 조정된 제어 포인트 모션 벡터를 나타내며, mvrShift1은 제1 시프트 값을 나타낸다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이고; 그리고 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이다.
제1 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
전술한 실현 가능한 구현예를 참조하면, 제2 실현 가능한 구현예에서, 조정 모듈은 또한: 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예를 참조하면, 제3 실현 가능한 구현예에서, 조정 모듈은 또한: 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
제9 양태를 참조하면, 제4 실현 가능한 구현예에서, 프로세싱될 픽쳐 블록의 프로세싱된 인접한 픽쳐 블록의 예측 모드는 아핀 모션 모델 기반의 예측 모드이다. 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터가 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터에 기초하여 유도되는 경우, 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
Figure pct00011
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 6 파라미터 모델이면,
Figure pct00012
이고,
Figure pct00013
이고;
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 4 파라미터 모델이면, dHorY = -dVerX이고, dVerY = dHorX이고;
Log2()는 2의 대수를 취하는 함수를 나타내고, <<는 좌측 시프트를 나타내고, >>는 우측 시프트를 나타내고, P는 프로세싱된 인접한 픽쳐 블록의 폭이고, Q는 프로세싱된 인접한 픽쳐 블록의 높이이고;
(vx0, vy0), (vx1, vy1), 및 (vx2, vy2)는, 각각, 프로세싱될 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx0, vy0)은 프로세싱될 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx1, vy1)는 프로세싱될 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx2, vy2)는 프로세싱될 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고;
(vx4, vy4), (vx5, vy5), 및 (vx6, vy6)은, 각각, 프로세싱된 인접한 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx4, vy4)는 프로세싱된 인접한 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx5, vy5)는 프로세싱된 인접한 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx6, vy6)은 프로세싱된 인접한 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고; 그리고
mvShift는 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터 해상도에 기초하여 결정된다.
인접한 픽쳐 블록은 공간적으로 인접한 아핀 코딩 블록 또는 시간적으로 인접한 아핀 코딩 블록일 수 있다는 것을 유의해야 한다.
인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 5로 설정하는 것에 의해 1/16 픽셀 정확도로서 획득된다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 6으로 설정하는 것에 의해 1/32 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 7로 설정하는 것에 의해 1/4 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록의 CPMV 해상도는 저장 단위의 저장된 모션 벡터 해상도를 가리킬 수 있다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제5 실현 가능한 구현예에서, 조정 모듈은 또한: 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하도록 구성되고; 그리고 장치는 스토리지 모듈을 더 포함하는데, 스토리지 모듈은 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성된다.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터는 다음의 공식에 따라 획득된다:
MCUMV' = (MCUMV >> mvrShift2), 여기서 MCUMV'은 모션 보상 단위의 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 2이고; 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 0이고; 그리고 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32 픽셀 정확도이면, 제2 시프트 값은 3이다.
전술한 실현 가능한 구현예를 참조하면, 제6 실현 가능한 구현예에서, 조정 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예를 참조하면, 제7 실현 가능한 구현예에서, 조정 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하도록 구성된다.
전술한 실현 가능한 구현예 중 임의의 하나를 참조하면, 제8 실현 가능한 구현예에서, 재구성 모듈은 구체적으로: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록; 그리고 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성된다.
본 출원의 제10 양태에 따르면, 프로세서 및 프로세서에 커플링되는 메모리를 포함하는 인터 예측 디바이스가 제공되는데, 여기서 프로세서는 제1 양태, 제2 양태, 제6 양태, 또는 제7 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행하도록 구성된다.
본 출원의 제11 양태에 따르면, 컴퓨터 판독 가능 저장 매체가 제공되는데, 여기서 컴퓨터 판독 가능 저장 매체는 명령어를 저장하고, 명령어가 컴퓨터 상에서 실행되는 경우, 컴퓨터는 제1 양태, 제2 양태, 제6 양태, 또는 제7 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행할 수 있게 된다.
본 출원의 제12 양태에 따르면, 명령어를 포함하는 컴퓨터 프로그램 제품이 제공된다. 명령어가 컴퓨터 상에서 실행되는 경우, 컴퓨터는 제1 양태, 제2 양태, 제6 양태, 또는 제7 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행할 수 있게 된다.
본 출원의 제13 양태에 따르면, 비디오 픽쳐 인코더가 제공되는데, 여기서 비디오 픽쳐 인코더는 제3 양태, 제4 양태, 제5 양태, 제8 양태, 또는 제9 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 장치를 포함한다.
본 출원의 제14 양태에 따르면, 비디오 픽쳐 디코더가 제공되는데, 여기서 비디오 픽쳐 디코더는 제3 양태, 제4 양태, 제5 양태, 제8 양태, 또는 제9 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 장치를 포함한다.
또한, 전술한 양태 중 임의의 하나의 설계 방식에 의해 초래되는 기술적 효과에 대해서는, 제6 양태 및 제7 양태의 상이한 설계 방식에 의해 초래되는 기술적 효과를 참조한다. 세부 사항은 여기서는 다시 설명되지 않는다.
본 출원의 실시형태에서, 인터 예측 장치의 이름은 장치에 대해 제한을 두지는 않는다. 실제 구현예에서, 장치는 다른 이름을 가질 수 있다. 각각의 디바이스의 기능이 본 출원의 실시형태에서의 것들과 유사하다면, 그것은 본 출원의 청구범위 및 그들의 동등한 기술의 범위 내에 속한다.
제15 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 방법을 제공한다: 프로세싱될 픽쳐 블록의 CPMVD 및 CPMVP가 획득된 이후, CPMVD를 제1 시프트 값만큼 좌측 시프트하고, CPMVP를 제2 시프트 값만큼 좌측 시프트하고, 좌측 시프트된 CPMVD 및 좌측 시프트된 CPMVP를 가산하여 제어 포인트 모션 벡터를 획득하는 것; 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 것; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, 제1 시프트 값은 0이고, CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, 제2 시프트 값은 0이다.
본 출원의 이 실시형태에서 제공되는 인터 예측 방법에 따르면, 모션 보상은 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키는 것에 의해 수행되는데, 이것은 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도를 효과적으로 향상시킬 수 있다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도인 경우, CPMVD의 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; CPMVD의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이고; CPMVD의 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이고; CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 0이고; CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 2이고; 그리고 CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 4이다.
가능한 설계에서, 방법은 다음의 것을 더 포함한다: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하는 것.
다른 가능한 설계에서, 방법은 다음의 것을 더 포함한다: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하는 것.
다른 가능한 설계에서, 방법은 다음의 것을 더 포함한다: 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터를 프로세싱하는 것; 및 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 것.
옵션 사항으로(optionally), 모션 보상 단위의 모션 벡터를 프로세싱하는 것은 다음의 것을 포함한다: 모션 보상 단위의 모션 벡터를 제3 시프트 값만큼 좌측 시프트하는 것.
다른 가능한 설계에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하는 것.
다른 가능한 설계에서, 방법은 다음의 것을 더 포함한다: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하는 것.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도인 경우, 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제3 시프트 값은 2이고; 모션 보상 단위의 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제3 시프트 값은 0이고; 그리고 모션 보상 단위의 모션 벡터 해상도가 1/32 픽셀 정확도이면, 제3 시프트 값은 3이다.
다른 가능한 설계에서, 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것은 다음의 것을 포함한다: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 것; 및 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 것.
제16 양태에 따르면, 본 출원의 실시형태는 다음의 것을 포함하는 인터 예측 장치를 제공한다: 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 차이(CPMVD) 및 제어 포인트 모션 벡터 예측자(CPMVP)를 획득하도록 구성되는 획득 모듈 - 획득 모듈은 또한 제1 시프트 값만큼 CPMVD를 좌측 시프트하도록 구성되고, CPMVD의 해상도는 제1 모션 벡터 해상도와 동일하고, 제1 시프트 값은 0임 - ; 획득 모듈은 또한 제2 시프트 값만큼 CPMVP를 좌측 시프트하도록 구성되고, CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, 제2 시프트 값은 0임; 및 획득 모듈은 또한 좌측 시프트된 CPMVD 및 좌측 시프트된 CPMVP를 가산하여 제어 포인트 모션 벡터를 획득하도록 구성됨; 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈; 및 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도인 경우, CPMVD의 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; CPMVD의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2이고; CPMVD의 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4이고; CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 0이고; CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 2이고; 그리고 CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 4이다.
가능한 설계에서, 획득 모듈은 또한: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
다른 가능한 설계에서, 획득 모듈은 또한: 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터를 클리핑하도록 구성된다.
다른 가능한 설계에서, 획득 모듈은 또한, 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터를 프로세싱하도록 구성되고; 그리고 장치는 스토리지 모듈을 더 포함한다. 스토리지 모듈은 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성된다.
옵션 사항으로, 획득 모듈은 모션 보상 단위의 모션 벡터를 제3 시프트 값만큼 좌측 시프트하도록 구성된다.
다른 가능한 설계에서, 획득 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이를 클리핑하도록 구성된다.
다른 가능한 설계에서, 획득 모듈은 또한: 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터를 클리핑하도록 구성된다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도인 경우, 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제3 시프트 값은 2이고; 모션 보상 단위의 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제3 시프트 값은 0이고; 그리고 모션 보상 단위의 모션 벡터 해상도가 1/32 픽셀 정확도이면, 제3 시프트 값은 3이다.
다른 가능한 설계에서, 재구성 모듈은 구체적으로: 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상을 수행하여, 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록; 그리고 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성된다.
제17 양태에 따르면, 본 출원의 실시형태는, 프로세서 및 프로세서에 커플링되는 메모리를 포함하는 인터 예측 디바이스를 제공하는데, 여기서 프로세서는 제1 양태, 제2 양태, 제6 양태, 제7 양태, 또는 제15 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행하도록 구성된다.
본 출원의 제18 양태에 따르면, 컴퓨터 판독 가능 저장 매체가 제공되는데, 컴퓨터 판독 가능 저장 매체는 명령어를 저장하고, 명령어가 컴퓨터 상에서 실행되는 경우, 컴퓨터는 제1 양태, 제2 양태, 제6 양태, 제7 양태, 또는 제15 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행할 수 있게 된다.
본 출원의 제19 양태에 따르면, 명령어를 포함하는 컴퓨터 프로그램 제품이 제공된다. 명령어가 컴퓨터 상에서 실행되는 경우, 컴퓨터는 제1 양태, 제2 양태, 제6 양태, 제7 양태, 또는 제15 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 방법을 수행할 수 있게 된다.
본 출원의 제20 양태에 따르면, 비디오 픽쳐 인코더가 제공되는데, 여기서 비디오 픽쳐 인코더는 제3 양태, 제4 양태, 제5 양태, 제8 양태, 제9 양태, 또는 제16 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 장치를 포함한다.
본 출원의 제21 양태에 따르면, 비디오 픽쳐 디코더가 제공되는데, 여기서 비디오 픽쳐 디코더는 제3 양태, 제4 양태, 제5 양태, 제8 양태, 제9 양태, 또는 제16 양태의 임의의 실현 가능한 구현예에 따른 인터 예측 장치를 포함한다.
또한, 전술한 양태 중 임의의 하나의 설계 방식에 의해 초래되는 기술적 효과에 대해서는, 제6 양태, 제7 양태, 및 제16 양태의 상이한 설계 방식에 의해 초래되는 기술적 효과를 참조한다. 세부 사항은 여기서는 다시 설명되지 않는다.
본 출원의 실시형태에서, 인터 예측 장치의 이름은 장치에 대해 제한을 두지는 않는다. 실제 구현예에서, 장치는 다른 이름을 가질 수 있다. 각각의 디바이스의 기능이 본 출원의 실시형태에서의 것들과 유사하다면, 그것은 본 출원의 청구범위 및 그들의 동등한 기술의 범위 내에 속한다.
도 1a는 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 비디오 인코딩 및 디코딩 시스템(10)의 사례의 블록도이다;
도 1b는 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 비디오 코딩 시스템(40)의 사례의 블록도이다;
도 2는 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 인코더(20)의 사례의 구조적 블록도이다;
도 3은 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 디코더(30)의 사례의 구조적 블록도이다;
도 4는 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 비디오 코딩 디바이스(400)의 사례의 블록도이다;
도 5는 본 출원의 실시형태에 따른 본 발명의 실시형태를 구현하기 위해 사용되는 다른 인코딩 장치 또는 디코딩 장치의 사례의 블록도이다;
도 6은 본 출원의 실시형태에 따른 공간 도메인 및 시간 도메인에서 현재의 블록의 후보 모션 정보를 나타내기 위해 사용되는 예시적인 개략도이다;
도 7은 본 출원의 실시형태에 따른 아핀 모델의 모션 정보의 획득을 나타내기 위해 사용되는 예시적인 개략도이다;
도 8은 본 출원의 실시형태에 따른 구성된 제어 포인트 모션 벡터 예측 방법(constructed control point motion vector prediction method)의 예시적인 개략도이다;
도 9는 본 출원의 실시형태에 따른 인터 예측 방법의 플로우차트이다;
도 10은 본 출원의 실시형태에 따른 다른 인터 예측 방법의 플로우차트이다;
도 11은 본 출원의 실시형태에 따른 인터 예측 장치의 개략적인 구조도이다; 그리고
도 12는 본 출원의 실시형태에 따른 다른 인터 예측 장치의 개략적인 구조도이다.
다음은 본 출원의 실시형태에서 첨부의 도면을 참조하여 본 출원의 실시형태를 설명한다. 다음의 설명에서, 본 개시의 일부를 형성하는 그리고, 예시로서, 본 출원의 실시형태의 특정한 양태를 도시하는 또는 본 출원의 실시형태의 특정한 양태를 사용할 수 있는 첨부의 도면에 대한 참조가 이루어진다. 본 출원의 실시형태는 다른 양태에서 사용될 수 있고, 첨부의 도면에서 묘사되지 않는 구조적 또는 논리적 변경을 포함할 수 있다는 것이 이해되어야 한다. 따라서, 다음의 상세한 설명은 제한의 의미로 이해되어서는 안되며, 본 출원의 범위는 첨부된 청구범위에 의해 정의된다. 예를 들면, 본 개시는, 설명되는 방법을 참조하여, 방법을 수행하기 위한 대응하는 디바이스 또는 시스템에 또한 적용될 수 있고, 그 반대의 경우도 가능하다는 것이 이해되어야 한다. 예를 들면, 하나 이상의 특정한 방법 단계가 설명되는 경우, 대응하는 디바이스는, 설명되는 하나 이상의 방법 단계를 수행하기 위한 하나 이상의 유닛, 예컨대 기능 유닛을, 비록 그러한 하나 이상의 유닛이 첨부의 도면에서 명시적으로 예시되거나 또는 설명되지 않더라도, 포함할 수 있다(예를 들면, 하나의 유닛이 하나 이상의 단계를 수행하거나, 또는 복수의 유닛의 각각이 복수의 단계 중 하나 이상을 수행한다). 또한, 예를 들면, 기능 유닛과 같은 하나 이상의 유닛에 기초하여 특정한 장치가 설명되는 경우, 대응하는 방법은 하나 이상의 유닛의 기능성(functionality)을 수행하기 위한 하나의 단계를, 비록 그러한 하나 이상의 단계가 첨부의 도면에서 명시적으로 예시되거나 또는 설명되지 않더라도, 포함할 수 있다(예를 들면, 하나 이상의 유닛의 기능성을 수행하기 위해 하나의 단계가 사용되거나, 또는 복수의 유닛 중 하나 이상의 유닛의 기능성을 수행하기 위해 복수의 단계의 각각이 사용된다). 게다가, 달리 명확하게 언급되지 않는 한, 본원에서 설명되는 예시적인 실시형태 및/또는 양태의 피쳐는 서로 결합될 수 있다는 것이 이해되어야 한다.
본 출원의 실시형태에서의 기술적 솔루션은 현존하는 비디오 코딩 표준(예를 들면, H.264 및 HEVC와 같은 표준)에 적용될 수 있을 뿐만 아니라, 또한, 미래의 비디오 코딩 표준(예를 들면, H.266 표준)에도 또한 적용될 수 있다. 본 출원의 구현 부분에서 사용되는 용어는 본 출원의 특정한 실시형태를 설명하기 위해 사용되는 것에 불과하며, 본 출원을 제한하도록 의도되지는 않는다. 다음은, 먼저, 본 출원의 실시형태에서 수반될 수 있는 몇몇 개념을 간단하게 설명한다.
비디오 인코딩은, 일반적으로, 비디오 또는 비디오 시퀀스를 형성하는 픽쳐의 시퀀스를 프로세싱하는 것을 지칭한다. 비디오 인코딩 분야에서, 용어 "픽쳐(picture)", "프레임(frame)" 또는 "이미지(image)"가 동의어로서 사용될 수 있다. 본원에서 사용되는 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 나타낸다. 비디오 인코딩은 소스 측 상에서 수행되며, 일반적으로, 더욱 효율적인 저장 및/또는 송신을 위해, 비디오 픽쳐를 나타내는 데 필요한 데이터의 양을 감소시키도록 원래의 비디오 픽쳐를 프로세싱(예를 들면, 압축)하는 것을 포함한다. 비디오 디코딩은 목적지 측 상에서 수행되며, 일반적으로, 비디오 픽쳐를 재구성하기 위해 인코더와 관련하여 역 프로세싱을 수행하는 것을 포함한다. 실시형태에서 비디오 픽쳐의 "코딩"은 비디오 시퀀스의 "인코딩" 또는 "디코딩"으로서 이해된다. 인코딩 부분과 디코딩 부분의 조합은 코덱(인코딩 및 디코딩)으로 또한 지칭된다.
비디오 시퀀스는 일련의 픽쳐(picture)를 포함하고, 픽쳐는 슬라이스(slice)로 더 분할되고, 슬라이스는, 그 다음, 블록(block)으로 분할된다. 비디오 코딩은 블록 단위로 수행된다. 몇몇 새로운 비디오 코딩 표준에서, 블록의 개념이 더욱 확장된다. 예를 들면, H.264 표준에서는 매크로블록(macroblock; MB)이 존재하고, 매크로블록은 예측 인코딩을 위해 사용될 수 있는 복수의 예측 블록(파티션)으로 더 분할될 수 있다. 고효율 비디오 코딩(high efficiency video coding; HEVC) 표준에서는, 복수의 블록 단위가 코딩 단위(coding unit; CU), 예측 단위(예측 단위; PU), 및 변환 단위(transform unit; TU)와 같은 기본 개념을 사용하는 것에 의해 기능적으로 분할되고, 새로운 트리 기반의 구조를 사용하는 것에 의해 설명된다. 예를 들면, CU는 쿼드트리에 기초하여 더 작은 CU로 분할될 수 있고, 더 작은 CU는, 쿼드트리 구조를 형성하도록, 추가로 분할될 수 있다. CU는 코딩 픽쳐를 분할하고 인코딩하기 위한 기본 단위이다. PU 및 TU도 또한 유사한 트리 구조를 갖는다. PU는 예측 블록에 대응할 수 있고, 예측 인코딩을 위한 기본 단위이다. CU는 분할 모드에 기초하여 복수의 PU로 더 분할된다. TU는 변환 블록에 대응할 수 있고, 예측 잔차를 변환하기 위한 기본 단위이다. 그러나, CU, PU, 및 TU의 모두는 본질적으로 블록(또는 픽쳐 블록)의 개념에 속한다.
예를 들면, HEVC에서, CTU는 코딩 트리로서 표현되는 쿼드트리 구조를 사용하는 것에 의해 복수의 CU로 분할된다. 픽쳐 영역을 인터 픽쳐(시간) 예측을 사용하는 것에 의해 인코딩할지 또는 인트라 픽쳐(공간) 예측을 사용하는 것에 의해 인코딩할지의 여부가 CU 레벨에서 결정된다. 각각의 CU는 PU 분할 타입에 기초하여 하나, 두 개 또는 네 개의 PU로 추가로 분할될 수 있다. PU 내에서 동일한 예측 프로세스가 적용되고, 관련된 정보가 PU 기반으로 디코더로 송신된다. PU 분할 타입에 기초하여 예측 프로세스를 적용하는 것에 의해 잔차 블록이 획득된 이후, CU는, CU에 대해 사용되는 코딩 트리와 유사한 다른 쿼드트리 구조에 기초하여 변환 단위(transform unit; TU)로 구획화될(partitioned) 수 있다. 비디오 압축 기술의 최신 개발에서, 쿼드트리 및 이진 트리(Quad-tree and binary tree; QTBT)는 코딩 블록을 구획화하기 위해 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형 형상의 것일 수 있다.
본 명세서에서는, 설명 및 이해의 용이성을 위해, 현재의 코딩 픽쳐 내의 코딩될 픽쳐 블록이 현재의 블록으로서 지칭될 수 있다, 예를 들면, 인코딩에서, 현재의 블록은 현재 인코딩되고 있는 블록을 지칭하고; 디코딩에서, 현재의 블록은 현재 디코딩되고 있는 블록을 지칭한다. 참조 픽쳐 내에 있으며 현재의 블록을 예측하기 위해 사용되는 디코딩된 픽쳐 블록은 참조 블록으로서 지칭된다, 즉, 참조 블록은 현재의 블록에 대한 참조 신호를 제공하는 블록인데, 여기서 참조 신호는 픽쳐 블록 내의 한 픽셀 값을 나타낸다. 참조 픽쳐 내에 있으며 현재의 블록에 대한 예측 신호를 제공하는 블록은 예측 블록으로서 지칭될 수 있는데, 여기서 예측 신호는 예측 블록 내의 픽셀 값 또는 샘플링 값 또는 샘플링 신호를 나타낸다. 예를 들면, 복수의 참조 블록이 순회된 이후, 최적의 참조 블록이 발견되고, 최적의 참조 블록은 현재의 블록에 대한 예측을 제공할 것이며, 예측 블록으로서 지칭된다.
무손실 비디오 코딩의 경우, 원래의 비디오 픽쳐가 재구성될 수 있다, 즉, 재구성된 비디오 픽쳐는 원래의 비디오 픽쳐와 동일한 품질을 갖는다(송신 손실 또는 저장 또는 송신 동안의 다른 데이터 손실이 없다는 것이 가정됨). 손실성 비디오 코딩의 경우, 예를 들면, 양자화를 통한 추가적인 압축을 수행하는 것에 의해, 비디오 픽쳐를 표현하는 데 필요한 데이터의 양이 감소되고, 디코더 측은 비디오 픽쳐를 완전히 재구성할 수 없다, 즉, 재구성된 비디오 픽쳐의 품질이 원래의 비디오 픽쳐의 품질보다 더 낮거나 또는 더 나쁘다.
H.261의 몇몇 비디오 코딩 표준은 "손실성 하이브리드 비디오 코덱"이다(즉, 샘플 도메인에서의 공간 및 시간적 예측이, 변환 도메인에서 양자화를 적용하기 위한 2D 변환 코딩과 결합된다). 비디오 시퀀스의 각각의 픽쳐는, 일반적으로, 중첩되지 않는 블록의 세트로 구획화되고, 코딩은, 통상적으로, 블록 레벨에 대해 수행된다. 다시 말하면, 인코더 측 상에서, 비디오는 통상적으로, 예를 들면, 공간(인트라 픽쳐) 예측 및 시간(인터 픽쳐) 예측을 사용하여 예측 블록을 생성하는 것, 현재의 블록(현재 프로세싱되는 또는 프로세싱될 블록)으로부터 예측 블록을 감산하여 잔차 블록을 획득하는 것, 및 잔차 블록을 변환하고 잔차 블록을 변환 도메인에서 양자화하여 송신될(압축될) 데이터의 양을 감소시키는 것에 의해, 블록(비디오 블록) 레벨 상에서 프로세싱되고, 예를 들면, 인코딩되고, 한편, 디코더 측 상에서, 인코더와 비교한 역 프로세싱이 인코더에 인코딩된 또는 압축된 블록에 적용되어 표현을 위한 현재의 블록을 재구성한다. 또한, 인코더는 디코더 프로세싱 루프를 복제하고, 그 결과, 둘 모두는, 후속하는 블록을 프로세싱하기 위한, 즉, 코딩하기 위한 동일한 예측(예를 들면, 인트라 및 인터 예측) 및/또는 재구성을 생성한다.
다음은 본 출원의 실시형태에서 적용되는 시스템 아키텍쳐를 설명한다. 도 1a는 본 출원의 실시형태에서 적용되는 비디오 인코딩 및 디코딩 시스템(10)의 개략적인 블록도를 개략적으로 도시한다. 도 1a에서 도시되는 바와 같이, 비디오 인코딩 및 디코딩 시스템(10)은 소스 디바이스(12) 및 목적지 디바이스(14)를 포함할 수 있다. 소스 디바이스(12)는 인코딩된 비디오 데이터를 생성한다. 따라서, 소스 디바이스(12)는 비디오 인코딩 장치로서 지칭될 수 있다. 목적지 디바이스(14)는 소스 디바이스(12)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다. 따라서, 목적지 디바이스(14)는 비디오 디코딩 장치로서 지칭될 수 있다. 소스 디바이스(12), 목적지 디바이스(14), 또는 둘 모두의 다양한 구현예는, 하나 이상의 프로세서 및 하나 이상의 프로세서에 커플링되는 메모리를 포함할 수 있다. 메모리는, 본원에서 설명되는 바와 같이, RAM, ROM, EEPROM, 플래시 메모리, 또는 컴퓨터가 액세스 가능한 명령어 또는 데이터 구조의 형태로 소망되는 프로그램 코드를 저장하도록 구성될 수 있는 임의의 다른 매체를 포함할 수 있지만, 그러나 이들로 제한되지는 않는다. 소스 디바이스(12) 및 목적지 디바이스(14)는 데스크탑 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예를 들면, 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋탑 박스, 전화 핸드셋, 예컨대 소위 "스마트" 폰, 텔레비전 세트, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 차량 내 컴퓨터, 무선 통신 디바이스, 또는 등등을 포함하는 다양한 장치를 포함할 수 있다.
도 1a가 소스 디바이스(12) 및 목적지 디바이스(14)를 별개의 디바이스로서 묘사하지만, 디바이스 실시형태는 또한 소스 디바이스(12) 및 목적지 디바이스(14) 둘 모두 또는 둘 모두의 기능성, 즉, 소스 디바이스(12) 또는 대응하는 기능성 및 목적지 디바이스(14) 또는 대응하는 기능성을 또한 포함할 수 있다. 그러한 실시형태에서, 동일한 하드웨어 및/또는 소프트웨어, 또는 별개의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합이, 소스 디바이스(12) 또는 대응하는 기능성 및 목적지 디바이스(14) 또는 대응하는 기능성을 구현하기 위해 사용될 수 있다.
링크(13)를 사용하는 것에 의해 소스 디바이스(12)와 목적지 디바이스(14) 사이에서 통신 연결이 확립될 수 있고, 목적지 디바이스(14)는 링크(13)를 사용하는 것에 의해 소스 디바이스(12)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(13)는 인코딩된 비디오 데이터를 소스 디바이스(12)로부터 목적지 디바이스(14)로 이동시킬 수 있는 하나 이상의 매체 또는 디바이스를 포함할 수 있다. 하나의 사례에서, 링크(13)는, 소스 디바이스(12)가 인코딩된 비디오 데이터를 목적지 디바이스(14)로 실시간으로 직접적으로 송신하는 것을 가능하게 하는 하나 이상의 통신 매체를 포함할 수 있다. 이 사례에서, 소스 디바이스(12)는 통신 표준(예를 들면, 무선 통신 프로토콜)에 기초하여 인코딩된 비디오 데이터를 변조할 수 있고, 변조된 비디오 데이터를 목적지 디바이스(14)로 송신할 수 있다. 하나 이상의 통신 매체는, 무선 주파수(radio frequency; RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인과 같은 무선 및/또는 유선 통신 매체를 포함할 수 있다. 하나 이상의 통신 매체는, 근거리 통신망, 광역 통신망, 또는 글로벌 네트워크(예를 들면, 인터넷)와 같은 패킷 기반의 네트워크의 일부를 형성할 수 있다. 하나 이상의 통신 매체는, 라우터, 스위치, 기지국, 또는 소스 디바이스(12)로부터 목적지 디바이스(14)로의 통신을 용이하게 하는 다른 디바이스를 포함할 수 있다.
소스 디바이스(12)는 인코더(20)를 포함한다. 또한, 옵션 사항으로, 소스 디바이스(12)는 픽쳐 소스(16), 픽쳐 사전 프로세서(picture preprocessor; 18), 및 통신 인터페이스(22)를 더 포함할 수 있다. 특정한 구현예에서, 인코더(20), 픽쳐 소스(16), 픽쳐 사전 프로세서(18), 및 통신 인터페이스(22)는 소스 디바이스(12) 내의 하드웨어 컴포넌트일 수 있거나, 또는 소스 디바이스(12) 내의 소프트웨어 프로그램일 수 있는데, 이들은 다음과 같이 별개로 설명된다:
픽쳐 소스(16)는, 예를 들면, 실세계 픽쳐를 캡쳐하기 위한 임의의 타입의 픽쳐 캡쳐용 디바이스, 및/또는 임의의 타입의 픽쳐 또는 코멘트 생성 디바이스(스크린 콘텐츠 인코딩용, 스크린 상의 몇몇 텍스트는 인코딩될 픽쳐 또는 이미지의 일부인 것으로 또한 간주됨), 예를 들면, 컴퓨터 애니메이션 픽쳐(computer animated picture)를 생성하기 위한, 또는 실세계 픽쳐, 컴퓨터 그래픽 프로세서, 컴퓨터 애니메이션 픽쳐(예를 들면, 스크린 콘텐츠, 가상 현실(virtual reality; VR) 픽쳐), 및/또는 이들의 임의의 조합(예를 들면, 증강 현실(augmented reality; AR) 픽쳐)을 획득 및/또는 제공하기 위한 컴퓨터 그래픽 프로세서를 포함할 수 있거나 또는 이들일 수 있다. 픽쳐 소스(16)는 픽쳐를 캡쳐하기 위한 카메라 또는 픽쳐를 저장하기 위한 메모리일 수 있고, 픽쳐 소스(16)는 이전에 캡쳐된 또는 생성된 픽쳐를 저장하기 위한 및/또는 픽쳐를 획득 또는 수신하기 위한 임의의 타입 (내부 또는 외부) 인터페이스를 더 포함할 수 있다. 픽쳐 소스(16)가 카메라인 경우, 픽쳐 소스(16)는, 예를 들면, 소스 디바이스에서 통합되는 로컬 또는 통합 카메라일 수 있다. 픽쳐 소스(16)가 메모리인 경우, 픽쳐 소스(16)는 로컬일 수 있거나, 또는, 예를 들면, 소스 디바이스에서 통합되는 통합 메모리일 수 있다. 픽쳐 소스(16)가 인터페이스를 포함하는 경우, 인터페이스는, 예를 들면, 외부 비디오 소스로부터 픽쳐를 수신하기 위한 외부 인터페이스일 수 있고, 외부 비디오 소스는, 예를 들면, 외부 픽쳐 캡쳐용 디바이스, 예컨대 카메라, 외부 메모리, 또는 외부 픽쳐 생성 디바이스일 수 있고, 외부 픽쳐 생성 디바이스는, 예를 들면, 외부 컴퓨터 그래픽 프로세서, 컴퓨터, 또는 서버일 수 있다. 인터페이스는, 유선 또는 무선 인터페이스 또는 광학 인터페이스와 같은 임의의 독점적인 또는 표준화된 인터페이스 프로토콜에 기초하는 임의의 타입의 인터페이스일 수 있다.
픽쳐는 픽셀(픽쳐 엘리먼트)의 매트릭스 또는 이차원 어레이로서 간주될 수 있다. 어레이 내의 픽셀은 샘플링 포인트로서 또한 지칭될 수 있다. 어레이 또는 픽쳐의 수평 및 수직 방향(또는 축)에 있는 샘플링 포인트의 수량은 픽쳐의 사이즈 및/또는 해상도를 정의한다. 컬러를 표현하기 위해, 일반적으로 세 가지 컬러 성분이 사용된다, 즉, 픽쳐는 세 가지 샘플링 어레이로서 표현될 수 있거나 또는 그들을 포함할 수 있다. 예를 들면, RGB 포맷 또는 컬러 공간에서, 픽쳐는 대응하는 적색, 녹색 및 청색 샘플링 어레이를 포함한다. 그러나, 비디오 인코딩에서, 각각의 픽셀은 휘도/색도(chrominance) 포맷으로 또는 컬러 공간에서 일반적으로 표현된다, 예를 들면, YUV 포맷의 픽쳐는 Y에 의해 나타내어지는 휘도 성분(이것은 L에 의해 또한 나타내어질 수 있음) 및 U 및 V에 의해 나타내어지는 두 개의 색도 성분을 포함한다. 휘도(루마) 성분(Y)은 휘도 또는 그레이 수평 강도를 나타내고(예를 들면, 둘 모두는 그레이 레벨 픽쳐에서 동일함), 두 개의 색도(크로마) 성분(U 및 V)은 색도 또는 컬러 정보 성분을 나타낸다. 상응하여, YUV 포맷의 픽쳐는 휘도 샘플링 값(Y)의 휘도 샘플링 어레이 및 색도 값(U 및 V)의 두 개의 색도 샘플링 어레이를 포함한다. RGB 포맷의 픽쳐는 YUV 포맷으로 변환될(converted) 수 있거나 또는 변환될(transformed) 수 있고, 그 반대의 경우도 가능하다. 이 프로세스는 컬러 변환(transform) 또는 변환(conversion)으로서 또한 지칭된다. 픽쳐가 흑백이면, 픽쳐는 휘도 샘플링 어레이만을 포함할 수 있다. 본 출원의 이 실시형태에서, 픽쳐 소스(16)로부터 픽쳐 프로세서로 송신되는 픽쳐는 원래의 픽쳐 데이터(17)로서 또한 지칭될 수 있다.
픽쳐 사전 프로세서(18)는: 원래의 픽쳐 데이터(17)를 수신하도록, 그리고 원래의 픽쳐 데이터(17)를 사전 프로세싱하여, 사전 프로세싱된 픽쳐(19) 또는 사전 프로세싱된 픽쳐 데이터(19)를 획득하도록 구성된다. 예를 들면, 픽쳐 사전 프로세서(18)에 의해 수행되는 사전 프로세싱은, 트리밍, 컬러 포맷 변환(예를 들면, RGB 포맷으로부터 YUV 포맷으로의 변환), 컬러 변조, 또는 노이즈 제거(denoising)를 포함할 수 있다.
인코더(20)(또는 비디오 인코더(20)로서 지칭됨)는 사전 프로세싱된 픽쳐 데이터(19)를 수신하도록, 그리고 상관 예측 모드(예컨대 본 명세서의 다양한 실시형태에서의 예측 모드)에서 사전 프로세싱된 픽쳐 데이터(19)를 프로세싱하여, 인코딩된 픽쳐 데이터(21)를 제공하도록 구성된다(인코더(20)의 구조적 세부 사항은 도 2 또는 도 4 또는 도 5에 기초하여 하기에서 추가로 설명된다). 몇몇 실시형태에서, 인코더(20)는, 인코더 측에 대한 본 출원에서 설명되는 인터 예측 방법의 적용을 구현하기 위해, 나중에 설명되는 실시형태를 실행하도록 구성될 수 있다.
통신 인터페이스(22)는 인코딩된 픽쳐 데이터(21)를 수신하도록 구성될 수 있고, 저장 또는 직접적인 재구성을 위해 링크(13)를 사용하는 것에 의해 인코딩된 픽쳐 데이터(21)를 목적지 디바이스(14) 또는 임의의 다른 디바이스(예를 들면, 메모리)로 송신할 수 있다. 임의의 다른 디바이스는 디코딩 또는 저장을 위한 임의의 디바이스일 수 있다. 통신 인터페이스(22)는, 예를 들면, 링크(13) 상에서의 송신을 위해, 인코딩된 픽쳐 데이터(21)를 데이터 패킷과 같은 적절한 포맷으로 캡슐화하도록 구성될 수 있다.
목적지 디바이스(14)는 디코더(30)를 포함한다. 또한, 옵션 사항으로, 목적지 디바이스(14)는 다음과 같이 별개로 설명되는, 통신 인터페이스(28), 픽쳐 사후 프로세서(picture post-processor; 32), 및 디스플레이 디바이스(34)를 더 포함할 수 있다:
통신 인터페이스(28)는 소스 디바이스(12) 또는 임의의 다른 소스로부터 인코딩된 픽쳐 데이터(21)를 수신하도록 구성될 수 있는데, 여기서 임의의 다른 소스는, 예를 들면, 스토리지 디바이스이고, 스토리지 디바이스는, 예를 들면, 인코딩된 픽쳐 데이터 스토리지 디바이스이다. 통신 인터페이스(28)는, 소스 디바이스(12)와 목적지 디바이스(14) 사이에서 링크(13)를 사용하는 것에 의해 또는 임의의 타입의 네트워크를 사용하는 것에 의해 인코딩된 픽쳐 데이터(21)를 송신 또는 수신하도록 구성될 수 있는데, 여기서 링크(13)는, 예를 들면, 직접적인 유선 또는 무선 연결이고, 임의의 타입의 네트워크는, 예를 들면, 유선 또는 무선 네트워크 또는 이들의 임의의 조합, 또는 임의의 타입의 사설 또는 공공 네트워크 또는 이들의 임의의 조합이다. 통신 인터페이스(28)는, 예를 들면, 인코딩된 픽쳐 데이터(21)를 획득하기 위해 통신 인터페이스(22)에 의해 송신되는 데이터 패킷을 캡슐 해제하도록(decapsulate) 구성될 수 있다.
통신 인터페이스(28) 및 통신 인터페이스(22) 둘 모두는 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로서 구성될 수 있고, 예를 들면, 연결을 확립하기 위한, 통신 링크 및/또는 인코딩된 픽쳐 데이터 송신과 같은 데이터 송신에 관련되는 임의의 다른 정보를 확인 응답 및 교환하기 위한 메시지를 전송 및 수신하도록 구성될 수 있다.
디코더(30)(또는 비디오 디코더(30)로서 지칭됨)는 인코딩된 픽쳐 데이터(21)를 수신하도록 그리고 디코딩된 픽쳐 데이터(31) 또는 디코딩된 픽쳐(31)를 제공하도록 구성된다(디코더(30)의 구조적 세부 사항은 도 3 또는 도 4 또는 도 5에 기초하여 하기에서 추가로 설명된다). 몇몇 실시형태에서, 디코더(30)는, 디코더 측에 대한 본 출원에서 설명되는 인터 예측 방법의 적용을 구현하기 위해, 나중에 설명되는 실시형태를 실행하도록 구성될 수 있다.
픽쳐 사후 프로세서(32)는, 디코딩되는 픽쳐 데이터(31)(재구성된 픽쳐 데이터로 또한 지칭됨)에 대해 사후 프로세싱을 수행하여, 사후 프로세싱된 픽쳐 데이터(post-processed picture data; 33)를 획득하도록 구성된다. 픽쳐 사후 프로세서(32)에 의해 수행되는 사후 프로세싱은: 컬러 포맷 변환(예를 들면, YUV 포맷으로부터 RGB 포맷으로의 변환), 컬러 변조, 트리밍, 또는 재샘플링(resampling), 또는 임의의 다른 프로세싱을 포함할 수 있고, 사후 프로세싱 픽쳐 데이터(33)를 디스플레이 디바이스(34)로 송신하도록 또한 구성될 수 있다.
디스플레이 디바이스(34)는 사후 프로세싱된 픽쳐 데이터(33)를 수신하여, 예를 들면, 사용자 또는 뷰어(viewer)에게 픽쳐를 디스플레이하도록 구성된다. 디스플레이 디바이스(34)는, 통합된 또는 외부 디스플레이 또는 모니터와 같은, 재구성된 픽쳐를 제시하기 위한 임의의 타입의 디스플레이일 수 있거나 또는 그것을 포함할 수 있다. 예를 들면, 디스플레이는 액정 디스플레이(liquid crystal display; LCD), 유기 발광 다이오드(organic light emitting diode; OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 실리콘 액정(liquid crystal on silicon; LCoS), 디지털 조명 프로세서(digital light processor; DLP), 또는 임의의 다른 타입의 디스플레이를 포함할 수 있다.
도 1a가 소스 디바이스(12) 및 목적지 디바이스(14)를 별개의 디바이스로서 묘사하지만, 디바이스 실시형태는 또한 소스 디바이스(12) 및 목적지 디바이스(14) 둘 모두 또는 둘 모두의 기능성, 즉, 소스 디바이스(12) 또는 대응하는 기능성 및 목적지 디바이스(14) 또는 대응하는 기능성을 또한 포함할 수 있다. 그러한 실시형태에서, 동일한 하드웨어 및/또는 소프트웨어, 또는 별개의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합이, 소스 디바이스(12) 또는 대응하는 기능성 및 목적지 디바이스(14) 또는 대응하는 기능성을 구현하기 위해 사용될 수 있다.
상이한 유닛의 기능성 또는 도 1a에서 도시되는 소스 디바이스(12) 및/또는 목적지 디바이스(14)의 기능성의 존재 및 (정확한) 분할은 실제 디바이스 및 애플리케이션에 기초하여 변할 수 있다는 것이 본 설명에 기초하여 기술 분야의 숙련된 자에게는 명백할 수 있다. 소스 디바이스(12) 및 목적지 디바이스(14)는, 임의의 타입의 핸드헬드 또는 고정식 디바이스, 예컨대 노트북 또는 랩탑 컴퓨터, 이동 전화, 스마트폰, 태블릿 또는 태블릿 컴퓨터, 비디오 카메라, 데스크탑 컴퓨터, 셋탑 박스, 텔레비전 세트, 카메라, 차량내 디바이스, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스(예컨대, 콘텐츠 서비스 서버 또는 콘텐츠 분배 서버), 브로드캐스트 수신기 디바이스, 및 브로드캐스트 송신기 디바이스를 비롯한, 다양한 디바이스 중 임의의 하나를 포함할 수 있고, 임의의 타입의 오퍼레이팅 시스템을 사용하지 않을 수 있거나 또는 사용할 수 있다.
인코더(20) 및 디코더(30)는, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(digital signal processor; DSP), 주문형 집적 회로(application-specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이(field-programmable gate array; FPGA), 이산 로직, 하드웨어, 또는 이들의 임의의 조합과 같은 여러 가지 적절한 회로 중 임의의 하나로서 구현될 수 있다. 기술 중 일부가 소프트웨어로서 구현되는 경우, 디바이스는 소프트웨어 명령어를 적절한 비일시적 컴퓨터 판독 가능 저장 매체에 저장할 수 있고, 하드웨어를 사용하여 본 개시의 기술을 실행하는 것에 의해 하나 이상의 프로세서를 사용하여 명령어를 실행할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 및 하드웨어와 소프트웨어의 조합을 포함함) 중 임의의 것은 하나 이상의 프로세서로서 간주될 수 있다.
몇몇 경우에, 도 1a에서 도시되는 비디오 인코딩 및 디코딩 시스템(10)은 예에 불과하며, 본 출원의 기술은, 인코딩 디바이스와 디코딩 디바이스 사이에서 어떠한 데이터 통신도 포함할 필요가 없는 비디오 인코딩 설정(예를 들면, 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 다른 사례에서, 데이터는 로컬 메모리로부터 검색될 수 있거나, 네트워크 상에서 스트리밍될 수 있거나, 또는 등등일 수 있다. 비디오 인코딩 디바이스는 데이터를 인코딩하고 데이터를 메모리에 저장할 수 있고, 및/또는 비디오 디코딩 디바이스는 메모리로부터 데이터를 검색하여 데이터를 디코딩할 수 있다. 몇몇 사례에서, 인코딩 및 디코딩은 서로 통신하는 것이 아니라 오로지 메모리로 데이터를 인코딩하고 및/또는 메모리로부터 데이터를 검색하고 데이터를 디코딩하는 디바이스에 의해 수행된다.
도 1b는, 예시적인 실시형태에 따른, 도 2의 인코더(20) 및/또는 도 3의 디코더(30)를 포함하는 비디오 코딩 시스템(40)의 사례의 설명도이다. 비디오 코딩 시스템(40)은 본 출원의 실시형태에서 다양한 기술의 조합을 구현할 수 있다. 설명되는 구현예에서, 비디오 코딩 시스템(40)은 이미징 디바이스(41), 인코더(20), 디코더(30)(및/또는 프로세싱 유닛(46)의 논리 회로(47)에 의해 구현되는 비디오 인코더/디코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리(44), 및/또는 디스플레이 디바이스(45)를 포함할 수 있다.
도 1b에서 도시되는 바와 같이, 이미징 디바이스(41), 안테나(42), 프로세싱 유닛(46), 논리 회로(47), 인코더(20), 디코더(30), 프로세서(43), 메모리(44), 및/또는 디스플레이 디바이스(45)는 서로 통신할 수 있다. 논의되는 바와 같이, 비디오 코딩 시스템(40)이 인코더(20) 및 디코더(30)를 가지고 묘사되지만, 상이한 사례에서, 비디오 코딩 시스템(40)은 인코더(20) 또는 디코더(30)만을 포함할 수 있다.
몇몇 사례에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 송신 또는 수신하도록 구성될 수 있다. 또한, 몇몇 사례에서, 디스플레이 디바이스(45)는 비디오 데이터를 제시하도록 구성될 수 있다. 몇몇 사례에서, 논리 회로(47)는 프로세싱 유닛(46)을 사용하는 것에 의해 구현될 수 있다. 프로세싱 유닛(46)은 주문형 집적 회로(application-specific integrated circuit; ASIC) 로직, 그래픽 프로세서, 범용 프로세서, 및 등등을 포함할 수 있다. 비디오 코딩 시스템(40)은 옵션 사항의(optional) 프로세서(43)를 또한 포함할 수 있다. 옵션 사항의 프로세서(43)는, 유사하게, 주문형 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 프로세서, 범용 프로세서, 및 등등을 포함할 수 있다. 몇몇 사례에서, 논리 회로(47)는 비디오 인코딩 전용 하드웨어와 같은 하드웨어를 사용하는 것에 의해 구현될 수 있고, 프로세서(43)는 일반 소프트웨어, 오퍼레이팅 시스템, 및 등등을 사용하는 것에 의해 구현될 수 있다. 또한, 메모리(44)는, 휘발성 메모리(예컨대, 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM), 또는 불휘발성 메모리(예컨대, 플래시 메모리)와 같은 임의의 타입의 메모리일 수 있다. 비제한적인 사례에서, 메모리(44)는 캐시 메모리를 사용하는 것에 의해 구현될 수 있다. 몇몇 사례에서, 논리 회로(47)는 (예를 들면, 픽쳐 버퍼를 구현하기 위한) 메모리(44)에 액세스할 수 있다. 다른 사례에서, 논리 회로(47) 및/또는 프로세싱 유닛(46)은 픽쳐 버퍼, 또는 등등을 구현하기 위한 메모리(예를 들면, 캐시)를 포함할 수 있다.
몇몇 사례에서, 논리 회로를 사용하는 것에 의해 구현되는 인코더(20)는 픽쳐 버퍼(예를 들면, 프로세싱 유닛(46) 또는 메모리(44)를 사용하는 것에 의해 구현됨) 및 그래픽 프로세싱 유닛(예를 들면, 프로세싱 유닛(46)을 사용하는 것에 의해 구현됨)을 포함할 수 있다. 그래픽 프로세싱 유닛은 픽쳐 버퍼에 통신 가능하게 커플링될 수 있다. 그래픽 프로세싱 유닛은, 도 2를 참조하여 설명되는 다양한 모듈 및/또는 본원에서 설명되는 임의의 다른 인코더 시스템 또는 서브시스템을 구현하기 위해 논리 회로(47)를 사용하는 것에 의해 구현되는 인코더(20)를 포함할 수 있다. 논리 회로는 본원에서 설명되는 다양한 동작을 수행하도록 구성될 수 있다.
몇몇 사례에서, 디코더(30)는, 도 3의 디코더(30) 및/또는 본원에서 설명되는 임의의 다른 디코더 시스템 또는 서브시스템을 참조하여 설명되는 다양한 모듈을 구현하기 위해 논리 회로(47)를 사용하는 것에 의해 유사한 방식으로 구현될 수 있다. 몇몇 사례에서, 논리 회로를 사용하는 것에 의해 구현되는 디코더(30)는 픽쳐 버퍼(예를 들면, 프로세싱 유닛(46) 또는 메모리(44)를 사용하는 것에 의해 구현됨) 및 그래픽 프로세싱 유닛(예를 들면, 프로세싱 유닛(46)을 사용하는 것에 의해 구현됨)을 포함할 수 있다. 그래픽 프로세싱 유닛은 픽쳐 버퍼에 통신 가능하게 커플링될 수 있다. 그래픽 프로세싱 유닛은, 도 3을 참조하여 설명되는 다양한 모듈 및/또는 본원에서 설명되는 임의의 다른 디코더 시스템 또는 서브시스템을 구현하기 위해 논리 회로(47)를 사용하는 것에 의해 구현되는 디코더(30)를 포함할 수 있다.
몇몇 사례에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 논의되는 바와 같이, 인코딩된 비트스트림은, 본원에서 논의되는 바와 같은 인코딩된 비디오 프레임에 관련되는 데이터, 표시자, 인덱스 값, 패턴 선택 데이터, 및 등등, 예컨대 인코딩 파티션에 관련되는 데이터(예를 들면, (논의되는 바와 같은) 변환 계수 또는 양자화된 변환 계수, 옵션 사항의 표시자, 및/또는 인코딩 파티션을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 커플링되고 인코딩된 비트스트림을 디코딩하도록 구성되는 디코더(30)를 더 포함할 수 있다. 디스플레이 디바이스(45)는 비디오 프레임을 제시하도록 구성된다.
인코더(20)를 참조하여 설명되는 사례의 경우, 디코더(30)는 본 출원의 이 실시형태에서 역 프로세스를 수행하도록 구성될 수 있다는 것이 이해되어야 한다. 시그널링 신택스 엘리먼트와 관련하여, 디코더(30)는 그러한 신택스 엘리먼트를 수신 및 파싱하도록 그리고 그에 따라 관련된 비디오 데이터를 디코딩하도록 구성될 수 있다. 몇몇 예에서, 인코더(20)는 신택스 엘리먼트를 인코딩된 비디오 비트스트림으로 엔트로피 인코딩할 수 있다. 그러한 사례에서, 디코더(30)는 그러한 신택스 엘리먼트를 파싱하고 그에 따라 관련된 비디오 데이터를 디코딩할 수 있다.
본 출원의 이 실시형태에서 설명되는 방법은 주로 인터 예측 프로세스에서 사용된다는 것을 유의해야 한다. 이 프로세스는 인코더(20) 및 디코더(30) 둘 모두에서 존재한다. 본 출원의 이 실시형태에서 인코더(20) 및 디코더(30)는 H.263, H.264, HEVV, MPEG-2, MPEG-4, VP8 또는 VP9, 또는 차세대 비디오 표준 프로토콜 예컨대 H.266과 같은 비디오 표준 프로토콜에 대응하는 인코더/디코더일 수 있다.
도 2는 본 출원의 실시형태를 구현하도록 구성되는 인코더(20)의 사례의 개략적/개념적 블록도를 도시한다. 도 2의 사례에서, 인코더(20)는 잔차 계산 유닛(204), 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210), 역 변환 프로세싱 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 픽쳐 버퍼(decoded picture buffer; DPB)(230), 예측 프로세싱 유닛(260), 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 프로세싱 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254), 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 추정 유닛 및 모션 보상 유닛(도시되지 않음)을 포함할 수 있다. 도 2에서 도시되는 인코더(20)는 또한 하이브리드 비디오 코덱에 기초한 비디오 인코더 또는 하이브리드 비디오 인코더로서 지칭될 수 있다.
예를 들면, 잔차 계산 유닛(204), 변환 프로세싱 유닛(206), 양자화 유닛(208), 예측 프로세싱 유닛(260), 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하고, 예를 들면, 역 양자화 유닛(210), 역 변환 프로세싱 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽쳐 버퍼(decoded picture buffer; DPB)(230), 및 예측 프로세싱 유닛(260)은 인코더의 역방향 신호 경로를 형성하는데, 여기서 인코더의 역방향 신호 경로는 디코더(도 3의 디코더(30) 참조)의 신호 경로에 대응한다.
인코더(20)는, 예를 들면, 입력(202)을 사용하는 것에 의해, 비디오 또는 비디오 시퀀스를 형성하는 픽쳐 시퀀스 내의 픽쳐와 같은 픽쳐(201) 또는 픽쳐(201)의 픽쳐 블록(203)을 수신한다. 픽쳐 블록(203)은 현재의 픽쳐 블록 또는 코딩될 픽쳐 블록으로서 또한 지칭될 수 있고, 픽쳐(201)는 현재의 픽쳐 또는 인코딩될 픽쳐로서 지칭될 수 있다(예를 들면, 특히 현재의 픽쳐가 비디오 인코딩에서 다른 픽쳐와 구별되는 경우, 다른 픽쳐는 동일한 비디오 시퀀스, 즉, 현재의 픽쳐를 포함하는 비디오 시퀀스에서 앞서 인코딩된 및/또는 디코딩된 픽쳐이다).
인코더(20)의 실시형태는 픽쳐(201)를 픽쳐 블록(203)과 같은 복수의 블록으로, 일반적으로, 복수의 비중첩 블록으로 구획화하도록 구성되는 파티션 유닛(도 2에서 도시되지 않음)을 포함할 수 있다. 파티션 유닛은 동일한 블록 사이즈를 사용하도록 그리고 비디오 시퀀스 내의 모든 픽쳐에 대해 블록 사이즈의 대응하는 그리드를 정의하도록 구성될 수 있거나, 또는 픽쳐 또는 서브세트 또는 픽쳐 그룹 사이의 블록 사이즈를 변경하도록, 그리고 각각의 픽쳐를 대응하는 블록으로 구획화하도록 구성될 수 있다.
한 사례에서, 인코더(20)의 예측 프로세싱 유닛(260)은 상기의 파티션 기술의 임의의 조합을 실행하도록 구성될 수 있다.
예를 들면, 픽쳐(201)에서, 픽쳐 블록(203)의 사이즈가 픽쳐(201)의 것보다 더 작지만, 픽쳐 블록(203)은 또한 샘플링 값을 갖는 샘플링 포인트의 이차원 어레이 또는 매트릭스이거나 또는 이들인 것으로 간주될 수 있다. 다시 말하면, 픽쳐 블록(203)은, 예를 들면, 하나의 샘플링 어레이(예를 들면, 흑백 픽쳐(201)의 경우 휘도 어레이) 또는 세 개의 샘플링 어레이(예를 들면, 컬러 픽쳐의 경우 하나의 휘도 어레이 및 두 개의 색도 어레이) 또는 적용된 컬러 포맷에 기초한 임의의 다른 수량 및/또는 카테고리의 어레이를 포함할 수 있다. 픽쳐 블록(203)의 수평 및 수직 방향(또는 축)의 샘플링 포인트의 수량은 픽쳐 블록(203)의 사이즈를 정의한다.
도 2에서 도시되는 인코더(20)는 픽쳐(201)를 블록 단위로 인코딩하도록, 예를 들면, 각각의 픽쳐 블록(203)을 인코딩 및 예측하도록 구성된다.
잔차 계산 유닛(204)은, 예를 들면, 샘플 도메인에서 잔차 블록(205)을 획득하기 위해, 예측 블록(265)의 샘플 값을 픽쳐 블록(203)의 샘플 값으로부터 샘플 단위로(픽셀 단위로) 감산하는 것에 의해, 픽쳐 블록(203) 및 예측 블록(265)(예측 블록(265)의 다른 세부 사항은 하기에서 제공됨)에 기초하여 잔차 블록(205)을 계산하도록 구성된다.
변환 프로세싱 유닛(206)은 변환 도메인에서의 변환 계수(207)를 획득하기 위해 잔차 블록(205)의 샘플 값에 대해 이산 코사인 변환(discrete cosine transform; DCT) 또는 이산 사인 변환(discrete sine transform; DST)과 같은 변환을 적용하도록 구성된다. 변환 계수(207)는 변환 잔차 계수로서 또한 지칭될 수 있으며, 변환 도메인에서의 잔차 블록(205)을 나타낸다.
변환 프로세싱 유닛(206)은 DCT/DST의 정수 근사 값, 예를 들면, HEVC/H.265에 대해 명시되는 변환을 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교하면, 이 정수 근사 값은 일반적으로 계수에 의해 스케일링된다. 순방향 변환 및 역 변환을 사용하는 것에 의해 프로세싱되는 잔차 블록의 놈(norm)을 유지하기 위해, 변환 프로세스의 일부로서 추가적인 스케일링 계수가 적용된다. 스케일링 계수는 제약에 기초하여 일반적으로 선택되는데, 예를 들면, 스케일링 계수는 시프트 연산에 대한 2의 거듭제곱, 변환 계수의 비트 깊이, 정확도와 구현 비용 사이의 절충이다. 예를 들면, 특정한 스케일링 계수가, 예를 들면, 역 변환 프로세싱 유닛(212)을 사용하는 것에 의해 디코더(30) 측 상에서 역 변환에 대해 명시되고(그리고, 예를 들면, 역 변환 프로세싱 유닛(212)을 사용하는 것에 의해 인코더(20) 측 상에서 대응하는 역 변환에 대해 명시되고), 상응하여, 변환 프로세싱 유닛(206)을 사용하는 것에 의한 인코더(20) 측 상에서의 순방향 변환에 대해 대응하는 스케일링 계수가 명시될 수 있다.
양자화 유닛(208)은, 예를 들면, 스칼라 양자화 또는 벡터 양자화를 적용하는 것에 의해, 변환 계수(207)를 양자화하여 양자화된 변환 계수(209)를 획득하도록 구성된다. 양자화된 변환 계수(209)는 양자화된 잔차 계수(209)로서 또한 지칭될 수 있다. 양자화 프로세스는 변환 계수(207)의 일부 또는 모두와 관련되는 비트 깊이를 감소시킬 수 있다. 예를 들면, n 비트의 변환 계수는 양자화 동안 m 비트의 변환 계수로 반내림될(rounded down) 수 있는데, 여기서 n은 m보다 더 크다. 양자화 파라미터(quantization parameter; QP)를 조정하는 것에 의해 양자화의 정도가 수정될 수 있다. 예를 들면, 스칼라 양자화의 경우, 더 미세한 또는 더 거친(coarser) 양자화를 달성하기 위해 상이한 스케일이 적용될 수 있다. 더 작은 양자화 스텝은 더 미세한 양자화에 대응하고, 더 큰 양자화 스텝은 더 거친 양자화에 대응한다. 양자화 파라미터(quantization parameter; QP)를 사용하는 것에 의해, 적절한 양자화 스텝이 나타내어질 수 있다. 예를 들면, 양자화 파라미터는 적절한 양자화 스텝의 사전 정의된 세트의 인덱스일 수 있다. 예를 들면, 더 작은 양자화 파라미터는 미세한 양자화(더 작은 양자화 스텝)에 대응할 수 있고, 더 큰 양자화 파라미터는 거친 양자화(더 큰 양자화 스텝)에 대응할 수 있고, 그 반대의 경우도 가능하다. 양자화는 양자화 스텝 및, 예를 들면, 역 양자화 유닛(210)에 의해 수행되는 대응하는 양자화 또는 역 양자화를 분할하는 것을 포함할 수 있거나, 또는, 양자화 스텝으로 승산하는 것을 포함할 수 있다. 양자화 스텝은 HEVC와 같은 몇몇 표준에 기초한 실시형태에서 양자화 파라미터를 사용하는 것에 의해 결정될 수 있다. 일반적으로, 양자화 스텝은, 나눗셈 방법을 포함하는 수학식의 고정 소수점 근사를 사용하는 것에 의해 양자화 파라미터에 기초하여 계산될 수 있다. 양자화 파라미터 및 양자화 스텝의 수학식의 고정 소수점 근사에서 사용되는 스케일에 기인하여 수정될 수 있는 잔차 블록의 놈을 복구하기 위해 양자화 및 탈양자화(dequantization)에 대해 추가적인 스케일링 계수가 도입될 수 있다. 한 사례의 구현예에서, 역 변환 및 탈양자화의 스케일이 결합될 수 있다. 대안적으로, 맞춤형 양자화 테이블(customized quantization)이 사용되어, 예를 들면, 비트스트림에서, 신호를 사용하는 것에 의해 인코더로부터 디코더로 전송될 수 있다. 양자화는 손실이 많은 연산인데, 여기서 더 큰 양자화 스텝은 더 큰 손실을 나타낸다.
역 양자화 유닛(210)은 양자화된 계수에 대해 양자화 유닛(208)의 역 양자화를 적용하여 탈양자화된 계수(dequantized coefficient; 211)를 획득하도록 구성되는데, 예를 들면, 양자화 유닛(208)의 것과 동일한 양자화 스텝에 기초하여 또는 그것을 사용하는 것에 의해, 예를 들면, 양자화 유닛(208)에 의해 적용되는 양자화 솔루션의 역 양자화 솔루션을 적용하도록 구성된다. 양자화에 기인하는 손실이 변환 계수에 기인하는 손실과는 일반적으로 상이하지만, 탈양자화된 계수(211)는, 변환 계수(207)에 대응하는 탈양자화된 잔차 계수(211)로서 또한 지칭될 수 있다.
역 변환 프로세싱 유닛(212)은 변환 프로세싱 유닛(206)에 의해 적용되는 변환의 역 변환, 예를 들면, 역 이산 코사인 변환(discrete cosine transform; DCT) 또는 역 이산 사인 변환(discrete sine transform; DST)을 적용하여, 샘플 도메인에서의 역 변환 블록(213)을 획득하도록 구성된다. 역 변환 블록(213)은 또한 역 변환 탈양자화된 블록(213) 또는 역 변환 잔차 블록(213)으로서 또한 지칭될 수 있다.
재구성 유닛(214)(예를 들면, 가산기(summer; 214))은 역 변환 블록(213)(즉, 재구성된 잔차 블록(213))을 예측 블록(265)에 가산하여 샘플 도메인에서의 재구성된 블록(215)을 획득하도록 구성되는데, 예를 들면, 재구성된 잔차 블록(213)의 샘플 값을 예측 블록(265)의 샘플 값에 가산하도록 구성된다.
옵션 사항으로, 라인 버퍼(216)의 버퍼 유닛(216)(또는 "버퍼"(216)로서 지칭됨)은 재구성된 블록(215) 및 대응하는 샘플 값을, 예를 들면, 인트라 예측을 위해 버퍼링하도록 또는 저장하도록 구성된다. 다른 실시형태에서, 인코더는 임의의 타입의 추정 및/또는 예측, 예컨대 인트라 예측을 위해 버퍼 유닛(216)에 저장되는 필터링되지 않은 재구성된 블록 및/또는 대응하는 샘플 값을 사용하도록 구성될 수 있다.
예를 들면, 인코더(20)의 한 실시형태는, 버퍼 유닛(216)이 인트라 예측(254)을 위해 재구성된 블록(215)을 저장하도록 구성되는 것뿐만 아니라, 또한, 루프 필터 유닛(220)(도 2에서 도시되지 않음)에 의해 사용되도록 구성될 수 있고, 그 결과, 버퍼 유닛(216) 및 디코딩된 픽쳐 버퍼 유닛(230)은 버퍼를 형성한다. 다른 실시형태는 필터링된 블록(221) 및/또는 디코딩된 픽쳐 버퍼(230)로부터의 블록 또는 샘플(이들 중 어느 것도 도 2에서 도시되지 않음)을 인트라 예측(254)에 대한 입력 또는 기초로서 사용하기 위해 사용될 수 있다.
루프 필터 유닛(220)(또는 "루프 필터"(220)로서 지칭됨)은, 픽셀 변환을 원활하게 수행하기 위해 또는 비디오 품질을 향상시키기 위해, 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하도록 구성된다. 루프 필터 유닛(220)은 하나 이상의 루프 필터, 예컨대 디블록킹(de-blocking) 필터, 샘플 적응적 오프셋(sample-adaptive offset, SAO) 필터, 또는 다른 필터, 예컨대 바이래터럴(bilateral) 필터, 적응적 루프 필터(adaptive loop filter; ALF), 선예화(sharpening) 또는 평활화 필터, 또는 협력 필터(collaborative filter)를 나타내도록 의도된다. 루프 필터 유닛(220)이 도 2에서 루프 내 필터(in-loop filter)로서 도시되지만, 다른 구성에서, 루프 필터 유닛(220)은 포스트 필터(post filter)로서 구현될 수 있다. 필터링된 블록(221)은 필터링된 재구성된 블록(221)으로서 또한 지칭될 수 있다. 디코딩 픽쳐 버퍼(230)는 루프 필터 유닛(220)이 재구성된 블록에 대해 필터링 동작을 수행한 이후 재구성된 블록을 저장할 수 있다.
인코더(20)(상응하여, 루프 필터 유닛(220))의 실시형태는 루프 필터 파라미터(예를 들면, 샘플 적응적 오프셋 정보)를 출력하도록, 예를 들면, 루프 필터 파라미터를 직접적으로 출력하도록 또는, 예를 들면, 디코더(30)가 디코딩을 위해 동일한 루프 필터 파라미터를 수신하여 적용할 수 있도록, 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 인코딩 유닛에 의한 엔트로피 인코딩 이후 루프 필터 파라미터를 출력하도록 구성될 수 있다.
디코딩된 픽쳐 버퍼(decoded picture buffer; DPB)(230)는 인코더(20)에 의한 비디오 데이터의 인코딩을 위한 참조 픽쳐 데이터를 저장하기 위한 참조 픽쳐 메모리일 수 있다. DPB(230)는, 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)(동기식 DRAM(synchronous DRAM; SDRAM), 자기 저항성 RAM(magnetoresistive RAM; MRAM), 저항성 RAM(resistive RAM; RRAM)을 포함함), 또는 다른 타입의 스토리지 디바이스와 같은, 복수의 스토리지 디바이스 중 임의의 하나에 의해 형성될 수 있다. DPB(230) 및 버퍼(216)는 동일한 스토리지 디바이스 또는 별개의 스토리지 디바이스를 사용하는 것에 의해 제공될 수 있다. 한 사례에서, 디코딩된 픽쳐 버퍼(decoded picture buffer; DPB)(230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 픽쳐 버퍼(230)는 또한, 동일한 현재의 픽쳐 또는, 예를 들면, 상이한 이전에 재구성된 픽쳐의 다른 이전에 필터링된 블록, 예컨대 이전에 재구성되고 필터링된 블록(221)을 저장하도록 구성될 수 있고, 예를 들면, 인터 예측을 위해, 완전한 이전에 재구성된, 즉, 디코딩된 픽쳐(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구성된 현재의 픽쳐(및 대응하는 참조 블록 및 샘플)를 제공할 수 있다. 한 사례에서, 디코딩된 픽쳐 버퍼(decoded picture buffer; DPB)(230)는, 재구성된 블록(215)이 루프 내 필터링 없이 재구성되는 경우, 재구성된 블록(215)을 저장하도록 구성된다.
블록 예측 프로세싱 유닛(260)으로서 또한 지칭되는 예측 프로세싱 유닛(260)은, 픽쳐 블록(203)(현재의 픽쳐(201)의 현재의 픽쳐 블록(203)) 및 재구성된 픽쳐 데이터, 예컨대 버퍼(216)의 동일한(현재의) 픽쳐로부터의 참조 샘플 및/또는 디코딩된 픽쳐 버퍼(230)의 하나 이상의 이전에 디코딩된 픽쳐로부터의 참조 픽쳐 데이터(231)를 수신하도록 또는 획득하도록 구성되고, 예측을 위해 그러한 데이터를 프로세싱하도록, 즉, 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하도록 구성된다.
모드 선택 유닛(262)은 예측 모드(예를 들면, 인트라 예측 모드 또는 인터 예측 모드) 및/또는 잔차 블록(205)을 계산하고 재구성된 블록(215)을 재구성하기 위해 예측 블록(265)으로서 사용되는 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
모드 선택 유닛(262)의 실시형태는 예측 모드를 선택하기 위해(예를 들면, 예측 프로세싱 유닛(260)에 의해 지원되는 그들 예측 모드로부터 예측 모드를 선택하기 위해) 사용될 수 있는데, 여기서 예측 모드는 최상의 매칭 또는 최소 잔차(최소 잔차는 송신 또는 저장에서 더 나은 압축을 의미함)를 제공하거나, 또는 최소 시그널링 오버헤드(최소 시그널링 오버헤드는 송신 또는 저장에서 더 나은 압축을 의미함)를 제공하거나, 또는 둘 모두를 고려하거나 또는 둘 모두의 균형을 맞춘다. 모드 선택 유닛(262)은 레이트 왜곡 최적화(rate distortion optimization; RDO)에 기초하여 예측 모드를 결정하도록, 즉, 최소 레이트 왜곡 최적화를 제공하는 예측 모드를 선택하도록, 또는 관련된 레이트 왜곡이 적어도 예측 모드 선택 기준을 충족하는 예측 모드를 선택하도록 구성될 수 있다.
(예를 들면, 예측 프로세싱 유닛(260)을 사용하는 것에 의해) 인코더(20)의 사례에서 수행되는 예측 프로세싱 및 (예를 들면, 모드 선택 유닛(262)을 사용하는 것에 의해) 수행되는 모드 선택이 하기에서 상세하게 설명된다.
상기에서 설명되는 바와 같이, 인코더(20)는 (사전 결정된) 예측 모드 세트로부터 최상의 또는 최적의 예측 모드를 결정하도록 또는 선택하도록 구성된다. 예측 모드 세트는, 예를 들면, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드 세트는 35 개의 상이한 인트라 예측 모드, 예를 들면, DC(또는 평균) 모드 및 평면 모드와 같은 비 방향성 모드, 또는 H.265에 정의되는 바와 같은 방향성 모드를 포함할 수 있거나, 또는 67 개의 상이한 인트라 예측 모드, 예를 들면, DC(또는 평균) 모드 및 평면 모드와 같은 비 방향성 모드, 또는 H.266를 개발함에 있어서 정의되는 바와 같은 방향성 모드를 포함할 수 있다.
가능한 구현예에서, 인터 예측 모드 세트는 이용 가능한 참조 픽쳐(즉, 예를 들면, 상기에서 설명되는 바와 같이 DBP(230)에서 저장되는 적어도 몇몇 디코딩된 픽쳐) 및 다른 인터 예측 파라미터에 의존하고; 예를 들면, 전체 참조 픽쳐가 사용되는지 또는 참조 픽쳐의 일부만이 사용되는지, 예를 들면, 최적의 매칭된 참조 블록이 현재의 블록의 영역의 검색 윈도우 영역 주변에 대해 검색되는지의 여부에 의존하고; 및/또는 예를 들면, 하프/세미 픽셀(half/semi-pel) 및/또는 1/4 픽셀(quarter-pel) 보간과 같은 픽셀 보간이 사용되는지의 여부에 의존하는데, 여기서 인터 예측 모드 세트는, 예를 들면, 고급 모션 벡터 예측(Advanced Motion Vector Prediction; AMVP) 모드 및 병합(병합) 모드를 포함할 수 있다. 특정한 구현예에서, 인터 예측 모드 세트는 본 출원의 이 실시형태에서 향상된 제어 포인트 고급 모션 벡터 예측(advanced motion vector prediction; AMVP) 모드 및 향상된 제어 포인트 병합(merge) 모드를 포함할 수 있다. 한 사례에서, 인트라 예측 유닛(254)은 하기에서 설명되는 인터 예측 기술의 임의의 조합을 실행하도록 구성될 수 있다.
전술한 예측 모드에 추가하여, 스킵 모드 및/또는 직접적인 모드가 또한 본 출원의 이 실시형태에서 사용될 수 있다.
예측 프로세싱 유닛(260)은 또한, 예를 들면, 쿼드트리(quad-tree; QT) 파티션, 이진 트리(binary-tree; BT) 파티션, 또는 트리플 트리(triple-tree; TT) 파티션, 또는 이들의 임의의 조합의 반복적인 사용을 통해, 픽쳐 블록(203)을 더 작은 블록 파티션 또는 서브 블록으로 구획화하도록 구성될 수 있고; 그리고 예를 들면, 블록 파티션 또는 서브 블록의 각각에 대해, 예측을 수행하도록 구성되는데, 여기서 모드 선택은 구획화될 픽쳐 블록(203)의 트리 구조를 선택하는 것 및 블록 파티션 또는 서브 블록의 각각에 적용될 예측 모드를 선택하는 것을 포함한다.
인터 예측 유닛(244)은 모션 추정(motion estimation; ME) 유닛(도 2에서 도시되지 않음) 및 모션 보상(motion compensation; MC) 유닛(도 2에서 도시되지 않음)을 포함할 수 있다. 모션 추정 유닛은, 모션 추정을 수행하기 위해, 픽쳐 블록(203)(현재의 픽쳐(201)의 현재의 픽쳐 블록(203)) 및 디코딩된 픽쳐(231), 또는 적어도 하나 이상의 이전에 재구성된 블록, 예컨대, 다른/상이한 이전에 디코딩된 픽쳐(231)의 하나 이상의 재구성된 블록을 수신하도록 또는 획득하도록 구성된다. 예를 들면, 비디오 시퀀스는 현재의 픽쳐 및 이전에 디코딩된 픽쳐(31)를 포함할 수 있거나, 또는 다시 말하면, 현재의 픽쳐 및 이전에 디코딩된 픽쳐(31)는 비디오 시퀀스를 형성하는 픽쳐 시퀀스의 일부일 수 있거나, 또는 픽쳐 시퀀스를 형성할 수 있다.
예를 들면, 인코더(20)는, 복수의 다른 픽쳐 내의 상이한 픽쳐 또는 동일한 픽쳐의 복수의 참조 블록으로부터 참조 블록을 선택하도록, 그리고 참조 픽쳐 및/또는 참조 블록의 위치(X 및 Y 좌표)와 현재의 블록의 위치 사이의 오프셋(공간 오프셋)을 인터 예측 파라미터로서 모션 추정 유닛(도 2에서 도시되지 않음)으로 제공하도록 구성될 수 있다. 오프셋은 모션 벡터(motion vector; MV)로서 또한 지칭된다.
모션 보상 유닛은: 인터 예측 파라미터를 획득하도록, 그리고 인터 예측 파라미터에 기초하여 또는 인터 예측 파라미터를 사용하는 것에 의해 인터 예측을 수행하여 인터 예측 블록(245)을 획득하도록 구성된다. 모션 보상 유닛(도 2에서 도시되지 않음)에 의해 수행되는 모션 보상은, 모션 추정을 사용하는 것에 의해(어쩌면 서브 픽셀 정확도의 보간을 수행하는 것에 의해) 결정되는 모션/블록 벡터에 기초하여 예측 블록을 추출하는 것 또는 생성하는 것을 포함할 수 있다. 보간 필터링은 공지된 픽셀 샘플로부터 추가적인 픽셀 샘플을 생성할 수 있어서, 픽쳐 블록을 인코딩하기 위해 사용될 수 있는 후보 예측 블록의 수량을 잠재적으로 증가시킬 수 있다. 일단 현재의 픽쳐 블록의 PU에 대한 모션 벡터가 수신되면, 모션 보상 유닛(246)은 참조 픽쳐 목록에서 모션 벡터가 가리키는 예측 블록을 위치 결정할 수 있다. 모션 보상 유닛(246)은 또한, 비디오 슬라이스의 픽쳐 블록을 디코딩하기 위해 디코더(30)에 의해 사용될 수 있는, 블록 및 비디오 슬라이스와 관련되는 신택스 엘리먼트를 생성할 수 있다.
구체적으로, 인터 예측 유닛(244)은 신택스 엘리먼트를 엔트로피 인코딩 유닛(270)으로 송신할 수 있는데, 여기서 신택스 엘리먼트는 인터 예측 파라미터(예를 들면, 현재의 블록의 예측을 위해 사용되는 그리고 복수의 인터 예측 모드가 순회된 이후 선택되는 인터 예측 모드의 표시 정보(indication information))를 포함한다. 가능한 적용 시나리오에서, 단지 하나의 인터 예측 모드만이 있는 경우, 인터 예측 파라미터는 신택스 엘리먼트에서 내포되지 않을 수 있다. 이 경우, 디코더(30)는 디폴트 예측 모드를 사용하는 것에 의해 디코딩을 직접적으로 수행할 수 있다. 인터 예측 유닛(244)은 인터 예측 기술의 임의의 조합을 실행하도록 구성될 수 있다는 것이 이해될 수 있다.
인트라 예측 유닛(254)은, 동일한 픽쳐의 픽쳐 블록(203)(현재의 픽쳐 블록) 및 하나 이상의 이전에 재구성된 블록, 예를 들면, 재구성된 인접 블록을 획득하여, 예를 들면, 수신하여, 인트라 추정을 수행하도록 구성된다. 예를 들면, 인코더(20)는 복수의(사전 결정된) 인트라 예측 모드로부터 인트라 예측 모드를 선택하도록 구성될 수 있다.
인코더(20)의 실시형태는 최적화 기준에 기초하여, 예컨대 (예를 들면, 현재의 픽쳐 블록(203)의 예측 블록(255)과 가장 유사한 인트라 예측 모드를 제공하는) 최소 잔차 또는 최소 비트 레이트 왜곡에 기초하여 인트라 예측 모드를 선택하기 위해 사용될 수 있다.
인트라 예측 유닛(254)은 또한, 선택된 인트라 예측 모드의 인트라 예측 파라미터에 기초하여 인트라 예측 블록(255)을 결정하도록 구성된다. 어쨌든, 블록에 대한 인트라 예측 모드가 선택된 이후, 인트라 예측 유닛(254)은 또한, 인트라 예측 파라미터를 엔트로피 인코딩 유닛(270)에 제공하도록, 즉, 블록에 대한 선택된 인트라 예측 모드를 나타내는 정보를 제공하도록 구성된다. 한 사례에서, 인트라 예측 유닛(254)은 인트라 예측 기술의 임의의 조합을 실행하도록 구성될 수 있다.
구체적으로, 인트라 예측 유닛(254)은 신택스 엘리먼트를 엔트로피 인코딩 유닛(270)으로 송신할 수 있는데, 여기서 신택스 엘리먼트는 인트라 예측 파라미터(예를 들면, 현재의 블록의 예측을 위해 사용되는 그리고 복수의 인트라 예측 모드가 순회된 이후 선택되는 인트라 예측 모드의 표시 정보)를 포함한다. 가능한 적용 시나리오에서, 단지 하나의 인트라 예측 모드만이 있는 경우, 인트라 예측 파라미터는 신택스 엘리먼트에서 내포되지 않을 수 있다. 이 경우, 디코더(30)는 디폴트 예측 모드를 사용하는 것에 의해 디코딩을 직접적으로 수행할 수 있다.
엔트로피 인코딩 유닛(270)은, 예를 들면, 출력(272)에 의해 인코딩된 비트스트림(21)의 형태로 출력될 수 있는 인코딩된 픽쳐 데이터(21)를 획득하기 위해, 엔트로피 인코딩 알고리즘 또는 솔루션(예를 들면, 가변 길이 코딩(variable length coding; VLC) 솔루션, 컨텍스트 적응적 VLC(context adaptive VLC; CAVLC) 솔루션, 산술 코딩 솔루션, 컨텍스트 적응적 이진 산술 코딩(context adaptive binary arithmetic coding; CABAC), 신택스 기반의 컨텍스트 적응적 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding; SBAC), 확률 간격 구획화 엔트로피(probability interval partitioning entropy; PIPE) 인코딩 또는 다른 엔트로피 인코딩 방법 또는 기술)을, 양자화된 잔차 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 루프 필터 파라미터 중 단일의 하나 또는 모두에 적용하도록(또는 적용하지 않도록) 구성된다. 인코딩된 비트스트림은 비디오 디코더(30)로 송신될 수 있거나 또는 나중에 비디오 디코더(30)에 의한 송신 또는 검색을 위해 아카이브화될 수 있다. 엔트로피 인코딩 유닛(270)은 또한, 인코딩되고 있는 현재의 비디오 슬라이스의 다른 신택스 엘리먼트를 엔트로피 인코딩하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하기 위해 사용될 수 있다. 예를 들면, 비 변환 기반의 인코더(20)가 몇몇 블록 또는 프레임에 대한 변환 프로세싱 유닛(206) 없이 잔차 신호를 직접적으로 양자화할 수 있다. 다른 구현예에서, 인코더(20)는 단일의 유닛으로 결합되는 양자화 유닛(208) 및 역 양자화 유닛(210)을 구비할 수 있다.
구체적으로, 본 출원의 이 실시형태에서, 인코더(20)는 하기의 실시형태에서 설명되는 인터 예측 방법을 구현하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변경이 비디오 스트림을 인코딩하기 위해 사용될 수 있다는 것이 이해되어야 한다. 예를 들면, 몇몇 픽쳐 블록 또는 픽쳐 프레임에 대해, 비디오 인코더(20)는, 변환 프로세싱 유닛(206)에 의한 프로세싱 없이, 그리고 상응하여 역 변환 프로세싱 유닛(212)에 의한 프로세싱 없이, 잔차 신호를 직접적으로 양자화할 수 있다. 대안적으로, 몇몇 픽쳐 블록 또는 픽쳐 프레임에 대해, 비디오 인코더(20)는 잔차 데이터를 생성하지 않고, 상응하여, 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210), 및 역 변환 프로세싱 유닛(212)에 의한 프로세싱을 필요로 하지 않는다. 대안적으로, 비디오 인코더(20)는 루프 필터(220)에 의한 프로세싱 없이 재구성된 픽쳐 블록을 직접적으로 참조 블록으로서 저장할 수 있다. 대안적으로, 비디오 인코더(20) 내의 양자화 유닛(208) 및 역 양자화 유닛(210)은 함께 결합될 수 있다. 루프 필터(220)는 옵션 사항이며, 무손실 압축 코딩의 경우, 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210), 및 역 변환 프로세싱 유닛(212)은 옵션 사항이다. 상이한 애플리케이션 시나리오에 기초하여, 인터 예측 유닛(244) 및 인트라 예측 유닛(254)은 선택적으로 인에이블될 수 있다는 것이 이해되어야 한다.
도 3은 본 출원의 실시형태를 구현하도록 구성되는 디코더(30)의 사례의 개략적/개념적 블록도를 도시한다. 비디오 디코더(30)는, 예를 들면, 인코더(20)에 의해 인코딩되는 인코딩된 픽쳐 데이터(예를 들면, 인코딩된 비트스트림)(21)를 수신하여 디코딩된 픽쳐(231)를 획득하도록 구성된다. 디코딩 프로세스 동안, 비디오 디코더(30)는, 예컨대 인코딩된 비디오 슬라이스의 픽쳐 블록의 인코딩된 비디오 비트스트림 및 관련된 신택스 엘리먼트를 나타내는 비디오 데이터를 비디오 인코더(20)로부터 수신한다.
도 3의 사례에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역 양자화 유닛(310), 역 변환 프로세싱 유닛(312), 재구성 유닛(314)(예를 들면, 가산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 픽쳐 버퍼(330), 및 예측 프로세싱 유닛(360)을 포함한다. 예측 프로세싱 유닛(360)는 인터 예측 유닛(344), 인트라 예측 유닛(354), 및 모드 선택 유닛(362)을 포함할 수 있다. 몇몇 사례에서, 비디오 디코더(30)는 도 2를 참조하여 상기에서 설명되는 비디오 인코더(20)에 의해 수행되는 인코딩 프로세스와는 실질적으로 역인 디코딩 프로세스를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은 인코딩된 픽쳐 데이터(21)에 대해 엔트로피 디코딩을 수행하여, 예를 들면, 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에서 도시되지 않음), 예컨대 인터 예측, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 다른 신택스 엘리먼트(디코딩됨) 중 임의의 하나 또는 모두를 획득하도록 구성된다. 엔트로피 디코딩 유닛(304)는 또한, 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 다른 신택스 엘리먼트를 예측 프로세싱 유닛(360)으로 포워딩하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트를 수신할 수 있다.
역 양자화 유닛(310)은 역 양자화 유닛(210)과 기능적으로 동일할 수 있고, 역 변환 프로세싱 유닛(312)은 역 변환 프로세싱 유닛(212)과 기능적으로 동일할 수 있고, 재구성 유닛(314)은 재구성 유닛(214)과 기능적으로 동일할 수 있고, 버퍼(316)는 버퍼(216)와 기능적으로 동일할 수 있고, 루프 필터(320)는 루프 필터(220)와 기능적으로 동일할 수 있으며, 디코딩된 픽쳐 버퍼(330)는 디코딩된 픽쳐 버퍼(230)와 기능적으로 동일할 수 있다.
예측 프로세싱 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있는데, 여기서 인터 예측 유닛(344)은 인터 예측 유닛(244)과 기능적으로 유사할 수 있고, 인트라 예측 유닛(354)은 인트라 예측 유닛(254)과 기능적으로 유사할 수 있다. 예측 프로세싱 유닛(360)은 일반적으로 블록 예측을 수행하도록 및/또는 인코딩된 픽쳐 데이터(21)로부터 예측 블록(365)을 획득하도록, 그리고 선택된 예측 모드에 대한 예측 관련 파라미터 및/또는 정보를, 예를 들면, 엔트로피 디코딩 유닛(304)으로부터, (명시적으로 또는 암시적으로) 수신하도록 또는 획득하도록 구성된다.
비디오 슬라이스가 인트라 코딩된 슬라이스인 (I) 슬라이스로서 인코딩되는 경우, 예측 프로세싱 유닛(360)의 인트라 예측 유닛(354)은, 픽쳐의 이전 디코딩된 블록 또는 현재의 프레임으로부터의 신호 및 데이터에 의해 표현되는 인트라 예측 모드에 기초하여 현재의 비디오 슬라이스의 픽쳐 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 코딩된 슬라이스(즉, B 또는 P)로서 인코딩되는 경우, 예측 프로세싱 유닛(360)의 인터 예측 유닛(344)(예를 들면, 모션 보상 유닛)은 엔트로피 디코딩 유닛(304)으로부터 수신되는 다른 신택스 엘리먼트 및 모션 벡터에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측의 경우, 참조 픽쳐 목록 내의 참조 픽쳐로부터 예측 블록이 생성될 수 있다. 비디오 디코더(30)는, 디폴트 구성 기술을 사용하는 것에 의해 DPB(330)에 저장되는 참조 픽쳐에 기초하여 참조 프레임 목록: 목록 0 및 목록 1을 구성할 수 있다.
예측 프로세싱 유닛(360)은: 모션 벡터 및 다른 신택스 엘리먼트를 파싱하는 것에 의해 현재의 비디오 슬라이스에 대한 비디오 블록의 예측 정보를 결정하도록, 그리고, 예측 정보를 사용하는 것에 의해, 디코딩되고 있는 현재의 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 본 출원의 한 사례에서, 예측 프로세싱 유닛(360)은, 현재의 비디오 슬라이스의 비디오 블록을 디코딩하기 위해, 몇몇 수신된 신택스 엘리먼트를 사용하는 것에 의해, 비디오 슬라이스의 비디오 블록을 인코딩하기 위한 예측 모드(예를 들면, 인트라 또는 인터 예측), 인터 예측 슬라이스 타입(예를 들면, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대해 사용되는 참조 픽쳐 목록 내의 하나 이상의 조각(piece)의 구성 정보, 슬라이스에 대해 사용되는 각각의 인터 인코딩 비디오 블록의 모션 벡터, 슬라이스에 대한 각각의 인터 인코딩 비디오 블록의 인터 예측 상태, 및 다른 정보를 결정한다. 본 개시의 다른 사례에서, 비트스트림으로부터 비디오 디코더(30)에 의해 수신되는 신택스 엘리먼트는 적응적 파라미터 세트(adaptive parameter set; APS), 시퀀스 파라미터 세트(sequence parameter set; SPS), 픽쳐 파라미터 세트(picture parameter set; PPS), 또는 슬라이스 헤더 중 하나 이상에서 신택스 엘리먼트를 포함한다.
역 양자화 유닛(310)은 비트스트림에서 제공되며 엔트로피 디코딩 유닛(304)에 의해 디코딩되는 양자화된 변환 계수를 역으로 양자화(즉, 탈양자화)하도록 구성될 수 있다. 역 양자화 프로세스는, 적용될 양자화의 정도를 결정하고, 또한, 적용될 역 양자화 정도를 결정하기 위해, 비디오 슬라이스 내의 각각의 비디오 블록에 대해 비디오 인코더(20)에 의해 계산되는 양자화 파라미터를 사용하는 것을 포함할 수 있다.
역 변환 프로세싱 유닛(312)은, 픽셀 도메인에서 잔차 블록을 생성하기 위해, 역 변환(예를 들면, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스)을 변환 계수에 적용하도록 구성된다.
재구성 유닛(314)(예를 들면, 가산기(314))은 역 변환 블록(313)(즉, 재구성된 잔차 블록(313))을 예측 블록(365)에 가산하여 샘플 도메인에서의 재구성된 블록(315)을 획득하도록 구성되는데, 예를 들면, 재구성된 잔차 블록(313)의 샘플 값을 예측 블록(365)의 샘플 값에 가산하도록 구성된다.
루프 필터 유닛(320)은, 픽셀 변환을 원활하게 수행하기 위해 또는 비디오 품질을 향상시키기 위해, (인코딩 사이클 동안 또는 그 이후에) 재구성된 블록(315)을 필터링하여 필터링된 블록(321)을 획득하도록 구성된다. 한 사례에서, 루프 필터 유닛(320)은 하기에서 설명되는 필터링 기술의 임의의 조합을 실행하도록 구성될 수 있다. 루프 필터 유닛(320)은 하나 이상의 루프 필터, 예컨대 디블록킹 필터, 샘플 적응적 오프셋(sample-adaptive offset, SAO) 필터, 또는 다른 필터, 예컨대 바이래터럴 필터, 적응적 루프 필터(adaptive loop filter; ALF), 선예화 또는 평활화 필터, 또는 협력 필터(collaborative filter)를 나타내도록 의도된다. 루프 필터 유닛(320)이 도 3에서 루프 내 필터로서 도시되지만, 다른 구성에서, 루프 필터 유닛(320)은 포스트 필터로서 구현될 수 있다.
주어진 프레임 또는 픽쳐 내의 디코딩된 비디오 블록(321)은, 그 다음, 후속하는 모션 보상을 위해 참조 픽쳐를 저장하는 디코딩된 픽쳐 버퍼(330)에 저장된다.
디코더(30)는, 출력(332)을 사용하여 사용자에게 또는 뷰잉을 위한 사용자에게 픽쳐를 제시하는 것에 의해, 예를 들면, 디코딩된 픽쳐(31)를 출력하도록 구성된다.
비디오 디코더(30)의 다른 변형이 압축된 비트스트림을 디코딩하기 위해 사용될 수 있다. 예를 들면, 디코더(30)는 루프 필터 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들면, 비 변환 기반의 디코더(30)가 몇몇 블록 또는 프레임에 대한 역 변환 프로세싱 유닛(312) 없이 잔차 신호를 직접적으로 역으로 양자화할 수 있다. 다른 구현예에서, 비디오 디코더(30)는 단일의 유닛으로 결합되는 역 양자화 유닛(310) 및 역 변환 프로세싱 유닛(312)을 구비할 수 있다.
구체적으로, 본 출원의 이 실시형태에서, 디코더(30)는 하기의 실시형태에서 설명되는 인터 예측 방법을 구현하도록 구성된다.
비디오 디코더(30)의 다른 구조적 변경이 인코딩된 비디오 비트스트림을 디코딩하기 위해 사용될 수 있다는 것이 이해되어야 한다. 예를 들면, 비디오 디코더(30)는 필터(320)에 의한 프로세싱 없이 출력 비디오 스트림을 생성할 수 있다. 대안적으로, 몇몇 픽쳐 블록 또는 픽쳐 프레임에 대해, 비디오 디코더(30)의 엔트로피 디코딩 유닛(304)은 양자화된 계수를 디코딩하지 않으며, 상응하여, 역 양자화 유닛(310) 및 역 변환 프로세싱 유닛(312)에 의한 프로세싱을 필요로 하지 않는다. 루프 필터(320)는 옵션 사항이다. 무손실 압축의 경우, 역 양자화 유닛(310) 및 역 변환 프로세싱 유닛(312)은 옵션 사항이다. 상이한 애플리케이션 시나리오에 기초하여, 인터 예측 유닛 및 인트라 예측 유닛은 선택적으로 인에이블될 수 있다는 것이 이해되어야 한다.
본 출원에서의 인코더(20) 및 디코더(30)에서는, 특정한 단계의 프로세싱 결과가 추가로 프로세싱될 수 있고, 그 다음, 다음 번 단계로 출력될 수 있다는 것이 이해되어야 한다. 예를 들면, 보간 필터링, 모션 벡터 유도 또는 루프 필터링 이후, 추가적인 동작, 예컨대 클립 또는 시프트가 대응하는 단계의 프로세싱 결과에 대해 수행된다.
예를 들면, 추가적인 동작은 인접한 아핀 코딩 블록의 모션 벡터에 기초하여 유도되는 현재의 픽쳐 블록의 제어 포인트 모션 벡터에 적용될 수 있는데, 이것은 본 출원에서 제한되지는 않는다. 예를 들면, 모션 벡터의 값 범위는 비트 폭 내에 있는 것으로 제한된다. 모션 벡터의 허용된 비트 폭은 비트 깊이(bitDepth)이고, 모션 벡터의 값 범위는 -2^(bitDepth-1) 내지 2^(bitDepth-1)-1이다는 것이 가정되는데, 여기서 심볼 "^"는 거듭제곱을 나타낸다. bitDepth가 16으로 설정되는 경우, 범위는 -32768 내지 32767이다. bitDepth가 18로 설정되는 경우, 값 범위는 -131072 내지 131071이다. 값 범위는 다음의 두 가지 방식으로 제한될 수 있다:
방법 1: 모션 벡터의 오버플로우 최상위 비트를 제거한다:
Figure pct00014
예를 들면, mvx의 값이 -32769인 경우, 전술한 공식을 적용한 이후, 결과 값은 32767이다. 컴퓨터에서, 십진수는 2의 보수로서 저장된다. -32769의 2의 보수는 1,0111,1111,1111,1111(17 비트)이다. 그 다음, 최상위 비트가 버려지고, 따라서, vx의 값은 0111,1111,1111,1111(10 진수는 32767)인데, 이것은 공식을 적용하는 것에 의한 출력과 동일하다.
방법 2: 다음의 공식에서 나타내어지는 바와 같이, 값을 클리핑하는 것에 의해 오버플로우 최상위 비트를 제거한다:
Figure pct00015
Clip3의 정의는 [x, y] 내에서 z의 값을 클리핑하는 것을 의미한다:
Figure pct00016
도 4는 본 출원의 실시형태에 따른 비디오 코딩 디바이스(400)(예컨대, 비디오 인코딩 디바이스(400) 또는 비디오 디코딩 디바이스(400))의 개략적인 구조도이다. 비디오 코딩 디바이스(400)는 본원에서 설명되는 실시형태를 구현하도록 적응된다. 한 실시형태에서, 비디오 코딩 디바이스(400)는 비디오 디코더(예컨대 도 1a의 디코더(30)) 또는 비디오 인코더(예컨대, 도 1a의 인코더(20))일 수 있다. 다른 실시형태에서, 비디오 코딩 디바이스(400)는 도 1a의 디코더(30) 또는 도 1a의 인코더(20)의 하나 이상의 컴포넌트일 수 있다.
비디오 코딩 디바이스(400)는 다음의 것을 포함한다: 데이터를 수신하도록 구성되는 유입 포트(ingress port)(410) 및 수신기 유닛(Rx)(420), 프로세서, 데이터를 프로세싱하도록 구성되는 논리 유닛, 또는 중앙 프로세싱 유닛(central processing unit; CPU)(430), 데이터를 송신하도록 구성되는 송신기 유닛(Tx)(440) 및 유출 포트(egress port)(450), 및 데이터를 저장하도록 구성되는 메모리(460). 비디오 코딩 디바이스(400)는, 유입 포트(410), 수신기 유닛(420), 송신기 유닛(440), 및 유출 포트(450)에 커플링되며, 광학 신호 또는 전기 신호의 유출 또는 유입을 위해 사용되는 광전 변환 컴포넌트 및 전기 광학(electro-optical; EO) 컴포넌트를 더 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어를 사용하는 것에 의해 구현된다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예를 들면, 멀티 코어 프로세서), FPGA, ASIC, 및 DSP로서 구현될 수 있다. 프로세서(430)는 유입 포트(410), 수신기 유닛(420), 송신기 유닛(440), 유출 포트(450), 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)(예를 들면, 인코딩 모듈(470) 또는 디코딩 모듈(470))을 포함한다. 인코딩/디코딩 모듈(470)은, 본 출원의 실시형태에서 제공되는 인터 예측 방법을 구현하기 위해, 본 명세서에서 개시되는 실시형태를 구현한다. 예를 들면, 인코딩/디코딩 모듈(470)은 다양한 코딩 동작을 구현하거나, 프로세싱하거나, 또는 제공한다. 따라서, 비디오 코딩 디바이스(400)의 기능성은 인코딩/디코딩 모듈(470)에 의해 실질적으로 향상되고 비디오 코딩 디바이스(400)의 상이한 상태로의 전이가 영향을 받는다. 대안적으로, 인코딩/디코딩 모듈(470)은 메모리(460)에 저장되며 프로세서(430)에 의해 실행되는 명령어를 사용하는 것에 의해 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브, 및 솔리드 스테이트 디스크를 포함하고, 오버플로우된 데이터에 대한 스토리지 디바이스로서 사용될 수 있으며, 이들 프로그램이 선택적으로 실행될 때 프로그램을 저장하도록, 그리고 프로그램 실행 프로세스에서 판독되는 명령어 및 데이터를 저장하도록 구성된다. 메모리(460)는 휘발성 및/또는 불휘발성일 수 있고, 리드 온리 메모리(read-only memory; ROM), 랜덤 액세스 메모리(random access memory; RAM), 터너리 콘텐츠 어드레서블 메모리(ternary content-addressable memory; TCAM), 및/또는 정적 랜덤 액세스 메모리(static random access memory; SRAM)일 수 있다.
도 5는 예시적인 실시형태에 따른 도 1a의 소스 디바이스(12) 및 목적지 디바이스(14) 중 임의의 하나 또는 둘 다로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 본 출원의 기술을 구현할 수 있다. 다시 말하면, 도 5는 본 출원의 실시형태에 따른 인코딩 디바이스 또는 디코딩 디바이스(코딩 디바이스(500)로서 지칭됨)의 구현의 개략적인 블록도이다. 코딩 디바이스(500)는 프로세서(510), 메모리(530), 및 버스 시스템(550)을 포함할 수 있다. 프로세서는 버스 시스템을 사용하는 것에 의해 메모리에 연결되고, 메모리는 명령어를 저장하도록 구성되며, 프로세서는 메모리에 저장되는 명령어를 실행하도록 구성된다. 코딩 디바이스의 메모리는 프로그램 코드를 저장하고, 프로세서는 본 출원에서 설명되는 다양한 비디오 인코딩 또는 디코딩 방법을 실행하기 위해 메모리에 저장되는 프로그램 코드를 호출할 수 있다. 반복을 방지하기 위해, 세부 사항은 여기서는 다시 설명되지 않는다.
본 출원의 실시형태에서, 프로세서(510)는 중앙 프로세싱 유닛(Central Processing Unit, 간략히 "CPU")일 수 있거나, 또는 프로세서(510)는 다른 범용 프로세서, 디지털 신호 프로세서(digital signal processor; DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 프로그래머블 논리 디바이스, 별개의 게이트 또는 트랜지스터 논리 디바이스, 별개의 하드웨어 컴포넌트, 또는 등등일 수 있다. 범용 프로세서는 마이크로프로세서일 수 있거나, 또는 프로세서는 임의의 종래의 프로세서 또는 등등일 수 있다.
메모리(530)는 리드 온리 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스를 포함할 수 있다. 임의의 다른 적절한 타입의 스토리지 디바이스가 메모리(530)로서 또한 사용될 수 있다. 메모리(530)는 버스 시스템(550)을 사용하는 것에 의해 프로세서(510)에 의해 액세스되는 코드 및 데이터(531)를 포함할 수 있다. 메모리(530)는 오퍼레이팅 시스템(533) 및 애플리케이션 프로그램(535)을 더 포함할 수 있고, 애플리케이션 프로그램(535)은, 프로세서(510)가 본 출원에서 설명되는 비디오 인코딩 또는 디코딩 방법을 실행하는 것을 허용하는 적어도 하나의 프로그램을 포함한다. 예를 들면, 애플리케이션 프로그램(535)은, 본원에서 설명되는 비디오 인코딩 또는 디코딩 방법을 수행하는 비디오 인코딩 또는 디코딩 애플리케이션(비디오 코딩 애플리케이션으로 지칭됨)을 더 포함하는 애플리케이션 1 내지 N을 포함할 수 있다.
버스 시스템(550)은, 데이터 버스 외에, 전력 버스, 제어 버스, 상태 신호 버스, 및 등등을 더 포함할 수 있다. 그러나, 명확한 설명을 위해, 도면에서의 다양한 타입의 버스는 버스 시스템(550)으로서 마킹된다.
옵션 사항으로, 코딩 디바이스(500)는 디스플레이(570)와 같은 하나 이상의 출력 디바이스를 더 포함할 수 있다. 한 예에서, 디스플레이(570)는, 디스플레이를 터치 입력을 감지하도록 동작 가능한 터치 감지 유닛과 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(570)는 버스 시스템(550)을 사용하는 것에 의해 프로세서(510)에 연결될 수 있다.
다음에서는, 먼저, 본 출원에서 수반되는 개념을 설명한다.
(1) 인터 예측 모드
HEVC에서, 두 개의 인터 예측 모드가 사용된다: 고급 모션 벡터 예측(advanced motion vector prediction; AMVP) 모드 및 병합(merge) 모드.
AMVP 모드의 경우, 현재의 블록의 공간적으로 또는 시간적으로 인접한 인코딩된 블록(인접 블록으로서 나타내어짐)이 먼저 순회되고, 각각의 인접 블록의 모션 정보에 기초하여 후보 모션 벡터 목록이 구성된다. 후보 모션 벡터 목록은 모션 정보 후보 목록으로서 또한 지칭될 수 있다. 그 다음, 레이트 왜곡 비용(rate distortion cost)을 사용하는 것에 의해 후보 모션 벡터 목록으로부터 최적의 모션 벡터가 결정된다. 예를 들면, 최소의 레이트 왜곡 비용을 갖는 후보 모션 정보가 최적의 모션 벡터로서 결정되고, 최적의 모션 벡터는 현재의 블록의 모션 벡터 예측자(motion vector predictor; MVP)로서 사용된다. 인접 블록의 위치 및 그 순회 시퀀스가 사전 정의된다. 비율 왜곡 비용은 공식 (1)에 따라 계산할 수 있는데:
Figure pct00017
여기서 J는 레이트 왜곡 비용을 나타내고, SAD는, 후보 모션 벡터 예측자를 사용하는 것에 의해 모션 추정이 수행된 이후 획득되는 원래의 픽셀 값과 예측된 픽셀 값 사이의 절대 차이의 합(sum of absolute difference; SAD)을 나타내고, R은 비트 레이트를 나타내고, λ는 라그랑주 승수(Lagrange multiplier)를 나타낸다. 인코더 측은 후보 모션 벡터 목록에서의 선택된 모션 벡터 예측자의 인덱스 값 및 참조 프레임 인덱스 값을 디코더 측으로 송신한다. 게다가, 현재의 블록의 실제 모션 벡터를 획득하기 위해 MVP 중심의 인접한 도메인에서 모션 검색이 수행되고, 인코더 측은 MVP와 실제 모션 벡터 사이의 차이(모션 벡터 차이)를 디코더 측으로 송신한다.
병합 모드의 경우, 현재의 블록의 공간적으로 또는 시간적으로 인접한 인코딩된 블록(인접 블록으로서 나타내어짐)이 먼저 순회되고, 각각의 인접 블록의 모션 정보에 기초하여 후보 모션 벡터 목록이 구성된다. 그 다음, 레이트 왜곡 비용을 계산하는 것에 의해 현재의 블록의 모션 벡터 모션 정보로서 후보 모션 벡터 목록으로부터 최적 모션 정보가 결정된다. 세부 사항에 대해서는, AMVP 모드에서의 전술한 설명을 참조한다. 그 다음, 후보 모션 벡터 목록에서의 최적 모션 정보의 위치의 인덱스 값(이것은 병합 인덱스로서 나타내어질 수 있음)이 디코더 측으로 전달된다. 예를 들면, 공간 도메인 및 시간 도메인에서의 현재의 블록의 후보 모션 정보가 도 6에서 도시된다. 공간 도메인의 후보 모션 정보는 다섯 개의 공간적으로 인접한 블록(A0, A1, B0, B1, 및 B2)으로부터 유래한다. 인접 블록이 획득될 수 없는 경우(인접 블록이 존재하지 않거나 또는 인접 블록이 인코딩되어 있지 않거나 또는 인접 블록에 의해 사용되는 예측 모드가 인터 예측 모드가 아닌 경우), 인접 블록의 모션 정보는 후보 모션 벡터 목록에 더해지지 않는다. 시간 도메인에서의 현재의 블록의 후보 모션 정보는, 현재의 프레임 및 참조 프레임의 픽쳐 순서 카운트(Picture Order Count; POC)에 기초하여 참조 프레임에서 대응하는 위치에 있는 블록의 MV를 스케일링하는 것에 의해 획득된다. 먼저, 참조 프레임에서 위치 T에 있는 블록이 이용 가능한지의 여부가 결정되고; 블록이 이용 가능하지 않은 경우, 위치 C에 있는 블록이 선택된다.
AMVP 모드와 유사하게, 병합 모드에서의 인접 블록의 위치 및 그 순회 시퀀스도 또한 사전 정의되며, 인접 블록의 위치 및 순회 시퀀스는 상이한 모드에서 상이할 수 있다.
AMVP 모드 및 병합 모드 둘 모두에서, 후보 모션 벡터 목록이 유지될 필요가 있다는 것이 학습될 수 있다. 새로운 모션 정보가 후보 목록에 더해지기 이전에 매번, 후보 모션 벡터 목록에서 동일한 모션 정보가 존재하는지의 여부가 체크된다. 동일한 모션 정보가 존재하는 경우, 모션 정보는 목록에 더해지지 않는다. 이 체크 프로세스는 후보 모션 벡터 목록의 프루닝(pruning)으로서 지칭될 수 있다. 목록 프루닝은, 중복하는 레이트 왜곡 비용 계산을 방지하기 위해, 동일한 모션 정보가 목록에서 나타나는 것을 방지하는 것이다.
HEVC에서의 인터 예측 동안, 코딩 블록 내의 모든 픽셀에 대해 동일한 모션 정보가 사용되고, 그 다음, 모션 정보에 기초하여 모션 보상이 수행되어 코딩 블록 내의 픽셀의 예측자를 획득한다. 그러나, 코딩 블록 내의 모든 픽셀이 동일한 모션 피쳐를 갖는 것은 아니다. 동일한 모션 정보를 사용하는 것은, 부정확한 모션 보상 예측을 야기할 수 있고, 결과적으로, 잔차 정보가 증가된다.
비디오 코딩 표준에서, 모션 추정은, 병진 모션 모델(translational motion model)에 기초하여 블록 매칭을 사용하는 것에 의해 일반적으로 수행되며, 블록 내의 모든 픽셀의 모션이 일관적이다는 것이 가정된다. 그러나, 실세계에서, 모션은 다양하고, 회전하는 오브젝트, 상이한 방향으로 회전하는 롤러코스터, 발사되는 불꽃 놀이, 및 영화에서의 어떤 특수 액션, 특히 UGC 시나리오에서의 모션 오브젝트와 같은 많은 비 병진(non-translational) 모션 오브젝트가 존재한다. 이들 오브젝트의 인코딩을 위해, 현재의 인코딩 표준에서의 병진 모션 모델에 기초한 블록 모션 보상 기술이 사용되는 경우, 인코딩 효율성이 크게 영향을 받는다. 따라서, 인코딩 효율성을 더욱 향상시키기 위해, 아핀 모션 모델과 같은 비 병진 모션 모델이 생성된다.
이것을 기반으로, 상이한 모션 모델에 기초하여, AMVP 모드는 병진 모션 모델 기반의 AMVP 모드 및 비 병진 모션 모델 기반의 AMVP 모드로 나누어질 수 있다. 병합 모드는 병진 모션 모델 기반의 병합 모드 및 비 병진 모션 모델 기반의 병합 모드로 나누어질 수 있다.
(2) 비 병진 모션 모델
비 병진 모션 모델 예측은, 인코더 측 및 디코더 측이 동일한 모션 모델을 사용하여 현재의 블록 내의 각각의 모션 보상 하위 단위(motion compensation subunit)의 모션 정보를 유도한다는 것을 나타내고, 모션 보상은 모션 보상 하위 단위의 모션 정보에 기초하여 수행되어 예측 블록을 획득하고, 그에 의해, 예측 효율을 향상시킨다. 일반적인 비 병진 모션 모델은 4 파라미터 아핀 모션 모델 및 6 파라미터 아핀 모션 모델을 포함한다.
본 출원의 이 실시형태에서의 모션 보상 하위 단위는, 그 사이즈가 N1×N2이고 특정한 방법을 사용하는 것에 의해 분할되는 픽셀 또는 픽셀 블록일 수 있는데, 여기서 N1 및 N2 둘 모두는 양의 정수이고, N1은 N2와 동일할 수 있거나, 또는 N2와 동일하지 않을 수 있다.
4 파라미터 아핀 모션 모델은 다음의 공식 (2)에서 나타내어진다:
Figure pct00018
4 파라미터 아핀 모션 모델은 두 개의 픽셀의 모션 벡터 및 현재의 블록의 좌측 상단 샘플을 기준으로 하는 두 개의 픽셀의 좌표를 사용하는 것에 의해 표현될 수 있고, 모션 모델 파라미터를 나타내기 위해 사용되는 픽셀은 제어 포인트로서 지칭된다. 좌측 상단 샘플 (0, 0) 및 우측 상단 샘플 (W, 0)이 제어 포인트로서 사용되는 경우, 현재의 블록의 좌측 상단 샘플 및 우측 상단 샘플 제어 포인트의 모션 벡터 (vx0, vy0) 및 (vx1, vy1)이 먼저 결정되고, 현재의 블록 내의 각각의 모션 보상 하위 단위의 모션 정보는 공식 (3)에 기초하여 획득되는데, 여기서 (x, y)는 현재의 블록의 좌측 상단 샘플을 기준으로 하는 모션 보상 하위 단위의 좌표이고, W는 현재의 블록의 폭이다.
Figure pct00019
6 파라미터 아핀 모션 모델은 다음의 공식 (4)에서 나타내어진다:
Figure pct00020
6 파라미터 아핀 모션 모델은, 세 개의 픽셀의 모션 벡터 및 현재의 블록의 좌측 상단 샘플을 기준으로 하는 세 개의 픽셀의 좌표를 사용하는 것에 의해 표현될 수 있다. 좌측 상단 샘플 (0, 0), 우측 상단 샘플 (W, 0), 및 좌측 하단 샘플 (0, H)이 제어 포인트로서 사용되는 경우, 현재의 블록의 좌측 상단 샘플, 우측 위쪽 정점(upper right vertex), 및 좌측 아래쪽 정점(lower left vertex) 제어포인트의 모션 벡터가 (vx0, vy0), (vx1, vy1), (vx2, vy2)로서 먼저 각각 결정되고, 그 다음, 현재의 블록 내의 각각의 모션 보상 하위 단위의 모션 정보는 공식 (5)에 기초하여 획득되는데, 여기서 (x, y)는 현재의 블록의 좌측 상단 샘플을 기준으로 하는 모션 보상 하위 단위의 좌표이고, W 및 H는, 각각, 현재의 블록의 폭 및 높이이다.
Figure pct00021
아핀 모션 모델을 사용하는 것에 의해 예측이 수행되는 코딩 블록이 아핀 코딩 블록으로서 지칭된다.
일반적으로, 아핀 코딩 블록의 제어 포인트의 모션 정보는 아핀 모션 모델 기반의 고급 모션 벡터 예측(Advanced Motion Vector Prediction; AMVP) 모드 또는 아핀 모션 모델 기반의 병합(Merge) 모드를 사용하는 것에 의해 획득될 수 있다.
구체적으로, 현재의 인코딩 블록의 제어 포인트의 모션 정보는, 상속된 제어 포인트 모션 벡터 예측 방법(inherited control point motion vector prediction method) 또는 구성된 제어 포인트 모션 벡터 예측 방법을 사용하는 것에 의해 획득될 수 있다.
(3) 상속된 제어 포인트 모션 벡터 예측 방법
상속된 제어 포인트 모션 벡터 예측 방법은 인접한 인코딩된 아핀 코딩 블록의 모션 모델을 사용하는 것에 의해 현재의 블록의 후보 제어 포인트 모션 벡터를 결정하는 것이다.
도 7에서 도시되는 현재의 블록이 예로서 사용된다. 현재의 블록 주변의 인접 위치 블록은, 아핀 코딩 블록의 제어 포인트 모션 정보를 획득하기 위해, 현재의 블록의 인접 위치 블록이 위치되는 아핀 코딩 블록을 찾도록, 예를 들면, A1 -> B1 -> B0 -> A0 -> B2의 명시된 순서대로 순회되고, 게다가, 병합 모드에서 사용될 현재의 블록의 제어 포인트 모션 벡터를 유도하기 위해, 또는 AMVP 모드에서 사용될 제어 포인트의 모션 벡터 예측자를 유도하기 위해, 아핀 코딩 블록의 제어 포인트 모션 정보를 사용하는 것에 의해 구성되는 모션 모델이 사용된다. A1 -> B1 -> B0 -> A0 -> B2는 단지 예에 불과하며, 다른 조합의 시퀀스도 또한 본 출원에 적용 가능하다는 것을 유의해야 한다. 또한, 인접 위치 블록은 A1, B1, B0, A0, 및 B2로 제한되지는 않는다.
인접 위치 블록은 한 픽셀일 수 있거나, 특정한 방법에 기초하여 분할되는 사전 설정된 사이즈의 픽셀 블록일 수 있는데, 예를 들면, 4×4 픽셀 블록일 수 있거나, 또는 4×2 픽셀 블록일 수 있거나, 또는 제한되지 않는 다른 사이즈를 갖는 픽셀 블록일 수 있다.
하기에서, A1은 다른 경우에서와 유사한 결정 프로세스를 설명하기 위한 한 예로서 사용된다.
도 7에서 도시되는 바와 같이, A1이 위치되는 코딩 블록이 4 파라미터 아핀 코딩 블록인 경우, 아핀 코딩 블록의 좌측 상단 샘플 (x4, y4)의 모션 벡터 (vx4, vy4) 및 우측 상단 샘플 (x5, y5)의 모션 벡터 (vx5, vy5)가 획득된다. 현재의 아핀 코딩 블록의 좌측 상단 샘플 (x0, y0)의 모션 벡터 (vx0, vy0)은 공식 (6)에 따라 계산되고, 현재의 아핀 코딩 블록의 우측 상단 샘플 (x1, y1)의 모션 벡터 (vx1, vy1)은 공식 (7)에 따라 계산된다.
Figure pct00022
A1이 위치되는 아핀 코딩 블록에 기초하여 획득되는 현재의 블록의 좌측 상단 샘플 (x0, y0)의 모션 벡터 (vx0, vy0) 및 우측 상단 샘플 (x1, y1)의 모션 벡터 (vx1, vy1)의 조합은 현재의 블록의 후보 제어 포인트 모션 벡터이다.
A1이 위치되는 코딩 블록이 6 파라미터 아핀 코딩 블록인 경우, 아핀 코딩 블록의 좌측 상단 샘플 (x4, y4)의 모션 벡터 (vx4, vy4), 우측 상단 샘플 (x5, y5)의 모션 벡터 (vx5, vy5), 및 좌측 하단 샘플 (x6, y6)의 모션 벡터 (vx6, vy6)이 획득된다. 현재의 블록의 좌측 상단 샘플 (x0, y0)의 모션 벡터 (vx0, vy0)은 공식 (8)에 따라 계산되고, 현재의 블록의 우측 상단 샘플 (x1, y1)의 모션 벡터 (vx1, vy1)은 공식 (9)에 따라 계산되고, 현재의 블록의 좌측 하단 샘플 (x2, y2)의 모션 벡터 (vx2, vy2)는 공식 (10)에 따라 계산된다.
Figure pct00023
A1이 위치되는 아핀 코딩 블록에 기초하여 획득되는 현재의 블록의 좌측 상단 샘플 (x0, y0)의 모션 벡터 (vx0, vy0), 우측 상단 샘플 (x1, y1)의 모션 벡터 (vx1, vy1), 및 현재의 블록의 좌측 하단 샘플 (x2, y2)의 모션 벡터 (vx2, vy2)의 조합은 현재의 블록의 후보 제어 포인트 모션 벡터이다.
다른 모션 모델, 다른 후보 위치, 및 또 다른 검색 및 순회 시퀀스도 또한 본 출원에 적용될 수 있고, 세부 사항은 본 출원의 이 실시형태에서 설명되지 않는다는 것을 유의해야 한다.
다른 제어 포인트를 사용하는 것에 의해 인접한 그리고 현재의 코딩 블록의 모션 모델을 표현하기 위한 방법도 또한 본 출원에 적용될 수 있으며, 세부 사항은 여기서는 설명되지 않는다는 것을 유의해야 한다.
(4) 구성된 제어 포인트 모션 벡터(구성된 제어 포인트 모션 벡터) 예측 방법:
구성된 제어 포인트 모션 벡터 예측 방법은, 인접한 인코딩된 블록이 아핀 코딩 블록인지의 여부를 고려할 필요 없이, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터로서 현재의 블록의 제어 포인트에 인접한 인코딩된 블록의 모션 벡터를 결합하는 것이다.
현재의 블록의 좌측 상단 샘플 및 우측 상단 샘플의 모션 벡터는, 현재의 코딩 블록에 인접한 인코딩된 블록의 모션 정보를 사용하는 것에 의해 결정된다. 구성된 제어 포인트 모션 벡터 예측 방법은 도 8에서 도시되는 예를 사용하는 것에 의해 설명된다. 도 8은 단지 예에 불과하다는 것을 유의해야 한다.
도 8에서 도시되는 바와 같이, 좌측 상단 샘플에 인접한 인코딩된 블록(A2, B2, 및 B3)의 모션 벡터는 현재의 블록의 좌측 상단 샘플의 모션 벡터의 후보 모션 벡터로서 사용된다. 우측 상단 샘플에 인접한 인코딩된 블록(B1 및 B0)의 모션 벡터는 현재의 블록의 우측 상단 샘플의 모션 벡터의 후보 모션 벡터로서 사용된다. 좌측 상단 샘플 및 우측 상단 샘플의 후보 모션 벡터는 결합되어 복수의 2 튜플(2-tuple)을 형성한다. 2 튜플 내에 포함되는 두 개의 인코딩된 블록의 모션 벡터는 현재의 블록의 후보 제어 포인트 모션 벡터로서 사용될 수 있다. 다음의 공식 (11A)를 참조한다:
Figure pct00024
여기서 vA2는 A2의 모션 벡터를 나타내고, vB1은 B1의 모션 벡터를 나타내고, vB0은 B0의 모션 벡터를 나타내고, vB2는 B2의 모션 벡터를 나타내고, 그리고 vB3은 B3의 모션 벡터를 나타낸다.
도 8에서 도시되는 바와 같이, 좌측 상단 샘플에 인접한 인코딩된 블록(A2, B2, 및 B3)의 모션 벡터는 현재의 블록의 좌측 상단 샘플의 모션 벡터의 후보 모션 벡터로서 사용된다. 우측 상단 샘플에 인접한 인코딩된 블록(B1 및 B0)의 모션 벡터는 현재의 블록의 우측 상단 샘플의 모션 벡터의 후보 모션 벡터로서 사용된다. 좌측 상단 샘플에 인접한 인코딩된 블록(A0 및 A1)의 모션 벡터는 현재의 블록의 좌측 하단 샘플의 모션 벡터의 후보 모션 벡터로서 사용된다. 좌측 상단 샘플, 우측 상단 샘플, 및 좌측 하단 샘플의 후보 모션 벡터는 결합되어 삼중항(triplet)을 형성한다. 삼중항 내에 포함되는 세 개의 인코딩된 블록의 모션 벡터는, 다음의 공식 (11B) 및 (11C)에서 나타내어지는 바와 같이, 현재의 블록의 후보 제어 포인트 모션 벡터로서 사용될 수 있다:
Figure pct00025
여기서 vA2는 A2의 모션 벡터를 나타내고, vB1은 B1의 모션 벡터를 나타내고, vB0은 B0의 모션 벡터를 나타내고, vB2는 B2의 모션 벡터를 나타내고, vB3은 B3의 모션 벡터를 나타내고, vA0은 A0의 모션 벡터를 나타내고, 그리고 vA1은 A1의 모션 벡터를 나타낸다.
제어 포인트 모션 벡터를 결합하기 위한 다른 방법도 또한 본 출원에 적용될 수 있으며, 세부 사항은 여기서는 설명되지 않는다는 것을 유의해야 한다.
다른 제어 포인트를 사용하는 것에 의해 인접한 그리고 현재의 코딩 블록의 모션 모델을 표현하기 위한 방법도 또한 본 출원에 적용될 수 있으며, 세부 사항은 여기서는 설명되지 않는다는 것을 유의해야 한다.
(5) 아핀 모션 모델 기반의 고급 모션 벡터 예측 모드(아핀 AMVP 모드):
1. 후보 모션 벡터 목록의 구성
아핀 모션 모델 기반의 AMVP 모드의 후보 모션 벡터 목록은, 상속된 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법을 사용하는 것에 의해 구성된다. 본 출원의 이 실시형태에서, 아핀 모션 모델 기반의 AMVP 모드의 후보 모션 벡터 목록은 제어 포인트 모션 벡터 예측자 후보 목록(제어 포인트 모션 벡터 예측자 후보 목록)으로서 지칭될 수 있고, 각각의 제어 포인트의 모션 벡터 예측자는 두 개의 (4 파라미터 아핀 모션 모델) 제어 포인트의 모션 벡터 또는 세 개의 (6 파라미터 아핀 모션 모델) 제어 포인트의 모션 벡터를 포함한다.
옵션 사항으로, 제어 포인트 모션 벡터 예측자 후보 목록은 특정한 규칙에 따라 프루닝되고 정렬되며, 특정한 수량에 도달하기 위해 잘려질 수 있거나 또는 채워질 수 있다.
2. 최적의 제어 포인트 모션 벡터 예측자의 결정
인코더 측 상에서, 현재의 코딩 블록 내의 각각의 모션 보상 하위 단위의 모션 벡터는 공식 (3) 또는 (5) 및 제어 포인트 모션 벡터 예측자 후보 목록 내의 각각의 제어 포인트 모션 벡터 예측자에 따라 획득되고, 아핀 모션 모델을 사용하는 것에 의한 모션 보상을 수행하기 위해, 각각의 모션 보상 하위 단위의 모션 벡터가 가리키는 참조 프레임 내의 대응하는 위치의 픽셀 값이 모션 보상 하위 단위의 예측자로서 획득된다. 현재의 코딩 블록 내의 모든 픽셀의 예측자와 원래의 값 사이의 차이의 평균 값이 계산되고, 최소 평균 값에 대응하는 제어 포인트 모션 벡터 예측자가 최적의 제어 포인트 모션 벡터 예측자로서 선택되고 현재의 코딩 블록 내의 두 개 또는 세 개의 제어 포인트의 모션 벡터 예측자로서 사용된다. 제어 포인트 모션 벡터 예측자 후보 목록 내의 제어 포인트 모션 벡터 예측자의 위치를 나타내는 인덱스 번호는 비트스트림으로 인코딩되고 디코더로 전송된다.
디코더 측 상에서, 인덱스 번호가 파싱되고, 인덱스 번호에 기초하여 제어 포인트 모션 벡터 예측자 후보 목록으로부터 제어 포인트 모션 벡터 예측자(control point motion vectors predictor; CPMVP)가 결정된다.
3. 제어 포인트 모션 벡터의 결정
인코더 측 상에서, 제어 포인트 모션 벡터 예측자를 제어 포인트 모션 벡터(control point motion vector; CPMV)를 획득하기 위한 검색 시작 포인트로서 사용하는 것에 의해 특정한 검색 범위 내에서 모션 검색이 수행된다. 제어 포인트 모션 벡터와 제어 포인트 모션 벡터 예측자 사이의 차이(제어 포인트 모션 벡터 차이; CPMVD)가 디코더 측으로 전송된다.
디코더 측 상에서, 제어 포인트 모션 벡터 차이가 파싱되어 제어 포인트 모션 벡터 예측자에 더해져서 제어 포인트 모션 벡터를 획득한다.
(6) 아핀 모션 모델 기반의 아핀 병합 모드(Affine merge mode):
상속된 제어 포인트 모션 벡터 예측 방법 및/또는 구성된 제어 포인트 모션 벡터 예측 방법을 사용하는 것에 의해 제어 포인트 모션 벡터 병합 후보 목록(control point motion vectors merge candidate list)이 구성된다.
옵션 사항으로, 제어 포인트 모션 벡터 병합 후보 목록은 특정한 규칙에 따라 프루닝되고 정렬되며, 특정한 수량에 도달하기 위해 잘려질 수 있거나 또는 채워질 수 있다.
인코더 측 상에서, 각각의 모션 보상 하위 단위의 모션 벡터가 가리키는 참조 프레임 내의 위치의 픽셀 값을 획득하기 위해, 공식 (3) 또는 (5) 및 병합 후보 목록 내의 각각의 제어 포인트 모션 벡터에 따라 현재의 코딩 블록 내의 각각의 모션 보상 하위 단위(특정한 방법을 사용하는 것에 의한 분할을 통해 획득되는 N1×N2의 사이즈를 갖는 픽셀 또는 픽셀 블록)의 모션 벡터가 획득되고; 그리고 픽셀 값은 모션 보상 하위 단위의 예측자로 사용되어 아핀 모션 보상을 수행한다. 현재의 코딩 블록 내의 모든 픽셀의 예측자 및 원래의 값 사이의 차이의 평균 값이 계산되고, 그 차이의 최소 평균 값에 대응하는 제어 포인트 모션 벡터가 현재의 코딩 블록 내의 두 개 또는 세 개의 제어 포인트의 모션 벡터로서 선택된다. 후보 목록 내의 제어 포인트 모션 벡터의 위치를 나타내는 인덱스 번호가 비트스트림으로 인코딩되어 디코더로 전송된다.
디코더 측 상에서, 인덱스 번호는 파싱되고, 제어 포인트 모션 벡터(control point motion vector; CPMV)는 인덱스 번호에 기초하여 제어 포인트 모션 벡터 병합 후보 목록으로부터 결정된다.
(7) 적응형 모션 벡터 해상도(Adaptive motion vector resolution; AMVR) 모드:
AMVR 모드에서, 모션 벡터 차이(Motion vector difference; MVD)는 1/16 정확도, 1/4 정확도, 또는 정수 픽셀 정확도로 인코딩될 수 있다. AMVR 인덱스(index) 값을 사용하는 것에 의해 상이한 해상도가 표현될 수 있다. 예를 들면, 인덱스 = 0이고 대응하는 MVD 해상도는 1/16이고; 인덱스 = 1이고 대응하는 MVD 해상도는 1/4이고; 그리고 인덱스 = 2이고 대응하는 MVD 해상도는 정수 픽셀 정확도이다. 옵션 사항으로, AMVR 인덱스와 해상도 값 사이의 대응성은 또한 다른 방식일 수 있다. 예를 들면, 인덱스 = 0이고 대응하는 MVD 해상도는 1/4이다. 본 출원에서 세부 사항은 설명되지 않는다. 하기에서, 인덱스 = 0이고 대응하는 MVD 해상도가 1/16이고, 인덱스 = 1이고 대응하는 MVD 해상도가 1/4이며, 인덱스 = 2이고 대응하는 MVD 해상도가 정수 픽셀 정확도인 예가 설명을 위해 사용된다.
또한, MV의 이용 가능한 값 범위를 공동으로 표현하기 위해, MV 해상도 값 및 MV 해상도 값의 점유된 비트 깊이(bit-depth)가 사용될 수 있다. MV 해상도가 R이고, 점유된 비트 깊이가 S 비트인 경우, MV의 최대 값은 maxMV = R * 2s-1 - 1이고 MV의 최소 값은 minMV = -R * 2s-1이다. 예를 들면,
MV 해상도가 1/16이고, 점유된 비트 깊이가 16 비트인 경우, MV에 의해 표현될 수 있는 범위는 (-211, 211-1)이다.
MV 해상도가 1/4이고, 점유된 비트 깊이가 16 비트인 경우, MV에 의해 표현될 수 있는 범위는 (-213, 213-1)이다.
MV 해상도가 1/16이고, 점유된 비트 깊이가 18 비트인 경우, MV에 의해 표현될 수 있는 범위는 (-213, 213-1)이다.
AMVR 모드가 현재의 블록에 대해 사용되는 경우, CPMVD의 해상도는 1/16일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있거나; 또는 CPMVD의 해상도는 1/4일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있거나; 또는 CPMVD의 해상도는 정수 픽셀 정확도일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있다.
따라서, 모션 보상 및 모션 정보 저장 프로세스에서의 모션 정보의 해상도는 상이할 수 있다. 아핀 변환 블록의 모션 보상 및 모션 정보(후속하는 인코딩 프로시져의 모션 정보) 저장 프로세스를 위해, 본 출원은 아핀 코딩 블록의 모션 정보 저장 및 모션 보상에서 해상도 변환 방법을 제공한다. 모션 보상 및 저장된 모션 정보가 해상도의 관점에서 동일하면, 동일한 모션 벡터 해상도가 사용되고; 그리고 해상도의 관점에서 모션 보상이 저장된 모션 정보와 상이한 경우, 모션 보상의 모션 벡터 해상도는, 저장을 위해, 저장된 모션 벡터의 해상도로서 양자화된다.
이하에서는, 첨부의 도면을 참조하여 본 출원의 실시형태를 설명한다. 도 9는 본 출원의 실시형태에 따른 인터 예측 방법의 플로우차트이다. 프로세싱될 픽쳐 블록이 현재의 아핀 코딩 블록이다는 것이 가정된다. 도 9에서 도시되는 바와 같이, 방법은 다음의 단계를 포함할 수 있다.
S901. 현재의 아핀 코딩 블록의 예측 모드가 아핀 모션 모델 기반의 AMVP 모드라고 판정한다.
현재의 아핀 코딩 블록의 인터 예측 모드를 판정하기 위한 방법은 신택스 엘리먼트를 파싱하는 것에 의해 획득될 수 있다. 특정한 판정 방법은 본 출원에서 구체적으로 제한되지는 않는다. 현재의 아핀 코딩 블록의 인터 예측 모드가 아핀 모션 모델 기반의 AMVP 모드라고 판정되면, 다음의 단계가 수행된다.
S902. 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터를 획득한다.
현재의 아핀 코딩 블록의 제어 포인트 모션 정보를 획득하기 위한 방법에 대해서는, 전술한 "아핀 모션 모델 기반의 AMVP 모드" 에서 현재의 아핀 코딩 블록의 제어 포인트 모션 정보를 획득하는 설명을 참조한다. 세부 사항은 여기서는 설명되지 않는다.
예를 들면, 디코더 측 상에서, 제어 포인트 모션 벡터 차이(CPMVD) 및 제어 포인트 모션 벡터 예측자의 인덱스가 비트스트림을 파싱하는 것에 의해 획득될 수 있고, 제어 포인트 모션 벡터 예측자(CPMVP)는, 제어 포인트 모션 벡터 예측자의 인덱스에 기초하여 제어 포인트 모션 벡터 예측자 후보 목록으로부터 결정된다. 예를 들면, CPMVP는, 저장 단위의 인접한 인코딩된 블록의 모션 벡터를 획득하는 것에 의해 획득될 수 있고, CPMVD 및 CPMVP는 함께 가산되어 제어 포인트 모션 벡터(CPMV)를 획득한다.
그러나, 저장 공간을 절약하기 위해, 제어 포인트 모션 벡터 예측자 후보 목록은 일반적으로 저해상도를 가지고 저장된다. 예를 들면, CPMVP의 해상도는 1/4 픽셀 정확도일 수 있고, CPMVP의 비트 깊이는 16 비트일 수 있다.
AMVR 모드가 현재의 아핀 코딩 블록에 대해 사용되는 경우, CPMVD의 해상도는 1/16 픽셀 정확도일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있거나; 또는 CPMVD의 해상도는 1/4 픽셀 정확도일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있거나; 또는 CPMVD의 해상도는 정수 픽셀 정확도일 수 있고, CPMVD의 비트 깊이는 16 비트일 수 있다.
저해상도 CPMVP 및 CPMVD를 사용하는 것에 의해 CPMV가 여전히 결정되는 경우, 현재의 아핀 코딩 블록의 인터 예측 정확도는 상대적으로 낮다. 따라서, 현재의 아핀 코딩 블록의 인터 예측 정확도를 향상시키기 위해, CPMV는 CPMVP의 해상도 및 CPMVD의 해상도를 향상시키는 것에 의해 결정될 수 있다. 이하에서는, CPMVP의 해상도 및 CPMVD의 해상도를 향상시키는 것에 의해 CPMV를 결정하는 방법을 상세하게 설명한다.
먼저, CPMVD의 해상도는 사전 설정된 제1 모션 벡터 해상도와 비교되고, CPMVP의 해상도는 제1 모션 벡터 해상도와 비교된다. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않고, CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는, CPMVD 및 제1 시프트 값에 기초하여 획득될 수 있다. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하고, CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는, CPMVP 및 제2 시프트 값에 기초하여 획득될 수 있다. CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않고, CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는, CPMVD, 제1 시프트 값, CPMVP, 및 제2 시프트 값에 기초하여 획득될 수 있다.
예를 들면, 다음의 공식 (12)가 사용되어 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터를 획득할 수 있다:
Figure pct00026
CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD' = CPMVD << mvrShift1이다.
CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVD' = CPMVD이다. CPMVD의 해상도는 조정될 필요가 없다는 것이 이해될 수 있다.
CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP' = CPMVP << mvrShift2이다.
CPMVP의 해상도가 제1 모션 벡터 해상도와 동일하면, CPMVP' = CPMVP이다. CPMVP의 해상도는 조정될 필요가 없다는 것이 이해될 수 있다.
CPMV는 제어 포인트 모션 벡터를 나타내고, mvrShift1은 제1 시프트 값을 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
제1 시프트 값은 제1 모션 벡터 해상도 및 CPMVD의 해상도에 기초하여 결정될 수 있다는 것을 유의해야 한다. 예를 들면, 제1 모션 벡터 해상도는 1/2m이고, CPMVD의 해상도는 1/2n이며, 제1 시프트 값은 m으로부터 n을 감산하는 것에 의해 획득되는 차이일 수 있다. 유사하게, 제2 시프트 값은 제1 모션 벡터 해상도 및 CPMVP의 해상도에 기초하여 결정될 수 있다. 예를 들면, 제1 모션 벡터 해상도는 1/2m이고, CPMVP의 해상도는 1/2n이고, 제2 시프트 값은 m으로부터 n을 감산하는 것에 의해 획득되는 차이일 수 있다.
제1 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/16(1/24) 픽셀 정확도이고 CPMVD의 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 2이고; 그리고 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVD의 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 4이다.
제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 0이고; 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 2이고; 그리고 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 4이다.
제1 시프트 값이 0이거나 또는 제2 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
CPMVD의 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 0일 수 있고, 제2 시프트 값은 2일 수 있고, 그리고 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 0) + (CPMVP << 2)이다.
CPMVD의 해상도가 1/4 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2일 수 있고, 제2 시프트 값은 2일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 2) + (CPMVP << 2)이다.
CPMVD의 해상도가 정수 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 4일 수 있고, 제2 시프트 값은 2일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 4) + (CPMVP << 2)이다.
제2 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/32(1/25) 픽셀 정확도이고, CPMVD의 해상도가 1/16(1/24) 픽셀 정확도이면, 제1 시프트 값은 1이고; 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, CPMVD의 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 3이고; 그리고 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, CPMVD의 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 5이다.
제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 1이고; 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 3이고; 그리고 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 5이다.
예를 들면, 제1 모션 벡터 해상도가 1/32 픽셀 정확도이면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
CPMVD의 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 1일 수 있고, 제2 시프트 값은 3일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 1) + (CPMVP << 3)이다.
CPMVD의 해상도가 1/4 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 3일 수 있고, 제2 시프트 값은 3일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 3) + (CPMVP << 3)이다.
CPMVD의 해상도가 정수 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 5일 수 있고, 제2 시프트 값은 3일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 5) + (CPMVP << 3)이다.
제3 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/64(1/26) 픽셀 정확도이고, CPMVD의 해상도가 1/16(1/24) 픽셀 정확도이면, 제1 시프트 값은 2이고; 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, CPMVD의 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 4이고; 그리고 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, CPMVD의 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 6이다.
제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, CPMVP의 해상도가 1/16 픽셀 정확도이면, 제2 시프트 값은 2이고; 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 4이고; 그리고 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, CPMVP의 해상도가 정수 픽셀 정확도이면, 제2 시프트 값은 6이다.
예를 들면, 제1 모션 벡터 해상도가 1/64 픽셀 정확도이면, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
CPMVD의 해상도가 1/16 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2일 수 있고, 제2 시프트 값은 4일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 2) + (CPMVP << 4)이다.
CPMVD의 해상도가 1/4 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 4일 수 있고, 제2 시프트 값은 4일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 4) + (CPMVP << 4)이다.
CPMVD의 해상도가 정수 픽셀 정확도이고, CPMVP의 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 6일 수 있고, 제2 시프트 값은 4일 수 있으며, 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 CPMV = (CPMVD << 6) + (CPMVP << 4)이다.
게다가, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터는 클리핑될 수 있다.
예를 들면, 제어 포인트 모션 벡터의 비트 깊이는 제1 모션 벡터 비트 깊이와 비교된다. 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 제어 포인트 모션 벡터는 클리핑된다.
예를 들면, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 다음의 공식 (13)이 사용되어 제어 포인트 모션 벡터를 클리핑할 수 있다.
Figure pct00027
여기서 (vx, vy)는 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터이고, Clip3의 정의는 간격 [x, y] 내에서 z 값을 클리핑하는 것을 의미한다:
Figure pct00028
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제1 모션 벡터 비트 깊이가 18 비트이며, MV에 의해 표현될 수 있는 범위가 (-213, 213-1)이면, 제어 포인트 모션 벡터의 값 범위를 (-213, 213-1)가 되는 것을 가능하게 하기 위해, 제어 포인트 모션 벡터의 비트 깊이는, 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 클리핑될 수 있다, 즉, 18 비트가 공식 (13)에 대입된다.
S903. 제어 포인트 모션 벡터에 기초하여 현재의 아핀 코딩 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도한다.
현재의 아핀 코딩 블록 내의 각각의 모션 보상 단위의 모션 정보는 제어 포인트 모션 정보에 기초하여 그리고 아핀 변환 모델을 사용하는 것에 의해 결정된다.
현재의 아핀 코딩 블록의 각각의 모션 보상 단위에 대해, 모션 보상 단위 내의 모든 픽셀의 모션 정보를 나타내기 위해 모션 보상 단위 내의 사전 설정된 위치에 있는 픽셀의 모션 정보가 사용될 수 있다. 모션 보상 단위의 사이즈가 M×N이다는 것이 가정되면, 사전 설정된 위치에 있는 픽셀은 중심점 (M/2, N/2), 좌측 상단 샘플 (0, 0), 우측 상단 샘플 (M-1, 0), 또는 모션 보상 단위의 다른 위치에 있는 픽셀일 수 있다. 이하에서는, 설명을 위한 한 예로서 모션 보상 단위의 중심점을 사용한다.
모션 보상 단위의 사이즈 M×N은 동일한 규칙을 사용하는 것에 의해 결정되며 인코더 및 디코더에 의해 합의되는 사이즈이며, 4×4, 8×8, 또는 등등으로서 고정될 수 있거나, 또는 제어 포인트 모션 벡터 차이, 모션 벡터 해상도, 및 제어 포인트 사이의 거리에 기초하여 결정될 수 있다.
현재의 아핀 코딩 블록의 모션 보상 단위의 사이즈는 다른 방법을 사용하는 것에 의해 결정될 수 있고, 본 출원에서는 세부 사항이 설명되지 않는다는 것을 유의해야 한다.
현재의 아핀 코딩 블록의 좌측 상단 샘플을 기준으로 하는 모션 보상 단위의 중심점의 좌표는 공식 (14)에 따라 계산될 수 있다.
Figure pct00029
여기서 i는 수평 방향에서 (좌측에서 우측으로) i 번째 모션 보상 단위이고, j는 수직 방향에서 (위에서 아래로) j 번째 모션 보상 단위이고, (x( i,j ), y( i,j ))는 현재의 아핀 코딩 블록의 좌측 상단 샘플을 기준으로 하는 (i,j) 번째 모션 보상 단위의 중심점의 좌표를 나타낸다. 그 다음, (x( i,j ), y( i,j ))가 공식 (15)에 대입되어 각각의 모션 보상 단위의 중심점의 모션 정보를 획득하고, 모션 정보는 모션 보상 단위 내의 모든 픽셀의 모션 정보(vx( i,j ), vy( i,j ))로서 사용된다.
Figure pct00030
특정한 구현 동작이 다음의 프로시져에 기초하여 수행될 수 있는데, 여기서 Log2는 2의 대수를 취하는 함수이고, "<<"는 좌측 시프트를 나타내고, ">>"는 우측 시프트를 나타낸다:
Figure pct00031
현재의 아핀 디코딩 블록이 6 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00032
현재의 아핀 디코딩 블록이 4 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00033
그 다음, 모션 보상 모션 벡터가 다음의 공식에 기초하여 계산될 수 있다:
Figure pct00034
라운드 함수의 연산은 다음과 같다: 임의의 입력 K 및 mvShift에 대해, 출력 K는 다음의 방식으로 획득된다:
Figure pct00035
획득된 모션 벡터 (vx, vy)는, 그 다음, 모션 벡터가 18 비트의 다이나믹 레인지를 초과하지 않도록, 클리핑된다.
예를 들면, CPMV의 해상도가 1/4 픽셀 정확도이면, mvShift는 5로 설정되어, 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이다는 것을 획득할 수 있다. CPMV의 해상도가 1/16 픽셀 정확도이면, mvShift는 7로 설정되어, 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이다는 것을 획득할 수 있다. CPMV의 해상도가 1/16 픽셀 정확도이면, mvShift는 9로 설정되어, 모션 보상 단위의 모션 벡터 해상도가 1/4 픽셀 정확도이다는 것을 획득할 수 있다.
예를 들면, 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터의 비트 깊이가 18 비트이면, mvShift는 7로 설정될 수 있고, 그 결과 모션 보상 단위의 모션 벡터 해상도는 1/16 픽셀 정확도이고, 모션 보상 단위의 모션 벡터 비트 깊이는 18 비트이다.
S904. 각각의 모션 보상 단위의 모션 벡터에 기초하여 현재의 아핀 코딩 블록의 재구성된 블록을 획득한다.
예를 들면, 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상이 수행되어, 현재의 아핀 코딩 블록의 예측 블록을 획득한다. 현재의 아핀 인코딩 블록의 각각의 모션 보상 단위에 대해, S903에서 획득되는 모션 정보를 사용하는 것에 의해 모션 보상 예측이 수행되어, 각각의 모션 보상 단위의 예측자를 획득한다. 그 다음, 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여, 현재의 아핀 코딩 블록의 재구성된 블록이 획득된다.
옵션 사항으로, 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하거나; 또는 예측 블록은 각각의 모션 보상 단위의 모션 벡터에 기초하여 업데이트되고, 업데이트된 예측 블록 및 현재의 아핀 코딩 블록의 잔차 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하거나; 또는 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하고, 각각의 모션 보상 단위의 모션 벡터에 기초하여 재구성된 블록에 대해 필터링 프로세싱이 수행되거나; 또는 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하고, 각각의 모션 보상 단위의 모션 벡터 및 재구성된 블록이 후속하는 현재의 아핀 코딩 블록의 예측 정보로서 사용된다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도, 예를 들면, 1/4 픽셀 정확도이다는 것이 S903에 기초하여 획득되면, S905는 수행될 필요가 없을 수 있다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도, 예를 들면, 1/4 픽셀 정확도가 아니다는 것이 S903에 기초하여 획득되면, S905는 수행될 필요가 있다.
S905. 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱한다.
후속하는 디코딩 프로시져, 예를 들면, 디블록킹 필터, 중첩 블록 모션 보상, 및 후속하는 코딩 블록의 모션 정보 유도에서, 현재의 아핀 코딩 블록의 모션 정보가 사용될 필요가 있다. 따라서, S903에서 획득되는 모션 보상 단위의 모션 정보는 저장될 필요가 있다.
일반적으로 모션 정보 저장 단위의 사이즈는 4×4이고, 모션 보상 단위 내의 각각의 4×4 저장 단위의 모션 정보는 모션 보상 단위의 모션 정보로서 설정된다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도와 상이한 경우, 모션 보상 단위의 모션 벡터는 저장을 위한 저장 단위의 모션 벡터 해상도로서 양자화될 필요가 있다는 것을 유의해야 한다. 예를 들면:
모션 보상 단위의 프로세싱된 모션 벡터를 획득하기 위해 다음의 공식 (16)이 사용될 수 있다.
Figure pct00036
여기서 MCUMV'은 모션 보상 단위의 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift3은 제3 시프트 값을 나타낸다.
제3 시프트 값은 MCUMV의 해상도 및 제2 모션 벡터 해상도에 기초하여 결정될 수 있다는 것을 유의해야 한다. 예를 들면, 제2 모션 벡터 해상도는 1/2k이고, MCUMV의 해상도는 1/2n이며, 제3 시프트 값은 n에서 k를 감산한 이후에 획득되는 차이일 수 있다.
제1 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4(1/22) 픽셀 정확도이고, MCUMV의 해상도가 1/16(1/24) 픽셀 정확도이면, 제3 시프트 값은 2이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 2)이다.
제2 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32(1/25) 픽셀 정확도이면, 제3 시프트 값은 3이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 3)이다.
제3 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/64(1/26) 픽셀 정확도이면, 제3 시프트 값은 4이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 4)이다.
특히, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제3 시프트 값은 0이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = MCUMV이다. 모션 보상 단위의 모션 벡터에 대해 픽셀 정확도 감소 프로세싱을 수행하는 것이 불필요하다는 것이 이해될 수 있다.
옵션 사항으로, 모션 보상 단위의 프로세싱된 모션 벡터 해상도는, 제2 모션 벡터 해상도를 충족하도록, 공식 (15)에 따라 직접적으로 유도될 수 있다. 대안적으로, S903에서 획득되는 모션 보상 단위의 모션 벡터 해상도는, 모션 보상 단위의 프로세싱된 모션 벡터가 제2 모션 벡터 해상도를 충족하도록, 직접적으로 양자화될 수 있다. 예를 들면, 양자화 방법은 S903에서의 라운드 함수이다. 예를 들면, 모션 보상 단위의 모션 벡터 해상도는 1/16 픽셀 정확도이고, 모션 보상 단위의 프로세싱된 모션 벡터 해상도는 1/4 픽셀 정확도이고, mvShift는 2로 설정될 수 있다.
게다가, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이는 클리핑될 수 있다.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터는 클리핑된다. 세부 사항에 대해서는, 공식 (13)의 설명을 참조하고, 세부 사항은 설명되지 않는다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, 제2 모션 벡터 비트 깊이가 16 비트이며, MV에 의해 표현될 수 있는 범위가 (-211, 211-1)이면, 모션 보상 단위의 프로세싱된 모션 벡터의 값 범위가 (-211, 211-1)가 되는 것을 가능하게 하기 위해, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이는 클리핑될 수 있다, 즉, 16 비트가 공식 (13)에 대입된다.
제2 모션 벡터 해상도는 저장 단위의 모션 벡터 해상도일 수 있다는 것을 유의해야 한다. CPMVP의 해상도는 저장 단위의 모션 벡터 해상도와 동일할 수 있다. 제2 모션 벡터 비트 깊이는 저장 단위의 모션 벡터 비트 깊이일 수 있다. CPMVP의 비트 깊이는 저장 단위의 비트 깊이와 동일할 수 있다.
S906. 모션 보상 단위의 프로세싱된 모션 벡터를 저장한다.
본 출원의 이 실시형태에서 제공되는 인터 예측 방법의 단계의 시퀀스는 적절하게 조정될 수 있고, 단계는 또한 상황에 기초하여 상응하게 증가 또는 감소될 수 있다는 것을 유의해야 한다. 예를 들면, S904는 시퀀스의 관점에서 S905 및 S906과 상호 교환될 수 있다, 즉, 모션 보상 단위의 모션 벡터 해상도는 사전 설정된 제2 모션 벡터 해상도를 충족하도록 먼저 프로세싱될 수 있고, 및/또는 모션 보상 단위의 모션 벡터 비트 깊이는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 프로세싱되고, 모션 보상 단위의 프로세싱된 모션 벡터는 저장되고, 그 다음, 현재의 아핀 코딩 블록의 재구성된 블록은 각각의 모션 보상 단위의 모션 벡터에 기초하여 획득된다. 본 출원에서 개시되는 기술적 범위 내에서 기술 분야의 숙련된 자에 의해 용이하게 파악될 수 있는 임의의 방법은, 본 출원의 보호 범위 내에 속할 것이다. 따라서, 세부 사항은 다시 설명되지 않는다.
본 출원의 실시형태 1은 아핀 AMVP 모드에서 해상도 변경 프로세스를 제공한다. 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키고 모션 보상을 수행하는 것에 의해, 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도가 효과적으로 향상될 수 있다.
도 10은 본 출원의 실시형태에 따른 인터 예측 방법의 플로우차트이다. 프로세싱될 픽쳐 블록이 현재의 아핀 코딩 블록이다는 것이 가정된다. 도 10에서 도시되는 바와, 방법은 다음의 단계를 포함할 수 있다.
S1001. 현재의 아핀 코딩 블록의 예측 모드가 아핀 모션 모델 기반의 병합 모드라고 판정한다.
현재의 아핀 코딩 블록의 인터 예측 모드를 판정하기 위한 방법은 신택스 엘리먼트를 파싱하는 것에 의해 획득될 수 있다. 특정한 판정 방법은 본 출원에서 구체적으로 제한되지는 않는다. 현재의 아핀 코딩 블록의 인터 예측 모드가 아핀 모션 모델 기반의 병합 모드라고 판정되면, 다음의 단계가 수행된다.
S1002. 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터를 획득한다.
현재의 아핀 코딩 블록의 제어 포인트 모션 정보를 획득하기 위한 방법에 대해서는, 전술한 "아핀 병합 모드(Affine merge mode))"에서 현재의 아핀 코딩 블록의 제어 포인트 모션 정보를 획득하는 설명을 참조한다. 세부 사항은 여기서는 설명되지 않는다.
S1003. 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 조정한다.
제어 포인트 모션 벡터는 상속된 모션 벡터 예측 방법 또는 구성된 모션 벡터 예측 방법을 사용하는 것에 의해 획득될 수 있다. 따라서, 제어 포인트 모션 벡터의 제어 포인트 모션 벡터 해상도 및 비트 깊이는 현재의 아핀 코딩 블록의 인접한 아핀 단위에 기초하여 획득될 수 있다. 인접 블록의 모션 벡터 해상도 및 비트 깊이는 저장 단위의 모션 정보를 판독하는 것에 의해 획득될 수 있다. 저장 공간을 절약하기 위해, 저장 단위의 모션 정보는 저해상도를 가지고 저장된다. 예를 들면, 저장 단위의 모션 벡터 해상도는 1/4 픽셀 정확도이고, 저장 단위의 모션 벡터 비트 깊이는 16 비트이다. 제어 포인트 모션 벡터 해상도는 1/4 픽셀 정확도이고, 제어 포인트 모션 벡터의 비트 깊이는 16 비트이다.
예측이 저해상도 CPMV를 사용하는 것에 의해 여전히 수행되는 경우, 현재의 아핀 코딩 블록의 인터 예측 정확도는 상대적으로 낮다. 따라서, CPMV의 해상도를 향상시키는 것에 의해, 현재의 아핀 코딩 블록의 인터 예측 정확도는 향상될 수 있다. 이하에서는, CPMV의 해상도를 향상시키는 방법을 상세하게 설명한다.
제어 포인트 모션 벡터 해상도는 사전 설정된 제1 모션 벡터 해상도와 비교된다. 제어 포인트 모션 벡터 해상도가 제1 모션 벡터 해상도와 동일하지 않으면, 제어 포인트 모션 벡터는, 조정된 제어 포인트 모션 벡터가 제1 모션 벡터 해상도를 충족하도록, 제어 포인트 모션 벡터 및 제1 시프트 값에 기초하여 조정되어, 조정된 제어 포인트 모션 벡터를 획득할 수 있다.
방식 1: 조정된 제어 포인트 모션 벡터는 다음의 공식 (17)에 따라 획득될 수 있다.
Figure pct00037
여기서 CPMV는 제어 포인트 모션 벡터를 나타내고 CPMV'은 조정된 제어 포인트 모션 벡터를 나타내며, mvrShift1은 제1 시프트 값을 나타낸다.
제1 시프트 값은 제1 모션 벡터 해상도 및 CPMV의 해상도에 기초하여 결정될 수 있다는 것을 유의해야 한다. 예를 들면, 제1 모션 벡터 해상도는 1/2m이고, CPMV의 해상도는 1/2n이며, 제1 시프트 값은 m으로부터 n을 감산하는 것에 의해 획득되는 차이일 수 있다.
제1 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/16(1/24) 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0이고; 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 2이고; 그리고 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 4이다.
제1 시프트 값이 0이면, 실현 가능한 구현예에서, 어떠한 시프팅도 수행되지 않는다는 것이 이해되어야 한다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이면, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 0일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV이다. 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 조정될 필요가 없을 수 있다는 것이 이해될 수 있다.
제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 2일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 2이다.
제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 4일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 4이다.
제2 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/32(1/25) 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/16(1/24) 픽셀 정확도이면, 제1 시프트 값은 1이고; 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 3이고; 그리고 제1 모션 벡터 해상도가 1/32 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 5이다.
예를 들면, 제1 모션 벡터 해상도가 1/32 픽셀 정확도이면, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 1일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 1이다. 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 조정될 필요가 없을 수 있다는 것이 이해될 수 있다.
제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 3일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 3이다.
제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 5일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 5이다.
제3 실현 가능한 구현예에서, 제1 모션 벡터 해상도가 1/64(1/26) 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/16(1/24) 픽셀 정확도이면, 제1 시프트 값은 2이고; 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 1/4(1/22) 픽셀 정확도이면, 제1 시프트 값은 4이고; 그리고 제1 모션 벡터 해상도가 1/64 픽셀 정확도이고, 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도(1/20)이면, 제1 시프트 값은 6이다.
예를 들면, 제1 모션 벡터 해상도가 1/64 픽셀 정확도이면, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 다음과 같은 값을 가질 수 있다.
제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 제1 시프트 값은 2일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 2이다. 현재의 아핀 코딩 블록의 제어 포인트 모션 벡터는 조정될 필요가 없을 수 있다는 것이 이해될 수 있다.
제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 제1 시프트 값은 4일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 4이다.
제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 제1 시프트 값은 6일 수 있고, 현재의 아핀 코딩 블록의 조정된 제어 포인트 모션 벡터는 CPMV' = CPMV << 6이다.
방식 2: 상속된 모션 벡터 예측 방법을 사용하는 것에 의해 제어 포인트 모션 벡터가 획득되면, 즉, 프로세싱될 픽쳐 블록의 프로세싱된 인접한 픽쳐 블록의 예측 모드는 아핀 모션 모델 기반의 예측 모드이면, 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터가 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터에 기초하여 유도되는 경우, 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득된다:
Figure pct00038
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 6 파라미터 모델이면,
Figure pct00039
이고,
Figure pct00040
이고;
프로세싱된 인접한 픽쳐 블록의 아핀 모션 모델이 4 파라미터 모델이면, dHorY = -dVerX이고, dVerY = dHorX이고;
Log2()는 2의 대수를 취하는 함수를 나타내고, <<는 좌측 시프트를 나타내고, >>는 우측 시프트를 나타내고, P는 프로세싱된 인접한 픽쳐 블록의 폭이고, Q는 프로세싱된 인접한 픽쳐 블록의 높이이고;
(vx0, vy0), (vx1, vy1), 및 (vx2, vy2)는, 각각, 프로세싱될 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx0, vy0)은 프로세싱될 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx1, vy1)는 프로세싱될 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx2, vy2)는 프로세싱될 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고;
(vx4, vy4), (vx5, vy5), 및 (vx6, vy6)은, 각각, 프로세싱된 인접한 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고; 구체적으로, (vx4, vy4)는 프로세싱된 인접한 픽쳐 블록의 제1 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx5, vy5)는 프로세싱된 인접한 픽쳐 블록의 제2 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고, (vx6, vy6)은 프로세싱된 인접한 픽쳐 블록의 제3 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분이고; 그리고
mvShift는 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터 해상도에 기초하여 결정된다.
인접한 픽쳐 블록은 공간적으로 인접한 아핀 코딩 블록 또는 시간적으로 인접한 아핀 코딩 블록일 수 있다는 것을 유의해야 한다.
인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 5로 설정하는 것에 의해 1/16 픽셀 정확도로서 획득된다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 6으로 설정하는 것에 의해 1/32 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록에 저장되는 CPMV의 해상도가 1/4 픽셀 정확도이면, 프로세싱될 픽쳐 블록의 CPMV의 해상도는 mvShift를 7로 설정하는 것에 의해 1/4 픽셀 정확도로서 획득될 수 있다. 인접한 아핀 블록의 CPMV 해상도는 저장 단위의 저장된 모션 벡터 해상도를 가리킬 수 있다.
가능한 구현예에서, 제어 포인트 모션 벡터는 방식 2에서 조정될 수 있다, 즉, mvShift는, 제어 포인트 모션 벡터가 사전 설정된 제1 모션 벡터 해상도를 충족하도록 설정된다는 것을 유의해야 한다. 제어 포인트 모션 벡터가, 여전히, 방식 2를 사용하는 것에 의해 사전 설정된 제1 모션 벡터 해상도를 충족하도록 될 수 없는 경우, 제어 포인트 모션 벡터는, 제어 포인트 모션 벡터가 사전 설정된 제1 모션 벡터 해상도를 충족하도록, 방식 1에서 추가로 조정될 수 있다. 확실히, 제어 포인트 모션 벡터는, 제어 포인트 모션 벡터가 사전 설정된 제1 모션 벡터 해상도를 충족하도록, 방식 1에서 직접적으로 조정될 수 있다. 이것은 본 출원의 이 실시형태에서 제한되지는 않는다.
또한, 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터는 클리핑될 수 있다.
예를 들면, 조정된 제어 포인트 모션 벡터의 비트 깊이는 제1 모션 벡터 비트 깊이와 비교된다. 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터는 클리핑될 수 있다. 세부 사항에 대해서는, 공식 (13)의 설명을 참조하고, 세부 사항은 설명되지 않는다.
예를 들면, 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고, 제1 모션 벡터 비트 깊이가 18 비트이며, MV에 의해 표현될 수 있는 범위가 (-213, 213-1)이면, 조정된 제어 포인트 모션 벡터의 값 범위가 (-213, 213-1)가 되는 것을 가능하게 하기 위해, 조정된 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 조정된 제어 포인트 모션 벡터의 비트 깊이는 클리핑될 수 있다, 즉, 18 비트가 공식 (13)에 대입된다.
S1004. 조정된 제어 포인트 모션 벡터에 기초하여 현재의 아핀 코딩 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도한다.
현재의 아핀 코딩 블록 내의 각각의 모션 보상 단위의 모션 정보는 조정된 제어 포인트 모션 정보에 기초하여 그리고 아핀 변환 모델을 사용하는 것에 의해 결정된다.
현재의 아핀 코딩 블록의 각각의 모션 보상 단위에 대해, 모션 보상 단위 내의 모든 픽셀의 모션 정보를 나타내기 위해 모션 보상 단위 내의 사전 설정된 위치에 있는 픽셀의 모션 정보가 사용될 수 있다. 모션 보상 단위의 사이즈가 M×N이다는 것이 가정되면, 사전 설정된 위치에 있는 픽셀은 중심점 (M/2, N/2), 좌측 상단 샘플 (0, 0), 우측 상단 샘플 (M-1, 0), 또는 모션 보상 단위의 다른 위치에 있는 픽셀일 수 있다. 이하에서는, 설명을 위한 한 예로서 모션 보상 단위의 중심점을 사용한다.
모션 보상 단위의 사이즈 M×N은 동일한 규칙을 사용하는 것에 의해 결정되며 인코더 및 디코더에 의해 합의되는 사이즈이며, 4×4, 8×8, 또는 등등으로서 고정될 수 있거나, 또는 제어 포인트 모션 벡터 차이, 모션 벡터 해상도, 및 제어 포인트 사이의 거리에 기초하여 결정될 수 있다.
현재의 아핀 코딩 블록의 모션 보상 단위의 사이즈는 다른 방법을 사용하는 것에 의해 결정될 수 있고, 본 출원에서는 세부 사항이 설명되지 않는다는 것을 유의해야 한다.
현재의 아핀 코딩 블록의 좌측 상단 샘플을 기준으로 하는 모션 보상 단위의 중심점의 좌표는 공식 (14)에 따라 계산될 수 있다.
Figure pct00041
여기서 i는 수평 방향에서 (좌측에서 우측으로) i 번째 모션 보상 단위이고, j는 수직 방향에서 (위에서 아래로) j 번째 모션 보상 단위이고, (x( i,j ), y( i,j ))는 현재의 아핀 코딩 블록의 좌측 상단 샘플을 기준으로 하는 (i,j) 번째 모션 보상 단위의 중심점의 좌표를 나타낸다. 그 다음, (x( i,j ), y( i,j ))가 공식 (15)에 대입되어 각각의 모션 보상 단위의 중심점의 모션 정보를 획득하고, 모션 정보는 모션 보상 단위 내의 모든 픽셀의 모션 정보(vx( i,j ), vy( i,j ))로서 사용된다.
Figure pct00042
조정된 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이고, 조정된 제어 포인트 모션 벡터의 비트 깊이가 18 비트인 경우, 모션 보상 단위의 모션 벡터 해상도는 1/16 픽셀 정확도이며, 모션 보상 단위의 모션 벡터 비트 깊이는 18 비트이다.
특정한 구현 동작이 다음의 프로시져에 기초하여 수행될 수 있는데, 여기서 Log2는 2의 대수를 취하는 함수이고, "<<"는 좌측 시프트를 나타내고, ">>"는 우측 시프트를 나타낸다:
Figure pct00043
현재의 아핀 디코딩 블록이 6 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00044
현재의 아핀 디코딩 블록이 4 파라미터 아핀 디코딩 블록인 경우, 다음이라고 하자:
Figure pct00045
그 다음, 모션 보상 모션 벡터가 다음의 공식에 기초하여 계산될 수 있다:
Figure pct00046
라운드 함수의 연산은 다음과 같다: 임의의 입력 K 및 mvShift에 대해, 출력 K는 다음의 방식으로 획득된다:
Figure pct00047
획득된 모션 벡터 (vx, vy)는, 그 다음, 모션 벡터가 18 비트의 다이나믹 레인지를 초과하지 않도록, 클리핑된다.
예를 들면, 조정된 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, mvShift는 7로 설정되어, 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이다는 것을 획득할 수 있다. 조정된 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, mvShift는 9로 설정되어, 모션 보상 단위의 모션 벡터 해상도가 1/4 픽셀 정확도이다는 것을 획득할 수 있다.
S1005. 각각의 모션 보상 단위의 모션 벡터에 기초하여 현재의 아핀 코딩 블록의 재구성된 블록을 획득한다.
예를 들면, 각각의 모션 보상 단위의 모션 벡터에 기초하여 모션 보상이 수행되어, 현재의 아핀 코딩 블록의 예측 블록을 획득한다. 현재의 아핀 인코딩 블록의 각각의 모션 보상 단위에 대해, S1003에서 획득되는 모션 정보를 사용하는 것에 의해 모션 보상 예측이 수행되어, 각각의 모션 보상 단위의 예측자를 획득한다. 그 다음, 각각의 모션 보상 단위의 모션 벡터 및 예측 블록에 기초하여, 현재의 아핀 코딩 블록의 재구성된 블록이 획득된다.
옵션 사항으로, 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하거나; 또는 예측 블록은 각각의 모션 보상 단위의 모션 벡터에 기초하여 업데이트되고, 업데이트된 예측 블록 및 현재의 아핀 코딩 블록의 잔차 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하거나; 또는 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하고, 각각의 모션 보상 단위의 모션 벡터에 기초하여 재구성된 블록에 대해 필터링 프로세싱이 수행되거나; 또는 현재의 아핀 코딩 블록의 잔차 블록 및 예측 블록이 가산되어 현재의 아핀 코딩 블록의 재구성된 블록을 획득하고, 각각의 모션 보상 단위의 모션 벡터 및 재구성된 블록이 후속하는 현재의 아핀 코딩 블록의 예측 정보로서 사용된다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도, 예를 들면, 1/4 픽셀 정확도이다는 것이 S1004에 기초하여 획득되면, S1006은 수행될 필요가 없을 수 있다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도, 예를 들면, 1/4 픽셀 정확도가 아니다는 것이 S1004에 기초하여 획득되면, S1006은 수행될 필요가 있다.
S1006. 사전 설정된 제2 모션 벡터 해상도를 충족하도록 모션 보상 단위의 모션 벡터 해상도를 프로세싱하고, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱한다.
후속하는 디코딩 프로시져, 예를 들면, 디블록킹 필터, 중첩 블록 모션 보상, 및 후속하는 코딩 블록의 모션 정보 유도에서, 현재의 아핀 코딩 블록의 모션 정보가 사용될 필요가 있다. 따라서, S1004에서 획득되는 모션 보상 단위의 모션 정보는 저장될 필요가 있다.
일반적으로 모션 정보 저장 단위의 사이즈는 4×4이고, 모션 보상 단위 내의 각각의 4×4 저장 단위의 모션 정보는 모션 보상 단위의 모션 정보로서 설정된다.
모션 보상 단위의 모션 벡터 해상도가 저장 단위의 모션 벡터 해상도와 상이한 경우, 모션 보상 단위의 모션 벡터는 저장을 위한 저장 단위의 모션 벡터 해상도로서 양자화될 필요가 있다는 것을 유의해야 한다. 예를 들면:
모션 보상 단위의 프로세싱된 모션 벡터를 획득하기 위해 다음의 공식 (18)이 사용될 수 있다.
Figure pct00048
여기서 MCUMV'은 모션 보상 단위의 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 모션 보상 단위의 모션 벡터를 나타내며, mvrShift2는 제2 시프트 값을 나타낸다.
제2 시프트 값은 MCUMV의 해상도 및 제2 모션 벡터 해상도에 기초하여 결정될 수 있다는 것을 유의해야 한다. 예를 들면, 제2 모션 벡터 해상도는 1/2k이고, MCUMV의 해상도는 1/2n이며, 제2 시프트 값은 n에서 k를 감산한 이후에 획득되는 차이일 수 있다.
제1 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4(1/22) 픽셀 정확도이고, MCUMV의 해상도가 1/16(1/24) 픽셀 정확도이면, 제2 시프트 값은 2이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 2)이다.
제2 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/32(1/25) 픽셀 정확도이면, 제2 시프트 값은 3이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 3)이다.
제3 실현 가능한 구현예에서, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/64(1/26) 픽셀 정확도이면, 제2 시프트 값은 4이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = (MCUMV >> 4)이다.
특히, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, MCUMV의 해상도가 1/4 픽셀 정확도이면, 제2 시프트 값은 0이고, 모션 보상 단위의 프로세싱된 모션 벡터는 MCUMV' = MCUMV이다. 모션 보상 단위의 모션 벡터에 대해 픽셀 정확도 감소 프로세싱을 수행하는 것이 불필요하다는 것이 이해될 수 있다.
게다가, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이는 클리핑될 수 있다.
예를 들면, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터는 클리핑된다. 세부 사항에 대해서는, 공식 (13)의 설명을 참조하고, 세부 사항은 설명되지 않는다.
예를 들면, 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고, 제2 모션 벡터 비트 깊이가 16 비트이며, MV에 의해 표현될 수 있는 범위가 (-211, 211-1)이면, 모션 보상 단위의 프로세싱된 모션 벡터의 값 범위가 (-211, 211-1)가 되는 것을 가능하게 하기 위해, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 모션 보상 단위의 프로세싱된 모션 벡터의 비트 깊이는 클리핑될 수 있다, 즉, 16 비트가 공식 (13)에 대입된다.
S1007. 모션 보상 단위의 프로세싱된 모션 벡터를 저장한다.
본 출원의 이 실시형태에서 제공되는 인터 예측 방법의 단계의 시퀀스는 적절하게 조정될 수 있고, 단계는 또한 상황에 기초하여 상응하게 증가 또는 감소될 수 있다는 것을 유의해야 한다. 예를 들면, S1005는 시퀀스의 관점에서 S1006 및 S1007과 상호 교환될 수 있다, 즉, 모션 보상 단위의 모션 벡터 해상도는 사전 설정된 제2 모션 벡터 해상도를 충족하도록 먼저 프로세싱될 수 있고, 및/또는 모션 보상 단위의 모션 벡터 비트 깊이는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 프로세싱되고, 모션 보상 단위의 프로세싱된 모션 벡터는 저장되고, 그 다음, 현재의 아핀 코딩 블록의 재구성된 블록은 각각의 모션 보상 단위의 모션 벡터에 기초하여 획득된다. 본 출원에서 개시되는 기술적 범위 내에서 기술 분야의 숙련된 자에 의해 용이하게 파악될 수 있는 임의의 방법은, 본 출원의 보호 범위 내에 속할 것이다. 따라서, 세부 사항은 다시 설명되지 않는다.
본 출원의 실시형태 1은 아핀 AMVP 모드에서 해상도 변경 프로세스를 제공한다. 제어 포인트 모션 벡터 해상도 및 비트 깊이를 향상시키고 모션 보상을 수행하는 것에 의해, 아핀 모션 모델을 사용하는 코딩 블록의 인터 예측 정확도가 효과적으로 향상될 수 있다.
본 출원의 실시형태는 인터 예측 장치를 제공한다. 장치는 비디오 디코더, 비디오 인코더, 또는 디코더일 수 있다. 구체적으로, 인터 예측 장치는 전술한 인터 예측 방법에서 디코딩 장치에 의해 수행되는 단계를 수행하도록 구성된다. 본 출원의 이 실시형태에서 제공되는 인터 예측 장치는 대응하는 단계에 대응하는 모듈을 포함할 수 있다.
본 출원의 이 실시형태에서, 인터 예측 장치는 전술한 방법 예에 기초하여 기능 모듈로 분할될 수 있다. 예를 들면, 각각의 기능 모듈은 각각의 대응하는 기능에 기초하여 분할을 통해 획득될 수 있거나, 또는 두 개 이상의 기능이 하나의 프로세싱 모듈에 통합될 수 있다. 통합 모듈은 하드웨어의 형태로 구현될 수 있거나, 또는 소프트웨어 기능 모듈의 형태로 구현될 수 있다. 본 출원의 이 실시형태에서, 모듈 분할은 한 예이며, 단지 논리적 기능 분할에 불과하다. 실제 구현예에서는, 다른 분할 방식이 사용될 수 있다.
각각의 기능에 대응하는 각각의 기능 모듈이 분할에 의해 획득되는 경우, 도 11은 전술한 실시형태에서 언급되는 인터 예측 장치의 가능한 개략적 구조도를 도시한다. 도 11에서 도시되는 바와 같이, 인터 예측 장치(1100)는 판정 모듈(1101), 획득 모듈(1102), 계산 모듈(1103), 및 재구성 모듈(1104)을 포함할 수 있다. 구체적으로, 각각의 모듈의 기능은 다음과 같다:
판정 모듈(1101)은 프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 AMVP 모드이다는 것을 결정하도록 구성된다.
획득 모듈(1102)은 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성되는데, 여기서 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족한다.
계산 모듈(1103)은 제어 포인트 모션 벡터에 기초하여 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성된다.
재구성 모듈(1104)은 각각의 모션 보상 단위의 모션 벡터에 기초하여 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성된다.
판정 모듈(1101)은 전술한 실시형태에서 S901, S1001, 또는 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다. 획득 모듈(1102)은 전술한 실시형태에서 S902, S1002, 또는 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다. 계산 모듈(1103)은 전술한 실시형태에서 S903 및 S905 또는 S1004, 또는 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다. 재구성 모듈(1104)은 전술한 실시형태에서 S904, S1005, 또는 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다.
옵션 사항으로, 인터 예측 장치(1100)는 조정 모듈(1105)을 더 포함할 수 있다. 조정 모듈(1105)은 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 제어 포인트 모션 벡터를 조정하도록 구성된다. 조정 모듈(1105)은 전술한 실시형태에서 S1003, S1006, 및 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다.
게다가, 도 11에서 도시되는 바와 같이, 인터 예측 장치(1100)는, 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성되는 스토리지 모듈(1106)을 더 포함할 수 있다. 스토리지 모듈(1106)은 전술한 실시형태에서 S906, S1007, 및 등등을 수행함에 있어서 인터 예측 장치(1100)를 지원하도록 구성되고, 및/또는 본 명세서에서 설명되는 기술의 다른 프로세스에서 사용된다.
전술한 방법 실시형태에서의 단계에 관련되는 모든 내용은, 대응하는 기능 모듈의 기능 설명에서 인용될 수 있고, 세부 사항은 여기서는 다시 설명되지 않는다.
본 출원의 특정한 양태가 비디오 인코더 및 비디오 디코더와 관련하여 설명되었지만, 본 출원의 기술은 많은 다른 비디오 인코딩 및/또는 인코딩 유닛, 프로세서, 프로세싱 유닛, 인코더/디코더(CODEC)와 같은 하드웨어 기반의 인코딩 유닛, 및 등등을 사용하는 것에 의해 적용될 수 있다는 것이 이해되어야 한다. 또한, 도 9 또는 10에 도시되고 설명되는 단계는 단지 실현 가능한 구현예로서만 제공된다는 것이 이해되어야 한다. 즉, 도 11의 실현 가능한 구현예에서 나타내어지는 단계는 도 11에서 도시되는 순서대로 반드시 수행될 필요는 없으며, 더 적은, 추가적인, 또는 대안적인 단계가 수행될 수 있다.
통합 유닛이 사용되는 경우, 도 12는 본 출원의 실시형태에 따른 인터 예측 장치(1200)의 개략적인 구조 블록도이다. 구체적으로, 인터 예측 장치(1200)는 프로세싱 모듈(1201) 및 프로세싱 모듈에 커플링되는 스토리지 모듈(1202)을 포함한다. 프로세싱 모듈(1201)은 도 11에서 도시되는 실시형태 및 다양한 실현 가능한 구현예를 실행하도록 구성된다.
프로세싱 모듈(1201)은 프로세서 또는 컨트롤러일 수 있으며, 예를 들면, 중앙 프로세싱 유닛(Central Processing Unit; CPU), 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor; DSP), 또는 ASIC, FPGA 또는 다른 프로그래머블 논리 디바이스, 트랜지스터 논리 디바이스, 하드웨어 컴포넌트, 또는 이들의 임의의 조합일 수 있다. 프로세서는 본 출원에서 개시되는 내용을 참조하여 설명되는 다양한 예시적인 논리적 블록, 모듈, 및 회로를 구현할 수 있거나 또는 실행할 수 있다. 프로세서는 컴퓨팅 기능을 구현하는 프로세서의 조합, 예를 들면, 하나 이상의 마이크로프로세서의 조합, 또는 DSP와 마이크로프로세서의 조합일 수 있다. 스토리지 모듈(1202)은 메모리일 수 있다.
전술한 방법 실시형태에서 시나리오에 관련되는 모든 내용은 대응하는 기능 모듈의 기능 설명에서 인용될 수 있고, 세부 사항은 여기서는 다시 설명되지 않는다.
인터 예측 장치(1100) 및 인터 예측 장치(1200) 둘 모두는 도 9 또는 도 10에서 도시되는 전술한 인터 예측 방법을 수행할 수 있다. 인터 예측 장치(1100) 및 인터 예측 장치(1200)는, 구체적으로, 비디오 디코딩 장치 또는 비디오 인코딩 및 디코딩 기능을 갖는 다른 디바이스일 수 있다. 인터 예측 장치(1100) 및 인터 예측 장치(1200)는 디코딩 프로세스에서 픽쳐 예측을 수행하도록 구성될 수 있다.
본 출원의 실시형태는 인터 예측 장치를 제공한다. 인터 예측 장치는 비디오 디코더, 비디오 인코더, 또는 디코더일 수 있다. 구체적으로, 인터 예측 장치는 전술한 인터 예측 방법에서 인터 예측 장치에 의해 수행되는 단계를 수행하도록 구성된다. 본 출원의 이 실시형태에서 제공되는 인터 예측 장치는 대응하는 단계에 대응하는 모듈을 포함할 수 있다.
본 출원의 이 실시형태에서, 인터 예측 장치는 전술한 방법 예에 기초하여 기능 모듈로 분할될 수 있다. 예를 들면, 각각의 기능 모듈은 각각의 대응하는 기능에 기초하여 분할을 통해 획득될 수 있거나, 또는 두 개 이상의 기능이 하나의 프로세싱 모듈에 통합될 수 있다. 통합 모듈은 하드웨어의 형태로 구현될 수 있거나, 또는 소프트웨어 기능 모듈의 형태로 구현될 수 있다. 본 출원의 이 실시형태에서, 모듈 분할은 한 예이며, 단지 논리적 기능 분할에 불과하다. 실제 구현예에서는, 다른 분할 방식이 사용될 수 있다.
본 출원은 또한 단말을 제공하고, 단말은 하나 이상의 프로세서, 메모리, 및 통신 인터페이스를 포함한다. 메모리 및 통신 인터페이스는 하나 이상의 프로세서에 커플링되고; 그리고 메모리는 컴퓨터 프로그램 코드를 저장하도록 구성된다. 컴퓨터 프로그램 코드는 명령어를 포함한다. 하나 이상의 프로세서가 명령어를 실행하는 경우, 단말은 본 출원의 실시형태에서 인터 예측 방법을 수행한다.
본원의 단말은 비디오 디스플레이 디바이스, 스마트폰, 휴대용 컴퓨터, 또는 비디오를 프로세싱할 수 있는 또는 재생할 수 있는 다른 디바이스일 수 있다.
본 출원은 또한, 불휘발성 저장 매체 및 중앙 프로세싱 유닛을 포함하는 비디오 디코더를 제공하는데, 여기서 불휘발성 저장 매체는 실행 가능한 프로그램을 저장하고, 중앙 프로세싱 유닛은 불휘발성 저장 매체에 연결되고, 실행 가능한 프로그램을 실행하여 본 출원의 실시형태에서의 인터 예측 방법을 구현한다.
본 출원은 또한 디코더를 제공하는 데, 여기서 디코더는 본 출원의 실시형태에서의 인터 예측 장치를 포함한다.
본 출원의 다른 실시형태는 또한, 컴퓨터 판독 가능 저장 매체를 제공한다. 컴퓨터 판독 가능 저장 매체는 하나 이상의 조각의 프로그램 코드를 포함한다. 하나 이상의 조각의 프로그램은 명령어를 포함한다. 단말 내의 프로세서가 프로그램 코드를 실행하는 경우, 단말은 도 9 또는 도 10에서 도시되는 인터 예측 방법을 수행한다.
본 출원의 다른 실시형태에서, 컴퓨터 프로그램 제품이 또한 제공되는데, 여기서 컴퓨터 프로그램 제품은 컴퓨터 실행 가능 명령어를 포함하고, 컴퓨터 실행 가능 명령어는 컴퓨터 판독 가능 저장 매체에 저장된다. 단말의 적어도 하나의 프로세서는 컴퓨터 판독 가능 저장 매체로부터 컴퓨터 실행 가능 명령어를 판독할 수 있다. 적어도 하나의 프로세서는, 단말이 도 9 또는 도 10에서 도시되는 인터 예측 방법을 구현하도록, 컴퓨터 실행 가능 명령어를 실행한다.
전술한 실시형태의 모두 또는 일부는 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어 프로그램이 실시형태를 구현하기 위해 사용되는 경우, 실시형태의 모두 또는 일부는 컴퓨터 프로그램 제품의 형태로 구현될 수 있다. 컴퓨터 프로그램 제품은 하나 이상의 컴퓨터 명령어를 포함한다. 컴퓨터 프로그램 명령어가 컴퓨터 상에 로딩되어 실행되는 경우, 본 출원의 실시형태에 따른 프로시져 또는 기능의 모두 또는 일부가 생성된다.
컴퓨터는 범용 컴퓨터, 전용 컴퓨터, 컴퓨터 네트워크, 또는 다른 프로그래머블 장치일 수 있다. 컴퓨터 명령어는 컴퓨터 판독 가능 저장 매체에 저장될 수 있거나 또는 컴퓨터 판독 가능 저장 매체로부터 다른 컴퓨터 판독 가능 저장 매체로 송신될 수 있다. 예를 들면, 컴퓨터 명령어는 웹 사이트, 컴퓨터, 서버, 또는 데이터 센터로부터 다른 웹 사이트, 컴퓨터, 서버, 또는 데이터 센터로 유선(예를 들면, 동축 케이블, 광섬유, 또는 디지털 가입자 회선(digital subscriber line; DSL)) 또는 무선(예를 들면, 적외선, 라디오, 또는 마이크로파) 방식으로 송신될 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨터에 의해 액세스 가능한 임의의 사용 가능한 매체, 또는 데이터 스토리지 디바이스, 예컨대 하나 이상의 사용 가능한 매체를 통합하는 서버 또는 데이터 센터일 수 있다. 사용 가능한 매체는 자기 매체(예를 들면, 플로피 디스크, 하드 디스크, 또는 자기 테이프), 광학 매체(예를 들면, DVD), 반도체 매체(예를 들면, 솔리드 스테이트 드라이브 솔리드 스테이트 디스크(Solid State Disk; SSD)), 또는 등등일 수 있다.
또한, 실현 가능한 구현예에 따라, 본원에서 설명되는 방법 중 임의의 하나의 특정한 액션 또는 이벤트가 상이한 시퀀스로 수행될 수 있고, 함께 추가될 수 있거나, 결합될 수 있거나, 또는 생략될 수 있다는 것이 이해되어야 한다(예를 들면, 방법을 실행하는 데 모든 설명된 액션 또는 이벤트가 필요한 것은 아니다). 또한, 특정한 실현 가능한 구현예에서, 액션 또는 이벤트는, 예를 들면, 다중스레드 프로세싱, 인터럽트 프로세싱, 또는 복수의 프로세서에 의해, 순차적으로가 아니라, 동시에 수행될 수 있다. 또한, 본 출원의 특정한 양태가 명확한 목적을 위해 단일의 모듈 또는 유닛에 의해 수행되는 것으로 설명되지만, 본 출원의 기술은 비디오 디코더와 관련되는 유닛 또는 모듈의 조합을 사용하는 것에 의해 수행될 수 있다는 것이 이해되어야 한다.
하나 이상의 실현 가능한 구현예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능은 하나 이상의 명령어 또는 코드로서 컴퓨터 판독 가능 매체 상에 저장될 수 있거나 또는 그들 통해 전달될 수 있으며, 하드웨어 기반의 프로세싱 유닛에 의해 수행될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체 또는 통신 매체를 포함할 수 있는데, 여기서 컴퓨터 판독 가능 저장 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하고, 통신 매체는, 예를 들면, 통신 프로토콜에 따라 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함한다.
이러한 방식으로, 컴퓨터 판독 가능 매체는, 예를 들면, (1) 비일시적 유형의 컴퓨터 판독 가능 저장 매체, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명되는 기술을 구현하기 위한 명령어, 코드, 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 실현 가능한 구현예로서, 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지 디바이스, 자기 디스크 스토리지 디바이스 또는 다른 자기 스토리지 디바이스, 플래시 메모리, 또는 명령어 또는 데이터 구조의 형태로 소망되는 프로그램 코드를 저장하도록 구성될 수 있고 컴퓨터에 의해 액세스 가능할 수 있는 임의의 다른 매체를 포함할 수 있다. 유사하게, 임의의 연결은 적절하게 컴퓨터 판독 가능 매체로서 지칭될 수 있다. 예를 들면, 동축 케이블, 광섬유, 연선(twisted pair), 디지털 가입자 회선(DSL), 또는 무선 기술 예컨대 적외선, 전파, 마이크로파를 사용하여 웹 사이트, 서버, 또는 다른 원격 소스로부터 명령어가 송신되는 경우, 무선 기술 예컨대 적외선, 무선 및 마이크로파는 매체의 정의에 포함된다.
그러나, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체는 연결, 반송파, 신호, 또는 다른 일시적인 매체를 포함하는 것이 아니라, 대신, 비일시적인 유형의 저장 매체를 대상으로 한다는 것이 이해되어야 한다. 본원에서 사용되는 바와 같이, 디스크(disk) 및 디스크(disc)는, 컴팩트 디스크(compact disc; CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크(digital versatile disc; DVD), 플로피 디스크 및 Blu-ray(블루레이) 디스크를 포함하는데, 여기서, 디스크(disk)는 통상적으로 데이터를 자기적으로 재생하고, 한편 광학 디스크(disc)는 데이터를 레이저에 의해 광학적으로 재생한다. 상기의 내용의 조합도 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
명령어는, 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 등가의 집적 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 용어 "프로세서"는 전술한 구조, 또는 본 명세서에서 설명되는 기술의 구현예에 적용될 수 있는 임의의 다른 구조를 지칭할 수 있다. 또한, 몇몇 양태에서, 본원에서 설명되는 기능성은 인코딩 및 디코딩을 위해 구성되는 전용 하드웨어 및/또는 소프트웨어 모듈에서 제공될 수 있거나, 또는 결합된 코덱으로 통합될 수 있다. 유사하게, 기술은 하나 이상의 회로 또는 논리 엘리먼트에서 완전히 구현될 수 있다.
본 출원에서의 기술은, 무선 이동 전화, 집적 회로(integrated circuit; IC), 또는 IC의 세트(예를 들면, 칩셋)를 포함하는 아주 다양한 장치 또는 디바이스에서 구현될 수 있다. 개시된 기술을 수행하도록 구성되는 장치의 기능적 양태를 강조하기 위해 본 출원에서 다양한 컴포넌트, 모듈, 또는 유닛이 설명되지만, 그러나 반드시 상이한 하드웨어 유닛을 사용하는 것에 의해 구현될 필요는 없다. 더 구체적으로, 앞서 설명되는 바와 같이, 다양한 유닛은, 적절한 소프트웨어 및/또는 펌웨어의 콜렉션(collection)과 조합하여 제공되는 상호 운용 가능한 하드웨어 유닛(앞서 설명되는 바와 같은 하나 이상의 프로세서를 포함함)에 의해 또는 코덱 하드웨어 유닛에서 결합될 수 있다.
전술한 설명은 단지 본 출원의 예시적인 특정한 구현예에 불과하며, 본 출원의 보호 범위를 제한하도록 의도되지는 않는다. 본 출원에서 개시되는 기술적 범위 내에서 기술 분야의 숙련된 자에 의해 용이하게 파악되는 임의의 변형예 또는 대체예는 본 출원의 보호 범위 내에 속할 것이다. 따라서, 본 출원의 보호 범위는 청구범위의 보호 범위에 종속될 것이다.

Claims (76)

  1. 인터 예측(inter prediction) 방법으로서,
    프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델(affine motion model) 기반의 고급 모션 벡터 예측(advanced motion vector prediction; AMVP) 모드라고 판정하는 단계와,
    상기 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 - 상기 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족함 - 를 획득하는 단계와,
    상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 단계와,
    상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록(reconstructed block)을 획득하는 단계를 포함하는,
    인터 예측 방법.
  2. 제1항에 있어서,
    상기 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 단계는,
    제어 포인트 모션 벡터 차이(control point motion vector difference; CPMVD) 및 제어 포인트 모션 벡터 예측자(control point motion vector predictor; CPMVP)를 획득하는 단계;
    상기 CPMVD의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 CPMVD 및 제1 시프트 값에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터를 획득하는 단계; 또는
    상기 CPMVP의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 CPMVP 및 제2 시프트 값에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터를 획득하는 단계를 포함하는,
    인터 예측 방법.
  3. 제2항에 있어서,
    상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되:
    CPMV = CPMVD' + CPMVP',
    상기 CPMVD의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD' = CPMVD << mvrShift1이고,
    상기 CPMVD의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하면, CPMVD' = CPMVD이며,
    상기 CPMVP의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP' = CPMVP << mvrShift2이고,
    상기 CPMVP의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하면, CPMVP' = CPMVP이며,
    상기 CPMV는 상기 제어 포인트 모션 벡터를 나타내고, mvrShift1은 상기 제1 시프트 값을 나타내며, mvrShift2는 상기 제2 시프트 값을 나타내는,
    인터 예측 방법.
  4. 제3항에 있어서,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하는(clipping) 단계를 더 포함하는,
    인터 예측 방법.
  5. 제3항에 있어서,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  6. 제2항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 2이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 정수 픽셀 정확도이면, 상기 제2 시프트 값은 4인,
    인터 예측 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 방법은,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 모션 벡터 해상도를 프로세싱하는 단계, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 상기 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하는 단계와,
    상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 단계를 더 포함하는,
    인터 예측 방법.
  8. 제7항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터는 다음의 공식에 따라 획득되되:
    MCUMV' = (MCUMV >> mvrShift3),
    MCUMV'은 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 상기 모션 보상 단위의 모션 벡터를 나타내며, mvrShift3은 제3 시프트 값을 나타내는,
    인터 예측 방법.
  9. 제8항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  10. 제8항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 해상도가 1/16 픽셀 정확도이면, 상기 제3 시프트 값은 2이고,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제3 시프트 값은 0이며,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/32 픽셀 정확도이면, 상기 제3 시프트 값은 3인,
    인터 예측 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계는,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 단계와,
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하는 단계를 포함하는,
    인터 예측 방법.
  13. 인터 예측 방법으로서,
    프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 병합 예측 모드라고 판정하는 단계와,
    상기 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하는 단계와,
    사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 상기 제어 포인트 모션 벡터를 조정하는 단계와,
    조정된 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 단계와,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계를 포함하는,
    인터 예측 방법.
  14. 제13항에 있어서,
    상기 제어 포인트 모션 벡터를 조정하는 단계는,
    상기 제어 포인트 모션 벡터의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 제어 포인트 모션 벡터 및 제1 시프트 값에 기초하여 상기 조정된 제어 포인트 모션 벡터를 획득하는 단계를 포함하는,
    인터 예측 방법.
  15. 제14항에 있어서,
    상기 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되,
    CPMV' = CPMV << mvrShift1,
    CPMV는 상기 제어 포인트 모션 벡터를 나타내고 CPMV'은 상기 조정된 제어 포인트 모션 벡터를 나타내며, mvrShift1은 상기 제1 시프트 값을 나타내는,
    인터 예측 방법.
  16. 제14항 또는 제15항에 있어서,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4인,
    인터 예측 방법.
  17. 제13항에 있어서,
    상기 프로세싱될 픽쳐 블록의 프로세싱된 인접한 픽쳐 블록의 예측 모드는 아핀 모션 모델 기반의 예측 모드이고,
    상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터가 상기 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터에 기초하여 유도되는 경우, 상기 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되,
    Figure pct00049

    Figure pct00050

    상기 프로세싱된 인접한 픽쳐 블록의 상기 아핀 모션 모델이 6 파라미터 모델이면,
    Figure pct00051
    이고,
    Figure pct00052
    이며,
    상기 프로세싱된 인접한 픽쳐 블록의 상기 아핀 모션 모델이 4 파라미터 모델이면, dHorY = -dVerX이고, dVerY = dHorX이며,
    Log2()는 2의 대수(logarithm)를 취하는 함수를 나타내고, <<는 좌측 시프트를 나타내며, >>는 우측 시프트를 나타내고, P는 상기 프로세싱된 인접한 픽쳐 블록의 폭이며, Q는 상기 프로세싱된 인접한 픽쳐 블록의 높이이고,
    (vx0, vy0), (vx1, vy1), 및 (vx2, vy2)는, 각각, 상기 프로세싱될 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고,
    (vx4, vy4), (vx5, vy5), 및 (vx6, vy6)은, 각각, 상기 프로세싱된 인접한 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내며,
    mvShift는 상기 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터 해상도에 기초하여 결정되는,
    인터 예측 방법.
  18. 제15항 또는 제17항에 있어서,
    상기 조정된 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 조정된 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 조정된 제어 포인트 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  19. 제15항 또는 제17항에 있어서,
    상기 조정된 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 조정된 제어 포인트 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  20. 제13항 내지 제19항 중 어느 한 항에 있어서,
    상기 방법은,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 모션 벡터 해상도를 프로세싱하는 단계, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 상기 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하는 단계; 및
    상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 단계를 더 포함하는,
    인터 예측 방법.
  21. 제20항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터는 다음의 공식에 따라 획득되되,
    MCUMV' = (MCUMV >> mvrShift2),
    MCUMV'은 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 상기 모션 보상 단위의 모션 벡터를 나타내며, mvrShift2는 제2 시프트 값을 나타내는,
    인터 예측 방법.
  22. 제21항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  23. 제21항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  24. 제21항 내지 제23항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 2이고,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 해상도가 1/32 픽셀 정확도이면, 상기 제2 시프트 값은 3인,
    인터 예측 방법.
  25. 제13항 내지 제24항 중 어느 한 항에 있어서,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계는,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 단계와
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하는 단계를 포함하는,
    인터 예측 방법.
  26. 인터 예측 장치로서,
    프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 고급 모션 벡터 예측(AMVP) 모드라고 판정하도록 구성되는 판정 모듈과,
    상기 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 - 상기 제어 포인트 모션 벡터는 사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족함 - 를 획득하도록 구성되는 획득 모듈과,
    상기 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈과,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈을 포함하는,
    인터 예측 장치.
  27. 제26항에 있어서,
    상기 획득 모듈은 구체적으로,
    제어 포인트 모션 벡터 차이(CPMVD) 및 제어 포인트 모션 벡터 예측자(CPMVP)를 획득하도록,
    상기 CPMVD의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 CPMVD 및 제1 시프트 값에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터를 획득하도록, 또는
    상기 CPMVP의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 CPMVP 및 제2 시프트 값에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터를 획득하도록 구성되는,
    인터 예측 장치.
  28. 제27항에 있어서,
    상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되,
    CPMV = CPMVD' + CPMVP',
    상기 CPMVD의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, CPMVD' = CPMVD << mvrShift1이고,
    상기 CPMVD의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하면, CPMVD' = CPMVD이며,
    상기 CPMVP의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, CPMVP' = CPMVP << mvrShift2이고,
    상기 CPMVP의 상기 해상도가 상기 제1 모션 벡터 해상도와 동일하면, CPMVP' = CPMVP이며,
    상기 CPMV는 상기 제어 포인트 모션 벡터를 나타내고, mvrShift1은 상기 제1 시프트 값을 나타내며, mvrShift2는 상기 제2 시프트 값을 나타내는,
    인터 예측 장치.
  29. 제28항에 있어서,
    상기 획득 모듈은 또한,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  30. 제28항에 있어서,
    상기 획득 모듈은 또한,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  31. 제27항 내지 제30항 중 어느 한 항에 있어서,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVD의 상기 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 2이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 CPMVP의 상기 해상도가 정수 픽셀 정확도이면, 상기 제2 시프트 값은 4인,
    인터 예측 장치.
  32. 제26항 내지 제31항 중 어느 한 항에 있어서,
    상기 획득 모듈은 또한,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 모션 벡터 해상도를 프로세싱하도록, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 상기 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하도록 구성되고,
    상기 장치는 스토리지 모듈을 더 포함하되, 상기 스토리지 모듈은 상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성되는,
    인터 예측 장치.
  33. 제32항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터는 다음의 공식에 따라 획득되되,
    MCUMV' = (MCUMV >> mvrShift3),
    MCUMV'은 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 상기 모션 보상 단위의 모션 벡터를 나타내며, mvrShift3은 제3 시프트 값을 나타내는,
    인터 예측 장치.
  34. 제33항에 있어서,
    상기 획득 모듈은 또한,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하도록 구성되는,
    인터 예측 장치.
  35. 제33항에 있어서,
    상기 획득 모듈은 또한:
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  36. 제33항 내지 제35항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 해상도가 1/16 픽셀 정확도이면, 상기 제3 시프트 값은 2이고,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제3 시프트 값은 0이며,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/32 픽셀 정확도이면, 상기 제3 시프트 값은 3인,
    인터 예측 장치.
  37. 제26항 내지 제36항 중 어느 한 항에 있어서,
    상기 재구성 모듈은 구체적으로,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록, 그리고,
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하도록 구성되는,
    인터 예측 장치.
  38. 인터 예측 장치로서,
    프로세싱될 픽쳐 블록의 예측 모드가 아핀 모션 모델 기반의 병합 예측 모드라고 판정하도록 구성되는 판정 모듈과,
    상기 프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터를 획득하도록 구성되는 획득 모듈과,
    사전 설정된 제1 모션 벡터 해상도 및/또는 제1 모션 벡터 비트 깊이를 충족하도록 상기 제어 포인트 모션 벡터를 조정하도록 구성되는 조정 모듈과,
    조정된 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되는 계산 모듈과,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는 재구성 모듈을 포함하는,
    인터 예측 장치.
  39. 제38항에 있어서,
    상기 조정 모듈은 구체적으로,
    상기 제어 포인트 모션 벡터의 해상도가 상기 제1 모션 벡터 해상도와 동일하지 않으면, 상기 제어 포인트 모션 벡터 및 제1 시프트 값에 기초하여 상기 조정된 제어 포인트 모션 벡터를 획득하도록 구성되는,
    인터 예측 장치.
  40. 제39항에 있어서,
    상기 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되,
    CPMV' = CPMV << mvrShift1, CPMV는 상기 제어 포인트 모션 벡터를 나타내고, CPMV'은 상기 조정된 제어 포인트 모션 벡터를 나타내며, mvrShift1은 상기 제1 시프트 값을 나타내는,
    인터 예측 장치.
  41. 제39항 또는 제40항에 있어서,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 제1 모션 벡터 해상도가 1/16 픽셀 정확도이고 상기 제어 포인트 모션 벡터 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4인,
    인터 예측 장치.
  42. 제38항에 있어서,
    상기 프로세싱될 픽쳐 블록의 프로세싱된 인접한 픽쳐 블록의 예측 모드는 아핀 모션 모델 기반의 예측 모드이고,
    상기 프로세싱될 픽쳐 블록의 상기 제어 포인트 모션 벡터가 상기 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터에 기초하여 유도되는 경우, 상기 조정된 제어 포인트 모션 벡터는 다음의 공식에 따라 획득되되,
    Figure pct00053

    상기 프로세싱된 인접한 픽쳐 블록의 상기 아핀 모션 모델이 6 파라미터 모델이면,
    Figure pct00054
    이고,
    Figure pct00055
    이며,
    상기 프로세싱된 인접한 픽쳐 블록의 상기 아핀 모션 모델이 4 파라미터 모델이면, dHorY = -dVerX이고, dVerY = dHorX이며,
    Log2()는 2의 대수(logarithm)를 취하는 함수를 나타내고, <<는 좌측 시프트를 나타내며, >>는 우측 시프트를 나타내고, P는 상기 프로세싱된 인접한 픽쳐 블록의 폭이며, Q는 상기 프로세싱된 인접한 픽쳐 블록의 높이이고,
    (vx0, vy0), (vx1, vy1), 및 (vx2, vy2)는, 각각, 상기 프로세싱될 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내며,
    (vx4, vy4), (vx5, vy5), 및 (vx6, vy6)은, 각각, 상기 프로세싱된 인접한 픽쳐 블록의 세 개의 제어 포인트의 모션 벡터의 수평 성분 및 수직 성분을 나타내고,
    mvShift는 상기 프로세싱된 인접한 픽쳐 블록의 제어 포인트 모션 벡터 해상도에 기초하여 결정되는,
    인터 예측 장치.
  43. 제40항 또는 제42항에 있어서,
    상기 조정 모듈은 또한,
    상기 조정된 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 조정된 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 조정된 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  44. 제40항 또는 제42항에 있어서,
    상기 조정 모듈은 또한,
    상기 조정된 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 조정된 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  45. 제38항 내지 제44항 중 어느 한 항에 있어서,
    상기 조정 모듈은 또한,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 모션 벡터 해상도를 프로세싱하도록, 및/또는 사전 설정된 제2 모션 벡터 비트 깊이를 충족하도록 상기 모션 보상 단위의 모션 벡터 비트 깊이를 프로세싱하도록 구성되고,
    상기 장치는 스토리지 모듈을 더 포함하되, 상기 스토리지 모듈은 상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성되는,
    인터 예측 장치.
  46. 제45항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터는 다음의 공식에 따라 획득되되,
    MCUMV' = (MCUMV >> mvrShift2),
    MCUMV'은 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 나타내고, MCUMV는 프로세싱 이전의 상기 모션 보상 단위의 모션 벡터를 나타내며, mvrShift2는 제2 시프트 값을 나타내는,
    인터 예측 장치.
  47. 제46항에 있어서,
    상기 조정 모듈은 또한,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하도록 구성되는,
    인터 예측 장치.
  48. 제46항에 있어서,
    상기 조정 모듈은 또한,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 상기 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  49. 제46항 내지 제48항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 2이고,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 제2 모션 벡터 해상도가 1/4 픽셀 정확도이고 상기 MCUMV의 해상도가 1/32 픽셀 정확도이면, 상기 제2 시프트 값은 3인,
    인터 예측 장치.
  50. 제38항 내지 제49항 중 어느 한 항에 있어서,
    상기 재구성 모듈은 구체적으로,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록, 그리고
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하도록 구성되는,
    인터 예측 장치.
  51. 서로 커플링되는 불휘발성 메모리 및 프로세서를 포함하는 비디오 코덱 디바이스로서,
    상기 프로세서는 제1항 내지 제12항 또는 제13항 내지 제25항 중 어느 한 항에 따른 상기 방법을 수행하기 위해 상기 메모리에 저장되는 프로그램 코드를 호출하는,
    비디오 코덱 디바이스
  52. 인터 예측 방법으로서,
    프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 차이(CPMVD) 및 제어 포인트 모션 벡터 예측자(CPMVP)를 획득하는 단계와,
    상기 CPMVD를 제1 시프트 값 - 상기 CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, 상기 제1 시프트 값은 0임 - 만큼 좌측 시프트하는 단계와,
    상기 CPMVP를 제2 시프트 값 - 상기 CPMVP의 해상도가 상기 제1 모션 벡터 해상도와 동일하면, 상기 제2 시프트 값은 0임 - 만큼 좌측 시프트하는 단계와,
    좌측 시프트된 CPMVD 및 좌측 시프트된 CPMVP를 가산하여 제어 포인트 모션 벡터를 획득하는 단계와,
    상기 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하는 단계와,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계를 포함하는,
    인터 예측 방법.
  53. 제52항에 있어서,
    상기 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  54. 제52항에 있어서,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  55. 제52항 내지 제54항 중 어느 한 항에 있어서,
    상기 제1 모션 벡터 해상도는 1/16 픽셀 정확도인,
    인터 예측 방법.
  56. 제55항에 있어서,
    상기 CPMVD의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 CPMVD의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 CPMVD의 상기 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4이고,
    상기 CPMVP의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 CPMVP의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 2이고,
    상기 CPMVP의 상기 해상도가 정수 픽셀 정확도이면, 상기 제2 시프트 값은 4인,
    인터 예측 방법.
  57. 제52항 내지 제56항 중 어느 한 항에 있어서,
    상기 방법은,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 상기 모션 벡터를 프로세싱하는 단계와,
    상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하는 단계를 더 포함하는,
    인터 예측 방법.
  58. 제57항에 있어서,
    상기 모션 보상 단위의 상기 모션 벡터를 프로세싱하는 단계는,
    상기 모션 보상 단위의 상기 모션 벡터를 제3 시프트 값만큼 좌측 시프트하는 단계를 포함하는,
    인터 예측 방법.
  59. 제58항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  60. 제58항에 있어서,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하는 단계를 더 포함하는,
    인터 예측 방법.
  61. 제57항 내지 제60항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도는 1/4 픽셀 정확도인,
    인터 예측 방법.
  62. 제61항에 있어서,
    상기 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이면, 상기 제3 시프트 값은 2이고,
    상기 모션 보상 단위의 상기 모션 벡터 해상도가 1/4 픽셀 정확도이면, 상기 제3 시프트 값은 0이며,
    상기 모션 보상 단위의 상기 모션 벡터 해상도가 1/32 픽셀 정확도이면, 상기 제3 시프트 값은 3인,
    인터 예측 방법.
  63. 제52항 내지 제62항 중 어느 한 항에 있어서,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하는 단계는,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하는 단계와,
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하는 단계를 포함하는,
    인터 예측 방법.
  64. 인터 예측 장치로서,
    프로세싱될 픽쳐 블록의 제어 포인트 모션 벡터 차이(CPMVD) 및 제어 포인트 모션 벡터 예측자(CPMVP)를 획득하도록 구성되는 획득 모듈과,
    계산 모듈과,
    재구성 모듈
    을 포함하되,
    상기 획득 모듈은 또한 상기 CPMVD를 제1 시프트 값 - 상기 CPMVD의 해상도가 제1 모션 벡터 해상도와 동일하면, 상기 제1 시프트 값은 0임 - 만큼 좌측 시프트하도록 구성되고,
    상기 획득 모듈은 또한 상기 CPMVP를 제2 시프트 값 - 상기 CPMVP의 해상도가 상기 제1 모션 벡터 해상도와 동일하면, 상기 제2 시프트 값은 0임 - 만큼 좌측 시프트하도록 구성되며,
    상기 획득 모듈은 또한 좌측 시프트된 CPMVD 및 좌측 시프트된 CPMVP를 가산하여 제어 포인트 모션 벡터를 획득하도록 구성되고,
    상기 계산 모듈은 상기 제어 포인트 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록 내의 각각의 모션 보상 단위의 모션 벡터를 유도하도록 구성되며,
    상기 재구성 모듈은 각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 상기 프로세싱될 픽쳐 블록의 재구성된 블록을 획득하도록 구성되는,
    인터 예측 장치.
  65. 제64항에 있어서,
    상기 획득 모듈은,
    상기 제어 포인트 모션 벡터의 비트 깊이가 상기 제1 모션 벡터 비트 깊이 보다 더 큰 경우, 상기 제어 포인트 모션 벡터의 상기 비트 깊이가 상기 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  66. 제64항에 있어서,
    상기 획득 모듈은 또한,
    상기 제어 포인트 모션 벡터의 비트 깊이가 제1 모션 벡터 비트 깊이와 동일하도록, 상기 제어 포인트 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  67. 제64항 내지 제66항 중 어느 한 항에 있어서,
    상기 제1 모션 벡터 해상도는 1/16 픽셀 정확도인,
    인터 예측 장치.
  68. 제67항에 있어서,
    상기 CPMVD의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제1 시프트 값은 0이고,
    상기 CPMVD의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제1 시프트 값은 2이며,
    상기 CPMVD의 상기 해상도가 정수 픽셀 정확도이면, 상기 제1 시프트 값은 4이고,
    상기 CPMVP의 상기 해상도가 1/16 픽셀 정확도이면, 상기 제2 시프트 값은 0이며,
    상기 CPMVP의 상기 해상도가 1/4 픽셀 정확도이면, 상기 제2 시프트 값은 2이며,
    상기 CPMVP의 상기 해상도가 정수 픽셀 정확도이면, 상기 제2 시프트 값은 4인,
    인터 예측 장치.
  69. 제64항 내지 제68항 중 어느 한 항에 있어서,
    상기 획득 모듈은 또한,
    사전 설정된 제2 모션 벡터 해상도를 충족하도록 상기 모션 보상 단위의 상기 모션 벡터를 프로세싱하도록 구성되고,
    상기 장치는 스토리지 모듈을 더 포함하되, 상기 스토리지 모듈은 상기 모션 보상 단위의 프로세싱된 모션 벡터를 저장하도록 구성되는,
    인터 예측 장치.
  70. 제69항에 있어서,
    상기 획득 모듈은 상기 모션 보상 단위의 상기 모션 벡터를 제3 시프트 값만큼 좌측 시프트하도록 구성되는,
    인터 예측 장치.
  71. 제70항에 있어서,
    상기 획득 모듈은 또한,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이를 클리핑하도록 구성되는,
    인터 예측 장치.
  72. 제70항에 있어서,
    상기 획득 모듈은 또한,
    상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 비트 깊이가 제2 모션 벡터 비트 깊이보다 더 큰 경우, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터의 상기 비트 깊이가 상기 제2 모션 벡터 비트 깊이와 동일하도록, 상기 모션 보상 단위의 상기 프로세싱된 모션 벡터를 클리핑하도록 구성되는,
    인터 예측 장치.
  73. 제69항 내지 제72항 중 어느 한 항에 있어서,
    상기 제2 모션 벡터 해상도는 1/4 픽셀 정확도인,
    인터 예측 장치.
  74. 제73항에 있어서,
    상기 모션 보상 단위의 모션 벡터 해상도가 1/16 픽셀 정확도이면, 상기 제3 시프트 값은 2이고,
    상기 모션 보상 단위의 상기 모션 벡터 해상도가 1/4 픽셀 정확도이면, 상기 제3 시프트 값은 0이며,
    상기 모션 보상 단위의 상기 모션 벡터 해상도가 1/32 픽셀 정확도이면, 상기 제3 시프트 값은 3인,
    인터 예측 장치.
  75. 제64항 내지 제74항 중 어느 한 항에 있어서,
    상기 재구성 모듈은 구체적으로,
    각각의 모션 보상 단위의 상기 모션 벡터에 기초하여 모션 보상을 수행하여, 상기 프로세싱될 픽쳐 블록의 예측 블록을 획득하도록, 그리고
    각각의 모션 보상 단위의 상기 모션 벡터 및 상기 예측 블록에 기초하여 상기 프로세싱될 픽쳐 블록의 상기 재구성된 블록을 획득하도록 구성되는,
    인터 예측 장치.
  76. 서로 커플링되는 불휘발성 메모리 및 프로세서를 포함하는 비디오 코덱 디바이스로서,
    상기 프로세서는 제52항 내지 제63항 중 어느 한 항에 따른 상기 방법을 수행하기 위해 상기 메모리에 저장되는 프로그램 코드를 호출하는,
    비디오 코덱 디바이스.
KR1020217023306A 2018-12-24 2019-12-23 인터 예측 방법 및 장치 KR20210103561A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201811588243 2018-12-24
CN201811588243.6 2018-12-24
CN201910108004.4A CN111355961B (zh) 2018-12-24 2019-02-02 一种帧间预测的方法和装置
CN201910108004.4 2019-02-02
PCT/CN2019/127669 WO2020135368A1 (zh) 2018-12-24 2019-12-23 一种帧间预测的方法和装置

Publications (1)

Publication Number Publication Date
KR20210103561A true KR20210103561A (ko) 2021-08-23

Family

ID=71195562

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217023306A KR20210103561A (ko) 2018-12-24 2019-12-23 인터 예측 방법 및 장치

Country Status (4)

Country Link
US (1) US11706444B2 (ko)
EP (1) EP3896970A4 (ko)
KR (1) KR20210103561A (ko)
CN (1) CN111355961B (ko)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497550A (zh) 2011-12-05 2012-06-13 南京大学 H.264编码中运动补偿插值的并行加速方法及装置
CN103561263B (zh) 2013-11-06 2016-08-24 北京牡丹电子集团有限责任公司数字电视技术中心 基于运动矢量约束和加权运动矢量的运动补偿预测方法
GB2524476B (en) * 2014-03-14 2016-04-27 Canon Kk Method, device and computer program for optimizing transmission of motion vector related information when transmitting a video stream
JP6137072B2 (ja) * 2014-06-26 2017-05-31 ソニー株式会社 画像復号装置および方法、記録媒体、並びにプログラム
US9854237B2 (en) * 2014-10-14 2017-12-26 Qualcomm Incorporated AMVP and merge candidate list derivation for intra BC and inter prediction unification
CN106303543B (zh) * 2015-05-15 2018-10-30 华为技术有限公司 视频图像编码和解码的方法、编码设备和解码设备
CN108600749B (zh) * 2015-08-29 2021-12-28 华为技术有限公司 图像预测的方法及设备
US10999595B2 (en) * 2015-11-20 2021-05-04 Mediatek Inc. Method and apparatus of motion vector prediction or merge candidate derivation for video coding
US10798403B2 (en) * 2016-01-29 2020-10-06 Sharp Kabushiki Kaisha Prediction image generation device, video decoding device, and video coding device
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
KR20240025714A (ko) * 2016-03-24 2024-02-27 엘지전자 주식회사 비디오 코딩 시스템에서 인터 예측 방법 및 장치
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
JP7026049B2 (ja) * 2016-09-27 2022-02-25 シャープ株式会社 アフィン動きベクトル導出装置、予測画像生成装置、動画像復号装置、および動画像符号化装置
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US10681370B2 (en) * 2016-12-29 2020-06-09 Qualcomm Incorporated Motion vector generation for affine motion model for video coding
US10805630B2 (en) * 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
WO2018226066A1 (ko) * 2017-06-09 2018-12-13 엘지전자 주식회사 영상 코딩 시스템에서 어파인 예측에 따른 영상 디코딩 방법 및 장치
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US10757417B2 (en) * 2018-01-20 2020-08-25 Qualcomm Incorporated Affine motion compensation in video coding
US11140398B2 (en) * 2018-08-20 2021-10-05 Mediatek Inc. Methods and apparatus for generating affine candidates
US10944984B2 (en) * 2018-08-28 2021-03-09 Qualcomm Incorporated Affine motion prediction
TWI729483B (zh) * 2018-09-04 2021-06-01 聯發科技股份有限公司 視訊編解碼系統的運動向量湊整統一的方法以及裝置
CN112771872A (zh) * 2018-09-11 2021-05-07 有限公司B1影像技术研究所 使用帧间预测的图像编码/解码方法和装置
US11418793B2 (en) * 2018-10-04 2022-08-16 Qualcomm Incorporated Adaptive affine motion vector coding
WO2020084553A1 (en) * 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Motion candidate derivation based on multiple information in sub-block motion vector prediction
CN113170112A (zh) * 2018-11-22 2021-07-23 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的构建方法

Also Published As

Publication number Publication date
US20210329289A1 (en) 2021-10-21
CN111355961B (zh) 2023-11-03
CN111355961A (zh) 2020-06-30
US11706444B2 (en) 2023-07-18
EP3896970A1 (en) 2021-10-20
EP3896970A4 (en) 2022-07-20

Similar Documents

Publication Publication Date Title
CN115243039B (zh) 一种视频图像预测方法及装置
JP7279154B2 (ja) アフィン動きモデルに基づく動きベクトル予測方法および装置
CN111698515A (zh) 帧间预测的方法及相关装置
CN112055200A (zh) Mpm列表构建方法、色度块的帧内预测模式获取方法及装置
CN112204962B (zh) 图像预测方法、装置和计算机可读存储介质
JP2024056899A (ja) インター予測の方法および装置、並びに対応するエンコーダおよびデコーダ
CN111526362A (zh) 帧间预测方法和装置
CN111107373A (zh) 基于仿射预测模式的帧间预测的方法及相关装置
JP2023179684A (ja) ピクチャ予測方法および装置、およびコンピュータ可読記憶媒体
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN112118447B (zh) 融合候选运动信息列表的构建方法、装置及编解码器
CN111432219B (zh) 一种帧间预测方法及装置
CN111327907B (zh) 一种帧间预测的方法、装置、设备及存储介质
CN111263166B (zh) 一种视频图像预测方法及装置
CN113366850B (zh) 视频编码器、视频解码器及相应方法
CN112135149B (zh) 语法元素的熵编码/解码方法、装置以及编解码器
WO2020182194A1 (zh) 帧间预测的方法及相关装置
CN111372086B (zh) 视频图像解码方法及装置
CN113316939A (zh) 一种标志位的上下文建模方法及装置
CN112135128A (zh) 图像预测方法、编码树节点划分方法及其装置
CN111355961B (zh) 一种帧间预测的方法和装置
CN111479111B (zh) 图像显示顺序的确定方法、装置和视频编解码设备
WO2020135368A1 (zh) 一种帧间预测的方法和装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal