KR20210069713A - 비디오 코딩 및 디코딩 - Google Patents

비디오 코딩 및 디코딩 Download PDF

Info

Publication number
KR20210069713A
KR20210069713A KR1020217013967A KR20217013967A KR20210069713A KR 20210069713 A KR20210069713 A KR 20210069713A KR 1020217013967 A KR1020217013967 A KR 1020217013967A KR 20217013967 A KR20217013967 A KR 20217013967A KR 20210069713 A KR20210069713 A KR 20210069713A
Authority
KR
South Korea
Prior art keywords
index
motion information
merge
candidates
motion vector
Prior art date
Application number
KR1020217013967A
Other languages
English (en)
Inventor
기욤 라로쉬
크리스토프 지스께
파트리스 오노
조나단 따께
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20210069713A publication Critical patent/KR20210069713A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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

아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 인코딩하는 방법은 다음을 포함한다: 모션 정보 예측자 후보들의 리스트를 생성하는 단계; 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하는 단계; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 단계- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -.

Description

비디오 코딩 및 디코딩
본 발명은 비디오 코딩 및 디코딩에 관한 것이다.
최근에, MPEG 및 ITU-T 연구 그룹 16(ITU-T Study Group 16)의 VCEG에 의해 형성된 공동 팀인, JVET(Joint Video Experts Team)은 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에서의 모션 보상은 변환들로 제한되지만, 실제로는 많은 종류의 모션, 예를 들어, 주밍 인/아웃, 회전, 원근 모션들 및 다른 불규칙한 모션들이 존재한다. 아핀 모션 모드를 사용할 때, 이러한 형태의 모션을 보다 정확하게 예측하려고 시도하기 위해 블록에 보다 복잡한 변환이 적용된다. 따라서, 양호한 코딩 효율을 달성하면서도 복잡성은 적으면서 아핀 모션 모드가 사용될 수 있다면 바람직할 것이다.
HEVC에 존재하지 않는 다른 툴은 ATMVP(Alternative Temporal Motion Vector Prediction)를 사용하는 것이다. ATMVP(alternative temporal motion vector prediction)는 특정 모션 보상이다. 시간적 참조 프레임으로부터 현재 블록에 대한 하나의 모션 정보만을 고려하는 대신에, 각각의 병치된 블록의 각각의 모션 정보가 고려된다. 따라서, 이러한 시간적 모션 벡터 예측은 각각의 서브 블록의 관련 모션 정보를 갖는 현재 블록의 세그먼테이션을 제공한다. 현재의 VTM(VVC Test Model) 참조 소프트웨어에서, ATMVP는 머지(merge) 후보 리스트에 삽입된 머지 후보로서 시그널링된다. ATMVP가 SPS 레벨에서 인에이블될 때, 머지 후보들의 최대 수는 1만큼 증가된다. 따라서 이 모드가 디스에이블될 때 5개 대신 6개 후보가 고려된다.
후술하는 이러한 툴들 및 다른 툴들은 후보 리스트 중에서(예를 들면 머지 모드 코딩에 사용할 머지 후보 리스트로부터) 어느 후보가 선택되는지를 시그널링하는 데 사용되는 인덱스(예를 들면 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개의 상이한 가능한 값을 가짐 -; 및
디코딩된 모션 벡터 예측자 인덱스를 사용하여 리스트에서의 모션 벡터 예측자 후보들 중 하나를 식별하는 수단.
본 발명의 또 다른 양태들은 컴퓨터 또는 프로세서에 의해 실행될 때 컴퓨터 또는 프로세서로 하여금 전술한 양태들의 방법들 중 임의의 것을 수행하게 하는 프로그램들에 관한 것이다. 프로그램은 그 자체로 제공될 수 있거나, 캐리어 매체 상에서, 캐리어 매체에 의해 또는 캐리어 매체 내에서 운반될 수 있다. 캐리어 매체는 비일시적, 예를 들어, 저장 매체, 특히 컴퓨터 판독가능 저장 매체일 수 있다. 캐리어 매체는 또한 일시적일 수 있는데, 예를 들어, 신호 또는 다른 송신 매체일 수 있다. 신호는 인터넷을 포함하는 임의의 적절한 네트워크를 통해 송신될 수 있다.
본 발명의 또 다른 양태들은 전술한 디바이스 양태들 중 임의의 것에 따른 디바이스를 포함하는 카메라에 관한 것이다. 일 실시예에서, 카메라는 주밍(zooming) 수단을 추가로 포함한다.
본 발명의 제41 양태에 따르면, 모션 정보 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하는 단계; 아핀 머지 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하는 단계; 비-아핀 머지 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 선택하는 단계; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 단계- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -.
적절히, CABAC 코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함한다. 대안적으로, CABAC 코딩은 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해, 아핀 머지 모드가 사용될 때 제1 컨텍스트 변수를 사용하는 것 또는 비-아핀 머지 모드가 사용될 때 제2 컨텍스트 변수를 사용하는 것을 포함하고; 방법은 아핀 머지 모드가 사용될 때 비트스트림 내의 아핀 머지 모드의 사용을 표시하기 위한 데이터를 포함시키는 단계를 추가로 포함한다.
적절히, 방법은 비트스트림에서 생성된 모션 정보 예측자 후보 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 포함하는 단계를 추가로 포함한다. 적절히, 모션 정보 예측자 인덱스의 제1 비트를 제외한 모든 비트들은 바이패스 CABAC 코딩된다. 적절히, 제1 비트는 CABAC 코딩된다. 적절히, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 동일한 신택스 요소를 사용하여 인코딩된다.
본 발명의 제42 양태에 따르면, 모션 정보 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하는 단계; CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하는 단계- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하는 단계; 및 비-아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 식별하는 단계.
적절히, CABAC 디코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함한다. 대안적으로, 방법은 비트스트림으로부터 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, CABAC 디코딩은 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해: 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때, 제1 컨텍스트 변수를 사용하는 것; 및 획득된 데이터가 비-아핀 머지 모드의 사용을 나타낼 때, 제2 컨텍스트 변수를 사용하는 것을 포함한다.
적절히, 방법은 비트스트림으로부터 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, 생성된 모션 정보 예측자 후보 리스트는 다음을 포함한다: 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때의 아핀 머지 모드 예측자 후보들; 및 획득된 데이터가 비-아핀 머지 모드의 사용을 표시할 때의 비-아핀 머지 모드 예측자 후보들.
적절히, 방법은 비트스트림으로부터, 생성된 모션 정보 예측자 후보 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 획득하는 단계를 추가로 포함한다. 적절히, 모션 정보 예측자 인덱스의 제1 비트를 제외한 모든 비트들은 바이패스 CABAC 디코딩된다. 적절히, 제1 비트는 CABAC 디코딩된다. 적절히, 모션 정보 예측자 인덱스를 디코딩하는 것은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 비트스트림으로부터 동일한 신택스 요소를 파싱하는 것을 포함한다. 적절히, 모션 정보 예측자 후보는 모션 벡터를 획득하기 위한 정보를 포함한다. 적절히, 생성된 모션 정보 예측자 후보 리스트는 ATMVP 후보를 포함한다. 적절히, 생성된 모션 정보 예측자 후보 리스트는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 그 안에 포함가능한 모션 정보 예측자 후보들의 최대 수가 동일하다.
본 발명의 제43 양태에 따르면, 모션 정보 예측자 인덱스를 인코딩하는 디바이스가 제공되고, 이 디바이스는 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하는 수단; 아핀 머지 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하기 위한 수단; 비-아핀 머지 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 선택하기 위한 수단; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하기 위한 수단- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨-. 적절히, 디바이스는 제41 양태에 따른 모션 정보 예측자 인덱스를 인코딩하는 방법을 수행하는 수단을 포함한다.
본 발명의 제44 양태에 따르면, 모션 정보 예측자 인덱스를 디코딩하기 위한 디바이스가 제공되고, 이 디바이스는 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하기 위한 수단; CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하기 위한 수단- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하기 위한 수단; 및 비-아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여, 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 식별하기 위한 수단. 적절히, 디바이스는 제42 양태에 따른 모션 정보 예측자 인덱스를 디코딩하는 방법을 수행하는 수단을 포함한다.
본 발명의 제45 양태에 따르면, 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 인코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하는 단계; 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하는 단계; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 단계- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -.
적절히, 비-아핀 머지 모드가 사용될 때, 방법은 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 선택하는 단계를 추가로 포함한다. 적절히, CABAC 코딩은 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해, 아핀 머지 모드가 사용될 때 제1 컨텍스트 변수를 사용하거나, 또는 비-아핀 머지 모드가 사용될 때 제2 컨텍스트 변수를 사용하는 것을 포함하고; 방법은 아핀 머지 모드가 사용될 때 비트스트림에서 아핀 머지 모드의 사용을 표시하기 위한 데이터를 포함하는 단계를 추가로 포함한다. 대안적으로, CABAC 코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함한다.
적절히, 방법은 비트스트림에서 생성된 모션 정보 예측자 후보 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 포함하는 단계를 추가로 포함한다.
적절히, 모션 정보 예측자 인덱스의 제1 비트를 제외한 모든 비트들은 바이패스 CABAC 코딩된다. 적절히, 제1 비트는 CABAC 코딩된다. 적절히, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 동일한 신택스 요소를 사용하여 인코딩된다.
본 발명의 제46 양태에 따르면, 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 디코딩하는 방법이 제공되고, 이 방법은 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하는 단계; CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하는 단계- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및 아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하는 단계.
적절히, 비-아핀 머지 모드가 사용될 때, 방법은 디코딩된 모션 정보 예측자 인덱스를 사용하여, 리스트에서의 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 식별하는 단계를 추가로 포함한다. 적절히, 방법은 비트스트림으로부터 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, CABAC 디코딩은 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해, 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때, 제1 컨텍스트 변수를 사용하는 것; 및 획득된 데이터가 비-아핀 머지 모드의 사용을 표시할 때, 제2 컨텍스트 변수를 사용하는 것을 포함한다. 대안적으로, CABAC 디코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함한다.
적절히, 방법은 비트스트림으로부터 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, 생성된 모션 정보 예측자 후보 리스트는 다음을 포함한다: 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때의 아핀 머지 모드 예측자 후보들; 및 획득된 데이터가 비-아핀 머지 모드의 사용을 표시할 때의 비-아핀 머지 모드 예측자 후보들.
적절히, 모션 정보 예측자 인덱스를 디코딩하는 것은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 동일한 신택스 요소를 비트스트림으로부터 파싱하는 것을 포함한다. 적절히, 방법은 비트스트림으로부터, 생성된 모션 정보 예측자 후보 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 획득하는 단계를 추가로 포함한다. 적절히, 모션 정보 예측자 인덱스의 제1 비트를 제외한 모든 비트들은 바이패스 CABAC 디코딩된다. 적절히, 제1 비트는 CABAC 디코딩된다. 적절히, 모션 정보 예측자 후보는 모션 벡터를 획득하기 위한 정보를 포함한다. 적절히, 생성된 모션 정보 예측자 후보 리스트는 ATMVP 후보를 포함한다. 적절히, 생성된 모션 정보 예측자 후보 리스트는 아핀 머지 모드가 사용될 때 그리고 비-아핀 머지 모드가 사용될 때 그 안에 포함가능한 모션 정보 예측자 후보들의 최대 수가 동일하다.
본 발명의 제47 양태에 따르면, 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 인코딩하기 위한 디바이스가 제공되고, 이 디바이스는 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하기 위한 수단; 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하기 위한 수단; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하기 위한 수단- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨 -. 적절히, 디바이스는 제45 양태에 따른 모션 정보 예측자 인덱스를 인코딩하는 방법을 수행하는 수단을 포함한다.
본 발명의 제48 양태에 따르면 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 디코딩하기 위한 디바이스가 제공되고, 이 디바이스는 다음을 포함한다: 모션 정보 예측자 후보 리스트를 생성하기 위한 수단; CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하기 위한 수단- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및 아핀 머지 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하기 위한 수단. 적절히, 디바이스는 제46 양태에 따른 모션 정보 예측자 인덱스를 디코딩하는 방법을 수행하는 수단을 포함한다.
일 실시예에서, 카메라는 상기 주밍 수단이 가동 준비가 갖춰진(operational) 때를 표시하고, 주밍 수단이 가동 준비가 갖춰졌다는 상기 표시에 의존하여 아핀 모드를 시그널링하도록 적응된다.
다른 실시예에서, 카메라는 패닝(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은 스마트 폰을 도시하는 도면이다.
도 22는 제16 실시예에 따른 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다.
도 23은 머지 모드 및 아핀 머지 모드 모두에 대한 단일 인덱스 시그널링 스킴의 사용을 도시하는 흐름도이다. 및
도 24는 아핀 머지 모드에 대한 아핀 머지 후보 도출 프로세스를 도시하는 흐름도이다.
아래에 설명되는 본 발명의 실시예들은 CABAC를 사용하여 인덱스들의 인코딩 및 디코딩을 개선하는 것에 관한 것이다. 본 발명의 대안적인 실시예들에 따르면, 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개의 상이한 파티션을 포함하여 (6)으로 도시된 바와 같은 CU의 PU들로의 다양한 상이한 파티션들이 가능하다. 변환 유닛은 DCT를 사용하여 공간적 변환이 실시되는 기본 유닛이다. CU는 쿼드트리 표현(7)에 기초하여 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는 다시점(multiview) 및 확장성(scalability)을 위한 특정 계층화된 확장들을 가지며, 이들은 이전 버전과 호환가능한(backwards compatible) 버전 1 기본 계층으로, 다수의 계층을 인에이블할 것이다.
도 2 및 도 18은 본 발명의 하나 이상의 실시예가 구현될 수 있는 데이터 통신 시스템을 나타낸다. 데이터 통신 시스템은 데이터 통신 네트워크(200)를 통해 데이터 스트림(예를 들어, 비트스트림(101))의 데이터 패킷들을 수신 디바이스(195)[예를 들어, 클라이언트 단말(202)]로 송신하도록 동작가능한 송신 디바이스(191)[예를 들어, 서버(201)]를 포함한다. 데이터 통신 네트워크(200)는 WAN(Wide Area Network) 또는 LAN(Local Area Network)일 수 있다. 이러한 네트워크는, 예를 들어, 무선 네트워크(WiFi/802.11a 또는 b 또는 g), 이더넷 네트워크, 인터넷 네트워크, 또는 몇 개의 상이한 네트워크들로 이루어진 혼합형(mixed) 네트워크일 수 있다. 본 발명의 특정의 실시예에서, 데이터 통신 시스템은 서버(201)가 동일한 데이터 콘텐츠를 다수의 클라이언트로 전송하는 디지털 텔레비전 방송 시스템일 수 있다.
서버(201)에 의해 제공되는 데이터 스트림(204)(또는 비트스트림(101))은 비디오(예를 들어, 이미지들의 시퀀스(151)) 및 오디오 데이터를 표현하는 멀티미디어 데이터로 이루어져 있을 수 있다. 본 발명의 일부 실시예들에서, 오디오 및 비디오 데이터 스트림들은 각각 마이크로폰 및 카메라를 사용하여 서버(201)에 의해 캡처될 수 있다. 일부 실시예들에서, 데이터 스트림들은 서버(201)에 저장되거나 다른 데이터 제공자로부터 서버(201)에 의해 수신되거나, 또는 서버(201)에서 발생될 수 있다. 서버(201)는 특히 인코더에 입력으로서 제시되는 데이터의 보다 콤팩트한 표현인 송신을 위한 압축된 비트스트림(101)을 제공하기 위해 비디오 및 오디오 스트림들을 인코딩하는 인코더(150)를 구비한다.
송신된 데이터의 품질 대 송신된 데이터의 양에 대한 보다 나은 비(ratio)를 획득하기 위해, 비디오 데이터의 압축은, 예를 들어, HEVC 포맷 또는 H.264/AVC 포맷 또는 VVC 포맷을 따를 수 있다.
클라이언트(202)는 송신된 비트스트림(101)을 수신하고, 그의 디코더(100)는 디스플레이 디바이스 상에서 비디오 이미지들(예를 들어, 비디오 신호 (109))을 그리고 라우드 스피커에 의해 오디오 데이터를 재생하기 위해 재구성된 비트스트림을 디코딩한다.
도 2 및 도 18의 예에서 스트리밍 시나리오가 고려되지만, 본 발명의 일부 실시예들에서, 인코더와 디코더 사이의 데이터 통신이, 예를 들어, 광 디스크와 같은 미디어 저장 디바이스를 사용하여 수행될 수 있다는 것을 이해할 것이다.
본 발명의 하나 이상의 실시예에서, 비디오 이미지가 최종 이미지에서 필터링된 픽셀들을 제공하기 위해 이미지의 재구성된 픽셀들에 적용하기 위한 보상 오프셋들을 나타내는 데이터와 함께 송신된다.
도 3은 본 발명의 적어도 하나의 실시예를 구현하도록 구성되는 처리 디바이스(300)를 개략적으로 도시한다. 처리 디바이스(300)는 마이크로컴퓨터, 워크스테이션, 또는 경량 휴대용 디바이스와 같은 디바이스일 수 있다. 디바이스(300)는 통신 버스(313)를 포함하고, 이 통신 버스는:
-CPU로 표시된 마이크로프로세서와 같은 중앙 처리 유닛(311);
-본 발명을 구현하는 컴퓨터 프로그램들을 저장하는, ROM으로 표시된 판독 전용 메모리(307);
-본 발명의 실시예들의 방법의 실행가능 코드뿐만 아니라 디지털 이미지들의 시퀀스를 인코딩하는 방법 및/또는 본 발명의 실시예들에 따른 비트스트림을 디코딩하는 방법을 구현하기 위해 필요한 변수들 및 파라미터들을 기록하도록 적응되는 레지스터들을 저장하기 위한, RAM으로 표시되는 랜덤 액세스 메모리(312); 및
-통신 네트워크(303)(처리될 디지털 데이터가 이를 통해 송신되거나 수신됨)에 접속된 통신 인터페이스(302)에 접속된다.
선택적으로, 장치(300)는 또한 다음의 컴포넌트들을 포함할 수 있다:
-본 발명의 하나 이상의 실시예의 방법들을 구현하기 위한 컴퓨터 프로그램들 및 본 발명의 하나 이상의 실시예의 구현 동안 사용되거나 생성되는 데이터를 저장하기 위한, 하드 디스크와 같은 데이터 저장 수단(304);
-디스크(306)를 위한 디스크 드라이브(305)- 디스크 드라이브는 디스크(306)로부터 데이터를 판독하거나 상기 디스크에 데이터를 기입하도록 적응됨 -; 및
-키보드(310) 또는 임의의 다른 포인팅 수단에 의해, 데이터를 디스플레이하고 및/또는 사용자와의 그래픽 인터페이스로서 역할을 하기 위한 스크린(309).
장치(300)는, 예를 들어, 디지털 카메라(320) 또는 마이크로폰(308)과 같은 다양한 주변기기에 접속될 수 있고, 각각은 멀티미디어 데이터를 장치(300)에 제공하기 위해 입력/출력 카드(도시되지 않음)에 접속되어 있다.
통신 버스(313)는 장치(300)에 포함되거나 이에 접속되는 다양한 요소들 사이에 통신 및 상호운용성을 제공한다. 버스의 표현은 제한하는 것이 아니며, 특히, 중앙 처리 유닛은 명령어들을 직접 또는 장치(300)의 다른 요소에 의해 장치(300)의 임의의 요소로 통신하도록 동작가능하다.
디스크(306)는, 예를 들어, 콤팩트 디스크(CD-ROM)(재기입가능하거나 그렇지 않음), ZIP 디스크 또는 메모리 카드와 같은 임의의 정보 매체로, 그리고, 일반적인 표현으로, 마이크로컴퓨터에 의해 또는 마이크로프로세서에 의해 판독되고, 장치 내에 통합되어 있거나 그렇지 않으며, 가능하게는 이동식이고 하나 이상의 프로그램- 그의 실행은 구현될 본 발명에 따른 디지털 이미지 시퀀스를 인코딩하는 방법 및/또는 비트스트림을 디코딩하는 방법을 인에이블함 -을 저장하도록 적응될 수 있는 정보 저장 수단으로 대체될 수 있다.
실행가능 코드는 전술한 바와 같이 판독 전용 메모리(307) 내에, 하드 디스크(304) 상에 또는 예를 들어, 디스크(306)와 같은 이동식 디지털 매체 상에 저장될 수 있다. 변형예에 따르면, 프로그램들의 실행가능 코드는, 실행 전에 장치(300)의 저장 수단 중의 하나, 예컨대, 하드 디스크(304)에 저장되도록, 인터페이스(302)를 통해 통신 네트워크(303)에 의해 수신될 수 있다.
중앙 처리 유닛(311)은 본 발명에 따르는 프로그램 또는 프로그램들의 명령어들 또는 소프트웨어 코드의 일부분, 전술된 저장 수단 중 하나에 저장된 명령어들의 실행을 제어하거나 지시하도록 적응된다. 파워업 시, 비휘발성 메모리, 예를 들어, 하드 디스크(304) 및 판독 전용 메모리(307)에 저장되는 프로그램 또는 프로그램들은 그 후 본 발명을 구현하는 데 필요한 변수들 및 파라미터들을 저장하는 레지스터들뿐만 아니라 프로그램 또는 프로그램들의 실행가능 코드를 포함하는 랜덤 액세스 메모리(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 예측에서, 예측 방향이 인코딩된다. 모듈들(404, 405, 416, 418, 417) 에 의해 구현되는 인터 예측에서는, 적어도 하나의 모션 벡터 또는 그러한 모션 벡터를 식별하기 위한 데이터가 시간적 예측을 위해 인코딩된다.
인터 예측이 선택되는 경우, 모션 벡터 관련 정보 및 잔차 블록이 인코딩된다. 비트레이트를 추가로 감소시키기 위해, 모션이 균질하다고 가정하여, 모션 벡터가 모션 벡터 예측자에 대한 차이에 의해 인코딩된다. 모션 정보 예측자 후보들의 세트로부터의 모션 벡터 예측자들은 모션 벡터 예측 및 코딩 모듈(417)에 의해 모션 벡터 필드(418)로부터 획득된다.
인코더(400)는 레이트 왜곡 기준(rate-distortion criterion)과 같은 인코딩 비용 기준을 적용함으로써 코딩 모드를 선택하는 선택 모듈(406)을 추가로 포함한다. 중복성(redundancy)들을 추가로 감소시키기 위해, 변환 모듈(407)에 의해 변환(DCT 등)이 잔차 블록에 적용되고, 획득되는 변환된 데이터는 이어서 양자화 모듈(408)에 의해 양자화되고, 엔트로피 인코딩 모듈(409)에 의해 엔트로피 인코딩된다. 마지막으로, 인코딩되고 있는 현재 블록의 인코딩된 잔차 블록이 비트스트림(410)에 삽입된다.
인코더(400)는 또한, 후속 이미지들의 모션 추정을 위한 참조 이미지(예를 들어, 참조 이미지들/픽처들(416)) 내의 이미지들)를 생성하기 위해 인코딩된 이미지의 디코딩을 수행한다. 이것은 비트스트림을 수신하는 인코더 및 디코더가 동일한 참조 프레임들을 가질 수 있게 해준다(재구성된 이미지들 또는 이미지 부분들이 사용됨). 역 양자화("탈양자화") 모듈(411)은, 역 변환 모듈(412)에 의한 역 변환에 선행하여, 양자화된 데이터의 역 양자화("탈양자화")를 수행한다. 인트라 예측(intra prediction) 모듈(413)은 주어진 블록에 대해 어느 예측자를 사용할지를 결정하기 위해 예측 정보를 사용하고, 모션 보상(motion compensation) 모듈(414)은 실제로 모듈(412)에 의해 획득된 잔차를 참조 이미지 세트(416)로부터 획득된 참조 영역에 추가한다.
재구성된 픽셀 프레임(이미지 또는 이미지 부분들)을 필터링하기 위해 사후 필터링이 이어서 모듈(415)에 의해 적용된다. 본 발명의 실시예들에서, 보상 오프셋들이 재구성된 이미지의 재구성된 픽셀들의 픽셀 값들에 추가되는 SAO 루프 필터가 사용된다. 사후 필터링이 항상 수행될 필요는 없다는 것이 이해된다. 또한, 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는 사용되는 엔트로피 코딩 방법 중 하나이다. 많은 비트들은 또한 바이패스 CABAC 코딩된다. 또한, 일부 신택스 요소들은 다른 타입들의 엔트로피 코드들인 단항 코드들 또는 골롬 코드들로 코딩된다.
도 17은 CABAC 인코더의 주요 블록들을 도시한다.
비-이진 값인 입력 신택스 요소는 이진화기(1701)에 의해 이진화된다. CABAC의 코딩 전략은 모션 벡터 차이들 또는 변환 계수 레벨 값들의 성분들과 같은 하이브리드 블록 기반 비디오 코더에서의 신택스 요소 값들의 매우 효율적인 코딩이 컨텍스트 모델링 및 이진 산술 코딩의 후속 스테이지들에 대한 일종의 전처리 유닛으로서 이진화 스킴을 사용함으로써 달성될 수 있다는 발견에 기초한다. 일반적으로, 이진화 스킴은 이진 코드 트리의 관점에서 또한 해석될 수 있는 이진 결정들, 소위 빈들의 시퀀스들에 대한 신택스 요소 값들의 고유 매핑을 정의한다. CABAC에서의 이진화 스킴들의 설계는, 그 구조가 간단한 온라인 계산을 가능하게 하며 일부 적절한 모델 확률 분포들에 적응된 몇몇 기본 프로토타입들에 기초한다.
각각의 빈은 스위치(1702)의 설정에 따라 두 가지 기본 방식 중 하나로 처리될 수 있다. 스위치가 "정규" 설정에 있을 때, 빈은 컨텍스트 모델러(1703) 및 정규 코딩 엔진(1704)에 공급된다. 스위치가 "바이패스" 설정에 있을 때, 컨텍스트 모델러는 바이패스되고 빈은 바이패스 코딩 엔진(1705)에 공급된다. 다른 스위치(1706)는 코딩 엔진들(1704 및 1705) 중 적용가능한 것에 의해 코딩된 빈들이 CABAC 인코더의 출력으로서 비트스트림을 형성할 수 있도록 스위치(1702)와 유사한 "정규" 및 "바이패스" 설정들을 갖는다.
다른 스위치(1706)는 비트스트림에서 바이패스 코딩된 데이터의 블록을 제공하기 위해 코딩 엔진(1705)에 의해 코딩된 빈들 중 일부(예를 들어, 블록 또는 코딩 유닛을 인코딩하기 위한 빈들)를 그룹화하고, 비트스트림에서 "정규" (또는 산술적으로) 코딩된 데이터의 다른 블록을 제공하기 위해 코딩 엔진(1704)에 의해 코딩된 빈들 중 일부(예를 들어, 블록 또는 코딩 유닛을 인코딩하기 위한 빈들)를 그룹화하기 위한 저장소와 함께 사용될 수 있다는 것이 이해된다. 이러한 바이패스 코딩된 및 정규 코딩된 데이터의 별개의 그룹화는 디코딩 프로세스 동안 향상된 처리량으로 이어질 수 있다.
각각의 신택스 요소 값을 빈들의 시퀀스로 분해함으로써, CABAC에서의 각각의 빈 값의 추가 처리는 연관 코딩 모드 결정에 의존하며, 이는 정규 또는 바이패스 모드로서 선택될 수 있다. 후자는, 균일하게 분포되는 것으로 가정되는, 하위 유효 빈들에 대해 또는 부호 정보에 관련된 빈들에 대해 선택되며, 이에 대해, 결과적으로, 전체 정규 이진 산술 인코딩 프로세스는 단순히 바이패스된다. 정규 코딩 모드에서, 각각의 빈 값은 정규 이진 산술 코딩 엔진을 사용하여 인코딩되며, 연관된 확률 모델은 어떠한 컨텍스트 모델링도 없이 고정된 선택에 의해 결정되거나, 관련 컨텍스트 모델에 의존하여 적응적으로 선택된다. 중요한 설계 결정으로서, 후자의 경우는 일반적으로 가장 빈번히 관찰되는 빈들에만 적용되는 반면, 다른, 보통 덜 빈번히 관찰되는 빈들은 공동(joint), 전형적으로 0차 확률 모델을 사용하여 처리될 것이다. 이러한 방식으로, CABAC는 서브심볼 레벨에 대한 선택적 컨텍스트 모델링을 가능하게 하며, 따라서 상당히 감소된 전체 모델링 또는 학습 비용들로 심볼 간 중복성을 이용하기 위한 효율적인 기기를 제공한다. 컨텍스트 모델들의 특정 선택에 대해, CABAC에 4개의 기본 설계 타입이 사용되며, 이들 중 2개는 변환-계수 레벨들의 코딩에만 적용된다. 이러한 4개의 프로토타입의 설계는 모델링될 소스 데이터의 전형적인 특성들에 대한 선험적 지식에 기초하고, 이는 불필요한 모델링 비용 오버헤드를 회피하는 것과 통계적 의존성들을 크게 사용하는 것의 충돌하는 목적들 사이의 양호한 절충을 발견하기 위한 목적을 반영한다.
CABAC에서의 최저 처리 레벨에서, 각각의 빈 값은 정규 또는 바이패스 코딩 모드에서 이진 산술 인코더로 들어간다. 후자의 경우, 복잡도가 상당히 감소된 코딩 엔진의 고속 브랜치가 사용되는 한편, 전자의 코딩 모드의 경우, 주어진 빈 값의 인코딩은 빈 값과 함께 M 코더- CABAC에서 테이블-기반 적응 이진 산술 코딩 엔진에 대해 선택되었던 용어 -로 전달되는 연관된 적응적 확률 모델의 실제 상태에 의존한다.
인터 코딩
HEVC는 3개의 상이한 인터 모드들: 인터 모드(Advanced Motion Vector Prediction, AMVP), "고전적인" 머지 모드(즉, "비-아핀 머지 모드" 또는 "정규" 머지 모드라고도 알려짐) 및 "고전적인" 머지 스킵 모드(즉, "비-아핀 머지 스킵" 모드 또는 "정규" 머지 스킵 모드라고도 알려짐)를 사용한다. 이들 모드들 사이의 주요 차이점은 비트스트림에서의 데이터 시그널링이다. 모션 벡터 코딩의 경우, 현재 HEVC 표준은 표준의 이전 버전들에 존재하지 않았던 모션 벡터 예측을 위한 경쟁 기반 스킴을 포함한다. 이것은, 여러 후보들이 인터 또는 머지 모드들(즉, "classical/regular" 머지 모드 또는 "classical/regular" 머지 스킵 모드) 각각에 대한 최상의 모션 벡터 예측자 또는 최고의 모션 정보를 발견하기 위하여 인코더측의 레이트 왜곡 기준과 더불어 경쟁하고 있음을 의미한다. 그 다음에 모션 정보의 최상의 예측자들 또는 최상의 후보에 대응하는 인덱스가 비트스트림에 삽입된다. 디코더는 동일한 세트의 예측자들 또는 후보들을 도출할 수 있고 디코딩된 인덱스에 따라 최상의 것을 사용한다. HEVC의 스크린 콘텐츠 확장(Screen Content Extension)에서, 인트라 블록 카피(Intra Block Copy)(IBC)라고 불리는 새로운 코딩 툴은 이러한 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 단계는 공간적 위치들이 도 6a에 예시되어 있는 하단 좌측 블록들 A0 및 A1 중에서 제1 공간적 예측자(Cand 1, 706)를 선택하는 것을 목표로 한다. 이를 위해, 이러한 블록들은 주어진 순서로 차례로 선택되고(700, 702), 각각의 선택된 블록에 대해, 다음 조건들이 주어진 순서로 평가되며(704), 조건들이 충족되는 제1 블록은 예측자로서 설정된다:
- 동일한 참조 리스트 및 동일한 참조 이미지로부터의 모션 벡터;
- 다른 참조 리스트 및 동일한 참조 이미지로부터의 모션 벡터;
- 동일한 참조 리스트 및 상이한 참조 이미지로부터의 스케일링된 모션 벡터; 또는
- 다른 참조 리스트 및 상이한 참조 이미지로부터의 스케일링된 모션 벡터.
어떠한 값도 발견되지 않는 경우, 좌측 예측자는 사용불가능한 것으로서 간주된다. 이 경우, 이는 관련된 블록들이 INTRA 코딩되었거나 그러한 블록들이 존재하지 않음을 표시한다.
다음의 단계는, 위 우측 블록 B0, 위 블록 B1, 및 위 좌측 블록 B2 중에서, 공간적 위치들이 도 6a에 도시되어 있는 제2 공간적 예측자(Cand 2, 716)를 선택하는 것을 목표로 한다. 이를 위해, 이러한 블록들은 주어진 순서로 차례로 선택되고(708, 710, 712), 각각의 선택된 블록에 대해, 위에서 언급된 조건들은 주어진 순서로 평가되고(714), 위에서 언급된 조건들이 충족되는 제1 블록은 예측자로서 설정된다.
다시, 어떠한 값도 발견되지 않는 경우, 상단 예측자는 사용불가능한 것으로서 간주된다. 이 경우, 이는 관련된 블록들이 INTRA 코딩되었거나 그러한 블록들이 존재하지 않음을 표시한다.
다음 단계(718)에서, 2개의 예측자가, 둘 다 이용가능한 경우, 이들이 동일한 경우(즉, 동일한 모션 벡터 값들, 동일한 참조 리스트, 동일한 참조 인덱스 및 동일한 방향 타입) 이들 중 하나를 제거하기 위해 서로 비교된다. 하나의 공간적 예측자만이 이용가능한 경우, 알고리즘은 다음 단계에서 시간적 예측자를 찾고 있다.
시간적 모션 예측자(Cand3, 726)는 다음과 같이 도출된다: 이전/참조 프레임 내의 병치된 블록의 우측 하단(H, 720) 위치가 먼저 이용가능성 체크 모듈(722)에서 고려된다. 그것이 존재하지 않는 경우 또는 모션 벡터 예측자가 이용가능하지 않은 경우, 병치된 블록의 중심(Centre, 724)이 체크되도록 선택된다. 이러한 시간적 위치들(중심 및 H)은 도 6a에 도시된다. 임의의 경우에, 스케일링(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). 이들 위치들은 도 6a에 참조부호들 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). 그것이 이용가능한 경우, 그것은 A1 모션 벡터 및 B1 모션 벡터와 비교된다. B2 모션 벡터가 A1 모션 벡터 또는 B1 모션 벡터와 동일한 경우, B2 모션 벡터는 공간적 후보들의 리스트(814)에 추가되지 않는다. 반대로, B2 모션 벡터가 A1 모션 벡터 또는 B1 모션 벡터와 동일하지 않은 경우, B2 모션 벡터가 공간적 후보들의 리스트(814)에 추가된다.
이 단계의 끝에서, 공간적 후보들의 리스트는 최대 4개의 후보를 포함한다.
시간적 후보에 대해, 2개의 위치: 병치된 블록의 하단 우측 위치(816, 도 6a에서 H로 표시됨) 및 병치된 블록의 중심(818)이 사용될 수 있다. 이들 위치는 도 6a에 도시된다.
AMVP 모션 벡터 도출 프로세스의 시간적 모션 예측자에 대하여 도 7과 관련하여 설명된 바와 같이, 제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의 하나의 후보의 모션 정보를 조합(페어링(pairing))하는 것으로 구성된다.
후보들의 수(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만큼 증가된다.
따라서 이 ATMVP 모드가 디스에이블되는 경우였던 5개 대신 6개 후보가 고려된다.
또한, 이러한 예측이 SPS 레벨에서 인에이블될 때, 머지 인덱스의 모든 빈들(즉, 머지 후보들의 리스트로부터의 후보를 식별하기 위한 식별자 또는 인덱스)은 CABAC에 의해 컨텍스트 코딩된다. HEVC에 있는 동안 또는 ATMVP가 JEM에서 SPS 레벨에서 인에이블되지 않을 때, 제1 빈만이 컨텍스트 코딩되고, 나머지 빈들은 컨텍스트 바이-패스 코딩된다(context by-pass coded)(즉, 바이패스 CABAC 코딩됨). 도 10의 (a)는 HEVC에 대해, 또는 ATMVP가 JEM에서 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)는 상단-우측 코너 제어 포인트의 모션 벡터이다. 그리고 w는 블록(Cur)(현재 블록)의 폭이다.
모션 보상 예측을 더 단순화하기 위해, 서브블록 기반 아핀 변환 예측이 적용된다. 서브블록 크기 MxN은 수학식 2에서와 같이 도출되며, 여기서 MvPre는 모션 벡터 분수 정확도(JEM에서 1/16)이고, (v2x, v2y)는 수학식 1에 따라 계산된 상단-좌측 제어 포인트의 모션 벡터이다.
Figure pct00003
수학식 2에 의해 도출된 후에, M 및 N은 필요하다면 그것을 각각 w 및 h의 제수(divisor)로 만들기 위해 하향 조정될 수 있다. h는 현재 블록(Cur)(현재 블록)의 높이이다.
각각의 MХN 서브블록의 모션 벡터를 도출하기 위해, 도 6a에 도시된 바와 같이, 각각의 서브블록의 중심 샘플의 모션 벡터는 수학식 1에 따라 계산되고, 1/16 분수 정확도로 라운딩된다. 그 후, 도출된 모션 벡터로 각각의 서브블록의 예측을 생성하기 위해 모션 보상 보간 필터들이 적용된다.
아핀 모드는 인터 모드들(AMVP, "고전적인" 머지(Merge), 또는 "고전적인" 머지 스킵(Merge Skip))과 같은 모션 보상 모드이다. 그것의 원리는 2 또는 3개의 이웃하는 모션 정보에 따라 픽셀마다 하나의 모션 정보를 생성하는 것이다. JEM에서, 아핀 모드는 도 11(a)/(b)에 나타내어진 바와 같이 각각의 4x4 블록에 대한 하나의 모션 정보를 도출한다(각각의 정사각형은 4x4 블록이고, 도 11(a)/(b)의 전체 블록은 4x4 크기의 그러한 정사각형의 16개의 블록으로 분할되는 16x16 블록이다 -각각의 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 이웃 블록(즉, 아핀 모드를 사용하여 코딩되는 제1 이웃 블록)으로부터 현재 블록에 대한 모션 정보를 도출한다. 이러한 위치들은 도 6a 및 6b에 도시된다. 그러나, 아핀 파라미터가 어떻게 도출되는지는 완전히 정의되지 않으며, 본 발명은 예를 들어 아핀 머지 모드의 아핀 파라미터들을 정의하여 아핀 머지 후보들에 대한 더 넓은 선택을 가능하게 함으로써 적어도 이러한 양태를 개선하는 것을 목표로 한다(즉, 아핀인 제1 이웃 블록뿐만 아니라 적어도 하나의 다른 후보가 인덱스와 같은 식별자를 갖는 선택에 이용가능하다).
예를 들어, 본 발명의 일부 실시예들에 따르면, 아핀 머지 후보들의 그 자신의 리스트(아핀 모드에 대한 모션 정보를 도출/ 획득하기 위한 후보들) 및 아핀 머지 인덱스(아핀 머지 후보들의 리스트로부터 하나의 아핀 머지 후보를 식별하기 위한)를 갖는 아핀 머지 모드가 블록을 인코딩 또는 디코딩하기 위해 사용된다.
아핀 머지 시그널링
도 12는 아핀 머지 모드의 사용을 시그널링하기 위한 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다. 이 도면에서, 스킵 플래그(1201), 예측 모드(1211), 머지 플래그(1203), 머지 인덱스(1208) 및 아핀 플래그(1206)가 디코딩될 수 있다.
인터 슬라이스 내의 모든 CU에 대해, 스킵 플래그가 디코딩된다(1201). CU가 스킵이 아닌 경우(1202), pred 모드(예측 모드)가 디코딩된다(1211). 이 신택스 요소는 현재 CU가 인터 모드로 인코딩(디코딩될)되는지 또는 인트라 모드로 인코딩(디코딩될)되는지를 표시한다. CU가 스킵인 경우(1202), 그 현재 모드는 인터 모드라는 점에 유의한다. CU가 스킵이 아닌 경우(1202:아니오), CU는 AMVP 또는 머지 모드에서 코딩된다. CU가 인터인 경우(1212), 머지 플래그가 디코딩된다(1203). CU가 머지인 경우(1204) 또는 CU가 스킵인 경우 (1202:예), 아핀 플래그(1206)가 디코딩될 필요가 있는지가 검증/체크되는데(1205), 즉, (1205)에서, 현재 CU가 아핀 모드에서 인코딩되었을 수 있는지의 결정이 이루어진다. 이 플래그는 현재 CU가 2Nx2N CU인 경우 디코딩되며, 이는 현재 VVC에서 CU의 높이와 폭이 동일할 것이라는 것을 의미한다. 또한, 적어도 하나의 이웃 CU A1 또는 B1 또는 B0 또는 A0 또는 B2는 아핀 모드(아핀 머지 모드에서 또는 아핀 모드가 인에이블된 AMVP 모드에서)로 코딩되어야 한다. 결국 현재 CU는 4x4 CU가 아닐 것이지만 디폴트로 CU 4x4는 VTM 참조 소프트웨어에서 디스에이블된다. 이 조건(1205)이 거짓인 경우, 현재 CU가 HEVC에서 특정된 바와 같이 고전적인 머지 모드(또는 고전적인 머지 스킵 모드)로 코딩되고 머지 인덱스(1208)가 디코딩되는 것이 확실하다. 아핀 플래그(1206)가 1과 동일하게 설정되는 경우(1207), CU는 머지 아핀 CU(즉, 아핀 머지 모드에서 인코딩된 CU) 또는 머지 스킵 아핀 CU(즉, 아핀 머지 스킵 모드에서 인코딩된 CU)이고 머지 인덱스(1208)는 디코딩될 필요가 없다(아핀 머지 모드가 사용되기 때문에, 즉 CU는 아핀인 제1 이웃 블록을 갖는 아핀 모드를 사용하여 디코딩될 것임). 그렇지 않으면, 현재 CU는 고전적(기본) 머지 또는 머지 스킵 CU(즉, 고전적 머지 또는 머지 스킵 모드에서 인코딩된 CU)이고 머지 인덱스 후보(1208)가 디코딩된다.
본 명세서에서 '시그널링'은 모드 또는 다른 정보의 인에이블 또는 디스에이블을 나타내는 하나 이상의 신택스 요소를 비트스트림에 삽입(제공/포함)하거나 비트스트림으로부터 추출/획득하는 것을 지칭할 수 있다.
머지 후보들 도출
도 13은 머지 후보들(즉, 고전적인 머지 모드 또는 고전적인 머지 스킵 모드에 대한 후보들) 도출을 도시하는 흐름도이다. 이 도출은 도 8에 표현된 머지 모드들의 모션 벡터 도출 프로세스(즉, HEVC의 머지 후보들의 리스트 도출)의 맨 위에 구축되었다. HEVC에 비해 주요 변경들은 ATMVP 후보(1319, 1321, 1323)의 추가, 후보들의 전체 중복 체크들(1325) 및 후보들의 새로운 순서이다. ATMVP 예측은 그것이 현재 CU의 몇몇 모션 정보를 나타내기 때문에 특별한 후보로서 설정된다. 제1 서브 블록(상단 좌측)의 값은 시간적 후보와 비교되고, 시간적 후보는 이들이 동일한 경우 머지(Merge)의 리스트에 추가되지 않는다(1320). ATMVP 후보는 다른 공간적 후보들과 비교되지 않는다. 리스트(1325)에서 이미 각각의 공간적 후보와 비교되는 시간적 후보에 대해 그것이 중복 후보인 경우 머지 후보들의 리스트에 추가되지 않는다.
공간적 후보가 리스트에 추가될 때, 공간적 후보는 HEVC의 최종 버전에서의 경우가 아닌 리스트에서의 다른 공간적 후보들과 비교된다(1312).
현재의 VTM 버전에서, 머지 후보들의 리스트는 다음의 순서로 설정되는데, 그 이유는 코딩 테스트 조건들에 대해 최상의 결과들을 제공하는 것으로 결정되었기 때문이다:
● A1
● B1
● B0
● A0
● ATMVP
● B2
● 시간적(TEMPORAL)
● 조합된(Combined)
● Zero_MV
공간적 후보 B2가 ATMVP 후보 후에 설정된다는 것에 주목하는 것이 중요하다.
또한, ATMVP가 슬라이스 레벨에서 인에이블될 때, 후보들의 리스트에서의 최대 수는 HEVC의 5 대신에 6이다.
본 발명의 예시적인 실시예들이 이제 도 12 내지 도 16 및 도 22 내지 도 24를 참조하여 설명될 것이다. 실시예들은 달리 명시적으로 언급되지 않는 한 조합될 수 있다는 점이 주목되어야 하고; 예를 들어, 실시예들의 특정 조합들은 증가된 복잡도로 코딩 효율을 개선할 수 있지만, 이는 특정 사용 경우들에서 수용가능할 수 있다.
제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는 상부 블록에 대한 머지 인덱스이고, 심볼 ==는 등호 심볼(equality symbol)이다.
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는:
좌측 및 위쪽/상부(up/upper) 블록이 머지 인덱스를 갖지 않는 경우 또는 좌측 블록 머지 인덱스가 제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는 상부 블록에 대한 머지 인덱스이고, 심볼 >은 "보다 큼"을 의미한다.
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 예에서, 아핀 머지 후보는 다른 머지 후보들과 함께 도출된다. 이 예에서, 새로운 아핀 머지 후보가 머지 후보들의 리스트에 추가된다(고전적인 머지 모드 또는 고전적인 머지 스킵 모드에 대해). 도 16은 이 예를 도시한다. 도 13과 비교하여, 아핀 머지 후보는 A1, B1, B0, A0 B2 (1917)로부터의 제1 아핀 이웃 블록이다. 도 12의 1205와 동일한 조건이 유효한 경우(1927), 아핀 후보(1929)를 획득하기 위해 아핀 파라미터들로 생성된 모션 벡터 필드가 생성된다. 초기 후보들의 리스트는 ATMVP, 시간적 및 아핀 머지 후보들의 사용에 따라 4, 5, 6 또는 7개의 후보를 가질 수 있다.
모든 이러한 후보 사이의 순서는 더 많은 가능성 있는 후보들이, 모션 벡터 후보들의 목표를 달성할 가능성이 더 많다는 것을 보장하기 위해 먼저 처리되어야 하므로 중요하다 - 바람직한 순서는 다음과 같다:
A1
B1
B0
A0
AFFINE MERGE
ATMVP
B2
시간적(TEMPORAL)
조합된(Combined)
제로_MV
아핀 머지 후보는 ATMVP 후보 앞에 그러나 4개의 주요 이웃 블록 뒤에 배치된다는 것에 유의하는 것이 중요하다. ATMVP 후보 이전에 아핀 머지 후보를 설정하는 것의 이점은, ATMVP 및 시간적 예측자 후보 이후에 그것을 설정하는 것과 비교하여, 코딩 효율 증가이다. 이러한 코딩 효율 증가는 GOP(group of pictures) 구조 및 GOP 내의 각각의 픽처의 양자화 파라미터(QP) 설정에 의존한다. 그러나 최대 사용 GOP 및 QP 설정의 경우, 이 순서는 코딩 효율 증가를 제공한다.
이 솔루션의 추가의 이점은 신택스 및 도출 프로세스 둘 다에 대한 고전적인 머지 및 고전적인 머지 스킵 모드들(즉, ATMVP 또는 아핀 머지 후보와 같은 추가적인 후보들을 갖는 머지 모드들)의 클린 설계(clean design)이다. 더욱이, 아핀 머지 후보에 대한 머지 인덱스는 머지 후보들의 리스트에서의 이전 후보들의 이용가능성 또는 값(중복 체크)에 따라 변할 수 있다. 결과적으로, 효율적인 시그널링이 획득될 수 있다.
추가 예에서, 아핀 머지 후보에 대한 머지 인덱스는 하나 또는 여러 조건에 따라 가변적이다.
예를 들어, 머지 인덱스 또는 아핀 머지 후보와 연관된 리스트 내에서의 위치는 기준에 따라 변한다. 원리는 아핀 머지 후보가 선택될 높은 확률을 가질 때 아핀 머지 후보에 대응하는 머지 인덱스에 대해 낮은 값(그리고 선택될 낮은 확률이 있을 때 더 높은 값)을 설정하는 것이다.
제12 실시예에서, 아핀 머지 후보는 머지 인덱스 값을 갖는다. 머지 인덱스의 코딩 효율을 개선하기 위해, 머지 인덱스의 비트에 대한 컨텍스트 변수가 이웃 블록들 및/또는 현재 블록에 대한 아핀 플래그들에 의존적으로 만드는 것이 효과적이다.
예를 들어, 컨텍스트 변수는 하기의 수식을 사용하여 결정될 수 있다: ctxldx= Isaffine(A1)+Isaffine(B1)+IsAffine(B0)+IsAffine(A0)+IsAffine(B2)
결과적인 컨텍스트 값은 값 0, 1, 2, 3, 4 또는 5를 가질 수 있다.
아핀 플래그들은 코딩 효율을 증가시킨다.
더 적은 수의 이웃 블록들을 수반하는 제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을 가질 수 있다.
도 15는 제3 변형예를 이용하는 코딩 모드와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스의 흐름도이다. 이 도면에서, 스킵 플래그(1601), 예측 모드(1611), 머지 플래그(1603), 머지 인덱스(1608) 및 아핀 플래그(1606)가 디코딩될 수 있다. 이 흐름도는 전술된 도 12의 흐름도와 유사하므로, 상세한 설명은 생략한다. 차이점은 머지 인덱스 디코딩 프로세스가 아핀 플래그를 고려하여, VTM 2.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에서의 그것의 등가 모드 또는 아핀 머지 모드와 같은, 머지 모드 이외의 모드(로 확장 또는)에 적용될 수 있다는 것을 생각할 수 있다. 첨부된 청구항들은 그에 따라 해석되어야 한다.
논의된 바와 같이, 전술한 실시예들에서, 아핀 머지 모드들(아핀 머지 또는 아핀 머지 스킵 모드)에 대한 하나 이상의 모션 정보 후보(예를 들어, 모션 벡터) 및/또는 하나 이상의 아핀 파라미터는 공간적으로 이웃하는 블록들(예를 들어, 위치들 A1, B1, B0, A0, B2) 또는 시간적으로 연관된 블록들(예를 들어, 병치된 블록을 갖는 "중앙" 블록 또는 "H"와 같은 그의 공간적 이웃) 중에서 아핀 코딩되는 제1 이웃 블록으로부터 획득된다. 이러한 위치들은 도 6a 및 6b에 도시된다. 현재 블록(또는 현재 인코딩/디코딩되고 있는 샘플/픽셀 값들의 그룹, 예를 들어 현재 CU)과 이웃 블록(현재 블록에 공간적으로 이웃하거나 시간적으로 연관됨) 사이의 하나 이상의 모션 정보 및/또는 아핀 파라미터의 이러한 획득(예를 들어, 도출 또는 공유 또는 "머징")을 가능하게 하기 위해, 하나 이상의 아핀 머지 후보가 머지 후보들의 리스트(즉, 고전적인 머지 모드 후보들)에 추가되어, 선택된 머지 후보(이후 머지 인덱스를 사용하여, 예를 들면 HEVC에서의 "머지 idx"와 같은 신택스 요소 또는 기능적으로 동등한 신택스 요소를 사용하여 시그널링됨)가 아핀 머지 후보일 때, 현재 CU/블록은 아핀 머지 후보와 함께 아핀 머지 모드를 사용하여 인코딩/디코딩된다.
위에 언급된 바와 같이, 아핀 머지 모드 및/또는 아핀 파라미터에 대한 하나 이상의 모션 정보의 획득(예를 들어, 도출 또는 공유)을 위한 그러한 하나 이상의 아핀 머지 후보는 또한 아핀 머지 후보들의 개별 리스트(또는 세트)(고전적인 머지 모드에 대해 사용되는 머지 후보들의 리스트와 동일하거나 상이할 수 있음)를 사용하여 시그널링될 수 있다.
본 발명의 실시예에 따르면, 전술한 실시예들의 기법들이 아핀 머지 모드에 적용될 때, 아핀 머지 후보들의 리스트는 도 8에 도시되고 그에 관련하여 설명된 바와 같은 고전적인 머지 모드에 대한 모션 벡터 도출 프로세스와 동일하거나, 또는 도 13에 도시되고 그에 관련하여 설명된 머지 후보들 도출 프로세스와 동일한 기법을 사용하여 생성될 수 있다. (아핀 머지 모드 또는 아핀 머지 스킵 모드에 대한) 아핀 머지 후보들의 이러한 리스트 및 (고전적인 머지 모드 또는 고전적인 머지 스킵 모드에 대한) 머지 후보들의 리스트를 생성/컴파일하기 위해 동일한 기법을 공유하는 이점은 개별 기법들을 갖는 것과 비교할 때 인코딩/디코딩 프로세스에서의 복잡도의 감소이다.
다른 실시예에 따르면, 아핀 머지 후보들의 리스트를 생성/컴파일하기 위해 도 24와 관련하여 아래에 도시된 개별 기법이 사용될 수 있다.
도 24는 아핀 머지 모드(아핀 머지 모드 및 아핀 머지 스킵 모드)에 대한 아핀 머지 후보 도출 프로세스를 도시하는 흐름도이다. 도출 프로세스의 제1 단계에서, 공간적 아핀 머지 후보들(2413)을 획득/도출하기 위해 5개의 블록 위치들이 고려된다(2401 내지 2405). 이들 위치들은 도 6a (및 도 6b)에 참조부호들 A1, B1, B0, A0 및 B2로 도시된 공간적 위치들이다. 다음 단계에서, 공간적 모션 벡터들의 이용가능성이 체크되고, 각각의 위치 A1, B1, B0, A0 및 B2와 연관된 인터 모드 코딩된 블록들 각각이 아핀 모드로 코딩되는지(예를 들어, 아핀 머지, 아핀 머지 스킵 또는 아핀 AMVP 모드 중 임의의 하나를 사용하여)가 결정된다(2410). 기껏해야 5개의 모션 벡터(즉, 공간적 아핀 머지 후보들)가 선택/획득/도출된다. 예측자는 그것이 존재하는 경우(예를 들어, 그 위치와 연관된 모션 벡터를 획득/도출하기 위한 정보가 존재하는 경우) 및 블록이 INTRA 코딩되지 않는 경우 및 블록이 아핀인 경우(즉, 아핀 모드를 사용하여 코딩됨) 이용가능한 것으로 간주된다.
그 다음, 아핀 모션 정보는 각각의 이용가능한 블록 위치(2410)에 대해 도출/획득된다(2411). 이 도출은 블록 위치의 아핀 모델(및 예를 들어, 도 11의 (a) 및 (b)와 관련하여 논의된 그의 아핀 모델 파라미터들)에 기초하여 현재 블록에 대해 수행된다. 그 후 프루닝 프로세스(2412)를 적용하여 리스트에 이전에 추가된 다른 것과 동일한 아핀 모션 보상을 제공하는(또는 동일한 아핀 모델 파라미터들을 갖는) 후보들을 제거한다.
이 단계의 끝에서, 공간적 아핀 머지 후보들의 리스트는 최대 5개의 후보를 포함한다.
후보들의 수(Nb_Cand)가 후보들의 최대 수보다 엄격하게 적은 경우(2426)(여기서, Max_Cand는 비트스트림 슬라이스 헤더에서 시그널링되고 아핀 머지 모드에 대해 5와 동일하지만 구현에 따라 상이/가변적일 수 있는 값임),
그 다음, 구성된 아핀 머지 후보들(즉, 예를 들어, HEVC에서 결합된 양방향-예측 머지 후보들과 유사한 역할을 하는, 일부 다양성을 제공할 뿐만 아니라 타겟 수에 접근하기 위해 생성되는 추가적인 아핀 머지 후보들)이 생성된다(2428). 이렇게 구성된 아핀 머지 후보들은 현재 블록의 이웃하는 공간적 및 시간적 위치들과 연관된 모션 벡터들에 기초한다. 먼저, 아핀 모델을 생성하기 위한 모션 정보를 생성하기 위해 제어 포인트들이 정의된다(2418, 2419, 2420, 2421). 이들 제어 포인트들 중 두 개는 예를 들어 도 11의 (a) 및 11의 (b)의 vo 및 vi에 대응한다. 이러한 4개의 제어 포인트들은 현재 블록의 4개의 코너들에 대응한다.
제어 포인트 상단 좌측(2418)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2414), 위치 B2(2405)에서의 블록 위치의 모션 정보로부터(예를 들어, 그와 동일시하여) 획득된다. 그렇지 않으면, 제어 포인트 상단 좌측(2418)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2414), 위치 B3(2406)(도 6b에 나타내어진 바와 같이)에서의 블록 위치의 모션 정보로부터(예를 들어, 그와 동일시하여) 획득되고, 그렇지 않으면, 제어 포인트 상단 좌측(2418)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER모드로 코딩되어 있는 경우(2414), 위치 A2(2407)(도 6b에 나타내어진 바와 같이)에서의 블록 위치의 모션 정보로부터 획득된다(예를 들어, 그와 같게 된다). 이 제어 포인트에 대해 어떠한 블록도 이용가능하지 않을 때 그것은 사용불가능한(이용가능하지 않은) 것으로 간주된다.
제어 포인트 상단 우측(2419)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2415), 위치 B1(2402)에서의 블록 위치의 모션 정보로부터 획득된다(예를 들어, 그와 같게 된다). 그렇지 않으면, 제어 포인트 상단 우측(2419)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2415), 위치 B0 (2403)에서의 블록 위치의 모션 정보로부터 획득된다(예를 들어, 그와 같게 된다). 이 제어 포인트에 대해 어떠한 블록도 이용가능하지 않을 때 그것은 사용불가능한(이용가능하지 않은) 것으로 간주된다.
제어 포인트 하단 좌측(2420)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2416), 위치 A1(2401)에서의 블록 위치의 모션 정보로부터 획득된다(예를 들어, 그와 같게 된다). 그렇지 않으면, 제어 포인트 하단 좌측(2420)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2416), 위치 A0(2404)에서의 블록 위치의 모션 정보로부터 획득된다(예를 들어, 그와 같게 된다). 이 제어 포인트에 대해 어떠한 블록도 이용가능하지 않을 때 그것은 사용불가능한(이용가능하지 않은) 것으로 간주된다.
제어 포인트 하단 우측(2421)의 모션 정보는 그것이 존재하는 경우 및 이 블록이 INTER 모드로 코딩되어 있는 경우(2417), 시간적 후보의 모션 정보(예를 들어, 위치 H(2408)에서의 병치된 블록 위치)(도 6a에 나타내어진 바와 같이)로부터 획득된다(예를 들어, 그와 같게 된다). 이 제어 포인트에 대해 어떠한 블록도 이용가능하지 않을 때 그것은 사용불가능한(이용가능하지 않은) 것으로 간주된다.
이들 제어 포인트들에 기초하여, 최대 10개의 구성된 아핀 머지 후보들이 생성될 수 있다(2428). 이러한 후보들은 4개, 3개 또는 2개의 제어 포인트들을 갖는 아핀 모델에 기초하여 생성된다. 예를 들어, 제1 구성된 아핀 머지 후보는 4개의 제어 포인트들을 사용하여 생성될 수 있다. 그 후, 4개의 다음에 구성된 아핀 머지 후보들은 3개의 제어 포인트들의 4개의 상이한 세트들(즉, 4개의 이용가능한 제어 포인트들 중 3개를 포함하는 세트의 4개의 상이한 가능한 조합들)을 사용하여 생성될 수 있는 4가지 가능성이다. 그 후, 다른 구성된 아핀 머지 후보들은 2개의 제어 포인트들의 상이한 세트들(즉, 4개의 제어 포인트들 중 2개를 포함하는 세트의 상이한 가능한 조합들)을 사용하여 생성된 것들이다.
후보들의 수(Nb_Cand)가 이러한 추가의(구성된) 아핀 머지 후보들을 추가한 후에 후보들의 최대 수(Max_Cand)보다 엄격하게 적게(2430) 유지되는 경우, 제로 모션 벡터 후보들(또는 심지어 적용가능한 경우 조합된 양방향-예측 머지 후보들)과 같은 다른 추가적인 가상 모션 정보 후보들은 아핀 머지 후보들의 리스트에서의 후보들의 수가 타겟 수(예를 들어, 후보들의 최대 수)에 도달할 때까지 추가/생성된다(2432).
이 프로세스의 끝에서, 아핀 머지 모드 후보들의 리스트 또는 세트(즉, 아핀 머지 모드 및 아핀 머지 스킵 모드인 아핀 머지 모드들에 대한 후보들의 리스트 또는 세트)가 생성/구축된다(2434). 도 24에 예시된 바와 같이, 아핀 머지(모션 벡터 예측자) 후보들의 리스트 또는 세트는 공간적 후보들의 서브세트(2401 내지 2407) 및 시간적 후보(2408)로부터 구축/생성된다(2434). 본 발명의 실시예들에 따르면, 이용가능성, 프루닝 프로세스, 또는 잠재적 후보들의 수/타입을 체크하기 위해 상이한 순서를 갖는 다른 아핀 머지 후보 도출 프로세스들(예를 들어, ATMVP 후보는 또한 도 13 또는 도 16의 머지 후보들의 리스트 도출 프로세스와 유사한 방식으로 추가될 수 있음)이 또한 아핀 머지 후보들의 리스트/세트를 생성하기 위해 사용될 수 있다는 것이 이해된다.
이하의 실시예는 아핀 머지 후보들의 리스트(또는 세트)가 선택된 아핀 머지 후보(머지 모드에 대해 사용되는 머지 인덱스 또는 아핀 머지 모드에 대해 구체적으로 사용되는 개별 아핀 머지 인덱스를 사용하여 시그널링될 수 있음)를 시그널링(예를 들어, 인코딩 또는 디코딩)하는 데 어떻게 사용될 수 있는지를 도시한다.
다음의 실시예에서: MERGE 모드(즉, 나중에 정의되는 AFFINE MERGE 모드 이외의 머지 모드, 즉 고전적인 비-아핀 머지 모드 또는 고전적인 비-아핀 머지 스킵 모드)는 공간적으로 이웃하거나 시간적으로 연관된 블록의 모션 정보가 현재 블록에 대해 획득되는(또는 그에 대해 도출되거나 그와 공유되는) 머지 모드의 타입이고, MERGE 모드 예측자 후보(즉, 머지 후보)는 현재 블록이 MERGE 모드에서 모션 정보를 획득/도출할 수 있는 하나 이상의 공간적으로 이웃하거나 시간적으로 연관된 블록에 관한 정보이고, MERGE 모드 예측자는 현재 블록의 모션 정보를 예측할 때 그리고 MERGE 모드(예를 들어, 인코딩 또는 디코딩) 프로세스에서의 시그널링 동안 MERGE 모드 예측자 후보들의 리스트(혹은 세트)로부터 MERGE 모드 예측자를 식별하는 인덱스(예를 들어, MERGE 인덱스)가 시그널링될 때 그 정보가 사용되는 선택된 MERGE 모드 예측자 후보이고, AFFINE MERGE 모드는 현재 블록의 아핀 모드 처리(또는 아핀 모션 모델 처리)를 위한 모션 정보 및/또는 아핀 파라미터가 이러한 획득/도출/공유된 모션 정보를 사용할 수 있도록 현재 블록에 대해 공간적으로 이웃하거나 시간적으로 연관된 블록의 모션 정보가 획득되는(그에 대해 도출 또는 그와 공유되는) 머지 모드의 타입이고, AFFINE MERGE 모드 예측자 후보(즉, 아핀 머지 후보)는 현재 블록이 AFFINE MERGE 모드에서 모션 정보를 획득/도출할 수 있는 하나 이상의 공간적으로 이웃하거나 시간적으로 연관된 블록에 관한 정보이고, AFFINE MERGE 모드 예측자는 현재 블록의 모션 정보를 예측할 때 그리고 AFFINE MERGE 모드(예를 들어, 인코딩 또는 디코딩) 프로세스에서의 시그널링 동안 AFFINE MERGE 모드 예측자 후보들의 리스트(혹은 세트)로부터 AFFINE MERGE 모드 예측자를 식별하는 인덱스(예를 들어, AFFINE MERGE 인덱스)가 시그널링될 때 그 정보가 사용가능한 선택된 AFFINE MERGE 모드 예측자 후보이다. 다음의 실시예에서, AFFINE MERGE 모드는, 이와 연관된 단일 인덱스 값을 갖는 것이 아니라, 후보들의 리스트/세트(“아핀 머지 리스트” 또는 “서브블록 머지 리스트”로도 알려짐)로부터 하나의 AFFINE MERGE 모드 예측자 후보를 식별하기 위한 그 자신의 AFFINE MERGE 인덱스(변수인 식별자)를 갖는 머지 모드라는 것이 이해되고, AFFINE MERGE 인덱스는 그 특정 AFFNE MERGE 모드 예측자 후보를 식별하도록 시그널링된다.
위에서 설명된 바와 같은 머지 인덱스의 시그널링 및 모션 정보의 그러한 획득(예를 들어, 도출 또는 공유)이 상기 모드에서 사용된다면, 다음의 실시예에서, "MERGE 모드"는 HEVC/JEM/VTM에서의 고전적인 머지 모드 또는 고전적인 머지 스킵 모드 중 하나 또는 임의의 기능적으로 동등한 모드를 지칭한다는 것이 이해된다. 동일한 특징들이 상기 모드에서 사용된다면, "AFFINE MERGE 모드"는 또한 아핀 머지 모드 또는 아핀 머지 스킵 모드(만일 존재하고 그러한 획득/도출을 사용하는 경우) 중 하나 또는 임의의 다른 기능적으로 동등한 모드를 지칭한다.
제16 실시예
제16 실시예에서, AFFINE MERGE 후보들의 리스트로부터 AFFINE MERGE 모드 예측자(후보)를 식별하기 위한 모션 정보 예측자 인덱스는 CABAC 코딩을 사용하여 시그널링되고, 모션 정보 예측 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩된다.
본 실시예의 제1 변형예에 따르면, 인코더에서, AFFINE MERGE 모드에 대한 모션 정보 예측자 인덱스는 다음에 의해 인코딩된다: 모션 정보 예측자 후보들의 리스트를 생성하는 것; 리스트에서의 모션 정보 예측자 후보들 중 하나를 AFFINE MERGE 모드 예측자로서 선택하는 것; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 것- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -. 이 선택된 모션 정보 예측자 후보에 대한 인덱스를 표시하는 데이터가 이어서 비트스트림 내에 포함된다. 이어서, 이 데이터를 포함하는 비트스트림으로부터, 디코더는 AFFINE MERGE 모드에 대한 모션 정보 예측자 인덱스를 다음에 의해 디코딩한다: 모션 정보 예측자 후보들의 리스트를 생성하는 것;
CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하는 것- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
AFFINE MERGE 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 AFFINE MERGE 모드 예측자로서 식별하는 것.
제1 변형예의 추가 변형예에 따르면, MERGE 모드가 사용될 때 디코더가 리스트에서의 모션 정보 예측자 후보들 중 하나를 MERGE 모드 예측자로서 식별하기 위해 디코딩된 모션 정보 예측자 인덱스(예컨대, MERGE 인덱스)를 사용할 수 있도록, MERGE 모드가 사용될 때 리스트에서의 모션 정보 예측자 후보들 중 하나가 또한 MERGE 모드 예측자로서 선택가능하다. 이 추가 변형예에서, AFFINE MERGE 인덱스는 AFFINE MERGE 모드 예측자(후보)를 시그널링하는 데 사용되고, AFFINE MERGE 인덱스 시그널링은 제1 내지 제15 실시예들 중 어느 하나에 따른 MERGE 인덱스 시그널링 또는 현재 VTM 또는 HEVC에서 사용되는 MERGE 인덱스 시그널링과 유사한 인덱스 시그널링을 사용하여 구현된다.
이 변형예에서, MERGE 모드가 사용될 때 MERGE 인덱스 시그널링은 제1 내지 제15 실시예 중 어느 하나에 따른 MERGE 인덱스 시그널링 또는 현재의 VTM 또는 HEVC에서 사용되는 MERGE 인덱스 시그널링을 사용하여 구현될 수 있다. 이 변형예에서, AFFINE MERGE 인덱스 시그널링 및 MERGE 인덱스 시그널링은 상이한 인덱스 시그널링 스킴들을 사용할 수 있다. 이 변형예의 이점은 AFFINE MERGE 모드와 MERGE 모드 양쪽 모두에 대해 효율적인 인덱스 코딩/시그널링을 사용함으로써 더 양호한 코딩 효율을 달성한다는 것이다. 또한, 이 변형예에서 별개의 신택스 요소들이 MERGE 인덱스(예컨대, HEVC에서의 "Merge idx[ ][ ]" 또는 그의 기능적 등가물) 및 AFFINE MERGE 인덱스(예컨대, "A_Merge_idx[ ][ ]")에 대해 사용될 수 있다. 이것은 MERGE 인덱스와 AFFINE MERGE 인덱스가 독립적으로 시그널링(인코딩/디코딩) 될 수 있게 한다.
또 다른 추가 변형예에 따르면, MERGE 모드가 사용되고 리스트에서의 모션 정보 예측자 후보들 중 하나가 또한 MERGE 모드 예측자로서 선택될 때, AFFINE MERGE 인덱스 및 MERGE 인덱스의 적어도 하나의 비트가 동일한 컨텍스트 변수를 공유하도록, CABAC 코딩은 양쪽 모드들, 즉, AFFINE MERGE 모드가 사용될 때 그리고 MERGE 모드가 사용될 때에 대해 현재 블록의 모션 정보 예측자 인덱스(예를 들어, MERGE 인덱스 또는 AFFINE MERGE 인덱스)의 적어도 하나의 비트에 대한 동일한 컨텍스트 변수를 사용한다. 이어서, 디코더는 MERGE 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 MERGE 모드 예측자로서 식별하며, CABAC 디코딩은 양쪽 모드, 즉, AFFINE MERGE 모드가 사용될 때 그리고 MERGE 모드가 사용될 때에 대한 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용한다.
본 실시예의 제2 변형예에 따르면, 인코더에서, 모션 정보 예측자 인덱스는 다음에 의해 인코딩된다: 모션 정보 예측자 후보들의 리스트를 생성하는 것; AFFINE MERGE 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 AFFINE MERGE 모드 예측자로서 선택하는 것; MERGE 모드가 사용될 때, 리스트에서의 모션 정보 예측자 후보들 중 하나를 MERGE 모드 예측자로서 선택하는 것; 및 CABAC 코딩을 사용하여, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 것- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -. 이 선택된 모션 정보 예측자 후보에 대한 인덱스를 표시하는 데이터가 이어서 비트스트림 내에 포함된다. 이어서, 디코더는, 비트스트림으로부터, 다음에 의해 모션 정보 예측자 인덱스를 디코딩한다: 모션 정보 예측자 후보들의 리스트를 생성하는 것; CABAC 디코딩을 사용하여 모션 정보 예측자 인덱스를 디코딩하는 것- 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; AFFINE MERGE 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 AFFINE MERGE 모드 예측자로서 식별하는 것; 및 MERGE 모드가 사용될 때, 디코딩된 모션 정보 예측자 인덱스를 사용하여 리스트에서의 모션 정보 예측자 후보들 중 하나를 MERGE 모드 예측자로서 식별하는 것.
제2 변형예의 추가 변형예에 따르면, AFFINE MERGE 인덱스 시그널링 및 MERGE 인덱스 시그널링은 제1 내지 제15 실시예 중 어느 하나에 따른 동일한 인덱스 시그널링 스킴 또는 현재 VTM 또는 HEVC에서 사용되는 MERGE 인덱스 시그널링을 사용한다. 이 추가 변형예의 이점은 구현하는 동안의 단순한 설계이며, 이는 또한 덜 복잡한 것으로 이어질 수 있다. 이 변형예에서, AFFINE MERGE 모드가 사용될 때, 인코더의 CABAC 코딩은 현재 블록의 모션 정보 예측자 인덱스(AFFINE MERGE 인덱스)의 적어도 하나의 비트에 대한 컨텍스트 변수를 사용하는 것을 포함하고, 컨텍스트 변수는 MERGE 모드가 사용될 때 모션 정보 예측자 인덱스(MERGE 인덱스)의 적어도 하나의 비트에 대한 다른 컨텍스트 변수로부터 분리가능하고; AFFINE MERGE 모드의 사용을 표시하기 위한 데이터는 AFFINE MERGE 모드 및 MERGE 모드에 대한 컨텍스트 변수들이 CAB AC 디코딩 프로세스에 대해 구별(명백하게 식별)될 수 있도록 비트스트림 내에 포함된다. 디코더는 이어서 비트스트림으로부터, 비트스트림 내의 AFFINE MERGE 모드의 사용을 표시하기 위한 데이터를 획득하고; 그리고 AFFINE MERGE 모드가 사용될 때, CABAC 디코딩은 AFFINE MERGE 인덱스와 MERGE 인덱스에 대한 컨텍스트 변수들을 구별하기 위해 이 데이터를 사용한다. 또한, 디코더에서, AFFINE MERGE 모드의 사용을 표시하기 위한 데이터는 획득된 데이터가 AFFINE MERGE 모드의 사용을 표시할 때 AFFINE MERGE 모드 예측자 후보들의 리스트(또는 세트)를 생성하기 위해, 또는 획득된 데이터가 MERGE 모드의 사용을 표시할 때 MERGE 모드 예측자 후보들의 리스트(또는 세트)를 생성하기 위해 또한 사용될 수 있다.
이 변형예는 MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두가 동일한 인덱스 시그널링 스킴을 사용하여 시그널링될 수 있게 하는 반면, MERGE 인덱스와 AFFINE MERGE 인덱스는 (예를 들어, 별개의 컨텍스트 변수들을 사용하여) 여전히 서로 독립적으로 인코딩/디코딩된다.
동일한 인덱스 시그널링 스킴을 사용하는 하나의 방식은 AFFINE MERGE 인덱스와 MERGE 인덱스 양쪽 모두에 대해 동일한 신택스 요소를 사용하는 것인데, 즉, 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스가 AFFINE MERGE 모드가 사용될 때 그리고 MERGE 모드가 사용될 때, 양쪽 경우 모두에 대해 동일한 신택스 요소를 사용하여 인코딩된다는 것이다. 이어서 디코더에서, 현재 블록이 AFFINE MERGE 모드 또는 MERGE 모드를 사용하여 인코딩되었는지(그리고 디코딩되고 있었는지) 여부에 관계없이, 비트스트림으로부터, 동일한 신택스 요소를 파싱함으로써 모션 정보 예측자 인덱스가 디코딩된다.
도 22는 제16 실시예의 이 변형에 따른 코딩 모드(즉, 동일한 인덱스 시그널링 스킴)와 관련된 일부 신택스 요소들의 부분 디코딩 프로세스를 도시한다. 이 도면은 동일한 인덱스 시그널링 스킴으로 AFFINE MERGE 모드(2257: 예)에 대한 AFFINE MERGE 인덱스(2255-"Merge idx Affine") 및 MERGE 모드(2257: 아니오)에 대한 MERGE 인덱스(2258 -"Merge idx")의 시그널링을 도시한다. 일부 변형예들에서, AFFINE MERGE 후보들의 리스트는 현재 VTM의 머지 후보들의 리스트에서와 같이 ATMVP 후보를 포함할 수 있다는 것이 이해된다. AFFINE MERGE 인덱스의 코딩은 도 10a 및 도 10b에 나타내어진 바와 같이 MERGE 모드에 대한 MERGE 인덱스의 코딩과 유사하다. 일부 변형예들에서, AFFINE MERGE 후보들 도출이 ATMVP 머지 후보를 정의하지 않더라도, AFFINE MERGE 인덱스는, AFFINE MERGE 후보들의 리스트에서의 후보들의 최대 수가 MERGE 후보들의 리스트에서의 후보들의 최대 수와 일치하도록 최대 5개의 다른 후보가 있는(즉, 총 6개의 후보) MERGE 모드에 대해 ATMVP가 인에이블될 때, 도 10b에 설명된 바와 같이 코딩된다. 따라서, AFFINE MERGE 인덱스의 각각의 비트는 그 자신의 컨텍스트를 갖는다. 머지 인덱스 시그널링의 비트들에 사용되는 모든 컨텍스트 변수들은 AFFINE MERGE 인덱스 시그널링의 비트들에 사용되는 컨텍스트 변수들에 독립적이다.
추가 변형예에 따르면, MERGE 인덱스 및 AFFINE MERGE 인덱스 시그널링에 의해 공유되는 이 동일한 인덱스 시그널링 스킴은 제1 실시예에서와 같이 제1 빈에 대해서만 CABAC 코딩을 사용한다. 즉, 모션 정보 예측자 인덱스의 제1 비트를 제외한 모든 비트들은 바이패스 CABAC 코딩된다. 제16 실시예의 이러한 추가 변형예에서, ATMVP가 MERGE 후보들의 리스트 또는 AFFINE MERGE 후보들의 리스트 중 하나에 후보로서 포함될 때(예를 들어, ATMVP가 SPS 레벨에서 인에이블될 때), 인덱스의 제1 비트만이 도 14에 도시된 바와 같이 단일 컨텍스트 변수를 사용하여 CABAC에 의해 코딩되도록 각각의 인덱스(즉, MERGE 인덱스 또는 AFFINE MERGE 인덱스)의 코딩이 수정된다. 이 단일 컨텍스트는 ATMVP가 SPS 레벨에서 인에이블되지 않을 때 현재의 VTM 참조 소프트웨어에서와 동일한 방식으로 설정된다. (리스트에 단지 5개의 후보가 있을 경우 제2 비트로부터 제5 비트 또는 제4 비트까지의) 다른 비트들은 바이패스 코딩된다. ATMVP가 MERGE 후보들의 리스트에서의 후보로서 포함되지 않을 때(예를 들어, ATMVP가 SPS 레벨에서 디스에이블될 때), 사용을 위해 이용가능한 5개의 MERGE 후보 및 5개의 AFFINE MERGE 후보가 있다. MERGE 모드에 대한 MERGE 인덱스의 제1 비트만이 제1 단일 컨텍스트 변수를 사용하여 CABAC에 의해 코딩된다. 그리고 AFFINE MERGE 모드에 대한 AFFINE MERGE 인덱스의 제1 비트만이 제2 단일 컨텍스트 변수를 사용하여 CABAC에 의해 코딩된다. 이러한 제1 및 제2 컨텍스트 변수들은 ATMVP가 MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두에 대해 SPS 레벨에서 인에이블되지 않을 때 현재의 VTM 참조 소프트웨어에서와 동일한 방식으로 설정된다. (제2 비트로부터 제4 비트까지의) 다른 비트들은 바이패스 디코딩된다.
디코더는 인코더와 동일한 MERGE 후보들의 리스트 및 동일한 AFFINE MERGE 후보들의 리스트를 생성한다. 이것은 도 22의 방법을 사용함으로써 달성된다. 동일한 인덱스 시그널링 스킴이 MERGE 모드 및 AFFINE MERGE 모드 양쪽 모두에 사용되지만, 아핀 플래그(2256)는 현재 디코딩되고 있는 데이터가 MERGE 인덱스에 대한 것인지 아니면 AFFINE MERGE 인덱스에 대한 것인지를 결정하는데 사용되어 제1 및 제2 컨텍스트 변수들이 CABAC 디코딩 프로세스에 의해 서로 분리가능(또는 구별가능)하도록 한다. 즉, 아핀 플래그(2256)는 "머지 idx(2258)" 또는 "머지 idx 아핀(2255)"을 디코딩할지를 결정하기 위해 인덱스 디코딩 프로세스 동안 사용된다(즉, 단계(2257)에서 사용됨). ATMVP가 MERGE 후보들의 리스트에서의 후보로서 포함되지 않을 때(예를 들어, ATMVP가 SPS 레벨에서 디스에이블될 때), 후보들의 리스트들 둘 다에 대해(MERGE 모드 및 AFFINE MERGE 모드에 대해) 5개의 MERGE 후보가 존재한다. 제1 단일 컨텍스트 변수를 사용하여 CABAC에 의해 MERGE 인덱스의 제1 비트만이 디코딩된다. 그리고 AFFINE MERGE 인덱스의 제1 비트만이 제2 단일 컨텍스트 변수를 사용하여 CABAC에 의해 디코딩된다. (제2 비트로부터 제4 비트까지의) 모든 다른 비트들은 바이패스 디코딩된다. 현재 참조 소프트웨어와 대조적으로, ATMVP가 MERGE 후보들의 리스트에서의 후보로서 포함될 때(예를 들어, ATMVP가 SPS 레벨에서 인에이블될 때), MERGE 인덱스의 제1 비트만이 MERGE 인덱스의 디코딩 시에 제1 단일 컨텍스트 변수를 사용하여 그리고 AFFINE MERGE 인덱스의 디코딩에서 제2 단일 컨텍스트 변수를 사용하여 CABAC에 의해 디코딩된다. 다른 비트들(제2 비트로부터 제5 비트 또는 제4 비트까지)은 바이패스 디코딩된다. 이어서, 디코딩된 인덱스는 대응하는 후보들의 리스트(즉, MERGE 후보들 또는 AFFINE MERGE 후보들)로부터 인코더에 의해 선택된 후보를 식별하기 위해 사용된다.
이 변형예의 이점은 MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두에 대해 동일한 인덱스 시그널링 스킴을 사용하는 것이 코딩 효율에 큰 영향을 주지 않고, 이들 2개의 상이한 모드를 구현하기 위한 인덱스 디코딩 및 디코더 설계(및 인코더 설계)에 있어서의 복잡도 감소로 이어진다는 것이다. 실제로, 이 변수를 이용하면, MERGE 인덱스의 모든 비트들 및 AFFINE MERGE 인덱스의 모든 비트들이 CABAC 인코딩/디코딩되는 경우였던 9 또는 10 대신에, 인덱스 시그널링을 위해 단지 2개의 CABAC 상태들(제1 및 제2 단일 컨텍스트 변수 각각에 대해 하나씩)만이 필요하다. 또한, 이는 (제1 비트를 제외한) 모든 다른 비트들이 CABAC 바이패스 코딩되기 때문에 최악의 경우의 복잡도를 감소시키고, 이는 모든 비트들을 CABAC로 코딩하는 것에 비해 CABAC 인코딩/디코딩 프로세스 동안 필요한 연산들의 수를 감소시킨다.
또 다른 추가 변형예에 따르면, CABAC 코딩 또는 디코딩은 AFFINE MERGE 모드가 사용될 때와 MERGE 모드가 사용될 때 둘 다에 대해 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용한다. 이 추가 변형예에서, MERGE 인덱스의 제1 비트 및 AFFINE MERGE 인덱스의 제1 비트에 대해 사용되는 컨텍스트 변수는 어느 인덱스가 인코딩 또는 디코딩되는지에 독립적인데, 즉 (이전 변형예로부터의) 제1 및 제2 단일 컨텍스트 변수들은 구별/분리가능하지 않으며, 하나 및 동일한 단일 컨텍스트 변수이다. 따라서, 이전 변형예와 달리, MERGE 인덱스와 AFFINE MERGE 인덱스는 CABAC 프로세스 동안 하나의 컨텍스트 변수를 공유한다. 도 23에 도시된 바와 같이, 인덱스 시그널링 스킴은 MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두에 대해 동일하며, 즉 양쪽 모드에 대해 단지 하나의 타입의 인덱스 "Merge idx(2308)"만이 인코딩되거나 디코딩된다. CABAC 디코더에 관한 한, 동일한 신택스 요소가 MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두에 사용되고, 컨텍스트 변수들을 고려할 때 이들을 구별할 필요가 없다. 따라서, 도 22의 단계(2257)에서와 같이 현재 블록이 AFFINE MERGE 모드에서 인코딩(디코딩될)되는지 여부를 결정하기 위해 아핀 플래그(2306)를 사용할 필요가 없고, 단지 하나의 인덱스("머지 idx")가 디코딩을 필요로 함에 따라 도 23의 단계(2306) 이후에 분기가 없다. 아핀 플래그는 AFFINE MERGE 모드로, 즉 CABAC 디코더가 인덱스("머지 idx")를 디코딩한 후의 예측 프로세스 동안 모션 정보 예측을 수행하기 위해 사용된다. 또한, 이 인덱스의 제1 비트(즉, MERGE 인덱스 및 AFFINE MERGE 인덱스)만이 하나의 단일 컨텍스트를 사용하여 CABAC에 의해 코딩되고, 다른 비트들은 제1 실시예에 대해 설명된 바와 같이 바이패스 코딩된다. 따라서, 이 추가 변형예에서, MERGE 인덱스와 AFFINE MERGE 인덱스의 제1 비트에 대한 하나의 컨텍스트 변수가 MERGE 인덱스와 AFFINE MERGE 인덱스 시그널링 모두에 의해 공유된다. 후보들의 리스트들의 크기가 MERGE 인덱스 및 AFFINE MERGE 인덱스에 대해 상이하면, 각각의 경우에 대한 관련 인덱스를 시그널링하기 위한 비트들의 최대 수 또한 상이할 수 있는데, 즉 그것들은 서로 독립적이다. 따라서, 바이패스 코딩된 비트들의 수는, 필요한 경우, 예를 들어 비트스트림으로부터 관련 인덱스에 대한 데이터의 파싱을 가능하게 하는 아핀 플래그(2306)의 값에 따라, 그에 따라 적응될 수 있다.
이 변형예의 이점은 코딩 효율에 큰 영향을 주지 않고 MERGE 인덱스 및 AFFINE MERGE 인덱스 디코딩 프로세스 및 디코더 설계(및 인코더 설계)에 있어서의 복잡도 감소이다. 실제로, 이 추가 변형예에서는, 이전 변형예 또는 9 또는 10의 CABAC 상태들 대신에, MERGE 인덱스와 AFFINE MERGE 인덱스 양쪽 모두를 시그널링할 때 단지 1개의 CABAC 상태만이 필요하다. 또한, 이는 (제1 비트를 제외한) 모든 다른 비트들은 CABAC 바이패스 코딩되기 때문에 최악의 경우의 복잡도를 감소시키고, 이는 모든 비트들을 CABAC로 코딩하는 것에 비해 CABAC 인코딩/디코딩 프로세스 동안 필요한 연산들의 수를 감소시킨다.
이 실시예의 전술한 변형예들에서, AFFINE MERGE 인덱스 시그널링 및 MERGE 인덱스 시그널링은 제1 내지 제15 실시예 중 어느 하나에서 설명된 바와 같이 하나 이상의 컨텍스트를 공유할 수 있다. 이것의 이점은 이러한 인덱스들을 인코딩 또는 디코딩하는 데 필요한 컨텍스트들의 수에 있어서의 감소로부터의 복잡도 감소이다.
이 실시예의 전술된 변형예들에서, 모션 정보 예측자 후보는 방향, 리스트에 대한 식별, 참조 프레임 인덱스, 및 모션 벡터 중 하나 이상을 획득(또는 도출)하기 위한 정보를 포함한다. 바람직하게는, 모션 정보 예측자 후보는 모션 벡터 예측자 후보를 획득하기 위한 정보를 포함한다. 바람직한 변형예에서, 모션 정보 예측자 인덱스(예를 들어, AFFINE MERGE 인덱스)는 AFFINE MERGE 모드 예측자 후보를 시그널링하기 위해 사용되고, AFFINE MERGE 인덱스 시그널링은 제1 내지 제15 실시예들 중 어느 하나에 따른 MERGE 인덱스 시그널링 또는 현재 VTM 또는 HEVC에서 사용되는 MERGE 인덱스 시그널링(AFFINE MERGE 모드에 대한 모션 정보 예측자 후보들을 MERGE 후보들로서 가짐)과 유사한 인덱스 시그널링을 사용하여 구현된다.
이 실시예의 전술된 변형예들에서, 생성된 모션 정보 예측자 후보들의 리스트는 제1 실시예에서와 같이 또는 다른 전술된 제2 내지 제15 실시예들 중 일부의 변형예에서와 같이 ATMVP 후보를 포함한다. 대안적으로, 생성된 모션 정보 예측자 후보들의 리스트는 ATMVP 후보를 포함하지 않는다.
이 실시예의 전술한 변형예들에서, MERGE 인덱스 및 AFFINE MERGE 인덱스에 대한 후보들의 리스트들에 포함가능한 후보들의 최대 수는 고정된다. MERGE 인덱스 및 AFFINE MERGE 인덱스에 대한 후보들의 리스트들에 포함가능한 후보들의 최대 수는 동일할 수 있다. 이어서, 생성된 모션 정보 예측자 후보들의 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수(또는 타겟 수)를 결정(또는 표시) 하기 위한 데이터가 인코더에 의해 비트스트림에 포함되고, 디코더는 생성된 모션 정보 예측자 후보들의 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수(또는 타겟 수)를 결정하기 위한 데이터를 비트스트림으로부터 획득한다. 이것은 MERGE 인덱스 또는 AFFINE MERGE 인덱스를 디코딩하기 위한 데이터의 비트스트림으로부터의 파싱을 가능하게 한다. 최대 수(또는 타겟 수)를 결정(또는 표시)하기 위한 이러한 데이터는 디코딩될 때의 최대 수(또는 타겟 수) 자체일 수 있거나, 또는 그것은 디코더가 다른 파라미터들/신택스 요소들, 예를 들어, HEVC에서 사용되는 "five_minus_max_num_merge_cand" 또는 "MaxNumMergeCand-1" 또는 그것의 기능적으로 동등한 파라미터들과 함께 이러한 최대/타겟 수를 결정하게 할 수 있다.
대안적으로, MERGE 인덱스 및 AFFINE MERGE 인덱스에 대한 후보들의 리스트들에서의 후보들의 최대 수(또는 타겟 수)가 변할 수 있거나 상이할 수 있는 경우(예를 들어, ATMVP 후보 또는 임의의 다른 선택적인 후보의 사용이 하나의 리스트에 대해서는 인에이블되거나 디스에이블되지만, 다른 리스트에 대해서는 그렇지 않을 수 있기 때문에, 또는 리스트들이 상이한 후보들의 리스트 생성/도출 프로세스를 사용하기 때문에), AFFINE MERGE 모드가 사용될 때 그리고 MERGE 모드가 사용될 때 생성된 모션 정보 예측자 후보들의 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수들(또는 타겟 수들)은 개별적으로 결정가능하고, 인코더는 최대 수(들)/타겟 수(들)를 결정하기 위한 데이터를 비트스트림에 포함한다. 디코더는 이어서, 비트스트림으로부터, 최대/타겟 수(들)를 결정하기 위한 데이터를 획득하고, 획득된 데이터를 사용하여 모션 정보 예측자 인덱스를 파싱 또는 디코딩한다. 이어서, 아핀 플래그는 예를 들어, MERGE 인덱스와 AFFINE MERGE 인덱스의 파싱 또는 디코딩 사이에서 스위칭하는데 사용될 수 있다.
본 발명의 실시예들의 구현
전술한 실시예들 중 하나 이상은 도 3에서 처리 디바이스(300)의 프로세서(311), 또는 도 4에서 인코더(400)의, 도 5에서 디코더(60)의, 도 17에서 CABAC 코더 또는 그의 대응하는 CABAC 디코더의 대응하는 기능적 모듈(들)/유닛(들)- 이들은 하나 이상의 전술한 실시예의 방법 단계들을 수행함 -에 의해 구현된다.
도 19는 본 발명의 하나 이상의 실시예의 구현을 위한 컴퓨팅 디바이스(1300)의 개략적인 블록도이다. 컴퓨팅 디바이스(1300)는 마이크로 컴퓨터(micro-computer), 워크스테이션 또는 경량 휴대용 디바이스(light portable device)와 같은 디바이스일 수 있다. 컴퓨팅 디바이스(1300)는: 마이크로프로세서와 같은 중앙 처리 유닛(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)와 같은 통신 디바이스(1300)의 저장 수단 중 하나에 저장되기 위해서, 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 내지 제16 실시예들에서 설명된 상기 인코딩 방법들을 사용하여 이미지 데이터를 인코딩한다. 인코딩 유닛(2108)은 제1 내지 제16 실시예들에서 설명된 인코딩 방법들 중 적어도 하나를 사용한다. 다른 예를 들면, 인코딩 유닛(2108)은 제1 내지 제16 실시예들에서 설명된 인코딩 방법들의 조합을 사용할 수 있다.
네트워크 카메라(2102)의 통신 유닛(2110)은 인코딩 유닛(2108)에 의해 인코딩되는 인코딩된 이미지 데이터를 클라이언트 장치(2104)에 송신한다.
또한, 통신 유닛(2110)은 클라이언트 장치(2104)로부터 커맨드들을 수신한다. 커맨드들은 인코딩 유닛(2108)의 인코딩을 위한 파라미터들을 설정하기 위한 커맨드들을 포함한다.
제어 유닛(2112)은 통신 유닛(2110)에 의해 수신된 커맨드들에 따라 네트워크 카메라(2102) 내의 다른 유닛들을 제어한다.
클라이언트 장치(2104)는 통신 유닛(2114), 디코딩 유닛(2116), 및 제어 유닛(2118)을 포함한다.
클라이언트 장치(2104)의 통신 유닛(2114)은 커맨드들을 네트워크 카메라(2102)에 송신한다.
또한, 클라이언트 장치(2104)의 통신 유닛(2114)은 네트워크 카메라(2102)로부터 인코딩된 이미지 데이터를 수신한다.
디코딩 유닛(2116)은 제1 내지 제16 실시예들 중 임의의 실시예에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 다른 예를 들면, 디코딩 유닛(2116)은 제1 내지 제16 실시예들에서 설명된 디코딩 방법들의 조합을 사용할 수 있다.
클라이언트 장치(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)은 인코딩된 이미지 데이터를 네트워크(200)를 통해 수신한다.
디코딩 유닛(2204)은 통신 유닛(2202)에 의해 수신된 인코딩된 이미지 데이터를 디코딩한다.
디코딩 유닛(2204)은 제1 내지 제16 실시예들에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 디코딩 유닛(2204)은 제1 내지 제16 실시예들에서 설명된 디코딩 방법들 중 적어도 하나를 사용할 수 있다. 다른 예를 들면, 디코딩/인코딩 유닛(2204)은 제1 내지 제16 실시예들에서 설명된 디코딩 방법들의 조합을 사용할 수 있다.
제어 유닛(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 gate/logic array)들, 또는 다른 동등한 집적 또는 이산 로직 회로와 같은, 하나 이상의 프로세서에 의해 명령어들이 실행될 수 있다. 따라서, 본 명세서에서 사용되는 바와 같은 "프로세서"라는 용어는 본 명세서에서 설명되는 기법들의 구현에 적합한 임의의 전술한 구조 또는 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 양태들에서, 본 명세서에서 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 조합된 코덱에 통합될 수 있다. 또한, 본 기법들은 하나 이상의 회로 또는 로직 요소에서 완전히 구현될 수 있다.

