KR20210058906A - 비디오 코딩을 위한 모션 벡터 예측자 인덱스 코딩 - Google Patents

비디오 코딩을 위한 모션 벡터 예측자 인덱스 코딩 Download PDF

Info

Publication number
KR20210058906A
KR20210058906A KR1020217010886A KR20217010886A KR20210058906A KR 20210058906 A KR20210058906 A KR 20210058906A KR 1020217010886 A KR1020217010886 A KR 1020217010886A KR 20217010886 A KR20217010886 A KR 20217010886A KR 20210058906 A KR20210058906 A KR 20210058906A
Authority
KR
South Korea
Prior art keywords
motion vector
vector predictor
index
list
merge
Prior art date
Application number
KR1020217010886A
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
Priority claimed from GBGB1815443.5A external-priority patent/GB201815443D0/en
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20210058906A publication Critical patent/KR20210058906A/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

모션 벡터 예측자 인덱스, 특히 머지 인덱스를 인코딩하는 방법은 모션 벡터 예측자 후보들, 특히 머지 후보들의 리스트를 생성하는 단계를 포함한다. 리스트는 ATMVP 후보를 포함한다. 리스트에서의 모션 벡터 예측자 후보들 중 하나가 선택된다. 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스가 CABAC 코딩을 사용하여 생성된다. 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩된다. 예를 들어, 모션 벡터 예측자 인덱스의 제1 비트만이 단일 컨텍스트를 사용하여 CABAC 코딩된다.

Description

