KR20210104895A - 인코더 및 디코더에서 변환 선택을 선택하기 위한 방법 및 장치 - Google Patents

인코더 및 디코더에서 변환 선택을 선택하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210104895A
KR20210104895A KR1020217023848A KR20217023848A KR20210104895A KR 20210104895 A KR20210104895 A KR 20210104895A KR 1020217023848 A KR1020217023848 A KR 1020217023848A KR 20217023848 A KR20217023848 A KR 20217023848A KR 20210104895 A KR20210104895 A KR 20210104895A
Authority
KR
South Korea
Prior art keywords
transform
flag
video block
dct
vertical direction
Prior art date
Application number
KR1020217023848A
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 KR20210104895A publication Critical patent/KR20210104895A/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/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

인코딩 및 디코딩에서의 변환 선택을 위한 방법들 및 장치들에 대한 메커니즘들이 제공된다.

Description

인코더 및 디코더에서 변환 선택을 선택하기 위한 방법 및 장치
본 출원은 인코딩 및 디코딩에서의 변환 선택을 위한 방법들 장치들에 관한 것이다.
표준화 다용도 비디오 코딩(VVC) 하의 현재의 비디오 코덱의 테스트 모델(VTM)은 다중 변환 선택(MTS)으로 지칭되는 툴을 포함한다. 이러한 툴은, 인코더가 3개의 상이한 변환 사이에서 선택할 수 있게 한다. 이러한 변환들은, 이산 코사인 변환(DCT)의 2개의 변형 및 이산 사인 변환(DST)의 하나의 변형으로 이루어진다. 인코딩 동안, 변환은 전형적으로 블록의 수평 방향에서 수행되고, 이어서, 수직 방향에서의 제2 변환이 후속된다. 이러한 2개의 변환은 서로 독립적이므로, 상이한 방향들에서 상이한 변환들을 사용할 가능성이 매우 높다. 선택될 수 있는 변환들의 세트는, DCT-2, DST-7, 및 DCT-8 [2]를 포함한다.
인코더는, 사용할 변환을 선택할 때, 모든 허용된 조합들을 테스트한다. 이들은 블록 유형(상호간(inter)/내적(intra)), 블록 크기, 채널 유형, 및 예측 모드에 의존한다. 예컨대, 4 x 4 샘플 내지 32 x 32 샘플의 크기들을 갖는 루마 채널의 내적 블록들에 대해, 다음의 5개의 상이한 조합이 테스트된다:
1. DCT-2 수평 및 DCT-2 수직
2. DST-7 수평 및 DST-7 수직
3. DST-7 수평 및 DCT-8 수직
4. DCT-8 수평 및 DST-7 수직
5. DCT-8 수평 및 DCT-8 수직
더 크거나 크로마 채널에 있는 블록들은 두 방향들 모두에서 DCT-2만을 사용한다. 툴은 내적 및 상호간 예측에 대해 별개로 인에블링될 수 있다. 공통 테스트 조건(CTC)[1]에서, 툴은 내적 예측된 블록들에 대해서만 인에이블링된다. 툴이 디스에이블링될 때, 인코더는 두 방향들 모두에서 DCT-2를 사용한다.
선택된 조합을 코딩하는 데 필요한 비트 수를 감소시키기 위해, 적응적 확률들을 갖는 산술 코더(컨텍스트-적응형 이진 산술 코딩(Context-Adaptive Binary Arithmetic Coding; CABAC)가 사용될 수 있다. 코더는, 가장 효율적인 방식으로 빈들을 인코딩하기 위해, 각각이 별개의 확률을 표시하는 상이한 컨텍스트들을 사용한다. 비트스트림에서, 인코더에 의해 선택된 조합은 다음과 같이 시그널링된다:
Figure pct00001
emt_cu_flag: DCT-2가 수평으로 및 수직으로 둘 모두에 사용되는지 여부를 시그널링하기 위해 1개의 bin이 6개의 CABAC 컨텍스트를 사용한다. 컨텍스트는 현재 블록의 분할 깊이에 기반하여 선택된다. 플래그는, 4 x 4 내지 32 x 32 샘플의 크기들을 갖는 루마 블록들에 대해서만, 그리고 MTS가 현재 예측 모드에 허용되는 경우에만 시그널링된다. 플래그의 값이 0인 경우, DCT-2가 사용되며, 그렇지 않으면, emt_tu_idx가 사용되어 변환들의 조합이 결정된다.
Figure pct00002
emt_tu_idx: 나머지 4개의 조합 중 어느 조합이 사용되는지를 시그널링하기 위해 2개의 빈이 4개의 CABAC 컨텍스트를 사용한다. 2개의 컨텍스트는 블록이 내적 코딩된 경우에 사용되는 한편, 나머지 2개의 컨텍스트는 상호간 코딩된 블록들에 사용된다. (CTC에서, 이러한 마지막 2개의 컨텍스트는 사용되지 않는데, 그 이유는, CTC에서 상호간 코딩에 대해 MTS가 꺼지기 때문이다.) 빈당 하나의 컨텍스트가 사용되므로, 제1 빈은 (예측 모드에 따라) 컨텍스트 0 또는 2를 사용하는 반면, 제2 빈은 항상 컨텍스트 1 또는 3을 사용한다. 이러한 2개의 빈에 대한 가능한 값들은 범위가 0(00, 두 방향들 모두에서 DST-7을 표시함) 내지 3(11, 두 방향들 모두에서 DCT-8을 표시함)이다. 이러한 2개의 빈은 emt_cu_flag가 값 1을 갖는 경우에만 시그널링된다.
디코더에서, 대응하는 프로세스가 수행된다. 먼저, emt_cu_flag가 파싱된다. 플래그가 설정된 경우, 사용될 변환을 결정하기 위해 emt_tu_idx가 파싱된다.
일부 경우들에서, 명시적 다중-코어 변환(EMT) 또는 적응형 다중-코어 변환(AMT)이라는 명칭들이 변환 툴에 사용된다는 것을 유의한다. 이들은 툴의 이전 명칭들이었으며, 이후 MTS로 변경되었다. 모든 명칭들이 동일한 툴을 지칭하므로, 이들은 상호교환가능하게 사용될 수 있다.
VVC 표준의 현재 초안은 모든 가능한 조합들을 통한 철저한 탐색을 수행한다. 이는, 인코더가 상이한 모드들을 테스트하는 데 많은 시간을 소비하는 것을 초래하며, 그 모드들 중 일부는 선택될 가능성이 매우 낮다. 또한, 이진 코더는 변환 색인을 시그널링하기 위해 비효율적인 방식을 사용한다.
실시예들의 제1 양상은 디코더에 의해 수행되는 방법을 정의한다. 방법은, 컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하는 단계를 포함한다. 방법은, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그가 설정된지를 결정하기 위해 적어도 하나의 플래그를 파싱하는 단계를 포함한다. 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 방법은, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제1 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하는 단계를 더 포함한다. 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 방법은, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 제2 플래그를 파싱하는 단계를 포함한다. 제2 플래그가 수평 방향 및 수직 방향 둘 모두에서 제2 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 방법은, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제2 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하는 단계를 포함한다. 제2 플래그가 수평 방향 및 수직 방향 둘 모두에서 제2 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 방법은, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제2 변환이 사용되어야 하는지 그리고 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 적어도 하나의 플래그의 제3 플래그를 파싱하는 단계를 포함한다. 방법은, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 제2 및 제3 변환들을 사용하여 디코딩하는 단계를 포함한다.
실시예들의 제2 양상은, 적어도 하나의 프로세서 및 프로세서에 결합된 메모리를 포함하는 디코더를 정의한다. 메모리는, 프로세서로 하여금, 컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그가 설정된지를 결정하기 위해 적어도 하나의 플래그를 파싱하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제1 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 제2 플래그를 파싱하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제2 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제2 변환이 사용되어야 하는지 그리고 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 적어도 하나의 플래그의 제3 플래그를 파싱하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 제2 및 제3 변환들을 사용하여 디코딩하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다.
실시예들의 제3 양상은 디코더를 위한 컴퓨터 프로그램을 정의한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그가 설정된지를 결정하기 위해 적어도 하나의 플래그를 파싱하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제1 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 적어도 하나의 플래그가 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 제2 플래그를 파싱하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 제2 플래그가 수평 방향 및 수직 방향 둘 모두에서 제2 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을, 제2 변환을 사용하여 수평 방향 및 수직 방향에서 디코딩하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 제2 플래그가 수평 방향 및 수직 방향 둘 모두에서 제2 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 방법은, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제2 변환이 사용되어야 하는지 그리고 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 적어도 하나의 플래그의 제3 플래그를 파싱하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 디코딩된 비디오 블록을 생성하기 위해, 인코딩된 비디오 블록을 제2 및 제3 변환들을 사용하여 디코딩하게 하는 코드 수단을 포함한다.
실시예들의 제4 양상은, 컴퓨터 판독가능 수단 및 컴퓨터 판독가능 수단 상에 저장된 제3 양상에 따른 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품을 정의한다.
실시예들의 제5 양상은 인코더에 의해 수행되는 방법을 정의한다. 방법은, 인코딩을 위해 비디오 블록을 수신하는 단계를 포함한다. 방법은, 비디오 블록의 특성을 결정하는 단계를 포함한다. 방법은, 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 다중 변환 선택의 일부이고 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하는 단계를 더 포함한다. 방법은, 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되는 조합을 테스트함이 없이 수평 방향 및 수직 방향에서 복수의 변환들의 조합들을 테스트하는 단계를 포함한다. 방법은, 조합들로부터, 가장 낮은 레이트 왜곡(rate distortion)을 제공하는 조합을 선택하는 단계를 포함한다. 방법은, 인코딩된 비디오 블록을 생성하기 위해, 비디오 블록을 선택된 조합을 사용하여 인코딩하는 단계를 포함한다. 방법은, 특성이, 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 수평 방향 및 수직 방향에서 기본 변환을 사용하여 비디오 블록을 인코딩하는 단계를 포함한다.
실시예들의 제6 양상은 블록의 블록 크기에 기반하여 비디오의 블록을 인코딩하기 위한 인코더를 정의하며, 블록의 수평 방향 및 수직 방향 각각은 변환을 사용하여 인코딩되고, 변환은, 제1 변환, 제2 변환, 또는 제3 변환 중 하나일 수 있다. 인코더는 적어도 하나의 프로세서 및 프로세서에 결합된 메모리를 포함한다. 메모리는, 프로세서로 하여금, 비디오 블록의 특성을 결정하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 다중 변환 선택의 일부이고 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되는 조합을 테스트함이 없이 수평 방향 및 수직 방향에서 복수의 변환들의 조합들을 테스트하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 조합들로부터, 가장 낮은 레이트 왜곡을 제공하는 조합을 선택하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 인코딩된 비디오 블록을 생성하기 위해, 비디오 블록을 선택된 조합을 사용하여 인코딩하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다. 메모리는, 프로세서로 하여금, 특성이, 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 수평 방향 및 수직 방향에서 기본 변환을 사용하여 비디오 블록을 인코딩하는 것을 수행하게 하는 프로세서에 의해 실행가능한 명령어들을 포함한다.
실시예들의 제7 양상은 블록의 블록 크기에 기반하여 비디오의 블록을 인코딩하기 위한 컴퓨터 프로그램을 정의하며, 블록의 수평 방향 및 수직 방향 각각은 변환을 사용하여 인코딩되고, 변환은, 제1 변환, 제2 변환, 또는 제3 변환 중 하나일 수 있다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 비디오 블록의 특성을 결정하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 다중 변환 선택의 일부이고 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되는 조합을 테스트함이 없이 수평 방향 및 수직 방향에서 복수의 변환들의 조합들을 테스트하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 조합들로부터, 가장 낮은 레이트 왜곡을 제공하는 조합을 선택하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 인코딩된 비디오 블록을 생성하기 위해, 비디오 블록을 선택된 조합을 사용하여 인코딩하게 하는 코드 수단을 포함한다. 컴퓨터 프로그램은, 컴퓨터 상에서 실행될 때, 컴퓨터로 하여금, 특성이, 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 수평 방향 및 수직 방향에서 기본 변환을 사용하여 비디오 블록을 인코딩하게 하는 코드 수단을 포함한다.
실시예들의 제8 양상은, 컴퓨터 판독가능 수단 및 컴퓨터 판독가능 수단 상에 저장된 제7 양상에 따른 컴퓨터 프로그램을 포함하는 컴퓨터 프로그램 제품을 정의한다.
본 발명의 개념들에 의해 제공되는 이점들은, 위에 설명된 5개의 조합 중 하나를 제거함으로써 인코더 복잡도를 감소시키는 것을 포함한다. 특정 블록 크기들에 대해 덜 복잡한 변환을 사용함으로써 인코더 및 디코더 둘 모두의 복잡도가 감소된다. 또한, 가장 흔한 조합(두 방향들 모두에서 DST-7)에 대한 빈들의 수가 3에서 2로 감소되므로, 이진화의 효율이 증가된다.
본 개시내용의 추가적인 이해를 제공하기 위해 포함되고 본 출원에 포함되어 본 출원의 일부를 구성하는 첨부된 도면들은 본 발명의 개념들의 특정 비-제한적인 실시예들을 예시한다. 도면들에서:
도 1은 일부 실시예들에 따라 인코더 및 디코더가 구현될 수 있는 시스템의 환경의 예를 예시하는 블록도이다.
도 2는 일부 실시예들에 따른 인코더를 예시하는 블록도이다.
도 3은 일부 실시예들에 따른 디코더를 예시하는 블록도이다.
도 4는 MTS 툴의 구성요소들을 예시하는 블록도이다.
도 5는 일부 실시예들에 따른 MTS 툴의 구성요소들을 예시하는 블록도이다.
도 6은 일부 실시예들에 따른 MTS 툴의 구성요소들을 예시하는 블록도이다.
도 7 내지 도 11은 본 발명의 개념들의 일부 실시예들에 따른 인코더 및/또는 디코더의 동작들을 예시하는 흐름도들이다.
이제, 본 발명의 개념들이 첨부된 도면들을 참조하여 이하에서 더 완전히 설명될 것이며, 도면들에서, 본 발명의 개념들의 실시예들의 예들이 도시된다. 그러나, 본 발명의 개념들은 많은 상이한 형태들로 구현될 수 있으며, 본원에 기재된 실시예들로 제한되는 것으로 해석되어서는 안 된다. 오히려, 이러한 실시예들은, 본 개시내용이 철저하고 완전해질 것이고 본 발명의 개념들의 범위를 관련 기술분야의 통상의 기술자들에게 완전히 전달할 것이도록 제공된다. 이러한 실시예들은 상호 배타적이지 않다는 것이 또한 유의되어야 한다. 일 실시예로부터의 구성요소들은 암묵적으로 다른 실시예에서 존재하는/사용되는 것으로 가정될 수 있다.
다음의 설명은 개시된 주제의 다양한 실시예들을 제시한다. 이러한 실시예들은 예들을 교시하는 것으로서 제시되며, 개시된 주제의 범위를 제한하는 것으로서 해석되지 않아야 한다. 예컨대, 설명된 실시예들의 특정 세부사항들은 설명된 주제의 범위를 벗어나지 않으면서 수정, 생략, 또는 확장될 수 있다.
도 1은, 본원에 설명된 바와 같이 비트스트림들을 인코딩하는 데 사용될 수 있는 인코더(100)의 동작 환경의 예를 예시한다. 인코더(100)는 인코딩에서 사용되는 다중 변환 선택(MTS) 구성요소(102)를 갖는다. 인코더(100)는 네트워크(104) 및/또는 저장소(106)로부터 비디오를 수신하고, 아래에 설명되는 바와 같이 비디오의 정의된 블록 크기들에 대해 MTS 구성요소(102)를 사용하여 비디오를 비트스트림들로 인코딩하고, 인코딩된 비디오를 네트워크(110)를 통해 디코더(108)에 송신한다. 저장 디바이스(106)는 비디오들의 저장 보관소, 이를테면, 스토어 또는 스트리밍 비디오 서비스의 저장 보관소, 별개의 저장 구성요소, 모바일 디바이스의 구성요소 등의 일부일 수 있다. 디코더(108)는, 오디오/비디오(A/V) 미디어 플레이어(114)를 갖는 디바이스(112)의 일부일 수 있다. 디바이스(112)는 모바일 디바이스, 셋톱 디바이스, 데스크톱 컴퓨터 등일 수 있다.
도 2는 본 발명의 개념들의 일부 실시예들에 따라 비디오 프레임들을 인코딩하도록 구성되는 인코더(100)의 요소들을 예시하는 블록도이다. 도시된 바와 같이, 인코더(100)는, 다른 디바이스들/엔티티들/기능들/등과의 통신들을 제공하도록 구성되는 네트워크 인터페이스 회로(205)(네트워크 인터페이스로 또한 지칭됨)를 포함할 수 있다. 인코더(100)는 또한, 네트워크 인터페이스 회로(205)에 결합되는 프로세서 회로(201)(프로세서로 또한 지칭됨), 및 프로세서 회로에 결합되는 메모리 회로(203)(메모리로 또한 지칭됨)를 포함할 수 있다. 메모리 회로(203)는, 프로세서 회로(201)에 의해 실행될 때 프로세서 회로로 하여금 본원에 개시된 실시예들에 따른 동작들을 수행하게 하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다.
다른 실시예들에 따르면, 프로세서 회로(201)는, 별개의 메모리 회로가 요구되지 않게 메모리를 포함하도록 정의될 수 있다. 본원에 논의되는 바와 같이, 인코더(100)의 동작들은 프로세서(201) 및/또는 네트워크 인터페이스(205)에 의해 수행될 수 있다. 예컨대, 프로세서(201)는, 디코더(108)에 통신들을 송신하고/거나 하나 이상의 다른 네트워크 노드/엔티티/서버, 이를테면 다른 인코더 노드들, 보관소 서버들 등으로부터 네트워크 인터페이스(104)를 통해 통신들을 수신하도록 네트워크 인터페이스(205)를 제어할 수 있다. 더욱이, 모듈들은 메모리(203)에 저장될 수 있고, 이러한 모듈들은, 모듈의 명령어들이 프로세서(201)에 의해 실행될 때 프로세서(201)가 개개의 동작들을 수행하도록 명령어들을 제공할 수 있다.
도 3은 본 발명의 개념들의 일부 실시예들에 따라 비디오 프레임들을 디코딩하도록 구성되는 디코더(108)의 요소들을 예시하는 블록도이다. 도시된 바와 같이, 디코더(108)는, 다른 디바이스들/엔티티들/기능들/등과의 통신들을 제공하도록 구성되는 네트워크 인터페이스 회로(305)(네트워크 인터페이스로 또한 지칭됨)를 포함할 수 있다. 디코더(108)는 또한, 네트워크 인터페이스 회로(305)에 결합되는 프로세서 회로(301)(프로세서로 또한 지칭됨), 및 프로세서 회로에 결합되는 메모리 회로(303)(메모리로 또한 지칭됨)를 포함할 수 있다. 메모리 회로(303)는, 프로세서 회로(301)에 의해 실행될 때 프로세서 회로로 하여금 본원에 개시된 실시예들에 따른 동작들을 수행하게 하는 컴퓨터 판독가능 프로그램 코드를 포함할 수 있다.
다른 실시예들에 따르면, 프로세서 회로(301)는, 별개의 메모리 회로가 요구되지 않게 메모리를 포함하도록 정의될 수 있다. 본원에 논의되는 바와 같이, 디코더(108)의 동작들은 프로세서(301) 및/또는 네트워크 인터페이스(305)에 의해 수행될 수 있다. 예컨대, 프로세서(301)는, 인코더(100)로부터 통신들을 수신하도록 네트워크 인터페이스(305)를 제어할 수 있다. 더욱이, 모듈들은 메모리(303)에 저장될 수 있고, 이러한 모듈들은, 모듈의 명령어들이 프로세서(301)에 의해 실행될 때 프로세서(301)가 개개의 동작들을 수행하도록 명령어들을 제공할 수 있다.
본원에 설명된 본 발명의 개념들에 의해 제공되는 잠재적 이점은, 소프트웨어로 구현된 인코더의 경우에, 평가될 변환 조합들의 수를 제한함으로써 인코더 실행 시간을 감소시키는 것을 포함한다. 하드웨어로 구현된 인코더의 경우에, 복잡도 감소는 다른 형태, 이를테면, 인코더 실행 시간 대신 낮아진 실리콘 영역 사용을 취할 수 있다.
본원에 설명된 실시예들은, 특정 블록 크기들에 대해, 사용하기에 계산적으로 비용이 많이 들거나 빈번하지 않게 사용되는 변환을 다른 변환으로 대체함으로써 인코더 및 디코더 둘 모두의 복잡도를 감소시킨다. 예컨대, VVC 표준 하에서 동작하도록 구성되는 인코더에서, 특정 블록 크기들에 대해, 비교적 계산적으로 비용이 많이 든다고 말할 수 있는 DCT-8은 비교적 계산적으로 비용이 덜 든다고 말할 수 있는 DCT-2로 대체될 수 있다.
또한, emt_cu_flag 및 emt_tu_idx를 이진화하기 위해 CABAC 컨텍스트들을 사용함으로써 압축 효율이 증가된다.
추가적인 개선은 메모리 사용의 감소인데, 그 이유는, 대체된 변환에 대한 변환 계수들(예컨대, 크기 32 DCT-8)이 메모리에 저장될 필요가 없기 때문이다. 하드웨어 구현에서, 이는 더 작은 실리콘 표면적으로 해석될 수 있다.
예컨대, [1]에서 설명되는 바와 같은 공통 테스트 조건들(CTC)에 따라 VTM-2.0.1을 사용하는 앵커에 기반한 구현에서, 압축 효율(루마에 대한 평균 BD-레이트)은 모든 내적 구성에서 0.07 % 그리고 랜덤 액세스(RA) 구성에서 0.02 %만큼 개선된다. 동시에, 인코딩 시간은, 앵커와 비교하여, 각각 85 %(AI) 및 95 %(RA)로 감소된다. 디코더의 복잡도에 대한 영향이 존재하더라도 최소의 영향이 존재하지만, 영향이 있는 정도까지는 그것이 유리하다. 이에 대한 하나의 이유는, 수평으로 DCT-8과 수직으로 DCT-8의 계산적으로 비용이 많이 드는 조합이 사용으로부터 제거되는 것으로 인한 것이다. VTM-3.0에서 동일한 수정들을 구현할 때, 압축 효율의 개선들은 0.03 %(AI) 및 0.01 %(RA)인 한편, 인코더 실행 시간은 각각 88 %(AI) 및 98 %(RA)로 감소된다.
후속하는 설명에서, VVC 표준화의 부분들에 따라 수행하도록 구성되는 인코더 및 디코더가 본 발명의 개념들을 설명하는 데 사용된다. 본원에 설명된 개념들을 사용하여 다른 표준화들이 구현될 수 있다.
도 4는 MTS 툴이 현재 어떻게 구현되는지의 실시예를 예시한다. 도 5는 일 실시예에서 도 4의 MTS가 어떻게 변경되는지를 예시한다. 도 4에서, 각각의 노드는, 문자에 콜론 부호가 후속되는 것(즉, "a:" 내지 "j:")으로 표기된다. 도 5에서, 각각의 노드는, 2개의 문자에 콜론 부호가 후속되는 것(즉, "aa:" 내지 "hh:")으로 표기된다. 도 6에서, 각각의 노드는, 3개의 문자에 콜론 부호가 후속되는 것(즉, "aaa:" 내지 "jjj:")으로 표기된다. 본 발명자들은, 인코더 및 디코더의 계산 효율을 증가시키기 위해, VVC 표준의 초안에서 현재 구현된 MTS 툴에 대해 몇몇 상이한 변경들이 이루어질 수 있다는 것을 깨달았다. 다음의 변경들의 설명에서, 도 4 내지 도 6의 노드들은 도면들에서 문자 또는 문자들로 지칭될 것이다. 도 4에 기반하여, 다음의 변경들이 이루어진다:
변경 1: 분기 2의 수평으로 DCT-8과 수직으로 DCT-8의 조합(노드 g)이 더 이상 허용되지 않는다. 이는, 인코더가 이러한 조합을 평가하지 않고, 그에 따라, 평가 실행 시간이 감소된다는 것을 암시한다. 디코더는, mts_tu_idx_hor이 DCT-8(노드 e)을 표시하는 경우, 이 변경에 따라, mts_tu_idx_ver이 항상 DST-7(노드 h)을 표시한다고 결론지을 수 있다.
변경 2: 특정 블록 크기들에 대해, 분기 2의 DCT-8(도 4의 노드 e, 노드 g, 및 노드 i, 및 도 5의 노드 gg 및 노드 hh)은 DCT-2로 대체된다. 블록이 특정 크기를 갖는 경우, 인코더는, 분기 2에서 자신이 DCT-8 대신 DCT-2를 평가할 것임을 알 것이다. 이는 변경 1에 부가되는데, 그 이유는, 이러한 블록들에 대해, 이 그대로의 경우가 이미 분기 1에 포함되므로 분기 2의 수평으로 DCT-2와 수직으로 DCT-2의 조합이 평가되지 않을 것이기 때문이다. 디코더는, 블록이 특정 크기를 갖고 mts_tu_idx_hor 또는 mts_tu_idx_ver이 DCT-8의 사용을 표시하는 경우들에서 DCT-8 대신 DCT-2를 적용함으로써 이러한 변경에 확인응답한다. 이러한 변경으로 인해, 아래의 본문은 DCT-X를 참조하며, 이는, 일부 블록 크키들에 대해 DCT-8 그리고 다른 블록 크기들에 대해 DCT-2임을 의미한다.
변경 3: 변환들의 가장 일반적인 조합인 수평으로 DST-7과 수직으로 DST-7의 조합(노드 j)이, 도 5의 코딩 트리에서, 수평으로 DCT-X에 의해 현재 점유된 위치(노드 ee)로 이동된다. 변경 1로 인해, mts_tu_idx_ver은, mts_tu_idx_hor이 DCT-X를 표시하는 경우 인코딩될 필요가 없다. 이러한 변경은 이러한 생략을 이용한다.
변경 4: mts_tu_idx_ver 플래그가 mts_tu_idx_hor 플래그의 값에만 기반하여 인코딩되므로, 플래그들 둘 모두가 제거되고 2개의 새로운 플래그로 대체된다. 2개의 새로운 플래그(도 5에 또한 예시됨)는 mts_dst_flag 및 mts_tu_flag이다.
a) mts_dst_flag는 두 방향들 모두에서 DST-7을 사용할지 여부를 표시한다.
b) mts_tu_flag는 어느 방향에서 DCT-X 및 DST-7인 사용될지를 표시한다.
변경 5: mts_tu_flag는 더 바람직한 조합 또는 덜 바람직한 조합을 사용할지 여부를 시그널링한다. 내적 예측의 방향에 기반하여, 이용가능한 조합들 중 어느 조합이 더 바람직한지의 결정이 이루어진다. 블록이 상호간 예측을 사용하는 경우, 플래그는 또한, 더 바람직한 조합을 사용할지 여부를 시그널링하지만, 어느 조합이 더 바람직한지의 결정은 상이한 정보, 예컨대, 블록 크기 또는 블록 형상에 기반한다.
변경 6: 이전에, mts_cu_flag의 컨텍스트 선택은 분할 깊이에 기반하여 이루어졌다. 이러한 변경들에서, 블록의 더 큰 치수(폭 또는 높이)뿐만 아니라 내적 예측의 방향에 기반하여 올바른 컨텍스트가 결정된다. 블록이 상호간 예측을 사용하는 경우, 컨텍스트는 상이한 정보, 예컨대, 블록 크기 또는 블록 형상에 기반하여 선택된다.
변경 7 (도 6 참조): mts_tu_idx_hor 플래그는, 두 변환들 모두가 동일한지 여부를 표시하는 플래그(예컨대, mst_same_flag)로 대체된다. 플래그가 설정된 경우, 두 방향들 모두에서 동일한 변환이 사용될 것이다. 어느 변환을 사용할 것인지를 표시하기 위해 부가적인 비트가 인코딩될 것이다. 플래그가 설정되지 않은 경우, 2개의 방향에서 2개의 상이한 변환이 사용될 것이며, 부가적인 비트는 어느 방향에서 어느 변환을 사용할 것인지를 표시하도록 인코딩된다.
변경 1 내지 변경 6은 도 5에서 반영되고, 변경 7은 도 6에서 반영된다. 후속하는 설명에서, 특정 블록 크기들 및 특정 유형들의 블록들(즉, 상호간 코딩된 블록들 또는 내적 코딩된 블록들)에 대해 어느 변경들이 이루어지는지를 표시하는 다양한 실시예들이 설명될 것이다.
위의 변경들에 기반한 다양한 실시예들을 설명하기 전에, 인코더(100) 및 디코더(108)가 구현된 변경들에 대해 어떻게 동작하는지의 개관이 설명될 것이다. 이제 도 7을 참조하면, 동작(701)에서, 인코더(100)는 인코딩될 비디오 블록의 특성을 결정한다. 특성은, 블록 크기, 블록 유형(상호간/내적), 채널 유형, 예측 모드, 블록의 치수(폭 또는 높이)뿐만 아니라 내적 예측의 방향 등일 수 있다.
특성이, 다중 변환 선택 구성요소가 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 동작(703)에서, 인코더(100)는, 다중 선택 변환 구성요소(MST)에 의해 사용되는 복수의 변환들로부터, 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 가장 계산적으로 비용이 많이 드는 제1 변환을 선택한다. 예컨대, MST에 의해 사용되는 변환들이 DCT-2, DST-7, 및 DCT-8일 때, DCT-8은 종종 사용하는 데 가장 계산적으로 비용이 많이 든다. 그러한 시나리오들에서, DCT-8 변환이 선택되고 제1 변환으로서 지정될 수 있다.
동작(705)에서, 인코더(100)는, 수평 방향 및 수직 방향 둘 모두에서 제1 변환이 사용되는 조합을 테스트함이 없이 변환들의 조합들을 테스트한다. 예컨대, 동작(703)에서 설명된 시나리오에서의 DCT-8 변환은 수평 방향 및 수직 방향 둘 모두에서 테스트되지 않을 것이다.
동작(707)에서, 다른 테스트 조합들과 비교하여 가장 낮은 레이트 왜곡을 제공하는 조합이 선택된다. 사용할 조합을 선택하는 데 있어 다른 결정 인자들이 또한 사용될 수 있다. 예컨대, 변환들 중 하나는 다른 변환에 비해 바람직하고, 두 변환들 모두는 필적하는 레이트 왜곡들을 갖고, 바람직한 변환이 사용될 수 있다.
동작(709)에서, 인코딩된 블록을 생성하기 위해 선택된 조합을 사용하여 비디오 블록이 인코딩된다. 동작(711)에서, 인코딩된 블록이, 어느 조합이 인코딩에서 사용된지를 결정하기 위해 디코더에 의해 사용되고 인코딩된 블록을 디코딩하는 데 사용될 플래그들과 함께, 디코더, 이를테면 디코더(108)에 송신된다.
특성이 유형을 갖지 않는 것에 대한 응답으로, 비디오 블록은, 수평 및 수직 방향들 둘 모두인 기본 변환을 사용하여 인코딩된다. 일 실시예에서, DCT-2 변환이 기본 변환으로서 사용될 수 있다. 동작(715)에서, 인코딩된 블록이, 어느 조합이 인코딩에서 사용된지를 결정하기 위해 디코더에 의해 사용되고 인코딩된 블록을 디코딩하는 데 사용될 플래그들과 함께, 디코더, 이를테면 디코더(108)에 송신된다.
이제 도 8을 참조하면, 디코더(108)가 수행할 수 있는 동작들이 예시된다. 동작(801)에서, 디코더는 플래그들을 갖는 인코딩된 비디오 블록을 수신한다. 동작(803)에서, 플래그가 설정된지를 결정하기 위해 제1 플래그가 파싱된다. 제1 플래그는 mts_cu_flag일 수 있다. 플래그 설정은, 수평 방향 및 수직 방향 둘 모두에서, 인코딩된 비디오 블록을 디코딩하기 위해 제1 변환이 사용되어야 하는지 여부를 표시할 수 있다. 예컨대, 일 실시예에서, 설정은 1 또는 0의 이진 설정일 수 있다. 다시 말해서, 제1 플래그는 제1 값 또는 제2 값과 동일하다. 1의 설정은, 두 방향들 모두에서 제1 변환이 사용되어야 함을 표시할 수 있다. 다른 실시예들에서, 두 방향들 모두에서 제1 변환이 사용되어야 함을 표시하기 위해 0의 설정이 사용될 수 있다.
동작(805)에서, 제1 플래그가, 두 방향들 모두에서 제1 변환이 사용되는 것과 연관된 값을 갖는 것(예컨대, 제1 플래그가 제1 값과 동일함)에 대한 응답으로, 수평 방향 및 수직 방향 둘 모두에서 제1 변환을 사용하여 비디오 블록이 디코딩된다. 예컨대, 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 DCT-2 변환이 사용될 수 있다.
동작(807)에서, 제1 플래그 설정이, 두 방향들 모두에서 제1 변환이 사용되지 않는 것과 연관된 값을 갖는 것에 대한 응답으로, 제2 플래그가 파싱된다. 제2 플래그는 제2 플래그 설정을 결정하기 위해 파싱된다. 플래그 설정은, 수평 방향 및 수직 방향 둘 모두에서, 인코딩된 비디오 블록을 디코딩하기 위해 제2 변환이 사용되어야 하는지 여부를 표시할 수 있다. 예컨대, 일 실시예에서, 설정은 1 또는 0의 이진 설정일 수 있다. 다시 말해서, 제2 플래그는 제1 값 또는 제2 값과 동일하다. 1의 설정은, 두 방향들 모두에서 제2 변환이 사용되어야 함을 표시할 수 있다. 다른 실시예들에서, 두 방향들 모두에서 제2 변환이 사용되어야 함을 표시하기 위해 0의 설정이 사용될 수 있다.
제2 변환은 2개의 변환 중 하나일 수 있다. 제2 플래그는, 비디오 블록을 디코딩하기 위해 2개의 변환 중 어느 변환이 사용되어야 하는지를 결정하기 위해 파싱될 수 있다. 예컨대, 일 실시예에서, 2개의 변환은 DST-7 변환 및 DCT-8 변환일 수 있다.
동작(809)에서, 제2 플래그가, 두 방향들 모두에서 제2 변환이 사용되는 것과 연관된 값을 갖는 것(예컨대, 제2 플래그가 제1 값과 동일함)에 대한 응답으로, 수평 방향 및 수직 방향 둘 모두에서 제2 변환을 사용하여 비디오 블록이 디코딩된다. 예컨대, 동작(809)에서, 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 DST-7 변환이 사용될 수 있다.
동작(811)에서, 제2 플래그 설정이, 두 방향들 모두에서 제2 변환이 사용되지 않는 것과 연관된 값을 갖는 것에 대한 응답으로, 제3 플래그가 파싱된다. 제3 플래그는 제3 플래그 설정을 결정하기 위해 파싱된다. 제3 플래그 설정은, 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 또는 수직 방향에서 제2 변환이 사용되어야 하는지 그리고 수평 방향 및 수직 방향 중 다른 방향에서 디코딩하는 데 제3 변환이 사용되어야 하는지 여부를 표시할 수 있다. 이는, 제1 바람직한 변환 조합일 수 있다. 예컨대, 일 실시예에서, 설정은 1 또는 0의 이진 설정일 수 있다. 1의 설정은, 수평 방향에서 제2 변환이 사용되어야 하고 수직 방향에서 제3 변환이 사용되어야 함을 표시할 수 있다. 다른 실시예들에서, 수평 방향에서 제2 변환이 사용되어야 하고 수직 방향에서 제3 변환이 사용되어야 함을 표시하기 위해 0의 설정이 사용될 수 있다. 이는, 제2 바람직한 변환 조합일 수 있다. 제3 변환은, 실시예에서, 제1 변환일 수 있다.
동작(813)에서, 비디오 블록은, 제3 플래그의 설정에 기반하여 수평 방향 또는 수직 방향에서 제2 변환을 사용하여 디코딩된다. 예컨대, 동작(813)에서, 비디오 블록을 디코딩하기 위해 수평 방향에서 DST-7 변환이 사용될 수 있고, 수직 방향에서 DCT-2 또는 DCT-8 변환이 사용된다. 대안적으로, 동작(813)에서, 비디오 블록을 디코딩하기 위해 수직 방향에서 DST-7 변환이 사용될 수 있고, 수평 방향에서 DCT-2 또는 DCT-8 변환이 사용된다.
동작(815)에서, 디코더는, 디코딩된 비디오 블록의 재생을 위해, 디코딩된 비디오 블록을 미디어 플레이어에 출력할 수 있다.
이제 도 9를 참조하면, 대안적인 실시예에서는, 동작(901)에서, 디코더(108)는, 인코딩된 비디오 블록의 블록 크기에 기반하여 제1 기준이 충족되는지 여부를 결정한다. 기준은, 블록 크기, 블록 유형(상호간/내적), 채널 유형, 예측 모드, 블록의 치수(폭 또는 높이) 등일 수 있다.
동작(903)에서, 충족된 제1 기준에 대한 응답으로, 디코더는, 수직 방향 및 수평 방향 둘 모두에서 제1 변환; 수직 방향 및 수평 방향 둘 모두에서 제3 변환; 수직 방향에서 제1 변환 그리고 수평 방향에서 제3 변환; 및 수직 방향에서 제3 변환 그리고 수평 방향에서 제1 변환 중 하나로부터 변환 조합을 선택한다.
동작(905)에서, 충족된 제1 기준에 대한 응답으로, 디코더는, 수직 방향 및 수평 방향 둘 모두에서 제1 변환; 수직 방향 및 수평 방향 둘 모두에서 제3 변환; 수직 방향에서 제2 변환 그리고 수평 방향에서 제3 변환; 및 수직 방향에서 제3 변환 그리고 수평 방향에서 제2 변환 중 하나로부터 변환 조합을 선택한다.
동작(907)에서, 디코더는 선택된 조합을 사용하여 블록을 디코딩한다. 동작(909)에서, 디코더는 인코딩된 블록을 미디어 플레이어를 향해 송신할 수 있다.
아래에 설명된 실시예들에서, 제1 변환은 DCT-2 변환이고, 제2 변환은 DCT-8 변환이고, 제3 변환은 DST-7 변환이다. 후속하는 실시예들의 설명에서, 제1 기준은 블록 크기이다.
제1 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1이 행해지고, 적어도 하나의 치수가 32 샘플의 길이를 갖는 모든 블록들에 대해 변경 2가 행해진다. 이러한 제1 실시예에서, 16 x 16 또는 그보다 작은 크기의 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제1 실시예에서, 32 x N 또는 N x 32 크기의 블록들에 대해, 다음의 조합들이 평가되며, 여기서, N은 4, 8, 16, 또는 32일 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들 및 블록 크기에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 블록이 16 x 16 또는 그보다 작은 크기를 갖는 경우, 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제1 실시예에서, 블록이 32 x N 또는 N x 32 크기를 갖는 경우, 다음의 조합들이 표시될 수 있으며, 여기서, N은 4, 8, 16, 또는 32일 수 있다(즉, 도 9의 제1 기준은, 인코딩된 블록이 32 x N 또는 N x 32 형태의 크기를 가질 때 충족되며, 여기서, N은 4, 8, 16, 또는 32의 값들을 가정할 수 있음):
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
표 1은, 제1 실시예에서 DCT-2 및 DCT-8이 사용되는 경우를 도시한다.
Figure pct00003
제2 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1이 행해지고, 16 x 32, 32 x 16, 또는 32 x 32 크기의 모든 블록들에 대해 변경 2가 행해진다. 이러한 실시예에서, 16 x 16 또는 그보다 작은 크기, 4 x 32, 8 x 32, 32 x 4, 및 32 x 8 크기의 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제2 실시예에서, 32 x 16, 16 x 32, 또는 32 x 32 크기의 블록들에 대해, 다음의 조합들이 평가된다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들 및 블록 크기에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 블록이 16 x 16 또는 그보다 작은 크기, 4 x 32, 8 x 32, 32 x 4, 또는 32 x 8 크기를 갖는 경우, 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제2 실시예에서, 블록이 32 x 16, 16 x 32, 또는 32 x 32 크기를 갖는 경우(즉, 도 9의 제1 기준은, 인코딩된 블록이 32 x 32 또는 32 x 16 또는 16 x 32 형태의 크기를 가질 때 충족됨), 다음의 조합들이 표시될 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
표 2는, 제2 실시예에서 DCT-2 및 DCT-8이 사용되는 경우를 도시한다.
Figure pct00004
제3 실시예에서, 모든 블록 크기들에 대해 변경 1, 변경 3, 및 변경 4가 행해진다. 도 5의 우측으로의 단계가 '1'로서 인코딩되고 좌측으로의 단계가 '0'으로서 인코딩되는 경우, 조합들은 다음과 같이 인코딩될 수 있다:
Figure pct00005
디코더는 플래그들을 파싱하고 디코딩된 빈들에 기반하여 변환들의 조합을 결정할 것이다. 도 8과 관련하여, mts_cu_flag는 제1 플래일 수 있고, mts_dst_flag는 제2 플래그일 수 있고, mts_tu_flag는 제3 플래그일 수 있다.
Figure pct00006
일련의 실시예들에서, 모든 블록 크기들에 대해 변경 1, 변경 3, 변경 4, 및 변경 5가 행해진다. 예로서, 변경 5에서 설명된 바와 같은 더 바람직한 조합은 mts_tu_flag를 '1'로 설정함으로써 표기될 수 있고, 변경 5에서 설명된 바와 같은 덜 바람직한 조합은 mts_tu_flag를 '0'으로 설정함으로써 표기될 수 있다. 도 10은 이러한 실시예를 예시한다. 도 10을 참조하면, 사용할 변환 조합을 결정하기 위해 표 4가 디코더에 의해 사용될 수 있다. 동작(1001)에, 디코더는, 제1 플래그가 제1 값과 동일한지 또는 제2 값과 동일한지를 결정하기 위해 제1 플래그를 파싱한다. 동작(1003)에서, 제1 플래그가 제1 값과 동일한 것에 대한 응답으로, 인코딩된 블록을 디코딩하기 위해 수직 방향 및 수평 방향 둘 모두에서 제1 변환이 선택된다. 동작(1005)에서, 제1 플래그가 제2 값과 동일한 것에 대한 응답으로, 제2 플래그가 제1 값과 동일한지 또는 제2 값과 동일한지를 결정하기 위해 제2 플래그가 파싱된다. 동작(1007)에서, 제2 플래그가 제1 값과 동일한 것에 대한 응답으로, 인코딩된 블록을 디코딩하기 위해 수직 방향 및 수평 방향 둘 모두에서 제3 변환이 선택된다. 동작(1009)에서, 제2 플래그가 제2 값과 동일한 것에 대한 응답으로, 제3 플래그가 제1 값과 동일한지 또는 제2 값과 동일한지를 결정하기 위해 제3 플래그가 파싱된다. 동작(1011)에서, 제3 플래그가 제1 값과 동일한 것에 대한 응답으로, 인코딩된 블록을 디코딩하기 위해 더 바람직한 변환 조합이 선택된다. 동작(1013)에서, 제3 플래그가 제2 값과 동일한 것에 대한 응답으로, 인코딩된 블록을 디코딩하기 위해 덜 바람직한 변환 조합이 선택된다.
일련의 실시예들 중 하나인 제5 실시예에서, 블록이 내적 예측을 사용하는 경우, 내적 방향이 수직보다 수평에 더 가까운 경우에는 수평으로 DST-7을 그리고 수직으로 DCT-X를 사용하는 조합이 더 바람직한 것으로 간주된다. 동시에, 내적 방향이 수평보다 수직에 더 가까운 경우, 수평으로 DCT-X를 그리고 수직으로 DST-7을 사용하는 조합이 더 바람직한 것으로 간주된다. 그에 따라, 디코더는 블록의 내적 방향에 기반하여 조합을 결정할 것이다.
내적 방향이, 예컨대, 순전히 수평이고, 디코더가 mts_tu_flag를 '1'로 판독하는 경우, 디코더는 수평으로 DST-7과 수직으로 DCT-X의 변환 조합을 사용할 것이다. 플래그가 '0'으로 판독되는 경우, 디코더는 수평으로 DCT-X와 수직으로 DST-7의 변환 조합을 사용할 것이다.
내적 방향이, 예컨대, 순전히 수직이고, 디코더가 mts_tu_flag를 '1'로 판독하는 경우, 디코더는 수평으로 DCT-X와 수직으로 DST-7의 변환 조합을 사용할 것이다. 플래그가 '0'으로 판독되는 경우, 디코더는 수평으로 DST-7과 수직으로 DCT-X의 변환 조합을 사용할 것이다.
일련의 실시예들 중 하나인 제6 실시예에서, 블록이 상호간 예측을 사용하는 경우, 블록이 높이보다 큰 폭을 갖는 경우에는 수평으로 DST-7을 그리고 수직으로 DCT-X를 사용하는 조합이 더 가능성 있는 것으로 간주된다. 블록이 폭보다 큰 높이를 갖는 경우, 수평으로 DCT-X를 그리고 수직으로 DST-7을 사용하는 조합이 더 가능성 있는 것으로 간주된다.
블록이, 예컨대, 16 x 4 샘플의 크기를 갖고, 디코더가 mts_tu_flag를 '1'로 판독하는 경우, 디코더는 수평으로 DST-7과 수직으로 DCT-X의 변환 조합을 사용할 것이다. 플래그가 '0'으로 판독되는 경우, 디코더는 수평으로 DCT-X와 수직으로 DST-7의 변환 조합을 사용할 것이다.
블록이, 예컨대, 4 x 16 샘플의 크기를 갖고, 디코더가 mts_tu_flag를 '1'로 판독하는 경우, 디코더는 수평으로 DCT-X와 수직으로 DST-7의 변환 조합을 사용할 것이다. 플래그가 '0'으로 판독되는 경우, 디코더는 수평으로 DST-7과 수직으로 DCT-X의 변환 조합을 사용할 것이다.
위의 실시예들에서, 45 도 예측 방향은 수직에 대해 수평과 동일하게 가깝다. 따라서, 디코더 및 인코더는, 동일한 방식으로 45 도 방향들을 처리하기 위해 타이-브레이킹(tie-breaking) 규칙에 동의해야 한다. 위의 일련의 실시예들에서, 이는, 45 도 방향들을 수평보다는 더 수직인 것으로서 처리함으로써 처리된다. 상이한 실시예에서, 45 도 방향들을 수평인 것으로서 처리하는 것과 같은 상이한 타이-브레이킹 규칙을 사용하는 것이 유리할 수 있다. 다른 가능성은, 45 도 방향들과 다른 각도에서 변경하는 것이다. 예로서, 45 도 방향들을 수직인 것으로서 처리할 뿐만 아니라, 예컨대, 43 도 방향들이 수학적으로 수평 방향에 더 가깝긴 하지만 그들을 수직인 것으로서 처리하는 것이 유리할 수 있다. 따라서, 일반적으로, 타이-브레이크 규칙에서 대각선 방향들만이 아니라 임의의 각도를 사용하는 것이 가능하다.
타이-브레이킹 규칙이 정의되어야 하는 다른 경우는, 비-방향성 내적 예측 모드들(평면 또는 DC)이다. 위의 일련의 실시예들에서, 이러한 예측들은 수직보다는 수평인 것으로서 처리된다. 약간 상이한 실시예에서, 이들을 수평보다는 더 수직인 것으로서 처리하는 것이 유리할 수 있다. 예컨대, 구현에서, 내적 모드들(0 - 34)은 수평에 더 가까운 것으로서 처리되고, 내적 모드들(35 - 66)은 수직에 더 가까운 것으로서 처리된다.
제7 실시예에서, 내적 코딩된 블록들에 변경 6이 사용된다. mts_cu_flag를 인코딩 및 디코딩하는 데 어느 컨텍스트를 사용할 것인지의 선택은, 블록의 더 긴 측 및 내적 방향에 기반하여 이루어진다. 내적 방향들은, 수평으로 및 수직으로 DCT-2를 사용하는 것이 더 바람직한 하나의 그룹, 및 수평으로 및 수직으로 DCT-2를 사용하는 것이 덜 바람직한 하나의 그룹의 2개의 그룹으로 분할된다. 이러한 그룹들은 상이한 블록 크기들에 대해 동일할 수 있다. 수평 및 수직 둘 다에서 DCT-2를 사용하는 것은, 예컨대, 내적 모드가 수평 또는 수직에 가까운 경우 더 바람직할 수 있다. 동일한 예에서, 그 조합은, 내적 방향이 대각선에 가까운 경우 덜 바람직할 것이다.
도 11을 참조하면, 동작(1101)에서, 디코더는, 블록이 32 x N 또는 N x 32 크기를 갖는지를 결정하며, 여기서, N은 4, 8, 16, 또는 32일 수 있다. 동작(1103)에서, 블록이 32 x N 또는 N x 32 크기 중 하나이고 내적 방향이 수평에 가깝거나 수직에 가까운 것(즉, 내적 방향이 동작(1103)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 수평인 경우, 동작(1105)에서, 예컨대, 제1 식별자(id) 0을 갖는 하나의 컨텍스트가 선택될 것이다.
블록이 32 x N 또는 N x 32 크기(N은 4, 8, 16, 또는 32일 수 있음)를 갖고 내적 방향이 대각선에 가까운 것(즉, 내적 방향이 동작(1103)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과하지 못함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 대각선인 경우, 동작(1107)에서, 예컨대, 제2 id 1을 갖는 상이한 컨텍스트가 선택될 것이다.
동작(1108)에서, 디코더는, 블록이 16 x N 또는 N x 16 크기를 갖는지를 결정하며, 여기서, N은 4, 8, 또는 16일 수 있다. 동작(1111)에서, 블록이 16 x N 또는 N x 16 크기 중 하나이고 내적 방향이 수평에 가깝거나 수직에 가까운 것(즉, 내적 방향이 동작(1111)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 수직인 경우, 동작(1113)에서, 예컨대, 제3 id 2를 갖는 상이한 컨텍스트가 선택될 것이다.
블록이 16 x N 또는 N x 16 크기(N은 4, 8, 또는 16일 수 있음)를 갖고 내적 방향이 대각선에 가까운 것(즉, 내적 방향은 동작(1111)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과하지 못함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 대각선인 경우, 동작(1115)에서, 예컨대, 제4 id 3을 갖는 상이한 컨텍스트가 선택될 것이다.
동작(1117)에서, 디코더는, 블록이 8 x 8, 8 x 4, 4 x 8, 또는 4 x 4 크기를 갖는지를 결정한다. 동작(1119)에서, 블록이 8 x 8, 8 x 4, 4 x 8, 또는 4 x 4 크기 중 하나이고 내적 방향이 수평에 가깝거나 수직에 가까운 것(즉, 내적 방향이 동작(1119)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 수평인 경우, 동작(1121)에서, 예컨대, 제5 id 4를 갖는 상이한 컨텍스트가 선택될 것이다.
블록이 8 x 8, 8 x 4, 4 x 8, 또는 4 x 4 크기를 갖고 내적 방향이 대각선에 가까운 것(즉, 내적 방향이 동작(1119)에서 결정되는 바와 같은 수평 근접도 테스트 또는 수직 근접도 테스트 중 하나를 통과하지 못함)에 대한 응답으로, 예를 들면, 내적 방향이 순전히 대각선인 경우, 동작(1123)에서, 예컨대, 제6 id 5를 갖는 상이한 컨텍스트가 선택될 것이다.
이는 다음의 표에서 요약될 수 있다:
Figure pct00007
이전 실시예에서 설명된 바와 같이, 예측 방향이 수평 및 수직에 동일하게 가까운 경우들에 대해, 일련의 타이-브레이킹 규칙들이 인코더 및 디코더에 대해 정의되어야 한다. 타이-브레이킹 규칙들은 또한, 평면 또는 DC의 비-방향성 내적 예측 모드들에 대해 정의되어야 한다. 예컨대, 일 구현에서, 내적 모드들(10 - 22)은 수평에 가까운 것으로 보일 수 있고 수평인 것으로서 처리될 수 있고, 내적 모드들(46 - 57)은 수직에 가까운 것으로 보일 수 있고 수직인 것으로서 처리될 수 있으며, 나머지 내적 모드들(0 - 9, 23 - 45, 및 58 - 66)은 대각선에 가까운 것으로 보일 수 있고 대각선인 것으로서 처리될 수 있다.
제8 실시예에서, 상호간 코딩된 블록들에 변경 6이 사용된다. mts_cu_flag를 인코딩 및 디코딩하는 데 어느 컨텍스트를 사용할 것인지의 선택은, 블록 크기 및 형상에 기반하여 이루어진다. 예컨대, 6개의 컨텍스트가 다음과 같이 선택될 수 있다:
a) 제8 실시예에서, 블록이 4 x 32 또는 32 x 4 크기를 갖는 경우, 예컨대 식별자(id) 0을 갖는 하나의 컨텍스트가 사용된다.
b) 제8 실시예에서, 블록이 4 x 16, 8 x 32, 32 x 8, 또는 16 x 4 크기를 갖는 경우, 예컨대 id 1을 갖는 상이한 컨텍스트가 사용된다.
c) 제8 실시예에서, 블록이 4 x 8 또는 8 x 4 크기를 갖는 경우, 예컨대 id 2를 갖는 상이한 컨텍스트가 사용된다.
d) 제8 실시예에서, 블록이 8 x 16, 16 x 32, 32 x 16, 또는 16 x 8 크기를 갖는 경우, 예컨대 id 3을 갖는 상이한 컨텍스트가 사용된다.
e) 제8 실시예에서, 블록이 16 x 16 또는 32 x 32 크기를 갖는 경우, 예컨대 id 4를 갖는 상이한 컨텍스트가 사용된다.
f) 제8 실시예에서, 블록이 8 x 8 또는 4 x 4 크기를 갖는 경우, 예컨대 id 5를 갖는 상이한 컨텍스트가 사용된다.
제8 실시예는 표 6에서 요약될 수 있다:
Figure pct00008
제9 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1이 행해지고, 적어도 하나의 치수가 16 또는 32 샘플의 길이를 갖는 모든 블록들에 대해 변경 2가 행해진다. 이러한 실시예에서, 8 x 8 또는 그보다 작은 크기의 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제9 실시예에서, 16 x N, N x 16, 32 x N, 또는 N x 32 크기의 블록들에 대해, 다음의 조합들이 평가되며, 여기서, N은 4, 8, 16, 또는 32일 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들 및 블록 크기에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 블록이 8 x 8 또는 그보다 작은 크기를 갖는 경우, 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제9 실시예에서, 블록이 16 x N, N x 16, 32 x N, 또는 N x 32 크기를 갖는 경우, 다음의 조합들이 표시될 수 있으며, 여기서, N은 4, 8, 16, 또는 32일 수 있다(즉, 도 9의 제1 기준은, 인코딩된 블록이 16 x N, N x 16, 32 x N, 또는 N x 32 형태의 크기를 가질 때 충족되며, 여기서, N은 4, 8, 16, 또는 32의 값들을 가정할 수 있음):
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
표 7은, 제9 실시예에서 DCT-2 및 DCT-8이 사용되는 경우를 도시한다.
Figure pct00009
제10 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1이 행해지고, 적어도 하나의 치수가 32 샘플 또는 4 샘플의 길이를 갖는 모든 블록들에 대해 변경 2가 행해진다. 이러한 실시예에서, 8 x 8, 8 x 16, 16 x 8, 또는 16 x 16 크기의 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제10 실시예에서, 4 x N, N x 4, 32 x N, 또는 N x 32 크기의 블록들에 대해, 다음의 조합들이 평가되며, 여기서, N은 4, 8, 16, 또는 32일 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들 및 블록 크기에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 블록이 8 x 8, 8 x 16, 16 x 8, 또는 16 x 16 크기를 갖는 경우, 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제10 실시예에서, 블록이 4 x N, N x 4, 32 x N 또는 N x 32 크기를 갖는 경우, 다음의 조합들이 표시될 수 있으며, 여기서, N은 4, 8, 16, 또는 32일 수 있다(즉, 도 9의 제1 기준은, 인코딩된 블록이 4 x N, N x 4, 32 x N 또는 N x 32 형태의 크기를 가질 때 충족되며, 여기서, N은 4, 8, 16, 또는 32의 값들을 가정할 수 있음):
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
표 8은, 제10 실시예에서 DCT-2 및 DCT-8이 사용되는 경우를 도시한다.
Figure pct00010
제11 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1이 행해지고, 적어도 하나의 치수가 32 샘플의 길이를 갖거나 블록이 4 x 4 샘플의 크기를 갖는 모든 블록들에 대해 변경 2가 행해진다. 이러한 실시예에서, 16 x 16 또는 그보다 작지만 4 x 4보다 큰 크기의 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제11 실시예에서, 4 x 4, 32 x N, 또는 N x 32 크기의 블록들에 대해, 다음의 조합들이 평가되며, 여기서, N은 4, 8, 16, 또는 32일 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들 및 블록 크기에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 블록이 16 x 16 또는 그보다 작지만 4 x 4보다 큰 크기를 갖는 경우, 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-8
- 수평으로 DCT-8과 수직으로 DST-7
제11 실시예에서, 블록이 4 x 4, 32 x N, 또는 N x 32 크기를 갖는 경우, 다음의 조합들이 표시될 수 있으며, 여기서, N은 4, 8, 16, 또는 32일 수 있다(즉, 도 9의 제1 기준은, 인코딩된 블록이 4 x 4, 32 x N 또는 N x 32 형태의 크기를 가질 때 충족되며, 여기서, N은 4, 8, 16, 또는 32의 값들을 가정할 수 있음):
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
표 9는, 제11 실시예에서 DCT-2 및 DCT-8이 사용되는 경우를 도시한다.
Figure pct00011
제12 실시예에서, MTS 툴이 허용되는 모든 블록 크기들에 대해 변경 1 및 변경 2가 행해진다. 이러한 실시예에서, 모든 블록들은 다음의 조합들을 평가한다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
디코더는, 파싱된 플래그들에 기반하여 변환들의 올바른 조합을 결정할 수 있다. 디코딩된 빈들은 다음의 조합들을 표시할 수 있다:
- 수평으로 DCT-2와 수직으로 DCT-2
- 수평으로 DST-7과 수직으로 DST-7
- 수평으로 DST-7과 수직으로 DCT-2
- 수평으로 DCT-2와 수직으로 DST-7
추가적인 일련의 실시예들에서, 변경 7이 포함된다. 블록이 수평 및 수직 방향 둘 모두에서 동일한 변환을 사용하는지 여부를 표시하기 위해, mts_same_flag로 지칭되는 새로운 플래그가 시그널링된다. 일 실시예에서, 플래그가 값 '1'을 갖는 경우, 블록은 두 방향들 모두에서 동일한 변환들을 사용하는 반면, 플래그가 값 '0'을 갖는 경우, 2개의 상이한 변환이 사용될 것이다.
실시예에서, mts_same_flag는 블록이 수평 및 수직 방향 둘 모두에서 동일한 변환을 사용한다는 것을 표시한다. 두 방향들 모두에서 DCT-8을 사용할지 또는 DST-7을 사용할지를 표시하기 위해 부가적인 플래그 mts_tu_idx가 시그널링된다.
다른 실시예에서, mts_same_flag는 블록이 수평 및 수직 방향에서 상이한 변환들을 사용한다는 것을 표시한다. 수평 방향에서 DCT-8을 그리고 수직 방향에서 DST-7을 사용할지 또는 수평 방향에서 DST-7을 그리고 수직 방향에서 DCT-8을 사용할지를 표시하기 위해 부가적인 플래그 mts_tu_idx가 시그널링된다.
디코더에서의 처리는 유사하게 작동한다. 먼저, mts_same_flag가 디코더에 의해 파싱되고, 이어서, 사용한 변환들의 올바른 조합을 결정하기 위해 mts_tu_idx를 파싱하는 것이 후속된다.
다른 실시예에서, mts_same_flag가 디코더에 의해 파싱되어, 수평 및 수직 방향 둘 모두에서 동일한 변환이 사용되어야 함이 표시된다. 그 후, mts_tu_idx가 디코더에 의해 파싱되어, 두 방향들 모두에서 DST-7을 사용할지 또는 DCT-8을 사용할지가 표시된다.
다른 실시예에서, mts_same_flag가 디코더에 의해 파싱되어, 현재 블록에 대해 2개의 상이한 변환들이 사용되어야 함이 표시된다. 수평에서 DCT-8을 그리고 수직 방향에서 DST-7을 사용할지, 또는 수평에서 DST-7을 그리고 수직 방향에서 DCT-8을 사용할지를 결정하기 위해, mts_tu_idx가 디코더에 의해 파싱된다.
그에 따라, 변환 조합 중 하나를 디스에이블링하는 것은, 본원에 설명된 바와 같이 2개의 기존 플래그를 2개의 새로운 플래그로 대체함으로써 CABAC 코딩에 대한 변경을 가능하게 한다. 다른 주요 양상은 특정 경우들에서 하나의 변환을 상이한 변환으로 대체하는 것이다.
참조들
[1] F. 보센(F. Bossen), J. 보이스(J. Boyce), X. 리(X. Li), V. 세르긴(V. Seregin), K. 슈링(
Figure pct00012
)(편집자들): "SDR 비디오를 위한 JVET 공통 테스트 조건들 및 소프트웨어 기준 구성들(JVET common test conditions and software reference configurations for SDR video)", JVET-L1010, 마카오, 2018년 10월
[2] G. J. 설리반(G. J. Sullivan), J.-R. 옴(J.-R. Ohm): "2018년 7월 10 - 18일, 류블랴나에서의 제11회 JVET 회의의 회의 보고(Meeting Report of the 11th JVET Meeting)", 섹션 6.6, JVET-K1000, 류블랴나, 2018년 7월

