KR20200031078A - 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치 - Google Patents

메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20200031078A
KR20200031078A KR1020197037607A KR20197037607A KR20200031078A KR 20200031078 A KR20200031078 A KR 20200031078A KR 1020197037607 A KR1020197037607 A KR 1020197037607A KR 20197037607 A KR20197037607 A KR 20197037607A KR 20200031078 A KR20200031078 A KR 20200031078A
Authority
KR
South Korea
Prior art keywords
motion vector
predictors
list
pixels
evaluation
Prior art date
Application number
KR1020197037607A
Other languages
English (en)
Other versions
KR102434319B1 (ko
Inventor
기욤 라로슈
빠뜨리스 온노
조나단 따께
크리스토프 지스께
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Priority to KR1020227028244A priority Critical patent/KR102536704B1/ko
Publication of KR20200031078A publication Critical patent/KR20200031078A/ko
Application granted granted Critical
Publication of KR102434319B1 publication Critical patent/KR102434319B1/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence

Landscapes

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

Abstract

본 개시내용은 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 디바이스에 관한 것이다. 이것은, 더 구체적으로, 프레임 레이트 업변환 모드 또는 FRUC 모드라고 언급되는 디코더측 움직임 벡터 도출 모드를 이용하는 특정한 인코딩 모드에 따른 인코딩에 관한 것이다. 이것은, 움직임 정보가 디코더측 움직임 벡터 도출 방법을 이용하여 예측되는 인코딩 모드를 이용할 때 메모리 액세스의 필요성을 감소시키는 인코딩 및 디코딩 개선에 관한 것이다.

Description

메모리 액세스가 감소된 FRUC 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치
본 개시내용은 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 디바이스에 관한 것이다. 본 개시내용은, 더 구체적으로, 프레임 레이트 업변환 모드 또는 FRUC 모드라고 언급되는 디코더측 움직임 벡터 도출 모드를 이용하는 특정한 인코딩 모드에 따른 인코딩에 관한 것이다.
비디오 데이터의 예측 인코딩은, 픽셀들의 블록들로의 프레임의 분할에 기초한다. 픽셀들의 각각의 블록에 대해, 이용가능한 데이터에서 예측자 블록(predictor block)이 검색된다. 예측자 블록은, INTER 코딩 모드에서 현재의 프레임과는 상이한 기준 프레임 내의 블록이거나, INTRA 코딩 모드에서 현재 프레임 내의 이웃하는 픽셀들로부터 생성될 수도 있다. 예측자 블록을 결정하는 상이한 방식에 따라 상이한 인코딩 모드들이 정의된다. 인코딩의 결과는, 예측자 블록의 표시, 및 인코딩 블록과 예측자 블록 사이의 차이로 구성된 잔차 블록이다.
INTER 코딩 모드와 관련하여, 예측자 블록의 표시는 움직임 벡터로서, 인코딩될 블록의 위치와 관련하여 예측자 블록의 기준 이미지에서의 위치를 제공한다. 움직임 벡터 자체는, 움직임 벡터 예측자에 기초하여 예측적으로 인코딩된다. HEVC(High Efficiency Video Coding) 표준은, 움직임 벡터의 예측 인코딩을 위한 수개의 공지된 인코딩 모드들, 즉, 병합 도출 프로세스인 AMVP(Advanced Motion Vector Prediction) 모드를 정의한다. 이들 모드들은, 움직임 벡터 예측자의 후보 목록의 구성 및 인코딩에 이용될 이 목록 내의 움직임 벡터 예측자의 인덱스의 시그널링에 기초한다. 전형적으로, 잔차 움직임 벡터도 시그널링된다.
최근, 시그널링이 전혀없는 움직임 벡터 예측자의 디코더측 도출 프로세스를 정의하는 FRUC라는, 움직임 벡터 예측에 관한 새로운 코딩 모드가 도입되었다. 도출 프로세스의 결과는, 디코더에 의한 인덱스 또는 잔차 움직임 벡터의 어떠한 전송도 없이 움직임 벡터 예측자로서 이용된다.
FRUC 모드 인코딩 및 디코딩의 현재의 구현은, 알려진 인코딩 모드에 비해, 디코더에 의해 고려되어야 하는 메모리 액세스 최악의 경우를 크게 증가시키는 많은 메모리 액세스를 생성한다.
본 발명은 하나 이상의 상기 관심사를 해결하기 위해 고안되었다. 이것은, 움직임 정보가 디코더측 움직임 벡터 도출 방법을 이용하여 예측되는 인코딩 모드를 이용할 때 메모리 액세스의 필요성을 감소시키는 인코딩 및 디코딩 개선에 관한 것이다.
본 발명의 제1 양태에 따르면, 프레임을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 인코딩 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포하며, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하고; 여기서,
- 픽셀들의 블록의 크기가 4x4, 4x8 또는 8x4 픽셀이라면, 픽셀들에서의 템플릿 크기는 픽셀들에서의 블록 크기보다 작거나 같다.
한 실시예에서, 템플릿은 블록의 좌측에 위치한 픽셀들의 블록과 동일한 크기를 갖는 픽셀들의 블록으로 구성된다.
한 실시예에서, 템플릿은 블록 상방에 위치한 픽셀들의 블록과 동일한 크기를 갖는 픽셀들의 블록으로 구성된다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며; 여기서, 상기 방법은:
- 움직임 벡터들의 수를 미리정의된 수로 제한하기 위해 목록에서 일부 움직임 벡터들을 제거하는 단계를 더 포함한다.
한 실시예에서, 제거된 움직임 벡터들은 목록에서 첫 번째 벡터들이다.
한 실시예에서, 제거된 움직임 벡터들은 목록에서 마지막 벡터들이다.
한 실시예에서, 움직임 벡터 목록은 미리정의된 수 3으로 제한된다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 움직임 벡터 목록의 도출은 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하고;
- 후보들의 제1 목록의 도출은, 움직임 벡터 병합 후보들의 평가, ATMVP 움직임 벡터 후보들의 평가, 일방향 예측자들의 평가 및 이웃하는 예측자들의 평가를 포함하며; 여기서,
- 일방향 예측자들은 움직임 벡터 병합 후보들의 평가 전에 먼저 평가된다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 움직임 벡터 목록의 도출은 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하며;
- 후보들의 제1 목록의 도출은, ATMVP 후보들의 평가 및 스케일링된 시간 예측자들의 평가를 포함하고; 여기서,
- ATMVP 후보들의 평가는 스케일링된 시간 예측자들의 평가 전에 이루어진다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 후보들의 움직임 벡터 목록의 도출은, 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며; 여기서,
-좌측 공간 예측자의 평가는 상방 좌측 공간 예측자의 평가 후에 발생한다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 인코딩 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 후보들의 움직임 벡터 목록의 도출은, 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며; 여기서,
- ATMVP 예측자들의 평가는 공간 예측자들의 평가 전에 먼저 발생한다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 후보들의 움직임 벡터 목록의 도출은, 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며; 여기서,
- 예측자들의 평가는, 다음과 같은 순서로, 먼저 상방 좌측 공간 예측자, 그 다음, ATMVP 예측자들, 그 다음, 하방 좌측 공간 예측자들, 그 다음, 상방 우측 공간 예측자, 그 다음, 상방 공간 예측자, 그 다음, 좌측 공간 예측자들, 그 다음, 시간 예측자들에서 발생한다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
- 움직임 벡터 목록의 도출은 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하며; 여기서,
- 블록의 크기가 4x4, 4x8 또는 8x4 픽셀일 때 후보들의 제2 목록은 제1 목록 내의 최상의 후보만을 포함한다.
한 실시예에서, 최상의 후보는 레이트 왜곡 비용을 최소화하는 후보이다.
본 발명의 또 다른 양태에 따르면, 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법이 제공되고, 각각의 프레임은 픽셀들의 블록들로 분할되며, 이 방법은 픽셀들의 블록에 대해:
- 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계 - 상기 도출은 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초함 -;
- 최상의 후보를 획득하기 위해 목록 내의 움직임 벡터 예측자들을 평가하는 단계;
- 최상의 후보에 기초하여 서브픽셀 해상도에서 정교화된 벡터 예측자들을 평가하는 단계를 포함하고; 여기서,
- 정교화된 벡터 예측자들의 평가는 최상의 후보의 템플릿들 내의 픽셀 값들을 이용하도록 제한된다.
한 실시예에서, 최상의 후보는 레이트 왜곡 비용을 최소화하는 후보이다.
본 발명의 또 다른 양태에 따르면, 프로그램가능한 장치를 위한 컴퓨터 프로그램 제품이 제공되고, 이 컴퓨터 프로그램 제품은, 프로그램가능한 장치에 로딩되어 이에 의해 실행될 때 본 발명에 따른 방법을 구현하기 위한 명령어들의 시퀀스를 포함한다.
본 발명의 또 다른 양태에 따르면, 본 발명에 따른 방법을 구현하기 위한 컴퓨터 프로그램의 명령어들을 저장하는 컴퓨터 판독가능한 저장 매체가 제공된다.
본 발명에 따른 방법들의 적어도 일부는 컴퓨터로 구현될 수 있다. 따라서, 본 발명은, 완전히 하드웨어 실시예, (펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함한) 완전히 소프트웨어 실시예, 또는 여기서는 "회로", "모듈" 또는 "시스템"이라 일반적으로 모두 부를 수 있는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 취할 수 있다. 또한, 본 발명은, 매체에 구현된 컴퓨터 이용가능한 프로그램 코드를 갖는 표현의 임의의 유형 매체(tangible medium)로 구현된 컴퓨터 프로그램 제품의 형태를 취할 수도 있다.
본 발명은 소프트웨어로 구현될 수 있으므로, 본 발명은, 임의의 적합한 캐리어 매체 상에서 프로그램가능한 장치에 제공하기 위한 컴퓨터 판독가능한 코드로서 구현될 수 있다. 유형의 비일시적인 캐리어 매체는, 플로피 디스크, CD-ROM, 하드 디스크 드라이브, 자기 테이프 디바이스 또는 고체 메모리 디바이스 등의 저장 매체를 포함할 수 있다. 일시적인 캐리어 매체는, 전기 신호, 전자 신호, 광 신호, 음향 신호, 자기 신호, 또는 전자기 신호, 예를 들어, 마이크로파 또는 RF 신호 등의, 신호를 포함할 수 있다.
이제, 본 발명의 실시예들이 이하의 도면들을 참조하여 단지 예로서 설명될 것이다, 도면들에서:
도 1은 HEVC 인코더 아키텍처를 도시한다;
도 2는 디코더의 원리를 도시한다;
도 3은 병합 모드의 움직임 벡터 도출 프로세스의 플로차트이다;
도 4는 병합 후보들의 목록의 생성 프로세스에서 새로운 ATMVP 움직임 후보들의 포함을 도시한다;
도 5는 FRUC 병합 모드에서의 템플릿 매칭(template matching) 및 양방향 매칭(bilateral matching)을 도시한다;
도 6은 FRUC 병합 정보의 디코딩을 도시한다;
도 7은 병합 모드 및 병합 FRUC 모드의 인코더 평가를 도시한다;
도 8은 JEM의 코딩 유닛 및 서브코딩 유닛 레벨에서의 병합 FRUC 모드 도출을 도시한다;
도 9는 코딩 유닛 레벨에 대한 움직임 벡터 목록 도출을 도시한다;
도 10은 서브코딩 유닛 레벨에 대한 움직임 벡터 목록 도출을 도시한다;
도 11은 JEM 템플릿 매칭 방법에 대한 현재 블록 주변의 템플릿을 도시한다;
도 12는 픽셀들의 1/4 픽셀 그리드 내의 하나의 블록에 대한 메모리 액세스를 도시한다;
도 13은 움직임 벡터 정교화를 도시한다;
도 14는 픽셀들의 1/4 픽셀 그리드 내의 움직임 벡터 정교화에 이용되는 픽셀들을 도시한다;
도 15는 본 발명의 한 실시예에서 이용되는 예시적인 템플릿을 도시한다;
도 16은 본 발명의 한 실시예에서의 움직임 벡터 목록의 제거 프로세스(pruning process)를 도시한다;
도 17은 본 발명의 한 실시예에서의 코딩 유닛 레벨에 대한 움직임 벡터 목록 도출을 도시한다;
도 18은 본 발명의 한 실시예에서의 서브코딩 유닛 레벨에 대한 움직임 벡터 목록 도출을 도시한다;
도 19는 본 발명의 한 실시예에서의 병합 모드 후보들의 도출을 도시한다;
도 20은 본 발명의 한 실시예에서의 병합 모드 후보들의 도출을 도시한다;
도 21은 본 발명의 한 실시예에서의 코딩 유닛 및 서브코딩 유닛 레벨들에서의 병합 FRUC 모드 도출을 도시한다;
도 22는 본 발명의 한 실시예에 대한 픽셀 그리드에서의 움직임 벡터 정교화에 이용되는 픽셀들을 도시한다;
도 23은 본 발명의 한 실시예에 대한 도 22의 예에 비교한 1/4 픽셀 해상도의 그리드에서의 움직임 벡터 정교화에 이용되는 픽셀들을 도시한다;
도 24는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략적인 블록도이다.
도 1은 HEVC 인코더 아키텍처를 도시한다. 비디오 인코더에서, 원본 시퀀스(101)는 코딩 유닛이라 불리는 픽셀들의 블록들로 분할된다(102). 코딩 모드는 각각의 블록에 영향을 미친다. HEVC에서 전형적으로 이용되는 2개의 코딩 모드 패밀리가 있다: 공간적 예측 또는 INTRA 모드(103)에 기초하는 모드들, 및 움직임 추정(104) 및 움직임 보상(105)에 기초한 시간적 예측 또는 INTER 모드에 기초하는 모드들. INTRA 코딩 유닛은, 일반적으로, 인트라 예측이라 불리는 프로세스에 의해 그 인과적 경계(causal boundary)에서 인코딩된 픽셀들로부터 예측된다.
시간적 예측은 먼저, 움직임 추정 단계(104)에서 코딩 유닛에 가장 가까운 기준 영역을, 기준 프레임(116)이라 불리는 이전 또는 미래 프레임에서 발견하는 것으로 구성된다. 이 기준 영역은 예측자 블록을 구성한다. 그 다음, 이 코딩 유닛은, 움직임 보상 단계(105)에서 잔차를 계산하기 위해 예측자 블록을 이용하여 예측된다.
공간적 및 시간적 예측 양쪽 모두의 경우에서, 잔차는 원본 예측자 블록으로부터 코딩 유닛을 감산함으로써 계산된다.
INTRA 예측에서, 예측 방향이 인코딩된다. 시간적 예측에서, 적어도 하나의 움직임 벡터가 인코딩된다. 그러나, 움직임 벡터 인코딩에 관련된 비트 레이트 비용을 더 감소시키기 위해, 움직임 벡터는 직접 인코딩되지 않는다. 실제로, 움직임이 균일하다고 가정하면, 움직임 벡터를, 이 움직임 벡터와 그 주변의 움직임 벡터 사이의 차이로서 인코딩하는 것이 특히 흥미롭다. 예를 들어 H.264/AVC 코딩 표준에서, 움직임 벡터는 현재 블록의 상방에 및 좌측에 위치한 3개의 블록들 사이에서 계산된 중간 벡터(median vector)에 관해 인코딩된다. 중간 벡터와 현재 블록 움직임 벡터 사이에서 계산된, 잔차 움직임 벡터라고도 하는, 차이만이 비트스트림으로 인코딩된다. 이것은 모듈 "Mv 예측 및 코딩"(117)에서 처리된다. 각각의 인코딩된 벡터의 값은 움직임 벡터 필드(118)에 저장된다. 예측에 이용되는 이웃하는 움직임 벡터는, 움직임 벡터 필드(118)로부터 추출된다.
그 다음, 레이트 왜곡 성능을 최적화하는 모드가 모듈(106)에서 선택된다. 중복성을 더욱 감소시키기 위해, 모듈(107)에서 변환, 전형적으로 DCT가 잔차 블록에 적용되고, 모듈(108)에서 양자화가 계수들에 적용된다. 그 다음, 계수들의 양자화된 블록은 모듈(109)에서 엔트로피 코딩되고 그 결과는 비트스트림(110)에 삽입된다.
그 다음, 인코더는 모듈들(111 내지 116)에서 미래 움직임 추정을 위해 인코딩된 프레임의 디코딩을 수행한다. 이들 단계들은 인코더와 디코더가 동일한 기준 프레임을 갖는 것을 허용한다. 코딩된 프레임을 재구성하기 위해, 잔차는 모듈(111)에서 역양자화되고 모듈(112)에서 역변환되어 픽셀 영역에서 "재구성된" 잔차를 제공한다. 인코딩 모드(INTER 또는 INTRA)에 따르면, 이 잔차는 INTER 예측자(114) 또는 INTRA 예측자(113)에 추가된다.
그 다음, 이 제1 재구성은 하나 또는 여러 종류의 후치 필터링에 의해 모듈(115)에서 필터링된다. 이 후치 필터들은 인코딩 및 디코딩된 루프에 통합된다. 이것은, 인코더 및 디코더측에서 동일한 기준 프레임을 이용하기 위해 인코더 및 디코더측에서의 재구성된 프레임에 이들 필터들이 적용될 필요가 있음을 의미한다. 이 후치 필터링의 목표는 압축 아티팩트를 제거하는 것이다.
도 2에서, 디코더의 원리가 표현되어 있다. 비디오 스트림(201)은 먼저 모듈(202)에서 엔트로피 디코딩된다. 그 다음, 잔차 데이터는 모듈(203)에서 역양자화되고 모듈(204)에서 역변환되어 픽셀 값들을 획득한다. 모드 데이터는 또한, 모드의 기능으로 엔트로피 디코딩되고, INTRA 타입 디코딩 또는 INTER 타입 디코딩이 수행된다. INTRA 모드의 경우, INTRA 예측자는 비트스트림(205)에 명시된 INTRA 예측 모드의 기능에서 결정된다. 모드가 INTER이라면, 움직임 정보는 비트스트림(202)으로부터 추출된다. 이것은 기준 프레임 인덱스와 움직임 벡터 잔차로 구성된다. 움직임 벡터 예측자는 움직임 벡터 잔차에 추가되어 움직임 벡터(210)를 획득한다. 그 다음, 움직임 벡터는 기준 프레임(206)에서 기준 영역을 위치파악하는데 이용된다. 움직임 벡터 필드 데이터(211)는, 다음 디코딩된 움직임 벡터의 예측에 이용되도록, 디코딩된 움직임 벡터로 업데이트된다는 점에 유의한다. 그 다음, 디코딩된 프레임의 이 제1 재구성은, 인코더 측에서 이용된 것과 정확히 동일한 후치 필터로 후치 필터링된다(207). 디코더의 출력은 압축해제된 비디오(209)이다.
HEVC 표준은 3개의 상이한 INTER 모드를 이용한다: 인터(Inter) 모드, 병합(Merge) 모드 및 병합 스킵(Merge Skip) 모드. 이들 모드들 사이의 주요 차이점은 비트스트림의 데이터 시그널링이다. 움직임 벡터 코딩의 경우, 현재 HEVC 표준은, 그 이전 것들에 비해 움직임 벡터 예측을 위한 경쟁 기반의 방식을 포함한다. 이것은, 여러 후보가 각각 인터 또는 병합 모드에 대한 최상의 움직임 벡터 예측자 또는 최고의 움직임 정보를 발견하기 위하여 인코더측의 레이트 왜곡 기준과 더불어 경쟁하고 있음을 의미한다. 움직임 정보의 최상의 예측자 또는 최상의 후보에 대응하는 인덱스가 비트스트림에 삽입된다. 디코더는 동일한 세트의 예측자들 또는 후보들을 도출할 수 있고 디코딩된 인덱스에 따라 최상의 것을 이용한다.
예측자들과 후보들의 도출의 설계는, 복잡성에 큰 영향을 미치지 않으면서 최상의 코딩 효율성을 달성하는데 매우 중요하다. HEVC에서, 2개의 움직임 벡터 도출이 이용된다: 하나는 인터 모드(Advanced Motion Vector Prediction(AMVP))에 대한 것이고 또 하나는 병합 모드(Merge Derivation Process)에 대한 것이다.
이미 언급한 바와 같이, 병합 모드("고전형" 또는 스킵)의 후보는, 모든 움직임 정보: 방향, 목록 및 기준 프레임 인덱스 및 움직임 벡터를 나타낸다. 이하에서 설명되는 병합 도출 프로세스에 의해 여러 후보가 생성되며, 각각은 인덱스를 갖는다. 현재의 HEVC 설계에서, 양쪽 병합 모드들에 대한 최대 후보는 5와 같다.
도 3은 병합 모드의 움직임 벡터 도출 프로세스의 플로차트이다. 도출의 제1 단계에서, 7개의 블록 위치들, 301 내지 307이 고려된다. 모듈(308)은 공간 움직임 벡터들의 이용가능성을 체크하고 최대 5개의 움직임 벡터를 선택한다. 이 모듈에서, 예측자는, 존재하고 이 블록이 인트라 코딩되지 않은 경우 이용가능하다. 이들 5개의 움직임 벡터의 선택 및 체크는 다음과 같은 조건에서 기술된다.
"좌측" A1 움직임 벡터(301)가 이용가능하다면, 즉, 존재하고 인트라 코딩되지 않았다는 것을 의미한다면, "좌측" 블록의 움직임 벡터가 선택되고 공간적 후보들의 목록(310)의 제1 후보로서 이용된다. A1 움직임 벡터는 현재 코딩 유닛의 바로 좌측에 있는 블록의 움직임 벡터이다.
"상방" B1 움직임 벡터(302)가 이용가능하다면, "상방" 블록의 후보 움직임 벡터는 존재한다면 제거 모듈(309)에서 A1과 비교된다. B1이 A1과 동일하다면, 공간적 후보들의 목록(310)에 B1이 추가되지 않고 그렇지 않다면 추가된다. B1 움직임 벡터는 현재 코딩 유닛 바로 위의 블록의 움직임 벡터이다. 제거 모듈(309)에 의해 적용되는 일반 원리는, 이전에 선택된 후보들과 대조하여 임의의 새로운 후보를 체크하고 이전에 선택된 후보와 동일한 값을 갖는 새로운 후보의 선택을 방지하는 것이다.
"상방 우측" B0 움직임 벡터(303)가 이용가능하지만 목록에서 아직 선택되지 않았다면, 공간적 후보 목록(310)에 역시 추가된다. B0 움직임 벡터는 현재 코딩 유닛 위의 블록의 바로 좌측에 있는 블록의 움직임 벡터이다.
"하방 좌측" A0 움직임 벡터(304)가 이용가능하고(308), 목록에서 아직 선택되지 않았다면, 공간적 후보 목록(310)에 역시 추가된다. A0 움직임 벡터는 현재 코딩 유닛의 좌측에 있는 블록 바로 아래의 블록의 움직임 벡터이다.
공간적 후보 목록(310)이 이 단계에서 4개의 후보를 포함하지 않는다면, "상방 좌측" B2 움직임 벡터(305)의 이용가능성이 테스트되고, 그것이 이용가능하고 목록에서 아직 선택되지 않았다면, 공간적 후보 목록(310)에 역시 추가된다. B2 움직임 벡터는 현재 코딩 유닛의 좌측에 있는 블록 바로 위의 블록의 움직임 벡터이다.
이 단계의 끝에서 공간적 후보 목록(310)은 0 내지 4개의 공간적 후보를 포함한다.
시간적 후보에 대해, 2개의 위치가 이용될 수 있다: H(306)라고 참조된 위치는 함께 배치된 블록의 하방 우측 위치에 대응하고, 중심(307)이라고 참조된 위치는 함께 배치된 블록에 대응한다. 함께 배치라는 것은, 시간 프레임에서 동일한 위치에 있는 블록을 의미한다. 이들 위치들은 도 3에 도시되어 있다.
AMVP로서, 먼저 H 위치(306)에서의 블록의 이용가능성은 모듈(311)에 의해 체크된다. 이용가능하지 않다면, 중심 위치(307)에서의 블록은 모듈(311)에 의해 체크된다. 이들 위치들의 적어도 하나의 움직임 벡터가 이용가능하다면, 이 시간적 움직임 벡터는, 공간적 후보들 바로 뒤에 병합 후보 목록에 삽입되는 시간적 후보(313)를 생성하기 위하여, 필요하다면 목록 L0 및 L1 양쪽 모두에 대해, 필요하다면, 스케일 모듈(312)에 의해 인덱스 0을 갖는 기준 프레임으로 스케일링될 수 있다.
단계 314에서 테스트되는 바와 같이, 후보들의 수(Nb_Cand)가 후보들의 최대 수(Max_Cand)보다 전적으로 낮다면, 모듈(315)에 의해 결합된 후보들이 생성되고, 그렇지 않다면 병합 후보의 최종 목록(318)이 작성된다. 모듈(315)은, 현재 프레임이 B 프레임에 대한 경우에만 이용되며, 현재 병합 목록에서 이용가능한 후보들에 기초하여 수 개의 후보를 생성한다. 이 생성은, 하나의 후보로부터의 목록 L0의 움직임 벡터와, 제2 움직임 벡터 후보의 목록 L1의 움직임 벡터를 결합하는 것으로 구성된다.
단계 316에서 테스트되는 바와 같이, 후보들의 수(Nb_Cand)가 후보들의 최대 수(Max_Cand)보다 여전히 전적으로 낮다면, 후보들의 병합 목록(318)에서 후보들의 최대 수에 도달하기 위해 모듈(317)에서 제로 움직임 후보(zero motion candidate)들이 생성된다.
이 프로세스의 마지막에서, 병합 후보의 최종 목록(318)이 작성되고 Max_Cand 후보를 포함한다.
병합 모드는 예측 유닛(PU)에 대응하는 픽셀들의 블록에 적용된다. 그러나 (인터 모드에서와 같이) 병합 모드에서의 예측 유닛은 코딩 유닛 크기(2Nx2N)와 동일할 수 있다. 또한, 병합 스킵 예측 유닛은 항상 크기 2Nx2N을 가지며, 이 경우 예측 유닛은 코딩 유닛과 동일하다. 병합 모드 예측 유닛의 경우, 인코더측에서, 하나의 후보가 선택되고 인덱스가 비트스트림에 삽입된다. HEVC에서, 이 인덱스는 첫 번째 비트만이 CABAC 컨텍스트에 의존하는 단항 최대 코드(unary max code)로 코딩된다(CABAC은 엔트로피 코딩 방법인 "Context-Adaptive Binary Arithmetic Coding(컨텍스트-적응적 2진 산술 코딩)"을 상징함). 이것은, 이 첫 번째 비트가 확률에 따라 2진화됨을 의미한다. 다른 비트들은 등-확률(equi-probability)로 2진화된다. 이 단항 최대의 최대 값은 슬라이스 헤더 내의 전송된 값에 의존한다. 그러나, 이 최대 값은 5를 초과할 수 없다. 단항 코드는, 더 높은 숫자보다 낮은 숫자에 대해 더 적은 비트를 갖는다.
HEVC 표준을 정의한 표준화 그룹 ITU-T VCEG(Q6/16) 및 ISO/IEC MPEG(JTC 1/SC 29/WG 11) 양쪽 모두는, JVET(Joint Video Exploration Team)라고 알려진 공동 협력 노력에서 HEVC의 계승자를 위한 미래의 비디오 코딩 기술을 연구하고 있다. JEM(Joint Exploration Model)은, 이 JVET 그룹에 의해 선택된 HEVC 툴과 새로이 추가된 툴을 포함한다. 특히, 이 소프트웨어는 움직임 정보를 효율적으로 인코딩하기 위해 디코더측 알고리즘에서 움직임 정보 도출을 포함한다. 추가적인 툴의 목록은 JVET-F1001라고 언급되는 문서에서 설명된다.
코딩 효율을 증가시키기 위해, 도 3에 도시된 후보들의 고전적인 병합 모드 도출에 추가적인 후보들이 추가되었다. 주요 변경 사항은 ATMVP(Advanced Temporal Motion Vector Prediction) 예측자들의 포함이다. 진보된 시간적 움직임 벡터 예측(Advanced Temporal Motion Vector Prediction) 방법은, 각각의 코딩 유닛이, 함께 배치된 기준 픽처 내의 현재 코딩 유닛보다 작은 복수의 블록으로부터 복수 세트의 움직임 정보를 가져오는 것을 허용한다. 공간-시간적 움직임 벡터 예측(STMVP) 방법에서, 서브코딩 유닛의 움직임 벡터는 시간적 움직임 벡터 예측자 및 공간적 이웃하는 움직임 벡터를 이용함으로써 재귀적으로 도출된다. 추가적인 상세사항은 문서 JVET-F1001에서 찾을 수 있다.
도 4는, 도 3에 도시된 병합 후보 목록의 생성 프로세스에 새로운 ATMVP 움직임 후보들의 포함을 도시한다. 차이점만 설명된다. 2가지 타입의 ATMVP 후보, 즉, 단계 419에 의해 생성된 예측 유닛 레벨 후보(420) 및 단계 421에 의해 생성된 서브코딩 유닛 레벨 후보(422)가 있다. 양쪽 타입의 후보(420 및 422)가 공간적 예측자(423)의 목록에 추가된다. 상방 좌측 공간적 후보(405)는, 존재하는 경우 및 다른 공간적 후보와 비교하여 중복 후보가 아닌 경우 목록의 끝에 추가된다. 그 다음, 고전적인 시간 예측자가 이 목록에 추가되고 목록 내의 후보의 수가 그 최대치에 도달하지 않았다면 병합 모드의 고전적인 도출이 처리된다. 또한, 병합 모드에 대한 후보들의 최대 수(Max_Cand)는, JEM이라 불리는 예시적인 구현에서 HEVC 표준에 비해 5로부터 7로 증가되었다.
디코더측에서의 움직임 벡터 도출은 문서 JVET-F1001에서 패턴 매칭된 움직임 벡터 도출(Pattern matched motion vector derivation)(PMMVD)로서 표기된다. JEM에서의 PMMVD 모드는 프레임-레이트 업변환(Frame-Rate Up Conversion)(FRUC) 기술에 기초하는 특별 병합 모드이다. 이 모드에서, 블록의 움직임 정보는 시그널링되지 않지만 디코더 측에서 도출된다.
현재 버전의 JEM에서 2가지 타입의 검색이 가능하다: 템플릿 매칭 및 양방향 매칭. 도 5는 이들 2개의 방법을 도시한다. 양방향 매칭(501)의 원리는, 현재 코딩 유닛의 움직임 궤적을 따라, 2개의 블록들 사이의 최상의 매치를 발견하는 것이다.
템플릿 매칭(502)의 원리는, 현재 블록 주변의 재구성된 픽셀들과 평가된 움직임 벡터가 가리키는 블록 주변의 이웃하는 픽셀들 사이의 매칭 비용을 계산함으로써 현재 코딩 유닛의 움직임 정보를 도출하는 것이다. 템플릿은, 현재 블록 주변의 이웃하는 픽셀들의 패턴에 대응하고 예측자 블록 주변의 이웃하는 픽셀들의 대응 패턴에 대응한다.
양쪽 매칭 타입(템플릿 또는 양방향)에 대해, 계산된 상이한 매칭 비용이 비교되어 최상의 것을 발견한다. 최상의 매치를 획득하는 움직임 벡터 또는 한 쌍의 움직임 벡터들이 도출된 움직임 정보로서 선택된다. 추가적인 상세사항은 JVET-F1001에서 찾을 수 있다.
양쪽 매칭 방법들은, 전체 움직임 정보, 움직임 벡터, 기준 프레임, 예측의 타입을 도출할 가능성을 제공한다. JEM에서 "FRUC"로 언급된, 디코더측의 움직임 정보 도출은 모든 HEVC 인터 모드들: AMVP, Merge 및 Merge Skip에 적용된다.
AMVP의 경우, 모든 움직임 정보가 시그널링된다: 단일 또는 이중 예측, 기준 프레임 인덱스, 예측자 인덱스 움직임 벡터 및 잔차 움직임 벡터, FRUC 방법이 적용되어 예측자 목록인 경우 제1 예측자에서 설정되는 새로운 예측자를 결정한다. 따라서, 인덱스 0을 갖는다.
병합 및 병합 스킵 모드의 경우, CU에 대해 FRUC 플래그가 시그널링된다. FRUC 플래그가 거짓일 때, 병합 인덱스가 시그널링되고 정규 병합 모드가 이용된다. FRUC 플래그가 참일 때, 추가적인 FRUC 모드 플래그가 시그널링되어 어느 방법(양방향 매칭 또는 템플릿 매칭)이 블록에 대한 움직임 정보를 도출하는데 이용될지를 표시한다. 양방향 매칭은 P 프레임이 아니라 B 프레임에만 적용된다는 점에 유의한다.
병합 및 병합 스킵 모드의 경우, 현재 블록에 대해 움직임 벡터 필드가 정의된다. 이것은, 벡터가 현재 코딩 유닛보다 작은 서브코딩 유닛에 대해 정의됨을 의미한다. 게다가, 고전적인 병합의 경우, 각각의 목록에 대해 하나의 움직임 벡터가 블록에 대한 움직임 정보를 형성할 수 있다.
도 6은, 블록에 대한 병합 모드의 경우 FRUC 플래그의 이러한 시그널링을 나타내는 플로차트이다. 블록은, HEVC 문구에 따른 코딩 유닛 또는 예측 유닛일 수 있다.
제1 단계(601)에서, 코딩 유닛이 스킵 모드에 따라 인코딩되는지를 알기 위해 스킵 플래그가 디코딩된다. 이 플래그가 거짓이면, 단계 602에서 테스트되고, 병합 플래그가 단계 603에서 디코딩되고 단계 605에서 테스트된다. 코딩 유닛이 스킵 또는 병합 모드에 따라 인코딩될 때, 단계 604에서 병합 FRUC 플래그가 디코딩된다. 코딩 유닛이 스킵 또는 병합 모드에 따라 인코딩되지 않을 때, 단계 606에서 고전적인 AMVP 인터 모드의 인트라 예측 정보가 디코딩된다. 현재 코딩 유닛의 FRUC 플래그가 참일 때, 단계 607에서 테스트되고, 현재 슬라이스가 B 슬라이스라면, 단계 608에서 매칭 모드 플래그가 디코딩된다. FRUC에서의 양방향 매칭은 B 슬라이스에 대해서만 이용가능하다는 점에 유의해야 한다. 슬라이스가 B 슬라이스가 아니고 FRUC가 선택된다면, 모드는 필연적으로 템플릿 매칭이며 매칭 모드 플래그는 존재하지 않는다. 코딩 유닛이 FRUC가 아니라면, 단계 609에서 고전적인 병합 인덱스가 디코딩된다.
FRUC 병합 모드는 인코더측에서 고전적인 병합 모드(및 기타의 가능한 병합)와 경쟁한다. 도 7는 JEM에서의 현재 인코딩 모드 평가 방법을 도시한다. 먼저 단계 701에서 HEVC의 고전적인 병합 모드가 평가된다. 후보 목록은 먼저, 단계 702에서 원본 블록과 목록 내의 각각의 후보 사이의 간단한 SAD(Sum of Absolute Difference; 절대 차이의 합)로 평가된다. 그 다음, 단계들 704 내지 708에 의해 예시된, 제약된 후보들의 목록 중의 각각의 후보의 실제 레이트 왜곡(RD) 비용이 평가된다. 평가에서, 잔차가 있는 레이트 왜곡, 단계 705, 및 잔차가 없는 레이트 왜곡, 단계 706이 평가된다. 결국, 단계 709에서 최상의 병합 후보가 결정되며, 이 최상의 병합 후보는 잔차를 갖거나 갖지 않을 수 있다.
그 다음, FRUC 병합 모드는 단계들 710 내지 716에서 평가된다. 각각의 매칭 방법, 즉, 양방향 및 템플릿 매칭에 대해(단계 710), 단계 711에서 현재 블록에 대한 움직임 벡터 필드가 획득되고, 단계 712 및 단계 713에서 잔차를 수반하거나 수반하지 않은 전체 레이트 왜곡 비용 평가가 계산된다. 단계 715에서, 잔차 유무에 관계없이, 최상의 움직임 벡터(716)가 이들 레이트 왜곡 비용에 기초하여 결정된다. 마지막으로, 단계 717에서, 고전적인 병합 모드와 FRUC 병합 모드 사이의 최상의 모드가 다른 모드들의 가능한 평가 전에 결정된다.
도 8은 인코더측의 FRUC 병합 평가 방법을 도시한다. 각각의 매칭 타입, 즉, 템플릿 매칭 타입 및 양방향 타입에 대해(단계 801), 코딩 유닛 레벨이 먼저 모듈(81)에 의해 평가되고, 그 다음, 모듈(82)에 의한 서브코딩 유닛 레벨 평가가 후속된다. 목표는 현재 코딩 유닛(803)에서 각각의 서브코딩 유닛에 대한 움직임 정보를 발견하는 것이다.
모듈(81)은 코딩 유닛 레벨 평가를 처리한다. 단계 811에서 움직임 정보의 목록이 도출된다. 이 목록의 각각의 움직임 정보에 대해, 단계 812에서 왜곡 비용이 계산되고 서로 비교된다. 템플릿에 대한 최상의 움직임 벡터들 또는 양방향에 대한 최상의 쌍(813)은 비용을 최소화하는 것들이다. 그 다음, 움직임 벡터 정교화 단계(814)가 적용되어 획득된 움직임 벡터의 이 정확도를 향상시킨다. FRUC 방법에서, 템플릿 매칭 추정을 위해 고전적인 이산 코사인 변환 보간 필터(DCTIF) 보간 필터 대신에 쌍선형 보간(bilinear interpolation)이 이용된다. 이것은, 전통적인 DCTIF의 경우인 블록 주변의 7개 픽셀 대신에, 블록 주변의 메모리 액세스를 단지 1개 픽셀로 감소시킨다. 사실상 쌍선형 보간 필터는 한 방향에 대한 서브픽셀 값을 획득하기 위해 단지 2개의 픽셀만을 필요로 한다.
움직임 벡터 정교화 후, 단계 815에서 현재 코딩 유닛에 대한 더 양호한 움직임 벡터가 획득된다. 이 움직임 벡터는 서브코딩 유닛 레벨 평가에 이용된다.
단계 802에서, 현재 코딩 유닛은 수 개의 서브코딩 유닛으로 세분된다. 서브코딩 유닛은, 쿼드 트리 구조(quad tree structure)에서 코딩 유닛의 분할 깊이에 의존하는 정사각형 블록이다. 최소 크기는 4x4이다.
각각의 서브CU에 대해, 서브CU 레벨 평가 모듈(82)은 최상의 움직임 벡터를 평가한다. 단계 815에서 CU 레벨에서 획득된 최상의 움직임 벡터를 포함하는 움직임 벡터 목록이 단계 821에서 도출된다. 각각의 움직임 벡터에 대해, 단계 822에서 왜곡 비용이 평가된다. 그러나, 비용은 또한, 발산하는 움직임 벡터 필드를 피하기 위해 코딩 유닛 레벨에서 획득된 최상의 움직임 벡터와 현재 움직임 벡터 사이의 거리를 나타내는 비용을 포함한다. 최상의 움직임 벡터(823)는 최소 비용에 기초하여 획득된다. 그 다음, 단계 814에서, 이 벡터(823)는 CU 레벨에서 수행되는 것과 동일한 방식으로 MV 정교화 프로세스(824)에 의해 정교화된다.
프로세스의 종료시에, 하나의 매칭 타입에 대해, 각각의 서브CU에 대한 움직임 정보가 획득된다. 인코더측에서, 2개의 매칭 타입 사이의 최상의 RD 비용이 비교되어 최상의 것을 선택한다. 디코더측에서 이 정보는 비트스트림으로부터 디코딩된다(도 6의 단계 608).
FRUC 병합 모드 또는 AMVP의 경우, 코딩 유닛 레벨에 대한 움직임 벡터들의 목록은 서브코딩 유닛 레벨에 대한 목록과는 상이하다. 도 9는, 도 8의 코딩 유닛 레벨 단계(811)에 대한 움직임 벡터 도출 프로세스를 도시한다.
이 프로세스는 각각의 목록 L0 또는 L1에 대해 독립적으로 구현될 수 있다. 이 프로세스는, 기준 프레임의 인덱스(901) 및 코딩 모드가 AMVP인지를 나타내는 플래그(902)에 대응하는 일부 입력을 취한다. 그 다음, 테스트 단계(903)에서, 현재 모드가 AVMVP인지 병합 모드인지가 체크된다. AMVP이라면, 단계 904에서 AMVP 예측자들이 목록에 추가된다. 이들 예측자들은, AMVP 프로세스에서 획득된 좌측, 상방 및 시간 예측자들이다. 이 단계는, 목록에 최대 3개의 예측자를 추가한다.
그 다음, 단계 905에서 움직임 벡터 병합 후보들이 생성된다. 이들 후보들은, 단계 906에서 추가된 ATMVP 후보들을 제외하고, FRUC에 대한 목록에 추가된다. 이들 단계들을 통해, 최대 7개의 새로운 예측자가 추가될 수 있다.
그 다음, 단계 907에서 일방향 예측자들이 목록에 추가된다. 일방향 예측자들은, 각각의 기준 프레임에 대해 4x4 블록 레벨에서 움직임 보간에 기초하여 생성된다. 추가적인 상세사항은 JVET-F1001에서 찾을 수 있다. 이 프로세스는 4x4 블록 레벨에서 보간된 모든 움직임 중 일부 예측자들만을 취한다. 블록의 높이(H) 또는 폭(W)이 4보다 크다면, 2개의 예측자가 추가될 수 있다. 따라서, H와 W 양쪽 모두가 4보다 큰, 크기 HxW의 블록에 대해, 2x2 = 4개의 예측자가 추가될 수 있다. H가 4와 같고 W가 4보다 크다면, 예측자의 수는 1x2 = 2개의 예측자이다. 4x4 블록의 경우, 하나의 예측자만이 추가된다.
결국, 단계 908에서 일부 이웃하는 예측자들이 추가된다. 그러나, 최대 2개의 예측자가 추가된다.
목록에 추가된 각각의 예측자에 대해, 이 예측자가 중복 예측자가 아닌지가 체크된다. 결과적으로, 목록(909)은 상이한 값들을 갖는 예측자들만을 포함한다.
프로세스의 끝에서, 목록(909) 내의 예측자들의 최대 수가 아래의 표에 요약되어 있다:
Figure pct00001
도 10은, 도 8의 단계 821에 대응하는 FRUC를 위한 서브코딩 유닛 레벨에 대한 움직임 벡터 목록 구성을 도시한다. 이 프로세스는 각각의 목록 L0 및 L1에 대해 실행된다.
먼저, 단계 1002에서, 코딩 유닛 레벨에서 획득된 최상의 움직임 벡터(1001)가 목록에 첫 번째 위치에서 추가된다.
두 번째로, 단계 1004에서, 일부 이웃하는 움직임 벡터들은, 기준 프레임의 동일한 인덱스 및 동일한 목록 L0 또는 L1을 갖는다면, 추가된다. 이 프로세스에서, 최대 4개의 움직임 벡터가 추가된다. 이 단계는, 코딩 유닛 레벨에서 최상의 움직임 벡터에 대응하는 기준 프레임의 인덱스(1003)를 필요로 한다.
그 다음, 목록의 각각의 기준 프레임으로부터의 모든 시간적 움직임 벡터들은, 코딩 유닛 레벨에서 획득된 최상의 움직임 벡터의 기준 프레임으로 스케일링되고 단계 1005에서 목록에 추가된다. 목록이 16개의 기준 프레임을 포함할 수 있다고 간주되면, 이 목록에 16개의 추가 예측자가 추가될 수 있다.
결국, 단계 1006에서 ATMP 예측자들이 목록에 추가될 수 있다. 2가지 타입의 ATMVP 예측자가 추가된다. 그러나, 제약이 존재한다: 4x4 서브코딩 유닛의 경우 각각의 타입에 대해 하나의 벡터, 즉, 2개의 예측자만이 추가된다. 더 큰 서브코딩 유닛의 경우, 4개의 예측자가 추가될 수 있다.
코딩 유닛 레벨과 동일한 방식으로, 목록에 추가된 각각의 예측자는 중복 예측자가 아니다. 결과적으로, 목록(1007)은 상이한 값들을 갖는 예측자들만을 포함한다. 이 프로세스는 AMVP에는 적용되지 않는다는 점에 유의한다.
프로세스의 끝에서, 목록(1007) 내의 예측자들의 최대 수가 아래의 표에 요약되어 있다:
Figure pct00002
최악의 디코딩의 경우, 4x4 블록에 대해 테스트된 움직임 벡터의 최대 수는, 코딩 유닛 레벨에서의 예측자들의 최대 수에, 서브코딩 유닛 레벨에서의 예측자들의 최대 수를 더한 값에, 2를 곱한 값에 대응하며, 이를 곱하는 것은 2개의 상이한 목록이 있기 때문이다. 레이트 왜곡 기준에 따라 테스트할 동일한 수의 블록 위치들에 대응하는 최대 52개의 예측자가 생성된다.
이것은, 디코딩을 위해 2개의 블록 위치만이 액세스되는 HEVC에서의 블록의 디코딩에 비해 매우 높다.
템플릿 FRUC 매칭 모드의 경우, 템플릿은, 도 11에서 회색으로 도시된 바와 같이 레이트 왜곡 비용을 추정하는데 이용되는 블록 상방의 4개의 라인 및 블록의 좌측의 4개의 행을 포함한다. FRUC 움직임 벡터 목록의 움직임 벡터 예측자에 대한 레이트 왜곡을 평가하기 위해, 평가된 움직임 벡터 예측자에 의해 참조되는 블록의 대응하는 템플릿에 액세스할 필요가 있다.
도 12는 4x4 블록에 대한 하드웨어 구현에 필요한 블록 메모리 액세스의 일부 예를 도시한다.
다이어그램 121은 FRUC 템플릿을 평가하기 위해 액세스될 필요가 있는 픽셀들을 도시한다. 평가된 움직임 벡터에 의해 참조되는 블록 125를 고려하면, 템플릿 매칭은 회색으로 도시된 좌측 및 상방 블록에 액세스할 필요가 있다. 일부 구현의 경우, 2개의 더 작은 블록 메모리 크기보다 더 큰 블록 메모리 크기에 한 번만 액세스하는 것이 덜 복잡하기 때문에, 백색으로 도시된 상방 좌측 블록의 픽셀들이 또한 액세스된다. 또한, 서브픽셀 위치 및 움직임 벡터 정교화를 계산할 수 있기 위해서, 점선 픽셀들로서 도시된, 이 블록 주변의 하나 이상의 픽셀에 액세스하여 픽셀들의 쌍선형 보간을 생성할 필요가 있다. 따라서, 4x4 블록에 대한 벡터 위치의 경우, 움직임 벡터 정교화를 평가할 필요가 있음을 고려함으로써 (4 + 4 + 2) x(4 + 4 + 2) = 100개 픽셀에 액세스할 필요가 있다. 또는 움직임 벡터 목록 추정에 대한 액세스만을 고려한다면 (4 + 4 + 1) x(4 + 4 + 1) = 81개의 픽셀. 따라서 하나의 벡터의 평가를 위해 현재 블록의 한 픽셀에 대해 100 /(4x4) = 6.25 픽셀들이 액세스되고(움직임 벡터 정교화도 고려하는 경우), 도 8의 단계 812의 움직임 벡터 목록 평가를 위한 현재 블록의 한 픽셀에 대해서는 81/(4x4) ~ = 5개의 픽셀.
그러나, 평가에 엄격히 필요한 픽셀들만이 고려되는 경우 다이어그램 122에 도시된 바와 같이 더 적은 수의 픽셀들 또는 실제로 필요한 픽셀들에 액세스하는 것이 가능할 수 있다. 그러나, 이것은 이러한 버퍼를 설계하기 위해 매우 구체적인 하드웨어 구현을 필요로 한다.
또 다른 가능성은 다이어그램 123에 표시된 바와 같이 템플릿에만 액세스하는 것이다. 이 경우, 상방 블록과 좌측 블록이 2개의 별개의 메모리 액세스로 독립적으로 액세스된다. 이 경우, 움직임 벡터 목록 평가를 위해 5x5x2 = 50개의 픽셀이 액세스될 필요가 있다. 추가 움직임 벡터 정교화를 고려하면 6x6x2 = 72개 픽셀.
양방향 FRUC 매칭 모드의 경우, 템플릿은 움직임 벡터에 의해 참조되는 블록이다. 따라서 목록 내의 하나의 벡터 예측자의 경우, 도 12의 다이어그램 123에 의해 도시된 바와 같이 2개의 블록 위치가 고려된다. 따라서 움직임 벡터 목록 평가만을 고려한다면 5x5x2 = 50개의 픽셀이 액세스될 필요가 있고 추가적인 움직임 벡터 정교화를 고려한다면 6x6x2 = 72개의 픽셀.
양방향 예측을 이용하는 전통적인 움직임 보상의 경우, 각각의 목록에 대해 하나씩 2개의 블록 위치가 액세스될 필요가 있다. DCTIF는 쌍선형보다 긴 필터이므로, 다이어그램 124에 도시된 바와 같이 더 많은 픽셀들이 액세스될 필요가 있다. 이 경우 4x4 블록에 대해, (4 + 7) x(4 + 7) x2 = 242 픽셀들이 4x4 블록에 대해 액세스될 필요가 있다.
아래의 표는, 4x4 블록에 대한 전통적인 병합 모드 및 각각의 매칭 모드에 대한 FRUC 병합 모드의 최악의 경우의 복잡성에 대해 액세스되는 메모리에 관한 일부 숫자를 제공한다. 보고된 바와 같이 FRUC 병합 모드는 전통적인 움직임 보상에 비해 디코더 측에서 필요로 하는 최악의 경우의 메모리 액세스를 크게 증가시킨다.
Figure pct00003
도 8의 단계들 814 및 824의 움직임 벡터 정교화는, 식별된 최상의 예측자(813 또는 823) 주변의 추가 검색에 의해 움직임 벡터 예측자의 정확도를 증가시킨다.
도 13은 이러한 움직임 벡터 정교화를 도시한다.
이 방법은, 목록(812 또는 822)에서 식별된 최상의 움직임 벡터 예측자(1301)를 입력으로서 취한다.
단계 1302에서, 다이아몬드 검색이 1/4 픽셀 위치들에 대응하는 해상도에서 적용된다. 이 다이아몬드 검색은, 최상의 벡터 움직임을 중심으로, 1/4 픽셀 해상도에서의, 다이어그램 131로 도시되어 있다. 이 단계는 1/4 픽셀 해상도에서 새로운 최상의 움직임 벡터(1303)를 야기한다.
이 다이아몬드 검색의 최상의 획득된 움직임 벡터 위치(1303)는, 단계 1304에서 해상도 1/4 픽셀에서의 크로스 검색의 중심이 된다. 이 크로스 검색은, 최상의 벡터 움직임(1303)을 중심으로, 1/4 픽셀 해상도에서의 다이어그램 132로 도시되어 있다. 이 단계는 1/4 픽셀 해상도에서 새로운 최상의 움직임 벡터(1305)를 야기한다.
이 검색 단계(1304)로 획득된 새로운 최상의 움직임 벡터 위치(1305)는, 단계 1306에서 해상도 1/8 픽셀에서의 크로스 검색을 위한 중심이 된다. 이 단계는 1/8 픽셀 해상도에서 새로운 최상의 움직임 벡터(1307)를 야기한다. 다이어그램 133은, 1/8 해상도에서, 모든 위치를 테스트한 이들 3개의 검색 단계를 도시한다.
도 14는 1/4 서브픽셀 그리드 내의 4x4 블록을 나타낸다.
이 도면의 블록 141에서, 오렌지색 픽셀(142)은 픽셀 해상도에서의 픽셀 위치를 나타낸다. 적색 픽셀(143)은 버퍼 내의 픽셀이다. 청색 픽셀(144)은 움직임 벡터에 의해 참조되는 블록의 보간된 픽셀들을 나타낸다. 회색 위치(145)는 정교화된 움직임 벡터의 모든 잠재적 위치를 나타낸다.
움직임 벡터에 의해 서브픽셀 위치로서 참조되는 보간된 블록으로서, 보간을 위해 버퍼에 놓인 픽셀들의 블록의 크기는 픽셀 해상도에서 (4 + 1) x(4 + 1) = 25개 픽셀들의 블록이다. 움직임 벡터 정교화를 위해(단계 814 또는 824), 가능한 서브픽셀 위치는 회색으로 표시된다.
비디오 디코더의 하드웨어 설계는 최악의 경우의 복잡성을 고려해야 한다. 그렇지 않으면, 최악의 경우가 발생할 때 제 시간에 디코딩할 수 없다. FRUC 방법은 메모리 액세스 최악의 경우를 크게 증가시킨다. 그러나, 4x4, 4x8 또는 8x4 블록의 이용을 방지하는 것으로 구성된 메모리 액세스 최악의 경우를 감소시키는 간단한 방법은 코딩 효율성을 크게 감소시킨다.
본 발명의 목적은, 코딩 효율의 저하가 감소된 메모리 액세스에 관한 최악의 경우의 복잡성을 감소시키는 것이다. 이 문제를 해결하기 위한 몇 가지 실시예가 이제 설명될 것이다.
도 15에 도시된 본 발명의 제1 실시예에서, 템플릿 형상은 메모리 액세스를 감소시키도록 감소된다. 백색 픽셀은 고려되는 픽셀들의 블록을 나타내는 반면 회색 픽셀은 FRUC 병합 모드의 템플릿 매칭을 평가하는데 이용되는 템플릿을 나타낸다. 다이어그램 151은 종래 기술을 도시한 반면, 다이어그램 152 내지 156은 제1 실시예의 상이한 변형 또는 상이한 경우들을 도시한다.
다이어그램 151은, 상방 4x4 블록 및 좌측 4x4 블록이 템플릿을 구성하는데 이용되는 4x4 블록에 대한 종래 기술의 템플릿을 도시한다.
이 실시예에서, 다이어그램 152에 의해 도시된 바와 같이 블록이 4x4 블록일 때 템플릿을 구성하기 위해 상방 블록만이 선택된다. 상방 4x4 블록이 존재하지 않는다면, 템플릿은 좌측 블록에 의해 유사하게 구성될 수 있다. 이 실시예에서, 템플릿 크기는 현재 블록의 크기를 초과하지 않는다. 더욱이, 템플릿을 위해 하나의 4x4 블록만이 메모리에 저장될 필요가 있기 때문에, 4x4 블록에 대한 메모리 액세스 최악의 경우는 도 12의 다이어그램 121에 의해 도시된 경우에 81개 픽셀의 버퍼로부터 이 실시예의 경우 (4 + 1) x (4 + 1) = 25개 픽셀로 크게 감소된다.
이 실시예가 4x4 블록에 대해 허용될 때, 8x4 및 4x8 블록이 최악의 경우가 된다. 4x4 블록에 이용된 것과 동일한 아이디어를 이용하여, 다이어그램 154에 도시된 것과 같은 템플릿이 다이어그램 153에 도시된 템플릿 대신에 4x8 블록에 이용될 수 있다. 유사하게, 다이어그램 156에 도시된 것과 같은 템플릿이 다이어그램 155에 도시된 템플릿 대신 8x4 블록에 이용될 수 있다. 템플릿은, 다이어그램 154에 의해 도시된 바와 같이 4x8 블록에 대해 좌측 템플릿으로 및 8x4 블록에 대해 다이어그램 156에 의해 도시된 바와 같이 상방 블록으로 감소된다. 4x4 블록에 대한 것과 동일한 방식으로, 템플릿 크기는 현재 블록의 크기를 초과하지 않는다. 4x4 블록의 경우, 4x8 블록에 대한 좌측 템플릿이나 8x4 블록에 대한 상방 템플릿이 존재하지 않는다면, 다른 템플릿들, 각각 상방 및 좌측 4x4 블록으로 전환하는 것이 가능하다.
이 실시예는, 템플릿이 현재 블록의 크기를 초과할 수 없는 제약으로서 간주될 수 있다.
이 실시예의 메모리 최악의 경우에 대한 결과는 아래의 표에 요약되어 있다.
Figure pct00004
따라서, 이 실시예에서, 최악의 경우의 메모리 액세스는 2.5만큼 감소된다. 모든 4x4, 8x4 및 4x8 블록이 회피되어 동일한 최악의 경우의 감소로 이어지는 명백한 솔루션에 비해, 제안된 실시예는 더 양호한 코딩 효율을 제공한다.
메모리 액세스를 제한하기 위해, 본 발명의 또 다른 실시예에서 채택된 솔루션은, 도 8의 단계들 811 및 821에서 예측자 목록에서 생성된 예측자들의 수를 제한하는 것이다.
한 실시예에서, 단계 811에 의해 생성된 코딩 유닛 레벨 및 단계 821에 의해 생성된 서브코딩 유닛 레벨에서의 목록 내의 예측자들의 수는 종래 기술에서 이용된 후보들의 최대 수보다 낮은 수 N으로 제한된다. 예측자 목록은 평소와 같이 생성되며, 제한은 생성된 목록에서 일부 예측자들을 제거함으로써 획득된다. 목록에서 실제로 제거된 예측자들은, 모드 또는 매칭 타입에 따라 변경된다.
도 16은 제안된 프로세스를 도시한다. 먼저, 종래 기술에서와 같이 단계 1601에서 FRUC 움직임 벡터 목록이 도출된다.
단계 1602에서 테스트되는 바와 같이, 모드가 AMVP이면, 단계 1605에서 목록의 처음 N개의 움직임 벡터가 유지되고 후속되는 것들이 제거된다.
단계 1603에서 테스트되는 바와 같이, 모드가 AMVP가 아니고 FRUC 매칭 타입이 템플릿 매칭이라면, 단계 1604에서 목록의 마지막 N개의 움직임 벡터가 유지되고, 선행하는 것들은 제거된다.
그렇지 않으면, 단계 1605에서 목록의 처음 N개의 움직임 벡터가 유지되고 후속되는 것들이 제거된다.
이 실시예는 적합화될 수 있다는 점에 유의한다. 특히 테스팅 단계들(1603 또는 1602) 중 하나는 생략될 수 있다. 대안적인 실시예에서, 각각의 테스트의 존재는, 코딩 유닛 레벨 또는 서브코딩 유닛 레벨 프로세스에 의존하여 이루어진다. 예를 들어, 테스트(1602)는 CU 레벨에서만 적용되고 테스트(1603)는 서브Cu 레벨에서만 적용된다.
이 실시예는 병합 모드 후보들의 고전적인 도출에 대한 보완을 제공하기 때문에 효율적이다. 이것은 템플릿 매칭 FRUC 모드의 경우 특히 흥미롭다. AMVP의 경우, 첫 번째 예측자들은 AMVP 움직임 벡터 예측자 목록 중의 예측자들이므로 첫 번째 예측자들을 유지하는 것이 중요하다. 그리고, AMVP 모드에서 FRUC의 현재 이용량은, 일종의 가장 가능성있는 예측자의 결정이다. 이것은 FRUC 병합 모드의 경우 상이하다. 따라서, 한 실시예에서, 그것이 고전적인 AMVP 모드와 경쟁하는 AMVP FRUC 모드가 존재한다면, AMVP 모드가 선택된 경우 마지막 N개의 예측자들이 유지되는 반면 AMVP FRUC 모드의 경우 처음 N개의 움직임 벡터 예측자들이 목록에 유지된다.
이 실시예에서, 하드웨어 구현에 흥미로울 수 있는 움직임 벡터 목록을 도출하기 위해 동일한 프로세스가 이용될 수 있지만, 이것은 움직임 벡터의 목록이 매우 길 때 매우 효율적이지 않을 수 있다. 또 다른 실시예에서, 처음 N개의 움직임 벡터는 항상 유지된다. 움직임 벡터 목록 도출 프로세스는, N개의 벡터로 제한된 벡터 목록을 직접 생성하기 위해 일부 파라미터에 따라 변경될 수 있다. 예를 들어, 이들 파라미터들은, 도 16의 제한 프로세스에서 이용되는 파라미터로서 모드 및 매칭 타입일 수 있다.
도 17 및 도 18은 이러한 실시예를 도시한다.
도 9에 도시된 대응하는 프로세스에 비해, 도 17에 도시된 코딩 유닛 레벨에서의 벡터 목록 도출 방법은 목록에서 벡터의 삽입 순서를 변경시킨다. 일방향 예측자들이 평가되고 따라서 단계 1707에서 먼저 삽입된다. 그 다음, 병합 예측자들이 단계 1705 및 1706에서 삽입된다.
도 10에 도시된 대응하는 프로세스에 비해, 도 18에 도시된 서브코딩 유닛 레벨에서의 벡터 목록 도출 방법은 목록에서 벡터의 삽입 순서를 역시 변경시킨다. 단계 1805에서 스케일링된 시간 예측자의 삽입 전에 및 단계 1804에서 이웃하는 예측자들이 삽입되기 전에 단계 1806에서 2가지 타입의 ATMVP 예측자들이 삽입된다.
또 다른 및/또는 추가적인 실시예에서, 스케일링된 움직임 벡터 시간 예측자들은 역순으로 생성된다. 사실상, 이들은, 가장 높은 인덱스를 가진 기준 프레임으로부터 가장 낮은 기준 프레임 인덱스로 추가된다. 처음 N개의 예측자들만이 메모리에 유지될 때, 가장 낮은 기준 프레임 인덱스를 갖는 스케일링된 시간 예측자들을 이용하는 것이 바람직하다. 사실상, 가장 낮은 기준 프레임 인덱스들은 가장 가까운 기준 프레임들을 나타내며, 결과적으로 움직임이 더 관련성이 있어야 한다. 대안적인 실시예에서, 스케일링된 시간 예측자는 가장 가까운 기준 프레임으로부터 가장 먼 기준 프레임까지 추가된다.
이 실시예가 적용되는 경우, ab4x4 블록에 대해 및 코딩 유닛 및 서브코딩 유닛 레벨에 대한 N = 3 예측자들에 대해 아래의 표에 기술된 바와 같이 최악의 경우를 상당히 감소시킨다:
Figure pct00005
템플릿 및 양방향 매칭 양쪽 모두에 대한 최악의 경우가 감소된다는 점에 주목할 가치가 있다.
바람직한 실시예에서, 각각의 예측자 세트에 대한 예측자들의 수는 3과 동일한 N으로 설정된다.
하나의 추가적인 실시예에서, 목록 내의 예측자의 수가 크기 N에 도달하지 않을 때, 일부 가상 예측자들이 추가된다. 일부 알려진 가상 예측자는 오프셋 예측자이다. 오프셋 예측자는, 또 다른 예측자의 수평 및/또는 수직 벡터 성분에, 일반적으로 목록 내의 첫 번째 예측자에 오프셋 값을 더함으로써 획득된다.
한 실시예에서, 병합 및 병합 FRUC에 대한 움직임 벡터 목록은 상이한 순서로 생성된다. 병합 후보 목록은 HEVC에서 최상의 코딩 효율성을 획득하도록 설정되었다. 결과적으로, 가장 가능성있는 예측자가 목록 내의 첫 번째 위치에 설정되도록 움직임 벡터 후보들이 정렬된 것으로 간주될 수 있다. 병합 FRUC 모드는 대개 움직임 정보가 매우 예측가능한 경우에 선택된다. 따라서 병합 목록의 첫 번째 예측자는 일반적으로 HEVC와 함께 선택된다. 병합 FRUC 모드가 인에이블되면, 첫 번째 병합 후보는 덜 선택된다. 따라서 Merge FRUC가 종종 가장 가능성있는 모드를 발견할 수 있다는 점을 고려하여 고전적인 병합 도출에 대해 상이한 순서로 특정한 목록을 갖는 것이 흥미로울 수 있다. 이 실시예는 코딩 효율을 향상시키지만 반드시 최악의 경우 문제를 해결하는 것은 아니라는 점에 유의한다. 이 실시예는 고정된 움직임 벡터 목록 크기를 요구하지 않는다.
도 19는 이 실시예를 도시하며, 이것은 도 4에 의해 도시된 움직임 벡터 도출 프로세스의 변형에 대응한다. 이 경우, 좌측 예측자(1901) 평가는 하방 좌측(1905) 이후에 평가되도록 변위되었다. 따라서, 평가는 시간 예측자 바로 전에 공간적 목록의 끝에 추가된다.
도 20은 이 실시예의 또 다른 가능성을 도시한다. 이 경우, 도 4에 도시된 움직임 벡터 도출 프로세스와 비교할 때, ATMVP 후보들 2019 및 2021의 평가는 도출 프로세스에서 먼저 발생하도록 변위되었다. 결과적으로, 도 9의 단계 906에서 병합 FRUC 모드의 도출에서 존재하지 않는 이들 예측자들은 목록에서 첫 번째 위치를 갖는다. 따라서, 이들은 첫 번째 위치에서 선택될 더 많은 기회를 갖는다. 따라서 FRUC 병합 목록에서 존재하지 않는 이들 후보들은 그들의 인덱스를 인코딩하기 위해 비트가 낮을수록 병합 FRUC에 대한 더 양호한 보완성을 갖는다.
또 다른 대안적인 실시예에서, 시간 예측자 이전에 평가된 모든 후보들은 역순으로 평가된다. 공간 예측자들의 전형적인 평가는: 상방 좌측, 코딩 유닛 레벨에서의 ATMVP, ATMVP 서브코딩 유닛 레벨, 하방 좌측, 상방 우측, 상방 및 좌측이 된다. 물론, 이 실시예는 AMVP FRUC 모드가 존재한다면 적합화될 수 있다.
서브코딩 유닛 도출 프로세스를 위한 새로운 움직임 벡터 목록의 이용은, 최악의 경우에 대한 블록 위치들의 메모리 액세스를 생성한다. 따라서, 서브코딩 유닛 레벨에서 움직임 정보의 새로운 목록을 작성하지 않는 것이 바람직하다.
도 21은 이 실시예를 도 8과 관련하여 도시한다. 이 경우, 도 8의 모듈 821에 대응하는 모듈 2121은, 움직임 벡터 목록의 제1 위치에 있는 코딩 유닛 레벨에서 획득된 최상의 움직임 벡터의 포함으로만 구성된다. 그러나 코딩 유닛 레벨의 경우에 비해 어떠한 새로운 움직임 벡터도 도출되지 않는다. 따라서, 코딩 유닛 레벨에서의 최상의 움직임 벡터만이 각각의 서브코딩 유닛에 대해 평가된다. 이 실시예의 이점은, 메모리 액세스에서의 최악의 경우의 상당한 감소를 위한 작은 코딩 효율 영향이다. 사실상, 단계 2121은, 단계 821에 비해 새로운 메모리 액세스를 필요로 하지 않는다.
이 실시예가 이전의 것과 결합될 때, 코딩 유닛 레벨에서 획득된 최상의 움직임 벡터가 움직임 벡터 정교화에 의해 변경되었을 경우, 예측자들의 수를 증가시키지 않고 예측자들의 수를 N으로 제한시켜 유지하기 위해 하나의 예측자를 제거할 것이 요구된다. 사실상 MV 정교화(2114 또는 814)는, 목록 2111에 비해 새로운 벡터를 생성할 수 있으므로 동일한 양의 벡터를 갖기 위해서는 하나를 제거할 필요가 있다.
한 실시예에서, 이러한 제한은, 최악의 경우에서 메모리 액세스를 감소시키고 다른 코딩 유닛 크기들에 대한 코딩 효율을 감소시키지 않기 위해 작은 블록 크기(CU 크기), 전형적으로는 4x4, 4x8 및 8x4 블록에 대해서만 적용된다.
아래의 표는, 이 실시예가 인에이블될 때 4x4 블록에 대한 전통적인 병합 모드 및 각각의 매칭 모드에 대한 FRUC 병합 모드의 최악의 복잡성에 대해 액세스되는 메모리에 관한 일부 숫자를 제공한다:
Figure pct00006
도 14에 도시된 바와 같이 움직임 벡터 최상의 후보의 정교화는 추가적인 메모리 액세스를 생성한다. 추가 실시예에서, 움직임 벡터 정교화의 잠재적 위치들은 이미 버퍼에 있는 픽셀로 제약된다.
도 22는 이 실시예를 도시한다. 이 도면은 도 14에 기초한다. 도 14에 비해, 이 실시예에서, 움직임 벡터 정교화의 잠재적 위치들은 버퍼(225) 내의 픽셀들로 제약된다. 이것은, 최상의 움직임 벡터(815)의 템플릿을 위해 액세스되는 경우에 비해 새로운 픽셀 위치에 액세스하는 것이 인가되지 않는다는 것을 의미한다. 물론, 구현에 따라, 버퍼는 상이한 픽셀들을 포함할 수 있다. 따라서, 이 실시예에서, 움직임 벡터는, 초기 움직임 벡터 위치의 쌍선형 보간에 요구되는 픽셀들만을 이용하도록 제약된다.
움직임 벡터 위치가 버퍼 외부에 있음을 식별하기 위해, 다음과 같은 조건이 이용될 수 있다:
if((mvCandX >> mvRes != mvCurCenterX >> mvRes ) OR ((mvCandY>> mvRes != mvCurCenterX >> mvRes ))
여기서, (mvCandX, mvCandY)는 움직임 벡터 테스트된 위치이고 (mvCurCenterX, mvCurCenterY)는 초기 블록의 움직임 벡터 또는 이전 정교화 단계의 초기 위치이다. ">>"는 우측 시프트 연산자이다. 그리고, mvRes는 현재 서브픽셀 해상도의 비트 수를 나타낸다. 예를 들어, 현재 해상도가 1/16 픽셀인 경우, mvRes는 4와 같다.
또한 버퍼 내부의 전체 픽셀 위치를 가리키는 검색 위치들을 고려하는 것이 요구된다. 따라서 첫 번째 조건은 다음과 같이 된다:
if( ((mvCandX >> mvRes != mvCurCenterX >> mvRes ) AND (mvCandX % 16 !=0))
OR ((mvCandY >> mvRes != mvCurCenterX >> mvRes ) AND (mvCandY % 16 !=0)))
여기서 "%"는 모듈로 연산자이다.
최대 서브픽셀 해상도가 16번째 서브픽셀이 아니라면 숫자 16이 변경될 수 있다.
mvCurCenterX 또는 mvCurCenterY가 전체-픽셀 해상도인 특별한 경우, 추가적인 라인 버퍼가 mvCurCenterX % 16이 0과 같을 때는 좌측 또는 우측에 있는지, 또는 mvCurCenterY % 16일 때는 상방 또는 하방에 있는지를 결정하는 것이 필요하다. 실제로, 전체 픽셀 해상도에서 블록에 대해 이전 조건이 이용된다면, 어떠한 정교화도 가능하지 않다.
따라서 mvCurCenterX % 16이 0일 때, 테스트된 위치가 우측 라인이 아니라 좌측 라인만을 필요로 하는지를 체크하기 위해 다음과 같은 조건이 추가된다:
((mvCandX >> mvRes) - (mvCurCenterX >> mvRes )) < 0
도 23은 이 실시예에서 이용된 상이한 예시적인 검색 다이어그램을 도시한다.
다이어그램(231)은 도 22의 예에 대해 다이어그램 131에 의해 예시된 다이아몬드 검색 패턴 위치들에 비해 이 실시예에서 제약되는 다이아몬드 검색 패턴 위치들을 도시한다.
이 실시예의 이점은, 도 8의 단계들 814 및 824의 실행에서 어떠한 새로운 메모리 액세스도 요구되지 않는다는 것이다.
이 제약은 테스트된 위치들의 수를 감소시키기 때문에 코딩 효율성을 약간 저하시킨다. 열화를 감소시키기 위해, 회피된 위치들을 대체하도록 일부 위치들이 추가될 수 있다.
이들 위치들을 생성하는 한 가능한 방법은, 2로 나눈 역 오프셋을 중심 위치에 추가하는 것이다. 새로운 mvCandX에 대해 이 값을 얻는 한 가능한 공식은 다음과 같다:
mvCandX = mvCurCenterX - (mvCandX - mvCurCenterX)/2;
다이어그램 232는, 이 실시예에 대한 다이아몬드 검색 결과를 도시한다. 다이어그램 231에 비해 2개의 새로운 픽셀 위치가 추가된다.
위치를 생성하는 또 다른 가능한 방법은, 다이어그램 233에 도시된 바와 같이 다이아몬드 내부의 1/4 픽셀 위치의 모든 위치들을 또는 가능한 메모리 버퍼(234) 내부의 1/4 픽셀에서의 모든 위치들을 추가하는 것이다. 이 경우, 3 단계의 움직임 벡터 정교화(1302, 1304 및 1306)가 이들 실시예에 의해 대체될 수 있다. 코너에 표시된 전체 픽셀 위치도 다이어그램 234로 도시된 바와 같이 테스트된다는 점에도 역시 유의한다.
위치를 생성하는 또 다른 가능한 방법은 다이어그램 231에 비해 다이어그램 235에 표시된 추가 위치를 생성한다.
위치를 생성하는 역시 또 다른 가능한 방법은, 다이어그램 236에 도시된 바와 같이 포인팅된 블록이 버퍼 외부에 있을 때 mvCandX 또는 mvCandY를 버퍼의 최대 전체 픽셀 위치와 동일하게 설정하는 것이다.
한 추가의 실시예에서, 움직임 벡터 정교화는 목록의 각각의 움직임 벡터 예측자에 대해 적용되고 최상의 것이 선택된다. 사실상 이 실시예에서, 움직임 벡터 정교화 프로세스를 위해 새로운 픽셀에 액세스할 필요는 없다. 이 추가의 실시예는 현재 움직임 벡터 FRUC 도출보다 더 양호한 코딩 효율을 제공한다.
한 실시예에서, 움직임 벡터 정교화는 움직임 벡터들을 수반한 다른 코딩 모드에 적용되고 MV 정교화에 관한 제약이 적용된다. 이 실시예는, 예를 들어 양방향 매칭이 이용된다면 임의의 새로운 메모리 액세스없이 코딩 효율을 향상시킨다.
설명된 실시예들의 모든 가능한 조합이 가능하다.
아래의 표는, 모든 제안된 최악의 경우의 감소 방법이 인에이블된 때, 4x4 블록에 대해 전통적인 병합 모드에 대한 및 각각의 매칭 모드에 대한 FRUC 병합 모드의 최악의 경우의 메모리 액세스 복잡도에 대한 일부 숫자를 제공한다.
Figure pct00007
이들 모든 실시예가 N = 3개의 예측자들만으로 인에이블될 때, 최악의 경우는 고전적인 움직임 보상에 대한 현재의 최악의 경우의 2배 미만이다.
도 24는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스(2400)의 개략적인 블록도이다. 컴퓨팅 디바이스(2400)는, 마이크로-컴퓨터, 워크스테이션 또는 경량의 휴대형 디바이스 등의 디바이스일 수 있다. 컴퓨팅 디바이스(2400)는 하기의 것들에 접속된 통신 버스를 포함한다:
- CPU로 표기된, 마이크로 프로세서 등의, 중앙 처리 유닛(2401);
- 본 발명의 실시예들의 방법의 실행가능한 코드를 저장하기 위한, RAM으로 표기된, 랜덤 액세스 메모리(2402) 뿐만 아니라, 본 발명의 실시예들에 따른 이미지의 적어도 일부를 인코딩 또는 디코딩하기 위한 방법을 구현하기 위해 필요한 변수들 및 파라미터들을 기록하도록 적합화된 레지스터들 - 그 메모리 용량은 예를 들어 확장 포트에 접속된 선택사항적 RAM에 의해 확장될 수 있음 -;
- 본 발명의 실시예들을 구현하기 위한 컴퓨터 프로그램을 저장하기 위한, ROM으로 표기된, 판독 전용 메모리(2403);
- 네트워크 인터페이스(2404)는, 전형적으로, 처리될 디지털 데이터가 전송되거나 수신되는 통신 네트워크에 접속된다. 네트워크 인터페이스(2404)는 단일 네트워크 인터페이스이거나, 한 세트의 상이한 네트워크 인터페이스들(예를 들어, 유선 및 무선 인터페이스들, 또는 상이한 종류들의 유선 또는 무선 인터페이스들)로 구성될 수 있다. 데이터 패킷은 전송을 위해 네트워크 인터페이스에 기입되거나, CPU(2401)에서 실행 중인 소프트웨어 애플리케이션의 제어하에서 수신을 위해 네트워크 인터페이스로부터 판독된다;
- 사용자 인터페이스(2405)는 사용자로부터 입력을 수신하거나 사용자에게 정보를 디스플레이하는데 이용될 수 있다;
- HD로 표기된 하드 디스크(2406)는 대용량 저장 디바이스로서 제공될 수 있다;
- I/O 모듈(2407)은, 비디오 소스 또는 디스플레이 등의 외부 디바이스로부터/로 데이터를 수신/전송하는데 이용될 수 있다.
실행가능한 코드는, 판독 전용 메모리(2403), 하드 디스크(2406) 또는 예를 들어 디스크 등의 착탈식 디지털 매체에 저장될 수 있다. 한 변형에 따르면, 프로그램의 실행가능한 코드는, 네트워크 인터페이스(2404)를 통해, 통신 네트워크에 의해 수신되어, 실행되기 전에, 하드 디스크(2406) 등의 통신 디바이스(2400)의 저장 수단들 중 하나에 저장될 수 있다.
중앙 처리 유닛(2401)은 본 발명의 실시예들에 따른 프로그램 또는 프로그램들의 소프트웨어 코드의 명령어들 또는 부분들의 실행을 제어하고 지시하도록 적합화되고, 명령어들은 전술된 저장 수단들 중 하나에 저장된다. 전원이 켜진 후, CPU(2401)는, 예를 들어 프로그램 ROM(2403) 또는 하드 디스크(HD)(2406)로부터 이들 명령어들이 로딩된 후 소프트웨어 애플리케이션에 관련된 메인 RAM 메모리(2402)로부터의 명령어들을 실행할 수 있다. 이러한 소프트웨어 애플리케이션은, CPU(2401)에 의해 실행될 때, 도면 X에 도시된 플로차트들의 단계들이 수행되게 한다.
도면 X에 도시된 알고리즘의 임의의 단계는, PC("Personal Computer"), DSP("Digital Signal Processor") 또는 마이크로제어기 등의 프로그램가능한 컴퓨팅 머신에 의한 한 세트의 명령어들 또는 프로그램의 실행에 의해 소프트웨어로 구현될 수 있다; 또는 머신, 또는 FPGA("Field-Programmable Gate Array") 또는 ASIC("Application-Specific Integrated Circuit") 등의 전용 컴포넌트에 의해, 하드웨어로 구현될 수 있다.
본 발명이 특정한 실시예들을 참조하여 설명되었지만, 본 발명은 특정한 실시예들로 제한되는 것은 아니며, 본 발명의 범위 내에 놓여 있는 수정들이 본 기술분야의 통상의 기술자에게는 명백할 것이다.
단지 예로서 제공되고 첨부된 청구항들에 의해서만 결정되는 본 발명의 범위를 제한하려는 의도는 아닌 전술된 예시적인 실시예들을 참조할 때 많은 추가적인 수정 및 변형들이 본 기술분야의 통상의 기술자들에게 자명할 것이다. 특히, 적절한 경우, 상이한 실시예들로부터의 상이한 피처들은 상호교환될 수 있다.
청구항들에서, 용어 "포함하는"은 다른 요소나 단계를 배제하는 것은 아니며, 부정 관사 "한(a)" 또는 "하나의(an)"는 복수를 배제하지 않는다. 상이한 피처들이 서로 상이한 종속항들에서 인용된다는 단순한 사실이, 이들 피처들의 조합이 유익하게 이용될 수 없다는 것을 나타내는 것은 아니다.

Claims (18)

  1. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 인코딩 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 상기 픽셀들의 블록의 크기가 4x4, 4x8 또는 8x4 픽셀들이라면, 픽셀들에서의 템플릿 크기는 픽셀들에서의 블록 크기보다 작거나 같은 방법.
  2. 제1항에 있어서, 상기 템플릿은 상기 블록의 좌측에 위치한 픽셀들의 블록과 동일한 크기를 갖는 픽셀들의 블록으로 구성되는 방법.
  3. 제1항에 있어서, 상기 템플릿은 상기 블록 상방에 위치한 픽셀들의 블록과 동일한 크기를 갖는 픽셀들의 블록으로 구성되는 방법.
  4. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며; 상기 방법은:
    - 움직임 벡터들의 수를 미리정의된 수로 제한하기 위해 상기 목록에서 일부 움직임 벡터들을 제거하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 제거된 움직임 벡터들은 상기 목록에서 첫 번째 움직임 벡터들인 방법.
  6. 제4항에 있어서, 상기 제거된 움직임 벡터들은 상기 목록에서 마지막 움직임 벡터들인 방법.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서, 상기 움직임 벡터 목록은 미리정의된 수 3으로 제한되는 방법.
  8. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 상기 움직임 벡터 목록을 도출하는 단계는 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하며;
    - 상기 후보들의 제1 목록을 도출하는 단계는 움직임 벡터 병합 후보들의 평가, ATMVP 움직임 벡터 후보들의 평가, 일방향 예측자들의 평가 및 이웃하는 예측자들의 평가를 포함하고;
    - 일방향 예측자들은 상기 움직임 벡터 병합 후보들의 평가 전에 먼저 평가되는 방법.
  9. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 상기 움직임 벡터 목록을 도출하는 단계는 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하며;
    - 상기 후보들의 제1 목록을 도출하는 단계는 ATMVP 후보들의 평가 및 스케일링된 시간 예측자들의 평가를 포함하고;
    - 상기 ATMVP 후보들의 평가는 상기 스케일링된 시간 예측자들의 평가 전에 이루어지는 방법.
  10. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 후보들의 움직임 벡터 목록을 도출하는 단계는 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며;
    - 상기 좌측 공간 예측자의 평가는 상기 상방 좌측 공간 예측자의 평가 후에 발생하는 방법.
  11. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 인코딩 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 후보들의 움직임 벡터 목록을 도출하는 단계는 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며;
    - 상기 ATMVP 예측자들의 평가는 상기 공간 예측자들의 평가 전에 먼저 발생하는 방법.
  12. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 후보들의 움직임 벡터 목록을 도출하는 단계는 픽셀들의 좌측, 상방, 상방 우측, 하방 우측, 및 상방 좌측 블록으로부터의 예측자를 포함하는 공간 예측자들의 평가, ATMVP 예측자들의 평가 및 시간 예측자들의 평가를 포함하며;
    - 상기 예측자들의 평가는 다음과 같은 순서로, 먼저 상기 상방 좌측 공간 예측자, 그 다음 상기 ATMVP 예측자들, 그 다음 상기 하방 좌측 공간 예측자들, 그 다음 상기 상방 우측 공간 예측자, 그 다음 상기 상방 공간 예측자, 그 다음 상기 좌측 공간 예측자들, 그 다음 상기 시간 예측자들로 발생하는 방법.
  13. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    - 움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계를 포함하고, 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초하며;
    - 상기 움직임 벡터 목록을 도출하는 단계는 블록 레벨에서 후보들의 제1 목록을 도출하는 단계 및 서브블록 레벨에서 후보들의 제2 목록을 도출하는 단계를 포함하며;
    - 블록의 크기가 4x4, 4x8 또는 8x4 픽셀들일 때 상기 후보들의 제2 목록은 상기 제1 목록 내의 최상의 후보만을 포함하는 방법.
  14. 제13항에 있어서, 상기 최상의 후보는 레이트 왜곡 비용을 최소화하는 후보인 방법.
  15. 프레임들을 포함하는 비디오 데이터를 디코딩하기 위한 방법으로서, 각각의 프레임은 픽셀들의 블록들로 분할되고, 상기 방법은 픽셀들의 블록에 대해:
    움직임 정보가 디코더측 움직임 벡터 도출 방법에 의해 획득되는 모드를 이용하여 움직임 벡터 예측자들의 움직임 벡터 목록을 도출하는 단계 - 상기 도출은 상기 움직임 벡터들의 가능한 위치들을 정의하는 템플릿에 기초함 -;
    - 최상의 후보를 획득하기 위해 상기 목록 내의 상기 움직임 벡터 예측자들을 평가하는 단계; 및
    - 상기 최상의 후보에 기초하여 서브픽셀 해상도에서 정교화된(refined) 벡터 예측자들을 평가하는 단계
    를 포함하고;
    - 상기 정교화된 벡터 예측자들의 평가는 상기 최상의 후보의 템플릿들 내의 픽셀 값들을 이용하도록 제한되는 방법.
  16. 제15항에 있어서, 상기 최상의 후보는 레이트 왜곡 비용을 최소화하는 후보인 방법.
  17. 프로그램가능한 장치를 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 상기 프로그램가능한 장치에 로딩되고 이에 의해 실행될 때 제1항 내지 제16항 중 어느 한 항에 따른 방법을 구현하기 위한 명령어들의 시퀀스를 포함하는 컴퓨터 프로그램 제품.
  18. 제1항 내지 제16항 중 어느 한 항에 따른 방법을 구현하기 위한 컴퓨터 프로그램의 명령어들을 저장한 컴퓨터-판독가능한 저장 매체.
KR1020197037607A 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치 KR102434319B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227028244A KR102536704B1 (ko) 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1710567.7 2017-06-30
GB1710567.7A GB2563943B (en) 2017-06-30 2017-06-30 Method and apparatus for encoding or decoding video data in FRUC mode with reduced memory accesses
PCT/EP2018/066786 WO2019002136A1 (en) 2017-06-30 2018-06-22 METHOD AND APPARATUS FOR ENCODING OR DECODING FRUC-MODE VIDEO DATA WITH REDUCED MEMORY ACCESS

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227028244A Division KR102536704B1 (ko) 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200031078A true KR20200031078A (ko) 2020-03-23
KR102434319B1 KR102434319B1 (ko) 2022-08-22

Family

ID=59592613

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227028244A KR102536704B1 (ko) 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치
KR1020197037607A KR102434319B1 (ko) 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020227028244A KR102536704B1 (ko) 2017-06-30 2018-06-22 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치

Country Status (8)

Country Link
US (6) US11202076B2 (ko)
EP (1) EP3646596A1 (ko)
JP (2) JP6945654B2 (ko)
KR (2) KR102536704B1 (ko)
CN (6) CN115002478B (ko)
GB (1) GB2563943B (ko)
MA (1) MA50940A (ko)
WO (1) WO2019002136A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563943B (en) 2017-06-30 2021-02-24 Canon Kk Method and apparatus for encoding or decoding video data in FRUC mode with reduced memory accesses
GB2564133B (en) * 2017-07-04 2021-03-17 Canon Kk Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
SG11202007843YA (en) * 2018-03-19 2020-10-29 Qualcomm Inc Improvements to advanced temporal motion vector prediction
US10911768B2 (en) * 2018-07-11 2021-02-02 Tencent America LLC Constraint for template matching in decoder side motion derivation and refinement
WO2020103943A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Using collocated blocks in sub-block temporal motion vector prediction mode
US11196988B2 (en) * 2018-12-17 2021-12-07 Apple Inc. Reference picture management and list construction
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
CN114762330A (zh) 2019-09-22 2022-07-15 北京字节跳动网络技术有限公司 视频的子图片编码和解码
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060055555A (ko) * 2003-09-30 2006-05-23 인텔 코오퍼레이션 규칙적 형태의 모션 검색
JP2007124238A (ja) * 2005-10-27 2007-05-17 Canon Inc 動画像符号化装置及び動画像符号化方法
US9100657B1 (en) * 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US20160021385A1 (en) * 2014-07-17 2016-01-21 Apple Inc. Motion estimation in block processing pipelines

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1152621A1 (en) * 2000-05-05 2001-11-07 STMicroelectronics S.r.l. Motion estimation process and system.
JP2007129370A (ja) * 2005-11-01 2007-05-24 Matsushita Electric Ind Co Ltd 動きベクトル検出装置及び方法
CN102131091B (zh) * 2010-01-15 2013-01-23 联发科技股份有限公司 解码端运动向量导出方法
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
US10075728B2 (en) * 2012-10-01 2018-09-11 Inria Institut National De Recherche En Informatique Et En Automatique Method and device for motion information prediction refinement
US9438925B2 (en) * 2013-12-31 2016-09-06 Vixs Systems, Inc. Video encoder with block merging and methods for use therewith
EP3139605A4 (en) * 2014-04-28 2017-05-17 Panasonic Intellectual Property Corporation of America Encoding method, decoding method, encoding apparatus, and decoding apparatus
CN108028939B (zh) * 2015-09-02 2021-10-15 联发科技股份有限公司 用于视频编解码的解码器侧的运动推导的方法和装置
CN114466193A (zh) * 2016-03-16 2022-05-10 联发科技股份有限公司 视频编码的样式基础的运动向量推导之方法及装置
US10880570B2 (en) * 2016-10-05 2020-12-29 Qualcomm Incorporated Systems and methods of adaptively determining template size for illumination compensation
GB2563943B (en) 2017-06-30 2021-02-24 Canon Kk Method and apparatus for encoding or decoding video data in FRUC mode with reduced memory accesses
GB2564133B (en) * 2017-07-04 2021-03-17 Canon Kk Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
KR20230122686A (ko) * 2018-07-02 2023-08-22 후아웨이 테크놀러지 컴퍼니 리미티드 디코더 측 모션 벡터 정제를 위한 에러 표면 기반 서브픽셀 정밀 정제 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060055555A (ko) * 2003-09-30 2006-05-23 인텔 코오퍼레이션 규칙적 형태의 모션 검색
JP2007124238A (ja) * 2005-10-27 2007-05-17 Canon Inc 動画像符号化装置及び動画像符号化方法
US9100657B1 (en) * 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US20160021385A1 (en) * 2014-07-17 2016-01-21 Apple Inc. Motion estimation in block processing pipelines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S.Lin et al., "TE1: Huawei report on DMVD improvements", (JCTVC-B037), JCT-VC of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 2nd Meeting: Geneva, CH, (2010.07.28) *

Also Published As

Publication number Publication date
CN111133759B (zh) 2022-06-24
CN115002479A (zh) 2022-09-02
CN115002481B (zh) 2024-03-12
US11595659B2 (en) 2023-02-28
CN111133759A (zh) 2020-05-08
EP3646596A1 (en) 2020-05-06
CN115002478B (zh) 2024-03-12
GB2563943A (en) 2019-01-02
US11979578B2 (en) 2024-05-07
US20200221097A1 (en) 2020-07-09
GB2563943B (en) 2021-02-24
KR20220119755A (ko) 2022-08-30
CN115002479B (zh) 2024-03-12
US11979580B2 (en) 2024-05-07
CN115037946B (zh) 2024-03-12
JP2020522913A (ja) 2020-07-30
JP7261275B2 (ja) 2023-04-19
CN115002481A (zh) 2022-09-02
US20230179773A1 (en) 2023-06-08
MA50940A (fr) 2020-05-06
KR102536704B1 (ko) 2023-05-26
US11979579B2 (en) 2024-05-07
US20230188724A1 (en) 2023-06-15
US11202076B2 (en) 2021-12-14
US20230262228A1 (en) 2023-08-17
CN115037946A (zh) 2022-09-09
WO2019002136A1 (en) 2019-01-03
KR102434319B1 (ko) 2022-08-22
CN115002478A (zh) 2022-09-02
US20230188723A1 (en) 2023-06-15
CN115002480A (zh) 2022-09-02
CN115002480B (zh) 2024-03-12
JP2022008349A (ja) 2022-01-13
JP6945654B2 (ja) 2021-10-06
GB201710567D0 (en) 2017-08-16
US11979581B2 (en) 2024-05-07
US20220141467A1 (en) 2022-05-05

Similar Documents

Publication Publication Date Title
KR102434319B1 (ko) 메모리 액세스가 감소된 fruc 모드에서 비디오 데이터를 인코딩 또는 디코딩하기 위한 방법 및 장치
US11849142B2 (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
GB2595195A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
GB2595194A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
GB2588563A (en) Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant