KR20190120389A - 아핀 모션 정보 도출 - Google Patents

아핀 모션 정보 도출 Download PDF

Info

Publication number
KR20190120389A
KR20190120389A KR1020197029576A KR20197029576A KR20190120389A KR 20190120389 A KR20190120389 A KR 20190120389A KR 1020197029576 A KR1020197029576 A KR 1020197029576A KR 20197029576 A KR20197029576 A KR 20197029576A KR 20190120389 A KR20190120389 A KR 20190120389A
Authority
KR
South Korea
Prior art keywords
affine
current
template
affine motion
motion parameters
Prior art date
Application number
KR1020197029576A
Other languages
English (en)
Inventor
샹 리
이-웬 천
지안레 천
샤오-창 추앙
웨이-정 치엔
위-천 순
마르타 카르체비츠
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20190120389A publication Critical patent/KR20190120389A/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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 기법들 및 시스템들이 제공된다. 예를 들어, 디코더는 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득할 수 있다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 디코더는 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용될 수 있다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정될 수 있다. 일부 경우들에서, 인코더는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있고, 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함하는 인코딩된 비디오 비트스트림을 생성할 수 있다. 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않을 수도 있다.

Description

아핀 모션 정보 도출
본 개시는 비디오 코딩 및 압축에 관한 것이다. 예를 들어, 시스템들 및 방법들이 아핀 모션 도출을 대해 설명된다.
많은 디바이스들 및 시스템들은 비디오 데이터가 프로세싱되고 소비를 위해 출력되도록 한다. 디지털 비디오 데이터는 소비자들 및 비디오 제공자들의 수요들을 충족시키기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 높은 충실도, 해상도들, 프레임 레이트들 등을 갖는 최고 품질의 비디오를 원한다. 결과로서, 이들 요구들을 충족시키기 위해 필요한 대량의 비디오 데이터는 그 비디오 데이터를 프로세싱하고 저장하는 통신 네트워크들 및 디바이스들에 부담을 지운다.
비디오 데이터를 압축하기 위해 다양한 비디오 코딩 기법들이 사용될 수도 있다. 비디오 코딩은 하나 이상의 비디오 코딩 표준들에 따라 수행된다. 예를 들어, 비디오 코딩 표준들은 고-효율 비디오 코딩 (HEVC), 어드밴스드 비디오 코딩 (AVC), MPEG (moving picture experts group) 코딩 등을 포함한다. 비디오 코딩은 일반적으로, 비디오 이미지들 또는 시퀀스들에서 존재하는 리던던시 (redundancy) 의 이점을 취하는 예측 방법들 (예를 들어, 인터-예측 (inter-prediction), 인트라-예측 (intra-prediction) 등) 을 활용한다. 비디오 코딩 기법의 중요한 목표는 비디오 품질에 대한 열화를 회피 또는 최소화하면서 더 낮은 비트 레이트를 이용하는 형태로 비디오 데이터를 압축하는 것이다. 끊임없이 진화하는 비디오 서비스가 이용가능하게 됨에 따라, 우수한 코딩 효율을 갖는 인코딩 기법이 필요하다.
본 명세서에서는 디코더-측 아핀 모션 도출을 수행하기 위한 기법들 및 시스템들이 설명된다. 아핀 모션 기반 예측은 특히, 회전, 줌, 병진 (translation) 또는 이들의 임의의 조합과 같은 복잡한 모션들이 추정되도록 할 수 있다. 일부 경우들에서, 본 명세서에 설명된 기법들을 사용하여, 아핀 모션 파라미터들이 디코딩 디바이스로 전송될 아핀 모션 정보를 필요로 하지 않으면서, 비디오 픽처들의 하나 이상의 블록들에 대해 비디오 디코딩 디바이스 (또한 디코더로서 지칭됨) 에 의해 결정될 수 있다. 예를 들어, 아핀 모션 파라미터들 (또는 아핀 모션 파라미터들과 아핀 모션 파라미터들의 예측자들 사이의 차이들) 은 그러한 아핀 모션 도출 모드에 대해 시그널링되지 않는다.
현재 블록에 대한 디코더 측 아핀 모션 도출은 템플릿들의 사용에 기초할 수 있다. 예를 들어, 현재 블록의 공간적으로 이웃하는 샘플들을 포함하는 현재 아핀 템플릿은 참조 픽처의 참조 아핀 템플릿과 함께 현재 블록에 대한 아핀 모션 파라미터들을 결정하는데 사용될 수 있다. 예를 들어, 현재 아핀 템플릿의 제어 포인트들의 아핀 모션 파라미터들은 아핀 예측 (참조 아핀 템플릿에서의 픽셀들과 연관됨) 과 현재 블록의 현재 아핀 템플릿의 재구성된 픽셀들 사이의 에러 (또는 왜곡) 를 최소화함으로써 도출될 수 있다. 아핀 모션 파라미터들은 현재 아핀 템플릿의 제어 포인트들에 대한 아핀 모션 벡터들을 정의한다. 그 후 제어 포인트들의 아핀 모션 벡터들은 현재 블록의 픽셀들 또는 서브 블록들에 대한 모션 벡터들을 결정하는데 사용될 수 있다.
적어도 하나의 예에 따라, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트를 도출하는 방법이 제공된다. 방법은 디코더에 의해, 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득하는 단계를 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 방법은 디코더에 의해 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 단계를 더 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다.
다른 예에서, 인코딩된 비디오 비트스트림의 비디오 데이터를 저장하도록 구성된 메모리 및 프로세서를 포함하는 하나 이상의 아핀 모션 파라미터들의 세트를 도출하기 위한 디코더가 제공된다. 프로세서는 인코딩된 비디오 비트스트림의 비디오 데이터를 획득하도록 구성되고 이를 획득할 수 있다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 프로세서는 또한, 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하도록 구성되고 이를 결정할 수 있다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다.
디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 다른 예에서, 명령들이 저장된 비일시적 컴퓨터 판독가능 매체가 제공되며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 디코더에 의해, 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득하게 하는 것으로서, 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하게 하고; 그리고 디코더에 의해, 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하게 하는 것으로서, 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하게 한다.
다른 예에서, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더가 제공된다. 디코더는 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득하는 수단을 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 디코더는 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 수단을 더 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다.
일부 양태들에서, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 상술한 방법, 디코더들, 및 컴퓨터 판독가능 매체는, 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하는 것을 더 포함할 수도 있다.
일부 양태들에서, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 상술한 방법, 디코더들, 및 컴퓨터 판독가능 매체는, 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하는 것을 더 포함할 수도 있다.
일부 양태들에서, 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것은, 디코더에 의해, 초기의 아핀 모션 파라미터들의 세트를 획득하는 것; 디코더에 의해, 초기의 아핀 모션 파라미터의 세트를 사용하여 현재 블록의 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 것으로서, 현재 블록의 현재 아핀 템플릿은 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 것; 디코더에 의해, 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대해 도출된 하나 이상의 아핀 모션 벡터들을 사용하여 참조 픽처의 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 것; 디코더에 의해, 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 에러를 최소화하는 것; 및 디코더에 의해, 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 최소화된 에러에 기초하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정하는 것을 포함한다.
일부 양태들에서, 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정하는 것은, 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들 및 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들을 사용하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 것; 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 것; 및 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해, 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 복수의 아핀 모션 파라미터들의 세트들로부터 아핀 모션 파라미터들의 세트를 선택하는 것을 포함한다. 일부 예들에서, 품질 메트릭은 절대 차의 합 (sum of absolute differences; SAD) 를 포함한다.
일부 양태들에서, 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정된다. 일부 경우들에서, 병진 모션 벡터는 프레임-레이트-업-컨버전 (frame-rate-up-conversion; FRUC) 템플릿 매칭을 사용하여 결정된다.
일부 양태들에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정된다.
일부 양태들에서, 아핀 모션 파라미터들의 세트를 결정하기 위해 인코딩된 비디오 비트스트림으로부터 아핀 모션 파라미터들이 디코딩되지 않는다.
일부 양태들에서, 현재 블록의 현재 아핀 템플릿은 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함한다. 일부 양태들에서, 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함한다.
일부 양태들에서, 현재 아핀 템플릿은 L-형상 블록을 포함한다. L-형상 블록은 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함한다.
일부 경우들에서, 디코더는 디코딩된 비디오 데이터를 디스플레이하기 위한 디스플레이를 갖는 모바일 디바이스의 일부이다. 일부 경우들에서, 디코더는 픽처들을 캡처하기 위한 카메라를 갖는 모바일 디바이스의 일부이다.
적어도 하나의 예에 따라, 비디오 데이터를 인코딩하는 방법이 제공된다. 방법은 비디오 데이터를 획득하는 단계를 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 방법은 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 단계를 더 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다. 방법은 인코딩된 비디오 비트스트림을 생성하는 단계를 더 포함한다. 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함한다. 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는다.
다른 예에서, 비디오 데이터를 저장하도록 구성된 메모리 및 프로세서를 포함하는 비디오 데이터를 인코딩하기 위한 인코더가 제공된다. 프로세서는 비디오 데이터를 획득하도록 구성되고 이를 획득할 수 있다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 프로세서는 또한, 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하도록 구성되고 이를 결정할 수 있다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다. 프로세서는 또한, 인코딩된 비디오 비트스트림을 생성하도록 구성되고 이를 생성할 수도 있으며, 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함하고, 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는다.
비디오 데이터를 인코딩하는 다른 예에서, 명령들이 저장된 비일시적 컴퓨터 판독가능 매체가 제공되며, 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 비디오 데이터를 획득하게 하는 것으로서, 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하게 하고; 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하게 하는 것으로서, 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하게 하며; 그리고 인코딩된 비디오 비트스트림을 생성하게 하는 것으로서, 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함하고, 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들을 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는, 상기 인코딩된 비디오 비트스트림을 생성하게 한다.
다른 예에서, 비디오 데이터를 인코딩하기 위한 인코더가 제공된다. 인코더는 비디오 데이터를 획득하는 수단을 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 인코더는 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 수단을 더 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다. 인코더는 인코딩된 비디오 비트스트림을 생성하는 수단을 더 포함한다. 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함한다. 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한 상술한 방법, 인코더들, 및 컴퓨터 판독가능 매체는, 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하는 것을 더 포함할 수도 있다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한 상술한 방법, 디코더들, 및 컴퓨터 판독가능 매체는, 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하는 것을 더 포함할 수도 있다.
일부 양태들에서, 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것은, 초기의 아핀 모션 파라미터들의 세트를 획득하는 것; 초기의 아핀 모션 파라미터의 세트를 사용하여 현재 블록의 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 것으로서, 현재 블록의 현재 아핀 템플릿은 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 것; 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대해 도출된 하나 이상의 아핀 모션 벡터들을 사용하여 참조 픽처의 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 것; 적어도 현재 아핀 템플릿에서의 적어도 하나 이상의 픽셀들과 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 에러를 최소화하는 것; 및 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 최소화된 에러에 기초하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정하는 것을 포함한다.
일부 양태들에서, 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정하는 것은, 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들 및 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들을 사용하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 것; 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 것; 및 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해, 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 복수의 아핀 모션 파라미터들의 세트들로부터 아핀 모션 파라미터들의 세트를 선택하는 것을 포함한다. 일부 예들에서, 품질 메트릭은 절대 차의 합 (SAD) 를 포함한다.
일부 양태들에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정된다. 일부 경우들에서, 병진 모션 벡터는 프레임-레이트-업-컨버전 (FRUC) 템플릿 매칭을 사용하여 결정된다.
일부 양태들에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정된다.
일부 양태들에서, 현재 블록의 현재 아핀 템플릿은 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함한다. 일부 예들에서, 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함한다.
일부 양태들에서, 현재 아핀 템플릿은 L-형상 블록을 포함한다. L-형상 블록은 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함한다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한 상술한 방법, 인코더들, 및 컴퓨터 판독가능 매체는 인코딩된 비디오 비트스트림을 저장하는 것을 더 포함할 수 있다. 일부 경우들에서, 인코더 또는 인코더를 포함하는 장치의 프로세서는, 인코딩된 비디오 비트스트림을 인코더의 메모리 또는 인코더를 포함하는 장치의 메모리에 저장하도록 구성된다.
일부 양태들에서, 비디오 데이터를 인코딩하기 위한 상술한 방법, 인코더들, 및 컴퓨터 판독가능 매체는 인코딩된 비디오 비트스트림을 송신하는 것을 더 포함할 수 있다. 일부 경우들에서, 인코더는 인코딩된 비디오 비트스트림을 송신하도록 구성된 송신기를 포함한다. 일부 경우들에서, 인코더는 인코더를 송신하도록 구성된 송신기를 갖는 디바이스의 일부이다.
일부 양태들에서, 인코더는 디코딩된 비디오 데이터를 디스플레이하기 위한 디스플레이를 갖는 모바일 디바이스의 일부이다. 일부 양태들에서, 인코더는 픽처들을 캡처하기 위한 카메라를 갖는 모바일 디바이스의 일부이다.
이 개요는 청구된 청구물의 핵심적인 또는 본질적인 피처들을 식별하도록 의도되는 것도 아니고, 청구된 청구물의 범위를 결정하기 위해 별도로 이용되도록 의도되지도 않는다. 청구물은 본 특허의 전체 명세서, 일부 또는 모든 도면들 및 각각의 청구항의 적절한 부분들을 참조하여 이해되어야 한다.
전술한 내용은, 다른 피처들 및 실시형태들과 함께, 다음의 명세서, 청구항 및 첨부 도면을 참조하면 더욱 명백해질 것이다.
본 발명의 예시적 실시형태들은 다음 도면들을 참조하여 하기에서 상세히 설명된다.
도 1 은 일부 예들에 따른, 인코딩 디바이스 및 디코딩 디바이스의 예를 도시하는 블록 다이어그램이다.
도 2 는 일부 예들에 따른, HEVC 에서의 코딩 유닛 (CU) 구조의 예를 도시하는 다이어그램이다.
도 3 은 일부 예들에 따른, 인터 예측 모드에 대한 파티션 모드들의 예를 도시하는 다이어그램이다.
도 4a 는 일부 예들에 따른, 병합 인터 예측 모드에 대한 공간적 이웃 모션 벡터 (MV) 후보들을 도출하기 위한 방법의 예를 도시하는 다이어그램이다.
도 4b 는 일부 예들에 따른, 어드밴스드 모션 벡터 예측 (AMVP) 인터 예측 모드에 대한 공간적 이웃 MV 후보들을 도출하기 위한 방법의 예를 도시하는 다이어그램이다.
도 5a 는 일부 예들에 따른, 쿼드-트리-이진-트리 (quad-tree-binary-tree; QTBT) 구조를 사용하는 블록 파티셔닝의 예를 도시하는 다이어그램이다.
도 5b 는 일부 예들에 따른, 도 5a 에 나타낸 블록 파티셔닝에 대한 대응 트리 구조를 도시하는 다이어그램이다.
도 6 은 일부 예들에 따른, QTBT 에서 이용가능한 코딩 유닛 (CU) 분할 모드들의 세트의 예를 도시하는 다이어그램이다.
도 7 은 일부 예들에 따른, 현재 블록에 대한 간략화된 아핀 모션 모델의 예를 도시하는 다이어그램이다.
도 8 은 일부 예들에 따른, 블록의 서브 블록들의 모션 벡터 필드의 예를 도시하는 다이어그램이다.
도 9 는 일부 예들에 따른, 아핀 인터 (AF_INTER) 모드에서의 모션 벡터 예측의 예를 도시하는 다이어그램이다.
도 10a 및 도 10b 는 일부 예들에 따른, 아핀 병합 (AF_MERGE) 모드에서의 모션 벡터 예측의 예를 도시하는 다이어그램들이다.
도 11a 는 일부 예들에 따른, 현재 블록 및 현재 블록의 현재 아핀 템플릿의 예를 도시하는 다이어그램이다.
도 11b 는 일부 예들에 따른, 현재 아핀 템플릿을 갖는 현재 블록 및 참조 아핀 템플릿을 갖는 참조 픽처의 참조 블록을 도시하는 다이어그램이다.
도 11c 는 일부 예들에 따른, 블록의 서브 블록들의 모션 벡터 필드의 예를 도시하는 다이어그램이다.
도 12 는 일부 예들에 따른, FRUC 에 대한 템블릿 매칭 기반 모션 추정의 예를 도시하는 다이어그램이다.
도 13 은 일부 예들에 따른, 프레임 레이트 업-컨버전 (FRUC) 에 대한 양방향 매칭 (bilateral matching) 기반 모션 추정의 예를 도시하는 다이어그램이다.
도 14 는 일부 예들에 따른, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 프로세스의 예를 도시하는 플로우 챠트이다.
도 15 는 일부 예들에 따른, 비디오 데이터를 인코딩하기 위한 프로세스의 예를 예시하는 플로우 챠트이다.
도 16 은 일부 예들에 따른, 일 예의 인코딩 디바이스를 도시하는 블록 다이어그램이다.
도 17 은 일부 예들에 따른 일 예의 비디오 디코딩 디바이스를 도시하는 블록 다이어그램이다.
소정의 양태들 및 실시형태들이 이하에 제공된다. 이들 양태들 및 구현들 중 일부는 독립적으로 적용될 수도 있고 그 중 일부는 당업자에게 명백한 바와 같이 조합하여 적용될 수도 있다. 다음의 설명에서, 설명의 목적으로, 다양한 구현들의 철저한 이해를 제공하기 위해 다수의 특정 상세들이 제시된다. 그러나, 다양한 구현들이 이들 특정 상세들 없이도 실시될 수도 있음이 분명할 것이다. 도면 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 단지 예시적인 구현들을 제공하며, 본 개시의 범위, 적용가능성 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적 구현들의 다음의 설명은 일 예를 구현하기 위해 가능하게 하는 설명을 당업자에게 제공할 것이다. 첨부된 청구항들에 기술된 바와 같이 본 발명의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 배열에서 다양한 변경들이 이루어질 수도 있음을 이해해야 한다.
상이한 구현들의 철저한 이해를 제공하기 위하여 특정 상세들이 다음의 설명에 주어진다. 그러나, 그 구현들은 이들 특정 상세들 없이도 실시될 수도 있음이 당업자에 의해 이해될 것이다. 예를 들면, 회로, 시스템, 네트워크, 프로세스 및 다른 컴포넌트들은, 실시형태들을 불필요한 상세들에서 불분명하게 하지 않기 위하여 블록 다이어그램 형태의 컴포넌트들로서 보여질 수도 있다. 다른 예들에서, 잘 알려진 회로, 프로세스들, 알고리즘, 구조, 및 기술들은 실시형태들을 불분명하게 하는 것을 피하기 위하여 불필요한 상세 없이 도시될 수도 있다.
또한, 개별 구현들은 플로우차트, 플로우 다이어그램, 데이터 플로우 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시되는 프로세스로서 설명될 수도 있다는 것에 유의한다. 플로우차트는 순차적 프로세스로서 동작들을 설명할 수도 있지만, 많은 동작들은 병렬로, 또는 동시에 수행될 수 있다. 또한, 동작들의 순서는 재배열될 수도 있다. 프로세스는 그의 동작들이 완료되면 종결되지만, 도면에 포함되지 않은 추가의 단계들을 가질 수 있다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 경우, 그 종료는 그 함수의 호출 함수 또는 메인 함수로의 복귀에 대응할 수 있다.
용어 "컴퓨터 판독가능 매체" 는 휴대용 또는 고정식 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 반송할 수 있는 다양한 다른 매체들을 포함하지만 이에 한정되지 않는다. 컴퓨터 판독가능 매체는 데이터가 저장될 수 있고 반송파 및/또는 무선 또는 유선 연결을 통해 전파되는 일시적인 전자 신호를 포함하지 않는 비일시적인 매체를 포함할 수도 있다. 비일시적 매체의 예들은 자기 디스크 또는 테이프, 광학 저장 매체들, 예컨대 콤팩트 디스크 (CD) 또는 디지털 다기능 디스크 (DVD), 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함하지만 이에 제한되지 않는다. 컴퓨터 판독가능 매체는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수도 있는 코드 및/또는 머신 실행가능 명령들을 저장할 수도 있다. 코드 세그먼트는, 정보, 데이터, 인수들 (arguments), 파라미터들, 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함한 임의의 적합한 수단을 통해 전달, 포워딩, 또는 송신될 수도 있다.
또한, 여러 예들은, 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 이들의 임의의 조합에 의해 구현될 수도 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들 (예를 들어, 컴퓨터 프로그램 제품) 은 컴퓨터 판독가능 또는 머신 판독가능 매체에 저장될 수도 있다. 프로세서(들) 은 필요한 작업들을 수행할 수도 있다.
더 많은 디바이스들 및 시스템들이 소비자에게 디지털 비디오 데이터를 소비 할 능력을 제공함에 따라, 효율적인 비디오 코딩 기술에 대한 필요가 더 중요해지고 있다. 비디오 코딩은 디지털 비디오 데이터에 존재하는 다량의 데이터를 핸들링하는데 필요한 저장 및 송신 요건들을 감소시키기 위해 필요하다. 다양한 비디오 코딩 기법들이 높은 비디오 품질을 유지하면서 더 낮은 비트 레이트를 사용하는 형태로 비디오 데이터를 압축하는데 사용될 수도 있다.
도 1 은 인코딩 디바이스 (104) 및 디코딩 디바이스 (112) 를 포함하는 비디오 코딩 시스템 (100) 의 예를 도시하는 블록 다이어그램이다. 인코딩 디바이스 (104) 는 소스 디바이스의 일부일 수도 있고, 디코딩 디바이스 (112) 는 수신 디바이스의 일부일 수도 있다. 소스 디바이스 및/또는 수신 디바이스는 이동식 또는 정지식 전화 핸드셋 (예를 들어, 스마트 폰, 셀룰러 폰 등), 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스, 인터넷 프로토콜 (IP) 카메라, 또는 임의의 다른 적절한 전자 디바이스와 같은 전자 디바이스를 포함할 수도 있다. 일부 예들에서, 소스 디바이스 및 수신 디바이스는 무선 통신을 위한 하나 이상의 무선 트랜시버들을 포함할 수도 있다. 여기에 기술된 코딩 기술은 (예를 들면, 인터넷을 통한) 스트리밍 비디오 송신, 텔레비전 브로드캐스트 또는 송신, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션을 포함하는 다양한 멀티미디어 애플리케이션에서의 비디오 코딩에 적용가능하다. 일부 예들에 있어서, 시스템 (100) 은 비디오 컨퍼런싱, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 게이밍 및/또는 비디오 텔레포니와 같은 애플리케이션들을 지원하기 위해 일방 또는 양방 비디오 송신을 지원할 수 있다.
인코딩 디바이스 (104) (또는 인코더) 는 비디오 코딩 표준 또는 프로토콜을 사용하여 비디오 데이터를 인코딩하여 인코딩된 비디오 비트스트림을 생성하는데 사용될 수 있다. 비디오 코딩 표준들의 예들은, 그 스케일러블 비디오 코딩 (SVC) 및 멀티-뷰 비디오 코딩 (MVC) 확장들, 및 고효율 비디오 코딩 (HEVC) 또는 ITU-T H.265 를 포함하여, ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼, ITU-T H.264 (ISO/IEC MPEG-4 AVC 로서도 알려짐) 를 포함한다. 범위 및 스크린 콘텐츠 코딩 확장들, 3D 비디오 코딩 (3D-HEVC) 및 멀티뷰 확장들 (MV-HEVC) 그리고 스케일러블 확장 (scalable extension, SHVC) 을 포함하는, 멀티-계층 비디오 코딩을 다루는 HEVC에 대한 다양한 확장들이 존재한다. HEVC 및 그것의 확장들은 JCT-VC (Joint Collaboration Team on Video Coding) 뿐만 아니라 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹 (MPEG) 의 JCT-3V (Joint Collaboration Team on 3D Video Coding Extension Development) 에 의해 개발되었다. MPEG 및 ITU-T VCEG 는 차세대의 비디오 코딩 표준을 위한 새로운 코딩 툴들을 탐구하기 위해 JVET (joint exploration video team) 을 또한 형성했다. 참조 소프트웨어는 JEM (joint exploration model) 이라 지칭된다.
여기에 기술된 많은 예는 JEM 모델, HEVC 표준 및/또는 그 확장을 사용하는 예를 제공한다. 그러나, 여기서 설명된 기술들 및 시스템들은 또한 AVC, MPEG, 그 확장들, 또는 현재 존재하는 다른 적절한 코딩 표준들 또는 장래의 코딩 표준들과 같은 다른 코딩 표준들에도 적용될 수도 있다. 따라서, 여기에 기술된 기술들 및 시스템들은 특정 비디오 코딩 표준을 참조하여 기술될 수도 있지만, 당업자는 설명이 그러한 특정 표준에만 적용되는 것으로 해석되지 않아야 함을 알 것이다.
도 1 을 참조하면, 비디오 소스 (102) 는 비디오 데이터를 인코딩 디바이스 (104) 에 제공할 수도 있다. 비디오 소스 (102) 는 소스 디바이스의 일부일 수도 있거나, 또는 소스 디바이스와는 다른 디바이스의 일부일 수도 있다. 비디오 소스 (102) 는 비디오 캡처 디바이스 (예를 들어, 비디오 카메라, 카메라 폰, 비디오 폰 등), 저장된 비디오를 포함하는 비디오 아카이브, 비디오 데이터를 제공하는 비디오 서버 또는 콘텐츠 제공자, 비디오 서버 또는 콘텐츠 제공자로부터 비디오를 수신하는 비디오 피드 인터페이스, 컴퓨터 그래픽 비디오 데이터를 생성하는 컴퓨터 그래픽 시스템, 이러한 소스들의 조합, 또는 임의의 다른 적합한 비디오 소스를 포함할 수도 있다.
비디오 소스 (102) 로부터의 비디오 데이터는 하나 이상의 입력 픽처들 또는 프레임들을 포함할 수도 있다. 비디오의 픽처 또는 프레임은 장면의 정지 이미지이다. 인코딩 디바이스 (104) 의 인코더 엔진 (106) (또는 인코더) 은 인코딩된 비디오 비트스트림을 생성하기 위해 비디오 데이터를 인코딩한다. 일부 예들에서, 인코딩된 비디오 비트스트림 (또는 "비디오 비트스트림” 또는 "비트스트림") 은 일련의 하나 이상의 코딩된 비디오 시퀀스들이다. 코딩된 비디오 시퀀스 (CVS) 는 소정의 특성들로 그리고 베이스 계층에서 랜덤 액세스 포인트 픽처를 갖는 액세스 유닛 (AU) 으로 시작하여 소정의 특성들로 그리고 베이스 계층에서의 랜덤 액세스 포인트 픽처를 갖는 다음 AU 까지 그리고 이를 포함하지 않는 일련의 AU 들을 포함한다. 예를 들어, CVS 를 시작하는 랜덤 액세스 포인트 픽처의 소정의 특성들은 1 과 동일한 RASL 플래그 (예: NoRaslOutputFlag) 를 포함할 수도 있다. 그렇지 않으면, (0 과 동일한 RASL 플래그를 갖는) 랜덤 액세스 포인트 픽처는 CVS 를 시작하지 않는다. 액세스 유닛 (AU) 은 동일한 출력 시간을 공유하는 코딩된 픽처들에 대응하는 하나 이상의 코딩된 픽처들 및 제어 정보를 포함한다. 픽처들의 코딩된 슬라이스들은 비트스트림 레벨에서 NAL (Network Abstraction Layer) 유닛들이라고 하는 데이터 유닛들로 캡슐화된다. 예를 들어, HEVC 비디오 비트스트림은 NAL 유닛들을 포함하는 하나 이상의 CVS 들을 포함할 수도 있다. NAL 유닛들 각각은 NAL 유닛 헤더를 갖는다. 일 예에서, 헤더는 (멀티-계층 확장을 제외하고) H.264/AVC 에 대해 1 바이트 그리고 HEVC 에 대해 2 바이트이다. NAL 유닛 헤더에서의 신택스 엘리먼트들은 지정된 비트들을 취하고 따라서, 특히 전송 스트림, 실시간 전송 (Real-time Transport, RTP) 프로토콜, 파일 포맷과 같은 모든 종류들의 시스템들 및 전송 계층들에 가시적이다.
비디오 코딩 계층 (VCL) NAL 유닛들 및 비-VCL NAL 유닛들을 포함하는 2개의 클래스들의 NAL 유닛들이 HEVC 표준에 존재한다. VCL NAL 유닛은 코딩된 픽처 데이터의 하나의 슬라이스 또는 슬라이스 세그먼트 (이하 설명됨) 를 포함하고, 비-VCL NAL 유닛은 하나 이상의 코딩된 픽처와 관련된 제어 정보를 포함한다. 일부 경우들에서, NAL 유닛은 패킷이라고 지칭될 수 있다. HEVC AU 는 코딩된 픽처 데이터를 포함하는 VCL NAL 유닛들 및 코딩된 픽처 데이터에 대응하는 비-VCL NAL 유닛들 (존재하는 경우) 을 포함한다.
NAL 유닛들은 비디오 내의 픽처들의 코딩된 표현과 같은 비디오 데이터의 코딩된 표현 (예를 들어, 인코딩된 비디오 비트스트림, 비트스트림의 CVS 등) 을 형성하는 비트들의 시퀀스를 포함할 수도 있다. 인코더 엔진 (106) 은 각각의 픽처를 다수의 슬라이스들로 파티셔닝함으로써 픽처들의 코딩된 표현들을 생성한다. 슬라이스는 그 슬라이스 내의 정보가 동일한 픽처 내의 다른 슬라이스들로부터의 데이터에 종속되지 않고 코딩되도록 다른 슬라이스들에 대해 독립적이다. 슬라이스는 독립 슬라이스 세그먼트를 포함하는 하나 이상의 슬라이스 세그먼트들, 및 존재하는 경우, 이전 슬라이스 세그먼트들에 의존하는 하나 이상의 종속 슬라이스 세그먼트들을 포함한다. 슬라이스들은 그 후 루마 샘플들 및 크로마 샘플들의 코딩 트리 블록들 (CTBs) 로 파티셔닝된다. 샘플들에 대한 신택스와 함께, 루마 샘플들의 CTB 와 크로마 샘플들의 하나 이상의 CTB 들은 코딩 트리 유닛 (CTU) 으로서 지칭된다. CTU 는 HEVC 인코딩을 위한 기본 프로세싱 단위이다. CTU 는 다양한 사이즈의 다중 코딩 유닛들 (CUs) 로 분할될 수 있다. CU 는 코딩 블록들 (CBs) 로서 지칭되는 루마 및 크로마 샘플 배열들을 포함한다.
루마 및 크로마 CB들은 예측 블록들 (PB) 로 더 분할될 수 있다. PB 는 (이용 가능하거나 사용을 위해 인에이블될 때) 인터 예측 또는 인트라 블록 복사 예측에 대해 동일한 모션 파라미터들을 사용하는 루마 성분 또는 크로마 성분의 샘플들의 블록이다. 루마 PB 및 하나 이상의 크로마 PB 들은, 연관된 신택스와 함께, 예측 유닛 (PU) 을 형성한다. 인터 예측을 위해, 모션 파라미터들의 세트 (예를 들어, 하나 이상의 모션 벡터들, 참조 인덱스들 등) 가 각각의 PU 에 대해 비트스트림으로 시그널링되고, 루마 PB 및 하나 이상의 크로마 PB 들의 인터 예측을 위해 사용된다. 모션 파라미터들은 모션 정보로서도 지칭될 수 있다. CB 는 또한 하나 이상의 변환 블록들 (TB) 로 파티셔닝될 수 있다. TB 는 예측 잔차 신호를 코딩하기 위해 동일한 2 차원 변환이 적용되는 컬러 성분의 샘플들의 정사각형 블록을 나타낸다. 변환 유닛 (TU) 은 루마 및 크로마 샘플들의 TB 들 및 대응하는 신택스 엘리먼트들을 나타낸다.
CU 의 사이즈는 코딩 모드의 사이즈에 대응하고, 형상이 정사각형일 수도 있다. 예를 들어, CU 의 사이즈는 8 x 8 샘플, 16 x 16 샘플, 32 x 32 샘플, 64 x 64 샘플 또는 대응하는 CTU 의 사이즈까지의 임의의 다른 적절한 사이즈일 수도 있다. 구절 "NxN" 은 본 명세서에서 수직 및 수평 치수들의 관점에서의 비디오 블록의 픽셀 치수들 (예를 들어, 8 픽셀 x 8 픽셀) 을 지칭하기 위해 사용된다. 블록에 있어서의 픽셀들은 행 및 열로 배열될 수도 있다. 일부 예들에서, 블록들은 수평 방향에서 수직 방향에서와 동일한 수의 픽셀들을 갖지 않을 수도 있다. CU 와 연관된 신택스 데이터는, 예를 들어, 하나 이상의 PU들로의 CU 의 파티셔닝을 기술할 수도 있다. 파티셔닝 모드들은 CU 가 인트라-예측 모드 인코딩되든지, 또는 인터-예측 모드 인코딩되든지 간에 상이할 수도 있다. PU들은 형상이 비-정사각형이도록 파티셔닝될 수도 있다. CU 와 연관된 신택스 데이터는 또한, 예를 들어, CTU 에 따라 하나 이상의 TU들로의 CU 의 파티셔닝을 기술할 수도 있다. TU 는 형상이 정사각형이거나 비-정사각형일 수 있다.
HEVC 표준에 따르면, 변환은 변환 유닛 (TU) 을 사용하여 수행될 수도 있다. TU 들은 상이한 CU 들에 대해 다를 수도 있다. TU 들은 주어진 CU 내의 PU 들의 사이즈에 기초하여 사이즈가 정해질 수도 있다. TU들은 PU들과 동일한 사이즈이거나 그 보다 더 작을 수도 있다. 일부 예들에 있어서, CU 에 대응하는 잔차 샘플들은 잔차 쿼드트리 (RQT) 로서 알려진 쿼드트리 구조를 이용하여 더 작은 유닛들로 세분될 수도 있다. RQT 의 리프 노드들은 TU들에 대응할 수도 있다. TU들과 연관된 픽셀 차이 값들은 변환 계수들을 생성하도록 변환될 수도 있다. 변환 계수들은 그 후 인코더 엔진 (106) 에 의해 양자화될 수도 있다.
일단 비디오 데이터의 픽처들이 CU 들로 파티셔닝되면, 인코더 엔진 (106) 은 예측 모드를 사용하여 각각의 PU를 예측한다. 그 후, 예측 유닛 또는 예측 블록은 잔차들 (하기에 기재됨) 을 얻기 위해 원래의 비디오 데이터로부터 감산된다. 각각의 CU 에 대해, 예측 모드는 신택스 데이터를 사용하여 비트스트림 내부에서 시그널링될 수도 있다. 예측 모드는 인트라 예측 (또는 인트라-픽처 예측) 또는 인터-예측 (또는 인터-픽처 예측) 을 포함할 수도 있다. 인트라 예측은 픽처 내에서 공간적으로 이웃하는 샘플들 간의 상관을 활용한다. 예를 들어, 인트라-예측을 사용하여, 각각의 PU 는, 예를 들어, PU 에 대한 평균값을 발견하기 위한 DC 예측, PU 에 대해 평면 표면을 피팅 (fitting) 하기 위한 평면 예측, 이웃하는 데이터로부터 외삽하기 위한 방향 예측, 또는 임의의 다른 적절한 타입의 예측을 사용하여 동일한 픽처 내의 이웃하는 이미지 데이터로부터 예측된다. 인터 예측은 이미지 샘플들의 블록에 대한 모션 보상된 예측을 도출하기 위해 픽처들 간의 시간 상관을 사용한다. 예를 들어, 인터-예측을 사용하여, 각각의 PU 는 (출력 순서로 현재 픽처의 전 또는 후의) 하나 이상의 기준 픽처들에서의 이미지 데이터로부터의 모션 보상 예측을 사용하여 예측된다. 인터 픽처 또는 인트라 픽처 예측을 사용하여 픽처 영역을 코딩할지 여부의 결정은 예를 들어, CU 레벨에서 행해질 수도 있다.
일부 예들에서, 픽처의 하나 이상의 슬라이스는 슬라이스 타입이 할당된다. 슬라이스 타입은 I 슬라이스, P 슬라이스 및 B 슬라이스를 포함한다. I 슬라이스 (인트라-프레임, 독립적으로 디코딩가능) 는 인트라-예측에 의해서만 코딩되는 픽처의 슬라이스이며, 따라서 I 슬라이스는 슬라이스의 임의의 예측 유닛 또는 예측 블록을 예측하기 위해 프레임 내의 데이터만을 필요로 하기 때문에 독립적으로 디코딩가능하다. P 슬라이스 (단방향 예측 프레임들) 는 인트라-예측 및 단방향 인터-예측으로 코딩될 수도 있는 픽처의 슬라이스이다. P 슬라이스 내의 각각의 예측 유닛 또는 예측 블록은 인트라 예측 또는 인터-예측으로 코딩된다. 인터-예측이 적용될 때, 예측 유닛 또는 예측 블록은 하나의 참조 픽처에 의해서만 예측되며 이에 따라, 참조 샘플들은 하나의 프레임의 하나의 참조 영역으로부터만이다. B 슬라이스 (양방향 예측성 프레임들) 는 인트라-예측 및 인터-예측 (예를 들어, 이중 예측 또는 단일 예측) 으로 코딩될 수도 있는 픽처의 슬라이스이다. B 슬라이스의 예측 유닛 또는 예측 블록은 2 개의 참조 픽처들로부터 양방향으로 예측될 수도 있고, 여기서, 각각의 픽처가 하나의 참조 영역에 기여하고 2 개의 참조 영역들의 샘플 세트들이 (예를 들어, 동일한 가중치 또는 상이한 가중치를 이용하여) 가중되어 양방향 예측 블록의 예측 신호를 생성한다. 위에 설명된 바와 같이, 하나의 픽처의 슬라이스들은 독립적으로 코딩된다. 일부 경우들에서, 픽처는 단지 하나의 슬라이스로서 코딩될 수 있다.
PU 는 예측 프로세스와 관련된 데이터 (예를 들어, 모션 파라미터들 또는 다른 적절한 데이터) 를 포함할 수도 있다. 예를 들어, PU 가 인트라-예측을 이용하여 인코딩될 때, PU 는 PU 에 대한 인트라-예측 모드를 기술하는 데이터를 포함할 수도 있다. 다른 예로서, PU 가 인터-예측을 이용하여 인코딩될 때, PU 는 PU 에 대한 모션 벡터를 정의하는 데이터를 포함할 수도 있다. PU 에 대한 모션 벡터를 정의하는 데이터는 예를 들어, 모션 벡터 (
Figure pct00001
) 의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트 (
Figure pct00002
), 모션 벡터에 대한 해상도 (예를 들어, 정수 정밀도, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 포인팅하는 참조 픽처, 참조 인덱스, 모션 벡터에 대한 참조 픽처 리스트 (예를 들어, 리스트 0, 리스트 1, 또는 리스트 C) 또는 이들의 임의의 조합을 기술할 수도 있다.
그 다음, 인코딩 디바이스 (104) 는 변환 및 양자화를 수행할 수도 있다. 예를 들어, 예측에 이어, 인코더 엔진 (106) 은 PU 에 대응하는 잔차 값들을 계산할 수도 있다. 잔차 값들은 코딩되는 픽셀들의 현재 블록 (PU) 과 현재 블록을 예측하기 위해 이용되는 예측 블록 (예를 들어, 현재 블록의 예측된 버전) 사이의 픽셀 차이 값들을 포함할 수도 있다. 예를 들어, 예측 블록을 생성한 후 (예를 들어, 인터-예측 또는 인트라-예측을 발행한 후), 인코더 엔진 (106) 은 현재 블록으로부터 예측 유닛에 의해 생성된 예측 블록을 감산하는 것에 의해 잔차 블록을 생성할 수 있다. 잔차 블록은 현재 블록의 픽셀 값들과 예측 블록의 픽셀 값들 사이의 차이들을 정량화하는 픽셀 차이 값들의 세트를 포함한다. 일부 예들에서, 잔차 블록은 2 차원 블록 포맷 (예를 들어, 2 차원 매트릭스 또는 픽셀 값들의 어레이) 으로 표현될 수도 있다. 이러한 예들에서, 잔차 블록은 픽셀 값들의 2 차원 표현이다.
예측이 수행된 후에 남을 수 있는 임의의 잔차 데이터는 이산 코사인 변환, 이산 사인 변환, 정수 변환, 웨이브렛 변환, 다른 적절한 변환 함수 또는 이들의 임의의 조합에 기초할 수도 있는 블록 변환을 사용하여 변환된다. 일부 경우들에서, 하나 이상의 블록 변환들 (예를 들어, 사이즈 32 x 32, 16 x 16, 8 x 8, 4 x 4 등) 이 각 CU 의 잔차 데이터에 적용될 수도 있다. 일부 예들에서, TU 는 인코더 엔진 (106) 에 의해 구현되는 변환 및 양자화 프로세스를 위해 사용될 수도 있다. 하나 이상의 PU 들을 갖는 주어진 CU 는 또한 하나 이상의 TU들을 포함할 수도 있다. 아래에 더 상세히 기술되는 바와 같이, 잔차 값들은 블록 변환을 사용하여 변환 계수로 변환될 수 있고, 그 후 TU들을 사용하여 양자화되고 스캔되어 엔트로피 코딩을 위한 직렬화된 변환 계수를 생성할 수도 있다.
일부 예들에서, CU 의 PU들을 이용한 인트라-예측성 또는 인터-예측성 코딩에 이어서, 인코더 엔진 (106) 은 CU 의 TU들을 위한 잔차 데이터를 계산할 수도 있다. PU들은 공간 도메인 (또는 픽셀 도메인) 의 픽셀 데이터를 포함할 수도 있다. TU들은 블록 변환의 적용에 후속하는 변환 도메인에서의 계수들을 포함할 수도 있다. 이전에 주지된 바와 같이, 잔차 데이터는 인코딩되지 않은 픽처의 픽셀들과 PU들에 대응하는 예측 값들 사이의 픽셀 차이 값들에 대응할 수도 있다. 인코더 엔진 (106) 은 CU 에 대한 잔차 데이터를 포함하는 TU들을 형성하고, 그 후, TU들을 변환하여 CU 에 대한 변환 계수들을 생성할 수도 있다.
인코더 엔진 (106) 은 변환 계수들의 양자화를 수행할 수도 있다. 양자화는 변환 계수들을 양자화하여 추가의 압축을 제공하여, 계수들을 표현하기 위해 이용되는 데이터의 양을 감소시킨다. 예를 들어, 양자화는 그 계수들의 일부 또는 전부와 연관되는 비트 깊이를 감소시킬 수도 있다. 일 예에서, n-비트 값을 갖는 계수는 양자화 동안 m-비트 값으로 라운딩 다운될 수도 있으며, 여기서, n 은 m 보다 더 크다.
일단 양자화가 수행되면, 코딩된 비디오 비트스트림은 양자화된 변환 계수들, 예측 정보 (예를 들어, 예측 모드들, 모션 벡터들, 블록 벡터들 등), 파티셔닝 정보, 및 다른 신택스 데이터와 같은 임의의 다른 적합한 데이터를 포함한다. 코딩된 비디오 비트스트림의 상이한 엘리먼트들은 인코더 엔진 (106) 에 의해 엔트로피 인코딩될 수도 있다. 일부 예들에 있어서, 인코더 엔진 (106) 은 양자화된 변환 계수들을 스캔하기 위한 미리정의된 스캔 순서를 이용하여, 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성할 수도 있다. 일부 예들에 있어서, 인코더 엔진 (106) 은 적응적 스캔을 수행할 수도 있다. 양자화된 변환 계수를 스캐닝하여 벡터 (예를 들어, 1 차원 벡터) 를 형성한 후, 인코더 엔진 (106) 은 벡터를 엔트로피 인코딩할 수 있다. 예를 들어, 인코더 엔진 (106) 은 컨텍스트 적응적 가변 길이 코딩, 컨텍스트 적응적 이진 산술 코딩, 신택스 기반 컨텍스트 적응적 이진 산술 코딩, 확률 간격 파티셔닝 엔트로피 코딩, 또는 다른 적절한 엔트로피 인코딩 기법을 사용할 수도 있다.
전술한 바와 같이, HEVC 비트스트림은 VCL NAL 유닛들 및 비-VCL NAL 유닛들을 포함하는 NAL 유닛들의 그룹을 포함한다. VCL NAL 유닛들은 코딩된 비디오 비트스트림을 형성하는 코딩된 픽처 데이터를 포함한다. 예를 들어, 코딩된 비디오 비트스트림을 형성하는 비트들의 시퀀스는 VCL NAL 유닛들에서 재전송된다. 비-VCL NAL 유닛은 다른 정보 이외에 인코딩된 비디오 비트스트림에 관한 상위 레벨 정보를 갖는 파라미터 세트들을 포함할 수도 있다. 예를 들어, 파라미터 세트는 비디오 파라미터 세트 (VPS), 시퀀스 파라미터 세트 (SPS) 및 픽처 파라미터 세트 (PPS) 를 포함할 수도 있다. 파라미터 세트들의 목표의 예는 비트 레이트 효율성, 에러 복원력 및 시스템 계층 인터페이스들의 제공을 포함한다. 각각의 슬라이스는 단일의 활성 PPS, SPS 및 VPS 를 참조하여, 디코딩 디바이스 (112) 가 슬라이스를 디코딩하는데 사용할 수도 있는 정보에 액세스한다. 식별자 (ID) 는 VPS ID, SPS ID 및 PPS ID 를 포함하여 각 파라미터 세트에 대해 코딩될 수도 있다. SPS 는 SPS ID 와 VPS ID 를 포함한다. PPS 는 PPS ID 와 SPS ID 를 포함한다. 각각의 슬라이스 헤더는 PPS ID 를 포함한다. ID들을 사용하여, 주어진 슬라이스에 대해 활성 파라미터 세트들이 식별될 수 있다.
PPS는 주어진 픽처의 모든 슬라이스들에 적용되는 정보를 포함한다. 이 때문에, 픽처의 모든 슬라이스들은 동일한 PPS 를 참조한다. 상이한 픽처들의 슬라이스들은 동일한 PPS 를 또한 참조할 수도 있다. SPS 는 동일한 코딩된 비디오 시퀀스 (CVS) 또는 비트스트림의 모든 픽처들에 적용되는 정보를 포함한다. 전술한 바와 같이, 코딩된 비디오 시퀀스 (CVS) 는 소정의 특성들 (상술됨) 로 그리고 베이스 계층에서의 랜덤 액세스 포인트 픽처 (예를 들어, IDR (instantaneous decode reference) 픽처 또는 BLA (broken link access) 픽처, 또는 다른 적절한 랜덤 액세스 포인트 픽처) 으로 시작하여 소정의 특성들로 그리고 베이스 계층에서의 랜덤 액세스 포인트 픽처를 갖는 다음 액세스 유닛 (AU) 까지 그리고 이를 포함하지 않는 (또는 비트스트림의 종단까지의) 일련의 AU들이다. SPS 의 정보는 코딩된 비디오 시퀀스 내에서 픽처마다 변경되지 않을 수도 있다. 코딩된 비디오 시퀀스에서의 픽처들은 동일한 SPS 를 사용할 수도 있다. VPS 는 코딩된 비디오 시퀀스 또는 비트스트림의 모든 계층들에 적용되는 정보를 포함한다. VPS 는 전체 코딩된 비디오 시퀀스에 적용되는 신택스 엘리먼트들을 갖는 신택스 구조를 포함한다. 일부 예들에서, VPS, SPS 또는 PPS 는 인코딩된 비트스트림과 함께 대역 내 송신될 수도 있다. 일부 예들에서, VPS, SPS 또는 PPS 는 코딩된 비디오 데이터를 포함하는 NAL 유닛과는 별도의 송신으로 대역 외 (out-of-band) 로 송신될 수도 있다.
비디오 비트스트림은 또한 보충 인핸스먼트 정보 (Supplemental Enhancement Information; SEI) 메시지를 포함할 수 있다. 예를 들어, SEI NAL 유닛은 비디오 비트스트림의 일부일 수 있다. 일부 예들에서, SEI 메시지는 비디오 비트스트림의 외부에 있을 수 있다. 일부 경우들에서, SEI 메시지가 디코딩 프로세스에 의해 필요하지 않은 정보를 포함할 수 있다. 예를 들어, SEI 메시지에서의 정보는 디코더가 비트스트림의 비디오 픽처들을 디코딩하는데 필수적이지 않을 수도 있지만, 디코더는 그 정보를 사용하여 픽처들의 디스플레이 또는 프로세싱 (예를 들어, 디코딩된 출력) 을 개선시킬 수 있다. SEI 메시지 내의 정보는 임베딩된 메타데이터일 수 있다. 하나의 예시적인 예에서, SEI 메시지에서의 정보는 디코더 측 엔티티에 의해 이용되어 콘텐츠의 가시성을 개선할 수 있다. 일부 예들에서, 특정 애플리케이션 표준은 비트스트림 내의 이러한 SEI 메시지의 존재를 요구하여, 그 애플리케이션 표준을 준수하는 모든 디바이스들에 품질 개선을 가져올 수 있다 (예를 들어, 다수의 다른 예들에 더하여, SEI 메시지가 비디오의 모든 프레임에 대해 반송되는, 프레임-호환형 평면-입체 3DTV 비디오 포맷에 대한 프레임-팩킹 SEI 메시지의 캐리지, 복구 포인트 SEI 메시지의 핸들링, DVB 에서의 팬-스캔 스캔 직사각형 SEI 메시지의 사용).
인코딩 디바이스 (104) 의 출력 (110) 은 인코딩된 비디오 데이터를 구성하는 NAL 유닛들을 통신 링크 (120) 를 통해 수신 디바이스의 디코딩 디바이스 (112) 로 전송할 수도 있다. 디코딩 디바이스 (112) 의 입력 (114) 은 NAL 유닛들을 수신할 수도 있다. 통신 링크 (120) 는 무선 네트워크, 유선 네트워크, 또는 유선 및 무선 네트워크의 조합에 의해 제공되는 채널을 포함할 수도 있다. 무선 네트워크는 임의의 무선 인터페이스 또는 무선 인터페이스들의 조합을 포함할 수도 있고, 임의의 적합한 무선 네트워크 (예컨대, 인터넷 또는 다른 광역 네트워크, 패킷 기반 네트워크, WiFi™, 무선 주파수 (RF), UWB, WiFi-다이렉트, 셀룰러, 롱 텀 에볼루션 (LTE), WiMax™ 등) 를 포함할 수도 있다. 유선 네트워크가 임의의 유선 인터페이스 (예를 들어, 섬유, 이더넷, 전력선 이더넷, 동축 케이블을 통한 이더넷, 디지털 신호 라인 (DSL) 등) 를 포함할 수도 있다. 유선 및/또는 무선 네트워크들은 여러 장비들, 이를 테면, 기지국, 라우터, 액세스 포인트, 브리지, 게이트웨이, 스위치 등을 이용하여 구현될 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어 수신 디바이스로 송신될 수도 있다.
일부 예들에서, 인코딩 디바이스 (104) 는 인코딩된 비디오 데이터를 스토리지 (108) 에 저장할 수도 있다. 출력 (110) 은 인코더 엔진 (106) 또는 스토리지 (108) 로부터 인코딩된 비디오 데이터를 취출할 수도 있다. 스토리지 (108) 는 다양한 분산 또는 국부적으로 액세스된 데이터 저장 매체 중 어느 것을 포함할 수도 있다. 예를 들어, 스토리지 (108) 는 하드 드라이브, 저장 디스크, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체를 포함할 수도 있다.
디코딩 디바이스 (112) 의 입력 (114) 은 인코딩된 비디오 비트스트림 데이터를 수신하고 디코더 엔진 (116) 에 의한 나중의 이용을 위하여 비디오 비트스트림 데이터를 디코더 엔진 (116) 또는 스토리지 (118) 에 제공할 수도 있다. 디코더 엔진 (116) 은 엔트로피 디코딩에 의해 (예를 들어, 엔트로피 디코더를 이용하여) 인코딩된 비디오 비트스트림 데이터를 디코딩하고, 인코딩된 비디오 데이터를 구성하는 하나 이상의 코딩된 비디오 시퀀스들의 엘리먼트들을 추출할 수도 있다. 그 후, 디코더 엔진 (116) 은 인코딩된 비디오 비트스트림 데이터에 대해 리스케일링 및 역변환을 수행할 수도 있다. 잔차 데이터는 그 후 디코더 엔진 (116) 의 예측 스테이지로 전달된다. 디코더 엔진 (116) 은 그 후 픽셀들의 블록 (예를 들어, PU) 을 예측한다. 일부 예들에서, 예측은 역변환의 출력 (잔차 데이터) 에 부가된다.
디코딩 디바이스 (112) 는 디코딩된 비디오를 비디오 목적지 디바이스 (122) 에 출력할 수도 있고, 비디오 목적지 디바이스는 디코딩된 비디오 데이터를 콘텐츠의 소비자에게 디스플레이하기 위한 디스플레이 또는 다른 출력 디바이스를 포함할 수도 있다. 일부 양태들에 있어서, 비디오 목적지 디바이스 (122) 는 디코딩 디바이스 (112) 를 포함하는 수신 디바이스의 일부일 수도 있다. 일부 양태들에서, 비디오 목적지 디바이스 (122) 는 수신 디바이스 이외의 별도의 디바이스의 일부일 수도 있다.
일부 예들에서, 비디오 인코딩 디바이스 (104) 및/또는 비디오 디코딩 디바이스 (112) 는 각각 오디오 인코딩 디바이스 및 오디오 디코딩 디바이스와 통합될 수도 있다. 비디오 인코딩 디바이스 (104) 및/또는 비디오 디코딩 디바이스 (112) 는 또한 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들과 같은, 상술된 코딩 기술들을 구현하는데 필요한 다른 하드웨어 또는 소프트웨어를 포함할 수도 있다. 비디오 인코딩 디바이스 (104) 및 비디오 디코딩 디바이스 (112) 는 각각의 디바이스에서 결합된 인코더/디코더 (코덱) 의 일부로서 통합될 수도 있다. 인코딩 디바이스 (104) 의 특정 상세의 예는 도 16 을 참조하여 아래에서 설명된다. 디코딩 디바이스 (112) 의 특정 상세의 예는 도 17 을 참조하여 아래에서 설명된다.
HEVC 표준의 확장은 MV-HEVC 로 지칭되는 멀티뷰 비디오 코딩 확장, 및 SHVC 로 지칭되는 스케일러블 비디오 코딩 확장을 포함한다. MV-HEVC 및 SHVC 확장은 계층화된 코딩의 개념을 공유하며, 인코딩된 비디오 비트스트림에 상이한 계층들이 포함된다. 코딩된 비디오 시퀀스의 각 계층은 고유 계층 식별자 (ID) 로 어드레싱된다. 계층 ID 는 NAL 유닛이 연관되는 계층을 식별하기 위해 NAL 유닛의 헤더 내에 존재할 수도 있다. MV-HEVC 에서, 상이한 계층들은 일반적으로 비디오 비트스트림의 동일한 장면에 대한 상이한 뷰들을 나타낸다. SHVC 에서, 상이한 공간 해상도 (또는 픽처 해상도) 또는 상이한 재구성 충실도로 비디오 비트스트림을 나타내는 상이한 스케일러블 계층들이 제공된다. 스케일러블 계층들은 베이스 계층 (계층 ID = 0) 및 하나 이상의 인핸스먼트 계층 (계층 ID = 1, 2, ...n) 을 포함할 수도 있다. 베이스 계층은 HEVC 의 제 1 버전의 프로파일을 따르고, 비트스트림에서 최저 이용가능 계층을 나타낸다. 인핸스먼트 계층은 베이스 계층에 비해 증가된 공간 해상도, 시간 해상도 또는 프레임 레이트 및/또는 재구성 충실도 (또는 품질) 를 갖는다. 인핸스먼트 계층들은 계위적으로 구성되며 하위 계층들에 종속될 수도 있고 그렇지 않을 수도 있다. 일부 예들에서, 상이한 계층들은 단일 표준 코덱을 사용하여 코딩될 수도 있다 (예를 들어, 모든 계층들이 HEVC, SHVC 또는 다른 코딩 표준을 사용하여 인코딩됨). 일부 예들에서, 상이한 계층들은 멀티 표준 코덱을 사용하여 코딩될 수도 있다. 예를 들어, 베이스 계층은 AVC 를 사용하여 코딩될 수 있는 한편, 하나 이상의 인핸스먼트 계층은 HEVC 표준에 대한 SHVC 및/또는 MV-HEVC 확장을 사용하여 코딩될 수도 있다.
상술한 바와 같이, 각각의 블록에 대해, 모션 정보 (본 명세서에서는 모션 파라미터라고도 함) 의 세트가 이용가능할 수도 있다. 모션 정보의 세트는 순방향 및 역방향 예측 방향에 대한 모션 정보를 포함할 수도 있다. 여기서, 순방향 및 역방향 예측 방향들은 양방향 예측 모드의 2 개의 예측 방향들이고, "순방향 " 및 "역방향" 이라는 용어는 반드시 기하학적 의미를 가질 필요는 없다. 대신에, 순방향 및 역방향은 현재 픽처, 슬라이스 또는 블록의 참조 픽처 리스트 0 (RefPicList0) 및 참조 픽처 리스트 1 (RefPicList1) 에 대응할 수도 있다. 일부 예들에서, 오직 하나의 참조 픽처 리스트가 픽처, 슬라이스, 또는 블록에 이용가능할 때, 오직 RefPicList0 만이 이용가능하고 슬라이스의 각각의 블록의 모션 정보는 항상 순방향이다. 일부 예들에서, RefPicList0 는 현재의 픽처보다 시간적으로 선행하는 참조 픽처를 포함하고, RefPicList1 은 시간적으로 현재 픽처에 후속하는 참조 픽처를 포함한다. 일부 경우들에서, 연관된 참조 인덱스와 함께 모션 벡터가 디코딩 프로세스에서 이용될 수도 있다. 연관된 참조 인덱스를 갖는 이러한 모션 벡터는 단일 예측성 (uni-predictive) 모션 정보 세트로 표기된다.
각각의 예측 방향에 대해, 모션 정보는 참조 인덱스 및 모션 벡터를 포함할 수도 있다. 일부 경우들에서, 단순화를 위해, 모션 벡터는 연관된 정보를 가질 수 있으며, 이 정보로부터 모션 벡터가 연관된 참조 인덱스를 갖는 방법으로 가정될 수도 있다. 참조 인덱스는 현재 참조 픽처 리스트 (RefPicList0 또는 RefPicList1) 내의 참조 픽처를 식별하기 위해 이용될 수도 있다. 모션 벡터는 현재 픽처의 좌표 포지션으로부터 참조 인덱스에 의해 식별되는 참조 픽처의 좌표들까지의 오프셋을 제공하는 수평 및 수직 컴포넌트들을 가질 수 있다. 예를 들어, 참조 인덱스는 현재 픽처 내의 블록에 대해 이용해야 하는 특정 참조 픽처를 나타낼 수 있고, 모션 벡터는 참조 픽처에서 최상의 매칭된 블록 (현재 블록과 최상으로 매칭하는 블록) 이 참조 픽처 내에 어디에 있는지를 나타낸다.
픽처 순서 카운트 (POC; picture order count) 는 픽처의 디스플레이 순서를 식별하기 위해 비디오 코딩 표준들에 이용될 수 있다. 하나의 코딩된 비디오 시퀀스 내의 2 개의 픽처들이 동일한 POC 값을 가질 수도 있는 경우들이 있지만, 하나의 코딩된 비디오 시퀀스 내에서 동일한 POC 값을 갖는 2 개의 픽처들은 자주 발생하지 않는다. 다수의 코딩된 비디오 시퀀스들이 비트스트림에 존재할 때, 동일한 POC 값을 갖는 픽처들은 디코딩 순서의 관점에서 서로 더 근접할 수도 있다. 픽처들의 POC 값들은 참조 픽처 리스트 구성을 위해, 특히 HEVC 에서와 같이 설정된 참조 픽처의 도출, 및/또는 모션 벡터 스케일링에 이용될 수도 있다.
H.264/AVC 에서, 각각의 인터-매크로블록 (MB) 은 4 개의 다른 방법들로 파티셔닝될 수 있고; 특히, 하나의 16x16 매크로블록 파티션; 2 개의 16x8 매크로블록 파티션; 2 개의 8x16 매크로블록 파티션; 4 개의 8x8 매크로블록 파티션들을 포함한다. 하나의 매크로블록 내의 상이한 매크로블록 파티션은 각각의 예측 방향에 대해 상이한 참조 인덱스 값들 (예를 들어, RefPicList0 및 RefPicList1 에 대한 상이한 참조 인덱스 값들) 을 가질 수도 있다.
일부 경우들에서, 매크로블록이 4 개의 8x8 매크로블록 파티션들로 파티셔닝되지 않을 때, 매크로블록은 각 예측 방향으로 각 매크로블록 파티션에 대해 단지 하나의 모션 벡터만을 가질 수 있다. 일부 경우들에서, 매크로블록이 4 개의 8x8 매크로블록 파티션들로 파티셔닝될 때, 각각의 8x8 매크로블록 파티션은 각각의 예측 방향으로 상이한 모션 벡터를 가질 수 있는 서브 블록들로 추가로 파티셔닝될 수도 있다. 8x8 매크로블록 파티션은 다양한 방식들로 서브 블록들로 분할될 수 있고: 특히, 하나의 8x8 서브 블록, 2 개의 8x4 서브 블록들; 2 개의 4x8 서브 블록들; 4 개의 4x4 서브 블록들을 포함한다. 각각의 서브 블록은 각각의 예측 방향에서 상이한 모션 벡터를 가질 수 있다. 따라서, 모션 벡터는 서브 블록과 동등하거나 그 이상의 레벨에서 존재할 수 있다.
HEVC 에서 슬라이스의 최대 코딩 유닛은 코딩 트리 블록 (CTB) 으로 지칭된다. CTB 는 쿼드-트리를 포함하고, 그 노드들은 코딩 유닛들이다. CTB 의 사이즈는 HEVC 메인 프로파일의 16x16 픽셀들 내지 64x64 픽셀들의 범위일 수 있다. 일부 경우들에서, 8x8 픽셀 CTB 사이즈들이 지원될 수 있다. CTB 는 도 2 에 나타낸 바와 같이, 쿼드트리 방식으로 코딩 유닛들 (CU) 로 재귀적으로 분할될 수도 있다. CU 은 CTB 의 동일한 사이즈일 수 있고 8x8 픽셀들만큼 작을 수 있다. 일부 경우들에서, 각각의 코딩 유닛은 인트라 예측 모드 또는 인터 예측 모드 중 어느 하나로 코딩된다. 인터 예측 모드를 사용하여 CU 가 인터-코딩될 때, CU 는 2 또는 4 개의 예측 유닛들 (PUs) 로 추가로 파티셔닝될 수 있거나, 또는 추가의 파티셔닝이 적용되지 않을 때 하나의 PU 로서 취급될 수도 있다. 하나의 CU 에 2 개의 PU들이 존재할 때, 2 개의 PU들은 CU 사이즈의 1/4 또는 3/4 인 2 개의 직사각형 또는 1/2 사이즈의 직사각형일 수도 있다.
도 3 은 인터 예측 모드로 코딩된 CU 에 대한 8 개의 파티션 모드들을 도시하는 다이어그램이다. 나타낸 바와 같이, 파티션 모드는 PART_2Nx2N, PART_2NxN, PART_Nx2N, PART_NxN, PART_2NxnU, PART_2NxnD, PART_nLx2N, 및 PART_nRx2N 을 포함한다. CU 는 상이한 파티션 모드들에 따라 PU 로 파티셔닝될 수 있다. 따라서, CU 는 파티션 모드들의 하나 이상을 사용하여 예측될 수 있다.
CU 가 인터-코딩될 때, 하나의 모션 정보의 세트가 각각의 PU 에 대해 존재할 수 있다. 또한, 각각의 PU 는 모션 정보의 세트를 도출하기 위해 하나의 인터-예측 모드로 코딩될 수도 있다. 일부 경우들에서, CU 가 인트라 예측 모드를 사용하여 인트라 코딩될 때, PU 형상들은 2Nx2N 및 NxN 일 수 있다. 각각의 PU 내에서, 단일 인트라 예측 모드가 코딩된다 (한편, 크로마 예측 모드는 CU 레벨에서 시그널링된다). 일부 경우들에서, NxN 인트라 PU 형상들은 현재 CU 사이즈가 SPS 에서 정의된 최소 CU 사이즈와 동일할 때에만 허용된다.
HEVC 에서의 모션 예측을 위해, 병합 모드 및 어드밴스드 모션 벡터 예측 (advanced motion vector prediction; AMVP) 모드를 포함한, CU 또는 PU 에 대한 2 개의 인터 예측 모드들이 있을 수 있다. 스킵 모드가 병합 모드의 특별한 경우로서 고려된다. AMVP 또는 병합 모드 중 어느 하나에서, 다중 모션 벡터 (MV) 예측자들에 대해 모션 벡터 (MV) 후보 리스트가 유지될 수 있다. 현재 PU 의 병합 모드에서의 참조 인덱스들뿐만 아니라 모션 벡터(들) 는 MV 후보 리스트로부터 하나의 후보를 취하는 것에 의해 생성될 수 있다.
일부 예들에서, MV 후보 리스트는 병합 모드에 대한 최대 5 개의 후보들 및 AMVP 모드에 대한 2 개의 MV 후보들을 포함한다. 다른 예들에 있어서, 상이한 수들의 후보들이 병합 모드 및/또는 AMVP 모드에 대한 MV 후보 리스트에 포함될 수 있다. 병합 후보는 모션 정보의 세트 (예를 들어, 하나 또는 양자의 참조 픽처 리스트들 (리스트 0 및 리스트 1) 에 대응하는 모션 벡터들) 및 참조 인덱스를 포함할 수도 있다. 병합 후보가 병합 인덱스에 의해 식별되면, 참조 픽처는 현재 블록의 예측을 위해 이용될 수 있다. 참조 픽처는 또한 연관된 모션 벡터를 결정하기 위해 이용될 수도 있다. AVMP 후보는 모션 벡터만을 포함하고, 따라서, AVMP 모드에서, 참조 인덱스는 리스트 0 또는 리스트 1 로부터의 각각의 잠재적 예측 방향에 대해, MV 후보 인덱스에 대한 MVP 인덱스와 함께, 참조 인덱스가 명시적으로 시그널링될 필요가 있을 수도 있다. AMVP 모드에서, 예측 모션 벡터는 추가로 리파이닝될 수 있다.
위에서 알 수 있는 바와 같이, 병합 후보는 전체 모션 정보 세트에 대응하는 한편, AMVP 후보는 특정 예측 방향 및 참조 인덱스에 대해 단지 하나의 모션 벡터만을 포함한다. 병합 모드 및 AMVP 모드 양자 모두에 대한 후보들은 동일한 공간적 및 시간적 이웃 블록들로부터 유사하게 도출될 수 있다.
도 4a 및 도 4b 는 공간적 이웃 MV 후보들의 예시의 도출들을 도시하는 다이어그램들이다. 특정 PU (PU0 (402)) 에 대한 공간 MV 후보들은 PU0 (402) 의 우측에 위치된 이웃하는 PU1 (404) 에 상대적인 것을 포함하여 이웃하는 블록들로부터 도출될 수 있다.
도 4a 의 다이어그램은 병합 모드에 대한 공간적 MV 후보들의 도출을 도시한다. 병합 모드에서, 최대 5 개의 공간적 MV 후보들 (그리고 일부 경우들에서는 최대 4 개) 은 예를 들어, 다음의 순서로 도출될 수 있다: 좌측 후보 (410) (블록 0), 상측 후보 (412)(블록 1), 상 우측 후보 (414)(블록 2), 하 좌측 후보 (416)(블록 3), 및 상 좌측 후보 (418)(블록 4). PU0 (402) 에 대한 공간 MV 후보들의 위치들은 도 4a 에 도시된다. 구체적으로, 좌측 후보 (410) 는 PU0 (402) 의 하부 좌측 코너에 인접하여 그 좌측에 위치되고; 상측 후보 (412) 는 PU0 (402) 의 상부 우측 코너에 인접하여 그 상측에 위치되고; 상 우측 후보 (414) 는 이웃 PU1 (404) 의 상부 좌측 코너에 인접하여 그 상측에 위치되고; 하 좌측 후보 (416) 는 좌측 후보 (410) 아래에 위치되고; 그리고 상 좌측 후보 (418) 는 PU0 (402) 의 상부 좌측 코너의 위에 그리고 좌측에 위치된다.
도 4b 의 다이어그램은 AVMP 모드에 대한 공간적 이웃 MV 후보들의 도출을 도시한다. AVMP 모드에서, 이웃 블록들은 예를 들어 2 개의 그룹들로 분할된다. 좌측 그룹으로 지칭될 수 있는 제 1 그룹은 PU0 (402) 의 아래 및 좌측에 위치된 제 1 블록 (420)(블록 0), 및 PU0 (402) 의 하부 좌측 코너에 인접하여 그 좌측에 위치된 제 2 블록 (422)(블록 1) 을 포함할 수 있다. 상측 그룹으로 지칭될 수 있는 제 2 그룹은 PU1 (404) 의 상부 좌측 코너에 인접하여 그 위에 위치된 제 3 블록 (424)(블록 2), 및 PU1 (204) 의 상부 우측 코너에 인접하여 그 위에 위치된 제 4 블록 (426) (블록 3) 및 PU0 (402) 의 상부 좌측 코너의 위에 그리고 좌측에 위치된 제 5 블록 (428)(블록 4) 을 포함한다. 각각의 그룹에 대해, 시그널링된 참조 인덱스에 의해 표시된 것과 동일한 참조 픽처를 지칭하는 이웃하는 블록에서 잠재적인 후보 MV 는 그룹의 최종 후보를 형성하도록 선택될 블록들 중에서 최고 우선순위를 가질 수 있다. 일부 경우들에서, 모든 이웃하는 블록들은 동일한 참조 픽처를 포인팅하는 모션 벡터를 포함하지 않는 것이 가능하다. 따라서, 이러한 후보가 찾아질 수 없으면, 제 1 이용가능한 후보가 최종 후보를 형성하기 위해 스케일링될 수 있고; 따라서 시간적 거리 차이들이 보상될 수 있다.
일부 경우들에서, 병합 및 AMVP 모드들은 모션 벡터 스케일링, 아티피셜 (artifical) 모션 벡터 후보 생성 및 후보 삽입을 위한 프루닝 프로세스와 같은 다른 양태들을 포함할 수 있다.
HEVC 를 넘어 미래의 비디오 코딩 표준을 위해 쿼드-트리-이진-트리 (quad-tree-binary-tree; QTBT) 가 제안되었다. 시뮬레이션들은 사용된 HEVC 에서의 쿼드트리 구조보다 제안된 QTBT 구조가 더 효율적이라는 것을 보여주었다. 제안된 QTBT 구조에서, CTB 는 먼저 쿼드트리 구조를 사용하여 파티셔닝되며, 여기서 일 노드의 쿼드트리 분할은 노드가 최소 허용된 쿼드트리 리프 노드 사이즈 (MinQTSize) 에 도달할 때까지 반복될 수 있다. 쿼드트리 리프 노드 사이즈가 최대 허용된 이진 트리 루트 노드 사이즈 (MaxBTSize) 보다 더 크지 않으면, 이것은 이진 트리에 의해 추가로 파티셔닝될 수 있다. 일 노드의 이진 트리 파티셔닝은, 노드가 최소 허용된 이진 트리 리프 노드 사이즈 (예컨대, 신택스 엘리먼트 MinBTSize) 또는 최대 허용된 이진 트리 깊이 (MaxBTDepth) 에 도달할 때까지 반복될 수 있다. 이진 트리 리프 노드는 즉 CU 이며, 이는 임의의 추가 파티셔닝 없이 예측 (예를 들어, 인트라 예측 또는 인터 예측) 및 변환을 위해 사용될 수 있다. 일부 경우들에서, 이진 트리 분할에서 2 개의 분할 타입들, 즉 대칭적 수평 분할 및 대칭적 수직 분할이 있다.
QTBT 파티셔닝 구조의 일 예에서, CTU 사이즈는 128x128 (예를 들어, 루마 샘플들 및 2 개의 대응하는 64x64 크로마 블록들) 로 설정될 수 있고, MinQTSize 는 16x16 으로 설정될 수 있고, MaxBTSize 는 64x64 로 설정될 수 있고, (폭 및 높이 양자 모두에 대한) MinBTSize 는 4 로 설정될 수 있으며, MaxBTDepth 가 4 로 설정될 수 있다. 쿼드트리 파티셔닝은 CTU 에 먼저 적용되어 쿼드트리 리프 노드들을 생성한다. 일부 예들에서, 쿼드트리 리프 노드들은 16x16 (이 경우 MinQTSize) 내지 128x128 (이 경우, CTU 사이즈) 의 사이즈를 가질 수도 있다. 리프 쿼드트리 노드가 128x128 인 경우, 사이즈는 MaxBTSize (이 경우, 64x64) 를 초과하기 때문에 이진 트리로 추가로 분할되지 않을 것이다. 그렇지 않으면, 리프 쿼드트리 노드는 이진 트리에 의해 추가로 파티셔닝될 것이다. 이 예에서, 쿼드트리 리프 노드는 또한 이진 트리에 대한 루트 노드이며 이진 트리 깊이를 0 으로 갖는다. 이진 트리 깊이가 MaxBTDepth (이 예에서는 4) 에 도달할 때, 이것은 추가 분할이 없음을 암시한다. 이진 트리 노드가 MinBTSize (이 예에서는 4) 와 동일한 폭을 가질 때, 이것은 추가 수평 분할이 없음을 암시한다. 유사하게, 이진 트리 노드가 MinBTSize (이 예에서는 4) 와 동일한 높이를 가질 때, 이것은 추가 수직 분할이 없음을 암시한다. 이진 트리의 리프 노드들은 즉 CU들이고, 임의의 추가 파티셔닝 없이 예측 및 변환에 의해 추가로 프로세싱될 수 있다.
도 5a 는 QTBT 를 사용하는 것에 의한 블록 파티셔닝의 예를 도시하고, 도 5b 는 대응 트리 구조를 도시한다. 도 5a 에 나타낸 실선들은 쿼드트리 분할을 표시하고, 점선들은 이진 트리 분할을 표시한다. 이진 트리의 각각의 분할 노드 (비-리프 노드로 지칭 됨) 에서, 어느 분할 타입 (예를 들어, 수평 또는 수직 분할) 이 사용되는지를 표시하기 위해 플래그가 시그널링될 수 있다. 하나의 예시적인 예에서, 플래그에 대한 0 값은 수평 분할을 표시할 수 있고 1 값은 수직 분할을 표시할 수 있다. 일부 경우들에서, 쿼드트리 분할에 대해, 분할 타입들을 표시할 필요가 없을 수도 있는데, 이는 블록이 항상 동일한 사이즈를 갖는 4 개의 서브 블록들로 수평 및 수직으로 분할될 수도 있기 때문이다.
일부 예들에서, 멀티-타입-트리 구조가 사용될 수 있다. 예를 들어, 트리 노드는 이진 트리, 대칭 중앙측 트리플 트리 및 쿼드트리와 같은 다중 트리 타입들로 추가 분할될 수도 있다. 시뮬레이션들은 멀티-타입-트리 구조가 QTBT 구조보다 훨씬 더 효율적일수 있는 것을 보여주었다.
일부 경우들에서, 비대칭 코딩 유닛들은 QTBT 구조의 상단에 사용될 수 있다. 예를 들어, 4 개의 새로운 이진 트리 분할 모드들이 QTBT 프레임워크에 도입되어, 새로운 분할 구성들을 허용할 수 있다. 도 6 은 QTBT 에서 이미 이용가능한 분할 모드들에 부가하여 사용될 수 있는 비대칭 분할 모드들을 도시하는 다이어그램이다. 부가 비대칭 분할 모드들에 따라, 사이즈 (S) 를 갖는 코딩 유닛은 사이즈들 (S/4 및 3.S/4) 을 갖는 2 개의 서브 CU 로, 수평 또는 수직 방향 중 하나로 나눠진다. JVET-D0064 에서 새롭게 부가된 CU 폭 또는 높이는 단지 12 또는 24 일 수 있다.
HEVC 및 초기 비디오 코딩 표준들에서는, 모션 보상 예측 (MCP) 에 대해 병진 모션 모델만이 적용된다. 예를 들어, 병진 모션 벡터는 픽처의 각 블록 (예를 들어, 각각의 CU 또는 각각의 PU) 에 대해 결정될 수 있다. 하지만, 현실 세계에서는, 병진 모션 이외에, 다른 불규칙한 모션들 중에서, 주밍 (예를 들어, 줌 인 및/또는 아웃), 회전, 원근법 모션들을 포함한, 많은 종류의 모션들이 있다. ITU-T VCEG 및 MPEG 에 의한 JEM (Joint exploration Model) 에서, 코딩 효율을 개선하기 위해 간략화된 아핀 변환 모션 보상 예측이 적용될 수 있다. 도 7 에 나타낸 바와 같이, 현재 블록 (702) 의 아핀 모션 필드는 2 개의 제어 포인트들 (710 및 712) 의 2 개의 모션 벡터들
Figure pct00003
Figure pct00004
에 의해 설명된다. 제어 포인트 (710) 의 모션 벡터
Figure pct00005
및 제어 포인트 (712) 의 모션 벡터
Figure pct00006
를 사용하여, 현재 블록 (702) 의 모션 벡터 필드 (MVF) 가 다음의 식에 의해 설명될 수 있다:
Figure pct00007
식 (1)
식 중,
Figure pct00008
Figure pct00009
는 현재 블록 (702) 내의 각각의 픽셀에 대한 모션 벡터이고, x 및 y 는 현재 블록 (702) 내의 각 픽셀의 포지션이고 (예를 들어, 블록의 상단 좌측 픽셀은 좌표 또는 인덱스 (x, y) = (0,0) 를 가질 수 있다), (
Figure pct00010
, 
Figure pct00011
) 은 상단 좌측 코너 제어 포인트 (710) 의 모션 벡터이고, w 는 현재 블록 (702) 의 폭이며, (
Figure pct00012
, 
Figure pct00013
) 는 상단 우측 코너 제어 포인트 (712) 의 모션 벡터이다.
Figure pct00014
Figure pct00015
값들은 개개의 모션 벡터들에 대한 수평 값들이고,
Figure pct00016
Figure pct00017
값들은 개개의 모션 벡터들에 대한 수직 값들이다. 부가 제어 포인트들 (예를 들어, 4 개의 제어 포인트들, 6 개의 제어 포인트들 또는 8 개의 제어 포인트들, 또는 일부 다른 수의 제어 포인트들) 은 예를 들어 현재 블록 (702) 의 하부 코너, 및/또는 현재 블록 (702) 의 중심, 또는 현재 블록 (702) 의 다른 포지션에서 부가 제어 포인트 벡터들을 부가함으로써 정의될 수 있다.
위의 식 (1) 은 4-파라미터 모션 모델을 도시하며, 여기서 4 개의 아핀 파라미터들 (a, b, c, 및 d) 은 다음과 같이 정의된다:
Figure pct00018
;
Figure pct00019
;
Figure pct00020
; 및
Figure pct00021
. 식 (1) 을 사용하여, 상단 좌측 코너 제어 포인트 (710) 의 모션 벡터 (
Figure pct00022
, 
Figure pct00023
) 및 상단 우측 코너 제어 포인트 (712) 의 모션 벡터 (
Figure pct00024
, 
Figure pct00025
) 가 주어지면, 현재 블록의 매 픽셀에 대한 모션 벡터는 각각의 픽셀 위치의 좌표 (x, y) 를 사용하여 계산될 수 있다. 예를 들어, 현재 블록 (702) 의 상단 좌측 픽셀 포지션에 대해, (x, y) 의 값은 (0, 0) 과 동일할 수 있으며, 이 경우 상단 좌측 픽셀에 대한 모션 벡터는
Figure pct00026
=
Figure pct00027
Figure pct00028
=
Figure pct00029
이 된다.
MCP 를 더욱 단순화하기 위해, 블록 기반 아핀 변환 예측이 적용될 수 있다. 예를 들어, 도 8 에 나타낸 바와 같이, 현재 블록 (802) 은 서브 블록들로 나눠질 수 있다. 도 8 에 나타낸 예는 16 개의 총 서브 블록들을 갖는, 4x4 파티션을 포함한다. 임의의 적합한 파티션 및 대응하는 수의 서브 블록들이 사용될 수 있다. 그 후 모션 벡터가 식 (1) 을 사용하여 각각의 서브 블록에 대해 도출될 수 있다. 예를 들어, 각각의 4 x 4 서브 블록들의 모션 벡터를 도출하기 위해, (도 8 에 나타낸 바와 같이) 각각의 서브 블록의 중심 샘플의 모션 벡터는 식 (1) 에 따라 계산된다. 결과의 모션 벡터는 예를 들어 1/16 분수 정확도 또는 다른 적절한 정확도 (예를 들어, 1/4, 1/8 등) 로 라운딩될 수 있다. 그 후 각각의 서브 블록의 예측을 생성하기 위해 서브 블록들의 도출된 모션 벡터들을 사용하여 모션 보상이 적용될 수 있다. 예를 들어, 디코딩 디바이스는 제어 포인트 (810) 의 모션 벡터들
Figure pct00030
및 제어 포인트 (812) 의 모션 벡터
Figure pct00031
을 기술하는 4 개의 아핀 파라미터들 (a, b, c, d) 을 수신할 수 있고, 각각의 서브 블록의 중심 샘플의 위치를 기술하는 픽셀 좌표 인덱스에 따라 서브 블록 당 모션 벡터를 계산할 수 있다. MCP 후, 각각의 서브 블록의 고 정확도 모션 벡터는 위에 언급된 바와 같이 라운딩될 수 있고, 병진 모션 벡터와 동일한 정확도로 저장될 수 있다.
JEM 에는, 아핀 인터 (AF_INTER) 모드와 아핀 병합 (AF_MERGE) 모드의 2 개의 아핀 모션 모드가 있다. 도 9 는 AF_INTER 모드에서의 모션 벡터 예측의 예를 도시하는 다이어그램이다. 일부 예들에서, CU 가 8 픽셀보다 더 큰 폭 및 높이를 가질 때, AF_INTER 모드가 적용될 수 있다. 아핀 플래그는 AF_INTER 모드가 블록에 적용되었는지의 여부를 표시하기 위해, (예를 들어, CU 레벨에서) 블록과 관련하여 비트스트림에 배치될 수 있다. 도 9 의 예에 도시된 바와 같이, AF_INTER 모드에서, 모션 벡터 쌍들의 후보 리스트는 이웃하는 블록들을 사용하여 구성될 수 있다. 예를 들어, 현재 블록 (902) 의 상부 좌측 코너에 위치된 서브 블록 (910) 에 대해, 모션 벡터 (v 0 ) 는 서브 블록 (910) 상측 및 좌측의 이웃 블록 A (920), 서브 블록 (910) 상측의 이웃 블록 B (922), 및 서브 블록 (910) 좌측의 이웃 블록 C (924) 로부터 선택될 수 있다. 추가적인 예로서, 현재 블록 (902) 의 상부 우측 코너에 위치된 서브 블록 (912) 에 대해, 모션 벡터 (v 1 ) 는 상측 및 상-우측 방향의 이웃 블록 D (926) 및 이웃 블록 E (928) 로부터 선택될 수 있다. 모션 벡터 쌍들의 후보 리스트는 이웃 블록들을 사용하여 구성될 수 있다. 예를 들어, 블록들 A (920), B (922), C (924), D (926), 및 E (928) 에 대응하는 모션 벡터들 (v A , v B , v C , v D , 및 v E ) 이 주어지면, 모션 벡터 쌍들의 후보 리스트는 {(v 0 , v 1 ) | v 0 = { v A , v B , v C }, v 1 = {v D , v E }} 로서 표현될 수 있다.
상기와 같이 그리고 도 9 에 나타낸 바와 같이, AF_INTER 모드에서, 모션 벡터 vc 는 블록들 A (920), B (922) 또는 C (924) 의 모션 벡터로부터 선택될 수 있다. 이웃 블록 (블록 A, B 또는 C) 으로부터의 모션 벡터는 참조 리스트 및 이웃 블록에 대한 참조의 POC, 현재 CU 에 대한 참조의 POC (예를 들어, 현재 블록 (902)) 및 현재 CU 의 POC 사이의 관계에 따라 스케일링될 수 있다. 이들 예들에서, POC들의 일부 또는 전부가 참조 리스트로부터 결정될 수 있다. 이웃 블록들 D 또는 E 로부터의 v 1 의 선택은
Figure pct00032
의 선택과 유사하다.
일부 경우들에서, 후보 리스트들의 수가 2 보다 작으면, 후보 리스트는 AMVP 후보들의 각각을 복제함으로써 모션 벡터 쌍들로 패딩될 수 있다. 후보 리스트가 2 보다 클 때, 일부 예들에서, 후보 리스트에서의 후보들은 먼저 이웃하는 모션 벡터들의 일관성에 따라 (예를 들어, 일관성은 모션 벡터 쌍 후보에서의 2 개의 모션 벡터들 사이의 유사성에 기초할 수 있음) 소팅될 수 있다. 이러한 예들에서는, 제 1 의 2 개의 후보들이 유지되고 나머지는 폐기될 수 있다.
일부 예들에서, 레이트-왜곡 (RD) 코스트 검사는 현재 CU (예를 들어, 현재 블록 (902)) 의 제어 포인트 모션 벡터 예측 (CPMVP) 으로서 어느 모션 벡터 쌍 후보가 선택되는지를 결정하는데 사용될 수 있다. 일부 경우들에서, 후보 리스트에서의 CPMVP 의 포지션을 표시하는 인덱스는 비트스트림에서 시그널링 (또는 그렇지 않으면 표시) 될 수 있다. 일단 현재 아핀 CU 의 CPMVP 가 (모션 벡터 쌍 후보에 기초하여) 결정되면, 아핀 모션 추정이 적용될 수 있고, 제어 포인트 모션 벡터 (CPMV) 가 결정될 수 있다. 일부 경우들에서, CPMV 및 CPMVP 의 차이는 비트스트림에서 시그널링될 수 있다. CPMV 및 CPMVP 는 2 개의 병진 모션 벡터의 세트를 포함하며, 이 경우 아핀 모션 정보의 시그널링 코스트는 병진 모션의 시그널링 코스트보다 높다.
도 10a 및 도 10b 는 AF_MERGE 모드에서의 모션 벡터 예측의 예를 도시한다. 현재 블록 (1002)(예를 들어, CU) 이 AF_MERGE 모드를 사용하여 코딩될 때, 모션 벡터는 유효한 이웃의 재구성된 블록으로부터 획득될 수 있다. 예를 들어, 아핀 모드로 코딩되는 유효한 이웃의 재구성된 블록으로부터의 제 1 블록은 후보 블록으로서 선택될 수 있다. 도 10a 에 나타낸 바와 같이, 이웃 블록은 이웃 블록들 A (1020), B (1022), C (1024), D (1026) 및 E (1028) 의 세트 중으로부터 선택될 수 있다. 이웃 블록들은 후보 블록으로서 선택되기 위해 특정 선택 순서로 고려될 수도 있다. 선택 순서의 일 예는 좌측 이웃 (블록 A (1020)) 다음 상측 이웃 (블록 B (1022)), 그 다음 상 우측 이웃 (블록 C (1024)), 그 다음 좌측 하단 이웃 (블록 D (1026)), 그리고 그 다음 상 좌측 이웃 (블록 E (1028)) 이다.
위에 언급된 바와 같이, 선택되는 이웃 블록은 아핀 모드로 코딩된 제 1 블록 (예를 들어, 선택 순서로) 일 수 있다. 예를 들어, 블록 A (1020) 는 아핀 모드로 코딩되었을 수도 있다. 도 10b 에 도시된 바와 같이, 블록 A (1020) 는 이웃 CU (1004) 에 포함될 수도 있다. 이웃 CU (1004) 에 대해, 이웃 CU (1004) 의 상단 좌측 코너 (v 2 (1030)), 상 우측 코너 (v 3 1032), 및 좌측 하단 코너 (v 4 1034) 에 대한 모션 벡터들이 도출되었을 수도 있다. 이러한 예에서, 현재 블록 (1002) 의 상단 좌측 코너에 대해, 제어 포인트 모션 벡터, v 0 (1040) 는 v 2 (1030), v 3 (1032) 및 v 4 (1034) 에 따라 계산된다. 그 후 현재 블록 (1002) 의 상단 우측 코너에 대해, 제어 포인트 모션 벡터, v 1 (1042) 가 결정될 수 있다.
현재 블록 (1002) 의 제어 포인트 모션 벡터들 (CPMV), v 0 (1040) 및 v 1 (1042) 이 일단 도출되면, 식 (1) 은 현재 블록 (1002) 에 대한 모션 벡터 필드를 결정하는데 적용될 수 있다. 현재 블록 (1002) 이 AF_MERGE 모드로 코딩되는지 여부를 식별하기 위해, 아핀 모드로 코딩된 적어도 하나의 이웃 블록이 있을 때, 비트스트림에 아핀 플래그가 포함될 수 있다.
많은 경우들에서, 아핀 모션 추정의 프로세스는 원래 블록과 아핀 모션 예측 블록 사이의 왜곡을 최소화함으로써 인코더 측에서 블록에 대한 아핀 모션을 결정하는 것을 포함한다. 아핀 모션은 병진 모션보다 많은 파라미터를 갖기 때문에, 아핀 모션 추정은 병진 모션 추정보다 더 복잡할 수 있다. 일부 경우들에서, 신호의 테일러 (Taylor) 확장에 기초한 빠른 아핀 모션 추정 방법이 아핀 모션 파라미터들 (예를 들어, 4-파라미터 모델에서의 아핀 모션 파라미터 a, b, c, d) 를 결정하기 위해 수행될 수 있다.
고속 아핀 모션 추정은 구배 (gradient) 기반 아핀 모션 탐색을 포함할 수 있다. 예를 들어, 시간 t 에서 (t0 은 참조 픽처의 시간임) 픽셀 값
Figure pct00033
이 주어지면, 픽셀 값
Figure pct00034
에 대한 1 차 테일러 확장은 다음과 같이 결정될 수 있다:
Figure pct00035
식 (2)
식 중,
Figure pct00036
Figure pct00037
는 각각 x 및 y 방향에서의 픽셀 구배
Figure pct00038
,
Figure pct00039
인 한편,
Figure pct00040
Figure pct00041
는 픽셀 값
Figure pct00042
에 대한 모션 벡터 컴포넌트들
Figure pct00043
Figure pct00044
을 표시한다. 현재 블록에서의 픽셀의 모션 벡터
Figure pct00045
는 참조 픽처에서의 픽셀
Figure pct00046
을 가리킨다.
식 (2) 는 다음과 같이 식 (3) 으로 재기입될 수 있다:
Figure pct00047
식 (3)
픽셀 값
Figure pct00048
에 대한 아핀 모션
Figure pct00049
Figure pct00050
은 그 후 예측
Figure pct00051
과 원래 신호 사이의 왜곡을 최소화함으로써 풀 수 있다. 예로서 4-파라미터 아핀 모델을 취하면,
Figure pct00052
식 (4)
Figure pct00053
, 식 (5)
식 중 x 및 y 는 픽셀 또는 서브 블록의 포지션을 표시한다. 식 (4) 및 (5) 를 식 (3) 에 취하고, 그 후 식 (3) 을 사용하여 원래 신호와 예측 사이의 왜곡을 최소화하면, 아핀 파라미터들 (a, b, c, d) 의 해가 다음과 같이 결정될 수 있다:
Figure pct00054
식 (6)
임의의 수의 파라미터들이 사용될 수 있다. 예를 들어, 6-파라미터 아핀 모션 또는 다른 아핀 모션은 4-파라미터 아핀 모션 모델에 대해 상술한 것과 동일한 방식으로 풀 수 있다.
제어 포인트들에 대한 아핀 모션 벡터들을 정의하는 아핀 모션 파라미터들이 결정되면, 픽셀 당 또는 서브 블록 당 모션 벡터들은 아핀 모션 파라미터들을 사용하여 (예를 들어, 식 (1) 에 또한 표현되어 있는, 식 (4) 및 (5) 를 사용하여) 결정될 수 있다. 식 3 은 현재 블록 (예를 들어, CU) 의 매 픽셀에 대해 수행될 수 있다. 예를 들어, 현재 블록이 16 픽셀 x 16 픽셀이면, 식 (6) 의 최소 제곱 해는 256 픽셀 이상으로 전체 값을 최소화함으로써 현재 블록에 대한 아핀 모션 파라미터들 (a, b, c, d) 을 도출하는데 사용될 수 있다.
상술한 아핀 모션 모델링 기법들이 사용될 때 다양한 문제들이 발생한다. 하나의 문제는 아핀 모션 모델을 사용하는 높은 시그널링 코스트를 포함한다. 예를 들어, 높은 시그널링 코스트는 디코더가 픽처들에서의 블록들의 서브 블록들 또는 픽셀들에 대한 모션 벡터들을 도출하기 위해 비트스트림에서 시그널링될 아핀 모션 파라미터들에 대한 필요성에 적어도 부분적으로 기인한다. 또한, 양방향 매칭 기반 아핀 모션 도출의 함수들은 풀기에 너무 복잡하여, 대량의 프로세싱 리소스들의 사용을 유도할 수 있다.
적어도 위에 언급된 문제들을 해결하는 디코더 측 아핀 모션 도출을 수행하기 위한 방법들 및 시스템들이 본 명세서에서 설명된다. 본 명세서에 설명된 기법들 중 임의의 기법이 개별적으로 적용될 수 있거나, 기법들 중 임의의 적절한 조합이 적용될 수 있다. 본 명세서에 설명된 기법들을 사용하여, 디코딩 디바이스 (비디오 디코더 또는 디코더로도 칭함) 는 비디오 픽처들의 하나 이상의 블록들에 대한 아핀 모션 파라미터들을 결정할 수 있다. 기법들은 아핀 모션 정보가 디코딩 디바이스로 전송될 필요없이 수행될 수 있다. 예를 들어, 아핀 모션 파라미터들 (또는 아핀 모션 파라미터들과 아핀 모션 파라미터들의 예측자들 사이의 차이들) 은 디코딩 디바이스에 의해 수행될 그러한 아핀 모션 도출 모드에 대해 비트스트림에서 시그널링될 필요는 없다. 일부 경우들에서, 병진 모션이 특별한 아핀 모션으로 간주될 수 있다.
템플릿들은 현재 블록에 대한 디코더 측 아핀 모션 도출을 수행하는데 사용될 수 있다. 템플릿을 사용하는 아핀 모션 도출은 템플릿 매칭 기반 아핀 모션 도출로 지칭될 수 있다. 템플릿 매칭 기반 아핀 모션 도출은 디코더 측에서 아핀 모션 정보 (예를 들어, 아핀 모션 벡터) 를 도출하는데 사용될 수 있다. 예를 들어, 현재 아핀 템플릿은 현재 블록의 공간적으로 이웃하는 재구성된 샘플들 (예를 들어, 픽셀들) 을 포함할 수 있고, 참조 픽처의 참조 아핀 템플릿은 현재 아핀 템플릿에서의 샘플들에 대응하는 참조 픽처에서의 샘플들 (예를 들어, 픽셀들) 을 포함할 수 있다. 현재 아핀 템플릿 및 참조 아핀 템플릿은 현재 블록에 대한 아핀 모션 파라미터들을 결정하는데 사용될 수 있다. 아핀 모션 파라미터들은 현재 아핀 템플릿의 제어 포인트들에 대한 아핀 모션 벡터들을 정의한다. 예를 들어, 현재 아핀 템플릿의 제어 포인트들의 아핀 모션 파라미터들 (예를 들어, a, b, c, d, 파라미터들은 모션 벡터들을 정의함) 은 아핀 예측 (참조 아핀 템플릿에서의 픽셀들과 연관됨) 과 현재 블록의 현재 아핀 템플릿의 재구성된 샘플들 사이의 에러 (또는 왜곡) 를 최소화함으로써 도출될 수 있다. 도출된 아핀 모션 파라미터들은 제어 포인트들에 대한 아핀 모션 벡터들을 정의한다. 그 후 제어 포인트들의 아핀 모션 벡터들은 현재 블록의 픽셀들 또는 서브 블록들에 대한 모션 벡터들을 결정하는데 사용될 수 있다.
일부 예들에서, 현재 블록의 현재 아핀 템플릿 (아핀 모션이 도출될) 은 하나 이상의 이웃 블록들로부터의 샘플들의 블록 또는 영역이며, 현재 아핀 템플릿의 경계는 현재 블록의 하나 이상의 경계들을 공유한다. 일부 예들에서, 현재 아핀 템플릿은 아핀 모션이 도출될 블록의 상단 경계 또는 좌측 경계일 수 있다. 일부 경우들에서, 현재 아핀 템플릿은 L-형상이다. 예를 들어, 현재 아핀 템플릿은 현재 블록의 상단 경계와 좌측 경계를 공유할 수 있다. 다른 경우들에서, 아핀 템플릿은 임의의 다른 적합한 형상일 수 있다. 일부 예들에서, 아핀 템플릿은 현재 블록의 하나 이상의 참조 픽처들 (예를 들어, HEVC 에서 시간적 MV 예측에 사용된 병치된 픽처) 에서 재구성된 픽셀을 포함할 수 있다. 이러한 예들에서, 도출된 아핀 모션 벡터들은 현재 픽처의 POC 거리, 현재 블록의 타겟 참조 픽처, 및 아핀 템플릿이 위치되는 참조 픽처에 따라 스케일링될 수 있다.
도 11a 는 현재 블록 (1102) 및 현재 블록 (1102) 의 현재 아핀 템플릿 (1104) 의 예를 도시하는 다이어그램이다. 현재 블록 (1102) 은 코딩 유닛 (CU), 예측 유닛 (PU), 또는 임의의 다른 적절한 픽처의 블록일 수 있다. 현재 아핀 템플릿 (1104) 에서의 픽셀들은 현재 블록 (1102) 에 이웃하고 있는 블록들로부터 이전에 재구성된 픽셀들을 포함한다. 도 11a 의 예에서, 현재 아핀 템플릿 (1104) 은 L-형상 패턴이고, 이는 현재 아핀 템플릿 (1104) 의 상단 좌측 코너 및 상단 우측 코너에 포지션될 수 있는 제어 포인트들을 결정하는데 유용할 수 있다.
도 11b 는 현재 아핀 템플릿 (1104) 을 갖는 현재 블록 (1102) 및 참조 아핀 템플릿 (1112) 을 갖는 참조 픽처의 참조 블록 (1110) 을 도시하는 다이어그램이다. 참조 아핀 템플릿 (1112) 은 도 11b 에서 현재 아핀 템플릿 (1104) 과 동일한 형상인 것으로 나타나 있지만, 참조 아핀 템플릿 (1112) 은 소정의 아핀 모션 파라미터들의 세트가 주어지면, 현재 아핀 템플릿 (1104) 의 픽셀들에 대해 어디에 참조 픽셀들이 있는지에 의존하여, 현재 아핀 템플릿 (1104) 과 동일한 형상이 아닐 수도 있다. 제어 포인트들 (1106, 1108) 은 현재 블록 (2) 에 대해 정의된다. 제어 포인트 (1106) 는 현재 아핀 템플릿 (1104) 의 상단 좌측 코너에 위치되고, 제어 포인트 (1108) 는 현재 아핀 템플릿 (1104) 의 상단 우측 코너에 위치된다. 위에 언급된 바와 같이, 현재 블록 (1102) 의 제어 포인트들 (1106 및 1108) 에 대한 아핀 모션 벡터들
Figure pct00055
Figure pct00056
은, (참조 아핀 템플릿 (1112) 의 픽셀에 대응하는) 아핀 예측과 현재 블록 (1102) 의 현재 아핀 템플릿 (1104) 의 재구성된 픽셀들 사이의 왜곡을 최소화함으로써 도출될 수 있다. 예를 들어, 현재 아핀 템플릿 (1104) 의 픽셀들 및 참조 아핀 템플릿 (1112) 에 병치된 픽셀들을 사용하여, 위의 식들 (2)-(6) 은 아핀 모션 파라미터들의 최적의 세트가 현재 블록 (1102) 의 제어 포인트들 (1106 및 1108) 에 대해 결정될 때 까지 아핀 모션 파라미터들 (예를 들어, a, b, c, d) 에 대해 반복적으로 푸는데 사용될 수 있다.
아핀 모션 파라미터의 제 1 반복을 결정하기 위해 초기 모션 벡터 (또한 초기 모션 벡터 시드 또는 시드로도 지칭됨) 가 필요하다. 초기 모션 벡터는 참조 아핀 템플릿 (1112) 을 식별하기 위해 디코딩 디바이스에 의해 필요하다. 예를 들어, 초기 모션 벡터는 참조 아핀 템플릿 (1112) 을 포인팅하고, 따라서 어떤 참조 픽처인지, 그리고 그 참조 픽처 (참조 아핀 템플릿 (1112) 에 대응함) 가 어디에 있는지를 식별하는데 사용되어, 현재 블록 (1102) 에 대한 아핀 모션 모션 파라미터들을 도출하는데 필요한 정보를 탐색할 수 있다. 참조 픽처의 참조 블록 (1110) 에서 아핀 모션 파라미터들에 대한 탐색은 초기 모션 벡터에 의해 참조된 픽셀 주위에서 수행된다.
초기 모션 벡터는 임의의 적절한 기법을 사용하여 결정될 수 있다. 예를 들어, 최상의 병진 모션 벡터가 현재 블록 (1102) 에 대해 결정될 수 있고, 현재 블록 (1102) 에 대한 아핀 모션을 도출하기 위한 초기 모션 벡터로서 사용될 수 있다. 병진 모션 벡터는 전체 블록 (예를 들어, 현재 블록 (1102)) 에 대해 결정되는 한편, 아핀 모션 벡터는 모든 픽셀들에 대해 또는 블록의 소정의 서브 블록들에 대해 결정된다는 것을 유의한다. 일부 경우들에서, 프레임 레이트 업 컨버전 (FRUC) 템플릿 매칭이 전체 현재 블록 (1102) 에 대한 병진 모션 벡터를 결정하기 위해 수행될 수 있다. 예를 들어, 템플릿 매칭은 현재 픽처에서의 템플릿 (현재 블록의 상단 및/또는 좌측 이웃 블록들) 과 참조 픽처에서의 블록 (예를 들어, 템플릿과 동일한 사이즈) 사이의 최상의 매치를 찾음으로써 현재 블록 (1102) 의 병진 모션 정보를 도출하는데 사용될 수 있다. FRUC 템플릿 매칭을 위해 사용된 템플릿은 현재 아핀 템플릿 (1104) 과 동일한 템플릿일 수 있거나 이와 상이한 템플릿일 수 있다. 하나의 예시적인 예에서, 현재 아핀 템플릿 (1104) 은 L-형상 (도 11a 내지 도 11c 에 나타낸 바와 같음) 인 한편, FRUC 템플릿 매칭 템플릿은 도 12 에 나타낸 템플릿 (1216) 과 같은 형상을 가질 수 있으며, 이는 하기에서 더 상세하게 논의된다.
FRUC 모드는 블록의 모션 정보가 시그널링되지 않고 디코더 측에서 도출되는 특수 타입의 병합 모드로서 고려될 수 있다. 두 가지 타입의 FRUC 모드는 양방향 매칭 및 템플릿 매칭을 포함한다. 일부 경우들에서, FRUC 플래그는 병합 플래그가 블록에 대해 참일 때 그 블록 (예를 들어, CU 등) 에 대해 시그널링될 수 있다. FRUC 플래그가 거짓일 때 병합 인덱스가 시그널링될 수 있고 정규 병합 모드가 이용될 수 있다. FRUC 플래그가 참일 때, 블록에 대한 병진 모션 정보를 도출하기 위해 어떤 FRUC 모드 (예를 들어, 양방향 매칭 또는 템플릿 매칭) 가 사용될 것인지를 표시하기 위해 부가 FRUC 모드 플래그가 시그널링될 수 있다.
병진 모션 도출 프로세스 동안, 초기 병진 모션 벡터는 양방향 매칭 또는 템플릿 매칭을 사용하여 전체 블록 (예를 들어, CU 등) 에 대해 도출될 수 있다. 블록의 병합 모션 벡터 (MV) 후보 리스트가 검사될 수 있고, 최소 매칭 코스트를 유도하는 병합 MV 후보 리스트로부터의 후보 모션 벡터가 초기 병진 모션 벡터로서 선택될 수 있으며, 참조 픽처에서의 픽셀이 로컬 탐색을 위한 시작 포인트로서 사용될 수 있다. 예를 들어, 양방향 매칭 또는 템플릿 매칭에 기초한 로컬 탐색은 시작 포인트 주위에서 수행될 수 있으며, 최소 매칭 코스트를 초래하는 모션 벡터가 전체 CU 에 대한 모션 벡터로서 취해질 수 있다. 결과적으로, 모션 정보는 시작 포인트로서 도출된 CU 모션 벡터들로 서브 블록 레벨에서 추가로 리파이닝될 수 있다.
위에 언급된 바와 같이, FRUC 템플릿 매칭 모드는 현재 블록 (1102) 에 대한 병진 모션 벡터를 결정하기 위해 수행될 수 있다. 도 12 는 템플릿 매칭의 일 예를 도시한다. 템플릿 매칭에서, 템플릿 (1216) 은 참조 프레임 0 (1204) 으로부터 모션 정보를 도출하는데 사용될 수 있다. 예를 들어, 템플릿 (1216) 은 현재 프레임 (1202) 에서 현재 블록 (1212) 의 상단 및/또는 좌측 이웃 블록들을 포함할 수도 있다. 이 예에서, 블록들의 세트는 템플릿 (1216) 과 최상 매칭하는 참조 프레임 0 (1204) 에서 찾을 수 있고, 여기서 블록들의 세트가 템플릿 (1216) 과 동일한 사이즈 및/또는 구성이다. 그 후, 모션 벡터 (1220) 는 참조 프레임 0 (1204) 에서 현재 블록 (1212) 의 상대 위치 및 블록들의 세트의 위치를 이용하여 결정될 수 있다. 현재 블록 (1212) 의 상대 위치는 예를 들어 현재 블록 (1212) 의 중심을 관통하는 직교 축 (1230) 으로부터 결정될 수 있다.
FRUC 템플릿 매칭은 이중 예측 또는 단일 예측 블록들에 대해 수행될 수 있다. 예를 들어, 각각의 참조 픽처 리스트에 대해 템플릿 매칭이 독립적으로 수행될 수도 있다. 템플릿 (1216) 은 현재 픽처에서 이전에 재구성된 픽셀들을 포함한다. 현재 블록 (1212) 의 모션은 템플릿 (1216) 에서 이웃하는 픽셀들을 사용하여 결정된다. 디코더 측에서, 템플릿 (1216) 에 대한 최상의 병진 모션이 결정되고, 현재 블록 (1212) 의 병진 모션 벡터로서 사용된다. 탐색 프로세스는 참조 픽처에서의 템플릿과 현재 블록 (1212) 의 템플릿 사이의 최소 SAD 를 탐색하는 것을 포함할 수 있다.
다른 FRUC 모드는 양방향 매칭을 포함한다. 도 13 은 양방향 매칭의 일 예를 도시한다. 양방향 매칭에서, 현재 프레임 (1302) 에서 현재 블록 (1312) 에 대한 모션 정보가 도출될 수 있으며, 여기서 현재 프레임 (1302) 은 프레임 레이트 업-컨버전에 대해 생성되고 있다. 구체적으로, 제 1 참조 프레임 (참조 프레임 0 (1304)) 의 제 1 블록 (1314) 과 제 2 참조 프레임 (참조 프레임 1 (1306)) 의 제 2 블록 (1316) 사이에서 연속 모션 궤도 (1310) 가 가정될 수 있다. 참조 프레임 0 (1304) 에 대한 모션 벡터 (MV0)(1320) 는 현재 블록 (1312) 에 대해 결정될 수 있다. 예를 들어, 현재 블록 (1312) 에 중심을 둔 직교 축 (1330) 에 의해 결정되는 참조 프레임 0 (1304) 에서의 현재 블록의 포지션은 MV0 (1320) 을 결정하기 위해 이용될 수 있다. 유사하게, 참조 프레임 1 (1306) 에 대한 모션 벡터 (MV1)(1322) 는 직교 축 (1330) 에 의해 주어진 바와 같이 참조 프레임 1 (1306) 에서의 현재 블록의 포지션을 이용하여 결정될 수 있다. 모션 궤도 (1310) 는 연속적인 것으로 추정되기 때문에, MV0 (1320) 및 MV1 (1322) 는 현재 프레임 (1302) 과 2 개의 참조 프레임들 (1304 및 1306) 사이의 시간적 거리 (각각 TD0 (1332) 및 TD1 (1334)) 에 비례할 수 있다. 예를 들어, MV0 (1320) 은 TD0 (1332) 에 기초하여 스케일링될 수 있고, MV1 은 TD1 (1334) 에 기초하여 스케일링될 수 있다.
일부 경우들에서, TD0 (1332) 및 TD1 (1334) 는 동일할 수 있다. 이들 경우들에서, 양방향 매칭의 결과들은 미러 기반 양-방향 모션 벡터 도출로부터의 결과들과 동일할 수 있다. 일부 경우들에서, 양방향 매칭은 템플릿 매칭에 기초한 아핀 모션 도출의 제 1 반복에 대한 초기 모션 벡터 (병진 모션 벡터) 를 결정하기 위해 사용될 수 있다.
인코더에서, CU 에 대해 FRUC 모드를 사용할지 여부는 예를 들어, 정규 병합 후보에 대해 행해진 바와 같이 레이트 왜곡 코스트 선택에 기초할 수 있다. 즉, 레이트 왜곡 최적화 (RDO) 코스트는 주어진 CU 에 대한 2 개의 매칭 모드들 (예를 들어, 양방향 매칭 및 템플릿 매칭) 각각에 대해 결정될 수 있다. 최저 코스트를 갖는 매칭 모드는 다른 CU 모드들과 추가로 비교될 수 있다. FRUC 매칭 모드가 최저 코스트를 가질 때, FRUC 플래그는 FRUC 병합 모드가 CU 를 위해 이용되어야 하는 것을 디코딩 디바이스에 표시하도록 설정될 수 있다. 부가적으로, 사용될 매칭 모드는 또한 비트스트림에서 (예를 들어, PPS, SPS, VPS, SEI 메시지 등에서) 표시될 수 있다. 예를 들어, FRUC 템플릿 매칭이 템플릿 매칭 기반 아핀 모션 도출의 제 1 반복에 대한 초기 아핀 모션 벡터를 결정하는데 사용될 것임이 비트스트림에서 표시될 수 있다. 그 후, 디코딩 디바이스는 비트스트림에서의 표시 (예를 들어, 변수, 플래그 또는 PPS, SPS, VPS, SEI 메시지 등에서의 다른 신택스 아이템) 에 기초하여 결정할 수 있다.
일부 예들에서, 더 높은 정밀도로 병진 모션 벡터를 획득하기 위해 광학-플로우-기반 모션 리파인먼트가 FRUC 템플릿 매칭에 후속할 수도 있다. 일부 예들에서, 최상의 병진 모션 벡터는 아핀 모션 도출을 위한 초기 모션 벡터 시드로서 직접 사용될 수도 있다.
일부 예들에서, 아핀 모션 벡터를 갖는 임의의 이웃 블록들이 있다면, 이웃 블록의 아핀 모션 벡터는 아핀 모션 도출을 위한 초기 모션 벡터 시드로서 사용될 수 있다. 예를 들어, 상술한 아핀 병합 (AF_MERGE) 모드는 템플릿 매칭 기반 아핀 모션 도출에 대한 초기 모션 벡터를 결정하는데 사용될 수도 있다. 일부 경우들에서, 거리 (예를 들어, SAD 등) 는 최소 거리가 사용될 수 있는 모션 벡터, 및 (이웃 블록의) 아핀 모션 벡터에 대해 그리고 (FRUC 템플릿 매칭에 의해 도출된) 템플릿 매칭 병진 모션 벡터에 대해 결정될 수 있다. 일부 경우들에서, 이웃 블록의 아핀 모션 벡터가 초기 모션 벡터 시드로서 직접 사용될 수 있다.
일부 경우들에서, 회전 불변 및/또는 스케일 불변 오퍼레이터가 (예를 들어, 동일한 비디오 프로세싱 파이프라인에서 업스트림 프리-프로세싱 서브 블록으로부터, 업스트림 컴퓨터 비전 서브 시스템 등으로부터) 이용가능할 때, 키-포인트들의 대응이 아핀 파라미터들을 도출하는데 사용될 수도 있다. 하나의 예시적인 예에서, 4-파라미터 또는 6-파라미터 아핀 모델에서, 2 개 (예를 들어, 4-파리미터에 대해), 4 개 (예를 들어, 6-파라미터에 대해), 또는 더 많은 대응 키-포인트들은 로컬 이웃 또는 탐색 영역에서 스케일 불변 피처 변환 (Scale Invariant Feature Transform; SIFT) 피처 포인트들로서 발견될 수도 있고, 연관된 아핀 파라미터들은 초기 포인트로서 파라미터들의 세트를 취할 때 더 적은 반복 수로 도출될 수 있다. 스케일 파라미터는 2 개의 키-포인트의 대응을 사용하여 도출될 수도 있다.
일부 구현들에서, 아핀 모델 (예를 들어, 4-파라미터 아핀 모델 또는 6-파라미터 아핀 모델) 은 블록 사이즈 및 프레임 타입과 같은 이전에 코딩된 정보에 기초하여 결정될 수 있다.
그 후 모션 벡터 (예를 들어, 이웃 블록으로부터의 아핀 모션 벡터 또는 템플릿 매칭을 사용하여 결정된 병진 모션 벡터) 가 아핀 모션 탐색을 위한 초기 모션 벡터로서 사용될 수 있다. 도 11b 로 되돌아 가면, 초기 모션 벡터 시드는 참조 블록 (1110) 에서 참조 템플릿 (1112) 이 디코딩 디바이스에 의한 사용을 위해 위치될 곳을 정의하는, 참조 픽처 내의 소정의 픽셀을 가리킨다. 디코딩 디바이스는 현재 블록 (1102) 에 대한 아핀 모션 도출을 수행하기 위해 현재 템플릿 (1104) 및 참조 템플릿 (1112) 을 사용할 수 있다. 초기 모션 벡터 시드가 결정되면, 테일러 팽창에 기초한 방법 (예컨대, 식 (2) 내지 (6) 과 관련하여 상술한 테일러 팽창 기반 방법) 이 현재 아핀 템플릿 (1104) 및 그 아핀 예측 (참조 아핀 템플릿 (1112) 로 나타냄) 에 기초한 아핀 모션을 푸는데 사용될 수 있다. 일부 경우들에서, 아핀 모션은 하기에서 더 설명되는 바와 같이, 반복적으로 도출될 수 있다. 최대 반복 수는 미리정의되거나 시그널링될 수도 있다. 대안으로 또는 부가적으로, 반복 수는 현재 아핀 템플릿 (1104)(또는 현재 블록) 의 사이즈, 예측 방향 (이중 예측 또는 단일 예측), 또는 임의의 다른 적절한 인자와 같은 컨텍스트에 의존할 수도 있다. 일부 경우들에서, 이선형 (bi-linear) 보간 필터와 같은 규칙적인 보간 프로세스에서 사용된 것 이외의 보간 필터가 아핀 모션을 푸는데 사용될 수도 있다.
위에 언급된 바와 같이, 일단 초기 모션 벡터가 결정되면, 상술한 식 (2) 내지 (6) 은 아핀 모션 파라미터들의 제 1 반복 (초기 모션 벡터 시드를 사용한 초기 반복) 에 대해 푸는데 사용될 수 있다. 이전에 설명된 바와 같이, 아핀 모션 파라미터들은 다음과 같이 정의된 파라미터들 (a, b, c, d) 을 포함할 수 있다:
Figure pct00057
;
Figure pct00058
;
Figure pct00059
; 및
Figure pct00060
. 초기 아핀 파라미터들의 세트 (초기 모션 모델의 초기 a, b, c, d 값들의 세트) 로 제 1 반복이 수행된 후, 새로운 아핀 모션 파라미터들의 세트가 식 (6) 에 의해 결정된다. 예를 들어, 초기 모션 벡터 시드의 알려진 값들
Figure pct00061
Figure pct00062
과 초기 모션 벡터 시드와 관련된 (현재 블록 (1102) 에서) 픽셀 또는 서브 블록의 알려진 (x, y) 포지션은 식 (4) 내지 (6) 을 사용하여 초기 아핀 모션 파라미터들 (a, b, c, d) 의 세트를 결정하는데 사용될 수 있다. 제 1 반복에서 아핀 모션 파라미터를 도출할 때, 초기 아핀 모션 모델은 현재 아핀 템플릿 (1104) 내의 매 픽셀 (또는 일부 경우들에서는 모든 픽셀보다 적게) 에 대한 픽셀 당 모션을 도출하는데 사용될 수 있다. 예를 들어, 초기 아핀 모션 모델의 초기 a, b, c, d 값들은 식 (4) 및 (5), 또는 등가 식 (1) 로 삽입되어, 현재 템플릿 (1104) 의 (위치 (x, y) 에서) 각각의 픽셀에 대해 (
Figure pct00063
Figure pct00064
에 의해 정의된) 모션 벡터를 결정할 수 있다. 참조 템플릿 픽셀은 그 후 현재 템플릿 (1104) 내의 각각의 픽셀에 대해 결정된 모션 벡터에 의해 위치될 수 있다. 예를 들어, 디코딩 디바이스는 결정된 아핀 모션 파라미터들을 사용하여 현재 템플릿 (1104) 내의 각각의 픽셀
Figure pct00065
에 대해 참조 픽셀
Figure pct00066
을 위치시킬 수 있으며, 여기서 i 는 픽셀 인덱스이다. 그러한 참조 블록 (1110) 에서의 대응 참조 픽셀들
Figure pct00067
은 참조 템플릿 (1112) 을 형성한다. 디코딩 디바이스는 그 후 현재 템플릿 (1104) 내의 픽셀들
Figure pct00068
및 참조 템플릿 (1112) 내의 픽셀들
Figure pct00069
을 가질 것이고, 참조 템플릿 (1112) 내의 각각의 픽셀에 대해 수평 구배
Figure pct00070
및 수직 구배
Figure pct00071
를 계산할 수 있다. 위에 언급된 바와 같이, i 는 현재 아핀 템플릿 (1104) 및 참조 아핀 템플릿 (1112) 내의 픽셀들에 대한 인덱스이다. 식 (6) 은 현재 블록 (1102) 에 대한 아핀 모션 파라미터들 (a, b, c, d) 를 풀기 위해 사용될 수 있다. 예를 들어, 디코딩 디바이스는 식 (6) 및 픽셀들
Figure pct00072
Figure pct00073
에 대한 픽셀 값들 및 (x, y) 위치들, 수직 구배 (
Figure pct00074
), 수평 구배 (
Figure pct00075
)(여기서 수직 및 수평 구배는 참조 픽셀
Figure pct00076
주위의 구배를 나타냄) 를 포함한 알려진 값들을 사용하여 새로운 아핀 모션 파라미터들을 도출할 수 있다.
각각의 반복은 식 (4) 내지 (6) 을 수행하는 것을 포함한다. 예를 들어, 식 (4) 및 (5) 는 참조 아핀 템플릿 (1112) 에 새로운 참조 픽셀
Figure pct00077
을 위치시키는데 사용될 수 있다. 현재 템플릿 (1104) 내의 각각의 픽셀
Figure pct00078
은 그 반복에서 아핀 모션 모델을 사용하여 그 참조 픽셀
Figure pct00079
을 결정할 수 있다. 현재 템플릿 (1104) 내의 픽셀들
Figure pct00080
의 모든 참조 픽셀들
Figure pct00081
은 참조 템플릿 (1112) 을 형성하며, 이 경우 참조 아핀 템플릿 (1112) 은 현재 아핀 템플릿 (1104) 과 동일한 형상 (예를 들어, L-형상) 이 아닐 수도 있다. 현재 아핀 템플릿 (1104) 의 픽셀들
Figure pct00082
및 새로운 참조 아핀 템플릿 (1112) 의 픽셀들
Figure pct00083
은 그 후 식 (6) 을 수행함으로써 새로운 아핀 모션 파라미터들을 도출하는데 사용될 수 있다.
하나의 예시적인 예에서, 각각의 반복에 대해, 현재 아핀 템플릿 (1104) 에서의 각각의 픽셀
Figure pct00084
의 픽셀 당 모션 벡터 (
Figure pct00085
,
Figure pct00086
) 는 (이전 반복으로부터의 아핀 모션 파라미터들 및 식 (4) 및 (5) 를 사용하여 결정된) 참조 아핀 템플릿 (1112) 에서의 연관된 참조 픽셀
Figure pct00087
을 가리킨다. 예를 들어, 현재 아핀 템플릿 (1104) 에서의 픽셀
Figure pct00088
및 참조 아핀 템플릿 (1112) 에서의 연관된 참조 픽셀
Figure pct00089
은 본 명세서에서 병치된 픽셀들의 쌍으로 지칭된다. 각각의 반복에 대해, 병치된 픽셀들의 쌍들 및 대응 모션 벡터는 이전 반복으로부터 업데이트된 아핀 파라미터들과 함께 식 (4) 및 (5) 를 사용하여 관련된다. 업데이트된 병치된 픽셀들의 쌍 (새로운 참조된 픽셀들
Figure pct00090
이 식 (4) 및 (5) 를 사용하여 구해진 후) 은 그 후 식 (6) 을 다시 풀기 위해 사용될 수 있다. 예를 들어, 병치된 픽셀들 (현재 아핀 템플릿 (1104) 으로부터의 픽셀 및 이전 반복에서 도출된 파라미터들을 갖는 아핀 모션 모델을 사용하여 위치된 참조 템플릿 (1112) 으로부터의 대응 픽셀) 을 사용하여, 또 다른 아핀 모션 파라미터들의 세트 (예를 들어, 또 다른 a, b, c, d 파라미터들의 세트) 가 도출될 수 있다. 이러한 반복 프로세스는 최대 한계 (예를 들어, 최대 5 회 반복) 가 도달될 때까지 또는 현재 아핀 템플릿 (1104) 의 모든 픽셀들이 프로세싱될 때까지 소정 회수로 수행될 수 있다. 식 (6) 의 각각의 반복은 현재 블록 (1102) 에 대한 아핀 모션 모델로서 사용될 수 있는 상이한 아핀 모션 파라미터들의 세트 (현재 블록 (1102) 에 대한 상이한 a, b, c, d 값들) 을 갖는 상이한 아핀 모션 모델을 초래한다.
수행된 반복들 (예를 들어, 5 회 반복 또는 다른 수) 로부터의 최상의 아핀 모션 파라미터들의 세트가 현재 블록 (1102) 에 대한 아핀 모션 모델로서 선택될 수 있다. 예를 들어, 최상의 아핀 모션 파라미터들의 세트는 품질 메트릭에 기초할 수 있다. 품질 메트릭의 하나의 예시적인 예는 절대 차의 합 (SAD) 이다. SAD 는 이미지 블록들 사이의 유사성의 척도이고, 원래 블록에서 각각의 픽셀 (예를 들어, 현재 아핀 템플릿 (1104) 에서의 픽셀들) 과 비교를 위해 사용되는 블록의 대응 픽셀 (예를 들어, 참조 템플릿 (1112) 에서의 픽셀들) 사이의 절대 차를 취함으로써 계산될 수 있다. 차이들은 블록 유사성의 메트릭을 생성하기 위해 합산될 수 있다. 이러한 예에서, 최소 SAD 메트릭을 초래하는 아핀 모션 파라미터들의 세트는 현재 블록 (1102) 에 대한 아핀 모션 모델로서 선택될 수 있다. 특히, 절대 변환 차의 합 (sum of absolute transformed difference; SATD), 평균 제곱 에러 (Mean Square Error; MSE), 평균 절대 에러 (Mean absolute error; MAE), 절대 차의 평균 (mean of absolute differences; MAD), 피크 신호 대 노이즈 비 (Peak Signals to Noise Ratio; PSNR) 을 포함하지만 이에 제한되지 않는, 임의의 다른 적절한 품질 메트릭이 사용될 수 있다.
SAD 메트릭은 다음과 같이 정의될 수 있다:
Figure pct00091
식 중,
Figure pct00092
Figure pct00093
는 현재 블록 (예를 들어, 현재 아핀 템플릿 (1104)) 과 참조 블록 (참조 아핀 템플릿 (1112)) 에서 각각 비교되는 픽셀들 (i, j 는 픽셀 좌표 위치임) 이고, N 은 N x N 블록의 사이즈이다.
도 11b 에 나타낸 바와 같이, 제어 포인트 (1106) 는 현재 아핀 템플릿 (1104) 의 상단 좌측 포인트이고, 제어 포인트 (1108) 는 현재 아핀 템플릿 (1104) 의 상단 우측 포인트이다. 일부 경우들에서, 상단 좌측 및 우측 포인트들은 픽셀들이 위치되지 않은 현재 아핀 템플릿 (1104) 에서의 포인트들에 (예를 들어, 템플릿 (1104) 의 먼 상단 좌측 코너 및 먼 상단 우측 코너에서) 위치될 수 있다. 다른 경우들에서, 상단 좌측 및 상단 우측 포인트들은 현재 아핀 템플릿 (1104) 의 픽셀 위치들 (예를 들어, 템플릿 (1104) 의 상단 좌측 픽셀 및 상단 우측 픽셀) 에 위치될 수 있다. 디코딩 디바이스에 의해 (예를 들어, SAD 메트릭에 기초하여) 최적인 것으로 결정되는 아핀 모션 모델의 모션 파라미터들의 세트는 제어 포인트들 (1106 및 1108) 에 대해 모션 벡터들 (v0 및 v1) 을 정의한다. 2 개의 제어 포인트들 (1106 및 1108) 의 모션 벡터들 (v0 및 v1) 은 그 후 현재 블록 (1102) 내에서 각각의 픽셀 또는 각각의 서브 블록의 모션을 도출하는데 사용될 수 있다.
도 11c 는 2 개의 제어 포인트들 (1106 및 1108) 의 모션 벡터들 (v0 및 v1) 에 기초하여 결정된 서브 블록 당 모션을 도시하는 다이어그램이다. 나타낸 바와 같이, 현재 블록 (1102) 은 16 개의 총 서브 블록들 (예를 들어, 서브 블록 (1122)) 을 갖는 4 x 4 서브 블록들의 세트로 나눠진다. 현재 아핀 템플릿 (1104) 의 제어 포인트들 (1106 및 1108) 의 모션 벡터들 (v0 및 v1) 은 현재 블록 (1102) 에서의 각각의 서브 블록의 모션을 도출하는데 사용될 수 있다. 하나의 예시적인 예에서, 제어 포인트들 (1106 및 1108) 의 모션 벡터들 (v0 및 v1), 현재 블록 (1102) 의 폭 (w), 및 서브 블록을 나타내는 (x, y) 포지션이 주어지면, 식 (1) 이 서브 블록의 모션 벡터(
Figure pct00094
,
Figure pct00095
로 나타냄) 를 결정하는데 사용될 수 있다. 다른 예에서, 선택된 아핀 모션 모델의 알려진 a, b, c, d 값들 및 서브 블록을 나타내는 (x, y) 포지션이 주어지면, 식 (4) 및 (5) 가 서브 블록의 모션 벡터
Figure pct00096
,
Figure pct00097
를 결정하는데 사용될 수 있다. 일부 경우들에서, 서브 블록 중심에서의 (x, y) 포지션, 서브 블록의 코너에서의 (x, y) 포지션 또는 서브 블록의 일부 다른 위치에서의 (x, y) 포지션은 식 (1) 에서, 또는 식 (4) 및 (5) 에서 서브 블록을 나타내는데 사용될 수 있다.
현재 아핀 템플릿 (1104) 으로부터의 현재 블록 (1102) 의 오프셋 (도 11a 에서 1120 으로 나타냄) 은 현재 블록 (1102) 의 픽셀들 또는 서브 블록들에 대해 사용된 (x, y) 포지션 좌표들을 결정할 때 고려될 수 있다. 예를 들어, 현재 블록 (1102) 이 16 픽셀 x 16 픽셀이고, 현재 템플릿 (1104) 이 각각의 방향에서 4 개의 픽셀들 (예를 들어, 템플릿의 상단 부분에서 4 개의 행들의 픽셀들 및 좌측 부분에서 4 개의 열들의 픽셀들) 을 갖는 경우, 현재 블록 (1102) 의 상단 좌측 서브 블록의 상단 좌측 픽셀이 위치 (4, 4) 에 있을 수 있다. 이러한 예에서, (4, 4) 의 값은 현재 블록 (1102) 의 (상단 좌측 코너에서) 제 1 서브 블록에 대한 모션 벡터를 결정할 때 식 (1) 에서 또는 식 (4) 및 (5) 에서 (x, y) 포지션으로서 사용될 수 있다.
도 11c 에 나타낸 바와 같이, 아핀 모션 (제어 포인트 모션 벡터들 (v0 및 v1) 로 나타냄) 이 아핀 템플릿에 기초하여 현재 블록 (1102) 에 대해 도출된 후, 아핀 모션은 각각의 서브 블록의 포지션에 따라 현재 블록 (1102) 의 각각의 서브 블록에 대한 병진 모션에 매핑될 수 있다. 예를 들어, 각각의 서브 블록에 대한 모션 벡터가 도출된 후, 그 모션 벡터는 병진 모션 벡터로서 간주될 수 있다. 하나의 예시적인 예에서, 4-파라미터 아핀 모델에 대한 매핑은
Figure pct00098
Figure pct00099
이며, 여기서 x 및 y 는 (서브 블록의 중심에 또는 코너에서) 서브 블록의 포지션을 표시한다. 병진 모션은 서브 블록 내의 모든 픽셀들에 대해 동일한 것으로 간주될 수 있다.
일부 예들에서, 현재 블록에서의 서브 블록의 사이즈 및/또는 서브 블록의 수는 미리정의될 수 있다. 예를 들어, 현재 블록 (1102) 에서 서브 블록들의 사이즈는 4 픽셀 x 4 픽셀, 또는 다른 적절한 사이즈이도록 미리정의될 수 있다. 일부 예들에서, 현재 블록들에서의 서브 블록들의 사이즈 및 /또는 서브 블록들의 수는 비트스트림에서 (예를 들어, PPS, SPS, VPS 에서, SEI 메시지에서 등) 시그널링되거나 그렇지 않으면 포함될 수 있다. 일부 예들에서, 서브 블록의 사이즈는 현재 블록의 사이즈에 기초하여 적응적으로 변경될 수도 있다. 일부 예들에서, 서브 블록의 사이즈는 FRUC 모드에서 정의된 것과 동일할 수도 있다.
일부 구현들에서, 복잡도를 감소시키기 위해, 현재 아핀 템플릿 (1104) 에서의 픽셀들의 부분 세트만이 현재 블록에 대한 아핀 모션을 도출하는데 사용된다. 현재 아핀 템플릿의 사이즈 (예를 들어, 상단 경계의 행들의 수 및 좌측 경계의 열들의 수) 는 비트스트림에서 (예를 들어, PPS, SPS 또는 VPS 와 같은 하나 이상의 파라미터 세트들에서) 시그널링될 수 있거나 미리정의될 수 있다. 임의의 미리정의된 수의 픽셀들은 현재 아핀 템플릿 (및 참조 아핀 템플릿) 에 포함될 수 있다. 하나의 예시적인 예에서, 4-픽셀 아핀 템플릿이 사용될 수 있으며, 이 경우 L-형상 템플릿 (예를 들어, 현재 아핀 템플릿 (1104)) 에 대해, 아핀 템플릿은 템플릿의 상부 부분에서의 4 개의 행들의 픽셀들 및 템플릿의 좌측 부분에서의 4 개의 열들의 픽셀들을 포함할 수 있다.
일부 예들에서, 아핀 모션 벡터들은 블록의 현재 아핀 템플릿의 아핀 예측과 재구성된 픽셀들 사이의 가중 에러 (또는 왜곡) 를 최소화함으로써 도출될 수 있다. 예를 들어, 아핀 템플릿의 아핀 예측 및 재구성된 픽셀들의 이상치는 도출 동안 상이한 가중치로 제거되거나 승산될 수 있다. 이러한 이상치 제거는 모션 벡터 도출의 안정성을 개선할 수 있다. 하나의 예시적인 예에서, 디코딩 디바이스는 현재 블록의 현재 아핀 템플릿의 아핀 예측 및 재구성된 픽셀들 사이의 왜곡을 최소화함으로써 아핀 모션 벡터를 도출할 수 있다. 도출된 모션 벡터에 기초하여, 디코딩 디바이스는 각각의 픽셀의 왜곡 값을 계산할 수 있다. 왜곡 값에 따라, 디코더는 상이한 가중치를 픽셀에 할당할 수 있고, 그 후 현재 블록의 아핀 템플릿의 아핀 예측 및 재구성된 픽셀들 사이의 가중 왜곡을 최소화함으로써 모션 벡터를 다시 도출할 수 있다.
일부 예들에서, 도출의 안정성을 개선하기 위해 필터링 프로세스 (예를 들어, 저역 통과 필터, 또는 다른 적절한 필터) 가 현재 아핀 템플릿 및/또는 그의 아핀 예측 (참조 아핀 템플릿을 포함) 에 적용될 수도 있다.
일부 예들에서, 이중 예측 또는 다중 가설 예측에 대해, 아핀 모션이 각각의 가설에 대해 별도로 또는 공동으로 도출될 수도 있다. 일부 경우들에서, 아핀 모션을 별도로 도출할 때, 각각의 가설에 대해 독립적인 템플릿이 사용될 수 있다. 예를 들어, 2 개의 가설의 경우, 2 개의 독립적인 템플릿 T0 및 T1 이 사용될 수 있다. 2 개의 템플릿 T0 및 T1 에 기초하여, MV0 및 MV1 이 도출될 수 있다. 일부 경우들에서, 아핀 모션을 공동으로 도출할 때, 템플릿은 이미 도출된 MV 에 기초하여 업데이트될 수도 있다. 예를 들어, 2 개의 가설의 경우, 제 2 MV 를 도출할 때, 템플릿 T1 이 T1’ 로서 업데이트되어, T1' = (2 * T1 - Pred (MV0)) 일 수 이고, 여기서 Pred(MV0) 는 모션 MV0 에 의한 예측을 나타낸다. 반복적인 아핀 모션 도출은 또한 공동 도출에서 허용될 수도 있다.
템플릿 매칭 기반 아핀 모션 도출 모드는 플래그 또는 다른 신택스 아이템을 갖는 독립적인 인터 예측 모드로서 (예를 들어, PPS, SPS, VPS에서, SEI 메시지 등에서) 시그널링될 수 있다. 신택스 아이템은 변수, 플래그, 신택스 엘리먼트, 신택스 구조, 또는 PPS, SPS, VPS, SEI 메시지 등에 포함된 신택스의 다른 적절한 부분을 포함할 수 있다. 일부 경우들에서, 템플릿 매칭 기반 아핀 모션 도출 모드는 FRUC 의 특수 모드로서 시그널링될 수도 있다. 일부 예들에서, 템플릿 매칭 기반 아핀 모션 도출 모드는 현재 블록의 아핀 템플릿이 이용가능한 때에만 시그널링 및/또는 사용될 수 있다. 예를 들어, 일부 경우들에서, L-형상 템플릿 (또는 다른 적절한 형상의 템플릿) 은 상단 및 좌측 재구성된 블록들이 모두 이용가능한 때에만 이용가능한 것으로 간주될 수 있다. 일부 경우들에서, 특수 FRUC 모드로서 시그널링될 때, 하기 표 1 에 예시된 이진화는 모든 FRUC 모드들이 선택을 위해 이용가능할 때 사용될 수도 있다:
이진화
0 FRUC 오프
11 FRUC 양방향 매칭
101 FRUC 템플릿 아핀 (템플릿 매칭 기반 아핀 모션 도출)
100 FRUC 템플릿 매칭
하나의 예시적인 예에서, 상기 표 1 의 (템플릿 매칭 기반 아핀 모션 도출에 관한) 제 3 빈의 컨텍스트는, 상측 또는 좌측 이웃들이 아핀 모드 (AF_MERGE 모드, AF_INTER, 모드, FRUC_TEMPLATE_AFFINE 모드) 에 있지 않은 경우 0, 상측 또는 좌측 이웃들이 아핀 모드에 있는 경우 1, 그리고 상측 및 좌측 이웃들 양자 모두가 아핀 모드에 있는 경우 2 로서 정의될 수도 있다. 여기서 아핀 모드는 정규 아핀 인터 모드, 아핀 병합 모드 및 템플릿 아핀 (템플릿 매칭 기반 아핀 모션 도출) 을 포함하지만 이에 제한되지 않는다.
일부 예들에서, 상술한 기법들을 사용하여 도출된 아핀 모션 (v0 및 v1) 은 종래의 아핀 인터 모드들 (예를 들어, AF_INTER 모드 또는 AF_MERGE 모드) 에 대한 모션 벡터 예측자 (MVP) 로서 사용될 수 있다. 예를 들어, 종래의 아핀 모드들에 대해, 아핀 모션의 적어도 하나의 예측자가 상술한 바와 동일한 방식으로 디코더 측에서 도출될 수 있다. 일부 경우들에서, 4-파라미터 아핀 모델은 블록이 4-파라미터 아핀 모델을 사용하기 위해 시그널링될 때 아핀 모션 예측자를 도출하는데 사용된다. 예를 들어, 아핀 인터 (AF_INTER) 모드에서, 모션 벡터 차이 (MVD) 가 (예를 들어, PPS, SPS, VPS, SEI 메시지 등에서) 디코딩 디바이스로 시그널링될 수 있다. MVD 는 예측자 (예를 들어, 도 9 에서의 서브 블록 (910) 에 대한 예측자로서 사용된 블록들 A, B 또는 C 의 모션 벡터) 와 제어 포인트 모션 벡터 (예를 들어, 서브 블록 (910) 의 모션 벡터) 사이의 차이를 포함한다. 그 후 MVD 는 제어 포인트 모션 벡터들 (v0 및 v1) 을 결정하기 위해 디코딩 디바이스에 의해 모션 벡터 예측자 (MVP) 에 부가될 수 있다. 아핀 템플릿은 MVP 를 생성하는데 사용될 수 있다. 예를 들어, 디코딩 디바이스는 상술한 바와 같이 현재 아핀 템플릿 및 참조 아핀 템플릿을 사용하여 (예를 들어, 최적의 아핀 모션 파라미터들의 세트를 사용하여) a, b, c, d 를 도출할 수 있다. a, b, c, d 모션 파라미터들은 제어 포인트들 (v0 및 v1) 의 모션 벡터를 정의한다. 이들 도출된 모션 벡터들은 서브 블록들 (910 및 912) 에 대한 MVP 로서 사용될 수 있다. 예를 들어, 모션 벡터 (v0) 는 서브 블록 (910) 에 대한 MVP 로서 사용될 수 있고, 모션 벡터 (v1) 는 서브 블록 (912) 에 대한 MVP 로서 사용될 수 있다. MVP들은 대응 MVD 에 부가될 수 있다.
일부 예들에서, 디코더 측에서의 아핀 모션 정보 도출은 재구성된 픽셀들의 블록들에 대해 직접 수행될 수 있다. 일 예에서, 픽처가 재구성된 후 (예를 들어, 인 루프 필터 이후), 픽처는 블록들로 나눠지고, 그 후 상술한 바와 같이 템플릿 매칭 기반 아핀 모션 도출이 각각의 블록에 적용되어 아핀 모션을 도출한다. 그 후 도출된 모션 정보는 모션 벡터 예측을 위해 사용될 수 있다.
일부 예들에서, 복잡도를 감소시키기 위해, 템플릿 아핀 모드가 사용될 때 일부 코딩 툴이 제약될 수 있다. 이러한 제약들은 미리 정의되거나 비트스트림들에서 시그널링될 수도 있다. 하나의 예시적인 예에서, BIO 는 템플릿 매칭 아핀 모션 도출이 블록에 대해 사용될 때 블록에 대해 적용되지 않을 수도 있다. 또 다른 예시적인 예에서, 조명 보상 (illumination compensation; IC) 은 템플릿 매칭 아핀 모션 도출이 블록에 대해 사용될 때 블록에 대해 적용되지 않을 수도 있다.
도 14 는 본 명세서에 기재된 기법들을 사용하여 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트를 도출하기 위한 프로세스 (1400) 의 예를 도시하는 플로우 챠트이다. 블록 (1402) 에서, 프로세스 (1400) 는 디코더에 의해, 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득하는 것을 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 현재 픽처는 현재 디코딩되고 있는 픽처를 포함한다. 일부 예들에서, 참조 픽처는 참조 픽처 리스트 또는 인덱스 (예를 들어, 참조 픽처 리스트 0 (RefPicList0)) 를 사용하여 식별될 수 있다. 일부 경우들에서, 다중 참조 픽처들이 현재 픽처에 대해 액세스될 수 있으며, 이 경우 프로세스 (1400) 는 하나보다 많은 참조 픽처를 사용하여 수행될 수 있다. 예를 들어, 참조 픽처 리스트 0 (RefPicList0) 및 참조 픽처 리스트 1 (RefPicList1) 은 2 개의 참조 픽처들이 현재 픽처와 연관됨을 표시할 수 있다.
블록 (1404) 에서, 프로세스 (1400) 는 디코더에 의해, 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것을 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다. 템플릿 기반 접근법을 사용하여, 아핀 파라미터들의 세트는 비트스트림에서 시그널링되는 어떠한 아핀 모션도 사용하지 않으면서 디코더 측 프로세스를 사용하여 디코더에 의해 결정될 수 있다. 예를 들어, 아핀 모션 파라미터들의 세트를 결정하기 위해 인코딩된 비디오 비트스트림으로부터 아핀 모션 파라미터들은 디코딩되지 않는다. 일부 경우들에서, 아핀 모션 파라미터들은 비트스트림에 포함되지 않는다.
일부 경우들에서, 프로세스 (1400) 는 디코더에 의해 초기 아핀 모션 파라미터들의 세트를 획득함으로써 아핀 모션 파라미터들의 세트를 결정할 수 있다. 초기 아핀 모션 파라미터들의 세트는 임의의 적절한 기법을 사용하여 결정될 수 있다. 하나의 예시적인 예에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정될 수 있다. 일부 경우들에서, 병진 모션 벡터는 프레임-레이트-업 컨버전 (FRUC) 템플릿 매칭 모드 또는 다른 적절한 기법과 같은 임의의 적절한 기법을 사용하여 결정될 수 있다. 또 다른 예시적인 예에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록의 이웃 블록으로부터의 아핀 모션 벡터에 기초하여 결정될 수 있다. 예를 들어, 이웃 블록의 아핀 모션 벡터는 현재 블록의 아핀 모션 도출을 위한 초기 모션 벡터 시드로서 사용될 수 있다. 하나의 예시적인 예에서, 상술한 아핀 병합 (AF_MERGE) 모드는 초기 모션 벡터로서 사용될 수 있는 아핀 모션 벡터를 결정하는데 사용될 수도 있다.
프로세스 (1400) 는 디코더에 의해, 초기의 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 추가로 도출함으로써 아핀 모션 파라미터들의 세트를 결정할 수 있다. 현재 블록의 현재 아핀 템플릿은 현재 블록에 이웃하는 재구성된 픽셀들을 포함한다. 현재 아핀 템플릿의 일 예가 도 11a, 도 11b 및 도 11c 에 나타나 있다. 프로세스 (1400) 는 그 후, 디코더에 의해, 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대해 도출된 하나 이상의 아핀 모션 벡터들을 사용하여 참조 픽처의 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정할 수 있다. 프로세스 (1400) 는 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 에러를 더욱 최소화할 수 있다. 프로세스 (1400) 는 그 후 디코더에 의해, 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 최소화된 에러에 기초하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있다. 아핀 모션 파라미터들의 세트를 결정하기 위한 이러한 프로세스는 예를 들어, 식 (3) 내지 (6) 을 사용하여 수행될 수 있다.
일부 예들에서, 프로세스 (1400) 는 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들 및 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들을 사용하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정함으로써 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있다. 예를 들어, 상술한 바와 같이, 식 (4) 내지 (6) 이 반복적으로 수행되어, 다중의 아핀 모션 파라미터들의 세트를 결정할 수 있다. 프로세스 (1400) 는 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정할 수 있다. 일부 예들에서, 품질 메트릭은 절대 차의 합 (SAD) 를 포함한다. 프로세스 (1400) 는 그 후 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해, 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 복수의 아핀 모션 파라미터들의 세트들로부터 아핀 모션 파라미터들의 세트를 선택할 수 있다. 도 11a, 도 11b 및 도 11c 에 나타낸 바와 같이, 2 개의 제어 포인트들이 현재 블록에 대해 정의될 수 있다.
프로세스 (1400) 는 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해 결정된 모션 파라미터들의 세트에 기초하여 현재 블록의 하나 이상의 샘플에 대한 모션 벡터들을 결정할 수 있다. 예를 들어, 프로세스 (1400) 는 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정할 수 있다. 현재 블록의 서브 블록들의 예가 도 11c 에 나타나 있다. 일부 예들에서, 서브 블록들에 대한 모션 벡터들을 결정하기 보다, 프로세스 (1400) 는 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정할 수 있다.
일부 예들에서, 현재 블록의 현재 아핀 템플릿은 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함한다. 일부 경우들에서, 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함한다. 예를 들어, 도 11a 에 나타낸 예는 상단 이웃 블록 (현재 블록의 상단에 대해 이웃하는 블록) 으로부터의 샘플들 및 좌측 이웃 블록 (현재 블록의 좌측에 대해 이웃하는 블록) 으로부터의 샘플들을 포함하는 현재 아핀 템플릿 (1104) 을 포함한다. 일부 예들에서, 현재 아핀 템플릿은 L-형상 블록을 포함한다. L-형상 블록은 (도 11a 에 나타낸 바와 같이) 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함할 수 있다. 다른 예들에서, 현재 아핀 템플릿은 우측 이웃 블록 및/또는 우측 이웃 블록으로부터의 샘플들을 포함할 수 있다.
도 15 는 본 명세서에 설명된 기법들을 사용하여 비디오 데이터를 인코딩하기 위한 프로세스 (1500) 의 예를 도시하는 플로우챠트이다. 블록 (1502) 에서, 프로세스 (1500) 는 비디오 데이터를 획득하는 것을 포함한다. 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함한다. 현재 픽처는 현재 인코딩되고 (또는 인코더의 역 루프에서 디코딩되고) 있는 픽처를 포함한다. 일부 예들에서, 참조 픽처는 참조 픽처 리스트 또는 인덱스 (예를 들어, 참조 픽처 리스트 0 (RefPicList0)) 를 사용하여 식별될 수 있다. 일부 경우들에서, 다중 참조 픽처들이 현재 픽처를 코딩하기 위해 사용될 수 있으며, 이 경우 프로세스 (1500) 는 하나보다 많은 참조 픽처를 사용하여 수행될 수 있다. 예를 들어, 참조 픽처 리스트 0 (RefPicList0) 및 참조 픽처 리스트 1 (RefPicList1) 은 2 개의 참조 픽처들이 현재 픽처와 연관됨을 표시할 수 있다.
블록 (1504) 에서, 프로세스 (1500) 는 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것을 포함한다. 아핀 모션 파라미터들의 세트는 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용된다. 아핀 모션 파라미터들의 세트는 현재 블록의 현재 아핀 템플릿 및 참조 픽처의 참조 아핀 템플릿을 사용하여 결정된다.
블록 (1506) 에서, 프로세스 (1500) 는 인코딩된 비디오 비트스트림을 생성하는 것을 포함한다. 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함한다. 신택스 아이템은 신택스 엘리먼트, 신택스 구조, 변수, 플래그 등을 포함할 수 있고, PPS, SPS, VPS, SEI 메시지, 또는 인코딩된 비디오 비트스트림의 다른 부분에 포함될 수 있다. 인코딩된 비디오 비트스트림은 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는다. 예를 들어, 템플릿 기반 접근법을 사용하여, 아핀 파라미터들의 세트는 인코딩된 비디오 비트스트림에서 시그널링되는 어떠한 아핀 모션도 사용하지 않으면서 디코더 측 프로세스를 사용하여 디코더에 의해 결정될 수 있다. 예를 들어, 아핀 모션 파라미터들의 세트를 결정하기 위해 인코딩된 비디오 비트스트림으로부터 아핀 모션 파라미터들은 디코딩되지 않는다.
일부 경우들에서, 프로세스 (1500) 는 초기 아핀 모션 파라미터들의 세트를 획득함으로써 아핀 모션 파라미터들의 세트를 결정할 수 있다. 초기 아핀 모션 파라미터들의 세트는 임의의 적절한 기법을 사용하여 결정될 수 있다. 하나의 예시적인 예에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정될 수 있다. 일부 경우들에서, 병진 모션 벡터는 프레임-레이트-업 컨버전 (FRUC) 템플릿 매칭 모드 또는 다른 적절한 기법과 같은 임의의 적절한 기법을 사용하여 결정될 수 있다. 또 다른 예시적인 예에서, 초기의 아핀 모션 파라미터들의 세트는 현재 블록의 이웃 블록으로부터의 아핀 모션 벡터에 기초하여 결정될 수 있다. 예를 들어, 이웃 블록의 아핀 모션 벡터는 현재 블록의 아핀 모션 도출을 위한 초기 모션 벡터 시드로서 사용될 수 있다. 하나의 예시적인 예에서, 상술한 아핀 병합 (AF_MERGE) 모드는 초기 모션 벡터로서 사용될 수 있는 아핀 모션 벡터를 결정하는데 사용될 수도 있다.
프로세스 (1500) 는 초기 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 현재 아핀 템플릿에서 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 추가로 도출함으로써 아핀 모션 파라미터들의 세트를 결정할 수 있다. 현재 블록의 현재 아핀 템플릿은 현재 블록에 이웃하는 재구성된 픽셀들을 포함한다. 현재 아핀 템플릿의 일 예가 도 11a, 도 11b 및 도 11c 에 나타나 있다. 프로세스 (1500) 는 그 후 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대해 도출된 하나 이상의 아핀 모션 벡터들을 사용하여 참조 픽처의 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정할 수 있다. 프로세스 (1500) 는 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 에러를 더욱 최소화할 수 있다. 프로세스 (1500) 는 그 후 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들과 참조 아핀 템플릿에서의 하나 이상의 픽셀들 사이의 최소화된 에러에 기초하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있다. 아핀 모션 파라미터들의 세트를 결정하기 위한 이러한 프로세스는 예를 들어, 식 (3) 내지 (6) 을 사용하여 수행될 수 있다.
일부 예들에서, 프로세스 (1500) 는 적어도 현재 아핀 템플릿에서의 하나 이상의 픽셀들 및 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 참조 아핀 템플릿에서의 하나 이상의 픽셀들을 사용하여 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정함으로써 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 아핀 모션 파라미터들의 세트를 결정할 수 있다. 예를 들어, 상술한 바와 같이, 식 (4) 내지 (6) 이 반복적으로 수행되어, 다중의 아핀 모션 파라미터들의 세트를 결정할 수 있다. 프로세스 (1500) 는 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정할 수 있다. 일부 예들에서, 품질 메트릭은 절대 차의 합 (SAD) 를 포함한다. 프로세스 (1500) 는 그 후 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해, 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 복수의 아핀 모션 파라미터들의 세트들로부터 아핀 모션 파라미터들의 세트를 선택할 수 있다. 도 11a, 도 11b 및 도 11c 에 나타낸 바와 같이, 2 개의 제어 포인트들이 현재 블록에 대해 정의될 수 있다.
프로세스 (1500) 는 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대해 결정된 모션 파라미터들의 세트에 기초하여 현재 블록의 하나 이상의 샘플에 대한 모션 벡터들을 결정할 수 있다. 예를 들어, 프로세스 (1500) 는 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정할 수 있다. 현재 블록의 서브 블록들의 예가 도 11c 에 나타나 있다. 일부 예들에서, 서브 블록들에 대한 모션 벡터들을 결정하기 보다, 프로세스 (1500) 는 현재 블록에 대해 결정된 아핀 모션 파라미터들의 세트를 사용하여 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정할 수 있다.
일부 예들에서, 현재 블록의 현재 아핀 템플릿은 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함한다. 일부 양태들에서, 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함한다. 예를 들어, 도 11a 에 나타낸 예는 상단 이웃 블록 (현재 블록의 상단에 대해 이웃하는 블록) 으로부터의 샘플들 및 좌측 이웃 블록 (현재 블록의 좌측에 대해 이웃하는 블록) 으로부터의 샘플들을 포함하는 현재 아핀 템플릿 (1104) 을 포함한다. 일부 예들에서, 현재 아핀 템플릿은 L-형상 블록을 포함한다. L-형상 블록은 (도 11a 에 나타낸 바와 같이) 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함할 수 있다. 다른 예들에서, 현재 아핀 템플릿은 우측 이웃 블록 및/또는 우측 이웃 블록으로부터의 샘플들을 포함할 수 있다.
일부 예들에서, 프로세스 (1500) 는 인코딩된 비디오 비트스트림을 저장할 수 있다. 일부 경우들에서, 프로세스 (1500) 를 수행하는 인코더의 프로세서 또는 인코더를 포함하는 장치 (예를 들어, 모바일 디바이스 또는 다른 적절한 디바이스) 는 인코딩된 비디오 비트스트림을 인코더의 메모리 또는 인코더를 포함하는 장치의 메모리에 저장할 수 있다. 일부 예들에서, 프로세스 (1500) 는 인코딩된 비디오 비트스트림을 송신할 수 있다.
일부 예들에서, 프로세스들 (1400 및 1500) 은 인코딩 디바이스 (104), 디코딩 디바이스 (112), 또는 임의의 다른 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수도 있다. 예를 들어, 프로세스 (1400) 는 디코딩 디바이스 (112) 에 의해 수행될 수 있고, 프로세스 (1500) 는 인코딩 디바이스 (104) 에 의해 수행될 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 프로세스들 (1400 및 1500) 의 단계들을 수행하도록 구성되는 디바이스의 프로세서, 마이크로프로세서, 마이크로컴퓨터, 또는 다른 컴포넌트를 포함할 수도 있다. 일부 예들에서, 컴퓨팅 디바이스 또는 장치는 비디오 프레임들을 포함하는 비디오 데이터 (예를 들어, 비디오 시퀀스) 를 캡처하도록 구성된 카메라를 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스는 비디오 코덱을 포함할 수도 또는 포함하지 않을 수도 있는 카메라 디바이스를 포함할 수도 있다. 또 다른 예로서, 컴퓨팅 디바이스는 카메라를 갖춘 모바일 디바이스 (예를 들어, 디지털 카메라, IP 카메라 등과 같은 카메라 디바이스, 카메라를 포함하는 모바일 폰 또는 태블릿 또는 카메라를 갖춘 다른 타입의 디바이스) 를 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스는 이미지들을 디스플레이하기 위한 디스플레이를 포함할 수도 있다. 일부 예들에서, 비디오 데이터를 캡처하는 카메라 또는 다른 캡처 디바이스는 컴퓨팅 디바이스로부터 분리되어 있으며, 이 경우 컴퓨팅 디바이스는 캡처된 비디오 데이터를 수신한다. 컴퓨팅 디바이스는 비디오 데이터를 통신하도록 구성된 네트워크 인터페이스, 트랜시버, 및/또는 송신기를 더 포함할 수도 있다. 네트워크 인터페이스, 트랜시버, 및/또는 송신기는 인터넷 프로토콜 (IP) 기반 데이터 또는 다른 네트워크 데이터를 통신하도록 구성될 수도 있다.
프로세스들 (1400 및 1500) 은 논리 플로우 다이어그램으로서 예시되고, 그 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들의 컨텍스트에서, 그 동작들은, 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행하는 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장된 컴퓨터 실행가능 명령들을 표현한다. 일반적으로, 컴퓨터 실행가능 명령들은 특정의 기능들을 수행하거나 또는 특정의 데이터 타입들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되도록 의도되지 않으며, 임의의 수의 설명된 동작들은 프로세스들을 구현하기 위해 임의의 순서로 및/또는 병렬로 결합될 수 있다.
추가적으로, 프로세스들 (1400 및 1500) 은 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수도 있고, 집합적으로 하나 이상의 프로세서 상에서 실행하는 코드 (예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들) 로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수도 있다. 상기 언급된 바와 같이, 코드는 컴퓨터 판독가능 또는 머신 판독가능 저장 매체 상에, 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 저장될 수도 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체는 비일시적일 수도 있다.
본 명세서에서 논의된 코딩 기법들은 일 예의 비디오 인코딩 및 디코딩 시스템 (예를 들어, 시스템 (100)) 에서 구현될 수도 있다. 일부 예들에서, 시스템은, 목적지 디바이스에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스를 포함한다. 특히, 소스 디바이스는 비디오 데이터를, 컴퓨터 판독가능 매체를 통해 목적지 디바이스에 제공한다. 소스 디바이스 및 목적지 디바이스는, 데스크톱 컴퓨터들, 노트북 (즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 전화기 핸드셋 이를 테면 소위 "스마트" 폰들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한, 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 및 목적지 디바이스는 무선 통신을 위해 장비될 수도 있다.
목적지 디바이스는 디코딩될 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체를 통해 수신할 수도 있다. 컴퓨터 판독가능 매체는 인코딩된 비디오 데이터를 소스 디바이스로부터 목적지 디바이스로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수도 있다. 일 예에 있어서, 컴퓨터 판독가능 매체는, 소스 디바이스로 하여금 인코딩된 비디오 데이터를 직접 목적지 디바이스로 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수도 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스로 송신될 수도 있다. 통신 매체는 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수도 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 부분을 형성할 수도 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스로부터 목적지 디바이스로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
일부 예들에서, 인코딩된 데이터는 출력 인터페이스로부터 저장 디바이스로 출력될 수도 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 디바이스로부터 액세스될 수도 있다. 저장 디바이스는, 하드 드라이브, 블루레이 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체 등의 다양한 분산형 또는 로컬적으로 액세스되는 데이터 저장 매체 중 어느 것을 포함할 수도 있다. 추가의 예에서, 저장 디바이스는, 소스 디바이스에 의해 생성된 인코딩된 비디오를 저장할 수도 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수도 있다. 목적지 디바이스는 저장 디바이스로부터의 저장된 비디오 데이터에 스트리밍 또는 다운로드를 통해 액세스할 수도 있다. 파일 서버는, 인코딩된 비디오 데이터를 저장하고 그리고 그 인코딩된 비디오 데이터를 목적지 디바이스로 송신하는 것이 가능한 임의의 타입의 서버일 수도 있다. 예시적인 파일 서버들은 웹 서버 (예를 들어, 웹 사이트용), FTP 서버, 네트워크 접속형 저장 (NAS) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스는 인코딩된 비디오 데이터에, 인터넷 커넥션을 포함한 임의의 표준 데이터 커넥션을 통해 액세스할 수도 있다. 이는 파일 서버 상에 저장되는 인코딩된 비디오 데이터에 액세스하기에 적합한 무선 채널 (예를 들어, Wi-Fi 커넥션), 유선 커넥션 (예를 들어, DSL, 케이블 모뎀 등), 또는 이들 양자의 조합을 포함할 수도 있다. 인코딩된 비디오 데이터의 저장 디바이스로부터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수도 있다.
본 개시의 기법들은 무선 애플리케이션들 또는 세팅들에 반드시 제한되는 것은 아니다. 기법들은, 공중 경유 (over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, HTTP 상으로의 동적 적응적 스트리밍 (DASH) 과 같은 인터넷 스트리밍 비디오 송신들, 데이터 저장 매체 상으로 인코딩되는 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩, 또는 다른 애플리케이션들과 같은 다양한 멀티미디어 애플리케이션들 중 임의의 것을 지원하여 비디오 코딩에 적용될 수도 있다. 일부 예들에서, 시스템은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 및/또는 비디오 텔레포니와 같은 애플리케이션들을 지원하기 위해 일방 또는 양방 비디오 송신을 지원하도록 구성될 수도 있다.
하나의 예에서, 소스 디바이스는 비디오 소스, 비디오 인코더, 및 출력 인터페이스를 포함한다. 목적지 디바이스는 입력 인터페이스, 비디오 디코더, 및 디스플레이 디바이스를 포함할 수도 있다. 소스 디바이스의 비디오 인코더는 본 명세서에서 개시된 기법들을 적용하도록 구성될 수도 있다. 다른 예들에서, 소스 디바이스와 목적지 디바이스가 다른 컴포넌트들 또는 배열체들을 포함할 수도 있다. 예를 들어, 소스 디바이스는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수도 있다. 마찬가지로, 목적지 디바이스는 통합된 디스플레이 디바이스를 포함하기 보다는, 외부 디스플레이 디바이스와 인터페이스할 수도 있다.
상기 예의 시스템은 하나의 예일 뿐이다. 병렬로 비디오 데이터를 프로세싱하기 위한 기법들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로 본 개시의 기법들은 비디오 인코딩 디바이스에 의해 수행되지만, 그 기법들은 또한, "코덱 (CODEC)" 으로 통상적으로 지칭되는, 비디오 인코더/디코더에 의해 수행될 수도 있다. 더욱이, 본 개시의 기법들은 또한 비디오 프리프로세서에 의해 수행될 수도 있다. 소스 디바이스 및 목적지 디바이스는, 소스 디바이스가 목적지 디바이스로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예들에서, 소스 및 목적지 디바이스들은, 디바이스들의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 이로써, 예시의 시스템들은 예를 들면, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 또는 비디오 텔레포니를 위해, 비디오 디바이스들간의 일방 또는 양방 비디오 송신을 지원할 수도 있다.
비디오 소스는 비디오 캡처 디바이스, 이를 테면 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수도 있다. 추가적인 대안으로서, 비디오 소스는 컴퓨터 그래픽 기반 데이터를 소스 비디오로서, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합으로서 생성할 수도 있다. 일부 경우들에 있어서, 비디오 소스가 비디오 카메라이면, 소스 디바이스 및 목적지 디바이스는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 하지만, 상기 언급된 바와 같이, 본 개시에서 설명된 기술들은 일반적으로 비디오 코딩에 적용가능할 수도 있으며, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에 있어서, 캡처되거나 사전-캡처되거나 또는 컴퓨터 생성된 비디오는 비디오 인코더에 의해 인코딩될 수도 있다. 그 후, 인코딩된 비디오 정보는 출력 인터페이스에 의해 컴퓨터 판독가능 매체상으로 출력될 수도 있다.
상술된 바와 같이, 컴퓨터 판독가능 매체는 무선 브로드캐스트 또는 유선 네트워크 송신과 같은 일시적인 매체들, 또는 하드 디스크, 플래시 드라이브, 컴팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터 판독가능 매체들과 같은 저장 매체들 (즉, 비일시적인 저장 매체들) 을 포함할 수도 있다. 일부 예들에 있어서, 네트워크 서버 (도시 안됨) 는 인코딩된 비디오 데이터를 소스 디바이스로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스에 제공할 수도 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수도 있다. 따라서, 컴퓨터 판독가능 매체는, 다양한 예들에 있어서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하도록 이해될 수도 있다.
목적지 디바이스의 입력 인터페이스는 컴퓨터 판독가능 매체로부터 정보를 수신한다. 컴퓨터 판독가능 매체의 정보는 비디오 인코더에 의해 정의되고 또한 비디오 디코더에 의해 이용되는 신택스 정보를 포함할 수도 있으며, 이 신택스 정보는 블록들 및 다른 코딩된 유닛들, 예를 들어, 픽처들의 그룹 (GOP) 의 특성 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함한다. 디스플레이 디바이스는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수도 있다. 본 발명의 다양한 실시형태들이 설명되었다.
인코딩 디바이스 (104) 및 디코딩 디바이스 (112) 의 특정 상세들이 도 16 및 도 17 에 각각 나타나 있다. 도 16 은 본 개시에 설명된 기법들 중 하나 이상을 구현할 수도 있는 예의 인코딩 디바이스 (104) 를 예시하는 블록 다이어그램이다. 인코딩 디바이스 (104) 는, 예를 들어, 본 명세서에서 설명되는 신택스 구조들 (예를 들어, VPS, SPS, PPS, 또는 다른 신택스 엘리먼트들의 신택스 구조들) 을 생성할 수도 있다. 인코딩 디바이스 (104) 는 비디오 슬라이스들 내의 비디오 블록들의 인트라 예측 및 인터 예측 코딩을 수행할 수도 있다. 이전에 설명된 바와 같이, 인트라 코딩은 주어진 비디오 프레임 또는 픽처 내에서 공간적 리던던시를 감소시키거나 또는 제거하기 위해 공간적 예측에 적어도 부분적으로 의존한다. 인터 코딩은, 비디오 시퀀스의 인접한 또는 주위의 프레임들 내의 시간적 리던던시를 감소시키거나 또는 제거하기 위해 시간적 예측에 적어도 부분적으로 의존한다. 인트라 모드 (I 모드) 는 여러 공간 기반 압축 모드들 중 어느 것을 나타낼 수도 있다. 인터 모드들, 예컨대 단방향 예측 (P 모드) 또는 이중 예측 (B 모드) 은, 여러 시간 기반 압축 모드들 중 어느 것을 지칭할 수도 있다.
인코딩 디바이스 (104) 는, 파티셔닝 유닛 (35), 예측 프로세싱 유닛 (41), 필터 유닛 (63), 픽처 메모리 (64), 합산기 (50), 변환 프로세싱 유닛 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 예측 프로세싱 유닛 (41) 은 모션 추정 유닛 (42), 모션 보상 유닛 (44) 및 인트라-예측 프로세싱 유닛 (46) 을 포함한다. 비디오 블록 재구성을 위해, 인코딩 디바이스 (104) 는 역양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 또한 포함한다. 필터 유닛 (63) 은 디블록킹 필터, 적응적 루프 필터 (adaptive loop filter, ALF), 및 샘플 적응 오프셋 (sample adaptive offset, SAO) 필터와 같은 하나 이상의 루프 필터들을 표현하도록 의도된다. 필터 유닛 (63) 이 인루프 필터인 것으로서 도 16 에 나타나 있지만, 다른 구성들에서, 필터 유닛 (63) 은 포스트 루프 필터로서 구현될 수도 있다. 포스트 프로세싱 디바이스 (57) 가 인코딩 디바이스 (104) 에 의해 생성되는 인코딩된 비디오 데이터에 대해 추가적인 프로세싱을 수행할 수도 있다. 본 개시물의 기법들은 일부 경우들에서 인코딩 디바이스 (104) 에 의해 구현될 수도 있다. 그러나, 다른 경우들에서, 본 개시물의 기법들 중 하나 이상은 포스트 프로세싱 디바이스 (57) 에 의해 구현될 수도 있다.
도 16 에 나타낸 바와 같이, 인코딩 디바이스 (104) 는 비디오 데이터를 수신하고, 파티셔닝 유닛 (35) 은 데이터를 비디오 블록들로 파티셔닝한다. 파티셔닝은 또한, 예를 들어, LCU들 및 CU들의 쿼드트리 구조에 따른, 비디오 블록 파티셔닝은 물론, 슬라이스들, 슬라이스 세그먼트들, 타일들 또는 다른 더 큰 유닛들로의 파티셔닝을 포함할 수도 있다. 인코딩 디바이스 (104) 는 일반적으로, 인코딩될 비디오 슬라이스 내의 비디오 블록들을 인코딩하는 컴포넌트들을 예시한다. 슬라이스는 다중의 비디오 블록들로 (및 가능하게는 타일들로서 지칭되는 비디오 블록들의 세트들로) 분할될 수도 있다. 예측 프로세싱 유닛 (41) 은 에러 결과들 (예를 들어, 코딩 레이트 및 왜곡의 레벨 등) 에 기초하여 현재의 비디오 블록에 대해 복수의 인트라 예측 코딩 모드들 중 하나 또는 복수의 인터 예측 코딩 모드들 중 하나와 같은, 복수의 가능한 코딩 모드들 중 하나를 선택할 수도 있다. 예측 프로세싱 유닛 (41) 은 결과적인 인트라- 또는 인터-코딩된 블록을 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 참조 픽처로서의 사용을 위한 인코딩된 블록을 재구성할 수도 있다.
예측 프로세싱 유닛 (41) 내의 인트라 예측 프로세싱 유닛 (46) 은 공간 압축을 제공하기 위해, 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃 블록들에 관해 현재 비디오 블록의 인트라-예측 코딩을 수행할 수도 있다. 예측 프로세싱 유닛 (41) 내의 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 시간 압축을 제공하기 위해 하나 이상의 참조 픽처들에서의 하나 이상의 예측 블록들에 관해 현재 비디오 블록의 인터-예측성 코딩을 수행한다.
모션 추정 유닛 (42) 은 비디오 시퀀스에 대한 미리결정된 패턴에 따라 비디오 슬라이스에 대한 인터-예측 모드를 결정하도록 구성될 수도 있다. 미리결정된 패턴은, P 슬라이스들, B 슬라이스들 또는 GPB 슬라이스들로서 시퀀스에서 비디오 슬라이스들을 지정할 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만, 개념적인 목적들을 위하여 별도로 예시되어 있다. 모션 추정 유닛 (42) 에 의해 수행된 모션 추정은 비디오 블록들을 위한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 참조 픽처 내에서의 예측성 블록에 대한 현재 비디오 프레임 또는 픽처 내에서의 비디오 블록의 예측 유닛 (PU) 의 변위를 표시할 수도 있다.
예측성 블록은 픽셀 차이의 관점에서 코딩될 비디오 블록의 PU 와 밀접하게 매칭하는 것으로 발견된 블록이며, 이 차이는 절대 차의 합 (SAD), 제곱 차의 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 일부 예들에 있어서, 인코딩 디바이스 (104) 는 픽처 메모리 (64) 에 저장된 참조 픽처들의 서브-정수 픽셀 포지션들에 대한 값들을 계산할 수도 있다. 예를 들어, 인코딩 디바이스 (104) 는 참조 픽처의 1/4 픽셀 포지션들, 1/8 픽셀 포지션들, 또는 다른 분수의 픽셀 포지션들의 값들을 보간할 수도 있다. 따라서, 모션 추정 유닛 (42) 은 완전한 픽셀 (full pixel) 포지션들 및 분수적 (fractional) 픽셀 포지션들에 대한 모션 검색을 수행하고 분수적 픽셀 정밀도를 갖는 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 인터-코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를, 그 PU 의 포지션을 참조 픽처의 예측성 블록의 포지션과 비교함으로써 계산한다. 참조 픽처는 제 1 참조 픽처 리스트 (List 0) 또는 제 2 참조 픽처 리스트 (List 1) 로부터 선택될 수도 있고, 이들의 각각은 픽처 메모리 (64) 내에 저장된 하나 이상의 참조 픽처들을 식별한다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 으로 전송한다.
모션 보상 유닛 (44) 에 의해 수행된 모션 보상은, 모션 추정에 의해, 가능하다면 서브픽셀 정밀도에 대한 보간들을 수행하는 것에 의해 결정된 모션 벡터에 기초하여 예측성 블록의 페치 또는 생성을 포함할 수도 있다. 현재 비디오 블록의 PU를 위한 모션 벡터의 수신시에, 모션 보상 유닛 (44) 은, 모션 벡터가 참조 픽처 리스트에서 포인팅하는 예측성 블록을 위치시킬 수도 있다. 인코딩 디바이스 (104) 는, 코딩되고 있는 현재 비디오 블록의 픽셀 값들로부터 예측성 블록의 픽셀 값들을 감산하여, 픽셀 차이 값들을 형성함으로써, 잔차 비디오 블록을 형성한다. 픽셀 차이 값들은, 블록을 위한 잔차 데이터를 형성하고, 루마 및 크로마 차이 컴포넌트들 양자 모두를 포함할 수도 있다. 합산기 (50) 는 이 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 모션 보상 유닛 (44) 은 또한, 비디오 슬라이스의 비디오 블록들을 디코딩함에 있어서 디코딩 디바이스 (112) 에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스와 연관된 신택스 엘리먼트들을 생성할 수도 있다.
인트라-예측 프로세싱 유닛 (46) 은 현재 블록을, 상기 설명된 바와 같은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 수행된 인터-예측에 대한 대안으로서 인트라-예측할 수도 있다. 특히, 인트라-예측 프로세싱 유닛 (46) 은 현재 블록을 인코딩하는데 이용하기 위한 인트라-예측 모드를 결정할 수도 있다. 일부 예들에서, 인트라 예측 프로세싱 유닛 (46) 은 예를 들어 별도의 인코딩 패스들 동안에 다양한 인트라-예측 모드들을 이용하여 현재 블록을 인코딩할 수도 있으며, 인트라 예측 프로세싱 유닛 (46) 은 테스팅된 모드들로부터의 이용을 위해 적절한 인트라-예측 모드를 선택할 수도 있다. 예를 들어, 인트라 예측 프로세싱 유닛 (46) 은 다양한 테스트된 인트라 예측 모드들을 위해 레이트 왜곡 분석을 이용하여 레이트 왜곡 값들을 산출하고, 테스트된 모드들 중에서 최상의 레이트 왜곡 특성들을 갖는 인트라 예측 모드를 선택할 수도 있다. 레이트 왜곡 분석은 일반적으로, 인코딩된 블록과, 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 인코딩되지 않은 블록 사이의 왜곡 (또는 에러) 의 양 뿐만 아니라 인코딩된 블록을 생성하는데 이용된 비트 레이트 (즉, 비트들의 수) 를 결정한다. 인트라 예측 프로세싱 유닛 (46) 은 그 왜곡들로부터 비율 (ratio) 및 여러 인코딩된 블록들을 위한 레이트들을 산출하여 어느 인트라 예측 모드가 블록을 위한 최상의 레이트 왜곡 값을 나타내는지를 결정할 수도 있다.
임의의 경우에서, 블록에 대한 인트라-예측 모드를 선택한 이후, 인트라-예측 프로세싱 유닛 (46) 은 블록에 대한 선택된 인트라-예측 모드를 표시하는 정보를 엔트로피 인코딩 유닛 (56) 에 제공할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 선택된 인트라-예측 모드를 표시한 정보를 인코딩할 수도 있다. 인코딩 디바이스 (104) 는, 각 컨텍스트에 사용할 가장 가능성있는 인트라-예측 모드, 인트라-예측 모드 인덱스 테이블 및 수정된 인트라-예측 모드 인덱스 테이블의 표시뿐만 아니라 다양한 블록에 대한 인코딩 컨텍스트의 정의들을 송신된 비트스트림 구성 데이터에서 포함할 수도 있다. 비트스트림 구성 데이터는 복수의 인트라 예측 모드 인덱스 테이블 및 복수의 수정된 인트라 예측 모드 인덱스 테이블 (코드워드 매핑 테이블이라고도 함) 을 포함할 수도 있다.
예측 프로세싱 유닛 (41) 이 인터 예측 또는 인트라 예측 중 어느 하나를 통해 현재 비디오 블록에 대한 예측성 블록을 생성한 후, 인코딩 디바이스 (104) 는 현재 비디오 블록으로부터 예측성 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서 잔차 비디오 데이터는 하나 이상의 TU 들에 포함될 수도 있고 변환 프로세싱 유닛 (52) 에 적용될 수도 있다. 변환 프로세싱 유닛 (52) 은 변환, 이를 테면 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수들로 변환한다. 변환 프로세싱 유닛 (52) 은 잔차 비디오 데이터를 픽셀 도메인에서 주파수 도메인과 같은 변환 도메인으로 변환할 수도 있다.
변환 프로세싱 유닛 (52) 은 양자화 유닛 (54) 에 결과의 변환 계수들을 전송할 수도 있다. 양자화 유닛 (54) 은 변환 계수들을 양자화하여 비트레이트를 더 감소시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수도 있다. 양자화도 (degree of quantization) 는 양자화 파라미터를 조정함으로써 수정될 수도 있다. 그 후 일부 예들에서, 양자화 유닛 (54) 은 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수도 있다. 대안적으로, 엔트로피 인코딩 유닛 (56) 이 스캔을 수행할 수도 있다.
양자화 이후, 엔트로피 인코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 컨텍스트-적응 가변 길이 코딩 (context adaptive variable length coding; CAVLC), 컨텍스트 적응 2 진 산술 코딩 (CABAC), 신택스-기반 컨텍스트-적응 2 진 산술 코딩 (syntax-based context-adaptive binary arithmetic coding; SBAC), 확률 간격 파티셔닝 엔트로피 (probability interval partitioning entropy; PIPE) 코딩 또는 또 다른 엔트로피 인코딩 기법을 수행할 수도 있다. 엔트로피 인코딩 유닛 (56) 에 의한 엔트로피 인코딩 다음에, 인코딩된 비트스트림은, 디코딩 디바이스 (112) 로 송신되거나 또는 디코딩 디바이스 (112) 에 의한 나중의 송신 또는 취출을 위해 아카이브될 수도 있다. 엔트로피 인코딩된 유닛 (56) 은 또한, 모션 벡터들 그리고 코딩되고 있는 현재 비디오 슬라이스를 위한 다른 신택스 엘리먼트들을 엔트로피 인코딩할 수도 있다.
역 양자화 유닛 (58) 및 역 변환 프로세싱 유닛 (60) 은 역 양자화 및 역 변환을 각각 적용하여, 참조 픽처의 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔차 블록을 재구성한다. 모션 보상 유닛 (44) 은, 참조 픽처 리스트 내 하나의 참조 픽처의 예측성 블록에 잔차 블록을 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한, 하나 이상의 보간 필터들을 재구성된 잔차 블록에 적용하여, 모션 추정에서의 사용을 위한 서브-정수 픽셀 값들을 계산할 수도 있다. 합산기 (62) 는 재구성된 잔차 블록을, 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 부가하여, 픽처 메모리 (64) 로의 저장을 위한 참조 블록을 생성한다. 참조 블록은, 후속 비디오 프레임 또는 픽처에서의 블록을 인터-예측하기 위해 참조 블록으로서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 사용될 수도 있다.
인코딩 디바이스 (104) 는 본 명세서에 개재된 기법들 중 임의의 것을 수행할 수도 있다. 본 개시의 기법들은 일반적으로 인코딩 디바이스 (104) 에 관하여 설명되었지만, 위에 언급된 바와 같이, 본 개시의 기법들 중 일부는 포스트 프로세싱 디바이스 (57) 에 의해 또한 구현될 수도 있다.
도 16 의 인코딩 디바이스 (104) 는 본 명세서에 설명된 템플릿 매칭 기반 아핀 모션 도출을 수행하도록 구성된 비디오 디코더의 예를 나타낸다. 인코딩 디바이스 (104) 는, 예를 들어, 아핀 모션 파라미터들을 결정하고, 아핀 모션 파라미터들을 사용하여 하나 이상의 픽처들의 하나 이상의 블록들에 대한 아핀 모션을 결정하며, 템플릿 매칭 기반 아핀 모션 도출 모드가 하나 이상의 블록들에 대해 사용될 것을 표시하는 신택스 아이템 (예를 들어, 신택스 엘리먼트, 신택스 구조, 변수, 플래그 등) 으로 인코딩된 비디오 비트스트림을 생성할 수도 있다. 인코딩 디바이스 (104) 는 도 15 에 관하여 상술한 프로세스를 포함한 본 명세서에 설명된 기법들 중 임의의 것을 수행할 수도 있다.
도 17 은 일 예의 디코딩 디바이스 (112) 를 도시하는 블록 다이어그램이다. 디코딩 디바이스 (112) 는 엔트로피 디코딩 유닛 (80), 예측 프로세싱 유닛 (81), 역 양자화 유닛 (86), 역 변환 프로세싱 유닛 (88), 합산기 (90), 필터 유닛 (91), 및 픽처 메모리 (92) 를 포함한다. 예측 프로세싱 유닛 (81) 은, 모션 보상 유닛 (82) 및 인트라 예측 프로세싱 유닛 (84) 을 포함한다. 일부 예들에 있어서, 디코딩 디바이스 (112) 는 도 16 으로부터의 인코딩 디바이스 (104) 에 대하여 설명된 인코딩 패스에 일반적으로 상호적인 디코딩 패스를 수행할 수도 있다.
디코딩 프로세스 동안, 디코딩 디바이스 (112) 는, 인코딩 디바이스 (104) 에 의해 전송된 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 일부 실시형태에서, 디코딩 디바이스 (112) 는 인코딩 디바이스 (104) 로부터 인코딩된 비디오 비트스트림을 수신할 수도 있다. 일부 실시형태들에서, 디코딩 디바이스 (112) 는 전술된 기법들 중 하나 이상을 구현하도록 구성된 서버, 미디어 인식 네트워크 엘리먼트 (MANE), 비디오 편집기/스플라이서, 또는 다른 그러한 디바이스와 같은 네트워크 엔티티 (79) 로부터 인코딩된 비디오 비트스트림을 수신할 수도 있다. 네트워크 엔티티 (79) 는 인코딩 디바이스 (104) 를 포함할 수도 있거나 또는 그렇지 않을 수도 있다. 본 개시에 설명된 기법들의 일부는, 네트워크 엔티티 (79) 가 인코딩된 비디오 비트스트림을 디코딩 디바이스 (112) 로 송신하기 전에 네트워크 엔티티 (79) 에 의해 구현될 수도 있다. 일부 비디오 디코딩 시스템들에서, 네트워크 엔티티 (79) 및 디코딩 디바이스 (112) 는 별도의 디바이스들의 부분들일 수도 있지만, 다른 사례들에서는, 네트워크 엔티티 (79) 에 대해 설명된 기능은, 디코딩 디바이스 (112) 를 포함하는 동일한 디바이스에 의해 수행될 수도 있다.
디코딩 디바이스 (112) 의 엔트로피 디코딩 유닛 (80) 은 양자화된 계수들, 모션 벡터들, 및 다른 신택스 엘리먼트들을 생성하기 위하여 비트스트림을 엔트로피 디코딩한다. 엔트로피 디코딩 유닛 (80) 은 모션 벡터들 및 다른 신택스 엘리먼트들을 예측 프로세싱 유닛 (81) 에 포워딩한다. 디코딩 디바이스 (112) 는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트들을 수신할 수도 있다. 엔트로피 디코딩 유닛 (80)은 VPS, SPS 및 PPS 와 같은 하나 이상의 파라미터 세트에서 고정 길이 신택스 엘리먼트 및 가변 길이 신택스 엘리먼트 양자 모두를 프로세싱 및 파싱할 수도 있다.
비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛 (81) 의 인트라 예측 프로세싱 유닛 (84) 은, 현재 프레임 또는 픽처의 이전에 디코딩된 블록들로부터 시그널링된 인트라 예측 모드 및 데이터에 기초하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측 데이터를 생성할 수도 있다. 비디오 프레임이 인터 코딩된 (즉, B, P 또는 GPB) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛 (81) 의 모션 보상 유닛 (82) 은 엔트로피 디코딩 유닛 (80) 으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측성 블록들을 생성한다. 예측성 블록들은 참조 픽처 리스트 내의 하나의 참조 픽처로부터 생성될 수도 있다. 디코딩 디바이스 (112) 는 픽처 메모리 (92) 에 저장된 참조 픽처들에 기초하여 디폴트 (default) 구성 기법들을 이용하여 참조 프레임 리스트들, List 0 및 List 1 을 구성할 수도 있다.
모션 보상 유닛 (82) 은, 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱 (parsing) 하여 현재 비디오 슬라이스의 비디오 블록을 위한 예측 정보를 결정하고, 그 예측 정보를 사용하여 디코딩되고 있는 현재 비디오 블록을 위한 예측성 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (82) 은 파라미터 세트에서 하나 이상의 신택스 엘리먼트들을 사용하여 비디오 슬라이스의 비디오 블록들을 코딩하는데 사용된 예측 모드 (예를 들어, 인트라 또는 인터 예측), 인터 예측 슬라이스 타입 (예를 들어, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스를 위한 하나 이상의 참조 픽처 리스트들을 위한 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록을 위한 모션 벡터들, 슬라이스의 각각의 인터 코딩된 비디오 블록을 위한 인터 예측 상태, 및 현재 비디오 슬라이스에서 비디오 블록들을 디코딩하기 위한 다른 정보를 결정한다.
모션 보상 유닛 (82) 은 보간 필터들에 기초하여 보간을 또한 수행할 수도 있다. 모션 보상 유닛 (82) 은 비디오 블록들의 인코딩 동안 인코딩 디바이스 (104) 에 의해 이용되는 보간 필터들을 이용하여 참조 블록들의 서브 정수 픽셀들을 위한 보간된 값들을 계산할 수도 있다. 이 경우에, 모션 보상 유닛 (82) 은 수신된 신택스 엘리먼트들로부터 인코딩 디바이스 (104) 에 의해 이용된 보간 필터들을 결정하고, 그 보간 필터들을 이용하여 예측성 블록들을 생성할 수도 있다.
역 양자화 유닛 (86) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (80) 에 의해 디코딩된 양자화된 변환 계수들을 역 양자화 또는 양자화해제 (de-quantize) 한다. 역 양자화 프로세스는, 양자화도, 그리고, 마찬가지로, 적용되어야 하는 역 양자화도를 결정하기 위해, 비디오 슬라이스에서 각 비디오 블록에 대해 인코딩 디바이스 (104) 에 의해 산출된 양자화 파라미터의 이용을 포함할 수도 있다. 역 변환 프로세싱 유닛 (88) 은, 픽셀 도메인에서 잔차 블록들을 생성하기 위해 변환 계수들에, 역 변환 (예를 들어, 역 DCT 또는 다른 적합한 역 변환), 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 적용한다.
모션 보상 유닛 (82) 이 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 현재의 비디오 블록을 위한 예측성 블록을 생성한 후, 디코딩 디바이스 (112) 는 역변환 유닛 (88) 으로부터의 잔차 블록들을 모션 보상 유닛 (82) 에 의해 생성된 대응하는 예측성 블록들과 합산함으로써 디코딩된 비디오 블록을 형성한다. 합산기 (90) 는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 원하는 경우, (코딩 루프에서 또는 코딩 루프 후의) 루프 필터들이 또한 픽셀 천이들을 매끄럽게 하거나 또는 다른 방법으로 비디오 품질을 개선하는데 사용될 수도 있다. 필터 유닛 (91) 은 디블록킹 필터, ALF (adaptive loop filter) 및 SAO (sample adaptive offset) 필터 등의 하나 이상의 루프 필터들을 나타내도록 의도된다. 필터 유닛 (91) 이 인루프 필터인 것으로서 도 17 에 나타나 있지만, 다른 구성들에서, 필터 유닛 (91) 은 포스트 루프 필터로서 구현될 수도 있다. 그 후 정해진 프레임 또는 픽처에서 디코딩된 비디오 블록들은 픽처 메모리 (92) 에 저장되고, 이는 후속 모션 보상을 위해 사용된 참조 픽처들을 저장한다. 픽처 메모리 (92) 는 또한, 도 1 의 비디오 목적지 디바이스 (122) 와 같은 디스플레이 디바이스 상의 나중의 제시를 위해 디코딩된 비디오를 저장한다.
도 17 의 디코딩 디바이스 (112) 는 본 명세서에 설명된 템플릿 매칭 기반 아핀 모션 도출을 수행하도록 구성된 비디오 디코더의 예를 나타낸다. 디코딩 디바이스 (112) 는 예를 들어, 아핀 모션 파라미터들을 결정하고 아핀 모션 파라미터들을 사용하여 하나 이상의 픽처들의 하나 이상의 블록들에 대한 아핀 모션을 결정할 수도 있다. 디코딩 디바이스(112) 는 도 14 에 관하여 상술한 프로세스를 포함한 본 명세서에 설명된 기법들 중 임의의 것을 수행할 수도 있다.
전술한 설명에서, 본원의 양태들은 이들의 구체적 실시형태를 참조하여 설명되었지만, 당업자는 본 출원의 청구물은 이에 제한되지 않는다는 것을 인식할 것이다. 따라서, 본원의 예시적인 실시형태들이 본 명세서에 상세하게 설명되었지만, 본 발명의 개념은 이와 달리 다양하게 구체화되고 채용될 수도 있으며, 첨부된 청구 범위는 선행 기술에 의해 제한되는 것을 제외하고는 그러한 변형을 포함하는 것으로 해석되도록 의도된다. 상술한 청구물의 다양한 피처들 및 양태들은 개별적으로 또는 공동으로 사용될 수도 있다. 또한, 실시형태들은 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않으면서 본원에 기재된 것 이외의 임의의 수의 환경 및 애플리케이션들에서 이용될 수 있다. 따라서, 명세서 및 도면들은 제한적이 아닌 예시적인 것으로 간주되야 한다. 예시의 목적을 위해, 방법들이 특정 순서로 설명되었다. 대안의 실시형태에서, 그 방법들은 설명된 것과 상이한 순서로 수행될 수도 있다는 것을 이해해야 한다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 기술되는 경우, 그러한 구성은 예를 들어, 전자 회로 또는 다른 하드웨어를 설계하여 그 동작을 수행하는 것에 의해, 프로그램 가능한 전자 회로 (예를 들어, 마이크로프로세서 또는 다른 적절한 전자 회로) 를 프로그램하여 그 동작을 수행하는 것에 의해 또는 이들의 임의의 조합에 의해, 달성될 수 있다.
본 명세서에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합으로 구현될 수도 있다. 하드웨어 및 소프트웨어의 이러한 교환가능성을 명백하게 예증하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 그들의 기능의 관점에서 설명되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현될지 여부는, 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 달려 있다. 당업자는 설명된 기능성을 각각의 특정 애플리케이션에 대해 다른 방식으로 구현할 수도 있지만, 이러한 구현 결정이 본 출원의 범위를 벗어나게 하는 것으로 해석되지 않아야 한다.
본 명세서에 기재된 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 그러한 기법들은 범용 컴퓨터, 무선 통신 디바이스 핸드세트, 또는 무선 통신 디바이스 핸드세트 및 다른 디바이스들에서의 애플리케이션을 포함하는 다수의 사용들을 갖는 집적 회로 디바이스들과 같은 다양한 디바이스들 중의 임의의 것에서 구현될 수도 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 피처들은 집적 로직 디바이스 (integrated logic device) 에서 함께 구현되거나 또는 이산이지만 상호동작가능한 로직 디바이스들로서 별도로 구현될 수도 있다. 소프트웨어로 구현되면, 기법들은, 실행될 때, 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체, 예컨대 동기식 랜덤 액세스 메모리 (SDRAM) 와 같은 DRAM, 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적 소거가능 프로그램 가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등을 포함할 수도 있다. 추가로 또는 대안적으로 기법들은, 전파된 신호들 또는 파들과 같은, 명령들 또는 데이터 구조들의 형태의 프로그램 코드를 나르거나 또는 통신하고, 컴퓨터에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다.
프로그램 코드는, 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로 프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 다른 균등한 집적된 또는 별개의 로직 회로부와 같은 하나 이상의 프로세서들을 포함할 수도 있는 프로세서에 의해 실행될 수도 있다. 그러한 프로세서는 본 개시에 기재된 기법들 중의 어느 것을 수행하도록 구성될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 코어와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 임의의 전술한 구조, 전술한 구조의 임의의 조합, 또는 본원에 설명된 기술들의 구현에 적합한 임의의 다른 구조 또는 장치를 지칭할 수도 있다. 추가로, 일부 양태에서, 여기서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈 또는 하드웨어 모듈 내에 제공되거나 또는 결합된 비디오 인코더-디코더 (코덱) 에 포함될 수도 있다.

Claims (58)

  1. 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법으로서,
    상기 디코더에 의해, 인코딩된 비디오 비트스트림으로부터 비디오 데이터를 획득하는 단계로서, 상기 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하는 단계; 및
    상기 디코더에 의해, 상기 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 단계로서, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록의 현재 아핀 템플릿 및 상기 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하는 단계를 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  2. 제 1 항에 있어서,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하는 단계를 더 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  3. 제 1 항에 있어서,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하는 단계를 더 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  4. 제 1 항에 있어서,
    상기 현재 블록에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계는,
    상기 디코더에 의해, 초기의 아핀 모션 파라미터들의 세트를 획득하는 단계;
    상기 디코더에 의해, 상기 초기의 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 상기 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 단계로서, 상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 단계;
    상기 디코더에 의해, 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들에 대해 도출된 상기 하나 이상의 아핀 모션 벡터들을 사용하여 상기 참조 픽처의 상기 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 단계;
    상기 디코더에 의해, 적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 에러를 최소화하는 단계; 및
    상기 디코더에 의해, 적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 최소화된 상기 에러에 기초하여 상기 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계를 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  5. 제 4 항에 있어서,
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계는,
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들 및 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들을 사용하여 상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 단계;
    상기 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 단계; 및
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대해, 상기 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 상기 복수의 아핀 모션 파라미터들의 세트들로부터 상기 아핀 모션 파라미터들의 세트를 선택하는 단계를 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  6. 제 5 항에 있어서,
    상기 품질 메트릭은 절대 차의 합 (sum of absolute difference; SAD) 을 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  7. 제 4 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대해 결정된 병진 (translational) 모션 벡터에 기초하여 결정되는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  8. 제 7 항에 있어서,
    상기 병진 모션 벡터는 프레임-레이트-업-컨버전 (frame-rate-up-conversion; FRUC) 템플릿 매칭을 사용하여 결정되는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  9. 제 4 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정되는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  10. 제 1 항에 있어서,
    상기 아핀 모션 파라미터들의 세트를 결정하기 위해 상기 인코딩된 비디오 비트스트림으로부터 아핀 모션 파라미터들이 디코딩되지 않는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  11. 제 1 항에 있어서,
    상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  12. 제 11 항에 있어서,
    상기 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  13. 제 1 항에 있어서,
    상기 현재 아핀 템플릿은 L-형상 블록을 포함하고, 상기 L-형상 블록은 상기 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 상기 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함하는, 디코더에서 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하는 방법.
  14. 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더로서,
    인코딩된 비디오 비트스트림의 비디오 데이터를 저장하도록 구성된 메모리; 및
    프로세서를 포함하고,
    상기 프로세서는,
    상기 인코딩된 비디오 비트스트림의 상기 비디오 데이터를 획득하는 것으로서, 획득된 상기 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하고; 그리고
    상기 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것으로서, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록의 현재 아핀 템플릿 및 상기 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하도록
    구성되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  15. 제 14 항에 있어서,
    상기 프로세서는 또한,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하도록 구성되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  16. 제 14 항에 있어서,
    상기 프로세서는 또한,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하도록 구성되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  17. 제 14 항에 있어서,
    상기 현재 블록에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것은,
    초기의 아핀 모션 파라미터들의 세트를 획득하는 것;
    상기 초기의 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 것으로서, 상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 것;
    상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들에 대해 도출된 상기 하나 이상의 아핀 모션 벡터들을 사용하여 상기 참조 픽처의 상기 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 것;
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 에러를 최소화하는 것; 및
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 최소화된 상기 에러에 기초하여 상기 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  18. 제 17 항에 있어서,
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것은,
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들 및 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들을 사용하여 상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 것;
    상기 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 것; 및
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대해, 상기 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 상기 복수의 아핀 모션 파라미터들의 세트들로부터 상기 아핀 모션 파라미터들의 세트를 선택하는 것을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  19. 제 18 항에 있어서,
    상기 품질 메트릭은 절대 차의 합 (SAD) 을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  20. 제 17 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  21. 제 20 항에 있어서,
    상기 병진 모션 벡터는 프레임-레이트-업-컨버전 (FRUC) 템플릿 매칭을 사용하여 결정되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  22. 제 17 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정되는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  23. 제 14 항에 있어서,
    상기 아핀 모션 파라미터들의 세트를 결정하기 위해 상기 인코딩된 비디오 비트스트림으로부터 아핀 모션 파라미터들이 디코딩되지 않는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  24. 제 14 항에 있어서,
    상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  25. 제 24 항에 있어서,
    상기 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  26. 제 14 항에 있어서,
    상기 현재 아핀 템플릿은 L-형상 블록을 포함하고, 상기 L-형상 블록은 상기 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 상기 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함하는, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  27. 제 14 항에 있어서,
    상기 디코더는 디코딩된 비디오 데이터를 디스플레이하기 위한 디스플레이를 갖는 모바일 디바이스의 일부인, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  28. 제 14 항에 있어서,
    상기 디코더는 픽처들을 캡처하기 위한 카메라를 갖는 모바일 디바이스의 일부인, 하나 이상의 아핀 모션 파라미터들의 세트들을 도출하기 위한 디코더.
  29. 비디오 데이터를 인코딩하는 방법으로서,
    비디오 데이터를 획득하는 단계로서, 상기 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하는 단계;
    상기 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 단계로서, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록의 현재 아핀 템플릿 및 상기 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하는 단계; 및
    인코딩된 비디오 비트스트림을 생성하는 단계로서, 상기 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 상기 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함하고, 상기 인코딩된 비디오 비트스트림은 상기 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는, 상기 인코딩된 비디오 비트스트림을 생성하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  30. 제 29 항에 있어서,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  31. 제 29 항에 있어서,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  32. 제 29 항에 있어서,
    상기 현재 블록에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계는,
    초기의 아핀 모션 파라미터들의 세트를 획득하는 단계;
    상기 초기의 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 상기 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 단계로서, 상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 단계;
    상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들에 대해 도출된 상기 하나 이상의 아핀 모션 벡터들을 사용하여 상기 참조 픽처의 상기 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 단계;
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 에러를 최소화하는 단계; 및
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 최소화된 상기 에러에 기초하여 상기 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  33. 제 32 항에 있어서,
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 단계는,
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들 및 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들을 사용하여 상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 단계;
    상기 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 단계; 및
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대해, 상기 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 상기 복수의 아핀 모션 파라미터들의 세트들로부터 상기 아핀 모션 파라미터들의 세트를 선택하는 단계를 포함하는, 비디오 데이터를 인코딩하는 방법.
  34. 제 33 항에 있어서,
    상기 품질 메트릭은 절대 차의 합 (SAD) 을 포함하는, 비디오 데이터를 인코딩하는 방법.
  35. 제 32 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정되는, 비디오 데이터를 인코딩하는 방법.
  36. 제 35 항에 있어서,
    상기 병진 모션 벡터는 프레임-레이트-업-컨버전 (FRUC) 템플릿 매칭을 사용하여 결정되는, 비디오 데이터를 인코딩하는 방법.
  37. 제 32 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정되는, 비디오 데이터를 인코딩하는 방법.
  38. 제 29 항에 있어서,
    상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함하는, 비디오 데이터를 인코딩하는 방법.
  39. 제 38 항에 있어서,
    상기 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함하는, 비디오 데이터를 인코딩하는 방법.
  40. 제 29 항에 있어서,
    상기 현재 아핀 템플릿은 L-형상 블록을 포함하고, 상기 L-형상 블록은 상기 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 상기 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함하는, 비디오 데이터를 인코딩하는 방법.
  41. 제 29 항에 있어서,
    상기 인코딩된 비디오 비트스트림을 저장하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  42. 제 29 항에 있어서,
    상기 인코딩된 비디오 비트스트림을 송신하는 단계를 더 포함하는, 비디오 데이터를 인코딩하는 방법.
  43. 비디오 데이터를 인코딩하기 위한 인코더로서,
    비디오 데이터를 저장하도록 구성된 메모리; 및
    프로세서를 포함하고,
    상기 프로세서는,
    상기 비디오 데이터를 획득하는 것으로서, 상기 비디오 데이터는 적어도 현재 픽처 및 참조 픽처를 포함하는, 상기 비디오 데이터를 획득하고;
    상기 현재 픽처의 현재 블록에 대한 아핀 모션 파라미터들의 세트를 결정하는 것으로서, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대한 모션 보상 예측을 수행하기 위해 사용되고, 상기 아핀 모션 파라미터들의 세트는 상기 현재 블록의 현재 아핀 템플릿 및 상기 참조 픽처의 참조 아핀 템플릿을 사용하여 결정되는, 상기 아핀 모션 파라미터들의 세트를 결정하며; 그리고
    인코딩된 비디오 비트스트림을 생성하는 것으로서, 상기 인코딩된 비디오 비트스트림은 템플릿 매칭 기반 아핀 모션 도출 모드가 상기 현재 블록에 대해 디코더에 의해 사용될 것임을 표시하는 신택스 아이템을 포함하고, 상기 인코딩된 비디오 비트스트림은 상기 아핀 모션 파라미터들의 세트를 결정하기 위해 어떠한 아핀 모션 파라미터들도 포함하지 않는, 상기 인코딩된 비디오 비트스트림을 생성하도록 구성되는, 비디오 데이터를 인코딩하기 위한 인코더.
  44. 제 43 항에 있어서,
    상기 프로세서는 또한,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 서브 블록들에 대한 모션 벡터들을 결정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 인코더.
  45. 제 43 항에 있어서,
    상기 프로세서는 또한,
    상기 현재 블록에 대해 결정된 상기 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 복수의 픽셀들에 대한 모션 벡터들을 결정하도록 구성되는, 비디오 데이터를 인코딩하기 위한 인코더.
  46. 제 43 항에 있어서,
    상기 현재 블록에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것은,
    초기의 아핀 모션 파라미터들의 세트를 획득하는 것;
    상기 초기의 아핀 모션 파라미터들의 세트를 사용하여 상기 현재 블록의 현재 아핀 템플릿에서의 하나 이상의 픽셀들에 대한 하나 이상의 아핀 모션 벡터들을 도출하는 것으로서, 상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록에 이웃하는 재구성된 픽셀들을 포함하는, 상기 하나 이상의 아핀 모션 벡터들을 도출하는 것;
    상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들에 대해 도출된 상기 하나 이상의 아핀 모션 벡터들을 사용하여 상기 참조 픽처의 상기 참조 아핀 템플릿에서 하나 이상의 픽셀들을 결정하는 것;
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 에러를 최소화하는 것; 및
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들과 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들 사이의 최소화된 상기 에러에 기초하여 상기 현재 아핀 템플릿의 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  47. 제 46 항에 있어서,
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 상기 아핀 모션 파라미터들의 세트를 결정하는 것은,
    적어도 상기 현재 아핀 템플릿에서의 상기 하나 이상의 픽셀들 및 상기 하나 이상의 아핀 모션 벡터들을 사용하여 결정된 상기 참조 아핀 템플릿에서의 상기 하나 이상의 픽셀들을 사용하여 상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대한 복수의 아핀 모션 파라미터들의 세트들을 결정하는 것;
    상기 복수의 아핀 모션 파라미터들의 세트들로부터 각각의 아핀 모션 파라미터들의 세트에 대한 품질 메트릭을 결정하는 것; 및
    상기 현재 아핀 템플릿의 상기 하나 이상의 제어 포인트들에 대해, 상기 복수의 아핀 모션 파라미터들의 세트들 중에서 최저 메트릭을 갖는 상기 복수의 아핀 모션 파라미터들의 세트들로부터 상기 아핀 모션 파라미터들의 세트를 선택하는 것을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  48. 제 47 항에 있어서,
    상기 품질 메트릭은 절대 차의 합 (SAD) 을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  49. 제 46 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록에 대해 결정된 병진 모션 벡터에 기초하여 결정되는, 비디오 데이터를 인코딩하기 위한 인코더.
  50. 제 49 항에 있어서,
    상기 병진 모션 벡터는 프레임-레이트-업-컨버전 (FRUC) 템플릿 매칭을 사용하여 결정되는, 비디오 데이터를 인코딩하기 위한 인코더.
  51. 제 46 항에 있어서,
    상기 초기의 아핀 모션 파라미터들의 세트는 상기 현재 블록의 이웃하는 블록으로부터의 아핀 모션 벡터에 기초하여 결정되는, 비디오 데이터를 인코딩하기 위한 인코더.
  52. 제 43 항에 있어서,
    상기 현재 블록의 상기 현재 아핀 템플릿은 상기 현재 블록의 하나 이상의 공간적으로 이웃하는 샘플들을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  53. 제 52 항에 있어서,
    상기 공간적으로 이웃하는 샘플들은 상단 이웃 블록 또는 좌측 이웃 블록 중 하나 이상으로부터의 샘플들을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  54. 제 43 항에 있어서,
    상기 현재 아핀 템플릿은 L-형상 블록을 포함하고, 상기 L-형상 블록은 상기 현재 블록의 상단 이웃 블록으로부터의 샘플들 및 상기 현재 블록의 좌측 이웃 블록으로부터의 샘플들을 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  55. 제 43 항에 있어서,
    상기 프로세서는 상기 인코딩된 비디오 비트스트림을 상기 메모리에 저장하도록 구성되는, 비디오 데이터를 인코딩하기 위한 인코더.
  56. 제 43 항에 있어서,
    상기 인코딩된 비디오 비트스트림을 송신하도록 구성된 송신기를 더 포함하는, 비디오 데이터를 인코딩하기 위한 인코더.
  57. 제 43 항에 있어서,
    상기 인코더는 디코딩된 비디오 데이터를 디스플레이하기 위한 디스플레이를 갖는 모바일 디바이스의 일부인, 비디오 데이터를 인코딩하기 위한 인코더.
  58. 제 43 항에 있어서,
    상기 인코더는 픽처들을 캡처하기 위한 카메라를 갖는 모바일 디바이스의 일부인, 비디오 데이터를 인코딩하기 위한 인코더.
KR1020197029576A 2017-03-14 2018-03-13 아핀 모션 정보 도출 KR20190120389A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762471099P 2017-03-14 2017-03-14
US62/471,099 2017-03-14
US15/918,789 US10701390B2 (en) 2017-03-14 2018-03-12 Affine motion information derivation
US15/918,789 2018-03-12
PCT/US2018/022129 WO2018169923A1 (en) 2017-03-14 2018-03-13 Affine motion information derivation

Publications (1)

Publication Number Publication Date
KR20190120389A true KR20190120389A (ko) 2019-10-23

Family

ID=63519801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197029576A KR20190120389A (ko) 2017-03-14 2018-03-13 아핀 모션 정보 도출

Country Status (8)

Country Link
US (1) US10701390B2 (ko)
EP (1) EP3596925B1 (ko)
KR (1) KR20190120389A (ko)
CN (1) CN110383839B (ko)
AU (1) AU2018234607A1 (ko)
BR (1) BR112019018866A2 (ko)
SG (1) SG11201907090WA (ko)
WO (1) WO2018169923A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021086153A1 (ko) * 2019-10-31 2021-05-06 삼성전자 주식회사 어파인 모델에 따른 인터 예측을 수행하는 비디오 복호화 방법 및 그 장치, 비디오 부호화 방법 및 그 장치

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
US11297349B2 (en) * 2017-05-31 2022-04-05 Sharp Kabushiki Kaisha Video decoding device and video encoding device
WO2019004283A1 (ja) * 2017-06-28 2019-01-03 シャープ株式会社 動画像符号化装置及び動画像復号装置
CN109391814B (zh) * 2017-08-11 2023-06-06 华为技术有限公司 视频图像编码和解码的方法、装置及设备
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
CN109922336B (zh) * 2017-12-12 2023-07-18 华为技术有限公司 视频数据的帧间预测方法和装置
EP3518543A1 (en) * 2018-01-26 2019-07-31 Thomson Licensing Illumination compensation flag in frame rate up-conversion with template matching
CN118381908A (zh) * 2018-03-21 2024-07-23 Lx 半导体科技有限公司 图像编码/解码方法以及图像数据的发送方法
WO2019185893A1 (en) * 2018-03-29 2019-10-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Video decoder, video encoder, method for decoding a video content, method for encoding a video content, computer program and video bitstream
US11509925B2 (en) * 2018-04-12 2022-11-22 Samsung Electronics Co.. Ltd. Method and device for video encoding and video decoding motion vector information
EP4246979A3 (en) * 2018-04-24 2023-11-01 LG Electronics Inc. Method and apparatus for inter prediction in video coding system
EP3791578A1 (en) * 2018-05-09 2021-03-17 InterDigital VC Holdings, Inc. Motion compensation for video encoding and decoding
US20190364295A1 (en) * 2018-05-25 2019-11-28 Tencent America LLC Method and apparatus for video coding
WO2019234598A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Interaction between ibc and stmvp
US11012703B2 (en) * 2018-06-13 2021-05-18 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
WO2020003274A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
TWI729422B (zh) * 2018-06-21 2021-06-01 大陸商北京字節跳動網絡技術有限公司 色彩分量間的子區塊移動向量繼承
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
US11070813B2 (en) * 2018-06-29 2021-07-20 Intel Corporation Global motion estimation and modeling for accurate global motion compensation for efficient video processing or coding
EP3791586A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
MX2021000171A (es) * 2018-07-02 2022-11-01 Huawei Tech Co Ltd Método de predicción de vector de movimiento y aparato relacionado.
US11051025B2 (en) * 2018-07-13 2021-06-29 Tencent America LLC Method and apparatus for video coding
US10462488B1 (en) * 2018-07-13 2019-10-29 Tencent America LLC Method and apparatus for video coding
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding
CN116980591B (zh) * 2018-08-29 2024-03-15 北京达佳互联信息技术有限公司 视频编码的方法、计算设备和存储介质
CN116647693A (zh) * 2018-09-06 2023-08-25 Lg电子株式会社 编解码设备、存储介质和数据发送设备
AU2019344978B2 (en) * 2018-09-21 2024-07-11 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Image signal encoding/decoding method and device therefor
US11943467B2 (en) * 2018-09-21 2024-03-26 Vid Scale, Inc. Affine motion estimation for affine model-based video coding
GB2577318B (en) * 2018-09-21 2021-03-10 Canon Kk Video coding and decoding
TWI834727B (zh) * 2018-09-23 2024-03-11 大陸商北京字節跳動網絡技術有限公司 從仿射運動預測的非仿射塊
TWI835864B (zh) 2018-09-23 2024-03-21 大陸商北京字節跳動網絡技術有限公司 簡化的空時運動矢量預測
GB2591906B (en) 2018-09-24 2023-03-08 Beijing Bytedance Network Tech Co Ltd Bi-prediction with weights in video coding and decoding
WO2020070730A2 (en) * 2018-10-06 2020-04-09 Beijing Bytedance Network Technology Co., Ltd. Size restriction based on affine motion information
WO2020073928A1 (en) * 2018-10-09 2020-04-16 Huawei Technologies Co., Ltd. Inter prediction method and apparatus
US11818383B2 (en) * 2018-10-10 2023-11-14 Hfi Innovation Inc. Methods and apparatuses of combining multiple predictors for block prediction in video coding systems
GB2578150C (en) 2018-10-18 2022-05-18 Canon Kk Video coding and decoding
CN111083485B (zh) * 2018-10-22 2024-08-02 北京字节跳动网络技术有限公司 仿射模式的运动信息的利用
CN112889284A (zh) * 2018-10-22 2021-06-01 北京字节跳动网络技术有限公司 基于子块的解码器侧运动矢量推导
WO2020084461A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on decoder side motion vector derivation based on coding information
WO2020084512A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Affine motion information derivation from neighboring block
WO2020094079A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Block size dependent storage of motion information
US11212521B2 (en) * 2018-11-07 2021-12-28 Avago Technologies International Sales Pte. Limited Control of memory bandwidth consumption of affine mode in versatile video coding
WO2020094150A1 (en) 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in current picture referencing
WO2020098752A1 (en) * 2018-11-14 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Improvements of affine prediction mode
CN113039802B (zh) 2018-11-16 2024-05-14 北京字节跳动网络技术有限公司 基于历史的仿射参数的使用
CN113039796B (zh) 2018-11-17 2023-09-19 北京字节跳动网络技术有限公司 视频处理中的广义双向预测模式
WO2020103940A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coordination method for sub-block based inter prediction
US10880354B2 (en) 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
JP7212161B2 (ja) * 2018-11-29 2023-01-24 北京字節跳動網絡技術有限公司 イントラブロックコピーモードとインター予測ツールとの間の相互作用
CN113170110B (zh) * 2018-12-03 2024-05-14 北京字节跳动网络技术有限公司 候选的最大数量的指示方法
CN113170111B (zh) * 2018-12-08 2024-03-08 北京字节跳动网络技术有限公司 视频处理方法、装置和计算机可读存储介质
WO2020125750A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector precision in merge with motion vector difference mode
US11102476B2 (en) * 2018-12-28 2021-08-24 Qualcomm Incorporated Subblock based affine motion model
WO2020140949A1 (en) * 2019-01-02 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Usage of interweaved prediction
CN113454999B (zh) 2019-01-02 2024-07-02 北京字节跳动网络技术有限公司 划分模式之间的运动矢量推导
US11025951B2 (en) * 2019-01-13 2021-06-01 Tencent America LLC Method and apparatus for video coding
CN113330739A (zh) 2019-01-16 2021-08-31 北京字节跳动网络技术有限公司 Lut中的运动候选的插入顺序
US11202089B2 (en) * 2019-01-28 2021-12-14 Tencent America LLC Method and apparatus for determining an inherited affine parameter from an affine model
CN118118659A (zh) 2019-01-31 2024-05-31 北京字节跳动网络技术有限公司 记录仿射模式自适应运动矢量分辨率的上下文
EP3910955A4 (en) * 2019-02-01 2022-05-18 Huawei Technologies Co., Ltd. INTERFRAME PREDICTION METHOD AND APPARATUS
CN111526362B (zh) * 2019-02-01 2023-12-29 华为技术有限公司 帧间预测方法和装置
CN113383548A (zh) 2019-02-03 2021-09-10 北京字节跳动网络技术有限公司 Mv精度和mv差编解码之间的相互作用
WO2020164544A1 (en) 2019-02-13 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Updating of history based motion vector prediction tables
EP3909239A4 (en) * 2019-02-14 2022-04-20 Beijing Bytedance Network Technology Co., Ltd. SELECTIVE SIZE APPLICATION OF DECODER SIDE REFINING TOOLS
US11394999B2 (en) * 2019-03-11 2022-07-19 Alibaba Group Holding Limited Method, device, and system for determining prediction weight for merge mode
AU2019201649A1 (en) * 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
MX2021010830A (es) * 2019-03-11 2021-12-15 Vid Scale Inc Codificación de vectores de movimiento en modo de fusión simétrica.
AU2020237079B2 (en) 2019-03-12 2023-05-11 Tencent America LLC Method and apparatus for video encoding or decoding
US11394993B2 (en) * 2019-03-13 2022-07-19 Tencent America LLC Method and apparatus for affine inter prediction with small subblocks
CN116248891A (zh) * 2019-03-14 2023-06-09 华为技术有限公司 帧间预测的方法及相关装置
CN113632484A (zh) * 2019-03-15 2021-11-09 北京达佳互联信息技术有限公司 用于双向光流的比特宽度控制的方法和设备
KR102659481B1 (ko) * 2019-03-17 2024-04-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 광학 흐름에 기초한 예측 정제의 계산
CN113545083B (zh) * 2019-03-18 2023-08-22 腾讯美国有限责任公司 视频编解码的方法和装置
KR20230165888A (ko) 2019-04-02 2023-12-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 양방향 광학 흐름 기반 비디오 코딩 및 디코딩
CN113711608B (zh) * 2019-04-19 2023-09-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程的适用性
EP3922015A4 (en) 2019-04-19 2022-07-20 Beijing Bytedance Network Technology Co., Ltd. GRADIENT CALCULATION IN VARIOUS MOTION VECTOR REFINEMENTS
CN113728646A (zh) * 2019-04-25 2021-11-30 北京达佳互联信息技术有限公司 用于利用光流的预测细化的方法和装置
SG11202111760SA (en) * 2019-04-25 2021-11-29 Op Solutions Llc Signaling of global motion vector in picture header
US11523109B2 (en) * 2019-05-02 2022-12-06 Tencent America LLC Method and apparatus for improvements of affine prof
EP3954119A4 (en) * 2019-05-21 2022-06-22 Beijing Bytedance Network Technology Co., Ltd. SYNTAX SIGNALING IN A SUBBLOCK MERGE MODE
US11240499B2 (en) * 2019-05-24 2022-02-01 Tencent America LLC Method and apparatus for video coding
WO2020251325A1 (ko) * 2019-06-14 2020-12-17 현대자동차주식회사 인터 예측을 이용하여 비디오를 부호화 및 복호화하는 방법 및 장치
CN118612459A (zh) 2019-06-14 2024-09-06 现代自动车株式会社 用于利用帧间预测来编码和解码视频的方法和装置
WO2020256615A1 (en) * 2019-06-21 2020-12-24 Telefonaktiebolaget Lm Ericsson (Publ) Video coding layer up-switching indication
EP3991431A4 (en) * 2019-07-10 2022-09-28 Beijing Dajia Internet Information Technology Co., Ltd. METHOD AND APPARATUS FOR PREDICTION REFINING WITH OPTICAL FLOW
JP7322277B2 (ja) * 2019-07-27 2023-08-07 北京字節跳動網絡技術有限公司 参照ピクチャタイプに従ったツールの使用制限
MX2022000834A (es) 2019-08-08 2022-02-10 Fg innovation co ltd Dispositivo y metodo para la codificacion de datos de video.
WO2021027767A1 (en) 2019-08-10 2021-02-18 Beijing Bytedance Network Technology Co., Ltd. Position restriction for inter coding mode
EP3997877A4 (en) 2019-08-13 2023-05-24 Beijing Bytedance Network Technology Co., Ltd. MOTION ACCURACY IN SUBBLOCK-BASED INTERPREDICTION
CN110636301B (zh) 2019-09-18 2021-08-03 浙江大华技术股份有限公司 仿射预测方法、计算机设备和计算机可读存储介质
WO2021052506A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Transform unit based combined inter intra prediction
CN113784134B (zh) * 2019-09-23 2022-08-26 杭州海康威视数字技术股份有限公司 编解码方法、设备及存储介质
WO2021056220A1 (zh) * 2019-09-24 2021-04-01 北京大学 视频编解码的方法与装置
CN111327901B (zh) * 2020-03-10 2023-05-30 北京达佳互联信息技术有限公司 视频编码方法、装置、存储介质及编码设备
US11729424B2 (en) * 2020-12-04 2023-08-15 Ofinno, Llc Visual quality assessment-based affine transformation
US11936877B2 (en) 2021-04-12 2024-03-19 Qualcomm Incorporated Template matching based affine prediction for video coding
JP2024514113A (ja) * 2021-04-12 2024-03-28 クゥアルコム・インコーポレイテッド ビデオコーディングのためのテンプレートマッチングベースのアフィン予測
CN113630601B (zh) * 2021-06-29 2024-04-02 杭州未名信科科技有限公司 一种仿射运动估计方法、装置、设备及存储介质
EP4388735A1 (en) * 2021-08-16 2024-06-26 MediaTek Inc Candidate reordering for merge mode with motion vector difference
CN117837145A (zh) * 2021-08-19 2024-04-05 联发科技(新加坡)私人有限公司 使用模板匹配细化候选选择
WO2023051641A1 (en) * 2021-09-28 2023-04-06 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
US20230104476A1 (en) * 2021-10-05 2023-04-06 Tencent America LLC Grouping based adaptive reordering of merge candidate
US20230134017A1 (en) * 2021-11-01 2023-05-04 Tencent America LLC Template-matching based adaptive motion vector resolution (amvr) for bi-prediction and an affine mode
CN114157868B (zh) * 2022-02-07 2022-07-19 杭州未名信科科技有限公司 视频帧的编码模式筛选方法、装置及电子设备
US20230344984A1 (en) * 2022-04-25 2023-10-26 Tencent America LLC Affine models use in affine bilateral matching
WO2024017224A1 (en) * 2022-07-22 2024-01-25 Mediatek Inc. Affine candidate refinement
US20240121399A1 (en) * 2022-09-30 2024-04-11 Qualcomm Incorporated Decoder-side control point motion vector refinement for affine inter-prediction in video coding
US20240137539A1 (en) * 2022-10-18 2024-04-25 Tencent America LLC Method and apparatus for affine motion refinement
US20240195978A1 (en) * 2022-12-13 2024-06-13 Apple Inc. Joint motion vector coding
US20240244182A1 (en) * 2023-01-18 2024-07-18 Tencent America LLC Multi-template based intra-frame template matching prediction

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1404135B1 (en) * 2000-01-21 2016-12-14 Nokia Technologies Oy A motion estimation method and a system for a video coder
US7558320B2 (en) 2003-06-13 2009-07-07 Microsoft Corporation Quality control in frame interpolation with motion analysis
WO2006018796A2 (en) 2004-08-13 2006-02-23 Koninklijke Philips Electronics, N.V. System and method for reducing complexity in a color sequential display system
JP4489033B2 (ja) 2005-03-25 2010-06-23 三洋電機株式会社 フレームレート変換装置、パン・チルト判定装置および映像装置
EP1931141A4 (en) 2005-09-30 2010-11-03 Sharp Kk IMAGE DISPLAY DEVICE AND METHOD
EP1950964A4 (en) 2005-11-07 2012-05-16 Sharp Kk IMAGE DISPLAY DEVICE AND METHOD
JP4181592B2 (ja) 2006-09-20 2008-11-19 シャープ株式会社 画像表示装置及び方法、画像処理装置及び方法
JP4615508B2 (ja) 2006-12-27 2011-01-19 シャープ株式会社 画像表示装置及び方法、画像処理装置及び方法
KR101366242B1 (ko) * 2007-03-29 2014-02-20 삼성전자주식회사 움직임 모델 파라메터의 부호화, 복호화 방법 및 움직임모델 파라메터를 이용한 영상의 부호화, 복호화 방법 및장치
US9055294B2 (en) * 2009-01-28 2015-06-09 France Telecom Method and device for encoding an image using a prediction mask decoding method and device and corresponding signals and computer programs
US8718142B2 (en) 2009-03-04 2014-05-06 Entropic Communications, Inc. System and method for frame rate conversion that utilizes motion estimation and motion compensated temporal interpolation employing embedded video compression
US8363721B2 (en) 2009-03-26 2013-01-29 Cisco Technology, Inc. Reference picture prediction for video coding
US20100246675A1 (en) 2009-03-30 2010-09-30 Sony Corporation Method and apparatus for intra-prediction in a video encoder
US20100289944A1 (en) 2009-05-12 2010-11-18 Shing-Chia Chen Frame Rate Up-Conversion Based Dynamic Backlight Control System and Method
US8675736B2 (en) * 2009-05-14 2014-03-18 Qualcomm Incorporated Motion vector processing
US8345070B2 (en) 2009-06-10 2013-01-01 Himax Media Solutions, Inc. Apparatus and method for frame rate up conversion
CN102883160B (zh) * 2009-06-26 2016-06-29 华为技术有限公司 视频图像运动信息获取方法、装置及设备、模板构造方法
JP5566133B2 (ja) 2010-03-05 2014-08-06 キヤノン株式会社 フレームレート変換処理装置
CN105933715B (zh) * 2010-04-13 2019-04-12 Ge视频压缩有限责任公司 跨平面预测
JP5551308B2 (ja) 2010-05-26 2014-07-16 クゥアルコム・インコーポレイテッド カメラパラメータ支援型のビデオフレームレート・アップコンバージョン
US8666120B2 (en) 2010-12-14 2014-03-04 The United States Of America, As Represented By The Secretary Of The Navy Method and apparatus for conservative motion estimation from multi-image sequences with optimized motion compensation
CN104641644A (zh) * 2012-05-14 2015-05-20 卢卡·罗萨托 基于沿时间的样本序列的混合的编码和解码
JP2014138242A (ja) 2013-01-16 2014-07-28 Sony Corp 画像処理装置および画像処理方法
US9860529B2 (en) 2013-07-16 2018-01-02 Qualcomm Incorporated Processing illumination compensation for video coding
CN106233706B (zh) 2014-02-25 2020-01-03 苹果公司 用于提供具有标准动态范围和高动态范围两者的视频的向后兼容的装置和方法
US9438910B1 (en) * 2014-03-11 2016-09-06 Google Inc. Affine motion prediction in video coding
EP3107290B1 (en) 2014-03-14 2021-07-28 Samsung Electronics Co., Ltd. Method and device for configuring merge candidate list for decoding and encoding of interlayer video
US10158884B2 (en) 2014-03-19 2018-12-18 Qualcomm Incorporated Simplified merge list construction process for 3D-HEVC
CN112087629B (zh) * 2014-09-30 2021-08-20 华为技术有限公司 图像预测方法、装置及计算机可读存储介质
JP6574270B2 (ja) 2015-06-05 2019-09-11 アップル インコーポレイテッドApple Inc. 高ダイナミックレンジのコンテンツのレンダリング及び表示
CN108600749B (zh) 2015-08-29 2021-12-28 华为技术有限公司 图像预测的方法及设备
US10560712B2 (en) 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021086153A1 (ko) * 2019-10-31 2021-05-06 삼성전자 주식회사 어파인 모델에 따른 인터 예측을 수행하는 비디오 복호화 방법 및 그 장치, 비디오 부호화 방법 및 그 장치
US11985326B2 (en) 2019-10-31 2024-05-14 Samsung Electronics Co., Ltd. Video decoding method and apparatus, and video encoding method and apparatus for performing inter prediction according to affine model

Also Published As

Publication number Publication date
US10701390B2 (en) 2020-06-30
US20180270500A1 (en) 2018-09-20
SG11201907090WA (en) 2019-09-27
CN110383839B (zh) 2022-04-05
EP3596925B1 (en) 2021-03-03
EP3596925A1 (en) 2020-01-22
WO2018169923A1 (en) 2018-09-20
BR112019018866A2 (pt) 2020-04-14
CN110383839A (zh) 2019-10-25
AU2018234607A1 (en) 2019-08-22

Similar Documents

Publication Publication Date Title
CN110383839B (zh) 仿射运动信息导出
CN112823517B (zh) 基于历史的运动矢量预测子的改进
CN109792527B (zh) 处理视频数据的方法和设备
US10999594B2 (en) Virtual search area for current picture referencing (CPR) and intra block copy (IBC)
CN112956190B (zh) 仿射运动预测
CN109155855B (zh) 用于视频译码的仿射运动预测方法、装置及存储媒体
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
KR20190055819A (ko) 조명 보상을 위해 템플릿 사이즈를 적응적으로 결정하는 시스템들 및 방법들
KR20150139953A (ko) 백워드 뷰 합성 예측
WO2020118211A2 (en) Interaction of illumination compensation with inter-prediction
KR20220064962A (ko) 히스토리 기반 모션 벡터 예측
CN114402617A (zh) 利用矢量裁剪的仿射译码
KR20230020413A (ko) 디코딩된 픽처 버퍼 (dpb) 동작들 및 액세스 유닛 구분자 (aud)
CN113228677A (zh) 用于照度补偿模式的修剪