비디오 코딩을 위한 모션 벡터 예측자 인덱스 코딩
본 발명은 비디오 코딩 및 디코딩에 관한 것이다.
최근에, JVET(Joint Video Experts Team), MPEG 및 ITU-T Study Group 16의 VCEG에 의해 형성된 협력형 팀은 VVC(Versatile Video Coding)로서 지칭되는 새로운 비디오 코딩 표준에 대한 작업을 시작했다. VVC의 목표는 기존의 HEVC 표준(즉, 전형적으로 이전보다 2배)에 비해 압축 성능의 상당한 개선을 제공하고 2020년에 완료되어야 하는 것이다. 주요 타겟 애플리케이션들 및 서비스들은 360도 및 HDR(high-dynamic-range) 비디오들을 포함하지만, 이들에 제한되지 않는다. 전체적으로, JVET는 독립적인 테스트 연구소들에 의해 수행되는 공식적인 주관적 테스트들을 사용하여 32개의 조직으로부터의 응답들을 평가했다. 일부 제안들은 HEVC를 사용하는 것과 비교할 때 전형적으로 40% 이상의 압축 효율 이득들을 예증했다. UHD(ultra-high definition) 비디오 테스트 재료에 대해 특정의 유효성이 보여졌다. 따라서, 최종 표준에 대해 타겟팅된 50%를 훨씬 넘은 압축 효율 이득들을 예상할 수 있다.
JEM(JVET exploration model)은 모든 HEVC 툴들을 사용한다. HEVC에 존재하지 않는 추가의 툴은 모션 보상을 적용할 때 '아핀 모션 모드'를 사용하는 것이다. HEVC에서의 모션 보상은 변환들로 제한되지만, 실제로는 많은 종류의 모션, 예를 들어, 주밍(zoom) 인/아웃, 회전, 원근 모션들 및 다른 불규칙한 모션들이 존재한다. 아핀 모션 모드를 이용할 때, 이러한 형태의 모션을 보다 정확하게 예측하려고 시도하기 위해 블록에 보다 복잡한 변환이 적용된다.
HEVC에 존재하지 않는 다른 툴은 ATMVP(Alternative Temporal Motion Vector Prediction)를 사용하는 것이다. ATMVP(alternative temporal motion vector prediction)는 특정 모션 보상이다. 시간 참조 프레임으로부터 현재 블록에 대한 하나의 모션 정보만을 고려하는 대신에, 각각의 병치된 블록의 각각의 모션 정보가 고려된다. 따라서, 이러한 시간적 모션 벡터 예측은 각각의 서브 블록의 관련 모션 정보를 갖는 현재 블록의 세그먼테이션을 제공한다. 현재의 VTM 참조 소프트웨어에서, ATMVP는 머지(merge) 후보들의 리스트에 삽입된 머지 후보로서 시그널링된다. ATMVP가 SPS 레벨에서 인에이블될 때, 머지 후보들의 최대 수는 1만큼 증가된다. 따라서 이 모드가 디스에이블될 때 6개 후보가 5개 대신 고려된다.
후술하는 이러한 툴들 및 다른 툴들은 머지 후보들의 리스트 중에서 어느 머지 후보가 선택되는지를 시그널링하는 데 사용되는 머지 인덱스(Merge index)의 코딩의 복잡도 및 코딩 효율에 관한 문제들을 불러 일으키고 있다.
따라서, 전술된 문제들 중 적어도 하나에 대한 솔루션이 바람직하다.
본 발명의 제1 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스(머지 인덱스)를 생성하는 단계- 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -.
일 실시예에서, 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 코딩된다.
본 발명의 제2 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 디코딩된다.
본 발명의 제3 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스(머지 인덱스)를 생성하는 수단- 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨 -.
본 발명의 제4 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제5 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 모션 벡터 예측자 인덱스의 2 이상의 비트는 동일한 컨텍스트를 공유함 -.
일 실시예에서, 모션 벡터 예측자 인덱스의 모든 비트는 동일한 컨텍스트를 공유한다.
본 발명의 제6 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 모션 벡터 예측자 인덱스의 2 이상의 비트는 동일한 컨텍스트를 공유함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 모션 벡터 예측자 인덱스의 모든 비트는 동일한 컨텍스트를 공유한다.
본 발명의 제7 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 모션 벡터 예측자 인덱스의 2 이상의 비트는 동일한 컨텍스트를 공유함 -.
본 발명의 제8 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 모션 벡터 예측자 인덱스의 2 이상의 비트는 동일한 컨텍스트를 공유함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제9 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에 이웃하는 적어도 하나의 블록의 모션 벡터 예측자 인덱스에 의존함 -.
일 실시예에서, 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 적어도 2개의 이웃 블록의 각각의 모션 벡터 예측자 인덱스에 의존한다.
다른 실시예에서, 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 좌측에 있는 좌측 이웃 블록의 모션 벡터 예측자 인덱스에 그리고 현재 블록 위에 있는 상부 이웃 블록의 모션 벡터 예측자 인덱스에 의존한다.
다른 실시예에서, 좌측 이웃 블록은 A2이고, 상부 이웃 블록은 B3이다.
다른 실시예에서, 좌측 이웃 블록은 A1이고 상부 이웃 블록은 B1이다.
다른 실시예에서, 컨텍스트 변수는 3개의 상이한 가능한 값을 갖는다.
다른 실시예는 적어도 하나의 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스의 인덱스 값과 비교하고 비교 결과에 의존하여 상기 컨텍스트 변수를 설정하는 것을 포함한다.
다른 실시예는 적어도 하나의 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스에서의 비트 또는 하나의 상기 비트의 비트 위치를 나타내는 파라미터와 비교하고 비교 결과에 의존하여 상기 컨텍스트 변수를 설정하는 것을 포함한다.
또 다른 실시예는 다음을 포함한다: 제1 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스에서의 비트 또는 하나의 상기 비트의 비트 위치를 나타내는 파라미터와 비교하는 제1 비교를 하는 것; 제2 이웃 블록의 모션 벡터 예측자 인덱스를 상기 파라미터와 비교하는 제2 비교를 하는 것; 및 제1 비교 및 제2 비교의 결과들에 따라 상기 컨텍스트 변수를 설정하는 것.
본 발명의 제10 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에 이웃하는 적어도 하나의 블록의 모션 벡터 예측자 인덱스에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 적어도 2개의 이웃 블록의 각각의 모션 벡터 예측자 인덱스에 의존한다.
다른 실시예에서, 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 좌측에 있는 좌측 이웃 블록의 모션 벡터 예측자 인덱스에 그리고 현재 블록 위에 있는 상부 이웃 블록의 모션 벡터 예측자 인덱스에 의존한다.
다른 실시예에서, 좌측 이웃 블록은 A2이고, 상부 이웃 블록은 B3이다.
다른 실시예에서, 좌측 이웃 블록은 A1이고 상부 이웃 블록은 B1이다.
다른 실시예에서, 컨텍스트 변수는 3개의 상이한 가능한 값을 갖는다.
다른 실시예는 적어도 하나의 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스의 인덱스 값과 비교하고 비교 결과에 의존하여 상기 컨텍스트 변수를 설정하는 것을 포함한다.
다른 실시예는 적어도 하나의 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스에서의 비트 또는 하나의 상기 비트의 비트 위치를 나타내는 파라미터와 비교하고 비교 결과에 의존하여 상기 컨텍스트 변수를 설정하는 것을 포함한다.
또 다른 실시예는 다음을 포함한다: 제1 이웃 블록의 모션 벡터 예측자 인덱스를 현재 블록의 모션 벡터 예측자 인덱스에서의 비트 또는 하나의 상기 비트의 비트 위치를 나타내는 파라미터와 비교하는 제1 비교를 하는 것; 제2 이웃 블록의 모션 벡터 예측자 인덱스를 상기 파라미터와 비교하는 제2 비교를 하는 것; 및 제1 비교 및 제2 비교의 결과들에 따라 상기 컨텍스트 변수를 설정하는 것.
본 발명의 제11 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에 이웃하는 적어도 하나의 블록의 모션 벡터 예측자 인덱스에 의존함 -.
본 발명의 제12 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에 이웃하는 적어도 하나의 블록의 모션 벡터 예측자 인덱스에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제13 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 현재 블록의 스킵 플래그에 의존함 -.
본 발명의 제14 양태에 따르면 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 모션 벡터 예측자 인덱스의 디코딩 이전에 이용가능한 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -.
본 발명의 제15 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에서의 모션의 복잡도의 표시자인 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -.
본 발명의 제16 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 현재 블록의 스킵 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제17 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 모션 벡터 예측자 인덱스의 디코딩 이전에 이용가능한 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제18 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에서의 모션의 복잡도의 표시자인 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제19 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 현재 블록의 스킵 플래그에 의존함 -.
본 발명의 제20 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 모션 벡터 예측자 인덱스의 디코딩 이전에 이용가능한 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -.
본 발명의 제21 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에서의 모션의 복잡도의 표시자인 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -.
본 발명의 제22 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 현재 블록의 스킵 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제23 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 모션 벡터 예측자 인덱스의 디코딩 이전에 이용가능한 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제24 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록에서의 모션의 복잡도의 표시자인 상기 현재 블록의 다른 파라미터 또는 신택스 요소에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제25 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -.
일 실시예에서, 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존한다.
본 발명의 제26 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존한다.
본 발명의 제27 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -.
본 발명의 제28 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제29 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -.
본 발명의 제30 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제31 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -.
본 발명의 제32 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제33 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 스킵 플래그 및 아핀 플래그 중 적어도 하나의 컨텍스트 변수로부터 도출됨 -.
본 발명의 제34 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 스킵 플래그 및 아핀 플래그 중 적어도 하나의 컨텍스트 변수로부터 도출됨 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제35 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 스킵 플래그 및 아핀 플래그 중 적어도 하나의 컨텍스트 변수로부터 도출됨 -.
본 발명의 제36 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 현재 블록의 스킵 플래그 및 아핀 플래그 중 적어도 하나의 컨텍스트 변수로부터 도출됨 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제37 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 단지 2개의 상이한 가능한 값을 가짐 -.
본 발명의 제38 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 단지 2개의 상이한 가능한 값을 가짐 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
본 발명의 제39 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 단지 2개의 상이한 가능한 값을 가짐 -.
본 발명의 제40 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 단지 2개의 상이한 가능한 값을 가짐 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제41 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스는 리스트에서의 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -.
일 실시예에서, 모션 벡터 예측자 인덱스는 머지 인덱스이다.
본 발명의 제42 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스는 리스트에서의 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 모션 벡터 예측자 인덱스는 머지 인덱스이다.
본 발명의 제43 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스는 리스트에서의 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -.
본 발명의 제44 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스는 리스트에서의 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 제45 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 모션 벡터 예측자 인덱스는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -.
일 실시예에서, 모션 벡터 예측자 인덱스는 머지 인덱스이다.
본 발명의 제46 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 모션 벡터 예측자 인덱스는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 단계.
일 실시예에서, 모션 벡터 예측자 인덱스는 머지 인덱스이다.
본 발명의 제47 양태에 따르면, 모션 벡터 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
리스트에서 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
CABAC 코딩을 사용하여 선택된 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 모션 벡터 예측자 인덱스는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -.
본 발명의 제48 양태에 따르면, 모션 벡터 예측자 인덱스를 디코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다:
아핀 모션 벡터 예측자 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
CABAC 디코딩을 사용하여 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 모션 벡터 예측자 인덱스는 현재 블록 및/또는 현재 블록에 이웃하는 적어도 하나의 블록의 아핀 플래그에 의존함 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 또 다른 양태들은 컴퓨터 또는 프로세서에 의해 실행될 때 컴퓨터 또는 프로세서로 하여금 전술한 양태들의 방법들 중 임의의 것을 수행하게 하는 프로그램들에 관한 것이다. 프로그램은 자체적으로 제공될 수 있거나, 캐리어 매체 상에서, 캐리어 매체에 의해 또는 캐리어 매체 내에서 운반될 수 있다. 캐리어 매체는 비일시적, 예를 들어, 저장 매체, 특히 컴퓨터 판독가능 저장 매체일 수 있다. 캐리어 매체는 또한 일시적일 수 있는데, 예를 들어, 신호 또는 다른 송신 매체일 수 있다. 신호는 인터넷을 포함하는 임의의 적절한 네트워크를 통해 송신될 수 있다.
본 발명의 또 다른 양태들은 전술한 디바이스 양태들 중 임의의 것에 따른 디바이스를 포함하는 카메라에 관한 것이다. 일 실시예에서, 카메라는 주밍(zooming) 수단을 추가로 포함한다.
일 실시예에서, 카메라는 상기 주밍 수단이 동작적인 때를 표시하고, 주밍 수단이 동작적이라는 상기 표시에 의존하여 아핀 모드를 시그널링하도록 적응된다.
다른 실시예에서, 카메라는 패닝(panning) 수단을 추가로 포함한다.
다른 실시예에서, 카메라는 상기 패닝 수단이 동작적인 때를 표시하고 패닝 수단이 동작적이라는 상기 표시에 따라 아핀 모드를 시그널링하도록 적응된다.
본 발명의 또 다른 양태에 따르면, 위의 카메라 양태들 중 임의의 것을 구현하는 카메라를 포함하는 모바일 디바이스가 제공된다.
일 실시예에서, 모바일 디바이스는 모바일 디바이스의 배향에서의 변화를 감지하도록 적응되는 적어도 하나의 위치 센서를 추가로 포함한다.
일 실시예에서, 모바일 디바이스는 상기 모바일 디바이스의 배향에서의 변화를 감지하는 것에 의존하여 아핀 모드를 시그널링하도록 적응된다.
본 발명의 다른 특징들은 다른 독립 청구항 및 종속 청구항에 의해 특징지어진다.
본 발명의 일 양태에서의 임의의 특징은 임의의 적절한 조합으로 본 발명의 다른 양태들에 적용될 수도 있다. 특히, 방법 양태들은 장치 양태들에 적용될 수도 있고, 그 반대의 경우도 가능하다.
또한, 하드웨어에서 구현된 특징들은 소프트웨어에서 구현될 수도 있고, 그 반대의 경우도 가능하다. 본 명세서에서 소프트웨어 및 하드웨어 특징들에 대한 임의의 언급은 이에 따라 해석되어야 한다.
본 명세서에 설명된 임의의 장치 특징은 또한 방법 특징으로서 제공될 수 있고, 그 반대도 가능하다. 본 명세서에서 사용되는 바와 같이, 수단 플러스 기능 특징들은 적절히 프로그래밍된 프로세서 및 연관된 메모리와 같은 그들의 대응하는 구조에 관하여 대안적으로 표현될 수 있다.
본 발명의 임의의 양태들에서 설명되고 정의된 다양한 특징들의 특정 조합들은 독립적으로 구현 및/또는 공급 및/또는 사용될 수 있다는 것이 또한 이해되어야 한다.
이제, 예로서 첨부도면들에 대해 언급이 이루어질 것이다.
도 1은 HEVC에서 사용되는 코딩 구조를 설명하기 위해 사용하기 위한 도면이다.
도 2는 본 발명의 하나 이상의 실시예가 구현될 수 있는 데이터 통신 시스템을 개략적으로 도시하는 블록도이다.
도 3은 본 발명의 하나 이상의 실시예가 구현될 수 있는 처리 디바이스의 컴포넌트들을 도시하는 블록도이다.
도 4는 본 발명의 실시예들에 따른 인코딩 방법의 단계들을 도시하는 흐름도이다.
도 5는 본 발명의 실시예들에 따른 디코딩 방법의 단계들을 도시하는 흐름도이다.
도 6a 및 도 6b는 모션 벡터 예측자들을 생성하기 위해 사용될 수 있는 공간적 및 시간적 블록들을 도시한다.
도 7은 AMVP 예측자 세트 도출의 프로세스의 간략화된 단계들을 도시한다.
도 8은 머지 모드들의 모션 벡터 도출 프로세스의 개략도이다.
도 9는 현재 블록의 세그먼테이션 및 시간적 모션 벡터 예측을 도시한다.
도 10의 (a)는 HEVC에 대한, 또는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때의 머지 인덱스의 코딩을 도시한다.
도 10의 (b)는 ATMVP가 SPS 레벨에서 인에이블될 때의 머지 인덱스의 코딩을 도시한다.
도 11의 (a)는 간단한 아핀 모션 필드를 도시한다.
도 11의 (b)는 더 복잡한 아핀 모션 필드를 도시한다.
도 12는 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다.
도 13은 머지 후보들 도출을 도시하는 흐름도이다.
도 14는 본 발명의 제1 실시예를 도시하는 흐름도이다.
도 15는 본 발명의 제12 실시예에서 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다.
도 16은 본 발명의 제12 실시예에서 머지 후보들의 리스트를 생성하는 것을 도시하는 흐름도이다.
도 17은 본 발명의 실시예들에서 사용하기에 적합한 CABAC 인코더를 설명하기 위해 사용하기 위한 블록도이다.
도 18은 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스의 개략적인 블록도이다.
도 19는 컴퓨팅 디바이스의 개략적인 블록도이다.
도 20은 네트워크 카메라 시스템을 도시하는 도면이다.
도 21은 스마트 폰을 도시하는 도면이다.
아래에 설명되는 본 발명의 실시예들은 CABAC를 사용하여 인덱스들의 인코딩 및 디코딩을 개선하는 것에 관한 것이다. 실시예들을 설명하기 전에, 비디오 인코딩 및 디코딩 기술들 및 관련 인코더들 및 디코더들이 설명될 것이다.
도 1은 고효율 비디오 코딩(HEVC) 비디오 표준에서 사용되는 코딩 구조에 관한 것이다. 비디오 시퀀스(1)는 일련의 디지털 이미지 i로 구성된다. 각각의 이러한 디지털 이미지는 하나 이상의 매트릭스에 의해 표현된다. 행렬 계수들은 픽셀들을 나타낸다.
시퀀스의 이미지(2)는 슬라이스(3)로 분할될 수 있다. 슬라이스는 일부 경우들에서 전체 이미지를 구성할 수 있다. 이러한 슬라이스들은 비중첩 CTU들(Coding Tree Units)로 분할된다. CTU(Coding Tree Unit)는 HEVC(High Efficiency Video Coding) 비디오 표준의 기본 처리 유닛이며, 개념적으로 몇몇 이전 비디오 표준들에서 사용되었던 매크로블록 유닛들에 대한 구조에 대응한다. CTU는 또한 때때로 LCU(Largest Coding Unit)로서 지칭된다. CTU는 루마 및 크로마 성분 부분들을 가지며, 이러한 성분 부분들 각각은 코딩 트리 블록(CTB)이라고 불린다. 이러한 상이한 컬러 성분들은 도 1에 도시되지 않는다.
CTU는 일반적으로 HEVC에 대해 64 픽셀 x 64 픽셀의 크기를 갖지만, VVC에 대해 이 크기는 128 픽셀 x 128 픽셀일 수 있다. 각각의 CTU는 쿼드트리 분해(quadtree decomposition)를 사용하여 차례로 반복적으로 더 작은 가변 크기의 코딩 유닛들(Coding Units)(CUs)(5)로 분할될 수 있다.
코딩 유닛들은 기본 코딩 요소들이고 예측 유닛(PU) 및 변환 유닛(TU)이라고 불리는 2 종류의 서브-유닛에 의해 구성된다. PU 또는 TU의 최대 크기는 CU 크기와 동일하다. 예측 유닛은 픽셀들 값들의 예측을 위한 CU의 파티션에 대응한다. 4개의 정사각형 PU로의 파티션 및 2개의 직사각형 PU로의 2개의 상이한 파티션을 포함하는 606으로 도시된 바와 같이 CU의 PU들로의 다양한 상이한 파티션들이 가능하다. 변환 유닛은 DCT를 사용하여 공간 변환을 받은 기본 유닛이다. CU는 쿼드트리 표현(607)에 기초하여 TU들로 파티셔닝될 수 있다.
각각의 슬라이스는 하나의 NAL(Network Abstraction Layer) 유닛에 내장된다. 또한, 비디오 시퀀스의 코딩 파라미터들은 파라미터 세트들이라 불리는 전용 NAL 유닛들에 저장될 수 있다. HEVC 및 H.264/AVC에서, 2 종류의 파라미터 세트 NAL 유닛들이 이용된다: 첫째로, 전체 비디오 시퀀스 동안에 변하지 않은 모든 파라미터들을 모은 시퀀스 파라미터 세트(SPS) NAL 유닛. 통상적으로, 이는 코딩 프로파일, 비디오 프레임들의 크기 및 기타의 파라미터들을 취급한다. 둘째로, PPS(Picture Parameter Set) NAL 유닛은 시퀀스의 하나의 이미지(또는 프레임)로부터 다른 이미지로 변경될 수 있는 파라미터들을 포함한다. HEVC는 또한 비트스트림의 전체 구조를 설명하는 파라미터들을 포함하는 비디오 파라미터 세트(VPS) NAL 유닛을 포함한다. VPS는 HEVC에서 정의된 새로운 타입의 파라미터 세트이고, 비트스트림의 레이어들 모두에 적용된다. 레이어는 다수의 시간적 서브-레이어를 포함할 수 있고, 모든 버전 1 비트스트림들은 단일 레이어로 제한된다. HEVC는 멀티뷰 및 스케일러빌러티(scalability)를 위한 특정 레이어화된 확장들을 가지며, 이들은 역방향 호환가능한 버전 1 베이스 레이어를 갖는 다수의 레이어를 가능하게 할 것이다.
도 2는 본 발명의 하나 이상의 실시예가 구현될 수 있는 데이터 통신 시스템을 나타낸다. 데이터 통신 시스템은 데이터 통신 네트워크(200)를 통해 데이터 스트림의 데이터 패킷들을 수신 디바이스[이 경우에, 클라이언트 단말(202)]로 송신하는 동작을 하는 송신 디바이스[이 경우에, 서버(201)]를 포함한다. 데이터 통신 네트워크(200)는 WAN(Wide Area Network) 또는 LAN(Local Area Network)일 수 있다. 이러한 네트워크는, 예를 들어, 무선 네트워크(WiFi/802.11a 또는 b 또는 g), 이더넷 네트워크, 인터넷 네트워크, 또는 몇 개의 상이한 네트워크들로 이루어진 혼합형 네트워크일 수 있다. 본 발명의 특정의 실시예에서, 데이터 통신 시스템은 서버(201)가 동일한 데이터 콘텐츠를 다수의 클라이언트로 전송하는 디지털 텔레비전 방송 시스템일 수 있다.
서버(201)에 의해 제공되는 데이터 스트림(204)은 비디오 및 오디오 데이터를 나타내는 멀티미디어 데이터로 이루어져 있을 수 있다. 본 발명의 일부 실시예들에서, 오디오 및 비디오 데이터 스트림들은 각각 마이크 및 카메라를 사용하여 서버(201)에 의해 캡처될 수 있다. 일부 실시예들에서, 데이터 스트림들은 서버(201)에 저장되거나 다른 데이터 제공자로부터 서버(201)에 의해 수신되거나, 또는 서버(201)에서 발생될 수 있다. 서버(201)는 특히 인코더에 입력으로서 제시되는 데이터의 보다 콤팩트한 표현인 송신을 위한 압축된 비트스트림을 제공하기 위해 비디오 및 오디오 스트림들을 인코딩하는 인코더를 구비한다.
송신된 데이터의 품질 대 송신된 데이터의 양에 대한 보다 나은 비를 획득하기 위해, 비디오 데이터의 압축은, 예를 들어, HEVC 포맷 또는 H.264/AVC 포맷을 따를 수 있다.
클라이언트(202)는 송신된 비트스트림을 수신하고, 디스플레이 디바이스 상에서 비디오 이미지들을 그리고 라우드 스피커에 의해 오디오 데이터를 재생하기 위해 재구성된 비트스트림을 디코딩한다.
도 2의 예에서 스트리밍 시나리오가 고려되지만, 본 발명의 일부 실시예들에서, 인코더와 디코더 사이의 데이터 통신이, 예를 들어, 광 디스크 등의 미디어 저장 디바이스를 사용하여 수행될 수 있다는 것을 잘 알 것이다.
본 발명의 하나 이상의 실시예에서, 비디오 이미지가 최종 이미지에서 필터링된 픽셀들을 제공하기 위해 이미지의 재구성된 픽셀들에 적용하기 위한 보상 오프셋들을 나타내는 데이터와 함께 송신된다.
도 3은 본 발명의 적어도 하나의 실시예를 구현하도록 구성되는 처리 디바이스(300)를 개략적으로 도시한다. 처리 디바이스(300)는 마이크로컴퓨터, 워크스테이션, 또는 경량 휴대용 디바이스 등의 디바이스일 수 있다. 디바이스(300)는 통신 버스(313)를 포함하고, 이 통신 버스는:
-CPU로 표시된 마이크로프로세서 등의 중앙 처리 유닛(311);
-본 발명을 구현하는 컴퓨터 프로그램들을 저장하는, ROM으로 표시된 판독 전용 메모리(306);
-본 발명의 실시예들의 방법의 실행가능 코드뿐만 아니라 디지털 이미지들의 시퀀스를 인코딩하는 방법 및/또는 본 발명의 실시예들에 따른 비트스트림을 디코딩하는 방법을 구현하기 위해 필요한 변수들 및 파라미터들을 기록하도록 적응되는 레지스터들을 저장하기 위한, RAM으로 표시되는 랜덤 액세스 메모리(312); 및
-통신 네트워크(303)(처리될 디지털 데이터가 이를 통해 송신되거나 수신됨)에 접속된 통신 인터페이스(302)에 접속된다.
선택적으로, 장치(300)는 또한 다음의 컴포넌트들을 포함할 수 있다:
-본 발명의 하나 이상의 실시예의 방법들을 구현하기 위한 컴퓨터 프로그램들 및 본 발명의 하나 이상의 실시예의 구현 동안 사용되거나 생성되는 데이터를 저장하기 위한, 하드 디스크와 같은 데이터 저장 수단(304);
-디스크(306)를 위한 디스크 드라이브(305)- 디스크 드라이브는 디스크(306)로부터 데이터를 판독하거나 상기 디스크에 데이터를 기입하도록 적응됨 -;
-키보드(310) 또는 임의의 다른 포인팅 수단에 의해, 데이터를 디스플레이하고 및/또는 사용자와의 그래픽 인터페이스로서 역할을 하기 위한 스크린(309).
장치(300)는, 예를 들어, 디지털 카메라(320) 또는 마이크로폰(308) 등의 다양한 주변 장치들에 접속될 수 있고, 각각은 멀티미디어 데이터를 장치(300)에 제공하기 위해 입력/출력 카드(도시되지 않음)에 접속되어 있다.
통신 버스는 장치(300)에 포함되거나 이에 접속되는 다양한 요소들 사이에 통신 및 상호운용성을 제공한다. 버스의 표현은 제한하는 것이 아니며, 특히, 중앙 처리 유닛은 명령어들을 직접 또는 장치(300)의 다른 요소에 의해 장치(300)의 임의의 요소로 전달하는 동작을 한다.
디스크(306)는, 예를 들어, 콤팩트 디스크(CD-ROM)(재기입가능하거나 그렇지 않음), ZIP 디스크 또는 메모리 카드 등의 임의의 정보 매체로, 그리고, 일반적인 표현으로, 마이크로컴퓨터에 의해 또는 마이크로프로세서에 의해 판독되고, 장치 내에 통합되어 있거나 그렇지 않으며, 가능하게는 이동식이고 하나 이상의 프로그램- 그의 실행은 구현될 본 발명에 따른 디지털 이미지 시퀀스를 인코딩하는 방법 및/또는 비트스트림을 디코딩하는 방법을 가능하게 함 -을 저장하도록 적응될 수 있는 정보 저장 수단으로 대체될 수 있다.
실행가능 코드는 전술한 바와 같이 판독 전용 메모리(306) 내에, 하드 디스크(304) 상에 또는 예를 들어, 디스크(306) 등의 이동식 디지털 매체 상에 저장될 수 있다. 변형예에 따르면, 프로그램들의 실행가능 코드는, 실행 전에 장치(300)의 저장 수단 중의 하나, 예컨대, 하드 디스크(304)에 저장되도록, 인터페이스(302)를 통해 통신 네트워크(303)에 의해 수신될 수 있다.
중앙 처리 유닛(311)은 발명에 따르는 프로그램 또는 프로그램들의 명령어들 또는 소프트웨어 코드의 일부분, 전술된 저장 수단 중 하나에 저장된 명령어들의 실행을 제어하거나 지시하도록 적응된다. 파워업 시, 비휘발성 메모리, 예를 들어, 하드 디스크(304) 및 판독 전용 메모리(306)에 저장되는 프로그램 또는 프로그램들은 그 후 본 발명을 구현하는 데 필요한 변수들 및 파라미터들을 저장하는 레지스터들뿐만 아니라 프로그램 또는 프로그램들의 실행가능 코드를 포함하는 랜덤 액세스 메모리(312)로 전송된다.
본 실시예에서, 장치는 본 발명을 구현하기 위해서 소프트웨어를 사용하는 프로그램가능 장치이다. 그러나, 대안적으로, 본 발명은 하드웨어로[예를 들어, 애플리케이션 특정 집적 회로 또는 ASIC의 형태로] 구현될 수 있다.
도 4는 본 발명의 적어도 하나의 실시예에 따르는 인코더의 블록도를 도시한다. 인코더는 접속된 모듈들로 표현되며, 각각의 모듈은, 예를 들어, 디바이스(300)의 CPU(311)에 의해 실행될 프로그래밍 명령어들의 형태로 구현되도록 적응되고, 방법의 적어도 하나의 대응하는 단계는 본 발명의 하나 이상의 실시예에 따라 이미지들의 시퀀스의 이미지를 인코딩하는 적어도 하나의 실시예를 구현한다.
디지털 이미지들 i0 내지 in(401)의 원래 시퀀스는 인코더(400)에 의해 입력으로서 수신된다. 각각의 디지털 이미지는 픽셀이라고 알려진 샘플 세트로 표현된다.
인코딩 프로세스의 구현 후에 비트스트림(410)이 인코더(400)에 의해 출력된다. 비트스트림(410)은 복수의 인코딩 유닛 또는 슬라이스를 포함하고, 각각의 슬라이스는 슬라이스를 인코딩하기 위해 사용되는 인코딩 파라미터들의 인코딩 값들을 송신하는 슬라이스 헤더(slice header), 및 인코딩된 비디오 데이터를 포함하는 슬라이스 바디(slice body)를 포함한다.
입력 디지털 이미지들 i0 내지 in(401)은 모듈(402)에 의해 픽셀들의 블록들로 분할된다. 블록들은 이미지 부분들에 대응하고 가변 크기들을 가질 수 있다(예를 들어, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 픽셀들 및 몇몇 직사각형 블록 크기들이 또한 고려될 수 있음). 각각의 입력 블록에 대해 코딩 모드가 선택된다. 2가지 계열의 코딩 모드- 공간 예측 코딩에 기초한 코딩 모드들(인트라 예측), 및 시간 예측에 기초한 코딩 모드들[인터 코딩, 머지, 스킵] -이 제공된다. 가능한 코딩 모드들이 테스트된다.
모듈(403)은 인트라 예측 프로세스를 구현하고, 여기서 인코딩될 주어진 블록이 인코딩될 상기 블록의 이웃의 픽셀들로부터 계산되는 예측자에 의해 예측된다. 인트라 코딩이 선택되는 경우 잔차를 제공하기 위해, 선택된 인트라 예측자의 표시 및 주어진 블록과 그의 예측자 간의 차가 인코딩된다.
시간 예측은 모션 추정 모듈(404) 및 모션 보상 모듈(405)에 의해 구현된다. 먼저, 참조 이미지들(416)의 세트로부터의 참조 이미지가 선택되고, 인코딩될 주어진 블록에 가장 가까운 영역인, 또한 참조 영역 또는 이미지 부분으로 불리는 참조 이미지의 일부분이 모션 추정 모듈(404)에 의해 선택된다. 모션 보상 모듈(405)은 그 후 선택된 영역을 사용하여 인코딩될 블록을 예측한다. 또한 잔차 블록으로 불리는, 주어진 블록과 선택된 참조 영역 사이의 차이는 모션 보상 모듈(405)에 의해 계산된다. 선택된 참조 영역은 모션 벡터로 표시된다.
이와 같이, 이러한 경우(공간 예측 및 시간 예측) 둘 다에서, 잔차는 원래의 블록으로부터 예측을 차감함으로써 계산된다.
모듈(403)에 의해 구현되는 INTRA 예측에서, 예측 방향이 인코딩된다. 시간 예측에서는, 적어도 하나의 모션 벡터가 인코딩된다.
인터 예측이 선택되는 경우, 모션 벡터에 대한 정보 및 잔차 블록이 인코딩된다. 비트레이트를 추가로 감소시키기 위해, 모션이 균질하다고 가정하여, 모션 벡터가 모션 벡터 예측자에 대한 차에 의해 인코딩된다. 모션 정보 예측자들의 세트의 모션 벡터 예측자들은 모션 벡터 예측 및 코딩 모듈(417)에 의해 모션 벡터 필드(418)로부터 획득된다.
인코더(400)는 레이트 왜곡 기준(rate-distortion criterion) 등의 인코딩 비용 기준을 적용함으로써 코딩 모드를 선택하는 선택 모듈(406)을 추가로 포함한다. 리던던시(redundancy)들을 추가로 감소시키기 위해, 변환 모듈(407)에 의해 변환(DCT 등)이 잔차 블록에 적용되고, 획득되는 변환된 데이터는 이어서 양자화 모듈(408)에 의해 양자화되고, 엔트로피 인코딩 모듈(409)에 의해 엔트로피 인코딩된다. 마지막으로, 인코딩되고 있는 현재 블록의 인코딩된 잔차 블록이 비트스트림(410)에 삽입된다.
인코더(400)는 또한, 후속 이미지들의 모션 추정을 위한 참조 이미지를 생성하기 위해, 인코딩된 이미지의 디코딩을 수행한다. 이것은 비트스트림을 수신하는 인코더 및 디코더가 동일한 참조 프레임들을 가질 수 있게 해준다. 역 양자화 모듈(411)은, 역 변환 모듈(412)에 의한 역 변환에 선행하여, 양자화된 데이터의 역 양자화를 수행한다. 역 인트라 예측(reverse intra prediction) 모듈(413)은 주어진 블록에 대해 어느 예측자를 사용할지를 결정하기 위해 예측 정보를 사용하고, 역 모션 보상(reverse motion compensation) 모듈(414)은 실제로 모듈(412)에 의해 획득된 잔차를 참조 이미지 세트(416)로부터 획득된 참조 영역에 가산한다.
재구성된 픽셀 프레임을 필터링하기 위해 사후 필터링이 이어서 모듈(415)에 의해 적용된다. 본 발명의 실시예들에서, 보상 오프셋들이 재구성된 이미지의 재구성된 픽셀들의 픽셀 값들에 가산되는 SAO 루프 필터가 사용된다.
도 5는 본 발명의 실시예에 따른, 인코더로부터 데이터를 수신하기 위해 사용될 수 있는 디코더(60)의 블록도를 도시한다. 디코더는 접속된 모듈들로 표현되고, 각각의 모듈은, 예를 들어, 디바이스(300)의 CPU(311)에 의해 실행될 프로그래밍 명령어들의 형태로, 디코더(60)에 의해 구현되는 방법의 대응하는 단계를 구현하도록 적응된다.
디코더(60)는 각각이 인코딩 파라미터들에 대한 정보를 포함하는 헤더 및 인코딩된 비디오 데이터를 포함하는 바디로 구성된 인코딩 유닛들을 포함하는 비트스트림(61)을 수신한다. 도 4에 대해 설명된 바와 같이, 인코딩된 비디오 데이터가 엔트로피 인코딩되고, 모션 벡터 예측자들의 인덱스들은, 미리 결정된 비트 수들 상에서, 주어진 블록에 대해, 인코딩된다. 수신된 인코딩된 비디오 데이터는 모듈(62)에 의해 엔트로피 디코딩된다. 잔차 데이터가 이어서 모듈(63)에 의해 역 양자화되고, 픽셀 값들을 획득하기 위해 모듈(64)에 의해 역 변환이 적용된다.
코딩 모드를 표시하는 모드 데이터가 또한 엔트로피 디코딩되고, 모드에 기초하여, INTRA 타입 디코딩 또는 INTER 타입 디코딩이 인코딩된 이미지 데이터 블록들에 대해 수행된다.
INTRA 모드의 경우에, 비트스트림에 명시된 인트라 예측 모드에 기초하여 역 인트라 예측 모듈(65)에 의해 INTRA 예측자가 결정된다.
모드가 INTER인 경우, 인코더에 의해 사용되는 참조 영역을 찾아내기 위해 모션 예측 정보가 비트스트림으로부터 추출된다. 모션 예측 정보는 참조 프레임 인덱스 및 모션 벡터 잔차로 이루어져 있다. 모션 벡터 디코딩 모듈(70)에 의해 모션 벡터를 획득하기 위해 모션 벡터 예측자가 모션 벡터 잔차에 가산된다.
모션 벡터 디코딩 모듈(70)은 모션 예측에 의해 인코딩된 각각의 현재 블록에 대해 모션 벡터 디코딩을 적용한다. 현재 블록에 대한 모션 벡터 예측자의 인덱스가 획득되면, 현재 블록과 연관되어 있는 모션 벡터의 실제 값이 디코딩되고 모듈(66)에 의해 역 모션 보상을 적용하기 위해 사용될 수 있다. 역 모션 보상(66)을 적용하기 위해, 디코딩된 모션 벡터에 의해 표시되는 참조 이미지 부분이 참조 이미지(68)로부터 추출된다. 후속하는 디코딩된 모션 벡터들의 역 예측에 사용되기 위해, 모션 벡터 필드 데이터(71)가 디코딩된 모션 벡터로 업데이트된다.
마지막으로, 디코딩된 블록이 획득된다. 사후 필터링은 사후 필터링 모듈(67)에 의해 적용된다. 디코딩된 비디오 신호(69)는 디코더(60)에 의해 최종적으로 제공된다.
CABAC
HEVC는, 컨텍스트 기반 적응 이진 산술 코딩(CABAC)(Context based Adaptive Binary Arithmetic Coding), 골롬-라이스 코드(Golomb-rice Code) 또는 고정 길이 코딩(Fixed Length Coding)으로 불리는 단순한 이진 표현과 같은 여러 타입의 엔트로피 코딩을 사용한다. 대부분, 이진 인코딩 프로세스는 상이한 신택스 요소들을 나타내기 위해 수행된다. 이런 이진 인코딩 프로세스는 또한 매우 특정적이고, 상이한 신택스 요소들에 의존한다. 산술 코딩은 그의 현재 확률들에 따른 신택스 요소를 나타낸다. CABAC는 컨텍스트 변수에 의해 정의된 '컨텍스트'에 따라 신택스 요소의 확률들을 분리하는 산술 코딩의 확장이다. 이것은 조건부 확률에 대응한다. 컨텍스트 변수는 이미 디코딩된 상단 좌측 블록(아래에 더 상세히 설명된 바와 같이 도 6b의 A2) 및 위 좌측 블록(도 6b의 B3)의 현재 신택스의 값으로부터 도출될 수 있다.
CABAC는 H.264/AVC 및 H.265/HEVC 표준들의 규범적 부분으로서 채택되었다. H.264/AVC에서, 그것은 엔트로피 코딩의 2개의 대안적인 방법들 중 하나이다. H.264/AVC에서 특정된 다른 방법은, 소위 CAVLC(Context-Adaptive Variable-Length Coding)라 불리는, 가변 길이 코드들의 컨텍스트 적응 스위칭 세트들의 사용에 기초한 저 복잡도 엔트로피 코딩 기술이다. CABAC에 비해, CAVLC는 더 낮은 압축 효율의 대가로 감소된 구현 비용들을 제공한다. 표준 또는 고화질 해상도에서의 TV 신호들의 경우, CABAC는 전형적으로 동일한 객관적인 비디오 품질에서 CAVLC에 비해 10-20%의 비트-레이트 절약을 제공한다. HEVC에서, CABAC는 유일한 엔트로피 코딩 방법이다.
도 17은 CABAC 인코더의 주요 블록들을 도시한다.
비-이진 값인 입력 신택스 요소는 이진화기(1701)에 의해 이진화된다. CABAC의 코딩 전략은 모션 벡터 차이들 또는 변환 계수 레벨 값들의 성분들과 같은 하이브리드 블록 기반 비디오 코더에서의 신택스 요소 값들의 매우 효율적인 코딩이 컨텍스트 모델링 및 이진 산술 코딩의 후속 스테이지들에 대한 일종의 전처리 유닛으로서 이진화 스킴을 이용함으로써 달성될 수 있다는 발견에 기초한다. 일반적으로, 이진화 스킴은 이진 코드 트리의 관점에서 또한 해석될 수 있는 이진 결정들, 소위 빈들의 시퀀스들에 대한 신택스 요소 값들의 고유 매핑을 정의한다. CABAC의 이진화 스킴들의 설계는, 그 구조가 간단한 온라인 계산을 가능하게 하며 일부 적절한 모델 확률 분포들에 적응된 몇몇 기본 프로토타입들에 기초한다.
각각의 빈은 스위치(1702)의 설정에 따라 두 가지 기본 방식 중 하나로 처리될 수 있다. 스위치가 "정규" 설정에 있을 때, 빈은 컨텍스트 모델러(1703) 및 정규 코딩 엔진(1704)에 공급된다. 스위치가 "바이패스" 설정에 있을 때, 컨텍스트 모델러는 바이패스되고 빈은 바이패스 코딩 엔진(1705)에 공급된다. 다른 스위치(1706)는 코딩 엔진들(1704 및 1705) 중 적용가능한 것에 의해 코딩된 빈들이 CABAC 인코더의 출력으로서 비트스트림을 형성할 수 있도록 스위치(1702)와 유사한 "정규" 및 "바이패스" 설정들을 갖는다.
각각의 신택스 요소 값을 빈들의 시퀀스로 분해함으로써, CABAC의 각각의 빈 값의 추가 처리는 정규 또는 바이패스 모드로서 선택될 수 있는 관련 코딩 모드 결정에 의존한다. 후자는 부호 정보에 관련된 빈들을 위해 또는 더 낮은 유효 빈들을 위해 선택되며, 이는 균일하게 분포되는 것으로 가정되고, 결과적으로, 전체 정규 이진 산술 인코딩 프로세스는 간단히 바이패스된다. 정규 코딩 모드에서, 각각의 빈 값은 정규 이진 산술 코딩 엔진을 사용하여 인코딩되며, 연관된 확률 모델은 어떠한 컨텍스트 모델링도 없이 고정된 선택에 의해 결정되거나, 관련 컨텍스트 모델에 따라 적응적으로 선택된다. 중요한 설계 결정으로서, 후자의 경우는 일반적으로 가장 빈번히 관찰되는 빈들에만 적용되는 반면, 다른, 보통 덜 빈번히 관찰되는 빈들은 공동(joint), 전형적으로 0차 확률 모델을 사용하여 처리될 것이다. 이러한 방식으로, CABAC는 서브심볼 레벨에 대한 선택적 컨텍스트 모델링을 가능하게 하며, 따라서 상당히 감소된 전체 모델링 또는 학습 비용들로 심볼 간 리던던시를 이용하기 위한 효율적인 기기를 제공한다. 컨텍스트 모델들의 특정 선택에 대해, CABAC에 4개의 기본 설계 타입이 이용되며, 이들 중 2개는 변환-계수 레벨들의 코딩에만 적용된다. 이러한 4개의 프로토타입의 설계는 모델링될 소스 데이터의 전형적인 특성들에 대한 선험적 지식에 기초하고, 이는 불필요한 모델링 비용 오버헤드를 회피하는 것과 통계적 의존성들을 크게 이용하는 것의 충돌하는 목적들 사이의 양호한 절충을 발견하기 위한 목적을 반영한다.
CABAC의 최저 처리 레벨에서, 각각의 빈 값은 정규 또는 바이패스 코딩 모드에서 이진 산술 인코더로 들어간다. 후자의 경우, 복잡도가 상당히 감소된 코딩 엔진의 고속 브랜치가 사용되는 한편, 전자의 코딩 모드에 대해, 주어진 빈 값의 인코딩은 빈 값과 함께 M 코더로 전달되는 연관된 적응적 확률 모델의 실제 상태- CABAC에서 테이블-기반 이진 산술 코딩 엔진에 대해 선택되었던 항 -에 의존한다.
인터 코딩
HEVC는 3개의 상이한 INTER 모드를 사용한다: 인터(Inter) 모드, 머지(Merge) 모드 및 머지 스킵(Merge Skip) 모드. 이들 모드들 사이의 주요 차이점은 비트스트림의 데이터 시그널링이다. 모션 벡터 코딩의 경우, 현재 HEVC 표준은 표준의 이전 버전들에 존재하지 않았던 모션 벡터 예측을 위한 경쟁 기반 스킴을 포함한다. 이것은, 여러 후보들이 인터 또는 머지 모드 각각에 대한 최상의 모션 벡터 예측자 또는 최고의 모션 정보를 발견하기 위하여 인코더측의 레이트 왜곡 기준과 더불어 경쟁하고 있음을 의미한다. 모션 정보의 최상의 예측자들 또는 최상의 후보에 대응하는 인덱스가 비트스트림에 삽입된다. 디코더는 동일한 세트의 예측자들 또는 후보들을 도출할 수 있고 디코딩된 인덱스에 따라 최상의 것을 사용한다. HEVC의 스크린 콘텐츠 확장(Screen Content Extension)에서, 인트라 블록 카피(Intra Block Copy)라고 불리는 새로운 코딩 툴은 이러한 3개의 INTER 모드 중 어느 하나로서 시그널링되며, IBC와 등가 INTER 모드 사이의 차이는 참조 프레임이 현재 프레임인지를 체크함으로써 만들어진다. 이것은 예를 들면 리스트 L0의 참조 인덱스를 체크하고, 이것이 그 리스트에서의 마지막 프레임인 경우에 인트라 블록 카피라고 추론함으로써 구현될 수 있다. 그것을 하는 다른 방법은 현재 및 참조 프레임들의 픽처 오더 카운트를 비교하는 것이다: 동일하면, 이것은 인트라 블록 카피이다.
예측자들 및 후보들의 도출의 설계는 복잡도에 대한 불균형한 영향 없이 최상의 코딩 효율을 달성하는 데 중요하다. HEVC에서, 2개의 모션 벡터 도출이 사용된다: 하나는 인터 모드(Advanced Motion Vector Prediction(AMVP))에 대한 것이고 또 하나는 머지 모드(Merge derivation process)에 대한 것이다. 이하에서는 이러한 프로세스들을 설명한다.
도 6a 및 도 6b는 HEVC 코딩 및 디코딩 시스템들의 AMVP(Advanced Motion Vector Prediction) 및 머지 모드들에서 모션 벡터 예측자들을 생성하기 위해 사용될 수 있는 공간 및 시간 블록들을 예시하고, 도 7은 AMVP 예측자 세트 도출의 프로세스의 단순화된 단계들을 도시한다.
2개의 예측자, 즉, AMVP 모드의 2개의 공간적 모션 벡터는 상단 코너 블록들(블록 B2) 및 좌측 코너 블록(블록 A0)을 포함하는 상단 블록들(문자 "B"로 표시됨) 및 좌측 블록들(문자 "A"로 표시됨) 중에서 선택되고, 하나의 예측자는 도 6a에 표현된 바와 같이 병치된 블록의 하단 우측 블록(H) 및 중심 블록(중심) 중에서 선택된다.
아래의 표 1은 도 6a 및 6b에 도시된 바와 같이 현재 블록에 대해 상대적인 측면에서 블록들을 참조할 때 사용되는 명명법을 약술한다. 이 명명법은 약칭(shorthand)으로서 사용되지만, 라벨링의 다른 시스템들, 특히 표준의 향후 버전들에서 사용될 수 있다는 것을 이해해야 한다.
Figure pct00001
'현재 블록'은 크기가 가변적일 수 있는데, 예를 들어, 4x4, 16x16, 32x32, 64x64, 128x128 또는 그 사이의 임의의 크기일 수 있다는 점에 유의해야 한다. 블록의 치수들은 바람직하게는 2배들(즉, 2^n x 2^m, 여기서 n 및 m은 양의 정수임)인데, 그 이유는 이것이 이진 인코딩을 사용할 때 비트들의 보다 효율적인 사용을 가져오기 때문이다. 현재 블록은 정사각형일 필요는 없지만, 이것은 종종 코딩 복잡도에 대해 바람직한 실시예이다.
도 7을 참조하면, 제1 단계는 공간 위치들이 도 6에 예시되어 있는 하단 좌측 블록들 A0 및 A1 중에서 제1 공간 예측자(Cand 1, 706)를 선택하는 것을 목표로 한다. 이를 위해, 이러한 블록들은 주어진 순서로 차례로 선택되고(700, 702), 각각의 선택된 블록에 대해, 다음 조건들이 주어진 순서로 평가되며(704), 조건들이 충족되는 제1 블록은 예측자로서 설정된다:
- 동일한 참조 리스트 및 동일한 참조 이미지로부터의 모션 벡터;
- 다른 참조 리스트 및 동일한 참조 이미지로부터의 모션 벡터;
- 동일한 참조 리스트 및 상이한 참조 이미지로부터의 스케일링된 모션 벡터; 또는
- 다른 참조 리스트 및 상이한 참조 이미지로부터의 스케일링된 모션 벡터.
어떠한 값도 발견되지 않는 경우, 좌측 예측자는 이용불가능한 것으로서 간주된다. 이 경우, 이는 관련된 블록들이 INTRA 코딩되었거나 그러한 블록들이 존재하지 않음을 표시한다.
다음의 단계는, 위 우측 블록 B0, 위 블록 B1, 및 좌측 위 블록 B2 중에서, 공간 위치들이 도 6에 도시되어 있는 제2 공간 예측자(Cand 2, 716)를 선택하는 것을 목표로 한다. 이를 위해, 이러한 블록들은 주어진 순서로 차례로 선택되고(708, 710, 712), 각각의 선택된 블록에 대해, 위에서 언급된 조건들은 주어진 순서로 평가되고(714), 위에서 언급된 조건들이 충족되는 제1 블록은 예측자로서 설정된다.
다시, 어떠한 값도 발견되지 않는 경우, 상단 예측자는 이용불가능한 것으로서 간주된다. 이 경우, 이는 관련된 블록들이 INTRA 코딩되었거나 그러한 블록들이 존재하지 않음을 표시한다.
다음 단계(718)에서, 2개의 예측자가, 둘 다 이용가능한 경우, 이들이 동일한 경우(즉, 동일한 모션 벡터 값들, 동일한 참조 리스트, 동일한 참조 인덱스 및 동일한 방향 타입) 이들 중 하나를 제거하기 위해 서로 비교된다. 하나의 공간 예측자만이 이용가능한 경우, 알고리즘은 다음 단계에서 시간 예측자를 찾고 있다.
시간적 모션 예측자(Cand 3, 726)는 다음과 같이 도출된다: 이전 프레임 내의 병치된 블록의 하단 우측(H, 720) 위치가 먼저 이용가능성 체크 모듈(722)에서 고려된다. 존재하지 않는 경우 또는 모션 벡터 예측자가 이용가능하지 않은 경우, 병치된 블록의 중심(Centre, 724)이 체크되도록 선택된다. 이러한 시간적 위치들(중심 및 H)은 도 6에 도시된다. 임의의 경우에, 스케일링(723)은 참조 리스트에서 현재 프레임과 제1 프레임 사이의 시간적 거리를 매칭시키기 위해 그 후보들에 적용된다.
모션 예측자 값은 그 후 예측자들의 세트에 추가된다. 다음으로, 예측자들의 수(Nb_Cand)는 예측자들의 최대 수(Max_Cand)와 비교된다(728). 앞서 언급된 바와 같이, AMVP의 도출 프로세스가 생성할 필요가 있는 모션 벡터 예측자들의 최대 수(Max_Cand)는 HEVC 표준의 현재 버전에서 2이다.
이 최대 수에 도달하면, AMVP 예측자들의 최종 리스트 또는 세트(732)가 구축된다. 그렇지 않으면, 제로 예측자가 리스트에 추가된다(730). 제로 예측자는 (0, 0)과 동일한 모션 벡터이다.
도 7에 도시된 바와 같이, AMVP 예측자들의 최종 리스트 또는 세트(732)는 공간적 모션 예측자들의 서브세트(700 내지 712)로부터 그리고 시간적 모션 예측자들의 서브세트(720, 724)로부터 구축된다.
앞서 언급된 바와 같이, 머지 모드 또는 머지 스킵 모드의 모션 예측자 후보는 모든 요구된 모션 정보: 방향, 리스트, 참조 프레임 인덱스, 및 모션 벡터들을 나타낸다. 여러 후보들의 인덱싱된 리스트가 머지 도출 프로세스에 의해 생성된다. 현재의 HEVC 설계에서, 양쪽 머지 모드들에 대한 후보들의 최대 수는 5(4개의 공간적 후보 및 1개의 시간적 후보)와 동일하다.
도 8은 머지 모드들의 모션 벡터 도출 프로세스의 개략도이다. 도출 프로세스의 제1 단계에서, 5개의 블록 위치가 고려된다(800 내지 808). 이러한 위치들은 도 3에 참조부호들 A1, B1, B0, A0 및 B2로 도시된 공간 위치들이다. 다음 단계에서, 공간적 모션 벡터들의 이용가능성이 체크되고 기껏해야 5개의 모션 벡터가 선택된다(810). 예측자는 그것이 존재하는 경우 그리고 블록이 INTRA 코딩되지 않은 경우 이용가능한 것으로 간주된다. 따라서, 후보들로서 5개의 블록에 대응하는 모션 벡터들을 선택하는 것은 다음의 조건들에 따라 행해진다:
"왼쪽" A1 모션 벡터(800)가 이용가능한 경우(810), 즉, 그것이 존재하고 이 블록이 INTRA 코딩되지 않은 경우, "왼쪽" 블록의 모션 벡터가 선택되고 후보의 리스트(814)에서의 제1 후보로서 사용되고;
"위" B1 모션 벡터(802)가 이용가능한 경우(810), 후보 "위" 블록 모션 벡터는, 그것이 존재하는 경우, "좌측" A1 모션 벡터(812)와 비교된다. B1 모션 벡터가 A1 모션 벡터와 동일한 경우, B1은 공간적 후보들의 리스트(814)에 추가되지 않는다. 반대로, B1 모션 벡터가 A1 모션 벡터와 동일하지 않은 경우, B1이 공간적 후보들의 리스트(814)에 추가되고;
"위 우측" B0 모션 벡터(804)가 이용가능한 경우(810), "위 우측"의 모션 벡터가 B1 모션 벡터와 비교된다(812). B0 모션 벡터가 B1 모션 벡터와 동일한 경우, B0 모션 벡터는 공간적 후보들의 리스트(814)에 추가되지 않는다. 반대로, B0 모션 벡터가 B1 모션 벡터와 동일하지 않은 경우, B0 모션 벡터가 공간적 후보들의 리스트(814)에 추가되고;
"아래 좌측" A0 모션 벡터(806)가 이용가능한 경우(810), "아래 좌측"의 모션 벡터가 A1 모션 벡터와 비교된다(812). A0 모션 벡터가 A1 모션 벡터와 동일한 경우, A0 모션 벡터는 공간적 후보들의 리스트(814)에 추가되지 않는다. 반대로, A0 모션 벡터가 A1 모션 벡터와 동일하지 않은 경우, A0 모션 벡터가 공간적 후보들의 리스트(814)에 추가되고; 및
공간적 후보들의 리스트가 4개의 후보를 포함하지 않는 경우, "위 좌측" B2 모션 벡터(808)의 이용가능성이 체크된다(810). B2 모션 벡터가 이용가능한 경우, B2 모션 벡터는 A1 모션 벡터 및 B1 모션 벡터와 비교된다. B2 모션 벡터가 A1 모션 벡터 또는 B1 모션 벡터와 동일한 경우, B2 모션 벡터는 공간적 후보들의 리스트(814)에 추가되지 않는다. 반대로, B2 모션 벡터가 A1 모션 벡터 또는 B1 모션 벡터와 동일하지 않은 경우, B2 모션 벡터가 공간적 후보들의 리스트(814)에 추가된다.
이 단계의 끝에서, 공간적 후보들의 리스트는 최대 4개의 후보를 포함한다.
시간적 후보에 대해, 2개의 위치: 병치된 블록의 하단 우측 위치(816, 도 6에서 H로 표시됨) 및 병치된 블록의 중심(818)이 사용될 수 있다. 이들 위치는 도 6에 도시된다.
AMVP 모션 벡터 도출 프로세스에 대하여, 제1 단계는 H 위치에서의 블록의 이용가능성을 체크하는 것(820)을 목표로 한다. 다음으로, 그것이 이용가능하지 않는 경우, 중심 위치에서의 블록의 이용가능성이 체크된다(820). 이러한 위치들의 적어도 하나의 모션 벡터가 이용가능한 경우, 머지 모션 벡터 예측자 후보들의 리스트에 추가되는 시간적 후보(824)를 생성하기 위해, 필요한 경우, 리스트 L0 및 L1 둘 다에 대해 인덱스 0을 갖는 참조 프레임으로 시간적 모션 벡터가 스케일링(822)될 수 있다. 이것은 리스트에서의 공간적 후보들 이후에 배치된다. 리스트들 L0 및 L1은 0, 1 또는 그 이상의 참조 프레임을 포함하는 2개의 참조 프레임 리스트이다.
후보들의 수(Nb_Cand)가 후보들의 최대 수(Max_Cand 그 값은 비트-스트림 슬라이스 헤더에서 시그널링되고 현재 HEVC 설계에서 5와 동일함)보다 절대적으로 더 적은 경우(826), 그리고 현재 프레임이 B 타입인 경우, 조합된 후보들이 생성된다(828). 머지 모션 벡터 예측자 후보들의 리스트의 이용가능한 후보들에 기초하여 조합된 후보들이 생성된다. 그것은 주로 리스트 L0의 하나의 후보의 모션 벡터와 리스트 L1의 하나의 후보의 모션 벡터를 조합하는 것으로 구성된다.
후보들의 수(Nb_Cand)가 후보들의 최대 수(Max_Cand)보다 절대적으로 작게 유지되는 경우(830), 머지 모션 벡터 예측자 후보들의 리스트의 후보들의 수가 후보들의 최대 수에 도달할 때까지 제로 모션 후보들이 생성된다(832).
이 프로세스의 끝에서, 머지 모션 벡터 예측자 후보들의 리스트 또는 세트가 구축된다(834). 도 8에 도시된 바와 같이, 머지 모션 벡터 예측자 후보들의 리스트 또는 세트는 공간적 후보들의 서브세트(800 내지 808) 및 시간적 후보들의 서브세트(816, 818)로부터 구축된다(834).
ATMVP(Alternative Temporal Motion Vector Prediction)
ATMVP(alternative temporal motion vector prediction)는 특정 모션 보상이다. 시간 참조 프레임으로부터 현재 블록에 대한 하나의 모션 정보만을 고려하는 대신에, 각각의 병치된 블록의 각각의 모션 정보가 고려된다. 따라서, 이러한 시간적 모션 벡터 예측은 도 9에 도시된 바와 같이 각각의 서브 블록의 관련 모션 정보를 갖는 현재 블록의 세그먼테이션을 제공한다.
현재의 VTM 참조 소프트웨어에서, ATMVP는 머지(merge) 후보들의 리스트에 삽입된 머지 후보로서 시그널링된다. ATMVP가 SPS 레벨에서 인에이블될 때, 머지 후보들의 최대 수는 1만큼 증가된다. 따라서 이 모드가 디스에이블될 때 6개 후보가 5개 대신 고려된다.
또한, 이러한 예측이 SPS 레벨에서 인에이블될 때, 머지 인덱스의 모든 빈들은 CABAC에 의해 컨텍스트 코딩된다. HEVC 중에 또는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때, 제1 빈만이 컨텍스트 코딩되고, 나머지 빈들은 컨텍스트 바이-패스 코딩된다(context by-pass coded). 도 10의 (a)는 HEVC 동안, 또는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때의 머지 인덱스의 코딩을 도시한다. 이것은 단항 최대 코딩에 대응한다. 또한, 제1 비트는 CABAC 코딩되고, 다른 비트들은 바이패스 CABAC 코딩된다.
도 10의 (b)는 ATMVP가 SPS 레벨에서 인에이블될 때의 머지 인덱스의 코딩을 도시한다. 또한, 모든 비트는 (제1 비트로부터 제5 비트로) CABAC 코딩된다. 각각의 인덱스는 그 자신의 컨텍스트를 가지며, 즉 그들의 확률들이 분리된다는 점에 유의해야 한다.
아핀 모드
HEVC에서, 병진 모션 모델만이 모션 보상 예측(MCP)에 적용된다. 현실 세계에 있는 동안, 많은 종류의 모션, 예를 들어, 주밍 인/아웃, 회전, 원근(perspective) 모션들 및 다른 비정규 모션들이 있다.
JEM에서, 단순화된 아핀 변환 모션 보상 예측이 적용되고 아핀 모드의 일반적인 원리는 2017년 7월 13-21일에 토리노 내의 JVET 미팅에서 제시되는 문서 JVET-G1001의 추출에 기초하여 아래에 설명된다. 이 전체 문서는 그것이 JEM에서 사용되는 다른 알고리즘들을 설명하는 한 본 명세서에 참조로 포함된다.
도 11의 (a)에 도시된 바와 같이, 블록의 아핀 모션 필드는 2개의 제어 포인트 모션 벡터들에 의해 설명된다.
블록의 모션 벡터 필드(MVF)는 다음의 수학식에 의해 설명된다:
Figure pct00002
여기서 (v0x, v0y)는 상단-좌측 코너 제어 포인트의 모션 벡터이고, (v1x, v1y)는 상단-우측 코너 제어 포인트의 모션 벡터이다.
모션 보상 예측을 더 단순화하기 위해, 서브-블록 기반 아핀 변환 예측이 적용된다. 서브블록 크기 MxN은 수학식 2에서와 같이 도출되며, 여기서 MvPre는 모션 벡터 분수 정확도(JEM에서 1/16)이고, (v2x, v2y)는 수학식 1에 따라 계산된 하단-좌측 제어 포인트의 모션 벡터이다.
Figure pct00003
수학식 2에 의해 도출된 후에, M 및 N은 필요하다면 그것을 w 및 h의 제수(divisor)로 각각 만들기 위해 하향 조정될 수 있다.
각각의 MХN 서브-블록의 모션 벡터를 도출하기 위해, 도 6a에 도시된 바와 같이, 각각의 서브-블록의 중심 샘플의 모션 벡터는 수학식 1에 따라 계산되고, 1/16 분수 정확도로 라운딩된다. 그 후, 도출된 모션 벡터로 각각의 서브블록의 예측을 생성하기 위해 모션 보상 보간 필터들이 적용된다.
아핀 모드는 인터 모드들(AMVP, 머지(Merge), 머지 스킵(Merge Skip))로서의 모션 보상 모드이다. 그것의 원리는 2 또는 3개의 이웃하는 모션 정보에 따라 픽셀마다 하나의 모션 정보를 생성하는 것이다. 현재의 VTM 참조 소프트웨어에서, 아핀 모드는 도 11의 (a)에 도시된 바와 같이 각각의 4x4 블록에 대한 하나의 모션 정보를 도출한다. 이 모드는 AMVP에 이용가능하고, 둘 다의 머지 모드는 플래그로 인해 인에이블된다. 이 플래그는 CABAC 코딩된다. 실시예에서, 컨텍스트는 좌측 블록(도 6b의 위치 A2) 및 위 좌측 블록(도 6b의 위치 B3)의 아핀 플래그들의 합에 의존한다.
따라서, 3개의 컨텍스트 변수(0, 1 또는 2)가 다음의 공식에 의해 주어진 아핀 플래그에 대한 JEM에서 가능하다:
Ctx = IsAffine(A2) + IsAffine(B3)
여기서 IsAffine(block)는 블록이 아핀 블록이 아닌 경우 0을 반환하고 블록이 아핀인 경우 1을 반환하는 함수이다.
아핀 머지 후보 도출
JEM에서, 아핀 머지 모드(머지 또는 머지 스킵)는 위치들 A1, B1, B0, A0, B2에 있는 블록들 중에서 아핀인 제1 이웃 블록으로부터 도출된다. 이러한 위치들은 도 6a 및 6b에 도시된다. 그러나, 아핀 파라미터가 어떻게 도출되는지는 완전히 정의되지 않으며, 본 발명은 적어도 이러한 양태를 개선하는 것을 목표로 한다.
아핀 머지 시그널링
도 12는 코딩 모드와 관련된 몇몇 신택스 요소의 부분 디코딩 프로세스의 흐름도이다. 이 도면에서, 스킵 플래그(1201), 예측 모드(1211), 머지 플래그(1203), 머지 인덱스(1208) 및 아핀 플래그(1207)가 디코딩될 수 있다.
인터 슬라이스 내의 모든 CU에 대해, 스킵 플래그가 디코딩된다(1201). CU가 스킵이 아닌 경우(1202), pred 모드(예측 모드)가 디코딩된다(1211). 이 신택스 요소는 현재 CU가 인터 모드인지 또는 인트라 모드인지를 표시한다. CU가 스킵인 경우(1202), 그 현재 모드는 인터 모드라는 점에 유의한다. CU인 경우(1212), CU는 AMVP 또는 머지 모드에서 코딩된다. CU가 인터인 경우(1212), 머지 플래그가 디코딩된다(1203). CU가 머지인 경우(1204) 또는 CU가 스킵인 경우(1202), 아핀 플래그(1206)가 디코딩될 필요가 있는지가 검증된다(1205). 이 플래그는 현재 CU가 2Nx2N CU인 경우 디코딩되며, 이는 현재 VVC에서 CU의 높이와 폭이 동일할 것이라는 것을 의미한다. 또한, 적어도 하나의 이웃 CU A1 또는 B1 또는 B0 또는 A0 또는 B2는 아핀 모드(머지 또는 AMVP)로 코딩되어야 한다. 결국 현재 CU는 4x4 CU가 아닐 것이지만 디폴트로 CU 4x4는 VTM 참조 소프트웨어에서 디스에이블된다. 이 조건(1205)이 거짓인 경우, 현재 CU가 고전적인 머지 모드 또는 머지 스킵 모드로 코딩되고 머지 인덱스(1208)가 디코딩되는 것이 확실하다. 아핀 플래그(1206)가 1과 동일하게 설정되는 경우(1207), CU는 머지 아핀 CU 또는 머지 스킵 아핀 CU이고 머지 인덱스(1208)는 디코딩될 필요가 없다. 그렇지 않으면, 현재 CU는 고전적(기본) 머지 또는 머지 스킵 CU이고 머지 인덱스 후보(1208)가 디코딩된다.
본 명세서에서 '시그널링'은 모드 다른 정보(mode other information)의 인에이블 또는 디스에이블을 나타내는 하나 이상의 신택스 요소를 비트스트림에 삽입하거나 비트스트림으로부터 추출하는 것을 지칭할 수 있다.
머지 후보들 도출
도 13은 머지 후보들 도출을 도시하는 흐름도이다. 이 도출은 도 8에 표현된 HEVC의 머지 리스트 도출에 더하여 구축되었다. HEVC에 비해 주요 변경들은 ATMVP 후보(1319, 1321, 1323)의 추가, 후보들의 전체 중복 체크들(1320, 1325) 및 후보들의 새로운 순서이다. ATMVP 예측은 그것이 현재 CU의 몇몇 모션 정보를 나타내기 때문에 특별한 후보로서 설정된다. 제1 서브 블록(상단 좌측)의 값은 시간적 후보와 비교되고, 시간적 후보는 이들이 동일한 경우 머지(Merge)의 리스트에 추가되지 않는다(1320). ATMVP 후보는 다른 공간적 후보들과 비교되지 않는다. 이미 리스트 내의 각각의 공간적 후보와 비교되고(1325) 그것이 중복 후보인 경우 머지 후보 리스트에 추가되지 않는 시간적 후보와는 반대이다.
공간적 후보가 리스트에 추가될 때, 공간적 후보는 HEVC의 최종 버전에서의 경우가 아닌 리스트 내의 다른 공간적 후보들과 비교된다(1310).
현재의 VTM 버전에서, 머지 후보들의 리스트는 다음의 순서로서 설정되는데, 그 이유는 코딩 테스트 조건들에 대해 최상의 결과들을 제공하는 것으로 결정되었기 때문이다:
● A1
● B1
● B0
● A0
● ATMVP
● B2
● 시간적(TEMPORAL)
● 조합된(Combined)
● Zero_MV
공간적 후보 B2가 ATMVP 후보 후에 설정된다는 것에 주목하는 것이 중요하다.
또한, ATMVP가 슬라이스 레벨에서 인에이블될 때, 후보들의 리스트에서의 최대 수는 5 대신에 6이다.
본 발명의 예시적인 실시예들이 이제 도 14 내지 도 17, 도 19 및 도 20을 참조하여 설명될 것이다. 실시예들은 달리 명시적으로 언급되지 않는 한 조합될 수 있다는 점이 주목되어야 한다; 예를 들어, 실시예들의 특정 조합들은 증가된 복잡도로 코딩 효율을 개선할 수 있지만, 이는 특정 사용 경우들에서 수용가능할 수 있다.
제1 실시예
전술한 바와 같이, 현재의 VTM 참조 소프트웨어에서, ATMVP는 머지 후보들의 리스트에 삽입된 머지 후보로서 시그널링된다. ATMVP는 (SPS 레벨에서) 전체 시퀀스에 대해 인에이블 또는 디스에이블될 수 있다. ATMVP가 디스에이블될 때, 머지 후보들의 최대 수는 5이다. ATMVP가 인에이블될 때, 머지 후보들의 최대 수는 5에서 6으로 1만큼 증가된다.
인코더에서, 머지 후보들의 리스트는 도 13의 방법을 사용하여 생성된다. 하나의 머지 후보는 예를 들어, 레이트-왜곡 기준에 기초하여 머지 후보들의 리스트로부터 선택된다. 선택된 머지 후보는 머지 인덱스라고 하는 신택스 요소를 사용하여 비트스트림에서 디코더에 시그널링된다.
현재의 VTM 참조 소프트웨어에서, 머지 인덱스를 코딩하는 방식은 ATMVP가 인에이블되는지 또는 디스에이블되는지에 따라 상이하다.
도 10의 (a)는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때의 머지 인덱스의 코딩을 나타낸다. 5개의 머지 후보 Cand0, Cand1, Cand2, Cand3 및 Cand4는 각각 0, 10, 110, 1110 및 1111로 코딩된다. 이것은 단항 최대 코딩에 대응한다. 또한, 제1 비트는 단일 컨텍스트를 사용하여 CABAC에 의해 코딩되고, 다른 비트들은 바이패스 코딩된다.
도 10의 (b)는 ATMVP가 인에이블될 때의 머지 인덱스의 코딩을 나타낸다. 6개의 머지 후보 Cand0, Cand1, Cand2, Cand3, Cand4 및 Cand5는 각각 0, 10, 110, 1110, 11110 및 11111로 코딩된다. 이 경우, (제1 비트로부터 제5 비트로의) 머지 인덱스의 모든 비트는 CABAC에 의해 컨텍스트 코딩된다. 각각의 비트는 그 자신의 컨텍스트를 가지며, 상이한 비트들에 대한 별개의 확률 모델들이 있다.
본 발명의 제1 실시예에서, 도 14에 도시된 바와 같이, ATMVP가 머지 후보들의 리스트에 머지 후보로서 포함될 때(예를 들어, ATMVP가 SPS 레벨에서 인에이블될 때), 머지 인덱스의 코딩은 머지 인덱스의 제1 비트만이 단일 컨텍스트를 사용하여 CABAC에 의해 코딩되도록 수정된다. 컨텍스트는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때 현재의 VTM 참조 소프트웨어에서와 동일한 방식으로 설정된다. (제2 비트로부터 제5 비트로의) 다른 비트들은 바이패스 코딩된다. ATMVP가 머지 후보들의 리스트에 머지 후보로서 포함되지 않을 때(예를 들어, ATMVP가 SPS 레벨에서 디스에이블될 때), 5개의 머지 후보가 존재한다. 머지 인덱스의 제1 비트만이 단일 컨텍스트를 사용하여 CABAC에 의해 코딩된다. 컨텍스트는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때 현재의 VTM 참조 소프트웨어에서와 동일한 방식으로 설정된다. (제2 비트로부터 제4 비트로의) 다른 비트들은 바이패스 디코딩된다.
디코더는 인코더와 동일한 머지 후보들의 리스트를 생성한다. 이것은 도 13의 방법을 사용함으로써 달성될 수 있다. ATMVP가 머지 후보들의 리스트에 머지 후보로서 포함되지 않을 때(예를 들어, ATMVP가 SPS 레벨에서 디스에이블될 때), 5개의 머지 후보가 존재한다. 머지 인덱스의 제1 비트만이 단일 컨텍스트를 사용하여 CABAC에 의해 디코딩된다. (제2 비트로부터 제4 비트로의) 다른 비트들은 바이패스 디코딩된다. 현재 참조 소프트웨어와 대조적으로, ATMVP가 머지 후보들의 리스트에 머지 후보로서 포함될 때(예를 들어, ATMVP가 SPS 레벨에서 인에이블될 때), 머지 인덱스의 제1 비트만이 머지 인덱스의 디코딩에서 단일 컨텍스트를 사용하여 CABAC에 의해 디코딩된다. (제2 비트로부터 5번째 비트로의) 다른 비트들은 바이패스 디코딩된다. 디코딩된 머지 인덱스는 머지 후보들의 리스트 중에서 인코더에 의해 선택된 머지 후보를 식별하기 위해 사용된다.
VTM2.0 참조 소프트웨어에 비해 이 실시예의 이점은 코딩 효율에 영향을 주지 않고 머지 인덱스 디코딩 및 디코더 설계(및 인코더 설계)의 복잡도 감소이다. 실제로, 이 실시예에서는 현재 VTM 머지 인덱스 코딩/디코딩에 대해 5 대신에 머지 인덱스에 대해 1 CABAC 상태만이 필요하다. 또한, 이는 다른 비트들은 CABAC 바이패스 코딩되고 이는 모든 비트들을 CABAC로 코딩하는 것에 비해 연산들의 수를 감소시키기 때문에 최악의 경우의 복잡도를 감소시킨다.
제2 실시예
제2 실시예에서, 머지 인덱스의 모든 비트는 CABAC 코딩되지만 그것들은 모두 동일한 컨텍스트를 공유한다. 이 경우에 비트들 간에 공유되는 제1 실시예에서와 같이 단일 컨텍스트가 있을 수 있다. 그 결과, ATMVP가 머지 후보들의 리스트에 머지 후보로서 포함될 때(예를 들어, ATMVP가 SPS 레벨에서 인에이블될 때), VTM2.0 참조 소프트웨어에서의 5에 비해, 하나의 컨텍스트만이 사용된다. VTM2.0 참조 소프트웨어에 비해 이 실시예의 이점은 코딩 효율에 영향을 주지 않고 머지 인덱스 디코딩 및 디코더 설계(및 인코더 설계)의 복잡도 감소이다.
대안적으로, 제3 내지 제15 실시예들과 관련하여 후술하는 바와 같이, 둘 이상의 컨텍스트가 이용가능하지만 현재 컨텍스트가 비트들에 의해 공유되도록 컨텍스트 변수는 비트들 간에 공유될 수 있다.
ATMVP가 디스에이블될 때, 동일한 컨텍스트가 여전히 모든 비트들에 대해 사용된다.
이 실시예 및 모든 후속 실시예들은 ATMVP가 이용가능한 모드가 아니거나 디스에이블되는 경우에도 적용될 수 있다.
제2 실시예의 변형예에서, 머지 인덱스의 임의의 2 이상의 비트는 CABAC 코딩되고 동일한 컨텍스트를 공유한다. 머지 인덱스의 다른 비트들은 바이패스 코딩된다. 예를 들어, 머지 인덱스의 제1 N개의 비트는 CABAC 코딩될 수 있고, 여기서 N은 2 이상이다.
제3 실시예
제1 실시예에서, 머지 인덱스의 제1 비트는 단일 컨텍스트를 사용하여 CABAC 코딩되었다.
제3 실시예에서, 머지 인덱스의 비트에 대한 컨텍스트 변수는 이웃 블록의 머지 인덱스의 값에 의존한다. 이것은 타겟 비트에 대한 하나보다 많은 컨텍스트를 허용하며, 각각의 컨텍스트는 컨텍스트 변수의 상이한 값에 대응한다.
이웃 블록은 이미 디코딩된 임의의 블록일 수 있으며, 따라서 그의 머지 인덱스는 현재 블록이 디코딩되고 있는 시간까지 디코더가 이용가능하다. 예를 들어, 이웃 블록은 도 6b에 도시된 블록들 A0, A1, A2, B0, B1, B2 및 B3 중 임의의 것일 수 있다.
제1 변형예에서, 단지 제1 비트가 이 컨텍스트 변수를 사용하여 CABAC 코딩된다.
제2 변형예에서, 머지 인덱스의 제1 N개의 비트(여기서, N은 2 이상임)는 CABAC 코딩되고 컨텍스트 변수는 이러한 N개의 비트 간에 공유된다.
제3 변형예에서, 머지 인덱스의 임의의 N개의 비트(여기서, N은 2 이상임)는 CABAC 코딩되고 컨텍스트 변수는 이러한 N개의 비트 간에 공유된다.
제4 변형예에서, 머지 인덱스의 제1 N개의 비트(여기서, N은 2 이상임)는 CABAC 코딩되고, N개의 컨텍스트 변수가 그러한 N개의 비트에 대해 사용된다. 컨텍스트 변수들이 K개의 값을 갖는다고 가정하면, KxN개의 CABAC 상태가 사용된다. 예를 들어, 본 실시예에서, 하나의 이웃 블록에 대해, 컨텍스트 변수는 편리하게 2개의 값, 예를 들어, 0 및 1을 가질 수 있다. 즉, 2N개의 CABAC 상태가 사용된다.
제5 변형예에서, 머지 인덱스의 임의의 N개의 비트(N은 2 이상임)가 적응적-PM(adaptive-PM) 코딩되고, N개의 컨텍스트 변수가 그러한 N개의 비트에 대해 사용된다.
동일한 변형예들이 이하에 설명되는 제4 내지 제16 실시예들에 적용가능하다.
제4 실시예
제4 실시예에서, 머지 인덱스의 비트에 대한 컨텍스트 변수는 2개 이상의 이웃 블록의 머지 인덱스의 각각의 값들에 의존한다. 예를 들어, 제1 이웃 블록은 좌측 블록 A0, A1 또는 A2일 수 있고, 제2 이웃 블록은 상부 블록 B0, B1, B2 또는 B3일 수 있다. 2개 이상의 머지 인덱스 값을 조합하는 방식은 특별히 제한되지 않는다. 실시예가 아래에 주어진다.
컨텍스트 변수는 편리하게는 3개의 상이한 값, 예를 들어, 0, 1 및 2를 가질 수 있는데, 이는 이 경우에 2개의 이웃 블록이 있기 때문이다. 제3 실시예와 관련하여 설명된 제4 변형예가 3개의 상이한 값을 갖는 이 실시예에 적용되면, K는 2 대신에 3이다. 즉, 3N개의 CABAC 상태가 사용된다.
제5 실시예
제5 실시예에서, 머지 인덱스의 비트에 대한 컨텍스트 변수는 이웃 블록들 A2 및 B3의 머지 인덱스의 각각의 값들에 의존한다.
제6 실시예
제6 실시예에서, 머지 인덱스의 비트에 대한 컨텍스트 변수는 이웃 블록들 A1 및 B1의 머지 인덱스의 각각의 값들에 의존한다. 이 변형의 이점은 머지 후보들 도출과의 정렬이다. 그 결과, 일부 디코더 및 인코더 구현들에서, 메모리 액세스 감소들이 달성될 수 있다.
제7 실시예
제7 실시예에서, 현재 블록의 머지 인덱스에서 비트 위치 idx_num을 갖는 비트에 대한 컨텍스트 변수는 다음의 공식에 따라 획득된다:
ctxIdx = (Merge_index_left == idx_num) + (Merge_index_up == idx_num)
여기서 Merge_index_left는 좌측 블록에 대한 머지 인덱스이고, Merge_index_up는 상부 블록에 대한 머지 인덱스이고, 심볼 ==는 동등한 심볼이다.
6개의 머지 후보가 존재할 때, 예를 들어, 0 <= idx_num <= 5이다.
(제6 실시예에서와 같이) 좌측 블록은 블록 A1일 수 있고 상부 블록은 블록 B1일 수 있다. 대안적으로, (제5 실시예에서와 같이) 좌측 블록은 블록 A2일 수 있고 상부 블록은 블록 B3일 수 있다.
좌측 블록에 대한 머지 인덱스가 idx_num과 동일한 경우, 공식 (Merge_index_left == idx_num)은 1과 동일하다. 다음의 표는 이 공식 (Merge_index_left == idx_num)의 결과를 제공한다:
Figure pct00004
물론, 공식 (Merge_index_up == idx_num)의 표는 동일하다.
다음의 표는 각각의 머지 인덱스 값의 단항 최대 코드 및 각각의 비트에 대한 상대 비트 위치를 제공한다. 이 표는 도 10의 (b)에 대응한다.
Figure pct00005
좌측 블록이 머지 블록 또는 아핀 머지 블록이 아닌 경우, 좌측 블록이 이용가능하지 않은 것으로 간주된다. 상부 블록에 대해서도 동일한 조건이 적용된다.
예를 들어, 제1 비트만이 CABAC 코딩될 때, 컨텍스트 변수 ctxIdx는:
좌측 및 상부 블록이 머지 인덱스를 갖지 않는 경우 또는 좌측 블록 머지 인덱스가 제1 인덱스가 아닌 경우(즉, 0이 아닌 경우) 및 상부 블록 머지 인덱스가 제1 인덱스가 아닌 경우(즉, 0이 아닌 경우) 0과 동일하게 설정되고;
좌측 및 상부 블록들 중 하나는 제1 인덱스와 동일한 그의 머지 인덱스를 갖지만 그것들 중 다른 하나는 갖지 않는 경우 1과 동일하게 설정되고; 및
좌측 및 상부 블록들 각각에 대해 머지 인덱스가 제1 인덱스와 동일한 경우 2와 동일하게 설정된다.
보다 일반적으로, CABAC 코딩된 위치 idx_num의 타겟 비트에 대해, 컨텍스트 변수 ctxIdx는:
좌측 및 상부 블록이 머지 인덱스를 갖지 않는 경우 또는 좌측 블록 머지 인덱스가 제i 인덱스가 아닌 경우(여기서 i = idx_num) 및 상부 블록 머지 인덱스가 제i 인덱스가 아닌 경우 0과 동일하게 설정되고;
좌측 및 상부 블록들 중 하나가 제i 인덱스와 동일한 그의 머지 인덱스를 갖지만 그것들 중 다른 하나는 갖지 않는 경우 1과 동일하게 설정되고; 및
좌측 및 상부 블록들 각각에 대해 머지 인덱스가 제i 인덱스와 동일한 경우 2와 동일하게 설정된다. 여기서, 제i 인덱스는 i = 0일 때의 제1 인덱스를 의미하고, i = 1일 때의 제2 인덱스를 의미하는 등등이다.
제8 실시예
제8 실시예에서, 현재 블록의 머지 인덱스에서 비트 위치 idx_num을 갖는 비트에 대한 컨텍스트 변수는 다음의 공식에 따라 획득된다:
Ctx = (Merge_index_left > idx_num) + (Merge_index_up > idx_num)이고 여기서 Merge_index_left는 좌측 블록에 대한 머지 인덱스이고, Merge_index_up는 상부 블록에 대한 머지 인덱스이고, symbol >는 "보다 큼"을 의미한다.
6개의 머지 후보가 존재할 때, 예를 들어, 0 <= idx_num <= 5이다.
(제5 실시예에서와 같이) 좌측 블록은 블록 A1일 수 있고 상부 블록은 블록 B1일 수 있다. 대안적으로, (제6 실시예에서와 같이) 좌측 블록은 블록 A2일 수 있고 상부 블록은 블록 B3일 수 있다.
좌측 블록에 대한 머지 인덱스가 idx_num보다 큰 경우, 공식 (Merge_index_left > idx_num)은 1과 동일하다. 좌측 블록이 머지 블록 또는 아핀 머지 블록이 아닌 경우, 좌측 블록이 이용가능하지 않은 것으로 간주된다. 상부 블록에 대해서도 동일한 조건이 적용된다.
다음의 표는 이 공식 (Merge_index_left > idx_num)의 결과들을 제공한다:
Figure pct00006
예를 들어, 제1 비트만이 CABAC 코딩될 때, 컨텍스트 변수 ctxIdx는:
좌측 및 상부 블록이 머지 인덱스를 갖지 않는 경우 또는 좌측 블록 머지 인덱스가 제1 인덱스보다 작거나 같은 경우(즉, 0이 아닌 경우) 및 상위 블록 머지 인덱스가 제1 인덱스보다 작거나 같은 경우(즉, 0이 아닌 경우) 0과 동일하게 설정되고;
좌측 및 상부 블록들 중 하나가 제1 인덱스보다 큰 그의 머지 인덱스를 갖는 경우 1과 동일하게 설정되고; 및
좌측 및 상부 블록들 각각에 대해 머지 인덱스가 제1 인덱스보다 큰 경우 2와 동일하게 설정된다.
보다 일반적으로, CABAC 코딩된 위치 idx_num의 타겟 비트에 대해, 컨텍스트 변수 ctxIdx는:
좌측 및 상부 블록이 머지 인덱스를 갖지 않는 경우 또는 좌측 블록 머지 인덱스가 제i 인덱스보다 작은 경우(여기서 i = idx_num) 및 상부 블록 머지 인덱스가 제i 인덱스보다 작거나 같은 경우 0과 동일하게 설정되고;
좌측 및 상부 블록들 중 하나는 제i 인덱스보다 큰 그의 머지 인덱스를 갖지만 그것들 중 다른 하나는 갖지 않는 경우 1과 동일하게 설정되고; 및
좌측 및 상부 블록들 각각에 대해 머지 인덱스가 제i 인덱스보다 큰 경우 2와 동일하게 설정된다.
제8 실시예는 제7 실시예에 비해 추가적인 코딩 효율 증가를 제공한다.
제9 실시예
제4 내지 제8 실시예들에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 2개 이상의 이웃 블록의 머지 인덱스의 각각의 값들에 의존한다.
제9 실시예에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 2개 이상의 이웃 블록의 각각의 머지 플래그에 의존한다. 예를 들어, 제1 이웃 블록은 좌측 블록 A0, A1 또는 A2일 수 있고, 제2 이웃 블록은 상부 블록 B0, B1, B2 또는 B3일 수 있다.
머지 플래그는 블록이 머지 모드를 사용하여 인코딩될 때 1로 설정되고, 스킵 모드 또는 아핀 머지 모드와 같은 다른 모드일 때 0으로 설정된다. VMT2.0 아핀 머지가 기본 또는 "고전적인" 머지 모드와 별개의 모드임에 유의한다. 아핀 머지 모드는 전용 아핀 플래그를 사용하여 시그널링될 수 있다. 대안적으로, 머지 후보들의 리스트는 아핀 머지 후보를 포함할 수 있고, 이 경우 아핀 머지 모드는 머지 인덱스를 사용하여 선택되고 시그널링될 수 있다.
컨텍스트 변수는 그 후:
좌측도 상부도 아닌 이웃 블록이 1로 설정된 그의 머지 플래그를 갖는 경우 0으로 설정되고;
좌측 및 상부 이웃 블록들 중 하나는 1로 설정된 그의 머지 플래그를 갖지만 그것들 중 다른 하나는 갖지 않는 경우 1로 설정되고; 및
좌측 및 상부 이웃 블록들 각각이 1로 설정된 그의 머지 플래그를 갖는 경우 2로 설정된다.
이 간단한 조치는 VTM2.0보다 코딩 효율 개선을 달성한다. 제7 및 제8 실시예들과 비교하여, 다른 이점은 더 낮은 복잡도인데, 그 이유는 이웃 블록들의 머지 인덱스들이 아니라 머지 플래그들만이 체크될 필요가 있기 때문이다.
변형예에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 단일 이웃 블록의 머지 플래그에 의존한다.
제10 실시예
제3 내지 제9 실시예들에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 하나 이상의 이웃 블록의 머지 인덱스 값들 또는 머지 플래그들에 의존한다.
제10 실시예에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 현재 블록(현재 코딩 유닛, 또는 CU)에 대한 스킵 플래그의 값에 의존한다. 현재 블록이 머지 스킵 모드를 사용할 때 스킵 플래그는 1과 동일하고, 그렇지 않으면 0과 동일하다.
스킵 플래그는 현재 블록에 대해 이미 디코딩되거나 파싱된 다른 변수 또는 신택스 요소의 제1 예이다. 이 다른 변수 또는 신택스 요소는 바람직하게는 현재 블록 내의 모션 정보의 복잡도의 표시자이다. 머지 인덱스 값들의 출현들은 모션 정보의 복잡도에 의존하기 때문에, 스킵 플래그와 같은 변수 또는 신택스 요소는 일반적으로 머지 인덱스 값과 상관된다.
보다 구체적으로, 머지 스킵 모드는 일반적으로 일정한 모션을 수반하는 정적 장면들 또는 장면들에 대해 선택된다. 결과적으로, 머지 인덱스 값은 일반적으로 블록 잔차를 포함하는 인터 예측을 인코딩하기 위해 사용되는 고전적인 머지 모드에 대한 것보다 머지 스킵 모드에 대해 더 낮다. 이것은 일반적으로 더 복잡한 모션에 대해 발생한다. 그러나, 이러한 모드들 사이의 선택은 종종 양자화 및/또는 RD 기준에 관련된다.
이 간단한 조치는 VTM2.0보다 코딩 효율 증가를 제공한다. 또한, 이는 이웃 블록들 또는 머지 인덱스 값들을 체크하는 것을 수반하지 않기 때문에 구현하기가 매우 간단하다.
제1 변형예에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 단순히 현재 블록의 스킵 플래그와 동일하게 설정된다. 비트는 단지 제1 비트일 수 있다. 다른 비트들은 제1 실시예에서와 같이 바이패스 코딩된다.
제2 변형예에서, 머지 인덱스의 모든 비트는 CABAC 코딩되고, 이들 각각은 머지 플래그에 따라 그 자체의 컨텍스트 변수를 갖는다. 이것은 (6개의 머지 후보들에 대응하는) 머지 인덱스에 5개의 CABAC 코딩된 비트가 있을 때 확률들의 10개의 상태를 필요로 한다.
제3 변형예에서, 상태들의 수를 제한하기 위해, 머지 인덱스의 N개의 비트만이 CABAC 코딩되고, 여기서 N은 2개 이상, 예를 들어, 제1 N개의 비트이다. 이것은 2N개의 상태를 필요로 한다. 예를 들어, 제1 2개의 비트가 CABAC 코딩될 때, 4개의 상태가 요구된다.
일반적으로, 스킵 플래그 대신에, 현재 블록에 대해 이미 디코딩되거나 파싱된 그리고 현재 블록 내의 모션 정보의 복잡도의 표시자인 임의의 다른 변수 또는 신택스 요소를 사용하는 것이 가능하다.
제11 실시예
제11 실시예는 도 11의 (a), 도 11의 (b) 및 도 12를 참조하여 전술한 바와 같은 아핀 머지 시그널링에 관한 것이다.
제11 실시예에서, 현재 블록(현재 CU)의 머지 인덱스의 CABAC 코딩된 비트에 대한 컨텍스트 변수는 머지 후보들의 리스트에서, 만약 있다면, 아핀 머지 후보들에 의존한다. 비트는 머지 인덱스의 제1 비트만이거나, 또는 제1 N개의 비트일 수 있으며, 여기서 N은 2 이상, 또는 임의의 N개의 비트이다. 다른 비트들은 바이패스 코딩된다.
아핀 예측은 복잡한 모션을 보상하도록 설계된다. 따라서, 복잡한 모션의 경우, 머지 인덱스는 일반적으로 덜 복잡한 모션의 경우보다 더 높은 값을 갖는다. 따라서, 제1 아핀 머지 후보가 리스트 훨씬 아래에 있는 경우, 또는 아핀 머지 후보가 전혀 없는 경우, 현재 CU의 머지 인덱스는 작은 값을 가질 가능성이 있다는 것이 된다.
따라서, 컨텍스트 변수가 리스트에서의 적어도 하나의 아핀 머지 후보의 존재 및/또는 위치에 의존하는 것이 효과적이다.
예를 들어, 컨텍스트 변수는:
A1이 아핀인 경우 1과 동일하게 설정될 수 있고,
B1이 아핀인 경우 2와 동일하게 설정될 수 있고,
B0이 아핀인 경우 3과 동일하게 설정될 수 있고,
A0이 아핀인 경우 4와 동일하게 설정될 수 있고,
B2가 아핀인 경우 5와 동일하게 설정될 수 있고,
어떠한 이웃 블록도 아핀이 아닌 경우 0과 동일하게 설정될 수 있다.
현재 블록의 머지 인덱스가 디코딩되거나 파싱될 때, 이러한 위치들에서의 머지 후보들의 아핀 플래그들이 이미 체크되었다. 결과적으로, 현재 블록의 머지 인덱스에 대한 컨텍스트를 도출하기 위해 추가 메모리 액세스들이 필요하지 않다.
이 실시예는 VTM2.0보다 코딩 효율 증가를 제공한다. 단계 1205는 이미 이웃 CU 아핀 모드들을 체크하는 것을 수반하기 때문에 추가 메모리 액세스들이 요구되지 않는다.
제1 변형예에서, 상태들의 수를 제한하기 위해, 컨텍스트 변수는:
어떠한 이웃 블록도 아핀이 아닌 경우, 또는 A1 또는 B1이 아핀인 경우 0과 동일하게 설정될 수 있고,
B0, A0 또는 B2가 아핀인 경우 1과 동일하게 설정될 수 있다.
제2 변형예에서, 상태들의 수를 제한하기 위해, 컨텍스트 변수는:
어떠한 이웃 블록도 아핀이 아닌 경우 0과 동일하게 설정될 수 있고,
A1 또는 B1이 아핀인 경우 1과 동일하게 설정될 수 있고,
B0, A0 또는 B2가 아핀인 경우 2와 동일하게 설정될 수 있다.
제3 변형예에서, 컨텍스트 변수는:
A1이 아핀인 경우 1과 동일하게 설정될 수 있고,
B1이 아핀인 경우 2와 동일하게 설정될 수 있고,
B0이 아핀인 경우 3과 동일하게 설정될 수 있고,
A0 또는 B2가 아핀인 경우 4와 동일하게 설정될 수 있고,
어떠한 이웃 블록도 아핀이 아닌 경우 0과 동일하게 설정될 수 있다.
이러한 위치들은, 아핀 플래그 디코딩이 이러한 위치들에 의존하기 때문에 머지 인덱스가 디코딩되거나 파싱될 때 이미 체크된다는 점에 유의한다. 결과적으로, 아핀 플래그 이후에 코딩되는 머지 인덱스 컨텍스트를 도출하기 위해 추가의 메모리 액세스가 필요하지 않다.
제12 실시예
제12 실시예에서, 아핀 모드를 시그널링하는 것은 아핀 모드를 후보 모션 예측자로서 삽입하는 것을 포함하는 아핀 모드를 포함한다.
제12 실시예의 일 예에서, 아핀 머지(및 머지 스킵)는 머지 후보로서 시그널링된다. 그 경우, 도 12의 모듈들(1205, 1206 및 1207)이 제거된다. 또한, 머지 모드의 코딩 효율에 영향을 주지 않기 위해, 머지 후보들의 최대 가능한 수가 증분된다. 예를 들어, 현재의 VTM 버전에서 이 값은 6과 동일하게 설정되어, 이 실시예를 VTM의 현재의 버전에 적용하는 경우에도 마찬가지로, 이 값은 7이 될 것이다.
장점은, 더 적은 신택스 요소들이 디코딩될 필요가 있기 때문에, 머지 모드의 신택스 요소의 설계 단순화이다. 일부 상황들에서, 코딩 효율이 관찰될 수 있다.
이 예를 구현할 2가지 가능성이 이제 설명될 것이다:
아핀 머지 인덱스는 다른 머지 MV의 값이 무엇이든 리스트에서의 동일한 위치를 항상 갖는다. 후보 모션 예측자의 위치는 그것이 선택될 가능성을 나타내며, 이와 같이 그 위치가 리스트 위에 더 높게 배치되면(더 낮은 인덱스 값), 그 모션 벡터 예측자가 선택될 가능성이 더 높다.
제1 예에서, 아핀 머지 인덱스는 머지 후보들의 리스트 내에서 항상 동일한 위치를 갖는다. 이것은 그것이 고정된 머지 idx 값을 갖는다는 것을 의미한다. 예를 들어, 아핀 머지 모드가 가장 가능성 있는 콘텐츠가 아닌 복잡한 모션을 표현해야 하므로, 이 값은 5와 동일하게 설정될 수 있다. 이 실시예의 추가적인 이점은, 현재 블록이 파싱될 때(데이터 자체를 디코딩하지 않고 단지 신택스 요소만 디코딩/판독함), 현재 블록이 아핀 블록으로서 설정될 수 있다는 것이다. 결과적으로, 이 값은 AMVP에 사용되는 아핀 플래그에 대한 CABAC 컨텍스트를 결정하기 위해 사용될 수 있다. 따라서, 이 아핀 플래그에 대해 조건부 확률들이 개선되어야 하고 코딩 효율이 더 양호해야 한다.
제2 예에서, 아핀 머지 후보는 다른 머지 후보들과 함께 도출된다. 이 예에서, 새로운 아핀 머지 후보가 머지 후보들의 리스트에 추가된다. 도 18은 이 예를 도시한다. 도 13과 비교하여, 아핀 후보는 제1 아핀 이웃 블록 A1, B1, B0, A0 B2 (1917)이다. 도 12의 1205와 동일한 조건이 유효한 경우(1927), 아핀 후보(1929)를 획득하기 위해 아핀 파라미터들로 생성된 모션 벡터 필드가 생성된다. 초기 후보들의 리스트는 ATMVP, 시간 및 아핀 후보들의 사용에 따라 4, 5, 6 또는 7개의 후보를 가질 수 있다.
모든 이러한 후보 사이의 순서는 더 많은 가능성 있는 후보들이, 모션 벡터 후보들의 목표를 달성할 가능성이 더 많다는 것을 보장하기 위해 먼저 처리되어야 하므로 중요하다 - 바람직한 순서는 다음과 같다:
A1
B1
B0
A0
아핀 머지(AFFINE MERGE)
ATMVP
B2
시간적(TEMPORAL)
조합된(Combined)
Zero_MV
아핀 머지는 ATMVP 모드보다는 앞에 있지만 4개의 주요 이웃 블록 뒤에 있다는 것에 유의하는 것이 중요하다. ATMVP 후보 이전에 아핀 머지를 설정하는 이점은, ATMVP 및 시간 예측자 이후에 그것을 설정하는 것과 비교하여, 코딩 효율 증가이다. 이러한 코딩 효율 증가는 GOP(group of pictures) 구조 및 GOP 내의 각각의 픽처의 양자화 파라미터(QP) 설정에 의존한다. 최대 사용 GOP 및 QP 설정을 제외하고서, 이 순서는 코딩 효율 증가를 제공한다.
이 솔루션의 추가의 이점은 신택스 및 도출 둘 다에 대한 머지 및 머지 스킵의 공정한 설계이다. 더욱이, 아핀 후보 머지 인덱스는 리스트에서의 이전 후보들의 이용가능성 또는 값(중복 체크)에 따라 변할 수 있다. 결과적으로, 효율적인 시그널링이 획득될 수 있다.
추가 예에서, 아핀 머지 인덱스는 하나 또는 여러 조건에 따라 가변적이다.
예를 들어, 아핀 후보와 연관된 리스트 내부의 머지 인덱스 또는 위치는 기준에 따라 변한다. 원칙은 아핀 머지가 선택될 높은 확률을 가질 때 아핀 머지에 대응하는 머지 인덱스에 대해 낮은 값(그리고 선택될 낮은 확률이 있을 때 더 높은 값)을 설정하는 것이다.
제12 실시예에서, 아핀 머지 후보는 머지 인덱스 값을 갖는다. 머지 인덱스의 코딩 효율을 개선하기 위해, 머지 인덱스의 비트에 대한 컨텍스트 변수가 이웃 블록들 및/또는 현재 블록에 대한 아핀 플래그들에 의존하게 하는 것이 효과적이다.
예를 들어, 컨텍스트 변수는 하기의 수식을 사용하여 결정될 수 있다:
ctxIdx = IsAffine(A1) + IsAffine(B1) + IsAffine(B0) + IsAffine(A0) + IsAffine(B2)
결과적인 컨텍스트 값은 값 0, 1, 2, 3 또는 4를 가질 수 있다.
아핀 플래그들은 코딩 효율을 증가시킨다.
더 적은 수의 이웃 블록들을 수반하는 제1 변형예에서, ctxIdx = IsAffine(A1) + IsAffine(B1)이다. 결과적인 컨텍스트 값은 값 0, 1 또는 2를 가질 수 있다.
또한 더 적은 수의 이웃 블록들을 수반하는 제2 변형예에서, ctxIdx = IsAffine(A2) + IsAffine(B3)이다. 다시, 결과적인 컨텍스트 값은 값 0, 1 또는 2를 가질 수 있다.
어떠한 이웃 블록들도 수반하지 않는 제3 변형예에서, ctxIdx = IsAffine(current block)이다. 결과적인 컨텍스트 값은 값 0 또는 1을 가질 수 있다.
도 16은 제3 변형예를 갖는 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다. 이 도면에서, 스킵 플래그(1601), 예측 모드(1611), 머지 플래그(1603), 머지 인덱스(1608) 및 아핀 플래그(1606)가 디코딩될 수 있다. 이 흐름도는 전술된 도 12의 흐름도와 유사하므로, 상세한 설명은 생략한다. 차이점은 아핀 머지 플래그에 대한 머지 인덱스가 존재하지만, VTM2.0에서는 그렇지 않다는 것이다. VTM2.0에서, 현재 블록의 아핀 플래그는 그것이 항상 동일한 값 "0"을 갖기 때문에 머지 인덱스에 대한 컨텍스트를 획득하기 위해 사용될 수 없다.
제13 실시예
제10 실시예에서, 현재 블록의 머지 인덱스의 비트에 대한 컨텍스트 변수는 현재 블록(현재 코딩 유닛, 또는 CU)에 대한 스킵 플래그의 값에 의존했다.
제13 실시예에서, 머지 인덱스의 타겟 비트에 대한 컨텍스트 변수를 도출하기 위해 스킵 플래그 값을 직접 사용하는 대신에, 타겟 비트에 대한 컨텍스트 값은 현재 CU의 스킵 플래그에 대한 컨텍스트 변수로부터 도출된다. 이것은 스킵 플래그 자체가 CABAC 코딩되므로 컨텍스트 변수를 갖기 때문에 가능하다.
바람직하게는, 현재 CU의 머지 인덱스의 타겟 비트에 대한 컨텍스트 변수는 현재 CU의 스킵 플래그에 대한 컨텍스트 변수와 동일하게 설정된다(그로부터 카피된다).
타겟 비트는 제1 비트만일 수 있다. 다른 비트들은 제1 실시예에서와 같이 바이패스 코딩된다.
현재 CU의 스킵 플래그에 대한 컨텍스트 변수는 VTM2.0에서 규정된 방식으로 도출된다. VTM2.0 참조 소프트웨어에 비해 이 실시예의 이점은 코딩 효율에 영향을 주지 않고 머지 인덱스 디코딩 및 디코더 설계(및 인코더 설계)의 복잡도 감소이다. 실제로, 이 실시예에서는, 현재 VTM 머지 인덱스 코딩/디코딩에 대해 5 대신에 머지 인덱스에 대해 최소 1 CABAC 상태만이 필요하다. 또한, 이는 다른 비트들은 CABAC 바이패스 코딩되고 이는 모든 비트들을 CABAC로 코딩하는 것에 비해 연산들의 수를 감소시키기 때문에 최악의 경우의 복잡도를 감소시킨다.
제14 실시예
제13 실시예에서, 타겟 비트에 대한 컨텍스트 값은 현재 CU의 스킵 플래그에 대한 컨텍스트 변수로부터 도출되었다.
제14 실시예에서, 타겟 비트에 대한 컨텍스트 값은 현재 CU의 아핀 플래그에 대한 컨텍스트 변수로부터 도출된다.
이는 아핀 플래그 자체가 CABAC 코딩되므로 컨텍스트 변수를 갖기 때문에 가능하다.
바람직하게는, 현재 CU의 머지 인덱스의 타겟 비트에 대한 컨텍스트 변수는 현재 CU의 아핀 플래그에 대한 컨텍스트 변수와 동일하게 설정된다(그로부터 카피된다).
타겟 비트는 제1 비트만일 수 있다. 다른 비트들은 제1 실시예에서와 같이 바이패스 코딩된다.
현재 CU의 아핀 플래그에 대한 컨텍스트 변수는 VTM2.0에서 규정된 방식으로 도출된다.
VTM2.0 참조 소프트웨어에 비해 이 실시예의 이점은 코딩 효율에 영향을 주지 않고 머지 인덱스 디코딩 및 디코더 설계(및 인코더 설계)의 복잡도 감소이다. 실제로, 이 실시예에서는, 현재 VTM 머지 인덱스 코딩/디코딩에 대해 5 대신에 머지 인덱스에 대해 최소 1 CABAC 상태만이 필요하다. 또한, 이는 다른 비트들은 CABAC 바이패스 코딩되고 이는 모든 비트들을 CABAC로 코딩하는 것에 비해 연산들의 수를 감소시키기 때문에 최악의 경우의 복잡도를 감소시킨다.
제15 실시예
전술한 실시예들 중 몇몇에서, 컨텍스트 변수는 2개보다 많은 값, 예를 들어, 3개의 값 0, 1 및 2를 갖는다. 그러나, 복잡도를 감소시키고, 핸들링될 상태들의 수를 감소시키기 위해, 허용 컨텍스트-변수 값들의 수를 2(예를 들어, 0 및 1)로 상한을 정하는 것이 가능하다. 이것은, 예를 들어, 값 2를 갖는 임의의 초기 컨텍스트 변수를 1로 변경함으로써 달성될 수 있다. 실제로, 이러한 단순화는 코딩 효율에 영향을 미치지 않거나 단지 제한된 영향을 미친다.
실시예들의 조합들
전술한 실시예들 중 임의의 2개 이상이 조합될 수 있다.
전술한 설명은 머지 인덱스의 인코딩 및 디코딩에 초점을 맞춘다. 예를 들어, 제1 실시예는 ATMVP 후보를 포함하는 머지 후보들의 리스트를 생성하는 것; 리스트에서의 머지 후보들 중 하나를 선택하는 것; 및 CABAC 코딩을 사용하여 선택된 머지 후보에 대한 머지 인덱스를 생성하는 것- 머지 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨 -을 수반한다. 원칙적으로, 본 발명은 모션 벡터 예측자(MVP) 후보들의 리스트를 생성하는 것; 리스트에서의 MVP 후보들 중 하나를 선택하는 것; 미치 선택된 MVP 후보에 대한 인덱스를 생성하는 것을 수반하는 머지 모드 이외의 모드들에 적용될 수 있다. 따라서, 본 발명은 머지 모드로 제한되지 않고 인코딩 또는 디코딩될 인덱스는 머지 인덱스로 제한되지 않는다. 예를 들어, VVC의 개발에서, 전술한 실시예들의 기술들은 HEVC의 AMVP 모드 또는 VVC에서의 그것의 등가 모드와 같은, 머지 모드 이외의 모드로 확장되도록 적용될 수 있다는 것을 생각할 수 있다. 첨부된 청구항들은 그에 따라 해석되어야 한다.
본 발명의 실시예들의 구현
도 20은 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스(2000)의 개략적인 블록도이다. 컴퓨팅 디바이스(2000)는 마이크로 컴퓨터(micro-computer), 워크스테이션 또는 경량 휴대용 디바이스(light portable device)와 같은 디바이스일 수 있다. 컴퓨팅 디바이스(2000)는 마이크로프로세서와 같은 중앙 처리 유닛(CPU)(2001); 본 발명의 실시예들에 따른 이미지의 적어도 일부를 인코딩 또는 디코딩하기 위한 방법을 구현하는 데 필요한 변수들 및 파라미터들을 기록하도록 적응된 레지스터들뿐만 아니라, 본 발명의 실시예들의 방법의 실행가능 코드를 저장하기 위한 랜덤 액세스 메모리(RAM)(2002)- 그것의 메모리 용량은 예를 들어, 확장 포트에 접속되는 선택적 RAM에 의해 확장될 수 있음 -; 본 발명의 실시예들을 구현하기 위한 컴퓨터 프로그램들을 저장하기 위한 판독 전용 메모리(ROM)(2003); 그를 통해 처리될 디지털 데이터가 송신되거나 수신되는 통신 네트워크에 통상적으로 접속되는 네트워크 인터페이스(NET)(2004)에 접속되는 통신 버스를 포함한다. 네트워크 인터페이스(NET)(2004)는 단일 네트워크 인터페이스일 수 있거나, 또는 상이한 네트워크 인터페이스의 세트로 이루어질 수 있다(예를 들면, 유선 및 무선 인터페이스들, 또는 상이한 종류의 유선 또는 무선 인터페이스들). 데이터 패킷들은 송신을 위해 네트워크 인터페이스에 기입되거나, CPU(2001)에서 실행되는 소프트웨어 애플리케이션의 제어 하에 수신을 위해 네트워크 인터페이스로부터 판독된다; 사용자 인터페이스(UI)(2005)는 사용자로부터 입력들을 수신하거나 사용자에게 정보를 디스플레이하기 위해 사용될 수 있다; 하드 디스크(HD)(2006)는 대용량 저장 디바이스로서 제공될 수 있다; 입력/출력 모듈(IO)(2007)은 비디오 소스 또는 디스플레이 등의 외부 디바이스들로부터/로 데이터를 수신/전송하기 위해 사용될 수 있다. 실행가능 코드는 ROM(2003)에, HD(2006) 상에 또는, 예를 들어, 디스크와 같은, 이동식 디지털 매체 상에 저장될 수 있다. 변형예에 따르면, 프로그램들의 실행가능 코드는 실행되기 전에 HD(2006)와 같은 통신 디바이스(2000)의 저장 수단 중 하나에 저장되기 위해서, NET(2004)를 통해 통신 네트워크에 의해 수신될 수 있다. CPU(2001)는, 본 발명의 실시예들에 따른 프로그램 또는 프로그램들의 의 소프트웨어 코드의 명령어들- 이 명령어들은 전술한 저장 수단 중 하나에 저장되어 있다 -또는 그 일부를 제어하고 그 실행을 명령하도록 적응된다. 전원을 켠 후에, CPU(2001)는, 예를 들어, 프로그램 ROM(2003) 또는 HD(2006)로부터 그러한 명령어들이 로딩된 후에, 소프트웨어 애플리케이션에 관련되는 주요 RAM 메모리(2002)로부터의 명령어들을 실행할 수 있다. 이러한 소프트웨어 애플리케이션은, CPU(2001)에 의해 실행될 때, 발명에 따른 방법의 단계들이 수행되게 한다.
또한, 본 발명의 다른 실시예에 따르면, 전술한 실시예에 따른 디코더는 사용자에게 콘텐츠를 제공/디스플레이할 수 있는 컴퓨터, 모바일 폰(셀룰러 폰), 테이블 또는 임의의 다른 타입의 디바이스(예를 들어, 디스플레이 장치)와 같은 사용자 단말에 제공된다는 것이 이해된다. 또 다른 실시예에 따르면, 전술한 실시예에 따른 인코더는 인코더가 인코딩할 콘텐츠를 캡처하고 제공하는 카메라, 비디오 카메라 또는 네트워크 카메라(예를 들어, 폐회로 텔레비전 또는 비디오 감시 카메라)를 또한 포함하는 이미지 캡처링 장치에 제공된다. 2개의 그러한 예가 도 20 및 도 21을 참조하여 아래에 제공된다.
도 20은 네트워크 카메라(2102) 및 클라이언트 장치(2104)를 포함하는 네트워크 카메라 시스템(2100)을 예시하는 도면이다.
네트워크 카메라(2102)는 이미징 유닛(2106), 인코딩 유닛(2108), 통신 유닛(2110) 및 제어 유닛(2112)을 포함한다.
네트워크 카메라(2102) 및 클라이언트 장치(2104)는 네트워크(200)를 통해 서로 통신할 수 있도록 상호 접속된다.
이미징 유닛(2106)은 렌즈 및 이미지 센서(예를 들어, CCD(charge coupled device) 또는 CMOS(complementary metal oxide semiconductor))를 포함하고, 물체의 이미지를 캡처하고 이미지에 기초하여 이미지 데이터를 생성한다. 이 이미지는 정지 이미지 또는 비디오 이미지일 수 있다. 이미징 유닛은 또한 각각 (광학적으로 또는 디지털적으로) 주밍(zoom) 또는 패닝(pan)하도록 적응되는 주밍 수단 및/또는 패닝 수단을 포함할 수 있다.
인코딩 유닛(2108)은 제1 내지 제15 실시예들에서 설명된 상기 인코딩 방법들을 사용하여 이미지 데이터를 인코딩한다. 인코딩 유닛(2108)은 제1 내지 제15 실시예들에서 설명된 인코딩 방법들 중 적어도 하나를 사용한다. 다른 예를 들면, 인코딩 유닛(2108)은 제1 내지 제15 실시예들에서 설명된 인코딩 방법들의 조합을 사용할 수 있다.
네트워크 카메라(2102)의 통신 유닛(2110)은 인코딩 유닛(2108)에 의해 인코딩된 이미지 데이터를 클라이언트 장치(2104)에 송신한다.
또한, 통신 유닛(2110)은 클라이언트 장치(2104)로부터 커맨드들을 수신한다. 커맨드들은 인코딩 유닛(2108)의 인코딩을 위한 파라미터들을 설정하기 위한 커맨드들을 포함한다.
제어 유닛(2112)은 통신 유닛(2110)에 의해 수신된 커맨드들에 따라 네트워크 카메라(2102) 내의 다른 유닛들을 제어한다.
클라이언트 장치(2104)는 통신 유닛(2114), 디코딩 유닛(2116), 및 제어 유닛(2118)을 포함한다.
클라이언트 장치(2104)의 통신 유닛(2118)은 커맨드들을 네트워크 카메라(2102)에 송신한다.
또한, 클라이언트 장치(2104)의 통신 유닛(2118)은 네트워크 카메라(2102)로부터 인코딩된 이미지 데이터를 수신한다.
디코딩 유닛(2116)은 제1 내지 제15 실시예들 중 임의의 실시예에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 다른 예를 들면, 디코딩 유닛(2116)은 제1 내지 제15 실시예들에서 설명된 디코딩 방법들의 조합을 사용할 수 있다.
클라이언트 장치(2104)의 제어 유닛(2118)은 통신 유닛(2114)에 의해 수신된 사용자 동작 또는 커맨드들에 따라 클라이언트 장치(2104) 내의 다른 유닛들을 제어한다.
클라이언트 장치(2104)의 제어 유닛(2118)은 디코딩 유닛(2116)에 의해 디코딩된 이미지를 디스플레이하도록 디스플레이 장치(2120)를 제어한다.
클라이언트 장치(2104)의 제어 유닛(2118)은 또한 인코딩 유닛(2108)의 인코딩을 위한 파라미터들을 포함하는 네트워크 카메라(2102)에 대한 파라미터들의 값들을 지정하기 위해 GUI(Graphical User Interface)를 디스플레이하도록 디스플레이 장치(2120)를 제어한다.
클라이언트 장치(2104)의 제어 유닛(2118)은 또한 디스플레이 장치(2120)에 의해 디스플레이된 GUI에 입력되는 사용자 동작에 따라 클라이언트 장치(2104) 내의 다른 유닛들을 제어한다.
클라이언트 장치(2104)의 제어 유닛(2118)은 디스플레이 장치(2120)에 의해 디스플레이된 GUI에 입력되는 사용자 동작에 따라, 네트워크 카메라(2102)에 대한 파라미터들의 값을 지정하는 커맨드들을 네트워크 카메라(2102)에 송신하도록 클라이언트 장치(2104)의 통신 유닛(2114)을 제어한다.
네트워크 카메라 시스템(2100)은 카메라(2102)가 비디오의 기록 동안 주밍 또는 패닝을 이용하는지를 결정할 수 있고, 이러한 정보는 비디오 스트림을 인코딩할 때 사용될 수 있는데, 그 이유는 촬영 동안 주밍 또는 패닝이 (특히 렌즈가 '어안' 렌즈인 경우 패닝의 부작용일 수 있는) 주밍, 회전 및/또는 신장과 같은 복잡한 모션을 코딩하는 데 아주 적합한 아핀 모드의 사용으로부터 이익을 얻을 수 있기 때문이다.
도 21은 스마트 폰(2200)을 나타낸 도면이다.
스마트 폰(2200)은 통신 유닛(2202), 디코딩/인코딩 유닛(2204), 제어 유닛(2206) 및 디스플레이 유닛(2208)을 포함한다.
통신 유닛(2202)은 인코딩된 이미지 데이터를 네트워크를 통해 수신한다.
디코딩 유닛(2204)은 통신 유닛(2202)에 의해 수신된 인코딩된 이미지 데이터를 디코딩한다.
디코딩 유닛(2204)은 제1 내지 제15 실시예들에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 디코딩 유닛(2204)은 제1 내지 제15 실시예들에서 설명된 디코딩 방법들 중 적어도 하나를 사용할 수 있다. 다른 예를 들면, 인코딩 유닛(2202)은 제1 내지 제15 실시예들에서 설명된 디코딩 방법들의 조합을 사용할 수 있다.
제어 유닛(2206)은 통신 유닛(2202)에 의해 수신된 사용자 동작 또는 커맨드들에 따라 스마트 폰(2200) 내의 다른 유닛들을 제어한다.
예를 들어, 제어 유닛(2206)은 디코딩 유닛(2204)에 의해 디코딩된 이미지를 디스플레이하도록 디스플레이 장치(2208)를 제어한다.
스마트 폰은 이미지들 또는 비디오들을 기록하기 위한 이미지 기록 디바이스(2210)(예를 들어, 연관된 회로의 디지털 카메라)를 추가로 포함할 수 있다. 이러한 기록된 이미지들 또는 비디오들은 제어 유닛(2206)의 명령 하에 디코딩/인코딩 유닛(2204)에 의해 인코딩될 수 있다.
스마트 폰은 모바일 디바이스의 배향을 감지하도록 적응되는 센서들(2212)을 추가로 포함할 수 있다. 이러한 센서들은 가속도계, 자이로스코프, 나침반, 글로벌 포지셔닝(GPS) 유닛 또는 유사한 위치 센서들을 포함할 수 있다. 그러한 센서들(2212)은 스마트 폰이 배향을 변경하는지를 결정할 수 있고, 그러한 정보는 비디오 스트림을 인코딩할 때 사용될 수 있는데, 그 이유는 촬영 동안의 배향의 변화가 회전들과 같은 복잡한 모션을 코딩하는 데 아주 적합한 아핀 모드의 사용으로부터 이익을 얻을 수 있기 때문이다.
대안 및 변경
본 발명의 목적은 아핀 모드가 가장 효율적인 방식으로 이용되도록 보장하는 것이고, 전술한 특정 예들은 아핀 모드가 유용하다는 인지된 가능성에 의존하여 아핀 모드의 사용을 시그널링하는 것에 관한 것임을 알 것이다. 이것의 추가 예는 (아핀 변환이 특히 효율적일 수 있는) 복잡한 모션이 인코딩되고 있는 것으로 알려질 때 인코더들에 대해 적용될 수 있다. 그러한 경우들의 예는 다음을 포함한다:
a) 카메라 주밍 인/아웃
b) 촬영 동안 배향을 변경(즉, 회전 이동)하는 휴대용 카메라(예를 들어, 모바일 폰)
c) 패닝(예를 들어, 이미지의 일부분의 신장/왜곡)하는 '어안' 렌즈 카메라
이와 같이, 복잡한 모션의 표시는 기록 프로세스 동안 상승될 수 있어, 아핀 모드에는 슬라이스, 프레임들의 시퀀스 또는 실제로 전체 비디오 스트림에 사용될 더 높은 가능성이 주어질 수 있다.
추가 예에서, 아핀 모드에는 비디오를 기록하기 위해 사용되는 디바이스의 특징 또는 기능에 따라 사용될 더 높은 가능성이 주어질 수 있다. 예를 들어, 모바일 디바이스는 (말하자면) 고정형 보안 카메라보다 배향을 변경할 가능성이 더 클 수 있어, 아핀 모드가 전자로부터의 비디오를 인코딩하기에 더 적절할 수 있다. 특징 또는 기능의 예들은 주밍 수단의 존재/사용, 위치 센서의 존재/사용, 패닝 수단의 존재/사용, 디바이스가 휴대형인지 여부, 또는 디바이스 상의 사용자 선택을 포함한다.
본 발명은 실시예들을 참고하여 설명되었지만, 본 발명이 개시된 실시예들에 한정되지 않는다는 것을 이해해야 한다. 첨부된 청구항들에 정의된 바와 같이, 본 발명의 범위를 벗어나지 않고 다양한 변경 및 수정이 이루어질 수 있다는 것을 본 기술분야의 통상의 기술자는 이해할 것이다. 본 명세서에 개시된 특징들 전부(임의의 첨부 청구범위, 요약서 및 도면 포함), 및/또는 그렇게 개시된 임의의 방법 또는 프로세스의 단계들 전부는, 이러한 특징들 및/또는 단계들 중 적어도 일부가 상호 배타적인 조합들을 제외하고, 임의의 조합으로 조합될 수 있다. 본 명세서(임의의 첨부된 특허청구범위, 요약서 및 도면 포함)에 개시된 각 특징은 달리 명백하게 언급되지 않는 한, 동일한, 등가인, 또는 유사한 목적의 대안적 특징들에 의해 대체될 수 있다. 따라서, 달리 명백하게 언급되지 않는 한, 개시된 각각의 특징부는 동등하거나 유사한 포괄적인 일련의 특징부들 중의 단지 일례이다.
위에 설명된 비교, 결정, 평가, 선택, 실행, 수행, 또는 고려의 임의의 결과, 예를 들어, 인코딩 또는 필터링 프로세스 동안 이루어진 선택은 비트스트림 내의 데이터, 예를 들어, 결과를 표시하는 플래그 또는 데이터에 표시되거나 그로부터 결정가능/추론가능할 수 있어서, 예를 들어, 디코딩 프로세스 동안, 비교, 결정, 평가, 선택, 실행, 수행, 또는 고려를 실제로 수행하는 대신에, 표시되거나 결정된/추론된 결과가 처리에서 사용될 수 있다는 것이 또한 이해된다.
청구범위에서, 단어 "포함하는"은 다른 요소들 또는 단계들을 배제하지 않고, 부정 관사 "a" 또는 "an"은 복수(plurality)를 배제하지 않는다. 상이한 특징들이 서로 다른 종속 청구항에 언급되어 있다는 단순한 사실이 이러한 특징들의 조합이 유리하게 사용될 수 없다는 것을 표시하는 것은 아니다.
특허청구범위에 나타나는 참조부호들은 오직 예시에 의한 것이며, 특허청구범위 범주에 대한 제한적인 영향을 가지지 않을 것이다.
전술한 실시예들에서, 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어, 또는 그 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체를 통해 하나 이상의 명령어 또는 코드로서 저장되거나 송신될 수 있고, 하드웨어 기반 처리 유닛에 의해 실행될 수 있다.
컴퓨터 판독가능 매체는, 데이터 저장 매체 등의 유형의 매체, 또는, 예를 들어, 통신 프로토콜에 따라, 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체에 대응하는 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파(carrier wave)와 같은 통신 매체에 일반적으로 대응할 수 있다. 데이터 저장 매체들은, 본 개시에서 설명된 기술들의 구현을 위한 명령어들, 코드 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터 판독가능 저장 매체들은, RAM, ROM, EEPROM, CD-ROM 또는 기타의 광 디스크 저장소, 자기 디스크 저장소, 또는 기타의 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령어들이나 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 기타 임의의 매체를 포함할 수 있다. 또한, 임의의 접속은 적절히 컴퓨터 판독가능 매체라고 한다. 예를 들어, 명령어들이, 동축 케이블, 광 파이버 케이블, 트위스티드 페어(twisted pair), DSL(digital subscriber line), 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술들을 사용하여 웹사이트, 서버 또는 다른 원격 소스로부터 송신되는 경우, 동축 케이블, 광 파이버 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오 및 마이크로웨이브와 같은 무선 기술들은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 반송파들, 신호들 또는 기타의 일시적인(transient) 매체들을 포함하지 않지만, 대신 비-일시적인, 유형의 저장 매체들에 관한 것임을 이해해야 한다. 본 명세서에서 사용될 때, 디스크(disk 및 disc)는 컴팩트 디스크(CD; compact disc), 레이저 디스크(laser disc), 광 디스크, DVD(digital versatile disc), 플로피 디스크(floppy disk) 및 블루-레이 디스크(Blu-ray disc)를 포함하고, 여기서 disk들은 일반적으로 데이터를 자기적으로 재생하는 반면, disc들은 데이터를 레이저들을 사용하여 광학적으로 재생한다. 전술한 것의 조합들이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
하나 이상의 DSP(digital signal processor), 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들, 또는 다른 동등한 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서에 의해 명령어들이 실행될 수 있다. 따라서, 본 명세서에서 사용되는 바와 같은 "프로세서"라는 용어는 본 명세서에서 설명되는 기술들의 구현에 적합한 임의의 전술한 구조 또는 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 양태들에서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 조합된 코덱에 통합될 수 있다. 또한, 본 기술들은 하나 이상의 회로 또는 로직 요소에서 완전히 구현될 수 있다.