Claims (24)

  1. 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 인코딩하는 방법으로서,
    모션 정보 예측자 후보들의 리스트를 생성하는 단계;
    상기 리스트에서의 상기 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하는 단계; 및
    CABAC 코딩을 사용하여, 상기 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하는 단계- 상기 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨(bypass CABAC coded) -를 포함하는 방법.
  2. 제1항에 있어서, 비-아핀 머지 모드가 사용될 때, 상기 방법은 상기 리스트에서의 상기 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 선택하는 단계를 추가로 포함하는 방법.
  3. 제2항에 있어서,
    상기 CABAC 코딩은 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해, 아핀 머지 모드가 사용될 때 제1 컨텍스트 변수를 사용하는 것, 또는 비-아핀 머지 모드가 사용될 때 제2 컨텍스트 변수를 사용하는 것을 포함하고;
    상기 방법은 아핀 머지 모드가 사용될 때 비트스트림에 아핀 머지 모드의 사용을 표시하기 위한 데이터를 포함하는 단계를 추가로 포함하는 방법.
  4. 제2항에 있어서, 상기 CABAC 코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 상기 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 비트스트림에 상기 생성된 모션 정보 예측자 후보들의 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 포함하는 단계를 추가로 포함하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 모션 정보 예측자 인덱스의 모든 비트들은 제1 비트를 제외하고 바이패스 CABAC 코딩되는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 선택된 모션 정보 예측자 후보에 대한 상기 모션 정보 예측자 인덱스는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 동일한 신택스 요소를 사용하여 인코딩되는 방법.
  8. 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 디코딩하는 방법으로서,
    모션 정보 예측자 후보들의 리스트를 생성하는 단계;
    CABAC 디코딩을 사용하여 상기 모션 정보 예측자 인덱스를 디코딩하는 단계- 상기 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
    아핀 머지 모드가 사용될 때, 상기 디코딩된 모션 정보 예측자 인덱스를 사용하여 상기 리스트에서의 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하는 단계를 포함하는 방법.
  9. 제8항에 있어서, 비-아핀 머지 모드가 사용될 때, 상기 방법은 상기 디코딩된 모션 정보 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 정보 예측자 후보들 중 하나를 비-아핀 머지 모드 예측자로서 식별하는 단계를 추가로 포함하는 방법.
  10. 제9항에 있어서,
    비트스트림으로부터, 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, 상기 CABAC 디코딩은, 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해:
    상기 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때, 제1 컨텍스트 변수를 사용하는 것; 및
    상기 획득된 데이터가 비-아핀 머지 모드의 사용을 표시할 때, 제2 컨텍스트 변수를 사용하는 것을 포함하는 방법.
  11. 제9항에 있어서,
    상기 CABAC 디코딩은 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 현재 블록의 모션 정보 예측자 인덱스의 적어도 하나의 비트에 대해 동일한 컨텍스트 변수를 사용하는 것을 포함하는 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서, 비트스트림으로부터, 아핀 머지 모드의 사용을 표시하기 위한 데이터를 획득하는 단계를 추가로 포함하고, 상기 생성된 모션 정보 예측자 후보들의 리스트는:
    상기 획득된 데이터가 아핀 머지 모드의 사용을 표시할 때, 아핀 머지 모드 예측자 후보들을 포함하고;
    상기 획득된 데이터가 비-아핀 머지 모드의 사용을 표시할 때, 비-아핀 머지 모드 예측자 후보들을 포함하는 방법.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서, 상기 모션 정보 예측자 인덱스를 디코딩하는 단계는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 비트스트림으로부터 동일한 신택스 요소를 파싱하는 단계를 포함하는 방법.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서, 상기 생성된 모션 정보 예측자 후보들의 리스트에 포함가능한 모션 정보 예측자 후보들의 최대 수를 결정하기 위한 데이터를 비트스트림으로부터 획득하는 단계를 추가로 포함하는 방법.
  15. 제8항 내지 제14항 중 어느 한 항에 있어서, 상기 모션 정보 예측자 인덱스의 모든 비트들은 제1 비트를 제외하고 바이패스 CABAC 디코딩되는 방법.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서, 모션 정보 예측자 후보가 모션 벡터를 획득하기 위한 정보를 포함하는 방법.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서, 상기 생성된 모션 정보 예측자 후보들의 리스트는 ATMVP 후보를 포함하는 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서, 상기 생성된 모션 정보 예측자 후보들의 리스트는 아핀 머지 모드가 사용될 때 및 비-아핀 머지 모드가 사용될 때 그 안에 포함가능한 모션 정보 예측자 후보들의 최대 수가 동일한 방법.
  19. 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 인코딩하기 위한 디바이스로서,
    모션 정보 예측자 후보들의 리스트를 생성하기 위한 수단;
    상기 리스트에서의 상기 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 선택하기 위한 수단; 및
    CABAC 코딩을 사용하여, 상기 선택된 모션 정보 예측자 후보에 대한 모션 정보 예측자 인덱스를 생성하기 위한 수단- 상기 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 코딩됨 -을 포함하는 디바이스.
  20. 제19항에 있어서, 제1항 내지 제7항 중 어느 한 항에 종속될 때, 제1항 내지 제7항 또는 제16항 내지 제18항 중 어느 한 항에 따른 모션 정보 예측자 인덱스를 인코딩하는 방법을 수행하기 위한 수단을 포함하는 디바이스.
  21. 아핀 머지 모드에 대한 모션 정보 예측자 인덱스를 디코딩하기 위한 디바이스로서,
    모션 정보 예측자 후보들의 리스트를 생성하기 위한 수단;
    CABAC 디코딩을 사용하여 상기 모션 정보 예측자 인덱스를 디코딩하기 위한 수단- 상기 모션 정보 예측자 인덱스의 하나 이상의 비트는 바이패스 CABAC 디코딩됨 -; 및
    아핀 머지 모드가 사용될 때, 상기 디코딩된 모션 정보 예측자 인덱스를 사용하여 상기 리스트에서의 상기 모션 정보 예측자 후보들 중 하나를 아핀 머지 모드 예측자로서 식별하기 위한 수단을 포함하는 디바이스.
  22. 제21항에 있어서, 제8항 내지 제15항 중 어느 한 항에 종속될 때, 제8항 내지 제15항, 또는 제16항 내지 제18항 중 어느 한 항에 따른 모션 정보 예측자 인덱스를 디코딩하는 방법을 수행하기 위한 수단을 포함하는 디바이스.
  23. 프로그램으로서, 컴퓨터 또는 프로세서에서 실행될 때, 상기 컴퓨터 또는 프로세서로 하여금 제1항 내지 제18항 중 어느 한 항의 방법을 수행하게 하는 프로그램.
  24. 캐리어 매체로서, 제23항의 프로그램을 운반하는 캐리어 매체.