Claims (26)

  1. 디코더에 의해 수행되는 방법으로서,
    컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하는 단계;
    상기 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그가 설정된지를 결정하기 위해 상기 적어도 하나의 플래그를 파싱하는 단계;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제1 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하는 단계;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 상기 제2 플래그를 파싱하는 단계;
    상기 제2 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제2 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제2 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하는 단계;
    상기 제2 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제2 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 상기 제2 변환이 사용되어야 하는지 그리고 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 상기 적어도 하나의 플래그의 제3 플래그를 파싱하는 단계; 및
    상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 상기 제2 변환 및 상기 제3 변환을 사용하여 디코딩하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제2 변환은 2개의 변환 중 하나를 포함하며, 상기 방법은, 상기 비디오 블록을 디코딩하기 위해 상기 2개의 변환 중 어느 변환이 사용되어야 하는지를 결정하기 위해 상기 제2 플래그를 파싱하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 2개의 변환은, 이산 사인 변환인 DST-7 및 이산 코사인 변환인 DCT-8을 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 변환은 DCT-2 변환을 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 변환은 DST-7 변환을 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제3 변환은 DCT-2 변환 또는 DCT-8 변환 중 하나를 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 수평 방향에서 디코딩하는 것은, 상기 수평 방향으로 상기 복수의 변환들로부터의 변환을 적용하는 것을 포함하고, 상기 수직 방향에서 인코딩하는 것은, 상기 수직 방향으로 상기 복수의 변환들로부터의 변환을 적용하는 것을 포함하는, 방법.
  8. 디코더로서,
    적어도 하나의 프로세서(301);
    상기 프로세서에 결합되는 메모리(303)
    를 포함하며, 상기 메모리는, 상기 프로세서에 의해 실행가능한 명령어들을 포함하고, 상기 명령어들은, 상기 프로세서로 하여금,
    컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하는 것;
    상기 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그가 설정된지를 결정하기 위해 상기 적어도 하나의 플래그를 파싱하는 것;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제1 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하는 것;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 상기 제2 플래그를 파싱하는 것;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제2 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하는 것;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 상기 제2 변환이 사용되어야 하는지 그리고 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 상기 적어도 하나의 플래그의 제3 플래그를 파싱하는 것; 및
    상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 상기 제2 변환 및 상기 제3 변환을 사용하여 디코딩하는 것
    을 포함하는 동작들을 수행하게 하는, 디코더.
  9. 제8항에 있어서,
    상기 제2 변환은 2개의 변환 중 하나를 포함하며, 상기 메모리는, 상기 프로세서 하여금, 상기 비디오 블록을 디코딩하기 위해 상기 2개의 변환 중 어느 변환이 사용되어야 하는지를 결정하기 위해 상기 제2 플래그를 파싱하는 것을 수행하게 하는 명령어들을 더 포함하는, 디코더.
  10. 제9항에 있어서,
    상기 2개의 변환은, 이산 사인 변환인 DST-7 및 이산 코사인 변환인 DCT-8 변환을 포함하는, 디코더.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 변환은 DCT-2 변환을 포함하는, 디코더.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 제2 변환은 DST-7 변환을 포함하는, 디코더.
  13. 제8항 내지 제12항 중 어느 한 항에 있어서,
    상기 제3 변환은 DCT-2 변환 또는 DCT-8 변환 중 하나를 포함하는, 디코더.
  14. 디코더를 위한 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 컴퓨터 상에서 실행될 때, 상기 컴퓨터로 하여금,
    컨텍스트 기반 적응형 산술 코딩을 사용하여 인코딩된 적어도 하나의 플래그를 갖는 인코딩된 비디오 블록을 수신하게 하고;
    상기 인코딩된 비디오 블록을 디코딩하기 위해 수평 방향 및 수직 방향 둘 모두에서 복수의 변환들 중 제1 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그가 설정된지를 결정하기 위해 상기 적어도 하나의 플래그를 파싱하게 하고;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제1 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하게 하고;
    상기 적어도 하나의 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제1 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 복수의 변환들 중 제2 변환이 사용되어야 함을 시그널링하도록 상기 적어도 하나의 플래그의 제2 플래그가 설정된지를 결정하기 위해 상기 제2 플래그를 파싱하게 하고;
    상기 제2 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제2 변환이 사용되어야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을, 상기 제2 변환을 사용하여 상기 수평 방향 및 상기 수직 방향에서 디코딩하게 하고;
    상기 제2 플래그가 상기 수평 방향 및 상기 수직 방향 둘 모두에서 상기 제2 변환이 사용되지 않아야 함을 시그널링하도록 설정된 것에 대한 응답으로, 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 상기 제2 변환이 사용되어야 하는지 그리고 상기 인코딩된 비디오 블록을 디코딩하기 위해 상기 수평 방향 또는 상기 수직 방향 중 어느 방향에서 제3 변환이 사용되어야 하는지를 결정하기 위해 상기 적어도 하나의 플래그의 제3 플래그를 파싱하게 하고;
    상기 디코딩된 비디오 블록을 생성하기 위해, 상기 인코딩된 비디오 블록을 상기 제2 변환 및 상기 제3 변환을 사용하여 디코딩하게 하는
    코드 수단을 포함하는, 컴퓨터 프로그램.
  15. 컴퓨터 프로그램 제품으로서,
    컴퓨터 판독가능 수단(303) 및 상기 컴퓨터 판독가능 수단 상에 저장되는 제14항에 따른 컴퓨터 프로그램을 포함하는, 컴퓨터 프로그램 제품.
  16. 인코더에 의해 수행되는 방법으로서,
    인코딩을 위해 비디오 블록을 수신하는 단계;
    상기 비디오 블록의 특성을 결정하는 단계;
    상기 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 상기 다중 변환 선택의 일부이고 상기 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하는 단계;
    수평 방향 및 수직 방향 둘 모두에서 상기 제1 변환이 사용되는 조합을 테스트함이 없이 상기 수평 방향 및 상기 수직 방향에서 상기 복수의 변환들의 조합들을 테스트하는 단계;
    상기 조합들로부터, 가장 낮은 레이트 왜곡(rate distortion)을 제공하는 조합을 선택하는 단계;
    인코딩된 비디오 블록을 생성하기 위해, 상기 비디오 블록을 선택된 조합을 사용하여 인코딩하는 단계;
    상기 특성이, 상기 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 상기 수평 방향 및 상기 수직 방향에서 기본 변환(default transform)을 사용하여 상기 비디오 블록을 인코딩하는 단계
    를 포함하는, 방법.
  17. 제16항에 있어서,
    상기 제1 변환을 선택하는 단계는, 상기 복수의 변환들 중 다른 변환과 유사하고 상기 복수의 변환들 중 다른 변환보다 더 계산적으로 복잡한 변환을 선택하는 단계를 포함하는, 방법.
  18. 제16항 또는 제17항에 있어서,
    테스트될 상기 복수의 변환들을 결정하는 단계를 더 포함하는, 방법.
  19. 제18항에 있어서,
    상기 복수의 변환들은, 이산 코사인 변환인 DCT-2 변환, DCT-8 변환, 및 이산 사인 변환인 DST-7 변환을 포함하는, 방법.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 비디오 블록의 특성은 상기 비디오 블록의 치수를 포함하는, 방법.
  21. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 비디오 블록의 특성은 블록 크기 및/또는 블록 형상 중 하나를 포함하는, 방법.
  22. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 특성은 32 x N 또는 N x 32 형태를 갖는 상기 비디오 블록의 블록 크기를 포함하며, N은 4, 8, 16, 또는 32의 값들을 가정할 수 있고,
    상기 수평 방향 및 수직 방향 둘 모두에서 상기 제1 변환이 사용되는 조합을 테스트함이 없이 상기 수평 방향 및 상기 수직 방향에서 상기 복수의 변환들의 조합들을 테스트하는 단계는,
    블록이 16 x 16 또는 그보다 작은 크기를 갖는 것에 대한 응답으로, 수평으로 DCT-2와 수직으로 DCT-2, 수평으로 DST-7과 수직으로 DST-7, 수평으로 DST-7과 수직으로 DCT-8, 및 수평으로 DCT-8과 수직으로 DST-7의 조합들을 평가하는 단계; 및
    블록이 32 x N 또는 N x 32 크기를 갖는 것에 대한 응답으로 ― N은 4, 8, 16, 또는 32일 수 있음 ―, 수평으로 DCT-2와 수직으로 DCT-2, 수평으로 DST-7과 수직으로 DST-7, 수평으로 DST-7과 수직으로 DCT-2, 및 수평으로 DCT-2와 수직으로 DST-7의 조합들을 평가하는 단계
    를 포함하는, 방법.
  23. 비디오의 블록을 상기 블록의 블록 크기에 기반하여 인코딩하기 위한 인코더로서,
    상기 블록의 수평 방향 및 수직 방향 각각은 변환을 사용하여 인코딩되고, 상기 변환은 제1 변환, 제2 변환, 또는 제3 변환 중 하나일 수 있으며,
    상기 인코더는,
    적어도 하나의 프로세서(201);
    상기 프로세서에 결합되는 메모리(203)
    를 포함하며, 상기 메모리는, 상기 프로세서에 의해 실행가능한 명령어들을 포함하고, 상기 명령어들은, 상기 프로세서로 하여금,
    상기 비디오 블록의 특성을 결정하는 것;
    상기 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 상기 다중 변환 선택의 일부이고 상기 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하는 것;
    수평 방향 및 수직 방향 둘 모두에서 상기 제1 변환이 사용되는 조합을 테스트함이 없이 상기 수평 방향 및 상기 수직 방향에서 상기 복수의 변환들의 조합들을 테스트하는 것;
    상기 조합들로부터, 가장 낮은 레이트 왜곡을 제공하는 조합을 선택하는 것;
    인코딩된 비디오 블록을 생성하기 위해, 상기 비디오 블록을 선택된 조합을 사용하여 인코딩하는 것; 및
    상기 특성이, 상기 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 상기 수평 방향 및 상기 수직 방향에서 기본 변환을 사용하여 상기 비디오 블록을 인코딩하는 것
    을 포함하는 동작들을 수행하게 하는, 인코더.
  24. 제23항에 있어서,
    상기 복수의 변환들은, 이산 코사인 변환인 DCT-2 변환, DCT-8 변환, 및 이산 사인 변환인 DST-7 변환을 포함하는, 인코더.
  25. 인코더를 위한 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은 컴퓨터 상에서 실행될 때, 상기 컴퓨터로 하여금,
    비디오 블록의 특성을 결정하게 하고;
    상기 특성이, 다중 변환 선택이 사용됨을 표시하는 유형을 갖는 것에 대한 응답으로, 복수의 변환들에서, 상기 다중 변환 선택의 일부이고 상기 비디오 블록을 인코딩하는 데 사용될 가능성이 최소이거나 사용하기 위해 가장 계산적으로 비용이 많이 드는 것 중 하나인 제1 변환을 선택하게 하고;
    수평 방향 및 수직 방향 둘 모두에서 상기 제1 변환이 사용되는 조합을 테스트함이 없이 상기 수평 방향 및 상기 수직 방향에서 상기 복수의 변환들의 조합들을 테스트하게 하고;
    상기 조합들로부터, 가장 낮은 레이트 왜곡을 제공하는 조합을 선택하게 하고;
    인코딩된 비디오 블록을 생성하기 위해, 상기 비디오 블록을 선택된 조합을 사용하여 인코딩하게 하고;
    상기 선택된 조합을 표시하기 위한 플래그들을 갖는 상기 인코딩된 비디오 블록을 네트워크를 통해 디코더에 송신하게 하고;
    상기 특성이, 상기 다중 변환 선택이 사용되지 않아야 함을 표시하는 유형을 갖는 것에 대한 응답으로, 상기 수평 방향 및 상기 수직 방향에서 기본 변환을 사용하여 상기 비디오 블록을 인코딩하게 하는
    코드 수단을 포함하는, 컴퓨터 프로그램.
  26. 컴퓨터 프로그램 제품으로서,
    컴퓨터 판독가능 수단(303) 및 상기 컴퓨터 판독가능 수단 상에 저장되는 제25항에 따른 컴퓨터 프로그램을 포함하는, 컴퓨터 프로그램 제품.