Claims (18)

  1. 모션 벡터 예측자 인덱스를 인코딩하는 방법이며,
    ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
    상기 리스트에서 상기 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
    CABAC 코딩을 사용하여, 선택된 상기 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 상기 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 코딩되는, 방법.
  3. 모션 벡터 예측자 인덱스를 디코딩하는 방법이며,
    ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
    CABAC 디코딩을 사용하여 상기 모션 벡터 예측자 인덱스를 디코딩하는 단계- 상기 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
    디코딩된 상기 모션 벡터 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 벡터 예측자 후보들 중 하나를 식별하는 단계를 포함하는, 방법.
  4. 제3항에 있어서,
    상기 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 디코딩되는, 방법.
  5. 모션 벡터 예측자 인덱스를 인코딩하는 디바이스이며,
    ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
    상기 리스트에서 상기 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
    CABAC 코딩을 사용하여, 선택된 상기 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 상기 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨 -을 포함하는, 디바이스.
  6. 제5항에 있어서,
    상기 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 코딩되는, 디바이스.
  7. 모션 벡터 예측자 인덱스를 디코딩하는 디바이스이며,
    ATMVP 후보를 포함하는 모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
    CABAC 디코딩을 사용하여 상기 모션 벡터 예측자 인덱스를 디코딩하는 수단- 상기 모션 벡터 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
    디코딩된 상기 모션 벡터 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 벡터 예측자 후보들 중 하나를 식별하는 수단을 포함하는, 디바이스.
  8. 제7항에 있어서,
    상기 모션 벡터 예측자 인덱스의 제1 비트를 제외한 모든 비트는 바이패스 CABAC 디코딩되는, 디바이스.
  9. 모션 벡터 예측자 인덱스를 인코딩하는 방법이며,
    모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
    상기 리스트에서 상기 모션 벡터 예측자 후보들 중 하나를 선택하는 단계; 및
    CABAC 코딩을 사용하여, 선택된 상기 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 단계- 현재 블록의 상기 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존하는, 방법.
  11. 모션 벡터 예측자 인덱스를 디코딩하는 방법이며,
    모션 벡터 예측자 후보들의 리스트를 생성하는 단계;
    CABAC 디코딩을 사용하여 상기 모션 벡터 예측자 인덱스를 디코딩하는 단계- 현재 블록의 상기 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
    디코딩된 상기 모션 벡터 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 벡터 예측자 후보들 중 하나를 식별하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존하는, 방법.
  13. 모션 벡터 예측자 인덱스를 인코딩하는 디바이스이며,
    모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
    상기 리스트에서 상기 모션 벡터 예측자 후보들 중 하나를 선택하는 수단; 및
    CABAC 코딩을 사용하여, 선택된 상기 모션 벡터 예측자 후보에 대한 모션 벡터 예측자 인덱스를 생성하는 수단- 현재 블록의 상기 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -을 포함하는, 디바이스.
  14. 제13항에 있어서,
    상기 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존하는, 디바이스.
  15. 모션 벡터 예측자 인덱스를 디코딩하는 디바이스이며,
    모션 벡터 예측자 후보들의 리스트를 생성하는 수단;
    CABAC 디코딩을 사용하여 상기 모션 벡터 예측자 인덱스를 디코딩하는 수단- 현재 블록의 상기 모션 벡터 예측자 인덱스의 적어도 하나의 비트에 대한 컨텍스트 변수는 상기 리스트에서 아핀 모션 벡터 예측자 후보들(만약 있다면)에 의존함 -; 및
    디코딩된 상기 모션 벡터 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 벡터 예측자 후보들 중 하나를 식별하는 수단을 포함하는, 디바이스.
  16. 제15항에 있어서,
    상기 컨텍스트 변수는 제1 아핀 모션 벡터 예측자 후보의 리스트에서의 위치에 의존하는, 방법.
  17. 프로그램이며,
    컴퓨터 또는 프로세서에서 실행될 때 상기 컴퓨터 또는 프로세서로 하여금 제1항 내지 제4항 또는 제9항 내지 제12항 중 어느 한 항의 방법을 수행하게 하는, 프로그램.
  18. 캐리어 매체이며,
    제17항의 프로그램을 운반하는, 캐리어 매체.