KR1020217013967A 2018-10-18 2019-10-18 비디오 코딩 및 디코딩 KR20210069713A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1817020.9A GB2578151B (en) 2018-10-18 2018-10-18 Video coding and decoding
GB1817020.9 2018-10-18
PCT/EP2019/078436 WO2020079257A1 (en) 2018-10-18 2019-10-18 Video coding and decoding

Publications (1)

Publication Number Publication Date
KR20210069713A true KR20210069713A (ko) 2021-06-11

Family

ID=64453836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217013967A KR20210069713A (ko) 2018-10-18 2019-10-18 비디오 코딩 및 디코딩

Country Status (8)

Country Link
US (4) US11528502B2 (ko)
EP (1) EP3868105A1 (ko)
JP (2) JP7146073B2 (ko)
KR (1) KR20210069713A (ko)
CN (6) CN116723319A (ko)
GB (2) GB2595054B (ko)
TW (1) TWI811460B (ko)
WO (1) WO2020079257A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116527921B (zh) * 2023-06-29 2024-04-12 浙江大华技术股份有限公司 仿射候选构建方法、仿射预测的方法和相关设备

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2015272007B2 (en) 2011-04-20 2018-02-01 Qualcomm Incorporated Motion vector prediction in video coding
CN107404651B (zh) 2011-09-09 2020-03-06 株式会社Kt 用于解码视频信号的方法
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 오수미 인터 모드에서의 시간 후보자 결정방법
CN107580223B (zh) 2011-11-08 2020-12-08 株式会社Kt 利用解码装置对视频信号进行解码的方法
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
WO2016008157A1 (en) 2014-07-18 2016-01-21 Mediatek Singapore Pte. Ltd. Methods for motion compensation using high order motion model
SG11201703551VA (en) 2014-12-09 2017-05-30 Mediatek Inc Method of motion vector predictor or merge candidate derivation in video coding
US11477477B2 (en) 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
MX2017011558A (es) * 2015-03-10 2018-03-21 Huawei Tech Co Ltd Método de predicción de imagen y aparato relacionado.
CN109274974B (zh) 2015-09-29 2022-02-11 华为技术有限公司 图像预测的方法及装置
US11082713B2 (en) * 2015-11-20 2021-08-03 Mediatek Inc. Method and apparatus for global motion compensation in video coding system
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US10812791B2 (en) 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
CN117221572A (zh) * 2016-10-04 2023-12-12 英迪股份有限公司 视频解码方法、图像编码方法以及发送比特流的方法
US10701391B2 (en) 2017-03-23 2020-06-30 Qualcomm Incorporated Motion vector difference (MVD) prediction
WO2020060316A1 (ko) * 2018-09-20 2020-03-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
GB2577318B (en) * 2018-09-21 2021-03-10 Canon Kk Video coding and decoding
TWI831837B (zh) * 2018-09-23 2024-02-11 大陸商北京字節跳動網絡技術有限公司 仿射模型的多個假設
KR102637604B1 (ko) * 2018-10-08 2024-02-16 엘지전자 주식회사 신택스 디자인 방법 및 신택스를 이용하여 코딩을 수행하는 장치
US11425414B2 (en) * 2019-08-05 2022-08-23 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
GB201817020D0 (en) 2018-12-05
JP2022177179A (ja) 2022-11-30
CN112889285A (zh) 2021-06-01
GB2578151B (en) 2021-06-09
TWI811460B (zh) 2023-08-11
US20240098297A1 (en) 2024-03-21
CN116723321A (zh) 2023-09-08
US20210344943A1 (en) 2021-11-04
WO2020079257A1 (en) 2020-04-23
JP7146073B2 (ja) 2022-10-03
GB202105854D0 (en) 2021-06-09
US11528502B2 (en) 2022-12-13
TW202017387A (zh) 2020-05-01
GB2595054B (en) 2022-07-06
US11849138B2 (en) 2023-12-19
EP3868105A1 (en) 2021-08-25
CN116723322A (zh) 2023-09-08
CN116723318A (zh) 2023-09-08
CN112889285B (zh) 2023-08-01
US20230077992A1 (en) 2023-03-16
JP7321345B2 (ja) 2023-08-04
GB2595054A (en) 2021-11-17
US20240107054A1 (en) 2024-03-28
GB2578151A (en) 2020-04-22
CN116723319A (zh) 2023-09-08
CN116723320A (zh) 2023-09-08
JP2022503706A (ja) 2022-01-12

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
GB2606281A (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
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X601 Decision of rejection after re-examination