KR1020217023848A 2018-12-28 2019-11-28 인코더 및 디코더에서 변환 선택을 선택하기 위한 방법 및 장치 KR20210104895A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862785856P 2018-12-28 2018-12-28
US62/785,856 2018-12-28
PCT/SE2019/051206 WO2020139182A1 (en) 2018-12-28 2019-11-28 Method and apparatus for selecting transform selection in an encoder and decoder

Publications (1)

Publication Number Publication Date
KR20210104895A true KR20210104895A (ko) 2021-08-25

Family

ID=71129247

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217023848A KR20210104895A (ko) 2018-12-28 2019-11-28 인코더 및 디코더에서 변환 선택을 선택하기 위한 방법 및 장치

Country Status (9)

Country Link
US (3) US11082692B2 (ko)
EP (1) EP3903487A4 (ko)
JP (1) JP7257523B2 (ko)
KR (1) KR20210104895A (ko)
CN (1) CN113302923B (ko)
CO (1) CO2021009769A2 (ko)
MX (1) MX2021007633A (ko)
RU (1) RU2767513C1 (ko)
WO (1) WO2020139182A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111183642B (zh) * 2017-09-28 2023-09-15 三星电子株式会社 编码方法和装置以及解码方法和装置
JP2021529462A (ja) 2018-06-29 2021-10-28 ヴィド スケール インコーポレイテッド アフィン動きモデルを基にしたビデオコーディングのためのアダプティブ制御点の選択
JP7302037B2 (ja) 2019-06-19 2023-07-03 エルジー エレクトロニクス インコーポレイティド 画像コーディングにおいて変換カーネルセットを表す情報のシグナリング

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101805531B1 (ko) 2009-06-07 2018-01-10 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 장치
CN102918564B (zh) 2010-03-10 2016-10-26 汤姆森特许公司 具有变换选择的视频编码和解码的约束变换的方法和装置
MX2012010863A (es) 2010-04-01 2012-10-15 Sony Corp Dispositivo y metodo de procesamiento de imagenes.
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US9042440B2 (en) 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US20120163472A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Efficiently coding scanning order information for a video block in video coding
US20120163448A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Coding the position of a last significant coefficient of a video block in video coding
MX2013013483A (es) 2011-06-27 2014-02-27 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
US9210438B2 (en) * 2012-01-20 2015-12-08 Sony Corporation Logical intra mode naming in HEVC video coding
US9866829B2 (en) * 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US9621921B2 (en) * 2012-04-16 2017-04-11 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
US10257520B2 (en) 2012-06-26 2019-04-09 Velos Media, Llc Modified coding for transform skipping
JP2017523682A (ja) * 2014-06-20 2017-08-17 サムスン エレクトロニクス カンパニー リミテッド インターレイヤビデオ符号化/復号のためのデプス映像の予測モード伝送方法及びその装置
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
EP3262837A4 (en) 2015-02-25 2018-02-28 Telefonaktiebolaget LM Ericsson (publ) Encoding and decoding of inter pictures in a video
KR20230130772A (ko) * 2016-02-12 2023-09-12 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
US10972733B2 (en) * 2016-07-15 2021-04-06 Qualcomm Incorporated Look-up table for enhanced multiple transform
WO2018128222A1 (ko) * 2017-01-03 2018-07-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
US11146795B2 (en) * 2017-03-10 2021-10-12 Qualcomm Incorporated Intra filtering flag in video coding
US10750181B2 (en) * 2017-05-11 2020-08-18 Mediatek Inc. Method and apparatus of adaptive multiple transforms for video coding
US10805641B2 (en) 2017-06-15 2020-10-13 Qualcomm Incorporated Intra filtering applied together with transform processing in video coding
US11134272B2 (en) * 2017-06-29 2021-09-28 Qualcomm Incorporated Memory reduction for non-separable transforms
AU2018311926B2 (en) 2017-08-03 2022-08-18 FG Innovation Company Limited Systems and methods for partitioning video blocks in an inter prediction slice of video data
JP6863208B2 (ja) * 2017-09-29 2021-04-21 株式会社ニューフレアテクノロジー マルチ荷電粒子ビーム描画装置及びマルチ荷電粒子ビーム描画方法
US10491914B2 (en) * 2018-03-29 2019-11-26 Tencent America LLC Transform information prediction
EP3804315A4 (en) 2018-05-31 2022-03-09 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING VIDEO BLOCKS INTO A SLOT FOR INTERPRETING VIDEO DATA
WO2020046086A1 (ko) * 2018-09-02 2020-03-05 엘지전자 주식회사 영상 신호를 처리하기 위한 방법 및 장치
WO2020046091A1 (ko) * 2018-09-02 2020-03-05 엘지전자 주식회사 다중 변환 선택에 기반한 영상 코딩 방법 및 그 장치
US10819979B2 (en) * 2018-09-06 2020-10-27 Tencent America LLC Coupled primary and secondary transform