KR1020217010886A 2018-09-21 2019-09-19 비디오 코딩을 위한 모션 벡터 예측자 인덱스 코딩 KR20210058906A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GBGB1815443.5A GB201815443D0 (en) 2018-09-21 2018-09-21 Video coding and decoding
GB1815443.5 2018-09-21
GB1815564.8 2018-09-24
GB1815564.8A GB2579763B (en) 2018-09-21 2018-09-24 Video coding and decoding
PCT/EP2019/075224 WO2020058433A1 (en) 2018-09-21 2019-09-19 Motion vector predictor index coding for video coding

Publications (1)

Publication Number Publication Date
KR20210058906A true KR20210058906A (ko) 2021-05-24

Family

ID=67999661

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217010886A KR20210058906A (ko) 2018-09-21 2019-09-19 비디오 코딩을 위한 모션 벡터 예측자 인덱스 코딩

Country Status (8)

Country Link
US (6) US11601671B2 (ko)
EP (1) EP3854083A1 (ko)
JP (2) JP2022501868A (ko)
KR (1) KR20210058906A (ko)
CN (6) CN117939140A (ko)
GB (1) GB2579763B (ko)
TW (1) TWI782233B (ko)
WO (1) WO2020058433A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2023010864A (es) * 2018-12-31 2024-04-23 Beijing Dajia Internet Information Tech Co Ltd Sistema y método de señalización de modos de fusión de movimiento en codificación de video.
CN113950840A (zh) * 2019-05-25 2022-01-18 北京字节跳动网络技术有限公司 帧内块复制编解码的块的Merge候选的约束
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
WO2023158766A1 (en) * 2022-02-16 2023-08-24 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107071460B (zh) * 2010-12-14 2020-03-06 M&K控股株式会社 用于编码运动画面的设备
AU2015272007B2 (en) * 2011-04-20 2018-02-01 Qualcomm Incorporated Motion vector prediction in video coding
GB2559226B (en) * 2011-09-09 2018-11-28 Kt Corp Method for deriving a temporal predictive motion vector
US9083983B2 (en) * 2011-10-04 2015-07-14 Qualcomm Incorporated Motion vector predictor candidate clipping removal for video coding
KR20130050405A (ko) * 2011-11-07 2013-05-16 오수미 인터 모드에서의 시간 후보자 결정방법
CN107635137B (zh) * 2011-11-08 2020-10-16 株式会社Kt 利用解码装置对视频信号进行解码的方法
JP6139701B2 (ja) * 2013-01-07 2017-05-31 ヴィド スケール インコーポレイテッド スケーラブルビデオ符号化のための動き情報シグナリング
KR101789954B1 (ko) 2013-12-27 2017-10-25 인텔 코포레이션 차세대 비디오 코딩을 위한 콘텐츠 적응적 이득 보상된 예측
GB2524476B (en) * 2014-03-14 2016-04-27 Canon Kk Method, device and computer program for optimizing transmission of motion vector related information when transmitting a video stream
CN107113446A (zh) * 2014-12-09 2017-08-29 联发科技股份有限公司 视频编码中的运动矢量预测子或合并候选的推导方法
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
CN106559669B (zh) 2015-09-29 2018-10-09 华为技术有限公司 预测图像编解码方法及装置
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
KR102201604B1 (ko) * 2016-08-04 2021-01-12 후아웨이 테크놀러지 컴퍼니 리미티드 예측 파라미터들에서의 데이터 숨김을 위한 방법 및 장치
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
ES2927560T3 (es) * 2016-12-05 2022-11-08 Lg Electronics Inc Aparato de decodificación de vídeo, aparato de codificación de vídeo, medio de almacenamiento y método para la trasmisión
US10701391B2 (en) 2017-03-23 2020-06-30 Qualcomm Incorporated Motion vector difference (MVD) prediction
JP2021016016A (ja) * 2017-10-20 2021-02-12 シャープ株式会社 動画像符号化装置及び動画像復号装置