Also Published As

Publication number Publication date
CO2021009769A2 (es) 2021-08-09
US11991359B2 (en) 2024-05-21
CN113302923A (zh) 2021-08-24
US11082692B2 (en) 2021-08-03
US20210136376A1 (en) 2021-05-06
MX2021007633A (es) 2021-08-11
CN113302923B (zh) 2024-04-02
WO2020139182A1 (en) 2020-07-02
US20210329243A1 (en) 2021-10-21
US20230109113A1 (en) 2023-04-06
JP2022516497A (ja) 2022-02-28
JP7257523B2 (ja) 2023-04-13
EP3903487A1 (en) 2021-11-03
US11558613B2 (en) 2023-01-17
EP3903487A4 (en) 2022-09-21
RU2767513C1 (ru) 2022-03-17

Similar Documents

Publication Publication Date Title
JP6661699B2 (ja) ビデオ符号化における構文の2値化とコンテキスト適応型符号化の方法と装置
US11991359B2 (en) Method and apparatus for selecting transform selection in an encoder and decoder
CN108965871B (zh) 图像预测的方法及装置
US10743031B2 (en) Method and apparatus for syntax redundancy removal in palette coding
TWI670971B (zh) 基於調色板之視訊寫碼中之逃脫樣本寫碼
US8588307B2 (en) Method and apparatus for encoding and decoding mode information
AU2018251489B2 (en) Method and device for entropy encoding, decoding video signal
CN103210647A (zh) 高效视频编码的Delta量化参数处理方法及装置
WO2016161967A1 (en) Methods of palette mode coding in video coding
EP2503783A1 (en) Video encoding method, decoding method, encoding and decoding device
US11695962B2 (en) Encoding and decoding methods and corresponding devices
US9900625B2 (en) Method and apparatus for efficient information coding
JP5133950B2 (ja) コンテクスト適応エントロピ符号化方法および装置,コンテクスト適応エントロピ復号方法および装置,並びにそれらのプログラム
US20200036969A1 (en) Methods and apparatus for entropy coding and decoding aspects of video data
CN108702521B (zh) 编码和解码方法、装置、编码器、解码器及存储介质
US8009067B2 (en) Method and apparatus for coding and decoding using bit-precision
CN111416982B (zh) 对运动矢量信息进行编/解码的方法及装置
US20230291922A1 (en) Encoding and decoding methods and corresponding devices
US9912968B2 (en) Decoding apparatus capable of controlling repetition number of scan procedure based on at least one syntax element decoding result and related method

Legal Events

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