Also Published As

Publication number Publication date
US20230209085A1 (en) 2023-06-29
US20230283803A1 (en) 2023-09-07
JP2023053273A (ja) 2023-04-12
JP2022501868A (ja) 2022-01-06
CN117939141A (zh) 2024-04-26
EP3854083A1 (en) 2021-07-28
GB201815564D0 (en) 2018-11-07
CN113056910A (zh) 2021-06-29
GB2579763B (en) 2021-06-09
CN117939142A (zh) 2024-04-26
US11601671B2 (en) 2023-03-07
US20230269394A1 (en) 2023-08-24
CN117939139A (zh) 2024-04-26
US20220030269A1 (en) 2022-01-27
TW202013976A (zh) 2020-04-01
US20230283802A1 (en) 2023-09-07
GB2579763A (en) 2020-07-08
CN117939138A (zh) 2024-04-26
CN113056910B (zh) 2024-01-12
CN117939140A (zh) 2024-04-26
TWI782233B (zh) 2022-11-01
US20230247219A1 (en) 2023-08-03
WO2020058433A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
US11856186B2 (en) Encoding and decoding information about a motion information predictor
US11601671B2 (en) Video coding and decoding
US20240107054A1 (en) Video coding and decoding
GB2595051A (en) Video coding and decoding
US11849108B2 (en) Video coding and decoding
GB2606278A (en) Video coding and decoding
GB2606277A (en) Video coding and decoding
GB2606280A (en) Video coding and decoding
GB2606279A (en) Video coding and decoding

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal